32bit 4Gb Memory Limit Explained

There was plenty coming from Microsoft (through developer channels) about this issue ...
There maybe was about what you want to count as "this issue", but where my paragraph that you quote says there is "strikingly little" from Microsoft, it is not talking of as wide an issue as you want, it is talking of "my article's claim" as described in the paragraph before your quote.

For the given context, then, your citations are irrelevant except for three that I do anyway cite in my article. Indeed, one of them is precisely what I meant by "some of what little it does say is absurd". Now, you may think I misunderstand or even misappropriate the articles that I cite, but since I do cite them, it's not enough that you just re-cite them.

As for the others, I'd have cited them too, had I depended on them, where I appraise how and what software must be recoded for PAE and the use of memory above 4GB. Instead, my only reason to cite them would be to say that Microsoft agrees with me.

That Microsoft presents your "well-documented driver issues in consumer space" as reason to limit consumer editions to 4GB certainly is repeated in the article, from one of the cited articles, but with the caveats that the stated reason does not itself explain the outcome and that the reasoning is not open to independent testing. If your citations cover both those points, then please say where.

By the way, for as much as you may say these citations show Microsoft was clear that consumer editions would be limited, one of them looks very much like a record that the reduction of memory for Windows XP SP2 was not very well publicised in advance.

If you don't like Microsoft's explanation why, maybe you'll better prefer Linus Torvald's explanation why Microsoft would do this....

The world may owe Linus a lot, but quoting that is no favour to him. I can only assume he's talking about other things or other contexts. He's at best out of topic when he wants to use normal pointers for physical memory addresses and thinks that memory above 4GB is limited to "special uses only". That said, you and I clearly have very different ideas about what my topic was when I asked my critic to explain himself.
 

My Computer

OS
Windows Vista
An interesting article indeed. The way I read it is that 32bit and 64bit OS are essentially the same code and both are present when you buy 32bit. With some hacks and tweaks you can disable the 32bit blockage and make it run as 64bit. That's like taking the muffler out of the exhaust pipe of a mofa in order to make it run faster - and that is not legal either.


