# 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