CN103348318A - 控制依赖于相同数据条件的相邻指令的执行 - Google Patents
控制依赖于相同数据条件的相邻指令的执行 Download PDFInfo
- Publication number
- CN103348318A CN103348318A CN2012800078607A CN201280007860A CN103348318A CN 103348318 A CN103348318 A CN 103348318A CN 2012800078607 A CN2012800078607 A CN 2012800078607A CN 201280007860 A CN201280007860 A CN 201280007860A CN 103348318 A CN103348318 A CN 103348318A
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- satisfied
- response
- qualification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000001419 dependent effect Effects 0.000 title abstract description 3
- 230000004044 response Effects 0.000 claims abstract description 73
- 238000012545 processing Methods 0.000 claims abstract description 56
- 238000000034 method Methods 0.000 claims abstract description 35
- 230000008859 change Effects 0.000 claims abstract description 19
- 238000012797 qualification Methods 0.000 claims description 97
- 238000012360 testing method Methods 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 9
- 239000003550 marker Substances 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 7
- 101100508818 Mus musculus Inpp5k gene Proteins 0.000 description 79
- 101100366438 Rattus norvegicus Sphkap gene Proteins 0.000 description 79
- 210000003811 finger Anatomy 0.000 description 5
- 230000001351 cycling effect Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000002349 favourable effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000009191 jumping Effects 0.000 description 3
- 230000000875 corresponding effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000004088 simulation 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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
-
- 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/30058—Conditional branch instructions
-
- 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3846—Speculative instruction execution using static prediction, e.g. branch taken strategy
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/30018—Bit or string instructions
-
- 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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
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)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
Abstract
本发明公开一种数据处理设备,其具有被配置为解码指令流的指令解码器和被配置为处理被解码的指令流的数据处理器;其中响应于指令流内的其执行依赖于数据条件被满足并且当所述数据条件不满足时其执行不改变所述处理设备的状态的多个相邻指令,所述处理器被配置为:开始确定数据条件是否被满足;并且开始处理所述多个相邻指令;并且响应于确定所述数据条件不被满足,在不执行还未被执行的所述多个相邻指令的任何中间指令的情况下,跳跃到所述多个相邻指令之后的要被执行的下一个指令,并且继续执行该下一个指令。
Description
技术领域
本发明涉及数据处理设备,并且具体地涉及处理其执行依赖于数据条件的预测指令。
背景技术
已知其执行取决于具体数据条件的条件指令。例如CMP x y,ADDGE,SUBLT指令,其比较位置x和y中存储的两个值并且如果x大于或等于y则将其相加;如果x小于y则将其分别相减。
在多数据元素上执行操作的向量指令变得越来越普遍。其经常使用掩码来控制那些元素被处理。例如,使用掩码10000001执行8元素向量存储指令将仅存储两个元素(第一个和最后一个)。当写入以该方式使用掩码的向量化代码时,常见优化是认识到一系列指令都通过相同掩码被控制并且如果掩码是零则围绕全部这些指令***分支,因为在这种情况下,指令将不做任何事情。因此,代码将变为:
VCMP D0,D1,D2;比较D1和D2,在D0放置产生的掩码
VTEST D0;测试是否D0的全部位是零
BEQL1;如果掩码是零,跳跃接下来的10个操作
D0→VOP1;在掩码D0控制下执行向量操作1
D0→VOP2;在掩码D0控制下执行向量操作2
.
.
.
D0→VOP10;在掩码D0控制下执行向量操作10
L1
这在掩码经常是零时是非常有效的,因为此时测试和分支仅花费两个指令并且避免了执行分支不存在时将被执行的10个指令的需要。然而,现有技术方法的问题是分支是数据依赖的,因为其是否被进行取决于两个数据值D1和D2。数据依赖分支很难预测,并且因此如果分支预测被用于加快操作,则分支可能经常被误预测,并且如果当其不应该被进行时预测其被进行,则机器的状态将需要被回滚到其在进行分支之前的状态。当执行向量处理时,由于数据字的长度,保存机器的状态在某一点在区域方面是昂贵的。
期望能改进条件指令执行的性能。
发明内容
本发明的第一方面提供数据处理设备,该数据处理设备包括被配置为解码指令流的指令解码器和被配置为处理所述被解码的指令流的数据处理器;所述数据处理器被配置为分析所述指令流并且识别所述指令流内的其执行依赖于数据条件被满足并且当所述数据条件不被满足时其执行不改变数据寄存器中存储的值的多个相邻指令,并且响应于识别所述多个相邻指令,所述数据处理器被配置为:开始确定所述数据条件是否被满足;并且开始处理所述多个相邻指令;并且响应于确定所述数据条件不被满足,在不执行还未被执行的所述多个相邻指令的任何中间指令的情况下,跳跃到所述多个相邻指令之后的要被执行的下一个指令,并且继续执行所述下一个指令。
本发明认识到在具有全部依赖于相同条件的条件执行指令的情况中,以及在当条件未被完全满足时其执行不影响数据设备的状态的情况中,可以在条件被确定之前开始处理这些指令,并且如果发现这些指令不应该被执行,可以在该点跳跃到这些指令的末端。在该方面,不改变数据处理设备的状态是指存储在数据寄存器中的数据值不被改变,因此指令不重写任何存储值,这样,在指令不应该被执行的情况下,不需要执行状态恢复。在该方面,指令的执行将改变诸如程序计数器的值之类的东西,或许还有缓存,然而在被执行指令的目的寄存器中的值不改变的位置,如果指令在不应该被执行时被执行了,则不需要回滚,因为其执行将不影响未来指令的执行。因此,在不需要状态恢复的位置,可以将状态视为没有改变。
因此,在不具有需要执行额外的恢复步骤的缺点的情况下,可以实现以相关性能和功率优势跳跃一些指令的执行的优点。应该注意到存在与处理该“跳跃”步骤所需的额外电路关联的小的费用。
在一些实施例中,所述数据处理设备进一步包括数据存储器,所述数据处理设备响应于所述多个相邻指令将标识符存储在所述数据存储器中并且在所述数据存储器中设置跳跃标记,该标识符标识在执行所述多个相邻指令之后要被执行的所述下一个指令的位置作为目标位置,所述跳跃标记指示所述处理器:响应于所述数据条件未被满足,所述处理器应该使用对应于所述目标位置的地址更新程序计数器。
尽管指令的跳跃可以以多种方式被实现,但是在一些实施例中,多个相邻指令的检测触发处理器设置跳跃标记并且存储目标位置的指示,该跳跃标记指示处理器当确定条件未被满足时,其可以跳跃到目标位置。即它可以停止执行多个相邻指令并且可以继续在目标位置执行指令,此时未被执行的相邻指令的任何一个将不被执行,因为此时知道其所依赖的条件未被满足。
在一些实施例中,标识所述下一个指令位置的所述标识符包括地址。
指令执行将跳跃到的目标位置可以以多种方式被指示,在一些实施例中,其仅包括地址。这种情况下,程序计数器可以仅使用该信息被更新。在其它实施例中,该信息可以被存储为标识相邻指令数目的标识符,在该情况,计数器可以使用该值被更新并且其可以在每次指令被执行时递减并且在确定条件未被满足时,程序计数器可以使用来自计数器的信息被更新。
在一些实施例中,所述多个相邻指令包括用于处理向量数据元素的向量指令,每个向量指令包括控制所述向量数据元素中哪些元素被处理的掩码,不被满足的所述数据条件包括所述掩码包含指示无数据元素将被处理的零。
当使用向量指令时,该技术是特别有利的。当处理向量数据元素时,如果使用分支指令围绕条件指令进行分支,那么为了说明任何误预测,分支的处理器状态将需要被存储。使用向量数据元素,该状态的存储是非常昂贵的,因为这些数据元素非常大。因此,因为本技术避免需要不断回滚从而无状态需要被存储,所以当使用向量数据元素时是非常有利的。
向量数据元素的处理经常使用向量掩码被控制,该向量掩码控制向量数据元素中的哪些元素将被处理。如果掩码是全零,那么这指示没有一个元素将被处理。因此,本发明实施例可以以掩码非零为数据条件。因此,如果数据条件不被满足,则掩码是全零,此时知道指令的执行将不改变处理器的状态并且实际上不需要并且可以跳跃还未被执行的这些指令中的任意一个。还知道已经被执行的但不需要执行的任何中间指令不改变处理器的状态,并且因此不需要状态回滚。
在一些实施例中,所述多个相邻指令包括其各自包含相同谓词的多个指令,所述谓词确定所述数据条件,所述指令响应于所述谓词被满足仅仅完成和更新任何存储的数据值;所述数据处理设备被配置为:开始处理所述多个相邻指令,并且响应于确定所述数据条件未被满足,终止所述多个相邻指令的执行以便无存储的数据值被更新;在不执行还未被执行的所述多个相邻指令的任何中间指令的情况下,跳跃到所述多个相邻指令之后的下一个指令,并且继续执行所述下一个指令。
本技术也适于使用依赖于谓词来执行的指令。一旦确定谓词条件被满足,此类指令仅仅完成和更新处理器的状态。然而,在知道谓词的结果之前,它们确实开始处理数据。因此,在知道谓词的条件或结果之前,这些指令也可以被执行。如果谓词不被满足,那么它们将不写任何它们的计算到存储器,所以处理器的状态将不改变,并且虽然它们已开始其的执行,但是无状态需要被回滚。因此,如果多个这些指令互相相邻,则开始处理它们并且响应于确定谓词条件未被满足终止多个相邻指令的执行并且跳跃到其后的下一个指令是有利的。
在一些实施例中,所述数据处理设备进一步包括数据存储器和检测电路;所述检测电路响应于检测到依赖于所述数据条件未被满足的条件分支指令围绕所述多个相邻指令向前分支以:将指示所述分支指令的目标位置的值存储在所述数据存储器中作为所述目标位置并且在所述数据存储器中设置所述跳跃标记值;所述处理器响应于所述跳跃标记不进行所述分支并且开始确定所述数据条件是否被满足,开始执行所述多个相邻指令;并且响应于确定所述数据条件未被满足将程序计数器设置为依赖于所述目标位置的值。
正如在本申请的介绍中提到的,处理这些多个相邻指令的传统方法是围绕其分支。因此,如果数据处理设备被配置成检测依赖于数据条件的、其后跟随多个这些相邻指令的条件分支指令,则发起跳跃程序而不是进行分支是有利的。因此,不是进行分支和必须存储状态以防分支被误预测,而是数据处理设备识别指令模式并且开始处理设置了跳跃标记的相邻指令,以便当确定条件是否被满足时,如果条件未被满足,其可以跳跃到这些相邻指令的末端,反之如果条件被满足其仅仅继续执行全部相邻指令并且清除跳跃标记。
在一些实施例中,所述条件分支指令取决于向量值,所述处理器通过执行测试所述向量的值的向量测试指令,开始确定所述数据条件是否被满足,并且响应于所述向量值被确定为包括预定值,确定所述数据条件未被满足。
在一些实施例中,条件分支指令取决于向量值。在此情况下,处理器将通过执行向量测试指令开始确定所述数据条件是否被满足,并且然后将开始执行多个相邻指令。当向量测试指令的结果已经被收到,如果其指示条件未被满足,处理器将跳跃到相邻指令的末端并且继续从下一个指令开始处理。
在一些实施例中,所述数据处理设备进一步包括数据存储器和检测电路;所述检测电路响应于检测到依赖于所述数据条件的条件分支指令向后分支到所述多个相邻指令的开始以:将被增加1的所述分支指令的位置存储在所述数据存储器中作为所述目标位置并且在所述数据存储器中设置跳跃标记值;所述处理器响应于所述跳跃标记进行所述分支并且确定所述数据条件是否被满足,并且开始执行所述多个相邻指令;并且响应于确定所述数据条件未被满足将程序计数器设置为依赖于在所述数据存储器中作为所述目标位置存储的值的值。
本发明实施例也可以用于处理向后分支,其中取决于相同条件的一串相邻指令由向后分支被分支。在该情况下,当处理设备识别该指令模式时,其将进行分支并且开始执行相邻指令。然而,一旦确定条件是否被满足,如果条件未被满足,则将停止执行相邻指令并且将继续执行在它所进行的分支之后的程序流中的后继指令。
再一次,如果条件分支指令取决于向量,那么处理器通过执行测试向量值的向量测试指令确定数据条件是否被满足。
在一些实施例中,数据处理设备进一步包括数据存储器和检测电路;响应于检测到这样的指令,所述指令指示依赖于所述数据条件的所述多个相邻指令在该指令之后,其中所述指令包括所述数据条件和对于要被完成的每个指令所述数据条件是否应该被满足的指示,所述检测电路:存储将所述多个指令之后的所述下一个指令的位置标识为所述目标位置的标识符并且在所述数据存储器中设置跳跃标记值;响应于确定所述数据条件未被满足,所述处理器响应于所述跳跃标记跳跃到所述目标位置。
在一些实施例中,提供检测电路用于检测指令模式,其中实现跳跃功能将是有利的。
在一些实施例中,响应于确定所述数据条件被满足,所述处理器被配置为继续执行所述多个相邻指令并且清除所述跳跃标记。
如果处理器确定数据条件被满足,那么多个相邻指令确实需要被执行,在该情况下,处理器继续执行它们并且清除跳跃标记。
在一些实施例中,响应于在所述数据条件被确定之前执行全部相邻指令,所述处理器被配置为清除所述跳跃标记。
此外,如果在全部相邻指令被执行前数据条件未被确定,那么在该情况下处理器是否应该跳跃和跳跃标记是否应该被清除不再相关。
本发明的第二方面提供数据处理设备,其包括:被配置为解码至少一个跳跃指令的指令解码器,其中所述至少一个跳跃指令指定目标寄存器和数据条件寄存器;被配置为执行由所述指令解码器控制的数据处理操作的数据处理器,其中:所述数据处理器响应于所述解码的至少一个跳跃指令开始确定所述数据条件并且开始处理所述指令流内的后继指令,并且响应于确定所述数据条件不具有预定结果将程序计数器设置为依赖于存储在所述目标寄存器中的值的值。
虽然数据处理器可以产生具有检测的指令模式的跳跃指令的功能,但是在一些实施例中,跳跃指令是处理器将解码和执行并且然后实施跳跃功能的实际指令。
在一些实施例中,所述指令解码器响应于所述至少一个跳跃指令在所述数据存储器中设置跳跃标记。
解码器可以以多种方式响应跳跃指令,但是在一些实施例中,其设置指示处理器正在等待关于数据条件的确定结果的跳跃标记,并且一旦得到如果条件未被满足的结果,那么需要执行跳跃功能。
本发明的第三方面提供数据处理设备,其包括:被配置为解码至少一个循环指令的指令解码器,其中所述至少一个循环指令指定目标寄存器和数据条件寄存器;被配置为执行由所述指令解码器控制的数据处理操作的数据处理器,其中:所述数据处理器响应于所述解码的至少一个循环指令开始确定所述数据条件并且将所述程序计数器设置为先前执行的指令在所述循环开始处的地址,并且开始处理所述指令流内的指令,并且响应于确定所述数据条件不具有预定结果将程序计数器设置为依赖于存储在所述目标寄存器中的值的值。
可获得的附加指令是循环指令,其允许一旦确定其所依赖的条件未被满足则跳跃向后分支进行到的相邻指令。
本发明的第四方面提供编译数据处理器执行的应用程序的方法,该方法包括下述步骤:分析所述应用程序中的多个指令;产生包括其后跟随多个相邻指令的跳跃指令的指令流,所述多个相邻指令的执行依赖于相同数据条件并且当所述数据条件未被满足时所述多个相邻指令的执行不改变数据寄存器中存储的值,所述跳跃指令指定目标地址,所述目标地址是所述相邻指令和所述数据条件之后的下一个指令的地址,当由所述数据处理器执行时,所述跳跃指令控制所述数据处理器开始确定所述数据条件是否被满足;并且开始处理所述多个相邻指令,并且响应于确定所述数据条件被满足,在不执行还未被执行的所述多个相邻指令的任何中间指令的情况下,跳跃到所述多个相邻指令之后的下一个指令,并且继续执行所述下一个指令;并且响应于确定所述数据条件未被满足,继续执行所述多个相邻指令。
响应于分析代码和确定存在全部依赖于相同数据条件并且如果数据条件未被满足则其执行不改变处理器的状态的多个相邻指令,编译器也可以产生跳跃指令。以该方式,在代码被处理器执行之前,编译器提供代码的优化。
本发明的第五方面提供编译数据处理器执行的应用程序的方法,该方法包括下述步骤:分析所述应用程序中的多个指令;产生包括循环指令的指令流,该循环指令指定要跳转到的多个相邻指令中的第一个的地址,所述多个相邻指令包括其执行依赖于相同数据条件并且当所述数据条件未被满足时其执行不改变数据寄存器中存储的值的指令,所述循环指令指定所述数据条件和目标地址,所述目标地址是所述循环指令和所述数据条之后的下一个指令的地址,当由所述数据处理器执行时,所述循环指令控制所述数据处理器开始确定所述数据条件是否被满足;并且跳转到且开始处理所述多个相邻指令,并且响应于确定所述数据条件被满足,在不执行还未被执行的所述多个相邻指令的任何中间指令的情况下,跳跃到由所述目标地址指定的所述指令,并且继续执行所述指令;并且响应于确定所述数据条件未被满足,继续执行所述多个相邻指令。
响应于检测到向多个相邻条件指令的向后分支,编译器也可以产生循环指令。再一次,这可以改进处理此种指令的处理器的性能。
本发明的第六方面提供用于控制设备执行根据本发明的第五或第六方面的方法的计算机程序产品。
本发明的第七方面提供处理数据的方法,该方法包括下述步骤:解码指令流;处理所述被解码的指令流;响应于所述指令流内的其执行依赖于数据条件被满足并且当所述数据条件不满足时其执行不改变数据寄存器中存储的值的多个相邻指令:开始确定数据条件是否被满足;并且开始处理所述多个相邻指令;并且响应于确定所述数据条件不被满足,在不执行还未被执行的所述多个相邻指令的任何中间指令的情况下,跳跃到所述多个相邻指令后的要被执行的下一个指令,并且继续执行所述下一个指令。
本发明的第八方面提供由在数据处理设备上执行计算机程序而提供的虚拟机器,所述虚拟机器提供根据本发明的第一方面的数据处理设备的指令执行环境。
本发明的上述和其它目标、特征和优点在结合附图阅读说明性实施例的下面详细描述中是显而易见的。
附图说明
图1示出根据本发明实施例的数据处理设备。
图2a和图2b示出跳跃指令的示例。
图3示出循环指令的示例。
图4示出通过处理设备以指令模式识别模式进入的状态。
图5示意性示出根据本发明实施例的编译器。
图6示出根据本发明另一个实施例的数据处理设备。
图7示出图示说明根据本发明实施例的执行跳跃操作的方法中的步骤的流程图。
图8示出图示说明根据本发明实施例的执行循环操作的方法中的步骤的流程图。
图9示出编译包括产生循环指令和跳跃指令的程序的方法中的步骤。
图10示出本发明实施例的虚拟机器实现。
具体实施例
图1根据本发明实施例示出用于处理指令流的数据处理设备10。数据处理设备10具有用于存储要被处理的指令的指令缓存器12。这些指令根据程序计数器40中的值通过取指单元14被取指。被取指指令被发送到指令解码器16用于解码并且然后被并行执行流水线18中的一个执行。取指单元、解码单元和执行流水线形成用于处理指令的处理电路30。还存在包括保存控制指令的执行的控制值的寄存器的数据存储器20和包括用于存储由执行的指令处理的数据值的寄存器的另一个数据存储器35。应该注意到在一些实施例中,数据存储器20和数据存储器35可以形成单个寄存器组。
在本发明的实施例中,被取指的指令包括其后跟随全部取决于非零向量掩码的多个向量指令的跳跃指令。如果向量掩码是零,那么响应于多个向量指令在任何数据元素上无操作被执行。跳跃指令包含一个寄存器说明符,其标识出包含向量掩码和指令地址的寄存器;该指令地址是目标地址,即是指令流中多个向量指令的最后一个之后的指令的地址。
当解码跳跃指令时,解码器将目标地址的值写入寄存器22,并且将向量掩码寄存器的地址写入寄存器23,并且其在寄存器21中设置跳跃标记。跳跃标记指示处理电路30:跳跃待定,并且如果确定数据条件未被满足,在该情况下,向量掩码寄存器包含零,那么程序计数器40应该被设置为目标寄存器22中的值。
因此,响应于跳跃指令,解码器在数据存储器20中写入这些值并且流水线18中的一个执行向量测试指令,向量测试指令检查向量掩码寄存器的值来看它是否是零。连续条件向量指令中的第一条件向量指令然后在并行流水线18中的另一个中被执行。解码和取指单元继续取指和解码这些连续指令直到向量测试操作确定向量掩码的结果。如果向量掩码是零,那么程序计数器被设置为跳跃指令的目标值并且这是被取指的下一个指令。如果向量掩码不是零,那么响应于数据存储器20中的跳跃指令而设置的跳跃标记被重置以便连续指令全部被执行。
应该注意虽然如果向量掩码是零,则向量掩码寄存器的值被确定时不需要被执行的一些指令可能已经被执行,但是向量掩码是零意味着无元素从这些操作中被存储,因而寄存器35中的数据值不被重写并且处理器的状态不被改变,因为无状态需要被重新存储并且处理器可以仅仅跳跃到目标指令。
图2a和图2b示出跳跃指令以及处理器如何实现该跳跃指令的示例。因此,SKIP P,L指示到依赖于条件P的地址L的可选分支。
在跳跃指令后,如果处理器能够立即辨析条件P,那么处理器将立即分支到地址L。如果处理器不能立即辨析该条件,那么其将继续执行取决于值P的后继指令。处理器具有通过修改下面三个寄存器来“记住”它具有未辨析的跳跃。其通过将pending_skip(待定跳跃)设置为真(true)修改跳跃标记寄存器。如果通过将其设置为L修改target_skip(目标跳跃)寄存器,L是要分支到的地址,其设置register_skip(寄存器跳跃)为P,在该情况下,其是向量掩码寄存器。
图2b示出处理器如何针对指令而动作。当待定跳跃标记被设置为pending_skip=true(待定跳跃=真)时,如果程序计数器达到跳跃指令的目标地址,那么跳跃标记被重置为pending_skip=false(待定跳跃=假),因为此时全部连续指令被执行并且因此跳跃不再待定。此外,如果跳跃指令依赖的条件被辨析,在该情况下如果向量掩码寄存器是零,那么程序计数器被设置为target_skip(目标跳跃)地址,并且全部中间连续指令被跳跃。此时,跳跃标记被再次重置为假(false)。
应该注意到虽然设置待定跳跃标记并且允许处理器不处理其条件未被满足的指令将改进处理器的性能,但是这不是必需的并且如果这些指令不被跳跃处理器仍将正确执行。因此,在任何时候,处理器可以重置跳跃标记。它可以在用于确定条件是否被满足的比较执行起来比较困难并且因此不大可能在取决于其的指令之前被执行的场合这样做。这可以在通过重置跳跃标记,处理器释放存储目标地址、向量掩码和标记的寄存器时被实现。
应该注意到虽然在上面给出的示例中跳跃指令指定地址,但是其也可以指定要跳跃的指令的数目或指令字节的数目。如果该实现方式被使用,那么响应于执行跳跃指令,计数器将被设置为该数目并且其将对于被执行的连续指令中的每个指令而渐减。当计数器为零时,退出跳跃区域并且跳跃标记被重置。然而,如果计数器不达到零,并且向量掩码被发现是零,那么计数器中剩余的指令数目将被跳跃,换句话说,程序计数器将被增加该值。
指定谓词寄存器的地址的一种替代是存在用于向量掩码的全局寄存器的情况。在该情况下,寄存器将不需要在跳跃指令内被指定,因为知道跳跃指令总是指代该寄存器。
图3示出跳跃指令、VLOOP指令的变体和该指令具有的行为。
在该情况下,感兴趣的代码是迭代直到掩码变为全零的循环。该代码在几个关键方面不同于上述跳跃代码,因为其使用向后分支,并且在该情况下,我们必须推测该分支被进行,这再次对应于推测掩码是非零。再次(如图4中所示),与用于图2中跳跃指令的寄存器相同的寄存器被用于VLOOP指令以指示目标寄存器和谓词寄存器,但是设置不同标记以指示它是待定VLOOP而不是跳跃指令。如在跳跃指令中一样,一旦确定谓词是全零,则处理器跳跃到目标地址。此时,VLOOP标记被重置为假(false)。
在刚给出的示例中,跳跃和循环操作被架构地实现,因为它们是新指令。它们也可以以微架构方式被实现,其中解码器的早期阶段或预解码器可以识别由相同谓词控制的一系列操作,并且在如果条件未被满足、它们的操作不改变架构状态的场合,其可以实现跳跃操作或循环操作。应该注意到识别该类模式对诸如在本申请介绍中给出的指令那样的向量指令特别简单,这些指令依赖于全局寄存器并且如果全局寄存器恒等于零,则其全部表现得像无ops一样。
图4示意性说明处理器设备10将以模式识别模式操作于其中的不同状态。因此,取指单元14将取指指令并且解码器16的早期阶段将检测特定模式代码。在该示例中,处理器操作在标准的“a”状态并且响应于检测到测试特定向量掩码寄存器P的向量测试操作VTEST,其将register_skip(寄存器跳跃)22设置为该向量掩码值。然后其继续到状态b。如果后继指令是标准指令,其将沿着路线*返回到状态a,因为在该点其认识到其识别的指令模式不在这里。然而如果存在依赖于谓词寄存器P的分支指令,则其将设置target_skip(目标跳跃)寄存器23为分支的目标值,换句话说设置为L,并且其将继续到状态c。在状态c其将处理依赖于向量掩码寄存器的连续操作直到向量掩码寄存器的值被确定。如果向量掩码寄存器的值是零,那么其将通过设置程序计数器为目标跳跃的值来继续到状态d。然后其将在该地址执行指令并且将返回到标准状态a。如果在连续指令操作期间,发现向量掩码不是零或程序计数器上升到上述目标跳跃,那么其将沿着*标记的路线返回到标准状态a。
图5示出根据本发明实施例的编译器50。编译器50接收由程序员写的程序并且将其变成通过处理器处理的代码。当这样做时,执行步骤以优化代码以便其更有效地运行。在本发明的实施例中,其执行与关于图4描述的解码器的早期阶段执行的步骤相似的模式匹配步骤,并且产生控制用于适当地执行跳跃或循环功能的处理的代码。
可以结合跳跃功能来使用的另一指令是Thumb IT指令,该指令指示各种操作应依赖于特定条件而运行。因此,ITTTGE指令指示:如果一个值大于等于另一个,则接下来的三个操作应被执行。由于这些操作直到该条件的结果已知才被写回,因此跳跃标记可以被设置并且如果确定了条件GE在头三个操作被完成之前未被满足,则处理器可以跳跃到第四个操作。
图6示出数据处理设备10的替换实施例,其中在寄存器组20中具有被配置为存储待定向量掩码的寄存器24。因此,跳跃指令和vloop指令不指定向量掩码寄存器。在该实施例中,不是在寄存器中设置目标地址,而是取决于条件(诸如用于跳跃指令的向量掩码)的数目的指令被设置在计数器42中。随着这些指令中的每个被执行,信号被发送到计数器并且其被渐减。如果在条件指令仍被执行时条件被确定为未被满足,,那么程序计数器40通过向其增加计数器42中的值被更新。
图7示出图示说明根据本发明实施例的处理指令流的方法中的步骤的流程图。指令流被解码,并且解码器检测依赖于相同数据条件并且当所述数据条件未被满足其执行不改变数据处理器的状态的多个指令。响应于检测到该指令,或在其他实施例中响应于解码跳跃指令,解码器设置跳跃标记并且将跳跃操作的目标地址写到目标地址寄存器。在解码器正在解码跳跃指令的情况下,该目标地址被指定在跳跃指令中;或者在检测到依赖于相同数据条件的多个指令的情况下,其是这些指令之后的指令的地址。
处理器然后确定结果数据条件是否已经被确定。如果未被确定,那么执行相邻条件指令中的第一个。然后确定程序计数器是否大于目标地址,如果不大于,那么如果条件仍未被确定,则执行后继条件指令,并且程序计数器被再次检查。
如果在某一时刻条件的结果被确定,那么如果其被满足,则跳跃标记被重置并且继续执行条件指令。如果条件未被满足,那么通过设置程序计数器到目标地址,程序跳跃到目标地址并且跳跃标记被重置。
然而如果在条件结果被确定之前,程序计数器达到目标地址,那么跳跃标记被重置并且继续以标准方式执行指令流。
图8示出图示说明处理包括向多个条件指令的向后跳转的指令流的方法中的步骤的流程图。指令流被解码,并且所述解码器检测向依赖于相同数据条件并且当所述数据条件不被满足其执行不改变数据处理器状态的多个指令的向后跳转。响应于检测到该跳转,或在其他实施例中响应于解码循环指令,解码器设置vloop标记并且将循环操作的目标地址写到目标地址寄存器。该目标地址是渐增1的现行程序计数器。
处理器然后向后跳转到第一条件指令。然后确定条件结果是否已经被确定。如果未被确定,那么执行下一个指令并且再次进行确定。如果已经被确定,那么如果条件被满足,则vloop标记被重置并且继续指令条件指令。如果条件不被满足,则程序跳转到目标地址并且重置vloop标记。如果当条件指令被执行时条件未被确定,则在程序流中将发生回到目标地址的分支,并且此时vloop标记将被重置。这些步骤未被示出。
图9示出编译程序的方法中的步骤。程序内的指令被分析并且确定是否存在依赖于相同数据条件并且其执行不改变处理器状态的多个相邻条件指令。如果这些指令被检测到,则确定是否存在到这些指令的向后分支。如果不存在,则跳跃指令被产生并置于指令流中,其后跟随多个条件指令。如果存在向后分支,那么产生循环指令。
图10图示说明可以使用的虚拟机器实现。虽然先前描述的实施例在用于操作支持相关技术的特定处理硬件的设备和方法方面实施了本发明,但是也可能提供所谓的硬件装置的虚拟机器实现。这些虚拟机器实现在运行主机操作***520的主机处理器530上运行,主机操作***520支持虚拟机器程序510。典型地,需要大功率处理器以提供以合理速度运行的虚拟机器实现,但是此方法在某些情况下是合理的,诸如当出于兼容或重使用原因期望运行本地代码到另一个处理器时。虚拟机器程序510提供到应用程序500的应用程序接口,其与由真实硬件提供的应用程序接口相同,该真实硬件是由虚拟机器程序510模拟的装置。因此,包括上述存储器访问的控制的程序指令可以使用虚拟机器程序510从应用程序500内被执行以模拟其与虚拟机器硬件的相互作用。
虽然本发明的说明性实施例已经参考附图被详细描述,但是应该理解本发明不限于这些具体实施例,在不偏离由权利要求限定的本发明的范围和精神的情况下,本领域技术人员可以在其中实现各种变化和修改。例如,在不偏离本发明的范围的情况下,可以对本发明独立权利要求的特征和从属权利要求的特征进行各种组合。
Claims (21)
1.一种数据处理设备,包括:
被配置为解码指令流的指令解码器;
被配置为处理所述被解码的指令流的数据处理器;其中
所述数据处理器被配置为分析所述指令流并且识别所述指令流内的其执行依赖于数据条件被满足并且当所述数据条件不被满足时其执行不改变数据寄存器中存储的值的多个相邻指令,并且响应于识别所述多个相邻指令,所述数据处理器被配置为:
开始确定所述数据条件是否被满足;以及
开始处理所述多个相邻指令;并且
响应于确定所述数据条件不被满足,在不执行还未被执行的所述多个相邻指令的任何中间指令的情况下,跳跃到所述多个相邻指令后的要被执行的下一个指令,并且继续执行所述下一个指令。
2.根据权利要求1所述的数据处理设备,所述数据处理设备进一步包括数据存储器,所述数据处理设备响应于所述多个相邻指令将标识符存储在所述数据存储器中并且在所述数据存储器中设置跳跃标记,所述标识符标识在执行所述多个相邻指令后要被执行的所述下一个指令的位置作为目标位置,所述跳跃标记向所述处理器指示:响应于所述数据条件未被满足,所述处理器应该使用对应于所述目标位置的地址更新程序计数器。
3.根据权利要求2所述的数据处理设备,其中标识所述下一个指令的位置的所述标示符包括地址。
4.根据上述任一权利要求所述的数据处理设备,其中所述多个相邻指令包括用于处理向量数据元素的向量指令,每个向量指令包括控制所述向量数据元素中哪些元素被处理的掩码,不被满足的所述数据条件包括所述掩码包含指示无数据元素将被处理的零。
5.根据权利要求1-3中任意一个所述的数据处理设备,其中所述多个相邻指令包括各自包含相同谓词的多个指令,所述谓词确定所述数据条件,所述谓词被满足等同于所述数据条件不被满足,所述指令响应于所述谓词被满足仅仅完成和更新任何存储的数据值,所述数据处理设备被配置为:
开始处理所述多个相邻指令;以及
响应于确定所述数据条件不被满足:
终止执行所述多个相邻指令以便无存储的数据值被更新;
在不执行还未被执行的所述多个相邻指令的任何中间指令的情况下,跳跃到所述多个相邻指令之后的下一个指令,并且继续执行所述下一个指令。
6.根据权利要求2或3所述的数据处理设备,所述数据处理设备进一步包括数据存储器和检测电路;
所述检测电路响应于检测到依赖于所述数据条件未被满足的条件分支指令围绕所述多个相邻指令向前分支以:
将指示所述分支指令的目标位置的值存储在所述数据存储器中作为所述目标位置并且在所述数据存储器中设置所述跳跃标记值;
所述处理器响应于所述跳跃标记不进行所述分支并且开始确定所述数据条件是否被满足;
开始执行所述多个相邻指令;并且
响应于确定所述数据条件未被满足将程序计数器设置为依赖于所述目标位置的值。
7.根据权利要求6所述的数据处理设备,其中所述条件分支指令取决于向量值,所述处理器通过执行测试所述向量的值的向量测试指令,开始确定所述数据条件是否被满足,并且响应于所述向量值被确定为包括预定值,确定所述数据条件未被满足。
8.根据权利要求2或3所述的数据处理设备,所述数据处理设备进一步包括数据存储器和检测电路;
所述检测电路响应于检测到依赖于所述数据条件的条件分支指令向后分支到所述多个相邻指令的开始以:
将被增加1的所述分支指令的位置存储在所述数据存储器中作为所述目标位置并且在所述数据存储器中设置跳跃标记值;
所述处理器响应于所述跳跃标记进行所述分支并且确定所述数据条件是否被满足;以及
开始执行所述多个相邻指令;并且
响应于确定所述数据条件未被满足将程序计数器设置为依赖于在所述数据存储器中作为所述目标位置存储的值的值。
9.根据权利要求8所述的数据处理设备,其中所述条件分支指令取决于向量值,所述处理器通过执行测试所述向量的值的向量测试指令,开始确定所述数据条件是否被满足,并且响应于所述向量值被确定为包括预定值,确定所述数据条件未被满足。
10.根据权利要求2或3所述的数据处理设备,进一步包括数据存储器和检测电路;
响应于检测到这样的指令,所述指令指示依赖于所述数据条件的所述多个相邻指令在该指令之后,其中所述指令包括所述数据条件和对于要被完成的每个指令所述数据条件是否应该被满足的指示,所述检测电路:
存储将所述多个指令之后的所述下一个指令的位置标识为所述目标位置的标识符并且在所述数据存储器中设置跳跃标记值;
响应于确定所述数据条件未被满足,所述处理器响应于所述跳跃标记跳跃到所述目标位置。
11.根据权利要求2或3所述的数据处理设备,其中响应于确定所述数据条件被满足,所述处理器被配置为继续执行所述多个相邻指令并且清除所述跳跃标记。
12.根据权利要求2或3所述的数据处理设备,其中响应于在所述数据条件被确定之前执行全部所述相邻指令,所述处理器被配置为清除所述跳跃标记。
13.一种数据处理设备,包括:
被配置为解码至少一个跳跃指令的指令解码器,所述至少一个跳跃指令指定目标寄存器和数据条件寄存器;
被配置为执行由所述指令解码器控制的数据处理操作的数据处理器,其中:
所述数据处理器响应于所述解码的至少一个跳跃指令开始确定所述数据条件并且并始处理所述指令流内的后继指令,并且响应于确定所述数据条件不具有预定结果将程序计数器设置为依赖于存储在所述目标寄存器中的值的值。
14.根据权利要求13所述的数据处理设备,所述数据处理设备包括数据存储器,其中
所述指令解码器响应于所述至少一个跳跃指令在所述数据存储器中设置跳跃标记。
15.一种数据处理设备,包括:
被配置为解码至少一个循环指令的指令解码器,所述至少一个循环指令指定目标寄存器和数据条件寄存器;
被配置为执行由所述指令解码器控制的数据处理操作的数据处理器,其中:
所述数据处理器响应于所述解码的至少一个循环指令开始确定所述数据条件并且将所述程序计数器设置为先前执行的指令在所述循环开始处的地址,并且开始处理所述指令流内的指令,并且响应于确定所述数据条件不具有预定结果将程序计数器设置为依赖于存储在所述目标寄存器中的值的值。
16.一种编译数据处理器执行的应用程序的方法,该方法包括下述步骤:
分析所述应用程序中的多个指令;
产生包括其后跟随多个相邻指令的跳跃指令的指令流,所述多个相邻指令的执行依赖于相同数据条件并且当所述数据条件未被满足时所述多个相邻指令的执行不改变数据寄存器中存储的值;
所述跳跃指令指定目标地址,所述目标地址是所述相邻指令和所述数据条件之后的下一个指令的地址,当由所述数据处理器执行时,所述跳跃指令控制所述数据处理器以:
开始确定所述数据条件是否被满足;以及
开始处理所述多个相邻指令,并且
响应于确定所述数据条件被满足,
在不执行还未被执行的所述多个相邻指令的任何中间指令的情况下,跳跃到所述多个相邻指令之后的下一个指令,并且继续执行所述下一个指令;以及
响应于确定所述数据条件未被满足,继续执行所述多个相邻指令。
17.一种编译数据处理器执行的应用程序的方法,该方法包括下述步骤:
分析所述应用程序中的多个指令;
产生包括循环指令的指令流,该循环指令指定要跳转到的多个相邻指令的第一个的地址,所述多个相邻指令包括其执行依赖于相同数据条件并且当所述数据条件未被满足时其执行不改变数据寄存器中存储的值的指令;
所述循环指令指定所述数据条件和目标地址,所述目标地址是所述循环指令之后的下一个指令的地址,当由所述数据处理器执行时,所述循环指令控制所述数据处理器以:
开始确定所述数据条件是否被满足;以及
跳转到且开始处理所述多个相邻指令,并且
响应于确定所述数据条件被满足,
在不执行还未被执行的所述多个相邻指令的任何中间指令的情况下,跳跃到由所述目标地址指定的所述指令,并且继续执行所述指令;以及
响应于确定所述数据条件未被满足,继续执行所述多个相邻指令。
18.一种存储包括跳跃指令的计算机程序的计算机程序产品,当在数据处理器上执行时所述计算机程序产品可操作以控制所述数据处理器来执行根据权利要求16所述的方法的步骤。
19.一种存储包括循环指令的计算机程序的计算机程序产品,当在数据处理器上执行时所述计算机程序产品可操作以控制所述数据处理器来执行根据权利要求17所述的方法的步骤。
20.一种处理数据的方法,包括下述步骤:
解码指令流;
处理所述解码的指令流;
响应于所述指令流内的其执行依赖于数据条件被满足并且当所述数据条件不被满足时其执行不改变数据寄存器中存储的值的多个相邻指令:
开始确定所述数据条件是否被满足;以及
开始处理所述多个相邻指令;并且
响应于确定所述数据条件未被满足,
在不执行还未被执行的所述多个相邻指令的任何中间指令的情况下,跳跃到所述多个相邻指令后的要被执行的下一个指令,并且继续执行所述下一个指令。
21.一种由在数据处理设备上执行计算机程序而提供的虚拟机器,所述虚拟机器提供根据权利要求1所述的数据处理设备的指令执行环境。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/929,667 | 2011-02-07 | ||
US12/929,667 US9176737B2 (en) | 2011-02-07 | 2011-02-07 | Controlling the execution of adjacent instructions that are dependent upon a same data condition |
PCT/GB2012/050161 WO2012107737A1 (en) | 2011-02-07 | 2012-01-26 | Controlling the execution of adjacent instructions that are dependent upon a same data condition |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103348318A true CN103348318A (zh) | 2013-10-09 |
CN103348318B CN103348318B (zh) | 2016-08-17 |
Family
ID=45614861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280007860.7A Active CN103348318B (zh) | 2011-02-07 | 2012-01-26 | 控制依赖于相同数据条件的相邻指令的执行 |
Country Status (10)
Country | Link |
---|---|
US (1) | US9176737B2 (zh) |
EP (1) | EP2673703B1 (zh) |
JP (1) | JP6267513B2 (zh) |
KR (1) | KR101827747B1 (zh) |
CN (1) | CN103348318B (zh) |
BR (1) | BR112013019824B1 (zh) |
GB (1) | GB2501211B (zh) |
IL (1) | IL227476A (zh) |
MY (1) | MY160644A (zh) |
WO (1) | WO2012107737A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107179935A (zh) * | 2016-03-11 | 2017-09-19 | 华为技术有限公司 | 一种指令执行方法及虚拟机 |
CN107329936A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
CN107810484A (zh) * | 2015-06-26 | 2018-03-16 | 微软技术许可有限责任公司 | 用于处理器的显式指令调度器状态信息 |
CN107851018A (zh) * | 2015-07-31 | 2018-03-27 | Arm 有限公司 | 数据处理 |
CN108139896A (zh) * | 2015-08-09 | 2018-06-08 | 甲骨文国际公司 | 扩展虚拟机指令集体系架构 |
CN111124500A (zh) * | 2019-12-12 | 2020-05-08 | 浪潮(北京)电子信息产业有限公司 | 一种指令执行方法、装置、设备及存储介质 |
US11048517B2 (en) | 2015-06-26 | 2021-06-29 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9342304B2 (en) | 2008-08-15 | 2016-05-17 | Apple Inc. | Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture |
US9335997B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture |
US9335980B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using wrapping propagate instructions in the macroscalar architecture |
US9389860B2 (en) | 2012-04-02 | 2016-07-12 | Apple Inc. | Prediction optimizations for Macroscalar vector partitioning loops |
US9116686B2 (en) | 2012-04-02 | 2015-08-25 | Apple Inc. | Selective suppression of branch prediction in vector partitioning loops until dependency vector is available for predicate generating instruction |
US9626185B2 (en) * | 2013-02-22 | 2017-04-18 | Apple Inc. | IT instruction pre-decode |
US9348589B2 (en) | 2013-03-19 | 2016-05-24 | Apple Inc. | Enhanced predicate registers having predicates corresponding to element widths |
US9817663B2 (en) | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
US9519482B2 (en) * | 2014-06-20 | 2016-12-13 | Netronome Systems, Inc. | Efficient conditional instruction having companion load predicate bits instruction |
US9830153B2 (en) * | 2014-06-20 | 2017-11-28 | Netronome Systems, Inc. | Skip instruction to skip a number of instructions on a predicate |
KR101699491B1 (ko) * | 2016-03-29 | 2017-01-24 | 주식회사 포워드벤처스 | 기능 사용법 표시 장치, 방법, 및 컴퓨터 프로그램 |
US11726979B2 (en) | 2016-09-13 | 2023-08-15 | Oracle International Corporation | Determining a chronological order of transactions executed in relation to an object stored in a storage system |
US10860534B2 (en) * | 2016-10-27 | 2020-12-08 | Oracle International Corporation | Executing a conditional command on an object stored in a storage system |
US10956051B2 (en) | 2016-10-31 | 2021-03-23 | Oracle International Corporation | Data-packed storage containers for streamlined access and migration |
US11150904B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Concurrent prediction of branch addresses and update of register contents |
US10884745B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Providing a predicted target address to multiple locations based on detecting an affiliated relationship |
US10884747B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Prediction of an affiliated register |
US10534609B2 (en) | 2017-08-18 | 2020-01-14 | International Business Machines Corporation | Code-specific affiliated register prediction |
US11150908B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence |
US10719328B2 (en) | 2017-08-18 | 2020-07-21 | International Business Machines Corporation | Determining and predicting derived values used in register-indirect branching |
US10884746B2 (en) * | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Determining and predicting affiliated registers based on dynamic runtime control flow analysis |
US10908911B2 (en) | 2017-08-18 | 2021-02-02 | International Business Machines Corporation | Predicting and storing a predicted target address in a plurality of selected locations |
GB2571996B (en) * | 2018-03-16 | 2020-09-09 | Advanced Risc Mach Ltd | Branch target variant of branch-with-link instruction |
US11886883B2 (en) | 2021-08-26 | 2024-01-30 | International Business Machines Corporation | Dependency skipping in a load-compare-jump sequence of instructions by incorporating compare functionality into the jump instruction and auto-finishing the compare instruction |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02227731A (ja) * | 1989-01-13 | 1990-09-10 | Internatl Business Mach Corp <Ibm> | データ処理システム |
JPH04137169A (ja) * | 1990-09-28 | 1992-05-12 | Nec Corp | 情報処理装置 |
US5799180A (en) * | 1995-10-31 | 1998-08-25 | Texas Instruments Incorporated | Microprocessor circuits, systems, and methods passing intermediate instructions between a short forward conditional branch instruction and target instruction through pipeline, then suppressing results if branch taken |
JPH10320380A (ja) * | 1997-05-20 | 1998-12-04 | Kofu Nippon Denki Kk | ベクトル処理装置 |
JPH1185516A (ja) * | 1997-07-14 | 1999-03-30 | Matsushita Electric Ind Co Ltd | 分岐予測方法およびプロセッサ |
US20060090063A1 (en) * | 2002-06-24 | 2006-04-27 | Jean-Paul Theis | Method for executing structured symbolic machine code on a microprocessor |
US20070220239A1 (en) * | 2006-03-17 | 2007-09-20 | Dieffenderfer James N | Representing loop branches in a branch history register with multiple bits |
US20100262813A1 (en) * | 2009-04-14 | 2010-10-14 | International Business Machines Corporation | Detecting and Handling Short Forward Branch Conversion Candidates |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2273377A (en) | 1992-12-11 | 1994-06-15 | Hughes Aircraft Co | Multiple masks for array processors |
US6918032B1 (en) | 2000-07-06 | 2005-07-12 | Intel Corporation | Hardware predication for conditional instruction path branching |
-
2011
- 2011-02-07 US US12/929,667 patent/US9176737B2/en active Active
-
2012
- 2012-01-26 WO PCT/GB2012/050161 patent/WO2012107737A1/en active Application Filing
- 2012-01-26 JP JP2013552260A patent/JP6267513B2/ja active Active
- 2012-01-26 CN CN201280007860.7A patent/CN103348318B/zh active Active
- 2012-01-26 KR KR1020137022123A patent/KR101827747B1/ko active IP Right Grant
- 2012-01-26 GB GB1313488.7A patent/GB2501211B/en active Active
- 2012-01-26 BR BR112013019824-9A patent/BR112013019824B1/pt active IP Right Grant
- 2012-01-26 MY MYPI2013701309A patent/MY160644A/en unknown
- 2012-01-26 EP EP12704439.4A patent/EP2673703B1/en active Active
-
2013
- 2013-07-14 IL IL227476A patent/IL227476A/en active IP Right Grant
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02227731A (ja) * | 1989-01-13 | 1990-09-10 | Internatl Business Mach Corp <Ibm> | データ処理システム |
JPH04137169A (ja) * | 1990-09-28 | 1992-05-12 | Nec Corp | 情報処理装置 |
US5799180A (en) * | 1995-10-31 | 1998-08-25 | Texas Instruments Incorporated | Microprocessor circuits, systems, and methods passing intermediate instructions between a short forward conditional branch instruction and target instruction through pipeline, then suppressing results if branch taken |
JPH10320380A (ja) * | 1997-05-20 | 1998-12-04 | Kofu Nippon Denki Kk | ベクトル処理装置 |
JPH1185516A (ja) * | 1997-07-14 | 1999-03-30 | Matsushita Electric Ind Co Ltd | 分岐予測方法およびプロセッサ |
US20060090063A1 (en) * | 2002-06-24 | 2006-04-27 | Jean-Paul Theis | Method for executing structured symbolic machine code on a microprocessor |
US20070220239A1 (en) * | 2006-03-17 | 2007-09-20 | Dieffenderfer James N | Representing loop branches in a branch history register with multiple bits |
US20100262813A1 (en) * | 2009-04-14 | 2010-10-14 | International Business Machines Corporation | Detecting and Handling Short Forward Branch Conversion Candidates |
Non-Patent Citations (1)
Title |
---|
ARTUR KLAUSER ET AL.: "Dynamic Hammock Predication for Non-predicated Instruction Set Architectures", 《PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON PARALLEL ARCHITECTURES AND COMPILATION TECHNIQUES (PACT)1998》, 31 December 1998 (1998-12-31), XP019184379 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107810484A (zh) * | 2015-06-26 | 2018-03-16 | 微软技术许可有限责任公司 | 用于处理器的显式指令调度器状态信息 |
CN107810484B (zh) * | 2015-06-26 | 2021-04-16 | 微软技术许可有限责任公司 | 用于处理器的显式指令调度器状态信息 |
US11048517B2 (en) | 2015-06-26 | 2021-06-29 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
CN107851018A (zh) * | 2015-07-31 | 2018-03-27 | Arm 有限公司 | 数据处理 |
CN107851018B (zh) * | 2015-07-31 | 2022-04-29 | Arm 有限公司 | 数据处理 |
CN108139896A (zh) * | 2015-08-09 | 2018-06-08 | 甲骨文国际公司 | 扩展虚拟机指令集体系架构 |
CN108139896B (zh) * | 2015-08-09 | 2021-10-19 | 甲骨文国际公司 | 扩展虚拟机指令集体系架构 |
CN107179935A (zh) * | 2016-03-11 | 2017-09-19 | 华为技术有限公司 | 一种指令执行方法及虚拟机 |
CN107179935B (zh) * | 2016-03-11 | 2021-01-29 | 华为技术有限公司 | 一种指令执行方法及虚拟机 |
CN107329936A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
CN111124500A (zh) * | 2019-12-12 | 2020-05-08 | 浪潮(北京)电子信息产业有限公司 | 一种指令执行方法、装置、设备及存储介质 |
WO2021114549A1 (zh) * | 2019-12-12 | 2021-06-17 | 浪潮(北京)电子信息产业有限公司 | 一种指令执行方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
IL227476A (en) | 2017-05-29 |
KR20140014143A (ko) | 2014-02-05 |
US20120204007A1 (en) | 2012-08-09 |
KR101827747B1 (ko) | 2018-03-22 |
WO2012107737A1 (en) | 2012-08-16 |
EP2673703B1 (en) | 2019-08-28 |
JP2014504770A (ja) | 2014-02-24 |
BR112013019824A2 (pt) | 2020-08-04 |
IL227476A0 (en) | 2013-09-30 |
BR112013019824B1 (pt) | 2021-06-15 |
EP2673703A1 (en) | 2013-12-18 |
JP6267513B2 (ja) | 2018-01-24 |
CN103348318B (zh) | 2016-08-17 |
US9176737B2 (en) | 2015-11-03 |
GB2501211A (en) | 2013-10-16 |
MY160644A (en) | 2017-03-15 |
GB201313488D0 (en) | 2013-09-11 |
GB2501211B (en) | 2016-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103348318A (zh) | 控制依赖于相同数据条件的相邻指令的执行 | |
CN104919418B (zh) | 用于分支预测的***、方法及存储介质 | |
KR102102166B1 (ko) | 심드 구조 기반의 쓰레드 분기 관리 장치 및 방법 | |
KR100310581B1 (ko) | 분기목표버퍼의추측기록메카니즘 | |
KR102025556B1 (ko) | 처리 장치, 추적 유닛 및 진단 장치 | |
CN103250131A (zh) | 包括用于早期远分支预测的影子缓存的单周期多分支预测 | |
TWI716425B (zh) | 用於執行疊接操作的裝置和方法 | |
JP2015522196A5 (zh) | ||
TW201030610A (en) | Method for performing fast conditional branch instructions and executing two types of conditional branch instructions and related microprocessor, computer program product and pipelined microprocessor | |
WO2012023185A1 (ja) | 試験方法、演算処理装置、試験プログラム、試験プログラム生成方法、試験プログラム生成装置、及び試験プログラム生成プログラム | |
KR20080015508A (ko) | 마이크로프로세서의 명령 파이프라인에서 명령 제거를관리하는 방법 및 장치 | |
KR20180137521A (ko) | 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법 | |
KR100316710B1 (ko) | 병렬 프로세서를 위한 무순서 명령어 발행 방법 및 장치 | |
US9086888B2 (en) | Using a plurality of tables for improving performance in predicting branches in processor instructions | |
US11216279B2 (en) | Loop exit predictor | |
KR101854671B1 (ko) | 소프트웨어 파이프라인이 적용된 루프의 프롤로그와 에필로그에서 루프 외부의 명령어를 실행시키는 장치 및 방법 | |
US20120110310A1 (en) | Microprocessor with pipeline bubble detection device | |
CN109240701A (zh) | 一种面向谓词执行高性能dsp的指令依赖关系分析方法 | |
US7774763B1 (en) | Techniques for forming a multi-tasking executable program and using the same | |
CN113918225A (zh) | 指令预测方法、指令数据处理装置、处理器以及存储介质 | |
US20120089823A1 (en) | Processing apparatus, compiling apparatus, and dynamic conditional branch processing method | |
KR102379886B1 (ko) | 벡터 명령 처리 | |
US7865706B2 (en) | Information processing method and instruction generating method | |
CN107122255B (zh) | 用于生成程序代码的方法和工具 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |