一种粗粒度数据流架构中的数据复用和同步的方法、装置与流程

文档序号:15492014发布日期:2018-09-21 20:47阅读:99来源:国知局
本发明涉及计算机体系结构领域,尤其涉及一种数据流框架中,针对粗粒度的数据复用和同步的方法及其装置。
背景技术
:粗粒度的数据流架构主要通过编程模型来实现处理器核之间的数据依赖和程序块调度。在粗粒度数据流结构中,程序被划分为多个程序块,程序块之间通过数据相关建立依赖关系,不同的数据块构成了数据流图。粗粒度数据流架构通过任务调度模块将满足依赖条件的程序块调度到空闲的处理器核上,程序块执行结束后更新数据流图中的数据依赖关系,并将可以执行的新的程序块调度到空闲处理器核上执行。在粗粒度数据流结构中,不同的核可能在同一个芯片中,也可能在不同芯片中,每个处理器核的执行模式与控制流处理器一致。典型的粗粒度数据流架构有欧洲的terafluxproject和intel的runnemede架构。由于程序块之间是有数据依赖的,往往前一个程序块执行完之后,下一个程序块才可以被调度。这种粗粒度的数据流结构的实现,需要通过任务调度模块实时地调度程序块,并且要维护数据流图的数据依赖关系,这使得处理器核可能有很多时间是空闲的,特别对于处理器核的规模非常庞大的情况下,只由一个或几个任务调度模块进行调度往往无法充分利用处理器核的性能。我们提出了一种粗粒度数据流架构中的数据复用和同步的方法,这种方法可以使程序块之间自动地进行数据复用和同步的操作,而减少了任务调度模块的工作,使得数据流架构中的程序运行地更为高效。技术实现要素:针对现有技术中的上述不足,本发明提供了一种粗粒度数据流架构中的数据复用和同步的方法及其装置。本发明的技术方案中,实现数据复用和同步机制需要增加专用的指令,并在代码按照规则插入专用指令;而且需要在硬件结构中增加逻辑:每个处理器核中添加一个同步控制表,以及增加专用指令译码和发射的控制逻辑。具体而言,本发明的技术方案如下:一方面,本发明提供了一种粗粒度数据流架构中的数据复用和同步的方法,该方法包括:步骤1、在多个程序块中,当一程序块中的数据需要被其他程序块使用时,在该需要被使用的数据所在的程序块中加入复制指令;当指向同一程序块的复制指令数量大于1时,在该程序块中加入同步指令;其中,标注发送复制指令的程序块为父节点,接受复制指令的程序块为子节点;步骤2、监视各个程序块接收到的复制指令的数量、该程序块对应的各个父节点的复制指令数量,当所述接收到的复制指令的数量与所述各个父节点的复制指令数量相等时,运行该程序块;步骤3、当所述步骤2中的程序块运行完,若该程序块中包含所述同步指令,则发射该同步指令。优选的,所述复制指令用于将本程序块访问或计算得到的数据传输给其他的程序块使用。优选的,所述复制指令包括:需要传输的数据、数据要送达的程序块的id、该程序块所在的处理器核的id,以及数据要放置到的寄存器或内存的地址。优选的,所述同步指令包括:同步指令想要传送到的目的地的处理器的id、程序块的id,以及标注发送所述同步指令的程序块是父节点的第几个孩子节点。优选的,在所述步骤2中,各个程序块接收到的复制指令的数量、该程序块对应的各个父节点的复制指令数量记录在一复制指令表中,以用于监视,所述复制指令表中还包括各个程序块的父节点的程序块id。优选的,当处理器接收到复制指令传递来的消息后,修改所述复制指令表中对应的程序块的接收到的复制指令的数量。优选的,当所述步骤2中的程序块运行完,将所述复制指令表中对应的程序块的接收到的复制指令的数量重置为0。优选的,增加一同步控制表,用于维护各个程序块的同步指令接受的状态;所述同步控制表包括:每个程序块所拥有的子节点的数量、每个程序块所拥有的所有子节点的childindex;所述childindex包含两个bit位,一个为receive位,用于表示是否接收到同步指令消息,在复制指令运行前置0,接收到同步指令消息后置1;另一个为ready位,用于标志该子节点是否处于ready状态,所有childindex的这一bit为1时开始运行复制指令,并在该程序块的所有复制指令执行完后置0。优选的,当一程序块的所有子节点的receive位均为1时,将所有的ready位置1,并将所有的receive位置0。在本发明的另一个方面,还提供了一种粗粒度数据流架构中的数据复用和同步的装置,所述装置包括至少一个处理器,所述处理器中包括复制指令译码和运算模块、同步指令译码和运算模块、监视器模块;所述复制指令译码和运算模块用于当该处理器中的一程序块中的数据需要被其他程序块使用时,在该需要被使用的数据所在的程序块中加入复制指令,以及用于复制指令的逻辑运算;所述同步指令译码和运算模块用于当指向同一程序块的复制指令数量大于1时,在该程序块中加入同步指令,以及用于同步指令的逻辑运算;所述监视器模块监视各个程序块接收到的复制指令包的数量。优选的,所述复制指令程序包至少包括程序块接收到的复制指令的数量、该程序块对应的各个父节点的复制指令数量;当所述接收到的复制指令的数量与所述各个父节点的复制指令数量相等时,运行该程序块;其中,标注发送复制指令的程序块为父节点,接受复制指令的程序块为子节点。优选的,所述复制指令用于将本程序块访问或计算得到的数据传输给其他的程序块使用。优选的,所述复制指令包括:需要传输的数据、数据要送达的程序块的id、该程序块所在的处理器核的id,以及数据要放置到的寄存器或内存的地址。优选的,所述同步指令包括:同步指令想要传送到的目的地的处理器的id、程序块的id,以及标注发送所述同步指令的程序块是父节点的第几个孩子节点。优选的,在所述步骤2中,各个程序块接收到的复制指令的数量、该程序块对应的各个父节点的复制指令数量记录在一复制指令表中,以用于监视,所述复制指令表中还包括各个程序块的父节点的程序块id。优选的,当处理器接收到复制指令传递来的消息后,修改所述复制指令表中对应的程序块的接收到的复制指令的数量。优选的,当所述步骤2中的程序块运行完,将所述复制指令表中对应的程序块的接收到的复制指令的数量重置为0。优选的,增加一同步控制表,用于维护各个程序块的同步指令接受的状态;所述同步控制表包括:每个程序块所拥有的子节点的数量、每个程序块所拥有的所有子节点的childindex;所述childindex包含两个bit位,一个为receive位,用于表示是否接收到同步指令消息,在复制指令运行前置0,接收到同步指令消息后置1;另一个为ready位,用于标志该子节点是否处于ready状态,所有childindex的这一bit为1时开始运行复制指令,并在该程序块的所有复制指令执行完后置0。优选的,当一程序块的所有子节点的receive位均为1时,将所有的ready位置1,并将所有的receive位置0。与现有技术相比,本发明的技术方案可以使程序块之间自动地进行数据复用和同步的操作,而减少了任务调度模块的工作,使得数据流架构中的程序运行地更为高效。附图说明下面结合附图和实例图对本发明进行进一步说明:图1为本发明的节点的ack指令示意图;图2为本发明的处理器核中copy指令和ack指令的译码和运算的逻辑示意图;图3为本发明的同步控制表示意图;图4为本发明的数据复用和同步示意图。具体实施方式为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施实例进行详细的描述。需要指出的是,本实施例中所列举的具体应用、参数等,均是实现本发明技术方案的优选的实施方式,而不能作为限定本发明的保护范围来理解。此外,本具体实施方式中所列举的不同的实施例,除非本发明中有明确的指示或说明,否则,该些具体实施例中的具体方案之间是可以相互借鉴和结合使用的。实施例1实现数据复用和同步机制需要增加专用的指令,并在代码按照规则插入专用指令;而且需要在硬件结构中增加逻辑:每个处理器核中添加一个同步控制表,以及增加专用指令译码和发射的控制逻辑。一、数据复用和同步指令为了实现粗粒度数据流架构中的数据复用和同步,我们加入了两条指令,复制指令(copy)和同步指令(ack)。copy指令是用于将本程序块访存或计算得到的数据传输给其他的程序块使用。copy指令的格式如下表1所示,包含了要传输的数据、数据要送到的程序块(programblock)的id、该程序块所在的处理器核(core)的id,以及数据要放置到的寄存器或者内存的地址。我们标注发送copy指令的程序块为父节点,接受copy指令的程序块为子节点。表1ack指令的格式如下表2所示,是由ack想要传送到的目的地的处理器的id和程序块的id,以及标注发送ack的程序块是父节点的第几个孩子(childnodeindex)。表2childnodeindexprogramblockidcoreid二、在程序块中加入数据复用和同步指令结合图1,当一个数据需要被其他程序块使用时,就在数据所在的程序块中插入一条copy指令。一个程序块中可以有多条copy指令,这些copy指令可以指向不同的程序块。父节点可以有多个子节点,我们称指向同一子节点的所有copy指令为一个数据复用簇(copycluster),如图1中rogramblock0有三个子节点。针对每个copycluster,我们都会在子节点中加入一个ack指令。本领域技术人员可以理解,该ack指令,即同步指令并不是必须设置的,例如我们可以选择设置一空置或不起作用的ack指令及其控制表,以在需要时启用,也可以在一程序块中存在数据复用簇(copycluster)的时候,才给该程序块加入这一ack指令,并设置对应的控制表以监视及修改各个ack指令相关的参数,这些具体的设置方式是本领域技术人员在本方案的基础上可以进行的调整,这类调整均应当视为落入本发明的保护范围之内。在子节点结束到一个copycluster内的所有copy指令的数据,就会发射ack指令,向父节点返回ack消息。同样,一个孩子节点可以有多个父亲,所以孩子节点内可能会有多个ack指令,如图1中programblock3和programblock4中就有两个ack指令。三、硬件开销结合图2所示,下面具体阐述本发明的处理器核中会增加copy指令和ack指令的译码和运算的逻辑。增加一个监视器,用于检测各个programblock接收到copy包的数量。监视器会维护一个copy表,其结构如图2所示。对于每个programblock都会记录其父节点的程序块id,各个父节点的copy指令数量(copy_counter),以及目前接收到的copy消息的数量(receivecount)。当处理器接受到copy指令传递来的消息后,根据copy消息内的programblock参数,去修改对应的receivecount;当所有receivecount与对应的copycounter相等时,处理器就会认为所有的数据已经就位,就开始运行programblock;当本次programblock运算完,就会发射程序块中的ack指令,并将receivecount重新置位为0。结合图3所示,本发明的一个具体实施方式中,还增加了同步控制表的部分,用于维护每个处理器核中的programblock的ack接受的状态,其结构如图3所示。其中ack_couter是存储每个programblock所拥有实施例2下面以一具体的实施例对数据复用和同步过程进行详细的举例阐述。我们假设core0上有两个程序块programblock0和programblock2;core1上有两个程序块programblock1和programblock3。其中programblock0有两个子节点,programblock1有一个子节点,如图4所示。假设programblock0和programblock1中共有4条copy指令,分别是:相对应地programblock2和programblock3中会有三条ack指令:1、在初始状态时,需要配置监视器中的parentprogramblock和copy_count,和同步控制表中的ack_counter。同时把监视器的copy表中的receivecount置0,把同步控制表中的receive全部置0,ready全部置1。2、core0检测到programblock0没有数据依赖,开始执行programblock0。执行过程中发射了两条copy指令i0和i1。copy指令全部执行完后,将两个copycluster对应的子节点的ready位置0。3、core0接受到i0的消息后,把copy表中programblock2区域的programblock0对应的receivecount加一。4、core1接受到i1的消息后,把copy表中programblock3区域的programblock0对应的receivecount加一。5、programblock0运行完后,当core0检测到copy表中,programblock2中的所有父节点(即programblock0)的copy_counter均与receivecount相等。说明programblock2所需的数据都准备好了,于是开始运行programblock2。6、programblock2执行的最后会执行程序块中的ack00指令,然后结束本程序块的运行,core0会将copy表中的receivecount重置为0。7、如果这个程序是需要多次迭代运算的,那么programblock2要等待数据准备好后再次运行;否则运行完就提交。8、core0接受到ack00的消息后,将同步控制器的programblock0的第一个子节点的receive位置1。9、core1检测到programblock1没有数据依赖,开始执行programblock1(步骤8-10过程可以和步骤2-8并行执行)。执行过程中发射两条copy指令i2和i3,因为i2和i3都属于programblock3的copycluster,所以将同步控制表中programblock1区域的programblock3对应的ready位置0。10、core1接受到i2的消息后,把copy表中programblock3区域的programblock1对应的receivecount加一。11、core1接受到i3的消息后,把copy表中programblock3区域的programblock1对应的receivecount加一。12、programblock1运行完后,当core1检测到copy表中,programblock3中的所有父节点(即programblock0和programblock1)的copy_counter均与receivecount相等。说明programblock3所需的数据都准备好了,于是开始运行programblock3。13、programblock3执行的最后会执行程序块中的ack01和ack10指令,然后结束本程序块的运行,core1会将copy表中的receivecount重置为0。14、如果这个程序是需要多次迭代运算的,那么programblock3要等待数据准备好后再次运行;否则运行完就提交。15、core0接受到ack01的消息后,将同步控制器的programblock0的第二个子节点的receive位置1。同时core0会发现programblock0的同步控制表中有两个子节点收到了ack,其数目与ack_counter相等。此时把同步控制表中的receive全部置0,ready全部置1。16、如果这个程序是需要多次迭代运算的,那么在同步控制表复位后,core0可以再次运行programblock0。17、core1接受到ack10的消息后,将同步控制器的programblock1的第一个子节点的receive位置1。同时core1会发现programblock1的同步控制表中有一个子节点收到了ack,其数目与ack_counter相等。此时把同步控制表中的receive全部置0,ready全部置1。18、如果这个程序是需要多次迭代运算的,那么在programblock0结束运行后,core0空闲时可以再次运行programblock0。programblock1也是同样的。实施例3在又一个具体的实施例中,本发明的技术方案还可以以装置或系统的形式出现,该装置或系统可以是包括单个处理器核的,也可以是多个处理器核的,既可以在单处理器中进行数据块之间的复制控制和同步控制,也可以用于多处理器系统中的数据块之间的复制控制和同步控制。另外需要指出的是,该实施例3中的优选技术方案,可以结合其他实施例中所使用的方法或算法。该装置包括至少一个处理器,所述处理器中包括复制指令译码和运算模块、同步指令译码和运算模块、监视器模块;所述复制指令译码和运算模块用于当该处理器中的一程序块中的数据需要被其他程序块使用时,在该需要被使用的数据所在的程序块中加入复制指令,以及用于复制指令的逻辑运算;所述同步指令译码和运算模块用于当指向同一程序块的复制指令数量大于1时,在该程序块中加入同步指令,以及用于同步指令的逻辑运算;所述监视器模块监视各个程序块接收到的复制指令包的数量。优选的,所述复制指令程序包至少包括程序块接收到的复制指令的数量、该程序块对应的各个父节点的复制指令数量;当所述接收到的复制指令的数量与所述各个父节点的复制指令数量相等时,运行该程序块;其中,标注发送复制指令的程序块为父节点,接受复制指令的程序块为子节点。优选的,所述复制指令用于将本程序块访问或计算得到的数据传输给其他的程序块使用。优选的,所述复制指令包括:需要传输的数据、数据要送达的程序块的id、该程序块所在的处理器核的id,以及数据要放置到的寄存器或内存的地址。优选的,所述同步指令包括:同步指令想要传送到的目的地的处理器的id、程序块的id,以及标注发送所述同步指令的程序块是父节点的第几个孩子节点。优选的,在所述步骤2中,各个程序块接收到的复制指令的数量、该程序块对应的各个父节点的复制指令数量记录在一复制指令表中,以用于监视,所述复制指令表中还包括各个程序块的父节点的程序块id。优选的,当处理器接收到复制指令传递来的消息后,修改所述复制指令表中对应的程序块的接收到的复制指令的数量。优选的,当所述步骤2中的程序块运行完,将所述复制指令表中对应的程序块的接收到的复制指令的数量重置为0。优选的,增加一同步控制表,用于维护各个程序块的同步指令接受的状态;所述同步控制表包括:每个程序块所拥有的子节点的数量、每个程序块所拥有的所有子节点的childindex;所述childindex包含两个bit位,一个为receive位,用于表示是否接收到同步指令消息,在复制指令运行前置0,接收到同步指令消息后置1;另一个为ready位,用于标志该子节点是否处于ready状态,所有childindex的这一bit为1时开始运行复制指令,并在该程序块的所有复制指令执行完后置0。优选的,当一程序块的所有子节点的receive位均为1时,将所有的ready位置1,并将所有的receive位置0。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。本发明参照本发明实施例的方法、方框图、单线图、仿真图进行描述的,以上所述仅为本发明的实施例而已,并不限定本发明,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1