Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
32bit Windows can use more than 3GB of RAM, MS just doesn't want you too (geoffchappell.com)
21 points by asmosoinio on May 17, 2009 | hide | past | favorite | 20 comments


This article is wrong. Microsoft doesn't want you to use PAE, because it's crap.

It was a weird XMS sort of memory extension developed for enteprise applications on the Pentium Pro. Supporting it adds all sorts of weird corner cases that have to be dealt with in the operating system. It is a good thing MS doesn't support it, it's the right technical choice.

Much better to go with a straight flat 64bit address space than hacked up crap. Anyone who remembers segments and offsets can tell you how horrible it is.


As far as I know it actually works fine and is well-supported in Linux. Sure, getting more than 3GB address space in user space apps isn't possible and if you need more than that you have to either use a real 64-bit OS, or use special hairy remapping APIs. But if all you want to do is run a gazillion processes that don't come anywhere near the 3GB ceiling individually, PAE actually has memory efficiency advantages. 64GB of physical RAM are the hard limit in PAE mode, though, which I suppose screams "temporary measure". Back then, we were all going to switch to IA-64 (Itanium) according to Intel.

I'm not aware of the "corner cases" you're referring to. The page table format changes, (4 levels instead of 3, rather like in 64-bit mode) and if you wish you can use the x86 memory segmentation system in creative ways, IIRC. You also need to watch the addresses you can use as DMA sources and destinations, but you have to do that in real 64-bit mode as well. (not all PCI devices support >32-bit memory addresses for DMA) Plain Windows XP even enables PAE if supported by the hardware, but refuses to touch memory above the 4GB address barrier.

The real problem, as far as I can tell, is kernel-mode code, which must be aware of PAE and must be able to deal with it accordingly, especially concerning the DMA issue mentioned above. And for better or worse, there's a lot of third-party kernel-mode code running on the average Windows system (drivers, virus scanners, etc.) and MS understandably don't want to deal with the support quagmire of third-party drivers that don't properly support PAE. Because even if it's the driver developer's fault, the customer will see Windows crashing, and therefore it's Microsoft's fault.

Certain server versions of Windows do support PAE, but they have their own, more expensive driver certification process, which is fine for hardware and software created for "enterprise" customers. And things like databases from Oracle and IBM did and presumably still do use the hairy remapping APIs in their 32-bit versions, because the 64-bit-era has only arrived relatively recently in windows-land.

Linux solves this by controlling all officially supported drivers because they ship with the official kernel, so making all drivers PAE-aware is easy. Everything outside of that is the user's or the distributor's responsibility.


PAE is crappy in a XMS sort of way if you want to use it to run applications that are able to access more than 4GB (3GB actually) of memory. However, if you just want to run multiple applications/processes that all require a large amount of Memory (say 1 or 2 GB) it has an advantage because it allows the system to keep each process' address space in physical memory. This fact is entirly transparent to the applications themselves. The application developer just "sees" the usual 32bit flat address space and does not have to jump through any XMS like hoops. With PAE you cant have processes use more than 4GIG of address space (unless you explicitly program for it like Oracle did for the PPro). Being able to keep multiple large process images entirely in physical memory can be of great benefit though for certain types of usage scenario.


Yep. PAE doesn't allow for any single program to have any more than the roughly 3 GB because the virtual memory of every program still is a 32 bit address space.


Yeah I remember when PAE first came about on the PPRO. It was designed specifically for applications to extend the system.

oracle, mssql, etc had weird extended windowed memory versions for huge ppro systems (Remember this is back in 1996). All the horrors of working with XMS/EMS type memory with the added joy of windows. How could you lose?


"This article is wrong. Microsoft doesn't want you to use PAE, because it's crap."

Then why do they still sell Windows?

/me ducks

BTW, PAE has been working for me under Linux for what seems to be ages. It's a kludge, sure, and no replacement for a 64 bit CPU, but remember the x86 did not enter the 64-bit world until there was a viable OS and software for the AMD64.

And some may even consider the AMD64 a kludge of its own.


PAE does have some benefits for x86 (admittedly, they also exist in amd46 IIRC).

The big one (aside from virtual memory space) is the NX bit. You can set regions of memory noexec.

Imagine doing this to things like the stack, or the heap. Done properly, you can mitigate the risk from buffer overflows (the program will simply crash if it ends up in the wrong spot).


The writer says vista supports it. He also says he doesn't have any software that needs (or uses) gigabytes for each running instance.


Haven't read the article, because the author seems to have run out of bandwidth, but I can tell you that Microsoft does indeed support PAE: http://www.microsoft.com/whdc/system/platform/server/PAE/PAE...


It does, but the version that does costs more


Parent was talking as if Microsoft didn't support[1] it at all, which is clearly not the case.

ETA footnote:

1: Having finally managed to gain access to the article, I can see I was using the word "support" as in "technical capability", rather than "will stand behind it and help you when it breaks".


64bit is the only way to address 32bit addressing limit. it's related to 32bit chip architecture not to particular operating system. what's amusing is the length of the article. putting that much effort into article (and research) without finding basic things about computers their architecture deserves more than few points down.


Think of PAE as an apartment building. Every apartment is 4GB in size. Every tenant (process) can only occupy a single apartment. The building however can host multiple tenants because it can put them in different apartments. Windows vista says the entire house is full when only a single apartment is occupied.


I think you need to re-read the article. It is not about going around the 32 bit address-space limit. It is about utilizing all available memory in a 32 bit system. Which has everything to do with the operating system.


yep, it kinda reminds me to a those small pieces of software that would double your physical memory for 39$.


Anyone have a mirror? "The server is temporarily unable to service your request due to the site owner reaching his/her bandwidth limit. Please try again later. "


Seems like his provider didn't want him 'two' use 'to' much of their ram either... :)

I think this might be the article (google cache): http://209.85.173.132/search?q=cache:Li-1XUnINOUJ:www.geoffc...


So MS explains this in a simplistic and patronizing manner to their general customers without going into all the technical details...details that 95% of them probably don't want to know.

Meantime, the price of 64-bit Windows is the same as 32-bit windows, and last I looked MS would swap your Vista DVD for free on request if you realized you should have bought 64-bit. So why do I care?


speling faile.


"Representations made by Microsoft about memory limits for Windows Vista are misleading or illegal."

Or both...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: