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 MAIN MEMORY
PROGRAM COUNTER DATA BUS
IR
CONTROL BUS
INSTRUCTION REGISTER
REGISTERS
INPUT/OUTPUT CHANNELS
CPU CONTROLLER (Řadič procesoru)
ALU
STATUS
RESET
CLK
INT
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC
12
Mikroprogramový řadič IR INSTRUCTION REGISTER
MUX
µPC
MULTIPLEXER
µPROGRAM COUNTER
MICROPROGRAMMED CPU CONTROLLER µCODE MEMORY
CPU CONTROL ADDR
CONTROL MEMORY (microinstructions) FIRMWARE
CLK
ALU/STATUS
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC
FSA - Moore
13
Hodnocení výkonu procesoru •
Doba provádění programu:
Tp = Ip . Ci . Tc •
•
Kde: • Tp – 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)
Zrychlení programu – zmenšit některé členy ostatních
Ip, Ci , Tc
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC
bez zvětšení
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
Ci = 1
INST-3 EXEC
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
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC
Ci = 1
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