IOMMU

IOMMU主要功能包括DMA Remapping和Interrupt Remapping

在虛擬化環(huán)境下谷饿,guest VM使用的物理地址是GPA(參考這篇文章)览妖,如果直接用guest OS中的驅(qū)動程序去操作I/O設(shè)備的話(這里的I/O限定于和內(nèi)存統(tǒng)一編址的MMIO)绰精,那么設(shè)備使用的地址也是GPA。這倒不難辦烟馅,使用CPU的EPT/NPT MMU查詢對應(yīng)guest VM的nPT頁表歉备,進(jìn)行一下GPA->HPA的轉(zhuǎn)換就可以了。

可是別忘了团驱,有一些I/O設(shè)備是具備DMA(Direct Memory Access)功能的。由于DMA是直接在設(shè)備和物理內(nèi)存之間傳輸數(shù)據(jù)空凸,必須使用實際的物理地址(也就是HPA)嚎花,但DMA本身是為了減輕CPU的處理負(fù)擔(dān)而存在的,其傳輸過程并不經(jīng)過CPU劫恒。對于一個支持DMA傳輸?shù)脑O(shè)備贩幻,當(dāng)它拿著GPA去發(fā)起DMA操作時,由于沒有真實的物理內(nèi)存地址两嘴,傳輸勢必會失敗。

那如何實現(xiàn)對進(jìn)行DMA傳輸?shù)脑O(shè)備的GPA->HPA轉(zhuǎn)換呢族壳?再來一個類似于EPT/NPT的MMU憔辫?沒錯,這種專門轉(zhuǎn)換I/O地址的MMU在x86的陣營里就是IOMMU仿荆。

然而贰您,不和AMD使用相同的名字是Intel一貫的路數(shù),所以Intel通常更愿意把這種硬件輔助的I/O虛擬化技術(shù)叫做VT-d(Virtualization Technology for Direct I/O)拢操。作為后起之秀的ARM自然也不甘示弱锦亦,推出了對應(yīng)的SMMU(System MMU)。

以Intel的VT-d為例令境,它規(guī)定了一個domain對應(yīng)一個IO頁表杠园。在具體的實現(xiàn)中,通常是一個guest VM作為一個domain舔庶,因此分配給同一個guest VM的設(shè)備將共享同一個IO頁表抛蚁。

IOMMU能將device使用的虛擬地址(也稱為設(shè)備地址或者IO地址)轉(zhuǎn)化為物理地址,如果沒有IOMMU,DMA也能直接訪問RAM中的內(nèi)容,但是讓DMA沒有限制地訪問RAM是一件很危險的事情,而IOMMU能夠?qū)@個過程加以限制,當(dāng)DMA訪問的地址合法時,IOMMU才返回正確的數(shù)據(jù).

硬件中斷重映射
除了翻譯地址的功能,IOMMU還能對硬件中斷進(jìn)行重映射,達(dá)到屏蔽部分中斷,或自定義中斷處理函數(shù)的目的.

設(shè)備隔離
基于地址翻譯和硬件中斷重映射兩大功能,IOMMU就具有了隔離設(shè)備的能力,這提高了設(shè)備訪問RAM時和設(shè)備發(fā)出中斷時的安全性.

除了將單個設(shè)備隔離的功能外,IOMMU還能隔離一組設(shè)備,如隔離PCI橋上的幾個設(shè)備,所以IOMMU還有一個概念,叫做IOMMU_GROUP, 代表一組被隔離的設(shè)備的集合.

Iommu 的主要功能為設(shè)備dma時刻能夠訪問機(jī)器的物理內(nèi)存區(qū)惕橙,同時保證安全性瞧甩。

在沒有Iommu的時候,設(shè)備通過dma可以訪問到機(jī)器的全部的地址空間弥鹦。

1肚逸、這種機(jī)制下如果將設(shè)備的驅(qū)動放在用戶態(tài),那么如何保護(hù)機(jī)器物理內(nèi)存區(qū)對于用戶態(tài)驅(qū)動框架設(shè)計帶來挑戰(zhàn)。當(dāng)出現(xiàn)了iommu以后朦促,iommu通過控制每個設(shè)備dma地址到實際物理地址的映射轉(zhuǎn)換膝晾,使得在一定的內(nèi)核驅(qū)動框架下,用戶態(tài)驅(qū)動能能夠完全操作某個設(shè)備dma和中斷成為可能思灰。

2玷犹、如果將這個物理設(shè)備通過透傳的方式進(jìn)入到虛擬化虛擬機(jī)里,虛擬機(jī)的設(shè)備驅(qū)動配置設(shè)備的dma后洒疚,hypervisor必須在透傳設(shè)備dma訪問時刻歹颓,對dma訪問進(jìn)行截獲,將其中dma訪問的虛擬機(jī)物理地址油湖,轉(zhuǎn)換為hypervisor為虛擬機(jī)分配的物理地址巍扛,也就是需要將虛擬機(jī)透傳設(shè)備dma訪問做vpaddr(虛擬機(jī)物理地址)---->ppaddr(物理機(jī)物理地址)。這部分截獲對虛擬機(jī)dma來說帶來切換到hypervisor開銷乏德,hypervisor轉(zhuǎn)換地址開銷撤奸。

當(dāng)引入了iommu以后,這部分開銷由iommu硬件承擔(dān)喊括,所有hypervisor工作就更加簡單胧瓜,只需要將透傳設(shè)備Iommu dma地址映射表使用vpaddr--->ppaddr地址轉(zhuǎn)換表即可(這部分表在hypervisor里配置在ept中)

3、方便了老式32位pci硬件在64位機(jī)器上的使用郑什。只需要在iommu地址映射表上配置32bitpci設(shè)備dma地址-->64位機(jī)器物理地址即可府喳。

4、方便了主機(jī)os配置設(shè)備dma工作蘑拯,因為dma要求使用連續(xù)的地址空間進(jìn)行讀寫钝满,有了iommu的存在os就可以為設(shè)備配置連續(xù)的dma地址而真正對應(yīng)的非連續(xù)的物理地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市申窘,隨后出現(xiàn)的幾起案子弯蚜,更是在濱河造成了極大的恐慌,老刑警劉巖剃法,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碎捺,死亡現(xiàn)場離奇詭異,居然都是意外死亡玄窝,警方通過查閱死者的電腦和手機(jī)牵寺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恩脂,“玉大人帽氓,你說我怎么就攤上這事×┛椋” “怎么了黎休?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵浓领,是天一觀的道長。 經(jīng)常有香客問我势腮,道長联贩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任捎拯,我火速辦了婚禮泪幌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘署照。我一直安慰自己祸泪,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布建芙。 她就那樣靜靜地躺著没隘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪禁荸。 梳的紋絲不亂的頭發(fā)上右蒲,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機(jī)與錄音赶熟,去河邊找鬼瑰妄。 笑死,一個胖子當(dāng)著我的面吹牛映砖,可吹牛的內(nèi)容都是我干的翰撑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼啊央,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了涨醋?” 一聲冷哼從身側(cè)響起瓜饥,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浴骂,沒想到半個月后乓土,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡溯警,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年趣苏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梯轻。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡食磕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喳挑,到底是詐尸還是另有隱情彬伦,我是刑警寧澤滔悉,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站单绑,受9級特大地震影響回官,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搂橙,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一歉提、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧区转,春花似錦苔巨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至厅缺,卻和暖如春蔬顾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背湘捎。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工诀豁, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人窥妇。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓舷胜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親活翩。 傳聞我的和親對象是個殘疾皇子烹骨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容