Bericht Intel Clearwater Forest im Detail: 12 × 24 schnellere Kerne mit großem L3-Cache à la X3D

adfsrg schrieb:
AMD war nicht in der Lage eine eigene Architektur von Grund auf neu zu entwickeln,

AMD 29000. Es ist keine Kunst, eine Architektur zu entwickeln, manche Leute machen das als Hobby (lies die Usenet-Gruppe comp.arch). Es ist eine Kunst, eine erfolgreiche Architektur zu entwickeln. AMD hat das mit AMD64 geschafft, Intel mit IA-64 trotz gewaltigen Hypes nicht so recht. Und zum Erfolg braucht man eben auch die Moeglichkeit, die existierende Software auch noch schnell genug laufen zu lassen. Und in dem Bereich waren die Itanium-Prozessoren noch schwaecher als sonst.
Ergänzung ()

BAR86 schrieb:
Das eine ist halt ob man 64 Bit Anwendungen ausführen kann -was geht, weil du eine ursprünglich für 32 Bit entwickelte Architektur um Register erweitert verwendet hast, und adfsrg spricht davon ob die Hardware von Grundauf auf 64 Bit hin entwickelt ist.

Was soll "von Grund auf auf 64 Bit hin entwickelt" heissen?

Auf einem AMD64-Prozessor kannst Du die 32-bit-Programme nicht im 64-bit-Mode ausfuehren, und umgekehrt, die 64-bit-Programme nicht im Compatibility Mode (und schon gar nicht in einem der legacy modes).

Auf SPARC v9 kannst Du 32-bit-Programme (SPARC v8) ausfuehren, und SPARC v8 kam vor SPARC v9 und ist in SPARC v9 eingeschlossen, also nicht "von Grund auf auf 64 bit hin entwickelt".

Ok, dann nehmen wir besser die Alpha: Da hatte schon der erste Prozessor 64-bit-Adressen, Register, usw. Die Architektur ist in vielen Bereichen aber sehr aehnlich der MIPS-IV-Architektur, die der 64-Bit-Nachfolger der 32-bittigen MIPS-III-Architektur war. Und auf der Alpha konnte man 32-bit Software (VMS, Windows NT) laufen lassen. Also, woran machst Du "von Grund auf auf 64 bit hin entwickelt" fest?

Die ersten IA-64-Prozessoren haben (extrem langsame) IA-32-Hardware, also "nicht von Grund auf auf 64-bit hin entwickelt"? Und man kann auf IA-64 IA-32-Programme emulieren, ohne diese IA-32-Hardware bemuehen zu muessen (da diese 32-bit-Hardware so langsam war, hat man sie in spaeteren Prozessoren dann weggelassen und alles mit dem Emulator gemacht). Naja, jedenfalls haben IA-64-Prozessoren (und SPARC und Power) auch fuer 64-bit-Software weniger Leistung gebracht als AMD64-Prozessoren, vor allem in den 2010er-Jahren hat AMD64 eindeutig dominiert.

Erst seit dem Apple M1 (2020) gibt es konkurrenzfaehige Prozessoren mit einer anderen Architektur: ARM A64. Wurde die "von Grund auf auf 64 bit hin entwickelt"? Einerseits ist der Integer-Befehlssatz deutlich anders als der von ARM A32/T32, andererseits ist der Befehlssatz schon so gestaltet, dass eine gemeinsame Execution Engine verwendet werden kann (z.B. haben beide die gleiche Flag-Architektur), und der Gleitkommabefehlssatz ist der selbe. Und dann gibt's noch den Plan, 32-Bit-Software (ILP32) auf ARM A64 laufen zu lassen. Also auch nichts mit der reinen 64-bit-Lehre.

Reine 64 Bit CPUs gibts schon lange

Welche? Und wie unterscheidest Du sie von unreinen 64-bit CPUs?
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: stefan92x
mae schrieb:
Was soll "von Grund auf auf 64 Bit hin entwickelt" heissen?
Diverse Architektur/Designentscheidungen bei der CPU würden wohl anders aussehen, wenn du sie
a) ausgehend von 32 Bit auf 64 Bit erweiterst, statt sie rein 64 Bit Kompatibel machst ebenso
b) Compiler und Programme die auf dieser Architektur laufen. Letztere könnten zuerst so gestaltet sein, dass sie eigentlich auf 32 Bit hin optimiert sind und dann erweitert wurden, statt dass man generell nicht über die Limitierungen von einer 32 Bit Architektur nachdenkt.

In der Praxis dürften heute die Unterschiede gering sein, man sah ja auch bei Alpha/Itanium x86-64´dass es weniger daran lag, dass eine Architektur "rein" 64 ist sondern eher an diversen anderen Designentscheidungen
 
adfsrg schrieb:
Ja, das ist korrekt. Ausgangspunkt der ganzen Diskussion war aber doch, dass ich AMD unsympathisch finde, weil sie sich aus dem High-End-Segment zurückgezogen haben und deswegen die Preise so stark angezogen sind.

Stimmt doch gar nicht, die Initiale Begründung war:
adfsrg schrieb:
Mir ist AMD aus anderen Gründen unsympathisch. Zuerst haben die ja einfach nur Intel kopiert, sogar den Namen, so dass Intel den 586er Pentium genannt hat, damit sie den Namen schützen konnten.

=> Also weil sie nur Kopierer waren die nix können.
Das habe ich hinterfragt mit:
cbmik schrieb:
"aber trotzdem" entkräftet nicht, dass es nichts schlechtes ist mit Lizenz zu fertigen.
Warum auch nicht wenn etwas zu dem Zeitpunkt gut ist und gutes Geld verdient werden kann.


Des weiteren war deine Aussage:
adfsrg schrieb:
Aber die Kunden haben ja keine andere Wahl.
Das ist eine generelle Aussage die einfach Blödsinn ist, dein Nachsatz dass es für dich sinnvoll war zur 4090 zu greifen ist dann ein Versuch DEINE Präferenzen als Legitimation für eine generelle Aussage zu nehmen.
cbmik schrieb:
Wäre die Aussage "Aber die Enthusiasten-Kunden haben ja keine andere Wahl." gewesen, hätte ich dir nur zustimmen können, so aber ist es reine Übertreibung.

Danach hast du auf
adfsrg schrieb:
Da ist haarscharf an einer Beleidigung vorbei
gespielt und den Fokus verlagert.

Und dann selbst am Ende mit Fanboy-Beschimpfung garnierst bei jemanden der ca. 50:50 zwischen Intel und AMD gesprungen ist (Intel 386, 486 DX2 66, Pentium 133, Pentium 166, Pentium 200, Pentium 233, Pentium II 450, Athlon 1333,.. Athlon 2600, Q6600, Xeon E3-1230, R9 5950X).

Dass du zuerst begründest warum du AMD nicht mags ist ok, nur deine Begründung war zu hinterfragen.

