En quoi ARM est-il génial?

61

Dans un commentaire à cette réponse Kortuk demande ce que l'avantage ARM est . J'ai d'abord ajouté quelques arguments dans ma réponse, mais je pense que la question est suffisamment intéressante pour être une question en soi, de sorte que davantage de réponses soient possibles.

stevenvh
la source
1
vos réponses semblent être constructives sur les questions les moins constructives, mais je crains que d’autres écrivent des réponses très avisées. Nous verrons si les gens tentent de franchir la barre que vous avez définie.
Kortuk
@ Kortuk - N'hésitez pas à modifier le libellé de la question ou le titre si vous pensez que cela peut aider à obtenir de meilleures réponses. (C'était quand même votre question)
Steven
5
Cette question demande une guerre de religion. Si ce n’était pas les gens qui demandaient et commentaient, je voterais pour que cela se termine immédiatement. N'oubliez pas que vous savez que vous avez toujours raison et que l'autre est un païen barbare lorsqu'il s'agit de foi. Que le djihad commence ...
Olin Lathrop
@olinLathrop, c'est ce que je recherche. Actuellement, il semble que nous obtenons des réponses de très haute qualité sans querelles. Je vais probablement en faire une CW à long terme et laisser vivre l'appât Google. J'aurais normalement normalement fermé cette porte, mais @stevenvh l'a ouverte avec une excellente réponse et semble avoir donné le ton de la qualité.
Kortuk

Réponses:

51

La performance est un avantage. En tant que processeur 32 bits, il surpasse (presque) tous les contrôleurs 8 bits en termes de DMIPS. Le noyau a également traversé plusieurs générations, optimisations de lecture.
Ces optimisations ne montrent pas seulement les performances, mais également la consommation électrique . Le noyau le plus récent a doublé son ratio DMIPS / mW par rapport à la génération précédente (voir aussi cette réponse ).
ARM est proposé par un grand nombre de fabricants , plus que n’importe quel autre microcontrôleur, et chacun d’entre elles est disponible en plusieurs versions, avec différentes combinaisons de périphériques sur puce, de mémoire et de packages. Exemple: NXP ne propose pas moins de 35 contrôleurs avec Ethernet sur puce .
Les armes sontpeu coûteux ; ARM a probablement été le premier contrôleur 32 bits à franchir la barre des 1 USD.

Cette combinaison de performance , d’ offre étendue et de faible coût fait que vous ne pouvez tout simplement pas ignorer ARM:

En 2005, environ 98% de tous les téléphones mobiles utilisent au moins un cœur conçu par ARM sur leurs cartes mères, selon une étude réalisée par le cabinet d’analyses Linley Group. ( source )

Le marché de la téléphonie mobile a également un autre effet. Les téléphones mobiles sont très limités en espace et nécessitent de petits paquets. Le LPC1102 de NXP est fourni dans un boîtier WLP-16 de seulement 5 mm sur , une échelle précédemment utilisée uniquement par les microcontrôleurs 8 bits à faible nombre de broches.2

stevenvh
la source
1
Je ne peux que rajouter que ce micro ARM est sans conteste le premier micro 32 bits à franchir la barre des 0,5% de prix (Cortex M0 en montant)
BarsMonster le
@Barsmonster - Cool! On dirait que le seul avenir pour le 8 bits est le format DFN de 2mm x 3mm
stevenvh
@self - et peut-être même pas cela. Voir l’ajout concernant le LPC1102 dans ma réponse.
stevenvh
@stevenvh - Eh bien, il reste l'avantage de la consommation d'énergie. Le mode veille LPC1102 à 12 MHz utilise 1 mA. Pas mal, mais environ 1000 fois plus qu'un msp430 [16 bits].
Imbrondir
1
@self - Grattez cet avantage aussi. Après quelques recherches, Energy Micro semble avoir un M3 qui en mode veille + RTC peut descendre à 0,6 µA.
Imbrondir
37

Un point qui n’a pas encore été mentionné: en 1908, un certain M. PL Robertson a inventé une nouvelle tête de vissage améliorée . Il voulait être le seul à fabriquer des vis et des tournevis à sa conception. Des décennies plus tard, un autre nom, M. Henry F. Phillips, a proposé un autre modèle . Contrairement à M. Robertson, M. Phillips était plus intéressé par la licence de son dessin que par la production de vis et de pilotes.

