Simultánní multithreading - Simultaneous multithreading

Simultánní multithreading ( SMT ) je technika pro zlepšení celkové efektivity superskalárních CPU s hardwarovým multithreadingem . SMT umožňuje více nezávislých podprocesů provádění, aby bylo možné lépe využívat prostředky poskytované moderními architekturami procesorů .

Podrobnosti

Název multithreading je nejednoznačný, protože na jednom jádru CPU lze provádět nejen více vláken současně, ale také více úkolů (s různými tabulkami stránek , různými segmenty stavu úkolů , různými ochrannými kroužky , různými oprávněními I/O atd.). Přestože běží na stejném jádru, jsou od sebe zcela odděleni. Multithreading je svým konceptem podobný preemptivnímu multitaskingu, ale je implementován na úrovni zpracování v moderních superskalárních procesorech.

Simultánní multithreading (SMT) je jednou ze dvou hlavních implementací multithreadingu, druhou formou je dočasné multithreading (také známé jako super-threading). V dočasném vícevláknovém zpracování může v daném stádiu kanálu provést najednou pouze jedno vlákno instrukcí. Při simultánním multithreadingu lze provádět instrukce z více než jednoho vlákna v libovolném daném stupni potrubí současně. To se děje bez velkých změn v základní architektuře procesoru: hlavní potřebné doplňky jsou schopnost načítat instrukce z více vláken v cyklu a větší soubor registru pro uložení dat z více vláken. O počtu souběžných vláken rozhodují návrháři čipů. Dvě souběžná vlákna na jádro CPU jsou běžná, ale některé procesory podporují až osm souběžných vláken na jádro.

Protože nevyhnutelně zvyšuje konflikt o sdílené zdroje, může být měření nebo odsouhlasení jeho účinnosti obtížné. Naměřená energetická účinnost SMT s paralelní nativní a spravovanou zátěží na historických implementacích 130 nm až 32 nm Intel SMT ( hypervláknová ) však zjistila, že v 45 nm a 32 nm implementacích je SMT extrémně energeticky efektivní, a to dokonce i s řadovými procesory Atom. V moderních systémech SMT efektivně využívá souběžnost s velmi malým přídavným dynamickým výkonem. To znamená, že i když jsou přírůstky výkonu minimální, úspory spotřeby energie mohou být značné.

Někteří výzkumníci ukázali, že další vlákna lze proaktivně použít k nasazení sdíleného zdroje, jako je mezipaměť, ke zlepšení výkonu jiného jediného vlákna, a tvrdí, že toto ukazuje, že SMT nezvyšuje pouze účinnost. Jiní používají SMT k poskytování nadbytečných výpočtů pro určitou úroveň detekce a obnovy chyb.

Ve většině aktuálních případů je však SMT o skrývání latence paměti , zvyšování efektivity a zvyšování propustnosti výpočtů podle množství použitého hardwaru.

Taxonomie

V návrhu procesoru existují dva způsoby, jak zvýšit paralelnost na čipu s menšími požadavky na zdroje: jedním je superskalární technika, která se pokouší využít paralelismus na úrovni instrukcí (ILP); druhý je vícevláknový přístup využívající paralelismus na úrovni vláken (TLP).

Superscalar znamená provádění více instrukcí současně, zatímco paralelismus na úrovni vláken (TLP) provádí instrukce z více vláken v rámci jednoho procesorového čipu současně. Existuje mnoho způsobů, jak podporovat více než jedno vlákno v rámci čipu, a to:

  • Prokládané vícevláknové zpracování: Prokládané vydání více instrukcí z různých vláken, označovaných také jako dočasné vícevláknové . V závislosti na frekvenci prokládaných problémů ji lze dále rozdělit na jemnozrnné vícevláknové nebo hrubozrnné vícevláknové. Jemnozrnné vícevláknové zpracování-například v sudovém procesoru- vydává pokyny pro různá vlákna po každém cyklu, zatímco hrubozrnné vícevláknové přepíná pouze na vydávání pokynů z jiného vlákna, když aktuální prováděcí vlákno způsobí nějaké dlouhé události latence (např. Chyba stránky atd.) ). Hrubé vlákno s více vlákny je běžnější pro méně kontextové přepínání mezi vlákny. Například procesor Montecito společnosti Intel používá hrubozrnné vícevláknové zpracování, zatímco Sun UltraSPARC T1 používá jemnozrnné vícevláknové zpracování. Pro ty procesory, které mají pouze jeden kanál na jádro, je prokládané vícevláknové zpracování jediným možným způsobem, protože může vydat nejvýše jednu instrukci za cyklus.
  • Simultánní multithreading (SMT): Vydávejte více instrukcí z více vláken v jednom cyklu. K tomu musí být procesor superskalární.
  • Víceúrovňové zpracování na úrovni čipu (CMP nebo vícejádro ): integruje dva nebo více procesorů do jednoho čipu, přičemž každý spouští vlákna samostatně.
  • Jakákoli kombinace vícevláknových/SMT/CMP.

Klíčovým faktorem, který je odlišuje, je podívat se na to, kolik instrukcí může procesor vydat v jednom cyklu a kolik vláken, ze kterých instrukce pocházejí. Například UltraSPARC T1 společnosti Sun Microsystems je vícejádrový procesor kombinovaný s jemnozrnnou vícevláknovou technikou místo současného vícevláknového zpracování, protože každé jádro může vydávat pouze jednu instrukci najednou.

Historické implementace

Zatímco vícevláknové CPU jsou k dispozici od padesátých let minulého století, simultánní vícevláknová vlákna byla poprvé zkoumána společností IBM v roce 1968 jako součást projektu ACS-360 . První hlavní komerční mikroprocesor vyvinutý s SMT byl Alpha 21464 (EV8). Tento mikroprocesor vyvinula společnost DEC ve spolupráci s Deanem Tullsenem z Kalifornské univerzity v San Diegu a Susan Eggersovou a Henrym Levym z Washingtonské univerzity. Mikroprocesor nebyl nikdy uvolněn, protože řada mikroprocesorů Alpha byla přerušena krátce před tím, než HP získala Compaq, který zase získal DEC . Dean Tullsen práce byla také použita k rozvoji hyper-threaded verze Intel Pentium 4 mikroprocesory, jako je například „Northwood“ a „Prescott“.

Moderní komerční implementace

Intel Pentium 4 byl první moderní desktop procesor provádět simultánní multithreading, počínaje modelem 3,06 GHz propuštěn v roce 2002 a od té doby zavedena do počtu svých procesorů. Intel tuto funkci nazývá Hyper-Threading Technology a poskytuje základní dvouvláknový modul SMT. Intel tvrdí až o 30% vyšší rychlost ve srovnání s jinak identickým Pentiem 4. bez SMT. Viděné zlepšení výkonu je velmi závislé na aplikaci; při spuštění dvou programů, které vyžadují plnou pozornost procesoru, to ve skutečnosti může vypadat tak, že jeden nebo oba programy se při zapnutí Hyper-Threading mírně zpomalí. To je způsobeno systémem přehrávání Pentium 4, který spojuje cenné prostředky pro provádění, zvyšuje spor o prostředky, jako je šířka pásma, mezipaměti, TLB , změny pořadí položek vyrovnávací paměti , vyrovnává prostředky procesoru mezi dvěma programy, což přidává různé množství provedení čas. Jádro Pentium 4 Prescott získalo frontu na přehrání, což snižuje dobu potřebnou k provedení systému přehrávání. To stačí k úplnému překonání tohoto výkonnostního zásahu.

Nejnovější návrhy architektury MIPS Imagination Technologies zahrnují systém SMT známý jako „MIPS MT“ . MIPS MT poskytuje jak těžké virtuální prvky pro zpracování, tak lehčí hardwarové mikroprocesy. RMI , spuštění z Cupertina, je prvním dodavatelem MIPS, který poskytuje procesorový SOC na základě osmi jader, z nichž každé provozuje čtyři vlákna. Vlákna lze spustit v režimu s jemným zrnem, kde lze v každém cyklu provést jiné vlákno. Vláknům lze také přiřadit priority. Imagination Technologies Procesory MIPS mají dvě vlákna SMT na jádro.

IBM Blue Gene /Q má 4cestný SMT.

IBM POWER5 , oznámil v květnu 2004, je buď jako dvoujádrový duální čipovým modulem (DCM) nebo čtyřjádrových nebo okt-core multi-čipového modulu (MCM), přičemž každé jádro, včetně SMT motoru dvou nití. Implementace IBM je propracovanější než předchozí, protože může různým vláknům přiřadit jinou prioritu, je jemnější a motor SMT lze dynamicky zapínat a vypínat, aby bylo možné lépe provádět úlohy, kde by procesor SMT nezvyšuje výkon. Toto je druhá implementace obecně dostupného hardwarového multithreadingu od IBM. V roce 2010 vydala společnost IBM systémy založené na procesoru POWER7 s osmi jádry, z nichž každé mělo čtyři simultánní inteligentní vlákna. Tím se přepne režim vláken mezi jedním vláknem, dvěma vlákny nebo čtyřmi vlákny v závislosti na počtu vláken procesu, které jsou v daném okamžiku naplánovány. To optimalizuje využití jádra pro minimální dobu odezvy nebo maximální propustnost. IBM POWER8 má 8 inteligentních simultánních vláken na jádro (SMT8).

IBM Z počínaje procesorem z13 v roce 2013 má dvě vlákna na jádro (SMT-2).

Ačkoli mnoho lidí uvedlo, že UltraSPARC T1 společnosti Sun Microsystems ( až do vydání ze dne 14. listopadu 2005 známá jako „Niagara“ ) a dnes již zaniklý procesor s kódovým označením Rock (původně oznámeno v roce 2005, ale po mnoha zpožděních zrušených v roce 2010) jsou implementacemi SPARC zaměřený téměř výhradně na využití technik SMT a CMP, Niagara ve skutečnosti SMT nepoužívá. Sun tyto kombinované přístupy označuje jako „CMT“ a celkový koncept jako „propustné počítače“. Niagara má osm jader, ale každé jádro má pouze jedno potrubí, takže ve skutečnosti používá jemnozrnné vícevláknové zpracování. Na rozdíl od SMT, kde instrukce z více vláken sdílejí problémové okno v každém cyklu, procesor používá zásadu round robin k vydávání pokynů z dalšího aktivního vlákna v každém cyklu. Díky tomu je více podobný sudovému procesoru . Rockový procesor Sun Microsystems je jiný, má složitější jádra, která mají více než jedno potrubí.

Oracle Corporation SPARC T3 má osm závity jemnozrnný na jádro, SPARC T4, T5 SPARC, SPARC M5, M6 a M7 osm závity jemnozrnná na jádra, z nichž dva mohou být provedeny současně.

Fujitsu SPARC64 VI má hrubozrnný vertikální multithreading (VMT) SPARC VII a novější mají 2cestný SMT.

Intel Itanium Montecito používalo hrubozrnné multithreading a Tukwila a novější používají 2-way SMT (s dual-domain multithreading).

Intel Xeon Phi má 4cestný SMT (s časově multiplexovaným multithreadingem) s hardwarovými vlákny, které nelze zakázat na rozdíl od běžného Hyperthreadingu. Intel Atom , které vyšlo v roce 2008, je první Intel produkt zahrnuje 2-way SMT (prodávaný jako Hyper-Threading) bez podložky návod přeskupení, spekulativní provádění, nebo se zaregistrujte přejmenování. Intel znovu zavedl Hyper-Threading s mikroarchitekturou Nehalem , po jeho nepřítomnosti na mikroarchitektuře Core .

Mikroarchitektura AMD Bulldozer FlexFPU a sdílená mezipaměť L2 jsou vícevláknová, ale celočíselná jádra v modulu jsou jednovláknová, takže jde pouze o částečnou implementaci SMT.

Mikroarchitektura AMD Zen má obousměrný SMT.

Architektura VISC používá virtuální softwarovou vrstvu (překladovou vrstvu) k odeslání jednoho vlákna pokynů na globální frontend, který rozděluje instrukce na virtuální hardwarové podprocesy, které jsou poté odeslány do oddělených virtuálních jader. Tato virtuální jádra je pak mohou odeslat do dostupných prostředků na kterémkoli z fyzických jader. Více virtuálních jader může tlačit podprocesy do vyrovnávací paměti pro změnu pořadí jednoho fyzického jádra, které může rozdělovat dílčí instrukce a data z více podprocesů prostřednictvím prováděcích portů současně. Každé virtuální jádro sleduje polohu relativního výstupu. Tato forma multithreadingu může zvýšit výkon jednoho vlákna tím, že jednomu vláknu umožní využívat všechny prostředky CPU. Alokace zdrojů je dynamická na úrovni latence téměř jednoho cyklu (1–4 cykly v závislosti na změně alokace v závislosti na individuálních potřebách aplikace. Pokud tedy o zdroje soutěží dvě virtuální jádra, existují vhodné algoritmy pro určení jaké zdroje mají být kam přiděleny.

Nevýhody

V závislosti na designu a architektuře procesoru může současný vícevláknový provoz snížit výkon, pokud některý ze sdílených prostředků představuje překážky výkonu. Kritici tvrdí, že je značnou zátěží pro vývojáře softwaru, kteří musí otestovat, zda je simultánní vícevláknové zpracování pro jejich aplikaci v různých situacích dobré nebo špatné, a vložit další logiku, která jej vypne, pokud se sníží výkon. Stávající operační systémy postrádají pohodlná volání API pro tento účel a pro zabránění tomu, aby si procesy s různou prioritou navzájem brali prostředky.

U určitých simultánních vícevláknových implementací existuje také bezpečnostní problém. Hyperthreading Intel v procesorech založených na NetBurst má zranitelnost, díky které je možné, že jedna aplikace ukradne kryptografický klíč jiné aplikaci běžící na stejném procesoru sledováním využití její mezipaměti. Na implementaci HT existují také sofistikované exploity strojového učení, které byly vysvětleny na Black Hat 2018 .

Viz také

Reference

Všeobecné

externí odkazy