Le memory_order_release C 11 garantit l'achèvement d'une écriture dans la mémoire partagée avant qu'elle ne devienne visible à d'autres fils. De même, memory_order_acquire garantit qu'une opération de lecture récupère la valeur la plus à jour écrite en mémoire.
Sur la base de la documentation de x86, il est affirmé que l'instruction MOV à elle seule transmet la sémantique d'acquisition-libération. Cependant, une question se pose quant au fonctionnement de ce mécanisme.
La documentation Intel citée souligne que les lectures et les écritures ne sont pas réorganisées avec d'autres opérations similaires sur un seul processeur. De plus, la section multicœur indique que les processeurs suivent les mêmes principes d'ordre lorsqu'ils accèdent à la mémoire partagée cohérente avec le cache.
La clé pour comprendre la sémantique d'acquisition-libération réside en reconnaissant que la réorganisation se produit uniquement localement, au sein de chaque cœur de processeur. Une fois qu'un magasin est globalement visible, il devient accessible à tous les cœurs simultanément, et aucun cœur ne peut le percevoir avant ce point. Par conséquent, les barrières locales, telles que mfence, garantissent la cohérence séquentielle en vidant le tampon de stockage avant d'autoriser les chargements ultérieurs.
Essentiellement, x86 utilise une architecture de mémoire partagée cohérente avec le cache, où les caches cohérents fournissent une vue partagée de la mémoire sur processeurs. La nature cohérente de l'accès à la mémoire renforce le modèle de mémoire monocœur, où l'ordre du programme et un tampon de stockage suffisent pour implémenter la sémantique d'acquisition-libération.
Les principes d'acquisition -La mise en œuvre de la version et des barrières s'étend au-delà de x86. Généralement, les modèles de mémoire plus faibles autorisent uniquement une réorganisation locale, ce qui nécessite des barrières au sein d'un cœur de processeur pour appliquer un ordre spécifique.
PowerPC constitue une exception, permettant aux magasins de devenir visibles par certains cœurs avant d'autres, introduisant la possibilité d'IRIW ( Lectures indépendantes des écritures indépendantes). Cependant, la plupart des modèles de mémoire matérielle interdisent la réorganisation IRIW, garantissant ainsi l'ordre global du magasin sur tous les cœurs.
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!