多核心處理器是否具有內部硬體來隨機更改指令在哪個核心中執行?

多核心處理器是否具有內部硬體來隨機更改指令在哪個核心中執行?

我的一個朋友說,即使您將進程固定到作業系統中的特定核心,進程也總是在核心之間跳躍。他說,處理器製造商這樣做是為了防止處理器因熱點而燒毀(核心燒毀是否實際發生不是重點)。

他還說,例如,Windows 任務管理器是不正確的,因為它無法遵循處理器內部的操作。因此不值得信任......他發誓他看到了一些解釋它的英特爾文檔。 (好吧他找不到)

我試著告訴他這是不合邏輯的,因為這樣做會使快取和管道等失效,但由於也沒有文件說明否則很難證明。

有誰知道文件或可以做出無懈可擊的解釋來證明任一理論?

謝謝!

答案1

我不認為處理器中有故意的“隨機化”以避免熱點或其他什麼。

Ring 0 程式碼可以讀取 CPU 暫存器來識別程式碼正在哪個核心上運行,如果程式碼運行在錯誤的核心上,則可以放棄其 CPU 時間。至少,一個核心在 BIOS 初始化重置期間始終設定 BSP 引導標誌(我們談論的是 x86 CPU)。您可以讀取該暫存器以確保您只在該核心上運行。但幾乎​​可以肯定還有一些其他的 ID 機制可以使用。

由於作業系統特權核心程式碼處理程序切換,因此您絕對可以為作業系統提供將進程鎖定到特定核心的功能,即使這只是意味著放棄 CPU 時間,直到切換到達該核心。您還可以設定所有其他進程來避開該核心,以使其對您想要的進程保持開放。

因此,無論任務管理器是否這樣做,理論上您都可以明確知道哪個進程正在哪個核心上運行,並將它們鎖定到這些核心。

現在,英特爾是否擁有隱藏的硬件,實際上可以切換核心的 ID,因此您不知道自己實際上在哪個物理核心上運行?對此感到懷疑。 CPU 會報告每個核心的溫度,您可以使用鎖定到不同核心的單執行緒進程來查看不同核心上的溫度上升。

相關內容