Búsqueda de sitios web

arm vs aarch64 vs amd64 vs x86_64: ¿Cuál es la diferencia?


Hay muchísimos términos cuando se trata de CPU: aarch64, x86_64, amd64, arm y más. Aprenda qué son y en qué se diferencian entre sí.

¿Es usted alguien que se confunde con términos como ARM, AArch64, x86_64, i386, etc. cuando ve una hoja de datos? o página de descargas de un software? Estas se denominan arquitecturas de CPU y lo ayudaré a sumergirse en este tema de la informática.

A continuación se muestra una tabla que le proporcionará un buen resumen de lo que significa cada cadena:

x86_64/x86/amd64

Mismo nombre para CPU AMD/Intel de 64 bits

AArch64/arm64/ARMv8/ARMv9

Mismo nombre para CPU ARM de 64 bits

i386

CPU AMD/Intel de 32 bits

AArch32/arm/ARMv1 to ARMv7

Mismo nombre para CPU ARM de 32 bits

rv64gc/rv64g

Mismo nombre para CPU RISC-V de 64 bits

ppc64le

CPU PowerPC de 64 bits
con ordenamiento de memoria little-endian

Leer de izquierda a derecha es la preferencia de usar ese término para describir la arquitectura de la CPU sobre los otros términos usados alternativamente a su derecha.

Si eres un nerd como yo y quieres una explicación más detallada, ¡sigue leyendo!

Descripción general: arquitecturas de CPU

Los términos que enumeré anteriormente, en términos generales, son arquitecturas de CPU. Aunque, hablando pedantemente, esto es lo que un ingeniero informático llama CPU ISA (Arquitectura de conjunto de instrucciones).

Una CPU ISA es lo que define cómo su CPU interpreta los 1 y 0 del binario.

Hay algunos superconjuntos de estos ISA de CPU.

  • x86 (AMD/Intel)

  • BRAZO

  • RISC-V

  • PowerPC (aún vivo en IBM)

Hay más ISA de CPU como MIPS, SPARC, DEC Alpha, etc. Pero los que mencioné anteriormente son los que todavía se usan ampliamente en la actualidad (en cierta medida).

Las ISA enumeradas anteriormente tienen al menos dos subconjuntos. Esto se basa principalmente en el ancho del bus de memoria. El ancho del bus de memoria indica cuántos bits se pueden transferir entre la CPU y la RAM de una sola vez. Hay varios anchos para el bus de memoria, pero los dos anchos más importantes son el bus de memoria de 32 bits y el bus de memoria de 64 bits.

💡
Las contrapartes de 32 bits de las CPU ISA son una reliquia del pasado, se mantienen vivas para soporte heredado o solo se usan en microcontroladores. Es seguro asumir que cualquier hardware nuevo es de 64 bits (especialmente el hardware orientado al consumidor).

x86 (AMD/Intel)

La CPU ISA x86 proviene principalmente de Intel, ya que Intel fue quien la creó en primer lugar con el microprocesador 8085. El microprocesador 8085 tenía un bus de memoria de 16 bits de ancho. Más tarde, AMD entró en el juego y siguió los pasos de Intel hasta que AMD creó su propia arquitectura superconjunto de 64 bits, superando a Intel.

Los subconjuntos de la arquitectura x86 son los siguientes:

  • i386: si posee una CPU anterior a 2007, es probable que esta sea la arquitectura de su CPU. Se trata de la "variante" de 32 bits de la arquitectura x86 actualmente conocida de AMD/Intel.

  • x86_64/x86/amd64: los tres términos se usan indistintamente según el proyecto que analice. Pero todos se refieren a la "variante" de 64 bits de la arquitectura x86 AMD/Intel. De todos modos, la cadena x86_64 se usa ampliamente (y se prefiere) sobre x86 y amd64. Un ejemplo de esto es que el proyecto FreeBSD se refiere a la arquitectura x86 de 64 bits como amd64 mientras que Linux y macOS se refieren a ella como x86_64.

💡
Dado que AMD venció a Intel en la creación de una ISA de 64 bits, algunos proyectos como FreeBSD se refieren a la variante de 64 bits de x86 como amd64. Pero el término más aceptado sigue siendo x86_64< b>.

La cadena x86 para CPU ISA es especial. Verá, durante la transición de x86 de 32 bits (i386) a x86 de 64 bits (x86_64), los proveedores de CPU se aseguraron de que la CPU pudiera ejecutar ambos, 32 Instrucciones de -bit y de 64 bits. Por lo tanto, a veces cuando lees x86, también puede significar "Se ejecutará solo en una computadora de 64 bits, pero si esa computadora puede ejecutar instrucciones de 32 bits, puedes ejecutar software de usuario de 32 bits". en eso."

Esta ambigüedad de x86, es decir, procesadores de 64 bits que también pueden ejecutar código de 32 bits, se debe principalmente a los sistemas operativos que se ejecutan en procesadores de 64 bits, pero permiten al usuario de dicho sistema operativo ejecutar 32 bits. software. Windows hace uso de esto con una característica llamada "modo de compatibilidad".

Recapitulemos, existen dos arquitecturas de CPU para las CPU diseñadas por AMD e Intel. Son de 32 bits (i386) y de 64 bits (x86_84).

inteligencia adicional

(¡Sí! Soy gracioso)

El ISA x86_64 también tiene subconjuntos. Todos estos subconjuntos son de 64 bits pero tienen varias características agregadas. Especialmente instrucciones SIMD (Instrucción única de datos múltiples).

  • x86_64-v1: El ISA x86_64 base con el que casi todo el mundo está familiarizado. Cuando alguien dice x86_64, lo más probable es que se esté refiriendo al ISA x86_64-v1.

  • x86_64-v2: esto agrega más instrucciones como SSE3 (Streaming SIMD Extensions 3) como extensiones.

  • x86_64-v3: ¡Agrega instrucciones como AVX (Advance Vector eXtensions) y AVX2 que pueden usar registros de CPU de hasta 256 bits de ancho! Esto puede paralelizar enormemente sus cálculos si puede aprovecharlo.

  • x86_64-v4: itera sobre el ISA x86_64-v3 agregando más instrucciones SIMD como extensiones. Como AVX256 y AVX512. ¡Este último puede utilizar registros de CPU de hasta 512 bits de ancho!

BRAZO

ARM es una empresa que crea su propia especificación para una CPU ISA, diseña y licencia sus propios núcleos de CPU y también permite a otras empresas diseñar sus propios núcleos de CPU utilizando ARM CPU ISA. (¡La última parte parecía una consulta SQL!)

Es posible que haya oído hablar de ARM debido a los SBC (computadoras de placa única) como la línea de SBC Raspberry Pi. Pero sus CPU también se utilizan mucho en teléfonos móviles. Recientemente, Apple pasó de los procesadores x86_64 a utilizar su propio diseño de procesadores ARM en sus ofertas de computadoras portátiles y de escritorio.

Como cualquier arquitectura de CPU, existen dos subconjuntos según el ancho del bus de memoria.

Los nombres oficialmente reconocidos para las arquitecturas ARM de 32 y 64 bits son AArch32 y AArch64 respectivamente. La cadena 'AArch' significa 'Arquitectura de brazo'. Estos son modos en los que puede estar una CPU para ejecutar instrucciones.

La especificación real de una instrucción que cumple con la CPU ISA de ARM se denomina ARMvX donde X se refiere a una generación. número de una especificación. Hasta la fecha, ha habido 9 versiones principales de esta especificación. Desde ARMv1 hasta ARMv7, que define una especificación de arquitectura de CPU para CPU de 32 bits. Mientras que ARMv8 y ARMv9 son especificaciones para las CPU ARM de 64 bits. (Más información aquí.)

💡
Cada especificación de CPU ARM tiene más subespecificaciones. Tomando ARMv8 como ejemplo, tenemos ARMv8-R, ARMv8-A, ARMv8.1-A, ARMv8.2-A, ARMv8.3-A, ARMv8.4-A, ARMv8.5-A, ARMv8.6- A, ARMv8.7-A, ARMv8.8-A y ARMv8.9-A. -A significa "Núcleos de aplicaciones" y -R significa "Núcleos en tiempo real".

Quizás se pregunte por qué algunas personas lo llaman arm64 incluso cuando AArch64 es el nombre oficialmente reconocido para la arquitectura ARM de 64 bits. La razón es doble:

  1. El nombre arm64 se popularizó antes de que ARM decidiera AArch64. (ARM también se refiere a la arquitectura ARM de 64 bits como arm64 en parte de su documentación oficial... 😬)

  2. A Linus Torvalds no le gusta el nombre AArch64. Por lo tanto, el código base de Linux se refiere en gran medida a AArch64 como arm64. Pero seguirá informando aarch64 cuando hagas un uname -m.

Por lo tanto, para CPU ARM de 32 bits, debe buscar la cadena AArch32 pero a veces también puede ser arm o armv7. De manera similar, para las CPU ARM de 64 bits, debe buscar la cadena AArch64 pero a veces también puede ser arm64 o ARMv8 o . ARMv9.

RISC-V

RISC-V es una especificación de código abierto de una CPU ISA. ¡Esto no significa que las CPU en sí sean de código abierto! Es un estándar, algo así como Ethernet. La especificación Ethernet es de código abierto, pero los cables, enrutadores y conmutadores que usted compra cuestan dinero. Lo mismo ocurre con las CPU RISC-V. :)

Sin embargo, esto no ha impedido que las personas creen núcleos RISC-V que están disponibles gratuitamente (como diseños; no como núcleos físicos/SoC) bajo una licencia de código abierto. He aquí uno de esos esfuerzos.

💡
TL;DR: Debería buscar la cadena rv64gc si busca software para ejecutar en CPU de consumo RISC-V. Esto es lo que han acordado una gran cantidad de distribuciones de Linux.

Al igual que cualquier arquitectura de CPU, RISC-V tiene arquitecturas de CPU de 32 y 64 bits. Dado que RISC-V es muy nuevo (en términos de CPU ISA), todos los principales núcleos de CPU en el lado del consumidor/cliente suelen ser CPU de 64 bits. Los diseños de 32 bits son en su mayoría microcontroladores que tienen un caso de uso muy específico.

En lo que sí se diferencian son en las extensiones de CPU. La extensión mínima absoluta que uno necesita implementar para ser llamado CPU RISC-V es el 'Conjunto de instrucciones de entero base' (rv64i).

Una tabla de algunas extensiones y la descripción es la siguiente:

rv64i

Conjunto de instrucciones de enteros básicos de 64 bits (obligatorio)

m

Instrucciones de multiplicación y división.

a

instrucciones atómicas

f

Instrucciones de punto flotante de precisión simple

d

Instrucciones de punto flotante de doble precisión

g

Alias; Una colección de extensiones necesarias para ejecutar un sistema operativo gde uso general (incluye imafd)

c

Instrucciones comprimidas

En la cadena rv64i, rv significa RISC-V, 64 indica que se trata de una arquitectura de CPU de 64 bits y i es la extensión para el conjunto de instrucciones de entero base obligatorio. La razón por la que rv64i se escribe junto es porque, aunque la extensión i es una "extensión", es obligatoria.

La convención es tener el nombre de la extensión en el orden específico indicado anteriormente. Entonces rv64g se expande a rv64imafd, no a rv64adfim.

💡
Hay otras extensiones como Zicsr y Zifencei que se ubican entre las extensiones d y g, pero no las incluí deliberadamente para no asustarte.

Entonces, técnicamente (al momento de escribir este artículo) rv64g es en realidad rv64imafdZicsrZifencei. risa malvada

PowerPC

PowerPC era una arquitectura de CPU muy popular en los primeros días de la asociación entre Apple, IBM y Motorola. Fue la arquitectura de CPU que Apple utilizó en toda su línea de consumo hasta que cambiaron de PowerPC al x86 de Intel.

PowerPC inicialmente tenía ordenamiento de memoria big-endian. Más tarde, cuando se introdujo una arquitectura de 64 bits, se agregó una opción para usar little-endianness. Esto se hizo para ser compatible con el orden de memoria de Intel (para evitar errores de software), que siempre ha sido little-endian. Podría seguir y seguir sobre el endianismo, pero será mejor que le sirva este documento de Mozilla para aprender más sobre el endianismo.

Dado que la endianidad también es un factor aquí, existen 3 arquitecturas de PowerPC:

  • powerpc: La arquitectura PowerPC de 32 bits.

  • ppc64: la arquitectura PowerPC de 64 bits con ordenación de memoria big-endian.

  • ppc64le: la arquitectura PowerPC de 64 bits con ordenamiento de memoria little-endian.

A partir de ahora, ppc64le se usa ampliamente.

Conclusión

Existen muchas arquitecturas de CPU disponibles. Para cada arquitectura de CPU, existen subconjuntos de 32 y 64 bits. Hay CPU que ofrecen arquitecturas x86, ARM, RISC-V y PowerPC.

El x86 es la arquitectura de CPU más amplia y fácilmente disponible, ya que es la que utilizan Intel y AMD. También hay ofertas de ARM que se utilizan casi exclusivamente en teléfonos móviles y SBC accesibles.

RISC-V realiza un esfuerzo continuo para hacer que el hardware sea más accesible. Tengo un SBC que tiene una CPU RISC-V;)

PowerPC se encuentra principalmente en servidores, al menos por el momento.