隔离 I/O 和内存映射 I/O 有什么区别?

隔离输入/输出

在隔离I/O配置中,CPU有明确的输入输出指令,每一条指令都与一个接口寄存器的地址有关。当 CPU 提取输入或输出指令的操作码并对其进行解码时,它会将与该指令相关的地址定位到公共地址线中。

同时,它启用 I/O 读取(用于输入)或 I/O 写入(用于输出)控制线。这指示连接到公共总线的外部元件地址线中的地址是用于接口寄存器而不是用于存储字。

换句话说,当 CPU 从内存中获取指令或操作数时,它会在地址线上定位内存地址并启用内存读取或内存写入控制线。这指示外部元素地址是用于存储器字而不是用于 I/O 接口。

隔离 I/O 方法将内存和 I/O 地址隔离,以便内存地址值不受接口地址分配的影响,因为每个都有自己的地址空间。另一种方法是为内存和 I/O 使用类似的地址空间。

在仅使用一组读取和写入信号并且不区分内存和 I/O 地址的计算机中就是这种情况。此配置定义为内存映射 I/O。计算机将接口寄存器视为内存系统的一个组成部分。为接口寄存器分配的地址不能用于存储器字,这降低了可用的存储器地址范围。

内存映射 I/O

在内存映射 I/O 组织中,没有明确的输入或输出指令。CPU 可以使用与处理内存字类似的指令来处理接口寄存器中占用的 I/O 数据。每个接口都被安排为一组寄存器,这些寄存器在常规地址空间中对读取和写入请求进行计数。

通常,总地址空间的一段被限制用于接口寄存器,但主要是,它们可以基于任何地址,考虑到没有返回到相同地址的内存字。具有内存映射 I/O 的计算机可以使用内存类型指令来处理 I/O 数据。它使计算机能够使用类似的指令进行输入输出传输或内存传输。

好处是用于从内存读取和写入的加载和存储指令可用于从 I/O 寄存器输入和输出数据。在普通计算机中,有比 I/O 指令多的内存引用指令。对于内存映射 I/O,所有定义内存的指令也可用于 I/O。