ArchiTecnologia

Aprendizaje abierto. Conocimiento libre.

ArchiTecnologia
Hardware libreRISC-V

RISC-V: similitudes y diferencias con otras ISAs tipo RISC

Todos los procesadores tienen una ISA (Instruction Set Architecture) como ya sabrás si lees este blog. Es decir, un conjunto de instrucciones que los circuitos pueden interpretar y operar. De esas instrucciones dependerá la funcionalidad del procesador, es decir, la cantidad de cosas que va a poder hacer. Como no es fácil encontrar una ISA que funcione bien en todos los casos, existen gran variedad de éstas en la actualidad.

Como sabes, la más moderna de todas ellas es RISC-V. Ha sido creada a partir de 2010 frente a otras ISAs que datan de los 80 o los 90. Eso quiere decir que es muy innovadora en algunos sentidos y que ha sido pensada para la actual computación. Olvidando otros tipos de ISA como CISC, aquí quiero centrarme solo en las dominantes de la industria, es decir, las de tipo RISC.

Es más, aunque en el pasado fueron populares las CISC, como m68k, en la actualidad, incluso las x86 (AMD64 o Intel EM64T) que son ISAs CISC, funcionan casi como una RISC. Son lo que llamamos RISC-like, ya que traducen las instrucciones largas de tipo CISC en instrucciones similares a las RISC llamadas microops gracias a un front-end y un decodificador que permite esto. Eso los dota de unas ventajas a nivel de hardware claras.

Familias RISC

Chip RISC-V core

Dentro de las RISC existen muchas ISAs que actualmente se están usando. Por ejemplo, están:

  • SuperH: propietaria, creada por Hitachi en un inicio. Para dispositivos de bajo consumo como PDAs. Existe una implementación abierta llamada J-2.
  • ARM: totalmente propietaria. Aunque muchas diseñadores pueden desarrollar sus productos basados en ella pagando regalías o usando núcleos IPs. Desarrollada por Acorn y actualmente propiedad de SoftBank. Al inicio se usaba casi en el ámbito universitario, y tuvo un boom para extenderse en multitud de dispositivos por buena relación rendimiento/eficiencia energética. Incluso se están empleando para HPC.
  • RISC: junto con MIPS fue de las primeras de este tipo y dio nombre a todas las demás. Fue creada por la Universidad de Berkeley, dondetambién se desarrolló RISC-V. No duró demasiado tiempo y solo se lanzaron algunas implementaciones de ésta.
  • MIPS: en un inicio fue creada por MIPS Technologies y con caracter cerrado. Acutalmente se ha abierto y está libre de regalías. En su época llegó a ser como una especie de ARM, usándose para multitud de dispositivos.
  • POWER / PowerPC: creada por IBM, ahora se ha abierto y está libre de regalías también. Aunque tiene algunas limitaciones. En un inicio fue propietaria hasta la creación de OpenPOWER. Para todo tipo de aplicaciones. Se ha venido usando en dispositivos embebidos, en PCs, y también en HPC.
  • AVR: es propietaria, anteriormente de Atmel y ahora propiedad de Microchip Technology. Es usada en placas como Arduino. Es ideal para pequeñas aplicaciones que no demandan de un rendimiento elevado.
  • SPARC: abierta y libre de regalías. Creada por Sun Microsystems y actualmente de Oracle. La usan otros como Fujitsu, Oracle, ESA (LEON), etc. Usada para HPC y estaciones de trabajo.
  • PA-RISC: propietaria de HP, actualmente en desuso. Se empleaba para computación de alto rendimiento.
  • OpenRISC: abierta y libre de regalías. Creado desde cero para ser libre. Se ha relegado casi a un caracter experimental. A pesar de haberse desarrollado en 2000 con objetivos similares a RISC-V, no tuvo un gran impacto. Quizás el error fue que se adelantó demasiado a su época…
  • Alpha: es cerrada, propiedad de DEC y actualmente extinta, aunque llegó a ser un referente. Estaba diseñada para HPC y estaciones de trabajo.
  • RISC-V: la más modernay totalmente libre bajo licencia BSD. Iniciado por Berkeley con fondos del DARP, y actualmente participan en su creación multitud de miembros de la fundación. Para todo tipo de aplicaciones. Está ganando popularidad y cada vez la ven como un enemigo más fuerte. A pesar de su juventud, que apenas lleva 10 años de desarrollo académico, ya ha logrado grandes hitos. Ni los más de 35 años de MIPS, ni los más de 33 de SPARC, o los de POWER basados en estudios de principios de los años 70 parecen poder frenarla.

¿Por qué RISC-V?

RISC-V logo

Aparentemente no existe una respuesta sencilla. RISC-V lleva poco tiempo desarrollándose, y eso podría jugar en su contra. Pero al haberse creado en tiempos mucho más recientes que las demás, eso le da una ventaja. No viene lastrada por dependencias o instrucciones del pasado que ya no se usan como ocurre con otras y es modular.

Además, puede que muchos desconfíen de ella porque no tiene núcleos HDL disponibles con un muy alto rendimiento. Se están desarrollando algunas implementaciones para usar en HPC como las del proyecto EPI. Pero hasta que se vean los resultados en el futuro, muchos pueden cuestionarse si pueden llegar tan buenos como parecen. Además, se necesita crear ecosistemas para RISC-V si se pretende que esta ISA tenga utilidad en la práctica, y no es sencillo, se necesita tiempo y recursos… Pero ya se trabaja en ello.

¿RISC-V ha llegado tarde? Tal vez algunos piensan que llegó tarde porque ya se habla mucho de la computación cuántica, pero lo cierto es que a la electrónica actual aún le queda mucho jugo que exprimir, aunque parezca que ya esté en los últimos extertores…

Esa modularidad que he citado anteriormente es precisamente otro de los fuertes de RISC-V, ya que son realmente como unas decenas de ISAs individuales que se pueden agregar o no a las implementaciones físicas (microarquitecturas). Eso la hace interesante al tener conjuntos de instrucciones cada uno cnetrado en un objetivo: atómicas, manipulación de bits, de coma flotante de precisión simple y doble, operaciones con enteros, etc.

Además, es posible agregar un subconjunto de instrucciones personalizadas sin ningún tipo de proceso de aprobación. Lo cual puede ser muy útil si se quieren hacer variantes personalizadas para mejorar en un campo o aplicación concreta.

Puede parecer raro que otros como Intel y AMD estén invirtiendo bastante en mejorar sus unidades de predicción de saltos, incluso usando redes neurnales artificales para ello y que RISC-V hace de la predicción algo opcional. Eso podría tener un gran impacto en el rendimiento, la energía y en el código generado (será menos compacto). Pero lo cierto es que los diseños podrían superar esas limitaciones mediante fuerza bruta de procesamiento al ser núcleos más sencillos.

Incertidumbre vs seguridad con RISC-V

Chip Open-V
Dado del Open-V (Die Shot)

RISC-V ha congelado parte de la ISA, es decir, esas instrucciones ya no tendrán cambios en el futuro. Por tanto, se pueden crear ya microarquitecturas que las puedan usar sin miedo a que cambien en el futuro y queden obsoletos. En cambio, otras instrucciones o módulos no han sido congelados y podrían cambiar. Es el caso de las instrucciones que no son base para enteros de 32/64-bit, como las extensiones de multiplicación, división de enteros, atómicas, coma flotante de presición simple y doble, comprimidas, y coma flotnate de precisión cuádruple.

Esas se podrían usar en implementaciones de chips para uso experimental, ya que aún las están mejorando y cambiando. Eso indica que no es una ISA terminada, y aquí es donde las críticas por su juventud pueden tener parte de razón. Pero debemos darle tiempo para ver los primeros benchmarks…

Por otro lado, no todo es incertidumbre con RISC-V. También se ha creado con la seguridad muy presente. Por tanto, permite diseños muy seguros y permite mitigar las vulnerabilidades de Intel que aparecieron desde 2018 como Spectre, Meltdown, Foreshadow, TLBleed, Spoiler, CLKScrew, y tantas otras nuevas que van saliendo y que desgraciadamente saldrán, porque la pesadilla de Intel no ha terminado…

Regreso al pasado

Zilog Z80

Las luchas de otras ISAs contra RISC-V y la hostilidad de algunos como ARM contra RISC-V me recuerda un poco a la época en la que se creaban nuevas ISAs y sus creadores competían y luchaban por que su repertorio dominara el mercado. El objetivo era dominar, como ha conseguido hacer Intel con su x86. Otras de los 80 no corrieron la misma suerte, y todos recordaremos chips exitosos como los Z80 de Zilog o los 6502 de MOS Technology que triunfaron, pero no lograron imponerse frente a x86.

¿Qué ocurrirá dentro de unos años con RISC-V? No lo sé, pero le deseo buena suerte…

Isaac

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

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