SlideShare a Scribd company logo
Static Partitioning
Virtualization on RISC-V
José Martins and Sandro Pinto
RISC-V Summit @ Virtual
December 8th, 2020
Agenda
Introduction
Motivation and Background
01
RISC-V Virtualization
RISC-V virtualization in a nutshell
02
RISC-V H-Extension
Implementation & enhancements
03
Evaluation
Tests, experiments, and results
04
Conclusion
Final thoughts and Takeaways
05
Introduction
Motivation and Background
Mixed-Criticality
4
ESRGv3 RISC-V Summit 20
• High Complexity
• Multiple Subsystems
• Heterogeneous Software Stacks (RTOS, GPOS)
• Different Criticality Levels
• Size, Weight, Power and Cost (SWaP-C)
Automotive
Industrial
Automation
Embedded Virtualization
5
ESRGv3
ESRGv3 RISC-V Summit 20
Consolidation
Size
Weight
Power
Cost
Low Engineering Cost
Full-Virtualization allows
direct porting of guest OSs
Fault Containment
Sandboxed Enviroments
Performance
Low Virtualization Overhead
Close to Native Performance
Security
Small TCB
Side-channel
TEE support
Open Design
Real-time
Low latencies
Determinism/Predictability
Freedom-from-interference
Traditional Hypervisors
6
ESRGv3
▪ Not designed for embedded/MCS:
▪ Although retrofitted with success
▪ High-overhead IO:
▪ Emulated
▪ Para-virtualization/Backend-drivers
▪ Large Code Base :
▪ Hosted hypervisor
▪ Privileged VMs run large monolithic OSs
(typically Linux) part of TCB.
ESRGv3 RISC-V Summit 20
Static Partitioning Virtualization
7
ESRGv3
Jailhouse
 Static Partitioning:
 Thin configuration/partition layer
 1:1 vCPU-to-pCPU mapping
 Static memory assignment
 Device Pass-through
 Hardware interrupts
 Jailhouse:
 Needs “root cell” to boot and manage VMs
 Large boot time
 Xen Dom0-less*:
 DomUs may boot w/o Dom0
 Direct Device assignment
Dom0-less
ESRGv3 RISC-V Summit 20
* https://www.youtube.com/watch?v=OrtV6gyHW74
Bao Overview
8
ESRGv3
01
02 03
 Type-1 / Bare-metal
 Static Partitioning:
 1:1 vCPU-to-pCPU mapping
 Static memory assignment
 Device Pass-through
 Hardware-assisted:
 2nd-stage translation
 Interrupt virtualization support
 IOMMU
 Dependencies:
 No external libraries / privileged VMs
 Small TCB (~7K SLoC)
 Real-time & Security:
 Predictability / Freedom-from-interference
 Side-channels / TEE support
ESRGv3 RISC-V Summit 20
José Martins, Adriano Tavares, Marco Solieri, Marko Bertogna, and Sandro Pinto. "Bao: A Lightweight
Static Partitioning Hypervisor for Modern Multi-Core Embedded Systems". In NG-RES 2020
https://drops.dagstuhl.de/opus/volltexte/2020/11779/
Bao Hypervisor Support
9
ESRGv3
01
03
 Architectures:
 Armv8-A
 RISC-V (v0.6.1 Hyp Spec.)
 Platforms:
 Zynq US+ (ZCUx and Ultra96)
 HiSilicon96 (Hikey96)
 NXP i.MX8
 Nvidia Tegra TX2
 QEMU
 Rocket @ ZCU
 Firmware:
 Arm Trusted Firmware (PSCI) on Arm
 Supervisor Binary Interface (SBI) on RISC-V
 U-boot
 Guests:
 Bare-metal
 Linux / Android
 RTOSs (FreeRTOS, Erika)
ESRGv3 RISC-V Summit 20
RISC-V Virtualization
RISC-V virtualization in a nutshell
Hypervisor Extension
11
ESRGv3
 Designed for type-1 and type-2 hypervisors
 Additional execution modes
 HS-mode (hypervisor-extended supervisor)
 VS-mode & VU-mode
 Additional CSR registers:
 HS-mode CSRs for hypervisor capabilities (e.g., hstatus)
 HS-mode CSRs for accessing Guest/VM state (e.g., vsstatus)
 Two-Stage MMU:
 Stage 1: VS-mode page table (GVA -> GPA)
 Stage 2: HS-mode guest page table (GPA -> HPA)
ESRGv3 RISC-V Summit 20
https://github.com/riscv/riscv-isa-manual/releases/latest
Hypervisor Extension
12
ESRGv3
ESRGv3 RISC-V Summit 20
Hypervisor
Firmware (SBI)
Decreasing
Privilege level
M
Guest OS
Guest User Space Host User Space
Virtualised Environment Non-virtualised Environment
HS
VS
Adapted from: Alistair Francis (WD), “Developing the RISC-V Hypervisor Extensions in QEMU”, Embedded Linux Conference Europe, 2019
VU
M
HS
U
Spec Status
13
ESRGv3
ESRGv3 RISC-V Summit 20
 Currently version 0.6.1
 Feedback from open source projects
 Contributions from organizations and individuals
 H-Extension spec close to freeze state
 Hypervisor “group” (join RISC-V Hypervisor sync-up calls!)
 Function completeness (KVM & Xvisor)
 RTL implementations (we have contributed with one )
 KVM and Xvisor running on FPGA implementation (we have ran Xvisor on an FPGA )
 Open source projects support:
 QEMU (v0.6.1)
 KVM and Xvisor (v0.6.1)
RISC-V Hypervisors
14
ESRGv3
 KVM:
 Type-2 hypervisor, Linux-based architecture, open-source
 Enterprise virtualization setups (datacenters and private clouds)
 https://github.com/kvm-riscv/linux
 Xvisor:
 Type-1 hypervisor, monolithic architecture, open-source
 Embedded systems with soft real-time requirements
 https://github.com/avpatel/xvisor-next
 Bao:
 Type-1 hypervisor, static partitioning architecture, open-source
 Mixed-criticality systems with strong real-time and security requirements
 https://github.com/bao-project/bao-hypervisor
ESRGv3 RISC-V Summit 20
RISC-V H-Extension
Implementation & enhancements
Spec Checklist
16
ESRGv3
01
02 03
 H-Extension, Version 0.6.1
 RV64 and sv39 only
 Implemented:
 h- and vs- csrs and respective functionality
 m- registers extended accordingly
 hypervisor load/store instructions
 new virtual instruction exception
 hfence instructions (limited, flushes complete TLB)
 guest external interrupts (w/ PLIC virtualization extension)
 Not Implemented:
 ASID/VMID support
 Transformed Instruction or Pseudoinstruction for htinst/mtinst
ESRGv3 RISC-V Summit 20
H-Extension Implementation
17
ESRGv3
01
02 03
 Available at: https://github.com/josecm/rocket-chip/tree/hyp
 Synced with chipyard’s master branch commit of rocket-chip (@1872f5d, 6
months ago)
 ~1100 sLOC modifications to rocket-chip. Mainly on:
 CSR
 PTW
 TLB
ESRGv3 RISC-V Summit 20
H-Extension Implementation
18
ESRGv3
01
02 03
 Next Steps:
 Refactoring/Optimizations/Clean-up
 ASID/VMID support
 Increase hfence granularity
 Improve 2nd-stage translation data structures (e.g. dedicated guest physical address TLB)
 Software:
 Ad hoc testing
 Bao Hypervisor
 Xvisor
ESRGv3 RISC-V Summit 20
PLIC H-Extension
19
ESRGv3
01
02 03
 Main requirements:
 minimal design
 direct injection of physical interrupts for the active guest
 no traps on claim/complete
 mix of physical and virtual interrupts
 Extra GEILEN VS-contexts per physical hart
 Hypervisor must trap-and-emulate VS-context
priority and enable registers.
 Hypervisor gives guests direct access to VS-
context’s claim/complete registers.
 Virtual interrupts are injected by writing to virtual