Mir ist es echt egal ob Leute Firma X mögen oder nicht, nur dieses mit der Meinung verheiratet sein ist ...
Dafür konstruierst du dir Argumente die sehr höflich gesagt "gewagt" sind, ab hier ignoriere ich dich einfach.
Diskussionskultur sieht anders aus.
 
Zuletzt bearbeitet:
BAR86 schrieb:
Diverse Architektur/Designentscheidungen bei der CPU würden wohl anders aussehen, wenn du sie
a) ausgehend von 32 Bit auf 64 Bit erweiterst, statt sie rein 64 Bit Kompatibel machst

Wenn man sich real existierende 64-bit-Befehlssaetze anschaut, kann man am Befehlssatz nicht erkennen, ob das urspruenglich ein 32-bit-Befehlssatz war, der auf 64 bits erweitert wurde (MIPS-IV und SPARC v9), ein als 64-bit-Befehlssatz mit 32-bit Subset konzipierter Befehlssatz (RISC-V und angeblich PowerPC), ein Befehlssatz, der keine Erweiterung eines 32-bit-Befehlssatzes ist, aber fuer die Verwendung desselben Decoders wie ein 32-bit-Befehlssatz konzipiert ist (AMD64), oder einer, der einen anderen Decoder verwendet als der 32-bit-Befehlssatz auf der selben Maschine (IA-64, ARM A64).

ebenso
b) Compiler und Programme die auf dieser Architektur laufen. Letztere könnten zuerst so gestaltet sein, dass sie eigentlich auf 32 Bit hin optimiert sind und dann erweitert wurden, statt dass man generell nicht über die Limitierungen von einer 32 Bit Architektur nachdenkt.

Das macht bei den meisten Programmen keinen Unterschied (nur eventuell Portierungsaufwand). Nur wenn ein Programm an die Grenzen des 32-bit-Systems gestossen ist (weil es z.B. gerne mehr als 2 bzw. 3GB (je nach Betriebssystem) brauchen wuerde), dann war es natuerlich dadurch eingeschraenkt; aber da war oft das physische RAM eher eine Begrenzung als die 32 bits. Unsere 1995 gekauften Alphas hatten z.B. 128MB-256MB, die letzte (2000 oder so) WIMRE 1GB. Eine Idee war, dass 64 bits einem erlauben, grosse Files in den Adressraum zu mappen, aber das verwenden nur relative wenige Programme (auch unter den neuen, in der 64-bit-Welt geschriebenen), und die, die es verwenden, haben es dann auch eingebaut als es dank 64 bit moeglich war.

Fuer Compiler war AMD64-code leichter zu erzeugen als z.B. ARM A64, weil AMD64 so aehnlich zu IA-32 war. Von IA-64 wollen wir gar nicht reden, die Architektur basierte auf der Idee von besonderen Compilern, die ihre Features ausnutzen (hat aber nichts mit 64 vs. 32 bits zu tun), die Compiler wurden nicht ganz so gut wie erwartet, aber, was schwerer wiegt, Prozessoren mit out-of-order execution wurden viel besser als erwartet.

In der Praxis dürften heute die Unterschiede gering sein

So ist es.
 
stefan92x schrieb:
Das lag nicht an AMD
Eben doch. Wenn AMD kein AMD64 gebracht hätte, und auch Intel x86 nicht auf 64 gehoben hätte, dann wäre IA64 die einzige Alternative gewesen. Deswegen ist es doch allein AMDs Schuld
stefan92x schrieb:
Der Weg, x86 einfach zu verbreitern hatte sich schon beim Schritt von 16 auf 32 Bit bewährt.
Bewährt? Unter den Konsequenzen leiden wir noch heute und das was AMD dann gemacht hat, macht es noch schlimmer. Ist dir überhaupt klar, wieviel Chipfläche und somit Energie das verschwendet? Ist dir klar, dass deine CPU heute noch zuerst mit 16 Bit bootet? Ist dir klar, dass diese Altlasten mit ein Grund sind, warum ARM heute so erfolgreich ist und wir somit zwei verschiedene Architekturen in unseren Handys und Desktops nutzen müssen?
stefan92x schrieb:
sie beruht aber zumindest teilweise auf Fehleinschätzungen deinerseits. Denen wird dann halt widersprochen.
Dass du das als Fehleinschätzung interpretierst, liegt wohl mehr an deiner fehlenden Sachkenntnis
stefan92x schrieb:
Broadwell war nichts besonderes.
Passend zum Thema fehlende Sachkenntnis: https://www.computerbase.de/artikel/prozessoren/intel-core-i5-6500-5675c-4690-test.51527/seite-9
Wie du siehst war Broadwell doch etwas Besonderes
mae schrieb:
Warum hast Du keine solche Architektur gekauft?
Weil AMD durch AMD64 dafür gesorgt hat, dass nicht "alle" auf eine reine 64-Bit-Architektur gewechselt sind
heroesgaming schrieb:
Stimmt, ging es nicht. Du hast es aber dorthin gelenkt.
Das warst DU!
heroesgaming schrieb:
Grammatikalische Spitzfindigkeit, denn du setzt Vergleichbarkeit im sprachlichen Sinne mit technischer Vergleichbarkeit gleich.
Das ist doch wohl viel mehr eine Spitzfindigkeit, als was ich gesagt habe. Kann es sein, dass du kein Muttersprachler bist und vielleicht die Begriffe "vergleichbar" und "gleichwertig" verwechselst? Nach deiner Logik wäre ein Benzinmotor "technisch" nicht vergleichbar mit einem Dieselmotor. Selbstverständlich werden beide Motoren ständig technisch miteinander verglichen - was auch sinnvoll ist, da sie ja im Prinzip das gleiche tun. Hier ist es genauso sinnvoll die beiden Arten von Cache zu vergleichen, da sie beide das gleiche tun.
heroesgaming schrieb:
Du versuchst AMD64 als den einer nativen x64-Architektur zweifelsfrei unterlegenen Weg darzustellen, obwohl er sich am Markt durchsetzen konnte, womit an sich klar sein sollte, dass er seine Vorteile hatte und hat.
Der Vorteil war halt, dass AMD das machen konnte, weil es technisch sehr einfach ist und AMD niemals die Marktmacht gehabt hätte eine reine 64-Bit-Architektur am Markt zu etablieren, so dass "alle" von x86 darauf gewechselt wären - Intel schon. Leider ist es dank AMD nicht dazu gekommen. Für uns Nutzer hat es aber doch ganz eindeutig den Nachteil, dass wir noch heute die ganzen Altlasten mitschleppen
BAR86 schrieb:
Reine 64 Bit CPUs gibts schon lange
Hier im Artikel geht es um Desktop-CPUs, meine Aussagen beziehen sich ebenfalls auf diese, auch wenn ich das nicht explizit gesagt habe. Ich ging davon aus, dass es durch den Kontext klar ist. War im Nachhinein betrachtet wohl eine Fehlannahme.
Also um es klarzustellen: Ich werfe AMD vor, dass AMD64 schuld daran ist, dass wir heute noch hauptsächlich mit 16-Bit-CPUs arbeiten und spielen, über Erweiterungen auf 32 Bit und auch auf 64 Bit verfügen. Ich fände es besser, wenn wir stattdessen "reine" 64-Bit-CPUs nutzen würden, ohne den 16-Bit- und 32-Bit-Teil.
mae schrieb:
Anders Thema, s.o.
mae schrieb:
AMD hat das mit AMD64 geschafft, Intel mit IA-64 trotz gewaltigen Hypes nicht so recht.
Wobei AMD64 ja keine komplett eigene Architektur ist, sondern nur eine Erweiterung der erweiterten 16-Bit-Architektur. Genau das werfe ich AMD ja vor.
BAR86 schrieb:
In der Praxis dürften heute die Unterschiede gering sein
Also zumindest die Dekoder sind um einiges komplexer, als sie sein müssten. Die Firmware ebenso. Der ganze Bootprozess mit dieser Moduswechsel-Kaskade auch. Schau dir doch mal ARM an, wo du die ganzen Nachteile nicht hast
cbmik schrieb:
Stimmt doch gar nicht, die Initiale Begründung war:
Du zitierst nur einen Teil des Beitrags um es so aussehen zu lassen, als ob ich was Falsches gesagt hätte, dabei steht in exakt diesem Beitrag genau das was ich gesagt habe.
mae schrieb:
Wenn man sich real existierende 64-bit-Befehlssaetze anschaut, kann man am Befehlssatz nicht erkennen, ob das urspruenglich ein 32-bit-Befehlssatz war, der auf 64 bits erweitert wurde (MIPS-IV und SPARC v9), ein als 64-bit-Befehlssatz mit 32-bit Subset konzipierter Befehlssatz (RISC-V und angeblich PowerPC), ein Befehlssatz, der keine Erweiterung eines 32-bit-Befehlssatzes ist, aber fuer die Verwendung desselben Decoders wie ein 32-bit-Befehlssatz konzipiert ist (AMD64), oder einer, der einen anderen Decoder verwendet als der 32-bit-Befehlssatz auf der selben Maschine (IA-64, ARM A64).
Die Tatsache, dass es sich um eine Erweiterung und nicht um eine Neuentwicklung handelt (im Gegensatz zu Intels gescheiterter IA-64-Architektur), lässt sich an folgenden, tief in der Architektur verankerten Merkmalen eindeutig erkennen:



