内存映射 I/O 与端口映射 I/O

标签 memory assembly architecture io cpu

内存映射 I/O 是一种允许使用中央内存 (RAM) 与外围设备通信的技术。端口映射 I/O 使用端口(带有特殊的汇编指令)通过数字端口进行通信。

一种方法相对于另一种方法的优势是什么?

最佳答案

正如克苏鲁所说,

  • 内存映射 I/O 允许写入/读取 I/O 设备端口与读取/写入普通内存相同(使用相同的机器代码/asm)

但有一个缺点:

  • 您为内存映射的 I/O 设备占用了物理内存地址空间(想想 32 位 Windows 无法访问 PC 上的所有 4G RAM)

因此,使用端口映射 I/O 方法的一个优点是您可以为 I/O 设备提供单独的地址空间,并且可以使用整个内存寻址范围来访问内存。

编辑:这是您问题的更完整答案:hardware ports to memory addresses

关于内存映射 I/O 与端口映射 I/O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15371953/

相关文章:

c - 我应该在发生 fatal error 时释放分配的内存吗?

sql-server - 使用 SQL FileStream 发生内存泄漏

assembly - 内存寄存器如何用于保存不同的类型?

.NET文档管理系统设计-性能问题

.net - Thrift、.NET、Cassandra - 这是正确的组合吗?

c++ - 有没有办法在构造函数代码而不是初始化列表中初始化类的成员对象?

gcc - 与 glibc 的静态链接,无需调用 main

c - 堆栈组装

assembly - 这部分MIPS代码中使用ori有什么用?

java - 在节点之间传递数据。如何保持它们清洁?