That answers that question, but raises another. With your ROM you say it is 16 bit. how do you fit all that info into 16 bits, from what i can tell you don't have enough there. here is what i believe you have...
(4bit) A address
(4bit) B address
(4bit) location to store
now here is where i don't how it is divided up
(4bit) OP code with branching?
(5bit) location to branch to? or do you get it from a number in a register?
My planned instruction-set goes:
(4bit) Function Code (opcode)
(4bit) A address
(4bit) B address
(4bit) Output address
It will be written FFFF-AAAA-BBBB-OOOO
However, I have 2 differen kinds of instructions:
-The normal "Math" instruction which follows the "FABO" pattern.
-Loading Instructions which follow FFFF-CCCC-CCCC-OOOO, where C is the constant that is being loaded to the Output address.
The Opcode determines whether the instruction is a "Math" or a "Loading" instruction. I have a control-bit which lets me easily switch between sending the middle 8 bits to the address decoders or the ALU input.
For Branching, one of my "Load-type" instructions will send the data to a "Jump Register" which will sit next to my program counter. When one of the Conditional Branching functions comes up, if its condition is met, then the Program Counter loads the value stored in the "Jump Register" and that's the new instruction address.
Branching thus is a 2-step process. First you set where you wish to branch to, and then you check to see whether you go there or not.
Hmmm....I should probably put these answers to your questions in the first post.
My 16 bit instruction-set is heavily based on Salaja's work on this machine: http://www.minecraft...u-in-minecraft/
Reading that thread is what gave me my breakthrough in terms of understanding how a CPU-cycle worked. I owe Salaja a debt of gratitude.
Hans Lemurson's Thread of Links:http://www.minecraftforum.net/topic/371610-hans-lemursons-thread-of-links/
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
Hans Lemurson's Thread of Links:http://www.minecraftforum.net/topic/371610-hans-lemursons-thread-of-links/
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
ahh Mr. Lemurson
is there anything you can't do with redstone?
also how big do you plan on making the "human readable display"?
i look forward to the finish project, as i'm sure we all do.
good luck in your endeavors friend.
ahh Mr. Lemurson
is there anything you can't do with redstone?
also how big do you plan on making the "human readable display"?
i look forward to the finish project, as i'm sure we all do.
good luck in your endeavors friend.
I've finished one component which will help with the "human readable display": A Binary to BCD converter! I now have the capability of making the 7-segment displays for the output show the numbers in Decimal rather than Hex. 11111111 would come out as 255 instead of FF.
Rollback Post to RevisionRollBack
Hans Lemurson's Thread of Links:http://www.minecraftforum.net/topic/371610-hans-lemursons-thread-of-links/
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
Wow. You're amazing. I always quit projects like this because I'm impatient.
Anyway, I have some (mathematical/technical) points:
- do you have a divide option? If so, how do you plan to work with fractions? Can the computer handle things like 5/7?
- dividing, again: how does the computer divides by zero?
- how big is it (in minecraft blocks)?
- when do you plan to finish it?
And there was a guy here, said something about copying a real computer. Well, I think this IS possible because a computer is, after all, wires that can be ON or OFF (redstone wires) and logic gates (and we know how to make those). So, we can open our REAL computers and just... copy them.
Wow. You're amazing. I always quit projects like this because I'm impatient.
Anyway, I have some (mathematical/technical) points:
- do you have a divide option? If so, how do you plan to work with fractions? Can the computer handle things like 5/7?
- dividing, again: how does the computer divides by zero?
- how big is it (in minecraft blocks)?
- when do you plan to finish it?
And there was a guy here, said something about copying a real computer. Well, I think this IS possible because a computer is, after all, wires that can be ON or OFF (redstone wires) and logic gates (and we know how to make those). So, we can open our REAL computers and just... copy them.
~ N-Man
Division is a seriously complicated feature. My computer WILL be capable of it, but only if I write an algorithm for it to follow. Fractions will not be handled at all, it will simply divide as far as it can and then discard the remainder. 19/5 = 3
Depending on how I write the algorithm for division, "Divide by 0" will either proceed forever (infinite loop) or will return a value equal to the largest number my CPU can handle (either 255 or 127, depending again on how I write the program).
In minecraft blocks, the CPU is currently aroundapproximately 90x75 and 20 blocks tall. These dimensions will increase as I add in other components, but I don't think it will be bigger than 100x100.
As for copying existing computers, that's definitely possible. If you copy all of the Logic of one computer, you will be able to reproduce it. Electronic computers use electronic logic gates; Redstone computers use Redstone logic gates. The only difference between a Redstone computer and an Electronic (or mechanical) computer is that Electronic components are several hundred million times faster.
Rollback Post to RevisionRollBack
Hans Lemurson's Thread of Links:http://www.minecraftforum.net/topic/371610-hans-lemursons-thread-of-links/
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
Hans Lemurson's Thread of Links:http://www.minecraftforum.net/topic/371610-hans-lemursons-thread-of-links/
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
I haven't even started planning how I'm going to hook up a screen, and when I do it will likely be 7-segment numerical values. I'm familiar with how to make 2x2 block pixels, but using redstone Lamps for that unfortunately can produce a LOT of lag due to all the lighting updates they trigger.
In CPU news, I re-arranged some wiring on the Address/Data control line (and recolored it from orange to magenta) so that it won't get in the way when I install the program memory.
I'm currently pondering what the best choice is for the Address Decoder which needs to be able to handle an output line every 2 blocks, but also shouldn't be too wide.
Rollback Post to RevisionRollBack
Hans Lemurson's Thread of Links:http://www.minecraftforum.net/topic/371610-hans-lemursons-thread-of-links/
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
Ok hans time for you to kick it into gear me and mvan both finished are cores and mvan made his quad core now! Also on the top that people seem to be talking about redstone logic works on two basic gates redstone(OR) and torch(NOT) this is very very different than what most computers use (transistors). Also coping a IRL computer would be the dumbest thing in the world because computer ARCHS tailored for minecraft makes for crazy fast computers
Hey, hey I'm coming along. Look! Another video convincing you I've made progress:
I'm now having fun pondering just how long the wiring is going to have to be for the control data to reach the Program Counter. I'm going to need to take another look at your CPU darkroom to see what you did to keep it compact, because mine is really starting to sprawl!
Rollback Post to RevisionRollBack
Hans Lemurson's Thread of Links:http://www.minecraftforum.net/topic/371610-hans-lemursons-thread-of-links/
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
Hey, hey I'm coming along. Look! Another video convincing you I've made progress:
I'm now having fun pondering just how long the wiring is going to have to be for the control data to reach the Program Counter. I'm going to need to take another look at your CPU darkroom to see what you did to keep it compact, because mine is really starting to sprawl!
The way I have made mine small will make you and pretty much all the admins mad. I used other peoples amazing tech. See people are too lazy to put there stuff together so i did it for them. A side affect of that is you get crazy small and fast comps. Lets look at my line up of tech:
Ram-2x5x11 dual read ram(miner's ram)
ALU- 2wide, 4.5 ticks, instant carry ,and crazy small(my alu based off of props who he based his off of anoms)
the rest of the stuff is just good bussing that comes with 8 version of trying to get my comp just right On another note you should look into not having a ALU decoder for one it is huge and two it is slow.
Thanks
Dark
The way I have made mine small will make you and pretty much all the admins mad. I used other peoples amazing tech. See people are too lazy to put there stuff together so i did it for them. A side affect of that is you get crazy small and fast comps. Lets look at my line up of tech:
Ram-2x5x11 dual read ram(miner's ram)
ALU- 2wide, 4.5 ticks, instant carry ,and crazy small(my alu based off of props who he based his off of anoms)
the rest of the stuff is just good bussing that comes with 8 version of trying to get my comp just right On another note you should look into not having a ALU decoder for one it is huge and two it is slow.
Thanks
Dark
I was referring just to the way the components were arranged relative to each other, not their individual quality. I know how to make and use good devices, but have a little less experience with arranging them relative to each other. You on the other hand have built multiple CPUs and so have accumulated much experience in this area. I should be able to make my next device much smaller.
I'm not getting rid of the Function-Decoder though. 4-bit function selection is far too useful in keeping your instruction-word size down to a minimum. My goal is a 16 bit CPU that takes 16 bit instruction-words.
I have decided not to use any instant-repeaters in this machine to see what the speed (and server load) of a conventional device is before I dabble in the area of instant-wire or instant-logic.
Rollback Post to RevisionRollBack
Hans Lemurson's Thread of Links:http://www.minecraftforum.net/topic/371610-hans-lemursons-thread-of-links/
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
Yes, I'm going to dedicate the addresses of two registers to control 256 words of RAM. 1 register will act as the pointer, the other shall handle the Read/Write operations.
Reading and Writing will use the same address control. Although those two things COULD be done independently, it would be a bit of a hassle since you'd have to keep track of two pointers at once and the Memory-Interface address would no longer behave like a normal register (writing data to it won't necessarily change the output) which would add to the complication.
The current status of my CPU is that the Program Memory has been built and is wired up, but I still need to install the Program Counter and the Clock.
Rollback Post to RevisionRollBack
Hans Lemurson's Thread of Links:http://www.minecraftforum.net/topic/371610-hans-lemursons-thread-of-links/
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
"Program Memory" is at 100% on the progress chart, but I decreased "Program Counter" to 90% because it's been a lot harder than I think it ought to be to get it installed. This is purely a spatial/wiring issue.
Hans Lemurson's Thread of Links:http://www.minecraftforum.net/topic/371610-hans-lemursons-thread-of-links/
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
How could anybody see fabo and think anything but Function A-input B-input Output?
No idea. FABO FABO FABO!!!
I've wondered if I should re-order the instructions in the list, since the ordering is fairly arbitrary. Well, it's actually not that bad of an ordering since related functions are next to each other, and there'd be little advantage in changing what the instructions are halfway through the project.
Hans Lemurson's Thread of Links:http://www.minecraftforum.net/topic/371610-hans-lemursons-thread-of-links/
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
I installed the Program Counter and Clock last night, and ran some preliminary tests and debugging at a 32 tick cycle (312 milliHertz).
I encountered 2 main problems: -Unstable ALU: The ALU has many internal pistons, and when the inputs and functions are changing rapidly, 1-tick pulses can occur within the machine causing pistons to drop their blocks. This first revealed itself with the "Jump Set" command yielding erroneous and constantly changing values, and the ALU determining that Zero minus Zero = 125
-Uncalibrated Delays: I forgot to properly time how long you have to wait after the Program Counter selects a new line before you can Write the answer to the resulting equation. Many of the problems I experienced MAY simply have to do with timing issues, although that wouldn't necessarily prevent the ALU's pistons from dropping blocks.
There was also some disappointing news: The CPU's top speed might only be a 32 tick cycle. The Conditional Branching function has significant delay and only barely reaches the Program Counter in enough time to ensure that it jumps properly. I had hoped that I'd be able to make it run faster than this, but all of the delays seem to have added up (probably in all the bussing). I'll nonetheless see what I can do to tune the machine and see if I can wring some more speed out of it somehow (maybe implement a variable speed clock) but I don't think that I will be able to reach my initial goal of a 20-tick cycle (500 millihertz).
Yes I know I could use instant-wire, but I decided I wanted to build my machine without any of that since it adds in a bunch of different engineering challenges and is hard on the server and I still don't like it all that much. Also, if I add it in one place to speed up a slow part, why not equip the entire machine with it? It's a slippery slope, man.
Rollback Post to RevisionRollBack
Hans Lemurson's Thread of Links:http://www.minecraftforum.net/topic/371610-hans-lemursons-thread-of-links/
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
Have you thought about adding a pipeline if the speed buggers you? That's what I'm doing for mine: Simple 3 step pipeline and I should be able to achieve clock speeds of around 0.66Hz without instant wire.
Unfortunately, pipelining is a bit of a nightmare to program with since you have to keep track of a whole host of new data hazards. However, if you think you can handle it and get a goodly speed boost, then by all means do it!
I won't be making any architectural changes to this CPU for the simple reason that it's my FIRST CPU. I'm learning right now and I want to have a full understanding of all the difficulties faced with a "normal" CPU before I start fiddling around with anything fancy like pipelining or new mechanics like instant-wire.
I think everyone would like to see what it can do with instantwire The best bet would probably be to finish what you're doing normally, and then make a copy of it and start messing around with instantwire. For just BUSing, it shouldn't be that hard.
I'll have to make a decision about whether my next CPU will be instant-based or not. I think I might go for a hybrid system with instant-bussing but conventional logic.
I have a feeling that like me, you like to synchronise all your things. This is most likely the cause of your pistons dropping blocks. Do not synchronise inputs connected to a piston, for example, the insta carry piston in an adder. Something over 3 ticks is best, but if you know the piston isn't powered by a torch then 2 can suffice. The other way would be to put a 2 tick repeater infront of every piston. I prefer the former becuase in come circumstances you can distribute the asynchronicity around without slowing it down or strategically place it in routes that are slower anyway.
I haven't carefully studied what the exact causes of the various block-dropping errors are, but fortunately none of the "Instant-Carry" pistons have been affected. I've added insulating delays on all the control-bits and "pulse-hardened" some pistons where it wouldn't slow down the system and so far it SEEMS to be working ok, but again, further testing will be needed.
I don't really know what you mean by "synchronicity" since none of the gates are on a clock and I made no specific effort to keep delays uniform. What are you referring to, and how would this lead to additional block-dropping behaviors?
Rollback Post to RevisionRollBack
Hans Lemurson's Thread of Links:http://www.minecraftforum.net/topic/371610-hans-lemursons-thread-of-links/
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
My planned instruction-set goes:
(4bit) Function Code (opcode)
(4bit) A address
(4bit) B address
(4bit) Output address
It will be written FFFF-AAAA-BBBB-OOOO
However, I have 2 differen kinds of instructions:
-The normal "Math" instruction which follows the "FABO" pattern.
-Loading Instructions which follow FFFF-CCCC-CCCC-OOOO, where C is the constant that is being loaded to the Output address.
The Opcode determines whether the instruction is a "Math" or a "Loading" instruction. I have a control-bit which lets me easily switch between sending the middle 8 bits to the address decoders or the ALU input.
For Branching, one of my "Load-type" instructions will send the data to a "Jump Register" which will sit next to my program counter. When one of the Conditional Branching functions comes up, if its condition is met, then the Program Counter loads the value stored in the "Jump Register" and that's the new instruction address.
Branching thus is a 2-step process. First you set where you wish to branch to, and then you check to see whether you go there or not.
Hmmm....I should probably put these answers to your questions in the first post.
My 16 bit instruction-set is heavily based on Salaja's work on this machine: http://www.minecraft...u-in-minecraft/
Reading that thread is what gave me my breakthrough in terms of understanding how a CPU-cycle worked. I owe Salaja a debt of gratitude.
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
Will update the OP to include this.
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
is there anything you can't do with redstone?
also how big do you plan on making the "human readable display"?
i look forward to the finish project, as i'm sure we all do.
good luck in your endeavors friend.
proud to be an atheist.
I've finished one component which will help with the "human readable display": A Binary to BCD converter! I now have the capability of making the 7-segment displays for the output show the numbers in Decimal rather than Hex. 11111111 would come out as 255 instead of FF.
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
Anyway, I have some (mathematical/technical) points:
- do you have a divide option? If so, how do you plan to work with fractions? Can the computer handle things like 5/7?
- dividing, again: how does the computer divides by zero?
- how big is it (in minecraft blocks)?
- when do you plan to finish it?
And there was a guy here, said something about copying a real computer. Well, I think this IS possible because a computer is, after all, wires that can be ON or OFF (redstone wires) and logic gates (and we know how to make those). So, we can open our REAL computers and just... copy them.
~ N-Man
Click it. Now.
Division is a seriously complicated feature. My computer WILL be capable of it, but only if I write an algorithm for it to follow. Fractions will not be handled at all, it will simply divide as far as it can and then discard the remainder. 19/5 = 3
Depending on how I write the algorithm for division, "Divide by 0" will either proceed forever (infinite loop) or will return a value equal to the largest number my CPU can handle (either 255 or 127, depending again on how I write the program).
In minecraft blocks, the CPU is currently aroundapproximately 90x75 and 20 blocks tall. These dimensions will increase as I add in other components, but I don't think it will be bigger than 100x100.
As for copying existing computers, that's definitely possible. If you copy all of the Logic of one computer, you will be able to reproduce it. Electronic computers use electronic logic gates; Redstone computers use Redstone logic gates. The only difference between a Redstone computer and an Electronic (or mechanical) computer is that Electronic components are several hundred million times faster.
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
I'm just a HORRIBLE procrastinator.
Here's a video of the CPU under manual operation making use of the "Load Value" function and saving data to memory:
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
In CPU news, I re-arranged some wiring on the Address/Data control line (and recolored it from orange to magenta) so that it won't get in the way when I install the program memory.
I'm currently pondering what the best choice is for the Address Decoder which needs to be able to handle an output line every 2 blocks, but also shouldn't be too wide.
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
I'm now having fun pondering just how long the wiring is going to have to be for the control data to reach the Program Counter. I'm going to need to take another look at your CPU darkroom to see what you did to keep it compact, because mine is really starting to sprawl!
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
The way I have made mine small will make you and pretty much all the admins mad. I used other peoples amazing tech. See people are too lazy to put there stuff together so i did it for them. A side affect of that is you get crazy small and fast comps. Lets look at my line up of tech:
Ram-2x5x11 dual read ram(miner's ram)
ALU- 2wide, 4.5 ticks, instant carry ,and crazy small(my alu based off of props who he based his off of anoms)
the rest of the stuff is just good bussing that comes with 8 version of trying to get my comp just right On another note you should look into not having a ALU decoder for one it is huge and two it is slow.
Thanks
Dark
I was referring just to the way the components were arranged relative to each other, not their individual quality. I know how to make and use good devices, but have a little less experience with arranging them relative to each other. You on the other hand have built multiple CPUs and so have accumulated much experience in this area. I should be able to make my next device much smaller.
I'm not getting rid of the Function-Decoder though. 4-bit function selection is far too useful in keeping your instruction-word size down to a minimum. My goal is a 16 bit CPU that takes 16 bit instruction-words.
I have decided not to use any instant-repeaters in this machine to see what the speed (and server load) of a conventional device is before I dabble in the area of instant-wire or instant-logic.
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
Reading and Writing will use the same address control. Although those two things COULD be done independently, it would be a bit of a hassle since you'd have to keep track of two pointers at once and the Memory-Interface address would no longer behave like a normal register (writing data to it won't necessarily change the output) which would add to the complication.
The current status of my CPU is that the Program Memory has been built and is wired up, but I still need to install the Program Counter and the Clock.
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
Soon, very soon, it will be "Clock Time"
"Program Memory" is at 100% on the progress chart, but I decreased "Program Counter" to 90% because it's been a lot harder than I think it ought to be to get it installed. This is purely a spatial/wiring issue.
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
No idea. FABO FABO FABO!!!
I've wondered if I should re-order the instructions in the list, since the ordering is fairly arbitrary. Well, it's actually not that bad of an ordering since related functions are next to each other, and there'd be little advantage in changing what the instructions are halfway through the project.
I would again like to thank Salaja for his computer which gave me my final breakthrough in understanding the CPU cycle, and which used an instruction format identical to FABO: http://www.minecraftforum.net/topic/247731-my-cpu-in-minecraft/
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
I encountered 2 main problems:
-Unstable ALU: The ALU has many internal pistons, and when the inputs and functions are changing rapidly, 1-tick pulses can occur within the machine causing pistons to drop their blocks. This first revealed itself with the "Jump Set" command yielding erroneous and constantly changing values, and the ALU determining that Zero minus Zero = 125
-Uncalibrated Delays: I forgot to properly time how long you have to wait after the Program Counter selects a new line before you can Write the answer to the resulting equation. Many of the problems I experienced MAY simply have to do with timing issues, although that wouldn't necessarily prevent the ALU's pistons from dropping blocks.
There was also some disappointing news: The CPU's top speed might only be a 32 tick cycle. The Conditional Branching function has significant delay and only barely reaches the Program Counter in enough time to ensure that it jumps properly. I had hoped that I'd be able to make it run faster than this, but all of the delays seem to have added up (probably in all the bussing). I'll nonetheless see what I can do to tune the machine and see if I can wring some more speed out of it somehow (maybe implement a variable speed clock) but I don't think that I will be able to reach my initial goal of a 20-tick cycle (500 millihertz).
Yes I know I could use instant-wire, but I decided I wanted to build my machine without any of that since it adds in a bunch of different engineering challenges and is hard on the server and I still don't like it all that much. Also, if I add it in one place to speed up a slow part, why not equip the entire machine with it? It's a slippery slope, man.
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.
Unfortunately, pipelining is a bit of a nightmare to program with since you have to keep track of a whole host of new data hazards. However, if you think you can handle it and get a goodly speed boost, then by all means do it!
I won't be making any architectural changes to this CPU for the simple reason that it's my FIRST CPU. I'm learning right now and I want to have a full understanding of all the difficulties faced with a "normal" CPU before I start fiddling around with anything fancy like pipelining or new mechanics like instant-wire.
I'll have to make a decision about whether my next CPU will be instant-based or not. I think I might go for a hybrid system with instant-bussing but conventional logic.
I haven't carefully studied what the exact causes of the various block-dropping errors are, but fortunately none of the "Instant-Carry" pistons have been affected. I've added insulating delays on all the control-bits and "pulse-hardened" some pistons where it wouldn't slow down the system and so far it SEEMS to be working ok, but again, further testing will be needed.
I don't really know what you mean by "synchronicity" since none of the gates are on a clock and I made no specific effort to keep delays uniform. What are you referring to, and how would this lead to additional block-dropping behaviors?
Look here to find links to my inventions, creations, and my Youtube channel featuring Amazing Creations of Mine (Redstone engineering FTW!!!) and charming Music-Videos about clones. I also made "Minecraft in Minecraft" (2D platformer/building game). I'm currently trying to make a computer.