了解一下ARMv8處理器架構(gòu)中的虛擬化操作-設(shè)計(jì)應(yīng)用_第1頁(yè)
了解一下ARMv8處理器架構(gòu)中的虛擬化操作-設(shè)計(jì)應(yīng)用_第2頁(yè)
了解一下ARMv8處理器架構(gòu)中的虛擬化操作-設(shè)計(jì)應(yīng)用_第3頁(yè)
了解一下ARMv8處理器架構(gòu)中的虛擬化操作-設(shè)計(jì)應(yīng)用_第4頁(yè)
了解一下ARMv8處理器架構(gòu)中的虛擬化操作-設(shè)計(jì)應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

精品文檔-下載后可編輯了解一下ARMv8處理器架構(gòu)中的虛擬化操作-設(shè)計(jì)應(yīng)用基于ARMv8的系統(tǒng)中的虛擬化工具在這些系統(tǒng)中起著特殊的作用,它由幾個(gè)組件組成,雖然ARMv7具有特殊的CPU模式來(lái)運(yùn)行虛擬機(jī)管理程序作為擴(kuò)展,但在ARMv8中,它已成為架構(gòu)的一部分,并且已經(jīng)以名稱(chēng)EL2集成到特權(quán)級(jí)系統(tǒng)中。同時(shí),該模式僅解決與CPU訪(fǎng)問(wèn)系統(tǒng)資源相關(guān)的問(wèn)題,例如存儲(chǔ)器和外圍設(shè)備。為了提高虛擬化環(huán)境中設(shè)備啟動(dòng)的事務(wù)的效率,已經(jīng)為基于ARMv8的系統(tǒng)開(kāi)發(fā)了許多組件,例如新的中斷控制器和IOMMU。本文從軟件開(kāi)發(fā)的角度概述了這些工具組件?;贏RMv8的系統(tǒng)中的虛擬化如圖1所示:EL2特權(quán)級(jí)別運(yùn)行虛擬機(jī)管理程序,控制虛擬機(jī)(VM)代碼的執(zhí)行以及它們之間的資源共享。EL1(OS內(nèi)核,特權(quán)代碼)和EL0(非特權(quán)代碼)的級(jí)別留給VM實(shí)例。地址轉(zhuǎn)換分兩個(gè)階段執(zhí)行(圖2):在階段,使用級(jí)轉(zhuǎn)換表(TTBR0_EL1/TTBR1_EL1寄存器中保存的指針)從虛擬地址計(jì)算所謂的中間物理地址(IPA);在第二階段,使用管理程序準(zhǔn)備的第二級(jí)表計(jì)算實(shí)際物理地址(指針存儲(chǔ)在VTTBR_EL2寄存器中)。這樣的組織架構(gòu)可以提供有效的權(quán)限分離和VM與硬件的隔離。

圖1:基于ARMv8的系統(tǒng)中的虛擬化(:Auriga)

兩級(jí)轉(zhuǎn)換允許VM維護(hù)自己的轉(zhuǎn)換表,同時(shí)還允許管理程序完全控制終結(jié)果。EL2權(quán)限級(jí)別專(zhuān)門(mén)用于執(zhí)行管理程序代碼,與其他級(jí)別有一些差異。因此,它是特殊寄存器VTTBR_EL2、VTCR_EL2可訪(fǎng)問(wèn)的特權(quán)級(jí)別以及用于VM管理的許多其他特權(quán)寄存器。在ARMv8架構(gòu)的原始版本中,僅為管理程序提供了一個(gè)轉(zhuǎn)換表,而為當(dāng)前VM提供了另一個(gè)轉(zhuǎn)換表。管理程序可以訪(fǎng)問(wèn)多個(gè)特殊寄存器,通過(guò)這些寄存器可以設(shè)置EL1級(jí)別的VM可見(jiàn)的配置參數(shù),例如CPU標(biāo)識(shí)符(制造商,版本等)和多處理器系統(tǒng)ID。這允許將在同一系統(tǒng)上運(yùn)行的VM暴露給來(lái)自不同版本和制造商的虛擬SMP系統(tǒng)和CPU的不同拓?fù)?。如果在VM中發(fā)生需要管理程序干預(yù)的事件,則其處理按如下方式執(zhí)行:在EL2級(jí)別發(fā)生異常;根據(jù)其類(lèi)型,從表中調(diào)用相應(yīng)的處理程序(該地址存儲(chǔ)在VBAR_EL2寄存器中);執(zhí)行必要的行動(dòng);如果需要,將所需值放入登記冊(cè);管理程序返回到退出發(fā)生的VM(如果設(shè)計(jì)了管理程序,則切換到另一個(gè)VM)。

發(fā)生此類(lèi)VM退出異常的事件由HCR_EL2寄存器位定義。因此,這些可以是系統(tǒng)寄存器訪(fǎng)問(wèn),包括EL1權(quán)限級(jí)別可用的訪(fǎng)問(wèn)(例如,TTBR0_EL1/TTBR1_EL1,F(xiàn)AR_EL1),緩存和TLB刷新指令,常規(guī)異常(中斷,包括來(lái)自定時(shí)器和不支持的操作代碼的中斷),以及中斷和事件等待指令。兩級(jí)地址轉(zhuǎn)換啟用也由該寄存器控制。此外,EL2級(jí)還有一個(gè)單獨(dú)的硬件定時(shí)器,它允許管理程序配置周期性中斷,通常用于啟動(dòng)VM切換,類(lèi)似于在現(xiàn)代操作系統(tǒng)中切換任務(wù)的方式。切換過(guò)程還包括保存當(dāng)前VM上下文,加載新VM以及將控制轉(zhuǎn)移給它。同時(shí),VM可以以類(lèi)似于EL0級(jí)別的非特權(quán)代碼執(zhí)行系統(tǒng)調(diào)用的方式執(zhí)行管理程序調(diào)用。為了執(zhí)行這樣的調(diào)用,VM將參數(shù)放在寄存器中并執(zhí)行“hvc”指令。這導(dǎo)致以標(biāo)準(zhǔn)方式處理的EL2權(quán)限級(jí)別的異常。通常,這在調(diào)用標(biāo)準(zhǔn)化PSCI協(xié)議功能時(shí)發(fā)生。還應(yīng)該提到的是,管理程序可以攔截從VM到可信代碼例程的調(diào)用(例如,在那里實(shí)現(xiàn)非虛擬化環(huán)境中的PSCI,并且在特權(quán)級(jí)別EL3處理對(duì)它的調(diào)用)。ARMv8架構(gòu)還包含用于提高虛擬化環(huán)境性能的其他工具:除了管理程序可以分配的可共享域以減少緩存一致性流量之外,還可以為每個(gè)VM分配其自己的標(biāo)識(shí)符或VMID。它的使用使得在切換VM時(shí)可以避免“昂貴的”TLB刷新。原始版本的ARMv8提供了8位標(biāo)識(shí)符,后來(lái)擴(kuò)展為16位。此外,在ARMv8.1中,EL2級(jí)別的第二個(gè)轉(zhuǎn)換表TTBR1_EL2作為VM主機(jī)擴(kuò)展的一部分添加,因此,類(lèi)型2的管理程序(它們是主機(jī)操作系統(tǒng)的一部分)具有更多可能性。同時(shí),如上所述,全功能虛擬化需要VM與外圍設(shè)備(網(wǎng)絡(luò)適配器,存儲(chǔ)控制器等)進(jìn)行交互,同時(shí)化管理程序參與以及從設(shè)備到處理器的交付中斷。系統(tǒng)存儲(chǔ)管理單元ARMv8系統(tǒng)中虛擬化環(huán)境的各個(gè)方面由兩個(gè)單元處理:通用中斷控制器(GIC)和系統(tǒng)內(nèi)存管理單元(SMMU)(圖3)。SMMU執(zhí)行I/O地址轉(zhuǎn)換的方式與CPU啟動(dòng)的存儲(chǔ)訪(fǎng)問(wèn)相同。該單元支持I/O地址的和兩級(jí)轉(zhuǎn)換。因此,可以在VM和管理程序中使用轉(zhuǎn)換和保護(hù)內(nèi)存區(qū)域的優(yōu)勢(shì)。因此,允許設(shè)備僅對(duì)特定存儲(chǔ)器地址范圍進(jìn)行讀/寫(xiě)。

