5
des nouvelles, ne semble pas connaître de limite supérieure. La pression pour réaliser des
processeurs de plus en plus performants est donc énorme.
11. Les techniques d'accélération
11.1. Le problème des dépendances
Les techniques architecturales utilisées pour accélérer les processeurs consistent à
exécuter en parallèle plusieurs instructions initialement conçues pour être séquentielles. Toutefois, il
arrive fréquemment que l'exécution de certaines instructions nécessite l'utilisation de résultats
produits par celles qui le précèdent immédiatement. Lorsque l'on tente d'exécuter ces instructions
en parallèle, ces résultats intermédiaires peuvent ne plus être disponibles à temps ce qui produit un
blocage de l'exécution du programme. De tels phénomènes sont appelés des dépendances.
Statistiquement, la probabilité d'occurrence des dépendances croît avec le nombre d'instructions
que l'on désire exécuter en parallèle.
Des techniques spéciales deviennent nécessaires pour limiter l'effet des dépendances.
Celles-ci se déclinent en deux approches: la première consiste à accélérer, par des voies internes à
la machine, le transfert entre les organes qui produisent l'information et ceux qui l'utilisent. La
seconde consiste à deviner par des techniques statistiques les valeurs que prendront ces résultats
intermédiaires. Ces valeurs "devinées" vont permettre de poursuivre l'exécution des instructions
tant que celles-ci ne remettent pas en cause l'état "algorithmique" de la machine (l'état de la
mémoire et des registres). Cette exécution partielle est appelée spéculative. Dès que la valeur des
résultats intermédiaires est connue, soit ceux-ci sont identiques aux valeurs prédites, ce qui
entraîne que les exécutions spéculatives sont transformées en exécutions normales, soit ils sont
différents et les exécutions spéculatives doivent être détruites avant de relancer l'exécution avec les
bonnes valeurs. Ce retour en arrière est très coûteux, ce qui incite fortement à disposer des
mécanismes de prédiction les plus performants possibles.
L'exécution spéculative peut être poursuivie sur plusieurs instructions en utilisant des
copies des registres, appelées registres virtuels, pour passer l'information d'une instruction aux
suivantes sans altérer l'état des véritables registres.
Les dépendances de séquencement sont beaucoup plus nombreuses. Elles sont traitées
différemment. En effet, le comportement d'un programme est caractérisé par une très forte
probabilité de venir ré-exécuter le morceau de code que l'on vient d'exécuter (principe de localité
des programmes). Ceci signifie que les programmes sont surtout constitués de boucles qui
provoquent de nombreuses ré-exécutions des mêmes segments de code.
L'analyse statistique du comportement du programme pendant quelques exécutions d'un
segment particulier du code permet de prédire son comportement pour sa prochaine exécution.
Les techniques modernes arrivent à réaliser de telles prédictions avec un taux de succès pouvant
atteindre 95%.
11.2. Techniques dynamiques de prédiction des branchements
Les techniques dynamiques de prédiction consistent à mesurer le comportement de
chaque branchement dans les exécutions précédentes du segment de code pour en prédire le
comportement futur: