1

我认为CPU寻址设备的主要方式是“端口”和“内存”映射。

在这两个中:

  • 设备如何动态分配地址 - 谁分配它以及如何分配?
  • 那么 CPU 如何知道设备的存在、已分配以及地址是什么,尤其是它正在运行的程序?(如果计算机打开和关闭,这如何工作)
  • 中断如何与这些设备一起工作?
  • 操作系统和硬件之间的区别是什么?
  • 可以说内存映射是现代系统中的主要方法吗?

意识到这可能一口气很多,但在此先感谢!

4

1 回答 1

1

通常,CPU 不知道特定地址是内存映射的。

将地址范围定义为不可缓存是 SW 的责任(主要是 BIOS/驱动程序)(因此每次读/写都将通过设备,并且在 WB 之前不会在内部保留),在核心之外有一些映射将特定地址重定向到一个设备而不是DDR(内存)。

对部分项目符号的简短回答(我不确定我是否理解所有问题):

  • 设备如何动态分配地址 - 谁分配它以及如何分配?

    任一 BIOS 都定义了这样的范围(驱动程序在新设备上与 BIOS 通信,BIOS 为即插即用设备保存一些地址)

  • 那么 CPU 如何知道设备的存在、已分配以及地址是什么,尤其是它正在运行的程序?(如果计算机打开和关闭,这如何工作)

    CPU 不知道,这些地址被视为正常的不可缓存地址。

  • 可以说内存映射是现代系统中的主要方法吗?

    是的,把它放在内存中的另一个地方更容易(它也快一点)。

于 2020-11-14T09:57:41.283 回答