CN110688153B - 一种指令分支执行控制方法及相关设备、指令结构 - Google Patents
一种指令分支执行控制方法及相关设备、指令结构 Download PDFInfo
- Publication number
- CN110688153B CN110688153B CN201910832298.5A CN201910832298A CN110688153B CN 110688153 B CN110688153 B CN 110688153B CN 201910832298 A CN201910832298 A CN 201910832298A CN 110688153 B CN110688153 B CN 110688153B
- Authority
- CN
- China
- Prior art keywords
- instruction
- branch
- field
- control register
- execution
- 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 89
- 238000012545 processing Methods 0.000 claims abstract description 67
- 238000013500 data storage Methods 0.000 claims description 13
- 238000007667 floating Methods 0.000 description 26
- 230000006870 function Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 16
- 230000001343 mnemonic effect Effects 0.000 description 4
- 239000002699 waste material Substances 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000005265 energy consumption Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 101100396933 Pseudomonas aeruginosa (strain ATCC 15692 / DSM 22644 / CIP 104116 / JCM 14847 / LMG 12228 / 1C / PRS 101 / PAO1) imm2 gene Proteins 0.000 description 2
- 101100396930 Pseudomonas aeruginosa imm1 gene Proteins 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012360 testing method 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明实施例公开一种指令分支执行控制方法及相关设备、指令结构,对于指令存在分支判断的情形,采用使能字段调制命令执行,使能字段的控制支持分支判断结果控制与外部输入控制等形式,使得对于指令的控制更为灵活;其中,设置独立的控制寄存器用于存储分支判断结果,直接决定指令字段是否解码和执行;实现分支指令顺序执行,即按序对每个命令均取指令并解码使能字段,在保证CPU运行连贯不跳转的同时,通过控制后续指令字段,实现对分支指令的选择性运行;而无论是假设不存在分支继续执行指令,分支发生时丢弃已取指令的操作的方式,还是提前执行分支指令进行并行运算的方式,均存在指令跳转带来的CPU流水线暂停和额外增加控制逻辑的问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种指令分支执行控制方法及相关设备、指令结构。
背景技术
中央处理器(CPU)执行一条指令的过程可以分为5个阶段:取指令、指令译码、执行指令、访存取数、结果写回,请参见图1,图1示意了单个指令的执行过程,首先从指令存储器中取出指令并将其送至指令寄存器中,再读指令寄存器中的指令并对指令进行译码(也即解码),根据指令的译码结果执行操作,当指令操作涉及操作数处理时,执行指令操作时,将从数据存储器中读取操作数进行处理以得到处理结果,最后将操作数的处理结果写到目的寄存器中。
而CPU除了顺序执行指令之外,还可以根据分支判断条件选择不同的分支指令进行执行,而跳过不符合分支判断条件的分支指令,例如,下面是一段分支执行程序代码:
对应的指令顺序如下:
CMP Rx Ra Rb ……PC-2
MUL Pr Rc Rd ……PC-3
STR Rr Pr ……PC-4
ADD S Rc Rd ……PC-5
STR Rr S ……PC-6
上述指令存储在一块专用的指令存储器(imem)中,取指模块根据PC值(例如PC-2、PC-3等)指示的位置,读取imem中的指令并执行,一般PC值顺序执行,逐个加1。现有指令分支执行的过程如图2a和图2b所示,具体分支执行过程如下:
1.图2a中,当PC值执行到地址2,取指模块从指令存储器imem中PC值2对应的地址取出相应指令。
2.PC-2指令是一个条件分支判断指令(即if(a>b)),指令执行模块先执行操作数a,b的大小判断指令,并将大小判断指令的操作结果X保存在存储单元(如图2b)或标识位寄存器地址中。
3.等待条件分支判断指令执行完成后,指令执行模块读取上述第2点中生成并保存的结果,根据该条件分支判断指令的结果,如果此时a<=b,则分支判断的结果X为0,执行分支PC-5~PC-6对应的指令;若a>b,则X为1,执行分支PC-3~PC-4对应的指令。
值得注意的是,取指模块和指令执行模块的工作在硬件上是并行工作的,所以当指令执行过程中出现分支时,为了维持CPU流水线(CPU流水线技术是一种将指令分解为多步,并让不同指令的各步操作重叠,从而实现几条指令并行处理,以加速程序运行过程的技术。指令的每步有各自独立的电路来处理,每完成一步,就进到下一步,而前一步则处理后续指令)的运行,每个时钟周期都必须取指令,但同时必须等到PC-2的指令完全执行完毕(判断结果读取到存储单元中)能确定分支是否发生,这种为了确保取出正确指令而导致的延迟称为分支冒险。
分支冒险带来了CPU执行较慢的结果,因为CPU采用阻塞(如图2a和图2b所示实例中将指令停止并等待PC-2对应的指令执行完毕,等待其得出判断结果以完成分支判断,才能决定执行PC-3或PC-5对应的指令),所以这种分支跳转会对CPU的性能产生很大的影响,导致CPU资源浪费。
另外,针对分支冒险的处理方法,现有技术的一种解决方法是假设分支不存在,继续顺序执行指令,当发生分支时,则丢弃已经取指译码的指令,这种方式能将分支冒险的可能性减半,但会造成指令操作浪费;而另一种解决方法是将条件分支判断指令和分支指令并行执行,虽然可以加快指令的运行速度,但是需要增加额外的运算单元以实现指令并行运算,并且将由于寄存器占用造成运行逻辑复杂。
另一方面,现有的指令执行控制方法仅能按照预先编写好的指令进行指令执行,指令执行过程僵化,不存在可操作空间,灵活性差。
发明内容
本发明实施例提供一种指令分支执行控制方法及相关设备、指令结构,可以简化指令分支执行的控制流程,不进行分支跳转,CPU流水线不停顿。
本发明一方面提供了一种指令分支执行控制方法,包括条件分支判断指令与分支指令的控制方法,指令中包括第一使能字段和指令字段,所述指令分支执行控制方法提供控制寄存器,包括:
执行条件分支判断指令,获取分支判断结果;
将所述分支判断结果写入控制寄存器;
根据所述分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的所述第一使能字段,所述操作对应表存储有不同的所述第一使能字段和依据不同所述控制寄存器的存储数值进行相应操作的指令操作的对应关系,所述指令操作包括判断所述控制寄存器的存储数值为第一预设值,则进入当前指令的指令字段的解码和执行操作的第一操作,以及判断所述控制寄存器的存储数值为第二预设值,则跳过当前指令的指令字段的解码和执行操作的第二操作;
在执行分支指令时,根据所述分支指令的第一使能字段查找所述操作对应表,从相应的所述控制寄存器获取存储数值以执行对应的所述指令操作。
其中,在所述执行条件分支判断指令,获取分支判断结果之前,还包括:
预先设置所述条件分支判断指令的第一使能字段和指令操作;
获取所述条件分支判断指令后,根据所述第一使能字段查找所述操作对应表,获取对应的指令操作;
当所述指令操作为所述第一操作时,进入所述条件分支判断指令中的指令字段的解码和执行操作,以获取所述分支判断结果。
其中,在所述执行条件分支判断指令,获取分支判断结果之前,还包括:
预先设置条件分支判断指令的第二使能字段,所述第二使能字段设置在所述条件分支判断指令的第一使能字段之后;
所述将所述分支判断结果写入控制寄存器,包括:
根据所述条件分支判断指令的第二使能字段,查找结果处理对应表,获取对应的结果处理操作;所述结果处理对应表存储有不同的第二使能字段与不同的结果处理操作的对应关系,所述结果处理操作包括将分支判断结果写入控制寄存器的第一结果处理操作,以及将分支判断结果取反后写入控制寄存器的第二结果处理操作。
其中,所述指令分支执行控制方法,还包括:
不同的条件分支判断指令的分支判断结果写入不同的控制寄存器;
或者,
通过刷新控制寄存器所存储的数值,未存在嵌套的多个条件分支判断指令共用一个控制寄存器。
本发明另一方面提供了一种指令分支执行控制装置,指令中包括第一使能字段和指令字段,所述指令分支执行控制装置包括:
分支判断结果获取模块,用于执行条件分支判断指令,获取分支判断结果;
结果写入模块,用于将所述分支判断结果写入控制寄存器;
使能字段设置模块,用于根据所述分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的所述第一使能字段,所述操作对应表存储有不同的所述第一使能字段和依据不同所述控制寄存器的存储数值进行相应操作的指令操作的对应关系,所述指令操作包括判断所述控制寄存器的存储数值为第一预设值,则进入当前指令的指令字段的解码和执行操作的第一操作,以及判断所述控制寄存器的存储数值为第二预设值,则跳过当前指令的指令字段的解码和执行操作的第二操作;
分支指令执行模块,用于在执行分支指令时,根据所述分支指令的第一使能字段查找所述操作对应表,从相应的所述控制寄存器获取存储数值以执行对应的所述指令操作。
本发明另一方面提供了一种处理器,包括指令存储模块、数据存储模块、指令执行模块、控制寄存器和控制模块;所述指令存储模块与所述控制模块连接,所述控制模块与所述指令执行模块连接,所述控制模块与所述控制寄存器连接,所述指令执行模块与所述数据存储模块连接,所述指令执行模块的输出端与所述控制寄存器的输入端连接,其中,
所述指令存储模块用于存储指令,所述指令中包括第一使能字段和指令字段;
所述数据存储模块用于数据存取;
所述指令执行模块用于进行各种指令执行操作运算;
所述控制寄存器用于存储条件分支判断指令的分支判断结果;
所述控制模块用于指示所述指令执行模块执行条件分支判断指令,以获取分支判断结果,并将所述分支判断结果写入所述控制寄存器,再根据所述分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的所述第一使能字段,所述操作对应表存储有不同的所述第一使能字段和依据不同所述控制寄存器的存储数值进行相应操作的指令操作的对应关系,所述指令操作包括判断所述控制寄存器的存储数值为第一预设值,则进入当前指令的指令字段的解码和执行操作的第一操作,以及判断所述控制寄存器的存储数值为第二预设值,则跳过当前指令的指令字段的解码和执行操作的第二操作。
本发明另一方面提供了一种处理器,用于执行如所述的指令分支执行控制方法。
本发明另一方面提供了一种指令结构,指令中包括第一使能字段和指令字段,其中,分支指令的所述第一使能字段按照以下方法进行设置:
执行条件分支判断指令,获取分支判断结果;
将所述分支判断结果写入控制寄存器;
根据所述分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的所述第一使能字段,所述操作对应表存储有不同的所述第一使能字段和依据不同所述控制寄存器的存储数值进行相应操作的指令操作的对应关系,所述指令操作包括判断所述控制寄存器的存储数值为第一预设值,则进入当前指令的指令字段的解码和执行操作的第一操作,以及判断所述控制寄存器的存储数值为第二预设值,则跳过当前指令的指令字段的解码和执行操作的第二操作。
其中,所述条件分支判断指令还包括第二使能字段,所述第二使能字段设置在所述条件分支判断指令的第一使能字段之后;所述第二使能字段用于指示对所述分支判断结果不同的结果处理操作,所述结果处理操作包括将分支判断结果写入控制寄存器的第一结果处理操作,以及将分支判断结果取反后写入控制寄存器的第二结果处理操作。
本发明实施例将条件分支判断指令的分支判断结果写入控制寄存器中,再根据分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的第一使能字段;之后,在执行分支指令时,根据分支指令的第一使能字段查找操作对应表,并依据控制寄存器所存储的数值进行相应操作的指令操作,根据指令操作控制是否进入分支指令中的指令字段的解码和执行操作,简化指令分支执行的控制流程,顺序执行指令,不进行分支跳转,无需暂停CPU流水线;对于无需执行的分支指令仅进行了取指和第一使能字段译码,跳过了高能耗的指令字段解码和执行;避免现有技术中跳转执行分支指令时,出现CPU流水线停顿导致资源浪费的情形;也可以避免现有技术中假设不存在分支继续执行指令,分支发生时需要丢弃已经取指的操作,造成操作浪费的情形;还可以避免现有技术中提前执行分支指令时,由并行运算带来的增加运算单元与寄存器占用造成的运行逻辑复杂和所需物理器件增加的情形。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中单个指令的执行过程示意图;
图2a、图2b是现有指令分支执行过程的示意图;
图3是本发明实施例提供的条件分支结构的结构示意图;
图4是本发明实施例提供的一种指令分支执行控制方法的流程图;
图5是本发明实施例提供的另一种指令分支执行控制方法的流程图;
图6是本发明实施例提供的又一种指令分支执行控制方法的流程图;
图7a、图7b、图7c是本发明实施例提供的一种指令分支执行控制方法的执行过程示意图;
图8是本发明实施例提供的一种指令分支执行控制装置的结构示意图;
图9是本发明实施例提供的另一种指令分支执行控制装置的结构示意图;
图10是本发明实施例提供的又一种指令分支执行控制装置的结构示意图;
图11是本发明实施例提供的一种处理器的结构示意图;
图12是本发明实施例提供的一种处理器的指令执行过程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,本申请的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本说明书中使用的术语“部件”、“模块”、“***”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。
参见背景技术的描述可知,现有的指令执行控制方法,由于需要等待条件分支判断指令执行结束才进入执行对应的分支指令,由此出现分支冒险,导致处理器的执行速度缓慢。本发明实施例即是为了解决这一问题而提出的。
本发明实施例提供了一种指令分支执行控制方法,思想在于:在执行条件分支判断指令后,将对应的分支判断结果写入控制寄存器,并且根据分支判断结果和预设规则对条件分支判断指令下需执行的分支指令、无需执行的分支执行分别设置不同的第一使能字段,执行分支指令时,根据分支指令的第一使能字段和预设规则读取控制寄存器的数值以进行不同指令操作,指令操作包括对无需执行的分支指令仅进行第一使能字段取指和译码,跳过高能耗的指令字段解码和执行;对需执行的分支指令在对第一使能字段取指译码之后,进入指令字段的解码和执行操作。可选地,预设规则可以是操作对应表的形式,操作对应表存储有不同的第一使能字段和依据不同控制寄存器的存储数值进行相应操作的指令操作的对应关系,指令操作包括判断所述控制寄存器的存储数值为第一预设值,则进入当前指令的指令字段的解码和执行操作的第一操作,以及判断控制寄存器的存储数值为第二预设值,则跳过当前指令的指令字段的解码和执行操作的第二操作;容易理解的,同一条件分支判断指令下,对需执行的分支指令设置的第一使能字段对应的指令操作为第一操作;而无需执行的分支指令设置的第一使能字段对应的指令操作为第二操作,并且第一操作、第二操作对应的控制寄存器为同一个控制寄存器。
则接下来在执行到分支指令时,根据其对应的第一使能字段查找操作对应表以获取对应的指令操作,具体需要从相应的控制寄存器获取存储数值以执行对应的指令操作;当根据分支指令的第一使能字段查表获得的指令操作为第一操作时,则进入该分支指令的指令字段的解码和执行操作,即该分支指令为需执行的分支指令;而当根据分支指令的第一使能字段查表获得的指令操作为第二操作时,则跳过该分支指令的指令字段的解码和执行操作,即该分支指令为无需执行的分支指令。
在对本发明实施例做具体说明之前,需要知道的是,条件分支结构是指依据指定条件选择执行不同分支指令的控制结构;可参见图3,是本发明实施例提供的条件分支结构的结构示意图,其中,根据指定条件P是否成立而选择执行A框或B框对应的指令,例如,指定条件为判断数值S1和数值S2之间的大小关系,当数值S1小于数值S2时,执行A框的指令;当数值S1大于数值S2时,执行B框的指令;可以看出,指定条件P对应的指令即为条件分支判断指令,而A框、B框对应的指令为分支指令。值得注意的是,条件分支判断指令的条件判断操作不仅限于比较两个数值之间的大小关系,还可以是比较两个数值之间的差值与第三个数值之间的大小关系等,还可以是判断一个地址的数值是否为预设数值,预设数值可以是0或者5;还可以是判断两个数值的商是否为整数;还可以是判断数据是否有运算指令溢出;在此对条件分支判断指令的具体条件判断操作不做具体限定;另外,分支指令除了是普通的指令之外,例如,普通的指令为求取数值S1和数值S2的和;分支指令也可以是另一个条件分支判断指令,即在一个分支里面又套有一个分支,这种结构称为条件分支结构的嵌套。
下面对本发明实施例的指令分支执行控制方法做具体说明,参见图4,是本发明实施例提供的一种指令分支执行控制方法的流程图,指令分支执行控制方法是应用于条件分支判断指令与分支指令的控制方法,指令中包括第一使能字段和指令字段,所述指令分支执行控制方法提供控制寄存器,包括:
步骤S101,执行条件分支判断指令,获取分支判断结果;
具体地,取出条件分支判断指令后,读取条件分支判断指令并对其进行译码,以确定条件分支判断指令的具体指令操作,再执行相应的指令操作以获取分支判断结果,分支判断结果为1或0。假设该条件分支判断指令对应的两个分支指令分别为第一分支指令和第二分支指令,由于该条件分支判断指令下的两个分支指令的执行条件在指令编写时已经确定,对第一分支指令和第二分支指令设置了刚好相反的执行条件,例如,分支判断结果为0则执行指令,或者分支判断结果为1则执行指令,则将相反的执行条件配套并分别分配到第一分支和第二分支指令时,实现了对分支指令的择一控制执行,因此,根据分支判断结果可以确定执行哪一个分支指令。
步骤S102,将所述分支判断结果写入控制寄存器;
具体地,将上述分支判断结果写入一个控制寄存器中,由于实际的指令执行过程中,不仅仅存在一个分支,即存在多个条件分支判断指令,因此,本发明实施例设置一组专用寄存器(多个寄存器)用作控制寄存器,专门用来存放条件分支判断指令的分支判断结果。当有多个未存在嵌套的条件分支判断指令时,可以将多个条件分支判断指令的分支判断结果分别写入不同的控制寄存器;但这种操作容易造成寄存器的资源浪费,因此,可以通过刷新同一个控制寄存器所存储的数值,让未存在嵌套的多个条件分支判断指令共用一个控制寄存器,即多个条件分支判断指令的分支判断结果存储在同一个控制寄存器中,只是控制寄存器所存储的数值会随着指令的执行不断被刷新。可以理解的是,当多个条件分支判断指令存在嵌套时,不同的条件分支判断指令的分支判断结果需要写入不同的控制寄存器,以使指令可以顺利被执行。
步骤S103,根据所述分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的所述第一使能字段,所述操作对应表存储有不同的所述第一使能字段和依据不同所述控制寄存器的存储数值进行相应操作的指令操作的对应关系,所述指令操作包括判断所述控制寄存器的存储数值为第一预设值,则进入当前指令的指令字段的解码和执行操作的第一操作,以及判断所述控制寄存器的存储数值为第二预设值,则跳过当前指令的指令字段的解码和执行操作的第二操作;
具体地,操作对应表可以是预先建立好的,其中,第一预设值为1,第二预设值为0,参考下面的表1,具有n个控制寄存器,即P(0)、P(1)、……P(n-1),表1中,形成了第一使能字段的值、控制寄存器以及第一预设值或第二预设值的对应关系,可见,总共具有n个状态,第一使能字段的值0~(n-1)和n~(2n-1)对应的操作是对称的,只是它们与控制寄存器的存储数值的判断条件不同,第一使能字段的值0~(n-1)对应的是第一预设值,而第一使能字段的值n~(2n-1)对应的是第二预设值。由此,在分支判断结果写入控制寄存器后,以P(1)为例,根据分值判断结果和操作对应表,可以在条件判断分支指令对应的需执行的分支指令、无需指令的分支指令分别设置不同的第一使能字段,例如分支判断结果为1时,执行第一分支指令,不执行第二分支指令,则设置第一分支指令的第一使能字段为1,而对应的第二分支指令的第一使能字段设置为n+1。
表1操作对应表
步骤S104,在执行分支指令时,根据所述分支指令的第一使能字段查找所述操作对应表,从相应的所述控制寄存器获取存储数值以执行对应的所述指令操作;所述指令操作为所述第一操作时,进入所述分支指令中的指令字段的解码和执行操作;所述指令操作为所述第二操作时,则跳过所述分支指令中的指令字段的解码和执行操作,进入执行下一指令。
具体地,在执行到分支指令时,先根据分支指令的第一使能字段的数值查找操作对应表,从相应的控制寄存器获取存储数值并进行判断以确定相应的指令操作,以上述控制寄存器P(1)为1为例,执行到第一分支指令时,根据第一分支指令的第一使能字段查找表1,由于第一分支指令的第一使能字段为1,则对应的操作描述为判断控制寄存器P(1)的存储数值是否为1,此时判断成立,则进入第一分支指令的指令字段的解码和执行操作;而执行到第二分支指令时,由于第二分支指令的第一使能字段为n+1,对应的操作描述为判断控制寄存器P(1)的存储数值是否为0,由于此时控制寄存器P(1)为1,判断条件不成立,则此时不进入第二分支指令的指令字段的解码和执行操作,进入执行下一指令,相当于跳过了第二分支指令的指令字段的解码和执行操作。
由上述可知,由于将条件分支判断指令的分支判断结果写入控制寄存器中,并且先对分支指令设置不同的第一使能字段,在接下来的分支指令执行过程中,通过查找操作对应表确定指令操作,既实现了分支执行,又无需等待,顺序执行指令,不进行分支跳转,无需暂停CPU流水线;对于无需执行的分支指令仅进行了取指和第一使能字段译码,跳过了高能耗的指令字段的解码和执行;对于分支指令可以实现顺序执行,即按序对每个命令均取指令并解码使能字段,在保证CPU运行的连贯不跳转的同时,通过控制后续指令字段的解码和执行,实现对分支指令的选择性运行;在本发明实施例中,解决了不使用跳转情形下的分支指令控制问题;避免现有技术中跳转执行分支指令时,出现CPU流水线停顿导致资源浪费的情形;也可以避免现有技术中假设不存在分支继续执行指令,分支发生时需要丢弃已经取指的操作,造成操作浪费的情形;还可以避免现有技术中提前执行分支指令时,由并行运算带来的增加运算单元与寄存器占用造成的运行逻辑复杂和所需物理器件增加的情形,与现有技术相比,本发明实施例的指令分支执行控制方法,逻辑简单,处理器的运行速度更快。
另外,值得注意的是,在分支指令执行过程中,需要首先对第一使能字段进行解码,以确定后续指令字段的解码和执行与否,因此,需要将第一使能字段设置在指令的最前面,即指令包括依次设置的第一使能字段和指令字段。
进一步地,本发明实施例的指令分支执行控制方法中,为了提高对指令的执行可控性,参考图5,是本发明实施例提供的另一种指令分支执行控制方法的流程图,指令分支执行控制方法包括:
步骤S201,预先设置所述条件分支判断指令的第一使能字段和指令操作;
具体地,针对条件分支判断指令的第一使能字段,需要在指令执行前预先进行设置,通过预设条件分支判断指令的第一使能字段,来控制是否执行条件分支判断指令,其中,控制条件分支判断指令是否执行还需要结合预设指令操作来实现,而预设条件分支判断指令的指令操作是通过设置控制寄存器P(0)的存储数值来实现的,利用预设条件分支判断指令的第一使能字段和指令操作,可以控制条件分支判断指令是否执行(即是否进入条件分支判断指令的指令字段的解码和执行操作),提高用户对条件分支判断指令的执行可控性。参考表1,例如,对于想要让其执行的条件分支判断指令,可以预设其第一使能字段为0,可以将控制寄存器P(0)的存储数值固定设置为1;也可以是将其第一使能字段设置为n,而控制寄存器P(0)的存储数值固定设置为0;而对于想让条件分支判断指令不执行的情况,可以是将条件分支判断指令的第一使能字段设置为0,而控制寄存器P(0)的存储数值设置为0;还可以是设置其第一使能字段为n,将控制寄存器P(0)的存储数值固定设置为1。
步骤S202,在执行条件分支判断指令时,获取所述条件分支判断指令后,根据所述条件分支判断指令的第一使能字段查找所述操作对应表,获取对应的指令操作;当所述指令操作为所述第一操作时,进入所述条件分支判断指令中的指令字段的解码和执行操作,以获取所述分支判断结果;当所述指令操作为所述第二操作时,不进入该条件分支判断指令的指令字段的解码和执行操作,相当于跳过该条件分支判断指令的指令字段的解码和执行操作,此时结束该条件分支判断指令的执行过程,进入下一指令的执行过程;
具体地,获取条件分支判断指令后,根据第一使能字段的值查找操作对应表,读取第一使能字段对应的控制寄存器的存储数值以确定对应的指令操作。
以控制寄存器P(0)为例,当条件分支判断指令的第一使能字段为0,控制寄存器P(0)的存储数值为1时,则进入该条件分支判断指令的指令字段的解码和执行操作,以获取对应的分支判断结果;而当第一使能字段为n,而控制寄存器P(0)的存储数值为1时,不进入该条件分支判断指令的指令字段的解码和执行操作。
步骤S203,将所述分支判断结果写入控制寄存器;
步骤S204,根据所述分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的所述第一使能字段;
步骤S205,在执行分支指令时,根据所述分支指令的第一使能字段查找所述操作对应表,从相应的所述控制寄存器获取存储数值以执行对应的所述指令操作;所述指令操作为所述第一操作时,进入所述分支指令中的指令字段的解码和执行操作;所述指令操作为所述第二操作时,则跳过所述分支指令中的指令字段的解码和执行操作,进入执行下一指令。
其中,步骤S203至步骤S205的具体执行过程请参见步骤S102至步骤S104的具体描述,不再赘述。
进一步地,本发明实施例中,由上文可知,根据分支判断结果为条件分支判断指令对应的分支指令设置不同的第一使能字段,以在分支指令执行时,根据第一使能字段可以控制分支指令的指令字段的解码和执行操作,即分支判断结果确定了分支指令的指令字段的解码和执行操作是否进行。对于分支判断结果确定了不会进入指令字段的解码和执行操作的分支指令,则其指令字段的解码和执行操作的过程和执行结果,将无从了解,特别是在指令测试过程中,需要了解所有指令的执行过程和执行结果。因此,本发明实施例提出了以下改进方法,参考图6,是本发明实施例提供的又一种指令分支执行控制方法的流程图,指令分支执行控制方法包括:
步骤S301,预先设置条件分支判断指令的第一使能字段和指令操作,预先设置条件分支判断指令的第二使能字段,所述第二使能字段设置在所述条件分支判断指令的第一使能字段之后;
具体地,第二使能字段用于指示如何处理分支判断结果并将其写入控制寄存器中,包括直接将分支判断结果写入控制寄存器,以及将分支判断结果取反之后再写入控制寄存器中。例如,参考表1,以控制寄存器P(1)为例,条件分支判断指令对应第一分支指令和第二分支指令,原本的执行条件是分支判断结果为1则执行第二分支指令,即第一分支指令的第一使能字段为n+1,而第二分支指令的第一使能字段为1;为了使得第一分支指令可以被执行,则可以将条件分支判断指令的第二使能字段对应的操作设置为将分支判断结果取反后写入控制寄存器,则运行时,由于分支判断结果被取反为0,对照表1,可知,第一分支指令的第一使能字段n+1对应的指令操作,将会为进入第一分支指令的指令字段的解码和执行操作,即此时,第一分支指令将会被执行。
其中,由于第二使能字段是用于指示分支判断结果的处理手段,而当且仅当条件分支判断指令被执行后才会出现分支判断结果,因此,第二使能字段需要设置在所述条件分支判断指令的第一使能字段之后,对条件分支判断指令进行取指译码时,先根据第一使能字段判断是否进入指令字段的解码和执行操作,若判断为进入则可以获得分支判断结果,之后才利用第二使能字段确定如何将分支判断结果写入控制寄存器中。而至于是先进行指令字段的解码和执行操作以获取分支判断结果,还是先对分支判断结果写入寄存器的方式进行判断,这一顺序对最终的处理结果没有影响,因此,条件分支指令编写时,可以是按照第一使能字段、指令字段、第二使能字段的顺序或者第一使能字段、第二使能字段、指令字段的顺序进行编写。
步骤S302,在执行条件分支判断指令时,获取所述条件分支判断指令后,根据所述条件分支判断指令的第一使能字段查找所述操作对应表,获取对应的指令操作;当所述指令操作为所述第一操作时,进入所述条件分支判断指令中的指令字段的解码和执行操作,以获取所述分支判断结果;
步骤S303,根据所述条件分支判断指令的第二使能字段,查找结果处理对应表,获取对应的结果处理操作;所述结果处理对应表存储有不同的第二使能字段与不同的结果处理操作的对应关系,所述结果处理操作包括将分支判断结果写入控制寄存器的第一结果处理操作,以及将分支判断结果取反后写入控制寄存器的第二结果处理操作;
具体地,需要预先设置结果处理对应表,参见下面的表2,形成了第二使能字段与操作描述的对应关系,其中,对于控制寄存器P(1)至P(n-1),分别设置直接写入和取反后写入两种结果写入方式,设置多个控制寄存器是为了适应条件分支判断指令存在嵌套的情形。
表2结果处理对应表
步骤S304,当所述结果处理操作为所述第一结果处理操作时,将所述分支判断结果写入所述控制寄存器;
具体地,以控制寄存器P(1)为例,条件分支判断指令的第一使能字段、第二使能字段对应同一个控制寄存器,即控制寄存器P(1);当第二使能字段为1时,则将该条件分支判断指令的分支判断结果直接写入控制寄存器P(1)中;而当第二使能字段为n+1时,则将该分支判断结果进行取反后再写入控制寄存器P(1)中;本实施例中,由于需要根据分支判断结果控制后续的分支指令的执行过程,因此,条件分支判断指令的第二使能字段需要选取将分支判断结果直接写入控制寄存器的第二使能字段的值,例如第二使能字段的值为1到n-1中任一个。
步骤S305,根据所述分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的所述第一使能字段;
步骤S306,在执行分支指令时,根据所述分支指令的第一使能字段查找所述操作对应表,从相应的所述控制寄存器获取存储数值以执行对应的所述指令操作;所述指令操作为所述第一操作时,进入所述分支指令中的指令字段的解码和执行操作;所述指令操作为所述第二操作时,则跳过所述分支指令中的指令字段的解码和执行操作,进入执行下一指令。
以上未详细展开叙述的步骤的细节可参考图5对应步骤的描述,不再赘述。
另外,为了提高对指令执行控制过程的可操作灵活性,参见表2,增加了第二使能字段的值为0和n的情况,当条件分支判断指令的第二使能字段设置为0或者n时,将不对分支判断结果做任何操作,并进入下一指令的执行,此时,即后续的分支指令的执行与否完全不需要依据条件分支判断指令的分支判断结果了,而是直接依据分支指令的第一使能字段进行判断是否执行(即分支指令的指令字段是否进行解码和执行),只是此时分支指令的第一使能字段和指令操作是由外部指定的,与控制条件分支判断指令的指令字段的解码和执行与否的控制过程相同(可参考步骤S201至步骤S202的描述),可以通过预设分支指令的第一使能字段和指令操作,也即预设分支指令的第一使能字段和控制寄存器P(0)的存储数值,来控制分支指令执行或不执行。
具体举例说明:将条件分支判断指令的第一使能字段预设为0,其第二使能字段预设为0,并将该条件分支判断指令对应的第一分支指令和第二分支指令的第一使能字段分别预设为0和n,而控制寄存器P(0)的存储数值为1;则具体在指令执行过程中,顺序执行到条件分支判断指令后,根据第一使能字段查找表1判断进入执行该条件分支判断指令的解码和执行操作,则可以获取到对应的分支判断结果,而根据条件分支判断指令的第二使能字段查找表2确定不对该分支判断结果做任何操作,进入下一指令的执行,执行至第一分支指令时,根据第一使能字段查找表1,读取控制寄存器P(0)的存储数值为1,则进入第一分支指令的指令字段的解码和执行操作;同理,第二分支指令的执行过程与第一分支指令的执行过程相同,此时,根据对应的第一使能字段查找表1,确定不进入第二分支指令的指令字段的解码和执行操作。
以下面的分支执行程序代码为例,进一步举例说明本申请的指令分支执行控制方法:
其中,PC-2对应的指令为条件分支判断指令,而PC-3、PC-4对应的指令为第一分支指令,PC-5、PC-6对应的指令为第二分支指令,预先设置好条件分支判断指令的第一使能字段的值为0,控制寄存器P(0)的存储数值为1,条件分支判断指令的第二使能字段的值为2;参考图7a、图7b和图7c,是本发明实施例提供的一种指令分支执行控制方法的执行过程示意图,指令执行过程中,如图7a所示,根据PC值读取指令存储模块中PC-2对应的指令,即条件分支判断指令,根据条件分支判断指令的第一使能字段即数值为0查找表1,得到操作为进入条件分支判断指令的指令字段的解码和执行操作,参考图7b,从数据存储模块中获取数据以进行数据a和数据b的大小关系判断,假设a大于b,则分支判断结果为1,参考图7c,根据条件分支判断指令的第二使能字段将分支判断结果写入控制寄存器P(2),并根据分支判断结果和表1为第一分支指令和第二分支指令分配不同的第一使能字段,即第一分支指令的第一使能字段为2(即PC-3、PC-4对应的指令的第一使能字段均为2),而第二分支指令的第一使能字段为n+2(即PC-5、PC-6对应的指令的第一使能字段均为n+2);在执行完条件分支判断指令即PC-2对应的指令后,继续顺序执行PC-2后续的所有指令,即执行PC-3对应的指令,根据PC-3对应的指令的第一使能字段查找表1,对应的操作描述的条件成立,则进入PC-3对应的指令的指令字段的解码和执行操作;同理,也将进入PC-4对应的指令的指令字段的解码和执行操作;再执行至PC-5对应的指令时,根据PC-5对应的指令的第一使能字段查找表1,可知此时的操作描述的条件不成立,此时不进入PC-5对应的指令的指令字段的解码和执行操作,进入下一指令的执行,即根据PC-6对应的指令的第一使能字段查找表1,可知此时也不进入PC-6对应的指令的指令字段的解码和执行操作;可见,由于设置了一个专用于存储分支判断结果的控制寄存器,舍弃了返回栈,指令为顺序执行,不存在等待指令执行完毕的情况,也不存在分支冒险带来处理器执行缓慢的状况,简单而高效完成指令执行。
本发明实施例还提供一种指令分支执行控制装置,参考图8,是本发明实施例提供的一种指令分支执行控制装置的结构示意图,指令中包括第一使能字段和指令字段,所述指令分支执行控制装置包括分支判断结果获取模块11、结果写入模块12、使能字段设置模块13和分支指令执行模块14,其中:
分支判断结果获取模块11,用于执行条件分支判断指令,获取分支判断结果;
结果写入模块12,用于将所述分支判断结果写入控制寄存器;
使能字段设置模块13,用于根据所述分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的所述第一使能字段,所述操作对应表存储有不同的所述第一使能字段和依据不同所述控制寄存器的存储数值进行相应操作的指令操作的对应关系,所述指令操作包括判断所述控制寄存器的存储数值为第一预设值,则进入当前指令的指令字段的解码和执行操作的第一操作,以及判断所述控制寄存器的存储数值为第二预设值,则跳过当前指令的指令字段的解码和执行操作的第二操作;
分支指令执行模块14,用于在执行分支指令时,根据所述分支指令的第一使能字段查找所述操作对应表,从相应的所述控制寄存器获取存储数值以执行对应的所述指令操作;所述指令操作为所述第一操作时,进入所述分支指令中的指令字段的解码和执行操作;所述指令操作为所述第二操作时,则跳过所述分支指令中的指令字段的解码和执行操作,进入执行下一指令。
分支判断结果获取模块11、结果写入模块12、使能字段设置模块13和分支指令执行模块14的具体功能实现方式和效果参考图4对应的实施例的描述,不再赘述。
进一步地,参考图9,是本发明实施例提供的另一种指令分支执行控制装置的结构示意图,本发明实施例还提供另一种指令分支执行控制装置包括第一预设模块21、分支判断结果获取模块22、结果写入模块23、使能字段设置模块24和分支指令执行模块25,其中:
第一预设模块21,用于预先设置所述条件分支判断指令的第一使能字段和指令操作;
分支判断结果获取模块22,用于获取所述条件分支判断指令后,根据所述第一使能字段查找所述操作对应表,获取对应的指令操作;当所述指令操作为所述第一操作时,进入所述条件分支判断指令中的指令字段的解码和执行操作,以获取所述分支判断结果;
结果写入模块23,用于将所述分支判断结果写入控制寄存器;
使能字段设置模块24,用于根据所述分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的所述第一使能字段,所述操作对应表存储有不同的所述第一使能字段和依据不同所述控制寄存器的存储数值进行相应操作的指令操作的对应关系,所述指令操作包括判断所述控制寄存器的存储数值为第一预设值,则进入当前指令的指令字段的解码和执行操作的第一操作,以及判断所述控制寄存器的存储数值为第二预设值,则跳过当前指令的指令字段的解码和执行操作的第二操作;
分支指令执行模块25,用于在执行分支指令时,根据所述分支指令的第一使能字段查找所述操作对应表,从相应的所述控制寄存器获取存储数值以执行对应的所述指令操作;所述指令操作为所述第一操作时,进入所述分支指令中的指令字段的解码和执行操作;所述指令操作为所述第二操作时,则跳过所述分支指令中的指令字段的解码和执行操作,进入执行下一指令。
第一预设模块21、分支判断结果获取模块22、结果写入模块23、使能字段设置模块24和分支指令执行模块25的具体功能实现方式和效果参考图5对应的实施例的描述,不再赘述。
进一步地,参考图10,是本发明实施例提供的又一种指令分支执行控制装置的结构示意图,本发明实施例还提供又一种指令分支执行控制装置包括第一预设模块31、第二预设模块32、分支判断结果获取模块33、结果写入模块34、使能字段设置模块35和分支指令执行模块36,其中:
第一预设模块31,用于预先设置所述条件分支判断指令的第一使能字段和指令操作;
第二预设模块32,用于预先设置条件分支判断指令的第二使能字段,所述第二使能字段设置在所述条件分支判断指令的第一使能字段之后;
分支判断结果获取模块33,用于获取所述条件分支判断指令后,根据所述第一使能字段查找所述操作对应表,获取对应的指令操作;当所述指令操作为所述第一操作时,进入所述条件分支判断指令中的指令字段的解码和执行操作,以获取所述分支判断结果;
结果写入模块34,用于根据所述条件分支判断指令的第二使能字段,查找结果处理对应表,获取对应的结果处理操作;所述结果处理对应表存储有不同的第二使能字段与不同的结果处理操作的对应关系,所述结果处理操作包括将分支判断结果写入控制寄存器的第一结果处理操作,以及将分支判断结果取反后写入控制寄存器的第二结果处理操作;当所述结果处理操作为所述第一结果处理操作时,将所述分支判断结果写入所述控制寄存器;
使能字段设置模块35,用于根据所述分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的所述第一使能字段,所述操作对应表存储有不同的所述第一使能字段和依据不同所述控制寄存器的存储数值进行相应操作的指令操作的对应关系,所述指令操作包括判断所述控制寄存器的存储数值为第一预设值,则进入当前指令的指令字段的解码和执行操作的第一操作,以及判断所述控制寄存器的存储数值为第二预设值,则跳过当前指令的指令字段的解码和执行操作的第二操作;
分支指令执行模块36,用于在执行分支指令时,根据所述分支指令的第一使能字段查找所述操作对应表,从相应的所述控制寄存器获取存储数值以执行对应的所述指令操作;所述指令操作为所述第一操作时,进入所述分支指令中的指令字段的解码和执行操作;所述指令操作为所述第二操作时,则跳过所述分支指令中的指令字段的解码和执行操作,进入执行下一指令。
第一预设模块31、第二预设模块32、分支判断结果获取模块33、结果写入模块34、使能字段设置模块35和分支指令执行模块36的具体功能实现方式和效果参考图6对应的实施例的描述,不再赘述。
基于上述实施例的内容,本发明实施例还提供一种指令结构,指令中包括顺序设置的第一使能字段和指令字段,其中,分支指令的所述第一使能字段按照以下方法进行设置:
执行条件分支判断指令,获取分支判断结果;
将所述分支判断结果写入控制寄存器;
根据所述分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的所述第一使能字段,所述操作对应表存储有不同的所述第一使能字段和依据不同所述控制寄存器的存储数值进行相应操作的指令操作的对应关系,所述指令操作包括判断所述控制寄存器的存储数值为第一预设值,则进入当前指令的指令字段的解码和执行操作的第一操作,以及判断所述控制寄存器的存储数值为第二预设值,则跳过当前指令的指令字段的解码和执行操作的第二操作。
利用上述指令结构,在指令执行过程中,可以有效避免出现分支冒险,指令执行过程简单又高效。特别地,对于存在嵌套的多个条件分支判断指令,不同的条件分支判断指令的分支判断结果写入不同的控制寄存器;而对于未存在嵌套的多个条件分支判断指令,通过刷新控制寄存器所存储的数值,未存在嵌套的多个条件分支判断指令共用一个控制寄存器。
进一步地,对于条件分支判断指令的第一使能字段,是需要预先设置的,预设好第一使能字段后,则在取出所述条件分支判断指令后,根据所述第一使能字段查找所述操作对应表,获取对应的指令操作;当所述指令操作为所述第一操作时,进入所述条件分支判断指令中的指令字段的解码和执行操作,以获取所述分支判断结果。
更进一步地,所述条件分支判断指令还包括第二使能字段,所述第二使能字段设置在所述条件分支判断指令的第一使能字段之后;所述第二使能字段用于指示对所述分支判断结果不同的结果处理操作,所述结果处理操作包括将分支判断结果写入控制寄存器的第一结果处理操作,以及将分支判断结果取反后写入控制寄存器的第二结果处理操作。同理,条件分支判断指令的第二使能字段,也是需要预先设置的,预设好第二使能字段后,在所述将所述分支判断结果写入控制寄存器时,具体操作为:根据所述条件分支判断指令的第二使能字段,查找结果处理对应表,获取对应的结果处理操作;所述结果处理对应表存储有不同的第二使能字段与不同的结果处理操作的对应关系,所述结果处理操作包括将分支判断结果写入控制寄存器的第一结果处理操作,以及将分支判断结果取反后写入控制寄存器的第二结果处理操作;当所述结果处理操作为所述第一结果处理操作时,将所述分支判断结果写入所述控制寄存器。
通过预设条件分支判断指令的第一使能字段,可以选择是否执行该条件分支判断指令,而通过预设条件分支判断指令的第二使能字段,可以选择对条件分支判断指令的分支判断结果的处理操作,提高对指令执行过程的可操作性和灵活性。
由上述描述可知,条件分支判断指令的指令结构为第一使能字段、指令字段、第二使能字段,或者是第一使能字段、第二使能字段、指令字段,下面以第一使能字段、指令字段、第二使能字段为例进行说明,而对于分支指令及其他普通指令,其指令结构包括第一使能字段、指令字段、第三字段,第三字段用于作为数据寄存器的地址索引,即第三字段用于指示将指令操作结果写入到哪个数据寄存器中;对于其他普通指令,例如简单的数据加法运算指令,其第一使能字段需要预先进行设置。针对本发明实施例所提供的指令结构,由于该指令结构的执行需要在硬件(处理器芯片)上增加控制寄存器,因此,芯片的指令集中需要增加相应的指令来操作控制寄存器,以具有16个控制寄存器为例,新增的指令集的定义方法如下:
(1)定义指令操作数
处理器芯片中的指令操作数位宽,即数据存储单元的数据位宽为32位;
每个指令涉及至多两个操作数、一个操作码。其中操作数的来源是根据指令中的“操作数”字段进行寻址,读取对应地址的寄存器的数值,作为真正的操作数。
(2)定义寻址方式
指令集指令中的操作数寻址定义为寄存器寻址方式;寄存器寻址分为对数据寄存器和控制寄存器寻址两类。
(3)划分指令代码字段
将指令代码划分为五个字段:5位指令执行使能字段enable(即第一使能字段)、6位指令代码字段op、5位操作数a寻址字段op_a、5位操作数b寻址字段op_b、5位目的寄存器字段dest(即第三字段)/5位控制寄存器字段enable_dest(即第二使能字段),其中,中间的三个字段为指令字段。
(4)编码
采用指令组合编码方式定义各个字段中的具体编码;
指令格式:enable,op,op_a,op_b,dest/enable_dest
格式说明:enable字段指示如何根据表1解析控制寄存器的值,op字段指示操作码,op_a字段指示第一个操作数的寄存器地址,op_b字段指示第二个操作数的寄存器地址,dest/enable_dest字段指示指令操作结果保存的目的寄存器地址,其中这个字段根据op分为两类,一类是dest,指令将操作结果写入到数据寄存器中,dest作为数据寄存器的地址索引,一类是enable_dest,指令根据enable_dest的值和表2,维护控制寄存器P(0)~P(15)的存储数值。
以下15条指令可以维护控制寄存器P(0)~P(15)的存储数值,即对应条件分支判断指令,根据分支判断结果、enable_dest字段和表2维护控制寄存器P(0)~P(15)的存储数值:
第1条比较关系运算指令1
指令功能:对操作数a和操作数b进行大小比较关系运算,比较数据格式分为有符号整数和单精度浮点数两种,将返回的单比特数值,根据enable_dest字段和表2,写入到控制寄存器P(0)~P(15)中。这类指令一共有12条。
指令助记符:enable_dest=eqs32(op_a,op_b)
enable_dest=neqs32(op_a,op_b)
enable_dest=gts32(op_a,op_b)
enable_dest=gteqs32(op_a,op_b)
enable_dest=lss32(op_a,op_b)
enable_dest=lseqs32(op_a,op_b)
enable_dest=eqf32(op_a,op_b)
enable_dest=neqf32(op_a,op_b)
enable_dest=gtf32(op_a,op_b)
enable_dest=gteqf32(op_a,op_b)
enable_dest=lsf32(op_a,op_b)
enable_dest=lseqf32(op_a,op_b)
指令说明:指令操作返回结果为单比特值,存储在enable_dest指示的使能控制寄存器中,这12条指令功能分别是判断下列关系运算:有符号整数op_a==op_b、有符号整数op_a!=op_b、有符号整数op_a>op_b、有符号整数op_a>=op_b、有符号整数op_a<op_b、有符号整数op_a<=op_b、单精度浮点数op_a==op_b、单精度浮点数op_a!=op_b、单精度浮点数op_a>op_b、单精度浮点数op_a>=op_b、单精度浮点数op_a<op_b、单精度浮点数op_a<=op_b。
对于单精度浮点数比较,操作数有Nan参与的运算,!=运算返回1,其他运算返回0;subnormal数根据符号位当做+-0处理,+infinity最大,-infinity最小。
指令说明:操作数Nan可以参与运算,+Nan最大,-Nan最小,+-infi次之,subnormal的绝对值比0大,subnormal介于0和normal数之间。
第2条加法进位指令
指令功能:对操作数a和操作数b按照无符号整数进行加法运算,计算结果产生进位返回1,否则返回0。将返回的单比特数值,根据enable_dest字段和表2,写入到控制寄存器P(0)~P(15)中。
指令助记符:enable_dest=carryu32(op_a,op_b)
第3条Nan/Infi数判定指令
指令功能:对操作数a进行判定,操作数a是单精度浮点数类型,按照IEEE754标准来表示,如果操作数a是+-inf或者+-nan,返回1,否则返回0。将返回的单比特数值,根据enable_dest字段和表2,写入到控制寄存器P(0)~P(15)中。
指令助记符:enable_dest=infnanf32(op_a)
指令说明:扩展为判断Nan/Infi/Subnormal,或扩展为判定Nan/Infi/Subnormal/Zero等判定不同的除了normal数以外的范围的集合。
第4条指令使能位或运算指令
指令功能:对操作数a和操作数b指示的控制寄存器P(0)~P(15)保存的值做或运算,返回结果为单比特数值,根据enable_dest字段和表2,写入到控制寄存器P(0)~P(15)中。
指令助记符:enable_dest=porf32(op_a,op_b)
以下的指令为普通计算指令(即分支指令和其他普通指令),用于指令的操作结果写入目的寄存器(即数据寄存器),区别在于,每条指令在取指译码之后是否真正的执行,取决于enable字段查找表1后指示的状态。普通计算指令的具体指令如下:
第5条数据复制指令
指令功能:将操作数b存储在指令的dest域段指示的目的寄存器中。
第6条整数转浮点数运算指令
指令功能:根据指令中的op_b值进行寄存器寻址得到操作数或使用“立即数”,该32位数值表示类型为有符号整数,该指令将其转换为IEEE754规定的单精度浮点数类型,并将结果存储在指令的dest域段指示的目的寄存器中。
指令说明:该指令只有一个操作数有效。整数转浮点数可能会存在精度损失的问题,可以采用IEEE默认的round-ties-to-even方式处理得到近似值,也可以增加另一个操作数来决定近似方式的选择。
第7条浮点数转整数运算指令
指令功能:操作数32位数值的表示类型为IEEE754规定的单精度浮点数类型,该指令将其转换为有符号整数,并将结果存储在指令的dest域段指示的目的寄存器中。
指令说明:该指令有两个有效操作数,将操作数a表示的32位单精度浮点数格式转成有符号整数,浮点数表示范围比整数大,当浮点数值超出了整数表示范围时,根据符号位,取最大正整数7fff_ffff或最小的负整数8000_0000;并将浮点数的小数部分与操作数b采用无符号数类型进行比较,如果小数部分大于操作数b,整数部分进1。
该指令将操作数a表示的32位单精度浮点数格式转成有符号整数,浮点数表示范围比整数大,当浮点数值超出了整数表示范围时,可以根据***需要,规定此时输出的值的编码方式;分数的近似处理部分,可以根据另一个操作数进行编码决定近似方式,或将浮点数的小数部分与另一个操作数采用无符号数类型进行比较,由该操作数决定近似处理的进位或丢弃小数的操作。
第8条比较关系运算指令2
指令功能:对操作数a和操作数b进行大小比较,比较数据格式为单精度浮点数,返回结果为两个操作数中的较大值/较小值,存储在指令的dest域段指示的目的寄存器中。
指令说明:操作数有Nan参与的运算,返回Nan;subnormal数根据符号位当做+-0处理,+infinity最大,-infinity最小。
第9条整数加减运算指令
指令功能:对操作数a与操作数b进行32位有符号整数加减法运算,并将结果存储在指令的dest域段指示的目的寄存器中。
指令说明:运算结果超出32位有符号整数表示范围的,锁定在最大最小值7fff_ffff/8000_0000,不翻转。
第10条无符号整数乘法运算指令
指令功能:对操作数a和操作数b进行无符号整数乘法运算,并将结果按照无符号整数格式保存在指令的dest域段指示的目的寄存器中。结果可能会超出32位无符号整数表示的范围,返回32‘hffff_ffff。
第11条单精度浮点数加减运算指令
指令功能:对操作数a和操作数b进行单精度浮点数格式的加减法运算,并将结果按照单精度浮点数格式保存在指令的dest域段指示的目的寄存器中。操作数和返回结果均按照按照IEEE754标准来表示,subnormal数当作0处理,操作数有Nan,返回Nan;操作数有Inf时,以下四种情况inf+(-inf)/(-inf)+inf/inf-inf/(-inf)-(-inf),返回Nan,否则返回Inf;操作数都是normal数,返回结果超出单精度浮点数表示范围的,返回Inf;分数部分近似处理采用round-ties-to-even方式。
第12条单精度浮点数乘法运算指令
指令功能:对操作数a和操作数b进行单精度浮点数格式的乘法法运算,并将结果按照单精度浮点数格式保存在指令的dest域段指示的目的寄存器中。操作数和返回结果均按照按照IEEE754标准来表示,subnormal数当作0处理,操作数有Nan,返回Nan;操作数有Inf时,另一个操作数是0,返回Nan,否则返回Inf;操作数都是normal数,返回结果超出单精度浮点数表示范围的,返回Inf;分数部分近似处理采用round-ties-to-even方式。
下面提供一些控制指令:
第1条执行暂停指令
指令功能:停止执行指令,并且维持当前PC值不变。op_a,op_b,dest,imm0,imm1,imm2在当前指令下无效。
第2条延迟执行指令
指令功能:延迟数拍时间执行指令。op_a,imm0,imm1,imm2在当前指令无效,延迟拍数由op_b和dest指示。
第3条存储单元数据加载指令
指令功能:将操作数b指示的片内存储单元地址中的数据存储到指令的dest域段指示的目的寄存器中。
第4条存储单元数据存储指令
指令功能:将操作数a的值存储到操作数b作为索引地址的片内存储单元中。dest在当前指令无效。
本发明实施例还提供了一种处理器,用于执行上述的指令分支执行控制方法。具体地,参考图11,是本发明实施例提供的一种处理器的结构示意图;处理器包括指令存储模块41、数据存储模块42、指令执行模块43、控制寄存器44和控制模块45;所述指令存储模块41与所述控制模块45连接,所述控制模块45与所述指令执行模块43连接,所述控制模块45与所述控制寄存器44连接,所述指令执行模块43与所述数据存储模块42连接,所述指令执行模块43的输出端与所述控制寄存器44的输入端连接,其中,
所述指令存储模块41用于存储指令,所述指令中包括第一使能字段和指令字段;
所述数据存储模块42用于数据存取;
所述指令执行模块43用于进行各种指令执行操作运算;
所述控制寄存器44用于存储条件分支判断指令的分支判断结果;
所述控制模块45用于指示所述指令执行模块执行条件分支判断指令,以获取分支判断结果,并将所述分支判断结果写入所述控制寄存器,再根据所述分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的所述第一使能字段,所述操作对应表存储有不同的所述第一使能字段和依据不同所述控制寄存器的存储数值进行相应操作的指令操作的对应关系,所述指令操作包括判断所述控制寄存器的存储数值为第一预设值,则进入当前指令的指令字段的解码和执行操作的第一操作,以及判断所述控制寄存器的存储数值为第二预设值,则跳过当前指令的指令字段的解码和执行操作的第二操作。
具体地,指令存储模块41存储条件分支判断指令、分支指令及其他普通指令,而数据存储模块42用于实现数据存取,指令执行模块43用于执行指令,而控制寄存器44用于存储条件分支判断指令的分支判断结果,控制模块45作为指令执行过程的控制中心,指示指令执行模块43进行指令执行,在条件分支判断指令的执行过程中,实现按照上述方法设置分支指令的第一使能字段,并实现指令顺序执行,有效避免了出现分支冒险。本发明实施例中的处理器,由于专门有一个控制寄存器器来存储分支判断结果以决定分支执行流程,使得指令分支执行的流程简单,只需顺序执行;处理器的架构简单,便于后续扩展。
进一步地,还可以通过预设条件分支判断指令的第一使能字段和第二使能字段,来控制是否执行条件分支判断指令,以及选择对条件分支判断指令的分支判断结果的处理操作。则条件分支判断指令的指令结构为第一使能字段、指令字段、第二使能字段,也可以是第一使能字段、第二使能字段、指令字段,本实施例中条件分支指令的指令结构以第一使能字段、指令字段、第二使能字段为例,而分支指令和其他普通指令的指令结构为第一使能字段、指令字段、第三字段。值得注意的是,处理器在执行条件分支判断指令等指令时,需要依据新的指令集,新的指令集可以以上述指令结构对应的实施例中记载的指令集为例。
参考图11和图12,图12是本发明实施例提供的一种处理器的指令执行过程示意图,以新的指令集为例,下面对处理器的指令执行过程做具体说明:
根据PC值读取到一条条件分支判断指令时,对条件分支判断指令的指令依次进行解码,首先解码第一使能字段(即enable字段),并根据第一使能字段的值查找表1,从相应的控制寄存器44中读取数值以判断是否进入该条件分支判断指令的指令字段的解码和执行操作,当满足表1的条件时,则控制模块45指示指令执行模块43执行条件分支判断指令的指令操作以获取分支判断结果(result),并根据条件分支判断指令的第二使能字段(即enable_dest字段)查找表2确定如何将该分支判断结果写入对应的控制寄存器44中,其中,根据指令的op字段决定是进入根据enable_dest字段进行操作还是根据dest字段进行操作;分支判断结果写入控制寄存器44后,控制模块45根据分支判断结果和表1为该条件分支判断指令对应的分支指令设置不同的第一使能字段,之后,根据下一个PC值读取指令进行执行。
当读取到分支指令时,同理,根据分支指令的第一使能字段查找表1以及读取控制寄存器的存储数值以判断是否进入该分支指令的解码和执行操作,当判断进入解码和执行操作时,由指令执行模块43执行指令得到指令操作结果,并根据分支指令的第三字段(即dest字段)将结果写入对应的数据寄存器,也即数据存储模块44中。其他普通指令的执行过程与分支指令的执行过程相同,不再赘述。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (6)
1.一种指令分支执行控制方法,包括条件分支判断指令与分支指令的控制方法,其特征在于,指令中包括第一使能字段和指令字段,所述指令分支执行控制方法提供控制寄存器,包括:
执行条件分支判断指令,获取分支判断结果;
将所述分支判断结果写入控制寄存器;
根据所述分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的所述第一使能字段,所述操作对应表存储有不同的所述第一使能字段和依据不同所述控制寄存器的存储数值进行相应操作的指令操作的对应关系,所述指令操作包括判断所述控制寄存器的存储数值为第一预设值,则进入当前指令的指令字段的解码和执行操作的第一操作,以及判断所述控制寄存器的存储数值为第二预设值,则跳过当前指令的指令字段的解码和执行操作的第二操作;
在执行分支指令时,根据所述分支指令的第一使能字段查找所述操作对应表,从相应的所述控制寄存器获取存储数值以执行对应的所述指令操作;
在所述执行条件分支判断指令,获取分支判断结果之前,还包括:
预先设置条件分支判断指令的第二使能字段,所述第二使能字段设置在所述条件分支判断指令的第一使能字段之后;
所述将所述分支判断结果写入控制寄存器,包括:
根据所述条件分支判断指令的第二使能字段,查找结果处理对应表,获取对应的结果处理操作;所述结果处理对应表存储有不同的第二使能字段与不同的结果处理操作的对应关系,所述结果处理操作包括将分支判断结果写入控制寄存器的第一结果处理操作,以及将分支判断结果取反后写入控制寄存器的第二结果处理操作。
2.根据权利要求1所述的方法,其特征在于,在所述执行条件分支判断指令,获取分支判断结果之前,还包括:
预先设置所述条件分支判断指令的第一使能字段和指令操作;
获取所述条件分支判断指令后,根据所述第一使能字段查找所述操作对应表,获取对应的指令操作;
当所述指令操作为所述第一操作时,进入所述条件分支判断指令中的指令字段的解码和执行操作,以获取所述分支判断结果。
3.根据权利要求1或2所述的方法,其特征在于,所述指令分支执行控制方法,还包括:
不同的条件分支判断指令的分支判断结果写入不同的控制寄存器;
或者,
通过刷新控制寄存器所存储的数值,未存在嵌套的多个条件分支判断指令共用一个控制寄存器。
4.一种指令分支执行控制装置,其特征在于,指令中包括第一使能字段和指令字段,所述指令分支执行控制装置包括:
分支判断结果获取模块,用于执行条件分支判断指令,获取分支判断结果;
结果写入模块,用于将所述分支判断结果写入控制寄存器;
使能字段设置模块,用于根据所述分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的所述第一使能字段,所述操作对应表存储有不同的所述第一使能字段和依据不同所述控制寄存器的存储数值进行相应操作的指令操作的对应关系,所述指令操作包括判断所述控制寄存器的存储数值为第一预设值,则进入当前指令的指令字段的解码和执行操作的第一操作,以及判断所述控制寄存器的存储数值为第二预设值,则跳过当前指令的指令字段的解码和执行操作的第二操作;
分支指令执行模块,用于在执行分支指令时,根据所述分支指令的第一使能字段查找所述操作对应表,从相应的所述控制寄存器获取存储数值以执行对应的所述指令操作。
5.一种处理器,其特征在于,包括指令存储模块、数据存储模块、指令执行模块、控制寄存器和控制模块;所述指令存储模块与所述控制模块连接,所述控制模块与所述指令执行模块连接,所述控制模块与所述控制寄存器连接,所述指令执行模块与所述数据存储模块连接,所述指令执行模块的输出端与所述控制寄存器的输入端连接,其中,
所述指令存储模块用于存储指令,所述指令中包括第一使能字段和指令字段;
所述数据存储模块用于数据存取;
所述指令执行模块用于进行各种指令执行操作运算;
所述控制寄存器用于存储条件分支判断指令的分支判断结果;
所述控制模块用于指示所述指令执行模块执行条件分支判断指令,以获取分支判断结果,并将所述分支判断结果写入所述控制寄存器,再根据所述分支判断结果和操作对应表,分别对需执行的分支指令、无需执行的分支指令设置不同的所述第一使能字段,所述操作对应表存储有不同的所述第一使能字段和依据不同所述控制寄存器的存储数值进行相应操作的指令操作的对应关系,所述指令操作包括判断所述控制寄存器的存储数值为第一预设值,则进入当前指令的指令字段的解码和执行操作的第一操作,以及判断所述控制寄存器的存储数值为第二预设值,则跳过当前指令的指令字段的解码和执行操作的第二操作。
6.一种处理器,其特征在于,用于执行如权利要求1-3任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910832298.5A CN110688153B (zh) | 2019-09-04 | 2019-09-04 | 一种指令分支执行控制方法及相关设备、指令结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910832298.5A CN110688153B (zh) | 2019-09-04 | 2019-09-04 | 一种指令分支执行控制方法及相关设备、指令结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110688153A CN110688153A (zh) | 2020-01-14 |
CN110688153B true CN110688153B (zh) | 2020-08-11 |
Family
ID=69107744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910832298.5A Active CN110688153B (zh) | 2019-09-04 | 2019-09-04 | 一种指令分支执行控制方法及相关设备、指令结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110688153B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11663013B2 (en) * | 2021-08-24 | 2023-05-30 | International Business Machines Corporation | Dependency skipping execution |
CN114253821B (zh) * | 2022-03-01 | 2022-05-27 | 西安芯瞳半导体技术有限公司 | 一种分析gpu性能的方法、装置及计算机存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1359488A (zh) * | 1999-05-03 | 2002-07-17 | 英特尔公司 | 强静态预测分支指令的优化执行 |
CN102566974A (zh) * | 2012-01-14 | 2012-07-11 | 哈尔滨工程大学 | 基于同时多线程的取指控制方法 |
CN106843816A (zh) * | 2017-01-23 | 2017-06-13 | 青岛朗思信息科技有限公司 | 一种分支预测控制方法及装置 |
-
2019
- 2019-09-04 CN CN201910832298.5A patent/CN110688153B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1359488A (zh) * | 1999-05-03 | 2002-07-17 | 英特尔公司 | 强静态预测分支指令的优化执行 |
CN102566974A (zh) * | 2012-01-14 | 2012-07-11 | 哈尔滨工程大学 | 基于同时多线程的取指控制方法 |
CN106843816A (zh) * | 2017-01-23 | 2017-06-13 | 青岛朗思信息科技有限公司 | 一种分支预测控制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110688153A (zh) | 2020-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102447636B1 (ko) | 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법 | |
US9798519B2 (en) | Standard format intermediate result | |
US9916130B2 (en) | Apparatus and method for vector processing | |
US7949696B2 (en) | Floating-point number arithmetic circuit for handling immediate values | |
US10678540B2 (en) | Arithmetic operation with shift | |
KR20000048533A (ko) | 디지탈 신호처리용 집적회로구조 | |
JP2002517037A (ja) | 混合ベクトル/スカラレジスタファイル | |
CN111767516A (zh) | 用于利用所选择的舍入来执行浮点加法的***和方法 | |
US20130151822A1 (en) | Efficient Enqueuing of Values in SIMD Engines with Permute Unit | |
JPH03218523A (ja) | データプロセッサ | |
CN112148251A (zh) | 跳过无意义的矩阵运算的***和方法 | |
JPH0496825A (ja) | データ・プロセッサ | |
CN110688153B (zh) | 一种指令分支执行控制方法及相关设备、指令结构 | |
JP6738579B2 (ja) | 命令フローを最適化するチェックを実行するための装置および方法 | |
JP5326314B2 (ja) | プロセサおよび情報処理装置 | |
US6889242B1 (en) | Rounding operations in computer processor | |
US7219117B2 (en) | Methods and systems for computing floating-point intervals | |
KR20000048531A (ko) | 데이터 처리장치에서의 입력 오퍼랜드 제어 | |
JP2002229779A (ja) | 情報処理装置 | |
US6275925B1 (en) | Program execution method and program execution device | |
KR19980018071A (ko) | 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리 | |
US20040117420A1 (en) | Methods and systems for computing the quotient of floating-point intervals | |
CN113407154A (zh) | 一种向量计算装置及方法 | |
WO2019046716A1 (en) | CONTROLLED INSTRUMENT PROCESSING BY POINTER SIZE | |
US20220137962A1 (en) | Logarithmic number system |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210208 Address after: 311201 No. 602-11, complex building, 1099 Qingxi 2nd Road, Hezhuang street, Qiantang New District, Hangzhou City, Zhejiang Province Patentee after: Zhonghao Xinying (Hangzhou) Technology Co.,Ltd. Address before: 5-15, block B, building 10, science and technology ecological park, Gaoxin South Jiudao East, Nanshan District, Shenzhen City, Guangdong Province Patentee before: Shenzhen Xinying Technology Co.,Ltd. |