58 lines
2.5 KiB
Markdown
58 lines
2.5 KiB
Markdown
|
# 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
|