为什么我们需要内存映射 IO?根据我在 CS 课程中学到的知识,MMIO 抽象出控制设备的特定指令。但是,如果设备的控制寄存器(因此每个存储单元在其地址空间部分中的内容)取决于设备的品牌和型号,那么从抽象方面获得了什么?
从根本上说,要使 CPU 能够执行 IO,它需要一种向设备读取和写入数据的方法。有很多方法可以做到这一点,例如像 x86 上的 IN/OUT 这样的专用 CPU 指令。MMIO 是另一种已被证明可用于简化硬件设计的流行解决方案。
在典型的 CPU 上,所有内核都将连接到公共总线,该总线允许内核读/写主内存和共享缓存。然而,总线对于数据的来源、目的地和内容是不可知的。因此,总线上的传输可以转到不同的内存控制器、不同的内核、缓存等。因此,硬件设计人员可以简单地将 IO 设备连接到该总线,最终通过与 RAM 相同的机制访问设备。这有一些优点:
大多数这些优势都被软件掩盖了,因此我的论点是 MMIO 有利于硬件设计人员。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句