Was ist so toll an ARM?

In einem Kommentar zu dieser Antwort fragt Kortuk, was der ARM-Vorteil ist . Ich habe meiner Antwort zunächst einige Argumente hinzugefügt, aber ich denke, die Frage ist interessant genug, um eine Frage für sich zu sein, sodass mehr Antworten möglich sind.

Ihre Antworten scheinen auf die am wenigsten konstruktiven Fragen konstruktiv zu sein, aber ich mache mir Sorgen, dass andere sehr eigensinnige Antworten schreiben werden. Wir werden sehen, ob die Leute versuchen, die von Ihnen gesetzte Messlatte zu überwinden.
@Kortuk - Sie können den Wortlaut der Frage oder den Titel gerne bearbeiten, wenn Sie der Meinung sind, dass dies hilfreich sein kann, um bessere Antworten zu erhalten. (Das war sowieso deine Frage)
Diese Frage verlangt nach einem Religionskrieg. Wenn die Leute nicht fragen und kommentieren würden, würde ich dafür stimmen, dies sofort zu schließen. Denken Sie daran, Sie wissen, dass Sie immer Recht haben und der andere Typ ein barbarischer Heide, wenn es um den Glauben geht. Lasst den Dschihad beginnen...
@olinLathrop, darauf achte ich. Derzeit sieht es so aus, als würden wir Antworten von sehr hoher Qualität erhalten, ohne zu streiten. Ich werde dies wahrscheinlich langfristig zu einem CW machen und den Google-Köder gepaart mit interessanten Informationen am Arm leben lassen. Normalerweise hätte ich das sofort geschlossen, aber @stevenvh hat es mit einer großartigen Antwort eröffnet und scheint einen qualitativ hochwertigen Ton angegeben zu haben.

Antworten (9)

Leistung ist ein Vorteil. Als 32-Bit-Prozessor übertrifft er (fast) alle 8-Bit-Controller DMIPS-mäßig. Der Kern hat auch mehrere Generationen durchlaufen, lesen Sie Optimierungen.
Diese Optimierungen zeigen sich nicht nur in Leistungswerten, sondern auch im Stromverbrauch . Der neueste Kern hat sein DMIPS/mW-Verhältnis im Vergleich zur vorherigen Generation verdoppelt (siehe auch diese Antwort ).
ARM ist von sehr vielen Herstellern erhältlich , mehr als jeder andere Mikrocontroller, und jeder hat eine Reihe von Versionen zur Auswahl, mit unterschiedlichen Kombinationen von On-Chip-Peripheriegeräten und Speicher und Gehäusen. Ein typisches Beispiel: NXP bietet nicht weniger als 35 Controller mit On-Chip-Ethernet an .
Arme sindpreiswert ; ARM war wahrscheinlich der erste 32-Bit-Controller, der die 1-Dollar-Grenze durchbrach.

Diese Kombination aus Leistung , breitem Angebot und niedrigen Kosten macht es so, dass Sie ARM einfach nicht ignorieren können:

Im Jahr 2005 verwenden etwa 98 Prozent aller Mobiltelefone mindestens einen von ARM entwickelten Kern auf ihren Motherboards, laut einer Studie des Analyseunternehmens Linley Group. ( Quelle )

Der Handymarkt hat noch einen weiteren Effekt. Mobiltelefone sind sehr platzbeschränkt und erfordern kleine Gehäuse. Der LPC1102 von NXP wird in einem WLP-16-Gehäuse mit nur 5 mm geliefert 2 , eine Skala, die bisher nur von 8-Bit-Mikrocontrollern mit niedriger Pinzahl verwendet wurde.

