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 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ů 4 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ů 5 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ů 6 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ů 7 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ů 8 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ů 9 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ů 10 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ů 11 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ů 12 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ů 13 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ů 14 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ů 15 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ů 16 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ů 17 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ů 18 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ů 19 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ů 20 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ů 21 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