At first glance it may not be obvious why a I/O interrupt is needed. When a block of data from memory is requested the CPU waits till it gets the data. When the CPU requests data from a hard drive should it wait? It could but then memory access is measured in nanoseconds while hard drive access is measured in milliseconds. A millisecond is a long time in the would of a CPU. If the CPU is idle for two or three milliseconds then it could run a large number of instructions while it is waiting. Lets look at a standard PC running at 2000Hz (clock speed). The hard drive seek time (time to find a block of data) is on average about 10Ms.

Time to run one instruction = 1/2000 = 5 x 10 ^4 S

Seek time of hard drive = 1 x 10 ^2 S

Number of instructions lost = 1 x 10 ^2 / 5 x 10 ^4 = 20

So on average twenty clock cycles are lost per hard drive access. This is a lot of wasted CPU cycles. So instead of waiting for a I/O request, the CPU just gets on with things. When the data is ready an interrupt is sent. Normally more than on request is sent at once and the results are stored in a buffer ready for the CPU to deal with. After all, it is rare when only one byte of data is requested from the hard drive.