České vysoké učení technické Fakulta elektrotechnická
Struktura a architektura počítačů
Ver 1.20
Alfanumerické kódy
Řadič procesoru
CISC, RISC
Pipelining
J. Zděnek 2014
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 2
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 3
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 4
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 5
EBCDIC (DKOI)
• Osmibitový kód (IBM)
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 6
EBCDIC (DKOI)
• Osmibitový kód (IBM)
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 7
ASCII
• Sedmibitový kód - American Standard Code for Information Interchange
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 8
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 9
Ř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 10
Instrukční cyklus (typické členění)
INSTRUCTION FETCH
INSTRUCTION DECODE
OPERANDFETCH
EXECUTEOPERATION
RESULTSTORE
INTERRUPTREQUEST?
INSTRUCTION CYCLE
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 11
Ř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 12
Řadič procesoru (CPU Controller)
REGISTERS
CPU CONTROLLER(Řadič procesoru)
INSTRUCTION REGISTER
PROGRAM COUNTER
STACK POINTER
STATUS
ALU
MAINMEMORY
INPUT/OUTPUTCHANNELS
CLK INTRESET
DATA BUS
CONTROL BUS
ADDRESS BUS
CENTRAL PROCESSING UNITCPU
SP
PC
IR
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 13
Mikroprogramový řadič
CONTROLMEMORY
(microinstructions)FIRMWARE
INSTRUCTION REGISTER
CLK
µPC
IR
MU
LTIP
LEX
ER
ALU/STATUS
µPR
OG
RA
M C
OU
NTE
R
MUX µCODE MEMORY
CPU CONTROL
MICROPROGRAMMED CPU CONTROLLER
ADDR
FSA - Moore
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 14
Hodnocení výkonu procesoru
• Doba provádění programu:
• Kde: • – doba provádění programu (Time per Program)
• – počet instrukcí programu (Instructions per Program)
• – počet taktů na instrukci (Cycles per Instruction)(též značení CPI)
• – délka taktu (závisí na periodě hodin)(Time per Cycle)
• Zrychlení programu – zmenšit některé členy , , bez zvětšení
ostatních
TcCiIpTp ..=
Ip
Tp
Ci
Tc
Ip Ci Tc
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 15
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 16
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
INST-1 FETCH INST-1 EXEC
INST-2 FETCH INST-2 EXEC
INST-3 FETCH INST-3 EXEC
Ci = 1 Ci = 1
Ci = 2
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 17
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
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 = 4
Ci = 1 Ci = 1
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 18
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 19
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 20
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 21
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 22
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 23
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 24
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 25
miniRISC pic10
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 – 33 instrukcí, 1-2 takty
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 28
miniRISC pic10 - pipeline depth = 2
Narušení překrytí - větvení programu
A7B14SAP Struktura a architektura počítačů 12 - ASCII, řadič, CISC, RISC 29
České vysoké učení technické Fakulta elektrotechnická
Struktura a architektura počítačů
Alfanumerické kódy Řadič procesoru
CISC, RISC Pipelining
KONEC