内存映射与 I/O 映射输入输出

内存映射与 I/O 映射输入输出

我目前正在阅读一本计算机组织书籍,我对输入/输出机制感到很困惑,脑子里有很多疑问。

据我了解,与外围设备通信有两个概念,第一个是内存映射 I/O,另一个是 I/O(端口)映射 I/O。如果架构基于内存映射 I/O,则没有特殊的 I/O 指令,如“in”,“out”等,并且设备寄存器被映射到内存地址空间,因此我们可以通过“mov”指令读取或写入外围设备端口。另一方面,如果架构基于 I/O 映射 I/O,则设备寄存器被映射到与内存地址空间完全分离的 I/O 地址空间,并且 CPU 使用特殊指令(“in”,“out”,“ins”,“outs”)来读取或写入 I/O 映射的设备寄存器。

所以我的问题是;

1.)如果 X86 架构使用 I/O(端口、隔离等)映射 I/O 技术,为什么会有显卡等设备的内存地址空间?

2.)如果显卡将 1 GB 内存映射到主内存地址空间,这意味着什么?这是否意味着内存映射 I/O?

3.)如果 x86 架构不使用内存映射 I/O,设备如何将自身映射到内存地址空间?

4.)如果 x86 架构可以使用内存映射 I/O,那么它将如何使用以及使用哪些指令?

5.)如果 I/O 映射是关于映射外围寄存器,为什么显卡需要那么多空间进行映射?

相关内容