And that is VERY wrong. They are the same code, but the physical address space of 64bit can't ever be done by a 32bit cpu. You can't run 64bit code on a 32bit cpu without emulation of some kind. It'll have to chop up the data in parts that the 32bit cpu can run. It's like putting a square in a round hole. =(

With the others who talk about PAE it is an ugly hack, cpu's weren't ment to run like that. =S If we are going to use a car analogy it's like adding NOS to a 89 Mustang and saying "Oh that's how it's supposed to be run". Even though if you screw up on something simple there goes your Mustang! lol Yes we can do it, but that wasn't the intent when they started the NT kernel. So no they didn't lie when they said it wasn't supported, because a vanilla kernel wouldn't support it. =S

[edit] When I say the same code, I mean the C/C++ programming code they use to write with. Or whatever code they choose... But once it's compiled to machine, it's no longer the same code, 64bit has larger addressing than 32, that's just what happens after compile.
 

My Computer

Computer Manufacturer/Model Number
Custom
OS
Windows 7, Linux
CPU
AMD Phemon II x2 3@3750
Motherboard
ASRock M3A770DE
Memory
1G Crucial 1666
Graphics Card(s)
8800GT OC (custom OC)
Sound Card
Sound Blaster Live! (never changes!)
Monitor(s) Displays
Vivitron 22"
Screen Resolution
1600x1200
Hard Drives
Western Digital 120G/160G SATA
Maxtor 80G IDE
PSU
450w
Case
Unknown
Cooling
Custom Air cooled
Keyboard
Logitech
Mouse
Logitech M-BZ15A Laser
Internet Speed
Cable 10mbit
but that wasn't the intent when they started the NT kernel. So no they didn't lie when they said it wasn't supported
That is the whole point. It was supported from the very beginning. In XP/SP2 they put an extra limitation into the memory manager, so all access to the address space above 4G was cut off.
 

My Computer

OS
Windows
but that wasn't the intent when they started the NT kernel. So no they didn't lie when they said it wasn't supported
That is the whole point. It was supported from the very beginning. In XP/SP2 they put an extra limitation into the memory manager, so all access to the address space above 4G was cut off.

But you forget the NT kernel was started in 95! I'm not talking about xp/sp2 did you not see the part when I stated a vanilla kernel? Don't quote part of a post just so you can word what you like with it.
 

My Computer

Computer Manufacturer/Model Number
Custom
OS
Windows 7, Linux
CPU
AMD Phemon II x2 3@3750
Motherboard
ASRock M3A770DE
Memory
1G Crucial 1666
Graphics Card(s)
8800GT OC (custom OC)
Sound Card
Sound Blaster Live! (never changes!)
Monitor(s) Displays
Vivitron 22"
Screen Resolution
1600x1200
Hard Drives
Western Digital 120G/160G SATA
Maxtor 80G IDE
PSU
450w
Case
Unknown
Cooling
Custom Air cooled
Keyboard
Logitech
Mouse
Logitech M-BZ15A Laser
Internet Speed
Cable 10mbit
What kind of relevancy does NT 4 and earlier have to do with this discussion?

PAE it is an ugly hack
I just love to see those quotes.


Because all the drivers are still based off the original memory management. Why would you re-write the driver code for something when you can just re-compile it for a new system and fix those bugs? So a lot of legacy code was in both the NT kernel and the drivers, and what does that mean? Buggy PAE, and what does that imply? Oh whatever, figure out marketing and how people write code for **** and then read this post over again. It'll give you a new light, because obviously people are supposed to write all new code for hardware support instead of re-use the old code with tweaks. Or am I just the stupid one and good marketing eludes me?
 

My Computer

Computer Manufacturer/Model Number
Custom
OS
Windows 7, Linux
CPU
AMD Phemon II x2 3@3750
Motherboard
ASRock M3A770DE
Memory
1G Crucial 1666
Graphics Card(s)
8800GT OC (custom OC)
Sound Card
Sound Blaster Live! (never changes!)
Monitor(s) Displays
Vivitron 22"
Screen Resolution
1600x1200
Hard Drives
Western Digital 120G/160G SATA
Maxtor 80G IDE
PSU
450w
Case
Unknown
Cooling
Custom Air cooled
Keyboard
Logitech
Mouse
Logitech M-BZ15A Laser
Internet Speed
Cable 10mbit
Oh, I wasn't aware that people still used drivers from the NT 4 generation.

No but the code is still used in XP... This is exactly why they started Vista, to re-build the kernel and driverspace. Or have you been paying attention to anything?

Windows NT - Wikipedia, the free encyclopedia

Code:
[B][[URL="http://en.wikipedia.org/w/index.php?title=Windows_NT&action=edit&section=3"]edit[/URL]] Driver models[/B]

 Windows NT introduced its own driver model, the Windows NT driver  model, and is incompatible with older driver frameworks. With [URL="http://en.wikipedia.org/wiki/Windows_2000"]Windows  2000[/URL], the Windows NT driver model was enhanced to become the [URL="http://en.wikipedia.org/wiki/Windows_Driver_Model"]Windows Driver Model[/URL], which was first introduced with [URL="http://en.wikipedia.org/wiki/Windows_98"]Windows  98[/URL], but was based on the NT driver model.[URL="http://en.wikipedia.org/wiki/Windows_NT#cite_note-9"][10][/URL]  [URL="http://en.wikipedia.org/wiki/Windows_Vista"]Windows Vista[/URL] added native support for the [URL="http://en.wikipedia.org/wiki/Windows_Driver_Foundation"]Windows Driver Foundation[/URL], which  is also available for [URL="http://en.wikipedia.org/wiki/Windows_XP"]Windows XP[/URL], [URL="http://en.wikipedia.org/wiki/Windows_Server_2003"]Windows Server 2003[/URL] and to an extent, [URL="http://en.wikipedia.org/wiki/Windows_2000"]Windows  2000[/URL].


They have many reasons for doing this, but we still see legacy code used in drivers. Daniel K's creative pack (hack I dare say?) gets ****ed up with larger memory, why do you suppose that is? Infact since it's still Creative's driver why do you suppose proprietary drivers should get messed up with larg ram? They still use legacy code, it doesn't mean Windows is using the legacy code, but if you add support for drivers with legacy code then your still loading legacy code into the kernel space. It's JUST like writing the legacy code, and then you get BSOD's.... GASP NO! People will use older code whenever possible, why would you re-write something that works, it's been going on for a long long long time.
 

My Computer

Computer Manufacturer/Model Number
Custom
OS
Windows 7, Linux
CPU
AMD Phemon II x2 3@3750
Motherboard
ASRock M3A770DE
Memory
1G Crucial 1666
Graphics Card(s)
8800GT OC (custom OC)
Sound Card
Sound Blaster Live! (never changes!)
Monitor(s) Displays
Vivitron 22"
Screen Resolution
1600x1200
Hard Drives
Western Digital 120G/160G SATA
Maxtor 80G IDE
PSU
450w
Case
Unknown
Cooling
Custom Air cooled
Keyboard
Logitech
Mouse
Logitech M-BZ15A Laser
Internet Speed
Cable 10mbit
And that is VERY wrong.

Yes, what you quote is a very wrong reading of the article.

But you forget the NT kernel was started in 95!

But even then it was made plain that drivers should account for 64-bit physical memory addresses and should use map registers when setting up DMA transfers. Although support for the latter was significantly revised for Windows 2000, this was mostly to allow that bus drivers could provide DMA support independently of the HAL. It doesn't change that the NT kernel always anticipated that physical memory might extend beyond 4GB. An NT 4.0 driver that was _correctly_ written won't have been tested for memory above 4GB on an x86 platform until Microsoft's introduction of PAE support, but it ought to work unchanged in later versions that actually can use physical memory above 4GB.

That some or even many drivers for the x86 platform were not written correctly but were instead written with shortcuts that happened to work with the x86 kernel as then implemented was a significant problem of backwards compatibility. But to say that memory above 4GB was not "the intent when they started the NT kernel" is quite a stretch.


So no they didn't lie when they said it wasn't supported, because a vanilla kernel wouldn't support it.

Perhaps it's just that I love (true) vanilla as a flavour, but I have to ask what do you mean by "vanilla kernel" for this point? You can't mean that accommodating PAE as an optional extra can't be done in the one kernel. That there's a separate kernel for PAE is just for better performance: it's an optimisation, not a necessity.


Because all the drivers are still based off the original memory management. Why would you re-write the driver code for something when you can just re-compile it for a new system and fix those bugs?


I imagine you would fix the bugs in the code and then re-compile the code for both systems. If those drivers "based off the original memory management" do not accommodate physical memory above 4GB on an x86 machine, then just recompiling them for an x64 machine is only rarely going to get you a driver that accommodates physical memory above 4GB on an x64 machine.

Remember that PAE does not require any particular coding in any driver. Use of memory above 4GB does. Whether the operating system supports such memory through PAE or through being natively 64-bit is essentially immaterial.

So a lot of legacy code was in both the NT kernel and the drivers, and what does that mean? Buggy PAE, and what does that imply?

I have no idea what relevant code you can dismiss as legacy code in the NT kernel, but let's leave that aside. You ask what's implied by "buggy PAE": not the treatment that Microsoft implemented.

Microsoft's ordinary solution to any feature looking buggy because of bad or old software, whether from Microsoft itself or from third parties, is a configurable setting. It could be something you enable if you have bad or old software, or you disable if you know you don't have bad or old software. Examples exist of both. A configurable setting to limit memory to the first 4GB, and thus prevent any effects from "buggy PAE", has long existed. Its use would have been the easiest solution consistent with Microsoft's explanations of limiting memory in Windows Vista.

I had perhaps better make clear that I'm not advocating PAE. Had there been no PAE code in Windows Vista, I would have nothing to say about it, I expect.
 

My Computer

OS
Windows Vista
Ok what I'm saying is, when XP was started and PAE was implamented they still had a lot of drivers using the 98 code, which didn't have the PAE implamentation. You do know that 90% of code is recycled if it still works. So if the code doesn't implament PAE they usually won't add it to current drivers unless it's new hardware. So that's what happens. And since the original XP code didn't even have PAE (SP2 implamentation) than you don't get it for a lot of the written drivers. 'Vanilla kernel' means original unmodified kernel, it's huge in unix and linux terms as The Linux Kernel Archives releases vanilla kernels. MY bad for being heavy into dev for linux and using those terms that aren't in windows. So next time you say I quoted wrong I didn't, I'm referring to the original plans for XP and Vista..... They re-wrote the driver code for Vista BECAUSE of said problems with XP drivers. Legacy code is ****ty and very poorly documented.

I have a question... Do you code C++? Do you code anything? Do you even know how code development stages go? Do you even know the terms for "vanilla kernel" or the different kernel run levels? Or that really drivers are a part of the kernel, just a module that's loadable/unloadable? So STFU if you are going to say PAE isn't buggy. It's an addition that wasn't planned very well and with 64bit so close it was never even developed very well for the public. So don't start this I quoted **** wrong, 64bit's been around for AGES and they knew this, it just wasn't as publically available. So why would a company even bother with PAE in it's drivers when 64bit exists? That's what most people would say if they made a driver, why? Because it's easier, safer, and is the natural course for 32bit. 32bit WAS NOT DESIGNED FOR MORE THAN 4G!!! PAE is more or less an emulated table for anything larger than 4G, so in all honesty even saying MS lied is still really a lie. Why? Because MS stated that 32bit has a physical limit of 3.5G, which in all honesty is TRUE. If you don't want to believe me then fine, but don't go saying I'm spouting bull****, because if you ran linux you don't even get PAE. A pure32 system cannot support over 3.5G, that's just it. Unix, Cisco, Linux, MAC all have the same limit, why? Because they didn't bother with PAE because they all have 64bit variants naturally, and have been running 64bit systems much smoother than MS, as far as 64bit support.

Oh, I wasn't aware that people still used drivers from the NT 4 generation.

Oh and as for this, you'd be suprised how much code has it's base in Win 3.1... Why? Because as I said earlier a lot of code is recycled. Infact, most code is already written, why would you bother to make something new when you can just use somebody else's work? With so much GPL code out there it's just too much work to make your own. Infact I'm going to guess a lot of Vista/7 code is XP based, just with the new memory management. Why? Why not!
 
Last edited by a moderator:

My Computer

Computer Manufacturer/Model Number
Custom
OS
Windows 7, Linux
CPU
AMD Phemon II x2 3@3750
Motherboard
ASRock M3A770DE
Memory
1G Crucial 1666
Graphics Card(s)
8800GT OC (custom OC)
Sound Card
Sound Blaster Live! (never changes!)
Monitor(s) Displays
Vivitron 22"
Screen Resolution
1600x1200
Hard Drives
Western Digital 120G/160G SATA
Maxtor 80G IDE
PSU
450w
Case
Unknown
Cooling
Custom Air cooled
Keyboard
Logitech
Mouse
Logitech M-BZ15A Laser
Internet Speed
Cable 10mbit
Ok what I'm saying is, when XP was started and PAE was implamented they still had a lot of drivers using the 98 code, which didn't have the PAE implamentation.
What is being said is, you don't implement anything. PAE is something between the OS doing memory management and the CPU.

And since the original XP code didn't even have PAE (SP2 implamentation)
But it was implemented. It was implemented back in the Windows 2000 days. Before XP/SP2, you also had support for memory above 4G.

32bit WAS NOT DESIGNED FOR MORE THAN 4G!!! PAE is more or less an emulated table for anything larger than 4G ... A pure32 system cannot support over 3.5G, that's just it.
I don't think you understand PAE that well.

Oh and as for this, you'd be suprised how much code has it's base in Win 3.1... Why? Because as I said earlier a lot of code is recycled. Infact, most code is already written, why would you bother to make something new when you can just use somebody else's work? With so much GPL code out there it's just too much work to make your own. Infact I'm going to guess a lot of Vista/7 code is XP based, just with the new memory management. Why? Why not!
You cannot expect to take code written for an ancient OS and just recompile to make it run on your new OS.
 

My Computer

OS
Windows
Ok what I'm saying is, when XP was started and PAE was implamented they still had a lot of drivers using the 98 code, which didn't have the PAE implamentation.
[1]What is being said is, you don't implement anything. PAE is something between the OS doing memory management and the CPU.

And since the original XP code didn't even have PAE (SP2 implamentation)
But it was implemented. It was implemented back in the Windows 2000 days. Before XP/SP2, you also had support for memory above 4G.

32bit WAS NOT DESIGNED FOR MORE THAN 4G!!! PAE is more or less an emulated table for anything larger than 4G ... A pure32 system cannot support over 3.5G, that's just it.
[2]I don't think you understand PAE that well.

Oh and as for this, you'd be suprised how much code has it's base in Win 3.1... Why? Because as I said earlier a lot of code is recycled. Infact, most code is already written, why would you bother to make something new when you can just use somebody else's work? With so much GPL code out there it's just too much work to make your own. Infact I'm going to guess a lot of Vista/7 code is XP based, just with the new memory management. Why? Why not!
[3]You cannot expect to take code written for an ancient OS and just recompile to make it run on your new OS.

1st point) PAE and memory management is also part of the kernel, and since the drivers and kernel share memory it is completely relavant.

