0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Arm對虛擬化下設(shè)備直通的支持

安芯教育科技 ? 來源:安謀科技學(xué)堂 ? 2023-04-28 15:30 ? 次閱讀

隨著云計算領(lǐng)域里,ARM架構(gòu)處理器的廣泛使用,應(yīng)用開發(fā)人員熟悉ARM架構(gòu)相關(guān)技術(shù)的需求越來越迫切。眾所周知,提供虛擬機(jī)服務(wù)是云計算的典型應(yīng)用場景,而虛擬機(jī)里設(shè)備性能的優(yōu)劣對服務(wù)質(zhì)量至關(guān)重要。

提到虛擬機(jī)里的設(shè)備,就不得不提及設(shè)備的虛擬化,最初虛擬機(jī)里的設(shè)備完全是依靠軟件模擬來實現(xiàn),也叫全虛擬化設(shè)備,這樣的好處是運(yùn)行在物理機(jī)里的OS可以完全不需要修改就能在虛擬機(jī)里運(yùn)行,但設(shè)備性能很差,滿足不了人們的需求。后來,有人提出了半虛擬化的思想,寄希望于軟件的優(yōu)化,比如修改設(shè)備模型,減少不必要的內(nèi)存拷貝,來滿足大家對設(shè)備的性能需求。典型代表virtio設(shè)備。此法使性能雖有較大提升,但與真實的設(shè)備仍有較大差距。為了獲取等同于真實設(shè)備的性能,設(shè)備直通的方式被提了出來,也漸漸成為主流方式。

虛擬機(jī)里使用直通的設(shè)備,的確可以帶來最大的性能提升。但是卻暴漏出一系列的系統(tǒng)安全問題。比如提供DMA的設(shè)備通常可以寫內(nèi)存的任意頁,因此虛擬機(jī)里的Guest OS擁有創(chuàng)建DMA的能力就等同于用戶空間擁有了root權(quán)限,惡意的設(shè)備可能利用此發(fā)動DMA攻擊,給其他虛擬機(jī)乃至整個物理機(jī)帶來安全問題。因此,需要提供DMA重映射功能,通過頁表方式將直通設(shè)備對內(nèi)存的訪問限制到特定的域中,在提高IO性能的同時完成了直通設(shè)備的隔離,保證了直通設(shè)備DMA的安全性。此外,直通設(shè)備的中斷默認(rèn)是發(fā)給物理CPU的,要想通知到虛擬機(jī)里的vCPU,就需要中斷的重定向。

DMA重映射跟中斷重定向的實現(xiàn),最初是完全交由虛擬機(jī)監(jiān)控器(Hypervisor)或模擬器(比如qemu)來負(fù)責(zé)。這是一種純軟件的思路,必然大大降低設(shè)備的性能,因此急需硬件的參與配合。為此,ARM的SMMU和GIC規(guī)范順勢添加了對DMA重映射跟中斷重定向的支持。本文的重點便是圍繞這兩大特性介紹如何支持虛擬化環(huán)境下的設(shè)備直通。

一、DMA重映射

SMMU是System MMU的縮寫,是ARM架構(gòu)下一種對非CPU設(shè)備提供地址翻譯服務(wù)的組件,功能類似于CPU的MMU組件。這里非CPU設(shè)備主要指發(fā)起DMA操作的外圍子系統(tǒng)。如下圖所示:

10fd7ffa-e593-11ed-ab56-dac502259ad0.png

注:PE為Processing Element 的縮寫,可理解為CPU。

在虛擬化應(yīng)用場景下,地址翻譯往往分為兩個階段。階段一是虛擬地址(VA)到GuestOS認(rèn)為的物理地址(IPA)間的轉(zhuǎn)換;階段二為IPA到真實物理地址(PA)間的轉(zhuǎn)換。而SMMU既可以同時支持兩個階段的轉(zhuǎn)換,也可以單獨(dú)支持每個階段的轉(zhuǎn)換。這為直通設(shè)備DMA重映射提供了可能。直通設(shè)備的DMA只需要獲取IPA,之后的工作便交由SMMU來做階段二的處理,以達(dá)到安全高效的訪問PA的目的。如下圖所示:

