News Wilde Gerüchte zur Performance von AMDs „Bulldozer“

KAOZNAKE schrieb:
Das wovon du redest, nennt sich CPU ;)

Ein Core ist ein Core ist ein Core und dahinter verbirgt sich seit jeher eine Integer-Recheneinheit. Denn wie jemand schon mal so schön festgestellt hat, war die FPU früher auch nur ein (externer) Co-Prozessor.

Ich bin mit deiner Auslegung auch nicht ganz zufrieden. Selbst wenn ein Core seit jeher eine Integer Einheit gewesen ist, so ist das ab Bulldozer eben nicht mehr ganz korrekt.

Wenn ich mir einen Bulldozer DIE Shot anschaue dann kann ich das beim besten Willen nicht als 8-Core ansehen.... sorry.
 

Anhänge

  • bulldozer-die-2.jpg
    bulldozer-die-2.jpg
    123,3 KB · Aufrufe: 592
Es Handelt sich um ein 4 Modul Zambezi laut Quelle.

Ein Modul ist ein aufgebohrter Dual Thread fähiger Core bei dem einzelne Einheiten verdoppelt sind. Ein Modul als Dualcore zu bezeichnen finde ich absurd.
 
Und die Quelle? Soweit ich googeln konnte gibt es nur mittels Photoshop verfälschte Dieshot zu sehen. Zudem wäre es schwer 2 Kerne in ein Modul zu integrieren mit gemeinsamem L1 Cache und anderen Komponenten, nur um sie dann für ein Foto separat auf dem Die zu platzieren - Integration muss ja irgendwie passieren. Die Module sind ja durchweg verwischt dargestellt.
 
Complication schrieb:
- Integration muss ja irgendwie passieren. Die Module sind ja durchweg verwischt dargestellt.

Man erkennt aber an der Organisation des Die schon das es sich eben NICHT um ein klassisches design mit 8 cores handelt, sondern viel mehr um eines mit 4 Einheiten, eben den Modulen.

Vergleichbares gibt es eben nicht.

Ich stimme aber zu das es im Grunde völlig wurscht ist. Threads zählen...
 
Zuletzt bearbeitet:
@Ned Flanders und alle anderen die im 4-Modul-BD immer noch einen 4-Kern Prozessor sehen:

Ich habe ja ein paar Seiten vorher schon Folgendes geschrieben:

Weil hier immer noch und immer wieder die Diskussion über die Kernanzahl eines 4-Modul Bulldozers auftaucht:

Ein Modul enthält definitiv 2 tatsächliche Kerne. Jedem Kern stehen eigene Integer und bei Bedarf Floatingpoint-Ausführungseinheiten zur Verfügung. Dass heißt alle Kerne können jeweils einen Thread GLEICHZEITIG abarbeiten. Gleichzeitig heißt in ein und dem selben Takzyklus und das ist bekanntlich bei Intels HT nicht der Fall. Daran mache ich den Unterschied fest ob es sich um echte oder virtuelle Kerne handelt.
Dies gilt bei BD sowohl für Integer- als auch für bis zu 128Bit breite Floatingpoint-Instruktionen. Einzig für 256Bit breite AVX Befehle müssen sich die beiden Kerne eines Moduls die FPU teilen und evtl. der eine Thread auf den anderen warten.

Zusätzlich gibt es noch noch die (ebenfalls legitime) historische Betrachtungsweise, nachdem jede Integereinheit einen eigenen Core darstellt.
Wenn ihr BD als 4-Kern Prozessor einstuft, dann aufgrund der Tatsache, dass manche Ressourcen (256Bit AVX und L2) von den 2 Kernen eines Moduls geteilt werden. Würde man diesen Denkansatz konsequent weiterverfolgen, gäbe es im Grunde genommen überhaupt keine Mehrkernprozessoren. Jeder Sandy Bridge wäre ein Singlecore weil sich die Kerne den Speichercontroller teilen. Ein Core2Duo wäre ebenfalls ein Singlecore weil sich die Kerne den FSB teilen. Und es gibt ja bekanntlich Fälle wo ein Kern warten muss, weil ein anderer gerade massive Speichertransfers ausführt.
Also wo zieht ihr da eine logische und vernünftige Grenze? Die einzige Definition, die einen Sinn ergibt, ist die mögliche Anzahl der gleichzeitig, auf Taktebene ausführbaren Threads, entweder unter maximalen Gesichtspunkten (maximal gleichzeitig mögliche Threads) oder unter Berücksichtgung des typischen Workloads. Der typische Workload ist selbstverständlich ein sehr weit gefasster Begriff und unterliegt dem zeitlichen Wandel. Heutzutage ist es sinnvoll, Integer- und bis zu 128Bit breite Floating-Point-Instruktionen als typisch anzusehen. 258Bit AVX hat hierfür noch keine Relevanz, das mag sich aber in Zukunft ändern. Also muss man BD aus heutiger Sicht als 8-Kern Prozessor einstufen.
Oder man betrachtet es eben historisch: Zu Prozessor-Urzeiten bestand der typische Workload aus 100% Integerinstruktionen, BD hat 8 eigenständige Integer-Einheiten, kann mit jedem Takt 8 Instruktionen unabhängig und gleichzeitig bearbeiten und hat somit 8 Kerne.

Ich bin gespannt, wer eine LOGISCHE Begründung liefert, warum BD als 4-Kerner einzustufen sei. Und dafür kann mit Sicherheit nicht die räumliche Aufteilung einzelner Einheiten auf dem DIE herhalten. Menschen können auch zu ein und derselben Familie gehören, ohne dass sie zwingend gemeinsam in einem Haus leben müssen.

Es geht mir übrigens nicht darum einfach nur Recht zu haben, ich finde es nur wichtig diesen Punkt richtig zu stellen. Wenigstens hier im Forum sollte darüber Klarheit herrschen.
Leute die sich informieren möchten, sollten hier schon richtige Tatsachen zu lesen bekommen ;)


Beste Grüsse
 
florian. schrieb:
es gibt ja nicht nur EINEN Bulldozer
wird wie immer 10-20 Modelle geben.
und wenn die Bulldozer die Intels schlagen, dann kannst du dir sicher sein, dass das Top Modell 1000€ kosten wird.

Ich bezweifle einfach, daß der Markt derartige Preise hergibt. Eher wird Intel die Preise senken. Für ne 1000€CPU müßte der Performancezuwachs schon recht gewaltig sein ... ;)

Ich weiß auch das Intel eine 1000€ CPU hat, aber die können sich das eher Leisten eine reine Prestige CPU im Angebot zu haben, AMD steht mehr unter Druck erfolgreich verkaufen zu müssen.

Und denk auch mal, wie das mit den anderen BDs aussehen müßte, wenn das Topmodell 1000€kostet. Dann müßten die anderen ja auch entsprechend ihrer Leistung preislich gestaffelt werden. Macht ja kein SInn, wenn die schnellste CPU grad mal 5% schneller ist als die zweitschnellste, aber 600€ mehr kostet.

Ned Flanders schrieb:
Vergleichbares gibt es eben nicht.

Denke auch, man sollte das als was eigenständiges sehen. Ich weiß nicht ob es nun sinn macht, Threads zu zählen. IMO sollte man einfach ganz davon ab gehen, und sich auf Leistung/Preis/Effizienz schauen, anstatt sich den Kopf darüber zu zerbrechen, ob das nun 4 oder 8 Cores/Threads/Module/whatever sind. Letztlich zählt ja nur was am Ende dabei rauskommt :)
 
druckluft schrieb:
Also wo zieht ihr da eine logische und vernünftige Grenze?

Das ist die 1000€ Frage.


druckluft schrieb:
Die einzige Definition, die einen Sinn ergibt, ist die mögliche Anzahl der gleichzeitig, auf Taktebene ausführbaren Threads, entweder unter maximalen Gesichtspunkten (maximal gleichzeitig mögliche Threads) oder unter Berücksichtgung des typischen Workloads. Der typische Workload ist selbstverständlich ein sehr weit gefasster Begriff und unterliegt dem zeitlichen Wandel. Heutzutage ist es sinnvoll, Integer- und bis zu 128Bit breite Floating-Point-Instruktionen als typisch anzusehen. 258Bit AVX hat hierfür noch keine Relevanz, das mag sich aber in Zukunft ändern. Also muss man BD aus heutiger Sicht als 8-Kern Prozessor einstufen.

Der Schlussfolgerung stimme ich zu, aber der Ansatz passt nicht. Threads sind im Prinzip nur ein Software-Konstrukt mit dem Parallelität von Operationen explizit ausgedrückt werden kann, d.h. auf der Ebene der ALUs und FPUs gibt es keine Threads mehr, sondern nur noch Operationen und den Funktionseinheiten ist es vollkommen gleichgültig zu welchem Thread die einzelnen Operationen gehören. Wegen der unten erwähnten Superskalarität, würden dann beim Quadcore Sandy Bridge nach deiner Methodik 8 Kerne herauskommen.

