串流处理

串流处理(英语: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).