RAM is kinda bulky. It will be interesting making a large array of this. I may have to break down and use a world editor to copy/paste components.
What I made here is actual RAM, rather than just an array of memory cells. It's RAM because of how it's accessed. I probably could have stored 3x as much memory if I'd just built a bunch of D Flip-flops, but then I wouldn't have been able to individually access the registers for read and write.
When I implement this in a computer system, I'll build a decoder alongside it so that 4 address-bits can select from 16 addresses. In that setup, Read and Write will be tied together, unless I decide that for some reason I want to build separate decoders for the two operations. There's a thought. I'll need to work on compact decoder designs, though. It would be amusing to be able to read from and write to different parts of the memory at the same time, but I'm not sure how that ability would be useful. It could be a time saver in that I'd have the writing address queued-up in advance so that I'd be able to write to it immediately after my ALU gives an answer. However, the ALU is going to be vastly slower than the address-selection operation, so I'd have spare time anyways.
Maybe I could use independent read/write operations to save time between steps. The computer's operation sequence will be "Load Address into Input A", "Load Address into Input B", "Calculate f(A,:cool.gif:", "Write f(A,:cool.gif: to Address". I might be able to do the first loading operation at the same time as I'm writing the previous answer to memory, but that might create problems if I try to read from the same register I'm writing to. Would I read the old value or the new one or some mish-mash of the two?
Anyways, I'm getting a little bit ahead of myself. Does anybody know if it's possible to compress RAM further than what I've done? Each cell is roughly 8x8x2, but I'd like to know if there are any designs that could shrink this even further.
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.
Seems pretty cool. I've yet to dive into the whole topic of building a "standard" computer, but I understand how to make a binary multiplier and adders and things. This seems pretty straightforward, I will try to build something like it from scratch, and it may be smaller. If not, it certainly may be informal.
Just wondering, would a one-wide memory "thing" have any use? As you very likely couldn't put them right next to each other, it doesn't seem useful to me. One-wide designs usually have interfering redstone... However, if I come up with a design that enables this, I demand a cookie :biggrin.gif:
Fun Fact: Half a Byte is actually officially named a Nibble. (This is 100% serious, look it up on wikipedia if you think I'm just making a terrible joke)
Seems pretty cool. I've yet to dive into the whole topic of building a "standard" computer, but I understand how to make a binary multiplier and adders and things. This seems pretty straightforward, I will try to build something like it from scratch, and it may be smaller. If not, it certainly may be informal.
Just wondering, would a one-wide memory "thing" have any use? As you very likely couldn't put them right next to each other, it doesn't seem useful to me. One-wide designs usually have interfering redstone... However, if I come up with a design that enables this, I demand a cookie :biggrin.gif:
I've actually worked a lot with 1-wide designs, since they are essential to the horizontally compact devices I've been working with. It is nearly impossible to get 1-wide designs to sit adjacent to each other without interference since the redstone wires link up to each other too readily. "Vertical" devices, or ones which are only 1 block in width generally require an additional block of space between them for insulation. This makes the actual implementation of "1-wide gates" actually use up 2 blocks of width per unit. I got really excited the first time I worked out how to pack in some gates super-close, and then realized that they weren't actually useable when that tight!
Using repeaters and alternating patterns it IS possible to make devices actually sit next to each other, but the problem is that you lose a LOT of speed due to all the repeaters involved and they occasionally introduce bugs due to their "diode" nature. The last problem is that once you finally DO get 4 devices to fit in 4 blocks of width, you find that it's nearly impossible to wire the inputs, since THOSE have need insulation too! Most wiring alternates wire on every other block, making it 2-thick. Given that wiring can't be compacted much past 2 blocks per bit, there's no reason to make your components any closer than that.
All of my components are basicly going to be 2 blocks wide. I have dabbled a bit in adjacent 1-block components as can be seen in the control-panel for my Multi-Function Logic Gate.
Are you a god? This is amazing. I can use this to store computational data as 4-bit binary. Teach me how to make it!
If I say I'm a god will you make sacrifices to me? :smile.gif:
Do note that I'm not the first person to make RAM, but I hope to be the first person to make RAM understandable.
I'll see what I can do tutorial-wise, because I have so many different ideas for things to show off with videos. Rest assured that eventually there will be a tutorial on how to make this, but it will come after I show off compact XOR gates and a 2-thick Adder.
Fun Fact: Half a Byte is actually officially named a Nibble. (This is 100% serious, look it up on wikipedia if you think I'm just making a terrible joke)
Oh, I know that, I just think the name is a little bit silly. Check the youtube comments.
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've actually worked a lot with 1-wide designs, since they are essential to the horizontally compact devices I've been working with. It is nearly impossible to get 1-wide designs to sit adjacent to each other without interference since the redstone wires link up to each other too readily. "Vertical" devices, or ones which are only 1 block in width generally require an additional block of space between them for insulation. This makes the actual implementation of "1-wide gates" actually use up 2 blocks of width per unit. I got really excited the first time I worked out how to pack in some gates super-close, and then realized that they weren't actually useable when that tight!
Using repeaters and alternating patterns it IS possible to make devices actually sit next to each other, but the problem is that you lose a LOT of speed due to all the repeaters involved and they occasionally introduce bugs due to their "diode" nature. The last problem is that once you finally DO get 4 devices to fit in 4 blocks of width, you find that it's nearly impossible to wire the inputs, since THOSE have need insulation too! Most wiring alternates wire on every other block, making it 2-thick. Given that wiring can't be compacted much past 2 blocks per bit, there's no reason to make your components any closer than that.
All of my components are basicly going to be 2 blocks wide. I have dabbled a bit in adjacent 1-block components as can be seen in the control-panel for my Multi-Function Logic Gate.
If I say I'm a god will you make sacrifices to me? :smile.gif:
Do note that I'm not the first person to make RAM, but I hope to be the first person to make RAM understandable.
I'll see what I can do tutorial-wise, because I have so many different ideas for things to show off with videos. Rest assured that eventually there will be a tutorial on how to make this, but it will come after I show off compact XOR gates and a 2-thick Adder.
Oh, I know that, I just think the name is a little bit silly. Check the youtube comments.
nice.
i tried making a RAM array using 1 wide edge triggered flip flops. i got it working, unfortunately because some of the wires had to pass between one another in the 1 wide space, i had to used a lot of repeaters to stop the signals from interfering with each other. in the end, it was slower than if i had just used the wider flip flops. :/
of course, your method is different to mine, so i wish you the best of luck.
This is pretty awesome. I wonder if we will soon see "motherboards" and "ALU" and "RAM module" designs which all follow a input/output "standard" so that each component can be plug-and-play (well, I mean cut and paste in MCEdit) without too much extra wiring.
You could then "upgrade" your RAM module, by deleting and inserting a new RAM module design as long as the motherboard design allows for it spacewise (where the world chunk loaded space of 272x272 would be the "computer casing").
nice.
i tried making a RAM array using 1 wide edge triggered flip flops. i got it working, unfortunately because some of the wires had to pass between one another in the 1 wide space, i had to used a lot of repeaters to stop the signals from interfering with each other. in the end, it was slower than if i had just used the wider flip flops. :/
of course, your method is different to mine, so i wish you the best of luck.
Coming from the guy whose efforts inspired me to make my own computer, this means a lot. Thanks!
This is pretty awesome. I wonder if we will soon see "motherboards" and "ALU" and "RAM module" designs which all follow a input/output "standard" so that each component can be plug-and-play (well, I mean cut and paste in MCEdit) without too much extra wiring.
You could then "upgrade" your RAM module, by deleting and inserting a new RAM module design as long as the motherboard design allows for it spacewise (where the world chunk loaded space of 272x272 would be the "computer casing").
The "Motherboard" would be the central control unit that orders read and write operations to the RAM and tells the ALU which function to perform. With a robustly designed Control-Unit, you should theoreticly be able to "plug in" different components to it so long as their overall behavior and response to commands was the same.
In the system I'm conceiving, I could replace Delay-line memory with a RAM array and the only thing I'd have to change would be the clock-speed (delay-line memory has a much slower response time). Whenever I'm designing a component, I always try to make sure that the commands that control it are properly "General" and if necessary add a little bit of internal control-mechanisms to make the interface simple.
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.
Yay for ram!
I would recommend building a addresser down one side to allow the selection of the seperate modules (tis what i have done)
a 4 bit address is probably a smart idea, as that allows a maximum of 15 bytes + 1 (if you are using 8 bit words)
I honestly feel really jealous. I played Garry's Mod, and the equivalent of this was E2 coding. I saw the coding people did there, and I was amazed. Seeing the things done here...I can't do nothing.
If, by some freak chance the usual nonsense I generate seems to help you, there's a nice shiny green + button to tell me that I'm doing the right thing
Yay for ram!
I would recommend building a addresser down one side to allow the selection of the seperate modules (tis what i have done)
a 4 bit address is probably a smart idea, as that allows a maximum of 15 bytes + 1 (if you are using 8 bit words)
~Shrogg
Yeah, that's basicly what I'm planning. I don't intend to have a separate lever and button for each Register if I make 16 of them. Also I won't have all 16 in one long line, since latency from address-select to data-readout for the 16th register would be on the order of 2 seconds. WAY too slow for a computer of any decent speed. My computation cycle is going to run "Read A, Read B, Calculate, Write to C", and so if reading from memory takes too long, it will seriously slow down my system. My goal is to beat Salaja's 208 mHz (milli-Hertz) processor, and for that I'm going to need fast read/write times.
To this end, I am going to further research how to compress the RAM cells, since as awesome as they are, they are still unsatisfyingly large.
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.
Yeah, that's basicly what I'm planning. I don't intend to have a separate lever and button for each Register if I make 16 of them. Also I won't have all 16 in one long line, since latency from address-select to data-readout for the 16th register would be on the order of 2 seconds.
To this end, I am going to further research how to compress the RAM cells, since as awesome as they are, they are still unsatisfyingly large.
I argue against that, I have a 16 byte module that operates in around 7 ticks and around 10 from the 16th cell.
But good luck with your processor :smile.gif:
RAM is kinda bulky. It will be interesting making a large array of this. I may have to break down and use a world editor to copy/paste components.
What I made here is actual RAM, rather than just an array of memory cells. It's RAM because of how it's accessed. I probably could have stored 3x as much memory if I'd just built a bunch of D Flip-flops, but then I wouldn't have been able to individually access the registers for read and write.
When I implement this in a computer system, I'll build a decoder alongside it so that 4 address-bits can select from 16 addresses. In that setup, Read and Write will be tied together, unless I decide that for some reason I want to build separate decoders for the two operations. There's a thought. I'll need to work on compact decoder designs, though. It would be amusing to be able to read from and write to different parts of the memory at the same time, but I'm not sure how that ability would be useful. It could be a time saver in that I'd have the writing address queued-up in advance so that I'd be able to write to it immediately after my ALU gives an answer. However, the ALU is going to be vastly slower than the address-selection operation, so I'd have spare time anyways.
Maybe I could use independent read/write operations to save time between steps. The computer's operation sequence will be "Load Address into Input A", "Load Address into Input B", "Calculate f(A,:cool.gif:", "Write f(A,:cool.gif: to Address". I might be able to do the first loading operation at the same time as I'm writing the previous answer to memory, but that might create problems if I try to read from the same register I'm writing to. Would I read the old value or the new one or some mish-mash of the two?
Anyways, I'm getting a little bit ahead of myself. Does anybody know if it's possible to compress RAM further than what I've done? Each cell is roughly 8x8x2, but I'd like to know if there are any designs that could shrink this even further.
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.
Your life
A naked truth revealed
Dreams you never lived and scars never healed.
Just wondering, would a one-wide memory "thing" have any use? As you very likely couldn't put them right next to each other, it doesn't seem useful to me. One-wide designs usually have interfering redstone... However, if I come up with a design that enables this, I demand a cookie :biggrin.gif:
Youtube: http://www.Youtube.com/MinecraftingStuff
My Current projects:
- New Repeater Quark, used for a variety of applications! You will learn something!
- Which pickaxe is the best?
- Tree Farm Innovations!
Fun Fact: Half a Byte is actually officially named a Nibble. (This is 100% serious, look it up on wikipedia if you think I'm just making a terrible joke)
Also... Check out my Youtube Channel
I've actually worked a lot with 1-wide designs, since they are essential to the horizontally compact devices I've been working with. It is nearly impossible to get 1-wide designs to sit adjacent to each other without interference since the redstone wires link up to each other too readily. "Vertical" devices, or ones which are only 1 block in width generally require an additional block of space between them for insulation. This makes the actual implementation of "1-wide gates" actually use up 2 blocks of width per unit. I got really excited the first time I worked out how to pack in some gates super-close, and then realized that they weren't actually useable when that tight!
Using repeaters and alternating patterns it IS possible to make devices actually sit next to each other, but the problem is that you lose a LOT of speed due to all the repeaters involved and they occasionally introduce bugs due to their "diode" nature. The last problem is that once you finally DO get 4 devices to fit in 4 blocks of width, you find that it's nearly impossible to wire the inputs, since THOSE have need insulation too! Most wiring alternates wire on every other block, making it 2-thick. Given that wiring can't be compacted much past 2 blocks per bit, there's no reason to make your components any closer than that.
All of my components are basicly going to be 2 blocks wide. I have dabbled a bit in adjacent 1-block components as can be seen in the control-panel for my Multi-Function Logic Gate.
If I say I'm a god will you make sacrifices to me? :smile.gif:
Do note that I'm not the first person to make RAM, but I hope to be the first person to make RAM understandable.
I'll see what I can do tutorial-wise, because I have so many different ideas for things to show off with videos. Rest assured that eventually there will be a tutorial on how to make this, but it will come after I show off compact XOR gates and a 2-thick Adder.
Oh, I know that, I just think the name is a little bit silly. Check the youtube comments.
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.
nice.
i tried making a RAM array using 1 wide edge triggered flip flops. i got it working, unfortunately because some of the wires had to pass between one another in the 1 wide space, i had to used a lot of repeaters to stop the signals from interfering with each other. in the end, it was slower than if i had just used the wider flip flops. :/
of course, your method is different to mine, so i wish you the best of luck.
You could then "upgrade" your RAM module, by deleting and inserting a new RAM module design as long as the motherboard design allows for it spacewise (where the world chunk loaded space of 272x272 would be the "computer casing").
Coming from the guy whose efforts inspired me to make my own computer, this means a lot. Thanks!
The "Motherboard" would be the central control unit that orders read and write operations to the RAM and tells the ALU which function to perform. With a robustly designed Control-Unit, you should theoreticly be able to "plug in" different components to it so long as their overall behavior and response to commands was the same.
In the system I'm conceiving, I could replace Delay-line memory with a RAM array and the only thing I'd have to change would be the clock-speed (delay-line memory has a much slower response time). Whenever I'm designing a component, I always try to make sure that the commands that control it are properly "General" and if necessary add a little bit of internal control-mechanisms to make the interface simple.
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.
Kudos to you sir.
Just saying. Well done, and here I thought I was accomplished when I got my trap wired correctly and double doors to open correctly.
I would recommend building a addresser down one side to allow the selection of the seperate modules (tis what i have done)
a 4 bit address is probably a smart idea, as that allows a maximum of 15 bytes + 1 (if you are using 8 bit words)
~Shrogg
A couple hundred sheep just got uber sheared.
Yeah, that's basicly what I'm planning. I don't intend to have a separate lever and button for each Register if I make 16 of them. Also I won't have all 16 in one long line, since latency from address-select to data-readout for the 16th register would be on the order of 2 seconds. WAY too slow for a computer of any decent speed. My computation cycle is going to run "Read A, Read B, Calculate, Write to C", and so if reading from memory takes too long, it will seriously slow down my system. My goal is to beat Salaja's 208 mHz (milli-Hertz) processor, and for that I'm going to need fast read/write times.
To this end, I am going to further research how to compress the RAM cells, since as awesome as they are, they are still unsatisfyingly large.
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 argue against that, I have a 16 byte module that operates in around 7 ticks and around 10 from the 16th cell.
But good luck with your processor :smile.gif: