El mes pasado, un equipo de investigadores de seguridad de Google publicó una herramienta que puede modificar el microcódigo de los procesadores de AMD basados en la microarquitectura zen, el Zentool. Si bien esta es una vulnerabilidad de seguridad, para algunos, esta es una oportunidad; Los miembros del Proyecto Jiachen chino están ejecutando un concurso con el objetivo de desarrollar un microcódigo para la CPU moderna basada en ZEN de AMD para hacer que ejecuten programas RISC-V de forma nativa. El objetivo final podría ser construir una CPU RISC-V definitiva utilizando el silicio ya disponible.
X86 es una arquitectura de instrucciones complejas complejas de instrucciones (CISC) (ISA) desarrollada hace unos 48 años. Sin embargo, internamente, los núcleos X86 modernos se basan en motores patentados que ejecutan una computadora de instrucción reducida (RISC) ISA para manejar instrucciones complicadas. Los RISC ISA internos no están documentados, pero generalmente deberían ser similares a los RISC ISA bien conocidos, como ARM o RISC-V. El microcódigo CPU es una capa de bajo nivel que traduce las instrucciones de CISC X86 complejas en instrucciones internas simples de tipo RISC que se ejecuta el hardware de la CPU. El microcódigo de CPU solo se supone que es modificable por el proveedor de CPU, pero a veces este no es el caso y aparentemente algunas partes del microcódigo Zen 1/2/3/4 de AMD se pueden cambiar usando el Zentool.
Los miembros del proyecto Jianchen quieren encontrar a alguien, que pueda modificar el microcódigo Zen CPU de AMD en un procesador moderno, por ejemplo, una serie EPYC 9004, para ejecutar binarios RISC-V. Se espera que el parche habilite la ejecución directa de los programas RISC-V o aumente significativamente su velocidad de tiempo de ejecución en comparación con la emulación utilizando el mismo hardware. El trabajo debe probarse utilizando versiones RISC-V de puntos de referencia como Coremark o Dhrystone. Un envío completo incluye binarios o código fuente, archivos de configuración, dependencias e instrucciones de prueba. Si solo se presentan binarios antes de la fecha límite el 6 de junio, se debe agregar un código fuente idéntico a través de la solicitud de extracción más adelante. El ganador obtendrá ¥ 20,000 (aproximadamente $ 2,735).
La serie EPYC 9004 de AMD y procesadores similares ofrecen rendimiento y los recuentos básicos que no se pueden lograr en procesadores basados en RISC-V disponibles actualmente, por lo que ejecutar programas RISC-V patentados en EPYCS es una idea plausible. Sin embargo, el microcódigo está diseñado para corregir errores internos en lugar de reemplazar el ISA frontal por completo e incluso no está claro si el microcódigo puede reescribirse por completo, las personas en Ycombinator anotaron.
A mediados de la década de 2010, AMD planeó ofrecer las CPU Zen X86-64 y ARMV8-A (algo recientemente retirado por Mike Clarke, el principal arquitecto de AMD), por lo que es muy probable que haya un microcódigo para la microarquitectura Zen 1 que admitió una ISA del front-end de Aarch64. Dicho esto, las CPU Zen 1 podrían presentar múltiples ‘ranuras’ de la capa de microcódigo, uno que admite X86-64 y otro AARCH64. Dudamos que este sea el caso, ya que las CPU modernas tienen optimizaciones de rendimiento de hardware muy exhaustivas que incluyen optimizaciones de alambre dura entre el microcódigo y el resto del núcleo. AMD casi nunca ha desarrollado un microcódigo que admite AARCH64 o RISC-V para los procesadores Zen 2/3/4 y, por lo tanto, la capa de microcódigo de estas CPU es estrictamente X86-64 y apenas hay espacio para microcódigos para volver a escribirlos desde cero.
“Esto no se puede lograr”, escribió un comentarista llamado Monocasa. “There is not enough rewritable microcode to do this even as a super slow hack. And even if all of the microcode were rewritable, microcode is kind of a fallback pathway on modern x86 cores with the fast path being hardwired decode for x86 instructions. And even if that were not the case the microcode decode and jump is itself hardwired for x86 instruction formats. And even if that were not the case the micro-ops are very no risc “.
Un comentarista criticó el formato del concurso, sugiriendo que es una forma de realizar un trabajo complejo por menos de $ 3,000.
En general, si bien el concepto de microcódigo reescritable es interesante y estimula la discusión sobre diseños alternativos de CPU, soporte de múltiples ISA y optimización de bajo nivel, no parece que el concurso alcance el objetivo declarado. ¿Quizás, reescribir (o más bien volver a compilar) un programa RISC-V para CPU X86 tiene más sentido?