CN111897580A - 一种可重构阵列处理器的指令调度系统及方法 - Google Patents
一种可重构阵列处理器的指令调度系统及方法 Download PDFInfo
- Publication number
- CN111897580A CN111897580A CN202011053339.XA CN202011053339A CN111897580A CN 111897580 A CN111897580 A CN 111897580A CN 202011053339 A CN202011053339 A CN 202011053339A CN 111897580 A CN111897580 A CN 111897580A
- Authority
- CN
- China
- Prior art keywords
- instruction
- data flow
- flow graph
- nodes
- graph
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000012545 processing Methods 0.000 claims abstract description 63
- 230000001419 dependent effect Effects 0.000 claims description 18
- 238000010586 diagram Methods 0.000 claims description 15
- 230000005540 biological transmission Effects 0.000 claims description 13
- 238000012163 sequencing technique Methods 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000004364 calculation method Methods 0.000 description 7
- 230000001934 delay Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
- G06F9/4837—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开一种可重构阵列处理器的指令调度系统及方法,属于低功耗语音关键词识别技术领域。包括:一个由软件算法生成的数据流图。先检查数据流图是否符合可重构阵列的硬件约束,利用重定时技术对数据流图进行处理,接着对指令进行发射排序,对同一时刻发射的指令进行硬件资源约束检查,硬件资源约束检查通过之后会对数据流图进行寄存器资源约束检查,在指令发射的间隔中插入路由指令来保证执行功能的正确性,最后利用最大团算法求出每一条指令对应的处理单元位置,完成指令分发。本发明解决了现有技术中需要依靠设计人员具备扎实的硬件知识设计出良好的单个阶段算法才能使得最终调度性能良好的问题。
Description
技术领域
本发明属于基于专用硬件架构编译器技术领域,尤其涉及一种可重构阵列处理器的指令调度系统及方法。
背景技术
可重构阵列是一种新型且位于学术界前沿的通用硬件设计架构。通常可重构阵列由一些具有相同运算功能的处理单元组成。这些处理单元能够实现的运算功能被称为算子。一个运算单元包含多个算子,且可以通过不同的配置指令完成不同的运算功能。配置指令的调度与发射方式在很大程度上影响可重构阵列的性能。
现有的调度算法则是将指令调度分为多个阶段,包括硬件架构约束处理、提取数据流图迭代间隔、指令发射时间排序以及利用最大团算法求出可行解。分割了调度算法,减小整个算法的设计空间,因此计算时间更快,但是需要设计人员需要具备扎实的硬件知识,才能够设计出良好的单个阶段算法,且最终调度性能是由单阶段算法质量决定的。
发明内容
本发明的目的是提供一种可重构阵列处理器的指令调度系统及方法,以解决现有技术中需要依靠设计人员具备扎实的硬件知识设计出良好的单个阶段算法才能使得最终调度性能良好的问题。
为了实现上述目的,本发明提供如下技术方案:
一种可重构阵列处理器的指令调度方法,包括:
步骤S101,判断数据流图中节点的扇出数是否小于可重构阵列中处理单元实际的互联数,若是,则继续步骤S102,若否,则返回本步骤,直到数据流图中节点的扇出数是否小于可重构阵列中处理单元实际的互联数为止。数据流图中的节点为指令节点。
步骤S102,建立数据流图中的节点和可重构阵列中处理单元的相关算子对应关系,形成重定时不等式组。
根据不等式组的解在数据流图中的有向边上引入标记算子所需寄存器,在引入标记算子所需寄存器后,获取数据流图中的各节点的重定时值,以使数据流图中的各节点转换为处理单元的抽象模型。
步骤S103,根据各指令节点的重定时值,将当前的多个指令节点所对应的指令按照对应的重定时值从小到大的顺序进行排列,获取指令的发射时间与调度顺序。
步骤S104,根据数据流图的初始迭代周期对数据流图折叠。若一个第一时刻上并行发射的数据流图的指令节点大于可重构阵列中处理单元所连接单元的数量,则会将依赖数前序指令最小的指令至于第一时刻之后的时刻对应的指令节点。
若所有时刻都满足约束后,若一个或多个指令节点与其前序依赖指令节点之间发射时间间隔大于设定时间间隔,则在一个或多个指令节点与其前序依赖指令节点之前插入寄存器,以打断其依赖关系获取当前数据流图。寄存器的数量与迭代周期与时间间隔相对应。
步骤S105,根据当前数据流图通过最大团算法获取当前数据流图与可重构阵列的公共最大子集。若最大子集数量等于数据流图的节点数,则分发指令节点对应的指令。
在上述技术方案的基础上,本发明还可以做如下改进:
进一步地,步骤S101前还包括:
步骤S100,输入数据流图。数据流图是一个包含运算指令以及指令之间依赖关系的图数据结构。运算指令构成图的节点。依赖关系形成图的有向边。
进一步地,步骤S102中还包括:
步骤S201,根据数据流图获取数据流图的节点。
步骤S202,根据和可重构阵列中处理单元信息获取处理单元的相关算子。
进一步地,设定时间间隔为1s~2s。
进一步地,步骤S105中还包括:
步骤S301,根据当前数据流图输出当前指令队列。
一种可重构阵列处理器的指令调度系统,包括:
硬件资源检查单元,其配置为判断数据流图中节点的扇出数是否小于可重构阵列中处理单元实际的互联数,若是,则继续步骤S102,若否,则返回本步骤,直到数据流图中节点的扇出数是否小于可重构阵列中处理单元实际的互联数为止。数据流图中的节点为指令节点。
重定时处理单元,其配置为建立数据流图中的节点和可重构阵列中处理单元的相关算子对应关系,形成重定时不等式组。
根据不等式组的解在数据流图中的有向边上引入标记算子所需寄存器,在引入标记算子所需寄存器后,获取数据流图中的各节点的重定时值,以使数据流图中的各节点转换为处理单元的抽象模型。
指令排序单元,其配置为根据各指令节点的重定时值,将当前的多个指令节点所对应的指令按照对应的重定时值从小到大的顺序进行排列,获取指令的发射时间与调度顺序。
资源检查单元,其配置为根据数据流图的初始迭代周期对数据流图折叠。若一个第一时刻上并行发射的数据流图的指令节点大于可重构阵列中处理单元所连接单元的数量,则会将依赖数前序指令最小的指令至于第一时刻之后的时刻对应的指令节点。
若所有时刻都满足约束后,若一个或多个指令节点与其前序依赖指令节点之间发射时间间隔大于设定时间间隔,则在一个或多个指令节点与其前序依赖指令节点之前插入寄存器,以打断其依赖关系获取当前数据流图。寄存器的数量与迭代周期与时间间隔相对应。
指令分发单元,其配置为根据当前数据流图通过最大团算法获取当前数据流图与可重构阵列的公共最大子集。若最大子集数量等于数据流图的节点数,则分发指令节点对应的指令。
进一步地,硬件资源检查单元还包括:
输入数据流图。数据流图是一个包含运算指令以及指令之间依赖关系的图数据结构。运算指令构成图的节点。依赖关系形成图的有向边。
进一步地,重定时处理单元,还配置为根据数据流图获取数据流图的节点。根据和可重构阵列中处理单元信息获取处理单元的相关算子。
进一步地,设定时间间隔为1s~2s。
进一步地,指令分发单元,还配置为根据当前数据流图输出当前指令队列。
本发明具有如下优点:检查数据流图是否符合可重构阵列的硬件约束,利用重定时技术对数据流图进行处理,接着对指令进行发射排序,对同一时刻发射的指令进行硬件资源约束检查,硬件资源约束检查通过之后会对数据流图进行寄存器资源约束检查,在指令发射的间隔中插入路由指令来保证执行功能的正确性,最后利用最大团算法求出每一条指令对应的处理单元位置,完成指令分发简化了调度算法执行流程,使得指令调度算法的性能得到提高,且增强调度算法的通用性,包括提高对不同周期算子的兼容性、提高寄存器以及路由单元的使用效率。
附图说明
为了更清楚地说明本发明实施方式的技术方案,下面将对实施方式描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明指令调度方法的流程图。
图2为本发明指令调度方法的流程图。
图3为本发明指令调度方法的流程图。
图4为本发明指令调度系统产生的数据流示意图。
图5为本发明指令调度系统的映射结果示意图。
图6为本发明指令调度系统对数据流图路径延时冲突自动化处理流程图。
具体实施方式
为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
如图1-3所示,本发明提供了一种可重构阵列处理器的指令调度方法,包括:
步骤S101,硬件资源检查阶段。
本步骤中,判断数据流图中节点的扇出数是否小于可重构阵列中处理单元实际的互联数,若是,则继续步骤S102,若否,则返回本步骤,直到数据流图中节点的扇出数是否小于可重构阵列中处理单元实际的互联数为止。数据流图中的节点为指令节点。
步骤S102,重定时处理阶段。
本步骤中,建立数据流图中的节点和可重构阵列中处理单元的相关算子对应关系,形成重定时不等式组。
根据不等式组的解在数据流图中的有向边上引入标记算子所需寄存器,在引入标记算子所需寄存器后,获取数据流图中的各节点的重定时值,以使数据流图中的各节点转换为处理单元的抽象模型。同时保证程序功能的正确性。此阶段会输出各节点的重定时值以及数据流图的迭代间隔信息。
步骤S103,指令排序阶段。
本步骤中,根据各指令节点的重定时值,将当前的多个指令节点所对应的指令按照对应的重定时值从小到大的顺序进行排列,获取指令的发射时间与调度顺序。可以快速的得出指令的发射时间与调度顺序,相同重定时值的指令允许并行发射。
步骤S104,寄存器资源检查阶段。
本步骤中,根据数据流图的初始迭代周期对数据流图折叠。若一个第一时刻上并行发射的数据流图的指令节点大于可重构阵列中处理单元所连接单元的数量,则会将依赖数前序指令最小的指令至于第一时刻之后的时刻对应的指令节点。
若所有时刻都满足约束后,若一个或多个指令节点与其前序依赖指令节点之间发射时间间隔大于设定时间间隔,则在一个或多个指令节点与其前序依赖指令节点之前插入寄存器,以打断其依赖关系获取当前数据流图。寄存器的数量与迭代周期与时间间隔相对应。
数据流图简称DFD(Data Flow Diagram),它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
迭代间隔对于DFG来说就是数据流入DFG的时间间隔。对于DFG来说,最基本的时间单位被成为时间步,因此DFG中的迭代间隔通常用时间步的数量表示。对于可重构阵列来说,迭代间隔指的是新数据进入阵列中的时间间隔,通常以可重构阵列执行时的时钟周期作为基本单位。
迭代周期越大,表明硬件空闲的时钟越多,因此需要插入更多的寄存器填补空闲时钟。时间间隔越大,表明该路径所需延时较长,也需要插入更多的寄存器增加延时。
步骤S105,指令分发阶段。
本步骤中,根据当前数据流图通过最大团算法获取当前数据流图与可重构阵列的公共最大子集。若最大子集数量等于数据流图的节点数,则分发指令节点对应的指令。公共子集就反应了数据流图上的指令与可重构阵列的对应关系。
最大团算法主要是构造了三个集合,假设:R集合记录的是当前极大团中已经加入的点。P集合记录的是可能还能加入的点。X集合记录的是已经完成极大团计数的点。基础的最大团算法,对于每一个点P中的点v,把v加入集合R,对在P集合中且与点v相连的这部分集合中寻找下一个可能加入R集合的点,回溯时把v从P集合中移出,加入X集合,代表当前状态下对包含点v的极大团已经计算完毕了。程序结束后,如果R集合中的结点数量等于DFG的节点数,则映射成功,如果小于DFG的节点数则映射失败。
当一张数据流图(DFG)要在PE阵列上映射时,并不能简单的把一个DFG图中的计算节点映射为一个PE的操作。原因是PE单元除了包含对应的计算操作,还包括一个输入端寄存器和输出端寄存器,对于乘法与乘加等复杂计算,PE单元还会多增加两个在计算阶段的寄存器用于提高时钟频率。
如果直接将原始DFG图映射到PE上,PE中的寄存器可能会使得最终映射之后的电路传输函数与原始DFG的传输函数不同。需要用到重定时技术。PE内部的寄存器可以看成原DFG重定时之后,连接计算节点的边对应增加的延迟数。为保持DFG功能不变,可以利用重定时理论,对其它对应的边经行对应的变化。最终使得DFG的计算节点完全变为了对应的PE单元,同时连接原DFG计算节点的边变为了带有零或者多个延迟的边,这些有延迟的边可以在一定的情况下被转化成对应的做Route功能的PE以及连接该PE输入与输出的没有延迟的边。
重定时(Retiming):是一种变换技术,在不改变系统的输入输出特性的前提下,改变电路延迟元件的配置。
其中R()为对应端点的重定时值。重定时值由一组不等式方程和一个目标函数利用线性规划计算得出。
进行重定时变换:因为重定时后DFG的时钟周期可以确定为1个时间单位,因此重定时的约束为可行性约束:
即
此外,可以添加最小化目标函数来使重定时后的寄存器数量最小,目标函数为:
化简后即:
根据最小化目标函数和一组可行性约束推出的不等式,可以利用整数线性规划方法求解出各计算节点的重定时值,最终求出重定时后新的边延迟。这里还有一个需要注意的问题,重定时后的DFG只是改变了每一个边的延迟,并没有对同一起点出发的具有相同延迟的边进行合并。所以重定时之后需要进行寄存器共享的优化。
如果重定时求解失败,可以对原DFG进行降速处理,再进行重定时。
对新DFG边延迟的处理:重定时后需要将带有延迟的边替换为一个作为Route操作的PE和一条指向该PE和由该PE出发的无延迟的边。由于Route至少包括两个寄存器,也就是至少表示两个单位时间的延迟,因此如果重定时之后边的延迟为一个单位时间,那么这条边是不能完整映射到PEA上的,导致的结果就是DFG重定时失败,需要对原DFG经行降速处理。
软件代码为: For(int i =0; i<10; i++)
{
B[i]=a[i]*a[i]+a[i]-10;
}
软件代码是一个10维向量处理操作,输入为一个向量,输出为一个向量,输入向量中的元素执行乘法、加法和减法操作后得到输出向量中对应位置的元素。
在一个数据流图中,如果存在从同一个节点出发的几条路径,各自经过不同节点后,又同时结束于同一个节点,那么在把数据流图转化为指令,映射到可重构阵列上时,可能会出现路径延时不一致的情况,这会导致最后路径终点的节点不能正确的接受数据。
如图4所示,从加法节点出发,一共有两条路径同时结束于左移节点。如图5所示,是假设所有节点具有同样的计算时间的情况下的一个映
射结果。但实际情况下,乘法节点的运行时间可能大于减法节点,此时两条路径的延时不一致,需要在延时较短的路径上添加路由(route)指令,使得 两条路径的延时相同。
如图6所示。在本发明采用重定时算法用来检查数据流图中路径延时的冲突并在不改变数据流图语义的情况下添加路由指令,实现了对数据流图路径延时冲突问题的自动化处理。
本发明可重构阵列调度算法的输入为由软件算法生成的数据流图。本发明可重构阵列调度算法首先会检查数据流图是否符合可重构阵列的硬件约束,符合硬件约束即满足硬件的PE资源约束和满足PE的扇出约束。利用重定时技术对数据流图进行处理,接着对指令进行发射排序,对同一时刻发射的指令进行硬件资源约束检查,如果DFG结点大于硬件资源,则会裁剪DFG。
如果不满住PE扇出约束,则会将原结点复制多分,平均分担扇出,直到满足扇出约束为止。硬件资源约束检查通过之后会对数据流图进行寄存器资源约束检查,在指令发射的间隔中插入路由指令来保证执行功能的正确性,最后利用最大团算法求出每一条指令对应的处理单元位置,完成指令分发。假设一个无向图,一个团是图的子图,该子图中的所有顶点之间都有边将它们相连。极大团指的是,该团不包含于图的任何其他团,即不是任何其他团的真子集。最大团指的是结点数量最多的极大团。最大团算法一般采用Bron–Kerbosch回溯算法。最大团算法采用的是一些开源方法,不属于本发明需要重点讨论和解释的对象。
在上述技术方案的基础上,本发明还可以做如下改进:
步骤S101前还包括:
步骤S100,输入数据流图。
本步骤中,输入数据流图。数据流图是一个包含运算指令以及指令之间依赖关系的图数据结构。运算指令构成图的节点。依赖关系形成图的有向边。
步骤S102中还包括:
步骤S201,根据数据流图获取数据流图的节点。
本步骤中,根据数据流图获取数据流图的节点。
步骤S202,根据可重构阵列中处理单元信息获取处理单元的相关算子。
本步骤中,根据可重构阵列中处理单元信息获取处理单元的相关算子。
设定时间间隔为1s~2s。
步骤S105中还包括:
步骤S301,根据当前数据流图输出当前指令队列。
本步骤中,根据当前数据流图输出当前指令队列。
一种可重构阵列处理器的指令调度系统,本发明的可重构阵列处理器的指令调度系统场景是将由软件代码形成的数据流图转变为机器指令,映射到可重构阵列的运算单元上。包括:
硬件资源检查单元,其配置为判断数据流图中节点的扇出数是否小于可重构阵列中处理单元实际的互联数,若是,则继续步骤S102,若否,则返回本步骤,直到数据流图中节点的扇出数是否小于可重构阵列中处理单元实际的互联数为止。数据流图中的节点为指令节点。
重定时处理单元,其配置为建立数据流图中的节点和可重构阵列中处理单元的相关算子对应关系,形成重定时不等式组。
根据不等式组的解在数据流图中的有向边上引入标记算子所需寄存器,在引入标记算子所需寄存器后,获取数据流图中的各节点的重定时值,以使数据流图中的各节点转换为处理单元的抽象模型。
指令排序单元,其配置为根据各指令节点的重定时值,将当前的多个指令节点所对应的指令按照对应的重定时值从小到大的顺序进行排列,获取指令的发射时间与调度顺序。
资源检查单元,其配置为根据数据流图的初始迭代周期对数据流图折叠。若一个第一时刻上并行发射的数据流图的指令节点大于可重构阵列中处理单元所连接单元的数量,则会将依赖数前序指令最小的指令至于第一时刻之后的时刻对应的指令节点。
若所有时刻都满足约束后,若一个或多个指令节点与其前序依赖指令节点之间发射时间间隔大于设定时间间隔,则在一个或多个指令节点与其前序依赖指令节点之前插入寄存器,以打断其依赖关系获取当前数据流图。寄存器的数量与迭代周期与时间间隔相对应。
指令分发单元,其配置为根据当前数据流图通过最大团算法获取当前数据流图与可重构阵列的公共最大子集。若最大子集数量等于数据流图的节点数,则分发指令节点对应的指令。
硬件资源检查单元还包括:
输入数据流图。数据流图是一个包含运算指令以及指令之间依赖关系的图数据结构。运算指令构成图的节点。依赖关系形成图的有向边。
重定时处理单元,还配置为根据数据流图获取数据流图的节点。根据和可重构阵列中处理单元信息获取处理单元的相关算子。
设定时间间隔为1s~2s。
指令分发单元,还配置为根据当前数据流图输出当前指令队列。
最后应说明的是:以上实施方式仅用以说明本发明的技术方案,而非对其限制。尽管参照前述实施方式对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施方式技术方案的精神和范围。
Claims (10)
1.一种可重构阵列处理器的指令调度方法,其特征在于,包括:
步骤S101,判断数据流图中节点的扇出数是否小于可重构阵列中处理单元实际的互联数,若是,则继续步骤S102,若否,则返回本步骤,直到数据流图中节点的扇出数是否小于可重构阵列中处理单元实际的互联数为止;所述数据流图中的节点为指令节点;
步骤S102,建立所述数据流图中的节点和所述可重构阵列中处理单元的相关算子对应关系,形成重定时不等式组;
根据所述不等式组的解在所述数据流图中的有向边上引入标记算子所需寄存器,在引入标记算子所需寄存器后,获取所述数据流图中的各节点的重定时值,以使数据流图中的各节点转换为处理单元的抽象模型;
步骤S103,根据所述各指令节点的重定时值,将当前的多个指令节点所对应的指令按照对应的重定时值从小到大的顺序进行排列,获取指令的发射时间与调度顺序;
步骤S104,根据所述数据流图的初始迭代周期对所述数据流图折叠;若一个第一时刻上并行发射的所述数据流图的指令节点大于所述可重构阵列中处理单元所连接单元的数量,则会将依赖数前序指令最小的指令至于所述第一时刻之后的时刻对应的指令节点;
若所有时刻都满足约束后,若一个或多个指令节点与其前序依赖指令节点之间发射时间间隔大于设定时间间隔,则在所述一个或多个指令节点与其前序依赖指令节点之前插入寄存器,以打断其依赖关系获取当前数据流图;所述寄存器的数量与迭代周期与时间间隔相对应;
步骤S105,根据所述当前数据流图通过最大团算法获取所述当前数据流图与可重构阵列的公共最大子集;若最大子集数量等于数据流图的节点数,则分发所述指令节点对应的指令。
2.根据权利要求1所述的指令调度方法,其特征在于,所述步骤S101前还包括:
步骤S100,输入数据流图;所述数据流图是一个包含运算指令以及指令之间依赖关系的图数据结构;所述运算指令构成图的节点;所述依赖关系形成图的有向边。
3.根据权利要求1或2所述的指令调度方法,其特征在于,所述步骤S102中还包括:
步骤S201,根据所述数据流图获取所述数据流图的节点;
步骤S202,根据和所述可重构阵列中处理单元信息获取所述处理单元的相关算子。
4.根据权利要求3所述的指令调度方法,其特征在于,所述设定时间间隔为1s~2s。
5.根据权利要求1所述的指令调度方法,其特征在于,所述步骤S105中还包括:
步骤S301,根据所述当前数据流图输出当前指令队列。
6.一种可重构阵列处理器的指令调度系统,其特征在于,包括:
硬件资源检查单元,其配置为判断数据流图中节点的扇出数是否小于可重构阵列中处理单元实际的互联数,若是,则继续步骤S102,若否,则返回本步骤,直到数据流图中节点的扇出数是否小于可重构阵列中处理单元实际的互联数为止;所述数据流图中的节点为指令节点;
重定时处理单元,其配置为建立所述数据流图中的节点和所述可重构阵列中处理单元的相关算子对应关系,形成重定时不等式组;
根据所述不等式组的解在所述数据流图中的有向边上引入标记算子所需寄存器,在引入标记算子所需寄存器后,获取所述数据流图中的各节点的重定时值,以使数据流图中的各节点转换为处理单元的抽象模型;
指令排序单元,其配置为根据所述各指令节点的重定时值,将当前的多个指令节点所对应的指令按照对应的重定时值从小到大的顺序进行排列,获取指令的发射时间与调度顺序;
资源检查单元,其配置为根据所述数据流图的初始迭代周期对所述数据流图折叠;若一个第一时刻上并行发射的所述数据流图的指令节点大于所述可重构阵列中处理单元所连接单元的数量,则会将依赖数前序指令最小的指令至于所述第一时刻之后的时刻对应的指令节点;
若所有时刻都满足约束后,若一个或多个指令节点与其前序依赖指令节点之间发射时间间隔大于设定时间间隔,则在所述一个或多个指令节点与其前序依赖指令节点之前插入寄存器,以打断其依赖关系获取当前数据流图;所述寄存器的数量与迭代周期与时间间隔相对应;
指令分发单元,其配置为根据所述当前数据流图通过最大团算法获取所述当前数据流图与可重构阵列的公共最大子集;若最大子集数量等于数据流图的节点数,则分发所述指令节点对应的指令。
7.根据权利要求6所述的指令调度系统,其特征在于,所述硬件资源检查单元还包括:
输入数据流图;所述数据流图是一个包含运算指令以及指令之间依赖关系的图数据结构;所述运算指令构成图的节点;所述依赖关系形成图的有向边。
8.根据权利要求6或7所述的指令调度系统,其特征在于,所述重定时处理单元,还配置为根据所述数据流图获取所述数据流图的节点;根据和所述可重构阵列中处理单元信息获取所述处理单元的相关算子。
9.根据权利要求6所述的指令调度系统,其特征在于,所述设定时间间隔为1s~2s。
10.根据权利要求6所述的指令调度系统,其特征在于,指令分发单元,还配置为根据所述当前数据流图输出当前指令队列。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011053339.XA CN111897580B (zh) | 2020-09-29 | 2020-09-29 | 一种可重构阵列处理器的指令调度系统及方法 |
PCT/CN2021/073393 WO2022068124A1 (zh) | 2020-09-29 | 2021-01-22 | 一种可重构阵列处理器的指令调度系统及方法 |
US17/701,174 US11928473B2 (en) | 2020-09-29 | 2022-03-22 | Instruction scheduling method and system for reconfigurable array processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011053339.XA CN111897580B (zh) | 2020-09-29 | 2020-09-29 | 一种可重构阵列处理器的指令调度系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111897580A true CN111897580A (zh) | 2020-11-06 |
CN111897580B CN111897580B (zh) | 2021-01-12 |
Family
ID=73224002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011053339.XA Active CN111897580B (zh) | 2020-09-29 | 2020-09-29 | 一种可重构阵列处理器的指令调度系统及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11928473B2 (zh) |
CN (1) | CN111897580B (zh) |
WO (1) | WO2022068124A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256632A (zh) * | 2020-12-23 | 2021-01-22 | 北京清微智能科技有限公司 | 一种可重构处理器中的指令分发方法及系统 |
CN112559053A (zh) * | 2020-12-21 | 2021-03-26 | 清华大学 | 可重构处理器数据同步处理方法及装置 |
WO2022068124A1 (zh) * | 2020-09-29 | 2022-04-07 | 北京清微智能科技有限公司 | 一种可重构阵列处理器的指令调度系统及方法 |
CN117573607A (zh) * | 2023-11-28 | 2024-02-20 | 北京智芯微电子科技有限公司 | 可重构协处理器、芯片、多核信号处理系统和计算方法 |
WO2024125389A1 (zh) * | 2022-12-12 | 2024-06-20 | 华为技术有限公司 | 编译方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114721913B (zh) * | 2022-05-12 | 2022-08-23 | 华控清交信息科技(北京)有限公司 | 一种生成数据流图的方法、装置和用于生成数据流图的装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7007271B2 (en) * | 2002-04-18 | 2006-02-28 | Sun Microsystems, Inc. | Method and apparatus for integrated instruction scheduling and register allocation in a postoptimizer |
CN102236632A (zh) * | 2011-05-27 | 2011-11-09 | 清华大学 | 一种层次化描述动态可重构处理器配置信息的方法 |
CN103942181A (zh) * | 2014-03-31 | 2014-07-23 | 清华大学 | 用于生成动态可重构处理器的配置信息的方法、装置 |
CN104699464A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | 一种基于依赖网格的指令级并行调度方法 |
CN105487838A (zh) * | 2015-11-23 | 2016-04-13 | 上海交通大学 | 一种动态可重构处理器的任务级并行调度方法与系统 |
CN105867994A (zh) * | 2016-04-20 | 2016-08-17 | 上海交通大学 | 一种用于粗粒度可重构架构编译器的指令调度优化方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8169440B2 (en) * | 1999-04-09 | 2012-05-01 | Rambus Inc. | Parallel data processing apparatus |
TWI234737B (en) * | 2001-05-24 | 2005-06-21 | Ip Flex Inc | Integrated circuit device |
US9170812B2 (en) * | 2002-03-21 | 2015-10-27 | Pact Xpp Technologies Ag | Data processing system having integrated pipelined array data processor |
CN102868532B (zh) * | 2012-09-12 | 2015-05-20 | 清华大学 | 基于可重构技术的加解密算法中基本算子的提取方法 |
US10146722B1 (en) * | 2014-10-15 | 2018-12-04 | Integrated Device Technology, Inc. | Method and apparatus for operating of a PCIe retimer over optical cable |
US9965439B2 (en) * | 2016-06-27 | 2018-05-08 | Intel Corporation | Low latency multi-protocol retimers |
US10380063B2 (en) * | 2017-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator |
WO2020061587A1 (en) * | 2018-09-22 | 2020-03-26 | Manhattan Engineering Incorporated | Error recovery |
CN110059493B (zh) * | 2019-04-10 | 2023-04-07 | 无锡沐创集成电路设计有限公司 | 基于粗粒度可重构计算单元的skinny-128-128加密算法实现方法及系统 |
US11175922B1 (en) * | 2020-04-28 | 2021-11-16 | Speedata Ltd. | Coarse-grain reconfigurable array processor with concurrent handling of multiple graphs on a single grid |
CN111897580B (zh) * | 2020-09-29 | 2021-01-12 | 北京清微智能科技有限公司 | 一种可重构阵列处理器的指令调度系统及方法 |
US20230368371A1 (en) * | 2022-05-11 | 2023-11-16 | Hohai University | Intelligent recognition method for time sequence image of concrete dam defect |
-
2020
- 2020-09-29 CN CN202011053339.XA patent/CN111897580B/zh active Active
-
2021
- 2021-01-22 WO PCT/CN2021/073393 patent/WO2022068124A1/zh active Application Filing
-
2022
- 2022-03-22 US US17/701,174 patent/US11928473B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7007271B2 (en) * | 2002-04-18 | 2006-02-28 | Sun Microsystems, Inc. | Method and apparatus for integrated instruction scheduling and register allocation in a postoptimizer |
CN102236632A (zh) * | 2011-05-27 | 2011-11-09 | 清华大学 | 一种层次化描述动态可重构处理器配置信息的方法 |
CN103942181A (zh) * | 2014-03-31 | 2014-07-23 | 清华大学 | 用于生成动态可重构处理器的配置信息的方法、装置 |
CN104699464A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | 一种基于依赖网格的指令级并行调度方法 |
CN105487838A (zh) * | 2015-11-23 | 2016-04-13 | 上海交通大学 | 一种动态可重构处理器的任务级并行调度方法与系统 |
CN105867994A (zh) * | 2016-04-20 | 2016-08-17 | 上海交通大学 | 一种用于粗粒度可重构架构编译器的指令调度优化方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022068124A1 (zh) * | 2020-09-29 | 2022-04-07 | 北京清微智能科技有限公司 | 一种可重构阵列处理器的指令调度系统及方法 |
CN112559053A (zh) * | 2020-12-21 | 2021-03-26 | 清华大学 | 可重构处理器数据同步处理方法及装置 |
CN112559053B (zh) * | 2020-12-21 | 2022-06-03 | 清华大学 | 可重构处理器数据同步处理方法及装置 |
CN112256632A (zh) * | 2020-12-23 | 2021-01-22 | 北京清微智能科技有限公司 | 一种可重构处理器中的指令分发方法及系统 |
WO2022134426A1 (zh) * | 2020-12-23 | 2022-06-30 | 北京清微智能科技有限公司 | 可重构处理器中的指令分发方法、系统以及存储介质 |
WO2024125389A1 (zh) * | 2022-12-12 | 2024-06-20 | 华为技术有限公司 | 编译方法及装置 |
CN117573607A (zh) * | 2023-11-28 | 2024-02-20 | 北京智芯微电子科技有限公司 | 可重构协处理器、芯片、多核信号处理系统和计算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111897580B (zh) | 2021-01-12 |
WO2022068124A1 (zh) | 2022-04-07 |
US20220214883A1 (en) | 2022-07-07 |
US11928473B2 (en) | 2024-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111897580B (zh) | 一种可重构阵列处理器的指令调度系统及方法 | |
Mauw et al. | An algebraic semantics of basic message sequence charts | |
CN107250982B (zh) | 用于加速器的程序生成方法和系统 | |
US6782511B1 (en) | Behavioral-synthesis electronic design automation tool business-to-business application service provider | |
Seawright et al. | Clairvoyant: A synthesis system for production-based specification | |
JP2001142937A (ja) | 回路のスケジューリング正当性チェック方法及びスケジュール検証方法 | |
JPH10116302A (ja) | 集積回路の設計方法及びそれによって設計された集積回路 | |
Karfa et al. | Verification of datapath and controller generation phase in high-level synthesis of digital circuits | |
Baer et al. | Model, design, and evaluation of a compiler for a parallel processing environment | |
Bravetti et al. | A formal approach to microservice architecture deployment | |
Ludwig et al. | Properties first—correct-by-construction RTL design in system-level design flows | |
CN114035785A (zh) | 一种基于自然语言需求的aadl模型组合验证性质自动生成方法 | |
EP1248989A2 (en) | Behavioral-synthesis electronic design automation tool and business-to-business application service provider | |
Borrione et al. | A formal approach to the verification of networks on chip | |
JPH113367A (ja) | デジタルシステムのインプリメント可能な記述を生成する設計環境および方法 | |
Börger | Architecture design and validation methods | |
Chau et al. | A framework for asynchronous circuit modeling and verification in ACL2 | |
Bisseling et al. | Parallel Triangular System Solving on a mesh network of Transputers | |
Buck | A dynamic dataflow model suitable for efficient mixed hardware and software implementations of dsp applications | |
Nepomnyashchy et al. | Methods and algorithms for a high-level synthesis of the very-large-scale integration | |
CN111400013B (zh) | 一种多核处理器的数据流的处理方法及系统 | |
Calland et al. | Retiming DAGs [direct acyclic graph] | |
Man et al. | SC2SCFL: Automated SystemC to Translation | |
Lavagno et al. | An efficient heuristic procedure for solving the state assignment problem for event-based specifications | |
Verdoscia et al. | A high-level dataflow system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |