wie funktioniert hyperthreading?

Thread Starter
Mitglied seit
16.04.2012
Beiträge
1.986
könnte mir mal einer von euch einfach erklären wie hyperthreading funktioniert, ohne Fachbegriffe? Weil die Einträge im Internet verwirren mich nur noch mehr :d
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Um es ganz einfach zu halten: Gewisse Teile im Prozessor sind doppelt vorhanden, darum kann der Kern 2 Befehle gleichzeitig verarbeiten.
 
^^
Also brauchen wir dir mit Wikipedia Artikeln wohn nicht zu kommen ;)

Grundsätzlich wird dabei versucht, den Prozessor besser auszulasten. Den Programmen wird vorgegaukelt, das es mehr Rechen kerne gibt, als eigentlich da sind. Das jeweilige Programm kann dann seine Prozesse auf mehr Kerne und auf mehrerer Kerne gleichzeitig legen. Der Prozessor (und alles rundrum) teilt die Prozesse dann so günstig wie möglich auf, das die einzelnen Kerne voll ausgelastet werden... grob erläutert.
 
Um es ganz einfach zu halten: Gewisse Teile im Prozessor sind doppelt vorhanden, darum kann der Kern 2 Befehle gleichzeitig verarbeiten.

Das stimmt so nicht ganz.

Erklärung:
Eine CPU hat eine gewisse Anzahl an Bearbeitungsschritten zur Befehlsabarbeitung.
Nun kann es passieren, dass ein Befehl nicht alle Schritte braucht, bzw warten muß, dabei würden die ungenutzen Schritte dumm rumstehen.

HT setzt genau da an. Es nutzt diese ungenutzen Schritte aus und packt da einen Befehl rein.

Wo vorher also 1 Befehl drin war, kann jetzt zusätzlich ein 2. Befehl bearbeitet werden. Das erhöht die Auslastung der CPU und steigert damit die Effizienz.
Durch die Ausführung der 2 Befehle sieht es so aus, als könne die CPU 2 Befehle parallel verarbeiten. (ist aber eigentlich nur der 1. und ein bissle vom 2.) Daher tauchen HT Core auch extra im System auf.

Dazu braucht man hier ein paar Verwaltungsteile in doppelter Ausführung, das wars dann aber auch.
 
Zuletzt bearbeitet:
erklär mir das näher mit den schritten, ist damit transistor bahnen gemeint oder wie?
 
Hyperthreading sorgt für eine effizientere Ausnutzung, der Rechenleistung der Kerne. Um es mal ganz kurz und simpel zu sagen. :d

---------- Post added at 22:35 ---------- Previous post was at 22:32 ----------

erklär mir das näher mit den schritten, ist damit transistor bahnen gemeint oder wie?

Eine CPU kann in einem bestimmten Intervall eine eine bestimmte Anzahl von Arbeitsschritten ausführen, oft werden aber nicht alle Arbeitsschritte in einem Intervall aufgebraucht. Die freien Arbeitsschritte sollen mit Hyperthreading genutzt werden.
 
Mit HT kann man nicht doppelt so viele Datein verarbeiten und auch verfügt die CPU dann nicht über doppelt soviele Transistorbahnen.

Würde man hier jetzt ansetzen, fangen wir an massiv mit Fachbegriffen um uns zu werfen. Das wäre in deinem Fall, so glaube ich, nicht zielführend.
 
also wie ich das jetzt verstanden hab, mit arbeitschritten sind praktisch nicht aufeinandervolgende arbeitschritte, sondern sie können parallel arbeiten, also jeder arbeitschritt ist ein arbeiter der eine sache machen kann, kann ich das so sehen?
 
Nein.

Stell dir vor, du hast ein Produktionsband, wo man ein Radio zusammenbaut. An jeder Stelle kommt was dazu, bis am Ende das Radio rauskommt. Es gibt also x Arbeitsschritte bis zur Fertigstellung.
Jetzt passiert es, dass Schritt 5 grad nicht genutzt wird, warum auch immer....
Jetzt würde sich der Arbeiter langweilen ohne HT.

Setzt man aber HT ein, so kann man ein 2. Radio an der Stelle bearbeiten. Das leistet HT.
 
also wie ich das jetzt verstanden hab, mit arbeitschritten sind praktisch nicht aufeinandervolgende arbeitschritte, sondern sie können parallel arbeiten, also jeder arbeitschritt ist ein arbeiter der eine sache machen kann, kann ich das so sehen?

Du denkst zu kompliziert, stell dir mal vor die CPU hätte nur einen Kern. Also einen Arbeiter, der könnte in einer Minute 50 mal einen Nagel in ein Brett schlagen. Die Aufgaben, die der Arbeiter, bekommt belasten ihn aber nicht voll und er schlägt oft weniger Nägel ein. Er hat Also freie Reserven, hier kommt Hyperthreading ins Spiel und versucht ihn besser auszulasten, zum Wohle der Gesamtleistung, in dem er dem Auftragsgeber sagt "Hey hier ist noch ein zweiter Arbeiter". Hierdurch kommen mehr Aufträge rein und der Arbeiter wird besser ausgelastet.

Beim Hyperthreading im PC ist das dann halt ein zusätzlicher Thread, der benutzt werden kann. Ich hoffe das war verständlich.
 
Nein.

Stell dir vor, du hast ein Produktionsband, wo man ein Radio zusammenbaut. An jeder Stelle kommt was dazu, bis am Ende das Radio rauskommt. Es gibt also x Arbeitsschritte bis zur Fertigstellung.
Jetzt passiert es, dass Schritt 5 grad nicht genutzt wird, warum auch immer....
Jetzt würde sich der Arbeiter langweilen ohne HT.

Setzt man aber HT ein, so kann man ein 2. Radio an der Stelle bearbeiten. Das leistet HT.


aber wie kommt das radio zum 5. arbeiter, ohne das die anderen es nicht anfassen, wird einfach ein 2. radio auf dem selben abschnitt aufs band gelegt oder wie?
 
Der Vorarbeiter, Herr Hyperthreading, bringt es an die freie Stelle. ;)
 
Das 2. Radio läuft quasi immer mit. Immer wenn der entsprechenden Arbeiter grad nix zu tun hat, dann kommt es dran. Dennoch bleibt das 1. Radio bevorzugt.
 
Das 2. Radio läuft quasi immer mit. Immer wenn der entsprechenden Arbeiter grad nix zu tun hat, dann kommt es dran. Dennoch bleibt das 1. Radio bevorzugt.
Der Vorarbeiter, Herr Hyperthreading, bringt es an die freie Stelle.

Und wieder was im Leben dazugelernt, danke

---------- Post added at 23:12 ---------- Previous post was at 22:56 ----------

aso, ich hab noch ne frage. Wie ist das mit der Arschitektur anderst zwischen jetzt z.B. ivy vridge und den zambezi
 
Um mehr Rechenleistung zu generieren, muß(bei gleichem Takt...) man die Coreanzahl anheben. Intel macht das einfach durch komplettes "Kopieren" eines kompletten cores, soviel man eben braucht.

AMD hingegen versucht nur die Recheneinheiten eines Cores zu "kopieren", während man diesen ganzen Verwaltungskram gerne für beide cores gleichzeitig nutzen will, also doppelt belasten.
 
...mal ernsthaft: fast alle Artikel im Internet dazu sind sehr einfach zu verstehen. Ich gehe davon aus, dass Du gar keine wirkliche Lust hast, diese zu suchen, zu lesen und zu verstehen...
 
nein, das liegt wirklich daran das ich sie nicht verstehe, und ihr es einfach besser erklären könnt

Um mehr Rechenleistung zu generieren, muß(bei gleichem Takt...) man die Coreanzahl anheben. Intel macht das einfach durch komplettes "Kopieren" eines kompletten cores, soviel man eben braucht.

AMD hingegen versucht nur die Recheneinheiten eines Cores zu "kopieren", während man diesen ganzen Verwaltungskram gerne für beide cores gleichzeitig nutzen will, also doppelt belasten.

Das hab ich jetzt nicht verstanden, heißt das das intel vorgibt mehr kerne zu haben als er eigentlich hat oder wie?
 
