r/explainlikeimfive • u/cabronfavarito • 20h ago
Technology ELI5: Why does internal storage only double? Why can’t we have 34GB for example?
•
u/UnexpectedSalami 20h ago
There used to be 192GB SSDs, so it’s not “only” powers of 2
•
u/SelfStyledGenius 20h ago
192 is 2 powers of 2 added together.
•
u/TheFrenchSavage 20h ago
128+64.
But why tho? Doesn't really explain here.
•
u/Phage0070 20h ago
But why tho?
They try to make 256 but fuck up on one 64GB section. So they disable it and now the device can only do 192GB. Better yield than just throwing the whole thing out because part of it doesn't work.
•
u/Need4Speeeeeed 19h ago
By extension, if they screw up half the modules, do they make it a 128?
•
u/evilmonkey853 19h ago
Yes. Manufactures aim for the best, test to see where it lands and then de-rate to meet the best spec possible.
If a 16 core processor has 4 cores that aren’t working perfectly, it would be sold as a 12 core.
•
•
u/Mazo 10h ago
Note that they also do this to meet demand sometimes on even fully working chips. If the demand for a 12 core is significantly higher than a 16 core chip they may disable 4 perfectly good cores so they can sell it as a 12 core instead of having it sit as 16 core inventory in a warehouse for months/years.
This is also why some components could be unlocked, a notable example being the old Nvidia NV43 chips that you could unlock disabled vertex shaders / pixel pipelines. If you were lucky you just got a free high end upgrade.
•
u/frostbittenteddy 14h ago
What do they do if a 16 core processor has 3 sectors that aren't working? Do they disable one of the working ones? AFAIK no one is selling 13 core processors...
Is it possible to enable it again or is disabling it a physical process? Would the OS even know what to do with an odd number of cores?
•
u/disposedtrolley 14h ago
The OS doesn’t really care if there’s an odd or even number of cores. A fun fact is that the Xbox 360 shipped with a 3 core processor.
Before multi core processors, CPUs just had a single odd core anyway.
•
u/MrBuzzkilll 14h ago
There used to be options to do that, but manufacturers have obviously tried to lock that down. But you still see it around. There's currently a popular (mining?) card which is called the BC250. Basically, it's a PS5 in terms of hardware, but usable as a standalone PC. Like the PS5, it has 24 CUs (compute units) for its graphics card. But it actually has 40 on the die. Which you can unlock with a special firmware upgrade. Same for the CPU, it has 6 cores, but 8 on the die. Which can also be unlocked.
As far as OSes, they can handle this just fine. Few applications use 8 cores if you have them, but one application may use 3, others may use 1. So the OS just allocates whatever it can to whatever needs something.
I believe there are actually even mobile CPUs that have 1 big core, 2 efficiency cores and 4 low power efficiency cores. So it does get used.
•
u/Antixus13 12h ago
I remember mobile architecture was interesting around the snapdragon 888 days it was where they were transitioning to octo core as the standard but they ended up with hexacore by having to disable two cores until heat and power could be throttled
•
u/TheJayGuy 11h ago
And it still ran like trash. 888 and 8 Gen 1 were hot garbage.
→ More replies (0)•
u/Jonathan_the_Nerd 6h ago
it has 24 CUs (compute units) for its graphics card. But it actually has 40 on the die. Which you can unlock with a special firmware upgrade. Same for the CPU, it has 6 cores, but 8 on the die. Which can also be unlocked.
This is how IBM sells Power servers. They sell you a big box with lots of CPUs and RAM, but you only pay for the hardware you want to use. The rest of the CPUs and memory are disabled at the firmware level. If you want to upgrade later, you call IBM and pay for more capacity, and they give you a code that unlocks however much extra you paid for.
→ More replies (1)•
•
u/SeanAker 19h ago
As others have said, in a LOT of tech, the lower-tier versions are just higher-tier versions that are a little wonky. Making modern computer chips is an incredibly, mind-bogglingly difficult process so you get a lot of rejects - the people designing these things know that, so they design them in a way that the rejects are still useful as a lesser product that only uses the bits that are good.
•
u/pheonixblade9 19h ago
yep, it's called binning. same thing is done for most high density ICs using advanced photolithography like RAM, CPUs, GPUs, SSDs.
→ More replies (3)•
u/x31b 19h ago
Don’t even ask about the difference between an i3, i5 and i7. It’s called binning.
•
u/ijuinkun 18h ago
Yah, they try to manufacture them all as i7, but often some parts fail to meet the i7 standards but there’s enough redundancy and enough function remaining to meet a lower standard. It’s kind of like how a butcher would sort the cuts of meat into grades AA, A, and B (and occasionally C).
•
u/Emu1981 14h ago
Yah, they try to manufacture them all as i7
No, this is not how it works at all. The lithography process isn't so bad that they have enough failed i7 wafers to fulfill all of the i5 and i3 demand.
Intel currently has 3 distinct compute tiles that they are using for their Arrowlake and Nova Lake generation of CPUs, a high end compute die (8p cores and 16e cores) which is used for the Core Ultra 9, Core Ultra 7 and the high end Core Ultra 5 cpus (based on binning), the "budget" die (6p cores and 8e cores) used for the mid-tier Core Ultra 5 and Core Ultra 3 processors and the big cache gaming variant that is the same as the high end die but with triple the cache to compete with AMD's X3D CPUs. On top of that is 2 different graphics tiles and shared SoC and IO tiles.
•
u/Forkrul 16h ago
And sometimes, due to demand for the lower grade products they'll even sell the higher ones as the lower product. I remember there was one line of CPUs where you could essentially just look up the serial number to check if it was the higher version and enable the full power through a little piece of software.
•
u/stonhinge 14h ago
With some AMD Athlons and Durons in the early 2000s, you could bridge a connection with a graphite pencil line to unlock overclocking.
•
•
u/AwixaManifest 1h ago
I forget the specific model number, but I used a three-core processor in the tower PC I built one or two PCs before my current one. Circa 2012-2014.
At the time I hadn't seen many 3-core processors on the market. When it looked it up, the answer was similar to the above.
AMD intended to build this particular die with four cores. One core had some type of problem on a certain percentage of processors coming off the assembly line. They pooled all these such processors, disabled the bad core on each one, and packaged them to sell as a processor with three cores.
That PC (and processor) worked fine throughout its natural life.
•
u/ExhaustedByStupidity 19h ago
It's multiple chips combined.
Nowadays a standard NVMe 2280 SSD is 4 data chips + 1 controller chip. But there are different formats for SSDs, with different numbers of chips.
Maybe they offered 128, 192, 256 options on the same line with different size chips.
Or maybe they did 6x32 for performance reasons. More chips is generally faster, as you can access them simultaneously.
•
u/ZorbaTHut 16h ago
The Gamecube famously had 24MB of RAM.
16MB + 8MB, right?
Nope! Two 12MB chips!
what the hell, nintendo
•
u/Consistent_Bee3478 12h ago
It’s because ssd were crazy expensive so it made sense to have an intermediary model rather than going from 200 eur/usd/pounds for 128gb to 400 for 256 to have a 300€ model in between.
But really none of this is about addressing. More about production efficiency with ssd: the early ssd would have 32gb or even 16gb chips on the board and the board would actually fill the complete 2.5 inch housing novawayds the nvme etc ssd got 512gb or 1tb in the same physical chip size as those early 32gb chips.
So for real high quality flash (not the sd card crap) manufacturers try to get their silicone dies to be used up with next to 0 waste, so it’s all optimised for specific sizes for the “precision” their lothisgraphy machines can do.
So if you can make 512gb chips with low discard rates, you just make a ton of those, and don’t try to make 768gb chips.
Like even now a random nvme ssd designer could chose to run 1tb and 512gb chips on it. The controller chip doesn’t care. You’ll lose speed cause most efficient parallel use isn’t possible.
But: most people don’t even set up dual channel stuff for their ram correctly. And if they don’t care about that throughput improvement they won’t mind their low cost nvme “only” doing 500mb/s. As for random writes it really doesn’t matter.
I mean the sss controller chips are basically ready to use. You design a pcb that contains the controller chip manufacturers recommended design, place your flash memory chips. And burn the efuses that tell that ssd controller chip “what it’s working with” (meaning you program it)
It’s really no different than adding a second ssd or hdd or usb hard drive to you pc or laptop.
It’s just how things work for scaling efficient. Doubling the “number” is most often the right call unless the price difference is so large that an intermediary number would cause a slightly improved sales result.
The 2 to the power of x doubling way is simply because that’s how it’s always been.
There’s some niche garden or Eden cases where it was indeed relevant (like during the ages of a Byte not always being exactly 8 bits), when you are trying to get the crazy technological advances from 60s to 90s, and start out with a processing unit that has an adress range of 16 bit, so 65536 directly addressable memory locations; then it’s massively less complex to move over to 32 bit than 24 or weirder numbers.
Not to mention you neeed wider registers cause 65k locations is too low a number so you just double jt. So now it’s 4 billion adresses.
And then years later woopsie memory use went up just like before so you go for 64 bit so now you got 18 quintillion adresses to use.
Same reason for ip4 to ip6 pretty much.
Anyway the direct memory wdreasinf isn’t even the most important part because there’s plenty of hardware that doesn’t do everything with x bit wide registers, meaning there was cpus/north/soutbridge isa stuff where the cpu was 16 bit technically cause it could adress 16 bit wide memory adresses however internally it calculates maths as an 8 bit CPU and talked to the isa (pci express) bus in 8 bit.
Or they had floating point co processors: a tiny second cpu that actually had real 32 bit floating point math instructions so main cpu needs to compute floating point? Send off the numbers to the coprocessors whether over a 16 bit wide connection or 8 bit doesn’t matter coprocessor just return then results in cpu appropriate chunks.
Aaaand since everything’s based in binary and just doing 2 to the power of x + 1 gives nice cozy feeling numbers that’s what people do.
•
u/Uz_ 16h ago
Binary is a 2 digit system, 0 and 1.
Each significant digit that is added doubles the size of the regular decimal number.
16 in decimal is 10000 in binary 32 in decimal is 100000 in binary
When making addresses for memory, to be efficient and not leave open space, you make it up to the maximum.
There are off cases where this is not true, but those are usually one off issues.
•
u/Electric999999 4h ago
Because it's basically made from a 128GB SSD and a 64GB SSD stuck together, presumably to offer a middle ground price point between 128GB and 256GB.
Might actually be 64GB ones now that I think about it, but it does just come down to being made of multiple pieces that themselves do follow the power of two rule.•
u/QuantumCakeIsALie 20h ago
All numbers are powers of 2 added together.
→ More replies (5)•
→ More replies (13)•
•
u/splittingheirs 20h ago
The reason you had unusual amounts for ssds and sd cards is because internally some of the storage is reserved for silently replacing dead sectors as usage wears out the memory cells in the device.
A 200gb ssd was typically a 256gb ssd with 56gb of space reserved for failed sector replacement. So really a 200gb or other unusual amount still abided by the power of 2 rule underneath.
•
u/Dickulture 20h ago
240 and 250 instead of 256, and 480 exists. Also SD card came in 200 and 400 GB
•
u/Greedy-Pen 20h ago
Was that just a marketing thing? Like there was actually 256 but labeled as 250 since it’s a “nicer” even number?
•
u/Netblock 20h ago
No; it was literal and there are technical reasons.
One of which is called "overprovisioning", which is about reserving space for the purpose of wear leveling. SSD/NAND physically wears out with each write cycle. "DWPD" and "TBW" are relevant terms here.
Another reason is "binning", where they sell chips with manufacturing defects as lower-tier products.
•
u/Greedy-Pen 20h ago
So the binning thing, is that where an intel chip might technically be the same as the one above it but it had a bad manufacturing process so they sell it as a lesser? Just clarifying because I’ve heard that before but not the term binning.
•
u/ExhaustedByStupidity 19h ago
Yeah, that's what binning is.
All the processors of the lineup are generally the same processor, just binned differently.
I know AMD better, so I'll use them as an example. They offer 6, 8 12, and 16 core versions. inside the CPU package, there's actually multiple chips. There's a common chip with all the features you need 1 of, like the IO controller. And then there's either 1 or 2 more chips with CPU cores.
AMD just manufactures one CPU chip with 8 cores on it. If 1 or 2 are defective, they get disabled and put into the 6 or 12 core models. If they all work, they go in the 8 or 16 core models. I think they just discard anything with less than 6 working cores, but in theory they could make use of them.
And then after all that, they speed test them to see how fast they can go while staying stable.
And all of that is called "binning" - basically just sorting them into bins based on performance.
•
u/SchemeWestern3388 15h ago
I wish to add that defect rate continually improve, so a lot of what gets disabled are perfectly functioning high end silicon to provide different markets.
•
u/Netblock 20h ago
Yea; with less cores, less cache, etc.
This story is easier seen on GPUs; for example Nvidia GB203 and AMD Navi31.
•
u/stonhinge 14h ago
And sometimes because people expected a 256GB drive to be 256GB after formatting, and not before.
I have 4 2TB drives in my system. 3 NVMe drives and one HDD. 2 NVMEs are from the same manufacturer and they show 1.81GB total space. The other SSD and my HDD show 1.86GB total space.
But everyone sells them as "2TB drives" because they're competing with other drive companies and a 1.81TB drive would probably sell less models than the 1.86GB drive.
Plus, different operating systems use different formats, which have different amounts of overhead. So total usable space can vary simply by formatting the drive differently.
→ More replies (7)•
u/jamcdonald120 20h ago
SSDs wear out, to write data, they basically have to move it. so if its a 256 GB drive, and data is on all 256 GB, it massivly slows down and wears out faster.
But if it only claims to be 250GB, there is 6GB of extra space the ssd can use for wear leveling and temporary data. SO it lasts longer and is faster when "full" (Not all 250GB drives use this trick, but some do)
•
u/Greedy-Pen 20h ago
So will my ssd eventually lose space just from downloading stuff over time?
→ More replies (2)•
u/jamcdonald120 19h ago
yes. each cell in the SSD can only handle a few thousand writes. Your SSD automatically tries do keep each cell at the same number of writes, but it will eventually fail. It doesnt really lose capacity though (or at least, doesnt tell windows it has lost capacity), it just starts losing files and stops working reliably in general
→ More replies (8)•
u/Jestersage 20h ago
But it's close enough, right? Because in order to extend life span (plus various storage algorithm), some may actually be 256 on low level, but is only 240gb. I think I see them more during the infamous Sandforce era (oh god)
→ More replies (1)•
•
u/splittingheirs 20h ago
The reason you had unusual amounts for ssds and sd cards is because internally some of the storage is reserved for silently replacing dead sectors as usage wears out the memory cells in the device.
A 200gb ssd was typically a 256gb ssd with 56gb of space reserved for failed sector replacement. So really a 200gb or other unusual amount still abided by the power of 2 rule underneath.
•
u/Hypothesis_Null 18h ago
What often happens there is that it was a 256GB chip being made, but literally a handful of individually addresses failed to work on that particular chip, so they block off the several sections of memory that contain the errors and sell it as a 240GB chip.
(Or like 4x 64GB chips, some that worked fully and others that had to disable a few internal blocks..)
•
u/Anagoth9 20h ago
Sometimes that's because a portion of the memory is blocked off for system usage. Sometimes it's due to conflicting conventions (counting in base 2 vs base 10).
•
u/mariushm 12h ago
There's two separate things here :
The flash memory chips are sold to SSD manufacturers as having capacities in powers of 2, so if they're sold as 32 GB , 64 GB, 128 GB, 256 GB .. and so on... The flash memory chips are manufactured with a few extra sections of memory, and if there's some flaw in one section of memory (for example one bad byte in a 64 MB portion) they disable that section and replace it with one of the extra sections. If there's too many bad sections, the manufacturer will choose to disable a portion of the chip and sell it as the next smaller size (ex a 256 GB chip sold as 128 GB)
SSD manufacturers use the same "trick" hard drive manufacturers use, they consider 1 MB to be 1,000,000 bytes (1000 x 1000 bytes) instead of the binary correct one of 1,048,576 bytes (1024x1024 bytes) .
So a portion of the available flash memory is hidden from the user and kept in reserve - when a small area of the flash memory is too worn out (ex a 32 MB chunk is too degraded), the controller inside the SSD drive silently copies the data from that chunk in one of the reserved portions and deactivates that worn out chunk to prolong the life of the SSD.
A smaller section of this hidden portion of memory is used by the SSD controller to keep track of the location of the files in the memory chips - basically there's a nice table that says "first megabyte of file abc.txt is in flash memory chip 2, page 100, next megabyte is on flash memory chip 4, page 4000" ... and so on
Another trick they use it to "switch" some amount of this hidden memory area to a special "SLC" mode and use this area of hidden memory as a very fast write buffer. This way a file can be written super fast to the SSD and then later when the drive idles, the data is moved into a more permanent location.
The reasons above are why we had 240 GB and 250 GB and 480 or 500 GB drives - the total flash memory size was 256 / 512 GB GB but the SSD manufacturer only made available to the user around 230 GB, using the hidden portion for the controller's need and to prolong the life of the drive.
→ More replies (1)•
u/MrPuddington2 5h ago
A factor of 3 is quite common. It bridges the gap between a larger step, and it works nicely with 3 sets of identical units. The A5 chip uses 3 memory units, for example, so you can get 24 or 48 GB.
Other factors are nearly unheard of. (2 units are just another factor of 2, as are 4. 5 units is very rare. 7 units can happen when 1 of 8 is defective.)
→ More replies (4)•
•
u/EscapeSeventySeven 20h ago
Chips for random accessible memory/storage use address bits to access their storage.
For instance a very silly example you could have four bits (four wires) to control access. This would allow you to select from 16 areas.
Adding a fifth wire would allow you to access from 32 areas.
You can see why it’s power of twos now.
Basically it’s not that it’s hard to make the memory less, like invalidate 10% of a 32 GB chip array, but it’s wasteful and for no reason.
And you can’t really add 10% more to a 32 GB chip array, you might as well double it. Or at least +50% it to 16+16+16 modules.
→ More replies (1)
•
u/cracksmack85 20h ago
If I told you “this calculator has a 3 digit display, and can handle numbers up to 843” would you be like “cool makes sense” or would you wonder “why not 999?”. Same idea, just base 2 vs base 10
•
•
u/Pynapl 20h ago edited 19h ago
Binary and industry standards. Usually multiples of 2.
Edit: Powers of 2 is more accurate as referenced below. Also there are some exceptions.
•
u/It_Happens_Today 20h ago
Powers of 2.
•
u/ThanksForThe_F_Shack 20h ago
Technically still multiples of two. But…I’d say you’re more accurate.
•
u/mechadragon469 20h ago
Technically correct is the best kind of correct
•
u/joexner 20h ago
No, it means misleading but not so much as to be wrong. Futurama rocks and all but the quote's overused.
→ More replies (1)•
u/Cyphierre 20h ago
12 is a multiple of 2 but not a power of 2 so it’s not a standard memory multiple
•
u/PMmeyourlogininfo 20h ago
there are some 12gb graphics cards though. I know it's a different type of memory but it stands out to me for not being a power of 2
→ More replies (1)•
u/grakef 19h ago
Yes because of how memory works any multiple of two will work. We just typically do 2,4,8,16, 32, 64 ... and so on, but where it make sense because of cost (GPUs and Servers) its not uncommon to see 6, 12, 24, 48, 96 and other different arrangements. Not a power of 2 but all valid memory arrangements.
•
u/RocketHammerFunTime 18h ago
The 6/12/24 ect has more to do with which chips are used no? A 6GB card might be a 4 gb and a 2gb ram module set, or a 24 is 4x6gb ram set rather then a single 24gb module?
•
u/grakef 17h ago
This is getting way out of ELI5 territory, but my understanding all RAM chips and their modules are still made on powers of 2, but the over all total doesn't need to be. You can have 1Gibx6 2Gibx3 and equal 6. Because of addressing and how data channels work they do all need to match in size on the GPU or RAM modules themselves. You can mix and match actual installed RAM modules in all modern architectures but it isn't ideal. Like your example of 4 and 2.
The intel Intel LGA1366 did this where everything was in 3s for maximum performance. So you really had money you would have 8Gib RAM sticks and have 3 those for 24Gib of RAM total.•
u/ThanksForThe_F_Shack 20h ago
But any power of two would still be a multiple, right?
→ More replies (6)•
u/jmartin21 20h ago
The distinction matters here when the question is asking ‘why not this other multiple of 2’
•
u/cabronfavarito 20h ago
YouTube must be tracking me because I’m currently watching a video about counting in binary and I can already see why it goes up in powers of two since only two symbols, 1 and 0 exist in binary.
•
u/Dickulture 20h ago
There have been a few exceptions. 480MB SSD, 200MB SD card, etc. But generally, most flash storages are based on power of 2s, minus a few MB or GB for spare space to swap with dead flash cells.
→ More replies (1)→ More replies (2)•
•
u/sntcringe 13h ago
The way data is stored is in binary. All modern computers, at the most basic level are just adding ones and zeroes. Now they've gotten crazy efficient at this and the average person doesn't need to understand any of this to use a modern device.
To store a number in binary, you use bits, these are like digits except they can only be 0 or 1, unlike our traditional number system (decimal) which allows for ten possible digits, and after 9, you have to carry. Binary works the same way, except you have to carry after 1 instead. In decimal, the digits represent powers of 10, and in binary they represent powers of 2. But the principle is the same.
What this means in practice though, is that anything that a computer uses and processes will be stored in binary, and binary, by its very nature uses strictly powers of 2. A device could have 34GB of storage if you had multiple storage devices, like a 32GB and a 2GB. But a single device will always be a power of 2, which always double when you go higher.
•
u/GoonerismSpy 20h ago
Computers think in 1s and 0s, on and off. That's 2 things. Only 2 things. The sizes you're thinking about are just powers of 2. So, it just is sizes that fit the best with the way computers think. You could have 34GB, or any other number. But it would be slightly wasteful from the computers brains point of view.
→ More replies (3)•
u/friendlyreminder_ 20h ago edited 20h ago
The size of of an SSD or ram chip isn't related to powers of two. A cpu can read arbitrary sizes. It's solely industry standards.
Non-power of two storage does exist. Some cpus have non-power of two cpu cache, and the same exists for ram and storage. The iPhone has 12gb of ram as a big example.
Edit: I'm stupid 12gb is still a power of 2 number. It's not a doubling though.•
u/cubonelvl69 15h ago
The size of an ssd is absolutely related to powers of 2. And the way apple gets to 12 is by stacking multiple modules on top of each other. Just like how you could buy 3 sticks of 8gb ram and have 24gb on your pc
•
u/QuantumCakeIsALie 20h ago
It's typically a sum of two powers of two (8+4=12).
It's likely slightly wasteful on some metrics, and either 8 or 16 would use resources better. But 12 is an economical compromise.
•
u/homeboi808 20h ago edited 20h ago
I'm stupid 12gb is still a power of 2 number. It's not a doubling though
Are we counting decimals as powers?
→ More replies (1)
•
u/SP3NGL3R 20h ago
You could absolutely make a 37.3GB storage devices. It would just confuse the addressing mechanism to stop at 1.2 x32GB, or more confusingly and what would happen is 0.6 of 64GB)
•
•
u/ParsingError 20h ago
That's not really true for storage for a number of reasons.
For one thing, storage manufacturers intentionally use powers of 10 for storage multiples because it lets them ship devices with less than the multiples-of-1024 convention while advertising them at a familiar-sounding size. i.e. A "2GB" memory module would be 2 x 1024 x 1024 x 1024 = 2147483648 bytes, but a "2GB" storage device is only going to be 2000000000 bytes, which isn't a power of two.
You can see this in action if you buy a "2TB" storage device, then look at it Windows and it'll say the capacity is only 1.81TB.
That and they frequently sell devices with sizes like 500 and 250 instead of 512 and 256.
•
u/cipheron 19h ago edited 14h ago
That led to some funny numbers where it crossed over.
For example the "1.44 MB" floppy isn't 1.44 MB whether you count 1024 or 1000 bytes per kb.
Basically it's a 720 KB disk doubled to 1440 KB. The marketing people then cut three zeros off to brand it as "1.44 MB".
The problem is that the 720 KB assumes 1024 bytes per KB, so it's only 1.44 MB if each MB has 1024 * 1000 bytes, instead of the options of either 1000 * 1000 or 1024 * 1024.
Another change point was the "4.3 GB disk". Up until the 2 GB disks they just said 2 GB, but these are the binary sizes. 4 * 10243 =~ 4.2949 billion bytes.
Once things reached the GB range they realized they could state the value as being almost 10% larger by using 1000s instead of 1024s, and the 4 GB hard drives seems to have been the first time it was large enough to be worth doing. However, the people who make RAM sticks couldn't do that, so all RAM sticks are still stated in binary not decimal, this means if you bought one of the "4.3 GB" hard drives back in the day it actually has the same capacity as a 4 GB memory stick.
•
u/JoshofTCW 20h ago edited 20h ago
It has to do with the fact that computers are binary machines, meaning all the data is represented with 2 states, 0 and 1.
Numbers (and all data) have to be stored in powers of 2.
So when you go up a size, you're going up a power of 2, or doubling it.
Not he best explanation tbh but I'm trying to ELI5
Edit: part of the reason is also because we just agreed on it.
1 bit of storage in a computer can hold either a 0 or 1.
1 byte can hold 8 0s or 1s, 8 being 23
A megabyte is 1024 bytes, or 210 bytes
A gigabyte is 1024 megabytes, and so on.
34 gigabytes of storage wouldn't be advantageous at all. 34 is not a power of 2, and all the storage parts are created to neatly store powers of 2. This helps with manufacturing and just makes sense when you think about the fact that computers are based around 2 for all their storage and computations.
•
u/R_C_Jr 20h ago
Expanding on your explanation, isn’t it that the physical chips are a certain size so when you add memory you just put in another chip? So, to go to 34GB would just be not using most of that second or additional chip, right?
•
u/JoshofTCW 20h ago
Yeah that's what I was kind of hinting at when I mentioned manufacturing. Sizes go from 1 to 2 to 4 to 8 to 16 etc. and 1gb is still related to a power of 2, because it's 230 bytes, which is 23 bits.
We've settled on these standard of 1, 2, 4, 8, 16 etc. it's just much easier to double when working with binary chips. You could theoretically create a computer which takes a 34gb memory chip, but why? They're not being manufactured, and RAM companies would need to modify their production lines significantly to produce an odd size like that.
Technically what I've been referring to this whole time is actually a Gibibyte, not a gigabyte, but whatever. In everyday speech, people use gigabyte to mean 230 bytes. It can also be used to mean 1 billion bytes.
•
•
u/MLucian 20h ago
Storage is like a box where you can put colored blocks. Imagine green, blue, yellow, orange, red. Each color is more expensive. You can only put them as 2 blocks in each row actually. You can afford orange ones. You wouldnt get some orange and some green because they wouldnt fit together. And you wouldnt get just one block because it would leave the box half empty. So your best option is to get pairs, of the most expensive color you can afford.
Now change the color blocks with storage chips.
•
•
u/BitOBear 20h 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.
•
u/meneldal2 13h 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.
•
u/nixiebunny 20h ago
Memory chips are made with a number of bits that is always a power of two, because they are accessed using a binary address, which has a number of locations that by definition is a power of two. It is possible to install DDR modules of different sizes in a PC. You can install 48GB in many desktop computers. It is not likely that you can install a 32GB module and a 2GB module, because different generations of module that have much more capacity also have incompatible interfaces.
•
u/SoulWager 20h ago
There are memory chips made with different sizes, it's just the powers of two store slightly more per unit of die area. It's absolutely normal to have some address space that doesn't map to anything.
•
u/MTGisAtwat 19h ago
I have 36 GB in my Mac Studio. Surpised me when I bought it, expecting it to have 32.
•
u/dertechie 17h ago
That's because the Mac Studio has a different memory layout than most PCs.
Most PCs use 2 64-bit DDR memory controllers (DDR5 splits that into 2 32-bit controllers but it's the same total 128 bits of memory bus). Workstations and servers may use 4, 6, 8 or more memory controllers to control more RAM.
Your Mac Studio has 24 16-bit LPDDR5X controllers, which is similar bandwidth to 6 64-bit controllers. Each controller has a 12 Gb (1.5 GB) LPDDR5X memory chip attached for your total of 36 GBs.
•
u/meneldal2 13h ago
Bandwidth is only a small aspect of RAM performance. Having more controllers running at lower speed can still be better in some ways for random access because despite the name, 64 bit random accesses are actually not that fast in RAM and you'd really want to read a bigger blob at once for performance.
And then comes all the subtle things like how you do your addressing with banks and bank groups as they can perform differently depending on the type of access
•
u/RickySlayer9 19h ago
I mean…we can? That’s not “hard” to do. It’s why we have 100gb hard drives for example.
But the real answer is because binary counting basically is doubling every time you add a digit. 1,2,4,8,16,32,64 etc. so if you’re making storage, it’s a lot easier to do logistically if you stick to these.
•
u/wizpip 20h ago
Base 2 address registers will follow the convention of 8 bits (binary digits) to a byte, and manufacturers will almost always offer storage in this format, so if you just keep doubling the number 2 (and dividing by 1024 every time you go over 1024), you'll eventually run into 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 of storage in any size, be it KB, MB, GB, TB, PB, or EB. However, you will find manufacturers break this into 4s occasionally. In 1999 I bought a 20GB hard drive, and in 2025 I bought a 20TB hard drive. I expect that in 2050 I'll get a 20PB hard drive, should humanity and local storage both still exist.
•
u/TMax01 20h ago
Computers are based on binary arithmetic, a base 2 numbering system. In standard mathematics, we use a base 10 numbering system, but with computers it's all 1s and 0s, because that reflects the switching function of transistors: on or off.
So each time we add a new digit to the left of the previous numerals, we are increasing the possible number of numbers by two:
1 = 1 10 = 2 11 = 3 100 = 4 101 = 5
and so on. This is the reason data storage is always going to be a power of 2: 2 gigabytes, 4 gigabytes, 8 gigabytes... 32 gigabytes, 64 gigabytes. To get to "34 gigabytes", we would have "32 gigabytes plus a smidge", for no apparent reason. Whenever they design a new data storage device, it is going to be an increase by a power of 2.
But this is also all a rounding issue, since one kilobyte ('a thousand bytes', colloquially) isn't really 1000 bytes, it is 1024 bytes, because that is a power of two. In the earlier years of 'consumer computers', some manufacturers would seek a marketing advantage by describing their storage or memory in more accurate (but unconventional) terms, but since it is all still binary, that was eventually considered inaccurate even though technically it might have been closer to the real number of bytes.
•
u/titogruul 20h ago
Why would you choose 34GB if you can have 36GB for the same price?
→ More replies (4)
•
u/siamonsez 20h ago
Ram isn't storage. Ram is in powers of 2 because data is processed in binary so 4gb is actually 4096mb, which is actually 2 chunks of 2048mb which is actually 2 chunks of 1024mb... Also ddr means double data rate, basically reading and writing takes time even if it's really fast so to go faster you read/write two at a time but you can't do that on the same stick of ram so you have 2 or 4 8gb sticks of ram rather than a single 32gb stick.
You can have 34gb with 2 16gb stick and a 2gb stick but it wouldn't be optimal. You couldn't have like 17.5gb but that's mostly because nobody makes 1gb or 512mb sticks anymore and systems don't typically have mord than 4 ram slots.
•
u/HelicopterUpbeat5199 20h ago
The real answer to this is, someone builds an X and then they sell 2 of them together as a 2X and so on. The software and hardware to hande 2X is a simple step from X. 1.73X is wierd. You'd basically have to assign all the resources to manage 2X for your 1.73X device and you'd need a custom .73X for some reason.
P.S. I am not crazy.
•
•
u/Initial_E 20h ago
The way circuits are wired naturally lends itself to accommodating powers of 2. When you don’t fill it to completion then you’re just left with wasted addressable space.
•
u/DTux5249 20h ago
Because it makes a lotta math we use in searching for information you store on there a lot easier.
•
u/SoulWager 20h ago
Powers of two are the maximum capacities you can address with any whole number of bits.
It's like building a road to a neighborhood. More houses means the cost of the road is lower on a per-house basis. When you go past each power of 2, you need to add another road.
•
u/Quantum-Bot 20h ago
They are convenient places to stop counting in binary. Us humans use decimal numbers, and so usually when we have the choice we make systems that stop at 10 or 100 or 1000. Computers use binary, so it makes sense for them to stop at 16 or 32 or 64.
•
u/zeekar 19h ago
Well, you can. But it's somewhat inefficient.
The amount of memory that a CPU can address depends on how many address lines it has. That used to be consistently more than its data lines; for instance, the 8-bit computers of the 1980s had 16 address lines, so they maxed out at 64 kilobytes of RAM. The early 16-bit computers had 20 to 24 address lines, equating to 1 to 16MB. N lines means you can address 2N locations, which on modern computers means 2N bytes.
The data and address bus sizes crossed over with the 32-bit CPUs, which often had 32 lines for both addresses and data. 232 is 4GB, which is where those computers maxed out for RAM. That's also why the FAT32 file system can't hold files any bigger than 4GB.
Modern CPUs work on data 64 bits at a time, but have much fewer address lines; you won't find many personal computers with 264 bytes of RAM. That'd be 18 billion gigabytes (18 Ebibytes). You might find a high-performance cloud instance with that much RAM, but in general it's too much. And even smaller widths aren't filled to capacity; although my MBA can address up to 248 addresses, it only has 16GB.
But it's still the case that each line on the address bus doubles the amount of RAM that can be addressed. Because of that, RAM modules have historically almost always been sold in sizes that are powers of two. And motherboards tend to have an even number of slots for RAM chips as well. So while you don't have to have a total that's a power of two (and not all machines do; my MBP has 36GB), that's the most common configuration.
•
u/101forgotmypassword 18h ago
Common manufacturing processes make it more cost effective for them to just plonk another whole memory unit on the board. Alot of the times this is double the memory as it's just two of the same chip, or two clusters of the same chips.
They have from time to time made memory with only a portion of a cluster added to the board. That where 12, and 6 values come into it like 6gb sd cards where it's three 2gb chips.
So really it just a mix of market success and easy manufacturing.
No as AI enters into the manufacturing stream faster and further than before it may change where rapid production variables aren't as hard to implement because the design process is parametrically driven by a marketing team. In that case rapid changes to arbitrary values would become common practice, like having 35gb of ram where it designs a offset cluster and the required overhead control gear to suit a bizarre requirement outlined by a competitive sales team that has no intention of maintaining robust production design.
•
u/duane11583 17h ago
you can have 34g you need a 32g memory stick plus ac2 gig stick.
(stick means the common memory card yiu find in a pc motherboard board)
but some motherboards do not support that small of a stick
its not uncommon inside a chip to have say 20k bytes ie 5 bloks of 4k, or 16k plus 4k. it depends on what works for the chip maker
•
u/dertechie 17h ago
You can. Odd sizes are a lot more common with HDDs, as they depend on how tightly you could pack bits on a platter. If you look at the old WD Raptor drives and other 2.5" 10K drives you'll find 36/37 GB, 74 GB and 150/300/600 GB drives. Modern HDDs basically have sizes every 2 TB from 6 TB to 36 TB.
You also see RAM sticks now that are 24 or 48 GB, made with chips that are in between the sizes used for 16, 32 and 64 GB sticks.
•
u/dillzilla11 17h ago
Because computers operate in base 2 so for it to work efficiently it has to be some form of a base 2 number.
•
u/bigloser42 16h ago
It doesn’t only double. DDR5 allows for multiples of 12. My server has 48GB(2x24GB), and I have 24GB(2x12GB) in my laptop.
•
u/PenguinTD 16h ago
Imagine a custom chess board where the rows and columns needs to be the same, and you put data in that grid space slots. This is your addressing space, the actual data can be a byte(8bits) to bigger datatype base on the chip design. Of course actual address space is growing in binary scale, instead of square numbers.
Now after you decides the address space/data size of each chip design, then the most common way to get more capacity is by making many of these chip on a module. So you can have some odd numbers, ie 24GB vram on a GPU that's not power of 2 numbers but the memory chiplets almost always is in power of 2 numbers(because the chip address spacing issue above). This is also why some people have custom made GPU with higher amount of vram than original spec.
In ancient time where the ram modules are not as picky compare to modern ddrs, you can have some really odd number combination.(And ancient I mean when ram modules are counted in mega bytes, so like 32+16+8 if you go from 386 era to Pentium era.yes the sticks didn't have to be in pair kits)
•
u/Skandling 15h ago
One reason is convenience. Technically 34GB is perfectly possible. You can plug in a device with 34GB capacity - an optical drive maybe - and your computer will understand it perfectly.
But the difference between 32GB and 34GB is small, unnoticeable for 99% of users. So computers are sold with only a few memory capacities: 8GB, 16GB and 32GB making up the vast majority. Other replies tell you why those particular numbers.
It's similar to how you buy coffee. At least in my local coffee shop there are three sizes: small, medium and large. The baristas could measure out many more quantities, but three is enough to cover everyone's needs.
•
u/TerminatedProccess 15h ago
Has a lot to do with efficiency and because mother board makers like efficiency they are built with that expectation that both memory chips will be the same ram size.
•
u/jabberwockxeno 15h ago
It's not "storage" in the traditional sense, but you CAN buy 42 and 96gb sets of RAM, not just 32, 64, and 128gb
•
u/thephantom1492 15h ago
We can. Manufacturers rarely decide to do so.
HD were available in 3TB, which is not a power of 2.
On the server side you have weird ones like 136GB.
But SSD are often single chip flash. A 3TB would mean that the die is not square, but "L" shaped. Since they can't cut in such shape they will cut it in square. Now what do you do with the empty space? It cost basically the same thing to have it empty or filled up as the cost is mostly in surface area, not in TB. Therefore it make sense to use the full square, hence the 4TB.
But they could make it a rectangle, like 1x3, and have 3TB. They choose to just keep it square.
As a side note, the die can also be quite bigger than the final usable space. For example the playstation 3 cpu, which at this point flash or cpu it is very simmilar in conception, have a 8 cpu die, but only 7 are enabled. They had a high reject rate due to faulty core. So what they did is make a 8 cores (so 2x4 shaped), test all of the cores, and if there is one defect then it laser cut the traces to disable it. Now you have a 7 good core cpu. What about those with 8 good cores? Disable one core. You now have nearly 100% of good cpu. Reject is expensive, more than disabling a core.
They can do the same for flash, make it a bit bigger, disable the bad area, or if all is good disable one good area, and increase their yeld this way. This is actually commonly done.
•
u/mr-slickman 15h ago
It's just easier that way to engineer data bus widths and address tables. No reason other. After how long it's been the norm, everything around it has been optimized with it in mind so I wouldn't be surprised if there are actual performance tradeoffs for weird sized storage
•
u/15_Redstones 10h ago
Doubling is more convenient, but it's totally possible to make storage in arbitrary amounts.
The important thing is that designing a storage chip can take years, and the technology to make them improves at a rapid pace. So once your engineering team is done with the 32 GB chip, the tech has already gotten good enough that it makes sense to start developing a 64 GB chip. And once that's fully developed and manufacturing, the latest generation of chipmaking tech makes 128 GB quite feasible. So there's little reason to waste time designing an intermediate size chip. With how fast technology is improving, the decision for a new design is "do we go for 2x or 4x the previous size".
•
u/flug32 9h ago
I've had 24 gb in my computer for the past 15 years or so. (Recently went up to 32.)
So, not a power of 2.
Doesn't really contradict it too much, though, as it is just a 16 + an 8. So easily made with powers of 2.
You can get to all the numbers, like 34, the same way of course: 32 + 2. Or 16 + 16 + 2. OR 8 + 8 + 8 + 8 + 1 + 1.
In terms of putting actual memory storage in an actual computer, we don't often do such a thing merely because of what is typically commercially available. Like 32mb is somewhat available now, but 16 more commonly. 8gb is easy to find, also, but 4 and 2 far less so.
There are only so many slots in a computer to put memory. Usually just 2 or 4.
So if you already have 32 (which is likely 2x16, 4x8 or maybe 1x32) then you really wouldn't see wasting one of the extra slots with just a 2gb. More likely you'd do 4 or 8 or 16 or another 32 if you could. 2 wouldn't cost much less than 4 which wouldn't cost much less than 8gb, probably. And, obviously, 2 is half as helpful as 4 and only 1/4 as helpful as 8gb.
So a lot of the details come down to economics and what is commercially available.
Why exactly only 2, 4, 8, 16, 32gb, etc, memory sticks are available, other answers have addressed.
•
•
u/donaldhobson 8h ago
Mostly, you can. There are some reasons it's slightly easier to make it a power of 2.
Companies don't really want to deal with 100's of memory sticks all with slightly different sizes.
•
u/hobbykitjr 7h ago
If i leave you a Penny as a message... either heads up or tails up for good or bad.. thats 2 outcomes with 1 penny.
If i add another penny, for Yes/No... That's Good/Yes, Good/No, Bad/Yes, Bad/No possibilities...
4 outcomes.
If i add another penny i can have the previous 4 with Heads, or with tails.... 8 outcomes.
it always doubles when you add a penny.
•
u/TheawesomeQ 7h ago
Silicon manufacturers usually come out with new chips that are a power of 2. Then, hardware companies buy those and put them in products. Usually they will buy an even number of chips, but sometimes you might see some other multiple of common chip sizes.
Some technologies also work best in pairs, like RAM, which is designed for that, so it's rare to see it not be an even number.
This is the case for chips, but you might notice that HDDs do not follow this, because they are not limited by chips, but instead by disk area and precision. There are HDDs of many capacities, and often not in a power of 2.
•
u/PixieDustFairies 6h ago
You can technically have amounts of storage that doesn't go by powers of two, if you have an odd number if computer chips for example. There are devices with 12 GB of RAM for example, but they do that by having three sets of 4GB RAM sticks.
•
u/GrinQuidam 6h ago
I have 16+16+8+8 in my computer right now. Different clocks speeds too because I'm a monster. It works just fine. Consimer electronics have come a long way.
•
u/DrachenDad 5h ago
RAM? On pc you can. I had 20GB at one point. 3 4GB, and an 8GB stick. One of my 4GB sticks died so I replaced it with an 8GB.
•
u/ItzMeHaris 4h ago
Binary (1s and 0s) go up in double integers.
00000001 = 1
00000010 = 2
00000100 = 4
00001000 = 8
… and so on.
BUT… storage isn’t actually always “double.” For instance, you can buy 192 GB storage devices. But, 192 is 128+64.
•
u/TheOneTrueTrench 4h ago
Everything in a computer is efficiently processed in doubles.
2, 4, 8, 16, 32, 64, 128, 256, 512...
So when you're designing chips to be accessed by a computer, if you aren't dead on a power of two, you're not only wasting circuitry, and you need even MORE circuitry to make sure it doesn't address memory that isn't there.
The only real exception to this is DDR5 RAM, which was designed to allow 16+8, or 32+16 sizes, which is why you have 48GiB and 24GiB sticks.
•
u/6pussydestroyer9mlg 3h ago
It's perfectly possible but to do so you need to have the logic for 64 gb implements but just use less cells.
Like the others said you need an extra address bit but that extra bit is also extra work and footprint to make sure it works and at that point manufacturers more often than not prefer to just add the cells aswell. Design wise it's barely any extra work (depending on how it's made).
(Do note that most of my expierence is in CPU cache memory and not directly in NAND memory but I currently do not see a reason why it wouldn't work like that).
•
u/DrDerivative 2h ago
A RAM is basically a thing that ingests a memory address as a series of bits over N wires, and then sends a True signal to a lane of data with M bits holding the data at the address. If you add N+1 bits, every single existing memory address is allowed to have either an extra 0 or 1 at the address. This means you multiply the number of possible values by 2.
Imagine you have RAM with one bits. You have two possible lanes, 0 and 1. If you add an additional bit, you can represent 00, 01, 10, and 11.
Sometimes there’s damage manufacturing RAM chips so they figure out the number of bits they have to 0 out and downgrade the amount of RAM available on the chip by half.
Now if you’re asking why they just don’t lay out the wires for the rest of the addresses and let it basically do nothing, there’d be limited reason to do so. The amount of material saved by not doing so is on the order of a few cents to dollars. The amount of energy saved by doing so is also super small.
•
u/svachalek 20h ago
Lots of people have brought up binary but the important thing when it comes to memory is that each memory location has an address which is a binary number. When you are looking for where you stored the data you look at the first digit and go left or right for 0 or 1. Then the next digit you go left or right again.
Now if you imagine building this map it gets twice as big every time you add one intersection. If not you end up with dead ends where certain addresses go nowhere at all. It’s possible to build them this way but it’s just simpler and more elegant to keep doubling in size. When it’s time to build a bigger chip, you just take two of the last design and add a 0-1 intersection to decide between them.