T
Teralios
Gast
Ich suche gerade die ganze Zeit mal nach einem Bild, in dem man einen Kern mit den entsprechenden Funktionseinheiten sieht.Herdware schrieb:Ok. Vielleicht ist unter <1% etwas übertrieben. Aber mit einem Decoder pro Core und wenn jeder auch etwas komplexer geworden ist, wären es wahrscheinlich nur etwas mehr als 1%.
Aber ja, durch immer breitere Vektor-ALUs und mehr ALUs und AGUs, wird der Platz, den der Decoder braucht, immer geringer in Relation.
Wie gesagt, von der eigentlichen Rechenleistung - INT/FP - hängen die modernen ARM-Kerne ihren Intel und AMD-Pendantes in nichts wirklich nach.ToTom schrieb:Mit der momentanen Technik kann ich mir auch nicht vorstellen einen 10900K, 3950X, Xeon oder so zu ersetzen, außer Apple zieht echt was komplett neues aus dem Ärmel.
Probleme bekommen die Kerne erst, wenn die Daten nicht schnell genug nachkommen. Aber dieses Problem lässt sich relativ einfach lösen: Breiteres Interconnects zu den Caches, breiteres SI.
Rosetta 2 ist kein Emulator, sondern ein - wenn man den Begriff verwenden will - Recompiler!B.XP schrieb:Egal wie geil XCode ist - am Ende kommt da auch x86-Maschinencode raus, wenn man für x86 kompiliert und ein Emulator hat immer Overhead den Maschinencode strukturell zu übersetzen. Effizient ist das nie. Das ist nur nativer Code. Mein Kritikpunkt sind halt Treiber, und die sind nochmal auf einer anderen Ebene als wenn man jetzt high-level APIs nutzt.
Natürlich wird er nicht ganz so effizient sein, wie direkt erzeugter ARMv8-Code aus dem Source-Code, jedoch deutlich effizienter als eine klassische Emulation. Man kann den Maschinencode der x86-Binary analysieren und anhand der nachfolgenden Befehle auch Muster erkennen und damit entsprechend optimierten ARMv8-Maschinencode erzeugen, weil man so auch auf Eigenheiten und spezielle Fälle reagieren kann.
Oder anders ausgedrückt:
Ein Emulator übersetzt während der Ausführung den Befehl durch einen entsprechend passenden Befehl. Hier wird Befehl für Befehl ausgeführt. Der langsamste Ansatz.
Rosetta 1 ist bereits kein "reiner" Emulator mehr, sondern mehr ein JIT-Compiler. Dieser Übersetzt nicht mehr Befehl für Befehl während der Ausführung, sondern nimmt einen gesamten Maschinencode-Block und übersetzt ihn als ganzes. Geschwindigkeit steigt, da mehr Befehle am Stück übersetzt werden. Bereits hier greift Mustererkennung um zusammenhängende Befehle durch passenden für Zieltplattform optimierten Code zu ersetzten.
Rosetta 2 ist "Maschinencode-Compiler". Während der Installation wird der Maschinencode des Programmes analysiert und abhängig von dieser Analyse ein vollständig neues Binary erschaffen und abgespeichert. Es findet bei der Anwendung des Programmes KEINE Übersetzung mehr statt.
--
Manchmal wünschte ich mir, manche würden erst mal lesen und sich zumindest mit den Grundlagen befassen. Alle Informationen sind hier zugänglich. Aber statt desssen wird schwadroniert, was das Zeug hält und man dreht sich ständig im Kreis, weil man immer und immer wieder die bekannten Sachverhalte erläutern muss, statt wirklich mal eine sinnvolle Diskission zu führen... Nervig!