Présentation

Article

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

Article de référence | Réf : H1199 v1

Instructions arithmétiques et logiques
Jeux d'instructions des processeurs

Auteur(s) : Daniel ETIEMBLE

Date de publication : 10 févr. 2016

Pour explorer cet article
Télécharger l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !

Sommaire

Présentation

Version en anglais English

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.

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

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

DOI (Digital Object Identifier)

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


Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(240 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

ABONNEZ-VOUS

Version en anglais English

4. Instructions arithmétiques et logiques

Les instructions arithmétiques et logiques, avec les instructions de décalage et de rotations permettent de réaliser l'ensemble des opérations de calcul sur des données entières. Ces opérations portent sur la taille maximale des opérandes entiers, c'est-à-dire 32 ou 64 bits selon la version du jeu d'instructions. Dans les jeux d'instructions (3,0), les opérations ne portent que sur des contenus de registres. Dans les autres, les opérations peuvent porter aussi sur des opérandes mémoire. Lorsque les opérations ont des tailles inférieures à la taille des registres, il y a extension lors des chargements depuis la mémoire pour le modèle (3,0) et pour toutes les instructions pour les autres modèles.

Les instructions d'addition sans ou avec retenue d'entrées distinguent généralement l'addition sur des données signées et sur des données non signées. Dans certains jeux d'instruction, un débordement lors des additions signées produit une exception. La situation est identique pour les instructions de soustraction. Les instructions d'addition avec saturation, qui fournissent la plus petite ou la plus grande valeur représentable en cas de débordement, sont généralement absentes des jeux d'instructions d'usage général, à l'exception du jeu ARM A32.

Les instructions de multiplication et de division sont plus particulières. Une multiplication de N bits par N bits fournissant un résultat sur 2N bits, les instructions de multiplication sont souvent décomposées en deux pour fournir sur N bits la partie basse et la partie haute du résultat. On peut aussi trouver les différentes combinaisons signé/non signé pour les opérandes d'entrée. Ces particularités peuvent se retrouver pour les instructions de division.

Les instructions logiques effectuent bit à bit les opérations logiques Et, Ou, Ou exclusif, Complément, etc.

Les instructions de décalage arithmétique ou logique, sans ou avec la retenue d'entrée, à droite ou à gauche, sont effectuées sur le contenu d'un registre avec résultat dans un autre registre. Le nombre de positions du décalage est spécifié dans un troisième registre, ou dans le champ immédiat de l'instruction. Les instructions de rotation réinjectent les bits sortants avec ou sans la retenue d'entrée.

On peut signaler le cas particulier du jeu ARM A32 pour lequel il peut y avoir décalage ou rotation du second opérande de l'instruction avant d'effectuer l'opération.

Une application...

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

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(240 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

ABONNEZ-VOUS

Lecture en cours
Instructions arithmétiques et logiques
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...

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

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(240 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

ABONNEZ-VOUS