大数据数据流技术在GPU和大数据处理中的应用( 二 )


2.1 数据流计算机数据流计算机是20世纪七八十年代计算机体系结构的一个研究热点 。 麻省理工大学的Dennis教授可以说是数据流体系结构的开拓者 , 他带领的团队在1974年的计算机体系结构国际研讨会(International Symposium on Computer Architecture ,ISCA)上发表的论文首次阐述了静态数据流机器的特点 , 在这种机器中 , 程序由数据流节点组成 , 当数据流节点所需要的数据就位之后就可以执行指令 。 它的指令结构包含操作数以及一个或多个使用该操作结果的地址 。 一旦指令执行结束 , 计算结果直接流向下一个需要该结果的数据流节点 。 因为静态数据流机器的数据令牌是不带标号的 , 没有办法区分数据的来源 , 所以数据流计算机中节点的任何一条输入弧上都只能有一个数据令牌 , 以此来保证计算结果的正确性 。 为了满足迭代计算的要求 , 静态数据流机器要多次重复激活同一操作节点 。 此外 , 它还需要另设控制令牌 , 识别数据令牌的时间戳 , 并以此为依据区分属于不同迭代层次的数据 。 静态数据流机器不支持递归操作 , 只支持一般的循环迭代过程 。
为了克服静态数据流计算机面临的问题 , 很多研究团队提出了动态数据流计算机的思想, 即在数据令牌上加上标号来区分不同的数据批次 , 以此来满足同一操作节点处理多个数据的问题 。 但是数据流计算机的一些问题仍然没有得到解决 , 如程序的调试比较困难、程序没有有效地利用数据的局域性来提高性能 。 在如今的计算机系统中 , 数据的访问开销要远远大于计算开销 , 开发数据的局域性有时候比开发并行性获得的收益更大 。 因此就有了将数据流和控制流进行融合的尝试工作 , 主要分为2种模式:一种是在指令集体系结构(instruction-set architecture , ISA)级保持控制流模式 , 在底层实现数据流机制 , 并且保留语义顺序;另一种是保留数据流模型 , 但在ISA级利用控制流模型来提高效率、开发局域性和简化资源管理 。 目前 , 第二种方式应用更加广泛 。
2.2 流处理器严格意义上的数据流计算机并不实用 , 但是数据流计算的思想却极大地影响着处理器体系结构的发展 , 尤其是将数据流和控制流的优点进行融合 。 其中 , 流处理器就是数据流和控制流计算思想融合的典型成果 。
流处理器是流体系结构的实际载体 , 它和常用的典型处理器体系结构有很大的区别 。 流处理器是一类面向特定应用领域的高效能处理器 , 主要应用在媒体处理领域 。 流体系结构最主要的特点是将计算和访存进行了解耦 。 在流程序的执行模型中 , 数据和指令是分离的 。 根据功能区分 , 流体系结构由流调度模块和流计算模块组成 。 流调度模块采用的是控制流的思想 , 它负责流数据的组织;而流计算模块则采用数据流的思想 , 专注于密集计算 , 相应的执行核心被加载到计算模块 , 并且输入流和输出流都就绪之后 , 流计算模块就可以通过大规模的计算阵列实现极高的计算效率 。 为了保证计算所需的数据带宽 , 流计算模块采用了大量的本地寄存器文件 。 流处理器是一种面向媒体处理领域的专用处理器 , 它的设计考虑了媒体处理应用具有明显的生产者-消费者局域性的特点 , 并且数据的访问具有一定的可预知性 , 在存储层次的设计上与当代处理器明显不一样 , 它没有进行数据缓存的高速缓冲存储器(cache) , 而是采用多级存储层次的结构——本地存储器、流寄存器文件、动态随机存取存储器(dynamic random access memory ,DRAM)三级存储空间来保证大规模计算阵列需要的高数据带宽 。
典型的流处理器有Imagin e 、Merrim ac、C ELL、STO RM-1和MASA 等 , 其中最具代表性的当属Imagine 。 Imagine由斯坦福大学的Dally W J教授团队在2002年开发完成 , 其体系结构如图1所示 。 它主要是结合目标应用开发符合流应用特点的程序 , 并采用多级存储层次提高带宽 , 从而充分利用基于单指令多数据流(single instruction multiple data , SIMD)执行模式的大规模计算阵列 , 满足高清视频处理需要的高计算量需求 。 在250 MHz的频率下 , 典型应用在Imagine上可达到10 GFlops。 在Imagine的基础上 , Dally W J教授研究小组研发了Merrimac 超级流计算机 , 其计算性能为2 PFlops , 这是第一次采用流处理器来构建的高性能计算系统 。 在游戏领域 , IBM、索尼、东芝3家公司在2005年联合推出的第一代CELL处理器具有典型流体系结构的特征 , 它采用异构的模式进行设计 , 包含一个Power体系结构兼容的64位主处理单元(power processing element , PPE)和8个协处理单元(synergistic processing element , SPE) 。 PPE负责运行操作系统和进行SPE的线程调度 , SPE用来加速媒体等计算密集的流应用 , 以获得高性能 , 这种控制和计算分离的模式对后来的高性能GPU发展具有十分重要的借鉴和引领作用 。 我国在流处理器领域的主要研究有MASA流处理器和银河FT-64处理器 。


推荐阅读