国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Intel和AMD的兩種CPU硬件輔助虛擬化技術

汽車玩家 ? 來源:啟迪云Tuscloud ? 作者:啟迪云Tuscloud ? 2020-01-20 17:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

目前主要有Intel的VT-x和AMD的AMD-V這兩種技術。其核心思想都是通過引入新的指令和運行模式,使VMM和Guest OS分別運行在不同模式(ROOT模式和非ROOT模式)下,且Guest OS運行在Ring 0下。通常情況下,Guest OS的核心指令可以直接下達到計算機系統硬件執行,而不需要經過VMM。當Guest OS執行到特殊指令的時候,系統會切換到VMM,讓VMM來處理特殊指令。

1、Intel VT-x技術

為彌補x86處理器的虛擬化缺陷,市場的驅動催生了VT-x,Intel推出了基于x86架構的硬件輔助虛擬化技術Intel VT(Intel Virtualization Technology)。

目前,Intel VT技術包含CPU、內存和I/O三方面的虛擬化技術。CPU硬件輔助虛擬化技術,分為對應安騰架構的VT-i(Intel Virtualization Technology for ltanium)和對應x86架構的VT-x(Intel Virtualization Technologyfor x86)兩個版本。內存硬件輔助虛擬化技術包括EPT(Extended Page Table)技術。I/0硬件輔助虛擬化技術的代表hatelVY-d(Intel Virtualization Technology for Directed I/0)。

IntelVT-x技術解決了早期x86架構在虛擬化方面存在的缺陷,可使未經修改的GuestOS運行在特權級0,同時減少VMM對Guest OS的干預。Intel VT-d技術通過使VMM將特定I/O設備直接分配給特定的Guest OS,減少VMM對I/O處理的管理,不但加速數據傳輸,且消除了大部分性能開銷。如下圖所示。CPU硬件輔助虛擬化技術簡要說明流程圖:

Intel和AMD的兩種CPU硬件輔助虛擬化技術

效法IBM 大型機,VT-x提供了2 個運行環境:根(Root)環境和非根(Non-root)環境。根環境專門為VMM準備,很像原來沒有VT-x 的x86,只是多了對VT-x 支持的幾條指令。非根環境作為一個受限環境用來運行多個虛擬機。

Intel和AMD的兩種CPU硬件輔助虛擬化技術

如上圖所示,根操作模式與非根操作模式都有相應的特權級0至特權級3。VMM運行在根模式的特權級0,GuestOS的內核運行在非根模式的特權級0,GuestOS的應用程序運行在非根模式的特權級3。運行環境之間相互轉化,從根環境到非根環境叫VMEntry;從非根環境到根環境叫VMExit。VT-x定義了VMEntry操作,使CPU由根模式切換到非根模式,運行客戶機操作系統指令。若在非根模式執行了敏感指令或發生了中斷等,會執行VMExit操作,切換回根模式運行VMM。

根模式與非根模式之問的相互轉換是通過VMX操作實現的。VMM 可以通過VMXON 和VMXOFF打開或關閉VT-x。如下圖所示:

Intel和AMD的兩種CPU硬件輔助虛擬化技術

VMX操作模式流程:

1)、VMM執行VMXON指令進入VMX操作模式。

2)、VMM可執行VMLAUNCH指令或VMRESUME指令產生VM Entry操作,進入到Guest OS,此時CPU處于非根模式。

3)、Guest 0S執行特權指令等情況導致VMExit的發生,此時將陷入VMM,CPU切換為根模式。VMM根據VMExit的原因作出相應處理,處理完成后將轉到2),繼續運行GuestOS。

4)、VMM可決定是否退出VMX操作模式,通過執行VMXOFF指令來完成。

