Pokročilé architektury počítačů (PAP_03.ppt) Karel Vlček, katedra Informatiky, FEI VŠB Technická Univerzita Ostrava
Karel VlčekPokročilé architektury procesorů 2 Procesory s velmi dlouhým instrukčním slovem (VLIW) VLIW (Very Long Instruction Word) jsou podtřídou superskalárních procesorů Motivací pro toto řešení architektury je zvýšení výkonnosti na úrovni instrukcí ILP (Instruction Level Parallelism) Odpovědnost za výběr instrukcí, které mají být provedeny současně, je pouze na kompilátoru
Karel VlčekPokročilé architektury procesorů 3 Procesory VLIW (1) Vznik procesorů VLIW byl vyvolán složitostí procesu pro vydáváním instrukcí superskalárních procesorů Rostlo zejména zapojení hardware, který byl nutný pro řešení datových závislostí a pro dekódování instrukcí Část dynamicky řešených optimalizací vydávání instrukcí bylo řešitelných statickou koncepcí zavedením VLIW
Karel VlčekPokročilé architektury procesorů 4 Procesory VLIW (2) Procesory VLIW jsou charakteristické tím, že mají velmi dlouhé instrukční slovo To je způsobeno nahrazením instrukčního slova (kódu) částečně dekódovaným instrukčním slovem Instrukční kód představuje dekódovaný instrukční kód, ale rovněž jeden nebo oba operandy
Karel VlčekPokročilé architektury procesorů 5 Procesory VLIW (3) Procesory VLIW přinášejí jak výhody, tak i nevýhody: Hlavní výhodou je úspora hardware při dekódování instrukcí Další výhodou je to, že nemusí být hlídáno, jak mají být vydávány instrukce, aby se dosáhlo co největšího výkonu Více hardware než dříve tak může být použito na samotné výpočty
Karel VlčekPokročilé architektury procesorů 6 Procesory VLIW (4) - nevýhody Mezi nevýhody procesorů s architekturou VLIW patří obtížnější vytváření překladačů Programy jsou větší a rozsáhlejší, v instrukcích nejsou plně využity všechny části instrukčního slova Při dekódování není možné stanovit délku registrů, což nese nebezpečí WAW hazardů
Karel VlčekPokročilé architektury procesorů 7 Procesory VLIW (5) - nevýhody Překladače by měly respektovat hloubku zřetězení – jak mnoho výkonných jednotek bude v činnosti Aby mohlo být dosaženo optimálního výkonu, musel by překlad probíhat pro data se známými délkami operandů Výkon je rovněž ovlivňován typem algoritmů to vede k tomu, že VLIW procesory jsou specializovány na určité úlohy
Karel VlčekPokročilé architektury procesorů 8 VLIW procesor Intel IA-64 Itanium Procesor Intel IA-64 Itanium a rovněž jeho obdoba (AMD) má 32-bitovou architekturu 512Mbyte paměti cash, které mohou být i nižší, kvůli ekonomice výroby čipů, například 128/256Mbyte Nově jsou vyráběny se zpracováním slov se 64-bitovou architekturou Signálové procesory fy Texas Instruments a další
Karel VlčekPokročilé architektury procesorů 9 Plánování instrukcí Superskalární procesory plánují a vydávají instrukce z malé množiny instrukcí za běhu, je plánování a vydávání instrukcí u VLIW procesorů zkoumáno při kompilaci mnohem více instrukcí, někdy i celý program Poprvé byla použita VLIW architektura v roce 1975 u numerických koprocesorů FPS-120B
Karel VlčekPokročilé architektury procesorů 10 Generický procesor VLIW Proti superskalárním procesorům je dekódování u VLIW procesorů velmi jednoduché, proto u nich chybí jednotka dekódování a vydávání instrukcí Potřebné nejsou ani rezervační paměti a jednotky plánování, protože jsou důsledně plněny podmínky datové závislosti Je to posun od složitého hardwarového řešení k použití inteligentního překladače
Karel VlčekPokročilé architektury procesorů 11 Datová závislost u VLIW procesorů Architektura VLIW řeší problém datové závislosti použitím velkého počtu registrů, do nichž jsou ukládány mezikódy vytvářené kompilátorem Kompilátor na základě analýzy latencí a počtu funkčních jednotek plánuje tok dat přes registry tak, aby byly dodrženy všechny pravé datové závislosti
Karel VlčekPokročilé architektury procesorů 12 Spekulativní zpracování instrukcí Zohledňuje se tzv. programové řetězení (software pipelining) Spekulativní zpracování instrukcí existuje i u superskalárních procesorů i u procesorů VLIW Procesory VLIW přitom používají informace z analýzy profilace a plánování kompilátorem Pro skokové instrukce je používána predikce
Karel VlčekPokročilé architektury procesorů 13 Plánování instrukcí kompilátorem Není možné připravovat program ručně Program je připravován kompilací do mezijazyka, po jeho optimalizaci je generován kód pro cílovou architekturu VLIW Metodou vytváření tzv. základních bloků (basic blocks) se program vytváří jako pospojování částí programu, které nemají skoky
Karel VlčekPokročilé architektury procesorů 14 Acyklické plánování a predikce Program v mezijazyce používá operace s registry a operace L/S (Load/Store) Acyklické plánování pracuje se seznamem základních bloků a s tzv. acyklickým grafem Plánování se zarážkami (sentinel scheduling) je technika, která usnadňuje acyklické plánování při spekulativním provádění instrukcí
Karel VlčekPokročilé architektury procesorů 15 Predikační provádění instrukcí Technika tzv. predikačního provádění (predicated execution) instrukcí velmi usnadňuje plánování operací Predikáty (predicates) jsou jednobitové registry, které určují zda budou výsledky propuštěny nebo zahozeny Tato technika vyžaduje odporu v hardware
Karel VlčekPokročilé architektury procesorů 16 Predikace a podmíněné skoky Predikace napomáhá snaze programátora, aby navržený program byl co nejvíce lineární Při použití techniky predikace se výsledný program formátuje do tzv. hyperbloků (hyper-block formation) Instrukce pak mohou být jednoduše přesouvány v rámci hyperbloků
Karel VlčekPokročilé architektury procesorů 17 Cyklické plánování (1) Vysokého paralelismu zpracování se dosahuje u implementace programů smyček pomocí tzv. cyklického plánování Takové seřazení instrukcí se označuje jako programové zřetězení (software pipelining) Naplánování smyčky je možné při předem známém počtu iterací a absencí dalších skoků v těle smyčky
Karel VlčekPokročilé architektury procesorů 18 Cyklické plánování (2) Závislost mezi iteracemi smyčky (loop- carried dependency) se dá odstranit použitím dalších registrů nebo podporou v hardware Podpora v hardware se děje pomocí tzv. rotujících registrů (rotating registers) Programové řetězení není omezeno jen na architekturu VLIW, je možné i pomocí tzv. přejmenování registrů
Karel VlčekPokročilé architektury procesorů 19 Zhodnocení architektury VLIW Důležitý je přínos optimalizujícího kompilátoru, který při analýze vyhodnotí instrukční paralelismus Plánovací algoritmus bere v úvahu latence menší nebo rovné určité hodnotě času Největším přínosem je zvýšení využití ILP (Instruction Level Parallelism) Využívají paralelismu i v nepravidelně strukturovaném programu
Karel VlčekPokročilé architektury procesorů 20 Nové architektury VLIW INTEL IA-64: 128 registrů, 64 predikátů, 8 branch registers, architektura EPIC (Explicitly Parallel Instruction Computing) DSP TMS 320C67x: signálový procesor s pohyblivou řádovou čárkou, adresová aritmetická jednotka, násobička FX i FP, dvě jednotky pro aritmetické a logické operace Multimediální procesory (viz speciální část)
Karel VlčekPokročilé architektury procesorů 21 Vektorové procesory Cílem je zrychlit práci s vektory a maticemi Využití u vědeckotechnických výpočtů zpracovávané smyčkou přes všechny prvky vektorů Jsou obdobou architektury L/S (Load/Store) Typické je zřetězení přístupů do tzv. prokládané paměti (inteleaved memory)
Karel VlčekPokročilé architektury procesorů 22 Základní rysy architektury vektorového procesoru (1) Vektorové instrukce jsou ekvivalentní plně rozvinuté skalární smyčce Prokládaná paměť místo paměti D-cache Soubor registrů u nichž je délka přizpůsobována délce zpracovávaných vektorů Počet načítaných instrukcí je výrazně menší Latence hlavní paměti je pouze na začátku
Karel VlčekPokročilé architektury procesorů 23 Základní rysy architektury vektorového procesoru (2) Výpočet každého prvku je nezávislý na jiných prvcích (nezpůsobuje datové konflikty) Řídicí konflikty nevznikají Vektorové funkční jednotky provádějí aritmetické a logické operace (+, -, x, posuv) Několik vektorových operací může probíhat současně Spolupracují zpravidla se skalárními procesory
Karel VlčekPokročilé architektury procesorů 24 Zpracování vektorových instrukcí Operace mezi dvěma vektory Operace mezi vektorem a skalárem Přesuny mezi registry a pamětí (L/S) Shrnutí nenulových prvků Rozptýlení nenulových prvků Instrukce maskování Redukce jednoho nebo dvou vektorů na skalár
Karel VlčekPokročilé architektury procesorů 25 Doba provádění instrukcí vektorových procesorů Operace zpracovávají jeden operand v každém taktu Konvoje zpracování se nepřekrývají Při datové závislosti se data předávají Počáteční latence: L/S 12 taktů, sčítačka 6 taktů, násobička 7 taktů, dělička 20 taktů Zpracování probíhá postupně „po proužcích“ (strip-mining technique)
Karel VlčekPokročilé architektury procesorů 26 Výkonnost vektorových procesorů Výkonnost procesorů u vektorových výpočtů FP je dána počtem taktů potřebných na výpočet výsledného vektoru délky n: R = lim((FPP*n)/(T(a)*doba_taktu) Skutečná výkonnost je vždy menší než limitní hodnota R
Karel VlčekPokročilé architektury procesorů 27 Literatura: Dvořák, V.: Architektura a programování paralelních systémů, VUTIUM Brno, (2004), ISBN X Dvořák, V., Drábek, V.: Architektura procesorů, VUTIUM Brno, (1999), ISBN Drábek, V.: Výstavba počítačů, PC-DIR, s.r.o. Brno, (1995), ISBN Mueller, S.: Osobní počítač, Computer Press, Praha, (2001), ISBN Pluháček, A.: Projektování logiky počítačů, Vydavatelství ČVUT Praha, (2003), ISBN