Way 2 Cool
Way 2 Cool
In order to enable Microsoft's version of DMA in Windows NT 4.0, the NT4SP3_I.EXE service pack must first be installed. The service pack is a large (17+ MB) download and includes many NT 4.0 upgrades and fixes. Information on what is included in this service pack can be found here. The updates in this service pack are also suggested in order to run the WinBench98 benchmarking suite.
The next file I installed
is the Idefix-i.exe,
which replaces the atapi.sys file in the Winnt\system32\drivers folder
with a newer version dated 8-19-97. This Microsoft "Hotfix" repairs
a problem with the write cache not being flushed with auto shut
down. There is a copy of the atapi.sys file dated 1-8-98 included in the BMNT4.ZIP file available from the always-helpful BM Drivers site. Indications are that these
two files are one in the same with different time stamps. The atapi.sys file in Idefix-i.exe is self installing, while the file in BMNT4.ZIP must be installed manually. Finally on the subject of the atapi.sys file, there is a known bug concerning some cd-rom drives. That information may be found here.
Note: There is now a newer version
of the atapi.sys file. An atapi.sys file with a
time stamp of 1-26-98 is included in the atapi-fix file for large hard drive recognition. If you need the large drive support, this file may be installed after the idefix-i file.
The last file necessary to enable DMA is
the dmacheck utility. This file may be obtained in either BMNT4.ZIP
or without the atapi.sys file as dmacheck.exe.
also available through Microsoft KB article q191774 as dmachck-i.exe. (Thanks to Gilles for the MS link.) Installing this utility produces an interface that allows the user to see and change the status of the DMA mode.
Choosing the enabled or disabled buttons
changes the value in the registry entry that is created by this utility.
HKEY_LOCAL_MACHINE => SYSTEM => CurrentControlSet => Services => atapi
Device0 being the hard disk(s) and Device1 is the cd-rom in my system.
On the "data" side of the page, the following
entry and string is written for each device.
DriveParameter : REG_SZ : DmaDetectionLevel = 0x0;
The value of the string can be changed by selecting the buttons on the dmacheck program by double-clicking on the value, or using "Edit - String" in the pulldown menu of the registry. DriveParameter : REG_SZ : DmaDetectionLevel = 0x0; is DMA off.
DriveParameter : REG_SZ : DmaDetectionLevel = 0x1; is DMA on.
DriveParameter : REG_SZ : DmaDetectionLevel = 0x2; is DMA forced on.
The dmacheck utility will make the first
two entries by selecting the enabled or disabled buttons, but the
"forced on" setting must be manually entered into the registry. My
system required me to use the "0x2;" setting to enable DMA.
To see whether DMA has been enabled, run dmacheck and observe the information window. By default, dmacheck will prompt you to re-start the computer whether or not you make a change. It is necessary to reboot after making a registry change manually or with dmacheck.
DMA Check User Interface
You may also check this registry entry to see if DMA is enabled.
HKEY_LOCAL_MACHINE => HARDWARE => DEVICEMAP => Scsi => Scsi Port 0 and Scsi Port 1
On the "data" side of the page you will find the following entry.
DMAEnabled : REG_DWORD : 0x1 or
0x1 is DMA enabled, 0x0 is not enabled.
While my HD drives are DMA / UDMA capable, my cd-rom is not. There are warnings to not enable DMA for a non-DMA device. On my system, enabling the DMA button in dmacheck changed the registry to "0x1;", though this did not (obviously) enable DMA. Trying to force DMA by using the "0x2;" string in the registry would revert back to "0x1;" after being rebooted. No harm, no foul. Please note that I was trying to cause a problem and even though nothing bad happened to my system, I don't recommend this.
Intel Drivers (V. 2.01.03)
Yes, it is true that the NT UDMA drivers are no longer available on Intel's site. However, they are available from many motherboard manufacturers' websites. In the words of one Intel employee in the know, "Intel no longer supports this driver, check with your hardware manufacturer." Enough said.
There are a number of versions of this file. The latest version I could find has a date stamp of 5-19-97 on the piixdrv.z file. This file is included in the piix412.exe file from Abit and under other names from other manufacturers.
The driver is installed by first running the setup.exe file in the NT folder. This creates a piixide folder with the necessary files. The next step is removing the atapi 1.2 driver in the SCSI Adapters / drivers tab in the control panel and adding the Intel piix driver through the "have disk" button. You will be prompted for the disk or may "browse" for the previously opened folder on your HD. Choose browse and point to the piixide folder.
Uninstalling the piix driver and returning to the atapi 1.2 driver is a matter of removing the piix driver from the SCSI Adapters / drivers tab, then hitting the add button, and choosing the "(standard mass controllers)" entry from the "manufacturers" side of the window. This will put "IDE CD-ROM (atapi 1.2)/dual channel PCI IDE controller" under the "SCSI adapter" window. Choosing OK at this point will bring up a box asking you if you want to use the existing file or load it from the CD. You should choose the existing file if you have installed Service Pack 3 and the Idefix-i files. Reboot when asked. Note that if you had enabled DMA before changing to the Intel driver, you will have to set this up again for the atapi driver.
I came across Tyan's drivers while looking for the latest version of the Intel piix drivers. The drivers they offer are listed as UDMA capable. They have three choices on their drivers page, listed under Bus Master Drivers. Of the three--BMNT4131, BMNT4020, and BMNT4021 --the 4021 file is the most recent. This is the file I used for benchmarking. This is a very small download, being only 16 KB including the README.TXT file.
The installation is the same as for the Intel piix, with the exception that after unzipping the file, there is no setup to create a new folder. Good documentation is provided in the form of a README file. This includes how to test your system for compatability with their drivers. The README contains a warning to not install the driver with a non-DMA compatible device. My CD-ROM is not DMA and failed the compatability test but functioned perfectly with this driver. Your mileage may vary. ;^)
Uninstalling the Tyan driver is the same as for the Intel and again is documented in the README.
Abit AX5 Motherboard Ver. 2.22, 512 K L2 Cache
AMD K6 233 o/c'd to 250 (83x3)
32 MB SDRAM (generic)
Quantum Fireball SE 3.2 GB (FAT 16)
Quantum Fireball ST 3.2 GB (FAT 16)
Matshita CR-574 CD-ROM
Software installed on tested OS
WinNT 4.0 Workstation
NT service pack 3
Adaptec Threadmark 2.0
Ziff-Davis WinBench98 v 1.0
Executive Software Diskeeper Lite
All other drivers were default MS NT 4.0
A "compact" installation of Windows NT 4.0 Workstation was used. Programs that were not needed for the benchmark were not allowed to run. Each benchmark was run three times and the results were averaged. Pagefiles of 90 MB on each HD were used. Maximum priority was given to applications running in the foreground. Primary and logical drives used were defragged between each benchmark. The system was rebooted between each benchmark.
NT 4.0 Workstation Blue = Best Red = Worst
|Test||NT 4 with SP3 and Idefix-i
No DMA used
|MS DMA Enabled||Intel PIIX 2.01.03
|Tyan BMNT 4021 UDMA|
|WinBench 98 v 1.0||.||.||.||.|
|Business Disk 98||1430||1530||1595||1580|
|High-End Disk 98||3490||3750||3910||3850|
|Avg Seek (ms)||11.2||11.0||11.1||11.1|
|Transfer - Beginning||8020 KB per sec||11200 KB per sec||11200 KB per sec||11100 KB per sec.|
|Transfer - End||8020 KB per sec||11100 KB per sec||11100 KB per sec||11100 KB per sec|
|Threadmark 2.0||5.13 MB per sec @ 65.86% Utilization||6.17 MB per sec @ 35.03% Utilization||6.16 MB per sec @ 34.21% Utilization||6.18 MB per sec @ 42.02% Utilization|
It appears that my system favors the Intel driver in the benchmark tests.
Benchmarks vs Real World
I was curious if I could see a noticeable difference in speed in transferring files between the two hard drives in a real-world application. For this test, I assembled a folder containing 500 MB of various file types including, but not limited to ZIP, JPEG, GIF, DOC, and TXT. I timed the transfer between two 1000 MB partitions.
The folder was moved from drive 0 to drive 1 and back again. This process was repeated three times for each driver configuration with the results being averaged. I also included a test of Win95 with setupex.exe and remideup.exe installed for comparison.
Timed File Transfer
|Driver used||Time to transfer||MB per second|
|NT SP3 No DMA||167 seconds||2.99 MB per second|
|MS Driver DMA On||125 seconds||4.00 MB per second|
|Intel PIIX 2.01.03||123 seconds||4.07 MB per second|
|Tyan 4021 Driver||118 seconds||4.24 MB per second|
|Win95 MS UDMA||122 seconds||4.10 MB per second|
In this round of tests, the Intel PIIX
2.01.03 scores best overall with a good combination of decent "real world"
speed, low CPU utilization, and solid WinBench scores.
HP Vectra 2.04.2a
& Tyan 4021