Principy počítačů I - Procesory snímek 1 VJJ Principy počítačů Část V Procesory 1 snímek 2 Struktura procesoru musí umožnit změnu stavu stroje v libovolném kroku uvolnění nebo znemožnění pohybu dat po datových cestách ŘÍZENÍ POMOCÍ INSTRUKCÍ VJJ 2 snímek 3 Realizace procesoru technologie výstavby procesoru - obvykle elektronické prvky u číslicových počítačů vychází z realizace logických funkcí elektronickými prvky a jejich propojováním VJJ 3
snímek 4 Charakteristika logických prvků logické vlastnosti - odpovídají realizovaným logickým funkcím fyzikální vlastnosti - měřitelné fyzikální veličiny realizace (parametry logického prvku) statické parametry (např. počet vstupů prvku) dynamickými parametry (např. zpoždění signálu mezi vstupem a výstupem) VJJ 4 snímek 5 Skupiny logických prvků kombinační logika (hradla) - obvodové řešení logické funce AND (logický součin), OR (logický součet)... sekvenční logika (klopné obvody) - výstup závislý na vstupech a vnitřním stavu obvodu klopný obvod RS, D, JK... VJJ 5 snímek 6 Realizace kombinační logiky (1) 0 1 0 1 Ux1 Ux1 R1 Ux2 R2 0 0 1 1 Ux2 0 1 1 1 U1 Uy Uy Realizace logické funkce pomocí relé VJJ 6
snímek 7 A B A B A Základní kombinační obvody Y A AND A B Y NAND A B Y A Y 0 1 A B Y 0 0 0 0 1 0 1 0 0 1 1 1 A B Y 0 0 1 0 1 1 1 0 1 1 1 0 VJJ 7 A B A B OR A + B A B Y Y Y OR A + B NOR A + B EXCL-OR A B A B Y 0 0 0 0 1 1 1 0 1 1 1 1 A B Y 0 0 1 0 1 0 1 0 0 1 1 0 A B Y 0 0 0 0 1 1 1 0 1 1 1 0 snímek 8 Realizace kombinační logiky (2) X NOT AND X Y P S OR S 0 0 0 0 0 1 0 1 AND Y NOT 1 0 0 1 1 1 1 0 P AND Polosečítací obvod realizovaný z logických hradel VJJ 8 snímek 9 R S Realizace sekvenční logiky (1) O Ō VJJ 9 tn tn+1 S R On+1 0 0 On 1 0 1 0 1 0 1 1 Tabulka přechodů Realizace klopného obvodu RS z hradel kombinační logiky
snímek 10 Realizace sekvenční logiky (2) složitější klopné obvody "D" - zápis s náběžnou hranou hodinového pulsu "JK" - záznam nové hodnoty se sestupnou hranou hodinového pulsu latch - průchozí paměťový obvod... VJJ 10 snímek 11 Sestavy kombinačních obvodů kodéry a dekodéry multiplexery a demultiplexery polosečítačky (vícebitové) úplné sčítačky, generátory přenosů aritmeticko-logické jednotky... VJJ 11 snímek 12 Sestavy sekvenčních obvodů registry - uchování zapsané informace čítače - počítání pulsů, které přijdou na spouštěcí vstup (dekadické, binární...) posuvné registry - posouvají uloženou informaci (bity) paměti - uchovají uloženou informaci za definovaných podmínek... VJJ 12
Clock T0 T1 T2 T3 snímek 13 Generování impulsů pro časování Pro časování obvodů procesoru je třeba generovat definované posloupnosti impulsů, které určují v jakých okamžicích budou aktivní jednotlivé části procesoru. T 0 T 1 T 2 T 3 VJJ 13 snímek 14 Řadič Direktivní řadič - působí vždy stejně a nezávisle na průběhu řízeného děje. Stavový diagram - graf přechodů mezi stavy direktivního řadiče bude vždy lineární řetězec Zpětnovazební řadič - obecnější forma uspořádání. Na jeho vstup mohou přicházet signály o stavu ovládaných prostředků - posloupnost řídících signálů je závislá na ději ovládaných obvodech. VJJ 14 snímek 15 Start Direktivní řadič 1 2 3 řídící vodiče n Hodiny přičti Dekodovací logika posuň Čítač VJJ 15 ulož Stavový diagram posuň Příklad funkce v daném stavu
snímek 16 Zpětnovazební řadič kombinační obvody řadiče signály o stavu ovládaných obvodů řídící signály vnější kombinační signály obvody ovládané řadiče obvody paměť vnitřního stavu řadiče vnější řízení VJJ 16 snímek 17 Jednoadresový procesor Adresa Vstup dat Hlavní paměť Adresový vstup do paměti Výstup dat Volba vstupu Instrukční kód Instrukční dekodér Aritmeticko logická jednotka Řídící signály Programový čítač Zápis Akumulátor Nulování VJJ 17 Adresa Řízení Krok programového čítače Zapsání hodnoty do programového čítače Zápis instrukce snímek 18 Vznik mikroprogramování Složitost a náročnost pevné logiky tvořící jádro řadiče procesoru omezovala jeho flexibilitu a zvyšovala cenu. hostitelský počítač - jednodušší a rychlejší, řízen zvláštním programem hluboko pod úrovní asembleru, využívá plně zdrojů hardwaru cílový počítač - poskytuje programátorovi očekávané vlastnosti, instrukce na cílovém počítači spustí odpovídající instrukční sekvenci na hostitelském počítači. VJJ 18
snímek 19 Mikroprogramování Systematický postup, který za pomoci překladače mikroprogramů vytvoří binární obsah řídicí paměti, která je základem mikroprogramovaného řídicího obvodu. VJJ 19 snímek 20 Obecné schéma mikrořadiče Paměť mikroprogramu Datové obvody procesoru (registry, ALU apod.) AR mikroinstrukce Logika výběru adresy Podmínkové signály mikroinstrukce Registr instrukce VJJ 20 snímek 21 Wilkinsovo schéma mikrořadiče Vnější adresy CMAR Adresový Řídící paměť ROM registr paměti mikroinstrukcí Dekodér binární na 1 z n P Přepínač řízený Řídící signály vnějšími podmínkami VJJ 21
snímek 22 Formáty mikroinstrukcí jednotlivá pole mikroinstrukce reprezentují vstupní operandy operace aritmeticko-logické jednotky cílovou adresu pro výsledek operace adresu příští mikroinstrukce podle způsobu kódování rozlišujeme horizontální mikroprogramování vertikální mikroprogramování nanoprogramování VJJ 22 snímek 23 Horizontální mikroprogramování I/O Pam ALU BusA BusB 6 8 4 4 4 = 26 bitů Řídící bity mikroprogramu Fáze Výstup Čtení z paměti řídícího mikroprogramu signálu Fáze Výstup řídícího signálu Čas VJJ 23 snímek 24 Vertikální mikroprogramování I/O Pam ALU BusA BusB 3 4 3 3 3 = 18 bitů Kódovaná pole mikroprogramu Výstupy Fáze řídících signálů Čtení z paměti mikroprogramu Fáze Výstup řídícího signálu Čas VJJ 24
v k k snímek 25 Řídící bity n log2 k Nanoprogramování Mikropaměť Mikropaměť Adresa příští mikroinstrukce Adresa nanoinstrukce Adresa příští mikroinstrukce log2 v log2 k S k ( n log k t = + 2 ) Nanopaměť n S n = k(log2 v + log2 k) + nv VJJ 25 snímek 26 Virtuální procesor Bus S MA MD IA ID S1 Hlavní paměť P G MAR MDR R1 Displej Klávesnice R IOAR W IODR R2 CS AL -1. CS INC +1 IC Řídící signály hradel Mikroinstrukční řadič VJJ 26 Σ A INC +0 AD S2 Akumulátor AC S3 Programový LC R3 čítač Adresa S4 operandu IN Bus R snímek 27 Fáze instrukce LOAD Fetch - vyzdvižení instrukce 1. [PC] R3, S3, MA [MAR], G [MDR]; 2. R1, IN [instrukční registr]; 3. [PC] R3, AL, INC, <sumátor> A [Akumulátor]; 4. [Akumulátor] S2, LC [PC]; Execute - provedení instrukce (rozdělení na dekódování a provedení) [instrukční registr] S4, MA [MAR], G [MDR], R1, AC [Akumulátor] VJJ 27
snímek 28 E-fáze Provedení (EXECUTE) Instrukční cyklus Vyzvednutí (FETCH) I-fáze Dekódování (DECODE) VJJ 28 snímek 29 Registry v hostitelském procesoru Posloupnost instrukcí Dekódování instrukcí Programový čítač Registr instrukce + délka instrukce + vzdálenost skoku kód instrukce obsah polí instrukce VJJ 29 snímek 30 Zrychlení jednotlivých fází Zrychlení I-fáze: zrychlení spolupráce s hlavní pamětí vytvořením stupňů a paralelismů ve fázi čtení instrukce a její přípravy na zpracování Zrychlení E-fáze: rozdělení zpracování instrukce do nezávislých stupňů zavedením predikčních mechanismů VJJ 30
snímek 31 Procesory s proudovým zpracováním Podmínky proudového zpracování: systém opakovaně provádí základní funkci základní funkce je dělitelná do nezávislých kroků složitost jednotlivých kroků je přibližně stejná VJJ 31 snímek 32 Gantovy diagramy (1) (1) (2) (3) (4) (5) t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 Zpracování dvou instrukcí bez překrytí VJJ 32 snímek 33 (1) Gantovy diagramy (2) (2) (3) (4) (4) t0 t1 t2 t3 t4 t5 Překrývání instrukcí při zpracování n. d A = n + d VJJ 33
snímek 34 Čtení instrukce Zpracování instrukce I-fáze Analýza instrukce Kalkulace adres operandů Paměť VJJ 34 Čtení operandů E-fáze Provedení instrukce snímek 35 Příklad závislostí při zpracování Sčítání dvou čísel v pohyblivé řádové čárce Konflikt zdrojů (R1) Bubliny (R2) R2 = R0 + R1 R2 = R0 + R1 R4 = R3 + R1 R4 = R2 + R1!!! Závislost řízení!!! VJJ 35 snímek 36 Vektorové procesory Procesor zpracuje celý vektor jedinou instrukcí. Délka vektoru je uložena ve zvláštním registru. DO 10 I=1,N A(I) = B(I)+C(I) CONTINUE Linka proudového zpracování dat Vektorizující kompilátor VJJ 36
snímek 37 Vektorové instrukce pro stejný počet operací se dekóduje méně instrukcí lince proudového zpracování je předloženo předem známé množství dat, tedy i dodávka dat pro linku může být plynulá rychlost zpracování je silně závislá na paměťovém systému VJJ 37 snímek 38 Typy vektorových procesorů - podle přístupu k operandům - paměť-paměť - operandy jsou vyzdviženy z paměti, předány do funkční jednotky a opět ukládány do paměti registr-registr - operandy jsou nejdříve uloženy do sady vektorových registrů odkud jsou vybírány a kam jsou ukládány výsledky (startovací čas) VJJ 38 snímek 39 V0 V1 V2 V3 V4 Řetězení vektorů V2 = V0 + V1 V4 = V2 + V3 V2 V0 * V1 V4 V2 * V3 Lze snadno realizovat v organizaci registr-registr VJJ 39 *
snímek 40 Superskalární procesory Skalární procesory, které však mohou vykonávat více než jednu instrukci v každém cyklu jednotka pro vyzvednutí instrukcí, která akceptuje více než jednu instrukci v daném časovém okamžiku dekódovací logika schopná rozhodnout, zda-li vyzdvižené instrukce jsou vzájemně nezávislé a je možno je provádět současně dostatečný počet exekučních jednotek VJJ 40 snímek 41 Superskalární stroj nevyžaduje kompilátor, který bude vektorizovat program kompilátor pro superskalární procesor musí správně alokovat zdroje a rozvrhovat operace je flexibilnější a snadno aplikovatelný ve větší šíři aplikací než vektorové zpracování VJJ 41 snímek 42 Přerovnání instrukcí (1) Stroj má řešit program za těchto podmínek: program obsahuje dvě aritmetické instrukce stroj používá proudové zpracování a metodu LOAD/STORE: instrukce jsou pomocí operace LOAD vkládány do registrů zápis výsledků zpět do paměti je prováděn zvláštní instrukcí STORE VJJ 42
snímek 43 Přerovnání instrukcí (2) Procesor pracuje s proudovým zpracováním instrukcí a používá sedm stupňů: F vyzdvižení instrukce z paměti D dekódování instrukce I rezervace zdrojů - registrů E exekutivní část 1 E exekutivní část 2 E exekutivní část 3 W uložení výsledků operace do paměti. VJJ 43 snímek 44 Přerovnání instrukcí (3) 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 R1=Mem(Y) F D I E E E W.. R2=Mem(Z) F D I E E E W.. R3=R1+R2 F D - - - I E E E W. Mem(X)=R3 F - - - D - - - I E E E W. R4=Mem(B) F - - - D I E E E W. R5=Mem(C) F D I E E E W. R6=R4*R5 F D - - - I E E E W Mem(A)=R6 F - - - D - - - I E E E W --- Instrukce před uspořádáním --- VJJ 44 snímek 45 Přerovnání instrukcí (4) 1 1 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 R1=Mem(Y) F D I E E E W. R2=Mem(Z) F D I E E E W. R4=Mem(B) F D I E E E W. R5=Mem(C) F D I E E E W. R3=R1+R2 F D - I E E E W R6=R4*R5 F D - - I E E E W Mem(X)=R3 F - - D - I E E E W Mem(A)=R6 F - - D - - I E E E W --- Instrukce po uspořádání --- VJJ 45
snímek 46 Optimalizace instrukcí skoku Největší problém při proudovém zpracování instrukcí jsou nekonzistence v programu - skoky Optimalizace instrukcí skoku Predikce skoku Zpoždění instrukce skoku VJJ 46