Obsah

Princip činnosti počítače

Počítač se skládá obvykle z:

Procesor instrukci zpracovává v několika krocích. Základní kroky jsou:

  1. načtení instrukce z paměti podle instruction pointeru
  2. dekódování instrukce (co to bude dělat)
  3. načtení operandů
  4. vykonání instrukce
  5. uložení výsledků (např. do registrů)

Řetězené zpracování instrukcí

Pipeline (computing)

Mějme model, kdy počítač používá tři základní moduly při zpracování instrukce: fetch, decode, execute, tedy 3 moduly. Pokud bychom měli vykonat 4 takovéto cykly, zabralo by nám to 12 taktů.1)

F D E F D E F D E F D E

Pokud se zamyslíme, uvědomíme si, že každý modul je 2 ze 3 taktů nevyužit. Pokud bychom tedy zpracovávali instrukce „paralelně“, namísto za sebou, určitě bychom dosáhli zrychlení.

F D E
F D E
F D E
F D E

A taky že ano, najednou nám vykonání 4 instrukcí zabralo jen 6 taktů.

Vzorec pro získání počtu potřebných kroků při použití paralelních pajplajn je x+n−1, kde x je počet instrukcí a n je počet kroků potřebných pro vykonání jedné instrukce. Zrychlení oproti nezřetězenému je jednoduše poměrem počtu před a po zrychlení. Vychází tedy zrychlení <m>{x n}/{x+n-1}</m>, tedy v tomto případě dvojnásobné zrychlení. Při velkém množství instrukcí se zrychluje až Nkrát (tady třikrát).

Zřetězené zpracování neurychlí zpracování jednotlivých instrukcí (ve skutečnosti tomu může být právě naopak, z důvodu většího množství elektroniky která zřetězení umožní), ale zvýší rychlost průtoku skupiny instrukcí. Problémem při zřetězeném zpracování jsou instrukce skoku. Ty způsobují, že je nutné obsah celého pipeline zahodit a načíst nové instrukce od adresy na kterou se skáče. K částečnému odstranění tohoto problému se využívá tzv. predikce skoku, co je jednoduché stavové řízení, které dekóduje instrukce nepodmíněného skoku již při jejich načtení do pipeline. Rovněž je problémem přerušení, které se často řeší tak, že se neobsluhuje okamžitě ale rovněž se zařadí do pipeline.

RISC

Reduced instruction set computing

Novější koncepce procesorů. Vychází z rozvoje překladačů a vysokoúrovňových jazyků, které ale omezují využití pokročilejších instrukcí CISC procesorů (překládač nedokáže kód tak dobře optimalizovat). V základě jde o to, že RISC má méně a jednodušších instrukcí, ale zato se provádí rychleji (ideálně všechny v jednom taktu) a tím usnadňují vývoj software ve vysokoúrovňovém jazyce. Řadič instrukcí pak nemusí obsahovat mikroprogram, ale je řešen pevnou logikou, co umožňuje větší frekvence. Rovněž zlepšují možnosti návrhu zřetězeného zpracování a zjednodušují návrh paralelismu. Procesory RISC mají většinou méně tranzistorů, což umožňuje přidat více registrů.

RISC procesory mají nedestruktivní instrukce: výsledek operace se dává do jiného registru, než operandy. Používají se sady registrů např. k přepínání kontextu. Podprogram používá svoje registry, v původních tedy zůstavají data, která tam byla před skokem. Sady registrů jsou drahé.

Dnes najdeme procesory RISC především v embeded zařízeních:

CISC

Complex instruction set computing

Původní přístup k činnosti procesoru. Programy byly vytvářeny v assembleru ručně, co vedlo na vytváření komplikovaných a snadno použitelných instrukcií, různé adresové režimy, kombinované instrukce a pod. To dává velké možnosti optimalizace kódu a poskytuje obrovskou rýchlost pro výpočet. Nevýhodou je, že kromě rozsahu instrukčního souboru trvá provedení každé instrukce různou dobu, co vede při použití pipeline na velkou složitost řadiče. Ten je při CISC často tvořen dalším procesorem (mikrořadičem) obsahujícím vlastní mikroprogram (firmware). Při takto rozsáhlých instrukčních souborech je problém s překladem (překládač neumí využít všechny instrukce a adresové módy) což vedlo na zavedení architektury RISC. Aktuálně jsou dostupné procesory, které kombinují rysy obou přístupů (RISC i CISC).

Mikroprogram

Každá složitější instrukce v CISC architekturách je rozložena na posloupnost tzv. mikroinstrukcí mikroprogramu, které jsou pak provedeny. Pro každou instrukci byl dříve mikroprogram, dnes je v CISC architekturách trend jednoduché instrukce převádět také na logické obvody, jako je tomu v RISC (kvůli rychlosti). Složitější instrukce jsou ale stále řešeny přes mikroprogram, protože implementace každé takové instrukce přes logické obvody by byla drahá a CISC počítače (PC) jsou určeny pro levnější cenovou třídu. Mikroprogram je uložený v ROM paměti. Výhoda mikroprogramu je také to, že přidání dalších instrukcí procesoru (přechod na vyšší verzi) znamená přidání mikroprogramu pro tuto instrukci, netřeba měnit obvody.

Shrnutí (na co nezapomenout)

Co je třeba vědět kdyby se zeptali

1)
Pro zjednodušení uvažujme že co operace, to takt