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.



Leave a Comment

Que faire si les Powerbeats Pro ne se chargent pas dans le boîtier

Que faire si les Powerbeats Pro ne se chargent pas dans le boîtier

Si vos Powerbeats Pro ne se chargent pas, utilisez une autre source d

Les bases de l'impression 3D : Une liste de contrôle de maintenance indispensable

Les bases de l'impression 3D : Une liste de contrôle de maintenance indispensable

Maintenir votre équipement en bon état est essentiel. Voici quelques conseils utiles pour garder votre imprimante 3D en parfait état.

Canon Pixma MG5220 : Scanner sans encre

Canon Pixma MG5220 : Scanner sans encre

Comment activer la numérisation sur la Canon Pixma MG5220 lorsque vous n'avez plus d'encre.

5 Raisons Pour Lesquelles Votre Ordinateur Portable Surchauffe

5 Raisons Pour Lesquelles Votre Ordinateur Portable Surchauffe

Découvrez quelques raisons possibles pour lesquelles votre ordinateur portable surchauffe, ainsi que des conseils et astuces pour éviter ce problème et garder votre appareil au frais.

Comment résoudre le code d'erreur GeForce Now 0xC272008F

Comment résoudre le code d'erreur GeForce Now 0xC272008F

Vous vous installez pour une soirée de jeu, et cela va être grand – vous venez de récupérer "Star Wars Outlaws" sur le service de streaming GeForce Now. Découvrez la seule solution connue qui vous montre comment résoudre le code d

Principes de l'impression 3D : Conseils d'entretien pour votre imprimante 3D

Principes de l'impression 3D : Conseils d'entretien pour votre imprimante 3D

L

Comment Trouver l'Adresse IP d'une Imprimante

Comment Trouver l'Adresse IP d'une Imprimante

Vous avez du mal à trouver l

Comment utiliser les AirPods avec les téléphones Samsung

Comment utiliser les AirPods avec les téléphones Samsung

Si vous hésitez à acheter des AirPods pour votre téléphone Samsung, ce guide vous aidera certainement. La question la plus évidente est de savoir si les deux sont compatibles, et la réponse est : oui !

Fix Always on Display ne fonctionne pas sur Galaxy Watch

Fix Always on Display ne fonctionne pas sur Galaxy Watch

Pour résoudre les problèmes de Always on Display sur Samsung Galaxy Watch, désactivez le mode d

La mémoire du Chromebook peut-elle être mise à niveau ?

La mémoire du Chromebook peut-elle être mise à niveau ?

Découvrez si la mémoire du Chromebook peut être mise à niveau et comment optimiser ses performances avec la gestion de la RAM.