CN100428282C - 令牌触发多线程操作的方法和装置 - Google Patents

令牌触发多线程操作的方法和装置 Download PDF

Info

Publication number
CN100428282C
CN100428282C CNB200380102976XA CN200380102976A CN100428282C CN 100428282 C CN100428282 C CN 100428282C CN B200380102976X A CNB200380102976X A CN B200380102976XA CN 200380102976 A CN200380102976 A CN 200380102976A CN 100428282 C CN100428282 C CN 100428282C
Authority
CN
China
Prior art keywords
thread
register
instruction
processor
instructions
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 - Lifetime
Application number
CNB200380102976XA
Other languages
English (en)
Other versions
CN1711563A (zh
Inventor
E·赫凯内克
M·穆杜吉尔
J·C·格洛斯纳
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.)
Qualcomm Inc
Original Assignee
Sandbridge Technologies Inc
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 Sandbridge Technologies Inc filed Critical Sandbridge Technologies Inc
Publication of CN1711563A publication Critical patent/CN1711563A/zh
Application granted granted Critical
Publication of CN100428282C publication Critical patent/CN100428282C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种多线程处理器中的令牌触发多线程操作技术。多线程处理器的多个线程的指令发出序列按照这样的方法来控制:将每个所述线程与至少一个寄存器相关联,所述至少一个寄存器存储用来识别将被允许发出一个或多个指令的下一个线程的值,和利用该存储的值来控制该指令发出序列。例如,多线程处理器的多个硬件线程单元中的每一个可以包括可由该硬件线程单元升级的相应的局部寄存器,用于所述硬件线程单元中给定之一的该局部寄存器存储一个值,该值用来识别将被允许在所述给定的硬件线程单元已发出一个或多个指令后发出一个或多个指令的下一个线程。全局寄存器配置也可以或可选择地被使用。该处理器可以配置成允许所述指令发出序列对应任意的交替偶-奇线程序列,同时不引起导致线程中止的堵塞状况。

Description

