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:

HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\ScsiPort N

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:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\atapi\Parameters\DeviceN

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.