druckluft schrieb:
BD hat 8 eigenständige Integer-Einheiten, kann mit jedem Takt 8 Instruktionen unabhängig und gleichzeitig bearbeiten und hat somit 8 Kerne.

Das ist falsch. Du hast die aktuelle Prozessor-Technik (bei x86 so ab Pentium 1) verpasst. Das Schlagwort ist Superskalarität. BD hat 8 Kerne mit 8 Integer Pipelines, die allerdings jede 2 ALUs umfasst. Es können also nicht 8, sondern 16 Int-Instruktionen / Takt ausgeführt werden. Dazu kämen dann noch Load/Store und FPU Instruktionen, wobei man dabei fairer Weise sagen muss, dass das nicht durchgängig möglich ist, da das Frontend nicht so viele Befehle pro Takt holen und dekodieren kann.

Sandy Bridge ist übrigens 3-fach Superskalar, kann also theoretisch max. 3x4 = 12 Instruktionen / Takt ausführen. Unter dem Gesichtspunkt müsste man eigentlich den 6 Kern BD mit dem 4 Kern SB vergleichen, denn beide haben 6x2 bzw. 4x3 Instruktionen als max. Int-Durchsatz. Das soll keine Aufforderung sein, sondern nur ein Denkanstoss, dass es noch sehr viel mehr mögliche Gesichtspunkte gibt, auf deren Basis man Vergleiche anstellen könnte.

druckluft schrieb:
Es geht mir übrigens nicht darum einfach nur Recht zu haben, ich finde es nur wichtig diesen Punkt richtig zu stellen. Wenigstens hier im Forum sollte darüber Klarheit herrschen.
Leute die sich informieren möchten, sollten hier schon richtige Tatsachen zu lesen bekommen ;)

Da sind wir wieder ganz einer Meinung. :)
 
Zuletzt bearbeitet:
da hat aber jemand aufgepasst :P

steht eig schon fest dass BD "nur" 2-fach-Superskalar ist?
Weil sonst würden sie schon allein was das angeht bei nem 4kern wettkampf um 1/3 weiter hinten liegen, was die anzahl der Instruktionen/Takt angeht.
Hoffentlich können die es dann anders ausgleichen.
ich freu mich jedenfalls schon :)
 
Jep, steht fest. 2 ALUs + 2 AGUs pro Pipeline. Die AGUs könnten theoretisch auch ein paar einfache Ops übernehmen, aber nur bei Register-Register Ops. Da die meisten Instruktionen bei x86 aber Register-Speicher Ops sind, sollte das nicht all zu viel bringen.

Das muss aber nicht zwangsläufig ein Nachteil sein. "Normaler" x86 Code enthält im Schnitt weniger als 2 parallel ausführbare Operationen pro Takt. Das ist auch das Problem von In Order Architekturen. Intel hat bei Nehalem und Sandy Bridge hauptsächlich daran gearbeitet die Auslastung der 3 FUs zu verbessern. Verbesserungen bei OoO-Execution, verbessertes SMT, verbessertes Load/Store. All das verbessert die effektive IPC, kostet aber auch relativ viele Transistoren.

AMD geht bei BD einen etwas anderen Weg. Man verringert die Superskalarität, d.h. man hat weniger FUs, wodurch es natürlich deutlich einfacher wird diese auszulasten. Um den Verlust zu kompensieren (von 3- auf 2-fach kostet etwa 10-15%) verlängert man die Pipeline um so höhere Taktraten zu erreichen. Vorteil ist, dass man dafür nicht mehr ILP (Instruction Level Parallelism) braucht wie bei der Intel Variante und man spart Transistoren, nämlich einerseits für die 3. ALU selbst und außerdem natürlich noch für all die Optimierungen, die man braucht um deren Auslastung hoch zu halten.
Der Nachteil sind vermehrte Pipeline Stalls wegen Branch Misspredictions und erhöhter Stromverbrauch bei steigender Taktfrequenz. Für ersteres wurde die BD Branch Prediction Unit stark aufgebohrt, für zweiteres wurde feingranulares Clock- und Powergating eingeführt, so dass zwar jeder einzelne Transistor mehr verbraucht, dafür aber weniger Transistoren aktiv sind.
 
