第八章 数据流计算机结构

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机系统结构 -数据流计算机结构
四种驱动方式
为了提高计算机并行处理能力,可能突 破冯· 诺依曼型的结构,寻求有利于开发 高度并行功能的计算模型。 计算模型中不仅要考虑数据控制类型, 更要考虑驱动方式(即控制机制)。 控制驱动、数据驱动、需求驱动、模式 匹配驱动等四种驱动方式。

控制驱动方式
数据百度文库语言性质(cont.)

(4) 结果的局部性:在数据流计算机的指 令中,没有长远起作用的数据依赖关系, 数据流语言完全采用模块化结构,不是 用全局变量,不允许全局赋值,对形式 参量的赋值也有严格限制,因此,在数 据流语言中每一个操作产生的结果都具 有局部性。

基本原理(cont.)
数据流计算机当指令所需数据可用时,该指令即可执 行。这说明指令的操作不受其他控制的约束。任何一 条指令只要它所需要的数据齐全,且可用时都可以执 行。 数据流计算机中没有变量的概念,也不设置状态,在 指令间直接传送数据。因此操作结果不产生副作用, 不改变机器的状态。从而具有纯函数的特点。 对指令来说,摆脱了外界强加于它的控制。多条指令 在数据可用性驱动下同时并行执行; 它可以直接支持函数语言,不仅有利于开发程序中各 级的并发性,而且也有利于改善软件环境,提高软件 的生产力。

条件分支节点
此类结点用于控制数据令牌传送时刻, 通过空心箭头表示输入分支线输入的是 控制令牌。常用分支结点有四种: if true then X→XT if false then X→XF if true then X→XT else X→XF if false then X→XF else X→XT
节点组合
根据数据流程序图的需要,可以利用上 述这几种单功能的操作节点组合成功能 复杂的多功能节点。 例1: 利用上述单功能操作节点实现一般 高级语言中的条件语句: if true then G1 else G2 画出数据流程序图,其中的G1和G2都是 各自独立的数据流程序图。

节点组合
例2 利用上述单功能操作节点实现一般 高级语言中的循环与句: while P do G 或 until P do G 画出数据流程图,其中P是循环条件,G 是循环体。

数据流程序图
数据流计算机的程序是用数据流语言编写的, 其机器语言也就是数据流程序图。数据流语言 主要目标是开发程序内隐含的并行性,便于程 序设计,自然表达程序中的并行性,以及运行 的高效率。 数据流语言是函数语言。在执行前需要翻译成 数据流图(机器语言级程序)。它执行的是所 谓点火原则:即一个操作可以点火前提是:它 的所有输入值全部到达,操作开始进行,将输 入值吃掉,产生输出数据。数据流是有向图, 节点对应操作符,弧是数据令牌迁移的指针。
条件分支节点(cont.)
开关分支结点用椭圆表示。开关分支解带你操 作执行规则:当输入分支线上出现数据令牌X 时,若控制输入分支线上令牌是真值(true),且 T输出线上无数据令牌时,该结点执行结果是 把X送到T输出线上。 相反,如控制令牌是假值(false),且F输出线上 无数据令牌,该结点执行结果是把X送到F输出 线上。

条件分支节点(cont.)

合并结点及其操作执行规则:它根据到 达的控制令牌带的是真值T还是假值F决 定把T输入线上X还是把F输入线上X送到 输出线上。因此,其作用正好和开关结 点相反。
条件操作结点
该结点用菱形表示,它有一条或数条数据 令牌输入分支线和一条控制令牌输入分 支线。根据数据令牌所带数值的某个特 征(或若干输入数据令牌所带数值的某 个关系)作出判断,最终在输入线上产 生一个控制令牌。特征和关系同常包括: X>0,X=0,X<0,及X>Y, X=Y,X<Y 等。

条件分支节点(cont.)

T(true)的分支结点及其操作规则:当输入分支 线上的数据令牌X和带有其值的控制令牌T都到 达该节点,且输出线上没有数据令牌时,该分 支结点操作立即进行,将输入分支线上的数据 令牌原样传送到输出线上。 F(false)的分支结点及其操作规则:其工作过程 与T的类似,所不同的只是输入分支线上的数 据令牌X和带有假值(false)的控制令牌F都到达 该节点,且输出线上无数据令牌时,该分支结 点才执行操作。

需求驱动方式
一个操作仅在需要用到其输出结果时才开始 启动。如果这时该操作由于操作数未到而不 能得到输出结果,则该操作再去启动能得到 它的各个输入数的操作,这样就把需求链一 直延伸下去,直至遇到常数或外部输入的数 据已经到达为止。然后再反方向地去执行。 由于该驱动方式只对需要用到其结果的操作 求值,也即只执行最低限度的求值,免除了 许多多余的计算,从总体而言,它的执行计 算量很小。归约机是基于该驱动方式。

节点组合
例3 给定一个自然数x ,求它的阶乘x! 。画 出数据流程序图。(如果C语言来实现) main ( ) { int x , i ; scanf ( “x = %d”, x); for ( i = x, i>l; i-- ) x = x * i; printf ( “ x ! = %d \n “, x ) }

指令格式
在数据流计算机中,一条指令包含两部分: • 操作包(operation packet ) • 数据令牌(data token)
指令格式(cont.)
• 操作包(或指令包─instruction cell)通常由操作 码、源操作数、后继指令地址组成。 • 又可以看成是由操作型和受处理单元影响的部分两 者组成。操作型包括操作码、有关常数的指示及常 数值、目标操作地址、本操作要求几个数据令牌的 标志等信息,这些信息一旦设定后就不再改变。受 处理单元影响的部分包括已经接收到的操作数值、 数据令牌已到的标志、正在等待的数据令牌等信息 。 • 操作包在存储器中将占据一定大小的空间。

基本原理
传统的冯· 诺依曼计算机与数据流计算机的工作原理 根本不同,它是在中央控制器控制下顺序执行的。 数据流计算机是在数据的可用性控制下并行执行的。 数据流计算机里没有指令计数器,其指令执行靠数 据记号(数据令牌data token)的可用性来进行,也就 是指令的执行由数据来驱动,把控制流变为数据流。 数据流计算机里没有常规的变量概念,也就不存在 共享数据单元的问题。程序顺序性仅是指令部分内 部数据相关性控制,也就是只要当操作所需要的数 据可用时,即启动指令执行(异步性)和所有操作都 具有函数性,即所有指令都可以任何次序并发执行。 正是这些特性,数据流计算机可以使许多指令同时 异步执行,预计隐含的并行度是很高的。
运算结点

根据操作功能可分为算术运算结点和逻 辑运算结点。算术运算符有+、-、*、 ÷、+1、-1等。逻辑运算结点有∧(与)、 ∨(或)、N(非)、⊕(异或)等。按照输入端 个数可把结点分为单输入结点和多输入 结点两种。算术运算结点的箭头为实心, 逻辑运算箭头为空心。
常数发生器结点
此类结点无输入线,只有一条输出线, 其功能产生一个常数。 常数2的结点及其执行操作后产生数据令 牌的情况,此令牌带有常数2。
指令格式(cont.)
数据令牌通常由结果值和目标地址等组成。 数据令牌的实质是一种表示某一操作数或参数 已准备就绪的标志。一旦执行某一操作的所有 操作数令牌到齐,则标志这一操作是什么操作, 以及操作结果所得出的数据令牌,将发送到哪 一些等待此数据令牌的操作的第几个操作数部 位等有关信息,都将作为一个消息包(message packet)传送到处理单元或操作部分予以执行。 这样的消息包也称为操作包.

数据流语言性质(cont.)

(3) 不产生副作用:副作用是指使用了不当变 量而产生数据相关,从而导致程序不能顺序执 行。在数据流语言中不使用全局变量和公共变 量,严格控制变量使用范围,采用赋值调用 ( Call by Value ), 而不是传统机中的引用调用, 这就是根本上解决了变量的同一名问题。赋值 调用过程只复制变量,而不修改变量。因此, 在子程序中决不修改调用程序传送来的变量, 即各程序模块之间的输入和输出是完全隔离的。

