CN1188932A - 多线程处理器中指令和关联读取请求的后台完成 - Google Patents

多线程处理器中指令和关联读取请求的后台完成 Download PDF

Info

Publication number
CN1188932A
CN1188932A CN97125461A CN97125461A CN1188932A CN 1188932 A CN1188932 A CN 1188932A CN 97125461 A CN97125461 A CN 97125461A CN 97125461 A CN97125461 A CN 97125461A CN 1188932 A CN1188932 A CN 1188932A
Authority
CN
China
Prior art keywords
data
instruction
thread
control unit
cache
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
Application number
CN97125461A
Other languages
English (en)
Other versions
CN1109967C (zh
Inventor
约翰·米切尔·波肯哈根
里查德·詹姆斯·艾克米亚
施尔顿·波那尔德·勒文斯坦
安德鲁·汉里·沃仑格
多尼·阿因·阿文里尔
詹姆斯·艾拉·布鲁克豪瑟
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1188932A publication Critical patent/CN1188932A/zh
Application granted granted Critical
Publication of CN1109967C publication Critical patent/CN1109967C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/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 or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

数据处理***包括组成多条处理流水线的多个处理单元。流水线对指令处理并包括一存储流水线。***还包括指令单元和存储控制单元。指令单元向执行单元发送指令,并通过它们控制多线程的执行。如果第一线程的指令在存储流水线中遇到了一次Cache未命中,则指令单元开始处理第二线程。指令单元向存储控制单元发出数据请求。当所请求数据返回后,第一线程遇到Cache未命中指令调度到存储流水线中一未用到的时隙。第一线程该指令将与第二线程指令一同被处理。

Description

多线程处理器中指令和关联读取请求的后台完成
本发明涉及如下U.S申请,它们在此被作为参考文献:(1)U.S申请,序列号未知,名称“MULTI-ENTRY FUUY ASSOCIATIVETRANSITION CACHE,1996年12月9日递交,Donald L.FREERKSEN,Famaz MOUNES-TOUSSI,Peder J.PAULSON,John D.IRISH,及Lyle E.GROSBACH;(2)U.S申请,序列号未知,名称”METHOD AND APPARATUS FOR PRIORITIZING AND ROUTINGCOMMANDS FROM A COMMAND SOURCE TO A COMMANDSINK,1996年12月9日递交,Donald L.FREERKSENEY Peder J.PAULSON及(3)U.S申请,序列号未知,名称“METHOD ANDAPPARATUS FOR TRACKING PROCESSING OF A COMMAND”,1996年12月9日递交,Donald L.FREERKSEN及PederJ.PAULSON。
本发明涉及一种多线程数据处理***和方法,在第二线程指令执行时完成对第一线程的指令和关联读取请求的处理。该方法获得比用切换回第一线程的方法更高的处理效率。
当今最通用的高效的单片微处理器结构是RISC结构,即精简指令***计算机结构。随着半导体技术的发展,RISC结构的目的已变为改进处理器的设计以使得尽量在一个机器时钟周期内开始一条指令的执行。每指令所占时钟周期数(CPI)这一特征量被广泛用来表示高效计算机的结构特征。指令流水线技术和高速缓冲存储器的结构特征为CPI的提高提供了可能性。指令流水线执行允许后面的指令可以在前面发布的指令执行完毕之前开始执行。高速缓冲存储器允许指令在大多数情况下可以连续执行而不必等待整个主存存取时间。
指令流水线技术包括分几阶段处理一条指令。每一阶段一般占用一个时钟周期。阶段数可以根据RISC结构的不同而改变,典型的流水线技术包括一个取指阶段,将指令取出。下面将更详细讨论的超标量结构中同样也包括一个调度/通用目标寄存器存取阶段,在此阶段中进行指令的译码并将其调度到正确的流水线上。为了简化描述,本文在讨论流水和超标量结构时将略过以上两个基本处理阶段;然而,必须了解在该结构中曾执行过这两阶段。
在取指和调度/通用目标寄存器存取两个基本处理阶段之后,下一阶段,即如图1所示的阶段1,为地址阶段。在地址阶段中,处理器从寄存器中取操作数来进行寄存器-寄存器的标量运算,如算术运算、逻辑运算,或为执行存取指令计算虚拟内存地址。在数据或第二阶段,即图1所示的阶段2中,寄存器-寄存器的标量运算已经完成,或是存取指令已经通过计算出的虚拟内存地址访问了数据高速缓冲存储器,即D-Cache。第三阶段是一提交阶段,在此阶段中将标量运算的结果或取数指令所取得的数据存入到目标寄存器。
图1阐明了指令A在一个三阶段流水线中的生命周期。为获得流水线技术的高效率,多条指令将同时在流水线的不同阶段中执行。
图2表示了A、B、C三条指令在图1所示流水线中的执行情况。如果顺序非流水地执行的话,执行A、B、C三条指令将占用9个时钟周期;而采用流水线技术之后,只需要5个指令周期。
常规RISC处理器的效率可以通过采用超标量结构来大大提高。在超标量结构中提供了多个操作单元或执行单元来并行地运行多条流水线。
图3举例说明了一个典型的流水4路(4-way)超标量结构的流水情况。存取操作、算术运算、逻辑运算和转移运算都分别用独立流水线执行。转移运算通常相对独立于其它流水线执行,但各转移分支也像其它指令一样通过流水线,以保持相关于其它指令的某一分支的指令顺序。转移运算的执行包括转移目标地址的计算、条件转移时条件码的检测、根据转移目标地址取指令、取消程序中已取的转移之后的所有指令的执行和提交、为所取的转移改变程序计数器。这些步都在图3所示的1至3阶段和前面所讨论的两个初步处理阶段,取指阶段和调度/通用目标寄存器存取阶段中完成。
在超标量结构中,一次只能将一条指令调度进流水线,而且指令之间的相关性将影响调度或使流水线阻塞。图3所示的例子表示了指令A到I的执行情况。在非流水线且非超标量处理器的情况下所有这些指令的执行最少将占用27个时钟周期,而在流水线且非超标量处理器的情况下最少将占用11个时钟周期。而在流水、4路超标量处理器情况下,所有指令A到I的执行只需要5个时钟周期。
在这种流水线、超标量结构中,指令可以顺序或非顺序方式完成。顺序方式指每条指令只能在调度在它前面的所有指令执行完毕之后完成。非顺序方式指只要满足预先定义的规则,各条指令可以在调度在它前面的所有指令执行完之前完成。在流水线、超标量结构中,无论是顺序方式还是非顺序方式,都存在使流水线阻塞的条件。如果一条指令依赖于在它之前调度的指令的结果,而前一条指令尚未完成时就会造成流水线阻塞。
例如,依赖于存/取指令的指令,如一遇到Cache未命中,读取请求将被阻塞直到该Cache未命中得到解决,即Cache命中。保持一较高命中率,如数据高速缓冲存储器中命中率是很重要的,特别是在涉及到大的数据结构的计算时。一次Cache未命中将导致流水线阻塞几个时钟周期,而且如果未命中率太高,引起的内存等待时间将是一个严重的问题。
虽然作为主存的存储设备的速度在不断提高,但是,存储芯片与高档处理器之间的速度差距已经变得越来越大。因此,现在高档处理器的设计中很大一部分的执行时间被用来在Cache未命中时等待,除非内存等待时间容忍(tolerance)技术能够实现,否则内存访问延迟将在处理器执行时间中占更大的比例。
现有的一种内存等待时间容忍技术是硬件多线程技术。通常,硬件多线程技术采用一个单片处理器来记录各个任务和线程的状态。通常包括对处理器中各个线程对应的寄存器进行复制。
例如,本申请的受让人以PowerPC商标销售的采用RISC结构的处理器中,为了执行多任务,该处理器必须能记录N个状态以运行N个线程。因此,以下这些寄存器将复制N次:通用寄存器(GPRS)、浮点寄存器(FPRS)、条件寄存器(CR)、浮点状态控制寄存器(FPSCR)、计数器、连接寄存器(LR)、异常寄存器(XER)、保存还原寄存器0和1(SRR0和SRR1)以及一些特殊功能寄存器(SPRS)。另外,段后备缓冲器(SLB)也可以进行复制,也可以在每一段入口标上相应的线程标号。如果没有复制或标记,SLB将在线程切换时被刷新。而且,一些转移预测机制例如相关寄存器和返回栈也应该复制。所幸的是,处理器的一些大的功能,像一级指令高速缓冲存储器(L1 I-Cache)、一级数据高速缓冲存储器(L1 D-Cache)、指令缓冲器、存储队列、指令调度器、操作单元或执行单元、流水线、翻译后备缓冲器(TLB)和转移历史表等,都不再需要复制。当一个线程遇到延迟时,处理器将迅速切换到另一线程。该线程的执行将与前一线程的存储器访问延滞时间重叠起来。
多线程技术存在两种类型:硬件多线程技术和软件多线程技术。而硬件多线程技术又具有两种基本形式。传统的形式是在处理器中保存N个线程或状态,并将所有线程在循环的基础上交错执行。由于在单个线程中各指令是独立的,所以这种形式消除了对任何流水线的依赖性。另一种多线程技术的形式是在较长时间的等待事件时进行线程切换。本发明的一个最佳实施方式中就采用硬件多线程技术和在较长时间的等待事件时进行线程切换的技术。
多线程技术允许在当前线程中检测到使流水线阻塞的条件时将流水线用于其它独立线程的有用工作。下面将联系图4和图5来说明多线程技术,图4表示了未采用多线程技术的情形。图4举例说明了流水线、4路超标量结构中在存储流水线中的一条指令发生Cache未命中时的处理情况。假设指令D0后面的指令具有依赖于指令A0的数据。指令A0为一条存储指令,并有一次需要5个时钟周期来解决的Cache未命中情况。因此,在没有多线程的情况下,流水线将被阻塞直到A0的Cache未命中得到解决。结果,当A0在第三时钟周期发生Cache未命中时,处理器在时钟周期4到7阻塞,一直到A0所要的数据在时钟周期7返回并在时钟周期8提交给A0。如图所示,指令在时钟周期9和10才得到继续执行。
相比之下,硬件多线程技术允许在第一个线程遇到Cache未命中时处理器仍能工作。如图5所示,跟图4中一样,指令A0同样在第三时钟周期发生Cache未命中。然而,图5表示了采用硬件多线程技术时的处理;结果,在第四时钟周期线程0的指令被挤出流水线,而线程1的指令被调度入流水线。处理器在时钟周期4至7处理线程1。请注意,在非多线程结构中,处理器在这些时钟周期中仅仅只能等待。线程的切换可能会占用一个或多个时间周期,为了说明方便起见,本发明的图中并未将线程切换的时间计算在内。
处理器将继续处理线程1直到切换回线程0,为了便于讨论,假定当指令M1遇到Cache未命中时会再次切换回线程0。熟练的技术人员知道,存在多个线程之间互相切换的技术。例如,在1993年六月IEEE微处理器第十三卷第三期第48至60页,Agarwal等所著的《Sparcle:大规模多处理器集的一种改良设计》中就说明了一种可能的线程切换的方法。
由于指令M1遇到Cache未命中,线程1的指令被从流水线中挤出,线程0的指令A0、B0、C0和D0在第十个时钟周期时被调度入流水线。如上面所讨论的,D0后面的指令都依赖于指令A0的完成。线程0的指令在第十一时钟周期时开始继续处理。在后面的周期中,由于A0所需要的数据已经装入到数据Cache中,所以A0将出现Cache命中。因此,线程0的指令能在处理器中继续执行。
遗憾的是,在常规数据处理***的多线程结构中,第一线程中遇到Cache未命中的指令必须等待,直到该线程再次被激活或成为前台线程才能通过流水线进行处理。例如,上文所引用的Agarwal所著的文章中公开了这样一个***。因此,此结构在处理依赖于Cache未命中指令的指令之前,需要有一个完成周期。
本发明的一个目的是提供一种数据处理***和方法,用来在执行第二线程指令时完成对第一进程的指令和关联读取请求的处理,以获得比用切换回上一线程的方法更高的处理效率。
本发明的另一个目的是提供一种多线程、超标量结构,该结构具有在处理第二个线程时完成对处于后台的第一线程中遇到Cache未命中的指令的处理的能力。
本发明的另一目的是提供一种具有改进的每指令所占时钟周期数(CPI)的数据处理***和方法。
本发明的目的通过提供一个至少执行第一和第二两个线程的数据处理***和方法来实现。在执行第二线程的过程中,数据处理***将完成与第一线程的指令相关的数据读取请求。完成此数据读取请求后,该数据处理***将与第二线程的指令一起处理第一线程中与该请求相关的指令。因为,将第一线程的指令与第二线程的指令一起处理的话,就不必通过线程切换回到第一线程再进行处理,所以,数据处理***能更有效地处理第一线程。
更特别的是,该数据处理***和方法包括组成多条处理流水线的多个执行单元。多个处理器流水线对指令进行处理,并包括一存储流水线。该数据处理***进一步包括一个指令单元和一个存储控制单元。指令单元为多个执行单元提供指令,并通过这些执行单元来控制多个线程的执行。当发生Cache未命中时,指令单元向存储控制单元发出一数据请求,要求获得该未命中的数据。
如果在存储流水线中的第一线程的指令遇到Cache未命中,指令单元决定进行线程切换的话,指令单元将开始第二线程的处理。同时,对应于指令单元发出的数据读取任务,存储控制单元从高级存储器请求未命中的数据。在第二线程的处理过程中,由于不可能总是有指令调度进流水线使流水线始终为满,所以,存储流水线将会出现未用到的时隙。当所请求的数据从高级存储器返回之后,存储控制单元将第一线程中遇到Cache未命中的指令发送到存储流水线中一个未用到的时隙中。第一线程的这条指令将与第二线程的指令一起进行处理。由于第二线程是当前调度进流水线的线程,所以第二线程的指令被视为前台指令。第一线程中遇到Cache未命中的这条指令将被视为后台指令与前台指令一起处理。这样,第一线程中遇到Cache未命中的这条指令就可以作为后台指令进行处理,而不必通过线程切换再回到第一线程进行处理,这条指令也就不必再调度进流水线了。作为代替,其它依赖于前面指令的指令就可以马上调度入流水线,因此,就比常规的结构要节约一个完整的处理周期。
本发明的其它目的、特征、特性;该结构涉及的元件的方法、操作、功能;部件的组合;生产的节约等均将在以下的最佳实施方式的详细说明和所附的图解中明确说明。所有这些构成本说明书的一部分,其中,不同的图中的相同的参考数字表示相对应的部分。
通过下面所给出的详细描述和图,将会得到对本发明充分的理解,所给出的图只是作为举例说明,而并非对本发明的限制,其中:
图1示出流水线中一条指令的处理;
图2示出流水线中多条指令的处理;
图3示出在流水线、4路超标量结构流水线中指令的处理;
图4示出在流水线、4路超标量结构流水线中出现Cache未命中时指令的处理;
图5示出在流水线、多线程、4路超标量结构流水线中指令的处理;
图6A示出根据本发明的数据处理***的高层框图;
图6B更详细地示出图6A中的存储控制单元;
图7示出本发明的处理器的流水线的流程图;
图8示出本发明的一条读取指令的处理;
图9示出本发明的一数据请求的处理;
图10A和10B示出本发明的后台处理的完成;
图11示出本发明的流水线、多线程、超标量结构流水线中对指令的处理。
参考图特别是图6A,其中描述了一个数据处理***10的高层框图,数据处理***10可能将用于实现本发明的方法和***。在最佳实施方式中,数据处理***10中的处理器12为一个单独的集成电路、流水线、超标量微处理器,可以用任何计算机结构实现,像以PowerPC注册商标销售的RISC处理器族,例如,国际商用机器公司销售的PowerPC 604微处理器芯片。
下面将要讨论,数据处理***10包括各个单元、寄存器、缓冲器、存储器以及所提供的其它部件,例如,在一个PowerPC RISC处理器中,以上部件均用集成电路更好地组织。可以理解,在图6A和图6B中,为了清楚起见,所有各种数据通路都以简化了的形式表示。如一个熟练的技术人员所理解的,要求各种元件有独立的输入和输出的数据通路。另外为了清楚起见,在某些元件中,从图6A和图6B中省去了许多数据和控制线。数据处理***10可以按照RISC技术运行,也可以按有经验的技术人员所能想到的其它众所周知的计算技术运行。
首先,将对图6A和6B所示的各种单元、寄存器、缓冲器、存储器等,以及它们的互连关系加以说明。然后,图6A和6B所示的数据处理***的运行过程也将参照图7到11进行说明。
如图6A所示,数据处理***10最好包括一个主存储器14、一个二级Cache即L2 Cache 20、一个一级数据Cache即L1 D-Cache 16以及一个一级指令Cache即L1 I-Cache 18,以上部分通过各种总线连接和一个存储控制单元即SCU 22实现互连。如图6A所示,SCU 22包括一个Cache线(Cache line)缓冲器20来将L1 D-Cache 16连接到L2 Cache 20、主存储器14以及以后将要说明的许多执行单元。
Cache线缓冲器21为在此作为参考文献,并与此一道同时申请的美国申请中的过渡Cache。该申请序号不详,名为“多入口全相联过渡Cache”,发明人为Don FREERKSEN,Farnaz MOUNES-TOUST,PederJ.PAULSON,John D.IRISH,和Lyle E.GROSBACH。
一级数据Cache 16和一级指令Cache 18已作为处理器的一个部分在芯片上实现,而主存储器14和二级Cache 20则在芯片外实现。二级Cache 20应为比主存储器14速度更高的存储器***,并且,通过按各种周知的技术在二级Cache 20中存储所选数据,由于对主存储器14的访问而引起的存储延时就可以减到最小。如图6A所示,二级Cache 20和主存储器14通过存储控制单元即SCU 22来与一级指令Cache 18和指令单元34相连。对此将对照图6B进行更详细的说明。
从一级指令Cache 18来的指令将输出给数据处理***10中的通过各种执行单元来控制多线程的执行的指令单元34。数据处理***10中各种执行单元至少包括一个转移单元26,一个定点单元28,存储控制单元22,一个浮点单元32。进一步来讲,在一个最佳实施方式中,指令单元34采用任何众所周知的技术来减小所谓的“***颠簸”,即就是许多次连续的线程切换。
除了图6A所描述的各种执行单元之外,熟练的技术人员会理解这一点,即现代超标量微处理器***通常包括上述每一执行单元的多种版本。还可以增加其它执行单元而不会违反本发明的精神和范围。许多这些单元将有一个来自通用寄存器GPRs 36、浮点寄存器FPRs 40等各种寄存器的输入源操作数信息。另外,多个专用寄存器SPRs 38可能被按照本发明的方法和***用来存储线程切换时的处理器状态信息。如图6A所示,存储控制单元SCU 22和Cache线缓冲器21直接连到通用寄存器GPRs 36和浮点寄存器FPRs 40,而通用寄存器GPRs 36被连到专用寄存器SPRs 38。
如图6A所示,为了在存储控制单元SCU 22和指令单元34之间进行通讯,在它们之间设置了一总线。例如,通过该总线,指令单元34发出数据请求给存储控制单元SCU 22,同样,存储控制单元SCU 22也可以通知指令单元34,如,通知指令单元34二级Cache发生未命中。另外,提供了一个包含虚拟地址向实地址映射的所谓的“翻译后备缓冲器”即TLB 24。虽然本发明中并未说明,还可以装备各种另外的高级存储器映射缓冲器,如工作形式与翻译后备缓冲器24相似的段后备缓冲器。
图6B更详细地说明了存储控制单元SCU 22。如图6B所示,存储控制单元SCU 22包括从数据多路转换器102接收数据的Cache线缓冲器21。Cache线缓冲器21接收从未命中数据跟踪序列发生器100发出的控制信号。如以下将要详细讨论的本发明的一最佳实施方式中,序列发生器100包括三个序列发生器来处理和跟踪指令与或数据读取请求,并按组合逻辑实现。
如图6B所示,数据多路转换器102从一级数据Cache 16,Cache线缓冲器21,执行单元,二级Cache 20以及主存储器14接收数据。从这些数据源传来的数据被数据多路转换器102作为对接收自序列发生器100的选择信号的响应而输出。序列发生器100输出控制信号到数据多路转换器102、Cache线缓冲器21、二级Cache 20。序列发生器100还从主存储器14接收控制信号并发送控制信号到主存储器14。数据多路转换器102的输出送到一级数据Cache 16、执行单元以及Cache线缓冲器21。为了清楚起见,Cache线缓冲器21和二级Cache 20以及主存储器14之间的连接没有表示出来。
此外,如图6B所示,序列发生器100输出一个选择信号到从二级Cache20和主存储器14接收数据的指令多路转换器104。根据序列发生器100所输出的选择信号,指令多路转换器104将来自这些数据源的数据输出到一级指令Cache 18和指令单元34。在产生上面所讨论的控制和选择信号的过程中,序列发生器100访问并且修改对应于一级数据Cache 16的一级目录106和对应于二级Cache 20的二级目录108。对一级目录106和二级目录108的访问和修改可以根据已有的众所周如的技术来实现。图6B所示的存储控制单元SCU 22的操作将在下面详细讨论。
                    本发明的流水线结构
下面,将参照图7讨论处理器12所实现的流水线结构。该流水线结构包括四条流水线:存储流水线、算术流水线、逻辑流水线和转移流水线。像本发明背景部分参照图3所讨论的一样,这些流水线包括相同的流水阶段。然而,有一点必须明确,本发明不是只限于四条流水线结构,而是可以为多于或少于四条流水线的结构。此外,流水线也可以重复而不会违反本发明的精神和范围。
前面已经参照图1至3说明了流水线结构具有三个流水阶段,应该理解的是,对于调度/通用寄存器存取和指令的译码等初步处理步也同样可以实现。另外,流水阶段的数目没有限制,可以像有经验的计算机设计者通常所做的那样进行增加或减少。
虽然,像图1至3那样,流水线结构包括相同的流水阶段,但存储流水线的第三阶段的结构与图1至3所示的有很大的区别。像上面所讨论的,本发明包括三个序列发生器,在图7中为了说明方便将它们标注为序列发生器100a、100b和100c。然而,序列发生器的数目并不限于三个,而是可以由计算机设计者按照效率特性的要求进行增加或减少。无论是多线程还是非多线程环境中,这多个序列发生器100a、100b和100c可以使处理更方便。序列发生器专门用来用于实现对一级数据Cache未命中和一级指令Cache未命中时的处理。
例如,在指令的处理过程中,如果指令单元34遇到一级指令Cache未命中,则指令单元向存储控制单元SCU 22发一指令请求。存储控制单元SCU 22检测序列发生器100a、100b和100c中是否可用来处理该请求。如果为可用,则该可用的序列发生器将执行指令读取任务使得处理能够继续进行。同样地,如果遇到一级数据Cache未命中,则向存储控制单元SCU22发出数据请求,存储控制单元SCU 22检测序列发生器100a、100b和100c中是否可用来处理该请求。如果为可用,则该可用的序列发生器将处理此一级数据Cache未命中。
由于提供了三个序列发生器,本发明的存储控制单元SCU 22能够同时处理三个这样的请求。相反,像图3所示的常规流水线结构只提供一单个序列发生器,因此,这种***必须等该序列发生器变为可用时才能给其分配一新Cache未命中处理任务。
通过多序列发生器组100,不论Cache未命中指令是否存在数据依赖,对单线程或多线程指令的处理都可以继续进行。因此,当序列发生器100a处理一个一级数据Cache未命中时,后面对该请求数据没有依赖的指令可以继续处理,因为另外两个序列发生器100b和100c可以用来处理下一次Cache未命中。
                    本发明的操作
现在参考图6A至11对本发明的操作进行说明。
                    指令读取请求处理
当指令单元34从一级指令Cache 18请求指令并遇到Cache未命中时指令单元34向存储控制单元SCU 22发一指令队列供应请求。存储控制单元SCU 22又向二级Cache 20发指令请求,如果二级Cache 20中还没有,则向主存储器14发请求。当存储控制单元SCU 22检测到所请求的指令已经返回时,存储控制单元SCU 22直接将所请求的指令分别输出到指令单元34和一级指令Cache 18以供处理和存储。
图8详细说明了指令读取任务的处理。在S58步中,指令单元34向存储控制单元SCU 22发出指令读取请求。然后,在S60步中,存储控制单元SCU 22检测序列发生器组100中是否有可用序列发生器来处理该指令读取任务。一旦存在可用序列发生器,该序列发生器则被指定来处理该指令读取任务,在S62步中该序列发生器将指令请求送到二级Cache 20。作为对该请求的响应,二级Cache 20输出一可能包含有所请求指令的Cache线。但由于一个Cache地址可能对应多个实地址,在这特定Cache地址中的数据或指令可能不是所请求的数据或指令。根据存储在二级Cache目录108中的地址,序列发生器100采用已有的众所周知的的技术检测从二级Cache20中返回的数据或指令是否为所请求的数据或指令即检测数据或指令是否正确。假如是正确的,在S66步中序列发生器100向指令多路转换器104输出一选择信号,使指令多路转换器104将二级Cache 20提供的数据直接输出到一级指令Cache 18和指令单元34。
然而,假如序列发生器100检测出从二级Cache 20中返回的数据或指令为不正确的,则在S65步中,序列发生器100向主存储器14发出指令请求。当主存储器14要输出所请求的数据时,主存储器14通过一控制线通知序列发生器100。在S66步中,作为响应,序列发生器100向指令多路转换器104输出一选择信号,使指令多路转换器104将主存储器14提供的数据直接输出到一级指令Cache 18和指令单元34。这样,指令单元34可以立即进行所请求指令的处理,而不必等待以下两步:(1)将指令存到一级指令Cache 18中;(2)从一级指令Cache 18中读出该指令。
                    数据读取请求处理
为了响应执行单元的数据请求,存储控制单元SCU 22从一级数据Cache16中获取所请求的数据,并将该数据输出到请求该数据的执行单元或单元组;下文称为“请求执行单元或单元组”。如果存储控制单元SCU 22遇到一级数据Cache未命中,则存储控制单元SCU 22将检测序列发生器100中是否有可用序列发生器来处理该数据读取任务,如果有,该可用序列发生器则被指定来处理该数据读取任务。就像处理一级数据Cache未命中一样,序列发生器100首先试着从二级Cache 20中获得数据,假如数据不在二级Cache 20中,序列发生器100将向主存储器14请求数据。同样,所请求的数据可以从二级Cache 20或主存储器14中作为Cache线的部分输出。
当序列发生器100检测到二级Cache 20或主存储器14正在返回所请求的数据时,序列发生器100检测请求数据的执行单元或单元组是否能接受此请求的数据。假如能够接受,则所请求的数据在存入一级数据Cache 16之前先输出到请求数据的执行单元或单元组。否则数据先存到Cache线缓冲器21,然后传输到一级数据Cache 16。如果请求数据的执行单元或单元组在包含所请求数据的Cache线完全传输到一级数据Cache 16之前变为可用,则Cache线缓冲器21将所请求数据输出到请求数据的执行单元或单元组。
图9详细说明了在S28步中,序列发生器100被指派完成从二级Cache20或主存储器14请求数据的数据读取任务时,该数据读取任务的处理情况。如图9所示,在S30步中,就像上面参照图8和一次一级指令Cache未命中所讨论的一样,序列发生器100检测包含请求数据的Cache线是否正从二级Cache 20或主存储器14返回。
如果序列发生器100检测到请求数据正在返回,序列发生器100接着检测请求数据的执行单元或单元组是否能接收请求的数据。序列发生器100检测存储流水线中是否存在时隙,以使请求该数据的指令能够得到处理。如果在S32步中序列发生器100检测到能接收请求的数据,则在S34步中,序列发生器100向数据多路转换器102发出选择信号,使得从二级Cache 20或主存储器14返回的请求的数据直接输出到执行单元。
在序列发生器100的控制下,所请求的数据存储到Cache线缓冲器21中并随后输出到一级数据Cache 16。当数据多路转换器102将包含所请求数据的Cache线输出到执行单元时,该Cache线还同时提供给Cache线缓冲器21。序列发生器100通知Cache线缓冲器21存储该Cache线。当Cache线缓冲器21开始存储包含所请求数据的该Cache线时,Cache线缓冲器21输出一指示此Cache线在Cache线缓冲器21的存储器中存储的位置的存储地址。序列发生器100保存该存储地址并对应于存储在Cache线缓冲器21的该Cache线中数据的每一部分,例如,用一个数据字,设置一个标志。
为了将该Cache线存入一级数据Cache 16,序列发生器100根据存储地址指示Cache线缓冲器21按数据部分的形式输出该Cache线,例如,一个字一个字地。序列发生器100同样使数据多路转换器102输出从Cache线缓冲器21输出的数据,并令一级数据Cache 16存储这些数据。
在S32步中,假如序列发生器100检测到请求数据的执行单元或单元组不能接收数据,则在S36步中序列发生器100作如下工作:(1)使数据多路转换器102输出从二级Cache 20或主存储器14来的数据;(2)控制Cache线缓冲器21存储这些请求的数据。序列发生器100继续监视请求数据的执行单元或单元组检测它何时能接收所请求的数据。
当序列发生器100检测到请求数据的执行单元或单元组能接收所请求的数据时,接着,在S40步中,序列发生器100检测包含所请求数据的Cache线是否已经全部从Cache线缓冲器21传到了一级数据Cache 16。序列发生器100通过检测是否命令过Cache线缓冲器21从包含所请求的数据的Cache线中输出所有数据部分存储到一级数据Cache 16中来完成上述检测。如果还未全部传输完,则在S42步中,序列发生器100将完成如下工作:(1)控制Cache线缓冲器21输出所请求的数据;(2)输出一选择信号到数据多路转换器102,使它将所请求的数据从Cache线缓冲器21中输出。然后执行单元接收并处理所请求的数据。然后包含所请求数据的Cache线在一级数据Cache 16中的存储也最终完成。
在S40步中,假如序列发生器100检测到包含所请求数据的Cache线已经完全传输到一级数据Cache 16中,则在S44步中,序列发生器100完成如下工作:(1)控制一级数据Cache 16输出所请求的数据;(2)输出一选择信号到数据多路转换器102,使它将所请求的数据从一级数据Cache 16中输出。然后执行单元接收并处理所请求的数据。
由于在所请求的数据从二级Cache 20或主存储器14返回之后,只要执行单元一旦可用就可以将所请求的数据传到执行单元中,通过这样,处理效率得到了提高。在许多例子中执行单元不必等数据通过以下三个步骤中的至少一个传来:(1)从高级存储器到Cache线缓冲器;(2)从Cache线缓冲器到一级数据Cache;(3)从一级数据Cache到执行单元。
在上面所讨论的方法中,在包含所请求数据的Cache线已经开始传输到Cache线缓冲器21并尚未完全传输到一级数据Cache 16时,序列发生器100从Cache线缓冲器21中获得所请求的数据。在另一种实施方式中,虽然包含所请求数据的Cache线已经开始传输到Cache线缓冲器21,如果在该Cache线中的请求数据传输到Cache线缓冲器21之前执行单元为可用的话,序列发生器100就让所请求的数据直接从二级Cache 20或主存储器14输出到执行单元。
                        指令的后台完成
现在说明在多线程环境下本发明的另一操作。根据这一操作,本发明的数据处理***可以在第二线程的指令执行时完成对第一线程的指令和关联读取请求的处理,从而获得比通过线程切换回到第一线程处理更高的处理效率。
如果第一线程的指令在存储流水线中遇到一级数据Cache未命中,指令单元34就会决定进行线程切换,指令单元34将开始第二线程的处理。同时指令单元34将读取未命中数据的任务分配给存储控制单元SCU 22,SCU 22将至少从二级Cache 20或主存储器14中的一个中请求未命中数据。
在第二线程的处理过程中,由于不可能总有指令调度到存储流水线中使它始终为满,所以在存储流水线中总会出现未用到的时隙。在所请求的数据从二级Cache 20或主存储器14中返回之后,SCU 22将第一线程中遇到Cache未命中的指令发送到存储流水线的未用到的时隙中。于是,第一线程的这条指令就将与第二线程的指令一起处理。因为第二线程是当前调度到流水线中的线程,所以第二线程的指令被视为前台指令,第二线程被视为前台线程。因此,与前台指令一起处理的第一线程的指令被视为后台指令,第一线程被视为后台线程。
这样,第一线程中遇到Cache未命中的指令可以在后台进行处理,所以当切换回第一线程时,这条指令就不必再调度进流水线。所以,依赖它的指令可以立即调度进流水线;因此,比常规结构节省了一个时钟周期。下面将参照图10A-11对后台完成的操作进行详细讨论。
图10A和10B说明了根据本发明后台处理的完成,而图11则说明了这一操作过程中指令通过本发明的流水线结构的一个实例。为了便于讨论,先假设第一线程即线程0的指令正在被处理器12处理。因此,图11说明了正在流水线中处理的线程0的指令。为了表示这些指令是来自线程0,这些指令都被标上后缀0。
如图11所示,在第三周期中,指令A0遇到一次一级数据Cache未命中。不像现有的数据处理***那样,而是B0、C0和D0三条不依赖于指令A0的指令也在第三周期提交,使得这三条指令在切换回线程0时不必被再次调度进流水线。这就是如图10所示的第S68步,即后台完成处理的开始。
一旦一条前台指令遇到一次一级数据Cache未命中,SCU 22检测序列发生器100的100a、100b和100c是否能够用来处理与该一级数据Cache未命中相关的数据请求任务。假如存在一可用的序列发生器,该可用的序列发生器被指定来处理此指令读取任务,在S70步中,像上面参照图8和一次一级指令Cache未命中所讨论的那样,指定的序列发生器从二级Cache20或主存储器14请求数据。
同时,如图11的第四时钟周期所示,在图10A的S72步中进行一次线程切换。为了进行讨论,本发明后台完成处理的说明先假设Cache未命中后进行了一次线程切换。任何线程切换方法都可以与本发明配合使用。例如,线程切换可以在二级Cache未命中或翻译后备缓冲器(TLB)Cache未命中等情况下进行,而不一定只是在一级数据Cache未命中时。
因此,如图11中第四时钟周期所示,流水线开始处理新的线程即线程1的指令。为了表示这些指令是来自线程1,在图11中这些指令都被标上后缀1。
在图10A的S74步中,指定的序列发生器100检测所请求的数据是否正从二级Cache 20或主存储器14中返回。一旦指定的序列发生器检测到数据正在返回,则序列发生器检测在S76步中存储流水线是否可用。换句话说,就是序列发生器检测是否有前台的指令被调度到流水线的第一个流水阶段中。如果没有前台指令被调度到流水线的第一个流水阶段中,则称存储流水线为可用的。因此,在S78步中,指定的序列发生器100将遇到Cache未命中的后台指令从后台线程即线程0发送到存储流水线,并将从二级Cache 20或主存储器14中返回的所请求的数据直接输出到执行单元。如上面所讨论的,这随后的操作通过向图6B中的数据多路转换器102输出一选择信号使数据多路转换器102从二级Cache 20或主存储器14之一输出所请求的数据来完成。像参考图9的S34步所讨论的那样,在序列发生器100的控制下,所请求的数据还被存储到Cache线缓冲器21中,随后又存储到一级数据Cache 16中。
如果在S76步中,指定的序列发生器100检测到存储流水线不是可用的,则处理继续进行到图10B的S80步。在S80步中开始包含所请求数据的Cache线到Cache线缓冲器21的传输。在S82步中指定的序列发生器100继续监视存储流水线,检测它是否为可用的。一旦存储流水线变为可用,就像参照图9中的S40步所讨论的一样,在S84步中,指定的序列发生器100检测包含所请求数据的Cache线是否已经完全从Cache线缓冲器21传输到一级数据Cache 16中。
如果包含所请求数据的Cache线尚未传输完毕,则在S86中,序列发生器100完成如下工作:(1)将遇到Cache未命中的后台指令发送到存储流水线;(2)控制Cache线缓冲器21输出所请求的数据;(3)输出一个选择信号到数据多路转换器102,使得所请求的数据从Cache线缓冲器21通过数据多路转换器102输出到执行单元。在序列发生器100的控制下,Cache线缓冲器21将完成包含所请求数据的Cache线到一级数据Cache 16的传输。
在S84步中,如果指定的序列发生器100检测到包含所请求数据的Cache线已经完全存储到一级数据Cache 16中,序列发生器100完成如下工作:(1)将遇到Cache未命中的后台指令发送到存储流水线;(2)控制一级数据Cache 16输出所请求的数据;(3)输出一个选择信号到数据多路转换器102,使得所请求的数据从一级数据Cache 16通过数据多路转换器102输出到执行单元。
图11说明了上面所讨论的后台完成处理的一个实例。如图11所示,指令A0遇到的Cache未命中对应的所请求的数据在第六个时钟周期返回。图11的说明假设前台线程即线程1的指令并未在这个时钟周期被调度到存储流水线。因此,指令A0在第六时钟周期被送入存储流水线,并出现在存储流水线的第一流水阶段。当然,熟练的技术人员应当理解,在数据返回时,前台线程可能会正在使用存储流水线的设备,这样,必须经过几个时钟周期才能使存储流水线可用于后台完成。由于当线程0仍为后台线程时,指令A0已经被调度到存储流水线,所以指令A0被表示为“a0”表示为一条后台指令。(图11中错标为00)
如图11的第六周期所示的,一旦后台指令被送入存储流水线,则指令在第七、第八周期中得到处理。当对应于这条指令的后台线程切换回前台时,这条指令就不必再次被调度到存储流水线中。所以在后台完成的指令后面的指令就可以被调度到流水线中。
例如,如图11所示,在第九周期时线程1的指令M1遇到了Cache未命中。因此,第十周期时发生线程切换。指令E0、F0、G0和H0而不是指令A0到D0,被调度到流水线的最开始。像第十一周期中所表示的,线程0的处理重新继续。然而,如果指令A0在后台尚未完成处理,则指令A0到D0在线程切换后要被重新调度。
图11和图5的比较表明,由于指令B0、CO和D0已经在第三周期提交完毕,而A0已经在后台完成,本发明的后台完成Cache未命中处理的方法将处理时间整整缩短了一个时钟周期。
虽然本发明已经根据当前认为最实用和最佳的实施方式进行了说明,但应当理解,本发明不限于公开的这一实施方式,相反,还包括在所附的权利要求书说明的精神和范围之内的不同的修改及等价的方案。

Claims (19)

1.一种数据处理***,包括:
组成多条处理流水线的多个执行单元,所述多条处理流水线对指令进行处理并包括一存储流水线;
一个指令单元,用于向所述多个执行单元输出指令,并通过所述多个执行单元控制多个线程的执行,当前正在被所述多个执行单元执行的线程被称为前台线程,当前未被所述多个执行单元执行的线程被称为后台线程;
一个存储控制单元,用于对后台线程的后台指令的数据读取请求进行处理,所述存储控制单元监视所述存储流水线来检测存储流水线何时变为可用,当存储控制单元检测到所述存储流水线为可用时将所述后台指令送入到所述存储流水线,当所述存储控制单元将所述后台指令送到所述存储流水线时将与所述后台指令相关的请求数据输出到所述多个执行单元。
2.如权利要求1所述的数据处理***,其特征在于:
在所述后台线程被所述指令单元从前台切换到后台之前,所述执行单元完成位于除了所述存储流水线外的所述多条流水线的最后一流水阶段中所述后台线程的指令的处理。
3.如权利要求2所述的数据处理***,其特征在于:
当所述后台线程切换到所述前台时,所述指令单元并不对所述执行单元处理完毕的指令进行调度,也不将所述后台指令调度到所述多条处理流水线。
4.如权利要求1所述的数据处理***,其特征在于:
所述存储控制单元包括至少一个序列发生器,当所述存储控制单元接收到数据读取请求时,如果所述存储控制单元为可用的,则将所述数据读取请求分配给所述存储控制单元。
5.如权利要求4所述的数据处理***,其特征在于:
所述存储控制单元包括多个序列发生器,使得多个数据读取请求能够被同时处理。
6.如权利要求1所述的数据处理***,其特征在于:
还包括:
一个一级Cache;
存储数据的存储器装置;
当所述多个执行单元遇到一个一级Cache未命中时,所述指令单元向所述多个存储控制单元发出所述的数据读取请求;
当处理所述的数据读取请求时,所述存储控制单元从所述存储器请求数据,在所述请求数据从所述存储器装置返回时,如果所述存储流水线为可用的,则将从所述存储器装置返回的所述请求数据直接输出到所述的若干执行单元。
7.如权利要求6所述的数据处理***,其特征在于:
所述存储控制单元包括一个缓冲器,用来在将从所述存储器装置接收到的数据输出到所述一级Cache之前暂时存储所述数据。
8.如权利要求7所述的数据处理***,其特征在于:
如果在包括所请求数据的数据开始存储到所述缓冲器之后,所述存储控制单元检测到所述存储流水线已变为可用的,所述存储控制单元将所述请求数据从所述缓冲器或所述一级Cache传输到所述多个执行单元。
9.如权利要求8所述的数据处理***,其特征在于:
当所述存储控制单元检测到所述存储流水线为可用时,如果所述缓冲器已经开始存储包含所述请求数据的所述数据,但所述请求数据并未完全传输到所述一级Cache,所述存储控制单元将所述请求数据从所述缓冲器传输到所述多个执行单元。
10.如权利要求1所述的数据处理***,其特征在于:
当指令单元没有将一前台线程的指令调度到所述存储流水线时,所述存储控制单元检测存储流水线是否可用。
11.在数据处理***中的一种数据处理方法,该数据处理***包括组成多条处理流水线的多个执行单元,所述多条处理流水线对指令进行处理,并包括一存储流水线,所述数据处理***进一步包括一个输出指令到所述多个执行单元并通过所述多个执行单元来控制多个线程的执行的指令单元,当前正在被所述多个执行单元执行的线程被称为前台线程,当前未被所述多个执行单元执行的线程被称为后台线程,所述数据处理***还包括一处理后台线程的后台指令的数据读取请求的存储控制单元,所述方法包括:
监视所述存储流水线来检测所述存储流水线何时变为可用的;
当所述监视步骤检测到所述存储流水线变为可用时,将所述后台指令发送到存储流水线;及
当所述发送步骤将所述后台指令发送到存储流水线时,输出与所述后台指令相关的请求数据到所述多个执行单元。
12.如权利要求11所述的方法,其特征在于进一步包括:
在所述后台线程被所述指令单元从前台切换到后台之前,所述执行单元完成位于除了所述存储流水线的所述多条流水线的最后一流水阶段中所述后台线程的指令的处理。
13.如权利要求12所述的方法,其特征在于:
当将后台线程切换回前台时,将除了所述在完成步骤中完成的指令以及在所述发送步骤中发送的所述后台指令外的其它指令调度到所述的多条处理流水线中。
14.如权利要求11所述的方法,其特征在于:
所述存储控制单元包括至少一个序列发生器,进一步包括以下步骤:
如果所述序列发生器为可用的,则将数据读取请求分配给所述的序列发生器。
15.如权利要求14所述的方法,其特征在于:
所述存储控制单元包括多个序列发生器,使得多个数据读取请求可以被同时处理。
16.如权利要求11所述的方法,其特征在于:
所述数据处理***进一步包括一个一级Cache和用来存储数据的存储器装置,而且进一步包括:
当所述多个执行单元遇到一级Cache未命中时,向所述存储控制单元发出数据读取请求;
按照所述数据读取请求从所述存储器装置中请求数据;
如果在所述请求数据从所述存储器装置返回时所述监视步骤检测到所述存储流水线为可用,则所述输出步骤将所述请求数据从所述存储器装置直接输出到所述多个执行单元。
17.如权利要求16所述的数据处理***,其特征在于:
所述存储控制单元包括一个用来在将从所述存储器装置接收的数据输出到一级Cache之前暂时存储所述数据的缓冲器,
如果在包含所述请求数据的数据开始存储到所述缓冲器之后,所述监视步骤检测到所述存储流水线变为可用,则所述输出步骤将所述请求数据从所述缓冲器或一级Cache传输到所述多个执行单元中。
18.如权利要求17所述的方法,其特征在于:
如果所述缓冲器已经开始存储包含所述请求数据的所述数据,但当所述监视步骤检测到存储流水线为可用时,所述请求数据并未完全传输到所述一级Cache中,则所述输出步骤将所述请求数据从所述缓冲器输出到所述多个执行单元。
19.如权利要求11所述的方法,其特征在于:
当所述指令单元没有将前台线程的指令调度到所述存储流水线时,所述监视步骤将会检测到所述存储流水线为可用的。
CN97125461A 1996-12-27 1997-12-11 多线程处理器中指令和关联读取请求的后台完成 Expired - Fee Related CN1109967C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US773,572 1977-03-02
US773572 1996-12-27
US08/773,572 US6088788A (en) 1996-12-27 1996-12-27 Background completion of instruction and associated fetch request in a multithread processor

Publications (2)

Publication Number Publication Date
CN1188932A true CN1188932A (zh) 1998-07-29
CN1109967C CN1109967C (zh) 2003-05-28

Family

ID=25098690

Family Applications (1)

Application Number Title Priority Date Filing Date
CN97125461A Expired - Fee Related CN1109967C (zh) 1996-12-27 1997-12-11 多线程处理器中指令和关联读取请求的后台完成

Country Status (3)

Country Link
US (1) US6088788A (zh)
KR (1) KR100305310B1 (zh)
CN (1) CN1109967C (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1296818C (zh) * 1999-09-01 2007-01-24 英特尔公司 用于多线程并行处理器的指令
CN100361072C (zh) * 2003-03-29 2008-01-09 汤姆森许可贸易公司 流水线处理一系列处理指令的方法和设备
CN100447737C (zh) * 2001-09-27 2008-12-31 中国科学院计算技术研究所 指令流水线中实现访存精确例外的处理方法
CN1993709B (zh) * 2005-05-20 2010-12-15 索尼株式会社 信号处理设备
CN101782847B (zh) * 2009-01-20 2013-04-24 瑞昱半导体股份有限公司 数据储存方法及装置
WO2013185571A1 (zh) * 2012-06-13 2013-12-19 深圳中微电科技有限公司 多线程虚拟流水线处理器的线程控制和调用方法及其处理器
CN113626348A (zh) * 2021-07-22 2021-11-09 支付宝(杭州)信息技术有限公司 业务执行方法、装置和电子设备

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6697935B1 (en) * 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6272520B1 (en) * 1997-12-31 2001-08-07 Intel Corporation Method for detecting thread switch events
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US20010032307A1 (en) * 1998-12-30 2001-10-18 Joseph Rohlman Micro-instruction queue for a microprocessor instruction pipeline
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6889319B1 (en) 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6496925B1 (en) * 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US7051329B1 (en) 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US6549985B1 (en) * 2000-03-30 2003-04-15 I P - First, Llc Method and apparatus for resolving additional load misses and page table walks under orthogonal stalls in a single pipeline processor
US6931641B1 (en) * 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
US7320065B2 (en) 2001-04-26 2008-01-15 Eleven Engineering Incorporated Multithread embedded processor with input/output capability
US7209996B2 (en) 2001-10-22 2007-04-24 Sun Microsystems, Inc. Multi-core multi-thread processor
US20050188177A1 (en) * 2002-05-31 2005-08-25 The University Of Delaware Method and apparatus for real-time multithreading
US7447877B2 (en) * 2002-06-13 2008-11-04 Intel Corporation Method and apparatus for converting memory instructions to prefetch operations during a thread switch window
US8024735B2 (en) * 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US20040111594A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Multithreading recycle and dispatch mechanism
US20040128476A1 (en) * 2002-12-26 2004-07-01 Robert Nuckolls Scheme to simplify instruction buffer logic supporting multiple strands
US20050210204A1 (en) * 2003-01-27 2005-09-22 Fujitsu Limited Memory control device, data cache control device, central processing device, storage device control method, data cache control method, and cache control method
JP4837247B2 (ja) * 2003-09-24 2011-12-14 パナソニック株式会社 プロセッサ
US7430737B2 (en) * 2003-12-04 2008-09-30 Sun Microsystems, Inc. Processor and method for supporting compiler directed multithreading management
US8643659B1 (en) 2003-12-31 2014-02-04 3Dlabs Inc., Ltd. Shader with global and instruction caches
US7263599B2 (en) * 2004-02-06 2007-08-28 Infineon Technologies Thread ID in a multithreaded processor
US8074051B2 (en) 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
EP1745367B1 (en) * 2004-04-27 2009-07-08 Nxp B.V. Pipelined asynchronous instruction processor circuit
US8095778B1 (en) 2004-06-30 2012-01-10 Open Computing Trust I & II Method and system for sharing functional units of a multithreaded processor
US7478225B1 (en) 2004-06-30 2009-01-13 Sun Microsystems, Inc. Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor
US7185178B1 (en) * 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
US7774393B1 (en) 2004-06-30 2010-08-10 Oracle America, Inc. Apparatus and method for integer to floating-point format conversion
US7370243B1 (en) 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7343474B1 (en) 2004-06-30 2008-03-11 Sun Microsystems, Inc. Minimal address state in a fine grain multithreaded processor
US7426630B1 (en) 2004-06-30 2008-09-16 Sun Microsystems, Inc. Arbitration of window swap operations
US7523330B2 (en) * 2004-06-30 2009-04-21 Sun Microsystems, Inc. Thread-based clock enabling in a multi-threaded processor
US7676655B2 (en) * 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7890734B2 (en) 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
US7353364B1 (en) 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US7533248B1 (en) 2004-06-30 2009-05-12 Sun Microsystems, Inc. Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor
US7178005B1 (en) 2004-06-30 2007-02-13 Sun Microsystems, Inc. Efficient implementation of timers in a multithreaded processor
US7437538B1 (en) 2004-06-30 2008-10-14 Sun Microsystems, Inc. Apparatus and method for reducing execution latency of floating point operations having special case operands
US7434000B1 (en) 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US7747771B1 (en) 2004-06-30 2010-06-29 Oracle America, Inc. Register access protocol in a multihreaded multi-core processor
US7861063B1 (en) 2004-06-30 2010-12-28 Oracle America, Inc. Delay slot handling in a processor
US7941642B1 (en) 2004-06-30 2011-05-10 Oracle America, Inc. Method for selecting between divide instructions associated with respective threads in a multi-threaded processor
US8225034B1 (en) 2004-06-30 2012-07-17 Oracle America, Inc. Hybrid instruction buffer
US7383403B1 (en) 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers in a fine grain multithreaded processor
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7373489B1 (en) 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US7216216B1 (en) 2004-06-30 2007-05-08 Sun Microsystems, Inc. Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window
US20060015855A1 (en) * 2004-07-13 2006-01-19 Kumamoto Danny N Systems and methods for replacing NOP instructions in a first program with instructions of a second program
US8037250B1 (en) 2004-12-09 2011-10-11 Oracle America, Inc. Arbitrating cache misses in a multithreaded/multi-core processor
US7752354B2 (en) * 2005-02-11 2010-07-06 International Business Machines Corporation Auxiliary mechanism to manage instruction restart and restart coming in a lookahead processor
US7603543B2 (en) * 2005-02-11 2009-10-13 International Business Machines Corporation Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
US7380062B2 (en) * 2005-02-11 2008-05-27 International Business Machines Corporation Mechanism in a multi-threaded microprocessor to maintain best case demand instruction redispatch
US7398371B2 (en) * 2005-06-23 2008-07-08 Qualcomm Incorporated Shared translation look-aside buffer and method
US20070240164A1 (en) * 2006-03-15 2007-10-11 Microsoft Corporation Command line pipelining
JP2008123045A (ja) * 2006-11-08 2008-05-29 Matsushita Electric Ind Co Ltd プロセッサ
US8347068B2 (en) * 2007-04-04 2013-01-01 International Business Machines Corporation Multi-mode register rename mechanism that augments logical registers by switching a physical register from the register rename buffer when switching between in-order and out-of-order instruction processing in a simultaneous multi-threaded microprocessor
US7814243B2 (en) * 2007-06-01 2010-10-12 Sonics, Inc. Shared storage for multi-threaded ordered queues in an interconnect
US20100115494A1 (en) * 2008-11-03 2010-05-06 Gorton Jr Richard C System for dynamic program profiling
US8024719B2 (en) 2008-11-03 2011-09-20 Advanced Micro Devices, Inc. Bounded hash table sorting in a dynamic program profiling system
US8478948B2 (en) * 2008-12-04 2013-07-02 Oracle America, Inc. Method and system for efficient tracing and profiling of memory accesses during program execution
EP2564322A4 (en) * 2010-04-30 2017-03-08 Hewlett-Packard Enterprise Development LP Management data transfer between processors
JP2012033001A (ja) 2010-07-30 2012-02-16 Toshiba Corp 情報処理装置および情報処理方法
US8972995B2 (en) 2010-08-06 2015-03-03 Sonics, Inc. Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads
US10706101B2 (en) 2016-04-14 2020-07-07 Advanced Micro Devices, Inc. Bucketized hash tables with remap entries

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01125638A (ja) * 1987-11-11 1989-05-18 Matsushita Electric Ind Co Ltd キャッシュメモリ装置
US5148536A (en) * 1988-07-25 1992-09-15 Digital Equipment Corporation Pipeline having an integral cache which processes cache misses and loads data in parallel
GB2234613B (en) * 1989-08-03 1993-07-07 Sun Microsystems Inc Method and apparatus for switching context of state elements in a microprocessor
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5197138A (en) * 1989-12-26 1993-03-23 Digital Equipment Corporation Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching
JPH04283849A (ja) * 1991-03-13 1992-10-08 Toshiba Corp マルチプロセッサシステム
CA2050828A1 (en) * 1991-05-28 1992-11-29 Herbert H.J. Hum Register-cache architecture and super-actor machine
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
JP2904624B2 (ja) * 1991-10-14 1999-06-14 株式会社東芝 並列演算処理装置
JPH05151064A (ja) * 1991-11-29 1993-06-18 Yokogawa Electric Corp 密結合マルチプロセツサシステム
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5287508A (en) * 1992-04-07 1994-02-15 Sun Microsystems, Inc. Method and apparatus for efficient scheduling in a multiprocessor system
US5553305A (en) * 1992-04-14 1996-09-03 International Business Machines Corporation System for synchronizing execution by a processing element of threads within a process using a state indicator
JPH05298097A (ja) * 1992-04-20 1993-11-12 Mitsubishi Electric Corp 情報処理装置
JP3309425B2 (ja) * 1992-05-22 2002-07-29 松下電器産業株式会社 キャッシュ制御装置
JPH0659978A (ja) * 1992-08-11 1994-03-04 Nec Corp 情報処理装置
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
JPH096633A (ja) * 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1296818C (zh) * 1999-09-01 2007-01-24 英特尔公司 用于多线程并行处理器的指令
CN100447737C (zh) * 2001-09-27 2008-12-31 中国科学院计算技术研究所 指令流水线中实现访存精确例外的处理方法
CN100361072C (zh) * 2003-03-29 2008-01-09 汤姆森许可贸易公司 流水线处理一系列处理指令的方法和设备
CN1993709B (zh) * 2005-05-20 2010-12-15 索尼株式会社 信号处理设备
CN101782847B (zh) * 2009-01-20 2013-04-24 瑞昱半导体股份有限公司 数据储存方法及装置
WO2013185571A1 (zh) * 2012-06-13 2013-12-19 深圳中微电科技有限公司 多线程虚拟流水线处理器的线程控制和调用方法及其处理器
CN113626348A (zh) * 2021-07-22 2021-11-09 支付宝(杭州)信息技术有限公司 业务执行方法、装置和电子设备

Also Published As

Publication number Publication date
US6088788A (en) 2000-07-11
KR19980063489A (ko) 1998-10-07
KR100305310B1 (ko) 2001-09-28
CN1109967C (zh) 2003-05-28

Similar Documents

Publication Publication Date Title
CN1109967C (zh) 多线程处理器中指令和关联读取请求的后台完成
US6256727B1 (en) Method and system for fetching noncontiguous instructions in a single clock cycle
US6061710A (en) Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US6988186B2 (en) Shared resource queue for simultaneous multithreading processing wherein entries allocated to different threads are capable of being interspersed among each other and a head pointer for one thread is capable of wrapping around its own tail in order to access a free entry
CN100357884C (zh) 用于处理指令的方法、处理器以及***
CN100342325C (zh) 减少多线程处理器中寄存器文件端口的方法和装置
US7509484B1 (en) Handling cache misses by selectively flushing the pipeline
CN1310155C (zh) 用于先行执行期间的存储器通信的装置
EP0751458B1 (en) Method and system for tracking resource allocation within a processor
US5860017A (en) Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
CN1098486C (zh) 通过合并存储操作进行集中存储的处理机及方法
US5867682A (en) High performance superscalar microprocessor including a circuit for converting CISC instructions to RISC operations
JP3927546B2 (ja) 同時マルチスレッド化プロセッサ
CN1841314A (zh) 双线程处理器
CN1429361A (zh) 用于在一个多线程处理器内在多个线程之间划分资源的方法和装置
CN1127899A (zh) 具有推测指令取指的数据处理器及操作方法
US8386753B2 (en) Completion arbitration for more than two threads based on resource limitations
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
EP0779577A2 (en) Micoprocessor pipe control and register translation
WO1999021083A1 (en) Thread switch control in a multithreaded processor system
CN1047245C (zh) 采用独立存取中间存储器的超标量处理器***中加强指令调度的方法和***
JPH08147165A (ja) マルチコンテキストをサポートするプロセッサおよび処理方法
CN108287730A (zh) 一种处理器流水线结构
CN1397877A (zh) 据物理分页指针比较结果转送数据的装置及方法
CN1885269A (zh) 在微处理器恢复单元中进行写队列读数据的方法和装置

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
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: 20030528

Termination date: 20111211