CN112445522A - 指令跳转方法、相关设备及计算机可读介质 - Google Patents
指令跳转方法、相关设备及计算机可读介质 Download PDFInfo
- Publication number
- CN112445522A CN112445522A CN201910829878.9A CN201910829878A CN112445522A CN 112445522 A CN112445522 A CN 112445522A CN 201910829878 A CN201910829878 A CN 201910829878A CN 112445522 A CN112445522 A CN 112445522A
- Authority
- CN
- China
- Prior art keywords
- instruction
- block
- jump
- original
- sub
- 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 description 46
- 230000015654 memory Effects 0.000 claims abstract description 37
- 238000012545 processing Methods 0.000 claims abstract description 17
- 230000003068 static effect Effects 0.000 claims description 87
- 238000013507 mapping Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 6
- 230000009191 jumping Effects 0.000 claims description 5
- 238000005192 partition Methods 0.000 claims description 3
- 230000011218 segmentation Effects 0.000 claims description 3
- 239000000126 substance Substances 0.000 claims description 2
- 238000003672 processing method Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 7
- 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
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000006467 substitution reaction 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/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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明实施例公开了一种计算设备,包括:包括处理器、存储器以及总线,所述处理器和所述存储器通过所述总线连接,所述存储器用于存储指令,所述处理器用于调用所述存储器中存储的指令,用于执行特定的数据处理方法,以适应不同规模的数据运算,提升数据处理的实用性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种指令跳转方法、相关设备及计算机可读介质。
背景技术
目前,计算系统可对网络模型中包括的每个网络层进行层匹配和编译,获得包括至少一个指令在内的指令队列。然后根据指令随机存取存储器(random access memory,RAM)大小将指令队列中的指令依次装入指令块offchip_block中。其中,每个指令块之间按照指令存储的先后顺序进行链接。在运行过程中系统仅需要顺序加载指令块,以执行该指令块中的指令完成相应地任务。
然而在实践中发现,系统对指令(具体可为指令块中指令)是按照顺序执行的,无法实现指令块之间的相互跳转,无法实现特定场景下的指令跳转运行。
发明内容
本发明实施例提供一种指令跳转方法,能够解决现有技术中存在的无法实现指令块间相互跳转的问题。
第一方面,本发明实施例提供了一种指令跳转方法,该方法包括:计算设备对指令队列进行切分获得至少一个原始指令块,该指令队列中包括至少一个指令。原始指令块中包括至少一个指令子块,每个指令子块中包括指令队列中被切分的至少一个指令。进一步计算设备可在原始指令块中插入跳转指令,以便后续根据该跳转指令实现原始指令块的跳转(具体可为原始指令块、原始指令块中的指令子块或指令的跳转)。
第二方面,本发明实施例提供了一种计算设备,该计算设备包括用于执行上述第一方面的方法的单元。
第三方面,本发明实施例提供了另一种计算设备,包括处理器、存储器以及总线,所述处理器和所述存储器通过所述总线连接,所述存储器用于存储指令,所述处理器用于调用所述存储器中存储的指令,用于执行上述第一方面的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
通过实施本发明实施例,能够解决现有技术中无法实现指令块相互跳转的问题,有利于提升指令运算的效率和实用性。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据处理方法的流程示意图。
图2是本发明实施例提供的一种指令块封装的示意图。
图3是本发明实施例提供的一种计算设备的结构示意图。
图4是本发明实施例提供的另一种计算设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为解决现有技术无法实现指令块跳转的问题,本申请特提出一种指令跳转方法和所述方法适用的相关设备。请参见图1,是本发明实施例提供的一种指令跳转方法的流程示意图。如图1所示方法包括如下实施步骤:
步骤S101、计算设备对指令队列进行切分,获得至少一个原始指令块。
本申请中,计算设备可对网络模型中包括的每个网络层进行层匹配和指令编译,以生成指令队列rawop_list。该指令队列中包括有至少一个指令rawop,例如卷积指令、池化指令、激活指令或其他功能指令等。
计算设备可对该指令队列进行切分,以获得一个或多个指令子块;然后再由指令子块封装获得至少一个原始指令块,每个原始指令块中包括有至少一个指令子块,每个指令子块中包括有指令队列中被切分的至少一个指令。具体的,受限于指令存储器RAM大小(即芯片支持运行的指令大小),计算设备可按照预设的可切分位置对指令队列raw_op进行切分从而获得拆分后的至少一个指令,该可切分位置为系统自定义设置的,例如可为用于打断指令流水顺序执行的nop指令,或指令代码中出现循环(if else)的开始位置或结束位置等。
计算设备可根据指令RAM大小,对拆分后的至少一个指令按照顺序进行拼接,从而获得一个或多个指令子块offchip_block,每个指令子块的大小取决于指令RAM大小,任意两个指令子块的大小可以相同,也可不同,不做限定。可选地,计算设备可用指令子块标识offchip_id来区分不同的指令子块,例如具体可对指令子块进行编号等,该子块标识包括但不限于编号、身份标识或其他用于识别指令子块的信息。
进一步计算设备根据获得的指令子块,再次封装得到一个或多个原始指令块。每个原始指令块中包括有一个或多个指令子块。相应地,每个指令块对应有各自的指令块标识op_id,以区分不同的指令块。可选地,计算设备根据组成指令块的指令子块的关系,可生成指令块标识op_id和指令子块标识offchip_id之间的映射关系。
在实际应用中考虑到网络模型支持不同尺寸输入数据块(例如不同宽度W和高度H的输入数据块HW)处理,在前期指令编译过程中指令块会有动态指令块和静态指令块之分。其中,静态指令块中包括有至少一个静态指令,每个静态指令均用于实现数据的实际逻辑运算,例如乘加运算、卷积运算等。动态指令块中包括有至少一个动态指令,每个动态指令均用于控制数据的逻辑运算,例如控制调用哪个静态指令块中的静态指令实现数据的逻辑运算等。
换句话说,动态指令块用于实现不同静态指令块间的调度,静态指令块用于实现某规模大小的输入数据的逻辑运算,不同规模大小的输入数据对应支持有相同或者不同的静态指令块,本申请不做限定。
在实际数据处理过程中,动态指令块通常仅有一个,静态指令块的数量并不做限定,其可为一个或多个。具体实现中,计算设备将根据动态指令块中包含动态指令的指示,调用某个静态指令块对待处理数据执行相应地逻辑运算。在静态指令块执行完逻辑运算后需跳转回到动态指令块中的跳转位置,以根据动态指令块中包含的下条动态指令,继续完成下条动态指令所指示的逻辑运算。该过程中涉及的指令块间跳转将在本申请下文详述。
此外,为方便描述本申请下文将静态指令块和动态指令块可统称为指令块,将静态指令和动态指令统称为指令。在一些实施例中,本申请涉及的指令块可为静态指令块和动态指令块中的任意一种或多种的组合,指令可为静态指令和动态指令中的任意一种或多种的组合,本申请不做限定。
由于不同指令块(例如动态指令块和静态指令块)之间没有分割标识,实际运行过程中计算设备无法识别指令块。为解决该问题,本申请预先在指令队列中插入(或配置)有指令块分割标识,用以区分指令队列中包含的每个指令块。该指令块分割标识可包括有指令块(具体可为动态指令块和静态指令块)的开始标识和接收标识。在实际应用中,该开始标识和结束标识可分别用一个指令来插入以区分。
相应地,计算设备根据指令块分割标识中的开始标识和结束标识,可获知每个指令块中包含的指令条数。进而计算设备可根据指令条数对指令队列rawop_list进行切分,以获得至少一个原始指令块op_block。
可选地,在实际应用中计算设备根据指令RAM大小切分rawop_list获得一个或多个指令子块offchip-block后,也可根据rawop_list中包含的指令块分割标识,对这些offchip-block按照顺序进行组合,以获得一个或多个原始指令块op_block。
步骤S102、计算设备在原始指令块中插入跳转指令,以便后续根据跳转指令实现原始指令块的跳转。
为实现指令块(也可为指令块中的指令子块)的跳转,可在原始指令块中插入跳转指令,便于后续根据该跳转指令实现原始指令块的跳转。下面详述几种可能的实施方式。
作为一种可能的实施方式,原始指令块为原始静态指令块,为实现静态指令块到动态指令块的跳转,本申请需在原始静态指令块中包含的最后一个指令子块offchip-block后面插入第一跳转指令,便于计算设备在运行完该最后一个指令子块offchip-block时(具体可为运行到该offchip-block中包含的最后一个指令时),根据第一跳转指令的指示从原始静态指令块跳转到待跳转动态指令块,实现静态指令块到动态指令块的跳转。
具体的,本申请中静态指令块到动态指令块跳转所使用的第一跳转指令可以为inst_jump,该第一跳转指令可由一个或多个指令组成,每个指令各自的跳转逻辑不做限定。当该第一跳转指令中包含多个指令时,也可被称为跳转指令集合。示例性地,本申请下文以第一跳转指令包括载入Instload指令和分支Cbranch指令为例进行指令块跳转的说明,Instload指令用于载入指令块,Cbranch指令用于确定指令块中待跳转的指令位置(也可称为跳转位置),即是待跳转所需执行的指令所在的存储位置。
在计算设备将第一跳转指令插入原始指令块中(具体可插入到原始指令块中的最后一个指令子块offchip-block后)时,计算设备可记录该第一跳转指令的插入位置(例如原始指令块中的最后一个指令子块的标识offchip-id)、控制原始指令块运行的动态指令块(也可称为待跳转动态指令块),具体的也可为该动态指令块中被运行的某个指令子块的标识offchip-id、以及该待跳转动态指令块中控制执行完原始指令块的下一个待跳转运行指令的位置(也可简称为待跳转动态指令块中待跳转运行的指令位置或跳转位置pos)。进一步计算设备可根据上述记录的各参数,生成位置映射表。
相应地在实际运行过程中,当计算设备执行完原始静态指令中的最后一个指令子块offchip-block时,具体的执行完该offchip-block中包含的最后一个指令后接着执行第一跳转指令时,计算设备可先获取第一跳转指令对应生成的位置映射表,从该表中获得待跳转动态指令和该待跳转动态指令中的待跳转指令位置。进一步根据第一跳转指令的指示,从第一静态指令块跳转到该待跳转动态指令中的待跳转指令位置pos处,实现第一静态指令块到待跳转动态指令块的跳转。其中,该第一静态指令块为在原始静态指令块中插入第一跳转指令后所形成的指令块。
以第一跳转指令包括Instload指令和Cbranch指令为例,具体的计算设备将根据Instload指令载入待跳转动态指令,然后根据Cbranch指令将预设位置PC设置为pos,以实现第一静态指令块到待跳转动态指令中的待跳转指令位置pos处的跳转,从而实现了第一静态指令块到待跳转动态指令块的跳转。
可选地,计算设备可在动态指令块中包含的最后一个指令子块后面插入结束指令finish,以指示结束动态指令块中所有指令的执行。
作为另一种可能的实施方式,原始指令块为原始动态指令块,为实现动态指令块到静态指令块的跳转,本申请需在原始动态指令块中的待运算指令后插入第二跳转指令,该待运算指令为原始动态指令块中需要调用静态指令块实现数据逻辑运算的动态指令。便于后续计算设备在运行完原始动态指令块中的待运算指令后,可根据第二跳转指令的指示从该原始动态指令块跳转到相应地待跳转静态指令块,实现动态指令块到静态指令块的跳转。
参考前述关于第一跳转指令的相关阐述,本申请涉及的第二跳转指令同样可为inst_jump,示例性地其可由载入Instload指令和分支Cbranch指令组成。在计算设备将第二跳转指令插入原始动态指令块中(具体可插入到原始动态指令块中的待运算指令后)后,可形成获得第一动态指令块。
相应地在实际运行过程中,当计算设备运行完原始动态指令块中的待运算指令接着将运行第二跳转指令时,计算设备可根据第二跳转指令的指示,加载待跳转静态指令块,并回填该待跳转静态指令块中包含的每个指令子块各自的指令位置(即每个指令子块各自在存储器中的存储位置),实现第一动态指令块到待跳转静态指令块的跳转。
举例来说,以第二跳转指令包括Instload指令和Cbranch指令为例,具体的计算设备将根据Instload指令的指示载入待跳转静态指令,并将该待跳转静态指令中包含的每个指令子块的指令地址回填至相应地寄存器中。然后根据Cbranch指令的指示将预设位置PC设置为0,从而实现第一动态指令块到待跳转静态指令的跳转。
作为另一种可能的实施方式,不论原始指令块为静态指令块或动态指令块,该原始指令块中包括至少两个指令子块。为实现同一指令块中相邻两个指令子块的跳转,计算设备可在该同一指令块中除最后一个指令子块外的其他指令子块后插入第三跳转指令。便于后续计算设备在运行完同一指令块中除最后一个指令子块外的任一指令子块时,可根据第三跳转指令的指示实现两个相邻指令子块间的跳转。
本申请下文以原始指令块中包括第一指令子块和第二指令子块为例进行相关内容说明,第二指令子块为第一指令子块相邻的下一个指令子块。具体的,为实现第一指令子块到第二指令子块的跳转,计算设备需在原始指令块中包含的第一指令子块后插入第三跳转指令,以形成并获得新建指令块。
相应地在实际运行过程中,计算设备在运行完第一指令子块(具体可为执行完第一指令子块中包含的最后一个指令)接着运行第三跳转指令时,计算设备可根据第三跳转指令的指示,对第一指令子块的标识offchip-id加1,获得待跳转的下个指令子块offchip-block的标识,这里即是第二指令子块的标识、同时获得第二指令子块。进而加载第二指令子块,实现第一指令子块到第二指令子块的跳转。
在实际应用中,本申请涉及的跳转指令可由自定义设置的一个或多个跳转逻辑实现,每个跳转逻辑可封装为一个指令。换句话说,本申请中涉及的跳转指令可包括至少一个指令,每个指令各自对应的跳转逻辑可以相同,也可不同,本发明并不做限定。
为帮助更好地理解本发明实施例,请参见图2是本发明实施例提供的一种指令块封装的具体示例图。如图2示例中,以指令队列rawop-list可封装为一个动态指令块和两个静态指令块为例,其中动态指令块中包括有两个动态指令子块,每个静态指令块中包括有3个静态指令子块,如图动态指令子块和静态指令子块各自的指令大小并不相同。
如图所示,为区分指令队列rawop-list中包含的各个指令块,rawop-list中预先配置有4个指令块分割标识,该分割标识具体可为指令块的开始标识或结束标识,图示分别为标识1~标识4。计算设备根据预设可切分位置对rawop-list进行切分获得如图的动态指令块和两个静态指令块,动态指令块中包括2个动态指令子块,每个静态指令块中包括3个静态指令子块,图示对应分别为指令子块1~指令子块18。
为实现指令块之间的跳转,如图在静态指令块中最后一个指令子块后可插入相应地跳转指令,以实现静态指令块到动态指令块的跳转。可选地,计算设备还可根据实际需求在动态指令块中指定指令后插入相应地跳转指令,以实现动态指令块到静态指令块的跳转,进而使用跳转的静态指令块完成数据的逻辑运算。示例性地如图所示,计算设备以动态指令块中某个指令后插入一个跳转指令为例。
为实现任一指令块中指令子块间的跳转,可在该任一指令块中除最后一个指令子块外的指令子块后插入相应地跳转指令,以实现该任一指令块中相邻两个指令子块间的跳转。例如图示中,计算设备可分别在动态指令块中指令子块1后面、静态指令块中指令子块3和4以及静态指令块中指令子块6和7后面分别插入相应地跳转指令,以实现同一指令块中相邻两个指令子块的跳转。关于跳转指令的插入以及如何根据跳转指令实现指令块或指令子块间的跳转,具体可对应参考前述图1所述实施例中的相关介绍,这里不再赘述。
通过实施本发明实施例,能够解决现有技术中无法实现指令块间跳转的问题,从而提升了指令块跳转的可实现性和实用性。
请参见图3,是本发明实施例提供的一种计算设备的结构示意图。如图3所示的计算设备300包括切分模块302和处理模块304。其中,
所述切分模块302用于对指令队列进行切分,获得至少一个原始指令块,所述指令队列包括至少一个指令,所述原始指令块中包括至少一个指令子块,每个所述指令子块中包括所述指令队列中被切分的至少一个指令;
所述处理模块304用于在所述原始指令块中插入跳转指令,以根据所述跳转指令实现所述原始指令块的跳转。
在一些可能的实施例中,所述原始指令块为原始静态指令块,所述原始静态指令块中包括的指令用于实现数据的逻辑运算,所述处理模块304具体用于在所述原始静态指令块包括的至少一个指令子块中的最后一个指令子块后,插入第一跳转指令获得第一静态指令块,以根据所述第一跳转指令实现所述第一静态指令块到待跳转动态指令块的跳转。
在一些可能的实施例中,所述处理模块304还用于记录所述第一跳转指令插入的所述原始静态指令块中的最后一个指令子块、控制所述原始静态指令块运行的待跳转动态指令块和所述待跳转动态指令块中待跳转运行的指令位置,并生成位置映射表;在运行完所述原始静态指令中的最后一个指令子块时,根据获取的所述位置映射表,确定所述待跳转动态指令块和所述待跳转动态指令块中的待跳转指令位置;根据所述第一跳转指令,从所述第一静态指令块跳转到所述待跳转动态指令块中的待跳转指令位置,实现所述第一静态指令块到所述待跳转动态指令块的跳转。
在一些可能的实施例中,所述第一跳转指令包括载入Instload指令和分支Cbranch指令,所述处理模块304具体用于根据所述Instload指令载入所述待跳转动态指令块,根据所述Cbranch指令跳转到所述待跳转动态指令块中的待跳转指令位置。
在一些可能的实施例中,所述原始指令块为原始动态指令块,所述原始动态指令块中包括的指令用于控制数据的逻辑运算,所述处理模块304具体用于在所述原始动态指令块中的待运算指令后插入第二跳转指令获得第一动态指令块,以根据所述第二跳转指令实现所述第一动态指令块到待跳转静态指令块的跳转,所述待运算指令为所述原始动态指令块中需要调用所述待跳转静态指令块进行数据的逻辑运算的指令。
在一些可能的实施例中,所述处理模块304还用于在运行完所述待运算指令时,根据所述第二跳转指令加载待跳转静态指令块并回填所述待跳转静态指令块中每个指令子块的指令地址,实现所述第一动态指令块到所述待跳转静态指令块的跳转。
在一些可能的实施例中,所述原始指令块包括第一指令子块和第二指令子块在内的至少两个指令子块,所述处理模块304具体用于在所述原始指令块中的第一指令子块后插入第三跳转指令获得新建指令块,以根据所述第三跳转指令实现所述第一指令子块到所述第二指令子块的跳转。
在一些可能的实施例中,所述处理模块304还用于在运行完所述第一指令子块时,根据所述第三跳转指令加载所述第二指令子块,实现所述第一指令子块到所述第二指令子块的跳转。
在一些可能的实施例中,所述指令队列中包括有预配置好的指令块分割标识,所述指令块分割标识包括每个指令块的开始标识和结束标识,用于区分所述指令队列中包括的指令块。
在一些可能的实施例中,所述切分模块302具体用于根据预设的切分位置对指令队列进行切分,将切分后的指令队列按照预设指令存储器大小进行拼接,以获得至少一个指令子块;根据所述指令队列中的指令块分割标识,对所述至少一个指令子块进行组合,以获得至少一个原始指令块。
可选地,计算设备300还包括有存储模块306,其存储有用于实现计算设备300的相关操作的程序代码。在实际应用中,本发明实施例中的计算设备涉及的各模块或单元具体可通过软件程序或硬件实现。当由软件程序实现时,计算设备涉及的各模块或单元均为软件模块或软件单元,当由硬件实现时,计算设备涉及的各模块或单元可以通过专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complexprogrammable logical device,CPLD),现场可编程门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合,本发明不做限定。
需要说明的,图3仅仅是本申请实施例的一种可能的实现方式,实际应用中,计算设备中还可以包括更多或更少的部件,这里不作限制。关于本发明实施例中未示出或未描述的内容,可参见前述方法实施例中的相关阐述,这里不再赘述。
请参见图4,是本发明实施例提供的一种计算设备的结构示意图。如图4所示的计算设备400包括一个或多个处理器401、通信接口402和存储器403,处理器401、通信接口402和存储器403可通过总线方式连接,也可通过无线传输等其他手段实现通信。本发明实施例以通过总线404连接为例其中,该存储器403用于存储指令,该处理器401用于执行该存储器403存储的指令。该存储器403存储程序代码,且处理器401可以调用存储器403中存储的程序代码执行如下操作:
对指令队列进行切分,获得至少一个原始指令块,所述指令队列包括至少一个指令,所述原始指令块中包括至少一个指令子块,每个所述指令子块中包括所述指令队列中被切分的至少一个指令;
在所述原始指令块中插入跳转指令,以根据所述跳转指令实现所述原始指令块的跳转。
关于本发明实施例中未示出或未描述的内容,具体可参见前述图1-图3所述实施例中的相关阐述,这里不再赘述。
应当理解,在本发明实施例中,所称处理器401可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
通信接口402可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他模块或装置设备进行通信。
存储器403可以包括易失性存储器(Volatile Memory),例如随机存取存储器(Random Access Memory,RAM);存储器也可以包括非易失性存储器(Non-VolatileMemory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器还可以包括上述种类的存储器的组合。存储器可用于存储一组程序代码,以便于处理器调用存储器中存储的程序代码以实现本发明实施例中涉及的上述各功能模块的功能。
需要说明的,图4仅仅是本发明实施例的一种可能的实现方式,实际应用中,计算设备还可以包括更多或更少的部件,这里不作限制。关于本发明实施例中未示出或未描述的内容,可参见前述方法实施例中的相关阐述,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在处理器上运行时,图1所示的方法流程得以实现。
本发明实施例还提供一种计算机程序产品,当所述计算机程序产品在处理器上运行时,图1实施例中所示的方法流程得以实现。
所述计算机可读存储介质可以是前述任一实施例所述的计算设备的内部存储单元,例如计算设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算设备的外部存储设备,例如所述计算设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述客户端的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述计算设备所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (13)
1.一种指令跳转方法,其特征在于,包括:
计算设备对指令队列进行切分,获得至少一个原始指令块,所述指令队列包括至少一个指令,所述原始指令块中包括至少一个指令子块,每个所述指令子块中包括所述指令队列中被切分的至少一个指令;
在所述原始指令块中插入跳转指令,以根据所述跳转指令实现所述原始指令块的跳转。
2.根据权利要求1所述的方法,其特征在于,所述原始指令块为原始静态指令块,所述原始静态指令块中包括的指令用于实现数据的逻辑运算,
所述在所述原始指令块中插入跳转指令,以根据所述跳转指令实现所述原始指令块的跳转包括:
在所述原始静态指令块包括的至少一个指令子块中的最后一个指令子块后,插入第一跳转指令获得第一静态指令块,以根据所述第一跳转指令实现所述第一静态指令块到待跳转动态指令块的跳转。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
记录所述第一跳转指令插入的所述原始静态指令块中的最后一个指令子块、控制所述原始静态指令块运行的待跳转动态指令块和所述待跳转动态指令块中待跳转运行的指令位置,并生成位置映射表;还包括:
在运行完所述原始静态指令中的最后一个指令子块时,根据获取的所述位置映射表,确定所述待跳转动态指令块和所述待跳转动态指令块中的待跳转指令位置;
根据所述第一跳转指令,从所述第一静态指令块跳转到所述待跳转动态指令块中的待跳转指令位置,实现所述第一静态指令块到所述待跳转动态指令块的跳转。
4.根据权利要求3所述的方法,其特征在于,所述第一跳转指令包括载入Instload指令和分支Cbranch指令,
所述根据所述第一跳转指令,从所述第一静态指令块跳转到所述待跳转动态指令块中的待跳转指令位置包括:
根据所述Instload指令载入所述待跳转动态指令块,根据所述Cbranch指令跳转到所述待跳转动态指令块中的待跳转指令位置。
5.根据权利要求1所述的方法,其特征在于,所述原始指令块为原始动态指令块,所述原始动态指令块中包括的指令用于控制数据的逻辑运算,
所述在所述原始指令块中插入跳转指令,以根据所述跳转指令实现所述原始指令块的跳转包括:
在所述原始动态指令块中的待运算指令后插入第二跳转指令获得第一动态指令块,以根据所述第二跳转指令实现所述第一动态指令块到待跳转静态指令块的跳转,所述待运算指令为所述原始动态指令块中需要调用所述待跳转静态指令块进行数据的逻辑运算的指令。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在运行完所述待运算指令时,根据所述第二跳转指令加载待跳转静态指令块并回填所述待跳转静态指令块中每个指令子块的指令地址,实现所述第一动态指令块到所述待跳转静态指令块的跳转。
7.根据权利要求1所述的方法,其特征在于,所述原始指令块包括第一指令子块和第二指令子块在内的至少两个指令子块,所述在所述原始指令块中插入跳转指令,以根据所述跳转指令实现所述原始指令块的跳转包括:
在所述原始指令块中的第一指令子块后插入第三跳转指令获得新建指令块,以根据所述第三跳转指令实现所述第一指令子块到所述第二指令子块的跳转。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在运行完所述第一指令子块时,根据所述第三跳转指令加载所述第二指令子块,实现所述第一指令子块到所述第二指令子块的跳转。
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述指令队列中包括有预配置好的指令块分割标识,所述指令块分割标识包括每个指令块的开始标识和结束标识,用于区分所述指令队列中包括的指令块。
10.根据权利要求9所述的方法,其特征在于,所述对指令队列进行切分,获得至少一个原始指令块包括:
根据预设的切分位置对指令队列进行切分,将切分后的指令队列按照预设指令存储器大小进行拼接,以获得至少一个指令子块;
根据所述指令队列中的指令块分割标识,对所述至少一个指令子块进行组合,以获得至少一个原始指令块。
11.一种计算设备,其特征在于,包括切分模块和处理模块;其中,
所述切分模块,用于对指令队列进行切分,获得至少一个原始指令块,所述指令队列包括至少一个指令,所述原始指令块中包括至少一个指令子块,每个所述指令子块中包括所述指令队列中被切分的至少一个指令;
所述处理模块,用于在所述原始指令块中插入跳转指令,以根据所述跳转指令实现所述原始指令块的跳转。
12.一种计算设备,其特征在于,包括处理器、存储器以及总线,所述处理器和所述存储器通过所述总线连接,所述存储器用于存储指令,所述处理器用于调用所述存储器中存储的指令,用于执行如上权利要求1-10中任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910829878.9A CN112445522A (zh) | 2019-09-02 | 2019-09-02 | 指令跳转方法、相关设备及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910829878.9A CN112445522A (zh) | 2019-09-02 | 2019-09-02 | 指令跳转方法、相关设备及计算机可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112445522A true CN112445522A (zh) | 2021-03-05 |
Family
ID=74734362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910829878.9A Pending CN112445522A (zh) | 2019-09-02 | 2019-09-02 | 指令跳转方法、相关设备及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112445522A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101872393A (zh) * | 2009-04-23 | 2010-10-27 | 李嘉 | 一种Java程序防篡改响应方案 |
CN102012858A (zh) * | 2010-06-29 | 2011-04-13 | 北京飞天诚信科技有限公司 | 一种模拟软件运行的方法 |
CN102163143A (zh) * | 2011-04-28 | 2011-08-24 | 北京北大众志微系统科技有限责任公司 | 一种实现值关联间接跳转预测的方法 |
KR101837337B1 (ko) * | 2017-02-14 | 2018-04-19 | 한양대학교 에리카산학협력단 | 네이티브코드에서 기본 블록들 간의 모든 상대주소 점프를 간접 점프로 변환하여 분석도구의 cfg 생성을 방해하는 방법 및 장치 |
-
2019
- 2019-09-02 CN CN201910829878.9A patent/CN112445522A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101872393A (zh) * | 2009-04-23 | 2010-10-27 | 李嘉 | 一种Java程序防篡改响应方案 |
CN102012858A (zh) * | 2010-06-29 | 2011-04-13 | 北京飞天诚信科技有限公司 | 一种模拟软件运行的方法 |
CN102163143A (zh) * | 2011-04-28 | 2011-08-24 | 北京北大众志微系统科技有限责任公司 | 一种实现值关联间接跳转预测的方法 |
KR101837337B1 (ko) * | 2017-02-14 | 2018-04-19 | 한양대학교 에리카산학협력단 | 네이티브코드에서 기본 블록들 간의 모든 상대주소 점프를 간접 점프로 변환하여 분석도구의 cfg 생성을 방해하는 방법 및 장치 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108958714B (zh) | 业务组件式开发方法、装置、计算机设备及存储介质 | |
CN107045438B (zh) | 一种应用顶层视图处理方法、装置及组件 | |
CN110908697B (zh) | 一种资源打包方法、装置、服务器及存储介质 | |
CN109933350B (zh) | 在应用中嵌入代码的方法、装置及电子设备 | |
CN106843901B (zh) | 一种页面渲染和验证的方法和装置 | |
CN110162344B (zh) | 一种隔离限流的方法、装置、计算机设备及可读存储介质 | |
CN112181522A (zh) | 数据处理的方法、装置以及电子设备 | |
CN111158756A (zh) | 用于处理信息的方法和装置 | |
CN112182452A (zh) | 页面组件渲染处理方法、装置、设备及计算机可读介质 | |
CN108874379B (zh) | 页面的处理方法及装置 | |
CN113407254B (zh) | 表单生成方法、装置、电子设备及存储介质 | |
CN109766123A (zh) | 应用程序封装方法及装置 | |
CN112445522A (zh) | 指令跳转方法、相关设备及计算机可读介质 | |
CN113296788B (zh) | 指令调度方法、装置、设备及存储介质 | |
CN116263858A (zh) | 一种生成码流文件的方法、装置、计算机存储介质及终端 | |
CN104461938A (zh) | 数据读取方法和装置 | |
CN107092601B (zh) | 资源文件构建方法、资源文件应用方法及装置 | |
CN110825528B (zh) | 资源管理方法、装置及设备 | |
CN114115864A (zh) | 一种生成界面的方法、装置及电子设备 | |
CN110083469B (zh) | 一种异构硬件组织运行统一内核方法及系统 | |
CN113361220A (zh) | 一种对集成电路设计自动裁剪的验证环境构建方法及装置 | |
CN113033221A (zh) | 智能卡发卡方法、计算机装置及计算机可读存储介质 | |
CN112445525A (zh) | 数据处理方法、相关设备及计算机可读介质 | |
CN111427550A (zh) | 一种对象创建方法、终端装置及存储介质 | |
US11314626B2 (en) | Method and system for managing continuous delivery pipeline testing against singleton instance of applications |
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 |