Electronic – Thoughts & questions on custom CPU architecture

computer-architecturecpu

I'm designing a CPU architecture. I've come up with a preliminary design:
CPU diagram

I'd like general thoughts on what I can improve in the design and also I have some specific questions:

  • Is it overkill to have every register inputting to the ALU, or is it more sensible to have one input hardwired to, say, A?

  • This design is as you can probably tell influenced by the Z80 (hence the register naming). Is it a good idea to base the CPU design off of such an old CPU or does it not make any difference really?

  • I've not decided whether to have a simple instruction register or whether to implement a pipeline. What kind of performance gains might I be able to achieve in a simple CPU design like this? i.e. is it worth the extra effort of constructing a pipeline?

ISA

I have created an instruction set for the CPU and I will probably be posting it tomorrow (16/10/19) as there are some changes that will need to be made to it.

Final note

I am not sure whether this is on topic. Please suggest an alternative place if it is not on topic here.

Best Answer

Is it overkill to have every register inputting to the ALU, or is it more sensible to have one input hardwired to, say, A?

You will need more 'buffers' and connecting logic to route all the registers to the ALU, so you its a space vs functionality trade off.

This design is as you can probably tell influenced by the Z80 (hence the register naming). Is it a good idea to base the CPU design off of such an old CPU or does it not make any difference really?

Older CPUs are easier to understand because they have reduced instruction sets and smaller data widths, I would prefer to design with an old CPU if I were implementing this myself.

I've not decided whether to have a simple instruction register or whether to implement a pipeline. What kind of performance gains might I be able to achieve in a simple CPU design like this? i.e. is it worth the extra effort of constructing a pipeline?

If you don't want to wait for your ALU to complete instructions, you'll want a pipeline.

Related Topic