CN100474238C - 执行流同义词的方法和装置 - Google Patents

执行流同义词的方法和装置 Download PDF

Info

Publication number
CN100474238C
CN100474238C CNB2004800339890A CN200480033989A CN100474238C CN 100474238 C CN100474238 C CN 100474238C CN B2004800339890 A CNB2004800339890 A CN B2004800339890A CN 200480033989 A CN200480033989 A CN 200480033989A CN 100474238 C CN100474238 C CN 100474238C
Authority
CN
China
Prior art keywords
synonym
stream
processor
performance element
class
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.)
Expired - Fee Related
Application number
CNB2004800339890A
Other languages
English (en)
Other versions
CN1930548A (zh
Inventor
J·梅特斯
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN1930548A publication Critical patent/CN1930548A/zh
Application granted granted Critical
Publication of CN100474238C publication Critical patent/CN100474238C/zh
Expired - Fee Related 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/22Microcontrol or microprogram arrangements
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

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)
  • Retry When Errors Occur (AREA)

Abstract

公开了一种利用多个微码流同义词或硬件流同义词用于指令的方法和装置。在一个实施例中,创建一个微码同义词用于在两个或更多不同类型的执行单元上执行。可以依据执行单元的可用性状态为执行选择一个微码同义词。在另一个实施例中,可以为执行选择若干微码同义词。用于完成执行的第一微码同义词的结果可以退回。如果两个微码同义词的执行结果不匹配,就产生一个故障异常。

Description

执行流同义词的方法和装置
技术领域
本发明一般涉及微处理器,尤其涉及包括不同类型的若干执行单元的微处理器。
背景技术
现代微处理器通过将复杂指令转换成一组较简单指令而支持复杂指令的执行。可将所得的较简单指令组称为“流”。存在包括微操作并由微码描述的流。可将这些流称为微码流。也存在通过一组硬件逻辑将其转变成较简单指令组的流。可将这些流称为硬件流。处理器首先将指令解码成微码流或硬件流,随后调度所得的微码流用于在一个或多个执行单元上的执行。
处理器的执行单元包括不同的类型。例如,一个处理器在它的体系结构内可包括一个或多个如下类型的执行单元:整数运算、浮点运算、多媒体运算、分支计算和控制;并且该处理器还包括存储器负载/存储。通常,一条指令的微码流或硬件流表示会以在这些类型的执行单元之一上执行为目标。然而,目标执行单元常常不可用或者至少比其他的可用度更低。它不可用或可用度较低的原因可能仅仅是因为该执行单元当前正在执行对应于另一条指令的另一流。但是在某些情况下目标执行单元可用度较低是因为它在处理器进入降低功率模式的情况下被关闭。为了执行微码流或硬件流,处理器必须首先离开这一降低功率模式。在某些情况下,目标执行单元可用度降低或不可用是由于软或硬故障。这些情况都会引发所述指令的微码流或硬件流表示的执行问题。
附图说明
示例性而非限制性的示出本发明,并且在附图中类似的标号指代类似的元件,其中:
图1是根据一个实施例示出在处理器中利用流同义词的流水线的部分的框图。
图2是根据一个实施例示出被解码至微码同义词的程序的程序执行图。
图3是根据本发明另一个实施例示出处理器中利用微码同义词的流水线的部分的框图。
图4是根据本发明一个实施例示出在轨迹高速缓存中出现作为轨迹的微码同义词的图示。
图5是根据本发明一个实施例示出利用微码同义词方法的流程图。
图6是根据本发明另一个实施例示出利用微码同义词方法的流程图。
图7A和7B是根据本发明两个实施例的微处理器系统的框图。
具体实施方式
随后的说明描述了用于使用对应于单指令的多微码流同义词和硬件流同义词的处理器并能够在不同类型的执行单元上执行的技术。在随后的描述中,将阐述诸如逻辑实现、软件模块分配、总线信令技术和操作细节之类的各种指定细节,以提供对本发明更为透彻的理解。然而本领域普通技术人员应该认识到无需这些特定细节也能实践本发明。在其他的实例中,未详细示出控制结构、门电平电路和完整软件指令序列以防止对本发明主题的淡化。本领域普通技术人员在阅读了所包括的说明的情况下就能够实现恰当的功能而无需不恰当的实验。在某些实施例中,能够以诸如由公司的
Figure C200480033989D00082
处理器系列(IPF)处理器或
Figure C200480033989D00083
系列处理器的形式公开本发明。然而本发明也可在希望使用多微码同义词或硬件同义词的其他种类的处理器上实践。
现在参考图1,根据一个实施例示出了处理器中利用流同义词的流水线的各个部分100的框图。图1流水线100的示出级是出于讨论处理器中流同义词使用的目的。在其他实施例中,流水线级可以具有不同的功能和次序。图1示出了流水线100中执行单元的代表性集合,包括多媒体执行单元120、分支执行单元122、整数执行单元124、浮点执行单元126和存储器负载/存储执行单元128。在其他实施例中,这些执行单元每种都可多于一个,并且可以存在不同类型的执行单元。
读取级104可以从一个或多个高速缓存中读取或预读取程序指令,并将这些指令提供给解码级106。解码级106需要将这些指令转换成称为流的较简单指令组用于执行单元内随后的执行。可将微码流存储在解码级106内的微码只读存储器(ROM)中。在其他实施例中,可将微码流存储在诸如闪存的非易失性或可写入存储器中。可以使用解码级106内的一组硬件逻辑元件实现硬件流。在传统的处理器中,指令和它的流(微码流或硬件流)之间是一一对应的。然而在本发明的一个实施例中公开的,包括微码流或硬件流的多个不同的流副本可为某些指令所呈现。如果对于给定指令,这多个不同的这些流副本产生了相同的结果,那么就可将它们称为流同义词。流同义词可以是能够在给定类型的执行单元上执行的微码流同义词或硬件流同义词,但是在许多有用的实例中,它们将能够在不同类型的执行单元上执行。
在一个实施例中,解码级106内可以包括一对流同义词,流同义词1 110和流同义词2 112。在其他实施例中,一条指令可以有多于两个流同义词。流同义词1 110和流同义词2 112都可以是能够表示特定指令的微码流,或者可以是硬件流或两者的混合。解码级106具有选择流同义词1 110或流同义词2 112的逻辑,用于依据处理器状态或其他规则解码随后执行的相应指令。解码级106可以检查状态寄存器118以确定特定的执行单元的可用度是较低还是较高。在一个实施例中,状态寄存器118可以是调度器级116要求的现存状态寄存器。对特定执行单元可用度是否较低的指示可以表明该特定执行单元是否当前正被占用执行,或它能够指明该特定执行单元作为处理器降低功率模式的一部分而被关闭。在某些情况下,状态寄存器118可以指示正在执行单元中被检测到的软或硬故障。无论如何,当发现由微码同义词或硬件同义词利用的执行单元更为可用时,解码级106就选择用于解码指令的该微码同义词或硬件同义词。当状态寄存器118未指示处理器降低功率模式或者软或硬故障,则解码级106通过使用各种选择规则来考虑这些情况。
在若干执行单元更为可用的情况下,解码级106需要从对应于所述若干更为可用的执行单元的若干微码同义词或硬件同义词中选择一个微码同义词或硬件同义词。在一个实施例中,可以基于系统执行规则做出选择。在另一个实施例中,可以仅在默认选择基础上做出选择。在所有相应的执行单元可用性更低的另一种情况下,解码级106随后必须基于规则或历史从若干微码同义词或硬件同义词中做出仲裁。在一个实施例中,解码级106可以通过检查逻辑或全程历史,以类似于在分支预测电路中执行的方式确定各种仲裁选择的系统性能。在其他实施例中,可由默认选择执行仲裁。
在另一个实施例中,解码级106可以选择多于一个的微码同义词或硬件同义词,甚至可以选择对给定指令可用的所有微码同义词或硬件同义词,并将其发送给调度器116。在一个实施例中,假设流同义词S1 110是以浮点执行单元126为目标的浮点加法,并假设流同义词S2 112是以整数执行单元124为目标的浮点加法。通常,流同义词S1 110的执行要快于流同义词S2 112。然而,因为在某些情况下大大占据了浮点执行单元126,所以有时S2 112会首先完成执行。所以在此实施例中,调度器116可以调度流同义词S1 110和流同义词S2 112用于各自目标执行单元上的执行。因为仅有一个结果需要被退回并改变处理器状态,所以退役级130可以退回首先完成执行的流同义词S1 110或S2 112的任何一个。在支持预测的处理器中,退役级130随后可以断定执行较慢的流同义词。
在另一个实施例中,解码级106可以再次选择多于一个流同义词,或对给定指令可用的所有流同义词,并将其发送给调度器116。在一个实施例中,再次假设流同义词S1 110是以浮点执行单元126为目标的浮点加法而流同义词S2 112是以整数执行单元124为目标的浮点加法。在此情况下,调度器116可以再次调度流同义词S1 110和流同义词S2 112用于各自执行单元上的执行。对分别在浮点执行单元126和整数执行单元124上执行的两个流同义词S1 110和S2 112的利用可以通过执行单元内的产生的故障来提供关于软或硬差错的信息。所以在此实施例中,退役级130可以等待直到两个流同义词都完成执行并且比较结果。如果结果匹配,就无问题指示。但要是结果不匹配,就产生一个异常并进一步做出对硬件状态的调查。
若非大多数指令也是许多指令可以是具有微码同义词或硬件同义词的候选指令。诸如整数运算和浮点运算的数字计算指令是能在具有不同性能水平的不同类型执行单元上执行的固有候选指令。在不同类型的执行单元上甚至可以执行控制指令。例如,条件分支指令在分支执行单元上执行最为有效。然而也可安排由其他种类的执行单元执行分支指令。例如,可以在整数执行单元上执行分支指令。该整数执行单元会做出条件决定,并在“不采用”分支时剩余微码就不进行操作。这就允许了下一条指令将是程序流中顺序的下一条指令。然而在“采用”该分支时,就迫使该整数执行单元执行诸如用零除的不恰当执行。这就会导致异常处理程序的使用以为该“采用”分支提供下一个指令地址。
现在参见图2,根据本发明一个实施例示出了被解码成微码同义词的程序的程序执行图示。假设软件列表210示出了由解码级解码一系列指令的包括微码同义词的微码流的级数。随后假设微码流212表示第一指令。假设包括在微码ROM 252内的第二指令由两个微码同义词S1 260和S2 262表示。条件决定214可由解码级执行以选择是由对应于微码同义词S1 260的微码流216表示第二指令,或是代替地由对应于微码同义词S2 262的微码流218表示第二指令。作为一个实例,该条件决定214可以确定该处理器是否从关闭浮点执行单元255的降低功率模式中离开。如果是,随后就选择在浮点执行单元上执行浮点指令的微码同义词。如果不是,而且仍然关闭浮点执行单元255,那么就选择在整数执行单元254上执行浮点指令的微码同义词。在微码流216或218之后,就把第三条指令解码成微码流220。
在一个实施例中,可由解码级内逻辑来执行条件决定214。在另一个实施例中,条件决定214可以是还包括两个微码同义词S1 260和S2 262的微码ROM 252内的一部分束。在此实施例中,在微码ROM 252实现作为可写入非易失性存储器的情况下,可由微码ROM 252的更新来改变条件决定214。在此可将条件决定214载入解码级并由解码级中的电路执行。在另一个实施例中,可以用解码级内的附加电路代替微码ROM 252,以执行代替微码同义词S1 260和S2 262的硬件流同义词。
现参见图3,根据本发明另一个实施例示出了处理器中利用微码同义词的流水线300的各部分框图。图3中示出的许多电路级都与以上连同图1示出的等效级功能类似。在当前处理器设计中,将发现希望具有一个或多个双精度(或扩展精度)浮点执行单元322。然而考虑到功率和集成电路管芯大小,所以也希望包括一个或多个单精度浮点执行单元326。每种类型的数目受到期望在处理器上执行的软件种类中单精度比上双精度(或扩展精度)浮点指令的相对数目的统计分析的影响。但因为这是统计平均,所以经常出现在给定程序中执行更多或更少的每种指令的情况。
因此在一个实施例中,微码ROM 308包括用于双精度浮点指令的两个微码同义词。微码同义词S1 310是以在双精度浮点执行单元322上执行双精度浮点指令为目的。而微码同义词S2 312是以在单精度浮点执行单元326上执行双精度浮点指令为目的。解码级306可以基于系统性能的考虑来决定将两个微码同义词S1 310和S2 312中的哪一个发送给调度器级316。在一个实施例中,通过读取来自状态寄存器318的系统状态以支持所述决定。例如,当双精度浮点执行单元更为可用时,随后通常就选择微码同义词S1 310。但若是双精度浮点执行单元可用度较低而单精度浮点执行单元更为可用时,随后就选择微码同义词S2 312。
在另一个实施例中,微码同义词S1 310是以在单精度浮点执行单元326上执行单精度浮点指令为目的。而微码同义词S2 312是以在双精度浮点执行单元322上执行单精度浮点指令为目的。解码级306仍可基于系统性能的考虑来决定将两个微码同义词S1 310和S2 312中的哪一个发送给调度器级316。在一个实施例中,仍通过读取来自状态寄存器318的系统状态以支持所述决定。例如,当单精度浮点执行单元326更为可用时,随后通常就选择微码同义词S1 310。但若是单精度浮点执行单元326的可用度较低而双精度浮点执行单元322更为可用时,随后就选择微码同义词S2 312。
在其他实施例中,微码ROM 308内还可能具有第三微码同义词。例如,单精度浮点指令可能具有以在单精度浮点执行单元326、双精度浮点执行单元322或整数执行单元324上执行为目标的微码同义词。对于给定指令不存在对微码同义词数目的特定限制。在另一个实施例中,微码ROM 308可由解码级内执行硬件流同义词代替微码同义词S1 310和S2 312的附加电路代替。
现参考图4,根据本发明一个实施例示出了作为轨迹出现在轨迹高速缓存内的微码同义词的图示。在图1的实施例中,示出的缓冲级114用于在解码级106发出包括微码同义词的微码流之后暂时保持该微码流。每个解码指令仅在调度时使用一次并在随后被删除。
为了重新使用解码指令,就开发该轨迹高速缓存。轨迹高速缓存400可以存储解码微码流作为微操作一并链接的“轨迹”。轨迹高速缓存400可以包括若干条路(在此示出为列)和组(在此示出为行)。在路和组的每个交叉点处都可以定位一个微码流的微操作以及微码流内下一个微操作的路和组的位置指示器。在图4中示出了如轨迹410和420的轨迹示例。因为轨迹内的内部链接,所以能够很方便地为使用而检索微码流。在将原始指令解码成微码流和构造相应轨迹之后,只要调度相应的指令用于执行就可多次重新使用这些轨迹。
因为轨迹高速缓存内的轨迹就留在原地以便于重新使用,所以解码级就无法为该指令的每个重复发放不同的微码同义词。可以仅仅再使用当前示例为轨迹的任何微码同义词。由此,为了利用轨迹高速缓存内不同的微码同义词,解码级需要发放多个微码同义词给所述轨迹高速缓存并把它们都并入轨迹。在指令的特定实例下使用并对应于被选微码同义词的轨迹选择是需要在轨迹高速缓存的电路内而非在解码级内被执行。类似地,当轨迹高速缓存需要驱逐对应于给定指令的流时,轨迹高速缓存就需要能够驱逐其内所有微码同义词。
现参见图5,根据本发明一个实施例示出了利用流同义词的方法500的流程图。虽然在图5的流程图中讨论了微码流同义词,但是也可使用其他实施例内的硬件流同义词。指令输入决定框510,其中将确定是否存在用于该指令的微码流同义词。如果不存在,则方法500经由否路径离开决定框510并在解码框522中解码单微码流。但若是指令中存在两个或更多微码流同义词,则该方法就经由是路径离开决定框510并在框512中检测执行单元的状态。
随后在决定框516内就确定微码流同义词将其作为目标的一个或多个执行单元上是否存在空白状态。在一个实施例中,“空白状态”指示执行单元更为可用。如果不是,则该方法经由否路径离开决定框516并在框520中做出对选择微码流同义词的仲裁。然后,该微码流同义词被转送到解码框522。如果是,则该方法随后就经由是路径离开决定框516并在框518中选择微码流同义词。如果仅有一个执行单元更为可用,随后就选择以此执行单元为目标的微码流同义词。如果多于一个执行单元更为可用,则由诸如默认选择的其他规则来选择以多个可用执行单元之一为目标的微码流同义词。
一旦离开解码框522,随后本方法就在执行框526内在目标执行单元上的执行之前在调度框524内调度微码流同义词。随后在退役框528内退回执行的结果。
现参见图6,根据本发明另一个实施例示出了表现利用流同义词的方法600的流程图。虽然在图6的流程图中讨论了微码流同义词,但是也可使用其他实施例内的硬件流同义词。指令输入决定框610,其中将确定是否存在用于该指令的微码流同义词。如果不存在,则方法600经由否路径离开决定框610并在框620至626中按照惯例处理单微码流。但若是指令中存在两个或更多微码流同义词,则该方法就经由是路径离开决定框610。
在框612中,解码器为考虑中的指令发放两个或更多的微码流同义词。随后在框614中,就为当目标执行单元更为可用时的执行调度两个或更多微码流同义词。随后在框616内,这些执行单元就执行相应的微码流同义词。在框618中,退役级获取第一微码流同义词的结果以完成执行并退回那些结果。在其他实施例中,退役级允许在退役前完成所有的微码流同义词并比较结果。如果某些结果不匹配,则该退役级就在处理器中生成一个指示硬或软差错的异常。
现参考图7A和图7B,根据本发明两个实施例示出了包括支持流同义词执行的处理器的系统的示意图。图7A的系统大致示出了其中由系统总线互连处理器、存储器和输入/输出设备的系统,而图7B的系统大致示出了其中由多个点对点(P-P)接口(I/F)互连处理器、存储器和输入/输出设备的系统。
图7A的系统包括多个处理器,但为示意清楚仅示出了其中的两个处理器40和60。处理器40和60可以包括一级高速缓存42和62。图7A的系统具有经由总线接口44、64、12和8与系统总线6连接的若干功能。在一个实施例中,系统总线6可以是用于由公司生成的
Figure C200480033989D00142
系列微处理器的前侧总线(FSB)。在其他实施例中,也可使用其他的总线。在某些实施例中,可将存储器控制器34和总线桥路32一并称为芯片组。在某些实施例中,可以在与图7A中所示实施例不同的物理芯片之中分开芯片组的功能。
存储器控制器34允许处理器40和60对系统存储器10和基本输入/输出系统(BIOS)可擦除可编程只读存储器(EPROM)36进行读写。在某些实施例中,BIOS EPROM 36可使用闪存。存储器控制器34可以包括总线接口8,以允许存储器读写数据被传送到系统总线6上的总线代理并从其那里传送。存储器控制器34也可通过高性能图形接口39连接高性能图形电路38。在某些实施例中,高性能图形接口39可以是高级图形端口AGP接口。存储器控制器34可将从系统存储器10中读取的数据通过高性能图形接口39引入高性能图形电路38。
图7B的系统也包括多个处理器,但为示意清楚仅示出了其中的两个处理器70和80。处理器70和80各自包括连接至存储器2和4的本地存储器频道集线器(MCH)72和82。处理器70和80可以使用点对点接口电路78和88经由点对点接口50来进行数据交换。处理器70和80可以使用点对点接口电路76、94、86、98经由单独的点对点接口52和54与芯片组90交换数据。芯片组90也可经由高性能图形接口92与高性能图形电路38交换数据。
在图7A的系统中,总线桥路32允许系统总线6和总线16之间的数据交换,这些总线在某些实施例中可以是工业标准体系结构(ISA)总线或周边元件互连(PCI)总线。在图7B的系统中,芯片组90可通过总线接口96与总线16交换数据。在任一系统中的总线16上都有各种输入/输出I/O设备14,包括某些实施例中的低性能图形控制器、视频控制器和网络工作控制器。另一个总线桥路18在某些实施例中可用于允许总线16和总线20之间的数据交换。在某些实施例中,总线20可以是小型计算机系统接口(SCSI)总线,集成驱动电子(IDE)总线或通用串行总线(USB)总线。额外的I/O设备可以连接至总线20。还可以包括键盘和指针控制设备22(诸如鼠标)、音频I/O24、通信设备26(诸如调制解调器和网络接口)以及数据存储设备28。软件代码30可被存储在数据存储设备28上。在某些实施例中,数据存储设备28可以是固定磁盘、软盘驱动、光盘驱动、磁光盘驱动、磁带或诸如闪存的非易失性存储器。
在前述的说明中,可以参考其中的特殊示范实施例描述本发明。但显而易见的是可以对其做出各种修改和变化而不背离由所附权利要求所阐明的本发明的广义精神和范围。由此,应该认为说明书和附图是出于说明性而非限制性的目的。

