For faster navigation, this Iframe is preloading the Wikiwand page for Utilisateur:Poil/pipeline.

Utilisateur:Poil/pipeline

En architecture des ordinateurs, un pipeline est une technique de conception des processeurs où l'exécution des plusieurs instructions se chevauchent à l'intérieur même du processeur. Le premier ordinateur à utiliser cette technique est l'IBM Stretch, conçu en 1958.

Soit un microprocesseur où 4 cycle sont nécessaires pour accomplir une instruction :

  1. I.F (Instruction Fetch) charge l'instruction à exécuter depuis la mémoire.
  2. ALU (Arithmetic Logic Unit) exécute l'instruction.
  3. M.A (Memory Access), 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).
  4. W.B (Write Back) stocke le résultat dans un registre.

En supposant que chaque étape met 1 cycle d'horloge pour s'exécuter, il faut normalement 4 cyles pour exécuter une instruction, 12 pour 3 instructions :

Séquençage des instructions dans un processeur sans pipeline. Il faut 9 cycles pour exécuter 3 instructions.
Séquençage des instructions dans un processeur doté d'un pipeline à 5 étages. Il faut 15 cycles pour exécuter 3 instructions. A t = 5, toutes les unités du processeurs sont sollicitées, et les 5 opérations ont lieu en même temps.
Séquençage des instructions dans un processeur superscalaire de degré 2. Il faut 9 cycles pour exécuter 10 instructions. A t = 5, toutes les unités du processeurs sont sollicitées.
Fichier:Pentium4superpipeline.png
Le Pentium 4 d'Intel est superpipeliné avec un pipeline à 20 étages.
Une instruction vectorielle exécute la même opération sur toutes les données (vecteur) sur laquelle elle est appliquée.
I.F ALU M.A W.B
1 2 3 4 I.F ALU M.A W.B
5 6 7 8 I.F ALU M.A W.B
9 10 11 12

Si on insére des registres tampons (pipeline registers) entre chaque étape, on fait chevaucher les exécutions de chaque cycle. Les 3 instructions s'exécuteront en 6 cycles, et le processeur sera capable de produire une instruction par cycle à partir du quatrième :

I.F ALU M.A W.B
1 I.F ALU M.A W.B
2 I.F ALU M.A W.B
3 I.F ALU M.A W.B
4 5 6 7

Au 4ème cycle, tous les étages sont en cours d'exécution.

Cette technique ne diminue pas le temps d'exécution d'une instruction, mais permet de multiplier le débit avec lequel elles sont exécutées par le processeur.

Aujourd'hui tous les microprocesseurs sont pipelinés :

Processeur Profondeur du pipeline
Intel Pentium 4 Prescott 31
Intel Pentium 4 20
Intel Pentium II 14
AMD Opteron 1xx 12
Intel Pentium III 10
IBM PowerPC 970 16
Sun UltraSPARC III et IV 14
Intel Itanium 8
MIPS R4400 8

Les pipelines provoquent de nouveaux problèmes, en particulier d'interdépendance : par exemple une instruction ne peut récupérer le résultat de la précédente car celui-ci n'est pas encore disponible. Ainsi, la séquence :

ADD   R1, R2, R3  // R1 = R2 + R3
STORE R1, 1000    // C(1000) = R1

Ne stocke pas à l'emplacement mémoire 1000 la valeur de R1 contenant la somme R2 + R3, mais la valeur de R1 contenu avant l'instruction ADD.

Se pose le mème problème avec les sauts :

 MOV R1, #1000 // R1 = 1000
 JUMP R1       // Saut inconditionel

R1 ne contient pas encore la valeur 1000 au moment où l'instruction de saut va s'exécuter.

Une solution possible à ces deux problèmes est d'insérer une instruction entre les deux qui sont inter-dépendantes. Prenons par exemple la séquence suivante :

1: A = B + C
2: D = A + C
3: E = F + B

qui comporte une dépendance directe simple, A ne pouvant être disponible pour la partie droite de la seconde instruction.

  • la première solution, triviale, est d'insérer des NOP (No Operation), c'est ce que font les compilateurs quand on ne précise pas d'option d'optimisation du code :
 1: A = B + C
1b: NOP
 2: D = A + C
 3: E = F + B
  • la seconde solution consiste à réarranger les instructions. Dans cet exemple, l'operation de la troisième ligne n'a aucune interdépendance avec les deux précédentes. Le code modifié sera :
 1: A = B + C
 2: E = F + B
 3: D = A + C
{{bottomLinkPreText}} {{bottomLinkText}}
Utilisateur:Poil/pipeline
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?