En los últimos años, se ha hablado mucho de diferentes microprocesadores basados en el set de registros e instrucciones RISC-V (pronunciado RISC Five), cuya particularidad es no estar asociado a ninguna empresa privada y ser completamente modular. Lo que permite no solo la creación de CPU, sino todo tipo de procesadores de apoyo y especializados. Pero, ¿cuáles son sus características y en qué se diferencia de x86 y ARM.
RISC-V versus ARM y x86
A día de hoy, el set de instrucciones más usado es ARM, por encima de x86. El motivo detrás de ello no es otro que su propietaria ARM Holdings licencia su núcleo a terceros para que otros puedan incorporarlo a sus diseños, no solo eso, sino que también licencia todo el hardware periférico a sus CPU para que otros puedan diseñar sus propios SoC. En ese caso, los fabricantes no pueden tocar absolutamente nada del diseño de los chips que les cede ARM. Además, en el caso de empresas como por ejemplo Apple, estas pueden diseñar sus propias CPU, pero no pueden tocar el set de instrucciones y registros, el cual se ha de mantener intacto.
RISC-V, en cambio, no tiene propietario, no se han de pagar licencias a una empresa por usarlo. Es más, el diseño es totalmente modular, ya que aparte del set de registros e instrucciones básicos, se ofrecen otros adicionales, los cuales pueden ser útiles para ciertos casos concretos o no. Esto es una ventaja desde el momento en que para ciertas aplicaciones concretas cierto tipo de instrucciones no les benefician para nada al no usarlas. Las diferencias respecto a x86 son obvias, ya que en la actualidad se trata de una ISA totalmente propietaria donde nadie más, aparte de Intel y AMD, puede hacer chips.
Ahora bien, la mayor desventaja de RISC-V es que, al ser un set de registros e instrucciones distinto, carece de la misma cantidad de software que los otros dos, para los cuales se han adoptado miles de programas distintos durante épocas. Sin embargo, no busca reemplazar ni a x86 ni a ARM en el mercado de consumo, al menos como CPU.
Modularidad, el punto fuerte de esta ISA
Uno de los puntos clave a la hora de diseñar un microprocesador, sea del tipo que sea, es saber con qué precisión de datos operará. El motivo de ello es que cuanto mayor sea la cantidad de bits de datos por instrucción, mayor ancho de banda para la comunicación interna y mayor será el tamaño de las diferentes unidades de ejecución dentro del chip. Lo mismo ocurre con la lógica no utilizada a menor precisión. Pues bien, RISC-V no cuenta con una sola versión base, sino con cuatro distintas, con las siguientes características.
Nombre | Precisión | Registros (propósito general) |
---|---|---|
RV32I | 32 bits | 32 |
RV32E | 32 bits | 16 |
RV64I | 64 bits | 32 |
RV128I | 128 bits | 32 |
Ahora bien, hemos de aclarar que RISC-V no define cómo han de ser los diferentes componentes del núcleo, solo lo que hace cada instrucción y a qué registro va asociada. Por lo que dependerá de los diseñadores crear las unidades correspondientes de captación y decodificación de instrucciones en mayor o menor complejidad según cada caso. En cuanto a la unidad de ejecución, el diseño base es con una ALU de enteros a la precisión que marque el modelo base. ¿Y qué hay del resto de unidades? Pues muchas de ellas y sus instrucciones correspondientes vienen definidas en los diferentes módulos de expansión, los cuales son los siguientes:
Extensión | Uso |
---|---|
A | Operaciones atómicas. |
B | Instrucciones para la manipulación de bits. |
C | Capacidad para operar con 16 bits de precisión |
D | Soporte para instrucciones de coma flotante con 64 bits de precisión |
F | Lo mismo que con D, pero con 32 bits de precisión |
H | Modo supervisor |
J | Instrucciones para la traduccion dinámica de lenguajes |
K | Criptografia |
L | Soporte para cálculo decimal (base 10) |
M | Soporte para instrucciones de multiplicación y división |
N | Instrucciones para la gestión de interrupciones |
P | Packed SIMD (tamaño fijo,usa registros escalares) |
Q | Coma flotante de 64 bits |
T | Soporte para memoria transaccional |
V | Vector SIMD (tamaño variable, usa registros ) |
Ahora bien, el estándar no permite manipular ni el set de instrucciones base que se haya escogido y tampoco la extensión. Lo cual no impide el uso de extensiones propietarias para usos específicos, algo que no se puede hacer ni en x86 y tampoco en ARM. Todo ello permite la creación tanto de microprocesadores de propósito general y también chips de apoyo para tareas específicas.
Tipo de unidad | Descripción | Extensiones relevantes |
---|---|---|
GPU | Procesamiento paralelo para gráficos y cómputo general en GPU (GPGPU). | V (Vectorial), Personalizadas |
DSP | Procesamiento de audio, video y telecomunicaciones. | P (Packed SIMD), V (Vectorial) |
NPU | Optimizado para inteligencia artificial y aprendizaje automático. | V (Vectorial), Personalizadas |
MMU | Gestión de direcciones virtuales y protección de memoria. | S (Supervisor) |
Unidad de Seguridad y Protección | Seguridad en hardware, almacenamiento de claves, autenticación. | Personalizadas |
Aceleradores Criptográficos | Implementan operaciones de cifrado (AES, SHA, RSA, ECC, etc.). | K (Criptografía) |
Aceleradores de Redes (SmartNICs) | Procesan paquetes de red con mínima latencia. | Personalizadas |
Aceleradores para computación de alto rendimiento | Integran capacidades vectoriales avanzadas para supercomputación. | V (Vectorial) |
Microcontrolador | Uso en IoT, sensores y sistemas embebidos. | C (Compact), E (Embedded) |
Controlador Flash | Gestión de almacenamiento en memorias NAND/NOR, usado en SSDs y almacenamiento embebido. | Personalizadas. Opcionalmente X (Transacciones) |
Acelerador de Compresión/Descompresión de Datos | Optimiza la compresión y descompresión de datos en hardware para mejorar rendimiento en almacenamiento y redes. | Personalizadas, Posiblemente V (Vectorial) |
No es de extrañar que en los últimos años se vea cada vez más el uso de RISC-V en diferentes soluciones, lo que llevará, con el tiempo, a que sea más adoptado incluso que ARM.