MMIO

MMIO(Memory-mapped I/O)即記憶體映射I/O,它是PCI規範的一部分,I/O設備被放置在記憶體空間而不是I/O空間。從處理器的角度看,記憶體映射I/O後系統設備訪問起來和記憶體一樣。這樣訪問AGP/PCI-E顯示卡上的幀快取,BIOS,PCI設備就可以使用讀寫記憶體一樣的彙編指令完成,簡化了程式設計的難度和接口的複雜性。

基本介紹

  • 中文名:MMIO
  • 外文名:Memory mapping I/O
  • 類型:計算機
  • 中文名記憶體映射I/O
詳細介紹,主要區別,

詳細介紹

MMIO(Memory mapping I/O)即記憶體映射I/O,它是PCI規範的一部分,I/O設備被放置在記憶體空間而不是I/O空間。從處理器的角度看,記憶體映射I/O後系統設備訪問起來和記憶體一樣。這樣訪問AGP/PCI-E顯示卡上的幀快取,BIOS,PCI設備就可以使用讀寫記憶體一樣的彙編指令完成,簡化了程式設計的難度和接口的複雜性。I/O作為CPU和外設交流的一個渠道,主要分為兩種,一種是Port I/O,一種是MMIO(Memory mapping I/O)。
前者就是我們常說的I/O連線埠,它實際上的應該被稱為I/O地址空間。
對於x86架構來說,通過IN/OUT指令訪問。PC架構一共有65536個8bit的I/O連線埠,組成64KI/O地址空間,編號從0~0xFFFF。連續兩個8bit的連線埠可以組成一個16bit的連線埠,連續4個組成一個32bit的連線埠。I/O地址空間和CPU的物理地址空間是兩個不同的概念,例如I/O地址空間為64K,一個32bit的CPU物理地址空間是4G。
MMIO占用CPU的物理地址空間,對它的訪問可以使用CPU訪問記憶體的指令進行。一個形象的比喻是把檔案用mmap()後,可以像訪問記憶體一樣訪問檔案、同樣,MMIO是用訪問記憶體一樣的方式訪問I/O資源,如設備上的記憶體。MMIO不能被cache(有特殊情況,如VGA)。

主要區別

1)前者不占用CPU的物理地址空間,後者占有(這是對x86架構說的,一些架構,如IA64,port I/O占用物理地址空間)。
2)前者是順序訪問。也就是說在一條I/O指令完成前,下一條指令不會執行。例如通過Port I/O對設備發起了操作,造成了設備暫存器狀態變化,這個變化在下一條指令執行前生效。uncache的MMIO通過uncahce memory的特性保證順序性。
3)使用方式不同
由於port I/O有獨立的64K I/O地址空間,但CPU的地址線只有一套,所以必須區分地址屬於物理地址空間還是I/O地址空間。

相關詞條

熱門詞條

聯絡我們