1 puntos por GN⁺ 2024-08-28 | 1 comentarios | Compartir por WhatsApp

Historia

  • Hace un año, el DynaRec RV64 solo podía ejecutar juegos nativos de Linux relativamente "fáciles de correr", como Stardew Valley y World of Goo
  • Se implementaron rápidamente muchas instrucciones nuevas de x86_64 en RISC-V, pero todavía quedaban muchos errores en DynaRec
  • En ese momento no existían dispositivos RISC-V a los que se pudiera conectar una tarjeta gráfica AMD, y las GPU integradas IMG de VisionFive 2 y LicheePi 4A no eran compatibles con OpenGL
  • Era posible ejecutar juegos como Stardew Valley usando gl4es, pero no era suficiente para juegos de Linux más complejos ni para juegos de Windows
  • Con el Milk-V Pioneer de Sophgo fue posible conectar una tarjeta gráfica AMD, y al corregir muchos errores de RV64 DynaRec y agregar nuevas instrucciones x86 se logró ejecutar The Witcher 3

Estado actual de RISC-V DynaRec

  • El conjunto de instrucciones x86 es extremadamente amplio
  • El backend ARM64 implementó más de 1,600 instrucciones x86, pero el backend RV64 ha implementado alrededor de 1,000
  • Las instrucciones SSE fueron implementadas como instrucciones escalares, y tanto AArch64 con la extensión Neon como LoongArch64 con la extensión LSX presentan una caída de rendimiento
  • RISC-V cuenta con la extensión vectorial RVV, y el Milk-V Pioneer junto con los SoC SpacemiT K1/M1 la soportan
  • Recientemente se añadió soporte básico para RVV en box64 y se implementaron algunas instrucciones SSE comunes, pero todavía está en una etapa temprana

Instrucciones más necesarias para la emulación de x86

  • En la emulación de x86, RISC-V tiene menos capacidad expresiva que AArch64 y LoongArch64
  • RISC-V no tiene instrucciones para seleccionar un rango de bits de un registro o insertarlo en el rango de bits de otro registro
  • Por ejemplo, para implementar la instrucción ADD AH, BL en RISC-V se necesitan 10 instrucciones

La frustración de las instrucciones atómicas de 16 bytes

  • x86 tiene instrucciones de operación atómica con el prefijo LOCK, y box64 las emula usando secuencias LR/SC
  • La instrucción LOCK CMPXCHG16B compara e intercambia memoria de 16 bytes, pero RISC-V no tiene una instrucción equivalente
  • Por lo tanto, no es posible implementar esta instrucción por completo, y muchos programas como los juegos hechos con Unity la utilizan

Conclusión

  • A pesar de varias desventajas, The Witcher 3 corre en box64 hasta a 15 fps, y en el menú principal funciona a velocidad completa

Resumen de GN⁺

  • Ejecutar The Witcher 3 en RISC-V es un hecho importante que demuestra un avance técnico
  • La emulación x86 en RISC-V todavía está por detrás de otras arquitecturas, pero podría mejorar mediante extensiones como RVV
  • La menor capacidad expresiva de RISC-V y la ausencia de instrucciones atómicas de 16 bytes siguen siendo problemas importantes
  • Un proyecto similar con funciones parecidas es un emulador como QEMU

1 comentarios

 
GN⁺ 2024-08-28
Opiniones de Hacker News
  • Hay una pregunta sobre qué tendría que hacer diferente un ingeniero de software al desarrollar software apuntando a RISC-V

    • El tamaño de los ejecutables puede aumentar, así que habría que optimizar agresivamente por la localidad de caché
    • Ciertos tipos de software podrían ser más adecuados para CISC o RISC, por ejemplo juegos o servidores web
  • Curiosidad sobre la posibilidad de que aparezca un sistema con una “GPU” implementada con unos pocos CPU RISC-V grandes y muchos CPU RISC-V pequeños

    • Pregunta adicional sobre si los vectores clásicos podrían ser útiles en GPU en lugar de packed SIMD
  • Recuerda el caso de un ruso famoso que ejecutó Atomic Heart en un Elbrus 8S

    • Elbrus tiene un traductor nativo, y Atomic Heart se podía jugar a 15-25 fps
  • Opinión de que el artículo se queda corto en los "fundamentos"

    • Hace falta más información sobre cómo implementaron la ISA x86_64 en un chip RISC-V
  • Opinión de que RISC-V es el menos expresivo en el contexto de la emulación de x86

    • RISC fue explicado en clases de historia de ciencias de la computación como una computadora con conjunto de instrucciones simplificado
    • Muchos artículos y nuevos perfiles de RISC-V sugieren que "se necesitan unas cuantas instrucciones más para lograr equivalencia funcional"
    • RISC-V es una alternativa conveniente frente a otras plataformas, pero queda la duda de si el sueño de RISC ya murió
  • Opinión de que es un resultado sorprendente

    • Hizo falta mucho trabajo y, en algunos casos, parece que RISC-V llegó a su límite
    • Las instrucciones de bitset y scatter deberían agregarse como extensiones
  • Pregunta sobre 86Box

    • Comparte recuerdos de cuando usaba un Amstrad PC1512 y añadía una hard card y expansión de memoria
    • Eran tiempos divertidos usando Borland TurboPascal y Zortech C
  • En la captura de pantalla se muestran 31 GB de RAM

    • Parece estar usando mucha más RAM que la que tiene una dev board con especificaciones máximas
  • Enlace a una publicación anterior e información sobre Milk-V Pioneer

    • Un producto de motherboard y workstation RISC-V de 64 núcleos para desarrollo nativo
  • Opinión de que ojalá se pudiera hacer llegar retroalimentación a nivel ISA a RVI