Adam Tauno Williams wrote: > > The comparison of PAE to EMS/XMS is completely bogus, the > technologies aren't alike at all. They are alike in that they add an extra layer of indirection to work around the fact that the pointer size cannot change. > PAE does *NOT* involve any bank switching; I didn't use the term bank switching, but what it does do could well be described by that term. > a system using PAE can "address that 16 GB all at once". I guess that depends on what you mean by "at once". PAE doesn't change the fact that pointers are 32 bits, and so can only address a 4 GB span. To access more RAM, the application has to somehow ask the operating system to rejigger the processor's page tables to map memory from a different place in RAM into its virtual memory space. Consider this: const unsigned long long GB = 1024 * 1024 * 1024; char* p = (char*)malloc(6 * GB); p += 5 * GB; *p = 0; It will fail twice on a PAE system. First, malloc() on that system won't be able to give you a 6 GB chunk of continuous RAM. Second, if you replace the malloc() with the OS's nonstandard way of accessing more RAM in PAE mode (mmap() on Linux, different mechanisms on other OSes) the pointer arithmetic will wrap around instead of doing the right thing, so the memory write will go to the wrong place in RAM. Reboot that same system into a 64-bit OS, and the code above should work, ulimits willing. > <http://en.wikipedia.org/wiki/Physical_Address_Extension#Page_table_structures> Quoting from that page: "The operating system uses page tables to map this 4 GB address space into the 64 GB of RAM, and the map is usually different for each process. In this way the extra memory is useful even though no single regular application can access it all simultaneously." > There is a, usually very small, performance penalty to PAE due to the > using a three level verses a two level page directory. Yes, as I said, "a little slower". The last numbers I heard were in the 2% sort of range; I can see 10% at most. The overhead comes not just from the 3-level indirections, but also from the need to keep remapping the process's VM window into the larger RAM space, and that there's more work to update the page tables on each context switch. All this aside: you aren't seriously trying to talk this guy into using PAE mode, are you? Are you not, in fact, just being pedantic, yet agree with me on the most important point, which is that he should be using a 64-bit OS and application here?