CN100342325C - 减少多线程处理器中寄存器文件端口的方法和装置 - Google Patents

减少多线程处理器中寄存器文件端口的方法和装置 Download PDF

Info

Publication number
CN100342325C
CN100342325C CNB2003801023301A CN200380102330A CN100342325C CN 100342325 C CN100342325 C CN 100342325C CN B2003801023301 A CNB2003801023301 A CN B2003801023301A CN 200380102330 A CN200380102330 A CN 200380102330A CN 100342325 C CN100342325 C CN 100342325C
Authority
CN
China
Prior art keywords
thread
processor
register file
multiline procedure
procedure processor
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
CNB2003801023301A
Other languages
English (en)
Other versions
CN1708745A (zh
Inventor
E·霍凯奈克
M·穆吉尔
C·J·格洛斯纳
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 CN1708745A publication Critical patent/CN1708745A/zh
Application granted granted Critical
Publication of CN100342325C publication Critical patent/CN100342325C/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

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)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

公开了用于多线程处理器的基于线程的寄存器文件存取的技术。多线程处理器确定与具体的处理器线程相关的线程标识符,并使用至少一部分的线程标识符来选择与对应的处理器线程将要存取的相关寄存器的具体部分。在示意性实施例中,寄存器文件被分成偶数和奇数部分,使用线程标识符的最低有效位或其它部分来选择供给定的处理器线程使用的偶数部分或奇数部分。基于线程的寄存器文件可结合权标触发的线程和指令流水线来使用。本发明有利地降低了寄存器文件端口需求并由此降低了功耗,同时保持了预期的并发水平。

Description