1. Die Legacy-Register-Aliase (Namen und Struktur)​



Dies ist das sichtbarste und hartnäckigste Erbe. Die 64-Bit-Register sind direkte Erweiterungen der alten 16-Bit- und 32-Bit-Register und behalten deren ursprüngliche Benennung bei:

  • 16-Bit-Register: AX, BX, CX, DX (eingeführt mit dem 8086).
  • 32-Bit-Register: EAX, EBX, ECX, EDX (eingeführt mit dem 80386). Das E steht für Extended.
  • 64-Bit-Register: RAX, RBX, RCX, RDX (eingeführt mit AMD64). Das R steht für Register (oder inoffiziell Really Extended).
Jedes 64-Bit-Register (RAX) enthält das 32-Bit-Register (EAX), das wiederum das 16-Bit-Register (AX) enthält, welches sich in zwei 8-Bit-Register (AH und AL) aufteilt. Operationen auf den kürzeren Aliasen (z.B. auf EAX) ändern nur die unteren Bits des 64-Bit-Registers, während die oberen 32 Bits genullt werden (bei den R-Registern) oder unverändert bleiben (bei den E-Registern, bezogen auf das R-Register), was eine signifikante architektonische Komplexität zur Beibehaltung der Abwärtskompatibilität erfordert.

Fazit: Hätte AMD64 eine Neuentwicklung begonnen, wären die Register einfach R0 bis R15 genannt worden, ohne diese verwirrende Alias-Struktur.



2. Segmentregister und Betriebsmodi​



Obwohl Segmentierung im nativen 64-Bit-Modus (Long Mode) weitgehend deaktiviert und auf ein Flat Memory Model reduziert ist, existieren die Segmentregister (CS, DS, SS, ES, FS, GS) weiterhin in der Architektur.

  • Im Long Mode sind CS, DS, SS und ES effektiv auf Null gesetzt, aber sie müssen existieren, um den Compatibility Mode und den Übergang vom älteren Protected Mode zu ermöglichen.
  • Die Register FS und GS werden weiterhin aktiv genutzt (z.B. für Thread-Local Storage), was eine direkte Fortsetzung der x86-Legacy-Nutzung darstellt.
Fazit: Eine "saubere" 64-Bit-Architektur (wie ARMv8) würde keine Segmentregister benötigen. Ihre bloße Existenz ist ein Überbleibsel der 16-Bit-Real-Mode-Ära.



3. Der Befehlsdekoder und REX-Präfix​



Der x86-Befehlssatz ist ein CISC (Complex Instruction Set Computer) mit variabler Befehlslänge, was im Gegensatz zu modernen RISC-Designs steht. AMD64 behält dieses grundlegende Design bei:

  • Beibehaltung des Opcode-Schemas: Die meisten 32-Bit-Instruktionen behalten ihren Opcode, benötigen jedoch ein spezielles Präfix für 64-Bit-Operationen.
  • Das REX-Präfix: Um die 8 neuen 64-Bit-Register (R8 bis R15) und die 64-Bit-Operandengröße zu unterstützen, musste AMD ein neues optionales Präfix (REX-Präfix) vor dem eigentlichen Opcode definieren. Das REX-Byte signalisiert dem Dekoder, dass es sich um einen 64-Bit-Befehl handelt und/oder eines der neuen Register verwendet wird.
Fazit: Das Hinzufügen eines optionalen Präfixes (REX) in den existierenden variablen Befehlsstrom ist die typische Methode, um einen alten CISC-Befehlssatz zu erweitern, ohne die Abwärtskompatibilität zu brechen. Ein neues Design würde von Anfang an 64-Bit-Instruktionsformate definieren.



4. Das Konzept des Kompatibilitätsmodus (Compatibility Mode)​



Die AMD64-Architektur definiert drei Hauptbetriebsmodi:

  1. Long Mode (64-Bit-Modus + Compatibility Mode)
  2. Protected Mode (32-Bit-x86-Modus)
  3. Real Mode (16-Bit-x86-Modus, für Bootstrapping)
Der Compatibility Mode innerhalb des Long Mode erlaubt die Ausführung von 32-Bit-x86-Code auf einem 64-Bit-Betriebssystem, ohne dass das System den 32-Bit-Protected Mode verlassen muss. Diese Dual-Fähigkeit (64-Bit-Modus und 32-Bit-Kompatibilität) ist das architektonische Fundament, das beweist, dass AMD64 ein Aufsatz auf IA-32 ist, um die nahtlose Migration alter Software zu gewährleisten.
 
