2016-04-23 21 views
0

我們知道原子動作不能交錯,因此可以使用它們而不用擔心線程干擾。例如,在32位操作系統中,「x = 3」被認爲是「一般」的原子操作,但內存訪問通常需要多於一個時鐘週期,比如說3個週期。所以情況就是這樣;並行總線CPU中的原子

假設我們有多個並行數據&地址總線和線程A試圖設置「x = 3」,在第二個循環中沒有機會讓另一個線程(比如線程B)訪問同一個內存位置(而寫入操作中間的線程A)。原子性如何保存?

希望我能夠清楚。

感謝

回答

1

有簡單的任務沒有問題提供了一個單一的總線事務執行寫操作。即使內存寫入事務需要3個週期,也會有特定的安排阻止來自不同內核的同時訪問總線。

當您執行read-modify-write操作時會出現問題,因爲這些操作涉及(至少)兩個總線事務,因此這些操作可能會導致核心(線程)之間的競爭狀況。這些情況通過特定的操作碼(前綴)來解決,該操作碼在整個下一條指令的整個持續時間內斷言總線鎖定信號,或者完成整個工作的特殊指令

+0

嗨。我知道比賽條件的東西,但無論如何感謝。我實際上並且特別想知道當你有並行總線(不是單一的)時,具有或不具有多個內核的同時操作的「特定佈置」部分是什麼。 – zgulser

+0

當你有並行總線,比如說多端口RAM時,RAM有責任處理單個事務的「衝突」。所有其他方面保持不變:總線鎖定信號/總線主控仲裁/以往任何情況。 – Serge