Building a custom CPU 03-30-2018, 01:31 AM
#1
So, a couple days ago I was talking with @"Ender" and decided I would go out and try to build a real world RISC CPU. Now, I've done similar things before, I've made a few full featured processors, but none of them were anything you could actually use for something. They were either limited by program memory (usually just a few bytes), data memory (mostly nonexistent), instructions available, registers (usually 2 or 4), or bus width (usually 4, 6, or 12).
Sure, there have been processors that fit these specs before, but you don't see them today, the last being the PDP series. So, I decided to modernize it, with a CPU that fits the following:
And my result is this block level diagram.
![[Image: MCpQxj6.png]](https://i.imgur.com/MCpQxj6.png)
Now, at this point, that is the only fully complete part of this project. I've made a good deal of progress on it, but it's nowhere close to being done. This is where you come in! If you want to help with this, you get the following:
Here's the instruction set I chose, which I borrowed a lot from the ARMv4t architecture, but made changes where I thought I could improve (since we don't support an ISA as large as they do, we got to get some candy features)
![[Image: 87pA1xa.png]](https://i.imgur.com/87pA1xa.png)
So, who's on board?
Sure, there have been processors that fit these specs before, but you don't see them today, the last being the PDP series. So, I decided to modernize it, with a CPU that fits the following:
- Full RISC design
- 16 general purpose registers
- Large amount of data memory
- Large amount of program memory
- Security features to prevent executable code from being modified at runtime
- 5 stage pipeline (fetch, decode, execute, memory, writeback
- Maximum of 1 clock cycle per instruction
And my result is this block level diagram.
![[Image: MCpQxj6.png]](https://i.imgur.com/MCpQxj6.png)
Now, at this point, that is the only fully complete part of this project. I've made a good deal of progress on it, but it's nowhere close to being done. This is where you come in! If you want to help with this, you get the following:
- Your name on anything you completed
- Your share of any profits made (if there are. I would like to keep this as open as possible)
- A vast increase in your knowledge of how a CPU works
Here's the instruction set I chose, which I borrowed a lot from the ARMv4t architecture, but made changes where I thought I could improve (since we don't support an ISA as large as they do, we got to get some candy features)
![[Image: 87pA1xa.png]](https://i.imgur.com/87pA1xa.png)
So, who's on board?



























![[+]](https://sinister.li/images/modern/collapse_collapsed.png)

![[Image: zIgJcbV.png]](https://i.imgur.com/zIgJcbV.png)
![[Image: oVehai9.png]](https://i.imgur.com/oVehai9.png)
![[Image: OmBLcgq.png]](https://i.imgur.com/OmBLcgq.png)
![[Image: 2TsnDX5.png]](https://i.imgur.com/2TsnDX5.png)
![[Image: h5yT9kb.png]](https://i.imgur.com/h5yT9kb.png)
![[Image: W4bUmcC.png]](https://i.imgur.com/W4bUmcC.png)
![[Image: q6mImNr.png]](https://i.imgur.com/q6mImNr.png)