adfsrg schrieb:
Also zumindest die Dekoder sind um einiges komplexer, als sie sein müssten. Die Firmware ebenso. Der ganze Bootprozess mit dieser Moduswechsel-Kaskade auch. Schau dir doch mal ARM an, wo du die ganzen Nachteile nicht hast
nun, dass es "sauberer" oder kompakter ginge will ich gar nicht leugnen.
Es ist immer fein etwas von Grund auf Neues, Sauberes zu haben, statt etwas konstant Weiterentwickeltes, wo oft was dazugeflanscht wurde.

Ich hab' eher die Auswirkungen auf den Enduser gemeint
 
BAR86 schrieb:
Ich hab' eher die Auswirkungen auf den Enduser gemeint
Komplexere Dekoder bedeuten mehr Energieverbrauch was weniger Takt bedeutet und sie brauchen auch mehr Taktzyklen, was weniger IPC bedeutet. Beides ist für den Enduser relevant. Schade, dass x86S nicht kam, dann hätten wir einen direkten Vergleich.
 
adfsrg schrieb:
Eben doch. Wenn AMD kein AMD64 gebracht hätte, und auch Intel x86 nicht auf 64 gehoben hätte, dann wäre IA64 die einzige Alternative gewesen. Deswegen ist es doch allein AMDs Schuld.
Das ist schon eine ziemlich wilde Interpretation. Wäre natives 64-Bit konkurrenzfähig gewesen, hätte es sich auch durchgesetzt. Genauso gut kann man daher auch interpretieren, dass Intel "schuld" sei, da sie Itanium nicht in konkurrenzfähiger Form liefern konnten. Aber lassen wir das ... letztlich ist beides Polemik, die in keiner Form zielführend ist.
adfsrg schrieb:
Lies nochmal genauer :D Ich habe lediglich benannt, dass du diesen verdeckten Themenwechsel abgezogen hast. Dass du das vermeintlich nicht gemerkt hast und dir dann dachtest "Äh, warum gebraucht der jetzt plötzlich das Wort "Grammatik"?" ist nun wirklich nicht mein Problem :D
adfsrg schrieb:
Das ist doch wohl viel mehr eine Spitzfindigkeit, als was ich gesagt habe.
Nochmal, ich stelle lediglich deine Spitzfindigkeit heraus. Du projizierst ganz gewaltig.
adfsrg schrieb:
Kann es sein, dass du kein Muttersprachler bist und vielleicht die Begriffe "vergleichbar" und "gleichwertig" verwechselst? Nach deiner Logik wäre ein Benzinmotor "technisch" nicht vergleichbar mit einem Dieselmotor. Selbstverständlich werden beide Motoren ständig technisch miteinander verglichen - was auch sinnvoll ist, da sie ja im Prinzip das gleiche tun. Hier ist es genauso sinnvoll die beiden Arten von Cache zu vergleichen, da sie beide das gleiche tun.
Ich bin in der Tat kein Muttersprachler, verstehe das Deutsche aber offenbar dennoch besser als du. Wie ich bereits sagte, dass ich dich auf deine Spitzfindigkeiten hinweise, ist in sich noch keine Spitzfindigkeit. Im Übrigen machst du ja grad so weiter, indem du mir jetzt das falsche Verständnis von Worten unterstellst. Es wäre ansonsten durchaus möglich gewesen, zum Sachthema zurückzukehren und tatsächliche Argumente anzuführen, nachdem ich dich darauf hingewiesen hatte, dass du ablenkst. Das hast du aber mit aller Gewalt vermieden :D
Ich bin darauf jetzt, entgegen meiner ursprünglichen Aussage, doch weiter eingangen - mea culpa. An meiner Selbstbeherrschung muss ich offenbar arbeiten :D
adfsrg schrieb:
Der Vorteil war halt, dass AMD das machen konnte, weil es technisch sehr einfach ist und AMD niemals die Marktmacht gehabt hätte eine reine 64-Bit-Architektur am Markt zu etablieren, so dass "alle" von x86 darauf gewechselt wären - Intel schon. Leider ist es dank AMD nicht dazu gekommen. Für uns Nutzer hat es aber doch ganz eindeutig den Nachteil, dass wir noch heute die ganzen Altlasten mitschleppen
Straft dich die Geschichte hier nicht lügen? Ganz offenbar hatte auch Intel diese Marktmacht nicht, denn sonst hätte AMD64 niemals eine so starke Konkurrenz zu nativem x64 sein können, dass Intel ebenfalls umschwenken musste.
Ich halte es für einigermaßen inkohärent, AMD exklusiv für diese technische Entwicklung verantwortlich zu machen, zugleich herauszustellen, dass Intel der weit mächtigere Player am Markt war, das für den schlussendlichen Verlauf dann aber zu ignorieren. Aber gut ... wie du meinst.
 
heroesgaming schrieb:
verstehe das Deutsche aber offenbar dennoch besser als du.
Eben nicht. Du behauptest ja steif und fest, dass es nicht vergleichbar wäre.
Aber das ist es ja offensichtlich. Wenn ich sage, beides sind Caches, aber der eine ist auf diese Art und der andere auf die andere Art implementiert, dann ist dies ein Vergleich - sogar ein technischer Vergleich. Das hat mit Grammatik nichts zu tun.
heroesgaming schrieb:
indem du mir jetzt das falsche Verständnis von Worten unterstellst
Ich unterstelle nichts. Ich hab eher versucht dir eine Brücke zu bauen, damit du dein Gesicht wahren kannst.
heroesgaming schrieb:
zum Sachthema zurückzukehren und tatsächliche Argumente anzuführen
Das hatte ich doch damit bezweckt. Wir können uns gerne darauf einigen, dass beides Caches sind und deswegen vergleichbar, aber nicht gleichwertig, da die aktuelle Technologie weitaus fortgeschrittener und somit auch besser ist als die uralte Technologie, die Intel damals eingesetzt hat.
heroesgaming schrieb:
Straft dich die Geschichte hier nicht lügen?
Nein, da die Geschichte ja anders abgelaufen ist. Aber wenn AMD nicht AMD64 herausgebracht hätte, und der damalige Weltmarktführer für CPUs, also Intel, keine 64-Bit-x86er rausgebracht hätte, dann wären wohl "alle" auf IA64 gewechselt, wenn mehr als 4 GB absolut notwendig gewesen wären. Dieses hypothetische Szenario hätte meiner Meinung nach dazu geführt, dass wir heute bessere CPUs hätten. Schau dir doch mal ARM an; in manchen Aspekten sind die besser als x86. Hätte man damals einen harten Cut gemacht und alle wären umgeschwenkt, dann wäre ARM vielleicht niemals so erfolgreich gewesen und wir hätten die gleichen CPUs in unseren Handys wie in unseren PCs. Erinnerst du dich daran, dass Apple eigentlich Intel CPUs für die iPhones haben wollte, aber ARM einfach besser geeignet war? Stell dir vor wie toll das wäre, wenn das nicht passiert wäre. Stell dir mal weiter vor, was passiert wäre, wenn Microsoft mit Windows Phone/Mobile nicht das Problem der fehlenden Apps gehabt hätte, sondern man hätte all seine PC-Software auch auf dem Handy laufen lassen können, weil sie die gleichen CPUs und das gleiche OS gehabt hätten.
 
