流处理
此条目可参照英语维基百科相应条目来扩充。 |
流处理(Stream processing)是一种计算机编程范型,相当于数据流程编程,事件流处理,和反应式编程[1] ,其允许一些应用更容易地利用了有限形式的并发处理。这些应用程序可以使用多个计算单元,例如图形处理上的浮点运算器或现场可编程门数组(FPGAs)[2],而无需明确管理这些单元之间的分配,同步或通信。
流处理示例通过限制可执行的并发计算来简化并发软件和硬件。给定一个数据序列(流处理),一系列操作(内核函数)被应用到流中的每个元素。例如:直播软件。内核函数通常使用流水线(计算),并且尝试优化本地片上内存重用,以便最大限度地减少带宽损失,并通过外部存储器交互。典型的是统一流式传输,其中一个内核函数应用于流中的所有元素。由于内核和流抽象展现了数据依赖性,编译器工具可以完全自动化和优化片上管理任务。流处理硬件可以使用记分板例如,当依赖关系变得已知时启动直接存储器访问(DMA)。手动DMA管理的取消减少了软件的复杂性,并且相关的硬件缓存I / O消除,减少了专用计算单元(例如算术逻辑单元)必须涉及服务的数据区域扩展。
在20世纪80年代,流处理在数据流编程中得到了探索。一个例子是语言SISAL(单一赋值语言中的流和迭代)。