POT
Procesor z pohledu programátora
Procesor z pohledu programátora
1
K.D. - přednášky POT
POT
Procesor z pohledu programátora
Terminologie • Procesor (CPU) = řadič + ALU . • Mikroprocesor = procesor vyrobený monolitickou technologií na 1 čipu. • Mikropočítač = počítač postavený na bázi mikroprocesoru. • Mikrokontrolér = mikropočítač se speciálními periferiemi vyrobený na 1 čipu.
K.D. - přednášky POT
2
POT
Procesor z pohledu programátora
„Programátorsky zajímavé“ vlastnosti procesoru
• ISA (Instruction Set Architecture): – Registrová sada procesoru – Instrukční soubor – Adresní prostory (paměti a IO)
3
K.D. - přednášky POT
POT
Procesor z pohledu programátora
Poznámka: CPU a paměť 0 1
Adresa 2
Adresní prostor paměti
...
3
Data
Data
ALU Kód programu
Instrukce
Řadič Řídicí registry
Instrukce
Paměť K.D. - přednášky POT
Univerzální registry
CPU 4
POT
Procesor z pohledu programátora
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
7 6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
A+B Registry
OV CY Overflow Carry bit
7 6 5 4 3 2 1 0 Součet A + B
5
K.D. - přednášky POT
POT
Procesor z pohledu programátora
Poznámka: Registr • Technická realizace: Registr je sestaven z klopných obvodů.
Zápis dat do registru
n
2
1
0
"Zápis"
Čtení dat z registru Klopné obvody
K.D. - přednášky POT
6
POT
Procesor z pohledu programátora
Registrová sada procesoru (Intel IA-32) 31
15
0
AH BH CH DH
EAX EBX ECX EDX
• • • • • • •
AL BL CL DL
AX BX CX DX
SP BP SI DI
0
Řídicí registry CPU
GDTR IDTR
63
31
0
0
TR LDTR 79 47
0
0
FPU CR FPU SR FPU Tag
FPU I P FPU DP FPU Op 9
MMX
SIMD
MXCSR CR4 CR3 CR2 CR1 CR0
0
FP R 0-7 15
DS CS SS ES FS GS
Flags
47
Segment ování a ochr ana pam ět i
FPU
IP
4 ks univerzálních registrů 32 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ů 80 bitů 8 ks SIMD registrů 128 bitů 8 ks MMX registrů 64 bitů
63
0 0
Ladicí re gistry 31
0
MM0-7 12 8
DR7 DR6 DR5 DR4 DR3 DR2 DR1 DR0 DCtlMSR
0
X MM0-7 MXCSR 63
0
APIC
APIC_B ASE_MSR ICR APIC ID LDR DFR TP R EOI SVR
EIP EFlags
127
0
TMR IRR ISR Machine Specific Regist ers 63
0
MSR
7
K.D. - přednášky POT
POT
Procesor z pohledu programátora
Registrová sada procesoru (Alpha) • • • • • •
32 ks 64 bitových interger registrů, 32 ks 64 bitových float registrů, cca 50 řídicích registrů. Nemá příznakový registr. Všechny operace jsou typu registr ↔ registr. S pamětí pracují pouze instrukce Load a Store.
63
0 PC
63
0 R31
. ..
R2 R0R1 63
0
..
F31
.
F2 F0F1
cca 50 řídicích registrů
K.D. - přednášky POT
8
POT
Procesor z pohledu programátora
Registrová sada procesoru H8S ERx
31 15
• • • • • • • •
RxL, RxH – 8bitové registry Rx, Ex – 16bitové registry ERx – 32bitové registry EXR – řídicí registr CCR – příznakový registr PC – programový čítač (24 bitů) MAC – Multiply Accumulate ER7 slouží implicitně jako SP
Ex
0 Rx
0 15
0
7 RxH 0 7 RxL 0 E0 E1
R0H R1H
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
E7
R7H
R7L
ER0 ER1
R0L R1L
ER7
7 6 5 4 3 2 1 0 T
I2 I1 I0
EXR
7 6 5 4 3 2 1 0 I UI H U N Z V C 23
CCR
0 PC
63
42 41 32 MACH
MAC
MACL 31
K.D. - přednášky POT
POT
0
9
Procesor z pohledu programátora
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í.
K.D. - přednášky POT
10
POT
Procesor z pohledu programátora
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.
000400 000401 000402 000403 000404
R0H R1H
R0L R1L
...
25 3E
Adresa
Datová paměť
Registry
11
K.D. - přednášky POT
POT
Procesor z pohledu programátora
Poznámka: Instrukce • Zjednodušeně: Zdroj dat
MOV.B
Kód instrukce
Cíl dat
@0401,R0L
Operandy
R0L ← @0401
K.D. - přednášky POT
Zdroj dat
ADD.B
Kód instrukce
Cíl dat
R0L,R1L
Operandy
R1L ← R0L + R1L
12
POT
Procesor z pohledu programátora
...
Jednoduchý program
3E
25
3E
25
3E
63
...
...
@0401,R0L @0402,R0H R0H,R0L R0L,@0403
25 3E
000400 000401 000402 000403 000404
25 3E
...
...
MOV.B MOV.B ADD.B MOV.B
000400 000401 000402 000403 000404
25 3E 63
...
000400 000401 000402 000403 000404
13
K.D. - přednášky POT
POT
Procesor z pohledu programátora
Registr PC Paměť 000000
(Programový čítač) Při provádění určité instrukce obsahuje adresu následující instrukce. V H8S je PC dlouhý 24 bitů ⇒ může adresovat paměť v rozsahu 224 = 16 M bytů.
...
PC = Program Counter 002400 002401 002402 002403 002404 002405 002406 002407 002408
PC 002404
Právě prováděná instrukce Instrukce která se bude provádět jako následující
Funkce PC K.D. - přednášky POT
14
POT
Procesor z pohledu programátora
Registr CCR • • •
Obsahuje příznakové bity (flag) Nastavuje se podle výsledku provedené operace (kromě I) Použití: ke větvení programu
Příznakové bity u H8S: C V Z N H I U, UI
Carry Overflow Zero Negative Half Carry Interrupt Enable Nevyužité
7 6 5 4 3 2 1 0 I UI H U N Z V C
CCR
15
K.D. - přednášky POT
POT
Procesor z pohledu programátora
Větvení programu podle příznaků (1) • • •
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).
K.D. - přednášky POT
16
POT
Procesor z pohledu programátora
Větvení programu podle příznaků (2) Příklad: Výpočet absolutní hodnoty ze součtu dvou čísel.
Sečtení čísel
+
Výsledek >= 0
Výsledek = - Výsledek
17
K.D. - přednášky POT
POT
Procesor z pohledu programátora
Větvení programu podle příznaků (3) Příklad: Výpočet absolutní hodnoty ze součtu dvou čísel. MOV.B MOV.B ADD.B BPL NEG.B LAB1: MOV.B
@0401,R0L @0402,R0H R0H,R0L LAB1 R0L R0L,@0403
; ; ; ; ; ;
1. operand do R0L 2. operand do R1L nastaví příznaky skok při N == 0 dvojkový doplněk uložení výsledku
Poznámka: LAB1 je návěští, které označuje instrukci MOV.B R0L,@0403.
K.D. - přednášky POT
18
POT
Procesor z pohledu programátora
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ý.
K.D. - přednášky POT
19