proudového zpracování informací

Napsal krab.cz (») 2. 12., přečteno: 3076×
proud-2.gifProudové zpracování informací (pipeline, zřetězení) nám umožňuje zvyšovat výkon procesoru. Každá instrukce, kterou procesor provádí se skládá z několika na sebe navazujících fázi – např. fáze načtení instrukce z paměti, fáze dekodování instrukce, fáze přípravy operandů a výkonné fáze (vlastní provedení instrukce). Při každé fázi je využita jen určitá část procesoru, ostatní nevyužité. Během fáze načítání instrukce z paměti nejsou využívány ty části procesoru, které slouží např. k násobení, zatímco během výkonné fáze zůstávají nevyužity ty části procesoru, které zajišťují spolupráci s pamětí.

Optimalizace struktury proudově pracující jednotky

Čím je použito větší počet sekcí, tím větší počet úloh může jednotka zpracovávat současně a tím poroste výkonnost. Každá sekce musí mít registr pro zaznamenání současně zpracovaných úloh –tím roste cena funkční jednotky a roste zpoždění, způsobené průchodem jednotlivými registry
Chceme procesor koncipovat tak aby byla využitá každá jeho část v každou dobu. Procesor se pak chová jako roura s několika sekcemi, a instrukce jsou tímto potrubím postupně protlačovány. Každá sekce má na starosti realizaci určité fáze, a tu provádí s tou instrukcí, která se v příslušné sekci právě nachází. V celém procesoru se v každém okamžiku nachází více instrukcí v různém stádiu rozpracovanosti. Efekt je ten že doba provedení jedné instrukce se nemění, ale počet instrukcí provedených za jednotku času se zvýši několikrát (kolik je sekcí v potrubí).

Zřetězená implementace systému předpokládá:

  • nepřetržitý přísun údajů, nad nimiž je třeba provádět stejnou základní operaci,
  • operaci musí být možno rozdělit na sekvenci nezávislých kroků, realizovaných jednotlivými stupni řetězu,
  • trvání jednotlivých kroků by mělo být přibližně stejné

Činnost zřetězení pro zpracování instrukcí je uveden na obrázku. Na vodorovné ose je vynášen čas (posloupnost taktů) a řádky diagramu reprezentují buď jednotlivé stupně řetězu S1, S2, …. nebo jednotlivé instrukce i1, i2,…

/obrazky/blog.radovankaluza.cz/proud.gif

Položka i v i-tém sloupci a j-tém řádku znamená, že v i-tém taktu zpracovává stupeň Sj instrukci i. První obrázek ilustruje zřetězené zpracování instrukcí i1 až i6 ve čtyřech stupních S1 až S4, kdy mohou být v jednom taktu rozpracovávány v ideálním případě až čtyři instrukce. Zastavení linky na dobu jednoho taktu způsobené např. čekáním na mezivýsledek, je znázorněno křížkem v příslušném sloupci (taktu). V druhém obrázku nemůže např. v 5 taktu pokračovat instrukce i3 do stupně S3. Instrukce i4 až i6 následující za ní jsou rovněž pozastaveny, zatímco zpracování předchozí instrukce i2 není ovlivněno. Nicméně stupeň S4 pak bude také jeden takt bez práce (vyznačen pomlčkou), takže výsledný efekt je stejný, jako kdyby v 5. taktu byla pozastavena celá linka. Počet stupňů v řetězu se označuje jako hloubka řetězu, doba průchodu instrukce všemi stupni řetězu je tzv. latence řetězu. V příkladu na obrázku je průměrný počet taktů na jednu instrukci CPI=10/6=1,66.
Nyní se podíváme na znázornění nezřetězeného zpracování instrukcí, kdy zahájení každé nové instrukce je možné až po úplném zpracování předchozí instrukce. Místo 6 instrukcí dokončených v předchozím příkladu v 10 taktech, jsou dokončeny ve 12 taktech jen tři instrukce, což odpovídá hodnotě CPI=4.

Klasické nezřetězené zpracování instrukcí ve čtyřech stupních
/obrazky/blog.radovankaluza.cz/proud-2.gif
Linky na zřetězené zpracování mohou být dvojího druhu, asynchronní a synchronní.

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel jedenáct a třináct