Contactez-nous
Instructions de rupture de séquence
Jeux d'instructions des processeurs
H1199 v1 Article de référence

Instructions de rupture de séquence
Jeux d'instructions des processeurs

Auteur(s) : Daniel ETIEMBLE

Date de publication : 10 févr. 2016 | Read in English

Logo Techniques de l'Ingenieur Cet article est réservé aux abonnés
Pour explorer cet article plus en profondeur Consulter l'extrait gratuit

Déjà abonné ?

Présentation

1 - Rôle des jeux d'instructions

  • 1.1 - Architecture apparente et architectures matérielles
  • 1.2 - Langages de haut niveau et langage machine
  • 1.3 - Fossé sémantique entre langage de haut niveau et langage machine

2 - Composantes d'une instruction machine

3 - Accès aux données

4 - Instructions arithmétiques et logiques

5 - Instructions de rupture de séquence

6 - Instructions flottantes

7 - Instructions particulières dans les jeux d'instructions

  • 7.1 - Support pour le calcul décimal
  • 7.2 - Support pour le produit scalaire
  • 7.3 - Autres instructions

8 - Exemples de jeux d'instructions

9 - Remarques pour conclure

10 - Glossaire

11 - Annexe : codage des instructions

Sommaire

Présentation

NOTE 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

10/03/2022

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’article

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.

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 93 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v1-h1199

Lecture en cours
Présentation

Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

5. Instructions de rupture de séquence

Les ruptures de séquence sont les sauts, les branchements et les appels et retours de procédure. Dans ce texte, nous distinguons les sauts et les branchements, bien que cette distinction ne soit pas faite dans tous les jeux d'instructions :

  • le saut charge le compteur de programme avec une adresse absolue (CP ← Adresse ) ;

  • le branchement ajoute un déplacement positif ou négatif au compteur de programme (CP ← NCP + déplacement ). La valeur NCP à laquelle s'ajoute le déplacement est celle de l'instruction suivant le branchement.

Les sauts et les branchements peuvent être inconditionnels ou conditionnels en fonction du résultat d'un test qui peut être effectué de différentes manières.

5.1 Sauts inconditionnels

L'action CP ← Adresse peut être effectuée de différentes manières :

  • l'adresse du saut est contenue dans un registre (CP ← ). C'est le cas pour les jeux d'instructions 32 bits. Par exemple, pour MIPS, c'est l'instruction JR Ri où i est le numéro de registre. Cela implique de disposer des instructions pour charger 32 bits (l'adresse) dans un registre. Pour MIPS, si H16 et L16 sont les 16 bits de poids fort et de poids faible de l'adresse, c'est la suite d'instructions LHI R, H16 et ORI R, R, L16 qui charge l'adresse dans Ri ;

  • l'adresse du saut peut être obtenue par concaténation de la partie haute de CP et d'une constante de type déplacement contenue dans l'instruction. Le saut est alors limité à une zone de l'adresse d'adressage dont la taille dépend du nombre de bits de la constante.

Les branchements inconditionnels sont généralement réalisés par des branchements conditionnels avec la condition « vrai ».

HAUT DE PAGE

5.2 Branchements conditionnels

L'instruction de haut niveau « Si condition alors séquence 1 sinon séquence 2 » implique deux actions :

  • 1) évaluer la condition et mémoriser le booléen résultat ;

  • 2) utiliser les branchements conditionnels et inconditionnels...

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 94 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


Lecture en cours
Instructions de rupture de séquence

Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

Sommaire
Sommaire

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...

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 93 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

Ressources documentaires

Microprocesseurs - Approche générale

Les microprocesseurs sont au cœur des systèmes numériques. Ils permettent le développement de logiciels ...

Introduction à l'architecture des ordinateurs

L'article commence par une brève histoire des machines informatiques et introduit ensuite les principes ...

Processeurs : exécution pipeline des instructions

Cet article présente les caractéristiques essentielles de l'exécution pipeline des instructions dans les ...

Processeurs multithreads et multicœurs

Les processeurs multithreads et les processeurs multicœurs permettent l’utilisation des trois types de ...