Ich kann nur hinzufügen, dass ARM definitiv das erste 32-Bit-Mikro ist, das den 0,5-Dollar-Preispunkt durchbricht (Cortex M0 in Menge).
@Barsmonster - Cool! Es sieht so aus, als ob die einzige Zukunft für 8-Bit in 2 mm x 3 mm großen DFNs liegt
@self - und vielleicht nicht einmal das. Siehe den Zusatz zum LPC1102 in meiner Antwort.
@stevenvh - Nun, es gibt immer noch den Stromverbrauchsvorteil. LPC1102 @ 12 MHz Schlafmodus verbraucht 1 mA. Nicht schlecht, aber etwa 1000 mal mehr als ein [16 Bit] msp430.
@self - Streichen Sie auch diesen Vorteil. Nach einigem Suchen scheint Energy Micro einen M3 zu haben, der im Schlafmodus + RTC auf 0,6 uA herunterfallen kann.

Ein Punkt, der noch nicht erwähnt wurde: 1908 erfand ein Typ namens Mr. PL Robertson einen neuen, verbesserten Schraubenkopf und Schraubendreher . Er wollte der Einzige sein, der Schrauben und Schraubendreher nach seinem Design fertigt. Jahrzehnte später entwickelte ein anderer namens Mr. Henry F. Phillips ein alternatives Design . Im Gegensatz zu Herrn Robertson war Herr Phillips mehr daran interessiert, sein Design zu lizenzieren, als Schrauben und Schraubendreher herzustellen.

Ebenso entwickelte Sony in den 1970er Jahren eine Technologie namens Betamax ; JVC hat eine namens VHS entwickelt. Sony war daran interessiert, Videorecorder herzustellen; JVC war mehr an der Lizenzierung interessiert.

Hier scheint es ein Muster zu geben. (Hinweis: Intel hat seine 80x86 -Technologie eine Zeit lang lizenziert, konzentriert sich aber seit Jahrzehnten mehr auf die Entwicklung von Technologien für den internen Gebrauch.)

Ja. Ich denke, das Lizenzierungssystem für geistiges Eigentum von ARM ist der Grund für den Erfolg.
ARM ermöglicht eine enorme Flexibilität bei der Lizenzierung. Wenn Sie die IP nur für ein paar Kerne benötigen, kostet es nicht zu viel. Wenn Sie jedoch einen stark kundenspezifischen Chip herstellen möchten, der von Ihren Chipdesignern vollständig optimiert wurde, kostet das mehr , ist aber eine verfügbare Option. So kann ein Unternehmen wie Apple seine eigene Reihe von Prozessoren entwickeln, die für ihre Anwendung optimiert sind. Die meisten Unternehmen würden so viele der Kronjuwelen nicht außerhalb ihrer Kontrolle lassen.
Es ist wichtig zu beachten, dass ARM nicht mit Intels x86-Reihe konkurriert (nicht einmal wirklich in dem Raum, in dem die neuen Atom-Prozessoren laufen). Wenn Ihre Antwort das implizieren sollte, ist sie falsch. Intels Moorestown- und Medfield-Architekturen (sollten) im gleichen Bereich wie ARM konkurrieren.
Es ist Ewigkeiten her, seit Intels 80x86-Reihe konkurrenzfähig in den Anwendungstypen war, in denen heute ein ARM verwendet würde, aber die 8088, 8086, 80286 und 80386, die alle lizenziert waren, waren bei eingebetteten Systemen beliebt. Mein Kommentar zu Intel bestand hauptsächlich darin, anzuerkennen, dass Intel heute beliebt ist, obwohl es nicht wie ARM lizenziert ist.
@supercat: Intel lizenziert heutzutage viele Soft-IPs. Es bietet auch Design-Tools und SIP für das FPGA-Design ( intel.com/content/www/us/en/fpga/ip-and-design-tools.html )
  1. Gleiche Hardware/Software zur Entwicklung für ARMs aller Anbieter. Sie kaufen einmal JLINK/ULINK und etwas Keil-IDE und können damit fast jeden ARM auf einem Planeten entwickeln, emulieren und debuggen.

  2. Keine Notwendigkeit, eine neue Architektur zu lernen, wenn Sie zu einem neuen Chipanbieter wechseln => weniger Anbieterbindung => mehr Wettbewerb => niedrigere Preise

  3. In modernen Tech-Prozessen (0,18 um und darunter) ist der ARM-Kern so winzig, dass das Opfern für einen 8-Bit-Kern keinen sichtbaren Bruchteil eines Preises einsparen würde. Daher der Grund, sich für eine leistungsstarke und dennoch kostengünstige Standardarchitektur zu entscheiden.

  4. Leistung - nur mit ARM können Sie eine Single-Clock-32 * 32-> 32-Multiplikation und Hardware-Unterstützung für 32 * 32-> 64 und Division für Geräte unter 1 Dollar haben (nämlich beispielsweise STM32 der unteren Preisklasse)

  5. ARM ist nicht zu gierig und erhebt keine unangemessenen Gebühren für Lizenzen, sodass Hersteller billige Mikros produzieren können.

Ich konzentriere mich aus folgenden Gründen auf ARM -Prozessoren der Mittelklasse:

  1. Volle Linux-Unterstützung

    Das bedeutet Gerätetreiber fast kostenlos. Ich habe genug USB-Host- und Gerätecode gemacht, ich will DAS nicht mehr machen. Ich bin auch nicht besonders begeistert von dem Versuch, TCP/IP zu einer zufälligen Prozessorplattform hinzuzufügen (obwohl LwIP / uIP nicht so schlecht ist). Ich habe nie versucht, Wi-Fi, einen echten Bluetooth-Stack, Webcams usw. zu verwenden. Die Verwendung von Linux bedeutet, dass eine sehr breite Palette von Geräten viel einfacher zu kommunizieren ist.

    Ich war auch wirklich erstaunt, wie rationell und einfach das Schreiben von Linux-Gerätetreibern ist. Nach einigen Windows-Gerätetreibern ist Linux ein Traum. (Um fair zu sein, das Windows-Treiber-Framework hat sich seit meiner Einführung stark verbessert.)

    Die Softwareplattform ist auch großartig. Ich bekomme SSL-Verschlüsselung, Dateisysteme, Fernverwaltung, einfache Anwendungsaktualisierungen (eine Datei anstelle eines komplexen Bootloaders kopieren) usw. Oh, und viele vorhandene Dienstprogramme, wenn Sie etwas erledigen müssen.

    Es ist außerdem lizenzfrei und viel einfacher, sich Ihrem Willen zu beugen, als es eine Closed-Source- WinCE - Plattform sagen würde. (Nicht, dass ich wirklich ein Open-Source-Idealist wäre ... es ist alles sehr praktische Argumentation für mich.)

    Ich spreche von ARM-Kernen mit tatsächlichen MMUs , also ist dies für die Mid- bis High-End-Chips (obwohl Sie vermutlich μClinux verwenden könnten ).

  2. Energieverbrauch

    Dies ist im Grunde eine Wiederholung der Kommentare anderer, aber es ist ein wichtiger Faktor für mich. Meine aktuelle 454-MHz-ARM-Plattform verbraucht 1/2 Watt, 1 Watt bei maximaler CPU. Daran kommt man mit x86 nicht einmal heran.

Das ist so ziemlich meine Überlegung. Ich sehe nicht, dass sich die Gleichung in absehbarer Zeit ändert.

Verwandte: Mehrere RTOS-Optionen.
Die meisten Ihrer Antworten gelten für die meisten CPU-Architekturen da draußen genauso wie für ARM. Viele davon sind auch auf 2) anwendbar. Die Liste der von Linux unterstützten Architekturen ist lang und ARM ist nur eine davon.

Der ARM hat eine Entwicklung durchlaufen:

  1. Eine 32-Bit-Befehlsarchitektur, die umfangreicheren Code hatte als viele andere Architekturen, die aber schnell decodiert werden konnte und viele Operationen mit weniger Befehlen als konkurrierende Architekturen ausführen konnte
  2. Eine Architektur mit zwei Befehlsformaten, die zwischen dem netten und leistungsstarken (aber leider etwas aufgeblähten) ARM-Befehlssatz und einem weniger leistungsstarken (aber weitaus kompakteren) 16-Bit-„Thumb“-Befehlssatz wechseln kann. Jeder Thumb-Befehl hatte einen entsprechenden ARM-Befehl, wodurch die Notwendigkeit für Programmierer, zwei Befehlssätze zu lernen, etwas minimiert wurde.
  3. Eine Thumb2-Architektur, die dem Thumb-Befehlssatz Zwei-Wort-Anweisungen hinzufügte, was größtenteils eine Win-Win-Situation ergab: Typischer ARM-Code würde eine Mischung aus Anweisungen enthalten, die nur in ARM verfügbar waren, und Anweisungen, die in Thumb verfügbar gewesen wären musste aber sowieso als 32 Bit dargestellt werden; In Thumb2 erhält ein solcher Code die Platzvorteile, indem er einige der 32-Bit-Anweisungen durch 16-Bit-Anweisungen ersetzt.
  4. Eine Nur-Daumen-Architektur, die einschränkender ist, als mir lieb wäre, die aber kleiner und billiger ist als alle anderen.

