什麼是上下文切換?

在計算的早期,CPU 是純粹的順序機器。這有助於保持設計簡單。但是,它也限制了性能。許多進程需要從系統 RAM 或硬盤請求數據。雖然系統 RAM 很快,但它仍然不如 CPU 快,讓它處於空閒狀態,等待數據直到 RAM 返迴響應。對於從硬盤驅動器請求的數據,情況更糟,這是一種比 RAM 慢得多的存儲設備。在這裡,CPU 可能會空閒很長時間,等待響應。不幸的是,對於順序處理器,這個問題是不可避免的。

值得慶幸的是,現代 CPU 不再是順序的。它們提供了許多高級功能,例如亂序執行和多線程。亂序執行允許 CPU 分析即將到來的指令並重新排序以最大限度地提高效率。多線程允許 CPU 運行許多不同的線程或進程。

除了擁有多個內核之外,CPU 一次不能運行多個內核。但是,它可以通過定期在它們之間切換來使其看起來像它,以確保它們每個都獲得可觀的恆定 CPU 時間。在線程之間切換的過程稱為上下文切換���

上下文切換如何工作?

上下文切換由兩部分組成,切換出前一個線程和切換到新線程。要更改舊線程,CPU 必須將其當前狀態保存到進程控制塊或切換幀。這包括任何相關 CPU 寄存器的值,並且始終由程序計數器的值組成。存儲線程後,可以將句柄添加到就緒隊列,以便在需要時恢復它。

後麵線程中的切換是相反的過程。根據權重從就緒隊列中選擇一個線程。或者,它可以通過中斷來選擇,指示線程正在等待的事件現在已經準備好或完成。然後將線程的數據複製到正確的寄存器中,然後恢復線程。此時,新線程已準備好從它停止的地方繼續運行。

性能影響

切換線程時讀取和寫入數據的過程需要一些時間,儘管時間不多,因為使用的內存通常是高速的。然而,還有進一步的性能成本。切換線程時,前一個線程的 CPU 緩存和緩衝區中的數據可能與新線程無關。這會導致 TLB(轉換後備緩衝區)和緩存未命中的顯著增加。

如果這兩個線程是由同一個進程生成的,則這種影響並不顯著,因為它們可能共享相當多的內存元素。在不同方法的線程之間切換時,必須完全刷新 TLB。這導致 100% 的 TLB 未命中率,同時 CPU 緩存的命中率也顯著降低。

雖然 CPU 為上下文切換提供硬件支持,但操作系統通常不使用它。硬件上下文切換缺乏對數據相關性的認識。因此需要存儲和恢復所有的寄存器,增加了所花費的時間和所需的存儲空間。

此外,硬件上下文切換不存儲來自浮點寄存器的數據,這可能是必需的功能。因此,通常使用軟件上下文切換。它允許保留來自所有寄存器的數據,包括浮點寄存器。軟件上下文切換確實了解數據的相關性。這意味著它可以根據需要挑选和選擇要存儲的內容。

結論

上下文切換是現代 CPU 切換它正在運行的線程的過程。該過程涉及存儲當前線程的相關數據和恢復新線程的相關數據。上下文切換伴隨著與執行切換所需時間相關的性能成本,以及緩存和 TLB 未命中率的增加,因為這些未存儲。上下文切換的發生要么是為了確保所有線程都有充足的 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