CN1725176A - 多线程流水线指令解码器的方法和设备 - Google Patents
多线程流水线指令解码器的方法和设备 Download PDFInfo
- Publication number
- CN1725176A CN1725176A CNA2005100926862A CN200510092686A CN1725176A CN 1725176 A CN1725176 A CN 1725176A CN A2005100926862 A CNA2005100926862 A CN A2005100926862A CN 200510092686 A CN200510092686 A CN 200510092686A CN 1725176 A CN1725176 A CN 1725176A
- Authority
- CN
- China
- Prior art keywords
- instruction
- flow line
- line stage
- streamline
- stream waterline
- 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
- 238000000034 method Methods 0.000 title claims description 29
- 230000003111 delayed effect Effects 0.000 claims description 19
- 230000002596 correlated effect Effects 0.000 claims 1
- 230000000875 corresponding effect Effects 0.000 claims 1
- 230000003116 impacting effect Effects 0.000 abstract 2
- 230000014509 gene expression Effects 0.000 description 19
- 230000006870 function Effects 0.000 description 17
- 230000008569 process Effects 0.000 description 15
- 239000000872 buffer Substances 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000000605 extraction Methods 0.000 description 5
- 239000004615 ingredient Substances 0.000 description 4
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 230000032683 aging Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 238000012152 algorithmic method Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000036449 good health Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual 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 or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
使用多线程传输的指令解码器计时、清除和延迟多线程机器中解码流水线的指令,可以获得最佳的性能和最小的功耗。一个映像流水线映像保持线程标识的指令解码流水线和指令解码器每个流水线阶段有效指令比特。线程标识和有效的比特用于控制对指令解码器中每个流水线阶段的计时、清除和延迟。一个线程指令能够被清除而不与在解码流水线的其它线程指令发生冲突,在一些情况下,一个线程的指令能够被延迟而不与在解码流水线的其它线程指令发生冲突。本发明中,仅仅当有效指令需要前进以便保持功率和最小化延迟时计时流水线阶段。
Description
技术领域
本发明一般涉及计算机处理器的指令解码,具体涉及微处理器流水线指令解码器。
背景技术
基本的指令解码器和指令解码技术应用在中央处理器和微处理器中已经是众所周知的。随着设计的进步,指令解码器变得更为复杂,不仅包括顺序处理指令的流水线寄存器,还具备缓冲器,暂时存储先被解码的指令,同时使得其它指令继续被处理。但是,缓冲器容量受到限制并且能够被填满,因此更多的指令不能被存进去。在现有技术中,当一个缓冲器装满后,整个指令解码流水线将被延迟。在微处理器中,延迟也可以因为其它原因发生,如当一个子系统不能够处理在前的子系统提供的大量数据时,这样数据不会丢失。实质上,当在指令解码流水线上不能解码更多的指令时,一个指令解码流水线被延迟。
现有技术的处理器中,如果一个指令解码器流水线上的指令失效或者无效时,就像出现在超高速缓冲存储器中一样的问题,指令需要被清除。清除实际上是使指令无效,以便他们能够被有效的指令覆盖或者被忽视。现有技术中的处理器中,全部指令包括有效指令在指令解码流水线上以整体被清除(也就是被无效)。在这种情况下,被清除的有效指令必须重新输入到指令解码流水线的开始部分,重新开始解码处理。当在现有技术的处理器流水线中中出现无效或失效时,象这样的整体的清除易于延迟执行处理。
减少处理器功率消耗是一个主要的考虑因素。在现有技术中为了节省功率,关闭运行单元中的同步电路的全部功能块的时钟。就是说,这些时钟信号在全部功能块中被设置成一个稳定的状态。为了完成上述操作,在现有技术中使用电源关闭控制逻辑决定什么时候整个功能块是空闲的并且能够关闭时钟。因为关闭同步电路的时钟,包括时钟信号在内的全部信号都不会改变状态。在这种情况下,晶体管不必对信号线上的相关电容充电和放电,这样就节省了功率。然而,因为整个功能块中的时钟都被关闭,现有技术中的处理器必须等待直到这些功能块的所有功能被完成。这使得现有技术的处理器几乎不可能关闭功能块的时钟,整个期间功率很少被节省。
克服现有技术中处理器的这些和其他一些限制是被希望的。
发明概述
本发明包括如同权利要求描述的方法,设备和系统。
本发明一个实施例中简要的说明,微处理器包括一个指令解码器,解码指令多线程。指令解码器包括一个指令解码流水线。指令解码流水线解码每个与每个线程相关的输入指令。指令解码流水线还保存一个线程指示和一个与在指令解码流水线上被解码的每个指令平行的有效指示。
在这里,其它的具体实施例也被表示,描述和要求。
幅图说明
附图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-LO。寄存器R1-RN可以由D型触发器或是有合适时钟信号的透明锁存器组成。逻辑阶段L1-LO对操作码进行解码和必须的指令处理,形成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’的详细框图。优选实施例中,一组指令或者操作码通常是Inte1 X86型的指令,这些指令与被高级Inte1微处理器支持的与其它具体的指令或者操作码相关的软件相兼容。优选实施例中,指令或者操作码是Inte1 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输出完整的Intel X86指令。被缓冲器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 ValidInstruction in Pipe(X+1)AND StallNLP
因为流水线阶段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)项是可能引起清除的项。如果一个流水线阶段被延迟,相关的两个项中的一个NOTClock(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 (22)
1.一种用于多线程处理器的流水线指令解码器,该流水线指令解码器包括:
指令解码流水线,用于解码与多个指令线程相关的指令,该指令解码流水线具有预定数目的流水线阶段;
与指令解码流水线并行的有效位流水线,该有效位流水线具有与指令解码流水线的预定数目的流水线阶段并行的相同预定数目的流水线阶段,把在每一流水线阶段处的有效指示符与在指令解码流水线中被解码的每个指令关联;和
与指令解码流水线和有效位流水线并行的线程标识流水线,该线程标识流水线具有与指令解码流水线和有效位流水线的预定数目的流水线阶段并行的相同预定数目的流水线阶段,把在每一流水线阶段处的有效指示符与在指令解码流水线中被解码的每个指令关联。
2.根据权利要求1所述的流水线指令解码器还包括:
耦合到指令解码流水线、有效位流水线和线程标识流水线的流水线控制器,该流水线控制器用来独立地控制指令解码流水线、有效位流水线和线程标识流水线的每个流水线阶段的计时。
3.根据权利要求2所述的流水线指令解码器,其中流水线控制器包括用于每一流水线阶段的清除逻辑,该清除逻辑通过在有效位流水线的相应流水线阶段中设置有效位,以指示无效指令,来控制指令解码流水线的每一流水线阶段的指令的无效。
4.根据权利要求2所述的流水线指令解码器,其中流水线控制器包括:
电源关闭逻辑,用来分析每一流水线阶段的有效指示符,以决定下一流水线阶段是否要被关闭,以及决定流水线阶段是否要被延迟;和
时钟控制逻辑,用来决定指令解码流水线、有效位流水线和线程标识流水线的流水线阶段的相应时钟信号是否要被停止,以在一个延迟中保持功率或保持数据。
5.根据权利要求4所述的流水线指令解码器,其中流水线控制器的电源关闭逻辑用来分析每一流水线阶段的有效位,以决定是否应该延迟任何流水线阶段,该电源关闭逻辑包括
异或(XOR)门,用于将最后一个流水线阶段的前一个流水线阶段的线程标识与延迟的线程标识进行异或运算,以决定上述两者是否匹配,和
第一与门,用于将最后一个流水线阶段的前一个流水线阶段的有效位与异或门的输出进行与运算,以便决定在最后一个流水线阶段的前一个流水线阶段之前的流水线阶段是否应该被延迟。
6.根据权利要求5所述的流水线指令解码器,其中电源关闭逻辑还包括
第二与门,用于将已经做过决定的流水线阶段的有效指示符与下一个流水线阶段的有效指示符进行与运算,和
第三与门,用于将第二与门的输出与第一与门的输出进行与运算,以便决定除了最后一个流水线阶段的前一个流水线阶段之外的流水线阶段是否应该被延迟。
7.根据权利要求2所述的流水线指令解码器,其中
流水线控制器用来通过对具有无效指令的流水线阶段进行连续计时,一直到接收到有效指令并重写无效指令来挤出在指令解码流水线中的无效指令的气泡。
8.根据权利要求2所述的流水线指令解码器,其中
流水线控制器用来通过在流水线指令解码器内没有有效指令时,停止流水线指令解码器的计时来保持功率。
9.根据权利要求2所述的流水线指令解码器,其中
流水线控制器用来通过在与流水线阶段相关的线程标识指示清除的线程的指令时,停止流水线阶段中电路的计时来保持功率。
10.根据权利要求2所述的流水线指令解码器,其中
流水线控制器包括用来保持功率的电源关闭逻辑。
11.根据权利要求2所述的流水线指令解码器,其中
流水线控制器用来响应于清除信号,而使与线程标识相关的指令解码流水线中的整个线程的指令无效。
12.根据权利要求3所述的流水线指令解码器,其中
流水线控制器的每一流水线阶段的清除逻辑,响应于清除信号而使与线程标识相关的指令解码流水线中的整个线程的指令无效。
13.一种装置包括:
指令解码流水线,用于解码与多个指令线程相关的指令,该指令解码流水线具有预定数目的流水线阶段;
与指令解码流水线并行的有效位流水线,该有效位流水线具有与指令解码流水线的预定数目的流水线阶段并行的相同预定数目的流水线阶段,把在每一流水线阶段处的有效指示符与在指令解码流水线中被解码的每个指令相关;和
与指令解码流水线和有效位流水线并行的线程标识流水线,该线程标识流水线具有与指令解码流水线和有效位流水线的预定数目的流水线阶段并行的相同预定数目的流水线阶段,把在每一流水线阶段处的线程标识与在指令解码流水线中被解码的每个指令关联;和
耦合到指令解码流水线、有效位流水线和线程标识流水线的流水线控制器,该流水线控制器用来通过对具有无效指令的流水线阶段进行连续计时,一直到接收到有效指令并重写无效指令,来挤出在指令解码流水线中的无效指令的气泡。
14.根据权利要求13所述的装置,其中
流水线控制器用来通过在指令解码流水线内没有有效指令时停止指令解码流水线、有效位流水线和线程标识流水线中的每一个的计时来保持功率。
15.根据权利要求13所述的装置,其中
流水线控制器用来通过在与流水线阶段相关的线程标识指示清除的线程的指令时,停止流水线阶段中电路的计时来保持功率。
16.根据权利要求13所述的装置,其中
流水线控制器用来响应于清除信号,而使与线程标识相关的指令解码流水线中的整个线程的指令无效。
17.一种系统包括:
存储器;和
耦合到存储器的微处理器,该微处理器具有指令解码器,该指令解码器包括
指令解码流水线,用于解码与多个指令线程相关的指令,该指令解码流水线具有预定数目的流水线阶段;
与指令解码流水线并行的有效位流水线,该有效位流水线具有与指令解码流水线的预定数目的流水线阶段并行的相同预定数目的流水线阶段,把在每一流水线阶段处的有效指示符与在指令解码流水线中被解码的每个指令相关;和
与指令解码流水线和有效位流水线并行的线程标识流水线,该线程标识流水线具有与指令解码流水线和有效位流水线的预定数目的流水线阶段并行的相同预定数目的流水线阶段,把在每一流水线阶段处的线程标识与指令解码流水线中被解码的每个指令相关。
18.根据权利要求17所述的系统,其中
指令解码器还包括
耦合到指令解码流水线、有效位流水线和线程标识流水线的流水线控制器,该流水线控制器用来控制指令解码流水线、有效位流水线和线程标识流水线的每个流水线阶段的计时。
19.根据权利要求18所述的系统,其中
流水线控制器用来通过对具有无效指令的流水线阶段进行连续计时,一直到接收到有效指令并改写无效指令,来挤出在指令解码流水线中的无效指令的气泡。
20.根据权利要求18所述的系统,其中
流水线控制器用来通过在指令解码器内没有有效指令时,停止指令解码器的每个流水线阶段的计时来保持功率。
21.根据权利要求18所述的系统,其中
流水线控制器用来通过在与流水线阶段相关的线程标识指示清除的线程的指令时,停止流水线阶段中电路的计时来保持功率。
22.根据权利要求18所述的系统,其中
流水线控制器用来响应于清除信号,而使与线程标识相关的指令解码流水线中的整个线程的指令无效。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/475105 | 1999-12-30 | ||
US09/475,105 US6609193B1 (en) | 1999-12-30 | 1999-12-30 | Method and apparatus for multi-thread pipelined instruction decoder |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008192596A Division CN1222868C (zh) | 1999-12-30 | 2000-11-06 | 多线程流水线指令解码器的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1725176A true CN1725176A (zh) | 2006-01-25 |
CN100361073C CN100361073C (zh) | 2008-01-09 |
Family
ID=23886242
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008192596A Expired - Fee Related CN1222868C (zh) | 1999-12-30 | 2000-11-06 | 多线程流水线指令解码器的方法和设备 |
CNB2005100926862A Expired - Fee Related CN100361073C (zh) | 1999-12-30 | 2000-11-06 | 多线程流水线指令解码器的方法和设备 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008192596A Expired - Fee Related CN1222868C (zh) | 1999-12-30 | 2000-11-06 | 多线程流水线指令解码器的方法和设备 |
Country Status (8)
Country | Link |
---|---|
US (2) | US6609193B1 (zh) |
CN (2) | CN1222868C (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) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101425053B (zh) * | 2007-11-02 | 2010-08-18 | 北京中电华大电子设计有限责任公司 | 一种cpu周期寄存器的实现方法 |
TWI494853B (zh) * | 2012-11-05 | 2015-08-01 | Nvidia Corp | 使用一群組的執行緒執行循序碼的系統及方法和應用其之單一指令多執行緒處理器 |
CN111435601A (zh) * | 2019-01-15 | 2020-07-21 | 爱思开海力士有限公司 | 命令生成方法及与命令生成方法有关的半导体器件 |
Families Citing this family (67)
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 |
US7519796B1 (en) | 2004-06-30 | 2009-04-14 | Sun Microsystems, Inc. | Efficient utilization of a store buffer using counters |
US7571284B1 (en) | 2004-06-30 | 2009-08-04 | Sun Microsystems, Inc. | Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor |
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 |
US7523330B2 (en) * | 2004-06-30 | 2009-04-21 | Sun Microsystems, Inc. | Thread-based clock enabling in a multi-threaded processor |
US7509484B1 (en) | 2004-06-30 | 2009-03-24 | Sun Microsystems, Inc. | Handling cache misses by selectively flushing the pipeline |
US20060009265A1 (en) * | 2004-06-30 | 2006-01-12 | Clapper Edward O | Communication blackout feature |
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 |
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 |
EP1859346B1 (en) * | 2005-03-04 | 2012-01-11 | Hewlett-Packard Development Company, L.P. | A 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 |
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 |
US7849292B1 (en) | 2005-09-28 | 2010-12-07 | Oracle America, Inc. | Flag optimization of a trace |
US7676634B1 (en) | 2005-09-28 | 2010-03-09 | Sun Microsystems, Inc. | Selective trace cache invalidation for self-modifying code via memory aging |
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 |
US7953933B1 (en) | 2005-09-28 | 2011-05-31 | Oracle America, Inc. | Instruction cache, decoder circuit, basic block cache circuit and multi-block cache circuit |
US7877630B1 (en) | 2005-09-28 | 2011-01-25 | Oracle America, Inc. | Trace based rollback of a speculatively updated cache |
US7949854B1 (en) | 2005-09-28 | 2011-05-24 | Oracle America, Inc. | Trace unit with a trace builder |
US8024522B1 (en) | 2005-09-28 | 2011-09-20 | Oracle America, Inc. | Memory ordering queue/versioning cache circuit |
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 |
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 |
US7783863B1 (en) | 2005-09-28 | 2010-08-24 | Oracle America, Inc. | Graceful degradation in a trace-based processor |
US8499293B1 (en) | 2005-09-28 | 2013-07-30 | Oracle America, Inc. | Symbolic renaming optimization of a trace |
US8032710B1 (en) | 2005-09-28 | 2011-10-04 | Oracle America, Inc. | System and method for ensuring coherency in trace execution |
US7937564B1 (en) | 2005-09-28 | 2011-05-03 | Oracle America, Inc. | Emit vector optimization of a trace |
US7870369B1 (en) | 2005-09-28 | 2011-01-11 | Oracle America, Inc. | Abort prioritization in a trace-based processor |
US8037285B1 (en) | 2005-09-28 | 2011-10-11 | Oracle America, Inc. | Trace unit |
US8019944B1 (en) | 2005-09-28 | 2011-09-13 | Oracle America, Inc. | Checking for a memory ordering violation after a speculative cache write |
US8051247B1 (en) | 2005-09-28 | 2011-11-01 | Oracle America, Inc. | Trace based deallocation of entries in a versioning cache circuit |
US7966479B1 (en) | 2005-09-28 | 2011-06-21 | Oracle America, Inc. | Concurrent vs. low power branch prediction |
US8370576B1 (en) | 2005-09-28 | 2013-02-05 | Oracle America, Inc. | Cache rollback acceleration via a bank based versioning cache ciruit |
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 |
US8370609B1 (en) | 2006-09-27 | 2013-02-05 | Oracle America, Inc. | Data cache rollbacks for failed speculative traces with memory operations |
US8010745B1 (en) | 2006-09-27 | 2011-08-30 | Oracle America, Inc. | Rolling back a speculative update of a non-modifiable cache line |
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 |
WO2008155826A1 (ja) * | 2007-06-19 | 2008-12-24 | Fujitsu Limited | キャッシュ制御装置およびキャッシュ制御方法 |
CN101689109A (zh) * | 2007-06-20 | 2010-03-31 | 富士通株式会社 | 指令控制装置以及指令控制方法 |
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 |
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 |
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 |
CN112771498A (zh) | 2018-07-05 | 2021-05-07 | 米西克有限公司 | 用于实施智能处理计算架构的系统和方法 |
Family Cites Families (11)
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 |
-
1999
- 1999-12-30 US US09/475,105 patent/US6609193B1/en not_active Expired - Fee Related
-
2000
- 2000-11-06 WO PCT/US2000/041927 patent/WO2001050249A2/en active Application Filing
- 2000-11-06 AU AU43028/01A patent/AU4302801A/en not_active Abandoned
- 2000-11-06 GB GB0214930A patent/GB2374177B/en not_active Expired - Fee Related
- 2000-11-06 CN CNB008192596A patent/CN1222868C/zh not_active Expired - Fee Related
- 2000-11-06 CN CNB2005100926862A patent/CN100361073C/zh not_active Expired - Fee Related
- 2000-11-06 DE DE10085375T patent/DE10085375B4/de not_active Expired - Fee Related
- 2000-12-12 TW TW089126479A patent/TW497072B/zh not_active IP Right Cessation
-
2002
- 2002-11-20 HK HK02108397.0A patent/HK1046970B/zh not_active IP Right Cessation
-
2003
- 2003-07-08 US US10/615,918 patent/US6931516B2/en not_active Expired - Fee Related
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101425053B (zh) * | 2007-11-02 | 2010-08-18 | 北京中电华大电子设计有限责任公司 | 一种cpu周期寄存器的实现方法 |
TWI494853B (zh) * | 2012-11-05 | 2015-08-01 | Nvidia Corp | 使用一群組的執行緒執行循序碼的系統及方法和應用其之單一指令多執行緒處理器 |
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 |
CN103809964B (zh) * | 2012-11-05 | 2017-06-16 | 辉达公司 | 用线程组执行顺序代码的系统和方法和包含其的simt处理器 |
US9710275B2 (en) | 2012-11-05 | 2017-07-18 | Nvidia Corporation | System and method for allocating memory of differing properties to shared data objects |
US9727338B2 (en) | 2012-11-05 | 2017-08-08 | Nvidia Corporation | System and method for translating program functions for correct handling of local-scope variables and computing system incorporating the same |
US9747107B2 (en) | 2012-11-05 | 2017-08-29 | Nvidia Corporation | System and method for compiling or runtime executing a fork-join data parallel program with function calls on a single-instruction-multiple-thread processor |
CN111435601A (zh) * | 2019-01-15 | 2020-07-21 | 爱思开海力士有限公司 | 命令生成方法及与命令生成方法有关的半导体器件 |
CN111435601B (zh) * | 2019-01-15 | 2023-08-25 | 爱思开海力士有限公司 | 命令生成方法及与命令生成方法有关的半导体器件 |
Also Published As
Publication number | Publication date |
---|---|
WO2001050249A2 (en) | 2001-07-12 |
US20040107336A1 (en) | 2004-06-03 |
DE10085375T1 (de) | 2002-12-05 |
DE10085375B4 (de) | 2007-01-25 |
GB2374177B (en) | 2004-07-07 |
HK1046970B (zh) | 2004-12-31 |
HK1046970A1 (en) | 2003-01-30 |
WO2001050249A3 (en) | 2002-05-02 |
CN1437725A (zh) | 2003-08-20 |
CN1222868C (zh) | 2005-10-12 |
GB2374177A (en) | 2002-10-09 |
US6931516B2 (en) | 2005-08-16 |
TW497072B (en) | 2002-08-01 |
AU4302801A (en) | 2001-07-16 |
CN100361073C (zh) | 2008-01-09 |
US6609193B1 (en) | 2003-08-19 |
GB0214930D0 (en) | 2002-08-07 |
WO2001050249A9 (en) | 2002-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1222868C (zh) | 多线程流水线指令解码器的方法和设备 | |
JP3548132B2 (ja) | マルチスレッド・プロセッサ内でのパイプライン・ステージのフラッシュ方法および装置 | |
US5872985A (en) | Switching multi-context processor and method overcoming pipeline vacancies | |
KR101600152B1 (ko) | 이기종 멀티-코어 시스템에 대한 동적 코어 선택 | |
CN100342325C (zh) | 减少多线程处理器中寄存器文件端口的方法和装置 | |
CN1296827C (zh) | 一种使用数据地址增加组相关存储器的访问速度的方法 | |
CN1188932A (zh) | 多线程处理器中指令和关联读取请求的后台完成 | |
US6430674B1 (en) | Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time | |
US6170038B1 (en) | Trace based instruction caching | |
CN1147794C (zh) | 具有静态转移预测支持的去耦取指令-执行引擎 | |
CN1429361A (zh) | 用于在一个多线程处理器内在多个线程之间划分资源的方法和装置 | |
JP3871336B2 (ja) | 複数の未解決命令を追跡するための方法、完了テーブルおよびプロセッサ | |
EP1230591B1 (en) | Decompression bit processing with a general purpose alignment tool | |
EP0779577A2 (en) | Micoprocessor pipe control and register translation | |
CN1332407A (zh) | 用以执行多重指令组的数据处理装置 | |
CN1354852A (zh) | 基于跟踪的指令高速缓冲存储 | |
JP4956891B2 (ja) | 演算処理装置,情報処理装置および演算処理装置の制御方法 | |
CN1266592C (zh) | 依据确定延迟的动态vliw指令调度方法 | |
CA2657168C (en) | Efficient interrupt return address save mechanism | |
CN208580395U (zh) | 一种处理器流水线结构 | |
CN1144124C (zh) | 程序执行方法及利用该方法的装置 | |
US7058793B1 (en) | Pipeline controller for providing independent execution between the preliminary and advanced stages of a synchronous pipeline | |
CN1860436A (zh) | 用于处理指令循环的方法和系统 | |
US7124277B2 (en) | Method and apparatus for a trace cache trace-end predictor | |
CN1256664C (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: 20080109 Termination date: 20131106 |