BigEd wrote:
on-chip RAM is in very short supply
Are you just referring to main memory or also the stack/zp cache?
If there is not enough fpga resources for this cache this processor design is probably not going to work anyway.
If the main concern is getting rid of the dual porting of main memory then under these conditions it could be made to work without excessive increases in instruction cycle times...
1) The external rams will still need their own address busses. My old Spartan 3 development board happened to have this feature.
2) External memory writes of stack and zp memory are not required.
3) No code execution out of the stack or zp memory is required.
4) Any absolute type operand write or read that accesses stack or zp memory will automatically have zp cycle instruction counts. (yes, even stack memory accesses!)
5) Absolute type writes (sta_a,stx_a,sty_a,sta_ax,sta_ay) will have to become 2 cycle instructions. If cycle consistency is not of a concern then they could be conditional made 2 cycle instructions depending on how full the instruction queue currently is. Consecutive absolute stores drain the 12 byte register quickly.
6) Another signal into the cpu will have to be added to indicate whether to take the operand read data from the 32 bit bus or the 8 bit read bus. I think it would still be useful to have the 8 bit read bus for peripheral reads so the main memory bus can be kept as clean as possible.
If you are interested in this design I would be willing to put some effort into making it. It basically changes my cpu from a Harvard type to a Von-Neumann type architecture without too much loss of throughput.