CN101014934A - 具有相关机制以预测是否加载与较旧储存相关的处理器 - Google Patents
具有相关机制以预测是否加载与较旧储存相关的处理器 Download PDFInfo
- Publication number
- CN101014934A CN101014934A CNA2005800301525A CN200580030152A CN101014934A CN 101014934 A CN101014934 A CN 101014934A CN A2005800301525 A CNA2005800301525 A CN A2005800301525A CN 200580030152 A CN200580030152 A CN 200580030152A CN 101014934 A CN101014934 A CN 101014934A
- Authority
- CN
- China
- Prior art keywords
- load operation
- computing
- subclauses
- clauses
- prediction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000001419 dependent effect Effects 0.000 title description 23
- 230000007246 mechanism Effects 0.000 title description 7
- 230000004044 response Effects 0.000 claims abstract description 15
- 238000003860 storage Methods 0.000 claims description 161
- 238000011068 loading method Methods 0.000 claims description 72
- 238000000034 method Methods 0.000 claims description 18
- 230000005540 biological transmission Effects 0.000 claims description 11
- 230000000295 complement effect Effects 0.000 claims description 4
- 238000001514 detection method Methods 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 38
- 230000006399 behavior Effects 0.000 description 17
- 230000015572 biosynthetic process Effects 0.000 description 12
- 238000006073 displacement reaction Methods 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 5
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 235000007516 Chrysanthemum Nutrition 0.000 description 1
- 244000189548 Chrysanthemum x morifolium Species 0.000 description 1
- 210000001367 artery Anatomy 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 125000006850 spacer group Chemical group 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 210000003462 vein Anatomy 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Investigating Or Analysing Biological Materials (AREA)
Abstract
一种处理器可包括设成发送运算的调度器,以及设成执行由该调度器所发送的存储器运算的加载储存单元(load store unit)。该加载储存单元是设成储存确认发送至该加载储存单元的存储器运算的信息。响应对于该发送存储器运算的其中一种的不正确数据推测的侦测,该加载储存单元设成通过提供指示给该调度器而重新操作至少一种该发送的存储器运算。该调度器是设成反应性地重新发送由该加载储存单元确认的该存储器运算。
Description
发明所属技术领域
本发明是关于处理器之领域,尤指在处理中执行数据推测。
先前技术
超纯量处理器通过同时执行多项指令以及通过利用与处理器设计一致性最短可行之时脉周期来达成高性能。然而,介于指令之间的数据与控制流程的依赖性可能限制随时发送的许多指令。结果,有些处理器为了达成额外性能的增加而支持推测执行。
一种型式的推测为控制流程推测(control flow speculation),控制流程推测预测程序流程将进行的方向。举例来说,分支预测(branch prediction)可用来预测是否将采用一分支。许多类型的分支预测是可利用的,由方法来分类,该等方法为了做出以历史为基础的预测每次仅对程序中保存先前分支的复杂历史做相同的预测。经由硬件最佳化、编辑器最佳化、或者两者,可以促进分支预测。通过分支预测机制提供了预测的基础,指令可以推测地撷取与执行。当分支指令做最终评估时,能验证该分支预测。假如预测不正确,则根据不正确预测所推测执行之任何指令可予撤销。
另一种形式的推测是数据推测,其预测数据值。建议的数据推测型态包括推测产生的记体体运算地址以及使用在计算机运算推测产生的数据值。当具有控制推测时,最终评估使用基本条件来推测产生数值,并且允许该推测将予验证或取消。
因为推测允许执行继续进行而不须等待欲知的推测情况,假使从正确的推测所增加的性能超出不正确的推测所丧失的性能,则可以达成显著的性能增加。因此希望减少由于不正确的推测所产生的性能损失。
发明内容
本发明揭露用以预测在数据推测处理器中较旧(于编程次序)的储存运算上的加载运算依赖性的各种方法与系统的各实施例。在一个实施例中,处理器可包括设成发送运算的调度器,与加载储存单元(loadstore unit),该加载储存单元耦接以接收调度器发送的存储器运算以及设成执行存储器运算。该加载储存单元可更进一步设成预测是否特定的加载运算依赖于较旧的储存运算;在计算该较旧的储存运算的地址之前,执行特定的加载运算以反应预测该特定的加载运算是独立于较旧的储存运算;在预测该特定的加载运算是独立于较旧储存运算后,侦测是否该特定的加载运算已被错误预测;以及反应侦测该特定的加载运算已被错误预测提供反应指示给该调度器指示该加载运算应该重新发送。
在本发明的一个特定实施例中,该加载储存单元可以包括含有多个局部预测器条目(local predictor entry)的局部预测器。各多个局部预测器条目可以包括依赖预测值,并且该加载储存单元可再进一步设成通过存取对应于该特定加载运算的特定的局部预测器条目,并且评估包含于特定的局部预测器条目的特定的依赖预测值而预测是否该特定的加载运算系依赖于包含的较旧的储存运算。
在另一特定的实施例中,该加载储存单元可包括含有全局历史寄存器以及多个全局预测条目的全局预测器。该全局历史寄存器可以设成储存对应于多个执行加载运算的多个别依赖值。各多个全局预测器条目可以包括依赖预测值。该加载储存单元可再设成通过存取对应于全局历史寄存器的特定的全局预测器条目以及评估包含于该特定的全局预测器条目的特定的依赖预测值,而预测是否该特定的加载运算是依赖于较旧的储存运算。
然而在另一特定的实施例中,该加载储存单元可以包括含有多个局部预测器条目的局部预测器,其中各多个局部预测器条目可以包括依赖预测值,以及含有全局历史寄存器与多个全局预测器条目的全局预测器,其中全局历史寄存器可以设成储存对应于多个执行加载运算的多个个别的依赖值,以及其中各多个全局预测器条目可以包括依赖预测值。加载储存单元可再设成通过判定是否该特定的加载运算是动态加载运算而预测是否该特定的加载运算是依赖于较旧的储存运算。反应判断该特定的加载运算不是动态加载运算,该加载储存单元可存取对应于特定的加载运算的特定的局部预测器,并且评估包含于特定的局部预测条目的局部依赖预测值。在反应判断该特定的加载运算是动态加载运算,该加载储存单元可存取对应于全局历史寄存器的特定的全局预测器条目,并且评估包含于特定的全局预测器条目的全局依赖预测值。
图式简单说明
当结合以下附图而考虑详细说明时,将会更清楚地了解本发明,其中:
图1为根据本发明的一个实施例显示处理器的方块图。
图2为根据本发明的一个实施例显示加载储存单元的方块图。
图3A为显示包含局部预测器数据结构的依赖预测逻辑的一个实施例的方块图。
图3B为包含全局预测器数据结构的依赖预测逻辑的一个实施例的方块图。
图3C为包含混合预测器数据结构的依赖预测逻辑的一个实施例的方块图。
图4A为显示分派单元的一个实施例的方块图。
图4B为根据本发明的一个实施例显示范例性寻址模式的方块图。
图5为显示预测是否已知的加载运算是依赖于较旧的储存运算的方法的一个实施例的流程图。
图6为根据本发明的一个实施例显示示范性的计算机系统的方块图。
图7为根据另一个实施例显示示范性的计算机系统的方块图。
主要组件符号说明
100 微处理器 100a 处理器
102 退返队列 104 分派单元
106 指令快取 108 预取单元
116 寄存器文件 118 调度器
124 执行核心 126A 功能单元
126B 功能单元 126C 加载储存单元
128 数据快取 130 结果总线
132 存储器文件 134 寄存器映像
160 存储器控制器
200(200A、200B、200C、200D) 存储器
202 存储器文件控制器 204存储器文件储存器
206 寻址模式
208 实体寄存器名称(卷标)
210 基本逻辑寄存器名称
212 索引逻辑寄存器名称
214 位移 220 条目
303 依赖预测逻辑 305 依赖验证逻辑
307 运算储存器 310 条目
313 加载/储存 315 卷标
317 地址 319 数据
321 旗标 330 局部预测器
335 局部预测器条目 336 索引卷标
337 预测值 338 计数器
340 全局预测器 342 寄存器全局历史寄存器
345 全局预测器条目 346 组合逻辑
347 预测值 348 全局计数器值
350 混合预测器 355 选择器
900 计算机系统 902 总线桥接器
906 存储器总线 908 图形控制器
910 AGP总线 912A PCI装置
912B PCI装置 914 PCI总线
916 第二总线桥接器 918 ISA装置
920 ISA/EISA总线 922 键盘/鼠标
924 CPU总线 926 显示器
928 第二层高速缓存 928a 第二层高速缓存
1012(1012A、1012B、1012C、1012D)处理节点
1016(1016A、1016B、1016C、1016D)存储器控制器
1018(1018A、1018B、1018C、1018D、1018E、1018F、1018G、1018H、1018I、1018J、1018K、1018L)接口逻辑
1020(1020A、1020B) I/O装置
1024(1024A、1024B、1024C、1024D、1024E、
1024F、1024G、1024H) 组线
实施方式
虽然本发明容许有不同的修改与替代的形式,但是其特定的实施例系借着图式中之实例显示并且将在本文中详加说明。然而,应该了解该等图式与详细说明并非要限制本发明于所揭露的特定形式,相对的,本发明系涵盖落于本发明之精神与范围内之所有的修改、均等物、替代物,如所附的申请专利范围所定义。请注意,标题只是为了组构本文之目的,而非要用来限制或解释本说明或申请权利范围。此外,请注意,“可(may)”字系以允许的意义使用于整个申请案中(亦即是,具有潜在性、能够),非强制性的意义(亦即是,必须)。该名词“包括(include)”与其衍生之意义意指“包括,但非限制于”。该名词“连接”意指“直接或间接连接”,以及该名词“耦接”意指“直接或间接耦接”。
图1为处理器100的一个具体实施例的方块图。处理器100设成执行储存在系统存储器200中之指令。很多的这些指令运算储存在系统存储器200中之数据。请注意系统存储器200可以实体分布于整个计算机系统并且可由至少一个处理器100所存取。
处理器100可包括指令快取106与数据快取128。处理器100可包括耦接至该指令快取106之预取单元108。分派单元104可设成从指令快取106接收指令并且分派运算给调度器118。至少一个调度器118可耦接以接收从分派单元104分派的运算并且发送运算给至少一个执行核心124。每一个执行核心124可包括加载储存单元设成执行存取至数据快取128。执行核心124产生的结果可输出至结果总线130。这些结果可使用当作操作数值用于接下来发送的指令与/或储存至寄存器文件116。退返队列(retire queue)102可耦接至调度器118和分派单元104。退返队列102可设成决定何时各发送的运算可退返。在一个实施例中,该处理器100可设计与X86架构兼容。请注意,处理器100也可包括许多的其它的组件。举例来说,处理器100可包括分支预测单元(未于图中显示)。
在由分派单元104接收各指令之前,指令快取106可暂时储存各指令。指令码从系统存储器200经由预取单元108借着预取码可提供给指令快取106。指令快取106可以不同的组态施行(例如集合组合(set-associative)、完全组合(fully-associative),或直接映像(direct-mapped))。在某些实施例中,可有多层级指令与/或数据快取106以及128。某些层级可与处理器100整合,如图所示,然而其它层级的快取可以是由外部至处理器。
预取单元108可以从系统存储器200预取指令码用以储存在指令快取106之内。在一个实施例中,预取单元108可设成从系统存储器200从发(burst)码进入指令快取106。预取单元108可使用多种之特定码预取技术与算法。
分派单元104可以输出包括通过执行核心124可执行的位编码运算以及操作数寻址信息、立即数据、与/或位移数据等之讯号。在某些实施例中,分派单元104可包括译码电路(未图标)用以译码某些指令成为在执行核心124内可执行的运算。简单的指令可对应至单一运算。在一些实施例中,较复杂的指令可对应至多个运算。假如运算含有寄存器的更新,则位于寄存器文件116内的寄存器位置可以保留(例如,依据那个运算之译码)以储存推测之寄存器状态(在替代的实施例中,记录器缓冲器对每一个寄存器可以用来储存至少一个推测记录器状态)。在一些实施例中,分派单元104可以执行可转译来源以及目的地操作数之逻辑寄存器名称至实体寄存器名称之寄存器映像134以促进寄存器重新命名。该寄存器映像也可追踪目前配置在寄存器文件116内之寄存器。
图1的处理器100支持乱序执行(out of order execution)。退返队列102可保持追踪原始程序序列用于寄存器读取与写入之运算,允许推测指令执行以及分支错误预测恢复,以及促使精确的异常(exception)。退返队列102可以执行在先进先出之组态设定,其中当运算被确认时,运算移至缓冲器之“底部”,让出空间给在队列“顶端”新的条目。退返队列102可以反应运算完成执行和施行在任何运算上之任何数据或控制推测而退返运算,该等运算达至并且包括在程序顺序之运算被验证。当在实体寄存器中所产生之该值的运算被退返时,退返队列102可提交实体寄存器的推测状态至处理器100之结构状态。在一些实施例中,退返伫到102可以执行作为部分的记录器缓冲器。此种记录器缓冲器也可提供推测寄存器状态之数据数值储存以便支持寄存器重新命名。请注意在其它的实施例中,退返的实施例102可不提供任何数据数值储存。取而代之,当运算退返时,退返队列102可重新分配在寄存器文件116中之寄存器,该寄存器文件116不再需要储存推测寄存器状态并且提供讯号给寄存器映像134,该寄存器映像134指示哪个寄存器目前系空置的。借着维护在寄存器文件116(或,替代的实施例,在记录器缓冲器内)内之推测的寄存器状态,直至确认了产生这些状态的该运算为止,假如分支预测系不正确的,则循着错误预测的路径之推测执行运算之结果在寄存器文件116中可能无效。
假如特定运算之所需的操作数系一个寄存器位置,则寄存器定位信息可传送至寄存器映像134(或记录器缓冲器)。举例来说,在X86架构中,有8个32位之逻辑寄存器(例如EAX、EBX、ECX、EDX、EBP、ESI、EDI以及ESP)。实体寄存器文件116(或记录器缓冲器)包括改变这些逻辑寄存器的内容并且允许乱序执行之储存结果。在寄存器文件116中之实体寄存器可配置以储存决定修改该逻辑寄存器中的一个寄存器的内容之各个运算之结果。因此,在特定程序之执行期间之不同点,寄存器文件116(或,在替代的实施例中,记录器缓冲器)可具有包含特定的逻辑寄存器之推测执行内容之至少一个寄存器。
寄存器映像134可分派实体的寄存器给指定作为运算之目的操作数之特定的逻辑寄存器。分派单元104可决定寄存器文件116有至少一个先前分配之指定至特定为在给定的运算中之来源操作数之逻辑寄存器之实体寄存器。寄存器映像134可提供卷标作为最近指定给该逻辑寄存器之实体寄存器。这卷标可用来存取在寄存器文件116中之操作数数据数值或在该结果总线130上经由结果转送以接收该数据数值。假如该操作数对应至存储器位置,则该操作数数值可以经由加载储存单元126C提供在结果总线上(用以结果转送与/或储存在寄存器文件118中),将说明如下。当其中一个调度器118发出运算时,可提供操作数数据数值给执行核心124。请注意,在替代的实施例中,当分派运算时,可提供操作数数值给对应的调度器118(当发送操作数时,代之以提供至对应之执行核心124)。
在分派单元104之输出上提供之位编码运算与立即的数据可路由传送至至少一个调度器118。请注意,如本文所用,当运算已准备执行并且发送已备好运算给至少一个功能单元时,调度器系一种侦测装置。举例来说,保留站(reservation)系一种调度器。在一个调度器或一组调度器中的运算也被称为在指令中的运算或运算窗口或排程窗口。各调度器118能够保持运算信息(例如,位编码执行位以及操作数数值、操作数卷标、与/或立即的数据)用于等待事件之几个未决的运算至执行核心124。在某些实施例中,各调度器118可不提供操作数数值储存。代之以各调度器可监测发送的运算以及在寄存器文件中116中可得之结果以便决定何时操作数数值可由功能单元126(从寄存器文件116或结果总线130)取得读取。在某些实施例中,各调度器118可与专用的功能单元126结合。在其它的实施例中,单一调度器118可发送运算给多于一个之功能单元126。
调度器118可提供至将由执行核心124执行之临时的储存运算信息。如前所述,各调度器118可储存未决的运算之运算信息。此外,各调度器可储存已执行但仍可重新发送运算之运算信息。发送运算给执行核心124用以反应任何需要的操作数之值而执行,该(等)操作数系制成可有效地实时执行。因此,其中执行运算之顺序可能不同于原始程序指令序列之顺序。包含数据推测之运算可继续存在于调度器118中直至该等运算变成非推测性为止,而使得假如数据推测系不正确的,则该等运算可重新发送。如图1中所示,加载储存单元126C可提供重新操作(replay)指示,确认至少一个运算将重新发送给调度器118。举例说明,在一个实施例中,该重新操作指示可包括将重新操作之各运算之卷标。在另一个实施例中,重新操作指示可包括对应至在调度器118内之各加载/储存运算之位,以致特定位之确立(assertion)可确认将重新操作之对应运算。调度器118可反应地重新发送由重新操作指示确认运算。
在一个实施例中,各执行核心124可包括几个功能单元126(例如,如图1中所示的功能单元126A至126C)。一些功能单元,例如126A可设成执行加与减之整数算数运算,以及移位、旋转、逻辑运算与分支运算。其它的功能单元,例如128,可设成调适浮点运算。至少一个功能单元可设成执行地址产生用于将由例如126C之功能单元执行加载与储存存储器运算,该功能单元执行加载与储存运算以存取储存在数据快取128与/或系统存储器中之数据。在一个实施例中,此种功能单元126C可以设成具有加载储存缓冲器,该加载储存缓冲器具有数个用于待处理之(pending)加载与/或储存之数据与地址信息之储存位置。功能单元126C也可在此称为加载/储存单元。
至少一个功能单元126也可提供关于执行条件分支指令之信息至分支预测单元以便假如分支错误预测,则分支预测单元可清除随后已进入该指令处理管线并且重新导向预取单元106之错误预测的分支之指令。重新导向预取单元106然后可开始从指令快取106或系统存储器200取得更正之指令组。在该情况中,也许抛弃该错误预测分支指令后发生之在原始程序序列中之指令的结果,包括那些推测地执行并且暂时储存在寄存器文件116中之指令的结果。
假如更新寄存器数值,则在执行核心124内通过功能单元126产生的结果可在结果总线130上输出至寄存器文件116。假如改变存储器位置之内容,则在执行核心124内产生的结果可提供至加载/储存单元126C。
数据快取128系提供给于执行核心124与该系统存储器200间传送临时储存数据之高速缓存。类似以上说明之指令快取106,该数据快取128可执行于多种指定的存储器组态设定,包括了一组结合的组态设定。此外,在一些实施例中,数据快取106与指令快取128可执行在统一的高速缓存中。
在一些实施例中,处理器100可包括整合的存储器控制器160,并允许该处理器直接介接至系统存储器200。在其它的实施例中,存储器控制器160可包括在间接耦接处理器100至系统存储器200之总线桥接器中。
依赖预测
如本文所述,假如有一种数据数值可能发现是不正确的而因此有重新计算之可能,那么该数据数值系推测的。推测性数据数值就是不能确实确认为正确或不正确。假如数据数值系已经完成某些数据推测之运算结果或假如数据数值依另一推测数据数值而定(例如,假如将该数据数值产生当做具有至少一个推测操作数之运算结果),则数据数值可重新计算。非推测数值系不必依赖于任何数据推测之数值(然而,该值仍可受到控制推测)。
在处理器100内之不同的机制可执行数据推测。举例来说,在一个实施例中,在计算该储存地址之前,加载/储存单元126C可预测是否特定的加载系依赖于较旧的储存运算。预测将独立于较旧储存之加载可随意地安排关于储存运算并且允许以推测方式执行。这种形式的数据探测在本中称为依赖预测。在另一个依赖预测实例中,分派单元104可侦测可作为另一运算之推测操作数之一个运算之结果。举例来说,分派单元104可预测,通过之前的储存运算,加载运算将存取储存至数据快取128之数据。分派单元104可反应地确认储存在用作为储存运算之来源如同加载运算之推测结果之寄存器中之该数据数值。该依赖预测可延伸于分派单元104中,系通过连结该储存运算之来源作为用于特定加载运算之结果作为操作数之运算之推测操作数来源。
可执行多个不同型式之数据推测以产生一些推测结果。举例来说,使用预测数据数值也许产生整体运算之推测结果。这个推测结果然后可由储存运算储存。加载运算经由依赖预测可预测将依赖于这储存,并且因此该加载运算之推测结果系整体运算之推测结果。
依于已完成之数据推测上之运算结果而定之运算也可产生推测的结果。举例来说,假如地址预测系用于产生加载运算之推测结果,则任何执行,使用该加载推测结果作为操作数之依赖预算可产生推测结果,该推测结果可转而由其它的依赖运算用作为操作数。于是,假如在加载运算中之该下面的推测判定是不正确的,则该依赖运算的结果也可能是不正确的,并且因此依赖在该加载之整个运算依赖链可能需要重新执行以便产生正确的结果。另一方面,假如下面的推测发现是正确的,则该依赖运算结果可能是正确的(假设这些结果不是基于任何其它推测值)。
当这些运算系通过功能单元来执行,则可验证对于已经完成之数据推测之许多运算。举例来说,用于以推测方式产生运算结果之数据预测可通过功能单元126来验证,该功能单元126借着比较实际运算之结果与推测结果而执行该运算。假使数据推测系不正确的,则该运算可能不需重新执行,因为该正确的结果已经可取得。可验证其它运算,而不须完全地执行。举例来说,假如具有未计算之地址之加载从较早的储存传送其结果(例如,由于依赖性或地址预测),则当计算该加载地址时,可验证该加载之推测结果。假使推测结果系不正确的,则该运算可能需要重新计算(至少部份)以便产生该正确之结果。
因为运算已经完成数据推测以及他们的依赖运算可能需要重新执行,所以整个队列102可设定组态给仅仅已经解决任何下面之数据推测之整个运算。
具有依赖预测之加载储存单元
在支持数据推测执行之处理器中,加载储存单元126C可设成预测是否加载运算系依赖于较旧之储存运算,并且可允许预测将独立地相关于储存运算而随意排程之加载运算,如以上之说明。此外,加载储存单元126C可包括侦测不正确依赖预测以及讯号发至不正确预测运算应该重新操作之排程,而导致该排程稍后重新发送这些运算至加载储存单元126C之验证机制。注意如本文所用的,参考比其它运算较旧或较新之加载或储存之运算系相关于比较运算之程序顺序。也就是,在程序顺序中出现比第二运算较早之第一运算可称为比第二运算旧,而第二运算可称为比第一运算新。
图2为显示设成执行用于加载运算的依赖预测的加载储存单元126C的一个实施例。在图标的实施例中,加载储存单元126C包括依赖预测逻辑303以及依赖验证逻辑305,各彼此耦接并耦接于运算储存器307。
依赖预测逻辑303可设成执行发送至加载储存单元126C之加载运算之依赖预测。如以下结合图3A至3C的较详细的说明,依赖预测逻辑303可包括设成储存对应于加载运算之依赖预测数值之局部与/或全局预测器数据结构。依赖预测逻辑303可设成存取对应于储存在运算储存器307内之特定的加载运算之依赖预测值。假如该对应的依赖预测值显示预测该特定的加载运算将独立于较旧的储存运算,在已计算至少一个较旧之储存运算之该地址值前,加载储存单元126C可允许特定的加载运算执行。
依赖验证逻辑305可设成验证由依赖预测逻辑303所执行的数据推测,如下之详细说明。依赖验证逻辑305也可设成通过处理器100之其它部分完成验证数据推测。举例来说,假如分配单元104设成执行依赖预测(例如,通过推测连结加载结果至较早储存之该来源),依赖验证逻辑305可设成验证该依赖预测。
运算储存器307可设成储存已经发送至加载储存单元126C(例如,通过调度器118)但尚未完成执行之运算。发送至已完成数据推测之加载储存单元之运算可不退返,直到运算已由依赖验证逻辑305所验证为止。运算储存器307可追踪在该加载储存单元126C内之所有未解决的运算。运算储存器307可包括一个条目用于各未解决的加载与储存。
条目310也可包括指示是否该条目配置给加载或储存之ld/st信息313(或在一些实施例中,条目可指示假如条目对应到从存储器地址加载的数值上运算并且储存该结果至存储器地址之运算,那么条目就包括储存与加载两者)。此外,条目310可包括卷标315(例如,在该处理器100内验证该运算及其结果)、地址317、与/或数据319。在一些实施例中,卷标315可包括对应于该存储器运算之该程序计数值(例如,执行在X86架构之实施例中之该以太网络接口处理器(EIP,EthernetInterface Processor)数值)。在一些实施例中,各条目之数据域位319可包括用以推测与非推测数据两者之储存。类似地,在一些实施例中,该地址字段317可包括储存运算之地址(例如,通过地址预测产生的推测地址以及通过执行运算产生的新的地址数值)之至少一个数值。在一些实施例中,条目可包括额外的字段以验证运算与/或操作数作为数据推测。举例来说,旗标(flag)321可指示特定的加载运算预测将独立于其它较旧的储存。此外,旗标321可指示是否特定的运算系动态可预测的,如以下之详细说明。条目310可反应发送运算至该加载储存单元126C之调度器118而分配,并且反应完成该运算之执行之加载储存单元126C而重新分配。
依赖验证逻辑305可借着比较该运算之推测结果与运算之实际结果验证依赖预测之一些实例。举例来说,加载运算之该推测结果可储存在运算储存器307内之该加载条目310中。当从数据快取128接收该加载运算之实际结果时,该依赖验证逻辑可比较实际结果与储存在运算储存器307中之推测结果。
依赖验证逻辑305可借着比较运算之该地址与至少一个较早运算之该等地址验证依赖预测之其它实例。举例来说,依赖验证逻辑305可包括专属依赖验证比较器(未图标),或可使用实行在加载储存单元126C之一些实施例中之储存至加载(store-to-load)传输之比较器。在一个实施例中,在已计算至少一个较旧的储存之该地址之前,加载可通过依赖预测逻辑303预测将独立于较旧的储存。当至少一个较旧的储存之该地址成为可用时,该比较器可设成比较该较旧储存地址对照该预测独立加载运算之该地址。假如任何较旧储存的地址相配于该预测独立加载运算之该地址,则依赖验证逻辑305可指示该加载运算系错误预测。在一些实施例中,依赖验证逻辑305可设成监测以及验证只有这些预期之加载运算系独立的(举例说明,储存在具有指示该预测之旗标数值321之运算储存器307中之这些加载运算)。在其它实施例中,依赖验证逻辑305也可设成侦测是否预测将依赖之该等加载系事实上独立于较旧之储存。
响应侦测加载运算之错误预测之依赖性,依赖验证逻辑305可能导致将重新操作之该错误预测加载运算(并且,在一些实施例中,任何运算依赖于或较晚于该错误预测加载运算),并且也导致将更新该依赖预测逻辑303,如下之详细说明。借着提供确认该运算至该调度器118之重新操作讯号,可重新操作运算。响应该讯号,调度器118可标记该运算用以重新操作(例如,借着修正结合该运算之状态信息以指示该运算应该重新操作)。在一个实施例中,依赖验证逻辑305借着提供该运算之卷标给调度器118连同指示该运算应该重新操作之旗标,可能导致运算将要重新操作。在一些实施例中,其侦测预测依赖的加载运算之错误预测,依赖验证逻辑305可能仅更新依赖预测逻辑303而没有重新操作该错误预测之加载,因为不正确的预测加载运算之依赖可能只会导致性能降低,而非不正确的计算。此外,在一些实施例中,依赖预测逻辑303包括设成提供预测迟滞现像之计数器,如以下之进一步说明,在发生正确的预测以及错误的预测情况时,依赖验证逻辑305可设成更新依赖预测逻辑303。
在一些实施例中,具有错误预测的依赖之加载运算之该正确结果可能已经存在。举例来说,预期独立的加载运算可能实际依赖于储存运算,并且该储存数据可能存在,举例来说,例如在对应于该储存运算之条目310之数据319中。假使该不正确推测之加载运算之该正确结果已经存在,在一些实施例中,依赖验证逻辑305可能导致加载储存单元126C传播该不正确推测之加载运算之该正确结果给该处理器之其它组件,以致于任何在该处理器之其它部分内之依赖运算可利用该正确的数值重新执行。数据推测验证逻辑305可能不会导致该不正确推测加载运算在该实施例中重新操作。请注意,该加载储存单元126C可完成未解决的运算之执行,即使该加载储存单元126C也导致该运算重新操作。
依赖预测逻辑303可实行各种设定组态的数据结构以预测是否特定的加载运算系依赖在较旧的储存运算。在各种的实施例中,局部预测器、全局预测器、以及混合式的预测器可以使用在依赖预测。
图3A为显示包括局部预测器数据结构的依赖预测逻辑中的一个实施例。在例示的实施例中,依赖预测器逻辑303包括局部预测器330,该局部预测器330包括多个局部预测器条目335。各局部预测器条目335包括索引卷标336以及依赖预测值337。在该例示的实施例中,各局部预测器条目335也包括计数器338,虽然在一些实施例中,该计数器可以省略,如以下之说明。计数器338为多位计数器,可设成满足计数器之最大与最小值。
各局部预测器条目335可设成储存对应于特定的加载运算之依赖预测信息。特定的局部预测器条目335可由索引卷标336来索引,该索引卷标336在一个实施例中可包括对应的加载运算之该程序计数器值。在其它的实施例中,考量到索引卷标336可包括一个数值以确认对应的非程序计数器值之加载运算,举例来说,例如目的卷标值或加载地址值。索引卷标336可包括一个指示,指示该对应的局部指针器条目335系有效的(亦即是,配置给特定的加载运算)。
对应的加载运算之确认信息,例如其程序计数器值当该加载运算发送给加载储存单元126C的时候可提供给依赖预测逻辑303。在例示的实施例中,局部预测器330可比较该加载的确认信息对比于各局部预测器条目335之该索引卷标336以决定是否对应到该加载运算之有效预测器之条目以类似于内容可寻址存储器(content addressablememory,CAM)之该运算之结合的方式存在着。假如有效的预测器条目存在,则其对应的依赖预测值337(以及计数器338之值,假使存在)可读出并储存在运算储存器307中之对应于加载运算之该条目310之内。假如没有有效的预测器条目存在而有闲置的局部预测器条目335存在,则该闲置的条目可配置给该加载运算和储存在该闲置的条目之索引卷标336中之该加载的确认信息。此外,预设预测值可储存在该闲置的条目之依赖预测值337之中。举例来说,加载运算经由默认值可预测将独立于较旧的储存,所以预测独立性之预测值指示在这种情况可储存。
在计算较旧之储存运算之该地址之前,加载储存单元126C可评估从局部预测器330读取之该依赖预测值之信息以允许预测独立的加载运算来执行。如上所述,依赖验证逻辑305可侦测特定的加载运算之依赖预测系不正确的。在这样的情况下,依赖验证逻辑305可造成对应到该错误预测加载运算之该局部预测器条目335更新。举例来说,依赖验证逻辑305可能借着提供以类似上述说明之方式之验证信息的加载运算首先导致该对应的局部预测器条目335在区域推测器330内之存取。一旦选择了该适当的局部预测器条目335,依赖验证逻辑305可能导致将更新该对应的依赖预测值337以反映该错误预测。
于不实行计数器338之实施例中当由依赖验证逻辑逻辑305所判定时,可更新依赖预测值337以储存该正确的依赖信息。在包括计数器338的实施例中,该计数器值可能在错误的预测之情况减少,而可能在正确的预测之情况增加,并且只有当该对应的计数器338系在最小值时,方可能在错误预测上更新依赖预测值337。在该等实施例中,计数器338可提供迟滞现象给依赖预测,防止该依赖预测值反应单一正确或不正确预测而突然改变。计数器338可能系在此种实施例中指示该依赖预测之强度(例如,较大的计数器值可能指示较强之预测,而较小的计数器值可能指示较弱的预测)。
如刚才所说明的,在一个实施例中,局部预测器330可包括对应到预测可为依赖的或独立的加载运算之条目。然而,在一个替代的实施例中,局部预测器330可设成分配预测依赖之加载运算之条目。在该实施例中,当发送该特定的加载运算至加载储存单元126C时,假如特定的加载运算的确认信息不能相符于局部预测器330中之任何条目,则可通过默认值而预测该加载运算系独立的。接着,假如依赖验证逻辑305侦测如此之预设之预测系不正确的,则其可能造成将配置于局部预测器330中之条目具有正确的预测。同样地,在一些实施例中,假如依赖验证逻辑305侦测预测依赖的加载运算系实际独立于较旧之储存,则其可设成重新分配对应到该错误预测之加载运算之该局部预测器条目335。在配置局部预测器330以分配只能预测依赖加载运算的条目之实施例中,该依赖预测值337可从各局部预测器条目335省略。
当预测特定的加载运算时,局部预测器330可仅倚靠该特定的加载运算之过去的行为而非其它加载运算之行为。局部预测器330在预测依赖性上用以加载运算的行为系较静态的因此可能为有效的。然而,在一些实例中,特定的加载运算之该依赖行为可依其它的加载行为而改变(亦即是,该特定的加载运算的依赖行为可为动态的)。举例来说,特定的加载运算可依赖在较旧的储存运算只有当由各自的加载运算之行为所决定时,在每隔一段时间发送该特定的加载运算。在该等实例中,当特定之预测行为可提供较准确的预测时,全局预测器考量儿个加载运算之该行为。
图3B显示包括全局预测器数据结构的依赖预测逻辑的一个实施例。在该例示的实施例中,依赖预测逻辑303包括全局预测器340,该依赖预测逻辑303包括全局历史寄存器342,而该全局历史寄存器342耦接于经由组合逻辑346之多个全局预测器条目345。各全局预测器条目345包括全局依赖预测值347以及全局计数器值348,该全局计数器值348可设成饱和其最大与最小值之多位计数器。
全局历史寄存器文件342可以是设成储存多个位之移位寄存器,其中各位对应到个别的执行加载运算之该依赖行为。在一个实施例中,该依赖行为可对应到该个别的执行加载运算之该实际依赖行为,亦即,是否个别执行之加载运算为事实上独立于或依赖于较旧的储存运算。在另一个实施例中,该依赖行为可对应到该个别的执行加载运算之该预测依赖行为,该预测依赖行为可能比实际的依赖行为更快得到。储存在全局历史寄存器342之位数,并且因此表现于其中之执行加载运算之该数目可能依不同的实施例而有所不同。在一个实施例中,全局历史寄存器342可实行为可程序化宽度移位寄存器(Programmable-width shift register)。
在一个实施例中,全局历史寄存器文件342可每次更新一个加载运算执行。关于更新,该最近执行的加载运算之依赖行为可移位到全局历史寄存器342之最低有效位位置,并且所有剩余的全局历史寄存器342之位位置可向左移位一个位位置,以及舍弃全局历史寄存器342之最高有效位。在另一个实施例中,全局历史寄存器342可实行如同右移寄存器,具有最近执行加载运算之该依赖行为移位进入最高有效位位置并且舍弃该最低有效位。在一些实施例中,全局历史寄存器342一次可移位超过一个位位置以同时容纳多个加载运算执行。
特定的全局预测器条目345之该全局依赖预测值347可指示对应的加载运算之依赖预测,例如预测之依赖或独立。全局预测计数器348可设成储存用于特定的加载运算之对应于全局依赖预测值347之强度之指示值,类似于上述的局部预测器条目335之计数器338。在一些实施例中,万一侦测到不正确或正确之预测,全局预测计数器348可通过依赖验证逻辑305更新,类似上述之局部预测器330之方式。
当发送特定的加载运算至加载储存单元126C时,组合逻辑346可设成结合包含在具有该特定的加载运算之确认信息之全局历史寄存器342内之该值以产生索引值。该产生的索引值然后可用来存取特定的全局预测器条目345,并且可读出对应的全局依赖预测值347并储存于该条目310内对应到运算储存器307中之该加载运算,其中该全局依赖预测值347可以类似于上述之区域处理器330说明的方式用来修改该加载运算之排程。在某些实施例中,考量到全局预测器条目345可包括有效信息,使得存取于全局预测器340内未配置的条目之加载运算可接收预设的预测。
组合逻辑346可设成结合包括在全局历史寄存器342内之值,该等值可为几个最近执行加载运算之该依赖历史之指示,具有需要预测之该给定的加载运算之某些特定的确认信息。举例来说,对应到该特定的加载运算之该程序计数器值可用在一个实施例中,而在其它的实施例中,可使用例如目的卷标值或加载地址。通过组合逻辑346所执行的该正确的组合功能可能依不同的实施例而有所不同。在一个实施例中,组合逻辑346可设成结合具备该特定的加载指令之该程序计数器值之已选择的位(例如最低有效位)之全局历史寄存器342之值,其系利用逻辑互斥或(XOR)功能以产生可用来选择特定的全局预测器条目345之索引值。在另一个实施例中,该索引值可通过连结具有该特定的加载指令之该程序计数器值之已选择的位之全部或部分的全局历史寄存器342之值而产生。
由于全局预测器340包含至少一个加载运算之依赖历史,该全局预测器340可用动态的依赖行为而可较佳地预测加载运算之结果。然而,在一些实施例中,局部预测器330以及全局预测器340可比其它在不同的环境下者分别表现了较佳之预测准确性。因此,在一些实施例中,可以使用利用局部与全局两者预测器类型之混合预测器。
图3C显示包含混合预测器数据结构的依赖预测逻辑的一个实施例。在该例示的实施例中,依赖预测逻辑303包括混合预测器350,该混合预测器350系包括局部预测器330以及全局预测器340,分别耦接到选择器355。局部预测器330以及全局预测器340之组态设定与运算可如上所述分别结合图3A与3B的说明。
在一个实施例中,局部预测器330可设成当作为预设预测器,预测也许被选用,除非判定特定的加载运算将为动态之加载运算。在一些实施例中,举例来说,假如局部预测器330已经错误预测该加载某些的次数,则加载可通过依赖验证逻辑305而确认为动态之加载运算。在其它的实施例中,其它的功能单元可指示动态加载状态。举例来说,在一些实施例中,基于加载之操作数或寻址模式,加载在该运算译码阶段也可确认为动态。
在一个实施例中,储存在加载储存单元126C之运算储存器307中之加载运算可包括是否该加载系动态加载运算之对应指示,举例来说,储存在特定的条目310之该旗标字段321中。在此种实施例中,假如分别指示该加载将为静态或动态,则该动态加载指示可配置选择器355以选择局部预测器330或全局预测器340之输出。此外,在该实施例中,当存取该选择的预测器时,未用的预测器可能处在静止状态,从而降低了混合预测器350之电源消耗。
在替代的实施例中,动态加载状态之指示可储存在对应于该动态加载运算之局部预测器条目335内。举例来说,各局部预测器条目335可设成包括指示动态加载状态之附加的字段(未图标)。在该实施例之一个版本中,局部预测器330以及全局预测器340两者可同时存取特定的加载运算,并且储存在对应的局部预测器条目335中之该动态加载状态指示可配置选择器355以选择该适当的预测器之该输出。在该实施例之另一版本中,全局预测器340可依于储存在对应的局部预测器条目355中之动态加载状态指示之值而存取,从而潜在地降低电源消耗。
存储器文件以及依赖预测
在处理器100之一些实施例中,可执行存储器文件以促进在加载与储存指令中之依赖的确认。在该等实施例中,存储器文件运算之结果也可用以执行加载运算之依赖预测,如以下之详细说明。
图4A显示分派单元104中的一个实施例。在这个实施例中,分派单元104包括寄存器映像134以及存储器文件132。如以上所提之结合图1的说明,寄存器映像134可设成提供寄存器重新命名。寄存器映像134可接收各来源以及目的操作数之逻辑寄存器名称并且输出最近指派给该逻辑寄存器之实体寄存器之实体寄存器名称。存储器文件132包括存储器文件控制器202以及存储器文件储存器204。
存储器文件储存器204包括至少一个条目220。各条目220可包括寻址模式206与结合该条目之寻址模式之卷标208。当卷标产生时,各卷标可借着指示该数据值储存于何处来确认数据值(例如,在记录器缓冲内或在寄存器文件116内)。举例来说,如显示于例示的实施例中,各卷标可确认分配以储存该数据值之实体寄存器,如寄存器映像134所示。各寻址模式可包括用于在运算中指定地址之全部或一些之信息。举例来说,简要地参考图4B,显示示范性的寻址模式。在这个实施例中,该寻址模式206包括基本逻辑寄存器名称210、索引逻辑寄存器名称212、以及位移214。一些寻址模式206可包括在存储器中确认特定的片段(segment)之寄存器的片段逻辑寄存器名称。在一些实施例中存储器文件储存器204可从几个寄存器、锁存器、正反器、或其它时脉储存器执行。在替代的实施例中,存储器文件储存器204可包括至少一个随机存取存储器(RAM,Random Access Memory)胞元(cell)。
请注意,在一些实施例中,储存在存储器文件储存器204中之寻址模式206可包括少于指定用以运算之所有该寻址信息。举例来说,在存储器文件储存器204中之条目可储存比在位移字段214内所有用于指定位移之位较少之位。在其它的实施例中,该存储器文件控制器202可依于在存储器文件中之条目是否能够储存所有的寻址信息用以特定的运算而选择性地选择是否分配条目在存储器文件储存器204中。举例来说,假如在存储器文件储存器204中之各条目储存达到16位之位移信息,并且用于特定的运算之该寻址信息包括24位之位移信息,则该存储器文件控制器202可不分配用于该运算的寻址信息之存储器文件条目。
存储器文件控制器202可比较指定在未分派的运算之该寻址模式与这些储存在存储器文件储存器204中之条目内之寻址模式。假如运算的寻址模式不能相配于任何目前储存在存储器文件储存器204中之条目内之寻址模式(亦即,该运算的寻址模式遗漏于该存储器文件储存器中),则存储器文件控制器202可在存储器文件储存器204中分配新的条目以储存所有的或一些该运算的寻址模式。假如没有闲置的条目分配在存储器文件储存器204内,则存储器文件控制器202可利用置换架构,例如最近最少被使用者(LRU,Least Recently Used)、先进先出(FIFO,First In,First Out)、随机置换等选择一项条目而予覆写。
除了储存该运算的寻址模式于该分配的条目内之外,该存储器文件控制器202也可储存实体寄存器名称208,该实体寄存器名称208可包括通过该运算的寻址模式所确认之载出或储存到该存储器位置之确认值之卷标(例如,实体寄存器之名称)。举例来说,如果加载从存储器来之数据之加载运算正接受处理,则反应该加载运算所分配之该条目可储存分配以储存该加载运算之结果之实体寄存器之名称。假如写入数据至存储器位置之储存运算正在处理,则存储器文件控制器202可储存该寄存器之实体寄存器名称,其中该储存之来源值系储存在存储器文件储存器204中。
假如运算的寻址模式(或该模式的部分)系已储存于存储器文件204中之条目中(亦即是,该运算的寻址模式相合(hit)于该存储器文件储存器中),则该存储器文件控制器202可使用或修正包含该相配的寻址模式之条目。假如加载运算(从特定的地址加载数值至寄存器之运算),正在处理,则该存储器文件控制器202可以输出储存在相匹配的条目中之该实体寄存器名称208。假如储存运算(储存从寄存器来之值至特定地址之运算)正在处理,则该存储器文件控制器202可覆写卷标(例如,实体寄存器名称208),该卷标储存在具有已储存之该数据之卷标之相匹配条目内。
假如正在处理加载运算,并且该加载运算相合于存储器文件储存器204中,则由该存储器文件储存器202输出之卷标可用来连结借着该卷标对该加载运算之推测结果所确认之储存值。举例来说,在一些实施例中,当分派该加载运算至调度器118时,该卷标借着存储器文件132输出也可提供至调度器(例如,像是推测的来源操作数卷标)。调度器118可发送该加载运算以反应借着该卷标确认之值之有效性。执行核心124可执行该加载运算以致该连结值散布如同在结果总线130上之该加载运算之推测结果(请注意,在一些实施例中产生的该数据值如同该加载结果其本身可不作旗标或者在其它方面确认作为推测值)。在其它实施例中,该数据值可借着储存该卷标于推测的映像中而连结至该加载运算之推测结果。
该连结之结果,一旦可得到该数据值时(例如,在寄存器文件116或在结果总线130上)借着该卷标确认之该数据值可传送为该加载之推测结果,以便允许依赖运算利用该推测的结果执行。在很多的情况中,这可允许依赖运算执行,其系利用该加载运算之推测结果较早于若延迟其执行直到该加载运算之非推测的结果变成可得到时。
此外,当连结加载运算至如上所述之数据值,存储器文件132可设成传送该连结之指示至调度器118与该加载运算的操作数卷标信息(举例来说,存储器文件132可发送指示该连结状态之附加位)。当发送该加载运算至加载储存单元126C连同该加载运算已连结之指示时,分配给该加载运算之该条目310之旗标321可设成指示预测该加载运算系依赖的。在一个实施例中,依赖预测逻辑303可侦测该连结状态,并因此指示该依赖预测。然而,在另一实施例中,依赖预测逻辑303以及依赖验证逻辑305可从加载储存单元126C省略。在该实施例中,存储器文件132可提供该依赖预测之唯一指示用于加载运算。
图5为显示预测是否特定的加载运算是依赖于较旧的储存运算的方法的一个实施例。集合参考图1至图4B,运算开始于方块500,其中加载运算发送至加载储存单元126C。反应已发送之该加载运算,依赖预测逻辑303可设成预测是否该加载运算系依赖于较旧之储存运算(方块502)。举例来说,在一个实施例中,依赖预测逻辑303可设成存取局部预测器330以预测加载依赖,同时在其它的实施例中,可使用全局的预测器340或混合预测器350,或可从其它单元(例如存储器文件132)接收依赖预测信息。
响应预测,加载储存单元126C可设成决定该预测之类型(方块504)。假如预测该加载运算系依赖的,则加载储存单元126C可设成避免该加载运算执行直到已计算较旧于加载之储存运算之该等地址为止(方块506)。假如预测该加载运算系依赖的,则在已计算至少一个较旧之储存运算之该等地址之前,加载储存单元126C可设成允许该加载运算执行(方块508)。
随后判定预测该加载运算系独立的,加载储存单元126C可设成侦测是否该加载运算已错误预测(方块510)。举例而言,于一个实施例中,加载储存单元126C可包括储存至加载(store-to-load)传送比较器,配置成以侦测是否该预测依赖的加载运算之该地址相匹配于较旧的储存运算之地址。假如没有出现错误预测,一旦完成该加载运算,则该加载运算可允许退返(retire)(方块512)。假如侦测到错误预测,则加载储存单元126C可设成提供重新操作指示给调度器118作为反应,指示该预测独立之加载运算在未来之时间点应该重新发送(方块514)。
应注意,虽然包括不同组合之局部与全局预测器之依赖预测逻辑303之各种的实施例已说明加载储存单元124C之特征,但是应该考虑在一些实施例中,这些依赖预测逻辑303之变化可位于微处理器100之不同单元内,举例来说,例如分派单元104内。再详加考虑,图3A至图4的该实施例的不同的组合是可能的。举例来说,考虑从存储器文件134取得之依赖预测可实行具有或者是不具有局部或全局预测器。
示范的计算机系统
图6为显示包括经由总线桥接器902耦接至各种不同的系统组件的处理器100的计算机系统900之的一个实施例的方块图。处理器100可包括如上所述之加载储存单元之一个实施例。计算机系统之其它实施例系可能的并且可考量的。在图标系统中,主存储器200系经由存储器总线906耦接至总线桥接器902,以及图形控制器908系经由AGP总线910耦接至总线桥接器902。几个PCI装置912A至912B系经由PCI总线914耦接至总线桥接器902。第二总线桥接器916也可设置以容纳电接口经由EISA/ISA总线920到至少一个EISA或ISA装置918。在这个实施例中,处理器10系经由CPU总线924耦接至总线桥接器902,并且耦接至选择性的第二层高速缓存(L2 cache)928。在一些实施例中,该处理器100可包括整合的第一层高速缓存(L1 cache)(未图标)。
总线桥接器902提供介于处理器100、主要存储器200、图形控制器908、以及附加到PCI总线914之装置的接口。当运算从连接至总线桥接器902之其中一个装置接收时,总线桥接器902确认该运算之目标(例如,特定之装置、或在PCI总线914之情况,该目标系在PCI总线914上)。总线桥接器902递送该运算至该目标装置。总线桥接器902一般将由该来源装置或总线所用的通讯协议送来之运算转译至由该目标装置或总线所用的通讯协议。
除了为PCI总线914设置接口至ISA/EISA总线之外,第二总线桥接器916可结合附加的功能。输入/输出控制器(未图标),无论来自外部或与第二总线桥接器916整合都行,也可包含在计算机系统900内以提供用在键盘与鼠标922以及不同的序列与并行端口操作上的支持。在其它的实施例中,外部快取单元(未图标)也可耦接至介于处理器100与总线桥接器902间之CPU总线924。或可取而代之,该外部的快取可耦接到总线桥接器902以及用于该外部快取之快取控制逻辑可整合至总线桥接器902内。第二层高速缓存928系以背侧配置至处理器100显示。请注意,第二层高速缓存928可从处理器分离,与处理器100整合至卡匣内(例如插槽1(slot 1)或插槽A(slot 2))或与处理器100整合至半导体基板上。
主存储器200系于其内储存有应用程序并且为处理器100主要执行来源之存储器。适合的主存储器200可包括动态随机存取存储器(DRAM,Dynamic Random Access Memory)。举例来说,多个同步随机存取存储器(Synchronous DRAM)或Rambus动态随机存取存储器(RDRAM,Rambus DRAM)之存储器库(bank)可能适合。
PCI装置912A-912B系例示各种不同的周边装置,例如网络适配卡、视讯加速器、声卡、硬盘机或软盘机或驱动控制器、小型计算机系统接口(SCSI,Small Computer System Interface)配接器以及电话卡。类似地,ISA装置918系例示不同类型之周边装置,例如调制解调器、声音卡以及各种不同数据撷取卡,例如通用接口总线(GPIB,General Purpose Interface Bus)或场总线适配卡(field businterface cards)。
图形控制器908系提供以控制在显示器926上文字与影像之呈现。图形控制器908可具体化在该技术领域中广为所知的典型图形加速器以呈现能有效地转入或转出主存储器200之三度空间数据结构。图形控制器908因此可以是AGP总线910的主控者,其中图形控制器908能在总线桥接器902内要求与接收存取至目标接口因而获得存取至主存储器200。专用的图形总线从主存储器200容纳快速的数据采集。为了某种操作,图形控制器908可在AGP总线910上更进一步设成产生PCI通讯协议异动(transaction)。总线桥接器902之AGP接口于是可包括功能性支持AGP通讯协议异动以及PCI通讯协议目标与起始器异动。显示器926系基于影像或文字能显示之任何电子显示器。适合的显示器926包括阴极射线管(CRT,cathode ray tube)、液晶显示器(LCD,liquid crystal display)等。
要注意的是,虽然该AGP、PCI以及ISA或EISA总线在上述的说明中已使用为实例,然而当需要时,可置换以任何总线结构。更需注意的是,计算机系统900可包括外加的处理器(例如,处理器100a显示为计算机系统900之选择性的组件)之多重处理之计算机系统。处理器100a可类似于处理器100。尤指处理器100a可以是处理器100完全相同的复制。处理器100a可经由独立总线(如图6所示)连接到总线桥接器902或与处理器100分享CPU总线924。此外,处理器100a可耦接至选择性的第二层高速缓存928a,类似于第二层高速缓存928。
现转到图7,显示可包括具有如上所述之加载储存单元的一个实施例之处理器100之计算机系统900之另一实施例。其它实施例系可能并予考量的。在图7的实施例中,计算机系统900包括几个处理节点1012A、1012B、1012C、以及1012D。各处理节点经由包含于各个别的处理节点1012A至1012D之存储器控制器1016A至1016D耦接至个别的存储器200A至200D。此外,处理节点1012A至1012D包括用于沟通介于该处理节点1012A至1012D间之接口逻辑。举例来说,处理节点1012A包括接口逻辑1018A用以与处理节点1212B沟通、接口逻辑1018B用以与处理节点1012C沟通、以及第3接口逻辑1018C用以与又另一处理节点(未图标)沟通。类似地,处理节点1212B包括接口逻辑1018D、1018E、以及1018F;处理节点1012C包括接口逻辑1018G、1018H、以及1018I;以及处理节点1012D包括接口逻辑1018J、1018K、以及1018L。处理节点1012D系耦接经由接口逻辑1018L与多个输入/输出装置(例如,以菊链式串接型态之装置1012A至1012B沟通。其它处理节点可与其它I/O装置以类似方式沟通。
处理节点1012A至1012D施行以封包为基础的连结用以内部处理节点的沟通。在本实施例中,该连结系施行如单向组线(例如,线1024A系用来从处理节点1012A至处理节点1012B传送封包以及线1024B系用来从处理节点1012B至处理节点1012A传送封包)。其它线组1024C至1024H系用来传送介于其它处理节点间之封包,如图7中所示。通常,各组线1024可包括至少一条数据线、对应到该数据线之至少一条时脉线、以及指示传送封包形式之至少一条控制线。该连结可以快取一致性的形式运作用以介于各处理节点间之沟通,或以非一致之形式用于处理节点与I/O装置间(或总线桥接器至传统架构之I/O总线,例如,PCI总线或ISA总线)之沟通。此外,该连结可以利用如图所示之介于I/O装置间之菊炼式结构以非一致性的方式运作。要注意的是,封包从一个处理节点传送至另一个处理节点可穿越至少一个中间节点。举例来说,如图7所示,封包通过处理节点1012A至处理节点1012D之传输可穿越处理节点1012B或处理节点1012C之任一者。可以使用任一适当的路由算法。计算机系统900之其它实施例可包括比在图7中所示实施例更多或更少之处理节点。
一般而言,封包可传送为介于节点间之各线1024上至少一个位时间。位时间可以是在对应的时脉线上之时脉讯号之上升或下降波缘。封包可包括命令封包用以开始异动、侦测封包用以维持高速缓存的一致性、以及反应封包用以响应侦测与命令。
处理节点1012A至1012D,除了存储器控制器与接口逻辑外,还可包括至少一个处理器。广泛地说,处理节点包含至少一个处理器,并且当需要时,可选择性地包含存储器控制器用以与存储器以及其它的逻辑沟通。详言之,各处理节点1012A至1012D可包括至少一个处理器100之复制。外部的接口单元可包括在该节点内之接口逻辑1018,以及该存储器控制器1016。
存储器200A至200D可包含任一适合的存储器装置。举例来说,存储器200A至200D可包含至少一个RAMBUS DRAMs(RDRAMs)、同步动态随机存取存储器(SDRAMs)、静态随机存取存储器(SRAM,Static RAM)等。计算机系统900之地址空间系在存储器200A至200D之间划分。各处理节点1012A至1012D可包括存储器映像,其系用来判定哪个地址系映像到哪个存储器200A至200D,并且因此用于特定之地址之存储器要求将路由到哪个处理节点1012A至1012D。在一个实施例中,在计算机系统900内用于地址之一致性的点系耦接对应该地址之该存储器储存字节之该存储器控制器1016A至1016D。换言之,该存储器控制器1016A至1016D系负责确保各存储器存取到该对应的存储器200A至200D以快取一致性的方式出现。存储器控制器1016A至1016D可包含控制回路用以介接至存储器200A至200D。此外,存储器控制器1016A至1016D可包括要求队列用以队列等候存储器要求。
接口逻辑1018A至1018L可包含各种不同的缓冲器用以从该连结(link)接收封包并且用以基于该连结而缓冲将传送的封包。计算机系统900可使用任何适合的流程控制机制用以传送封包。举例来说,在一个实施例中,各接口逻辑1018储存在连接至该接口逻辑之连结之另一端之该接收器内之各类型缓冲之数目之计数。该接口逻辑不传送封包,除非该接收之接口逻辑具有闲置的缓冲器以储存该封包。当接收的缓冲器借着路由封包向前而释出时,该接收接口逻辑传送讯息至该发送接口逻辑以指示该缓冲器已释出。该机制可称为“以联票为基础(coupon-based)”之系统。
I/O装置1020A-1020B可以是任何适合的I/O装置。举例来说,I/O装置1020A至1020B可包括用以与另一计算机系统沟通并与该另一计算机系统耦接之该等装置(例如,网络适配卡或调制解调器)。此外,I/O装置1020A至1020B可包括视讯加速器、声卡(audio card)、硬盘或软盘机或软硬盘机控制器、小型计算机系统接口(SCSI,SmallComputer System Interface)配接器以及电话卡、声音卡(soundcard)、以及例如通用接口总线(GPIB)或场总线适配卡之各种不同的数据撷取卡。
如本文所用,名词“时脉周期(Clock cycle)”参照该指令处理管线之不同的阶段完成其任务之时间间隔。根据所定义该时脉周期之时脉讯号,指令与计算的数值由存储器组件(例如,寄存器或数组)所捕获。举例来说,根据时脉讯号之波缘之上升与下降,存储元件可捕获数值。
以上讨论说明讯号被“确立(asserted)”。当讯号传送信息的特定片段之数值指示时,讯号可定义为确立。当讯号传送二进制1的数值时,或代之以当讯号传送二进制0的数值时,特定的讯号可定义将确立。
一旦完全了解了上述的发明,则不同的变化与修改对在这个技术领域熟知此项技能之人士将会更清晰明了。以下的申请专利范围将解释以包含所有的该变动与修改。
Claims (10)
1.一种微处理器(100),包括:
设成发送运算之调度器(118);以及
耦接以接收由该调度器(118)发送的存储器运算的加载储存单元(126C),且该加载储存单元(126C)用以执行该存储器运算;
其中,该加载储存单元(126C)进一步设成:
预测是否特定的加载运算是依赖于较旧的储存运算;
在计算该较旧储存运算的地址前,响应预测该特定的加载运算是独立于该较旧的储存运算而执行该特定的加载运算;
在预测该特定的加载运算是独立于该较旧的储存运算后,侦测是否该特定的加载运算已被错误预测;以及
提供重新操作指示至该调度器(118),该调度器响应侦测该特定的加载运算已经被错误预测而指示该加载运算应该重新发送。
2.如权利要求1所述的微处理器(100),其中,该加载储存单元(126C)包括含有多个局部预测器条目的局部预测器(335),其中,该多个局部预测器条目(335)的每个包括依赖预测值(337),且其中,该加载储存单元(126C)进一步设成藉由存取对应于该特定的加载运算的特定的局部预测器条目(335)以及评估包含于该特定的局部预测器条目(335)中的特定的依赖预测值(337)而预测是否该特定的加载运算是依赖于该较旧的储存运算。
3.如权利要求1所述的微处理器,其中,该加载储存单元(126C)包括含有全局历史寄存器(342)与多个全局预测器条目(345)的全局预测器(340),其中,该全局历史寄存器(342)设成储存对应于多个已执行加载运算的多个个别的依赖值,其中,各该多个全局预测器条目(345)包括依赖预测值(347),且其中,该加载储存单元(126C)进一步设成藉由存取对应于该全局历史寄存器(342)的特定的全局预测器条目(345)以及评估包含于该特定的全局预测器条目(345)中的特定的依赖预测值(347)而预测是否该特定的加载运算是依赖于该较旧的储存运算。
4.如权利要求1所述的微处理器,其中,该加载储存单元(126C)包括:
包含多个局部预测器条目(335)的局部预测器(330),其中,该多个局部预测器条目(335)的每个包括依赖预测值(337);以及
包含全局历史寄存器(342)与多个全局预测器条目(345)的全局预测器(340),其中,该find(342)设成储存对应于多个已执行的加载运算之多个个别的依赖值,其中,各该复数个全局预测器条目(345)包括依赖预测值(347);
且其中,该加载储存单元(126C)进一步设成预测是否该特定的加载运算是依赖于该较旧的储存运算,是藉由:
判定是否该特定的加载运算是动态加载运算;
响应判定该特定的加载运算不是动态加载运算,存取对应于该特定的加载运算的特定的局部预测器条目(335),以及评估包含于该特定的局部预测器条目(335)中的局部依赖预测值(337);以及
响应判定该特定的加载运算是动态加载运算,存取对应于该全局历史寄存器(342)的特定的全局预测器条目(345),以及评估包含于该特定的全局预测器条目(345)中的全局依赖预测值(347)。
5.如权利要求1所述的微处理器,进一步包括耦接至该加载储存单元(126C)的存储器文件(132),且该存储器文件包括设成储存第一寻址模式(206)与第一卷标(208)的条目(220),其中,该存储器文件(132)设成比较包含于该条目(220)中的第一寻址模式(206)与对应于该特定的加载运算之第二寻址模式,其中,假如该第二寻址模式相匹配于储存在该条目(220)中的第一寻址模式,则该存储器文件(132)设成连结由该第一卷标(208)确认的数据值至该特定的加载运算的推测结果,且其中,预测该特定的加载运算是否依赖于该较旧的储存运算包含侦测对应于该特定的加载运算的连结是否存在。
6.一种方法,包括:
接收加载运算;
预测是否该加载运算依赖于较旧的储存运算;
在计算该较旧的储存运算的地址前,响应预测该特定的加载运算是独立于该较旧的储存运算而执行该加载运算;
在预测该加载运算是独立于该较旧之储存运算后,侦测是否该加载运算已被错误预测;以及
提供重新操作指示至该调度器,该调度器响应侦测该加载运算已被错误预测而指示该加载运算应重新发送。
7.如权利要求6所述的方法,其中,预测是否该加载运算依赖于该较旧的储存运算包括存取对应于该加载运算的局部预测器条目(335)以及评估包含于该局部预测器条目(335)中的依赖预测值(337)。
8.如权利要求6所述的方法,其中,预测是否该加载运算依赖于该较旧的加载运算包括存取对应于全局历史寄存器(342)的全局预测器条目(3/15)以及评估包含于该全局预测器条目(345)中的依赖预测值(347),其中,该全局历史寄存器(342)设成储存对应于多个已执行的加载运算的多个个别依赖值。
9.如权利要求6所述的方法,其中,预测是否该加载运算依赖于该较旧的储存运算,包括:
判定是否该加载运算是动态加载运算;
响应判定该加载运算不是动态加载运算,存取对应于该加载运算的局部预测器条目(335),以及评估包含于该局部预测器条目(335)中的局部依赖预测值(337);以及
响应判定该加载运算是动态加载运算,存取对应于全局历史寄存器(342)的全局预测器条目(345),以及评估包含于该全局预测器条目(345)中的全局依赖预测值(347),其中,该全局历史寄存器(342)设成储存对应于多个已执行的加载运算的多个个别依赖值。
10.一种计算机系统,包括:
存储器(200);以及
耦接至该存储器(200)的处理器(100),其中,该处理器(100)包含:
设成发送运算的调度器(118);以及
耦接以接收由该调度器(118)发送的财产权运算的加载储存单元(126C),且该加载储存单元设成执行该存储器运算;
其中,该加载储存单元(126C)进一步设成:
预测是否特定的加载运算是依赖于较旧的储存运算;
在计算该较旧的储存预算的地址前,响应预测该特定的加载运算是独立于该较旧的储存运算而执行该特定的加载运算;
在预测该特定的加载运算是独立于该较旧的储存运算后,侦测是否该特定的加载运算已被错误预测;以及
提供重新操作指示至该调度器(118),该调度器响应侦测该特定的加载运算已被错误预测而指示该加载运算应该重新发送。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/936,296 | 2004-09-08 | ||
US10/936,296 US7415597B2 (en) | 2004-09-08 | 2004-09-08 | Processor with dependence mechanism to predict whether a load is dependent on older store |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101014934A true CN101014934A (zh) | 2007-08-08 |
CN100524206C CN100524206C (zh) | 2009-08-05 |
Family
ID=35159735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005800301525A Active CN100524206C (zh) | 2004-09-08 | 2005-06-23 | 具有相关机制以预测是否加载与较旧储存相关的处理器 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7415597B2 (zh) |
JP (1) | JP5294632B2 (zh) |
KR (1) | KR101192814B1 (zh) |
CN (1) | CN100524206C (zh) |
DE (1) | DE112005002173B4 (zh) |
GB (1) | GB2432693B (zh) |
TW (1) | TWI383320B (zh) |
WO (1) | WO2006028555A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109716292A (zh) * | 2016-09-19 | 2019-05-03 | 高通股份有限公司 | 在块原子数据流架构中提供存储器相依性预测 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2881246B1 (fr) * | 2005-01-21 | 2007-03-23 | Meiosys Soc Par Actions Simpli | Procede perdictif de gestion, de journalisation ou de rejeu d'operations non deterministes au sein du deroulement d'un processus applicatif |
US7590825B2 (en) * | 2006-03-07 | 2009-09-15 | Intel Corporation | Counter-based memory disambiguation techniques for selectively predicting load/store conflicts |
JP5145809B2 (ja) * | 2007-07-31 | 2013-02-20 | 日本電気株式会社 | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム |
US20090138890A1 (en) * | 2007-11-21 | 2009-05-28 | Arm Limited | Contention management for a hardware transactional memory |
US8285947B2 (en) * | 2009-02-06 | 2012-10-09 | Apple Inc. | Store hit load predictor |
US20100306509A1 (en) * | 2009-05-29 | 2010-12-02 | Via Technologies, Inc. | Out-of-order execution microprocessor with reduced store collision load replay reduction |
US20100325395A1 (en) * | 2009-06-19 | 2010-12-23 | Doug Burger | Dependence prediction in a memory system |
CN101907984B (zh) * | 2009-08-07 | 2014-10-29 | 威盛电子股份有限公司 | 指令处理方法以及其所适用的超纯量管线微处理器 |
CN101944012B (zh) * | 2009-08-07 | 2014-04-23 | 威盛电子股份有限公司 | 指令处理方法以及其所适用的超纯量管线微处理器 |
US8601240B2 (en) * | 2010-05-04 | 2013-12-03 | Oracle International Corporation | Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution |
US8918625B1 (en) | 2010-11-24 | 2014-12-23 | Marvell International Ltd. | Speculative scheduling of memory instructions in out-of-order processor based on addressing mode comparison |
US9442735B1 (en) * | 2012-04-13 | 2016-09-13 | Marvell International Ltd. | Method and apparatus for processing speculative, out-of-order memory access instructions |
US9128725B2 (en) * | 2012-05-04 | 2015-09-08 | Apple Inc. | Load-store dependency predictor content management |
US9600289B2 (en) | 2012-05-30 | 2017-03-21 | Apple Inc. | Load-store dependency predictor PC hashing |
US9384002B2 (en) * | 2012-11-16 | 2016-07-05 | International Business Machines Corporation | Speculative finish of instruction execution in a processor core |
US9158691B2 (en) | 2012-12-14 | 2015-10-13 | Apple Inc. | Cross dependency checking logic |
US9141803B2 (en) | 2013-02-26 | 2015-09-22 | Microsoft Technology Licensing, Llc | Self-healing of operating system components |
US9619750B2 (en) * | 2013-06-29 | 2017-04-11 | Intel Corporation | Method and apparatus for store dependence prediction |
US9524164B2 (en) | 2013-08-30 | 2016-12-20 | Advanced Micro Devices, Inc. | Specialized memory disambiguation mechanisms for different memory read access types |
US9286073B2 (en) * | 2014-01-07 | 2016-03-15 | Samsung Electronics Co., Ltd. | Read-after-write hazard predictor employing confidence and sampling |
US9710268B2 (en) | 2014-04-29 | 2017-07-18 | Apple Inc. | Reducing latency for pointer chasing loads |
US10514925B1 (en) | 2016-01-28 | 2019-12-24 | Apple Inc. | Load speculation recovery |
US10437595B1 (en) | 2016-03-15 | 2019-10-08 | Apple Inc. | Load/store dependency predictor optimization for replayed loads |
US20170329607A1 (en) * | 2016-05-16 | 2017-11-16 | International Business Machines Corporation | Hazard avoidance in a multi-slice processor |
US10528353B2 (en) | 2016-05-24 | 2020-01-07 | International Business Machines Corporation | Generating a mask vector for determining a processor instruction address using an instruction tag in a multi-slice processor |
US10467008B2 (en) | 2016-05-31 | 2019-11-05 | International Business Machines Corporation | Identifying an effective address (EA) using an interrupt instruction tag (ITAG) in a multi-slice processor |
US10740107B2 (en) * | 2016-06-01 | 2020-08-11 | International Business Machines Corporation | Operation of a multi-slice processor implementing load-hit-store handling |
CN108920191B (zh) * | 2018-06-05 | 2020-11-20 | 上海兆芯集成电路有限公司 | 处理器电路及其操作方法 |
US10929142B2 (en) * | 2019-03-20 | 2021-02-23 | International Business Machines Corporation | Making precise operand-store-compare predictions to avoid false dependencies |
US11243774B2 (en) | 2019-03-20 | 2022-02-08 | International Business Machines Corporation | Dynamic selection of OSC hazard avoidance mechanism |
US10606603B1 (en) * | 2019-04-08 | 2020-03-31 | Ye Tao | Methods and apparatus for facilitating a memory mis-speculation recovery |
CN112540794A (zh) * | 2019-09-20 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 处理器核、处理器、装置和指令处理方法 |
US20220121447A1 (en) * | 2021-12-23 | 2022-04-21 | Intel Corporation | Hardening cpu predictors with cryptographic computing context information |
US20240354109A1 (en) * | 2023-04-21 | 2024-10-24 | Apple Inc. | Re-use of Speculative Load Instruction Results from Wrong Path |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5666506A (en) * | 1994-10-24 | 1997-09-09 | International Business Machines Corporation | Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle |
US5781752A (en) | 1996-12-26 | 1998-07-14 | Wisconsin Alumni Research Foundation | Table based data speculation circuit for parallel processing computer |
JPH11212788A (ja) * | 1998-01-28 | 1999-08-06 | Toshiba Corp | プロセッサのデータ供給装置 |
US6658554B1 (en) * | 1999-03-09 | 2003-12-02 | Wisconsin Alumni Res Found | Electronic processor providing direct data transfer between linked data consuming instructions |
US6502188B1 (en) * | 1999-11-16 | 2002-12-31 | Advanced Micro Devices, Inc. | Dynamic classification of conditional branches in global history branch prediction |
US6484254B1 (en) * | 1999-12-30 | 2002-11-19 | Intel Corporation | Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses |
US6542984B1 (en) * | 2000-01-03 | 2003-04-01 | Advanced Micro Devices, Inc. | Scheduler capable of issuing and reissuing dependency chains |
JP3729087B2 (ja) * | 2001-05-23 | 2005-12-21 | 日本電気株式会社 | マルチプロセッサシステム、データ依存投機実行制御装置およびその方法 |
US7024545B1 (en) * | 2001-07-24 | 2006-04-04 | Advanced Micro Devices, Inc. | Hybrid branch prediction device with two levels of branch prediction cache |
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 |
US7058795B2 (en) * | 2002-06-25 | 2006-06-06 | Intel Corporation | Method and apparatus of branch prediction |
US6944744B2 (en) | 2002-08-27 | 2005-09-13 | Advanced Micro Devices, Inc. | Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor |
US6950925B1 (en) * | 2002-08-28 | 2005-09-27 | Advanced Micro Devices, Inc. | Scheduler for use in a microprocessor that supports data-speculative execution |
US7024537B2 (en) * | 2003-01-21 | 2006-04-04 | Advanced Micro Devices, Inc. | Data speculation based on addressing patterns identifying dual-purpose register |
US7165167B2 (en) * | 2003-06-10 | 2007-01-16 | Advanced Micro Devices, Inc. | Load store unit with replay mechanism |
-
2004
- 2004-09-08 US US10/936,296 patent/US7415597B2/en active Active
-
2005
- 2005-06-23 CN CNB2005800301525A patent/CN100524206C/zh active Active
- 2005-06-23 KR KR1020077007256A patent/KR101192814B1/ko active IP Right Grant
- 2005-06-23 WO PCT/US2005/022426 patent/WO2006028555A2/en active Application Filing
- 2005-06-23 DE DE112005002173T patent/DE112005002173B4/de active Active
- 2005-06-23 JP JP2007531161A patent/JP5294632B2/ja active Active
- 2005-06-23 GB GB0704887A patent/GB2432693B/en active Active
- 2005-08-08 TW TW094126693A patent/TWI383320B/zh active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109716292A (zh) * | 2016-09-19 | 2019-05-03 | 高通股份有限公司 | 在块原子数据流架构中提供存储器相依性预测 |
CN109716292B (zh) * | 2016-09-19 | 2023-01-24 | 高通股份有限公司 | 在块原子数据流架构中提供存储器相依性预测 |
Also Published As
Publication number | Publication date |
---|---|
US7415597B2 (en) | 2008-08-19 |
GB2432693B (en) | 2008-03-12 |
US20060095734A1 (en) | 2006-05-04 |
TW200620118A (en) | 2006-06-16 |
JP2008512769A (ja) | 2008-04-24 |
JP5294632B2 (ja) | 2013-09-18 |
KR20070068351A (ko) | 2007-06-29 |
GB2432693A (en) | 2007-05-30 |
GB0704887D0 (en) | 2007-04-18 |
TWI383320B (zh) | 2013-01-21 |
DE112005002173T5 (de) | 2007-09-27 |
DE112005002173B4 (de) | 2009-04-16 |
WO2006028555A2 (en) | 2006-03-16 |
KR101192814B1 (ko) | 2012-10-18 |
CN100524206C (zh) | 2009-08-05 |
WO2006028555A3 (en) | 2006-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100524206C (zh) | 具有相关机制以预测是否加载与较旧储存相关的处理器 | |
JP3830651B2 (ja) | ループとストライドの一方または両方の予測を行うロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法 | |
KR100953207B1 (ko) | 로드/저장 오퍼레이션들을 바이패스하기 위하여 추론적 소스 오퍼랜드를 사용하는 시스템 및 방법 | |
KR101019224B1 (ko) | 이중 용도 레지스터를 식별하는 어드레스 지정 패턴에기반한 데이터 추측 | |
JP4105684B2 (ja) | ロード操作の推測結果をレジスタ値にリンクするためのシステムおよび方法 | |
CN101427213B (zh) | 用于实现多态分支预测器的方法和装置 | |
JP4170292B2 (ja) | データの投機的実行をサポートするマイクロプロセッサで用いるスケジューラ | |
CN100424635C (zh) | 验证将加载作业的推测结果连结到缓存器值的存储档案的系统及方法 | |
CN100407137C (zh) | 推测性地执行程序指令的方法、微处理器及系统 | |
US8583894B2 (en) | Hybrid prefetch method and apparatus | |
US8285937B2 (en) | Fused store exclusive/memory barrier operation | |
CN100449499C (zh) | 在微处理器恢复单元中进行写队列读数据的方法和装置 | |
CN103823722B (zh) | 基于请求类型的选择性后置数据错误检测 | |
KR101093784B1 (ko) | 리플레이 메커니즘을 구비한 로드 저장 유닛 | |
CN100432924C (zh) | 用于在数据推测微处理器中操作重放的系统及方法 | |
US20030126409A1 (en) | Store sets poison propagation | |
KR101057163B1 (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 |