Protočna obrada

Из Википедије, слободне енциклопедије
(преусмерено са Protočna obrada (računarstvo))
Emblem-important-yellow.svg Ова страница би требало да спада у једну или више категорија.
Молимо вас да је категоришете како би могла да се повеже са сличним страницама.
Уклоните ову поруку након категоризације странице.

U računarstvu, protočna obrada je skup elemenata za obradu podataka povezanih u serijama, gde izlaz jednog elementa predstavlja ulaz za sledeći element.

Protočne obrade u vezi sa računarstvom:

  • Protočna obrada instrukcija, kao što je RISC protočna obrada, koja se koristi u procesorima.
  • Grafička protočna obrada, nalazi se u većini grafičkih kartica, i sastoji se od više aritmetičkih jedinica, ili potpunih procesora koji implementiraju pojedine faze(projekcija, rasterizacija, kalkulacija osvetljenja, i dr.).
  • Softverska protočna obrada, gde se komande zapisuju na izlazima koji se prosleđuju sledećim operacijama. Klasični primer su cevi Unix sistemskih poziva.

Koncept i motivacija[уреди]

Protočnost je prirodan koncept u svakodnevnom životu. Na primer, pri sklapanju automobila, motor, šasija, točkovi, i ostali delovi se postavljaju u određenom redosledu u različitim fazama u procesu proizvodnje. Pri proizvodnji automobila, samo se jedna faza može izvršavati u jednom trenutku. Nakon što je motor postavljen, prelazi se na sledeću fazu u kojoj se postavlja šasija automobila, čime se omogućava sledećem automobilu da uđe u fazu u kojoj se postavlja motor. Prvi automobil se pomera na traku za ugrađivanje točkova, drugi automobil na traku za ugrađivanje šasije, a treći automobil počinje sa ugrađivanjem motora. Ako ugrađivanje motora traje 20 minuta, ugrađivanje šasije 5 minuta, i ugrađivanje točkova 10 minuta, tada će se sva tri automobila završiti za 105 minuta ako se jedan automobil pravi u jednom trenutku. Sa druge strane, ako se prave po prethodno navedenom postupku, vreme potrebno za proizvodnju tri automobila je 75 minuta.

Kategorije protočne obrade[уреди]

Linearna i ne-linearna protočna obrada[уреди]

Linearna protočna obrada je niz faza koje su poređane linearno da bi izvršile određenu funkciju nad tokom podataka. Standardna upotreba linearne protočne obrade je izvršavanje instrukcija, aritmetičkih izračunavanja i pristupa memoriji.

Ne-linearna protočna obrada (ili dinamička protočna obrada) može se podesiti da obavlja razne funkcije u različito vreme. Dinamička paralelna obrada dopušta veoma duge instrukcijske reči.

Troškovi i mane[уреди]

Protočna obrada ne smanjuje vreme potrebno za izvršavanje jedne stvari; ona samo povećava protok sistema kada obrađuje tokove podataka.

"Visoka" protočna obrada rezultuje povećanjem kašnjenja.

Sistem sa protočnom obradom obično zahteva više resursa nego izvršenje jedne serije pojedinačno, zbog toga što faze ne mogu iskorititi resurse drugih faza.

Razmatranja u dizajnu[уреди]

Jedan od ključnih aspekata dizajna protočne obrade je balans faza. Koristeći primer sklapanja automobila, mogli smo uštedeti više vremena ako bi i sklapanje motora i sklapanje točkova zahtevalo 15 minuta posla.Iako bi kašnjenje sistema još uvek bilo 35 minuta, bilo bi moguće sklopiti auto svakih 15 minuta. Drugim rečima, procesi sa protočnom obradom daju izlaze tempom koji je određen najsporijom komponentom sistema.

Drugo razmatranje pri dizajnu je snabdevanje adekvatnog baferovanja između faza obrade – posebno kada je vreme obrade nepravilno, ili kada se podaci mogu kreirati ili uništavati tokom obrade.

Grafički alati[уреди]

Za posmatranje raspoređivanja protočne obrade (statičke ili dinamičke), koriste se tabele rezervacije.

Tabele rezervacije[уреди]

Tabela rezervacije za linearnu ili statičku obradu se može lako generisati zato što podaci teku linearnim tokom kako statička obrada vrši određene operacije. U slučaju dinamičke protočne obrade, ili ne-linearne obrade, koristi se ne-linearni šablon tako da se generiše više tabela rezervacije za različite funkcije.

Tabela rezervacije prikazuje tok podataka u vremenu i prostoru.

Implementacija[уреди]

Baferovana,sinhronizovana protočna obrada[уреди]

Konvencionalni mikroprocesori su sinhronizovana kola koja predstavljaju baferovanu, sinhronizovanu protočnu obradu. U ovoj obradi, registri su postavljeni između faza obrade, i taktovani sinhrono. Vreme između svakog takta je postavljeno da bude veće nego najveće kašnjenje između faza obrade, tako da kada su registri taktovani, podaci koji se zapisuju u njih su zapravo izlaz iz prethodne faze.

Baferovana, asinhronizovana protočna obrada[уреди]

Asinhronizovana protočna obrada se koristi u asinhronim kolima, i registri su taktovani asinhrono. Uopšteno govoreći, oni koriste sistem "zahtev/potvrda", u kome svaka faza detektuje kada je "završena". Kada je faza završena i sledeća faza poslala signal zahteva, ona šalje signal potvrde sledećoj fazi, i signal zahteva prošloj fazi. Kada faza primi signal potvrde, ona taktuje svoje ulazne registre, čitajući podatke sa faze pre nje.

Protočna obrada bez bafera[уреди]

Protočna obrada bez bafera, "talasna protočna obrada", nema registre između faza. Umesto njih, kašnjenja u obradi su balansirana tako da je razlika između prvog stabilizovanog izlaza podataka i zadnjeg izlaza minimalna. Podaci teku u talasima kroz faze obrade, i svaki talas se drži što kraćim.