CN1222868C - 多线程流水线指令解码器的方法和设备 - Google Patents

多线程流水线指令解码器的方法和设备 Download PDF

Info

Publication number
CN1222868C
CN1222868C CNB008192596A CN00819259A CN1222868C CN 1222868 C CN1222868 C CN 1222868C CN B008192596 A CNB008192596 A CN B008192596A CN 00819259 A CN00819259 A CN 00819259A CN 1222868 C CN1222868 C CN 1222868C
Authority
CN
China
Prior art keywords
instruction
flow line
line stage
thread
streamline
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
CNB008192596A
Other languages
English (en)
Other versions
CN1437725A (zh
Inventor
J·P·杜格拉斯
D·J·德勒加尼斯
J·D·哈德利
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 CN1437725A publication Critical patent/CN1437725A/zh
Application granted granted Critical
Publication of CN1222868C publication Critical patent/CN1222868C/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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines

Abstract

使用多线程传输的指令解码器计时、清除和延迟多线程机器中解码流水线的指令,可以获得最佳的性能和最小的功耗。一个映像流水线映像保持线程标识的指令解码流水线和指令解码器每个流水线阶段有效指令比特。线程标识和有效的比特用于控制对指令解码器中每个流水线阶段的计时、清除和延迟。一个线程指令能够被清除而不与在解码流水线的其它线程指令发生冲突,在一些情况下,一个线程的指令能够被延迟而不与在解码流水线的其它线程指令发生冲突。本发明中,仅仅当有效指令需要前进以便保持功率和最小化延迟时计时流水线阶段。

Description

多线程流水线指令解码器的方法和设备
技术领域
本发明一般涉及计算机处理器的指令解码,具体涉及微处理器流水线指令解码器。
背景技术
基本的指令解码器和指令解码技术应用在中央处理器和微处理器中已经是众所周知的。随着设计的进步,指令解码器变得更为复杂,不仅包括顺序处理指令的流水线寄存器,还具备缓冲器,暂时存储先被解码的指令,同时使得其它指令继续被处理。但是,缓冲器容量受到限制并且能够被填满,因此更多的指令不能被存进去。在现有技术中,当一个缓冲器装满后,整个指令解码流水线将被延迟。在微处理器中,延迟也可以因为其它原因发生,如当一个子系统不能够处理在前的子系统提供的大量数据时,这样数据不会丢失。实质上,当在指令解码流水线上不能解码更多的指令时,一个指令解码流水线被延迟。
现有技术的处理器中,如果一个指令解码器流水线上的指令失效或者无效时,就像出现在超高速缓冲存储器中一样的问题,指令需要被清除。清除实际上是使指令无效,以便他们能够被有效的指令覆盖或者被忽视。现有技术中的处理器中,全部指令包括有效指令在指令解码流水线上以整体被清除(也就是被无效)。在这种情况下,被清除的有效指令必须重新输入到指令解码流水线的开始部分,重新开始解码处理。当在现有技术的处理器流水线中中出现无效或失效时,象这样的整体的清除易于延迟执行处理。
减少处理器功率消耗是一个主要的考虑因素。在现有技术中为了节省功率,关闭运行单元中的同步电路的全部功能块的时钟。就是说,这些时钟信号在全部功能块中被设置成一个稳定的状态。为了完成上述操作,在现有技术中使用电源关闭控制逻辑决定什么时候整个功能块是空闲的并且能够关闭时钟。因为关闭同步电路的时钟,包括时钟信号在内的全部信号都不会改变状态。在这种情况下,晶体管不必对信号线上的相关电容充电和放电,这样就节省了功率。然而,因为整个功能块中的时钟都被关闭,现有技术中的处理器必须等待直到这些功能块的所有功能被完成。这使得现有技术的处理器几乎不可能关闭功能块的时钟,整个期间功率很少被节省。
克服现有技术中处理器的这些和其他一些限制是被希望的。
发明内容
本发明提供了一个微处理器,包括:一个解码多线程指令的指令解码器,该指令解码器包括,一个指令解码流水线,用于解码与每个线程相关的输入指令;和一个与指令解码流水线并行操作的映像流水线,该映像流水线包括,一个指令线程标识流水线,将在指令解码流水线中被解码的每个指令和一个线程标识联系起来,和一个指令有效流水线,把在指令解码流水线中被解码的每个指令和一个有效指示符联系起来。
本发明还提供了一个多线程流水线指令解码器,包括:一个指令解码流水线,用于解码与大量指令线程相关的指令;和一个与指令解码流水线并行操作的映像流水线,该映像流水线包括:一个指令线程标识流水线,把每个流水线阶段的线程标识与在指令解码流水线中被解码的每个指令联系起来;和一个指令有效流水线,把每一个流水线阶段的有效指示符与在指令解码流水线中被解码的指令联系起来。
本发明还提供了一个解码多线程指令的方法,包括:将第一个线程指令的一个指令、第一个指令线程标识和第一个指令的有效指示符输入到并行的一个流水线;解码第一个线程指令中的所述指令;在解码第一个线程指令中的所述指令期间,保持在第一个线程的指令、第一个指令线程标识和第一个指令的有效指示符之间的并行关系;将第二个线程指令的一个指令、第二个指令线程标识和第二个指令的有效指示符输入到并行的一个流水线;解码第二个线程指令中的所述指令;和在解码第二个线程指令中的所述指令期间,保持在第二个线程的指令、第二个指令线程标识与第二个指令的有效指示符之间的并行关系。
本发明还提供了一个计算机,包括:一个内存,一个微处理器,该微处理器包括:用于解码多线程指令的指令解码器,该指令解码器包括:一个用于解码与每个线程相关的每个输入指令的指令解码流水线;和一个与指令解码流水线并行操作的映像流水线,该映像流水线包括:一个指令线程标识流水线,把线程标识与在指令解码流水线中被解码的每个指令联系起来,一个指令有效流水线,把有效指示符与在指令解码流水线中被解码的每个指令联系起来。
本发明还提供了一种在一个指令解码器中消除无效指令的方法,包括:从一条流水线中接收指定线程的清除指令,该指令指示将要从流水线中被清除的指令的线程标识ID;比较该流水线的每一个流水线阶段中的每个指令的线程标识,决定上述标识是否和将要从流水线中被清除的指令的线程标识匹配;使具有与将要从流水线中被清除的指令的线程标识匹配的线程标识的每个指令的一个有效位无效。
本发明还提供了一个微处理器,包括:一个用于解码多线程指令的指令解码器,该指令解码器包括:指令解码流水线和映像流水线,该指令解码流水线解码和每个线程相关的每个输入指令,和映像流水线保持一个线程标识和一个与指令解码流水线中被解码的每个指令并行的有效指示符。
本发明一个实施例中简要的说明,微处理器包括一个指令解码器,解码指令多线程。指令解码器包括一个指令解码流水线。指令解码流水线解码每个与每个线程相关的输入指令。指令解码流水线还保存一个线程标识和一个与在指令解码流水线上被解码的每个指令平行的有效指示符。
在这里,其它的具体实施例也被表示,描述和要求。
附图说明
附图1说明使用本发明的典型计算机的框图;
附图2说明使用本发明的典型中央处理器的框图;
附图3说明本发明中包括多线程流水线指令解码器的微处理器的框图;
附图4说明本发明多线程流水线指令解码器的框图;
附图5说明本发明指令解码流水线的框图;
附图6说明映像流水线和清除控制,延迟和关闭如附图5中所示的指令解码流水线中流水线阶段的控制逻辑的框图;
附图7说明在本发明中控制逻辑的控制运算方程式;
附图8说明在本发明中指令解码器执行的一个气泡挤压示例的时序图;
附图9说明在本发明中指令解码器执行的一个非阻塞延迟示例的时序图;
附图10说明在本发明中指令解码器执行的一个线程清除示例的时序图;
附图11A说明在本发明中指令解码器执行的机会的电源关闭的第一个示例的时序图;
附图11B说明在本发明中指令解码器执行的机会的电源关闭的第二个示例的时序图;
具体实施方式
下面具体描述本发明,给出了大量具体的描述以提供对整个发明的完整的理解。然而,对于本领域的技术人员来说是显而易见的,没有这些具体的描述本发明也可以实现。在其它实例中众所周知的方法,设备,装置和电路不在这里具体描述,以免造本发明的不清楚。
本发明提供了一种对多线程系统的多线程流水线指令解码器进行计时,清除和延迟的算法方法,可以获得最佳的性能和最小的功耗。一个线程是一个被执行的软件的一个过程。软件编译器能够编译软件程序的一部分,将它们分裂成可执行代码的多个平行的数据流或者是可同时执行的多个不同的程序。每一个可执行代码的多个平行的数据流是一个线程。多线程平行的被执行提供了多个任务或是提高了性能。本发明提供了指令解码流水线,指令线程标识的映像流水线和映像指令解码流水线的指令有效位。线程标识和有效位用于控制每个流水线阶段的清除,计时和延迟。与一个线程相关的指令能被清除或者被延迟而不影响在解码流水线中的其它线程指令。本发明中,仅仅当有效指令因为需要最小化功率消耗和延迟而提高时,计时流水线阶段。一个有效指令是被执行单元决定可执行的指令。一个无效指令是被决定不可执行的指令,或是一个出错的指令,或是有一个异常的情况要求不被执行。
参照附图1,说明使用本发明的计算机100的框图。计算机100包括一个中央处理器(CPU)101,输入/输出外围设备102,例如键盘,调制解调器,打印机,外部存储设备,监视设备103,例如示波器或是图形显示器。监视设备103以人们可以理解的格式提供计算机信息,例如以视觉的或是音频的格式。
参照附图2,一个使用本发明中的典型的中央处理器单元101的框图。中央处理器101包括一个微处理器201,一个盘存储设备203和一个存储程序指令的存储器204,上述设备耦合在一起。盘存储设备203可以是一个软盘,压缩格式盘,DVD盘,硬盘,可重写光盘,闪存或是其它不稳定的存储设备。微处理器201和盘存储设备203都能通过存储器总线205从存储器204中读或是写信息。因此,微处理器201和盘存储设备203都能够在整个程序的执行阶段改变存储器204的存储单元。为了盘存储器203直接的做上述工作,包括一个具有直接存取存储器的盘控制器,该控制器可以执行存储器的存储和修改代码。因为控制器可以直接对存储器存取,它是一个直接存取存储器代理的例子。其它的可以直接将信息存入存储器的设备也是直接存取存储器代理。存储器204是典型的动态随机存取存储器或是其它类型的可重写存储器。因为用于存储程序指令,在这里存储器也可以作为程序存储器。在初始化存储在盘存储器203或是存储在其它设备例如输入/输出设备102中的程序执行时,微处理器201读存储在盘存储器203或是其它设备中的程序指令,将它们写入存储器204。存储在存储器204中的程序指令中的一个或多个页或者片断被微处理器201读出(也就是,被取出),初步解码,并将其存入指令高速缓冲存储器中(没有在附图2中表示出来)准备执行。存储在指令缓冲器中的一些程序指令可能被读入一个指令流水线(没有在附图2中表示出来)中被微处理器201执行。
参照附图3,其表示通过存储器总线205将微处理器201耦合到存储器204的框图。微处理器201包括下一指令处理器(IP)310,一个指令转换旁视缓冲器(ITLB)312,一个存储器控制器313,一个跟踪高指令速缓冲存储器314,一个跟踪下一指令处理器(IP)315,一个指令解码器316,一个执行单元318,退役单元320和其它被微处理器考虑的指令流水线中的指令存储器单元。下一指令处理器(IP)310将下一组处理的指令从存储器204中取出,经解码器316解码后,存入跟踪高速缓冲存储器314中。微处理器201最好是一个多线程设备。这就是说,指令多线程能够被微处理器201解码和执行,以支持多任务。
指令转换旁视缓冲区(ITLB)312包含页表地址,将地址从线性转换成物理地址存入存储器204中,以便得到一个虚拟存储器。页表地址转换将存储在物理存储器204中的指令与存储在跟踪高速缓冲存储器314中的指令关联。通常地,ITLB312接收一个输入线性地址,返回一个与存储器204中指令单元有关的物理地址。
跟踪指令高速缓冲存储器314能存储多个序列,或是跟踪不同程序的已解码的指令以提供多任务处理。在一个跟踪指令高速缓冲存储器中,一个程序(一个跟踪痕迹)的一串指令中仅仅第一个指令有相关的地址。一串存储在跟踪高速缓冲存储器中的相关指令时常地被称为指令的一个“跟踪痕迹”。其它的在第一个指令后面的指令被存储在高速缓冲存储器314中,而没有相关的外部地址。跟踪指令高速缓冲存储器314包含能被执行单元318使用的指令来执行一些功能或处理。如果功能或是过程需要的指令不在指令高速缓冲存储器314中,会发生一个失误,指令必须从存储器204中取出。存储器控制器313和跟踪指令高速缓冲存储器314接口,以便在其中存储指令。在失误的情形,存储器控制器313通过ITLB312和指令解码器316从存储器204中取出希望得到的指令,将其提供给跟踪指令高速缓冲存储器314。
参照附图4,说明在本发明中多线程流水线指令解码器316的框图。指令解码器316包括一个指令解码流水线400,控制逻辑401,一个映像流水线402。指令解码器316支持指令的多线程。通常的,指令解码器316中的指令解码流水线400接受一个输入的指令或操作码,将这些数据块分成完全独立的指令或操作码,解码每个指令或操作码,执行必须的指令处理将上述数据形成能被执行单元理解和执行的微操作码(UOP),例如执行单元318。UOP从指令解码器316中输出的UOP耦合到跟踪指令高速缓冲存储器314中,被执行之前的暂时存储。通常的,指令解码流水线400包括一个或多个寄存器R1-RN,一个或多个缓冲器B1-BP和在寄存器R1-RN与缓冲器B1-BP之中放置的一个或多个逻辑阶段L1-L0。寄存器R1-RN可以由D型触发器或是有合适时钟信号的透明锁存器组成。逻辑阶段L1-L0对操作码进行解码和必须的指令处理,形成UOP。缓冲器BP在附图4中表示,和指令解码流水线400相关,并且或许被考虑为指令高速缓冲存储器的部分。
同输入到指令解码流水线400中的指令相关的是指令线程标识和指令有效位。映像流水线402包含一个指令线程标识流水线支持多线程,一个用于指令有效位的流水线。在首选的实施例中,指令线程标识是一个单独的数据位,表示和指令解码流水线中前一个线程和后一个线程不同的指令线程。在优选的实施例中,一个单独的位或信标可以被表示一个线程标识0(Id0)和一个线程标识1(Id1)。多个数据位用于提供更复杂的多线程标识,支持一个更复杂指令流水线。有效位和线程标识位可以共同编码,依次将指令有效位流水线和映像流水线的指令线程标识流水线合并。指令线程标识和指令有效位流经过映像流水线402,同每一个在指令解码流水线402中解码的指令平行。映像流水线402为了完成这些工作,它通过包括指令线程标识和指令有效位的寄存器R1’-RN’和缓冲器B1’-BP’,将指令解码流水线400中的指令存储单元(寄存器,缓冲器等等)镜像。寄存器R1’-RN’和缓冲器B1’-BP’提供与R1-RN和B1-BP各自相同的存储单元,设置在指令解码流水线400上。寄存器R1’-RN’和缓冲器B1’-BP’可以由与寄存器R1-RN匹配的D型触发器或是有合适时钟信号的透明锁存器组成。映像流水线402不需要可以将指令从一个阶段变成下一个阶段的逻辑阶段L1-L0。指令线程标识和指令有效位通过锁存器,寄存器或是缓冲器和指令处理并行的从一个流水线阶段进入下一个流水线阶段,同时控制逻辑401进行读取。控制逻辑401向寄存器R1-RN,R1’-RN’和缓冲器B1-BP,B1’-BP’提供时钟信号。同一个时钟信号被分别提供给该指令解码流水线400和映像流水线402上的每个指令存储单元(寄存器,缓冲器等等)。本发明中延迟和机会的电源关闭都会影响指令解码流水线和映像流水线的计时。附图4清楚地表示了指令解码流水线400不同于映像流水线,它们可以被集成为一条流水线,被同一个时钟信号计时。这样,指令有效位和指令线程标识被和在一起并与在一个流水线上的指令平行,同指令一样在流水线的每一个流水线阶段被解码。指令有效位和指令线程标识同指令一起以某种方式被编码,以便在整个指令解码过程中合并在一起。
使用一个单独数据作为线程标识,本发明通过允许将在每个流水线阶段之间指令解码流水线400中不同线程的指令混合起来,支持多线程。使用多个数据位作为线程标识,为了同时支持在解码流水线的每个流水线阶段的多于两个的线程,本发明将增加难度和附加可能两倍的硬件设备。任何一种情况,使用单独一个指令解码器能够支持多个线程。
参照附图5,描述了实施例中指令解码流水线400’的详细框图。优选实施例中,一组指令或者操作码通常是Intel X86型的指令,这些指令与被高级Intel微处理器支持的与其它具体的指令或者操作码相关的软件相兼容。优选实施例中,指令或者操作码是Intel X86型的与软件相兼容的指令,并被解码成被高级执行单元318执行的微操作码UOP。指令解码流水线400’从一个缓冲器(没有示出)中接收这些指令或者操作码,将其转换成被执行单元318执行的微操作码UOP。通过持续的对Intel X86型的指令解码,微处理器201保持了软件向后的兼容性。
在优选实施例中,指令解码流水线400’有七个指令存储单元,一个将被解码的指令使用七个时钟周期,并在流水线的末尾处产生一个微操作码UOP。当然,指令解码流水线400’可以具备提供不同长度的不同数量存储单元。假设,映像流水线402有匹配的存储单元,以便指令线程标识和指令有效位在处理方面与指令平行。优选实施例中,指令解码流水线能够在给定的时间,在流水线上的第一个线程被解码之后顺序的处理多个线程。
指令解码流水线中400’的指令存储单元包括逻辑块之间的五个寄存器501A-505E,和两个缓冲器502A,502B。寄存器501A-505E可以由D型触发器或是有合适时钟信号的透明锁存器组成。缓冲器502A,502B是存储大量数据字节的数据缓冲器。优选实施例中,指令解码流水线400’中的逻辑功能性包括一个第一长度解码器511,第二长度解码器512,一个指令定位器513,一个故障/前缀检测器和字段定位器/提取器514,一个指令翻译器515,一个指令别名器516,一个微操作码UOP调度程序517。
优选实施例中,缓冲器502A和502B是专用于线程的缓冲器。实质上,缓冲器502A和502B在指令解码流水线400上形成了两个中断点,因为它们能够以可变的速率输出其内容(也就是,空的)。缓冲器502A置于第二长度解码器512和指令定位器513之间。缓冲器502B置于指令解码流水线400的末尾。也可以被认为是跟踪指令高速缓冲存储器314的组成部分。然而,缓冲器被表示为指令解码流水线400的组成部分,来理解本发明要解决的全部问题。优选实施例中,寄存器501A-505E是以每个不同于下一个周期的周期计时的D型触发器。
输入到指令解码流水线400’的输入指令410可以是非常长的指令语句(VLIW)。VLIW输入指令410被输入到第一长度解码器511和第二长度解码器512中,被解码和划分成多个过程或者功能(也就是指令),被存入缓冲器502A中。优选实施例中,缓冲器502A累积全部或者一部分可变长度的X86指令。缓冲器502B,在指令解码流水线400’的输出,用于累积被存入跟踪缓冲存储器314中之前退出指令解码流水线400’中的固定数量的微操作码UOP。当一个缓冲器存满时,这个缓冲器不能接收多余的指令,指令解码流水线400’必须延迟以阻止指令的丢失。缓冲器502A和502B的每一个都能产生一个具有延迟线程标识的延迟信号,延迟指令解码流水线400’。
如果必须,缓冲器502B还能够产生一个具有清除线程标识的清除信号,使指令解码流水线400’上的与清除标识相关的指令无效。具有清除线程标识的清除信号也可以在外部被从微处理器的前一个处理块或是后面的处理块传入到指令解码器。如果决定了一个不能被执行单元118执行的指令是无效的,故障/前缀检测器和字段定位器/提取器514也可以产生具有清除线程标识的清除信号,而不考虑进一步解码的需要。另外,故障/前缀检测器和字段定位器/提取器514或许需要附加的周期对一个给定的指令作决定。这种情况下,故障/前缀检测器和字段定位器/提取器514可以产生一个具有延迟线程标识的延迟信号。
缓冲器502A,作为一个操作缓冲器,存有为具有一个给定线程标识的给定线程的VLIW输入指令410的多个过程或者功能(也就是指令)。优选实施例中,输入指令解码流水线400’的输入指令410以指令的8字节块被送入缓冲器502A。缓冲器502A接收并在三个8字节寄存器中保存三个八字节块指令,平行的提供信息的24个字节,在它的输出提供一个指令。优选实施例中,缓冲器502A输出完整的IntelX86指令。被缓冲器502A产生的Intel X86指令可以是1个字节至15个字节之间任何长度。因为Intel X86的指令长度可变,数据能够被缓冲器502A以比输出速率更多的不同输出速率接收。缓冲器502A在给定的8字节寄存器存储一样的指令块,直到这些在寄存器中存储的指令被处理。这就是说,为了将指令的每个8字节的块写入缓冲器502A中,必须花费8个周期的读出一个指令,可以花费1个周期读出一个指令,或者为了完成一个完整指令的输出,缓冲器必须等待接收一个或者多个指令的8个字节块。因此,缓冲器502A中的一个8个字节寄存器可能在有时是空闲的,同时缓冲器中502A中的三个8字节寄存器可能在其它情况时都立刻空闲。VLIW输入指令410的多个过程或是功能(也就是指令)被缓冲器502A输出,好像以一种类似移位寄存器先入先出FIFO方式的指令410’。多路复用器用于从存储在缓冲器502A中的大量过程或者功能中为一个给定的VLIW输入指令选择过程或者功能,以便不必安装一个实际存在的移位寄存器。被多路复用处理选择的输出指令410’被提供给指令定位器513。因为指令410’为相同的线程输出,每一个输出指令的线程标识被复制,直到指令的线程被完成或是从缓冲器502A中清除。缓冲器502A发出一个具有线程标识的延迟信号,直到在缓冲器502A中一个给定输入指令410所有的过程和功能及线程被输出到指令定位器513中或是被无效。被缓冲器502A启动的延迟可能延迟在前的流水线阶段,第一长度解码器511和第二长度解码器512。被缓冲器502A启动的延迟不能延迟后面的流水线阶段513-517。
UOP调度程序517调度的微操作码在存入跟踪指令缓冲存储器314之前被缓冲器502B保存。因此,缓冲器502B经常被称作跟踪缓冲缓冲器填满缓冲器,并被认为是跟踪缓冲存储器314的组成部分而不是指令解码器316的组成部分。如果缓冲器502B存满,一个延迟可被缓冲器502B启动。被缓冲器502B启动的延迟可能延迟一个或多个在前的流水线阶段513-517,缓冲器502A和在前的流水线阶段511和512。
根据在前的描述,第一长度解码器511和第二长度解码器512将指令410解码和划分成多个过程或者功能(也就是被包含在VLIW中的指令)。缓冲器502A将这些一个或多个过程或者功能作为指令410’输出。指令定位器513为了指令解码器进一步的执行处理,将指令410’定位成多个适当的比特段。故障/前缀检测器和字段定位器/提取器514决定是否被解码的指令能够被执行单元318执行。如果可能,指令翻译器515将X86指令转换成一个微操作码。指令别名器516能为一个指令别名,使解码逻辑更简单。微操作码调度程序517将微操作码输出到缓冲器502B中。微操作码调度程序517最后检查决定在前的指令流水线阶段是否提供了一个有效的指令。
参照附图6,表示了控制逻辑401和映像流水线402的详细的框图。映像流水线402包括指令有效映像流水线601和线程标识映像流水线602。附图6中表示的控制逻辑401包括电源关闭逻辑603,时钟控制逻辑604,清除逻辑605A-605M,M个清除逻辑对应于M个流水线阶段,线程选择多路复用器606A-605M,M个线程选择多路复用器对应于M个流水线阶段。指令有效映像流水线601包括M个可复位D型锁存器/触发器611A-611M,如附图6所示串联的耦合在一起,M个可复位D型锁存器/触发器对应于M个流水线阶段。线程标识映像流水线602包括M个D型锁存器/触发器612A-612M,如附图6所示串联的耦合在一起,每个对应一个流水线阶段。锁存器/触发器611A-611M和锁存器612A-612M可以由D型触发器或是有合适的时钟信号的透明锁存器组成,以与寄存器501A-501E和缓冲器502A-502B匹配。映像流水线402提供在一条指令解码流水线401上具有指令的多线程的必须的装置。映像流水线402中的D型锁存器/触发器611A-611M和D型锁存器/触发器612A-612M,保持指令解码流水线401中每个流水线阶段的每个指令各自的指令有效位416和指令线程标识418。优选实施例中,M的值是7,完成一个指令解码需要至少M个时钟周期。
本发明中控制逻辑401实现的支持流水线指令解码器400’的多线程的控制算法,具三个主要的功能部分:1)有效延迟和气泡挤压,2)指定线程的清除,3)机会的电源关闭。参照附图6和7,附图7表示在附图6中表示的控制逻辑401所执行的控制运算方程式。附图6中表示的电源关闭逻辑603,对每个流水线阶段执行“任何一个流水线阶段X的电源关闭”的方程式。为了执行上述功能,电源关闭逻辑603输入每个流水线阶段的指令有效位。另外,附图7表示了电源关闭逻辑603执行“最后一个流水阶段的前一阶段的延迟(NLP)”方程和“为任何流水线阶段X的延迟”的方程。为了执行上述功能,电源关闭逻辑603还接收一个具有延迟线程标识的线程延迟信号,决定是否最后个流水阶段的前一阶段的指令解码流水线应该被延迟。电源关闭逻辑603通过将给定的流水线阶段的指令有效位与随后的流水线的指令有效位作与运算,处理每个流水线阶段的延迟条件,进一步用这些结果和是否最后一个流水阶段的前一阶段被延迟的决定作与运算。电源关闭逻辑将每一个阶段的延迟条件送入时钟控制逻辑604。时钟控制逻辑按照附图7所示的“任何流水线阶段X的时钟使能”的方程选择每个流水线阶段的时钟停止或是运行。如果给定的流水线阶段没有延迟并且没有电源关闭,那么给定流水线阶段使得其时钟使能,以便能在下一个周期被计时。
为了执行上述功能,所述电源关闭逻辑包括一个反相器,在每个流水线阶段反相有效的指示符来决定下一个流水线阶段是否能够在下一个时钟周期被关闭。电源关闭逻辑还包括异或门,用于将最后一个流水线阶段的前一个流水线阶段的线程标识与延迟的线程标识进行异或运算,决定上述两者是否匹配,和第一与门,用于将最后一个流水线阶段的前一阶段的有效指示符与来自异或门的输出进行与运算,决定在最后一个流水线阶段的前一个流水线阶段之前的流水线阶段是否应该被延迟。电源关闭逻辑还包括第二与门,用于将已经做过决定的流水线阶段的有效指示符与下一个流水线阶段的有效指示符进行与运算,和第三与门,用于将第二与门的输出与第一与门的输出进行与运算,决定除了最后一个流水线阶段的前一个流水线阶段之外的给定流水线阶段是否应该被延迟。
附图6表示的每个流水线阶段的清除逻辑605A-605M,执行如附图7表示的“清除任何流水线阶段X”的逻辑方程。在除了最后一个流水阶段的前一阶段外的每个流水线阶段,计算方程式决定是否在指令解码流水线上平行的流水线阶段应该通过清除或是设置指令有效位指示一个无效指令而被无效。输入到多路复用器606A-606M中的选择信号选择Clear(x)方程式的Clock(x)项还是NOT Clock(x)项被估计,Clear(x)方程式被计算为每个流水线阶段产生清除信号。从多路复用器606A-606M中每个输出的每个流水线阶段的清除信号被耦合进入每个可复位D型锁存器/触发器611A-611M的复位端。在为给定流水线阶段产生一个清除信号时,结构有效位被设置或是复位,指示一个在指令解码流水线中平行的流水线阶段中的无效指令。清除逻辑605A-605M的每个接收一个输入的给定流水线阶段的指令线程标识和一个在前流水线阶段的指令线程标识,计算Clear(x)方程式的项。另外,所有清除逻辑605A-605M接收具有清除线程标识的清除线程信号。
举例说明有效延迟和气泡挤压的功能,附图8-10,11A,11B描述了指定线程的清除,机会的电源关闭运算。附图8-10,11A,11B的表示与附图5中所示的缓冲器502A和502B之间的指令解码流水线400’的控制相关,流水线阶段513-517被称作如下面描述的流水线阶段Ps1-Ps5,通过使用本发明中的算法归纳一个指令解码器中任意指令解码流水线的控制。
有效延迟和气泡挤压
延迟一般发生在当微处理器中任何子系统不再进一步处理来自于其它子系统的数据时。为了避免丢失数据,现有的微处理器子系统必须延迟,在指令解码器中,延迟发生在当在指令解码流水线中给定的流水线阶段没有指令能被解码时。一个阻塞延迟是指,不管线程标识或是流水线上的指令的有效性而停止指令解码流水线上每个流水线阶段。一个非阻塞延迟是指,指定的线程或者考虑指令的有效位。非阻塞延迟那些在将被延迟的线程标识的因素和流水线阶段具有有效位的因素。例如,如果一个延迟发生在线程标识是1时,一个指令在线程标识是0时被执行,线程标识是0的指令将继续执行,线程标识是0的指令将继续被指令解码器解码,直到一个线程标识是1的指令进入指令解码流水线。一旦一个线程标识是1的指令进入指令解码流水线,其被执行延迟。阻塞延迟不考虑指令的线程标识,有效的延迟在本发明中是被指令解码器执行的运算,用来减少任何延迟的影响。
一个气泡是位于指令解码器中的大量无效的指令。通常,气泡是被混合入指令解码流水线中其它指令线程的整个指令线程变为无效产生的结果。产生这种情况的一个例子是一个错误连接的支路。本发明中,执行气泡挤压运算,通常挤出指令解码流水线上的指令的气泡。气泡挤压运算实质上是通过继续计时指令被标识无效的流水线阶段直到接收一个有效的指令来完成的。对包括有效指令的一个流水线阶段的计时暂时停止,直到延迟的原因被清除。无效的指令最终通过将存储在流水线阶段上的无效指令改写成有效指令而被挤出。气泡挤压运算继续运行指令解码流水线,降低流水线其它线程的指令而不是执行一个非智能的或是阻塞延迟。气泡挤压在指令解码器中提供更高的吞吐量。
有效延迟和气泡挤压的运算处理包括由可变消耗的缓冲器产生的指定的线程延迟。通过使用线程标识流水线上的线程标识和指令有效流水线上的指令有效位,算法决定是否一个与延迟相符的线程标识的有效指令应该在下一个周期出现在缓冲器中。如果是,那么在进行缓存之前,最后一个流水线阶段之前的一个阶段被延迟(防止出现更多的指令)。在优选实施例中,使用最后一个流水线阶段之前的一个阶段而不是最后的流水线阶段,以便提供一个计算的周期时间。在可选的实施例中,最后一个流水线阶段可以代替最后一个流水线阶段之前的一个阶段。任何没有有效指令的指令解码流水线阶段不被延迟,任何在缓冲器之后的流水线阶段也不被延迟。这样允许流水线中的指令进行直到流水线满,同时,仍然延迟最后一个流水线阶段之前的一个阶段以阻止指令的丢失,增加全部解码的带宽。如果将要进入缓冲器中的指令数据不具有同延迟的线程一样的线程,那么保持时钟继续运行。这样防止了有其它线程的指令被延迟,允许指令解码流水线上的后面的有同一线程的指令继续进行,因此进一步增加指令解码器的带宽。
参照附图8,表示了本发明中被多线程流水线指令解码器执行的一个气泡挤压示例的时序图。附图8中波形801,802和803在时间上被分开一个时钟周期。波形801是描述在time1过程中流水线阶段中的指令状态的时序图。波形802是描述在time2中流水线阶段中的指令状态的时序图。波形803是描述在time3中流水线阶段中的指令状态的时序图。流水线阶段中指令的指令状态被表示超出了波形的每一个周期,一个标记表示了线程标识和包含在映像流水线中每个流水线阶段的指令有效位。状态X表示一个给定流水线阶段的无效指令。状态T0(标记0),作为一个T0标识的指令表示流水线阶段的有效指令并具有为0的指令线程标识(thread-ID=0;ID=0)。状态T1(标记1),称作T1的指令表示流水线阶段的有效指令并具有为1的指令线程标识(thread-ID=1;ID=1)。与标识T0或是T1中每一个相关的指令具有表示状态。一个或多个省略符同指令状态一起表示指令的期限或者一个给定流水线阶段的有效条件的期限。
附图8中,波形801有一个无效指令的气泡,状态X,出现在time1开始的流水线阶段PS1和PS2中。一个指令410’,一个标识为1(T1)的T1指令输入到指令解码流水线中。假设从接收到一个具有线程标识为0的延迟信号开始一个T0的指定线程发生延迟,开始一个时钟周期,产生波形802。波形802中,流水线阶段PS4和PS5延迟各自的时钟。流水线阶段PS4,最后一个流水线阶段的前一个阶段的延迟条件能够被如附图7所示的“最后一个流水线阶段之前的一个阶段的延迟”的方程式计算,其中因为PS4所以NLP取值为4。优选实施例中,使用最后一个流水线阶段之前的一个阶段来替代最后一个流水线阶段,以便在指令解码器处理一个指令之前提供计算的周期时间。在可选的实施例中,在方程式“最后一个流水线阶段之前的一个阶段的延迟”中,最后最后一个流水线阶段之前的一个阶段替代下一个流水线阶段,其中因为PS5所以NLP取值为5。从附图7中看出:
Stall(NLP)=Valid Instruction in Pipe(NLP)AND(ThreadID(NLP)=ThreadID of stall)
因为流水线阶段PS4中标记T0的指令是一个有效指令,和指定的T0线程延迟关联(ThreadID=0=ThreadID of stall),存在于流水线阶段PS4中存在一个延迟条件。流水线阶段PS4的时钟因此在下一个时钟关闭,以保持指令。这些能被附图7表示的“任何流水线阶段的时钟使能”的方程式的计算得到。
Clock(X)=NOT Stall(x)AND NOT Powerdown(X)
因为延迟条件存在于流水线阶段PS4中,它的时钟使能信号低以停止下一个时钟周期的时钟。
流水线阶段PS5的延迟条件,能从被附图7表示的“延迟任何其它流水线阶段X”的方程式的计算得到,其中对于PS5,X为5。
Stall(X)=Valid Instruction in Pipe(X)AND Valid Instructionin Pipe(X+1)AND Stall(NLP)
因为流水线阶段PS5有一个有效的T0指令,估计在前的周期有一个有效的指令调度和一个延迟(NLP)条件存在;流水线阶段PS5也存在延迟条件。流水线阶段PS5的时钟因此在下一个时钟关闭同样保持T0指令。因为流水线阶段PS5中存在延迟条件,它的由方程式“为任何流水线阶段X的时钟使能”的计算得到的时钟使能信号为低,以停止下一个时钟周期的时钟。因此,流水线阶段PS4和PS5中的T0指令不会在指令解码流水线中前进,而是被保持在流水线阶段中,UOP调度程序517不调度微操作码UOP。然而,被标记T1表示的和一个不同线程有关的T1指令,能够在指令解码流水线中前进。流水线阶段PS1、PS2和PS3中的时钟不被延迟,在time2中流水线阶段PS1中的T1指令在指令解码流水线上向前进入波形802的流水线阶段PS2。一个延迟条件不存在于波形802的time2中的流水线阶段PS2中,因为在随后的流水线阶段PS3有无效的指令。如同波形802的表示,先前在流水线阶段PS2中发现的无效指令已经被一个T1指令改写。因为在流水线阶段PS3指令解码流水线上仍然存在一个无效的指令,另一个T1指令410’能够在下一个时钟周期从流水线阶段PS1向前进。又一个时钟周期之后,产生波形803。波形803中,当一个T1指令从流水线阶段PS1向前进入流水线阶段PS2的同时,先前在流水线阶段PS2的T1指令向前进入下一个流水线阶段PS3。因此,波形802中存在于流水线阶段PS3中的先前的第二个无效指令被从指令解码流水线中挤压出去。波形803中看到,因为指令解码流水线现在是满的,整个指令解码流水线被延迟,任何流水线阶段的时钟不会计时,直到T0指定的线程延迟被清除以允许UOP被调度。以这种方式,无效指令的气泡能够从指令解码器中挤压出去。
参考附图9,表示本发明中能够被指令解码器执行的一个非阻塞延迟或者有效延迟的时序图。附图9中波形901,902和903在时间上被分开一个时钟周期。波形901,902和903是描述在time1,time2和time3中流水线阶段中的如上述波形指示的指令状态时序图。指令状态同在前的附图8中描述的指令状态有一致的意思。
附图9中,指令解码流水线中的流水线阶段包含具有线程标识是1的线程的T1指令,具有线程标识是0的线程的T0指令,每一个被上述波形901中的标记表示。波形901中,一个T1指令410’进入流水线阶段PS1中,另一个T1指令以一个解码的形式被存入流水线阶段PS2中。波形901中,T0指令被存入流水线阶段PS3,PS4和PS5中。在又一个时钟周期之后,波形902产生。波形901表示的流水线阶段的每个指令都在指令解码流水线向前进。波形901中流水线阶段PS5中在前的T0指令被流水线阶段PS5在time2中分配。在波形902中,一个T1指令410’进入流水线阶段PS1中,其它的T1指令以一个解码的形式被存入流水线阶段PS2和PS3中。在波形902中,T0指令被存入流水线阶段PS4和PS5中。现在假设一个T1指令线程延迟信号被控制逻辑401接收,在下一个时钟周期产生波形903。在波形903中,一个T0指令被存入流水线阶段PS5中同时另一个T0指令被分配。在波形903中,T1指令占据流水线阶段PS1,PS2,PS3和PS4。因为在指令解码流水线后面的流水线阶段中的指令是T0指令而不是T1指令,流水线继续计时直到一个与指定的T1线程延迟相关的T1指令到达最后一个流水线阶段之前的一个流水线阶段PS4。当一个T1指令到达最后一个流水线阶段之前的一个流水线阶段PS4,方程式“最后一个流水线阶段之前的一个流水线阶段(NLP)的延迟”计算的延迟条件被满足。占据PS5的T0指令被分配进入跟踪高速缓冲存储器。以这种方式,延迟能够被指令解码器智能的处理。
线程特定清除
指令可能会因为许多原因需要被清除。实质上,清除是使那些无效的指令无效,以便它们能被忽略或是被有效指令重写。清除指令可能无效与指定线程标识相关的指令的整个线程。涉及的清除的这些类型被作为指定线程的清除。线程具体的对无效指令的清除能被包括存储器子系统(例如,本身修改代码)的微处理器中大量功能块,指令解码流水线本身(例如,分支地址计算器或者X86解码错误)和退役单元320或微处理器的其它后端功能块产生。本发明中,线程具体的清除运算法则仅仅清除这些指令,必须来自于指令解码流水线并除去其中的有效指令,实现继续的解码和微处理器的执行。本发明中,线程具体的清除算法使用指令的有效位416和映像流水线402中指令具体线程标识418,来为包含对应于被清除线程的指令的这些流水线阶段产生清除信号。这些清除信号将无效那些包含在指令解码流水线的每个的流水线阶段的对应于被无效的线程的这些指令的有效位。一个指令解码流水线的线程具体的清除信号允许清除指令的一个线程同时保持其它指令线程的完整无恙。完整的指令可以在指令解码流水线上越过这些因为被无效而被清除的指令向前进。线程特定清除指令在一个延迟中被执行,如果引起延迟的指令被清除即消除了延迟条件。在一个基于处理器设计的周期,指令解码流水线的流水线阶段被分析决定是否被延迟或是不执行线程特定清除来消除延迟条件。实质上,线程特定清除移除在指令解码流水线上阻挡其它线程的线程。这样解决了在共享同一硬件的多线程机器中发生的所谓死锁条件的问题。一个死锁条件的例子是,一个线程标识为0的指令被延迟,等待线程标识为1的指令执行而线程标识为0的指令又阻止线程标识为1的指令使用资源,例如跟踪高速缓冲存储器。如果整个流水线在这种死锁条件下被清除,将不能保证同一个条件不重现。线程特定清除只清除这些具有多线程共享一个硬件资源的必须被使能的流水线阶段。另外,有一个全部线程清除信号,通过有效的从流水线上移除所有有效指令来影响所有线程。
参考附图10,表示本发明中能被指令解码器执行的一个线程指定清除的时序图。波形1001,1002和1003在时间上彼此分开一个时钟周期。波形1001,1002和1003是描述在time1,time2和time3中的流水线阶段中的指令状态时序图。流水线阶段的状态被表示在每个波形周期的上面,并且和先前参考图8的讨论具有同样的含义。
附图10中,波形1001在流水线阶段中具有两个线程的指令T1和T0指令,如同标记1(T1)状态和标记0(T0)状态表示的。波形1001中,T0指令在流水线阶段PS2和PS4。Time1时间,T1指令在流水线阶段PS3和PS5。一个新指令410’,一个T1指令被输入到指令解码流水线中第一个流水线阶段PS1中。在波形1001中,在指令解码流水线上流水线阶段PS1-PS5中所有的指令在time1中都是有效的。假设一个T1线程特定清除被接收,T1指令,这些与标记T1表示的线程相关的指令在指令解码流水线上的流水线阶段中被无效。指令通过设置或是清除在映像流水线中适当的流水线阶段的指令有效位被无效。波形1002中,流水线阶段全部被计时,将指令从波形1001中的阶段移到相继的下一个流水线阶段。在流水线阶段PS2和PS4中就是保持T1指令的流水线阶段中的指令,现在都属于如X表示的无效状态。这能通过分析如附图7表示的方程式“对任何流水线阶段X的清除”来计算。
Clear(X)={Clock(X)AND[(ClearThread(ID0)AND(ThreadlD(X-1))=ID1))OR(ClearThread(ID1))AND(ThreadTD(X-1)=ID1))}OR
{NOT Clock(X)AND[(ClearThread(ID0))AND(ThreadID(X)=ID0))
OR(ClearThread(ID0)AND(ThreadID(x)=ID1))}
这个方程式有两项,一个Clock(X)项,另一个NOT Clock(X)项。作为假如时钟不被延迟的结果,两项中的Clock(X)项是可能引起清除的项。如果一个流水线阶段被延迟,相关的两个项中的一个NOT Clock(X)项将计算以决定是否发生一个清除条件。在这个方程式中,清除线程(ID0)是一个线程标识为0的线程特定清除。清除线程(ID1)是一个线程标识为1的线程特定清除。流水线阶段PS2被清除,因为波形1001中time1的流水线阶段PS1是T1指令并且一个T1线程特定清除被接收,所以在下一个时钟周期PS2阶段被清除,其指令无效为X。就是说清除线程(ID1)是T1线程特定清除,time1的PS1中指令标识是1,所以一个清除条件存在导致PS2在下一个时钟周期被清除。Time2的流水线阶段PS4的清除可以被同样的解释,参照在前的Time1的流水线阶段PS3中保持的数值。
波形1002中,流水线阶段PS3和PS4保持T0指令。因为一个T1线程特定清除发生,Time1的流水线阶段PS5中的指令,作为一个T1指令被清除,因此,在Time2中UOP调度程序517不调度任何微操作码。下一个时钟周期之后,波形1003产生。波形1003中,流水线阶段全部被计时,将指令从波形1002移到相继的下一个流水线阶段。一个新的与标记0(T0)相关的指令的线程,T0指令进入第一个流水线阶段PS1。一个被X表示的无效指令已经移动进入了流水线阶段PS3和PS5。T0指令被保持在流水线阶段PS2和PS4中,同时在Time3中一个T0指令被UOP调度程序517调度。这种方式,发生指令解码器中流水线阶段中线程特定清除。关于其它线程的指令能够保持在流水线阶段并被没有任何延迟的进一步解码。
机会的电源关闭
机会的电源关闭算法一方面停止电路的整个流水线阶段(每个流水线)的时钟,以便节省功率,此不同于仅仅一个功能块。另一方面,机会的电源关闭运算法则停止在电路上任何流水线阶段的时钟,保持指令中将被清除的线程(每个线程)以便保持功率的线程。另一方面,机会的电源关闭算法停止整个指令解码器和任何先前电路的时钟,如果指令解码器中没有有效的指令,或者在前电路向指令解码器提供指令(每个流水线)。时钟控制电路能够检测这些条件,来决定什么时候禁止时钟使能信号来关闭电路中一个或多个流水线阶段的时钟。因为电源关闭对于用户来说是透明的,不会有任何性能或功能的损害,运算是机会的。对用户来说,机会电源关闭运算带来得唯一的可见效果是电源的节省。
本发明中机会电源关闭运算使用指令有效流水线决定是否计时一个特殊的流水线阶段。如果紧接在一个流水线阶段前的有效指令将进入该阶段,那么接收有效指令的流水线阶段被计时。如果没有有效的指令等待,或直接在前的指令是无效的,接收无效指令的流水线阶段的时钟被关闭(就是说时钟被停止)以节省功率。同样的,通过检查映像流水线的每个流水线阶段中指令的有效性的信息,能够得知什么时间整个指令流水线的每个流水线阶段没有工作,时钟控制逻辑的信号是整体关闭指令解码流水线的时钟还是部分的关闭。通过以这种方式停止时钟,指令解码器的功耗被减少。
参考附图11A和11B,表示本发明中指令解码器执行的机会的电源关闭示例的时序图。波形1101,1102和1103是描述在time1,time2和time3中的流水线阶段的状态时序图,彼此在时间上分开一个时钟周期。波形1111,1112,1113,1114和1115是描述在time1,time2,time3,time4和time5各个中的流水线阶段的状态时序图,在时间上彼此分开的一个时钟周期。指令状态同在前的附图8中描述的指令状态有一致的意思。
在附图11A中,波形1101在流水线阶段上有具有两种线程的指令,如同标记1(T1)状态和标记0(T0)状态表示的。在波形1101中,T0指令,与线程标记0(T0)相关的线程的指令,在流水线阶段PS2和PS4中。T1指令,具有线程标记为1的线程的指令,在流水线阶段PS3和PS5中。一个新的指令410’,一个T1指令被输入流水线阶段PS1中。因为波形1101表示的在指令解码流水线上所有的指令在time中是有效的,所以每个流水线阶段的时钟运行产生下一个周期。现在假设T1线程具体的清除已经被接收,以便T1指令将要在下一个周期接收这些指令的流水线阶段上被无效。
另一个时钟周期产生之后,波形1102在time2形成。在波形1102中,所有流水线阶段都被从波形1101计时,以将指令移向相继的下一个流水线阶段。因为T1线程特定清除,本应当保持T1指令的流水线阶段PS2和PS4,现在保持了被无效状态X表示的无效指令。因为一个T1线程特定清除的发生,波形1101表示的流水线上的最后一个指令是T1指令,因此被清除,因此在time2中没有指令被UOP调度程序517调度。
为了使在指令解码器中的机会电源关闭运算法则起作用,一个或多个流水线阶段需要包含无效的指令。如果在直接在前的流水线阶段[Pipe(x-1)]的指令中包含一个无效指令,给定的流水线阶段[Pipe(x)]电源被关闭。附图7清楚地说明了对任何流水线阶段X而关闭电源的方程式。
Powerdown(X)=NOT Valid Instruction in Pipe(X-1)
一个给定的流水线阶段通过关闭时钟被关闭电源。在给定的流水线阶段随后有一个无效的指令的情况下,在下一个周期计时流水线阶段接收无效指令将多余的消耗功率。波形1102中,因为流水线阶段PS2和PS4各自有如标记X表示的无效指令,流水线阶段PS3和PS5在下一个周期停止各自的时钟。当然,如果一个延迟条件不存在,为了进行有效指令,紧接行时钟停止计时的段流水线阶段之后的流水线阶段[Pipe(x+1)]使时钟开始计时。波形1102中,流水线阶段PS4使时钟在下一个周期运行,缓冲器502B将在下一个周期接收一个调度输出。这些可以从附图7表示为任何流水线阶段X的时钟使能的方程式中看出。
Clock(X)=NOT Stall(X)AND NOT Powerdown(X)
有无效指令的流水线阶段,在有有效指令的给定流水线阶段之前的,有无效指令的流水线阶段被继续计时,直到一个有效指令包含在其中。
波形1102中,因为在这些流水线阶段存在如X状态表示的无效指令,流水线阶段PS2和PS4的计时将在下一个周期运行。以这种方式,指令解码器继续解码直到有效指令被解码为这些流水线阶段。因为他们保持如标记T0表示的有效指令,流水线阶段PS3和PS5关闭时钟。
又一个时钟周期之后,波形1103在time3中形成。波形1103中,因为在这些流水线阶段有一个如标记T0’状态表示的旧指令,流水线阶段PS3和PS5的时钟将运行产生下一周期,因为T0指令已经前进进入下一个流水线阶段。一个旧指令被一个或多个省字号表示,取决于它在同一流水线阶段中被保留多少个周期。旧指令和无效指令的相同点是能被重写或放弃。这与一个延迟的指令是不同的,延迟指令仍然有效并且不能被改写。以这种方式,指令解码器继续解码直到在流水线中解码了有效指令。波形1103中,因为保持了如标记T0表示的有效指令,流水线阶段PS2和PS4在下一个周期使其时钟停止计时。因为如波形1102所示流水线阶段PS5在前一个时钟周期保持了一个有效的T0指令,T0指令被UOP调度程序517调度。被输入到流水线阶段PS1中的指令410’在波形中是如X表示无效的。因此,第一流水线阶段PS1的时钟被停止以避免在下一个时钟周期读无效指令。
参考附图11B,表示机会电源关闭的第二示例的时序图。波形1111中流水线阶段的指令有两个线程,标记1(T1)状态和标记0(T0)状态。波形1111中,T0指令,与标记0(T0)相关的线程的指令在流水线阶段PS4中。T1指令,与标记1(T1)相关的线程指令在流水线阶段PS2,PS3和PS5中。一个新的指令410’,T1指令被输入到流水线阶段PS1中。因为所以的指令如波形1111 time1所示在指令解码流水线是有效的指令,每个流水线上的时钟运行产生下一个周期。现在假设一个T1线程特定清除已经被接收,以便T1指令在将要在下一个周期接收这些指令的流水线阶段上被无效。
又一个时钟周期之后,波形1112在time2中形成。波形1112中,流水线阶段全部被计时,将指令从波形1111中的阶段移到相继的下一个流水线阶段。因为T1线程特定清除,否则将保持T1指令的流水线阶段PS2,PS3和PS4,现在保持如无效状态X表示的无效指令。因为发生的T1线程特定清除,波形1111表示的流水线上最后一个指令,是一个T1指令,被清除,因此在time2中UOP调度程序517不调度任何操作码。波形1112中,因为流水线阶段PS2,PS3和PS4各自有如标记X表示的无效指令,流水线阶段PS2,PS3和PS4在下一个周期停止各自的时钟。流水线阶段PS2使自己的时钟运行,为了接收一个进入波形1112中第一流水线阶段的有效的T0指令。因为流水线阶段PS5的T0指令是有效的,缓冲器502B将在下一个周期接收一个调度输出。
又一个时钟周期之后,波形1113在time3中形成。波形1113中,因为在流水线阶段PS3有一个如标记X’状态表示的旧指令,其引起了在流水线阶段PS2的T0指令前进进入下一个流水线阶段,流水线阶段PS3的时钟将运行产生下一周期。波形1113中,流水线阶段PS2的时钟将运行产生下一周期,以接收新的目前从指令输入410’输入第一流水线阶段PS1的T0指令。因为在其之前没有有效指令,流水线阶段PS4和PS5的时钟保持停止。在流水线阶段PS4和PS5上的指令在下一周期分别老化为X’和T0’。
又一个时钟周期之后,波形1114在时间4形成。波形1114中,因为在流水线阶段PS4有一个如标记X”状态表示的旧指令,其引起了在流水线阶段PS3的T0指令前进进入下一个流水线阶段。波形1114中,流水线阶段PS2和PS3的时钟将运行产生下一周期,以接收来自于在前流水线阶段的新的经过从指令输入410’输入第一流水线阶段PS1的T0指令。因为在流水线阶段PS4之前没有有效指令,流水线阶段PS5时钟保持停止。在流水线阶段PS5上的指令在下一周期老化为T0”。
又一个时钟周期之后,波形1115在time5中形成。因为在流水线阶段PS5有一个如标记T0状态表示的旧指令,其引起了在流水线阶段PS4的T0指令前进进入下一个流水线阶段,流水线阶段PS5的时钟将运行产生下一周期。波形1115中,流水线阶段PS2,PS3和PS4的时钟将运行产生下一周期以接收来自于在前流水线阶段的新的经过从指令输入410’输入第一流水线阶段PS1的T0指令。在此实施例中,流水线阶段PS5能保持自身时钟以机会电源关闭的状态停止三个周期,流水线阶段PS4能保持自身时钟以机会电源关闭的状态停止两个周期,流水线阶段PS3能保持自身时钟以机会电源关闭的状态停止一个周期,机会电源关闭条件的其它情况,功率被或多或少的保存。
有效延迟和气泡挤压,线程特定清除和机会电源关闭的运算法则是有内在联系的。例如,使用线程特定清除信号清除一个指定的流水线阶段能引起给定流水线阶段的延迟被消除。另外,一个线程特定清除可以无效在某个流水线阶段上的指令以提供一个机会电源关闭条件。
本发明有许多比现有技术先进的地方。本发明一个先进之处是,在处理器前端的延迟很少发生。本发明另一个先进之处是,无效指令的“气泡”能从指令流中挤压出去。本发明另一个先进之处是,能够清除在指令解码流水线上的一个线程指令的同时使另一个指令线程完整。本发明另一个先进之处是,网络的解码带宽增加。本发明另一个先进之处是,指令解码流水线上的流水线阶段仅仅在需要前进一个指令时被计时,因此节省了功率。本发明另一个先进之处是,指令的多线程共享同一个指令解码器,以低的操作花费提高了每个线程的执行。
这些可效仿的实施例被描述并以相应附图表示,应当理解这些实施例仅仅被表示不局限于本发明的范围,本发明不限制在这里描述的具体的结构和安排,普通的本领域技术人员应理解各种其它修改可能发生。例如,本发明不限制在其应用仅在于Intel X86指令解码而是应用于任何多线程流水线解码器。更进一步,本发明可适合于支持多线程的微处理器中其它的功能部分或者模块。以便减少大量的硬件支持多线程,减少功耗,减少执行延迟的负面影响。另外,可能在硬件,固件或是结合装置上执行本发明或者其特征的其中一些,处理器的可读存储媒体提供所需软件,例如,磁性的,光的或是半导体存储器。

