X86 地址空间控制器?

X86 地址空间控制器?

据我所知,在 x86 上,某些范围的物理内存地址映射到 BIOS,其他范围映射到 RAM,还有一些范围映射到 I/O 设备。

我想知道哪个硬件组件负责这种映射/翻译。

我的猜测是芯片组或 MMU,或者可能是 CPU 本身上的某种芯片选择逻辑。

答案1

自从 CPU 开始在片上集成内存控制器以来,现在一切都在 CPU 内部。内置在 CPU 内存层次结构中的“系统代理”将物理地址映射到内存控制器或 PCIe。(或映射到 CPU 内部的 MMIO 设备,如集成 GPU)。

在 CPU 内部,它只需确定加载或存储应该进入内存还是片外,以及应该使用哪个 PCIe 通道。一些 PCIe 通道直接从 CPU 连接到外部 GPU(如果有),但其他 PCIe 通道用作与芯片组的南桥,不直接连接到其他附加 PCIe 卡。然后南桥会整理哪个它将进入的设备,包括像 BIOS ROM 之类的东西。


Skylake 使用 eDRAM 作为内存端缓存

我从以下网址获取了此图片一篇关于 Skylake 的有趣 ArsTechnica 文章,但它最初来自英特尔。没有 eDRAM 内存侧缓存的系统是相同的,只是系统代理的右侧直接连接到 MC(内存控制器)。

英特尔至少从 Sandybridge 开始就将 CPU 的这一部分称为“系统代理”。AnandTech 指出,这是以前被称为北桥或主桥芯片组。(在具有外部内存控制器的旧系统中,北桥会根据需要将加载/存储发送到 DRAM 或 PCI/PCIe。如今的芯片组只有一个主要芯片,即南桥。)

AMD 已经利用集成内存控制器自 K8(第一款 AMD64)以来,英特尔自 Nehalem 以来一直使用 IMC,从核心 2。Nehalem 链接有系统组件相互连接的图表。


还要注意,“MMU”也不是单独的硬件组件;每个核心都有一个 TLB 和页面遍历硬件。

相关内容