《5-RV23-虛擬化擴展的設計和技術規劃.pdf》由會員分享,可在線閱讀,更多相關《5-RV23-虛擬化擴展的設計和技術規劃.pdf(25頁珍藏版)》請在三個皮匠報告上搜索。
1、香山昆明湖架構虛擬化擴展的設計和技術規劃裴曉坤1徐澤凡21中國科學院大學2中國科學技術大學2023 年 8 月 24 日第三屆 RISC-V 中國峰會中國科學院計算技術研究所(ICT,CAS)2 2目錄 虛擬化技術 RISC-V虛擬化擴展 香山虛擬化擴展設計思路 香山虛擬化擴展功能驗證 總結與展望中國科學院計算技術研究所(ICT,CAS)3 3目錄 虛擬化技術 虛擬化技術的概念 虛擬化技術的分類 虛擬機管理程序 RISC-V虛擬化擴展 香山虛擬化擴展設計思路 香山虛擬化擴展功能驗證 總結與展望中國科學院計算技術研究所(ICT,CAS)4 4虛擬化技術概念 一種資源管理技術 單臺計算機中的硬件資
2、源劃分為名為虛擬機(VM)的多個虛擬計算機 常見的虛擬化技術中國科學院計算技術研究所(ICT,CAS)5 5虛擬化技術分類 根據虛擬化程度,可以將虛擬化分為以下幾類操作系統級虛擬化全虛擬化半虛擬化混合虛擬化硬件輔助軟件實現半虛擬化硬件輔助虛擬化中國科學院計算技術研究所(ICT,CAS)6 6虛擬化技術分類 根據虛擬化程度,可以將虛擬化分為以下幾類操作系統級虛擬化全虛擬化半虛擬化混合虛擬化硬件輔助軟件實現半虛擬化硬件輔助虛擬化中國科學院計算技術研究所(ICT,CAS)7 7虛擬化技術虛擬機管理程序 虛擬機管理程序(VMM,也稱 Hypervisor)分為兩種:Type-1,native or b
3、are-metal hypervisors:在裸機運行 Type-2 or hosted hypervisors:在操作系統上運行Hardware HypervisorGuest OSGuest OSGuest OSAppAppAppAppAppAppType-1Hardware Host OSGuest OSGuest OSAppAppAppAppAppAppType-2Hypervisor中國科學院計算技術研究所(ICT,CAS)8 8目錄 虛擬化技術 RISC-V虛擬化擴展 內容介紹 支持情況 香山虛擬化擴展設計思路 香山虛擬化擴展功能驗證 總結與展望中國科學院計算技術研究所(ICT,C
4、AS)9 9RISCV虛擬化擴展內容 CPU虛擬化 特權級拓展 CSR拓展 指令拓展 Trap拓展 內存虛擬化 兩階段地址翻譯:客戶機的地址翻譯、主機的地址翻譯客戶機虛擬地址客戶機物理地址主機物理地址客戶機地址翻譯主機地址翻譯中國科學院計算技術研究所(ICT,CAS)1010RISCV虛擬化拓展支持情況 軟件層面支持:模擬器:QEMU、Spike Hypervisor:KVM、Xvisor、Bao等硬件層面支持:開源:Rocket chip、NOEL-V、CVA6 商業:賽昉的昉天樞、SiFive 的 P 系列等中國科學院計算技術研究所(ICT,CAS)1111目錄 虛擬化技術 RISC-V虛
5、擬化擴展 香山虛擬化擴展設計思路 CPU虛擬化 內存虛擬化 香山虛擬化擴展功能驗證 總結與展望中國科學院計算技術研究所(ICT,CAS)1212香山虛擬化擴展設計CPU虛擬化 特權級 新增V位,區分VS和HS、VU和UHypervisor CSRhstatus、hedeleg、hideleg、hvip、hip、hie、hgatp等Virtual Supervisor CSRvsstatus、vsip、vsie、vstvec、vsepc、vsatp等Machine CSRmstatus、mideleg、mip、mie、mtval2(新增)、mtinst(新增)Hypervisor指令訪存指令HL
6、V.width、HLVX.HU/WU、HSV.widthFence指令HFENCE.VVMA/GVMA Trap 增加VS級陷入陷出的處理 CSR寄存器MSUMHSVSUVU新增中斷VS software interrupt、VS timer interrupt、VS external interrupt、Supervisor guest external interrupt新增異常Environment call from VS-mode、Instruction guest-page fault、Load guest-page fault、Virtual instruction、Store/
7、AMO guest-page fault中國科學院計算技術研究所(ICT,CAS)1313香山虛擬化擴展設計內存虛擬化 地址翻譯模式 Sv39-Sv39+Sv39x4 內存頁表查詢 訪存維度 訪存次數中國科學院計算技術研究所(ICT,CAS)1414 MMU(Memory Management Unit)增加第二階段的翻譯,客戶機物理地址-主機物理地址 存儲兩階段翻譯過程中的頁表,L1TLB和L2TLB的Page CachePage Table WalkerLast Level Page Table WalkerPage Cache香山虛擬化擴展設計內存虛擬化L1TLBL2TLBMMU中國科學
8、院計算技術研究所(ICT,CAS)1515 增加第二階段地址翻譯 新增Hypervisor Page Table Walker,負責客戶機物理地址轉換為主機物理地址Page Table WalkerLast Level Page Table WalkerPage CacheHypervisor Page Table Walker香山虛擬化擴展設計內存虛擬化L2TLB一級頁表二級頁表三級頁表一級頁表二級頁表三級頁表第一階段第二階段中國科學院計算技術研究所(ICT,CAS)1616 L1TLB存儲項修改香山虛擬化擴展設計內存虛擬化L1TLB entryL1TLB entryvpn/tagvmidp
9、pnpermasid gvpn:第一階段翻譯的ppn,第二階段翻譯的vpn g_perm:第二階段翻譯得到的perm vmid:所屬虛擬機的idvpn/tagppnpermasidg_permgvpn中國科學院計算技術研究所(ICT,CAS)1717 L2TLB存儲項修改 同一個結構存儲三種類型的entry,使用type區分香山虛擬化擴展設計內存虛擬化L2TLB entryvpn/tagppnpermasidL2TLB entrytagdatapermidHost entryvpn ppnpermasidVS-stage entryvpngvpnpermasidG-stage entrygvp
10、nppng_permvmidtypetype=00type=10type=11中國科學院計算技術研究所(ICT,CAS)1818目錄 虛擬化技術 RISCV虛擬化擴展 香山虛擬化擴展設計思路 香山虛擬化擴展功能驗證 驗證框架 單元測試 系統測試 總結與展望中國科學院計算技術研究所(ICT,CAS)1919香山虛擬化擴展功能驗證驗證框架 以DiffTest框架為核心,進行驗證 DiffTest:在線差分驗證框架 NEMU:高性能指令級解釋器 驗證NEMU:NEMU Spike(已完成)驗證香山:香山 NEMU(調試中)SpikeDiffTestNEMU香山DiffTest中國科學院計算技術研究所
11、(ICT,CAS)2020香山虛擬化擴展功能驗證單元測試 虛擬化驗證程序集:riscv-hyp-tests 開源項目,https:/ 9個測試程序,共108個測試點,包含CPU虛擬化和內存虛擬化 用于測試虛擬化擴展的基本功能測試用例名測試內容tinst_tests觸發各種情況的 pagefault,檢查 mtinstwfi_exception_tests不同特權級下,wfi 指令可能引發的異常hfence_test虛擬化 fence 指令的功能virtual_instruction虛擬化指令異常的觸發interrupt_testsVS 級軟件中斷的觸發以及其代理機制check_xip_regs
12、中斷相關的 CSR 寄存器的讀寫m_and_hs_using_vs_access測試 mprv 位的功能、虛擬化訪存指令second_stage_only_translation測試只有第二階段地址翻譯的情況two_stage_translation測試 VS 級下的地址翻譯情況中國科學院計算技術研究所(ICT,CAS)2121香山虛擬化擴展功能驗證系統測試 Xvisor 開源 type-1 hypervisor OpenSBI+Xvisor+Guest LinuxOpenSBIXvisorGuest Linux NEMU運行Xvisor效果中國科學院計算技術研究所(ICT,CAS)2222香
13、山虛擬化擴展功能驗證系統測試 KVM Type-2 hypervisor(有分類認為type-1)OpenSBI+Linux+kvmtool+Guest Linux kvmtool:輕量級的虛擬機管理工具OpenSBIHost LinuxGuest Linuxkvmtool NEMU運行KVM效果中國科學院計算技術研究所(ICT,CAS)2323目錄 虛擬化技術 RISC-V虛擬化擴展 虛擬化擴展設計思路 虛擬化擴展功能驗證 總結與展望中國科學院計算技術研究所(ICT,CAS)2424總結與展望 總結 虛擬化技術、RISC-V虛擬化拓展的內容 CPU虛擬化和內存虛擬化在香山上的實現 香山功能驗證 展望 RISC-V AIA(Advanced Interrupt Architecture)RISC-V IOMMU敬請批評指正!