¿Qué tiene de bueno ARM?

61

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.

revs stevenvh
fuente
1
Sus respuestas parecen ser constructivas en las preguntas menos constructivas, pero me preocupa que otros escriban respuestas muy obstinadas. Veremos si las personas intentan obstaculizar la barra que ha establecido.
Kortuk
@Kortuk: siéntase libre de editar la redacción de la pregunta o el título si cree que puede ayudar a obtener mejores respuestas. (Era su pregunta de todos modos)
stevenvh
55
Esta pregunta es pedir una guerra religiosa. Si no fuera por las personas que preguntan y comentan, votaría para cerrar esto de inmediato. Recuerda, sabes que siempre tienes razón y que el otro tipo es un pagano bárbaro cuando es cuestión de fe. Que comience la jihad ...
Olin Lathrop
@olinLathrop, eso es lo que estoy mirando. Actualmente parece que estamos obteniendo respuestas de muy alta calidad sin disputas. Probablemente haré de esto un CW a largo plazo y permitiré que viva el cebo de Google junto con información interesante sobre el brazo. Normalmente habría cerrado esto por completo, pero @stevenvh lo abrió con una gran respuesta y parece haber establecido un tono de calidad.
Kortuk

Respuestas:

51

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:

En 2005, alrededor del 98 por ciento de todos los teléfonos móviles usan al menos un núcleo diseñado por ARM en sus placas base, según una investigación de la firma de analistas Linley Group. ( fuente )

2

revs stevenvh
fuente
1
Solo puedo agregar, que ARM definitivamente es el primer micro de 32 bits en romper el precio de 0.5 $ (Cortex M0 en cantidad)
BarsMonster
@Barsmonster - ¡Genial! Parece que el único futuro para 8 bits es en DFN de 2 mm x 3 mm
stevenvh
@self, y tal vez ni siquiera eso. Vea la adición sobre el LPC1102 en mi respuesta.
stevenvh
@stevenvh - Bueno, todavía existe la ventaja del consumo de energía. El modo de suspensión LPC1102 @ 12MHz usa 1mA. No está mal, pero unas 1000 veces más que un [16 bit] msp430.
Imbrondir
1
@self - Rasca esa ventaja también. Después de algunas búsquedas, parece que Energy Micro tiene un M3 que en modo de reposo + RTC puede bajar a 0.6uA.
Imbrondir
37

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).

Peter Mortensen
fuente
44
Si. Creo que el esquema de licencia para la propiedad intelectual ARM es la causa del éxito.
10
ARM permite una gran flexibilidad con sus licencias. Si solo necesita la IP para un par de núcleos, no cuesta demasiado. Pero si desea hacer un chip muy personalizado, totalmente optimizado por sus diseñadores de chips, eso cuesta más, pero es una opción disponible. Entonces, una empresa como Apple puede desarrollar su propia línea de procesadores optimizados para su aplicación. La mayoría de las compañías no dejarían que gran parte de las joyas de la corona fuera de su control.
Mike DeSimone
Es importante tener en cuenta que ARM no compite con la línea x86 de Intel (ni siquiera en el espacio en el que se ejecutan los nuevos procesadores Atom). Si su respuesta estaba destinada a implicar eso, es incorrecta. Las arquitecturas Intel Moorestown y Medfield (están destinadas a) competir en el mismo espacio que ARM.
Marcar el
1
Han pasado años desde que la línea 80x86 de Intel ha sido competitiva en los tipos de aplicaciones donde se usaría un ARM hoy en día, pero los modelos 8088, 8086, 80286 y 80386, todos con licencia, eran populares con los sistemas integrados. Mi comentario sobre Intel fue principalmente para reconocer que Intel es popular hoy a pesar del hecho de que no tiene licencia como el ARM.
supercat
@supercat: Intel otorga muchas licencias de IP flexible en estos días. También proporciona herramientas de diseño y SIP para el diseño de FPGA ( intel.com/content/www/us/en/fpga/ip-and-design-tools.html )
jbord39
32
  1. 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.

  2. 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

  3. 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.

  4. 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)

  5. ARM no es demasiado codicioso y no cobra tarifas irrazonables por las licencias, por lo que los fabricantes pueden producir micros baratos.

BarsMonster
fuente
27

Me estoy centrando en los procesadores ARM de gama media por estos motivos:

  1. 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).

  2. 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.

darron
fuente
2
Relacionado: Múltiples opciones RTOS.
Steve S
La mayor parte de su respuesta es tan aplicable a la mayoría de las arquitecturas de CPU que existen para ARM. Muchos de ellos son aplicables a 2) también. La lista de arquitecturas soportadas por Linux es LARGA y ARM es solo una de ellas.
Marcar el
19

El ARM ha pasado por una progresión:

  1. Una arquitectura de instrucciones de 32 bits, que tenía un código más voluminoso que muchas otras arquitecturas, pero que podía decodificarse rápidamente y podía realizar muchas operaciones con menos instrucciones que las arquitecturas de la competencia.
  2. Una arquitectura de formato de instrucción dual, que podría cambiar entre el conjunto de instrucciones ARM agradable y potente (pero desafortunadamente algo hinchado), y un conjunto de instrucciones "Thumb" de 16 bits menos potente (pero mucho más compacto). Cada instrucción Thumb tenía su correspondiente instrucción ARM, lo que minimiza un poco la necesidad de que los programadores aprendan dos conjuntos de instrucciones.
  3. Una arquitectura Thumb2, que agregó instrucciones de dos palabras al conjunto de instrucciones Thumb, produciendo lo que es principalmente un win-win: el código ARM típico contendría una combinación de instrucciones que solo estaban disponibles en ARM, e instrucciones que hubieran estado disponibles en Thumb pero tuvo que ser representado como 32 bits de todos modos; en Thumb2, dicho código obtiene los beneficios de espacio al reemplazar algunas de las instrucciones de 32 bits por otras de 16 bits.
  4. Una arquitectura de solo pulgar, que es más limitante de lo que me gustaría, pero que es más pequeña y más barata que cualquiera de las otras.

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):

  ldrh r0, [r10, # ADDR_BUS_OFS]; Leer el bus de dirección del sistema de destino (13 bits)
  ldrb r1, [r9, r0, lsr # 8]; Use los bits superiores para buscar la dirección en una tabla de controladores
  agregue pc, r9, r1 lsl # 2; Ir al manejador apropiado

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:

; Asumiendo que no necesitamos r6 / r7 para nada más, se reasignan desde r9 / r10
  ldrh r0, [r7, # ADDR_BUS_OFS]
  mov r1, r0
  lsr r1, r1, # 8; THUMB requiere que la fuente y el destino sean iguales
  ldrb r1, [r6, r1]
  lsl r1, r1, # 1; Podría usar shift-left-two, si las direcciones de destino estuvieran alineadas con palabras completas
  agregar pc, r1

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:

  movs r0, r4, lsl # 25; Coloque el bit superior de LSB en C y el siguiente bit en N
  orrcs r6, # 0x00000001
  orrmi r6, # 0x00000100

En Thumb2, sería necesario agregar instrucciones condicionales explícitas:

  movs r0, r4, lsl # 25; Coloque el bit superior de LSB en C y el siguiente bit en N
  itcs
  orrcs r6, # 0x00000001
  itmi
  orrmi r6, # 0x00000100

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.

supercat
fuente
14

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.

Ian Ringrose
fuente
Acorn RISC Machine en realidad se renombra a Advanced RISC Machines (que explica ARM). Además, solo la rama de CPU ARM de Acorn se independizó y se conoce como Advanced RISC Machines. Bellota continuó el desarrollo de su sistema operativo RISC y creo que ahora también es conocido por este último.
jippie
13

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.

usuario3624
fuente
2
No ignore los MCU pequeños. ARM también está obteniendo una gran parte de ese mercado con su serie Cortex-M. Lo pensaría dos veces en estos días sobre el uso de un controlador de 32 bits que no sea ARM.
Mike DeSimone
Sí, estoy de acuerdo @Mike. ARM actualmente está intentando expandirse al mercado de alta potencia que Intel domina como los servidores. Son conocidos por sus microcontroladores de rango medio-alto y microprocesadores de rango medio-bajo
Kortuk
Intel licencia más IP en estos días (especialmente con la adquisición de Altera). Ver: intel.com/content/www/us/en/fpga/ip-and-design-tools.html por ejemplo.
jbord39
12

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.

Peter Mortensen
fuente
1
Tenga en cuenta que la línea PIC 32 de Microchip usa el núcleo MIPS. MIPS, por lo tanto, también está disponible en paquetes pequeños, baratos, independientes y de baja potencia. Además, puede usar MPLAB en ellos, que es algo que no puede hacer con ningún ARM.
Olin Lathrop
El otro comentario que escucho de los diseñadores de ASIC es que es difícil trabajar con ARM AHB y APB (tal vez debido a problemas de licencia o diseño por separado). Mientras que los autobuses MIPS son de alguna manera más fáciles. Significado: el núcleo es una cosa; Los periféricos fuera del núcleo también necesitan consideración.
Jonathan Cline
-8

No hay ventajas reales. El DSP adjunto y otros controladores, como GSM, es lo que los hace tan populares.

Peter Mortensen
fuente
3
otras respuestas parecen estar en desacuerdo.
Kortuk
1
-1 ¡Todo en la Tierra tiene ventajas y desventajas!
RHaguiuda