CUESTIÓN A

x86 y ARM



Aspectos básicos

Tanto el ARM como el x86 son conjuntos de instrucciones o ISA (del inglés Instruction Set Architecture, que significa “Arquitectura del Conjunto de Instrucciones”).
Con los términos x86 y ARM nos referimos principalmente a los procesadores, pero también se usa dichos términos para referirse a los lenguajes de programación que usan.

Lenguaje de programación

Los lenguajes de programación de ARM y x86 son a bajo nivel. Eso significa que los programas que se creen para arquitecturas x86 serán inservibles en procesadores ARM y viceversa.
A parte, ambos usan lenguaje ensamblador (un lenguaje de programación intermedio entre alto nivel como por ejemplo C++ y binario).

x86

Está basado en la arquitectura CISC (Complex instruction set computing o “Computador con Conjunto de Instrucciones Complejas”) con soporte para instrucciones complejas, simultáneas y de ejecución más lenta, que a pesar de simplificar la estructura de programación lo que se acaba obteniendo es un alto desempeño, que desafortunadamente viene acompañado de un mayor consumo de energía y también de la necesidad de más espacio físico.

ARM

Son de tipo RISC (Reduced Instruction Set Computer, que quiere decir “Ordenador con Conjunto Reducido de Instrucciones”), cuyas propiedades son que poseen instrucciones de tamaño fijo con pocos formatos y que sólo las instrucciones de carga y almacenamiento acceden a la memoria de datos. El objetivo de diseñar máquinas con esta arquitectura es facilitar el paralelismo en la ejecución de instrucciones y permitir realizar tareas menores con procesos más cortos lo que al final conlleva una disminución de la energía empleada.

Diferencias

Debido a todo lo citado anteriormente, x86 está pensado para operaciones complejas permitiendo que se ejecute con mayor velocidad, mientras que ARM está pensado para operaciones sencillas optimizando el consumo de energía necesario para ejecutar la operación.

Qué es mejor para qué

Tradicionalmente lo que más se usa en PC es el x86, el cual ya estaba popularizado desde los años 80 (ARM no aparecería hasta mediados de los años 80), además de conforme la tecnología avanzaba se iban desarrollando programas más complejos, lo cual hace que el x86 sea lo más apropiado.
En dispositivos móviles, lo que más se usa es el ARM, ya que los citados dispositivos tienen un uso limitado ya que dependen de una batería que se acaba agotando, por lo que es necesario optimizar el consumo de energía para que dure el máximo tiempo posible.

X86 en la actualidad

La arquitectura x86 es de 32 bits con compatibilidad con PCs de 16 bits, mientras que los PCs de hoy en día tienen procesadores de 64 bits, lo cual hace que la arquitectura x86 este obsoleta. En la actualidad existe el x86-64, que es una actualización del x86 a los 64 bits.

ARM en la actualidad

Como los dispositivos móviles están cada vez ganando más popularidad, la arquitectura ARM esta cada vez ganando más importancia en el mercado. El ARM también es un sistema de 32 bits, aunque eso no importa debido a que los dispositivos móviles son aparatos menos potentes que los dispositivos de sobremesa, aunque debido a la rápida evolución de los móviles modernos, es probable que eso acabe cambiando y ARM se tenga que actualizar al igual que x86.

Otros datos

Los chips que usan el lenguaje x86 fueron inventados por la empresa Intel en 1978, mientras que los chips que usan ARM es propiedad de la multinacional ARM Holdings (compuesta por las empresas Acorn Computers, Apple Inc. y VLSI Technology, siendo la primera la que desarrollo originalmente la arquitectura ARM en el 1986). Aunque de por sí, ambas empresas tienen patentes por las que solo ellas pueden usar sus respectivas arquitecturas, ARM Holdings permite que otras empresas usen ARM previo pago por la licencia, mientras que Intel es más restrictiva, por lo que prácticamente la única empresa que también usa la tecnología del x86 es AMD (y lo logra aprovechándose de las leyes anti-monopolio de EE.UU.), lo cual ha ayudado aún más a la propagación de ARM en detrimento del x86.