CN100478871C - 从队列处理指令刷新的生存期计数器设计的系统和方法 - Google Patents
从队列处理指令刷新的生存期计数器设计的系统和方法 Download PDFInfo
- Publication number
- CN100478871C CN100478871C CNB2006101002599A CN200610100259A CN100478871C CN 100478871 C CN100478871 C CN 100478871C CN B2006101002599 A CNB2006101002599 A CN B2006101002599A CN 200610100259 A CN200610100259 A CN 200610100259A CN 100478871 C CN100478871 C CN 100478871C
- Authority
- CN
- China
- Prior art keywords
- instruction
- counter
- performance element
- pipeline
- unit
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000013461 design Methods 0.000 title description 8
- 230000015572 biosynthetic process Effects 0.000 claims description 52
- 230000007423 decrease Effects 0.000 claims description 12
- 230000003247 decreasing effect Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 4
- 230000001360 synchronised effect Effects 0.000 claims 2
- 238000009738 saturating Methods 0.000 abstract 1
- 238000005755 formation reaction Methods 0.000 description 41
- 238000012545 processing Methods 0.000 description 22
- 230000015654 memory Effects 0.000 description 19
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000007667 floating Methods 0.000 description 12
- 230000000717 retained effect Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 7
- 238000003860 storage Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 229920006395 saturated elastomer Polymers 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001960 triggered effect Effects 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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, 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- 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, look ahead
- G06F9/3861—Recovery, 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
本发明提供了一种用于使用计数器来跟踪已发出指令的顺序的系统和方法。在一个实施例中,使用了饱和递减计数器。所述计数器被初始化为与处理器的提交点对应的值。从第一发出队列将指令发出到一个或多个执行单元和一个或多个第二发出队列。在由所述第一发出队列发出后,在每个指令周期期间递减与每条指令关联的计数器,直到所述执行单元中的一个执行单元执行所述指令为止。一旦所述计数器达到0,所述执行单元将完成所述指令。如果出现刷新条件,将保留(即,不刷新或无效)计数器等于0的指令,而所述管线中的其他指令将根据它们的计数器值被无效。
Description
技术领域
本发明一般地涉及一种用于刷新处理器的执行单元中的指令的系统和方法。更具体地说,本发明涉及一种用于将计数器分配给执行单元中的每个指令,以便确定在处理器上出现异常条件时应刷新执行单元中的哪些指令的系统和方法。
背景技术
管线处理是一种在计算机内提供同时处理或并行处理的技术。它是指通过将数据或指令移动到概念上的管道中并且同时执行管道的全部级来重叠操作。例如,当正在执行一条指令时,计算机可以对下一条指令进行解码。在向量处理器中,可以同时处理浮点运算中的若干步骤。
管线分为多个段并且每个段可以与其他段同时执行操作。当一个段完成操作时,它将结果传递给管线中的下一个段,并从先前的段取回下一条操作指令。每条指令的最后结果在管线的末端快速连续出现。
无序执行是一种用于获得速度优势和性能优势的技术。但是,无序执行偶尔也会产生危险。这种危险可能使微处理器刷新来自管线级的已取回但未完成的指令并且随后再填充管道。但是,随着处理器中管线级的数量的增加,刷新和再填充管道的开销也将增加,这导致降低了性能。
确定给定指令的弃置或刷新点是微处理器设计中的重要职责。对于无序设计,已经提出了各种方法。在有序设计中,发出队列可以允许某些指令(例如来自浮点管线)与其他指令(例如来自不同管线的定点指令)并行地发出和执行。虽然使用多条管线允许通过多条管线的指令的更大吞吐量,但是它也在发生指令刷新时产生了某些难题。
在有序处理器中使用多条管线的一个难题是,需要一种机制来跟踪将指令发出到正在并行运行并且可能彼此独立运行(例如,用于浮点指令的管线和用于定点指令的管线)的执行单元的顺序。换句话说,需要一种机制来允许将一个执行单元的发出队列和管线与其他执行单元的各个发出队列和管线分离的机制,以便可以实现更高的效率和吞吐量,同时仍然维持关于有序处理器中的异常(刷新)点的意义上的顺序。另一个难题是,用于相对于彼此来跟踪所述发出队列和执行管线的机制需要快速而高效,以便它不会降低处理器的总体速度和效率。
因此,需要一种跟踪一个执行单元中的指令相对于其他执行单元中的指令的顺序而不添加妨碍系统性能的不必要复杂性的系统和方法。一个执行单元将成为其他独立运行的执行单元的参考点,并且可以具有防止管线之间的简单同步的发出队列。此外,需要一种允许更复杂的刷新操作(例如刷新距异常点至少一条指令的所有指令的能力)的系统和方法。
发明内容
已经发现,可以使用跟踪执行单元中指令的顺序(使用计数器将不同执行单元中的指令的执行相关联)的系统和方法来解决上述难题。在一个实施例中,使用了饱和递减计数器。当指令被发送到“并行”执行单元时,与该指令对应的计数器被初始化成与变成“参考”执行单元管线的多个执行单元(例如,加载/存储单元、定点执行单元等)中的一个执行单元的管线长度对应的值。
当指令通过并行管线前进时,其计数器递减直到达到0。一旦计数器达到0,其将被执行单元结束。如果出现刷新条件,将保留(即,不刷新或不无效)具有等于0的计数器的指令,而管线中的其他指令被无效。刷新条件的某些常见实例是高速缓存未命中、分支预测错误、数据对齐错误和无效的指令格式。
在一个实施例中,可以提供不同类型的刷新。不同的刷新类型有助于允许处理器更灵活地处理异常条件。当出现“全部刷新”条件时,将刷新(即,无效)所有计数器值大于0的指令,并且在管线中保留计数器值为0的指令。当出现“刷新N+1”条件时,将刷新所有计数器值大于0的指令,但是,将保留具有计数器值为1的“最早的”指令并且不对其进行无效或刷新。为了确定哪个指令是“最早的”,将一个或多个“年龄位(agebit)”分配给每个指令以指示指令进入发出逻辑的顺序。在使用双发出逻辑(其中可以在同一指令周期内发出两条指令)的实施例中,指令流中的第一条指令分配有为“0”(较早)的年龄位属性,而第二条指令分配有为“1”(较新)的年龄位属性。最后,当出现“刷新N+2”条件时,将刷新所有计数器值大于1的指令,具有为0或1的计数器值的指令将被保留并且不会被刷新。
本发明提供了一种计算机实现的方法,所述方法包括:当将多个指令从第一发出队列发出到多个单元时,将多个计数器中的每个计数器初始化为初始值,每个计数器对应于所述多个指令中的一个指令,其中所述单元中的一个单元是第二发出队列,并且其中每个计数器的所述初始值被设置为其对应指令的提交点,其中每个指令的所述提交点是在其之后不再刷新所述指令的指令周期数;将发出到所述第二发出队列的所述多个指令发出到多个执行单元管线,所述执行单元管线中的每个执行单元管线与多个执行单元中的一个执行单元相连;在所述初始化后,在多个指令周期中的每个指令周期期间递减与所述指令对应的所述计数器,直到所述指令由所述多个执行单元中的一个执行单元执行为止;标识与已被发出到所述多个单元中的一个单元的所述多个指令中的一个指令对应的“N+1”异常;响应于标识所述“N+1”异常,执行以下步骤:从所述多个执行单元管线刷新计数器大于1的指令,其中不从所述多个执行单元管线刷新计数器等于0的指令;读取与计数器等于1的指令关联的年龄属性,其中每个计数器等于1的指令具有关联的年龄属性;以及响应于读取所述年龄属性,根据所述指令的年龄属性从所述多个执行单元管线刷新一个或多个计数器等于1的指令。
以这种方式,所述发出队列实际上被与系统中的其他队列分离。例如,除该发出队列以外,第二个队列可用于将指令发出到一个或多个执行单元。在此实例中,第一“发出”队列将指令发出到多个执行单元并且一个或多个执行单元共享第二发出队列。其他执行单元不能使用第二发出队列,由此第一发出队列逻辑将发送命令直接发出到执行管线。虽然第二发出队列中的指令在被发出到与该第二发出队列捆绑的某一执行单元之前可能停止,但是分配给该指令的计数器值将继续在每个指令周期递减。以这种方式,可以将第二发出队列与没有第二发出队列的执行单元分离,同时仍然维持关于异常(刷新)点的意义上的顺序。以这种方式,能够完成刷新点之前发出的指令,而那些在刷新点之后发出的指令被有效和高效地从相应执行单元管线刷新。此外,提供各种类型的刷新条件提供了附加的粒度,以便可以有效地标识更精确的刷新点位置,而无需重新发出能够被正确完成的指令。
以上所述是概要,并且因此必然包含细节的简化、概括和省略;因此,本领域的技术人员将理解,所述概要只是示例性的并且并非旨在以任何方式进行限制。如仅由权利要求限定的本发明的其他方面、发明特征和优点将在以下所述的非限制性详细说明中变得显而易见。
附图说明
通过参考附图,可以更好地理解本发明并且本发明的众多目标、特征和优点将对本领域的技术人员变得显而易见,这些附图是:
图1是示出了使用计数器从队列处理指令刷新的各种处理器组件的高级示意图;
图2是示出了发出具有跟踪指令通过执行单元管线的级数的计数器的指令的流程图;
图3是示出了将指令发出到已分离的队列并且多个管线具有用于相对于发出指令的顺序来跟踪指令通过管线的级数的计数器的示意图;
图4是示出了处理“全部刷新”异常的流程图;
图5是示出了处理“刷新N+1”异常的流程图;
图6是示出了处理“刷新N+2”异常的流程图;
图7是能够实现本发明的计算设备的方框图;以及
图8是包括多个其中可以实现本发明的异构处理器的宽带引擎的方框图。
具体实施方式
以下内容旨在提供对本发明的实例的详细说明,并且不应被用来限制发明本身。相反,任何数量的变化都可以落入在所述说明之后的权利要求中限定的本发明的范围内。
图1是示出了使用计数器从队列处理指令刷新的各种处理器组件的高级示意图。一级(L1)高速缓存100是速度很高但体积很小的存储器。处理器首先尝试从一级高速缓存100读取指令。如果所需的指令在L1高速缓存中不存在,则接着尝试L2高速缓存(未示出)。L2高速缓存体积比L1高速缓存大但速度比L1高速缓存慢。如果所需的指令在L2高速缓存中不存在,则接着尝试系统存储器(DRAM)或L3高速缓存(如果有)。高速缓存越慢,等待所需指令的时间就越长。
取回电路110用于从L1高速缓存100或其他存储区域(例如L2高速缓存)取回所需的指令。此外,取回电路110从分支扫描检索预测的指令信息。在一个实施例中,存在两个用于两个线程的指令缓冲区级。在一个实施例中,所述指令缓冲区是FIFO队列,该队列用于在存在下游停止条件时为每个线程缓冲最多4条从L1高速缓存取回的指令。一个指令缓冲区级用于加载指令缓冲区,为每个线程加载一组指令缓冲区。另一个指令缓冲区级用于卸载指令缓冲区并向下复用(mux)到两条指令(分派120)。在一个实施例中,每个线程被赋予同等的分派优先级,每隔一个周期切换。分派还控制到达和来自微代码的指令流动,这用来将难以执行的指令分成多个“微操作”。来自分派120的结果和微代码被一起复用以将指令提供给解码逻辑125。
解码电路125用于装配指令内部操作码和寄存器源/目标域。此外,在解码器的某一级开始相关性检查并且检查数据危险(写后读,写后写)。发出逻辑130在各个管线级继续以创建单个停止点,该点沿管线向上传播到指令缓冲区,使两个线程都停止。在许多其他条件中,除资源冲突检测之外,还由数据危险检测来驱动所述停止点。发出逻辑130确定指令的适当路线,指令将在所述路线上被发出到执行单元。在一个实施例中,每条指令可以被路由到五个不同的发出位置:定点单元150、加载-存储单元140、分支单元160以及VSU发出队列180,队列180也称为VMX(矢量多媒体扩展)/FPU发出队列,因为此队列处理VMX和浮点指令。
VSU发出队列是除发出队列130以外的用于将指令发出到浮点执行单元186或VMX执行单元182的第二个队列。浮点单元和VMX单元都包含管线。发出逻辑130将指令发出到VSU发出队列180而不检查相关性。VSU发出逻辑具有单独的用于处理VSU指令的相关性的相关性检查机制。当指令在VSU发出队列180中时,指令可能在解决相关性时停止。但是,分配给发出到VSU发出队列180的指令的计数器将在指令在队列中等待时继续递减。
在一个实施例中,发出逻辑130将计数器分配给一条或多条发出到各个指令单元管线的指令。以这种方式,当出现刷新条件时,将计算计数器的值并且将刷新(无效)新近添加到管线的指令,而那些在刷新点以前添加到管线的指令将保留在管线中(不进行无效)。在一个实施例中,使用饱和递减计数器来将每个计数器初始化为与参考管线的长度对应的值,所述参考管线确定了在该处不再刷新指令并且必须完成指令的点(称为“提交点”)。例如,在周期提交点为10的系统中,计数器将被初始化为10。在指令等待由指令单元执行的每个指令周期内(无论是在VSU发出队列180中还是在执行管线中),计数器都将递减。在此实施例中,当计数器达到0时,其被保持在0(即,它不会变成负值,这被称为“饱和”)。当出现刷新条件时,那些计数器值为0的指令将保留在管线中并将在(例如,完成170(在加载/存储指令、浮点指令以及分支的情况下)以及完成190(在VMX指令和浮点指令的情况下)处)完成。
可以发生不同类型的刷新以便精确地确定在该处应完成或刷新指令的点。“全部刷新”类型的刷新将导致刷新所有计数器大于0的指令。在“刷新N+1”类型的刷新中,除了在管线中保留计数器值为1的最早指令外,将刷新计数器大于0的指令。为了确定哪个指令是“最早的”指令,将一个或多个“年龄位”作为属性分配给每个指令以指示指令进入发出逻辑的顺序。在使用双发出逻辑(其中可以在同一指令周期内发出两条指令)的实施例中,指令流中的第一条指令分配有为“0”(较早)的年龄位属性,而第二条指令分配有为“1”(较新)的年龄位属性。在“刷新N+2”类型的刷新中,将刷新计数器大于1的指令,而具有为0或1的计数器值的指令将保留在管线中。
图2是示出了发出具有跟踪指令通过执行单元管线的级数的计数器的指令的流程图。当指令移至发出逻辑电路时开始发出逻辑200(步骤210)。在所示的实例中,将“指令L”移至发出逻辑。在步骤220,根据管线的长度来初始化计数器。在所示的实例中,将指令L的计数器初始化为10。在步骤230,发出逻辑将指令发出到适当的执行单元管线(例如,加载/存储单元、浮点单元、分支单元等)。
在所示的实例中,指令L加入到若干其他已被发出到执行单元管线225的指令中。管线中示出了指令A到K,每个指令都具有随着指令通过管线前进而递减的计数器值。饱和递减计数器使计数器递减直至其达到0为止,然后为指令在管线中的其余级将计数器固定在0。例如,指令A和B都示出为具有为0的计数器。在管线末端的指令(例如指令A)接下来将在步骤260由完成单元来处理。
如果遇到“刷新”条件,则计数器为0的指令将保留在管线中并将由执行单元完成,而那些计数器大于0的指令将被刷新(无效)。在一个实施例中,提供了其他刷新类型(例如,在图1中描述的刷新N+1和刷新N+2),这些类型的刷新可以使计数器为1的指令(例如指令C)保留在管线中并且不会被无效。
图3是示出了将指令发出到已分离的队列并且多个管线具有用于相对于发出指令的顺序来跟踪指令通过管线的级数的计数器的示意图。发出队列135存储等待发出的指令。双发出逻辑130在每个指令周期最多可发出两条指令。在所示的实施例中,双发出逻辑在将指令发出到加载/存储执行单元340和定点执行单元350之前,解决加载/存储和定点指令的任何相关性问题。但是对于浮点指令和VMX指令,双发出逻辑130将指令直接发出到由VSU发出逻辑180管理的已分离队列185。VSU发出逻辑在将指令发出到浮点执行单元320或VMX执行单元330之前,解决浮点或VMX执行单元的任何相关性问题。
在示出的实例中存在4条管线,但是双发出逻辑只能在每个周期最多发出两条指令。因此,对于给定的周期,示出的某些“指令”将是“无操作”指令。此外,双发出逻辑为每条指令设置“年龄位”属性,指示哪条指令在队列135中最先出现。在一个实施例中,当在同一指令周期发出两条指令时,将最先出现在队列135中的指令的年龄位设置为0(“0”,较早),而将另一条指令的年龄位设置为1(“1”,较新)。当决定刷新哪些指令时,特别是在“刷新N+1”情况(在图5中更详细地说明)时,跟踪指令在发出队列135中出现的顺序是很有帮助的。
在从双发出逻辑130发出指令之前,使用递减饱和计数器将它们初始化。使用与处理器的“提交点”对应的计数器来初始化每条指令。例如,如果花费10个指令周期来解决任何有关指令的未知问题(例如,分支预测错误、高速缓存未命中等),则将计数器初始化为10。在每一个指令周期中,与每条已发出指令对应的每个计数器都递减1。如果指令位于第二队列(已分离队列185)中,等待发出到由辅助发出逻辑(VSU发出逻辑180)管理的执行单元,或者如果已将指令从第二队列发出到执行单元管线,则将发生递减。
在等待解决相关性问题时,等待从已分离队列185发出的指令可以被停止。虽然指令正在已分离队列185中等待,但是其计数器将继续递减。因此,当指令最终发出到执行单元时,发出到浮点执行单元的指令的计数器值可能不同于发出到VMX执行单元的指令的计数器值。然而,一旦计数器达到0,它就保持在0并且不再递减。在示出的实例中,VMX执行单元中的5条指令具有达到0的计数器,而浮点执行单元中只有1条指令达到0。
当触发了刷新时,刷新逻辑380使用计数器来确定已分离管线(320和330)中的哪些指令将被刷新(无效)以及哪些指令将保留在管线中以便由它们相应的执行单元来执行。非分离管线(340和350)被称为“参考管线”。虽然与已分离管线类似,可以将计数器分配给参考管线中的指令,但是在一个实施例中,参考管线中的指令可以只是根据它们在管线中的位置来被刷新,因为不存在能够影响指令在这些管线中的顺序的中间第二队列。
图4是示出了处理“全部刷新”异常的流程图。刷新指令处理开始于400,随之判定刷新异常的类型是否是“全部刷新”异常(决策410)。如果刷新异常的类型不是“全部刷新”异常,则决策410分支到“否”分支420,随之处理其他刷新异常(预定的过程430,参见图5和相应的文字以了解处理详细信息)。
另一方面,如果执行的刷新的类型是“全部刷新”异常,则决策410分支到“是”分支440,随后在步骤450,当处理在495返回以前,将刷新(无效)所有计数器大于0的指令。使用来自图3中发布的实例的指令,示出了在处理“全部刷新”之前和之后的管线。单元管线320示为具有在其各个级中的8条指令,并且同一单元的管线示为在已处理刷新后无效了除指令B以外的所有指令。同样地,单元管线330在刷新前包括8条指令,但是在刷新后,计数器为0的5条指令(指令A、C、D、E和F)保留在管线中,并且其余指令被刷新(无效)。管线330中只有很少指令被刷新(即,大多数这些指令具有为0的计数器)的原因是辅助发出逻辑(图3所示的VSU发出逻辑180)在发出指令前停止了一条或多条指令。在指令在已分离队列185中等待的每个周期,它们相应的计数器递减1。因此,当最终从辅助发出逻辑(VSU发出逻辑180)发出指令时,由于解决有关某些指令的相关性所需的周期,它们的计数器不必一定相同。
图5是示出了处理“刷新N+1”异常的流程图。处理开始于500并与图4中示出的过程非常类似。但是在图5中,处理的是“刷新N+1”异常。判定异常是否是“刷新N+1”异常(决策510)。如果异常不是“刷新N+1”异常,则决策510分支到“否”分支520,随之处理其他类型的刷新(预定的过程530,参见图6和相应的文字以了解处理详细信息)。另一方面,如果刷新类型是“刷新N+1”类型的异常,则决策510分支到“是”分支540,随后在步骤550,刷新(无效)所有计数器大于0的指令,但是计数器值为1的最早指令将保留在管线中(不会被无效),其后处理在595返回。在一个实施例中,发出逻辑跟踪发出指令的顺序以便确定哪条指令是计数器值为1的较早指令。完成此操作的一种方法是将“年龄位”分配给在同一指令周期中发出的指令。在主发出队列135中最先出现的指令被分配为0的年龄位属性,而其他指令被分配为1的年龄位属性。
类似于图4,示出了刷新前(管线320和330)和刷新后(管线570和580)的管线的图示。额外的指令(指令G)(其是计数器值为1的最早指令)与指令A、B、C、D、E和F(全都具有为0的计数器值)一起保留在管线中。剩余指令均已被无效。
图6是示出了处理“刷新N+2”异常的流程图。处理开始于600并与图4和5中示出的过程非常类似。但是在图6中,处理的是“刷新N+2”异常。判定异常是否是“刷新N+2”异常(决策610)。如果异常不是“刷新N+2”异常,则决策610分支到“否”分支620,随之在步骤630处理其他类型的刷新(例如,可以实现诸如“刷新N+3”之类的其他刷新,这取决于从管线刷新命令所需的控制量)。另一方面,如果刷新类型是“刷新N+2”类型的异常,则决策610分支到“是”分支640,随后在步骤650,刷新(无效)所有计数器大于1的指令,其后处理在695返回。类似于图4和5,示出了刷新前(管线320和330)和刷新后(管线670和680)的管线的图示。每条计数器为0或1的指令(指令A到H)保留在管线中,而剩余指令均已被无效。
图7示出了信息处理系统701,其是能够执行在此说明的计算操作的计算机系统的简化实例。计算机系统701包括连接到主机总线702的处理器700。二级(L2)高速缓冲存储器704也连接到主机总线702。主机到PCI桥706连接到主存储器708(包括高速缓冲存储器和主存储器控制功能),并且提供了总线控制以处理PCI总线710、处理器700、L2高速缓存704、主存储器708和主机总线702之间的传输。主存储器708连接到主机到PCI桥706以及主机总线702。由主处理器(多个)700独自使用的设备(如局域网卡730)与PCI总线710相连。服务处理器接口和ISA访问通透712提供了PCI总线710和PCI总线714之间的接口。以这种方式,将PCI总线714与PCI总线710隔离。诸如闪速存储器718之类的设备被连接到PCI总线714。在一种实现中,闪速存储器718包括BIOS代码,所述BIOS代码结合了用于各种低级系统功能和系统引导功能的必需的处理器可执行代码。
PCI总线714为由主处理器(多个)700和服务处理器716共享的各种设备(包括例如闪速存储器718)提供了接口。PCI到ISA桥735提供了总线控制以处理PCI总线714和ISA总线740、通用串行总线(USB)功能745、电源管理功能755之间的传输,并且可以包括其他未示出的功能元件,例如实时时钟(RTC)、DMA控制、中断支持以及系统管理总线支持。非易失性RAM 720连接到ISA总线740。服务处理器716包括JTAG和I2C总线722以便在初始化步骤期间与处理器(多个)700通信。JTAG/I2C总线722还与L2高速缓存704、主机到PCI桥706和主存储器708相连,提供了处理器、服务处理器、L2高速缓存、主机到PCI桥和主存储器之间的通信路径。服务处理器716还可以访问系统电源资源以便关闭信息处理设备701的电源。
外围设备和输入/输出(I/O)设备可以被连接到各种接口,例如,连接到ISA总线740的并行接口762、串行接口764、键盘接口768和鼠标接口770。可替代地,连接到ISA总线740的超级I/O控制器(未示出)可以适合多种I/O设备。
为了将计算机系统701连接到其他计算机系统以便通过网络复制文件,局域网卡730被连接到PCI总线710。类似地,为了将计算机系统701连接到ISP以便使用电话线连接来与因特网相连,将调制解调器775连接到串行接口764和PCI到ISA桥735。
虽然图7中描述的计算机系统能够执行本文中说明的过程,但是此计算机系统只是计算机系统的一个实例。本领域的技术人员将理解,许多其他计算机系统设计也能够执行本文中说明的过程。
图8是能够实现本发明的计算设备的方框图。图8所示的体系结构包括共享公共存储器和公共总线的异构处理器。宽带引擎(BE)800通过元件互连单元(EIU)810发送信息到外部设备和从外部设备接收信息,并且使用元件互连总线820将信息分发到控制平面810和数据平面840。控制平面810管理BE 800并将工作分发到数据平面840。
此外,元件互连总线(EIU)860将读写请求提供给存储器接口控制器(MIC)880。存储器接口控制器880将所述请求传送到存储器接口890,存储器接口890依次与外部存储器通信。
控制平面810包括运行操作系统(OS)825的电源处理元件(PPE)820。例如,PPE 820可以是嵌入BE 800的Power PC核心并且OS 825可以是Linux操作系统。PPE 820管理用于BE 800的公共存储器映射表。存储器映射表与包括在BE 800中的存储单元(例如,L2存储器830以及包括在数据平面840中的非专用存储器)对应。
数据平面840包括协处理元件(SPE)845、850和855。每个SPE都用于处理数据信息并且每个SPE都具有不同的指令集。例如,BE 800可以用在无线通信系统中并且每个SPE可以负责单独的处理任务,例如,调制、芯片速率处理、解码以及网络接口连接。在另一个实例中,每个SPE可以具有相同的指令集并且可以并行使用以执行从并行处理获益的操作。每个SPE都包括协执行单元(SPU),其是诸如数字信号处理器、微控制器、微处理器或者这些核心的组合之类的处理核心。
SPE 845、850和855连接到元件互连总线(EIB)820,元件互连总线820在控制平面810、数据平面840、EIU 110和MIC 880之间传递信息。EIB 820是片上结合的多处理器总线。EIU 870包括灵活的输入-输出逻辑,它根据连接到BE 800的外围设备来动态地将接口引脚分配到输入-输出控制器。
虽然图8中描述的宽带引擎能够执行本文中说明的过程,但是此设计只是计算机系统设计的一个实例。本领域的技术人员将理解,许多其他计算机系统设计也能够执行本文中说明的过程。
本发明的一种优选实现是客户机应用,即,可以例如驻留在计算机的随机存取存储器内的代码模块中的一组指令(程序代码)。直到被所述计算机所请求为止,该组指令可以存储在其他计算机存储器中,例如,存储在硬盘驱动器中,或存储在诸如光盘(以最终用于CD ROM中)或软盘(以最终用于软盘驱动器中)之类的可移动存储器中,或通过因特网或其他计算机网络来下载。因此,本发明可以被实现为用于在计算机中使用的计算机程序产品。此外,尽管所描述的各种方法可在由软件有选择地激活或重新配置的通用计算机中方便地实现,但是本领域的技术人员还将认识到,此类方法可以在硬件、固件或在被构造成执行所需的方法步骤的更为专用的装置中实现。
虽然示出并描述了本发明的特定实施例,但是对本领域的技术人员显而易见的是,根据此处的教导,可以在不偏离本发明及其更广泛的方面的情况下做出更改和修改。因此,所附权利要求旨在在其范围内包含所有在本发明的真实精神和范围之内的此类更改和修改。此外,可以理解,本发明仅由所附权利要求来限定。本领域的技术人员将理解,如果特定数量的引入权利要求要素是预期的,则此意图在该权利要求中将被明确地重申,并且没有此重申则此限制不存在。对于非限定性实例(作为对理解的帮助),以下所附权利要求包含使用引导短语“至少一个”和“一个或多个”来引入权利要求要素。但是,此类短语的使用不应被解释为暗示由不定冠词“a”或“an”引入的权利要求要素将任何包含此类引入权利要求要素的特定权利要求限制为仅包含一个此类要素的发明,即使当同一权利要求包括引导短语“一个或多个”或“至少一个”以及不定冠词“a”或“an”时;这同样适用于定冠词在权利要求中的使用。
Claims (5)
1.一种计算机实现的方法,所述方法包括:
当将多个指令从第一发出队列发出到多个单元时,将多个计数器中的每个计数器初始化为初始值,每个计数器对应于所述多个指令中的一个指令,其中所述单元中的一个单元是第二发出队列,并且其中每个计数器的所述初始值被设置为其对应指令的提交点,其中每个指令的所述提交点是在其之后不再刷新所述指令的指令周期数;
将发出到所述第二发出队列的所述多个指令发出到多个执行单元管线,所述执行单元管线中的每个执行单元管线与多个执行单元中的一个执行单元相连;
在所述初始化后,在多个指令周期中的每个指令周期期间递减与所述指令对应的所述计数器,直到所述指令由所述多个执行单元中的一个执行单元执行为止;
标识与已被发出到所述多个单元中的一个单元的所述多个指令中的一个指令对应的“N+1”异常;
响应于标识所述“N+1”异常,执行以下步骤:
从所述多个执行单元管线刷新计数器大于1的指令,其中不从所
述多个执行单元管线刷新计数器等于0的指令;
读取与计数器等于1的指令关联的年龄属性,其中每个计数器等
于1的指令具有关联的年龄属性;以及
响应于读取所述年龄属性,根据所述指令的年龄属性从所述多个
执行单元管线刷新一个或多个计数器等于1的指令。
2.根据权利要求1所述的方法,其中从包括加载/存储单元、定点单元、分支异常单元、矢量多媒体扩展加载/存储单元、矢量多媒体扩展算术逻辑单元、浮点算术逻辑单元以及浮点加载/存储单元的组来选择所述执行单元。
3.根据权利要求1所述的方法,还包括:
在每个指令周期期间从所述第一发出队列最多发出两条指令,其中对于在同一指令周期期间从所述第一发出队列发出的每条指令,所述初始值是相同的;以及
为从所述第一发出队列发出的每条指令设置年龄属性,其中所述年龄属性指示了在存储在所述第一发出队列中的指令流内所述指令彼此的相对位置。
4.一种处理器,所述处理器包括:
第一发出队列电路,所述第一发出队列电路用于从第一发出队列将指令双发出到多个单元,其中所述单元中的一个单元是由第二发出队列电路管理的第二发出队列;
多个执行单元管线,所述多个执行单元管线与所述第二发出队列电路相连,所述执行单元管线中的每个执行单元管线都与多个执行单元中的一个执行单元相连并且具有多个指令;
多个计数器,每个计数器对应于所述多个指令中的一个指令,其中每个计数器都由所述第一发出队列电路初始化为初始值,并且其中每个计数器的所述初始值被设置为其对应指令的提交点,所述提交点是在其之后不再刷新所述对应指令的指令周期数;
用于在多个指令周期中的每个指令周期期间递减每个所述计数器的装置;
用于将每个所述计数器与异常值进行比较的装置,其中所述异常值为1;
用于从所述多个执行单元管线刷新计数器大于所述异常值的指令的装置,其中不刷新计数器等于0的指令;
用于读取与计数器等于1的指令关联的年龄属性的装置,其中每个计数器等于1的指令具有关联的年龄属性;以及
用于根据所述指令的年龄属性来刷新计数器等于1的指令的装置。
5.一种信息处理系统,所述信息处理系统包括:
同步多线程处理器,所述同步多线程处理器包括:
第一发出队列电路,所述第一发出队列电路用于从第一发出队列将指令双发出到多个单元,其中所述单元中的一个单元是由第二发出队列电路管理的第二发出队列;
多个执行单元管线,所述多个执行单元管线与所述第二发出队列电路相连,所述执行单元管线中的每个执行单元管线都与多个执行单元中的一个执行单元相连并且具有多个指令;
多个计数器,每个计数器对应于所述多个指令中的一个指令,其中每个计数器都由所述第一发出队列电路初始化为初始值,并且其中每个计数器的所述初始值被设置为其对应指令的提交点,所述提交点是在其之后不再刷新所述对应指令的指令周期数;
用于在多个指令周期中的每个指令周期期间递减每个所述计数器的装置;
用于将每个所述计数器与异常值进行比较的装置,其中所述异常值为1;
用于从所述多个执行单元管线刷新计数器大于所述异常值的指令的装置,其中不刷新计数器等于0的指令;
用于读取与计数器等于1的指令关联的年龄属性的装置,其中每个计数器等于1的指令具有关联的年龄属性;以及
用于根据所述指令的年龄属性来刷新计数器等于1的指令的装置;
可由所述处理器访问的存储器;
适合于将所述信息处理系统连接到计算机网络的网络接口;以及
可由所述处理器访问的非易失性存储设备。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/246,587 | 2005-10-07 | ||
US11/246,587 US7490224B2 (en) | 2005-10-07 | 2005-10-07 | Time-of-life counter design for handling instruction flushes from a queue |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1945525A CN1945525A (zh) | 2007-04-11 |
CN100478871C true CN100478871C (zh) | 2009-04-15 |
Family
ID=37912166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101002599A Expired - Fee Related CN100478871C (zh) | 2005-10-07 | 2006-07-05 | 从队列处理指令刷新的生存期计数器设计的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7490224B2 (zh) |
CN (1) | CN100478871C (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7657891B2 (en) * | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
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 |
US8694697B1 (en) * | 2006-04-27 | 2014-04-08 | Nvidia Corporation | Rescindable instruction dispatcher |
US8832416B2 (en) * | 2007-05-24 | 2014-09-09 | International Business Machines Corporation | Method and apparatus for instruction completion stall identification in an information handling system |
US8234484B2 (en) * | 2008-04-09 | 2012-07-31 | International Business Machines Corporation | Quantifying completion stalls using instruction sampling |
US9106592B1 (en) * | 2008-05-18 | 2015-08-11 | Western Digital Technologies, Inc. | Controller and method for controlling a buffered data transfer device |
US7774510B2 (en) * | 2008-06-02 | 2010-08-10 | Oracle America, Inc. | Near zero overhead command timeout scheme |
US7769984B2 (en) * | 2008-09-11 | 2010-08-03 | International Business Machines Corporation | Dual-issuance of microprocessor instructions using dual dependency matrices |
US8108655B2 (en) * | 2009-03-24 | 2012-01-31 | International Business Machines Corporation | Selecting fixed-point instructions to issue on load-store unit |
KR101669989B1 (ko) * | 2010-05-27 | 2016-10-28 | 삼성전자주식회사 | 파이프라인 프로세서 및 이퀄 모델 보존 방법 |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
US10990398B2 (en) * | 2013-07-15 | 2021-04-27 | Texas Instruments Incorporated | Mechanism for interrupting and resuming execution on an unprotected pipeline processor |
CN104298629A (zh) * | 2013-07-15 | 2015-01-21 | 华为技术有限公司 | 一种用于pci-e的数据传输方法及系统 |
US9569222B2 (en) | 2014-06-17 | 2017-02-14 | International Business Machines Corporation | Implementing out of order processor instruction issue queue |
JP6295990B2 (ja) * | 2015-03-31 | 2018-03-20 | 京セラドキュメントソリューションズ株式会社 | 電子機器および情報処理プログラム |
US9720693B2 (en) | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
GB2540942B (en) * | 2015-07-31 | 2019-01-23 | Advanced Risc Mach Ltd | Contingent load suppression |
US9471313B1 (en) | 2015-11-25 | 2016-10-18 | International Business Machines Corporation | Flushing speculative instruction processing |
CN106875971B (zh) * | 2017-02-16 | 2021-01-22 | 上海兆芯集成电路有限公司 | 动态随机存取存储器控制器及其控制方法 |
GB2563384B (en) | 2017-06-07 | 2019-12-25 | Advanced Risc Mach Ltd | Programmable instruction buffering |
CN108279928B (zh) * | 2018-01-30 | 2021-03-19 | 上海兆芯集成电路有限公司 | 微指令调度方法及使用此方法的装置 |
CN108415730B (zh) * | 2018-01-30 | 2021-06-01 | 上海兆芯集成电路有限公司 | 微指令调度方法及使用此方法的装置 |
US10776123B2 (en) * | 2018-12-03 | 2020-09-15 | Advanced Micro Devices, Inc. | Faster sparse flush recovery by creating groups that are marked based on an instruction type |
US11775303B2 (en) * | 2020-11-12 | 2023-10-03 | Electronics And Telecommunications Research Institute | Computing accelerator for processing multiple-type instruction and operation method thereof |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5649225A (en) * | 1994-06-01 | 1997-07-15 | Advanced Micro Devices, Inc. | Resynchronization of a superscalar processor |
US5961636A (en) * | 1997-09-22 | 1999-10-05 | International Business Machines Corporation | Checkpoint table for selective instruction flushing in a speculative execution unit |
US6609190B1 (en) * | 2000-01-06 | 2003-08-19 | International Business Machines Corporation | Microprocessor with primary and secondary issue queue |
US6694425B1 (en) * | 2000-05-04 | 2004-02-17 | International Business Machines Corporation | Selective flush of shared and other pipeline stages in a multithread processor |
US6804770B2 (en) * | 2001-03-22 | 2004-10-12 | International Business Machines Corporation | Method and apparatus for using past history to avoid flush conditions in a microprocessor |
-
2005
- 2005-10-07 US US11/246,587 patent/US7490224B2/en not_active Expired - Fee Related
-
2006
- 2006-07-05 CN CNB2006101002599A patent/CN100478871C/zh not_active Expired - Fee Related
-
2008
- 2008-10-13 US US12/250,285 patent/US7913070B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20090043997A1 (en) | 2009-02-12 |
US7490224B2 (en) | 2009-02-10 |
US20070083742A1 (en) | 2007-04-12 |
CN1945525A (zh) | 2007-04-11 |
US7913070B2 (en) | 2011-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100478871C (zh) | 从队列处理指令刷新的生存期计数器设计的系统和方法 | |
KR101754462B1 (ko) | 동적 비순차적 프로세서 파이프라인을 구현하기 위한 방법 및 장치 | |
JP4170292B2 (ja) | データの投機的実行をサポートするマイクロプロセッサで用いるスケジューラ | |
CN100357884C (zh) | 用于处理指令的方法、处理器以及系统 | |
US5941983A (en) | Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues | |
US9965274B2 (en) | Computer processor employing bypass network using result tags for routing result operands | |
CN1188778C (zh) | 处理指令的方法、处理器和数据处理系统 | |
US5907860A (en) | System and method of retiring store data from a write buffer | |
JP3798404B2 (ja) | 2レベルの分岐予測キャッシュによる分岐予測 | |
US5471598A (en) | Data dependency detection and handling in a microprocessor with write buffer | |
CN100495325C (zh) | 用于按需临时寄存器重命名的方法和系统 | |
JP2002508567A (ja) | 誤推論後の命令再実施のためのアウトオブパイプライン・トレース・バッファ | |
JP2002508568A (ja) | 不適正順序マルチスレッド実行を実行するロード命令およびストア命令を順序付けるシステム | |
JP2002508564A (ja) | 実行パイプラインの外部に複数のプログラム・カウンタとトレース・バッファを有するプロセッサ | |
EP0651331B1 (en) | A write buffer for a superpipelined, superscalar microprocessor | |
CN101689107A (zh) | 用于将条件指令扩展为无条件指令与选择指令的方法和系统 | |
CN103140828A (zh) | 基于硬件限制利用可调事务尺寸来动态优化代码的装置、方法和系统 | |
US5740398A (en) | Program order sequencing of data in a microprocessor with write buffer | |
US5615402A (en) | Unified write buffer having information identifying whether the address belongs to a first write operand or a second write operand having an extra wide latch | |
US10528354B2 (en) | Performance-aware instruction scheduling | |
JPH1097424A (ja) | スーパースカラープロセッサの中央処理ユニット | |
US11900120B2 (en) | Issuing instructions based on resource conflict constraints in microprocessor | |
CN101281460A (zh) | 处理多个线程的方法和系统 | |
JPH06242954A (ja) | 独立にアクセスされる中間記憶域を利用してスーパースカラ・プロセッサ・システムにおける命令ディスパッチを改善する方法およびシステム | |
US6516462B1 (en) | Cache miss saving for speculation load operation |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090415 Termination date: 20200705 |