Memory-mapped I/O(記憶體映射輸入/輸出)是一種計算機硬體輸入/輸出的架構,它將硬體裝置的狀態或硬體裝置的控制註冊映射到同一地址空間中用於應用程式和作業系統的記憶體地址。這意味著程式可以使用標準的資料存取指令來讀取或寫入裝置,就如同對記憶體的操作一樣。
記憶體映射I/O具有以下特點:
地址共享:記憶體地址空間中的一部分被用來存取I/O裝置,因此,這些地址並不指向實際的記憶體位置,而是指向硬體裝置或控制註冊。
程式簡化:由於使用了記憶體操作指令來訪問I/O裝置,開發者可以使用相同的程式碼來讀取或寫入資料,不需特別的I/O指令,這簡化了程式設計。
效能:記憶體映射I/O可能在某些情況下提高效能,因為它可以使用所有針對記憶體操作優化的指令和硬體。
然而,記憶體映射I/O也有其局限性:
地址空間的浪費:I/O裝置可能會占用大量的地址空間,這部分空間對應用程式來說是不可用的,尤其是在32位系統中,地址空間可能會顯得比較有限。
硬體複雜性:硬體設計和記憶體管理變得更加複雜,因為系統必須能夠區分記憶體訪問和I/O訪問。
記憶體映射I/O是現代計算機設計中常見的一種I/O處理方式,它和另一種稱為「端口映射I/O」(或稱為I/O映射I/O)的方式形成對比,在端口映射I/O中,特殊的I/O指令被用來訪問專門的I/O端口地址空間。