作業系統是否需要知道它們正在執行的硬體架構是什麼?

作業系統是否需要知道它們正在執行的硬體架構是什麼?

也許這是一個基本的理論問題,但我不知道答案,也沒有找到這方面的資訊。

作業系統(想像 Windows 或 Linux 發行版)是否需要知道它們是在一種微架構中執行還是在另一種微架構中執行(例如在英特爾 Sandy Bridge 架構上還是在英特爾 Haswell 架構上)?還是作業系統不知道這些細節?

作業系統是用戶和微處理器架構之間的“橋樑”,這一事實讓我認為作業系統確實需要了解這些細節,因為作業系統的某些內容可能在英特爾 Sandy Bridge 上運行的方式不同比AMD 推土機。

如果答案是肯定的,那麼硬體如何與其架構作業系統進行通訊?

答案1

就作業系統而言,Intel 和 AMD x86(和 x86_64)是相同的處理器「架構」。 「核心」指令集是相同的,並且定義了最低等級的處理器功能。

處理器的運作方式可能完全不同內部甚至身體上的,但就指令的機器碼(十六進位位元組)而言,它們是相同的。它們具有相同的外部架構(x86),但不同內部的架構(通常稱為 uArch 或微架構)。

因此,AMD 和 Intel 之間從系統韌體 (UEFI)(執行基本主機板啟動和處理器初始化)到作業系統的初始切換是相同的,因為載入位元組和選擇程式碼路徑的指令是相同的。一旦啟動程式碼運行,它就可以開始載入可以偵測 CPU 擴充功能的庫,並根據它發現的內容運行優化的程式碼。

ARM 和x86 在內部和外部都是完全不同的體系結構,相同的機器碼位元組將產生完全不同的或非功能性的程式碼,因此必須編譯引導可執行檔以針對其運行的特定體系結構,以便產生正確的機器代碼。

相關內容