系统结构 09 - 数据流计算机系统结构

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第9章 数据流计算机系统结构
在数据流计算机中,信息项以操作包和数据“令牌” 形式出现。操作包由操作码、操作数和其后继指令所在 地组成。数据“令牌”则由结果值和其去向目的地组成, 实质上是一种表示某一操作数或参数已准备就绪的标志。 众多的操作包和数据“令牌”在各个资源部件间传递, 因而数据流计算机可视为一种信息分组通信系统结构, 具有分布式多处理机组成形式。如图9.1,给出了数据流 计算机中的操作包和数据“令牌”以及它在系统中的传 送情况。
9.1.2 数据流驱动的基本原理
与传统的冯·诺依曼计算机不同,数据流计算机是采用数据驱动的计算 模型,有利于并行性的开发。数据驱动的数据流方式是指:只要一条或一 组指令所要求的操作数全部准备就绪,就可立即激发相应的指令或指令组 执行。执行结果的输出将送往等待这一数据的下一条或下一组指令。也就 是说,在数据流计算机中,一条指令能否执行的主要依据是:它所需要的 操作数是否已经全部到达。
第9章 数据流计算机系统结构
1 4 7 9 11 12 13 14
a1
a5
b1 b5 s1
s1=b1+b2
a2
a6
b2 b6 s2 t2
s2=b3+b4 t2=s1+s2
a3
a7
b3 b7 s3
wk.baidu.com
s3=b5+b6
a4
a8
b4
b8
s4
t4
c4
c8
s4=b7+b8 t4=s3+s4 c4=c0+t2 c8=c4+t4
第9章 数据流计算机系统结构
因此在这种机器上不需要程序计数器。一条指令执行后产生 的结果并不送往存储器保存起来,以供其它指令共享,而是直 接流向所有需要该结果的指令,并作为这些指令的操作数,驱 动这些指令的执行。因此程序执行时所需的数据是一次性生成 和消费的,即时产生即时使用,操作数直接以“令牌”(token) 或“值”的记号传递而不是作为“地址”变量加以访问的。指 令的执行基本上是无序的,完全受数据流的驱动,与指令在程 序中出现的先后顺序无关。显然在数据流计算机中,程序中众 多指令的执行是异步并行进行的,只要所需的操作数均已到达, 又有可使用的计算资源,它们便可同时执行,因此最有利于计 算并行性的开发。
(d) 共享存储器的4台处理机系统用14个周期完成并执行
图9.2 数据流计算机和控制流计算机之间的比较
第9章 数据流计算机系统结构
input d,e,f c0=0 for i from 1 to 8 do begin ai=diei bi=ai*fi ci=bi+ci-1 end output a,b,c
给每个数据做标记的优点是不同现场的数据可在指令执行流水线 中随意调配。因此数据流图的指令级并行性可吸收通信时延,使由于 同步等待而产生的损失减到最小。除令牌匹配和I-结构外,还需要编 译器技术,才能得出带标志令牌数据流计算机的数据流图。数据流系 统结构为大规模并行计算提供了一种理想的模型,因为远程副作用全 被消除了。所谓副作用指的是一些无关的操作对共享变量的修改。
第9章 数据流计算机系统结构
图9.2(d)描述是在传统多处理机上,利用共享存储器保存中间结 果(si和ti,i=1,2,3,4)时同—计算集合的执行情况。注意,在数 据流实现中没有使用共享存储器,这个例子并不说明数据流执行比控 制流执行在时间上有什么优越性。
沿关键通路a1b1c1c2…c8的理论上的最小时间是13个周期。数据流 中的链式作用控制是较难实现的,而与图9.2(d)中所有处理机完成 的均匀操作相比,它产生的开销也许会更大。
第9章 数据流计算机系统结构
需求驱动计算则选用自顶向下的方法,首先需求a 值 , a 值 去 触 发 对 计 算 下 一 级 表 达 式 ( b+1 ) ×c 和 ( d÷e ) 的 需 求 , 此 表 达 式 再 依 次 触 发 计 算 最 里 层 (b+1)的需求。然后,所有结果在算出a之前以相反 次序返回给嵌套需求者。
需求驱动计算与惰性计算(lazy evaluation)相对 应,因为操作只有在另一条指令需要结果时才执行。 需求驱动方式与函数程序设计概念自然匹配。函数程 序设计中副作用消除后,程序也比较容易并行化。
第9章 数据流计算机系统结构
9.1.4 归约机模型 归约机和数据流机一样,都是基于数据流的计算模型,
在数据流计算机结构中以“数据驱动”方式启动指令的执行。按照这 种方式,程序中任一条指令只要其所需的操作数已经全部齐备,且有可使 用的计算资源就可立即启动执行(称为点火,Firing)。指令的运算结果又 可作为下一条指令的操作数来驱动该指令的点火执行,这就是“数据驱动” 的深刻含义。在数据流计算机模型中不存在共享数据,一条指令执行后不 送存储器保存,以供其他指令共享,而是直接流向需要该结果的指令,作 为新的操作数供下一条指令使用,每个操作数经过指令的一次使用后便消 失。
在数据流计算机中,没有变量的概念,也不设置状态,在指令间直接 传送数据, 操作数直接以“令牌”(Token)或“数值”的记号传递而不 是作为“地址”变量加以访问。因此操作结果不产生副作用,也不改变机 器状态,从而具有纯函数的特点。所有数据流计算机通常与函数语言有密 切的关系。
第9章 数据流计算机系统结构
控制流计算机用共享存储器来保存程序指令和数据对象,共享存储器 中的变量可被多条指令修改。由于存储器是共享的,所以一条指令执行后 可能会对其它指令产生副作用(相关性)。在很多情况下,副作用会妨碍 并行处理。事实上,由于采用控制驱动机制,因此单处理机计算机本质上 是顺序的机器。但是控制流可以用并行语言结构或并行编译器构成并行的 控制流。
第9章 数据流计算机系统结构
在图归约(graph reduction)模型中,表达式是用有向 图表示的。图用计算分支或子图进行归约,根据需要可对 图上的各个部分或子图进行并行归约或计算。每个需求者 都有一个指向归约结果的指针,需求者对图的全部引用标 记进行变换操作。
我们采用指针共享变量来实现图的变换,这种图的遍历 和颠倒引用一直要继续到遇到常量为止。在求出a值以及副 本返回原发出需求的指令之前,这个过程一直在进行中。
第9章 数据流计算机系统结构
在数据流计算机中,指令的执行是由数据可用性来驱动的,而不是由 程序计数器控制。理论上讲,任何指令只要操作数可用,应该说是做好了 执行的准备。数据驱动程序中的指令不用任何方式来排定次序。数据直接 保存在指令内,不是存在共享存储器中。
计算结果(数据令牌,data token)直接在指令之间传送。一条指令 产生的数据可被复制成多份副本直接送给所有缺乏数据的指令。数据令牌 一旦被一条指令使用后,它就不能再被其它指令重复使用。这种数据驱动 方式不需要共享存储器,不需要程序计数器,也不需要控制定序器。但是 它需要有专门的机构来检测数据可用性,将数据令牌和缺乏数据的指令进 行匹配,同时使指令执行的异步链接作用得以实现。没有存储共享就不会 产生副作用(相关性)。
第9章 数据流计算机系统结构
第9章 数据流计算机系统结构
第9章 数据流计算机系统结构
第9章 数据流计算机系统结构
9.2 计算模型分类
计算模型在不涉及硬件和软件细节的层次上,描述 计算是如何在计算机中完成的,即要描述一台计算机 能做什么(即能完成什么样的基本动作)、这些动作 何时可以完成以及用何种方式对数据进行读出或写入。 实质上,计算模型是给出了完成计算所需遵循的基本 规则。
第9章 数据流计算机系统结构
数据流计算机中也不存在指令计数器。指令得以启动执行的时机取决 于操作数具备与否。程序中各条指令的执行顺序仅仅由指令间的数据依赖 关系决定。因此,数据流计算机中指令的执行是异步并发地进行的。在数 据流程序中,由于“数据驱动”要求每条指令标明其运算结果的流向,也 就是指向将本指令的运算结果作为操作数的那条目标指令。因此数据流程 序中只有一条链路,即各条指令中指向目标指令的指针。
第9章 数据流计算机系统结构
a1
b1 c1 a2
b2 c2
……
a8 b8 c8
(b) 单处理机用48个周期完成顺序串行执
14
7 8 9 行10 11 12 13 14
a1
a5
c1
c2
c3
c4
c5
c6
c7
c8
a2
b1
b2
b4
b6
b8
a3
a6
b3
b5
b7
a4
a7
a8
(c) 4台处理机的数据流计算和用14个周期完成数据驱动执行
第9章 数据流计算机系统结构
第9章 数据流计算机系统结构
9.1 程序流机制 9.2 计算机模型分类 9.3 数据流程序图和数据流语言 9.4 数据流机的基本结构 习题9
第9章 数据流计算机系统结构
9.1 程序流机制
9.1.1 控制流和数据流
传统的Von Neumann计算机用程序计数器PC(Program Counter)确 定程序中指令执行的顺序,PC由程序中的指令流来定序。这种顺序运行方 式,因程序流为程序员显式控制,故被称为控制驱动。
在表9.1中我们对控制流、数据流和归约计算机的系统结 构进行了比较。
第9章 数据流计算机系统结构
表9.1 控制流、数据流和归约计算机比较
机器 模型
基本 定义
优点
缺点
控制流 (控制驱动)
常规计算:令牌控制指 明语句何时应执行 全控制
容易实现复杂数据和 控制结构
效率较低
程序设计困难
难以避免运行时错误
数据流 (数据驱动)
第9章 数据流计算机系统结构
图9.1 数据流计算机中的操作包和数据令牌
第9章 数据流计算机系统结构
例9.1 数据流计算机和控制流计算机的比较。如图9.2
(a)的数据流图表示有24条指令要运行(8条除法、8条乘 法和8条加法)。假定每次加、乘和除分别需要1、2和3个 周期完成操作。
(a) 示例程序及数据流图
积极计算:当操作数全 部可用时,语句才执行
并行性潜力很大
吞吐量大
无副作用 时间损失在等待非必需 的自变量上 控制开销大
难以变换数据结构
归约 (需求驱动)
惰性计算:语句只在其 结果被另一运算请求时 才执行 只执行被请求的指令
并行度高
容易变换数据结构
不支持局部状态改变的 对象共享
传播需求令牌需要时间
第9章 数据流计算机系统结构
但其驱动方式是采用需求驱动。在这种模型中,某条指 令的执行,仅当其它指令需要用它时才会进行。归约机 是一种面向函数程序设计语言的计算机,指令的执行顺 序取决于这些指令产生结果数据的需求,而这种需求又 源于函数式程序设计语言对表达式的归约。
第9章 数据流计算机系统结构
归约机模型有两种类型,即串归约模型和图归约模型。 两者的主要区分是对函数表达式所使用的存储方式不同, 前者以字符串形式存储而后者以图的形式存储。
第9章 数据流计算机系统结构
9.1.3 需求驱动方式 在归约机(reduction machine)中,计算是由对一个
操作结果的需求而启动的。假设要计算一个嵌套算术表 达式a=((b+1)×c -(d÷e))。数据驱动计算选用 自底向上的方法,从最里面的运算(b+1)和(d÷e) 开始,然后进行“×”运算,最后进行最外面的“-”运 算。这种计算已被称为积极计算(eager evaluation), 因为运算是在其操作数成为可用后立即进行的。
但是,数据流多处理机完成上述操作只要用14个周期,如图9.2(c) 所示。假设所有外部输入(di,ei,fi,i=1,2…,8和c0)在进入do循环 前都是可用的。对于用4台处理机,则指令a1,a2,a3和a4在前三个周期内 已全部准备好执行。所得结果接着从第四周期开始起动a5,b1,a6和a7的执 行。数据驱动的链接作用如图9.2(c)所示,由于输出c8与所有前面的ci有 关,所以它最后一个得到。
第9章 数据流计算机系统结构
图9.2(a)的数据流图表示有24条指令要运行(8条除法、8条乘法和 8条加法)。数据流图与相关图或程序图很相似,唯一的区别是数据令牌 是沿数据流图中的边传送的。假定每次加、乘和除分别需要1、2和3个周 期完成操作。因此,在控制流单处理机上顺序执行24条指令要用48个周期 才能完成,如图9.2(b)所示。
在串归约(string reduction)模型中,每个需求者可 得到它自己计算用的单独的表达式副本。一个长的串表 达式可以用递归方式归约为单值。每个归约步都有一个 操作符,后面紧跟一个对所需要的相应输入操作数的引 用。操作符在其输入变量正在计算时将被挂起。当全部 变量被实在的值替代时,表达式才算是归约完毕。
相关文档
最新文档