令牌触发多线程操作的方法和装置
相关申请
本发明涉及序列号为No.10/269,247、发明名称为“多线程处理器中基于线程的存储器访问的方法和装置”的美国专利申请,序列号为No.10/269,372、发明名称为“对收敛装置应用进行有效处理的多线程处理器”的美国专利申请,和序列号为No.10/269,373、发明名称为“多线程处理器中寄存器堆端口简化的方法和装置”的美国专利申请,所有这些申请都同时地一并申请并包含在这里以作参考。
技术领域
本发明大体涉及数字数据处理器领域,尤其涉及用于多线程处理器的线程操作技术。
背景技术
多线程处理器是支持同时执行多个不同指令序列或“线程”的处理器。例如在1995年由马萨诸塞州波士顿的Jones和Bartlett出版社出版的M.J.Flynn的“计算机体系结构:流水线和并行处理器设计”,和在1997年由马萨诸塞州雷丁大学的Addison-Wesley出版的G.A.Blaauw和Frederick P.Brooks的“计算机体系结构:观念和发展”中描述了传统的线程技术,这两个文献都包含在这里以作参考。
作为举例,被称为“筒状多线程操作(barrel multithreading)”的技术允许每个线程根据指定的固定数字序列发出指令。例如,带有四个按照筒状多线程的以线程0、线程1、线程2和线程3来表示的多个线程的处理器可以允许线程以固定的数字顺序线程0,线程1,线程2,线程3,线程0等发出指令。
筒状多线程操作和其它现有的线程操作技术存在的问题是这些技术通常配置成不允许发出线程指令的任意序列,或者如果这样配置时需要过多的硬件来执行它们。
因此现有技术缺乏灵活性,可能对处理器并发性产生不理想的限制。而且,这些技术可以导致阻塞状况和由此的线程中止,其不利地影响处理器性能。
因此需要改进的技术来用于多线程处理器。
发明内容
本发明提供了用于多线程处理器的令牌触发线程操作技术。
根据本发明的一个方面,多线程处理器的多个线程的指令发出序列按照这样的方法来控制:将每个所述线程与至少一个寄存器相关联,所述至少一个寄存器存储用来识别将被允许发出一个或多个指令的下一个线程的值,和利用该存储的值来控制该指令发出序列。
作为举例,在本发明的一个示例性实施例中,多线程处理器的多个硬件线程单元或“上下文”中的每一个都可以包括相应的下一个线程标识符局部寄存器,该寄存器可以由该硬件线程单元升级,用于所述硬件线程单元中给定的一个的局部寄存器存储一个值,该值用来识别将被允许在所述给定的硬件线程单元已发出一个或多个指令后发出一个或多个指令的下一个线程。
全局寄存器配置也可以或可选择地被使用。更特别地,可以将所述线程和至少一个可访问每个所述线程的全局寄存器相关联,当由所述线程中给定的一个发出指令后该全局寄存器的内容识别将被允许根据所述指令发出序列发出一个或多个指令的另一个线程。
有利地,本发明的多线程处理器可以配置成允许指令发出序列例如对应线程的任意交替偶-奇序列,或者其它任意序列,同时不引起导致线程中止的阻塞状况。
附图说明
图1是一个实现本发明的示例性处理系统的框图。
图2是图1处理系统的多线程处理器的一个示例性实施例的更详细框图。
图3显示了适用于根据本发明的技术的图2的多线程处理器的令牌触发线程操作的一个例子。
图4显示了一种方式,在该方式中示例性指令函数可以在根据本发明的技术的图2多线程处理器中进行流水线处理。
图5显示了一个示例性单发流水线,其中图2处理器的每个线程在每个周期发出一个指令。
图6显示了一个示例性多发流水线,其中图2处理器的每个线程在每个周期发出两个指令。
图7显示了根据本发明配置的并适用于图2处理器的一组示例性硬件线程单元。
图8显示了在图2处理器的一个示例性实施例中实现的令牌触发线程操作技术。
具体实施方式
本发明在这里将作为在一个示例性多线程处理器中实现来说明。然而应当理解,本发明并不要求使用该示例性实施例的特定多线程处理器配置,而是更一般地适用于任何多线程处理器应用,在这些应用中通过令牌触发多线程操作与指令流水线配合的使用可以达到提供改进的性能的需要。
将结合图1和2来描述实现本发明的令牌触发线程操作技术的一个示例性处理系统100。
图1显示了处理系统100,该系统包括连接到主存储器104的多线程处理器102。该多线程处理器102包括一个多线程高速缓冲存储器110和一个多线程数据存储器112。
图2显示了多线程处理器102的一个可能实现方式的更详细视图。在该实施例中,多线程处理器102包括多线程高速缓冲存储器110,数据存储器112,高速缓存控制器114,指令解码器116,寄存器堆118,和一组算术逻辑部件(ALU)120。该多线程高速缓冲存储器110在这里也被称为多线程高速缓冲。
应当注意,为了使显示清楚而简化了图1和2中所示的特定配置,也可以包括未明确显示的附加的或可替换的元件,这对于本领域的熟练技术人员来说是显而易见的。
多线程高速缓冲110包括多个线程缓冲110-1,110-2,…110-N,其中N通常表示根据多线程处理器102的线程的数量。因此每个线程具有在多线程高速缓冲110中的相关的相应线程高速缓冲。类似地,数据存储器112包括N个不同的数据存储器实例,其如图所示地表示为数据存储器112-1,112-2,…112-N。
多线程高速缓冲110中的每个线程缓冲可以包括具有一组或多组存储单元的存储器阵列。给定的线程高速缓冲可以进一步包括用于存储相关线程标识符的线程标识符寄存器,这将在下面结合图7进行详细描述。
多线程高速缓冲110通过高速缓存控制器114与主存储器104连接。高速缓存控制器114保证了来自主存储器104的合适指令被加载到多线程高速缓冲110中。在该示例性实施例中的高速缓存控制器114与逻辑电路或与单独的线程高速缓冲112-1,112-2,…112-N相关的其它处理元件配合地工作,并且执行至少一部分地址映射技术,例如完全关联映射、直接映射或组相关映射。适合与本发明结合使用的示例性的组相关映射技术描述于申请日为2002年6月4日、序列号为Nos.10/161774和10/161874的美国专利申请中并且与本申请一起被转让,该两个申请都包含于此以作参考。
通常,多线程高速缓冲110用于存储将要由多线程处理器102执行的指令,而数据存储器112存储指令操作的数据。指令由指令解码器116从多线程高速缓冲110取得,所述解码器以传统的方式在控制指令的执行中与寄存器堆118和ALU 120配合操作。诸如116,118和120这样的多线程处理器元件的操作在本领域中是公知的,因此在这里不再进一步描述。
数据存储器112典型地直接连接到主存储器104,尽管该连接未在图中明确示出。
一个或多个存储器104,110和112中每一个都可以配置成包括多个存储体或其它指定部分。作为示例,每个存储体可以看作是由一个或多个存储模块或者单个存储模块的特定部分组成。
关于多线程处理器的这些和其它存储器的基于线程的存储体操作技术在上述的序列号为No.10/269,247、发明名称为“多线程处理器中基于线程的存储器访问的方法和装置”的美国专利中进行了描述。
对诸如寄存器堆118这样的寄存器堆的基于线程的访问技术在上述的序列号为No.10/269,373、发明名称为“多线程处理器中寄存器堆端口简化的方法和装置”的美国专利申请中进行了描述。
应当强调的是本发明并不要求图2所示的特定多线程处理器配置。本发明可以用多种其它多线程处理器配置实现。
图2所示类型的和适合与本发明结合使用的多线程处理器的更特别的例子描述于序列号为No.60/341,289、申请日为2001年12月20日的美国临时专利申请中,其转换申请是上述引用的序列号为No.10/269,372的美国专利申请,该申请包含于此以作参考。如序列号为No.60/341289的美国临时专利申请所述的多线程处理器的示例性实施例能够执行基于RISC的控制代码、数字信号处理器(DSP)代码、Java代码和网络处理代码。该处理器包括单指令多数据(SIMD)矢量单元、简化单元和长指令字(LIW)复合指令执行。
根据本发明的一个方面,提高了诸如图2的处理器102这样的多线程处理器的性能。更具体而言,如下面将要更详细描述的,处理器102根据本发明的技术配置以利用令牌触发线程操作技术,该技术结合指令流水线操作,以增强处理器并发性和减小线程中止的可能性。
图3示出了用于实现处理器102的令牌触发线程操作的一个例子,在该处理器中线程的数量N是八。通常,所有的线程都同时操作,并且每个都访问线程高速缓冲110和数据存储器112的相应实例。如图3所示,这八个线程用线程0,线程1,线程2,…线程7表示,并且显示成以环的形式串行连接。在该多线程处理器中,给定的线程通常可以看作为硬件和软件。与给定的线程相关的特定处理器硬件因此在这里被更特别地称为硬件线程单元或简单地称为“上下文”。
根据图3所示的令牌触发线程操作,允许所有的硬件线程单元或上下文同时执行指令,但是仅有一个上下文可以在处理器的一个特定时钟周期中发出一个指令。也就是说,所有的上下文同时执行但是只有一个上下文在一个特定的时钟周期是有效的。因此,如果总共有C个上下文,那么需要C个时钟周期来从所有的上下文发出一个指令。在每个时钟周期,一个上下文发出一个指令,令牌指示下一个线程发出一个指令。
在图3的例子中,令牌以顺序的或循环的方式设置,从而上下文将顺序地发出指令。然而,令牌指示下一个上下文发出指令可设置成使用其它模式,例如交替偶-奇模式。而且,如上所述,其它类型的线程操作也可以与本发明结合使用。下面将结合图7和8更详细地描述本发明的多个示例性线程操作技术。
图4显示了一种方式,在该方式中示例性指令函数可以在根据本发明的多线程处理器102中进行流水线处理。在本发明的示例性实施例中,该类型的流水线优选地与前面所述的令牌触发线程操作结合使用,但是应当理解流水线和线程操作的多种其它组合也可以用于实现本发明。
图4的流水线设置成与图3的示例性N=8个令牌触发线程结合使用。图4中示例性指令函数包括加载/存储(Ld/St),ALU,整数乘法(I_Mul)和矢量乘法(V_Mul),并且被显示成分别具有九,六,七和八个流水线阶段。
图4中所示的每个示例性指令流水线包括至少一个指令解码阶段,一个寄存器堆(RF)读入阶段,一个转移(Xfer)阶段和一个写回(WB)阶段。RF读入阶段包括从诸如寄存器堆118这样的寄存器堆读入,转移阶段典型地包括将指令结果转移到指定的保持寄存器,WB阶段包括将指令结果写回到存储器或寄存器堆。
Ld/St流水线进一步包括地址生成(Agen)阶段,内部(Int)或外部(Ext)确定阶段,和三个附加存储器执行阶段,其表示为Mem0,Mem1,Mem2。Ld/St流水线因此总共包括四个存储器执行阶段,也就是,Mem0,Mem1,Mem2和WB。内部或外部确定阶段确定相关的存储器访问是内部的还是外部的存储器,并且可以被看作为流水线中附加的解码阶段。应当注意可能要求附加的存储器执行阶段以用于某些外部存储器访问。例如,如果外部存储器访问的WB阶段在相应线程有效的期间未完成,那么该线程可以被中止,从而WB阶段将在下一次该线程有效的时候完成。
ALU流水线进一步包括由Exec1和Exec2表示的两个执行阶段。
整数I_Mul流水线进一步包括由Exec1,Exec2和Exec3表示的三个执行阶段。
矢量V_Mul流水线进一步包括两个乘法阶段MPY1和MPY2,和两个两个加法阶段Add1和Add2。
多线程处理器102优选地配置成一旦来自特定上下文的指令进入其相应流水线,它运行到完成。
使用适当配置的流水线和足够数量的线程,即使在每个周期每个上下文只发出一个单指令,所有的硬件上下文都可以并发地执行。如前面所指出的,所述特定数量的线程和流水线阶段仅仅是作为示例,并不意味着反映优选的实现方式。在这里所提供的教导下本领域的技术人员将能够容易地确定对于特定应用的合适数量的线程和流水线阶段。
现在将参考图5和6描述图4的流水线的操作的多个例子。图5和6每一个的图示都显示了由特定处理器线程发出的指令序列,并且为每个指令指示相应线程利用了寄存器堆118的偶数(e)部分还是奇数(o)部分。上述的序列号为No.10/269,373、发明名称为“多线程处理器中寄存器堆端口简化的方法和装置”的美国专利申请说明了寄存器堆118怎样可以被分为偶数和奇数部分的一个例子,使用线程标识符可选择这些部分中特定的一个。
在图5和6的例子中,为了描述的简化和清楚而假设线程的数量N等于4,及每个线程根据图3令牌触发线程操作的循环执行方式发出指令。更具体而言,在这些例子中每个线程发出交替的加载和矢量乘法指令,这是在许多信号处理应用中的一个典型的指令序列。该加载和矢量乘法指令基本上如图4所示的指令函数流水线所述的方式设置。
现在参考图5,其显示了单发流水线的一个例子,其中每个线程在每个周期发出一个指令。从图5中可以看出由发出的指令访问的寄存器堆部分在线程和线程之间以偶(e)和奇(o)交替。这保证了相邻寄存器写回操作,例如那些与线程4的第一加载指令和线程1的矢量乘法指令相关的操作,被引导到寄存器堆的不同部分。更具体而言,线程4的第一加载指令被引导到寄存器堆1的偶数部分,而线程1的矢量乘法指令被引导到寄存器堆的奇数部分。该图中所示的其它指令以类似的方式被设置。
线程标识符用于选择给定的线程将访问寄存器堆的偶数还是奇数部分。例如,在图5和6的N=4的情况下,线程标识符的最低有效位(LSB)能够用于在寄存器堆的偶数和奇数部分之间进行选择。
图6显示了一个示例性多发流水线,其中每个处理器线程在每个周期发出两个指令。在这里,单线程在每个周期发出加载和矢量乘法指令。由于在每个周期发出多个指令,因此图5的例子需要两个附加的寄存器堆读入端口。然而,在该图中可以看出,所有的并发写入仍然是寄存器的偶数或奇数部分,其由线程标识符的LSB确定,所以所需的寄存器堆写入端口数量和由此的处理器能量消耗被减少。
应当强调的是与图5和6结合的所示线程的特定数量仅仅是示例性的,本发明并不限于使用任何特定的线程数量。
图7显示了硬件线程单元702-i,i=1,2,…N的组700,其可以在根据本发明的图2多线程处理器中执行。如前面所述,这种硬件线程单元在这里也可以称为上下文,通常存在与处理器支持的每个线程相关的一个这种单元或上下文。每个硬件线程单元702包括一个线程标识符(TID)寄存器704和一个下一个线程标识符(NTID)寄存器706。另外,每个硬件线程单元702可以包括一个相应的线程高速缓冲110和数据高速缓冲112,以及或可选择的高速缓存控制器114或其它处理器电路的相关部分。
根据本发明,每个硬件线程单元702可以在一个给定的处理器周期发出一个或更多的指令。在一个给定硬件线程单元中的TID寄存器704存储相应线程的线程标识符。在该给定的硬件线程单元中的NTID寄存器706存储下一个硬件线程单元的线程标识符,该下一个硬件线程单元将在该给定的硬件线程单元已发出其指令(一个或多个)之后发出一个指令。该NTID寄存器706因此可以被看作存储关于本发明的令牌触发线程操作技术的令牌。该令牌可以被所述给定的硬件线程单元设置成任何其它硬件线程单元的线程标识符,由此在令牌触发多线程处理中提供很大的灵活性。
尽管在图7中作为可由相应硬件线程单元独立编程的局部寄存器示出,NTID寄存器也可以或可选择地作为可访问所有硬件线程单元的全局寄存器而实现。在该情况下,每个硬件线程单元不需要串连地增加全局NTID寄存器。例如,在硬件线程单元外部执行的状态机或其它类似的电路可以用于对全局NTID寄存器编程以提供任何期望的令牌序列。
图8显示了对应交替偶-奇模式的示例性令牌序列。在特定的N=8的令牌触发线程操作例子中的该令牌序列是线程0(T0),线程3(T3),线程2(T2),线程1(T1),线程6(T6),线程5(T5),线程4(T4),线程7(T7),线程0(T0),等等。
该例子表明如图7所示的NTID寄存器的使用允许每个上下文在一个偶-奇模式中将令牌授予任何其它上下文而不在执行流水线中导致任何冲突,由此不导致线程中止。该线程操作技术与指令流水线操作的组合明显地减小了阻塞状况的数量并允许偶-奇线程序列的任意执行。
如前面所述,线程标识符寄存器704存储多位线程标识符,多线程处理器102使用该多位线程标识符来识别特定的线程。这种线程标识符可以用传统方式产生,这对于本领域的技术人员是显而易见的。
这里所用的术语“线程标识符”意味着包括适合识别多线程处理器中特定线程或一组多线程的任何信息。作为示例而非限定,n位线程标识符可以用于唯一地识别该多线程处理器支持的N=2″线程中的一个。适合用于本发明的各种不同的线程标识符设置对于本领域的熟练技术人员来说是显而易见的。
如上所述,本发明的令牌触发线程操作技术与传统的技术相比具有明显的进步。例如,该技术能够大幅减小线程中止的可能性。而且,这些改进不会影响处理器的并发性或处理器性能的其它方面。
本发明的上述实施例意味着仅仅是示例性的,附加权利要求范围内多种可选择实施例对于本领域的熟练技术人员来说是显而易见的。例如,多线程处理器配置,线程的数量,线程标识符设置和该示例性实施例的其它参数可以进行变化以适应给定应用的特殊需要。

Claims (15)

1.一种控制多线程处理器的多个线程的指令发出序列的方法,该方法包括以下步骤:
将每个所述线程与至少一个寄存器相关联,所述至少一个寄存器存储用来识别将被允许发出一个或多个指令的下一个线程的值;和
利用该存储的值来控制该指令发出序列;
其中所述多线程处理器包括多个并行运行的硬件线程单元,每个硬件线程单元配置成用于在一个给定的处理器时钟周期为对应的一个线程发出一个或多个指令,为所述对应的线程存储的值为给定的一个硬件线程单元指出,将被允许在所述给定的硬件线程单元已发出一个或多个指令后发出一个或多个指令的另一个硬件线程单元,由此为所述多个线程存储的值允许所述并行运行的硬件线程单元在连续的时钟周期以任意的顺序发出指令。
2.根据权利要求1所述的方法,其中所述关联步骤进一步包括将所述多线程处理器的多个硬件线程单元的每一个与可由该硬件线程单元升级的相应的局部寄存器相关联的步骤,用于所述硬件线程单元中给定之一的局部寄存器存储一个用来识别将被允许在所述给定的硬件线程单元已发出一个或多个指令后发出一个或多个指令的下一个线程的所述的值。
3.根据权利要求1的方法,其中所述关联步骤进一步包括将多个寄存器与多个硬件线程单元相关联的步骤,所述多个寄存器包括用于每个所述硬件线程单元的一个线程标识符寄存器,该线程标识符寄存器存储相应硬件线程单元的线程标识符,和下一个线程标识符寄存器,该下一个线程标识符寄存器存储指定硬件线程单元中将被允许发出一个或多个指令的下一个硬件线程单元的下一个线程标识符。
4.根据权利要求1的方法,其中所述关联步骤进一步包括将每个所述线程和至少一个可访问每个所述线程的全局寄存器相关联的步骤,当由所述线程中给定之一发出指令后,该全局寄存器的内容识别将被允许根据所述指令发出序列发出一个或多个指令的另一个线程。
5.根据权利要求1的方法,其中所述关联和利用步骤设置成允许所述指令发出序列对应任意的交替偶-奇线程序列,同时不引起导致线程中止的堵塞状况。
6.根据权利要求1的方法,其中所述至少一个寄存器包括一个n位寄存器,该寄存器适合存储2n线程中给定之一的唯一标识符。
7.根据权利要求1的方法,其中所述至少一个寄存器与一个线程高速缓冲相关联,该线程高速缓冲对应所述多线程处理器的一个特定线程。
8.根据权利要求1的方法,其中存储在所述至少一个寄存器中的所述值包括关于令牌触发线程操作的令牌。
9.根据权利要求8的方法,其中所述令牌触发线程操作利用该令牌来在当前的处理器周期中识别所述多个线程中将被允许在下一个时钟周期发出一个指令的特定的一个线程。
10.根据权利要求8的方法,其中所述令牌触发线程操作将不同的令牌分配到所述多线程处理器的多个线程中的每一个。
11.根据权利要求1的方法,其中所述多线程处理器配置成用于流水线指令处理。
12.根据权利要求11的方法,其中所述多线程处理器利用指令流水线,在该指令流水线中每个线程在每个处理器时钟周期中发出单指令。
13.根据权利要求11的方法,其中所述多线程处理器利用指令流水线,在该指令流水线中每个线程在每个处理器时钟周期中发出多个指令。
14.根据权利要求13的方法,其中多个所述线程中的每一个在相应多个处理器时钟周期中的每一个发出加载指令和矢量乘法指令,同时不中止所述多个线程。
15.一种多线程处理器,其包括多个并行运行的硬件线程单元并且配置成用于控制该多线程处理器的多个线程的指令发出序列,其中在该处理器中,每个所述线程与至少一个寄存器相关联,所述至少一个寄存器存储用来识别将被允许发出一个或多个指令的下一个线程的值,该存储的值用于控制该处理器的所述指令发出序列;
其中每个硬件线程单元配置成用于在一个给定的处理器时钟周期为对应的一个线程发出一个或多个指令,为所述对应的线程存储的值为给定的一个硬件线程单元指出,将被允许在所述给定的硬件线程单元已发出一个或多个指令后发出一个或多个指令的另一个硬件线程单元,由此为所述多个线程存储的值允许所述并行运行的硬件线程单元在连续的时钟周期以任意的顺序发出指令。
CNB200380102976XA 2002-10-11 2003-10-09 令牌触发多线程操作的方法和装置 Expired - Lifetime CN100428282C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/269,245 US6842848B2 (en) 2002-10-11 2002-10-11 Method and apparatus for token triggered multithreading
US10/269,245 2002-10-11

Publications (2)

Publication Number Publication Date
CN1711563A CN1711563A (zh) 2005-12-21
CN100428282C true CN100428282C (zh) 2008-10-22

Family

ID=32068734

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB200380102976XA Expired - Lifetime CN100428282C (zh) 2002-10-11 2003-10-09 令牌触发多线程操作的方法和装置

Country Status (7)

Country Link
US (1) US6842848B2 (zh)
EP (2) EP1550089B1 (zh)
JP (1) JP2006502505A (zh)
KR (1) KR100991912B1 (zh)
CN (1) CN100428282C (zh)
AU (1) AU2003282487A1 (zh)
WO (1) WO2004034340A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102495726A (zh) * 2011-11-15 2012-06-13 无锡德思普科技有限公司 机会多线程方法及处理器
CN103150149A (zh) * 2013-03-26 2013-06-12 华为技术有限公司 处理数据库重做数据的方法和装置

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006529043A (ja) 2003-05-09 2006-12-28 サンドブリッジ テクノロジーズ インコーポレーテッド 飽和あり、または飽和なしで、オペランドの積和を実行するプロセッサ簡約ユニット
US7475222B2 (en) * 2004-04-07 2009-01-06 Sandbridge Technologies, Inc. Multi-threaded processor having compound instruction and operation formats
US7797363B2 (en) * 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
TW200625097A (en) * 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
US20070223599A1 (en) * 2005-07-25 2007-09-27 Sysair, Inc., A Delaware Corporation Cellular PC modem architecture and method of operation
US20070156928A1 (en) * 2005-12-30 2007-07-05 Makaram Raghunandan Token passing scheme for multithreaded multiprocessor system
KR20090078790A (ko) * 2006-09-26 2009-07-20 샌드브리지 테크놀로지스, 인코포레이티드 무선 통신 시스템에서 매트릭스 변환 소프트웨어 구현을 위한 장치 및 방법
EP2080104A4 (en) * 2006-11-10 2010-01-06 Sandbridge Technologies Inc METHOD AND SYSTEM FOR PARALLELING PIPE-LINE CALCULATIONS
EP2159688A4 (en) * 2007-06-20 2011-01-05 Fujitsu Ltd INSTRUCTION MANAGEMENT CONTROL AND INSTRUCTION MANUAL CONTROL PROCEDURES
KR20100108509A (ko) * 2007-11-05 2010-10-07 샌드브리지 테크놀로지스, 인코포레이티드 레지스터 명령 필드를 인코딩하는 방법
WO2009076654A1 (en) * 2007-12-12 2009-06-18 University Of Washington Deterministic multiprocessing
EP2250539A1 (en) * 2008-01-30 2010-11-17 Sandbridge Technologies, Inc. Method for enabling multi-processor synchronization
WO2009105332A1 (en) * 2008-02-18 2009-08-27 Sandbridge Technologies, Inc. Method to accelerate null-terminated string operations
US8762641B2 (en) * 2008-03-13 2014-06-24 Qualcomm Incorporated Method for achieving power savings by disabling a valid array
US8732382B2 (en) 2008-08-06 2014-05-20 Qualcomm Incorporated Haltable and restartable DMA engine
US8521788B2 (en) * 2011-12-08 2013-08-27 Oracle International Corporation Techniques for maintaining column vectors of relational data within volatile memory
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US9342314B2 (en) 2011-12-08 2016-05-17 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
GB2499277B (en) * 2012-08-30 2014-04-02 Imagination Tech Ltd Global register protection in a multi-threaded processor
US9292569B2 (en) 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration
US10318305B2 (en) 2013-09-06 2019-06-11 Huawei Technologies Co., Ltd. System and method for an asynchronous processor with pepelined arithmetic and logic unit
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US9430390B2 (en) 2013-09-21 2016-08-30 Oracle International Corporation Core in-memory space and object management architecture in a traditional RDBMS supporting DW and OLTP applications
US9766895B2 (en) * 2014-02-06 2017-09-19 Optimum Semiconductor Technologies, Inc. Opportunity multithreading in a multithreaded processor with instruction chaining capability
US9766894B2 (en) 2014-02-06 2017-09-19 Optimum Semiconductor Technologies, Inc. Method and apparatus for enabling a processor to generate pipeline control signals
US9558000B2 (en) 2014-02-06 2017-01-31 Optimum Semiconductor Technologies, Inc. Multithreading using an ordered list of hardware contexts
JP5630798B1 (ja) * 2014-04-11 2014-11-26 株式会社Murakumo プロセッサーおよび方法
US10180841B2 (en) 2014-12-22 2019-01-15 Centipede Semi Ltd. Early termination of segment monitoring in run-time code parallelization
US10296350B2 (en) * 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences
US10296346B2 (en) * 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences based on pre-monitoring
US10073885B2 (en) 2015-05-29 2018-09-11 Oracle International Corporation Optimizer statistics and cost model for in-memory tables
US9990308B2 (en) 2015-08-31 2018-06-05 Oracle International Corporation Selective data compression for in-memory databases
US10055358B2 (en) 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
WO2023249637A1 (en) * 2022-06-24 2023-12-28 Zeku, Inc. Apparatus and method to implement a token-based processing scheme for virtual dataplane threads

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339415A (en) * 1990-06-11 1994-08-16 Cray Research, Inc. Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5613114A (en) * 1994-04-15 1997-03-18 Apple Computer, Inc System and method for custom context switching
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US6151683A (en) * 1997-03-31 2000-11-21 Sun Microsystems, Inc. Rebuilding computer states remotely
US6341338B1 (en) * 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682491A (en) 1994-12-29 1997-10-28 International Business Machines Corporation Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier
US6128720A (en) 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US5649135A (en) 1995-01-17 1997-07-15 International Business Machines Corporation Parallel processing system and method using surrogate instructions
US5659785A (en) 1995-02-10 1997-08-19 International Business Machines Corporation Array processor communication architecture with broadcast processor instructions
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US5799182A (en) * 1997-01-21 1998-08-25 Ford Motor Company Multiple thread micro-sequencer apparatus and method with a single processor
US6298431B1 (en) * 1997-12-31 2001-10-02 Intel Corporation Banked shadowed register file
US6079010A (en) 1998-03-31 2000-06-20 Lucent Technologies Inc. Multiple machine view execution in a computer system
US6317821B1 (en) 1998-05-18 2001-11-13 Lucent Technologies Inc. Virtual single-cycle execution in pipelined processors
US6260189B1 (en) 1998-09-14 2001-07-10 Lucent Technologies Inc. Compiler-controlled dynamic instruction dispatch in pipelined processors
US6256725B1 (en) 1998-12-04 2001-07-03 Agere Systems Guardian Corp. Shared datapath processor utilizing stack-based and register-based storage spaces
US6230251B1 (en) 1999-03-22 2001-05-08 Agere Systems Guardian Corp. File replication methods and apparatus for reducing port pressure in a clustered processor
US6282585B1 (en) 1999-03-22 2001-08-28 Agere Systems Guardian Corp. Cooperative interconnection for reducing port pressure in clustered microprocessors
US6269437B1 (en) 1999-03-22 2001-07-31 Agere Systems Guardian Corp. Duplicator interconnection methods and apparatus for reducing port pressure in a clustered processor
JP4693326B2 (ja) * 1999-12-22 2011-06-01 ウビコム インコーポレイテッド 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339415A (en) * 1990-06-11 1994-08-16 Cray Research, Inc. Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5613114A (en) * 1994-04-15 1997-03-18 Apple Computer, Inc System and method for custom context switching
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US6151683A (en) * 1997-03-31 2000-11-21 Sun Microsystems, Inc. Rebuilding computer states remotely
US6341338B1 (en) * 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102495726A (zh) * 2011-11-15 2012-06-13 无锡德思普科技有限公司 机会多线程方法及处理器
CN102495726B (zh) * 2011-11-15 2015-05-20 无锡德思普科技有限公司 机会多线程方法及处理器
CN103150149A (zh) * 2013-03-26 2013-06-12 华为技术有限公司 处理数据库重做数据的方法和装置
CN103150149B (zh) * 2013-03-26 2015-11-25 华为技术有限公司 处理数据库重做数据的方法和装置
US10387258B2 (en) 2013-03-26 2019-08-20 Huawei Technologies Co., Ltd. Method and apparatus for processing redo data in database