Zuletzt bearbeitet:
Kinder, hört doch auf, euch über die Definiton von Kern und Thread und hastenichgesehen zu streiten.

Es zahlt sowieso nur, was am Ende dabei rauskommt: Singlethread-Performance, Skalierbarkeit (MT), Stromverbrauch. Daran sollt ihr sie messen. Damit kann man dann auch die Architektur bewerten.
Für manche Vergleiche sind die Konzepte der beiden Hersteller halt zu unterschiedlich.
 
hmm ja wenn die es schaffen die Pipelines durchgängig nahezu gefüllt zu haben ist es ja gut.
Wenn nicht, dann verpufft die leistung regelrecht.
Auf den Stromverbrauch bin ich auch mal gespannt.
Erst recht was idle bzw. Teilauslastung angeht, da sich ja angeblich ganze Module abschalten können sollen.
 
MacroWelle schrieb:
Kinder, hört doch auf, euch über die Definiton von Kern und Thread und hastenichgesehen zu streiten.

Das nennt sich nicht Streit sondern Diskussion und ist zumindest in meinen Augen sehr interessant.

@ Limit, schöne logische Ausführung.

Wobei ich das mit der skalarität immernoch nicht geschnallt hab. Das Netz sagt überall etwas anderes. Einige unterscheiden auch szenarien je nach SingleThread oder Multithread.

z.B. "Gruffi" hier:

In Multithreaded Szenarien arbeitet ein Bulldozer Modul wie eine 2x2 OoO Engine. Mit 2-fach superskalar deckst du bereits etwa 80-90% der theoretisch erreichbaren Performance ab. Die Konsequenz ist klar, hoher Durchsatz, hohe Energieeffizienz. Super für Server. In Singlethreaded Szenarien arbeitet ein Modul hingegen wie eine 1x4 OoO Engine, vergleichbar mit Nehalem / Sandy Bridge. Also hohe Singlethreaded Performance, hohe Leistungsaufnahme. Wobei letzteres aufgrund des vorhandenen Energiebudgets vernachlässigbar ist.

Erfahrungsgemäß bringt ja die Steigerung der skalarität relativ viel Leistung wenn auch mit relativ hohem Transistor Budget verbunden. Ist es nicht gewagt sogar von 3 auf 2 zu reduzieren speziell mit Blick auf Single Thread?
 
Zuletzt bearbeitet:
Ned Flanders schrieb:
Wobei ich das mit der skalarität immernoch nicht geschnallt hab. Das Netz sagt überall etwas anderes.

Naja, die Idee ist einfach, dass manchmal zwei aufeinanderfolgende Befehle voneinander unabhängig sind. Also dekodiert man, einfach ausgedrückt, bei einer n-fach superskalaren Pipeline n Befehle gleichzeitig und führt so viele davon aus wie möglich. Im Optimalfall erhält man dadurch die n-fache Leistung. In der Realität wählt man das n aber eher klein (2-4), da es mit jeder Erhöhung immer schwieriger wird die Einheiten überhaupt auszulasten, da normaler Programmcode eben im Schnitt nur 1-2 parallel ausführbare Ops enthält. Durch alle möglichen Tricks im Compiler und in der CPU kann man diese Zahl noch ein wenig erhöhen.

Ned Flanders schrieb:
Einige unterscheiden auch szenarien je nach SingleThread oder Multithread.

Superskalarität ist erstmal eine Eigenschaft eines Kernes; lässt man aber mehrere Threads auf einem Kern laufen (Multithreading) sorgt das für eine höhere Auslastung der Ausführungseinheiten (oder auch für eine Überlastung).

Bei BD wurde vor einiger Weile man darüber spekuliert, ob die beiden Kerne eines Moduls evtl. zusammengeschaltet werden können, also dass aus der 2x2 Arch. eine 1x4 Arch. wird. Das wurde aber mittlerweile dementiert. Übrigens ist Nehalem und soweit ich weiß auch Sandy Bridge nur 3-fach superskalar.



Ned Flanders schrieb:
Erfahrungsgemäß bringt ja die Steigerung der skalarität relativ viel Leistung wenn auch mit relativ hohem Transistor Budget verbunden. Ist es nicht gewagt sogar von 3 auf 2 zu reduzieren speziell mit Blick auf Single Thread?

Der Nutzen einer höheren Superskalarität sinkt rapide mit steigendem n. 3-fach soll etwa 10-15% bringen. Bei Intel's aktuellen CPUs vielleicht auch etwas mehr, da sie in dem Bereich sehr stark optimiert haben. Diese Optimierungen kosten aber auch jede Menge zusätzliche Transistoren.

Neben diesem Ansatz gibt es aber noch einen zweiten, nämlich ein "schmaleres" Design (kleineres n), dafür aber mit höheren Taktraten, denn höhere Taktraten kosten erstmal gar keine zusätzlichen Transistoren erhöhen aber auch die Leistung pro Kern. Das Problem dabei sind höherer Stromverbrauch pro Transistor und größere Kosten für falsch vorhergesagt Sprünge im Code. Für ersteres verbaut AMD ein sehr feingranulares Clock- und Powergating, d.h. nicht benutzte Teile werden konsequent abgeschaltet oder zumindest taktlos geschaltet. Für zweiteres verbaut man eine stark aufgebohrte Sprungvorhersage. Zusätzlich kommen noch ein paar generelle Optimierungen des Kerns dazu, so dass nach AMD Angaben die Single-Thread-Leistung selbst ohne Taktsteigerungen verbessert worden sein soll.
 
Neben diesem Ansatz gibt es aber noch einen zweiten, nämlich ein "schmaleres" Design (kleineres n), dafür aber mit höheren Taktraten, denn höhere Taktraten kosten erstmal gar keine zusätzlichen Transistoren erhöhen aber auch die Leistung pro Kern. Das Problem dabei sind höherer Stromverbrauch pro Transistor und größere Kosten für falsch vorhergesagt Sprünge im Code. Für ersteres verbaut AMD ein sehr feingranulares Clock- und Powergating, d.h. nicht benutzte Teile werden konsequent abgeschaltet oder zumindest taktlos geschaltet. Für zweiteres verbaut man eine stark aufgebohrte Sprungvorhersage. Zusätzlich kommen noch ein paar generelle Optimierungen des Kerns dazu, so dass nach AMD Angaben die Single-Thread-Leistung selbst ohne Taktsteigerungen verbessert worden sein soll.
komplett Richtig. Ein großes Problem von AMD war in den letzten Jahren die Sprungvorhersage, weswegen sich die bisherigen AMDs nicht so leicht so stark wie die Intels übertakten ließen. P4 ist deswegen auch immernoch der schnellste(Frequenz) Prozessor, da seine Architektur eine vergleichsweise gute Sprungvorhersage besitzt (aber sonst nix kann xD).
jz sind wir schon bei Beitrag 300 ^^
dürfte auch eines der interessantesten Themen diese Jahr sein. Ich wette wenn Bulldozer veröffentlicht wird werden locker die 500 Beiträge geknackt.
 
Nach der Diskussion um die Module denk ich, dass ich es kurz und knapp erklären kann.
CMT sind einfach siamisische Zwillinge; die teilen sich wohl oder übel ein paar Funktionen.
SMT ist ein imaginärer Zwilling; den gibts nicht wirklich, ist aber trotzdem fester Teil, der die Denkweise des Betroffenen erweitert.
 
es sollen doch 4 Module sein die jeweils nochmal in sich 2 Kerne haben also 4 x 2 = 8 :D
 
Wenn Du es rein mathematisch lösen willst hab ich hier ein Schmankerl für dich, welches Du mir in der Realität gerne einmal vorführen darfst ;)

Wenn 3 Personen in einem Raum sind und 5 Personen nun diesen Raum verlassen, so müssen erst wieder 2 Personen den Raum betreten, damit dieser leer ist.

Und genau so wenig wie sich dieses Beispiel, welches mathematisch korrekt ist, verwirklichen lässt verhält es sich mit der Kernzahl des BD, man kann die Module nicht direkt mit Kernen vergleichen da man dann einen Faktor X außer Betracht lässt was dann zu einem verfälschten Ergebnis führt. Wie weiter oben schon genannt, 6er BD mit 4er SB vergleichen dann kommt man in etwa hin ;)

Aber letzten Endes ist die Zahl der Kerne Bedeutungslos denn was wirklich zählt sind die Leistung und der Preis.
 
viele scheinen auch zu vergessen, dass "Kern" nicht gleich "Kern" ist.
Ob man nun einen Hochgezückteten Dualcore Baut oder ob man 8 Kleine Kerne Baut ist doch völlig egal.
Hauptsache die Leistung stimmt.
 

Ähnliche Themen

Zurück
Oben