Simultánny multithreading

**Simultánny multithreading**, často skracovaný ako **SMT**, je technika na zlepšenie celkovej výkonnosti superskalárnych CPU s Hardvérovým multithreadingom. SMT pripúšťa viacnásobné nezávislé spúšťanie vlákien na lepšie zužitkovanie prostriedkov poskytnutých modernou procesorovou architektúrou.

## Detaily
Multithreading je v koncepte podobný preemptívnemu multitaskingu, ale je implementovaný na vláknovej úrovni vykonávania v moderných superskalárnych procesoroch.

Simultánny multithreading (SMT) je jeden z dvoch hlavných implementácii multithreadingu, druhou formou je tzv. dočasný multithreading. V dočasnom multithreadingu, môže byť naraz vykonávané iba jedno vlákno inštrukcii v ľubovoľnej stanovenej pipeline fáze. V simultánnom multithreadingu, môžu byť vykonávané naraz inštrukcie z viac ako jedného vlákna v ľubovoľnej stanovenej pipeline fáze. Toto je uskutočňované bez nejakých väčších zmien na základnej architektúre procesora: hlavné doplnky, ktoré sú vyžadované sú schopnosť vyvolať inštrukcie z viacnásobných vlákien v cykle a väčší súbor registru, ktorý by udržiaval dáta z viacnásobných vlákien. Počet súčasne bežiacich vlákien môže byť rozhodnutý konštruktérmi čipov, ale praktické obmedzenia dané zložitostou čipov, obmedzili ich počet vo väčšine SMT implementácii na dva.

Keďže táto metóda je skutočne účinné riešenie a je tu nevyhnutne zvýšený konflikt na zdieľané prostriedky, merania efektívnosti riešenia môžu byť značne zložité. Niektorí výskumníci ukázali, že extra vlákna môžu byť použité na aktívne rozdeľovanie zdieľaných prostriedkov ako napr. cache, na zlepšenie výkonu ďalšieho nazávislého vlákna a práve toto ukazuje, že SMT nie je len efektívne riešenie. Ďalší používajú SMT na poskytovanie prebytočného výpočtu, pre niektoré úrovne detekcie chýb a ich odstránenie.

Napriek tomu, vo väčšine súčasných prípadov je SMT používané kvôli oneskoreniu ukrytej pamäte, efektívnosti a zvýšenej priepustnosti výpočtov vzhľadom na množstvo hardvéru.

## Systematika
V dizajne procesorov existujú dva spôsoby, ako zvýšiť paralelizmus čipov s menšími požiadavkami na prostriedky: jednou je superskalárna metóda, ktorá sa pokúša zvýšiť Instruction Level Parallelism (ILP), ďalšou je multithreadingový prístup využívajúci Thread Level Parallelism (TLP). 

Superskalárny znamená, vykonávajúci viacero inštrukcií súčasne, zatiaľ čo chip-level multithreading (CMT) vykonáva súčasne inštrukcie z viacnásobných vlákien v rámci jedného čipu procesora. Existuje mnoho spôsobov, ako vo vnútri čipu podporovať viac ako jedno vlákno, menovite:
* Prekladaný multithreading: Tento multithreading vydáva viacnásobné inštrukcie z rozličných vlákien, taktiež ako uvádzaný Dočasný multithreading. Ďalej môže byť delený na jemnozrnný multithreading, alebo hrubozrnný multithreading záležajúc na frekvencii prekladaných výdajov. **Jemnozrnný** multithreading po každom cykle vydá inštrukcie pre rozličné vlákna, zatiaľ čo **hrubozrnný** multithreading sa iba prepína, aby vydával inštrukcie z iného vlákna, keď súčasne vykonávajúce vlákno spôsobuje niektoré udalosti s dlhou čakacou dobou (ako chyba stránky atď.). Hrubozrnný multithreading je viac bežný pre menej súvislé prepnutia medzi vláknami. Napríklad, Intelovský Montecito procesor používa hrubozrnný multithreading, zatiaľ čo Sunovský UltraSPARC T1 používa jemnozrnný multithreading. Pre tieto procesory, ktoré majú na jedno jadro iba jednu pipeline, je prekladaný multithreading jediný možný spôsob, keďže môže odovzdať iba jedinú inštrukciu na jeden cyklus.
* Simultánny multithreading (SMT): Zaoberá sa viacnásobnými inštrukciami z viacnásobných vlákien v jednom cykle. Procesor nato, aby to dokázal musí byť superskalárny.
* Multiprocesing na úrovni čipu (CMP alebo tzv. multicore): integruje dva, alebo viac superskalárnych procesorov do jedného čipu, každý vykonáva vlákna nezávisle
* Ľubovoľná kombinácia prekladaného multithreadingu/SMT/CMP

Kľúčový faktor na ich rozoznanie je pozrieť sa, aké množstvo inštrukcií môže procesor vydať v jednom cykle a aký počet vlákien, z ktorých tieto inštrukcie pochádzajú. Napríklad, UltraSPARC T1 od Sun Microsystems (tiež známy ako "Niagara" do svojho vydania 14. Novembra 2005) je viacjadrový procesor kombinovaný s jemnozrnnou multithreading technikou, namiesto simultánneho multithreadingu, keďže každé jadro môže naraz vydať iba jednu inštrukciu.

## Historické implementácie
Zatiaľ čo multithreadingové CPU boli používané približne od roku 1950, Simultánny Multithreading bol vynájdený firmou IBM v roku 1968. Prvý významný komerčný CPU vyvinutý so SMT bol DEC 21464 (EV8). Tento čip bol vyvinutý firmou DEC v spoluprácii s Dean Tullsenom z University of California, San Diego, Susan Eggers a Hank Levy z University of Washington. Procesor nebol nikdy vydaný, pretože Alpha línia procesorov bola prerušená tesne predtým ako HP získal vlastníctvo nad Compaq (predtým DEC). Dean Tullsenova práca bola neskôr použitá na vytvorenie procesoru Intel Pentium 4.

## Moderné komerčné implementácie
Intel Pentium 4 bol prvý moderný procesor pre stolové počítače, ktorý mal v sebe implementovaný simultánny multithreading, model štartujúci na 3.06GHz, ktorý bol vydaný v roku 2002 a bol uvedený k množstvu ich doterajších procesorov. Intel nazval túto funkcionalitu Hyper Threading Technology (HTT), táto poskytuje základný dvojvláknový SMT prostriedok. Intel hovorí o 30% zvýšení rýchlosti v porovnaní s inak identickým, ne-SMT Pentium 4. Zlepšenie výkonu je veľmi závislé na aplikáciách a niektoré programy ho v skutočnosti nepatrne spomaľujú, keď HTT je zapnuté kvôli zvýšenému súpereniu o prostriedky ako šírka pásma, cache, TLB, preorganizovanie bufferovych vstupov, atď.

Posledné dizajny MIPS architektúr zahŕňajú SMT systém, známy aj ako *"MIPS MT"*. MIPS MT poskytuje pre oba, náročné elementy virtuálneho spracovania a menej náročné hardvérové mikrovlákna. RMI, Cupertino-založené štartovanie, je prvý MIPS predajca, ktorý poskytuje procesor SOC založený na on 8 jadrách, kde na každom z nich bežia 4 vlákna. Vlákna môžu bežať v jednozrnnom móde, kde v každom cykle môžu byť vykonávané rozličné vlákna. Vláknam môžu byť taktiež pridelené priority.

IBM POWER5, ktorý vyšiel v Máji 2004, prišiel buď ako dvojjadrový DCM, štvorjadrový alebo dokonca 8-jadrový MCM, kde každé jadro je tvorené dvojvláknovým SMT prostriedkom. Implementácia IBM je viac sofistikovaná ako predchádzajúca, pretože dokáže priradiť rôznu prioritu rozličným vláknam, je viac jemnozrnná a SMT prostriedok môže byť zapnutý a vypnutý dynamicky, na lepšie vykonávanie práce, pri ktorej SMT procesor nemôže zvýšiť výkonnosť. Toto je druhá implementácia všeobecne dostupného hardvérového multithreadingu od firmy IBM.

Aj keď mnoho ľudí tvrdilo, že UltraSPARC T1 od Sun Microsystems (známy aj ako *"Niagara"* do svojho vydania 14. Novembra 2005) a pripravovaný procesor pod kódovým menom *"[[Rock procesor|Rock]]"* (ktorý bol pánovaný na vydanie v roku 2009 ) sú implementácie SPARCu, zamerané na takmer úplné využitie SMT a CMP techník, Niagara v skutočnosti nevyužívala SMT. Sun nazýva tieto kombinované prístupy ako "CMT" a celkový koncept ako "Throughput Computing". Niagara má 8 jadier na jeden čip, ale každé z jadier má iba jeden pipeline, takže v skutočnosti používa jemnozrnný multithreading. Na rozdiel od SMT, kde inštrukcie z viacnásobných vlákien zdieľajú výdajové okno každý cyklus, procesor používa stratégiu round robin, aby každý cyklus vydal inštrukcie z nasledujúceho aktívneho vlákna. Toto ho robí viac podobným ku Barrel procesoru. Rock procesor od Sun Microsystems je odlišný, má viac komplexných jadier, ktoré používajú viac ako jeden pipeline.

## Tiež pozri
* Vlákno, čo je ním vykonávané
* Symetrický multiprocesing používa viacero procesorov

## Referencie
* LE Shar a ES Davidson, "A Multiminiprocessor System Implemented through Pipelining", Computer Feb 1974
* D.M. Tullsen, S.J. Eggers a H.M. Levy, "Simultaneous Multithreading: Maximizing On-Chip Parallelism," 22. Annual International Symposium on Computer Architecture, June, 1995
* D.M. Tullsen, S.J. Eggers, J.S. Emer, H.M. Levy, J.L. Lo a R.L. Stamm, "Exploiting Choice: Instruction Fetch and Issue on an Implementable Simultaneous Multithreading Processor," 23. Annual International Symposium on Computer Architecture, May, 1996

## Externé odkazy
* Články o SMT novinkách a akademické práce
* SMT výskum na University of Washington
* Časový prehľad multithreadingových technológií

Kategória:Technológie operačných systémov
Kategória:CPU