WinME can't handle more than 512 megs of memory

Pointless discoveries R US...

Like world+dog, we were obviously looking for something to beat up on Intel with following the launch of the P4. Unlike most of the planet, we reckoned that an old BIOS shipped with a couple of old mobos wasn't much of a story.

We much preferred a glitch we'd discovered a couple of weeks ago that appeared to be a rerun of the Caminogate RDRAM cockup. And, unlike some folk, we actually did some research before loosing the hounds on Chipzilla.

Our sample P4 and D850GB mobo, supplied with Windows ME installed, ran perfectly happily with the 256MB of RDRAM shipped to us. It also ran perfectly happily with the 512MB of RDRAM that Kingston sent us. Only when we tried to run both together did we hit problems.

No matter which configurations we tried, the system would not run with 768MB of memory, returning the error message: "There is not enough memory available to run this program. Quit one or more programs, and then try again."

768MB "not enough"? Blimey.

At first we considered the obvious options - unsupported RIMMs, mixing ECC and non-ECC memory, phases of the moon and so forth. This was tantalisingly familiar territory: an Intel RDRAM mobo that didn't work properly with fully-populated RIMM slots.

But the answer turned out to be far more mundane: Windows ME simply can't cope with more than 512MB of memory.

And neither can any other Win9x variant.

And it's a 'feature'. It transpires that Win ME, Win98 and Win95 cannot deal with main memory sizes in excess of 512MB. The Microsoft Knowledgebase entries on the subject (dating back a few short weeks) contain the following fascinating facts:

"The Windows 32-bit protected-mode cache driver (Vcache) determines the maximum cache size based on the amount of RAM that is present when Windows starts. Vcache then reserves enough memory addresses to permit it to access a cache of the maximum size so that it can increase the cache to that size if needed. These addresses are allocated in a range of virtual addresses from 0xC0000000 through 0xFFFFFFFF (3 to 4 gigabytes) known as the system arena.

"On computers with large amounts of RAM, the maximum cache size can be large enough that Vcache consumes all of the addresses in the system arena, leaving no virtual memory addresses available for other functions such as opening an MS-DOS prompt (creating a new virtual machine).

"This problem may occur more readily with Advanced Graphics Port (AGP) video adapters because the AGP aperture is also mapped to addresses in the system arena. For example, if Vcache is using a maximum cache size of 800MB and an AGP video adapter has a 128MB aperture mapped, there is very little address space remaining for the other system code and data that must occupy this range of virtual addresses."

And here are the three suggested workarounds:

"1. Physically remove any memory in excess of 512MB [!]

"2. Use the System Configuration utility to limit the amount of memory that Windows uses to 512MB or less.

"3. Use the MaxFileCache setting in the System.ini file to reduce the maximum amount of memory that Vcache uses to 512MB (524,288 KB) or less."

And the unspoken fourth solution: upgrade to Windows 2000.

Knowledgebase also admits that the addressing restriction has been identified as a failing in Windows. Installing Win2K obviated the problem. All 768MB ran faultlessly.

So if you think that adding extra memory will make your Win 9x system run faster, the answer is: it will, provided you don't exceed 512MB. With today's systems more than capable of exceeding this size, and with wallets capacious enough to purchase more than 512MB of RDRAM, Win 9X/ME suddenly appears rather passé.

Scary thought: how much memory will Office 2001 require? ®

Sign up to our Newsletter

Get IT in your inbox daily

Biting the hand that feeds IT © 1998–2017