Projet : CAPS

previous up next contents
Précédent : Panorama Remonter : Fondements scientifiques Suivant : Simulation de processeurs et collecte


   
L'exécution spéculative

Mots clés : prédiction de branchement, exécution spéculative .

Résumé :

Les pipelines d'exécution des processeurs superscalaires sont de plus en plus longs. Afin de limiter les ruptures de charge dans les pipelines dues aux instructions de branchement, des mécanismes de prédiction de branchement sont mis en \oeuvre dans les processeurs, et les instructions prédites sont exécutées spéculativement.

Pour atteindre un niveau de performance élevé sur les processeurs superscalaires de large degré qui devraient apparaitre vers l'an 2000, il est nécessaire de charger des instructions non-contiguës en mémoire, mais aussi de rompre les chaînes de dépendances entre instructions par la prédiction de valeurs.

Les pipelines d'exécution des processeurs sont de plus en plus longs: 12 cycles sur l'Intel Pentium II. Les processeurs sont capables d'exécuter plusieurs instructions par cycle. Le séquencement des instructions devrait être interrompu à chaque instruction de branchement en attendant le calcul effectif de la condition et/ou de la cible: hors sur beaucoup d'applications, plus d'une instruction sur 5 ou 6 est un branchement.

Sur tous les processeurs superscalaires actuels, des mécanismes de prédictions de branchement sont mis en \oeuvre pour continuer le séquencement spéculatif des instructions après un branchement sans attendre sa résolution: la cible et la direction du branchement sont prédites. En cas de mauvaise prédiction, les instructions séquencées (et parfois même déjà exécutées) doivent être annulées et le séquencement est repris sur le chemin réellement utilisé par l'application. Étant donné la très lourde pénalité payée en cas de mauvaise prédiction de branchement, la performance effective d'un processeur dépend de la précision de la prédiction. Des schémas de prédiction de plus en plus sophistiqués sont donc mis en \oeuvre dans les processeurs. Parmi les informations utilisées pour prédire un branchement, on peut citer l'adresse du branchement, l'historique des derniers branchements exécutés, l'historique des derniers passages dans ce branchement [Yeh93], ... Cependant les recherches continuent dans plusieurs directions, parmi lesquelles on peut citer, la réduction des interférences sur les tables de prédictions de branchement [[8]] et la prédiction des branchements indirects [CHP97].

Les processeurs actuels exécutent les instructions de manière spéculative et dans le désordre. La génération actuelle de processeurs peut exécuter jusqu'à 4, parfois 6, instructions par cycle. Il est d'ores et déjà possible d'implémenter des processeurs pouvant lancer 10 voire 16 instructions par cycle. Cependant l'obtention de telles performances ne peut pas être envisagée en utilisant les mécanismes de séquencement actuels: seules des instructions consécutives sont chargées, alors que sur beaucoup d'applications, plus d'une instruction sur 5 ou 6 est un branchement. Pour permettre de réduire ce goulôt d'étranglement, il est nécessaire de prédire plusieurs branchements par cycle [[9]].

Une autre difficulté surgit avec la possibilité d'exécuter un grand nombre d'instructions indépendantes en parallèle. Souvent les applications n'exhibent pas ces instructions indépendantes: or l'exécution d'un programme doit respecter les dépendances entre les instructions. La prédiction de branchement est un premier accroc à ce respect des dépendances: toute instruction postérieure à un branchement est dépendante de ce branchement; cette dépendance est «cassée» par la prédiction, mais les instructions sont validées dans l'ordre du programme. Récemment, il a été noté que le même principe pouvait être appliqué pour aussi «casser» les dépendances de données sur les programmes: on peut ainsi prédire le résultat d'une instruction ou d'un calcul d'adresse [LS96,SVS96].



previous up next contents
Précédent : Panorama Remonter : Fondements scientifiques Suivant : Simulation de processeurs et collecte