CN112698954B - 一种基于子图解耦的粗粒度可重构阵列调度方法 - Google Patents
一种基于子图解耦的粗粒度可重构阵列调度方法 Download PDFInfo
- Publication number
- CN112698954B CN112698954B CN202110049464.1A CN202110049464A CN112698954B CN 112698954 B CN112698954 B CN 112698954B CN 202110049464 A CN202110049464 A CN 202110049464A CN 112698954 B CN112698954 B CN 112698954B
- Authority
- CN
- China
- Prior art keywords
- subgraph
- sub
- graph
- decoupling
- configuration switching
- 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.)
- Active
Links
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了一种基于子图解耦的粗粒度可重构阵列调度方法,涉及计算机协处理器加速器领域,包括子图解耦模块、动态配置切换模块、子图调度器,其中,所述子图解耦模块是针对程序中的非一致性控制流,将数据流图解耦成子图依次执行;所述动态配置切换模块是设计了一种多米诺骨牌式的配置切换机制,降低动态配置切换的开销;所述子图调度器是通过监测片上缓存中子缓存(bank)的空满状态,对子图的执行顺序进行动态调度。利用本发明提供的算法,可以提高阵列计算单元(PE)利用率,降低子图切换的开销。
Description
技术领域
本发明属于计算机协处理器加速器,涉及粗粒度可重构阵列的结构以及阵列计算单元利用率提升的方法。
背景技术
粗粒度可重构阵列CGRA由大量可配置的计算单元PE组成,每个PE以数据流驱动的模式执行操作。通过空间映射的方式,一旦输入数据有效,大量PE便可以同时并行执行。这极大地提高了阵列的计算吞吐率。
然而随着可重构阵列的应用范围扩大,程序中存在的非完美循环,分支,循环依赖会将整个程序分割成不同的控制流区域。这些非一致性控制流区域无法同时流水执行,因此会显著降低阵列中PE的利用率,进而降低阵列执行性能。以下将以非完美循环,分支和循环依赖为例,进行阐述。
图2(a)中以通用矩阵乘这个应用为例,对非完美循环进行阐述。如图2(a)左侧代码所示,内层循环体(实线框所示)每执行block_size次,外层循环体(虚线框所示)才执行一次;因此由于非完美循环中内外层循环触发频率不同,导致执行外层循环的PE(右图斜线阴影所示)大部分时间处于空闲状态,因此降低PE利用率。
图2(b)中以稀疏向量乘这个应用为例,对分支进行阐述。如图2(b)左侧代码所示,if分支和else分支会根据分支的判断条件选择性执行,不会同时执行。因此,如图2(b)右图所示,执行if分支的PE(斜线阴影所示)和执行else分支的PE(格子阴影所示)在任一时刻都必定有一方是处于空闲状态。因此同样会降低PE的利用率。
图2(c)中以LU分解为例,对循环依赖进行阐述。如图2(c)左侧代码所示,具有数据依赖的执行体(虚线框和实线框所示)无法同时并行执行。因此,如图2(c)右图所示,执行这两块区域的PE(斜线阴影和格子阴影)会交替处于空闲状态,进而降低PE的利用率。
针对非完美循环,现有技术可以通过循环交换和循环展开,对内层循环体和外层循环体进行重新组织,但并没有消除执行外层循环的PE利用率低的问题;针对分支,现有技术通过将不同分支上的指令合并映射到同一PE上以提高PE利用率,但这种方法不适用于路径长度差异较大的非平衡分支;针对循环依赖,现有技术通过利用线程间通信挖掘细粒度的数据并行,但是会引入额外的硬件开销。
此外,现有的数据流调度方法都只针对其中某一种非一致性控制流进行调度优化,无法同时支持上述三种情形。
因此,本领域的技术人员致力于开发一种可以同时克服以上三种情况的调度方法。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是如何提高阵列计算单元(PE)利用率,降低子图切换的开销。
为实现上述目的,本发明提供了一种基于子图解耦的粗粒度可重构阵列调度方法,其特征在于,包括子图解耦模块、动态配置切换模块、可重构阵列模块,其中,所述子图解耦模块是针对程序中的非一致性控制流,将数据流图解耦成子图依次执行;所述动态配置切换模块是设计了一种多米诺骨牌式的配置切换机制,降低动态配置切换的开销;所述子图调度器是通过监测片上缓存中子缓存(bank)的空满状态,对子图的执行顺序进行动态调度。
进一步地,所述调度方法包括以下步骤:
步骤S1:将数据流图(DFG)中处于所述非一致性控制流的区域分割成若干个相互独立的所述子图;
步骤S2:同一时间内,每个所述子图在阵列上独立执行并进行充分的循环展开以提高阵列PE利用率;
步骤S3:当某一个所述子图执行完毕后,利用所述多米诺骨牌式的配置切换机制进行子图切换;
步骤S4:通过交替执行所有的所述子图,最终完成整个程序的执行。
进一步地,所述非一致性控制流包括非完美循环中外层循环子图和内层循环子图执行次数不同、分支中不同路径的所述子图不会同时执行、循环依赖中含有数据依赖的所述子图无法并行执行。
进一步地,所述步骤S2是通过片上缓存暂存中间数据实现所述子图解耦。
进一步地,将配置切换信号(子图ID)绑定在数据流上,借助正在执行的所述子图的所述数据流传递配置信号,实现无流水线停顿的配置切换。
进一步地,为了实现多米诺骨牌式的所述子图切换,本发明在现有的PE结构中增加了一个配置切换单元。
进一步地,所述配置切换单元每个时钟周期都监测绑定在输入数据上的子图ID,并将监测到的所述子图ID和当前正在执行的所述子图ID进行比较,如果所述子图ID发生改变,则所述配置切换单元将会从配置缓存中读出监测到的所述子图配置信息,然后通过所述配置切换单元将所述PE切换为相应的配置,同时将当前所述子图ID更新为监测到的所述子图ID。
进一步地,当下一个时钟周期,新的所述子图的数据流输入时,所述PE即可立刻执行新的所述子图的操作。
进一步地,为了实现硬件支持,本发明设计了一个子图调度器。
进一步地,所述子图调度器通过监测各个所述子图存放中间数据的对应子缓存(bank)的空满状态,判断当前所述子图是否执行结束,以及哪些所述子图可以开始执行,以及通过一个优先编码器从所有可以开始执行的子图中挑选一个进行执行。
与现有技术相比,本发明具有如下的有益效果:
针对程序中存在的三种非一致性控制流(非完美循环,分支,循环依赖),提出了一种基于子图解耦的调度方法,将处于不同控制流的程序体分割成多个独立的子图,通过子图间独立地交替执行,提高阵列PE利用率。
设计了一种多米诺骨牌式的阵列动态配置切换机制,通过将配置切换信号绑定在数据流上,使得配置切换可以随着数据流一起传递,从而避免了PE切换配置时引起的流水线停顿开销,最终降低了子图切换的开销。
设计了一个全局的子图调度器和一种可集成到现有通用PE内部的配置切换单元,实现了对上述子图解耦和动态配置切换的硬件支持。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1为本发明实施例中的基于子图解耦调度方法的总体示意图;
图2为本发明实施例中的三种典型非一致性控制流:(a)非完美循环;(b)分支;(c)循环依赖;
图3为本发明实施例中的基于数据流解耦的映射流程;
图4为本发明实施例中的多米诺骨牌式配置切换机制;
图5为本发明实施例中的(a)典型阵列的整体结构图;(b)支持多米诺骨牌式配置切换的PE;
图6为本发明实施例中的子图调度器(SSU)结构示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
针对上述分析,本发明提出了一种基于子图解耦的调度方法及相应的硬件实现。
其中,调度方法整体示意图如图1所示。相比于现有的调度方法将程序中所有的控制流区域同时映射在整个阵列上(图1上图所示),本发明将不同的控制流区域解耦成若干个子图,并将每个子图经过充分循环展开后独立映射在整个阵列上。通过交替执行所有的子图,以实现子图间的解耦调度,消除子图间由于非一致性控制流造成的性能损失。以下将通过图3,对图1中的三个例子分别进行详细阐述。
图3(a)中阐述的是非完美循环解耦调度。首先将外层循环(子图1)在整个阵列上循环展开两次并行执行(如图3(a)中两个虚线框所示),并将中间数据k_row[]和temp[]存入片上缓存的相应区域。当片上缓存的相应区域存满之后,再切换阵列配置执行内层循环(子图2),并从缓存中读出之前存入的中间数据k_row[]和temp[]。通过交替执行子图1和子图2,实现子图解耦。
图3(b)中阐述的是分支解耦调度。首先执行所有的分支判断条件,将执行false分支的中间变量(i1,i2)和执行true分支的中间变量(i1,i2)分别存在片上缓存的相应区域。之后将false分支(子图1)在阵列上并行展开两次同时执行(如图3(b)中两个虚线框所示);当false分支全部执行完,或片上缓存中存放false分支中间数据的相应区域存满后,再切换阵列配置执行true分支(子图2)。同样,两个子图交替执行,实现子图解耦。
图3(c)中阐述的是循环依赖解耦调度。和上述两种解耦类似,通过分别执行具有数据依赖关系的两个子图,实现子图解耦。同样,在执行单个子图时,对其进行充分的循环展开以尽可能地利用片上资源。
为了降低动态子图切换引起的配置切换开销,本发明同时设计了一种多米诺骨牌式的配置切换机制。如图4所示,当子图A在周期t执行完毕后,子图A的最后一个数据上会携带一个子图切换信号,指示PE执行完该数据后立刻切换成子图B的配置信息。子图B的新数据会在周期t+1时刻紧跟着子图A的最后一个数据进行传递。随着子图A的切换信号跟随数据流一同传递,在周期t+2时刻,更多的PE切换到子图B的配置。最终在周期t+3时刻,阵列上所有的PE完成配置切换,标志着子图切换的过程结束。对于那些没有被子图B使用到的PE,在接收到切换信号以后,会进入休眠状态以节省系统功耗。利用上述多米诺骨牌式的配置切换机制,可以实现零开销的动态配置切换,避免了现有配置切换技术造成的流水线停滞现象。
为了支持上述多米诺骨牌式配置切换,本发明在现有的PE结构中增加了一个配置切换单元,如图5(b)所示。配置切换单元中会记录当前的子图ID,并同时监测每个周期携带在输入数据上的子图ID。当输入数据上的子图ID和当前记录的子图ID不同时,将触发配置切换,同时更新当前记录的子图ID。配置单元会根据新的子图ID从配置缓存器中读出相应的一个新配置,并通过配置更新电路改变PE的配置信息,其中包括输入选择器(Mux),输出数据选择器(Demux)和算术逻辑单元(ALU)的配置。
为了支持子图间的动态调度,本发明设计了一个子图调度器,如图6所示。由于每个子图执行所需要的数据和产生的中间数据都存放在片上缓存相应的子存储器内(bank)。因此如果当前子图已经消耗完对应bank中所有的数据或者产生的中间数据已经将对应bank放满了,则需要结束当前子图,切换为下一个子图。此时,子图调度器会根据当前存储器中bank的状态,通过子图检测电路判断出当前每个子图的状态,然后通过优先编码器从已经准备就绪的子图中,动态选出一个作为接下来将要执行的子图,并将该子图的ID绑定在数据流上,发送给阵列。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (5)
1.一种基于子图解耦的粗粒度可重构阵列调度方法,其特征在于,包括子图解耦模块、动态配置切换模块、子图调度器,其中,所述子图解耦模块是针对程序中的非一致性控制流,将数据流图解耦成子图依次执行;所述动态配置切换模块是设计了一种多米诺骨牌式的配置切换机制,降低动态配置切换的开销;所述子图调度器是通过监测片上缓存中子缓存(bank)的空满状态,对子图的执行顺序进行动态调度;
所述调度方法包括以下步骤:
步骤S1:将数据流图(DFG)中处于所述非一致性控制流的区域分割成若干个相互独立的所述子图;
步骤S2:同一时间内,每个所述子图在阵列上独立执行并进行充分的循环展开以提高阵列PE利用率;
步骤S3:当某一个所述子图执行完毕后,利用所述多米诺骨牌式的配置切换机制进行子图切换;
步骤S4:通过交替执行所有的所述子图,最终完成整个程序的执行;
将配置切换信号绑定在数据流上,所述配置切换信号是子图ID,借助正在执行的所述子图的所述数据流传递配置切换信号,实现无流水线停顿的配置切换;
为了实现多米诺骨牌式的所述子图切换,在现有的PE结构中增加了一个配置切换单元;
所述配置切换单元每个时钟周期都监测绑定在输入数据上的子图ID,并将监测到的所述子图ID和当前正在执行的所述子图ID进行比较,如果所述子图ID发生改变,则所述配置切换单元将会从配置缓存中读出监测到的所述子图配置信息,然后通过所述配置切换单元将所述PE切换为相应的配置,同时将当前所述子图ID更新为监测到的所述子图ID。
2.如权利要求1所述的一种基于子图解耦的粗粒度可重构阵列调度方法,其特征在于,所述非一致性控制流包括非完美循环中外层循环子图和内层循环子图执行次数不同、分支中不同路径的所述子图不会同时执行、循环依赖中含有数据依赖的所述子图无法并行执行。
3.如权利要求2所述的一种基于子图解耦的粗粒度可重构阵列调度方法,其特征在于,所述步骤S2是通过片上缓存暂存中间数据实现所述子图解耦。
4.如权利要求3所述的一种基于子图解耦的粗粒度可重构阵列调度方法,其特征在于,当下一个时钟周期,新的所述子图的数据流输入时,所述PE即可立刻执行新的所述子图的操作。
5.如权利要求4所述的一种基于子图解耦的粗粒度可重构阵列调度方法,其特征在于,所述子图调度器通过监测各个所述子图存放中间数据的对应子缓存(bank)的空满状态,判断当前所述子图是否执行结束,以及哪些所述子图可以开始执行,以及通过一个优先编码器从所有可以开始执行的子图中挑选一个进行执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110049464.1A CN112698954B (zh) | 2021-01-14 | 2021-01-14 | 一种基于子图解耦的粗粒度可重构阵列调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110049464.1A CN112698954B (zh) | 2021-01-14 | 2021-01-14 | 一种基于子图解耦的粗粒度可重构阵列调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112698954A CN112698954A (zh) | 2021-04-23 |
CN112698954B true CN112698954B (zh) | 2022-05-10 |
Family
ID=75515100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110049464.1A Active CN112698954B (zh) | 2021-01-14 | 2021-01-14 | 一种基于子图解耦的粗粒度可重构阵列调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112698954B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19926538A1 (de) * | 1999-06-10 | 2000-12-14 | Pact Inf Tech Gmbh | Hardware und Betriebsverfahren |
CN109308327A (zh) * | 2018-09-19 | 2019-02-05 | 浙江天猫技术有限公司 | 基于子图模型兼容点中心模型的图计算方法装置介质设备 |
CN110321064A (zh) * | 2018-03-30 | 2019-10-11 | 北京深鉴智能科技有限公司 | 用于神经网络的计算平台实现方法及系统 |
CN111475205A (zh) * | 2020-03-02 | 2020-07-31 | 上海交通大学 | 一种基于数据流解耦合的粗粒度可重构阵列结构设计方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8230411B1 (en) * | 1999-06-10 | 2012-07-24 | Martin Vorbach | Method for interleaving a program over a plurality of cells |
-
2021
- 2021-01-14 CN CN202110049464.1A patent/CN112698954B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19926538A1 (de) * | 1999-06-10 | 2000-12-14 | Pact Inf Tech Gmbh | Hardware und Betriebsverfahren |
CN110321064A (zh) * | 2018-03-30 | 2019-10-11 | 北京深鉴智能科技有限公司 | 用于神经网络的计算平台实现方法及系统 |
CN109308327A (zh) * | 2018-09-19 | 2019-02-05 | 浙江天猫技术有限公司 | 基于子图模型兼容点中心模型的图计算方法装置介质设备 |
CN111475205A (zh) * | 2020-03-02 | 2020-07-31 | 上海交通大学 | 一种基于数据流解耦合的粗粒度可重构阵列结构设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112698954A (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11003458B2 (en) | Execution of data-parallel programs on coarse-grained reconfigurable architecture hardware | |
EP3449357B1 (en) | Scheduler for out-of-order block isa processors | |
JP6059413B2 (ja) | 再構成可能命令セル・アレイ | |
Nagarajan et al. | A design space evaluation of grid processor architectures | |
US8250507B1 (en) | Distributing computations in a parallel processing environment | |
US9275002B2 (en) | Tile-based processor architecture model for high-efficiency embedded homogeneous multicore platforms | |
US6721884B1 (en) | System for executing computer program using a configurable functional unit, included in a processor, for executing configurable instructions having an effect that are redefined at run-time | |
GB2471067A (en) | Shared resource multi-thread array processor with heterogeneous function blocks | |
WO2010060283A1 (zh) | 一种数据处理的方法与装置 | |
EP1134654A1 (en) | Program product and data processor | |
US20140137123A1 (en) | Microcomputer for low power efficient baseband processing | |
CN101799750A (zh) | 一种数据处理的方法与装置 | |
Capalija et al. | Towards synthesis-free JIT compilation to commodity FPGAs | |
CN112698954B (zh) | 一种基于子图解耦的粗粒度可重构阵列调度方法 | |
KR101445794B1 (ko) | 소프트웨어 기반 무선통신 터미널을 위한 프로그래밍 가능한 장치 | |
KR20080083417A (ko) | 저전력형 컨피규레이션 캐시와 이를 포함하는 재구성형프로세싱 시스템 | |
Liu et al. | TLIA: Efficient reconfigurable architecture for control-intensive kernels with triggered-long-instructions | |
Ebeling | The general RaPiD architecture description | |
Dimitroulakos et al. | Performance improvements using coarse-grain reconfigurable logic in embedded SOCs | |
Yazdani et al. | Reconfiguralbe multimedia accelerator for mobile systems | |
WO2021014017A1 (en) | A reconfigurable architecture, for example a coarse-grained reconfigurable architecture as well as a corresponding method of operating such a reconfigurable architecture | |
Gregoretti et al. | Design and Implementation of the Control Structure of the PAPRICA-3 Processor | |
CN116303226A (zh) | 粗粒度可重构阵列数据流处理器的高效执行方法及系统 | |
CN118585288A (zh) | 一种在处理器中实现多个线程并行的超线程架构的系统 | |
KR100924383B1 (ko) | 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템 및방법 |
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 |