CN1294484C - 利用重新调度的重放队列中断处理器中的重放依赖关系循环 - Google Patents

利用重新调度的重放队列中断处理器中的重放依赖关系循环 Download PDF

Info

Publication number
CN1294484C
CN1294484C CNB018198961A CN01819896A CN1294484C CN 1294484 C CN1294484 C CN 1294484C CN B018198961 A CNB018198961 A CN B018198961A CN 01819896 A CN01819896 A CN 01819896A CN 1294484 C CN1294484 C CN 1294484C
Authority
CN
China
Prior art keywords
instruction
instructions
processor
coupled
replay queue
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB018198961A
Other languages
English (en)
Other versions
CN1478228A (zh
Inventor
道格拉斯·M·卡梅安
达雷尔·D·博格斯
戴维·J·塞杰
弗朗西斯·X·麦基恩
佩尔·哈马隆德
隆那科·辛哈
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1478228A publication Critical patent/CN1478228A/zh
Application granted granted Critical
Publication of CN1294484C publication Critical patent/CN1294484C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

利用重新调度的重放队列中断处理器中的重放依赖关系循环。处理器包括重放队列,用于接收多个指令,和执行单元,用于执行该多个指令。调度器被耦合在重放队列和执行单元之间。调度器推测地为执行调度指令,并且使多个指令中的每一个的一个计数器递增以反映多个指令中的每一个已经被执行的次数。当计数器没有超出重放的最大数时,或者如果计数器超出了重放的最大数,指令对于执行是安全的时,调度器还分派每一个指令到执行单元。检验器被耦合到执行单元以确定是否每一个指令已经成功地执行了。检验器还被耦合到重放队列以向重放队列发送每一个没有成功地执行的指令。

Description

利用重新调度的重放队列中断处理器中的重放依赖关系循环
技术领域
本发明一般地涉及处理器,具体涉及具有用于数据推测(dataspeculation)的重放(replay)系统的处理器。
背景技术
大多数的计算机处理器的主要功能是执行从存储设备获取的计算机指令流。许多处理器被设计成取得指令并在取得下一个指令之前执行该指令。对于这些处理器,确保了被给定指令所修改或获取的任何寄存器或存储器值对于跟随它的指令是可用的。例如,考虑下列这组指令:
1:将存储器-1(中的内容)装载到寄存器-X中;
2:将寄存器-X、寄存器-Y相加并存入寄存器-Z;
3:将寄存器-Y、寄存器-Z相加并存入寄存器-W。
第一个指令将存储器-1的内容装载到寄存器-X中。第二个指令将寄存器-X的内容加到寄存器-Y的内容上并将结果存储在寄存器-Z中。第三个指令将寄存器-Y的内容加到寄存器-Z的内容上并将结果存储在寄存器-W中。在这组指令中,指令2和指令3被认为是依赖(dependent)指令,因为它们的执行依赖于指令1的结果和指令1的在先执行。换句话说,如果寄存器-X在指令2和3被执行之前没有在指令1中被装载入有效的值,指令2和3将产生不正确的结果。
对于传统的取得和执行处理器,第二个指令在第一个指令被正确地执行之前不会被执行。例如,第二个指令不会被分派到处理器,直到接收到一个信号表明第一个指令已经完成执行。类似地,因为第三个指令依赖于第二个指令,第三个指令不会被分派,直到第二个指令已经完全地执行的指示被接收到。因此,根据传统的取得和执行方法,这种短序列的指令不能在少于T=L1+L2+L3的时间内被执行,其中T代表时间,L1、L2和L3代表三个指令每一个的等待时间。
后来,为了增加处理的速度,依赖指令可以被有选择地选定,并尽力提前使用所需要的结果推测地执行,以增加处理器的总处理能力和降低总的执行时间。数据推测可以包括推测从高速缓存中获取的数据是有效的。处理是基于从高速缓存中获取的数据是有效的假设进行的。但是,当在高速缓存中的数据是无效的时,推测地执行的指令的执行结果被置之不理,并且处理器返回重新执行被执行的指令。换句话说,数据推测假设了高速缓存中的数据是正确的,即,高速缓存包含来自当前指令所依赖于的那些指令的结果。数据推测可以包括推测来自当前指令所依赖于的指令的执行的数据将被存储在高速缓存中的一个位置中,使得高速缓存中的数据到指令试图访问高速缓存中的该位置时是有效的。依赖指令依赖于对其所依赖的指令的结果的装载结果。当装载未命中该高速缓存时,依赖指令必须被重新执行。
例如,当指令1正在执行时,指令2可以被并行地执行,使得指令2推测地访问存储于指令1的结果将存储于其中的高速缓存的一个位置中的值。这样,指令2执行,假设了高速缓存命中。如果高速缓存的内容的值是有效的,那么指令1的执行完成。如果指令2被先于指令1的完成而成功地推测地执行,而不是在指令1完成后执行指令2,接着,可以进行简单且快速的检验以确认推测执行是成功的。这样,通过基于假设所需要的数据在高速缓存中是可用的而推测地执行指令而提前执行指令,处理器增加了它们的执行速度和总的处理能力。
但是,在一些情况中指令未被成功地推测地执行。在这些情形中,推测地执行的指令必须被重新执行。
附图说明
图1是图解了根据本发明实施例的处理器的一部分的图。
图2是图解了包括了本发明的一个实施例的处理器的方框图。
图3是图解了根据本发明实施例的指令处理的方法的流程图。
详细说明
A.介绍
根据本发明的一个实施例,提供了一种处理器,其推测地调度指令以便执行,并且允许未成功地执行的指令的重放。推测的调度使得指令的调度等待时间被减少。重放系统重新执行当最初被分派到执行单元时没有成功地被执行的指令。当指令用不正确的输入数据执行时或者由于高速缓存未命中指令输出不正确时,指令被认为没有成功地被执行。例如,如果执行中存在高速缓存未命中,存储器装载指令也许未正确地执行,由此需要该指令被重新执行。另外,所有依赖于其的指令必须也被重放。
这样一个重放系统的一个有问题的方面是长等待时间指令经由重放系统循环并且在成功地执行之前重新执行很多次的可能性。对于长等待时间指令,在某些情况中,几个必须被串行地解决的状况出现。当这出现时,每一种状况导致所有依赖指令的额外的重放。这导致几个指令遭遇几次顺序的高速缓存未命中。这种状况当一连串依赖指令被重放时出现。在这一连串依赖指令中,几个指令可能每个发生一次高速缓存未命中。这导致级联的一组重放。每一个指令因为依赖关系序列(path)中的每一个未命中而必须另外重放一次。例如,长等待时间指令和依赖于该长等待时间指令的指令可能被重新执行多次直到高速缓存命中出现。
长等待时间指令的一个示例是存储器装载指令,其中在执行指令的第一次尝试中有一个L0高速缓存未命中和一个L1高速缓存未命中(即,芯片上高速缓存未命中)。结果是,执行单元然后可穿过外部总线从外部存储设备获取数据。这样的获取可能非常耗费时间,需要几百个时钟周期。在其源数据变成可用的之前,这个长等待时间装载指令的任何非必要的和重复的重执行都浪费宝贵的执行资源,妨碍其它指令执行,并且增加总的处理器等待时间。
所以,根据一个实施例,重放队列被提供用于存储指令。在不成功地执行一个指令之后,该指令和依赖于其的也不成功地被执行的指令,被存储在重放队列中,直到该指令所需要的数据返回,即,该数据的高速缓存位置是有效的。在这个时候,指令被认为为执行做好了准备。例如,当存储器装载指令的数据从外部存储器返回时,存储器装载指令然后可被调度执行,并且任何依赖指令在存储器装载指令完成之后可被调度。
B.系统结构
图1是图解了根据本发明实施例的处理器的一部分的框图。分配器/重命名器从前端(未示出)接收指令。在给指令分配系统资源之后,指令被传递到重放队列20。重放队列20按照程序顺序存储指令。重放队列20可基于指令所需要的数据是否可用而将指令标记为安全或者不安全的。然后指令被发送到调度器30。尽管只有一个调度器30被画出以简化本发明的说明,也可以多个调度器被耦合到重放队列20。调度器30可重新排列指令以不按照程序顺利执行指令以达到数据推测固有的效率。为了避免降低处理器总处理能力、增加能量消耗和增加热量散发的过度的重放循环,调度器30可包括计数器32。计数器32可被用于为每一个指令保存一个计数器,表示该指令已经被执行或重放的次数。在一个实施例中,计数器可以和重放队列20包括在一起。在另一个实施例中,计数器可以和指令成对组合并跟踪该指令。在另一个实施例中,芯片上(on-chip)存储设备可被专用于跟踪所有等待状态的(pending)指令的重放状态。在这个实施例中,芯片上计数器可被重放队列20和/或调度器30和/或检验器60访问。
在确定指令将被发送以执行的顺序的时候,调度器30在确定指令的执行顺序时利用了指令的数据依赖关系和指令的等待时间。就是说,基于不同指令的数据依赖关系和指令的预期执行时间,即,指令的等待时间的结合,调度器确定指令的执行顺序。调度器30可参照计数器32来确定执行或重放的最大数是否已经出现。通过这种方式,对于重放是不安全的指令的过度重放能够被避免,从而解除分配了其它指令的执行所需的系统资源。调度器30将指令传递到执行单元40。尽管只有一个执行单元40被画出以简化本发明的说明,但是多个执行单元可被耦合到多个调度器。在一个实施例中,调度器可将指令在多个执行单元之间错开,使得指令的执行是并行地进行的,并且不依顺序,试图将指令的数据依赖关系与其它并行地执行的、该指令依赖于其的指令的预期的完成相匹配。在一个实施例中,分级队列(staging queue)50也可被用于与执行单元40并行地以未执行的、延迟的形式发送指令信息。尽管只有一个分级队列被画出,但是若干形式的分级被需要并且任何其它的分级方法可被使用。
在指令执行之后,检验器60确定执行是否成功。在一个实施例中,这可通过分析指令的数据依赖关系,以及在所需数据的高速缓存位置高速缓存命中或者高速缓存未命中是否发生来实现。更具体地说,检验器通过检验指令的输入寄存器以确定包含于其中的数据是否有效来检验重放是否必须。为了确定重放是否必须,检验器可检验执行结果的情况以确定高速缓存命中是否发生。其它情况也可能产生重放。例如,同时需要相同的硬件资源的两个指令可能造成指令中的一个重放,因为两个指令不能同时访问这些资源。
如果指令成功地执行,指令和它的结果被发送到撤出单元(retireunit)70以被撤出。撤出单元70撤出该指令。撤出单元70可被耦合到分配器/重命名器10并与之通信以解除分配(deallocate)指令所使用的资源。撤出单元70还可被耦合到重放队列20并与之通信以发信号通知指令已经被成功地执行并应该从重放队列中被去除。如果指令没有成功地执行,检验器60将指令发送回重放队列20,并且执行循环(cycle),这里也称为重放循环(loop),对于该指令再次开始。在一个实施例中,重放队列20按照程序顺序将指令返回到调度器30。在一个实施例中,由于指令为了重调度和重执行而被传递回调度器30,重放队列20可被认为是重调度的重放队列。在一个实施例中,重放队列20按照程序顺序保存指令。
为了确定什么时候指令应该被传递到调度器,在一个实施例中,重放队列20可为未被检验器60撤出的每一个指令保持一组位。在这个实施例中,重放队列20可保持一个重放安全位、一个有效位、一个飞行中(in-flight)位和一个就绪位。当指令通过检验器时,重放队列将重放安全位设置为一(1)或真,这样指令已成功地完成执行。当指令已经被装载并且处于重放队列中时,重放队列将有效位设置为一(1)或真。当指令处于执行单元中时,即指令正在被执行时,重放队列将飞行中位设置为一(1)或真。当已知要被执行的指令所需要的输入或源(source)就绪时,重放队列将就绪位设置为一(1)或真。就绪位也被称为源有效位,因为当指令的源有效时它被设置为一(1)或真。
图2是图解了包括了本发明的一个实施例的处理器的框图。处理器2包括前端4,其可包括若干单元,例如指令取回(fetch)单元,指令解码器,指令解码器用于将指令解码,即,将复杂的指令解码成一个或多个微操作(micro-operation或μops),以及一个用于临时存储指令的指令队列(IQ)。在一个实施例中,存储于指令队列中的指令可以是微操作。在另一个实施例中,其它类型的指令可被使用。由前端提供的指令可能作为汇编语言或机器语言指令被产生的,在一些实施例中,它们可以被从宏操作解码成微操作。这些微操作可被认为是处理器的微架构的一种机器语言。在一个实施例中,前端所传递的是这些微操作。在另一个实施例中,尤其是在精简指令集计算机(RISC)处理芯片中,不需要解码,因为在RISC汇编语言和处理器的微操作之间存在一对一的对应关系。如这里所述,术语指令指的是任何宏操作或微操作、汇编语言指令、机器语言指令及其类似物。
在一个实施例中,分配器/重命名器10可从前端4接收微操作形式的指令。在一个实施例中,每一个指令可包括指令和最多两个逻辑源和一个逻辑目的地。源和目的地是处理器2中的逻辑寄存器(未示出)。在一个实施例中,寄存器别名表(RAT,register alias table)可被用来将源和目的地的逻辑寄存器映射到物理寄存器。物理源是在专门用作寄存器的芯片上的存储器的实际内部存储器地址。逻辑寄存器是由处理器架构定义的可被写汇编语言代码的人所识别的寄存器。例如,根据Intel架构,即通常所说的IA-32,逻辑寄存器包括EAX(累加器寄存器)和EBX(基址寄存器)。这样的逻辑寄存器可被映射到物理寄存器。
分配器/重命名器10被耦合到重放队列20。重放队列20被耦合到调度器30。尽管只有一个调度器被画出以简化本发明的说明,多个调度器可被耦合到重放队列。调度器30将从重放队列20接收到的指令分派以被执行。当资源,也就是物理寄存器被标记为对指令的执行是有效的时,并且当指令被确定是推测地执行的良好候选者时,指令可被分派。即,调度器30可不必首先确定指令所需要的数据是否有效或可用而分派指令。更具体地说,调度器基于假设所需要的数据在高速缓存中是可用的来推测地分派。也就是说,假设当指令在执行中向高速缓存请求(request)所需要的数据时,保存所需要的指令输入的高速缓存位置会产生高速缓存命中,调度器基于等待时间来分派指令。调度30输出指令到执行单40。尽管只有一个执行单元被画出以简化本发明的说明,但是多个执行单元可被耦合到多个调度器。执行单元40执行接收到的指令。执行单元40可包括算法逻辑单元(ALU),浮点单元(FPU),用于执行存储器装载(存储器数据读取)和存储(存储器数据写入)的存储器单元等。
执行单元40可被耦合到多级存储设备,数据可被从存储设备中获取和向存储设备中存储。在一个实施例中,执行单元40通过存储器请求控制器42被耦合到L0高速缓存系统44、L1高速缓存系统46和外部存储设备。如这里所述,术语高速缓存系统包括所有高速缓存相关的组件,包括高速缓存和确定所请求的数据是否在高速缓存中被找到的命中/未命中逻辑。LO高速缓存系统44是最快的存储设备,并可被设置在与执行单元40同一个半导体管芯(die)上。因此,数据能够非常迅速地被从L0高速缓存中获取和被写入L0高速缓存。在一个实施例中,L0高速缓存系统44和L1高速缓存系统46被设置在处理器2的管芯上,而L2高速缓存系统84被设置在处理器2的管芯之外。在另一个实施例中,L2高速缓存系统可被包括在邻近L1高速缓存系统的管芯上,并通过存储器请求控制器被耦合到执行单元。在这样一个实施例中,L3高速缓存系统可被设置在处理器管芯之外。
如果执行单元40所请求的数据在L0高速缓存系统44中没有被找到,则执行单元40可尝试从其它级的存储设备获取所需要的数据。这样的请求可通过存储器请求控制器42被进行。在L0高速缓存系统44被检验之后,下一级存储设备是L1高速缓存系统46。如果所需要的数据在L1高速缓存系统46中没有被找到,执行单元40可能被迫使从下一级存储设备中获取所需要的数据,在一个实施例中,该下一级的存储设备可以是通过外部总线82耦合到处理器2的外部存储设备。外部总线接口48可被耦合到存储器请求控制器42和外部总线82。在一个实施例中,外部存储设备可包括一些、全部和/或多个L2高速缓存系统84、主存储器86、磁盘存储器88和其它存储装置的实例,它们可全部被耦合到外部总线82。在一个实施例中,主存储器86包括动态随机访问存储器(DRAM)。磁盘存储器88,主存储器86和L2高速缓存系统84被认为是外部存储设备,因为它们对于处理器来说是外部的,并且通过外部总线被耦合到处理器。对主存储器86和磁盘存储器88的访问比对L2高速缓存系统84的访问慢相当多。对所有外部存储设备的访问比对管芯上(on-die)高速缓存系统的访问慢很多。在一个实施例中,计算机系统可包括服务于L2高速缓存系统的第一外部总线和被所有其它外部存储设备使用的第二外部总线。在各种实施例中,处理器2可包括一、二、三或更多级的管芯上高速缓存系统。
当试图将数据从存储器装载到寄存器时,执行单元40可尝试将来自每一个存储设备的数据从最快到最慢的装载。在一个实施例中,最快级的存储设备,即L0高速缓存系统44,被第一个检验,然后是L1高速缓存系统46、L2高速缓存系统84、主存储器86和磁盘存储器88。用于装载存储器的时间随着每一个附加的存储器级被访问而增加。当所需要的数据最终被找到时,被执行单元40所获取的数据被存储在可利用的较快的存储设备中以允许将来的访问。在一个实施例中,这可以是L0高速缓存系统44。
处理器2还包括通过检验器60和重放队列20实现的重放机制。检验器60被耦合以接收来自执行单元40的输入,并被耦合以提供到重放队列20的输出。这个重放机制使得未成功地执行的指令可被重执行或重放。在一个实施例中,分级队列50可被耦合在调度器30和检验器60之间,并行于执行单元40。在这个实施例中,分级队列50可将指令延迟固定数量的时钟周期,使得执行单元中的指令和分级队列中它所对应的结果可以及时地在同一时刻进入检验器。在各种实施例中,分级队列50中的级的数目可基于每一个执行信道中所希望的分级或延迟的总量而变化。每一个被分派的指令的拷贝可并行于通过执行单元40被执行,通过分级队列50被分级。通过这种方式,保存在分级队列50中的指令的拷贝被提供给检验器60。如果指令未成功地执行,指令的这个拷贝然后可被检验器60路由(route)回重放队列20以重执行。
检验器60接收从分级队列50和执行单元40输出的指令,并且确定哪些指令已经成功地执行了,哪些没有。如果一个指令已经成功地执行了,检验器60将该指令标记为完成的。完成的指令被转发到耦合到检验器60的撤出单元70。撤出单元70解除对指令的重排序,按照原始的、程序顺序放置指令并撤出指令。另外,撤出单元70被耦合到分配器/重命名器10。当指令被撤出时,撤出单元70指示分配器/重命名器10解除分配被该撤出的指令所使用的资源。另外,撤出单元70可被耦合到重放队列20并与之通信,使得撤出之后,从撤出单元70发送一个信号到重放队列20以使得由重放队列20所保存的该指令的所有数据被解除分配。
指令的执行可因为多种原因而被认为是不成功的。最普遍的原因是未满足的源依赖关系和外部重放条件。未满足的源依赖关系可以在当前指令的一个源依赖于另一个还没有成功地完成的指令的结果的时候发生。如果源的正确数据在执行时间不是可用的,这个数据依赖关系可使得当前指令不成功地执行,就是说,前驱(predecessor)指令的结果作为源数据在执行时间不是可用的,导致高速缓存未命中。
在一个实施例中,检验器60可保存一个表,被称为记分板62,以跟踪例如寄存器的源的就绪情况。记分板62可被检验器60所使用以跟踪在指令的执行之前源数据是否是有效或正确的。在指令已经被执行之后,检验器60可利用记分板62来确定指令的数据源是否有效。如果源在执行时间不是有效的,这可以指示检验器60由于未满足的数据依赖关系指令没有成功地执行,并且因此指令应该被重放。
外部重放条件可以包括高速缓存未命中(例如,源数据在执行时间在L0高速缓存系统中没有被找到)、不正确的数据的转发(例如,从存储缓存器(store buffer)到负载(load))、隐藏的存储器依赖关系、回写冲突、未知的数据地址、串行化(serializing)指令等。在一个实施例中,L0高速缓存系统44和L1高速缓存系统46可被耦合到检验器60。在这个实施例中,当存在对L0高速缓存系统的高速缓存未命中时,L0高速缓存系统44可以产生L0高速缓存未命中信号给检验器60。这样的高速缓存未命中指示指令的源数据在L0高速缓存系统44中没有找到。在另一个实施例中,类似的信息和/或信号可被相似地产生给检验器60以指示出现对L1高速缓存系统46的高速缓存未命中和外部重放条件,例如来自包括了L2高速缓存、主存储器、磁盘存储器等的任何外部存储设备。通过这种方式,检验器60可以确定每一个指令是否已经成功地执行了。
如果检验器60确定指令未成功地执行,检验器60发信号通知重放队列20指令必须被重放、重执行。更具体地说,检验器60发送重放所需要的信号给重放队列20,该信号还通过指令序列号来识别指令。未成功地执行的指令可被用信号发送给重放队列20使得所有指令,无论指令的类型或者指令未能成功地执行的具体情况如何,都将被用信号发送给重放队列20并重放。这样的无条件重放适用于具有短等待时间的、在检验器60和重放队列20之间只需要一个或少量传递或重放往复的指令。
由于指令可以基于源数据将成为可用的的期望之上被推测地调度执行(即,在实际等待正确的源数据成为可用的之前),如果结果源数据在执行时间不是可用的,但是源此时是有效的,则检验器60确定指令对于重放是安全的并发信号通知重放队列20该指令需要被重放。也就是说,因为源数据在执行时间不是可用的或正确的,但是数据源此时是可用并且就绪的,检验器60确定指令对于重放是安全的并发信号通知重放队列20该指令是重放安全的。在一个实施例中,重放队列可将重放安全位标记为真,并将指令的飞行中位清零。在这种情况下,在一个实施例中,检验器60可以将重放安全位和指令标识符成对地通过信号发送给重放队列20。在其它实施例中,信号可被检验器所发送的给重放队列的实际指令以及所附信息代替。如果在指令的执行被完成的时候源曾是并且仍旧是不可用的,重放安全位和飞行中位可被清零,即,可被设置为假。
一些长等待时间的指令在最终成功地执行之前在重放循环中可能需要很多次往复。如果指令在第一次尝试中未成功地执行,检验器60可确定指令是否需要相对长的时间来执行(即,长等待时间指令),在正确地执行之前需要若干重放。有很多长等待时间指令的例子。一个例子是可能需要很多时钟周期来执行的除法指令。
另一个长等待时间指令的例子是存储器装载或存储指令,涉及了多级高速缓存系统未命中,例如L0高速缓存系统未命中和L1高速缓存系统未命中。在这样的情况中,可能需要外部总线请求以为指令获取数据。如果需要通过外部总线的访问以获取所希望的数据,则访问延迟显著地增加。为了从外部存储器获取数据,可能需要存储器请求控制器来仲裁外部总线的所有权,启动(issue)到外部总线的一次总线数据交换(transaction)(存储器读取),然后等待数据从外部存储设备之一返回。与从芯片内高速缓存系统,例如L0高速缓存系统或L1高速缓存系统获取数据所需要的时间比较而言,可能需要更多的时钟周期以从外部总线上的存储设备获取数据。这样,由于需要通过外部总线从外部存储设备获取数据,涉及了芯片上高速缓存系统的高速缓存未命中的装载指令可以被认为是长等待时间指令。
在当长等待时间指令正被处理时的相对较长时期的时间内,有可能指令循环了过多次数,大概在几十到几百次往复之间,从重放队列20到调度器30到执行单元40到检验器60再返回。每一次往复中,长等待时间指令可能在源数据返回之前被重放,这个指令不必要地占用了执行管线(pipeline)中的一个时隙(slot),并使用了可以被分配给其它准备好执行并可能成功地执行的指令的执行资源。而且,可能存在很多依赖于这个长等待时间指令的结果的、将相似地重复循环而没有正确地执行的另外的指令。这些依赖指令不会正确地执行直到该长等待时间指令的数据从外部存储设备返回之后为止,甚至占用并浪费另外的执行资源。在所需要的数据返回之前可能出现的不必要和过度的往复会浪费执行资源,会浪费功率,以及会增加总的等待时间。另外,这样的往复会产生指令备份并以减小了的总处理能力的形式大大地降低处理器的性能。
例如,若干运算正在被执行用于在显示器上显示象素的情况下,关于一个象素的指令可以是一个长等待时间指令,例如需要对外部存储设备的存储器访问。在这个长等待时间指令之后可能存在很多关于其它象素的非依赖指令,它们不需要外部存储器访问。结果是,通过不断地重放该长等待时间指令和它的依赖指令,可能妨碍了关于其它象素的非依赖指令的执行。一旦长等待时间指令已经正确地执行,执行时隙和资源变成可用的,关于其它象素的指令接着可以被执行。为了防止这种情况,长等待时间指令和依赖于其的指令被保存在重放队列中直到长等待时间指令的源是可用的为止。接着指令被发放(released)。这是通过将长等待时间指令和依赖于其上的指令存储在重放队列20中实现的。当长等待时间指令的数据变成可用的时,例如从外部存储设备返回时,长等待时间指令和依赖于其上的指令然后可被重放队列20发送到调度器30用于重放。在一个实施例中,这可能伴随着对于每一个长等待时间指令和依赖于其的指令将有效位设置为真,并将其它位,例如飞行中位、重放安全位和就绪位清零或设置为假或者零。在这个实施例中,当重放队列得知长等待时间指令的源是可用的,则长等待时间指令的就绪位可被设置为真,这样使重放队列将长等待时间指令和依赖于其的指令发放给调度器。通过这种方式,长等待时间指令不会不必要地延迟其它非依赖指令的执行。当非依赖指令在长等待时间指令等待它的数据的返回的同时并行地执行时,性能被提高,总处理能力增长,并且功率消耗降低。
在一个实施例中,长等待时间指令可被识别和装入重放队列20中,并且一个或多个另外的指令,即,可能依赖于长等待时间指令的指令,也可以被装入重放队列20中。当使得长等待时间指令不能成功地完成的条件被清除时,例如,当在高速缓存未命中之后,或者除或乘运算完成或其它长等待时间指令完成之后数据从外部总线返回时,重放队列20接着将指令传送到调度器30,从而使得长等待时间指令和其它指令可以被重放、重执行。
但是,要识别依赖指令也许是困难的,因为可能存在隐藏的存储器依赖关系等。所以,在一个实施例中,当长等待时间指令被识别并装入重放队列20中时,所有其它未正确地执行的、程序上更新的(younger)指令也可被装载到重放队列中。也就是说,在一个实施例中,更新的指令会比由前端在时间上更早地提供的更老的指令具有更大的序列号。
为了避免不必要的指令重放,也可以使用计数器。在一个实施例中,在指令在处理器内被从重放队列传递到调度器到执行单元到检验器时,计数器可被与指令以及相关的信息结合。在另一个实施例中,计数器可以与重放队列包括在一起。在另一个实施例中,芯片上存储设备可被专门用于跟踪所有等待状态的指令的重放状况,并且可被调度器、重放队列和/或检验器访问。在这些实施例的任何一个中,计数器可被用于保存指令已经被执行或重放的次数。在一个实施例中,当调度器接收到一个指令时,该指令的计数器可以自动地递增。计数器被用于中断(breaking)重放依赖关系循环,并且减少还不能被成功地执行的指令的不必要的执行。在一个实施例中,调度器检验指令的计数器是否已超出机器规定的重放最大数。如果计数器超出最大数,该指令不被调度执行,直到指令所需要的数据是可用的。当数据是可用的时,该指令被视为对执行是安全的。根据这种方法,任何指令不能在处理器中循环超过机器规定的往复的最大数。通过这种方式,当机器规定的往复的最大数被超出时,重放循环被中断。
C.一种指令处理方法
图3是图解了根据本发明的一个实施例的一种指令处理方法的流程图。如框110中所示,多个指令被接收到。然后系统资源就指令的执行被分配使用,包括资源的重命名,如框112中所示。接着指令被放置在一个队列中,如框114中所示。然后基于指令的数据依赖关系和指令的预期等待时间,指令的执行被调度,如框116中所示。然后进行检验以确定指令的计数器是否被设置为零,表示这是指令第一次将被执行,如框118中所示。如果计数器被设置为零,如框124中所示指令接着被执行。如果计数器不是零,则进行检验以确定指令的计数器是否超出系统规定的最大数,如框120中所示。也就是说,检验以确定重放往复的最大数是否被超出。如果计数器没有超出系统规定的最大数,则指令被执行,如框124中所示。如果计数器超出系统规定的最大数,则进行检验以确定指令的数据源是否就绪和可用,如框122中所示。也就是说,进行检验以确定指令对于被执行是否安全。如果指令对于被执行不安全并且如果重放的最大数已经被超出,则重放循环被中断,流程从框116继续,如框120和122中所示。也就是说,只要指令对于执行是不安全的并且重放或执行的最大数被超出,则再次重放被阻止直到该指令的数据是可用的为止。
如果指令正第一次被执行,如果执行指令是安全的,或者如果指令的重放最大数没有被超出,则尝试执行该指令,如框124中所示。在指令正第一次被执行和计数器没有超出时的情况下,无论它的数据是否可用,指令都被执行。通过这种方式,执行可以被推测地进行。然后进行检验以确定是否指令的执行是成功的,如框126中所示。如果指令的执行不成功,方法在框128中继续,其中该指令的计数器递增。接着信号被发送到队列,指示执行是不成功的并且该指令应该被重调度以重执行。如果指令的执行是成功的,如框126中所示,该指令被撤出,包括将指令按照程序顺序放置、解除分配被该指令所使用的系统资源、以及从队列中移除该指令及相关的信息,如框130中所示。
在另一个实施例中,对数据可用性的检验和对是否超出重放计数器的检验可以被倒置。在这个实施例中,框120和112可以按照倒置的顺序被执行。在这个实施例中,进行检验以获知指令是否安全,如果是,则指令被执行。如果指令不是安全的,则进行检验以确定重放的最大数是否已经被超出,如果是,则重放循环被中断,并且流程进入框116。如果重放的最大数没有被超出,则推测的执行继续。
在以上说明中,本发明通过参照其特定实施例被描述。但是,显然可以在不背离本发明在所附权利要求中所陈述的较宽的精神和范围情况下对其进行各种修改和改变。因此,说明书和图被认为是说明性的而不是限制性的。

Claims (24)

1.一种处理器,包括:
重放队列,用于接收多个指令;
执行单元,用于执行所述多个指令;
调度器,耦合在所述重放队列和所述执行单元之间,用于推测地为执行调度指令,递增所述多个指令的每一个的计数器以反映所述多个指令的每一个已经被执行的次数,以及当计数器没有超出重放的最大数时,或者如果所述指令的计数器超出了重放的最大数,所述指令对于执行是安全的时,将所述多个指令的每一个指令分派到所述执行单元;和
检验器,耦合到所述执行单元,用于确定每一个指令是否已经成功地执行了,以及耦合到所述重放队列,用于向所述重放队列发送每一个没有成功地执行的指令。
2.如权利要求1所述的处理器,还包括:
分配器/重命名器,耦合到所述重放队列,用于分配和重命名多种资源中所述指令所需要的那些。
3.如权利要求2所述的处理器,还包括:
前端,耦合该分配器/重命名器,用于将该多个指令提供给该分配器/重命名器。
4.如权利要求2所述的处理器,还包括:
撤出单元,用于撤出该多个指令,耦合到检验器用于接收该多个指令中已经成功地执行的那些,以及耦合到分配器/重命名器用于发送解除分配信号给分配器/重命名器。
5.如权利要求4所述的处理器,其中所述撤出单元还耦合到重放队列用于在多个指令中的一个被撤出时发送撤出信号。
6.如权利要求1所述的处理器,还包括:
处理器管芯上的至少一个高速缓存系统;
多个外部存储设备;和
存储器请求控制器,耦合到所述执行单元用于从所述至少一个高速缓存系统和所述多个外部存储设备获得数据。
7.如权利要求6所述的处理器,其中所述至少一个高速缓存系统包括一个第一级高速缓存系统和一个第二级高速缓存系统。
8.如权利要求6所述的处理器,其中所述外部存储设备至少包括第三级高速缓存系统、主存储器和磁盘存储器中的一个。
9.如权利要求1所述的处理器,还包括:
分级队列,耦合在所述检验器和所述调度器之间。
10.如权利要求1所述的处理器,其中调度器包括多个计数器,用于为所述多个指令的每一个保存所述多个计数器的每一个。
11.如权利要求1所述的处理器,其中计数器是多个计数器中的一个使得该多个计数器的每一个计数器与该多个指令的一个配对。
12.如权利要求1所述的处理器,其中检验器包括一个记分板,用于保存多种资源的状态。
13.一种处理器,包括:
重放队列,用于接收多个指令;
至少两个执行单元,用于执行该多个指令;
至少两个调度器,耦合在所述重放队列和所述执行单元之间,用于为执行调度指令,递增所述多个指令的每一个的计数器以反映所述多个指令的每一个已经执行的次数,以及当计数器没有超出最大数时,或者如果所述计数器超出重放的最大数,所述指令所需要的数据是可用的时,将所述多个指令的每一个指令发送给执行单元;和
检验器,耦合到所述执行单元用于确定每一个指令是否已经成功地执行了,以及耦合到所述重放队列,用于发送每一个没有成功地执行的指令。
14.如权利要求13所述的处理器,还包括:
多个存储设备,耦合到所述执行单元以便检验器基于由所述存储设备所提供的多个信息确定所述指令是否已经成功地执行了。
15.如权利要求13所述的处理器,还包括:
分配器/重命名器,耦合到所述重放队列,用于分配和重命名多种资源中所述多个指令所需要的那些。
16.如权利要求15所述的处理器,还包括:
前端,耦合到所述分配器/重命名器用于将所述多个指令提供给所述分配器/重命名器。
17.如权利要求15所述的处理器,还包括:
撤出单元,用于撤出所述多个指令,耦合到所述检验器用于接收所述多个指令中已经成功地执行的那些,以及耦合到所述分配器/重命名器用于发送解除分配信号给所述分配器/重命名器。
18.如权利要求17所述的处理器,其中所述撤出单元还耦合到所述重放队列,用于当所述多个指令被撤出时发送撤出信号。
19.一种方法,包括:
接收多个指令中的一个指令;
将所述指令和所述多个指令中的其它指令一起放置到一个队列中;
基于数据依赖关系和指令等待时间推测地重新排列所述多个指令中调度器中的那些;
将所述多个指令中的一个分派到一个执行单元,以在所述指令的计数器没有超出重放最大数时,或者如果所述指令的计数器超出重放的最大数,当所述指令所需要的数据是可用的时,被执行;
执行所述指令;
确定所述指令是否成功地执行;
如果所述指令没有成功地执行,将所述指令路由回队列;以及
如果所述指令成功地执行了,撤出所述指令。
20.如权利要求19所述的方法,还包括:
分配多种系统资源中该指令所需要的那些。
21.如权利要求20所述的方法,其中撤出包括:
解除分配多种系统资源中所述被撤出的指令所使用的那些;
从所述队列中去除所述指令以及大量相关数据。
22.如权利要求19所述的方法,还包括:
保存多个计数器,每一个对应于调度器中所述多个指令中的每一个,以便所述计数器反映对应指令已经被执行的次数。
23.如权利要求22所述的方法,其中所述对应指令的多个计数器中的每一个与所述多个指令的每一个配对。
24.如权利要求22所述的方法,其中所述多个计数器被存储在所述调度器中。
CNB018198961A 2000-11-02 2001-10-18 利用重新调度的重放队列中断处理器中的重放依赖关系循环 Expired - Fee Related CN1294484C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/705,668 US6981129B1 (en) 2000-11-02 2000-11-02 Breaking replay dependency loops in a processor using a rescheduled replay queue
US09/705,668 2000-11-02

Publications (2)

Publication Number Publication Date
CN1478228A CN1478228A (zh) 2004-02-25
CN1294484C true CN1294484C (zh) 2007-01-10

Family

ID=24834458

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018198961A Expired - Fee Related CN1294484C (zh) 2000-11-02 2001-10-18 利用重新调度的重放队列中断处理器中的重放依赖关系循环

Country Status (5)

Country Link
US (1) US6981129B1 (zh)
EP (1) EP1334426A2 (zh)
CN (1) CN1294484C (zh)
AU (1) AU2002236668A1 (zh)
WO (1) WO2002039269A2 (zh)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8028314B1 (en) 2000-05-26 2011-09-27 Sharp Laboratories Of America, Inc. Audiovisual information management system
US8020183B2 (en) 2000-09-14 2011-09-13 Sharp Laboratories Of America, Inc. Audiovisual management system
US20030038796A1 (en) 2001-02-15 2003-02-27 Van Beek Petrus J.L. Segmentation metadata for audio-visual content
US7904814B2 (en) 2001-04-19 2011-03-08 Sharp Laboratories Of America, Inc. System for presenting audio-video content
US7499077B2 (en) 2001-06-04 2009-03-03 Sharp Laboratories Of America, Inc. Summarization of football video content
US7474698B2 (en) * 2001-10-19 2009-01-06 Sharp Laboratories Of America, Inc. Identification of replay segments
US7120873B2 (en) 2002-01-28 2006-10-10 Sharp Laboratories Of America, Inc. Summarization of sumo video content
US8214741B2 (en) 2002-03-19 2012-07-03 Sharp Laboratories Of America, Inc. Synchronization of video and data
US7657836B2 (en) 2002-07-25 2010-02-02 Sharp Laboratories Of America, Inc. Summarization of soccer video content
US7657907B2 (en) 2002-09-30 2010-02-02 Sharp Laboratories Of America, Inc. Automatic user profiling
US20040111593A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Interrupt handler prediction method and system
US7363470B2 (en) * 2003-05-02 2008-04-22 Advanced Micro Devices, Inc. System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor
US7111153B2 (en) * 2003-09-30 2006-09-19 Intel Corporation Early data return indication mechanism
US8356317B2 (en) 2004-03-04 2013-01-15 Sharp Laboratories Of America, Inc. Presence based technology
US7594245B2 (en) 2004-03-04 2009-09-22 Sharp Laboratories Of America, Inc. Networked video devices
US8949899B2 (en) 2005-03-04 2015-02-03 Sharp Laboratories Of America, Inc. Collaborative recommendation system
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
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
US7613904B2 (en) 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US7490230B2 (en) 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US7506140B2 (en) 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
US7657891B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US8689253B2 (en) 2006-03-03 2014-04-01 Sharp Laboratories Of America, Inc. Method and system for configuring media-playing sets
US7502914B2 (en) * 2006-07-31 2009-03-10 Advanced Micro Devices, Inc. Transitive suppression of instruction replay
US7861066B2 (en) * 2007-07-20 2010-12-28 Advanced Micro Devices, Inc. Mechanism for predicting and suppressing instruction replay in a processor
US8412998B1 (en) * 2008-04-02 2013-04-02 Marvell International Ltd Restart operation with logical blocks in queued commands
US7945767B2 (en) * 2008-09-30 2011-05-17 Faraday Technology Corp. Recovery apparatus for solving branch mis-prediction and method and central processing unit thereof
US20120198464A1 (en) * 2011-01-31 2012-08-02 Toyota Jidosha Kabushiki Kaisha Safety controller and safety control method
CN102156637A (zh) * 2011-05-04 2011-08-17 中国人民解放军国防科学技术大学 向量交叉多线程处理方法及向量交叉多线程微处理器
US9256428B2 (en) 2013-02-06 2016-02-09 International Business Machines Corporation Load latency speculation in an out-of-order computer processor
US9400653B2 (en) 2013-03-14 2016-07-26 Samsung Electronics Co., Ltd. System and method to clear and rebuild dependencies
US9715389B2 (en) 2013-06-25 2017-07-25 Advanced Micro Devices, Inc. Dependent instruction suppression
US9606806B2 (en) 2013-06-25 2017-03-28 Advanced Micro Devices, Inc. Dependence-based replay suppression
US9489206B2 (en) 2013-07-16 2016-11-08 Advanced Micro Devices, Inc. Dependent instruction suppression
US9483273B2 (en) * 2013-07-16 2016-11-01 Advanced Micro Devices, Inc. Dependent instruction suppression in a load-operation instruction
US10102002B2 (en) * 2014-09-30 2018-10-16 International Business Machines Corporation Dynamic issue masks for processor hang prevention
EP3055768B1 (en) 2014-12-14 2018-10-31 VIA Alliance Semiconductor Co., Ltd. Mechanism to preclude uncacheable-dependent load replays in out-of-order processor
US9804845B2 (en) 2014-12-14 2017-10-31 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor
US10108428B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor
KR101822726B1 (ko) 2014-12-14 2018-01-26 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 로드 리플레이를 억제하는 메커니즘
US10146539B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd. Load replay precluding mechanism
WO2016097814A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude shared ram-dependent load replays in out-of-order processor
US10108430B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
WO2016097790A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude non-core cache-dependent load replays in out-of-order processor
WO2016097791A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method for programmable load replay preclusion
US10089112B2 (en) 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor
KR101837817B1 (ko) * 2014-12-14 2018-03-12 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 비순차 프로세서에서 페이지 워크에 따라 로드 리플레이를 억제하는 메커니즘
US10088881B2 (en) 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude I/O-dependent load replays in an out-of-order processor
US10146540B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor
WO2016097811A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude load replays dependent on fuse array access in out-of-order processor
US10127046B2 (en) 2014-12-14 2018-11-13 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude uncacheable-dependent load replays in out-of-order processor
EP3049956B1 (en) 2014-12-14 2018-10-10 VIA Alliance Semiconductor Co., Ltd. Mechanism to preclude i/o-dependent load replays in out-of-order processor
US10108421B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude shared ram-dependent load replays in an out-of-order processor
KR101819315B1 (ko) 2014-12-14 2018-01-16 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 비순차 프로세서에서 작성 결합 메모리 공간 접근에 따라 로드 리플레이를 억제하기 위한 장치 및 방법
US10114646B2 (en) 2014-12-14 2018-10-30 Via Alliance Semiconductor Co., Ltd Programmable load replay precluding mechanism
WO2016097815A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude x86 special bus cycle load replays in out-of-order processor
JP6286066B2 (ja) 2014-12-14 2018-02-28 ヴィア アライアンス セミコンダクター カンパニー リミテッド アウトオブオーダープロセッサでのロードリプレイを低減する節電メカニズム
KR101820221B1 (ko) 2014-12-14 2018-02-28 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 프로그래머블 로드 리플레이 억제 메커니즘
US10083038B2 (en) 2014-12-14 2018-09-25 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on page walks in an out-of-order processor
US10175984B2 (en) 2014-12-14 2019-01-08 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor
US10228944B2 (en) 2014-12-14 2019-03-12 Via Alliance Semiconductor Co., Ltd. Apparatus and method for programmable load replay preclusion
US10120689B2 (en) 2014-12-14 2018-11-06 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
US10108420B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor
US9715390B2 (en) * 2015-04-19 2017-07-25 Centipede Semi Ltd. Run-time parallelization of code execution based on an approximate register-access specification
US10678542B2 (en) * 2015-07-24 2020-06-09 Apple Inc. Non-shifting reservation station
US11379242B2 (en) * 2017-06-29 2022-07-05 Intel Corporation Methods and apparatus for using load and store addresses to resolve memory dependencies
US10452434B1 (en) 2017-09-11 2019-10-22 Apple Inc. Hierarchical reservation station
EP3699771A1 (en) * 2019-02-21 2020-08-26 CoreMedia AG Method and apparatus for managing data in a content management system
CN112202654B (zh) * 2020-09-22 2022-08-02 广州河东科技有限公司 控制指令处理方法、装置、设备及存储介质
CN117707995B (zh) * 2024-02-02 2024-04-26 北京惠朗时代科技有限公司 一种数据预读取的优化装置及操作方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1206145A (zh) * 1997-06-30 1999-01-27 索尼公司 带有流水线处理电路的信号处理器及其方法
WO1999031589A1 (en) * 1997-12-16 1999-06-24 Intel Corporation Out-of-pipeline trace buffer for instruction replay following misspeculation
US5966544A (en) * 1996-11-13 1999-10-12 Intel Corporation Data speculatable processor having reply architecture

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3603934A (en) * 1968-07-15 1971-09-07 Ibm Data processing system capable of operation despite a malfunction
US5784587A (en) 1996-06-13 1998-07-21 Hewlett-Packard Company Method and system for recovering from cache misses
US5944818A (en) * 1996-06-28 1999-08-31 Intel Corporation Method and apparatus for accelerated instruction restart in a microprocessor
US6212626B1 (en) 1996-11-13 2001-04-03 Intel Corporation Computer processor having a checker
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6496925B1 (en) * 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966544A (en) * 1996-11-13 1999-10-12 Intel Corporation Data speculatable processor having reply architecture
CN1206145A (zh) * 1997-06-30 1999-01-27 索尼公司 带有流水线处理电路的信号处理器及其方法
WO1999031589A1 (en) * 1997-12-16 1999-06-24 Intel Corporation Out-of-pipeline trace buffer for instruction replay following misspeculation

Also Published As

Publication number Publication date
WO2002039269A3 (en) 2003-01-23
US6981129B1 (en) 2005-12-27
AU2002236668A1 (en) 2002-05-21
WO2002039269A2 (en) 2002-05-16
EP1334426A2 (en) 2003-08-13
CN1478228A (zh) 2004-02-25

Similar Documents

Publication Publication Date Title
CN1294484C (zh) 利用重新调度的重放队列中断处理器中的重放依赖关系循环
US6877086B1 (en) Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter
US11275590B2 (en) Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory
US5185868A (en) Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
US8032734B2 (en) Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor
US7647475B2 (en) System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue
JP4553936B2 (ja) アウト・オブ・オーダーのdmaコマンドキューにおけるコマンド順序の設定に関する技術
CN106055310B (zh) 图形处理中管理活动线程依赖关系
US8386753B2 (en) Completion arbitration for more than two threads based on resource limitations
US20100058033A1 (en) System and Method for Double-Issue Instructions Using a Dependency Matrix and a Side Issue Queue
EP0605868B1 (en) Method and system for independently accessing intermediate storage buffers by a plurality of execution units in a superscalar processor system
EP0605866B1 (en) Method and system for enhanced instruction dispatch in a superscalar processor system utilizing independently accessed intermediate storage
US10331357B2 (en) Tracking stores and loads by bypassing load store units
US6567901B1 (en) Read around speculative load
CN110297662B (zh) 指令乱序执行的方法、处理器及电子设备
CN115576610B (zh) 一种适用于通用顺序发射处理器的指令分发处理方法及装置
CN112214241A (zh) 一种分布式指令执行单元的方法及系统
US6970996B1 (en) Operand queue for use in a floating point unit to reduce read-after-write latency and method of operation
US7257698B2 (en) Instruction buffer and method of controlling the instruction buffer where buffer entries are issued in a predetermined order
US9323575B1 (en) Systems and methods for improving data restore overhead in multi-tasking environments
CN111078289B (zh) 用于执行多线程系统的子线程的方法和多线程系统
US20180046463A1 (en) System and method for load and store queue allocations at address generation time
US20080282050A1 (en) Methods and arrangements for controlling memory operations
US20040128484A1 (en) Method and apparatus for transparent delayed write-back
CN108536474B (zh) 延迟缓冲器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070110

Termination date: 20101018