例如,它如何知道以下之间的所有地址:
0xXXXXXX 和 0xYYYYYY
映射到 RAM / 显卡 / 显示器 / 等...
在主板上?
例如,它如何知道以下之间的所有地址:
0xXXXXXX 和 0xYYYYYY
映射到 RAM / 显卡 / 显示器 / 等...
在主板上?
它并不确切知道您列出的所有内容。
这一切的关键在于,CPU 永远不会在硅芯片中单独运行。确实有很多专门的硬件电路,称为外围设备,构成每个处理器。
它所知道的是芯片/SoC 内部每个外围设备在其内存空间上的位置。出于显而易见的原因,因为它是由芯片设计师(英特尔、飞思卡尔、AMD……)以这种方式连接的
通过扩展,外部 RAM 由内部外围设备(DRAM 控制器)控制,它也知道外部 DRAM 的地址。PCIe 总线上的外围设备也是如此,因为它们由 PCIe 控制器驱动。等等。
然而,处理器本身并不知道 PCIe 总线上有什么,这是驱动程序和操作系统的工作,以了解这一切。我们的许多计算机设备在某个时候都连接在 PCIe 总线上。通过配套芯片,或直接,...为了准确识别总线上存在什么,以及为每个外围设备加载什么驱动程序,操作系统和外围设备之间交换了标识符的握手。这样操作系统就可以知道 GPU、USB 总线、SATA 总线等位于哪个地址。