Ich habe keine Ahnung wie in deiner Vorstellung diese Technologien funktionieren, aber es klingt ziemlich falsch.
Ausgangssituation:
Auf einem modernen System laufen im Hintergrund meist hunderte oder tausende parallele Threads. Diese müssen auf die vorhandenen logischen Prozessoren verteilt werden, und das auf eine möglichst effiziente Weise.
Zugleich will man natürlich die Produktions- und Betriebskosten der Hardware minimieren, es macht natürlich keinen Sinn einen Prozessor mit 1000 Kernen zu bauen.
Hyperthreading:
Hyperthreading befasst sich mit einem Problem der Effizienz im Prozessscheduling. Häufig müssen Berechnungen auf einem Prozessorkern für einen Moment angehalten werden, um noch irgendwelche benötigten Daten nachzuladen.
Wenn vorraussehbar ist, dass das eine Weile dauern wird, dann lädt man so lange einen anderen Thread in den Prozessor und lässt diesen bearbeiten. Leider dauert dieser sogenannte Kontextwechsel aber auch wieder einen Moment, kostet also wieder Performance.
Intel hatte stattdessen den relativ genialen Einfall, einen Prozessorkern mit zwei kompletten Speichersätzen auszustatten. Statt die Daten im Speicher komplett neu laden zu müssen, wird einfach eine Weiche umgelegt und der Prozessor arbeitet den bereits fertig geladenen Thread aus dem zweiten Speicherbereich ab, bis es sinnvoll ist wieder zurückzuschalten etc.
Deshalb haben Prozessoren mit HT doppel so viele logische wie physische Kerne.
(Hier vielleicht interessant: Es gab vor etwa einem Jahr Gerüchte, dass AMD auch darüber nachgedacht hat dieses System für die neuen Prozessoren zu erweitern, auf drei oder vier logische Prozessorkerne pro Physischem. Offenbar ist das aber doch nicht umgesetzt worden.)
Jetzt ist vielleicht auch ersichtlich, warum die tatsächliche Leistungssteigerung durch Einsatz von HT so schwer einzuschätzen ist: Sie kann alle Ausprägungen zwischen 0%-100% Leistungszuwachs annehmen, abhängig davon wie das Betriebssystem den Prozessor verwaltet und wie die Anwendungssoftware arbeitet.
Module:
Nach den Phenom II Prozessoren, die einfach mit bis zu 6 echten physischen Kernen gearbeitet haben und entsprechend leistungsfähig, aber ineffizient waren, hat AMD das Problem bei den aktuellen FX-Prozessoren anders angegangen:
Sie haben weiter die Meinung vertreten, dass nichts schneller ist als echte physische Kerne (was natürlich so auch stimmt).
Allerdings werden nicht alle Teile eines Prozessorkerns gleich häufig genutzt, deshalb haben sie die Module entwickelt: Ich bezeichne diese gerne als siamesischen Zwilling: Einige Abteilungen gibt es wirklich zweimal, manche aber nur einmal.
Ob das nun physisch ein aufgebohrter Kern ist oder zwei beschnittene Kerne, kann jeder für sich auslegen. Aber logisch erhält man dabei zwei Kerne, die weniger Strom verbrauchen als zwei "volle" Kerne, jedoch bei den meisten Operationen genauso schnell sind.
(...)
Von der Beschreibung her sind wir uns ziemlich einig, nur dass du mit der Praxis die Theorie erklärst, ich das ganze hingegen rein theoretisch angehe. Und natürlich, dass du alles viel ausführlicher und zwar, das darf man nicht vergessen, auch ausgesprochen gut beschreibst. (während ich es wirklich knapp beschrieben habe---jemand, der die Technologie nicht versteht, wird mit dem Post nichts anfangen können)
(...)
Das erklärt auch, warum die FX-Prozessoren in Leistungstests je nach Disziplin so unterschiedlich gut abschneiden können, es kommt immer ein wenig darauf an ob nun eher die doppelt vorhandenen, oder die einzeln vorhandenen Abteilungen belastet werden.
Zwei komplett verschiedene Ansätze die (vor ein paar Jahren) aktuelle Technologie weiterzuentwickeln. Ich würde nicht sagen, dass da prinzipbedingt einer schlechter ist als der andere ... Das kann man so nicht sagen.
Aber man muss natürlich immer auf den Anwendungsfall schauen. Und dort hat sich gezeigt, dass die effizienteren, wenn auch prinzipiell weniger leistungsfähigeren HyperThreading Prozessoren am Ende mehr Sinn machen, da wir wohl doch noch nicht so exzessives Multithreading brauchen wie noch vor ein paar Jahren gedacht.
Bei dem Fazit geht es dann aber völlig auseinander. Das liegt vor allen Dingen daran, dass du auch dort den Bezug zur Praxis weiter beibehalten willst, was ja aber nicht das war, worum es ging. (sondern, ob
"Die Modultechnologie ist an und für sich eine super Idee" stimmt) Daher fokussierst du dich wohl auch auf die andere Richtung, also der Betrachtung von Viele Kerne -> Viele CMT-Kerne, was genau zum Bulldozer passt.
Sich Bulldozer anzuschauen ist aber gerade ein bisschen ungünstig, denn Bulldozer nutzt ja eine sehr besondere Form des Konzeptes. Die FPU, die sich beide Kerne eines Moduls teilen, wird ja gerade mittels des gleichen Konzeptes wie bei SMT geteilt, was die Unterscheidung der Konzepte nochmals schwieriger macht. Aber egal, ich komme mal endlich zum Klartext.
Nimmt man als Basis einen Kern, einzige Voraussetzung breit. Nicht sehr breit, nicht fett, sondern erst einmal nur breit aufgestellt. Und aus diesem einen Kern will man jetzt etwas schaffen, was zwei Threads bearbeiten kann. (es ist für die Betrachtung egal, ob man von diesen Kernen nun einen, zehn oder 512 hat)
Der SMT-Ansatz wäre klar, ein paar Register klonen, fertig. Der CMT-Ansatz wäre den Kern so zu strukturieren, dass er wie zwei komplette (deshalb ist Bulldozer nicht wirklich CMT, sondern wie vorhin schon genannt ein Zwischending), halb so breite Kerne agieren kann. Direkt wird klar, dass dafür mehr Chipfläche drauf geht, da muss mehr geklont werden und dass das gegenüber der SMT-Variante mehr Energie brauchen wird. Wie du anfangs sagtest ist klar, dass man bei SMT irgendeinen Gewinn zwischen 0 und 100% haben wird. Schauen wir uns die Extremfälle an:
0%= Alle Einheiten werden bereits genutzt (SMT hat keinen Handlungsspielraum) ODER das Programm profitiert nicht von weiteren Threads. (SMT kann keinen Gewinn bringen)
Vergleich CMT: Kein Handlungsspielraum -> Modul zu spalten würde Performaceverlust bringen; Kein Gewinn bei SMT -> Modul zu spalten wäre sinnlos. Bei wirklich wenig Last könnte man einen der Teilkerne powergaten---dann stellt sich aber die Frage, ob man nicht allgemein jeder Einheit Powergating gönnen sollte...
100%=Einheiten können logisch komplett auf zwei gleich rechenintensive Threads geteilt werden
Vergleich CMT: Kein Unterschied. (in der Praxis würde SMT keine 100% erreichen und CMT ein bisschen besser abschneiden, jajaja...)
Zunächst fällt auf, dass das Gesamte ein wenig Verwaltungsaufwand mit sich bringt, das ist aber nur in der Praxis beim Bulldozer tragisch geworden. (wie übrigens auch die Powergatings erschreckend schlecht funktioniert haben). Schwerwiegend hingegen ist, dass einem nun vielleicht in den Sinn kommt, was noch passieren könnte. Nämlich, dass die Threads unterschiedlich rechenintensiv sind. Und dann versagt CMT durch die starre Aufteilung der Kerne.
Angesichts dessen fällt mir auch nicht ein, wieso zumindest 2-faches-CMT jemals wieder zum Zug kommen sollte. Höhere Ausbaustufen wären hingegen schon denkbar. Wenn man einen Giganto-Kern hätte, der zum Beispiel 32-faches-CMT hätte, aber auch unterschiedliche Kombis ermöglicht (also z.B., dass sich dann ein Kern mit 25, einer mit 6 und einer mit einer Einheit bildet, dann könnte sich das wieder lohnen, dann wäre die Unflexibilität weg. Ob man sowas macht und ob man das dann CMT nennt oder wie auch immer, wie dann überhaupt die Core-Kontrolle funktioniert, ob Mega-Cores Sinn ergeben ist eine ganz andere Geschichte.
Edit: Habe erst jetzt Dragonskulls und deine Antwort gelesen, ja, so war das gemeint.
Ergänzend kann ich noch reinwerfen, dass wenn die Karten anders herum verteilt gewesen wären, also AMD die tollen Caches usw. gehabt hätte, dass dann AMD in den Jahren die Oberhand gehabt hätte, später aber dennoch zu SMT gewechselt wäre. Also, dass die Entscheidung SMT vs. CMT (anders, als das vielleicht jetzt klang) in dem Moment gar nicht so endlos bedeutend war.