In the context of PC hard drives, what are PIO and DMA modes?
In the context of PC hard drives, PIO and DMA refer to a pair of protocols established for computer components to transfer data between the hard drive and RAM:
- PIO: PIO stands for Programmed Input/Output, a protocol for data transfer where the CPU, drive controller, motherboard chipset drivers, and other controller or hard drive device drivers work together to directly control data transfer between the hard drive and the rest of the system. Since it involves the CPU, extensive use of PIO mode transfers can slow a computer down considerably. PIO was created in the original ATA standard (X3.221-1994, "AT Attachment Interface for Disk Drives").
- DMA: DMA stands for Direct Memory Access, a protocol for data transfer used by many components in addition to hard drives. It was written by an association of motherboard manufacturers and taken by hard drive manufacturers to be used in the ATA standard. As opposed to PIO, DMA does not involve the CPU. Rather, the involved components move data directly to and from RAM, bypassing the CPU altogether. For the purposes of this document, DMA will be used in reference to the protocol of data movement between hard drives and RAM.
In the ATA standards, specific rates of transfer were defined and given a designated mode number. For example, PIO Mode 0 referred to the method of transfer using the PIO techniques of using the drive controller, CPU, firmware, and device drivers to transfer data at 3.3MB per second between the hard drive and the rest of the computer. DMA Single-word Mode 0 referred to the method of transferring data two bytes at a time (a word is defined as two bytes) at a rate of 2.1MB per second directly between the hard drive and RAM.
The various ATA standards specify several PIO and DMA modes:
- The original ATA specification can use PIO modes 0-2, Single-word DMA Modes 0-2, and Multi-word DMA Mode 0.
- ATA-2 supports, in addition, PIO Modes 3-4 and Multi-word DMA Modes 1-2.
- ATA-3 is a sort of bridging technology which merely added security features and improved PIO Mode 4 reliability, but did not actually add any PIO or DMA modes.
- ATA-4 introduced the Ultra DMA (UDMA) modes (the difference between DMA and UDMA was the addition of a specific kind of error checking, Cyclic Redundancy Check (CRC), to the method of data transfer). It added support for UDMA Modes 0 through 2.
- ATA-5 added UDMA Modes 3 and 4.
- ATA-6 added UDMA Mode 5.
- ATA-7 added UDMA Mode 6.
Note: "Single-word" refers to the transfer of two bytes at a time, and "Multi-word" to the transfer of more than two bytes at a time. Multi-word is assumed, so manufacturers do not write out "Ultra DMA Multi-word Mode X", but use "UDMA Mode X" instead.
Following are the defined transfer rates for each mode:
|PIO Mode 0 ||3.3MB/sec |
|PIO Mode 1 ||5.2MB/sec |
|PIO Mode 2 ||8.3MB/sec |
|PIO Mode 3 ||11.1MB/sec |
|PIO Mode 4 ||16.6MB/sec |
|DMA Single-word Mode 0 ||2.1MB/sec |
|DMA Single-word Mode 1 ||4.2MB/sec |
|DMA Single-word Mode 2 ||8.3MB/sec |
|DMA Multi-word Mode 0 ||4.2MB/sec |
|DMA Multi-word Mode 1 ||13.3MB/sec |
|DMA Multi-word Mode 2 ||16.7MB/sec |
|Ultra DMA Mode 0 ||16.7MB/sec |
|Ultra DMA Mode 1 ||25MB/sec |
|Ultra DMA Mode 2 (aka UDMA/33, ATA-33) ||33.3MB/sec |
|Ultra DMA Mode 3 ||44.4MB/sec |
|Ultra DMA Mode 4 (aka UDMA/66, ATA-66, Ultra ATA/66) ||66.7MB/sec with an 80-pin UDMA cable and compatible controller, 33.3MB/sec otherwise |
|Ultra DMA Mode 5 (aka UDMA/100, ATA-100, Ultra ATA/100) ||100MB/sec with an 80-pin UDMA cable and compatible controller, 33.3MB/sec otherwise |
|Ultra DMA Mode 6 (aka UDMA/133, ATA-133, Ultra ATA/133, SATA/150) ||133MB/sec with an 80-pin UDMA cable and compatible controller, 150MB/sec with a Serial ATA cable and compatible controller, 33.3MB/sec otherwise |
Note: The rates listed above are the maximum the interface can handle, not the real-world data transfer rates. No drive today can actually sustain over a period of time the maximum rate the newest standards allow for. In fact, only some enterprise-class SCSI drives designed for heavy server use can actually sustain any rate above 70 or 80MB/sec over a period of time. Most non-enterprise drives (e.g., those in home computers) can do only a little above half of that (in the 30 to 60MB/sec range). Keep in mind that the above figures are what the standards allow for, not what the hardware can actually achieve.