lanse schrieb:
Die "interne Parallelität" (Superskalarität) der ultra-wide execution architecture des Apple M1 Prozessor ist doppelt so groß wie bei x64 (8-fach vs. 4-fach), doppelt so viele Pipelines können also mit Befehlen gefüttert werden. Das kann aber nur dann sinnvoll geschehen, wenn die Maschinenbefehle zuvor unter Berücksichtigung etwaiger Abhängigkeiten neu sortiert wurden (out-of-order execution:
Um mehrere Pipelines zu füllen braucht es kein OoO. ARMs A55 nutzt 2 Pipelines und is in-Order. Wie sinnvoll OoO zur Auslastung mehrer Pipelines beiträgt ist u.a. davon abhänig was für ein problem gelöst werden soll und wie sinnvoll da Compiler Vorarbeit leisten können.
Dazu benötigt der M1 sehr komplexe Dispatch/Reorder-Units. Zusammen bescheren ihm die 8-fache Superskalarität und diese komplexen Dispatch/Reorder-Units den ca. 4-fach höheren Maschinenbefehl-Durchsatz im Vergleich zu x64, wobei die einzelnen Maschinenbefehle allerdings weniger mächtig sind.
Auch hier kommt es vorrangig darauf an welche Probleme bzw. welche Algorithmen genutzt werden. Superskalarität nutzt ja vor allem etwas, wenn die einzelnen Befehle unabhänig voneinander sind und möglichst wenig Branches enthalten sind. Normalerweise sind das dann Dinge, die in halbwegs kompakten Schleifen laufen.
x64 bleibt dieser Design-Pfad verwehrt - zumindest in einer so konsequenten Umsetzung wie beim M1 (und im kommenden Jahr beim Power10-RISC-Prozessor von IBM - ebenfalls 8-fach superskalar), weil x64 als CISC mit variable length instructions (1-15 Bytes bei x64) arbeitet im Gegensatz zum RISC (fixed length instructions - 4 Bytes bei ARM), womit der Aufwand für die Erhöhung der super-scalarity und gleichzeitig der out-of-order & speculative execution extrem anwachsen würde im Vergleich zum RISC.
Acht x86 "complex Decoder" in eine CPU zu packen ist wahrlich etwas arg viel. Weswegen ja auch sowas wie unterschiedlich komplexe Decoder als auch µOp-Caches entwickelt worden. Gerade die Caches sind bei besagten, kompakten Schleifen recht praktisch. Denn eben jene Schleifen passen tendenziell komplett in den Cache. Der CISC Nachteil der komplexeren (langsameren) Decoderstufen wird da ganz gut kompensiert.
Zudem, Superskalarität in allen Ehren, aber für kompakte Schleifen mit vielen unabhänigen Operationen kann man oftmals auch Vektoroperationen (SIMD) nutzen. Ob da nun n=8 Pipelines a[n] = a[n] + b[n] rechnen oder eine Pipelines auf einen Schlag A[n; n+1; n+2; ...;n+8] = A[n; n+1; n+2; ...;n+8] + B[n; n+1; n+2; ...;n+8] macht kaum einen Unterschied. Stand derzeit ist, dass frei kaufbare X86 CPUs eben jene Vektorrechnungen mit 4-facher Breite schaffen im Vergleich zu frei verkäuflichen ARM-Systemen.
Obendrein müsste dieser Aufwand auch für alle zwar mächtigen, aber selten(er) benötigen Maschinenbefehle des CISC betrieben werden, während sich der RISC auf wenige, aber häufiger verwendete Maschinenbefehle konzentriert und komplexere Funktionen aus diesen zusammenbaut.
Du solltest dir die ARM Spec mal anschauen. Das ist je nach Generation und Featurelevel mittlerweile auch eine umfangreiche Angelegenheit (wenn auch deutlich weniger als bei x86). Vor allem ist ARM nicht mehr mit einer fixen Instruktionslänge gesegnet (Thumbs und Java Extension).
Man kann es also auch so ausdrücken: Der RISC nutzt das zur Verfügung stehende Transistor-Budget eines Chip-Designs besser als der CISC. Dass der RISC letztendlich dominieren wird, ist den Experten schon seit den 80er Jahren des letzten Jahrhunderts klar. Aber erst die Revolution des mobilen Internets hat letztendlich die entscheidende Wende gebracht. Solange konnte man sich im x86/x64-Lager noch mit dem Vorteil der Abwärtskompatibilität, starker Verbreitung und schweren, voluminösen Endgeräten - mit ebensolcher Kühlung - behaupten.
Und weil RISC so derart überlegen ist, sind Power, SPARC, MIPS, PA-RSIC, AVR32, Alpha praktisch vorm Markt verschwunden
Oder hat es vielleicht doch eher etwas damit zu tun, dass dass marktwirtschaftliche Konsolidierung zuschlägt und sich vor allem (finanz-)starke Firmen durchsetzen, die jeweils unabhängig von der zugrundeliegenden Architektur jeweils gute Produkte abliefern? Mit wechselnden Kräfteverhältnissen.