Guía sencilla de ARM vs. RISC-V vs. x86

RISC-V vs ARM vs x86 Título de la imagen

Introducción

Hemos hablado mucho de Raspberry Pi 5 aquí en PiCockpit, por supuesto. El otro día, me encontré con una discusión sobre Raspberry Pi 5 que se centró en la arquitectura ARM de la Pi y cómo se apila con la arquitectura RISC-V. Durante años, la gente ha hablado de la compatibilidad de Raspberry Pi con x86. Pero, ¿qué pasa con una Pi RISC-V?

Esto es especialmente interesante, porque Raspberry Pi es miembro de RISC-V Internacional.

Como Arduino, en realidad.

Así que hay potencialmente un futuro para los chips de arquitectura RISC-V en las Raspberry Pis. Sin embargo, yo no aguantaría la respiración esperando una Raspberry Pi x86.

Después de todo, en un debate reciente publicado por Raspberry PiEn palabras de Gordon Hollingworth: "La gente dice: 'Bueno, ¿podrías hacerlo tú? ¿Se puede inventar una Raspberry Pi x86?' Es como, 'Oh, Dios, sería mucho trabajo.' Podrías, pero..."

Un chip Intel

Así que he pensado que era hora de repasar algunas de las principales diferencias y similitudes entre las arquitecturas RISC-V, ARM y x86. Repasaré su historia, sus ventajas e inconvenientes y lo que las distingue unas de otras.

Al final, tendrás una idea de por qué sería tanto trabajo hacer una Raspberry Pi x86, pero por qué una Raspberry Pi RISC-V no está fuera de cuestión.

Visión general

RISC-VARMx86
OrigenRISC-V InternacionalArm Ltd.Intel y AMD
Conjunto de instruccionesRISC (conjunto reducido de instrucciones)RISC (conjunto reducido de instrucciones)CISC (Complex Instruction Set Computing)
Orden de bytesNormalmente little-endian (configurable por el usuario)Normalmente bi-endian (configurable por el usuario)Little-endian
AplicacionesSistemas integrados, dispositivos IoT, soluciones personalizadasDispositivos móviles, sistemas integrados, servidoresOrdenadores de sobremesa, portátiles, servidores y estaciones de trabajo
Modelo de licenciaLicencias libres de derechos y de código abiertoARM licencia sus diseños a los fabricantesIntel y AMD producen sus propios chips
EcosistemaDesarrollo del ecosistema, iniciativas de código abiertoAmplio ecosistema y soporte de tercerosAmplio ecosistema de software y hardware

Repasemos ahora cada uno de estos puntos.

Origen

Permítanme empezar por x86, ya que es la más antigua de las tres. La arquitectura x86 se remonta a 1978, cuando Intel lanzó la familia 8086. La arquitectura x86 era CISC, que estaba de moda en aquella época. Hoy en día, la arquitectura x86 sigue estando bajo el control de Intel, junto con AMD.

La arquitectura ARM comenzó 7 años más tarde, cuando Acorn Computers Ltd. lanzó el ARM1. Acorn Computers ya no existe, pero su arquitectura ARM sigue viva a través de Arm Ltd., que ahora licencia la arquitectura ARM a otras empresas. Arm Ltd. concede ahora licencias de la arquitectura ARM a otras empresas.

En comparación, RISC-V es extremadamente nuevo, ya que comenzó en 2010 en la Universidad de California, Berkeley. En 2015, un grupo de empresas tecnológicas (desde IBM a Google, pasando por Nvidia) se unieron para crear la Fundación RISC-V. En 2020, debido a cuestiones geopolíticas, la Fundación RISC-V se trasladó a Suiza y se convirtió en RISC-V International.

Logotipo de RISC-V

Conjunto de instrucciones

En primer lugar, permítanme aclarar la diferencia entre RISC y CISC.

Los procesadores RISC utilizan un conjunto pequeño y optimizado de instrucciones, cada una de las cuales tarda un solo ciclo de reloj, lo que permite una ejecución más rápida y predecible.

