CN109725904A - 一种低功耗程序指令编译方法及系统 - Google Patents
一种低功耗程序指令编译方法及系统 Download PDFInfo
- Publication number
- CN109725904A CN109725904A CN201711051040.9A CN201711051040A CN109725904A CN 109725904 A CN109725904 A CN 109725904A CN 201711051040 A CN201711051040 A CN 201711051040A CN 109725904 A CN109725904 A CN 109725904A
- Authority
- CN
- China
- Prior art keywords
- instruction sequence
- program instruction
- segment
- power consumption
- control routine
- 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 89
- 238000005265 energy consumption Methods 0.000 claims description 27
- 239000012634 fragment Substances 0.000 claims description 14
- 235000013399 edible fruits Nutrition 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 7
- 230000006870 function Effects 0.000 description 14
- 238000005457 optimization Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 235000013372 meat Nutrition 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000002922 simulated annealing Methods 0.000 description 2
- 238000004590 computer program 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
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明提出一种程序指令编译方法,包括:获取程序指令序列;将所述程序指令序列划分为多个程序指令序列片段;分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码;分别根据每个控制代码编译生成写控制寄存器指令,得到所述每个程序指令序列片段对应的写控制寄存器指令序列;将所述每个程序指令序列片段,以及所述每个程序指令序列片段对应的写控制寄存器指令序列进行组合得到新的程序指令序列。上述程序指令编译方法编译的指令序列,适用于利用动态可重构的低功耗的指令译码器进行译码。对上述编译处理后的程序指令序列进行译码时,可以使重构的子译码器的译码功能更加符合实际需求,能够降低译码器功耗。
Description
技术领域
本发明涉及计算机程序编译技术领域,尤其涉及一种低功耗程序指令编译方法及系统。
背景技术
处理器是片上系统的重要组成部分,处理器执行每一指令任务需要经过多个阶段,即取指、译码、执行、写存储器、写寄存器等阶段,无论是非流水线式还是流水线式的指令处理方式,其中的指令译码器电路在处理器处理每一指令时均处于上电工作状态,在现有技术下为了降低指令译码器的功耗,多采用指令耦合分组技术将指令分组以实现分级分段对指令进行译码,其核心是基于指令的执行频度的差异将指令译码器分解为若干耦合的子译码器。
基于指令的执行频度的差异将指令译码器分解为若干耦合的子译码器是针对处理器运行的常见软件程序中各指令出现频度不同而进行的技术改进。该译码器在处理器中是固化的(hard-code)电路,是对整个程序起作用,基于统计信息降低译码部分的能耗,其对具体软件程序或其中的代码片断的译码能耗不一定是最优的。因此,有待于研究更加灵活的动态可重构的低功耗的指令译码器,通过动态重构使得译码器对指令序列片段进行译码的能耗更低。
现有的程序编译技术都是针对固化了译码器电路的处理器进行程序编译。对于内置动态可重构的低功耗的指令译码器的处理器,尚没有针对该处理器的程序指令编译方法能够使得上述动态可重构的低功耗的指令译码器发挥其动态重构功能,从而降低译码器程序指令片段的译码能耗。
发明内容
基于上述现有技术的缺陷和不足,本发明提出一种低功耗程序指令编译方法及系统,经过该方法编译的指令序列,适用于利用动态可重构的低功耗的指令译码器进行译码。
为了达到上述目的,本发明提出如下技术方案:
一种低功耗程序指令编译方法,包括:
获取程序指令序列;
将所述程序指令序列划分为多个程序指令序列片段;
分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码;其中,所述控制代码用于重构动态可重构的指令译码器对程序指令序列片段进行译码处理;
分别根据每个控制代码编译生成写控制寄存器指令,得到所述每个程序指令序列片段对应的写控制寄存器指令序列;
将所述每个程序指令序列片段,以及所述每个程序指令序列片段对应的写控制寄存器指令序列进行组合得到新的程序指令序列;其中,在所述新的程序指令序列中,程序指令序列片段置于该程序指令序列片段对应的写控制寄存器指令序列之后。
优选地,在获取所述程序指令序列之后,在将所述程序指令序列划分为多个程序指令序列片段之前,该方法还包括:
对所述程序指令序列进行指令顺序调整处理。
优选地,在分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码之后,该方法还包括:
优化对所述程序指令序列的划分结果,使划分得到的多个程序指令序列片段的译码能耗之和最低。
优选地,所述优化对所述程序指令序列的划分结果,使划分得到的多个程序指令序列片段的译码能耗之和最低,包括:
确定将所述程序指令序列划分为多个程序指令序列片段的每一种划分方法;
分别计算得到采用每一种划分方法将所述程序指令序列划分为多个程序指令序列片段后,得到的每个程序指令序列片段的译码能耗值和重构能耗值;
根据所述每个程序指令序列片段的译码能耗值和重构能耗值,分别计算得到采用每一种划分方法将所述程序指令序列划分为多个程序指令序列片段后得到的多个程序指令序列片段的能耗值之和;
选择能耗值之和最小的多个程序指令序列片段,作为最终确定的将所述程序指令序列划分为多个程序指令序列片段得到的多个程序指令序列片段。
优选地,所述分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码,包括:
分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的多组控制代码;
分别确定根据程序指令序列片段对应的每一组控制代码重构预先设置的多个子译码器,使重构的子译码器对该程序指令序列片段进行译码处理的能耗值;
为每个程序指令序列片段选择任一降低的能耗值对应的控制代码或最低的能耗值对应的控制代码,作为程序指令序列片段对应的控制代码。
优选地,所述控制代码还用于:对所述动态可重构的指令译码器中未起指令译码作用的指令译码器进行电源管理,降低所述未起指令译码作用的指令译码器的静态功耗。
一种低功耗程序指令编译系统,包括:
程序指令序列获取模块、程序指令序列划分模块、控制代码生成模块、写控制寄存器指令序列生成模块、组合处理模块;
其中,所述程序指令序列获取模块用于获取程序指令序列;
所述程序指令序列划分模块,用于将所述程序指令序列划分为多个程序指令序列片段;
所述控制代码生成模块,用于分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码;其中,所述控制代码用于重构动态可重构的指令译码器对程序指令序列片段进行译码处理;
所述写控制寄存器指令序列生成模块,用于分别根据每个控制代码编译生成写控制寄存器指令,得到所述每个程序指令序列片段对应的写控制寄存器指令序列;
所述组合处理模块,用于将所述每个程序指令序列片段,以及所述每个程序指令序列片段对应的写控制寄存器指令序列进行组合得到新的程序指令序列;其中,在所述新的程序指令序列中,程序指令序列片段置于该程序指令序列片段对应的写控制寄存器指令序列之后。
优选地,所述程序指令序列划分模块还用于:
对所述程序指令序列进行指令顺序调整处理。
优选地,所述程序指令序列划分模块还用于:
优化对所述程序指令序列的划分结果,使划分得到的多个程序指令序列片段的译码能耗之和最低。
优选地,所述程序指令序列划分模块优化对所述程序指令序列的划分结果,使划分得到的多个程序指令序列片段的译码能耗之和最低时,具体用于:
确定将所述程序指令序列划分为多个程序指令序列片段的每一种划分方法;
分别计算得到采用每一种划分方法将所述程序指令序列划分为多个程序指令序列片段后,得到的每个程序指令序列片段的译码能耗值和重构能耗值;
根据所述每个程序指令序列片段的译码能耗值和重构能耗值,分别计算得到采用每一种划分方法将所述程序指令序列划分为多个程序指令序列片段后得到的多个程序指令序列片段的能耗值之和;
选择能耗值之和最小的多个程序指令序列片段,作为最终确定的将所述程序指令序列划分为多个程序指令序列片段得到的多个程序指令序列片段。
优选地,所述控制代码生成模块分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码时,具体用于:
分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的多组控制代码;
分别确定根据程序指令序列片段对应的每一组控制代码重构预先设置的多个子译码器,使重构的子译码器对该程序指令序列片段进行译码处理的能耗值;
为每个程序指令序列片段选择任一降低的能耗值对应的控制代码或最低的能耗值对应的控制代码,作为程序指令序列片段对应的控制代码。
优选地,所述控制代码生成模块生成的所述控制代码还用于:对所述动态可重构的指令译码器中未起指令译码作用的指令译码器进行电源管理,降低所述未起指令译码作用的指令译码器的静态功耗。
本发明提出的低功耗程序指令编译方法,针对接收的程序指令序列,将程序指令序列划分为多个程序指令序列片段,然后分别编译每个程序指令序列片段,得到每个程序指令序列片段对应的控制代码;根据控制代码编译生成对应的写控制寄存器指令,得到每个程序指令序列片段对应的写控制寄存器指令序列;组合每个程序指令序列片段与其对应的写控制寄存器指令序列得到新的程序指令,并且写控制寄存器指令序列置于对应的程序指令序列片段之前。上述程序指令编译方法对程序指令序列进行了划分,并编译得到每个程序指令序列片段对应的控制代码,该代码用于重构动态可重构的指令译码器对程序指令序列片段进行译码处理;然后,将控制代码编译生成对应每个程序指令序列片段的控制寄存器指令序列,并组合到程序指令序列中。由于组合得到的程序指令序列包含每个程序指令序列片段对应的控制寄存器指令序列,可以控制可重构的指令译码器对程序指令序列片段进行重构译码。因此,上述程序指令编译方法编译的指令序列,适用于利用动态可重构的低功耗的指令译码器进行译码。对上述编译处理后的程序指令序列进行译码时,可以使重构的子译码器的译码功能更加符合实际需求,避免了译码功能冗余,能够降低译码器功耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明实施例提供的一种低功耗程序指令编译方法的流程示意图;
图2是本发明实施例提供的另一种低功耗程序指令编译方法的流程示意图;
图3是本发明实施例提供的又一种低功耗程序指令编译方法的流程示意图;
图4是本发明实施例提供的一种低功耗程序指令编译系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种指令译码方法,参见图1所示,该方法包括:
S101、获取程序指令序列;
具体的,上述程序指令序列,是指未考虑处理器内译码器可通过动态重构降低功耗时编译器对高级语言程序编译生成的汇编程序或程序的机器代码。
S102、将所述程序指令序列划分为多个程序指令序列片段;
具体的,在获取到程序指令序列后,本发明实施例首先会对程序指令序列进行划分,将程序指令序列划分为多个程序指令序列片段。
在划分过程中,以不改变数据相关的指令序列之间的执行顺序为原则,以降低译码功耗为目标,同时仅以牺牲最小的性能为代价,进行程序指令序列的片段划分,得到多个程序指令序列片段。具体可采用预先设定的划分规则进行划分,也可以采用优化的指令划分方法进行划分。
S103、分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码;
具体的,上述控制代码,是控制译码模块具体译码功能实现的控制逻辑值。在本发明实施例中,程序指令序列片段对应的控制代码,用于控制预先设置的设定数量的可重构的指令译码器的重构,使重构的指令译码器对程序指令序列片段进行译码处理。上述指令译码器重构后的译码能力与译码程序指令序列片段所需的译码能力相当,因此可以避免译码能力冗余。
程序指令序列片段对应的控制代码可以在程序指令序列片段的编译阶段生成,根据各程序指令序列片段所需的译码功能编译生成所对应的重构指令译码器的控制代码。在程序指令序列片段的编译阶段,可以生成多组重构指令译码器的控制代码,即生成多组可选的控制代码,此时,可以根据各组控制代码重构指令译码器的功耗,来从中选择功耗较低或者最低的控制代码。上述各组控制代码重构指令译码器的功耗,是指采用每一组控制代码重构预选设置的设定数量的子译码器,并利用重构的译码器对程序指令序列片段进行译码的功耗。
S104、分别根据每个控制代码编译生成写控制寄存器指令,得到所述每个程序指令序列片段对应的写控制寄存器指令序列;
具体的,上述控制代码只有写入控制寄存器才能控制译码器重构,使得后续使用重构的译码器对程序指令片断的译码能耗最低。而写控制寄存器指令序列正是实现将存储器中代码值写入控制寄存器的有效途径,因此低功耗编译方法根据控制代码编译生成对应的写控制寄存器指令,每个控制代码编译得到的写控制寄存器指令构成写控制寄存器指令序列,每个程序指令序列片段对应一个写控制寄存器指令序列。
上述可重构译码器,是指本发明实施例技术方案为了使译码器的译码功能与程序指令序列所需译码功能更匹配而设置的,译码能力更小的,可以实时进行重构的设定数量的译码器。对于某一程序指令序列的译码,可以根据该程序指令序列所需的译码功能,灵活重构上述设定数量的可重构译码器中的部分或全部可重构译码器,使其完成对该程序指令序列的译码,而对于未重构的部分,可以利用功率控制技术控制其休眠,以达到降低译码器功耗的目的。
S105、将所述每个程序指令序列片段,以及所述每个程序指令序列片段对应的写控制寄存器指令序列进行组合得到新的程序指令序列。
具体的,上述写控制寄存器指令序列的目的是为了通过控制寄存器动态重构译码器,从而使上述对应的程序指令序列片段的译码能耗最低,因此在组合得到新的程序指令序列时,将上述写控制寄存器指令序列置于该写控制寄存器指令序列对应的程序指令序列片段之前。上述对应的程序指令序列片段之间原有的先后顺序关系在他们存在数据依赖关系时保持不变,在他们不存在数据依赖关系时可保持不变也可改变。新的程序指令序列不仅完成原程序指令序列的功能,而且由于其中包含用于控制可重构译码器重构的写控制寄存器指令序列,因此其译码时的能耗更低。
本发明实施例提出的低功耗程序指令编译方法,针对接收的每一条程序指令序列,将程序指令序列划分为多个程序指令序列片段,然后分别编译每个程序指令序列片段,得到每个程序指令序列片段对应的控制代码;然后,根据控制代码编译生成对应的写控制寄存器指令,得到所述每个程序指令序列片段对应的写控制寄存器指令序列;最后组合每个程序指令序列片段与其对应的写控制寄存器指令序列生成新的程序指令。
新的程序指令序列中的写控制寄存器指令序列通过将控制代码写入控制寄存器重构可重构的译码器,使重构的译码器对程序指令序列片段进行译码处理。上述程序指令编译方法编译的指令序列,适用于利用动态可重构的低功耗的指令译码器进行译码。对上述编译处理后的程序指令序列进行译码时,可以使重构的子译码器的译码功能更加符合实际需求,避免了译码功能冗余,能够降低译码器功耗。
可选的,在本发明的另一个实施例中,参见图2所示,在执行步骤S201、获取所述程序指令序列之后,在执行步骤S203、将所述程序指令序列划分为多个程序指令序列片段之前,该方法还包括:
S202、对所述程序指令序列进行指令顺序调整处理。
具体的,在本发明实施例中,当获取程序指令序列之后,在对该程序指令序列进行划分之前,先对该程序指令序列中部分指令的顺序进行调整,从而使后续对程序指令序列的片段划分更有利于实现指令译码低功耗。
本发明实施例按照如下原则调整程序指令序列中部分指令的顺序:
(1)有直接和间接数据依赖关系的指令之间,其先后顺序关系不变;
(2)无任何直接和间接数据依赖关系的指令之间,其先后顺序关系可以改变;
(3)在遵循(1)和(2)前提下,优先将同类型指令聚集在同一指令序列片断内;
(4)顺序关系的调整是为了降低指令序列的译码能耗。
程序指令序列中部分指令的顺序调整可以采用启发式算法,也可以模拟退火、遗传算法、蚁群算法、粒子群算法等随机方法,更可以是两方法或多方法的结合。
本实施例中的步骤S201、S203~S206分别对应图1所示的方法实施例中的步骤S101、S102~S105,其具体内容请参见图1所示的方法实施例的内容,此处不再赘述。
可选的,在本发明的另一个实施例中,在分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码之后,该方法还包括:
优化对所述程序指令序列的划分结果,使划分得到的多个程序指令序列片段的译码能耗之和最低。
具体的,本发明实施例在分别编译每个程序指令序列片段,得到每个程序指令序列片段对应的控制代码后,根据每个控制代码的重构译码器功耗,来优化对程序指令序列的划分,使得优化后的对程序指令序列的划分结果的译码功耗最低。
其中,所述优化对所述程序指令序列的划分结果,使划分得到的多个程序指令序列片段的译码能耗之和最低,包括:
确定将所述程序指令序列划分为多个程序指令序列片段的每一种划分方法;
分别计算得到采用每一种划分方法将所述程序指令序列划分为多个程序指令序列片段后,得到的每个程序指令序列片段的译码能耗值和重构能耗值;
根据所述每个程序指令序列片段的译码能耗值和重构能耗值,分别计算得到采用每一种划分方法将所述程序指令序列划分为多个程序指令序列片段后得到的多个程序指令序列片段的能耗值之和;
选择能耗值之和最小的多个程序指令序列片段,作为最终确定的将所述程序指令序列划分为多个程序指令序列片段得到的多个程序指令序列片段。
具体的,本发明实施例优化对程序指令序列的划分的思想是,对比每一种划分结果,从中选择功耗最低的划分方式,作为最终优化的对程序指令序列的划分结果。
上述译码能耗值,是指对划分得到的每一个程序指令序列片段进行译码时的总能耗值;
上述重构能耗值,是指对程序指令序列进行划分得到各个程序指令序列片段后,编译每个程序指令序列片段得到每个程序指令序列片段对应的控制代码,由该控制代码重构设定数量的可重构的子译码器的能耗。
采用任意一种划分方法,都可以将程序指令序列划分为多个程序指令序列片段,在本发明实施例中,针对每一种划分方法得到的多个程序指令序列片段,计算每个程序指令序列片段的译码能耗值和重构能耗值,以及将所有程序指令序列片段的译码能耗值和重构能耗值相加得到这一种划分方法的能耗值之和。
参照上述计算划分方法的能耗值之和的方法,分别计算每一种划分方法的能耗值之和,然后从中选择能耗值之和最小的划分方法作为最终选择的划分方法,采用该方法对程序指令序列进行划分,得到的多个程序指令序列片段就作为最终得到的多个程序指令序列片段。
假设将程序指令序列进行划分得到的指令序列片段为Instr_slice1,Instr_slice2,…,Instr_sliceN;
各指令序列片断的执行时间分别为t1,t2,…,tN;
各指令序列片断所对应的重构指令译码器的平均功耗为P1,P2,…,PN;
各指令序列片断所对应的重构指令译码器的能耗为E1,E2,…,EN;
其中,E1=P1*t1,E2=P2*t2,…,EN=PN*tN
则执行所有指令片断的译码所需能耗为
优化对程序指令序列进行的划分可以转化为对以下数学优化问题的求解:
进一步考虑到重构指令译码器是通过执行增加了的重构译码器的指令来实现的,执行每一部分增加的指令需要额外增加功耗,设增加的功耗平均值为Pextrai,对应的执行时间为textrai,因此动态重构译码器下,译码所需能耗为:
优化对程序指令序列进行的划分转化为对以下数学优化问题的求解:
优化过程的控制和过程中新划分结果的产生可在模拟退火算法、遗传算法、蚁群算法、粒子群算法等框架下进行。
可选的,在本发明的另一个实施例中,参见图3所示,所述分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码,包括:
S303、分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的多组控制代码;
具体的,本发明实施例在程序编译阶段生成每个程序指令序列片段对应的控制代码。在编译每个程序指令序列片段时,可以得到多组可选的控制代码。
S304、分别确定根据程序指令序列片段对应的每一组控制代码重构预先设置的多个子译码器使重构的子译码器对该程序指令序列片段进行译码处理的能耗值;
具体的,针对每个程序指令序列片段对应的多个控制代码,本发明实施例分别根据每组控制代码重构子译码器,并计算利用重构的子译码器对程序指令序列片段进行译码的能耗值。
例如,假设某一程序指令序列片段对应控制代码A、B、C,则分别根据控制代码A、B、C重构子译码器,并利用重构的子译码器对该程序指令序列片段进行译码处理,可以分别确定利用控制代码A、B、C重构子译码器以及利用重构的子译码器译码程序指令序列片段的能耗值。
S305、为每个程序指令序列片段选择任一降低的能耗值对应的控制代码或最低的能耗值对应的控制代码,作为程序指令序列片段对应的控制代码。
具体的,在分别确定每个程序指令序列片段对应的每个控制代码的能耗值后,本发明实施例从中选择能耗值有所降低的控制代码,作为程序指令序列片段对应的控制代码。
例如,对于某一程序指令序列片段来说,假设分别确定了利用其对应的控制代码A、B、C重构子译码器以及利用重构的子译码器译码程序指令序列片段的能耗值,并且通过比较确定了,利用控制代码B和C重构子译码器,并利用重构的子译码器译码该程序指令序列片段的能耗值相对于利用现有的译码方法对该程序指令序列片段进行译码的能耗有所降低,则将控制代码B和C中的任意一个控制代码作为最终选择的,该程序指令序列片段对应的控制代码。
需要说明的是,上述选择能耗值有所降低的控制代码,作为程序指令序列片段对应的控制代码,即可以实现降低程序指令序列的译码能耗。优选地,从上述能耗值有所降低的控制代码中选择能耗值最低的控制代码,可以最大限度地降低程序指令序列的译码能耗。
本实施例中的步骤S301~S302、S306~S307分别对应图1所示的方法实施例中的步骤S101~S102、S104~S105,其具体内容请参见图1所示的方法实施例的内容,此处不再赘述。
可选的,在本发明的另一个实施例中,上述控制代码还用于:对所述动态可重构的指令译码器中未起指令译码作用的指令译码器进行电源管理,降低所述未起指令译码作用的指令译码器的静态功耗。
具体的,当控制代码控制设定数量的可重构译码器中的部分译码器进行重构,并对程序指令序列片段进行译码处理时,对于未被重构的译码器,本发明实施例对其进行电源管理,使其进入休眠状态或降低其工作性能,从而降低这些没有起指令译码作用的译码器的静态功耗。
本发明实施例还公开了一种低功耗程序指令编译系统,参见图4所示,该系统包括:
程序指令序列获取模块101、程序指令序列划分模块102、控制代码生成模块103、写控制寄存器指令序列生成模块104、组合处理模块105;
其中,所述程序指令序列获取模块101用于获取程序指令序列;
所述程序指令划分模块102,用于将所述程序指令序列获取模块101获取的程序指令序列划分为多个程序指令序列片段;
所述控制代码生成模块103,用于分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码;其中,所述控制代码用于重构动态可重构的指令译码器对程序指令序列片段进行译码处理;
所述写控制寄存器指令序列生成模块104,用于分别根据每个控制代码编译生成写控制寄存器指令,得到所述每个程序指令序列片段对应的写控制寄存器指令序列;
所述组合处理模块105,用于将所述每个程序指令序列片段,以及所述每个程序指令序列片段对应的写控制寄存器指令序列进行组合得到新的程序指令序列;其中,在所述新的程序指令序列中,程序指令序列片段置于该程序指令序列片段对应的写控制寄存器指令序列之后。
具体的,上述低功耗程序指令编译系统的各部分的具体工作内容,请参见上述方法实施例的内容,此处不再赘述。
由于本发明实施例所提出的指令译码系统,是将程序指令序列划分成程序指令序列片段,并编译得到每个程序指令序列片段对应的控制代码,该代码用于重构动态可重构的指令译码器对程序指令序列片段进行译码处理;然后,将控制代码编译生成对应每个程序指令序列片段的控制寄存器指令序列,并组合到程序指令序列中。由于组合得到的程序指令序列包含每个程序指令序列片段对应的控制寄存器指令序列,可以控制可重构的指令译码器对程序指令序列片段进行重构译码。因此,上述程序指令编译方法编译的指令序列,适用于利用动态可重构的低功耗的指令译码器进行译码。对上述编译处理后的程序指令序列进行译码时,可以使重构的子译码器的译码功能更加符合实际需求,避免了译码功能冗余,能够降低译码器功耗。
可选的,在本发明的另一个实施例中,所述程序指令划分模块102还用于:
对所述程序指令序列进行指令顺序调整处理。
具体的,本实施例中的程序指令划分模块102的具体工作内容,请参见上述方法实施例的内容,此处不再赘述。
可选的,在本发明的另一个实施例中,所述程序指令划分模块102还用于:
优化对所述程序指令序列的划分结果,使划分得到的多个程序指令序列片段的译码能耗之和最低。
具体的,本实施例中的程序指令划分模块102的具体工作内容,请参见上述方法实施例的内容,此处不再赘述。
可选的,在本发明的另一个实施例中,所述控程序指令划分模块102优化对所述程序指令序列的划分结果,使划分得到的多个程序指令序列片段的能耗之和最低时,具体用于:
确定将所述程序指令序列划分为多个程序指令序列片段的每一种划分方法;
分别计算得到采用每一种划分方法将所述程序指令序列划分为多个程序指令序列片段后,得到的每个程序指令序列片段的译码能耗值和重构能耗值;
根据所述每个程序指令序列片段的译码能耗值和重构能耗值,分别计算得到采用每一种划分方法将所述程序指令序列划分为多个程序指令序列片段后得到的多个程序指令序列片段的能耗值之和;
选择能耗值之和最小的多个程序指令序列片段,作为最终确定的将所述程序指令序列划分为多个程序指令序列片段得到的多个程序指令序列片段。
具体的,本实施例中的程序指令划分模块102的具体工作内容,请参见上述方法实施例的内容,此处不再赘述。
可选的,在本发明的另一个实施例中,所述控制代码生成模块103分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码时,具体用于:
分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的多组控制代码;
分别确定根据程序指令序列片段对应的每一组控制代码重构预先设置的多个子译码器使重构的子译码器对该程序指令序列片段进行译码处理的能耗值;
为每个程序指令序列片段选择任一降低的能耗值对应的控制代码或最低的能耗值对应的控制代码,作为程序指令序列片段对应的控制代码。
具体的,本实施例中的控制代码生成模块103的具体工作内容,请参见上述方法实施例的内容,此处不再赘述。
可选的,所述控制代码生成模块103生成的所述控制代码还用于:对所述动态可重构的指令译码器中未起指令译码作用的指令译码器进行电源管理,降低所述未起指令译码作用的指令译码器的静态功耗。
具体的,本实施例中的控制代码生成模块103的具体工作内容,请参见上述方法实施例的内容,此处不再赘述。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种低功耗程序指令编译方法,其特征在于,包括:
获取程序指令序列;
将所述程序指令序列划分为多个程序指令序列片段;
分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码;其中,所述控制代码用于重构动态可重构的指令译码器对程序指令序列片段进行译码处理;
分别根据每个控制代码编译生成写控制寄存器指令,得到所述每个程序指令序列片段对应的写控制寄存器指令序列;
将所述每个程序指令序列片段,以及所述每个程序指令序列片段对应的写控制寄存器指令序列进行组合得到新的程序指令序列;其中,在所述新的程序指令序列中,程序指令序列片段置于该程序指令序列片段对应的写控制寄存器指令序列之后。
2.根据权利要求1所述的方法,其特征在于,在获取所述程序指令序列之后,在将所述程序指令序列划分为多个程序指令序列片段之前,该方法还包括:
对所述程序指令序列进行指令顺序调整处理。
3.根据权利要求1所述的方法,其特征在于,在分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码之后,该方法还包括:
优化对所述程序指令序列的划分结果,使划分得到的多个程序指令序列片段的译码能耗之和最低。
4.根据权利要求3所述的方法,其特征在于,所述优化对所述程序指令序列的划分结果,使划分得到的多个程序指令序列片段的译码能耗之和最低,包括:
确定将所述程序指令序列划分为多个程序指令序列片段的每一种划分方法;
分别计算得到采用每一种划分方法将所述程序指令序列划分为多个程序指令序列片段后,得到的每个程序指令序列片段的译码能耗值和重构能耗值;
根据所述每个程序指令序列片段的译码能耗值和重构能耗值,分别计算得到采用每一种划分方法将所述程序指令序列划分为多个程序指令序列片段后得到的多个程序指令序列片段的能耗值之和;
选择能耗值之和最小的多个程序指令序列片段,作为最终确定的将所述程序指令序列划分为多个程序指令序列片段得到的多个程序指令序列片段。
5.根据权利要求1所述的方法,其特征在于,所述分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码,包括:
分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的多组控制代码;
分别确定根据程序指令序列片段对应的每一组控制代码重构预先设置的多个子译码器使重构的子译码器对该程序指令序列片段进行译码处理的能耗值;
为每个程序指令序列片段选择任一降低的能耗值对应的控制代码或最低的能耗值对应的控制代码,作为程序指令序列片段对应的控制代码。
6.根据权利要求1所述的方法,其特征在于,所述控制代码还用于:对所述动态可重构的指令译码器中未起指令译码作用的指令译码器进行电源管理,降低所述未起指令译码作用的指令译码器的静态功耗。
7.一种低功耗程序指令编译系统,其特征在于,包括:
程序指令序列获取模块、程序指令序列划分模块、控制代码生成模块、写控制寄存器指令序列生成模块、组合处理模块;
其中,所述程序指令序列获取模块用于获取程序指令序列;
所述程序指令序列划分模块,用于将所述程序指令序列划分为多个程序指令序列片段;
所述控制代码生成模块,用于分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码;其中,所述控制代码用于重构动态可重构的指令译码器对程序指令序列片段进行译码处理;
所述写控制寄存器指令序列生成模块,用于分别根据每个控制代码编译生成写控制寄存器指令,得到所述每个程序指令序列片段对应的写控制寄存器指令序列;
所述组合处理模块,用于将所述每个程序指令序列片段,以及所述每个程序指令序列片段对应的写控制寄存器指令序列进行组合得到新的程序指令序列;其中,在所述新的程序指令序列中,程序指令序列片段置于该程序指令序列片段对应的写控制寄存器指令序列之后。
8.根据权利要求7所述的系统,其特征在于,所述程序指令序列划分模块还用于:
对所述程序指令序列进行指令顺序调整处理。
9.根据权利要求7所述的系统,其特征在于,所述程序指令序列划分模块还用于:
优化对所述程序指令序列的划分结果,使划分得到的多个程序指令序列片段的译码能耗之和最低。
10.根据权利要求9所述的系统,其特征在于,所述程序指令序列划分模块优化对所述程序指令序列的划分结果,使划分得到的多个程序指令序列片段的译码能耗之和最低时,具体用于:
确定将所述程序指令序列划分为多个程序指令序列片段的每一种划分方法;
分别计算得到采用每一种划分方法将所述程序指令序列划分为多个程序指令序列片段后,得到的每个程序指令序列片段的译码能耗值和重构能耗值;
根据所述每个程序指令序列片段的译码能耗值和重构能耗值,分别计算得到采用每一种划分方法将所述程序指令序列划分为多个程序指令序列片段后得到的多个程序指令序列片段的能耗值之和;
选择能耗值之和最小的多个程序指令序列片段,作为最终确定的将所述程序指令序列划分为多个程序指令序列片段得到的多个程序指令序列片段。
11.根据权利要求7所述的系统,其特征在于,所述控制代码生成模块分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的控制代码时,具体用于:
分别编译每个程序指令序列片段,得到所述每个程序指令序列片段对应的多组控制代码;
分别确定根据程序指令序列片段对应的每一组控制代码重构预先设置的多个子译码器使重构的子译码器对该程序指令序列片段进行译码处理的能耗值;
为每个程序指令序列片段选择任一降低的能耗值对应的控制代码或最低的能耗值对应的控制代码,作为程序指令序列片段对应的控制代码。
12.根据权利要求7所述的系统,其特征在于,所述控制代码生成模块生成的所述控制代码还用于:对所述动态可重构的指令译码器中未起指令译码作用的指令译码器进行电源管理,降低所述未起指令译码作用的指令译码器的静态功耗。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711051040.9A CN109725904B (zh) | 2017-10-31 | 2017-10-31 | 一种低功耗程序指令编译方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711051040.9A CN109725904B (zh) | 2017-10-31 | 2017-10-31 | 一种低功耗程序指令编译方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109725904A true CN109725904A (zh) | 2019-05-07 |
CN109725904B CN109725904B (zh) | 2021-10-22 |
Family
ID=66294422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711051040.9A Active CN109725904B (zh) | 2017-10-31 | 2017-10-31 | 一种低功耗程序指令编译方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109725904B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5790874A (en) * | 1994-09-30 | 1998-08-04 | Kabushiki Kaisha Toshiba | Information processing apparatus for reducing power consumption by minimizing hamming distance between consecutive instruction |
CN1521623A (zh) * | 2003-01-28 | 2004-08-18 | 松下电器产业株式会社 | 编译设备和编译方法 |
CN1794175A (zh) * | 2006-01-06 | 2006-06-28 | 浙江大学 | 编译器和操作系统内核协同的节能方法 |
US20100122105A1 (en) * | 2005-04-28 | 2010-05-13 | The University Court Of The University Of Edinburgh | Reconfigurable instruction cell array |
CN102171650A (zh) * | 2008-11-24 | 2011-08-31 | 英特尔公司 | 用于将顺序程序分解为多个线程、执行所述线程和重构该顺序执行的系统、方法和装置 |
CN102662720A (zh) * | 2012-03-12 | 2012-09-12 | 天津国芯科技有限公司 | 一种多发射嵌入式处理器编译器的优化方法 |
CN103178831A (zh) * | 2013-04-03 | 2013-06-26 | 清华大学 | 降低可重构阵列结构功耗的方法和低功耗可重构阵列结构 |
CN103902252A (zh) * | 2014-03-28 | 2014-07-02 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种用于流水线指令相关性的分析方法 |
CN104615474A (zh) * | 2014-09-02 | 2015-05-13 | 清华大学 | 用于粗粒度可重构处理器的编译优化方法 |
CN106909839A (zh) * | 2015-12-22 | 2017-06-30 | 北京奇虎科技有限公司 | 一种提取样本代码特征的方法及装置 |
-
2017
- 2017-10-31 CN CN201711051040.9A patent/CN109725904B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5790874A (en) * | 1994-09-30 | 1998-08-04 | Kabushiki Kaisha Toshiba | Information processing apparatus for reducing power consumption by minimizing hamming distance between consecutive instruction |
CN1521623A (zh) * | 2003-01-28 | 2004-08-18 | 松下电器产业株式会社 | 编译设备和编译方法 |
US20100122105A1 (en) * | 2005-04-28 | 2010-05-13 | The University Court Of The University Of Edinburgh | Reconfigurable instruction cell array |
CN1794175A (zh) * | 2006-01-06 | 2006-06-28 | 浙江大学 | 编译器和操作系统内核协同的节能方法 |
CN102171650A (zh) * | 2008-11-24 | 2011-08-31 | 英特尔公司 | 用于将顺序程序分解为多个线程、执行所述线程和重构该顺序执行的系统、方法和装置 |
CN102662720A (zh) * | 2012-03-12 | 2012-09-12 | 天津国芯科技有限公司 | 一种多发射嵌入式处理器编译器的优化方法 |
CN103178831A (zh) * | 2013-04-03 | 2013-06-26 | 清华大学 | 降低可重构阵列结构功耗的方法和低功耗可重构阵列结构 |
CN103902252A (zh) * | 2014-03-28 | 2014-07-02 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种用于流水线指令相关性的分析方法 |
CN104615474A (zh) * | 2014-09-02 | 2015-05-13 | 清华大学 | 用于粗粒度可重构处理器的编译优化方法 |
CN106909839A (zh) * | 2015-12-22 | 2017-06-30 | 北京奇虎科技有限公司 | 一种提取样本代码特征的方法及装置 |
Non-Patent Citations (1)
Title |
---|
张惠臻等: "可重构指令集处理器的代码优化生成算法研究", 《计算机研究与发展》 * |
Also Published As
Publication number | Publication date |
---|---|
CN109725904B (zh) | 2021-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fuller et al. | Computing performance: Game over or next level? | |
Wang et al. | Kernel fusion: An effective method for better power efficiency on multithreaded GPU | |
US9606797B2 (en) | Compressing execution cycles for divergent execution in a single instruction multiple data (SIMD) processor | |
US9830156B2 (en) | Temporal SIMT execution optimization through elimination of redundant operations | |
US10078357B2 (en) | Power gating functional units of a processor | |
CN110427337B (zh) | 基于现场可编程门阵列的处理器内核及其运行方法 | |
CN105487838A (zh) | 一种动态可重构处理器的任务级并行调度方法与系统 | |
Gong et al. | Multi2Sim Kepler: A detailed architectural GPU simulator | |
US8615770B1 (en) | System and method for dynamically spawning thread blocks within multi-threaded processing systems | |
CN103559148A (zh) | 面向多任务嵌入式系统的片上便笺式存储器管理方法 | |
US20220100512A1 (en) | Deterministic replay of a multi-threaded trace on a multi-threaded processor | |
CN115658323A (zh) | 基于软硬件协同的fpga潮流计算加速架构和方法 | |
CN111666071A (zh) | 一种基于目标众核的对抗网络移植与优化的方法及系统 | |
Lorenz et al. | Compiler based exploration of DSP energy savings by SIMD operations | |
CN108228242B (zh) | 一种可配置且具弹性的指令调度器 | |
Anido et al. | Improving the operation autonomy of SIMD processing elements by using guarded instructions and pseudo branches | |
CN109725904A (zh) | 一种低功耗程序指令编译方法及系统 | |
US8959497B1 (en) | System and method for dynamically spawning thread blocks within multi-threaded processing systems | |
Yun et al. | GraNDe: Efficient near-data processing architecture for graph neural networks | |
WO2006136943A3 (en) | High-level language processor apparatus and method | |
CN106709861B (zh) | 一种染色器驱动静态重构方法 | |
WO2019080091A1 (zh) | 代码处理方法和设备 | |
US20110167417A1 (en) | Programming system in multi-core, and method and program of the same | |
KR20090055765A (ko) | 멀티미디어 데이터 처리를 위한 다중 simd 프로세서 및이를 이용한 연산 방법 | |
Dietz et al. | MIMD Interpretation on a GPU |
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 |