為更好地支持CPU虛擬化,VMX新定義了虛擬機控制結構VMCS(Virtual Machine ControlStructure)。VMCS是保存在內存中的數據結構,其包括虛擬CPU的相關寄存器的內容及相關的控制信息。CPU在發生VM Entry或VMExit時,都會查詢和更新VMCS。VMM也可通過指令來配置VMCS,達到對虛擬處理器的管理。VMCS架構圖如下圖所示:

Intel和AMD的兩種CPU硬件輔助虛擬化技術

每個虛擬處理器都需將VMCS與內存中的一塊區域聯合起來,此區域稱為VMCS區域。對VMCS區域的操縱是通過VMCS指針來實現的,這個指針是一個指向VMCS的64位的地址值。VMCS區域是一個最大不超過4KB的內存塊,且需4KB對齊。

VMCS區域分為三個部分:偏移0起是VMCS版本標識,通過不同的版本號,CPU可維護不同的VMCS數據格式;偏移4起是VMX中止指示器,在VMX中止發生時,CPU會在此處存入中止的原因;偏移8起是VMCS數據區,這一部分控制VMX非根操作及VMX切換。

VMCS 的數據區包含了VMX配置信息:VMM在啟動虛擬機前配置其哪些操作會觸發VMExit。VMExit 產生后,處理器把執行權交給VMM 以完成控制,然后VMM 通過指令觸發VMEntry 返回原來的虛擬機或調度到另一個虛擬機。

VMCS 的數據結構中,每個虛擬機一個,加上虛擬機的各種狀態信息,共由3個部分組成,如之前的VMCS架構圖所示:

1)、Gueststate:該區域保存了虛擬機運行時的狀態,在VMEntry 時由處理器裝載;在VMExit時由處理器保存。它又由兩部分組成:

Guest OS寄存器狀態。它包括控制寄存器、調試寄存器、段寄存器等各類寄存器的值。

Guest OS非寄存器狀態。用它可以記錄當前處理器所處狀態,是活躍、停機(HLT)、關機(Shutdown)還是等待啟動處理器間中斷(Startup-IPI)。

2)、Hoststate:該區域保存了VMM 運行時的狀態,主要是一些寄存器值,在VMExit 時由處理器裝載。

3)、Control data:該區域包含幾部分數據信息,分別是:

虛擬機執行控制域(VM-Execution control fields)。VMM 主要通過配置該區域來控制虛擬機在非根環境中的執行行為?;卺樐_的虛擬機執行控制。它決定在發生外部中斷或不可屏蔽中斷(NMI)要不要發生VMExit?;谔幚砥鞯奶摂M機執行控制。它決定虛擬機執行RDTSC、HLT、INVLPG 等指令時要不要發生VMExit。

VMExit 控制域(VMExit control fields)。該區域控制VMExit 時的行為。當VMExit 發生后處理器是否處于64 位模式;當因為外部中斷發生VMExit 時,處理器是否響應中斷控制器并且獲得中斷向量號。VMM 可以用它來定制當VMExit 發生時要保存哪些MSR 并且裝載哪些MSR。MSR是CPU的模式寄存器,設置CPU的工作環境和標識cpu的工作狀態。

VMEntry 控制域(VMEntry control fields)。該區域控制VMEntry 時的行為。它決定處理器VMEntry 后是否處于IA-32e 模式。與VMExit 的MSR控制類似,VMM 用它來定制當VMEntry 發生時要裝載哪些MSR。VMM 可以配置VMEntry 時通過虛擬機的IDT向其發送一個事件。在此可以配置將使用IDT 的向量、中斷類型(硬件或軟件中斷)、錯誤碼等。

VMExit 信息域(VMExit information fields)。該只讀區域包括最近一次發生的VMExit 信息。試圖對該區域執行寫操作將產生錯誤。。此處存放VMExit 的原因以及針對不同原因的更多描述信息、中斷或異常向量號、中斷類型和錯誤碼、通過 IDT 發送事件時產生的VMExit 信息、指令執行時產生的 VMExit 信息。

有了VMCS結構后,對虛擬機的控制就是讀寫VMCS結構。后面對vCPU設置中斷,檢查狀態實際上都是在讀寫VMCS數據結構。

2、AMD-V技術

我們在上面小節介紹了 Intel 的硬件輔助虛擬化技術,那么 AMD 的硬件輔助虛擬化技術又有什么特點呢?AMD 從 2006 年便開始致力于硬件輔助虛擬化技術的研究,AMD-V全稱是AMD Virtualization,AMD-V從代碼的角度分別稱為 AMD和 SVM,AMD開發這項虛擬化技術時的內部項目代碼為Pacifica,是AMD推出的一種硬件輔助虛擬化技術。

Intel和AMD的兩種CPU硬件輔助虛擬化技術

Intel VT-x 和 AMD-V 提供的特征大多功能類似,但名稱可能不一樣,如 Intel VT-x 將用于存放虛擬機狀態和控制信息的數據結構稱為 VMCS, 而 AMD-V 稱之為VMCB;Intel VT-x 將 TLB 記錄中用于標記 VM 地址空間的字段為 VPID, 而AMD-V 稱之為 ASID;Intel VT-x 將二級地址翻譯稱之為 EPT, AMD 則稱為 NPT,等等一些區別。盡管其相似性,Intel VT-x 和 AMD-V 在實現上對 VMM 而言是不兼容的。

AMD-V 在 AMD 傳統的x86-64 基礎上引入了“guest”操作模式?!癵uest”操作模式就是 CPU 在進入客操作系統運行時所處的模式。“guest”操作模式為客操作系統設定了一個不同于 VMM 的運行環境而不需要改變客操作系統已有的 4 個特權級機制,也就是說在“guest”模式下,客操作系統的內核仍然運行在 Ring 0, 用戶程序仍然在 Ring 3。裸機上的操作系統和 VMM 所在的操作模式依然和傳統的 x86 中一樣,且稱之為“host”操作模式。VMM 通過執行 VMRUN 指令使CPU 進入“guest”操作模式而執行客操作系統的代碼;客操作系統在運行時,遇到敏感指令或事件,硬件就執行 VMEXIT 行為,使 CPU 回到“host”模式而執行 VMM 的代碼。VMRUN 指令運行的參數是一個物理地址指針,其指向一個 Virtual Machine Control Block (VMCB) 的內存數據結構, 該數據結構包含了啟動和控制一個虛擬機的全部信息。

Intel和AMD的兩種CPU硬件輔助虛擬化技術

“guest”模式的意義在于其讓客操作系統處于完全不同的運行環境,而不需要改變客操作系統的代碼?!癵uest”模式的設立在系統中建立了一個比 Ring 0 更強的特權控制,即客操作系統的 Ring 0 特權必須讓位于 VMM 的 Ring 0 特權??筒僮飨到y上運行的那些特權指令,即便是在 Ring 0 上也變的可以被 VMM 截取的了,“Ring Deprivileging”由硬件自動搞定。此外,VMM 還可以通過 VMCB 中的各種截取控制字段選擇性的對指令和事情進行截取,或設置有條件的截取,所有的敏感的特權或非特權指令都在其控制之中。

Intel和AMD的兩種CPU硬件輔助虛擬化技術

VMCB 數據結構主要包含如下內容 :

1. 用于描述需要截取的指令或事件的字段列表。其中 :

2 個 16 位的字段用于控制對 CR 類控制寄存器讀寫的截取

2 個 16 位的字段用于控制對 DR 類調試寄存器的讀寫的截取

一個 32 位的字段用于控制 exceptions 的截取

一個 64 位的字段用于控制各種引起系統狀態變化的事件或指令的截取,如 INTR, NMI, SMI 等事 件, HLT, CPUID,INVD/WBINVD,INVLPG/INVLPGA,MWAIT 等指令, 還包括兩位分別標志是否對 IO 指令和 MSR 寄存器的讀寫進行控制

指向IO端口訪問控制位圖和MSR讀寫控制位圖的物理地址指針字段。該位圖用于差別性地控制虛擬機對不同的 IO 端口和 MSR 寄存器進行讀寫訪問。

描述虛擬機CPU狀態的信息。包含除通用寄存器外的大部分控制寄存器,段寄存器,描述符表寄存器,代碼指針等。RAX 寄存器也在其中,因為 RAX 在 VMM 執行 VMRUN 時是用來存放VMCB 物理地址的。對于段寄存器,該信息中還包含段寄存器對應的段描述符,也就那些傳統 x86 上對軟件隱藏的信息。

對虛擬機的執行進行控制的字段。主要是控制虛擬機中斷和 NPT 的字段。

指示虛擬機進入“guest”模式后要執行的行動的字段。包括用來描述 VMM 向虛擬機注入的中斷或異常的信息的字段。注入的中斷或異常在 VMRUN 進入“guest”模式后立即執行,就象完全發生在虛擬機內一樣。

提供VMEXIT信息的字段。包括導致 VMEXIT 的事件的代碼,異?;蛑袛嗟奶柎a,page fault 的線性地址,被截獲的指令的編碼等。

Intel和AMD的兩種CPU硬件輔助虛擬化技術

VMCB 以及其涉及的控制位圖,完全通過物理地址進行指向,這就避免了“guest”和“host”模式切換的過程依賴于“guest”空間的線性地址 ( 傳統操作系統內用戶空間到內核的切換確實依賴于 IDT 中提供的目標的線性地址 ),使得 VMM 可以采用和客操作系統完全不同的地址空間。

VMCB 的內容在物理上被分成了倆部分,其中用于保存虛擬機 CPU 狀態的信息占據 2048 字節的后半部分,我們可稱之為 VMCB.SAVE;其他信息,占據前 1024 字節范圍,我們可稱之為 VMCB.CONTROL。

VMRUN 命令以 VMCB 為參數,使CPU 進入“guest”狀態, 按 VMCB.SAVE 的內容恢復虛擬機的 CPU 寄存器狀態,并按 VMCB.SAVE 中 CS:RIP 字段指示的地址開始執行虛擬機 的代碼, 并將之前 VMM 的 CPU 狀態保存在MSR_VM_HSAVE_PA 寄存器所指向的物理內存區域中。VMRUN 所保存的 VMM 的 CPU狀態的 CS:RIP 實際上就是 VMM 的代碼中 VMCB 的下一個指令,當虛擬機因某種原因而導致 #VMEXIT 時,VMM 會從 VMRUN 后的一條指令開始執行。CPU 執行 #VMEXIT 行為時,會自動將虛擬機的狀態保存到 VMCB.SAVE 區,并從 MSR_VM_HSAVE_PA 指定的區域加載 VMM 的 CPU 狀態。

VMLOAD 和 VMSAVE 指令是對 VMRUN 的補充,他們用來加載和恢復一些并不需要經常使用的 CPU 狀態,如 FS, GS, TR, LDTR 寄存器以及其相關的隱含的描述符寄存器的內容,VMLOAD 和 VMSAVE 可以讓 VMM 的實現對“guest”進入和退出的過程進行優化,讓多數情況下只使用 VMRUN 進行最少的狀態保存和恢復。

VMMCALL 指令是 AMD-V 為客操作系統內核提供的明確的功能調用接口,類似于 syscall 指令 ( 從 Ring3 到 Ring 0), VMMCALL 讓客操作系統直接執行 #VMEXIT 而進入 VMM,請求VMM 的服務。

3、總結

