3
\$\begingroup\$

I want to understand technical details of limitations of maximum memory size a system / processor can support. Below what I was able to find via web search to date Wiki:

Modern 64-bit processors such as designs from ARM, Intel or AMD are typically limited to supporting fewer than 64 bits for RAM addresses. They commonly implement from 40 to 52 physical address bits13 (supporting from 1 TB to 4 PB of RAM). Like previous architectures described here, some of these are designed to support higher limits of RAM addressing as technology improves. In both Intel64 and AMD64, the 52-bit physical address limit is defined in the architecture specifications (4 PB).

Crucial site, understanding-cpu-limitations-with-memory talks about speed only, point to Intel site. But as far as I know, info e.g. i7 tells 32Gb because at time of creating the processor only 16Gb modules was available, meaning it supports 2 modules only (2 modules is my guess now, wiki quote above talks about bits).

I'm only starting to understand technical details how memory works, like ranks. What exactly prevents all modern e.g. Intel processors to claim to being able to address as least 1Tb (per wiki above)?

Is the reason same for ARM in smartphones? E.g. 875:

Max size 24 GB

For ARM I have no experience changing amount of memory as all my devices had SoC, though I recently found ARM should have systems with modules, as web search indicate (e.g. https://www.anandtech.com/show/13635/apacer-launches-32bit-sodimm-for-arm-risc-v-systems).

\$\endgroup\$
2
  • 1
    \$\begingroup\$ @DKNguyen. why do you claim they are wrong? Not 40 bits (cause 40 bits is ~ 1TB)? Can you provide a link to support that? P.S. I've fixed the title. \$\endgroup\$ Commented Nov 21, 2021 at 4:10
  • 1
    \$\begingroup\$ Oh wait, I forgot that each byte has an address, not each bit. So a 40-bit address can address 2^40 bytes in which case it really is 1TB, \$\endgroup\$
    – DKNguyen
    Commented Nov 21, 2021 at 4:19

2 Answers 2

6
\$\begingroup\$

Your quote from Wikipedia is referring to physical address space, the size of all memory addresses available to the processor. It is just the sum of all addresses that can fit into physical memory space. However, not all physical memory is RAM. PCIe devices like GPUs, flash storage, etc also occupy physical memory addresses which are used to communicate with them or copy data to/from them. For this reason the physical memory address space should always be larger than the largest possible amount of RAM in the system. If it isn't you end up with situations where not all hardware can be installed at the same time or not all memory can be accessed, as actually happened in the old days of 32 bit x86.

So clearly if your system is well designed, a 40 bit address space does not imply that you can actually have 2^40 bytes of RAM. If it did you would lose access to your PCIe and other hardware. What actually limits your available RAM then? The memory controller on your CPU has to actually be able to map physical addresses to unique cells of RAM. There is a practical limit to how much memory it can actually access. Individual DIMMs have a maximum size set by the specification, and the memory controller itself has a maximum number of memory channels.

For example, a 10th generation Intel Comet Lake processor supports up to 4 DIMMs, with a maximum size of 64 GB per the DDR4 spec. Thus the maximum possible capacity is 256 GB (although Intel says only 128 GB so perhaps 64GB DIMMs are not actually supported). The remaining physical address space can still be used by other hardware, just not by the memory controller.

\$\endgroup\$
17
  • 1
    \$\begingroup\$ @Martian2020 In this particular processor there are 2 memory channels and up to 4 DIMMs, so pairs of DIMMs share wiring. But yes, the CPU is connected to memory via a memory controller which maps physical addresses to cells in the DRAM. \$\endgroup\$ Commented Nov 21, 2021 at 4:21
  • 1
    \$\begingroup\$ It is both the package and inside the package. That's why I said "and" (I meant for it to chain onto your previous comment about the BGA.) \$\endgroup\$
    – DKNguyen
    Commented Nov 21, 2021 at 4:23
  • 1
    \$\begingroup\$ @Martian2020 You're limited by what the memory controller supports. Intel will sell you processors that support 16 DIMMs, but they cost more. \$\endgroup\$ Commented Nov 21, 2021 at 4:44
  • 1
    \$\begingroup\$ @Martian2020, you can only share a single memory channel between two DIMMs because of signal integrity (for the most part), and memory clock frequency is limited by distance to the furthest IC. \$\endgroup\$ Commented Nov 21, 2021 at 4:45
  • 1
    \$\begingroup\$ @Martian2020, the DIMMs in a channel are connected in parallel on the data and address/control lines, but receive separate Chip Select and Clock Enable signals. From a digital logic perspective, this could be scaled to more DIMMs, but this degrades signal quality to a point where you have to reduce clock frequency, so the problem is on the analog side. \$\endgroup\$ Commented Nov 21, 2021 at 5:05
1
\$\begingroup\$

Supporting more memory isn't free. It requires supporting more addresses which requires more circuitry which requires more space on the die and more pins on the package which will probably lead to a bigger package which decreases yield and increases cost. Why do it if you don't need it?

\$\endgroup\$
6
  • \$\begingroup\$ can you provide details? cause most of processors have less then 40 bits? If so, please add links to examples of (preferably) Intel i7 spec sheets something. \$\endgroup\$ Commented Nov 21, 2021 at 4:13
  • \$\begingroup\$ Thank you for correcting my English :-) When I'm typing quickly I sometimes become less accurate than usual. (than and then is my particular problem, know of some rule to tell when to use e or a?) \$\endgroup\$ Commented Nov 21, 2021 at 4:27
  • \$\begingroup\$ I know the meaning difference, I forget when to put e or a. \$\endgroup\$ Commented Nov 21, 2021 at 4:31
  • \$\begingroup\$ Whoops. Made a mistake in my post. Here it is again: "Cause" is a different word than "because". When you speak orally to say "because" you actually are speaking 'cause, with the apostrophe. It's not something that needs spec sheets. The question is very similar to asking "why isn't every car built to be the maximum size that would still allow it to be street legal?" \$\endgroup\$
    – DKNguyen
    Commented Nov 21, 2021 at 4:31
  • 2
    \$\begingroup\$ Than is only used for comparisons. Then is used the rest of the time. So only use the 'a' if you are comparing something. Use 'e' the rest of the time. \$\endgroup\$
    – DKNguyen
    Commented Nov 21, 2021 at 4:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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