Technológia paralelných výpočtov Hyper Threading. Čo je to Hyper Threading? Ako povoliť podporu v systéme BIOS? Technický popis technológie

„...A my sme hrdí a náš nepriateľ je hrdý
Ruka, zabudni na lenivosť. Pozrime sa,
kto má na konci čižmy
konečne skloní kolená...“
© film "D"Artagnan a traja mušketieri"

Pred časom si autor dovolil “trochu zamrmlať” na novú paradigmu od Intel Hyper Threading. Ku cti Intelu treba povedať, že zmätok autora nezostal nepovšimnutý. Preto bola autorovi ponúknutá pomoc pri zisťovaní ( ako delikátne zhodnotili manažéri korporácie) „skutočná“ situácia s technológiou Hyper Threading. No túžbu dozvedieť sa pravdu možno len chváliť. Nie je to tak, milý čitateľ? Aspoň takto znie jedna z pravdivých zásad: veru to je dobre. No, pokúsime sa konať v súlade s touto frázou. Okrem toho sa skutočne objavilo určité množstvo nových informácií.

Najprv si sformulujme, čo presne vieme o technológii Hyper Threading:

1. Táto technológia je navrhnutá na zvýšenie účinnosti procesora. Faktom je, že podľa odhadov Intelu pracuje iba 30 % času ( Mimochodom, ide o dosť kontroverzný údaj, detaily jeho výpočtu nie sú známe) všetkých akčných členov v procesore. Súhlasím, je to dosť urážlivé. A skutočnosť, že vznikol nápad nejako „sčítať“ zvyšných 70 %, vyzerá celkom logicky ( Navyše samotný procesor Pentium 4, v ktorom bude táto technológia implementovaná, netrpí nadmerným výkonom na megahertz). Autor je teda nútený uznať, že táto myšlienka je celkom rozumná.

2. Podstatou technológie Hyper Threading je, že počas vykonávania jedného „vlákna“ programu môžu nečinné výkonné zariadenia začať vykonávať ďalšie „vlákno“ programu ( alebo "vlákna" ďalší programy). Alebo napríklad pri vykonávaní jednej sekvencie príkazov počkajte, kým dáta z pamäte vykonajú inú sekvenciu.

3. Prirodzene, pri vykonávaní rôznych „vlákien“ musí procesor nejako rozlíšiť, ktoré príkazy patria ku ktorému „vláknu“. To znamená, že existuje nejaký mechanizmus ( nejakú značku), vďaka čomu procesor rozlišuje, do ktorého „vlákna“ príkazy patria.

4. Je tiež zrejmé, že vzhľadom na malý počet všeobecných registrov v architektúre x86 ( celkom 8), každé vlákno má svoju vlastnú sadu registrov. Toto už však nie je novinka, toto architektonické obmedzenie sa už nejaký čas obchádzalo pomocou „premenovania registra“. Inými slovami, fyzických registrov je oveľa viac ako logických registrov. V procesore Pentium III je ich 40 Určite toto číslo pre Pentium 4 nemá autor žiadne opodstatnenie (; okrem úvah o "symetrii":-) názor je taký, že sú ich asi stovky. Nepodarilo sa nájsť spoľahlivé informácie o ich počte. Podľa zatiaľ nepotvrdených údajov je ich 256. Podľa iných zdrojov iné číslo. Vo všeobecnosti úplná neistota... Mimochodom, pozícia Intelu na toto dôvod je úplne nepochopiteľný :-( Autor nechápe, čo spôsobilo takéto utajenie.

5. Je tiež známe, že v prípade, keď si viaceré „vlákna“ nárokujú rovnaké zdroje, alebo jedno z „vláknových“ čaká na dáta, programátor musí vložiť špeciálnu „pauzu“, aby sa predišlo poklesu výkonu. príkaz. To si samozrejme vyžiada ďalšiu rekompiláciu programov.

6. Je tiež jasné, že môžu nastať situácie, keď pokusy o súčasné vykonanie niekoľkých „vláknových vlákien“ povedú k poklesu výkonu. Napríklad vzhľadom na skutočnosť, že veľkosť vyrovnávacej pamäte L2 nie je nekonečná a aktívne „vlákna“ sa pokúsia načítať vyrovnávaciu pamäť, je možné, že takýto „boj o vyrovnávaciu pamäť“ povedie k neustálemu vyčisteniu a opätovnému načítaniu údaje vo vyrovnávacej pamäti druhej úrovne.

7. Intel tvrdí, že pri optimalizácii programov pre túto technológiu bude zisk až 30%. ( Alebo skôr Intel tvrdí, že na dnešných serverových aplikáciách a dnešných systémoch až 30 %) Hm... To je viac než dostatočný podnet na optimalizáciu.

No, sformulovali sme niektoré funkcie. Teraz sa skúsme zamyslieť nad niektorými dôsledkami ( vždy, keď je to možné, na základe informácií, ktoré sú nám známe). Čo môžeme povedať? Po prvé, musíme sa bližšie pozrieť na to, čo sa nám presne ponúka. Je tento syr skutočne „zadarmo“? Po prvé, poďme zistiť, ako presne dôjde k „súčasnému“ spracovaniu niekoľkých „vlákien“. Mimochodom, čo si Intel predstavuje pod slovom „vlákno“?

Autor má dojem ( možno chybné), čo sa v tomto prípade týka programového fragmentu, ktorý multitaskingový operačný systém pridelí na vykonanie jednému z procesorov viacprocesorového hardvérového systému. "Počkaj!" pozorný čitateľ povie „toto je jedna z definícií, čo je tu nové? A nič dovnútra daný Autor si v tejto otázke nenárokuje originalitu. Rád by som prišiel na to, čo bol Intel "originálny" :-). No berme to ako pracovnú hypotézu.

Ďalej sa vykoná určité vlákno. Medzitým príkazový dekodér ( mimochodom, úplne asynchrónne a nezaradené do notoricky známych 20 stupňov Net Burst) vykonáva vzorkovanie a dešifrovanie ( so všetkými vzájomnými závislosťami) V mikroinštrukcií. Tu je potrebné objasniť, čo autor myslí slovom „asynchrónny“ - faktom je, že výsledok „kolapsu“ x86 príkazov v mikroinštrukciách nastáva v dešifrovacom bloku. Každá x86 inštrukcia môže byť dekódovaná do jednej, dvoch alebo viacerých mikroinštrukcií. Zároveň sa vo fáze spracovania vyjasnia vzájomné závislosti a potrebné dáta sa doručia cez systémovú zbernicu. V súlade s tým bude rýchlosť činnosti tohto bloku často závisieť od rýchlosti prístupu k dátam z pamäte a v najhoršom prípade je ňou určená. Bolo by logické „odpojiť“ ho od potrubia, v ktorom sa v skutočnosti vykonávajú mikrooperácie. Dosiahlo sa to umiestnením dešifrovacieho bloku predtým trace cache. Čo tým dosiahneme? A pomocou tohto „preusporiadania blokov“ dosiahneme jednoduchú vec: ak existujú mikroinštrukcie na vykonanie vo vyrovnávacej pamäti sledovania, procesor pracuje efektívnejšie. Prirodzene, táto jednotka pracuje na frekvencii procesora, na rozdiel od Rapid Engine. Mimochodom, autor nadobudol dojem, že tento dekodér je niečo ako dopravný pás s dĺžkou až 10–15 stupňov. Od získania údajov z vyrovnávacej pamäte po získanie výsledku teda zjavne existuje asi 30 35 fáz ( vrátane potrubia Net Burst, pozri Microdesign Resources August2000 Správa o mikroprocesore, zväzok 14 Archív8, strana 12).

Výsledný súbor mikroinštrukcií sa spolu so všetkými vzájomnými závislosťami hromadí v trace cache v tej istej cache, ktorá obsahuje približne 12 000 mikrooperácií. Podľa hrubých odhadov je zdrojom takéhoto odhadu štruktúra mikroinštrukcie P6; faktom je, že v zásade je nepravdepodobné, že by sa dĺžka pokynov dramaticky zmenila ( Vzhľadom na dĺžku mikroinštrukcie spolu s obslužnými poľami je asi 100 bitov) veľkosť vyrovnávacej pamäte sledovania sa získava z 96 KB do 120 KB!!! Avšak! Na tomto pozadí je veľkosť vyrovnávacej pamäte údajov 8 KB vyzerá akosi asymetricky :-)... a bledo. Samozrejme, ako sa veľkosť zväčšuje, oneskorenie prístupu sa zvyšuje ( napríklad pri zvýšení na 32 kB bude oneskorenie namiesto dvoch hodinových cyklov 4). Je však rýchlosť prístupu k tejto vyrovnávacej pamäti skutočne taká dôležitá, že zvýšenie latencie o 2 hodinové cykly ( na pozadí celkovej dĺžky celého dopravníka) robí takýto nárast objemu nerentabilným? Alebo je to len otázka neochoty zväčšiť veľkosť kryštálov? Ale potom, pri prechode na 0,13 mikrónov, bolo prvým krokom zvýšenie tejto konkrétnej vyrovnávacej pamäte ( nie vyrovnávacia pamäť druhej úrovne). Tí, ktorí pochybujú o tejto téze, by si mali pamätať na prechod z Pentia na Pentium MMX vďaka zvýšeniu vyrovnávacej pamäte prvej úrovne zdvojnásobil Takmer všetky programy zaznamenali nárast výkonu o 10 15 %. Čo môžeme povedať o náraste? štvornásobný (najmä vzhľadom na to, že rýchlosť procesora sa zvýšila na 2 GHz a multiplikačný faktor z 2,5 na 20)? Podľa nepotvrdených správ sa pri ďalšej modifikácii jadra Pentium4 (Prescott) zväčší vyrovnávacia pamäť prvej úrovne na 16 alebo 32 KB. Zvýši sa aj vyrovnávacia pamäť druhej úrovne. V súčasnosti to však nie sú nič iné ako fámy.Úprimne povedané, situácia je trochu nejasná. Aj keď, dajme si rezervu, autor plne pripúšťa, že takýto nápad brzdí istý konkrétny dôvod. Napríklad určité požiadavky na geometriu usporiadania blokov alebo banálny nedostatok voľného priestoru v blízkosti dopravníka ( je jasné, že je potrebné umiestniť dátovú vyrovnávaciu pamäť bližšie k ALU).

