En el mundo de las arquitecturas informáticas modernas, la gran mayoría de la gente hoy en día solo interactuará con Arm o x64_64. También hay otras arquitecturas, pero ninguna que sea tan omnipresente en la vida cotidiana. Sin embargo, una arquitectura conocida comoRISC-Vha ido creciendo a lo largo de los años. Es una ISA de estándar abierto que cualquiera puede modificar e implementar, lo que la convierte en una arquitectura particularmente interesante que podría desafiar a Arm a largo plazo. Ahora, los desarrolladores de Box64 han logrado queThe Witcher 3se ejecute en una CPU RISC-V con una AMD Radeon RX550.

Relacionado
Olvídese de Windows en Arm, ¿dónde está Windows en RISC-V?

Windows en Arm es una novedad en esta etapa, quiero saber sobre las arquitecturas de vanguardia.

El desarrollo avanza rápidamente

Utiliza Box64, Wine y DXVK

Los desarrolladores de Box64 hantrabajado arduamentedurante el último año para lograr que Box64 funcione completamente en RISC-V. Box64, según el desarrollador principal, ptitSeb, es tanto una capa de traducción como un emulador. Me dijo lo siguiente:

Existe la capa de traducción para la biblioteca del sistema, que convierte las llamadas de la ABI x86_64 a la nativa. Pero también existe la parte de emulación, con todo el binario x86_64 (y la biblioteca no encapsulada) porque se traduce al código nativo sobre la marcha. La emulación del código x86_64 tiene que ser lo más parecida posible a la realidad (ya que algunas herramientas de cifrado/ofuscación dependen del comportamiento exacto del código de operación).

Lo que sí es seguro es que no se está realizando ninguna emulación de "máquina completa". No hay emulación de hardware, ni sincronización específica, ni nada de eso, se limita a la emulación de CPU porque está en emulación de "espacio de uso" y proporciona un entorno Linux x86_64 virtual al programa.

Ese mismo concepto se aplica también a la ejecución RISC-V en este caso.The Witcher 3se ejecuta mediante una combinación de traducción y emulación, lo que le permite funcionar a una velocidad de cuadros aceptable en una placa RISC-V de 64 núcleos. Los núcleos RISC-V de Milk-V Pioneer son bastante débiles (aunque siguen siendo mejores que los deMilk-V Mars), pero el caso es quefuncionay abre la puerta a más juegos en el futuro. El desarrollo original (cuando el desarrollador consiguió queStardew Valleyfuncionara por primera vez) comenzó en StarFive VisionFive2.

En cuanto aStray, se ejecuta en la misma máquina en la que el desarrollador ejecutóThe Witcher 3.También se ejecuta lentamente, pero como es un juego con Unreal Engine 4, es un gran avance lograr que funcione. Si Stray se vuelve completamente jugable, es probable que también mejore el rendimiento de otros juegos con Unreal Engine.

Relacionado
Cómo las capas de traducción están cambiando el panorama informático para hacerlo mejor para todos

Las capas de traducción son una pieza de tecnología increíblemente importante de la que quizás no hayas oído hablar.

2

Cómo se ejecuta The Witcher 3 en RISC-V

Es muy, muy complejo.

Menú de The Witcher 3 que muestra su ejecución en RISC-V
Fuente: Box64

Para ejecutar aplicaciones compiladas para la arquitectura x86_64, Box64 utiliza Dynarec, un término abreviado para la recompilación dinámica. x86_64 es una arquitectura CISC (Complex Instruction Set Computer), que ofrece un gran conjunto de instrucciones complejas capaces de realizar tareas como operaciones de memoria y aritméticas en una sola instrucción. Por otro lado, RISC-V sigue la filosofía RISC (Reduced Instruction Set Computer), que presenta un conjunto de instrucciones más simple y optimizado. Esta diferencia significa que el código x86_64, con sus instrucciones complejas, debe traducirse en secuencias de instrucciones RISC-V más simples.

Este proceso de conversión de código x86_64 en instrucciones RISC-V lo gestiona Dynarec Box64. En este sistema,explicaptitSeb , los bloques de instrucciones x86_64 se traducen en instrucciones RISC-V equivalentes durante el tiempo de ejecución. Estos bloques, llamados "dynablocks", se almacenan y se reutilizan cuando se vuelve a encontrar el mismo código x86_64, lo que reduce la necesidad de traducciones repetidas y mejora la eficiencia general. A modo de ejemplo, si tiene una secuencia de códigos de operación x86_64, un dynablock es una secuencia asociada de códigos de operación RISC-V que realizan la misma lógica.

Esta traducción conlleva una serie de problemas. En esencia, x86_64 puede realizar operaciones complejas en una sola instrucción, mientras que RISC-V requiere varias instrucciones más simples para lograr el mismo resultado. Por ejemplo, tareas como cargar datos desde la memoria y realizar cálculos deben dividirse en varios pasos en RISC-V. Además, traducir características como los indicadores de x86_64 a instrucciones RISC-V requiere un esfuerzo adicional, ya que RISC-V no tiene indicadores en absoluto.

En la actualidad, la traducción de RISC-V todavía está en pañales, pero la arquitectura en su conjunto está avanzando continuamente. Con más hardware que sale basado en él y los desarrolladores dedicando más tiempo a él, parece cada vez más probable que en algún momento el desarrollo comience a crecer como una bola de nieve. No va a ser la base de unaconsola portátil para juegosni nada por el estilo en un futuro próximo, pero sin duda está mejorando.

Relacionado
Intenté construir un NAS con mi sistema RISC-V: así fue como funcionó

A pesar de algunos contratiempos, el NAS RISC-V improvisado funcionó sorprendentemente bien

1