En un comentario a esta respuesta, Kortuk pregunta cuál es la ventaja de ARM . Primero agregué algunos argumentos en mi respuesta, pero creo que la pregunta es lo suficientemente interesante como para ser una pregunta en sí misma, por lo que son posibles más respuestas.
61
Respuestas:
El rendimiento es una ventaja. Al ser un procesador de 32 bits, supera (casi) a todos los controladores de 8 bits DMIPS. El núcleo también ha pasado por varias generaciones, optimizaciones de lectura.
Estas optimizaciones no solo se muestran en los números de rendimiento, sino también en el consumo de energía . El núcleo más reciente ha duplicado su relación DMIPS / mW en comparación con la generación anterior (ver también esta respuesta ).
ARM está disponible de muchos fabricantes , más que cualquier otro microcontrolador, y cada uno tiene una serie de versiones para elegir, con diferentes combinaciones de periféricos en chip y memoria, y paquetes. Caso en cuestión: NXP ofrece no menos de 35 controladores con Ethernet en chip .
Los BRAZOS sonde bajo costo ; ARM fue probablemente el primer controlador de 32 bits que rompió la barrera del USD 1.
Esta combinación de rendimiento , amplia oferta y bajo costo hace que simplemente no pueda ignorar ARM:
fuente
Un punto aún no mencionado: en 1908, un tipo llamado Sr. PL Robertson inventó una nueva cabeza y tornillo mejorados . Quería ser la única persona que fabricara tornillos y controladores para su diseño. Décadas después, alguien más llamado Sr. Henry F. Phillips ideó un diseño alternativo . A diferencia del Sr. Robertson, el Sr. Phillips estaba más interesado en licenciar su diseño que en producir tornillos y controladores.
Del mismo modo, en la década de 1970, a Sony se le ocurrió una tecnología llamada Betamax ; A JVC se le ocurrió uno llamado VHS. Sony estaba interesado en producir videograbadoras; JVC estaba más interesado en las licencias.
Parece que hay un patrón aquí. (Nota: por un tiempo, Intel sí otorgó la licencia de su tecnología 80x86 , pero durante décadas se ha centrado más en desarrollar tecnologías para su uso interno).
fuente
El mismo hardware / software para desarrollar para los ARM de todos los proveedores. Usted compra JLINK / ULINK y algo de Keil IDE una vez, y puede usarlo para desarrollar, emular y depurar casi cualquier BRAZO en un planeta.
No es necesario aprender una nueva arquitectura al cambiar a un nuevo proveedor de chips => menos proveedor lockin => más competencia => precios más bajos
En los procesos tecnológicos modernos (0.18um y menos) el núcleo ARM es tan pequeño que sacrificarlo por un núcleo de 8 bits no ahorraría ninguna fracción visible de un precio. De ahí la razón de optar por una arquitectura estándar de alto rendimiento pero barata.
Rendimiento: solo con ARM puede tener un solo reloj 32 * 32-> 32 multiplicación y soporte de hardware para 32 * 32-> 64 y división para dispositivos sub-1dollar (es decir, STM32 de gama baja, por ejemplo)
ARM no es demasiado codicioso y no cobra tarifas irrazonables por las licencias, por lo que los fabricantes pueden producir micros baratos.
fuente
Me estoy centrando en los procesadores ARM de gama media por estos motivos:
Soporte completo de Linux
Esto significa controladores de dispositivo casi gratis. Ya hice suficiente host USB y código de dispositivo, ya no quiero hacer ESO. Tampoco estoy muy emocionado por tratar de agregar TCP / IP a una plataforma de procesador aleatorio (aunque LwIP / uIP no es tan malo). Nunca intenté usar Wi-Fi, una pila Bluetooth real, cámaras web, etc. Usar Linux significa que es mucho más fácil hablar con una amplia gama de dispositivos.
También me sorprendió lo racional y fácil que es escribir controladores de dispositivos Linux. Después de hacer algunos controladores de dispositivos con Windows, Linux es un sueño. (Para ser justos, el marco del controlador de Windows ha mejorado mucho desde que lo estaba haciendo).
La plataforma de software también es increíble. Obtengo cifrado SSL, sistemas de archivos, administración remota, actualizaciones fáciles de aplicaciones (copie un archivo en lugar de un cargador de arranque complejo), etc. Ah, y muchas utilidades existentes si necesita hacer algo.
También es libre de regalías y es mucho más fácil someterse a su voluntad que decir que sería una plataforma WinCE de código cerrado . (No es que sea realmente un idealista de código abierto ... todo es un razonamiento muy práctico para mí).
Estoy hablando de núcleos ARM con MMU reales , por lo que esto es para los chips de gama media a alta (aunque podría usar μClinux , supongo).
El consumo de energía
Esto es básicamente una repetición de los comentarios de otros, pero es un gran factor para mí. Mi plataforma ARM actual de 454 MHz consume 1/2 vatio, 1 vatio con CPU máxima. Ni siquiera puedes acercarte a eso con x86.
Ese es más o menos mi razonamiento. No veo que la ecuación cambie pronto.
fuente
El ARM ha pasado por una progresión:
La arquitectura ARM permite que algunas operaciones bastante sofisticadas se realicen muy rápidamente, mucho más rápido que en cualquier otro chip. Por ejemplo (usando ARM7-TDMI):
Cada controlador se almacena como un byte, que proporciona 1/4 del desplazamiento de la dirección desde el inicio de la tabla. El efecto neto es que una vez que se ha obtenido el contenido del bus de direcciones, solo se necesitan seis ciclos (dos instrucciones) para saltar a un controlador basado en los cinco bits superiores del recuperado, utilizando una tabla de salto de 32 bytes.
El código THUMB correspondiente sería más parecido a:
Eso está bien desde el punto de vista de la densidad del código, dado que las instrucciones son solo la mitad de grandes que las originales, pero tomarían nueve ciclos después de la búsqueda en lugar de seis. En una aplicación donde el bus que se está viendo va a funcionar a su propia velocidad, ya sea que el ARM haya logrado manejarlo o no, las instrucciones ARM más rápidas son una gran ventaja.
Por cierto, Thumb2 es compatible binariamente con Thumb, lo que facilita el uso de herramientas anteriores, pero significa que hay algunas cosas que no puede hacer tan bien como el ARM original. Por ejemplo, en ARM, uno podría "rotar" un mapa de bits de 8x8 contenido en cuatro registros usando aproximadamente 3 instrucciones por dos bits:
En Thumb2, sería necesario agregar instrucciones condicionales explícitas:
Reducción neta del 33% en eficiencia de tiempo y espacio en comparación con ARM; probablemente sea el peor de los casos en que el código Thumb sea menos eficiente que ARM, e incluso eso no es exactamente horrible.
Otra pequeña desventaja de Thumb2 en comparación con ARM: en el código ARM, todas las instrucciones comienzan en los límites de palabras completas, lo que facilita el análisis estático. En Thumb2, las instrucciones pueden comenzar arbitrariamente en límites de media palabra y abarcar límites de palabra completa. El análisis estático puede ser mucho más difícil.
fuente
Un poco es historia, Acorn quería una CPU personalizada (por ejemplo, con controles de memoria incorporados, etc.) para una nueva computadora en la década de 1980 (el 6502 de 8 bits limitaba lo que podían hacer). Hablaron con Intel, pero Intel no les autorizó una CPU.
Así que Acorn diseñó una CPU RISC muy simple, pero como no eran fabricantes de CPU, estaban dispuestos a licenciarla a cualquiera (¡y necesitaban todo el dinero rápido que pudieran obtener!). (Creo que la CPU funcionó por primera vez, en parte porque era muy simple y también el diseñador ha creado muchas CPU de investigación mientras estaba en la Universidad de Cambridge).
Con los años, el diseño de la CPU se hizo cada vez más fácil de incluir en el diseño del chip del cliente.
El fabricante de chips sintió una licencia segura de Acorn, ya que no eran competidores. Además, nadie pensó que irían a la ciudad natal de un competidor para obtener una licencia, ya que Acorn estaba en Cambridge (¡la verdadera!) . (La posibilidad de un viaje de "búsqueda de hechos" a Cambridge para visitar Acorn influye en la lista de opciones en corto en cualquier momento ...)
Muchos de los diseños que incluyen la CPU de la máquina Acorn Risc fueron para el sistema embebido donde el uso de energía era importante. También se crearon herramientas de desarrollo baratas y buenas para la CPU Acorn Risc Machine.
Entonces, cuando los teléfonos móviles comenzaron a necesitar chips personalizados con una CPU integrada, Acorn pasó a llamarse ARM y el resto es historia. (Tal vez también fue un poco que las otras CPU estaban controladas principalmente por los EE. UU., Pero los móviles se volvieron normales en Europa)
(¿Algo de esto le recuerda a Microsoft y Dos con un pequeño equipo desconocido de IBM?)
El hecho de que el ARM fuera una de las mejores CPU en ese momento (y todavía lo es) para muchas tareas también ayudó, pero tener el "mejor" diseño de CPU no es suficiente.
fuente
Dejando a un lado los problemas técnicos, hay muchas razones no técnicas para ARM. Pero la respuesta rápida es esta: no es Intel (o x86).
Si observamos dónde se invierten los dólares de I + D de la CPU en este momento, se dividen básicamente en dos campos: ARM e Intel. (Estoy ignorando los MCU pequeños, y estoy agregando AMD con Intel.) Hay muy poco dinero para PowerPC, MIPS, SPARC y otras CPU grandes. ARM e Intel son los únicos que siguen en pie.
Con Intel y otras CPU x86 obtienes una gran cantidad de equipaje heredado. Por ejemplo, necesita un conjunto de chips, un BIOS y otras cosas. Incluso si la CPU era súper eficiente en energía, esos otros dispositivos tienden a pesar su sistema y hacerlo más grande, más hambriento de energía y más costoso. Solo desarrollar una PCB con una CPU Intel es un gran problema, y luego debe negociar con un proveedor de BIOS, etc. Para empeorar las cosas, muchos de los proveedores de conjuntos de chips, BIOS, chips de video, etc. simplemente no quieren hacer negocios con la gente pequeña que no venderá menos de un millón de unidades al año.
Con ARM, no tienes ese equipaje. Hay muchas fuentes de chips, desde líneas de microcontroladores hasta monstruos multinúcleo. No necesita lidiar con la licencia de un BIOS (que es muy similar a ir a un vendedor de autos usados). Y los fabricantes y vendedores son generalmente amables con usted.
fuente
Compare ARM7 / ARM9 con MIPS IV y hay pocas ventajas además de los problemas de licencia ya mencionados. Las partes internas del conjunto de instrucciones MIPS y el bus interno lo hacen superior (rendimiento por costo) para ciertos tipos de diseños; Es por eso que muchos enrutadores Wi-Fi usan núcleos MIPS en lugar de núcleos ARM.
Dado que los núcleos ARM se aplicaron principalmente a dispositivos portátiles, los ASIC agregaron más funciones de control de potencia, mientras que MIPS se enfoca más en el rendimiento por ciclo en lugar de una menor potencia. El beneficio de RISC sobre Intel x86 es una discusión diferente.
fuente
No hay ventajas reales. El DSP adjunto y otros controladores, como GSM, es lo que los hace tan populares.
fuente