一种无回边数据流循环方法、系统、装置、芯片与流程

文档序号:13760165阅读:248来源:国知局
一种无回边数据流循环方法、系统、装置、芯片与流程

本发明涉及数据流体系结构技术领域,特别涉及一种无回边数据流循环方法、系统、装置、芯片。



背景技术:

当前超级计算领域受功耗限制在推向E级计算这一节点时遇到了巨大的阻力,数据流体系结构以其优秀的并行特点和性能功耗比再次被广泛关注,大规模科学计算应用在数据流体系结构实现时,可以将大规模的数据划分成小块,将处理小块数据的逻辑转化为数据流图,将数据流图转化为一串数据流指令,即内核,映射到数据流处理器中,不同的小块作为独立的上下文流式地注入数据流处理器,这种动态数据流方式指令利用率高,不同层的数据流图犹如流水线般运行,上下文吞吐量大。

数据流内核部分需要有支持循环来保证高级语言到数据流指令的正确映射,然而不同于传统冯诺依曼结构,数据流结构没有统一的程序计数器做支持,需要通过复杂的循环相关的指令做支持,图1展示了一种常见的数据流循环的实现方式,图1中所示是一个累加的过程,这种方法通过一个特殊的Merge指令(101、102)和Select指令(103、104)完成循环逻辑,然而这种方法在实现上述动态流水的数据流的过程中有两个关键的问题:

1.循环间不能形成流水,由于传统的循环方式在处理循环间依赖时具备回边,所以各次循环只能单独进行,上一次循环完成后才能进行下一次的循环,例如图1中的f具备多级指令流水,而循环内具备执行条件的指令也只有一级,效率低下。

2.循环内不同上下文的循环不可同时进入循环,是第一个问题的衍生,假如f具备100级流水,而循环次数为20次,那么为了保证循环内指令的流水效率,最佳情况是不同上下文的循环可以同时进入循环,充满流水线。

综上两个问题,传统带回边的数据流循环方式效率低下,指令可执行率低,导致整体的执行效率和性能功耗比低下,不适合动态流水的数据流结构。



技术实现要素:

针对现有技术的不足,本发明提出一种无回边数据流循环方法、系统、装置、芯片。

本发明提出一种无回边数据流循环方法,包括

设置数据流的循环指令的指令格式,所述指令格式包括操作码、源操作数个数、多个目的指令的编号、总循环次数段,每个循环指令维护一个迭代计数器,初始阶段迭代计数器的值等于总循环次数段的值,循环指令每执行一次,所述迭代计数器的值减1,当所述迭代计数器的值减为0时,将所述迭代计数器的值重新置为总循环次数段的值,循环指令根据所述迭代计数器的值执行相应的逻辑。

所述循环指令包括循环开始指令与循环结束指令,其中循环开始指令为连续产生多个循环,以操作数形式传递给循环体内的指令,当满足总循环次数段的值后,接受上游循环体外的下一条操作数;循环结束指令为连续接受上游多个循环体内部的操作数,当满足总循环次数段的值后,向下游传递一条操作数。

还包括LA指令负责生成循环中的循环索引,传递给循环体中的各个循环指令,循环体完成循环后将累加的结果传递给LEA,LEA负责将传入的累加结果依次累加,迭代计数器等于总循环次数段的值后,向下游输出累加结果。

循环开始指令根据循环体内资源释放信号连续产生同一上下文的多次循环,以使同一上下文的不同循环能够在循环体重流水执行,同时循环开始指令在完成一次上下文所有循环后通过向上游发送资源释放信号从而获取新的上下文操作数,并立刻开始新上下文的循环产生。

本发明还提出一种无回边数据流循环系统,包括

循环模块,用于设置数据流的循环指令的指令格式,所述指令格式包括操作码、源操作数个数、多个目的指令的编号、总循环次数段,每个循环指令维护一个迭代计数器,初始阶段迭代计数器的值等于总循环次数段的值,循环指令每执行一次,所述迭代计数器的值减1,当所述迭代计数器的值减为0时,将所述迭代计数器的值重新置为总循环次数段的值,循环指令根据所述迭代计数器的值执行相应的逻辑。

所述循环指令包括循环开始指令与循环结束指令,其中循环开始指令为连续产生多个循环,以操作数形式传递给循环体内的指令,当满足总循环次数段的值后,接受上游循环体外的下一条操作数;循环结束指令为连续接受上游多个循环体内部的操作数,当满足总循环次数段的值后,向下游传递一条操作数。

