I/O 映射 I/O 的优点和内存映射 I/O 的缺点
在讨论 I/O 映射 I/O 的优点和内存映射 I/O 的缺点之前,让我们先泛泛地讨论一下 I/O 映射 I/O 和内存映射 I/O 之间的区别。
在内存映射输入输出中 -
我们将内存地址分配给输入输出设备。
任何与内存相关的指令都可以被此输入输出设备访问。
输入输出设备数据也提供给算术逻辑单元。
I/O 映射输入输出 -
我们将 I/O 地址分配给输入输出设备。
只有 IN 和 OUT 指令可以被此类设备访问。
ALU 运算不直接适用于此类输入输出数据。
因此,我们可以总结如下 -
I/O 是处理器/控制器用于处理连接到它的外围设备的任何通用端口。
I/O 映射 I/O 具有与内存不同的地址空间。因此,总寻址容量是连接的 I/O 设备数量和连接的内存数量之和。使用单独的 I/O 相关指令来访问 I/O 设备。使用单独的信号来寻址 I/O 设备。
内存映射 I/O 与外部内存共享内存空间。因此,总寻址容量仅为连接的内存。如果您的处理器支持 I/O 映射 I/O,则这是资源的低效利用。在这种情况下,用于访问 I/O 的指令与用于内存的指令相同。
以 8085 处理器为例。它具有 16 根地址线,即 64 KB 内存的寻址容量。它支持 I/O 映射 I/O。它最多可以寻址 256 个 I/O。
如果我们将 I/O 连接到 I/O 映射 I/O,则它可以寻址 256 个 I/O + 64 KB 内存。并使用特殊的 IN 和 OUT 指令来访问外围设备。在这里,我们充分利用了处理器的寻址能力。
如果外围设备以内存映射方式连接,则它最多只能寻址 64K 个设备。这是资源的低效利用。并且只使用内存访问指令(如 MVI、MOV、LOAD、SAVE)来访问 I/O 设备。
现在我们将讨论 I/O 映射 I/O 的优点和内存映射 I/O 的缺点 -
我们使用 IN 和 OUT 指令来寻址输入输出映射输入输出端口。这些指令的助记符表明处理器正在与输入输出端口进行通信。要从地址为 FFF0H 的内存映射输入端口加载累加器,我们执行指令 LDA FFF0H。
有些微处理器包含一个控制引脚,用于选择内存位置或输入输出端口。例如,在 8085 处理器中,IO/M* 引脚用于选择输入输出端口或内存位置。
为输入输出端口的地址空间分配 256 个位置,因为它们的大小只有 8 位。内存的地址空间包含 64K 个位置,因为内存的地址长度为 16 位。
如果我们将输入输出端口作为内存映射输入输出端口寻址,其地址范围为 FF00H-FFF0H,则不应为任何内存芯片分配这些地址范围。