???????
分析這幾個容易混淆的概念.
??????? 引用一段資料: 幾乎每一種外設都是通過讀寫設備上的寄存器來進行操作的。外設寄存器也稱為“I/O端口”,通常包括:控制寄存器、狀態寄存器和數據寄存器三大類,而且一個外設的寄存器通常被連續地編址。CPU對外設IO端口物理地址的編址方式有兩種:一種是I/O映射方式(I/O-mapped),另一種是內存映射方式(Memory-mapped)。具體采用哪一種則取決于CPU的體系結構。 有些體系結構的CPU(如PowerPC、m68k等)通常只實現一個物理地址空間(RAM)。在這種情況下,外設I/O端口的物理地址就被映射到CPU的單一物理地址空間中,而成為內存的一部分。此時,CPU可以象訪問一個內存單元那樣訪問外設I/O端口,而不需要設立專門的外設I/O指令。這就是所謂的“內存映射方式”(Memory-mapped)。主要缺點是是存儲器空間變小.
而另外一些體系結構的CPU(如X86)則為外設專門實現了一個單獨地地址空間,稱為“I/O地址空間”或者“I/O端口空間”。這是一個與CPU的RAM物理地址空間不同的地址空間,所有外設的I/O端口均在這一空間中進行編址。CPU通過設立專門的I/O指令(如X86的IN和OUT指令)來訪問這一空間中的地址單元(也即I/O端口)。這就是所謂的“I/O映射方式”(I/O-mapped)。與RAM物理地址空間相比,I/O地址空間通常都比較小,如x86 CPU的I/O空間就只有64KB(0-0xffff)。這是“I/O映射方式”的一個主要缺點。
???????? 在張凡的<微機原理與接口技術>一書中提到的I/O端口的兩種編址方式:(1)I/O與存儲器統一編址(如單片機);(2)單獨編址(X86系統).這和上述的內存映射方式,I/O映射方式分別對應.
??????? 我的理解是:寄存器就是I/O端口;而采用內存映射方式的I/O是存儲器的一個子集,采用I/O單獨映射方式的I/O是和存儲器平級的存儲空間.