El ISA RISC-V se desarrolló en la Universidad de California, Berkeley en 2010, y desde entonces ha ganado una gran cantidad de seguidores en el ámbito de la electrónica y la informática, incluidos fabricantes de chips, desarrolladores de software y proveedores de servicios en la nube. En un principio, este ISA se diseñó con un propósito esencialmente educativo, pero tenia otro gran objetivo que era poder afianzarse a medio-largo plazo como una alternativa de hardware libre a los diseños más ampliamente utilizadlos en la actualidad, como son los de ARM y los de x86-64 desarrollados por Intel y AMD. La gran aspiración de RISC-V es convertirse en el "Linux del hardware" y debido al gran apoyo que está recibiendo en la actualidad desde el mundo empresarial, gubernamental y educativo es una ambición cada vez más realista.
Analizando su nombre, el ISA RISC-V se basa en un diseño de tipo RISC (Reduced Instruction Set Computer o computador con conjunto de instrucciones reducido). RISC es una arquitectura informática diseñada para simplificar las instrucciones individuales que se le proporcionan al computador, siendo una ISA con muchos aspectos en común a la ISA MIPS estudiada durante el grado.
En computadores CISC (Complex Instruction Set Computer o computador de conjunto de instrucciones complejas) el número de instrucciones (código) necesario para ejecutar una tarea es mucho menor que el que se puede necesitar en computadores RISC, pero estas intrusiones son bastante más complejas. Por el contrario, el concepto operativo clave de los procesadores basados en RISC es que cada instrucción realiza una única y sencilla función (por ejemplo, copiar un valor de la memoria a un registro o realizar una operación aritmética o lógica básica).
En este escenario, el primer paso para poder comprender, implementar y mejorar esta arquitectura de código abierto pasa por disponer de simuladores que sean capaces de modelar los más fielmente aquello que serian los diseños hardware finales. Mediante estos simuladores se puede conocer cuál sería el comportamiento de las implementaciones finales.
Por lo tanto, el objetivo de este trabajo fin de grado es el de extender la funcionalidad de uno de los simuladores de RISC-V más ampliamente utilizados en la actualidad. En concreto, se pretende dotar al simulador Ripes de mayor variedad de técnicas relacionadas con las gestión de saltos.
Para el desarrollo de este TFG se usará una metodología ágil basada en Scrum. Se mantendrán reuniones periódicas, en principio quincenales, con los tutores para realizar un adecuado seguimiento que garantice el éxito del trabajo, a la vez que sirva para una provechosa retro-alimentación del mismo.
Las tareas que se deben realizar para lograr el objetivo principal del trabajo seguirán las etapas utilizada habitualmente en este tipo de trabajos, que en general consiste en motivar y justificar la conveniencia de realizar este trabajo; familiarizarse con el simulador aprendiendo su manejo, como está implementado y los datos que ofrece; realizar las implementaciones necesarias; recoger datos y analizarlos para extraer las conclusiones más relevantes.
De acuerdo con lo anterior, se obtienen las siguientes tareas principales a realizar en este TFG:
1) Conocer con un nivel de detalle adecuado a la carga del TFG el estado del arte de las arquitecturas x86, ARM y la especificación RISC-V. Su conocimiento es esencial, y para realizar esta tarea se consultará diversa documentación.
2) Familiarizarse con la funcionalidad y la implementación del simulador de RISC-V, conocido como Ripes.
3) Extender las funcionalidad implementada en el simulador dedicada a la gestión de saltos.
4) Estudio de las prestaciones de las técnicas implementadas en el simulador.
5) Documentación de los resultados y redacción de la memoria de TFG.
Las competencias desarrolladas a lo largo de este proyecto son:
[CO19] Ejercicio original a realizar individualmente y presentar y defender ante un tribunal universitario, consistente en un proyecto de naturaleza profesional en el ámbito de la tecnología específica de la Ingeniería en Informática que ha realizado el estudiante. En este ejercicio se deben sintetizar e integrar las competencias adquiridas en las enseñanzas.
[IC3] Capacidad de analizar y evaluar arquitecturas de computadores, incluyendo plataformas paralelas y distribuidas, así como desarrollar y optimizar software para las mismas.
[TI2] Capacidad para seleccionar, diseñar, desplegar, integrar, evaluar, construir, gestionar, explotar y mantener las tecnologías de hardware, software y redes, dentro de los parámetros de coste y calidad adecuados.
[IS4] Capacidad de identificar y analizar problemas y diseñar, desarrollar, implementar, verificar y documentar soluciones software sobre la base de un conocimiento adecuado de las teorías, modelos y técnicas actuales.
[UCLM3] Correcta comunicación oral y escrita.
[INS1] Capacidad de análisis, síntesis y evaluación.
[INS2] Capacidad de organización y planificación.
- David A. Patterson and John L. Hennessy. 2021. Computer Organization and Design RISC-V Edition: The HardwareSoftware Interface (2nd. ed.). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA.
- David Patterson and Andrew Waterman. 2017. The RISC-V Reader: An Open Architecture Atlas. Strawberry Canyon.
Toda la bibliografía está disponible y a disposición del alumno.
Enlace al simulador:
https://github.com/mortbopet/Ripes