I have been wondering for sometime now why Hard Disk Drives define storage space in thousands (1000) instead of the real (1024). So, for example, 1GB = 1000MB; 1MB = 1000KB. Is there any significance for this convention? Why is it still being used?
This is a cut and paste from Wikipedia:
Despite standardization efforts, ambiguity still exists in the meanings of the SI (or metric) prefixes used with the unit byte, especially concerning the prefixes kilo (k or K), mega (M), and giga (G). Computer memory has a binary architecture in which multiples are expressed in powers of 2. In some fields of the software and computer hardware industries a binary prefix is used for bytes and bits, while producers of computer storage devices practice adherence to decimal SI multiples. For example, a computer disk drive capacity of 100 gigabytes is specified when the disk contains 100 billion bytes (93 gibibytes) of storage space.
Look up Kibi, Mebi, Gibi bytes. These prefixes where invented to differentiate from Kilo, Mega, Giga etc which are defined in SI units as base 10.
Hard drives are measured in base-1000 because everything else is.
- A kg is 1000 grams.
- A km is 1000 meters.
- A MHz is 1 000 000 cycles per second.
This is the way we designed these factor prefixes, and it's the way the entire world is using them. Why should hard drives be any different?
Note that most other things in computers also uses base-1000. A 3GHz CPU is designed to tick at 3 000 000 000 cycles, not 3 221 225 472 cycles per second. Similarly, Gigabit Ethernet transmits 1 billion bits per second, rather than 1.073 billion.
The only exception to this is memory chips; in particular RAM, but also CPU cache memories and to a lesser extent flash chips. The reason is that the design of these chips naturally favour addressing in powers of 2:
Both the row and column selection are decoded from binary addresses; addresses which by definition have a domain of \$2^n\$. Contrast this with the design of hard drives:
Contrary to RAM chips, where the design is primarily governed by the base-2 addressing scheme, hard disks design is primarily about stuffing as many pieces of data (called sectors) on the round platter as possible. There is nothing inherently \$2^n\$ about this, so there is no reason to measure hard disk capacity in base-1024 units.
The abuse of the existing prefixes by computer people to refer to base-1024 quantities (i.e., calling 1024 bytes 1kB) has unfortunately been the cause of much confusion. I can only hope this abuse will go away in time; Current human society overwhelmingly uses base-10, and computers should adapt to that — not the other way around.
An attempt to In an attempt to solve this, the world came up with a binary variation on the si prefixes:
- 1 KiB = 1024 bytes
- 1 MiB = 1024 KiB
- 1 GiB = 1024 MiB
- 1 GiB = 1.074 GB
- 1 GB = 954 MiB
I recommend everyone use them, so we can hopefully one day eliminate this confusion surrounding computer storage units.
Since RAM memory was always growing with address bits and binary leaps, we always knew 64KB was really, "a bit" more than 65 kB. ( the current abbrev KB must ALWAYS mean 1000 to be consistent so they invented the "Kibibyte" for the binary version. KiB or Kib for Kibibits ) (pun intended)
- But remember B=Bytes and b= bits and K should never be capitalized in Units of measure unless there is ambiguity ( like (m,M):(milli, mega) as ONLY proper names like Ohm are capitalized when abbreviated except KB and Kb were invented before the SI units of measure standard included them and were just considered as abbreviations and not formal units of measure.
But since HDD's were not bound by address space but by limitations of the magnetic medium and heads, it was more relevant to use decimal values.
Except now, the size is so obtuse who cares how big 2 Terrabytes really is. Of course HDD OEM Sales Mgr's in the early 80's insisted on calling the capacity by it's more competitive value. In 1982 I was testing a 5+5MB cartridge HDD from Santa Barbara in Santa Clara and then someone from Japan came out with a 10MB HDD then 13MB woow..