ArchiTecnologia

Aprendizaje abierto. Conocimiento libre.

ArchiTecnologia
HardwareRISC-V

RISC-V: introducción a la ISA – Parte 2

He decidido dividir el artículo en dos partes, puesto que se ha alargado más de lo deseado. En esta segunda parte continúo con lo que comenzamos en la primera parte. Aquí es donde aprenderás lo que es realmente la ISA RISC-V, este proyecto bajo el paraguas de la Linux Foundation que tanto está dando que hablar y que promete ser la arquitectura abierta para los procesadores del futuro.

Ya sabes qué es una instrucción, qué es una ISA y los tipos que existen, ahora vamos a analizar RISC-V en los sucesivos artículos que iré publicando, comenzando por tener claro lo que podemos esperar de este proyecto. Por cierto, si quieres más detalles, tienes muy buena documentación en la web oficial de RISC-V Foundation.

Sobre RISC-V:

RISC-V logo

¿Qué es RISC-V?

Bien, después de todo esto ¿qué es RISC-V? Pues es una ISA de tipo RISC de código abierto, bajo licencia BSD. Al ser abierto, permite ser estudiados, mejorados y validades por una comunidad cooperativa.

BSD es una licencia permisiva, no restrictiva como GPL. Eso puede atraer a las empresas que saben que podrán crear prototipos cerrados basados en este proyecto, puesto que no obliga a que los derivados tengan que estar bajo las mismas condiciones de licencia. Pero creo que ha sido un error en el sentido de que tendremos un proyecto abierto y productos cerrados… Véase el ejemplo de iOS y macOS con sistemas operativos *BSD; Minix e Intel ME; el caso de UEFI y TianoCore; y tantos otros casos… De hecho, ya hay microarquitecturas abiertas y también cerradas haciendo uso de RISC-V.

Se creó con el objetivo de ser una ISA universal:

  • Válida para todo tipo de procesadores, desde microcontroladores hasta microprocesadores de alto rendimiento.
  • Debe funcionar adecuadamente con todo tipo de software y de lenguajes de programación.
  • Se puede implementar en todo tipo de dispositivos: SoCs, ASICs, FPGAs,…
  • Eficiente para todo tipo de microarquitecturas:  emisión simple, superescalares, OoOE, ejecución en orden, canalizada, con unidades de control cableadas o microprogramadas, etc.
  • Con alto grado de especialización.
  • Estable (no se debe cambiar, no se debe descontinuar)
  • Segura

Además, es una ISA reciente, algo atípico si tenemos en cuenta que la mayoría de ISAs que se emplean en la actualidad fueron diseñadas en los años 70 u 80. Por tanto, se ha creado desde un inicio para las necesidades actuales.

Detalles técnicos:

Chip Open-V
Dado del Open-V (Die Shot) basado en la ISA RISC-V

Algunas características técnicas de RISC-V son:

  • Diseñador: Universidad de California, Berkeley
  • Gestión: RISC-V Foundation
  • Licencia: abierta y gratuita, BSD
  • Tamaño de palabra: 32-bit, 64-bit, 128-bit (con extensiones SIMD o vectoriales)
  • Tipo: RISC, load-store (carga-almacenamiento)
  • Núcleo de la ISA: RV32I, RV64I, RV128I (congelados, no cambia), pero se puede extender como se comprueba en el siguiente punto
  • Extensiones modulares: M (multiplicación y división), A (atómicas), F (coma flontate de precisión simple), D (coma flotante de precisión doble), Q (coma flotante de precisión cuádruple), C (comprimidas), P (Packed-SIMD), N (nivel de usuario), L (coma flotante decimal), J (lenguajes traducidos dinámicamente), H (Hypervisor o privilegiadas), E (embebidos), B (manipulación de bits), V (vectoriales), [algunas se irán agregando en el futuro]
  • Tipos de registros: de propósito general (16 o 32, incluído un registro always-zero) y de cóma flotante (32 opcionales)
  • Codificación: variable
  • Branching: comparación y bifurcación
  • Endianness: Little-Endian, es decir, los datos se almacenan del byte menos relevante al más relevante
  • ISA Modular (no incremental): se le pueden ir agregando módulos, por ejemplo, RV32IMFD significa que se está usando las instrucciones  RISC-V de 32-bit y las extensiones M, F y D.

Hago un paréntesis para explicar eso de modular vs incremental. Me explico. Volvamos unos años atrás, cuando Intel estaba desarrollando un procesador de alto rendimiento que le llevaría años diseñar. Pues resulta que llegó Zilog con su exitoso Z80 y le hizo mucho daño a Intel, por lo que decidió lanzar un procesador temporal llamado 8086. En principio era temporal porque simplemente tenía la misión de recortar distancias en el mercado contra Zilog y luego desaparecería sin sucesores.

¡JA JA JA! Sin sucesores… Pues resultó que el 8086 se convirtió en el inicio de la era x86 y le seguirían el 8186, 8286, 8386, 8406, Pentium y todos los demás hasta los actuales diseños. Desde los 8-bit hasta los 32-bit, y luego AMD llegaría para extender la ISA a los 64-bit. En todos los diseños, el set principal de instrucciones ha permanecido intacto para que tengan retrocompatibilidad. Todos sabemos que podemos ejecutar un software creado para 32-bit en un chip de 64-bit, ¿cierto?

