Test Test: Intel Core i7-980X Extreme Edition

y33H@ schrieb:
Wenn man Simultaneous Multithreading mit Multithreading-Apps bencht, ist das natürlich cherry picked
Und trotzdem war dir das die Behauptung wert, ich würde mich "massiv falsch entsinnen". Danke fürs Gespräch. Irgendwie ist es immer wieder das gleiche mit dir. :rolleyes:

Blitzmerker schrieb:
CMT basiert darauf, dass wenn der Kern leerläuft, weil der Thread auf Daten warten muss, ein anderer einspringt.
Nein, du beschreibst das Prinzip von SMT, nicht CMT. CMT basiert darauf, dass möglichst effizient so viel wie möglich Kapazitäten für Durchsatz bereitgestellt werden, mit eigenen Ausführungseinheiten für jeden Thread. Dementsprechend breit muss auch das Frontend (fetch/decode/dispatch) sein, um Flaschenhälse zu vermeiden und dass die Ausführungseinheiten nicht unnötig Däumchen drehen, während sie auf Daten warten. Um die Effizienz zu maximieren, gibt es unterschiedlichste Techniken, wie zB die von AMD genannte Eager Execution. Aber das sind dann schon Details der Implementierung, die mit dem grundlegenden Konzept wenig zu tun haben. Ich kann dir in diesem Zusammenhang zwei Patente für nähere Informationen empfehlen, US 2009/0172359 und US 2009/0172370.
 
Ich habe meine "Behauptung" mit aktuellen Werten gestützt.
 
Also die Patente sind interresant.
Laut ein paar Leute aus AMDZone.com hat AMD eine Mischung aus SMT und CMT.
Für mich siehts nach ner Grafikkarte mit 2 Kernen aus.
Es wird immer die Rechenkapazität von 2 Kernen geben, wenn aber nicht identischer Code ausgeführt wird, muss ein Kern deaktiviert werden. Dadurch würde eine OpenMP Anwendung natürlich super skalieren, aber eine Multiprozessumgebung im Ernstfall gar keinen Geschwindigkeitsvorteil erhalten. Also genau umgekehrt wie SMT. Da stimm ich dir zu, aber mit dem gleichen Rattenschwanz.
 
y33H@ schrieb:
Ich habe meine "Behauptung" mit aktuellen Werten gestützt.
Sie waren trotzdem deplatziert und völlig überzogen. Also bitte, versuche jetzt nicht wieder nach Ausreden zu suchen. Das nächste mal vielleicht etwas sachlicher und differenzierter antworten. ;)

Blitzmerker schrieb:
Für mich siehts nach ner Grafikkarte mit 2 Kernen aus.
Ich denke, die Vergleiche zu GPUs sollte man nicht unbedingt ins Spiel bringen. Das sind zwei unterschiedliche paar Schuhe.

Blitzmerker schrieb:
Es wird immer die Rechenkapazität von 2 Kernen geben, wenn aber nicht identischer Code ausgeführt wird, muss ein Kern deaktiviert werden.
Also da kann ich dir ehrlich gesagt nicht folgen. Ein Kern wird nur deaktiviert, wenn er nichts zu tun bekommt, also kein ausführbarer Thread zur Verfügung steht. Ansonsten ist er immer aktiviert. Und egal ob beide Kerne eines Moduls gleichzeitig gefüttert werden oder nur einer, die Performance eines Kerns ist ziemlich gleichwertig. AMD gibt hier einen Speedup von 80% an. Ich denke aber, das ist relativ konservativ gerechnet, da man wohl die gemeinsam genutzte FPU mit einbezieht, die mit AVX Code immer nur von jeweils einem Kern zur selben Zeit genutzt werden kann. Man geht dabei eben von 80% reinem Integer Code über alle möglichen Anwendungen aus. Für reinen Integer Code oder maximal SSE für FP sollte man recht nahe an die 100% Skalierung erreichen. Chuck Moore, einer der Chefentwickler von Bulldozer, spricht bei einem Modul von einem "optimierten Dual Core". Und ähnlich sollte man auch dessen Eigenschaften und Leistungswerte betrachten. Genug Benchmarks mit Dual Cores sollte es ja geben. Und das ist ja auch der grosse Vorteil gegenüber SMT. Dort bricht eben die Performance eines logischen Prozessors innerhalb eines SMT-Kerns weg, sobald beide logischen Prozessoren des selben Kerns ausgelastet werden. Nehmen wir zB 20% Speedup für SMT, dann erreicht ein logischer Prozessor eines SMT-Kerns 60%. Bei einem CMT Design, wie eben einem Bulldozer Modul, und zB 80% Speedup erreicht jeder logischer Prozessor 90%. Das ist eine 50% bessere Skalierung, bei vermutlich ähnlicher Fläche eines Sandy Bridge Kerns und eines Bulldozer Moduls in 32 nm.
 
Zuletzt bearbeitet:
gruffi ich denke du solltest so Begriffe wie "logische Prozessoren" oder "Kerne" für SMT nicht verwenden, da dies irreführend ist. SMT Stellt ja keine zusätzlichen Recheneinheiten zur Verfügung. SMT ist lediglich ein Thread-Management um die Auslastung der vorhandenen Kerne zu optimieren.Weder gibt es "logische" Kerne noch irgendwelche anderen zusätzlichen Recheneinheiten bei SMT.

Bulldozer hingegen hat genau das in seiner Architektur - zusätzliche Recheneinheiten die bestimmte Rechen Operationen ausführen. Ein Bulldozer Modul (Kern) hat selber 2 Kerne:
http://www.anandtech.com/cpuchipsets/showdoc.aspx?i=3683&p=2
 

Anhänge

  • quadcore.jpg
    quadcore.jpg
    87,2 KB · Aufrufe: 585
Complication schrieb:
gruffi ich denke du solltest so Begriffe wie "logische Prozessoren" oder "Kerne" für SMT nicht verwenden, da dies irreführend ist.
Ich beziehe mich dabei auf Microsofts Definition. Diese sollte man natürlich kennen und verstehen.
A logical processor is one logical computing engine from the perspective of the operating system, application or driver. A core is one processor unit, which can consist of one or more logical processors. A physical processor can consist of one or more cores. A physical processor is the same as a processor package, a socket, or a CPU.
 
Du beschreibst es ja gerade selber :)
Ein Thread ist weder ein "logical processor" noch ist er eine "core" und ein "processor" ja auch nicht. Es ist ein Thread. Und SMT ermöglicht einem Kern eine effektivere Verwaltung und Abarbeitung von 2 Threads in einem "logical processor". Es eine Paketstapelung die effektiver ist in bestimmten Szenarien, wo das verwalten der 2 Threads nicht mehr Zeit in Anspruch nimmt als der 1 processor durch weniger Leerlauf schneller abarbeitet.

Das was der Taskmanager in Windows unter "Verlauf der CPU Auslastung" anzeigt ist genau das - er zeigt die Last und die Anzahl der CPU-Threads. Mehr Recheneinheiten gibt es deswegen trotzdem nicht. :)
 
Complication schrieb:
Ein Thread ist weder ein "logical processor"
Man kann aber sagen, ein Thread wird hardwareseitig auf einen logischen Prozessor abgebildet. Ein Kern wiederum besteht aus einem oder mehreren dieser logischen Prozessoren, kann damit also einen oder mehrere Threads verarbeiten. Und etwas anderes hatte ich ja auch nicht geschrieben.
 
Aber das ist ja der kleine aber feine Unterschie: Auch mit SMT werden nur 4 Threads gleichzeitig verarbeitet - es werden nur jeweils 2 Threads wie in einem Reisverschlußverfahren auf eine Recheneinheit abgebildet. Somit gibt es keine zusätzlichen "logischen Kerne". Es gibt nur einen optimierten Datenzulauf zu immer noch gleich vielen Kernen - logisch ;)
 
Complication schrieb:
Aber das ist ja der kleine aber feine Unterschie: Auch mit SMT werden nur 4 Threads gleichzeitig verarbeitet - es werden nur jeweils 2 Threads wie in einem Reisverschlußverfahren auf eine Recheneinheit abgebildet. Somit gibt es keine zusätzlichen "logischen Kerne".
Doch, aus Sicht des Betriebssystems schon. Selbst auf Hardwareebene gibt es diese. Die musst hier schon differenzieren. Ausführungseinheiten sind zwar nur einmal vorhanden, das ist richtig. Für das Frontend gilt dies aber nicht. Dort hat jeder logische Prozessor zum Teil seine eigenen Ressourcen.
 
