Présentation
En anglaisNOTE DE L'ÉDITEUR
L'article H1199 a été complété par les articles suivants :
- H1200, Extensions SIMD des jeux d'instructions, de Lionel Lacassagne
- H1201, RISC-V : un jeu d’instructions Open Source, de Daniel Etiemble
- H1202, Jeux d’instructions : extensions SIMD et extensions vectorielles, de Daniel Etiemble et Lionel Lacassagne.
Extensions SIMD des jeux d'instructions
RÉSUMÉ
Les jeux d’instructions comprennent l’ensemble des instructions machine qui permettent à un processeur d’exécuter un programme. Ils constituent l’interface entre le matériel et le logiciel: ils définissent les opérations que doit effectuer le matériel et ils sont la cible d’un compilateur. Cet article présente les caractéristiques générales des jeux d’instructions, à travers l’examen des points essentiels: instructions de longueur fixe ou variable, format des données et des instructions, modes d’adressage, manière d’implémenter au niveau des instructions les constructions essentielles des langages de haut niveau.
Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.
Lire l’articleABSTRACT
Instruction sets (ISA) comprise the set of machine instructions that are used by a processor to run a program. They form the interface between hardware and software: they specify the different hardware operations, and are the target of a compiler. This article presents the main features of instruction sets, considering their main characteristics: fixed-length or variable length instructions, data formats, instruction formats, addressing modes, and techniques to translate the main structures of high level languages into machine instructions.
Auteur(s)
-
Daniel ETIEMBLE : Ingénieur INSA Lyon - Professeur émérite à l'université Paris Sud
INTRODUCTION
Les jeux d'instructions des processeurs constituent un langage statique minimum à l'interface entre le matériel et le logiciel : les instructions machine définissent les opérations que doit effectuer le matériel et elles sont la cible d'un compilateur. Ces jeux constituent une architecture apparente se distinguant des architectures matérielles qui exécutent les instructions. En effet, un programme, sous forme de langage machine après compilation pour un certain jeu d'instructions, doit pouvoir être exécuté par une gamme de machines utilisant ce jeu d'instructions, mais qui diffèrent en termes de vitesse d'exécution, consommation énergétique, taille, coût, etc. Les gammes IBM 360 et 370 dans le passé, les processeurs exécutant le jeu d'instructions x86, IA-32 et Intel 64 actuellement, sont des exemples illustrant la différence entre jeu d'instructions et architectures matérielles l'utilisant. Cependant, un jeu d'instructions évolue dans le temps en fonction des besoins des applications et des possibilités offertes par le matériel : passage des jeux d'instructions de 8 à 16 bits, puis 32 bits, puis 64 bits, ajouts de nouvelles instructions. Le problème est que la compatibilité binaire ascendante doit être maintenue pour les processeurs d'usage général : un processeur exécutant une version plus récente du jeu d'instructions doit être capable d'exécuter sans recompilation un code binaire d'une version ancienne.
Cet article ne détaille pas un jeu d'instructions particulier ; il présente les caractéristiques essentielles communes à tous les jeux d'instructions : longueur des instructions, format des données et des instructions et toutes les techniques qui permettent d'implanter au niveau du jeu d'instructions les constructions essentielles des langages de haut niveau que sont les affectations, les ruptures de séquence, les conditionnelles, les boucles, les appels et retours de procédure, etc. Il détaille plus particulièrement les caractéristiques des jeux d'instructions appelés RISC (instructions de longueur fixe) et du jeu d'instructions CISC dominant x86, IA-32, Intel 64 (instructions de longueur variable).
Pour les deux types de jeu d'instructions, sont détaillés les accès aux données (registres, accès mémoire et modes d'adressage), les instructions arithmétiques et logiques, les instructions de rupture de séquence, les instructions d'appel et retour de procédure, les instructions flottantes et quelques instructions particulières. Un résumé des caractéristiques des jeux IA-32, Intel 64 d'une part, et MIPS32 et MIPS64 d'autre part est présenté. Une annexe donne des indications sur les problèmes de codage des instructions.
MOTS-CLÉS
jeu d'instructions interface matériel-logiciel RISC CISC types d'instruction format d'instruction
KEYWORDS
instruction sets | hardawre-software interface | RISC | CISC | instruction types | instruction format
DOI (Digital Object Identifier)
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(238 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Présentation
11. Annexe : codage des instructions
11.1 Principes
Une instruction comprend un certain nombre d'informations : ce que fait l'instruction (appelé généralement le code opération), et le moyen de spécifier les opérandes et le résultat. Les opérandes peuvent être dans des registres, dans l'instruction (immédiat) ou dans la mémoire. Le résultat peut être dans un registre ou rangé en mémoire. Les instructions de saut ou de branchement manipulent des adresses, dont une partie peut être dans un registre et une autre dans l'instruction, sous forme d'un déplacement par rapport au contenu du compteur de programme.
Le codage des instructions consiste à spécifier un certain nombre de champs ou sous-champs qui vont déterminer :
-
la nature de l'instruction à travers le code opération ;
-
un nom ou un numéro de registre parmi les registres disponibles ;
-
les immédiats et les déplacements ;
-
le mode d'adressage, qui détermine la manière dont est calculée l'adresse mémoire.
Dans les jeux d'instructions anciens, jusqu'aux années 1980, le terme « mode d'adressage » comprenait l'ensemble des manières d'obtenir les opérandes : registre, immédiat, manière d'accéder aux données en mémoire, etc. Ensuite, le terme « mode d'adressage » s'est plutôt limité aux modes d'accès mémoire.
Le codage des instructions dépend beaucoup du choix de la longueur des instructions :
-
pour les jeux d'instructions à longueur fixe, généralement 32 bits, le problème est d'organiser champs et sous-champs dans ces 32 bits ;
-
pour les jeux d'instructions à longueur variable, l'objectif est de minimiser la taille du code, c'est-à-dire d'organiser le codage des instructions pour qu'elles n'utilisent que le nombre minimal d'octets.
Nous illustrons les principes du codage des instructions avec deux exemples relativement simples, mais significatifs des jeux d'instructions les plus utilisés :
-
le jeu d'instructions MIPS32, qui est la version 32 bits du jeu d'instructions MIPS, est représentatif des jeux d'instructions de longueur fixe. Il est comparable à d'autres jeux d'instructions RISC utilisés pour l'embarqué, comme le PowerPC ;
-
le jeu d'instructions du processeur 8086 d'Intel, qui est l'ancêtre des jeux d'instructions IA-32 et Intel 64 et de ses variantes AMD. Il est représentatif...
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(238 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Annexe : codage des instructions
BIBLIOGRAPHIE
-
(1) - AMDAHL (G.M.), BLAAUW (G.A.), BROOKS (F.P.) Jr - Architecture of the IBM system/360. - IBM J. Research and Development, 8(2), p. 87-101, avr. 1964.
-
(2) - Intel® 64 and IA-32 architectures software developer manuals. - http://www.intel.fr/content/www/fr/fr/processors/architectures- software-developer-manuals.html
-
(3) - 80286 and 80287 programmer's reference manual. - http://bitsavers.informatik.uni-stuttgart.de/ pdf/intel/80286/210498-005_ 80286_and_80287_Programmers_Reference_Manual_1987.pdf
-
(4) - PATTERSON (D.A.) - Reduced instruction set computers. - Communications of the ACM – Special section on computer architecture, vol. 28, n° 1, p. 8-21, janv. 1985.
-
(5) - HENNESSY (J.L.), PATTERSON (D.A.) - Architecture des ordinateurs, une approche quantitative. - Vuibert Informatique (2003).
-
(6) - VAX...
DANS NOS BASES DOCUMENTAIRES
-
Hiérarchie mémoire : la mémoire virtuelle.
-
Processeurs : exécution pipeline des instructions.
-
Processeurs VLIW.
-
Les extensions SIMD des jeux d'instructions.
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(238 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive