Présentation
EnglishRÉSUMÉ
Cet article décrit les processeurs superscalaires «flot de données restreints», le plus souvent appelés superscalaires à exécution non ordonnée (out-of-order). Pour utiliser au mieux le parallélisme existant entre les instructions d’un code séquentiel, ce type de processeurs démarre l’acquisition et le décodage des instructions dans l’ordre, exécute les instructions selon le flot de données, puis termine les instructions dans l’ordre pour permettre de traiter les exceptions comme pour exécution strictement séquentielle. Aux caractéristiques des superscalaires «dans l’ordre» s’ajoutent de nouvelles caractéristiques pour permettre une exécution «flot de données» et la terminaison dans l’ordre. Ces processeurs sont maintenant les cœurs de la plupart des processeurs multicœurs.
Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.
Lire l’articleAuteur(s)
-
François ANCEAU : Ingénieur INPG Grenoble, - Professeur CNAM retraité, Chercheur au LIP6, UPMC
-
Daniel ETIEMBLE : Ingénieur INSA Lyon - Professeur émérite à l’université Paris Sud
INTRODUCTION
Cet article examine les caractéristiques principales des processeurs superscalaires « flot de données », souvent appelés superscalaires à exécution non ordonnée (out-of-order). Comme tous les superscalaires, ces processeurs utilisent le parallélisme d’instructions existant dans un programme séquentiel pour exécuter en parallèle, sous contrôle du matériel, les instructions pouvant s’exécuter simultanément. Alors que les superscalaires dans l’ordre ne peuvent démarrer l’exécution que d’un nombre réduit d’instructions (2 à 4) dans les pipelines des différents opérateurs, les superscalaires flot de données considèrent un nombre beaucoup plus élevé d’instructions pour tirer parti au mieux du flot de données entre instructions. Les instructions sont lues et décodées dans l’ordre, exécutées en flot de données, et terminées dans l’ordre pour permettre le traitement des exceptions comme dans le cas d'une exécution strictement séquentielle.
Cet article présente les mécanismes et structures permettant à la fois le « flot de données » et la terminaison ordonnée. Le tampon de réordonnancement (ROB) reçoit les instructions décodées et garantit la terminaison ordonnée. La gestion des dépendances de données est traitée par le renommage des registres, qui peut être partiel (via les entrées du ROB) ou total (via des registres physiques et une correspondance entre ces registres physiques et les registres architecturaux). Les « stations de réservation » alimentent les opérateurs, permettant de réinjecter au plus tôt les résultats des opérateurs dans les entrées des stations qui attendent ces résultats. Les problèmes de reprise après une exécution spéculative erronée, des interruptions, de l’exécution multithread et des tampons de rangement mémoire sont aussi présentés.
Après un bref historique, les concepts introduits sont illustrés via des exemples de processeurs d’Intel, du Pentium Pro aux cœurs des multicœurs Core, dont certains utilisent le renommage partiel et d’autres le renommage total. L’exemple du Power 4 d’IBM, qui fournit à la partie « flot de données » des groupes d’instructions et termine les instructions par groupe, est également détaillé.
Les limites du parallélisme d’instructions dans un code séquentiel, le mur de la chaleur et un faible gain de performance résultant d’une augmentation importante de la complexité matérielle ont fait que les processeurs superscalaires « flot de données » sont les derniers monoprocesseurs haut de gamme. Mais ils sont maintenant les cœurs de la plupart des processeurs multicœurs.
MOTS-CLÉS
Renommage de registres superscalaire parallélisme d'instructions flot de données station de réservation tampon de réordonnancement
DOI (Digital Object Identifier)
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(239 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
3. Principe de l’exécution dirigée par les données
3.1 Graphe de syntaxe abstraite
Toute expression logico-mathématique peut s'exprimer sous la forme d'un graphe appelé « graphe de syntaxe abstraite » dans lequel les nœuds représentent soit des valeurs d'entrée, soit des opérateurs, et les arcs représentent des valeurs transmises d'un nœud à l'autre.
Par exemple, l’expression Z = (A x B) + C peut être représentée par le graphe de syntaxe abstraite de la figure 4.
La technique d'exécution « dirigée par les données » correspond au fait que chaque opérateur du graphe fonctionne dès qu'il a reçu tous ses opérandes.
L’opérateur produit alors un résultat, qui peut être lui-même un opérande pour un opérateur suivant ou une sortie :
-
un tel mode de calcul n'est pas séquentiel. L'ordre d'exécution des instructions ne dépend que de la disponibilité de leurs opérandes ;
-
toutes les variables manipulées sont à « assignation unique », c’est-à-dire qu'elles ne peuvent recevoir qu'une seule valeur durant toute leur durée de vie ;
-
il n'y a pas de trace d'exécution séquentielle ;
-
cette représentation d'une expression arithmétique met en évidence le maximum de parallélisme présent dans son écriture. Son exécution dirigée par les données est donc la plus rapide qui soit (pour cette écriture de l’expression !). Pour des graphes plus complexes, il existe peut-être des écritures du graphe permettant une exécution plus rapide.
3.2 Exécution dirigée par les données d’un programme informatique
Un tel mode d'exécution n'est pas naturellement adapté à un programme informatique :
-
un programme est une suite séquentielle d'instructions ;
-
il contient des formes itératives (branchements,…) ;
-
ses variables (registres) sont en nombre restreint et donc fréquemment réécrites. Les efforts de parallélisation de son exécution font apparaître des « dépendances » dues en grande...
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(239 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
Principe de l’exécution dirigée par les données
BIBLIOGRAPHIE
-
(1) - THORNTON (J.) - Design of a Computer. - The Control Data 6600.
-
(2) - TOMASULO (R.M.) - An efficient algorithm for exploiting multiple arithmetic unit. - IBM Journal Research and Development, pp. 25-33 (January 1967).
-
(3) - HENNESSY (J.L.), PATERSON (D.) - Architecture des ordinateurs, une approche quantitative (3ème édition). - Vuibert Informatique (2003).
-
(4) - DESPAIN (A.), PATT (Y.) - The Aquarius Project. - COMPCON84 (Feb. 1984).
-
(5) - PATT (Y.N.), HWU (W.), SHEBANOW (M.C.) - HPS, a New Microarchitecture : Rationale and Introduction. - The 18th International Microprogramming Workshop, pp. 103-108 (December 1985).
-
(6) - PATT (Y.N.), HWU (W.), SHEBANOW (M.C.), MELVIN (S.) - Critical Issues regarding...
DANS NOS BASES DOCUMENTAIRES
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(239 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