为什么我们需要内存映射 IO?

内特·赛默

为什么我们需要内存映射 IO?根据我在 CS 课程中学到的知识,MMIO 抽象出控制设备的特定指令。但是,如果设备的控制寄存器(因此每个存储单元在其地址空间部分中的内容)取决于设备的品牌和型号,那么从抽象方面获得了什么?

虚拟向导

从根本上说,要使 CPU 能够执行 IO,它需要一种向设备读取和写入数据的方法。有很多方法可以做到这一点,例如像 x86 上的 IN/OUT 这样的专用 CPU 指令。MMIO 是另一种已被证明可用于简化硬件设计的流行解决方案。

在典型的 CPU 上,所有内核都将连接到公共总线,该总线允许内核读/写主内存和共享缓存。然而,总线对于数据的来源、目的地和内容是不可知的。因此,总线上的传输可以转到不同的内存控制器、不同的内核、缓存等。因此,硬件设计人员可以简单地将 IO 设备连接到该总线,最终通过与 RAM 相同的机制访问设备。这有一些优点:

  • IO 硬件现在可以直接从 RAM 或其他 IO 设备检索数据,而无需内核参与主控周期
  • CPU 缓存硬件可以监听 IO 生成的事务以保持缓存一致
  • 当数据在总线上移动时,CPU 可以执行有用的工作,而不是内核等待每个加载/存储完成。
  • IO无需CPU支持特殊指令

大多数这些优势都被软件掩盖了,因此我的论点是 MMIO 有利于硬件设计人员。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章