减少多线程处理器中寄存器文件端口的方法和装置
相关申请
本发明与以下美国专利申请中公开的发明相关:美国专利6925643,标题为“用于多线程处理器中基于线程的存储器存取的方法和装置”;美国专利6968445,标题为“能有效处理会聚设备应用的多线程处理器”;美国专利6842848,标题为“权标触发多线程的方法和装置”。上述申请被同时提交,且其内容以引用方式结合在此处。
技术领域
本发明通常涉及数字数据处理器领域,更特别地涉及多线程处理器中使用的寄存器文件存取技术。
背景技术
计算机系统或其它基于处理器的系统中的存储空间通常分成存储器和寄存器。例如,在M.J.Flynn的“计算机结构:流水线与并行处理器设计”(Jones和Bartlett出版商,Boston,MA,1995),和G.A.Blaauw和Frederick P.Brooks的“计算机结构:概念与演变”(Addison-Wesley,Reading,Massachusetts,1997)中说明了传统的寄存器文件配置,在此引用两者的内容。
给定的寄存器文件可以是所谓的“通用”寄存器文件,其通常是指适用于存储与处理器中多个指令函数相关的中间或其它临时结果的寄存器文件。从过去来看,每个处理器周期只有一个指令能够有效地存取通用寄存器文件,因此所需的寄存器端口数量是最小的。但是,现代的处理器在给定的处理器周期内通常具有许多有效指令,因此每个处理器周期存取多个寄存器文件。例如,多线程处理器通过同时运行多个不同的指令序列或“线程”来提供高并发性,临时结果存储在寄存器文件中。
现代处理器中的这些和其它的类似设置能够导致大幅增加“端口压力”,即,增加了所需的寄存器文件端口的数量。非常遗憾,与寄存器文件端口压力相关的重要问题是,增加寄存器文件端口的数量同时也明显增加了处理器的功耗。通常,与寄存器文件端口相关的功耗主要归因于寄存器文件的写入端口。
包括通用寄存器文件的现代处理器的示例是Texas Instruments(TI)C64x,在TMS320C6000 CPU和指令组参考指导,SPRZ168B(http://www-s.ti.com/sc/psheets/sprzl168b/sprzl168b.pdf)中有说明,此处引用其内容。TI C64x使用一种类型的超长指令字(VLIW)系统结构,其中每个周期能够发出最多8个指令,一个指令控制处理器的一个运行单元。处理器寄存器文件包括64个寄存器。构造该C64x,使得每个指令能够存取所有的64个寄存器,需要26个读取端口和18个写入端口,总共44个端口。但是,由于这样的设置很难处理,所以C64x的设计者转而决定,将寄存器文件存取分成两半,由此为程序员设置了限制,同时将两半之间的端口分开。尽管如此,C64x仍然需要总共44个端口。
因此降低端口压力是现代处理器设计的重要方面,特别是对于多线程处理器和其中在给定的处理器周期中许多指令可以是有效的其它处理器。本领域中需要用于降低端口压力的技术,以便降低处理器功耗,而不影响期望的并发水平。
发明内容
本发明提供一种改进的寄存器文件配置以及用于多线程处理器的相关的基于线程的寄存器文件选择技术。
按照本发明,多线程处理器确定与具体处理器线程相关的线程标识符,并使用至少一部分的线程标识符来选择将由对应的处理器线程存取的寄存器文件的特定部分。例如,可以利用线程标识符的最低有效位或其它部分来选择寄存器文件的偶数部分和奇数部分的其中之一。
作为更特别的示例,给定的通用寄存器文件可被构成为多个偶数组寄存器和多个奇数组寄存器,一部分线程标识符用于使多个偶数组寄存器或多个奇数组寄存器启动。
本发明的其它方面涉及权标触发的线程和流水线指令处理。例如,可构造多线程处理器来实施权标触发的线程。这种类型的线程结合当前处理器时钟周期,利用权标来识别具体的硬件线程单元或允许发布用于随后时钟周期的指令的上下文。
有利的是,本发明明显降低了所需的寄存器文件写入端口的数量,并因此降低了处理器功耗,而处理器性能没有任何损失。例如,在示意性的实施例中,能够在单个处理器周期中使用单个写入端口实现对寄存器文件的多个写入存取。
附图说明
图1是其中实施了本发明的示例性处理系统的方块图;
图2是图1中处理系统的多线程处理器的示意性实施例的更详细的方块图;
图3示出了按照本发明技术的适用于图2的多线程处理器的权标触发的线程的示例;
图4给出了按照本发明技术的在图2的多线程处理器中可流水线处理的示例的指令函数所采用的方式;
图5给出了单个发布流水线的示例,其中图2的处理器的每个线程在每个周期上发出一个指令;
图6示出了示例的多发布流水线,其中图2处理器的每个线程在每个周期发出两个指令;
图7示出了按照本发明的基于线程的寄存器文件选择技术构造的图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与和各线程高速缓存存储器110-1、110-2、…、110-N相关的逻辑电路或其它的处理元件协同工作,其实施了至少一部分的地址映射技术,例如完全联想映射、直接映射或组联想映射(set-associative mapping)。在美国专利申请序列号为第10/161,774和第10/161,874中说明了适于与本发明结合使用的组联想映射技术,两者都是在2002年6月4日提交的并与本发明共同转让,在此引用两者的内容。
通常,多线程高速缓存存储器110用于存储将由多线程处理器102运行的指令,而数据存储器112存储该指令所操作的数据。指令译码器116从多线程高速缓存存储器110获取指令,其中指令译码器116以传统的方式在控制指令的运行中与寄存器文件118和ALU 120协同工作。多线程处理器元件例如,116和120的操作是本领域公知的,因此此处不再详细说明。
数据存储器112通常直接连接到主存储器104,尽管在附图中没有显示此连接。
可以单个构成一个和多个存储器104、110和112,使其包括多个体或其它的指定部分。作为示例,每个体可以被视为由一个或多个存储模块或单个存储模块的特定部分构成。
在美国专利6925643,标题为“用于多线程处理器中基于线程的存储器的存取方法和装置”的美国专利申请中说明了对与多线程处理器相关的这些和其它存储器进行基于线程的分体的技术。
应当强调的是,本发明不要求如图2所示的特别的多线程处理器构造。能够以各种形式的其它多线程处理器构造来实施本发明。
在2001年12月20日提交的美国临时专利申请第60/341,289号中说明了图2所示类型的且适于与本发明结合使用的多线程处理器的更具体示例,其内容通过引用并入此处。作为美国临时专利申请第60/341,289号中说明的多线程处理器的示意性实施例,其能够运行基于RISC的控制代码、数字信号处理器(DSP)代码、Java代码和网络处理代码。该处理器包括单指令多数据(SIMD)矢量单元、缩小单元(reduction unit)和长指令字(LIW)复合指令运行。
按照本发明的一个方面,本发明实质上减少例如图2中处理器102的多线程处理器所需的寄存器文件端口。更具体地,如下面更详细的说明,按照本发明的技术构造处理器102,以结合权标触发线程和指令流水线利用基于线程的寄存器文件的区分,减少寄存器文件端口需求。在其它的优点中,这种配置允许单个寄存器文件写入端口支持多个同时写入。
图3给出了处理器102实施的权标触发的线程,其中线程数N是8。通常,所有的线程同时工作,每次存取线程高速缓存存储器110和数据存储器112的对应情况。如图3所示,8个线程被标记为线程0、线程1、线程2、…、线程7,并且以环形顺序的相连。在多线程处理器中,通常能够在硬件以及软件方面观察给定的线程。因此,将与给定线程相关的特定的处理器硬件称作硬件线程单元或简单的称作“上下文”。
按照图3所示的权标触发线程,允许所有的硬件线程单元或上下文同时运行指令,但是只有一个上下文可以在处理器的特定时钟周期中发出指令。换句话说,所有的上下文同时运行,但是在特定的时钟周期上只有一个上下文是有效的。因此,如果存在总共C个上下文,则需要C个时钟周期来从所有的上下文发出指令。每个时钟周期有一个上下文发出指令,并且将发出指令的下一个线程由权标表示。在图3的示例中,以顺序或循环方式排列权标,因此上下文将顺序的发出指令。但是,可以使用其它的方式来排列用于表示将发出指令的上下文的权标,例如奇偶交替的方式。此外,如上所述,其它类型的线程可以与本发明结合使用。
图4给出了按照本发明的在多线程处理器102中流水线处理示例的指令功能所采用的方式。在本发明的示意性实施例中,这种类型的流水线最好与上述的权标触发线程结合使用,但是应当清楚,流水线与线程的多种其它组合也可用于实施本发明。
图4的流水线用于与图3所示的N=8的权标触发线程结合使用。图4中示例的指令功能包括负载/存储(Ld/St)、ALU、整数乘法(I_Mul)和矢量乘法(V_Mul),并且显示了分别具有9、6、7和8个流水线阶段。
图4中所示的每个指令流水线示例至少包括指令解码阶段、寄存器文件(RF)读取阶段、传递(Xfer)阶段和回写(WB)阶段。RF读取阶段涉及从例如寄存器文件118的寄存器文件读取,传递阶段通常涉及将指令结果传递到指定的保持寄存器,WB阶段涉及将指令结果回写到存储器或寄存器文件中。
Ld/St流水线还包括地址发生(Agen)阶段、内部(Int)或外部(Ext)确定阶段和表示为Mem0、Mem1和Mem2的3个另外的存储器运行阶段。因此Ld/St流水线包括总共4个存储器运行阶段,表示为Mem0、Mem1、Mem2和WB。内部或外部确定阶段确定相关的存储器存取是否针对内部或外部存储器,并可以视为流水线内的另外的解码阶段。应当注意,对于确定的外部存储器存取可要求额外的存储器运行阶段。例如,如果在对应的线程有效的时间周期内没有完成外部存储器存取的WB阶段,则停止该线程,使得在该线程有效的下一个时间周期内完成WB阶段。
ALU流水线还包括表示为Exec 1和Exec 2的两个运行阶段。
内部I_Mul流水线还包括表示为Exec 1、Exec2和Exec 3的三个运行阶段。
矢量V_Mul流水线还包括表示为MPY 1和MPY 2的两个乘法阶段,Add 1和Add 2的两个加法阶段。
最好将多线程处理器102配置成使得一旦来自特定上下文的指令进入其对应的流水线就完成运行。
通过适当的配置流水线和足够数量的线程,可同时运行所有的硬件上下文,即使每个周期每个上下文只发出单个指令。如上所述,线程和流水线阶段的特定数量只是示意性的,并不反映优选实施例。本领域技术人员能够轻易的为此处所提供的技术的特定应用确定适当数量的线程和流水线阶段。
现在参照图5和6说明图4中流水线操作的多个示例。图5和6的附图每个都显示了由具体处理器线程发出的指令序列,每个指令表示对应的线程是否利用了寄存器文件118的偶数(e)部分或奇数(o)部分。图7给出了按照本发明技术的寄存器文件118如何被分成偶数和奇数部分的示例,其中可利用线程标识符选择一个特定的端口。
在图5和6的示例中,为了使说明简单清楚而假设线程数量N等于4,且每个线程按照图3中权标触发线程的循环实施方式发出指令。更具体地,在这些示例中的每个线程发出交替的负载和矢量乘指令,这是许多信号处理应用中典型的指令序列。基本上按照图4所示的指令函数流水线所述的来配置负载和矢量乘指令。
现参照图5,其显示了单个发布流水线,其中每个线程在每个周期发出一个指令。从图5可见,由发布的指令存取的寄存器文件端口在偶数(e)和奇数(o)之间的线程交替。这确保了临近的寄存器回写操作被指向寄存器文件的不同部分,回写操作是例如与线程4的第一负载指令和线程1的矢量乘指令的回写阶段相关的操作。更具体地,线程4的第一负载指令被指向寄存器文件的偶数部分,而线程1的矢量乘指令被指向寄存器文件的奇数部分。类似地配置附图中所示的其它指令。
如结合图7所述,线程标识符用于选择给定的线程将存取寄存器文件的偶数部分还是奇数部分。例如,在图5和6的N=4的情况下,线程标识符的最低有效位(LSB)能够用于在寄存器文件的偶数和奇数部分之间选择。
图6显示了多个发布流水线的示例,其中每个处理器线程每个周期发出两个指令。此处,单个线程在每个周期发出负载和矢量乘指令。因为每个周期发出多个指令,所以相对于图5的示例需要两个额外的寄存器文件读取端口。但是,如从附图所见,按照线程标识符的LSB所确定的,所有的并发写入仍针对寄存器文件的偶数或奇数部分。
应当强调,图5和6所示的线程的特定数量仅是示例性的,本发明并不限制使用任何特定的线程数量。
图7示出了按照本发明的上述基于线程的寄存器文件选择技术,构造多线程处理器102的寄存器文件118所采用的方式。所示的寄存器文件118与处理器电路700相关,处理器电路700还包括线程标识符寄存器702和选择电路704。在此实施例中,可以是与处理器102相关的通用寄存器文件或其它类型寄存器文件的寄存器文件118,被配置成多个偶数组的寄存器和多个奇数组的寄存器。更具体地,寄存器文件118被分成包括偶数寄存器组T0和T2的偶数部分以及包括奇数寄存器组T1和T3的奇数部分。
在N=4的实施例中,每个寄存器组T0、T1、T2、和T3通常对应4个线程的其中一个,并包括所示的8个矢量寄存器V0、V1、V2、…、V7。在此示意性实施例中,8个矢量寄存器V0、V1、V2、…、V7的每一个都包括4个矢量元件,例如每个40位。例如,寄存器组T0中的矢量寄存器V7包括表示为V28、V29、V30和V31的4个矢量元件。当然,这种特定的布置只是示例性的,可以使用多种其它的配置。
使用存储在线程标识符寄存器702中的一部分线程标识符来使偶数组的寄存器或奇数组的寄存器工作。选择电路704包括多路器,多路器基于线程标识符将enable_even和enable_odd输出的其中之一驱动到逻辑高电平,同时将另一个驱动到逻辑低电平。
类似于图7所示的寄存器文件配置也能够使用N以外的其它值。例如,此配置可用在N=8的实施例中,在选择过程中使用线程标识符的附加位。
上述配置允许寄存器文件118包括明显降低数量的写入端口,因此具有比使用传统技术所需功耗更低的功耗。在图7所示的特定配置中,对于4线程实施例,能够只利用单个写入端口配置寄存器文件的每个偶数和奇数部分。
多个可选的寄存器文件配置能够使用本发明的技术。例如,一种可能的可选配置是将寄存器文件分成多于两个部分,其中可使用线程标识符的附加位来为给定的处理器线程的存取选择寄存器文件的特定部分。更一般地,可使用线程标识符的n个最低有效位来选择给定的寄存器文件的2n个不同部分之一。
利用偶数和奇数部分的基于线程选择,另一种可能的可选配置是将寄存器文件至少分成偶数和奇数部分。更一般地,可将单个寄存器文件分成2n个不同部分。
因此,此处所使用的术语“寄存器文件”倾向于包括一个或多个寄存器的任何配置。因此作为示例且不具有限制性,给定的寄存器文件可以包括一个或多个通用寄存器、辅助寄存器、分支寄存器、程序寄存器等及其一部分或组合。
线程标识符寄存器702和相关的选择电路704可以优选的实施为多线程处理器102的元件。例如,这些元件可以整体或部分形成在高速缓存存储器控制器114或多线程处理器102的其它部分中。
线程标识符寄存器702存储多位线程标识符,多线程处理器102使用线程标识符识别特定的线程。可以传统的方式生成这样的线程标识符,其对于本领域技术人员是显而易见的。
此处所使用的术语“线程标识符”倾向于包括任何适于识别多线程处理器中特定的线程或一组多线程的信息。作为示例且不具有限制性,线程标识符可以对应于多线程处理器中的线程计数器的输出。更具体地,可构成给定的多线程处理器使得以预定顺序处理多线程,例如循环顺序,线程计数器的输出用于识别正被运行的特定的线程。在这样的实施例中,共存在8个以循环顺序处理的线程,如图3所示,每个线程由三位标识符识别,因此三位计数器的输出能够用于识别正被处理的特定的线程。其它的实施例可以使用线程标识符的非计数器实施方式。对于本领域技术人员来说,适于本发明使用的各种不同的线程标识符配置是显而易见的。
如上所述,本发明的基于线程的寄存器文件选择技术相对于传统技术提供了明显的改进。例如,该技术能够实质上减少所需的寄存器文件写入端口的数量,由此降低了功耗。而且,这些改进没有影响处理器并发性或其它方面的处理器性能。
本发明的上述实施例只是示意性的,在后附权利要求范围内的各种可选实施例对于本领域技术人员是显而易见的。例如,如上所述,适当的增加用于选择给定部分的线程够标识符的位数,给定的寄存器文件可以分成多于如图5、6和7所示的偶数部分和奇数部分,即,能够分成n个不同的部分。作为另一个示例,用于实施选择过程的具体的选择电路配置可由可选的配置来替换。而且,能够改变多线程处理器构造、线程的数量、线程标识符配置以及可选实施例的其它参数,以满足给定应用的具体需要。

Claims (19)

1.一种用于存取与多线程处理器相关的寄存器文件的方法,该多线程处理器具有高速缓存存储器,该方法包括以下步骤:
确定与所述多线程处理器的具体线程相关的线程标识符;
使用至少一部分的所述线程标识符来选择将由对应的处理器线程存取的所述寄存器文件的特定部分;
其中寄存器文件不以高速缓存存储器的形式来实现,并且与多线程处理器的高速缓存存储器分开;以及
其中寄存器文件被分成多个部分,而没有将这些部分的任何一个特定部分的单独使用分配给任何单个线程,使得通过至少两个线程存取这些部分的一个给定部分,所述至少两个线程在多个处理器时钟周期上交替存取寄存器文件的所述给定部分。
2.如权利要求1所述的方法,其中使用步骤还包括以下步骤:利用线程标识符的一部分来为对应的处理器线程的存取选择所述寄存器文件的偶数部分和奇数部分的其中一个。
3.如权利要求2所述的方法,其中该部分线程标识符包括线程标识符的一个或多个最低有效位。
4.如权利要求1所述的方法,其中该部分的线程标识符被施加到选择电路,所述选择电路产生用于所述寄存器文件的特定部分的使能信号。
5.如权利要求1所述的方法,其中所述寄存器文件包括2n个不同的部分,并使用所述线程标识符的n个最低有效位来选择所述寄存器文件的2n个不同部分以用于对应的处理器线程存取。
6.如权利要求1所述的方法,其中所述寄存器文件包括通用寄存器文件。
7.如权利要求1所述的方法,其中所述多线程处理器包括用于存储所述线程标识符的线程标识符寄存器。
8.如权利要求7所述的方法,其中所述多线程处理器包括与所述多线程处理器的特定线程对应的线程高速缓存存储器,以及其中所述线程高速缓存存储器包括所述线程标识符寄存器。
9.如权利要求1所述的方法,其中构造所述多线程处理器以使用权标触发的线程。
10.如权利要求9所述的方法,其中所述权标触发的线程结合当前处理器时钟周期,利用权标来识别允许发布用于随后时钟周期的指令的上下文。
11.如权利要求9所述的方法,其中所述权标触发的线程为所述多线程处理器的多个线程的每一个分配不同的权标。
12.如权利要求1所述的方法,其中针对流水线指令处理构成多线程处理器。
13.如权利要求12所述的方法,其中所述多线程处理器使用指令流水线,所述指令流水线中每个线程在每个处理器时钟周期发出单个指令。
14.如权利要求12所述的方法,其中所述多线程处理器使用指令流水线,所述指令流水线中每个线程在每个处理器时钟周期发出单个指令。
15.如权利要求1所述的方法,其中所述寄存器文件包括单个寄存器。
16.如权利要求1所述的方法,其中所述寄存器文件包括多个寄存器。
17.一种用于存取与多线程处理器相关的寄存器文件的方法,该方法包括以下步骤:
确定与所述多线程处理器的具体线程相关的线程标识符;
使用至少一部分的所述线程标识符来选择将由对应的处理器线程存取的所述寄存器文件的特定部分;
其中所述寄存器文件包括多个偶数组的寄存器和多个奇数组的寄存器,并且使用步骤还包括或者使多个偶数组的寄存器或者使多个奇数组的寄存器由所述对应的处理器线程存取;以及
其中所述寄存器文件被分成偶数部分和奇数部分,而没有将这些部分的任何一个特定部分的单独使用分配给任何单个线程,使得通过至少两个线程存取这些部分的一个给定部分,所述至少两个线程在多个处理器时钟周期上交替存取寄存器文件的所述给定部分。
18.一种用于存取与多线程处理器相关的寄存器文件的方法,该方法包括以下步骤:
确定与所述多线程处理器的具体线程相关的线程标识符;
使用至少一部分的所述线程标识符来选择将由对应的处理器线程存取的所述寄存器文件的特定部分;
其中针对流水线指令处理构成所述多线程处理器;
其中所述多线程处理器使用指令流水线,所述指令流水线中每个线程在每个处理器时钟周期发出多个指令;以及
其中所述多个线程的每个线程在对应的多个处理器时钟周期的每个周期既发出负载指令也发出矢量乘指令,而多个线程没有任何的失速。
19.一种具有相关寄存器文件的多线程处理器,所述寄存器文件至少包括第一和第二部分,所述多线程处理器还具有高速缓存存储器,所述多线程处理器用于确定与所述多线程处理器的具体线程相关的线程标识符,并使用至少一部分的所述线程标识符来选择将由对应的处理器线程存取的寄存器文件的特定部分,其中寄存器文件不以高速缓存存储器的形式来实现,并且与多线程处理器的高速缓存存储器分开,以及其中寄存器文件被分成多个部分,而没有将这些部分的任何一个特定部分的单独使用分配给任何单个线程,使得通过至少两个线程存取这些部分的一个给定部分,所述至少两个线程在多个处理器时钟周期上交替存取寄存器文件的所述给定部分。
CNB2003801023301A 2002-10-11 2003-10-09 减少多线程处理器中寄存器文件端口的方法和装置 Expired - Lifetime CN100342325C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/269,373 US6904511B2 (en) 2002-10-11 2002-10-11 Method and apparatus for register file port reduction in a multithreaded processor
US10/269,373 2002-10-11

Publications (2)

Publication Number Publication Date
CN1708745A CN1708745A (zh) 2005-12-14
CN100342325C true CN100342325C (zh) 2007-10-10

Family

ID=32068767

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2003801023301A Expired - Lifetime CN100342325C (zh) 2002-10-11 2003-10-09 减少多线程处理器中寄存器文件端口的方法和装置

Country Status (8)

Country Link
US (1) US6904511B2 (zh)
EP (2) EP2600242A1 (zh)
JP (1) JP4187720B2 (zh)
KR (1) KR100988955B1 (zh)
CN (1) CN100342325C (zh)
AU (1) AU2003282486A1 (zh)
ES (1) ES2848383T3 (zh)
WO (1) WO2004034209A2 (zh)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040193846A1 (en) * 2003-03-28 2004-09-30 Sprangle Eric A. Method and apparatus for utilizing multiple opportunity ports in a processor pipeline
KR101005718B1 (ko) 2003-05-09 2011-01-10 샌드브리지 테크놀로지스, 인코포레이티드 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛
US8074051B2 (en) 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7797363B2 (en) * 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
US7475222B2 (en) * 2004-04-07 2009-01-06 Sandbridge Technologies, Inc. Multi-threaded processor having compound instruction and operation formats
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
TW200625097A (en) * 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
US20060230253A1 (en) * 2005-04-11 2006-10-12 Lucian Codrescu Unified non-partitioned register files for a digital signal processor operating in an interleaved multi-threaded environment
US8713286B2 (en) 2005-04-26 2014-04-29 Qualcomm Incorporated Register files for a digital signal processor operating in an interleaved multi-threaded environment
US20070223599A1 (en) * 2005-07-25 2007-09-27 Sysair, Inc., A Delaware Corporation Cellular PC modem architecture and method of operation
EP2069947A4 (en) * 2006-09-26 2013-10-09 Qualcomm Inc APPLICATION OF MATRIX INVERSION SOFTWARE IN A WIRELESS COMMUNICATION SYSTEM
KR101545357B1 (ko) * 2006-11-10 2015-08-18 퀄컴 인코포레이티드 파이프라인 컴퓨터 처리의 병렬화를 위한 방법 및 시스템
US20080276067A1 (en) * 2007-05-01 2008-11-06 Via Technologies, Inc. Method and Apparatus for Page Table Pre-Fetching in Zero Frame Display Channel
US8677101B2 (en) * 2007-06-07 2014-03-18 International Business Machines Corporation Method and apparatus for cooperative software multitasking in a processor system with a partitioned register file
WO2008155799A1 (ja) 2007-06-20 2008-12-24 Fujitsu Limited 命令実行制御装置及び命令実行制御方法
KR101100145B1 (ko) 2007-06-20 2011-12-29 후지쯔 가부시끼가이샤 명령실행 제어장치 및 명령실행 제어방법
US8224884B2 (en) * 2007-07-06 2012-07-17 XMOS Ltd. Processor communication tokens
US8725991B2 (en) * 2007-09-12 2014-05-13 Qualcomm Incorporated Register file system and method for pipelined processing
WO2009061547A1 (en) * 2007-11-05 2009-05-14 Sandbridge Technologies, Inc. Method of encoding register instruction fields
US8539188B2 (en) * 2008-01-30 2013-09-17 Qualcomm Incorporated Method for enabling multi-processor synchronization
EP2245529A1 (en) * 2008-02-18 2010-11-03 Sandbridge Technologies, Inc. Method to accelerate null-terminated string operations
KR20100133964A (ko) * 2008-03-13 2010-12-22 아스펜 액퀴지션 코포레이션 유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법
WO2010017263A1 (en) 2008-08-06 2010-02-11 Sandbridge Technologies, Inc. Haltable and restartable dma engine
US9207995B2 (en) 2010-11-03 2015-12-08 International Business Machines Corporation Mechanism to speed-up multithreaded execution by register file write port reallocation
JP5283739B2 (ja) * 2011-09-27 2013-09-04 インテル・コーポレーション プロセッサ内のマルチスレッド間通信
US9323528B2 (en) * 2012-12-20 2016-04-26 Intel Corporation Method, apparatus, system creating, executing and terminating mini-threads
GB2501791B (en) * 2013-01-24 2014-06-11 Imagination Tech Ltd Register file having a plurality of sub-register files
US9508112B2 (en) * 2013-07-31 2016-11-29 Apple Inc. Multi-threaded GPU pipeline
US9377968B2 (en) 2013-11-13 2016-06-28 Sandisk Technologies Llc Method and system for using templates to communicate with non-volatile memory
US9430411B2 (en) 2013-11-13 2016-08-30 Sandisk Technologies Llc Method and system for communicating with non-volatile memory
US9390033B2 (en) 2013-11-13 2016-07-12 Sandisk Technologies Llc Method and system for communicating with non-volatile memory via multiple data paths
GB2520731B (en) * 2013-11-29 2017-02-08 Imagination Tech Ltd Soft-partitioning of a register file cache
US9921848B2 (en) * 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
JP5630798B1 (ja) * 2014-04-11 2014-11-26 株式会社Murakumo プロセッサーおよび方法
US10514911B2 (en) 2014-11-26 2019-12-24 International Business Machines Corporation Structure for microprocessor including arithmetic logic units and an efficiency logic unit
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
CN108140232B (zh) * 2015-06-10 2022-05-24 无比视视觉技术有限公司 用于处理图像的图像处理器和方法
US20170177351A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Even and Odd Vector Get Operations
US10338920B2 (en) 2015-12-18 2019-07-02 Intel Corporation Instructions and logic for get-multiple-vector-elements operations
CN114489792B (zh) * 2021-03-25 2022-10-11 沐曦集成电路(上海)有限公司 处理器装置及其指令执行方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226131A (en) * 1989-12-27 1993-07-06 The United States Of America As Represented By The United States Department Of Energy Sequencing and fan-out mechanism for causing a set of at least two sequential instructions to be performed in a dataflow processing computer
US6038643A (en) * 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
CN1248742A (zh) * 1998-06-30 2000-03-29 太阳微系统有限公司 用于多-线程虚拟机的存储器分配的方法和装置
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US6128720A (en) 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
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
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
US5778243A (en) * 1996-07-03 1998-07-07 International Business Machines Corporation Multi-threaded cell for a memory
US6073159A (en) * 1996-12-31 2000-06-06 Compaq Computer Corporation Thread properties attribute vector based thread selection in multithreading processor
US6128641A (en) * 1997-09-12 2000-10-03 Siemens Aktiengesellschaft Data processing unit with hardware assisted context switching capability
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
US6542991B1 (en) * 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
US6643747B2 (en) * 2000-12-27 2003-11-04 Intel Corporation Processing requests to efficiently access a limited bandwidth storage area
US20020103990A1 (en) * 2001-02-01 2002-08-01 Hanan Potash Programmed load precession machine
US7487505B2 (en) * 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226131A (en) * 1989-12-27 1993-07-06 The United States Of America As Represented By The United States Department Of Energy Sequencing and fan-out mechanism for causing a set of at least two sequential instructions to be performed in a dataflow processing computer
US6038643A (en) * 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
CN1248742A (zh) * 1998-06-30 2000-03-29 太阳微系统有限公司 用于多-线程虚拟机的存储器分配的方法和装置
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor

Also Published As

Publication number Publication date
WO2004034209A2 (en) 2004-04-22
JP4187720B2 (ja) 2008-11-26
US6904511B2 (en) 2005-06-07
KR20050054998A (ko) 2005-06-10
CN1708745A (zh) 2005-12-14
AU2003282486A8 (en) 2004-05-04
ES2848383T3 (es) 2021-08-09
AU2003282486A1 (en) 2004-05-04
US20040073779A1 (en) 2004-04-15
WO2004034209A3 (en) 2004-09-02
JP2006502504A (ja) 2006-01-19
EP1550030B1 (en) 2020-11-18
EP1550030A4 (en) 2008-03-05
EP2600242A1 (en) 2013-06-05
EP1550030A2 (en) 2005-07-06
KR100988955B1 (ko) 2010-10-20

Similar Documents

Publication Publication Date Title
CN100342325C (zh) 减少多线程处理器中寄存器文件端口的方法和装置
CN1708747A (zh) 用于多线程处理器中基于线程的存储器存取的方法和装置
CN1711563A (zh) 令牌触发多线程操作的方法和装置
JP2918631B2 (ja) デコーダ
CN1109967C (zh) 多线程处理器中指令和关联读取请求的后台完成
KR101636602B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
KR101620676B1 (ko) 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
US7904702B2 (en) Compound instructions in a multi-threaded processor
KR20160046331A (ko) 범용 유닛을 기반으로 하는 고성능 프로세스 시스템 및 방법
CN1662904A (zh) 具有级联simd结构的数字信号处理器
US20050138327A1 (en) VLIW digital signal processor for achieving improved binary translation
JP2933026B2 (ja) 複数命令並列発行/実行管理装置
US20060288193A1 (en) Register-collecting mechanism for multi-threaded processors and method using the same
JP2001523022A (ja) データストリーミングのためのコンピュータのプロセッサ及び方法
US20190227805A1 (en) Issuing instructions based on resource conflict constraints in microporcessor
US8285975B2 (en) Register file with separate registers for compiler code and low level code
JPWO2004012079A1 (ja) 命令制御装置、機能ユニット、プログラム変換装置および言語処理装置
JP2001522082A (ja) より小さな数の分岐予測および代替ターゲットを用いて近似的により大きな数の分岐予測をすること
KR100861701B1 (ko) 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법
US20230350675A1 (en) Graphics processor unit with opportunistic inter-path reconvergence

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: 20071010

CX01 Expiry of patent term