x86 上的原子操作:內部視角
與建議記憶體操作直接在RAM 上執行的初步印像不同,原子操作被限制在緩存。核心之間的這種一致性以及快取一致性 DMA 的使用確保記憶體存取對於系統中的所有觀察者來說都是原子的。
原子性顯然與記憶體排序無關,並且最多保留 64 位元的對齊載入和儲存原子性,與順序無關。這是因為此類操作可以在核心、記憶體和 PCIe 匯流排之間的寬資料路徑內執行,從而確保不可分割性,而無需額外的硬體。
CPU 憑藉其能力保證了對齊載入和儲存的原子性以原子方式修改快取行。這允許原子操作完全在快取內發生,而不必到達主記憶體。然而,比資料路徑更寬的儲存需要使用所有存取都遵守的鎖進行保護。
原子讀-修改-寫 (RMW) 操作帶來了更大的挑戰。為了以原子方式執行 RMW,核心將快取行維護為已修改狀態,以防止外部修改,直到操作完成。對於未對齊的 RMW,可能需要實際的 DRAM 儲存來強制跨多個快取行的原子性,可能需要斷言匯流排鎖定。
以上是原子操作如何在 x86 處理器上運作:快取、記憶體和原子性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!