Eso es lo que se conoce como incremental, ya que los actuales diseños van incorporando las extensiones de instrucciones más modernas y también las anteriores para mantener esa compatibilidad hacia atrás. Eso hace que la arquitectura cada vez sea más y más compleja. De hecho, si analizas los x86 tienes que comenzaron con apenas unas 80 instrucciones en la ISA de 1978 y actualmente hay más de 1300.

Ir arrastrando de esa forma las instrucciones anteriores, aunque muchas de ellas ya no tengan sentido (p.e.: véase la instrucción AAA de x86) o supongan errores conceptuales que se han resuelto con nuevas instrucciones, no es una buena práctica. Y eso es lo que viene a resolver la ISA modular RISC-V, puesto que se pueden tratar las instrucciones como paquetes o módulos que se pueden quitar o agregar como se prefiera para la microarquitectura que necesites diseñar.

No te preocupes si no entiendes nada por ahora, iremos analizando todo con detalle en futuros artículos…

Cuando los insultos resultan halagos

Ejecutivo del grupo SOftBank propietario de ARM Holdings

Todas esas características y expectativas fueron los motivos por los cuales se ha conseguido que el proyecto haya ido ganando popularidad desde su introducción en 2011. Especialmente después de las críticas de ARM Holdings decidiera atacar a RISC-V para menospreciarla y consiguiese el efecto contrario…

De hecho, ARM desconectó su sitio web (www.riscv-basics.com) en el que atacaba a RISC-V a los pocos días de lanzar la crítica, y lo hizo después de que algunos de sus empleados se opusieran a esta táctica. En esa página web se abrió a finales de junio de 2018, aparentemente era amigable para el proyecto RISC-V, pero realmente daba razones por las que los núcleos ARM eran mejor opción.

En la web se podía leer el título en inglés «RISC-V Architecture: Undestand the Facts» (Arquitectura RISC-V: Entienda los hechos). Y el objetivo oculto fue propagar el temor y la incertidumbre sobre RISC-V y sobre el código abierto. Y esos dardos envenenados se basaban en 5 puntos clave, y en ocasiones se exponían argumentos retorcidos y lenguaje engañoso. Resumiendo:

  • Coste: ARM decía que no había tarifa de licencia y que el coste de las regalías y que podía aplicarse ex post facto, algo absurdo.
  • Ecosistema: desaconsejaba el uso de RISC-V y sostenía que era un sistema demasiado inmaduro.
  • Seguridad: decía que al ser tan nuevo y aún no estar sometido a un escrutínio de la industria y la comunidad podría tener problemas de seguridad, algo absurdo si consideramos que ARM son vulnerables como hemos visto recientemente…
  • Fragmentación / Garantías: se decía que al poder modificar o agregar extensiones a sus propios sistemas, eso sería perjudicial para los ecosistemas, que la verificación y validación podría consumir el 75% del tiempo de diseño (bueno, esto… no comments), y que se aumentan los costos de creación.

Algo así como la mercadotecnia de Microsoft entre 2004-2007 contra Linux.

Las críticas al sitio no solo vinieron desde dentro de la propia ARM, también desde otros sectores de la industria. Y el resultado fue que se comenzó a ver el proyecto RISC-V como una verdadera alternativa a los ARM y dio más credibilidad a la nueva ISA. De hecho, el miedo de ARM viene al ver cómo compañías, que actualmente son licencitarios de los núcleos IP de ARM, han comenzado a respaldar el proyecto RISC-V (Qualcomm, Samsung, Google, NVIDIA, Western Digital, AMD, IBM, Huawei, MediaTek, Micron, Mellanox, IDT, NXP,…).

Lazos familiares de ARM y RISC-V: Un poco de historia…

Hennessy y Patterson
J.L. Hennessy y D.A. Patterson

Estos dos señores que véis sobre estas líneas quizás sean de los gurús (junto a Jim Keller) que más saben sobre arquitecturas de computadoras y procesadores. De hecho, recomiendo sus libros por encima de cualquier otro para aprender sobre este tema. Son dos de los culpables de las arquitecturas RISC: John Hennessy y David Patterson.

El primero de la Universidad de Stanford y fundador de MIPS Technologies, el segundo de la Universidad de Berkeley y arquitecto de RISC-I (también conocido por la tecnología RAID). Ambos estaban trabajando de forma casi paralela en diseños que darían origen a lo que hoy conocemos como arquitecturas RISC. Esos fueron los microprocesadores MIPS y RISC-I, éste último daría nombre a este tipo de arquitecturas.

Quizás para ver el origen real de un paradigma similar a RISC nos tengamos que remontar a 1946 con el diseño ACE de Alan Turing, o quizás también en parte a la arquitectura load/store del CDC 6600 diseñada por el gurú Seymour Cray en 1964, tal vez ya había algunas características en el IBM 801, etc.  Pero RISC tal cual lo conocemos hoy en día es cosa de Patterson y Hennessy, con los diseños RISC-I de 1980 y el MIPS de esa misma época.

Actualmente, David Patterson tiene un importante cargo dentro de la junta directiva de la Fundación RISC-V.

Y de ese germen brotó el proyecto RISC-V, de hecho, comparte algunas características con MIPS y Berkeley RISC más allá de ser también de tipo RISC, como el registro always-zero del MIPS (registro usado para mejorar el rendimiento, siempre descarta la escritura y su lectura es siempre el entero 0), los registros iguales a RISC de Berkeley, etc.

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

3 thoughts on “RISC-V: introducción a la ISA – Parte 2

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar