latiose88 schrieb:
Interessant. Das würde ja im Endeffekt heißen je weniger befehlsätze eine Anwendung nutzt, desto weniger Leistungssteigerung hätte ne neue CPU zur Folge. Ich habe ne anwedung die nur die Hälfte der befehlsätze der ganzen CPU nutzen kann. Es wird auch wohl langfristig nicht mehr weiter entwickelt.
Nicht ganz, zumindest hast du mich teilweise falsch verstanden.
In dem Fall hat es eher damit etwas zutun, wie gut sich Instructions/Operationen unabnhäniog von einander ausführen lassen.
Ein einfaches Beispiel: Eine CPU hat 2 ALUs, kann also 2 Opertationen zur gleichen Zeit ausführen, dann ergeben sich folgende Szenarien: (ADD steht für Addition, MUL für Multiplikation, die Buchstaben sind die Register, -> gibt das Zielregister an.)
Szenario 1:
ADD A, B -> A
ADD C, D -> C
Beide Befehle sind von einander Unabhängig und so wird auf ALU-1 ADD A,B und auf ALU-2 ADD C,D ausgeführt im selben Takt.
Szenario 2:
ADD A, B -> A
MUL A, C -> A
Hier hängt nun der MUL-Befehl von dem Ergebnis des ersten Befehls ab, entsprechend werden hier auf jeden Fall 2 Takte benötigt.
Im ersten Takt führt ALU-1 ADD A,B aus. ALU-2 liegt brach. Im zweiten Takt führt ALU-1 MUL A,B aus und ALU-2 liegt brach. Also hier 50% der Rechenleistung, bei beiden Takten.
Erweitern wir es um 2 Befehle zu Szenario 3:
ADD A, B -> A
MUL A, C -> A
ADD D, C -> D
MUL D, B -> D
Wir haben zwei weitere Befehle drin. Befehl 2 ist von 1 abhängig und 4 von 3. Entsprechend benötigen wir, obwohl wir 2 ALUs haben, 4 Takte, da alle nacheinander ausgeführt werden.
Und hier setzt jetzt OoO an. Also Out-of-Order-Execution. Wir können hier die Befehle so sortieren, dass wir nur 2 Takte brauchen, und schon können die ALUs besser ausgelastet werden:
ADD A,B -> A
ADD D,C -> D
MUL A, C -> A
MUL D,B -> D
Takt 1:
ALU-1 führt ADD A,B aus,
ALU-2 ADD D,C. Takt 2:
ALU-1 MUL A,C.
ALU-2: MUL D,B. Statt also wie vorher 4 Takte zu benötigen, schaffen wir es in 2.
Nur um jetzt die Befehle zu sortieren um die ALUs möglichst effektiv auszulasten, braucht es genug BEfehle, die voneinander nicht abhängig sind. Würden wir jetzt zum Beispiel vier Befehle absetzen, die in ihrer Form Register A abhängig sind, dann braucht man wieder 4 Takte um alle Befehle auszuführen:
ADD A,B -> A
MUL A, C -> A
ADD A, D -> A
MUL A. E -> A
Egal was man macht, diese vier Befehle kannst du nicht sortieren und damit müssen alle 4 Befehle nach einander auf jeweils einer ALU ausgeführt werden.
Und darum geht es. Sorry, wenn ich es für Experten zu stark vereinfacht habe. Sorry für die anderen, denen es zui schwer ist.
latiose88 schrieb:
Heißt das nun das es die Leistungssteigerungen dann bremsen tut und somit weniger mehrleistung am Ende zu stande kommt.
Nein, es bremst nicht, nur liegt eben Leistung brach, wird also nicht genutzt.
latiose88 schrieb:
Und das ganze je mehr Einheiten, desto gefährlicher auch die Wahrscheinlichkeit daß sie nicht richtig ausgelastet werden.
Genau das ist die Gefahr und um dem zu begegenen gibt es heute Techniken wie SMT, Spekulative Ausführung usw.
WinnieW2 schrieb:
Es sei denn Intel bringt Befehlssatzerweiterungen welche genügend Zukunftspotential haben, also auch gut mit mehr Recheneinheiten skalieren.
Auch gute Befehlssatzerweiterungen kann es nicht verhindern, dass Befehle alleine durch den Programmablauf voneinander abhängig sind. Ein
a + b + c + d
kannst du eben nur in
a + b
und
c + d
aufsplitten um 2 ALUs auszulasten, die Dritte Operation wird immer erst im nächsten Takt ausgeführt, auch wenn du eine 3 oder gar 4 ALU hast. Und hier kannst du auch mit OoO nicht viel mehr erreichen.
Es gibt Probleme bei der Auslastung, die kannst nicht durch neue Befehlssätze lösen, oder in dem du mehr ALUs unter bringst.
WinnieW2 schrieb:
Golden Cove soll jedenfalls eine 50% höhere IPC im Vergleich zu Skylake mitbringen. Ob das realistisch ist werden wir in ca. 2 Jahren erfahren.
Man muss hier halt bedenken, dass es hier um Durchschnittssteigerungen geht. Klar werden im Mittel sicher bis zu 50% erreicht werden, gerade wenn man die Wartezeiten auf Daten usw. weiter verringert und Kontextwechsel beschleunigen kann.
Am Ende wird es aber ebenso genug Software geben, die hier nicht wirklich profitieren werden.