The longer I’m working on my CPU design, the more I come to realize how simplified my understanding of how a CPU works actually is. Yes, I know how an ALU works and how to decode an instruction. But the moment you try to actually design your own architecture and add some nice features like function calling or interrupt, the hardware complexity explodes.

And the CPU got more complex once again. I just realized that I need more state and hardware to support my interrupt.
Perhaps I should start removing features oO

And the CPU got more complex once again. I just realized that I need more state and hardware to support my interrupt. Perhaps I should start removing features oO

The first simulated “program” running on my own instruction set. It takes more time than expected but from here it’s mostly repetition to finish it.

The first simulated “program” running on my own instruction set. It takes more time than expected but from here it’s mostly repetition to finish it.

Designing a CPU you can actually still build with discrete elements and has a useful set of capabilities is quite complex project. And a significant trade-off between features and complexity. Just adding one register more makes it much more complicated than I expected.