Emulador RISC-V: una buena herramienta de aprendizaje
En artículos previos he comentado sobre RISC-V, y también sobre multitud de herramientas y recursos que puedes usar para trabajar y aprender sobre esta arquitectura, e incluso placas de hardware que puedes emplear si eres desarrollador.
En este otro artículo te voy a presentar un interesante recurso de aprendizaje sobre RISC-V. Un emulador web que te permitirá saber cómo funciona de forma detallada, incluso hacer un seguimiento de las instrucciones por las diferentes etapas.
Este simulador se llama emulsiV, y es de código abierto. Puedes revisar el código fuente en su sitio de GitHub. Y, para comenzar a probarlo, puedes acceder a su interfaz web desde aquí.
Ha sido creado por el ESEO francés y está especialmente diseñado para el aprendizaje. Y no es más que una implementación visual de un procesador RISC-V muy simple llamado Virgule.
Virgule es un núcleo de 32-bit que implementa un subconjunto mínimo de la ISA RISC-V, lo que es ideal para evitar una mayor complejidad y hacerlo más claro para los que comienzan a aprender sobre arquitectura.
En cuanto a su funcionamiento, es sencillo:
- En la barra superior tienes:
- Herramientas de zoom.
- Descargar el código cargado en la memoria en hexadecimal.
- Cargar tu propio código en hexadecimal y ejecutarlo para ver cómo funcionaría.
- Ejemplos precargados como Hello, para un simple hola mundo, un echo, etc.
- La casilla de animación que debes activar para generar la animación y poder hacer un seguimiento de los datos e instrucciones a través del path de la arquitectura.
- También puedes seleccionar la velocidad a la que se van ejecutando las instrucciones.
- Tienes los botones de control Reset/Pause/Run/Step. El primero resetea el programa, el segundo pone en pausa la ejecución, el tercero ejecuta el programa que haya en memoria y el último ejecutaría paso a paso.
- A la derecha tienes unos indicadores de la etapa en la que se encuentra cada instrucción: Fetch (ciclo de búsqueda), Decode (decodificación), ALU (unidad aritmético-lógica), Compare (comparación), Mem/Reg (ciclos de acceso a memoria y registros) y PC (registro Program Counter o contador de programa, que apunta a la siguiente instrucción de la memoria a ejecutar).
- En la zona media puedes ver el diagrama de la arquitectura donde puedes ver cómo corren las instrucciones a través de las distintas unidades.
- En la zona baja puedes encontrar el E/S, con la entrada de datos, un recuadro negro con la salida de texto con los resultados que e irán mostrando (p.e.: Hello si has ejecutado el ejemplo del hola mundo), estado del GPIO y bitmap.
Por cierto, admite código generado por un compilador de C, para los programas que desees cargar para tus pruebas.
Más información – Documentación de emulsiV
Si necesitas otro emulador RISC-V más avanzado – WebRISC-V