什麼是內存屏障?

從歷史上看,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

什麼是 WPS?它是如何工作的?

什麼是 WPS?它是如何工作的?

通過此詳細教程了解 WPS 的全部內容,學習如何簡單安全地連接無線網絡。

LinkedIn:如何防止其他人知道您看到了他們的個人資料

LinkedIn:如何防止其他人知道您看到了他們的個人資料

了解如何使用LinkedIn的私人模式,防止其他人知道您查看了他們的個人資料。這裡有不同的解決方案,以確保您的隱私。

如何使用 Google Pixel Watch 追踪睡眠

如何使用 Google Pixel Watch 追踪睡眠

查看如何使用 Google Pixel Watch 來跟踪您的睡眠質量;另請參閱如何訪問收集到的信息。

在三星手機上使用和連接 AirPods

在三星手機上使用和連接 AirPods

如果您不確定是否為您的三星手機購買 AirPods,本指南當然可以提供幫助,涵蓋三星手機與 AirPods 的兼容性及使用方法。

Pioneer DEH-1700:如何設置時鐘

Pioneer DEH-1700:如何設置時鐘

在 Pioneer DEH-1700 汽車音響上設置時間的詳細步驟和提示,讓您的音響系統更便捷。

如何將游戲手柄與 Oculus Quest 2 連接

如何將游戲手柄與 Oculus Quest 2 連接

了解如何將游戲手柄無縫連接到Oculus Quest 2,提升您的遊戲體驗。

如何使用三星 Flow

如何使用三星 Flow

探索如何使用三星 Flow 將您的智能手機和平板電腦連接到 Windows PC,享受無縫的文件共享與通知同步。

什麼是 SLI?

什麼是 SLI?

SLI 或 Scalable Link Interface 是一種 Nvidia 技術,允許多個顯卡協同作業以提升性能。了解 SLI 的優缺點及最佳配置方法。

修復始終顯示在 Galaxy Watch 上不起作用的問題

修復始終顯示在 Galaxy Watch 上不起作用的問題

要修復三星 Galaxy Watch 上的“始終顯示”問題,請禁用省電模式並清除 Galaxy Wearable 應用程序緩存。我們提供了詳細的故障排除步驟。

如何關閉相機快門聲音 – Galaxy S 21 Plus

如何關閉相機快門聲音 – Galaxy S 21 Plus

在 Galaxy S21 Plus 上像忍者一樣拍攝照片並關閉快門聲。了解如何使用簡單的步驟來悄悄拍照。