Uno de los términos que ha aparecido junto a conceptos como ARM, x86 y todo lo relacionado con los conjuntos de registros e instrucciones de una CPU, también conocida como ISA, es RISC-V. ¿Pero ¿qué significan estas siglas y por qué están en la boca de mucha gente últimamente? Os vamos a sacar de dudas acerca de lo que significan y como afectan al mundo del hardware que utilizamos a diario.
El concepto de software libre se basa en los siguientes cuatro principios:
- La libertad de ejecutar el programa como se desee. …
- La libertad de estudiar el código fuente y modificarlo. …
- La libertad de redistribuir copias si así lo desea: requisitos básicos. ..
Pero en el hardware no existía hasta hace poco un equivalente, bien es cierto que los elementos básicos del diseño digital como son las puertas lógicas, los circuitos combinacionales y secuenciales, etc. Si que no están protegidos por ninguna propiedad intelectual, durante años hemos visto como era imposible crear un procesador de propósito general o un acelerador utilizando una ISA completamente libre, en el sentido que no pertenezca a una multinacional.
Uno puede pensar que ARM es libre por su naturaleza abierta, pero si desarrollas una procesador o un acelerador con su ISA entonces te encuentras con que tienes que pagarles regalías y tener un permiso por su parte. Además, el nivel de modificación que permiten hacer sobre sus arquitecturas es limitado, especialmente a nivel de la ISA en los que no permiten ningún tipo de variación.
Esto hace que fuera necesaria una ISA libre, que no esté atado a ninguna multinacional detrás y por tanto que sea de uso completamente libre.
Historia de RISC-V
Durante el 2010, la Universidad de Berkeley se propuso dejar de depender de una ISA comercial para crear la suya propia, con ello nació el proyecto RISC-V, pensado para crear un conjunto de registros e instrucciones que no dependiese de una gran multinacional.
El proyecto duro cuatro años, y en 2015 crearon la RISC-V Foundation para controlar la evolución de la ISA que habían desarrollado inicialmente para los proyectos de su departamento de informática, la cual es la que dirige como evoluciona este estándar de hardware libre, especialmente la especificación base y ciertas extensiones.
Características de RISC-V
Todos los procesadores RISC-V han de traer consigo el conjunto de registros e instrucciones base, el estándar indica que estos registros e instrucciones no pueden eliminarse de ninguna manera ya que son esenciales para el funcionamiento del procesador.
La ISA RISC-V tiene cuatro versiones base distintas:
- RV32i: 47 instrucciones en total, aritmética de enteros de 32 bits y direccionamiento también de 32 bits.
- RV32E: Igual que el anterior, pero con solo 16 registros al eliminar los registros del tipo contador. Está pensada para sistemas embebidos.
- RV64i: 59 instrucciones en total, es una evolución del RV32i que añade soporte cálculo de enteros y direccionamiento de 64 bits.
- RV128i: Es una extensión del RV64i, esta vez añadiendo instrucciones y direccionamiento de 128 bits.
Por otro lado, se pueden añadir diferentes extensiones:
- M: 8 instrucciones adicionales que le otorgan al procesador RISC-V la capacidad de multiplicar y dividir enteros.
- A: 11 instrucciones para operaciones atómicas con la memoria.
- F: 26 instrucciones, soporte para coma flotante de 32 bits.
- D: 26 instrucciones, extensión de F que otorga soporte para coma flotante de 64 bits.
- Q; Extensión de D que otorga soporte para coma flotante de 128 bits.
- C: 46 instrucciones que permiten trabajar con datos comprimidos en enteros de 16 bits.
Lo que hace especial a la ISA RISC-V es la capacidad de poder crear nuevas instrucciones para ciertas tareas en concreto y añadirlas al procesador que estés haciendo, lo único que tienen que hacer es mantener los formatos de instrucción utilizados en la ISA base de la arquitectura:
Esta características ha hecho además que RISC-V llegue a utilizarse en diferentes ámbitos distintos, especialmente en el mundo de los aceleradores o coprocesadores, gracias al hecho que los ingenieros pueden crear sus propias instrucciones, lo cual hace ideal a RISC-V para diferentes tipo de tareas.
RISC-V como ISA para aceleradores o coprocesadores
Si miramos cualquier procesador moderno, ya sea una CPU, una GPU o incluso un SoC veremos una enorme cantidad de aceleradores en su interior que acompañan a los procesadores principales y que sirven para acelerar ciertas tareas concretas.
Lo habitual es que cada uno de estos aceleradores funcione con una ISA propietaria, lo cual trae consigo una serie de consecuencias, pero especialmente de cara al soporte y mantenimiento de esas piezas de hardware. Cuando un acelerador o coprocesador utiliza una ISA propietaria se convierte en una caja opaca, lo cual complica el desarrollo de controladores que comunique el software con el hardware, especialmente en la comunidad del software libre.
La idea de utilizar RISC-V en aceleradores o coprocesadores tiene los siguientes objetivos:
- Permitir el desarrollo de controladores de software de tal manera que se tenga un mayor conocimiento de cómo funciona el hardware.
- Facilita el mantenimiento del hardware, así como la creación de microcódigo mucho más eficiente.
- Permite que cualquiera pueda diseñar soluciones de hardware para los problemas concretos de sus sistemas de hardware, sin tener que esperar que un tercero
Esto ha hecho que paradojicamente multitud de multinacionales hayan abandonado las ISAS propietarias de sus aceleradores o co-procesadores para adoptar RISC-V.
RISC-V como CPU
Aunque todos los programas hablen binario en realidad no hablan todos el mismo lenguaje y cada uno de ellos interpretará el código binario de una manera u otra. Es por ese motivo que un programa compilado para ARM no va a poder ejecutarse en x86 y viceversa. Pues bien, RISC-V es uno de esos lenguajes por lo que tiene sus propias normas en lo que a la forma en la que tienen que estar escritas las instrucciones de sus programas.
Si hablamos del software utilizado tanto en dispositivos PC como en dispositivos PostPC, nos encontramos que en el primer caso todas las aplicaciones de PC funcionan únicamente en procesadores con ISA x86, mientras que con el segundo caso ocurre lo mismo, pero con ARM. Esto hace que cualquier procesador con otra ISA que no sean esas dos, como es el caso de RISC-V, lo tenga muy difícil para poder hacerse un hueco en dichos mercados, por no decir completamente imposible.
Pero hay mercados concretos en los que el hardware se utiliza para tareas concretas y por tanto muy especializadas. En los que el software que ejecutan es desarrollado a la par que el hardware. Es ese tipo de proyectos en los que la compatibilidad con el software de terceros no es importante donde RISC-V está creciendo de manera exponencial y donde su adopción es cada vez más grande.