Das Frontend rechnet doch aber nicht - damit etwas "logisch" ist muss es auch etwas berechnen. Und wenn man es gleich setzt mit echten Kernen sollte es etwas mehr sein als nur eine Datenweiche wie bei SMT. Aus Sicht des Betriebssystems gibt es lediglich 8 anstatt 4 Warteschlangen wo die Daten rein geschoben werden um berechnet zu werden: Threads.
Es rechnen dennoch nur 4 Kerne und es gibt keine logischen Kerne. Es gibt 4 zusätzliche Pipelines und alles andere ist nicht zutreffend.

Jetzt kommt der berüchtigte Autovergleich :p
Auch ein Motor mit Turbo-Einspritzanlage hat nicht mehr Zylinder dadurch, auch wenn es mehr Power raus holt.
hyperthreading_image1-gif.180485


Hyperthreading stopft nur die leeren Lücken im Takt der CPU mit Daten damit diese besser ausgelastet ist.
 

Anhänge

  • hyperthreading_image1.gif
    hyperthreading_image1.gif
    29,1 KB · Aufrufe: 1.498
Complication schrieb:
Das Frontend rechnet doch aber nicht - damit etwas "logisch" ist muss es auch etwas berechnen.
Nein, muss es nicht. "Logisch" ist für das Betriebssystem die Differenzierung zu physisch. Das hat mit Berechnen nichts zu tun.

Complication schrieb:
Und wenn man es gleich setzt mit echten Kernen ...
Eben genau das macht man nicht. Das sollte doch auch aus dem MSDN Zitat von mir hervorgehen.

Complication schrieb:
Aus Sicht des Betriebssystems gibt es lediglich 8 anstatt 4 Warteschlangen wo die Daten rein geschoben werden um berechnet zu werden: Threads.
Es rechnen dennoch nur 4 Kerne und es gibt keine logischen Kerne.
Die Rede war auch nicht von logischen Kernen, sondern von logischen Prozessoren. Das Betriebssystem kennt beide Seiten. Auf Softwareseite sind es Threads, auf Hardwareseite logische Prozessoren. Nur wenn das Betriebssystem die logischen Prozessoren und damit die Kapazitäten der Hardware kennt, kann es Threads sinnvoll verteilen. Wie diese logischen Prozessoren physisch genau aufgebaut sind, spielt dabei erstmal keine Rolle. Das kommt erst in einem weiteren Schritt zum Tragen, wenn man zB den Thread Scheduler optimieren will, wie es bei Windows 7 geschehen ist.


Zum Rest, keine Ahnung, was du damit sagen willst. Irgendwie habe ich das Gefühl, du redest an dem, was ich sagte, etwas vorbei. Wie SMT arbeitet und was es bewirkt, war jedenfalls nicht mein Thema.
 
Zuletzt bearbeitet:
gruffi schrieb:
Nein, muss es nicht. "Logisch" ist für das Betriebssystem die Differenzierung zu physisch. Das hat mit Berechnen nichts zu tun.
Ok dann haben wir ja unser Missverständnis gefunden: was du meinst nennt sich virtuell und nicht logisch ;)
Es werden dem OS Virtuelle Kerne vorgegaukelt die es aber nicht gibt. Das geht aber auch aus deinem MSN Zitat hervor. Keine der dort verwendeten Definitionen trifft auf SMT zu.
 
Complication schrieb:
Ok dann haben wir ja unser Missverständnis gefunden: was du meinst nennt sich virtuell und nicht logisch
Nein, was ich meine nennt sich logisch. Wenn du mit technischen Docs vertraut bist, wie eben MSDN, wirst du das schnell merken. Virtuell ist eher ein für weniger versiertere Leute verständlicherer Ausdruck.

Complication schrieb:
Das geht aber auch aus deinem MSN Zitat hervor. Keine der dort verwendeten Definitionen trifft auf SMT zu.
Doch.
A core is one processor unit, which can consist of one or more logical processors.
Das trifft exakt auf SMT zu.
 
Jup, das ist ja auch das, was ich bereits weiter oben sagte.
gruffi schrieb:
Man kann aber sagen, ein Thread wird hardwareseitig auf einen logischen Prozessor abgebildet.
Manchmal kann man mir schon etwas glauben. Ich habe immerhin genug mit Threads unter Windows programmiert, um die Thematik "ein bisschen" zu kennen und auch die entsprechende Terminologie. :)
 
Wenn der Prozi nur nicht so teuer wäre...
 
Zurück
Oben