Maison >développement back-end >C++ >Dans quelle mesure les charges et les magasins x86 sont-ils atomiques, et quels facteurs affectent l'atomicité ?
Atomicité des charges et magasins sur x86
L'architecture x86 garantit l'atomicité des charges et magasins alignés, jusqu'à la taille des chemins de données entre les cœurs, la mémoire et les bus d’E/S. Cela signifie qu'une seule opération se produira de manière indivisible, et toute autre opération qui l'observe la verra comme s'étant produite entièrement ou pas du tout.
En interne, le CPU peut implémenter l'atomicité "gratuitement" pour les opérations alignées car le transfert de données s'effectue sur un bus de données suffisamment large ou via un seul message. Pour des accès plus larges ou des opérations non alignées, il peut être nécessaire de diviser l'opération en morceaux plus petits et d'effectuer des opérations plus complexes.
Opérations atomiques et cache
Les opérations atomiques peuvent se produire entièrement dans le cache, tant que l'opération ne franchit pas la limite d'une ligne de cache. Cela signifie que les modifications apportées au cache sont suffisantes pour garantir l'atomicité.
Atomic Read-Modify-Writes
Les opérations de lecture-modification-écriture atomique (RMW) sont plus difficiles à mettre en œuvre. Le processeur peut conserver une ligne de cache dans l'état modifié et ignorer les messages de cohérence du cache pendant que l'opération est en cours, ce qui lui permet d'apparaître atomique aux autres cœurs.
Opérations verrouillées non alignées
Les opérations verrouillées non alignées peuvent nécessiter une intervention matérielle plus complexe, comme le verrouillage du bus pour empêcher d'autres accès pendant l'opération.
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!