串流處理

串流處理 ( Stream processing ) 是一種計算機編程範式 ， 相當於數據流程編程 ， ， 和反應式編程 ， 其允許一些應用更容易地利用了有限形式的並行處理 。 這些應用程序可以使用多個計算單元 ， 例如圖形處理上的浮點運算器或現場可編程門陣列 （ FPGAs ） ， 而無需明確管理這些單元之間的分配 ， 同步或通信 。 串流處理範例通過限制可執行的並行計算來簡化並行軟件和硬件 。 給定一個數據序列 （ 串流處理 ） ， 一系列操作 （ 內核函數 ） 被應用到串流中的每個元素 。 例如 ： 直播軟件 。 內核函數通常使用流水線 ， 並且嘗試優化本地片上內存重用 ， 以便最大限度地減少帶寬損失 ， 並通過外部存儲器交互 。 典型的是統一串流式傳輸 ， 其中一個內核函數應用於流中的所有元素 。 由於內核和流抽象展現了數據依賴性 ， 編譯器工具可以完全自動化和優化片上管理任務 。 串流處理硬件可以使用記分板例如 ， 當依賴關係變得已知時啓動直接記憶體存取 （ DMA ） 。 手動DMA管理的取消減少了軟件的複雜性 ， 並且相關的硬件緩存I / O消除 ， 減少了專用計算單元 （ 例如算術邏輯單元 ） 必須涉及服務的數據區域擴展 。 在20世紀80年代 ， 串流處理在數據流編程中得到了探索 。 一個例子是語言SISAL （ 單一賦值語言中的流和迭代 ） 。