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