请解释内存映射IO和IO映射IO之间的区别
发布于 2010-10-09 23:00:21
在x86上有两个不同的地址空间,一个用于内存,另一个用于I/O端口。
端口地址空间限制为65536个端口,并使用IN/OUT指令进行访问。
例如,可以使用一些I/O端口访问视频卡的VGA功能,但帧缓冲区是内存映射的。
其他CPU架构只有一个地址空间。在这些架构中,所有设备都是内存映射的。
发布于 2010-10-08 20:41:31
嗯,..。除非我误解了,否则你说的是两件完全不同的事情。我将给你两个非常简短的解释,这样你就可以在谷歌上搜索到你现在需要的东西。
内存映射I/O意味着将I/O硬件设备的内存映射到主内存映射中。也就是说,计算机内存中的地址实际上并不对应于您的RAM,而是对应于外围设备的内部寄存器和内存。这就是Pointy所说的机器架构。
还有映射I/O,这意味着获取(比方说)一个文件,并让操作系统将其部分加载到内存中,以便稍后更快地访问。在Unix中,这可以通过mmap()来完成。
我希望这对你有所帮助。
发布于 2014-03-23 01:50:16
内存映射I/O映射到与程序内存和/或用户内存相同的地址空间,并以相同的方式进行访问。
端口映射I/O使用单独的专用地址空间,并通过一组专用的微处理器指令进行访问。
由于16位处理器将逐渐过时,并在一般使用中被32位和64位所取代,因此为I/O保留存储器地址空间的范围不是问题,因为处理器的存储器地址空间通常比系统中所有存储器和I/O设备所需的空间大得多。
因此,利用内存映射I/O的好处变得更加实用。
这种方法的缺点是必须对每个设备的整个地址总线进行完全解码。例如,具有32位地址总线的机器将需要逻辑门来解析所有32条地址线的状态,以便正确地解码任何设备的特定地址。这增加了向机器添加硬件的成本。
IO映射IO系统的优点是需要更少的逻辑来解码离散地址,因此向机器添加硬件设备的成本更低。然而,可能需要更多的指令。
参考:- Check This link
https://stackoverflow.com/questions/3890484
复制相似问题