Ordre de la mémoire C : obtenir la sémantique de libération et d'acquisition avec MOV sur x86
Question : Comment fonctionne le L'instruction MOV fournit une sémantique d'acquisition-libération sur x86 sans utilisation de barrières de mémoire supplémentaires ni de synchronisation. primitives ?
Réponse :
Contrairement aux architectures de processeur conventionnelles où plusieurs instructions sont nécessaires pour appliquer l'ordre de libération et d'acquisition de la mémoire, l'instruction MOV de x86 réalise cette fonctionnalité avec élégance. Cela est possible grâce à la nature cohérente du cache des processeurs x86, qui garantit une vue partagée cohérente de la mémoire sur tous les cœurs.
Le modèle de mémoire x86 adhère aux principes suivants :
La mise en mémoire tampon du magasin introduit un niveau de réorganisation locale au sein de chaque cœur de processeur. Cependant, une fois qu'un magasin devient visible globalement, il devient visible par tous les cœurs simultanément et sans aucune réorganisation.
Par conséquent, l'instruction MOV effectue des magasins atomiques avec une sémantique d'acquisition-libération en exploitant les propriétés suivantes :
En conséquence, une seule instruction MOV sur x86 libère à la fois la valeur mise à jour dans la mémoire partagée pour que d'autres threads puissent l'acquérir et acquiert la valeur de la mémoire partagée pour le thread actuel. Ce comportement implémente efficacement la sémantique d'acquisition-libération requise pour la synchronisation dans le calcul haute performance.
Considérations supplémentaires :
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!