11179bc4-e593-11ed-ab56-dac502259ad0.png

針對以上應(yīng)用場景,我們介紹SMMU的內(nèi)部結(jié)構(gòu)來闡述具體實現(xiàn)原理。SMMU含有兩個核心單元,分別為翻譯控制單元TCU和翻譯緩沖單元TBU。其中TCU主要含有Stream Mapping Table(SMT)和Context Bank Table(CBT)。SMT通過StreamID來索引內(nèi)部的Entry,StreamID跟具體直通設(shè)備一一對應(yīng), 從而獲取到指向CBT具體Entry的指針。CBT的Entry內(nèi)容則含有階段二翻譯表的指針,當(dāng)獲取到此指針后,翻譯過程即可像普通MMU一樣按部就班的進(jìn)行下去。而TBU的作用等同于TLB,借助Cache原理,加快SMMU工作效率,不再贅述。以上描述過程總結(jié)為如下框圖所示:

112a1236-e593-11ed-ab56-dac502259ad0.png

二、中斷重定向

GIC是Generic Interrupt Controller的縮寫。GIC的主要作用是路由各種不同的中斷信息給CPU。虛擬化環(huán)境下的中斷處理情形要復(fù)雜的多,有些因指令trap產(chǎn)生的中斷需要Hypervisor本身來處理;有些是分配給某個虛擬機(jī)的直通設(shè)備產(chǎn)生的中斷則需要虛擬機(jī)內(nèi)的軟件來處理;也有中斷被接收時,對標(biāo)的虛擬機(jī)沒有處于運(yùn)行狀態(tài)的情況。這需要GIC提供機(jī)制,重定向中斷以滿足上述復(fù)雜的需求。

由于本文的重點是對直通設(shè)備虛擬化支持的講解,因此此部分將介紹GIC是如何支持直通設(shè)備中斷重映射的,并不會剖析GIC內(nèi)部組成及實現(xiàn)原理。我們以GICv3為例,圖示如下:

1141741c-e593-11ed-ab56-dac502259ad0.png

配以如下步驟說明:

1 直通設(shè)備發(fā)起的中斷IRQ到達(dá)GIC;

2 GIC發(fā)物理的IRQ到CPU;

3 Hypervisor會從Physical CPU Interface讀取中斷信息;

4 Hypervisor發(fā)現(xiàn)此中斷是某虛擬機(jī)內(nèi)的直通設(shè)備觸發(fā),于是通過寫GIC List Register重新注入一個虛擬IRQ到GIC中;

5 GIC產(chǎn)生vIRQ中斷并發(fā)給vCPU;

6 最終vCPU接收vIRQ中斷并由運(yùn)行其上的GuestOS接管并通過跟Virtual CPU interface交互處理后續(xù)中斷任務(wù)。

至此,一個完整的中斷重映射過程結(jié)束。

在GIC參與直通設(shè)備的中斷重映射后,虛擬機(jī)在處理中斷效率上有了明顯提升,但是跟Host主機(jī)上普通物理中斷相比,總是多了一步由軟件Hypervisor參與的動作。因此,我們稱以上方式為間接注入中斷的方式。為了進(jìn)一步提高處理中斷的效率,GICv4引入了直接注入中斷方式。具體原理則是直通設(shè)備在獲取中斷時,GIC會將分配給設(shè)備的物理中斷與虛擬中斷做一個映射。這樣當(dāng)設(shè)備觸發(fā)中斷時,GIC會直接發(fā)信號給vCPU。有這樣一種情況,設(shè)備觸發(fā)中斷時vCPU沒有運(yùn)行,即虛擬機(jī)處于休眠態(tài),如果直接發(fā)vIRQ給vCPU是得不到響應(yīng)的,這時候會產(chǎn)生一個物理的door-bell中斷來代替,此中斷交由Hypervisor處理,它會重新調(diào)度vCPU,從而使中斷得到及時響應(yīng)。

