CN1954290A - 验证将加载作业的推测结果连结到缓存器值的存储档案的系统及方法 - Google Patents

验证将加载作业的推测结果连结到缓存器值的存储档案的系统及方法 Download PDF

Info

Publication number
CN1954290A
CN1954290A CNA2004800429401A CN200480042940A CN1954290A CN 1954290 A CN1954290 A CN 1954290A CN A2004800429401 A CNA2004800429401 A CN A2004800429401A CN 200480042940 A CN200480042940 A CN 200480042940A CN 1954290 A CN1954290 A CN 1954290A
Authority
CN
China
Prior art keywords
load operations
mark
storage
load
data item
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
CNA2004800429401A
Other languages
English (en)
Other versions
CN100424635C (zh
Inventor
B·T·桑德尔
K·V·拉马尼
R·W·哈达德
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 US 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 CN1954290A publication Critical patent/CN1954290A/zh
Application granted granted Critical
Publication of CN100424635C publication Critical patent/CN100424635C/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, 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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
    • 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/3834Maintaining memory consistency
    • 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
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

Abstract

本发明揭示了一种用来将加载作业的推测结果连结到缓存器值的系统及方法。系统包含存储档案,该存储档案包含被设定成储存第一寻址式样及第一标记的数据项。该存储档案被设定成:将该第一寻址式样与加载作业的第二寻址式样比较,且若两者相符,则将该第一标记所识别的数据值连结到该加载作业的推测结果。该系统进一步包含:耦合到该存储档案的执行核心,且该执行核心被设定成于执行与该加载作业相依的第二作业时存取该推测结果;以及耦合到该存储档案的加载储存单元,且该加载储存单元被设定成执行一个或多个地址间的比较而验证该数据值与该加载作业的该推测结果间的连结。

Description

验证将加载作业的推测结果连结到缓存器值的存储档案的系统及方法
技术领域
本发明有关处理器的领域,尤有关执行在处理器中数据推测式的执行(data-speculative execution)。
背景技术
超纯量处理器(superscalar processor)通过同时执行多个指令,并使用与该等处理器的设计一致的可能达到的最短时钟周期,而实现高效能。然而,各指令间的数据及控制流相依性可能会限制可在任何特定时间发出的指令的数目。因此,一些处理器支持推测式执行,以便得到额外的效能增益。
一种类型的推测是控制流推测(control flow speculation)。控制流推测预测程控将进行的方向。例如,可将分支预测(branch prediction)用来预测是否将采取分支。可使用许多类型的分支预测,这些分支预测方法的范围自每次简单地作出相同的预测至维护程序中先前分支的复杂历史以便作出基于历史的预测。可利用硬件最佳化、编译器最佳化、或以上两者来帮助分支预测。可根据分支预测机制所提供的预测,而以推测方式提取(fetch)并执行指令。当最后评估了分支指令时,即可证实该分支预测。如果预测是错误的,则可宣告根据该错误的预测而以推测方式执行的任何指令是无效的。
曾被提出的另一种类型的推测是数据推测(data speculation)。例如,预测数据项目的值的值预测(value prediction)可能涉及观测数据中的式样以及根据这些式样而作出预测(例如,可观测指针计数器变量的先前值递增或递减的方式,而预测该指针计数器变量的值)。地址预测(address prediction)涉及数据位置的预测。又一种类型的数据推测称为存储系统乐观式存取(memory system optimism)。在多处理器系统中,当处理器在一致性检查(coherency checking)完成之前,使用来自该处理器的本地快取存储(local cache)的数据而以推测方式执行指令时,即发生存储系统乐观式存取。同样地,另一种类型的数据推测可容许加载作业(load)在该加载作业执行时具有未计算出的地址的储存作业(store)之前以推测方式执行,纵然该储存作业可能将数据储存到该加载作业所存取的相同地址也容许此种推测式执行。在所有这些类型的数据推测中,最后将评估根本的条件,而可证实或取消(undo)该推测。如果该推测是以错误结束,则可(利用更新后的及(或)非推测数据)重新执行使用推测数据而执行的指令。
因为推测可无须等候相依性检查的完成而继续进行执行,所以若因正确推测而得到的效能超过因错误推测而损失的效能,则可实现祝的效能增益。因此,最好是能在处理器中执行数据推测,并能在错误推测时提供有效率的恢复。
发明内容
本发明揭示了用来将加载作业的推测结果连结到缓存器值的系统及方法的各种实施例。在一个实施例中,系统可包含存储档案(memoryfile),该存储档案包含被设定成储存第一寻址式样(addressing pattern)及第一标记(tag)的数据项(entry),其中该存储档案被设定成将该数据项中包含的该第一寻址式样与加载作业的第二寻址式样比较,且其中若该第二寻址式样与该数据项中储存的该第一寻址式样相符,则该存储档案被设定成将该第一标记所识别的数据值连结到该加载作业的推测结果。该系统可进一步包含:耦合到该存储档案的执行核心,其中该执行核心被设定成于执行与该加载作业相依的第二作业时存取该推测结果;以及耦合到该存储档案的加载储存单元,且该加载储存单元被设定成执行一个或多个地址间的比较而验证该第一标记所识别的数据值与该加载作业的该推测结果间的连结。
在另一实施例中,系统可包含存储档案,该存储档案包含被设定成储存第一寻址式样及第一标记的数据项,其中该存储档案被设定成将该数据项中包含的该第一寻址式样与加载作业的第二寻址式样比较,且其中若该第二寻址式样与该数据项中储存的该第一寻址式样相符,则该存储档案被设定成将该第一标记所识别的数据值连结到该加载作业的推测结果。该系统可进一步包含:耦合到该存储档案的执行核心,其中该执行核心被设定成于执行与该加载作业相依的第二作业时存取该推测结果;以及耦合到该存储档案的功能单元,且该功能单元被设定成执行该推测结果与该加载作业的实际结果间的比较而验证该第一标记所识别的数据值与该加载作业的该推测结果间的连结。
附图说明
若参照前文中的详细说明并配合下列的图式,将可更易于了解本发明,在这些图式中:
图1示出处理器的一个实施例。
图2A是派发单元的一个实施例的方块图。
图2B示出一个实施例中可使用的例示存储档案储存单元数据项。
图3是将加载作业的推测结果连结到特定标记所识别的数据值的方法的一个实施例的流程图。
图4A是根据一个实施例的加载储存单元的方块图。
图4B是根据另一个实施例的加载储存单元的方块图。
图5A是根据一个实施例而验证加载作业的推测结果与特定标记所识别的数据值间的连结的方法的流程图。
图5B是根据一个实施例而依据是否已证实了涉及存储作业的连结而使该存储作业退休的方法的流程图。
图6A是根据一个实施例的加载储存单元的方块图,该加载储存单元被设定成验证加载作业的推测结果与特定标记所识别的数据值间的连结。
图6B是根据一个实施例的执行核心的方块图,该执行核心被设定成验证加载作业的推测结果与特定标记所识别的数据值间的连结。
图7是根据一个实施例而使用值比较以验证加载作业的推测结果与特定标记所识别的数据值间的连结的方法的流程图。
图8是排程器的一个实施例的方块图。
图9是用来发出作业并响应数据推测是错误的指示而重新发出作业的方法的一个实施例的流程图。
图10是根据一个实施例的排程器的方块图,该排程器被设定成根据推测操作数来源或非推测操作数来源而选择性地决定作业是否准备就绪可发出。
图11是派发单元的另一实施例的方块图。
图12是派发单元的又一实施例的方块图。
图13示出根据一个实施例的推测缓存器对映单元,该推测缓存器对映单元被设定成维护与特定操作数的标记相关联的色码的指示。
图14示出计算机系统的一个实施例。
图15示出计算机系统的另一实施例。
虽然易于对本发明作出各种修改及替代形式,但是已以图式举例的方式示出本发明的一些特定实施例,且本说明书已详细说明了这些特定实施例。然而,应当了解,本发明的该等图式及详细说明的用意并非将本发明限于所揭示的特定形式,相反地,本发明将涵盖在最后申请专利范围所界定的本发明精神及范围内的所有修改、等效物、及替代方式。本文所用的标题只是为了组织上的目的,并非用来限制或诠释说明或申请专利范围。此外,请注意,在本申请案全文的用法中,措词“可能”(“may”)是一种容许性的用法(亦即,其意义具有可能性,是可能的),而不是一种强制性的用法(亦即,其意义为必须)。措词“包括”(“include”)及其衍生语意指“包括但不限于”(“including,but notlimited to”)。术语“连接”(“connected”)意指“直接地或间接地被连接”,且术语“耦合”(“coupled”)意指“直接地或间接地被耦合”。
具体实施方式
图1是处理器(100)的一个实施例的方块图。处理器(100)被设定成执行系统存储(200)中储存的指令。许多这些指令对系统存储(200)中储存的数据执行作业。请注意,系统存储(200)可以在实体上分散于计算机系统各处,且一个或多个处理器(100)可存取该系统存储(200)。
处理器(100)可包含指令快取存储(106)及数据快取存储(128)。处理器(100)可包含耦合到指令快取存储(106)的预先提取单元(prefetch unit)(108)。可将派发单元(dispatch unit)(104)设定成自指令快取存储(106)接收指令并将作业派发到一个或多个排程器(scheduler)(118)。一个或多个排程器(118)可耦合成自派发单元(104)接收被派发的作业并将作业发出到一个或多个执行核心(124)。执行核心(124)可包含被设定成执行对数据快取存储(128)的存取的加载/储存单元(126)。可将一个或多个执行核心(124)所产生的结果输出到结果总线(result bus)(130)。可将这些结果用来作为后续发出的指令的操作数值,及/或储存到缓存器文件(116)。可将退休队列(retire queue)(102)耦合到一个或多个排程器(118)及派发单元(104)。可将该退休队列设定成决定何时可使每一发出的作业退休。在一个实施例中,可将处理器(100)设计成与x86架构兼容。请注意,处理器(100)亦可包含其它的组件。例如,处理器(100)可包含分支预测单元(图中未示出)。
在派发单元(104)接收到指令之前,指令快取存储(106)可暂时储存这些指令。可经由预先提取单元(108)自系统存储(200)预先提取指令码(instruction code),而将指令码提供给指令快取存储(106)。可以各种配置(例如,组关系型(set-associative)、完全关系型(fully-associative)、或直接对映式(direct-mapped))来实施指令快取存储(106)。
预先提取单元(108)可自系统存储(200)预先提取指令码,以供储存在指令快取存储(106)内。在一个实施例中,可将预先提取单元(108)设定成自系统存储(200)将指令码丛发(burst)到指令快取存储(106)。预先提取单元(108)可采用各种特定的指令码预先提取技术及算法。
派发单元(104)可输出其中包括执行核心(124)可执行的位编码作业(bit-encoded operation)、操作数地址数据、立即数据、及/或偏移值数据(displacement data)的信号。在某些实施例中,派发单元(104)可包含译码电路(图中未示出),用以将某些指令译码成可在执行核心(124)内执行的作业。简单的指令可对应于单一作业。在某些实施例中,较复杂的指令可对应于多个作业。在将涉及缓存器的更新的作业译码时,可保留缓存器文件(116)内的缓存器位置,以便储存预测的缓存器状态(在替代实施例中,可将重新排序缓冲区(reorderbuffer)用来储存每一缓存器的一个或多个预测的缓存器状态)。缓存器对映单元(register map)(134)可将来源及目标操作数的逻辑缓存器名称转换为实体缓存器名称,以便有助于缓存器更名。缓存器对映单元(134)可追踪缓存器文件(116)内的哪些缓存器目前被分配及未被分配。
图1所示的处理器(100)支持非循序执行(out of order)。退休队列(102)可针对缓存器读取及写入作业而追踪原始的程序顺序,可进行推测式指令执行及分支错误预测的恢复,并可协助精确的异常处理。在某些实施例中,退休队列(102)亦可提供用于推测的缓存器状态的数据值储存,而支持缓存器更名。在许多实施例中,退休队列(102)的功能可类似于重新排序缓冲区。然而,与典型的重新排序缓冲区不同之处在于:退休队列(102)可能不提供任何数据值的储存。在某些实施例中,可以先进先出的配置来实施退休队列(102),而在该配置中,当作业被确认(validate)时,该等作业移到该缓冲区的“底部”,因而将空间让给在该队列的“顶部”的新数据项(new entries)。当作业退休时,退休队列(102)可将缓存器文件(116)中不再需要储存预测的缓存器状态的缓存器解除分配,并将用来指示哪些缓存器现在空出来的信号提供给缓存器对映单元(134)。通过维护缓存器文件(116)内(或在一替代实施例中为在一重新排序缓冲区内)的预测的缓存器状态直到产生这些状态的该等作业被确认为止,若分支预测是错误的,则可在缓存器文件(116)中使沿着错误预测的路径(mispredicted path)以推测方式执行的作业的结果无效。
在将特定的作业译码时,如果所需的操作数是缓存器位置,则可将缓存器地址数据传送到缓存器对映单元(134)  (或重新排序缓冲区)。例如,在x86架构中,有八个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)可包含被设定成执行加法及减法的整数算术运算、以及移位、旋转、逻辑运算、及分支作业的若干组成部分。亦可包含浮点单元(floating point unit),以便配合浮点运算。可将一个或多个执行核心(124)设定成为加载/储存单元(126)将要执行的加载及储存存储作业而执行地址产生(address generation)。
执行核心(124)亦可将与有条件分支指令的执行有关的数据提供给分支预测单元,因而,如果该分支被错误预测,则该分支预测单元可清除在该错误预测的分支之后的已进入指令处理管线的各指令,并使预先提取单元(108)更改提取的方向。被改向的预先提取单元(108)然后可开始自指令快取存储(106)或系统存储(200)提取一组正确的指令。在此种情形中,可舍弃原始程序序列中在该错误预测的分支指令之后发生的指令结果,其中包括先前以推测方式执行的且暂时被储存在缓存器文件(116)中的那些指令结果。如果缓存器值正在更新,则可在结果总线(130)上将一个或多个执行核心(124)内的各组成部分所产生的结果输出到缓存器文件(116)。如果正在改变记忆位置的内容,则可将一个或多个执行核心(124)内产生的结果提供给加载/储存单元(126)。
加载/储存单元(126)提供了一个或多个执行核心(124)与数据快取存储(128)间的接口。在一个实施例中,可以具有用于待处理的加载或储存作业的数据及地址数据的数个储存位置的加载/储存缓冲器配置加载/储存单元(126)。加载/储存单元(126)亦执行加载指令与待处理的储存指令间的相依性检查,以便确保维持数据一致性。
数据快取存储(128)是一种为了暂时储存在加载/储存单元(126)与系统存储(200)之间转移的数据而设的快取存储。如同前文所述的指令快取存储(106),可以其中包括组关系型配置的各种特定存储配置来实施数据快取存储(128)。此外,在某些实施例中,可以统一式快取存储(unified cache)来实施指令快取存储(106)及数据快取存储(128)。
存储档案
图2A示出派发单元(104)的一个实施例。在该实施例中,派发单元(104)包含缓存器对映单元(134)及存储档案(132)。如前文所述,可将缓存器对映单元(134)设定成提供缓存器更名。缓存器对映单元(134)可接收每一来源及目标操作数的逻辑缓存器名称,并输出最近被指定给逻辑缓存器的实体缓存器的实体缓存器名称。存储档案(132)包含存储档案控制器(202)及存储档案储存单元(204)。
存储档案储存单元(204)包含一个或多个数据项(entry)(220)。每一数据项(220)可包含寻址式样(addressing pattern)(206)、以及与该数据项的寻址式样相关联的标记(208)。当产生数据值时,每一标记可通过指示将把该数据值储存在何处(例如,储存在一重新排序缓冲区内或一缓存器文件(116)内),而识别该数据值。例如,如图式的实施例所示,每一标记可识别缓存器对映单元(134)所指示的被分配以储存该数据值的实体缓存器。每一寻址式样可包含用来指定作业中的地址的数据的全部或部分。例如,请参阅图2B,图中示出例示的寻址式样(206)。在该实施例中,寻址式样(206)包含基底逻辑缓存器名称(210)、索引逻辑缓存器名称(212)、及偏移值(214)。某些寻址式样(206)可包含用来识别存储中的特定区段的缓存器的区段逻辑缓存器名称(segment logical register name)。在某些实施例中,可利用数个缓存器、锁存器(latches)、正反器(flip-flops)、或其它以时钟触发的储存单元(clocked storage)来实施存储档案储存单元(204)。在替代实施例中,存储档案储存单元(204)可包含一个或多个随机存取存储(Random Access Memory;简称RAM)单元。
请注意,在某些实施例中,存储档案储存单元(204)中储存的寻址式样(206)可包含比为作业指定的所有寻址数据少的数据。例如,存储档案储存单元(204)中的数据项可储存比用来指定偏移值字段(214)内的偏移值的所有位少的位。在其它的实施例中,存储档案控制器(202)可根据该存储档案内的数据项是否可储存特定作业的所有寻址数据,而选择性地选择是否要分配存储档案储存单元(204)中的数据项。例如,如果存储档案储存单元(204)中的每数据项最多可储存16位的偏移值数据,且特定作业的寻址数据包含24位的偏移值数据,则存储档案控制器(202)可不将存储档案数据项分配给该作业的寻址数据。
存储档案控制器(202)可将未派发的作业中指定的寻址式样与存储档案储存单元(204)中各数据项内储存的那些寻址式样比较。如果作业的寻址式样不符合存储档案储存单元(204)中各数据项内目前所储存的任何寻址式样(亦即,该作业的寻址式样未命中(miss)该存储档案储存单元),则存储档案控制器(202)可分配存储档案储存单元(204)中的新数据项,用以储存该作业的寻址式样的全部或部分。如果存储档案储存单元(204)内没有可供分配的任何闲置的数据项,则存储档案控制器(202)可使用诸如最近最少使用(Least Recently Used;简称LRU)、先进先出(First In,First Out;简称FIFO)、随机替换等的替换机制而选择要被覆写的数据项。
存储档案控制器(202)除了在被分配的数据项内储存作业的寻址式样之外,亦可储存实体缓存器名称(208),该实体缓存器名称(208)可包括用来识别自该作业的寻址式样所识别的记忆位置加载的值或储存到该记忆位置的值的标记(例如,实体缓存器的名称)。例如,如果正在处理自存储加载数据的加载作业,则响应该加载作业而被分配的数据项可储存为了储存该加载作业的结果而被分配的实体缓存器的名称。如果正在处理将数据写入记忆位置的储存作业,则存储档案控制器(202)可将用来储存该储存作业的来源值的缓存器的实体缓存器名称储存在存储档案储存单元(204)中。
如果作业的寻址式样(或该式样的一部分)业已储存在存储档案储存单元(204)中的数据项(亦即,该作业的寻址式样命中(hit)该存储档案储存单元),则存储档案控制器(202)可使用或修改包含有相符的寻址式样的数据项。如果正在处理加载作业(将来自特定地址的值加载缓存器的作业),则存储档案控制器(202)可输出该相符的数据项中所储存的实体缓存器名称(208)。如果正在处理储存作业(将来自缓存器的值储存到特定地址的作业),则存储档案控制器(202)可以被储存的数据的标记覆写该相符的数据项中储存的标记(例如,实体缓存器名称(208))。
如果正在处理加载作业,且该加载作业命中存储档案储存单元(204),则可将存储档案控制器(202)所输出的标记用来将该标记所识别的被储存的值连结到该加载作业的推测结果。例如,在某些实施例中,当将加载作业派发到一个或多个排程器(118)时,亦可将存储档案(132)所输出的标记提供给该等一个或多个排程器(例如,作为推测的来源操作数标记)。排程器(118)可响应该标记所识别的值的可取得性(availability)(例如,在缓存器文件(116)中或在结果总线(130)上),而发出加载作业。执行核心(124)可执行该加载作业,因而在结果总线(130)上广播该被连结的值,作为该加载作业的推测结果(请注意,在某些实施例中,该加载作业的结果所产生的数据值本身可以不以旗标标示为或以其它方式识别为推测值)。在其它的实施例中,可将该标记储存在推测对映单元,而将该数据值连结到该加载作业的推测结果,且将于下文中说明其中的情形。
由于该连结,因而一旦可取得该标记所识别的数据值(例如,在缓存器文件(116)中或在结果总线(130)上),即可转送该数据值,作为该加载作业的推测结果,以便使用该推测结果而可执行各相依的作业。在许多情形中,此种方式可以比将各相依的作业的执行延迟到可取得加载作业的非推测结果更快地使用加载作业的推测结果而执行该等相依的作业。在某些实施例中,可执行加载作业而转送数据值,因而该数据值被输出到结果总线(130),作为该加载作业的推测结果。例如,在一个实施例中,并不以非推测方式耗用三个时钟周期而执行加载作业(假设该加载作业命中数据快取存储(128)),而是通过输出数据值及用来识别该数据值的标记作为加载结果,而在单一周期中执行该加载作业。在其它的实施例中,可在作业派发时将存储档案控制器(202)所输出的标记直接提供给各相依的作业(具有加载作业所产生的操作数的作业)作为推测的操作数来源,而以更间接的方式转送数据值。用来转送数据值的装置可包括下列各装置中的一项或多项:派发单元,该派发单元被设定成将该加载作业修改成以推测式缓存器至缓存器(register-to-register)移动作业的方式执行,或被设定成将作为推测的操作数来源标记的该标记提供给相依的作业;排程器,该排程器被设定成根据该被连结的数据值的可取得性而发出被修改的加载及/或相依的作业;以及执行核心,该执行核心被设定成输出该被连结的数据值作为该加载作业的结果,或被设定成使用该被连结的数据值而执行该相依的作业。
如图所示,存储档案(132)追踪存取数据快取存储(128)(或系统存储(200))中的数据的作业的寻址式样。因此,实体缓存器中储存的缓存器值可被连结到存储的特定地址中储存的值。请注意,存储档案(132)容许在将被用来把缓存器值连结到推测的加载结果的作业流中彼此相对被移动的各作业间的相依性。因此,存储档案可提供可被数个发生于其间的作业分隔的各作业间的相依性历史。
图3示出将加载作业的推测结果连结到缓存器值的方法的一个实施例的流程图。在步骤(301)中,使缓存器标记与寻址式样相关联,而指示该缓存器及该地址都有可能储存相同的数据值。为第一加载或储存作业指定该标记及该寻址式样。例如,如果该第一作业是加载作业,则该标记可识别为了储存加载结果而被分配的实体缓存器,且可将该寻址式样用来计算该加载作业的地址。如果该第一作业反而是储存作业,则该寻址式样可指示该储存作业的目标的地址,且该标记可识别该储存作业所储存的数据。在某些实施例中,可将该标记及该寻址式样储存在存储的数据项中,而使该标记与该寻址式样相关联。
如步骤(303至305)所示,如果加载作业的寻址式样与第一作业的寻址式样相符,则可将该加载作业的推测结果连结到被指定给该第一作业的标记所识别的数据值。如步骤(303至311)所示,如果该加载作业的寻址式样与第一作业的寻址式样不相符,则可使该加载作业的寻址式样与该加载作业的目标的标记相关联(例如,通过将该寻址式样及该标记储存在存储档案的数据项中)。此外,如步骤(313)所示,可存取数据快取存储而正常地执行该加载作业。在一个实施例中,可将该加载作业的寻址式样与一个以上的先前作业的寻址式样比较。例如,可将该加载作业的寻址式样与存储档案中目前储存的每一寻址式样比较。
如果该加载作业的推测结果连结到该标记所识别的数据值,则如步骤(307)所示,可将该数据值转送到一个或多个相依的作业,作为该加载作业的推测结果。如将于下文中更详细说明的,可经由结果转送或通过转送各相依的作业可使用该数据值作为推测的操作数来源的指示,而转送该数据值。在一个实施例中,如果经由结果转送而转送该数据值,则可在产生该数据值的作业完成执行的一个周期(cycle)之后使用该经转送的数据值而执行各相依的作业。如果经由各相依的作业可使用实体缓存器作为推测的操作数来源的指示而转送该数据值,则可在产生该数据值的作业完成执行时,立即发出各相依的作业。如步骤(309)所示,可在证实该推测结果之前,先转送该推测结果。可在无须存取数据快取存储的情形下转送该推测结果(亦即,可以比通过存取数据快取存储而产生的非推测结果更快速地转送推测结果)。
如果在步骤(309)中证实该推测结果是正确的,则可在无须执行数据快取存储存取的情形下完成该加载作业。然而,如果在步骤(309)中决定该推测结果是错误的,则可执行数据快取存储存取,以便取得正确的结果(图中未示出)。如果确实如此,则可使用该加载作业的正确结果而重新执行先前使用该加载作业的推测结果执行的任何相依的作业。请注意,在某些情形中,可在步骤(307)中转送被连结的数据值作为该加载作业的推测结果之前,先在步骤(309)中执行该证实。在此种情形中,可正常地执行加载作业,或者如果决定该连结是正确的,则可转送该数据值作为该加载作业的非推测结果。
为了进一步解说存储档案(132)的作业,假设派发单元(104)将要处理的一序列的作业包含下列作业:
MOV EBX,[EDX+EAX-displacement A]  (LOAD 1)
MOV ECX,[EDX+EAX-displacement A]  (LOAD 2)
MOV[EDX+EAX-displacement A],EAX   (STORE 1)
在程序顺序中可以一个或多个发生于其间的作业分隔这些作业中的每一作业。如上式所示,这些作业中的每一作业都包含相同的寻址式样EDX+EAX-displacement A。
当将LOAD 1的寻址式样提供给存储档案(132)时,存储档案控制器(202)可检查存储档案储存单元(204)中是否有与LOAD 1的寻址式样相符的寻址式样。假设该寻址式样并未命中存储档案储存单元(204),则存储档案控制器(202)可分配数据项(通过使用未分配的数据项,或通过覆写业已分配的数据项),以便储存该加载作业的寻址式样的全部或部分、以及缓存器对映单元(134)所提供的该加载作业的目标实体缓存器的实体缓存器名称。因为该加载作业未命中该存储档案储存单元,所以存储档案控制器(202)可不输出该加载作业的标记。
当存储档案(132)接着处理LOAD 2时,该加载作业的寻址式样可符合响应LOAD 1而被分配的数据项中的寻址式样(假设尚未响应发生于其间的作业而覆写LOAD 1的数据项)。存储档案控制器(202)可响应LOAD 2的寻址式样命中存储档案储存单元(204),而输出为了储存LOAD 1的结果而被分配的实体缓存器的实体缓存器名称。可将该实体缓存器名称用来将LOAD 1所加载的数据值连结到LOAD 2的推测结果。
当存储档案(132)处理STORE 1时,该储存作业的寻址式样可命中响应LOAD 1而被分配的数据项(仍然假设没有任何发生于其间的作业使该数据项被覆写)。然而,存储档案控制器(202)并不输出为了储存LOAD 1的结果而被分配的实体缓存器的实体缓存器名称,而是可以存放有STORE 1所储存的数据的缓存器的实体缓存器名称覆写该数据项中储存的实体缓存器名称(208)。因此,当后续的加载作业命中该数据项时,存储档案控制器(202)将输出STORE 1的来源实体缓存器的实体缓存器名称,而不输出LOAD 1的目标缓存器的实体缓存器名称。
因为将存储档案(132)用来作为推测结构,所以存储档案储存单元(204)中储存的数据的正确性对处理器(100)的正确作业并不是极端重要的(例如,存储档案(132)中的错误预测将不会使处理器(100)的输出错误)。然而,最好是改善存储档案(132)的正确性,以便增加通过将加载作业的推测结果正确地连结到实体缓存器中储存的值而提供的效益,并/或减少因错误预测的推测连结而引起的效能耗损。在某些实施例中,当侦测到对用来指定地址的缓存器的更新时,使存储档案储存单元(204)中的各数据项无效,即可增加存储档案(132)的正确性。例如,每一寻址式样可包含用来识别地址计算的基底及索引的一个或多个逻辑缓存器识别码。如果后续的作业修改被指定为数据项的寻址式样(206)的一部分的这些逻辑缓存器中的逻辑缓存器,则可使该数据项无效。因此,如图2A所示,可将每一作业的目标缓存器的逻辑缓存器名称输入到存储档案(132),以便执行使数据项无效的作业。
此外,在某些实施例中,可响应监视到另一装置取得将数据写入特定地址的存取,而使存储档案储存单元(204)内的各数据项无效。同样地,可响应侦测到错误预测而使数据项无效。一般而言,可监视诸如可能影响到存储档案储存单元(204)中的数据项的正确性等的许多条件,且将这些条件用来决定何时要使数据项无效。然而,因为存储档案(132)是一种推测结构,所以若实施某些监视方法的额外硬件成本大于存储档案正确性的潜在改善,则某些实施例可以不实施这些监视方法中的某些方法。
存储档案验证
加载储存单元(126)(或用来验证处理器(100)内的连结的另一装置)可验证由存储档案(132)所识别的实体缓存器中储存的值至加载作业的推测结果的连结。如果该连结是错误的,则加载储存单元(126)可使该加载作业被重新发出,且/或在结果总线(130)上广播该加载作业的正确结果。重新发出该加载作业时,可利用经过更新的非推测值而使利用该加载作业的推测结果的任何相依的作业重新发出及执行。或者,如果该连结是错误的,则处理器(100)可清除(flush)在错误计算之后发生的作业,且利用该加载作业的正确结果而重新开始执行这些作业。
在某些实施例中,可在加载储存单元(126)中以比较作业地址的方式而执行连结验证。加载储存单元(126)可比较各存储作业的地址,而侦测哪些作业应该已经连结。在一个实施例中,加载储存单元(126)可使用储存至加载(store-to-load)转送比较器来验证推测连结。除了将储存至加载转送比较器用于连结验证之外,尚可将储存至加载转送比较器用来转送来自较旧的储存作业的较新的加载结果。例如,该加载储存单元可包含用来执行储存至加载转送的若干比较器。这些比较器可将每一待处理的加载作业的地址与一组较旧的储存作业的地址比较。可选择具有与较新的加载作业的地址相符的地址的一组较旧的储存作业中的最新的储存作业。然后可转送该组较旧的储存作业中被选择的一个储存作业所储存的数据,作为该加载作业的结果。
图4A示出加载储存单元(126)的一个实施例,该加载储存单元(126)被设定通过成比较作业地址而将储存至加载转送(Store-To-LoadForwarding;简称STLF)比较器(280)用来执行连结验证。如图所示,加载储存单元(126)可包含未完成的加载及储存作业的储存区。在所示实施例中,将独立的储存区提供给加载作业(在加载的储存区(250)中)及储存作业(在储存的储存区(260)中);然而,在其它的实施例中,可将加载及储存作业储存在相同的作业储存区中(例如,额外的字段可指示每一作业是加载作业、储存作业、或加载及储存作业)。在某些实施例中,该作业储存区可以是排程器(118)的一部分。
可将用来识别每一加载作业的数据储存在加载的储存区(250)中的数据项(252)。该数据可包括:用来识别该加载作业的标记(254)、用来识别具有被该加载作业的推测结果连结到的值的存储作业(另一加载或储存作业)的转送标记(256)、以及用来指示作为该加载作业的目标的地址的地址(258)。亦可包含其它的字段(图中未示出)。
存储档案(132)可响应加载作业(将其推测结果连结到由该存储档案提供的标记所识别的数据值的该加载作业称为“连结的加载作业(linking load)”)对存储档案(132)的命中,而产生转送标记(256)。存储档案(132)除了将标记(208)及寻址式样(206)储存在每一存储档案数据项(220)之外,尚可储存用来识别使数据项(220)起初被分配的存储作业(例如,加载或储存作业)的标记。可输出该标记作为转送标记(256),用以识别其操作数被连结到较新的存储作业的推测结果的较旧的存储作业。
可将用来识别每一储存作业的数据储存在储存的储存区(storestorage)(260)中的数据项(262)。该数据可包含用来识别该储存作业的标记(264)、以及用来指示作为该储存作业的目标的地址的地址(268)。
可将STLF比较器(280)设定成决定加载作业应自哪一储存作业(在有储存作业的情形下)转送数据。此外,STLF比较器(280)可验证各加载作业的推测结果与值间的连结。存储档案(132)可以前文所述的方式产生这些连结。可将STLF比较器(280)设定成:比较加载作业的地址(258)与一个或多个储存作业的地址(268),而搜寻用来转送数据给该加载作业的储存作业(在有储存作业的情形下),因而验证该加载作业的推测结果与该储存作业的操作数间的连结。如果并未找到任何相符的储存作业(具有与连结的加载作业的地址相同的地址的储存作业),但是该加载作业的转送标记(256)指示该加载作业的推测结果连结到数据值,则STLF比较器(280)可输出该连结是错误的指示(假设并未识别出可用来转送数据给该加载作业的任何其它的加载作业,且将于下文中说明此种情形)。如果找到了相符的储存作业,但是该相符的储存作业的标记(264)与该加载作业的转送标记(256)并不相符,则STLF比较器(280)可类似地输出该连结是错误的的指示。如果找到了相符的储存作业,且该相符的储存作业的标记(264)与该转送的加载作业相符,则STLF比较器(280)可输出已证实该连结的指示(或者只须不输出该连结是错误的指示)。在某些实施例中,可在与为该加载作业执行储存至加载转送的程序大致相同的时间上进行该连结验证程序的至少一部分。
如果特定加载作业的推测结果并未连结到另一存储作业的操作数,则可将该加载作业的转送标记(256)设定为无效值、或以其它方式指示无须为该加载作业执行任何连结验证的值。对于该加载作业而言,STLF比较器(280)可执行储存至加载转送,但并不执行连结验证。
STLF比较器(280)除了验证加载的推测结果与储存操作数间的连结之外,亦可将STLF比较器(280)设定成验证加载的推测结果与其它加载操作数间的连结。例如,存储档案(132)可将较新的加载作业的推测结果连结到较旧的加载作业的操作数。因此,该较新的加载作业的转送标记(256)可识别该较旧的加载作业。STLF比较器(280)可证实没有任何在程序顺序上发生在该等被连结的加载作业之间的储存作业具有符合该较新的加载作业的地址的储存地址,而证实该加载-加载(load-load)连结。与验证较新的加载作业与较旧的储存作业间的连结类似,如果STLF比较器(280)决定该连结是错误的(例如,因为发生于其间的储存作业的地址与该较新的加载作业的地址相符),则STLF比较器(280)可输出该连结是错误的指示。
在一个实施例中,该等STLF比较器可自比连结的加载作业旧的一组加载及储存作业中寻找具有与其推测结果被连结到较旧的作业的操作数的加载作业的地址相符的地址的最新的作业,而证实一对加载作业间的连结。如果该最新且相符的作业是连同该连结的加载作业而储存的转送标记(256)所识别的作业,则该等STLF比较器可决定该连结是正确的。如果并未发现任何相符的作业,或者如果相符的作业不是转送标记(256)所识别的作业,则STLF比较器(280)可输出该连结是错误的指示。
在另一实施例中,STLF比较器(280)可寻找最新的相符加载作业(自比连结的加载作业旧且具有与连结的加载作业的地址相符的地址的一组加载作业中寻找)及最新的相符储存作业(自比连结的加载作业旧且具有与连结的加载作业的地址相符的地址的一组储存作业中寻找)。如果该最新的相符加载作业比该最新的相符储存作业新(按照程序顺序),且如果该最新的相符加载作业是该连结的加载作业的转送标记(256)所识别的作业,则STLF比较器(280)可决定该连结是正确的。如果该最新的相符加载作业比该最新的相符储存作业旧,则STLF比较器(280)可决定该连结是错误的(例如,因为该连结的加载作业应已连结到该最新的相符储存作业)。
当考虑一对加载作业间的连结时,STLF比较器(280)可比较多个相符的加载作业,这是因为该连结的加载作业可能被恰当地连结到在程序顺序上比该最新的相符储存作业新的任何相符的加载作业,其中该最新的相符储存作业比该连结的加载作业旧(与只恰当地连结到相符的较旧加载作业中的最新的作业不同)。因此,该等STLF比较器除了只识别最新的相符加载作业之外,尚可识别一组相符的加载作业,并决定该组中是否有任何相符的加载作业是该连结的加载作业的转送标记(256)中所识别的被连结到的加载作业(linked-to load)。
在某些情形中,在证实连结之前,可能已自处理器(100)退休或移除被连结到的存储作业。因此,由于较旧的作业的移除,所以STLF比较器(280)可能无法识别其推测结果连结到被移除的作业的操作数的加载作业的相符的存储作业,且纵使该连结是正确的也是无法识别。在无法证实连结的情形中,STLF比较器(280)可输出该连结是错误的指示。
响应连结是错误的指示,可使存储档案(132)的全部或部分无效。例如,在一个实施例中,可使用来提供加载作业的推测结果的特定存储档案数据项无效。在其它的实施例中,可响应STLF比较器(280)侦测到错误的连结,而使整个存储档案(132)无效。此外,可以不使用自存储档案(132)取得的推测结果,而使用加载作业的非推测结果以执行依赖该加载作业的结果的各相依的作业(或者若业已执行了这些相依的作业,则重新执行该等相依的作业)。
请注意,虽然所示的实施例使用STLF比较器执行连结验证,但是其它的实施例可采用并未被另行用于储存至加载转送的若干专用比较器,以便比较存储作业地址及/或寻址式样,而执行连结验证。
在某些实施例中,每当存储档案(132)输出用来识别应被加载作业的推测结果连结到的数据值的标记时,存储档案(132)亦可使与该加载作业被连结到的存储作业相关联的旗标被设定。例如,如果加载作业的推测结果响应该加载作业的寻址式样命中存储档案数据项而连结到较旧的储存作业的储存操作数,则存储档案(132)可输出数据值的标记,用以连结到该推测结果,并输出该较旧的储存作业已连结到较新的加载作业的指示。如图4B所示,加载储存单元(126)可响应该指示,而设定与该较旧的储存作业相关联的退休旗标(269)。加载储存单元(126)可继续使退休旗标(269)被设定,直到已证实了其第二标记已连结到该储存作业的操作数的所有较新的加载作业为止。请注意,在某些实施例中,当较新的加载作业的推测结果连结到较旧的加载作业的目标操作数时,亦可设定与较旧的加载作业(图中未示出)相关联的退休旗标。
于决定何时要停止分配先前分配给每一储存作业的数据项(262),且何时要使该储存作业退休时,加载储存单元(126)及/或退休队列(102)可使用与该储存作业相关联的退休旗标(269)。如果储存作业的退休旗标被设定,则加载储存单元(126)可继续保持数据项(262)被分配给该储存作业,因而可证实该储存作业的操作数与较新的储存作业的推测结果间的连结。同样地,当作业的退休旗标(269)被设定时,退休队列(102)不可使该作业退休。在包含与加载作业相关联的退休旗标的实施例中,于决定何时要停止分配先前分配给每一加载作业的数据项(252),且何时要使该加载作业退休时,加载储存单元(126)及/或退休队列(102)可以一种与前文中参照储存作业所述的方式类似的方式而使用与该加载作业相关联的退休旗标。
图5A是根据一个实施例而验证加载作业的推测结果与特定标记所识别的数据值间的连结的方法的流程图。如步骤(321)及(323)所示,如果加载作业的推测结果连结到较旧的(在程序顺序上)存储作业的操作数,则可连同该连结的(较新的)加载作业而储存该被连结到的较旧的作业的标记。例如,可将诸如图2A所示的存储档案用来将该连结的加载作业的推测结果连结到较旧的储存作业所储存的数据值,或连结到较旧的加载作业所加载的数据值。可连同连结的加载作业而储存较旧的加载或储存作业的标记(例如,储存在排程器及/或加载储存单元中),用以识别该加载作业被连结到哪一作业。
如步骤(325)所示,在某一时点上,该加载储存单元可验证连结的加载作业与被连结到的较旧的作业间的连结。在某些实施例中,该加载储存单元可将若干STLF比较器用来执行该验证。该等STLF比较器除了执行连结验证之外,亦可将该等STLF比较器用来执行储存至加载转送。或者,该加载储存单元可具有只执行连结验证的专用逻辑电路。
如步骤(327)所示,如果该加载储存单元在步骤(325)中决定该连结是正确的,则该加载储存单元可决定该加载作业的推测结果是非推测的(至少对于该存储档案所执行的推测是如此)。在某些实施例中,该加载储存单元可将已证实该连结的讯息通知该处理器中的其它组成部分(例如,排程器)。
如步骤(325)及步骤(329)所示,如果该加载储存单元决定该连结是错误的,则该加载储存单元可输出该连结是错误的指示(例如,输出到排程器及/或派发单元)。响应该指示,可产生该连结的加载作业的新结果。例如,如果将若干STLF比较器用来验证该连结,则在该验证程序期间,该等STLF比较器可能已识别出应用来转送数据给该该连结的加载作业的储存作业。可转送被识别的储存作业所储存的数据,作为该加载作业的非推测结果。此外,可响应侦测到错误的连结,而使该存储档案(或者该存储档案中的至少一个数据项)无效。
图5B是根据一个实施例而依据是否已证实了涉及存储作业的连结而使该存储作业退休的方法的流程图。如步骤(331至333)所示,如果较新的加载作业的推测结果连结到较旧的存储作业所操作(例如,加载或储存)的数据,则可设定与较旧的作业(被连结到的作业)相关联的旗标。在某些实施例中,可在排程器或加载储存单元中包含该旗标。
如步骤(335至337)所示,如果该作业的旗标被设定,则可将该作业的退休延迟到证实了该较新的加载作业的推测结果与该较旧的作业所操作的数据间的连结为止。否则,如步骤(339)所示,可正常地使该较旧的作业退休。
虽然前文所述的例子使用地址比较(address comparisons)(亦即,通过比较各存储作业所存取的地址)而执行连结验证,但是其它的实施例可使用值比较(value comparisons)(亦即,通过比较因存储作业存取而产生的数据)而执行连结验证。例如,在并未将特定缓存器值用于地址计算的加载作业中,可在推测连结验证中使用该缓存器值来验证该连结。可将并未被用于地址计算的该缓存器用来储存被推测地连结到加载作业的结果的值。当得到该加载作业的实际结果时,该加载储存单元(或执行核心)可将该并未被另行使用的缓存器中的值与该实际结果的值比较。如果以上两者是相同的,则该连结是正确的。否则,该连结是错误的,且可广播该加载作业的非推测结果,以便将更正传播到整个该处理器。此外,可响应侦测到错误的连结,而使存储档案的全部或部分无效。
在一个实施例中,用来储存被推测地连结的结果值的缓存器可以是索引缓存器。可将存储档案控制器设定成只将存储档案储存单元分配给并未将该索引缓存器用于地址计算的各存储作业。
在一个实施例中,如图6A所示,可在加载储存单元(126)中执行基于值(value-based)的连结验证。其中,加载储存单元(126)包含专用的值比较器(value comparators)(282),该值比较器(282)被设定成将加载作业所加载的实际值(255)(经由储存至加载转送,或通过存取数据快取存储及/或存储)与该加载作业的推测结果(257)比较。如果该等两个值是相等的,则加载储存单元(126)可决定该连结是正确的。否则,加载储存单元(126)可广播作为该加载作业的正确结果的被加载的值(255),因而任何相依的作业使用该正确的值来执行(或重新执行)。加载储存单元(126)亦可将用来指示应响应侦测到错误的连结而使存储档案(132)中的一个或多个数据项无效的信号提供给派发单元(104)。
或者,如图6B所示,可在一个或多个执行核心(124)中执行基于值的连结验证。在这些实施例中,派发单元(104)可将加载作业推测结果连结到存储档案(132)所识别的数据值的加载作业转换为结合的加载作业及比较作业。可将这些作业各别地发出到加载储存单元(126)及功能单元(126)。加载储存单元(126)可正常地执行加载作业。当可取得该加载作业的非推测结果时,可经由该未被使用的地址计算缓存器(例如,索引缓存器)存取推测结果,并将将推测结果与加载储存单元(126)所产生的该非推测结果比较,而执行该比较作业。如果以上两者是相等的,则该连结是正确的;否则,该连结是错误的。
图7是根据一个实施例而使用值比较以验证加载作业的推测结果与特定标记所识别的数据值间的连结的方法的流程图。如步骤(341至343)所示,如果加载作业的推测结果连结到较旧的存储作业的操作数(例如,由存储档案执行该连结),则可将无须用于该加载作业的地址计算的操作数用来储存该加载作业的推测结果。例如,如果该加载作业不将索引缓存器用于地址计算,则可将该索引缓存器用来储存该加载作业的推测结果。
如步骤(345)及(347)所示,如果该加载作业的实际结果与该加载作业的推测结果相符(例如,通过在功能单元中执行值比较而决定),则该连结是正确的,且该推测结果可变为非推测结果。否则,如步骤(349)所示,该连结是错误的,且可在结果总线上广播该加载作业的实际结果,以便将正确结果传播到任何相依的作业。转送加载作业的推测结果作为来源操作数
各实施例可以许多不同的方式将加载作业的推测结果连结到缓存器数据值。在某些实施例中,可识别操作数的下列两个来源而连结各值:推测来源及非推测来源。该推测来源可以是被连结的数据值。可将推测来源提供给加载作业,以便指示连结到该加载作业的推测结果的数据值。在某些实施例中,亦可将推测来源提供给与该加载作业相依的各作业。因此,某些操作数可以有两个标记:用来识别推测来源的标记、以及用来识别非推测来源的标记。在这些实施例中,如图8所示,每一排程器(118)可将标记储存区提供给推测操作数及非推测操作数。
图8示出可包含在处理器的排程器(118)的一个实施例。在所示实施例中,排程器(118)包含排程器控制器(502)及作业储存区(504)。排程器控制器(502)可响应派发单元(104)派发作业,而分配作业储存区(504)内的数据项,用以储存与该作业对应的数据。例如,作业储存区(504)中的数据项(522)可包含运算码字段(510)、一个或多个操作数字段、以及结果字段(516)。结果字段(516)可储存用来识别应该被用来储存该数据项的作业结果的实体缓存器的标记。当发出该作业时,可在一个或多个标记总线(520)上将该标记转送到每一排程器(118)。每一排程器可将在标记总线(520)上转送的该等标记与待处理的作业的操作数标记(推测操作数标记及非推测操作数标记,将于下文中说明)比较,以便决定何时可取得待处理的作业的操作数。因此,可响应作业的来源操作数标记出现在标记总线(520)上,而发出该作业(或将该作业标示为准备好可发出)。
每一操作数字段可包含用来识别推测操作数来源的推测标记以及用来识别非推测操作数来源的非推测标记的储存区。在所示的数据项(522)中,由非推测标记(512)及推测标记(514)识别操作数1的两个来源。可将排程器(118)设定成响应可取得作业的操作数的一个或多个指示而发出该作业。如果可自推测来源及非推测来源取得操作数,则可将自该非推测来源取得的值用来执行该作业。在某些实施例中,排程器(118)可将可取得非推测操作数来源的作业的发出顺序排成优先于只能取得推测操作数来源的作业的发出顺序。
请注意,作业可包含具有推测来源的某些操作数、以及并未具有推测来源的其它操作数。亦请注意,相同的来源可以是作业的推测来源,同时又是另一作业的非推测来源。在某些实施例中,当执行作业时,只能为每一操作数读取一个数据值(例如,执行核心(124)可读取推测操作数来源或非推测操作数来源,但不能同时读取两者)。在此种方式下,无须将额外的端口增加到缓存器文件(116)。在某些实施例中,可将推测来源及实体来源储存在相同的储存位置(例如,储存在缓存器文件(116)内),且可不将推测来源的旗标设定为或以其它方式识别为推测来源。
在许多实施例中,可将排程器(118)设定成在将作业发出到一个或多个执行核心(124)之后,保持将数据项分配给作业。当排程器(118)响应一个或多个推测操作数的可取得性而发出作业时,该排程器可保持将数据项(522)分配给该作业,因而若推测连结是错误的,则可重新发出该作业。在某些实施例中,可将该加载/储存单元设定成验证当推测加载作业结果连结到储存于实体缓存器中的数据值时所产生的推测连结。如果该连结是正确的,则可将该加载储存单元设定成不广播该加载作业的非推测结果,这是因为已可经由该连结而取得正确结果。如果确实如此,则可将一个或多个排程器(118)设定成:如果在结果总线(130)上广播用来识别作业的非推测操作数来源的标记,则重新发出该作业。
或者,该加载/储存单元可广播储存作业的结果、以及用来屏蔽该广播或用来指示该推测连结是正确的且不应重新发出加载作业的额外的状态位。然而,如果该推测连结是错误的,则该加载/储存单元可执行数据快取存储及/或存储存取,以便取得该加载作业的正确结果,并广播该加载作业的结果。在必然广播结果的实施例中,该额外的状态位可指示该推测连结是错误的。因此,在许多实施例中,可将已可在处理器中使用的相同的标记及结果总线用来指示推测连结是错误的。在其它的实施例中,可实施替代性的指示机制(例如,将独立的结果总线(130)及/或结果标记总线(520)用来指示错误预测)。
图9示出用来发出及重新发出具有推测及非推测操作数来源的作业的方法的一个实施例的流程图。如步骤(801至803)所示,如果可取得作业的推测操作数来源,则可发出该作业。当数据值出现在缓存器文件内的特定缓存器时,或当在结果总线上输出该数据值时,作业的推测操作数来源即变为可取得。请注意,在某些情形中,可能在推测操作数来源之前,先取得该作业的同一操作数的非推测操作数来源。在那些情形中,可在推测操作数来源变为可取得之前,先发出该作业。在某些实施例中,后来取得该推测来源时,可不触发(trigger)该作业的重新发出。
如步骤(805)所示,可将推测操作数来源所提供的数据值用来执行所发出的作业,且如步骤(807)所示,可广播该作业的结果。由于广播了该作业的结果,因而可让各相依的作业被执行。
如果在某一稍后的时间上,决定该推测来源是错误的(例如,该推测来源及该非推测来源所提供的数据值不是相同的,或者用来产生该推测来源的标记的推测连结不是正确的),则可广播该非推测来源的标记,作为该推测来源的值是错误的指示。该非推测来源的标记的广播涉及以该等一个或多个排程器以重新发出该作业而作为响应的方式广播该标记。例如,在某些实施例中,如果该标记被广播,且与该标记相关联的状态旗标被设定为某一值,则排程器可响应;而在其它的实施例中,可以没有相关联的状态旗标,且可将排程器设定成在非推测标记被广播的任何时间上重新发出作业。
根据推测或非推测来源而决定发出的准备就绪
在某些实施例中,诸如在图10所示的一个实施例中,可将排程器(118)设定成由特定操作数的推测来源或该操作数的非推测来源的可取得性(但同一时间不得同时可取得两者)而决定该操作数是否准备就绪。此种方式又可减少对结果标记总线(520)的潜在不利影响。
在图10中,该排程器使用比较器(532)将多任务器(534)所选择的作业的操作数的推测来源的标记(514)或该操作数的非推测来源的标记(512)与目前在一个或多个结果标记总线(520)上的标记比较,而决定该操作数是否准备就绪。因此,该排程器可监视标记总线(520)上的推测来源的可取得性、或非推测来源的可取得性(但非两者同时的可取得性),而决定该作业是否已准备就绪可发出。因此,该排程器并不将在该结果标记总线上广播的每一结果标记与该操作数的推测来源标记及该操作数的非推测来源标记比较,而是可只将该广播的结果标记与该操作数的该等来源标记的其中一个来源标记比较。如果可取得作业的所有操作数(来自推测或非推测来源),则可设定该作业的准备就绪旗标(508),以便指示该作业已准备就绪可发出。
错误推测侦测逻辑电路(incorrect speculation detection logic)(530)可根据作业的推测来源或非推测来源而控制该排程器是否决定该作业的准备就绪可发出。在某些实施例中,可在该排程器中为每一待处理的作业提供相同的错误推测侦测逻辑电路(530),因而每一作业可独立地监视结果标记总线(520)上的推测或非推测来源。在其它的实施例中,可以相同的方式控制所有待处理的作业,因而所有的作业监视推测来源(在可取得推测来源的情形下),或所有的作业监视非推测来源。
可将错误推测侦测逻辑电路(530)设定成:控制排程器(118)的行为,使该排程器在没有侦测到任何错误推测的情形下,根据各作业的推测来源的可取得性而决定该等作业是否准备就绪可发出。当侦测到错误推测时,错误推测侦测逻辑电路(530)可“切换(flip)”而监视非推测来源是否准备就绪。例如,如果加载储存单元(126)经由地址或值比较而侦测到错误的连结,则错误推测侦测逻辑电路(530)可切换成将非推测来源用来决定作业是否准备就绪可发出。错误的连结的侦测亦可使存储档案(132)的全部或部分、或该推测的其它来源无效。错误推测侦测逻辑电路(530)可继续监视非推测来源(而不监视推测来源),直到该推测的来源已被复位(reset)或以其它方式针对该错误推测进行修正为止。
当错误推测侦测逻辑电路(530)自监视推测来源的可取得性“切换”至监视非推测来源的可取得性时,排程器(118)可能缺少与非推测来源的可取得性有关的数据。在某些实施例中,排程器(118)可假设可取得所有的非推测来源且作业因而已准备就绪可发出。如果该假设是错误的,则可在以后实际上可取得非推测来源时(例如,侦测到在结果标记总线(520)上广播了非推测来源的标记时))重新发出该作业。
推测缓存器对映单元
图11示出处理器(100)中可包含的派发单元(104)的另一实施例。在该实施例中,派发单元(104)包含缓存器对映单元(134)、存储档案(132)、以及推测缓存器对映单元(800)。推测缓存器对映单元(800)如同缓存器对映单元(134),可将逻辑缓存器名称转换为实体缓存器名称。然而,推测缓存器对映单元(800)可以推测方式将逻辑缓存器名称转换为实体缓存器名称(例如,响应存储档案(132)将实体缓存器中储存的值连结到加载作业的推测结果)。推测缓存器对映单元(800)可让并未包含寻址式样的作业的推测操作数值被连结到缓存器数据值。例如,如果逻辑缓存器EAX有一有效的推测对映关系(speculative map),则以EAX作为来源操作数的作业可具有两个来源标记:由缓存器对映单元(134)提供的非推测标记、以及由推测缓存器对映单元(800)提供的推测标记。因为当可取得该作业的推测来源时可立即发出该作业,所以推测缓存器对映单元(800)可经由推测操作数标记将各使用数据的组成部分直接连结到各产生数据的组成部分,而绕过了任何发生于其间的加载及储存作业。请注意,在某些实施例中(例如,在具有其中包含推测缓存器状态储存区的重新排序缓冲区的实施例中),该推测对映单元可储存实体缓存器名称以外的标记。
推测缓存器对映单元(800)包含推测缓存器对映单元控制器(802)以及推测缓存器对映单元储存区(804)。推测缓存器对映单元储存区可包含一个或多个数据项(820)。可使每一数据项(820)与特定的逻辑缓存器相关联,且每一数据项(820)可指示该逻辑缓存器目前以推测方式对映到的实体缓存器的实体缓存器识别符(physical registeridentifier)(812)。每一推测缓存器对映单元数据项(820)亦可包含用来告知该数据项目前是否有效的指示(图中未示出)。在一个实施例中,推测缓存器对映单元储存区(804)可包含每一逻辑缓存器的数据项。在其它的实施例中,推测缓存器对映单元储存区(804)可包含比逻辑缓存器少的数据项。在这些实施例中,每一数据项(820)可包含该数据项目前所对应的逻辑缓存器的指示。
可将推测缓存器对映单元控制器(802)设定成响应加载作业的推测结果已被连结到特定实体缓存器名称所识别的数据值的指示而更新数据项(820)。在所示的实施例中,由存储档案(132)提供该指示。要被更新的数据项(820)是被指定为加载作业目标的逻辑缓存器的数据项。可更新该数据项,以便包含存储档案(132)为该加载作业而输出的实体缓存器识别符。在其它的实施例中,可响应存储档案(132)提供的指示以外的指示,而产生推测缓存器对映单元数据项(在这些实施例的某些实施例中,派发单元(104)可能不包含存储档案)。例如,派发单元(104)可能侦测到有条件的移动指令CMOV EAX,EBXif Z,并响应地指示EAX的推测缓存器对映单元数据项应识别目前对映到EBX的实体缓存器。一般而言,可响应用来指示逻辑缓存器应以推测方式对映到特定实体缓存器的任何预测机制,而产生推测缓存器对映单元数据项。
在某些实施例中,可在将作业提供给缓存器对映单元(134)的相同周期中,将该等作业提供给推测缓存器对映单元(800)。当缓存器对映单元(134)执行作业的非推测缓存器更名时,推测缓存器对映单元(800)可指示被指定为储存其中一个作业的推测来源操作数的任何逻辑缓存器是否被连结到特定的实体缓存器。如果有效的数据项存在于用于其中一个作业的逻辑缓存器来源的推测缓存器对映单元储存区(804),则推测缓存器对映单元控制器(802)可输出该逻辑缓存器的数据项中储存的实体缓存器名称。当该作业派发到排程器(118)时,派发单元(104)可输出该推测的实体缓存器名称,作为推测来源。因此,如果将ADD作业提供给推测缓存器对映单元(800),且其中一个ADD来源具有在推测缓存器对映单元储存区(804)中的有效数据项,则可将作为推测来源操作数标记的该数据项中识别的实体缓存器的标记提供给排程器(118)。如前文所述,可将该排程器设定成同时储存推测及非推测操作数标记,且在某些实施例中,可将该排程器设定成响应在结果总线上广播的非推测标记而重新发出作业(在先前已发出该等作业的情形下)。
可响应特定逻辑缓存器的数据值将被修改的指示,而使该推测对映单元内的数据项无效。例如,如果派发单元(104)处理作业ADD EAX,ECX,则推测缓存器对映单元控制器(802)可使目前指定给EAX的推测对映单元数据项无效,这是因为该ADD作业将修改该缓存器的值。
一般而言,当作业的推测结果连结到缓存器数据值时,可将推测操作数标记提供给排程器(118)。在某些实施例中,可将存储档案(132)及用来追踪数个周期中的相依性的另一结构(例如,将于下文中说明的推测缓存器对映单元)用来将推测结果连结到缓存器值。例如,派发单元(104)可响应识别连结的存储档案(132),而产生作业的推测标记。在某些实施例中,可在无须使用此种推测对映单元的情形下产生推测标记。例如,一序列的指令可包含:
ADD EBX,EBX  (ADD 1)
MOV[addressing pattern A],EBX  (STORE 1)
ADD[addressing pattern A],ECX  (ADD 2)
这些指令可以是连续的指令(例如,这些指令可按照程序顺序而相互紧密接续)。可将这些指令分割成下列的成分作业(componentoperations)(连同被转换成实体地址的逻辑地址而示出)以便在一个或多个执行核心(124)内执行:
ADD PR2,PR2,PR1  (ADD 1)
MOV[addressing pattern A],PR2  (STORE 1)
MOV PR3,[addressing pattern A] (load for ADD 2)
ADD PR4,PR3,PR5  (add for ADD 2)
MOV[addressing pattern A],PR4  (store for ADD 2)
在派发ADD 2的该等成分加载、加法(add)、及储存作业之前,派发单元(104)可侦测该序列中的任何成分作业之间是否有将可连结到推测结果的任何相依性。此外,可将STORE 1所储存的数据连结到该加载作业的推测结果(如由存储档案)。因为并无任何发生于其间的作业,所以派发单元可以有侦测同一派发周期中加载作业与加法作业(自相同的指令衍生这两个作业)间的相依性所需的所有数据。派发单元(104)可根据这两个相依性,而将STORE 1,PR2所储存的数据的标记连结到作为ADD 2的一部分而执行的加载作业的推测结果。该推测连结又可让该派发单元将作为ADD 2的一部分而执行的加法作业的来源连结到PR2中储存的值。因此,派发单元(104)可输出下列指示:可将PR2以推测方式用来作为该加法作业的其中一个操作数的来源,但是PR3是该操作数的非推测来源。因此,在一个实施例中,可以下列方式指定派发单元所输出的该等作业及操作数识别符:
ADD PR2,PR2,PR1  (ADD 1)
MOV[addressing pattern A],PR2  (STORE 1)
MOV PR3,[addressing pattern A]  (load for ADD 2)
ADD PR4,PR2*,PR3,PR5  (add for ADD 2,
其中PR2*是ECX
的推测来源,且
PR3是ECX的非推
测来源)
MOV[addressing pattern A],PR4  (store for ADD 2)
在其它的实施例中,可以不将派发单元(104)设定成识别与根据加载作业的各作业的推测来源操作数。反之,如图12所示,派发单元(104)可包含作业转换器(operation converter)(180),该作业转换器(180)被设定成将加载作业转换为其中包括缓存器至缓存器(register-to-register)移动作业的一个或多个作业,以便将推测加载结果提供给各相依的作业。可响应加载作业的推测结果与特定实体缓存器名称所识别的数据值之间存在有连结的指示,而执行该加载作业的转换。在某些实施例中,可包含存储档案(132)的连结侦测器(linkdetector)(182)提供该指示。在其它的实施例中,连结侦测器(182)可包含如前文所述的配置被设定成响应诸如有条件的移动作业等的作业而连结数据值的逻辑电路。
在一个实施例中,该作业转换器可接收作业的输入运算码、以及是否针对该作业而侦测到缓存器值与该作业的推测结果间的连结的指示。如果该作业是加载作业,且已侦测到推测连结,则该作业转换器可输出缓存器至缓存器移动作业的运算码。派发单元(104)可将该连结侦测单元所输出的作为该缓存器至缓存器移动作业的来源操作数标记的标记用来派发该缓存器至缓存器移动作业。
在某些实施例中,可将该作业转换器设定成:派发所产生的缓存器至缓存器移动作业,使排程器将该缓存器至缓存器移动作业及原始加载作业所需的操作数标记储存在被分配给该缓存器至缓存器移动作业的数据项中。此种方式可在侦测到该缓存器至缓存器移动作业的推测结果是错误的情形下重新发出作为原始加载作业的作业。为了实施该机制,可将额外的来源操作数加入因修改加载作业而产生的每一缓存器至缓存器移动作业(或者,在替代实施例中,可修改业已存在的来源操作数,以便实施该机制)。在某些实施例中,可执行原始加载作业的地址计算,且/或将被连结的数据值与实际加载结果的数据值比较,而验证该缓存器至缓存器移动作业的推测结果。如果该推测结果是错误的,则可存取数据快取存储,以便取得正确的加载结果。该正确结果的广播可使该排程器重新发出先前将错误值用来执行的任何相依的作业。
在某些实施例中,可将作业转换器(180)设定成将加载作业转换为双本质(dual-nature)作业。该双本质作业如同加载作业,可涉及地址计算及数据移动。但是与加载作业不同之处在于:该双本质作业所激活的数据移动是缓存器至缓存器移动。此外,该双本质作业所激活的数据移动可在完成地址计算之前发生。可将地址计算用来验证推测连结是否是正确的。如果该推测连结是错误的,则可以正常加载作业的方式重新发出该双本质作业,并可在完成数据快取存储存取之后立即将该正常加载作业的结果重新广播给各相依的作业。
下列各例子示出不同的实施例可如何转换该例示的作业序列:
ADD PR2,PR1,PR1  (ADD 1)
STORE[addressing pattern A],PR2  (STORE 1)
LOAD PR3,[addressing pattem A]   (LOAD 1)
ADD PR4,PR3,PR3  (ADD 2)
在该序列中,可由一个或多个发生于其间的作业隔开所指定的该等作业。然而,假设并无任何发生于其间的作业想要修改寻址式样A中所用的值或想要修改自寻址式样A计算出的地址上及PR2中储存的数据值,则可在PR2中储存的数据值与自寻址式样A计算出的地址上的数据值之间侦测到推测连结。
在一个实施例中,作业转换器(180)可响应推测连结侦测器(182)侦测到推测连结,而将LOAD 1转换为双本质移动作业:MOV PR3,PR2。该双本质移动作业除了指定缓存器来源及目标之外,亦可指定寻址式样A,因而可执行LOAD 1的地址计算。然而,当可取得ECX时,可立即发出该双本质移动作业的移动部分。当广播了该双本质作业的移动部分的结果时,可将该移动作业的推测结果用来作为操作数而立即发出ADD 2。当执行地址计算时,可验证该推测连结。如果该推测连结是错误的,则加载/储存单元可将指示提供给排程器,而该指示使排程器重新发出该双本质移动作业作为加载作业。可广播该加载作业的结果,而使诸如ADD 2等的已将该移动作业的推测结果用来执行的任何相依的作业被重新发出。请注意,可将单一的排程器数据项用来将该双本质作业排程,且排程器(118)可选择将该双本质作业发出两次,其中一次是用于该加载作业的地址计算,而另一次是用于该缓存器至缓存器移动作业。
在替代实施例中,作业转换器(180)可响应侦测到推测连结而将LOAD 1转换为下列两个被连结的作业:LOAD PR3,[addressing patternA]、以及MOV PR3,PR2。这些被连结的作业与涉及双本质作业的先前例子不同,可分别占用排程器(118)中的数据项,而不是共享单一的排程器数据项。当发出该缓存器至缓存器移动作业时,可将PR3的推测值用来作为操作数值,而发出诸如ADD 2等的相依的作业。可将该LOAD作业标记为特殊类型的加载作业,因而若决定该推测连结是正确的,则不必广播该加载作业的结果标记(或者连同该移动作业的结果是正确的且不应重新发出各相依的作业的指示而广播该结果标记)。此外,如果该加载作业及该移动作业都在同一周期中广播其结果,则可提供指示,以便不使用该移动结果,而是将该加载结果用于相依的作业。在某些实施例中,可将用来指示排程器应响应哪一标记的额外的位加入处理器(100)内的每一标记总线,而执行上述的机制。如果该推测连结是错误的(例如,该加载作业的结果标记的广播指示),则可取消该移动作业(例如,将该移动作业排程的排程器(118)可停止分配目前分配给该缓存器至缓存器移动作业的排程器数据项,因而无法重新发出该作业)。在许多实施例中,可将排程器设定成:响应该加载结果缓存器重新出现在结果总线上,而重新发出将该推测的加载结果用来执行的任何相依的作业。
在一个实施例中,如果(例如,由存储档案)侦测到特定标记所识别的缓存器数据值与加载作业的推测结果间的连结,则可修改加载作业,以便包含具有与被连结到该推测加载结果的数据值的标记相等的来源操作数标记的缓存器至缓存器移动作业。该缓存器至缓存器移动作业的执行可能涉及将该标记所识别的数据值连同该加载结果的标记输出到结果总线。
可(诸如执行原始加载作业的地址计算而)验证该推测结果。如果该推测结果是正确的,则可以不在结果总线上重新广播该加载作业的结果(或者,可重新广播该加载作业的结果、以及响应该重新广播的结果而不应重新发出相依的作业的指示)。如果该推测结果是错误的,则可存取数据快取存储,以便撷取正确的加载结果,且可在结果总线上广播正确的加载结果。此种方式又可使利用推测结果值而发出的任何相依的作业被重新发出。请注意,在某些情形中,可在执行该缓存器至缓存器移动作业之前先验证该推测结果。如果该推测结果是错误的,则可以不执行该缓存器至缓存器移动作业。
如果并未侦测到加载作业的推测结果与缓存器数据值间的任何连结(例如,该加载作业的寻址式样未命中存储档案),则可以不修改该加载作业。可正常地执行该加载作业,存取数据快取存储,并在结果总线上广播其结果。
标记色码标示(Tag Coloring)
在某些情形中,存储档案(132)可将加载作业的推测结果连结到特定逻辑缓存器中的值。在某些情形中,可覆写该逻辑缓存器,而使被缓存器对映单元指定给该逻辑缓存器的实体缓存器回到未被使用的清单(freelist)(亦即,可被指定的未被使用的实体缓存器的清单)。然后可重新指定该实体缓存器,以储存另一值。实体缓存器回到未被使用的清单及/或重新指定该实体缓存器时,可能不会影响到用来指定该实体缓存器的存储档案数据项。因此,存储档案(132)所提供的后续连结可能不会考虑到该实体缓存器的重新指定。例如,考虑下列的序列:
MOV[EBP+50],EAX
XOR EAX,EAX
MOV EBX,[EBP+50]
存储档案(132)可响应该序列,而将数据项分配给寻址式样EBP+50,并响应该第一储存作业而将实体缓存器指定给EAX。当XOR作业覆写EAX时,EAX的现行值(current value)可不再对应于连结到存储档案(132)中的该寻址式样的值。然而,存储档案(132)可根据后续加载作业的寻址式样与较早的储存作业的寻址式样间的符合,而将该加载作业的推测结果连结到较早的值。
在某些实施例中,缓存器文件(116)中的每一实体缓存器可指定色码(color)。可使该色码与每一缓存器的标记相关联,并可将该色码连同该缓存器的标记在整个处理器中传播。在本说明书的用法中,色码(color)是用来指示是否已重新指定缓存器的一个或多个位的数据。在一个实施例中,色码可以是单一的位,且每当缓存器回到未被使用的清单或自该未被使用的清单拉出缓存器时,即切换该单一的位。如果是在存储档案中分配用来指定特定缓存器的标记的数据项,则该存储档案亦可将与该缓存器相关联的色码储存在所分配的该数据项中。同样地,如图13所示,该推测缓存器对映单元可储存每一标记的色码(814)。亦可连同标记而将色码储存在缓存器对映单元(134)及排程器(118)中。当在一个或多个结果标记总线(520)上输出缓存器标记时,亦可在该等一个或多个结果标记总线(520)上输出与该标记相关联的色码。
举一个例子,考虑开始时具有一个“0”的色码的实体缓存器。缓存器对映单元(134)可将具有色码“0”的该实体缓存器指定给特定逻辑缓存器。此外,可在推测缓存器对映单元(800)中将具有色码“0”的该实体缓存器指定给逻辑缓存器。在推测缓存器对映单元(800)数据项的分配之后的某一时点,该实体缓存器可回到该未被使用的清单,然后被选择为重新指定。当自该未被使用的清单拉出该实体缓存器时,可将其色码更新为“1”。在更新该缓存器的色码之后的某一时点,推测缓存器对映单元(800)可根据该缓存器在被重新指定之前所分配的数据项,而以该缓存器的标记及色码0而识别作业的推测来源。可将用来识别该推测来源的该数据储存在排程器(118)中。在发出该作业之前,另一作业可能产生该缓存器的新值,且可在结果标记总线(520)上广播该标记及现行色码1。排程器(118)可通过将与该缓存器的标记相关联的现行色码1与推测缓存器对映单元数据项中的缓存器标记相关联的色码0比较,而决定该标记不再识别相同的值。在某些实施例中,如前文中参照图10所述,排程器(118)可将此种情形视为错误的推测,并“切换”至监视该操作数的非推测来源。可将该切换限于侦测到色码不符的特定作业(并不是使排程器中的所有待处理的作业被切换)。
通常,难以在不造成对实体缓存器重新指定的管理上的困难的情形下自相依性图中移除缓存器至缓存器移动作业。例如,如果更新缓存器对映单元(134),使两个逻辑缓存器编号参照到相同的实体缓存器编号,而实施缓存器至缓存器移动,则可能变得难以决定该实体缓存器编号所识别的实体缓存器何时应回到该未被使用的清单。可将缓存器的色码标示用来作为这些系统的替代性系统。
在某些实施例中,可在使用推测缓存器对映单元(800)而将缓存器至缓存器移动的效能最佳化时,使用缓存器的色码标示。例如,可将推测缓存器对映单元(800)用来自相依性图中移除缓存器至缓存器移动作业(亦即,如果已可取得移动作业的来源,则依据缓存器至缓存器移动作业的结果的作业将不再需要等候该移动作业的执行)。当侦测到缓存器至缓存器移动作业时,推测缓存器对映单元(800)可分配用来连结该移动作业中指定的来源及目标缓存器的数据项。可将每一实体缓存器的色码储存在所产生的推测缓存器对映单元(800)数据项中。在该系统中,可在不会有更新缓存器对映单元(134)以便使多个逻辑缓存器与同一实体缓存器相关联的系统中产生的困难的情形下,正常地重新指定实体缓存器。当在使用色码标示的系统中重新指定实体缓存器时,可使目前被指定有该实体缓存器的特定值不同于在由与识别该实体缓存器的每一标记相关联的色码重新指定该实体缓存器之前已在该相同的实体缓存器中被分配的其它值。
可将推测缓存器对映单元(800)设定成处理整数及浮点缓存器,而可让该推测缓存器对映单元自相依性图中移除浮点缓存器至缓存器移动作业。此种方式又可让诸如FXCH(该作业将堆栈组件(stackelement)与目前在该堆栈顶部的组件调换)等具有较长执行时间的作业自相依性图中移除。请注意,纵使在使用推测缓存器对映单元(800)时可自相依性图移除缓存器至缓存器移动作业,但仍然可执行该缓存器至缓存器移动作业。
例示计算机系统
图14示出计算机系统(400)的一个实施例的方块图,该计算机系统(400)包含处理器(100),该处理器(100)经由总线桥接器(402)而耦合到各种系统组件。处理器(100)可包含前文所述的派发单元(104)、存储档案(132)、排程器(118)、及/或推测缓存器对映单元(800)的一个实施例。计算机系统的其它实施例也是可行的且可考虑采用。在所示的系统中,主存储(200)经由存储总线(406)而耦合到总线桥接器(402),且图形控制器(408)经由AGP总线(410)而耦合到总线桥接器(402)。数个PCI装置(412A至412B)经由PCI总线(414)而耦合到总线桥接器(402)。亦可设有辅助总线桥接器(secondary bus bridge)(416),以便经由EISA/ISA总线(420)而提供一个或多个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)通常将作业自来源装置或总线所使用的协议转换为目标装置或总线所使用的协议。
辅助总线桥接器(416)除了将ISA/EISA总线的接口提供给PCI总线(414),还可具有额外的功能。亦可在计算机系统(400)内设有在辅助总线桥接器(416)之外或与辅助总线桥接器(416)整合的输入/输出控制器(图中未示出),以便将作业支持提供给键盘及鼠标(422)、以及各种串行端口及并行端口。在其它的实施例中,亦可将外部快取存储单元(图中未示出)在处理器(100)与总线桥接器(402)之间耦合到CPU总线(424)。可将该外部快取存储耦合到总线桥接器(402),且可将该外部快取存储的快取存储控制逻辑整合到总线桥接器(402)。图中所示的L2快取存储(428)是在处理器(100)的背部(backside)配置中。请注意,L2快取存储(428)可与处理器(100)分离,可连同处理器(100)而整合到匣(cartridge)(例如slot1或slotA)中,或者甚至可连同处理器(100)而整合到半导体基材(substrate)中。
主存储(200)是一种应用程序储存在其中且处理器(100)执行时所主要使用的存储。适用的主存储(200)可包括动态随机存取存储(Dynamic Random Access Memory;简称DRAM)。例如,复数组(bank)的同步DRAM(Synchronous DRAM;简称SDRAM)或Rambus DRAM(Rambus DRAM;简称RDRAM)可能是适当的。
PCI装置(412A至412B)是诸如网络适配卡、视讯加速器、声频卡(audio card)、硬盘机或软盘机或其控制器、小型计算机系统接口(Small Computer System Interface;简称SCSI)转接器、以及电话适配卡等各种周边装置的举例。同样地,ISA装置(418)是诸如调制解调器、声卡、以及GPIB或现场总线适配卡(field bus interface card)等各种数据撷取适配卡等的各种类型的周边装置的举例。
设有图形控制器(408)以控制显示器(426)上的文字及影像的描绘(render)。图形控制器(408)可采用此项技术中习知的典型图形加速器,用以将可有效地移进及移出主存储(200)的三维数据结构描绘。图形控制器(408)因而可以是AGP总线(410)的主控装置,这是因为图形控制器(408)可要求并接收对总线桥接器(402)内的目标接口的主控权,因而可存取主存储(200)。专用的图形总线可配合而自主存储(200)迅速地撷取数据。图形控制器(408)可针对某些作业而将其配置进一步设定成产生AGP总线(410)上的PCI协议交易(transaction)。总线桥接器(402)的AGP接口因而可包含用来支持AGP协议交易以及PCI协议目标及发出者交易(initiator transaction)的功能。显示器(426)是其上可呈现影像或文字的任何电子显示器。适用的显示器(426)包括阴极射线管(Cathode Ray Tube;简称CRT)及液晶显示器(Liquid Crystal Display;简称LCD)等的显示器。
请注意,虽然前文说明中以使用AGP、PCI、及ISA或EISA总线作为例子,但是亦可视需要而以任何总线架构取代。又请注意,计算机系统(400)可以是包含额外的处理器(例如图中所示作为计算机系统(400)非必须的组件的处理器(100a))的多重处理计算机系统。处理器(100a)可类似于处理器(100)。更具体而言,处理器(100a)可与处理器(100)完全相同。处理器(100a)可经由独立的总线(如图14所示)而连接到总线桥接器(402),或者可与处理器(100)共享CPU总线(424)。此外,处理器(100a)可耦合到类似于L2快取存储(428)的非必须的L2快取存储(428a)。
现在请参阅图15,图中示出可包含前文所述的派发单元(104)、存储档案(132)、排程器(118)、及/或推测缓存器对映单元(800)的计算机系统(400)的另一实施例。其它实施例也是可行的且可考虑采用。在图15所示的实施例中,计算机系统(400)包含数个处理节点(processing node)(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)而耦合以与复数个输入/输出装置(在菊炼(daisy chain)配置中的装置(620A至620B))通讯。其它的处理节点可以类似的方式而与其它的I/O装置通讯。
处理节点(612A至612D)实施封包型连结(pocket-based link),以便进行处理节点间的通讯。在本实施例中,是将该连结实施为若干组的单向线路(unidirectional lines)(线路(624A)用来将封包自处理节点(612A)传输到处理节点(612B),且线路(624B)用来将封包自处理节点(612B)传输到处理节点(612A))。其它组的线路(624C至624H)用来在图15所示的其它处理节点之间传输封包。一般而言,每一组线路(624)可包含一条或多条数据线路(data line)、对应于该等数据线路的一条或多条时钟线路(clock line)、以及用来指示被传输的封包类型的一条或多条控制线路(control line)。以一种快取存储一致(coherent)的方式操作该连结,以便进行各处理节点间的通讯,或者以一种非一致(non-coherent)的方式操作该连结,以便进行处理节点与I/O装置(或通到诸如PCI总线或ISA总线等的传统结构的I/O总线的总线桥接器)间的通讯。此外,在如图所示的I/O装置之间,可使用菊链接构而以一种非一致的方式操作该连结。请注意,将要自处理节点传输到另一处理节点的封包可通过一个或多个中间节点。例如,如图15所示,由处理节点(612A)传输到处理节点(612D)的封包可通过处理节点(612B)或处理节点(612C)。可使用任何适当的路由算法。计算机系统(400)的其它实施例可包含比图15所示实施例多或少的处理节点。
一般而言,可在各节点之间经由线路(624)而以一个或多个位时间(bit time)的方式传输封包。位时间可以是对应的时钟线路上的时钟信号的上升缘或下降缘(rising or falling edge)。该等封包可包括用来激活交易的命令封包(command packet)、用来维持快取存储一致性的探测封包(probe packet)、以及来自对探测及命令封包的响应的响应封包(response packet)。
处理节点(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)”系统。
I/O装置(620A至620B)可以是任何适用的I/O装置。例如,I/O装置(620A至620B)可包含用来与其可耦合的另一计算机系统通讯的装置(例如网络适配卡或调制解调器)。此外,I/O装置(620A至620B)可包括视讯加速器、声频卡、硬盘机或软盘机或其控制器、小型计算机系统接口(Small Computer System Interface;简称SCSI)转接器、电话适配卡、声卡以及诸如GPIB或现场总线适配卡等的各种数据撷取适配卡。请注意,在本说明书中,术语“I/O装置”及术语“周边装置”将是同义的。
在本说明书的用法中,术语“时钟周期”或“周期”意指指令处理管线的各阶段完成其工作所用的时间间隔。各存储元件(例如缓存器或数组)根据用来界定时钟周期的时钟信号而撷取指令及计算出的值。例如,存储元件可根据时钟信号的上升缘或下降缘而撷取一值。
熟习此项技术者在完全了解前文所揭示的本发明之后,将可易于作出各种变化及修改。将把后述的申请专利范围诠释为包含所有此种变化及修改。

Claims (10)

1.一种系统(100),包含:
存储档案(132),该存储档案包含被设定成储存第一寻址式样(206)及第一标记(208)的数据项(220),其中该存储档案(132)被设定成将该数据项(220)中包含的该第一寻址式样(206)与加载作业的第二寻址式样(206)比较,其中若该第二寻址式样(206)与该数据项(220)中储存的该第一寻址式样(206)相符,则该存储档案(132)被设定成将该第一标记(208)所识别的数据值连结到该加载作业的推测结果;
耦合到该存储档案(132)的执行核心(124),其中该执行核心(124)被设定成在执行与该加载作业相依的第二作业时存取该推测结果;以及
耦合到该存储档案(132)的功能单元(126),且该功能单元(126)被设定成通过执行一个或多个地址间的比较而验证该第一标记(208)所识别的该数据值与该加载作业的该推测结果间的连结。
2.根据权利要求1所述的系统(100),其中该功能单元(126)包含被设定成执行该比较并执行非推测储存至加载转送的储存至加载转送比较器(280)。
3.根据权利要求1所述的系统(100),其中该数据项(220)被进一步设定成:响应该被分配的数据项(220)而储存用来识别加载或储存作业的转送标记(256),并在该第二寻址式样(206)与该数据项(220)中储存的该第一寻址式样(206)相符时输出该转送标记(256)。
4.根据权利要求3所述的系统,其中该功能单元(126)被耦合以接收该转送标记(256),且该功能单元(126)进一步被设定而通过选择比该加载作业旧且具有与该加载作业的地址相符的地址的最新的作业,以及通过将该转送标记(256)与所选择的该最新的作业的识别标记比较,而执行该比较,其中所选择的该最新的作业是加载或储存作业。
5.根据权利要求3所述的系统(100),其中该功能单元(126)被耦合以接收该转送标记(256),且该功能单元(126)进一步被设定而通过选择分别比该加载作业旧且分别具有与该加载作业的地址相符的地址的最新的加载作业及最新的储存作业、并通过决定所选择的该最新的加载作业按照程序顺序比所选择的该最新的储存作业新、以及通过将该转送标记(256)与所选择的该最新的加载作业的识别标记比较,而执行该比较。
6.一种方法,包含下列步骤:
储存数据项(220),该数据项(220)包含第一寻址式样(206)及第一标记(208);
在储存该数据项(220)之后,将该数据项(220)中包含的该第一寻址式样(206)与加载作业的第二寻址式样(206)比较;
响应该比较步骤,如果该第二寻址式样(206)与该数据项(220)中储存的该第一寻址式样(206)相符,则将该第一标记(208)所识别的数据值连结到该加载作业的推测结果;
在该连结步骤之后,当执行与该加载作业相依的第二作业时,存取该推测结果;以及
在该连结步骤之后,通过执行一个或多个地址间的比较,而验证由该第一标记(208)所识别的该数据值与该加载作业的该推测结果间的连结。
7.根据权利要求6所述的方法,其中响应按照程序顺序比该加载作业先出现的储存作业而分配该数据项(220),且该方法进一步包含下列步骤:响应将该标记所识别的该数据值连结到该加载作业的推测结果,而设定与该储存作业相关联的旗标(269)。
8.根据权利要求7所述的方法,进一步包含下列步骤:保持与该储存作业相关联的数据,直到通过执行该比较而证实该连结为止,其中响应该旗标(269)被设定,而进行该保持。
9.根据权利要求8所述的方法,进一步包含下列步骤:响应该旗标(269)被设定,而在证实该连结之前,不使该储存作业退休。
10.一种方法,包含下列步骤:
储存数据项(220),该数据项(220)包含第一寻址式样(206)及第一标记(208);
在储存该数据项(220)之后,将该数据项(220)中包含的该第一寻址式样(206)与加载作业的第二寻址式样(206)比较;
响应该比较步骤,如果该第二寻址式样(206)与该数据项(220)中储存的该第一寻址式样(206)相符,则将该第一标记(208)所识别的数据值连结到该加载作业的推测结果;
在该连结步骤之后,当执行与该加载作业相依的第二作业时,存取该推测结果;以及
在该连结步骤之后,通过执行该推测结果与该加载作业的实际结果间的比较,而验证由该第一标记(208)所识别的该数据值与该加载作业的该推测结果间的连结。
CNB2004800429401A 2004-05-05 2004-12-17 验证将加载作业的推测结果连结到缓存器值的存储档案的系统及方法 Active CN100424635C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/839,474 2004-05-05
US10/839,474 US7263600B2 (en) 2004-05-05 2004-05-05 System and method for validating a memory file that links speculative results of load operations to register values

Publications (2)

Publication Number Publication Date
CN1954290A true CN1954290A (zh) 2007-04-25
CN100424635C CN100424635C (zh) 2008-10-08

Family

ID=34959784

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800429401A Active CN100424635C (zh) 2004-05-05 2004-12-17 验证将加载作业的推测结果连结到缓存器值的存储档案的系统及方法

Country Status (7)

Country Link
US (1) US7263600B2 (zh)
JP (1) JP2007536626A (zh)
CN (1) CN100424635C (zh)
DE (1) DE112004002848B4 (zh)
GB (1) GB2429557B (zh)
TW (1) TWI362613B (zh)
WO (1) WO2005111794A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107710153A (zh) * 2015-07-09 2018-02-16 森蒂彼得塞米有限公司 具有有效的存储器访问的处理器

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7571304B2 (en) * 2005-03-18 2009-08-04 Sun Microsystems, Inc. Generation of multiple checkpoints in a processor that supports speculative execution
US7376817B2 (en) * 2005-08-10 2008-05-20 P.A. Semi, Inc. Partial load/store forward prediction
US20080010440A1 (en) * 2006-07-05 2008-01-10 International Business Machines Corporation Means for supporting and tracking a large number of in-flight stores in an out-of-order processor
US20080010441A1 (en) * 2006-07-05 2008-01-10 International Business Machines Corporation Means for supporting and tracking a large number of in-flight loads in an out-of-order processor
US7624253B2 (en) * 2006-10-25 2009-11-24 Arm Limited Determining register availability for register renaming
US20080162889A1 (en) * 2007-01-03 2008-07-03 International Business Machines Corporation Method and apparatus for implementing efficient data dependence tracking for multiprocessor architectures
US7689812B2 (en) * 2007-02-14 2010-03-30 International Business Machines Corporation Method and system for restoring register mapper states for an out-of-order microprocessor
US9069672B2 (en) * 2009-06-12 2015-06-30 Intel Corporation Extended fast memory access in a multiprocessor computer system
US8521992B2 (en) * 2009-12-22 2013-08-27 International Business Machines Corporation Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
US8468325B2 (en) 2009-12-22 2013-06-18 International Business Machines Corporation Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
US9135014B2 (en) * 2012-02-15 2015-09-15 Freescale Semiconductor, Inc Data processing system with latency tolerance execution
US9996348B2 (en) * 2012-06-14 2018-06-12 Apple Inc. Zero cycle load
US10467010B2 (en) * 2013-03-15 2019-11-05 Intel Corporation Method and apparatus for nearest potential store tagging
US10198265B2 (en) 2013-03-15 2019-02-05 Intel Corporation Microprocessor for gating a load operation based on entries of a prediction table
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
US9471480B2 (en) * 2013-12-02 2016-10-18 The Regents Of The University Of Michigan Data processing apparatus with memory rename table for mapping memory addresses to registers
GB2518022B (en) * 2014-01-17 2015-09-23 Imagination Tech Ltd Stack saved variable value prediction
US11068271B2 (en) 2014-07-28 2021-07-20 Apple Inc. Zero cycle move using free list counts
GB2532232A (en) * 2014-11-12 2016-05-18 Ibm Verifying a graph-based coherency verification tool
US10185561B2 (en) * 2015-07-09 2019-01-22 Centipede Semi Ltd. Processor with efficient memory access
US9575897B2 (en) 2015-07-09 2017-02-21 Centipede Semi Ltd. Processor with efficient processing of recurring load instructions from nearby memory addresses
US20170010973A1 (en) * 2015-07-09 2017-01-12 Centipede Semi Ltd. Processor with efficient processing of load-store instruction pairs
US10331357B2 (en) * 2016-08-19 2019-06-25 Advanced Micro Devices, Inc. Tracking stores and loads by bypassing load store units
US10534609B2 (en) 2017-08-18 2020-01-14 International Business Machines Corporation Code-specific affiliated register prediction
US10719328B2 (en) 2017-08-18 2020-07-21 International Business Machines Corporation Determining and predicting derived values used in register-indirect branching
US10884746B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Determining and predicting affiliated registers based on dynamic runtime control flow analysis
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
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
US10884747B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Prediction of an affiliated register
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
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
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
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
US11061575B2 (en) 2017-09-19 2021-07-13 International Business Machines Corporation Read-only table of contents register
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
US10896030B2 (en) 2017-09-19 2021-01-19 International Business Machines Corporation Code generation relating to providing table of contents pointer values
US10620961B2 (en) * 2018-03-30 2020-04-14 Intel Corporation Apparatus and method for speculative conditional move operation
US11334485B2 (en) * 2018-12-14 2022-05-17 Eta Scale Ab System and method for dynamic enforcement of store atomicity
US11061683B2 (en) * 2019-06-13 2021-07-13 Microsoft Technology Licensing, Llc Limiting replay of load-based control independent (CI) instructions in speculative misprediction recovery in a processor
US11200062B2 (en) 2019-08-26 2021-12-14 Apple Inc. History file for previous register mapping storage and last reference indication
US11416254B2 (en) 2019-12-05 2022-08-16 Apple Inc. Zero cycle load bypass in a decode group
US11392387B2 (en) 2020-11-04 2022-07-19 Microsoft Technology Licensing, Llc Predicting load-based control independent (CI) register data independent (DI) (CIRDI) instructions as CI memory data dependent (DD) (CIMDD) instructions for replay in speculative misprediction recovery in a processor

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5452426A (en) * 1994-01-04 1995-09-19 Intel Corporation Coordinating speculative and committed state register source data and immediate source data in a processor
US5799179A (en) * 1995-01-24 1998-08-25 International Business Machines Corporation Handling of exceptions in speculative instructions
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
US5751983A (en) * 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
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
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
US6041405A (en) * 1997-12-18 2000-03-21 Advanced Micro Devices, Inc. Instruction length prediction using an instruction length pattern detector
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
US6393536B1 (en) * 1999-05-18 2002-05-21 Advanced Micro Devices, Inc. Load/store unit employing last-in-buffer indication for rapid load-hit-store
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
US6675287B1 (en) * 2000-04-07 2004-01-06 Ip-First, Llc Method and apparatus for store forwarding using a response buffer data path in a write-allocate-configurable microprocessor
DE10121792C2 (de) * 2000-05-26 2003-09-25 Ibm Universelle Ladeadresse/Wertevorhersageschema
US6671780B1 (en) * 2000-05-31 2003-12-30 Intel Corporation Modified least recently allocated cache replacement method and apparatus that allows skipping a least recently allocated cache block
JP3497832B2 (ja) * 2001-03-28 2004-02-16 株式会社半導体理工学研究センター ロード・ストアキュー
US6883086B2 (en) * 2002-03-06 2005-04-19 Intel Corporation Repair of mis-predicted load values
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107710153A (zh) * 2015-07-09 2018-02-16 森蒂彼得塞米有限公司 具有有效的存储器访问的处理器
CN107710153B (zh) * 2015-07-09 2022-03-01 森蒂彼得塞米有限公司 具有有效的存储器访问的处理器

Also Published As

Publication number Publication date
US7263600B2 (en) 2007-08-28
GB2429557A (en) 2007-02-28
DE112004002848B4 (de) 2010-06-17
TWI362613B (en) 2012-04-21
GB0622878D0 (en) 2006-12-27
WO2005111794A1 (en) 2005-11-24
JP2007536626A (ja) 2007-12-13
TW200606709A (en) 2006-02-16
US20050247774A1 (en) 2005-11-10
DE112004002848T5 (de) 2007-04-05
GB2429557B (en) 2007-09-05
CN100424635C (zh) 2008-10-08

Similar Documents

Publication Publication Date Title
CN100424635C (zh) 验证将加载作业的推测结果连结到缓存器值的存储档案的系统及方法
CN1742257B (zh) 用于数据预测的系统及方法
JP3866261B2 (ja) ロード/ストア操作をバイパスするために投機的ソースオペランドを使用するシステムおよび方法
JP4105684B2 (ja) ロード操作の推測結果をレジスタ値にリンクするためのシステムおよび方法
CN100520712C (zh) 用来实施具有追踪缓存的微处理器的方法及系统
JP4170292B2 (ja) データの投機的実行をサポートするマイクロプロセッサで用いるスケジューラ
KR100234648B1 (ko) 프로세서내 인스트럭션 실행 방법 및 시스템과 데이타 처리 시스템
KR101192814B1 (ko) 로드가 선행하는 스토어에 의존적인지를 예측하는 의존성 매커니즘을 구비한 프로세서
CN100407137C (zh) 推测性地执行程序指令的方法、微处理器及系统
US20100306507A1 (en) Out-of-order execution microprocessor with reduced store collision load replay reduction
KR19980079691A (ko) 데이터 처리 시스템의 자원 할당 방법 및 그 장치
KR19980079702A (ko) 저장 인스트럭션의 결과의 전달하는 방법 및 이를 구현한 프로세서
CN105005463A (zh) 具有世代重命名的计算机处理器
CN100432924C (zh) 用于在数据推测微处理器中操作重放的系统及方法
US6871343B1 (en) Central processing apparatus and a compile method
CN114008587A (zh) 在处理器中的推测性错误预测恢复中限制基于负载的控制无关(ci)指令的重放
CN101371223A (zh) 运算数的提早有条件选择
US7222226B1 (en) System and method for modifying a load operation to include a register-to-register move operation in order to forward speculative load results to a dependent operation
US7937569B1 (en) System and method for scheduling operations using speculative data operands
CN102163139A (zh) 微处理器融合载入算术/逻辑运算及跳跃宏指令
CN115113925A (zh) 具有对加载操作的预测的装置和方法
KR20230023710A (ko) 명령어 재실행을 감소시키기 위한, 프로세서의 위험에 응답한 명령어 파이프라인 플러시 후 실행되고 플러시된 명령어의 재사용
US11507377B2 (en) Arithmetic processing circuit and arithmetic processing method
KR20070019750A (ko) 로드 동작의 투기적인 결과들을 레지스터 값들에 연결하는메모리 파일을 유효화하기 위한 시스템 및 그 방법

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 INC.

Free format text: FORMER OWNER: ADVANCED MICRO DEVICES INC.

Effective date: 20100730

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

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

TR01 Transfer of patent right

Effective date of registration: 20100730

Address after: Grand Cayman, Cayman Islands

Patentee after: Globalfoundries Semiconductor Inc.

Address before: American California

Patentee before: Advanced Micro Devices Inc.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210301

Address after: California, USA

Patentee after: Lattice chip (USA) integrated circuit technology Co.,Ltd.

Address before: Greater Cayman Islands, British Cayman Islands

Patentee before: GLOBALFOUNDRIES Inc.