CN110134438B - 指令排序方法、装置、移动终端及存储介质 - Google Patents
指令排序方法、装置、移动终端及存储介质 Download PDFInfo
- Publication number
- CN110134438B CN110134438B CN201910398909.XA CN201910398909A CN110134438B CN 110134438 B CN110134438 B CN 110134438B CN 201910398909 A CN201910398909 A CN 201910398909A CN 110134438 B CN110134438 B CN 110134438B
- Authority
- CN
- China
- Prior art keywords
- instruction
- instructions
- assembler
- determining
- dependency relationship
- 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
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000012163 sequencing technique Methods 0.000 claims abstract description 47
- 238000013507 mapping Methods 0.000 claims abstract description 18
- 230000015654 memory Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 13
- 230000001419 dependent effect Effects 0.000 claims description 6
- 238000013461 design Methods 0.000 abstract description 10
- 230000006870 function Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000002093 peripheral effect Effects 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/32—Address formation of the next instruction, e.g. by incrementing the instruction 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
本申请实施例公开了一种指令排序方法、装置、移动终端及存储介质,该方法包括:读取汇编程序指令集中的第一指令,第一指令为汇编程序指令集中的任一条;根据指令与节拍数的映射关系确定与第一指令对应的第一节拍数;获取执行汇编程序指令的芯片拥有的有效指令发射槽数量;确定排列在第一指令之后的N条指令是否均为相关指令,相关指令是与第一指令存在依赖关系的指令或与N条指令中除自身之外的其他指令存在依赖关系的指令;若排列在第一指令之后的N条指令均为相关指令,在第一指令之后插入N条无关指令,无关指令是与第一指令不存在依赖关系的并且N条无关指令相互之间不存在依赖关系的指令。本申请实施例可以降低芯片设计复杂度。
Description
技术领域
本申请涉及通信技术领域,具体涉及一种指令排序方法、装置、移动终端及存储介质。
背景技术
目前,芯片在执行指令时,会进行指令排序,指令排序一般在芯片上通过硬件来实现。硬件上实现指令排序,会使得芯片设计异常复杂,而且在程序运行出错时,软件报错会不知所措。因为软件无法准确得知:在当前运行情况下,芯片是如何进行汇编程序的重排列的。
发明内容
本申请实施例提供了一种指令排序方法、装置、移动终端及存储介质,可以降低芯片设计复杂度。
第一方面,本申请实施例提供一种指令排序方法,包括:
读取汇编程序指令集中的第一指令,所述第一指令为所述汇编程序指令集中的任一条;
根据指令与节拍数的映射关系确定与所述第一指令对应的第一节拍数;获取执行所述汇编程序指令的芯片拥有的有效指令发射槽数量;
确定排列在所述第一指令之后的N条指令是否均为相关指令,所述相关指令是与所述第一指令存在依赖关系的指令或与所述N条指令中除自身之外的其他指令存在依赖关系的指令;
若排列在所述第一指令之后的N条指令均为相关指令,在所述第一指令之后插入N条无关指令,所述无关指令是与所述第一指令不存在依赖关系的并且所述N条无关指令相互之间不存在依赖关系的指令;其中,N大于或等于所述第一节拍数与所述有效指令发射槽数量之积。
第二方面,本申请实施例提供了一种指令排序装置,所述指令排序装置包括读取单元、第一确定单元、获取单元、第二确定单元和排序单元,其中:
所述读取单元,用于读取汇编程序指令集中的第一指令,所述第一指令为所述汇编程序指令集中的任一条;
所述第一确定单元,用于根据指令与节拍数的映射关系确定与所述第一指令对应的第一节拍数;
所述获取单元,用于获取执行所述汇编程序指令的芯片拥有的有效指令发射槽数量;
所述第二确定单元,用于确定排列在所述第一指令之后的N条指令是否均为相关指令,所述相关指令是与所述第一指令存在依赖关系的指令或与所述N条指令中除自身之外的其他指令存在依赖关系的指令;
所述排序单元,用于在所述第二确定单元确定排列在所述第一指令之后的N条指令均为相关指令的情况下,在所述第一指令之后插入N条无关指令,所述无关指令是与所述第一指令不存在依赖关系的并且所述N条无关指令相互之间不存在依赖关系的指令;其中,N大于或等于所述第一节拍数与所述有效指令发射槽数量之积。
第三方面,本申请实施例提供一种移动终端,包括处理器、存储器,所述存储器用于存储一个或多个程序,所述一个或多个程序被配置成由所述处理器执行,上述程序包括用于执行本申请实施例第一方面中的步骤的指令。
第四方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。
第五方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,本申请实施例中所描述的指令排序方法,具体包括如下步骤:读取汇编程序指令集中的第一指令,第一指令为汇编程序指令集中的任一条;根据指令与节拍数的映射关系确定与第一指令对应的第一节拍数;获取执行汇编程序指令的芯片拥有的有效指令发射槽数量;确定排列在第一指令之后的N条指令是否均为相关指令,相关指令是与第一指令存在依赖关系的指令或与N条指令中除自身之外的其他指令存在依赖关系的指令;若排列在第一指令之后的N条指令均为相关指令,在第一指令之后插入N条无关指令,无关指令是与第一指令不存在依赖关系的并且N条无关指令相互之间不存在依赖关系的指令;其中,N大于或等于第一节拍数与有效指令发射槽数量之积。实施本申请实施例,对于未经排序的汇编程序指令集,可以通过软件程序进行排序,无需在交给芯片后再进行排序,可以在指令执行报错时排除芯片出错的原因,快速找到指令报错原因,无需因为指令排序而对芯片进行重新设计,降低了芯片设计的复杂度。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例公开的一种指令排序方法的流程示意图;
图2是本申请实施例公开的另一种指令排序方法的流程示意图;
图3是本申请实施例公开的另一种指令排序方法的流程示意图;
图4是本申请实施例公开的一种指令排序装置的结构示意图;
图5是本申请实施例公开的一种移动终端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请实施例所涉及到的移动终端可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(User Equipment,UE),移动台(Mobile Station,MS),终端设备(terminaldevice)等等。为方便描述,上面提到的设备统称为移动终端。
下面对本申请实施例进行详细介绍。
请参阅图1,图1是本申请实施例公开的一种指令排序方法的流程示意图,如图1所示,该指令排序方法包括如下步骤。
101,读取汇编程序指令集中的第一指令,第一指令为汇编程序指令集中的任一条。
本申请实施例中,汇编程序指令集是没有经过排序的指令集。汇编程序是把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。汇编语言是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执行指令和汇编伪指令组成。采用汇编语言编写程序虽不如高级程序设计语言简便、直观,但是汇编出的目标程序占用内存较少、运行效率较高,且能直接引用计算机的各种设备(比如,寄存器)资源。它通常用于编写系统的核心部分程序,或编写需要耗费大量运行时间和实时性要求较高的程序段。
汇编语言是较为底层的低级语言,汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计;汇编语言通常被应用在底层硬件操作和高要求的程序优化的场合。比如:汇编语言可以应用在驱动程序、嵌入式操作系统和实时运行程序中。
第一指令为汇编程序指令集中的任一条,具体的,第一指令可以为汇编程序指令集中的第一条。当第一条指令被排序完之后,接着对排列在第一指令之后的第二条指令进行排序,依次对汇编程序指令集中的指令进行排序,直到汇编程序指令集中的所有指令都被排序完为止。
汇编程序指令集包括多条汇编程序指令,多条汇编程序指令有些是相互依赖的,有些是没有依赖的可以并行执行的。举例来说,汇编程序指令集包括A1、A2、A3、B1、B2、B3、B4、C1、C2、C3、D1这10条指令。A2需要在A1执行完毕之后才能执行,A3需要在A2执行完毕之后才能执行,B2需要在B1执行完毕之后才能执行,B3需要在B2执行完毕之后才能执行,B4需要在B3执行完毕之后才能执行,C2需要在C1执行完毕之后才能执行,C3需要在C2执行完毕之后才能执行,D1需要在A3、B4、C3都执行完毕之后才能执行。则,A1与A2之间存在依赖关系,A2与A3之间存在依赖关系,B1与B2之间存在依赖关系,B2与B3之间存在依赖关系,B3与B4之间存在依赖关系,C1与C2之间存在依赖关系,C2与C3之间存在依赖关系,A3、B4、C3与D1之间存在依赖关系。
102,根据指令与节拍数的映射关系确定与第一指令对应的第一节拍数;获取执行汇编程序指令的芯片拥有的有效指令发射槽数量。
本申请实施例中,指令与节拍数的映射关系可以预先获取并存储在存储器中。汇编程序在排序之后是要交给芯片进行执行的。芯片可以有多个指令发射槽,如果有指令发射槽被其他指令集占用或者损坏,则该指令发射槽为无效指令发射槽;如果该指令发射槽既没有被其他指令集占用,也没有损坏,则该指令发射槽为有效指令发射槽。如果芯片有多个指令发射槽,则芯片可以同时对多条指令进行执行。
每条指令的执行都需要一定的节拍数,也即需要一定的时长。节拍数可以对应一个或多个时钟周期,时钟周期是时钟频率的倒数,时钟频率与芯片的主频相关(比如,时钟频率等于芯片的主频)。
103,确定排列在第一指令之后的N条指令是否均为相关指令,相关指令是与第一指令存在依赖关系的指令或与N条指令中除自身之外的其他指令存在依赖关系的指令。
本申请实施例中,相关指令,不仅是指与第一指令相关,还包括相互相关的指令。比如,N等于4,第一指令为A1,第一指令之后依次排列的4条指令分别为A2、A3、A4和A5。如果A1与A2、A3、A4和A5均存在依赖关系,则表明排列在第一指令之后的4条指令均为相关指令。如果A2与A3存在依赖关系、A3与A4存在依赖关系、A4与A5存在依赖关系,或者A2与A3存在依赖关系、A4与A5存在依赖关系,则表明排列在第一指令之后的4条指令均为相关指令。如果A2与A3存在依赖关系、A3与A4存在依赖关系,则表明排列在第一指令之后的3条指令(A2、A3、A4)均为相关指令,排列在第一指令之后的第四条指令(A5)不是相关指令。
可选的,步骤103中,确定排列在第一指令之后的N条指令是否均为相关指令,具体可以包括如下步骤:
(11)比较第三指令的源操作数与第一指令的目的操作数是否相同,第三指令为排列在第一指令之后的N条指令中的任一条;
(12)若是,则确定第三指令为相关指令;
(13)若否,则比较第三指令的源操作数与N条指令中除第三指令之外的其他指令的目的操作数是否相同,或者,比较第三指令的目的操作数与N条指令中除第三指令之外的其他指令的源操作数是否相同;
(14)若第三指令的源操作数与N条指令中除第三指令之外的其他指令的目的操作数相同,则确定第三指令为相关指令;若第三指令的目的操作数与N条指令中除第三指令之外的其他指令的源操作数相同,则确定第三指令为相关指令;
(15)若第三指令的源操作数与N条指令中除第三指令之外的其他指令的目的操作数不相同,并且第三指令的目的操作数与N条指令中除第三指令之外的其他指令的源操作数不相同,则确定第三指令为无关指令。
本申请实施例中,提供了一种判断第一指令之后的N条指令中的任一条指令是否为相关指令的方法。通过比较第三指令的源操作数与第一指令的目的操作数是否相同来确定第三指令与第一指令是否存在依赖关系。若第三指令的源操作数与第一指令的目的操作数相同,则第三指令与第一指令存在依赖关系,第三指令是第一指令的相关指令,表明第三指令需要在第一指令执行完毕之后才开始执行,二者不可同时执行。若第三指令的源操作数与第一指令的目的操作数不相同,还需进一步判断第三指令的源操作数与N条指令中除第三指令之外的其他指令的目的操作数是否相同,或者,判断第三指令的目的操作数与N条指令中除第三指令之外的其他指令的源操作数是否相同。如果第三指令的源操作数与N条指令中除第三指令之外的其他指令的目的操作数相同,活着第三指令的目的操作数与N条指令中除第三指令之外的其他指令的源操作数相同,则确定第三指令为相关指令。如果第三指令的源操作数与N条指令中除第三指令之外的其他指令的目的操作数不相同,并且第三指令的目的操作数与N条指令中除第三指令之外的其他指令的源操作数不相同,则确定第三指令为无关指令。
以下举例进行说明:
指令1:MOV AH,02
指令2:ADD BL,AH
指令1中的MOV和指令2中的ADD为操作码,MOV操作码是将源操作数移动到目的操作数的意思,ADD操作码时将源操作数与目的操作数相加,并将相加结果放入目的操作数的意思。AH,02,BL,AH都是操作数。指令1中的02为源操作数,AH为目的操作数;指令2中的AH为源操作数,BL为目的操作数。指令1表达的意思是:将立即数02放到AH寄存器中;指令2表达的意思是:将BL寄存器中的数据与AH中的数据(02)相加,并将相加后的结果存入BL中。可见,指令1的目的操作数与指令2的源操作数相同,二者为相关指令,并且指令2需要在指令1执行后才能执行。如果指令2在指令1之前执行,则会导致AH寄存器中的数值出现错误,导致BL寄存器得到错误结果。指令2和指令1并行执行,也可能会出现错误。本申请提供了一种判断指令之间是否为有依赖关系,是否为相关指令的方法,可以根据指令的源操作数和目的操作数快速判断指令之间是否为有依赖关系,是否为相关指令。
104,若排列在第一指令之后的N条指令均为相关指令,在第一指令之后插入N条无关指令,无关指令是与第一指令不存在依赖关系的并且N条无关指令相互之间不存在依赖关系的指令;其中,N大于或等于第一节拍数与有效指令发射槽数量之积。
本申请实施例中,无关指令,是指与第一指令不存在依赖关系的并且N条无关指令相互之间不存在依赖关系的指令。比如,N等于4,第一指令为A1,第一指令之后依次排列的4条指令分别为A2、A3、A4和A5。如果A1与A2、A3、A4和A5均不存在依赖关系、A2与A3、A4和A5均不存在依赖关系、A3与A4和A5均不存在依赖关系,A4和A5不存在依赖关系,则表明若排列在第一指令之后的N条指令均为无关指令。
其中,在第一指令之后插入N条无关指令,具体可以是在第一指令之后查找N条无关指令后插入。这N条无关指令不仅与第一指令没有依赖关系,并且相互之间也没有依赖关系。
N大于或等于第一节拍数与有效指令发射槽数量之积,可以保证在第一指令之后插入的N条无关指令执行完毕之后,该第一指令也已经执行完毕,不会出现存在依赖关系的指令同时执行的情况,避免指令执行出错。其中,N可以设置为第一节拍数与有效指令发射槽数量之积。举例来说,如果第一节拍数为8,有效指令发射槽数量为4,则N可以设置为32。
可选的,如果第一指令之后的无关指令数量小于N,则可以在第一指令之后插入空指令,以使第一指令之后的无关指令数量达到N。比如,第一指令之后的无关指令数量为M,M小于N,则可以在第一指令之后插入(N-M)条空指令和M条无关指令。其中,空指令的排列位置只需要位于第一指令之后的N个位置以内即可。举例来说,如果N=32,如果第一指令之后的无关指令数量为20,则可以在第一指令之后插入12条空指令和20条无关指令。
空指令可以是NOP空指令,意味着什么都不做的意思,空指令与任何指令都没有依赖关系,并且空指令之间也没有依赖关系,空指令都是无关指令。发射槽在一个节拍周期执行空指令时,则不会执行任何操作,等待一个节拍周期后执行下一条指令。在第一指令之后的无关指令数量小于N的情况下,通过插入空指令,可以保证在第一指令之后插入的无关指令和空指令执行完毕之后,该第一指令也已经执行完毕,不会出现存在依赖关系的指令同时执行的情况,避免指令执行出错。
可选的,在执行步骤104之后,还可以执行如下步骤:
当汇编程序指令集被读取完毕后,得到重排后的汇编程序指令集,将重排后的汇编程序指令集发送至芯片。
本申请实施例中,汇编程序指令中的所有指令都排序完毕后,才将重排后的汇编程序指令集发送至芯片,由芯片进行执行,无需由芯片进行排序,通过软件程序进行排序,无需在交给芯片后再进行排序,可以在指令执行报错时排除芯片出错的原因,快速找到指令报错原因,无需因为指令排序而对芯片进行重新设计,降低了芯片设计的复杂度。
需要说明的是,步骤101至步骤104是由软件程序实现的,并不是由芯片实现的。
本申请实施例中,对于未经排序的汇编程序指令集,可以通过软件程序进行排序,无需在交给芯片后再进行排序,可以在指令执行报错时排除芯片出错的原因,快速找到指令报错原因,无需因为指令排序而对芯片进行重新设计,降低了芯片设计的复杂度。
请参阅图2,图2是本申请实施例公开的另一种指令排序方法的流程示意图,如图2所示,该指令排序方法包括如下步骤。
201,读取汇编程序指令集中的第一指令,第一指令为汇编程序指令集中的任一条。
202,根据指令与节拍数的映射关系确定与第一指令对应的第一节拍数;获取执行汇编程序指令的芯片拥有的有效指令发射槽数量。
203,确定排列在第一指令之后的N条指令是否均为相关指令,相关指令是与第一指令存在依赖关系的指令或与N条指令中除自身之外的其他指令存在依赖关系的指令。
204,若排列在第一指令之后的N条指令均为相关指令,在第一指令之后插入N条无关指令,无关指令是与第一指令不存在依赖关系的并且N条无关指令相互之间不存在依赖关系的指令;其中,N大于或等于第一节拍数与有效指令发射槽数量之积。
本申请实施例中的步骤201至步骤204的具体实施可以参见图1所示的步骤101至步骤104,此处不再赘述。
205,若排列在第一指令之后的N条指令不是均为无关指令,确定第一相关指令的排列位置,第一相关指令是排列在第一指令之后并且与第一指令位置最近的相关指令。
206,若第一指令与第一相关指令之间间隔M条指令,则在第一指令之后插入N-M条无关指令,M为自然数。
207,若排列在第一指令之后的N条指令均为无关指令,读取汇编程序指令集中的第二指令,第二指令为排列在第一指令之后的指令。
本申请实施例中,如果排列在第一指令之后的N条指令不是均为无关指令,确定排列在第一指令之后并且与第一指令位置最近的第一相关指令。如果第一指令与第一相关指令之间隔着M条无关指令,则只需在第一指令之后插入(N-M)条无关指令,这样,在第一指令之后总共有N条无关指令,后续芯片执行该第一指令时,该第一指令不会与其他与之相关的指令发生冲突。
如果排列在第一指令之后的N条指令均为无关指令,则继续读取汇编程序指令集中的第二指令,第二指令为排列在第一指令之后的指令,继续对下一条指令之后的指令进行排序。
可选的,由于第一指令之后的N条指令都是无关指令,并且相互之间都没有依赖关系,表明第二指令之后的N-1条指令都是无关指令,并且相互之间都没有依赖关系。在执行步骤207之后,可以执行如下步骤:
确定排列在第二指令后的第N条指令是否为相关指令;
若是,则在第二指令之后插入1条无关指令,该无关指令与第一指令之后的N条指令都不相关;
若否,则继续读取汇编程序指令集中的第三指令,第三指令为排列在第二指令之后的指令。对第三指令之后的指令进行排序的方法可以参见上述对第二指令之后的指令的排序方法,此处不再赘述。
本申请实施例可以在第一次对指令进行排序之后,对后续的指令,只需要判断一条指令是否为相关指令即可进行指令排序,降低了相关指令判断的复杂度,提高了指令排序的速度。
请参阅图3,图3是本申请实施例公开的另一种指令排序方法的流程示意图,如图3所示,该指令排序方法包括如下步骤。
301,加载汇编程序指令集,获取汇编程序指令集中每条指令所需的流水线节拍;建立针对汇编程序指令集的指令与节拍数的映射关系。
本申请实施例中,汇编程序指令集中每条指令所需的流水线节拍可以根据指令的类型来确定。比如,MOV指令的节拍数为1(比如,传送立即数)或2(比如,传送地址),PUSH指令的节拍数为2,ADD指令的节拍数为1。可以获取汇编程序指令集中每条指令的类型,根据类型与所需流水线节拍的对应关系确定每条指令对应的节拍数,并建立针对汇编程序指令集的指令与节拍数的映射关系。该映射关系可以存储在存储器中。
本申请实施例可以在进行指令排序之前,建立针对汇编程序指令集的指令与节拍数的映射关系,方便后续根据指令的节拍数确定该指令后面插入的指令的数量,提高指令排序的速度。
可选的,在执行步骤302之前,还可以执行如下步骤:
(21)获取汇编程序指令集中每条指令的源操作数和目的操作数;
(22)根据每条指令的源操作数和目的操作数确定汇编程序指令集中任意两条指令之间的依赖关系。
本申请实施例中,确定两条指令之间是否有依赖关系,可以根据两条指令中一条指令的源操作数与另一条指令的目的操作数是否相同来确定。如果相同,则表明有依赖关系,如果不同,则表明没有依赖关系。可以根据上述步骤所述的方法建立汇编程序指令集中任意两条指令之间的依赖关系,该依赖关系可以形成指令依赖关系图。比如,第一指令的目的操作数与第二指令的源操作数相同,则第二指令需要在第一指令执行之后再执行,则在指令依赖关系图中,第一指令与第二指令之间通过箭头连接,该箭头由第一指令指向第二指令。
本申请实施例可以在进行指令排序之前,先确定汇编程序指令集中任意两条指令之间的依赖关系,方便后续根据依赖关系进行指令排序,提高指令排序的速度。
302,读取汇编程序指令集中的第一指令,第一指令为汇编程序指令集中的任一条。
303,根据指令与节拍数的映射关系确定与第一指令对应的第一节拍数;获取执行汇编程序指令的芯片拥有的有效指令发射槽数量。
304,确定排列在第一指令之后的N条指令是否均为相关指令,相关指令是与第一指令存在依赖关系的指令或与N条指令中除自身之外的其他指令存在依赖关系的指令。
305,若排列在第一指令之后的N条指令均为相关指令,在第一指令之后插入N条无关指令,无关指令是与第一指令不存在依赖关系的并且N条无关指令相互之间不存在依赖关系的指令;其中,N大于或等于第一节拍数与有效指令发射槽数量之积。
本申请实施例中的步骤302至步骤305的具体实施可以参见图1所示的步骤101至步骤104,此处不再赘述。
本申请实施例中,对于未经排序的汇编程序指令集,可以通过软件程序进行排序,无需在交给芯片后再进行排序,可以在指令执行报错时排除芯片出错的原因,快速找到指令报错原因,无需因为指令排序而对芯片进行重新设计,降低了芯片设计的复杂度。还可以在进行指令排序之前,建立针对汇编程序指令集的指令与节拍数的映射关系,方便后续根据指令的节拍数确定该指令后面插入的指令的数量,提高指令排序的速度。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,移动终端为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本申请实施例可以根据上述方法示例对移动终端进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
请参阅图4,图4是本申请实施例公开的一种指令排序装置的结构示意图。如图4所示,该指令排序装置应用于神经网络算法框架,该神经网络算法框架包括多个张量Tensor单元,该指令排序装置400包括读取单元401、第一确定单元402、获取单元403、第二确定单元404和排序单元405,其中:
所述读取单元401,用于读取汇编程序指令集中的第一指令,所述第一指令为所述汇编程序指令集中的任一条;
所述第一确定单元402,用于根据指令与节拍数的映射关系确定与所述第一指令对应的第一节拍数;
所述获取单元403,用于获取执行所述汇编程序指令的芯片拥有的有效指令发射槽数量;
所述第二确定单元404,用于确定排列在所述第一指令之后的N条指令是否均为相关指令,所述相关指令是与所述第一指令存在依赖关系的指令或与所述N条指令中除自身之外的其他指令存在依赖关系的指令;
所述排序单元405,用于在所述第二确定单元404确定排列在所述第一指令之后的N条指令均为相关指令的情况下,在所述第一指令之后插入N条无关指令,所述无关指令是与所述第一指令不存在依赖关系的并且所述N条无关指令相互之间不存在依赖关系的指令;其中,N大于或等于所述第一节拍数与所述有效指令发射槽数量之积。
可选的,该指令排序装置400还包括第三确定单元406,其中:
所述第三确定单元406,用于在所述第二确定单元404确定排列在所述第一指令之后的N条指令不是均为无关指令情况下,确定第一相关指令的排列位置,所述第一相关指令是排列在所述第一指令之后并且与所述第一指令位置最近的相关指令;
所述排序单元405,还用于在所述第三确定单元406确定所述第一指令与所述第一相关指令之间间隔M条指令的情况下,在所述第一指令之后插入N-M条无关指令,M为自然数。
可选的,获取单元403,还用于在所述第二确定单元404确定排列在所述第一指令之后的N条指令均为无关指令的情况下,读取所述汇编程序指令集中的第二指令,所述第二指令为排列在所述第一指令之后的指令。
可选的,所述第二确定单元404确定排列在所述第一指令之后的N条指令是否均为相关指令,具体为:
比较第三指令的源操作数与所述第一指令的目的操作数是否相同,所述第三指令为排列在所述第一指令之后的N条指令中的任一条;
若是,则确定所述第三指令为相关指令;
若否,则比较所述第三指令的源操作数与所述N条指令中除所述第三指令之外的其他指令的目的操作数是否相同,或者,比较所述第三指令的目的操作数与所述N条指令中除所述第三指令之外的其他指令的源操作数是否相同;
若所述第三指令的源操作数与所述N条指令中除所述第三指令之外的其他指令的目的操作数相同,则确定所述第三指令为相关指令;
若所述第三指令的目的操作数与所述N条指令中除所述第三指令之外的其他指令的源操作数相同,则确定所述第三指令为相关指令;
若所述第三指令的源操作数与所述N条指令中除所述第三指令之外的其他指令的目的操作数不相同,并且所述第三指令的目的操作数与所述N条指令中除所述第三指令之外的其他指令的源操作数不相同,则确定所述第三指令为无关指令。
可选的,该指令排序装置400还包括第一处理单元407,其中:
第一处理单元407,用于加载所述汇编程序指令集,获取所述汇编程序指令集中每条指令所需的流水线节拍;建立针对所述汇编程序指令集的指令与节拍数的映射关系。
可选的,该指令排序装置400还包括第二处理单元408,其中:
第二处理单元408,用于获取所述汇编程序指令集中每条指令的源操作数和目的操作数;根据所述每条指令的源操作数和目的操作数确定所述汇编程序指令集中任意两条指令之间的依赖关系。
可选的,该指令排序装置400还包括通信单元409,
通信单元409,用于当所述汇编程序指令集被读取完毕后,得到重排后的汇编程序指令集,将所述重排后的汇编程序指令集发送至所述芯片。
实施图4所示的指令排序装置,对于未经排序的汇编程序指令集,可以通过软件程序进行排序,无需在交给芯片后再进行排序,可以在指令执行报错时排除芯片出错的原因,快速找到指令报错原因,无需因为指令排序而对芯片进行重新设计,降低了芯片设计的复杂度。
请参阅图5,图5是本申请实施例公开的一种移动终端的结构示意图。如图5所示,该移动终端500包括处理器501和存储器502,其中,移动终端500还可以包括总线503,处理器501和存储器502可以通过总线503相互连接,总线503可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(ExtendedIndustry Standard Architecture,简称EISA)总线等。总线503可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中,移动终端500还可以包括输入输出设备504,输入输出设备504可以包括显示屏,例如液晶显示屏。存储器502用于存储包含指令的一个或多个程序;处理器501用于调用存储在存储器502中的指令执行上述图2至图3中的部分或全部方法步骤。
实施图5所示的移动终端,对于未经排序的汇编程序指令集,可以通过软件程序进行排序,无需在交给芯片后再进行排序,可以在指令执行报错时排除芯片出错的原因,快速找到指令报错原因,无需因为指令排序而对芯片进行重新设计,降低了芯片设计的复杂度。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种指令排序方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种指令排序方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种指令排序方法,其特征在于,包括:
读取汇编程序指令集中的第一指令,所述第一指令为所述汇编程序指令集中的任一条;
根据指令与节拍数的映射关系确定与所述第一指令对应的第一节拍数;获取执行所述汇编程序指令的芯片拥有的有效指令发射槽数量;
确定排列在所述第一指令之后的N条指令是否均为相关指令,所述相关指令是与所述第一指令存在依赖关系的指令或与所述N条指令中除自身之外的其他指令存在依赖关系的指令;
若排列在所述第一指令之后的N条指令均为相关指令,在所述第一指令之后插入N条无关指令,所述无关指令是与所述第一指令不存在依赖关系的并且所述N条无关指令相互之间不存在依赖关系的指令;其中,N大于或等于所述第一节拍数与所述有效指令发射槽数量之积。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若排列在所述第一指令之后的N条指令不是均为无关指令,确定第一相关指令的排列位置,所述第一相关指令是排列在所述第一指令之后并且与所述第一指令位置最近的相关指令;
若所述第一指令与所述第一相关指令之间间隔M条指令,则在所述第一指令之后插入N-M条无关指令,M为自然数。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
若排列在所述第一指令之后的N条指令均为无关指令,读取所述汇编程序指令集中的第二指令,所述第二指令为排列在所述第一指令之后的指令。
4.根据权利要求1~2任一项所述的方法,其特征在于,所述确定排列在所述第一指令之后的N条指令是否均为相关指令,包括:
比较第三指令的源操作数与所述第一指令的目的操作数是否相同,所述第三指令为排列在所述第一指令之后的N条指令中的任一条;
若是,则确定所述第三指令为相关指令;
若否,则比较所述第三指令的源操作数与所述N条指令中除所述第三指令之外的其他指令的目的操作数是否相同,或者,比较所述第三指令的目的操作数与所述N条指令中除所述第三指令之外的其他指令的源操作数是否相同;
若所述第三指令的源操作数与所述N条指令中除所述第三指令之外的其他指令的目的操作数相同,则确定所述第三指令为相关指令;
若所述第三指令的目的操作数与所述N条指令中除所述第三指令之外的其他指令的源操作数相同,则确定所述第三指令为相关指令;
若所述第三指令的源操作数与所述N条指令中除所述第三指令之外的其他指令的目的操作数不相同,并且所述第三指令的目的操作数与所述N条指令中除所述第三指令之外的其他指令的源操作数不相同,则确定所述第三指令为无关指令。
5.根据权利要求1~2任一项所述的方法,其特征在于,在所述读取汇编程序指令集中的第一指令之前,所述方法还包括:
加载所述汇编程序指令集,获取所述汇编程序指令集中每条指令所需的流水线节拍;建立针对所述汇编程序指令集的指令与节拍数的映射关系。
6.根据权利要求1~2任一项所述的方法,其特征在于,在所述读取汇编程序指令集中的第一指令之前,所述方法还包括:
获取所述汇编程序指令集中每条指令的源操作数和目的操作数;
根据所述每条指令的源操作数和目的操作数确定所述汇编程序指令集中任意两条指令之间的依赖关系。
7.根据权利要求1~2任一项所述的方法,其特征在于,所述方法还包括:
当所述汇编程序指令集被读取完毕后,得到重排后的汇编程序指令集,将所述重排后的汇编程序指令集发送至所述芯片。
8.一种指令排序装置,其特征在于,所述指令排序装置包括读取单元、第一确定单元、获取单元、第二确定单元和排序单元,其中:
所述读取单元,用于读取汇编程序指令集中的第一指令,所述第一指令为所述汇编程序指令集中的任一条;
所述第一确定单元,用于根据指令与节拍数的映射关系确定与所述第一指令对应的第一节拍数;
所述获取单元,用于获取执行所述汇编程序指令的芯片拥有的有效指令发射槽数量;
所述第二确定单元,用于确定排列在所述第一指令之后的N条指令是否均为相关指令,所述相关指令是与所述第一指令存在依赖关系的指令或与所述N条指令中除自身之外的其他指令存在依赖关系的指令;
所述排序单元,用于在所述第二确定单元确定排列在所述第一指令之后的N条指令均为相关指令的情况下,在所述第一指令之后插入N条无关指令,所述无关指令是与所述第一指令不存在依赖关系的并且所述N条无关指令相互之间不存在依赖关系的指令;其中,N大于或等于所述第一节拍数与所述有效指令发射槽数量之积。
9.一种移动终端,其特征在于,包括处理器以及存储器,所述存储器用于存储一个或多个程序,所述一个或多个程序被配置成由所述处理器执行,所述程序包括用于执行如权利要求1~7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1~7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910398909.XA CN110134438B (zh) | 2019-05-14 | 2019-05-14 | 指令排序方法、装置、移动终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910398909.XA CN110134438B (zh) | 2019-05-14 | 2019-05-14 | 指令排序方法、装置、移动终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110134438A CN110134438A (zh) | 2019-08-16 |
CN110134438B true CN110134438B (zh) | 2021-05-04 |
Family
ID=67573967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910398909.XA Active CN110134438B (zh) | 2019-05-14 | 2019-05-14 | 指令排序方法、装置、移动终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110134438B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113778522B (zh) * | 2021-09-13 | 2023-10-27 | 中国电子科技集团公司第五十八研究所 | 一种发射单元中指令发射处理方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5941983A (en) * | 1997-06-24 | 1999-08-24 | Hewlett-Packard Company | Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues |
US7136938B2 (en) * | 2003-03-27 | 2006-11-14 | International Business Machines Corporation | Command ordering based on dependencies |
CN108304218A (zh) * | 2018-03-14 | 2018-07-20 | 郑州云海信息技术有限公司 | 一种汇编代码的编写方法、装置、系统和可读存储介质 |
-
2019
- 2019-05-14 CN CN201910398909.XA patent/CN110134438B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110134438A (zh) | 2019-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102074961B1 (ko) | 비대칭 실행 유닛들의 효율적인 스케줄링을 위한 방법 및 장치 | |
US10671913B2 (en) | Computation device and method | |
US9262161B2 (en) | Tracking multiple conditions in a general purpose register and instruction therefor | |
EP0464494A2 (en) | A high performance pipelined emulator | |
CN104731560A (zh) | 支持多线程处理的功能单元、处理器及其操作方法 | |
CN111158756B (zh) | 用于处理信息的方法和装置 | |
WO2012106716A1 (en) | Processor with a hybrid instruction queue with instruction elaboration between sections | |
WO2015008115A1 (en) | Method and computer program product for disassembling a mixed machine code | |
US20170337063A1 (en) | Method and apparatus for sorting elements in hardware structures | |
US20230084523A1 (en) | Data Processing Method and Device, and Storage Medium | |
GB2526646A (en) | Decoding base instructions modified by a prefix instruction using modifier bits | |
CN110825437A (zh) | 用于处理数据的方法和装置 | |
CN111258950B (zh) | 原子访存方法、存储介质、计算机设备、装置和系统 | |
CN110134438B (zh) | 指令排序方法、装置、移动终端及存储介质 | |
US9817763B2 (en) | Method of establishing pre-fetch control information from an executable code and an associated NVM controller, a device, a processor system and computer program products | |
US20170242696A1 (en) | System and Method for Contextual Vectorization of Instructions at Runtime | |
CN111221573B (zh) | 一种寄存器访问时序的管理方法、处理器、电子设备及计算机可读存储介质 | |
JP2005128692A (ja) | シミュレータ及びシミュレーション方法 | |
US7278014B2 (en) | System and method for simulating hardware interrupts | |
US7401328B2 (en) | Software-implemented grouping techniques for use in a superscalar data processing system | |
CN106970825B (zh) | 一种基于gdb可配置框架的arm7仿真目标机实现方法 | |
CN104731557A (zh) | 指令执行的控制方法及装置 | |
CN111258653B (zh) | 原子访存方法、存储介质、计算机设备、装置和系统 | |
US20070074186A1 (en) | Method and system for performing reassociation in software loops | |
KR101711388B1 (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220117 Address after: Room 1501, 15 / F, building 2, No. 10 yard, Chaoyang Park South Road, Chaoyang District, Beijing Patentee after: Zheku Technology (Beijing) Co.,Ltd. Address before: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18 Patentee before: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd. |
|
TR01 | Transfer of patent right |