存儲器映射輸入輸出

內存映射輸入輸出 ( 簡稱爲內存映射I / O ） ， 以及端口映射輸入輸出 ( 也叫作獨立輸入輸出  ， 是PC機在中央處理器  和外部設備之間執行輸入輸出操作的兩種方法 ， 這兩種方法互爲補充 。 除此之外 ， 執行輸入輸出操作也可以使用專用輸入輸出處理器  — — 這通常是指大型電腦上的通道輸入輸出  ， 這些專用處理器執行自有的指令集 。 內存映射I / O （ 不要和內存映射文件的輸入輸出混淆 ） 使用相同的地址總線來尋址內存和輸入輸出設備 （ 簡稱I / O設備 ） ， 前提是I / O設備上的設備內存和寄存器都已經被映射到內存空間的某個地址 。 這樣當CPU訪問某個地址的時候 ， 可能是要訪問某一部份物理內存 ， 也可能是要訪問I / O設備上的內存 。 因此 ， 設備內存也可以通過內存訪問指令來完成讀寫 。 每個I / O設備監測CPU的地址總線 ， 並且在發現CPU訪問被分配到本設備的地址區域的時候做出響應 ， 建立數據總線和相應設備寄存器之間的連接 。 爲了實現CPU對MMI / O設備的訪問 ， 相應的地址空間必須給這些設備保留 ， 並且不能再分配給系統物理內存 。 這可以是永久保留 ， 也可以是暫時性的保留 。 通常來說X86架構都是永久保留的 ， 而在Commodore 64中 ， 由於採用了I / O設備和普通內存之間的堆交換技術 （ bank switching ）, 可以做到暫時性保留 。 PMI / O通常使用一組專門爲I / O設計的CPU指令來執行I / O操作 。 比如在基於x86和x86 - 64架構的微處理器中使用in / out指令 。 這兩條指令有一些不同的形式 ， 分別用來在CPU的EAX寄存器 （ 或高16位 / 低16位 / 高8位 / 低8位 ） 和I / O設備的某個端口之間完成對單字節 / 雙字節 / 四字節數據的操作 ( 比如對out指令 ， 分別有outb, outw和outl ) 。 I / O設備有一個和內存地址空間相互獨立的I / O地址空間 。 I / O設備通過專用I / O針腳或者專用的總線和CPU相連 。 因爲這個I / O地址空間和內存地址空間相互獨立 ， 所以有時候稱爲獨立I / O.