Memory Interleave Enabler
for VIA Chipsets
Questions and Answers

Copyright (C) 2001, George E. Breese. All Rights Reserved.

Version 0.12 4/2/01

Important notes:

This product CAN DAMAGE A COMPUTER. Use it carefully and at your own risk.

If you have installed a previous version of this driver, uninstall it before installing this version.

License: This software is licensed, not sold. The author of this product has granted you a license to use this product, subject to the following conditions. By possessing, using, or attempting to use this product, you assume all liability for its use. You agree never to take legal action, civil or criminal, against its author for any reason. You may redistribute this product in its original form only. You may not charge money for distribution of the product, unless all such charges are remitted to the author immediately upon payment. The author retains ownership of all intellectual properties embodied in this product.

What is it?

This is a driver for Windows 9X, NT, and 200X. It will increase the speed of certain computers.

When installed on a computer whose motherboard contains certain VIA chipsets, this driver will reprogram the VIA chipset in order to maximize the speed of the computer's RAM.

How does it work?

This driver takes control of the main VIA-branded chip on the computers' motherboard, which is the chip responsible for connecting the CPU to the RAM and ROM and PCI and AGP and so forth. This driver adjusts the way that the VIA chip communicates with the computer's RAM.

Do I need it?

If your computer has one of the following VIA chips on its motherboard, you might need this driver. In all other cases, you do not need this driver.

If you own a computer whose motherboard contains one of the chipsets, then you might need it. To confirm that your computer has the correct chipset, try any of the following.

Your computer might already have interleave enabled, in which case you will not need this driver. You can use Sisoft Sandra 2001 to check the computer's current use of memory interleaving. Use the Mainboard Information screen. Scroll down to "Logical/Chipset Memory Banks". Look at the "Bank Interleave" setting. If the setting is "2-way" or "4-way", then you do not need this driver. 

Why do I need it?

ViaTech (www.viatech.com, or www.via.com.tw) has included a "memory interleave" feature in their chipsets since 1997.  Many motherboard makers chose not to enable it, however. This feature can drastically improve the speed of memory access, but only if it is switched on.

I only have one memory module. Can I use interleaving?

Generally, yes. In this kind of interleaving, the chipset can remember the location of up to four recently-used "pages" of memory on the module and can return to them instantly. Depending on the chipset, it can also remember the last four pages per module, for a total of sixteen pages. When the CPU needs to access these pages, the VIA chipset can access them quickly without having to calculate their location.

The amount of interleaving depends on the size and type of the memory chips on the computer's RAM modules. SDRAM is required. If the chips on the modules store 16 megabits each, the VIA chipsets can achieve two-way interleaving; if the chips are 64 megabits, four-way interleaving is possible.

NOTE: This version of the driver does not detect 16-megabit RAM, and it always enables 4-way interleave in any SDRAM.

I have Fast Page or EDO RAM. Can I use this?

No. This particular VIA feature is limited to SDRAM.

How do I install it?

You should have received this in a .ZIP compressed file. Extract the entire .ZIP file to a suitable location.

If your computer is running Windows 95, 98, 98 Second Edition, or ME, then run SETUP_9X.BAT .

If your computer is running Windows NT 4.0 or 2000, then run SETUP_NT.BAT.

After running the appropriate .BAT file, restart the computer.

How do I know that it is working?

One way to determine its effect is by performing the Memory Benchmark in Sisoft Sandra. The resulting numbers should be significantly higher than those without the driver.

I recorded the following results from Sisoft Sandra when testing the driver on specific computers. Your results may vary. Higher numbers are better. All numbers are in units of megabytes per second.

Motherboard Without driver With driver
Apollo Pro133 (ChainTech 6ATA2) ALU 124, FP 128 ALU 223, FP 239
KX133 (Biostar M7MKE) ALU 352, FP 376 ALU 413, FP 503
MVP3G (Tyan Trinity 400) ALU 110, FP 114 ALU 133, FP 139

What could go wrong with this driver?

Just about anything can go wrong. Your computer may display a "blue screen of death". The computer may become unstable. This driver may not help your computer at all.

This driver helped my computer. I am sharing it with you in the hope that it will help your computer. You must decide whether this driver helped your computer.

How do I uninstall it?

The driver can be uninstalled from the Add / Remove Programs section of Control Panel. The driver will be removed immediately, but the memory interleave will be enabled until the system is restarted.

What else can I do to improve memory performance?

NOTE: All changes to a computer carry a risk of damage. Try these carefully and at your own risk.

In the computer's BIOS setup screens, you can usually find an "Advanced Chipset Setup" screen. In this screen are several chipset-specific settings.

If you do not understand the terminology in this section, please study RAM and CAS issues on the Internet. If you are not comfortable making these adjustments, do not try them.

CAS Latency adjustments should be made to match the RAM in the computer.

Apollo Pro133, KX133, and KT133 chipsets can have their clock speed adjusted.

Systems with AMI or Award BIOS usually have generic DRAM timing adjustments. Typical choices are "7.5ns SDRAM", "10ns SDRAM", "Normal", "Fast", and "Turbo". Setting this value to "Fast" or "Turbo" can help. But, please note that some memory will not work correctly at faster-than-normal speed.

How much memory does this driver use?

This driver uses almost no memory at all. Its only job is to reprogram the chipset one time at startup.

Windows drivers are special programs. They have a special section that only occupies memory while the driver is starting. Nearly all of this driver's program code is located in this special section.

How did you make this driver?

I used notes from all over the Internet. I knew there was something not-quite-right with my computer, and after scouring the Internet for an answer, I stumbled on a few discussions of memory interleaving. People were discussing how they could use H.Oda's WPCREDIT to tweak the Pro133 chipset for better operation.

H.Oda once produced a driver called WPRESET that could reprogram the chipset at startup. WPRESET was designed to accept a list of tweaks and would perform them every time the computer was restarted. With all respect to H.Oda, I found bugs that prevented me from configuring his program at all. He has since discontinued support for WPRESET.

Eventually I grew tired of using WPCREDIT to manually tweak my computer. I decided to create a driver to do it for me. I happen to be a computer programmer, and my job description includes creating Windows drivers. I wrote this driver from scratch in my spare time. I built a common set of C++ code to perform the reprogramming of the chipset. I then created two sets of "wrapper" code, one to create a VxD and one for a NT kernel driver.

For the record, this driver contains none of the code of WPCREDIT or WPRESET. 

Before developing this driver, I used WPCREDIT to confirm which registers I wanted to change. WPCREDIT would routinely crash my computer, and so did this driver at first. I have found an ugly hack that solves the problem, and that is probably patentable. (Microsoft and IBM have patented the use of obscure Intel CPU instructions, so why can't I?)

This driver was made using a mix of assembly-language and C++ code. To compile it, I use Microsoft Visual C++ 6.0 and Microsoft's free Windows 2000/ME DDK. My Windows 9X VxD is based upon Microsoft's generic sample VxD, and my NT kernel driver is actually an AppWizard-generated DLL file with some carefully-chosen compiler and linker options.

Will you give us the source code?

I do not wish to share the source code at this time. It is not formatted cleanly, and I may elect to use it in a commercial product later.

How do I contact you?

If you wish to offer feedback on this driver, send email to feedback@networking.tzo.com . Please note that I do not check this mailbox frequently, and I do not answer questions about installation or use of this driver.