In this article, the author states that a 64bit processor can theoretically reference 2^64 bytes of memory. What does he mean by this statement, or rather the word, reference?

Also, I visualize the entire RAM to be divided into little memory cells, each having an n-bit binary number that represents a given instruction or value that is needed for running any program in the computer. Is this visualization right?

If it is, then for a 64bit processor, what would be the number of memory cells in the RAM?


No, the author is wrong.

I have used 32 bit processors that could address 64 GB of RAM. Memory is restricted by the number of address lines, multiplied by the number of bytes addressed by each individual value of address lines.

Address space of one application was limited to 4GB, but you could have a dozen applications running at the same time, each using several GB.

The author also seems to be quite ignorant of what processors and operating systems exist.

  • $\begingroup$ So what does the 32 in a "32bit processor" mean? $\endgroup$ – noorav Apr 25 '19 at 13:50
  • $\begingroup$ It means “32”. Beyond that, things are complicated. Processor designers don’t feel restricted by arbitrary rules. $\endgroup$ – gnasher729 Apr 25 '19 at 13:53
  • $\begingroup$ 32 what? It must have some meaning else they wouldn't put the 32 right. I'm new to this topic so I'd really like to get my fundamentals right $\endgroup$ – noorav Apr 25 '19 at 14:00
  • $\begingroup$ What I said. It means 32, and then it gets complicated. $\endgroup$ – gnasher729 Apr 25 '19 at 14:55
  • $\begingroup$ I'm sorry, but I'm not satisfied with the "just 32" answer. Could you explain the complicated part in a somewhat simple, yet understandable fashion? $\endgroup$ – noorav Apr 25 '19 at 15:00

First of all, the physical memory chips are no different between a 32 and 64 bit computer.

The article talks about how the processor can reference (or address) the memory. In all modern architectures memory is byte-addressable, which means that every byte-sized memory cell has a number (its address), which the CPU uses to identify that cell. A simple 32 bit processor has 32 bit registers, and a 32 bit number can range from 0 to 4 billion, so it can address 4 GB of memory. A 64 bit number ranges up to 18 quintillion something, or 16 exabyte.

As gnasher states, actual processors do not necessarily match simple models, and most x86 32 bit processors had extensions to address more than 4 GB of memory. However older models without these extensions can literally not use more than 4 GB of memory. If you would be able to put in more memory, these processors would not be able to see it.

That does not mean that the article is entirely wrong, but to see that you need to distinguish between virtual memory and physical memory. Virtual memory is the memory that one program sees, physical memory is the memory that is physically installed in your system, and that only the operating system can access directly. The addressing extensions for 32 bit processors (PAE) only apply to physical memory. A single 32-bit program can only access 4 GB virtual memory, while a single 64-bit program can access a lot more.

The article also mentions the advantage of 64 bit multi core processors, but that doesn't have anything to do with the 64-bit-ness, multi core 32 bit processors also exist. That 64 bit and multi core were introduced around the same period was because both are ways to make use of the ever rising number of transistors that fit on a single chip, which was becoming more than was useful for a single core.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.