HT innebär ju att en processor, en kärna ser ut som 2 eller fler. Enkelt görs det genom dubbla registeruppsättningar etc men man delar ändå exekveringsenheter. HT utgör ungifär 3%+ ökad area på Nehalem enligt intel. Så transistorerna för HT i sig bör inte stå för en märkbar ökad energiförbrukning.
Man får tänka på att en processor läser instruktioner och data ungefär som vi läser en bok. Om varje program är en bok och vi vill köra 100 program samtidigt eller processer som det kallas och varje process har en eller flera trådar och vi skulle köra detta på EN cpu alltså en kärna som på gamla goa tiden så kan inte processorn köra alla trådar för processerna samtidigt ungefär som vi inte kan läsa 100 böker samtidigt utan i så fall får läsa var och en för sig eller läsa lite ur varje i taget. Operativsystemet tilldelar varje process en lite stund att exekvera instruktioner på sedan byter den process och dess tråd. För oss går det så fort så det ser ut som allt sker direkt och samtidigt alltså parallellt.
Men detta är byte av trådar på mjukvarunivå av OS:et. Tidsödande och inte helt effektivt. Något man helst vill undvika med.
När OS:Et har flera processorer så tilldelar den trådarna jämt mellan dom efter hur mycket cpu tid som behövs och med tex 2st processorer eller 2 kärnor då i en dualcore kan 2st trådar köras parallellt i systemet.
Men att byta tråd på varje individuell kärna är fortfarande kostsamt.
Ett problem är om en tråd stannar pga en cache miss och inte har något att göra så kommer den bara sitta och vänta på data då OS:et tilldelat tråden eller processen en viss tid på sig att exekvera instruktioner.
HT gör som sagt att en kärna ser ut som 2 eller fler. Intel x86 processorer så är det som sagt 2st max i dagsläget.
Eftersom HT gör att en kärna ser ut som 2st för OS:et så tilldelar OS:et 2st trådar till en kärna effektivt utan att direkt vara medveten om att det egentligen bara är en kärna eller en processor då.
Fördelen här är att om en process får en cache miss och därmed stannar så kan processorn på hårdvarunivå byta tråd över till den andra som tilldelats samma kärna av OS:et och exekvera dess instruktioner tills dess att den andra trådens data och instruktioner anlänt till cachet och är redo för exekvering.
Nu kommer dilemmat med HT.
Om OS:et ser en cpu eller kärna som 2 eller fler kärnor pga HT. Inte bara intel som kör HT nämligen.
Många har ju säkert tänkt på följande scenario.
Om jag har 2st kärnor med HT som se ut som 4st processorer för OS:et.
Om jag kör en 2 trådad process där varje tråd kräver 100% cpu tid så vill man ju att vardera tråd ska hamna på varsin fysisk kärna.
Skulle båda hamna på samma kärna skull ju prestandan halveras rent teoretiskt.
Detta undviks genom en HT scheduler eller HT schema.
Helt enkelt en liten bit kod i kernel som talar om att en CPU är HT kapabel och kollar om HT är på eller av och om det är på så talar den om för OS:et villka kärnor som är en och samma.
Linux tex med en i7 920 så är kärna 0 samma som 4 och 1 samma som 5 osv.
Så 0-3 sedan börjar det om från 4-7 helt enkelt.
Så kör man en process som har 4 trådar så försöker OS:et att ALDRIG lägga dessa 4 trådar om dom är hårt lastade på samma kärnor.
tex lägger den dom på kärna 1,2 och 4,7 vilket blir fysiskt kärna 0,1,2,3.
Intel rekommenderar tex folk med HT processorer att köra Windows 7 då det har mycket bättre HT hantering än Windows Vista tex.
Kör man Windows XP så är det nog bättre att lämna HT av.
Vad jag försöker säga är att HT i sig är sunt hårdvarumässigt men det krävs matchande mjukvara också i form av ett modernt OS för att hantera dessa.
Så har vi en i7 quade core med HT och kör ett spel som TEORETISKT kan nyttja 4 kärnor fullt ut samtidigt och vi säger OS:et la dessa 4 trådar på cpu 4-7 och sedan kickar dit antivirusprogram igång i bakgrunden och behöver ca 25% CPU tid då kommer OS:et lägga den på någon av kärna 0-3, tex 2 vilket betyder att den 3:e fysiska kärna kör 2st trådar, en som begär 100% CPU tid och en som begär 25%. Grejen är ju den att processorn alltid har cache missar och inte nära nyttjas fullt ut i praktiken. HT tillåter annars bortkastade CPU cyklar att nyttjas av tex antivirusprogram när spelets ena tråd på samma kärna får en cache miss eller av någon anledning inte kräver processorns totala uppmärksamhet.
Hade vi kört samma exempel med en i7 med HT av så hade spelet körts på kärna 0-3 och sedan hade OS:et också tilldelat antivirusprogrammet en av dessa kärnor och sedan hade OS:et sett till att sköta bytet av trådar på en enbart mjukvarubaserad lösning. Alltså OS:Et som är helt i kontroll av bytet av trådar och det ifns igen möjlighet att utnyttja outnyttjade CPU cyklar så resultatet i teorin i alla fall är att utan HT hade prestandaförsluten på spelet blivit större än om HT varit på.
HT på nehalem tillåter helt enkelt att lura OS:Et att tilldela 2x antalet trådar än kärnor och sedan tillåta processorn att köra de mest aktuella tråden för tillfället för att maximera prestandan och få så mycket ur processorn som möjligt.
De går mycket snabbare att byta tråd på hårdvarunivå nämligen. Byte av tråd kostar CPU cyklar både på hårdvarunivå och mjukvarunivå i form av OS då men hårdvarunivån är snabbare.
Det finns fall där HT presterar sämre. Framförallt en flertrådar process där flera trådar exekveras men som delar data eller är i direkt beroende av varan. Stannar en så stannar alla. Då hjälper inte HT om dom andra trådarna som väntar inte heller kan exekveras. Då tappar man lite prestanda faktiskt.
Sedan finns det fall där HT hanteraren inte fungerar som det är tänkt i OS:et. Tex program som Vmware. För dom som inte vet vad det är så är det en Virtuellt PC. Ett program som tillåter en att tex köra window 7 på en linux dator eller köra windows 95 på en Windows 7 dator i ett fönster eller i fullskärm. En dator i en dator helt enkelt. Där kan faktiskt 2st trådar hamna på en och samma kärna med resultatet halverad prestanda. Så kör man virtuella maskiner på en server så kan HT var kontraproduktivt.
Inte exakt insatt i problematiken men det ä ju ett mjukvaruproblem i någon form mellan Vmware och OS:et det kör och Värd OS:et som man kallar det då. Kör programmet själv i bland med HT på då det inte rör mig i ryggen. Dom flesta kör inte VMware.
Testerna jag gjort själv vissa att HT schedulern i linux tex annars gör ett mycket bra jobb. Windows 7 kan jag inte svara på men intel rekommenderar ju starkt Windows 7 för Nehalem processorer just pga bättre HT hantering av kerneln och har visat några demos mellan vista och win 7 där windows 7 var klart bättre med HT på. Spel och program benchade under Vistas tid är knappast relevanta i dagsläget.
Jag personligen tror att tekniker som HT är här för att stanna. Kommer nog bli allt vanligare i framtiden.
Och självklart stiger processorns temperatur när den arbetar hårdare med HT precis som den stiger när man kör tyngre program som nyttjar den mer.
HT tillåter ju CPU cyklar att nyttjas som annars skulle gå förlorade och istället för att transistorerna bara står och läker så arbetar dom för fullt istället. SÅ HT gör ju att alla transistorer arbetar mer helt enkelt eftersom mer jobb blir gjort OFTAST. Undantag för fallen jag nämnde dock anser jag dom vara i minoritet i dagsläget.
Så det är ganska lustigt resonemang att man inte vill köra HT för att processorn går varmare. Ska man klocka upp den 400Mhz till istället så kommer den ju likt förbannat gå varmare utan att direkt blir snabbare nödvändigtvis. Mer prestanda kommer alltid till en högre energiförbrukning det är ju inget nytt.
Och när HT inte behövs alltså det inte körs många tunga trådar tex 8st på en i7 920 så drar inte processorn direkt mer för det.
Gansak enkelt om man tänker efter på det. Kör man ett spel som är signetlrådat aka Crysis och har HT på varför skulle processorn går varmare när datorn i princip bar nyttjar 1 käran fyll ut och resterande ligger och tuffar på några procent? Blir ju inte mycket mer switchande bland transistorerna för det. Inte förens HT faktiskt ser till att utnyttja klockcyklar som annars skulle gå förlorade som processorn genererar mer värme.
För mig ger HT allt mellan 9-19% boost i prestanda. Vist alla kompilerar inte source i linux eller renderar lite 3D för skoj skull i bland men men. Men som jag ser det ju mer trådbyte på HW nivå ju effektivare.
Men som sagt Mjukvaran då framförallt OS:et är minst lika vickigt för HT prestandan som den fysiska hårdvaran är.
Kan inte döma ut HT för man tappade Spel prestanda i Windows XP som knappat är skrivet för att ta hänsyn till HT. Behövdes igen HT scheduler när P4 var singelcore ändå. Inte förens man gick dualcore som det började bli aktuellt.
Mjukvaran har alltid legat lera år efter hårdvaran.
Snarare totala avsaknaden (har inte hittat något oberoende test av vett) av test av HT på nehalem under Windows 7 gör ju att jag inte ens tänker lägga mig i om det är bättre eller sämre för spel. Rent teoretisk kan jag spekulera men praktiskt vet jag inte. Spelar inte mycket spel och kör inte Windows 7.
Sweclockers kanske skulle kunna göra ett ingående test för att få en up to date bild av det hela.