Co je to návod?

Každá instrukce procesoru má několik fází své činnosti. Dokončení každé z těchto fází trvá jeden cyklus CPU. Tyto fáze jsou načtení instrukce, dekódování instrukce, provedení, přístup do paměti a zpětný zápis. Respektive tyto dostanou pokyn, který je třeba dokončit, oddělit operaci od provozovaných hodnot on, proveďte proces, otevřete registr, do kterého bude výsledek zapsán, a zapište výsledek do open Registrovat.

Historické procesory v pořadí

V dřívějších počítačích CPU nepoužíval instrukční kanál. V těchto CPU se každá operace s jedním cyklem musela uskutečnit pro každou instrukci. To znamenalo, že trvalo pět hodinových cyklů, než byla průměrná instrukce úplně zpracována, než mohla být spuštěna další. Některé operace nemusí zapsat žádný výsledek do registru, což znamená, že lze přeskočit fáze přístupu do paměti a zpětného zápisu.

V subskalárním procesoru bez pipeline je každá část každé instrukce vykonávána v daném pořadí.

Problém však číhá při spouštění kompletní instrukce v pořadí, než je možné přejít k další instrukci. Problém je v chybě cache. CPU ukládá data, která aktivně zpracovává, do registru. K tomu lze přistupovat s jednocyklovou latencí. Problém je v tom, že registr je malý, protože je zabudován do jádra procesoru. Pokud data ještě nebyla načtena, musí CPU přejít do větší, ale pomalejší mezipaměti L1. Pokud tam není, musí znovu přejít do větší a pomalejší mezipaměti L2. Dalším krokem je mezipaměť L3; poslední možností je systémová RAM. Kontrola každé z těchto možností vyžaduje stále více cyklů CPU.

Nyní může být tato dodatečná latence velkým problémem v systému, který musí před zahájením další instrukce dokončit každou instrukci v plném pořadí. To, co bylo dříve procesorem s 5 cykly na instrukci, může najednou zavěsit na jednu instrukci na desítky nebo stovky hodinových cyklů. Po celou dobu se na počítači nemůže stát nic jiného. Technicky se to dá poněkud zmírnit tím, že máme dvě nezávislá jádra. Nic jim však nebrání v tom, aby dělali totéž, potenciálně současně. Takže přechod na vícejádrovou cestu to nevyřeší.

Klasický RISC Pipeline

RISC je zkratka pro Reduced Instruction Set Computer. Je to styl designu procesoru, který optimalizuje výkon tím, že usnadňuje dekódování každé instrukce. To je ve srovnání s CISC nebo Complex Instruction Set Computer, který navrhuje složitější instrukční sady umožňující méně instrukcí, které jsou nutné k provedení stejných úkolů.

Klasický RISC design obsahuje instrukční potrubí. Namísto spouštění kterékoli z pěti instrukčních fází v daném cyklu umožňuje zřetězení provést všech pět fází. Samozřejmě nemůžete spustit všech pět fází jedné instrukce v cyklu. Můžete však zařadit do fronty pět po sobě jdoucích instrukcí s posunem každé o jednu fázi. Tímto způsobem může být dokončena nová instrukce každý cyklus hodin. Nabízí potenciální 5x zvýšení výkonu pro relativně nízký nárůst složitosti jádra.

Ve skalárním zřetězeném procesoru lze každou fázi provádění instrukcí provést jednou za cyklus hodin. To umožňuje maximální propustnost jedné dokončené instrukce na cyklus.

Procesory, které nemají pipeline, mohou být vždy pouze subskalární, protože nemohou provést jednu úplnou instrukci za cyklus. S tímto primárním pětistupňovým potrubím můžete vytvořit skalární CPU, které dokáže dokončit instrukci pro každý proces. Vytvořením ještě dalekosáhlejších pipeline můžete vytvořit superskalární CPU, které mohou provádět více než jednu instrukci za cyklus hodin. Samozřejmě stále existují potenciální problémy.

Stále sekvenční

Nic z toho neřeší problém čekání po mnoho cyklů na odpověď, když je potřeba dotazovat se na různé úrovně mezipaměti a RAM. Přináší také nový problém. Co když se jedna instrukce spoléhá na výstup předchozí instrukce? Tyto problémy jsou samostatně řešeny pomocí pokročilého dispečera. Pečlivě plánuje pořadí provádění tak, aby žádné instrukce, které se spoléhají na výstup jiného, ​​nebyly příliš blízko u sebe. Zvládá také miss cache tím, že zaparkuje instrukci a nahradí ji jinou instrukce, které jsou připraveny ke spuštění a nevyžadují svůj výsledek, obnoví instrukce, když jsou připraven.

Tato řešení mohou fungovat na nezřetězených procesorech, ale jsou vyžadována pro superskalární procesor, který spouští více než jednu instrukci na takt. Prediktor větve je také velmi užitečný, protože se může pokusit předpovědět výsledek instrukce s více než jedním potenciálním výsledkem a nadále předpokládat, že je správný, pokud se neprokáže opak.

Závěr

Potrubí umožňuje využití všech odlišných schopností procesoru v každém cyklu. Dělá to tak, že spouští různé fáze různých instrukcí současně. To ani nepřidává velkou složitost návrhu CPU. Také připravuje cestu k tomu, aby více než jedna instrukce mohla provést jednu fázi za cyklus.