什麼是亂序執行?

計算機是複雜的機器,沒有比 CPU 更複雜的部件了。在基本的概述層面上,CPU 似乎應該相對簡單。它接受一系列命令,處理它們,然後輸出數據。不過,這與現代 CPU 的實際工作方式幾乎沒有相似之處。

次標量到超標量

早期的 CPU 完全符合您的預期。他們按照收到的順序分別接受指令,處理它們直至完成,然後繼續執行下一條指令。這種類型的 CPU 是次標量的,每個時鐘週期能夠完成少於一條指令。CPU 設計人員發現完成一條指令有許多不同的階段。每個階段都需要不同的硬件。這意味著當一次在整個序列中運行一條指令時,硬件的某些部分會閒置。在任何類型的處理器中,空閒硬件都是無用的硬件。

為了利用這個閒置的硬件,CPU 設計被更新為使用流水線方法。這進一步分離了每個階段的硬件,但允許通過一系列指令同時使用它們。雖然每條指令通過流水線仍然需要幾個週期,但總吞吐量是每個週期一條指令。這使得 CPU 成為標量。

為了能夠做更多的事情,處理器需要成為超標量的。為此,實施了多個並行管道。

保持管道接收數據

計算機的主要性能問題通常是內存延遲。許多指令對數據進行操作,因此數據需要可用於要執行的指令。問題是,如果您需要等待該數據,因為它不是立即可用的,您會怎麼做?傳統上,答案只是拖延並等待它可用。這使得整個流水線為空,可能需要數百個 CPU 週期。當並行流水線中的兩條指令需要等待內存時,情況會變得更糟,因為第一條指令甚至會阻止對第二條數據的請求。雖然 CPU 高速緩存可以幫助解決這個問題,但它仍然無法解決問題。需要一個新的範例來解決它。這種範式轉變就是亂序執行或 OOO。

流水線的第一階段是解碼指令。這意味著確定需要做什麼,並驗證操作所需的數據是否可用。在 OOO CPU 中,解碼指令被添加到隊列中。它們僅在所需數據可用時才從隊列中移除並實際處理。至關重要的是,將指令添加到隊列中的順序無關緊要。如果較早的指令正在等待數據,則如果準備就緒,則可以跳過較新的指令。OOO 處理器可以根據即將到來的指令隊列以及其中哪些準備好執行來重新排序它們應該處理的指令。

關鍵依賴

這個過程假設了兩件事。首先,可以可靠地識別和處理真正的依賴關係。其次,您可以可靠地處理和識別錯誤的依賴關係。有什麼不同?嗯,真正的依賴是在 OOO 系統中根本無法減輕的依賴。最簡單的例子是先寫後讀。如果您有一條指令應該寫入一些數據,而另一條指令應該讀取該數據,那麼就無法對這些指令進行重新排序。它們必須按照它們出現的順序完成,否則你會得到無意義的數據。

錯誤的依賴是可以用另一個巧妙的技巧隱藏的依賴。讓我們以先讀後寫為例。乍一看,您可能認為在讀取數據之前不能覆蓋數據。然而事情並沒有那麼簡單。如果您有另一個地方可以寫入新數據,然後在讀取舊數據後就可以交換新舊數據怎麼辦?這是寄存器重命名的過程,它對 OOO 處理至關重要。

通常,指令集定義了系統中使用的一組架構寄存器。您實際上無法解決任何其他問題。但是,如果您過度配置寄存器怎麼辦?您可以將它們的大部分隱藏起來,使用它們來存儲不應該處理的數據,然後在時間線再次正確時簡單地交換隱藏寄存器和架構寄存器的標籤。在任何時候,架構寄存器的數量都恰到好處,只是它們不一定總是在同一個地方。現實世界的類比是輪用辦公桌。

結論

亂序執行是一種處理範例,其中指令可以在執行時由 CPU 動態重新排序。這是根據最早發布的具有可用數據的指令來完成的。這意味著加載到流水線中的指令始終準備好執行,並且在等待數據時沒有延遲。當然,有必要有一個足夠長的隊列,使其不會被等待數據的指令填滿,但這是一個實施挑戰。OOO 執行依賴於寄存器重命名來隱藏錯誤的依賴關係。即使這些指令實際上是亂序執行的,寄存器的重命名方式也會對計算機的其餘部分隱藏這一事實。



如何克隆硬碟

如何克隆硬碟

在資料是寶貴資產的現代數位時代,在 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