¿La arquitectura x86 está especialmente diseñada para funcionar con un teclado mientras ARM espera ser móvil? ¿Cuáles son las diferencias clave entre los dos?
¿La arquitectura x86 está especialmente diseñada para funcionar con un teclado mientras ARM espera ser móvil? ¿Cuáles son las diferencias clave entre los dos?
Respuestas:
ARM
es una arquitectura RISC (Computación de conjunto de instrucciones reducidas) mientras que x86
es una arquitectura CISC (Computación de conjunto de instrucciones complejas).
La diferencia principal entre aquellos en este aspecto es que las instrucciones ARM operan solo en registros con unas pocas instrucciones para cargar y guardar datos desde / a la memoria, mientras que x86 también puede operar directamente en la memoria. Hasta v8 ARM era una arquitectura nativa de 32 bits, que favorecía las operaciones de cuatro bytes sobre otras.
Por lo tanto, ARM es una arquitectura más simple, que conduce a un área de silicio pequeña y muchas funciones de ahorro de energía, mientras que x86 se convierte en una bestia de potencia en términos de consumo de energía y producción.
Acerca de la pregunta sobre " ¿Está la arquitectura x86 especialmente diseñada para funcionar con un teclado mientras ARM espera ser móvil? ". x86
no está especialmente diseñado para funcionar con un teclado ni ARM
para dispositivos móviles. Sin embargo, una vez más, debido a las principales opciones arquitectónicas, en realidad x86 también tiene instrucciones para trabajar directamente, IO
mientras que ARM no. Sin embargo, con buses IO especializados como USB, la necesidad de tales características también está desapareciendo.
Si necesita un documento para cotizar, esto es lo que la Guía de Programadores de la Serie Cortex-A (4.0) le informa sobre las diferencias entre las arquitecturas RISC y CISC:
Un procesador ARM es un procesador de computadora de conjunto de instrucciones reducido (RISC).
Los procesadores de computadora de conjunto de instrucciones complejas (CISC), como el x86, tienen un rico conjunto de instrucciones capaz de hacer cosas complejas con una sola instrucción. Dichos procesadores a menudo tienen cantidades significativas de lógica interna que decodifican las instrucciones de la máquina en secuencias de operaciones internas (microcódigo).
Las arquitecturas RISC, por el contrario, tienen un número menor de instrucciones de uso más general, que podrían ejecutarse con significativamente menos transistores, lo que hace que el silicio sea más barato y más eficiente. Al igual que otras arquitecturas RISC, los núcleos ARM tienen una gran cantidad de registros de propósito general y muchas instrucciones se ejecutan en un solo ciclo. Tiene modos de direccionamiento simples, donde todas las direcciones de carga / almacenamiento se pueden determinar a partir del contenido del registro y los campos de instrucciones.
La empresa ARM también proporciona un artículo titulado Arquitecturas, procesadores y artículos de desarrollo de dispositivos que describe cómo esos términos se aplican a su negocio.
Un ejemplo que compara la arquitectura del conjunto de instrucciones:
Por ejemplo, si necesita algún tipo de bloque de comparación de memoria bytewise en su aplicación (generado por el compilador, omitiendo detalles), así es como podría verse en x86
repe cmpsb /* repeat while equal compare string bytewise */
mientras que en la ARM
forma más corta podría verse (sin verificación de errores, etc.)
top:
ldrb r2, [r0, #1]! /* load a byte from address in r0 into r2, increment r0 after */
ldrb r3, [r1, #1]! /* load a byte from address in r1 into r3, increment r1 after */
subs r2, r3, r2 /* subtract r2 from r3 and put result into r2 */
beq top /* branch(/jump) if result is zero */
lo que debería darle una pista sobre cómo los conjuntos de instrucciones RISC y CISC difieren en complejidad.
Ninguno de los dos tiene nada específico para el teclado o el móvil, aparte del hecho de que durante años ARM ha tenido una ventaja bastante sustancial en términos de consumo de energía, lo que lo hizo atractivo para todo tipo de dispositivos que funcionan con baterías.
En cuanto a las diferencias reales: ARM tiene más registros, predicción admitida para la mayoría de las instrucciones mucho antes de que Intel lo agregue, y ha incorporado durante mucho tiempo todo tipo de técnicas (llámelas "trucos", si lo prefiere) para ahorrar energía en casi todas partes.
También hay una diferencia considerable en cómo codifican las dos instrucciones. Intel utiliza una codificación de longitud variable bastante compleja en la que una instrucción puede ocupar desde 1 hasta 15 bytes. Esto permite que los programas sean bastante pequeños, pero hace que la decodificación de instrucciones sea relativamente difícil (como en: decodificar rápidamente las instrucciones en paralelo es más como una pesadilla completa).
ARM tiene dos modos de codificación de instrucciones diferentes: ARM y THUMB. En el modo ARM, obtiene acceso a todas las instrucciones, y la codificación es extremadamente simple y rápida de decodificar. Desafortunadamente, el código del modo ARM tiende a ser bastante grande, por lo que es bastante común que un programa ocupe aproximadamente el doble de memoria que el código Intel. El modo de pulgar intenta mitigar eso. Todavía utiliza una codificación de instrucciones bastante regular, pero reduce la mayoría de las instrucciones de 32 bits a 16 bits, como reducir el número de registros, eliminar la predicación de la mayoría de las instrucciones y reducir el rango de ramas. Al menos en mi experiencia, esto todavía no suele dar bastantetan denso de codificación como puede llegar a ser el código x86, pero está bastante cerca, y la decodificación sigue siendo bastante simple y directa. Una densidad de código más baja significa que generalmente necesita al menos un poco más de memoria y (generalmente más en serio) una memoria caché más grande para obtener un rendimiento equivalente.
Hubo un tiempo en que Intel puso mucho más énfasis en la velocidad que en el consumo de energía. Comenzaron a enfatizar el consumo de energía principalmente en el contexto de las computadoras portátiles. Para las computadoras portátiles, su objetivo de energía típico era del orden de 6 vatios para una computadora portátil bastante pequeña. Más recientemente ( mucho más recientemente) comenzaron a apuntar a dispositivos móviles (teléfonos, tabletas, etc.) Para este mercado, están buscando un par de vatios más o menos. Parece que les está yendo bastante bien en eso, aunque su enfoque ha sido sustancialmente diferente al de ARM, enfatizando la tecnología de fabricación donde ARM ha enfatizado principalmente la microarquitectura (no es sorprendente, considerando que ARM vende diseños y deja la fabricación a otros).
Dependiendo de la situación, el consumo de energía de una CPU a menudo es más importante que su consumo de energía. Al menos mientras uso los términos, el consumo de energía se refiere al uso de energía de forma instantánea (más o menos). Sin embargo, el consumo de energía se normaliza para la velocidad, por lo que si (por ejemplo) la CPU A consume 1 vatio durante 2 segundos para realizar un trabajo, y la CPU B consume 2 vatios durante 1 segundo para realizar el mismo trabajo, ambas CPU consumen la misma cantidad total de energía (dos vatios segundos) para hacer ese trabajo, pero con la CPU B, obtienes resultados el doble de rápido.
Los procesadores ARM tienden a funcionar muy bien en términos de consumo de energía. Entonces, si necesita algo que necesita la "presencia" de un procesador casi constantemente, pero que realmente no está haciendo mucho trabajo, pueden funcionar bastante bien. Por ejemplo, si está haciendo videoconferencia, reúne unos pocos milisegundos de datos, los comprime, los envía, recibe datos de otros, los descomprime, los reproduce y repite. Incluso un procesador realmente rápido no puede pasar mucho tiempo durmiendo, por lo que para tareas como esta, ARM funciona muy bien.
Los procesadores de Intel (especialmente sus procesadores Atom, que en realidad están destinados a aplicaciones de baja potencia) son extremadamente competitivos en términos de consumo de energía. Mientras corren cerca de su velocidad máxima, consumirán más energía que la mayoría de los procesadores ARM, pero también terminan el trabajo rápidamente, por lo que pueden volver a dormir antes. Como resultado, pueden combinar una buena duración de la batería con un buen rendimiento.
Entonces, al comparar los dos, debe tener cuidado con lo que mide, para asegurarse de que refleje lo que honestamente le importa. ARM funciona muy bien en el consumo de energía, pero dependiendo de la situación, es posible que le importe más el consumo de energía que el consumo de energía instantáneo.
Adicional al primer párrafo de Jerry Coffin . Es decir, el diseño ARM ofrece un menor consumo de energía.
La compañía ARM
, solo licencia la tecnología de CPU. No hacen chips físicos. Esto permite que otras compañías agreguen varias tecnologías periféricas, típicamente llamadas SOC o sistema en chip. Si el dispositivo es una tableta, un teléfono celular o un sistema de entretenimiento en el automóvil. Esto permite a los proveedores de chips adaptar el resto del chip a una aplicación en particular. Esto tiene beneficios adicionales,
ARM
apoya a los proveedores de SOC con AMBA , lo que permite a los implementadores de SOC comprar módulos de terceros disponibles; como una Ethernet, memoria y controladores de interrupción. Algunas otras plataformas de CPU admiten esto, como MIPS , pero MIPS no es tan consciente de la energía.
Todos estos son beneficiosos para un diseño portátil / con batería. Algunos son buenos por todas partes. Además, ARM
tiene un historial de dispositivos que funcionan con baterías; Apple Newton , Organizadores Psion . La infraestructura del software PDA fue aprovechada por algunas compañías para crear dispositivos de tipo teléfono inteligente . Aunque, quienes reinventaron la GUI tuvieron más éxito para usarla con un teléfono inteligente .
El auge de los Open source
conjuntos de herramientas y operating systems
también facilitó los diversos SOC
chips. Una organización cerrada tendría problemas para tratar de admitir todos los dispositivos disponibles para ARM. Las dos plataformas celulares más populares, Andriod y OSx / IOS, están basadas en sistemas operativos Linux y FreeBSD, Mach y NetBSD . Open Source
ayuda a los SOC
proveedores a proporcionar soporte de software para sus conjuntos de chips.
Con suerte, por qué x86 se usa para el teclado es evidente. Tiene el software y, lo que es más importante, personas capacitadas para usar ese software. Netwinder es un ARM
sistema que fue diseñado originalmente para el teclado . Además, los fabricantes actualmente están buscando ARM64 para el mercado de servidores. La energía / calor es una preocupación en los centros de datos 24/7.
Entonces diría que el ecosistema que crece alrededor de estos chips es tan importante como características como el bajo consumo de energía. ARM
ha estado luchando por la computación de bajo consumo y alto rendimiento durante algún tiempo (mediados a fines de la década de 1980) y tienen mucha gente a bordo.
Nota 1: varios chips necesitan controladores de bus para comunicarse entre sí a voltajes y unidades conocidas. Además, típicamente los chips separados necesitan condensadores de soporte y otros componentes de potencia que se pueden compartir en un sistema SOC .
El ARM es como un auto deportivo italiano:
El x86 es como un muscle car estadounidense:
En resumen: el x86 se basa en un diseño de 1974 y es bueno en línea recta (pero consume mucho combustible). El brazo usa poco combustible, no disminuye la velocidad en las esquinas (ramas).
Metáfora terminada, aquí hay algunas diferencias reales.
La arquitectura ARM se diseñó originalmente para computadoras personales Acorn (consulte Acorn Archimedes , circa 1987 y RiscPC ), que eran tanto computadoras personales basadas en teclado como modelos de PC IBM x86. Solo las implementaciones posteriores de ARM se dirigieron principalmente al segmento de mercado móvil e integrado.
Originalmente, las CPU RISC simples de rendimiento más o menos equivalente podrían ser diseñadas por equipos de ingeniería mucho más pequeños (ver Berkeley RISC ) que aquellos que trabajan en el desarrollo x86 en Intel.
Pero, hoy en día, los chips ARM más rápidos tienen unidades de despacho de instrucciones fuera de orden de múltiples problemas muy complejas diseñadas por grandes equipos de ingeniería, y los núcleos x86 pueden tener algo así como un núcleo RISC alimentado por una unidad de traducción de instrucciones.
Por lo tanto, cualquier diferencia actual entre las dos arquitecturas está más relacionada con las necesidades específicas del mercado de los nichos de productos a los que se dirigen los equipos de desarrollo. (Opinión aleatoria: ARM probablemente gane más en las tarifas de licencia de las aplicaciones integradas que tienden a ser mucho más limitadas en cuanto a potencia y costo. E Intel necesita mantener una ventaja de rendimiento en PC y servidores por sus márgenes de beneficio. Por lo tanto, usted ve diferentes optimizaciones de implementación).