Računalniški cevovod (pipeline)

Kaj se bomo naučili v tem poglavju?

Spoznali bomo koncept sočasnega zaporednega delovanja, ki lahko neko obdelavo ali predelavo bistveno pospeši. To velja v vsakdanjem življenju, ugotovili pa bomo pomen takega delovanja v računalniku. Omejili se bomo na uporabo cevovoda v sami centralni procesni enoti.

Uvod

Cevovod (pipeline) je naravni pojem v vsakodnevnem življenju, na primer v proizvodnihmontažnih linijah. Zamislimo si izdelavo neke igrače ali stroja. Delavec na prvem traku opravi del montaže in tak polizdelek posreduje naslednjemu delavcu. Ta nadaljuje z delom in morda deloma zaključeni izdelek posreduje v dodelavo tretjemu delavcu. Medtem, ko tretji delavec opravlja svoje delo, nadaljujeta z montažo  na novih polizdelkih tudi prvi in drugi delavec.

V bistvu je vsak delavec specializiran za eno vrsto dela, svoje izdelke pa posredujekot surovinonaslednjemu delavcu.

 V celoti gledano poteka delo hitrejše oziroma v istem času je učinkovitost večja.

 

 

 

Vrste računalniških cevovodov

V računalništvu je cevovod (pipline) skupina podatkovnih elementov, povezanih zaporedno  tako, da je izhod enega elementa povezan na vhod drugega. Elementi v cevovodu pogosto opravljajo svoje delo vzporedno oziroma v časovnih rezinah. V tem primeru moramo med elementi predvideti tudi nekaj vmesnega pomnenja.

Poznamo več vrst računalniških cevovodov:

o       Ukazni cevovodi, ki jih uporabljamo v procesorjih zato, da tudi po dva ali več ukazov izvajamo vzporedno. Vzporedno lahko tako poteka dekodiranje ukazov in aritmetika ter doseganje registrov. Primer arhitekture, ki uporablja take cevovode, je RISC.

o       Grafični cevovodi, najdemo jih v večini grafičnih kartic. Sestavljajo jih večkratne aritmetične enote ali celo popolne centralne proicesne enote. , ki opravljajo različne faze upodabljanja (račun perspektive, rezanje, osvetljevanje, upodabljanje ipd.).

o       Programski cevovodi, ki jih sestavljajo različni programski procesi tako, da izhodni tok enega procesa avtomatsko teče kot vhodni tok naslednjega. Tipičen primer takih cevovodov srečamo na primer pri LINUXu.

Cevovod ukazov

Cevovod ukazov je tehnika, s katero računalniki in druge digitalne naprave povečujejo svojo učinkovitost. Tako skrajšamo časovni cikel procesorja oziroma povečamo propustnost ukazov, ki jih ta uspe izvesti v časovnem intervalu. 

Spomnimo se zgradbe procesorja in tega, da obdelava vsakega ukaza poteka v več taktih, ki jih proži ura:

o       Pridobitev ukaza (instruction fetch, IF),

o       njegovo dekodiranje (instruction decode, ID),

o       izvedba ukaza (instruction execute, EX),

o       zapis rezultata (writeback, WB, MEM).

Medtem, ko procesor izvaja zadnje takte nekega ukaza, lahko že začne izvajati prve takte naslednjega. To ponazoruje naslednja slika. Od leve proti desni je časovni potek, navpično pa ji prikazano, kaj  (kateri ukaz) v danem trenutku izvaja posamezna komponenta procesorja:

Vendar pa ima tehnika cevovoda tudi svoje slabe lastnosti. Napovedovanje učinkovitosti oziroma propustnosti procesorja s cevovodom je težavno.  Propustnost ni konstantna, saj ukazi niso vsi enako dolgi in niso vsi med seboj neodvisni. Kritični trenutki, ko se enakomerna propustnost zameša, so, ko pride do kakšnega programskega skoka in ko morata dva zaporedna ukaza naslavljati isti podatek.