cpu-architecturex86-16microprocessorscontrol-bus

Why is 8086 control bus 4 bits?


I was wondering why 8086 control bus consists of 4 lines I/O read/write and Mem read/write. These are clearly 4 different functions that can be determined using only 2 lines. In this geeksforgeeks link we can clearly see that RD is the not operation of WR
decoding screenshot from geeksforgeeks


Solution

  • It is common in hardware to use 1-hot control signals here one line for read & one line for write, instead of one encoded line for both (i.e. one line where read=0, write=1).

    When signals are packed/encoded as you suggest, i.e. 2 bits represents 4 values, they generally have to be decoded into 1-hot before they can activate the intended hardware circuitry.

    So, here apparently, instead of encoding and decoding, they simply expose the 4 different 1-hot lines.

    Most importantly, however, two lines (one for read and one for write) allows for saying read, write, or no operation on a given bus cycle.  So, there's really three different values (or six for both I/O and memory), and these cannot even be encoded in 1 (or 2) bits (but could be in 2 (or 3 bits)).

    (Yes, it also allows for dual operation read=1 and write=1, but this is understood to be bad and no one will do it.)