Bez toho, aby sme sa rozptyľovali, pozrime sa na proces ďalej. Potrubie beží, nech súčasné tímy používajú ALU. Je jasné, že FPU, SSE, SSE2 a ďalšie sú nečinné. Žiadne také šťastie Hyper Threading neprichádza do úvahy. Keď si jednotka na premenovanie registrov všimla, že sú pripravené mikroinštrukcie spolu s údajmi pre nové vlákno, pridelí časť fyzických registrov novému vláknu. Mimochodom, sú možné dve možnosti: blok fyzických registrov je spoločný pre všetky vlákna alebo je pre každé samostatný. Súdiac podľa toho, že v prezentácii Hyper Threading od Intelu nie je uvedený blok premenovania registra ako bloky, ktoré je potrebné zmeniť, je vybratá prvá možnosť. Je to dobré alebo zlé? Z pohľadu technológov je to jednoznačne dobré, pretože to šetrí tranzistory. Z pohľadu programátorov je to zatiaľ nejasné. Ak je počet fyzických registrov skutočne 128, potom pri akomkoľvek rozumnom počte vlákien nemôže nastať situácia „nedostatku registrov“. Potom oni ( mikroinštrukcií) sa odosielajú do plánovača, ktorý ich v skutočnosti odošle do vykonávacieho zariadenia ( ak nie je zaneprázdnený) alebo "v rade", ak tento ovládač nie je momentálne dostupný. V ideálnom prípade sa tak dosiahne efektívnejšie využitie existujúcich akčných členov. V tomto čase ja sám CPU z pohľadu OS vyzerá ako dva "logické" procesory. Hm... Naozaj je všetko také bez mráčika? Pozrime sa bližšie na situáciu: časť zariadenia ( ako sú vyrovnávacie pamäte, Rapid Engine, modul predikcie prechodu) sú spoločné pre oba procesory. Mimochodom, presnosť predikcie prechodu z toho s najväčšou pravdepodobnosťou mierne bude trpieť. Najmä ak súčasne vykonávajúce vlákna nie sú navzájom spojené. A časť ( napríklad plánovač sekvencií mikroinštrukcií MIS druh ROM obsahujúcej sadu predprogramovaných sekvencií bežných operácií a tabuľku premenovania registra RAT) bloky sa musia odlišovať rôznymi vláknami bežiacimi na „rôznych“ procesoroch. Pozdĺž cesty ( z komunity cache) z toho vyplýva, že ak sú dve vlákna nepotrebné z vyrovnávacej pamäte ( to znamená, že zvýšenie vyrovnávacej pamäte má veľký efekt), To používanie Hyper Threading môže dokonca znížiť rýchlosť. Stáva sa to preto, že v súčasnosti bol implementovaný „konkurenčný“ mechanizmus boja o vyrovnávaciu pamäť: „aktívne“ vlákno v súčasnosti nahrádza „neaktívne“. Mechanizmus ukladania do vyrovnávacej pamäte sa však zrejme môže zmeniť. Je tiež zrejmé, že rýchlosť ( aspoň zatiaľ) sa zníži v tých aplikáciách, v ktorých sa znížila poctivá VTS. Napríklad SPEC ViewPerf zvyčajne vykazuje lepšie výsledky na jednoprocesorových systémoch. Preto budú výsledky pravdepodobne nižšie na systéme s Hyper Threading ako bez neho. V skutočnosti si výsledky praktického testovania Hyper Threading môžete pozrieť na.

Mimochodom, na internet unikli informácie, že ALU v Pentiu 4 16-bit. Autor bol k takýmto informáciám spočiatku veľmi skeptický - vraj, čo si tí závistlivci mysleli :-). A potom ma zverejnenie takýchto informácií v Micro Design Report prinútilo zamyslieť sa: čo ak je to pravda? A hoci informácie o tom nesúvisia priamo s témou článku, je ťažké odolať :-). Pokiaľ autor „dostatočne pochopil“, ide o to, že ALU je skutočne 16-bitová. zdôrazňujem Len ALU. To nemá nič spoločné s bitovou kapacitou samotného procesora. Takže za pol minúty ( vola sa to tik, tik) ALU ( dvojnásobnú frekvenciu, ako si pamätáte) počíta iba 16 bitov. Druhých 16 sa počíta počas nasledujúcej polovice taktu. Mimochodom, potreba urobiť ALU dvakrát rýchlejšie je ľahko pochopiteľná - je to nevyhnutné pre včasné „brúsenie“ údajov. Plných 32 bitov sa teda vypočíta v celom taktovacom cykle. V skutočnosti sú zrejme potrebné 2 cykly kvôli potrebe „prilepiť“ a „odlepiť“ bity, ale tento problém je potrebné objasniť. V skutočnosti vykopávky (o ktorých môžete napísať samostatnú báseň) priniesli nasledovné: každá ALU je rozdelená na 2 16-bitové polovice. Prvá polovica cyklu spracováva 16 bitov dvačísla a forma nesú bity pre ostatné polovice. Druhá polovica v tomto čase dokončí spracovanie predchádzajúcečísla. Druhá polovica prvej polovice ALU spracováva 16 bitov od Ďalšie dvojice čísel a tvoria ich prevody. Druhá polovica spracováva najvyšších 16 bitov prvý párčísla a získa pripravený 32-bitový výsledok. Oneskorenie pri prijatí 1 výsledku je 1 hodinový cyklus, ale potom je každých pol hodinového cyklu 1 32-bitový výsledok. Celkom vtipné a efektné. Prečo bol vybraný práve tento ALU model? Zdá sa, že s takouto organizáciou Intel zabíja niekoľko vtákov jednou ranou:

1. Je jasné, že 16-bitové široké potrubie je jednoduchšie pretaktovať ako 32-bitové široké potrubie, jednoducho kvôli prítomnosti presluchov a ko

2. Intel očividne považoval operácie výpočtu celých čísel za dostatočne časté na zrýchlenie ALU, a nie, povedzme, FPU. Je pravdepodobné, že pri výpočte výsledkov celočíselných operácií sa používajú buď tabuľky, alebo schémy „carry-akumulované“. Pre porovnanie, jedna 32-bitová tabuľka je 2E32 adries, t.j. 4 gigabajty. Dve 16-bitové tabuľky majú 2 x 64 kb alebo 128 kilobajtov, pocítite rozdiel! Akumulácia pomlčiek v dvoch 16-bitových častiach prebieha rýchlejšie ako v jednej 32-bitovej časti.

3. Šetrí tranzistory a... teplo. Koniec koncov, nie je žiadnym tajomstvom, že všetky tieto architektonické triky sú vyhrievané. Zrejme to bolo dosť veľké (a možno Domov) problém, akú hodnotu má Thermal Monitor napríklad ako technológia! Koniec koncov, takáto technológia ako taká nie je potrebná, to je, samozrejme, pekné, že existuje. Povedzme si však pravdu – na dostatočnú spoľahlivosť by stačilo jednoduché blokovanie. Keďže bola poskytnutá taká komplexná technológia, znamená to, že táto možnosť bola vážne zvážená, keď takéto zmeny frekvencie na cestách boli jedným z bežných prevádzkových režimov. Alebo možno ten hlavný? Nie nadarmo sa šuškalo, že Pentium 4 bolo plánované s oveľa väčším počtom akčných členov. Potom by sa problém tepla mal jednoducho stať hlavným. Alebo skôr podľa tých istých fám malo výdaja tepla byť až až 150 W. A potom je veľmi logické prijať opatrenia na zabezpečenie toho, aby procesor fungoval „na plný výkon“ iba v systémoch, kde je zabezpečené normálne chladenie. Navyše väčšina skriniek „čínskeho“ pôvodu nežiari premysleným dizajnom z hľadiska chladenia. Hm.... Prešli sme dlhú cestu :-)

Ale to všetko je teoretizovanie. Existujú dnes nejaké procesory, ktoré využívajú túto technológiu? Jedzte. Toto je Xeon ( Prestonia) a XeonMP. Navyše je zaujímavé, že XeonMP sa líši od Xeonu podporou až 4 procesorov ( čipsety ako IBM Summit podporujú až 16 procesorov, technika je približne rovnaká ako v čipsete ProFusion) a prítomnosť vyrovnávacej pamäte tretej úrovne s veľkosťou 512 KB a 1 MB integrovanej do jadra. Mimochodom, prečo integrovali vyrovnávaciu pamäť tretej úrovne? Prečo sa nezvýši vyrovnávacia pamäť prvej úrovne?? Musí existovať nejaký rozumný dôvod... Prečo nezvýšili vyrovnávaciu pamäť druhej úrovne? Možno dôvodom je, že Advanced Transfer Cache potrebuje relatívne nízku latenciu. A zvýšenie veľkosti vyrovnávacej pamäte vedie k zvýšeniu latencie. Preto sú vyrovnávacia pamäť tretej úrovne pre jadro a vyrovnávacia pamäť druhej úrovne vo všeobecnosti „reprezentovaná“ ako zbernica. Len pneumatika :-). Pokrok je teda zrejmý – urobilo sa všetko preto, aby sa zabezpečilo, že údaje sa do jadra dostanú čo najrýchlejšie ( a zároveň bola menej zaťažená pamäťová zbernica).

Ukazuje sa, že neexistujú žiadne zvláštne prekážky? Prečo sa autor nebude môcť „mrmlať“? Jeden procesor - a OS vidí dva. Dobre! Dva procesory a OS vidí 4! Krása! Stop! Na akom OS to funguje so 4 procesormi? Operačné systémy od Microsoftu, ktoré rozumejú viac ako dvom procesorom, stoja kompletne odlišný peniaze. Napríklad 2000 Professional, XP Professional, NT4.0 si rozumejú len s dvoma procesormi. A vzhľadom na to, že táto technológia je zatiaľ určená pre trh pracovných staníc ( a servery) a je k dispozícii iba v zodpovedajúcich procesoroch - ukázalo sa, že je to sakramentsky urážlivé. Procesory s touto technológiou dnes môžeme využívať len zakúpením dvojprocesorovej dosky a inštaláciou jeden CPU. Čím ďalej, tým je to čudnejšie, ako hovorievala Alenka v krajine zázrakov... To znamená, že osoba, ktorá túži používať túto technológiu, je jednoducho nútená kúpiť si verzie súčasných operačných systémov Server a Advanced Server. A "bezplatný" procesor je trochu drahý... Možno stojí za to dodať, že Intel v súčasnosti aktívne „komunikuje“ so spoločnosťou Microsoft a snaží sa prepojiť licenčnú politiku s fyzické procesor. Aspoň podľa dokumentu budú nové operačné systémy od Microsoftu licencované fyzickým procesorom. Minimálne WindowsXP je licencovaný podľa počtu fyzických procesorov.

Samozrejme, vždy sa môžete obrátiť na operačné systémy od iných výrobcov. Povedzme si úprimne – toto nie je veľmi dobré východisko zo súčasnej situácie... Dá sa teda pochopiť váhanie Intelu, ktorý pomerne dlho rozmýšľal, či túto technológiu použiť alebo nie.

No, nezabudnime na dosť dôležitý záver: Používanie Hyper Threading môže viesť k zvýšeniu výkonu aj k stratám. No, keďže sme už diskutovali o prehre, pokúsme sa pochopiť, čo je potrebné na víťazstvo: a na víťazstvo je potrebné, aby vedeli o tejto technológii:

  1. BIOS základnej dosky
  2. Operačný systém (!!!)
  3. Vlastne samotná aplikácia

Dovoľte mi venovať sa tomuto bodu podrobnejšie, ide o to, že problém nie je v systéme BIOS. O operačnom systéme sme hovorili o niečo skôr. Ale v tých vláknach, ktoré napríklad očakávajú údaje z pamäte, budete musieť zadať špeciálny príkaz pauza, aby sa nespomalil procesor; koniec koncov, pri absencii údajov je vlákno schopné zablokovať určité akčné členy. A aby bolo možné vložiť tento príkaz, aplikácie budú musieť byť prekompilované - to nie je dobré, ale vďaka Intelu si na to v poslednej dobe všetci začali zvykať :-). Teda hlavné ( podľa autora) nevýhodou technológie Hyper Threading je nutnosť ďalšej kompilácie. Hlavnou výhodou tohto prístupu je takáto rekompilácia počas cesty ( a s najväčšou pravdepodobnosťou výraznejšie :-) zvýši výkon v „poctivých“ dvojprocesorových systémoch a to možno len privítať. Mimochodom, už existujú experimentálne štúdie, ktoré potvrdzujú, že v vo väčšine prípadov ide o programy optimalizované pre SMP, profitovať z Hyper Threading od 15 % do 18 %. Toto je celkom dobré. Mimochodom, môžete vidieť aj to, v akých prípadoch vedie Hyper Threading k poklesu výkonu.

A nakoniec si skúsme predstaviť, čo by sa mohlo zmeniť ( zlepšiť) v ďalšom rozvíjaní tejto myšlienky. Je celkom zrejmé, že vývoj tejto technológie bude priamo súvisieť s vývojom jadra Pentium 4. Poďme si teda predstaviť potenciálne zmeny v jadre. Čo je ďalej v našom pláne? Technológia 0,09 mikrónu, známejšia ako 90nm…. Autor sa prikláňa k presvedčeniu ( práve teraz), že vývoj tejto rodiny procesorov sa bude uberať niekoľkými smermi naraz:

  • Vďaka „jemnejšiemu“ technickému procesu sa frekvencia procesora ešte zvýši.
  • Dúfajme, že sa zväčší dátová vyrovnávacia pamäť. Minimálne do 32 kB.
  • Urobia „poctivý“ 32-bitový ALU. To by malo zlepšiť produktivitu.
  • Zvýšte rýchlosť systémovej zbernice ( to je však už v blízkej budúcnosti).
  • Vytvoria dvojkanálovú pamäť DDR ( opäť je čakanie relatívne krátke).
  • Možno predstavia analóg technológie x86-64, ak táto technológia ( vďaka AMD) zakorení. Autor zároveň zo všetkých síl dúfa, že tento analóg bude kompatibilný s x86-64. Prestať vytvárať rozšírenia, ktoré sú navzájom nekompatibilné... Opäť nás bude zaujímať Jerry Sanders, v ktorom uviedol, že AMD a Intel sa minulý rok dohodli na krížových licenciách na všetko okrem systémovej zbernice Pentium4. Znamená to, že Intel zabuduje x86-64 do ďalšieho jadra Pentium4 (Prescott) a AMD do svojich procesorov zabuduje Hyper Threading? Zaujímavá otázka...
  • Možno sa zvýši počet ovládačov. Je pravda, že rovnako ako predchádzajúci bod je to dosť kontroverzný bod, pretože si vyžaduje takmer úplné prepracovanie jadra - a to je dlhý a náročný proces.

Zaujímalo by ma, či sa rozvinie myšlienka Hyper Threading? Faktom je, že kvantitatívne sa to nemá kam rozvíjať, je jasné, že dva fyzické procesory sú lepšie ako tri logické. Áno, a umiestnenie nebude jednoduché... Je zaujímavé, že Hyper Threading môže byť užitočný aj pri integrácii dvoch ( alebo viac) procesorov na čip. No kvalitatívnymi zmenami autor myslí, že prítomnosť takejto technológie v bežných desktopoch povedie k tomu, že v skutočnosti väčšina používateľov bude pracovať na [takmer] dvojprocesorových strojoch, čo je veľmi dobré. Je to dobré, pretože takéto stroje fungujú oveľa hladšie a lepšie reagujú na akcie používateľa, a to aj pri veľkom zaťažení. To je z pohľadu autora veľmi dobré.

Namiesto doslovu

Autor musí uznať, že počas práce na článku sa jeho postoj k Hyper Threading niekoľkokrát zmenil. Ako sa informácie zbierali a spracovávali, postoj sa stal buď celkovo pozitívnym, alebo naopak :-). Momentálne môžeme napísať nasledovné:

Existujú iba dva spôsoby, ako zlepšiť výkon: zvýšiť frekvenciu a zvýšiť výkon na takt. A ak je celá architektúra Pentium4 navrhnutá pre prvú cestu, potom Hyper Threading je len druhá. Z tohto pohľadu to možno len privítať. Hyper Threading má tiež niekoľko zaujímavých dôsledkov, ako napríklad: zmena programovacej paradigmy, rozšírenie multiprocesingu pre masy, zvýšenie výkonu procesora. Na tejto ceste je však niekoľko „veľkých prekážok“, na ktorých je dôležité „neuviaznuť“: nedostatok normálnej podpory operačných systémov a, čo je najdôležitejšie, potreba rekompilácie ( av niektorých prípadoch aj zmena algoritmu), aby mohli naplno využívať výhody Hyper Threading. Prítomnosť Hyper Threading by navyše umožnila skutočne spúšťať operačný systém a aplikácie paralelne, a nie v „kúskoch“ po jednom, ako je tomu teraz. Samozrejme za predpokladu, že je dostatok voľných pohonov.

Autor by chcel zdôrazniť svoju vďačnosť Maxim Lenya(aka C.A.R.C.A.S.S.) a Iľja Vaitsman(aka Stranger_NN) za opakovanú a neoceniteľnú pomoc pri písaní článku.
Chcel by som sa tiež poďakovať všetkým účastníkom fóra, ktorí opakovane vyjadrili cenné pripomienky.

Ak ste si pozorne prezreli obsah nastavenia systému BIOS, možno ste si všimli možnosť CPU Hyper Threading Technology. A možno vás zaujímalo, čo je Hyper Threading (alebo hyperthreading, oficiálny názov je Hyper Threading Technology, HTT) a na čo táto možnosť slúži.

Hyper Threading je relatívne nová technológia vyvinutá spoločnosťou Intel pre procesory s architektúrou Pentium. Ako ukázala prax, použitie technológie Hyper Threading umožnilo v mnohých prípadoch zvýšiť výkon procesora približne o 20-30%.

Tu si musíte pamätať, ako vo všeobecnosti funguje centrálny procesor počítača. Len čo zapnete počítač a spustíte na ňom program, CPU začne čítať inštrukcie v ňom obsiahnuté, zapísané v takzvanom strojovom kóde. Postupne číta každú inštrukciu a vykoná ich jednu po druhej.

Mnohé programy však majú niekoľko súčasne spustených softvérových procesov. Moderné operačné systémy navyše umožňujú užívateľovi mať spustených niekoľko programov naraz. A nielen to dovoľujú – v skutočnosti je dnes situácia, keď v operačnom systéme beží jediný proces, úplne nemysliteľná. Preto procesory vyvinuté pomocou starších technológií mali nízky výkon v prípadoch, keď bolo potrebné spracovávať viacero súčasných procesov naraz.

Samozrejme, na vyriešenie tohto problému môžete do systému zahrnúť niekoľko procesorov alebo procesorov využívajúcich niekoľko fyzických výpočtových jadier. Ale takéto zlepšenie je drahé, technicky zložité a nie vždy efektívne z praktického hľadiska.

História vývoja

Preto bolo rozhodnuté vytvoriť technológiu, ktorá by umožnila spracovanie viacerých procesov na jednom fyzickom jadre. V tomto prípade to pri programoch bude navonok vyzerať, ako keby v systéme bolo niekoľko procesorových jadier naraz.

Podpora technológie Hyper Threading sa prvýkrát objavila v procesoroch v roku 2002. Išlo o procesory rodiny Pentium 4 a serverové procesory Xeon s taktom nad 2 GHz. Spočiatku bola táto technológia označená kódovým názvom Jackson, ale potom sa jej názov zmenil na Hyper Threading, ktorý je zrozumiteľnejší pre širokú verejnosť - čo možno preložiť ako „super-threading“.

Zároveň sa podľa Intelu povrchová plocha kryštálu procesora, ktorý podporuje Hyper Threading, zväčšila v porovnaní s predchádzajúcim modelom, ktorý ho nepodporuje, len o 5 %, s priemerným nárastom výkonu o 20 %.

Napriek tomu, že sa táto technológia vo všeobecnosti osvedčila, Intel sa z viacerých dôvodov rozhodol vypnúť technológiu Hyper Threading v procesoroch rodiny Core 2, ktoré nahradili Pentium 4. Hyper Threading sa však neskôr opäť objavil v procesoroch Architektúra Sandy Bridge a Ivy Bridge a Haswell, ktoré boli výrazne prepracované.

Podstata technológie

Pochopenie technológie Hyper Threading je dôležité, pretože je jednou z kľúčových funkcií procesorov Intel.

Napriek všetkým úspechom, ktoré procesory dosiahli, majú jednu podstatnú nevýhodu – dokážu naraz vykonať len jednu inštrukciu. Povedzme, že ste súčasne spustili aplikácie ako textový editor, prehliadač a Skype. Z užívateľského hľadiska možno toto softvérové ​​prostredie nazvať multitasking, avšak z pohľadu procesora to ani zďaleka neplatí. Jadro procesora bude stále vykonávať jednu inštrukciu za určité časové obdobie. V tomto prípade je úlohou procesora rozdeľovať procesorové časové zdroje medzi jednotlivé aplikácie. Pretože toto postupné vykonávanie inštrukcií prebieha extrémne rýchlo, nevšimnete si to. A zdá sa vám, že žiadne oneskorenie nie je.

Stále však dochádza k oneskoreniu. Oneskorenie nastáva v dôsledku spôsobu, akým každý program dodáva procesoru dáta. Každý dátový tok musí prísť v konkrétnom čase a procesor ho spracuje individuálne. Technológia Hyper Threading umožňuje každému jadru procesora naplánovať spracovanie údajov a distribuovať zdroje súčasne pre dve vlákna.

Je potrebné poznamenať, že v jadre moderných procesorov existuje niekoľko takzvaných vykonávacích jednotiek, z ktorých každá je navrhnutá tak, aby vykonávala špecifickú operáciu s údajmi. V tomto prípade môžu byť niektoré z týchto vykonávacích zariadení nečinné pri spracovávaní údajov z jedného vlákna.

Aby sme pochopili túto situáciu, môžeme uviesť analógiu s pracovníkmi pracujúcimi v montážnej dielni na dopravníku a spracovávajúcimi rôzne druhy dielov. Každý pracovník je vybavený špecifickým nástrojom určeným na vykonávanie úlohy. Ak však súčiastky dorazia v nesprávnom poradí, dochádza k oneskoreniam, pretože niektorí pracovníci čakajú v rade na začatie práce. Hyper Threading možno prirovnať k dodatočnému dopravnému pásu, ktorý bol položený v dielni tak, aby predtým nečinní pracovníci vykonávali svoje operácie nezávisle od ostatných. Dielňa je stále jedna, ale diely sa spracovávajú rýchlejšie a efektívnejšie, čo má za následok skrátenie prestojov. Hyper Threading teda umožnil zapnúť tie jednotky vykonávania procesora, ktoré boli nečinné pri vykonávaní pokynov z jedného vlákna.

Hneď ako zapnete počítač s dvojjadrovým procesorom, ktorý podporuje Hyper Threading a pod záložkou Výkon otvoríte Windows Task Manager, nájdete v ňom štyri grafy. To však neznamená, že v skutočnosti máte 4 jadrá procesora.

Stáva sa to preto, že systém Windows si myslí, že každé jadro má dva logické procesory. Pojem „logický procesor“ znie vtipne, no znamená procesor, ktorý fyzicky neexistuje. Systém Windows môže posielať toky údajov každému logickému procesoru, ale v skutočnosti to robí iba jedno jadro. Preto sa jedno jadro s technológiou Hyper Threading výrazne líši od samostatných fyzických jadier.

Technológia Hyper Threading vyžaduje podporu nasledujúceho hardvéru a softvéru:

  • CPU
  • Čipová súprava základnej dosky
  • operačný systém

Výhody technológie

Teraz sa zamyslime nad nasledujúcou otázkou: o koľko zvyšuje technológia Hyper Threading výkon počítača? Pri každodenných úlohách, ako je surfovanie po internete a písanie, nie sú výhody technológie také zrejmé. Majte však na pamäti, že dnešné procesory sú také výkonné, že každodenné úlohy zriedkakedy využívajú procesor naplno. Okrem toho veľa závisí aj od toho, ako je softvér napísaný. Môžete mať spustených viacero programov naraz, ale ak sa pozriete na graf zaťaženia, uvidíte, že sa používa iba jeden logický procesor na jadro. Stáva sa to preto, že softvér nepodporuje distribúciu procesov medzi jadrami.

Pre zložitejšie úlohy však môže byť užitočnejšia funkcia Hyper Threading. Aplikácie, ako sú programy na 3D modelovanie, 3D hry, programy na kódovanie/dekódovanie hudby alebo videa a mnohé vedecké aplikácie sú napísané tak, aby plne využívali výhody multithreadingu. Pri hraní náročných hier, počúvaní hudby alebo sledovaní filmov tak môžete zažiť výhody výkonu počítača s podporou Hyper Threading. Nárast výkonu môže dosiahnuť až 30 %, aj keď môžu nastať situácie, kedy Hyper Threading neposkytuje žiadnu výhodu. Niekedy, ak obe vlákna načítajú všetky jednotky vykonávania procesora rovnakými úlohami, možno dokonca pozorovať mierny pokles výkonu.

Keď sa vrátime k prítomnosti zodpovedajúcej možnosti v nastavení systému BIOS, ktorá vám umožňuje nastaviť parametre Hyper Threading, vo väčšine prípadov sa odporúča povoliť túto funkciu. Vždy ho však môžete zakázať, ak sa ukáže, že váš počítač beží s chybami alebo má dokonca nižší výkon, ako ste očakávali.

Záver

Keďže maximálny nárast výkonu pri použití Hyper Threading je 30 %, nedá sa povedať, že by sa technológia rovnala zdvojnásobeniu počtu jadier procesora. Hyper Threading je však užitočná možnosť a ako vlastníka počítača vám neublíži. Jeho prínos je badateľný najmä vtedy, keď napríklad upravujete multimediálne súbory alebo používate počítač ako pracovnú stanicu pre profesionálne programy ako Photoshop alebo Maya.

