FAV-ZCU/KIV POT/06. Provádění instrukcí.md

2.5 KiB

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