Hat das Hyperthreading eigentlich irgendeinen Nachteil gegenueber physischen Kernen?
Jo, der 2te Thread behindert den 1ten Thread ein bisschen, und belegt auch Platz im L2 / L3. Die Spitzenleistung (Antwortzeit) sinkt damit, aber der Gesamtdurchsatz steigt (mehr Antworten pro Zeiteinheit).
Oder kann ein virtueller Kern die gleiche Leistung erzielen? (immerhin hatte der Atom bei manchen Sachen bis zu 80% Mehrleistung, wenn Hyperthreading eingesetzt wurde).Und wäre es nicht möglich, mehr als 2 Threads auf einem Core laufen zu lassen, sodass ein Quad-Core z.B 12 oder mehr Threads bearbeiten kann?
Eigentlich gibts keinen virtuellen Kern, es gibt 1 echten Kern, auf denen 2 Threads laufen, wenn Du magst, kannst Du von 2 virtuellen Kernen reden.
Steigerungen wie beim Atom sind nicht drin, Atom profitiert so stark durch SMT, da er ein in-order Kern ist, da werden alle Befehle nacheinander abgearbeitet, bei nem INT Befehl ist die FP Einheit leer, und umgedreht, bei ner Speicheranfrage steht das ganze Rechenwerk. Da findet ein 2ter Thread quasi ein Schlaraffenland freier Funktionseinheiten.
Nehalem ist OOO, d.h. es werden Befehle in der Reihenfolge vertauscht, mann muss nicht auf das Ergebniss der Instruktion davor warten. Das lastet den Kern schon viel besser aus, hauptsächlich kann man da mit HT nur noch Speicherlatenzen abschöpfen, die ja verglichen mit dem Kerntakt "ewig" dauern. Ist aber immer noch gut für ~30% Mehrleistung (wenn den Caches / Speicherinterface nicht die Luft ausgeht).
Mehrfach HT gibts auch, Sun läßt z.B. gleich 8 THreads auf einem Kern laufen.
ciao
Alex