Starting with Service Pack 2, Windows NT provides a new device driver for DMA (Direct Memory Access) capable ATAPI devices.
The new driver improves CPU utilization over standard PIO (Programmed Input/Output), making IDE drives almost usable .
When using PCI bus mastering DMA, only a single interupt is serviced when an IDE command completes, compared to PIO which requires an interrupt for each block of data. This reduces CPU load to 9% - 30% for servicing the I/O versus 90% - 100% with PIO.
To enable DMA, your system must have:
- PCI command register bit two (Master Enable) set.
- PCI device Class code set to one.
- PCI device Subclass code set to one.
- Programmer's interface bit seven set.
- Busmaster status register bits five and six set (Older BIOSs don't support this).
You can determine DMA status by using regedt32 to navigate to:
where N is 0 for the primary channel and 1 for the secondary channel.
If the Value name DMAEnabled, a type REG_DWORD entry, is 1, DMA is enabled.
The ATAPI driver can enable DMA on a per channel basis. All devices on an enabled channel must be DMA capable.
To enable DMA on a channel, create the following key:
Add Value name DriverParameter as a type REG_SZ entry, and set the string to DMADetectionLevel = 0x1.
To disable DMA on a channel, set DriverParameter to DMADetectionLevel = 0x0.
You must shutdown and restart for these changes to take effect.
NOTE: You can check the status of DMA by using the DMACheck utility.