圖3:系統(tǒng)存儲(chǔ)管理單元(SMMU)此外,有時(shí)通過(guò)SMMU在I/O緩沖區(qū)上組織分散-收集操作很方便。轉(zhuǎn)換階段的使用模型與CPU的使用模型幾乎相同(即,階段的輸出產(chǎn)生當(dāng)前VM獨(dú)有的IPA,第二階段的輸出產(chǎn)生整個(gè)特有的真實(shí)物理地址系統(tǒng))。SMMU轉(zhuǎn)換表的格式類(lèi)似于CPU的格式,頁(yè)面屬性有一些差異。支持4,16和64KB的頁(yè)面大小以及一個(gè)或兩個(gè)轉(zhuǎn)換表,具體取決于寄存器設(shè)置和轉(zhuǎn)換階段,以及完整的48或52位地址空間。每個(gè)涉及的設(shè)備都有自己的轉(zhuǎn)換上下文(終選擇相關(guān)的轉(zhuǎn)換表集)??梢栽诙鄠€(gè)設(shè)備之間共享單個(gè)上下文。上下文選擇由單元使用所謂的流ID(硬件相關(guān)的設(shè)備標(biāo)識(shí)符)來(lái)執(zhí)行。因此,對(duì)于PCIe設(shè)備(物理或虛擬功能),RID用作復(fù)制PCIe配置空間中的設(shè)備地址的標(biāo)識(shí)符。SMMU擁有自己的TLB并支持VMID以加速。在錯(cuò)誤的配置檢測(cè),轉(zhuǎn)換錯(cuò)誤和其他異常的情況下,SMMU斷言所謂的上下文中斷(即,綁定到轉(zhuǎn)換上下文的中斷)。SMMU維護(hù)類(lèi)似于CPU內(nèi)存管理單元(MMU)。但是,處理器MMU上的操作(TLB復(fù)位,轉(zhuǎn)換結(jié)果檢索等)是通過(guò)特殊指令執(zhí)行的,而對(duì)于SMMU,它們是通過(guò)訪(fǎng)問(wèn)上下文寄存器來(lái)執(zhí)行的。截至2022年底,SMMU規(guī)格有多個(gè)版本,版本為3.1。SMMU版本3.0和3.1支持?jǐn)U展流ID,并使用RAM中的表來(lái)匹配流和上下文的ID。這樣的表可以有一個(gè)或兩個(gè)級(jí)別。表元素包含指向存儲(chǔ)在存儲(chǔ)器中的上下文描述符的指針,以及與元素相關(guān)的VM標(biāo)識(shí)符,以及指向第二級(jí)轉(zhuǎn)換表的指針。反過(guò)來(lái),上下文描述符包含指向級(jí)轉(zhuǎn)換表的指針。SMMUv3的一個(gè)重要特性是能夠在軟件響應(yīng)之前停止執(zhí)行事務(wù)。這種模型允許設(shè)備訪(fǎng)問(wèn)不在RAM中的頁(yè)面或者推測(cè)性地分配。SMMU還可以自動(dòng)設(shè)置轉(zhuǎn)換表中的更改頁(yè)面指示位。這可以簡(jiǎn)化VM遷移,快照VM狀態(tài)等。SMMUv3還支持VM標(biāo)識(shí)符掩碼,允許在不同VM之間共享轉(zhuǎn)換表,從而降低TLB壓力。在SMMUv3中,控制和事件信令都已經(jīng)過(guò)顯著重構(gòu):該單元使用事件隊(duì)列,它是內(nèi)存中的環(huán)形緩沖區(qū),上下文中斷被替換為中斷,該中斷表示隊(duì)列中新描述符的出現(xiàn)。要獲取設(shè)備訪(fǎng)問(wèn)的頁(yè)面,有一個(gè)單獨(dú)的隊(duì)列,即所謂的頁(yè)面請(qǐng)求接口(PRI)。如上所述,代替上下文寄存器,使用存儲(chǔ)器中的控制塊,并且通過(guò)將命令描述符寫(xiě)入命令隊(duì)列并提交它們來(lái)執(zhí)行上下文管理。GIC在虛擬化環(huán)境功能中發(fā)揮著至關(guān)重要的作用。在2022年底,規(guī)范的第四個(gè)版本是版本,而第二個(gè)版本是用于ARMv8處理器的版本。GIC本身非常復(fù)雜,因?yàn)樾枰诙嗵幚砥飨到y(tǒng)中提供中斷(現(xiàn)有的實(shí)現(xiàn)可以有256個(gè)或更多的硬件線(xiàn)程)。但是,本文僅考慮與虛擬化直接相關(guān)的控制器功能。大多數(shù)GIC寄存器都沒(méi)有虛擬化,這會(huì)在訪(fǎng)問(wèn)時(shí)導(dǎo)致VM退出。同時(shí),該規(guī)范引入了諸如虛擬中斷之類(lèi)的概念。中斷虛擬化虛擬中斷可以分為兩個(gè)虛擬組中的一個(gè):0和1。組0保存所謂的快速中斷請(qǐng)求(FIQ),而組1保存所有其他(中斷請(qǐng)求,IRQ)。處理器以與物理處理完全相同的方式處理虛擬中斷?;贏RMv8的虛擬化環(huán)境中的中斷處理組織如下:來(lái)自設(shè)備的物理中斷被發(fā)送到EL2級(jí)別(到管理程序),并且如果中斷用于虛擬機(jī)管理程序,則管理程序激活虛擬處理器上的相應(yīng)虛擬中斷。系統(tǒng)和服務(wù)中斷都可以路由到虛擬機(jī)管理程序。根據(jù)GIC規(guī)范,管理程序在虛擬化之前處理物理中斷。支持GIC中的中斷虛擬化由表示虛擬中斷的事件列表支持,存儲(chǔ)在相應(yīng)的寄存器中并作為虛擬IRQ或FIQ處理。通過(guò)處理器寄存器接口控制虛擬中斷類(lèi)似于物理中斷。因此,在虛擬處理器上運(yùn)行的軟件能夠執(zhí)行以下操作:設(shè)置虛擬優(yōu)先級(jí)掩碼;控制在組內(nèi)解釋虛擬優(yōu)先級(jí)的方式;確認(rèn)虛擬中斷;降低虛擬中斷的優(yōu)先級(jí);停用虛擬中斷。為了管理虛擬中斷,CPU接口提供了一組系統(tǒng)寄存器,它們位于與物理中斷控制寄存器相同的地址。這意味著控制機(jī)制對(duì)于VM是透明的。虛擬中斷列表上的寄存器數(shù)量是實(shí)現(xiàn)定義的,但限制為16,如果尋址到虛擬處理器的中斷數(shù)超過(guò)可用寄存器數(shù),則管理程序可以在內(nèi)存中存儲(chǔ)相應(yīng)的事件以將其寫(xiě)入釋放狀態(tài)稍后注冊(cè)。中斷的優(yōu)先級(jí)在硬件中執(zhí)行。虛擬接口產(chǎn)生尋址到管理程序的中斷,管理程序應(yīng)該響應(yīng)事件(空中斷列表,啟用和禁用組,發(fā)信號(hào)通知不在寄存器中的中斷的中斷結(jié)束等)。除了專(zhuān)用外設(shè)中斷(PPI)和共享外設(shè)中斷(SPI)之外,ARMv8系統(tǒng)還有一類(lèi)稱(chēng)為特定于位置的外設(shè)中斷(LPI)的消息(消息信號(hào)中斷(MSI))發(fā)出的中斷信號(hào)。GICv3及更高版本的GIC擴(kuò)展了對(duì)此中斷類(lèi)的支持,該中斷類(lèi)可以根據(jù)特殊規(guī)則(中斷轉(zhuǎn)換服務(wù)(ITS))處理中斷消息。但是,這些功能與虛擬化有某種間接關(guān)系,但值得簡(jiǎn)要描述它們,以提供GICv4中引入的更改的一般視圖。在使用ITS時(shí),設(shè)備通過(guò)在GITS_TRANSLATOR寄存器中發(fā)出具有目標(biāo)地址的寫(xiě)事務(wù)來(lái)發(fā)送事件信號(hào)。寫(xiě)入事務(wù)由正在寫(xiě)入的數(shù)據(jù)(包含事件ID)和源標(biāo)識(shí)符(與SMMU相同)組成。系統(tǒng)軟件對(duì)ITS寄存器進(jìn)行編程,使它們指向存儲(chǔ)器中的設(shè)備、集合和中斷存儲(chǔ)器表,這些存儲(chǔ)器表包含處理來(lái)自指定目標(biāo)CPU和中斷ID的相關(guān)源的事件的規(guī)則。中斷導(dǎo)致在掛起中斷表中設(shè)置元素的相應(yīng)字段。對(duì)于GICv3,此機(jī)制僅針對(duì)物理中斷(即,由設(shè)備直接發(fā)信號(hào)通知)進(jìn)行定義。這導(dǎo)致管理程序?qū)崿F(xiàn)中的某些不便。特別是,它要求管理程序執(zhí)行ITS在軟件中完成的所有操作。GICv4引入了以編程方式生成此類(lèi)中斷并將LPI轉(zhuǎn)換為為相應(yīng)虛擬處理器設(shè)置的虛擬中斷的功能,為此引入了描

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論