Was ist eigentlich der Unterschied zwischen ARM Archetekturen (CPU) und normalen CPUs?
4 Antworten
Was heißt "normale CPU"? Was wäre denn eine anormale CPU?
Anhand der Geschichte wie sich Prozessoren entwickelt haben kann man das am besten erklären was der Unterschied zwischen der klassischen 86 Struktur und den ARM ist:
Zuerst hat man Prozessoren (aus Einzelteilen wie Relais, Röhren und schließlich Transistoren, dann Chips) gebaut die zum einfachen Rechnen da sind.
Man konnte damit Addieren, Subtrahieren, Multiplizieren, Dividieren und Entscheidungen treffen (größer, kleiner, Null, Negativ) um auf Ergebnisse zu reagieren.
Damit konnte man dann also einfache Berechnungen durchführen, nackte Zahlen rein und nackte Zahlen raus.
Als dann Chips verfügbar waren, konnte man dann leicht mehr Funktionen einbauen ohne gigantisch große Computer bauen zu müssen. Damit waren dann viel mehr Arten der Berechnungen möglich und auch das verarbeiten von anderen Daten als einfachen Zahlen, vor allem Text.
Damals programmierte man per Hand auf Bleistift und Papier oder direkt auf Lochkarten. Man musste jeden Schritt eines Programmes selber ausdenken und schreiben. Mit mehr verschiedenen Befehlen kann man dann viel einfacher komplizierte Dinge machen. Man baute dann also mehr und mehr Befehle ein. So konnte man dann als Mensch immer kompliziertere Dinge schreiben ohne eine Aufgabe in zu viele kleine Einzelbefehle aufteilen zu müssen.
Das erfordert aber immer mehr Schaltungen in der CPU die durch die Befehle aktiviert oder deaktiviert werden müssen.
Als dann Compiler aufkamen, war es dem Programmierer egal wie eine Aufgabe in Programmcode umgesetzt wird. Das macht der Compiler automatisch.
Dann kam man auf die Idee, die Umfangreichen Funktionen wieder abzuschaffen und komplexe Aufgaben durch viele einfache Befehle die wenig Schaltungsaufwand brauchen umzusetzen. Ab jetzt unterschied man CPUs in CISC (Complete Instruction Set Code, also vollständiger Befehlssatz) und RISC (Reduced Instruction Set Code, also Reduzierter Befehlssatz).
Wie das mit RISC trotzdem funktioniert kann man in dem Spiel "Human Ressource Machine" spielerisch erlernen. Das gibt es für PC, Mac, iOS und Android. Da steuert man einen Büroangestellten mit sehr einfachen Befehlen und muss immer schwierigere Aufgaben lösen. Man dem zusehen wie der das Programm das man geschrieben hat abarbeitet.
Da RISC weniger Schaltungen braucht, braucht die CPU auch weniger Strom. Außerdem sind die Schaltungsteile einfacher, können also höher getaktet werden. Dazu kommt, dass eine CISC nach Erhalt eines Befehls erst mal sehr aufwändig seine umfangreichen Schaltungsteile ein und ausschalten muss und miteinander verschalten muss um den Befehl zu verarbeiten. Ein RISC kann das viel schneller erledigen.
Ein CISC wie der 6502 Prozessor (frühe Heimcomputer wie C64 und Apple-II) braucht 12 Takte um einen normalen Befehl ausführen zu können. Das ist ein Maschinenzyklus. Ein vergleichbarer RISC braucht nur 4 Takte für einen Maschinenzyklus.
Das bedeutet, dass ein RISC bei gleichem Takt drei mal mehr Maschinenzyklen, also Befehle abarbeiten kann. Gleichzeitig kann man die einfacheren Schaltungen auch höher takten wodurch man in der gleichen Zeit viel mehr Befehle abarbeiten kann.
Zwar braucht man viel mehr Befehle um komplexe Aufgaben zu bewältigen, dafür laufen in der gleichen Zeit auch viel mehr Befehle durch.
Und dazu kommt, dass komplexe Befehle nur recht selten vorkommen. EInfache Operationen die über 80% eines Programmes ausmachen brauchen gleich viele Maschinenzyklen. Da der RISC mehr Maschinenzyklen bei gleichem Takt macht, werden also über 80% eines Programmes mit einem vielfachen der Geschwindigkeit abgearbeitet, auch wenn der Systemtakt gleich ist. Und dann kann man RISC auch noch höher takten.
Das heißt, auch wenn weniger als 20% eines Programmes sehr langsam auf einem RISC umgesetzt werden kann, läuft der RISC insgesamt viel schneller und braucht dabei auch noch weniger Strom!
Dafür lassen die sich sehr schlecht per Hand, also mit vom Menschen ausgedachten Programmen programmieren. Da man aber heutzutage praktisch für alle Programmierarbeiten Compiler benutzt, ist das völlig egal geworden.
Das ist also der Unterschied RISC und CISC. Der x86, also die PC CPU ist ein CISC. Ein Handy benutzt einen RISC, kann also bei weniger Stromverbrauch und Abwärme genau so viel leisten.
Jetzt zum ARM:
Der ARM ist eine besondere RISC CPU.
Klassische CPUs haben nur ein einziges Arbeitsregister und ein paar wenige Hilfsregister. Jeder Befehl erwartet die Parameter (Daten) in bestimmten Registern. Die müssen da erst mal hinein gelegt werden und anschließend wieder heraus genommen werden um die im RAM zu sichern damit der nächste Befehl die nicht überschreibt.
Dadurch ist eine klassische CPU (RISC oder CISC) bis zu ⅔ der Zeit damit beschäftigt Daten zwischen RAM und Arbeitsregister hin und her zu kopieren.
Und das ist das besondere am ARM Prozessor. Der hat viele Arbeitsregister und Befehle können auf die verschiedenen Arbeitsregister umgeschaltet werden. So können dann komplexe Aufgaben gemacht werden ohne zwischendurch Daten zu sichern und wiederherzustellen. Die bleiben einfach in den Registern liegen bis man damit fertig ist.
Das spart dann massig Zeit die vorher mit hin und her kopieren von Daten verschwendet wurde.
Jetzt kehrt sich der Nachteil vom RISC um. Man braucht zwar mehr Befehle um kompliziertere Aufgaben zu bewältigen, dafür spart man aber wiederum Befehle da man viel weniger Daten hin und her kopieren muss. Unter dem Strich bleibt also der höhere Takt und dass mehr Befehle pro Takt verarbeitet werden können. Und dabei natürlich der geringere Stromverbrauch. Also ideal für Computer die auf Akku laufen müssen, also dem Handy.
"Normale" CPUs gibt es nicht. Desktop-PCs und die meisten Laptops benutzen x86 bzw. x86_64 CPUs.
Der Hauptunterschied ist der Befehlssatz, also einfach die Befehle, die eine CPU versteht. Jeder Befehl muss quasi in die CPU fest eingebaut werden. Je mehr Befehle eine CPU beherrscht, desto komplexer ist sie auch.
x86 ist ein relativ alter und aus heutiger Sicht etwas "aufgeblasener" Befehlssatz, was eben dazu führt, dass x86 CPUs etwas größer, komplexer und stromfressender sind, als es nötig wäre.
Und das ist eben, wo ARM Vorteile hat. Der ARM-Befehlssatz ist im Vergleich zu x86 schlanker, entsprechend sind die CPUs kleiner und effizienter.
Das ist auch der Grund, warum ARM-CPUs in Smartphones und Tablets die erste Wahl sind.
Dass wir überhaupt noch so viel x86 benutzen, hat vor allem einen Grund: Kompatibilität. Man kann sich den Befehlssatz auch wie eine Sprache vorstellen. Die meisten Programme sprechen entweder "x86" oder "ARM". Das bedeutet eben, dass auf einer ARM-CPU keine x86-Programme laufen, und von wenigen x86-Programmen gibt es eine ARM-Version.
Klar gibt es die Möglichkeit, eine "Übersetzung" durchzuführen, aber das kostet praktisch immer viel Leistung und macht die Programme deutlich langsamer. Gerade bei Dingen wie Spielen ist das kaum machbar. Apple konnte es durchziehen, da sie viel Kontrolle über das Mac-Softwaresystem haben, volle Kontrolle über die Hardware, und auch Spiele für sie kaum eine Rolle spielen. So haben sie zunächst übergangsweise die Rosetta 2 Übersetzungsschicht angeboten, aber gleichzeitig Software-Entwickler dazu gedrängt, native ARM-Versionen ihrer Softwares anzubieten.
So hat Apple es geschafft, quasi komplett auf ARM-CPUs umzusteigen, sowohl in Smartphones als auch Tablets und Macs.
Außerhalb des eingezäunten Apple-Universums sieht es aber etwas anders aus. Wir haben unzählige PC-Hersteller, und es gibt hier praktisch kaum Alternativen zu Intel und AMD, die beide primär x86-CPUs herstellen. Intel hat übrigens x86 entwickelt, und AMD später die x86_64-Version. Zwar hat Microsoft durchaus relativ viel Einfluss auf das Software-Ökosystem, doch nicht so stark, wie es bei Apple der Fall ist und sie haben eben kaum Einfluss auf die Hardware.
Microsoft hat vor nicht allzu langer Zeit mit dem Surface Pro X versucht, einen ARM-Computer anzubieten. Das ernüchternde Ergebnis: Es gibt kaum native ARM-Programme für Windows und die Emulation (Übersetzung) für x86-Programme war katastrophal schlecht. Programme wie Photoshop liefen nur als 32-Bit Version und dabei sehr, sehr langsam. Damit war es auch eher ein Rohrkrepierer.
Es fehlt hier einfach an Zusammenhalt: Es müssten quasi PC-Hersteller und Software-Entwickler (inklusive Microsoft) alle gleichzeitig zusammen entscheiden, zu ARM zu wechseln. Da es aber sehr unwahrscheinlich ist, dass das einfach so passiert, bleiben einfach alle beim guten alten x86.
Im Server-Bereich sieht es nochmal anders aus. Server haben in der Regel eine bestimmte Aufgabe, entsprechend weiß man vorher relativ genau, welche Software darauf laufen wird. Hier kann man dann einfach schauen, ob es eine ARM-Version gibt oder eine ARM-Version entwickeln (lassen). Entsprechend können ARM-CPUs zumindest hier Fuß fassen, wenn auch noch etwas langsam.
Ein Punkt, den es bei ARM noch zu bedenken gibt: Jede ARM-CPU basiert auf Designs und Lizenzen der Firma ARM. Würden alle CPUs auf ARM basieren, wäre so ziemlich der ganze PC-Markt von ARM abhängig. Nvidia war bereits kurz davor, ARM zu übernehmen. Wenn sowas passiert, und ARM plötzlich zu einer Firma gehört, die nicht gerade für Fairness steht, könnte es passieren, dass der ganze PC-Markt eben von so einer Firma zurückgehalten wird.
Bei x86 haben wir immerhin AMD und Intel, die sich gegenseitig in Schach halten.
Von dem her heißt es: Abwarten und schauen, ob ARM im PC-Markt jemals Fuß fassen wird, ob sich vielleicht doch noch eine Alternative zu ARM durchsetzen kann (eventuell auch von AMD oder Intel), oder ob wir einfach weiter mit den nicht so ganz effizienten x86ern Strom verheizen.
ARM ist die Zukunft, besser, schneller. :)