« Fonctionnement d'un ordinateur/Exécution dans le désordre » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 8 :
==Scoreboarding==
 
Avec le '''scoreboarding''', la gestion et la détection des dépendances sont effectuées par le scoreboard, lui-même secondé par d'autres circuits annexes, notamment l'étape d'émission. Celle-ci gére les dépendances structurelles et WAW, mais pas les dépendances RAW. Celles-ci sont prises en charge en mettant en attente les instructions dont les opérandes ne sont pas disponible, dans une mémoire tampon. Celle-ci est située entre l'étage d'émission et les unités de calcul, et est gérée par le scoreboard. Une fois ses opérandes prêts, l'instruction est envoyée à une unité de calcul et est exécutée, sans se soucier de l'ordre des instructions dans le programme. Toutes les instructions ne prennent pas le même temps pour s’exécuter, et le scoreboard doit en tenir compte pour déterminer la disponibilité des opérandes (et donc gérer les dépendances RAW). Quand le résultat de notre instruction est calculé, le scoreboard est prévenu par l'unité de calcul, ce qui lui permet de détecter la disponibilité des opérandes. Reste à gérer les dépendances WAR. Pour cela, il faut mettre l'instruction en attente tant que les lectures dans le registre de destination ne sont pas terminées. Pour cela, les résultats sont placés dans une file d'attente, et s'enregistrent dans le banc de registres quand c'est possible. C'est le scoreboard qui autorise ou non cette écriture.
 
[[File:Pipeline d'un processeur utilisant le scoreboarding.png|centre|Pipeline d'un processeur utilisant le scoreboarding.]]
 
Reste à gérer les dépendances WAR. Pour cela, il faut mettre l'instruction en attente tant que les lectures dans le registre de destination ne sont pas terminées. Pour cela, les résultats sont placés dans une file d'attente, et s'enregistrent dans le banc de registres quand c'est possible. C'est le scoreboard qui autorise ou non cette écriture.
 
==Fenêtres d’instruction==