adfsrg schrieb:
Eben doch. Wenn AMD kein AMD64 gebracht hätte, und auch Intel x86 nicht auf 64 gehoben hätte, dann wäre IA64 die einzige Alternative gewesen. Deswegen ist es doch allein AMDs Schuld
IA64 war Schrott und hat deshalb verloren. Hätte Intel eine gute neue 64bit Architektur gebaut, hätte die sich problemlos durchgesetzt.

Intels Totalversagen an dieser Front AMD vorzuwerfen ist absurd.
adfsrg schrieb:
Ist dir klar, dass diese Altlasten mit ein Grund sind, warum ARM heute so erfolgreich ist und wir somit zwei verschiedene Architekturen in unseren Handys und Desktops nutzen müssen?
Spielt wohl mit rein, macht aber weniger aus als du zu glauben scheinst. Vergleichbar ausgelegt ARM und x86 CPUs sind vergleichbar effizient.

Es ist aber tatsächlich so, dass AMD und vor allem Intel so auf maximale Leistung fokussiert waren, dass sie kaum Richtung effiziente CPUs hin entwickelt haben und Intel dann auch noch Fertigungsprobleme hatte. Das war eine offene Flanke, das Resultat ist, dass der Smartphonemarkt und Apple komplett mit ARM laufen.
adfsrg schrieb:
Passend zum Thema fehlende Sachkenntnis: https://www.computerbase.de/artikel/prozessoren/intel-core-i5-6500-5675c-4690-test.51527/seite-9
Wie du siehst war Broadwell doch etwas Besonderes
Nein. Die Variante mit L4-Cache lief unter dem Namen Crystalwell, wie ich auch erwähnt habe (was du aber nicht mit zitiert hast).
 
  • Gefällt mir
Reaktionen: heroesgaming
stefan92x schrieb:
Intels Totalversagen an dieser Front AMD vorzuwerfen ist absurd.
Das mache ich ja auch nicht. Intel Totalversagen hätte sich aber höchstwahrscheinlich mangels Alternative durchgesetzt und diese Alternative haben wir AMD zu verdanken. Das werfe ich AMD vor
Ergänzung ()

stefan92x schrieb:
Die Variante mit L4-Cache lief unter dem Namen Crystalwell, wie ich auch erwähnt habe
Dass du es erwähnt hast, macht es ja nicht richtig. Richtig ist, dass es bei manchen der Haswell auch diesen L4 wie bei Broadwell gab und dieser L4 heißt Crystallwell.
 
Zuletzt bearbeitet:
adfsrg schrieb:
Das mache ich ja auch nicht. Intel Totalversagen hätte sich aber höchstwahrscheinlich mangels Alternative durchgesetzt und diese Alternative haben wir AMD zu verdanken. Das werfe ich AMD vor
Du hättest also lieber völligen Müll statt etwas, was nicht perfekt aber gut ist? Habe verstanden...
adfsrg schrieb:
Ergänzung ()


Dass du es erwähnt hast, macht es ja nicht richtig. Richtig ist, dass es bei manchen der Haswell auch diesen L4 wie bei Broadwell gab und dieser L4 heißt Crystallwell.
Ok, vielleicht hab ich da dann die exakten Bezeichnungen durcheinander bekommen. Bleibt dabei, die Varianten mit L4 waren das interessante.
 
stefan92x schrieb:
Du hättest also lieber völligen Müll statt etwas, was nicht perfekt aber gut ist?
Völliger Müll ist doch übertrieben. Und das hätte sich ja weiterentwickelt. Ich gehe stark davon aus, dass es heute deutlich besser wäre.
 
@adfsrg Sicher wäre es besser geworden. Aber VLIW war eine Sackgasse. Es hat fundamentale Gründe, warum es heute keine mehr gibt, obwohl es zu der Zeit einige Implementierungen gab (neben dem Itanium z.B. auch die Prozessoren von Transmeta, aber auch die GPUs der späten ATI/frühen AMD-Generationen).

Hätte Intel IA64 nicht aufgegeben, sondern voll drauf gesetzt, hätte ein halbes Dutzend anderer Architekturen sicherlich länger überlebt.
 
  • Gefällt mir
Reaktionen: adfsrg
adfsrg schrieb:
Komplexere Dekoder bedeuten mehr Energieverbrauch was weniger Takt bedeutet und sie brauchen auch mehr Taktzyklen, was weniger IPC bedeutet. Beides ist für den Enduser relevant. Schade, dass x86S nicht kam, dann hätten wir einen direkten Vergleich.
daher schrieb ich ja, dass die Auswirkungen Gering sind, nicht, dass es keine hätte.
x86S wird schon in einer veränderten, mit AMD abgestimmten Form noch kommen
 
  • Gefällt mir
Reaktionen: adfsrg
cbmik schrieb:
Sowas nennt sich lizensieren, dafür hat Intel auch Geld bekommen.
Mir ist langweilig. Das wurde damals auch nicht von AMD oder Cyrix so veranlasst, sondern von IBM, da diese mehrere Lieferanten wollten für ihren Personal PC.

Und diesen "Lizensierungen" ist ein Teil des Erfolges von Intel auch zuzuschreiben, denn ohne IBM und quasi deren Macht den IBM-PC so durchzudrücken, hätte es auch eine andere CPU-Architektur werden können.
cbmik schrieb:
Komisch, wenns so einfach war warum hat Intel das nicht gemacht?
Nun ja, was Intel damals "getrieben" hat, ist auch etwas, worüber man heute "spekulieren" kann. Vermutlich hat Intel das einfach nicht gemacht, weil man die teure Itanium Entwicklung für den Serverbereich nicht torpedieren wollte.
adfsrg schrieb:
Schon klar, aber trotzdem hat AMD damals nur billige Nachbauten produziert.
Die haben einige Hersteller mehr produziert und das trägt heute auch zum Erfolg von Intel bei. Es hat einen Grund, warum "IBM kompatibel" lange Zeit an vielen PCs stand und warum das um die Jahrtausendwende quasi omnipräsent war.
adfsrg schrieb:
Viel besser wäre eine neue Architektur gewesen, die von Grund auf für 64 Bit konzipiert ist.
Es gibt heute quasi keine Architektur, die nativ direkt für 64 Bit konzipiert wurde. Was auch weitgehend eigentlich unnötig ist, sieht man auch an RISC-V, dass sowohl 32 Bit als auch 64 Bit Wortbreite unterstützt. Wichtig ist, dass die Architekturen entsprechend "flexibel" bereits ausgelegt werden.

Hätte Intel Ende der 70er statt einer 16 Bit, bereits eine 64 Bit Architektur entwickelt, hätte diese heute dennoch viele der Altlasten, weil so etwas wie Registeranzahl als auch der Aufbau der Befehle damals so Stand der Dinge war.