interrupt injection registers (VIIR) which can be
grouped.
ESRGv3 RISC-V Summit 20
02
PLIC
RISC-V
Hart 0
RISC-V
Hart 1
RISC-V
Hart n
M-mode External Interrupt
S-mode External Interrupt
VS-mode External Interrupt 0
VS-mode GEILEN-1
* The PLIC itself might be deprecated as a new standard interrupt controller is
in the workings.
https://github.com/josecm/riscv-plic-spec/tree/virt
Cache and Bandwidth Partitioning
20
ESRGv3
 Software-based techniques:
 Increases TCB
 High Overheads
 Coarse-grained
 E.g.: page coloring, PMU event based throttling
 Cache Partitioning:
 Per bus-master way-locking
 Lightweight modification to eviction circuit
 Memory bandwidth throttling:
 Bandwidth regulation unit (BRU)
 Per partition memory bandwidth budgets
ESRGv3 RISC-V Summit 20
Adapted from: "BRU: Bandwidth Regulation Unit for Real-
Time Multicore Processors,". F. Farshchi, Q. Huang and H.
Yun. RTAS 2020
Evaluation
Tests, experiments, and results
Experimental Setup
22
ESRGv3
Hardware
▪ Hexa-core rocket
▪ 3.2GHz
▪ 16 KB iL1$ and dL1$
▪ 8-way, 512 KB unified L2$ w/
way-locking
▪ Plic Virt extensions
▪ BRU
System Configurations
▪ Bare-metal / no hypervisor (bare)
▪ Single guest (solo)
▪ Interference (interf)
▪ Partitioning (solo+part)
▪ Partitioning w/ Interference (interf+part)
Metrics
▪ Performance Overhead
▪ Interrupt Latency
RISC-V Summit 20
Software Stack
▪ OpenSBI
▪ Bao Hypervisor
▪ Linux OS (VM)
▪ Baremetal App (VMs)
Memory Resource
Partitioning
▪ 4 L2$ ways
▪ 1800 MiB/s
Performance Overhead
23
ESRGv3
ESRGv3 RISC-V Summit 20
▪ MiBench Benchmark
Suite
▪ Automotive subset
▪ Relative to bare
▪ Bare absolute values
▪ Higher is worse
▪ Negligible variance
Hosted execution brings non-negligible overheads (2 to 6%) . We believe this is mainly due to
high cost of tick timer handling and non-optimized two-stage translation
Memory subsystem interference has performance impacts from 5% to 70%
Cache and memory bandwidth partition mitigations significantly reduce interference (1 to
23%) but not completely
Interrupt Latency
24
ESRGv3
ESRGv3 RISC-V Summit 20
▪ Custom benchmark
▪ Auto-Reload timer at 100 Hz
▪ Absolute time in ns
▪ L1 Instruction cache
invalidated at each tick
Trap-and-emulate approach introduces an extra 650 ns (≈800%) in guest average interrupt latency
Interference increases latency but can be somewhat attenuated by memory resource
partitioning
Direct interrupt injection keeps native latency and is not very susceptible to the effects of interference
Conclusion
Final thoughts and Takeaways
We have presented the first public implementation
valuation of the hypervisor extensions in a RISC-V
27
ESRGv3
 No "real" silicon with H-extension yet
 probably not for the foreseeable future
 Static Partitioning “Virtualization”
 M-mode = hypervisor
 PMP configuration per hart
 PLIC emulation
 IOPMP
 Bao porting
 WiP version @ PolarFire Icicle (Renode)
 Virtualization for RISC-V “as of today”
 Extended platform support
ESRGv3 RISC-V Summit 20
But… do we
really need it ?!
TAKEAWAYS
28
• Current state of the RISC-V
hypervisor extension
specification
• First implementation of the
hypervisor extensions in a
RISC-V core
• Static partitioning
virtualization and what
hardware supports it needs
The spec is close to freeze but we
encourage the community to
contribute
1
There is a need for additional
implementations in other RISC-V
cores
2
There is a need to define standard
extensions that specify memory
resource partition interfaces and
IOMMUs
3
ESRGv3 RISC-V Summit
THANK YOU!
jose.martins@dei.uminho.pt
LinkedIn - https://www.linkedin.com/in/josecmar/
Twitter - https://twitter.com/josecarmartins
Github - https://github.com/josecm
sandro.pinto@dei.uminho.pt
LinkedIn - https://www.linkedin.com/in/sandro2pinto
Twitter - https://twitter.com/sandro2pinto
Github - https://github.com/sandro2pinto/
Q&A
https://github.com/bao-project/bao-hypervisor
https://github.com/josecm/rocket-chip/tree/hyp

