Quest-ce que lexécution hors service ?

Les ordinateurs sont des machines complexes dont aucune partie n'est plus complexe que le processeur. À un niveau d'aperçu de base, il semble que le processeur devrait être relativement simple. Il prend une série de commandes, les traite, puis génère les données. Cela ressemble cependant peu au fonctionnement réel des processeurs modernes.

Sous-scalaire à super-scalaire

Les premiers processeurs étaient exactement comme vous vous y attendiez. Ils ont pris les instructions individuellement, dans l'ordre qui leur a été donné, les ont traitées jusqu'au bout, puis sont passées à l'instruction suivante. Les processeurs de ce type étaient sous-scalaires, capables de terminer moins d'une instruction par cycle d'horloge. Les concepteurs de processeurs ont identifié qu'il y avait de nombreuses étapes différentes pour terminer une instruction. Chacune de ces étapes nécessitait un matériel différent. Cela signifiait que lors de l'exécution d'une seule instruction sur toute la séquence à la fois, certaines parties du matériel restaient inactives. Dans tout type de processeur, le matériel inactif est un matériel inutile.

Pour utiliser ce matériel inactif, les conceptions de CPU ont été mises à jour pour utiliser une approche de pipeline. Cela séparait davantage le matériel de chaque étape, mais permettait à tous d'être utilisés en même temps par une série d'instructions. Bien qu'il faille encore quelques cycles pour que chaque instruction passe par le pipeline, le débit global était d'une instruction par cycle. Cela a rendu les processeurs scalaires.

Pour pouvoir en faire plus, les processeurs devaient être rendus super-scalaires. Pour ce faire, plusieurs pipelines parallèles ont été implémentés.

Maintenir les pipelines alimentés en données

Le principal problème de performances des ordinateurs est généralement la latence de la mémoire. De nombreuses instructions fonctionnent sur des données, et de sorte que les données doivent être disponibles pour que l'instruction soit exécutée. La question est, que faites-vous si vous devez attendre ces données parce qu'elles ne sont pas immédiatement disponibles ? Traditionnellement, la réponse était simplement de caler et d'attendre qu'il soit disponible. Cela laisse tout le pipeline vide, potentiellement pendant des centaines de cycles CPU. Les choses empirent encore lorsque deux instructions dans des pipelines parallèles doivent attendre de la mémoire, car la première retardera même la demande des données de la seconde. Bien que la mémoire cache du processeur puisse aider à résoudre ce problème, elle ne peut toujours pas le résoudre. Un nouveau paradigme était nécessaire pour le résoudre. Ce changement de paradigme était Out Of Order Execution ou OOO.

La première étape d'un pipeline consiste à décoder l'instruction. Cela signifie déterminer ce qui doit être fait et vérifier que les données nécessaires à l'opération sont disponibles. Dans un CPU OOO, les instructions décodées sont ajoutées à une file d'attente. Ils ne sont supprimés de la file d'attente et réellement traités que lorsque les données dont ils ont besoin sont disponibles. Surtout, peu importe l'ordre dans lequel les instructions ont été ajoutées à la file d'attente. Si une instruction antérieure attend des données, une instruction plus récente peut sauter si elle est prête à fonctionner. Les processeurs OOO peuvent réorganiser les instructions qu'ils sont censés traiter en fonction de la file d'attente des instructions à venir et de celles qui sont prêtes à être exécutées.

Dépendances critiques

Ce processus suppose deux choses. Tout d'abord, qu'il est possible d'identifier et de gérer de manière fiable les véritables dépendances. Deuxièmement, vous pouvez gérer et identifier de manière fiable les fausses dépendances. Quelle est la différence? Eh bien, une vraie dépendance est une dépendance qui ne peut pas du tout être atténuée dans un système OOO. L'exemple le plus simple est la lecture après écriture. Si vous avez une instruction censée écrire des données et une autre censée lire ensuite ces données, il n'y a aucun moyen de réorganiser ces instructions. Ils doivent être remplis dans l'ordre dans lequel ils ont été présentés, sinon vous obtiendrez des données absurdes.

Une fausse dépendance est une dépendance qui peut être masquée par une autre astuce astucieuse. Prenons l'exemple de l'écriture après lecture. À première vue, vous pourriez penser que vous ne pouvez pas écraser les données avant de les avoir lues. Les choses ne sont pourtant pas si simples. Que se passe-t-il si vous avez un autre endroit où vous pouvez écrire les nouvelles données, puis vous pouvez simplement échanger les nouvelles et les anciennes données une fois que les anciennes données ont été lues ? C'est le processus de changement de nom de registre et il est essentiel au traitement OOO.

