Search This Blog

Friday, January 7, 2011

Stream processing

 http://en.wikipedia.org/wiki/Stream_processing

Stream processing is a computer programming paradigm, related to SIMD, that allows some applications to more easily exploit a limited form of parallel processing

1)Such applications can use multiple computational units, such as the floating point units on a GPU or field programmable gate arrays (FPGAs), without explicitly managing allocation, synchronization, or communication among those units.

2)The stream processing paradigm simplifies parallel software and hardware by restricting the parallel computation that can be performed. Given a set of data (a stream), a series of operations (kernel functions) are applied to each element in the stream. Uniform streaming, where one kernel function is applied to all elements in the stream, is typical. Kernel functions are usually pipelined, and local on-chip memory is reused to minimize external memory bandwidth. Since the kernel and stream abstractions expose data dependencies, compiler tools can fully automate and optimize on-chip management tasks. Stream processing hardware can use scoreboarding, for example, to launch DMAsDirect memory accessDMA) is a feature of modern computers and microprocessorsmemory for reading and/or writing independently of the central processing unit. that allows certain hardware subsystems within the computer to access system at runtime, when dependencies become known.

3)Advantages of streaming processing
<1> Elimination of manual DMA management reduces software complexity. Because streaming processing hardware can identify data dependencies using scoreboarding, so it is unnecessary to "identify data dependencies manually for the purpose of DMA".
<2>Elimination of hardware caches reduces the amount of die area not dedicated to computational units such as ALUs. Because DMA is well supported in streaming processing, it is uncecessary to keep a cache. Every processing  unit can access the memory directly, instead of though the central processing unit.)


During the 1980s stream processing was explored within dataflow programming. An example is the language SISAL (Streams and Iteration in a Single Assignment Language).