MMIO(Memory mapping I/O )即 內(nèi)存映射I/O ,它是PCI規(guī)范的一部分, I/O設(shè)備 被放置在內(nèi)存空間而不是I/O空間。從處理器的角度看,內(nèi)存映射I/O后系統(tǒng)設(shè)備訪問(wèn)起來(lái)和內(nèi)存一樣。這樣訪問(wèn)AGP/PCI-E顯卡上的 幀緩存 ,BIOS,PCI設(shè)備就可以使用讀寫(xiě)內(nèi)存一樣的 匯編指令 完成,簡(jiǎn)化了程序設(shè)計(jì)的難度和接口的復(fù)雜性。 基本概念 MMIO(Memory mapping I/O)即內(nèi)存映射I/O,它是PCI規(guī)范的一部分,I/O設(shè)備被放置在內(nèi)存空間而不是I/O空間。從處理器的角度看,內(nèi)存映射I/O后系統(tǒng)設(shè)備訪問(wèn)起來(lái)和內(nèi)存一樣。這樣訪問(wèn)AGP/PCI-E顯卡上的幀緩存,BIOS,PCI設(shè)備就可以使用讀寫(xiě)內(nèi)存一樣的匯編指令完成,簡(jiǎn)化了程序設(shè)計(jì)的難度和接口的復(fù)雜性。I/O作為CPU和外設(shè)交流的一個(gè)渠道,主要分為兩種,一種是Port I/O,一種是MMIO(Memory mapping I/O)。(來(lái)自百度百科) 簡(jiǎn)而言之,MMIO就是通過(guò)將外圍設(shè)備映射到內(nèi)存空間,便于CPU的訪問(wèn)。 I/O作為CPU和外設(shè)交流的一個(gè)渠道,主要分為兩種,一種是Port I/O,一種是MMIO(Memory mapping I/O)。 前者就是我們常說(shuō)的 I/O端口 ,它實(shí)際上的應(yīng)該被稱(chēng)為 I/O地址 空間。 小概念: 32位操作系統(tǒng),32bit的處理器,擁有32bit尋址能力,即可訪問(wèn)2^32=4G的物理地址,那么就具有4G內(nèi)存的識(shí)別能力。 物理地址:并不是指物理內(nèi)存的地址,而是指處理器和系統(tǒng)內(nèi)存之間所用到的地址,可以理解為CPU最為方便訪問(wèn)的地址(有別于我們之前所知道的物理地址的定義:段地址*16+偏移地址),而這一個(gè)內(nèi)存并不獨(dú)屬于物理內(nèi)存,而被分成了很多部分,物理內(nèi)存當(dāng)然也能夠占用其中的一部分。 PortIO和MMIO 的主要區(qū)別 1)前者不占用CPU的物理地址空間,后者占有(這是對(duì)x86架構(gòu)說(shuō)的,一些架構(gòu),如IA64,port I/O占用物理地址空間)。 2)前者是順序訪問(wèn)。也就是說(shuō)在一條I/O指令完成前,下一條指令不會(huì)執(zhí)行。例如通過(guò)Port I/O對(duì)設(shè)備發(fā)起了操作,造成了設(shè)備寄存器狀態(tài)變化,這個(gè)變化在下一條指令執(zhí)行前生效。uncache的MMIO通過(guò)uncahce memory的特性保證順序性。 3)使用方式不同
|
|