Memory 32-bit limit ?

dennky

Distinguished
Dec 17, 2009
1
0
18,510
Hi all,
i know that 32bit system support 3GB of memory but don't know why? If someone can to give me links or whatever to understand why so.
 
An OS reads/writes data by reading strings of bits, and the number of consecutive bits that is read by the OS is the limit to how much storage (memory) an OS can address at any one time. [An OS refers to memory by location, so each location must have a unique numbered value. What locations are in use by the OS, and what data is stored at those locations, are placed into an Address Table].

However, there are only so many unique combinations that can be obtained by a string of 32-bit values. [EG: 00000000000000000000000000000000, 00000000000000000000000000000001, 00000000000000000000000000000010, 00000000000000000000000000000011, 00000000000000000000000000000100, 00000000000000000000000000000101, 00000000000000000000000000000111, etc] That numerical limit an OS can count to can be expressed as:

X^n

Where X is the number of combinations for a bit value (0 or 1, so X would always be 2 in this case), and n refers to the number of conecutive bits an OS reads (typically 32 or 64).

As such, a 32-bit OS can read exactly 2^32, or 4,294,967,296 unique memory locations (0 through 4,294,967,295), or 4GB. In otherwords, using a 32-bit string of numbers, there are exactly 4,294,967,296 possible unique combinations of 0 or 1 values.

The reason why a 3GB is incorrectly attributed as the 32bit is because certain HW (motherboard, GPU, etc) eat up RAM before any windows processes even load, which takes a chunk out of the 4GB limit.

There are other ways to expand the limit besides moving to a higher bit OS; PAE is a mechanism which uses multiple address tables (which are used to keep count of what memory locations are currently in use, and what they hold). As more tables are used, each additonal table adds another 4GB of usable RAM (PAE maxes out at 36-bits, or 64GB), but because the size of an individual table is still 4GB, and because no single process can occupy more then one table at a time, even though 64GB total can be used, no single process can use more then the total space of a single address table (4GB) at any one time, so PAE is an inferior mechanism compared to a higher bit OS.
 
In a computer all bytes in the memory system need a unique name. This is called an address. For example, if you have 2 GB of main memory, then there are 2147483648 bytes of RAM in your machine, each of which require an address for the operating system to communicate to it. To give these all an address you need 31 bits to do it. Now, if/when you have 32 bits, you can name 4 GB (2 bytes to the 32nd power = 4GB).

This is why the total addressable space available in a 32 bit OS is 4GB – the OS runs out of addresses and cannot communicate/locate any more bytes of memory because of that.

You may think ”Hey, 4GB of address space… 4GB of RAM… What’s the problem” The problem is that memory isn’t the only thing needing an address. If you install a total of 4GB worth of RAM, the system will detect/use/display less than 4GB of total memory because of address space allocation for other critical functions, such as:

- System BIOS (including motherboard, add-on cards, etc..)
- Motherboards resources
- Memory mapped I/O
- Configuration for AGP/PCI-Ex/PCI
- Other memory allocations for PCI devices

Different onboard devices and different add-on cards (devices) will result of different total memory size. e.g. more PCI cards installed will require more memory resources, resulting of less memory free for other uses.

This limitation applies to most chipsets & Windows XP/Vista 32-bit version operating systems. Again, this is a limitation of the Operating System not having enough address space to allocate to the system *and* the RAM. Not allocating address space to devices renders them inoperable. Not allocating addresses to RAM simply results in the unaddressed section not being used in an otherwise fully functional computer. Therefore the OS designers assign RAM last.


If you install a Windows operating system, and if more than 3GB memory is required for your system, then the below conditions must be met:

1. A memory controller which supports memory swap functionality is used. The latest chipsets like Intel 975X, 955X, Nvidia NF4 SLI Intel Edition, Nvidia NF4 SLI X16, AMD K8 and newer architectures can support the memory swap function.

2. Installation of Windows XP Pro X64 Ed. (64-bit), Windows Vista 64, or other OS which can provide more than 4GB worth of address space.



Note: Windows Vista 32bit SP1 and newer (Win 7 x86) will display the installed amount of RAM. This is a display change only.