嗯,...除非我误解,否则你谈的是两件完全不同的事情.我会给你两个非常简短的解释,这样你就可以了解你现在需要的东西.
内存映射I/O意味着将I/O硬件设备的内存映射到主内存映射中.也就是说,计算机内存中的地址实际上与RAM无关,而与内部寄存器和外围设备的内存相对应.这是Pointy所谈论的机器架构.
还有映射I/O,这意味着获取(比方说)一个文件,并让操作系统将部分内容加载到内存中,以便以后更快地访问.在Unix中,这可以通过完成mmap().
我希望这有帮助.
在x86上有两个不同的地址空间,一个用于内存,另一个用于I/O端口.
端口地址空间限制为65536个端口,可使用IN/OUT指令访问.
例如,可以使用某些I/O端口访问视频卡的VGA功能,但帧缓冲区是内存映射的.
其他CPU架构只有一个地址空间.在这些体系结构中,所有设备都是内存映射的.
内存映射I/O映射到与程序存储器和/或用户存储器相同的地址空间,并以相同方式访问.
端口映射I/O使用单独的专用地址空间,并通过一组专用的微处理器指令进行访问.
由于16位处理器将逐渐过时并在一般情况下被替换为32位和64位,因此为I/O保留存储器地址空间范围不是问题,因为处理器的存储器地址空间通常很多大于系统中所有内存和I/O设备所需的空间.
因此,利用内存映射I/O的优势变得更加实际.
这种方法的缺点是必须为每个设备完全解码整个地址总线.例如,具有32位地址总线的机器将需要逻辑门来解析所有32个地址线的状态,以正确解码任何设备的特定地址.这增加了向机器添加硬件的成本.
IO映射IO系统的优点是解码离散地址所需的逻辑较少,因此将硬件设备添加到机器的成本较低.但是可能需要更多说明.
参考: - 检查此链接
| 归档时间: |
|
| 查看次数: |
24726 次 |
| 最近记录: |