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.
It is
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
Parameters
Device0
Device1
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
0x0.
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.
Tyan Drivers
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.
Test System
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
Idefix-i
Adaptec
Threadmark 2.0
Ziff-Davis
WinBench98 v 1.0
Executive
Software Diskeeper Lite
All other drivers were default MS NT 4.0
Benchmarks
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
DMA Driver |
Tyan BMNT 4021 UDMA |
WinBench 98 v 1.0 | . | . | . | . |
CPUmark 32 | 592 | 590 | 607 | 607 |
FPU | 820 | 819 | 820 | 820 |
Business Disk 98 | 1430 | 1530 | 1595 | 1580 |
High-End Disk 98 | 3490 | 3750 | 3910 | 3850 |
CPU Utilization | 78.6% | 4.28% | 4.43% | 16.3% |
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 |