Exécution spéculative

Selon une technique connue sous le nom d'exécution spéculative, un processeur exécute plusieurs tâches avant d'être sollicité. Cela permet au processeur d'être prêt à récupérer toute information nécessaire. Pour anticiper ou récupérer les données requises ultérieurement, l'exécution spéculative fait appel au traitement simultané (OoOE), et utilise l'exécution hors ordre (OoOE). Elle permet d'éliminer les blocages dus à l'attente des instructions appropriées pour l'étape suivante. La prédiction de branche est utilisée pour prédire quelles instructions sont les plus nécessaires et l'analyse du flux de données pour organiser les instructions dans le meilleur ordre. Au lieu de les faire exécuter dans leur ordre original, l'exécution spéculative utilise la prédiction de branchement. Cela permet d'améliorer les performances du processeur et de réduire le temps d'exécution. Tout d'abord, le prédicteur de branchement devine quelle branche est la plus susceptible d'être prise dans le processus, puis il rassemble le prochain ensemble d'instructions associées à cette branche. Le prédicteur de branchement commence à spéculer sur les branches qu'il va utiliser, puis les exécute. Les instructions seront déjà alignées si la prédiction de branche était correcte et l'exécution ne prendra pas trop de temps. Si le prédicteur de branchement s'est trompé, le système charge les informations appropriées et exécute ces instructions à la place. Cependant, les taux de précision des prédicteurs de branchement sont généralement supérieurs à 95 %, de sorte que la nécessité de recharger de nouvelles informations est peu fréquente. Avec l'exécution dans l'ordre, un blocage du pipeline arrête l'ensemble du processeur jusqu'à ce que le problème soit résolu. Un écart entre la vitesse de la mémoire principale et celle du CPU est également créé. Au fur et à mesure que cet écart se creuse, le temps passé à attendre que la mémoire principale fournisse des informations au CPU augmente également, ce qui accroît le temps d'attente de l'exécution. L'exécution spéculative comble cet écart en maintenant le CPU occupé et en minimisant le temps qu'il passe à tourner au ralenti, améliorant ainsi les performances globales du système.

Intel a adopté l'exécution spéculative. Ils ont d'abord utilisé OoOE avec leurs microprocesseurs Pentium Pro II et Pentium II. Advanced Micro Devices, (AMD) l'a introduit avec le K5 et Advanced RISC Machines, (ARM), qui a commencé à l'utiliser avec les microprocesseurs Cortex A9. Bien que l'exécution spéculative puisse améliorer les performances de l'ordinateur, elle peut également entraîner des failles de sécurité telles que la vulnérabilité meltdown du processeur.

Vous pouvez également être intéressé
  1. Langage d’exécution de processus métier de services Web (ws-bpel) Définition - Que signifie WS-BPEL (Web Services Business Process Execution Language)? Le langage WS-BPEL (Web Services Business Process Execution Language) est un langage de programmation qui, comme Extensible Markup Language (XML), permet la définition et la création de processus métier en tant que services Web. Conçu en 2003, WS-BPEL est...
  2. Programme d’exécution Définition - Que signifie le programme d'exécution? Un programme d'exécution est une version spécifique d'une application qui est distribuée pour une utilisation limitée. Ces types de versions de logiciels peuvent être appelés programmes d'exécution car ils offrent un environnement d'exécution sans autres fonctionnalités permettant une utilisation plus permanente, comme la...

  1. Délai d’exécution (tat) Définition - Que signifie le délai d'exécution (TAT)? Le délai d'exécution (TAT) est l'intervalle de temps entre le moment de la soumission d'un processus et le moment de l'achèvement du processus. Il peut également être considéré comme la somme des périodes d'attente pour entrer dans la mémoire ou la file...
  2. Environnement d’exécution Java (jre) Définition - Que signifie Java Runtime Environment (JRE)? Le Java Runtime Environment (JRE) est un ensemble d'outils logiciels pour le développement d'applications Java. Il combine la machine virtuelle Java (JVM), les classes principales de la plate-forme et les bibliothèques de prise en charge. JRE fait partie du kit de développement...