Rien n'a disparu
Branchez un disque étiqueté « 1 To » et la plupart des systèmes d'exploitation indiquent environ 931 Go. Aucune capacité n'a réellement disparu. Le disque contient exactement ce que l'étiquette indique, et les 69 Go « manquants » résultent entièrement de deux définitions différentes des préfixes kilo-, méga-, giga- et tera- appliquées au même nombre physique d'octets.
Deux systèmes de préfixes, mêmes noms, significations différentes
| Décimal (style SI) | Valeur | Binaire (IEC) | Valeur |
|---|---|---|---|
| kilooctet (kB) | 1 000 octets (103) | kibioctet (KiB) | 1 024 octets (210) |
| mégaoctet (MB) | 1 000 000 octets (106) | mébioctet (MiB) | 1 048 576 octets (220) |
| gigaoctet (GB) | 1 000 000 000 octets (109) | gibioctet (GiB) | 1 073 741 824 octets (230) |
| téraoctet (TB) | 1 000 000 000 000 octets (1012) | tébioctet (TiB) | 1 099 511 627 776 octets (240) |
Les fabricants de stockage utilisent la colonne décimale, et ce depuis bien avant que la distinction n'ait eu des noms séparés, car cela rend la capacité commercialisée un nombre rond et correspond à la façon dont tous les autres secteurs utilisent « kilo » et « méga ». Un disque étiqueté 1 To contient véritablement 1 000 000 000 000 octets.
L'arithmétique exacte
Les systèmes d'exploitation qui calculent le « Go » en utilisant la division binaire, ce qui est toujours le comportement par défaut de l'Explorateur de fichiers Windows, prennent le nombre réel d'octets du disque et divisent par des puissances de 1 024, tout en continuant à imprimer l'étiquette « Go » au lieu du correct « Gio » :
1×1012 octets ÷ 230 octets/Gio = 1 000 000 000 000 ÷ 1 073 741 824 = 931,32… Gio
Ce nombre, 931,32, est ce qu'un système d'exploitation utilisant la division binaire affiche, étiqueté incorrectement « Go ». Rien n'a été perdu lors du formatage ou des frais généraux. Il s'agit des mêmes 1 000 000 000 000 octets, divisés par un diviseur plus grand que celui utilisé par le fabricant, et donné le mauvais nom d'unité pour le résultat.
D'où provient le système à deux noms
L'ambiguïté est ancienne. « Kilooctet » a été utilisé sans rigueur pour les deux 1 000 et 1 024 octets depuis les premiers jours de l'informatique, car 210 (1 024) est suffisamment proche de 103 (1 000) pour que la négligence importe rarement à petite échelle. Elle a cessé d'être inoffensive une fois que les capacités ont atteint la gamme des gigaoctets, où les deux définitions divergent de 7,4 %, et la gamme des téraoctets, où elles divergent de près de 10 %. En décembre 1998, la Commission électrotechnique internationale a approuvé l'Amendement 2 à la norme IEC 60027-2, introduisant les préfixes binaires kibi-, mébi-, gibi- et tébi- spécifiquement pour mettre fin à l'ambiguïté en donnant aux quantités binaires leurs propres noms sans ambiguïté, laissant kilo-, méga- et giga- signifier strictement des puissances de 1 000, comme ils le font partout ailleurs en métrologie. Cette norme a été ultérieurement incorporée dans IEC 80000-13 (2008), la partie du Système international des quantités couvrant la science et la technologie de l'information, qui reste l'autorité actuelle pour les deux ensembles de préfixes.
L'adoption était facultative, et cela se voit
Les organismes de normalisation peuvent définir les noms corrects ; ils ne peuvent pas forcer les systèmes d'exploitation à les utiliser. Apple a basculé macOS vers la génération de rapports décimale avec Mac OS X 10,6 « Snow Leopard » en 2009 — un disque de 1 To s'affiche comme « 1 To » dans Finder, correspondant à l'étiquette du fabricant, car Finder divise maintenant par des puissances de 1 000. Windows n'a jamais effectué le changement équivalent : l'Explorateur de fichiers divise toujours par des puissances de 1 024 tout en imprimant l'étiquette « Go », ce qui explique pourquoi le même disque physique affiche un nombre différent selon le système d'exploitation sur lequel il est branché. Linux est incohérent par outil plutôt que par conception — de nombreux utilitaires en ligne de commande, ls -lh et du -h sans l'option --si parmi eux, utilisent par défaut la division binaire, tandis que plusieurs gestionnaires de fichiers de bureau utilisent par défaut la décimale, correctement étiquetée.
La RAM est le seul endroit où binaire n'est pas qu'un choix d'étiquetage
La capacité de stockage est une décision de fabrication ; un contrôleur de disque pourrait en principe être construit pour exposer n'importe quel nombre d'octets. La capacité de RAM ne l'est pas : les puces mémoire sont adressées physiquement avec des lignes d'adresse binaires, donc la capacité d'une puce est architecturalement une puissance de deux. Un module RAM « 8 Go » contient véritablement 8 × 1 073 741 824 = 8 589 934 592 octets, 8 Gio par le nom correct, tandis qu'une clé USB « 8 Go » contient 8 × 1 000 000 000 = 8 000 000 000 octets. Même étiquette imprimée, deux quantités physiques différentes, pour deux raisons sous-jacentes différentes : l'une est une contrainte matérielle, l'autre est une convention d'unités qu'un fabricant a choisie.
Bits, pas octets, pour la vitesse réseau
Un piège de préfixe supplémentaire se situe à côté de celui-ci : les vitesses réseau sont exprimées en bits par seconde, les tailles de fichiers en octets. Puisqu'un octet est 8 bits, une connexion annoncée de 1 Gbit/s atteint un maximum d'environ 125 Mo/s de transfert de fichiers avant les frais généraux de protocole, pas 1 000 Mo/s et pas 1 Go/s. Diviser une vitesse de lien annoncée par 8 pour estimer le débit réel du transfert de fichiers résout la plupart de la confusion entre « la connexion est rapide » et « le téléchargement semble lent ».
Le seul format qui n'a utilisé aucune définition systématiquement
La disquette 3,5 pouces « 1,44 Mo » est l'exception, et c'est un cas véritablement instructif plutôt qu'une note de bas de page. Sa capacité formatée réelle est de 1 474 560 octets. Ce nombre n'est pas 1,44 × 1 000 000 (1 440 000, la lecture décimale) et ce n'est pas 1,44 × 1 048 576 (1 509 949, la lecture binaire). C'est 1,44 × 1 024 × 1 000 : un hybride où « kilo » est lu comme le binaire 1 024, correspondant à la façon dont la mémoire et les secteurs de disque sont réellement adressés, mais « méga » est ensuite lu comme un multiple décimal de 1 000 de ce kilooctet déjà binaire. Ni la convention binaire IEC ni la convention décimale SI pure ne le décrit ; le format prédatait à la fois l'effort de normalisation de 1998 et la pression commerciale qui a accompagné les disques multi-gigaoctets, et il était livré avec une définition d'unité qui ne satisfaisait personne en particulier.
Un moyen rapide de vérifier la cohérence de toute taille annoncée
Si un nombre est utilisé pour décrire une capacité matérielle que vous pouvez compter physiquement en unités binaires, comme la RAM ou la taille du cristal de puce flash, attendez-vous à ce qu'il soit une puissance propre de deux et donc identique quel que soit le système de préfixes utilisé. S'il décrit quelque chose de fabriqué ou provisionné vers un objectif décimal rond, des disques de stockage, des niveaux de stockage cloud, des allocations de bande passante, attendez-vous à ce que le pourcentage « manquant » apparaisse au moment où un système d'exploitation le signale à nouveau en unités divisées binaires, avec des étiquettes incorrectes.