Ordinateurs

Qu’est-ce que l’exécution spéculative ?

Avec une nouvelle faille de sécurité Apple dans l’actualité, c’est le bon moment pour revenir sur la question de savoir ce qu’est l’exécution spéculative et comment elle fonctionne. Ce sujet a fait l’objet de nombreuses discussions il y a quelques années lorsque Spectre et Meltdown faisaient fréquemment la une des journaux et que de nouvelles attaques par canaux secondaires apparaissaient tous les quelques mois.

L’exécution spéculative est une technique utilisée pour augmenter les performances de tous les microprocesseurs modernes à un degré ou à un autre, y compris les puces construites ou conçues par AMD, ARM, IBM et Intel. Les cœurs de processeur modernes qui n’utilisent pas d’exécution spéculative sont tous destinés à des environnements à très faible consommation d’énergie ou à des tâches de traitement minimales. Diverses failles de sécurité telles que Spectre, Meltdown, Foreshadow et MDS ciblaient toutes l’exécution spéculative il y a quelques années, généralement sur des processeurs Intel.

Qu’est-ce que l’exécution spéculative ?

L’exécution spéculative est l’une des trois composantes de exécution dans le désordre, également appelée exécution dynamique. Outre la prédiction de branches multiples (utilisée pour prédire les instructions les plus susceptibles d’être nécessaires dans un avenir proche) et l’analyse de flux de données (utilisée pour aligner les instructions pour une exécution optimale, au lieu de les exécuter dans l’ordre dans lequel elles sont arrivées), l’exécution spéculative a fourni un amélioration spectaculaire des performances par rapport aux processeurs Intel précédents lors de leur introduction au milieu des années 1990. Parce que ces techniques fonctionnaient si bien, elles ont été rapidement adoptées par AMD, qui a utilisé le traitement dans le désordre à partir du K5.

L’accent mis par ARM sur les processeurs mobiles à faible consommation l’a initialement tenu à l’écart du terrain de jeu OOoE, mais la société a adopté une exécution dans le désordre lorsqu’elle a construit le Cortex A9 et a continué à étendre son utilisation de la technique avec un Cortex plus puissant plus tard. -processeurs de marque.

Voici comment ça fonctionne. Les processeurs modernes sont tous en pipeline, ce qui signifie qu’ils sont capables d’exécuter plusieurs instructions en parallèle, comme indiqué dans le schéma ci-dessous.

Pipeline-Wikipédia

Image par Wikipédia. Il s’agit d’un schéma général d’un processeur en pipeline, montrant comment les instructions se déplacent dans le processeur d’un cycle d’horloge à l’autre.

Imaginez que le bloc vert représente une branche if-then-else. Le prédicteur de branche calcule quelle branche est la plus susceptible d’être prise, récupère le prochain ensemble d’instructions associées à cette branche et commence à les exécuter de manière spéculative avant de savoir laquelle des deux branches de code il utilisera. Dans le diagramme ci-dessus, ces instructions spéculatives sont représentées par la case violette. Si le prédicteur de branche a deviné correctement, alors le prochain ensemble d’instructions dont le processeur a besoin est aligné et prêt à fonctionner, sans blocage de pipeline ni retard d’exécution.

Psssssst :  REGARDER: Doom Eternal atteint 1 000 images par seconde sur une plate-forme de jeu refroidie à l'azote liquide

Sans prédiction de branche et exécution spéculative, le CPU ne sait pas quelle branche il prendra jusqu’à ce que la première instruction du pipeline (la boîte verte) finisse de s’exécuter et passe à l’étape 4. Au lieu de passer directement d’un ensemble d’instructions au ensuite, le CPU doit attendre que les instructions appropriées arrivent. Cela nuit aux performances du système car il est temps que le processeur puisse effectuer un travail utile.

La raison pour laquelle il s’agit d’une exécution « spéculative » est que le processeur peut être erroné. Si c’est le cas, le système charge les données appropriées et exécute ces instructions à la place. Mais les prédicteurs de branche ne se trompent pas très souvent ; les taux de précision sont généralement supérieurs à 95 %.

Pourquoi utiliser l’exécution spéculative ?