Claims (40)

1.一种处理器,包括:
为第一指令执行第一流同义词和第二流同义词的解码器,所述解码器从所述第一流同义词和第二流同义词中选择至少一个流同义词用于解码所述第一指令;以及
调度所述第一流同义词和第二流同义词中所选择的至少一个流同义词以用于执行的调度器。
2.如权利要求1所述的处理器,其特征在于,所述第一流同义词将在第一执行单元上执行,而所述第二流同义词将在第二执行单元上执行。
3.如权利要求2所述的处理器,其特征在于,所述第一执行单元和所述第二执行单元的类型不同。
4.如权利要求2所述的处理器,其特征在于,所述第一执行单元和所述第二执行单元的精度不同。
5.如权利要求1所述的处理器,其特征在于,所述第一流同义词和所述第二流同义词将在公共执行单元上执行。
6.如权利要求1所述的处理器,其特征在于,所述解码器基于处理器状态做出所述选择。
7.如权利要求1所述的处理器,其特征在于,所述解码器基于规则做出所述选择。
8.如权利要求7所述的处理器,其特征在于,所述规则考虑所述处理器的功率配置。
9.如权利要求7所述的处理器,其特征在于,所述规则考虑执行单元的故障状态。
10.如权利要求1所述的处理器,其特征在于,还包括如果所述第一同义词和第二流同义词都被调度以用于执行,则退回所述第一流同义词或第二流同义词中首先完成执行的结果的退役模块。
11.如权利要求1所述的处理器,其特征在于,还包括如果所述第一同义词和第二流同义词都被调度以用于不同执行单元的执行,则比较所述第一流同义词和第二流同义词的执行结果并基于失配产生异常的退役模块。
12.一种方法,包括:
接收一个指令;
对所述指令产生多个流同义词;
确定多个执行单元中的每一个是否可用;以及
如果所述多个执行单元中的第一个可用,就从所述多个流同义词中选择对应于所述第一可用执行单元的第一流同义词,并且还调度所述第一流同义词用于在所述第一可用执行单元上的执行。
13.如权利要求12所述的方法,其特征在于,还包括如果所述多个执行单元都不可用,就仲裁以从多个流同义词中选择第二流同义词。
14.如权利要求12所述的方法,其特征在于,还包括如果所述多个执行单元中有多于一个可用,就基于系统性能规则从多个流同义词中选择对应于所述可用执行单元之一的所述第一流同义词。
15.如权利要求12所述的方法,其特征在于,所述确定包括读取处理器状态寄存器。
16.如权利要求15所述的方法,其特征在于,所述处理器状态寄存器指示所述执行单元中的第二个由于其内的故障而可用度更低。
17.如权利要求15所述的方法,其特征在于,所述处理器状态寄存器指示所述执行单元中的第二个由于处理器的降低功率模式而可用。
18.一种方法,包括:
把指令解码成第一流同义词和第二流同义词;
调度所述第一流同义词和所述第二流同义词用于分别在第一执行单元和第二执行单元上的执行;
在所述第一执行单元上执行所述第一流同义词;以及
在所述第二执行单元上执行所述第二流同义词。
19.如权利要求18所述的方法,其特征在于,还包括在所述第二流同义词完成执行之前,当所述第一流同义词完成执行时退回所述第一流同义词。
20.如权利要求18所述的方法,其特征在于,还包括当所述第一流同义词的第一执行结果与所述第二流同义词的第二执行结果不相同时产生一个异常。
21.一种系统,包括:
处理器,它包括为第一指令实现第一流同义词和第二流同义词的解码器,所述解码器从所述第一流同义词和第二流同义词中选择至少一个流同义词用于解码;以及用于调度所述第一流同义词和第二流同义词中所选择的至少一个流同义词以用于执行的调度器;
耦合所述处理器至输入/输出电路的接口;以及
耦合至所述接口的音频输入/输出电路。
22.如权利要求21所述的系统,其特征在于,所述第一流同义词将在第一执行单元上执行,而所述第二流同义词将在第二执行单元上执行。
23.如权利要求22所述的系统,其特征在于,所述第一执行单元和所述第二执行单元的类型不同。
24.如权利要求22所述的系统,其特征在于,所述第一执行单元和所述第二执行单元的精度不同。
25.如权利要求21所述的系统,其特征在于,所述第一流同义词和所述第二流同义词将在公共执行单元上执行。
26.如权利要求21所述的系统,其特征在于,所述解码器基于处理器状态做出所述选择。
27.如权利要求21所述的系统,其特征在于,所述解码器基于规则做出所述选择。
28.如权利要求27所述的系统,其特征在于,所述规则考虑所述处理器的功率配置。
29.如权利要求27所述的系统,其特征在于,所述规则考虑执行单元的故障状态。
30.如权利要求21所述的系统,其特征在于,还包括如果所述第一同义词和第二流同义词都被调度以用于执行,则退回所述第一流同义词或第二流同义词中首先完成执行的结果的退役模块。
31.如权利要求21所述的系统,其特征在于,还包括如果所述第一同义词和第二流同义词都被调度以用于不同执行单元的执行,比较所述第一流同义词和第二流同义词的执行结果并基于失配产生异常的退役模块。
32.一种处理器,包括:
用于接收一指令的装置;
用于对指令产生多个流同义词的装置;
用于确定多个执行单元中的每一个是否可用的装置;以及
如果所述用于确定的装置确定所述多个执行单元中的第一个可用,用于从所述多个流同义词中选择对应于所述第一可用执行单元的第一流同义词的装置,以及用于调度所述第一流同义词用于在所述第一可用执行单元上的执行的装置。
33.如权利要求32所述的处理器,其特征在于,还包括如果所述用于确定的装置确定所述多个执行单元都不可用,就使用用于仲裁以从多个流同义词中选择第二流同义词的装置。
34.如权利要求32所述的处理器,其特征在于,还包括如果所述用于确定的装置确定所述多个执行单元中多于一个可用,就使用基于系统性能规则从多个流同义词中选择对应于所述可用执行单元之一的所述第一流同义词的装置。
35.如权利要求32所述的处理器,其特征在于,所述用于确定的装置包括用于读取处理器状态寄存器的装置。
36.如权利要求35所述的处理器,其特征在于,所述处理器状态寄存器指示所述执行单元中的第二个由于其内的故障而可用度更低。
37.如权利要求35所述的处理器,其特征在于,所述处理器状态寄存器指示所述执行单元中的第二个由于处理器的降低功率模式而可用。
38.一种处理器,包括:
用于把指令解码成第一流同义词和第二流同义词的装置;
用于调度所述第一流同义词和所述第二流同义词用于分别在第一执行单元和第二执行单元上的执行的装置;
用于在所述第一执行单元上执行所述第一流同义词的装置;以及
用于在所述第二执行单元上执行所述第二流同义词的装置。
39.如权利要求38所述的处理器,其特征在于,还包括用于在所述第二流同义词完成执行之前,当所述第一流同义词完成执行时退回所述第一流同义词的结果的装置。
40.如权利要求38所述的处理器,其特征在于,还包括用于当所述第一流同义词的第一执行结果与所述第二流同义词的第二执行结果不相同时产生一个异常的装置。
CNB2004800339890A 2003-12-10 2004-11-19 执行流同义词的方法和装置 Expired - Fee Related CN100474238C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/733,014 US7197628B2 (en) 2003-12-10 2003-12-10 Method and apparatus for execution flow synonyms
US10/733,014 2003-12-10

Publications (2)

Publication Number Publication Date
CN1930548A CN1930548A (zh) 2007-03-14
CN100474238C true CN100474238C (zh) 2009-04-01

Family

ID=34652993

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800339890A Expired - Fee Related CN100474238C (zh) 2003-12-10 2004-11-19 执行流同义词的方法和装置

Country Status (6)

Country Link
US (1) US7197628B2 (zh)
JP (1) JP2007515718A (zh)
KR (1) KR100824488B1 (zh)
CN (1) CN100474238C (zh)
DE (1) DE112004002376T5 (zh)
WO (1) WO2005062166A2 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437512B2 (en) * 2004-02-26 2008-10-14 Marvell International Ltd. Low power semi-trace instruction/trace hybrid cache with logic for indexing the trace cache under certain conditions
US8103669B2 (en) * 2008-05-23 2012-01-24 Xerox Corporation System and method for semi-automatic creation and maintenance of query expansion rules
WO2013095477A1 (en) 2011-12-22 2013-06-27 Intel Corporation Apparatus and method for detecting and recovering from data fetch errors

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892934A (en) * 1996-04-02 1999-04-06 Advanced Micro Devices, Inc. Microprocessor configured to detect a branch to a DSP routine and to direct a DSP to execute said routine
US6438700B1 (en) * 1999-05-18 2002-08-20 Koninklijke Philips Electronics N.V. System and method to reduce power consumption in advanced RISC machine (ARM) based systems
US6654875B1 (en) * 2000-05-17 2003-11-25 Unisys Corporation Dual microcode RAM address mode instruction execution using operation code RAM storing control words with alternate address indicator
JP3459821B2 (ja) 2001-05-08 2003-10-27 松下電器産業株式会社 マイクロプロセッサ
DE10136335B4 (de) * 2001-07-26 2007-03-22 Infineon Technologies Ag Prozessor mit mehreren Rechenwerken
US7617490B2 (en) * 2003-09-10 2009-11-10 Intel Corporation Methods and apparatus for dynamic best fit compilation of mixed mode instructions