Claims (36)

1.一个微处理器,包括:
一个解码多线程指令的指令解码器,该指令解码器包括,
一个指令解码流水线,用于解码与每个线程相关的输入指令;和
一个与指令解码流水线并行操作的映像流水线,该映像流水线包括,
一个指令线程标识流水线,将在指令解码流水线中被解码的每个指令和一个线程标识联系起来,和
一个指令有效流水线,把在指令解码流水线中被解码的每个指令和一个有效指示符联系起来。
2.根据权利要求1所述的微处理器,其中所述的指令解码流水线和映像流水线在物理上被合成一条流水线,集成在一块微处理器集成电路上。
3.根据权利要求1所述的微处理器,其中所述的指令解码器包括,一个流水线控制器,与指令解码流水线和映像流水线耦合,该流水线控制器并行地控制每个指令解码流水线的流水线阶段和每个映像流水线的流水线阶段的计时。
4.根据权利要求3所述的微处理器,其中一个指定线程的清除指令被接收,流水线控制器使仅仅在指令解码流水线的每个延迟的流水线阶段的指令无效,上述指令解码流水线具有与指定线程的清除指令的线程标识相同的线程标识。
5.根据权利要求4所述的微处理器,其中所述的流水线控制器通过在指令有效的流水线中并行的流水线阶段设置或者清除有效的指示符来使每个流水线阶段的指令无效。
6.根据权利要求3所述的微处理器,其中一个指定线程的清除指令被接收,当每个被计时的流水线阶段之前的流水线阶段具有与指定线程的清除指令的线程标识相同的线程标识时,流水线控制器仅仅使被输入到该指令解码流水线的每个计时的流水线阶段的指令无效。
7.根据权利要求6所述的微处理器,其中,所述的流水线控制器通过在指令有效流水线中并行的流水线阶段设置或者清除有效的指示符来使每个流水线阶段的指令无效。
8.根据权利要求3所述的微处理器,其中,与一个线程标识相关的延迟被接收,流水线控制器决定与延迟相关的线程标识与指令解码流水线中最后一个流水线阶段的前一个流水线阶段的有效指令的线程标识匹配,流水线控制器通过在下一个周期停止对最后一个流水线阶段的前一个流水线阶段的计时,延迟最后一个流水线的前一个流水线阶段,得以保持包含在其中的有效的指令。
9.根据权利要求8所述的微处理器,所述的流水线控制器还决定一个有效的指令被包含在所述指令解码流水线中第一个流水线阶段而不是最后一个流水线阶段的前一个阶段,一个有效的指令被包含在紧接在第一个流水阶段之后的第二个流水线阶段,流水线控制器通过在下一个周期停止第一个流水线阶段的计时,延迟第一个流水线阶段以保持包含在其中的有效的指令。
10.根据权利要求9所述的微处理器,其中流水线控制器通过分析每个流水线阶段的指令有效流水线中的有效的指示符来决定一个指令的有效性。
11.根据权利要求3所述的微处理器,其中所述的流水线控制器还决定一个无效的指令被包含在直接在指令解码流水线中的第二个流水线阶段之前的第一个流水线阶段中,流水线控制器通过停止第二个流水线阶段的计时来关闭该第二个流水线阶段,直到一个有效指令被包含在第一个流水线阶段来保持功率。
12.一个多线程流水线指令解码器,包括:
一个指令解码流水线,用于解码与大量指令线程相关的指令;和
一个与指令解码流水线并行操作的映像流水线,该映像流水线包括:一个指令线程标识流水线,把每个流水线阶段的线程标识与在指令解码流水线中被解码的每个指令联系起来;和一个指令有效流水线,把每一个流水线阶段的有效指示符与在指令解码流水线中被解码的指令联系起来。
13.根据权利要求12所述的多线程流水线指令解码器,它还包括:
一个流水线控制器,与指令解码流水线和映像流水线耦合,流水线控制器并行控制指令解码流水线的每一个流水线阶段和映像流水线的每一个流水线阶段的计时。
14.根据权利要求13所述的多线程流水线指令解码器,其中所述的流水线控制器还通过在指令有效流水线的每个流水线阶段中设置有效的指示符来指示一个无效的指令,控制指令解码流水线的每一个流水线阶段中的指令的无效。
15.根据权利要求13所述的多线程流水线指令解码器,其中流水线控制器电源关闭逻辑,通过分析每个流水线阶段的有效指示符来决定下一个流水线阶段是否能够被关闭,和决定每个流水线阶段是否应该被延迟,该流水线控制器还包括时钟控制逻辑电路,决定指令解码流水线的每一个流水线阶段和映像流水线的一个时钟信号是否能够被停止,以在一个延迟中保持功率或者保持数据。
16.根据权利要求15所述的多线程流水线指令解码器,其中通过分析每个流水线阶段的有效指示符来决定下一个流水线阶段是否能被关闭的流水线控制器的电源关闭逻辑包括:
一个反相器,在每个流水线阶段反相有效的指示符来决定下一个流水线阶段是否能够在下一个时钟周期被关闭。
17.根据权利要求15所述的多线程流水线指令解码器,其中通过分析每个流水线阶段的有效指示符来决定每个流水线阶段是否应该被延迟的流水线控制器的电源关闭逻辑包括:
一个对最后一个流水线阶段的前一个流水线阶段的延迟条件的决定,
一个异或门,用于将最后一个流水线阶段的前一个流水线阶段的线程标识与延迟的线程标识进行异或运算,决定上述两者是否匹配,和
第一与门,用于将最后一个流水线阶段的前一阶段的有效指示符与来自异或门的输出进行与运算,决定在最后一个流水线阶段的前一个流水线阶段之前的流水线阶段是否应该被延迟。
18.根据权利要求17所述的多线程流水线指令解码器,其中通过分析每个流水线阶段的有效指示符来决定每个流水线阶段是否应该被延迟的流水线控制器的电源关闭逻辑包括:
一个对除了最后一个流水线阶段的前一个流水线阶段之外的任何其它流水线阶段的延迟条件的决定,
第二与门,用于将已经做过决定的流水线阶段的有效指示符与下一个流水线阶段的有效指示符进行与运算,和
第三与门,用于将第二与门的输出与第一与门的输出进行与运算,决定除了最后一个流水线阶段的前一个流水线阶段之外的给定流水线阶段是否应该被延迟。
19.一个解码多线程指令的方法,包括:
将第一个线程指令的一个指令、第一个指令线程标识和第一个指令的有效指示符输入到并行的一个流水线;
解码第一个线程指令中的所述指令;
在解码第一个线程指令中的所述指令期间,保持在第一个线程的指令、第一个指令线程标识和第一个指令的有效指示符之间的并行关系;
将第二个线程指令的一个指令、第二个指令线程标识和第二个指令的有效指示符输入到并行的一个流水线;
解码第二个线程指令中的所述指令;和
在解码第二个线程指令中的所述指令期间,保持在第二个线程的指令、第二个指令线程标识与第二个指令的有效指示符之间的并行关系。
20.根据权利要求19所述的方法,进一步包括:
当一个对第一个指令线程的指定线程的清除指令被接收时,仅仅使在流水线中有第一个指令线程标识的那些指令无效。
21.根据权利要求20所述的方法,通过清除在流水线中的第一个线程指令中的每一个指令的第一个指令有效指示符来使该指令无效。
22.根据权利要求19所述的方法,进一步包括:
当包含在最后一个流水线阶段的前一个流水线阶段中的指令有效指示符指示一个有效的指令,并且一个指定线程的延迟的线程标识与包含在最后一个流水线阶段的前一个流水线阶段中的指令线程标识匹配时,禁止在流水线中的最后一个流水线阶段的前一个流水线阶段的时钟信号。
23.根据权利要求19所述的方法,进一步包括:
当包含在流水线阶段中的指令的指令有效指示符指示一个有效的指令,并且下一个流水线阶段的指令的指令有效指示符指示一个有效的指令和最后一个流水线阶段的前一个流水线阶段被延迟时,禁止流水线中除了最后一个流水线阶段的前一个流水线阶段之外的流水线阶段的时钟信号。
24.根据权利要求19所述的方法,进一步包括:
当流水线阶段没有被延迟且流水线阶段没有被关闭时,启动流水线阶段的时钟信号。
25.根据权利要求19所述的方法,进一步包括:
当一个在前的流水线阶段包含一个被指令的有效指示符指示是无效指令时,禁止一个流水线阶段的时钟信号,用于保持功率。
26.一个计算机,包括:
一个内存,
一个微处理器,该微处理器包括:
用于解码多线程指令的指令解码器,该指令解码器包括:
一个用于解码与每个线程相关的每个输入指令的指令解码流水线;和
一个与指令解码流水线并行操作的映像流水线,该映像流水线包括:
一个指令线程标识流水线,把流水线线程标识与在指令解码流水线中被解码的每个指令联系起来,
一个指令有效流水线,把有效指示符与在指令解码流水线中被解码的每个指令联系起来。
27.一种在一个指令解码器中消除无效指令的方法,包括:
从一条流水线中接收指定线程的清除指令,该指令指示将要从流水线中被清除的指令的线程标识ID;
比较该流水线的每一个流水线阶段中的每个指令的线程标识,决定上述标识是否和将要从流水线中被清除的指令的线程标识匹配;
使具有与将要从流水线中被清除的指令的线程标识匹配的线程标识的每个指令的一个有效位无效。
28.根据权利要求27所述的方法,进一步包括:
计时流水线的每个流水线阶段,继续解码被有效位指示的流水线中的有效指令。
29.一个微处理器,包括:
一个用于解码多线程指令的指令解码器,该指令解码器包括:
指令解码流水线和映像流水线,
该指令解码流水线解码和每个线程相关的每个输入指令,和
映像流水线保持一个线程标识和一个与指令解码流水线中被解码的每个指令并行的有效指示符流水线。
30.根据权利要求29的微处理器,其中,指令解码流水线包括在一块微处理器集成电路上的一系列寄存器。
31.根据权利要求29的微处理器,其中,指令解码器进一步包括,一个和指令解码流水线以及映像流水线耦合的流水线控制器,该流水线控制器控制指令解码流水线和映像流水线的每个流水线阶段的计时。
32.根据权利要求31的微处理器,其中,指定线程的清除指令被接收,流水线控制器仅仅使在指令解码流水线的每个延迟的流水线阶段中的那些指令无效,所述指令解码流水线具有与指定线程的清除指令的线程标识相同的线程标识。
33.根据权利要求31的微处理器,其中指定线程的清除指令被接收,当每个被计时的流水线阶段的前一个阶段具有与指定线程的清除指令的线程标识相同的线程标识时,流水线控制器仅仅使被输入到指令解码流水线的每个计时的所述流水线阶段中的那些指令无效。
34.根据权利要求31的微处理器,其中与一个线程标识相关的延迟被接收,流水线控制器决定与该延迟相关的线程标识与指令解码流水线中最后一个流水线阶段的前一个流水线阶段中的有效指令的线程标识匹配,流水线控制器通过在下一个周期停止对最后一个流水线阶段的前一个流水线阶段的计时,延迟最后一个流水线阶段的前一个流水线阶段,以保持包含在其中的有效的指令。
35.根据权利要求31的微处理器,其中流水线控制器还决定一个有效的指令被包含在指令解码流水线的第一个流水线阶段中,而不是最后一个流水线阶段的前一个流水线阶段,一个有效的指令被包含在紧接在第一个流水阶段之后的第二个流水线阶段中,流水线控制器通过下一个周期停止对第一个流水线阶段的计时,延迟第一个流水线阶段以保持包含在其中的有效的指令。
36.根据权利要求31的微处理器,其中流水线控制器还决定一个无效指令被包含在直接在指令解码流水线中的第二个流水线阶段之前的第一个流水线阶段中,流水线控制器通过停止对第二个流水线阶段的计时来关闭该第二个流水线阶段,直到一个有效指令被包含在第一个流水线阶段中来保持功率。
CNB008192596A 1999-12-30 2000-11-06 多线程流水线指令解码器的方法和设备 Expired - Fee Related CN1222868C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/475,105 US6609193B1 (en) 1999-12-30 1999-12-30 Method and apparatus for multi-thread pipelined instruction decoder
US09/475,105 1999-12-30

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100926862A Division CN100361073C (zh) 1999-12-30 2000-11-06 多线程流水线指令解码器的方法和设备

Publications (2)

Publication Number Publication Date
CN1437725A CN1437725A (zh) 2003-08-20
CN1222868C true CN1222868C (zh) 2005-10-12

Family

ID=23886242

Family Applications (2)

Application Number Title Priority Date Filing Date
CNB2005100926862A Expired - Fee Related CN100361073C (zh) 1999-12-30 2000-11-06 多线程流水线指令解码器的方法和设备
CNB008192596A Expired - Fee Related CN1222868C (zh) 1999-12-30 2000-11-06 多线程流水线指令解码器的方法和设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CNB2005100926862A Expired - Fee Related CN100361073C (zh) 1999-12-30 2000-11-06 多线程流水线指令解码器的方法和设备

Country Status (8)

Country Link
US (2) US6609193B1 (zh)
CN (2) CN100361073C (zh)
AU (1) AU4302801A (zh)
DE (1) DE10085375B4 (zh)
GB (1) GB2374177B (zh)
HK (1) HK1046970B (zh)
TW (1) TW497072B (zh)
WO (1) WO2001050249A2 (zh)

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2728559B1 (fr) * 1994-12-23 1997-01-31 Saint Gobain Vitrage Substrats en verre revetus d'un empilement de couches minces a proprietes de reflexion dans l'infrarouge et/ou dans le domaine du rayonnement solaire
US6845445B2 (en) * 2000-05-12 2005-01-18 Pts Corporation Methods and apparatus for power control in a scalable array of processor elements
US6754808B1 (en) * 2000-09-29 2004-06-22 Intel Corporation Valid bit generation and tracking in a pipelined processor
JP3607209B2 (ja) * 2001-03-08 2005-01-05 松下電器産業株式会社 クロック制御方法及び当該クロック制御方法を用いた情報処理装置
WO2002077799A1 (en) * 2001-03-22 2002-10-03 Infineon Technologies Ag Program-controlled unit employing a stop instruction
US20030120896A1 (en) * 2001-06-29 2003-06-26 Jason Gosior System on chip architecture
JP3564445B2 (ja) * 2001-09-20 2004-09-08 松下電器産業株式会社 プロセッサ、コンパイル装置及びコンパイル方法
US20040025012A1 (en) * 2002-07-30 2004-02-05 Burks David Patrick System for processing coded content and associated decoding instructions on a removable storage medium
US20060149927A1 (en) * 2002-11-26 2006-07-06 Eran Dagan Processor capable of multi-threaded execution of a plurality of instruction-sets
US7496921B2 (en) * 2003-08-29 2009-02-24 Intel Corporation Processing block with integrated light weight multi-threading support
US7263599B2 (en) * 2004-02-06 2007-08-28 Infineon Technologies Thread ID in a multithreaded processor
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US7543132B1 (en) 2004-06-30 2009-06-02 Sun Microsystems, Inc. Optimizing hardware TLB reload performance in a highly-threaded processor with multiple page sizes
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US7366829B1 (en) 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US20060009265A1 (en) * 2004-06-30 2006-01-12 Clapper Edward O Communication blackout feature
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US7519796B1 (en) 2004-06-30 2009-04-14 Sun Microsystems, Inc. Efficient utilization of a store buffer using counters
US7523330B2 (en) * 2004-06-30 2009-04-21 Sun Microsystems, Inc. Thread-based clock enabling in a multi-threaded processor
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US8756605B2 (en) * 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US7430643B2 (en) * 2004-12-30 2008-09-30 Sun Microsystems, Inc. Multiple contexts for efficient use of translation lookaside buffer
EP1839129A2 (en) 2005-01-13 2007-10-03 Nxp B.V. Processor and its instruction issue method
US8271993B2 (en) * 2005-03-04 2012-09-18 Hewlett-Packard Development Company, L.P. Method and apparatus for facilitating pipeline throughput
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
US20060212853A1 (en) * 2005-03-18 2006-09-21 Marvell World Trade Ltd. Real-time control apparatus having a multi-thread processor
US8051247B1 (en) 2005-09-28 2011-11-01 Oracle America, Inc. Trace based deallocation of entries in a versioning cache circuit
US7877630B1 (en) 2005-09-28 2011-01-25 Oracle America, Inc. Trace based rollback of a speculatively updated cache
US7937564B1 (en) 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US7953933B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Instruction cache, decoder circuit, basic block cache circuit and multi-block cache circuit
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
US8019944B1 (en) 2005-09-28 2011-09-13 Oracle America, Inc. Checking for a memory ordering violation after a speculative cache write
US7949854B1 (en) 2005-09-28 2011-05-24 Oracle America, Inc. Trace unit with a trace builder
US7546420B1 (en) 2005-09-28 2009-06-09 Sun Microsystems, Inc. Efficient trace cache management during self-modifying code processing
US8015359B1 (en) 2005-09-28 2011-09-06 Oracle America, Inc. Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit
US7987342B1 (en) 2005-09-28 2011-07-26 Oracle America, Inc. Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer
US7953961B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder
US8499293B1 (en) 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
US7966479B1 (en) 2005-09-28 2011-06-21 Oracle America, Inc. Concurrent vs. low power branch prediction
US8037285B1 (en) 2005-09-28 2011-10-11 Oracle America, Inc. Trace unit
US7814298B1 (en) 2005-09-28 2010-10-12 Oracle America, Inc. Promoting and appending traces in an instruction processing circuit based upon a bias value
US8370576B1 (en) 2005-09-28 2013-02-05 Oracle America, Inc. Cache rollback acceleration via a bank based versioning cache ciruit
US7783863B1 (en) 2005-09-28 2010-08-24 Oracle America, Inc. Graceful degradation in a trace-based processor
US7849292B1 (en) 2005-09-28 2010-12-07 Oracle America, Inc. Flag optimization of a trace
US8024522B1 (en) 2005-09-28 2011-09-20 Oracle America, Inc. Memory ordering queue/versioning cache circuit
US8032710B1 (en) 2005-09-28 2011-10-04 Oracle America, Inc. System and method for ensuring coherency in trace execution
US20070101102A1 (en) * 2005-10-27 2007-05-03 Dierks Herman D Jr Selectively pausing a software thread
US7797517B1 (en) 2005-11-18 2010-09-14 Oracle America, Inc. Trace optimization via fusing operations of a target architecture operation set
US7444499B2 (en) * 2006-03-28 2008-10-28 Sun Microsystems, Inc. Method and system for trace generation using memory index hashing
US8010745B1 (en) 2006-09-27 2011-08-30 Oracle America, Inc. Rolling back a speculative update of a non-modifiable cache line
US8370609B1 (en) 2006-09-27 2013-02-05 Oracle America, Inc. Data cache rollbacks for failed speculative traces with memory operations
US8402253B2 (en) 2006-09-29 2013-03-19 Intel Corporation Managing multiple threads in a single pipeline
US7975272B2 (en) * 2006-12-30 2011-07-05 Intel Corporation Thread queuing method and apparatus
EP2159701A4 (en) * 2007-06-19 2011-08-10 Fujitsu Ltd CACHE MEMORY CONTROL DEVICE AND CONTROL METHOD
JP5168277B2 (ja) * 2007-06-20 2013-03-21 富士通株式会社 命令制御装置及び制御方法
US20090044159A1 (en) * 2007-08-08 2009-02-12 Mplicity Ltd. False path handling
US9035957B1 (en) * 2007-08-15 2015-05-19 Nvidia Corporation Pipeline debug statistics system and method
US8868888B2 (en) * 2007-09-06 2014-10-21 Qualcomm Incorporated System and method of executing instructions in a multi-stage data processing pipeline
CN101425053B (zh) * 2007-11-02 2010-08-18 北京中电华大电子设计有限责任公司 一种cpu周期寄存器的实现方法
US8543796B2 (en) 2008-11-05 2013-09-24 Intel Corporation Optimizing performance of instructions based on sequence detection or information associated with the instructions
US9710277B2 (en) * 2010-09-24 2017-07-18 Intel Corporation Processor power management based on class and content of instructions
US9436475B2 (en) * 2012-11-05 2016-09-06 Nvidia Corporation System and method for executing sequential code using a group of threads and single-instruction, multiple-thread processor incorporating the same
US9417880B2 (en) * 2013-03-15 2016-08-16 Intel Corporation Instruction for performing an overload check
CN105263023B (zh) * 2015-10-26 2018-08-03 西安电子科技大学 基于高速解码平台的网络码流实时接收方法
CN105654383B (zh) * 2016-01-07 2019-12-10 中国科学院信息工程研究所 基于流水线架构的低时延fast行情解码装置和方法
US10325341B2 (en) 2017-04-21 2019-06-18 Intel Corporation Handling pipeline submissions across many compute units
US10269088B2 (en) * 2017-04-21 2019-04-23 Intel Corporation Dynamic thread execution arbitration
EP3818439A4 (en) 2018-07-05 2022-04-27 Mythic, Inc. SYSTEMS AND METHODS FOR IMPLEMENTING A DATA PROCESSING COMPUTER ARCHITECTURE
KR20200088701A (ko) * 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 커맨드 생성 방법 및 이를 이용한 반도체장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5357617A (en) * 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
US5983339A (en) 1995-08-21 1999-11-09 International Business Machines Corporation Power down system and method for pipelined logic functions
US5778246A (en) * 1995-12-27 1998-07-07 Intel Corporation Method and apparatus for efficient propagation of attribute bits in an instruction decode pipeline
US6026476A (en) 1996-03-19 2000-02-15 Intel Corporation Fast fully associative translation lookaside buffer
US5890008A (en) 1997-06-25 1999-03-30 Sun Microsystems, Inc. Method for dynamically reconfiguring a processor
US5913049A (en) 1997-07-31 1999-06-15 Texas Instruments Incorporated Multi-stream complex instruction set microprocessor
US6385719B1 (en) * 1999-06-30 2002-05-07 International Business Machines Corporation Method and apparatus for synchronizing parallel pipelines in a superscalar microprocessor
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6594755B1 (en) * 2000-01-04 2003-07-15 National Semiconductor Corporation System and method for interleaved execution of multiple independent threads
US6754808B1 (en) * 2000-09-29 2004-06-22 Intel Corporation Valid bit generation and tracking in a pipelined processor

Also Published As

Publication number Publication date
HK1046970A1 (en) 2003-01-30
DE10085375B4 (de) 2007-01-25
WO2001050249A2 (en) 2001-07-12
HK1046970B (zh) 2004-12-31
US20040107336A1 (en) 2004-06-03
WO2001050249A9 (en) 2002-08-01
CN1437725A (zh) 2003-08-20
GB0214930D0 (en) 2002-08-07
WO2001050249A3 (en) 2002-05-02
TW497072B (en) 2002-08-01
US6609193B1 (en) 2003-08-19
CN1725176A (zh) 2006-01-25
CN100361073C (zh) 2008-01-09
AU4302801A (en) 2001-07-16
US6931516B2 (en) 2005-08-16
GB2374177A (en) 2002-10-09
DE10085375T1 (de) 2002-12-05
GB2374177B (en) 2004-07-07

Similar Documents

Publication Publication Date Title
CN1222868C (zh) 多线程流水线指令解码器的方法和设备
KR101600152B1 (ko) 이기종 멀티-코어 시스템에 대한 동적 코어 선택
JP3548132B2 (ja) マルチスレッド・プロセッサ内でのパイプライン・ステージのフラッシュ方法および装置
CN1296827C (zh) 一种使用数据地址增加组相关存储器的访问速度的方法
CN1147794C (zh) 具有静态转移预测支持的去耦取指令-执行引擎
US6430674B1 (en) Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time
CN1188932A (zh) 多线程处理器中指令和关联读取请求的后台完成
US20050289324A1 (en) Trace cache bypassing
CN1708745A (zh) 减少多线程处理器中寄存器文件端口的方法和装置
CN1332407A (zh) 用以执行多重指令组的数据处理装置
CN101414252B (zh) 数据处理装置
EP0779577A2 (en) Micoprocessor pipe control and register translation
CN1354852A (zh) 基于跟踪的指令高速缓冲存储
CN1601476A (zh) 用于smt处理器上的cpi调度的系统和方法
JPH07334364A (ja) スーパースカラマイクロプロセッサおよびropを処理する方法
JP2005302025A (ja) 複数の未解決命令を追跡するための方法、完了テーブルおよびプロセッサ
Reinman et al. Optimizations enabled by a decoupled front-end architecture
CN1200342C (zh) 指令变换装置和变换方法
CN1142485C (zh) 流水线控制相关延迟消除方法
CN1525309A (zh) 指令转回处理器系统、指令转回方法和指令转回程序
CN1266592C (zh) 依据确定延迟的动态vliw指令调度方法
US20060288193A1 (en) Register-collecting mechanism for multi-threaded processors and method using the same
CN208580395U (zh) 一种处理器流水线结构
US20120144393A1 (en) Multi-issue unified integer scheduler
CN1144124C (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: 20051012

Termination date: 20131106