Modèle de mémoire x86 et sémantique Release-Acquire
Dans le cadre d'une enquête précédente concernant la mise en œuvre de magasins atomiques memory_order_release utilisant MOV x86, des questions ont été soulevées sur la façon dont la libération et l'acquisition sont réalisées sur x86 sans mécanismes de synchronisation supplémentaires comme les clôtures ou verrous.
Ordre de la mémoire à processeur unique
Le volume 3A d'Intel, chapitre 8 de son manuel de développement système, indique que dans un système à processeur unique, les chargements et les écritures ont un certain ordre garanties :
Multi -Ordre de mémoire du processeur
Cependant, la section multiprocesseur du document ne le fait pas explicitement mentionnez comment les charges sont appliquées. Il se concentre sur :
Acquisition et libération à l'aide de MOV
Compréhension les principes d’ordonnancement de la mémoire monoprocesseur sont cruciaux. Selon le manuel, les mêmes principes s'appliquent aux systèmes multiprocesseurs lors de l'accès à la mémoire partagée cohérente avec le cache. Cela signifie que la réorganisation n'a lieu que localement au sein de chaque cœur de processeur.
Une fois qu'un magasin devient globalement visible, il devient visible par tous les cœurs simultanément, garantissant que tous les cœurs observent les écritures dans un ordre cohérent. C'est pourquoi seules des barrières locales, telles que mfence dans x86, sont nécessaires pour établir une cohérence séquentielle.
Vue partagée cohérente de la mémoire
L'architecture x86 maintient une vision partagée cohérente vue de la mémoire à travers des caches cohérents. La définition d'Intel des mécanismes de multitraitement souligne l'importance de la cohérence de la mémoire et de la cohérence du cache pour garantir que tous les processeurs ont accès aux mêmes données.
Supplémentaire Ressources
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!