Writing device drivers in Linux: A brief tutorial

And if you think "well that's not windows" it isn't your right, but windows does do drivers in kernel space. That's why 64bit doesn't allow unsigned drivers, as they could disrupt kernel code and be a huge security risk. And if they are so closely intertwined then I'm guessing they probably need to be very close in memory management.... Which is why PAE is known for BSOD on drivers that weren't written for it. And if you read my 3rd point, MANY companies are scared drivers won't work on a new os....

2nd point) PAE was in the 2000 days? It seems as it only hit 2k pro, and then xp was released and it was only supported in xp sp2 as from the MS site itself.

3rd point) In a 32-bit operating system you'll never be able to address more than 4GB directly. A different addressing scheme may allow you to map more physical memory into that 4GB address space. That's what PAE does. (if this helps you think about how it works). You just cannot address it directly. Or here better yet

Code:
[B]Memory Manager[/B]

                    The memory manager translates virtual memory addresses used  by
 the operating system and applications to actual physical memory  locations. [SIZE=4][B]The 
translation of virtual memory to physical memory is  transparent to the application. [/B][/SIZE]
User mode processes are never able to  directly write to real memory and never 
actually know where their data  resides. A user mode process can request a block 
of memory and write to  it. The data written to the memory location might be 
written to real  memory, or might be written to a paging file. A paging file (also 
known  as a swap file) is a file on the hard disk that the memory manager uses  to
 hold data that does not fit in memory. The memory manager moves data  from the
 paging file to memory as needed and moves data from memory to  the paging file to
 make room for new data.
What Is PAE X86?: System Reliability

Actually, many companies fear a new os will make them re-write a lot of drivers/applications. Maybe that's why no XP drivers work in Vista? =S Or why Vista and XP are not interchangeable for drivers? Yet XP had a vast ability to run many different drivers for multiple machines. It's because it still was using some of the old driver standards, which are now gone in Vista (I think really SP2 changed a lot for XP).

PAE is an addon, it's all virtually addressed so you can "see" more ram, but infact 32bit can't actually see it. It's just an illusion, so when I say it wasn't ment to be, it really wasn't. We just kind of made an ugly way of doing it. Virtuilization. Though if I had said that w/o posting a ms link you'd say I'm retarded.

[edit] And before you go XP drivers will work with compat, yeah but I'm guessing those drivers completely met the newer standards, as the function calls weren't changed (obviously!) but as for XP itself, it didn't fully take on PAE because for consumers.

You really have to think about the market.... You think before Vista MS gave a crap about consumers and 4G of ram? Most of the people who use the "new" hardware is 10% of MS's market, and that 10% is probably reading this because they care about 4G or more of ram. A lot of the market IS letting companies use the same code over and over and over. Look around at most of the corp's, every fast food joint that runs survielance (still can't spell) is probably doing so under a Windows XP platform, using redicously old software.... How do I know this? A good friend of mine works for PEC in Iowa, and he happens to know the software that's run on the vast majority of cameras that they install. Which Paulson Electric isn't what I'd call small... And you know how much buisness MS would loose NOT supporting the drivers for these older cameras? Yeah Vista/Win7 doesn't, but even still SP3 isn't that old and I'm betting it made many companies happy.... This is how I know PAE is ugly, because for older drivers to not work for survielance it'd piss a lot of people off. And they don't want to re-write those drivers, many of the companies that work on the drivers won't update them anyways. So what do you do? MS has to taylor both ways to earn money... If they want to sell copies what do they do? Keep support for older stuff or tell people stfu? You can't always think of things moving ahead, a lot of the internet is running on not so new mainframes.

Example:
http://www.theregister.co.uk/2007/01/05/developing_legacy_systems_part2/

Now if you really want to understand all this good for you, but I personally got annoyed with working on wiring for 20yr old equiptment. =( That's the bottom line though... You, the person who reads this, doesn't matter nearly as much as the corperation with money.
 

My Computer

Computer Manufacturer/Model Number
Custom
OS
Windows 7, Linux
CPU
AMD Phemon II x2 3@3750
Motherboard
ASRock M3A770DE
Memory
1G Crucial 1666
Graphics Card(s)
8800GT OC (custom OC)
Sound Card
Sound Blaster Live! (never changes!)
Monitor(s) Displays
Vivitron 22"
Screen Resolution
1600x1200
Hard Drives
Western Digital 120G/160G SATA
Maxtor 80G IDE
PSU
450w
Case
Unknown
Cooling
Custom Air cooled
Keyboard
Logitech
Mouse
Logitech M-BZ15A Laser
Internet Speed
Cable 10mbit
I know what PAE is. No matter what mode you are running, you have a page table where you map physical memory into your virtual address space. The only difference between PAE and non PAE is the number of physical address bits. The "emulation" you talk about makes no sense.

No driver or application needs to be "PAE" aware. There are just x number of addressing bits.

If a driver is written according to the specs, it does not care where in physical memory it lives. The physical address structure for drivers is always 64bit regardless of what mode you are running in.

You keep saying that PAE only got to XP in SP2. Please check your references. Before SP2 you could get a total of 4GB RAM (usable).
 

My Computer

OS
Windows
Let me ask you this: running a 64bit OS with only 32bit applications, is that also "emulation" of memory?

With the 64bit OS and 32bit apps you have a large physical address space and many smaller virtual address spaces. That gives you a great space to map all your 32bit applications to. If you install 32GB RAM and multitask many 32bit apps, you can do that without hitting the page file.

With a 32bit OS with PAE and 32bit apps: <insert here what I wrote above about the 64bit OS>

Edit: and just so you don't misunderstand: running a 64bit OS and 64bit applications still involves a page table where you "map" physical memory into your virtual address spaces.
 

My Computer

OS
Windows
Let me ask you this: running a 64bit OS with only 32bit applications, is that also "emulation" of memory?

With the 64bit OS and 32bit apps you have a large physical address space and many smaller virtual address spaces. That gives you a great space to map all your 32bit applications to. If you install 32GB RAM and multitask many 32bit apps, you can do that without hitting the page file.

With a 32bit OS with PAE and 32bit apps: <insert here what I wrote above about the 64bit OS>

Edit: and just so you don't misunderstand: running a 64bit OS and 64bit applications still involves a page table where you "map" physical memory into your virtual address spaces.

Though I just have to wonder what this has to do with 32bit not supporting over 4G? I'm not going to argue that 32bit is emulated in 64bit space no, but what your saying just doesn't fit. It's like saying "oh since I can run 64bit apps in a 32bit kernel with emulation than a 32bit cpu was made to handle that?".... WTF No. I know 32bit is emulated in 64, but we aren't arguing that are we?

And about 64bit and memory, but the drivers can directly manage the memory, and the applications can too. Hence why any 32bit application maxes at 3.5G, go check it out. See the max memory any 32bit app can run at a time..... Then check 64bit apps. You'll have your answer.
 

My Computer

Computer Manufacturer/Model Number
Custom
OS
Windows 7, Linux
CPU
AMD Phemon II x2 3@3750
Motherboard
ASRock M3A770DE
Memory
1G Crucial 1666
Graphics Card(s)
8800GT OC (custom OC)
Sound Card
Sound Blaster Live! (never changes!)
Monitor(s) Displays
Vivitron 22"
Screen Resolution
1600x1200
Hard Drives
Western Digital 120G/160G SATA
Maxtor 80G IDE
PSU
450w
Case
Unknown
Cooling
Custom Air cooled
Keyboard
Logitech
Mouse
Logitech M-BZ15A Laser
Internet Speed
Cable 10mbit
Though I just have to wonder what this has to do with 32bit not supporting over 4G? I'm not going to argue that 32bit is emulated in 64bit space no, but what your saying just doesn't fit. It's like saying "oh since I can run 64bit apps in a 32bit kernel with emulation than a 32bit cpu was made to handle that?".... WTF No. I know 32bit is emulated in 64, but we aren't arguing that are we?
You have misunderstood everything I wrote. I am not talking about how 32bit software is executed in a 64bit environment. I am talking about how memory access works (paging).

And about 64bit and memory, but the drivers can directly manage the memory, and the applications can too.
I am not sure what you mean by "directly". Your usage is only valid, if you mean a single 64bit application can use more than 4GB, because of its large VAS.

Hence why any 32bit application maxes at 3.5G, go check it out. See the max memory any 32bit app can run at a time..... Then check 64bit apps. You'll have your answer.
First, the 3.x number doesn't apply to the virtual address space. And that is the space you need to focus on when talking about how much an application can use.

Second, I am debating your "emulation" theory about how memory is used with PAE. Then the size of the VAS doesn't matter.
 

My Computer

OS
Windows
Though I just have to wonder what this has to do with 32bit not supporting over 4G? I'm not going to argue that 32bit is emulated in 64bit space no, but what your saying just doesn't fit. It's like saying "oh since I can run 64bit apps in a 32bit kernel with emulation than a 32bit cpu was made to handle that?".... WTF No. I know 32bit is emulated in 64, but we aren't arguing that are we?
You have misunderstood everything I wrote. I am not talking about how 32bit software is executed in a 64bit environment. I am talking about how memory access works (paging).

And about 64bit and memory, but the drivers can directly manage the memory, and the applications can too.
I am not sure what you mean by "directly". Your usage is only valid, if you mean a single 64bit application can use more than 4GB, because of its large VAS.

Hence why any 32bit application maxes at 3.5G, go check it out. See the max memory any 32bit app can run at a time..... Then check 64bit apps. You'll have your answer.
First, the 3.x number doesn't apply to the virtual address space. And that is the space you need to focus on when talking about how much an application can use.

Second, I am debating your "emulation" theory about how memory is used with PAE. Then the size of the VAS doesn't matter.

It's not the VAS, it's the fact that first they have to do virtual space, the vAS then within that it has to do another layer of virtual space for 32bit apps because they can't see the whole VAS because of the limit. If you didn't do another emulation layer making the 32bit applications think the VAS was only 3.5G you'd have problems. Hence why I say it's another virtual layer. If your in 64bit you only have the one layer, because a 64bit app doesn't need it sectioned into smaller 3.5G layers. Also, in 32bit apps they can't share the same memory, any memory outside the 3.5G section per app can't be seen by another application, though in 64bit that doesn't happen because they don't have the 3.5 limit. It's really just a layer on a layer. It's really wrong to say 32bit can address more than 3.5, because it can't. You can virtually set it up to address more but really your not doing that, it's an illusion as to where 64bit doesn't run into that.

[edit]
Basically once a single app reaches it's 3.5G limit, it can not and will not see anything outside that, as to where 64bit doesn't have that limit. That's the virtualization i'm talking about, because the space is set up that way. So lets say you want 2 applications to directly talk to each other, one is using 20MB the other is using it's limit, 3.5G what happens? The one using the 3.5G won't ever be able to see what that 20mb program is trying to share... Because they are in 2 different virtual spaces.

[side note]

And lets say you have 7G of ram ok? You can't have a program 'live' in the first 3.5G section and the seccond 3.5G section, why? Because if it sections both off in 3.5 incraments for apps to use they can't occupy both areas, you just can't have 2 different ram occupants with the same index. It would be like networking with IP conflicts, NO NO. And yes yes this is how it works.

[more thoughts]
See if you have hacking involved where you have to inject into memory (woah) you can't have the idea of each process having a virtualization of it's memory. If you did that then each app would get its own index (0-xxx) and only the OS would see it's memory and other programs couldn't see it. What does that imply? That would make hacking a LOT harder, as each thread would have it's own memory index. Fortunately that's not true, and there fore we are allowed program x to inject into program Y's memory. It's the same principal as the boot loader for the Xbox360 using the Video drivers graphix to overload the Hyperserver and cause memory addresses to overload. If what your saying is true, and it's all vituralized that wouldn't happen so easy. Now take that into affect that's the difference between PAE and non PAE. Because if a program uses 3.5G it can't see anything else, which would imply that it has used all of 0-xxx indexes.... Which means there are multiple indexes and multiple virtual spaces. THAT's what I'm talking about. As to where you only have one space, one area for physical mem. Does that make more sense?
 
Last edited:

My Computer

Computer Manufacturer/Model Number
Custom
OS
Windows 7, Linux
CPU
AMD Phemon II x2 3@3750
Motherboard
ASRock M3A770DE
Memory
1G Crucial 1666
Graphics Card(s)
8800GT OC (custom OC)
Sound Card
Sound Blaster Live! (never changes!)
Monitor(s) Displays
Vivitron 22"
Screen Resolution
1600x1200
Hard Drives
Western Digital 120G/160G SATA
Maxtor 80G IDE
PSU
450w
Case
Unknown
Cooling
Custom Air cooled
Keyboard
Logitech
Mouse
Logitech M-BZ15A Laser
Internet Speed
Cable 10mbit
This deserves a NEW reply just for this:

OWNED

Why?

Part 3: Memory Protection Technologies

Code:
Code:
         The primary driver compatibility concern is running Physical  Address Extension (PAE) mode on 32-bit systems. PAE mode enables  processors to address greater than 4 gigabytes (GB) of memory. The  primary difference between PAE memory paging and non-PAE memory paging  schemes is the extra level of paging that is required in PAE mode  (3 levels instead of 2).
THERE HAPPY!?!?!?!? There IS another layer of virtualization. BAH HUMBUG

[edit]

Oh and to make this so you understand where I'm comming from. That extra layer is an extra virtualization layer.

So with your logics, if I can boot and run a 64bit os in vmware on my 32bit PC does that mean my PC can boot 64bit linux? Think long and hard about that, because we all know the answer. Just because you make another layer for virtualization doesn't mean something was ment to do what we are doing now with it. Yeah my above post was wrong about memory but I was just using examples, I know each program gets it's own index, then the OS translates that into the index it sees.... But since the OS is using 64bit addressing and the application is using 32bit.... there is another virtualization layer that has to translate that. HAS TO WHAT?

See this:
http://www.boot-land.net/forums/index.php?showtopic=9424
This is what we are doing, because 64bit register's are non-existant on a 32bit machine. So one really can not physically use more than the 32 (36) limit. We are using a 3rd layer, a what!?
 
Last edited:

My Computer

Computer Manufacturer/Model Number
Custom
OS
Windows 7, Linux
CPU
AMD Phemon II x2 3@3750
Motherboard
ASRock M3A770DE
Memory
1G Crucial 1666
Graphics Card(s)
8800GT OC (custom OC)
Sound Card
Sound Blaster Live! (never changes!)
Monitor(s) Displays
Vivitron 22"
Screen Resolution
1600x1200
Hard Drives
Western Digital 120G/160G SATA
Maxtor 80G IDE
PSU
450w
Case
Unknown
Cooling
Custom Air cooled
Keyboard
Logitech
Mouse
Logitech M-BZ15A Laser
Internet Speed
Cable 10mbit
What is it with all the "owned talk"? I could easily shoot everything down you just wrote. Because you have misunderstood all of it. But I wont.

Hence why any 32bit application maxes at 3.5G, go check it out. See the max memory any 32bit app can run at a time..... Then check 64bit apps. You'll have your answer.

It's not the VAS, it's the fact that first they have to do virtual space, the vAS then within that it has to do another layer of virtual space for 32bit apps because they can't see the whole VAS because of the limit. If you didn't do another emulation layer making the 32bit applications think the VAS was only 3.5G you'd have problems. Hence why I say it's another virtual layer. If your in 64bit you only have the one layer, because a 64bit app doesn't need it sectioned into smaller 3.5G layers. Also, in 32bit apps they can't share the same memory, any memory outside the 3.5G section per app can't be seen by another application, though in 64bit that doesn't happen because they don't have the 3.5 limit. It's really just a layer on a layer. It's really wrong to say 32bit can address more than 3.5, because it can't. You can virtually set it up to address more but really your not doing that, it's an illusion as to where 64bit doesn't run into that.

[edit]
Basically once a single app reaches it's 3.5G limit, it can not and will not see anything outside that, as to where 64bit doesn't have that limit. That's the virtualization i'm talking about, because the space is set up that way. So lets say you want 2 applications to directly talk to each other, one is using 20MB the other is using it's limit, 3.5G what happens? The one using the 3.5G won't ever be able to see what that 20mb program is trying to share... Because they are in 2 different virtual spaces.

[side note]

And lets say you have 7G of ram ok? You can't have a program 'live' in the first 3.5G section and the seccond 3.5G section, why? Because if it sections both off in 3.5 incraments for apps to use they can't occupy both areas, you just can't have 2 different ram occupants with the same index. It would be like networking with IP conflicts, NO NO. And yes yes this is how it works.

[more thoughts]
See if you have hacking involved where you have to inject into memory (woah) you can't have the idea of each process having a virtualization of it's memory. If you did that then each app would get its own index (0-xxx) and only the OS would see it's memory and other programs couldn't see it. What does that imply? That would make hacking a LOT harder, as each thread would have it's own memory index. Fortunately that's not true, and there fore we are allowed program x to inject into program Y's memory. It's the same principal as the boot loader for the Xbox360 using the Video drivers graphix to overload the Hyperserver and cause memory addresses to overload. If what your saying is true, and it's all vituralized that wouldn't happen so easy. Now take that into affect that's the difference between PAE and non PAE. Because if a program uses 3.5G it can't see anything else, which would imply that it has used all of 0-xxx indexes.... Which means there are multiple indexes and multiple virtual spaces. THAT's what I'm talking about. As to where you only have one space, one area for physical mem. Does that make more sense?

This deserves a NEW reply just for this:

OWNED

Why?

Part 3: Memory Protection Technologies

Code:
Code:
         The primary driver compatibility concern is running Physical  Address Extension (PAE) mode on 32-bit systems. PAE mode enables  processors to address greater than 4 gigabytes (GB) of memory. The  primary difference between PAE memory paging and non-PAE memory paging  schemes is the extra level of paging that is required in PAE mode  (3 levels instead of 2).
THERE HAPPY!?!?!?!? There IS another layer of virtualization. BAH HUMBUG

[edit]

Oh and to make this so you understand where I'm comming from. That extra layer is an extra virtualization layer.

So with your logics, if I can boot and run a 64bit os in vmware on my 32bit PC does that mean my PC can boot 64bit linux? Think long and hard about that, because we all know the answer. Just because you make another layer for virtualization doesn't mean something was ment to do what we are doing now with it. Yeah my above post was wrong about memory but I was just using examples, I know each program gets it's own index, then the OS translates that into the index it sees.... But since the OS is using 64bit addressing and the application is using 32bit.... there is another virtualization layer that has to translate that. HAS TO WHAT?

See this:
http://www.boot-land.net/forums/index.php?showtopic=9424
This is what we are doing, because 64bit register's are non-existant on a 32bit machine. So one really can not physically use more than the 32 (36) limit. We are using a 3rd layer, a what!?
 
Last edited:

My Computer

OS
Windows
Microsoft doesn't make these decisions in a vacuum. IHVs and device chip vendors have a say over what vendor/hardware specific drivers get into Windows.

I'm pretty sure Microsoft's decision to neuter 36-bit PAE support on 32-bit client SKUs was because it gave hardware vendors a choice: spend the money and resources to fully test all your current in-box drivers for compatibility (including those for end-of-life or legacy hardware that you no longer support) with 36-bit PAE and fix the bugs, or don't and we'll just pull support for 36-bit PAE.
 

My Computer

OS
Windows XP
Back
Top