串流處理(英語:Stream processing)是一種計算機編程範式,相當於數據流程編程事件流處理英語Event stream processing,和反應式編程[1] ,其允許一些應用更容易地利用了有限形式的並行處理。這些應用程序可以使用多個計算單元,例如圖形處理上的浮點運算器現場可編程門陣列(FPGAs)[2],而無需明確管理這些單元之間的分配,同步或通信。

串流處理範例通過限制可執行的並行計算來簡化並行軟件和硬件。給定一個數據序列(串流處理),一系列操作(內核函數)被應用到串流中的每個元素。例如:直播軟件。內核函數通常使用流水線(計算),並且嘗試優化本地片上內存重用,以便最大限度地減少帶寬損失,並通過外部存儲器交互。典型的是統一串流式傳輸,其中一個內核函數應用於流中的所有元素。由於內核和流抽象展現了數據依賴性,編譯器工具可以完全自動化和優化片上管理任務。串流處理硬件可以使用記分板例如,當依賴關係變得已知時啟動直接記憶體存取(DMA)。手動DMA管理的取消減少了軟件的複雜性,並且相關的硬件緩存I / O消除,減少了專用計算單元(例如算術邏輯單元)必須涉及服務的數據區域擴展。

在20世紀80年代,串流處理在數據流編程中得到了探索。一個例子是語言SISAL(單一賦值語言中的流和迭代)。

參考資料 編輯

  1. ^ 串流處理簡介. [2018-06-20]. (原始內容存檔於2017-11-09). 
  2. ^ FCUDA:實現將CUDA內核高效彙編到FPGAs (PDF). [2018-06-20]. (原始內容 (PDF)存檔於2014-06-04).