Il y a des décennies, avant que l’exécution dans le désordre ne soit inventée, les processeurs étaient ce que nous appelons aujourd’hui des conceptions « dans l’ordre ». Instructions exécutées dans l’ordre dans lequel elles ont été reçues, sans tentative de les réorganiser ou de les exécuter plus efficacement. L’un des principaux problèmes de l’exécution dans l’ordre est qu’un décrochage du pipeline arrête l’ensemble du processeur jusqu’à ce que le problème soit résolu.

L’autre problème qui a conduit au développement de l’exécution spéculative était l’écart entre les vitesses du processeur et de la mémoire principale. Le graphique ci-dessous montre l’écart entre les horloges du processeur et de la mémoire. Au fur et à mesure que l’écart augmentait, le temps passé par le processeur à attendre que la mémoire principale fournisse des informations augmentait également. Des fonctionnalités telles que les caches L1, L2 et L3 et l’exécution spéculative ont été conçues pour occuper le processeur et minimiser le temps d’inactivité.

mem_gap

Si la mémoire pouvait correspondre aux performances du CPU, il n’y aurait pas besoin de caches.

Ça a marché. La combinaison de grands caches hors matrice et d’une exécution dans le désordre a donné aux Pentium Pro et Pentium II d’Intel la possibilité de se dégourdir les jambes d’une manière que les puces précédentes ne pouvaient égaler. Ce graphique d’un Anandtech de 1997 article montre clairement l’avantage.

cpuben6

Grâce à la combinaison d’une exécution spéculative et de grands caches, le Pentium II 166 surpasse de manière décisive un Pentium 250 MMX, malgré le fait que ce dernier a un avantage de vitesse d’horloge de 1,51x sur le premier.

En fin de compte, c’est le Pentium II qui a offert les avantages de l’exécution dans le désordre à la plupart des consommateurs. Le Pentium II était un microprocesseur rapide par rapport aux systèmes Pentium qui étaient haut de gamme peu de temps auparavant. AMD était une option de deuxième niveau absolument capable, mais jusqu’au lancement de l’Athlon original, Intel avait un verrou sur la couronne de performances absolues.

Le Pentium Pro et le dernier Pentium II étaient beaucoup plus rapides que les architectures antérieures utilisées par Intel. Ce n’était pas garanti. Lorsqu’Intel a conçu le Pentium Pro, il a dépensé une part importante de son budget de puces et d’alimentation pour permettre une exécution dans le désordre. Mais le pari a payé, grand temps.

Psssssst :  La PS4 se vend toujours beaucoup plus vite que prévu - et Sony ne sait pas pourquoi - High-teK.ca

Intel a été vulnérable à davantage d’attaques par canal latéral qui sont arrivées sur le marché au cours des trois dernières années qu’AMD ou ARM, car il a choisi de spéculer de manière plus agressive et a fini par exposer certains types de données dans le processus. Plusieurs séries de correctifs ont réduit ces vulnérabilités dans les puces précédentes et les nouveaux processeurs sont conçus avec des correctifs de sécurité pour certains de ces problèmes matériels. Il faut également noter que le risque de ce type d’attaques par canaux auxiliaires reste théorique. Dans les années qui ont suivi leur apparition, aucune attaque utilisant ces méthodes n’a été signalée.

Il existe des différences entre la manière dont Intel, AMD et ARM implémentent l’exécution spéculative, et ces différences expliquent en partie pourquoi Intel est exposé à certaines de ces attaques d’une manière que les autres fournisseurs ne le sont pas. Mais l’exécution spéculative, en tant que technique, est tout simplement beaucoup trop précieuse pour cesser de l’utiliser. Aujourd’hui, chaque architecture de processeur haut de gamme utilise une exécution dans le désordre. Et l’exécution spéculative, bien que mise en œuvre différemment d’une entreprise à l’autre, est utilisée par chacune d’entre elles. Sans exécution spéculative, l’exécution dans le désordre ne fonctionnerait pas.

L’état des vulnérabilités des canaux latéraux en 2021

