L2 Cache

    Cesta zpracování instrukcí začíná od operační paměti, kam programátor program uloží a poté dá mikroprocesoru příkaz, aby instrukce začal vykonávat. Instrukce se nejdříve začnou přesouvat do tzv. L2 cache (vyrovnávací paměti). Již zde se mikroprocesory zásadně liší. Paměť cache L2 může být umístěná jak uvnitř procesoru, tak i na základní desce. Velikosti L2 cache se dle typu procesoru pohybují od 128 kB do 512 kB.


    L1 Cache

    L1 cache je umístěná přímo v mikroprocesoru a obvykle se dělí na část pro instrukce a část pro data. Zde se výrobci příliš neliší, obvyklé jsou hodnoty mezi 32 kB a128 kB.

 

    dekódování instrukcí

    Mikroprocesory se již odedávna dělí na řady CISC (Complete Instruction Set Computer) a RISC (Reduced Instruction Set Computer). Jednoduše si lze představit, že u architektury RISC je pouze základní malá sada instrukcí, se kterou si programátor musí vystačit a u CISCu je instrukční sada rozšířena již o předem předprogramované (makro) instrukce, které jsou tvořeny základní sadou, a programátor má práci v mnoha případech ušetřenu.
   
Problém je s tím, že RISC sada má pevnou délku a CISC sada má proměnou délku instrukce. A právě z důvodu délky se přistoupilo k překladu instrukcí. Pro mikroprocesor je samozřejmě mnohem jednodušší zpracovávat instrukce s pevnou délkou než s proměnnou délkou. A proto se začaly instrukce u mikroprocesorů dekódovat a vnitřně převádět na instrukce blízké sadě RISC. Pro výběr a dekódování instrukcí slouží modul Decode unit. Každý z výrobců procesorů dekóduje instrukce jinak.

 


    vykonávání instrukcí

    Instrukce po dekódování se řadí v "Instruction pool", aby mohly být následně vykonány v "Execution unit". Zde se dostáváme do oblasti, kde se jednotliví výrobci předhánějí, dobíhají, předvádějí, ohromují uživatele skvělými čísly atd. Původně se instrukce vykonala a bylo hotovo. Dalo by se říci s trochou nadsázky, že dnes je to úplná věda. Zpracování probíhá v části "Pipeline", která se skládá z několika jednotek. Jedna pipeline je schopná vykonat jednu instrukci a několik jich rozpracovat. Aby bylo zpracování rychlejší, je v mikroprocesorech oněch pipeline více.

 


    zpracování mimo pořadí a spekulativní vykonávání instrukcí

    Při samotném vykonávání instrukcí se uplatňují metody "Out of Order" a "Speculative Execution". Out of Order je metoda, při níž se instrukce vykonávají v jiném pořadí, než jak uvádí program uložený v operační paměti. Procesor si sám rozhodne a poskládá instrukce tak, aby byly zpracovány v co nejkratším čase. Toto je důsledek toho, že ne všechny instrukce se dají zpracovávat současně a ne všechny se dají stejně rozpracovat. Kdybychom zpracovávali instrukce v původním pořadí, byly by některé části mikroprocesoru po určitou dobu nevyužity. Proto se přistoupilo k vykonávání instrukcí mimo pořadí, aby byly, pokud je to možné, všechny části mikroprocesoru maximálně využity.

   
Speculative execution spočívá v odhadu vykonávání instrukcí dopředu. Instrukce se vykonávají v době, kdy je mikroprocesor méně vytížen, a jednotlivé výsledky zpracování se ukládají v mikroprocesoru, aby byly v okamžiku potřeby k dispozici.
   
Out of order a speculative execution je u všech tří výrobců implementován, ale z hlediska srovnání záleží na úspěšnosti použitého algoritmu, který se většinou nezveřejňuje.

 

    předpověď větvení

    Zpracování mimo pořadí a spekulativní vykonávání instrukcí je skvělá věc, ale jak to již bývá nic není dokonalé. Program obvykle obsahuje řadu skokových instrukcí, neboli instrukcí, které zajišťují větvení programu. A zde se může stát, že při vykonání instrukce mimo pořadí dojde k výpočtu dříve než je nutné a přitom instrukce skoku říká, že nejdříve měl být zpracován jiný kód programu.
   
K tomu, aby nedocházelo k chybným výpočtům, se používá "Branch prediction". Můžeme se setkat i s názvem "Branch logic". Je těžké srovnávat jednotlivé způsoby předpovědí větví, protože vše záleží na vnitřním zpracování.