Memory Interleave Enabler for VIA Chipsets
Questions and Answers

Version 0.15 February 9, 2002

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

Important: This product CAN DAMAGE A COMPUTER or its files. 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.

Trademarks mentioned herein are the property of their owners.

What is this?
What is memory interleave? How does it work?
Do I need it?
Why do I need it?
I only have one memory module. Can I use interleaving?
I have Fast Page or EDO RAM. Can I use this?
I have DDR SDRAM. Can I use this?
I am overclocking my CPU. Can I use this?
How do I install it?
How do I know that it is working?
What could go wrong with this driver?
How do I uninstall it?
What else can I do to improve memory performance?
How much memory does this driver use?
How did you make this driver?
Will you give us the source code?
How do I contact you?

What is this?

This is a driver for Windows 9X, ME, NT 4.0, 2000, and XP. It will increase the speed of many computers that contain VIA-brand chipsets.

Many motherboard manufacturers forgot to activate "memory interleave" on their motherboards. For motherboards with VIA chipsets, this driver will enable "memory interleave".

What is memory interleave? How does it work?

SDRAM memory chips contain banks of memory, and each bank of memory is broken up into pages. Currently, SDRAM has four banks per chip.

Choosing and activating a page of memory takes time, but once the page is activated it can be written and read quickly. VIA chipsets can be told to keep a page active in each bank of memory. The VIA chipset can then read and write to the active pages faster.

Imagine a simple computer program that reads data from one page of memory, performs a simple calculation on it, and writes the result to another page of memory. Without interleave, the chipset must activate one bank and one page and read from it, then activate the other bank the other page and write to it, then activate the first bank and so on. With interleave, both banks and pages remain active, so the chipset only has to supply the address within the first bank's page and read it, then supply the address within the second bank's page and write to it.

The process of activating multiple pages of SDRAM has been nicknamed "interleave". The nickname was chosen because the process is similar to a process used on old computers, where the same address would be sent to two or four banks of memory and then the data in all the banks would be read or written in one step.

Do I need it?

If your computer has one of the following VIA chips on its motherboard, and the manufacturer of your motherboard forgot to enable interleave, then you need this driver.

Chipsets for Super Socket 7 processors

Model Part # PCI ID
VP2 VT82C595 0595
VP3 VT82C597 0597
MVP3 VT82C598 0598
MVP4 VT82C501 0501

Chipsets for Pentium II and III processors (the "Apollo" series)

Model Part # PCI ID
Pro VT82C691 0691
Pro BX VT82C692 0692
Pro133 VT82C693A 0691
Pro133A VT82C694X 0691
Pro Plus VT82C693 0693
ProSavage4 PM133 VT8605 0605
PLE133 VT8601 0601
Pro266 VT8633 3091
PX266 VT8653 3101
ProSavage PM266T VT8615 3103

Chipsets for Athlon processors

Model Part # PCI ID
KX133 VT8371 0391
KT133 VT8363 0305
KT133A VT8363A 0305
S3 ProSavage KM133 VT8365 0305
KT266, KT266A VT8366 3099
KLE133 VT8361 3112

Pentium 4 and future chipsets (generic support provided)

Part # PCI ID
P4X266 3128
VT8662 3102
VT3133 3133

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 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?

Many motherboard makers failed to enable the "memory interleave" feature on their motherboards. This feature can drastically improve the speed of memory access, but only if it is switched on.

VIA Technologies Incorporated (www.viatech.com, or www.via.com.tw) has included a "memory interleave" feature in their chipsets since 1997.

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

Yes. Large DIMM memory modules contain chips of 64 megabits in size. These chips contain memory that has been split into four banks. Rather than activating and using one bank at a time, the chipset can leave all the banks active. The chipset remembers the address it last accessed in each bank, and if it needs to access the same address it can do so immediately.

VIA supports up to four memory modules in most of its chipsets. The chipset can remember the last-used addresses in each bank in each module, for a total of sixteen pages of memory accessible immediately.

Smaller memory modules may have 16-megabit memory chips containing two banks per chip, or EDO memory chips. 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.

I have DDR SDRAM. Can I use this?

Yes.

I am overclocking my CPU. Can I use this?

Generally, yes. But, you may need to reduce the amount of overclocking.

This driver switches on a previously-unused section of the chipset. This section of the chipset can be sensitive to overclocking.

The memory will be accessed faster. The memory may not be stable when overclocked and interleaved.

Both overclocking and interleave can cause the memory and chipset to use more electrical power. If the computer's power supply is inadequate, or if the power delivered to the chips is not smooth, then the computer will be unstable.

How do I install it?

You should have received this in a .ZIP compressed file. Extract the entire .ZIP file to a suitable location, such as a new temporary folder that you create.

Run SETUP.BAT from the folder. The enabler should install automatically. You will then be asked to restart your computer.

The enabler will not work until you restart your 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 2001 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
MVP3 (DFI P5BV3+) ALU 110, FP 114 ALU 133, FP 139

What could go wrong with this driver?

There's a small but definite chance that something could go wrong. The 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.

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.

Recent Pentium III and Athlon chipsets (e.g. Pro133, KX133, and KT133) can have their RAM 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 use it in a commercial product later.

How do I contact you?

If you want help with memory interleave issues, I recommend the support forums at www.viahardware.com. That site is not directly affiliated with VIA, but it does offer helpful advice as well as information and reviews of new VIA-based hardware.

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.