Procesor z pohledu programátora Terminologie Procesor (CPU) = řadič + ALU. Mikroprocesor = procesor vyrobený monolitickou technologií na čipu. Mikropočítač = počítač postavený na bázi mikroprocesoru. Mikrokontrolér = mikropočítač se speciálními periferiemi vyrobený na čipu.
Programátorsky zajímavé vlastnosti procesoru ISA (Instruction Set Architecture): Registrová sada procesoru Instrukční soubor Adresní prostory (paměti a IO) 3 Poznámka: CPU a paměť Adresa 3 Adresní prostor paměti Data Kód programu Data Instrukce Univerzální registry ALU Řadič Instrukce Řídicí registry Paměť CPU 4
Poznámka: Registr Registr slouží v počítači jako dočasná paměť pro uložení určité hodnoty (operandy pro aritmetické operace, kód instrukce, ). Operand A Operand B 6 5 4 3 6 5 4 3 A + B Registry OV CY 6 5 4 3 Overflow Carry bit Součet A + B 5 Poznámka: Registr Technická realizace: Registr je sestaven z klopných obvodů. Zápis dat do registru n "Zápis" Čtení dat z registru Klopné obvody 6
Registrová sada procesoru (Intel IA-3) EAX EBX ECX EDX 3 5 AH BH CH DH SP BP SI DI DS CS SS ES FS GS IP Flags AL BL CL DL AX BX CX DX EIP EFlags 4 ks univerzálních registrů 3 bitů 4 ks bázových a indexových registrů 6 ks segmentových registrů IP (PC) a příznakový registr 8 ks FP registrů 8 bitů 8 ks SIMD registrů 8 bitů 8 ks MMX registrů 64 bitů Segmentování a ochrana paměti FPU MMX SIMD APIC 9 5 8 4 FPU CR FPU SR FPU Tag 4 GDTR IDTR TR LDTR 9 MM- X MM- MXCSR APIC_B ASE_MSR ICR APIC ID LDR DFR TPR EOI SVR TMR IRR ISR FP R - FPU IP FPU DP FPU Op Řídicí registry CPU 3 Ladicí registry 3 MXCSR CR4 CR3 CR CR CR DR DR6 DR5 DR4 DR3 DR DR DR DCtlMSR Machine Specific Registers MSR Registrová sada procesoru (Alpha) 3 ks 64 bitových interger registrů, 3 ks 64 bitových float registrů, cca 5 řídicích registrů. Nemá příznakový registr. Všechny operace jsou typu registr registr. S pamětí pracují pouze instrukce Load a Store. R RR F FF PC R3 F3 cca 5 řídicích registrů 8
Registrová sada procesoru H8S RxL, RxH 8bitové registry Rx, Ex 6bitové registry ERx 3bitové registry EXR řídicí registr CCR příznakový registr PC programový čítač (4 bitů) MAC Multiply Accumulate ER slouží implicitně jako SP 3 5 Ex E E E 3 5 T ERx RxH 6 6 I UI RH RH RH 5 5 H 4 4 U Rx 3 3 RL RL RxL RL I I I N Z V C ER ER ER EXR CCR PC 3 MACL 4 4 MACH 3 MAC 9 PC, SP, CCR, EXR PC = Program Counter Při provádění určité instrukce obsahuje adresu následující instrukce. SP = Stack Pointer Ukazatel na vrchol zásobníku. CCR = Condition Code Register Obsahuje soubor příznaků pro větvení programu. EXR = Extended Control Register Pro řízení přerušení a trasování.
Použití registrů Jednoduchý program: sečtení dvou čísel v paměti, uložení výsledku do paměti H8S neumí pracovat s operandy v paměti operandy se musí uložit do registrů, výsledek operace sčítání je v registru musí se uložit do paměti. 4 4 4 43 44 5 RH RH RL RL Adresa Datová paměť Registry Poznámka: Instrukce Zjednodušeně: Zdroj dat Cíl dat Zdroj dat Cíl dat MOV.B @4,RL ADD.B RL,RL Kód instrukce Operandy Kód instrukce Operandy RL @4 RL RL + RL
Jednoduchý program MOV.B MOV.B ADD.B MOV.B @4,RL @4,RH RH,RL RL,@43 4 4 4 43 44 4 4 4 43 44 5 5 5 5 4 4 4 43 44 5 3 Registr PC PC = Program Counter (Programový čítač) Paměť Při provádění určité instrukce obsahuje adresu následující instrukce. V H8S je PC dlouhý 4 bitů může adresovat paměť v rozsahu 4 = 6 M bytů. 4 4 4 43 44 45 46 4 48 PC 44 Právě prováděná instrukce Instrukce která se bude provádět jako následující Funkce PC 4
Obsahuje příznakové bity (flag) Nastavuje se podle výsledku provedené operace (kromě I) Použití: ke větvení programu Registr CCR Příznakové bity u H8S: 6 5 4 3 C Carry I UI H U N Z V C CCR V Overflow Z Zero N Negative H Half Carry I Interrupt Enable U, UI Nevyužité 5 Větvení programu podle příznaků () K větvení programu slouží instrukce Bcc (Branch Conditionally). Testuje jeden nebo několik příznakových bitů. Podle výsledku testu buď provede nebo neprovede skok (přičtení určité hodnoty k PC). 6
Větvení programu podle příznaků () Příklad: Výpočet absolutní hodnoty ze součtu dvou čísel. Sečtení čísel + Výsledek > = - Výsledek = - Výsledek Příklad: Větvení programu podle příznaků (3) Výpočet absolutní hodnoty ze součtu dvou čísel. MOV.B @4,RL ;. operand do RL MOV.B @4,RH ;. operand do RL ADD.B RH,RL ; nastaví příznaky BPL LAB ; skok při N == NEG.B RL ; dvojkový doplněk LAB: MOV.B RL,@43 ; uložení výsledku Poznámka: LAB je návěští, které označuje instrukci MOV.B RL,@43. 8
Použití dalších registrů Také registry SP a EXR mají speciální použití. SP je pro nás důležitý, ale nejprve probereme obecné možnosti adresování dat a instrukcí v paměti a kódování instrukcí. EXR má využití při obsluze přerušení a při ladění programu pro nás není důležitý. 9