Pokročilé architektury počítačů (PAP_04.ppt) Karel Vlček, karel.vlcek@vsb.cz katedra Informatiky, FEI VŠB Technická Univerzita Ostrava
Řešení nedostatků VLIW procesorů Jak udržet výhody VLIW procesorů při zachování výhod programové kompatibility pro vyšší programovací jazyky? K těmto výhodám patřilo ponechání velkého objemu hardware, aby mohlo být dosaženo odstranění datových závislostí Hlavní cestou k dosažení tohoto cíle bylo užití techniky přejmenování registrů Karel Vlček Pokročilé architektury procesorů
Rozdělení instrukcí do skupin a svazků Každý procesor VLIW pro tento účel rozděluje instrukce do skupin (groups) a svazků (bundles) Skupina je tvořena posloupností instrukcí, které mohou být prováděny paralelně Svazek je tvořen instrukcemi, které musejí být prováděny tak, že jsou prokládány čekáním (obsahují stop) Karel Vlček Pokročilé architektury procesorů
Předpoklady zvýšení výkonu VLIW Procesor VLIW musí být vybaven: Velkým objemem hardware – obvodových prostředků, aby mohly vykonávat více instrukcí v daném okamžiku Překladačem, který zaručí, že se neuplatní žádné datové závislosti mezi registry, které by bránily provedení operace. To je řešitelné přejmenováním registrů Karel Vlček Pokročilé architektury procesorů
Dodržení pravidel pro skupiny a svazky Architectura procesorů VLIW nedovoluje řadit svazky do skupin Svazky mezi skupinami musí mít explicitně použito „stop“ Stop je mezi instrukcemi kódováno jako část svazku Karel Vlček Pokročilé architektury procesorů
Příklad použití skupin a svazků Svazek je tvořen skupinou tří instrukcí ve slově o délce 128-bitů Každá aktuální instrukce je 41 bitů dlouhá, zbývajících 5 bitů je použito jako tzv. template. Úlohou template je indikovat přítomnost ve svazku Stop se může objevit na konci svazku nebo mezi instrukcemi, které tvoří skupinu Karel Vlček Pokročilé architektury procesorů
Pravidla použití skupin a svazků V jednom svazku může být použito pouze jedno stop Nicméně, je možné vřadit operaci No-Ops V praxi to může znamenat, že dobrý překladač může zařadit více No-Ops Karel Vlček Pokročilé architektury procesorů
Pokročilé architektury procesorů Následující obrázek zobrazuje příklad 11 svazků a 6 skupin Tabulka ukazuje, v jakém vztahu jsou skupiny a svazky (svazky v závorkách jsou rozděleny do dvou skupin) Poznamenejme, že instrukce ve skupinách a svazcích jsou v podstatě nezávislé Svazky mohou tvořit hranice skupin a naopak skupiny vymezují svazky Karel Vlček Pokročilé architektury procesorů
Grafické znázornění „template“ Karel Vlček Pokročilé architektury procesorů
Procesory s podporou paralelismu vláken Procesy a vlákna jsou entity operačního systému, které lze ovládat voláním systémových funkcí Vlákno je stejně (jako proces) posloupnost instrukcí viděná z hlediska jejich vykonání Vlákno vyžaduje určitý adresový prostor a čas CPU Karel Vlček Pokročilé architektury procesorů
Pokročilé architektury procesorů Popis procesu V operačních systémech je proces popsán tabulkou (např. PCB - Process Control Block) Tabulka obsahuje údaje o identifikaci a vlastníkovi také údaje o stavu (např.: běží, příprava k běhu, čeká) Dále je dán kód procesu, ukazatel instrukcí IP, sadu logických registrů, hromada (heap), tabulky pro správu paměti, popisovače souborů, popis obsluhy přerušení aj. Karel Vlček Pokročilé architektury procesorů
Životní cyklus procesu Životní cyklus procesu probíhá pode diagramu stavových přechodů U několika soupeřících procesů je zařazení k běhu řízeno pravidly: časová kvanta, priorita, či bez možnosti přerušení Přepínání procesů je značně časově náročné a může vyhovovat jen pro toleranci událostí s dlouhou latencí (např.: přístup na disk) Karel Vlček Pokročilé architektury procesorů
Pokročilé architektury procesorů Vlastnosti vlákna Vlákna (threads) jsou tvořena v rámci procesu, k němuž patří a jehož prostředky sdílí Vlákna sdílí zejména adresový prostor procesu K vláknu patří jen sada registrů a zásobník Kód vlákna, hromada a další parametry jsou k dispozici pouze v popisu procesu Karel Vlček Pokročilé architektury procesorů
Synchronizace a přepínání vlákna Operace s vlákny a synchronizace činnosti jejich přepínání jsou vzhledem k rozdělení parametrů mnohem rychlejší než u procesů Přepínání kontextu má podporu v moderních programovacích jazycích (Occam-2, Ada, Java), které obsahují příkazy pro spouštění vláken i jejich komunikaci a synchronizaci Karel Vlček Pokročilé architektury procesorů
Pokročilé architektury procesorů Multivláknový provoz V multivláknovém provozu MT (Multithreading) jsou instrukce jednoho vlákna prováděny do doby, než se vyskytne nějaká instrukce s dlouhou latencí Přepnutí kontextu provází uložení ukazovátka instrukcí IP, uložení ukazovátka zásobníku a jisté části stavového slova Tak to může fungovat při zasílání zpráv v paralelních systémech Karel Vlček Pokročilé architektury procesorů
Systémy se sdílenou pamětí Latence je u systémů se sdílenou pamětí malá, to vyžaduje podporu více kontextů technickými prostředky procesorů Podporou mnoha vláken s krátkou latencí je technické řešení, které nevyžaduje analýzu při kompilaci Tuto techniku lze použít pro nepředvídatelné události i konflikty Karel Vlček Pokročilé architektury procesorů
Architektura pro multivláknový (multikontextový) provoz Procesory obsahují technické komunikační prostředky (tzv. transputery) Transputery jsou účinné a výhodné při výstavbě paralelních systémů typu Nejčastější systémová architektura je nazývána MIMD s distribuovanou pamětí a zasíláním zpráv Karel Vlček Pokročilé architektury procesorů
Principy multivláknového provozu Nejčastější použití multivláknového provozu je dnes u využíváno při vydávání instrukcí pouze u jednoho vlákna Přepnutí se děje v okamžiku, kdy je vlákno zastaveno nebo zablokováno operací s dlouhou latencí (blocked MT) Druhý efektivní režim je přepínání kontextu pokud možno v každém taktu procesoru (interleaved MT) Karel Vlček Pokročilé architektury procesorů
Pokročilé architektury procesorů Provoz s blokováním Počet aktivních vláken je dán množstvím technických prostředků, které jsou k dispozici pro jeden kontext vlákna Předpokládá se, že v kontextu jednoho procesu (PSW Process Status Word) běží jedno vlákno Cílem je naplnit dobu zpracování vlákna co nejvíce užitečnou prací CPU Karel Vlček Pokročilé architektury procesorů
Účinnost pro více vláken (1) Pro jednokontextový procesor je účinnost podpory provozu více vláken dána relací: E1 = R/(R+L) = 1/(1+L/R) R … je průměrný počet taktů vykonávaných instrukcí L … je počet taktů latence Karel Vlček Pokročilé architektury procesorů
Účinnost pro více vláken (2) Využití (účinnost) procesoru s počtem aktivních vláken poroste lineárně až do hodnoty, která má oporu pro více kontextů v hardware Pokud není opora pro více kontextů, účinnost neroste Hodnota činnosti se ještě snižuje s režií, kterou představuje přepínání kontextu Karel Vlček Pokročilé architektury procesorů
Účinnost pro více vláken (3) Další limitování účinnosti vzniká ztrátou rozpracovaných instrukcí při přepnutí kontextu (možnosti řešení): Nedokončení instrukcí starého vlákna a zahájení instrukcí nového vlákna (nejčastější) Dokončení instrukcí starého vlákna v překryvu s novou instrukcí (vyžaduje podporu) Zahájení instrukcí nového vlákna po dokončení starého vlákna Karel Vlček Pokročilé architektury procesorů
Pokročilé architektury procesorů VLIW architektura a MT Vydávání více instrukcí VLIW architekturou v jednom taktu spolu multivláknovým zpracováním přináší výhodu tak zvaného TLP (Thread-level Parallelism) Využívá se více „časových slotů“, název techniky je simultánní (horizontální) MT = SMT (Simultaneous Multi-Thread) Karel Vlček Pokročilé architektury procesorů
Pokročilé architektury procesorů Optimalizace pro SMT Při změně počtu vláken od jednoho do osmi bylo v jednom taktu provedeno u testovacích úloh až 6,2 instrukce proti 2 instrukcím u prostých superskalárních procesorů Technikou SMT se omezuje i počet spekulativně prováděných instrukcí Obtížně se řeší paměť a tabulky skoků, ale technika SMT má schopnost tyto přídavné konflikty skrýt Karel Vlček Pokročilé architektury procesorů
Pokročilé architektury procesorů Transputery Architektura transputerů obsahuje komunikační hardware a tím se stává samostatným prvkem pro výstavbu paralelních systémů Byl vyvinut jazyk Ocaam, ve kterém jsou procesy konstruovány jako vlákna (1985), protože procesy mají podporu v technických prostředcích Typická je dvojbránová paměť a komunikační hardware Karel Vlček Pokročilé architektury procesorů
Procesory P-RISC a *T (StarT) (1) P-RISC (Paralel RISC) byl vyvinut na MIT (1989) StarT je jeho zdokonalenou verzí a byl vyvinut spojeným úsilím MIT a firmy MOTOROLA (1992) Kontext vlákna je definován tzv. žetonem (token) Na konci instrukční linky je vytvořen vždy nový žeton, který je umístěn na konec jiného vlákna Karel Vlček Pokročilé architektury procesorů
Procesory P-RISC a *T (StarT) (2) Překladač podporuje vzdálený přístup do paměti, což má tu výhodu, že odpovědi mohou přicházet v libovolném pořadí Uplatňuje se zde princip zpracování „data-flow“, tím se uvolní zpracování jako autonomní proces s podporou hardware Principy jsou dnes uplatňovány u čipů NEURON, které se uplatnily v systémech pro distribuované řízení Karel Vlček Pokročilé architektury procesorů
Pokročilé architektury procesorů Procesory Tera MTA Jsou to zatím jediné procesory s prokládaným MT, které nejsou založeny na použití paměti cache Název MTA je Multi-Threaded Architecture Procesor vydává v jednom taktu až tři operace v jedné instrukci Procesor Tera MTA podporuje až 128 aktivních váken Karel Vlček Pokročilé architektury procesorů
Pokročilé architektury procesorů Literatura: Dvořák, V.: Architektura a programování paralelních systémů, VUTIUM Brno, (2004), ISBN 80-214-2608-X Dvořák, V., Drábek, V.: Architektura procesorů, VUTIUM Brno, (1999), ISBN 80-214-1458-8 Drábek, V.: Výstavba počítačů, PC-DIR, s.r.o. Brno, (1995), ISBN 80-214-0691-7 Mueller, S.: Osobní počítač, Computer Press, Praha, (2001), ISBN 80-7226-470-2 Pluháček, A.: Projektování logiky počítačů, Vydavatelství ČVUT Praha, (2003), ISBN 80-01-02145-9 Karel Vlček Pokročilé architektury procesorů