Also Published As

Publication number Publication date
AU2003282487A1 (en) 2004-05-04
JP2006502505A (ja) 2006-01-19
EP2650778B1 (en) 2017-07-19
WO2004034340A2 (en) 2004-04-22
US20040073781A1 (en) 2004-04-15
WO2004034340A3 (en) 2004-08-26
EP1550089A2 (en) 2005-07-06
CN1711563A (zh) 2005-12-21
EP1550089B1 (en) 2016-11-23
EP2650778A1 (en) 2013-10-16
EP1550089A4 (en) 2007-06-06
AU2003282487A8 (en) 2004-05-04
KR100991912B1 (ko) 2010-11-04
US6842848B2 (en) 2005-01-11
KR20050073484A (ko) 2005-07-13

Similar Documents

Publication Publication Date Title
CN100428282C (zh) 令牌触发多线程操作的方法和装置
EP0851343B1 (en) System for processing floating point operations
US5129067A (en) Multiple instruction decoder for minimizing register port requirements
JP4187720B2 (ja) マルチスレッド・プロセッサにおけるレジスタ・ファイルのポートを削減するための方法および装置
KR101303119B1 (ko) 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서
US5450556A (en) VLIW processor which uses path information generated by a branch control unit to inhibit operations which are not on a correct path
CN1332303C (zh) 用于多线程处理器中基于线程的存储器存取的方法和装置
JP2002536738A (ja) 間接vliwプロセッサにおける実行時間並列処理のための動的vliwサブ命令選択システム
US6003126A (en) Special instruction register including allocation field utilized for temporary designation of physical registers as general registers
JPH1165844A (ja) パイプラインバイパス機能を有するデータ処理装置
US7730284B2 (en) Pipelined instruction processor with data bypassing and disabling circuit
EP1623318B1 (en) Processing system with instruction- and thread-level parallelism
WO2000068783A2 (en) Digital signal processor computation core

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
ASS Succession or assignment of patent right

Owner name: ASPEN ACQUISITION CORP.

Free format text: FORMER OWNER: SANDBRIDGE TECHNOLOGIES INC.

Effective date: 20110318

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: NEW YORK, THE USA TO: CALIFORNIA, THE USA

TR01 Transfer of patent right

Effective date of registration: 20110318

Address after: California, USA

Patentee after: SANDBRIDGE TECHNOLOGIES, Inc.

Address before: American New York

Patentee before: Sandbridge Technologies, Inc.

ASS Succession or assignment of patent right

Owner name: QUALCOMM INC.

Free format text: FORMER OWNER: ASPEN ACQUISITION CORP.

Effective date: 20130109

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20130109

Address after: California, USA

Patentee after: QUALCOMM Inc.

Address before: California, USA

Patentee before: SANDBRIDGE TECHNOLOGIES, Inc.

CX01 Expiry of patent term

Granted publication date: 20081022

CX01 Expiry of patent term