De 2018 à 2020, nous avons vu un certain nombre de vulnérabilités de canal secondaire discutées, notamment Spectre, Meltdown, Foreshadow, RIDL, MDS, ZombieLoad et autres. Il est devenu un peu à la mode pour les chercheurs en sécurité de publier un rapport sérieux, un nom favorable au marché et des explosions de relations publiques occasionnelles qui ont soulevé le spectre (sans jeu de mots) de problèmes de sécurité dévastateurs qui, à ce jour, n’ont pas émergé.

La recherche sur les canaux auxiliaires se poursuit — un nouveau vulnérabilité potentielle a été trouvé dans les processeurs Intel en mars – mais une partie de la raison pour laquelle les attaques par canal latéral fonctionnent c’est parce que la physique nous permet d’espionner des informations en utilisant des canaux qui ne sont pas destinés à les transmettre. (Les attaques par canal latéral sont des attaques qui se concentrent sur les faiblesses de la mise en œuvre pour divulguer des données, plutôt que de se concentrer sur un algorithme spécifique pour le casser).

Nous apprenons régulièrement des choses sur l’espace extra-atmosphérique en l’observant dans des spectres d’énergie que les humains ne peuvent pas percevoir naturellement. Nous surveillons les neutrinos à l’aide de détecteurs noyés profondément dans des endroits comme le lac Baïkal, précisément parce que les caractéristiques de ces endroits nous aident à discerner le signal faible que nous recherchons du bruit de l’univers vaquant à ses occupations. Une grande partie de ce que nous savons de la géologie, de l’astronomie, de la sismologie et de tout domaine où l’observation directe des données est impossible ou peu pratique se rapporte conceptuellement à l’idée de canaux secondaires «fuyants». Les humains sont très doués pour démêler les données en mesurant indirectement. Des efforts sont en cours pour concevoir des puces qui rendent les exploits de canaux secondaires plus difficiles, mais il sera très difficile de les verrouiller entièrement.

Psssssst :  Vivre avec l'écho d'Amazon : un cylindre de plaisir et de frustration - High-teK.ca

Cela ne veut pas dire que ces problèmes de sécurité ne sont pas sérieux ou que les entreprises de CPU devraient baisser les bras et refuser de les résoudre parce que l’univers est gênant, mais c’est un jeu géant de whack-a-mole pour l’instant, et cela peut impossible de sécuriser une puce contre toutes ces attaques. Au fur et à mesure que de nouvelles méthodes de sécurité sont inventées, de nouvelles méthodes d’espionnage qui reposent sur d’autres canaux secondaires peuvent également apparaître. Certains correctifs, comme la désactivation de l’Hyper-Threading, peuvent améliorer la sécurité, mais entraînent des baisses de performances substantielles dans certaines applications.

Heureusement, pour l’instant, tous ces allers-retours sont théoriques. Intel a été la société la plus touchée par ces divulgations, mais aucune des divulgations par canal latéral qui ont chuté depuis Spectre et Meltdown n’a été utilisée dans une attaque publique. AMD, de même, n’a connaissance d’aucun groupe ou organisation ciblant Zen 3 dans sa récente divulgation. Des problèmes tels que les ransomwares se sont beaucoup aggravés au cours des deux dernières années, sans avoir besoin de l’aide des vulnérabilités des canaux secondaires.

À long terme, nous nous attendons à ce qu’AMD, Intel et d’autres fournisseurs continuent de corriger ces problèmes au fur et à mesure qu’ils surviennent, avec une combinaison de mises à jour matérielles, logicielles et micrologicielles. Conceptuellement, les attaques par canal latéral comme celles-ci sont extrêmement difficiles, voire impossibles, à prévenir. Des problèmes spécifiques peuvent être atténués ou contournés, mais la nature de l’exécution spéculative signifie qu’une certaine quantité de données va fuir dans des circonstances spécifiques. Il n’est peut-être pas possible de l’empêcher sans renoncer à bien plus de performances que la plupart des utilisateurs ne voudraient jamais échanger.

Maintenant lis:

Consultez notre série High-teK.ca Explains pour une couverture plus approfondie des sujets technologiques les plus brûlants d’aujourd’hui.

Bouton retour en haut de la page