En cambio, los procesadores CISC tienen un conjunto de instrucciones más amplio y diverso, que a menudo incluye instrucciones complejas que pueden requerir varios ciclos de reloj, lo que se traduce en un rendimiento potencialmente más lento pero más versátil a la hora de gestionar diversas tareas.

RISC-V está basado en RISC, obviamente. Pero lo que lo distingue es que es de código abierto.

En su documento de 2014, Los conjuntos de instrucciones deben ser libres: el caso de RISC-VKrste Asanović y David A. Patterson comparan RISC-V con Linux. La idea es que exista una Arquitectura de Conjuntos de Instrucciones totalmente de código abierto. Así que la gente debería poder manipularla, jugar con ella y compartirla.

Asanović y Patterson sostienen que esto podría impulsar la innovación, mejorar la transparencia y reducir los costes.

Ahora debo mencionar que, aunque RISC-V en sí es de código abierto, las implementaciones específicas de RISC-V pueden ser tanto de código abierto como propietarias.

Las instrucciones de ARM también se basan en RISC. Sin embargo, como Arm Ltd. licencia la arquitectura, son cualquier cosa menos de código abierto. Como dicen Asanović y Patterson: "Una licencia ARM ni siquiera te permite diseñar un núcleo ARM; solo puedes usar sus diseños". Aunque no es tan sencillo, suele ser así.

Más arriba he dicho que la arquitectura x86 está basada en CISC. Es cierto, pero debo mencionar que, desde los años 90, los procesadores x86 también incluyen instrucciones SIMD (Single Instruction, Multiple Data) para tareas de procesamiento paralelo. Esto permite que los procesadores multinúcleo también funcionen con rapidez.

Después de todo, el superordenador más rápido del mundo, Frontier, está basado en x86.

Pero el segundo superordenador más rápido del mundo, Fugaku, está basado en ARM.

Mucha gente sostiene que la distinción entre RISC y CISC no es muy importante hoy en día. Como los procesadores modernos son tan potentes, dicen que las diferencias entre estos tipos de conjuntos de instrucciones prácticamente han desaparecido. Sin embargo, en su reivindicación de RISC-V, Asanović y Patterson argumentan que "hace décadas que ningún nuevo ISA CISC ha tenido éxito", por lo que tiene más sentido optar por una arquitectura basada en RISC.

Orden de bytes

La endogeneidad se refiere al orden de los bytes en el que se almacenan los tipos de datos multibyte en la memoria del ordenador.

En los sistemas little-endian, el byte menos significativo se almacena en la dirección de memoria más baja, mientras que en los sistemas big-endian, el byte más significativo se almacena en la dirección más baja.

La endianidad es muy importante cuando quieres intercambiar datos entre procesadores. Si envías información de un sistema big-endian a un sistema little-endian, tus datos podrían corromperse fácilmente si no los conviertes correctamente.

RISC-V es típicamente little-endian. Esto es algo que puedes configurar si quieres que tu RISC-V tenga un orden de bytes big-endian.

La arquitectura ARM puede ser little-endian o big-endian, dependiendo de la implementación específica. Al igual que RISC-V, puedes configurar un chip ARM para que sea big-endian.

Las Raspberry Pis son, por defecto, little-endian. Puedes comprobarlo tú mismo yendo a tu Raspberry Pi, abriendo el terminal y ejecutando:

lscpu

La arquitectura x86 es little-endian. Pero a diferencia de la arquitectura RISC-V y ARM, esto no se puede cambiar. Ser little-endian es una característica de la arquitectura x86.

Aplicaciones

Quiero volver un momento al artículo de Asanović y Patterson. Aunque el artículo es de 2014, plantea una cuestión muy importante. Afirman que "[m]ientras que el 80×86 ganó la guerra de los PC, RISC domina las tabletas y los teléfonos inteligentes de la Era PostPC; en 2013 se enviaron más de 10 [mil millones] de ARM, frente a 0,3 [mil millones] de 80x86".

Es una discrepancia enorme, pero también demuestra que las aplicaciones de una arquitectura ayudan a definir su importancia. Por eso fue tan importante en 2020 cuando Apple presentó el chip M1 para sus nuevos ordenadores. Si Apple cambiaba de x86 a ARM, ¿qué significaba eso para el futuro de x86?

Sin embargo, x86 sigue dominando el mercado informático. Ordenadores de sobremesa, portátiles y servidores siguen basándose principalmente en la arquitectura x86.

ARM, por su parte, suele estar en smartphones y tabletas. Y, por supuesto, en tu humilde Raspberry Pi. Sin embargo, parece que ARM podría empezar a apoderarse también del mundo de la informática.

smartphone sobre la mesa

Está claro que RISC-V espera hacerse con una parte del espacio de la arquitectura ARM, pero sigue abierto a lo que pueda hacer en el futuro. Tanto las universidades como la industria invierten en RISC-V y siguen de cerca su desarrollo.

Si ARM ha empezado a recortar distancias con x86, ¿empezará RISC-V a recortar distancias con ARM?

Modelo de licencia

La más restrictiva de las tres es la x86. Como he mencionado antes, en realidad sólo dos empresas fabrican chips de arquitectura x86: Intel y AMD. Los chips no son personalizables y la arquitectura es totalmente propietaria.

La arquitectura ARM funciona de forma diferente, debido al modelo de licencias. Una licencia ARM típica no permite crear un diseño de arquitectura ARM. Sin embargo, hay excepciones, porque el chip M1 de Apple fue previsiblemente personalizado a sus deseos.

La arquitectura RISC-V es de código abierto y libre de derechos, lo que permite a cualquiera diseñar y fabricar procesadores RISC-V sin pagar licencias. Es como el Linux de los ISA.

Curiosamente, Intel y AMD son miembros de RISC-V International. Así que está claro que también creen que es valioso contribuir a la arquitectura RISC-V.

Ecosistema

El ecosistema de RISC-V está creciendo rápidamente, con muchas empresas e investigadores que contribuyen a proyectos de código abierto y desarrollan productos basados en RISC-V.

Aunque el ecosistema del software no es enorme por el momento, está creciendo. Puedes ver su evolución con el proyecto RISE (RISE son las siglas de RISC-V Software Ecosystem).

ARM y x86 dominan sus respectivos mercados. Los ecosistemas de ambos están bien establecidos y son amplios.

Este es uno de los inconvenientes más claros de RISC-V. Simplemente no tiene una amplia adopción de los otros dos. Sencillamente, no tiene la adopción generalizada de los otros dos y la competencia es feroz.

RISC y CISC en acción

En este fantástico vídeo de El programador [Fill in the Blank]puedes ver exactamente cómo funcionan RISC y CISC a nivel de código ensamblador.

Aquí puedes ver en detalle la diferencia entre RISC y CISC.

En ARM y RISC-V, el código ensamblador tiene líneas más cortas, pero más numerosas. En x86, las líneas de Ensamblador son más complejas, pero hay menos.

El vídeo explica cómo el compilador GCC y el compilador Clang transforman el código C++ en ensamblador para cada uno de los tres ISA: ARM, RISC-V y x86_64. Échale un vistazo:

Conclusión:

Recientemente publicamos un artículo en el que comparamos la Orange Pi 5 Plus con Raspberry Pi 5 y Rock 5 Modelo B. Curiosamente, aunque los tres SBC están basados en ARM, Radxa tiene un modelo x86 llamado Roca Pi X.

A algunos les preocupa que una mayor adopción de RISC-V provoque una mayor fragmentación. Esto se corresponde perfectamente con la comparación con Linux. ¿Cuántas distribuciones de Linux hay hoy en día? Sin embargo, la comunidad RISC-V trabaja activamente en el desarrollo de estándares para minimizar los problemas de fragmentación y compatibilidad.

Muchos (incluidos algunos detractores) ven en RISC-V una forma de impulsar la arquitectura de chips hacia el futuro.

Por supuesto, con las guerras comerciales entre países, las cosas se ponen mucho más difíciles. Arm Ltd. tiene su sede en el Reino Unido e Intel y AMD, en Estados Unidos. No es de extrañar que países como China y Rusia se decanten por RISC-V.

Sin embargo, hay quien piensa que RISC-V está condenado al fracaso. Argumentan que RISC-V no sólo causa fragmentación, sino que RISC-V ya es fragmentada. Y, por tanto, no despegará.

Actualizacióne (Novem6 de enero de 2023): Arm Holdings acaba de anunciar que ha adquirido una participación minoritaria en Raspberry Pi Ltd. (RPI). No está claro qué significa esto para el futuro. Puede leer más aquí:

¿Qué opina usted? ¿Es RISC-V el futuro? Háznoslo saber en los comentarios.

3 Comentarios

  1. tozo el noviembre 6, 2023 a las 1:13 pm

    Como ya he mencionado, en realidad sólo tres empresas fabrican chips de arquitectura x86: Intel y AMD.
    Es decir... sólo dos 🙂 .

    • Adam el noviembre 7, 2023 a las 12:36 pm

      Toda la razón - ¡gracias, tozo!

  2. Bruce Hoult el noviembre 8, 2023 a las 10:27 pm

    Creo que es un poco injusto contar la edad de RISC-V a partir de la fecha en que unos investigadores universitarios estaban en un pub (o lo que fuera) en 2010 y decidieron empezar a diseñar su propio ISA, mientras que los demás se cuentan a partir de cuando se introdujo el primer chip comercial en el mercado.

    La ISA pasó por múltiples versiones incompatibles a medida que evolucionaban las ideas, tanto a nivel del lenguaje ensamblador como en la codificación binaria.

    El primer chip RISC-V que se podía comprar, el FE310 de SiFive, salió en diciembre de 2016 en la placa clónica HiFive1 Arduino. Es solo un microcontrolador, con solo las instrucciones de modo Usuario. Las instrucciones y CSRs de modo Máquina y modo Supervisor estuvieron en desarrollo activo y cambios incompatibles hasta no mucho antes de que la ISA base fuera ratificada (congelada, publicada) en julio de 2019. SiFive sacó un SBC Linux, HiFive Unleashed (con el SoC FU540) a principios de 2018, con unos 500 fabricados, pero era experimental y estaban preparados para que quedara huérfano si se hacían cambios incompatibles en la ISA antes de la ratificación.

    Creo que la fecha justa del "origen de RISC-V" está en algún lugar entre la publicación de la Arquitectura Privilegiada 1.10 en mayo de 2017 y la ratificación en julio de 2019. Seguro que no es 2010.

    En otro orden de cosas, observo que el 8086 era, con diferencia, el menos CISC de los chips CISC y ésta es una de las principales razones por las que pudo sobrevivir en la era RISC (los miles de millones del IBM PC y sus clones también ayudaron mucho). VAX, M68000, Z8000, NS 16032/32032 eran demasiado complejos para ser rápidos.

    "Desde los años 90, los procesadores x86 también incluyen instrucciones SIMD (Single Instruction, Multiple Data) para tareas de procesamiento paralelo. Esto permite que los procesadores multinúcleo también funcionen con rapidez". No tienen nada que ver.

    "La arquitectura RISC-V es de código abierto y libre de derechos, lo que permite a cualquiera diseñar y fabricar procesadores RISC-V sin pagar licencias. Es como el Linux de los ISA". Cierto, pero diseñar uno propio cuesta mucho más que obtener una licencia de uno de los doce proveedores comerciales de núcleos RISC-V (con modelos de negocio muy similares a los de Arm).

Deja un comentario