Cyklus instrukcí v CPU: Jak fungují načítání, dekódování a provádění

Cyklus instrukcí v CPU
Jaký to procesor provádí příkazy programu umístěného v paměti. Věděli jste ale, že všichni dodržují stejná obecná pravidla? Všichni sledují stejný instruktážní cyklus, který je rozdělen do tří odlišných fází zvaných Fetch, Decode a Execute, které se překládají jako fetch, decode a execute. Vysvětlíme, jak tyto fáze fungují a jak jsou organizovány.

Abychom zjednodušili a učinili pojmy vysvětlené v tomto článku srozumitelnějšími, rozhodli jsme se popsat extrémně jednoduchý procesor pro aktuální časy, takže v tomto článku uvidíte vysvětlení toho, jaké cykly instrukcí jsou zobecněným způsobem, který lze použít od prvních 8bitových procesorů až po nejsložitější dnes dostupné procesory

Vizualizace instruktážního cyklu

Ciclo Instrucción Unidad Control

Procesory se od určitého hlediska neliší od spalovacího motoru, který vždy provádí nepřetržitý proces exploze paliva v různých fázích, ať už jde o dvoutaktní nebo čtyřtaktní motory. Důvodem je to, že procesory ve své nejjednodušší verzi pracují ve třech různých fázích, které jsou následující:

  • Načíst nebo zachytit: Ve kterém je instrukce zachycena z RAM a zkopírována do procesoru.
  • Dekódování nebo dekódování: Ve kterém je dříve zachycená instrukce dekódována a odeslána do prováděcích jednotek
  • Provedení: Kde je instrukce vyřešena a výsledek zapsán do interních registrů procesoru nebo na adresu paměti RAM

Tyto tři fáze jsou splněny v každém procesoru. Existuje čtvrtá fáze, kterou je Write-Back, což je, když prováděcí jednotky zapisují výsledek, ale obvykle se to počítá v rámci fáze provádění cyklu instrukcí.

První fáze instruktážního cyklu: Načíst

Proces načítání

První fáze instruktážního cyklu je zodpovědná za zachycení pokynů v RAM paměť přiřazená procesoru prostřednictvím řady jednotek a registrů, které jsou následující:

  1. Počítadlo programu nebo Počítadlo programu: Který ukazuje na další paměťovou linku, kde je umístěna další instrukce procesoru. Jeho hodnota se zvyšuje o 1 pokaždé, když je dokončen kompletní cyklus instrukce nebo když instrukce skoku změní hodnotu čítače programu.
  2. Registr adresy paměti: MAR zkopíruje obsah počítače a odešle jej do paměti RAM prostřednictvím adresovacích kolíků CPU, které jsou propojeny s adresovacími kolíky samotné RAM.
  3. Paměťový datový registr nebo paměťový datový registr : V případě, že CPU musí provést čtení paměti, MDR provede zkopírování obsahu této adresy paměti do interního registru CPU, což je dočasný předávací registr před zkopírováním jeho obsahu do instrukčního registru. MDR, na rozdíl od MAR, je připojen k datovým pinům RAM a ne k adresovacím pinům a v případě instrukce k zápisu je obsah toho, co chcete zapsat do RAM, zapsán také do MDR
  4. Registr instrukcí: Poslední částí fáze načítání je zápis instrukce do registru instrukcí, ze kterého řídicí jednotka procesoru zkopíruje její obsah pro druhou fázi cyklu instrukcí.

Tyto 4 dílčí fáze se vyskytují ve všech procesorech bez ohledu na jejich použitelnost, architekturu a binární kompatibilitu nebo to, čemu říkáme ISA.

Řídící jednotka

Řídící jednotka

