Computer performance puzzle: Hard drive PIO vs. (U)DMA mode

[I may have a hard drive mini-series on my hands here, see previous post.]

If your computer has performance problems and you can’t quite explain why (you’ve ruled out startup items, spyware and such ilk), it may be worth looking at how your IDE controller manages hard drive data transfer. It should be using (U)DMA, unless your computer and hard drive is from the stone ages.

To check, go to Control Panel – System:

image

Click Device Manager and expand the IDE ATA/ATAPI Controllers node:

image

Now double-click on a Primary or Secondary IDE Channel and go to the Advanced Settings tab:

image

If the Transfer Mode combo box doesn’t say “DMA if available”, you can change it, then restart the computer. That should switch Current Transfer Mode to (Ultra) DMA Mode (X) if your drive supports it, which it should.

But what if Current Transfer Mode doesn’t say (Ultra) DMA Mode (X) after that? What if it stays in PIO mode no matter what you set the Transfer Mode to and no matter how many times you restart? That’s what happened to my system. And it was slow as molasses starting up, since my boot/system drive was in that mode.

It turns out that Windows keeps track of the transfer statistics between your drive and the rest of the system. If Windows encounters a lot of transfer errors, it slowly dials the transfer mode back. So it can go from Ultra DMA Mode 5, to Mode 4, Mode 3, etc. all the way back to PIO mode. If Windows encounters DMA transfer timeouts, it will immediately go back to PIO mode. According to this support article on Seagate’s web site, those errors will be logged in the Windows Event Log, but I guess it happened so long ago on my system that the entries have been lost in the meantime.

According to the same Seagate article, the solution is to delete the corresponding IDE Channel device from Device Manager, restart Windows, let the system re-detect the device, reinstall the driver and restart one more time. Now DMA transfer mode should be back, and your system should perform much better.

You still might want to investigate why the mode got switched back to PIO. Look through the event log using Event Viewer, filtering by Event source type “disk”. Also, check the ribbon cable you use to connect the hard drives. It may have come loose, or it may not be of the right kind (it has to have 80 conductors, not 40) or quality. Using ribbon cables with too many hard drive changes can cause loose/broken connections between the connector pins and the cable.

3 Comments

  1. DMA/UDMA. With PIO, the CPU gets involved with the data transfer. With DMA the transfer is direct. DMA means Direct Memory Access, U stands for Ultra, if memory serves. PIO means Programmed Input Output.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.