diff --git a/KIV POT/06. Provádění instrukcí.md b/KIV POT/06. Provádění instrukcí.md new file mode 100644 index 0000000..c01e662 --- /dev/null +++ b/KIV POT/06. Provádění instrukcí.md @@ -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 \ No newline at end of file