什麼是內存屏障?

從歷史上看,CPU 一直是完美的順序機器。這是高度合乎邏輯且易於理解的,但可能是一個性能問題。多年來,對 CPU 設計進行了許多巧妙的調整,以從矽晶圓中提取盡可能多的性能。不過,其中一個更有趣的是亂序執行。在亂序執行的 CPU 中,指令不一定需要按照它們發出的順序執行。

停滯不前

有序 CPU 遇到的主要性能問題稱為流水線停頓。當指令依賴於某些內存時會發生這種情況,但該內存不能直接在寄存器中使用。在這種情況下,CPU 必須在內存中找到該值。首先檢查 CPU 緩存,因為它們是最快的內存層。如果該值不存在,則會檢查系統 RAM。在此期間,CPU 必須處於空閒狀態,因為依賴於內存的指令必須在後續指令之前按順序完成。

流水線停頓對性能的影響可能不會那麼糟糕,但也可能相對嚴重。例如,L1 緩存通常可以在 5 個 CPU 週期的數量級返回結果。L2 緩存可能需要 20 個週期,L3 大約需要 200 個週期,而係統 RAM 大約需要 400 個週期。鑑於 CPU 可能以 5GHz 左右的頻率運行,即每秒 50 億個時鐘週期,即使 400 個週期也不錯 (0.000008%)。但是,如果您有許多指令需要進一步引用緩存層下的數據,累積效應可能會導致明顯的減速。

亂序執行和寄存器重命名

亂序執行是一種允許調度程序對其隊列中的指令重新排序的技術。通過這種重新排序,它可以選擇將特定線程優先於其他線程。當指令具有尚未滿足的數據依賴性時,它還可以將指令推回隊列中。這會盡可能地防止流水線停頓,從而最大限度地減少空閒週期。

亂序執行需要一種稱為寄存器重命名的功能。CPU 可以在一個週期內訪問保存在寄存器中的數據。寄存器用於存儲正在讀取和寫入的數據。然而,重要的是要確保整個計算機看到的一切都是按邏輯順序發生的,而不是以無序的、CPU 週期優化的順序發生的。為實現這一點,CPU 的邏輯寄存器比 CPU 架構要求的要多得多。

需要寫出但具有尚未完成的“較早”指令的數據被放置在保持寄存器中。當訂單自行解決時,此數據不會轉移到另一個寄存器。取而代之的是,暫存寄存器的名稱被更改為它應該在的寄存器的名稱。這有點類似於在主菜之前準備甜點,然後將其保存在冰箱中直到上菜為止。

這些邏輯寄存器完全沒有地址。CPU 只能真正尋址當前共享體系結構寄存器名稱的邏輯寄存器。也就是說,CPU 也足夠了解它們,如果其他重新排序的指令依賴於邏輯保持寄存器中的數據,它們可以使用它而不是在特定經驗時間架構寄存器中的“過時”數據。

記憶屏障

內存屏障(也稱為 membar、內存柵欄或柵欄指令)是計算機代碼中的一條指令。它允許程序員對內存屏障之前和之後發出的內存操作強制執行排序約束。內存屏障指示 CPU 調度程序確保在屏障之後的任何指令之前處理所有指令。這樣做是為了確保重要的操作以正確的順序完成。

通常,在現代計算機上,這不是必需的。亂序執行和註冊表重命名是成熟的領域。儘管如此,內存屏障對於較老的、不太複雜的、無序的處理器或用於關鍵內存操作可能會有幫助。

內存障礙可能會帶來一些性能損失。這是因為它們主動阻止 CPU 調度程序優化指令流的特定部分。這增加了流水線停頓的機會。

結論

內存屏障是確保對內存操作的排序約束的指令。這很重要,因為亂序執行處理器可能會對特定指令重新排序。雖然註冊表重命名已作為一種確保此環境中內存完整性的方法得到廣泛認可,但手動確保它可能會有所幫助。

內存屏障強制 CPU 調度程序確保指令在屏障之後的任何指令之前完成。這可以防止內存操作被重新排序。它還會阻止 CPU 優化指令流,這會影響性能。



Leave a Comment

如何克隆硬碟

如何克隆硬碟

在資料是寶貴資產的現代數位時代,在 Windows 上複製硬碟對許多人來說可能是一個至關重要的過程。這份綜合指南

如何修復驅動程式 WUDFRd 在 Windows 10 上載入失敗?

如何修復驅動程式 WUDFRd 在 Windows 10 上載入失敗?

您在啟動電腦時是否遇到錯誤訊息,提示驅動程式 WUDFRd 無法在電腦上載入?

如何修復 NVIDIA GeForce Experience 錯誤代碼 0x0003

如何修復 NVIDIA GeForce Experience 錯誤代碼 0x0003

您是否在桌面上遇到 NVIDIA GeForce 錯誤代碼 0x0003?如果是,請閱讀部落格以了解如何快速輕鬆地修復此錯誤。

How to Use Auto Clicker for Chromebook

How to Use Auto Clicker for Chromebook

Today, were going to delve into a tool that can automate repetitive clicking tasks on your Chromebook: the Auto Clicker. This tool can save you time and

如何在 2023 年從 Windows PC 中移除 GPU

如何在 2023 年從 Windows PC 中移除 GPU

您需要從 PC 上卸下 GPU 嗎?和我一起在這個分步指南中解釋如何從您的 PC 中刪除 GPU。

如何在台式機和筆記本電腦中安裝 NVMe SSD

如何在台式機和筆記本電腦中安裝 NVMe SSD

買了新的 NVMe M.2 SSD 但不知道如何安裝?繼續閱讀以了解如何在筆記本電腦或台式機上安裝 NVMe SSD。

什麼是邏輯炸彈?

什麼是邏輯炸彈?

邏輯炸彈是一種安全事件,攻擊者會在其中設置延遲操作。繼續閱讀以了解更多信息。

什麼是震網?

什麼是震網?

Stuxnet 是一種自我傳播的蠕蟲病毒。這是第一次使用網絡武器,也是第一個惡意軟件實例。

什麼是道德黑客?

什麼是道德黑客?

道德黑客是在法律約束下行事的黑客。繼續閱讀以了解有關該主題的更多信息。

什麼是對稱加密?

什麼是對稱加密?

密碼學有很多不同的部分。如果你想加密一些數據,你可以使用兩種類型的算法: symmetric