- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 数据流机和规约机 目录 数据流机 基于数据驱动的,使用数据流语言 规约机 基于需求驱动的,使用函数式语言 数据流计算机 数据驱动的概念 数据流程序图和语言 数据流计算机的结构 数据流机器存在的问题 数据驱动的概念 Von Neumann型计算机的特点 在程序计数器集中控制下,顺序地执行指令 以控制流(Control Flow)方式工作 可以在系统结构、程序语言、编译技术等方面改进 很难最大限度地发掘出计算的并行性 Fortran程序 READ *,A,B,C X1=2*A D=SQRT(B*B-4*A*C) D=D/X1 X2=-B/X1 X1=X2+D X2=X2-D PRINT *,X1,X2 END 数据流方式 数据驱动方式(Data Driven) 只要一条或一组指令所要求的操作数全部准备就绪,就可立即激发相应的指令或指令组执行 不需要程序计数器 指令执行是无序的,完全受数据流的驱动 只要数据不相关和资源可以利用,就可以并行 数据相互关系 控制驱动的控制流方式的特点 通过访问共享存储单元让数据在指令之间传递 指令执行的顺序隐含与控制流中,但却可以显示使用专门的控制操作符来实现并行处理 指令执行的顺序受程序计数器控制 受控制令牌所支配 数据驱动的数据流方式 只要一条或一组指令所要求的操作数全部准备就绪,就可立即激发相应的指令或指令组执行 执行结果的输出将送往等待这一数据的下一条或下一组指令 不需要程序计数器 指令的执行基本上是无序的,完全受数据流的驱动,与指令在程序中出现的先后次序无关 程序设计者完全摆脱了检查和定义程序中所有可能存在的并行性这一繁重工作,只要数据不相关且资源可以利用,就可以并行 数据驱动的数据流方式特点 没有共享变量的概念,即没有共享存储数据的概念 指令执行顺序只受指令中数据相关性的制约 数据是以数据令牌方式直接在指令之间传递 数据令牌:是一种表示操作数或参数已准备就绪的标志 数据流计算模型 数据驱动计算 是按输入数据可用性决定的次序进行 所要求的输入数据全部就绪,即可驱动操作执行 提前求值策略 需求驱动计算 是按数据需求决定的次序进行 按需求值,只有当某一函数需要用到某一自变量时,才驱动对该变量的求值操作 滞后求值策略 减少不必要的求值,辅助开销少,有利于提高系统的效率 数据流的语义 异步性(Asynchriny):指一旦操作数到齐就开始操作 函数性(Functionality):指每一数据流操作都是消耗一组输入值,产生一组输出值而不发生副作用(Side Effect),具有变量出现在赋值语句左边仅一次的单赋值特性,从而保证任何两个并发操作可以按任意次序执行,而不会发生相互干扰 数据流程序 用有向图表示指令级的数据流程序,数据流机器的机器语言 有多个结点(Node),并用一些弧(Arc)把它们连接而成 每一结点用圆圈或三角形或其他特殊符号表示,处理部件 结点内的符号或字母表示一种操作,操作符(Actor) 举例:计算z=(a+b)*(a-b) 数据流程序的执行过程 常数产生的结点(Identity) 没有输入端,只产生常数,激发后输出带常数的令牌 算逻运算操作结点(Operator) 主要包括常用的+、-、*、/、开方等算术运算及非、与、或、异或、或非等布尔逻辑运算,激发后输出带相应操作结果的令牌 复制操作结点(Copy) 是数据的多个复制,也可以是控制量的多个复制 复制操作结点(Copy) 判定操作结点(Decider) 对输入数据按某种关系进行判断和比较,激发后再输出控制端给出带逻辑值真或假的控制令牌 控制类操作结点 举例1:具有条件分支结构的数据流程序 If x0 z=x+y Else z=x-y 举例2:具有循环结构的数据流程序 实现对x循环累加,直到x值超过1000为止,结果为z 活动模片表示法 Activity Templete 数据流看成是一组活动模片组成的集合体 每一个活动模片相应于数据流程序图中一个或多个操作结点,且由4个域组成,1个操作域,2个操作数域和1个目的域。 举例1:计算z=(a+b)*(a-b) 举例2: If x0 z=x+y Else z=x-y 活动模片就是结点在数据流机器内部具体实现时的存储映像,认为是数据流机的可执行的机器代码程序,有硬件直接解释执行 数据流机操作系统中的分派程序(Allocator),就是根据活动模片数据流程序图来调度各个活动模片,分配给多个处理器并行执行 数据流程序图实际上是数据流机的机器语言,直观易懂,但编程效率很低,难以接受 单赋值语言 在程序中,每个量均只赋值一次,即同一个量名在不同赋值语句的左部最多只出现一次。 美国的ID(Irvine Data Flow)语言、VAL(Value Orie
文档评论(0)