回顧一下CPU虛擬化技術的實現,純軟件的CPU虛擬化使用了陷入-模擬的模式來模擬特權指令,而在x86架構中由于只能模擬特權指令,無法模擬某些敏感指令而無法實現完全的虛擬化。(在x86架構中,特權指令一定是敏感指令,但是敏感指令比特權指令多,造成某系敏感指令不是特權指令而無法模擬,使得CPU虛擬化異常),而硬件輔助虛擬化引入了根模式(root operation)和非根模式(none-root operation),每種模式都有ring0-3的四級特權級別。所以,在硬件輔助虛擬化中,陷入的概念實際上被VM-EXIT操作取代了,它代表從非根模式退出到根模式,而從根模式切換到非根模式是VM-Entry操作。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • amd
    amd
    +關注

    關注

    25

    文章

    5684

    瀏覽量

    139971
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11279

    瀏覽量

    224995
  • intel
    +關注

    關注

    19

    文章

    3508

    瀏覽量

    191288
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    TVS vs TSS 兩種保護機制的深度博弈

    在現代電子設備日益精密、工作環境愈發復雜的背景下,電路安全問題尤其是雷擊和瞬態過壓(Surge)防護,已成為產品設計中不可忽視的重要環節。其中,TVS(瞬態電壓抑制器)與TSS(晶閘管浪涌抑制器)是兩種廣泛應用的浪涌保護器件。盡管二者均服務于同一目標——保障電路
    的頭像 發表于 02-12 15:23 ?705次閱讀
    TVS vs TSS <b class='flag-5'>兩種</b>保護機制的深度博弈

    用PLC實現卷徑計算的兩種算法

    卷徑計算,是動態計算如鋼卷,紙卷等存料量的一方法,它是實現張力控制和自動充放料、以及甩尾控制的重要前提。卷徑計算目前主流的方法有兩種,一是根據機列速度(產線速度)和和被測卷的轉動角速度求得;另一
    的頭像 發表于 11-14 16:54 ?2083次閱讀
    用PLC實現卷徑計算的<b class='flag-5'>兩種</b>算法

    車載軟件vECU虛擬測試解決方案

    虛擬測試:利用虛擬技術,實現將真實域控制器轉化為虛擬域控制器,運行在PC或服務器環境中運行,
    的頭像 發表于 10-30 09:34 ?1697次閱讀
    車載軟件vECU<b class='flag-5'>虛擬</b><b class='flag-5'>化</b>測試解決方案

    ADI GMSL技術兩種視頻數據傳輸模式的區別

    本文深入介紹GMSL技術,重點說明用于視頻數據傳輸的像素模式和隧道模式之間的差異。文章將闡明這兩種模式之間的主要區別,并探討成功實施需要注意的具體事項。
    的頭像 發表于 10-10 13:49 ?2320次閱讀
    ADI GMSL<b class='flag-5'>技術</b><b class='flag-5'>兩種</b>視頻數據傳輸模式的區別

    AMD Vivado IP integrator的基本功能特性

    我們還將帶您了解在 AMD Zynq UltraScale+ MPSoC 開發板與 AMD Versal 自適應 SoC 開發板上使用 IP integrator 時,兩種設計流程之間存在的差異。
    的頭像 發表于 10-07 13:02 ?2145次閱讀
    <b class='flag-5'>AMD</b> Vivado IP integrator的基本功能特性

    兩種TVS有啥不同?

    當我們查看TVS二極管的規格書,常會看到有以下兩種種引腳功能標識圖:對于初學者,看到感到疑惑,他們一樣嗎?他們有啥區別?為啥有的個尖頭往外,陽極連在一起,有的個尖頭往里,陰極連在一起?一連三問。EMC小哥根據自己經驗略作分析
    的頭像 發表于 09-15 20:27 ?800次閱讀
    這<b class='flag-5'>兩種</b>TVS有啥不同?

    兩種散熱路徑的工藝與應用解析

    背景:兩種常見的散熱設計思路 在大電流或高功率器件應用中,散熱和載流能力是PCB設計中必須解決的難題。常見的兩種思路分別是: 厚銅板方案:通過整體增加銅箔厚度(如3oz、6oz甚至更高),增強導熱
    的頭像 發表于 09-15 14:50 ?787次閱讀

    CMOS 2.0與Chiplet兩種創新技術的區別

    摩爾定律正在減速。過去我們靠不斷縮小晶體管尺寸提升芯片性能,但如今物理極限越來越近。在這樣的背景下,兩種創新技術站上舞臺:CMOS 2.0 和 Chiplet(芯粒)。它們都在解決 “如何讓芯片更強” 的問題,但思路卻大相徑庭。
    的頭像 發表于 09-09 15:42 ?1028次閱讀

    什么是服務器虛擬?一文讀懂原理、優勢與實戰部署

    什么是服務器虛擬?當企業服務器CPU利用率長期低于15%,卻仍需不斷采購新硬件應對業務增長時,一場基礎設施領域的革命早已悄然發生——服務器虛擬
    的頭像 發表于 08-25 10:52 ?1193次閱讀
    什么是服務器<b class='flag-5'>虛擬</b><b class='flag-5'>化</b>?一文讀懂原理、優勢與實戰部署

    RISC-V 虛擬堆棧和硬件的最新進展

    運行實時操作系統(RTOS)、高可靠性任務以及 Linux 等通用系統。 ? 在云計算場景中,虛擬更是 “入場券”。它為云計算提供了高可用性,例如傳統 CPU 遇到硬件故障、斷電,操
    發表于 07-18 16:00 ?3909次閱讀

    貼片晶振中兩種常見封裝介紹

    貼片晶體振蕩器作為關鍵的時鐘頻率元件,其性能直接關系到系統運行的穩定性。今天,凱擎小妹帶大家聊聊貼片晶振中兩種常見封裝——金屬面封裝與陶瓷面封裝。
    的頭像 發表于 07-04 11:29 ?1262次閱讀
    貼片晶振中<b class='flag-5'>兩種</b>常見封裝介紹

    掌機CPU “核彈”:AMD款新品來襲

    電子發燒友網報道(文 / 吳子鵬)當前游戲掌機市場呈現出多元競爭與技術創新并行的態勢,主要由任天堂、Valve 等廠商主導,同時新興品牌和技術趨勢正在重塑行業格局。根據 Cognitive
    的頭像 發表于 06-12 00:55 ?7347次閱讀

    銣原子鐘與CPT原子鐘:兩種時間標準的區別

    在物理學的世界中,精密的時間測量是至關重要的。這就需要一個高度準確且穩定的時間標準,這就是原子鐘。今天我們將探討兩種重要的原子鐘:銣原子鐘和CPT原子鐘,以及它們之間的主要區別。首先,我們來了解一下
    的頭像 發表于 05-22 15:49 ?737次閱讀
    銣原子鐘與CPT原子鐘:<b class='flag-5'>兩種</b>時間標準的區別

    分享兩種前沿片上互連技術

    隨著臺積電在 2011年推出第一版 2.5D 封裝平臺 CoWoS、海力士在 2014 年與 AMD 聯合發布了首個使用 3D 堆疊的高帶寬存儲(HBM)芯片,先進封裝技術帶來的片上互連拓撲結構的改變和帶來的集成能力的提升,成為當前片上互連
    的頭像 發表于 05-22 10:17 ?1153次閱讀
    分享<b class='flag-5'>兩種</b>前沿片上互連<b class='flag-5'>技術</b>

    基于云端虛擬技術云手機解決方案

    云手機解決方案基于云端虛擬技術,通過整合軟硬件資源實現多設備集群化管理與智能操作,以下是針對不同應用場景的核心要素與
    的頭像 發表于 05-09 08:04 ?843次閱讀
    基于云端<b class='flag-5'>虛擬</b><b class='flag-5'>化</b><b class='flag-5'>技術</b>云手機解決方案