Electronic – single cycle implementation with single memory

designdigital-logic

I've read that implementing a single cycle cpu requires two memories one for data and one for instructions. Why is this?

Using a single memory with two read ports (see figure below) wouldn't it be possible to fetch the instruction and read the operand specified during the same cycle?

enter image description here

EDIT:

@supercat

Would something like this work ?

enter image description here

Best Answer

It's not really clear what you are asking, but you can't fetch a opcode and its operand in the same cycle regardless of memory architecture because you don't know what operand there is to fetch until after the instruction is decoded. Doing them both together breaks basic cause and effect.

There is was a similar question to this recently. See single-cycle design using and shared memory for both data and instruction