Comprendre le rôle du « lock » dans l'assemblage x86
L'instruction « lock » est un élément intrigant dans l'assemblage x86, réputé pour son possibilité de réguler l'utilisation du bus par le processeur. Cet article explore les complexités de cette commande énigmatique, répondant à deux questions cruciales : son timing pour libérer le bus et sa mise en œuvre de l'ajout.
Quand le processeur libère-t-il le bus après une instruction de « verrouillage » ?
Contrairement à la croyance populaire, « lock » n'agit pas comme une instruction indépendante mais sert de préfixe à l'instruction suivante. En règle générale, cette instruction exécute une opération de lecture-modification-écriture sur la mémoire, telle que "incl" ou "cmpxchg".
Lorsqu'elle rencontre un préfixe "lock", le processeur assume un contrôle indivis sur le préfixe approprié. ligne de cache pendant toute la durée de l’opération. Cette exclusivité est souvent facilitée par l'affirmation d'un verrouillage de bus, bien que le processeur cherche à contourner cette méthode chaque fois que cela est possible. Il est important de noter que ce verrou de bus reste en vigueur exclusivement pendant la durée de l'instruction de verrouillage.
Comment le code « verrouillage » implémente-t-il l'ajout ?
Dans le extrait de code fourni :
Il est crucial de reconnaître que ce code effectue un incrément, pas un ajout.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!