Search code examples
cpucpu-architecture

Control bus: unidirectional or bidirectional?


The address bus is unidirectional and the data bus is bidirectional but the jury seems to be out on the control bus:

https://www.google.com/search?q=%22Control+bus+is+bidirectional%22

https://www.google.com/search?q=%22Control+bus+is+unidirectional%22

I suspect the answer is that it's sometimes unidirectional and sometimes bidirectional. Could someone provide a succinct summary of if/when the control bus is unidirectional or bidirectional?

Edit: I'm a high school teacher and I'm hoping for an answer that is accessible to a high school student. I raise this question because different exam boards give different answers and it would be useful to have an expert opinion.


Solution

  • Like Peter says, it depends on your definition of control bus.

    Most control signals are generated from one place and listened to at another rather than bidirectional (even though signals may be going in both directions, just usually not on the same wire).

    But embedded processors, like Atmel's atega & AVR, have I/O pins that can be dynamically reconfigured for input vs. output, so these pins fit some definition of bi-directional.

    These pins, though, are usually used by the board in only one way, and so on boot, the program initializes the pins for the embedded application, by telling the processor whether each pin is input vs. output.  In practice, this is more configuration rather than bidirectional usage.

    Still, some application and board could change the pin direction at will; the generality is there and the processors will allow it.

    These I/O pins can be considered data or control (they are used in controlling devices) or both, depending on your definition.