Next: Unités entières et Up: Séquencement et exécution Previous: Introduction

Partitionnement du pipeline

La tendance actuelle est à l'accroissement du nombre d'étages de pipelines pour l'exécution des instructions, ceci pour deux raisons principales :

MIPS R10000

Le microprocesseur superscalaire MIPS R10000 peut charger et décoder quatre instructions en parallèle par cycle d'horloge. Il est composé de cinq unités fonctionnelles indépendantes (voir figure ). L'interaction entre ces pipelines est gérée par les trois files d'attente (file des instructions entière, file des instructions flottantes et file des instructions mémoire). Les cinq unités d'exécution ont des pipelines d'exécution indépendants. Elles partagent en amont le pipeline de chargement des instructions. Ce pipeline lit les instructions à partir du cache d'instructions, les décode, renomme les registres afin de résoudre les fausses dépendances inter-registres et place les instructions dans les files d'attente appropriées. À partir de ces files, les instructions sont dynamiquement émises dans les cinq pipelines d'exécution.

Description des étages de pipeline

UltraSPARC

Le microprocesseur UltraSPARC peut charger et décoder quatre instructions, alignées en mémoire, en parallèle par cycle d'horloge. Il utilise neuf étages de pipeline (figure ). Le pipeline entier utilise en fait six étages, mais l'étage d'écriture des résultats est retardé de trois cycles afin de permettre une gestion précise des exceptions. Les étages supplémentaires à la fin du pipeline sont utilisés par les unités flottantes et graphiques. Selon les concepteurs de l'UltraSPARC, cette approche évite l'implémentation d'une file pour les instructions flottantes (au contraire des implémentations SPARC V7 ou SPARC V8).

Description des étages de pipeline

Remarque :

Les deux pipelines d'exécution entiers ne sont pas identiques. Les opérations de décalage ainsi que celles ayant trait aux codes conditions ne peuvent être exécutées que dans un pipeline. On notera aussi que le fichier de registres flottants est accédé un cycle après le fichier de registres entiers. Ce décalage est un compromis. En effet, pour pouvoir lancer une opération flottante, on a souvent besoin d'une donnée lue en mémoire. En retardant artificiellement l'opération flottante, on permet au réordonnanceur d'instructions de mieux grouper les instructions parallélisables.

Structure du fichier de registres


L'UltraSPARC exécute les instructions dans l'ordre, le renommage des registres est donc inutile. Par contre, le jeu d'instructions SPARC utilise des fenêtres de 16 registres. Plusieurs fenêtres de registres sont implémentées : l'UltraSPARC intègre 8 fenêtres de registres, soit 128 registres, plus 4 jeux de 8 registres globaux. Un tel fichier de 160 registres est énorme, surtout quand 10 ports d'accès sont nécessaires. En fait, toutes les fenêtres de registres ne sont pas accédées simultanément ; ce qui permet de partager les chemins de données des fenêtres. Ceci est réalisé dans l'UltraSPARC par l'implémentation d'un fichier de registres en trois dimensions[14]. Ceci est représenté figure . Chaque plan représente une fenêtre de registres. Le pointeur de fenêtre est décodé et le plan correspondant est selectionné. Une seule fenêtre de registres est accédée à chaque cycle. Mais les chemins de données sont communs à toutes les fenêtres.

PentiumPro

Le PentiumPro utilise un pipeline de 12 étages beaucoup plus long que ceux du MIPS R10000 et de l'UltraSPARC. Cette profondeur de pipeline, qui lui permet d'atteindre une fréquence d'horloge élevée, est due à la traduction des instructions en micro-opérations (trois cycles et demi) et à la présence d'un cycle de prédiction de branchement dans la présentation du pipeline. Ce cycle, présent sur tous les microprocesseurs, est ignoré dans les autres présentations de microprocesseurs. La figure présente ce pipeline.

Description des étages de pipeline

Remarque :

Dans le pipeline illustré figure , les instructions peuvent être bloquées à trois étapes différentes :

Il ne faut cependant pas croire que ce sont les seuls endroits où le séquencement d'une instruction est retardée. L'instruction peut aussi être retardée par l'étape de génération des micro-opérations, à l'entrée de la station de réservation et bien entendu pour des défauts de cache. Tout laisse à penser que le temps moyen entre l'initialisation d'une instruction à l'étage 1 et son achèvement à l'étage 12 est bien supérieur à 12 cycles.



Next: Unités entières et Up: Séquencement et exécution Previous: Introduction


flloansi@IRISA.irisa.fr
Tue Jun 4 09:57:56 MET DST 1996