Vous êtes sur la page 1sur 2

En microarchitecture, un pipeline (ou chaîne de traitement1), est l'élément d'un

processeur dans lequel l'exécution des instructions est découpée en plusieurs


étapes. Le premier ordinateur à utiliser cette technique est l'IBM Stretch, conçu
en 1961. Avec un pipeline, le processeur peut commencer à exécuter une nouvelle
instruction sans attendre que la précédente soit terminée. Chacune des étapes d’un
pipeline est appelé étage. Le nombre d'étages d'un pipeline est appelé sa
profondeur.

Sommaire
1 Analogie
2 Pipeline RISC classique
3 Autres pipelines
4 Profondeurs
5 Mise en œuvre
5.1 Synchrones
5.2 Asynchrones
5.3 À vagues
6 Problèmes ou aléas
6.1 Dépendances structurelles
6.2 Dépendances de données
6.3 Dépendances de contrôle
7 Architecture superscalaire
8 Architecture vectorielle
9 Notes et références
10 Articles connexes
Analogie
Le pipeline est un concept s'inspirant du fonctionnement d'une ligne de montage.
Considérons que l'assemblage d'un véhicule se compose de trois étapes (avec
éventuellement des étapes intermédiaires) : 1. Installation du moteur. 2.
Installation du capot. 3. Pose des pneus.

Un véhicule dans cette ligne de montage ne peut se trouver que dans une seule
position à la fois. Une fois le moteur installé, le véhicule Y continue pour une
installation du capot, laissant le poste « installation moteur » disponible pour un
prochain véhicule X. Le véhicule Z se fait installer ses pneumatiques (roues)
tandis que le second (Y) est à l'étape d'installation du capot. Dans le même temps
un véhicule X commence l'étape d'installation du moteur.

Si l'installation du moteur, du capot et des roues prennent respectivement 20, 5 et


10 minutes, la réalisation de trois véhicules prendra, s'ils occupent un à un toute
la chaîne de production, 105 minutes = (20 + 5 + 10) × 3. Si on place un véhicule
dans la chaîne de production dès que l'étage auquel le véhicule doit accéder est
libre (principe du pipelining), le temps total pour réaliser les trois véhicules
est de 75 minutes.

Pipeline RISC classique


Pour donner un exemple de pipeline, nous allons aborder un pipeline parmi les plus
connus. Celui-ci s'appelle le Classic RISC pipeline. Il s'agit du pipeline créé par
David Patterson, inventeur des processeurs RISC et du concept de pipeline. Ce
pipeline est utilisé dans de nombreux documents (cours de David Patterson,
notamment) comme une introduction au concept de pipeline.

Avec ce pipeline, 5 étapes sont nécessaires pour traiter une instruction2 :

IF (Instruction Fetch) charge l'instruction à exécuter dans le pipeline.


ID (Instruction Decode) décode l'instruction et adresse les registres.
EX (Execute) exécute l'instruction (par la ou les unités arithmétiques et
logiques).
MEM (Memory), dénote un transfert depuis un registre vers la mémoire dans le cas
d'une instruction du type STORE (accès en écriture) et de la mémoire vers un
registre dans le cas d'un LOAD (accès en lecture).
WB (Write Back) stocke le résultat dans un registre. La source de ce résultat peut
être la mémoire (suite à une instruction LOAD), l'unité de calcul (suite à un
calcul à l'étape EX) ou bien un registre (cas d'une instruction MOV).
En supposant que chaque étape met 1 cycle d'horloge pour s'exécuter, il faut
normalement 5 cycles pour exécuter une instruction, 15 pour 3 instructions :

Séquençage des instructions dans un processeur sans pipeline. Il faut 15 cycles


pour exécuter 3 instructions.
En utilisant la technique du pipeline, notre processeur peut alors contenir
plusieurs instructions, chacune à une étape différente.

Séquençage des instructions dans un processeur doté d'un pipeline à 5 étages. Il


faut 9 cycles pour exécuter 5 instructions. À t = 5, tous les étages du pipeline
sont sollicités, et les 5 opérations ont lieu en même temps.
Les 5 instructions s'exécuteront en 9 cycles, et le processeur sera capable de
terminer une instruction par cycle à partir de la cinquième, bien que chacune
d'entre elles nécessite 5 cycles pour s'exécuter complètement. Au 5e cycle, tous
les étages sont en cours d'exécution.

Autres pipelines
Une organisation alternative au pipeline RISC classique serait de découper nos
instructions en seulement deux étapes :

Une étape nommée Fetch, qui charge et décode une instruction, et qui met à jour du
Program Counter ;
et une étape nommée Exec, qui effectuerait l'opération proprement dite (avec les
accès à la mémoire et/ou aux registres).
Ce type de pipeline est notamment utilisé sur certains microcontrôleurs Atmel AVR
et PIC.

Autre exemple de pipeline : celui de l'IBM Stretch project composé des trois étapes
suivantes :

Vous aimerez peut-être aussi