2011-12-27 57 views
8

我只是想知道I/O端口和I/O内存之间的区别,因为我很困惑。如果有人解释它的使用,那会很好。我的意思是,当I/O端口是首选的,并且I/O存储器是首选的时候。I/O端口和I/O内存之间的区别

回答

10

有存储区域和I/O区域之间没有概念上的差异:两者都被通过地址总线和控制总线

上断言电信号虽然一些CPU制造商在他们的芯片实现单个地址空间访问,其他人则认为外围设备与内存不同,因此需要单独的地址空间。某些处理器(最着名的是x86系列)具有独立的读写电线,用于I/O端口和用于访问端口的特殊CPU指令。

Linux在所有运行的计算机平台上实现I/O端口的概念,即使在CPU实现单个地址空间的平台上。端口访问的实现有时取决于主机的具体品牌和型号(因为不同的型号使用不同的芯片组来将总线事务映射到内存地址空间中)。

即使外围总线有一个独立的I/O端口地址空间,并非所有设备都将其寄存器映射到I/O端口。尽管ISA外设板使用I/O端口很常见,但大多数PCI设备都将寄存器映射到内存地址区域。这种I/O内存方法通常是首选,因为它不需要使用专用处理器指令; CPU内核访问内存的效率更高,编译器在访问内存时具有更多的寄存器分配和寻址模式选择自由。

更多详情请点击http://www.makelinux.net/ldd3/chp-9-sect-1