Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I just started learning assembly.

My laptop specification says:

Microprocessor: Intel Core Duo processor T2300

Microprocessor Cache: 2MB L2 Cache

Memory Max: 2048MB

Memory: 1024MB 667MHz DDR2 System Memory (2 Dimm)

"Intel Core Duo processor T2300" specification says:

instruction Set : 32-bit

I think now I can assume that the data bus is also at least 32 bit. So minimum addressable memory should be 4GB.

Moreover CPU specification also mention the Memory Specifications

Physical Address Extensions 32-bit

which as I understand means it can address 64GB of memory

Would that mean that, given only 2 memory slots on motherboard, my laptop can support 2x 2GB memory sticks == (4GB) memory?

I guess the laptop guys assumed that there won't be 2GB sticks, so they might have mentioned Memory Max: 2048MB

share|improve this question

migrated from Dec 27 '09 at 13:42

This question came from our site for professional and enthusiast programmers.

Addressable memory for a 32-bit system is 4GB, physical memory is whatever's installed. Your operating system manages the later to give running programs the illusion of the former. Its a good deal more complicated than that, but that's the gist of it.

PAE increases the amount of physical memory that a machine can use, not the addressable memory. Pointers remain 32-bit, so addressable memory is still restricted to 4GB.

Memory capacity on a machine is dictated by more than just what the CPU is capable of. Don't assume your machine can support 4GB.

share|improve this answer
This answer ignores the fact that there are virtual addresses and physical addresses, and the question clearly is referring to physical addresses. – Ben Voigt Jul 22 '12 at 4:16
@Ben If you're not using AWE, all addresses are virtual (there might be some kernel exceptions outside of boot, but in user-mode that's definitely true). Besides, I distinguish between the two in the first line of my answer; and point out that more than just your CPU and RAM slots dictate what's actually addressable in the last line (kernel/user-mode divide being the big one; but motherboard would get in the way too). – Kevin Montrose Jul 22 '12 at 4:55
@KevinMontrose What you're calling "addressable" memory should rather be called "virtual". And even if you're using AWE, the addresses you use in your program are still virtual and their range is still limited to the user mode virtual address space. – Jamie Hanrahan Nov 6 '15 at 6:12

There are many factors beyond the memory address space that controls how much memory a computer can address. For instance, my wife's Mac Book PRo can only support 3GB, and if you put two 2GB memory sticks, it still only addresses 3GB of it.

By the way, 32 bits means the chip can theoretically address 4GB of memory. Where did you ge that 64GB number?

share|improve this answer

There are a number of factors in play here. With a 32 bit architecture the OS is be able to address 4 GB of memory. However, all of this may not be available for applications. For instance a Windows machine with 4 GB of memory will usually not be able to use more than roughly 3,5 GB for OS and applications as some of the address space is used to map hardware.

Also, Windows splits the 32 bit memory address space into two: 2 GB for kernel memory used by the OS and 2 GB for user space applications. I.e. per default each application will only be able to access 2 GB of memory. Windows can be configured to use 1 GB for kernel and 3 GB for user.

On top of that the actual hardware may set certain limitations. When your laptop specification says maximum memory is 2 GB it is most likely because that is the maximum the motherboard will support. It doesn't matter how much the OS is able to address. If the hardware will only recognize 2 GB then that is the limit on physical memory for the machine.

share|improve this answer
The 32-bit address space that Windows splits into two 2 GB regions is the virtual address space. This has utterly nothing to do with how much RAM the OS can address. – Jamie Hanrahan Nov 6 '15 at 6:09

No, I completely disagree - a 32-bit processor does not mean that the addressable memory is 4GB. Strictly saying 32-bit processors mean that your ALU size is 32 i.e. it can perform operation on 32 bit data at a time. *note- a 32 bit CPU does not mean the size of the data bus. As your CPU is 32 bit it can manipulate on 32 bit data (which can be an address) so it is faster in operation.

All it depends on is the size of your address bus. If the address bus size is 32 bit it means there are 2^32 location available for your CPU to which it can communicate. The location start from 0H to FFFFFFFF. Imagine that your CPU is 32 bit but your address bus is only 8 bits. How many location are available for your CPU to communicate? There are only 2^8=256 locations available for your CPU to communicate. Since each location is 8 bits=1byte, your CPU can only address up to 256 bytes of memory.

share|improve this answer

You must log in to answer this question.