本文通過虛擬化下如何支持設(shè)備直通的角度,講解了ARM架構(gòu)支持DMA重映射跟中斷重定向的原理,旨在普及ARM架構(gòu)下一些支持虛擬化的技術(shù)。當(dāng)然ARM架構(gòu)對虛擬化的支持不僅局限于此。相信隨著ARM生態(tài)的不斷完善,這些技術(shù)會被越來越多的人所熟知。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    8967

    瀏覽量

    365041
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10702

    瀏覽量

    209374
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    888

    瀏覽量

    27813
收藏 人收藏

    評論

    相關(guān)推薦

    虛擬數(shù)據(jù)恢復(fù)—EXSI虛擬機(jī)誤還原快照如何恢復(fù)數(shù)據(jù)?

    虛擬技術(shù)原理是將硬件虛擬供不同的虛擬機(jī)使用,一臺物理機(jī)上可以有多臺虛擬機(jī)。人為誤操作或者物理
    的頭像 發(fā)表于 09-09 11:56 ?160次閱讀
    <b class='flag-5'>虛擬</b><b class='flag-5'>化</b>數(shù)據(jù)恢復(fù)—EXSI<b class='flag-5'>虛擬</b>機(jī)誤還原快照如何恢復(fù)數(shù)據(jù)?

    什么是虛擬機(jī)?什么是虛擬

    在日新月異的科技世界中,虛擬技術(shù)如同一座橋梁,連接著現(xiàn)實與數(shù)字的鴻溝,為我們打開了全新的計算維度。虛擬機(jī),這一概念,自其誕生以來,就以其獨(dú)特的魅力和強(qiáng)大的功能,深深地影響了軟件開發(fā)、系統(tǒng)測試和云計算等多個領(lǐng)域。即使目前你還不了
    的頭像 發(fā)表于 09-04 14:55 ?260次閱讀

    虛擬數(shù)據(jù)恢復(fù)—XenServer虛擬平臺數(shù)據(jù)恢復(fù)案例

    虛擬數(shù)據(jù)恢復(fù)環(huán)境: 某品牌R720服務(wù)器,4塊STAT硬盤通過H710P陣列卡組建了一組raid10磁盤陣列。服務(wù)器上部署XenServer虛擬平臺,
    的頭像 發(fā)表于 07-30 13:18 ?146次閱讀
    <b class='flag-5'>虛擬</b><b class='flag-5'>化</b>數(shù)據(jù)恢復(fù)—XenServer<b class='flag-5'>虛擬</b><b class='flag-5'>化</b>平臺數(shù)據(jù)恢復(fù)案例

    直通網(wǎng)線的作用及制作步驟

    直通網(wǎng)線的主要作用是連接不同的設(shè)備,如電腦和路由器、路由器和交換機(jī)等,以建立網(wǎng)絡(luò)連接。以下是直通網(wǎng)線的制作步驟: 一、直通網(wǎng)線的作用 直通網(wǎng)
    的頭像 發(fā)表于 07-04 09:51 ?361次閱讀

    EZ-USB SX3 CYUSB3017設(shè)備能否同時在USB 2.0線路上傳輸視頻流并支持通過虛擬COM傳輸命令?

    EZ-USB SX3 CYUSB3017 設(shè)備能否同時在 USB 2.0 線路上傳輸視頻流并支持通過虛擬 COM 傳輸命令? 情況是這樣的:打開兩個不同的 PC 程序: 通過 USB 2.0 傳輸
    發(fā)表于 05-23 07:11

    直通網(wǎng)線和交叉網(wǎng)線區(qū)別

    白、棕。而交叉網(wǎng)線則在一端采用568A線序,另一端采用568B線序,其線纜兩端的線序是交叉的。568A的線序是:綠白、綠、橙白、藍(lán)、藍(lán)白、橙、棕白、棕。 使用場景:直通網(wǎng)線主要用于連接不同類型的設(shè)備,例如路由器與交換機(jī)、個人電腦
    的頭像 發(fā)表于 05-10 10:06 ?1729次閱讀

    百度智能云進(jìn)一步集成Arm虛擬硬件 加速AI開發(fā)創(chuàng)新

    Arm 虛擬硬件于 2023 年八月上線百度智能云后,近日,雙方基于 Arm 虛擬硬件的合作再度迎來新里程!
    的頭像 發(fā)表于 03-11 15:17 ?358次閱讀

    存儲虛擬有哪些常見類型?有什么優(yōu)點?

    存儲虛擬是一種將多個存儲設(shè)備的物理存儲資源抽象出來、將它們集中在一起并將它們呈現(xiàn)為單個邏輯存儲單元的技術(shù)。此過程簡化了存儲管理,提高了資源利用率,并實現(xiàn)了跨各種存儲設(shè)備(例如硬盤驅(qū)動
    的頭像 發(fā)表于 03-07 16:47 ?800次閱讀

    直通網(wǎng)線和交叉網(wǎng)線的區(qū)別有哪些呢?

    T-568B線序標(biāo)準(zhǔn)。 在實際運(yùn)用中,直通網(wǎng)線常用來連接不同的設(shè)備,例如電腦和路由器、路由器和交換機(jī)等,而交叉網(wǎng)線用來連接相同的設(shè)備,例如電腦和電腦、路由器和路由器。 此外,直通網(wǎng)線和
    的頭像 發(fā)表于 03-07 10:34 ?1032次閱讀

    虛擬軟件棧有哪些防御措施

    虛擬軟件棧是一種在物理服務(wù)器上運(yùn)行多個虛擬機(jī)的技術(shù),可以提高服務(wù)器資源的利用率和靈活性。然而,虛擬軟件棧也帶來了新的安全風(fēng)險,因此需要采
    的頭像 發(fā)表于 01-25 11:27 ?572次閱讀

    超融合和虛擬的區(qū)別

    超融合和虛擬是當(dāng)今IT領(lǐng)域非常熱門的兩個概念,它們都是為了提高數(shù)據(jù)中心的效能和靈活性,但在實現(xiàn)方式和功能上存在一些區(qū)別。本文將詳細(xì)討論超融合和虛擬的定義、原理、特點、優(yōu)缺點以及它們
    的頭像 發(fā)表于 01-15 10:36 ?3101次閱讀

    smt貼片加工直通率為什么如此重要

    smt貼片加工,smt 直通率堪稱是貼片加工廠的生命線,有些公司的直通率必須達(dá)到95%才是達(dá)標(biāo)線,因此直通率的高低,反應(yīng)了貼片加工廠的技術(shù)實力、工藝品質(zhì),直通率高能夠提升公司的產(chǎn)能效率
    的頭像 發(fā)表于 12-05 10:23 ?1518次閱讀

    直通串口和交叉串口的區(qū)別 如何辨別交叉串口線與直連串口線?

    直通串口和交叉串口的區(qū)別 如何辨別交叉串口線與直連串口線?什么時候用交叉,什么時候用直通? 直通串口和交叉串口是在計算機(jī)設(shè)備或系統(tǒng)中用于連接串行設(shè)備
    的頭像 發(fā)表于 11-28 15:45 ?2158次閱讀

    西門子標(biāo)準(zhǔn)編程和虛擬調(diào)試應(yīng)用

    西門子標(biāo)準(zhǔn)編程和虛擬調(diào)試應(yīng)用,西門子標(biāo)準(zhǔn)編程、仿真與虛擬調(diào)試應(yīng)用培訓(xùn)PPT。
    發(fā)表于 11-16 14:58 ?418次閱讀
    西門子標(biāo)準(zhǔn)<b class='flag-5'>化</b>編程和<b class='flag-5'>虛擬</b>調(diào)試應(yīng)用

    下設(shè)備智能遠(yuǎn)程控制方案

    下設(shè)備的智能遠(yuǎn)程控制是指通過網(wǎng)絡(luò)技術(shù)和傳感器設(shè)備,實現(xiàn)對井下設(shè)備進(jìn)行數(shù)據(jù)監(jiān)測、故障診斷和遠(yuǎn)程控制操作的方法。目前,隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,井下設(shè)備的智能
    的頭像 發(fā)表于 10-30 17:29 ?685次閱讀