[Tech] Ampliación del núcleo de RISC-V con las extensiones de virtualización

La virtualización, como término, apareció en los años 60 y, en su momento, se utilizó para referirse al concepto de dividir los recursos de un mainframe entre diferentes aplicaciones. En la actualidad, se refiere a la creación de una máquina virtual, un software que emula un ordenador real con su propio sistema operativo.

Estas máquinas virtuales ofrecen numerosas ventajas como la facilidad de despliegue en diferentes configuraciones de hardware, y la posibilidad de que una sola máquina (física) ejecute muchas máquinas virtuales. Todos los servicios en la nube (p.ej. Amazon Web Services, Microsoft Azure, Google Cloud) utilizan ampliamente la virtualización [1,2].

Sin embargo, la virtualización en sí misma puede ser bastante lenta si se gestiona completamente mediante software. En consecuencia, la mayoría de las CPU comerciales ofrecen soporte de hardware para acelerar la virtualización. Esto se hace mediante la implementación de un hipervisor a nivel de hardware (también conocido como bare metal hypervisor). Un hipervisor permite que un sistema informático ejecute múltiples máquinas virtuales invitadas dentro de un sistema anfitrión.

En DRAC, hemos implementado la extensión H (Hypervisor) tal y como se especifica en la Fundación RISC-V [3]. La figura siguiente describe las principales adiciones a la línea base de RISC-V ISA (es decir, sin las extensiones del hipervisor).  El núcleo básico de RISC-V sólo tiene tres modos de ejecución (máquina, supervisor y usuario), mientras que la extensión del hipervisor añade un modo de supervisor (modo HS) y dos modos de virtualización (supervisor virtualizado y usuario virtualizado).

 

principals addicions a la línia base de RISC-V ISA

 

El objetivo de la extensión del hipervisor es mejorar el rendimiento de la virtualización, principalmente reduciendo el número de interrupciones y excepciones que debe gestionar el sistema operativo anfitrión. El enfoque adoptado consiste en virtualizar el modo de supervisor (modo S), sustituyendo el modo de supervisor existente por un modo de supervisor extendido por el hipervisor (modo HS) y añadiendo el modo de usuario virtual (modo VU) y el modo de supervisor virtual (modo VS). Además, se añade una segunda etapa al mecanismo de traducción de direcciones, virtualizando la memoria y los dispositivos de E/S mapeados en memoria para el SO huésped.

===

[1] Mahesh Chand, “Top 10 Cloud Service Providers In 2021”, https://www.c-sharpcorner.com/article/top-10-cloud-service-providers/

[2] Infopulse, “What is the Role of Virtualization in Cloud-based Services?, https://www.infopulse.com/blog/what-is-the-role-of-virtualization-in-cloud-based-services/

[3] Andrew Waterman, Krste Asanovic (editors), “The RISC-V Instruction Set Manual Volume II: Privileged Architecture”, Document Version 20190608-Priv-MSU-Ratified, https://github.com/riscv/riscv-isa-manual/releases/download/Ratified-IMFDQC-and-Priv-v1.11/riscv-privileged-20190608.pdf