一、I/O端口
端口(port)是接口電路中能被CPU直接訪問的寄存器的地址。幾乎每一種外設都是通過讀寫設備上的寄存器來進行的。CPU通過這些地址即端口向接口電路中的寄存器發(fā)送命令,讀取狀態(tài)和傳送數(shù)據(jù)。外設寄存器也稱為“I/O端口”,通常包括:控制寄存器、狀態(tài)寄存器和數(shù)據(jù)寄存器三大類,而且一個外設的寄存器通常被連續(xù)地編址。
二、IO內(nèi)存
例如,在PC上可以插上一塊圖形卡,有2MB的存儲空間,甚至可能還帶有ROM,其中裝有可執(zhí)行代碼。
三、IO端口和IO內(nèi)存的區(qū)分及聯(lián)系
這兩者如何區(qū)分就涉及到硬件知識,X86體系中,具有兩個地址空間:IO空間和內(nèi)存空間,而RISC指令系統(tǒng)的CPU(如ARM、PowerPC等)通常只實現(xiàn)一個物理地址空間,即內(nèi)存空間。
內(nèi)存空間:內(nèi)存地址尋址范圍,32位操作系統(tǒng)內(nèi)存空間為2的32次冪,即4G。
IO空間:X86特有的一個空間,與內(nèi)存空間彼此獨立的地址空間,32位X86有64K的IO空間。
IO端口:當寄存器或內(nèi)存位于IO空間時,稱為IO端口。一般寄存器也俗稱I/O端口,或者說I/O ports,這個I/O端口可以被映射在Memory Space,也可以被映射在I/O Space。
IO內(nèi)存:當寄存器或內(nèi)存位于內(nèi)存空間時,稱為IO內(nèi)存。
四、外設IO端口物理地址的編址方式
CPU對外設IO端口物理地址的編址方式有兩種:一種是I/O映射方式(I/O-mapped),另一種是內(nèi)存映射方式(Memory-mapped)。而具體采用哪一種則取決于CPU的體系結構。
1、統(tǒng)一編址
RISC指令系統(tǒng)的CPU(如,PowerPC、m68k、ARM等)通常只實現(xiàn)一個物理地址空間(RAM)。在這種情況下,外設I/O端口的物理地址就被映射到CPU的單一物理地址空間中,而成為內(nèi)存的一部分。此時,CPU可以象訪問一個內(nèi)存單元那樣訪問外設I/O端口,而不需要設立專門的外設I/O指令。
統(tǒng)一編址也稱為“I/O內(nèi)存”方式,外設寄存器位于“內(nèi)存空間”(很多外設有自己的內(nèi)存、緩沖區(qū),外設的寄存器和內(nèi)存統(tǒng)稱“I/O空間”)。
2、獨立編址
而另外一些體系結構的CPU(典型地如X86)則為外設專門實現(xiàn)了一個單獨地地址空間,稱為“I/O地址空間”或者“I/O端口空間”。這是一個與CPU地RAM物理地址空間不同的地址空間,所有外設的I/O端口均在這一空間中進行編址。CPU通過設立專門的I/O指令(如X86的IN和OUT指令)來訪問這一空間中的地址單元(也即I/O端口)。與RAM物理地址空間相比,I/O地址空間通常都比較小,如x86 CPU的I/O空間就只有64KB(0-0xffff)。這是“I/O映射方式”的一個主要缺點。
獨立編址也稱為“I/O端口”方式,外設寄存器位于“I/O(地址)空間”。
3、優(yōu)缺點
獨立編址主要優(yōu)點是:
1)I/O端口地址不占用存儲器空間;使用專門的I/O指令對端口進行操作,I/O指令短,執(zhí)行速度快。
2)并且由于專門I/O指令與存儲器訪問指令有明顯的區(qū)別,使程序中I/O操作和存儲器操作層次清晰,程序的可讀性強。
3)同時,由于使用專門的I/O指令訪問端口,并且I/O端口地址和存儲器地址是分開的,故I/O端口地址和存儲器地址可以重疊,而不會相互混淆。
4)譯碼電路比較簡單(因為I/0端口的地址空間一般較小,所用地址線也就較少)。
其缺點是:只能用專門的I/0指令,訪問端口的方法不如訪問存儲器的方法多。
統(tǒng)一編址優(yōu)點:
1)由于對I/O設備的訪問是使用訪問存儲器的指令,所以指令類型多,功能齊全,這不僅使訪問I/O端口可實現(xiàn)輸入/輸出操作,而且還可對端口內(nèi)容進行算術邏輯運算,移位等等;
2)另外,能給端口有較大的編址空間,這對大型控制系統(tǒng)和數(shù)據(jù)通信系統(tǒng)是很有意義的。
這種方式的缺點是端口占用了存儲器的地址空間,使存儲器容量減小,另外指令長度比專門I/O指令要長,因而執(zhí)行速度較慢。
究竟采用哪一種取決于系統(tǒng)的總體設計。在一個系統(tǒng)中也可以同時使用兩種方式,前提是首先要支持I/O獨立編址。Intel的x86微處理器都支持I/O 獨立編址,因為它們的指令系統(tǒng)中都有I/O指令,并設置了可以區(qū)分I/O訪問和存儲器訪問的控制信號引腳。而一些微處理器或單片機,為了減少引腳,從而減 少芯片占用面積,不支持I/O獨立編址,只能采用存儲器統(tǒng)一編址。
評論