Pipeline (informatique) - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Architecture vectorielle

Sur de tels processeurs, une instruction va s'appliquer à un ensemble de données, appelé vecteur. Une seule instruction va donc exécuter la même opération de façon parallèle sur tout le vecteur. Ce genre d'architecture est efficace pour les applications de calcul scientifique et s'est notamment trouvée dans les superordinateurs comme les Cray.

Problèmes

Les pipelines provoquent de nouveaux problèmes, en particulier d'interdépendance, ils ne sont pas tous listés ci dessous, juste deux cas simples sont abordés.

Interdépendance des données

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 contenue avant l'instruction ADD. Pour résoudre ce problème particulier, il est parfois possible de créer des courts-circuits pour amener le résultat de l'étape précédente vers l'unité qui en a besoin directement, sans passer par les registres de pipeline.

Interdépendance procédurale

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

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

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 interdé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'opération de la ligne 3 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      

Quelques profondeurs de pipeline

Aujourd'hui tous les microprocesseurs sont pipelinés :

Processeur Profondeur du pipeline
Intel Pentium 4 Prescott 31
Intel Pentium 4 20
AMD K10 16
Intel Core 2 Duo 14
Intel Pentium II 14
AMD Opteron 1xx 12
Intel Pentium III 10
AMD Athlon 12
PowerPC G4 (PPC 7450) 7
IBM POWER4 12
IBM POWER5 16
IBM PowerPC 970 16
Sun UltraSPARC IIi et UltraSPARC IV 14
Intel Itanium 10
MIPS R4400 8
Page générée en 0.084 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise