CN100498693C - 经由用于条件评估的使者指令的条件指令执行 - Google Patents

经由用于条件评估的使者指令的条件指令执行 Download PDF

Info

Publication number
CN100498693C
CN100498693C CNB2006800099523A CN200680009952A CN100498693C CN 100498693 C CN100498693 C CN 100498693C CN B2006800099523 A CNB2006800099523 A CN B2006800099523A CN 200680009952 A CN200680009952 A CN 200680009952A CN 100498693 C CN100498693 C CN 100498693C
Authority
CN
China
Prior art keywords
instruction
condition
emissary
carry out
base
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
Application number
CNB2006800099523A
Other languages
English (en)
Other versions
CN101151591A (zh
Inventor
迈克尔·斯科特·麦基尔文
詹姆斯·诺里斯·迪芬德尔费尔
杰弗里·托德·布里奇斯
托马斯·安德鲁·萨托里乌斯
罗德尼·韦恩·史密斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN101151591A publication Critical patent/CN101151591A/zh
Application granted granted Critical
Publication of CN100498693C publication Critical patent/CN100498693C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage

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)
  • Debugging And Monitoring (AREA)
  • Control Of Transmission Device (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Electronic Switches (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

通过将可操作以在满足条件时执行操作的条件指令转换为可操作以评估所述条件的使者指令和可操作以执行所述操作的非条件基础指令来简化危险检测。执行所述使者指令,且同时暂停所述基础指令。所述使者指令评估所述条件且将所述条件评估报告回所述基础指令。基于所述条件评估,将所述基础指令发射到管线中以供执行,或将其丢弃(或用NOP或空指令来代替)。在任一情况下,可解决随后指令的依赖性。

Description

经由用于条件评估的使者指令的条件指令执行
技术领域
本发明大体上涉及处理器领域,且更明确地说,涉及一种经由用于条件评估的使者指令的条件指令执行方法。
背景技术
微处理器在很多种应用中执行计算任务。高执行速度、低功率消耗和小尺寸通常是处理器设计者的重要目标,尤其是在例如便携式电子装置的嵌入式应用中。然而,一个重要的考虑因素是准确度。包括在处理器设计中用以改进执行速度或其它度量的任何结构特征还需要确保软件代码的正确执行。
许多现代处理器采用管线结构,其中在执行中交迭连续的指令,其中每一指令具有多个执行步骤。为获得改进的性能,指令应不断流动通过管线。然而,指令可出于各种原因而停滞在管线中,所述原因例如指令之间的数据依赖性(也称为数据危险)。高性能处理器可采用超标量设计,其中部分管线是重复的。多个管线可最小化管线停滞对整个系统性能的影响,因为可将等候停滞管线的指令分派到另一管线以立即执行。
为了最大程度利用由超标量管线提供的潜在性能增益,高性能处理器通常支持无序执行。也就是说,可以不同于其程序次序的次序来执行指令,如果这样做没有被指令间的相依性排除的话。作为此类依赖性的一个实例,执行用以从寄存器读取操作数的逻辑或算术操作的指令直到先前指令(其将结果写入所述寄存器)已计算出其结果时才能执行(数据可被转发,其中完成可暗示着指令已离开管线)。不能无序地执行这两个指令,否则将发生不正确的结果。检测指令间的依赖性的过程被称为危险检测。在将指令分派到执行管线中之前,通常非常早地在管线中执行危险检测。
大多数指令集结构包括条件指令,其是依据条件评估来执行或不执行某操作的指令。条件评估通常在执行管级中执行,其在管线深处。条件指令可通过将是否将执行操作的认识推迟到管线深处而极大地使危险检测变复杂。然而,在管线中较早地需要操作是否将影响(例如)寄存器的内容的认识以进行危险检测。以下实例性代码段说明此问题:
ADD r1,r7,r8     相加r7和r8的内容,并将总和放置在r1中
CMP r1,r12        将r1和r12的内容进行比较(设置代码或旗标以反映比较结果)
ADDEQ r1,r8,r9   如果先前比较是相等的,那么相加r8和r9的内容,并将总和放置在r1中。否则,r1不变
ADDNE r1,r3,r4  如果先前比较不是相等的,那么相加r3和r4的内容,并将总和放置在r1中。否则,r1不变
AND r10,r6,r1    将r6的内容与r1的内容进行逻辑“与”,将结果放置在r10中
最终AND指令具有对ADDNE指令的r1依赖性。也就是说,ADDNE必须在AND执行之前计算出其结果,使得由ADDNE写入到r1中的数据将可由AND使用。然而,ADDNE是条件指令,且可能不执行ADD操作。在此情况下,AND指令的真正依赖性是在ADDEQ指令上。在前述实例(描绘常用软件构造)中,将执行ADDEQ和ADDNE指令中的仅一者,因为条件EQ(相等)和NE(不相等)是相互排斥且完全的。然而,一般来说,由于ADDEQ指令是有条件的,因而AND实际上可具有对较早指令(在此情况下是最初ADD)的依赖性。另外,如果先前条件指令不执行,那么随后指令可能根本没有依赖性。
由条件指令呈现的偶然依赖性且尤其是可能的多级别偶然依赖性极大地使准确危险检测的任务变复杂,所述任务对于准确地进行无序程序执行来说是必要的。
发明内容
在一个实施例中,将可操作以在满足条件时执行操作的条件指令转换为可操作以评估所述条件的使者指令和可操作以执行所述操作的非条件基础指令。执行所述使者指令,且同时暂停所述基础指令。所述使者指令评估所述条件且将所述条件评估报告回所述基础指令。基于所述条件评估,将所述基础指令发射到管线中以供执行,或将其丢弃(或用NOP或空指令来代替)。在任一情况下,可解决随后指令的依赖性。
在另一实施例中,一种处理器包含指令执行管线,所述指令执行管线包括指令发布管级和条件评估管级。所述处理器包括从条件评估管级到指令发布管级的反馈路径。所述处理器进一步包括管线控制器,其可操作以在指令发布管级处将条件指令转换为使者指令和非条件基础指令,发布所述使者指令,且响应于来自所述条件评估管级的由所述使者指令作出的反馈而有条件地发布所述基础指令。
在另一实施例中,解码可操作以仅在满足条件时执行操作的条件指令。将所述条件指令转换为可操作以评估所述条件的使者指令和可操作以执行所述操作的非条件基础指令。执行所述使者指令。如果不满足所述条件,那么确定没有其它指令依赖于所述条件指令。
另一实施例涉及一种在管线处理器中执行危险检测的方法。解码条件指令,其中所述条件指令可操作以仅在条件为“真”时执行操作。将所述条件指令转换为两个单独的指令,即使者指令和在执行时可操作以执行所述操作的非条件基础指令。执行所述使者指令并致使其评估所述条件。取决于使者指令所作的条件评估而定,执行或不执行所述基础指令。检测一个或一个以上随后指令与所述基础指令之间的数据依赖性。
另一实施例涉及一种执行条件指令的方法。将所述条件指令转换为使者指令和基础指令。执行所述使者指令。响应于由使者指令所作的条件评估来有条件地执行所述基础指令。
附图说明
图1是处理器的功能方框图。
图2是超标量管线的功能方框图。
图3是条件指令执行的流程图。
具体实施方式
图1描绘处理器10的功能方框图。处理器10根据控制逻辑14在指令执行管线12中执行指令。管线12可以是超标量设计,其具有多个平行管线(例如12a和12b)。管线12a、12b包括各种寄存器或锁存器16(其以管级进行组织)和一个或一个以上算术逻辑单元(ALU)18。通用寄存器(GPR)文件20提供构成存储器层级顶部的寄存器。管线12a、12b从指令高速缓冲存储器(I-高速缓冲存储器或I$)22取出指令,其中由指令侧转译后备缓冲器(ITLB)24管理存储器寻址和许可。
从数据高速缓冲存储器(D-高速缓冲存储器或D$)26存取数据,其中由主转译后备缓冲器(TLB)28管理存储器寻址和许可。在各种实施例中,ITLB可包含部分TLB的副本。或者,ITLB和TLB可为集成的。类似地,在处理器10的各种实施例中,I-高速缓冲存储器22和D-高速缓冲存储器26可为集成的或联合的。在存储器接口30的控制下,I-高速缓冲存储器22和/或D-高速缓冲存储器26中的未中造成存取主(芯片外)存储器32。处理器10可包括输入/输出(I/O)接口34,从而控制对各种外围装置36的存取。所属领域的技术人员将认识到处理器10的多种变化是可能的。举例来说,处理器10可包括用于I和D高速缓冲存储器中的任一者或两者的第二等级(L2)高速缓冲存储器。另外,在特定实施例中可省略处理器10中所描述的功能块中的一者或一者以上。
图2描绘超标量管线结构。处理器管线12包括指令取出管级40,其从I-高速缓冲存储器22取出指令。在解码管级42处解码所述指令。一旦已知所述指令,危险检测逻辑44便检测所述经解码指令与当前正执行的指令(例如产生经解码指令所需的操作数的指令)之间的依赖性。在危险检测逻辑44随后的是扩展/发布管级46,其将解码指令发布到多个执行管线12a、12b的一者中。
如上所述,条件指令极大地使危险检测变复杂。为了简化此任务,可将所述条件指令转变为两个相关指令:使者指令和基础指令。如本文使用,“使者指令”是其唯一操作为评估条件指令的条件且将所述条件评估报告回基础指令的指令。使者指令不读取或写入任何通用寄存器,不改变任何条件代码,且不执行任何存储器存取。举例来说,对应于条件指令“ADDEQ r1,r3,r4”的使者指令是(例如)通过检查条件寄存器中由先前比较或其它指令设置的EQ位来检测并报告EQ(相等)条件的指令。使者指令既不读取r3或r4,也不写入r1。
如本文使用,“基础指令”是一种非条件指令,其所执行的操作与条件指令将在其条件被评估为“真”时所执行的操作相同,且具有相同的操作数和目的地。举例来说,对应于条件指令“ADDEQ r1,r3,r4”的基础指令是“ADD r1,r3,r4”。在一个实施例中,在发布管级46处暂停基础指令,等待其条件评估。
一旦将条件指令转变为使者指令和基础指令,便将使者指令发射到执行管线12a、12b中,且同时暂停所述基础指令。所述使者指令前进,直到其到达条件评估管级48、50为止。此处,使者指令评估与所述条件指令相关的条件,且将所述条件评估报告回暂停在发布管级46处的基础指令。使者指令可接着前进通过剩余管线12a、12b;可由前进通过剩余管线12a、12b的NOP(无操作或空指令)来取代;或其可被丢弃且所得的管“气泡”由管线12a、12b中的下一随后指令填充。简单地说,使者指令的有用寿命在评估和报告条件指令的条件评估后结束,且接着可以不影响处理器程序状态的任何方式来处置使者指令,如所属领域的技术人员众所周知。
在使者指令报告条件评估之后,如果条件评估是“真”,那么将发布管级46处暂停的基础指令发射到可用的执行管线12a、12b中。如果满足条件或条件测试“通过”,那么认为条件评估为“真”。相反地,如果未满足条件或条件测试“失败”,那么条件评估为“假”。在“真”条件评估的情况下,非条件基础指令执行,且其对寄存器文件或存储器的影响是已知的。因此,危险检测逻辑44可针对所述基础指令随后的读取所述基础指令写入的任何寄存器或存储器位置的所有指令执行危险检测。
如果由使者指令报告的条件评估是“假”,那么不执行基础指令。所述基础指令可由NOP替代,所述NOP被发射到可用的执行管线12a、12b中。或者,基础指令可被丢弃,且随后指令前进以填充所述管线气泡。在任一情况下,危险检测逻辑44均知道所述基础指令(且相应地,原始条件指令)未曾改变任何寄存器或存储器位置,且随后指令对所述原始条件指令没有任何依赖性。危险检测逻辑44可接着越过所述条件指令观看一个或一个以上先前指令,以确定随后指令的实际依赖性。
在图3中以流程图形式描述此过程。在指令解码(方框52)之后,如果指令是条件指令(方框54),那么将其转换为使者指令和基础指令(方框56)。在指令发布管级46处暂停基础指令,且将使者指令发布到可用的执行管线12a、12b中(方框58)。当所述使者指令到达条件评估管级48、50时,其评估条件(方框60)且将所述条件评估报告到基础指令。如果条件评估“真”,那么将基础指令发布到可用管线12a、12b中(方框62)。如果条件评估“假”,那么丢弃基础指令或将其转换为NOP,所述NOP被发布到管线12a、12b中(方框64)。在任一情况下,且同样如果经解码指令不是条件指令(方框54),那么针对随后指令执行危险检测(方框66),因为条件指令是否将执行是已知的。
尽管本文已相对于本发明特定特征、方面和实施例描述了本发明概念,但将明了在本发明概念的宽广范围内能够作出多种变化、修改和其它实施例,且因此应将所有变化、修改和实施例视为属于本文所揭示的发明性概念的范围内。因此,应在所有方面中将本发明实施例理解为说明性的而并非限制性的,且希望属于所附权利要求书的意义和等效范围内的所有改变均涵盖在其中。

Claims (19)

1.一种在管线处理器中执行条件指令的方法,所述条件指令可操作以在满足条件时执行操作,所述方法包含:
将所述条件指令转换为可操作以确定是否满足所述条件的使者指令和可操作以执行所述操作的非条件基础指令;
执行所述使者指令;以及
如果所述使者指令的执行指示满足所述条件,那么执行所述非条件基础指令。
2.根据权利要求1所述的方法,其进一步包含:如果所述使者指令的执行指示未满足所述条件,那么代替所述非条件基础指令而执行NOP指令。
3.根据权利要求1所述的方法,其进一步包含:如果所述使者指令的执行指示未满足所述条件,那么丢弃所述非条件基础指令。
4.根据权利要求1所述的方法,其进一步包含:在执行所述使者指令之后,针对所述条件指令随后的指令执行危险检测。
5.一种处理器,其包含:
指令执行管线,其包括指令发布管级和条件评估管级;
从所述条件评估管级到所述指令发布管级的反馈路径;以及
管线控制器,其可操作以在所述指令发布管级处将条件指令转换为使者指令和非条件基础指令,发布所述使者指令,且响应于来自所述条件评估管级的由所述使者指令作出的反馈而有条件地发布所述非条件基础指令。
6.根据权利要求5所述的处理器,其进一步包含危险检测逻辑,所述危险检测逻辑可操作以在所述条件评估之后检测随后指令对所述条件指令的依赖性。
7.一种在管线处理器中执行危险检测的方法,其包含:
解码条件指令,所述条件指令可操作以仅在满足条件时执行操作;
将所述条件指令转换为可操作以评估所述条件的使者指令和可操作以执行所述操作的非条件基础指令;
执行所述使者指令,以获得条件评估;以及
如果未满足所述条件,那么确定随后指令均不依赖于所述条件指令。
8.根据权利要求7所述的方法,其进一步包含:如果满足所述条件,那么检测读取由所述条件指令写入的寄存器或存储器位置的任何随后指令的依赖性。
9.根据权利要求8所述的方法,其进一步包含:如果满足所述条件,那么执行所述非条件基础指令。
10.根据权利要求9所述的方法,其中在执行所述非条件基础指令之前检测所述依赖性。
11.根据权利要求10所述的方法,其进一步包含:暂停针对其检测依赖性的随后指令,直到所述非条件基础指令完成执行为止。
12.根据权利要求7所述的方法,其进一步包含:如果未满足所述条件,那么代替所述非条件基础指令而执行NOP指令。
13.根据权利要求7所述的方法,其进一步包含:如果未满足所述条件,那么丢弃所述非条件基础指令。
14.一种在管线处理器中执行危险检测的方法,其包含:
解码条件指令,其中所述条件指令可操作以仅在条件为“真”时才执行操作;
将所述条件指令转换为两个单独的指令,即使者指令和在执行时可操作以执行所述操作的非条件基础指令;
执行所述使者指令且致使所述使者指令评估所述条件;
依据所述使者指令对所述条件的评估而定,执行或不执行所述非条件基础指令;
以及
检测一个或一个以上随后指令与所述基础指令之间的数据依赖性。
15.根据权利要求14所述的方法,其进一步包含:响应于检测到所述依赖性,延迟所述随后指令中的一者或一者以上的执行,直到所述非条件基础指令已执行所述操作为止。
16.根据权利要求14所述的方法,其进一步包含:响应于检测到一个或一个以上随后指令对所述基础指令没有依赖性,立即发射所述一个或一个以上随后指令以供执行。
17.根据权利要求14所述的方法,其进一步包含:对所述条件指令随后的一个或一个以上指令执行危险检测。
18.根据权利要求17所述的方法,其中如果不执行所述基础指令,那么在一个或一个以上随后指令与所述条件指令之间不存在依赖性。
19.一种执行条件指令的方法,其包含:
将所述条件指令转换为使者指令和基础指令;
执行所述使者指令,以及
响应于所述使者指令所作的条件评估来有条件地执行所述基础指令。
CNB2006800099523A 2005-02-10 2006-02-10 经由用于条件评估的使者指令的条件指令执行 Active CN100498693C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/055,919 US7210024B2 (en) 2005-02-10 2005-02-10 Conditional instruction execution via emissary instruction for condition evaluation
US11/055,919 2005-02-10

Publications (2)

Publication Number Publication Date
CN101151591A CN101151591A (zh) 2008-03-26
CN100498693C true CN100498693C (zh) 2009-06-10

Family

ID=36676060

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006800099523A Active CN100498693C (zh) 2005-02-10 2006-02-10 经由用于条件评估的使者指令的条件指令执行

Country Status (11)

Country Link
US (1) US7210024B2 (zh)
EP (1) EP1846817B1 (zh)
JP (1) JP4903720B2 (zh)
KR (1) KR100916168B1 (zh)
CN (1) CN100498693C (zh)
AT (1) ATE463787T1 (zh)
BR (1) BRPI0606973A2 (zh)
DE (1) DE602006013415D1 (zh)
IL (1) IL185066A0 (zh)
TW (1) TW200641675A (zh)
WO (1) WO2006086713A2 (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008079433A1 (en) * 2006-12-20 2008-07-03 Rowley, Richard Method and system for installing a root certificate on a computer with a root update mechanism
KR100854720B1 (ko) * 2007-03-23 2008-08-27 삼성전자주식회사 루프 통합 방법 및 루프 통합 장치
US7793079B2 (en) * 2007-06-27 2010-09-07 Qualcomm Incorporated Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
CN101739237B (zh) * 2009-12-21 2013-09-18 龙芯中科技术有限公司 微处理器功能性指令实现装置和方法
US8527804B2 (en) * 2010-11-01 2013-09-03 Qualcomm Incorporated Architecture and method for eliminating store buffers in a DSP/processor with multiple memory accesses
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)
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
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
EP2508980B1 (en) * 2011-04-07 2018-02-28 VIA Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
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
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
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9032189B2 (en) * 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
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
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
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
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9639359B2 (en) * 2013-05-21 2017-05-02 Advanced Micro Devices, Inc. Thermal-aware compiler for parallel instruction execution in processors

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5533235A (en) * 1978-08-30 1980-03-08 Toshiba Corp Microprogram control system
US6016543A (en) * 1997-05-14 2000-01-18 Mitsubishi Denki Kabushiki Kaisha Microprocessor for controlling the conditional execution of instructions
US6505296B2 (en) * 1997-10-13 2003-01-07 Hewlett-Packard Company Emulated branch effected by trampoline mechanism
US6170052B1 (en) * 1997-12-31 2001-01-02 Intel Corporation Method and apparatus for implementing predicated sequences in a processor with renaming
EP0992891A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. A processor
JP3437135B2 (ja) * 1999-02-08 2003-08-18 松下電器産業株式会社 プログラム実行制御システム及びその方法
US6598153B1 (en) 1999-12-10 2003-07-22 International Business Machines Corporation Processor and method that accelerate evaluation of pairs of condition-setting and branch instructions
US6877086B1 (en) 2000-11-02 2005-04-05 Intel Corporation Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter
JP3900485B2 (ja) * 2002-07-29 2007-04-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 最適化装置、コンパイラプログラム、最適化方法、及び記録媒体
GB2402510A (en) * 2003-06-05 2004-12-08 Advanced Risc Mach Ltd Predication instruction within a data processing system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Optimization for a Superscalar Out-of-Order Machine. Anne M. Holler.Proceedings of the 29th. annual IEEE/ACM international symposium on microarchitecture,Vol.1 No.29. 1996
Optimization for a Superscalar Out-of-Order Machine. Anne M. Holler.Proceedings of the 29th. annual IEEE/ACM international symposium on microarchitecture,Vol.1 No.29. 1996 *

Also Published As

Publication number Publication date
US20060179288A1 (en) 2006-08-10
EP1846817A2 (en) 2007-10-24
KR20070101393A (ko) 2007-10-16
ATE463787T1 (de) 2010-04-15
TW200641675A (en) 2006-12-01
JP2008530693A (ja) 2008-08-07
BRPI0606973A2 (pt) 2009-07-28
WO2006086713A3 (en) 2006-11-16
DE602006013415D1 (de) 2010-05-20
KR100916168B1 (ko) 2009-09-08
JP4903720B2 (ja) 2012-03-28
CN101151591A (zh) 2008-03-26
IL185066A0 (en) 2007-12-03
WO2006086713A2 (en) 2006-08-17
EP1846817B1 (en) 2010-04-07
US7210024B2 (en) 2007-04-24

Similar Documents

Publication Publication Date Title
CN100498693C (zh) 经由用于条件评估的使者指令的条件指令执行
TWI507980B (zh) 最佳化暫存器初始化操作
JP5335946B2 (ja) 電力的に効率的な命令プリフェッチ機構
CN101194225B (zh) 用于支持条件指令无条件提供输出的系统及方法
US7877580B2 (en) Branch lookahead prefetch for microprocessors
KR101459536B1 (ko) 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치
CN101160561B (zh) 通过循环结束分支来抑制分支历史寄存器的更新
US11175923B2 (en) Comparing load instruction address fields to store instruction address fields in a table to delay issuing dependent load instructions
CN100495321C (zh) 经由分支校正进行预解码错误处理
EP1296229B1 (en) Scoreboarding mechanism in a pipeline that includes replays and redirects
US7949861B2 (en) Method and apparatus for managing instruction flushing in a microprocessor's instruction pipeline
TWI450189B (zh) 微處理器融合載入算術/邏輯運算及跳躍巨指令
EP1296230A2 (en) Instruction issuing in the presence of load misses
US20110219213A1 (en) Instruction cracking based on machine state
KR20010109354A (ko) 프로세서내의 기록 트래픽을 감소시키는 시스템 및 방법
EP1296228B1 (en) Instruction Issue and retirement in processor having mismatched pipeline depths
US6871275B1 (en) Microprocessor having a branch predictor using speculative branch registers
US10990403B1 (en) Predicting an outcome of an instruction following a flush

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1112087

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1112087

Country of ref document: HK