Instrukční cyklus - Instruction cycle

Instrukční cyklus (také známý jako fetch-decode-spustit cyklus , nebo jednoduše načíst pro spouštění cyklu ) je cyklus, že centrální procesorová jednotka (CPU), vyplývá z boot-up , dokud je počítač vypnut, aby se pokyny procesní . Skládá se ze tří hlavních fází: fáze načítání, fáze dekódování a fáze spouštění.

Toto je jednoduchý diagram ilustrující jednotlivé fáze cyklu načítání, dekódování a spouštění.

V jednodušších CPU je instrukční cyklus prováděn postupně, přičemž každá instrukce je zpracována před spuštěním další. Ve většině moderních procesorů se instrukční cykly místo toho provádějí souběžně a často paralelně prostřednictvím kanálu instrukcí : další instrukce se začne zpracovávat před dokončením předchozí instrukce, což je možné, protože cyklus je rozdělen na samostatné kroky.

Role komponent

Programový čítač (PC) je speciální registr, který má paměťovou adresu další instrukce, které mají být provedeny. Během fáze načítání je adresa uložená v PC zkopírována do registru adres paměti (MAR) a poté je počítač zvýšen, aby "ukázal" na adresu paměti další instrukce, která má být provedena. CPU poté vezme instrukci na adresu paměti popsanou MAR a zkopíruje ji do registru dat paměti (MDR) . MDR také funguje jako obousměrný registr, který uchovává data načtená z paměti nebo data čekající na uložení do paměti (proto se také nazývá registr vyrovnávací paměti (MBR)). Nakonec je instrukce v MDR zkopírována do aktuálního registru instrukcí (CIR), který funguje jako dočasné přidržovací místo pro instrukci, která byla právě načtena z paměti.

Během fáze dekódování bude řídicí jednotka (CU) dekódovat instrukci v CIR. CU pak posílá signály dalším komponentám v CPU, jako je aritmetická logická jednotka (ALU) a jednotka s plovoucí desetinnou čárkou (FPU) . ALU provádí aritmetické operace, jako je sčítání a odčítání a také násobení opakovaným sčítáním a dělení pomocí opakovaného odčítání. Provádí také logické operace, jako jsou AND , OR , NOT a binární posuny . FPU je vyhrazena pro provádění operací s plovoucí desetinnou čárkou .

Souhrn fází

CPU každého počítače může mít různé cykly na základě různých sad instrukcí, ale bude podobné následujícímu cyklu:

  1. Fetch Fáze : Další instrukce je načtena z adresy paměti, která je aktuálně uložena v programovém čítači a uložena do registru instrukcí. Na konci operace načítání PC ukazuje na další instrukci, která bude načtena v dalším cyklu.
  2. Fáze dekódování : V této fázi dekodér interpretuje kódovanou instrukci uvedenou v registru instrukcí.
    • Přečtěte si efektivní adresu : V případě instrukce paměti (přímé nebo nepřímé) bude fáze provádění během dalšího hodinového impulsu. Pokud má instrukce nepřímou adresu , je efektivní adresa načtena z hlavní paměti a veškerá požadovaná data jsou načtena z hlavní paměti ke zpracování a poté umístěna do datových registrů (hodinový impuls: T 3 ). Pokud je instrukce přímá, nic se během tohoto hodinového impulsu nedělá. Pokud se jedná o I/O instrukci nebo instrukci registru, operace se provádí během hodinového impulsu.
  3. Fáze provedení : Řídicí jednotka CPU předává dekódované informace jako posloupnost řídicích signálů příslušným funkčním jednotkám CPU k provádění akcí požadovaných instrukcí, jako je čtení hodnot z registrů, jejich předávání ALU k provedení matematické nebo logické funkce a zápis výsledku zpět do registru. Pokud je zapojena ALU, odešle podmínkový signál zpět do CU. Výsledek generovaný operací je uložen v hlavní paměti nebo odeslán na výstupní zařízení. Na základě zpětné vazby od ALU může být počítač aktualizován na jinou adresu, ze které bude načtena další instrukce.
  4. Opakujte cyklus

Navíc na většině procesorů může dojít k přerušení . To způsobí, že CPU přejde na rutinu služby přerušení, provede to a pak se vrátí. V některých případech může být instrukce přerušena uprostřed, instrukce nebude mít žádný účinek, ale bude znovu provedena po návratu z přerušení.

Zahájení

Cyklus začíná, jakmile je do systému přivedeno napájení, s počáteční hodnotou PC, která je předdefinována architekturou systému (například u procesorů Intel IA-32 je předdefinovaná hodnota PC 0xfffffff0). Tato adresa obvykle ukazuje na sadu pokynů v paměti jen pro čtení (ROM), která začíná proces načítání (nebo zavádění ) operačního systému .

Fetch fáze

Krok načtení je pro každou instrukci stejný:

  1. CPU odešle obsah PC na MAR a pošle příkaz čtení na řídicí sběrnici
  2. V reakci na příkaz čtení (s adresou rovnou PC) paměť vrátí data uložená na paměťovém místě indikovaném PC na datové sběrnici
  3. CPU zkopíruje data z datové sběrnice do svého MDR (také známého jako MBR; viz část Role komponent výše)
  4. O zlomek sekundy později CPU zkopíruje data z MDR do registru instrukcí pro dekódování instrukcí
  5. Počítač se zvýší tak, aby ukazoval na další instrukci. Tento krok připraví CPU na další cyklus.

Řídicí jednotka načte adresu instrukce z paměťové jednotky .

Fáze dekódování

Proces dekódování umožňuje CPU určit, jakou instrukci je třeba provést, aby CPU mohl určit, kolik operandů potřebuje k načtení, aby mohl instrukci provést. Operační kód načtený z paměti je dekódován pro další kroky a přesunut do příslušných registrů. Dekódování se obvykle provádí binární dekodéry v CPU ‚s Control Unit .

Čtení efektivní adresy

Tento krok vyhodnotí, jaký typ operace se má provést. Pokud se jedná o operaci paměti, počítač zkontroluje, zda se jedná o přímou nebo nepřímou operaci paměti:

  • Přímá paměťová operace - nic se nedělá.
  • Nepřímá paměťová operace - efektivní adresa je načtena z paměti.

Pokud se jedná o instrukci I/O nebo registr, počítač zkontroluje jeho typ a provede instrukci.

Provést fázi

CPU pošle dekódovanou instrukci jako sadu řídicích signálů do odpovídajících počítačových komponent. Pokud instrukce zahrnuje aritmetiku nebo logiku, použije se ALU. Toto je jediná fáze instrukčního cyklu, která je užitečná z pohledu koncového uživatele. Všechno ostatní je nutné k provedení kroku provedení.

Viz také

Reference