Přidání poznámek z POT k provádění instrukcí

This commit is contained in:
Filip Znachor 2023-06-10 17:07:23 +02:00
parent f444126ade
commit a04f606974

View file

@ -0,0 +1,58 @@
# Provádění instrukcí procesorem
**Základní model**
- kód programu a data jsou uložena ve vnější paměti
- procesor musí nejprve přečíst instrukci z paměti
- při provádění instrukce čte nebo zapisuje data do/z paměti
**Fáze instrukčního cyklu**
- instrukční cyklus = doba zpracování jedné instrukce
- 4 základní fáze
- **fetch** - čtení kódu instrukce z paměti
- **decode** - dekódování instrukce
- **execute/memory** - provedení instrukce, čtení nebo zápis z/do paměti
- **write back** - zpětný zápis výsledku do registrů procesoru
- každou fázi instrukce vykonává jiná část CPU
**Proudové zpracování instrukcí**
- při sekvenčním zpracování je využita vždy jen část CPU
- proudové zpracování umožňuje zpracování více instrukcí v různých fázích
- požadavky
- stejná délka zakódovaných instrukcí
- stejná délka jednotlivých fází
- stejná délka provádění instrukcí
**CISC vs. RISC**
- **CISC**
- složité instrukce (rozsáhlý instrukční soubor)
- různá délka instrukcí
- proměnná délka instrukčního cyklu
- **výhoda**: účinné instrukce (program obsahuje malé množství instrukcí)
- **nevýhoda**: obtížné proudové zpracování (instrukce se provádí pomalu)
- **RISC**
- jednoduché instrukce (omezený instrukční soubor)
- instrukce jsou stejné délky
- konstantní délka instrukčního cyklu
- **nevýhoda**: málo účinné instrukce (program obsahuje velké množství instrukcí)
- **výhoda**: snadné proudové zpracování (instrukce se provádí rychle)
### Zpracování instrukcí v H8S
- čtení kódu instrukce
- postupně po 16 bitech (každé čtení = 1 MC, Machine Cycle)
- doba 1 MC závisí i na šířce datové sběrnice (3 nebo 6 taktů hodin)
- dekódování, provedení a zpětný zápis
- vyžaduje různý počet (1-19) MC
- každý MC trvá 1 takt hodin nebo 3/6 taktů při práci s pamětí
- současně se provádí čtení další instrukce (MC poté trvá více taktů hodin)
**Upravené počítání strojových cyklů**
- upravené počítání (podle Renesas)
- nepočítají se MC provedené současně s předchozí instrukcí
### Závěr
- známe-li binární kód dané instrukce, můžeme určit:
- počet MC potřebných pro přečtení (fetch) instrukce
- počet čtení/zápisů do paměti provedených při vykonávání instrukce
- pro určení délky instrukčního cyklu je nutné znát počet MC potřebných k dekódování a provedení instrukce