Connexion Premium

#Nextquick Quelle différence entre les Go et les Gio, et d’où vient-elle ?

Allez, Gigo !

#Nextquick Quelle différence entre les Go et les Gio, et d’où vient-elle ?

Illustration : Flock

Vous savez quelle est la différence entre les Mo et les Mio, les Go et les Gio (etc.) ? Oui, c’est une histoire de base 2 et 10, mais savez-vous d’où vient l’abus de langage qui nous fait parler de Go à la place des Gio ? Comme proposé par CharlesP. dans les commentaires, l’heure est à l’explication !

L’informatique est régie par les bits, l’unité de base qui peut valoir 0 ou 1. On les regroupe ensuite par paquets de huit pour former un octet. Un octet, ce n’est pas grand-chose, rapidement des préfixes ont été ajoutés : kilo, méga, giga, téra, péta, exa, zetta, yotta, ronna et quetta. Les deux derniers ont été ajoutés récemment.

Binaire vs décimal : fight

On parle, souvent par abus de langage, de ko, Mo, Go, To, Po en informatique alors qu’on devrait raisonner en base 2. Les ko, Mo, Go… sont en base décimale avec des puissances de 10, là ou les kio, Mio, Gio… sont en binaire avec des puissances de 2. Pourquoi binaire ? Car le bit informatique peut avoir deux valeurs.

En informatique, c’est un mélange des genres, où 1 ko (kilooctet) peut valoir 1 000 octets (10³) ou 1 024 (2¹⁰) octets. Pourtant, le Bureau International des Poids et Mesures (BPIM) définit précisément les préfixes du Système international d’unités (SI) : des multiples de 10.

Minute maître Capello : : « À l’exception des symboles da (déca), h (hecto), et k (kilo), tous les symboles des préfixes des multiples sont en majuscules et tous les symboles des préfixes des sous-multiples sont en minuscules. Tous les noms de préfixes sont en minuscules, sauf en début de phrase ».

Les préfixes SI « ne doivent pas être utilisés pour exprimer des puissances de 2 »

Le BIPM confirme s’il en est besoin que « les préfixes SI représentent strictement des puissances de 10. Ils ne doivent pas être utilisés pour exprimer des puissances de 2 (par exemple, un kilobit représente 1000 bits et non 1024 bits) ».

Il dresse aussi la liste des noms et symboles recommandés pour les préfixes correspondant à des puissances de 2. On retrouve Ki avec un K majuscule pour kibi (contrairement au ko avec k minuscule, vous suivez ?). Viennent ensuite les mébi, gibi, tébi, pébi, exbi, zébi, yobi, robi et quebi. Ces préfixes ont été présentés par l’International Electrotechnical Commission (IEC) en 1998, soit il y a presque 30 ans ! Ils ne font par contre pas partie du SI.

Le kilo c’était la facilité pour se faire comprendre de tous

Le NIST donne du contexte :

« Autrefois, les informaticiens ont remarqué que 2¹⁰ était très proche de 1 000 et ont commencé à utiliser le préfixe SI « kilo » pour désigner 1024. Cela a suffisamment bien fonctionné pendant une décennie ou deux, car tous ceux qui parlaient de kilo-octets savaient que ce terme impliquait 1024 octets. Mais, presque du jour au lendemain, un public beaucoup plus nombreux – presque tout le monde – s’est mis à acheter des ordinateurs. Le secteur de l’informatique a alors eu besoin de s’adresser aussi bien aux physiciens et aux ingénieurs, qu’aux gens ordinaires, dont la plupart savent qu’un kilomètre équivaut à 1 000 mètres et qu’un kilogramme équivaut à 1 000 grammes ».

C’était donc pratique, mais « le résultat est qu’aujourd’hui, « tout le monde » ne « sait » pas ce qu’est un mégaoctet ».

Le NIST continue son analyse : « Quand on parle de mémoire en informatique, la plupart des fabricants utilisent le mégaoctet pour désigner 2²⁰= 1 048 576 octets, mais les fabricants de périphériques de stockage utilisent généralement ce terme pour désigner 1 000 000 octets. Et si deux définitions du mégaoctet ne suffisaient pas, voici un troisième mégaoctet de 1 024 000 octets », utilisé avec les disquettes de 3,5″.

Petit aparté : les disquettes avaient une capacité de 1 474 560 octets, soit 1 440 Kio, qui se sont transformés en 1,44 Mo, avec un « mégaoctet » hybride qui n’est ni un Mo ni un Mio.

Nous avons ainsi :

  • 1 méga : 1 000 000 (SI)
  • 1 méga : 1 048 576 (2²⁰)
  • 1 méga : 1 024 000 (1 024 kilo ou 1 000 x 2¹⁰)

Un disque dur de 500 Go devrait donc correspondre à 500 000 000 000 octets sur la base du SI, mais en base binaire ce n’est plus la même chose : 500 000 000 000 / 1 073 741 824 (2³⁰)= 465,7 Gio.

La confusion est partout. Déjà, elle arrange les vendeurs de périphériques de stockage, puisque c’est toujours plus intéressant d’afficher 500 Go que 465 Go, ou bien 1 To à la place 931 Go, etc. Windows affiche des Go alors que ce sont en réalité des Gio.

Un exemple avec cette clé USB de « 16 Go ». Selon Windows, la capacité totale est de 15 523 115 008 octets ou 14,4 Go. Si on parle de Go, la réalité devrait être 15,52 Go. Si on parle de Gio alors on a bien 14,45. La clé est vendue pour 16 Go, elle fait 15,52 Go et Windows affiche 14,4 Go.

IBM propose un tableau de comparaison entre la valeur décimale (ko, Mo, Go…) et l’équivalent en binaire (Kio, Mio, Gio…). Un exemple pour comprendre le fonctionnement avec 100 exaoctets. En système décimal (exa), on est à 100 x 10¹⁸. Pour passer en exbioctets, on divise par 2⁶⁰ pour arriver à 86,7 Eio.

Commentaires (22)

votre avatar
Le télescopage vient de la rencontre entre deux domaines :

  • dans le stockage, le ko vaut couramment 1024 octets, parce que c'est l'unité naturelle quand tu as des disques qui ont des secteurs de 512 octets ;

  • en réseau, on mesure des bandes passantes, des Hz, des MHz, et c'est donc naturellement qu'on manipule des mégabits et des Mo en puissance de 10.


Le problème apparaît à la rencontre des deux, quand il faut 8.38s pour transmettre 1Mo sur un réseau à 1Mb/s...
votre avatar
Cette dernière phrase m'a fait plus de mal que prévu. :plantage:
votre avatar
Si on rajoute en plus la notion d'octet ou Octets/s, ça ne simplifie pas, surtout qu'on risque de repartir sur le vieux débat Byte vs Octet.
votre avatar
J'avoue être perplexe face à cette justification.

Que tu utilises la base décimale pour des unités qui en sont : je ne vois aucun souci.
Par contre, dès que l'on parle de (transfert de) données, c'est la base binaire du bit qui doit être utilisée, et la seule qui a un sens.

Les préfixes décimaux proviennent simplement de l'habitude de les utiliser avec la quasi-intégralité des unités SI, vu que notre monde fonctionne essentiellement en base décimale : celle avec laquelle nous avons appris à compter.
On les a simplement, sans se poser de questions, transposées dans un monde binaire.

Maintenant que la question s'est posée, et que les préfixes binaires ont été définis par l'IEC, il n'y a plus aucune excuse pour les gens évoluant dans ce milieu.

Concernant le reste de la population, par manque de culture informatique, les préfixes décimaux continueront à être utilisés et les préfixes binaires incompris & moqués.
votre avatar
Disons que dans les réseaux, c'est comme dans les télécom, la radio, et par extension la physique : des multiples de 10. Personne n'a jamais imaginé que Gigabit Ethernet pouvait aller 1024 fois plus vite que l'Ethernet à 1 Mb/s ; un analyseur de spectre n'a jamais été gradué en 1024. Alors que dans le stockage, que ce soit dans les disques, les systèmes de fichiers, et même déjà sur les bandes magnétiques à la grande époque, il y a de la puissance de 2 partout (secteur de 512 le plus souvent). Chaque côté pense être le plus légitime et que l'autre a tort. Je n'ai pas bien compris de quel côté tu es, moi j'expliquais juste l'origine du hiatus.
votre avatar
En fait, il faudrait faire la différence entre transmission série (sur un fil ou sur une paire) qui est forcément sur base décimale, et la transmission parallèle sur un bus où l'on va transférer octet par octet d'un coup (sur un top d'horloge), le bit/s n'est plus une réalité physique. voire 8 octets par 8 sur un bus 64 bits.
votre avatar
C'est pour ca qu'il existe les ko/Mo/Go/To, et les kio/Mio/Gio/Tio, pour faire la différence entre les "o" qui valent 1000 et les "io" qui valent 1024.
votre avatar
Eh mais, ça me vole mes idées d'articles !
next.ink Next
votre avatar
Oui, et je ne retrouvais pas où je l’avais lu pour créditer !!! C’est maintenant fait en bonne et due forme !
votre avatar
Ouah, je suis dans un sous-titre, mon jour de gloire ! ❤️
votre avatar
votre avatar
Le sous titre juste parfait.
votre avatar
Allez, Gigo !
D'agneau?
votre avatar
What ?! :francais:
votre avatar
Je viens de remarquer un autre truc.
ls et eza -lb sont correctes;
lsd -lh est passable, il manque le "i"
par contre eza -l n'est pas bon.


$ dd if=/dev/zero bs=1024 count=1 of=1KiB
$ dd if=/dev/zero bs=1000 count=1 of=1ko
$ /usr/bin/ls -l
1024 1KiB
1000 1ko
$ /usr/bin/ls -lh
1,0K 1KiB
1000 1ko
$ /usr/bin/eza -l
1,0k 1KiB
1,0k 1ko
$ /usr/bin/eza -lb
1,0Ki 1KiB
1 000 1ko
$ /usr/bin/lsd -lh
1.0 KB 1KiB
1000 B 1ko
votre avatar
je me souvenais de la différence entre les bits calculés en base 10 en général et les bytes, calculés en base 8 de mémoire, avec un octet = 8 bits. Surtout pour les débits, où donc 10 Megabits par seconde (Mbps) était équivalent à 8 mégaoctets par seconde (Mo/s). Ca aussi c'est une hypersimplification ?
votre avatar
Non, 10 Mb/s = 1.25 Mo/s.
votre avatar
Ajoutons à cela que 1 octet = 1 Byte (B) = 8 bits (b) et après on se demande pourquoi mon grand-père ne comprend pas pourquoi sa connexion internet est vendue en Mb et que sa vitesse de téléchargement est en Mo 🤣
votre avatar
En fait,
on devrait toujours écrire en entier bit/s ou bps pour les anglophones invétérés et non b/s pour éviter de confondre avec les B/s (bytes ou octets/s).
fr.wikipedia.org Wikipedia
votre avatar
C'est un de mes combats au travail: faire disparaître les B imprécis, et pouvant être confondus avec les b.
Il y a déjà assez de problèmes sur les débits avec les bandes passantes (Hz), les débits symboles (modulation), les débits binaires bruts (signalling rate), les débits binaires hors codage, les débits utiles (hors codage et overhead des protocoles - du coup qui dépendent de la couche où on se place) ....
votre avatar
Les bps, on est d'accord que ce sont des bits x picoseconde ?
votre avatar
Si ça peut vous aider, pour m'imaginer de tête la capacité d'un support je retire "environ 10%" à la taille affichée.

Exemple avec la clé USB de 16Go - 1,6 (les 10%) = 14.4
Pour un nas en RAID5, je dis aux gens : "T'as 6 disques de 8To. T'en retires 1 (5*8=40), et tu retires 10% (40-4), tu vas avoir 36To dans ton nas"

Ça marche toujours plus ou moins précisément.
C'est à la louche mais c'est comme ça que je fais ^^