Hey people, I have kind-of completed my CPU (after three years)!
I began working on this unit about three years ago. It was eventually working with simple programs like the Fibonacci sequence, counting, all that fun stuff. I wasn't satisfied with the wiring, so I kept rebuilding it until I was demotivated which was about a year ago. I, then, quit for about a year and came back in January of 2020. I had picked up enough motivation to come and finish what I've started.
I had replanned everything and combined every singular thing to create this.
Information About The CPU:
- 8-bit data length.
- 8-bit instruction length.
- 4 stage pipeline - Fetch, decode, execute, (writeback).
- 32 bytes of iCache/program memory. (Can be reprogrammed through software.)
- 32 bytes of RAM/data memory. (CPU will be stalled when loading, not when the byte is in the cache.)
- 8-byte cache for the data memory.
- I/O ports, addressable 0-7.
- 7 bytes of registers + 1 zero register (with pointer support. Can load a register for an address to a port, memory, jump, etc - anything addressable excluding own regs).
- Multi-function ALU, but only increment, right shift, addition, subtraction and XOR as OPCodes.
- 8 * 32 bytes of storage. (Not yet built, although the CPU is finished. Data memory can be stored there, and storage can be loaded to data and program memory.)
I haven't yet updated the Instruction Set from this sheet, but I will in the next 48 - Instruction Set
This CPU functions on an 8 tick clock, but stalls whenever the storage or data memory is accessed. Jumps are not predicted and the decoders are just disabled when jumping.
I have already created the following programs:
- Counting. ("Program counter being simulated" - Koy)
- Fibonacci Sequence.
- TypeWriter. (Keyboard -> CPU (store to/manage memory) -> screen)
- Sorting Algorithm. (First ever I've heard. I'll be making a post about this)
I'm planning on creating a multiplication program and a 'file system' of some sort that interacts with I/O and returns a file stream. Yet to plan the latter. :]
Feel free to visit my plot and view it! You can also write some programs for it as well. I suggest making a schematic of it and pasting it somewhere in a singleplayer world to mess around with it. I am updating it regularly, however, because I still want to add the storage unit and some general-purpose I/O modules.
Finally, I think it's time to say thanks. I'm not even sure where to start, because this is basically my first actual working & big CPU on the server. All the others - like poor 'ARM' - were kinda buggy in a way. So, I'm happy and excited that I finally finished this. I will be making yet another video on this CPU somewhere in the future. Anyways, I just want to say thank you to all the ORE community. Especially the people that checked out the progress when I was working on it!
If you have any questions about the CPU, feel free to ask me as a comment, on Discord (QSmally#3594) or in-game.
I began working on this unit about three years ago. It was eventually working with simple programs like the Fibonacci sequence, counting, all that fun stuff. I wasn't satisfied with the wiring, so I kept rebuilding it until I was demotivated which was about a year ago. I, then, quit for about a year and came back in January of 2020. I had picked up enough motivation to come and finish what I've started.
I had replanned everything and combined every singular thing to create this.
Information About The CPU:
- 8-bit data length.
- 8-bit instruction length.
- 4 stage pipeline - Fetch, decode, execute, (writeback).
- 32 bytes of iCache/program memory. (Can be reprogrammed through software.)
- 32 bytes of RAM/data memory. (CPU will be stalled when loading, not when the byte is in the cache.)
- 8-byte cache for the data memory.
- I/O ports, addressable 0-7.
- 7 bytes of registers + 1 zero register (with pointer support. Can load a register for an address to a port, memory, jump, etc - anything addressable excluding own regs).
- Multi-function ALU, but only increment, right shift, addition, subtraction and XOR as OPCodes.
- 8 * 32 bytes of storage. (Not yet built, although the CPU is finished. Data memory can be stored there, and storage can be loaded to data and program memory.)
I haven't yet updated the Instruction Set from this sheet, but I will in the next 48 - Instruction Set
This CPU functions on an 8 tick clock, but stalls whenever the storage or data memory is accessed. Jumps are not predicted and the decoders are just disabled when jumping.
I have already created the following programs:
- Counting. ("Program counter being simulated" - Koy)
- Fibonacci Sequence.
- TypeWriter. (Keyboard -> CPU (store to/manage memory) -> screen)
- Sorting Algorithm. (First ever I've heard. I'll be making a post about this)
I'm planning on creating a multiplication program and a 'file system' of some sort that interacts with I/O and returns a file stream. Yet to plan the latter. :]
Feel free to visit my plot and view it! You can also write some programs for it as well. I suggest making a schematic of it and pasting it somewhere in a singleplayer world to mess around with it. I am updating it regularly, however, because I still want to add the storage unit and some general-purpose I/O modules.
Finally, I think it's time to say thanks. I'm not even sure where to start, because this is basically my first actual working & big CPU on the server. All the others - like poor 'ARM' - were kinda buggy in a way. So, I'm happy and excited that I finally finished this. I will be making yet another video on this CPU somewhere in the future. Anyways, I just want to say thank you to all the ORE community. Especially the people that checked out the progress when I was working on it!
If you have any questions about the CPU, feel free to ask me as a comment, on Discord (QSmally#3594) or in-game.