CN113535231A - 减少指令跳转的方法及装置 - Google Patents
减少指令跳转的方法及装置 Download PDFInfo
- Publication number
- CN113535231A CN113535231A CN202010304291.9A CN202010304291A CN113535231A CN 113535231 A CN113535231 A CN 113535231A CN 202010304291 A CN202010304291 A CN 202010304291A CN 113535231 A CN113535231 A CN 113535231A
- Authority
- CN
- China
- Prior art keywords
- instruction
- block
- storage unit
- instruction block
- sequence
- 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 71
- 238000005457 optimization Methods 0.000 claims abstract description 114
- 238000012546 transfer Methods 0.000 claims abstract description 13
- 238000004590 computer program Methods 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 18
- 230000005540 biological transmission Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 238000013135 deep learning Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000003058 natural language processing Methods 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30069—Instruction skipping instructions, e.g. SKIP
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请实施例提供了一种减少指令跳转的方法及装置,该方法包括:从存储器中获取指令序列,从所述指令序列中获取第一优化循环,在所述第一优化循环中的指令分布于第i个指令块和第i+1个指令块的情况下,将所述第一优化循环转移至所述第i+1个指令块中。该方法可以将第一优化循环中指令的转移到一个指令块中,使得第一优化循环可以一次性加载至指令存储单元,从而可以减少自然循环引起的跳转情况,降低程序的执行时间,提升系统运行效率。
Description
技术领域
本申请涉及处理器技术领域,尤其涉及一种减少指令跳转的方法及装置。
背景技术
随着科学技术的发展,终端设备支持的功能越来越强大,终端设备中的处理器处理的程序也越来越复杂。处理器通常可以在一个时钟周期内同时发射和执行多条指令,来获得更高的性能。但在处理器的运行过程中,可能会存在大量的自然循环,若自然循环中的一些指令不在当前执行的指令块中时,处理器需要进行指令块的传输来将目标指令块加载至指令存储单元中以执行目标指令,使得处理器的时间代价很高。因此,如何能够减少自然循环引起的跳转情况,降低程序的执行时间,从而提升系统运行效率,是现今急需解决的问题。
申请内容
本申请实施例提供了一种减少指令跳转的方法及装置,能够减少自然循环引起的跳转情况,降低程序的执行时间,从而提升系统运行效率。
第一方面,本申请实施例提供一种减少指令跳转的方法,所述方法包括:
从存储器中获取指令序列,所述指令序列包括n个指令块,所述指令块包括至少一个指令,所述n为大于1的正整数;
从所述指令序列中获取第一优化循环,在所述第一优化循环中的循环分布于第i个指令块和第i+1个指令块的情况下,将所述第一优化循环转移至所述第i+1个指令块中,所述第一优化循环为占用存储空间小于或等于所述第i+1个指令块占用存储空间的自然循环,所述i为小于n的正整数。
在一个可能的实施例中,所述方法还包括:
在所述第一优化循环中的指令分布于第i个指令块和第i+1个指令块的情况下,在所述第i个指令块的所述第一优化循环的地址上填充空指令。
在一个可能的实施例中,在将所述第一优化循环转移至所述第i+1个指令块中之后,所述方法还包括:
更新所述指令序列以及所述指令序列中指令的PC值和地址;根据更新后的所述指令序列确定所述n的大小。
在一个可能的实施例中,所述方法还包括:
在所述指令序列中标记待优化循环,所述待优化循环为存储于连续存储空间的自然循环;
从所述标记的待优化循环中查找所述第一优化循环。
在一个可能的实施例中,所述方法还包括:
所述n个指令块中的任一指令块占用的存储空间根据所述指令存储单元的存储空间确定,所述指令存储单元包括第一指令存储单元和/或第二指令存储单元。
进一步地,在所述指令存储单元包括第二指令存储单元的情况下,所述方法还包括:
在所述第i个指令块的最后一条指令后面插入传参指令和相关指令,所述传参指令用于将所述第i+1个指令块的地址传送至所述相关指令,所述相关指令用于将所述第i+1个指令块加载至所述第二指令存储单元;
所述n个指令块中的任一指令块占用的存储空间根据所述指令存储单元的存储空间确定,包括:
所述n个指令块中的任一指令块占用的存储空间根据所述第二指令存储单元的存储空间以及所述传参指令和所述相关指令占用的存储空间确定
在一个可能的实施例中,所述第二指令存储单元包括第一存储单元和第二存储单元,所述第一存储单元用于存储所述n个指令块中的一指令块,所述第二存储单元用于存储所述传参指令和所述相关指令;
所述n个指令块中的任一指令块占用的存储空间根据所述指令存储单元的存储空间确定,包括:
所述n个指令块中的任一指令块占用的存储空间根据所述第二指令存储单元中的第一存储单元的存储空间确定。
第二方面,本申请实施例提供一种减少指令跳转的装置,所述装置包括:
获取模块,用于从存储器中获取指令序列,所述指令序列包括n个指令块,所述指令块包括至少一个指令,所述n为大于1的正整数;
所述获取模块,还用于从所述指令序列中获取第一优化循环;
转移模块,用于在所述第一优化循环中的指令分布于第i个指令块和第i+1个指令块的情况下,将所述第一优化循环转移至所述第i+1个指令块中,所述第一优化循环为占用存储空间小于或等于所述第i+1个指令块占用存储空间的自然循环,所述i为小于n的正整数。
在一个可能的实施例中,所述装置还包括:
填充模块,用于在所述第一优化循环中的指令分布于第i个指令块和第i+1个指令块的情况下,在所述第i个指令块的所述第一优化循环的地址上填充空指令。
在一个可能的实施例中,在将所述第一优化循环转移至所述第i+1个指令块中之后,所述装置还包括:
更新模块,用于更新所述指令序列以及所述指令序列中指令的PC值和地址;
确定模块,用于根据更新后的所述指令序列确定所述n的大小。
在一个可能的实施例中,所述装置还包括:
标记模块,用于在所述指令序列中标记待优化循环,所述待优化循环为存储于连续存储空间的自然循环;
查找模块,用于从所述标记的待优化循环中查找所述第一优化循环。
在一个可能的实施例中,所述确定模块,还用于:
所述n个指令块中的任一指令块占用的存储空间根据所述指令存储单元的存储空间确定,所述指令存储单元包括第一指令存储单元和/或第二指令存储单元。
在一个可能的实施例中,在所述指令存储单元包括第二指令存储单元的情况下,所述装置还包括:
插入模块,用于在所述第i个指令块的最后一条指令后面插入传参指令和相关指令,所述传参指令用于将所述第i+1个指令块的地址传送至所述相关指令,所述相关指令用于将所述第i+1个指令块加载至所述第二指令存储单元;
所述确定模块,具体用于所述n个指令块中的任一指令块占用的存储空间根据所述第二指令存储单元的存储空间以及所述传参指令和所述相关指令占用的存储空间确定。
在一个可能的实施例中,所述第二指令存储单元包括第一存储单元和第二存储单元,所述第一存储单元用于存储所述n个指令块中的一指令块,所述第二存储单元用于存储所述传参指令和所述相关指令;
所述确定模块,具体用于所述n个指令块中的任一指令块占用的存储空间根据所述第二指令存储单元中的第一存储单元的存储空间确定。
第三方面,本申请实施例提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如本申请实施例第一方面所描述的部分或全部步骤。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质包括存储用于数据交换的计算机程序,所述计算机程序被处理器执行时实现如本申请实施例第一方面所描述的部分或全部步骤。
第五方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
实施本申请实施例,至少具有如下有益效果:
本申请实施例提供一种减少指令跳转的方法及装置,通过从存储器中获取指令序列,从所述指令序列中获取第一优化循环,在所述第一优化循环中的指令分布于第i个指令块和第i+1个指令块的情况下,将所述第一优化循环转移至所述第i+1个指令块中。该方法可以将第一优化循环中指令的转移到一个指令块中,使得第一优化循环可以一次性加载至指令存储单元,从而可以减少自然循环引起的跳转情况,降低程序的执行时间,提升系统运行效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种计算机装置的结构示意图;
图2是本申请实施例提供的一种减少指令跳转的方法的流程示意图;
图3A是本申请实施例提供的一种标记待优化循环的流程示意图;
图3B是本申请实施例提供的另一种标记待优化循环的流程示意图;
图4是本申请实施例提供的另一种减少指令跳转的流程示意图;
图5A是本申请实施例提供的一种指令存储单元的存储空间示意图;
图5B是本申请实施例提供的另一种指令存储单元的存储空间示意图;
图5C是本申请实施例提供的另一种指令存储单元的存储空间示意图;
图6是本申请实施例提供的一种原始程序的示意图;
图7是本申请实施例提供的一种程序划分后的示意图;
图8是本申请实施例提供的一种程序处理后示意图;
图9A是本申请实施例提供的一种减少指令循环的装置的功能单元组成框图;
图9B是本申请实施例提供的另一种减少指令循环的装置的功能单元组成框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了更好地理解本申请实施例的方案,下面先对本申请实施例可能涉及的相关术语和概念进行介绍。
自然循环:从指令A到指令B过程中,将指令B以及不执行指令B就能到达指令A的指令序列合称为自然循环。定义指令B是该自然循环的循环头,循环头是自然循环的唯一入口指令,这个入口指令支配了该自然循环中所有指令。
目前,终端设备中的处理器处理的程序越来越复杂,现有的指令存储单元的存储空间也有限,从而可以将处理器运行的程序中划分为至少一个指令块,在程序运行的过程中,可以将程序中的一个指令块(该指令块可以包含部分或全部指令)搬运至指令存储单元中。而程序中可能会存在大量的自然循环,当自然循环指令中的一些指令不在当前执行的指令块中,即存在跳转时,往往会需要进行多次指令块的传输,无法通过一次指令加载操作将整个自然循环所涉及所有指令加载至指令存储单元中。在这个过程中,需要多次传输指令块,增加了程序的执行时间,降低了程序的运行效率。
为解决上述问题,本申请提出了一种减少指令跳转的方法,该方法可以基于指令存储单元的空间大小将程序中的指令划分为至少一个指令块,并在编译的过程中对程序中存在的自然循环进行优化。具体地,在编译的过程中,当第一优化循环中的指令分布于第i个指令块和第i+1个指令块时,可以将第一优化循环转移至所述第i+1个指令块中,使得第一优化循环中的指令在同一指令块中,从而能够减少因自然循环引起的跳转情况,降低程序的执行时间,提升系统运行效率。其中,每个第一优化循环可以是自然循环,其可以包含至少一条可以重复执行的指令。该方法的具体执行过程可参见下文的描述。
下面结合具体实施例,对本申请进行详细说明。
请参阅图1,图1是本申请实施例提供的一种计算机装置的结构示意图,如1图所示,该计算机装置包括存储器、输入设备、输出设备和处理器,其中,该计算机装置还可以包括通信总线,处理器、输入设备、输出设备和存储器之间可以通过总线相互连接。可选地,上述计算机装置还可以包括指令存储单元,该指令存储单元可以临近处理器设置。进一步可选地,指令存储单元可以与处理器集成为一体,即该指令存储单元可以是处理器的片上存储单元。这样,当处理器需要执行存储器中程序时,计算机装置首先将存储器中的程序加载至指令存储单元,之后,处理器可以访问上述的指令存储单元,以执行指令存储单元中的程序。
其中,上述处理器,用于执行所述存储器上所存放的程序时,实现以下步骤:
从存储器中获取指令序列,其中,所述指令序列包括n个指令块,所述指令块包括至少一个指令,所述n为大于1的正整数;从所述指令序列中获取第一优化循环,在所述第一优化循环中的指令分布于第i个指令块和第i+1个指令块的情况下,将所述第一优化循环的所有指令转移至所述第i+1个指令块中,其中,所述第一优化循环为占用存储空间小于或等于所述第i+1个指令块占用存储空间的自然循环,所述i为小于n的正整数。
进一步地,上述处理器可以是中央处理器(Central Processing Unit,CPU)、智能处理器(IntelligenceProcessing Unit,NPU)、图形处理器(Graphics Processing Unit,GPU)或图象处理器(Image Processing Unit),本申请对此不做限定。根据处理器的不同,本申请实施例提出的减少指令跳转的方法可以应用于图像识别处理、深度学习处理、计算机视觉处理、智能机器人处理、自然语言处理等人工智能应用领域,执行人工智能领域中的复杂功能程序。
请参阅图2,图2是本申请实施例提供的一种减少指令跳转的方法的流程示意图,该方法应用于如图1所示的计算机装置。下述方法步骤可以由如图1所述的计算装置中的处理器执行。如图2所示,该方法包括如下步骤:
S210、从存储器中获取指令序列,所述指令序列包括n个指令块,所述指令块包括至少一个指令,所述n为大于1的正整数。
具体实施中,程序由至少包含一个指令的指令序列以及数据组成,其存储于存储器中,可以按照程序的执行顺序将指令序列划分成至少一个指令块,划分完成之后,得到指令块的执行顺序,也称为指令块执行轨迹。其中,指令序列中的指令可以是二进制指令或以高级语言编写的指令等等,此处不做具体限定。
一般地,指令序列中指令序列占用的存储空间远大于指令存储单元的存储空间,因此,在指令序列中指令序列占用的存储空间大于指令存储单元地存储空间时,可以将指令序列中的指令序列划分为多个指令块。具体地,可以按照小于或等于指令存储单元存储空间的指定存储空间将指令序列中的指令序列划分成n个指令块,也可以按照随机存储空间将指令序列中的指令序列划分成n个指令块。其中,划分的每个指令块所占用的存储空间可以相同,也可以不同,本申请实施例对此不做限定。
具体来讲,指令块的执行顺序依据程序的执行顺序进行执行,划分之后的指令块的执行顺序与程序的执行顺序相同,也就是指令块的执行轨迹与程序的执行顺序是一致的。所述程序的执行顺序是指程序中指令的执行顺序。
本申请将指令序列划分的指令块的数量为n个,n为大于或等于1的正整数。也就是说,可以将指令序列划分为多个指令块,也可以整个一个程序作为一个指令块。例如,当整个程序所涉及的指令序列所需的存储空间小于或等于指令存储单元的存储空间时,则可以将该整个程序作为一个指令块。每个指令块中包含一定数量的指令,每个指令块中包含的指令的数量可以为一条也可以是多条。一般情况下,指令块中包含至少一条指令,至少一个指令按照特定的顺序被处理器执行。
S220、从所述指令序列中获取第一优化循环,在所述第一优化循环中的指令分布于第i个指令块和第i+1个指令块的情况下,将所述第一优化循环中的所有指令转移至所述第i+1个指令块中。
其中,所述第一优化循环为占用存储空间小于或等于所述第i+1个指令块占用存储空间的自然循环,也就是说,第一优化循环的外层循环(如果存在的话)占用的存储空间大于所述第i+1个指令块的存储空间,而所述第一优化循环占用的存储空间大于或等于所述第i+1个指令块的占用的存储空间,所述i为小于n的正整数。具体地,第一优化循环占用的存储空间可以是指第一优化循环中所有指令所需占用的存储空间。
具体地,在将指令序列划分为多个指令块时,可能会将可以第一优化循环包含的多条指令划分到两个指令块中,即第一优化循环中的指令实际上分布于两个指令块,使得在每次执行该第一优化循环的时候都会带来两次长跳转。例如,当第一优化循环中的指令分别分布在第一个指令块和第二个指令块中,且该第一优化循环的循环头在第一个指令块时,按照指令块的执行顺序,先将第一个指令块加载至指令存储单元执行,当即将执行的目标指令在第二个指令块中时,需要将第二个指令块加载至指令存储单元,之后又需要将第一个指令块加载至指令存储单元以回到该第一优化循环的循环头。在这个过程中,需要进行两次指令块的加载,增加了程序的执行时间。因此为了减少第一优化循环中的长跳转,本申请实施例可以将第一优化循环包含的所有指令转移至一个指令块中,使得第一优化循环能够一次性加载至指令存储单元。例如,将包括在第一个指令块和第二个指令块中第一优化循环转移至第二个指令块中。
可选的,在所述第一优化循环中的指令分布于第i个指令块和第i+1个指令块的情况下,在所述第i个指令块的所述第一优化循环的指令的地址上填充空指令。
具体地,所述第一优化循环中的指令分布于第i个指令块和第i+1个指令块时,会将第一优化循环中分布于第i个指令块中的指令转移至第i+1个指令块中,从而使得第一优化循环中的所有指令序列中于同一指令块中。这样第i个指令块中原先放置第一优化循环的指令的地址上会空置,因此在第i个指令块的所述第一优化循环的指令的地址上填充空指令,即NOP指令,将所述第i个指令块中的剩余空间填满。
可选的,所述将所述第一优化循环转移至所述第i+1个指令块中之后,所述方法还包括:更新所述指令序列以及所述指令序列中指令的PC值和地址;根据更新后的所述指令序列确定所述n的大小。
其中,在将所述第一优化循环转移至所述第i+1个指令块中之后,由于第一优化循环的移动,第i+1个指令块和第i+1个指令块之后的指令块中指令的程序计数器(ProgramCounter,PC)值和目标地址都发生了变化。因此,根据第一优化循环在所述第i个指令块中占用的存储空间,更新第i+1个指令块和第i+1个指令块之后的指令块中指令的PC值和目标地址,并根据更新后的所述指令序列重新确定所述指令块的数量,即n的大小。
在一个可能的实施例中,所述方法还包括:
在所述指令序列中标记待优化循环,其中,所述待优化循环为存储于连续存储空间的自然循环;
从所述标记的待优化循环中查找所述第一优化循环。
具体地,指令序列中可以包含很多的自然循环,自然循环中的指令可以分布于一个或多个指令块中,且该多个指令块在存储空间里可以是连续的也可以是非连续的。为了减少程序的运行时间,在获取到所述指令序列后,可以在所述指令序列中标记待优化循环,所述待优化循环为存储于连续存储空间的自然循环,即所述待优化循环可以包括在指令块的执行顺序上是连续的一个或多个指令块。例如,如图3A所示,首先扫描指令序列,得到所述指令序列中的所有自然循环,然后查找每一个自然循环中指令所分布的指令块,在所述自然循环中的指令所分布的指令块在指令块的执行顺序上是连续的情况下,将该自然循环标记为待优化循环,最后输出所有的待优化循环。
需要说明的是,标记待优化循环可以在获取指令序列后就执行。因此,标记待优化循环与划分指令序列没有时序关系,即标记待优化循环可以在划分指令序列之前或之后,也可以与划分指令序列同时进行,本申请实施例对此不做限定。
在一个可能的示例中,若所述标记待优化循环在划分指令序列之前或与划分指令序列同时进行时,终端设备可能无法根据指令块的执行顺序来判断自然循环是否为待优化循环,本申请实施例可以根据指令控制流中的基本块序列来判定待优化循环。其中,基本块是控制流中一个顺序执行的语句序列,控制流从基本块的开头进入,从基本块的结尾退出。待优化循环在基本块序列上是连续的若干个基本块。例如,如图3B所示,首先扫描指令序列,得到所述指令序列中的所有自然循环,查找每一个自然循环中指令所分布的所有基本块,然后把这些基本块在基本块序列中的次序找到,若所述基本块的次序构成一个连续的整数序列,即所述基本块对应的基本块序列是连续的若干个基本块,则将所述自然循环标记为待优化循环。
当一个自然循环中的指令可以包含在一个指令块中,但实际上跨越了两个指令块时,该自然循环每执行一次,都会带来两次指令块的加载或长跳转,即抖动。在本申请实施例中,为了消除抖动,可以将分布于两个指令块的自然循环中的指令均划分至第二个指令块中,在第一个指令块中的空缺位置填充空指令,把第一个指令块的剩余空间填满。
由于自然循环中可能存在嵌套的自然循环,因此需要从所述标记的待优化循环中查找出第一优化循环,针对所述第一优化循环进行优化,即减少所述第一优化循环中的抖动。如图4所示,首先扫描指令序列中所有标记的待优化循环,判断标记的待优化循环是否满足所述第一优化循环的定义,得到所有的第一优化循环;然后扫描所有的第一优化循环,如果有第一优化循环包括了两个指令块,第i个指令块和第i+1个指令块,将该第一优化循环转移至第i+1个指令块中,然后将第i个指令块中第一优化循环的地址上填充空指令,更新所述指令序列并输出所述更新后的指令序列。
在本申请实施例中,通过将第一优化循环转移至一个指令块中,使得第一优化循环可以一次性加载至指令存储单元,从而减少第一优化循环内的抖动,降低整个程序的运行时间。
可选的,所述方法还包括:所述n个指令块中的任一指令块占用的存储空间根据所述指令存储单元的存储空间确定,所述指令存储单元包括第一指令存储单元和/或第二指令存储单元。
其中,将指令序列划分成指令块时,可以根据指令存储单元的存储空间划分指令块,使得划分之后的每个指令块所占用的存储空间可以小于或等于所述指令存储单元的存储空间。
进一步地,指令存储单元可以包括第一指令存储单元和/或第二指令存储单元。当所述指令序列在所述第一指令存储单元中运行时,指令序列根据所述第一指令存储单元的存储空间来划分。该第一指令存储单元可以设置与处理器内部,也可以贴近所述处理器设置。可选的,所述第一指令存储单元可以是硬件驱动的指令存储单元,所述第一指令存储单元可以是高速缓存处理器,例如cache存储器。下面举例来说明,如图5A所示,cache存储器的存储空间为S,可以根据S的大小将指令序列划分成多个指令块,每个指令块占用的存储空间小于或等于S。程序在执行时,第一个指令块加载到cache中运行,在执行过程中,如果即将执行的指令I不在cache中,则通过硬件将指令I所在的指令块加载至IRAM中替换掉当前指令块,并从指令I开始执行。
进一步地,当所述指令序列在所述第二指令存储单元中运行时,指令序列根据所述第二指令存储单元的存储空间来划分。该第二指令存储单元可以贴近所述处理器设置,存储器相对于第二指令存储单元远离处理器设置。可选地,第二指令存储单元可以是集成于处理器上的片上存储单元,存储器可以是与该处理器连接的外部存储单元。可选地,所述第二指令存储单元可以是软件驱动的指令存储单元,该第二指令存储单元可以是片内随机存储器(Instruction RAM,IRAM)、片内只读存储器(Instruction ROM,IROM)或同步动态随机存储器(Synchronous Dynamic Random Access Memory,SDRAM),本申请实施例对此不做限制。
在本申请实施例中,在所述指令存储单元包括第二指令存储单元的情况下,所述方法还包括:
在所述第i个指令块的最后一条指令后面插入传参指令和相关指令,所述传参指令用于将所述第i+1个指令块的地址传送至所述相关指令,所述相关指令用于将所述第i+1个指令块加载至所述第二指令存储单元。
其中,所述相关指令可以包含至少一条指令。所述传参指令可以通过一条指令获取第i+1个指令块的目标地址或第i+1个指令块的目标地址相对于所述指令序列起始地址的偏移值,该指令的目的操作数可以为所述相关指令的输入,该指令的源操作数可以为所述第i+1个指令块的目标地址或所述目标地址的偏移值。可选的,所述传参指令还可以通过另一条指令获取所述第i+1个指令块的指令条数以及目标指令的PC值或所述PC值在所述第i+1个指令块的偏移值,该指令的目的操作数可以为所述相关指令的输入,该指令的源操作数可以为所述第i+1个指令块的指令条数以及目标指令的PC值或所述PC值的偏移值,其中,所述第i+1个指令块的指令条数、所述目标指令的PC值或所述PC值的偏移值可以分别占用一定的比特数来存放,例如。第i+1个指令块的指令条数可以占用11比特,所述目标指令的PC值或所述PC值的偏移值可以占用10比特。
进一步地,所述传参指令的目的操作数可以是寄存器,例如R1、R2、R3或R4。所述传参指令的源操作数可以是寄存器,也可以是一个常数值。所述寄存器在程序运行过程中只能被该传参指令所使用。该传参指令可以包括但不限于MOV指令、PUSH指令、LEA指令等数据传输指令。需要说明的是,传参指令中不同指令使用的寄存器可以不同,也可以相同。
其中,所述相关指令可以是用于将第i+1个指令块(目标指令块)加载至所述第二指令存储单元的指令,所述第i+1个指令块可以是编译后即将执行的指令块,当所述第i+1个指令块不在第二指令存储单元时,将第i+1个指令块加载至第二指令存储单元,以使处理器能够执行第i+1个指令块中的指令。所述相关指令可以包含至少一条指令。可选地,所述相关指令的输入可以是通过寄存器传递的第i+1个指令块的目标地址或所述目标地址的偏移值;和/或,通过寄存器传递的所述第i+1个指令块的指令条数以及目标指令的PC值或所述PC值的偏移值。所述第i+1个指令块目标地址和/或所述第i+1个指令块的指令条数以及目标指令的PC值或所述PC值的偏移值可以通过所述传参指令中的指令来传送给所述寄存器。进而,相关指令能够读取寄存器中存储的所述目标地址或所述目标地址的偏移值,以将第i+1个指令块加载至第二指令存储单元中;相关指令能够通过读取寄存器中存储的第i+1个指令块的指令条数以及目标指令的PC值或所述PC值的偏移值,确定所述目标指令在所述第i+1个指令块中的当前位置,从而可以从目标指令的当前位置执行所述第i+1个指令块。
程序在运行前,需要进行编译,在编译时,可以在第i个指令块的最后一条指令后面插入传参指令和相关指令。可以理解为,除了最后一个指令块,在每个指令块的最后一条指令后面增加传参指令和相关指令。这样,在执行第i个指令块之后,可以通过该传参指令和相关指令切换至第i+1个指令块执行。
本申请实施例中,通过将在第i个指令块的最后一条指令后面插入传参指令和相关指令,从而使得第i个指令块执行结束后,能够通过传参指令调用相关指令,以自动实现第i+1个指令块的加载及执行,实现指令块之间的自动切换执行,从而可以提高程序的执行效率。
可选的,所述n个指令块中的任一指令块占用的存储空间根据所述指令存储单元的存储空间确定包括:所述n个指令块中的任一指令块占用的存储空间根据所述第二指令存储单元的存储空间以及所述传参指令和所述相关指令占用的存储空间确定。
具体地,将指令序列划分为指令块时,根据所述第二指令存储单元的存储空间大小划分指令块,使得划分之后的每个指令块所占用的存储空间小于指令存储单元的存储空间,并要求所述第二指令存储单元可以存储一个完整的指令块。其中,所述指令块包括所述传参指令和所述相关指令,所述相关指令置于所述指令块的最后,所述传参指令置于所述指令块与所述相关指令之间。也就是说,指令序列可以根据第二指令存储单元的存储空间与所述传参指令和所述相关指令占用的存储空间之差来划分成指令块,如图5B所示,IRAM的存储空间为S,传参指令占用的存储空间为S1,相关指令占用的存储空大小为S2,可以根据S-S1-S2的大小将指令序列划分成多个指令块,每个指令块占用的存储空间小于或等于S-S1-S2。程序在执行时,第一个指令块、传参指令和相关指令首先被加载到IRAM中运行,在执行过程中,如果即将执行的指令I不再IRAM中,则通过传参指令调用IRAM中的相关指令,将指令I所在的指令块加载至IRAM中替换掉当前指令块,并从指令I开始执行,从而可以实现指令块之间的自动切换执行。
在一个可能的实施例中,所述第二指令存储单元包括第一存储单元和第二存储单元,所述第一存储单元用于存储所述n个指令块中的一指令块,所述第二存储单元用于存储所述传参指令和所述相关指令。
其中,所述传参指令和所述相关指令可以是一段固化代码。当第i+1个指令块未在所述第一存储单元中时,则从所述第二存储单元中通过传参指令调用相关指令获得所述第i+1个指令块的目标地址,将所述第i+1个指令块加载至所述第一存储单元中。
可选的,所述n个指令块中的任一指令块占用的存储空间根据所述指令存储单元的存储空间确定,包括:所述n个指令块中的任一指令块占用的存储空间根据所述第二指令存储单元中的第一存储单元的存储空间确定。
具体地,将指令序列划分为指令块时,根据第一存储单元的存储空间大小划分指令块,使得划分之后的每个指令块所占用的存储空间小于第一存储单元的存储空间,并要求所述第一存储单元可以存储一个完整的指令块。下面举例来说明,如图5C所示,IRAM包括IRAM_P1和IRAM_P2,其中IRAM_P1占用的存储空间为S1,可以根据S1的大小将指令序列划分成多个指令块,每个指令块占用的存储空间小于或等于S1。程序在执行时,第一个指令块首先被加载到IRAM_P1中运行,在执行过程中,如果即将执行的指令I不再IRAM_P1中,则通过传参指令调用IRAM_P2中的相关指令,将指令I所在的指令块加载至IRAM_P1中替换掉当前指令块,并从指令I开始执行,从而可以实现指令块之间的自动切换执行。
下面以IRAM为指令存储单元为例,详细描述本申请实施例的方法。
如图6所示,图6为本申请实施例提供的一种原始程序P的示意图。其中,IRAM的存储空间为1024,如图6所示,该程序P存储于双倍速率同步动态随机存储器(Double DataRate Synchronous Dynamic Random Access Memory,DDR SDRAM),由于该程序P的指令序列占用的存储空间为2800,且程序P中包含两个自然循环,因此在执行该程序P时存在多次的长跳转,会增加的程序的运行时间,可以经过本申请实施例所述的方法来减少程序P中的跳转。
如图5C所示,IRAM包括IRAM_P1和IRAM_P2两部分,其中IRAM_P1用于存储指令块,IRAM_P2用于存储传参指令和相关指令。IRAM_P1的存储空间S1为1001,首地址为0,IRAM_P2的首地址A2为1013。当IRAM_P1中的指令块在执行时,如果即将执行的指令不在IRAM_P1中,则通过传参指令调用相关指令将即将执行指令所在的指令块替换到IRAM_P1中,并跳转到相应的目标地址继续执行。
具体地,将程序的指令序列划分为指令块,划分之后的每个指令块所占用的存储空间小于IRAM_P1的存储空间。如图7所示,所述程序按照S1-1的大小将指令序列划分成3个指令块,即X0、X1、X2。
进一步地,扫描程序P,得到程序P中的所有自然循环,即C1和C2。其中,C1包括指令块X0和X1,C2包括指令块X1,指令块X0和X1的执行顺序是连续的,因此将C1和C2标记为待优化循环。之后,根据第一优化循环的定义,判断C1和C2是否为第一优化循环。其中,C1中包括了包括C2,即C1是C2的外层循环,且C1所占用的存储空间小于IRAM_P1的存储空间,因此,将C1作为第一优化循环。
其中,C1包括指令块X0和X1,其跨越了两个指令块,因此将C1包含的所有指令转移至指令块X1中,同时将指令块X0中空闲位置(即C1中原分布于指令块X0中的部分指令对应的地址上)填充NOP指令,并更新程序P1中指令的PC值和DDR SDRAM的地址(DDR_ADDR),并更新传参指令中源操作数的值,更新后的程序如图8所示。
图8中的程序经过上述处理后可以将第一优化循环一次性加载至IRAM中执行,即可以将C1指令块加载至IRAM_P1中开始执行。图中给出了每个指令块加载到IRAM_P1上的PC值(IRAM_PC)。需要说明的是,图8中的指令JUMP EQ 1300中的目标地址1312指的是DDR_ADDR(这个DDR_ADDR是指IRAM上的地址)。
可以看出,本申请实施例的减少指令跳转的方法,当第一优化循环中的指令分布于第i个指令块和第i+1个指令块时,将第一优化循环转移至所述第i+1个指令块中,使得第一优化循环中的自然循环在同一指令块中,从而能够减少因自然循环引起的跳转情况,降低程序的执行时间,提升系统运行效率。
例如,本申请提出的减少指令跳转的方法应用于图像识别处理时,处理器从存储器中获取图像识别的指令序列,再从图像识别的指令序列中获取第一优化循环,当第一优化循环中的指令分布于第i个指令块和第i+1个指令块时,将第一优化循环转移至所述第i+1个指令块中,使得第一优化循环中的指令在同一指令块中,从而能够减少因自然循环引起的跳转情况,降低图像识别处理程序的执行时间,提升图像识别系统的运行效率。
进一步,本申请提出的减少指令跳转的方法应用于深度学习处理时,处理器从存储器中获取深度学习的指令序列,再从深度学习的指令序列中获取第一优化循环,当第一优化循环中的指令分布于第i个指令块和第i+1个指令块时,将第一优化循环转移至所述第i+1个指令块中,使得第一优化循环中的指令在同一指令块中,从而能够减少因自然循环引起的跳转情况,降低深度学习处理程序的执行时间,提升深度学习系统的运行效率。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
请参阅图9A,图9A是本申请实施例提供的一种减少指令跳转的装置900的功能单元组成框图,如图9A所示,该程序运行装置900包括获取模块910和转移模块920,其中,
所述获取模块910,用于从存储器中获取指令序列,所述指令序列包括n个指令块,所述指令块包括至少一个指令,所述n为大于1的正整数;
所述获取模块910,还用于从所述指令序列中获取第一优化循环;
所述转移模块920,用于在所述第一优化循环中的指令分布于第i个指令块和第i+1个指令块的情况下,将所述第一优化循环转移至所述第i+1个指令块中,所述第一优化循环为占用存储空间小于或等于所述第i+1个指令块占用存储空间的自然循环,所述i为小于n的正整数。
可以看出,本申请实施例的减少指令跳转的装置,当第一优化循环中的指令分布于第i个指令块和第i+1个指令块时,将第一优化循环转移至所述第i+1个指令块中,使得第一优化循环中的指令在同一指令块中,从而能够减少因自然循环引起的跳转情况,降低程序的执行时间,提升系统运行效率。
在一个可能的实施例中,如图9B所示,是本申请实施例提供的另一种程序运行装置900的功能单元组成框图,所述装置900还包括:
填充模块930,用于在所述第一优化循环中的指令分布于第i个指令块和第i+1个指令块的情况下,在所述第i个指令块的所述第一优化循环的地址上填充空指令。
可选的,在将所述第一优化循环转移至所述第i+1个指令块中之后,所述装置900还包括:
更新模块940,用于更新所述指令序列以及所述指令序列中指令的PC值和地址;
确定模块950,用于根据更新后的所述指令序列确定所述n的大小。
在一个可能的实施例中,所述装置900还包括:
标记模块960,用于在所述指令序列中标记待优化循环,所述待优化循环为存储于连续存储空间的自然循环;
查找模块970,用于从所述标记的待优化循环中查找所述第一优化循环。
可选的,所述确定模块950,还用于:
所述n个指令块中的任一指令块占用的存储空间根据所述指令存储单元的存储空间确定,所述指令存储单元包括第一指令存储单元和/或第二指令存储单元,所述第一指令存储单元为由硬件驱动的指令存储单元,所述第二指令存储单元为由软件驱动的指令存储单元。
在一个可能的实施例中,在所述指令存储单元包括第二指令存储单元的情况下,所述装置900还包括:
插入模块980,用于在所述第i个指令块的最后一条指令后面插入传参指令和相关指令,所述传参指令用于将所述第i+1个指令块的地址传送至所述相关指令,所述相关指令用于将所述第i+1个指令块加载至所述第二指令存储单元;
所述确定模块950,具体用于所述n个指令块中的任一指令块占用的存储空间根据所述第二指令存储单元的存储空间以及所述传参指令和所述相关指令占用的存储空间确定。
可选的,所述第二指令存储单元包括第一存储单元和第二存储单元,所述第一存储单元用于存储所述n个指令块中的一指令块,所述第二存储单元用于存储所述传参指令和所述相关指令;
所述确定模块950,具体用于所述n个指令块中的任一指令块占用的存储空间根据所述第二指令存储单元中的第一存储单元的存储空间确定。
可以理解的是,本申请实施例的减少指令跳转的装置的各程序模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、终端设备或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、ROM、RAM、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种减少指令跳转的方法,其特征在于,所述方法包括:
从存储器中获取指令序列,所述指令序列包括n个指令块,所述指令块包括至少一个指令,所述n为大于1的正整数;
从所述指令序列中获取第一优化循环,在所述第一优化循环中的指令分布于第i个指令块和第i+1个指令块的情况下,将所述第一优化循环中的指令转移至所述第i+1个指令块中,所述第一优化循环为占用存储空间小于或等于所述第i+1个指令块占用存储空间的自然循环,所述i为小于n的正整数。
2.根据权利要求1所述方法,其特征在于,所述方法还包括:
在所述第一优化循环中的指令分布于所述第i个指令块和所述第i+1个指令块的情况下,在所述第i个指令块的所述第一优化循环中的地址上填充空指令。
3.根据权利要求2所述方法,其特征在于,所述将所述第一优化循环转移至所述第i+1个指令块中之后,所述方法还包括:
更新所述指令序列以及所述指令序列中指令的PC值和地址;根据更新后的所述指令序列确定所述n的大小。
4.根据权利要求1所述方法,其特征在于,所述方法还包括:
在所述指令序列中标记待优化循环,所述待优化循环为存储于连续存储空间的自然循环;
从所述标记的待优化循环中查找所述第一优化循环。
5.根据权利要求1-4任一项所述方法,其特征在于,所述方法还包括:
所述n个指令块中的任一指令块占用的存储空间根据所述指令存储单元的存储空间确定,所述指令存储单元包括第一指令存储单元和/或第二指令存储单元。
6.根据权利要求5所述方法,其特征在于,在所述指令存储单元包括第二指令存储单元的情况下,所述方法还包括:
在所述第i个指令块的最后一条指令后面插入传参指令和相关指令,所述传参指令用于将所述第i+1个指令块的地址传送至所述相关指令,所述相关指令用于将所述第i+1个指令块加载至所述第二指令存储单元;
所述n个指令块中的任一指令块占用的存储空间根据所述指令存储单元的存储空间确定,包括:
所述n个指令块中的任一指令块占用的存储空间根据所述第二指令存储单元的存储空间以及所述传参指令和所述相关指令占用的存储空间确定。
7.根据权利要求5所述方法,其特征在于,所述第二指令存储单元包括第一存储单元和第二存储单元,所述第一存储单元用于存储所述n个指令块中的一指令块,所述第二存储单元用于存储所述传参指令和所述相关指令;
所述n个指令块中的任一指令块占用的存储空间根据所述指令存储单元的存储空间确定,包括:
所述n个指令块中的任一指令块占用的存储空间根据所述第二指令存储单元中的第一存储单元的存储空间确定。
8.一种减少指令跳转装置,其特征在于,所述装置包括:
获取模块,用于从存储器中获取线程的指令序列,所述指令序列包括n个指令块,所述指令块包括至少一个指令,所述n为大于1的正整数;
所述获取模块,还用于从所述指令序列中获取第一优化循环;
转移模块,用于在所述第一优化循环中的指令分布于第i个指令块和第i+1个指令块的情况下,将所述第一优化循环转移至所述第i+1个指令块中,所述第一优化循环为占用存储空间小于或等于所述第i+1个指令块占用存储空间的自然循环,所述i为小于n的正整数。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器中存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1至7中任一项所述方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储用于数据交换的计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010304291.9A CN113535231A (zh) | 2020-04-17 | 2020-04-17 | 减少指令跳转的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010304291.9A CN113535231A (zh) | 2020-04-17 | 2020-04-17 | 减少指令跳转的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113535231A true CN113535231A (zh) | 2021-10-22 |
Family
ID=78123284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010304291.9A Pending CN113535231A (zh) | 2020-04-17 | 2020-04-17 | 减少指令跳转的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535231A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5854933A (en) * | 1996-08-20 | 1998-12-29 | Intel Corporation | Method for optimizing a computer program by moving certain load and store instructions out of a loop |
CN101000556A (zh) * | 2005-09-28 | 2007-07-18 | 松下电器产业株式会社 | 编译装置 |
US20140136822A1 (en) * | 2012-11-09 | 2014-05-15 | Advanced Micro Devices, Inc. | Execution of instruction loops using an instruction buffer |
CN104679480A (zh) * | 2013-11-27 | 2015-06-03 | 上海芯豪微电子有限公司 | 一种指令集转换系统和方法 |
CN105247484A (zh) * | 2013-03-15 | 2016-01-13 | 索夫特机械公司 | 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法 |
CN109656479A (zh) * | 2018-12-11 | 2019-04-19 | 湖南国科微电子股份有限公司 | 一种构建存储器命令序列的方法及装置 |
-
2020
- 2020-04-17 CN CN202010304291.9A patent/CN113535231A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5854933A (en) * | 1996-08-20 | 1998-12-29 | Intel Corporation | Method for optimizing a computer program by moving certain load and store instructions out of a loop |
CN101000556A (zh) * | 2005-09-28 | 2007-07-18 | 松下电器产业株式会社 | 编译装置 |
US20140136822A1 (en) * | 2012-11-09 | 2014-05-15 | Advanced Micro Devices, Inc. | Execution of instruction loops using an instruction buffer |
CN105247484A (zh) * | 2013-03-15 | 2016-01-13 | 索夫特机械公司 | 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法 |
CN104679480A (zh) * | 2013-11-27 | 2015-06-03 | 上海芯豪微电子有限公司 | 一种指令集转换系统和方法 |
CN109656479A (zh) * | 2018-12-11 | 2019-04-19 | 湖南国科微电子股份有限公司 | 一种构建存储器命令序列的方法及装置 |
Non-Patent Citations (1)
Title |
---|
窦勇;邬贵明;徐进辉;周兴铭: "支持循环自动流水线的粗粒度可重构阵列体系结构", 中国科学(E辑:信息科学), no. 04, 15 April 2008 (2008-04-15), pages 579 - 591 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7162617B2 (en) | Data processor with changeable architecture | |
CN111324294B (zh) | 存取张量数据的方法和装置 | |
US11914978B2 (en) | Systems and methods for code optimization | |
US20230084523A1 (en) | Data Processing Method and Device, and Storage Medium | |
CN102508635A (zh) | 一种处理器装置及其循环处理方法 | |
US8769244B2 (en) | SIMD parallel computer system, SIMD parallel computing method, and control program | |
US9569273B2 (en) | Apparatus and method for controlling execution of a single thread by multiple processors | |
US8887142B2 (en) | Loop control flow diversion | |
US20200371801A1 (en) | True/false vector index registers | |
US9606802B2 (en) | Processor system with predicate register, computer system, method for managing predicates and computer program product | |
US8141068B1 (en) | Compiler with flexible scheduling | |
CN113535231A (zh) | 减少指令跳转的方法及装置 | |
Haaß et al. | Automatic custom instruction identification in memory streaming algorithms | |
US20190278577A1 (en) | Vectorize store instructions method and apparatus | |
CN112882753A (zh) | 程序运行方法及装置 | |
CN113791770B (zh) | 代码编译器、代码编译方法、代码编译系统和计算机介质 | |
CN114218152B (zh) | 流处理方法、处理电路和电子设备 | |
US11977894B2 (en) | Method and system for distributing instructions in reconfigurable processor and storage medium | |
CN112230995B (zh) | 一种指令的生成方法、装置以及电子设备 | |
US8631173B2 (en) | Semiconductor device | |
CN102902548B (zh) | 汇编级内存复制标准库函数的生成方法及装置 | |
US20050262389A1 (en) | Stack type snapshot buffer handles nested interrupts | |
US20130166887A1 (en) | Data processing apparatus and data processing method | |
US20020156992A1 (en) | Information processing device and computer system | |
US20230084298A1 (en) | Processing Device Using Variable Stride Pattern |
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 |