2011-12-27 88 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