模式匹配驱动方式
计算的进行是由谓词模式匹配加以驱动的。 程序的执行主要受控于寻找谓词的匹配和度 量的归一操作,其中的谓词是代表客体之间 关系的一种字符串模式。 该驱动模式主要适合求解非数值的符号演算。 智能计算机就是基于该驱动模式。

数据流计算机的由来
冯· 诺依曼型计算机的基本特点是在程序计数器的 集中控制下顺序地执行指令,是以控制驱动方式工 作的。 为了设计高性能的计算机系统结构,其中一个方法 是突破冯· 诺依曼型的结构,采用数据驱动执行方 式而形成的数据流计算机。 美国MIT实验室的Jack Dennis 及其助手于1972年首 先提出了数据流模型,并证明由此而设计的数据流 计算机,其性能价格比高,较好的跟踪工艺技术进 步的速度,能较方便地在应用领域中进行可编程应 用。

复制节点

J.B.Dennis和J.E.Rumbaugh等提出用于数据流程 序图的各种符号(即节点),并规定相应操作 执行规则。 复制节点 :数据复制结点,数据令牌x经过复 制节点时执行操作,产生两个相同的数据令牌 x1 和x2。逻辑复制结点,其复制结点为空心圆 点,(数据复制结点为实心结点),控制令牌 x经复制产生两个相同的控制令牌x1和x2 。
数据流语言
数据流语言的研究还很不成熟,大致可以分为如下 三类: (1) 单赋值预言(single assignment language):包括 美国加州大学Irvine分校研制的ID语言( Irvine Data Flow Language )和美国MIT科学试验室的Dennis教 授于1979年提出的VAL语言( Value Algorithmic Language ) 。 (2) 函数类语言( Functional Language ) :比较著名 的有美国犹他大学研制的FP语言( Functional Programming Language ). 命令类语言(Command Language ):目前,美国依 阿华州立大学正在研制此类语言,并研制了把命令 类语言转换成数据流语言的编译器。

小结

数据流程序图相当于数据流计算机中的机器语 言。对于一般用户,如果直接用数据流程序图 编写程序是很不方便的。数据流程序图与传统 计算机中的高级语言和超高级语言相比,不易 被用户接受。因此,必须研制适合于数据流计 算机的高级语言,这种高级语言应该能够用近 似于自然语言的方式最大限度地描述隐含的并 行性,并具有易读,易于理解和调试,维护方 便等优点。
指令的执行次序受指令计数器的控制, 这是冯· 诺依曼型的结构中的驱动方式。 这种结构的特点是“共享数据,串行执 行”,不利于对指令并行执行的支持。 但是,目前计算机领域仍然是这种驱动 方式为主。只是对其进行不同的修改和 完善。目的是增加并行处理能力。

数据驱动方式
只要程序中任一条指令所需的操作数已经齐备, 就可立即启动执行(点火)。一条指令的运算 结果又流向下一条指令,作为该指令的操作数 来驱动执行。 不存在指令计数器;指令启动执行的时机取决 于操作数具备与否;程序中各条指令的执行顺 序仅仅由指令间的数据依赖关系决定。 只要有足够多的处理单元,凡是相互间不存在 数据相关的指令都可以并行执行,充分利用了 指令级的并行性。

数据流语言性质

(1) 并行性好:指令的执行顺序仅受程序 中数据相关性的约束,而与指令在存储 器中存放的位置(即地址)无关,因此,数 据流语言能够以自然的方式最大限度地 表达程序中的并行性。
数据流语言性质(cont.)
(2) 单赋值规则:根据单赋值规则,在所有语 句的左边,同一变量名只能出现一处,即要为 任何一个重新赋值的变量选择一个从未用过的 新名字,而且在以后所有引用中都使用这个新 名字。 单赋值规则使程序清晰,易于理解,为程序的 并行执行提供了一种新方法。该规则由Tesler 和Enea于1969年提出,被法国LAU机和英国的 Manchester机采用(注:均为数据流计算机) 。
相关文档
最新文档