  Virtualization is a key technology used in a wide range of applications, from
cloud computing to embedded systems. Over the last few years, mainstream
computer architectures were extended with hardware virtualization support,
giving rise to a set of virtualization technologies (e.g., Intel VT, Arm VE)
that are now proliferating in modern processors and SoCs. In this article, we
describe our work on hardware virtualization support in the RISC-V CVA6 core.
Our contribution is multifold and encompasses architecture, microarchitecture,
and design space exploration. In particular, we highlight the design of a set
of microarchitectural enhancements (i.e., G-Stage Translation Lookaside Buffer
(GTLB), L2 TLB) to alleviate the virtualization performance overhead. We also
perform a Design Space Exploration (DSE) and accompanying post-layout
simulations (based on 22nm FDX technology) to assess Performance, Power ,and
Area (PPA). Further, we map design variants on an FPGA platform (Genesys 2) to
assess the functional performance-area trade-off. Based on the DSE, we select
an optimal design point for the CVA6 with hardware virtualization support. For
this optimal hardware configuration, we collected functional performance
results by running the MiBench benchmark on Linux atop Bao hypervisor for a
single-core configuration. We observed a performance speedup of up to 16%
(approx. 12.5% on average) compared with virtualization-aware non-optimized
design at the minimal cost of 0.78% in area and 0.33% in power. Finally, all
work described in this article is publicly available and open-sourced for the
community to further evaluate additional design configurations and software
stacks.
