Существует веская причина, по которой ОЗУ может иметь размеры, кратные двум, из-за способа ее изготовления и способа ее решения. (Я знаю, вы спрашивали о флешках. Пожалуйста, потерпите меня.) Он адресован двоичными числами, которые появляются на шине, выходящей из ЦП, и все модули ОЗУ подключены ко всем битам в шине.
Скажем, у вас 4 ГБ ОЗУ в одном модуле. Адреса идут от 0 до шестнадцатеричного FFFFFFFF (что составляет 32 единицы подряд). Если вы добавите еще один модуль 4 ГБ, это, конечно, удваивает количество, которое у вас есть. Поскольку каждая двоичная цифра представляет умножение на 2 (точно так же, как каждая десятичная цифра представляет умножение на 10), максимальный адрес теперь просто 1FFFFFFFF. Ваш контроллер памяти может обработать это, отправив адреса от 0 до FFFFFFFF первому модулю и от 100000000 до 1FFFFFFFF второму модулю. (На самом деле это не так просто, но это идея.) Это работает так же в модулях оперативной памяти, поскольку чипы несут все большую и большую емкость. Очень удобно, чтобы всю оперативную память в системе можно было легко объединять в единый непрерывный блок адресов, и это проще всего на аппаратном уровне, если модули имеют размеры, равные двум.
Не существует соответствующей причины для жесткого диска иметь ряд секторов, связанных со степенью 2. Количество записываемых поверхностей, количество секторов на дорожку и количество дорожек на поверхность не основаны на двоичном коде; они просто "все, что подходит". (17 секторов на дорожку были обычным явлением в ранних жестких дисках ПК) В современных жестких дисках число секторов на дорожке даже не одинаково от самых внешних дорожек до самых внутренних.
Таким образом, жесткий диск не имеет внутренних причин для получения мощности 1024. Что касается адресации на нескольких дисках, из-за того, как работают тома и файловые системы, просто нет необходимости объединять все дисковое хранилище в системе в один массив блоков с непрерывным набором адресов блоков. И даже если бы это было желательно, у программного обеспечения в стеке драйверов хранилища в ОС не было бы никаких проблем с отслеживанием «блоки с 0 по 3906259999 находятся на диске 0, 3906260000 через все, что на диске 1» и т.д. Фактически многие системы программного обеспечения для хранения данных, которые делают это сейчас (как динамические диски, так и области хранения в Windows, например), создают единый "том" из набора дисководов произвольных размеров.
Теперь, прежде чем объяснять размеры флеш-памяти, мы должны убедиться, что мы прояснили еще одну деталь, касающуюся размеров оперативной памяти и жестких дисков:
Вы, вероятно, знаете, что размеры ОЗУ почти всегда указывались с использованием "двоичных префиксов", что означает, например, что "4 ГБ ОЗУ" означает 4 раза от 2 до 30 - или, что более удобно, 4 раза от 1024 до 3-й степени, то есть 4 x 1024 х 1024 х 1024 = 4 294 967 296. Но когда вы покупаете жесткий диск, "ГБ" означает 1 000 000 000 байтов.
Кстати, это не было недавним изменением со стороны производителей жестких дисков, чтобы попытаться продать нам меньшую емкость по более высокой цене. Жесткие диски всегда цитировались таким образом; жесткие диски использовали "десятичные мегабайты", прежде чем объем оперативной памяти даже стал измеряться в мегабайтах, и то же самое для гига и тера. Самый первый жесткий диск IBM 350 RAMAC имел емкость 5 000 000 символов и хранился на пятидесяти пластинах. Видите, трудно иметь чистую степень двойки, когда у вас есть простые факторы, такие как "5" в миксе. Но это в сторону ...
Джокером в этой колоде являются твердотельные накопители, в том числе такие, как USB-ключи, SD-карты и т.д. Да, "число перед устройством" часто представляет собой небольшую степень двух, например 64. Но "G" означает 1 000 000 000, как и на жестком диске.
Если вы не верите этому, подключите один к компьютеру и попросите сообщить, сколько байтов на диске, без префиксов. Если бы ваш "64 ГБ" флэш-накопитель был действительно 64 двоичных гигабайта, то число было бы 68 719 476 736 (и Windows показала бы его как "64 ГБ"). Но мелкий шрифт производителя скажет «1 ГБ = 1 миллиард байт» или что-то подобное, так что на самом деле гарантировано только 64 000 000 000, а Windows скажет, что это 59,6 ГБ (потому что Windows использует двоичные префиксы для жестких дисков, хотя это не должно ). Но, на самом деле, 59,6 ГБ - это правильно, если вы помните, что "G" там означает 1024 куба, или 1 073 741 824.
Теперь странная вещь: где дополнительная емкость? Смотрите, чипы флэш-памяти внутри USB-ключей и устройств mSATA имеют "двоичный размер". Таким образом, на флэш-накопителе объемом 64 ГБ, скорее всего, имеется 64 ГБ (двоичных гигабайт) фактической флэш-памяти. Но вы можете использовать только 64 000 000 000 байтов. Где остальные? Ну, флэш-памяти нужно много свободного места для работы. Флэш-накопитель "64 ГБ" использует разницу между 68 719 476 736 и 64 000 000 000 в качестве свободного места.
Да, последние флэш-накопители, особенно заменители HD, отображаются в размерах, подобных жестким дискам. Я предполагаю, что они используют дополнительное для большего количества свободного места, которое увеличивает их срок службы. например, флэш-накопитель "120 ГБ" предоставляет пользователю 120 000 000 000 байтов, но емкость чипов составляет, вероятно, 137 438 953 472 байта. Это намного больше свободного места, чем если бы диск предоставил пользователю 128 000 000 000.