LLVM suma soporte para las instrucciones RMPCHKD, RMPREAD y RMPOPT de AMD
El compilador incorpora las nuevas instrucciones para Zen 5 y superiores, mientras el kernel de Linux sigue trabajando en habilitar RMPOPT para reducir la sobrecarga en sistemas SEV-SNP.
LLVM ha fusionado en su rama principal el soporte para las instrucciones RMPCHKD, RMPREAD y RMPOPT de AMD, pensadas para los procesadores Zen 5 y más nuevos. Con esto, el compilador prepara el terreno para que los sistemas con máquinas virtuales confidenciales SEV-SNP puedan aprovechar la optimización RMPOPT, que reduce la sobrecarga del hipervisor al evitar ciertas comprobaciones de la tabla de mapas inversos (RMP). Mientras tanto, el kernel de Linux sigue trabajando en habilitar RMPOPT, con una decimotercera versión de los parches enviada la semana pasada; aún no está claro si llegará a tiempo para la ventana de fusión de Linux v7.4 a finales de octubre.
El soporte en LLVM llegó a través del pull request #221659 con el título "support further Zen5 and Zen6 instructions". Incluye las tres instrucciones mencionadas. AMD había anunciado que RMPOPT iba a ser una exclusiva de Zen 6, pero resulta que los procesadores EPYC de quinta generación, basados en Zen 5, ya la soportan desde hace dos años. Lo que faltaba era el software.
RMPOPT es una instrucción nueva que permite omitir las comprobaciones de la Reverse Map Table en determinadas situaciones: cuando regiones de memoria de 1 gigabyte se sabe que no contienen memoria de invitados SEV-SNP. Las otras dos, RMPREAD y RMPCHKD, sirven para leer entradas de la tabla y comprobar el bit de sucio en páginas privadas de invitados, respectivamente. Esta hardware se ha añadido a LLVM/Clang para que el compilador pueda generar código que las utilice.
Estado del software
Mientras tanto, el kernel de Linux sigue trabajando en habilitar RMPOPT, con una decimotercera versión de los parches enviada la semana pasada. Se puede seguir el hilo en el archivo de lore.kernel.org. Aún no está claro si llegará a tiempo para la ventana de fusión de Linux v7.4 a finales de octubre. AMD ha tardado en proporcionar el soporte por software, pero al menos parece que la implementación está cerca de completarse, y llega justo cuando se espera la sexta generación de EPYC 'Venice', que seguirá con esta optimización para máquinas virtuales confidenciales.
La fusión en LLVM está en la rama de desarrollo, así que estará disponible en la próxima versión estable. Los desarrolladores que usen toolchains de LLVM/Clang para apuntar a Zen 5 o futuras arquitecturas encontrarán soporte para estas instrucciones sin parches adicionales.
Para los que despliegan SEV-SNP, la llegada de RMPOPT puede suponer una mejora de rendimiento notable, ya que reduce la carga del hipervisor al saltarse comprobaciones innecesarias en regiones de memoria donde no hay invitados confidenciales. Esto es clave en entornos cloud y virtualización intensiva, donde la sobrecarga de la seguridad se convierte en un factor crítico. Habrá que estar atentos a las próximas versiones del kernel y de LLVM para poder aprovechar estas optimizaciones.
