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

文档序号:6422343阅读:169来源:国知局
专利名称:减少多线程处理器中寄存器文件端口的方法和装置的制作方法
技术领域
本发明通常涉及数字数据处理器领域,更特别地涉及多线程处理器中使用的寄存器文件存取技术。
背景技术
计算机系统或其它基于处理器的系统中的存储空间通常分成存储器和寄存器。例如,在M.J.Flynn的“计算机结构流水线与并行处理器设计”(Jones和Bartlett出版商,Boston,MA,1995),和G.A.Blaauw和Frederick P.Brooks的“计算机结构概念与演变”(Addison-Wesley,Reading,Massachusetts,1997)中说明了传统的寄存器文件配置,在此引用两者的内容。
给定的寄存器文件可以是所谓的“通用”寄存器文件,其通常是指适用于存储与处理器中多个指令函数相关的中间或其它临时结果的寄存器文件。从过去来看,每个处理器周期只有一个指令能够有效地存取通用寄存器文件,因此所需的寄存器端口数量是最小的。但是,现代的处理器在给定的处理器周期内通常具有许多有效指令,因此每个处理器周期存取多个寄存器文件。例如,多线程处理器通过同时运行多个不同的指令序列或“线程”来提供高并发性,临时结果存储在寄存器文件中。
现代处理器中的这些和其它的类似设置能够导致大幅增加“端口压力”,即,增加了所需的寄存器文件端口的数量。非常遗憾,与寄存器文件端口压力相关的重要问题是,增加寄存器文件端口的数量同时也明显增加了处理器的功耗。通常,与寄存器文件端口相关的功耗主要归因于寄存器文件的写入端口。
包括通用寄存器文件的现代处理器的示例是Texas Instruments(TI)C64x,在TMS320C6000CPU和指令组参考指导,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,使其包括多个体或其它的指定部分。作为示例,每个体可以被视为由一个或多个存储模块或单个存储模块的特定部分构成。
在代理案卷号为第1007-5,标题为“用于多线程处理器中基于线程的存储器的存取方法和装置”的美国专利申请中说明了对与多线程处理器相关的这些和其它存储器进行基于线程的分体的技术。
应当强调的是,本发明不要求如图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个不同的部分。作为另一个示例,用于实施选择过程的具体的选择电路配置可由可选的配置来替换。而且,能够改变多线程处理器构造、线程的数量、线程标识符配置以及可选实施例的其它参数,以满足给定应用的具体需要。
权利要求
1.一种用于存取与多线程处理器相关的寄存器文件的方法,该方法包括以下步骤确定与所述多线程处理器的具体线程相关的线程标识符;使用至少一部分的所述线程标识符来选择将由对应的处理器线程存取的所述寄存器文件的特定部分。
2.如权利要求1所述的方法,其中使用步骤还包括以下步骤利用线程标识符的一部分来为对应的处理器线程的存取选择所述寄存器文件的偶数部分和奇数部分的其中一个。
3.如权利要求2所述的方法,其中该部分线程标识符包括线程标识符的一个或多个最低有效位。
4.如权利要求2所述的方法,其中所述寄存器文件包括多个偶数组的寄存器和多个奇数组的寄存器,并且使用步骤还包括或者使多个偶数组的寄存器或者使多个奇数组的寄存器由所述对应的处理器线程存取。
5.如权利要求1所述的方法,其中该部分的线程标识符被施加到选择电路,所述选择电路产生用于所述寄存器文件的特定部分的使能信号。
6.如权利要求1所述的方法,其中所述寄存器文件包括2n个不同的部分,并使用所述线程标识符的n个最低有效位来选择所述寄存器文件的2n个不同部分之以用于对应的处理器线程存取。
7.如权利要求1所述的方法,其中所述寄存器文件包括通用寄存器文件。
8.如权利要求1所述的方法,其中所述多线程处理器包括用于存储所述线程标识符的线程标识符寄存器。
9.如权利要求8所述的方法,其中所述线程标识符寄存器与对应于所述多线程处理器的特定线程的线程高速缓存存储器相关。
10.如权利要求1所述的方法,其中构造所述多线程处理器以使用权标触发的线程。
11.如权利要求10所述的方法,其中所述权标触发的线程结合当前处理器时钟周期,利用权标来识别允许发布用于随后时钟周期的指令的上下文。
12.如权利要求10所述的方法,其中所述权标触发的线程为所述多线程处理器的多个线程的每一个分配不同的权标。
13.如权利要求1所述的方法,其中针对流水线指令处理构成多线程处理器。
14.如权利要求13所述的方法,其中所述多线程处理器使用指令流水线,所述指令流水线中每个线程在每个处理器时钟周期发出单个指令。
15.如权利要求13所述的方法,其中所述多线程处理器使用指令流水线,所述指令流水线中每个线程在每个处理器时钟周期发出多个指令。
16.如权利要求13所述的方法,其中所述多个线程的每个线程在对应的多个处理器时钟周期的每个周期既发出负载指令也发出矢量乘指令,而多个线程没有任何的失速。
17.如权利要求1所述的方法,其中所述寄存器文件包括单个寄存器。
18.如权利要求1所述的方法,其中所述寄存器文件包括多个寄存器。
19.一种具有相关寄存器文件的多线程处理器,所述寄存器文件至少包括第一和第二部分,所述多线程处理器用于确定与所述多线程处理器的具体线程相关的线程标识符,并使用至少一部分的所述线程标识符来选择将由对应的处理器线程存取的寄存器文件的特定部分。
20.一种包括机器可读的存储介质的制造产品,该存储介质具有嵌入其上的程序代码,该程序代码用于存取与多线程处理器相关的寄存器,其中当处理器运行程序代码时执行以下步骤确定与所述多线程处理器的具体线程相关的线程标识符;使用至少一部分的线程标识符来选择将由对应的处理器线程存取的寄存器文件的特定部分。
全文摘要
公开了用于多线程处理器的基于线程的寄存器文件存取的技术。多线程处理器确定与具体的处理器线程相关的线程标识符,并使用至少一部分的线程标识符来选择与对应的处理器线程将要存取的相关寄存器的具体部分。在示意性实施例中,寄存器文件被分成偶数和奇数部分,使用线程标识符的最低有效位或其它部分来选择供给定的处理器线程使用的偶数部分或奇数部分。基于线程的寄存器文件可结合权标触发的线程和指令流水线来使用。本发明有利地降低了寄存器文件端口需求并由此降低了功耗,同时保持了预期的并发水平。
文档编号G06F9/54GK1708745SQ200380102330
公开日2005年12月14日 申请日期2003年10月9日 优先权日2002年10月11日
发明者E·霍凯奈克, M·穆吉尔, C·J·格洛斯纳 申请人:沙桥技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1