As an example, assume that the address of the memory location to be accessed is kept in register R2 and that the memory contents to be loaded into register R1. This is done by the following sequence of operations:
1. MAR
[R2] 2. Read
3. Wait for MFC signal 4. R1
[MDR]
The time required for step 3 depends on the speed of the memory unit. In general, the time required to access a word from the memory is longer than the time required to perform any operation within the CPU.
The scheme that is used here to transfer data from one device (memory) to another device (CPU) is referred to as an asynchronous transfer.
This asynchronous transfer enables transfer of data between two independent devices that have different speeds of operation. The data transfer is synchronised with the help of some control signals. In this example, Read request and MFC signal are doing the synchronization task.
An alternative scheme is synchronous transfer. In this case all the devices
are controlled by a common clock pulse (continously running clock of a
fixed frequency). These pulses provide common timing signal to the CPU and
the main memory. A memory operation is completed during every clock period.
Though the synchronous data transfer scheme leads to a simpler implementation,
it is difficult to accommodate devices with widely varying speed. In such
cases, the duration of the clock pulse will be synchronized to the slowest
device. It reduces the speed of all the devices to the slowest one.