De même, dans les années 1970, Sony a mis au point une technologie appelée Betamax ; JVC est venu avec un appelé VHS. Sony était intéressé par la production de magnétoscopes. JVC était plus intéressé par les licences.

Il semble y avoir une tendance ici. (Remarque: pendant un certain temps, Intel a licencié sa technologie 80x86 , mais depuis des décennies, elle se concentre davantage sur le développement de technologies destinées à son usage interne.)

Peter Mortensen
la source
4
Oui. Je pense que le régime de licence de la propriété intellectuelle ARM est la cause du succès.
10
ARM permet une très grande flexibilité avec ses licences. Si vous avez juste besoin de l’IP pour quelques cœurs, cela ne coûte pas trop cher. Mais si vous voulez créer une puce hautement personnalisée, entièrement optimisée par vos concepteurs, cela coûte plus cher, mais c'est une option disponible. Ainsi, une entreprise comme Apple peut développer sa propre gamme de processeurs optimisés pour leur application. La plupart des entreprises ne laissent pas une grande partie des joyaux de la couronne échapper à leur contrôle.
Mike DeSimone
Il est important de noter qu'ARM n'entre pas en concurrence avec la gamme x86 d'Intel (même dans l'espace occupé par les nouveaux processeurs Atom). Si votre réponse était censée impliquer cela, c'est inexact. Les architectures d'Intel de Moorestown et de Medfield (sont censées être) en concurrence dans le même espace qu'ARM.
Mark
1
Cela fait une éternité que la gamme 80x86 d’Intel est compétitive dans les types d’application où un ARM serait utilisé aujourd’hui, mais les systèmes 8088, 8086, 80286 et 80386, tous sous licence, étaient populaires auprès des systèmes embarqués. Mon commentaire à propos d'Intel visait principalement à reconnaître qu'Intel est populaire aujourd'hui, malgré le fait qu'il ne soit pas sous licence comme l'ARM.
Supercat
@supercat: Intel achète beaucoup de soft IP de nos jours. Il fournit également des outils de conception et SIP pour la conception FPGA ( intel.com/content/www/us/en/fpga/ip-and-design-tools.html )
jbord39
32
  1. Même matériel / logiciel à développer pour les bras de tous les fournisseurs. Vous achetez une fois JLINK / ULINK et certains IDE Keil et pouvez l’utiliser pour développer, émuler et déboguer presque tous les bras sur une planète.

  2. Nul besoin d'apprendre la nouvelle architecture lors du passage à un nouveau fournisseur de puces => moins de blocage des fournisseurs => plus de concurrence => des prix plus bas

  3. Dans les processus technologiques modernes (0,18 µm et moins), le coeur ARM est si petit que le sacrifier pour un coeur 8 bits n’économise aucune fraction visible du prix. D'où la raison d'opter pour une architecture standard à la fois performante et économique.

  4. Performances - avec ARM uniquement, vous pouvez bénéficier d'une multiplication d'horloge unique 32 * 32-> 32, d'une prise en charge matérielle pour 32 * 32-> 64 et d'une division pour les périphériques sub-1dollar (notamment les modèles STM32 bas de gamme, par exemple).

  5. ARM n’est pas trop gourmand et ne facture pas de frais déraisonnables pour les licences, de sorte que les fabricants peuvent produire des micros bon marché.

BarsMonster
la source
27

