Programmed input–output
The Programmed Input/Output (PIO) interface was the original method used to transfer data between the CPU (through the IDE controller) and an IDE/ATA device. All ATA/IDE devices had to support the slowest mode - Mode 0. By accessing the information registers (using Mode 0) on an IDE/ATA drive, the CPU is able to determine the maximum transfer rate for the device. Using this speed information, the CPU configures the IDE controller to access the IDE/ATA device at the correct speed (usually the fastest it can support).
The PIO modes require a great deal of CPU overhead to configure the interface and transfer the data. Because of this overhead, a more efficient way was created to perform the data transfers - DMA. But, the simple digital logic required to implement a PIO transfer still makes this transfer method useful today (especially if high transfer rates are not required).
The modes are given below:
Mode | Maximum Transfer Rate (MB/s) | Standard Where Spec Was Defined |
---|---|---|
Mode 0 | 3.3 | ATA |
Mode 1 | 5.2 | ATA |
Mode 2 | 8.3 | ATA |
Mode 3 | 11.1 | ATA-2 |
Mode 4 | 16.7 | ATA-2 |