Řídicí jednotka je nejsložitější část, která v procesoru existuje, a její úkoly jsou následující:

  • Mají na starosti koordinaci pohybu a pořadí dat, která se pohybují uvnitř i vně procesoru, jakož i různých podjednotek, které jej mají na starosti.
  • Obecně se má za to, že jednotky fáze snímání nebo Fetch jsou součástí hardwaru, který nazýváme řídicí jednotka, a tento hardware se také nazývá Front-End procesoru.
  • Interpretuje pokyny a odesílá je do různých prováděcích jednotek, ke kterým je připojen.
  • Komunikuje se s různými ALU a prováděcími jednotkami procesoru, které jednají
  • Je odpovědný za zachycení a dekódování instrukcí, ale také za zápis výsledků do registrů, mezipaměti nebo na odpovídající adresu RAM.

Adresa režimu Opcode

To, co řídící jednotka dělá, je dekódování instrukcí a dělá to proto, že každá instrukce je ve skutečnosti druh věty, kde nejdříve jde o sloveso a poté přímý objekt nebo objekt, na kterém se akce provádí. Subjekt je v tomto interním jazyce počítačů eliminován skutečností, že se rozumí, že jej provádí samotný počítač, takže každý počet bitů je věta, kde první 1 a 0 odpovídají akci a těm potom přijdou data nebo umístění dat, s nimiž se má manipulovat.

Druhá fáze: Dekódování

Pokyny k dekódování

Existují různé typy instrukcí a ne všechny z nich dělají totéž, takže v závislosti na typu instrukce musíme vědět, do jakých prováděcích jednotek se budou posílat, a nejklasičtější způsob, jak to udělat, je to, co nazýváme dekodér. , který přijímá každou instrukci, ji interně rozdělí podle operačního kódu nebo instrukce a adresy dat nebo paměti, kde se nachází.

Například ve výše uvedeném diagramu máme schéma procesoru pouze s 8 instrukcemi, které lze kódovat pouze za 3 bity. Každá z instrukcí, jakmile je dekódována, je odeslána do různých prováděcích jednotek, které je vyřeší.

Tento instruktážní cyklus je nejsložitější ze všech a ten, který definuje typ architektury. V závislosti na tom, zda máme omezenou nebo složitou sadu instrukcí, to ovlivní povahu řídicí jednotky, v závislosti na formátu instrukce nebo na tom, kolik jich je zpracováno současně, dekódovací fáze, a proto bude mít řídicí jednotka jiné povahy. jiný.

Nejjednodušší způsob, jak si představit, co se stane, je přemýšlet o pokynech jako o vlacích obíhajících složitou železniční sítí a o tom, že je řídicí jednotka směruje na konečnou stanici, což je prováděcí jednotka, která bude mít na starosti řešení instrukce.

Třetí fáze: Provést

1 bit ALU

Poslední fází je provedení instrukcí, v této fázi jsou instrukce vyřešeny, ale ne všechny typy instrukcí jsou vyřešeny stejným způsobem, protože způsob použití hardwaru bude záviset na funkci každé z nich. obecně máme čtyři typy pokynů:

  • Pokyny pro pohyb bitů: Ve kterém je manipulováno pořadí bitů, které obsahují data.
  • Aritmetické pokyny: Tam, kde se provádějí matematické a logické operace, se tyto řeší v takzvaných ALU nebo aritmeticko-logických jednotkách
  • Pokyny pro skok: Ve kterém se změní další hodnota programového čítače, což umožňuje rekurzivní použití kódu.
  • Pokyny k paměti: Jsou to, s nimiž procesor čte a zapisuje informace ze systémové paměti.

Druhým bodem jsou formáty instrukcí, protože instrukci lze aplikovat na data, skalární nebo několik dat současně, které známe jako SIMD. Pro dokončení a v závislosti na formátu dat existují různé typy ALU pro provádění aritmetických instrukcí, například dnes máme jako diferencované jednotky celočíselné a plovoucí řádové jednotky.

Po dokončení instrukce se výsledek zapíše na konkrétní adresu paměti a provede se další. Některé pokyny nemanipulují s hodnotami paměti, ale spíše s určitými registry. Registr čítače programu je tedy upraven instrukcemi skoku, pokud chceme číst nebo zapisovat data, pak se manipuluje s registry MAR a MDR.