« 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.
Avec le '''scoreboarding''', la gestion et la détection des dépendances sont effectuées par un circuit : le scoreboard. Mais ce n'est pas le seul circuit nécessaire pour pouvoir exécuter nos instructions dans un ordre différent de celui imposé par le programme.
 
[[File:Pipeline d'un processeur utilisant le scoreboarding.png|centre|Pipeline d'un processeur utilisant le scoreboarding.]]
 
L'étape d'émission sert à décider si l'instruction en cours peut démarrer son exécution en fonction de ses dépendances. Plus précisément, elle vérifie la présence de dépendances structurelles et de dépendances WAW : c'est elle qui vérifie que l'ordre des écritures dans les registres est maintenu (relisez le chapitre sur les interruptions et exceptions dans le pipeline si vous ne voyez pas pourquoi cet ordre doit être maintenu).
 
Reste que les autres dépendances doivent être prises en compte, les dépendances RAW ne faisant pas exception : rien n'indique que les opérandes soient prêts ! Mais l'unité d'émission ne vérifie pas ces dépendances et envoie quand même l'instruction à l’unité de calcul ! Pour éviter les problèmes, l'instruction va être mise en attente dans une mémoire tampon le temps que ses opérandes soient disponibles. Cette mémoire tampon est située entre l'étage d'émission et l'unité 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.