CN116303226A - 粗粒度可重构阵列数据流处理器的高效执行方法及系统 - Google Patents
粗粒度可重构阵列数据流处理器的高效执行方法及系统 Download PDFInfo
- Publication number
- CN116303226A CN116303226A CN202310159302.2A CN202310159302A CN116303226A CN 116303226 A CN116303226 A CN 116303226A CN 202310159302 A CN202310159302 A CN 202310159302A CN 116303226 A CN116303226 A CN 116303226A
- Authority
- CN
- China
- Prior art keywords
- coarse
- node
- execution
- reconfigurable array
- array data
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000012544 monitoring process Methods 0.000 claims abstract description 9
- 238000012545 processing Methods 0.000 claims description 14
- 230000005540 biological transmission Effects 0.000 claims description 9
- 230000001419 dependent effect Effects 0.000 claims description 6
- 238000013461 design Methods 0.000 description 19
- 239000000872 buffer Substances 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000007547 defect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
- G06F15/7878—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for pipeline reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明提出一种粗粒度可重构阵列数据流处理器的高效执行方法和系统,包括:待执行程序的有向数据流图中节点为代码段,连线为节点间依赖关系;粗粒度可重构阵列数据流处理器的PE从全局缓存中加载每个节点的配置信息、操作指令和操作数;调度前继依赖已满足的节点作为当前节点开始执行,并将当前节点的代码段分为多个执行阶段;调度当前节点的下个循环开始执行,执行时监测当前节点的下个阶段对应的粗粒度可重构阵列数据流处理器部件已经空闲,则当前节点进入下一个执行阶段,并用粗粒度可重构阵列数据流处理器部件执行其下一个执行阶段;运行完有向数据流图中所有节点的循环后,从粗粒度可重构阵列数据流处理器的全局缓存中输出当前运行结果。
Description
技术领域
本发明涉及计算机体系结构技术领域,并特别涉及一种高效的数据流处理器设计方法和系统。
背景技术
冯诺依曼结构是当今大多数计算机芯片使用的架构。这种结构的特点在于将指令和数据都存储在内存当中,顺序读取,顺序执行。在冯诺依曼架构种,一个程序表现为一个指令序列,而冯诺依曼机器运行方式就是顺序地执行这串指令,这种执行模型被称为控制流模型(Control Flow Model)。
而在19世纪70年代,一种全新的数据流模型被提出。其核心思想为:一个程序可以表示为一个有向数据流图(Directed Dataflow Graph,DFG)。在这个图中,节点表示指令,其中的连线表示数据,连线的方向表示数据在指令之间的依赖关系。对于任何一个节点(也就是指令)来说,只要其依赖的操作数准备好了,其就可以开始执行。这种数据流模型相对于传统的控制流模型而言,有以下优点:
1.数据流模型让数据在指令节点之间流动,避免了频繁的存储和取用,在计算密集型应用场景下能够大大减少访存时间,提高程序运行的效率;
2.数据流模型让指令分散在多个处理单元当中,每条指令在其操作数准备好之后就可以发射执行。相对于冯诺依曼架构,大大增加了指令级并行;
3.数据流模型将程序建模成一个有向图数据流图,这意味相对于GPU的执行模型,数据流模型具有高效处理复杂依赖的程序的优势。
粗粒度可重构阵列(Coarse-Grained Reconfigurable Array,CGRA)是一种可以以数据流模型执行程序的一种空间计算(Spatial Computing)架构。CGRA一般由片上网络连接、PE(Processing Element)阵列、Host、缓存(buffer)等组成。CGRA拥有比FPGA(FieldProgrammable Gate Array,现场可编程门阵列)更好的可编程性,有比GPU更优秀的功耗表现和更通用的并行能力。CGRA在执行程序前,一般首先有一个指令映射的过程。即将代表整个程序的DFG映射到PE阵列上——这决定了每条指令会在哪个时间点,在哪个PE上执行。
传统的用CGRA执行数据流程序的方式都是严格按照细粒度的指令为单位:即在指令映射的时候以指令为单位进行映射;在执行过程中,每执行完一条指令就需要将生成的数据通过片上网络传输到需要此数据的PE上。这种细粒度执行模式的优点在于:一方面,指令映射的建模更加简单与直接,优化粒度也更细;另一方面,PE的控制逻辑也比较简单。其缺点在于:每执行一次指令就要一次传输开销,开销较大。
Codelet模型是高性能计算领域中的一种对程序的粗粒度的划分,其相对传统的以指令为单位的细粒度数据流模型而言,它是一个以代码段为单位的粗粒度数据流模型——其每个节点是一个代码段而非指令。这种模型带来的好处是节点数可以大大减少,指令映射的开销也大大减少。
但是,如果直接将Codelet模型运用到现有的CGRA架构上,仍然是一次只执行一条指令。这种执行效率非常低下:在执行一条指令的过程中,PE中的所有部件都轮流处于空闲的状态,而其他指令也必须等待。
发明内容
本发明的目的是解决了现有CGRA架构的运行模式不能充分利用Codelet模型带来的优势,提出了一种能高效执行Codelet模型的PE解耦合的设计以及具体CGRA架构。
针对现有技术的不足,本发明提出一种粗粒度可重构阵列数据流处理器的高效执行方法,其中包括:
步骤1、获取以有向数据流图表示的待执行程序,且该有向数据流图中每个节点为一个代码段,节点间的连线方向表示数据在代码段之间的依赖关系;粗粒度可重构阵列数据流处理器的PE从其全局缓存中加载每个节点的配置信息、操作指令和操作数;
步骤2、调度前继依赖已满足的节点作为当前节点开始执行,并将当前节点的代码段分为多个执行阶段;
步骤3、调度该当前节点的下个循环开始执行,执行时监测当前节点的下个阶段对应的粗粒度可重构阵列数据流处理器部件已经空闲,则当前节点进入下一个执行阶段,并用粗粒度可重构阵列数据流处理器部件执行其下一个执行阶段;
步骤4、执行完当前循环,将当前循环的执行结果传输至该粗粒度可重构阵列数据流处理器中依赖当前节点的PE;
步骤5、判断是否运行完该有向数据流图中所有节点的循环,若是,则结束运行,从该粗粒度可重构阵列数据流处理器的全局缓存中输出当前运行结果,否则再次执行该步骤2。
所述的粗粒度可重构阵列数据流处理器的高效执行方法,其中该粗粒度可重构阵列数据流处理器的PE中具有分别对应读取阶段、计算阶段和存储阶段的读取部件、计算部件和存储部件。
所述的粗粒度可重构阵列数据流处理器的高效执行方法,其中该粗粒度可重构阵列数据流处理器的PE包括:
指令缓存,用于存储待执行的指令;
操作数寄存器,用于存储操作数;
路由,用于PE内数据的交换;
计算部件,包含算术和逻辑运算部件;
读取部件,从该粗粒度可重构阵列数据流处理器的该全局缓存中取数,存到PE内部的该操作数寄存器中;
存数部件,用于将该操作数寄存器中的数据存回到该全局缓存中;
传数部件,用于将数据传送到需要的PE;
控制器,用于控制整个PE的运行。
所述的粗粒度可重构阵列数据流处理器的高效执行方法,其中该控制器包括:
内核表,用于记录每个节点的配置信息,由编译器生成,包含了节点在各个执行阶段的基址信息、循环次数;
状态表,用于记录节点的状态信息,包括节点的依赖节点是否都已经执行完毕、节点当前所处的执行阶段;
调度部件,用于调度节点的执行;
消息处理部件,用于接收其他PE发送来的消息并做相应处理。
本发明还提出了一种粗粒度可重构阵列数据流处理器的高效执行系统,其中包括:
初始模块,用于获取以有向数据流图表示的待执行程序,且该有向数据流图中每个节点为一个代码段,节点间的连线方向表示数据在代码段之间的依赖关系;粗粒度可重构阵列数据流处理器的PE从其全局缓存中加载每个节点的配置信息、操作指令和操作数;
执行模块,用于调度前继依赖已满足的节点作为当前节点开始执行,并将当前节点的代码段分为多个执行阶段;
监测模块,用于调度该当前节点的下个循环开始执行,执行时监测当前节点的下个阶段对应的粗粒度可重构阵列数据流处理器部件已经空闲,则当前节点进入下一个执行阶段,并用粗粒度可重构阵列数据流处理器部件执行其下一个执行阶段;
传输模块,用于执行完当前循环,将当前循环的执行结果传输至该粗粒度可重构阵列数据流处理器中依赖当前节点的PE;
判断模块,用于判断是否运行完该有向数据流图中所有节点的循环,若是,则结束运行,从该粗粒度可重构阵列数据流处理器的全局缓存中输出当前运行结果,否则再次调度该执行模块。
所述的粗粒度可重构阵列数据流处理器的高效执行系统,其中该粗粒度可重构阵列数据流处理器的PE中具有分别对应读取阶段、计算阶段和存储阶段的读取部件、计算部件和存储部件。
所述的粗粒度可重构阵列数据流处理器的高效执行系统,其中该粗粒度可重构阵列数据流处理器的PE包括:
指令缓存,用于存储待执行的指令;
操作数寄存器,用于存储操作数;
路由,用于PE内数据的交换;
计算部件,包含算术和逻辑运算部件;
读取部件,从该粗粒度可重构阵列数据流处理器的该全局缓存中取数,存到PE内部的该操作数寄存器中;
存数部件,用于将该操作数寄存器中的数据存回到该全局缓存中;
传数部件,用于将数据传送到需要的PE;
控制器,用于控制整个PE的运行。
所述的粗粒度可重构阵列数据流处理器的高效执行系统,其中该控制器包括:
内核表,用于记录每个节点的配置信息,由编译器生成,包含了节点在各个执行阶段的基址信息、循环次数;
状态表,用于记录节点的状态信息,包括节点的依赖节点是否都已经执行完毕、节点当前所处的执行阶段;
调度部件,用于调度节点的执行;
消息处理部件,用于接收其他PE发送来的消息并做相应处理。
本发明还提出了一种存储介质,用于存储执行所述任意一种粗粒度可重构阵列数据流处理器的高效执行方法的程序。
本发明还提出了一种客户端,用于任意一种粗粒度可重构阵列数据流处理器的高效执行系统。
由以上方案可知,本发明的优点在于:本发明相比于现有技术,能够提高程序在CGRA上执行的节点、指令并行度,从而提高程序指令的效率,缩短程序执行时间。另一方面,本发明也能充分提高CGRA的部件利用率。
附图说明
图1为传统指令为单位的细粒度数据流模型与Codelet粗粒度数据流模型的对比图;
图2为本发明提出的CGRA架构的PE示意图;
图3为本发明提出的CGRA执行Codelet模型的过程示意图;
图4为解耦合PE设计的示意图。
具体实施方式
为了提高CGRA以Codelet模型运行的部件利用率,充分发挥Codelet模型的优势,本发明提出一种优化的数据流执行模型(Dataflow Execution Model),并且在此基础上提出了对应的PE解耦合(Decoupled PE)的设计及具体CGRA架构实现。这种设计能够充分调度映射到一个PE上的多节点,充分发挥Codelet模型的优势。具体来说本发明包括如下关键技术点:
关键点1,解耦合的PE架构设计;将Codelet节点和PE的部件进行划分成多个阶段,多个阶段之间可以不再耦合执行,每个阶段的部件可以独立调度,提高了一个PE上多节点调度的自由度、并行度,也提高了PE上的部件利用率;
关键点2,一套具体的应用解耦合的PE架构设计的具体实现;将节点的执行、部件划分为为多个阶段。通过维护各个节点的状态表,使得每个阶段的部件只需要调度处于此阶段的节点。节点的各个阶段解耦合,每个PE可以并行运行多个Codelet节点,提高了节点并行度以及部件利用率。
为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
本发明提出的解耦合设计的PE如附图4所示:一个节点的整个执行过程被划分N个执行阶段。对应的执行也按照这几个阶段分成N类执行部件。其中,执行部件为PE内部的部件。比如PE中的部件就可以划分为Load部件、计算部件、Store部件。各个节点按照阶段划分,以一种类似流水线的方式轮流进入各个阶段,也轮流在各类部件上执行。但是其和流水线的设计和思想是有本质区别:
●流水线是针对指令的流水,而本发明设计是针对节点的流水;
●流水线要求每个阶段时间等长,而本发明设计每个节点在每个阶段执行的时间是任意的;
●流水线是紧耦合的,一条指令不可以在其前继指令前进到下个流水之前前进到下个流水。但是本发明设计是解耦合的,具体会在下文讲到;
●流水线要求每个指令走完所有阶段,但是本发明实现却通过判断此阶段的指令数是否大于0来判断是否可以跳过此阶段。
这里以附图4具体解释PE的解耦合设计:倘若按照流水线的设计,节点2阶段1在t0执行结束后,由于其下一阶段的部件2还在被节点1占用,其不得不插入等待,等到t1才能进入阶段2,此时节点3也才能被调入到部件1执行阶段1。而由于本发明设计中PE的各个阶段的部件的解耦合设计,节点2在t0执行完阶段1之后就可以让出执行部件,让节点3开始执行。这种设计减少了无用的等待,提高了部件的利用率,也提高了节点的并行度和缩短了程序执行时间。
值得一提的是,PE的各个部件的解耦合设计是不局限于某种特定设计的——也即可以通过多种实现达到本发明提出的解耦合的设计,比如:可以通过维护状态表来实现,可以通过维护多个状态的队列来实现。
本发明提出的应用解耦合PE设计的具体实现如附图2所示,分别有以下部件/记录信息:
●Inst Buffer:指令缓存,存储待执行的指令;
●Operand RegFile:操作数寄存器文件,存储了操作数;
●Router:路由,用于将此PE的数据、消息传递传去,即用于PE内部数据的传递交换;
●CAL Pipline:采用了超标量设计的计算部件,包含了一些算术和逻辑运算部件。对应四个执行阶段(LD、CAL、FLOW、ST)中的CAL Stage;
●LOAD Stream:读取部件,从CGRA的全局buffer中取数,存到PE内部的OperandRegFile中。对应四个阶段中的LD Stage;
●Store Stream:存数部件,用于将Operand RegFile中的数据存回到CGRA的全局buffer中。对应四个阶段中的ST Stage;
●Dataflow Unit:传数部件,用于将数据传送到需要的PE。对应四个阶段中的Flow Stage;
●Controller:控制器,用于控制整个PE的运行。整个Controller又包括:
■Kernel Table:记录每个节点的配置信息,由编译器生成,包含了节点在四个执行阶段的基址信息、循环次数等;
■Status Table:记录节点的状态信息,包括这个节点的依赖节点是否都已经执行完毕、这个节点正处于的执行阶段;
■Scheduler:调度部件,用于调度节点的执行;
■ACKPort:消息处理部件,用于接收其他PE发送来的消息并做相应处理,例如当其他PE的某个节点A执行结束,此PE收到这个消息后就可以开始后继节点B的执行,并向发送消息的PE返回ack消息。
本发明的具体工作流程:
在步骤S101,PE从CGRA的全局buffer中加载每个Node的配置信息、操作指令、操作数。
在步骤S102,调度器通过状态表status table判断哪些节点的前继依赖都已满足来决定调度哪些节点开始执行。节点的前继依赖是否都已满足可以由其他PE在步骤S107发出的控制信息来知晓。
在步骤S103,调度器开始调度每个节点的下一个循环开始执行,初次调度时,即为执行第一个循环。其中循环对应程序需求,程序中若有循环操作,则对应的节点就可能有循环。循环的次数是根据对应进程经过编译器编译出来而决定的。
在步骤S104,如果节点的下个阶段对应的部件(例如PE内用于取数的load部件,用于store的store部件)已经空闲,那么调度器开始调度节点进入下一个执行阶段,并用对应的执行部件来执行。初次调度时,即为Load阶段,调度到Load Stream部件上开始执行。
一个节点顺序进入各个阶段,最终执行完成此节点(的一个循环)。阶段划分为LD,CAL,FLOW,ST。所以执行过程是依次进入LD,CAL,FLOW,ST阶段,每个阶段需要再此阶段对应的LD或CAL或FLOW或ST部件中执行。初次调度此节点时,此节点进入LD阶段,因此调度到LD部件中进行执行。
在步骤S105,判断节点是否还有剩余阶段,若是,则再次执行步骤S104,否则执行步骤步骤S106;
在步骤S106,节点执行完一个循环,需要发送信息给依赖本节点的PE,通知这些PE此节点已经执行完毕。
在步骤S107,判断是否运行完向数据流图中所有节点的循环,若是,则结束运行,输出当前运行结果,否则再次执行步骤S103。其中这个输出的是整个CGRA的计算结束,但是计算结果存在CGRA的内部存储中。需要搬运回计算机能够读取的内存。
以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。
本发明还提出了一种粗粒度可重构阵列数据流处理器的高效执行系统,其中包括:
初始模块,用于获取以有向数据流图表示的待执行程序,且该有向数据流图中每个节点为一个代码段,节点间的连线方向表示数据在代码段之间的依赖关系;粗粒度可重构阵列数据流处理器的PE从其全局缓存中加载每个节点的配置信息、操作指令和操作数;
执行模块,用于调度前继依赖已满足的节点作为当前节点开始执行,并将当前节点的代码段分为多个执行阶段;
监测模块,用于调度该当前节点的下个循环开始执行,执行时监测当前节点的下个阶段对应的粗粒度可重构阵列数据流处理器部件已经空闲,则当前节点进入下一个执行阶段,并用粗粒度可重构阵列数据流处理器部件执行其下一个执行阶段;
传输模块,用于执行完当前循环,将当前循环的执行结果传输至该粗粒度可重构阵列数据流处理器中依赖当前节点的PE;
判断模块,用于判断是否运行完该有向数据流图中所有节点的循环,若是,则结束运行,从该粗粒度可重构阵列数据流处理器的全局缓存中输出当前运行结果,否则再次调度该执行模块。
所述的粗粒度可重构阵列数据流处理器的高效执行系统,其中该粗粒度可重构阵列数据流处理器的PE中具有分别对应读取阶段、计算阶段和存储阶段的读取部件、计算部件和存储部件。
所述的粗粒度可重构阵列数据流处理器的高效执行系统,其中该粗粒度可重构阵列数据流处理器的PE包括:
指令缓存,用于存储待执行的指令;
操作数寄存器,用于存储操作数;
路由,用于PE内数据的交换;
计算部件,包含算术和逻辑运算部件;
读取部件,从该粗粒度可重构阵列数据流处理器的该全局缓存中取数,存到PE内部的该操作数寄存器中;
存数部件,用于将该操作数寄存器中的数据存回到该全局缓存中;
传数部件,用于将数据传送到需要的PE;
控制器,用于控制整个PE的运行。
所述的粗粒度可重构阵列数据流处理器的高效执行系统,其中该控制器包括:
内核表,用于记录每个节点的配置信息,由编译器生成,包含了节点在各个执行阶段的基址信息、循环次数;
状态表,用于记录节点的状态信息,包括节点的依赖节点是否都已经执行完毕、节点当前所处的执行阶段;
调度部件,用于调度节点的执行;
消息处理部件,用于接收其他PE发送来的消息并做相应处理。
本发明还提出了一种存储介质,用于存储执行所述任意一种粗粒度可重构阵列数据流处理器的高效执行方法的程序。
本发明还提出了一种客户端,用于任意一种粗粒度可重构阵列数据流处理器的高效执行系统。
Claims (10)
1.一种粗粒度可重构阵列数据流处理器的高效执行方法,其特征在于,包括:
步骤1、获取以有向数据流图表示的待执行程序,且该有向数据流图中每个节点为一个代码段,节点间的连线方向表示数据在代码段之间的依赖关系;粗粒度可重构阵列数据流处理器的PE从其全局缓存中加载每个节点的配置信息、操作指令和操作数;
步骤2、调度前继依赖已满足的节点作为当前节点开始执行,并将当前节点的代码段分为多个执行阶段;
步骤3、调度该当前节点的下个循环开始执行,执行时监测当前节点的下个阶段对应的粗粒度可重构阵列数据流处理器部件已经空闲,则当前节点进入下一个执行阶段,并用粗粒度可重构阵列数据流处理器部件执行其下一个执行阶段;
步骤4、执行完当前循环,将当前循环的执行结果传输至该粗粒度可重构阵列数据流处理器中依赖当前节点的PE;
步骤5、判断是否运行完该有向数据流图中所有节点的循环,若是,则结束运行,从该粗粒度可重构阵列数据流处理器的全局缓存中输出当前运行结果,否则再次执行该步骤2。
2.如权利要求1所述的粗粒度可重构阵列数据流处理器的高效执行方法,其特征在于,该粗粒度可重构阵列数据流处理器的PE中具有分别对应读取阶段、计算阶段和存储阶段的读取部件、计算部件和存储部件。
3.如权利要求1所述的粗粒度可重构阵列数据流处理器的高效执行方法,其特征在于,该粗粒度可重构阵列数据流处理器的PE包括:
指令缓存,用于存储待执行的指令;
操作数寄存器,用于存储操作数;
路由,用于PE内数据的交换;
计算部件,包含算术和逻辑运算部件;
读取部件,从该粗粒度可重构阵列数据流处理器的该全局缓存中取数,存到PE内部的该操作数寄存器中;
存数部件,用于将该操作数寄存器中的数据存回到该全局缓存中;
传数部件,用于将数据传送到需要的PE;
控制器,用于控制整个PE的运行。
4.如权利要求1所述的粗粒度可重构阵列数据流处理器的高效执行方法,其特征在于,该控制器包括:
内核表,用于记录每个节点的配置信息,由编译器生成,包含了节点在各个执行阶段的基址信息、循环次数;
状态表,用于记录节点的状态信息,包括节点的依赖节点是否都已经执行完毕、节点当前所处的执行阶段;
调度部件,用于调度节点的执行;
消息处理部件,用于接收其他PE发送来的消息并做相应处理。
5.一种粗粒度可重构阵列数据流处理器的高效执行系统,其特征在于,包括:
初始模块,用于获取以有向数据流图表示的待执行程序,且该有向数据流图中每个节点为一个代码段,节点间的连线方向表示数据在代码段之间的依赖关系;粗粒度可重构阵列数据流处理器的PE从其全局缓存中加载每个节点的配置信息、操作指令和操作数;
执行模块,用于调度前继依赖已满足的节点作为当前节点开始执行,并将当前节点的代码段分为多个执行阶段;
监测模块,用于调度该当前节点的下个循环开始执行,执行时监测当前节点的下个阶段对应的粗粒度可重构阵列数据流处理器部件已经空闲,则当前节点进入下一个执行阶段,并用粗粒度可重构阵列数据流处理器部件执行其下一个执行阶段;
传输模块,用于执行完当前循环,将当前循环的执行结果传输至该粗粒度可重构阵列数据流处理器中依赖当前节点的PE;
判断模块,用于判断是否运行完该有向数据流图中所有节点的循环,若是,则结束运行,从该粗粒度可重构阵列数据流处理器的全局缓存中输出当前运行结果,否则再次调度该执行模块。
6.如权利要求5所述的粗粒度可重构阵列数据流处理器的高效执行系统,其特征在于,该粗粒度可重构阵列数据流处理器的PE中具有分别对应读取阶段、计算阶段和存储阶段的读取部件、计算部件和存储部件。
7.如权利要求5所述的粗粒度可重构阵列数据流处理器的高效执行系统,其特征在于,该粗粒度可重构阵列数据流处理器的PE包括:
指令缓存,用于存储待执行的指令;
操作数寄存器,用于存储操作数;
路由,用于PE内数据的交换;
计算部件,包含算术和逻辑运算部件;
读取部件,从该粗粒度可重构阵列数据流处理器的该全局缓存中取数,存到PE内部的该操作数寄存器中;
存数部件,用于将该操作数寄存器中的数据存回到该全局缓存中;
传数部件,用于将数据传送到需要的PE;
控制器,用于控制整个PE的运行。
8.如权利要求5所述的粗粒度可重构阵列数据流处理器的高效执行系统,其特征在于,该控制器包括:
内核表,用于记录每个节点的配置信息,由编译器生成,包含了节点在各个执行阶段的基址信息、循环次数;
状态表,用于记录节点的状态信息,包括节点的依赖节点是否都已经执行完毕、节点当前所处的执行阶段;
调度部件,用于调度节点的执行;
消息处理部件,用于接收其他PE发送来的消息并做相应处理。
9.一种存储介质,用于存储执行如权利要求1到4所述任意一种粗粒度可重构阵列数据流处理器的高效执行方法的程序。
10.一种客户端,用于权利要求5至8中任意一种粗粒度可重构阵列数据流处理器的高效执行系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310159302.2A CN116303226A (zh) | 2023-02-14 | 2023-02-14 | 粗粒度可重构阵列数据流处理器的高效执行方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310159302.2A CN116303226A (zh) | 2023-02-14 | 2023-02-14 | 粗粒度可重构阵列数据流处理器的高效执行方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116303226A true CN116303226A (zh) | 2023-06-23 |
Family
ID=86829824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310159302.2A Pending CN116303226A (zh) | 2023-02-14 | 2023-02-14 | 粗粒度可重构阵列数据流处理器的高效执行方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116303226A (zh) |
-
2023
- 2023-02-14 CN CN202310159302.2A patent/CN116303226A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mei et al. | ADRES: An architecture with tightly coupled VLIW processor and coarse-grained reconfigurable matrix | |
JP6525286B2 (ja) | プロセッサコア及びプロセッサシステム | |
JP2928695B2 (ja) | 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法 | |
Mei et al. | Design methodology for a tightly coupled VLIW/reconfigurable matrix architecture: A case study | |
JP4936517B2 (ja) | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ | |
JP4082706B2 (ja) | マルチプロセッサシステム及びマルチグレイン並列化コンパイラ | |
JP6018022B2 (ja) | 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 | |
US7725696B1 (en) | Method and apparatus for modulo scheduled loop execution in a processor architecture | |
US20060026578A1 (en) | Programmable processor architecture hirarchical compilation | |
JP2009104422A (ja) | マルチプロセッサ向け最適コード生成方法及びコンパイル装置 | |
JP2008097084A (ja) | プロセッサ及びデータ転送ユニット | |
JP2010079622A (ja) | マルチコアプロセッサシステム、および、そのタスク制御方法 | |
JP2004171573A (ja) | 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ | |
US20140143524A1 (en) | Information processing apparatus, information processing apparatus control method, and a computer-readable storage medium storing a control program for controlling an information processing apparatus | |
JP2007305148A (ja) | マルチプロセッサシステム | |
US20230195526A1 (en) | Graph computing apparatus, processing method, and related device | |
JP4884634B2 (ja) | データ処理装置、データ処理装置を動作させる方法及びプログラムをコンパイルする方法 | |
US20060200648A1 (en) | High-level language processor apparatus and method | |
US11815935B2 (en) | Programming a coarse grained reconfigurable array through description of data flow graphs | |
CN116303226A (zh) | 粗粒度可重构阵列数据流处理器的高效执行方法及系统 | |
JP2023527227A (ja) | プロセッサ、処理方法、および関連デバイス | |
Singhvi et al. | Pipeline Hazards and its Resolutions | |
JPH11203145A (ja) | 命令スケジューリング方法 | |
JP2002318689A (ja) | 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法 | |
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 |