More Related Content

PDF
Physical Memory Management.pdf
PDF
netfilter and iptables
PDF
Vmlinux: anatomy of bzimage and how x86 64 processor is booted
PDF
Part 10: 5G Use cases - 5G for Absolute Beginners
PPTX
Data Science
PPTX
Interdisciplinary Approach
PDF
spinlock.pdf
PDF
from Binary to Binary: How Qemu Works
Physical Memory Management.pdf
netfilter and iptables
Vmlinux: anatomy of bzimage and how x86 64 processor is booted
Part 10: 5G Use cases - 5G for Absolute Beginners
Data Science
Interdisciplinary Approach
spinlock.pdf
from Binary to Binary: How Qemu Works

What's hot (20)

PDF
Qemu Introduction
PDF
Kernel Recipes 2017: Using Linux perf at Netflix
PPTX
ARM LinuxのMMUはわかりにくい
PPTX
Linux Network Stack
PDF
/proc/irq/<irq>/smp_affinity
PDF
Interrupt Affinityについて
PDF
High-Performance Networking Using eBPF, XDP, and io_uring
PDF
PDF
Making Linux do Hard Real-time
PDF
Xvisor: embedded and lightweight hypervisor
PDF
from Source to Binary: How GNU Toolchain Works
PPTX
Linux Kernel Booting Process (1) - For NLKB
PDF
OSC2011 Tokyo/Fall 濃いバナ(virtio)
PDF
VLANs in the Linux Kernel
PDF
Container Performance Analysis
PDF
Linux Instrumentation
PDF
ARM Trusted FirmwareのBL31を単体で使う!
ODP
Memory management in Linux
PDF
Hands-on ethernet driver
Qemu Introduction
Kernel Recipes 2017: Using Linux perf at Netflix
ARM LinuxのMMUはわかりにくい
Linux Network Stack
/proc/irq/<irq>/smp_affinity
Interrupt Affinityについて
High-Performance Networking Using eBPF, XDP, and io_uring
Making Linux do Hard Real-time
Xvisor: embedded and lightweight hypervisor
from Source to Binary: How GNU Toolchain Works
Linux Kernel Booting Process (1) - For NLKB
OSC2011 Tokyo/Fall 濃いバナ(virtio)
VLANs in the Linux Kernel
Container Performance Analysis
Linux Instrumentation
ARM Trusted FirmwareのBL31を単体で使う!
Memory management in Linux
Hands-on ethernet driver
Ad

Similar to Static partitioning virtualization on RISC-V (20)

PDF
2011-11-03 Intelligence Community Cloud Users Group
PDF
Project ACRN hypervisor introduction
PPTX
HiPEAC 2022-DL4IoT workshop_René Griessl presentation
PDF
Andes RISC-V processor solutions
PDF
OVHcloud Hosted Private Cloud Platform Network use cases with VMware NSX
PDF
Решения NFV в контексте операторов связи
PDF
Summit 16: How to Compose a New OPNFV Solution Stack?
PPTX
Esperanto accelerates machine learning with 1000+ low power RISC-V cores on a...
PDF
DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...
PDF
Exploring the Benefits of Smart Substation Virtualization and Digitalization_...
PDF
Simplify Networking for Containers
PDF
SemiDynamics new family of High Bandwidth Vector-capable Cores
PDF
Devconf2017 - Can VMs networking benefit from DPDK
PDF
“Open Standards: Powering the Future of Embedded Vision,” a Presentation from...
PPTX
HiPEAC-CSW 2022_Kevin Mika presentation
PPT
5 kvm arm
PDF
Virtualization Architecture & KVM
PDF
Contrail Enabler for agile cloud services
PDF
Scaling the Container Dataplane
PDF
See what happened with real time kvm when building real time cloud pezhang@re...
2011-11-03 Intelligence Community Cloud Users Group
Project ACRN hypervisor introduction
HiPEAC 2022-DL4IoT workshop_René Griessl presentation
Andes RISC-V processor solutions
OVHcloud Hosted Private Cloud Platform Network use cases with VMware NSX
Решения NFV в контексте операторов связи
Summit 16: How to Compose a New OPNFV Solution Stack?
Esperanto accelerates machine learning with 1000+ low power RISC-V cores on a...
DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...
Exploring the Benefits of Smart Substation Virtualization and Digitalization_...
Simplify Networking for Containers
SemiDynamics new family of High Bandwidth Vector-capable Cores
Devconf2017 - Can VMs networking benefit from DPDK
“Open Standards: Powering the Future of Embedded Vision,” a Presentation from...
HiPEAC-CSW 2022_Kevin Mika presentation
5 kvm arm
Virtualization Architecture & KVM
Contrail Enabler for agile cloud services
Scaling the Container Dataplane
See what happened with real time kvm when building real time cloud pezhang@re...
Ad

More from RISC-V International (20)

PDF
WD RISC-V inliner work effort
PDF
RISC-V Zce Extension
PDF
RISC-V Online Tutor
PPTX
London Open Source Meetup for RISC-V
PPTX
RISC-V Introduction
PPTX
Ziptillion boosting RISC-V with an efficient and os transparent memory comp...
PDF
Standardizing the tee with global platform and RISC-V
PDF
Semi dynamics high bandwidth vector capable RISC-V cores
PPTX
Security and functional safety
PPTX
Reverse Engineering of Rocket Chip
PPTX
RISC-V NOEL-V - A new high performance RISC-V Processor Family
PPTX
RISC-V 30910 kassem_ summit 2020 - so_c_gen
PDF
RISC-V 30908 patra
PPTX
RISC-V 30907 summit 2020 joint picocom_mentor
PPTX
RISC-V 30906 hex five multi_zone iot firmware
PPTX
RISC-V 30946 manuel_offenberg_v3_notes
PDF
RISC-V software state of the union
PDF
Ripes tracking computer architecture throught visual and interactive simula...
PPTX
Porting tock to open titan
PPTX
Open j9 jdk on RISC-V
WD RISC-V inliner work effort
RISC-V Zce Extension
RISC-V Online Tutor
London Open Source Meetup for RISC-V
RISC-V Introduction
Ziptillion boosting RISC-V with an efficient and os transparent memory comp...
Standardizing the tee with global platform and RISC-V
Semi dynamics high bandwidth vector capable RISC-V cores
Security and functional safety
Reverse Engineering of Rocket Chip
RISC-V NOEL-V - A new high performance RISC-V Processor Family
RISC-V 30910 kassem_ summit 2020 - so_c_gen
RISC-V 30908 patra
RISC-V 30907 summit 2020 joint picocom_mentor
RISC-V 30906 hex five multi_zone iot firmware
RISC-V 30946 manuel_offenberg_v3_notes
RISC-V software state of the union
Ripes tracking computer architecture throught visual and interactive simula...
Porting tock to open titan
Open j9 jdk on RISC-V

Recently uploaded (20)

PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
Machine Learning_overview_presentation.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PPTX
A Presentation on Artificial Intelligence
PDF
cuic standard and advanced reporting.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Approach and Philosophy of On baking technology
PDF
Encapsulation theory and applications.pdf
PPTX
1. Introduction to Computer Programming.pptx
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Getting Started with Data Integration: FME Form 101
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
MYSQL Presentation for SQL database connectivity
Mobile App Security Testing_ A Comprehensive Guide.pdf
NewMind AI Weekly Chronicles - August'25-Week II
Assigned Numbers - 2025 - Bluetooth® Document
Machine Learning_overview_presentation.pptx
20250228 LYD VKU AI Blended-Learning.pptx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Accuracy of neural networks in brain wave diagnosis of schizophrenia
A Presentation on Artificial Intelligence
cuic standard and advanced reporting.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Approach and Philosophy of On baking technology
Encapsulation theory and applications.pdf
1. Introduction to Computer Programming.pptx
Group 1 Presentation -Planning and Decision Making .pptx
Encapsulation_ Review paper, used for researhc scholars
Getting Started with Data Integration: FME Form 101
Diabetes mellitus diagnosis method based random forest with bat algorithm
Profit Center Accounting in SAP S/4HANA, S4F28 Col11