Die ARM-Architektur ermöglicht die sehr schnelle Ausführung einiger ziemlich anspruchsvoller Operationen – viel schneller als auf jedem anderen Chip. Zum Beispiel (mit ARM7-TDMI):

  ldrh r0,[r10,#ADDR_BUS_OFS] ; Zielsystem-Adressbus lesen (13 Bit)
  ldrb r1,[r9,r0,lsr #8] ; Verwenden Sie obere Bits, um die Adresse in einer Handlertabelle nachzuschlagen
  füge pc, r9, r1 hinzu lsl #2 ; Gehen Sie zum entsprechenden Handler

Jeder Handler wird als Byte gespeichert, was 1/4 der Adressverschiebung vom Beginn der Tabelle ergibt. Der Nettoeffekt besteht darin, dass es, sobald der Inhalt des Adressbusses abgerufen wurde, nur sechs Zyklen (zwei Befehle) benötigt, um zu einem Handler zu springen, der auf den oberen fünf Bits des Abrufs basiert, wobei eine 32-Byte-Sprungtabelle verwendet wird.

Der entsprechende THUMB-Code wäre eher wie folgt:

; Angenommen, wir brauchen r6/r7 für nichts anderes, werden sie von r9/r10 neu zugewiesen
  ldrh r0,[r7,#ADDR_BUS_OFS]
  Bewegung r1,r0
  lsr r1,r1,#8 ; THUMB erfordert, dass Quelle und Ziel gleich sind
  ldrb r1,[r6,r1]
  lsl r1,r1,#1 ; Könnte Shift-Left-Two verwenden, wenn die Zieladressen an Vollwörtern ausgerichtet sind
  pc,r1 hinzufügen

Aus Sicht der Codedichte ist das in Ordnung, da die Anweisungen nur halb so groß sind wie die Originale, aber nach dem Abrufen neun statt sechs Zyklen dauern würde. In einer Anwendung, in der der überwachte Bus mit seiner eigenen Geschwindigkeit läuft, unabhängig davon, ob der ARM es geschafft hat oder nicht, sind die schnelleren ARM-Anweisungen ein großes Plus.

Übrigens ist Thumb2 binärkompatibel mit Thumb, was die Verwendung früherer Tools erleichtert, aber einige Dinge nicht so gut kann wie das ursprüngliche ARM. Beispielsweise könnte man in ARM eine 8x8-Bitmap, die in vier Registern gespeichert ist, mit etwa 3 Anweisungen pro zwei Bit "rotieren":

  movs r0,r4,lsl #25 ; Setzen Sie das oberste Bit von LSB in C und das nächste Bit in N
  orrcs r6,#0x00000001
  orrmi r6,#0x00000100

In Thumb2 müssten explizite bedingte Anweisungen hinzugefügt werden:

  movs r0,r4,lsl #25 ; Setzen Sie das oberste Bit von LSB in C und das nächste Bit in N
  itcs
  orrcs r6,#0x00000001
  itmi
  orrmi r6,#0x00000100

Netto 33 % weniger Zeit- und Platzeffizienz im Vergleich zu ARM; Das ist wahrscheinlich ein Worst-Case-Beispiel dafür, dass Thumb-Code weniger effizient als ARM ist, und selbst das ist nicht gerade schrecklich.

Ein weiterer kleiner Nachteil von Thumb2 gegenüber ARM: Im ARM-Code beginnen alle Anweisungen an Vollwortgrenzen, was die statische Analyse erleichtert. In Thumb2 können Befehle willkürlich an Halbwortgrenzen beginnen und Vollwortgrenzen überspannen. Eine statische Analyse kann daher viel schwieriger sein.

Ein bisschen ist Geschichte, Acorn wollte in den 1980er Jahren eine kundenspezifische CPU (z. B. mit eingebauter Speichersteuerung usw.) für einen neuen Computer (der 8-Bit-6502 begrenzte, was sie tun konnten). Sie sprachen mit Intel, aber Intel würde ihnen keine CPU lizenzieren.

Also entwarf Acorn eine sehr einfache RISC-CPU, aber da sie kein CPU-Hersteller waren, waren sie bereit, sie an jedermann zu lizenzieren (und brauchten so viel schnelles Geld, wie sie bekommen konnten!). (Ich glaube, die CPU hat beim ersten Mal funktioniert, teilweise weil sie so einfach war und der Designer während seiner Zeit an der Cambridge University viele Forschungs-CPUs entwickelt hat.)

Im Laufe der Jahre wurde es immer einfacher, das CPU-Design in das Chipdesign des Kunden einzubeziehen.

Der Chiphersteller fühlte sich bei der Lizenzierung von Acorn sicher, da er kein Konkurrent war. Auch dachte niemand, dass sie in die Heimatstadt eines Konkurrenten fahren würden, um eine Lizenz zu bekommen, da Acorn in Cambridge (der echten!) war . (Hat die Chance einer „Faktenfindungs“-Reise nach Cambridge, um Acorn zu besuchen, Einfluss auf die Short Listing von Optionen zu irgendeinem Zeitpunkt ….)

Viele der Designs, die die Acorn Risc Machine CPU enthalten, waren für eingebettete Systeme gedacht, bei denen der Stromverbrauch wichtig war. Auch für die Acorn Risc Machine CPU wurden günstige und gute Entwicklungstools geschaffen.

Als Mobiltelefone anfingen, benutzerdefinierte Chips mit einer eingebetteten CPU zu benötigen, wurde Acorn in ARM umbenannt und der Rest ist Geschichte. (Vielleicht war es auch ein bisschen, dass die anderen CPUs größtenteils von den USA kontrolliert wurden, aber Handys werden erst in Europa normal)

(Erinnert Sie irgendetwas davon an Microsoft und Dos mit einem kleinen unbekannten Team von IBM?)

Die Tatsache, dass der ARM damals (und immer noch) für viele Aufgaben eine der besten CPUs war, half auch - aber nur das "beste" CPU-Design zu haben, reicht nicht aus.

Acorn RISC Machine wird tatsächlich in Advanced RISC Machines umbenannt (was ARM bedeutet). Auch wurde nur der ARM-CPU-Zweig von Acorn unabhängig und ist als Advanced RISC Machines bekannt. Acorn hat die Entwicklung seines RISC-OS fortgesetzt und ich glaube, dass es jetzt auch von letzterem bekannt ist.

Abgesehen von technischen Problemen gibt es viele nicht-technische Gründe für ARM. Aber die schnelle Antwort lautet: Es ist nicht Intel (oder x86).

Wenn Sie sich ansehen, wo die CPU-F&E-Dollars derzeit investiert werden, fallen sie im Wesentlichen in zwei Lager: ARM und Intel. (Ich ignoriere kleine MCUs und werfe AMD mit Intel in einen Topf.) In PowerPC, MIPS, SPARC und andere große CPUs fließt sehr wenig Geld. ARM und Intel sind die einzigen, die noch stehen.

Mit Intel und anderen x86-CPUs erhalten Sie eine riesige Menge Legacy-Gepäck. Beispielsweise benötigen Sie einen Chipsatz, ein BIOS und andere Dinge. Selbst wenn die CPU super energieeffizient war, neigen diese anderen Geräte dazu, Ihr System zu belasten und es größer, leistungshungriger und teurer zu machen. Allein die Entwicklung einer Leiterplatte mit einer Intel-CPU ist ein großes Problem, und dann müssen Sie mit einem BIOS-Anbieter usw. verhandeln. Um die Sache noch schlimmer zu machen, wollen viele der Anbieter für Chipsätze, BIOS, Videochips usw. einfach nicht um Geschäfte mit den kleinen Leuten zu machen, die nicht weniger als eine Million Einheiten pro Jahr verkaufen.

Mit ARM haben Sie dieses Gepäck nicht. Es gibt viele Quellen für Chips, von Mikrocontroller-Produkten bis hin zu Multi-Core-Monstern. Sie müssen sich nicht um die Lizenzierung eines BIOS kümmern (was dem Besuch eines Gebrauchtwagenhändlers sehr ähnlich ist). Und Hersteller und Verkäufer sind im Allgemeinen nett zu Ihnen.

Ignorieren Sie kleine MCUs nicht. ARM bekommt mit seiner Cortex-M-Serie ebenfalls einen großen Teil dieses Marktes. Ich würde heutzutage zweimal darüber nachdenken, einen Nicht-ARM-32-Bit-Controller zu verwenden.
Ja, ich stimme zu @Mike. ARM versucht derzeit, in den High-Power-Markt zu expandieren, den Intel wie Server dominiert. Sie sind bekannt für ihre Mid-High-Range-Mikrocontroller und Low-Mid-Range-Mikroprozessoren
Intel lizenziert heutzutage mehr geistiges Eigentum (insbesondere mit der Altera-Akquisition). Siehe zum Beispiel: intel.com/content/www/us/en/fpga/ip-and-design-tools.html .

Vergleichen Sie ARM7 / ARM9 mit MIPS IV und es gibt kaum einen Vorteil außer den bereits erwähnten Lizenzierungsproblemen. Die Interna des MIPS-Befehlssatzes und des internen Busses machen es für bestimmte Arten von Designs überlegen (Leistung pro Kosten); Aus diesem Grund verwenden viele Wi-Fi-Router MIPS-Kerne anstelle von ARM-Kernen.

Da ARM-Kerne hauptsächlich auf Handheld-Geräte angewendet wurden, fügten die ASICs mehr Leistungssteuerungsfunktionen hinzu, während sich MIPS mehr auf die Leistung pro Zyklus als auf niedrigeren Stromverbrauch konzentriert. Der Vorteil von RISC gegenüber Intel x86 ist eine andere Diskussion.

Beachten Sie, dass die PIC 32-Reihe von Microchip den MIPS-Kern verwendet. MIPS ist daher auch in kleinen, billigen, eigenständigen und stromsparenden Paketen erhältlich. Außerdem können Sie MPLAB darauf verwenden, was Sie mit keinem ARM tun können.
Der andere Kommentar, den ich von ASIC-Designern höre, ist, dass es schwierig ist, mit ARM AHB und APB zu arbeiten (möglicherweise aufgrund von separaten Lizenzen oder Designproblemen). Wobei die MIPS-Busse irgendwie einfacher sind. Bedeutung: Der Kern ist eine Sache; Auch die Peripheriegeräte außerhalb des Kerns müssen berücksichtigt werden.

Wirkliche Vorteile gibt es nicht. Angeschlossene DSP und andere Controller wie GSM machen sie so beliebt.

andere Antworten scheinen zu widersprechen.
-1 Alles auf der Erde hat Vor- und Nachteile!