– What’s the Practical Purpose for Using MiB (Mebibytes) Over MB (Megabytes) or Vice Versa?

532 views

– What’s the Practical Purpose for Using MiB (Mebibytes) Over MB (Megabytes) or Vice Versa?

In: 0

6 Answers

Anonymous 0 Comments

It has to do with how the storage is physically manufactured. Hard drives have a magnetic film that can be subdivided into any arbitrary number of bits and bytes. If you decide that each bit is 1 micron long and you want to read the 10,000th bit, then you just move the read head to position 10,000 micron in order to read the bit at that location.

DRAM and NAND are split up into a fixed number of physical bits, arranged in a rectangular grid. In a grid, you can find any bit by knowing what row and column it’s on. So suppose you wanted the 10,000th bit, you could go to row 100 and column 100

So then this leads to, how do you tell the storage to go to a row? Well, you use a few binary bits, so 100 would be 1100100 in binary. If you want at least 100 rows, then you need at least 7 bits reserved in your communication string for the row #. Now, since you have 7 bits already, you can go up to 2^7 rows (128), so you can add 28 rows without having to reserve more bits in your communication string. The more bits you use up in your communication string, the less bits in the string are available for actual data, so you don’t really want to use even a single extra bit unless it’s absolutely necessary. By reducing the number of bits in the communication string for actual data, you’re reducing the speed of that you can send data to and from the CPU, so you want to maximize the amount of benefit that you get in exchange for that tradeoff. So you try really hard not to use the 8th bit for row until you have a grid with 256 rows, and 9th bit for 512 rows, etc.

As a result, the total number of rows and columns are almost always a power of 2, which means that the total number of bits are also a power of 2, and dividing it by 8 also gets you a power of 2. So it’s easier to just use Mebibytes to describe the total amount of storage available.

As a sidenote, NAND no longer really uses mebibytes because it reserves a lot of bits as backup and doesn’t let the CPU go to a specific row/column, so the total amount of available storage is some wonky number even if the physical bits are still in a rectangular grid. It communicates with the CPU in chunks instead, so the CPU tells it “here’s a massive bunch of data strings, go store it wherever you think works best for you”.

To make it even more confusing, JEDEC (the standards committee for DRAM) uses megabytes when they really mean mebibytes – so when you buy 16 gigabytes of RAM, you’re actually buying 16 gibibytes.

Microsoft typically follows the JEDEC standard – so when Microsoft says your hard drive is 900 gigabytes, you actually have a 900 gibibyte hard drive.

However, hard drive manufacturers follow the SI definition, so when they sell you a 1000 gigabyte hard drive, it’s actually 1000 gigabytes and not 1000 gibibytes. But since it’s 1000 gigabytes, Microsoft will show it as being ~931 gibibytes, which they then tell you as 931 gigabytes. You’d think that the consumer outrage over this confusing practice would force one of them to change to the other’s standards, but apparently not.

You are viewing 1 out of 6 answers, click here to view all answers.