490 likes | 653 Views
计算机系统结构 - 数据流计算机结构. << 上海大学计算机系统结构 >> 课程组. 四种驱动方式. 为了提高计算机并行处理能力,可能突破冯 · 诺依曼型的结构,寻求有利于开发高度并行功能的计算模型。 计算模型中不仅要考虑数据控制类型,更要考虑驱动方式(即控制机制)。 控制驱动、数据驱动、需求驱动、模式匹配驱动等四种驱动方式。. 控制驱动方式. 指令的执行次序受指令计数器的控制,这是冯 · 诺依曼型的结构中的驱动方式。 这种结构的特点是 “ 共享数据,串行执行 ” ,不利于对指令并行执行的支持。
E N D
计算机系统结构-数据流计算机结构 • <<上海大学计算机系统结构>> • 课程组
四种驱动方式 • 为了提高计算机并行处理能力,可能突破冯·诺依曼型的结构,寻求有利于开发高度并行功能的计算模型。 • 计算模型中不仅要考虑数据控制类型,更要考虑驱动方式(即控制机制)。 • 控制驱动、数据驱动、需求驱动、模式匹配驱动等四种驱动方式。
控制驱动方式 • 指令的执行次序受指令计数器的控制,这是冯·诺依曼型的结构中的驱动方式。 • 这种结构的特点是“共享数据,串行执行”,不利于对指令并行执行的支持。 • 但是,目前计算机领域仍然是这种驱动方式为主。只是对其进行不同的修改和完善。目的是增加并行处理能力。
数据驱动方式 • 只要程序中任一条指令所需的操作数已经齐备,就可立即启动执行(点火)。一条指令的运算结果又流向下一条指令,作为该指令的操作数来驱动执行。 • 不存在指令计数器;指令启动执行的时机取决于操作数具备与否;程序中各条指令的执行顺序仅仅由指令间的数据依赖关系决定。 • 只要有足够多的处理单元,凡是相互间不存在数据相关的指令都可以并行执行,充分利用了指令级的并行性。
需求驱动方式 • 一个操作仅在需要用到其输出结果时才开始启动。如果这时该操作由于操作数未到而不能得到输出结果,则该操作再去启动能得到它的各个输入数的操作,这样就把需求链一直延伸下去,直至遇到常数或外部输入的数据已经到达为止。然后再反方向地去执行。 • 由于该驱动方式只对需要用到其结果的操作求值,也即只执行最低限度的求值,免除了许多多余的计算,从总体而言,它的执行计算量很小。归约机是基于该驱动方式。
模式匹配驱动方式 • 计算的进行是由谓词模式匹配加以驱动的。程序的执行主要受控于寻找谓词的匹配和度量的归一操作,其中的谓词是代表客体之间关系的一种字符串模式。 • 该驱动模式主要适合求解非数值的符号演算。智能计算机就是基于该驱动模式。
数据流计算机的由来 • 冯·诺依曼型计算机的基本特点是在程序计数器的集中控制下顺序地执行指令,是以控制驱动方式工作的。 • 为了设计高性能的计算机系统结构,其中一个方法是突破冯·诺依曼型的结构,采用数据驱动执行方式而形成的数据流计算机。 • 美国MIT实验室的Jack Dennis 及其助手于1972年首先提出了数据流模型,并证明由此而设计的数据流计算机,其性能价格比高,较好的跟踪工艺技术进步的速度,能较方便地在应用领域中进行可编程应用。
基本原理 • 传统的冯·诺依曼计算机与数据流计算机的工作原理根本不同,它是在中央控制器控制下顺序执行的。数据流计算机是在数据的可用性控制下并行执行的。 • 数据流计算机里没有指令计数器,其指令执行靠数据记号(数据令牌data token)的可用性来进行,也就是指令的执行由数据来驱动,把控制流变为数据流。 • 数据流计算机里没有常规的变量概念,也就不存在共享数据单元的问题。程序顺序性仅是指令部分内部数据相关性控制,也就是只要当操作所需要的数据可用时,即启动指令执行(异步性)和所有操作都具有函数性,即所有指令都可以任何次序并发执行。 • 正是这些特性,数据流计算机可以使许多指令同时异步执行,预计隐含的并行度是很高的。
基本原理(cont.) • 数据流计算机当指令所需数据可用时,该指令即可执行。这说明指令的操作不受其他控制的约束。任何一条指令只要它所需要的数据齐全,且可用时都可以执行。 • 数据流计算机中没有变量的概念,也不设置状态,在指令间直接传送数据。因此操作结果不产生副作用,不改变机器的状态。从而具有纯函数的特点。 • 对指令来说,摆脱了外界强加于它的控制。多条指令在数据可用性驱动下同时并行执行; • 它可以直接支持函数语言,不仅有利于开发程序中各级的并发性,而且也有利于改善软件环境,提高软件的生产力。
指令格式 在数据流计算机中,一条指令包含两部分: • 操作包(operation packet ) • 数据令牌(data token)
指令格式(cont.) • 操作包(或指令包─instruction cell)通常由操作码、源操作数、后继指令地址组成。 • 又可以看成是由操作型和受处理单元影响的部分两者组成。操作型包括操作码、有关常数的指示及常数值、目标操作地址、本操作要求几个数据令牌的标志等信息,这些信息一旦设定后就不再改变。受处理单元影响的部分包括已经接收到的操作数值、数据令牌已到的标志、正在等待的数据令牌等信息。 • 操作包在存储器中将占据一定大小的空间。
指令格式(cont.) • 数据令牌通常由结果值和目标地址等组成。 • 数据令牌的实质是一种表示某一操作数或参数已准备就绪的标志。一旦执行某一操作的所有操作数令牌到齐,则标志这一操作是什么操作,以及操作结果所得出的数据令牌,将发送到哪一些等待此数据令牌的操作的第几个操作数部位等有关信息,都将作为一个消息包(message packet)传送到处理单元或操作部分予以执行。这样的消息包也称为操作包.
数据流程序图 • 数据流计算机的程序是用数据流语言编写的,其机器语言也就是数据流程序图。数据流语言主要目标是开发程序内隐含的并行性,便于程序设计,自然表达程序中的并行性,以及运行的高效率。 • 数据流语言是函数语言。在执行前需要翻译成数据流图(机器语言级程序)。它执行的是所谓点火原则:即一个操作可以点火前提是:它的所有输入值全部到达,操作开始进行,将输入值吃掉,产生输出数据。数据流是有向图,节点对应操作符,弧是数据令牌迁移的指针。
复制节点 • J.B.Dennis和J.E.Rumbaugh等提出用于数据流程序图的各种符号(即节点),并规定相应操作执行规则。 • 复制节点:数据复制结点,数据令牌x经过复制节点时执行操作,产生两个相同的数据令牌x1 和x2。逻辑复制结点,其复制结点为空心圆点,(数据复制结点为实心结点),控制令牌x经复制产生两个相同的控制令牌x1和x2 。
运算结点 • 根据操作功能可分为算术运算结点和逻辑运算结点。算术运算符有+、-、*、÷、+1、-1等。逻辑运算结点有∧(与)、∨(或)、N(非)、⊕(异或)等。按照输入端个数可把结点分为单输入结点和多输入结点两种。算术运算结点的箭头为实心,逻辑运算箭头为空心。
常数发生器结点 • 此类结点无输入线,只有一条输出线,其功能产生一个常数。 • 常数2的结点及其执行操作后产生数据令牌的情况,此令牌带有常数2。
条件分支节点 • 此类结点用于控制数据令牌传送时刻,通过空心箭头表示输入分支线输入的是控制令牌。常用分支结点有四种: • 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
条件分支节点(cont.) • T(true)的分支结点及其操作规则:当输入分支线上的数据令牌X和带有其值的控制令牌T都到达该节点,且输出线上没有数据令牌时,该分支结点操作立即进行,将输入分支线上的数据令牌原样传送到输出线上。 • F(false)的分支结点及其操作规则:其工作过程与T的类似,所不同的只是输入分支线上的数据令牌X和带有假值(false)的控制令牌F都到达该节点,且输出线上无数据令牌时,该分支结点才执行操作。
条件分支节点(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等。
节点组合 • 根据数据流程序图的需要,可以利用上述这几种单功能的操作节点组合成功能复杂的多功能节点。 • 例1:利用上述单功能操作节点实现一般高级语言中的条件语句:if true then G1 else G2 • 画出数据流程序图,其中的G1和G2都是各自独立的数据流程序图。
节点组合 • 例2利用上述单功能操作节点实现一般高级语言中的循环与句: • while P do G 或until P do G • 画出数据流程图,其中P是循环条件,G是循环体。
节点组合 • 例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 ) • }
小结 • 数据流程序图相当于数据流计算机中的机器语言。对于一般用户,如果直接用数据流程序图编写程序是很不方便的。数据流程序图与传统计算机中的高级语言和超高级语言相比,不易被用户接受。因此,必须研制适合于数据流计算机的高级语言,这种高级语言应该能够用近似于自然语言的方式最大限度地描述隐含的并行性,并具有易读,易于理解和调试,维护方便等优点。
数据流语言 • 数据流语言的研究还很不成熟,大致可以分为如下三类: • (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机采用(注:均为数据流计算机) 。
数据流语言性质(cont.) • (3) 不产生副作用:副作用是指使用了不当变量而产生数据相关,从而导致程序不能顺序执行。在数据流语言中不使用全局变量和公共变量,严格控制变量使用范围,采用赋值调用( Call by Value ),而不是传统机中的引用调用,这就是根本上解决了变量的同一名问题。赋值调用过程只复制变量,而不修改变量。因此,在子程序中决不修改调用程序传送来的变量,即各程序模块之间的输入和输出是完全隔离的。
数据流语言性质(cont.) • (4) 结果的局部性:在数据流计算机的指令中,没有长远起作用的数据依赖关系,数据流语言完全采用模块化结构,不是用全局变量,不允许全局赋值,对形式参量的赋值也有严格限制,因此,在数据流语言中每一个操作产生的结果都具有局部性。
数据流语言性质(cont.) • (5)循环程序迭代展开:一个循环程序可以用一个环行结构的数据流程序图表示,数据流计算机本身就是一种环行结构。因此,如果要把循环程序的不同次循环展开,进行并行计算,则必须在数据令牌中增加一种特殊的标记,这就引出了所谓的动态数据流计算的概念。
数据流计算机结构 • 数据流计算机根据对数据令牌方式的不同,通常把数据流计算机的结构分为 • 静态数据流计算机模型及其结构 • 动态数据流计算机模型及其结构
静态数据流计算机 • 静态数据流计算机的最主要特点是数据令牌没有标号。为了保证正确无误的工作。在任意给定时刻里,当数据流程序图中的结点操作时,其任何一条输入弧上就只能允许存在一个数据令牌。 • 在静态数据流机中,数据令牌是沿数据流程序图的弧流向操作结点。当所有操作数据都出现在输入弧上时,开始执行结点操作。任何时候只允许一个操作数呈现在一条弧上,否则后继指令不能被区分.
静态数据流计算机(cont.) • 操作过程是数据令牌出于更新部件的输入池中,它将数据传递到存储部件里的目标指令。凡已接收到全部所需数据令牌的指令都被“取指令部件”取出,加入到多条可执行指令的队列中,等待分派程序把他们按先进先出方式分配给处理部件中相应的空闲处理机并发执行。 • 各处理器产生的新的数据令牌形成结果的数据包(也称信息包),送到“更新部件”的输入池中,再由“更新部件”将这些数据令牌按它们的目的地址,送入存储部件指令池内相应指令有关部位。同时,“更新部件”将已收到全部必需的数据令牌的指令地址又“传送”给“取指令部件”。实际上它是以控制令牌的方式把这些已具备激活条件的指令地址送到“取指令部件”。
MIT-J.B.Dennis模型 (1) 存储部件(MS)由若干个指令单元组成.每个指令单元保存数据流程序中的一条指令,它与数据流程序图中的结点对应且由唯一的地址所指明. (2) 处理部件(PS),由对数据值进行基本运算的多个处理单元组成,可以并发执行已被激活的指令所要求地操作. (3) 分配网络(DN),它将处理部件产生的多个结果数据令牌依据其各自的目的地址分别传送到存储部件相应的指令单元中去. (4) 控制网络(CN)它将控制令牌由处理部件发送到存储部件相应的指令单元中. (5) 仲裁网络(AN),它将可执行的操作包由存储部件发送到处理部件,可以同时允许有多个操作包在多个通路上传送.
动态数据流计算机 • 动态数据流计算机最主要特征是让令牌带上标记。它可以在任意时刻在数据流程序图任一条弧上出现多个带不同标记的令牌。因为令牌的标记能识别该令牌时间先后相应关系的标号,所以不需要像静态数据流计算机那样用控制令牌来对指令间数据令牌的传送加以认可。这种方法能开拓程序中最大并行性。如果程序是循环的,则标记方法允许动态无拘束地进行跌代计算.。
动态数据流计算机(cont.) • 动态数据流计算机的同步是由匹配机构来实现的,数据令牌形成匹配部件完成数据令牌配对或成组且临时存储在某一个存储空间,直到所有操作数被比较,之后已匹配的指令组释放到更新部件,它形成执行指令,放入能执行队列中,然后执行。
动态数据流计算机(cont.) • 动态数据流计算机系统指令中的执行与“匹配部件”同步。处理部件中各处理单元输出的数据令牌送入到“匹配部件”的输入池,匹配部件将这些数据令牌打上标记,并配成对或组,暂时保存起来,直到指令的一对或一组数据令牌全部配齐而被激活,送往“更新部/取部件”。 • 每组数据令牌是执行某条指令所需要的,一般对二元操作就需要两个数据令牌。“更新/取部件”取出这些激活的指令加入到已配齐的操作数,然后再送往相应的可执行的指令队列。由“匹配部件”给每对或每组配齐的数据令牌加上不同的标记,可以区别处跌代执行的不同层次,从而可以将跌代循环展开,实现对其并行处理。
MIT-动态数据流计算机 • MIT的动态数据流计算机的基本结构,如图8-7所示,它由N个处理元件PE(Processing Element)和一个用于实现PE间通讯N*N的包交换开关网络组。每一个PE基本上是一台完整的计算机,主要包括有自己的程序/数据存储器、I结构存储器、标记匹配部件、算逻部件、打标记和对标记特征控制的部件及其他硬件
MIT-动态数据流计算机(cont.) • (1)入口有一个寄存器,此寄存器空时可以接收一个其他PE经开关网络送来的令牌,或是接收一个本PE输出口来的令牌。 • (2)等待匹配部件将已到的令牌暂时保存在其中的缓冲器中,直到带匹配标记的另一个令牌的到来。当所需两个数据令牌均已到达,且标记匹配,就将它们转送到取指令部件的缓冲器中。根据标记中的指示说明,从程序/数据存储器中取出相应指令,然后形成包含操作码、操作数和目的地的操作包,送到执行部件予以执行。执行部分有一个浮点算逻部件和一个用于确定一个新的操作名和目的地该用哪个PE的硬件。
MIT-动态数据流计算机(cont.) • (3)I结构存储器是一个带标记的专用存储器,用于存放类似数组的数据结构。如果操作数是结构数据,则该数据从I结构存储器中取得。I结构每一个元素有一位标志,当读出时,该元素的标志位为0,表示无值,就自动将读推迟。使用这种I结构可以避免过多的数值复制操作,节省大量存储空间和辅助操作开销。执行部分除处理I结构的读外,也完成存储的操作。
MIT-动态数据流计算机(cont.) • 4)在AIU或存储器产生结果配上新的标记和目的地PE号后,送往输出口。通过输出口的开关网络送往目标PE或不经过开关网络就直接送入本PE的输入口。 • 在PE各部件中为了避免在多个通路传输数据时发生冲突、阻塞或死锁,各个部件都设有相应的缓冲器。PE中没有程序计数器,但有一个存放已激活指令的列表,使已激活指令的执行是无序的。
静/动态的比较 • 静态数据流计算机与动态数据流计算机的相同点是:有多个处理部件,可以独立、异步地执行多条指令,都依靠数据令牌来传送操作数和激活指令。 • 两者不同点是在于采用了不同的通信方式和不同的同步方式。
优点 • (1) 高并行性。把程序转化为数据流图,较好的开拓了其并行性,它不仅可以取得构造规格化,而且可取得很大的并行性; • (2) 由于在指令中直接使用数值本身,而不是使用存放数值的地址,从而能实现无副作用的纯函数型程序设计方法,可以在过程级和指令级充分开发异步并行,可以把实际串行的问题用简单的办法展开成并行问题计算;
优点(cont.) • (3) 与VASI技术匹配,可以用VLSI技术,容易地实现数据流计算机中的许多的模块单元规则制造; • (4) 提高了程序设计的生产效率。由于采用函数程序设计语言,自动向量识别的能力大为提高,对数据流的分析、处理起来就很容易。比起控制流计算机使用的FORTRAN等语言,可提高程序设计的生产率。
缺点 • (1) 数据流型计算机与冯·诺依曼型计算机相比各种开销要大得多,使并行中所获的好处在实际应用领域中得不到补偿,例如指令级数据驱动引起每条指令额外流水线开销,使系统性能降低; • (2) 数据流程序占据过多的存储空间,且容易引起存储器访问的冲突;
缺点(cont.) • (3) 当指令单元和处理单元数目增加,使得系统规模扩大时,系统的瓶颈口将是通信机构包括开关网络巨增,会严重影响系统的成本; • (4) 数据流计算机完全放弃了传统的结构,独树一帜,不能吸收传统计算机研究中已经证明行之有效的许多成果。值得提出的是数据流语言尚不完善。用其描述隐含的并行性,使得程序的调试工作变得非常困难,目前还缺少有效的解决方法。
需解决的主要技术问题 • (1) 研制易于使用,易于用硬件实现的高级数据流语言。 • (2) 研究程序分解,分配给各个处理部件的算法。 • (3) 设计出性能价格比高的信息包交换网络,实现资源冲突的仲裁和数据令牌的分配等大量通信工作。 • (4) 对于静态和动态数据流计算机,都要求研制智能化的数据驱动机构。
需解决的主要技术问题(cont.) (5) 研究如何在数据流环境中高效率地处理复杂的数据结构。 • (6) 研制支持数据流运算的存储系统和存储分配方案。 • (7) 在广泛的应用领域内,对数据流计算机硬件和软件进行性能评测。 • (8) 研究数据流计算机的操作系统。 • (9) 开发数据流语言的跟踪调试工具。