Also Published As

Publication number Publication date
WO2005062166A3 (en) 2006-05-18
US20050132169A1 (en) 2005-06-16
US7197628B2 (en) 2007-03-27
CN1930548A (zh) 2007-03-14
JP2007515718A (ja) 2007-06-14
KR20060117967A (ko) 2006-11-17
WO2005062166A2 (en) 2005-07-07
KR100824488B1 (ko) 2008-04-22
DE112004002376T5 (de) 2006-11-16

Similar Documents

Publication Publication Date Title
CN1133924C (zh) 用于改进的判定预测的方法与装置
CN102792265B (zh) 基于机器状态的指令破解
CN100361072C (zh) 流水线处理一系列处理指令的方法和设备
JPH04232532A (ja) ディジタル・コンピュータ・システム
CN103513964A (zh) 循环缓冲器打包
US7143271B2 (en) Automatic register backup/restore system and method
CN104049944A (zh) 将有条件短前向分支转换成计算等效的所断言指令
US20070050602A1 (en) Partially decoded register renamer
US6643762B1 (en) Processing system and method utilizing a scoreboard to detect data hazards between instructions of computer programs
US6128687A (en) Fast fault detection circuitry for a microprocessor
CN102890624B (zh) 用于管理无序毫码控制操作的方法和系统
US6438681B1 (en) Detection of data hazards between instructions by decoding register indentifiers in each stage of processing system pipeline and comparing asserted bits in the decoded register indentifiers
US5265258A (en) Partial-sized priority encoder circuit having look-ahead capability
US20050138290A1 (en) System and method for instruction rescheduling
US6490674B1 (en) System and method for coalescing data utilized to detect data hazards
CN100474238C (zh) 执行流同义词的方法和装置
US20190220417A1 (en) Context Switch Optimization
CA2060137C (en) Circuit for executing conditional branch instructions in pipeline process
US6604192B1 (en) System and method for utilizing instruction attributes to detect data hazards
US10423421B2 (en) Opportunistic utilization of redundant ALU
US20060015706A1 (en) TLB correlated branch predictor and method for use thereof
WO2022018553A1 (en) Fusion of microprocessor store instructions
US7783692B1 (en) Fast flag generation
US20200233772A1 (en) Device, system and method for identifying a source of latency in pipeline circuitry
US7124277B2 (en) Method and apparatus for a trace cache trace-end predictor

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090401

Termination date: 20121119