Pipeline

Le Pipeline est un mécanisme spécifique qui permet au processeur de décoder ses instructions d'une manière un peu particulière. Sur un micro du genre MC6809 par exemple, les instructions sont décodées puis exécutées de façon séquentielle. Autrement dit, on décode-exécute-décode-exécute, etc..., et ce sur chaque cycle d'horloge.

Pipeline trois niveaux

Le pipeline trois niveaux indique quant à lui que sur un seul cycle machine, l'ARM7 prélève, décode et exécute des instructions. Pendant qu'une instruction est exécutée, la suivante est décodée pendant que la troisième est prélevée (''fetchée'').

En anglais, on parlera de la séquence Fetch-Decode-Execute.

Détail du pipelining:

Séquence du Pipeline

Cette architecture permet de gagner énormément de temps au décodage des instructions.

Sans cela, il faudrait adresser, puis ensuite décoder, puis ensuite exécuter séquentiellement chaque instruction, sur un total de plusieurs cycles d'horloge, comme nous en parlions à propos des MC6809 et autres micros de cette génération.

Cependant, cette fonction n'est efficace que lorsque le code se déroule de façon linéaire, c'est à dire sans branchements ou sauts à des adresses éparpillées dans le programme.

En effet, le pipeline n'exécute pas le code en tant que tel (avec une interprétation des prochaines adresses où aller). Il ne fait que prélever en séquence et distribuer les instructions contiguës les une après les autres.

Lorsque l'on a un saut à une adresse non contiguë à l'adresse actuelle, il y a une rupture de pipeline et on perd donc le bénéfice de cette anticipation au moment du saut.

Étant donné que le pipeline fait gagner énormément de temps de cycle de façon globale, on peut aisément lui pardonner ces petits écarts indépendants de sa volonté...

Remarque:

Le registre Compteur Programme (PC) pointe sur l'instruction fetchée, et non pas sur celle en cours d'exécution. Ceci est important à considérer lors du calcul de sauts et autres branchements.

Page suivante: Bus internes