还包括LA指令负责生成循环中的循环索引,传递给循环体中的各个循环指令,循环体完成循环后将累加的结果传递给LEA,LEA负责将传入的累加结果依次累加,迭代计数器等于总循环次数段的值后,向下游输出累加结果。

循环开始指令根据循环体内资源释放信号连续产生同一上下文的多次循环,以使同一上下文的不同循环能够在循环体重流水执行,同时循环开始指令在完成一次上下文所有循环后通过向上游发送资源释放信号从而获取新的上下文操作数,并立刻开始新上下文的循环产生。

本发明还提出一种利用所述无回边数据流循环方法制造的芯片。

本发明还提出一种包括所述无回边数据流循环系统的装置。

由以上方案可知,本发明的优点在于:

本发明循环次数通过静态指定,让动态数据流在整个循环中流水进行,实现不同迭代、不同上下文之间的流水,指令可执行率高,执行效率较传统结构有明显的优势。

附图说明

图1传统数据流循环实现方式图;

图2循环指令编码图;

图3循环累加实现图;

图4循环数据复用实现图;

图5循环流水执行图;

图6循环指令功能描述图。

具体实施方式

针对以上技术问题,本发明提出一种无回边数据流循环方法,包括

设置数据流的循环指令的指令格式,所述指令格式包括操作码、源操作数个数、多个目的指令的编号、总循环次数段,每个循环指令维护一个迭代计数器,初始阶段迭代计数器的值等于总循环次数段的值,循环指令每执行一次,所述迭代计数器的值减1,当所述迭代计数器的值减为0时,将所述迭代计数器的值重新置为总循环次数段的值,循环指令根据所述迭代计数器的值执行相应的逻辑。

所述循环指令包括循环开始指令与循环结束指令,其中循环开始指令为连续产生多个循环,以操作数形式传递给循环体内的指令,当满足总循环次数段的值后,接受上游循环体外的下一条操作数;循环结束指令为连续接受上游多个循环体内部的操作数,当满足总循环次数段的值后,向下游传递一条操作数。

还包括LA指令负责生成循环中的循环索引,传递给循环体中的各个循环指令,循环体完成循环后将累加的结果传递给LEA,LEA负责将传入的累加结果依次累加,迭代计数器等于总循环次数段的值后,向下游输出累加结果。

循环开始指令根据循环体内资源释放信号连续产生同一上下文的多次循环,以使同一上下文的不同循环能够在循环体重流水执行,同时循环开始指令在完成一次上下文所有循环后通过向上游发送资源释放信号从而获取新的上下文操作数,并立刻开始新上下文的循环产生。

本发明还提出一种无回边数据流循环系统,包括

循环模块,用于设置数据流的循环指令的指令格式,所述指令格式包括操作码、源操作数个数、多个目的指令的编号、总循环次数段,每个循环指令维护一个迭代计数器,初始阶段迭代计数器的值等于总循环次数段的值,循环指令每执行一次,所述迭代计数器的值减1,当所述迭代计数器的值减为0时,将所述迭代计数器的值重新置为总循环次数段的值,循环指令根据所述迭代计数器的值执行相应的逻辑。

所述循环指令包括循环开始指令与循环结束指令,其中循环开始指令为连续产生多个循环,以操作数形式传递给循环体内的指令,当满足总循环次数段的值后,接受上游循环体外的下一条操作数;循环结束指令为连续接受上游多个循环体内部的操作数,当满足总循环次数段的值后,向下游传递一条操作数。

还包括LA指令负责生成循环中的循环索引,传递给循环体中的各个循环指令,循环体完成循环后将累加的结果传递给LEA,LEA负责将传入的累加结果依次累加,迭代计数器等于总循环次数段的值后,向下游输出累加结果。

循环开始指令根据循环体内资源释放信号连续产生同一上下文的多次循环,以使同一上下文的不同循环能够在循环体重流水执行,同时循环开始指令在完成一次上下文所有循环后通过向上游发送资源释放信号从而获取新的上下文操作数,并立刻开始新上下文的循环产生。

本发明还提出一种利用所述无回边数据流循环方法制造的芯片。

本发明还提出一种包括所述无回边数据流循环系统的装置。

本发明针对上述动态流式数据流中循环指令的语义进行改动,尝试简化回边,提出一种无回边数据流循环方法、系统、装置、芯片,大多数科学计算的应用中循环较为规整,循环的循环次数固定,大量循环在循环之间并没有依赖,或者依赖是单纯地求和,这给简化回边带来了可能,本发明是一套无回边的数据流循环方案,修改循环的入口和出口指令的语义,在编译过程中,将循环执行的循环次数编译到循环指令中,每一条循环指令在执行过程中维护一个迭代计数器,指令的执行不单单受到操作数和下游操作数存储资源的控制,还受到指令迭代计数器的控制。

本发明的循环指令格式如图2所示,除了传统结构上需要包含的操作码201、源操作数个数202以及结果输出的多个目的指令的编号(204-207)外,还增加了总循环次数段203,在程序执行过程中,循环指令维护一个迭代计数器,初始阶段迭代计数器的值等于总循环次数段,循环指令每执行一次,迭代计数器减1,当迭代计数器减为0时,重新置为指令中的总循环次数。循环指令执行过程中会依据迭代计数器值的不同执行不同的逻辑。

本发明中无回边的循环指令如图6所示,列601为指令名称,列602为指令出现的位置,列603为指令具体逻辑功能。无回边循环指令包括两类,一类指令是单入多出的指令(604-606),这类指令通常在循环开始时出现,输出可以是循环号或者输入的重复输出,此类指令在操作数满足一次执行条件后会连续执行指定的循环次数,在此期间指令的执行只受下游操作数存储资源的限制,循环次数完成后,重置迭代计数器,释放本次上下文执行的资源;另一类是多入单出的指令(607-608),这类指令通常在循环结束时出现,在接入多个循环的输入操作数时,可以选择将其累加,循环结束时输出,此类指令的发射条件与正常指令没有区别,但是在循环进行中不向下游传递操作数,当循环次数完成后,才重置计数器,向下游传递结果操作数。

本发明循环次数通过静态指定,让动态数据流在整个循环中流水进行,实现不同循环、不同上下文之间的流水,指令可执行率高,执行效率较传统结构有明显的优势。

下面结合实例,对本发明做进一步的详细描述。

实施例一

图3展示了循环累加过程的数据流图,执行过程中的要点如下:

步骤301 LA指令304在接受上游指令激励后依次产生10次循环索引值传递给循环的循环体部分,当等待到下游ADD发送的资源释放信号后立即发送下一次循环的循环索引。当LA指令304完成一个上下文的全部10次循环后,向上游发送资源释放信号,紧接着接受下一上下文的激励信号,产生下一上下文的循环索引值,开始新的循环。

步骤302循环体部分305-307的执行与普通数据流指令的执行方式一致,当操作数集齐同时下游资源空闲时即可发射执行。由于LA指令304依次流水发送多个循环索引变量,循环体部分的执行也是多个循环流水进行的。

步骤303 LEA指令308依次流水接受循环结果后进行累加,直至接收10次为止,将累加和输出给下游,这样一个上下文的循环结束。

实施例二

图4中展现了循环间数据复用的情形,执行过程中的要点如下:

步骤401如上述步骤301类似,通过LA指令407产生索引变量,但是LA指令407产生的索引变量负责每次加载新的循环数据(i+1),所以需要在LA指令407后增加+1指令403。

步骤402 LM指令406实现不同循环之间的数据复用,第一次循环进行中使用操作数0,操作数0不受循环控制,只产生1次,而后续循环使用操作数1,由步骤401中的LA指令控制,所以会在循环中多次产生。

步骤403根据LA指令407产生的索引变量以及LM指令406中上次循环产生的数据进行循环体指令408-413的操作。

步骤404 LE指令414将各次循环进行汇总,与步骤303中的LEA不同,不具备实际运算功能。当10次循环收集完毕后,向下游发送激励,表示循环完成。

实施例三

图5中展示了图3中循环执行的流水执行情况,具体要点如下:

步骤501指令0 506处于执行上下文N+1的过程中,由于LA指令507尚未完成执行上下文N的循环,所以不能给指令0资源释放的信号,所以N+1上下文再此等待。

步骤502 LA指令507执行上下文N的循环,正在产生第2次循环。

步骤503循环体部分,上下文N以及上下文N-1的循环在循环体中流水执行,由于指令LA507在完成上下文N-1后可以继续不间断地产生后续上下文N的循环,所以得以实现不同上下文的各次循环在循环体中的流水执行,在图中指令1 508和指令2 509执行上下文N,而指令3 510和指令4 511执行上下文N-1。

步骤504循环出口,LEA指令512正在执行上下文N-1的第7次循环。

步骤505循环外的指令513处于空闲状态,等待LEA指令512将上下文N-1的累加结果。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1