V minulosti sme hovorili o technológii Simultaneous Multi-Threading (SMT), ktorá sa používa v procesoroch Intel. A hoci to bolo pôvodne s kódovým označením Jackson Technology ako možná možnosť, Intel oficiálne oznámil svoju technológiu na fóre IDF minulú jeseň. Kódové označenie Jackson bolo nahradené vhodnejším Hyper-Threadingom. Aby sme teda pochopili, ako nová technológia funguje, potrebujeme nejaké počiatočné znalosti. Konkrétne musíme vedieť, čo je vlákno, ako sa tieto vlákna vykonávajú. Prečo aplikácia funguje? Ako spracovateľ vie, aké operácie má vykonať s akými údajmi? Všetky tieto informácie sú obsiahnuté v skompilovanom kóde spustenej aplikácie. Akonáhle aplikácia prijme akýkoľvek príkaz, akékoľvek údaje od používateľa, vlákna sa okamžite odošlú do procesora, v dôsledku čoho vykoná to, čo musí urobiť, ako odpoveď na požiadavku používateľa. Z pohľadu procesora je vlákno súbor inštrukcií, ktoré je potrebné vykonať. Keď vás v Quake III Arena zasiahne projektil, alebo keď otvoríte dokument Microsoft Word, procesor dostane špecifickú sadu pokynov, ktoré musí vykonať.

Procesor presne vie, kde tieto pokyny získať. Na tento účel je určený zriedkavo spomínaný register s názvom Program Counter (PC). Tento register ukazuje na miesto v pamäti, kde je uložená ďalšia inštrukcia, ktorá sa má vykonať. Keď sa vlákno odošle do procesora, adresa pamäte vlákna sa nahrá do tohto programového počítadla, takže procesor presne vie, kde má spustiť vykonávanie. Po každej inštrukcii sa hodnota tohto registra zvýši. Celý tento proces beží, kým sa vlákno neskončí. Na konci vykonávania vlákna sa do programového počítadla zadá adresa ďalšej inštrukcie, ktorá sa má vykonať. Vlákna sa môžu navzájom prerušiť a procesor uloží hodnotu programového počítadla do zásobníka a nahrá do počítadla novú hodnotu. V tomto procese však stále existuje obmedzenie - za jednotku času môže byť spustené iba jedno vlákno.

Existuje známy spôsob, ako tento problém vyriešiť. Spočíva v použití dvoch procesorov – ak jeden procesor dokáže vykonávať jedno vlákno naraz, tak dva procesory už môžu vykonávať dve vlákna za rovnakú jednotku času. Upozorňujeme, že táto metóda nie je ideálna. Prichádza s mnohými ďalšími problémami. Niektoré už určite poznáte. Po prvé, viacero procesorov je vždy drahších ako jeden. Po druhé, správa dvoch procesorov tiež nie je taká jednoduchá. Okrem toho nezabudnite na rozdelenie zdrojov medzi procesory. Napríklad pred uvedením čipsetu AMD 760MP zdieľali všetky platformy x86 s podporou viacerých procesorov celú šírku pásma systémovej zbernice medzi všetky dostupné procesory. Hlavná nevýhoda je však iná - pre takúto prácu musí aplikácia aj samotný operačný systém podporovať multiprocesing. Schopnosť distribuovať vykonávanie viacerých vlákien medzi počítačové zdroje sa často nazýva multithreading. Operačný systém musí zároveň podporovať multithreading. Aplikácie musia tiež podporovať multithreading, aby čo najlepšie využili zdroje vášho počítača. Majte to na pamäti, keď sa pozrieme na ďalší prístup k riešeniu problému s viacerými vláknami, novú technológiu Hyper-Threading od spoločnosti Intel.

Produktivity nie je nikdy dosť

Vždy sa veľa hovorí o efektivite. A to nielen vo firemnom prostredí, v niektorých serióznych projektoch, ale aj v bežnom živote. Hovorí sa, že homo sapiens len čiastočne využíva schopnosti svojho mozgu. To isté platí pre procesory moderných počítačov.

Zoberme si napríklad Pentium 4 Procesor má celkovo sedem výkonných jednotiek, z ktorých dve môžu pracovať s dvojnásobnou rýchlosťou dvoch operácií (micro-ops) za cyklus. V každom prípade by ste ale nenašli program, ktorý by všetky tieto zariadenia dokázal naplniť návodom. Bežné programy si vystačia s jednoduchými celočíselnými výpočtami a niekoľkými operáciami načítania a ukladania dát, pričom operácie s pohyblivou rádovou čiarkou zostávajú bokom. Iné programy (napríklad Maya) primárne zaťažujú zariadenia s pohyblivou rádovou čiarkou.

Na ilustráciu situácie si predstavme procesor s tromi vykonávacími jednotkami: aritmetickou logickou jednotkou (celočíselná ALU), jednotkou s pohyblivou rádovou čiarkou (FPU) a jednotkou načítania/ukladania (na zápis a čítanie dát z pamäte). Okrem toho predpokladajme, že náš procesor môže vykonávať akúkoľvek operáciu v jednom hodinovom cykle a môže distribuovať operácie na všetky tri zariadenia súčasne. Predstavme si, že tomuto procesoru sa odošle vlákno s nasledujúcimi pokynmi na vykonanie:

Obrázok nižšie znázorňuje úroveň zaťaženia pohonov (sivá označuje nečinné zariadenie, modrá označuje funkčné zariadenie):

Takže vidíte, že v každom taktovom cykle sa používa iba 33% všetkých akčných členov. Tentoraz FPU zostáva úplne nevyužitá. Podľa Intelu väčšina programov IA-32 x86 nevyužíva viac ako 35 % výkonných jednotiek procesora Pentium 4.

Predstavme si ďalšie vlákno a pošleme ho procesoru na vykonanie. Tentoraz bude pozostávať z operácií načítania dát, pridania a uloženia dát. Vykonajú sa v nasledujúcom poradí:

A opäť, zaťaženie pohonov je len 33%.

Dobrým východiskom z tejto situácie by bol paralelizmus na úrovni inštrukcií (ILP). V tomto prípade sa súčasne vykoná niekoľko inštrukcií, pretože procesor je schopný naplniť niekoľko paralelných vykonávacích jednotiek naraz. Bohužiaľ, väčšina x86 programov nie je adekvátne prispôsobená ILP. Preto musíme nájsť iné spôsoby, ako zvýšiť produktivitu. Ak by teda systém napríklad používal dva procesory naraz, mohli by sa súčasne vykonávať dve vlákna. Toto riešenie sa nazýva paralelizmus na úrovni vlákien (TLP). Mimochodom, toto riešenie je dosť drahé.

Aké ďalšie spôsoby existujú na zvýšenie výkonnej sily moderných procesorov x86?

Hyper-Threading

Problém nedostatočného využitia akčných členov je spôsobený niekoľkými príčinami. Vo všeobecnosti, ak procesor nemôže prijímať dáta požadovanou rýchlosťou (k tomu dochádza v dôsledku nedostatočnej šírky pásma systémovej zbernice a pamäťovej zbernice), aktuátory sa nebudú využívať tak efektívne. Okrem toho existuje ďalší dôvod - nedostatok paralelizmu na úrovni inštrukcií vo väčšine príkazových vlákien.

V súčasnosti väčšina výrobcov zlepšuje rýchlosť procesorov zvýšením rýchlosti hodín a veľkosti vyrovnávacej pamäte. Samozrejme, týmto spôsobom môžete zvýšiť výkon, no stále nebude potenciál procesora plne využitý. Ak by sme mohli spustiť viacero vlákien súčasne, mohli by sme procesor využívať oveľa efektívnejšie. Toto je presne podstata technológie Hyper-Threading.

Hyper-Threading je názov technológie, ktorá predtým existovala mimo sveta x86, Simultaneous Multi-Threading (SMT). Myšlienka tejto technológie je jednoduchá. Jeden fyzický procesor sa operačnému systému javí ako dva logické procesory a operačný systém nevidí rozdiel medzi jedným SMT procesorom alebo dvoma bežnými procesormi. V oboch prípadoch operačný systém smeruje vlákna, ako keby to bol dvojprocesorový systém. Ďalej sú všetky problémy vyriešené na úrovni hardvéru.

V procesore s Hyper-Threadingom má každý logický procesor svoju vlastnú sadu registrov (vrátane samostatného programového počítadla) a aby bola technológia jednoduchá, neimplementuje simultánne vykonávanie inštrukcií načítania/dekódovania v dvoch vláknach. To znamená, že takéto inštrukcie sa vykonávajú jeden po druhom. Paralelne sa vykonávajú iba bežné príkazy.

Táto technológia bola oficiálne oznámená na Intel Developer Forum minulý rok na jeseň. Technológia bola demonštrovaná na procesore Xeon, kde bol rendering realizovaný pomocou Maya. V tomto teste si Xeon s Hyper-Threadingom počínal o 30 % lepšie ako štandardný Xeon. Príjemné zvýšenie výkonu, no najzaujímavejšie je, že technológia je už prítomná v jadrách Pentium 4 a Xeon, len je vypnutá.

Technológia ešte nebola vydaná, ale tí z vás, ktorí si zakúpili 0,13 mikrónový Xeon a nainštalovali tento procesor na dosky s aktualizovaným BIOSom, boli pravdepodobne prekvapení, keď v BIOSe videli možnosť zapnúť/vypnúť Hyper-Threading.

Medzitým Intel ponechá možnosť Hyper-Threading predvolene zakázanú. Na jeho aktiváciu však stačí aktualizovať systém BIOS. To všetko platí pre pracovné stanice a servery, pokiaľ ide o trh s osobnými počítačmi, spoločnosť s touto technológiou v blízkej budúcnosti neplánuje. Aj keď je to možné, výrobcovia základných dosiek poskytnú možnosť povoliť Hyper-Threading pomocou špeciálneho systému BIOS.

Veľmi zaujímavou otázkou ostáva, prečo chce Intel nechať túto možnosť zakázanú?

Ísť hlbšie do technológie

Pamätáte si tieto dve vlákna z predchádzajúcich príkladov? Tentoraz predpokladajme, že náš procesor je vybavený Hyper-Threadingom. Pozrime sa, čo sa stane, ak sa pokúsime spustiť tieto dve vlákna súčasne:

Ako predtým, modré obdĺžniky označujú vykonanie inštrukcie prvého vlákna a zelené obdĺžniky označujú vykonanie inštrukcie druhého vlákna. Sivé obdĺžniky znázorňujú nepoužívané vykonávacie zariadenia a červené označujú konflikt, keď do rovnakého zariadenia prišli dve rôzne inštrukcie z rôznych vlákien.

Čo teda vidíme? Paralelnosť na úrovni vlákien zlyhala - vykonávacie zariadenia sa začali používať ešte menej efektívne. Namiesto paralelného vykonávania vlákien ich procesor vykonáva pomalšie, ako keby ich vykonával bez Hyper-Threading. Dôvod je celkom jednoduchý. Pokúsili sme sa spustiť dve veľmi podobné vlákna súčasne. Koniec koncov, obe pozostávajú z operácií načítania/ukladania a operácií pridávania. Ak by sme paralelne spúšťali aplikáciu „integer“ a aplikáciu s pohyblivou rádovou čiarkou, boli by sme v oveľa lepšej situácii. Ako môžete vidieť, účinnosť Hyper-Threading značne závisí od typu zaťaženia počítača.

V súčasnosti väčšina používateľov PC používa svoj počítač približne tak, ako je popísané v našom príklade. Procesor vykonáva veľa veľmi podobných operácií. Bohužiaľ, pokiaľ ide o podobné operácie, vznikajú ďalšie ťažkosti s riadením. Sú situácie, keď už nezostali žiadne ovládače požadovaného typu a ako šťastie, inštrukcií je dvakrát toľko ako zvyčajne. Vo väčšine prípadov, ak by procesory domácich počítačov používali technológiu Hyper-Threading, výkon by sa nezvýšil a možno by dokonca klesol o 0-10%.

Na pracovných staniciach má však Hyper-Threading viac príležitostí na zvýšenie produktivity. Ale na druhej strane všetko závisí od konkrétneho využitia počítača. Pracovná stanica môže znamenať buď špičkový počítač na spracovanie 3D grafiky, alebo jednoducho silne zaťažený počítač.

Najväčší nárast výkonu z používania Hyper-Threading je pozorovaný v serverových aplikáciách. Je to hlavne kvôli širokej škále operácií odosielaných do procesora. Databázový server, ktorý používa transakcie, môže bežať o 20 – 30 % rýchlejšie, keď je povolená možnosť Hyper-Threading. O niečo menšie zvýšenie výkonu sa pozoruje na webových serveroch a v iných oblastiach.

Maximálna efektivita vďaka Hyper-Threadingu

Myslíte si, že Intel vyvinul Hyper-Threading len pre svoj rad serverových procesorov? Samozrejme, že nie. Ak by to tak bolo, neplytvali by priestorom na čipe na svojich ostatných procesoroch. V skutočnosti je architektúra NetBurst použitá v Pentiu 4 a Xeone dokonale vhodná pre jadro, ktoré podporuje simultánne multithreading. Opäť si predstavíme procesor. Tentoraz bude mať ešte jeden aktuátor – druhé celočíselné zariadenie. Pozrime sa, čo sa stane, ak vlákna spúšťajú obe zariadenia:

Pri použití druhého celočíselného zariadenia došlo k jedinému konfliktu pri poslednej operácii. Náš teoretický procesor je trochu podobný Pentiu 4. Má až tri celočíselné zariadenia (dve ALU a jedno pomalé celočíselné zariadenie na rotujúce posuny). Ešte dôležitejšie je, že obe celočíselné zariadenia Pentium 4 sú schopné bežať dvojnásobnou rýchlosťou – vykonávajú dve mikrooperácie za cyklus hodín. To zase znamená, že ktorékoľvek z týchto dvoch celočíselných zariadení Pentium 4/Xeon môže vykonávať tieto dve operácie sčítania z rôznych vlákien v jednom hodinovom cykle.

Ale to náš problém nerieši. Nemalo by zmysel jednoducho pridať ďalšie vykonávacie jednotky do procesora, aby sa zvýšil výkon Hyper-Threading. Z hľadiska kremíkového priestoru by to bolo extrémne drahé. Namiesto toho Intel navrhol, aby vývojári optimalizovali programy pre Hyper-Threading.

Pomocou inštrukcie HALT môžete pozastaviť jeden z logických procesorov, čím zvýšite výkon aplikácií, ktoré nevyužívajú Hyper-Threading. Aplikácia teda nepobeží pomalšie, namiesto toho sa zastaví jeden z logických procesorov a systém pobeží na jednom logickom procesore – výkon bude rovnaký ako na jednoprocesorových počítačoch. Keď sa potom aplikácia rozhodne, že bude ťažiť z výkonu Hyper-Threading, druhý logický procesor jednoducho obnoví svoju prácu.

Na stránke Intelu je prezentácia, ktorá presne popisuje, ako programovať, aby ste z Hyper-Threadingu vyťažili maximum.

závery

Aj keď sme boli všetci mimoriadne nadšení, keď sme počuli zvesti o Hyper-Threading v jadrách všetkých moderných Pentií 4/Xeonov, stále to nebude bezplatný výkon pre všetky príležitosti. Dôvody sú jasné a technológia má pred sebou ešte dlhú cestu, kým uvidíme Hyper-Threading bežiaci na všetkých platformách, vrátane domácich počítačov. A s podporou vývojárov môže byť táto technológia určite dobrým spojencom pre Pentium 4, Xeon a procesory budúcej generácie od Intelu.

Vzhľadom na súčasné obmedzenia a dostupnú technológiu balenia sa Hyper-Threading javí ako inteligentnejšia voľba pre spotrebiteľský trh ako napríklad prístup SledgeHammer od AMD – tieto procesory využívajú až dve jadrá. A kým technológie balenia ako Bumpless Build-Up Layer nedospejú, náklady na vývoj viacjadrových procesorov môžu byť príliš vysoké.

Je zaujímavé si všimnúť, ako sa AMD a Intel za posledných pár rokov zmenili. AMD totiž kedysi prakticky kopírovalo procesory Intel. Teraz spoločnosti vyvinuli zásadne odlišné prístupy k budúcim procesorom pre servery a pracovné stanice. AMD skutočne prešlo veľmi dlhú cestu. A ak procesory Sledge Hammer skutočne využívajú dve jadrá, potom bude takéto riešenie výkonovo efektívnejšie ako Hyper-Threading. V tomto prípade totiž okrem zdvojnásobenia počtu všetkých ovládačov odpadajú problémy, ktoré sme popísali vyššie.

Hyper-Threading ešte chvíľu nezasiahne bežný trh s počítačmi, ale s dobrou podporou vývojárov by to mohla byť ďalšia technológia, ktorá sa dostane z úrovne servera na bežné počítače.

Technológia Hyper-Threading (HT, hyperthreading) sa prvýkrát objavila pred 15 rokmi - v roku 2002 v procesoroch Pentium 4 a Xeon a odvtedy sa objavila v procesoroch Intel (v rade Core i, niektorých Atomoch a nedávno aj v Pentiách), potom zmizol (jeho podpora nebola v radoch Core 2 Duo a Quad). A počas tejto doby nadobudol mýtické vlastnosti - hovoria, že jeho prítomnosť takmer zdvojnásobuje výkon procesora a mení slabé i3 na výkonné i5. Iní zároveň hovoria, že HT je bežný marketingový trik a je málo užitočný. Pravda je, ako obvykle, uprostred – miestami to má zmysel, no dvojnásobný nárast určite nečakajte.

Technický popis technológie

Začnime s definíciou uvedenou na webovej stránke Intel:

Technológia Intel® Hyper-Threading (Intel® HT) umožňuje efektívnejšie využitie zdrojov procesora tým, že na každom jadre môže bežať viacero vlákien. Čo sa týka výkonu, táto technológia zvyšuje priepustnosť procesorov, čím zlepšuje celkový výkon viacvláknových aplikácií.

Vo všeobecnosti je jasné, že nič nie je jasné - len všeobecné frázy, ale stručne popisujú technológiu - HT umožňuje jednému fyzickému jadru súčasne spracovávať niekoľko (zvyčajne dve) logických vlákien. Ale ako? Procesor podporujúci hyperthreading:

  • môže ukladať informácie o niekoľkých spustených vláknach naraz;
  • obsahuje jednu sadu registrov (čiže bloky rýchlej pamäte vo vnútri procesora) a jeden radič prerušenia (čiže vstavanú procesorovú jednotku zodpovednú za schopnosť sekvenčne spracovávať požiadavky na výskyt akejkoľvek udalosti, ktorá si vyžaduje okamžitú pozornosť od rôzne zariadenia) pre každý logický CPU.
