CN1788253A - 数据处理***内的断定指令 - Google Patents
数据处理***内的断定指令 Download PDFInfo
- Publication number
- CN1788253A CN1788253A CNA2003801103310A CN200380110331A CN1788253A CN 1788253 A CN1788253 A CN 1788253A CN A2003801103310 A CNA2003801103310 A CN A2003801103310A CN 200380110331 A CN200380110331 A CN 200380110331A CN 1788253 A CN1788253 A CN 1788253A
- Authority
- CN
- China
- Prior art keywords
- instruction
- conds
- conclude
- program
- condition
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 33
- 238000000034 method Methods 0.000 claims description 62
- 238000004590 computer program Methods 0.000 claims description 22
- 230000008569 process Effects 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 7
- 230000008859 change Effects 0.000 claims description 4
- 230000005856 abnormality Effects 0.000 claims 6
- 230000006399 behavior Effects 0.000 description 12
- 238000012546 transfer Methods 0.000 description 11
- 210000003813 thumb Anatomy 0.000 description 9
- 230000009471 action Effects 0.000 description 7
- 101100494729 Syncephalastrum racemosum SPSR gene Proteins 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 2
- 230000001143 conditioned effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- 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
- 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/30181—Instruction operation extension or modification
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
在数据处理***(2)内部,提供断定指令(30),该断定指令将条件动作添加到相关联程序指令(26,28)。
Description
本发明涉及数据处理***领域。更具体而言,本发明涉及这种数据处理***内程序指令的条件执行。
提供响应于包括程序指令的指令集的数据处理***是公知的,其中所述程序指令根据先前的处理操作的结果来有条件地执行或不执行。例如,ARM32位指令集是完全条件的,因此所有的指令都包括指定在哪些条件下将禁止或允许执行的4位条件码字段。
虽然完全条件的32位ARM指令集在它的条件行为中是强有力的,但是每个指令内部的专用于条件码的4位代表该指令集的位编码空间的重要部分。在多数情况下,并没有完全利用所述条件码的全部能力,并且所述专用于这些条件码的4位也没有被很好的使用。
提供诸如由ARM处理器支持的Thumb指令集之类的非条件指令集也是公知的。不使任何指令位空间专用于条件码便允许Thumb指令更小,从而提高代码密度。然而,这种方法的缺点在于,在没有利用所述32位ARM指令集的条件码的能力的情况下,执行某些操作所需要的指令数目可能更多并且因此处理缓慢。
从诸如PA-RISC处理器之类的其他处理器提供指令、其可根据它们的结果而取消下一个指令是公知的。这种指令的示例是比较操作,该比较操作用来根据被比较的数字是相等还是不相等,来禁止或允许下一个跟随指令执行。虽然这种取消下一指令类型是可用的,但其具有有限的灵活性,因为它们只能用来根据其自身处理而取消下一个指令。
从一个方面看,本发明提供用于处理数据的设备,该设备包括:
用来执行数据处理操作的数据处理逻辑;以及用来译码程序指令以控制所述数据处理逻辑去执行所述数据处理操作的指令译码器,其中
所述指令译码器响应于断定指令(predication instruction),根据用于处理数据的所述设备的一个或多个条件状态,来控制所述数据处理逻辑执行或不执行一个或多个相关联程序指令,所述条件状态是通过所述断定指令之外的一个或多个程序指令的执行来设定的。
本发明认识到,提供特定用途的断定指令可有很大的优势,因为这些可取决于更灵活指定的、处理器的条件状态而使得其他指令的执行是有条件的。因此,程序员和编译者可以更好的使用这种断定指令来产生更小和更快的程序。
虽然断定指令可能只影响一个其他指令,但在优选实施方案里,提供所述断定指令来控制多个相关联程序指令的执行。
虽然断定指令可以结合相关联程序指令一起使用,所述程序指令是部分地或全部有条件的,但是本发明的优选实施方案是断定指令与无条件的相关联程序指令一起使用的方案。因此,所述断定指令能够将条件指令行为添加到另外的非条件指令集。
虽然断定指令使其对相关联程序指令的控制所基于的条件状态可以采用各种不同的形式,但是优选实施方案为了提供输入给所述断定指令,使用诸如,举例而言零标记、相等标记、进位标记等的条件码标记。
由断定指令评估以控制相关联程序指令的条件状态可以根据特定***的要求在不同的时间被评估。有可能是条件状态可以刚一执行断定指令后就被评估,并且所述评估结果被用于控制所有的相关联程序指令。这样所具有的优势在于:使得有可能在指令流水线里及早完全评估断定指令,及此后可以以迅速且简化执行的方式从指令流水线移除所述断定指令。作为可选择的,也有可能是:条件状态可在每个相关联程序指令的执行之前被评估,使得所述条件码例如可对于一些相关联指令被通过,而对于其他的相关联指令则不被通过。这个方法的优势在于:可以以很好地适合许多普通类型的数据处理操作的方式来对条件行为进行优良程度的控制,其中可能期望它与这种条件指令行为一起执行。
虽然可以理解的是,所述相关联指令对所述断定指令可具有各种不同的相对位置,但优选实施方案是其中所述相关联程序指令紧跟着所述断定指令的方案。这对执行以及编程目的是方便的。
以各种不同的方式安排断定指令来控制相关联程序指令是可能的。在一个可能的优选实施方案里,将所述相关联程序指令安排在两个指令块里,其中一个这种块是在条件码被通过后来执行的,而另一个块是在条件码失败后执行的。这可以提供类似于指令类型If...Then...Else的行为。
在这种实施例里,虽然不同的指令块可以具有固定大小,但是优选的它们具有可变的大小,该大小是由断定指令自身内的字段指定的。这允许块大小中的灵活性,有利于断定指令的转移及其他行为的控制以及改善代码密度。
虽然有可能断定指令可专用于预定条件的特定集合,但是在优选实施方案里,所述断定指令包括一个可变字段,通过该可变字段可以指定预定条件。
另一种给出有利的灵活度且尤其允许那些将通过或不通过其条件码的指令的交织的断定指令是这样一种断定指令,即:在其中断定指令包括一个或多个字段,每个字段根据一个或多个条件状态同一个或多个预定状态的比较来指定是要执行或是不执行各自的相关联程序指令。
尤其是在优选实施方案里,所述断定指令可以包括一字段,所述字段为每个各自的相关联指令指定:一个或多个条件状态或一个或多个条件状态的问候(compliment)是否要与预定状态进行比较,以确定是否执行所述各自的相关联程序指令。因此,可以指定个体的相关联程序指令来执行所述″Then″条件或者所述″Else″条件。
为了便于所述处理***的控制,正常的程序计数器寄存器是由被断定指令计数器寄存器补足的,所述被断定指令计数器寄存器用来存储计数器值,该计数器值指示受制于(subject to)断定指令的一个或更多个相关联程序指令中多少已经被执行。断定指令事实上在其中编码一个可达范围,指定它控制多少相关联程序指令、以及***需要追踪执行已经通过此可达范围进展多远,以及何时已超过该可达范围。
此被断定指令计数器寄存器尤其是在异常(exception)处理以及从异常返回的情况下是有用的,由此在从异常返回后,所述被断定指令计数器寄存器可以被恢复并且它的值被用来确定被返回到的程序指令是否是使其行为被在前断定指令影响的那个。
有可能如同根据所述断定指令来控制相关联程序指令是执行或是不执行那样,所述断定指令也可用来修改所述相关联指令,使得当它们被执行时所述相关联指令具有不同的操作。这可以被看作是有效地扩展了所述指令集。
修改所述相关联程序指令的一个特定优选方法是:当它们受制于特别的、包含特定可编程字段的断定指令时,禁阻它们对一个或多个条件状态做任何变化。因此,条件码标记更新可以由适当的断定指令来禁止。
从另一方面看,本发明提供了一种处理数据的方法,所述方法包括以下步骤:
利用数据处理逻辑来执行数据处理操作;以及利用指令译码器译码程序指令来控制所述数据处理逻辑以执行所述数据处理操作,其中:
响应于一断定指令,根据所述用于处理数据的设备的一个或多个条件状态,所述指令译码器控制所述数据处理逻辑来执行或不执行一个或多个相关联程序指令,其中所述条件状态是通过所述断定指令之外的一个或多个程序指令的执行来设定的。
从另一个方面看,本发明提供了一种计算机程序产品,所述计算机程序产品包括用来控制一处理数据的设备的计算机程序,所述设备具有用来执行数据处理操作的数据处理逻辑以及用来译码程序指令以控制所述数据处理逻辑来执行所述数据处理操作的指令译码器,所述计算机程序包括:
根据用于处理数据的设备的一个或多个条件状态来控制所述数据处理逻辑以执行或不执行一个或多个相关联程序指令的断定指令,所述条件状态是通过所述断定指令之外的一个或多个程序指令的执行来设定的。
现在参考附图以仅为示例的方式来描述本发明的实施例,其中:
图1示意地示出了用来执行包括断定指令的程序指令的数据处理设备。
图2示意地示出了指令译码器响应断定指令的动作;
图3和4示意地示出了断定指令的一种形式,其中根据掩码值以及条件码来控制个体相关联程序指令执行或不执行;
图5是图表,示意地示出了另一种断定指令,其中相关联的指令块根据所述条件码执行或不执行;
图6是流程图,示意地示出了遵循图5所述类型的断定指令的执行的控制;
图7是用于执行上述技术的通用计算机设备的示意图;
图1示出了以处理器核心2的形式的数据处理设备,处理器核心2包括程序寄存器库4、乘法器6、移位器8、加法器10、指令译码器12、指令流水线14、预取装单元16、中断控制器18、程序计数器寄存器20和被断定指令计数器寄存器22。可以理解的是,所述处理器核心2一般地包括本技术领域的技术人员所熟知的很多其他电路元件,但是为了简明,将这些电路元件从图1中省略掉了。
操作中,从存储器(未示出)处取装程序指令I,并将其提供给指令流水线14,程序指令在那里经过各种各样的流水线级,诸如取装、译码和执行,就如本技术领域所熟知的一样。将来自指令流水线14的译码级的指令提供给指令译码器12,在那里指令用来产生控制信号,所述控制信号配置并且控制数据处理操作/处理,所述操作/处理是由乘法器6、移位器8、加法器10和其它诸如ALU(未示出)之类的电路元件来执行的,依据从所述程序寄存器库4读取的数据值来产生结果值,所述结果值要被写回到所述程序寄存器库4。预取装单元16用来控制指令地址产生,该指令地址用于取装程序指令I到指令流水线14中。程序计数器寄存器20(可以是程序寄存器库4内的程序寄存器中的一个)提供正在执行的当前指令的地址值,或者对这个值具有预定偏移(例如+4)的地址。上下文寄存器22也提供一个值到预取装单元16,该值在从中断返回后被使用,正如由中断控制器18控制的,使得受制于断定指令的相关联程序指令的一个部分完成的序列将仍受断定指令的影响,即使这种执行由异常的出现中断也如此。
图2示意地示出了第一示例实施例,其中断定指令IT是以程序指令流的形式馈入到指令译码器12。当所述指令译码器12检测到这种断定指令时,就译码所述断定指令并且有效地将条件码添加到所述指令流内跟随所述断定指令的相关联程序指令。可以理解的是在这个例子里的所述指令流内的程序指令正常地是无条件指令,诸如16位Thumb指令,其正常地不具有与它们相关联的条件码。但是,支持Thumb指令集的处理器也支持完全条件的32位ARM指令集。当来自这个ARM指令集的指令正被译码时,那么它们都包括条件码,该条件码从所述指令译码器12向下继续沿指令流水线14传送以影响那些指令的后续执行或不执行。因此所述指令流水线14已经明了条件码,并且具有用于译码和响应与程序指令有关的条件码的结构和机构。在一个整体的级别上可以看到,断定指令IT用来将条件码添加到在指令流内跟随其后的一个或多个相关联程序指令中,而它自己被从所述指令流中移走,因为除了这个条件码信息的添加功能之外它没有用于其它处理功能。
图3更详细地示出了图2的断定指令IT。特别地,这个指令指定条件码″cond″和掩码值″xyx″,指示跟着IT指令的1,2,3或4程序指令是否受制于它的断定,以及如果是这样的话,就要施加所述条件码的极性。所述条件码或条件码的问候可以根据对应值x,y,z是否对相应的第二跟随、第三跟随以及第四跟随相关联程序指令存在以及这个标记的值来施加。图3示出了所述值x,y,z如何形成由值″1″来终止的掩码值24。
图4示意地示出了这种指令的实例,其中四个相关联指令由断定指令来断定。这些指令的第一个被认为以″Then″形式断定,因此如果满足条件码则将执行所述指令。也可以指定第二、第三以及第四相关联指令依据“Then”条件或者″Else″条件来执行。在这个实例里,所述四个相关联程序指令具有形式Then,Then,Else和Then。在掩码值24内,用于第二、第三和第四相关联指令的掩码值位x,y,z分别是0,1,0,并且掩码值由值″1″来终止。
这个实例里指定的条件码是″1010″。这个条件码以其正常形式施加给第一相关联指令。然后所述掩码值左移一个位置,并且从所述掩码值移出的最高有效位被移至将施加到下一个指令的条件码的最低有效位位置。因此,施加到下一个指令的条件码可以根据所述掩码值内的最高有效位,在其正常形式和其补码形式之间进行转换。在这个实例里将看到,跟随所述断定指令的第一、第二和第四指令受制于所述正常条件码,而跟随所述断定指令的第三指令受制于所述条件码的补码。当检测到掩码值″1000″时,这表明已经到达最后的断定指令,并且所述断定指令的影响将不延伸到后来的程序指令。
在下文中给出了在图3和4里示出的指令类型的进一步描述:
IT
If-Then(IT)指令使存储器里的紧接的N指令是有条件的。跟随所述IT指令并且受其影响的N指令集被称为″IT块″。
当在IT块内执行一些(或全部)指令时,可以重新定义该指令的功能性。例如,除CMP/CMN/TST之外的Thumb 16位指令可以没有标记设定。在这种情况下,IT可与AL条件一起使用以在其自身上获取后者的效果。
可使用一个额外的PSR位(或专用IT状态寄存器)来保有IT状态。这将允许在IT块内中断。
以下实例中定义了具有4个指令的最大IT块大小的Thumb 16位IT指令。IT块内的全部指令是由相同条件或条件(即EQ或NE等)的相反版本来断定的。
Thumb IT
语法
IT{<x>{<y>{<z>}}}<cond>
其中:
<x>如果出现,是字母″T″和″E″的一个,并指出第二跟随指令将受IT指令影响。如果<x>是″T″(″Then″),那么附着于那个指令的条件是<cond>;如果<x>是″E″,那么它是<cond>的反,是由逻辑地反转<cond>的最低有效位而获得。如果<x>被省略(且由此<y>和<z>也被省略),那么只有一个跟随的指令受IT指令影响。
<y>如果出现,是字母″T″和″E″的一个,并指出第三跟随指令将受IT指令影响。如果<y>是″T″(″Then″),那么附着于那个指令的条件是<cond>;如果<y>是″E″,那么它是<cond>的反,是由逻辑地反转<cond>的最低有效位而获得。如果<y>被省略(且由此<z>也被省略),那么少于3个跟随指令受IT指令影响。
<z>如果出现,是字母″T″和″E″的一个,并指出第四跟随指令将受IT指令影响。如果<z>是″T″(″Then″),那么附着于那个指令的条件是<cond>;如果<x>是″E″,那么它是<cond>的反,是由逻辑地反转<cond>的最低有效位而获得。如果<z>被省略,那么少于4个跟随指令受IT指令的影响。
<cond>
是要施加到第一个跟随指令的条件,也可能是要施加到由<x>,<y>和<z>指定的其他跟随指令的条件。
<x>,<y>和<z>的值根据下列表格来确定指令的掩码字段的值:
<x> | <y> | <z> | 掩码 | |||
[3] | [2] | [1] | [0] | |||
省略 | 省略 | 省略 | 1 | 0 | 0 | 0 |
TE | 省略省略 | 省略省略 | cond[0]非Cond[0] | 11 | 00 | 00 |
TETE | TTEE | 省略省略省略省略 | cond[0]非cond[0]cond[0]非cond[0] | cond[0]cond[0]非cond[0]非cond[0] | 1111 | 0000 |
TETETETE | TTEETTEE | TTTTEEEE | cond[0]非cond[0]cond[0]非cond[0]cond[0]非cond[0]cond[0]非cond[0] | cond[0]cond[0]非cond[0]非cond[0]cond[0]cond[0]非cond[0]非cond[0] | cond[0]cond[0]cond[0]cond[0]非cond[0]非cond[0]非cond[0]非cond[0] | 11111111 |
注解:此语法的基本思想是,例如″ITTET EQ″表明第一、第二和第四跟随指令(由记忆中的″T″的位置指出)具有附着于它们的EQ条件,以及第三跟随指令(由所述″E″指出)具有一附着于它的NE条件。
操作
ifCPSR[26,25,15:10]!=0b00000000then
UNPREDICTABLE(不可预测)
else
ifmask=0b0000then
UNPREDICTABLE
else
CPSR[15:12]=cond
CPSR[11,10,26,25]=mask
//这些CPSR位的指令接指令更新然后使得
//发生IT指令的条件执行效果。
所述8个IT执行状态位如下地编码256个″指令间状态″中的一个:
CPSR 状态
2 2 1 1 1 1 1 1
6 5 5 4 3 2 1 0
P4 | 1 | condbase | P1 | P2 | P3 | 对于条件(condbase,1)、(condbase,P2)、(condbase,P3)和(condbase,P4),有条件地执行下4个指令 | |||
1 | 0 | condbase | P1 | P2 | P3 | 对于条件(condbase,P1)、(condbase,P2)和(condbase,P3),有条件地执行下3个指令 | |||
0 | 0 | condbase | P1 | P2 | 1 | 对于条件(condbase,P1)和(condbase,P2)有条件地执行下2个指令 | |||
0 | 0 | condbase | P1 | 1 | 0 | 对于条件(condbase,P1),有条件地执行下一个指令 | |||
0 | 0 | N(非零) | 0 | 0 | 不可预测的 | ||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 正常执行 |
这些位对后续执行的效果是:
●MRS和SRS指令将正常地读取这些位。MSR指令将其正常地写到SPSR,但如上所述,当写入CPSR时忽视所述写入值。依然如上所述,存在的异常返回指令(带有″复制SPSR→CPSR″副作用的那些)和RFE指令将它们正常地写入CPSR。
●在ARM和Java状态执行期间,这些位应当是零(即如果其不为零,那么结果是UNPREDICTABLE)。
●异常入口序列使这些位从CPSR复制到SPSR,然后在CPSR中清除(连同J和T一起),使处理器返回到正常ARM执行。
●在Thumb状态执行期间:
1、当执行IT指令时这些位应该是零。(即,IT指令被禁止在受其他IT指令影响的指令块内出现。)
2、当条件转移(branch)指令执行时,位[26,25,11,10]应该是零。(即,条件转移指令被禁止在受IT指令影响的指令块内出现。然而,非条件转移指令可以出现在那里,且也将使得被当做条件对待:这个规则基本上被给出以避免由相同指令上的两个条件所引起的问题。}
3、对于没有由上述规则造成UNPREDICTABLE的全部指令,从当前″执行状态″位产生一条件如下:
ifbits[26,25,11,101]=0b0000then
/*不在IT块里*/
condition is AL(条件是AL)
else
condition is bits[15:12],interpreting both 0b1110
and 0b1111 as″always″(条件是位[15:12],解译0b1110和0b1111为“总是”)
/*注解:因为在ARMv5中恢复″NV空间″,所以这些解译已经标准化*/
此外,那些非CMP、CMN或TST指令且正常地设定条件标记的16位Thumb数据处理指令被修改如下:
if bits[26,25,11,10]!=0b0000then
/*在IT块里*/
instruction does not set condition flags(指令不设置条件标记)
注解:这对于令IT对控制大量指令序列有用是必要的—例如,如果将它用来条件化(conditionalise)LDR Rn;ADD Rn,Rn,#M;STR Rn序列,那么如果所述ADD改变了由STR指令所看到的条件标记,则它将是无用的!
注解:这具有的必然结果是:具有AL条件(或NV条件)的IT指令可用于禁止由1-4个跟随指令进行此类标记设置。当前Thumb指令集的难处理方面之一是:晚***的码(例如溢出/填充(spill/fill)码)可能具有破坏条件标记的副作用。能用单个额外的16位指令来处理这个问题是很有用的。
4、任何PC-修改指令的成功(即没有对任何条件核对失败)执行将致使新的″执行状态″位变成:
对于异常返回指令(执行SPSR→CPSR复制的那些,以及在特许模式里执行的RFE):
该值的位[26,25,15:10]被写入CPSR。
否则:
全零。
注解:所述″否则″情况是使得IT只影响静态跟随指令的该基本规则。
这种PC-修改指令的不成功执行,或非PC-修改、非IT指令的任何执行(成功与否)都将以如下方式更新新的″执行状态″位:
当前 状态转 新状 注
状态 换的条 态 解
26 25 15 14 13 12 11 10 件 26 25 15 14 13 12 11 10
P4 | 1 | condbase | P1 | P2 | P3 | 总是 | 1 | 0 | Condbase | P2 | P3 | P4 | |||
1 | 0 | Condbase | P1 | P2 | P3 | 总是 | 0 | 0 | Condbase | P2 | P3 | 1 | |||
0 | 0 | Condbase | P1 | P2 | 1 | 总是 | 0 | 0 | Condbase | P2 | 1 | 0 | |||
0 | 0 | Condbase | P1 | 1 | 0 | 总是 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | A |
0 | 0 | 任一 | 0 | 0 | 总是 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | B |
A)终止IT执行-但没有要求特别动作。
B)IT块之外
注解:
1、转移。除非提到,在IT块里没有指令被允许成为任何转移的目标,不管是作为转移指令的结果或一些其它改变所述PC的指令的结果。未能遵守这个限制能导致不可预测的行为(UNPREDICTABLE behavior)。
2、异常。在指令和它的IT块之间、或IT块内可能发生中断及其他异常。通常,它们将导致进入异常处理程序,带有适当的返回信息被置于适当模式下的R14和SPSR中。被设计用于异常返回的指令可按正常使用以从异常返回,并将正确地再继续IT块的执行。这是允许PC-修改指令转移到IT块中指令的唯一方式。
3、IT块。在IT块里的指令不允许是:
●IT指令
●条件转移指令
如果IT块里的指令是上述指令,那么所述结果是不可预测的(UNPREDICTABLE)。
图5示意地示出了另一类断定指令。在这类断定指令里,存在与断定指令30有关联的两个相关联程序指令块26,28。如果在所述断定指令30里指定的条件码被通过(pass),那么执行这些指令块中的第一个26,并将其称作“If块”。如果与断定指令30有关联的条件码失败,那么执行指令块的另一个28,并且将其称之为″Else块″。所述断定指令30指定这两个块26,28的大小,所述两个块在长度上可以各是1-4个指令不等。在图5的所述实例里,执行If块26或者Else块28。这个示例将是:当执行断定指令30时,条件码实际上被评估一次,并且所述评估结果被应用来断定所有相关联程序指令。因此,将执行整个If块26,或者作为选择,执行整个Else块28。当上下文寄存器22(MPC)指出已经到达所述If块的结尾,那么迫使转移到跟随Else块28中最后指令的指令。当到达在Else块28中的最后指令时,那么所述断定指令30的作用被移除。
图6示意地示出了根据图5示出的操作类型的***的动作流程图。在步骤32,***等待识别断定指令(ITE指令)。在步骤34,所述***识别现行程序状态寄存器内存储的上下文计数器值是否是非零的。这种非零的值表明正在从异常进行返回,且因此在步骤36接受该上下文值并将其存储在现行程序状态寄存器内,并且所述处理前进至步骤38,在其中对断定指令内指定的条件码进行评估。可选择的,如果彻底检验步骤34产生否结果,那么在步骤40将上下文值设置为零。如果在步骤38确定条件码评估是所述条件码失败,那么这表明应该执行Else块28,并因此在步骤42将程序计数器的值提前到Else块28内的第一个指令,然后执行所述Else块28,而该断定指令在步骤44已经终止。可选择的,如果在步骤38评估的条件码被通过,那么在步骤46执行由PC值与上下文值的总和所指向的指令,并且使上下文值增加所述指令字节长度。
步骤48检查异常的发生,并且如果这样一个异常出现。那么步骤50用来保存包括上下文值(断定指令计数器值)的现行程序状态寄存器值,处理所述异常,执行所述异常处理例程,以及最后跟随所述异常而返回到由所述程序计数器值PC指示的指令,即断定指令。
步骤52检验所述转移的发生,以及如果这种转移发生,那么步骤54将所述程序计数器值修改为转移目标以及步骤44终止所述断定指令的动作。
步骤56检验以查看断定指令计数器值是否已经达到指示已到达If块26的结尾的If块大小。如果已经到达所述If块26的结尾,那么步骤58用来继续移动所述程序计数器值到超出所述Else块的结尾,以及在步骤44中所述断定指令的动作已经终止之后再继续正常处理。可选择的,处理返回到步骤46,在那里执行If块内的下一个指令。
在下文中给出了在图5和6里示出的指令动作的另一描述:
ITE
If-Then-Else(ITE)指令允许指定:当条件被通过时将要执行的指令块的大小(这个块被定位为紧接在指令之后),以及当条件失败时将要执行的指令块的大小(这个块被定位为紧接在“if”块之后)。
多个ITE上下文位(context bits)应该被保留在PSR或其他的特定寄存器里;我们将这些位称作PSR_uPC。所述PSR_uPC的精确数目确定″if″块的最大可能大小。
语法
ITE<cond>#if_size,#else_size
操作
ifPSR_uPC!=0then
//从异常返回
uPC=PSR_uPC
else
uPC=0
ifConditionPassed(cond)then
PC=PC+if size
//转移到else部分并终止ITE
loop
Instr=FetchInstructionFrom(PC+uPC)
Execute(Instr)
if Exception()then
PSR_uPC=uPC
PC=ExceptionHandler
//处理异常
if Branch(Instr)then
PSR_uPC=0
PC=BranchTarget
//转移并终止ITE
uPC+=InstructionLength(Instr)
if uPC>=if_size then
PSR_uPC=0
PC=PC+if_size+else_size
//在else部分之后转移并终止ITE
endloop
注解:
1、转移。在ITE的“if”段里没有指令被允许成为任何转移的目标,不管是作为转移指令的结果或是一些其它改变所述PC的指令的结果。未能遵守这一限制可导致不可预测的行为(UNPREDICTABLE behavior)。
2、异常。在“if”块内的指令之间可发生中断及其他异常。通常,它们将导致进入一异常处理程序,带有适当的返回信息被置于特定异常模式的R14和SPSR中。被设计用于异常返回的指令可按正常使用以从异常返回,并将正确地再继续“if”块的执行。这是允许PC-修改的指令转移到“if”块里的指令的唯一方式。
作为对利用图5和图6所举例说明的If块26和Else块28执行断定指令形式(即其中当执行断定指令30时评估所述条件码一次)的一种替代方案,一种当执行每个相关联程序指令时为受断定指令30影响的每一个相关联程序指令都评估该条件码的替代方案可以由下列行为代表。
ITE Cond,#THEN,#ELSE
(0-3)(0-3)
CPSR持有8位:4cond[3:0],2tlm[1:0],2else[1:0]
ITE docs
Cond,then,else=来自指令的值
GENERK execution(执行)
IF CPSR_then==0THEN
EXECUTE INSTRUCTION NORMALLY
ELSE
EXECUTE INSTRUCTION WITH CONDITION CPSR_cond
/*且并行*/
IF CPSR_then>1 THEN
CPSR_then=1
ELSE
CPSR_then=CPSR_else
CPSR_else=0
CPSR_cond[0]=NOT(CPSR_cond[0])/*FLIP COND*/
CPSR_cond _then _else
例如:ITE EQ,#3,#1 X 0 x
Instr1 /*EQ*/ EQ 3 1
Instr2 /*EQ*/ EQ 2 1
Instr3 /*EQ*/ EQ 1 1
Instr4 /*NE*/ NE 1 0
Instr5 /*uncond*/ EQ 0 0
从以上可以看到,在所述实例里,断定指令指定包含三个相关联程序指令的If块,和包含一个相关联程序指令的Else块。对这些程序指令的每一个实际指定的条件码是由CPSR_cond值示出的。当Else块已经退出时,第五个指令是非断定的,并以与这种无条件指令相关联的正常方式无条件地执行。
Claims (50)
1.用于处理数据的设备,所述设备包括:
用来执行数据处理操作的数据处理逻辑;以及
用来译码程序指令以控制所述数据处理逻辑去执行所述数据处理操作的指令译码器,其中:
所述指令译码器响应于断定指令,根据用于处理数据的所述设备的一个或多个条件状态,而控制所述数据处理逻辑去执行或不执行一个或多个相关联程序指令,所述条件状态是通过所述断定指令之外的一个或多个程序指令的执行来设定的。
2.如权利要求1所述的设备,其中所述断定指令控制多个相关联程序指令。
3.如权利要求1所述的设备,其中所述一个或多个相关联程序指令是非条件程序指令。
4.如权利要求1、2和3中任何一个权利要求所述的设备,其中所述一个或多个条件状态包括一个或多个条件码标记的值。
5.如前述任何一个权利要求所述的设备,其中所述一个或多个条件状态在以下之一评估:
(i)刚一执行所述断定指令便评估一次;和
(ii)在执行每个相关联程序指令之前评估。
6.如前述任何一个权利要求所述的设备,其中所述一个或多个相关联指令紧跟着所述断定指令。
7.如前述任何一个权利要求所述的设备,其中所述断定指令与以下相关联:
(i)在所述一个或多个条件状态匹配一个或多个预定条件的情况下的、将要执行的一个或多个程序指令的条件条件匹配块;和
(ii)在所述一个或多个条件状态不匹配所述一个或多个预定条件的情况下的、将要执行的一个或多个程序指令的条件不匹配块。
8.如权利要求7所述的设备,其中所述断定指令指定以下的一个或多个:
(i)一个或多个程序指令的所述条件匹配块的长度;和
(ii)一个或多个程序指令的所述条件不匹配块的长度。
9.如权利要求7和8中的任一个权利要求所述的设备,其中所述断定指令指定所述一个或多个预定条件。
10.如权利要求1-6中的任何一个权利要求所述的设备,其中所述断定指令包括一个或多个字段,其中每个字段根据所述一个或多个条件状态与一个或多个预定状态的比较而指定是执行或是不执行各自的相关联程序指令。
11.如权利要求10所述的设备,其中所述断定指令包括一字段,所述字段为每个各自的相关联程序指令指定所述一个或多个条件状态或所述一个或多个条件状态的互补是否与所述一个或多个预定状态进行比较,来确定是否执行所述各自的相关联程序指令。
12.如前述任何一个权利要求所述的设备,包括用来存储地址的程序计数器寄存器,所述地址指示正被执行的程序指令的存储位置。
13.如前述任何一个权利要求所述的设备,包括用于存储计数器值的被断定指令计数器寄存器,所述计数器值指示受制于所述断定指令的所述一个或多个相关联程序指令中的多少个已经被执行。
14.如权利要求12和13所述的设备,其中,当执行受制于所述断定指令的所述一个或多个相关联程序指令时,所述程序计数器寄存器继续存储对应于所述断定指令的地址。
15.如权利要求13所述的设备,包括异常处理电路,所述异常处理电路在异常发生后存储所述计数器值,并在异常完成后重新启动在由所述计数器值指向的程序指令处开始的执行。
16.如前述任何一个权利要求所述的设备,其中所述一个或多个相关联指令在受制于所述断定指令时,指定不同的数据处理操作。
17.如权利要求16所述的设备,其中根据所述断定指令内的可编程字段,禁阻所述一个或多个相关联指令对所述一个或多个条件状态作出任何改变。
18.一种处理数据的方法,所述方法包括以下步骤:
利用数据处理逻辑执行数据处理操作;以及
利用指令译码器译码程序指令来控制所述数据处理逻辑以执行所述数据处理操作,其中
所述指令译码器响应于一断定指令,根据所述用于处理数据的设备的一个或多个条件状态,控制所述数据处理逻辑来执行或不执行一个或多个相关联程序指令,所述条件状态是通过所述断定指令之外的一个或多个程序指令的执行来设定的。
19.如权利要求18所述的方法,其中所述断定指令控制多个相关联程序指令。
20.如权利要求18所述的方法,其中所述一个或多个相关联程序指令是非条件程序指令。
21.如权利要求18,19以及20中的任何一个权利要求所述的方法,其中所述一个或多个条件状态包括一个或多个条件码标记的值。
22.如权利要求18至21中的任何一个权利要求所述的方法,其中所述一个或多个条件状态在以下之一评估:
(i)刚一执行所述断定指令便评估一次;和
(ii)在执行每个相关联程序指令之前评估。
23.如权利要求18至22中的任何一个权利要求所述的方法,其中所述一个或多个相关联指令紧跟着所述断定指令。
24.如权利要求18至23中的任何一个权利要求所述的方法,其中所述断定指令与以下相关联:
(i)在所述一个或多个条件状态匹配一个或多个预定条件的情况下、将要执行的一个或多个程序指令的条件匹配块;和
(ii)在所述一个或多个条件状态不匹配于所述一个或多个预定条件的情况下、将要执行的一个或多个程序指令的条件不匹配块。
25.如权利要求24所述的方法,其中所述断定指令指定以下的一个或多个:
(i)一个或多个程序指令的所述条件匹配块的长度;和
(ii)一个或多个程序指令的所述条件不匹配块的长度。
26.如权利要求24以及25中的任何一个权利要求所述的方法,其中所述断定指令指定所述一个或多个预定条件。
27.如权利要求18至23中的任何一个权利要求所述的方法,其中所述断定指令包括一个或多个字段,每个字段根据所述一个或多个条件状态与一个或多个预定状态的比较而指定是执行或是不执行各自的相关联程序指令。
28.如权利要求27所述的方法,其中所述断定指令包括一字段,所述字段为每个各自的相关联程序指令指定所述一个或多个条件状态或所述一个或多个条件状态的互补是否与所述一个或多个预定状态进行比较,来确定是否执行所述各自的相关联程序指令。
29.如权利要求18至28中的任何一个权利要求所述的方法,包括用来存储地址的程序计数器寄存器,所述地址指示正被执行的程序指令的存储位置。
30.如权利要求18至29中的任何一个权利要求所述的方法,包括用来存储计数器值的被断定指令计数器寄存器,所述计数器值指示受制于所述断定指令的所述一个或多个相关联程序指令的多少个已经被执行。
31.如权利要求29和30所述的方法,其中,当执行受制于所述断定指令的所述一个或多个相关联程序指令时,所述程序计数器寄存器继续存储对应于所述断定指令的地址。
32.如权利要求30所述的方法,包括异常处理电路,所述异常处理电路在异常发生后存储所述计数器值,并在所述异常完成后重新启动在由所述计数器值指向的程序指令处开始的执行。
33.如权利要求18至32中的任何一个权利要求所述的方法,其中所述一个或多个相关联指令当受制于所述断定指令时,指定不同的数据处理操作。
34.如权利要求33所述的方法,其中根据所述断定指令内的可编程字段,禁阻所述一个或多个相关联指令对所述一个或多个条件状态作出任何改变。
35.一种包括用来控制处理数据的设备的计算机程序的计算机程序产品,该设备具有用来执行数据处理操作的数据处理逻辑和用来译码程序指令以控制所述数据处理逻辑去执行所述数据处理操作的指令译码器,所述计算机程序包括:
根据用于处理数据的设备的一个或多个条件状态来控制所述数据处理逻辑以执行或不执行一个或多个相关联程序指令的断定指令,所述条件状态是通过所述断定指令之外的一个或多个程序指令的执行来设定的。
36.如权利要求35所述的计算机程序产品,其中所述断定指令控制多个相关联程序指令。
37.如权利要求35所述的计算机程序产品,其中所述一个或多个相关联程序指令是非条件程序指令。
38.如权利要求35,36以及37中的任何一个权利要求所述的计算机程序产品,其中所述一个或多个条件状态包括一个或多个条件码标记的值。
39.如权利要求35至38中的任何一个权利要求所述的计算机程序产品,其中所述一个或多个条件状态在以下之一评估:
(i)刚一执行所述断定指令便评估一次;和
(ii)在执行每个相关联程序指令之前评估。
40.如权利要求35至39中的任何一个权利要求所述的计算机程序产品,其中所述一个或多个相关联指令紧跟着所述断定指令。
41.如权利要求35至40中的任何一个权利要求所述的计算机程序产品,其中所述断定指令与以下相关联:
(i)在所述一个或多个条件状态匹配一个或多个预定条件的情况下的、将要执行的一个或多个程序指令的条件条件匹配块;和
(ii)在所述一个或多个条件状态不匹配所述一个或多个预定条件的情况下的、将要执行的一个或多个程序指令的条件不匹配块。
42.如权利要求41所述的计算机程序产品,其中所述断定指令指定以下的一个或多个:
(i)一个或多个程序指令的所述条件匹配块的长度;和
(ii)一个或多个程序指令的所述条件不匹配块的长度。
43.如权利要求41和42中的任何一个权利要求所述的计算机程序产品,其中所述断定指令指定所述一个或多个预定条件。
44.如权利要求35至40中的任何一个权利要求所述的计算机程序产品,其中所述断定指令包括一个或多个字段,其中每个字段根据所述一个或多个条件状态与一个或多个预定状态的比较而指定是执行或是不执行各自的相关联程序指令。
45.如权利要求44所述的计算机程序产品,其中所述断定指令包括一字段,所述字段为每个各自的相关联程序指令指定所述一个或多个条件状态或所述一个或多个条件状态的互补是否与所述一个或多个预定状态进行比较,来确定是否执行所述各自的相关联程序指令。
46.如权利要求35至45中的任何一个权利要求所述的计算机程序产品,包括用来存储地址的程序计数器寄存器,所述地址指示正在执行的程序指令的存储位置。
47.如权利要求35至46中的任何一个权利要求所述的计算机程序产品,包括用于存储计数器值的被断定指令计数器寄存器,所述计数器值指示受制于所述断定指令的所述一个或多个相关联程序指令中的多少个已经被执行。
48.如权利要求46和47所述的计算机程序产品,其中,当执行受制于所述断定指令的所述一个或多个相关联程序指令时,所述程序计数器寄存器继续存储对应于所述断定指令的地址。
49.如权利要求47所述的计算机程序产品,包括异常处理电路,所述异常处理电路在异常发生后存储所述计数器值,并在异常完成后重新启动在由所述计数器值指向的程序指令处开始的执行。
50.如权利要求35至49中的任何一个权利要求所述的计算机程序产品,其中所述一个或多个相关联指令当受制于所述断定指令时,指定不同的数据处理操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0312977A GB2402510A (en) | 2003-06-05 | 2003-06-05 | Predication instruction within a data processing system |
GB0312977.2 | 2003-06-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1788253A true CN1788253A (zh) | 2006-06-14 |
CN100483336C CN100483336C (zh) | 2009-04-29 |
Family
ID=9959411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003801103310A Expired - Lifetime CN100483336C (zh) | 2003-06-05 | 2003-12-30 | 数据处理***内处理数据的设备及方法 |
Country Status (12)
Country | Link |
---|---|
US (1) | US7178011B2 (zh) |
EP (1) | EP1629375B1 (zh) |
JP (1) | JP3917635B2 (zh) |
KR (1) | KR101016713B1 (zh) |
CN (1) | CN100483336C (zh) |
AU (1) | AU2003290350A1 (zh) |
DE (1) | DE60323885D1 (zh) |
GB (1) | GB2402510A (zh) |
MY (1) | MY138874A (zh) |
RU (1) | RU2005137695A (zh) |
TW (1) | TWI314701B (zh) |
WO (1) | WO2004109499A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010012167A1 (zh) * | 2008-07-31 | 2010-02-04 | 华为技术有限公司 | 指令执行方法和装置 |
CN113254083A (zh) * | 2021-06-28 | 2021-08-13 | 北京智芯微电子科技有限公司 | 指令处理方法、指令处理***及处理器、芯片 |
CN113254082A (zh) * | 2021-06-23 | 2021-08-13 | 北京智芯微电子科技有限公司 | 条件分支指令处理方法及***、cpu、芯片 |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7210024B2 (en) * | 2005-02-10 | 2007-04-24 | Qualcomm Incorporated | Conditional instruction execution via emissary instruction for condition evaluation |
US7234043B2 (en) * | 2005-03-07 | 2007-06-19 | Arm Limited | Decoding predication instructions within a superscaler data processing system |
DE102005050382B4 (de) * | 2005-10-20 | 2012-08-09 | Infineon Technologies Ag | Prozessor zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls |
JP4159586B2 (ja) * | 2006-08-03 | 2008-10-01 | エヌイーシーコンピュータテクノ株式会社 | 情報処理装置および情報処理の高速化方法 |
US7971104B2 (en) * | 2006-10-24 | 2011-06-28 | Shlomi Dolev | Apparatus and methods for stabilization of processors, operating systems and other hardware and/or software configurations |
US9946550B2 (en) * | 2007-09-17 | 2018-04-17 | International Business Machines Corporation | Techniques for predicated execution in an out-of-order processor |
US7818551B2 (en) * | 2007-12-31 | 2010-10-19 | Microsoft Corporation | Feedback mechanism for dynamic predication of indirect jumps |
US8332620B2 (en) * | 2008-07-25 | 2012-12-11 | Freescale Semiconductor, Inc. | System, method and computer program product for executing a high level programming language conditional statement |
US8819399B1 (en) | 2009-07-31 | 2014-08-26 | Google Inc. | Predicated control flow and store instructions for native code module security |
US10175990B2 (en) * | 2009-12-22 | 2019-01-08 | Intel Corporation | Gathering and scattering multiple data elements |
US9128701B2 (en) | 2011-04-07 | 2015-09-08 | Via Technologies, Inc. | Generating constant for microinstructions from modified immediate field during instruction translation |
US8880851B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9645822B2 (en) | 2011-04-07 | 2017-05-09 | Via Technologies, Inc | Conditional store instructions in an out-of-order execution microprocessor |
US8924695B2 (en) | 2011-04-07 | 2014-12-30 | Via Technologies, Inc. | Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor |
US9292470B2 (en) | 2011-04-07 | 2016-03-22 | Via Technologies, Inc. | Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program |
US9141389B2 (en) | 2011-04-07 | 2015-09-22 | Via Technologies, Inc. | Heterogeneous ISA microprocessor with shared hardware ISA registers |
US9146742B2 (en) | 2011-04-07 | 2015-09-29 | Via Technologies, Inc. | Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA |
US9317288B2 (en) | 2011-04-07 | 2016-04-19 | Via Technologies, Inc. | Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9274795B2 (en) | 2011-04-07 | 2016-03-01 | Via Technologies, Inc. | Conditional non-branch instruction prediction |
US9032189B2 (en) | 2011-04-07 | 2015-05-12 | Via Technologies, Inc. | Efficient conditional ALU instruction in read-port limited register file microprocessor |
US9898291B2 (en) | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
US8880857B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor |
US9244686B2 (en) | 2011-04-07 | 2016-01-26 | Via Technologies, Inc. | Microprocessor that translates conditional load/store instructions into variable number of microinstructions |
US9043580B2 (en) | 2011-04-07 | 2015-05-26 | Via Technologies, Inc. | Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA) |
US9336180B2 (en) | 2011-04-07 | 2016-05-10 | Via Technologies, Inc. | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
US9176733B2 (en) | 2011-04-07 | 2015-11-03 | Via Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
US10261793B2 (en) | 2011-12-16 | 2019-04-16 | International Business Machines Corporation | Instruction predication using instruction address pattern matching |
US9465613B2 (en) * | 2011-12-19 | 2016-10-11 | International Business Machines Corporation | Instruction predication using unused datapath facilities |
US9632779B2 (en) | 2011-12-19 | 2017-04-25 | International Business Machines Corporation | Instruction predication using instruction filtering |
US9632786B2 (en) * | 2011-12-20 | 2017-04-25 | International Business Machines Corporation | Instruction set architecture with extended register addressing using one or more primary opcode bits |
JP5727107B2 (ja) * | 2012-09-21 | 2015-06-03 | インテル コーポレイション | バイナリトランスレーションを実行する方法及びシステム |
US9389868B2 (en) | 2012-11-01 | 2016-07-12 | International Business Machines Corporation | Confidence-driven selective predication of processor instructions |
US9304771B2 (en) | 2013-02-13 | 2016-04-05 | International Business Machines Corporation | Indirect instruction predication |
US9626185B2 (en) | 2013-02-22 | 2017-04-18 | Apple Inc. | IT instruction pre-decode |
US9792121B2 (en) | 2013-05-21 | 2017-10-17 | Via Technologies, Inc. | Microprocessor that fuses if-then instructions |
FR3021432B1 (fr) * | 2014-05-20 | 2017-11-10 | Bull Sas | Processeur a instructions conditionnelles |
US20170212763A1 (en) * | 2014-07-25 | 2017-07-27 | Hewlettt Packard Enterprise Development Lp | Exception handling predicate register |
US10607003B2 (en) * | 2017-06-29 | 2020-03-31 | International Business Machines Corporation | Mitigation of code reuse attacks by restricted indirect branch instruction |
WO2021035006A1 (en) | 2019-08-20 | 2021-02-25 | Northrop Grumman Systems Corporation | Simd controller and simd predication scheme |
KR102571809B1 (ko) * | 2021-08-03 | 2023-08-25 | 연세대학교 산학협력단 | 전자기 과도 상태 시뮬레이션 방법 및 기록 매체 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62259140A (ja) | 1986-05-06 | 1987-11-11 | Oki Electric Ind Co Ltd | アドレス生成回路 |
DE4430195B4 (de) * | 1993-12-13 | 2004-09-23 | Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto | Verfahren zur Auswertung von Booleschen Ausdrücken |
US5659722A (en) * | 1994-04-28 | 1997-08-19 | International Business Machines Corporation | Multiple condition code branching system in a multi-processor environment |
JP3442225B2 (ja) | 1996-07-11 | 2003-09-02 | 株式会社日立製作所 | 演算処理装置 |
US6009512A (en) * | 1997-10-27 | 1999-12-28 | Advanced Micro Devices, Inc. | Mechanism for forwarding operands based on predicated instructions |
US6157996A (en) * | 1997-11-13 | 2000-12-05 | Advanced Micro Devices, Inc. | Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space |
US6353883B1 (en) * | 1998-08-04 | 2002-03-05 | Intel Corporation | Method and apparatus for performing predicate prediction |
US6233676B1 (en) * | 1999-03-18 | 2001-05-15 | Ip-First, L.L.C. | Apparatus and method for fast forward branch |
US6640315B1 (en) * | 1999-06-26 | 2003-10-28 | Board Of Trustees Of The University Of Illinois | Method and apparatus for enhancing instruction level parallelism |
US6910123B1 (en) * | 2000-01-13 | 2005-06-21 | Texas Instruments Incorporated | Processor with conditional instruction execution based upon state of corresponding annul bit of annul code |
JP3532835B2 (ja) | 2000-07-04 | 2004-05-31 | 松下電器産業株式会社 | データ処理装置およびプログラム変換装置 |
US6662294B1 (en) * | 2000-09-28 | 2003-12-09 | International Business Machines Corporation | Converting short branches to predicated instructions |
US6886094B1 (en) * | 2000-09-28 | 2005-04-26 | International Business Machines Corporation | Apparatus and method for detecting and handling exceptions |
US7017032B2 (en) * | 2001-06-11 | 2006-03-21 | Broadcom Corporation | Setting execution conditions |
-
2003
- 2003-06-05 GB GB0312977A patent/GB2402510A/en not_active Withdrawn
- 2003-12-30 RU RU2005137695/09A patent/RU2005137695A/ru not_active Application Discontinuation
- 2003-12-30 CN CNB2003801103310A patent/CN100483336C/zh not_active Expired - Lifetime
- 2003-12-30 DE DE60323885T patent/DE60323885D1/de not_active Expired - Lifetime
- 2003-12-30 AU AU2003290350A patent/AU2003290350A1/en not_active Abandoned
- 2003-12-30 EP EP03782711A patent/EP1629375B1/en not_active Expired - Lifetime
- 2003-12-30 WO PCT/GB2003/005674 patent/WO2004109499A2/en active IP Right Grant
- 2003-12-30 KR KR1020057023079A patent/KR101016713B1/ko active IP Right Grant
- 2003-12-30 JP JP2005500494A patent/JP3917635B2/ja not_active Expired - Lifetime
-
2004
- 2004-01-29 US US10/765,867 patent/US7178011B2/en active Active
- 2004-02-09 TW TW093102967A patent/TWI314701B/zh not_active IP Right Cessation
- 2004-02-10 MY MYPI20040391A patent/MY138874A/en unknown
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010012167A1 (zh) * | 2008-07-31 | 2010-02-04 | 华为技术有限公司 | 指令执行方法和装置 |
CN113254082A (zh) * | 2021-06-23 | 2021-08-13 | 北京智芯微电子科技有限公司 | 条件分支指令处理方法及***、cpu、芯片 |
CN113254083A (zh) * | 2021-06-28 | 2021-08-13 | 北京智芯微电子科技有限公司 | 指令处理方法、指令处理***及处理器、芯片 |
Also Published As
Publication number | Publication date |
---|---|
US7178011B2 (en) | 2007-02-13 |
TWI314701B (en) | 2009-09-11 |
EP1629375A2 (en) | 2006-03-01 |
WO2004109499A2 (en) | 2004-12-16 |
KR20060063790A (ko) | 2006-06-12 |
US20040250051A1 (en) | 2004-12-09 |
CN100483336C (zh) | 2009-04-29 |
KR101016713B1 (ko) | 2011-02-25 |
EP1629375B1 (en) | 2008-10-01 |
DE60323885D1 (de) | 2008-11-13 |
WO2004109499A3 (en) | 2005-10-13 |
MY138874A (en) | 2009-08-28 |
AU2003290350A8 (en) | 2005-01-04 |
GB2402510A (en) | 2004-12-08 |
JP2006526813A (ja) | 2006-11-24 |
JP3917635B2 (ja) | 2007-05-23 |
AU2003290350A1 (en) | 2005-01-04 |
GB0312977D0 (en) | 2003-07-09 |
TW200428276A (en) | 2004-12-16 |
RU2005137695A (ru) | 2006-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1788253A (zh) | 数据处理***内的断定指令 | |
CN1174313C (zh) | 多指令集的数据处理 | |
CN1088214C (zh) | 用多指令集处理数据的器件和方法 | |
CN1114152C (zh) | 适合于进行饱和运算的处理器及其控制方法 | |
CN1194292C (zh) | 具有改良的指令集体系结构的微处理器 | |
CN100339824C (zh) | 高效执行特长指令字的处理器和方法 | |
CN1591335A (zh) | 事务型处理过程的数据流分析 | |
CN1095116C (zh) | 执行两种指令长度代码的处理机及其指令码输入装置 | |
CN1570870A (zh) | 终极管道和最优重排技术 | |
CN1842767A (zh) | 用于多个异常处理模型的中间表示 | |
CN101046741A (zh) | 处理器装置和复合条件处理方法 | |
CN1431584A (zh) | 延伸微处理器数据模式的装置及方法 | |
CN1181550A (zh) | 微处理机及多处理机*** | |
CN1278226C (zh) | 模拟装置、模拟方法 | |
CN1758213A (zh) | 带有共享内容的异构型并行多线程处理器(hpmt) | |
CN1146784C (zh) | 用字长短的指令实现多个寄存器的数据传送的信息处理装置 | |
CN1016383B (zh) | 基于操作数长度和对位的微码转移 | |
Ranwez et al. | Aligning protein-coding nucleotide sequences with MACSE | |
CN1734415A (zh) | 分枝预测装置及分枝预测方法 | |
CN1959630A (zh) | 微处理器 | |
CN1068445C (zh) | 指令调度方法和寄存器竞争检查方法 | |
CN1300395A (zh) | 处理器 | |
CN1770108A (zh) | 软件在线升级的方法 | |
CN1109978C (zh) | 信息处理设备和方法,及调度装置 | |
CN1659513A (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 | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20090429 |