Je me concentre sur les processeurs ARM de milieu de gamme pour ces raisons:

  1. Prise en charge complète de Linux

    Cela signifie que les pilotes de périphériques sont presque gratuits. J'ai fait assez de code hôte et périphérique USB, je ne veux plus faire CELA. Je ne suis pas non plus ravi d’essayer d’ajouter TCP / IP à une plate-forme de processeur aléatoire (même si LwIP / uIP n’est pas si mauvais). Je n'ai même jamais essayé de faire du Wi-Fi, une vraie pile Bluetooth, des webcams, etc. Utiliser Linux signifie qu'il est beaucoup plus facile de parler à un très grand nombre d'appareils.

    J'ai également été vraiment étonné de la rationalité et de la simplicité d'écriture des pilotes de périphérique Linux. Après avoir fait quelques pilotes de périphériques Windows, Linux est un rêve. (Pour être juste, le framework de pilotes Windows s'est beaucoup amélioré depuis que je le faisais.)

    La plateforme logicielle est également géniale. Je reçois le cryptage SSL, les systèmes de fichiers, la gestion à distance, les mises à jour faciles des applications (copier un fichier au lieu d'un chargeur de démarrage complexe), etc. Oh, et de nombreux utilitaires existants si vous avez besoin de quelque chose.

    Il est également gratuit et beaucoup plus facile de vous plier à votre volonté qu’une plate-forme WinCE à source fermée . (Non pas que je suis vraiment un idéaliste open source ... c'est un raisonnement très pratique pour moi.)

    Je parle de cœurs ARM avec de véritables MMU , il s’agit donc de puces de taille moyenne à élevée (bien que vous puissiez utiliser μClinux, je suppose).

  2. Consommation d'énergie

    C'est en gros une répétition des commentaires des autres, mais c'est un facteur important pour moi. Ma plate-forme ARM actuelle à 454 MHz consomme 1/2 watt, 1 watt avec un maximum de ressources processeur. Vous ne pouvez même pas vous en approcher avec x86.

C'est à peu près mon raisonnement. Je ne vois pas l'équation changer de sitôt.

darron
la source
2
Connexe: Plusieurs options RTOS.
Steve S
La majeure partie de votre réponse s’applique aussi bien à la plupart des architectures de CPU qu’à ARM. Beaucoup d'entre eux s'appliquent également à 2). La liste des architectures supportées par Linux est LONG et ARM n’est que l’une d’elles.
Mark
19

L'ARM a connu une progression:

  1. Une architecture d'instructions 32 bits, avec un code plus volumineux que beaucoup d'autres architectures, mais pouvant être décodée rapidement et permettant d'effectuer de nombreuses opérations avec moins d'instructions que les architectures concurrentes
  2. Une architecture au format double instruction, qui pourrait basculer entre le jeu d’instructions ARM agréable et puissant (mais malheureusement quelque peu saturé), et un jeu d’instructions "Thumb" 16 bits moins puissant (mais beaucoup plus compact). Chaque instruction Thumb avait une instruction ARM correspondante, minimisant quelque peu la nécessité pour les programmeurs d'apprendre deux jeux d'instructions.
  3. Une architecture Thumb2, qui a ajouté des instructions de deux mots au jeu d'instructions Thumb, produisant ce qui est principalement avantageux pour tous: le code ARM typique contiendrait un mélange d'instructions uniquement disponibles dans ARM, et d'instructions qui auraient été disponibles dans Thumb. mais devait être représenté comme 32 bits de toute façon; dans Thumb2, un tel code tire parti des avantages d'espace du remplacement de certaines instructions 32 bits par des instructions 16 bits.
  4. Une architecture exclusivement basée sur le pouce, qui est plus contraignante que je ne l'aimerais, mais qui est plus petite et moins chère que toutes les autres.

L'architecture ARM permet d'effectuer très rapidement certaines opérations sophistiquées, beaucoup plus rapidement que sur n'importe quelle autre puce. Par exemple (en utilisant ARM7-TDMI):

  ldrh r0, [r10, # ADDR_BUS_OFS]; Lire le bus d'adresse système cible (13 bits)
  ldrb r1, [r9, r0, lsr # 8]; Utiliser les bits supérieurs pour rechercher une adresse dans un tableau de gestionnaires
  ajoutez pc, r9, r1 lsl # 2; Aller au gestionnaire approprié

Chaque gestionnaire est stocké sous forme d'octet, ce qui donne 1/4 du déplacement d'adresse à partir du début de la table. L’effet net est que, une fois que le contenu du bus d’adresses a été extrait, il ne faut que six cycles (deux instructions) pour accéder à un gestionnaire basé sur les cinq bits supérieurs de l’extraction, à l’aide d’une table de sauts de 32 octets.

Le code THUMB correspondant ressemblerait davantage à:

; En supposant que nous n’avons pas besoin de r6 / r7 pour autre chose, ils sont réaffectés à partir de r9 / r10.
  ldrh r0, [r7, # ADDR_BUS_OFS]
  mov r1, r0
  lsr r1, r1, n ° 8; THUMB exige que la source et la destination soient identiques
  ldrb r1, [r6, r1]
  lsl r1, r1, n ° 1; Peut utiliser shift-left-two, si les adresses cibles sont alignées sur le mot entier
  ajouter pc, r1

C'est très bien du point de vue de la densité du code, étant donné que les instructions ne sont que la moitié de celles des originaux, mais qu'il faudrait neuf cycles après l'extraction au lieu de six. Dans une application où le bus surveillé fonctionnera à son rythme, que l'ARM ait ou non réussi à le gérer, les instructions ARM plus rapides sont un avantage considérable.

Incidemment, Thumb2 est compatible binaire avec Thumb, ce qui facilite l'utilisation des outils précédents, mais signifie qu'il y a certaines choses qu'il ne peut pas faire aussi bien que l'ARM d'origine. Par exemple, dans ARM, on pourrait "faire pivoter" un bitmap 8x8 dans quatre registres en utilisant environ 3 instructions sur deux bits:

  movs r0, r4, lsl # 25; Placez le bit supérieur de LSB en C et le bit suivant en N
  orrcs r6, # 0x00000001
  orrmi r6, # 0x00000100

Dans Thumb2, il serait nécessaire d'ajouter des instructions conditionnelles explicites:

  movs r0, r4, lsl # 25; Placez le bit supérieur de LSB en C et le bit suivant en N
  itcs
  orrcs r6, # 0x00000001
  itmi
  orrmi r6, # 0x00000100

Réduction nette de 33% de l'efficacité en termes de temps et d'espace par rapport à ARM; il s'agit probablement d'un exemple du pire cas où le code du pouce est moins efficace qu'ARM, et même ce n'est pas vraiment horrible.

Un autre léger inconvénient de Thumb2 par rapport à ARM: dans le code ARM, toutes les instructions commencent par des limites de mots complets, facilitant ainsi l’analyse statique. Dans Thumb2, les instructions peuvent commencer arbitrairement aux limites d'un demi-mot et chevaucher les limites d'un mot entier. L'analyse statique peut donc être beaucoup plus difficile.

supercat
la source
14

Un peu d’histoire, Acorn voulait un processeur personnalisé (par exemple avec des commandes de mémoire intégrées, etc.) pour un nouvel ordinateur dans les années 1980 (le 6502 8 bits limitait ce qu’ils pouvaient faire). Ils ont parlé à Intel, mais Intel ne leur aurait pas octroyé de licence.

Acorn a donc conçu un processeur RISC très simple, mais comme ils n’étaient pas un fabricant de processeurs, ils étaient disposés à le concéder sous licence à qui que ce soit (et avaient besoin de tout l’argent qu’ils pouvaient obtenir!). (Je pense que le processeur a fonctionné pour la première fois, en partie parce que c'était si simple et que le concepteur a créé beaucoup de processeurs de recherche à l'université de Cambridge.)

Au fil des ans, la conception du processeur est devenue de plus en plus facile à inclure dans la conception de la puce client.

Le fabricant de puces s’est senti en sécurité avec les licences d’Acorn, qui n’était pas un concurrent. En outre, personne ne pensait se rendre dans la ville natale d'un concurrent pour obtenir une licence, comme Acorn à Cambridge (le vrai!) . (Est-ce que la chance d'un «voyage d'information» à Cambridge afin de rendre visite à Acorn a une influence sur la liste des options à court terme….)

Un grand nombre des conceptions qui incluent le processeur Acorn Risc Machine étaient conçues pour un système intégré dans lequel la consommation d'énergie était importante. De bons outils de développement bon marché ont également été créés pour le processeur Acorn Risc Machine.

Ainsi, lorsque les téléphones mobiles ont commencé à avoir besoin de puces personnalisées avec un processeur intégré, Acorn a été renommé ARM et le reste appartient à l’histoire. (Peut-être était-ce aussi un peu que les autres processeurs étaient principalement contrôlés par les États-Unis, mais les téléphones portables sont devenus normaux en Europe)

(Cela vous rappelle-t-il Microsoft et Dos avec une petite équipe IBM inconnue?)

Le fait que l'ARM soit l'un des meilleurs processeurs à l'époque (et le soit toujours) pour de nombreuses tâches a également aidé - mais il ne suffit pas d'avoir la "meilleure" conception de processeur.

Ian Ringrose
la source
Acorn RISC Machine est en fait renommé en Advanced RISC Machines (qui définit ARM). De plus, seule la branche de processeur ARM d’Acorn est indépendante et est appelée «machines RISC avancées». Acorn a poursuivi le développement de son RISC-OS et je crois que ce dernier le sait maintenant également.
Jippie
13

Problèmes techniques mis à part, il existe de nombreuses raisons non techniques pour ARM. Mais la réponse rapide est la suivante: ce n'est pas Intel (ou x86).

Si vous regardez où les dollars de R & D des processeurs sont actuellement investis, ils se répartissent en deux camps: ARM et Intel. (J'ignore les petits MCU et j'utilise AMD avec Intel.) Il y a très peu d'argent qui va à PowerPC, MIPS, SPARC et autres grands processeurs. ARM et Intel sont les seuls à rester debout.

Avec Intel et d'autres processeurs x86, vous obtenez une énorme quantité de bagages hérités. Par exemple, vous avez besoin d’un chipset, d’un BIOS, etc. Même si le processeur consomme très peu d'énergie, ces autres appareils ont tendance à alourdir votre système et à le rendre plus gros, plus gourmand en énergie et plus coûteux. Le développement d'un circuit imprimé avec un processeur Intel est un problème énorme. Vous devez ensuite négocier avec un fournisseur de BIOS, etc. Pour aggraver les choses, beaucoup de fournisseurs de chipsets, de BIOS, de puces vidéo, etc. faire des affaires avec les petites personnes qui ne vendront pas moins d'un million d'unités par an.

Avec ARM, vous n’avez pas ce bagage. Il existe de nombreuses sources de puces, allant des microcontrôleurs aux monstres multicœurs. Vous n'avez pas besoin de licence pour un BIOS (ce qui revient beaucoup à aller chez un vendeur de voitures d'occasion). Et les fabricants et les vendeurs sont généralement gentils avec vous.

utilisateur3624
la source
2
Ne pas ignorer les petits MCU. ARM occupe également une part importante de ce marché avec sa série Cortex-M. Aujourd'hui, je réfléchissais à deux fois avant d'utiliser un contrôleur 32 bits non-ARM.
Mike DeSimone
Oui, je suis d'accord @ Mike. ARM tente actuellement de s’implanter sur le marché de la grande puissance qu'Intel domine comme les serveurs. Ils sont connus pour leurs microcontrôleurs moyen-haut de gamme et leurs microprocesseurs bas-milieu de gamme
Kortuk
Intel octroie plus de licences IP ces jours-ci (en particulier avec l’acquisition d’Altera). Voir: intel.com/content/www/us/en/fpga/ip-and-design-tools.html par exemple.
jbord39
12

Comparez ARM7 / ARM9 à MIPS IV et il n’ya guère d’avantage que les problèmes de licence déjà bien mentionnés. Les composants internes du jeu d'instructions MIPS et du bus interne le rendent supérieur (performance par coût) pour certains types de conceptions; C'est pourquoi de nombreux routeurs Wi-Fi utilisent des cœurs MIPS plutôt que des cœurs ARM.

Étant donné que les cœurs ARM ont été principalement appliqués aux périphériques de poche, les ASIC ont ajouté davantage de fonctionnalités de contrôle de la consommation, alors que MIPS est davantage axé sur les performances par cycle que sur la réduction de la consommation. L'avantage de RISC sur Intel x86 est une discussion différente.

Peter Mortensen
la source
1
Notez que la ligne PIC 32 de Microchip utilise le noyau MIPS. MIPS est donc également disponible dans des ensembles compacts, économiques, autonomes et à faible consommation. En outre, vous pouvez utiliser MPLAB dessus, ce que vous ne pouvez faire avec aucun bras.
Olin Lathrop
L’autre commentaire des concepteurs d’ASIC est qu’il est difficile de travailler avec ARM AHB et APB (peut-être en raison de licences distinctes ou de problèmes de conception). Alors que les bus MIPS sont en quelque sorte plus faciles. Signification: le noyau est une chose; les périphériques hors noyau doivent également être pris en compte.
Jonathan Cline
-8

Il n'y a pas de réel avantage. Les contrôleurs DSP et autres, tels que GSM, sont ce qui les rend si populaires.

Peter Mortensen
la source
3
d'autres réponses semblent être en désaccord.
Kortuk
1
-1 Tout sur la Terre a ses avantages et ses inconvénients!
RHuiuiuda