Passer au contenu

Pour gagner en vitesse, les processeurs prennent des voies détournées

Fractionnement et mise en parallèle du trafic de données permettent d’augmenter la puissance de calcul des puces.

A l’origine, non seulement les fréquences des processeurs étaient beaucoup plus faibles, mais l’exécution d’une instruction nécessitait de nombreux ” cycles ” machine. Un progrès important a été accompli dans les années quatre-vingt, avec l’invention des microprocesseurs Risc (processeurs à jeu d’instructions réduit). L’idée consistait à simplifier le jeu d’instructions du processeur, en ne conservant que celles qui étaient les plus fréquemment utilisées et en faisant l’impasse sur les microprogrammes. Il fallait pouvoir exécuter toutes les instructions en un seul cycle. Un processeur à 10 MHz exécuterait alors réellement 10 millions d’instructions simples par seconde, et non plus, par exemple, 1 million pour un processeur dont le temps d’exécution d’une instruction durerait en moyenne dix cycles.

Une chaîne de montage

Les architectures Risc permettaient d’atteindre cet objectif de deux manières. Tout d’abord, il est bien plus facile de créer un circuit pour une cinquantaine d’instructions simples, plutôt que deux cents utilisant des opérandes à modes d’adressage mémoire complexes. Ensuite, le cycle machine minimal est fonction du ” chemin critique “, c’est-à-dire de l’instruction, dont l’exécution est la plus longue. Des instructions plus simples autorisent donc un temps de cycle plus court, et, par conséquent, une fréquence de fonctionnement plus élevée.Rapidement, les constructeurs se sont rendu compte qu’il était possible de réaliser plus d’une instruction par cycle : en exécutant plusieurs instructions en parallèle. Cette idée a donné naissance à des processeurs vectoriels spécialisés (SIMD, Single Instruction Multiple Data), qui demandent des systèmes d’exploitation et des langages de programmation dédiés. Les processeurs superscalaires de la génération actuelle exploitent quant à eux une autre forme de parallélisme qui existe dans tous les programmes, mais ils nécessitent des circuits complexes. Les concepteurs de microprocesseurs ont d’abord eu recours à une technique connue de tous et beaucoup plus simple à mettre en ?”uvre : le principe de la chaîne de montage ou pipeline (ou encore bus) d’instructions. A tout instant, plusieurs instructions machine sont en cours de traitement par des circuits spécialisés indépendants… Elles sont en quelque sorte dans des phases d’assemblage différentes.Schématiquement, une instruction peut, par exemple, se décomposer en quatre phases distinctes : fetch, decode, execute et writeback. Le fetch correspond à la lecture dans la mémoire du code de la prochaine instruction à exécuter. Comme son nom l’indique, decode identifie l’instruction : il prépare les opérandes et les dirige vers l’étage de calcul approprié. La phase execute est le calcul proprement dit, et enfin writeback range le résultat.

Des phases toujours plus rapides

Le processeur ne réalise toujours qu’une instruction par cycle, mais chaque étape est beaucoup plus simple, sans oublier qu’en réduisant le chemin critique, on augmente la fréquence. Dans l’idéal, on obtiendrait ainsi un processeur quatre fois plus rapide. En pratique, ce n’est pas tout à fait vrai, les phases n’étant pas parfaitement équilibrées.Par ailleurs, certaines opérations, comme les accès mémoire, posent des problèmes et contraignent parfois la chaîne à attendre. On peut même être obligé de vider entièrement le pipeline en abandonnant le résultat d’opérations déjà partiellement exécutées, notamment en cas d’instructions de branchement. Le principe du pipeline d’instructions a été poussé encore plus loin dans les processeurs actuels avec un plus grand nombre de phases, toujours plus simples et rapides (on parle souvent de superpipeline).L’Ultra-SPARC-I de Sun Microsystems dispose, par exemple, d’un pipeline à neuf étages et traite quatre instructions par cycle. On retrouve cette architecture interne dans presque tous les processeurs actuels, y compris les Cisc (Complex Instruction Set Computing). C’est d’ailleurs grâce à ce type d’approche (associé à des caches) qu’ils parviennent désormais à exécuter une instruction par cycle comme les processeurs Risc et à atteindre des fréquences de plusieurs centaines de mégahertz.

🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.


CHRISTOPHE GROSJEAN