# 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