I have 64 GB of RAM, specifically this model (I think): https://www.gskill.com/specification/165/396/1731653269/F5-6000J2836G32GX2-FX5-Specification fortunately purchased just before RAM prices went insane.
Last night, I ran memtest86+ and noticed it showed I have "61.6GB" of RAM. This is 2.4 GB less than the stated 64 GB. I know that storage sizes are specified in GB (1000³B) instead of GiB (1024³B), so it wouldn't have shocked me if RAM is the same, but this actually doesn't explain it: 64 GB makes 59.6 GiB, so if that was it then I got 2 GiB extra, which makes no sense.
To be clear, I'm not complaining and there's no issue to fix, I just want to understand where the numbers are coming from.
My friend has 96 gigs of RAM, and for him Windows reports 93.6 GB, which is also 2.4 GB less than stated, same as me! So it seems more likely right now that RAM is actually measured and marketed in GiBs, and the same effect is causing both of us to "lose" 2.4 GB. But what effect is it?
It gets weirder.
In the FAQ of memtest, there's this:
Why is Memtest86+ testing more memory than I have?
It doesn't. The memory on a modern computer is not necessarily mapped in a linear way. E.g.: 16GB of RAM can be virtually mapped from 0-15GB and 16-17GB with a hole between 15GB and 16GB.
Which I thought might be related, so to get to the bottom of it I tracked which regions of memory it tests. This is what it showed:
- 4MB - 1GB (1020MB)
- 1GB - 2GB (1GB)
- 2GB - 2.4GB (416 MB)
- 4GB - 5GB (1GB)
- 5GB - 6GB (1GB)
- ... more 1GB regions with no gaps ...
- 62GB - 63GB (1GB)
- 63GB - 63.4GB (478MB)
Summing them all up gives a total of 60GiB + 1914MiB = 61GiB + 890MiB = 61.87GiB if my math is right, so it doesn't even match the 61.6 figure it reports!
... What's going on? WHERE ARE THE NUMBERS COMING FROM?!
If there's a better community for this, let me know and I'll cross-post it there.
I do Computer Science, so I know these things!
Essentially, nearly all computers are based on binary (base 2), which is why you see a lot of powers of two when talking about processors, memory, and that sort. However, our standard SI units use base 10. 1000 grams is a kilogram, 1000 metres is a kilometre, etc. So when creating a standard unit for memory, kilobytes, megabytes, etc. base 10 was used. KB, MB, GB, TB, etc. are all SI units. However, the IEC standard was later created that utilised base 2 instead. So KiB, MiB, GiB, TiB, etc. are all IEC units where 1024 bytes is equal to one kibibyte, "bi" for binary!
But as you said, this is probably not the issue. RAM usually uses IEC units, while storage advertises SI units. Some of your memory might be reserved for system level stuff and/or the iGPU. My laptop (running EndeavourOS, so the units properly show up as IEC units unlike on Windows), for instance, shows up as 15.2 GiB of total memory, presumably because some of it is reserved for the iGPU and other bits.
Some BIOSes have a setting for how much shared graphics memory is allocated, with such helpful values as Auto, Gaming and Performance.
It is possible for me to max out this 15.2 GiB of free memory when I had a weird widget that had memory issues, but the reserved bits are inaccessible, as after the 15.2 GiB runs out, CRASH!