Куди зникають гігабайти на новому диску?

Диск на терабайт, а система показує 931 гігабайт. Виробник рахує гігабайт як мільярд байтів, система — як 2³⁰, і поділка в неї на 7,4 % довша. Різниця постійна, обчислювана і росте з обсягом.

Обсяг стоїть просто на кришці диска, найбільшим шрифтом на етикетці — і порахований він поділкою виробника.
Обсяг стоїть просто на кришці диска, найбільшим шрифтом на етикетці — і порахований він поділкою виробника.Фото: TheDragonFire300 / Wikimedia Commons, ліцензія CC BY 4.0 (creativecommons.org/licenses/by/4.0), зменшено.

Новий диск на терабайт — жорсткий чи SSD, тут різниці не буде. Ви ставите його в комп'ютер, відкриваєте властивості й бачите 931 гігабайт. Шістдесят дев'ять кудись поділися ще до того, як ви записали перший файл.

Найперша думка — що виробник округлив на свою користь. Друга — що місце зайняла службова розмітка. Перше звучить як обман, друге майже правда, але не пояснює масштабу: 69 гігабайтів службових даних на порожньому диску не буває. Обидві здогадки промахуються на один крок, бо розбіжність виникає раніше — у тому, що слово «гігабайт» означає для виробника і для системи два різні числа.

Одна приставка, два значення

NIST описує це без дипломатії: сьогодні «всі» вже не «знають», що таке мегабайт — більшість виробників розуміє під ним 2²⁰, тобто 1 048 576 байтів, а виробники накопичувачів під тим самим словом мають на увазі рівно мільйон.

Розбіжність не між чесними і нечесними, а між двома індустріями, кожна з яких послідовна всередині себе. Пам'ять адресується двійково, тому природний крок для неї — степінь двійки. Накопичувачі продаються обсягом, тому крок для них — степінь десятки. Слово для обох одне.

Щоб два значення можна було розрізнити на письмі, для двійкових є окремі назви. NIST наводить їх таблицею — перші дві літери збігаються з десятковими, далі назви розходяться:

МножникНазваПозначенняЗначення
2¹⁰кібіKi1 024
2²⁰мебіMi1 048 576
2³⁰гібіGi1 073 741 824
2⁴⁰тебіTi1 099 511 627 776

Третій рядок і є ваш випадок: правильна назва того, що показує система, — не гігабайт, а гібібайт. Система пише «ГБ», а рахує GiB.

Розрив росте з кожним щаблем

На кілобайті розбіжність становить 2,4 % — її ніхто ніколи не помічав. На мегабайті вже 4,9 %, на гігабайті 7,4 %, бо щаблі множаться один на одного.

Наступний щабель у таблиці — тебібайт, і на ньому розрив уже близько десятої частини:

10¹² ÷ 2⁴⁰ = 1 000 000 000 000 ÷ 1 099 511 627 776 = 0,909

Терабайт виробника — це 0,909 тебібайта системи. Ті самі 69 гігабайтів виходять із того самого ділення, тільки на щабель нижче:

10¹² ÷ 1 073 741 824 = 931,32

Рівно те число, що на екрані. Нічого не зникло: 931 гібібайт і є той самий терабайт, названий іншою одиницею.

Перевірка на одну хвилину

Візьміть будь-який свій диск або флешку і помножте цифру з коробки на 0,909 — вийде те, що покаже система. Для гігабайтної флешки множник 0,931, для мегабайтного файла 0,954. Збіг буде точний, до десятих; якщо число зійшлося, шукати «зникле місце» більше не треба.

Чорна флешка зі знятим ковпачком, на корпусі дрібними літерами позначено обсяг
Флешка з надрукованим на корпусі обсягом — найшвидший спосіб перевірити множник: те, що написано на боці, помножене на 0,931, і є те, що покаже система. Фото: Peter Hosey / flickr, ліцензія CC BY 2.0 (https://creativecommons.org/licenses/by/2.0/), без змін.

Той самий різнобій працює й у зворотний бік. Провайдер рахує швидкість у десяткових мегабітах, а браузер показує завантаження в мебібайтах за секунду — і там до різниці систем числення додається ще й ділення на вісім.

Решту зʼїло щось інше

Ця арифметика пояснює постійну частину розриву, і пояснює її точно, до останнього байта. Весь розрив на реальному пристрої вона не пояснює.

На телефоні або ноутбуці з передвстановленою системою частина обсягу зайнята самою системою, і це окрема втрата з окремою причиною. У SSD є ще й резерв контролера, який не показується взагалі ніде.

Накопичувач SSD у корпусі 2,5 дюйма з наліпкою й роз'ємом SATA
SSD у звичайному корпусі на 2,5 дюйма: обсяг стоїть на наліпці, а скільки комірок контролер лишив собі в резерві, на ній не написано — і в системі теж не видно. Фото: D-Kuru / wikimedia, ліцензія CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0/), без змін.

Ці дві величини не виводяться з жодної таблиці префіксів. Вони залежать від моделі й прошивки, а ще від того, скільки місця займала система на момент продажу.

Тому правило просте: якщо ваш терабайтний диск показує 931 ГБ — це одиниці виміру, питань немає. Якщо він показує 880, решту з'їло щось інше, і шукати це «інше» треба вже не в математиці.

Джерела, за якими написано статтю

  • NIST, Prefixes for binary multiples — таблиця двійкових префіксів і порівняння з десятковими; дослівно: «Today "everybody" does not "know" what a megabyte is… most manufacturers use megabyte to mean 2²⁰ = 1 048 576 bytes, but manufacturers of computer storage devices usually use the term to mean 1 000 000 bytes»
    NIST Reference on Constants, Units and Uncertainty — https://physics.nist.gov/cuu/Units/binary.html
  • NIST Special Publication 811, розділ про двійкові кратні
    NIST SP 811 (2008) — https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication811e2008.pdf

Читайте також