Pozrime sa na jednoduchý príklad:

Povedzme, že procesor má dve úlohy. Ak má procesor jedno jadro, tak ich vykoná postupne, ak dve, tak paralelne na dvoch jadrách a čas vykonania oboch úloh sa bude rovnať času strávenému na ťažšej úlohe. Ale čo ak je procesor jednojadrový, ale podporuje hyperthreading? Ako môžete vidieť na obrázku vyššie, pri vykonávaní jednej úlohy nie je procesor 100% vyťažený – niektoré bloky procesora jednoducho nie sú v tejto úlohe potrebné, niekde robí modul predikcie vetvy chybu (čo je potrebné na predpovedanie, či v programe sa vykoná podmienená vetva), niekde sa vyskytla chyba prístupu do vyrovnávacej pamäte - vo všeobecnosti je procesor pri vykonávaní úlohy zriedkakedy vyťažený na viac ako 70 %. A technológia HT len „strčí“ druhú úlohu do neobsadených blokov procesora a ukazuje sa, že na jednom jadre sú súčasne spracovávané dve úlohy. K zdvojnásobeniu výkonu však z pochopiteľných dôvodov nedochádza – veľmi často sa ukazuje, že dve úlohy potrebujú rovnakú výpočtovú jednotku v procesore a potom vidíme jednoduchú: kým sa jedna úloha spracováva, vykoná sa druhá. sa v tomto čase jednoducho zastaví (modré štvorce - prvá úloha, zelené - druhá, červená - úlohy pristupujúce k rovnakému bloku v procesore):

Výsledkom je, že čas strávený procesorom s HT na dvoch úlohách je dlhší ako čas potrebný na výpočet najťažšej úlohy, ale kratší ako čas potrebný na sekvenčné vyhodnotenie oboch úloh.

Výhody a nevýhody technológie

Ak vezmeme do úvahy skutočnosť, že procesorová matrica s podporou HT je fyzicky väčšia ako matrica procesora bez HT v priemere o 5% (toľko zaberajú dodatočné registrové bloky a radiče prerušení), a podpora HT umožňuje načítať procesor o 90-95%, potom v porovnaní so 70% bez HT dostaneme, že nárast bude v najlepšom prípade 20-30% - toto číslo je dosť veľké.

Nie všetko je však také dobré: stáva sa, že z HT nie je vôbec žiadny nárast výkonu a dokonca sa stáva, že HT zhoršuje výkon procesora. Stáva sa to z mnohých dôvodov:

  • Nedostatok vyrovnávacej pamäte. Napríklad moderné štvorjadrové i5 majú 6 MB vyrovnávacej pamäte L3 – 1,5 MB na jadro. V štvorjadrových i7 s HT je cache už 8 MB, ale keďže je tam 8 logických jadier, dostaneme len 1 MB na jadro - pri výpočtoch niektoré programy nemusia mať dostatok tohto objemu, čo vedie k poklesu v výkon.
  • Nedostatok optimalizácie softvéru. Najzákladnejším problémom je, že programy považujú logické jadrá za fyzické, a preto pri paralelnom vykonávaní úloh na jednom jadre často dochádza k oneskoreniam kvôli úlohám pristupujúcim k rovnakej výpočtovej jednotke, čo v konečnom dôsledku znižuje výkonový zisk z HT na nič.
  • Závislosť na údajoch. Z predchádzajúceho bodu vyplýva – na splnenie jednej úlohy je potrebný výsledok ďalšej, ktorá však ešte nebola dokončená. A opäť sa dostávame k výpadkom, zníženiu záťaže CPU a malému nárastu od HT.
Programy, ktoré dokážu pracovať s hyperthreadingom

Existuje veľa z nich, pretože pre výpočty HT je to mana z neba - odvod tepla sa prakticky nezvýši, procesor sa nezväčší a pri správnej optimalizácii môžete dosiahnuť zvýšenie až o 30%. Preto bola jeho podpora rýchlo implementovaná v tých programoch, kde je ľahké paralelizovať záťaž - v archivátoroch (WinRar), programoch na 2D/3D modelovanie (3ds Max, Maya), programoch na spracovanie fotografií a videa (Sony Vegas, Photoshop, Corel Draw).

Programy, ktoré nefungujú dobre s hyperthreadingom

Tradične ide o väčšinu hier - zvyčajne je ťažké ich kompetentne paralelizovať, takže štyri fyzické jadrá na vysokých frekvenciách (i5 K-séria) často stačia na hry, ktorých paralelizácia s 8 logickými jadrami v i7 je nemožná úloha. Za zváženie však stojí aj to, že existujú procesy na pozadí a ak procesor nepodporuje HT, tak ich spracovanie padá na fyzické jadrá, čo môže hru spomaliť. Tu je i7 s HT na vrchole - všetky úlohy na pozadí majú tradične nižšiu prioritu, takže keď beží súčasne na jednom fyzickom jadre hry a úlohe na pozadí, hra dostane zvýšenú prioritu a úloha na pozadí nebude „rozptyľovať“. ” jadrá sú zaneprázdnené hrou – preto Na streamovanie alebo nahrávanie hier je lepšie vziať i7 s hyperthreadingom.

Výsledky

Snáď tu ostáva len jedna otázka – má zmysel brať procesory s HT alebo nie? Ak chcete mať otvorených päť programov súčasne a súčasne hrať hry alebo sa zaoberáte spracovaním fotografií, videami alebo modelovaním - áno, samozrejme, stojí za to. A ak ste zvyknutí zavrieť všetky ostatné pred spustením náročného programu a neflákate sa na spracovanie alebo modelovanie, tak je vám procesor s HT nanič.

Vo februári 2002 debutovala vlastná technológia spoločnosti Intel, Hyper-Threading. Čo to je a prečo sa to dnes stalo takmer univerzálnym? Odpoveď na túto otázku a ďalšie sa bude diskutovať v tomto materiáli.

História vzniku HT technológie

Prvým desktopovým procesorom s podporou logického multithreadingu bola štvrtá generácia Pentia. Hyper-Threading je technológia, ktorá v tomto prípade umožnila spracovať dva dátové toky naraz na jednom fyzickom jadre. Tento čip bol navyše nainštalovaný v pätici procesora PGA478, pracoval v 32-bitovom výpočtovom režime a jeho hodinová frekvencia bola 3,06 GHz. Predtým ho bolo možné nájsť iba v serverových procesorových zariadeniach série XEON.

Po dosiahnutí úspešných výsledkov v tejto oblasti sa Intel rozhodol rozšíriť HT do segmentu desktopov. Následne bola v rámci PGA478 vydaná celá rodina takýchto procesorov. Po debute zásuvky LGA775 sa na NT dočasne zabudlo. Ale so začiatkom predaja LGA1156 dostal v roku 2009 druhý dych. Odvtedy sa stal povinným atribútom procesorových riešení od Intelu, a to ako v segmente ultravýkonných, tak aj v lacných počítačových systémoch.

Koncept tejto technológie

Podstatou technológie Intel Hyper-Threading je, že prostredníctvom minimálnych zmien v rozložení mikroprocesorového zariadenia vývojári zabezpečujú, že na systémovej a softvérovej úrovni sa kód spracováva v dvoch vláknach na jednom fyzickom jadre. Všetky prvky výpočtového modulu zostávajú nezmenené, pribúdajú len špeciálne registre a prepracovaný radič prerušení.

Ak z nejakého dôvodu fyzický výpočtový modul začne nečinne stáť, spustí sa na ňom druhé vlákno programu, zatiaľ čo prvé čaká na prijatie potrebných údajov alebo informácií. To znamená, že ak boli predtým výpadky v prevádzke výpočtovej časti čipov pomerne časté, Hyper-Threading túto možnosť takmer úplne eliminuje. Pozrime sa, čo je táto technológia nižšie.

Na úrovni hardvéru

Pri používaní Hyper-Threadingu sú kladené zvýšené požiadavky na hardvér. Musí to podporovať základná doska, BIOS a procesor. Minimálne v rámci pätice procesora PGA478 bolo treba na takúto kompatibilitu dávať obzvlášť pozor. Nie všetky sady systémovej logiky boli v tomto prípade orientované na použitie NT, rovnako ako procesorové zariadenia. A aj keď sa takáto vytúžená skratka nachádzala v nomenklatúre základnej dosky, vôbec to neznamenalo, že čipy boli správne inicializované z dôvodu, že bolo potrebné aktualizovať BIOS.

Situácia sa v tomto prípade od LGA1156 dramaticky zmenila. Táto výpočtová platforma bola pôvodne navrhnutá pre použitie Hyper-Threading. Používatelia sa preto v tomto prípade nestretli s výraznými problémami s používaním toho druhého. To isté platí pre nasledujúce pätice procesorov, ako sú LGA1155, LGA1151 a LGA1150.

Podobným nedostatkom problémov s použitím HT sa mohli pochváliť aj vysokovýkonné sockety LGA1366, LGA2011 a LGA2011-v3. Aby toho nebolo málo, priamy konkurent Intelu, AMD, implementoval do najnovšej generácie svojich procesorov pre AM4 veľmi podobnú logickú technológiu multitaskingu – SMT. Používa takmer identický koncept. Rozdiel je len v názve.

Hlavné komponenty zo strany softvéru

Treba poznamenať, že aj keď je NT plne podporované hardvérovými prostriedkami, nebude vždy úspešne fungovať na softvérovej úrovni. Na začiatok musí byť operačný systém schopný pracovať súčasne s niekoľkými výpočtovými jadrami. Dnešné zastarané verzie systémového softvéru MS-DOS alebo Windows 98 túto funkciu nemajú. V prípade systému Windows 10 však nevznikajú žiadne problémy a tento operačný systém je už pôvodne navrhnutý pre takéto hardvérové ​​​​zdroje osobného počítača.

Teraz poďme zistiť, ako povoliť Hyper-Threading v systéme Windows Ak to chcete urobiť, v počítači musí byť nainštalovaný všetok potrebný ovládací aplikačný softvér. Spravidla ide o špeciálny nástroj z CD základnej dosky. Má špeciálnu kartu, kde môžete meniť hodnoty v systéme BIOS v reálnom čase. To zase vedie k tomu, že možnosť Hyper-Threading v ňom prejde do polohy Enabled a aktivujú sa ďalšie logické vlákna, a to aj bez reštartu operačného systému.

Povolenie technológie

Mnoho začínajúcich používateľov si v počiatočnej fáze používania nového počítača často kladie jednu dôležitú otázku týkajúcu sa Hyper-Threadingu: ako ho povoliť? Existujú dva možné spôsoby riešenia tohto problému. Jedným z nich je používanie systému BIOS. V tomto prípade musíte urobiť nasledovné:

  • Po zapnutí počítača inicializujeme postup vstupu do systému BIOS. Ak to chcete urobiť, podržte stlačené tlačidlo DEL, keď sa objaví obrazovka testu (v niektorých prípadoch musíte podržať kláves F2).
  • Po zobrazení modrej obrazovky prejdite pomocou navigačných tlačidiel na kartu ROZŠÍRENÉ.
  • Potom na ňom nájdeme položku Hyper-Threading.
  • Naproti tomu musíte nastaviť hodnotu na Enabled.

Hlavnou nevýhodou tejto metódy je potreba reštartovať osobný počítač na vykonanie tejto operácie. Skutočnou alternatívou je použitie konfiguračného nástroja základnej dosky. Táto metóda bola podrobne opísaná v predchádzajúcej časti. A v tomto prípade nie je vôbec potrebné vstupovať do systému BIOS.

Zakázanie NT

Analogicky k metódam zapínania NT existujú dva spôsoby, ako túto funkciu deaktivovať. Jeden z nich je možné vykonať iba počas inicializácie počítačového systému. To zase nie je v praxi úplne pohodlné. Preto sa odborníci rozhodujú pre druhý spôsob, ktorý je založený na použití počítačovej utility na základnej doske. V prvom prípade sa vykonajú nasledujúce manipulácie:

  1. Pri načítavaní elektronického počítača prejdeme do základného vstupno-výstupného systému (jeho druhé meno je BIOS) podľa vyššie opísanej metódy.
  2. Pomocou kurzorových kláves sa presunieme na položku ponuky Rozšírené.
  3. Ďalej musíte nájsť položku ponuky Hyper-Threading (v niektorých modeloch základných dosiek môže byť označená ako HT). Oproti nej pomocou tlačidiel PG DN a PG UP nastavte hodnotu na Disabled.
  4. Zbúrané zmeny uložíme pomocou F10.
  5. Ukončite BIOS a reštartujte osobný počítač.

V druhom prípade pri použití diagnostickej pomôcky základnej dosky nie je potrebné reštartovať počítač. Toto je jeho kľúčová výhoda. Algoritmus je v tomto prípade rovnaký. Rozdiel je v tom, že využíva predinštalovanú špeciálnu utilitu od výrobcu základnej dosky.

Predtým boli opísané dva hlavné spôsoby, ako vypnúť Hyper-Threading. Hoci druhý z nich je nominálne považovaný za zložitejší, je praktickejší z toho dôvodu, že nevyžaduje reštart počítača.

Modely procesorov podporujúce NT

Spočiatku, ako už bolo uvedené, bola podpora Hyper-Threading implementovaná iba v zariadeniach s procesormi Pentium 4 a iba vo verzii PGA478. Ale v rámci LGA1156 a neskorších výpočtových platforiem bola technológia diskutovaná v tomto materiáli použitá takmer vo všetkých možných modeloch čipov. S jeho pomocou sa procesory Celeron zmenili z jednojadrového na dvojvláknové riešenie. Penrium a i3 už s jeho pomocou dokázali spracovať 4 toky kódu. Vlajkové riešenia série i7 sú schopné súčasne pracovať s 8 logickými procesormi.

Pre prehľadnosť uvádzame použitie NT v rámci súčasnej výpočtovej platformy od Intelu - LGA1151:

  • CPU série Celeron túto technológiu nepodporujú a majú len 2 výpočtové jednotky.
  • Čipy Pentium line sú vybavené 2 jadrami a štyrmi závitmi. Výsledkom je, že NT je v tomto prípade plne podporovaný.
  • Výkonnejšie procesorové zariadenia modelového radu Core i3 majú podobné rozloženie: 2 fyzické moduly môžu pracovať v 4 vláknach.
  • Rovnako ako väčšina lacných čipov Celeron, Core i5 nie je vybavený podporou HT.
  • Vlajkové riešenia i7 tiež podporujú HT. Iba v tomto prípade sú namiesto 2 skutočných jadier už 4 jednotky na spracovanie kódu. Tie zase môžu pracovať v 8 vláknach.

Hyper-Threading - čo je táto technológia a aký je jej hlavný účel? Ide o logický multitasking, ktorý umožňuje prostredníctvom minimálnych hardvérových úprav zvýšiť výkon počítačového systému ako celku.

V akých prípadoch sa táto technológia najlepšie používa?

V niektorých prípadoch, ako bolo uvedené vyššie, NT zvyšuje rýchlosť, s akou procesor spracováva programový kód. Hyper-Threading môže efektívne fungovať iba s horúcim softvérom. Typickými príkladmi sú kódovače videa a zvuku, profesionálne grafické balíky a archivátory. Prítomnosť takejto technológie môže tiež výrazne zlepšiť výkon serverového systému. Ale s jednovláknovou implementáciou programového kódu je prítomnosť Hyper-Threading vyrovnaná, to znamená, že získate bežný procesor, ktorý rieši jednu úlohu na jednom jadre.

Výhody a nevýhody

Technológia Intel Hyper-Threading má určité nevýhody. Prvým z nich sú zvýšené náklady na CPU. Ale vyššia rýchlosť a vylepšené rozloženie kremíkového čipu v každom prípade zvýši cenu CPU. Tiež zväčšená plocha polovodičovej základne procesorového zariadenia vedie k zvýšeniu spotreby energie a teploty. Rozdiel v tomto prípade je zanedbateľný a nepresahuje 5%, ale stále existuje. V tomto prípade neexistujú žiadne ďalšie významné nedostatky.

Teraz o výhodách. Patentovaná technológia NT od Intelu neovplyvňuje výkon a výkon, to znamená, že takýto počítač nebude môcť klesnúť pod určitú hranicu. Ak softvér dokonale podporuje paralelné výpočty, dôjde k určitému zvýšeniu rýchlosti a samozrejme produktivity.

Testy ukazujú, že v niektorých prípadoch môže nárast dosiahnuť 20 %. Najviac optimalizovaným softvérom sú v tomto prípade rôzne transkodéry multimediálneho obsahu, archivátory a grafické balíčky. Ale s hrami nie je všetko také dobré. Na druhej strane sú schopné pracovať v 4 vláknach a v dôsledku toho čipy vlajkových lodí v tomto prípade nedokážu prekonať riešenia procesorov strednej úrovne.

Moderná alternatíva od AMD

Technológia Hyper-Threading dnes nie je jediná svojho druhu. Má skutočnú alternatívu. S vydaním platformy AM4 mu AMD ponúklo dôstojného konkurenta v podobe SMT. Na hardvérovej úrovni ide o totožné riešenia. Len vlajková loď od Intelu dokáže spracovať 8 vlákien a popredný čip AMD 16. Už len táto okolnosť naznačuje, že druhé riešenie je sľubnejšie.

Intel je preto nútený urýchlene upraviť svoje plány vydávania produktov a ponúknuť úplne nové procesorové riešenia, ktoré môžu konkurovať nováčikom od AMD. Len dnes ich ešte neprerobili. Preto, ak potrebujete cenovo dostupnú počítačovú platformu, je lepšie zvoliť LGA1151 od spoločnosti Intel. Ak potrebujete zvýšiť výkon, potom by bola vhodnejšia AM4 od AMD.

Pokračovanie v téme:
Zmiešaný

Pomerne často v poslednej dobe veľa ľudí namiesto výroby napríklad osciloskopu z počítača radšej jednoducho kúpi digitálny USB osciloskop. Po prechádzke však...