Static partitioning virtualization on RISC-V

  • 1. Static Partitioning Virtualization on RISC-V José Martins and Sandro Pinto RISC-V Summit @ Virtual December 8th, 2020
  • 2. Agenda Introduction Motivation and Background 01 RISC-V Virtualization RISC-V virtualization in a nutshell 02 RISC-V H-Extension Implementation & enhancements 03 Evaluation Tests, experiments, and results 04 Conclusion Final thoughts and Takeaways 05
  • 4. Mixed-Criticality 4 ESRGv3 RISC-V Summit 20 • High Complexity • Multiple Subsystems • Heterogeneous Software Stacks (RTOS, GPOS) • Different Criticality Levels • Size, Weight, Power and Cost (SWaP-C) Automotive Industrial Automation
  • 5. Embedded Virtualization 5 ESRGv3 ESRGv3 RISC-V Summit 20 Consolidation Size Weight Power Cost Low Engineering Cost Full-Virtualization allows direct porting of guest OSs Fault Containment Sandboxed Enviroments Performance Low Virtualization Overhead Close to Native Performance Security Small TCB Side-channel TEE support Open Design Real-time Low latencies Determinism/Predictability Freedom-from-interference
  • 6. Traditional Hypervisors 6 ESRGv3 ▪ Not designed for embedded/MCS: ▪ Although retrofitted with success ▪ High-overhead IO: ▪ Emulated ▪ Para-virtualization/Backend-drivers ▪ Large Code Base : ▪ Hosted hypervisor ▪ Privileged VMs run large monolithic OSs (typically Linux) part of TCB. ESRGv3 RISC-V Summit 20
  • 7. Static Partitioning Virtualization 7 ESRGv3 Jailhouse  Static Partitioning:  Thin configuration/partition layer  1:1 vCPU-to-pCPU mapping  Static memory assignment  Device Pass-through  Hardware interrupts  Jailhouse:  Needs “root cell” to boot and manage VMs  Large boot time  Xen Dom0-less*:  DomUs may boot w/o Dom0  Direct Device assignment Dom0-less ESRGv3 RISC-V Summit 20 * https://www.youtube.com/watch?v=OrtV6gyHW74
  • 8. Bao Overview 8 ESRGv3 01 02 03  Type-1 / Bare-metal  Static Partitioning:  1:1 vCPU-to-pCPU mapping  Static memory assignment  Device Pass-through  Hardware-assisted:  2nd-stage translation  Interrupt virtualization support  IOMMU  Dependencies:  No external libraries / privileged VMs  Small TCB (~7K SLoC)  Real-time & Security:  Predictability / Freedom-from-interference  Side-channels / TEE support ESRGv3 RISC-V Summit 20 José Martins, Adriano Tavares, Marco Solieri, Marko Bertogna, and Sandro Pinto. "Bao: A Lightweight Static Partitioning Hypervisor for Modern Multi-Core Embedded Systems". In NG-RES 2020 https://drops.dagstuhl.de/opus/volltexte/2020/11779/
  • 9. Bao Hypervisor Support 9 ESRGv3 01 03  Architectures:  Armv8-A  RISC-V (v0.6.1 Hyp Spec.)  Platforms:  Zynq US+ (ZCUx and Ultra96)  HiSilicon96 (Hikey96)  NXP i.MX8  Nvidia Tegra TX2  QEMU  Rocket @ ZCU  Firmware:  Arm Trusted Firmware (PSCI) on Arm  Supervisor Binary Interface (SBI) on RISC-V  U-boot  Guests:  Bare-metal  Linux / Android  RTOSs (FreeRTOS, Erika) ESRGv3 RISC-V Summit 20
  • 11. Hypervisor Extension 11 ESRGv3  Designed for type-1 and type-2 hypervisors  Additional execution modes  HS-mode (hypervisor-extended supervisor)  VS-mode & VU-mode  Additional CSR registers:  HS-mode CSRs for hypervisor capabilities (e.g., hstatus)  HS-mode CSRs for accessing Guest/VM state (e.g., vsstatus)  Two-Stage MMU:  Stage 1: VS-mode page table (GVA -> GPA)  Stage 2: HS-mode guest page table (GPA -> HPA) ESRGv3 RISC-V Summit 20 https://github.com/riscv/riscv-isa-manual/releases/latest
  • 12. Hypervisor Extension 12 ESRGv3 ESRGv3 RISC-V Summit 20 Hypervisor Firmware (SBI) Decreasing Privilege level M Guest OS Guest User Space Host User Space Virtualised Environment Non-virtualised Environment HS VS Adapted from: Alistair Francis (WD), “Developing the RISC-V Hypervisor Extensions in QEMU”, Embedded Linux Conference Europe, 2019 VU M HS U
  • 13. Spec Status 13 ESRGv3 ESRGv3 RISC-V Summit 20  Currently version 0.6.1  Feedback from open source projects  Contributions from organizations and individuals  H-Extension spec close to freeze state  Hypervisor “group” (join RISC-V Hypervisor sync-up calls!)  Function completeness (KVM & Xvisor)  RTL implementations (we have contributed with one )  KVM and Xvisor running on FPGA implementation (we have ran Xvisor on an FPGA )  Open source projects support:  QEMU (v0.6.1)  KVM and Xvisor (v0.6.1)
  • 14. RISC-V Hypervisors 14 ESRGv3  KVM:  Type-2 hypervisor, Linux-based architecture, open-source  Enterprise virtualization setups (datacenters and private clouds)  https://github.com/kvm-riscv/linux  Xvisor:  Type-1 hypervisor, monolithic architecture, open-source  Embedded systems with soft real-time requirements  https://github.com/avpatel/xvisor-next  Bao:  Type-1 hypervisor, static partitioning architecture, open-source  Mixed-criticality systems with strong real-time and security requirements  https://github.com/bao-project/bao-hypervisor ESRGv3 RISC-V Summit 20
  • 16. Spec Checklist 16 ESRGv3 01 02 03  H-Extension, Version 0.6.1  RV64 and sv39 only  Implemented:  h- and vs- csrs and respective functionality  m- registers extended accordingly  hypervisor load/store instructions  new virtual instruction exception  hfence instructions (limited, flushes complete TLB)  guest external interrupts (w/ PLIC virtualization extension)  Not Implemented:  ASID/VMID support  Transformed Instruction or Pseudoinstruction for htinst/mtinst ESRGv3 RISC-V Summit 20
  • 17. H-Extension Implementation 17 ESRGv3 01 02 03  Available at: https://github.com/josecm/rocket-chip/tree/hyp  Synced with chipyard’s master branch commit of rocket-chip (@1872f5d, 6 months ago)  ~1100 sLOC modifications to rocket-chip. Mainly on:  CSR  PTW  TLB ESRGv3 RISC-V Summit 20
  • 18. H-Extension Implementation 18 ESRGv3 01 02 03  Next Steps:  Refactoring/Optimizations/Clean-up  ASID/VMID support  Increase hfence granularity  Improve 2nd-stage translation data structures (e.g. dedicated guest physical address TLB)  Software:  Ad hoc testing  Bao Hypervisor  Xvisor ESRGv3 RISC-V Summit 20
  • 19. PLIC H-Extension 19 ESRGv3 01 02 03  Main requirements:  minimal design  direct injection of physical interrupts for the active guest  no traps on claim/complete  mix of physical and virtual interrupts  Extra GEILEN VS-contexts per physical hart  Hypervisor must trap-and-emulate VS-context priority and enable registers.  Hypervisor gives guests direct access to VS- context’s claim/complete registers.  Virtual interrupts are injected by writing to virtual interrupt injection registers (VIIR) which can be grouped. ESRGv3 RISC-V Summit 20 02 PLIC RISC-V Hart 0 RISC-V Hart 1 RISC-V Hart n M-mode External Interrupt S-mode External Interrupt VS-mode External Interrupt 0 VS-mode GEILEN-1 * The PLIC itself might be deprecated as a new standard interrupt controller is in the workings. https://github.com/josecm/riscv-plic-spec/tree/virt
  • 20. Cache and Bandwidth Partitioning 20 ESRGv3  Software-based techniques:  Increases TCB  High Overheads  Coarse-grained  E.g.: page coloring, PMU event based throttling  Cache Partitioning:  Per bus-master way-locking  Lightweight modification to eviction circuit  Memory bandwidth throttling:  Bandwidth regulation unit (BRU)  Per partition memory bandwidth budgets ESRGv3 RISC-V Summit 20 Adapted from: "BRU: Bandwidth Regulation Unit for Real- Time Multicore Processors,". F. Farshchi, Q. Huang and H. Yun. RTAS 2020
  • 22. Experimental Setup 22 ESRGv3 Hardware ▪ Hexa-core rocket ▪ 3.2GHz ▪ 16 KB iL1$ and dL1$ ▪ 8-way, 512 KB unified L2$ w/ way-locking ▪ Plic Virt extensions ▪ BRU System Configurations ▪ Bare-metal / no hypervisor (bare) ▪ Single guest (solo) ▪ Interference (interf) ▪ Partitioning (solo+part) ▪ Partitioning w/ Interference (interf+part) Metrics ▪ Performance Overhead ▪ Interrupt Latency RISC-V Summit 20 Software Stack ▪ OpenSBI ▪ Bao Hypervisor ▪ Linux OS (VM) ▪ Baremetal App (VMs) Memory Resource Partitioning ▪ 4 L2$ ways ▪ 1800 MiB/s
  • 23. Performance Overhead 23 ESRGv3 ESRGv3 RISC-V Summit 20 ▪ MiBench Benchmark Suite ▪ Automotive subset ▪ Relative to bare ▪ Bare absolute values ▪ Higher is worse ▪ Negligible variance Hosted execution brings non-negligible overheads (2 to 6%) . We believe this is mainly due to high cost of tick timer handling and non-optimized two-stage translation Memory subsystem interference has performance impacts from 5% to 70% Cache and memory bandwidth partition mitigations significantly reduce interference (1 to 23%) but not completely
  • 24. Interrupt Latency 24 ESRGv3 ESRGv3 RISC-V Summit 20 ▪ Custom benchmark ▪ Auto-Reload timer at 100 Hz ▪ Absolute time in ns ▪ L1 Instruction cache invalidated at each tick Trap-and-emulate approach introduces an extra 650 ns (≈800%) in guest average interrupt latency Interference increases latency but can be somewhat attenuated by memory resource partitioning Direct interrupt injection keeps native latency and is not very susceptible to the effects of interference
  • 26. We have presented the first public implementation valuation of the hypervisor extensions in a RISC-V
  • 27. 27 ESRGv3  No "real" silicon with H-extension yet  probably not for the foreseeable future  Static Partitioning “Virtualization”  M-mode = hypervisor  PMP configuration per hart  PLIC emulation  IOPMP  Bao porting  WiP version @ PolarFire Icicle (Renode)  Virtualization for RISC-V “as of today”  Extended platform support ESRGv3 RISC-V Summit 20 But… do we really need it ?!
  • 28. TAKEAWAYS 28 • Current state of the RISC-V hypervisor extension specification • First implementation of the hypervisor extensions in a RISC-V core • Static partitioning virtualization and what hardware supports it needs The spec is close to freeze but we encourage the community to contribute 1 There is a need for additional implementations in other RISC-V cores 2 There is a need to define standard extensions that specify memory resource partition interfaces and IOMMUs 3 ESRGv3 RISC-V Summit
  • 29. THANK YOU! [email protected] LinkedIn - https://www.linkedin.com/in/josecmar/ Twitter - https://twitter.com/josecarmartins Github - https://github.com/josecm [email protected] LinkedIn - https://www.linkedin.com/in/sandro2pinto Twitter - https://twitter.com/sandro2pinto Github - https://github.com/sandro2pinto/