Tu vois le travail à la chaine dans une usine ? Ben c'est pareil.
Au lieu qu'une équipe fabrique une voiture de A à Z, il y a plusieurs postes, chacun spécialisé dans une tache. Et un poste commence à travailler sur la voiture suivante alors que la voiture précédente n'est pas encore arrivée en bout de chaîne.
Il se passe exactement la même chose pour un proc. Il commence à décoder une instruction (traduite en micro-instructions), puis commence à décoder la suivante alors que les niveaux suivants du pipe-line exécutent les micro-instructions, puis enregistrent le résultat.
Ca pose pas mal de problème, par exemple :
- s'il y a un saut qui n'avait pas été anticipé, le proc à commencer à décoder et exécuter des instructions qui en fait ne servent à rien. Et il doit recommencer au bon endroit. La perte est d'autant plus importante que le pipe-line est long (cas du P4)
- problème lorsque le proc commence à exécuter une instruction qui utilise le résultat de la précédente alors que celle ci n'est pas encore terminée