首頁 > 後端開發 > C++ > 現代 x86 硬體真的不能儲存單一位元組嗎?

現代 x86 硬體真的不能儲存單一位元組嗎?

Susan Sarandon
發布: 2024-12-31 07:42:14
原創
282 人瀏覽過

Can Modern x86 Hardware Really Not Store a Single Byte?

現代 x86 硬體無法儲存單一位元組嗎?

與並發模型中普遍持有的信念相反,Stroustrup 聲稱現代硬體無法儲存或載入任何比單字小的東西。然而,現代 x86 處理器允許儲存和操作單一位元組。這種明顯的矛盾促使人們對 Stroustrup 的陳述及其意義進行檢視。

Stroustrup 的論證及其解釋

Stroustrup 認為,如果沒有明確定義的記憶體模型,並發執行緒可能會幹擾彼此的位元組操作操作,可能會導致錯誤的結果。此論點假設硬體缺乏對原子位元組儲存的明確支持,並可能導致相鄰位元組的無意修改。

對 Stroustrup 聲明的更細緻的解釋是,它可能適用於具有特定內部實現的硬體。 CPU 可以使用讀取-修改-寫入週期來操作高速緩存行內的數據,甚至對於位元組大小的操作也是如此。然而,這些內部操作對於程式設計師來說是透明的,不會影響操作的外部可見性。位元組儲存保持原子性,不會損壞快取行中的相鄰位元組。

效能影響

雖然沒有原子位元組儲存的假設 ISA 確實可能存在,但所有現代 ISA(包括 x86)都提供位元組- 大小的載入和儲存指令。這些指令在架構上定義為保留相鄰位元組的完整性,確保正確的程式執行。此外,在具有 L1D 快取的現代 CPU 上,位元組和字的處理在很大程度上相似,因為兩者都需要快取行提取和寫回。

結論

Stroustrup 的聲明,雖然可能適用於假設的或過時的硬體設計,不能準確反映現代 x86 處理器的行為。這些處理器提供高效的原子位元組存儲,確保依賴此類操作的軟體的正確性。因此,在現代硬體程式設計的背景下,無需擔心位元組操作會導致記憶體損壞。

以上是現代 x86 硬體真的不能儲存單一位元組嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板