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. 2. 3. 4.
načíst instrukci (fetch) porozumět instrukci (decode) vykonat instrukci (execute) 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
STA RT
V ý b ě ro v á fá z e řa d ič e
P ro v á d ě c í fá z e řa d ič 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 Takt 1 Výběrová jednotka Prováděcí jednotka
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 n + k −1
lim q = k →∞
n n 1 +1− k k
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
N S 00 S
S S
N
N
11 N
N S 10
01
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ů
1.vložená instrukce 2. vložená instrukce
VDV I I O VD I I V I
P O V O D I V I
Z V P O V O D I
Z V P O V O
Z V P Z O V
Metoda vzájemného blokování VDV P Z I I O O V Předání výsledku VD V P Z I I O OV
Č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 PA8000
• 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í Tc • Doba provedení programu (čas provedení N instrukcí je dána vztahem Tc = 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 i1 S1 S2 S3 S4 i2 S1 S2 S3 S4 i3 S1 S2 S3 S4 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 i1 S1 S2 S3 S4 S1 S2 S3 S4 i2 i3 S1 S2 x S3 S4 i4 S1 x S2 S3 S4 i5 x S1 S2 S3 S4 i6 S1 S2 S3 S4 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
S1
FF
FF
Sk
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í Tl=N.k.τ a zkrácené délky zřetězeného zpracování N vstupních položek Tk=(k+N-1).(τ+td). Nedochází-li k zastavování linky je poměr: Sk=Tl/Tk= N.k.τ /(k+N-1).(τ+td) 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