ARM ist deutlich moderner, weil es erst in den 80er entstanden ist und entsprechend auch neuere Paradigmen umgesetzt wurden.
mae schrieb:
Intel mit IA-64 trotz gewaltigen Hypes nicht so recht.
Ich weiß zwar, das IA-64 Ende der 90ern und auch Anfangs der 00er ein Thema war, aber so wirklich Hype war da doch eigentlich nie, oder hab ich da was verpasst.
mae schrieb:
Was soll "von Grund auf auf 64 Bit hin entwickelt" heissen?
Mir ist eigentlich keine heutige Architektur bekannt, die wirklich nativ als 64-Bit-Architektur entwickelt wurde. Klar gab es in den 90er Architekturen die entsprechend entwickelt wurden, aber die sind heute ja so gut wie alle irgendwie tot.
adfsrg schrieb:
Also zumindest die Dekoder sind um einiges komplexer, als sie sein müssten. Die Firmware ebenso. Der ganze Bootprozess mit dieser Moduswechsel-Kaskade auch. Schau dir doch mal ARM an, wo du die ganzen Nachteile nicht hast
Es ist ja nicht so, dass ARM mit Neon als auch jetzt SVE, ihrer Matrix-Extension nicht auch deutlich komplexere Befehle haben, die im weiten nicht mehr so simpel zu decodieren sind, wie noch Anfang der 90er und frühen 00er.
stefan92x schrieb:
IA64 war Schrott und hat deshalb verloren. Hätte Intel eine gute neue 64bit Architektur gebaut, hätte die sich problemlos durchgesetzt.
Intel hat ja IA64 auch relativ schnell wieder fallen lassen, weil sich das VLIW-Konzept als vollkommenes Compiler-Monster entpuppt hat, während das "Pipeline"-Konzept, die Super-Skalarität und OoO beim Pentium Pro auf ging und Pentium 2 und Pentium 3 auch entsprechende Leistungszuwächse hatten.

x86_64 von AMD war ja nur ein Sargnagel der IA64-Architektur. Das Projekt war ja auch von Verspätungen geplagt, dazu auch von Problemen mit den Compiler und so weiter.
 
  • Gefällt mir
Reaktionen: heroesgaming
DevPandi schrieb:
Ich weiß zwar, das IA-64 Ende der 90ern und auch Anfangs der 00er ein Thema war, aber so wirklich Hype war da doch eigentlich nie, oder hab ich da was verpasst.

Letzteres: Vorhersage von 1997-06: >$35G Serververkaeufe mit Itanium im Jahr 2002 (tatsaechlich: so wenig, dass es nicht in der Grafik aufscheint; ~$1G im Jahr 2003, ~$2G 2006). Vorhersage: 70% der 64-bit-Server 2002.

Mir ist eigentlich keine heutige Architektur bekannt, die wirklich nativ als 64-Bit-Architektur entwickelt wurde.

Was auch immer "nativ" in dem Zusammenhang heissen soll:

ARM A64 (alias Aarch64) wurde als 64-bit-Befehlssatz, der parallel zu ARM A32 und T32 (mit jeweils eigenem Decoder) eingesetzt werden sollte, bei dem man wohl erwarten kann, dass er nicht im Hinblick auf Verwendung als 32-bit-Befehlssatz entwickelt wurde; nichtsdestoweniger gibt's angesichts von Prozessoren ohne A32/T32 jetzt ILP32 fuer A64 (dass man also 32-bit-Programme fuer diesen Befehlssatz compilieren kann). Bei AMD64 gibt's auch so eine Idee (x32), die hat aber angesichts dessen, dass diese Prozessoren alle IA-32 ausfuehren koennen, wenig Beachtung gefunden. Jedenfalls stellt sich die Frage: Ist A64 "wirklich nativ als 64-Bit-Architektur entwickelt" worden?

IA-64 wurde als 64-bit-Befehlssatz entwickelt, wobei die 32-bit-Programme urspruenglich ueber den IA-32-Decoder ausgefuehrt werden sollten; das hat dann natuerlich so nicht geklappt, und wenn IA-64 ein Erfolg gewesen waere, haetten die wohl auch eine ILP32-ABI (mit Compiler, Libraries usw.) implementiert, bzw. haben sie das vielleicht eh (die wollten ja auch aeltere 32-bit-PA-RISC-Programme mit Binaeruebersetzung laeufen lassen). Naja, jedenfalls waren die IA-64-Leute so von ihrer Vision gefangen, dass die wohl wenig Gedanken an die alte 32-bit-Software verschwendet haben und das sicher sehr in die Richtung ging, die man vielleicht als "wirklich nativ als 64-Bit-Architektur entwickelt" bezeichnen koennte.

Aber, wie Du schreibst, es macht wenig Unterschied.

Es ist ja nicht so, dass ARM mit Neon als auch jetzt SVE, ihrer Matrix-Extension nicht auch deutlich komplexere Befehle haben, die im weiten nicht mehr so simpel zu decodieren sind, wie noch Anfang der 90er und frühen 00er.

Von den Befehlsformaten (Eingabe in den Decoder) sind die Neon-Befehle nicht komplexer. Von der Decoder-Ausgabe muessen sie aehnlich sein wie Gleitkomma-Befehle in anderen RISCs, mit Steuerbits waehrend der diversen Zyklen des Befehls. Der SIMD-Aspekt macht da wenig unterschied, da werden die Steuerungsbits dann auf alle Lanes verteilt. Da die Befehle entweder als SIMD oder als single-data-Befehl genutzt werden kann, braucht man auch noch ein bit, um das zu selektieren.

Bei SVE sind die Rechenbefehle nicht viel anders wie bei Neon. Dann muessen eben noch ein paar Kontrollbefehle implementiert werden, die sind aber auch nicht komplex.

SME habe ich mir nicht angeschaut, aber ich gehe davon aus, dass da ein paar Rechenbefehle und ein paar Kontrollbefehle dazukommen, von denen jeder aber aehnlich zu dekodieren ist wie bei SVE.

P.S.: Die haben aber auch noch ein paar Befehle in A64, die schon recht weit weg von den ueblichen RISC-Befehlen sind. Einerseits Block-Kopier-Befehle, andererseits Befehle fuer Kryptographie, die viele Register angreifen und ziehmlich viele Zyklen dauern. Immerhin machen letztere Befehle keinen einzigen Speicherzugriff, sind also immer noch im load/store-Rahmen. Bei den Block-Kopier-Befehlen haben sie m.E. die schlimmsten Fehler von CISCs auch vermieden, aber wenn man "nicht RISC" zu begruenden wollte, waere das wohl das, auf das man zeigen wuerde.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: adfsrg
DevPandi schrieb:
weil sich das VLIW-Konzept als vollkommenes Compiler-Monster entpuppt hat
"Entpuppt" klingt so, als ob das überraschend kam. Da das Konzept schon Ende der 70er realisiert wurde, bezweifle ich, dass in den 90ern jemand davon überrascht wurde. Aber gerade dass die Parallelisierung Aufgabe des Compilers war und nicht erst zur Laufzeit gemacht wurde, war doch der größte Vorteil.

