Intel® Moderncode for Parallel Architectures
Support for developing parallel programming applications on Intel® Architecture.

32 bit chip and memory

scottjsn
Beginner
1,064 Views
For intel 32 bit chip (CPU), the max. memory it can allocate is 4 GB.
1) Does this mean one/single 32 bit CPU restricted to 4 GB?
2) If YES to 1), can I say thatfor a server withtwo 32 bit CPUs, the max. memory can be allocated will become 2 x 4 GB (or 8 GB)?
3) If still aYES to 2), can I use a formula
Max. memory (GB) = Number of CPU x 4 GB
Thanks to help.
0 Kudos
11 Replies
TimP
Honored Contributor III
1,064 Views
On a multiple CPU shared memory system, the way to overcome the 4GB addressing limit of 32-bit IA CPUs is with the PAE mode (awkward), or by "64-bit" addressing. That's a reason why 64-bit CPUs are the only ones available now for such systems.
0 Kudos
ClayB
New Contributor I
1,064 Views

Scott -

In general, "Yes" to 1, and "No" to 2 and 3. The memory on a multi-processor platform will be shared. Thus, the 4GB addressed by the first processor will be the same 4GB addressed by the second, third and fourth processor. (I'm not sure what the PAE mode does or how it works.)

Use separate platforms connected through a network to get separately addressed memory between multiple processors.

--clay
0 Kudos
scottjsn
Beginner
1,064 Views

Thank youall for the responses.

Assume a server with 4 (32 bit) CPUs, and total of 16 GB of RAM installed.

1) Can EACH of the 4 CPUs allocate up to 4 GB RAM?

2) If NO to 1), will all 4 CPUs actually share the 4 GB RAM (no more)?

3) If YES to 1), can each ofthe 4 CPUsuse its own 4 GB memory space without "intruding/overlapping" others?

4) Will the total memory space for the 4 CPUs, still be restricted to 4 GB, regardless how much memory installed?

Thanks.

0 Kudos
scottjsn
Beginner
1,064 Views

Thank you all for the responses.

I like to further confirm that, for a server with 4 CPUs and 16 GB of RAM,

1)The total memory space for the 4 CPUs will still be restricted to 4 GB (the same, shared 4 GB RAM), regardless how much memory installed. --Correct?

2) "Use separate platforms connected through a network to get separately addressed memory between multiple processors"

--Could you explain this statement in detail ( How to actually get it done)?

Thanks to help.

0 Kudos
TimP
Honored Contributor III
1,064 Views
Yes, the CPUs which share memory all see the same address space. The extra RAM is wasted, in basic 32-bit operation.
If you use multiple nodes in an MPI cluster (typically 2 single-threaded CPUs per node, for 32-bit), each node has its own address space.
0 Kudos
scottjsn
Beginner
1,064 Views

Thanks for the help.

Now back to memory 101. For a 32 bit CPU based system, before I install a software, such as Oracle Database, it requires 1 GB of RAM; or Application Server, it requires 1 GB of RAM; or another software, it requires 512 MB of RAM, another for 1 GB, another for 1 GB,...

Here is my understanding of the memory requirement: even if I have only 1 GB of RAM installed, it will satisfy the requirement, regardless how much memory requirement the other softwares need. If one program need 1 GB, the other need 1 GB, etc. The system will swap to meet the memory requirement. It will not do an arithmetic such 1 GB + 1 GB + + 512 MB + ... = total RAM needed?

--Is the above understanding correct? Please make a comment or correction on it.


Thanks

Message Edited by scottjsn on 01-04-2006 11:16 AM

0 Kudos
TimP
Honored Contributor III
1,064 Views
What you say is true of ordinary applications. For fancy applications like Oracle, it is possible that they lock certain regions of memory, in order to provide satisfactory performance. They may also use the PAE feature on 32-bit systems. You would have to consult their documentation.
0 Kudos
scottjsn
Beginner
1,064 Views
Many thanks for the response in this thread. They are very helpful indeed. --scott
0 Kudos
scottjsn
Beginner
1,064 Views

Just one thing comes into my mind about the relationship between the operating system such as the Linux or Windows 2003 and the memory.

1) For a server with a 32 bit CPU (at normal mode), the max. RAM can allocate is 4 GB (--this is understood). Does it matter what operating system the server runs on?

2) I learnt that some Linux OS can support up to 16 GB of RAM. But if on a 32 bit CPU, it still subjects to the upper limit of the 4 GB, which is the barrier, regardless which operating system to use. --Is this a correct understanding?

3) Someone ever said something like: an operating system (such as Windows 2003 enterprises edition)can map/allocate more than 4 GB RAM (under 32 bit CPU). Based on the recent information, I seriously doubt it.

Thanks to share your comment, opinion, and suggestion.

Scott

0 Kudos
TimP
Honored Contributor III
1,064 Views
Linux kernel can be built so as to make use of PAE to access up to 64GB in 32-bit build, but this has been made obsolete by the availability of more efficient x86-64 64-bit linux. An individual 32-bit application, with portable source code, would be restricted to a 4GB (or less) segment, and would not perform as well with the 64GB kernel as with the 4GB kernel. Likewise, Windows Server 2003 32-bit has support for PAE to use more than 4GB RAM, usually when running multiple applications. There also, only a few applications heavily optimized for PAE can address more RAM with the performance easily obtained under the x64 version of the same OS. Individual applications without specific PAE support would not see any advantage from the extra features (and price) of 2003 Server.
There are differences in addressable memory of ordinary applications under Windows and linux, but no good generalizations can be drawn. Under 32-bit linux, shared libraries begin loading at the 1GB mark, leaving only 1GB of contiguous space to the application. 32-bit Windows also has the OS taking space below the 2GB mark, a great deal of it in the case of XP SP2. When XP is booted with the special /3GB switch, the space between the 2GB and 3GB marks is available to applications specifically built to use it.
0 Kudos
scottjsn
Beginner
1,064 Views

Thanks for the help. If I understand it correctly, for a system with 32 bit CPU chip and an operating system like Linux, the RAM barrier is still the 4 GB. --Correct?

To use the PAE, it will not happen automatically (i.e., the Linux willNOT automatically map more than 4 GB as needed)--one has to specifically configure the Linux, modify the kernal, or something else? If this is true, then to map more than 4 GB RAM under the 32 bit CPU is more complex, not something to take for granted (may need the expert level skill).-- Is this a correct understanding?

Also, many thanks for the detailed response to my tedious questions. Much appreciation.

Scott

0 Kudos
Reply