AMD war schon immer der Überzeugung, dass ein Kern auch nur ein Thread erhalten und Abarbeiten soll.
Da Intel mit SMT schneller war bei den Entwickler, haben natürlich alle auf Multi-Threading gesetzt.
Das ist bei Intel auch notwendig den anders bekommen sie ihre Fetten Cores nicht ausgelastet, es müssen mindestens zwei Threads auf einem Kern laufen um die hohe Single-Core Leistung zu erhalten.
Zwei Threads werden bei AMD aber auf zwei Kerne verteilt, schon erreicht der Single Core bei AMD nur noch 50% der Leistung.
Ich glaube du hast da ein paar elementare Basissachen nicht ganz verstanden...
SMT aka HT ist von Intel eingeführt wurden mit den Xeon Netburst Modellen. Und dort wohl mitunter wegen der langen Pipeline und dem entstehenden Leerlauf der Einheiten durch diese lange Pipeline. Das hat nichts mit Überzeugung oder ähnlichem zu tun. Auch nix mit AMD war zu langsam. Es war die Zeit, da gab es nur SingleCore CPUs und Dual/Multi Prozessor/Sockel im Serverbereich. Die P4 Modelle haben es gebert, nachdem es die Xeon Vertreter im Serverbereich erhalten haben.
Es müssen auch nicht zwei Threads auf einem Kern laufen um hohe Single-Core Leistung zu erhalten... Woher nimmst du diese Aussage? Im Profibereich schaltet man SMT häufig sogar aus bei den Xeons, weil der Code so gut optimiert ist, das SMT eher Nachteile bringt.
Glücklicherweiße wird ZEN doppelt so viel Cache haben wie Intel ohne SMT.
Nach aktuellen Infos sollen es doch zwei L3 Caches werden? Also pro vier-Core Modul einen L3 Cache. Macht beim Oktacore 2x L3 Cache... Und damit eher vergleichbar mit den Core2Quad oder Pentium D Prozessoren und ihrem eigenen Cache pro DIE.
Mal davon ab, die Cachegröße als solches muss nichtmal was aussagen... Es ist entscheidend, dass die verschiedenen Cachestufen insich gut funktionieren und natürlich der Spaß zusammenpasst. Ist der L1 Cache zu lahm, bringt mir mehr davon auch nix um ein Beispiel zu bringen.
Denn in der Praxis meint man mit "Single-Core" eigentlich immer nur einen einzigen Thread - und auch da ist Intel sehr stark, wenn es sich eben um den Haupt-Thread des Kerns handelt (wie immer beim erwähnten i5) und nicht um den der durch SMT virtualisiert wird.
Was ist denn ein "Hauptthread"?
Da gibts keine Haupt- oder Nebenthreads... Die Last, die durch aktives SMT von beiden dem OS Sichtbaren Threads beim Prozessorcore ankommt, ist perse erstmal gleich priorisiert...
Nein, denn die Bulldozer "Module" bestehen nicht aus zwei vollständigen Kernen. Nur Bestandteile wie die Integer-Einheit gibt es doppelt. Daher gibt es auch dort in den meisten Anwendungen einen stärkeren thread. Verhältnis etwa 60-65% zu 35-40%. bei Intel ist es mit SMT eben 80-85% zu 15-20%.
Siehe oben, das stimmt so nicht... Der Core mit SMT hat keine Verteilung mit 80-85/15-20%. Sobald "Last" durch den zweiten Thread erzeugt wird, ist es normal 50/50%. Theoretisch wäre sogar 100/100% denkbar (volle ALU Load + volle FPU Load)
Was meinst du warum bspw. Vista/2008 Server und älter so massive Leistungsprobleme mit Multicore SMT Prozessoren (aka i7) haben? -> sie legen unüberlegt Last auf beide Threads eines Cores. Hätte der zweite Thread nur das an Performance bekommen, was "über" bleibt, würde es derartige Probleme mit Threadschedulern, die SMT nicht verstehen, nicht geben... Die gibt es aber nachweislich und zweitelfsfrei
Stichwort "SMT Parking", falls du dich da informieren willst...
Entsprechend der gleichen Verteilung büßen somit BEIDE Threads potentiell Leistung ein. Die Summe der Leistung von beiden Threads mag zwar höher liegen, aber das bringt dir eben nix, wenn durch bescheidene Threadverteilung trotzdem Leistung verloren geht. Denn die ~15-25% SMT Skalierung im Schnitt sind eben nicht sooo viel. Um das zu erreichen büßt der eigentlich sonst allein laufende Thread pro Core eben ~40% +-x ein. Es geht also von vormals 100% mögliche Leistung auf ~60% runter. Und der zweite Thread erzeugt dann die anderen ~60% = ~115-125% in Summe. (alles unter der Annahme, dass beide Threads natürlich gleiche Last erzeugen)
Mittlerweile, bei den neuesten i3 Modellen skaliert SMT teils auch deutlich über 15-25%. Mit Haswell wurde nämlich eine vierte ALU eingeführt. Das kann den Effekt etwas verbessern, sowohl was die Skalierung nach oben als auch den Einbruch nach unten angeht. Kommt aber klar auf die Instructions an. Auch für Haswell gibt es Code, der einfach mit SMT nicht gut skaliert...
Wo SMT klar punktet ist der Umstand, wenn du ALU und FPU Last über zwei Threads auf einem Core laufen lassen kannst... Denn das (zumindest auf dem Papier) wäre effektiv die technische Vollauslastung beider Rechenwerke.
Intel höchstselbst spricht in den Whitepapern zum Xeon mit HT damals zur Einführung bspw. von so einem Fall und nennt Skalierungsfaktoren bis fast 2!
Wobei es da tatsächlich interessant zu wissen wäre ob Windows schon zu Bulldozer Zeiten gut mit dem ebenfalls etwas stärkeren und etwas schwächeren Thread beim AMD zurecht kam.
Was sind etwas stärkere und etwas schwächere Threads bei AMD? Die Threads, welche das OS "sieht" sind auch bei AMD grundlegend gleichberechtigt... Sie basieren nur nicht auf vollends gesharter Hardware, sondern sind in Teilen dediziert. Was ungünstige Skalierungseffekte hervorrufen kann, dafür unter MT Load auch garantiert für Skalierung sorgt.
Soweit mir bekannt gab es seitens MS einen Patch für den Threadscheduler für Win7. Win8 und neuer können es wohl von Haus aus. Viel Unterschied ist das aber in der Praxis nicht... Denn der CMT Ansatz bei AMDs Bulldozer besagt, dass eben zwei Threads notwendig sind um die ALUs auszufahren. Ob diese nun links oder rechts oder links und rechts laufen, ist generell erstmal fast egal. Der Decoder/Prefetcher kann wohl normal entsprechend viele Instructions durchschubsen, dass auch beide INT Cores (also alle vier ALUs) befüttert werden könnten.
Das was MS aber soweit ich das in Erinnerung habe, nachgepatcht hat, war der Umstand, wenn möglicherweise freie Module vorhanden sind, die Last NICHT auf den zweiten Thread schon belasteter Module gelegt wird... Das bringt wohl bei ALU Last eher wenig Punkte (vielleicht durch den dann alleinigen L2 Cache ein bisschen) -> bei FPU Load hingegen kann das schon was bringen. Denn ein Thread am Bulldozer kann die ganze FPU auslasten, entsprechende Instructions vorrausgesetzt... Das OS hingegen kennt grundsätzlich aber die Arbeit an der Stelle nicht. Sprich reichen 128Bit der FPU oder muss es die zusammengeschaltene 256Bit Breite sein?
Beim BD deckelt wohl der Decoder/Prefetcher in gewissen Teilen früher oder später bei zu viel Last. Mit Steamroller wurden die Decoder verdoppelt. Das verbessert das Problem natürlich... Wie genau sich das am Ende auswirkt, müsste man dediziert mal prüfen/nachlesen.