CN1885269A - 在微处理器恢复单元中进行写队列读数据的方法和装置 - Google Patents
在微处理器恢复单元中进行写队列读数据的方法和装置 Download PDFInfo
- Publication number
- CN1885269A CN1885269A CNA2006100732753A CN200610073275A CN1885269A CN 1885269 A CN1885269 A CN 1885269A CN A2006100732753 A CNA2006100732753 A CN A2006100732753A CN 200610073275 A CN200610073275 A CN 200610073275A CN 1885269 A CN1885269 A CN 1885269A
- Authority
- CN
- China
- Prior art keywords
- read value
- instruction
- register
- multiplexer
- next read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318533—Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
提供抽点检查微处理器中的寄存器的方法,该方法包括:并行提供来自队列的当前读取值和来自队列的下一读取值,然后根据指令完成信号选择性地将当前读取值和下一读取值传递到俘获锁存器。俘获锁存器可以直接驱动微处理器的恢复单元的检查点寄存器电路。如果队列为空,则使用连接到寄存器的输入端的一对复用器来传递输入数据值。指令完成信号可以指示指令组中的所有指令是否成功完成。
Description
技术领域
本发明通常涉及计算机系统,尤其涉及在使用检查点(checkpoint)寄存器的微处理器中的恢复单元的操作方法。
背景技术
高性能计算机系统使用多处理器来执行嵌入在计算机程序(诸如应用软件和操作系统)中的各种程序指令。在图1中显示了典型的多处理器系统10。计算机系统10具有布置在一个或多个处理器组中的一个或多个处理单元;在所描述的系统中,在处理器组14中有四个处理单元12a、12b、12c和12d。处理单元通过系统或结构(fabric)总线16与系统10的其它部件通信。结构总线16连接到系统存储器20和各种外围设备22。服务处理器18a、18b经由JTAG接口或其它外部服务端口连接到处理单元12。处理器桥24可以选择性用于互连附加处理器组。系统10还可以包括用于存储系统基本输入/输出逻辑的固件(未示出),并且只要计算机是首次打开(启动)该固件就用于找出并从外围设备之一加载操作系统。
系统存储器20(随机存取存储器或RAM)以易失(临时)状态存储由处理单元使用的程序指令和操作数(operand)数据。外围设备22可以使用外围部件互连(PCI)主机桥经由PCI局部总线连接到结构总线16。PCI主机桥提供低延迟路径,通过它处理单元12a、12b、12c和12d可以存取映射在总线存储器或I/O地址空间中的任何位置上的PCI设备。互连外围设备22的PCI主机桥还提供高带宽路径来允许PCI设备存取RAM 20。这些PCI设备可以包括网络适配器、提供到永久存储设备(如,硬盘)的互连的小型计算机系统接口(SCSI)适配器和诸如连接到输入/输出(I/O)设备的工业标准结构(ISA)扩展总线之类的扩展总线桥,其中I/O设备包括键盘、连接到显示设备的图形适配器和与显示器设备一起使用的图形点击设备(鼠标)。
在对称多处理器(SMP)计算机中,所有处理单元12a、12b、12c和12d通常是相同的,即它们都使用公共的指令和协议集或子集来运行,并且通常具有相同的架构。如处理单元12a所示,每个处理单元可以包括一个或多个存储器核26a、26b,它们可以执行程序指令以便运行计算机。示例性处理器核包括美国国际商用机器公司销售的Power5TM处理器,它包括具有由集成电路形成的各种执行单元(定点单元、浮点单元和加载、存储单元)、寄存器、缓冲器、存储器和其它功能单元的单个超大规模集成电路。处理器核可以根据精简指令集计算(RISC)技术运行,并且可以采用指令的流水线和乱序执行来进一步提高超大规模架构的性能。
每个处理器核26a、26b可以包括使用高速存储器器件实现的板载(L1)高速缓存(通常将指令高速缓存和数据高速缓存分离)。高速缓存一般用于临时存储可能由处理器重复存取的值,以便通过避免从系统存储器20加载值的长步骤来加速处理。处理单元可以包含另一高速缓存,即第二级(L2)高速缓存28,它和存储器控制器30都支持分别为核26a和26b的一部分的两个L1高速缓存。可以提供附加的高速缓存级,诸如可以由结构总线16存取的L3高速缓存32。每个高速缓存级(从最高的(L1)到最低的(L3))可以连续存储更多的信息,但是其存取时间更长。例如,在处理器核中的板载L1高速缓存可以具有128K字节的存储其容量,L2高速缓存可以具有512K字节的存储其容量,并且L3高速缓存可以具有2M字节的存储其容量。为了便于修复、替换损坏的存储单元部件,每个处理单元12a、12b、12c和12d可以以可替换电路板或类似的现场可插拔(field replaceable)单元(FRU)的形式构成,它们可以以模块方式装入系统10或从系统10移出。
在超大规模架构中,以顺序或乱序的方式完成指令。顺序完成指在指令之前发出的所有指令完成之前该指令不可以完成。乱序完成指只要满足预定的规则,则允许在指令之前的所有指令完成之前完成该指令。在流水线超大规模处理器中,首先获取、解码然后缓冲指令。当资源和操作数可用时,可以将指令分派给执行单元。此外,可以根据关于对发生的转移(branch taken)的预测来推理地获取并分派指令。该结果是执行的各阶段中的一池指令,在它们中没有一个曾经是通过将最后结果写入系统分级存储器来完成的。当资源可用并决定转移时,指令以程序顺序撤退,因此保持了以程序顺序执行指令的机器面貌。通过修改处理器中的硬件,例如通过在单一处理核中具有多个执行单元,可以进一步提高整体指令吞吐量。
计算机系统10还可以使用称为硬件多线程的计算技术来独立执行称为线程或上下文(context)的更小的指令序列。当处理器由于各种原因停止并不能继续处理或执行这些线程之一时,该处理器可以切换到另一线程。计算机处理器结构领域中的技术人员使用的术语“多线程”与软件领域中使用的其中一个任务细分为多个相关线程的该术语不同。软件多线程实际上包含这样的操作系统,该系统用于操作并存储从寄存器到主存的数据,并且在线程切换可以发生之前保持相关和从属指令的程序顺序。软件多线程不需要也不关心硬件多线程,反之亦然。硬件多线程操作硬件架构式寄存器(hard-architected register)、执行单元和流水线式处理器来在处理器硬件中保持一个或多个独立执行的指令(线程)集的状态。可以从例如多任务系统中的不同任务、从软件多线程系统中汇编而来的不同线程或从不同的I/O处理器获得硬件线程。在硬件多线程的每个实例中,可以在一个处理器的多个寄存器中独立保存多于一个线程。
在计算机系统10的操作期间的任意时刻,由于诸如杂散辐射或静电放电之类的软错误的缘故,在给定存储器单元或处理器寄存器中的位可能包含不正确的值。不同的技术用于检测并校正这样的错误。处理器核26包括恢复单元,用于一旦指令通过完成点,就在检查点阵列中保存架构式寄存器的数据的副本。在数据输出中检测到错误的情况下,从检查点恢复架构式寄存器值。
处理器核26以组分派程序指令。为了整组指令准备好检查点,在组中的所有指令必须完成执行。某些指令具有固定的执行时间,而其它具有可变的执行时间。另外,某些指令可能乱序完成。为了确定指令是否准备好检查点,指令组标识符或标记定义为1加上组中的最新指令的指令标记(即,当前组的组标记与下一组的最老指令的指令标记相同)。然后在当前分派的指令组和组标记和要完成的下一指令的标记之间执行比较。如果当前组标记与要完成的下一指令的标记相同,则当前组中所有指令安全完成,并且可以抽点检查来自寄存器的结果。
由于来自所有指令的数据到达之前、指令组不能进行抽点检查,所以恢复单元中的数据到达呈现出困难,但是组的抽点检查必须与组的分派同步,否则处理器的性能将严重降低。在其中每级具有低门延迟的流水线式微处理器中,组标记和将要完成的标记之间的比较需要周期时间的大部分,而额外的状态检查花去其余的大部分。该比较结果必须用于管理保持结果数据的数据队列,并且该决定必须馈送到控制读和写指针的电路以及在整个恢复单元中分布的其它控制电路。然而,电路延迟导致没有不足时间来执行保持或提前恢复单元队列的读取点的控制,并且可能延迟恢复单元中的资源的重定位/释放。因此,需要设计抽点检查恢复单元中的数据的改进方法,它可以降低或最小化对分派和执行流水线的向后压力(backward pressure),并且通过一旦满足所有必要条件并报告给恢复单元、就允许快速发生指令组的抽点检查,来存储到L2高速缓存的队列释放。
发明内容
本发明的目的是提供抽点检查微处理器的恢复单元中的寄存器的改进方法。
本发明的另一目的是提供不需要额外延迟阶段就能执行抽点检查的方法。
本发明的又一目的是提供用于微处理器的恢复单元的队列结构,它可以在指令完成后快速抽点检查数据。
以抽点检查微处理器中的寄存器的方法实现上述目的,该方法包括:在具有多项的恢复单元队列中存储寄存器值(数据或控制信号),并行提供来自恢复单元队列的当前读取项中的当前读取值和来自恢复单元队列的下一读取项的下一读取值,并且根据指令完成信号将当前读取值和下一读取值之一传递到俘获锁存器。俘获锁存器可以直接驱动检查点寄存器或检查点决定电路。为了处理队列为空的情况,分别将当前读取值和下一读取值提供到旁路复用器的输入端,该复用器具有连接到(从微处理器执行单元)恢复单元队列的输入端的另一组输入端。如果成功完成了指令,则将下一读取值输出到俘获锁存器,否则,输出复用器选择当前读取值用于输出,以保持恢复单元队列处于当前状态。可以由当前读指针(具有连接到队列的相应项的多个输入端)控制的第一读指针复用器提供当前读取值,并且可以由下一读指针(也具有连接到队列的相应项的多个输入端)控制的第二读指针复用器提供下一读取值。执行它的这种方法和队列电路允许使用俘获锁存器而不需要增加额外延迟阶段。在数据输入后的下一周期,从俘获锁存器到队列的输入数据是可用的。
在下面的详细描述中,本发明上述及其他目的、特征和优点将变得更加清楚。
附图说明
通过参照附图,可以更好的理解本发明,并且其很多目的、特征和优点对于本领域技术人员来说更加显而易见。
图1是常规高性能多处理器计算机系统的方框图;
图2根据本发明构造的处理器核的一个实施例的方框图,它具有各种执行单元的寄存器和提供寄存器抽点检查的恢复单元;和
图3是根据本发明实施例构造的、与图2的恢复单元一起使用的队列结构的一个实施例的高级示意图。
在不同附图中使用相同附图标记表示相似或相同的项。
具体实施方式
现在参照附图,尤其参照图2,描述根据本发明构造的处理器的一个实施例40。处理器40通常包括单一超大规模集成电路微处理器,并且还包括各种执行单元、寄存器、缓冲器、存储器和由集成电路形成的所有其它功能单元。处理器40可以根据精简指令集计算(RISC)技术运行,并且经由处理器40中的总线接口单元(BIU)44耦合到系统或结构总线42。BIU 44通过参与总线仲裁来控制处理器40和耦合到系统总线42的其他设备(诸如主存)之间的信息传送。处理器40、系统总线42和耦合到系统总线42的其他设备一起形成主数据处理系统。
BIU 44连接到指令高速缓存和存储器管理单元(MMU)46以及处理器40中的数据高速缓存和MMU 48。高速缓存,诸如在指令高速缓存和MMU 46以及数据高速缓存和MMU 48中的那些高速缓存使得处理器40能够获得对预先从主存储器传送到高速缓存的数据或指令子集的相对快速的存取时间,因此提高主机数据处理系统的运行速度。指令高速缓存和MMU 46还耦合到顺序获取器(fetcher)50,它在每周期都从指令高速缓存和MMU 46获取指令来进行执行。顺序获取器50将从指令高速缓存和MMU 46获取的转移指令发送到转移预测单元52来计算下一指令获取地址,但临时存储指令队列54中的顺序指令来由处理器40中的其它执行电路执行。
处理器40的执行电路具有用于执行顺序指令的多个执行单元,包括一个或多个定点单元(FXU)56、加载-存储单元(LSU)58、浮点单元(FPU)60、转移处理单元(BPU)62和向量多媒体扩展(VMX)64。这些执行单元56、58、60、62和64在每个处理器周期都执行特定类型的顺序指令中的一个或多个指令。例如,FXU 56使用从指定的通用目的寄存器(GPR)66接收到的源操作数执行定点算术逻辑运算,诸如加、减、移位、旋转和异或。在定点指令执行后,FXU 56向所选GPR 66输出指令的数据结果。FPU 60对从浮点寄存器(FPR)70接收到的源操作数执行单和双精度浮点算术和逻辑运算,诸如浮点乘法和除法。FPU 60向所选FPR 70输出浮点指令的执行结果数据。LSU 58执行浮点和定点指令,它或者从存储器(即,数据高速缓存和MMU 48或主存储器)将数据加载到所选GPR 66或FPR 70,或者将数据从所选GPR 66或FPR 70之一存储到系统存储器。BPU 62执行条件代码操作指令和转移指令。VMX 64使用向量计算执行对多操作数进行的单一指令操作、以产生多个结果,并且将向量指令的执行结果数据输出到所选择的向量多媒体寄存器(VMR)68。
处理器40可以采用指令的流水线和乱序执行以进一步提高其超大规模架构的性能,但是本发明当应用在顺序程序执行时,或在乱序执行能力受限的情况下,是特别有效的。对于乱序处理,只要观察到数据依赖关系,就可以由FXU 56、LSU 58、FPU 60、BPU 62和VMX 64以任意顺序执行指令。此外,可以由作为流水线阶段序列的、FXU 56、LSU 58、FPU 60、BPU 62和VMX 64中的每一个(特别是五个不同的流水线阶段:取指、解码/分派、执行、中止和完成)处理指令。
在取指阶段,顺序获取器50从指令高速缓存和MMU 46取回与一个或多个存储器地址相关的一个或多个指令。从指令高速缓存和MMU 46获取的顺序指令由顺序获取器50存储在指令队列54中。顺序获取器40从指令流中调出(fold out)转移指令,并将其送到转移预测单元52来进行处理。转移预测单元52包括转移预测机构,它可以包括动态预测机构(诸如转移历史表)来使转移预测单元52通过预测将是否会发生转移来推测执行未决定的条件转移指令。
在解码/分派阶段,指令分派单元(IDU)74解码并将来自指令队列54的一个或多个指令分派到执行单元56、58、60、62和64。此外,分派单元74为每个分派的指令的结果数据在GPR 66、FPR 70或VMR 68中分配寄存器。在进行了分派的情况下,指令还存储在完成单元76的多时隙完成缓冲器中以等待完成。处理器40在乱序执行期间使用唯一指令标识符来跟踪分派的指令的程序顺序。
在执行阶段期间,当用于所指示的操作的操作数和执行资源可用时,执行单元56、58、60、62和64有机会执行从分派单元74接收的指令。执行单元56、58、60、62和64最好配有保留站,用于存储分派到该执行单元的指令、直到操作数和执行资源可用为止。然后,执行单元56、58、60、62和64通知完成单元76哪个指令完成执行。最后,以移出完成单元76的完成缓冲器的程序顺序完成指令。通过将指令的数据结果从执行单元传送到GPR66、FPR 70和VMR 68来完成由FXU 56、FPU 60和VMX 64执行的指令。通过将完成的指令传送到完成的存储队列或完成的加载队列(从它们那里执行所指示的加载/存储操作)来完成由LSU 58执行的加载和存储指令。
执行单元可以利用附加寄存器,例如,专用寄存器。可以复制处理器40的各种寄存器和执行单元来允许以单一处理器内核处理多线程。
处理器40还包括恢复单元80,用于一旦指令通过完成点而没有检测出任何错误,则在检查点阵列中存储来自架构式寄存器66、68和70和其它控制寄存器的数据的副本。可以在执行单元的输出端使用奇偶校验来检测在指令执行期间发生的错误。如果对该组中的任何指令检测到错误,就从检查点恢复架构式寄存器值。因此,检查点包含没有错误情况下机器的状态。
为了降低跟踪推测指令结果的成本,恢复单元80通过分派组跟踪指令,即,在任意给定处理器周期,指令可以以程序顺序分派到多个执行单元,并且一起跟踪并抽点检查相同周期中分派的所有指令。因此,将一起抽点检查相同分派组的FXU、FPU和VMX指令。当指令组中所有指令都已经通过了完成点时,就仅仅抽点检查指令组。因为分派组中的指令(诸如转移指令、加载、存储指令或其它引起异常的指令)由于推测执行的缘故而可以引起组部分清空(flush out),所以处理器可以部分抽点检查每个分派组。
由于FXU指令和FPU或VMX指令相互乱序执行,而FPU和VMX指令比定点指令花时间更长,所以FXU指令可能在FPU或VMX指令之前完成。因此,在可以抽点检查整个分派组之前,定点数据必须在恢复单元中等待相同分派组中的FPU或VMX指令完成。因此,在该实施例中,恢复单元80使用三队结构来分离地保存来自FXU、FPU和VMX指令的数据。这三个队列结构是写队列82、浮点寄存器(FRR)记录器缓冲器84和阶段队列86。
在分派时间,通过将组中最新指令的指令标记(Itag)加1,以从Itag获得组标记(Gtag)来指示组相对于每个指令标记的寿命。通过比较Gtag和将要完成(NTC)的指令的Itag来作出是否准备好抽点检查指令的决定。当NTCItag等于或大于Gtag时可以抽点检查组。当该组的所有FPU或VMX数据可用时才可以抽点检查该组。当由于转移误预测、加载/存储拒绝或引起异常的指令而部分清空该组时,由恢复单元重新计算并存储新Gtag。使用该信息来允许恢复单元部分抽点检查原始分派组,同时丢弃清空的指令的数据。当准备好抽点检查指令时,重定位队列结构中的项,释放到L2高速缓存的存储操作,释放完成表项,并且释放互锁的浮点指令。
在结束之前,某些指令修改系统相干资源。PowerPCTM指令存储条件(STCX)有条件地设置锁,但是在返回指示是否设置了锁的条件代码之前,该指令不能结束,或因此不能进行抽点检查。某些高速缓存抑制(cacheinhibited)(CI)加载指令在I/O设备中自动递增队列指针,但是在返回加载数据并写入目标寄存器之前该指令不能结束(因此不能进行抽点检查)。通常报告的错误阻塞检查点,从经抽点检查的副本恢复寄存器的工作副本,并且从先前检查点开始恢复处理。然而,由于这些STCX/CI加载型指令在完成/抽点检查之前修改系统相干状态,所以如果在出错之前已经开始,则在出错后不能重试它们。
可以在提交于2005年5月27日的美国专利申请No.11/140648、名称为“METHOD AND APPARATUS FOR REDUCING NUMBER OF CYCLESREQUIRED TO CHECKPOINT INSTRUCTIONS IN A MULTI-THREADEDPROCESSOR”的申请中找到恢复单元80的进一步详细描述,这里将其并入。
Gtag和NTC Itag的比较用于管理保存结果数据的队列结构。该比较结果馈送到控制那些队列的读和写指针的电路,以及分布在整个恢复单元的其它控制电路。队列的读指针基于比较结果提前或保持。该比较的决定时间和将信号分散到所有控制点占用了大多数或所有分配的周期时间。虽然使用锁存器来执行队列的读指针的提前或保持控制,但是由于恢复单元队列中的项的重定位、对L2高速缓存的存储的释放、对完成表项的释放以及对互锁式浮点指令的释放,可能使该结构延迟一个周期,从而严重降低处理器性能。本发明使用新颖的结构来消除在恢复单元80中的任何附加的延迟。
图3图解可以由FPR记录器缓冲器84使用的写队列电路90的一个实施例。写队列电路90包括一系列输入复用器92a-92n、N-深度(deep)寄存器阵列94、一对读指针复用器96a、96b、一对空队列复用器98a、98b、输出复用器100和俘获锁存器102。寄存器阵列94作为在抽点检查发生之前保持N数据和/或控制信号的队列。在寄存器94中包含的值可以是操作数据值或相关值(诸如存储在检查点寄存器中的奇偶校验位),并且还可以是由检查点决定电路使用的控制信号。N是队列中的项数,示例性数量是8项。寄存器阵列94的每个输入端接收输入复用器92a-92n的相应输出。每个输入复用器92a-92n具有反馈来自寄存器阵列94的当前阵列值的相应输入端,和从架构式寄存器接收数据IN信号的另一输入端。解码写队列电路90的写指针来在给定周期将输入数据写入复用器92a-92n的仅仅之一,并保持其它复用器,例如,如果写指针当前指向第一队列项,则它将设置复用器92a的选择为0,并设置所有其他复用器92b-92n的选择为1。以这种方式,将要在该周期写入的数据或控制值将通过存储器阵列94中的对应项,同时将保持所有剩余寄存器阵列项,即重新加载它们的当前值。
复用器96a、96b是N到1复用器,它们的输入端并行地接收寄存器阵列94的输出(N位宽)。恢复单元80为写队列电路90保持两个读指针:一个指向当前读取位置,另一个指向等于当前读取指针加1的下一读取位置。当前读指针控制复用器96a的选择,并且下一读取指针控制复用器96b的选择。因此,复用器96a和96b的输出分别是来自当前读取指针位置(保持指针)和下一读取指针位置(递增指针)的队列项。
可以选择复用器96a、96b的两个输出之一来提供到检查点寄存器,但另一复用器级被引入两个信号路径来处理写队列为空的情况,它允许俘获锁存器102来在输入数据可用后的周期驱动检查点寄存器或检查点决定电路。复用器96a的输出端连接到复用器98a的输入端,而复用器96b的输出端连接到复用器98b的输入端。复用器98a、98b的其它输入端连接到来自架构式寄存器的数据IN信号。在队列控制信号导通复用器98a和98b来传递当前输入值的情况下,当写队列写指针等于当前读指针(对于当前读指针复用器98a)或等于下一读指针(对于下一读指针复用器98b)时,认为写队列为空。
然后,复用器100用于在复用器98a、98b的输出之间进行选择,并且受到递增读指针信号的控制。如果组中所有指令成功完成,并且准备好抽点检查数据,则递增读指针激活,并且俘获锁存器102接收用于将要抽点检查的下一队列项的值。如果发生了错误,并且需要保持队列状态,则递增读指针信号截止,并且俘获锁存器102接收当前队列项的旧值。来自俘获锁存器102的OUT信号直接驱动检查点寄存器电路。在成功抽点检查后,恢复单元80中的逻辑将写队列电路90的写和读指针递增。
写队列电路90处理用于8队列项中的每一个的寄存器数据的单独位。在每个数据或控制值是12位的示例性实施例中,FPR记录器缓冲器84并行使用12个分离的写队列电路90来向检查点寄存器或检查点决定电路提供数据。如果处理器40具有用于硬件多线程的多个执行单元和寄存器,则可以使用多个队列结构来独立检查点寄存器集。
写队列电路90允许使用俘获锁存器而不添加额外延迟阶段。该新颖的设备提供了在一个周期中写入输入数据的能力,并使得它可以在下一周期驱动检查点寄存器输入端。
虽然参照特定实施例描述了本发明,本描述不意欲限制本发明。参照本发明的描述,公开的实施例的各种修改以及本发明的其它实施例对于本领域技术人员来说时显而易见的。例如,当写队列电路90用在写队列82中时,对于恢复单元80的其它队列结构,可以实现该队列设计的其它变型。因此应该理解在不背离所附权利要求中定义的本发明的范围和宗旨的情况下可以作出多种修改。
Claims (20)
1.一种抽点检查微处理器中的寄存器的方法,该方法包括:
在具有多个项的恢复单元队列中存储寄存器值;
并行提供来自恢复单元队列的当前读取项的当前读取值和来自恢复单元队列的下一读取项的下一读取值;和
根据指令完成信号将当前读取值和下一读取值之一选择性传递到俘获锁存器。
2.如权利要求1所述的方法,其中,当前读取值被提供到第一复用器的第一输入端,而下一读取值提供到第二复用器的第一输入端,所述第一和第二复用器具有连接到恢复单元队列的输入端的第二输入端,从而当恢复单元队列为空时旁路恢复单元队列。
3.如权利要求1所述的方法,还包括:
直接从俘获锁存器驱动检查点寄存器电路。
4.如权利要求1所述的方法,其中,指令完成信号指示分派为组的多个指令是否已经成功完成。
5.如权利要求1所述的方法,其中,当指令完成信号指示与下一读取值相关的程序指令还没有完成时,所述选择性传递当前读取值和下一读取值之一的步骤传递当前读取值。
6.如权利要求1所述的方法,其中,当指令完成信号指示与下一读取值相关的程序指令成功完成时,所述选择性传递当前读取值和下一读取值之一的步骤传递下一读取值。
7.如权利要求1所述的方法,其中,数据输入之后一个时钟周期,存储在恢复单元队列中的输入数据可从俘获锁存器获得。
8.一种用于恢复单元的队列电路,包括:
具有多个项的寄存器;
用于对应于所述寄存器的当前读取项的当前读取值的第一信号路径;
用于对应于所述寄存器的下一读取项的下一读取值的第二信号路径;
俘获锁存器;和
输出复用器,用于作为输入接收第一信号路径和第二信号路径,并且根据指令完成信号选择性将当前读取值和下一读取值传递到所述俘获锁存器。
9.如权利要求8所述的队列电路,其中,将当前读取值提供到第一复用器的第一输入端,而将下一读取值提供到第二复用器的第一输入端,所述第一和第二复用器具有连接到所述寄存器的输入端的第二输入端,用以当所述寄存器为空时旁路所述寄存器。
10.如权利要求8所述的队列电路,其中,所述俘获锁存器直接驱动恢复单元的检查点寄存器电路。
11.如权利要求8所述的队列电路,其中,指令完成信号指示分派为组的多个指令是否成功完成。
12.如权利要求8所述的队列电路,其中,当指令完成信号指示与下一读取值相关的程序指令还没有完成时,所述输出复用器传递当前读取值。
13.如权利要求8所述的队列电路,其中,当指令完成信号指示与下一读取值相关的程序指令成功完成时,所述输出复用器传递下一读取值。
14.如权利要求8所述的队列电路,其中,
所述第一信号路径包括由当前读指针控制的第一读取指针复用器,其具有连接到所述寄存器相应项的多个输入端;和
所述第二信号路径包括由下一读指针控制的第二读取指针复用器,其具有连接到所述寄存器相应项的多个输入端。
15.一种处理器,包括:
用于存储数据和控制值的架构式寄存器;
一个或多个执行单元,它们使用所述架构式寄存器来执行程序指令;
分派单元,用于将程序指令分派到所述一个或多个执行单元;和
具有检查点寄存器电路和队列电路的恢复单元,所述队列电路具有
具有多个项的寄存器;
并行的第一和第二信号路径,其中,沿所述第一信号路径发送对应于所述寄存器的当前读取项的当前读取值,而沿所述第二信号路径发送对应于所述寄存器的下一读取项的下一读取值,和
用于根据指令完成信号选择性将当前读取值和下一读取值传递到所述检查点寄存器电路的装置。
16.如权利要求15所述的处理器,其中,当前读取值提供到第一复用器的第一输入端,而下一读取值提供到第二复用器的第一输入端,所述第一和第二复用器具有连接到所述寄存器的输入端的第二输入端,用以当所述寄存器为空时旁路所述寄存器。
17.如权利要求15所述的处理器,其中,所述传递装置包括用于直接驱动所述检查点寄存器电路的俘获锁存器。
18.如权利要求15所述的处理器,其中指令完成信号指示由所述分派单元分派为组的多个指令是否成功完成。
19.如权利要求15所述的处理器,其中当指令完成信号指示与下一读取值相关的程序指令没有完成时,所述传递装置传递当前读取值。
20.如权利要求15所述的处理器,其中当指令完成信号指示与下一读取值相关的程序指令成功完成时,所述传递装置传递下一读取值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/165,484 | 2005-06-23 | ||
US11/165,484 US7526583B2 (en) | 2005-06-23 | 2005-06-23 | Method and apparatus to launch write queue read data in a microprocessor recovery unit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1885269A true CN1885269A (zh) | 2006-12-27 |
CN100449499C CN100449499C (zh) | 2009-01-07 |
Family
ID=37583429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100732753A Expired - Fee Related CN100449499C (zh) | 2005-06-23 | 2006-04-07 | 在微处理器恢复单元中进行写队列读数据的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7526583B2 (zh) |
CN (1) | CN100449499C (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103483A (zh) * | 2009-12-22 | 2011-06-22 | 英特尔公司 | 汇聚和散布多个数据元素 |
CN105302523A (zh) * | 2014-06-20 | 2016-02-03 | 想象技术有限公司 | 再生逻辑块以实现提高的吞吐量 |
CN105740177A (zh) * | 2014-12-08 | 2016-07-06 | 台湾积体电路制造股份有限公司 | 信号传输的控制方法和装置、以及信号锁存装置 |
CN105980978A (zh) * | 2014-12-13 | 2016-09-28 | 上海兆芯集成电路有限公司 | 用于检测暂停的逻辑分析器 |
US10175990B2 (en) | 2009-12-22 | 2019-01-08 | Intel Corporation | Gathering and scattering multiple data elements |
CN110703943A (zh) * | 2019-09-29 | 2020-01-17 | 广东美的制冷设备有限公司 | 液晶面板的静电防护方法、装置、电子设备及存储介质 |
CN117472447A (zh) * | 2023-12-28 | 2024-01-30 | 北京微核芯科技有限公司 | 寄存器重命名恢复方法、装置和设备 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7552360B2 (en) | 2005-03-21 | 2009-06-23 | Texas Instruments Incorporated | Debug and test system with format select register circuitry |
US7801852B2 (en) * | 2007-07-31 | 2010-09-21 | Oracle International Corporation | Checkpoint-free in log mining for distributed information sharing |
US9230002B2 (en) * | 2009-01-30 | 2016-01-05 | Oracle International Corporation | High performant information sharing and replication for single-publisher and multiple-subscriber configuration |
US9489207B2 (en) * | 2009-04-14 | 2016-11-08 | International Business Machines Corporation | Processor and method for partially flushing a dispatched instruction group including a mispredicted branch |
JP5871058B2 (ja) * | 2012-03-27 | 2016-03-01 | 富士通株式会社 | 管理制御装置、情報処理システム及び管理制御方法 |
US8745320B2 (en) * | 2012-05-04 | 2014-06-03 | Riverbed Technology, Inc. | Ensuring write operation consistency using multiple storage devices |
US9448799B2 (en) | 2013-03-14 | 2016-09-20 | Samsung Electronics Co., Ltd. | Reorder-buffer-based dynamic checkpointing for rename table rebuilding |
US10203958B2 (en) * | 2013-07-15 | 2019-02-12 | Texas Instruments Incorporated | Streaming engine with stream metadata saving for context switching |
JP2015146130A (ja) * | 2014-02-03 | 2015-08-13 | 富士通株式会社 | 情報処理装置、及び情報処理装置の管理方法 |
US11175919B1 (en) * | 2018-12-13 | 2021-11-16 | Amazon Technologies, Inc. | Synchronization of concurrent computation engines |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4823259A (en) * | 1984-06-29 | 1989-04-18 | International Business Machines Corporation | High speed buffer store arrangement for quick wide transfer of data |
US5432918A (en) * | 1990-06-29 | 1995-07-11 | Digital Equipment Corporation | Method and apparatus for ordering read and write operations using conflict bits in a write queue |
JP2916420B2 (ja) * | 1996-09-04 | 1999-07-05 | 株式会社東芝 | チェックポイント処理加速装置およびデータ処理方法 |
US6088740A (en) * | 1997-08-05 | 2000-07-11 | Adaptec, Inc. | Command queuing system for a hardware accelerated command interpreter engine |
US6625756B1 (en) * | 1997-12-19 | 2003-09-23 | Intel Corporation | Replay mechanism for soft error recovery |
US6598156B1 (en) * | 1999-12-23 | 2003-07-22 | Intel Corporation | Mechanism for handling failing load check instructions |
DE60133855D1 (de) * | 2000-06-20 | 2008-06-19 | Nxp Bv | Datenverarbeitungsgerät |
US6886048B2 (en) * | 2001-11-15 | 2005-04-26 | Hewlett-Packard Development Company, L.P. | Techniques for processing out-of-order requests in a processor-based system |
US6728123B2 (en) * | 2002-04-15 | 2004-04-27 | International Business Machines Corporation | Redundant array architecture for word replacement in CAM |
US6981104B2 (en) * | 2002-07-12 | 2005-12-27 | Hewlett-Packard Development Company, L.P. | Method for conducting checkpointing within a writeback cache |
US6600673B1 (en) * | 2003-01-31 | 2003-07-29 | International Business Machines Corporation | Compilable writeable read only memory (ROM) built with register arrays |
US7117287B2 (en) * | 2003-05-30 | 2006-10-03 | Sun Microsystems, Inc. | History FIFO with bypass wherein an order through queue is maintained irrespective of retrieval of data |
US7467325B2 (en) * | 2005-02-10 | 2008-12-16 | International Business Machines Corporation | Processor instruction retry recovery |
US7478276B2 (en) * | 2005-02-10 | 2009-01-13 | International Business Machines Corporation | Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor |
US7409589B2 (en) * | 2005-05-27 | 2008-08-05 | International Business Machines Corporation | Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor |
US20070028078A1 (en) * | 2005-07-26 | 2007-02-01 | Arm Limited | Instruction queues in pipelined processors |
-
2005
- 2005-06-23 US US11/165,484 patent/US7526583B2/en not_active Expired - Fee Related
-
2006
- 2006-04-07 CN CNB2006100732753A patent/CN100449499C/zh not_active Expired - Fee Related
-
2009
- 2009-01-27 US US12/360,116 patent/US7603497B2/en not_active Expired - Fee Related
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317791B (zh) * | 2009-12-22 | 2018-03-13 | 英特尔公司 | 汇聚和散布多个数据元素 |
CN102103483B (zh) * | 2009-12-22 | 2014-09-10 | 英特尔公司 | 汇聚和散布多个数据元素 |
CN104317791A (zh) * | 2009-12-22 | 2015-01-28 | 英特尔公司 | 汇聚和散布多个数据元素 |
CN102103483A (zh) * | 2009-12-22 | 2011-06-22 | 英特尔公司 | 汇聚和散布多个数据元素 |
US10175990B2 (en) | 2009-12-22 | 2019-01-08 | Intel Corporation | Gathering and scattering multiple data elements |
CN105302523A (zh) * | 2014-06-20 | 2016-02-03 | 想象技术有限公司 | 再生逻辑块以实现提高的吞吐量 |
US11709682B2 (en) | 2014-06-20 | 2023-07-25 | Imagination Technologies Limited | Replicating logic blocks to enable increased throughput with sequential enabling of input register blocks |
CN105740177A (zh) * | 2014-12-08 | 2016-07-06 | 台湾积体电路制造股份有限公司 | 信号传输的控制方法和装置、以及信号锁存装置 |
CN105740177B (zh) * | 2014-12-08 | 2019-05-21 | 台湾积体电路制造股份有限公司 | 信号传输的控制方法和装置、以及信号锁存装置 |
CN105980978A (zh) * | 2014-12-13 | 2016-09-28 | 上海兆芯集成电路有限公司 | 用于检测暂停的逻辑分析器 |
CN105980978B (zh) * | 2014-12-13 | 2019-02-19 | 上海兆芯集成电路有限公司 | 用于检测暂停的逻辑分析器 |
CN110703943A (zh) * | 2019-09-29 | 2020-01-17 | 广东美的制冷设备有限公司 | 液晶面板的静电防护方法、装置、电子设备及存储介质 |
CN110703943B (zh) * | 2019-09-29 | 2024-03-19 | 广东美的制冷设备有限公司 | 液晶面板的静电防护方法、装置、电子设备及存储介质 |
CN117472447A (zh) * | 2023-12-28 | 2024-01-30 | 北京微核芯科技有限公司 | 寄存器重命名恢复方法、装置和设备 |
CN117472447B (zh) * | 2023-12-28 | 2024-03-12 | 北京微核芯科技有限公司 | 寄存器重命名恢复方法、装置和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN100449499C (zh) | 2009-01-07 |
US7526583B2 (en) | 2009-04-28 |
US7603497B2 (en) | 2009-10-13 |
US20090132854A1 (en) | 2009-05-21 |
US20070011516A1 (en) | 2007-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100449499C (zh) | 在微处理器恢复单元中进行写队列读数据的方法和装置 | |
EP0751458B1 (en) | Method and system for tracking resource allocation within a processor | |
US5887161A (en) | Issuing instructions in a processor supporting out-of-order execution | |
US7877580B2 (en) | Branch lookahead prefetch for microprocessors | |
US5630149A (en) | Pipelined processor with register renaming hardware to accommodate multiple size registers | |
US7478276B2 (en) | Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor | |
US5611063A (en) | Method for executing speculative load instructions in high-performance processors | |
US6065115A (en) | Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction | |
US20060271820A1 (en) | Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor | |
EP0829045B1 (en) | Coordinating the issue of instructions in a parallel instruction processing system | |
US5913048A (en) | Dispatching instructions in a processor supporting out-of-order execution | |
US6098167A (en) | Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution | |
US6405305B1 (en) | Rapid execution of floating point load control word instructions | |
EP0649085A1 (en) | Microprocessor pipe control and register translation | |
CN1340760A (zh) | 分区的发送队列和分配策略 | |
CN1760826A (zh) | 用于处理指令的方法、处理器以及系统 | |
RU2142157C1 (ru) | Способ функционирования системы обработки | |
JP3142813B2 (ja) | レジスタの名前変更を管理するための情報処理システムおよび方法 | |
US5875325A (en) | Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history | |
JP3207124B2 (ja) | カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 | |
US8082423B2 (en) | Generating a flush vector from a first execution unit directly to every other execution unit of a plurality of execution units in order to block all register updates | |
US7302553B2 (en) | Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue | |
US6405232B1 (en) | Leading bit prediction with in-parallel correction | |
US5745780A (en) | Method and apparatus for source lookup within a central processing unit | |
RU2150738C1 (ru) | Система обработки и способ ее функционирования |
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 |
Granted publication date: 20090107 Termination date: 20150407 |
|
EXPY | Termination of patent right or utility model |