เปลี่ยน PIO Mode เป็น UltraDMA

Little-Known Tweak to Boost Hard Drive Performance!

Note: Be sure to see my follow-up article about the traffic I got for this post from digg.com.

The
speed at which your hard drive transfers data is very important, right?
Especially if you need to copy a 20-gigabyte file, like I did. My
laptop was initially copying the file at 2 MB/s because it was
transferring in PIO-only mode, which would have taken almost three
hours. Not only is PIO terribly slow, it consumes lots of CPU power.
While copying that 20-gigabyte file, my CPU usage stayed at 100%.
Therefore, I tried to figure out the best way to increase the transfer
rate. I changed the transfer mode to UltraDMA-6, speeding it up by 600%
to 12 MB/s, and the 20-gigabyte file copied in a little over 30
minutes. Plus, my CPU usage was only about 20-30%.

So, how did
the drive get lowered from UltraDMA to PIO-only mode in the first
place? Well, because Windows has a particularly dumb way of handling
transfer modes for storage devices. After six cumulative (all-time
total) errors while reading or writing a storage device, Windows will
automatically lower its transfer mode. Worse, it never goes back up
unless you reinstall the device. This is bad if you put in a scratched
CD, causing those six-in-a-lifetime errors happen all at once. Even
your hard drive will experience an occasional hiccup, so eventually its
transfer rate is not safe either.

However, there is a setting to
force Windows to only lower the transfer rate after six consecutive (in
a row) errors, and then raise it back up when the errors stop.
Therefore, you can keep your drives in UltraDMA-6 mode.

If you
would like to try changing the transfer mode for your drives, follow
the instructions below. Going from PIO-only mode to UltraDMA-6 will
show you the most significant performance boost. However, your results
may vary. Of course, your drive and motherboard must support
UltraDMA-6, or you won’t see much of a difference. Be careful while you
are doing this; I am not responsible for any mistakes you make. Please
back up your registry first in case something goes wrong!

How to Check Current Transfer Mode

  1. Open Device Manager
  2. Expand IDE ATA/ATAPI Controllers
  3. Double click on Primary IDE Controller or Secondary IDE Controller
  4. Go
    to the Advanced Settings tab to see the current transfer modes. If you
    see anything besides UltraDMA-6, and especially if you see PIO Mode,
    then follow the steps below.

How to Force UltraDMA-6

  1. Open up the Registry Editor.
  2. Navigate to the following key: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4D36E96A-E325-11CE-BFC1-08002BE10318}.
  3. There
    are several sub-keys under this one, such as 0000, 0001, etc. You are
    interested in two of them that say Primary IDE Channel and Secondary
    IDE Channel.
  4. Make the following changes to both of those keys:
    1. Delete
      any attributes named MasterIdDataCheckSum or SlaveIdDataCheckSum. This
      resets the tracking for errors that Windows uses to determine when the
      transfer mode should be lowered.
    2. Add an attribute with the name
      ResetErrorCountersOnSuccess and a DWORD value of 1. This tells Windows
      that it should lower the transfer mode when there are six consecutive
      errors instead of six cumulative errors.
    3. If they exist, set the
      following keys to a hexadecimal value of ffffffff (eight F’s). This
      will change the transfer modes to UltraDMA-6:
      • MasterDeviceTimingMode
      • MasterDeviceTimingModeAllowed
      • SlaveDeviceTimingMode
      • SlaveDeviceTimingModeAllowed
      • UserMasterDeviceTimingModeAllowed
      • UserSlaveDeviceTimingModeAllowed
    4. Reboot your computer and check the devices to see if they are set to UltraDMA Mode 6.

Let me know about your experiences with this tweak.

Don’t forget to digg this article!

Also see my follow-up article about the traffic I got for this post from digg.com.