CN104461471B - 分簇vliw处理器上统一的指令调度和寄存器分配方法 - Google Patents
分簇vliw处理器上统一的指令调度和寄存器分配方法 Download PDFInfo
- Publication number
- CN104461471B CN104461471B CN201410798231.1A CN201410798231A CN104461471B CN 104461471 B CN104461471 B CN 104461471B CN 201410798231 A CN201410798231 A CN 201410798231A CN 104461471 B CN104461471 B CN 104461471B
- Authority
- CN
- China
- Prior art keywords
- register
- instruction
- scheduling
- cluster
- clustering
- 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.)
- Expired - Fee Related
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种分簇VLIW处理器上统一的指令调度和寄存器分配方法,指令调度器将程序中所有基本块按照相反后序进行调度,并将每个基本块中的指令按照优先级调度;即,每次选取可调度指令中优先级最高的指令,给它分配簇及簇上的功能部件,并且使用寄存器分配器给该指令的虚拟寄存器分配物理寄存器。本发明具有可最大程度地减少程序的基本块中指令执行时间、有效降低寄存器压力等优点。
Description
技术领域
本发明主要涉及到处理器的编译优化技术领域,特指一种适用于分簇VLIW处理器的指令调度和寄存器分配方法。
背景技术
随着各种应用程序对DSP(数字信号处理器)的性能要求不断提高,当前的高端DSP通常采用VLIW体系结构来挖掘指令级并行性,从而提高DSP处理器的性能。VLIW处理器由多个功能部件组成,其中每个功能部件可以执行多种指令。所有的功能部件共享一个寄存器文件。在每个时钟周期,多个指令可以在多个功能部件上并行执行。然而,单个寄存器文件极大地阻碍了VLIW处理器的可扩展性,在增加功能部件数目的同时想要保持或加速时钟频率,对于单个簇的体系结构来说是不可能的。分簇VLIW体系结构通过将单个簇的体系结构划分为多个较小的簇来获得更高的性能和较低的功耗,每个簇有自己的功能部件和本地寄存器文件,簇间由通信网络进行通信。
指令调度和寄存器分配是编译器优化的两个重要问题,对程序的执行时间有很大影响。传统方法将寄存器分配和指令调度分两个阶段执行,从而会导致阶段顺序问题,使得编译代码不够优化。若寄存器分配在指令调度前执行,同一个寄存器可能被分配给不同的变量,导致伪依赖关系,因此降低代码的指令级并行性。若指令调度在寄存器分配之前执行,增加的指令级并行性可能极大地增加寄存器压力,导致寄存器溢出。
分簇VLIW处理器使得指令调度和寄存器分配更具挑战性。首先,指令调度需要将指令分配到不同的簇,不当的分配会导致不必要的簇间通信,从而增加基本块的执行时间。第二,簇间的指令分配对不同簇上的寄存器压力有很大影响。不当的分配机制可能导致各簇的寄存器压力不均匀而增加寄存器溢出。第三,当变量被从一个簇传递到其它簇的时候,会动态地产生的新的活跃区间,并且需要其它簇上的多个寄存器来保存同一个变量的副本。第四,一个变量的精确的活跃区间取决于它的第一个定义和最后一个使用的相关指令在何时被调度,而无法由传统的针对静态代码的活跃区间分析来决定。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种可最大程度地减少程序的基本块中指令执行时间、有效降低寄存器压力的分簇VLIW处理器上统一的指令调度和寄存器分配方法。
为解决上述技术问题,本发明采用以下技术方案:
一种分簇VLIW处理器上统一的指令调度和寄存器分配方法,指令调度器将程序中所有基本块按照相反后序进行调度,并将每个基本块中的指令按照优先级调度;即,每次选取可调度指令中优先级最高的指令,给它分配簇及簇上的功能部件,并且使用寄存器分配器给该指令的虚拟寄存器分配物理寄存器。
作为本发明的进一步改进:所述寄存器分配器为一个递增寄存器分配器,所述递增寄存器分配器根据指令调度器的调度情况给每条指令依次分配物理寄存器。
作为本发明的进一步改进:所述指令优先级在调度前根据指令间延迟和处理器资源限制来确定,并且在调度过程中根据寄存器压力来动态更新。
作为本发明的进一步改进:所述簇的选择取决于指令在各簇上可能的调度时间及寄存器压力。
作为本发明的进一步改进:在指令调度和寄存器分配过程中,对程序的控制流图中的变量进行生命周期分析;首先根据控制流图,对变量进行静态的生命周期分析;然后在调度过程中,所述递增寄存器分配器根据部分调度信息动态地分析变量的生命周期;即,根据已有的部分调度,进一步对变量的生命周期进行动态的分析。
作为本发明的进一步改进:对于有n个变量的程序,静态生命周期分析的时间复杂度在最坏情况下为O(n4),在通常情况下为O(n)或O(n2);动态生命周期分析的时间复杂度为O(|B|*n),其中|B|为控制流图中的基本块数目。
与现有技术相比,本发明的优点在于:
1、本发明的分簇VLIW处理器上统一的指令调度和寄存器分配方法,将指令调度和寄存器分配结合在一个阶段完成,从而避免了传统方法将两者分别执行而带来的阶段顺序问题。
2、本发明的分簇VLIW处理器上统一的指令调度和寄存器分配方法,在计算指令优先级时不仅考虑指令间延迟,也考虑处理器资源限制,而传统方法不考虑处理器资源限制,因此本发明的方法所计算的指令优先级更加精确,更能精确反映指令的相对重要性。此外,本发明在具体应用的调度过程中动态更新指令优先级,可以有效降低寄存器压力。
3、本发明的分簇VLIW处理器上统一的指令调度和寄存器分配方法,在调度指令时,指令调度器考虑了多个因素:指令的最早调度时间和其后续指令的最早调度时间,以及各簇的寄存器压力,从而能够更加有效地调度指令。
附图说明
图1是本发明的流程示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图1所示,本发明的分簇VLIW处理器上统一的指令调度和寄存器分配方法,为:指令调度器将程序中所有基本块按照相反后序进行调度,并将每个基本块中的指令按照优先级调度。每次选取可调度指令中优先级最高的指令,给它分配簇及簇上的功能部件,并且使用递增寄存器分配器给该指令的虚拟寄存器分配物理寄存器。即,在给每个指令分配簇和功能部件的同时,给每个指令的虚拟寄存器分配物理寄存器。
在上述过程中,寄存器分配工作由一个递增寄存器分配器实现,它根据指令调度器的调度情况给每条指令依次分配物理寄存器。
本实施例中,指令优先级可以在调度前根据指令间延迟和处理器资源限制来确定,并且在调度过程中根据寄存器压力来动态更新。
本实施例中,簇的选择需要考虑指令在各簇上可能的调度时间及寄存器压力。
在上述过程中,本发明进一步对程序的控制流图中的变量进行生命周期分析;在具体应用时,可以采用传统的递归算法来进行生命周期分析。
在上述过程中根据已有的部分调度,进一步对变量的生命周期进行动态的分析。对于有n个变量的程序,静态生命周期分析的时间复杂度在最坏情况下为O(n4),在通常情况下为O(n)或O(n2)。动态生命周期分析的时间复杂度为O(|B|*n),其中|B|为控制流图中的基本块数目。
由上可知,本发明的关键就在于将指令调度和寄存器分配放在同一阶段完成,其目的是:最小化所有指令的总体执行时间。对每一个可调度指令,指令调度器在分配簇和功能部件的同时,调用递增寄存器分配器给该指令分配物理寄存器。递增寄存器分配器还要考虑簇间通信带来的寄存器之间的数据拷贝问题,在不同簇上用相应的寄存器保存一个变量的多个副本。递增寄存器分配器根据变量生命周期和当前调度信息来决定分配或释放一个物理寄存器。由于本发明将指令调度和寄存器分配结合在同一阶段执行,只有当相关的指令被调度时才能决定变量生命周期的开始和结束。所以,递增寄存器分配器根据部分调度信息动态地分析变量的生命周期。
因此,本发明将寄存器分配和指令调度集成在同一个阶段来执行,以产生性能优化的编译代码。
在具体应用过程中,本发明在调度当前优先级最高的可执行指令vi时,给vi选择簇取决于vi在各簇上可能的最早执行时间或它的直接后续指令vj的最早执行时间。为vi选择的簇是使得vj可以尽早执行的。若不能评估vj的执行时间,则为vi选择一个簇使得vi可以尽早执行。此外,各簇的寄存器压力也在考虑范围内,以避免各簇的寄存器压力不均衡而引发不必要的寄存器溢出。
与传统的图着色寄存器分配方法不同,递增寄存器分配器按照指令调度的顺序给逐条指令分配寄存器。当调度一条可执行指令vi时,如果需要另外一条指令vk产生的结果a并且a已经被溢出,或者vk和vi不在同一个簇上,则需要为a在vi所在的簇上分配一个寄存器。随后,为指令vi的目标寄存器分配一个物理寄存器,如果此时没有空闲的物理寄存器,需要选择一个物理寄存器的值溢出并将该物理寄存器分配给vi的目标寄存器。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (4)
1.一种分簇VLIW处理器上统一的指令调度和寄存器分配方法,其特征在于,指令调度器将程序中所有基本块按照相反后序进行调度,并将每个基本块中的指令按照优先级调度;即,每次选取可调度指令中优先级最高的指令,给它分配簇及簇上的功能部件,并且使用寄存器分配器给该指令的虚拟寄存器分配物理寄存器;
所述寄存器分配器为一个递增寄存器分配器,所述递增寄存器分配器根据指令调度器的调度情况给每条指令依次分配物理寄存器;
指令优先级在调度前根据指令间延迟和处理器资源限制来确定,并且在调度过程中根据寄存器压力来动态更新。
2.根据权利要求1所述的分簇VLIW处理器上统一的指令调度和寄存器分配方法,其特征在于,所述簇的选择取决于指令在各簇上可能的调度时间及寄存器压力。
3.根据权利要求1~2中任意一项所述的分簇VLIW处理器上统一的指令调度和寄存器分配方法,其特征在于,在指令调度和寄存器分配过程中,对程序的控制流图中的变量进行生命周期分析;首先根据控制流图,对变量进行静态的生命周期分析;然后在调度过程中,所述递增寄存器分配器根据部分调度信息动态地分析变量的生命周期;即,根据已有的部分调度,进一步对变量的生命周期进行动态的分析。
4.根据权利要求3所述的分簇VLIW处理器上统一的指令调度和寄存器分配方法,其特征在于,对于有n个变量的程序,静态生命周期分析的时间复杂度在最坏情况下为O(n4),在通常情况下为O(n)或O(n2);动态生命周期分析的时间复杂度为O(|B|*n),其中|B|为控制流图中的基本块数目。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410798231.1A CN104461471B (zh) | 2014-12-19 | 2014-12-19 | 分簇vliw处理器上统一的指令调度和寄存器分配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410798231.1A CN104461471B (zh) | 2014-12-19 | 2014-12-19 | 分簇vliw处理器上统一的指令调度和寄存器分配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104461471A CN104461471A (zh) | 2015-03-25 |
CN104461471B true CN104461471B (zh) | 2018-06-15 |
Family
ID=52907588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410798231.1A Expired - Fee Related CN104461471B (zh) | 2014-12-19 | 2014-12-19 | 分簇vliw处理器上统一的指令调度和寄存器分配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104461471B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699466B (zh) * | 2015-03-26 | 2017-07-18 | 中国人民解放军国防科学技术大学 | 一种面向vliw体系结构的多元启发式指令选择方法 |
US10055208B2 (en) * | 2015-08-09 | 2018-08-21 | Oracle International Corporation | Extending a virtual machine instruction set architecture |
CN111104169B (zh) * | 2017-12-29 | 2021-01-12 | 上海寒武纪信息科技有限公司 | 指令列表调度方法、装置、计算机设备及存储介质 |
CN115617396B (zh) * | 2022-10-09 | 2023-08-29 | 上海燧原科技有限公司 | 应用于新型人工智能处理器的寄存器分配方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101553780A (zh) * | 2006-12-11 | 2009-10-07 | Nxp股份有限公司 | Vliw处理器的虚拟功能单元 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8539462B2 (en) * | 2010-12-21 | 2013-09-17 | National Tsing Hua University | Method for allocating registers for a processor based on cycle information |
-
2014
- 2014-12-19 CN CN201410798231.1A patent/CN104461471B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101553780A (zh) * | 2006-12-11 | 2009-10-07 | Nxp股份有限公司 | Vliw处理器的虚拟功能单元 |
Non-Patent Citations (1)
Title |
---|
一种基于寄存器压力的VLIW DSP分簇算法;雷一鸣等;《计算机应用》;20100101;第30卷(第1期);第274页至第276页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104461471A (zh) | 2015-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104461471B (zh) | 分簇vliw处理器上统一的指令调度和寄存器分配方法 | |
CN105389158B (zh) | 数据处理系统、编译器、处理器的方法和机器可读介质 | |
CN108089883B (zh) | 基于推测度量将资源分配给线程 | |
US20170235578A1 (en) | Method and Apparatus for Scheduling of Instructions in a Multi-Strand Out-Of-Order Processor | |
CN110032395B (zh) | 用于提高资源利用率的统一寄存器文件 | |
CN101630274B (zh) | 一种实现对循环任务进行软硬件划分的方法和装置 | |
CN113284038B (zh) | 用于执行计算的方法、计算设备、计算系统和存储介质 | |
US11669366B2 (en) | Reduction of a number of stages of a graph streaming processor | |
CN104679663A (zh) | 寄存器文件高速缓存的软分区 | |
KR20200091790A (ko) | Gpu 연산의 동시 실행을 위한 플랫폼 | |
US20240086359A1 (en) | Dynamic allocation of arithmetic logic units for vectorized operations | |
WO2019153681A1 (zh) | 一种智能指令调度器 | |
Odendahl et al. | Split-cost communication model for improved MPSoC application mapping | |
US20240036921A1 (en) | Cascading of Graph Streaming Processors | |
CN108228242B (zh) | 一种可配置且具弹性的指令调度器 | |
WO2017031976A1 (en) | Processor and method of handling an instruction data therein | |
CN1244050C (zh) | 数据处理设备、操作数据处理设备的方法及将程序编译成指令序列的方法 | |
Halimi et al. | FoREST-mn: Runtime DVFS beyond communication slack | |
Ansari et al. | Power-aware scheduling of fixed priority tasks in soft real-time multicore systems | |
US11593184B2 (en) | Accelerated operation of a graph streaming processor | |
CN104484160B (zh) | 一种优化的分簇vliw处理器上的指令调度和寄存器分配方法 | |
CN107688471B (zh) | 一种动态调整数据流架构的资源带宽的计算系统及其方法 | |
CN107832255B (zh) | 一种运行时动态请求可重构核的优化方法 | |
CN107301085B (zh) | 一种基于队列的云平台任务分配方法 | |
Moonen et al. | Cache aware mapping of streaming applications on a multiprocessor system-on-chip |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180615 Termination date: 20201219 |
|
CF01 | Termination of patent right due to non-payment of annual fee |