Bus Master DMA Drivers - Just an Illusion

Bus Master DMA Drivers From Intel And Others Are Falsely Inflating Benchmark Results

It began with Intel's 430FX chipset, also known as 'Triton' chipset, late 1995. Its 'PIIX' (PCI ISA IDE Xcelerator) was offering an EIDE interface that could transport data from the harddisk to main memory via DMA transfer mode, which is supposed to use much less CPU resources than the common PIO transfer mode. New harddisks were able to handle data transfers using the 'DMA mode 2' the predecessor of the new 'Ultra DMA mode'. Now having a board that could handle this feature was only one thing, the operating system had to be able of sending data via DMA as well. Windows 95, just a few months old, was of course not able to do this. Hence you had to get a separate driver to take full advantage of this new EIDE interface. That was where the problem started, because in the beginning of the Triton motherboards the manufacturers weren't shipping this driver with their boards and you were left to your own devices if you wanted to get one. Long nights on the internet were spent to find the latest driver. Intel was very restrictive in supplying anybody with their own drivers and I'm still wondering why, but Triones got quickly very famous since their drivers were meant to be the fastest ones and they were available. If you tried and made a benchmark comparison between the 'Standard Dual PCI IDE Driver' of Windows 95 OSR1 and the DMA Bus Master Driver from Intel or Triones you would not find any significant performance difference, however it made us feel better knowing that the CPU wouldn't have to work as much for transferring the data. This was the time of Winstone 96 and 32 MB or less were the common amount of RAM in a Pentium system.

One year later Windows 95 OSR2 was released, only available as OEM version, which meant you had to buy a complete system for getting this renewed version of Windows 95 legally. This new service release came with quite a few (but still too little) new features, one of them FAT32 (one of the most questionable things Microsoft ever did), another one was its ability to recognize the 'PIIX' of the 430FX, and the 'PIIX3' of the 430HX and 430VX chipset. If you installed this version Windows 95 would automatically (!!!) install its own 'PIIX IDE Bus Master Driver'. Now this was great news, nobody had to look for the Intel Bus Master Drivers anymore because the CPU resources saving transfer mode was now supported by Windows 95. This condition didn't last for long though, because a few months later Intel released the 430TX chipset with a new 'PIIX4' that was also able to support the new 'Ultra DMA Mode'. Hence everyone went back to 'Kevin's Triton Drivers Page ' and got again the latest Bus Master DMA Driver from Intel.

Now the times had changed in the 17 months between the release of the 430FX and the 430TX chipset. 64 MB was a quite common size of main memory in systems and if you wanted to benchmark you would use Winstone 97 instead of the old 16 bit Winstone 96. It wasn't too wrong checking if there is a performance increase of Intel's Bus Master DMA driver compared to Microsoft's one and running benchmarks with Winbench 97 or Winstone 97 revealed a performance increase of unbelievable 13% just by using the Intel Bus Master Driver under certain conditions. Benchmarking a little bit more would even reveal more ridiculous results. Testing a Seagate Cheetah SCSI harddisk under Windows 95, running with an Adpatec 2940UW controller would show that the worldwide fastest harddisk is scoring lower results than any EIDE harddisk using the Intel Bus Master Driver. This result was the last thing to make me doubt the authenticy of benchmark results with this strange driver.

Further investigations showed that these strangely high Winstone results only occurred in systems with more than 32 MB RAM. 64 MB systems showed the above mentioned performance lead of 13% in Winstone and up to >200% in Winbench's Diskmark achieved by the Intel driver over the Microsoft one whilst the results were almost identical in systems with 32 MB RAM. Digging more into this subject finally revealed the explanation for the strange behavior of the Intel Bus Master DMA Driver. You could say it's a bizarre combination of driver optimization and a bug in Windows 95. Whilst Microsoft's DMA driver is able to transport data to the harddisk in blocks of up to 64 kB size, the Intel driver splits them all up into small 4 kB chunks. By normal means this should negatively influence the performance of Intel's driver, because more small accesses take longer than one large access to the harddisk. However combining these small block transfers with the 'buffer all' command makes Windows 95 falsely cache all transfers in main memory and this even in case the 'unbuffered' flag is set telling Windows 95 to NOT put the data into the cache. In case of Winstone 97 all data that has to be processed by the test software is unzipped onto the test partition of the harddisk using the 'unbuffered flag', avoiding that this data gets into the main memory harddisk cache of Windows 95. If the Intel Bus Master Driver is running, a special amount of the unzipped data does get into the cache and is read from there instead from the harddisk which falsely inflates the Winstone result. The amount of data staying in the cache until it's needed is obviously depending on the amount of RAM available to Windows 95. 32 MB RAM are not enough to store as much data in the cache for significantly inflating Winstone 97 results, but 64 MB are great for caching large amount of this data. This is the reason why you can see these inflated results only in systems with more than 32 MB of memory.

Using motherboards with non-Intel chipsets is revealing comparable results. This seems to show that VIA and SiS didn't really have a choice. If they wanted to make their systems competitive to systems with Intel chipsets they had to falsely inflate Winstone results with their DMA Bus Master drivers as well. I'm wondering now if this is all a tragic accident or if benchmarks were intentionally manipulated. One thing is for sure, neither Intel nor Microsoft are happy about these findings. Intel because you could suspect they were manipulating a commonly used benchmark (and other benchmarks than Winstone are affected as well), Microsoft because they have to explain why their OS wouldn't acknowledge the 'unbuffered' flag under certain conditions.

ZD Labs have reacted and the upcoming Winstone/Winbench 98 Suite will not be affected by the above mentioned mechanism anymore. This will hopefully make the programmers of the Bus Master DMA Drivers think again, so that they can provide us with software that will actually increase system performance and not just benchmark results.

This Graph shows how easily the falsely inflated results generated by the Bus Master Driver from Intel can be found.

System: AOpen AX6L, Pentium II 300, EIDE HDD Quantum fireball ST 3.2, Windows 95 OSR2.