Zuletzt bearbeitet:
Nein, man möchte mehr Rechenleistung haben und dazu braucht man mehr Recheneinheiten. Intel nimmt eben alles 2x, während AMD nur ausgewählte Teile 2x nimmt.
 
ahh, also z.B. beim L2 cahce, gibts ja auch nur einen pro 2 kerne, und bei welchen teilen trifft das noch zu?
 
Nein, man möchte mehr Rechenleistung haben und dazu braucht man mehr Recheneinheiten. Intel nimmt eben alles 2x, während AMD nur ausgewählte Teile 2x nimmt.

Hmm das find ich jetzt doof bzw. sehr missverständlich erklärt.

Da es vorher um HT ging nimmt Intel (bei HT) natürlich nicht alles mal 2.

HT lastet (wie vorher schon sehr schön erklärt) einen Core besser aus, in dem ein zweiter Core simuliert wird.

Bei einem 2 Kern Intel I5 Prozessor werden deswegen dem Betriebssystem 4 Kerne dargestellt.
Bei einem 4 Kern sieht das Betriebssystem 8 Kerne.

Wirklich alles mal zwei genommen hat Intel z.B. bei den ersten Dual- und Quadcore Prozessoren. Da wurden ganz simpel gesagt einfach 2 CPUs zusammen geklebt. Klebt man einfach zwei Prozessoren zusammen, hat das aber bestimmte Nachteile, wenn das Betriebssystem diese nicht von "nativen Dualcores" unterscheiden kann.

Es gab/gibt z.B. Dualcore Prozessoren, bei denen sich die beiden Kerne bestimmte Zwischenspeicher (L2,L3 Cache) teilen.
Das hat den Vorteil, dass der eine Kern auf die Daten des anderen zugreifen kann und das Betriebssystem lustig die Aufgaben umverteilen kann, ohne dass die Daten aus dem Zwischenspeicher raus und in den Speicher der anderen CPU rein müssten.
Klebt man davon nun einfach zwei zusammen, hat man zwei Zwischenspeicher, die sich jeweils zwei Kerne teilen. Verteilt das Betriebssystem nun weiter lustig die Aufgaben ohne auf diesen kleinen Unterschied zu achten kann es zu Leistungseinbußen führen.

Es gibt also einen Unterschied zwischen dem einfachen zusammenkleben von Kernen und wirklich nativen Dual-/Quad-/Hexa-Core Designs.

Bei neueren AMD Prozessoren ist die Situation nun etwas anders und auch etwas schwieriger.
Einfach ausgedrückt:
AMD hat die Idee des HT weiter geführt und angefangen Bestandteile eines CPU Kerns doppelt zu verbauen, so dass es deutlich eher ein Zweikern als ein Einkern ist. Bestandteile, die nach Ansicht AMDs nicht ganz so wichtig sind für die meisten Aufgaben, sind nur einmal vorhanden und werden geteilt.

Ein solcher Zweikern wird von AMD Modul genannt und dem Betriebssystem als zwei normale Kerne präsentiert.
Von diesen Modulen "klebt" AMD nun mehrere zusammen und versieht sie mit einem weiteren gemeinsamen L3-Cache .

Das Problem dabei ist, dass diese Architektur so anders aufgebaut ist als bisherige, dass das Betriebssystem ohne spezielle Optimierung nicht das ganze Potential daraus schöpfen kann.
Der Grund dafür liegt unter anderem (ähnlich wie schon bei den zusammengeklebten DualCores) darin, dass das Betriebssystem nicht unterscheiden kann ob sich ein Kern im selben Modul befindet oder in einem anderen.
Verteilt das Betriebssystem dann fleißig Aufgaben um und legt zwei besonders "anstrengende" Aufgaben blöderweise ins selbe Modul bricht die Performance ein, da die Kerne in dem Modul sich bestimmte Dinge teilen müssen.

