CN115702415A - 响应于处理器中的危险而在指令流水线冲刷后重用已取回的、经冲刷的指令以减少指令重取 - Google Patents
响应于处理器中的危险而在指令流水线冲刷后重用已取回的、经冲刷的指令以减少指令重取 Download PDFInfo
- Publication number
- CN115702415A CN115702415A CN202180044701.3A CN202180044701A CN115702415A CN 115702415 A CN115702415 A CN 115702415A CN 202180044701 A CN202180044701 A CN 202180044701A CN 115702415 A CN115702415 A CN 115702415A
- Authority
- CN
- China
- Prior art keywords
- instruction
- refill
- fetch
- pipeline
- instructions
- 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.)
- Pending
Links
- 230000004044 response Effects 0.000 title claims abstract description 83
- 238000011010 flushing procedure Methods 0.000 title abstract description 13
- 238000012545 processing Methods 0.000 claims abstract description 98
- 230000000593 degrading effect Effects 0.000 claims abstract description 6
- 238000001514 detection method Methods 0.000 claims description 69
- 238000000034 method Methods 0.000 claims description 37
- 230000015654 memory Effects 0.000 description 47
- 230000008569 process Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 12
- 230000001419 dependent effect Effects 0.000 description 7
- 230000006399 behavior Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000116 mitigating effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 231100001261 hazardous Toxicity 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation 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
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
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)
Abstract
响应于处理器中的危险而在指令流水线冲刷之后重用已取回的、已冲刷的指令以减少指令重取而被公开。指令处理电路被配置为在指令流水线中的预执行阶段检测已取回的性能降级指令(PDI),其可能导致精确中断,该精确中断导致指令流水线的冲刷。响应于在指令流水线中检测PDI,指令处理电路被配置为在流水线再填充电路中捕获在PDI之后的指令流水线处理的已取回的PDI和/或其后继、较新的已取回指令。如果指令流水线中PDI的稍后执行导致指令流水线的冲刷,则指令处理电路可以将先前从流水线再填充电路捕获的已取回的PDI和/或其较新的指令注入到要被处理的指令流水线中,而这样的指令无需被重取。
Description
技术领域
本公开的技术涉及计算机处理器(“处理器”),并且更具体地涉及要在处理器中执行的计算机程序指令的取回。
背景技术
微处理器,也称被为“处理器”,针对各种应用执行计算任务。传统的微处理器包括中央处理单元(CPU),该中央处理单元包括一个或多个处理器核,也被称为“CPU核”。CPU执行计算机程序指令(“指令”),也被称为软件指令,以执行基于数据的操作并且生成结果,即产生的值。处理器中每个指令的处理被分到一系列不同的阶段或步骤中,被称为指令流水线。这允许多个指令在不同的阶段同时被处理,以增加指令处理吞吐量,而不是在处理下一个指令之前每个指令被顺序处理并且完全被执行。指令流水线步骤在处理器中的一个或多个指令流水线中被执行,每个指令流水线由多个处理阶段组成。
如果指令流水线中的所有流水线阶段都可以在指令流水线上并发处理指令,则最佳的处理器性能可以被实现。然而,危险可能发生在指令流水线中,其中指令无法在没有导致不正确的计算结果的情况下被执行。可能导致指令流水线被冲刷的危险的一个示例是结构危险。结构危险的示例是无法将条目加载到可能已满的加载队列中的加载指令。如果加载指令无法执行,则死锁可能在指令流水线中发生。另一个可能导致指令流水线被冲刷的危险的示例是由控制流指令的执行导致的控制危险,该指令会导致处理器中的精确中断。可能导致控制危险的控制流指令的一个示例是条件分支指令。条件分支指令包括谓词条件,该谓词条件在指令流水线的稍后执行阶段未被完全评估,以确定指令流是否将分支。为了不必在执行条件分支指令之前暂停将条件分支指令后面的后继、较新指令取回到指令流水线中,控制流预测电路可以在处理器中被提供,以推测地预测条件分支指令的分支目标地址。然后,处理器可以基于分支目标地址的预测,在条件分支指令的取回之后,在指令流水线的获取阶段中推测性地取回后继指令。
如果在执行中实际解析的分支目标地址被确定与预测的分支地址匹配,则在指令流水线中暂停不会发生。这是因为当条件分支指令到达指令流水线的执行阶段时,在预测的分支目标地址开始的后继指令将被正确地取回并且已经存在于指令流水线中。然而,如果预测的分支目标地址和解析的分支目标地址不匹配,则在指令流水线中预测失误的分支危险会发生,从而导致精确中断。因此,指令流水线将充满指令流水线中的各个阶段中现有的、先前取回的指令。指令流水线的取回阶段被指示从正确的、已解析的分支目标取回新指令。因此,指令流水线中的阶段将保持休眠,直到新获取的指令通过指令流水线进行处理和执行,从而降低指令吞吐量性能。
在处理分支指令以外的指令时,还可能遇到其他情况,这些情况会导致结构危险,从而导致指令流水线的冲刷。示例包括死锁和由于缺乏资源(诸如队列中的可用空间)而无法被执行的指令。
发明内容
本文公开的示例性方面包括响应于处理器中的危险,在指令流水线冲刷之后重用已取回的、已冲刷的指令,以减少指令重取。该处理器包括指令处理电路,该指令处理电路被配置为将指令取回到指令流水线中,以作为指令流水线的一部分在执行阶段被处理和被执行。指令处理电路中的执行电路被配置为响应于在执行指令时遇到危险(例如,结构危险或控制流危险)而生成精确中断。例如,精确中断可能是由于预测失误的条件分支指令而被产生的,其中来自不正确指令流路径的条件分支指令上的后继、控制依赖指令已被取回到指令流水线中。响应于精确中断,指令处理电路被配置为冲刷导致精确中断的指令及其后继、指令流水线中较新的指令,以克服危险。这导致指令流水线中的减少的指令吞吐量。如果这些已取回指令可以在冲刷之后在指令流水线中复用,而不必被重取,则这些已取回指令可以被注入到指令流水线中,而无需重新获取这些指令,从而减轻了冲刷减少的指令。
在这方面,在本文所公开的示例性方面中,处理器中的指令处理电路被配置为在指令流水线中的预执行阶段检测已取回指令,该指令可能导致精确的中断,该精确中断导致指令流水线的冲刷。这些指令可以被称为性能降级指令(PDI)。例如,指令处理电路可以被配置为在指令流水线的译码阶段中被译码后检测PDI。响应于在指令流水线中检测PDI,指令处理电路被配置为在流水线取回再填充电路中捕获已取回的PDI(如果尚未存在)以及在PDI后面的在指令流水线中处理的后继、较新的已取回指令。因此,如果指令流水线中的PDI的执行导致精确中断发生,从而导致指令流水线的冲刷(冲刷事件),然后指令处理电路可以确定所检测指令(即,PDI和/或后继指令)是否存在于流水线取回再填充电路中,如先前所捕获。如果所检测指令存在于流水线取回再填充电路中,则指令处理电路可以将所检测指令及其后继、先前在流水线取回再填充电路中捕获的较新的指令注入到要处理的指令流水线中,而这样的指令无需重新被取回。因此,与重取这些指令相关联的延迟不会在指令流水线的指令吞吐量中产生。指令处理电路可以向指令流水线中的获取阶段提供“贯穿”程序计数器(PC),以知道从哪里开始重取的指令必须响应于冲刷事件而已取回指令被取回,因为它们不能从流水线取回再填充电路被注入。贯穿PC是流水线取回再填充电路中最后捕获的较新指令之后的下一个指令的PC。指令处理电路可以被配置为在与所捕获的PDI相关联的流水线取回再填充电路中捕获贯穿PC。
在其他示例性方面,指令流水线电路还可以被配置为在指令处理电路中捕获用于具有可变指令流路径的PDI的指令流路径信息。例如,在条件分支指令或间接分支指令之后采取的指令流路径根据这样的指令的分支行为的分辨率而变化。以这种方式,所捕获的后继的特定指令流路径、来自所捕获的PDI的较新的指令是已知的。响应于检测和响应于冲刷事件在流水线取回再填充电路中的PDI的存在的确定,指令处理电路还可以确定来自PDI的所捕获的、较新的控制依赖的指令是否应该被注入到指令流水线中,作为来自正确的指令流路径。如果所捕获的、较新的控制依赖的指令来自正确解析的指令流路径,其来自PDI,则可较新的控制依赖的指令可以被注入到指令流水线中,因为已知其来自PDI正确的指令流路径而不必重取。如果所捕获的较新的控制依赖指令被确定不是来自正确指令流路径,其来自PDI,则较新的控制依赖的指令可以被忽略并且被重取。针对独立于PDI的控制的较新指令,指令流路径信息不需要被记录,因为独立于控制的指令不依赖于来自PDI的解析的指令流路径。
在这方面,在一个示例性方面,处理器被提供。处理器包括指令处理电路。指令处理电路包括指令取回电路,其被配置为将多个指令从程序代码取回到要被执行的指令流水线中作为多个已取回指令。指令处理电路还包括被耦合到指令取回电路的执行电路,执行电路被配置为执行指令流水线中的多个已取回指令中的已取回指令,以及响应于多个指令中的已取回指令的执行包括生成危险的PDI,生成流水线冲刷事件以冲刷指令流水线。处理器还包括耦合到指令流水线的指令取回重用电路。指令取回重用电路被配置为响应于流水线冲刷事件,确定已取回指令的源标识是否与取回再填充条目中的再填充标签中的源标识匹配,该取回再填充条目作为在流水线取回再填充电路的多个取回再填充条目中的匹配的取回再填充条目。响应于已取回指令的源标识与取回再填充条目中的再填充标签中的源标识匹配,指令取回重用电路被配置为将匹配的取回再填充条目的一个或多个所捕获的指令插入到在要被处理的指令取回电路之后的指令流水线中。
在另一示例性方面,在处理器中的指令流水线中重用已取回的、所冲刷的指令的方法被提供。该方法包括将多个指令从程序代码取回到要被执行的指令流水线中作为多个已取回的指令。该方法还包括执行指令流水线中的多个已取回指令中的已取回指令。该方法还包括响应于在多个指令中已取回指令的执行生成作为性能降级指令(PDI)的危险,生成流水线冲刷事件以冲刷指令流水线。响应于流水线冲刷事件,该方法还包括确定所检测指令的源标识是否与取回再填充条目中的再填充标签中的源标识匹配,该取回再填充条目作为在流水线取回再填充电路的多个取回再填充条目中的匹配的取回再填充条目。响应于所检测指令的源标识与取回再填充条目中的再填充标签中的源标识匹配,该方法还包括将匹配的取回再填充条目中的一个或多个所捕获的指令作为要被执行的已取回指令插入到指令流水线中。
本领域技术人员将理解本公开的范围,并且在阅读以下与附图相关联的优选实施例的详细描述之后实现其附加方面。
附图说明
并入本公开并形成本公开一部分的附图图示了本公开的几个方面,并且与说明书一起被用于解释本公开的原理。
图1是示例性基于处理器的系统的示意图,该系统包括具有指令处理电路的处理器,该指令处理电路包括一个或多个用于处理计算机指令的指令流水线,响应于由所捕获的PDI的执行引起的流水线冲刷,其中指令处理电路被配置为重用在指令流水线中要被处理的所捕获的、已取回指令(即,已取回的PDI和/或其所捕获的、已取回的、后继、较新的指令),以避免需要重取PDI及其要被处理的较新指令;
图2A是图示图1中的指令处理电路的示例性过程的流程图,该过程检测并将指令流水线中的已取回指令捕获到流水线取回再填充电路中;
图2B是图示图1中的指令处理电路的示例性过程的流程图,响应于由PDI的执行引起的冲刷事件,重用从指令流水线中的流水线取回再填充电路所捕获的、已取回指令;
图3是另一个示例性的基于处理器的系统的示意图,该系统包括具有指令处理电路的处理器,该指令处理电路包括一个或多个用于处理计算机指令的指令流水线,响应于由所捕获的PDI的执行引起的流水线冲刷,其中指令处理电路被配置为重用在指令流水线中要被处理的所捕获的、已取回指令,以避免需要重取PDI及其待处理的较新指令;
图4是图3中的示例性流水线取回填充电路的示意图,该流水线取回填充电路被配置为存储存在于指令流水线中的所捕获的、已取回指令,并且被配置为响应于由PDI的执行引起的冲刷事件提供所捕获的已取回的PDI和/或其已取回的较新指令用于重用;以及
图5是示例性的基于处理器的系统的框图,该系统包括具有指令处理电路的处理器,该指令处理电路被配置为响应于由所捕获的PDI的执行引起的流水线冲刷而复用要被处理的指令流水线中的所捕获的、已取回指令,以避免需要重取要被处理的所捕获的、已取回指令,包括但不限于图1和图3中的示例性指令处理电路,以及根据但不限于,图2A和图2B中的示例性过程。
具体实施方式
本文公开的示例性方面包括响应于处理器中的危险,在指令流水线冲刷之后重用已取回的、已冲刷的指令,以减少指令重取。该处理器包括指令处理电路,该指令处理电路被配置为将指令取回到指令流水线中,以作为指令流水线的一部分在执行阶段被处理和被执行。指令处理电路中的执行电路被配置为响应于在执行指令时遇到危险(例如,结构危险或控制流危险)而生成精确中断。例如,精确中断可能是由于预测失误的条件分支指令而生成的,其中来自不正确指令流路径的条件分支指令上的后继、控制依赖指令已被取回到指令流水线中。响应于精确中断,指令处理电路被配置为冲刷导致精确中断的指令及其后继、指令流水线中较新的指令,以克服危险。这导致指令流水线中的降低的指令吞吐量。如果这些已经已取回指令可以在冲刷之后在指令流水线中被重用,而不必被重取,则这些已取回指令可以被注入到指令流水线中,而无需重取这些指令,从而减轻了冲刷减少的指令。
在这方面,在本文所公开的示例性方面中,处理器中的指令处理电路被配置为在指令流水线中的预执行阶段检测已取回指令,该指令可能导致精确中断,该精确中断导致指令流水线的冲刷。这些指令可以被称为性能降级指令(PDI)。例如,指令处理电路可以被配置为在指令流水线的译码阶段中被译码后检测PDI。响应于在指令流水线中检测PDI,指令处理电路被配置为在流水线取回再填充电路中捕获已取回的PDI(如果尚未存在)以及在PDI后面的指令流水线中被处理的后续、较新的已取回指令。因此,如果指令流水线中的PDI的执行导致精确中断发生,从而导致指令流水线的冲刷(冲刷事件),然后指令处理电路可以确定所检测指令(即,PDI和/或后继指令)是否存在于流水线取回再填充电路中,如先前所捕获。如果所检测指令存在于流水线取回再填充电路中,则指令处理电路可以将所检测指令及其后续、先前在流水线取回再填充电路中捕获的较新的指令注入到要被处理的指令流水线中,而无需重取这样的指令。因此,与重取这些指令相关联的延迟不会在指令流水线的指令吞吐量中产生。指令处理电路可以向指令流水线中的取回阶段提供“贯穿”程序计数器(PC),以知道从哪里开始重取响应于冲刷事件必须已取回指令,因为它们不能从流水线取回再填充电路被注入。贯穿PC是流水线取回再填充电路中的最后所捕获的较新指令之后的下一个指令的PC。指令处理电路可以被配置为在与所捕获的PDI相关联的流水线取回再填充电路中捕获贯穿PC。
在这方面,图1是包括处理器102的示例性基于处理器的系统100的示意图。如下面将更详细地讨论的,处理器102被配置为重用在指令流水线中获取并且存在的已取回指令,并且随后响应于遇到的危险而被冲刷以减少指令重新获取。响应于流水线冲刷,其响应于遇到的危险发生,在讨论已取回指令的重用之前,处理器102的其他组件首先在下面被讨论。
参考图1,处理器102包括指令处理电路104,其包括一个或多个指令流水线I0-IN,用于处理计算机指令以供执行。处理器102是图1所示的乱序处理器(OoP),但也可以是有序处理器。指令处理电路104包括指令取回电路106,其被配置为从指令存储器110取回指令108。作为示例,指令存储器110可以被提供在基于处理器的系统100中的系统存储器中或作为系统存储器的部分。指令高速缓存112还可以在处理器102中被提供,以高速缓存从指令存储器110取回的指令108,以减少指令取回电路106中的时序延迟。在此示例中,在已取回指令108F到达执行电路116以作为被执行指令108E被执行之前,指令取回电路106被配置为将指令108作为已取回指令108F提供到一个或多个指令流水线I0-IN中作为要被预处理的指令处理电路104中的指令流114。指令流水线I0-IN跨指令处理电路104的不同处理电路或阶段被提供,以在一系列步骤中预处理和处理已取回指令112F,该步骤可以同时被执行以在由执行电路116获取的指令108F的执行之前增加吞吐量。
控制流预测电路118(例如,控制流预测电路)还可以被提供在图1中的处理器102中的指令处理电路104中,以推测或预测已取回的条件控制指令108F的谓词的结果,诸如条件分支指令,这影响在指令流水线I0-IN中处理的指令流114的指令控制流路径。控制流预测电路118的预测可以由指令取回电路106使用,以基于预测的分支目标地址确定要取回的下一个已取回指令108F。指令处理电路104还包括指令译码电路120,其被配置为将由指令取回电路106取回的已取回指令108F译码为已译码指令108D。已译码指令108D中编码的指令类型和要求的动作也可用于确定已译码指令108D应被放置在哪个指令流水线I0-IN中。
在这个示例中,已译码指令108D被放置在指令流水线I0-IN中的一个或多个中,然后被提供给指令处理电路104中的重命名电路122。重命名电路122被配置为确定已译码指令108D中的任何寄存器名称是否需要被重命名以打破将阻止并行或乱序处理的任何寄存器依赖性。重命名电路122被配置为调用重命名访问表电路124以重命名逻辑源寄存器操作数和/或将已译码指令108D的目的寄存器操作数写入物理寄存器中的可用物理寄存器文件(PRF)中的P0、P1、...、PX。重命名访问表电路124包含多个寄存器映射条目128(0)-128(P),每个条目映射到(即,与相关联)相应的逻辑寄存器R0-RP。寄存器映射条目128(0)-128(P)每个被配置为存储对应于指向PRF 126中的物理寄存器P0-PX的逻辑寄存器R0-RP的相应的映射信息。每个物理寄存器P0-Px被配置为针对已译码指令108D的源和/或目标寄存器操作数存储数据条目130(0)-130(X)。
图1中的处理器102中的指令处理电路104还包括寄存器访问电路132,该寄存器访问电路位于发布电路134之前的指令流水线I0-IN中。寄存器访问电路132被配置为基于映射到重命名访问表电路124中的逻辑寄存器R0-RP的寄存器映射条目128(0)-128(P)访问PRF126中的物理寄存器P0-PX,用作在执行电路116中要被执行的已译码指令108D的针对被命名的源寄存器操作数的输入值。发布电路134被配置为将已译码指令108D存储在指令流水线I0-IN中的保留条目中,直到它们各自的源寄存器操作数都可用于执行中的消耗。发布电路134将准备执行的已译码指令108D发布到执行电路116。提交电路136还在指令处理电路104中被提供,以将由已译码指令108D的执行生成的值提交或写回存储器,诸如PRF 126、高速缓存存储器或系统存储器。
图1中的处理器102中的指令处理电路104中的执行电路116被配置为在执行已译码指令108D时,响应于遇到危险(例如,结构危险或控制流危险),生成精确中断。指令108D在被执行时,导致或被确定可能导致处理器102中的危险,在本文中被称为“性能降级指令(PDI)”。当执行电路116遇到执行PDI 108D的危险时,后继、较新的指令108D已经被取回到指令流水线I0-IN中并且潜在地被译码以被处理。响应于精确中断,指令处理电路104被配置为生成冲刷事件138,以使导致精确中断的指令108D及其后继、已经在指令流水线I0-IN中已取回的较新指令108D被冲刷并被重新执行以克服危险。PDI 108D及其较新的后继指令108D的重取以不期望的方式降低了指令处理电路104中的吞吐量。
为了避免需要重取由指令处理电路104冲刷的冲刷指令108D,图1中的示例中的指令处理电路104包括PDI检测电路140和指令取回重用电路142。PDI检测电路140和指令取回重用电路142可以作为指令处理电路104的一部分或指令处理电路104的外部。PDI检测电路140和指令取回重用电路142都被耦合到指令流水线I0-IN。如下面将更详细地讨论的,PDI检测电路140被配置为检测已取回到指令流水线I0-IN中要被处理和执行的已取回指令108D中的PDI。例如,PDI检测电路140可以被配置为在指令译码电路120中被译码后检测PDI 108D。响应于PDI检测电路140在指令流水线I0-IN中检测PDI 108D,PDI检测电路140被配置为捕获所检测指令,这些指令可以是所检测到的PDI 108D和/或其后续、较新的已取回指令108D,其在PDI 108D后面的指令流水线I0-IN中被处理到流水线取回再填充电路144中。流水线取回再填充电路144可以是包括多个取回再填充条目146(0)-146(R)的表电路,每个条目被配置为存储关于所检测到的PDI 108D及后继、较新的已取回指令108D的信息。因此稍后响应于冲刷事件138,指令取回重用电路142可以确定所检测指令(即,其执行导致冲刷事件138的PDI 108D和/或其较新的、后继指令108D)是否先前在流水线取回再填充电路144中的取回再填充条目146(0)-146(R)中被捕获。如果所检测指令108D出现在流水线取回再填充电路144中的取回再填充条目146(0)-146(R)中,指令取回重用电路142可以将先前所捕获的PDI 108D和/或其较新的、后继已取回指令108D从流水线取回再填充电路144注入到指令流水线I0-IN中以被处理,而这样的已译码指令108D无需重新被提取。
因此与重取这些先前已取回指令108D相关联的延迟不会在指令处理电路104的指令吞吐量中产生。指令取回重用电路142可以向指令取回电路106提供“贯穿”程序计数器(PC)148,使得指令取回电路106知道从何处开始获取响应于冲刷事件138的指令108。贯穿PC 148是下一个指令108D的PC,其在针对PDI 108D的最后一个先前所捕获的、后继的、较新的指令108D之后,其执行导致流水线取回再填充电路144中的冲刷事件138。如下文更详细讨论的,PDI检测电路140还被配置为将贯穿PC 148记录在取回再填充条目146(0)-146(R)中,其被分配为捕获指令流水线I0-IN中的所检测到的已取回的PDI 108D及其较新的、后继已取回指令108D。以这种方式,指令取回电路106可以开始获取不会由指令取回重用电路142注入到指令流水线I0-IN中的新指令108D。
图2A是图示图1中的指令处理电路104的示例性过程200的流程图,该过程检测并捕获图1中的指令流水线I0-IN中取回的PDI 108D和取回的较新的指令108D。这是为了稍后响应于冲刷事件138,所捕获的已取回的PDI 108D及其已取回的,较新的指令108D可以由指令取回重用电路142重用并注入到指令流水线(I0-IN)中,而不必被重取。下面结合图1中的处理器102讨论图2A中的过程200。
在这方面,过程200包括将多个指令108从程序代码取回到要被执行的指令流水线I0-IN中作为多个已取回指令108F(图2A中的块202)。过程200还包括PDI检测电路140,其检测指令流水线I0-IN中的已取回指令108D是否为PDI 108D(图2A中的块204)。PDI检测电路140有多种方式可以检测指令流水线I0-IN中已取回指令108D是否是PDI 108D,这些方式的示例将在下面将更详细地被讨论。然后,PDI检测电路140可选地确定所检测指令108D是否先前在流水线取回再填充电路144中被捕获,从而可以确定PDI 108D及其较新的、后继已取回指令108D先前是否已经被捕获。
在一个示例中,指令处理电路104被配置为响应于所检测到的PDI 108D,在流水线取回再填充电路144中捕获已取回的PDI 108本身,如果PDI 108D是也将响应于冲刷事件138而被冲刷的指令类型,并且因此将需要被重取。这使得此所捕获的已取回的PDI 108也可以在稍后由指令取回重用电路142重用为被重取的PDI 108,诸如响应于冲刷事件138,而不需要重取PDI 108。响应于冲刷事件138而被冲刷并因此被重取用于重新执行的PDI的示例是遇到死锁的内存加载指令。在另一示例中,如果PDI 108D是不会响应于冲刷事件138而被冲刷的指令类型,并且因此需要被重取,则指令处理电路104不被配置为响应于所检测到的PDI 108D而在流水线取回再填充电路144中捕获已取回的PDI 108。这是因为所捕获的已取回的PDI不需要被重新执行。响应于冲刷事件138,未被冲刷并因此未被重取以重新执行的PDI 108的示例是预测失误的条件分支指令。
返回参考图2A,在该示例中,响应于PDI检测电路140检测已取回指令108D作为所检测指令,该指令可以是PDI 108D和/或PDI(图2A中的框204)的较新的、后继指令108D,PDI检测电路140确定所检测指令108D的源标识150(例如,源地址、程序计数器(PC))是否与流水线取回再填充电路144(图2A中的框206)中的取回再填充条目146(0)-146(R)中的再填充标签152(0)-152(R)中的源标识(例如,源地址PC)匹配。这是为了确定所检测指令108D之前是否已经由PDI检测电路140在流水线取回再填充电路144中被捕获。响应于所检测指令108D的源标识150与取回再填充条目146(0)-146(R)(图2A中的框208)中的再填充标签152(O)-152(R)中的源标识不匹配,PDI检测电路140在流水线取回再填充电路144中的多个取回再填充条目146(0)-146(R)中分配可用取回再填充条目146(0)-146(R),以捕获所检测指令108D之后的一个或多个后继、较新的指令108D,用于以后重用(图2A中的框210)。如上所述,如果所检测指令108D是将响应于冲刷事件138而被重取的指令,则PDI检测电路140还捕获可用取回再填充条目146(0)-146(R)中的所检测到的PDI 108D。然后,PDI检测电路140将所检测指令108D的源标识150(即被检测的PDI 108D和/或其较新的、后继指令108D)存储在可用取回再填充条目146(0)-146(R)(图2A中的框212)的再填充标签152(0)-152(R)中。然后PDI检测电路140在流水线取回再填充电路144(图2A中的框214)中的所分配的取回再填充条目146(0)-146(R)中捕获指令流水线I0-IN中的所检测指令108D之后的一个或多个后继、较新的获取指令108D。然后在执行电路116中所检测指令108D及其后继、较新的获取指令108D被处理并被执行(图2A中的块216)。
图2B是图示图1中的指令取回重用电路142的示例性过程220的流程图,该过程220将先前由流水线取回再填充电路144中的PDI检测电路140捕获的已取回指令(可以是PDI108D和/或已取回的后继指令108D)重用到指令流水线I0-IN中,响应于冲刷事件138。如上所述,如果其执行导致刷新事件138的PDI 108D先前被捕获,则所捕获的已取回的PDI 108D和/或被获取的、后继、较新的指令108D可以从流水线取回再填充电路144被获得以被注入到指令流水线I0-IN。这避免了将这些指令108D重取到指令流水线I0-IN中的需要。下面结合图1中的处理器102讨论图2B中的过程220。
在这方面,过程220包括响应于多个指令108D中的指令108D的执行生成作为PDI108D的危险,处理器102生成流水线冲刷事件138以冲刷指令流水线I0-IN(图2B中的框222)。响应于流水线冲刷事件138(图2B中的块224),指令取回重用电路142确定已取回指令108D的源标识150是否与取回再填充条目146(0)-146(R)中的再填充标签152(0)-152(R)中的源标识匹配,该取回再填充条目作为流水线取回再填充电路144(图2B中的框226)的多个取回再填充条目146(0)-146(R)中的匹配的取回再填充条目146(0)-146(R)。响应于已取回指令108D的源标识150与匹配的取回再填充条目146(0)-146(R)的再填充标签152(0)-152(R)中的源标识匹配,指令取回重用电路142将匹配的取回再填充条目146(0)-146(R)中的一个或多个所捕获的已取回指令108D插入指令流水线I0-IN中作为要被执行的已取回指令108D(图2B中的框228)。然后过程220包括执行注入指令流水线I0-IN的重用的取回指令108D(图2B中的块230)。
在指令处理电路104中不同的选项和特征可以被提供,以支持响应于由所捕获的PDI的执行引起的流水线冲刷而在指令流水线中所捕获的、所检测到的指令的重用,以避免需要重取PDI及其要被处理的较新指令。在这方面,图3是另一个示例性的基于处理器的系统300的示意图,该系统300包括具有指令处理电路304的处理器302,该指令处理电路304类似于图1中的指令处理电路104。图1中的指令处理电路104和图3中的指令处理电路304之间共同的电路和部件以共同的元件编号示出,并且不再重复描述。
如图3所示,指令处理电路304包括类似于图1中的PDI检测电路140的PDI检测电路340。图3中的指令处理电路304还包括类似于图1中的指令取回重用电路142的指令取回重用电路342。PDI检测电路340被配置为检测被提取到指令流水线I0-IN中以被处理和被执行的已取回指令108D中的PDI 108D。例如,PDI检测电路340可以被配置为在指令译码电路120中被译码后检测PDI 108D。图3中的示例中的PDI检测模块340在指令流水线I0-IN的有序阶段中耦合到指令译码电路120和重命名电路122之间的指令流水线I0-IN,以便PDI检测单元340可以接收关于已译码指令108D的译码信息以检测译码的PDI 108D。该示例中的PDI检测电路340被配置为在指令流水线I0-IN的有序阶段中接收已译码指令108D,这样如果已译码指令108D被检测为PDI 108D,PDI检测电路340可以被配置为捕获指令流水线I0-IN中的后续已译码指令108D,该指令流水线已知跟随程序代码中所检测到的PDI 108D,从中指令流114被取回。
PDI检测电路340通过不同的方式来检测已取回指令108F或已译码指令108D是否是PDI。在一个示例中,如果已译码指令108D是具有在执行时被解析的分支行为的分支指令(诸如条件分支指令、间接分支指令或条件间接分支指令)则PDI检测电路340可以被配置为使用由控制流预测电路118更新的分支预测器置信度354。分支预测器置信度354是分支指令的分支行为可以被正确预测的置信度的度量。当指令108D在过去曾被执行过时,控制流预测电路118可以被配置为预测分支指令108D的分支行为,并且基于预测的分支行为是否匹配由执行电路116在分支时确定的分支行为的分辨率来更新分支预测器置信度354。因此,PDI检测电路340可以使用分支预测器置信度354来预测或确定分支指令108D是否是PDI。具有低分支预测器置信度354的分支指令108D更可能被预测失误,并且因此当在执行电路116中执行时更可能引起导致产生冲刷事件138的危险。
PDI检测电路340还可以被配置为确定诸如加载指令之类的存储器操作指令108D是否是PDI。存储器操作指令108D涉及在指定的存储器地址处执行存储器操作,该存储器地址可以是直接存储器地址或间接存储器地址。执行电路116可以被配置为当存储器操作指令108D被执行时发生危险并且发生冲刷事件138时,存储与存储器操作指令108D相对应的PDI指示符。执行电路116可以被配置为将PDI指示符存储在包含多个PDI指示符条目360(0)-360(I)的PDI指示符电路358中,其中可以存储与存储器操作指令相对应的PDI指示符。当PDI检测电路340接收到存储器操作指令108D以确定其是否是PDI时,PDI检测模块340可以参考PDI指示符电路358以确定PDI指示符是否存在于用于存储器操作指令108D的PDI指示符条目360(0)-360(I)中。PDI检测电路340可以使用PDI指示符来确定对应的存储器操作指令108D是否应该被视为用于PDI检测目的的PDI。
继续参考图3,响应于PDI检测电路340将指令流水线I0-IN中的被接收指令108D检测为PDI,PDI检测电路340被配置为捕获已取回的PDI 108D和/或其后继,较新的已取回的108D,其跟随在流水线取回再填充电路344中的已取回的PDI 108D指令流水线I0-IN。如下所述,这允许指令取回重用电路342响应于由所检测到的PDI 108D的稍后执行生成的冲刷事件138,获得这些已取回指令108D以被重用并被注入到指令流水线I0-IN中。流水线取回再填充电路344可以是存储器表电路,其包括多个取回再填充条目346(0)-346(R),每个条目被配置为存储关于所检测到的PDI 108D和后继、较新的已取回指令108D的信息。图3中的流水线取回再填充电路344的更详细示例如图4所示,并在下面讨论。
图4是图3中的示例性流水线取回再填充电路344的示意图,其被配置为存储图3中的处理器302中的指令流水线I0-IN中存在的所捕获的已取回的PDI 108D及其已取回的较新指令。流水线取回再填充电路342包括多个取回再填充条目346(0)-346(R),每个条目被配置为被分配用于存储由PDI检测电路340检测的PDI 108D,用于由指令取回重用电路342稍后重用。流水线取回再填充电路344将结合图3中PDI检测电路340的示例性操作而被讨论。
在这方面言,当PDI检测电路340如上所述将在指令流水线I0-IN中被处理的接收的已译码指令108D检测为PDI时,PDI检测电路340可以首先确定流水线取回再填充电路344中的取回再填充条目346(0)-346(R)是否已经被分配并且正在存储PDI 108D。如果是,则不需要为所检测到的PDI 108D重新分配另一个取回再填充条目346(0)-346(R)。在该示例中,为了确定流水线取回再填充电路344中的取回再填充条目346(0)-346(R)是否已经被分配并且正在存储PDI 108D,PDI检测电路340被配置为确定图3中所检测指令(即,PDI 108D和/或其较新的、后继指令108D)的源标识350是否与流水线取回再填充电路344中的取回再填充条目346(0)-346(R)中的相应再填充标签352(0)-352(R)中的源标识符362(0)-362(R)匹配。所检测指令108D的源标识350可以是所检测指令108D的程序计数器(PC),源标识350唯一标识它在程序代码中的存在,它从程序代码中已取回到指令处理电路304的指令流114中。如果所检测指令108D的源标识350包含在流水线取回再填充电路344中的取回再填充条目346(0)-346(R)中的相应再填充标签352(0)-352(R)中的源标识362(0)-362(R)中,这意味着PDI 108D和/或其后继、较新的指令108D已经存储在取回再填充条目346(0)-346(R)中,该条目包括具有匹配源标识362(0)-3062(R)的相应再填充标签352(0)-352(R)。PDI检测电路340不需要进一步处理所检测指令108D。
然而,如果所检测指令108D的源标识350不被包含在流水线取回再填充电路344中的取回再填充条目346(0)-346(R)中的相应再填充标签352(0)-352(R)中的源标识362(0)-362(R)内,则PDI检测电路340被配置为处理所检测到的PDI 108D。PDI检测电路340被配置为在流水线取回再填充电路344中分配可用取回再填充条目346(0)-346(R),以存储所检测指令108D的源标识350,用于指令取回重用电路342稍后标识,这在下面更详细被讨论。PDI检测电路340还被配置为将所检测指令108D的源标识350存储在流水线取回再填充电路344中分配的取回再填充条目346(0)-346(R)中的源标识362(0)-362(R)中。如果所检测到的PDI 108D是具有可以预测的分支指令流路径的分支指令,但直到在执行电路116中执行时才被解析,PDI检测电路340还可以被配置为将从指令流水线I0-IN接收的分支指令108D的再填充路径364(例如,对于条件分支指令采取或不采取)存储在流水线取回再填充电路344中的相应分配的取回再填充条目346(0)-346(R)中的再填充路径366(0)-366(R)。这将允许指令取回重用电路342知道是否应该将引起冲刷事件138的针对分支指令108E的流水线取回再填充电路344中捕获的后继指令108D重用,因为其位于来自分支指令108E的正确指令流路径中。然后,图3中的PDI检测电路340被配置为将图4中的流水线取回再填充电路344中相应分配的取回再填充条目346(0)-346(R)的有效指示符368(0)-368(R)设置为有效状态,以便指令取回重用电路342将知道参考匹配取回再填充条目346(0)-346(R),在对应于导致冲刷事件138的PDI 108E的取回再填充条目346(0)-346(R)中重用先前取回和捕获的指令108D。
然后,PDI检测电路340被配置为捕获关于指令流水线I0-IN中的后续、较新的指令108D的信息,这些指令在图4中的流水线取回再填充电路344中分配的取回再填充条目346(0)-346(R)中的被检测的PDI 108D之后,用于以后可能的重用。在这方面,PDI检测电路340被配置为将被接收的后续、后继、较新的指令108D作为所捕获的指令372(1)-372(X)存储在被分配的取回再填充条目346(0)-346(R)中。例如,取回再填充条目346(0)可以被配置为存储多达‘X’个后续、后继、较新指令108D作为所捕获的指令372(0)(1)-372(0))(X)。PDI检测电路340还被配置为将在所检测到的PDI 108D之后各个所捕获的指令372(1)-372(X)中的每一个所捕获的元数据374(1)-374(X)捕获为可以用来协助所捕获的指令372(1)-372(X)的处理,如果由指令取回重用电路342重用和注入到指令流水线I0-IN。例如,取回再填充条目346(0)可以将“X”捕获指令108D的最多“X”元数据存储为元数据374(0)(1)-374(0)。元数据374(1)-374(X)可以包括指示如果响应于其相对应的PDI 108E导致冲刷事件138发生而在稍后重用相对应的所捕获的指令372(1)-372(X),则某些指令流水线I0-IN的信息是否可以被跳过。例如,所捕获的指令372(1)-372(X)内的条件分支的方向可以存储为元数据374(1)-374(X)。
PDI检测电路340还被配置为将贯穿源地址(例如,PC)370(0)-370(X)存储在相应分配的取回再填充条目346(0)-346(R)中。这是为了指令取回重用电路342可以使用这些信息来通知图3中的指令取回电路106在哪里开始取回新指令108,以响应针对执行导致刷新事件138的PDI 108D的所捕获的指令372(1)-372(X)的重用。在这方面,PDI检测电路340可以被配置为在相应的贯穿源地址370(0)-370(R)中针对所检测到的PDI 108D在相应的取回再填充条目346(0)-446(R)中捕获的最后已捕获指令372(0)-372(X)之后存储PC。例如,当PDI检测电路340在指令流114中遇到下一个PDI 108D时,PDI检测电路340可以被配置为在针对所检测到的PDI 108D的取回再填充条目346(0)-346(R)中的已捕获指令372(0)-372(X)中检测到PDI 108A之后,停止捕获后续的、后继、较新的指令108D。作为另一示例,PDI检测电路340可以被配置为一旦流水线取回再填充电路344已满,则在针对被检测的PDI 108D的取回再填充条目346(0)-346(R)中的所检测到的指令372(0)-372(X)中的PDI 108D之后,停止捕获后续的、后继、较新的指令108D。或者,PDI检测电路340可以被配置为当遇到下一个PDI 108D或流水线取回再填充电路344已满时(作为另一示例,以先发生的为准)停止捕获后续的、后继、较新的指令108D。
图4中的流水线取回再填充电路344中的每个取回再填充条目346(0)-346(R)也可以被配置为存储相应的有用指示符376(O)-376(X)。如下面将更详细讨论的,有用指示符376(0)-376(X)被配置为存储有用性,该有用性指示取回再填充条目346(O)-346(R)的有用性。存储在有用指示符376(0)-376(Y)中的有用性是与相应的取回再填充条目346(0)-346(R)相关联的PDI 108D被指令取回重用电路342使用,以在取回再填充条目346(0)-346(R)中重用捕获的已取回指令108D的可能性的度量。作为示例,有用性可以是计数值,并且有用指示符376(0)-376(X)可以是计数器。有用指示符376(0)-376(X)可以允许单独的进程更新和监视存储在有用指示符376(0)-376(Y)中的有用性,作为取回再填充条目346(0)-346(R)的控制释放的方式,用于将来所检测到的PDI 108D及其相关联的后继指令108D腾出空间,以供以后重用。
返回参考图3,如上所述,指令取回重用电路342被配置为重用流水线取回再填充电路344中的取回再填充条目346(0)-346(R)中的所捕获指令372(0)-372(X)中先前所捕获的指令108D,该先前所捕获的指令108D对应于被执行的PDI 108E,其执行导致冲刷事件138发生。在这方面,响应于冲刷事件138,指令取回重用电路342被配置为确定先前所捕获的所检测到的指令(即,PDI 108D和/或其较新的、后继指令108D)的源标识378。例如,所检测指令108D的源标识378可以是PDI 108D的PC。指令取回重用电路342可以被配置为确定所检测指令108D的源标识378是否与流水线取回再填充电路344中的相对应的取回再填充条目346(0)-346(R)中的相对应的再填充标签352(0)-352(R)的源标识362(0)-326(R)匹配(即,命中)。如果是这样,指令已取重用电路342可以被配置为访问取回再填充条目346(0)-346(R)中的捕获指令372(1)-372(X),其源标识362(0)-326(R)匹配被检测的指令108D的源标识378,并且将所捕获的指令372(1)-372(X)注入到指令流水线I0-IN中进行处理。以这种方式,所捕获的指令372(1)-372(X)不需要由指令取回电路106重取。指令取回重用电路342还被配置为将指令译码电路120之后的所捕获的指令372(1)-372(X)注入到,诸如重命名电路122中或指令流水线I0-IN中的较后阶段(诸如执行电路116)中。指令取回重用电路342还被配置为将匹配取回再填充条目346(0)-346(R)的贯穿源地址370(0)-370(X)提供给指令取回电路106。指令取回电路106可以开始从贯穿源地址370(0)-370(X)开始的取回指令108以避免重新获取相同的指令108,因为所捕获的指令372(1)-372(X)被重用并且被注入指令流水线I0-IN中。
然而如果指令取回重用电路342确定其执行导致冲刷事件138的所检测指令108D的源标识378与流水线取回再填充电路344中的相对应的取回再填充条目346(0)-346(R)中的相对应的再填充标签352(0)-352(R)的源标识362(0)-362(R)不匹配,指令取回重用电路342可以忽略所检测指令108D。指令取回电路106将重新获取PDI 108D和/或其后继指令108D。指令取回重用电路342可以被配置为将贯穿源地址370提供给作为PDI 108E的PC的指令取回电路106,使得指令取回电路106将重取PDI 108E及其后继指令108D。
指令取回重用电路342还可以被配置为在重用相对应的所捕获的指令372(1)-372(X)之前,确认流水线取回再填充电路344中的相对应的取回再填充条目346(0)-346(R)中的再填充标签352(0)-352(R)中的再填充路径366(0)-366(R),其源标识362(0)-362(R)与PDI 108D的源标识378匹配。这样举例而言,如果PDI 108D是分支指令,其可以取决于其执行的分辨率采取不同的指令流路径,则指令取回重用电路342可以确保匹配的取回再填充条目346(0)-346(R)中的所捕获的指令372(1)-372(X)来自与由PDI 108D的执行解析的指令流路径相同的指令流路径。以这种方式,通过由指令取回重用电路342在指令流水线I0-IN中的注入,所捕获的指令372(1)-372(X)的重用不会被用于不正确的指令流路径。如果相对应的被匹配取回再填充条目346(0)-346(R)中的已捕获指令372(1)-372(X)根据其记录的再填充路径366(0)-366(R)不用于正确的指令流路径,则指令取回重用电路342可以选择不重用那些所捕获的指令372(1)-372(X),而是让它们由指令处理电路304重取。在这种情况中,指令取回重用电路342可以被配置为向指令处理电路304提供导致冲刷事件138的被执行PDI 108E的源标识362(0)-362(R),该指令处理电路304然后将导致PDI 108E及其后续的、后继的指令108D被重取。
如上所述,可能期望提供机制来在流水线取回再填充电路344中释放取回再填充条目346(0)-346(R),以腾出空间用于捕获导致冲刷事件138的较新被执行的PDI 108E及其后继指令108D,用于潜在的重用。流水线取回再填充电路344中的一些取回再填充条目346(0)-346(R)可以被分配给PDI 108D和/或较新的、后继指令108D,后继指令108D不像导致冲刷事件138的较新被执行的PDI 108E那样有用(即,不太可能在将来发生)。
如上所述,指令取回重用电路342确定PDI 108D和/或其较新的、后继指令108D的源标识378已经被包含在流水线取回再填充电路344中的有效取回再填充条目346(0)-346(R)中(即,源标识378与源标识362(0)-362(R)匹配)。如果PDI 108D和/或其较新的后继指令108D的源标识378已经被包含在有效的取回再填充条目346(0)-346(R)中,则指令取回重用电路342可以被配置为增加相对应的取回再填充条目346(0)-346(R)中的相对应的有用指示符376(O)-376(X)中的有用性。例如,如果有用指示符376(0)-376(X)是计数器,则指令获取重用电路342可以被配置为递增有用指示符366(0)-376(X),以表示增加的有用性作为示例。然而,如果被执行的PDI 108E的源标识378尚未被包含在有效取回再填充条目346(0)-346(R)中,使得新的有效取回再填充条目346(0)-346(R)需要被分配,指令取回重用电路342可以同等地降低相对应的取回再填充条目346(0)-346(R)中的所有有用指示符376(O)-376(X)的有用性,作为一个示例。如果流水线取回再填充电路344中的取回再填充条目346(0)-346(R)的有用指示符376(O)-376(X)中的有用性低于设置的阈值有用性,则指令取回重用电路342或其他电路可以被配置为释放这样的取回再填充条目346(0)-346(R),以释放这样的取回再填充条目346(0)-346(R),以被重分配给新PDI 108E。
备选地,取代响应于流水线取回再填充电路344的未命中(miss)而立即相等地降低相对应的取回再填充条目346(0)-346(R)中的所有有用指示符376(O)-376(X)的有用性,如果所检测指令108D(即,PDI 108D和/或其较新的、后继指令108D)的源标识378尚未被包含在有效的取回再填充条目346(0)-346(R)中,则图3中的全局分配失败指示符380可以被递增或被增加。然后,一旦全局分配失败指示符380超过阈值全局分配,则每个取回再填充条目346(0)-346(R)中的有用指示符376(O)-376(X)的有用性可以被降低。该机制控制每个取回再填充条目346(0)-346(R)中的有用指示符376(0)-376(X)的有用性下降速率,以不基于每个故障事件对应于流水线取回再填充电路344。同样,如果流水线取回再填充电路344中的取回再填充条目346(0)-346(R)的有用指示符376(O)-376(X)中的有用性低于设置的阈值有用性,指令取回重用电路342或其他电路可以被配置为释放这样的取回再填充条目346(0)-346(R)以重新分配给新的PDI108D和/或其后继指令108D。
作为另一个备选,流水线取回再填充电路344中的取回再填充条目346(0)-346(R)的有用指示符376(0)-376(X)中的有用性可以在指令流水线I0-IN中处理的这么多的每个指令108D中降低。作为另一个备选,流水线取回再填充电路344中的取回再填充条目346(0)-346(R)的有用指示符376(O)-376(X)中的有用性可以由PDI检测电路340检测的这么多的每个PDI 108D而降低。作为另一个备选,流水线取回再填充电路344中的取回再填充条目346(0)-346(R)的有用指示符376(0)-376(X)中的有用性可以被每个冲刷事件138降低。
图5是示例性基于处理器的系统500的框图,其包括处理器502(例如,微处理器),处理器502包括指令处理电路504,指令处理电路504包括PDI检测电路505和用于检测PDI的指令取回重用电路506,捕获作为PDI和/或其后继、较新的指令的已取回指令,该较新的指令跟随PDI,并且响应于由相对应的PDI的执行导致的刷新事件重用所捕获的指令。例如,图5中的处理器502可以是图1中的处理器102或图3中的处理器302。作为另一个示例,指令处理电路504可以是图2中的指令处理电路104或图3的指令处理电路304。作为另一个示例,PDI检测电路505可以是图1中的PDI检测电路140或图3中的PDI检测电路340。作为另一个例子,指令取回重用电路506可以是图1中的指令取回重用电路142或图3中的指令取回重用电路342。
基于处理器的系统500可以是被包括在电子板卡中的一个或多个电路,诸如印刷电路板(PCB)、服务器、个人计算机、台式计算机、笔记本计算机、个人数字助理(PDA)、计算板、移动设备或任何其他设备,并且可以表示例如服务器或用户的计算机。在此示例中,基于处理器的系统500包括处理器502。处理器502表示一个或多个通用处理电路,诸如微处理器、中央处理单元等。更具体地,处理器502可以是EDGE指令集微处理器,或者实现指令集的其他处理器,该指令集支持显式消费者命名用于传送由生产器指令的执行产生的产生值。处理器502被配置为执行指令中的处理逻辑,用于执行本文所讨论的操作和步骤。在此示例中,处理器502包括指令高速缓存508,用于指令处理电路504可访问的指令的临时快速存取存储器存储。从存储器(诸如,通过系统总线512从系统存储器510)被获取或被预取的指令被存储在指令缓存508中。指令处理电路504被配置为处理被获取到指令高速缓存508中的指令,并且处理用于执行的指令。
处理器502和系统存储器510被耦合到系统总线512,并且可以相互耦合被包括在基于处理器的系统500中的外围设备。众所周知,处理器502通过在系统总线512上交换地址、控制和数据信息来与这些其他设备通信。例如,处理器502可以将总线事务请求传送到作为从设备的示例的系统存储器510中的存储器控制器514。尽管在图5中未被图示,但多个系统总线512可以被提供,其中每个系统总线构成不同的结构。在此示例中,存储器控制器514被配置为向系统存储器510中的存储器阵列516提供存储器访问请求。存储器阵列516包括用于存储数据的存储位单元阵列。作为非限制性示例,系统存储器510可以是只读存储器(ROM)、闪存、动态随机存取存储器(DRAM),诸如同步DRAM(SDRAM)等,以及静态存储器(例如,闪存、静态随机存取存储器等)。
其他设备可以被连接到系统总线512。如图5所示,这些设备可以包括系统存储器510、一个或多个(多个)输入设备518、一个或者多个(多个)输出设备520、调制解调器522和一个或多个个显示控制器524,作为示例。(多个)输入设备518可以包括任何类型的输入设备,包括但不限于输入键、开关、语音处理器等。调制解调器522可以是被配置为允许与网络526交换数据的任何设备。网络526可以是任何类型的网络,包括但不限于有线或无线网络、专用或公共网络、局域网(LAN)、无线局域网(WLAN)、广域网(WAN)、蓝牙TM网络和互联网。调制解调器522可以被配置为支持所期望的任何类型的通信协议。处理器502还可以被配置为通过系统总线512访问(多个)显示控制器524以控制发送到一个或多个显示器528的信息。显示器528可以包括任何类型的显示器,包括但不限于阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器等。
图5中的基于处理器的系统500可以包括指令集530,由处理器502针对根据指令所期望的任何应用执行。指令530可以被存储在系统存储器510、处理器502和/或指令高速缓存508中,作为非暂时性计算机可读介质532的示例。指令530也可以在其执行期间完全或至少部分地驻留在系统存储器510内和/或处理器502内。指令530还可以经由调制解调器522在网络526上被发送或被接收,使得网络526包括计算机可读介质532。
尽管计算机可读介质532在示例性实施例中被示出为单个介质,但术语“计算机可读介质”应当被理解为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“计算机可读介质”还应被视为包括能够存储、编码或携带指令集用于处理设备执行并且使得处理设备执行本文公开的实施例的任何一个或多个方法的任何介质。因此,术语“计算机可读介质”应包括但不限于固态存储器、光学介质和磁性介质。
本文公开的实施例包括各种步骤。本文公开的实施例的步骤可以由硬件组件形成,或者可以被实施在机器可执行指令中,这些指令可以用于使用指令编程的通用或专用处理器执行这些步骤。备选地,这些步骤可以由硬件和软件的组合来执行。
本文所公开的实施例可以作为计算机程序产品或软件被提供,其可以包括其上存储有指令的机器可读介质(或计算机可读介质),这些指令可以被用于编写计算机系统(或其他电子设备)以执行根据本文所公开实施例的进程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制。例如,机器可读介质包括:机器可读存储介质(例如,ROM、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、闪存设备等);等。
除非另有特别说明并且从先前的讨论中显而易见,应当理解,在整个描述中,利用诸如“处理”、“计算”、“确定”、“显示”等术语的讨论是指计算机系统或类似的电子计算设备的动作和过程,其操纵计算机系统寄存器内被表示为物理(电子)量的数据和存储器,以及将它们转换为计算机系统存储器或寄存器或其他这样的信息存储、传输或显示设备内被表示为类似物理量的其他数据。
本文所提出的算法和显示并不固有地与任何特定计算机或其他设备相关。根据本文的教导,各种系统可以与程序一起被使用,或者可以它证明构造更专用的设备来执行被要求的方法步骤是方便的。从以上描述中可以看出各种这些系统被要求的结构。此外,本文描述的实施例没有参考任何特定编程语言进行描述。应当理解,各种编程语言可以被使用来实现如本文描述的实施例的教导。
本领域技术人员将进一步理解,结合本文公开的实施例描述的各种说明性逻辑块、模块、电路和算法可以被实现为电子硬件、存储在存储器或另一计算机可读介质中并由处理器或其他处理设备执行的指令、或两者的组合。作为示例,本文描述的分布式天线系统的组件可以被实施在任何电路、硬件组件、集成电路(IC)或IC芯片中。本文公开的存储器可以是任何类型和大小的存储器,并且可以被配置为存储任何类型的被期望信息。为了清楚地说明这种可互换性,各种说明性组件、块、模块、电路和步骤在上文已经大体上根据其功能被描述。如何实现这样的功能取决于特定的应用、设计选择和/或施加在整个系统上的设计约束。熟练的技术人员可以针对每个特定应用以不同的方式实现所描述的功能,但是这样的实现决策不应被解释为导致偏离本实施例的范围。
结合本文所公开的实施例描述的各种说明性逻辑块、模块和电路可以用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、离散门或晶体管逻辑、离散硬件组件或其任何组合实现或处理,旨在执行本文描述的功能。此外,控制器可以是处理器。处理器可以是微处理器,但在备选中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合(例如,DSP和微处理器的组合、多个微处理器、与DSP核结合的一个或多个微处理器,或任何其他这样的配置)。
本文所公开的实施例可以以硬件和存储在硬件中的指令来实施,并且可以驻留在例如RAM、闪存、ROM、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移除盘、CD-ROM、或本领域已知的任何其他形式的计算机可读介质。示例性存储介质被耦合到处理器,使得处理器可以从存储介质读取信息并向存储介质写入信息。在备选中,存储介质可以与处理器集成。处理器和存储介质可以驻留在ASIC中。ASIC可以驻留在远程站中。在备选中,处理器和存储介质可以作为离散组件驻留在远程站、基站或服务器中。
还应注意,本文的任何示例性实施例中描述的操作步骤被描述以提供示例和讨论。被描述的操作可以以不同于所示序列的许多不同序列来执行。此外,在单个操作步骤中描述的操作实际上可以在多个不同步骤中执行。另外,在示例性实施例中讨论的一个或多个操作步骤可以被组合。本领域技术人员还将理解,信息和信号可以使用各种技术和技艺中的任何一种来表示。例如,数据、指令、命令、信息、信号、比特、符号和码片(可以是以上描述的整个的参考),可以由电压、电流、电磁波、磁场或粒子、光场或粒子或其任何组合来表示。
除非另有明确说明,否则本文所述的任何方法都不应被解释为要求按照特定顺序执行其步骤。因此,如果方法权利要求没有实际叙述其步骤所遵循的顺序,或者在权利要求或描述中没有明确说明步骤将被限制为特定顺序,则不应推断任何特定顺序。
本领域技术人员将清楚,在不脱离本发明的精神或范围的情况下,各种修改和变化可以被做出。由于本领域技术人员可能会想到结合本发明的精神和实质的所公开实施例的修改、组合、子组合和变化,因此本发明应被解释为包括所附权利要求及其等同物范围内的所有内容。
Claims (15)
1.一种处理器,包括:
指令处理电路,包括:
指令取回电路,被配置为将多个指令从程序代码取回到要被执行的指令流水线中作为多个已取回指令;以及
被耦合到所述指令取回电路的执行电路,所述执行电路被配置为:
执行所述指令流水线中的所述多个已取回指令中的已取回指令;以及
响应于所述多个指令中的已取回指令的所述执行包括生成危险的性能降级指令(PDI),生成流水线冲刷事件以冲刷所述指令流水线;以及
指令取回重用电路,被耦合到所述指令流水线,所述指令取回重用电路被配置为响应于所述流水线冲刷事件:
确定所述已取回指令的源标识是否与取回再填充条目中的再填充标签中的源标识匹配,所述取回再填充条目作为在流水线取回再填充电路的多个取回再填充条目中的匹配的取回再填充条目;以及
响应于所述已取回指令的所述源标识与所述取回再填充条目中的所述再填充标签中的所述源标识匹配:
将所述匹配的取回再填充条目中的一个或多个所捕获的指令插入到在要被处理的所述指令取回电路之后的所述指令流水线中。
2.根据权利要求1所述的处理器,其中所述指令处理电路进一步包括:
译码电路,被耦合到所述指令取回电路,所述译码电路被配置为将所述多个已取回指令译码到多个已译码指令中;
所述执行电路,被配置为执行所述指令流水线中的所述多个已译码指令中的已译码指令;以及
响应于所述已取回指令的所述源标识与所述流水线取回再填充电路的所述取回再填充条目中的所述再填充标签中的所述源标识匹配:
将所述匹配的取回再填充条目中的所述一个或多个所捕获的指令插入到所述译码电路和要被处理的所述指令流水线中的所述执行电路之间。
3.根据权利要求1所述的处理器,其中所述指令处理电路被配置为响应于所述已取回指令的所述源标识与所述取回再填充条目中的所述再填充标签中的所述源标识匹配:
将所述匹配的取回再填充条目中的所述一个或多个所捕获的指令插入到要被执行的所述指令流水线中的所述执行电路。
4.根据权利要求1所述的处理器,其中所述指令取回重用电路被配置为,响应于包括所述PDI的所述已取回指令的所述源标识与所述取回再填充条目中的所述再填充标签中的所述源标识匹配:
确定所述PDI的指令流路径是否与所述匹配的取回再填充条目的所述再填充标签中的再填充路径匹配;以及
响应于所述PDI的所述指令流路径与所述匹配的取回再填充条目的所述再填充标签中的所述再填充路径匹配:
将所述匹配的取回再填充条目中的所述一个或多个所捕获的指令插入到要被处理的所述指令取回电路之后的所述指令流水线中。
5.根据权利要求1所述的处理器,其中:
所述指令取回重用电路进一步被配置为,响应于所述已取回指令的所述源标识与所述取回再填充条目中的所述再填充标签中的所述源标识匹配:
将所述匹配的取回再填充条目中的贯穿源地址传送到所述指令取回电路;以及
所述指令取回电路被配置为响应于接收到所述贯穿源地址而取回以所述贯穿源地址开始的指令。
6.根据权利要求1所述的处理器,其中:
所述指令取回重用电路进一步被配置为,响应于所述已取回指令的所述源标识与所述取回再填充条目中的所述再填充标签中的所述源标识匹配:
增加所述流水线取回再填充电路中的所述匹配的取回再填充条目中的有用指示符的有用性,所述有用指示符指示所述匹配的取回再填充条目的所述有用性。
7.根据权利要求6所述的处理器,其中:
所述指令取回重用电路进一步被配置为:
确定所述流水线取回再填充电路中的所述多个取回再填充条目中的取回再填充条目中的所述有用指示符中的所述有用性是否低于阈值有用性;以及
响应于所述取回再填充条目中的所述有用指示符中的所述有用性低于所述阈值有用性,释放所述流水线取回再填充电路中的所述取回再填充条目。
8.根据权利要求1所述的处理器,进一步包括被耦合到所述指令流水线的PDI检测电路;
所述PDI检测电路被配置为,检测所述指令流水线中的已取回指令是否是PDI;
响应于将所述已取回指令检测为PDI,所述PDI检测电路进一步被配置为:
在所述流水线取回再填充电路中的所述多个取回再填充条目中分配可用取回再填充条目;以及
将包括PDI指令和后继指令之一的所检测指令的源标识存储在所述可用取回再填充条目的所述再填充标签中。
9.根据权利要求8所述的处理器,其中所述PDI检测电路进一步被配置为,响应于所述所检测指令的所述源标识与取回再填充条目中的再填充标签中的源标识不匹配:
在所述流水线取回再填充电路中的所分配的所述可用取回再填充条目中的所述指令流水线中捕获在所述所检测指令之后的一个或多个后继指令。
10.根据权利要求8所述的处理器,其中:
所述多个指令包括分支指令;
所述指令取回电路被配置为将所述分支指令取回到要被执行的所述指令流水线中;
所述指令处理电路被配置为确定所述分支指令的指令流路径;
所述PDI检测电路被配置为检测所述指令流水线中的已取回的所述分支指令是否是PDI;以及
所述PDI检测电路进一步被配置为,响应于检测到已取回的所述分支指令是PDI并且响应于所检测到的所述PDI的所述源标识与取回再填充条目中的再填充标签中的源标识不匹配:
将所检测到的所述PDI的所述指令流路径存储在所述可用取回再填充条目的再填充路径中。
11.根据权利要求9所述的处理器,其中所述PDI检测电路进一步被配置为,响应于所述所检测指令的所述源标识与取回再填充条目中的再填充标签中的源标识不匹配:
确定在所述一个或多个后继指令中的后续指令是否是PDI;以及
响应于确定所述后续指令是PDI:
不将所述后续指令作为所述流水线取回再填充电路中的所分配的所述可用取回再填充条目中的被确定为所述指令流水线中的PDI的所述一个或多个后继指令来捕获。
12.一种在处理器中的指令流水线中重用取回的、所冲刷的指令的方法,包括:
将多个指令已取回指令从程序代码取回到要被执行的指令流水线中作为多个已取回指令;
执行所述指令流水线中的所述多个已取回指令中的已取回指令;
响应于所述多个指令中的已取回指令的所述执行生成作为性能降级指令(PDI)的危险,生成流水线冲刷事件以冲刷所述指令流水线;以及
响应于所述流水线冲刷事件:
确定所检测指令的源标识是否与取回再填充条目中的再填充标签中的源标识匹配,所述取回再填充条目作为在流水线取回再填充电路的多个取回再填充条目中的匹配的取回再填充条目;以及
响应于所述所检测指令的所述源标识与所述取回再填充条目中的所述再填充标签中的所述源标识匹配:
将所述匹配的取回再填充条目中的一个或多个所捕获的指令作为要被执行的已取回指令插入到所述指令流水线中。
13.根据权利要求12所述的方法,进一步包括:
响应于所述PDI的所述源标识与所述取回再填充条目中的所述再填充标签中的所述源标识匹配,确定包括所述PDI的所述所检测指令的指令流路径是否与所述匹配的取回再填充条目的所述再填充标签中的再填充路径匹配;以及
响应于所述PDI的所述指令流路径与所述匹配的取回再填充条目的所述再填充标签中的所述再填充路径匹配:
在不重取要被处理的所述一个或多个所捕获的指令的情况下,将所述匹配的取回再填充条目中的所述一个或多个所捕获的指令插入到所述指令流水线中。
14.根据权利要求12所述的方法,进一步包括:
检测所述指令流水线中的已取回指令是否是PDI;
响应于检测到所述已取回指令是PDI:
在所述流水线取回再填充电路中的所述多个取回再填充条目中分配可用取回再填充条目;以及
将在所检测到的所述PDI之后的一个或多个后继指令的源标识存储在所分配的所述可用取回再填充条目的所述再填充标签中。
15.根据权利要求14所述的方法,进一步包括:响应于将所述已取回指令检测为所述PDI:
将所述所检测指令的源标识存储在所分配的所述可用取回再填充条目的所述再填充标签中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/907,988 US11360773B2 (en) | 2020-06-22 | 2020-06-22 | Reusing fetched, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-fetching |
US16/907,988 | 2020-06-22 | ||
PCT/US2021/029028 WO2021262309A1 (en) | 2020-06-22 | 2021-04-25 | Reusing fetched, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-fetching |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115702415A true CN115702415A (zh) | 2023-02-14 |
Family
ID=75919424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180044701.3A Pending CN115702415A (zh) | 2020-06-22 | 2021-04-25 | 响应于处理器中的危险而在指令流水线冲刷后重用已取回的、经冲刷的指令以减少指令重取 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11360773B2 (zh) |
EP (1) | EP4168893B1 (zh) |
JP (1) | JP2023531216A (zh) |
KR (1) | KR20230023801A (zh) |
CN (1) | CN115702415A (zh) |
WO (1) | WO2021262309A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020121416A1 (ja) * | 2018-12-11 | 2020-06-18 | サンケン電気株式会社 | プロセッサ及びパイプライン処理方法 |
US11847457B1 (en) * | 2022-05-31 | 2023-12-19 | Ceremorphic, Inc. | System for error detection and correction in a multi-thread processor |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5881277A (en) | 1996-06-13 | 1999-03-09 | Texas Instruments Incorporated | Pipelined microprocessor with branch misprediction cache circuits, systems and methods |
US5845103A (en) * | 1997-06-13 | 1998-12-01 | Wisconsin Alumni Research Foundation | Computer with dynamic instruction reuse |
US6076153A (en) | 1997-12-24 | 2000-06-13 | Intel Corporation | Processor pipeline including partial replay |
US6694425B1 (en) | 2000-05-04 | 2004-02-17 | International Business Machines Corporation | Selective flush of shared and other pipeline stages in a multithread processor |
US7165167B2 (en) | 2003-06-10 | 2007-01-16 | Advanced Micro Devices, Inc. | Load store unit with replay mechanism |
US7631130B2 (en) | 2005-02-04 | 2009-12-08 | Mips Technologies, Inc | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
US7664936B2 (en) | 2005-02-04 | 2010-02-16 | Mips Technologies, Inc. | Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages |
US7853777B2 (en) * | 2005-02-04 | 2010-12-14 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions |
US7254700B2 (en) | 2005-02-11 | 2007-08-07 | International Business Machines Corporation | Fencing off instruction buffer until re-circulation of rejected preceding and branch instructions to avoid mispredict flush |
US7152155B2 (en) | 2005-02-18 | 2006-12-19 | Qualcomm Incorporated | System and method of correcting a branch misprediction |
US7949861B2 (en) | 2005-06-10 | 2011-05-24 | Qualcomm Incorporated | Method and apparatus for managing instruction flushing in a microprocessor's instruction pipeline |
US7475232B2 (en) * | 2005-07-19 | 2009-01-06 | International Business Machines Corporation | Performance of an in-order processor by no longer requiring a uniform completion point across different execution pipelines |
US20080148026A1 (en) * | 2006-12-15 | 2008-06-19 | Dhodapkar Ashutosh S | Checkpoint Efficiency Using a Confidence Indicator |
US7779232B2 (en) | 2007-08-28 | 2010-08-17 | International Business Machines Corporation | Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches |
US20190377580A1 (en) | 2008-10-15 | 2019-12-12 | Hyperion Core Inc. | Execution of instructions based on processor and data availability |
US8245018B2 (en) | 2008-12-31 | 2012-08-14 | International Business Machines Corporation | Processor register recovery after flush operation |
US8909908B2 (en) * | 2009-05-29 | 2014-12-09 | Via Technologies, Inc. | Microprocessor that refrains from executing a mispredicted branch in the presence of an older unretired cache-missing load instruction |
US8578139B2 (en) * | 2010-08-05 | 2013-11-05 | Arm Limited | Checkpointing long latency instruction as fake branch in branch prediction mechanism |
US20130318332A1 (en) | 2012-05-22 | 2013-11-28 | Jeffry E. Gonion | Branch misprediction behavior suppression using a branch optional instruction |
US9740496B2 (en) * | 2013-09-06 | 2017-08-22 | International Business Machines Corporation | Processor with memory-embedded pipeline for table-driven computation |
GB2525264B (en) | 2014-04-17 | 2021-06-02 | Advanced Risc Mach Ltd | Power saving by reusing results of identical micro-operations |
US9928075B2 (en) | 2015-02-13 | 2018-03-27 | International Business Machines Corporation | Load queue entry reuse for operand store compare history table update |
US9785538B2 (en) | 2015-09-01 | 2017-10-10 | Nxp Usa, Inc. | Arbitrary instruction execution from context memory |
US10255074B2 (en) | 2015-09-11 | 2019-04-09 | Qualcomm Incorporated | Selective flushing of instructions in an instruction pipeline in a processor back to an execution-resolved target address, in response to a precise interrupt |
US20170139716A1 (en) | 2015-11-18 | 2017-05-18 | Arm Limited | Handling stalling event for multiple thread pipeline, and triggering action based on information access delay |
US11188336B2 (en) * | 2015-12-28 | 2021-11-30 | Qualcomm Incorporated | Replay of partially executed instruction blocks in a processor-based system employing a block-atomic execution model |
US20190155608A1 (en) | 2017-11-17 | 2019-05-23 | Qualcomm Incorporated | Fast pipeline restart in processor with decoupled fetcher |
US10884749B2 (en) | 2019-03-26 | 2021-01-05 | International Business Machines Corporation | Control of speculative demand loads |
-
2020
- 2020-06-22 US US16/907,988 patent/US11360773B2/en active Active
-
2021
- 2021-04-25 JP JP2022578982A patent/JP2023531216A/ja active Pending
- 2021-04-25 WO PCT/US2021/029028 patent/WO2021262309A1/en unknown
- 2021-04-25 CN CN202180044701.3A patent/CN115702415A/zh active Pending
- 2021-04-25 EP EP21725905.0A patent/EP4168893B1/en active Active
- 2021-04-25 KR KR1020237002002A patent/KR20230023801A/ko unknown
-
2022
- 2022-05-27 US US17/827,291 patent/US11726787B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11360773B2 (en) | 2022-06-14 |
EP4168893B1 (en) | 2024-06-26 |
EP4168893A1 (en) | 2023-04-26 |
US20210397453A1 (en) | 2021-12-23 |
JP2023531216A (ja) | 2023-07-21 |
US11726787B2 (en) | 2023-08-15 |
KR20230023801A (ko) | 2023-02-17 |
US20220283816A1 (en) | 2022-09-08 |
WO2021262309A1 (en) | 2021-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108780398B (zh) | 在基于处理器系统中基于负载路径历史使用地址预测表以提供负载地址预测 | |
US7415597B2 (en) | Processor with dependence mechanism to predict whether a load is dependent on older store | |
WO2005062167A2 (en) | Transitioning from instruction cache to trace cache on label boundaries | |
US11726787B2 (en) | Reusing fetched, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-fetching | |
US10860328B2 (en) | Providing late physical register allocation and early physical register release in out-of-order processor (OOP)-based devices implementing a checkpoint-based architecture | |
CN114008587A (zh) | 在处理器中的推测性错误预测恢复中限制基于负载的控制无关(ci)指令的重放 | |
US20080313445A1 (en) | Method and system for preventing livelock due to competing updates of prediction information | |
WO2022098420A1 (en) | 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 | |
US11074077B1 (en) | Reusing executed, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-execution | |
US20050149703A1 (en) | Utilizing an advanced load address table for memory disambiguation in an out of order processor | |
US20200201644A1 (en) | System, Apparatus And Method For Focused Data Value Prediction To Accelerate Focused Instructions | |
CN116324720A (zh) | 应用控制独立技术还原用于对处理器中处理的指令进行推测性预测的推测性历史 | |
US11995443B2 (en) | Reuse of branch information queue entries for multiple instances of predicted control instructions in captured loops in a processor | |
US11915002B2 (en) | Providing extended branch target buffer (BTB) entries for storing trunk branch metadata and leaf branch metadata | |
US11113068B1 (en) | Performing flush recovery using parallel walks of sliced reorder buffers (SROBs) | |
US20220398100A1 (en) | Processors employing memory data bypassing in memory data dependent instructions as a store data forwarding mechanism, and related methods | |
CN117130666A (zh) | 配置方法、分支预测器、指令识别器和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |