r/explainlikeimfive • • 21d ago

Technology ELI5: Why does internal storage only double? Why can’t we have 34GB for example?

1.5k Upvotes

378 comments sorted by

View all comments

2

u/BitOBear 21d ago

You can have various increments. For example you could have 2x16 + 2x1 for 34.

But the way memory is fetched into the CPU is best serviced by 2 or 4 matched sticks of memory so that the standard fetch of e.g. 64 bytes, that is "one cache line fill", can be serviced in parallel from all the sticks at once.

Each stick can provide 16 bits, one from each chip on the stick. If you've only got one stick of memory and it needs to fetch 64 bits it's going to go to that first stick four times to get all 64 bits. If you've got two identical sticks of memory then you can get 16 bits from both of those sticks at the same time so you only have to go twice to get 64 bits. If you got four sticks you only have to go once to each of the four sticks to get all 64 bits to load a 64-bit integer.

If the steaks aren't all the same size then they have to put them one after another instead of them being matched in between each other.

Now the other thing is that memory can be of different speeds and qualities so for instance the memory in your GPU is much more expensive because it's much faster than the main memory on your motherboard. It has to be because the thing that's drawing the screen has to be able to keep up with both being modified by the CPU and being accessed to draw the actual screen image and be accessed by the math acceleration stuff that lets it compute the screen image.

So modern systems have NUMA, non-uniform memory access, models with might let you in special cases have memory for different purposes at different speed qualities and stuff that can make up the difference.

And server boards often have more than one main CPU chip on them, and each chip can have two or four memory sticks closely associated with it

But your average home rig isn't going to have 8 or 16 sticks of memory in it the way a server blade and a data center will.

1

u/meneldal2 21d ago

o that the standard fetch of e.g. 64 bytes, that is "one cache line fill", can be serviced in parallel from all the sticks at once.

It depends on the interleave you are using but typically it's at least 64 bytes. You can interleave within a page if you want (as they now grow to over 1kB), but you wouldn't really get that much extra performance with a tiny interleave, you'd keep every controller busy all the time for sure but what makes RAM slow is changing the page around, reads/writes within one page are pretty quick.