AMD vermarktet einen Prozessor, der aus vier Modulen besteht als 8-Kern Prozessor, was meiner Ansicht nach auch richtig ist, da es deutlich eher ein 8-Kern als ein 4-Kern ist.
Intel vermarktet einen Prozessor, der aus vier Kernen besteht als Quadcore, obwohl dem Betriebssystem durch HT 8 Kerne angezeigt werden. Meiner Ansicht nach auch korrekt, da das Ding eben deutlich mehr 4-Kern als 8-Kern ist.
 
Zuletzt bearbeitet:
Bei einem 2 Kern Intel I5 Prozessor werden deswegen dem Betriebssystem 4 Kerne dargestellt.
Bei einem 4 Kern sieht das Betriebssystem 8 Kerne.

Das stimmt so nicht, nicht bei jeder CPU ist Hyperthreading aktiv. Die i3 haben 2 Kerne mit Hyperthreading, die i5 haben vier Kerne ohne Hyperthreading und die i7 haben vier Kerne mit Hyperthreading. Der i3 ohne Hyperthreading bei Intel schimpft sich Pentium. ;)
 
Das stimmt so nicht, nicht bei jeder CPU ist Hyperthreading aktiv. Die i3 haben 2 Kerne mit Hyperthreading, die i5 haben vier Kerne ohne Hyperthreading und die i7 haben vier Kerne mit Hyperthreading. Der i3 ohne Hyperthreading bei Intel schimpft sich Pentium. ;)

Da haste natürlich Recht. Intel wirft bedauerlicherweise sämtliche Zusatzfunktionen wie Multimedia Befehle, Virtualisierung und eben auch HT mehr oder weniger sinnfrei bei einigen Modellen raus.
Man muss da ziemlich aufpassen nix falsches zu kaufen.
 
Nein, man möchte mehr Rechenleistung haben und dazu braucht man mehr Recheneinheiten. Intel nimmt eben alles 2x, während AMD nur ausgewählte Teile 2x nimmt.

Wobei das nicht 100% zutrifft zum aktuellen Zeitpunkt.
Ein Core2Quad ala Q6600 oder ähnlichem bestand noch aus zwei quasi vollwertigen Dualcore Core2Duo Prozessoren, die zusammen unter dem Deckel (Heatspreader) auf einem Träger gepackt wurden und welche sich über das damals noch übliche "Bussystem" unterhalten haben.
Heute sind zwar die Cores selbst quasi vollständig doppelt. Der Vorteil "echten" Quadcores ist aber, das man eben nur eine Speicheranbindung, nur einen shared Cache usw. braucht. 100% doppelt sind als nur die Cores selbst, aber bei weitem nicht alles.

Wirklich alles mal zwei genommen hat Intel z.B. bei den ersten Dual- und Quadcore Prozessoren. Da wurden ganz simpel gesagt einfach 2 CPUs zusammen geklebt. Klebt man einfach zwei Prozessoren zusammen, hat das aber bestimmte Nachteile, wenn das Betriebssystem diese nicht von "nativen Dualcores" unterscheiden kann.

Es gab/gibt z.B. Dualcore Prozessoren, bei denen sich die beiden Kerne bestimmte Zwischenspeicher (L2,L3 Cache) teilen.
Das hat den Vorteil, dass der eine Kern auf die Daten des anderen zugreifen kann und das Betriebssystem lustig die Aufgaben umverteilen kann, ohne dass die Daten aus dem Zwischenspeicher raus und in den Speicher der anderen CPU rein müssten.
Klebt man davon nun einfach zwei zusammen, hat man zwei Zwischenspeicher, die sich jeweils zwei Kerne teilen. Verteilt das Betriebssystem nun weiter lustig die Aufgaben ohne auf diesen kleinen Unterschied zu achten kann es zu Leistungseinbußen führen.

Es gibt also einen Unterschied zwischen dem einfachen zusammenkleben von Kernen und wirklich nativen Dual-/Quad-/Hexa-Core Designs.

Das ist aber zum Teil auch eine Sache der Anwendung, genau so wie du schon sagtest, des Betriebssystems. Dazu kommt, das auch nativ implementierte Designs an der Stelle gewisse Teile haben, die quasi exklusiv für den jeweiligen Teil arbeiten.
Das Problem, das das Betriebssystem an der Stelle die Arbeit von Kern zu Kern schubst, ist an der Stelle aber das geringste Übel. Will man das verhindern, kann man die Anwendung auf die Cores fixieren. Noch dazu ist es ggf. sogar von Vorteil, da eben idR eine Vielzahl von Threads gleichzeitig mehr oder weniger aktiv die CPU belasten. Bei mir laufen gerade über 1400 Threads zur gleichen Zeit. Stell dir vor, du hättest an der Stelle ein starres Konstrukt ;)
Es bleibt dem Betriebssystem also fast gar nix anderes übrig, als die Arbeit von Kern zu Kern zu schieben, je nachdem, wo eben gerade was frei ist an Ressourcen.


Bei neueren AMD Prozessoren ist die Situation nun etwas anders und auch etwas schwieriger.
Einfach ausgedrückt:
AMD hat die Idee des HT weiter geführt und angefangen Bestandteile eines CPU Kerns doppelt zu verbauen, so dass es deutlich eher ein Zweikern als ein Einkern ist. Bestandteile, die nach Ansicht AMDs nicht ganz so wichtig sind für die meisten Aufgaben, sind nur einmal vorhanden und werden geteilt.

Ein solcher Zweikern wird von AMD Modul genannt und dem Betriebssystem als zwei normale Kerne präsentiert.
Von diesen Modulen "klebt" AMD nun mehrere zusammen und versieht sie mit einem weiteren gemeinsamen L3-Cache .

Das kann man so nicht sagen, AMD hat nicht HT (bzw. SMT, wie die "Technik" dahinter heist) weiter geführt, sondern man hat einen ähnlichen Ansatz mit gänzlich anderer Umsetzung genutzt, den es aber auch schon so bei ein paar CPU Modellen gibt/gab. Die "Technik" schimpft sich CMT und basiert darauf eben ein paar Teile eines Cores/Moduls zu verdoppeln/vervielfachen, wärend andere Teile geshared werden.

Übrigens präsentiert sich weder SMT noch CMT bei aktueller Implementation seitens Intel/AMD dem Betriebssystem als "echter" Kern. Das Problem ist eher, das Betriebssystem muss verstehen, was einem da vorgesetzt wird. In Sachen Hyperthreading (SMT) hat sich Microsoft nunmehr nach ca. 7 Jahren (die erste Hyperthreading CPU war ein 3,066GHz starker Penitum IV für den Sockel S478 von Ende 2002) mit Windows 7 durchgerungen, nativ zwischen einem Kern und seinem zugehörigen SMT Part zu unterscheiden.
Das Betriebssystem weis also um die Situation, das zwei Berechnungen auf einem Core langsamer sind als jeweils eine Berechnung pro Core. Und nutzt SMT erst dann aus, wenn die Anzahl der Cores ausgeschöpft ist, bzw. dann, wenn so viel Arbeit anliegt, das SMT quasi Vorteile bringen "muss" (durch die bessere Auslastung)

Das Problem dabei ist, dass diese Architektur so anders aufgebaut ist als bisherige, dass das Betriebssystem ohne spezielle Optimierung nicht das ganze Potential daraus schöpfen kann.
Der Grund dafür liegt unter anderem (ähnlich wie schon bei den zusammengeklebten DualCores) darin, dass das Betriebssystem nicht unterscheiden kann ob sich ein Kern im selben Modul befindet oder in einem anderen.
Verteilt das Betriebssystem dann fleißig Aufgaben um und legt zwei besonders "anstrengende" Aufgaben blöderweise ins selbe Modul bricht die Performance ein, da die Kerne in dem Modul sich bestimmte Dinge teilen müssen.

AMD vermarktet einen Prozessor, der aus vier Modulen besteht als 8-Kern Prozessor, was meiner Ansicht nach auch richtig ist, da es deutlich eher ein 8-Kern als ein 4-Kern ist.
Intel vermarktet einen Prozessor, der aus vier Kernen besteht als Quadcore, obwohl dem Betriebssystem durch HT 8 Kerne angezeigt werden. Meiner Ansicht nach auch korrekt, da das Ding eben deutlich mehr 4-Kern als 8-Kern ist.

Windows 8 kann diese Unterscheidung treffen, Windows 7 und älter hingegen nicht. Wie es bei Linux ausschaut, weis ich allerdings nicht...
So als extrem problematisch würde ich das ganze aber auch nicht einstufen, zumindest nicht so problematisch, wie es bei SMT der Fall ist/war. Da der wohl überwiegende Teil der Belastung über die Einheiten abgefackelt werden dürfte, welche auch doppelt vorhanden sind (pro Modul), was eben genau an der Stelle ansetzt, wo CMT besser skalieren soll und auch tut.

Das größere Problem an der Implementation von CMT ist einfach der Punkt, das bei gewissen alltäglichen Situationen nicht genügend Last erzeugende Aufgaben gleichzeitig anstehen, um den Skalierungsvorteil durch eben jene doppelten Einheiten pro Modul abzurufen. Und Stand heute ist es mit den aktuellen AMD CPUs an der Stelle nicht möglich, die gedoppelten Einheiten eines Moduls so zusammen zu fassen, das beim abarbeiten nur einer Aufgabe diese schneller abgearbeitet wird.

Bildlich verglichen bekommt man bei Intel aktuell eine Quadcore CPU mit vier fetten Rechenkernen, welche dazu (je nach Modell) noch die Möglichkeit bieten diese vier Cores durch SMT besser auszulasten, was nochmals ~15% mehr Performance rausquetscht. Teils mehr, teils weniger. Für letzteres benötigt man dann aber auch die doppelte Menge an Lasterzeugenden Aufgaben, welche zur gleichen Zeit laufen. Hat man diese nicht, bekommt man immernoch 100% Leistung der vier Einheiten.
Bei AMD bekommt man an der Stelle hingegen eine CPU, die nativ auf vier Paare von Rechenkernen aufsetzt. Und ihren Vorteil auch genau dann ausspielt, wenn alle acht Einheiten belastet werden. Erzeugt man hingegen nur Teilllast, greift das oben genannte, und man fällt an der Stelle zurück, einfach weil nur die hälfte der Einheiten belastet werden können. Durch den potentiell höheren Skalierungsgrad von CMT an der Stelle zieht zeitgleich der Nachteil bei nur Teilauslastung mit ins Haus.

Zum letzten, das ist Ansichtssache. Im Grunde ist das Modul von AMD eher ein "Core", der eben zwei Integer Einheiten sowie eine Gleitkomma-Einheit vereint. Auch wenn AMD hier marketingtechnisch was anderes behauptet und sich somit sogar selbst ins Bein schießt ;)
Im Grunde nutzen beide Hersteller eine Technik, die es ermöglicht, auf einem Stück Basis, zwei Sachen mehr oder weniger gänzlich gleichzeitig laufen zu lassen. Bei Intel mit SMT skaliert der Spaß mit ~15%. Bei AMD mit teilweise über 60%. Beides hat Vor- sowie Nachteile. Was sich schlussendlich besser machen wird für jeden Einzelnen, wird sich zeigen. Ein pauschales Besser/Schlechter gibts ohne dedizierte Betrachtung der Anwendungen nicht.
 
@psycho

Richtig, es ging VORHER um HT.

Im zweiten Thema:
Wie ist das mit der Arschitektur anderst zwischen jetzt z.B. ivy vridge und den zambezi
Da spielt HT eine untergeordnete Rolle, da es kein Teil der grundlegenden Architektur ist, sondern einfach eine gegebene Architektur nimmt und etwas drin rumfuhrwerkt.
(man hat da eigentlich das verdoppelt, was AMD beim bulldozer eingespart hat, damit gehen SMT und CMT eigentlich in die komplett andere Richtung)

Und bei einer Architektur ist das gemeint, was die CPU befähigt zu rechnen. Der "Müll" drumherum wie Speicher, QPI, PCIe Interfaces ist eine Schnittstellenproblematik.

Jeder einzelne Core hat noch IMMER sein eigenes Speicherinterface. Nur wird das bei den Multicores zusammengefasst, dort nochmals ein Speichercontroller vorgeschaltet, der sich darum kümmert, dass alle Kollegen (cores) was aus dem RAM(die Module) bekommen. Keiner der Cores redet mit dem RAM direkt. Das ist letzendlich das, was früher der FSB geleistet hat, das läuft heute CPU intern ab und ist damit ungleich schneller.

Wie bereits gesagt, Intel nimmt alles (was die Architektur ausmacht) 2x, das wars. AMD macht es anders, sie kopieren die Cores, bappen die zusammen und schaun, was man davon weglassen kann. Da reden wir von Register, decoder, schedulern, fetcher etc. All das, was die CPU wirklich braucht.

Und das ist bei Intel eben 2x vorhanden, während sich AMD Teile spart.

Wenn es also nicht 100%(einer kompletten CPU) sind, dann sind es eben 90%, ändert das was an der Aussage? Nein.

Des Weiteren ist der Cache, insbesondere der L3 Cache, Teil des Hauptspeichers und damit nicht Teil des eigentlichen Cores. Dennoch gesteht man jedem Core eine gewisse Menge zu und skaliert den L3 mit der Anzahl der cores, sonst sinkt die Performance.

Bei der Architektur betrachtet man nicht das große drumherum, sondern wirklich die Strukturen, die daran beteiligt sind zu rechnen.

Und da unterscheidet sich ein P3 von einem Core i7 IB nicht grundlegend(nen paar spezielle Beschleuniger mehr, das wars). Der Bulldozer hingegen ist hier eine Evolution(zumindest in der x86er Welt). (ob nun zum Guten oder Schlechten....)

EDIT:
Aber letztendlich seid ihr beide hier "OT" erster Sahne. :P

Es geht hier darum, dem Herrn mit einfachen Mitteln zu verklickern, was los ist und nicht das, was ihr hier "abzieht" und sämtliche Details bis in kleinste auszuführt. Wenn das was gebracht hätte, glaub(t) mir, ich hätts getan, aber so.... (sonne und ich hatten das Thema ja gestern schon ausgiebig)
 
Zuletzt bearbeitet:
Das größere Problem an der Implementation von CMT ist einfach der Punkt, das bei gewissen alltäglichen Situationen nicht genügend Last erzeugende Aufgaben gleichzeitig anstehen, um den Skalierungsvorteil durch eben jene doppelten Einheiten pro Modul abzurufen.
Ich sehe hier kein Problem. Das hat auch nichts mit "doppelten Einheiten" zu tun. Bei SMT hast du genauso das "Problem", dass EUs öfters nicht richtig ausgelastet werden. Deshalb bringt man ja zusätzliche Threads in die Pipeline. Der Vorteil ist dann einfach, dass CMT besser skaliert durch mehr dedizierte Logik.

Und Stand heute ist es mit den aktuellen AMD CPUs an der Stelle nicht möglich, die gedoppelten Einheiten eines Moduls so zusammen zu fassen, das beim abarbeiten nur einer Aufgabe diese schneller abgearbeitet wird.
Das ist im Moment auch gar nicht notwendig. AMD hat aktuell 8 EU Ports für einen Thread pro Modul, 4x ALU + 4x FPU. Das ist mehr als Intel im Moment hat (6 Ports). Bei CMT kommen eben einfach noch 4 weitere Ports für den überwiegenden Anteil an Integer- und Speicheroperationen hinzu, was für einen einzelnen Thread aber sowieso absoluter Overkill ist. Ähnliches plant ja auch Intel bei Haswell. Auch dort wird man zumindest noch 2 weitere Ports einführen, 1x ALU + 1x Load, was hauptsächlich der SMT Skalierung zugute kommen sollte.
Das Problem bei AMD liegt momentan weniger im Backend, sondern vielmehr im Frontend. Was nützen dir 8 EU Ports, wenn der Dispatcher nur 4 Ops verarbeiten kann? Im Frontend gibt es derzeit auch kaum "doppelte Einheiten". L1D und Prediction Queue würde mir spontan einfallen. Was sich allerdings mit Steamroller etwas ändert. Für Decoder und vermutlich auch Dispatcher wird es dann jeweils 2 Einheiten geben.

