keyboard_arrow_left Previous
Next keyboard_arrow_right
Updated on Jan 2nd, 2012, |
1 logs
Published on
Dec 4th, 2011,
Hey guys, This is a Redstone computer I'm building.
Download the components ( they all use 8-bit interfaces in little endian
)
4-byte Registers Page (
Download now)
Programming Terminal (
Download now)

Read/Write Hard-Drive (
Download now)
The Machine architecture
White wool represents that the Redstone above it is related to
data busing or manipulation.
Black wool represents that the Redstone above it is directly connected to
control components.
The Instruction-set architecture
-
Machine Instruction word (byte)
Opcodes
EXECUTE
Operands
[O][O][O][O]
I -opcode selector (nibble)
O -operand data (nibble)
-ALU (nibble)
Opcodes
NOR,ADD,SUB,OR,XOR,AND,COMPARE
Operands [A][A]
A -source register selector
B -second source as well as destination register selector
-PC (nibble)
Opcodes
BRANCH
Operands [C][C][A][A]
C -branching condition (Unconditionally,if-equal,if-not-equal,if-lower-than,if-greater-than)
A -source register selector for branch address.
-ROM (nibble)
Opcodes
Immediate value into Lower or Higher half of register A
Operands [D][D][D][D]
D -data
-RAM (nibble)
Opcodes
Load,Store
Operands [A][A]
A -Data register address
B -Address register address
Additional Notes
Feed back is very welcome...
Thanks again guys!
| Progress | 60% complete |
| Tags | |
1 Update Logs
hey guys,
I invented a cool new type of keyboard, so i decided to add a couple to the j400, and i added a 2 hexidecimal screens which worked... brilliantly : )
And oh yeah, as part of my work on the super-fast piston harddrive, ive designed a prototype codenamed 'capacity' which it ironically doent have much of . for a piston tape that is, but as fast as pure redstone memory is concerned it is very efficiant .
inprogress - a control bus from the HDdrive too the cpu : )
Thanks again guys, keep an eye out for lots more cool stuff
tracking
383752
j400-processor
1,165079,329,559826,842002,140820,64651,214207,712893,356071,290694,1030646,15493,171513,336698,476982,98449,817406,209568,526780,928263,1263961,2177557,3,81464
Unfortunately, all component download links are broken :S Is you design already completed? (I mean, listing of possible opcodes, amount of registers, ROM, and RAM). I assume you use 8 bit registers and an 8 bit address space (16 would be possible, but that's very time-consuming to build in MineCraft even with tools like MCEdit). It would be awesome to see this machine in operation once it is completed :)
Also, what does you compare instruction exactly do? Do you have a status register with zero and overflow flags to compare numbers on equality and greater/smaller than? Or does it perform a bit test on two numbers?
In some of the screenshots, you can see the type memory you used in your device, but it can only, as far as I can see, push in one direction. What if you want to access a byte before the previous selected byte? Do you have to push the type all round? That is not very efficient when you have to wait multiple cycles till the memory type is pushed around. If you use that as a HDD, it doesn't matter that much whether it can push in both directions, but using that as your main RAM memory would be rather slow and inefficient don't you think?
All my projects are well out of date ( including the DL links ); i will be revamping and updating them all soon.
The processor is completed in that it can execute all of it's instructions, however the basic version of the programming terminal shown here does not include the 8-bit instruction set decoder and so it must instead be manually programmed using the less-dense 16-bit microcode instruction set.
Compare stores the result of a comparison between two registers..
Data about the comparison ( A was = to B, A was > than BÃ ect..) is stored until the next comparison.
This data can be accessed by calling the branch instruction specifying the relevant condition.
( just as you suspected )
The piston tape-drive ( tho placed where RAM is supposed to be ) was never supposed to act as random access memory, instead it would rotate itself to a user defined address before reading a big chunk of memory likely containing a program into the separate faster RAM ( the same way an electrical computer loads programs into memory when they are started )
Unfortunately at that point i became obsessed with producing perfect RAM, i built endless designs; and as well it was right at the turning point of instant piston technology. i was more than interested and my J-series of processors payed the price in neglect; i would spend the next 4-6 months exploring the world of glitch-tech, producing things like this
[img=icon]cdn2.planetminecraft.com/files/resource_media/screenshot/1145/InstaRepeater%20OverView_789591_thumb.jpg?t=1369104575[/img]
and this.
The next computer i built was a 1-bit stream CPU with Xenosys
( it came much further than is shown there ) and the very next thing i did was start working on the X series with my focus now shifting away from computability ( as i had found a dense MIPS like instruction set design works great in MC ) and was now moving towards practicality, optimization and larger memory banks.
Thanks for the post : )
Some time ago, I was also trying to create tape RAM, but that would become random access memory pushable in both directions. I had a program counter that keeped track at what position the tape was and a comparator that told the device how many blocks and in what direction it had to push. Unfortunately, the server crashed and most chunks were corrupted, so that project is considered dead now.
You said that one can program using a program terminal; how does that exactly work? Do you have to poke every instruction into memory or can you use microcode or assembly instructions to store instruction into memory?
There's one thing I forgot to mention in my previous post: does your processor support interrupts? Do you have a interrupt vector table your processor uses to jump to a specific interrupt handler or do you have a interrupt flag in some register you can use with e.g. a branch on interrupt instruction?
Just another suggestion, because you said your processor already has a full operational ISA, you could post a list of registers one can use and a ISA table one can use to write programs on your Redstone Device ;).
Classification ( Determine if an input lies within some class of inputs )
and Generation ( Produce some output )
When a computer system is capable of classifying all of it's possible inputs and generating all of it's possible outputs something amazing happens.
The system becomes 'complete' and 'universal' ( as in Turing complete and as in computationally universal )
At this point the computer is exactly as capable as ( tho possibly slower than ) the most powerful computer which could ever be made.
Most people will never truly grasp this concept; I didn't, even after 10 years of engineering and programming, later and while studying the related Lambda Calculus it clicked.
I wish i could explain it in a way which everyone could understand.
I would be happy too...
You'll need:
a program counter
a program memory bank
a data memory bank
an Adder / subtractor unit
Advanced Redstone Circuits has a brief over-view
My Redstone Computer builders Tutorial would be great, but alas it's not finished !
Also which part were you referring too ?
Read about how/why it's possible here
I wanted to minimize the cost of data-seeking so i used a 2-step tape motor which can actually operate down to 2-tick .. downside is that the client can barely handle it : )
I would Love to see your take on the Piston-Drive; RedstoneWarrior did one recently which was just ugly ! besides that; very little work has been put into this field of Redstone Science.
On a related note; i found that using special read-heads; a read-only density of 4-bits per block ( 1 byte per 2 blocks ) really is possible ! ( it uses both normal and sticky pistons as data; each with 6 possible directions; making 12 combination's out of the necessary 16 to achieve 4-bits-per-block; the final 4 combination's could be are; solid; sand; fence and slab.
Ill keep a lookout for your drive; nice work on the RAM btw.
I have reverse engineered your read/write head, and made it work on the first 'tape' in my drive. It's a bit of a challenge to fit it all into 11 X 11 blocks, but I managed. Just exactly rebuilding your drive to the block was not my intention, so I used a different rising edge trigger for the block exchanger in the write head. Mine is also not as fast as yours is, i use a different clock making it about half as fast.
Maybe if I feel up to it, I'll make it random accessible as well, by giving an address binary and make it seek until the byte is at the read / write head. As a second challenge I'll try to come up with some branching mechanism as well ( albeit a very slow branch mechanism because of the long and variable seek time )
I think i may have a working version of the drive with a control panel up here by the end of the day :-)
You have really been killing it lately In Redstone !
Makes me want to stop programming for a while and go back to engineering !
: ) but seriously; nice work on that one !
I keep thinking about how cool it would be to get a MASSIVE ( 2kb~ ) memory bank which cauld be addressed and accessed without the usual lag which it would incur.
I'm sure it would have to be a type of tape; maybe one where most blocks in the tape rarely move at all.
A 2 K or more bank with pistons would indeed kill the minecraft client, but I have been thinking of using the block exchanger as a memory cell, the way you built it makes it really compact, it may be a good replacement of the D-latch as a memory cell, maybe i'll experiment with that sometimes.
I could not have built my drive without yours, so thanks again :-)
Thanks for the comment btw :P
It was designed to replace this behemoth of a drive : )
[img=httpstaticplanetminecraftcomfilesresource_mediascreenshotHardDriveFront__thumbjpg]static.planetminecraft.com/files/resource_media/screenshot/1148/HardDrive%20Front_913412_thumb.jpg?1338297764[/img]
resolution of this pic was 240 by 350 , i guess its too big for comment or ?
Keep experimenting, it's kind of an art ; )
May I ask you how your memory components work though? I am having a hard time finding a memory cell that is that small...
There Vertical nor latches : )
They work using two torches powering each other.
This leaves two stable states, used to represent 0 & 1
Programable symbolic information manipulation.
[-___-]
[-____-]
"we du what must, because we can"
You sure could put an operating system on a Redstone computer, tho to my knowledge no-one ever has.
And yes, i will be making faster, more powerful Redstone computers. ( i've recently had two smarty's join me, so that should be good )
That is also the source of your interference; separate the peripheral Redstone lines from the piston a little more, Goodluck Sir !
It does. : )