現代 x86 硬體不能將單一位元組儲存到記憶體中嗎?
Stroustrup 在他的書中的陳述指的是假設硬體的潛在行為,而無需明確定義的記憶體模型。他建議此類硬體可能會實現具有非原子更新的位元組存儲,從而可能影響相鄰位元組。
實際的現代硬體行為
但是,現代硬件,包括x86,其行為方式與Stroustrup 描述的方式不同:
歷史背景
Stroustrup 的聲明可能基於早期Alpha AXP 處理器的行為,該處理器最初不支援位元組載入/儲存指令。然而,更高版本的 Alpha 和所有現代 CPU 都支援安全高效的位元組儲存。
硬體實作
現代 CPU 通常使用儲存記憶體段的快取。在快取系統中:
異常
雖然現代CPU提供原子位元組存儲,但在某些情況下可能會出現異常:
結論
在實踐中,現代硬體支援原子字節存儲,使得 Stroustrup 對潛在硬體行為的描述與實際系統不太相關。 C 編譯器提供的記憶體模型保證依賴現代硬體的可靠行為來確保線程安全。
以上是現代 x86 CPU 真的不能自動地將單一位元組儲存到記憶體中嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!