Administrator
|
The biggest reason is almost certain that bidirectional data buses can't be supported using a NAND-only architecture, you need a means to place the various device drivers into a high-Z state.
On top of that, bidirectional buses would considerably complicate the hardware implementation and require the student to delve too deep into one aspect of a course that, by its nature, has to sacrifice depth across the board in order to support the enormous breath. Compromises have to be made.
Furthermore, while shared I/O data buses are the most common, architectures with separate buses also exist. RAM architectures with multiple address and separate I/O exist, such as Dual Port RAM. Sometimes one of the ports is bidirectional and other times it isn't.
Common uses of multiport RAM are for device memory (such as video RAM). Also, the register space on a CPU is usually multiport.
Since the Hack uses memory-mapped I/O, it makes sense to make that dual port. Also, since the Hack only has a single general purpose CPU register, having the RAM have separate read and write ports gives a bit greater power to the instruction set while keeping it small and simple.
|