diff --git a/KIV POT/01. Registry.md b/KIV POT/01. Registry.md new file mode 100644 index 0000000..8133adf --- /dev/null +++ b/KIV POT/01. Registry.md @@ -0,0 +1,111 @@ +# Registry + +**Terminologie** +- **procesor** (CPU) = řadič + ALU +- **mikroprocesor** = procesor vyrobený monolitickou technologií na 1 čipu + - mikroprocesor není schopen samostatně fungovat – k činnosti potřebuje paměť, periferní obvody, ... +- **mikrokontrolér** = mikropočítač s pamětí a se speciálními periferiemi a dalšími obvody vyrobený na 1 čipu + +**Registr** +- slouží v počítači jako dočasná paměť pro uložení určité hodnoty +- sestaven z klopných obvodů (v každém obvodu 1 bit) + +### Architektura počítače + +- dvě základní koncepce: + +**Von Neumannova** (Princetonská) **architektura** +- společný adresní prostor (paměť) pro data i kód programu +- výhody + - poměr velikostí kód/data lze měnit podle okamžité potřeby + - procesor má přístup do kódové paměti i pro zápis +- nevýhody + - procesor nemůže současně číst kód i data (omezení rychlosti) + +**Hardwardská architektura** +- data a kód programu jsou v oddělených adresních prostorech +- výhody + - možnost číst současně data i kód programu (vyšší rychlost) + - šířka slova kódové paměti může být optimalizovaná +- nevýhody + - poměr velikostí datové a kódové paměti je pro daný případ pevný + - někdy komplikovanější zavádění a ladění programu + +**Kombinace obou architektur** +- často se používá Von Neumannova architektura se samostatnou datovou a kódovou cache + +### Programátorsky zajímavé vlastnosti procesoru + +- základní uspořádání (architekturu) procesoru popisuje tzv. ISA (Instruction Set Architecture) + - registrová sada procesoru + - instrukční soubor + - adresní prostory (paměti a IO) +- rozlišují se 2 základní typy + +**Akumulátorově orientovaná ISA** +- instrukční soubor orientován na použití akumulátoru + - akumulátor (ACC) - speciální registr pro uložení operandů + - typická operace: + - $\text{ACC} \leftarrow \text{ACC} \times \text{operand}$ + - `operand` může být v univerzálních registrech nebo v paměti + - obvykle malý počet univerzálních registrů ++ registrová sada procesoru (Intel IA-32) + - 4 ks. univerzálních registrů 32 bitů (EAX = akumulátor) + - 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ů + +**Registrově orientovaná ISA** +- instrukční soubor orientován na použití registrů +- typická operace: + - $\text{Registr3} \leftarrow \text{Registr1} \times \text{Registr2}$ + - nelze přímo použít operandy v paměti + - je nutno je prvně uložit do registrů +- obvykle velký počet registrů (typicky 16 - 32) ++ registrová sada procesoru (V850) + - 32 ks. 32bitových registrů pro operandy interger (r0 ... r31) + - všechny operace jsou typu $\text{registr} \leftrightarrow \text{registr}$ + - s pamětí pracují pouze instrukce Load a Store + +- registrová sada procesoru (MSP430) + - 16 ks. 16/20bitových registrů pro operandy interger (R0 ... R15) + - některé registry mají funkci + - PC (Program Counter), SP (Stack Pointer), SR (Status Register) ++ registrová sada procesoru H8S + + **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** + +### Použití registrů + +**Registr PC** +- Program Counter +- při provádění určité instrukce obsahuje adresu následující instrukce +- mění se při čtení instrukcí z paměti nebo při provedením skoku + +**Registr CCR** +- Condition Code Register +- obsahuje soubor příznaků pro větvení programu +- nastavuje se automaticky podle výsledku operace +- používá se k větvení programu + +**Registr SP** +- Stack Pointer +- ukazatel na vrchol zásobníku + +**Registr EXR** +- Extended Control Register +- pro řízení přerušení a trasování + +**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