Bildlich verglichen bekommt man bei Intel aktuell eine Quadcore CPU mit vier fetten Rechenkernen
Die bekommst du bei AMD genauso. Die Kerndiskussion ist halt einfach nur Marketing. Ändert nichts daran, dass auch die erste Bulldozer Generation als Quadcore konzipiert und designed wurde.

welche dazu (je nach Modell) noch die Möglichkeit bieten diese vier Cores durch SMT besser auszulasten, was nochmals ~15% mehr Performance rausquetscht. Teils mehr, teils weniger. Für letzteres benötigt man dann aber auch die doppelte Menge an Lasterzeugenden Aufgaben, welche zur gleichen Zeit laufen. Hat man diese nicht, bekommt man immernoch 100% Leistung der vier Einheiten.
Eher nicht. Würde man ohne 4 zusätzliche Threads bereits 100% der Performance der 4 Kerne bekommen, könnte Hyperthreading ja keine ~15% zusätzlich bringen. Mehr als 100% geht nun mal nicht. Du kannst auch bei Intel nicht alle Einheiten mit nur einem Thread voll auslasten. Dafür ist das Backend zu breit. Und dafür sind auch einige interne Puffer zu üppig dimensioniert, eben wegen SMT.
CMT und SMT verhalten sich in diesem Punkt nicht viel anders. Läuft ein Thread auf einem AMD Modul oder Intel Kern, kann dieser Thread alle zur Verfügung stehenden Ressourcen nutzen. Was allerdings nicht heissen soll, dass auch sämtliche Logik zur Verfügung steht. Das ist nicht nur bei CMT so. Auch bei SMT liegen dann einige Teilbereiche brach, vor allem im Frontend und natürlich Registersätze. Für einen Thread sind jedenfalls jeweils mehr als genügend Ressourcen vorhanden. Beziffern wir diese Performance mal mit 100%. Laufen nun 2 Threads auf einem AMD Modul oder Intel Kern, bricht die Performance pro Thread bei Intel deutlich mehr ein, auf ~60%. Bei AMD sind es hingegen noch ~80%. Der Grund, siehe oben, mehr dedizierte Logik bei CMT.

Bei AMD bekommt man an der Stelle hingegen eine CPU, die nativ auf vier Paare von Rechenkernen aufsetzt.
Nicht direkt. Es sind immer noch nur 4 Pipelines. Auch wenn diese jeweils 2 L1D Caches, 2 Integer Einheiten, 2 FMACs, etc besitzen. Die reine Zählung bringt dabei aber gar nichts. Viel interessanter ist, wie die gesamte Pipeline und damit jede einzelne Einheiten letztendlich arbeitet. Und da ist es bei AMD ein bunter Mix aus vertikalem und horizontalem (SMT) Multithreading und singlethreaded, während Intel ausschliesslich auf SMT setzt.

Und ihren Vorteil auch genau dann ausspielt, wenn alle acht Einheiten belastet werden. Erzeugt man hingegen nur Teilllast, greift das oben genannte, und man fällt an der Stelle zurück, einfach weil nur die hälfte der Einheiten belastet werden können.
Es ist wesentlich mehr als die Hälfte der Einheiten, wenn auch nicht ganz so viel wie bei Intel. Das spielt im Endeffekt aber keine Rolle bei nur einem Thread, siehe oben. Die zusätzliche Logik bei CMT wird erst bei 2 Threads ein Thema.

Durch den potentiell höheren Skalierungsgrad von CMT an der Stelle zieht zeitgleich der Nachteil bei nur Teilauslastung mit ins Haus.
Das stimmt nicht. Es gibt keinen Nachteil bei nur einem Thread. Nochmals, siehe oben. Ein Thread hat auch bei einem AMD Modul mehr als genügend Ressourcen.
 
Hust...

Es geht hier darum, dem Herrn mit einfachen Mitteln zu verklickern, was los ist und nicht das, was ihr hier "abzieht" und sämtliche Details bis in kleinste auszuführt. Wenn das was gebracht hätte, glaub(t) mir, ich hätts getan, aber so.... (sonne und ich hatten das Thema ja gestern schon ausgiebig)
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh