Stánek potrubí - Pipeline stall

V návrhu zřetězených počítačových procesorů je zastavení potrubí zpožděním při provádění instrukce za účelem vyřešení nebezpečí .

Detaily

Ve standardním pětistupňovém potrubí během fáze dekódování řídicí jednotka určí, zda dekódovaná instrukce čte z registru, do kterého aktuálně prováděná instrukce zapisuje. Pokud tato podmínka platí, řídicí jednotka zastaví instrukci o jeden hodinový cyklus. Také zastaví instrukci ve fázi načítání, aby se zabránilo přepsání instrukce v této fázi další instrukcí v programu.

V architektuře Von Neumann, která používá registr programového čítače (PC) k určení aktuální instrukce načítané v potrubí, aby se zabránilo načítání nových instrukcí, když byla instrukce ve fázi dekódování pozastavena, hodnota v registru PC a instrukce ve fázi načítání jsou zachovány, aby se zabránilo změnám. Hodnoty se zachovají, dokud instrukce způsobující konflikt neprojde fází provádění. Taková událost se často nazývá bublina , analogicky se vzduchovou bublinou v potrubí kapaliny.

V některých architekturách musí fáze provádění kanálu vždy provádět akci v každém cyklu. V takovém případě je bublina implementována přiváděním instrukcí NOP („žádná operace“) do fáze provádění, dokud bublina není propláchnuta kolem ní.

Příklady

Časová osa

Následuje dvě provedení stejných čtyř instrukcí prostřednictvím 4stupňového kanálu, ale z jakéhokoli důvodu zpoždění načítání fialové instrukce v cyklu # 2 vede k vytvoření bubliny, která zpozdí i všechny následující instrukce.

Potrubí, 4 fáze. Svg Potrubí, 4 fáze s bubble.svg
Normální provedení Provedení s bublinou

Klasické potrubí RISC

Níže uvedený příklad ukazuje, že bublina je vložena do klasického potrubí RISC s pěti fázemi (IF = Instruction Fetch, ID = Instruction Decode, EX = Execute, MEM = Memory access, WB = Register write back). V tomto příkladu jsou data dostupná po fázi MEM (4. fáze) první instrukce požadována jako vstup do fáze EX (3. fáze) druhé instrukce. Bez bubliny má stupeň EX (3. stupeň) přístup pouze k výstupu předchozího stupně EX. Přidání bubliny tedy vyřeší časovou závislost, aniž by bylo nutné šířit data zpět v čase (což je nemožné).

Obejít zpět v čase Problém byl vyřešen pomocí bubliny
Předávání dat (dvoustupňové, chyba) .svg Předávání dat (dvoustupňové) .svg

Viz také

Reference