En règle générale, un jeu d'instructions définit un nombre défini de registres architecturaux qui sont utilisés dans le système. Vous ne pouvez littéralement pas vous adresser aux autres. Mais que se passe-t-il si vous surprovisionnez des registres ? Vous pouvez simplement les masquer pour la plupart, les utiliser pour stocker des données qui n'auraient pas encore dû être traitées, puis simplement échanger les étiquettes des registres cachés et architecturaux lorsque la chronologie est à nouveau correcte. À tout moment, il y a exactement la bonne quantité de registres architecturaux, mais ils ne sont pas nécessairement toujours au même endroit. Une analogie avec le monde réel serait le hot-desking.

Conclusion

L'exécution Out Of Order est un paradigme de traitement dans lequel les instructions peuvent être réorganisées dynamiquement au moment de l'exécution par le CPU. Cela se fait sur la base des premières instructions émises pour lesquelles des données sont disponibles. Cela signifie que les instructions chargées dans le pipeline sont toujours prêtes à être exécutées et qu'il n'y a pas de retard dans l'attente des données. Bien sûr, il est nécessaire d'avoir une file d'attente suffisamment longue pour qu'elle ne soit pas remplie d'instructions en attente de données, mais c'est un défi de mise en œuvre. L'exécution d'OOO repose sur le renommage des registres pour masquer les fausses dépendances. Même si ces instructions sont effectivement exécutées dans le désordre, les registres sont renommés de manière à masquer ce fait au reste de l'ordinateur.



Comment cloner un disque dur

Comment cloner un disque dur

À l’ère numérique moderne, où les données constituent un atout précieux, le clonage d’un disque dur sous Windows peut être un processus crucial pour beaucoup. Ce guide complet

Comment réparer le pilote WUDFRd qui n’a pas pu se charger sous Windows 10 ?

Comment réparer le pilote WUDFRd qui n’a pas pu se charger sous Windows 10 ?

Êtes-vous confronté au message d'erreur lors du démarrage de votre ordinateur indiquant que le pilote WUDFRd n'a pas pu se charger sur votre ordinateur ?

Comment réparer le code derreur 0x0003 de NVIDIA GeForce Experience

Comment réparer le code derreur 0x0003 de NVIDIA GeForce Experience

Rencontrez-vous le code d’erreur 0x0003 de l’expérience NVIDIA GeForce sur votre bureau ? Si oui, lisez le blog pour savoir comment corriger cette erreur rapidement et facilement.

How to Use Auto Clicker for Chromebook

How to Use Auto Clicker for Chromebook

Today, were going to delve into a tool that can automate repetitive clicking tasks on your Chromebook: the Auto Clicker. This tool can save you time and

Comment supprimer un GPU dun PC Windows en 2023

Comment supprimer un GPU dun PC Windows en 2023

Avez-vous besoin de retirer le GPU de votre PC ? Rejoignez-moi pour expliquer comment supprimer un GPU de votre PC dans ce guide étape par étape.

Comment installer un SSD NVMe sur un ordinateur de bureau et un ordinateur portable

Comment installer un SSD NVMe sur un ordinateur de bureau et un ordinateur portable

Vous avez acheté un nouveau SSD NVMe M.2 mais vous ne savez pas comment l'installer ? Lisez la suite pour savoir comment installer un SSD NVMe sur un ordinateur portable ou un ordinateur de bureau.

Quest-ce quune bombe logique ?

Quest-ce quune bombe logique ?

Une bombe logique est un incident de sécurité où un attaquant met en place une action différée. Continuez à lire pour en savoir plus.

Quest-ce que Stuxnet ?

Quest-ce que Stuxnet ?

Stuxnet était un ver auto-propagé. Il s'agissait de la première utilisation d'une cyber-arme et du premier malware.

Quest-ce quun hacker éthique ?

Quest-ce quun hacker éthique ?

Un hacker éthique est un hacker qui agit dans les limites de la loi. Continuez à lire pour en savoir plus sur le sujet.

Quest-ce que le chiffrement symétrique ?

Quest-ce que le chiffrement symétrique ?

Il existe de nombreuses parties différentes de la cryptographie. Si vous souhaitez chiffrer certaines données, vous pouvez utiliser deux types d'algorithmes : symétrique