Il y a quelques années les observateurs « salivaient » en évoquant les architectures machines 64 bits et déjà anticipaient sur le futur 128 bits, voire au-delà. Concrètement le 64 bits s’es effectivement fait une place enviable, mais plus personne ne parle de 128 ou 256 bits. Cela veut-il dire que ces machines n’existent pas et qu’aucun jeu d’instruction n’a été élaboré pour elles ?

 

Pour bien comprendre l’évolution des architectures processeurs, il faut rappeler ce qu’est une machine et à quoi correspondent les critères 32, 64 bits et au-delà.

En fait, il s’agit du nombre de bits qui constituent en quelque sorte le fil rouge de la machine : la taille du mot mémoire, celle des adresses mémoires et des registres (là où s’exécutent les traitements) et celle des bus d’acheminement des données et adresses dans la machine. Quand on dit, par exemple, qu’une machine est 64 bits, cela veut dire que les bus de données sont 64 bits et transportent en un seul flot des blocs de données 64 bits, que l’adresse d’un mot mémoire est exprimée elle-aussi sur 64 bits et que les registres sont calibrés sur le même format.

En gros, on peut simplifier en disant que c’est la taille des zones mémoire et celle des bus de transport. Avec 64 bits, on peut ainsi stocker une valeur jusqu’à 264, soit 18 446 744 073 709 551 616 ou à peu près 18,5 petabytes et la faire passer en un seul flot par les bus de transport.

Avec 128 bits, on pourrait stocker une valeur entière jusqu’à 2128, soit à peu près le nombre d’atomes qui existe dans l’univers…

Or à quoi peut nous servir une telle capacité, si l’on n’est pas capable de construire des mémoires machines ou des systèmes de stockage de taille équivalente. Tout est là, il faut qu’il y ait adéquation entre les ressources physiques, mémoire et stockage des machines, avec la largeur intrinsèque en nombre de bits de l’architecture machine.

Des besoins très particuliers

Avec une machine 64 bits, on atteint déjà les limites de fabrication physiques des machines à « usage général ». La capacité mémoire d’un z14 d’IBM, considéré comme le mainframe le plus puissant de la planète, est de l’ordre de 100 Tbytes, soit 1014 bytes ou encore 100 millions de milliards de bytes.

On est donc encore relativement loin du maximum 64 bits, les 100 Tbytes du z14 étant 180 000 fois plus petits que les 18 x 1018 de l’architecture 64 bits. On est donc tout à fait tranquille et il n’y a pas lieu de s’inquiéter sur l’incapacité de nos machines à traiter et à stocker les volumes de données à venir.

Il est tout aussi clair que l’on n’a pas besoin de 128 bits pour prendre en compte les besoins prévisibles, sauf dans des cas particuliers, comme les processeurs graphiques ou certains travaux scientifiques, des traitements cryptographiques, par exemple, qui manipulent des largeurs de données beaucoup plus importantes, bien au-delà du 64 bits.  Certains processeurs graphiques comme les NVIDIA GTX 280, AMD Radeon R9 290 et plusieurs modèles Tesla d’Elon Musk, utilisent déjà des bus mémoire 512 bits et Intel a même ajouté des instructions 512 bits à son jeu d’instructions x86.

De plus, une machine 64 bits est tout à fait capable d’exécuter des traitements et des transferts sur des sous-ensembles ou des sur-ensembles de 64 bits, sur des octets 8 bits, des mots de 16 ou 32 bits et donc de 128 ou 256 bits. Au prix il est vrai de quelques contorsions qui vont nuire (légèrement) aux performances.

Dans le domaine scientifique en mode SIMD (Single Instruction Multiple Data), dans lequel un même code s’applique en parallèle sur des données différentes, les données sont généralement des vecteurs qui se servent de registres 128 bits pour stocker des valeurs intermédiaires sur quatre valeurs flottantes 32 bits, par exemple. Le processeur étant capable de traiter ces valeurs en parallèle, ce qui contribue fortement aux performances d’ensemble.

 

 

 

 

 

 

 

 

 

 

 

L’essentiel de l’architecture d’un processeur se résume à la taille des bus de contrôle, mémoire et entrée/sortie. Un format 128 bits ne servirait pas à grand-chose, si ce n’est à véhiculer des « 0 »…

 

Un OS 128 bits ne servirait à rien

 

Cela dit, un jeu d’instructions sans OS, cela ne sert « a priori » pas à grand-chose, s’il ne peut s’appuyer sur un système d’exploitation de même « taille ».

Et on peut se demander pourquoi ni Linux, ni Windows n’ont jugé bon d’écrire un véritable OS 128 bits. Tout simplement parce que le besoin n’existe pas et qu’on le remplace par des artefacts ajoutés aux modules système existants.

S’il faut traiter des données plus volumineuses, on sait le faire sans passer par un OS dédié. Les compilateurs ont depuis longtemps été adaptés, le compilateur C GCC par exemple, qui manipule des données 128 bits nativement.

Quant aux performances forcément dégradées, elles sont largement compensées par l’augmentation native de celle des processeurs de nouvelle génération. Avec au total un gain appréciable, même en passant par quelques détours pour simuler le 128 ou 256 bits.

Techniquement parlant, il n’y aurait aucune difficulté à faire évoluer Windows, Linux ou Unix vers un mode 128 ou 256 bits, voire au-delà. Mais on se rendrait vite compte que ça ne servirait à rien, si ce n’est à traiter et à transporter des « 0 » pour quelques données réelles, largement minoritaires.

Cela dit, on peut très bien imaginer que pour certaines applications IoT ou capteurs, on ait besoin spécifiquement d’un OS calibré 128 bits, mais ce serait un OS dédié propriétaire, conçu pour traiter un problème spécifique et en aucun cas, un OS à usage général.

On arrête donc de rêver et on se contente de ce dont on dispose…