Mindfork schrieb:
Für jemanden und andere, die das nicht kennen:
Was genau macht AVX10.2, warum ist das so anzustreben?
AVX bedingt, dass man viele Werte mit der selben Operation in einem Takt erledigt werden können. AVX, AVX2 und AVX512 je immer doppelt soviel wie der Vorgänger (128bit, 256bit, 512bit). Wobei AVX512 fürchterlich fragmentiert ist, da es mehrere Suberweiterungen gibt und die Verfügbarkeit über das Produktportfolio einfach gewürfelt ist.
AVX10 und alles danach bringt Ordnung in das Ganze. Suberweiterungen sind Geschichte und es gibt einen einheitlichen Satz an Registern für die 128, 256 und 512bit Operationen.
latiose88 schrieb:
Es wird wohl so wie bei AMD funktionieren. 2 256 Bit avx 2 können dann zusammen zu avx 512 zusammen geschaltet werden. Ist dann nicht mehr so schlimm weil es am Ende noch immer auf avx 2 also 256 basiert .
Nicht 2x AVX2, sondern die FPUs/ALUs können so ausgelegt werden, dass sie je nur die Hälfte der Vektoren bearbeiten. Also zwei 256bit µOps für ein 512bit AVX Befehl. Wobei es da ein paar Nachteile gibt. Gelegentlich sind bei der Zerlegung mehr als zwei µOps nötig, um die 512bit AVX Operation abzubilden.
Zerlegung in 128bit bei 512AVX Befehlen ginge auch, aber tendenziell braucht es dann nicht vier µOps sondern >=8µOps, was ein erheblicher Nachteil wäre.
darth_mickrig schrieb:
Mit dem Big.Little Konzept waren die unterschiedlichen unterstützten Instruktionen aber wohl zu kompliziert im scheduling.
Das geht eher in die Richtung Unmöglich, im Regelfall weiß das Betriebssystem ja nicht welche Operationen im Programmcode kommen. Es könnte also schlicht keine Zuordnung an entsprechende Kerne erfolgen. Wobei Prozessoren (sinnvoller weise) bei illegalen Instruktionen den Programmablauf unterbrechen und ans Betriebssystem übergeben. Das was dir vorschwebt würde bedeuten, einfach mal grundlegend Prozessordesign und Betriebssysteme umzubauen und tendenziell Sicherheitsprobleme zu eröffnen.
wern001 schrieb:
Wieviel Software außer Benchmark gibt es eigentlich die AVX512 benötigen bzw. unterstützen? Kann man das an zwei Händen abzählen?
Multimedia, Verschlüsselung, Kompression, Textparser, Aufbau/Änderung von Binärbäumen, ..
Es gibt vergleichsweise wenig Anwendungen, wo Vektorisierung nichts bringt und mitunter lohnt es sich das Programm bzw. Algorithmen zu ändern um die Vorteile mitzunehmen. Wobei die Teilaspekte in den allermeisten Anwendungen vorkommen.
Die Adaption von AVX512 ist ansonsten halt mau wegen der bereits erwähnten Probleme. AVX512 ist Fragmentiert und Intel CPUs haben zu große Wartezeiten, als das es sich lohnen würde ein paar hundert AVX512 Befehle loszutreten.
Innocience schrieb:
So ganz erschließt sich mir nicht, warum man weiterhin nach E und P Kerne aufteilt, wenn - soweit mein Verständnis - das den Sinn der E Kerne komplett in Frage stellt. Eigentlich sollten es ja mal auf Fläche optimierte Kerne sein. Ich kann mir nicht vorstellen, dass AVX nicht doch wieder eine Große Menge an Fläche schluckt.
P Core bekommt ein oder zwei 512bit breite FPUs, E-Core bekommt eine 256bit FPU und zerlegt die 512bit breiten Befehle. Zudem bekommen die P-Cores wahrscheinlich deutlich dickere Load/Store-Einheiten im Vergleich zum E-Core. Der E-Core hat damit geringeren Platzbedarf, kann aber überhaupt AVX10.2, wenn auch zwischen E- und P-Core mindestens der Faktor zwei beim Durchsatz liegt.
AMD macht das bei Zen5 ja auch, die mobilen Chips haben auch nur 256bit Rechenwerke und bieten dennoch AVX512 an.
pioneer3001 schrieb:
Die Bezeichnungen AVX10.1 und AVX10.2 sind genau so blöd wie AVX-512. Man hätte das schlicht AVX3/4/5 nennen können. Und die Frage ist was AMD mit diesen dummen Bezeichnungen anfangen soll. Sollen die jetzt etwa auch AVX10.1 und AVX10.2 raus bringen, weil Intel nichts gebacken bekommt? Und selbst bei Bezeichnungen versag Intel die für alle x86-Hersteller geeignet wären. Wie ich immer sage: Charakter ist nicht heilbar.
Der Name ist egal, hauptsache der Spaß wird einheitlich!
pioneer3001 schrieb:
Ich fände es gut, wenn AMD Intel ordentlich aufs Maul geben würde als Antwort indem sie selbst ein AVX3 raus bringen, das dann 1024 Bit breit ist und doppelt so viele Register hat wie jetzt.
Je größere die Vektoren werden, desto geringer werden tendenziell die Einsatzmöglichkeiten. Zudem alle Bereiche die tendenziell von so dicken Vektoren profitieren auf Matrixrechenwerken und/oder GPUs sowieso Größenordnungen schneller laufen könnten.
pioneer3001 schrieb:
nderer Trick: Intern könnte AMD 1024 Bit breite ALUs verwenden. Denn so weit ich weiß kann jeder CPU-Kern bislang nur zwei 512-Bit-Register zur gleichen Zeit verrechnen, obwohl es 32 von denen gibt (zmm0 bis zmm31). Man kann während dessen die anderen Register nur mit Daten voll stopfen (pre-cacheing). Mit 1024 Bit breiten internen ALUs könnte man statt zwei dann vier der 32 Register gleichzeitig verrechnen. Das würde in manchen Anwendungen die Performance fast verdoppeln. Problem: Ström.
Wieso der Aufwand, ein zweiter 512bit breiter Executionport und die CPU kann zwei 512bit Instruktionen parallel abfeiern, ohne neue Instruktionen einzuführen. Es müsste halt "nur" die Anzahl an Load/Store-Einheiten ebenso verdoppelt werden, die Bandbreite zu allen Caches und zum Arbeitsspeicher.
Oder man schiebt entsprechende Jobs in Richtung GPU, schaut aus wie ein Vektorrechenmonster, hat eine Speicheranbindung als wäre es für ein Vektorrechenmonster optimiert, ..