Techniky zvýšení výkonnosti procesoru, RISC a CISC procesory
Kategorizace architektur počítačů Co popisuje architektura počítačů: (CPU = ALU + řadič + paměť + Vstupy/Výstupy) Subskalární architektura (von Neumannova) Skalární architektura překrývání Superskalární architektura statická (VLIW) zřetězení výpočetních jednotek Superskalární architektura dynamická několik instrukcí současně
Základní funkční jednotky počítače Aritmetická a logická jednotka (ALU) Řadič (konečný automat pro řízení činnosti) Paměť (úrovně pamětí a jejich rychlost) Vstupy a výstupy (adresování, způsoby representace informace, podpora formátování dat) 3
Subskalární procesory Vyznačují se společnou pamětí pro instrukce a data, kterou poprvé použil J. von Neumann Doba provádění jednotlivých instrukcí je dána součtem času pro načtení (catch), dekódování a provedení (execution) instrukce Doba provádění programu je dána prostým aritmetickým součtem časů trvání jednotlivých instrukcí
Skalární architektura V jednom instrukčním taktu je načtena a dekódování jen jedna instrukce Provádění instrukcí probíhá v časovém překrývání nebo paralelně (například operace v pevné a pohyblivé řádové čárce) Trvání programu je delší, než součet dob provádění instrukcí, protože v některých taktech nemůže být načtena instrukce 5
Superskalární statická architektura Zvýšení výpočetního výkonu bylo dosaženo zřetězením výpočetních jednotek (provádění instrukcí je tedy více překryto) Pro zvýšení výkonu bylo nutné dosáhnout paralelního načítání instrukcí: tato architektura je nazývána superskalární Řešení přineslo zvětšení délky slova dekódované instrukce označované VLIW
Superskalární dynamická architektura Princip je zajištěn plánováním několika instrukcí současně Při instrukcích skoku jsou některé výsledky provádění ztraceny, protože načtení muselo předcházet provádění instrukcí Týká se to zejména přístupu do operační paměti při čtení nebo ukládání dat
CISC versus RISC Od roku 1975 spolu soupeří dvě koncepce architektur CISC (Complex Instruction Set Computer) RISC (Reduced Instruction Set Computer) 8
Instrukční cyklus - zhruba 1. načíst instrukci (fetch) 2. porozumět instrukci (decode) 3. vykonat instrukci (execute) 4. uložit výsledek (store) => fragmentace úlohy na menší části 9
Instrukční cyklus - podrobně 10
Zrychlování (pipelining) protože každá instrukce sestává z několika fází, lze další instrukci zahájit dříve než je předchozí dodělána něco jako výrobní linka v továrně, kde na lince může být současně tolik výrobků v různé fázi rozpracování, z kolika fází se výroba skládá např. zatímco se jedna instrukce dekóduje, tak pro další už může být proveden fetch 11
Základní instrukční cyklus START V ýběrová fáze řadiče Prováděcí fáze řadiče HALT
Sériové zpracování Výběrová Prováděcí Výběrová Prováděcí Výběrová Prováděcí Výběrová Prováděcí Takt 1 Takt 2 Takt 3 Takt 4 Takt 5 Takt 6 Takt 7 Takt 8 Instrukce 1 Instrukce 1 Instrukce 2 Instrukce 2 Instrukce 3 Instrukce 3 Instrukce 4 Instrukce 4 Pipeline Výběrová jednotka Prováděcí jednotka Takt 1 Takt 2 Takt 3 Takt 4 Takt 51 Instrukce 1 Instrukce 2 Instrukce 3 Instrukce 4 Instrukce 1 Instrukce 2 Instrukce 3 Instrukce 4 13
Podstata metody Postupné zpracování Předpoklad: n funkčních bloků Každý z bloků je během (n-1) časových úseků nevyužit a čeká na příchod dalšího operandu Proudové zpracování Využití všech bloků současně V určitém okamžiku je v každém bloku zpracován jiný operand
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce) S1 S2 S3 S4 IF ID OF EX
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 IF instruction fetch (výběr instrukce) ID instruction decode (dekódování instrukce) OF operations fetch (výběr operandu) EX execution (provedení instrukce)
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
EX... OF... ID... IF... 1 2 3 4 5 6 7
EX... OF... ID... IF... 1 2 3 4 5 6 7
EX... OF... ID... IF... 1 2 3 4 5 6 7
EX... OF... ID... IF... 1 2 3 4 5 6 7
EX... OF... ID... IF... 1 2 3 4 5 6 7
EX... OF... ID... IF... 1 2 3 4 5 6 7
EX... OF... ID... IF... 1 2 3 4 5 6 7
EX... OF... ID... IF... 1 2 3 4 5 6 7
EX... OF... ID... IF... 1 2 3 4 5 6 7
EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 EX... OF... ID... IF... 1 2 3 4 5 6 7
Proudové zpracování EX... OF... ID... IF... 1 2 3 4 5 6 7 Doba zpracování = n + k 1 n sekcí k úloh
Neproudové zpracování EX... OF... ID... IF... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Doba zpracování = n * k n sekcí k úloh
Součinitel zvýšení propustnosti n k q = k >> n k + 1 n k q k n lim = k n 1 + 1 k = n
Konstrukce datové cesty pro zřetězené zpracování
Transformace na zřetězené zpracování Datovou cestu rozdělíme do k úseků (stages) v každém úseku budeme zpracovávat jinou instrukci nejpomalejší úsek určuje rychlost pipeline obdoba nejdelší instrukce v jednocyklové datové cestě výchozí CPI=1 (ideální stav) v každém kroku opustí pipeline jedna instrukce ve skutečnosti CPI>1 (pipeline se často zasekne) latence instrukcí zvyšuje režii, nesnižuje propustnost Mezi jednotlivé úseky vložíme registry (latches) stav instrukce, operandy, řídící signály instrukce uvnitř datové cesty jsou v různých stavech analogie k pásu na výrobní lince
Datová cesta pro zřetězené zpracování
Datová cesta pro zřetězené zpracování
zpracování 3 instrukcí, krok 1
zpracování 3 instrukcí, krok 2
zpracování 3 instrukcí, krok 3
zpracování 3 instrukcí, krok 4
zpracování 3 instrukcí, krok 5
zpracování 3 instrukcí, krok 6
zpracování 3 instrukcí, krok 7
Pipeline - problémy pipeline zavádí paralelismus, ale navenek se procesor musí tvářit sekvenčně datová závislost: paralelně zpracovávané instrukce používají stejné registry nebo paměťová místa závislost skoků: provedení / neprovedení skoku závisí na výsledku předchozí instrukce největší problém: skok si vynutí vyprázdnění pipeline 78
Predikce skoku v instrukci uložena nápověda. Podle toho se instrukce načítají. Je-li nápověda správně, nedojde ke ztrátě. Je-li nápověda špatně, vyprázdní se pipeline, načte se správný obsah. statická predikce rozhodnutí bez znalosti skutečné historie průběhu (predikce vždy stejná pro stejnou instrukci, bez ohledu na předchozí instrukce) 79
Plnění fronty instrukcí Při lineárním programu postupné plnění fronty Nepodmíněný skok Podmíněný skok- metody řešení
Bit predikce skoku V každé skokové instrukci jeden bit rezervován na predikci toho, zda podmínka bude splněna nebo ne. Bit se nastavuje buď předem (při sestavení programu) nebo během provádění programu. S - provedení skoku N neprovedení skoku
Graf přechodů popisující dvojitou predikci skoků S S N S 01 00 S S N 10 N N 11 N S N
Zpoždění instrukce skoku Čtení instrukce z paměti trvá déle než z fronty (2:1 3:1) Proto výběr instrukce musí být proveden s předstihem U podmíněného skoku lze žádat až po vyhodnocení podmínky Proto se odloží lineární proud instrukcí o tolik taktů, o kolik trvá přečtení následující instrukce z paměti
Použití paměti skoků Snížení prostojů na provedení podmíněného skoku je v použití vyrovnávací paměti, do níž se ukládají instrukce, na které v poslední době směřoval skok Používá se strategie FIFO zaplnění novými instrukcemi při každém podmíněném skoku
Předávání dat Mezi instrukcemi, které za sebou těsně následují rozdílná délka provádění instrukcí - metoda vkládání cyklů, až se dokončí předcházející instrukce - metoda vzájemného blokování zpoždění druhé instrukce, než je operand k dispozici
Metoda vkládání cyklů V I D I V O P O Z V 1.vložená instrukce V I D I V O P O Z V 2. vložená instrukce V I D I V O P O Z V V I D I V O P O Z V
Metoda vzájemného blokování Předání výsledku V I D I V I V O D I P O V O Z V P O Z V
Čtení dat z paměti Každá instrukce styku s pamětí trvá déle než instrukce probíhající pouze v procesoru Řešení 1- vkládání jiných instrukcí např. prázdných Řešení 2 Vhodná změna pořadí instrukcí
Počítače s redukovaným souborem instrukcí RISC Reduced Instruction Set Computer
Vlastnosti RISC Podstatná část instrukcí se provádí během jednoho strojového cyklu Instrukce se provádějí v obvodovém řadiči (nepoužívá se mikroprogramování) Celkový počet instrukcí a způsobů adresování je malý Pro spolupráci s hlavní pamětí jsou použity pouze dvě instrukce, a to zápis do paměti a čtení z paměti Instrukce mají pevnou délku a pevný formát, který přesně vymezuje funkci jednotlivých bitů nebo skupin bitů V procesoru je použit velký počet registrů Složitost se z technického vybavení a ze souboru instrukcí částečně přesouvá do optimalizujícího kompilátoru
Charakteristické rysy pro RISC jedna instrukce na cyklus operace registr registr architektura load store malý počet a jednoduché adresovací režimy pevný formát instrukce malý počet a jednoduché instrukce velké množství registrů použití linky proudového zpracování (pipeline) zvláštní zpracování skoků hardwired návrh obvodového řešení silná závislost na kompilátoru 91
Výhody a nevýhody malého počtu instrukcí Robustnost instrukcí Provádění instrukcí je stejné Proto možné překrývání instrukcí Vkládání instrukce v každém cyklu hodin Tím dosahování velkých rychlostí Delší programy Nutnost většího počtu registrů
Sled instrukcí VIVP výběr instrukcí z vyrovnávací paměti DI dekódování instrukce OP operace VOD výběr operandu z registru VAD výpočet adresy dat VAI výpočet adresy instrukce VDVP výběr dat z VP ZVR zápis výsledku do registru
Přesuny dat mezi pamětí a registry Požadavek na dostatečný počet mezipaměti 16-32 KB Dále dostatečný počet registrů až 514
Strategie návrhu RISCu zjištění nejpoužívanějších instrukcí (simulace a analýza programů) optimalizace datových cest pro tyto instrukce přidání dalších instrukcí, pokud jsou rozumně využitelné a nezpomalí procesor přesunutí komplexních činností do kompilátoru 95
CISC Proč se tedy vlastně vyvinuly? (První stroje měly jednoduchou architekturu) Cena HW klesla, cena SW stoupla Přesun složitosti do HW usnadní programování Méně instrukcí pro daný úkol znamená méně přístupů do (pomalé a drahé) paměti 96
Pokusy o definici RISC N.J.Davis: omezená a jednoduchá instrukční sada velké množství obecných registrů důraz na optimalizaci pipeline Colwell: provádění instrukcí v 1 taktu architektura load/store relativně málo instrukcí a způsobů adresování pevný formát instrukcí větší význam kompilátoru 97
RISC typičtí představitelé Desktop/Server: Alpha (Digital) PA-RISC (Hewlett-Packard) PowerPC (IBM + Motorola) MIPS (Silicon Graphics) SPARC (Sun Microsystems) 98
Návrh procesoru co zvažovat pevná/proměnná délka instrukcí? pevný/proměnný počet a typ operandů? počet adresovacích režimů? mikrokód/hardwarový řadič? stupeň paralelismu? důraz na vyšší programovací jazyky? schopnosti kompilátoru? 99
zvolit RISC nebo CISC? Neexistuje jednoznačná odpověď! Problémy: žádné dva procesory RISC a CISC nejsou přímo porovnatelné není konečná sada testovacích programů obtížné odlišit vliv HW a vliv kompilátoru (většina dnešních návrhů bere z obou kategorií) 100
Konvergence CISC a RISC od 80-let se technologie i znalosti změnily mnohé techniky jsou používány procesory z obou táborů: CISC vykonávají více instrukcí v 1 taktu RISC se zlepšením technologií zbývá místo vyplněné komplikovanějšími instrukcemi vznikají post-risc návrhy, kombinující oba přístupy s metodami, které nejsou použity v žádné z těchto kategorií (přesto si RISC zachovává charakteristické vlastnosti) 101
Post-RISC Rozdíl od superskalárních RISCů: přidání ne-riscových instrukcí (pro zvýšení výkonu) architektura FISC (Fast Instruction Set Computer) agresivní přerovnávání instrukcí v průběhu zpracování out-of-order execution, speculative execution (odklon od závislosti na kompilátoru) nové uspořádání, nové jednotky větší míra paralelismu 102
Příklady procesorů post-risc procesory s ojedinělými znaky post-risc DEC Alpha 21164, SUN UltraSPARC procesory s typickou organizací post-risc IBM PowerPC 604, MIPS R10000, HP PA- 8000 smíšené organizace Intel Pentium P6 ( interesting blend of architectures ) starší Pentia jsou typické CISC procesory 103
CISC se společnou pamětí Cache CISC procesor s mikroprogramovým řízením řadič CPU ROM mikroinstr. Cache Hlavní paměť 104
CISC s překrýváním Procesory CISC začaly používat překrývání provádění a načítání následující instrukce Po dobu 95% času je zpracováváno asi jen 25% instrukcí z celkového sortimentu Procesory měly příliš složitý řadič, který zabíral, protože byl řešen hardwarově, příliš velkou plochu na čipu. 105
Doba provádění instrukcí T c Doba provedení programu (čas provedení N instrukcí je dána vztahem T c = T.N.CPI, kde N je celkový počet vykonaných instrukcí a CPI (Clock por Instruction) je průměrný počet vykonávaných cyklů potřebných k vykonání instrukce 106
Základní rysy RISC procesorů (1) Malý počet relativně jednoduchých instrukcí V jednom taktu je vykonány jedna instrukce Řadič s pevně propojenou logickou sítí hradel Operace dat pouze nad registry zápisníkové paměti Velký počet programově dostupných registrů 107
Základní rysy RISC procesorů (2) Tyto změny vyvolaly nutnost optimalizace programu pomocí optimalizujícího kompilátoru Adresaci až 192 registrů při čtení operandů a ukládání výsledku operace Přístup do paměti pouze instrukcí přesunů, proto se označují instrukce jako L/S instrukce (Load/Save Instructions) 108
RISC s pevně propojeným řadičem Funkce oddělených Cache pro instrukce a data P. P. řadič CPU I - Cache D - Cache Hlavní paměť 109
Další vývoj RISC (1) Pro rychlou činnost není důležitý počet instrukcí, ale jejich provádění v jednom instrukčním cyklu Optimalizující překladač má tak k dispozici větší možnosti optimalizace Dosahuje se tím možnost optimalizace programu mnohem snadněji, než volbou složitých instrukcí 110
Další vývoj RISC (2) Další vývoj směřoval ke zvýšení efektivity práce procesoru s pamětí CPU byla doplněna o jednotku správy paměti MMU (Memory Management Unit) Připojen byl také numerický koprocesor pro zpracování dat v pohyblivé řádové čárce Zdokonaleny byly i operace pro obsluhu bran periferních zařízení 111
Současný stav vývoje RISC RISC jsou již standardně řešeny jako L/S architektura (Load/Store) RISC jsou schopny vydávat několik instrukcí v jednom instrukčním cyklu (superskalární technika) 112
Zřetězené zpracování Zřetězení je založeno na rozpracování několika instrukcí v souběžném režimu a jejich průběžném dokončování Dosáhne se tím zvýšení výkonu procesoru podobně jako například při výrobě na montážní lince automobilů Při instrukcích skoků se snižuje účinnost zvyšování výkonu 113
Typy zřetězení Zřetězení lze uplatnit při řízení provádění instrukcí nebo mikroinstrukcí Při realizaci aritmetických instrukcí Při přístupu do paměti (Interleaved Memory) Při zasílaní zpráv (Wormhole Routing) Při provozu na sdílené sběrnici s rozdělenými transakcemi (Split-Transaction Bus) 114
Předpoklady pro účinné zřetězení Nepřetržitý přísun údajů, nad nimiž je prováděna stejná operace Rozdělení do nezávislých kroků Přibližně stejné trvání kroků činnosti prováděné při dílčích krocích zřetězení 115
Nezřetězené zpracování Nezřetězené zpracování je zobrazeno tabulkou s dvanácti kroky provádění tří instrukcí Čas 1 2 3 4 5 6 7 8 9 10 11 12 i 1 S 1 S 2 S 3 S 4 i 2 S 1 S 2 S 3 S 4 i 3 S 1 S 2 S 3 S 4 116
Zřetězené zpracování (1) Zřetězené zpracování je zobrazeno tabulkou s deseti kroky Čas 1 2 3 4 5 6 7 8 9 10 i 1 S 1 S 2 S 3 S 4 i 2 S 1 S 2 S 3 S 4 - i 3 S 1 S 2 x S 3 S 4 i 4 S 1 x S 2 S 3 S 4 i 5 x S 1 S 2 S 3 S 4 i 6 S 1 S 2 S 3 S 4 117
Zřetězené zpracování (2) V předchozím diagramu jsou pomlčkou vyznačeny situace, kdy je počítač bez práce pomlčkou - Čekání na mezivýsledek je zobrazeno smbolem x Počet stupňů je označován hloubka řezu Doba průchodu všemi stupni je tzv. latence řetězu 118
Technické řešení zřetězení Řešení je možné dvojího provedení: Synchronní je řízeno zdrojem synchronizace. Při realizaci se střídá logická síť realizující výkonné jednotky se záchytnými registry Asynchronní dosahuje maximální rychlosti. Při návrhu jednotky je kritickou hodnotou při návrhu zpracování dat zpoždění signálů v logické síti 119
Technické řešení zřetězení (2) Synchronní linka se zřetězením FF S 1 FF FF S k FF Hodiny f MHz 120
Optimalizace počtu stupňů Při návrhu architektury je nutné mít na paměti, že průměrně každá desátá instrukce je skok Mezi zvýšením rychlosti a ceny existuje optimální řešení Počet stupňů linky nelze libovolně zvyšovat 121
Ukazatel zrychlení S Zrychlení S definujeme jako poměr délky sekvenčního zpracování T l =N.k.τ a zkrácené délky zřetězeného zpracování N vstupních položek T k =(k+n-1).(τ+t d ). Nedochází-li k zastavování linky je poměr: S k =T l /T k = N.k.τ /(k+n-1).(τ+t d ) 122
Superzřetězení Využije-li se během taktu signálu ze zdroje synchronizace každé hradlo zhruba jednou, jedná se o techniku tzv. superzřetězení Účinnost superzřetězení je tedy závislá na použité technologii 123
Výkonnost nezřetězených procesorů Sekvenční provádění instrukcí: doba provádění programu je dána součtem dob trvání instrukcí Výkonnost nezřetězených procesorů P je tak dána opakovací periodou signálu ze zdroje synchronizace (periodou hodin) 124
Uspořádání zřetězené linky (1) Architektura pro zřetězené zpracování instrukcí v lince umožňuje překrytí doby načtení a doby provádění instrukcí K určení výkonnosti potřebujeme tři údaje: Periodu signálu zdroje synchronizace Latenci instrukcí (operací) a Iniciační intervaly 125
Uspořádání zřetězené linky (2) Nejstarší typ linky pro zřetězené zpracování používal pouze 2 stupně: instrukční jednotku a prováděcí jednotku Soudobé linky obsahují 5 až 12 stupňů Rozlišují se čtyři hlavní podmnožiny instrukcí: 1. aritmetické a logické s pevnou čárkou (FX), 2. operace s pohyblivou řádovou čárkou (FP), 3. skoky (B, Branching) a 4. čtení a ukládáni dat (L/S, Load/Store) 126
Tradiční procesory RISC Činnosti zřetězení u RISC procesorů: IF (Instruction Fetch) ID (Instruction Decode) a RO (Read Operands) EX (Execute) a WB (Write Back) CA (Cache Access) AG (Address Generation) E/C (Execute/Cache Access) 127
Konflikty RAW, WAR a WAW Tři druhy datových závislostí: RAW (Read After Write) čtení po zápisu WAR (Write After Read) zápis po čtení WAW (Write After Write) zápis po zápisu Závislost RAR (Read After Read) ke konfliktu nikdy nevede 128
Předávání údajů u konfliktů RAW - předávání dat (forwarding, bypassing) jinak nazývané postupová závislost nebo pravá závislost (true dependence) WAR - Protiproud (anti-dependence). Tato sekvence může dávat výsledky v jiném pořadí, než uvádí program Skoky představují tzv. řídicí závislost (control dependence) 129
Výpočet adresy u skoku Pro výpočet adresy skoku je výhodné použít samostatnou aritmetickou jednotku. Tento výpočet je prováděn již ve fázi ID a pak lze přes multiplexor uložit novou adresu přímo do programového čítače Snížit tuto nevýhodu je možné také použitím dynamické předpovědi skoků. To je nezbytné u superskalárních procesorů 130