In most processors, memory is connected to the processor with separate address and data buses. If the processor is writing data to memory, then it will assert a write signal and place the data on the data bus for transfer to memory. If the processor is reading data from memory, then it will assert a read signal and wait for data from memory to arrive on the data bus. In some small processors the data bus and address bus will be combined into a single bus. This is called multiplexing .
Special signals indicate whether the multiplexed bus is being used for data or address.
An instruction bus is a specialized data bus for fetching instructions from memory. John Von Neumann introduced the von Neumann architecture, which combined both data and instructions into a single memory, simplifying computer architecture. The difference between data and instructions was a matter of interpretation. In more recent innovation, super computers and other powerful processors added separate buses for fetching data and instructions. A memory bus is a bus that connects a processor to memory or connects a processor to a memory controller or connects a memory controller to a memory bank or memory chip.