Architecture en pipeline
- Principe de l'architecture en pipeline : ne pas attendre la fin d'une instruction pour en exécuter une nouvelle.
- UAL : Unité Arithmétique et Logique (partie du processeur, ALU en anglais).
Chaque instruction suit le cycle suivant :
- Récupération (IF, instruction fetch)
- Décodage (ID, instruction decode)
- Exécution (EX)
- Accès mémoire (MEM)
- Mise à jour du registre (WB, write back)
Sans pipeline :
Instruction 1 | IF | ID | EX | MEM | WB |
Instruction 2 | IF | ID | EX | MEM | WB |
Avec pipeline :
Instruction 1 | IF | ID | EX | MEM | WB |
Instruction 2 | IF | ID | EX | MEM | WB |
Problèmes
- Aléas de données : dépendances pour une instruction i du résultat de l'instruction i-1.
- Aléas de contrôles : la décision de prendre un branchement ou non n'est connue qu'à la fin de la phase 4 (i.e. accés mémoire) et il ne faut pas exécuter les instructions se trouvant juste après le branchment (car les registres pourraient être écrasés par ces derniers et donc "corrompre" l'exécution de l'instruction décidant si le branchment est emprunté ou non).
Direct forwarding / envoi direct
Pour palier au problème des aléas de données.
Quand l'exécution d'une instruction n°2 dépend du résultat de l'instruction précédente, n°1, plutôt que d'écrire la valeur en registre, on peut faire appel au direct forwarding qui consiste à passer en entrée de l'UAL le résultat de l'instruction n°1 pour exécuter l'instruction n°2.
Il y a transmission directe entre les instructions, sans avoir à passer par les regitres pour sauvegarder des données. L'UAL sert de point de transfert entre les instructions.