En un comentario a esta respuesta Kortuk pide lo que el BRAZO ventaja es. Primero me agrega algunos argumentos en mi respuesta, pero creo que la pregunta es lo suficientemente interesante como para ser una cuestión en sí misma, por lo que más respuestas son posibles.
Respuestas
¿Demasiados anuncios?El rendimiento es una ventaja. Al ser un procesador de 32 bits supera a (casi) todos los 8 bits de los controladores de DMIPS sabio. El núcleo también ha pasado a través de varias generaciones, lea las optimizaciones.
Estas mejoras no sólo se muestra en las cifras de rendimiento, pero en el consumo de energía también. La más reciente del núcleo se ha duplicado su DMIPS/mW proporción en comparación con la generación anterior (ver también esta respuesta).
El BRAZO está disponible en un gran muchos fabricantes, más que cualquier otro microcontrolador, y cada uno tiene un número de versiones para elegir, con diferentes combinaciones de chip de los periféricos y la memoria, y los paquetes. Caso en cuestión: NXP ofrece no menos de 35 controladores con chip de Ethernet.
Los brazos son de bajo costo; el BRAZO fue probablemente la primera de 32 bits del controlador para romper el USD 1 barrera.
Esta combinación de rendimiento, amplia oferta y de bajo costo hacer que usted simplemente no puede ignorar el BRAZO:
En 2005, alrededor de 98 por ciento de todos los teléfonos móviles el uso de al menos uno de los brazos-diseñado core en sus placas base, de acuerdo a la investigación de la firma de analistas de la Linley Group. (fuente)
El mercado de la telefonía móvil tiene también otro efecto. Los teléfonos móviles son muy limitados de espacio y la demanda de pequeños paquetes. NXP del LPC1102 viene en un WLP-16 paquete de solo 5 mm\$^2\$, una escala que antes sólo se utiliza por la baja de pin-recuento de 8 bits microcontroladores.
Un punto no mencionado aún: En 1908, un hombre llamado Señor P. L. Robertson inventado una nueva mejora de la cabeza del tornillo y el conductor. Quería ser la única persona a la fabricación de tornillos y controladores para su diseño. Décadas más tarde, alguien llamado Señor Henry F. Phillips llegó con un diseño alternativo. A diferencia de el Señor Robertson, el Señor Phillips estaba más interesado en la concesión de licencias de su diseño que en la producción de tornillos y de los conductores.
Del mismo modo, en la década de 1970, Sony se acercó con una tecnología llamada Betamax; JVC vino para arriba con uno llamado VHS. Sony estaba interesado en la producción de aparatos de vídeo; JVC estaba más interesado en la concesión de licencias.
No parece haber un patrón aquí. (Nota: Para un rato, Intel hizo licencia de su 80x86 de la tecnología, pero ha sido por décadas se centró más en el desarrollo de tecnologías para su uso interno)
Mismo hardware/software a desarrollar para el BRAZO de todos los vendedores. Comprar JLINK/ULINK y algunos Keil IDE una vez, y se puede utilizar para desarrollar, emular y depuración de casi cualquier BRAZO en un planeta.
No hay necesidad de aprender una nueva arquitectura al pasar a un nuevo chip vendor => menos vendor lock-in => más competencia => bajar los precios
En la moderna tecnología de procesos(0.18 um y abajo) núcleo ARM es tan pequeña que, sacrificando para 8bit central no guardar cualquier visible fracción del precio. De ahí la razón de ir para el estándar de alto rendimiento, sin embargo hoteles de la arquitectura.
El rendimiento sólo con el BRAZO puede tener un solo reloj de 32*32->32 multiplicación y soporte de hardware de 32*32->64 y la división de sub-1dollar dispositivos (es decir, de gama baja STM32 por ejemplo)
El BRAZO no es demasiado codicioso, y no carga irrazonable tasas de licencias, por lo que los fabricantes pueden producir hoteles de micros.
Pues yo no veo Linux mencionado en profundidad pero, voy a mencionar. Me estoy centrando en la gama media de procesadores ARM por estas razones:
1) Completa el soporte de Linux
Esto significa que los controladores de dispositivo casi gratis. He hecho lo suficiente USB host y el dispositivo de código, no quiero hacer ESO. Tampoco estoy demasiado emocionado tratando de agregar TCP/IP al azar a una plataforma de procesador (aunque lwIP/uIP no es tan mala). Nunca he intentado hacer Wifi, una verdadera pila bluetooth, cámaras web, etc. El uso de Linux significa una muy amplia gama de dispositivos convertido en mucho más fácil hablar.
También quedé muy sorprendido de cómo racional y fácil de escribir Linux controladores de dispositivo. Después de hacer algunos controladores de dispositivo de Windows en Linux es un sueño. (Para ser justos, el controlador de Windows marco ha mejorado mucho desde que me lo estaba haciendo)
La plataforma de software también es impresionante. Puedo obtener el cifrado SSL, sistemas de ficheros, gestión remota, fácil de actualizaciones de la aplicación (copiar a un archivo en lugar de un complejo gestor de arranque), etc. Ah, y un montón de utilidades existentes si necesita algo.
También es libre de derechos de autor y mucho más fáciles de doblar a su voluntad que, por ejemplo un código cerrado WinCE una de las plataformas. (No soy mucho de una fuente abierta de idealista... es todo muy razonamiento práctico para mí)
Estoy hablando de un BRAZO núcleos reales MMUs, así que esto es para mediados de gama alta de fichas (Aunque podría usar ucLinux supongo)
2) consumo de Energía
Esto es básicamente una repetición de otros comentarios, pero es un gran factor para mí. Mi actual 454MHz BRAZO de la plataforma de sorteos de 1/2 watt, de 1 vatio en el máximo de la CPU. Usted no puede incluso llegar a que con x86.
Eso es más o menos de mi razonamiento. No veo la ecuación de cambiar en cualquier momento pronto.
El BRAZO se ha ido a través de una progresión:
- Una versión de 32 bits de instrucciones de la arquitectura, que había más voluminoso código que muchas otras arquitecturas, pero que podría ser decodificado rápidamente y podría hacer muchas operaciones con menos instrucciones que compiten arquitecturas
- Un doble-instrucción-formato de arquitectura, que podría cambiar entre el buen y potente (pero lamentablemente algo hinchado) BRAZO del conjunto de instrucciones, y menos potentes (pero mucho más compacto) de 16 bits "Pulgar" del conjunto de instrucciones. Cada Pulgar instrucción corresponde a un BRAZO de instrucción, minimizar un poco la necesidad de que los programadores a aprender dos conjuntos de instrucciones.
- Un Thumb2 arquitectura, que agrega dos palabras instrucciones para el Pulgar conjunto de instrucciones, produciendo lo que es en su mayoría un ganar-ganar: típico BRAZO código contienen una mezcla de instrucciones que sólo estaban disponibles en el BRAZO, y las instrucciones que habrían estado disponibles en el Pulgar, pero tenía que ser representada como de 32 bits de todos modos; en Thumb2, código obtiene el espacio de los beneficios de la sustitución de algunas de las instrucciones de 32 bits con 16 bits.
- Un Pulgar-sólo arquitectura, que es más limitante que me había cuidado, pero es más pequeño y más barato que cualquiera de los otros.
La arquitectura ARM permite algunas más sofisticadas que las operaciones se realiza de forma muy rápida, mucho más rápidamente que en cualquier otro chip. Por ejemplo (usando ARM7-TDMI):
ldrh r0,[r10,#ADDR_BUS_OFS] ; Leer sistema de destino dirección de bus (13 bits) ldrb r1,[r9,r0,lsr #8] ; el Uso de bits más altos para buscar la dirección en una tabla de controladores agregar pc,r9,r1 lsl #2 ; Ir a controlador apropiado
Cada controlador se almacena como un byte, lo que da 1/4 de la dirección de desplazamiento desde el inicio de la tabla. Efecto neto es que una vez que el contenido de la dirección de bus se han recuperado, se tarda sólo seis ciclos (dos instrucciones) para saltar a un controlador basado en la parte superior de cinco bits de la recuperados, mediante un 32 bytes saltar de la tabla.
Correspondiente PULGAR código sería más como:
; Suponiendo que no necesitamos r6/r7 para cualquier otra cosa, son reasignados de r9 y r10 ldrh r0,[r7,#ADDR_BUS_OFS] mov r1,r0 lsr r1,r1,#8 ; PULGAR requiere de origen y de destino a ser el mismo ldrb r1,[r6,r1] lsl r1,r1,#1 ; Podría utilizar el desplazamiento a la izquierda-dos, si las direcciones de destino se completa palabra alineada agregar pc,r1
Eso está muy bien, desde un punto de vista de la densidad del código, dado que las instrucciones son sólo la mitad del tamaño de los originales, pero tardaría nueve ciclos después de la captura en lugar de seis. En una aplicación donde el autobús de ser visto se va a ejecutar a su propia velocidad si o no el BRAZO ha sabido manejar, el más rápido del BRAZO instrucciones son un gran plus.
Por cierto, Thumb2 es compatible a nivel binario con el Pulgar, lo que facilita el uso de las herramientas anteriores, pero significa que hay algunas cosas que no puede hacerlo tan bien como el original del BRAZO. Por ejemplo, en el BRAZO, uno puede "rotar" un 8x8 de mapa de bits que se celebraron en cuatro registros utilizando unos 3 instrucciones por dos bits:
varistores mov r0,r4,lsl #25 ; Poner la parte superior de bits de LSB en C y el siguiente bit en N orrcs r6,#0 x 00000001 orrmi r6,#0 x 00000100
En Thumb2, sería necesario añadir explícitas instrucciones condicionales:
varistores mov r0,r4,lsl #25 ; Poner la parte superior de bits de LSB en C y el siguiente bit en N las tics orrcs r6,#0 x 00000001 itmi orrmi r6,#0 x 00000100
Net 33% de reducción en el tiempo y en el espacio de la eficacia en comparación con el BRAZO; que es probablemente el peor ejemplo de caso de Pulgar código es menos eficiente que el BRAZO, y aun que no es exactamente horrible.
Otra ligera desventaja de Thumb2 en comparación con el BRAZO: en el BRAZO de un código, todas las instrucciones de inicio en los límites de la palabra, facilitando el análisis estático. En Thumb2, instrucciones arbitrariamente puede comenzar en la mitad-los límites de la palabra y la combinación completa de los límites de la palabra. Análisis estático por lo tanto puede ser mucho más difícil.