Tuesday, April 21, 2015

memory - Why is the amount of RAM usable by a computer limited by the processor bits?


I was recently thinking about how 32-bit processors can only support up to 4 GBs of memory, and I couldn't understand why the amount of bits a processor has limits its memory. I understand, as other questions on here state, that a binary number with 32 digits can only address up to 4 GB. But why can't a computer use two variables to reference memory, and effectively 'act' like it's 64 bit (kinda like how 32-bit processors can use 64-bit integers)?


Is that possible and would it reduce performance? If it would reduce performance, what if the operating system used the 'fake' 64-bit memory references with certain programs, rather than system-wide?


Answer



Wikipedia's article on PAE: "The original releases of Windows XP and Windows XP SP1 used PAE mode to allow RAM to extend beyond the 4 GB address limit. However, it led to compatibility problems with 3rd party drivers which led Microsoft to remove this capability in Windows XP Service Pack 2." Some "versions of 32-bit Windows (Windows XP SP2 and later, Windows Vista, Windows 7) limit physical address space to the first 4 GB for driver compatibility via the licensing limitation mechanism". "Microsoft Windows supports PAE if booted with the appropriate option, but according to Geoff Chappell, Microsoft may limit 32-bit versions of Windows to 4 GB as a matter of its licensing policy."


Blog attributed to Mark Russinov "32-bit Windows will continue to ignore memory above it because there is still some difficult to measure risk, and OEMs are (or at least should be) moving to 64-bit Windows where it's not an issue."


Windows 2000 DataCenter 32-bit supported up to 32GB, and newer versions up to 64GB.


Later on, the Wikipedia article discusses FreeBSD and says, "Not all drivers support more than 4 GB of physical memory; those drivers won't work correctly on a system with PAE." So the issue of driver compatibility has plagued more than Microsoft Windows.


So, in conclusion, there is no technical reason why it would be absolutely impossible for software to refer to more than 32 bits of address space. Advancements/workarounds, like what you theorize, could exist, but such support has not been widely deployed, apparently due to compatibility and concerns of stability.


No comments:

Post a Comment

linux - How to SSH to ec2 instance in VPC private subnet via NAT server

I have created a VPC in aws with a public subnet and a private subnet. The private subnet does not have direct access to external network. S...