Stell dir mal vor, AMD hätte AMD64 nicht rausgebracht und "alle" wären auf IA64 gewechselt. Gut, das hätte dann etwas länger gedauert, bis wir Consumer mehr als 4 GB RAM gehabt hätten, aber dann hätten wir die Probleme mit der Multithreading-Performance in Games wohl nicht oder nur sehr schwach gehabt. Die min fps wären deutlich näher an den avg fps und dass es auf min fps ankommt, sollte klar sein, oder? Stell dir eine Welt vor, in der Sprungvorhersagefehler keine große Rolle spielen und ohne Pipeline-Stalls. Eine Welt in der die Register Stack Engine die Kontextwechsel so sehr beschleunigt, dass viel mehr Rechenzeit für die eigentliche Spiellogik genutzt werden kann. Und dank der erweiterten Spekulationsfeatures könnten Texturen, Geometrien und Animationsdaten sehr effizient im Hintergrund geladen und somit die Haupt-Thread-Latenz beschleunigt werden.
 
mae schrieb:
Vorhersage von 1997-06: >$35G Serververkaeufe mit Itanium im Jahr 2002
Gut, wenn man sich so etwas quasi zu „Projektstart“ ansieht, gibt es immer Übertreibungen.

AMD hat glaub ich den eigenen potenziellen AI Markt auch auf 50.000.000.000 geschätzt, oder waren es gar 500.000.000.000, muss ich mal raussuchen.
mae schrieb:
aber wenn man "nicht RISC" zu begruenden wollte, waere das wohl das, auf das man zeigen wuerde.
Die Sache ist die: auch ARM kämpft heute mit Altlasten und es ist „kompliziert“ einen neuen Kern zu entwickeln.

Jim Keller hat dazu ja auch schon in Interviews geschrieben und das aktuell quasi der beste Befehlssatz RISC-V ist, weil er clean ist und genau das kann, was benötigt wird.

Die Diskussion RISC oder CISC und dem Decoder ist heute eigentlich vollkommen irrelevant. Egal ob jetzt CISC-Ähnlich oder RISC-Ähnlich, in beiden Welten werden die Befehle in Micro-OPs zerlegt und dann ausgeführt. Beide Varianten benötigen heute sowohl einfache Decoder für die meisten Befehle und komplexe Decoder für eben kompliziertere Befehle. Das Decoding macht heute allerdings nur noch einen kleinen Teil des Energiebudgets aus und ebenso auf die Fläche sowie Transistorzahl bezogen ist es quasi "irrelevant".

Die Diskussion RISC/CISC und was da besser ist, ist ein Nebenschauplatz, den man in der Regel aufmacht, wenn man zwar genug von der Technik versteht und interessiert ist, gleichzeitig jedoch nicht nicht so tief in der Materie drin steckt und tiefer gehendes Wissen noch fehlt.
adfsrg schrieb:
"Entpuppt" klingt so, als ob das überraschend kam.
Überraschend kam zu dem Zeit Punkt eher, dass die Superskalarität zusammen mit OoO weit aus besser funktioniert hat, als es die gängigen VLIW-Konzepte und gleichzeitig eine Hoheflexibilität beim Kern-Design ermöglichten, die ein VLIW-Konzept eben nicht bietet.
adfsrg schrieb:
Aber gerade dass die Parallelisierung Aufgabe des Compilers war und nicht erst zur Laufzeit gemacht wurde, war doch der größte Vorteil.
Nur war es das nicht, wie auch ATi, bzw. AMD bei TeraScale lernen musste und warum man sich bei eigentlich etwas so so vorhersehbaren wie einer GPU vom VLIW Konzept verabschiedet hat. Und der Itanium hat eine Springvorhersage, denn das VLIW-Konzept verhindert kein Sprünge, womit viele der Probleme, die du benennest eben doch existieren.

Dazu kommt, dass man bei IA64 für jede größere Kernänderungen einen neuen Compiler benötigt hätte, weil der Compiler über die „Belegung“ der Ports entscheidet und welche Befehle parallel ausgeführt werden. Es gibt nämlich noch einen Punkt, der moderne Prozessoren schnell macht und die so mit EPIC nicht möglich waren: Die Spekulative Ausführung von Befehlen.

Bei EPIC hat man sich sehr viel Kontrolllogik gespart damals und diese in Rechenwerke und Register gesteckt. Gleichzeitig hat man sich beim Kerndesign jegliche Flexibilität genommen, die für eine CPU jedoch wichtig ist. Intel und AMD haben in den letzten 25 Jahren ihre Designs von 2 ALU, eine FP ALU auf heute 6 ALUs und 4 FP-ALUs verbreitert und es funktioniert, ohne „Größere“ Anpassungen bei einem Compiler. Bei Itanium hätte jede Erweiterung der Executionports umfassende Änderungen am Compiler erfordert und es wäre immer schwerer geworden den Kern auch effektiv auszulasten.

IA64 ist so wie IA32 und ARM und ebenso x86_64 sind zu bestimmten Zeiten entstanden und Spiegeln in der Form auch wieder, was damals die Grundparadigmen der jeweiligen Generation waren. IA32 ist mit 8 Registern entworfen worden. Transistoren waren damals unglaublich teuer, während RAM-Bausteine vergleichsweise "billig" waren. Dazu wurde primär damals noch per Assembler programmiert, wodurch CPU-Hersteller mächtige Befehle in ihre CPUs einbauten, damit man "komfortabel" programmieren konnte.

Mit dem Erfolg von Programmiersprachen und besser werdenden Compilern, die Code auf die Hardware besser optimieren können als Menschen - waren komplexe Befehlssätze nicht mehr notwendig, also hat man sich auf atomare Operationen beschränkt, der Compiler zerlegt eh alles in die Richtung. Den frei werdenden Platz hat man in Register gesteckt, denn je weniger die CPU auf den Speicher warten, um so schneller wird sie.

VLIW und damit auch EPIC entstanden genau in dieser Zeit, die Compiler sind immer besser geworden, gleichzeitig waren Transistoren immer noch teuer - einer der Gründe, warum man beim Pentium Pro den L2-Cache als eigenen Die integrierte und bei den ersten Athlons und beim Pentium 2 und den ersten 3ern den Cache wieder auslagerte. Die nun aufkommende Kontrolllogik für Out-of-Order-Ausführung, die Buffer für das Neusortieren, die entsprechende Caches kosten Platz und damit wertvolle Fläche. EPIC soll diese "wertvolle" Fläche einsparen, in dem die Kontrolllogik weitgehend auf den Compiler verlagert wird. Für sich gesehen damals keine schlechte Idee, jedoch gleichzeitig auch sehr unflexibel. Am besten sieht man das heute an GPUs, weil hier ein Großteil im SIMD/SIMT-Konzept an Kontrolllogik in den Treiber verlagert wurde. Rein auf Softwareebene fällt es AMD und Nvidia immer schwerer ihre großen GPUs effizient auszulasten, weswegen hier auch zum Teil immer mehr Kontrolllogik auch wieder ihren Weg in die GPUs finden.

