Što je Stream Processing?

Stream obrada je koncept računalnog programiranja i računalnog inženjeringa koji se može koristiti za dizajn aplikacija i hardverskih sustava. Kada se koristi obrada toka, podaci se organiziraju u tokove koji se zatim unose u čvorove ili procesore koji manipuliraju podacima u toku, nakon čega se podaci nastavljaju duž putanje kako bi drugi čvorovi mogli manipulirati njima. Na kraju toka, podaci se stavljaju u memoriju ili prosljeđuju aplikaciji krajnjeg korisnika za korištenje. Sustav ili aplikacija koja koristi obradu toka radi najučinkovitije kada se informacije o streamu dosljedno generiraju iz jednog ili više izvora, što ga čini učinkovitim za digitalnu obradu signala (DSP), slike i grafiku ili mrežni promet velike propusnosti. Najrasprostranjenija praktična primjena obrade toka je u proizvodnji računalnih grafičkih kartica, u kojima su stream procesori ugrađeni u grafički hardver kako bi pomogli u izvođenju više operacija na ulaznim grafičkim podacima kao što su nizovi vrhova.

Osnova za obradu toka vrti se oko koncepta podataka kao toka. Umjesto izvlačenja informacija iz različitih izvora ili presretanja poruka iz mehanizma prekida, tok podataka se formira kada se informacije objedinjuju nekim procesom u jednu liniju koja se naziva stream. Elementi podataka mogu varirati, ali tok se općenito sastoji od blokova istih tipova elemenata koji se mogu obraditi uzastopno.

Procesori ili čvorovi koji se koriste u obradi toka prihvaćaju tok i izvode zadanu operaciju nad podacima, nakon čega se podaci mogu proslijediti drugom čvoru radi dodatne obrade. Za maksimalnu učinkovitost, čvorovi su namijenjeni malim funkcijama koje se učitavaju i izvode izravno na središnjoj procesorskoj jedinici (CPU), koristeći registre i izravni pristup memoriji (DMA) za brzinu. Ako informacije unutar streama mogu samostalne i nisu ovise o rezultatu operacija jednog čvora, tada se više operacija može izvesti na toku istovremeno, dok se kompajleru programa također pružaju nagovještaji koji mogu omogućiti vrlo učinkovite optimizacije.

Obrada streama općenito je dobro rješenje za situacije u kojima se podaci dosljedno generiraju i guraju u stream od strane aplikacije ili uređaja, kao što je kamera, vanjski senzor ili mrežna veza. Mnoge grafičke kartice koriste stream procesore za brzo pretvaranje podataka koji dolaze kroz grafički cjevovod u renderiranu rasteriziranu sliku. Određene grafičke kartice imaju više procesora ili čvorova ugrađenih u hardver kartice, tako da se stream obrada može dogoditi brzo, a ponekad i istovremeno, što je često poželjno kada se za trodimenzionalnu (3D) grafiku koriste shaderi.