没有合适的资源?快使用搜索试试~ 我知道了~
数据流计算研究进展与概述.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 65 浏览量
2022-11-02
17:18:27
上传
评论
收藏 396KB DOCX 举报
温馨提示
试读
21页
数据流计算研究进展与概述.docx
资源推荐
资源详情
资源评论
引言
传统冯·诺依曼架构从提出至今已有 70 多年,作为主流的计算机架构,几十
年间学术界、产业界围绕其开展了多种多样的探索研究。近年来,随着社会和
科学技术的不断发展,大量新型应用对计算需求远超从前,比如网络服务、人工
智能、AIoT(Artificial Intelligence and Internet of Things)等高通量应用场景,
在这些新的应用场景的催化下,计算机的发展进入新的黄金时代。然而,冯·诺依
曼架构基于全序程序执行的指令控制流计算模型,在存储访问和并行处理等方
面表现出固有的局限性,“存储墙”等问题日益严重,制约了计算机性能的提升。
在解决冯·诺依曼计算机的串行指令执行和访存瓶颈问题过程中,出现了数
据流(Dataflow)计算思想。因其天然的并行性、低访存需求等结构优势,近些
年重新得到了学术界和工业界的青睐。数据流计算的概念由麻省理工学院的
Jack. B. Dennis
[1]
等人首 先提出,后由以高 光荣教授 为代表的数 据流研究 人员
将其完善、发展。文献[2]是国内最早的数据流计算研究成果。图 1 展示了从上
世纪 70 年代至 2020 年计算机领域重要会议和期刊中,标题含有数据流关键词
的研究论文数量,可以发现数据流计算经历发展的低谷期,现在又重新回到研究
人员的视野中。后摩尔时代的到来将为数据流计算的发展带来前所未有的机遇,
数据流计算的创新即将进入下一个黄金时代。
图 1
图 1 数据流计算相关论文数量
Fig.1 Number of papers related to dataflow computing
回溯历史,本文将数据流计算的发展历程概括为三个阶段。第一阶段是数
据流计算的起源阶段(20 世纪 90 年代以前),此阶段数据流计算的研究聚焦
在数据流计算理论和数据流程序执行模型,比如数据流线程模型、数据流同步
模型、数据流存储模型。随着数据流计算相关理论的完善,数据流计算进入第
二阶段(90 年代至 2010 年),该阶段的研究重点是数据流编译技术和并行机
系统。许多研究人员基于当时已有的处理器或系统展开了数据流计算机的研究,
比如基于数据流思想的并行机系统,多核、多线程的数据流编译技术。随着工
艺和应用场景的发展,传统计算机架构的发展遇到瓶颈,数据流计算进入第三阶
段(2010 年以后),第三阶段的研究重点是数据流编译技术和数据流硬件架构。
基于数据流思想的处理器、协处理器等芯片被提出,并在人工智能、网络服务、
科学计算等高通量应用领域发挥出独特的优势。由这三个阶段,我们可以发现
数据流计算的研究是完整的、系统的、成体系的。它的研究重点经历了由计算
理论、到软件技术、到硬件芯片的变化。
本文首先回溯数据流计算的起源,介绍数据流计算的概念,包括第一个具有
重要意义的数据流计算语言、数据流计算机模型,静/动态数据流以及重要的数
据流计算理论。然后,从软件系统和硬件架构两方面分别介绍了标志性的里程
碑工作。最后,根据数据流计算的研究进展,总结并讨论了数据流计算的趋势和
挑战,对未来数据流计算的研究提供参考,希望给该领域的研究人员带来一定的
启发。
1 数据流计算的起源
数据流计算模型是冯·诺依曼模型的一种替代方案。在冯·诺依曼模型的概
念中,数据只是被加工的对象,其核心思想是把程序像数据一样存储在计算机中,
在程序计数器(Program Counter, PC)的控制下逐条执行。数据流计算把冯·诺
依曼计算机中程序和数据的关系颠倒过来了,数据相关性形成的数据流图就是
可执行的机器指令,取消了程序计数器的概念。数据流计算突出了数据的主导
作用,这是其对传统计算机架构的重大突破。
“数据流”作为一种计算机 并行性探索的概念,使用数据流来表示计 算机程
序最早出现在 20 世纪 60 年代
[3,4]
,数据流计算语言
[5,6,7]
、数据流计算机体系结构
[6,8]
的早期研究在 20 世纪 70 年代开始展开,本文把数据流计算模型简称为数据
流计算。在数据流计算中,程序用数据流图(Dataflow Graph, DG)来表示,数
据流图是一个有向图,由不同类型的节点(node, 也称 actor
[5,7,9-10]
)和连接节点
的边组成。如果边的一端不连接任何节点,则为输入/输出。节点表示计算过程,
连接关系表示节点之间的数据依赖关系,该依赖关系可以定义为数据的“生产者”
与“消费者”。当数据流图中的一个节点获取了其需要的所有操作数时,即可被调
度执行,结果传递给其下游“消费者”节点。与冯·诺依曼计算机相比,数据流计算
以图的形式描 述了计算 任务的并 发执行全 过程, 同时数据可以按照数据流图
中边的指向直接传递到下游节点,不需要缓存到存储器中,能够解决控制流指令
串行以及访存瓶颈等问题,充分挖掘并利用计算机程序中数据级并行性和指令
级并行性。
图 2 是文献[5]中的一个由数据流思想表示程序片段的例子。在这个示例中,
长方形的节点表示操作,小的实心圆表示连接,大的实心圆表示程序初始时的配
置或者输入数据。程序由 L1 和 L2 开始,L1 被激活(fire)时,将数据 a 复制并
发送到 A1 和 A3,L2 被激活时,将数据 b 传递至 A1 和 A4。L1 和 L2 节点以任
意顺序被激活之后,A1 节点即可激活,因为 A1 节点已经获得了所需的 2 个源操
作数。当 A1 的计算完成之后,L3 节点即可被激活,程序将按照“数据驱动”的方
式执行。节点的激活仅由该节点所有的输入决定,因此可以降低同步的开销。
图 2
图 2 第一个数据流程序表示
Fig.2 The first dataflow program
为使上述数据流语言能表示分支和循环程序 ,Dennis
[5]
定义了 2 种连接原
语和 6 种不同的节点原语,完善了数据流计算语言。数据连接(Data link)负责
传 递 参 与 运 算 的 数 据 ,而 控 制 连 接 ( control link ) 传 输 为 “真 ” 或 “ 假 ”的 令 牌
(token),该令牌由专门的生成器(Decider)生成,生成器根据其输入的值得
到对应的令牌。另外,令牌的另一种产生方法是使用图 3(8)的布尔运算单元
生成。令牌与 T-gate、F-gate、Merge 一起控制数据的流向。对于 T-gate,当
其输入的令牌为真时,将输入边的数据直接传递给输出边;当输入的令牌为假时,
输出边将没有数据。相似的,当输入的控制表示为假时,F-gate 将输入边的数据
传递给输出边。Merge 有三个不同的输入,一个令牌、另外两个分别与 T 和 F
端口相连的输入,Merge 原语根据控制表示的值,将 T/F 端的输入传递给输出端
口。使用上述数据流计算语言,即可表示计算机中的循环和分支程序。
图 3
图 3 第一个数据流语言
Fig.3 The first dataflow programming language
为支持数据流程序执行模型和数据流语言,Dennis
[5]
等提出了图 4 的数 据
流处理器模型,基本思想是将数据流图转换为一种本质上同构但更适合在实际
硬件上执行的结构。在该模型中,存储器被划分多个基本块(Cell block),每个
基本块存储数据流图中的一个节点,也就是一个指令。当基本块包含了一条指
令及其操作数,仲裁网络(Arbitration Network)便将其打包为运算包(operation
packets)的形式发送给运算单元(operation unit)进行计算。运算结束后,分
配网络(Distribution Network)将计算得到的结果(data packets)根据地址
剩余20页未读,继续阅读
资源评论
罗伯特之技术屋
- 粉丝: 3587
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功