Buses are sets of parallel wires used to transmit data and signals between the CPU, memory, and I/O controllers.
The Address Bus is unidirectional, carrying the location of the data being accessed from the CPU to the memory or I/O devices.
The Data Bus is bidirectional, allowing the transfer of actual data and instructions between the CPU and other system components.
The Control Bus is bidirectional and carries command signals (such as read/write requests) and status signals (such as interrupts) to synchronize system activities.
| Feature | Address Bus | Data Bus |
|---|---|---|
| Direction | Unidirectional (CPU to Memory) | Bidirectional |
| Purpose | Specifies 'where' data is located | Carries the 'what' (actual data) |
| Width | Determines max addressable memory | Determines data transfer volume |
MAR vs. MDR: The MAR always contains a memory address (a location), while the MDR contains the actual contents (data or instruction) found at that address.
PC vs. CIR: The PC looks ahead to the next instruction, while the CIR focuses on the instruction currently being handled by the Control Unit.
When describing the fetch-execute cycle, always specify the movement of data between registers using Register Transfer Notation (RTN), such as .
Always check the direction of the buses; a common mistake is describing the Address Bus as bidirectional, which is incorrect as the CPU is the sole source of memory addresses.
Remember that the PC increments during the fetch stage, not at the end of the cycle, to ensure the processor is ready for the next instruction immediately.
Verify that your explanations of the ALU include both 'arithmetic' (math) and 'logic' (comparisons), as omitting one can lead to incomplete marks.