Dočasný multithreading

Temporal multithreading je jednou ze dvou hlavních forem multithreadingu  , které lze implementovat do hardwaru v procesorech. Druhou formou je simultánní multithreading . Rozdíl mezi těmito dvěma formami je maximální počet vláken, která se vykonají v každé fázi výpočetního potrubí v daném taktu procesoru. Při dočasném multithreadingu se v daný okamžik spouští pouze jedno vlákno a při současném multithreadingu jich je několik. Někteří odborníci používají termín super-threading jako synonymum pro přechodný multithreading. [jeden]

Na konvenčním procesoru je řízení vláken řešeno operačním systémem . Vlákno se spouští, dokud nedojde k hardwarovému přerušení , systémovému volání nebo dokud nevyprší čas, který mu operační systém vymezil. Poté se procesor přepne do kódu operačního systému, který uloží stav vlákna (jeho kontext) a přepne se do stavu dalšího vlákna ve frontě, kterému je také poskytnut čas na provedení. Při takovém multithreadingu je na kód operačního systému, který přepíná kontexty, vynaložen dostatečně velký počet cyklů procesoru. Pokud je podpora vláken implementována v hardwaru, pak samotný procesor bude schopen přepínat mezi vlákny a v ideálním případě provádět několik vláken současně pro každý takt.

Možnosti

Dočasné vícevláknové zpracování je rozděleno do dvou hlavních dílčích forem:

Hrubé vícevláknové zpracování ( CGMT) , Blokované vícevláknové zpracování )

Pouze jedno vlákno běží v procesu procesoru po dlouhou dobu. V momentě, kdy toto vlákno potřebuje data např. z paměti a data nejsou v cache, procesor uloží stav vlákna a automaticky se přepne na jiné vlákno, dokud i to nebude potřebovat něco z paměti. Dalším důvodem pro přechod na jiné vlákno může být daný limit počtu cyklů procesoru. Procesorový kanál tedy není nečinný a je téměř vždy zaneprázdněn prováděním kódu konkrétního vlákna.

Jemnozrnné ( FGMT ) , prokládané vícevláknové zpracování )

Procesor přepíná mezi vlákny programu při každém taktu. Jemné vícevláknové zpracování zaručuje provedení všech vláken přiřazených procesoru. Provádění každého konkrétního vlákna se zpomalí, ale celková propustnost procesoru se zvýší. Vícevláknové procesory, které implementují jemnozrnné vícevláknové zpracování, jsou dobré při spouštění programů, kde je mnoho vláken, jako jsou databázové servery, webové servery, aplikační servery, které zpracovávají mnoho stejných požadavků od mnoha klientů. Takové procesory se také nazývají soudkové procesory (provádění vláken v procesoru se střídá v každém cyklu jako válcovité nýty v kruhu).

Implementace

Hrubozrnné multithreadingové procesory: V roce 1998 IBM vydala RS64-II ( Northstar ), první mikroprocesor na trhu podporující multithreading v hardwaru . Procesor podporoval alternativní provádění 2 vláken. Nedávné: dvoujádrové Montecito (2006) od Intelu s jádry na bázi Itanium 2 , kde každé jádro vykonává dvě hrubozrnná vlákna; Fujitsu SPARC64 VI (2007).

Příklady procesorů, které implementovaly jemnozrnné vícevláknové zpracování, zahrnují Denelcor HEP (1982) - 8 vláken. Procesor Cray /Tera MTA (1988) mohl postupně provozovat 128 vláken. Poslední: Sun UltraSPARC T1 (2005, 4 vlákna na jádro) a T2 (2008), Oracle SPARC T3 (2010, 8 vláken), SPARC M7 (2015, 8 vláken).

Porovnání se souběžným multithreadingem

Dočasné multithreading má oproti simultánnímu multithreadingu výhodu v tom, že méně zahřívá procesor; nevýhodou však je, že kód pouze jednoho vlákna je vykonáván v jakémkoli daném cyklu procesoru.

Na skalárním procesoru je jemnozrnné multithreading nerozeznatelné od simultánního. Pro implementaci simultánního multithreadingu potřebuje procesor superskalární pipeline a čím více vláken je plánováno k současnému spuštění, tím vyšší musí být pipeline superskalární , což zvyšuje složitost logiky procesoru.

Poznámky

  1. Superthreading s vícevláknovým procesorem . Získáno 5. září 2016. Archivováno z originálu 14. října 2008.

Literatura

Odkazy