Jump to content

I know the difference between GiB and GB and I know that hard drive manufacurers like to show the bigger number. But if the number on the box is the decimal GB and the 512 GB drive is actually 476 GiB, why do they go for 512 and not 500 GB when manufacturing it? Since it's a decimal unit anyway, it isn't bound by binary scaling and yet we still pick between 256 GB and 512 GB options for our laptops, SSDs etc. Wouldn't Apple rather market a roundly numbered 500 GB laptop? And again, I'm not talking about what the 512 GB would report in software on one devide or another. I'm talking about the choice of picking a power of two for a number that's on a decimal scale.

Link to post
Share on other sites

Because it's easier to sell you a 500 gig (that's actually less) than a 476gig that's actually 476gig, because 500 sounds way better. It like why cost things 599 and not 600 in reverse lol.

 

Just let them billionaires have their fun, will you!

The direction tells you... the direction

-Scott Manley, 2021

 

Softwares used:

Corsair Link (Anime Edition) 

MSI Afterburner 

OpenRGB

Lively Wallpaper 

OBS Studio

Shutter Encoder

Avidemux

FSResizer

Audacity 

VLC

WMP

GIMP

HWiNFO64

Paint

3D Paint

GitHub Desktop 

Superposition 

Prime95

Aida64

GPUZ

CPUZ

Generic Logviewer

 

 

 

Link to post
Share on other sites

Bits dont actually come in sets of 8 physically, also the whole power of two thing is just what bits can represent, not a factor of how many there are. Also... words between devices is not necessarily the same. 

The whole 1KB = 1024 Bytes is because its actually trying to say how many bytes a 10 bit number can represent. Notice 10 isnt any kind of power of 2. This has nothing to do with the physical real world that the bits/bytes/words exist in. When someone is designing a chip, the SRAM cells/registers and buses will have all sorts of wild real world numbers for sizes that have nothing to do with powers of 2. 

Also your file system has a massive impact on how many user usable bits there are on a plater. Meta data takes up space.

Storage manufactures do not actually care if you use FAT32 or NTFS or XFS or BtrFS on the HDD, but each one of these and size of the block all have larger effects on how much you have to use on it.

A 4k block is not actually 4k its 4k and a few bits of headers/flags/meta, especially if it is some kind of redundant system where it has to keep coherency. 

For the manufacturers, its just easier to tell you literally how many bits there are. all that other stuff, you handle it. A 512GB drive is just telling you you have that many bits in it. 

SSDs are a bit different, there are alot of cells that they dont advertise, they are overprovisioned, which is why they can just make, say a 550GB drive, and then just label it as 512GB and push the other 38GB as over provisioned cells. HDD didnt really do the whole overprovisioning thing because cells dont just die on them in the same way. Like a 22TB HDD is 10 2.2TB platters in one enclosure. nothing to do with powers of 10. or 2. 

Link to post
Share on other sites

Well first of all, storage drives are inherently binary (unless electronics give up binary altogether). If one scale has to go rest in the history books and outdated brochures, it's the decimal scale. 

 

As for why some brands don't go for whole numbers in decimal scale, it's just a tradition inherited from before names of decimal scale got misused really.

CPU: i7-2600K 4751MHz 1.44V (software) --> 1.47V at the back of the socket Motherboard: Asrock Z77 Extreme4 (BCLK: 103.3MHz) CPU Cooler: Noctua NH-D15 RAM: Adata XPG 2x8GB DDR3 (XMP: 2133MHz 10-11-11-30 CR2, custom: 2203MHz 10-11-10-26 CR1 tRFC:230 tREFI:14000) GPU: Asus GTX 1070 Dual (Super Jetstream vbios, +70(2025-2088MHz)/+400(8.8Gbps)) SSD: Samsung 840 Pro 256GB (main boot drive), Transcend SSD370 128GB PSU: Seasonic X-660 80+ Gold Case: Antec P110 Silent, 5 intakes 1 exhaust Monitor: AOC G2460PF 1080p 144Hz (150Hz max w/ DP, 121Hz max w/ HDMI) TN panel Keyboard: Logitech G610 Orion (Cherry MX Blue) with SteelSeries Apex M260 keycaps Mouse: BenQ Zowie FK1

 

Model: HP Omen 17 17-an110ca CPU: i7-8750H (0.125V core & cache, 50mV SA undervolt) GPU: GTX 1060 6GB Mobile (+80/+450, 1650MHz~1750MHz 0.78V~0.85V) RAM: 8+8GB DDR4-2400 18-17-17-39 2T Storage: HP EX920 1TB PCIe x4 M.2 SSD + Crucial MX500 1TB 2.5" SATA SSD, 128GB Toshiba PCIe x2 M.2 SSD (KBG30ZMV128G) gone cooking externally, 1TB Seagate 7200RPM 2.5" HDD (ST1000LM049-2GH172) left outside Monitor: 1080p 126Hz IPS G-sync

 

Desktop benching:

Cinebench R15 Single thread:168 Multi-thread: 833 

SuperPi (v1.5 from Techpowerup, PI value output) 16K: 0.100s 1M: 8.255s 32M: 7m 45.93s

Link to post
Share on other sites

5 hours ago, thekaloyan said:

I know the difference between GiB and GB and I know that hard drive manufacurers like to show the bigger number. But if the number on the box is the decimal GB and the 512 GB drive is actually 476 GiB, why do they go for 512 and not 500 GB when manufacturing it? Since it's a decimal unit anyway, it isn't bound by binary scaling and yet we still pick between 256 GB and 512 GB options for our laptops, SSDs etc. Wouldn't Apple rather market a roundly numbered 500 GB laptop? And again, I'm not talking about what the 512 GB would report in software on one devide or another. I'm talking about the choice of picking a power of two for a number that's on a decimal scale.

 

The short answer is that the SSD manufacturers are taking advantage of the way hard drives are sold (specifying the capacity using multiples of 1000) in order to hide some amount of flash memory from you. A part of this hidden memory is kept as spare (for when certain flash memory areas get too degraded due to lots of writes), a part is used to store information about where data is located on the SSD, and a part may be used in pseudo-SLC mode as a fast write cache. 

For example, a 500 GB SSD may use 512 GiB worth of flash memory, but only report 500 GB  or around 480 GiB to the operating system, keeping that 30-32 GB for its own uses (as explained above)

 

Hard Drives were always sold with the capacity advertised in bytes, millions of bytes and so on. This is because different operating systems use different file systems and each file system can arrange those bytes in various ways.

 

Computers work with binary data, 1s and 0s, and the PC architecture was designed to read and write 8 bits (1 byte) at a time, it could read/write 8 bits at a time from/to ram, it could read and write 8 bits at a time from ISA slots (transferring data from ram to a device in the ISA slot using 8 bits at a time)

 

So it was only natural for hard drive controllers (IDE or SCSI) to standardize on using multiples of 8 bits to tell a hard drive the location of the byte they want to read - for example if the operating system requests the data in the 3000th byte on the hard drive, the hard drive controller would encode this value 3000 as two bytes (0x0B, 0xB8) and then send 4 bytes to the hard drive : give me the byte data at location 0x00, 0x00, 0x0B, 0xB8  and the hard drive would acknowledge the request, move the read/write heads to the track that contains that byte, wait until the byte arrives under the read/write heads, reads the byte and sends it back to the computer. 

 

We soon had processors that had 16 bit buses which used either 16 bit wide memory sticks or could only work with 2 8bit wide ram sticks, and we had Extended ISA which could read and write 16 bits at a time, and then we had processors which had 32 bit buses (386 and later) so they could read and write 32 bits at a time from RAM and PCI was invented to be able to transfer 32 bits (or 64 bit in the case of PCI-X) at a time between processor, ram and PCI devices)

 

So anyway, because you're always transferring multiples of 8 bits between the drive and the system, it makes sense to use values that are power of 2 for everything, and it doesn't make that much sense to use powers of 10.  

 

Anyway,  back in the 8086 and 8088  (first x86 processors) when you were lucky to have 1-2 MB of RAM and hard drive sizes (if you had one) were in megabytes, Microsoft had to make some compromises about how their file systems store information about where files are physically located on the drives, and also compromised on how to show file sizes on screen to speed directory listings and make the computers work faster. 

 

The processors of that time also ran at very low frequencies (1-8 Mhz) and some instructions uses more cycles to complete compared to others.  Multiplying or dividing by 2 or powers of 2 was very fast because processors had some instructions called SHIFT LEFT and SHIFT RIGHT, that basically moved the bits inside a byte left or right by some amount.  So for example, if you want to multiply the number 13 ( 1101 in binary) by 2, you could just say "shift the bits one position to the left" to get "11010" which is 26 in decimal, instead calculating "13 + 13" or an actual multiplication. 

 

Just the same, if you wanted to divide a number by let's say 8, (which is 23) you could simply tell the processor "shift this byte 3 bits to the right", so for example "11010" (26 in decimal) shifted 3 bits to the right would become "11" which is 3  ....  26 divided by 8 is 3, and some change. 

 

Microsoft didn't want to use 4 or more bytes to store where a file actually starts on a hard drive, because too much space would have been used  when hard drives and floppy drives were so small), so they compromised and decided to arrange the drive or floppy disks  in sectors of 512 bytes in size, and made a rule that a sector could only contain a single file, or a fragment of a file. So a file would always start at the start of a sector, which means you could now just store the sector number instead of storing the exact byte location on the drive where the file is located. 

 

Now in their FAT-16 file system they could use only 2 bytes (16 bits) to access up to 216 x 512 bytes = 32 MiB , or bigger partitions if you decided to use bigger sector sizes. 

 

The 512 byte was chosen because it's 29 so that made it easy to just shift a sector value 9 bits to the left to get the actual byte location of a file on the drive, making it possible to calculate the actual location very fast. 

 

For the same reason, to speed up directory listings, Microsoft decided to use 1024 instead of 1000 for KB.  1024 is 210 and it's much much faster to just shift a 32 bit value 10 bits to the right to divide by 1024, compared to dividing using 1000 ( which can be rewritten as 8 x 125, so it would involve multiple divisions, or you'd shift right 3 bits / divide by 8, and then divide by 125, basically back then it would have taken 5-10x the time to divide by 1000 compared to just dividing by 1024)  

 

Considering the file sizes back then, the error caused by dividing by 1024 was very small and not a big deal, it was a good compromise. 

 

For backwards compatibility, Microsoft continued to show files sizes where they use multiples of 1024, while hard drive manufacturers used 1000, and SSD manufacturers chose to also use multiples of 1000 even though flash memory chips use multiples of 2 internally (the same as ram chips, because they read or write multiples of 8 bits at a time, usually 32 or 64 bits at a time) for the reasons I explained in the first paragraph

 

Link to post
Share on other sites

And Windows decides to use TiB and show it as TB I wonder will this change.

| Ryzen 7 7800X3D | AM5 B650 Aorus Elite AX | G.Skill Trident Z5 Neo RGB DDR5 32GB 6000MHz C30 | Sapphire PULSE Radeon RX 7900 XTX | Samsung 990 PRO 1TB with heatsink | Arctic Liquid Freezer II 360 | Seasonic Focus GX-850 | Lian Li Lanccool III | Zowie GTF-X | Mouse: Vaxee XE wired | Keyboard: Ducky One 3 TKL (Cherry MX-Speed-Silver)Beyerdynamic MMX 300 (2nd Gen) | LG 32GS95UV-B OLED 4K 240Hz / 1080p 480Hz dual-mode | OS: Windows 11 |

Link to post
Share on other sites

Because the flash chips and cells are in powers of 2 capacity unlike a hard drive which is platters which can come in various sizes especially at the lower end.

Current Network Layout:

Current Build Log/PC:

Storage Server Setup:

 

Prior Build Log/PC:

Link to post
Share on other sites

16 hours ago, thekaloyan said:

I know the difference between GiB and GB and I know that hard drive manufacurers like to show the bigger number. But if the number on the box is the decimal GB and the 512 GB drive is actually 476 GiB, why do they go for 512 and not 500 GB when manufacturing it? Since it's a decimal unit anyway, it isn't bound by binary scaling and yet we still pick between 256 GB and 512 GB options for our laptops, SSDs etc. Wouldn't Apple rather market a roundly numbered 500 GB laptop? And again, I'm not talking about what the 512 GB would report in software on one devide or another. I'm talking about the choice of picking a power of two for a number that's on a decimal scale.

It's the same reason I think as GiB vs GB and how it is used interchangeably...just standard kind of practices.

 

People have almost come to expect a "power of two" kind of number when purchasing a hard drive...and that arises from the fact that earlier days the term GB actually referred to 1000^3 and also 1024^3.

 

So by adopting a power of 2 it would make more people think they would be getting the proper amount.  From there it sort of just stuck around because why change it when the public gets used to having those numbers.

 

e.g. Back in the day if someone said 17 MB vs 16 MB you would be more likely to assume that 16 MB actually meant 16 MiB as it's a power of two.  (Despite it not being).

 

4 hours ago, Doobeedoo said:

And Windows decides to use TiB and show it as TB I wonder will this change.

It's what people got used to, and honestly doing TiB I think is just overall more confusing for more common people because they will start saying well this is TiB and this is TB but I need TiB etc...overall it would create more consumer confusion

 

Quite honestly, I understand that in 1998 the new units were officially codified but at the same time, we had been using KB/MB etc to mean it for a long time already and frankly a lot of the hardware manufacturers already took it to be 1024 base.  The biggest offender in my opinion was harddrive manufacturers which chose to use KB to be 1000...other than that the majority was already using things like MB to mean what is standard MiB today.

 

e.g. 16 GB of ram, that will be 16 GiB despite all the marketing always using GB etc. 

CD's 700 MB meant "700 MiB"

 

 

So while I do get that an official term was created, for myself it seems like hard drive manufacturers probably should have just started reporting in "GiB" but using "GB" back in the day and then we wouldn't have had as much of a need for what has lead to the confusing "GB" vs "GiB" debate that goes on.

 

 

3735928559 - Beware of the dead beef

Link to post
Share on other sites

3 hours ago, Lurick said:

Because the flash chips and cells are in powers of 2 capacity unlike a hard drive which is platters which can come in various sizes especially at the lower end.

Flash chips dont at all come in powers of 2. 
Again power of 2 is about the maximum number a certain amount of bits can represent, it has nothing to do with the real world size of an array. 

An array for flash will be x by y by z by how many bits per cell. Nothing in there forces a power of 2. Hell the word size is not even locked in to 8. 

Link to post
Share on other sites

6 minutes ago, starsmine said:

Flash chips dont at all come in powers of 2. 
Again power of 2 is about the maximum number a certain amount of bits can represent, it has nothing to do with the real world size of an array. 

An array for flash will be x by y by z by how many bits per cell. Nothing in there forces a power of 2. Hell the word size is not even locked in to 8. 

Although admittedly addressing the sectors etc on it usually will mean having to allocate a certain amount of bits, which then means keeping it on something that is a power of 2 means you are maximizing things etc.

 

Flash chips gets weird in the sense that they are also able to store effectively multiple bits in a single cell as well, which makes the whole thing weird as well.

3735928559 - Beware of the dead beef

Link to post
Share on other sites

29 minutes ago, wanderingfool2 said:

Although admittedly addressing the sectors etc on it usually will mean having to allocate a certain amount of bits, which then means keeping it on something that is a power of 2 means you are maximizing things etc.

 

Flash chips gets weird in the sense that they are also able to store effectively multiple bits in a single cell as well, which makes the whole thing weird as well.

The number of bits per cell is kind of irrelevant, as the  minimum unit you can write is basically a page, which nowadays is at least 4096 bytes and it can go up to  16 KB or higher. 

 

For example, the Crucial p3 4 TB SSDs  use  Micron N48R FortisFlash which is 176 layer QLC : https://www.techpowerup.com/ssd-specs/crucial-p3-plus-4-tb.d826

 

With these memory chips, you have 176 layers, each die has 4 planes, 2 decks ... each plane has  817 blocks, each block has 2816 pages, and each page is 16 KB. 

 

You can write in one empty page, but you can't overwrite. If you want to make the page available again for writing, the whole block of 2816 pages  or basically 44 MB has to be erased, so when the controller eventually has to do that, it has to find room in other blocks for the pages that still contain useful data, copy those pages to new locations, then erase the whole block.

 

 

Link to post
Share on other sites

3 hours ago, wanderingfool2 said:

It's what people got used to, and honestly doing TiB I think is just overall more confusing for more common people because they will start saying well this is TiB and this is TB but I need TiB etc...overall it would create more consumer confusion

 

Quite honestly, I understand that in 1998 the new units were officially codified but at the same time, we had been using KB/MB etc to mean it for a long time already and frankly a lot of the hardware manufacturers already took it to be 1024 base.  The biggest offender in my opinion was harddrive manufacturers which chose to use KB to be 1000...other than that the majority was already using things like MB to mean what is standard MiB today.

 

e.g. 16 GB of ram, that will be 16 GiB despite all the marketing always using GB etc. 

CD's 700 MB meant "700 MiB"

 

 

So while I do get that an official term was created, for myself it seems like hard drive manufacturers probably should have just started reporting in "GiB" but using "GB" back in the day and then we wouldn't have had as much of a need for what has lead to the confusing "GB" vs "GiB" debate that goes on.

 

We're long away from early days, heck I and most don't even use HDD and SSD is different as for RAM well it's different but also same as it's not storage. But, my point was that the disparity between HW and SW reporting. Always seeing say 1TB and in Windows I see <1000GB it's just dumb. Just show me 1TB for that SSD.

| Ryzen 7 7800X3D | AM5 B650 Aorus Elite AX | G.Skill Trident Z5 Neo RGB DDR5 32GB 6000MHz C30 | Sapphire PULSE Radeon RX 7900 XTX | Samsung 990 PRO 1TB with heatsink | Arctic Liquid Freezer II 360 | Seasonic Focus GX-850 | Lian Li Lanccool III | Zowie GTF-X | Mouse: Vaxee XE wired | Keyboard: Ducky One 3 TKL (Cherry MX-Speed-Silver)Beyerdynamic MMX 300 (2nd Gen) | LG 32GS95UV-B OLED 4K 240Hz / 1080p 480Hz dual-mode | OS: Windows 11 |

Link to post
Share on other sites

22 hours ago, starsmine said:

A 4k block is not actually 4k its 4k and a few bits of headers/flags/meta, especially if it is some kind of redundant system where it has to keep coherency.

It is at the LBA (4k is 4k). But you're right, there is extra bits for ECC to ensure no corruption at the NAND flash level; it's just the OS will never see or address this. Any insight the OS has would be via S.M.A.R.T stats alone.

 

That said, partition alignment in an SSD is exceedily important. You'll take a massive performance hit if the byte alignment is skewed. Link to calcualtor that makes that assessment easy https://www.techpowerup.com/articles/other/157
 

Link to post
Share on other sites

5 hours ago, StDragon said:

It is at the LBA (4k is 4k). But you're right, there is extra bits for ECC to ensure no corruption at the NAND flash level; it's just the OS will never see or address this. Any insight the OS has would be via S.M.A.R.T stats alone.

 

That said, partition alignment in an SSD is exceedily important. You'll take a massive performance hit if the byte alignment is skewed. Link to calcualtor that makes that assessment easy https://www.techpowerup.com/articles/other/157
 

I dont disagree that you might want to not misalign then User (or rather OS as a user) from 4k. But that still means you would be making a SSD with N blocks of 4K, not a power 2, just N blocks of them. 

Link to post
Share on other sites

On 5/15/2025 at 2:03 PM, Doobeedoo said:

And Windows decides to use TiB and show it as TB I wonder will this change.

This, this is the real problem. 
Linux system will just give you GiB, but Windows will use GiB, but show it as GB to confuse people…

   
 
 
 
Spoiler
CPU : Intel 14gen i7-14700K
COOLER :  Thermalright Peerless Assassin 120 White + thermaltake toughfan 12 white + Thermal Grizzly - CPU Contact Frame Intel 13./14. +  Coollaboratory Liquid Ultra
GPU : MSI RTX 2070 Armor @GPU 2050MHz Mem 8200MHz -> USB C 10Gb/s cable 2m -> Unitek 4x USB HUB 10 Gb/s (Y-HB08003)
MOBO : MSI MEG Z690 UNIFY
RAM :  Corsair VENGEANCE DDR5 RAM 64 GB (2 x 32 GB) 6400 MHz CL32 (CMK64GX5M2B6400C32)
SSD : Intel Optane 905P 960GB U.2 (OS) + 2 x WD SN850X 4TB + 2 x PNY CS3140 2TB + ASM2824 PCIe switch -> 4 x Plextor M8PeG 1TB + flexiDOCK MB014SP-B -> Crucial MX500 2TB + GoodRam Iridium PRO 960GB + Samsung 850 Pro 512GB
HDD : WD White 18TB WD180EDFZ + SATA port multiplier adp6st0-j05 (JMB575) ->  WD Gold 8TB WD8002FRYZ + WD Gold 4TB WD4002FYYZ + WD Red PRO 4TB WD4001FFSX + WD Green 2TB WD20EARS
EXTERNAL
HDD/SSD : 
XT-XINTE LM906 (JMS583) -> Plextor M8PeG 1TB + WD My Passport slim 1TB + LaCie Porsche Design Mobile Drive 1TB USB-C + Zalman ZM-VE350 -> Goodram IRDM PRO 240GB
PSU :  Super Flower leadex platinum 750 W biały -> Bitfenix alchemy extensions białe/białe + AsiaHorse 16AWG White 
UPS :  CyberPower CP1500EPFCLCD -> Brennenstuhl primera-line 8 -> Brennenstuhl primera-line 10
LCD :  LG 32UD59-B + LG flatron IPS236 -> Silverstone SST-ARM11BC
CASE :  Fractal R5 Biały + Lian Li BZ-H06A srebrny + 6 x Thermaltake toughfan 14 white + Thermalright TL-B8W
SPEAKERS :  Aune S6 Pro -> Topping PA3-B -> Polk S20e black -> Monoprice stand 16250
HEADPHONES :  TOSLINK 2m -> Aune S6 Pro -> 2 x Monoprice Premier 1.8m 16AWG 3-pin XLR -> Monoprice Monolith THX AAA 887 -> 4-pin XLR na 2 x 3.5mm 16 cores OCC 2m Cable -> HiFiMAN Edition XS -> sheepskin pads + 4-pin XLR na 2 x 2.5mm ABLET silver 2m  Cable -> Monoprice Monolith M1060 + Brainwavz HM100 -> Brainwavz sheepskin oval pads + Wooden double Ɪ Stand + Audio-Technica ATH-MSR7BK -> sheepskin pads + Multibrackets MB1893 + Sennheiser Momentum 3 +  Philips Fidelio X2HR/00 + JBL J88 White
MIC :  Tonor TC30 -> Mozos SB38
KEYBOARD : Corsair STRAFE RGB Cherry MX Silent (EU) + Glorious PC Gaming Race Stealth Slim - Full Size Black + PQI MyLockey
MOUSE :  Logitech MX ERGO + 2 x Logitech MX Performance + Logitech G Pro wireless + Logitech G Pro Gaming -> Hotline Games 2.0 Plus + Corsair MM500 3xl + Corsair MM300 Extended + Razer goliathus control
CONTROLLERS :  Microsoft xbox series x controller pc (1VA-00002) -> brainwavz audio Controller Holder UGC2 + Microsoft xbox 360 wireless black + Ravcore Javelin
NET :  Intel x520-DA2 -> 2 x FTLX8571D3BCV-IT + 2 x ASUS ZenWiFi Pro XT12
NAS :  Qnap TS-932X-2G -> Noctua NF-P14s redux 1200 PWM -> Kingston 16GB 2400Mhz CL14 (HX424S14IB/16) -> 9 x Crucial MX500 2TB ->  2 x FTLX8571D3BCV-IT -> 2 x Digitus (DK-HD2533-05/3)
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×