Pipelining

Pipelining neboli zřetězené zpracování, či překrývání strojových instrukcí. Základní myšlenkou je rozdělení zpracování jedné instrukce mezi různé části procesoru a tím i dosažení možnosti zpracovávat více instrukcí najednou. Fáze zpracování je rozdělena minimálně na 2 úseky:

  1. Načtení a dekódování instrukce
  2. Provedení instrukce a případné uložení výsledku

To vedlo k vytvoření procesoru složeného ze dvou spolupracujících subprocesorů (skalární architektura), kdy každá část realizuje danou fázi zpracování. Procesor má části – EU (Execution Unit) a BIU (Bus Interface Unit). Zřetězení se stále vylepšuje a u novějších procesorů se již můžeme setkat stále s více řetězci rozpracovaných informací (více pipelines). Z toho vyplývá, že je možno dokončit více, než 1 instrukci za 1 hodinový cyklus (takt procesoru).

Zřetězené zpracování je technika používaná při návrhu počítačů pro zvýšení jejich instrukčního průchodu (počet instrukcí, které mohou být vykonány za jednotku času). Základní instrukční cyklus je rozdělen na série zvané vedení. Místo zpracovávání každé instrukce postupně (dokončení jedné instrukce před začátkem další), každá instrukce je rozdělena na sled kroků, takže různé kroky mohou být vykonány současně a paralelně (jiným okruhem).

Zřetězení zvyšuje instrukční průtok prováděním více operací současně, ale nesnižuje instrukční latenci (čas pro provedení instrukce od začátku do konce), jelikož stále musí provést všechny kroky. Vskutku, může to zvyšovat latenci kvůli přídavným overhead z rozdělení výpočtů na oddělené kroky a hůře, zřetězení se může zdržet (případně potřebovat proplach), což dále zvyšuje latenci. Zřetězení tedy zvyšuje průtok za cenu latence a je často používáno v CPU, ale nikoliv v realtime systémech, které jsou na latenci těžce závislé.

Každá instrukce je rozdělena do posloupnosti závislých kroků. Prvním krokem je vždy donesení instrukce z paměti, posledním krokem je většinou zápis výsledku do procesního registru nebo paměti. Zřetězení se snaží umožnit procesoru pracovat na tolika instrukcích zároveň, kolik je závislých kroků, stejně jako montážní linka buduje několik vozidel současně, než aby čekala, až jedno projde celou linkou, než začne s dalším. Stejně jako cílem montážní linky je udržet každou součást produktivní v každém okamžiku, zřetězení chce udržet každou část procesoru zaneprázdněnou s nějakou instrukcí. Zřetězení v počítači umožňuje, že čas cyklu je čas nejpomalejšího kroku a ideálně je v každém cyklu dokončena jedna strojová instrukce.

Pojem pipeline je analogií faktu, že v potrubí je v každém úseku kapalina, stejně jako je každá část procesoru zatížena prací.

Běžná riscová pipeline

Za jakýsi standard je považována pipeline s pěti stupni, implementována například v prvních procesorech MIPS, SPARC a Motorola 88000. Jedná se o následující stupně:

  1. Instruction fetch - vyzvednutí instrukce
  2. Decode - dekódování instrukce, zároveň se načítají registry
  3. Execute - provedení instrukce
  4. Access - čtení z paměti
  5. Writeback - zápis výsledku do paměti
Jiné Jazyky