CN1742257A - 基于识别寻址模式的双目的寄存器的数据预测机制 - Google Patents

基于识别寻址模式的双目的寄存器的数据预测机制 Download PDF

Info

Publication number
CN1742257A
CN1742257A CNA2004800025925A CN200480002592A CN1742257A CN 1742257 A CN1742257 A CN 1742257A CN A2004800025925 A CNA2004800025925 A CN A2004800025925A CN 200480002592 A CN200480002592 A CN 200480002592A CN 1742257 A CN1742257 A CN 1742257A
Authority
CN
China
Prior art keywords
addressing mode
register
entry
stack
value
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
Application number
CNA2004800025925A
Other languages
English (en)
Other versions
CN1742257B (zh
Inventor
J·K·皮克特
B·T·桑德尔
K·M·列帕克
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.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN1742257A publication Critical patent/CN1742257A/zh
Application granted granted Critical
Publication of CN1742257B publication Critical patent/CN1742257B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative 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, 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers

Abstract

一个系统可包括内存文件(136)和执行内核(124)。内存文件可包括配置用来储存寻址模式(406)和标记(408)的登录项(420)。若内存操作的寻址模式匹配储存于登录项(420)中的寻址模式(406),则内存文件(136)可配置成将由标记所识别的数据值链接到内存操作的预测结果。内存操作的寻址模式包括逻辑寄存器的识别符,和为了判定内存操作的寻址模式是否匹配储存于登录项中(420)的寻址模式(406),而可将内存文件(136)配置成预测指定的逻辑寄存器是否为通用寄存器,或为堆栈帧指针寄存器。当执行依附内存操作的另一个操作时,可将执行内核(124)配置成存取预测结果。

Description

基于识别寻址模式的双目的寄存器的数据预测机制
技术领域
本发明涉及微处理器的领域,更确切地说,涉及在微处理器中施行数据预测执行。
背景技术
超标量微处理器通过同时执行多重指令和通过使用最短的与其设计相符合的可能的时钟周期,而达到高性能。然而,各指令之间的数据和控制流依附性(dependency)会限制在任何给定的时间可以发出多少个指令。结果,一些微处理器为了获得额外的性能增益,而支持预测执行功能。
有一种类型的预测是控制流预测。控制流预测预测程序控制(program control)将进行的方向。例如,分支预测可用来预测是否将采用分支。可采用多种类型的分支预测,从方法上来区分,范围从每次只作相同预测的分支预测,至那些为了进行基于历史的预测而在程序中保留了复杂的先前分支经历的分支预测。分支预测可通过硬件优化、编译程序优化或两者的结合来促进分支预测。根据由分支预测机制所提供的预测,而可在预测的情况下取得并执行指令。当最终评估确定了分支指令后,即可验证该分支预测。若预测为不正确,则要取消任何根据此不正确的预测所预测执行的指令。
已提出的另外一种类型的预测是数据预测。例如,预测各数据项之值的值预测可包含观察数据中的模式(pattern),并根据这些模式而作预测(例如,可通过观察索引计数变量的先前值如何增加或减少来预测该变量的值)。地址预测包含预测数据的地址。另外一种类型的数据预测称之为内存系统乐观主义(optimism)。在多处理器系统中,当处理器在一致性检验(coherency checking)完成前,使用从该处理器的局部高速缓存来的数据而以预测方式执行指令时,即会发生内存系统乐观主义。同样地,另外一种类型的数据预测可使加载在储存前在预测的情况下执行,该储存在执行该加载时具有未计算的地址,即使该储存可将数据储存在该加载存取的相同地址。在所有的这些类型的数据预测中,最后将评估基础条件,以验证或还原该预测。若该预测最后为不正确,则可再执行使用该预测数据所执行的指令(例如,使用更新的和/或非预测的数据)。
因为预测允许执行继续进行,而不必等待依附性检验的完成,若从正确预测所获得的性能超过了由不正确预测所损失的性能,则可获得显著的性能增加。因此,希望能够在微处理器中执行数据预测,并对于错误的预测提供有效的恢复机制。
许多的处理器要求在操作中可取用主存储器的称之为“堆栈”的一部分。早期的x86微处理器当处理异常和中断时,使用堆栈来储存状态信息。可使用堆栈段和堆栈指针(SS:SP或SS:ESP)寄存器对来存取在主存储器的堆栈部分内的内存地址。16位SS(堆栈段)寄存器定义包含堆栈的主存储器堆栈部份之中的基地址(亦即,堆栈的“底部”地址)。16位SP(堆栈指针)寄存器可提供目前堆栈“顶端”距离基地址的偏移。最新的x86微处理器具有32位ESP(扩展堆栈指针)寄存器。
堆栈使用为后入先出(LIFO)储存机制。堆栈顶端为包含最近储存于堆栈内的数据的储存位置。数据被“推”至堆栈(亦即,储存于堆栈顶端)并从堆栈“取出(popped)”(亦即,从堆栈顶端移去)。当将数据推至堆栈上时,通常ESP寄存器减值。换言之,x86堆栈一般从基地址以向下方向生长。当自堆栈取出数据时,该移动的数据是最近推至堆栈的数据。
x86架构包括数量相当少的寄存器,这些寄存器可用来储存在软件程序执行期间所处理的数据。结果,在软件程序执行期间所使用的数据时常储存在堆栈内。储存在堆栈内的数据的可存取性因此在获得高微处理性能方面特别重要。另一方面,堆栈是主存储器的一部分,而对主存储器的存取相当慢。因此希望加速对主存储器的堆栈部分的存取。
发明内容
可通过匹配包含于不同操作中的寻址模式而实现将加载操作的预测结果链接至寄存器值的方法和系统的各种实施例。在一个实施例中,系统可包括内存文件(memory file)和执行内核。内存文件可包括配置用来储存寻址模式和标记的登录项。若内存操作(亦即,加载和/或储存在内存中一地址的值的操作)的寻址模式匹配储存于登录项中的寻址模式,则内存文件可配置成将由标记所识别的数据值链接到内存操作的预测结果。内存操作的寻址模式包括逻辑寄存器的识别符,和为了判定内存操作的寻址模式是否匹配储存于登录项中的寻址模式,而可将内存文件配置成预测逻辑寄存器是否正被指定为通用寄存器或者堆栈帧指针寄存器。当执行依赖内存操作的另一个操作时,可配置执行内核以存取预测结果。
在一些实施例中,若内存文件预测包含于内存操作的寻址模式中的逻辑寄存器正被用作堆栈帧指针寄存器,则内存文件可判定内存操作的寻址模式并不匹配储存于登录项中的寻址模式。反之,若内存文件预测逻辑寄存器正被用作通用寄存器,则假使内存操作的寻址模式等同于储存在登录项中的寻址模式,则内存文件可判定加载操作的寻址模式匹配储存于登录项中的寻址模式。若内存文件预测包含于内存操作的寻址模式中的逻辑寄存器正被用作堆栈帧指针寄存器,则内存文件也可配置成不分配新的登录项来储存内存操作的寻址模式。然而,若内存文件预测逻辑寄存器正用来作为通用寄存器,假使内存操作的寻址模式不等同于储存在登录项中的寻址模式,则内存文件可配置成分配新的登录项来储存内存操作的寻址模式。
在许多实施例中,内存文件可包括几个登录项。可配置内存文件,若该内存文件预测逻辑寄存器正被用作堆栈文件指针寄存器,则判定内存操作的寻址模式并不匹配储存于任何登录项中的寻址模式。
在一个实施例中,内存文件可配置成当检测到调用或登录项指令时,则预测逻辑寄存器正被用作堆栈帧指针。内存文件也可配置成当检测到返回或离开指令时,则预测逻辑寄存器正被用作通用寄存器。
在另外的实施例中,可配置内存文件以预测逻辑寄存器如何被用来追踪目前的调用深度。内存文件可配置成当检测到调用指令,则增加目前的调用深度,和当检测到返回指令,则减少目前的调用深度。除了起始值的其它所有值可指示由于遭遇到一个或多个子程序调用,目前的子程序调用深度。登录项可储存等于当分配登录项后的目前调用深度值的调用深度值。若当处理内存操作时的目前调用深度的值不等于储存于登录项中的调用深度值,则内存文件可配置成判定内存操作的寻址模式并不匹配储存于登录项中的寻址模式。若当处理内存操作时的目前调用深度的值等于储存在登录项中的调用深度值,而若内存操作的寻址模式等同于储存在登录项中的寻址模式,则内存文件可配置成判定内存操作的寻址模式匹配储存于登录项中的寻址模式。若当处理内存操作时的目前调用深度的值不等于储存在登录项中的调用深度值,可配置内存文件以分配新的登录项来储存内存操作的寻址模式和储存当在新的登录项中处理内存操作时的目前调用深度的值。若储存于登录项中的寻址模式识别逻辑寄存器和若当处理操作时的目前调用深度的值等于储存在登录项中的调用深度值,则内存文件可配置成使该登录项无效,以响应分派的操作,当执行该分派的操作时修改逻辑寄存器的值。然而,响应分派的操作,若当处理操作时的目前调用深度的值不等于储存在登录项中的调用深度值,则内存文件可不使该登录项无效。
在一些实施例中,内存文件可追踪与堆栈有关的寻址模式和与堆栈无关的寻址模式。例如,在一个实施例中,内存文件可包括储存与堆栈有关的寻址模式的登录项。内存文件可配置成当判定操作的寻址模式是否匹配储存于登录项中的与堆栈有关的寻址模式时,使用一个机制来补偿堆栈指针的调整。例如,内存文件可配置成通过修改储存于登录项中的位移而补偿对堆栈指针的调整以响应分派的操作,当执行该分派的操作时修改堆栈指针的值。或可取而代之,可先通过修改寻址模式调整值和将该寻址模式调整值应用到新操作的寻址模式,之后比较新操作的寻址模式与储存于登录项中的与堆栈有关的寻址模式,而将内存文件配置成补偿堆栈指针的调整。
在一些实施例中,系统可包括堆栈文件和内存文件。若操作的寻址模式并不匹配储存于堆栈文件登录项其中之一的寻址模式,和若操作的寻址模式包括逻辑寄存器的识别符,则堆栈文件可配置成分配一个登录项以储存该操作的寻址模式。内存文件也可响应相同的操作而分配登录项。在另外的实施例中,内存文件可根据预测逻辑寄存器是被指定为通用寄存器还是堆栈帧指针寄存器,而选择性地分配登录项给操作。内存文件可配置成永不将内存文件中登录项分配至任何寻址模式包括堆栈指针寄存器的识别符的操作,而堆栈文件总是分配登录项至这些操作。在一个实施例中,堆栈文件可保持堆栈指针寻址模式调整值和堆栈帧指针寻址指针调整值。内存文件可配置成根据堆栈帧指针寻址指针调整值是否有效而预测逻辑寄存器是否指定为通用寄存器或堆栈帧指针寄存器。
一个方法的实施例可包含:预测在内存操作的寻址模式中识别的逻辑寄存器是否正被用作通用寄存器或堆栈帧指针寄存器;根据该预测,判定内存操作的寻址模式是否匹配早先操作的寻址模式;若该内存操作的寻址模式匹配早先操作的寻址模式,则将由早先操作的操作数的标记所识别的数据值链接至内存操作的预测结果;以及执行具有根据内存操作的结果的操作数来源的操作,该内存操作的结果通过访问由该标记所识别的数据值而得。
附图说明
通过参考下面的详细说明,并结合下列附图,可以更好地了解本发明,其中:
图1A显示根据一个实施例的微处理器的方框图。
图1B显示根据另一个实施例的微处理器的方框图。
图2A显示根据一个实施例的分派单元的方框图。
图2B显示可使用于一个实施例的示例性地址模式。
图2C至图2E显示示例性程序指令和示例性堆栈,和可在一个实施例中产生的堆栈文件内容。
图3为显示链接加载操作的预测结果至由特定标记所识别数据值的一个方法实施例的流程图。
图4A显示根据一个实施例的分派单元。
图4B显示可使用于一些实施例的示例性地址模式。
图5显示根据一个实施例的调度装置(scheduler)的方框图。
图6为响应数据预测为不正确的指示而发出操作和再发出操作的方法实施例的流程图。
图7为根据一些实施例的分派单元的方框图。
图8为根据另一些实施例的分派单元的方框图。
图9为显示发出具有预测数据值的操作和从错误预测恢复的另一方法的流程图。
图10显示根据一个实施例的追踪缓存的方框图。
图11显示根据一个实施例的计算机系统。
图12显示根据另一个实施例的计算机系统。
本发明易于作出各种修饰和替代形式,在此将用参考附图举例说明的方式来详细说明本发明的特定实施例。然而,应当了解的是,此处特定实施例的说明并非要将本发明限制在所揭示的特定形式,反之,本发明将涵盖所有落于所附权利要求内所界定的本发明的精神和范围内的修饰、等效和替代。应注意的是,标题的目的是仅用来组织本说明书,而不是用来限制或解释说明的内容或权利要求范围。另外,要注意的是,词语“可”以容许的意义(亦即,具有潜在性、能够),而不是强制的意义(亦即必须)而使用于本申请中。“包括”一词意味着“包括,但不局限于”。“连接”词意味着“直接或者不直接连接”,而且“联接(coupled)”一词意味着“直接或着不直接地联接”。
具体实施方式
图1为微处理器100的一个实施例的方框图。微处理器100配置用来执行储存于系统内存200中的指令。许多这些指令操作储存于系统内存200中的数据。值得注意的是,系统内存200可实际分配遍及整个计算机系统,并可由一个或多个微处理器100所存取。
微处理器100可包括指令高速缓存106和数据高速缓存128。微处理器100可包括联接到指令高速缓存106的预取单元108。分派单元104可配置成用来接收从指令高速缓存106来的指令,并向一个或多个调度装置118分派操作。一个或多个调度装置118可被联接以接收从分派单元104来的分派操作,并发出操作至一个或多个执行内核124。执行内核124可包括加载/储存单元126,该加载/储存单元126配置以执行对数据高速缓存128的存取。由执行内核124所产生的结果可输出至结果总线130。可使用这些结果作为操作数值用于后续发出的指令和/或储存于寄存器堆116。退除队列(retire queue)102可联接至调度装置118和分派单元104。可配置退除队列以决定何时可退除各发出的操作。在一个实施例中,微处理器100可设计成与x86架构兼容。值得注意的是微处理器100也可包括其它的组件,例如,微处理器100可包括分支预测单元(图中未显示)。
指令高速缓存106在各指令由分派单元104所接收之前可暂时地储存这些指令。可经由预取单元108自系统内存200预先取得指令码以提供给指令高速缓存106。指令高速缓存106可在各种配置情况下(例如,集合关联(set-associative)、完全关联(fully-associative)、或直接映射(direct-mapped))执行。
预取单元108可从系统内存200预先取得指令码用来储存在指令高速缓存106中。在一个实施例中,预取单元108可配置以将从系统内存200来的代码发入指令高速缓存106中。预取单元108可使用各种指定码预先取得技术和算法。
分派单元104可输出可通过执行内核124执行的包含位编码操作和操作数地址信息、立即数、和/或替换数据的信号。在一些实施例中,分派单元104可包括译码电路(图中未显示),用来将某些指令译码成在执行内核124内可执行的操作。简单的指令可对应于单一操作。在一些实施例中,更复杂的指令可对应于多重操作。若操作包含寄存器的更新,则可保留在寄存器堆116内的寄存器位置(例如,在该操作的译码后)以储存预测的寄存器状态(在一个替代实施例中,可使用重新排序缓冲器以储存各寄存器的一个或多个预测寄存器状态)。寄存器图134可将来源和目的操作数的逻辑寄存器名称转译成物理寄存器名称,以便于寄存器重命名。寄存器图134可追踪在寄存器堆116内的哪个寄存器现在已分配和尚未分配。
图1A的微处理器100支持无序执行(out of order execution)。退除队列102可保持追踪用于寄存器读取和写入操作的原始程序序列,允许预测指令的执行和分支错误预测的恢复,并促使精确的异常(exception)。在一些实施例中,退除队列102也可通过提供用于预测寄存器状态的数据值的储存而支持寄存器重命名。在许多实施例中,退除队列102可类似于重新排序缓冲器而操作。然而,不像一般的重新排序缓冲器,退除队列102可不提供任何的数据值的储存。在一些实施例中,可用先进先出方式配置退除队列102,其中当操作经验证后,则将他们移到缓冲器的“底部”,因此让出队列的“顶部”空间供新进入操作使用。当退除操作时,退除队列102可将寄存器堆116中不再需要用来储存预测寄存器状态的寄存器解除分配,并提供信号至寄存器图134以指示哪些寄存器当前闲置着。通过维持在寄存器堆116中(或在一个替代实施例中,在重新排序缓冲器内)的预测寄存器状态,直到产生这些状态的操作经过验证后,若分支预测为不正确的话,则沿着错误预测通路的预测执行操作的结果可以在寄存器堆116中变成无效。
若特定操作所需的操作数为寄存器位置,则寄存器地址信息可路由到寄存器图134(或至重新排序缓冲器)。举例而言,在x86架构中,有8个32位逻辑寄存器(例如,EAX、EBX、ECX、EDX、EBP、ESI、EDI和ESP)。物理寄存器堆116(或重新排序缓冲器)包括改变这些逻辑寄存器内容的结果的储存,允许无序执行。寄存器堆116中的物理寄存器可分配来储存决定修正其中一个逻辑寄存器的内容的每个操作的结果。因此,在执行特定程序期间的各不同点上,寄存器堆116(或者,在一个替代实施例中,重新排序缓冲器)可以有一个或多个寄存器包含了某一给定逻辑寄存器的预测执行内容。
寄存器图134可将一个物理寄存器指定给特定的逻辑寄存器,该逻辑寄存器特定用于操作的目的操作数。分派单元104可判定寄存器堆116具有一个或多个指定给逻辑寄存器的先前分配的物理寄存器,该逻辑寄存器特定为在某一操作中的来源操作数。寄存器图134可提供用于最近指定给该逻辑寄存器的物理寄存器的标记。可使用此标记来存取在寄存器堆116中操作数的数据值,或经由在结果总线130上传送的结果来接收数据值。若操作数对应于内存地址,则操作数值可经由加载/储存单元126而提供在结果总线上(用于结果传送和/或储存在寄存器堆116中)。当通过其中一个调度装置118发出操作时,操作数数据值可被提供给执行内核124。值得注意的是在一个替代实施例中,当分派操作指令时,操作数值可被提供给对应的调度装置118(而非当发出操作指令时提供给对应的执行内核124)。
在分派单元104的输出提供的位编码操作和立即数可路由至一个或多个调度装置118。值得注意的是此处所使用的调度装置为检测何时操作已准备好执行和发出准备操作指令至一个或多个执行单元的装置。举例而言,保留站(reservation station)为一个调度装置。各调度装置118可以保持住几个等待发出至执行内核124的尚未处理操作的操作信息(例如,位编码执行位和操作数值、操作数标记、和/或立即数)。在一些实施例中,各调度装置118可不提供操作数值的储存。取而代之,各调度装置可监视可从寄存器堆116中获得的发出操作和结果,以便决定操作数值何时能供执行内核124读取(从寄存器堆116或结果总线130)。在一些实施例中,各调度装置118可关联于专用的执行内核124。在其它的实施例中,单一调度装置118可向多于一个的执行内核124发出操作。
调度装置118可提供将由执行内核124所执行的操作信息的暂时储存。如前所述,各调度装置118可储存尚未处理操作的操作信息。此外,各调度装置可储存用于已经执行但是也许仍将再发出的操作的操作信息。当可得到用于执行的任何所需操作数的值时,则将操作发出至执行内核124。因此,执行操作时的次序可与原始程序指令序列的次序不同。包含数据预测的操作可保持在调度装置118中,直到他们变成非预测为止,这样若数据预测不正确时可再将其发出。
在一个实施例中,各执行内核124可包括配置用来执行加法和减法的整数算术运算,以及移位、旋转、逻辑运算、和分支操作的组件。还可包含有浮点单元以容许浮点操作。可配置一个或多个执行内核124以执行将由加载/储存单元126所执行的用于加载和储存内存操作的地址产生。
执行内核124也可将关于条件分支指令的执行的信息提供给分支预测单元,而使得若分支为错误预测时,分支预测单元可清洗(flush)紧随已进入指令处理管线的错误预测分支的指令,并将预取单元108改向。然后该改向的预取单元108可开始从指令高速缓存106或系统内存200中取得更正指令组。在这些情况中,可舍弃掉在错误预测分支指令后在原始程序序列中所发生的指令结果,包括那些预测执行和暂时储存于寄存器堆116中的指令结果。若寄存器值被更新,则可将由执行内核124内组件所产生的结果在结果总线130上输出到寄存器堆116。若内存位置的内容被改变,则在执行内核124内产生的结果可提供给加载/储存单元126。
加载/储存单元126提供执行内核124和数据高速缓存128之间的接口。在一个实施例中,加载/储存单元126可配置具有加载/储存缓冲器含数个尚未处理的加载或储存的数据和地址信息的储存位置。加载/储存单元126也可执行加载指令相对于尚未处理的储存指令的依附性检验,以确保维持数据一致性。
数据高速缓存128为高速缓存,其提供用来暂时地储存加载/储存单元126和系统内存200之间传送的数据。如上述的指令高速缓存106一样,数据高速缓存128可以各种特定的内存配置实现,包括集合相关的内存配置。此外,在某些实施例中,数据高速缓存128和指令高速缓存106可实现于统一的高速缓存中。
堆栈区域
由微处理器100所支持的一个逻辑寄存器(例如堆栈段寄存器,诸如在x86应用中的SS)可识别在内存200中堆栈区域的基地址。另外的逻辑寄存器(例如,ESP)可用作堆栈指针寄存器,以识别堆栈区域目前的顶端。可通过结合堆栈区域的基地址与在堆栈指针寄存器中指定的堆栈内的偏移而形成堆栈的目前顶端的地址。可使用此地址以将值推入堆栈,并从堆栈取出值。
某些指令可使得一个或多个寄存器的内容被“推”至堆栈。例如,在子程序调用期间,一个或多个寄存器的现有内容可被推至内存的堆栈区域。推入(push)指令修正堆栈指针,然后将数据值储存至当前由该修正的堆栈指针所指向的堆栈的顶端。举例而言,在x86的实施例中,推入指令可减少堆栈指针寄存器值,该减少的值对应于将推到该堆栈的操作数大小的量,然后使用该修正值来将操作数值储存到堆栈的顶端。同样地,取出(pop)指令将从堆栈的顶端来的操作数加载至寄存器或内存位置,然后修正堆栈指针,使得该堆栈指针指向堆栈的新的顶端,以有效地从该堆栈移去取出的操作数。当子程序完成时,子程序一开始储存的值可从堆栈取出,并恢复到寄存器堆116内的适当地址。
子程序可以是程序或中断处理或异常处理程序。当执行子程序调用指令时,一些寄存器值(例如,代码段寄存器值和/或指令指针寄存器值指示返回地址)可以自动地储存。可储存其它的寄存器值以响应在调用子程序内或在子程序的开始处包括特定的储存指令(例如,在PUSHEAX或MOV[EBP-2],EAX,则储存在EAX中的值)。
返回指令可使得某些寄存器值自动地从堆栈取出。当在子程序中包括取出或储存指令时,可从该堆栈取出其它寄存器值。在一些实施例中,微处理器可支持这样的指令,当其执行时,推入所有的逻辑寄存器值至堆栈,和/或从该堆栈取出所有的逻辑寄存器值。值得注意的是,中断和异常也可引起寄存器值推入堆栈。
各子程序可以在堆栈区域内有关联的堆栈帧,其中传递至该子程序的各局部变量和参数被储存。可使用基址指针寄存器(例如,EBP)作为堆栈帧指针,该堆栈帧指针指向当前子程序的堆栈帧的基地址。在子程序内的指令可使用堆栈帧指针用于寻址模式中,该寻址模式用来存取传递至该子程序的参数和存取用于子程序内的局部数值。在一个实施例中,可使用于堆栈帧指针的正偏移以存取参数,而同时可使用堆栈帧指针的负偏移以存取局部变量。
因此,可使用堆栈指针寄存器或堆栈帧指针寄存器任何其中之一来指定堆栈相关寻址模式。可使用堆栈指针来寻址由调用程序推至堆栈的参数值。可使用堆栈帧指针来寻址存取于调用子程序内的参数值。当调用子程序时,可将堆栈帧指针寄存器(用于调用程序)的当前值储存到堆栈的顶端。然后,子程序可将堆栈指针寄存器的当前值复制到堆栈帧指针寄存器中,建立指向子程序的堆栈帧的帧指针。当子程序完成时,可将调用程序的帧指针值再次储存到帧指针寄存器。
根据堆栈相关寻址模式的数据预测
可配置微处理器100以使用预测的数据值而实行数据预测执行,该数据值使用各种操作的堆栈相关寻址模式(亦即,存取内存的堆栈区的寻址模式)而预测。举例而言,当操作分派至调度装置118时,可通过比较操作的操作数的寻址模式与现存于堆栈文件中的寻址模式,而判别用于一个或多个操作的操作数的预测值。在一些实施例中,调度装置118可使用预测值而发出执行的操作。若稍后判定预测值为不正确,则可使用非预测值而再发出操作。
图2A显示分派单元104的一个实施例,该分派单元104可根据操作数的寻址模式而配置以判别预测的操作数值。在此实施例中,分派单元104包括寄存器图134和堆栈文件132。如上所述,寄存器图134可配置用来提供寄存器重命名。寄存器图134可接受各指令(或操作)的各来源和目的操作数的逻辑寄存器名称,并输出最近指定到这些逻辑寄存器的物理寄存器的物理寄存器名称。寄存器图134可指定物理寄存器以储存操作的结果。堆栈文件132包括堆栈文件控制器202和堆栈文件储存器204。在一些实施例中可从数个寄存器、锁存器、计数器、加法器/减法器、触发器、或其它的时钟控制的储存器而执行堆栈文件储存器204。在替代实施例中,堆栈文件储存器204可包括一个或多个RAM(随机存取存储器)单元。
堆栈文件储存器204包括一个或多个登录项220。各登录项220可包括寻址模式206和与登录项之寻址模式206相关联的标记208。各标记可通过当数据值产生时指示该数据值将储存于何处(例如,在重新排序缓冲器内或是在寄存器堆116)而识别该数据值。举例而言,如例示的实施例中所示,各标记可识别分配用来储存该数据值的物理寄存器,由寄存器图134所指示。各寻址模式可包括用来识别特定的堆栈位置的所有的或一些的信息。举例而言,很快地参阅图2B,该图显示了一个示例性寻址模式206。在此实施例中,寻址模式206包括逻辑寄存器名称210和位移量214。逻辑寄存器名称210是用来存取堆栈中数据的逻辑寄存器的名称(例如,堆栈指针寄存器或堆栈帧指针寄存器)。位移量可指示加至当前储存于逻辑寄存器中的地址的值,或从该逻辑寄存器中的地址减去的值。一些寻址模式206也可包括其它的信息,比如段逻辑寄存器的名称或索引寄存器的名称。
当指令或操作的寻址模式指定内存的堆栈区内的位置时,可分配在堆栈文件储存器204内的登录项220。举例而言,当一储存操作将值(例如,从物理寄存器来的值)储存至堆栈区内的内存位置时,则可分配一登录项。推入指令为包含储存操作的指令的例子。将内存位置指定为目的地的移动指令是包含储存操作的指令的另一个例子。堆栈文件控制器202可检测将数据值储存于内存中堆栈区域内的内存位置的储存操作(例如,根据操作的操作码和/或寻址模式)。若检测到的储存操作的寻址模式尚未包括在堆栈文件登录项220中,则堆栈文件控制器202可分配新的登录项220以储存该寻址模式。堆栈文件控制器也可储存识别将由储存操作所储存的数据值的标记。举例而言,若堆栈文件控制器202检测指令PUSH EAX,则堆栈文件控制器可将用来识别当前指定给逻辑寄存器EAX的物理寄存器的标记储存到响应PUSH指令而分配的堆栈文件登录项220中。堆栈文件控制器可储存ESP+0(其中+0是以字节为单位的位移量)作为用于PUSH指令的寻址模式。若在堆栈文件储存器204内没有闲置的登录项用以分配,则堆栈文件控制器202可使用譬如LRU(最近最少使用)、FIFO(先进先出)、随机位移等的位移方案来选择登录项加以覆盖(overwrite)。
若操作的寻址模式已经包括于堆栈文件登录项中,则堆栈文件控制器202可用在该操作中所指出的标记来覆盖储存于匹配登录项中的标记。举例而言,若储存操作的寻址模式在堆栈文件储存器204中命中,则堆栈文件控制器202可用储存操作的来源操作数的标记覆盖储存于匹配登录项220中的标记。
堆栈文件控制器202可比较在未分派操作中指明的寻址模式与储存于堆栈文件储存器204中登录项内的寻址模式。若操作的寻址模式匹配储存于堆栈文件储存器204中登录项中的寻址模式(例如,操作的堆栈相关位移在堆栈文件储存器204中命中),则堆栈文件控制器202可使用或修正(如上所述)包含匹配寻址模式的登录项。若正在处理把从堆栈来的值加载到寄存器中的操作,则堆栈文件控制器202可输出储存于堆栈文件储存器204内匹配登录项220中的标记(例如,物理寄存器名称)。此处把从堆栈来的值加载到寄存器中的操作称之为加载操作。取出指令是包含加载操作指令的例子。值得注意的是,在执行x86指令组的实施例中,MOV指令的使用可实行储存操作和加载操作。
因为堆栈指针值常被修正以响应数据储存到堆栈或从堆栈移出的操作(例如,推入和取出指令一般会更新堆栈指针值),所以可配置堆栈文件控制器202通过更新登录项220以反映修正或通过修正输入到堆栈文件132的寻址模式,和比较修正的寻址模式与在各堆栈文件登录项220中的寻址模式,而补偿对堆栈文件值的修正。
在一个实施例中,每次改变堆栈指针值时,堆栈文件控制器202可通过修正储存在堆栈文件登录项220中的相对位移,而补偿对堆栈指针值的修正。举例而言,堆栈文件132可包括减法器和/或加法器(或者,可用上升和/或下降计数器来取代),其配置成更新各堆栈文件登录项220以响应推入和取出指令。修正量可根据操作数的大小而定。例如,若推入指令推4字节的操作数到堆栈中,则堆栈文件控制器202可将各登录项中的位移加4,该登录项在其寻址模式206中指明堆栈指针。同样地,若取出指令从堆栈移走2字节的操作数,则堆栈文件控制器202可从包括在各寻址模式206中的相对位移减去2,该寻址模式206指明该堆栈指针。以此方式,各登录项之寻址模式关于堆栈指针的当前位置正确。
在其它实施例中,堆栈文件控制器202可通过追踪一个或多个寻址模式调整值,并在比较输入寻址模式与包含在各堆栈文件登录项220中的寻址模式之前,将这些调整值应用于输入到堆栈文件132的寻址模式,而补偿堆栈指针值的修改。堆栈文件控制器可追踪用于各逻辑寄存器(例如,在一些x86实施例中的ESP和EBP)的寻址模式调整值,该逻辑寄存器用来寻址位于内存的堆栈区中的数据。举例而言,堆栈文件控制器可包括加法器或计数器以储存各寻址模式调整值。各加法器或计数器可关联于用来寻址在堆栈区域中数据的其中一个逻辑寄存器。每次修改关联于逻辑寄存器的值的操作被分派时,则为了反映该修正,寻址模式调整值可被增加、减少、加载新值、清除或无效。例如,每次推入指令被分派时,则可减少与堆栈指针寄存器相关联的计数器的值(例如,响应PUSH EBX,count=count-4)。
每次由堆栈文件处理新操作时,堆栈文件控制器202可将适当的寻址模式调整值应用到新操作的寻址模式,以为了判定寻址模式是否在该堆栈文件储存器命中。举例而言,若目前ESP相关寻址模式调整值为(-12)并接收到操作MOV EAX,[EBP+8],则堆栈文件控制器202可将寻址模式调整值加至寻址模式,获得模式[ESP+8-12]或[ESP-4]。若修正的寻址模式[ESP-4]包含于堆栈文件登录项220中,则堆栈文件控制器202可输出包含于该堆栈文件登录项中的物理寄存器识别符。
堆栈文件控制器202可包括一个或多个加法器,以将该寻址模式调整值应用于输入到堆栈文件的寻址模式。举例而言,若每个时钟周期可输入两个操作至堆栈文件,则堆栈文件控制器202可包括两个加法器以应用该寻址模式调整值。此实施例相对于通过修正包含于各堆栈文件登录项中的相对位移而补偿堆栈指针的改变的实施例,需要较少的加法器和/或计数器。此外,许多子程序包括执行从堆栈指针减去相当大数值的操作,以分配大的局部堆栈帧。在在堆栈文件内处理这些操作的实施例中,为了作大的偏移可能需要花费相当贵的加法器和/或计数器。在这些情况下,减少加法器和/或计数器的数目也许是重要的设计考虑。
在一些追踪寻址模式调整值的实施例中,寻址模式调整值也可以用来调整将要储存于堆栈文件登录项中的寻址模式。举例而言,考虑第一序列的操作:MOV[ESP-4],EAX;MOV[ESP-8],EBX;MOV[ESP-12],ECX;ADD ESP,-12;接着是第二序列的操作:MOV[ESP-4],ESI;MOV[ESP-8],EDI;MOV[ESP-12],EBP;ADD ESP,-12。这些序列可通过将一系列的PUSH指令译码成MOV和ADD操作,并在译码的操作上执行固定值传送而产生。当操作的第一序列通过堆栈文件控制器处理时,堆栈文件控制器202可分配或修正具有寻址模式[ESP-4]、[ESP-8]、和[ESP-12]的登录项。为响应第一序列中的加法运算,堆栈文件控制器202可更新堆栈指针寻址模式调整值从0至-12。当处理操作的第二序列时,在分配用于该操作的登录所述之前,堆栈文件控制器202可将寻址模式调整值加至各操作的寻址模式。因此,分配于操作的第二序列的堆栈文件登录项可具有寻址模式[ESP-16]、[ESP-20]、和[ESP-24]。为响应在第二序列的加法运算,堆栈文件控制器202可更新该堆栈指针寻址调整值至-24。
若堆栈指针复制至堆栈帧指针(例如,MOV EBP,ESP)(例如,在子程序的开始),则堆栈文件控制器202可额外地补偿此更新。例如,在一个实施例中,堆栈文件控制器202可更新各登录项220,该登录项220的寻址模式中指明堆栈帧指针寄存器,而不是识别堆栈帧指针寄存器。在一个x86实施例中,可将指定ESP的各登录项更新成指定EBP,以响应指令MOV EBP,ESP。同样地,为响应将堆栈帧指针复制至堆栈指针(例如,在子程序结束的MOV ESP,EBP)的操作时,堆栈文件控制器可将各登录项更新成由原先识别堆栈帧指针改成识别堆栈指针。或可取而代之,可将任何指明这种复制操作的目标寄存器作为寻址模式一部分的登录项变为无效。例如,寻址模式为EBP+4的登录项可被无效,以响应复制操作MOV EBP,ESP。
在另外的替代实施例中,当发生将堆栈帧指针复制至堆栈指针或反之将堆栈指针复制至堆栈帧指针的复制操作时,堆栈文件控制器202通过设定一个或多个标识符或其它的状态指示符而补偿。若使用一个标识符,则当检测到一种类型的复制(例如,MOV EBP,ESP)时可设定该标识符,和当检测到另一种类型的复制(例如,MOV ESP,EBP)时清除该标识符。若设定了标识符和状态指示符以表示堆栈指针已经复制到堆栈帧指针,则堆栈文件控制器202可使堆栈文件储存器204内指明堆栈指针寄存器的寻址模式等同于指明在未分派操作中堆栈帧指针的寻址模式(或反之,根据发生了哪种类型的复制),前提是各寻址模式中的位移相同。举例而言,若堆栈文件登录项的寻址模式206为ESP+8,且未分派加载操作的寻址模式为EBP+8,且若已设定了状态指示符,则堆栈文件控制器202可判定未分派加载操作的寻址模式匹配包含在登录项内的寻址模式。因此,堆栈文件控制器202可将储存于该登录项中的标记输出给未分派加载操作。
在堆栈文件控制器202追踪寻址模式调整值的实施例中,堆栈文件控制器202可补偿复制到堆栈帧指针的堆栈指针,通过将堆栈指针寻址模式调整值复制至堆栈帧指针寻址模式调整值。举例而言,若操作MOV EBP,ESP被分派,则堆栈文件控制器202可将EBP寻址模式调整值设定等于目前ESP寻址模式调整值。堆栈文件控制器202可将EBP寻址模式调整值应用至其后处理的指定EBP相关寻址模式的操作。当EBP寻址模式具有有效值,则堆栈文件控制器202可配置成比较输入至堆栈文件132的操作中修正的EBP相关寻址模式与在堆栈文件登录项中的ESP相关寻址模式。若堆栈文件包括的登录项220的ESP相关寻址模式含有与修正的EBP相关寻址模式相同位移,则修正的EBP相关寻址模式可命中堆栈文件。在一些实施例中,当分派任何指定EBP为目标寄存器的任何其它操作(除了MOV EBP,ESP操作),EBP寻址模式调整值可被无效。当EBP寻址模式调整值为无效,则堆栈文件控制器202可能不处理具有EBP相关寻址模式的操作。在一些实施例中,堆栈文件控制器202也可(或替换性的)无效该EBP寻址模式调整值以响应一返回指令。
若一操作调整堆栈指针的值(例如,ADD ESP,12或MOV ESP,EBP),则堆栈文件控制器202可更新堆栈文件指针寻址模式调整值的值。举例而言,为响应堆栈帧指针复制至堆栈指针的操作,堆栈文件控制器可将堆栈帧指针调整值复制到堆栈指针调整值,并无效该堆栈帧指针调整值。为响应修正该堆栈指针值的操作(例如,ADD运算),堆栈文件控制器202可更新堆栈指针调整值以反映该修正。举例而言,当分派了加法运算时,若使用操作ADD ESP,12来恢复先前的堆栈帧,堆栈文件控制器可加上12以修正该堆栈指针寻址模式调整值。
在一些实施例中,堆栈文件132可通过储存用于各子程序的调整值而处理嵌套子程序,以及每当处理返回指令时,恢复对应于先前堆栈帧的调整值。例如,每次处理调用指令,堆栈文件控制器202可在LIFO(后入先出)结构中储存目前的寻址模式调整值,类似于返回地址堆栈。当处理对应的返回指令时,储存的调整值可在该堆栈文件控制器202中从该结构恢复取得。
在一些实施例中,寻址模式调整值可包括指示堆栈指针和堆栈帧指针之间偏差的偏移值。每当操作设定该两个指针为相同值时,偏移值可重设至0。例如,当操作设定该堆栈指针值等于该堆栈帧指针值时(例如,MOV ESP,EBP),或相反情况时,偏移值可重设至0。当操作修正ESP和EBP的值时,即适当地修正了偏移值。举例而言,为响应推入指令(该推入指令减少ESP),可增加偏移值以反映ESP修正。为响应从EBP减少某值的操作,可减少偏移值。为了反映正或负偏移值,而可加正负符号于该偏移值。当由堆栈文件处理操作时,可使用偏移值(和/或堆栈指针寻址模式调整值)以修正用来判定在堆栈文件储存器204中命中和未命中的寻址模式,并在这些寻址模式储存作为新的堆栈文件登录项之前修正寻址模式。举例而言,若具有EBP相关寻址模式的操作输入至堆栈文件132,则在比较该寻址模式与这些储存于堆栈文件登录项220中的寻址模式之前,堆栈文件控制器202可将该ESP相关寻址模式调整值和EBP-ESP偏移值应用到操作的寻址模式。在一些实施例中可提供该偏移值替代堆栈帧指针调整值或作为额外的值。
若加载操作的寻址模式在堆栈文件储存器204命中,则可使用由堆栈文件控制器202输出的标记来将由标记识别的值链接至加载操作的预测结果。举例而言,在一些实施例中,当加载操作分派至调度装置118时,由堆栈文件132输出的标记也可提供给调度装置(例如,作为预测的来源操作数标记)。调度装置118可根据是否有该标记所识别之值(例如,在寄存器堆116中或在结果总线130上),而发出加载操作。执行内核124可执行加载操作,而使得该链接值在结果总线130上广播作为加载操作的预测结果(值得注意的是在一些实施例中,产生为加载结果的值其本身可不定标识符或识别为预测值)。如下所述,在其它实施例中,该值可通过在预测的映射中储存标记而链接至加载操作的预测结果。
作为链接的结果,一旦取得由标记所识别的数据值时(例如,于寄存器堆116中或于结果总线130上),则可传送该值作为加载操作的预测结果,以便使得相依操作可使用该预测结果执行。在许多情况下,这可允许相依操作执行使用该加载操作的预测结果比延迟相依操作的执行直到可取得加载操作的非预测结果值为止的方式更快得以执行。
在一些实施例中,可通过执行加载操作而传送数据值,而使得数据值输出到结果总线130作为该加载操作的预测结果。举例而言,在一个实施例中,通过输出数据值和识别该数据值作为操作的结果的标记可在单次循环中执行加载操作,以替代采用三次循环来执行该非预测的加载操作(假设该操作命中该数据高速缓存128中)。在其它实施例中,当分派各相依操作时,可用更多间接的方法,通过由堆栈文件控制器202直接提供标记输出到相依操作(具有由加载操作所产生的操作数的操作)而传送数据值,作为预测操作数来源。传送此数据值的装置可包括一个或多个:分派单元,配置用来修正加载操作以执行作为预测寄存器至寄存器移动操作,或提供标记给相依操作以作为预测操作数来源标记;调度装置,配置用来根据是否具有链接数据值而发出修正加载和或相依操作;以及执行内核,配置用来输出链接数据值作为加载的结果,或使用该链接数据值以执行该相依操作。
加载/储存单元126(或其它在微处理器100内用来验证链接的装置)可以验证储存在由堆栈文件132所识别的物理寄存器中的值至加载操作的预测结果的链接。若该链接不正确,则加载/储存单元126可再发出加载操作和/或广播在结果总线130上加载操作的正确结果。再发出加载可导致任何使用加载的预测结果而执行的相依操作使用更新、非预测值而再发出和执行。或可取而代之,若链接不正确,则处理器100可清洗在错误预测后发生的操作,并使用加载操作的正确结果再开始执行这些操作。若登录项被用来不正确地将各值链接至加载操作的预测结果,则堆栈文件控制器202可以使堆栈文件储存器204内的登录项无效。
如所示,堆栈文件132追踪在操作中的寻址模式,该操作存取在数据高速缓存128(或系统内存200)中的数据。结果,堆栈文件132允许储存在物理寄存器中的寄存器值被链接到储存于内存中特定地址的值。
值得注意的是,在一个实施例中,储存在堆栈文件储存器204内的相对位移206可包括少于用来指明在位移字段214内位移的所有的位。在另外的实施例中,堆栈文件控制器202可根据在该堆栈文件中的登录项是否能够储存用于特定操作的所有的寻址信息,而选择性地选择是否将登录项分配在堆栈文件储存器204中。举例而言,若在堆栈文件储存器204中的各登录项储存达16位的位移信息,而一个特定的操作包括24位的位移信息,则堆栈文件控制器202可不分配堆栈文件登录项给该操作。
为了进一步说明堆栈文件132的一个实施例的操作,假设由分派单元104所处理的指令序列包括图2C中所示的指令。图2C显示可包括在示例性调用程序中的指令,以及可包括在示例性子程序SUB1中的指令。值得注意的是,图2C中所显示的这些指令,可由一个或多个在程序次序中的插入指令(图中未显示)所分隔。图2D显示堆栈的内容和恰在子程序调用之前的堆栈文件的内容。图2E显示堆栈的内容和恰在子程序指令MOV[EBP-4],EBX之后的堆栈文件的内容。值得注意的是,其它的实施例可以不同的方式处理这些指令(例如,为响应修正的堆栈指针,一些实施例可更新寻址模式调整值以代替更新储存在堆栈文件中的寻址模式)。
可使用在调用程序中的第一指令PUSH EBX,以在堆栈上储存逻辑寄存器值(在此例子中是EBX),而使得该值不必受到子程序的修正。当用来执行PUSH EBX的储存操作的寻址模式被提供给堆栈文件132时,堆栈文件控制器202可检验堆栈文件储存器204匹配的寻址模式。假定寻址模式在堆栈文件储存器204中未命中,则堆栈文件控制器202可分配登录项(可通过使用未分配的登录项或通过覆盖已经分配的登录项)以储存推入指令所有的或一些的寻址模式和来源操作数的标记。在所示实施例中,标记为目前指定给EBX的物理寄存器的物理寄存器识别符(然而,为了容易参照,在图2D和2E图中的标记显示为逻辑寄存器识别符)。堆栈文件控制器可将寻址模式储存为ESP+0。因为寻址模式在堆栈文件储存器中未命中,则堆栈文件控制器202可不输出用于该寻址模式的标记。
可使用接着的两个指令以储存两个参数,即储存在EDI和ESI的值到堆栈以供子程序使用。假设在调用程序中用于下两个储存操作的寻址模式(用来执行PUSH EDI和PUSH ESI)也未在堆栈文件储存器204中命中,则堆栈文件控制器202可分配另外两个登录项以储存各储存操作的这些标记和寻址模式。此外,每次检测到推入指令(该推入指令将堆栈指针减值),该堆栈文件控制器可修正包含于现有的堆栈文件登录项中的位移,该登录项的寻址模式指明堆栈指针ESP。因此,当检测到PUSH EDI时,堆栈文件控制器204可响应PUSH EBX而将分配的登录项位移增4(因此而使得登录项的位移变成ESP+4)。同样地,当检测到PUSH ESI时,堆栈文件控制器204可增加为响应PUSH EBX分配的登录项中和为响应PUSH EDI分配的登录项中的位移。因此,为响应PUSHEBX分配的登录项中寻址模式可更新为指定ESP+8,且为响应PUSH EDI分配的登录项中寻址模式可更新为指定ESP+4。因此,分派包含在PUSH参数1指令中的操作后,包含于堆栈文件中的寻址模式可如图2D中所示。
为响应CALL SUB1指令,将指令指针推到堆栈上(用作为返回地址)。因为堆栈指针为了响应CALL指令而修正,则可更新包括在堆栈文件中登录项中的位移,该登录项的寻址模式指定堆栈指针。举例而言,响应PUSH EBX而分配的包含于登录项中寻址模式可被更新以指定ESP+12。CALL指令可包括更新堆栈文件的储存操作。举例而言,堆栈文件也可响应CALL SUB1指令而分配一个堆栈文件登录项(图2D至图2E中未显示)(例如,具有等同于目前指定给EIP的物理寄存器的物理寄存器识别符的标记,和等同于ESP+0的寻址模式)。
在子程序SUB1内,指令PUSH EBP可导致将分配一个新的堆栈文件登录项(具有标记等同于目前指定给EBP的物理寄存器的物理寄存器识别符,和ESP+0的寻址模式)。此外,因为该推入修改堆栈指针,则可修改包含于寻址模式内指定该堆栈指针的位移(例如,可增加4)。
为了响应指令MOV EBP,ESP,堆栈文件控制器可将具有寻址模式指定ESP的登录项更新成指定EBP,如图2E中所示。因此,寻址模式ESP+12可更新成指定EBP+12等等。
下一个指令SUB ESP,4分配空间在堆栈的上端以让子程序储存局部变量。因为在此例子中,堆栈文件目前追踪EBP修正,堆栈文件对于此指令的响应可为不分配或修改任何的登录项。然而,值得注意的是在其它的譬如寻址模式调整值的这些实施例中,这一指令可能导致一个或多个寻址模式调整值和/或登录项的寻址模式的更新,以反映ESP的改变。
当MOV EAX,[EBP+8]的寻址模式提供至堆栈文件时,来源操作数的寻址模式[EBP+8]匹配其中一个包含于堆栈文件中的寻址模式。因此,堆栈文件可输出在匹配登录项中的标记。此处,在匹配登录项中的标记为物理寄存器的物理寄存器识别符,当分配该匹配登录项时该物理寄存器指定给ESI。可使用此标记以将物理寄存器中的数据值链接至MOV EAX,[EBP+8]的预测结果。同样地,当MOV EBX,[EBP+12]的寻址模式提供给堆栈文件时,该寻址模式匹配现有的登录项,该堆栈文件可输出包含于匹配登录项中的标记,在此例中,当该登录项被分配时识别指定给EDI的物理寄存器该标记。
对于MOV[EBP-4],EBX的目的操作数的寻址模式也许在堆栈文件132中未命中。因此,堆栈文件可分配新的登录项,其具有EBP-4寻址模式和目前指定给EBX的物理寄存器的物理寄存器识别符的标记。当包含于ADD EAX,[EBP-4]中的加载操作的来源操作数的寻址模式提供给堆栈文件时,寻址模式命中并输出储存在匹配登录项中的标记(当建立匹配登录项时,该标记识别指定给EBX的物理寄存器)。
指令MOV ESP,EBP复制堆栈帧指针值至堆栈指针。响应此复制指令,堆栈文件控制器可使任何其寻址模式指定于ESP的堆栈文件登录项无效。此外,堆栈文件控制器可将任何其寻址模式指定EBP堆栈文件登录项更改成指定ESP。在一个实施例中,堆栈文件控制器可配置成使任何其寻址模式修改成指定负位移和堆栈指针的登录项无效。例如,在这样的实施例中,响应MOV[EBP-4],EBX分配的登录项若其寻址模式修改为指定EBP-4,则该登录项可为无效。
指令POP EBP将堆栈帧指针值还原成之前在调用程序中的值。对于包含在POP指令的加载操作的来源操作数的寻址模式ESP,在该堆栈文件中命中(如上述将寻址模式EBP+0修改成指定ESP+0后),因此该堆栈文件可输出包含于该登录项中的标记。因为包含于POP指令中的加法运算在加载取出值后修改堆栈指针值,该堆栈文件控制器可接着修改指定堆栈指针的各寻址模式(例如,通过将包含于各寻址模式中的位移减去4)。
值得注意的是,在一些实施例中当一些诸如推入和取出指令包括诸如储存或加载操作的几种组成操作时,这些指令可分派和调度为单一指令。在另外的实施例中,可分别地分派和调度包含于这种指令中的一个或多个组成操作。举例而言,对于取出指令,可使增量堆栈指针的操作以及将堆栈顶端的数据加载于特定的寄存器中的操作分别地分派与调度。
因为堆栈文件132被用作预测结构,则储存于堆栈文件储存器204中的信息的准确度对于微处理器100的正确操作而言可不重要(例如,在堆栈文件132中的错误预测也许不造成在微处理器100的输出中的错误)。然而,为了增加由正确地将加载操作的预测结果链接至储存于物理寄存器中的值所提供的好处,和/或减少对于错误预测链接所招致的任何性能损失,而希望改进堆栈文件132的准确度。在一些实施例中,可响应窥视(snooping)取得写入存取于特定地址的数据的另外装置,而使堆栈文件储存器204中的登录项无效。同样地,可响应检测的错误预测而使登录项无效。一般而言,可监视和使用诸如这些可影响在堆栈文件储存器204中的登录项的准确度的许多状况,而判定何时将登录项无效。然而,因为堆栈文件132为预测结构,而一些实施例并不执行一些这些监视方法(例如,若执行某些监视方法的额外的硬件成本超出堆栈文件准确度的可能的改进)。
值得注意的是堆栈文件132允许在操作流中彼此相隔颇远的操作之间相互依存,以用来将值链接至预测结果。因此,堆栈文件可提供操作之间相依的经历,这些操作可由几个插入的操作所分离。
图3显示将加载操作的预测结果链接至寄存器值的一个方法实施例的流程图。在步骤301,标记与寻址模式相关联,指示二者可能识别相同的数据值。该标记和寻址模式皆指定用于第一加载或储存操作。举例而言,若第一操作为加载操作,则标记可识别分配以储存加载结果的物理寄存器,并可使用寻址模式计算用于加载的地址。可替代的,若第一操作为储存操作,则寻址模式可指示储存的目的地的地址,并标记可识别由储存操作所储存的数据。在一些实施例中,可通过将二者储存于堆栈文件中的登录项中,而关联该标记和寻址模式。值得注意的是,在与标记之相关联前,可根据寻址模式调整值(例如,由追踪对堆栈指针值的较早修正值而获得)而修改寻址模式。
若一个加载操作的寻址模式匹配第一操作的寻址模式,则加载的预测结果可链接至由该第一操作指明的标记所识别的数据值,如步骤303至305所示。若加载操作的寻址模式不匹配第一操作的寻址模式,则可关联加载的寻址模式与用于加载的目的地的标记(例如,通过在堆栈文件中的登录项中储存二者),如步骤303至311所示。再者,如在步骤313所示,通常可通过存取数据高速缓存而执行加载。在一个实施例中,加载操作的寻址模式可与多于一个的先前操作的寻址模式相比较。例如,加载的寻址模式可与当前储存于堆栈文件中的各寻址模式相比较。还值得注意的是,在一些实施例中,在与先前操作的寻址模式相比较之前,根据寻址模式调整值,而可修改加载操作的寻址模式。
如在步骤307所示,若加载的预测结果链接至由标记所识别的数据值,则该数据值可传送至一个或多个相依操作以作为加载操作的预测结果。该数据值可经由结果传送或通过传送相关操作可使用数据值作为预测的操作数来源的指示,这将在下文中作更详细的说明。在一个实施例中,若数据值经由结果传送而传送的话,则在产生该数据值的操作完全执行的一周期后执行相关操作。若经由指示相关操作可使用物理寄存器作为预测操作数的来源而传送该数据值的话,则一旦完成执行产生该数据值的操作后,可立即发出相关操作。如在步骤309所示,在验证预测结果之前,可传送预测结果。可传送预测结果而不须存取数据高速缓存(亦即,预测结果比由存取数据高速缓存而产生非预测的结果更快传送)。
若在步骤309验证该预测结果是正确的,则可完成加载操作而不须执行数据高速缓存存取。在其它的实施例中,可施行加载操作而不管该预测结果是否验证为正确。若在步骤309判定预测结果为不正确的话,则可执行数据高速缓存存取以便获得正确的结果(图中未显示)。若如此,则任何使用加载预测结果所执行的相关操作可使用加载的更正结果而再执行。值得注意的是在一些情况下,在传送链接数据值作为加载的预测结果(在步骤307)之前,可执行验证(在步骤309)。在这些情况下,可正常执行加载,或若判定链接为正确的话,则可传送数据值作为加载操作的非预测结果。
内存文件
图4A显示分派单元104的一个实施例,该分派单元104包括内存文件136。内存文件136包括内存文件控制器402和内存文件储存器404。可使用内存文件136根据寻址模式将储存于物理寄存器中的寄存器值链接至储存于内存中特定地址的值。不像堆栈文件,可使用内存文件将寄存器值链接至在内存区域中而不在堆栈区域中的内存值。在一些实施例中,内存文件136也可如上述般执行一些堆栈文件132的功能,以便额外地将寄存器值链接至内存的堆栈区域内的内存值。或可取而代之,分派单元104也可包括分离的堆栈文件132以执行这些功能。
内存文件储存器404包括一个或多个登录项420。各登录项420可包括寻址模式406和与登录项的寻址模式相关联的标记408。当产生标记时,各标记408可通过指示数据值将储存于何处(例如,在重排序缓冲器内或在寄存器堆116内)而指示出该数据值。例如,如说明的实施例中所示,各标记408可识别分配以储存该数据值的物理寄存器,如由寄存器图134所指示。各寻址模式406可包括所有或一些信息,用来指出操作中地址。储存于内存文件136中的寻址模式406可包括类似于储存在堆栈文件132中的寻址模式206的信息。值得注意的是在一些实施例中,储存于内存文件储存器404中的寻址模式406可包括少于用于指定操作的所有的寻址信息。在其它实施例中,内存文件控制器402可根据在内存文件中的登录项是否可储存所有用于特定操作的寻址信息,而选择性地选择是否在内存文件储存器404中分配登录项。类似于堆栈文件储存器204,内存文件储存器404可从数个寄存器、锁存器、正反器、一个或多个随机存取存储器(RAM)单元等等而实现。
内存文件控制器402可比较指明于非分派操作中的寻址模式与储存于内存文件储存器404中登录项420内的寻址模式。若操作的寻址模式不匹配任何当前储存于内存文件储存器404中登录项内的寻址模式406(亦即,操作的寻址模式在内存文件储存器中未命中),则内存文件控制器402可在内存文件储存器404中分配新的登录项420以储存所有的或一些该操作的寻址模式。若没有闲置的登录项可在内存文件储存器404中分配,则内存文件控制器402可使用诸如最少最近使用(LRU)、先进先出(FIFO)、随机取代等等替代设计而选择登录项以覆盖。除了在分配的登录项内储存操作的寻址模式之外,内存文件控制器402也可储存标记408(例如,物理寄存器的名称)以识别从内存位置所加载或储存于内存位置的值,该内存位置由操作的寻址模式识别。举例而言,若处理从内存加载数据的操作,则响应该操作而分配的登录项420可储存物理寄存器的名称,该物理寄存器配置成储存加载操作的结果。若处理储存数据于内存位置的操作,则内存文件控制器402可储存寄存器的物理寄存器名称,该寄存器储存由内存文件储存器404中的储存操作储存的值。
若操作的寻址模式(或该模式的一部分)已经储存于内存文件404的登录项中(亦即,操作的寻址模式在内存文件储存器中命中),则内存文件控制器402可使用或修改包含匹配的寻址模式的该登录项。若加载操作被处理(将值从特定地址加载到一寄存器的操作),则内存文件控制器402可输出储存于匹配的登录项中的物理寄存器名称。若储存操作被处理(将从寄存器来的值储存于特定地址的操作),则内存文件控制器402可用储存的数据的标记覆盖储存于匹配的登录项中的该标记(例如,物理寄存器名称)。
在一些实施例中,若分派指定特定逻辑寄存器(而不是用来储存堆栈指针和堆栈帧指针的寄存器)为目的操作数的操作,则内存文件控制器402可使包含该逻辑寄存器为其寻址模式406的一部分的任何登录项420无效。因此,各操作的目标寄存器的逻辑寄存器名称可输入至内存文件136以便执行登录项无效。此外,在一些实施例中,当窥视到另外的装置取得在特定地址数据的写入存取时,即令内存文件储存器404内的登录项无效。同样地,当检测到错误预测时可使登录项无效。
若内存文件136也分配用于操作的登录项,该操作的寻址模式指定内存的堆栈区域内的位置,则内存文件控制器402可包括其中一种上述的针对这些登录项的堆栈文件补偿机制。或者这些登录项可维持在独立的堆栈文件132内(亦即,内存文件136可不分配登录项给各操作,该操作的寻址模式指定堆栈内的位置)。一般而言,内存文件控制器402可根据各寻址模式内包含哪一个逻辑寄存器识别符而区别指定堆栈区域内的位置的寻址模式与指定内存内其它地址的寻址模式之间的不同。因为内存文件136为预测结构,则由使用这种机制以区别寻址模式所发生的可能不正确是可接受的。
在一些架构中,用来指定堆栈帧指针的逻辑寄存器(例如,像是EBP基址指针寄存器)也可用作为通用寄存器。因此,包括这种双目标寄存器的寻址模式406可指定在内存的堆栈区域内的位置,或不包括在堆栈区域内的位置。为了区别这些寻址模式之间的不同,内存文件控制器402可包括追踪目前基址指针寄存器用作堆栈帧指针的可能性的机制。这种机制可包括这样的标识符,该标识符当基址指针寄存器可能用作堆栈帧指针时予以设定,和当基址指针寄存器可能用作通用寄存器时予以清除。举例而言,这种标识符可响应CALL指令而设定,和响应RET操作而清除。在其它的实施例中,这种标识符可响应ENTER指令而设定,和响应LEAVE指令而清除。或可取而代之,这种标识符可响应MOV EBP,ESP操作的分派而设定,和响应MOV ESP,EBP操作的分派而清除。当设定标识符时,内存文件控制器402可禁止处理那些寻址模式包括基址指针寄存器的操作(在内存文件136不包括堆栈文件功能的这些实施例中)。在这些情况下,堆栈文件132可替代处理这些操作,或完全不处理这些操作。或可取而代之,在内存文件136也执行堆栈文件功能的这些实施例中,当标识符设定时,内存文件控制器402可用具有堆栈相关的寻址模式的方式处理这些输入至内存文件的操作。当已清除该标识符时,若这些操作输入到内存文件中,则可以具有非堆栈相关寻址模式的方式处理该些操作。
在一些实施例中,可通过内存文件控制器402维持其它的信息,以便在嵌套子程序环境中更正确地处理双目的逻辑寄存器。举例而言,代替仅维持指示是否已经处理CALL指令的标识符,内存文件控制器402可追踪“调用深度”。调用深度可指示现用嵌套层级,和用来判定将如何通过内存文件控制器402来处理特定的基址指针寄存器寻址模式(或甚至是否该处理这种操作)。
在一个实施例中,内存文件控制器402可包括追踪调用深度的计数器。在一些实施例中调用深度计数器最初可设定为0。每次处理CALL指令后,内存文件控制器402可增值调用深度计数器。每次处理RET指令后,内存文件控制器402可减值调用深度计数器。当分配登录项420时,若该登录项的寻址模式406包括基础指针逻辑寄存器识别符,则内存文件控制器402可将当前调用深度附加到该登录项。
当由内存文件控制器402依序地处理其寻址模式包括基址指针寄存器的操作后,目前的调用深度可与储存于各登录项中的调用深度相比较。若这些调用深度并不匹配,则操作将在内存文件136中不命中。例如,指令的序列将包括:
MOV EAX,[EBP+20]
CALL
<设定子程序EBP的新值的操作>
MOV EBX,[EBP+20]
RET<恢复EBP的CALL之前的值>
MOV ECX,[EBP+20]
可通过一个或多个插入指令而分隔各指令。由分派单元104处理此指令序列之前,在内存文件控制器402中的调用深度可等于1。当处理MOV EAX,[EBP+20]操作时,内存文件控制器402可用具有调用深度等于1的EBP+20来比较储存在内存文件储存器404内的其它登录项中的寻址模式。假设这些寻址模式没有一个匹配,则内存文件控制器402可分配新的登录项以储存寻址模式EBP+20和识别EAX的标记。内存文件控制器402可额外地将识别目前调用深度的值(例如,1)附加至新登录项内的调用深度字段。值得注意的是,在许多实施例中,内存文件控制器402可仅附加此值至储存包括基础指针的寻址模式的登录项。
响应CALL操作的分派,内存文件控制器402可更新目前的调用深度(例如,通过将目前的调用深度增加至2)。在调用子程序中的操作可更新堆栈帧指针EBP的值(例如,MOV EBP,ESP)。因为在登录项中的调用深度不匹配当前调用深度,则由于EBP的更新,内存文件控制器402并不会使该登录项无效。再者,由于更新EBP,则MOV EBX,[EBP+20]将在内存文件中不命中,因为目前具有寻址模式EBP+20的内存文件登录项是根据不同的EBP值。为了正确地判定MOV EBX,[EBP+20]的寻址模式不匹配已经储存于内存文件储存器中的寻址模式,则内存文件控制器可比较当前调用深度(2)与存在的登录项的调用深度(1)。因为目前的调用深度不同于存在的登录项的调用深度,则内存文件控制器可判定新的指令在内存文件中未命中。因此,内存文件控制器可分配登录项以储存EBP+20并将指示目前调用深度的值附加至该登录项。值得注意的是,现在也许有(至少)两个具有寻址模式EBP+20的内存文件登录项。当处理RET指令时,内存文件控制器可减少目前的调用深度(例如,再至1)。因为目前的调用深度等于当之前登录项分配至MOVEAX,[EBP+20]的调用深度,则MOV ECX,[EBP+20]可在内存文件中命中。值得注意的是在一些实施例中,内存文件控制器402可使登录项无效,该登录项的调用深度要大于目前的调用深度。
在一些包含堆栈文件132和内存文件136的实施例中,可使用各种机制来判定哪一结构针对特定的操作而分配登录项。在一些实施例中,堆栈文件132和内存文件136可针对具有堆栈相关寻址模式(例如,包括EBP或ESP的寻址模式)的操作而分配登录项。在其它实施例中,可通过结合堆栈文件132和内存文件136成为单一结构而消除冗余。
在其它的替代实施例中,针对寻址模式指定堆栈指针的操作,内存文件136可不分配登录项并判定内存文件命中和/或未命中。内存文件136可选择性地处理(或全然不处理)具有指定基址指针寄存器或其它双目的逻辑寄存器的寻址模式的操作。在一个实施例中,若内存文件136选择性地处理其寻址模式指定基址指针寄存器的操作,则内存文件136可如上述般根据在堆栈文件控制器202中的堆栈帧指针寻址模式调整值是否有效,或根据指示子程序是否正在处理的标识符,而判定是否处理特定的操作。当堆栈帧指针寻址模式调整值为有效时,堆栈文件132可处理包括基址指针寄存器的寻址模式。当堆栈帧指针寻址模式调整值为无效时,内存文件136可处理这些操作。
若正在处理加载操作,且加载操作在内存文件储存器404中命中,则由内存文件控制器402输出的标记可用来将由标记识别的储存值链接至加载操作的预测结果。举例而言,在一些实施例中,当加载操作被分派至调度装置118中,则由内存文件136所输出的标记也可提供给调度装置(例如,作为预测来源操作数标记)。调度装置118可针对该标记所识别的值的有效性(例如,在寄存器堆116中或在结果总线130上)而可发出操作。执行内核124可执行加载操作,而使得链接值在结果总线130上广播作为加载操作的预测结果(应注意的是,在一些实施例中,产生作为加载结果的数据值其本身可不设为标识符,或否则识别为预测值)。如下所述,在其它的实施例中,数据值可通过在预测映射中储存标记而链接至加载操作的预测结果。
为了进一步说明内存文件136的操作,假设由分派单元104所处理的操作的序列包括下列的操作:
MOV EBX,[EDX+EAX-位移A](加载1(LOAD1))
■■■■■
MOV ECX,[EDX+EAX-位移A](加载2(LOAD2))
■■■■■
MOV[EDX+EAX-位移A],EAX(储存1(STORE1))
这些操作的每一个可通过在程序顺序中插入一个或多个干预操作而分隔。如所示,这些三个操作的每一个包括相同的寻址模式:EDX+EAX-位移A。
当LOAD1的寻址模式提供给内存文件136时,内存文件控制器402可检验内存文件储存器404的寻址模式是否匹配LOAD1的寻址模式。假设寻址模式在内存文件储存器404中未命中,则内存文件控制器402可分配登录项(通过使用未分配的登录项或通过覆盖已经分配的登录项)以储存所有的或一些的加载操作的寻址模式,并加载操作的目标物理寄存器的物理寄存器名称,如由寄存器图134所提供。因为加载操作在内存文件储存器中未命中,则内存文件控制器402可不输出用于该加载操作的标记。
当接着由内存文件136处理LOAD2时,其寻址模式可匹配分配给LOAD1的登录项的寻址模式(假设LOAD1的登录项尚未因为中间插入操作而被覆盖)。响应LOAD2的寻址模式在内存文件储存器404中命中,内存文件控制器402可输出分配以储存LOAD1的结果的物理寄存器的物理寄存器名称。可使用物理寄存器名称将由LOAD1加载的数据值链接至LOAD2的预测结果。
当通过内存文件136而处理STORE1时,其寻址模式可在分配给LOAD1的登录项中命中(再假设没有插入操作造成此登录项被覆盖)。然而,替代输出分配以储存该LOAD1结果的实际登录的实际登录项名称(如对于LOAD2所施行的),内存文件控制器402可用包含由STORE1所储存的数据的寄存器的物理寄存器名称覆盖储存在该登录项中的实际登录项名称。因此,当后续的加载操作在此登录项中命中时,内存文件控制器402将输出STORE1的来源物理寄存器的物理寄存器名称,以代替输出LOAD1的目标寄存器的物理寄存器名称。
如所示,堆栈文件132和/或内存文件136追踪在数据高速缓存128(或系统内存200)中存取数据的操作中的寻址模式。结果,储存于物理寄存器中的寄存器值可链接到储存于内存中特定地址的值。
具有预测来源的操作的调度
各种实施例可用许多不同的方法链接加载操作的预测结果与寄存器数据值。在一些实施例中,可通过识别用于操作数的两个来源而链接各值:预测来源与非预测来源。预测来源可以是链接的数据值。可提供预测来源用于加载操作,以指示链接到加载的预测结果的数据值。在一些实施例中,也可提供预测来源用于根据这种加载操作的操作。因此,一些操作数可具有两个标记:一个识别预测的来源,和一个识别非预测的来源。在这些实施例中,各调度装置118可提供标记储存器用于预测操作数和非预测操作数,如图5中所示。
图5显示调度装置118的一个实施例,该调度装置118可包含于微处理器中。在所示实施例中,调度装置118包括调度装置控制器502和操作储存器504。响应分派单元分派操作,调度装置控制器502可分配操作储存器504内的登录项以储存对应于该操作的信息。举例而言,在操作储存器504内的登录项522可包括操作码字段510、一个或多个操作数字段、和结果字段516。结果字段516可储存识别物理寄存器的标记,其中将储存该登录项的操作的结果。当发出操作时,此标记可传送至在其中一个或多个标记总线520上的各调度装置118。各调度装置可比较传送于标记总线520上的各标记与未处理的操作的操作数标记(如下所述,预测的和非预测的),以便判定何时将可取得未处理操作的操作数。因此,当标记总线520上出现操作的来源操作数标记时发出(或注明为准备发出)该操作。
各操作数字段可包括用于识别预测操作数来源的预测标记和识别非预测操作数来源的非预测标记的储存器。在所示的登录项522中,操作数1的两个来源由非预测标记512和预测标记514所识别。调度装置118可配置成当有一个或多个指示可得到操作的操作数则发出操作。若可从预测的来源和非预测的来源其中任何一者取得操作数,则代表可得到该操作数。若从预测的来源和非预测的来源得到该操作数,则可使用从非预测的来源取得的值来执行该操作。在一些实施例中,调度装置118可对具有非预测的来源操作,较之仅具有预测的来源的操作,给予发出操作较高的优先权。
值得注意的是一个操作可包括一些具有预测的来源的操作数,和其它的不具有预测的来源的操作数。还应注意的是,同一个来源对于一个操作也许是预测的来源,而对于另一个操作也许是非预测的来源。在一些实施例中,当执行操作时,对于各操作数也许仅可读取一个数据值(例如,执行内核124可读取预测的操作数来源或非预测的操作数来源,但不能同时读取二者)。如此可使得操作不需增加额外的端口至寄存器堆116中。在一些实施例中,预测的来源和实际来源可储存于相同的储存位置(例如,在寄存器堆116内),且预测的来源可不被定标识符或相反识别为预测来源。
在许多实施例中,在这些操作已发出至执行内核124后,调度装置118可配置成仍保持分配给各操作的登录项。当根据是否可得一个或多个预测操作数,而通过调度装置118发出操作时,则该调度装置可保持分配至该操作的登录项522而使得当若该预测链接不正确时能再发出操作。在一些实施例中,可配置加载/储存单元以验证当预测的加载结果链接至储存于物理寄存器中的数据值时,所发生的预测链接。若该链接为正确,则加载储存单元可配置成不广播非预测的加载结果,因为已经可经由链接而取得正确结果。假如如此,若识别用于该操作的非预测操作数来源的标记广播于结果总线130上,则调度装置118可配置成再发出操作。
可选择的,加载/储存单元可广播该储存的结果与一额外状态位,该额外状态位屏蔽广播,或指示预测的链接为正确而不必再发出该加载。然而,若预测的链接不正确,则加载/储存单元可执行数据高速缓存和/或内存存取,以便获得用于加载的正确的结果,并广播该加载结果。在一些实施例中,总是广播结果,额外的状态位可指示预测的链接不正确。因此,在许多实施例中,在微处理器中已经取得的一些标记和结果总线可用来指示预测的链接为不正确。在其它的实施例中,可以执行其它替代的指示机制(例如,使用分离的结果总线130和/或结果标记总线520以指示错误预测)。
图6显示具有预测的和非预测的操作数来源而发出和再发出操作的一个方法实施例的流程图。若操作的预测操作数来源为有效,则可发出操作,如步骤801至803所示。当数据值存在于寄存器堆内的特定寄存器中,或当数据值输出到结果总线上时,则可得到操作的预测操作数来源。值得注意的是在一些情况中,可在预测操作数来源之前先得到用于相同操作数的操作的非预测操作数来源。在这些情况下,在预测的操作数来源得到前,可以发出操作。在某些实施例中,之后得到预测来源并不触发操作的再发出。
可使用由预测的操作数来源所提供的数据值来执行操作的发出,如步骤805所指示,并可广播操作的结果,如步骤805所指示。广播该操作的结果使得可执行相依操作。
若在某些稍后时间判定预测的来源为不正确(例如,由预测的来源和非预测的来源所提供的数据值并不相同,或用来产生预测的来源的标记的预测的链接为不正确),则非预测的来源的标记可广播作为预测的来源值为不正确的指示。广播非预测的来源的标记包含广播该标记使调度装置以再发出操作作为响应。举例而言,在一些实施例中,若标记被广播且与该标记相关联的状态标识符设定于某一值时,则调度装置可响应,而在其它的实施例中,也许没有关联的状态标识符,且调度装置可配置成只要广播非预测标记时即再发出操作。
预测的寄存器图
图7显示分派单元104的另一个实施例,该分派单元104可包含于微处理器100中。在此实施例中,分派单元104包括寄存器图134、堆栈文件132(和/或内存文件136,图中未显示)和预测的寄存器图800。类似于寄存器图134,预测的寄存器图800可将逻辑寄存器名称转译至物理寄存器名称。然而,预测的寄存器图800可响应堆栈文件132(和/或内存文件136)将储存于物理寄存器中的值链接至加载操作的预测结果,而预测地将逻辑寄存器名称映射至物理寄存器名称。预测的寄存器图800可允许用于操作的预测的操作数值,该操作并不包括链接到寄存器数据值的寻址模式。举例而言,若逻辑寄存器EAX具有有效的预测映射,则具有EAX作为来源操作数的操作可具有两个来源标记:由寄存器图134所提供的非预测标记和由预测的寄存器图800所提供的预测标记。由于一旦得到操作的预测来源即可发出该操作,因此预测的寄存器图800可将数据消耗器(consumer)经由预测操作数标记直接链接到数据产生器,旁通了任何插入加载和储存。值得注意的是,在一些实施例中,预测的映射可储存不是物理寄存器名称的标记(例如,在具有包含了预测寄存器状态的储存器的重排序缓冲器的各实施例中)。
预测的寄存器图800包括预测的寄存器图控制器802和预测的寄存器图储存器804。预测的寄存器图储存器可包括一个或多个的登录项820。各登录项820可与特定的逻辑寄存器相关联,并指示目前该逻辑寄存器预测映射的物理寄存器的物理寄存器识别符812。各预测的寄存器图登录项820也可包括一个关于当前使用的登录项是否为有效或无效的指示(图中未显示)。在一个实施例中,预测的寄存器图储存器804可包括用于各逻辑寄存器的一个登录项。在其它的实施例中,预测的寄存器图储存器804可包括较逻辑寄存器数目要少的登录项。在这些实施例中,各登录项820可包括一个目前登录项对应的逻辑寄存器的指示。
预测的寄存器图控制器802可配置成响应加载操作的预测结果已与由特定的物理寄存器名称所识别的数据值链接的指示,而更新登录项820。在所例示的实施例中,此指示由堆栈文件132所提供。在其它的实施例中,这些指示也可或者替代地由内存文件136所提供。欲更新的登录项820是作为加载操作目的地的逻辑寄存器的登录项。可更新登录项以包括由堆栈文件132所输出针对该加载操作的该物理寄存器识别符。
在一些实施例中,在与将各操作提供给寄存器图134的期间,各操作可提供给预测的寄存器图800。寄存器图134执行操作的非预测寄存器更名,预测的寄存器图800可指示任何作为储存操作的预测来源操作数之一的逻辑寄存器是否链接至特定的物理寄存器。若寄存器图储存器804中有一个逻辑寄存器来源的有效登录,则预测的寄存器图控制器802可输出储存于该逻辑寄存器的登录项中的物理寄存器名称。当该操作分派至调度装置118时,分派单元104可输出此预测的物理寄存器名称作为预测的来源。因此,若将ADD运算提供给预测的寄存器图800,且其中一个ADD的来源具有在预测的寄存器图储存器804中的有效的登录项,则在该登录项中的物理寄存器识别的标记可提供作为至调度装置118的预测的来源操作数标记。可配置调度装置以如上述般储存预测的和非预测的操作数标记,并在一些实施例中可配置成响应非预测的标记在结果总线上广播而再发出操作(如果已经发出了操作)。
可响应将修改对于特定的逻辑寄存器的数据值的指示,而使在预测映射内的登录项无效。举例而言,若通过分派单元104而处理操作ADD EAX,ECX,则预测的寄存器图控制器802可使当前指定给EAX的预测映射登录项无效,因为ADD运算将修改该寄存器值。
一般而言,每当一个操作的预测的结果链接到寄存器数据值时,则预测的操作数标记可提供给调度装置118。在一些实施例中,堆栈文件132和/或内存文件136以及追踪经过几个循环的依附性的结构(例如,如于下文中所描述的预测的寄存器图800)可被用来将预测结果链接至寄存器值。例如,分派单元104可产生用于操作的预测标记,以响应堆栈文件132或内存文件136识别一链接。在一些实施例中,可无须使用这种预测映射来产生预测标记。例如,一指令序列可包括:
ADD EBX,EBX(相加1(ADD1))
MOV[寻址模式A],EBX(储存1(STORE1))
ADD[寻址模式A],ECX(相加2(ADD2))
这些指令可以为连续指令(例如,他们可以以程序次序而彼此直接相随)。这些指令可以分离成下列的组成操作(将逻辑地址转译成实际地址而显示),且在执行内核124内执行:
ADD PR2,PR2,PR1(ADD1)
MOV[寻址模式A],PR2(STORE1)
MOV PR3,[寻址模式A](ADD2的加载)
ADD PR4,PR3,PR5(ADD2的相加)
MOV[寻址模式A],PR4(ADD2的储存)
在分配ADD2的组成的加载、相加和储存操作之前,分配单元104可检测由任何序列组成的操作之间是否有任何的依附性以允许预测的结果的链接。此外,由STORE1所储存的数据可以链接至加载的预测结果(例如,通过堆栈文件)。因为没有插入操作,则分派单元可在同一个分派循环中具有所有需要用来检测加载操作与相加操作(由相同的指令导得的两个操作)之间依附性的所有的信息。根据这两个依附性,分配单元104可将由STORE1,PR2所储存的数据的标记链接至执行作为ADD2部分的加载操作的预测结果。此预测的链接可接着允许分派单元将执行作为ADD2部分的加法运算的来源链接至储存于PR2中的值。因此,分配单元104可输出指示PR2可预测地用作加法操作的操作数的其中一个来源,而PR3为该操作数的非预测的来源。因此,在一个实施例中,可通过分派单元而输出的操作和操作数识别符如下:
ADD PR2,PR2,PR1(ADD1)
MOV[寻址模式A],PR2(STORE1)
MOV PR3,[寻址模式A](ADD2的加载)
ADD PR4,PR2*,PR3,PR5(ADD2的相加,其中PR2*为用于ECX的预测的来源,且PR3为用于ECX的非预测的来源)
MOV[寻址模式A],PR4(ADD2的储存)
在其它实施例中,分配单元104可不配置成为根据加载操作的操作识别预测的来源操作数。取而代之,如图8中所示,分配单元104可包括操作转换器108,配置将加载操作转换成为一个或多个的包括寄存器至寄存器移动操作的操作,以便将预测的加载结果提供给依附的操作。执行加载操作的转换以响应链接存在于加载操作的预测结果和由特定的物理寄存器名称所识别的数据值之间的指示。在一些实施例中,此指示由链接检测器182所提供,该链接检测器182可包括堆栈文件132和/或内存文件136。在其它的实施例中,链接检测器182可包括配置以响应诸如条件移动操作而链接数据值的逻辑,如上所述。
在一个实施例中,操作转换器180可接收用于操作的输入运算码,以及是否检测到寄存器值和操作的预测的结果之间的链接的指示。若该操作为加载并已检测到预测的链接,则操作转换器180可输出一个寄存器至寄存器移动操作的运算码。分派单元104可使用通过链接检测单元182输出的标记作为寄存器至寄存器移动的来源操作数标记,而分派寄存器至寄存器移动操作。
在一些实施例中,可配置操作转换器180以分派所得的寄存器至寄存器移动,而使得调度装置在寄存器至寄存器移动操作的登录项中储存所需用于寄存器至寄存器移动和原来加载操作的操作数标记。这使得若检测到寄存器至寄存器移动操作的预测结果为不正确的话,则可再发出操作作为原来的加载操作。为了执行此操作,额外的来源操作数可加至从修改的加载操作获得的各寄存器至寄存器移动操作(或者,在一替代实施例中,可修改已经存在的来源操作数以执行此操作)。在一些实施例中,可通过执行原始加载地址的计算和/或比较链接的数据值与实际加载结果数据值而验证寄存器至寄存器移动操作的预测结果。若该预测结果为不正确,则可存取该数据高速缓存以便获得正确的加载结果。再广播更正的加载结果可引起调度装置118再发出任何使用不正确值所执行的依附操作。
在一些实施例中,可配置操作转换器180以将加载操作转换成双重性操作。如同加载操作,此双重性操作可包含地址计算和数据移动。而不同于加载操作,由双重性操作所起始的数据移动为寄存器至寄存器移动。再者,由双重性操作所起始的数据移动可在地址计算已经完成之前发生。可使用地址计算以验证预测的链接是否为正确。若预测的链接为不正确,则可再发出双目的操作作为正常的加载操作,和当完成数据高速缓存存取时,其结果可再广播至依附的操作。
下列的例子显示不同的实施例如何可以转换此示例性序列操作:
ADD PR2,PR1,PR1(ADD1)
STORE[寻址模式A],PR2(STORE1)
LOAD PR3,[寻址模式A](LOAD1)
ADD PR4,PR3,PR3(ADD2)
在此序列中,特定的操作可由一个或多个插入操作而分离。然而,假设没有插入操作出现来修改用于寻址模式A的值,或者修改储存在从寻址模式A所计算的地址和在PR2中的数据值,则可检测到储存于PR2中的数据值和从寻址模式A所计算的地址之间的预测的链接。
在一个实施例中,为响应通过预测链接检测器182的预测链接检测,操作转换器180可转换LOAD1成为双目的移动操作:MOV PR3,PR2。除了指明寄存器来源和目的地以外,此双目的移动操作也可指明寻址模式A,而使得可执行对于LOAD1的地址计算。然而,一旦可得到ECX后,即可立即发出双目的移动操作的移动部分。一旦广播双部分操作的移动部分的结果后,可使用移动操作的预测结果作为操作数而发出ADD2。当执行地址计算时,可验证预测链接。若该预测的链接为不正确,则加载/储存单元可提供指示至调度装置,该指示使得调度装置再发出双目的移动操作以作为加载操作。可广播加载操作的结果,而导致再发出诸如ADD2的任何已使用移动预测结果执行的依附操作。值得注意的是,可使用单一调度装置登录项而调度此双目的操作,且调度装置118可选择双目的操作用于发出二次:一次用于加载的地址计算和一次用于寄存器至寄存器移动。
在一个替代实施例中,操作转换器180可响应检测到的预测链接,而将LOAD1转换成为两个链接的操作,LOAD PR3,[寻址模式A]和MOVPR3,PR2。不像先前包含双目的操作的例子,这些链接操作可各自取得在调度装置118中的登录项,以代替共享单一调度装置登录项。当寄存器至寄存器移动操作发出时,诸如ADD2的依附操作可使用PR3的预测值作为操作数值而发出。可标记LOAD操作作为特定类型的加载操作,而使得若决定该预测的链接正确时,不广播该加载的结果标记(或者,广播该移动的结果为正确,和依附操作不应再发出的指示)。同时,若加载和移动操作在同一循环中广播他们的结果,则可提供一指示而使得加载结果用于依附操作而不是移动的结果。在一些实施例中,这种情况可通过加上额外的位至微处理器100内的各标记总线而发生,该位指示调度装置将对哪一个标记响应。若预测链接为不正确(例如,当通过加载的结果标记的广播所指示),则可取消移动操作(例如,调度该移动操作的调度装置118可解除分配当前用于分配该寄存器至寄存器移动的该调度装置登录项,而使得该操作不能再发出)。在许多实施例中,可配置调度装置再发出任何使用预测加载结果执行的依附操作,若加载结果标记再出现于结果总线上。在一个替代实施例中,可配置调度装置118成同时发出两个链接的操作。在这样的实施例中,两个链接的操作可使用读取端口进入物理寄存器堆,该物理寄存器堆否则将由原来的未修正的LOAD1操作所使用。
图9显示转换加载操作以包括预测的寄存器至寄存器移动操作的一个方法的实施例。如图中所示,在步骤1401,若检测到由特定标记所识别的寄存器数据值与加载操作的预测结果之间的链接(例如,通过堆栈文件或内存文件),则可修改加载操作以包括具有来源操作数标记等于链接到预测加载结果的数据值的标记的寄存器至寄存器移动操作,如在步骤1403所示。在步骤1405,寄存器至寄存器移动操作的执行可包含输出该标记所识别的数据值以及加载结果的标记到结果总线上。
在步骤1409可验证预测结果(例如,通过执行对于原来加载的地址计算)。若预测结果为正确,则加载的结果可不再广播到结果总线上(或可取而代之,可再广播加载的结果,并伴随着依附操作不应响应再广播的结果而再发出的指示)。若预测结果为不正确,则可存取数据高速缓存以恢复正确的加载结果,且正确的加载结果可广播于结果总线上。这可接着造成任何使用预测结果值的已发出依附操作再发出。值得注意的是,在一些情况下,在执行寄存器至寄存器移动操作之前,可验证预测结果。若预测结果为不正确,则不执行寄存器至寄存器移动操作。
若加载操作的预测结果和寄存器数据值之间未检测到链接(例如,加载的地址模式在堆栈文件中未命中),则可不修改加载。加载可正常地执行,存取该数据高速缓存并将其结果广播于结果总线上,如步骤1417和1419所示。
追踪缓存
图1A显示根据一个实施例的微处理器。在此实施例中,微处理器包括追踪缓存160,该追踪缓存160配置以高速缓存指令的轨迹(trace)和/或至少部分的译码操作。在所示实施例中,追踪缓存160位于微处理器的后端,而使得当各操作被退除时,通过追踪填充单元(trace fillunit)162而建立轨迹。若再取出轨迹内的操作时,可从追踪缓存160取出操作而不从指令高速缓存106或系统内存200取出操作。值得注意的是在其它实施例中,追踪填充单元162可包含在微处理器的前端(例如,在分派单元104之前)。
图10显示追踪缓存160的一个实施例。如图中所示,追踪缓存160可包括一个或多个追踪缓存登录项170。各追踪缓存登录项170储存指令或操作的轨迹172。轨迹172可包括从多于一个的基本区段来的几个指令或操作。在特定轨迹内的一些操作可根据包括在轨迹内的一个或多个分支操作,而在同一轨迹内的其它操作可不根据这些分支操作。在一些实施例中,轨迹172也可包括流程控制信息以识别包含于各轨迹内的各操作是否根据包含在该轨迹内的一个或多个分支操作,是否在建立轨迹时也取得这些分支操作,且当下一次执行分支操作时,若分支操作以不同方式分解的话,包括一卷标以识别控制将转换到的操作或指令。
各轨迹可包括已优化的操作。优化可包括减少轨迹内的操作的大小和/或数目,而使得在该轨迹内的操作占用追踪缓存登录项170和/或调度装置118内较少的空间。优化还造成轨迹内的一个或多个操作变成可较早发出(例如,通过减少在相同轨迹中各操作间的数据依附性)等等。
若有任何由于执行该轨迹172内的指令和/或操作而造堆栈指针(例如,ESP)的改变,各追踪缓存登录项170可包括指示该改变的信息174。当处理包含于轨迹内的各操作时,堆栈文件控制器202(或内存文件控制器402,若内存文件136执行堆栈文件功能的话)可使用此信息以更新该堆栈指针寻址调整值,调整输入到该堆栈文件的各操作的寻址模式,和/或调整在堆栈文件储存器内的登录项的寻址模式。举例而言,包括各加4至堆栈指针值的三个操作的追踪缓存登录项170当分派这三个操作时,可指示该堆栈和/或内存文件控制器应加12至堆栈指针寻址模式调整值。若另一个操作设定堆栈帧指针等于堆栈指针,则当分派该操作时,追踪缓存登录项170可包括指示堆栈和/或内存文件控制器应设定补偿值等于0的信息(或设定该堆栈帧指针寻址模式调整值等于堆栈指针寻址模式调整值)。
在各追踪缓存登录项170中包含指示对该堆栈指针和/或堆栈帧指针改变的信息174,可使该堆栈和/或内存文件保持正确,甚至在分派几个轨迹以后。没有此信息,轨迹内各操作的优化在堆栈和/或内存文件处理这些优化操作后,可能造成堆栈和/或内存文件内的错误。举例而言,指令序列可包括:
PUSH<>
MOV EBP,ESP
PUSH<>
这些指令可分解成下列的操作序列:
MOV[ESP-4],<>
ADD ESP,ESP,-4
MOV EBP,ESP
ADD ESP,ESP,-4
MOV[ESP],<>
值得注意的是几乎所有的上述操作皆根据由先前操作所产生的数据值。因此,当等待先前操作的结果出来时,这些操作在调度装置中有极大可能无法进行。当追踪填充单元162处理该一连串操作,以储存作为追踪缓存登录项170内轨迹172的一部分时,追踪填充单元162可执行某些转换以便减少各操作之间的数据依附性。例如,上述的操作序列可优化为:
MOV[ESP-4],<>
ADD o1,ESP,-4
MOV EBP,o1
ADD[ESP-8],<>
ADD ESP,ESP,-8
此外,信息174指示在轨迹内有共-8的ESP偏移,和+4的ESP-ESP偏移可包括在追踪缓存登录项170中。追踪填充单元162可在当处理各原来的操作时一次更新一个操作信息,和在包括优化操作的轨迹172的追踪缓存登录项170中储存最后值。
由于执行于各操作的转换,在上述例子中的各优化操作现仅根据ESP值。因此,一旦可取得ESP值时,在轨迹中的所有的操作就立刻变成可发送。然而,某些优化,诸如在ADD运算中将ESP“定位置(slotified)”至暂时寄存器o1的一个优化,会模糊信息,该信息否则将由堆栈和/或内存文件控制器所使用以维持堆栈和/或内存文件的正确性。在此示例性中,定位置转换(slotification transformation)隐藏MOV EBP,01操作实际上指定从堆栈和/或内存文件控制器来的堆栈指针的值给EBP的事实,该内存文件控制器可配置成仅通过比较寄存器逻辑识别符而检测此指定。由于轨迹172内操作的执行,包含在追踪缓存登录项170内的信息174指示可通过堆栈和/或内存文件控制器而使用ESP-EBP偏移等于+4,以适当地调整寻址模式调整值、寻址模式和/或偏移值,以响应对该轨迹中操作的处理。
因此,在一些实施例中,优化诸如上述的定位置转换可导致一些操作将以某种格式储存于追踪缓存登录项170内,该格式在堆栈和/或内存文件中将不会被辨认出来,即使可通过在堆栈和/或内存文件中命中或通过引起更新一个或多个寻址模式、寻址模式调整值、和/或偏移值而辨认出这些操作的未优化形式。不管这些操作有多混乱,然而,由于信息174包含于各追踪缓存登录项170内,堆栈和/或内存文件可保持正确。
若从多于一个基本区段来的操作包含于轨迹内,则该轨迹可包括对应同一基本区段内各组操作的信息174。堆栈和/或内存文件控制器可根据与各调整值相关联的基本区段是否分派和/或预测将要(或实际地)执行,而使用各组的信息174。例如,轨迹可包括从两个不同的基本区段和每一群组操作的一组信息174。第二组操作的执行可取决于包含于第一组操作中的一个分支的采取。当分派该轨迹时,若预测未采取该分支,则堆栈和/或内存文件控制器可使用与第一组操作相关联的信息174来作调整。然而,堆栈和/或内存文件控制器可忽略关联于另一组操作的信息174,因为该分支预测指示将不执行这些操作。
示例性计算机系统
图11显示计算机系统400的一个实施例的方框图。该计算机系统400包括处理器100,该处理器100经由总线桥接器402联接到各种系统组件。处理器100可包括如上述的分派单元104、堆栈文件132、调度装置118、和/或预测寄存器图800的实施例。可能并考虑有计算机系统的其它实施例。在所述系统中,主存储器200经由内存总线406联接到总线桥接器402,图形控制器408经由AGP总线410联接到总线桥接器402。几个PCI装置412A至412B经由PCI总线414联接到总线桥接器402。也可设有第二总线桥接器416以容纳经由EISA/ISA总线430至一个或多个EISA或ISA装置418的电接口。在此例子中,处理器100经由CPU总线424而联接至总线桥接器402,并联接至可选的L2高速缓存428。在一些实施例中,处理器100可包括集成L1高速缓存(图中未显示)。
总线桥接器402提供处理器100、主存储器404、图形控制器408、和附接到PCI总线414的各装置之间的接口。当从连接到总线桥接器402的其中一个装置接收操作时,总线桥接器402识别该操作的目标(例如,特定的装置,或在PCI总线414的情况时,该目标是在PCI总线414上)。总线桥接器402将操作路由至该目标装置。总线桥接器402通常将操作从由来源装置或总线所使用的协议转译至由该目标装置或总线所用的协议。
除了为PCI总线414提供至ISA/EISA总线的接口之外,第二总线桥接器416可合并额外的功能。第二总线桥接器416的外部或与第二总线桥接器416集成的输入/输出控制器(图中未显示)也可包括于计算机系统400内,以提供用于键盘和鼠标422和用于各种串行和并列端口的操作支持。在其它的实施例中,外部的高速缓存单元(图中未显示)也可联接至处理器100与总线桥接器402之间的CPU总线424。或可选择的,外部高速缓存可联接至总线桥接器402,且用于外部高速缓存的高速缓存控制逻辑可集成到总线桥接器402中。L2高速缓存428以背面结构(backside configuration)联接至处理器100。应注意的是L2高速缓存428可与处理器100分离,与处理器100集成到一卡盒(例如,插槽1或插槽A)中,或甚至与具有处理器100的半导体基板集成。
主存储器200为应用程序储存于其中且处理器100可从该主存储器200取得应用程序而首先执行的内存。适当的主存储器200包括动态随机存取存储器(DRAM)。例如,可适合使用多个库(bank)的同步动态随机存取存储器(SDRAM)或Rambus公司的Rambus动态随机存取存储器(RDRAM)。
PCI装置412A至412B示出了多种外围设备,诸如网络接口卡、视频加速器、音频卡、硬盘或软盘驱动器或驱动控制器、小型计算机系统接口(SCSI)适配器和电话卡。同样地,ISA装置418为例示的各种类型的外围设备,诸如调制解调器、声卡、和诸如GPIB或现场总线接口卡的各种的数据采集卡。
图形控制器408提供用来控制显示器426上文字内容和影像的显现。图形控制器408可具体实现本领域技术人员已知的典型的图形加速器,以显现能有效地移入主存储器200和从主存储器200移出的三维数据结构。图形控制器408因此可以是AGP总线410的主控者,其中该图形控制器408可请求和接收对总线桥接器402内的目标接口的存取,由此获得对主存储器200的存取。专用图形总线允许从主存储器404快速取得数据。对某些操作而言,图形控制器408可进一步配置以在AGP总线410上产生PCI协议事项。因此总线桥接器402的AGP接口可包括支持AGP协议事项以及PCI协议目标和起始端事项的功能。显示器426为影像和文字内容可呈现于其上的任何的电子显示器。适当的显示器426包括阴极射线管(CRT)、液晶显示器(LCD)等等。
值得注意的是,虽然在上述说明中AGP、PCI、和ISA或EISA总线已作为示例给出,但是当需要时可用任何总线架构替代。还值得注意的是,计算机系统400可以是包括额外处理器(例如,处理器100a显示为计算机系统400的可选组件)的多重处理计算机系统。处理器100a可与处理器100类似。具体来说,处理器100a可以是处理器100的相同的复制品。处理器100a可经由独立总线(如图11中所示)而连接至总线桥接器402,或可与处理器100共享CPU总线424。再者,处理器100a可联接至与L2高速缓存428相似的L2高速缓存428a。
现在参照图12,其显示计算机系统400的另一个实施例,该计算机系统400可包括如上述的分派单元104、堆栈文件132、调度装置118、和/或预测寄存器图800。也存在并考虑其它的实施例。在图12所示的实施例中,计算机系统400包括几个处理节点612A、612B、612C、和612D。各处理节点经由包括在各自处理节点612A至612D内的内存控制器616A至616D而联接至各自的内存614A至614D。此外,处理节点612A至612D包括用于处理节点612A至612D之间通讯的接口逻辑。举例而言,处理节点612A包括用来与处理节点612B通讯的接口逻辑618A,用来与处理节点612C通讯的接口逻辑618B,和用来与又一处理节点(图中未显示)通讯的第三接口逻辑618C。同样地,处理节点612B包括接口逻辑618D、618E、和618F;处理节点612C包括接口逻辑618G、618H、和618I;及处理节点612D包括接口逻辑618J、618K、和618L。处理节点612D被联接以经由接口逻辑618L而与多个输入/输出装置(例如,以菊链配置的装置620A至620B)通讯。其它的处理节点可用相似的方式而与其它的输入/输出装置通讯。
处理节点612A至612D执行基于分组的链接,用于处理节点间通讯。在本实施例中,该链接以数组的单向线路来实施(例如,线路624A用来将分组从处理节点612A传输至处理节点612B,和线路624B用来将分组从处理节点612B传输至处理节点612A)。如图12中所示,其它组的线路624C至624H用来在其它的处理节点之间传输分组。一般而言,线路624的各组可包括一条或多条的数据线,一条或多条对应于这些数据线的时钟线、和一条或多条指示传输的分组的类型的控制线。对于处理节点之间的通讯,链接可以高速缓存一致性的方式操作,或对于处理节点和输入/输出装置之间的通讯,链接可以非一致性的方式操作(或至诸如PCI总线或ISA总线的公知结构的输入/输出总线的总线桥接器)。再者,链接可使用如所示的输入/输出装置之间的菊链结构而以非一致性的方式操作。应注意的是从一个处理节点传输至另一个处理节点的分组可通过一个或多个的中间节点。举例而言,如图12中所示,通过处理节点612A传输至处理节点612D的分组可通过处理节点612B或处理节点612C。可使用任何适当的路由算法。计算机系统400的其它实施例可包括较图12中所示实施例中更多或更少的处理节点。
一般而言,分组在各节点之间的线路624上可传输为一个或多个位时间。位时间可以是在对应时钟线上时钟信号的上升沿或下降沿。分组可包括用于起始事项的命令分组、用于维持高速缓存一致性的探测分组、和响应探测和命令而来的响应分组。
处理节点612A至612D除了内存控制器和接口逻辑以外,还可包括一个或多个处理器。广义而言,处理节点包括至少一个处理器和当需要时可选择性地包括用于与内存和其它逻辑通讯的内存控制器。具体来说,各处理节点612A至612D可包括一个或多个处理器100的复制品。外部接口单元18可包括节点内的接口逻辑618,以及内存控制器616。
内存614A至614D可包括任何适当的内存装置。例如,内存614A至614D可包括一个或多个RAMBUS DRAM(RDRAM)、同步DRAM(SDRAM)、静态RAM等。计算机系统400的地址空间在内存614A至614D之间划分。各处理节点612A至612D可包括用来决定哪一个地址映射至614A至614D中哪一个内存的内存映射,而因此对于特定地址的内存请求将路由到处理节点612A至612D中的该个处理节点。在一个实施例中,计算机系统400内的地址的一致点为联接到对应于该地址的内存储存字节的内存控制器616A至616D。换言之,内存控制器616A至616D负责确保对应内存614A至614D的各内存存取以高速缓存一致性的方式发生。内存控制器616A至616D可包括控制电路,用来连接到内存614A至614D。此外,内存控制器616A至616D可包括用于队列内存请求的请求队列。
接口逻辑618A至618L可包括用于接收从链路来的分组的各种缓冲器,和用于缓冲将根据链接而发送的分组。计算机系统400可使用任何适当的用于传输分组的流程控制机制。举例而言,在一个实施例中,各接口逻辑618储存由接口逻辑所连接到的链接另一端的接收器内各类型缓冲器的计数数目。接口逻辑并不传送分组,除非接收接口逻辑具有闲置的缓冲器以储存分组。当通过路由出分组而空出接收缓冲器时,接收接口逻辑传输一信息至发送接口逻辑以指示缓冲器已经闲置。如此的机制可称之为“连动式(coupon-based)”系统。
输入/输出装置620A至620B可以是任何适当的输入/输出装置。举例而言,输入/输出装置620A至620B可包括用于与另一计算机系统通讯的各装置,这些装置(例如,网络接口卡或调制解调器)可联接至该另一计算机系统。再者,输入/输出装置620A至620B可包括视频加速器、音频卡、硬盘或软盘驱动器或驱动控制器、小型计算机系统接口适配器和电话卡、声卡、和诸如GPIB或现场总线接口卡的各种数据采集卡。值得注意的是术语“输入/输出装置”和术语“外围设备”在此文中有相同的意义。
在此所使用的“时钟周期”或“周期”二词是指时间间距,在此时间间距期间各种阶段的指令处理管线完成其工作。内存组件(比如寄存器或数组)根据定义时钟周期的时钟信号而获取各指令和计算的值。例如,内存组件可根据时钟信号的上升沿或下降沿而获取数值。
本领域技术人妖一旦完全了解本发明上述揭示内容后,显然可对其作许多的变更和修饰。下列权利要求范围将被解释为包含所有的这些变化和修饰。
产业利用性
本发明通常应用于微处理器领域。

Claims (10)

1.一种系统(100),包括:
内存文件(136),该内存文件(136)包括配置以储存寻址模式(406)和标记(408)的登录项(420),其中若内存操作的寻址模式匹配储存于该登录项(420)中的该寻址模式(406),则该内存文件(136)配置以链接由该标记(408)所识别的数据值至该内存操作的预测结果,以及
执行内核(124),其联接至该内存文件(136),其中该执行内核(124)配置成当执行依附于该内存操作的另一操作时,存取该预测结果;
其中该内存操作的该寻址模式包括逻辑寄存器的识别符,和其中该内存文件(136)配置成预测该逻辑寄存器是否被指定为通用寄存器或堆栈帧指针寄存器,以便判定该内存操作的寻址模式是否匹配储存于该登录项(420)中的寻址模式(406)。
2.根据权利要求1所述的系统(100),其中,若该内存文件(136)预测包含于该内存操作的寻址模式中的逻辑寄存器正被用作该堆栈帧指针寄存器,则该内存文件(136)可配置成判定该内存操作的寻址模式并不匹配储存于该登录项(420)中的寻址模式(406);以及
若该内存文件(136)预测该逻辑寄存器正被用作该通用寄存器,则该内存文件(136)可配置成,假使该内存操作的寻址模式等于储存于该登录项中(420)的寻址模式,那么判(406)定该内存操作的寻址模式匹配储存于该登录项中(420)的寻址模式(406)。
3.根据权利要求1所述的系统(100),其中该内存文件(136)配置成通过追踪目前的调用深度来预测该逻辑寄存器如何被使用,其中该内存文件(136)可配置成当检测到调用指令时增加该目前的调用深度,和当检测到返回指令时减少该目前的调用深度。
4.根据权利要求1所述的系统(100),其中该内存文件(136)包括其它的登录项(420),其中该其它的登录项(420)储存与堆栈有关的寻址模式,其中该内存文件(136)包括补偿堆栈指针调整的机制,和其中该内存文件(136)配置成当判定了操作的寻址模式是否匹配储存于该其它登录项(420)中与堆栈有关的寻址模式时,使用该机制来补偿对该堆栈指针的调整。
5.根据权利要求1所述的系统(100),其中该内存文件(136)被配置成修改堆栈帧指针寻址模式调整值,以响应一操作的分派,其中该分派的操作被执行时修改该堆栈帧指针的值;以及
其中,该内存文件(136)配置成在比较该内存操作的寻址模式与储存于该登录项(420)中的该寻址模式(406),以便判定该内存操作的该寻址模式是否匹配储存于该登录项(420)中的该寻址模式(406)之前,将该堆栈帧指针寻址模式调整值应用到该内存操作的寻址模式。
6.一种方法,包含:
预测识别于内存操作的寻址模式中的逻辑寄存器是否正被用作通用寄存器或堆栈帧指针寄存器;
根据该预测,判定该内存操作的寻址模式是否匹配早先操作的寻址模式;
若该内存操作的寻址模式匹配早先操作的寻址模式,则将通过较早操作的操作数标记所识别的数据值链接至该内存操作的预测结果;以及
执行具有操作数来源根据该内存操作的结果的操作,其中该执行步骤包括存取由该标记所识别的该数据值。
7.根据权利要求6所述的方法,其中,若该预测步骤预测包含于该内存操作的寻址模式中的逻辑寄存器正被用作该堆栈帧指针寄存器,则该判定步骤包括判定该内存操作的寻址模式并不匹配该较早操作的寻址模式;以及
其中若该预测步骤预测该逻辑寄存器正被用作该通用寄存器,而若该内存操作的寻址模式等于该较早操作的寻址模式,则该判定步骤包括判定该内存操作的寻址模式匹配该较早操作的寻址模式。
8.根据权利要求6所述的方法,其中该预测步骤包括当检测到调用指令时增加该目前调用深度,和当检测到返回指令时减少该目前调用深度,从而追踪目前调用深度。
9.根据权利要求6所述的方法,其中该较早操作的寻址模式储存于内存文件(136)中的登录项(420)中,和其中与堆栈相关寻址模式储存于内存文件(136)中的另一登录项(420)中;
该方法进一步包括通过追踪堆栈指针的修改,而判定操作的寻址模式是否匹配与堆栈相关寻址模式。
10.一种计算机系统(400),包括:
系统内存(200);以及
微处理器(100),其联接至该系统内存(200);
其特征在于:
该微处理器(100)包含内存文件(136),该内存文件(136)包括配置以储存寻址模式(406)和标记(408)的登录项(420);
该微处理器(100)还包括执行内核(124),该执行内核(124)联接至该内存文件(136);
若内存操作的寻址模式匹配储存于该登录项(420)中的寻址模式(406),则该内存文件(136)配置成将由该标记(408)所识别的数据值链接到该内存操作的预测结果;
该执行内核(124)配置成当执行依附于该内存操作的另一操作时,存取该预测结果;
该内存操作的寻址模式包括逻辑寄存器的识别符;以及
该内存文件(136)配置成预测该逻辑寄存器是否被指定为通用寄存器或堆栈帧指针寄存器,以便判定该内存操作的寻址模式是否匹配储存于该登录项(420)中的寻址模式(406)。
CN2004800025925A 2003-01-21 2004-01-09 用于数据预测的系统及方法 Expired - Fee Related CN1742257B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/348,144 US7024537B2 (en) 2003-01-21 2003-01-21 Data speculation based on addressing patterns identifying dual-purpose register
US10/348,144 2003-01-21
PCT/US2004/000477 WO2004068341A1 (en) 2003-01-21 2004-01-09 Data speculation based on addressing patterns identifying dual-purpose register

Publications (2)

Publication Number Publication Date
CN1742257A true CN1742257A (zh) 2006-03-01
CN1742257B CN1742257B (zh) 2010-04-28

Family

ID=32712491

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004800025925A Expired - Fee Related CN1742257B (zh) 2003-01-21 2004-01-09 用于数据预测的系统及方法

Country Status (8)

Country Link
US (1) US7024537B2 (zh)
EP (1) EP1586029B1 (zh)
JP (1) JP4538462B2 (zh)
KR (1) KR101019224B1 (zh)
CN (1) CN1742257B (zh)
DE (1) DE602004015568D1 (zh)
TW (1) TWI333629B (zh)
WO (1) WO2004068341A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104793920A (zh) * 2014-01-17 2015-07-22 想象力科技有限公司 堆栈指针值预测
CN107710153A (zh) * 2015-07-09 2018-02-16 森蒂彼得塞米有限公司 具有有效的存储器访问的处理器

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7227994B2 (en) * 2003-03-20 2007-06-05 International Business Machines Corporation Method and apparatus for imbedded pattern recognition using dual alternating pointers
US7366352B2 (en) * 2003-03-20 2008-04-29 International Business Machines Corporation Method and apparatus for performing fast closest match in pattern recognition
US7003629B1 (en) * 2003-07-08 2006-02-21 Advanced Micro Devices, Inc. System and method of identifying liveness groups within traces stored in a trace cache
US7133969B2 (en) * 2003-10-01 2006-11-07 Advanced Micro Devices, Inc. System and method for handling exceptional instructions in a trace cache based processor
US7555633B1 (en) 2003-11-03 2009-06-30 Advanced Micro Devices, Inc. Instruction cache prefetch based on trace cache eviction
US20050114627A1 (en) * 2003-11-26 2005-05-26 Jacek Budny Co-processing
US8069336B2 (en) * 2003-12-03 2011-11-29 Globalfoundries Inc. Transitioning from instruction cache to trace cache on label boundaries
US7213126B1 (en) 2004-01-12 2007-05-01 Advanced Micro Devices, Inc. Method and processor including logic for storing traces within a trace cache
US7197630B1 (en) 2004-04-12 2007-03-27 Advanced Micro Devices, Inc. Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
US7365007B2 (en) * 2004-06-30 2008-04-29 Intel Corporation Interconnects with direct metalization and conductive polymer
US7415597B2 (en) 2004-09-08 2008-08-19 Advanced Micro Devices, Inc. Processor with dependence mechanism to predict whether a load is dependent on older store
US7870541B1 (en) * 2004-11-01 2011-01-11 Wind River Systems, Inc. Context tracing for software with a frame pointer and a stack pointer and with a stack pointer but without a frame pointer
US7831811B2 (en) * 2005-10-31 2010-11-09 Intel Corporation System and method for managing a register-based stack of operand tags
US7624253B2 (en) * 2006-10-25 2009-11-24 Arm Limited Determining register availability for register renaming
US7730289B2 (en) * 2007-09-27 2010-06-01 Faraday Technology Corp. Method for preloading data in a CPU pipeline
US8458671B1 (en) * 2008-02-12 2013-06-04 Tilera Corporation Method and system for stack back-tracing in computer programs
US20100070730A1 (en) * 2008-09-17 2010-03-18 Sebastian Pop Minimizing memory access conflicts of process communication channels
US8935574B2 (en) 2011-12-16 2015-01-13 Advanced Micro Devices, Inc. Correlating traces in a computing system
US8832500B2 (en) 2012-08-10 2014-09-09 Advanced Micro Devices, Inc. Multiple clock domain tracing
US8959398B2 (en) 2012-08-16 2015-02-17 Advanced Micro Devices, Inc. Multiple clock domain debug capability
US9411590B2 (en) * 2013-03-15 2016-08-09 Qualcomm Incorporated Method to improve speed of executing return branch instructions in a processor
US9164697B2 (en) * 2013-06-24 2015-10-20 Samsung Electronics Co., Ltd. Method and architecture for highly scalable data storage
US9524164B2 (en) * 2013-08-30 2016-12-20 Advanced Micro Devices, Inc. Specialized memory disambiguation mechanisms for different memory read access types
US10162526B2 (en) * 2015-10-20 2018-12-25 Micron Technology, Inc. Logical address history management in memory device
US10157268B2 (en) * 2016-09-27 2018-12-18 Microsoft Technology Licensing, Llc Return flow guard using control stack identified by processor register
US10884747B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Prediction of an affiliated register
US10884746B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Determining and predicting affiliated registers based on dynamic runtime control flow analysis
US10534609B2 (en) 2017-08-18 2020-01-14 International Business Machines Corporation Code-specific affiliated register prediction
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
US11150904B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Concurrent prediction of branch addresses and update of register contents
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
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
US11061575B2 (en) 2017-09-19 2021-07-13 International Business Machines Corporation Read-only table of contents register
US10725918B2 (en) 2017-09-19 2020-07-28 International Business Machines Corporation Table of contents cache entry having a pointer for a range of addresses
US10884929B2 (en) 2017-09-19 2021-01-05 International Business Machines Corporation Set table of contents (TOC) register instruction
US10705973B2 (en) 2017-09-19 2020-07-07 International Business Machines Corporation Initializing a data structure for use in predicting table of contents pointer values
US10620955B2 (en) 2017-09-19 2020-04-14 International Business Machines Corporation Predicting a table of contents pointer value responsive to branching to a subroutine
US10713050B2 (en) 2017-09-19 2020-07-14 International Business Machines Corporation Replacing Table of Contents (TOC)-setting instructions in code with TOC predicting instructions
US10896030B2 (en) 2017-09-19 2021-01-19 International Business Machines Corporation Code generation relating to providing table of contents pointer values
US10185595B1 (en) * 2018-06-04 2019-01-22 Confia Systems, Inc. Program verification using hash chains

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5127103A (en) * 1987-10-14 1992-06-30 North American Philips Corporation Real-time tracing of dynamic local data in high level languages in the presence of process context switches
US5778219A (en) * 1990-12-14 1998-07-07 Hewlett-Packard Company Method and system for propagating exception status in data registers and for detecting exceptions from speculative operations with non-speculative operations
US5428807A (en) * 1993-06-17 1995-06-27 Digital Equipment Corporation Method and apparatus for propagating exception conditions of a computer system
US5584009A (en) * 1993-10-18 1996-12-10 Cyrix Corporation System and method of retiring store data from a write buffer
US6237082B1 (en) * 1995-01-25 2001-05-22 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received
US5892936A (en) * 1995-10-30 1999-04-06 Advanced Micro Devices, Inc. Speculative register file for storing speculative register states and removing dependencies between instructions utilizing the register
US6108769A (en) * 1996-05-17 2000-08-22 Advanced Micro Devices, Inc. Dependency table for reducing dependency checking hardware
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US5781752A (en) * 1996-12-26 1998-07-14 Wisconsin Alumni Research Foundation Table based data speculation circuit for parallel processing computer
US6021485A (en) * 1997-04-10 2000-02-01 International Business Machines Corporation Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching
US5845103A (en) * 1997-06-13 1998-12-01 Wisconsin Alumni Research Foundation Computer with dynamic instruction reuse
US6065103A (en) * 1997-12-16 2000-05-16 Advanced Micro Devices, Inc. Speculative store buffer
US6044430A (en) * 1997-12-17 2000-03-28 Advanced Micro Devices Inc. Real time interrupt handling for superscalar processors
US6112296A (en) * 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Floating point stack manipulation using a register map and speculative top of stack values
US6175910B1 (en) * 1997-12-19 2001-01-16 International Business Machines Corportion Speculative instructions exection in VLIW processors
JPH11212788A (ja) * 1998-01-28 1999-08-06 Toshiba Corp プロセッサのデータ供給装置
US6202204B1 (en) * 1998-03-11 2001-03-13 Intel Corporation Comprehensive redundant load elimination for architectures supporting control and data speculation
US6108770A (en) * 1998-06-24 2000-08-22 Digital Equipment Corporation Method and apparatus for predicting memory dependence using store sets
US6463580B1 (en) * 1998-11-18 2002-10-08 Intel Corporation Parallel processing utilizing highly correlated data values
US6349382B1 (en) * 1999-03-05 2002-02-19 International Business Machines Corporation System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order
US6658554B1 (en) * 1999-03-09 2003-12-02 Wisconsin Alumni Res Found Electronic processor providing direct data transfer between linked data consuming instructions
US6266744B1 (en) * 1999-05-18 2001-07-24 Advanced Micro Devices, Inc. Store to load forwarding using a dependency link file
US6662280B1 (en) 1999-11-10 2003-12-09 Advanced Micro Devices, Inc. Store buffer which forwards data based on index and optional way match
US6438673B1 (en) * 1999-12-30 2002-08-20 Intel Corporation Correlated address prediction
US6643767B1 (en) * 2000-01-27 2003-11-04 Kabushiki Kaisha Toshiba Instruction scheduling system of a processor
DE10121792C2 (de) * 2000-05-26 2003-09-25 Ibm Universelle Ladeadresse/Wertevorhersageschema
US7028166B2 (en) 2002-04-30 2006-04-11 Advanced Micro Devices, Inc. System and method for linking speculative results of load operations to register values

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104793920A (zh) * 2014-01-17 2015-07-22 想象力科技有限公司 堆栈指针值预测
CN104793920B (zh) * 2014-01-17 2019-03-08 美普思技术有限责任公司 用于堆栈指针值预测的方法和装置
CN107710153A (zh) * 2015-07-09 2018-02-16 森蒂彼得塞米有限公司 具有有效的存储器访问的处理器

Also Published As

Publication number Publication date
CN1742257B (zh) 2010-04-28
EP1586029B1 (en) 2008-08-06
WO2004068341A1 (en) 2004-08-12
TWI333629B (en) 2010-11-21
JP2007504575A (ja) 2007-03-01
KR20050089030A (ko) 2005-09-07
JP4538462B2 (ja) 2010-09-08
US20040143721A1 (en) 2004-07-22
DE602004015568D1 (de) 2008-09-18
EP1586029A1 (en) 2005-10-19
KR101019224B1 (ko) 2011-03-04
US7024537B2 (en) 2006-04-04
TW200422948A (en) 2004-11-01

Similar Documents

Publication Publication Date Title
CN1742257A (zh) 基于识别寻址模式的双目的寄存器的数据预测机制
CN1310136C (zh) 使用猜测来源操作数以绕过装载/储存操作的系统与方法
CN1277207C (zh) 使用基于时间的断点调试计算机程序的方法和系统
CN1254739C (zh) 处理器和操作处理器的方法
CN100351810C (zh) 对特定指令类型的指令执行和数据访问计数的方法和系统
CN1148650C (zh) 数据处理系统、微处理器以及处理指令的方法
CN1095117C (zh) 存数指令结果的前送的方法和处理器
CN1658154A (zh) 早期修正分支指令预测错误的管线微处理器装置与方法
CN1194292C (zh) 具有改良的指令集体系结构的微处理器
CN1625733A (zh) 将装载操作的猜测结果与寄存器值相连接的系统与方法
CN1842767A (zh) 用于多个异常处理模型的中间表示
CN1629801A (zh) 产生早期指令结果的管线式微处理器、装置以及方法
CN1278226C (zh) 模拟装置、模拟方法
CN1613058A (zh) 配有jit编译器的虚拟计算机,操作所述计算机的方法以及包括所述虚拟计算机的终端设备
CN1099632C (zh) 处理系统和操作方法
CN1143774A (zh) 优化器
CN1469254A (zh) 处理器装置、使用它的信息处理装置、编译装置及其方法
CN1397874A (zh) 高速缓存的快取线选取目标地址的装置及方法
JP2009528637A (ja) リンク・スタックを修復するための方法および装置
CN1604049A (zh) 用于自主剖析应用程序的方法和设备
CN1604044A (zh) 用于指令和数据访问的选择性计数的方法和装置
CN1068445C (zh) 指令调度方法和寄存器竞争检查方法
US7139857B2 (en) Method and apparatus for handling interrupts
CN100343799C (zh) 产生流水线微处理器的早期状态标志的装置及方法
CN100351782C (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
ASS Succession or assignment of patent right

Owner name: GLOBALFOUNDRIES SEMICONDUCTORS CO., LTD

Free format text: FORMER OWNER: ADVANCED MICRO DEVICES CORPORATION

Effective date: 20100722

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: CALIFORNIA STATE, THE USA TO: GRAND CAYMAN ISLAND, BRITISH CAYMAN ISLANDS

TR01 Transfer of patent right

Effective date of registration: 20100722

Address after: Grand Cayman, Cayman Islands

Patentee after: Globalfoundries Semiconductor Inc.

Address before: American California

Patentee before: Advanced Micro Devices Inc.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100428

Termination date: 20170109

CF01 Termination of patent right due to non-payment of annual fee