to Monsoon:
O tom ze kazde cpu je zlozene z roznych mensich celkov ako FPU a tak podobne samozrejme viem. Detaily toho ako HT riadi a deli beh programu su trochu mimo mna, ale ako spatna vazba mi sluzi chovanie Windows (holt co uz so mnou). Viem aj to ze prostriedky CPU su dostupne cely cas, avsak je to OS ktory "moderuje" pristup k nim.

To chovanie je typicky take, ze windows sa pri HT P4 chova ako keby videl dva procesory. Nasledne uz ale velmi neviem o tom akou formou sam OS optimalizuje chod beziacich procesov, pripadne ako procesy su sami o sebe optimalizovane.

Z praxe s 1, 2 a 4 jadrovymi procesormi zatial viem ze u 1 jadroveho viem dosiahnut sice nizku bezpecnost behu aplikacie, ale velmi vysoku efektivitu behu - v zmysle jedno jadro bezi co to da a nicim sa nezdrzuje. Moznost vady v kode znamena ze mozno dojde k zacykleniu ktore so sebou vezme cely system.

P4 v tomto velmi nezaostavalo a HT na tom vela nezmenil. Faktom ale je ze moznost efektivneho vyuzivania jadra je sice vyssia, ale hruby vykon jadra to degraduje prave to ze viacthreadove aplikacie by museli thready delit na viac skupin podla toho co pocitaju, a aka cast CPU sa k tomu vyuziva najviac. Ako som uz spomenul sice ziskam moznost naraz vyuzivat virtualne dalsie jadro (resp ine casti toho isteho fyzickeho jadra), ale v globale to ma svoju dan. Windows sice HT podporuje, ale nie takou formou aby HT samo o sebe bolo pre chod systemu prinosom.

Samozrejme ak aplikacia je tak dobre nakodena ze rozne procesy su urcene roznym castiam procesoru je naozaj mozne dosiahnut vyrazne vyssie vykony pri tom istom CPU s HT on.

Problem je ale dost zasadny v tom ze mnoho aplikacii sice viacvlaknovych je, ale ich optimalizacia je katastroficka aj pre chod na multiprocesorove riesenia, kde thready netreba delit podla toho akej casti procesoru idu - proste nech idu na dalsom fyzickom jadre. Je jednoduchsie optimalizovat aplikaciu pre multithread nez pre hyperthread, no napriek tomu mnoho programov nevie vyuzit viac nez 60-70 percent mozneho potencialu dvojjadrovych procesorov.

Pouzitie nadbytkoveho hardware (povedzme 4 az 16 fyzickych procesorov) to nedokaze odburat tou formou ze "performance issue" sa neprejavi nikdy lebo mame dost vykonu na saturaciu narokov aplikacie. V poslednom obdobi je bohuzial tento trend (od roku 2006-8 kedy sa zacali rozsirovat viacjadrove CPU) este vyraznejsi.

Mnoho viacvlaknovych aplikacii ma nevyvazene naroky na CPU. Jeden thread bezi na 100 percentach, druhy na 10, bohuzial OS ako windows este viac znizuju moznosti ake by HT mohol mat.

Holt u Nehalemu je ale situacia rozhodne ina nez u P4, ale to je dane jak lepsim hrubym vykonom samotneho jedneho jadra, nasledne mnozstvom fyzickych jadier, ale tiez aj pristupom k RAM ktory Intel konecne zlepsil.

Avsak pri hrubom hodnoteni HT a Multiprocesorovych rieseni, vyjde vzdy HT ako snaha o zefektivnenie vykonu, u Multiprocesorov snaha o zvysenie vykonu ale aj stability. Ich kombinacia je rozhodne zaujimavejsia nez uniprocesorove P4 a to je zhruba to na co som chcel tymto poukazat.

Napriek tomu riesenie ktore by ma zaujalo, dnes nieje komercne dostupne... Viac jadrove CPU s HT, ale separovane len na niektorych jadrach... 1 Jadro by bezalo bez HT a dalsie 3 s HT (pripadne konfiguraca 2+2/2). Dovod na taketo riesenie je dany prave nizkou urovnou optimalizacie roznych aplikacii ktore preferuju CPU0, pripadne main thread aplikacie je urcujucim faktorom pre celkovy chod aplikacie a pri vyssom hrubom vykone bezi lepsie.

Multithreading je pre chod windows prirodzenejsi a jeho sprava je z roznych hladisk vyrazne jednoduchsia, avsak su to prave aplikacie a ich katastrofalna uroven ktora tento potencial zrazaju na kolena.

Hyperthreading ma pre efektivitu velmi zaujimave moznosti, avsak uroven optimalizacii musi byt este specifickejsia a narocnejsia a nie vzdy je mozne aplikacne vlakna takouto formou optimalizovat.

Napriek tomu kombinacia oboch rieseni ponuka plny potencial ktory vsak nespada do kategorie "Len hruby vykon je to co sa pocita", a v tom vidim bohuzial problem.