X86 位址空間控制器?

X86 位址空間控制器?

據我了解,在 x86 上,某些範圍的實體記憶體位址會對應到 BIOS,其他範圍會對應到 RAM,還有一些範圍對應到 I/O 裝置。

我想知道哪個硬體組件負責此映射/轉換。

我的猜測是晶片組或 MMU,或者可能是 CPU 本身的某種片選邏輯。

答案1

自從 CPU 開始在晶片上整合記憶體控制器以來,現在一切都在 CPU 內部。 CPU 記憶體層次結構中內建的「系統代理」將實體位址對應到記憶體控制器或 PCIe。 (或 CPU 內部 MMIO 設備,如整合 GPU)。

在 CPU 內部,它只需要確定載入或儲存是否應該進入記憶體或片外,如果是,則應使用哪個 PCIe 通道。有些 PCIe 通道直接從 CPU 到外部 GPU(如果有),但其他通道則用作與外部 GPU 的連結。晶片組南橋,不直接連接到其他附加 PCIe 卡。然後南橋整理哪個它所存取的設備,包括 BIOS ROM 之類的東西。


Skylake 採用 eDRAM 作為記憶體端緩存

我從以下位置抓取了這張圖片ArsTechnica 上一篇關於 Skylake 的有趣文章,但它最初來自英特爾。沒有 eDRAM 記憶體端快取的系統是相同的,只是系統代理的右側直接連接到 MC(記憶體控制器)。

至少從 Sandybridge 開始,英特爾就將 CPU 的這一部分稱為「系統代理」。作為AnandTech 指出,這是以前所謂的一個奇特的名字北橋或主橋晶片組。 (在具有外部記憶體控制器的舊系統中,北橋根據需要將負載/儲存發送到 DRAM 或 PCI/PCIe。如今的晶片組只有一個主要晶片,即南橋。

AMD 使用了整合內存控制器自 K8(第一個 AMD64)以來。英特爾有自 Nehalem 以來一直使用 IMC,從核心2。 Nehalem 連結包含系統組件相互連接的圖表。


另請注意,「MMU」也不是一個單獨的硬體組件;它是一個硬體組件。每個核心都有一個 TLB 和頁面遍歷硬體。

相關內容