Damals hat AMD und Intel - TSMC war ja noch nicht so das Thema wie heute - quasi alle 6 Monate einen neuen Fertigungsprozess auf den Weg gebracht (Ja ich übertreibe, ich weiß, dass das nicht so schnell ging). Pentium 2 und Pentium 3 hat man noch die die Caches ausgelagert, dann plötzlich "Bumm" neuer Fertigungsprozess, Transistoren viel "billiger" als vorher, also Cache wieder rein. Oh, die Kontrollogik, die wir ausgelagert habe in den Compiler, die können wir doch wieder implementieren, weil es ist jetzt viel billiger.

Jeder, der sich Abseits der Wikipediaartikel mit dem Thema IA64, Itanium und ebenso x86_64 von AMD befasst, merkt schnell, dass IA64 und EPIC als gesamtes Konzept so einige Probleme hatte und das AMDs 64-Bit-Erweiterung der x86-Architektur eher so etwas wie der finale Todesstoß für IA64 war.

adfsrg schrieb:
aber dann hätten wir die Probleme mit der Multithreading-Performance in Games wohl nicht oder nur sehr schwach gehabt.
Ich gehe jetzt an der Stelle nur noch auf die beiden Aussagen ein, weil die doch relativ prägnant sind und gleichzeitig allerdings auch zeigen, dass dir tiefgreifenderes Wissen scheinbar weitgehend fehlt und du hier verschiedene Ebenen mit einander vermischt und daher auch wirklich jetzt groben Unfug hier geschrieben hast.

EPIC/IA64 kann und hätte niemals die Probleme von Multi-Threading - Parallelisierung auf Softwareebene - lösen können, weil diese auf einer ganz anderen Ebenen statt finden. Spiele stehen bei der Parallelisierung vor einem ganz anderen Problem und selbst wenn man gewisse Probleme wunderbar parallelisieren kann auf Softwareebene, gibt es hier Bereiche, bei denen das nur bis zu einem gewissen Grad funktioniert, weil die Aufgaben zu einem bestimmten Zeitpunkt "synchron" sein müssen. KI, Sound, Animation, Spielemechanik, all das kann man auf der einen Seite wunderbar in eigene Threads auslagern, gleichzeitig kommt der Zeitpunkt X, bei dem die Daten vorliegen müssen und synchronisiert für die Bild und Tonausgabe an die dafür zuständige Hardware übermittel werden müssen.

Dieses Problem hätte EPIC nie lösen können und das war auch nie die Intention dahinter. EPIC/IA64 hat auf die Mikro-Parallelisierung innerhalb eines Threads abgezogen:
Code:
A = B + C
D = E + F
B = A + D
DAS ist ein Problem, wenn man das programmiert, dass EPIC "lösen" sollte, weil zu der Zeit, als EPIC entstand, die Kontrolllogik für Hardware OoO relativ teuer war als Fläche für eine CPU. IA64 hätte dann auf Compiler-Ebene diesen Code analysiert, und hätte erkannt, das A = B + C und D = E + F "unabhängig" sind und hätte als Binärcode verpackt, dass eine der Operation auf ALU 0 und die andere auf ALU 1 ablaufen, der zweite Binärcode wäre dann gewesen, dass auf ALU 0 noch das B = A + D läuft.

Parallelisierung über diese Ebene hinaus war KEIN Bestandteil von Itanium und das hätte man auch nicht lösen können.
adfsrg schrieb:
Stell dir eine Welt vor, in der Sprungvorhersagefehler keine große Rolle spielen und ohne Pipeline-Stalls.
An welcher Stelle hätte denn IA64 mit der Auslegung keine Sprungvorhersagefehler mehr gehabt? An welcher Stelle wäre es nicht mehr zu Pipeline-Stalls gekommen?

Neben den ganzen Mikrosprüngen, die auf der Binärebene vollkommen normal sind und quasi keine CPU heute vor einer Herausforderung stellen, du weißt schon, dass wie die meisten Sprünge in einer Software entstehen und warum lange Zeit Nvidia, ATi und später AMD in ihren Leitfäden zur Optimierung von Shadern angeben haben, dass man auf Kontrollkonstrukte weitgehend verzichten sollte und nur, wenn es gar nicht anders geht und dann bitte ja nur ein IF-ELSE am besten NUR ein IF.

Sowas wie FOR, WHILE, FOREACH in vielen Sprachen ist dagegen sogar noch harmlos. Die häufigsten Sprünge heute auf Software-Ebene kommen durch Modul-, Methoden- und Funtkionsaufrufe, womit Software heute strukturiert wird.

All das löst Sprünge aus, die eine CPU ausführen muss und all das führt zu Pipelines-Stalls, dazu das Register ggf. weggesichert werden müssen und mit anderen Werten geladen. Und genau all das - und wir lassen die Killerebene noch heraus - macht deine Fantasterei zu IA64 bereits unmöglich, da der Compiler jedes Abzweigung, jede Schleife und jeden Funktionsaufruf erfassen muss. Wenn wir dann noch die Ebene der Benutzereingaben hinzuziehen, dann wird aus dem unmöglichen ein Problem, dass man nicht mal mehr erfassen kann.

Es gibt - Stand heute - nur einen einzigen Betriebssystem-Kernel, der nachweisbar als funktional korrekt gilt - in dem Fall ist gemeint, dass es keinen unerwarteten Zustand gibt und das ist der L4-Mikrokernel. Du kannst dir ja mal ansehen, was da für ein Aufwand betrieben wurde und was ca. 7500 Zeilen Code bereits an Aufwand benötigen.

Für ALL das, was du IA64 hier zu schreibst, ist jedoch genau das notwendig, der Compiler muss das Programm als funktional korrekt "kompilieren" und damit JEDEN ZUSTAND im voraus erkennen und als Binärcode abspeichern. Wie groß sollen denn die Binaries werden? Wie lange soll der Compiler dafür benötigen?

Es hat einen Grund, warum man bei Intel relativ schnell wieder Abstand von EPIC genommen hat und warum man dann doch lieber mit AMD ein Patentabkommen geschlossen hat. Moderne CPUs können On-the-Fly den Binärcode, denn sie bekommen, optimieren und so für sich anpassen, dass er möglichst effektiv und schnell ausgeführt wird. Das ist nicht perfekt, das benötigt entsprechende Schaltungen und Caches/Buffer, jedoch deutlich flexibler, als eine "Softwarelösung" auf Compiler-Ebene, die für jede Prozessorgeneration angepasst werden muss, wenn man Änderungen am Kern vornimmt.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: adfsrg und Melmoth
Zurück
Oben