Struktura a architektura počítačů Alfanumerické kódy Řadič procesoru CISC, RISC Pipelining České vysoké učení technické Fakulta elektrotechnická Ver 1.20 J. Zděnek 2014
Alfanumerické kódy Kódování zobrazitelných a řídicích (nezobrazitelných) znaků Kódů celá řada 5bitových až 16bitových (+další rozšíření, viz Unicode) Co je třeba kódovat? 2 x 26 písmen latinské abecedy (velká a malá písmena) 10 číslic, znaky čárka, tečka, plus, minus, mezera,...,řídicí znaky Používané kódové sady: 5bitový kód CCITT 2 (málo bitů, přepínání dvou sad speciálními znaky) 7bitový kód ASCII (ASCII-7, USASCII, CCITT 5, ISO-7, KOI-7) American Standard Code for Information Interchange) 8bitový kód ASCII-8 (ISO-8, KOI-8) 00h 7Fh standardní ASCII (ASCII-7) 80h FFh rozšíření o znaky národní abecedy A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 2
Alfanumerické kódy Používané sady pro znaky české abecedy: 1250 Windows 1250 852 - IBM page 852 ISO - ISO 8859-2 KOI - KOI-8cs Kam - Kód Kamenických 8bitový kód EBCDIC (DKOI) Extended Binary Coded Decima Interchange Code (IBM) 16bitový kód - Unicode 0000h-FFFFh Basic Multilingual Plane (BMP) Unicode 2.0 (1996) - Další rozšíření až do 10FFFFh Celkem k dispozici 1,114,112 kódových pozic Možnost kódování i znaků historických jazyků a znaků nebo grafických symbolů málo používaných A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 3
CCITT 2 Pětibitový alfanumerický (znakový) kód Horní a dolní část tabulky se volí speciálními znaky LTRS, FIGS A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 4
EBCDIC (DKOI) Osmibitový kód (IBM) A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 5
EBCDIC (DKOI) Osmibitový kód (IBM) A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 6
ASCII Sedmibitový kód - American Standard Code for Information Interchange A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 7
Windows 1250 Horní polovina (80h-FFh) kódové stránky Windows 1250 Dolní polovina (00h-7Fh) je shodná s ASCII A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 8
Řadič procesoru (CPU Controller) Sekvenční obvod (Synchronní konečný automat) Řídí činnost ostatních bloků procesoru (ALU, PC, SP, ) Řadič sám je řízen instrukcemi přečtenými z operační paměti a stavovými signály z ostatních bloků CPU a z řídicí sběrnice počítače Pracuje v instrukčních cyklech (Instruction Fetch, Instruction Execution) Pracuje v nekonečném cyklu RESET uvede řadič a ostatní bloky CPU do známého počátečního stavu Podle způsobu realizaci řadiče CPU rozlišujeme: Obvodový (hardwired) řadič Mikroprogramový řadič A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 9
Instrukční cyklus (typické členění) INSTRUCTION FETCH INSTRUCTION DECODE OPERAND FETCH EXECUTE OPERATION RESULT STORE INTERRUPT REQUEST? INSTRUCTION CYCLE A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 10
Řadič procesoru - realizace Obvodový (hardwired) řadič: Sekvenční obvod (synchronní konečný automat) Realizovaný obvodovým zapojením (klasicky hradla, klopné obvody) Návrh z vývojových diagramů popisujících provedení jednotlivých instrukcí během instrukčního cyklu Mikroprogramový řadič: Sekvenční obvod (synchronní konečný automat) ve kterém je kombinační část realizována pamětí. Tato paměť se nazývá řídicí paměť (Control Memory), paměť mikroinstrukcí (Microcode Memory) nebo paměť mikroprogramu (Microprogram Memory) Instrukce je rozdělena na jednotlivé dílčí operace mikroinstrukce, ty jsou uloženy v řídicí paměti a z ní prováděny. Soubor mikroinstrukcí pro provedení dílčí instrukce mikroprogram Soubor všech mikroprogramů firmware (mikroprogramové vybavení) Mikroprogramový řadič je (mikro)počítač uvnitř procesoru A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 11
Řadič procesoru (CPU Controller) SP STACK POINTER CENTRAL PROCESSING UNIT CPU ADDRESS BUS PC PROGRAM COUNTER MAIN MEMORY DATA BUS IR INSTRUCTION REGISTER CONTROL BUS REGISTERS CPU CONTROLLER (Řadič procesoru) ALU INPUT/OUTPUT CHANNELS STATUS RESET CLK INT A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 12
Mikroprogramový řadič IR INSTRUCTION REGISTER MUX µpc MICROPROGRAMMED CPU CONTROLLER µcode MEMORY MULTIPLEXER µprogram COUNTER ADDR CONTROL MEMORY (microinstructions) FIRMWARE CPU CONTROL CLK ALU/STATUS FSA - Moore A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 13
Doba provádění programu: Kde: Tp Hodnocení výkonu procesoru Tp = Ip. Ci. Tc doba provádění programu (Time per Program) Ip počet instrukcí programu (Instructions per Program) Ci počet taktů na instrukci (Cycles per Instruction)(též značení CPI) Tc délka taktu (závisí na periodě hodin)(time per Cycle) Ip Ci Tc Zrychlení programu zmenšit některé členy,, bez zvětšení ostatních A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 14
Pipelining (Proudové zpracování instrukcí) Pipelining - technika práce procesoru, která vede ke zmenšení členu Ci v rovnici pro hodnocení výkonu procesoru Bez proudového zpracování: Tp = prostý součet dob běhu jednotlivých instrukcí Proudové zpracování (pipelining): Princip: Jednotlivé fáze zpracování instrukce jsou realizovány různými částmi procesoru. Proto je možné zpracování zřetězit, jakmile se daná část procesoru uvolní (vykoná svou část zpracování dané instrukce) může zahájit zpracování další instrukce i v případě, že daná instrukce je ještě zpracovávána následujícími bloky procesoru. Průměrné Tp je menší. Podmínky: Nutný neustálý včasný přísun nových instrukcí do procesoru Problémy: Instrukce větvení narušují proudové zpracování. Vadí i různá délka provádění instrukcí. Nutno dodržet kauzalitu operací. A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 15
Pipelining - hloubka překrytí operací Nejmenší účinná hloubka překrytí = 2 (Pipelining Depth = 2) Př: Překrytí (časové) operací čtení instrukce (Fetch) a její vykonání (Execution) Doba vykonání instrukce - 2 takty (Ci = 2) bez zřetězení Doba vykonání instrukce 1 takt (Ci = 1) se zřetězením Ci = 2 INST-1 FETCH INST-1 EXEC INST-2 FETCH INST-2 EXEC INST-3 FETCH INST-3 EXEC Ci = 1 Ci = 1 A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 16
Pipelining - hloubka překrytí operací Typická hloubky překrytí operací u RISC procesorů 4 takty Př: Překrytí (časové) operací Fetch, Decode, Execute, Writeback (zápis výsl.) Doba vykonání instrukce - 4 takty (Ci = 4) bez zřetězení Doba vykonání instrukce 1 takt (Ci = 1) se zřetězením Ci = 4 INST-1 FETCH INST-1 DECODE INST-1 EXEC INST-1 WRITEBACK INST-2 FETCH INST-2 DECODE INST-2 EXEC INST-2 WRITEBACK INST-3 FETCH INST-3 DECODE INST-3 EXEC INST-4 FETCH INST-4 DECODE Ci = 1 Ci = 1 A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 17
Pipelining - hloubka překrytí operací Příklad procesory Intel - CISC Rok CPU Hodiny [MHz] Hloubka Pipeline Počet tranzistorů 1978 i8086 4,77 2 29k 1982 i80286 8 3 134k 1985 i80386 16 3 275k 1989 i80486 25 5 1,2M 1993 ipentium I 60 5 3,1M 1997 ipentium II 233 12 7,5M 1999 ipentium II 450 12 9,5M 2002 ipentium 4 2000 20 55M 2004 ipentium 4 3400 31 125M 2010 Core i7 3300? 781M A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 18
Dělení počítačů CISC nebo RISC Dělení počítačů do dvou základních kategorií podle typu použitého procesoru CISC Complex Instruction Set Computer počítač s rozsáhlým souborem instrukcí (nebo též počítač s úplným instrukčním souborem) Mnoho instrukcí, jednoduchých (základních) i složitých Přesun složitých operací ze software do hardware Návrh CPU kompromisem ve směru - menší kód, větší Ci (CPI) Podpora vyšších programovacích jazyků (HLL High Level Language) přenesena do hardware RISC Reduced Instruction Set Computer (Počítač s redukovaným souborem instrukcí) Menší počet základních instrukcí jen nezbytné základní operace Přesun složitých operací z hardware do software Návrh CPU kompromisem ve směru malé Ci (CPI), větší kód Podpora vyšších programovacích jazyků (HLL High Level Languge) přenesena do software (do kompilátoru) A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 19
CISC vs. RISC historický pohled 70 a 80 léta: Polovodičové operační paměti (DRAM) malá kapacita, velmi drahé Externí paměti (HDD) pomalé a též drahé Expanze software a velikosti kódu vážný problém pro další vývoj Směr dobrý počítačový kód (program) je kompaktní kód Obtížný návrh překladačů (Compiler) z vyšších jazyků (HLL) Řešení (extrémní): CISC procesory instrukce (některé) odpovídají příkazům HLL Očekávané důsledky: Snadnější konstrukce překladačů Redukce celkové ceny (software + hardware) Redukce ceny vývoje software Redukce systémového software Programy napsané v HLL budou efektivnější Výsledný kód bude kompaktnější Ladění programů bude snažší a efektivnější A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 20
CISC vs. RISC historický pohled CISC procesory: Návrh složitých instrukcí podstatně usnadnil princip mikroprogramovaného řadiče (počítač s řídicí pamětí uvnitř procesoru, složité instrukce rozloženy na posloupnost jedndušších a ty vykonány na základě mikrokódu uloženého v řídicí paměti mikrořadiče) Následek řadič je složitější a pomalejší ve srovnání s řadičem obvodově řešeným (klasickým). Vývoj polovodičové technologie ale umožnil podstatně zrychlit činnost mikroprogramovaných řadičů instrukční soubor se dále zvětšoval a tím rostla i velikost řídicí paměti s složitost mikrokódu. Program řídicí paměti se stával obtížně laditelný, rostl počet neodladěných chyb v mikrokódu. Narůstaly pochyby zda směr Složitost ze software do hardware je správný. Statistické (kvantitativní) studie (profilování ) programů existujících počítačů komplexní instrukce a složité adresovací módy jsou velmi málo využívány. 20 % instrukcí se využívá 80 % času. Vzniká myšlenka procesoru s redukovaným počtem základních instrukcí - RISC. A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 21
CISC - charakteristika Přesun složitých operací ze software do hardware Zmenšení velikosti výsledného kódu Zvětšení počtu taktů při vykonání instrukce (zvětšení Ci (CPI)) Velký a značně členěný instrukční soubor. Jednoduché a rychlé instrukce pro základní operace. Složité mnohataktové instrukce odpovídající příkazům vyšších programovacích jazyků (HLL) Podpora HLL je přesunuta do hardware Adresovací módy pro čtení-zpracování-uložení dat do paměti jednou instrukcí (memory-to-memory addressing modes) Mikroprogramovaný řadič procesoru Menší počet universálních registrů v procesoru A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 22
RISC - charakteristika Přesun složitých operací z hardware do software Zmenšení počtu taktů při vykonání instrukce (zmenšení Ci (CPI)) Zvětšení velikosti výsledného kódu Redukovaný počet pouze nezbytných základních instrukcí (32 128) Jednoduché základní instrukce, vyžadující málo taktů (1 3) Instrukce odpovídají mikroinstrukcím v procesoru CISC Malý počet formátů instrukcí (2 4) Podpora HLL je přesunuta do software (vhodný optimalizující překladač) Jednoduché adresovací módy umožňující pouze přesun operandů do registrů procesoru a uložení výsledku z registrů do paměti (LOAD/STORE access) Ostatní operace možné pouze mezi registry procesoru (register-to-register) Obvodový řadič (ne mikroprogramovaný) Velký počet registrů na procesoru (>16) Pipelining (proudové zpracování instrukcí) A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 23
Současný stav Post-RISC architecture Dnešní moderní procesory využívají výhod obou původních technik CISC i RISC. Nelze je důsledně zařadit ani do jedné kategorie. Současné procesory se mohou navenek tvářit jako CISC (např. z důvodů kompatibility hotových programů) a uvnitř využívat techniky RISC (např. řada x86 Pentium) Pokrok v polovodičové technologii dovolil ke konstrukci CPU využít velké množství tranzistorů (stovky milionů), to umožnilo: Zvětšit počet registrů na CPU Vyrovnávací paměti (Cache) na čipu téměř tak rychlé jako procesor Přidat další ALU do procesoru (Superscalar Execution) Přidat dodatečné non-risc instrukce (ale velmi rychlé) Zvětšit hloubku pipeline (počet zřetězení při překrývání operací) Přidat predikci větvení programu Přidat možnost vykonání instrukcí mimo jejich pořadí v programu (out-of-order execution) A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 24
minirisc pic10 A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 25
minirisc pic10 33 instrukcí, 1-2 takty A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 26
minirisc pic10 33 instrukcí, 1-2 takty A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 27
minirisc pic10 - pipeline depth = 2 Narušení překrytí - větvení programu A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 28
Struktura a architektura počítačů Alfanumerické kódy Řadič procesoru CISC, RISC Pipelining KONEC České vysoké učení technické Fakulta elektrotechnická A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 29