Memory limitation on x86, PLEASE ANAND!!

sub.mesa

Senior member
Feb 16, 2010
611
0
0
As far as i know, Microsoft limited the PAE to 4GB for compatibility reasons. Don't remember the details. But you don't want to use PAE with lots of RAM; it'll waste most of the performance your computer can achieve.

Besides, 32-bit is for Pentium 4 class PCs. We live in 2010 now? As far as i know, no x86 32-bit CPUs by AMD/Intel are sold this day in downstream channel. The oldest were original Atom CPU by Intel which was 32-bit only. And my AMD Geode LX also only supports 32-bit.

So 32-bit is depricated. Microsoft Windows 8 will not have 32-bit version; they should have done that with Windows 7 i think. Who needs 32-bit these days? Run older OS if you got such old hardware that it's before 2003-era when 64-bit introduced itself.

But it's not like PAE (Physical Address Extention) causes you to not need 64-bit any longer. It's just a 'hack'; a dirty workaround. Computer technology is full of it, primarily the reason why computers have so many issues.
 

razel

Platinum Member
May 14, 2002
2,337
93
101
I think the author elaborated plenty. Windows is used by nearly everybody and everywhere and everyone expects it to do everything and be compatible with everything as it's always been. As a developer, I think MS did chose the least of all the evils presented in the article.

And it isn't as implied that MS is preventing you from the 4GBs, IIRC XP and Vista were both available 32 or 64 bits, no extra charge. Too bad this doesn't seem the case for Windows 7, but I would love to be wrong. Installing the 64 bit version if you need the 3GB+ RAM is the best solution as opposed to the hacks or paging memory method. I remember paging method back in the QEMM days for my 286.
 

Voo

Golden Member
Feb 27, 2009
1,684
0
76
Didn't read the article (though I think I've read it some time ago..), but anyhow..

But it's not like PAE (Physical Address Extention) causes you to not need 64-bit any longer. It's just a 'hack'; a dirty workaround. Computer technology is full of it, primarily the reason why computers have so many issues.
I agree with the rest, but PAE is as much a hack as x64 itself. And the performance hit for PAE is minimal, you just don't get the other advantages from the x64 ISA (which may result in a performance loss) but all in all it's just an extra lookup in the lookup tables - negligible.


Anyhow the official reason why MS restricted PAE is because they found drivers who didn't work correctly with physical addresses >4gb (they defined a PHYSICAL_ADDRESS datatype years ago in the SDK so some people just messed up). Honestly they probably just wanted people to get the x64 version and the server people to buy more expensive versions with higher memory caps..
 
Last edited:

Modelworks

Lifer
Feb 22, 2007
16,240
7
76
32 bit hardware has a limit of 4GB access. That means that x86 hardware using a 32 bit cpu cannot address directly more than 4GB. It has nothing to do with x86 there just isn't enough bits for more memory. To get more memory they pushed it to 36bit and later 40bit on the cpu. Your 64bit cpu internally accesses memory as 36/40 bit and with help from the OS and extensions switches between pages of memory.

Memory by extensions is like having a wall full of shelves with each shelf having several items. You can pick items off each shelf but you cannot grab all the items at one time. The cpu does the same thing. It can access any part of the memory, but cannot use the entire memory at one time. This limits the memory that a single program can access at one time to 1TB. You could have 8TB installed but each program would only be able to consume 1TB of that 8TB.

Windows decided for driver reasons to not allow 32bit users the full 4GB memory space . If the OS allowed the full range and a driver misbehaved it could overwrite program memory and cause the OS to crash. The 32 bit kernel was designed before anyone thought 4GB of memory would be common and so it didn't make allowances for it.

Linux can use all 4GB in 32bit mode with the right kernel and software combination and allow the program to use 3-3.75GB memory. Windows 32 bit programs are restricted to 2GB per program regardless of what you do.
 

sub.mesa

Senior member
Feb 16, 2010
611
0
0
Let's not forget under 32-bit that virtually all apps you use are limited to 2GiB, not 3 or 4GiB. That includes 32-bit apps which run on 64-bit Windows.

Yes, you can compile your own program with /3G or /LARGE_ADDRESS_AWARE flag, but i've not seen that actually appear in the wild. With this flag, a 32-bit app under 64-bit would be able to allocate up to 4GiB per process. Though said, any realistic situation involves virtually all 32-bit apps to be limited to 2GiB per process.

I consider that to be a quite good thing; now you have more RAM than your apps can even use. That's a good thing. Why? No more out of memory situations, no more swap needed (disable it; without whining, please?) and lots of filecache. RAM that isn't used by apps can be used as cache instead; increasing your HDDs performance which usually is the biggest bottleneck in computer systems around the globe.

So 64-bit OS and 32-bit apps wouldn't be such a bad combination i think. All your RAM can be used, most of it as filecache. But even malfunctioning applications cannot cause out-of-memory situations; where normally your computer would drop to speeds below Pentium 1 90MHz; your mouse might not even move normally due to all swapping involved. This can no longer happen if you have no swap to begin with. If the program malfunctions it will be terminated instead of allowing to hog the system and bring it to its knees.
 

sub.mesa

Senior member
Feb 16, 2010
611
0
0
Anyone has a link on decent benchmarks done on 32/64GiB RAM on 32-bit PAE systems? If the performance penalty is just 1% then i agree this shouldn't be a show-stopper. But i do not believe it stays at that one percent.
 

Scotteq

Diamond Member
Apr 10, 2008
5,276
5
0
Sub - Phoronix did a comparison some time ago - I have the link saved for the reasons below: Phoronix comparison of 32 bit, 32 bit PAE, and 64 bit (Ubuntu) kernels

As you suspect - Performance is not uniform. Not at all.

I'd like to see a similar work using Windows, but haven't found one published anywhere.

****

I remember the article the OP is referring to - It comes up on Tom's every now and again when the latest <They'll Pry 32Bit XP From My Cold Dead Hands At Roughly The Same Time The Same Thing Happens To The NRA And Their Guns>~Troll starts mouthing off about how useless newer OSs are. I strongly suspect these same individuals have never actually used PAE, but rather are merely looking for reasons to "Not Change Anything".

Anyways - For a while, the topic was coming up often enough that I even have a rant/response saved in Word...

Among other things, the added address length has an effect like adding a table the OS can use to maintain the &#8220;same&#8221; address in more than one place. Think of this as adding a "street name" to your "address". The limitation is that this *must* be provided for in your programs and drivers in order to work. If we start with a (fictitious) address: 1234567890, and add the extra bit.. Then A1234567890 is not the same as B1234567890. If your mailman only looks at the '1234567890' but never looks at the A or B, then he can and will sometimes deliver a letter to the wrong place. The same thing is true of PAE - If/when then individual program haven&#8217;t been coded to "know" to look in the proper table for the needed memory locations, then messages can and often will go to the wrong place. In Windows, this is a &#8220;Memory Access Violation&#8221;, and results in a blue screen.

Additionally, individual programs under PAE can still only use up to 4 GB, and usually just 2 since they're typically coded with that expectation. The same applies to 32 bit Kernels and drivers: They can be made aware of PAE, but they can still only use 4 GB ranges at a time.

In short: PAE is not that great. In a server environment the number/version/type of programs and drivers - and the space they're allowed to run in - can be tightly controlled. So this works and therefore this functionality is available on server versions of 32 bit Windows (NT, 2003, 2006, etc). In a consumer environment, this is not true at all.

Bottom line for &#8216;regular&#8217; users: If you want to use 4 GB of RAM or more, then you should buy 64-bit hardware and use a 64-bit OS.
 
Last edited:

sub.mesa

Senior member
Feb 16, 2010
611
0
0
That article does compare PAE to non-PAE kernel, but only limited number of tests and, most importantly, only with 4GB RAM. I suspect that as you increase RAM under PAE the performance on memory-intensive application (often server processes) would take a larger hit.

It may also not be that interesting now, given that basically everything today is 64-bit. If you run any kind of high-end hardware with lots of RAM that likely implies you also have the option of running 64-bit OS and have 64-bit CPU.
 

Neony

Junior Member
Nov 4, 2009
3
0
0
I used to think the same way, but the article does give a helping hand to those who are unable to find suitable drivers for expensive hardware and apps. Many people using fx Cubase and studio equipment of different kinds.
Here's a quote a friend sent me:

"After reading through the forums, I see that many off you guys and girls are having big issues geting the mlan driver

working in Vista 64 bit, Windows 7 64 bit, some in xp 64 bit and some in windows 7 32 bit.

So to give you all a headsup.
Windows 7 and Vista 64bit wont work with the xp 64 bit driver. Yes you may get some sound out of it, but it will be

crakel and dropout at best. And to install the driver you have to go through allot of steps to avoid 64 bit driver signing

etc...

Xp 64 bit driver won't work properly with a quad-core cpu. So if you have quad don't bother...

The only driver that works cross platforms is the 1.63 32 bit driver.

Xp 32 bit as we all know works perfect, but the 4Gb (3,5Gb) limitation of ram is the big setback and the way xp writes to

disk slows down your computer (if you use disks with low writhing cache or ssd).

Vista 32 bit works great, but dosen't like big memory load. So using synths like "East West Colossus" will get your system

unstable and with the 4Gb (3,5Gb) limitation you won't eaven get to load some of the instruments Razz

And then we have Windows 7 32 bit. It is not supported by Yamaha/mlan. Will never be... But the good news is that the

driver 1.63 32bit works as good as it does in xp and eaven bether than in Vista.

So if you want to upgrade your os, Windows 7 32bit is the way to go.

Yes I know the ram limitation. Well who says that win 32bit only can load 4gb of ram? answer: Windows.
I say no Wink

Here is how to setup Mlan in windows 7 32bit and patch to 64Gb memory use (No need to go 64 bit to get more ram).


Install windows 7 32bit

1. After install, go to start, computer right click, properties, device manager, IEEE 1394 Bus host controllers, select your

firewire card/port right clik and select update driver. Hit browes my computer and select let me pick from a list... Select

the legacy driver.
2. Go to start, control panel, system and security, change user account control setting, slide the slider to the bottom.
3. Install as normal

And now to enable the 64Gb of ram in Windows 7 32bit Very Happy

You need to get a patch.

Go to this link: http://www.unawave.de/windows-7-tipps/32-bit-ram-barrier.html?lang=EN

Read and follow instructions. It is easy and works 100&#37;

My system is Asus delux V2 X58, I7 930, 12Gb ram
01X, I88x, I88x, Uad-2, Uad-1, Uad-1 and Powercore pci-e
Cubase 5.5.1

Hope you all will finde what you need in this post. And it is nice to finaly have proper amount of memory needed for music."
 

Voo

Golden Member
Feb 27, 2009
1,684
0
76
Sub - Phoronix did a comparison some time ago - I have the link saved for the reasons below: Phoronix comparison of 32 bit, 32 bit PAE, and 64 bit (Ubuntu) kernels

As you suspect - Performance is not uniform. Not at all.
How are the results not uniform? Looked through them and the difference between the x86 kernel with and without PAE is minimal as expected. Why should we compare the results to the x64 kernel? We're only interested in how large the performance hit of enabling PAE is after all and in the end it's still the x86 kernel and nothing else.

@mesa: Why should more RAM increase the performance hit? From my understanding we only add another lookup (what else?), so the only thing that more RAM means is that the table gets a little bit larger so we need more memory for it and can hold maybe less of it in cache, but the access itself should still be constant and the principle of locality should still hold, so we probably don't even need to hold more of the table in memory (except if we need all that referenced memory) - oh and 64bit tables are also larger anyhow.

PS: Not that I argue against 64bit OSes, actually that post is written from Win7 x64 and the second machine beneath it is running 64bit linux ;)
 
Last edited:

tcsenter

Lifer
Sep 7, 2001
18,943
571
126
I do hope Anandtech would elaborate a little on this subject in an article ......oh and experiments and measures and so forth. :eek:
Anandtech already did elaborate on this years ago. Its a years-old "issue" now. There's nothing more to elaborate on. Its explained in extensive detail here and a million other forums (note that many such explanations around the net are flat-wrong, but anyway....).
 

Yellowbeard

Golden Member
Sep 9, 2003
1,542
2
0
Anandtech already did elaborate on this years ago. Its a years-old "issue" now. There's nothing more to elaborate on. Its explained in extensive detail here and a million other forums (note that many such explanations around the net are flat-wrong, but anyway....).

+1
 

Neony

Junior Member
Nov 4, 2009
3
0
0
Thank you guys. Sorry for not knowing, but it was new to me and as tcsenter says....."note that many such explanations around the net are flat-wrong."