用于多线程处理器中基于线程的存储器存取的方法和装置的制作方法

文档序号:6422344阅读:137来源:国知局
专利名称:用于多线程处理器中基于线程的存储器存取的方法和装置的制作方法
技术领域
本发明通常涉及数字数据处理器领域,更特别地涉及多线程处理器中使用的存储器存取技术。
背景技术
存储器是处理器设计中重要的方面。众所周知,处理器经常与包括不同存储元件层次的存储系统结合使用。例如,这样的存储系统可以包括备份存储(backing store)、主存储器和高速缓存存储器,例如,如M·J·Flynn在“计算机结构流水线与并行处理器设计(PipelinedArchitectutePipelined and Parallel Processor Design)”(Jones和Bartlett为发行人,Boston,MA,1995)中所述。
通常由例如存取时间和带宽等参数决定存储器性能。存取时间是指处理器从存储器请求具体的数据特定片与所请求的数据返回到处理器之间的时间。存储器带宽是指存储器在每个单位时间所能接纳的存储器存取请求的数量。
可以多体(multiple banks)的形式构造给定的存储器,例如上述示例的存储系统结构中的高速缓存存储器或主存储器。存储器的部分也被称作模块。例如,可以将多个体(bank)结合成单个存储模块,或者可以结合多个模块形成一个体。通常,在存储器存取期间的任何给定时间只有存储器的体的子集起作用。在最简单的可能的排列中,单个处理器请求单个存储模块。然后处理器停止活动并等待模块的服务。当模块响应时,处理器活动重新开始。
每个存储模块至少具有两个重要的参数,即,模块存取时间和模块循环时间。模块存取时间是从给定有效地址的输出存储器缓冲寄存器找出数据所需的时间。模块循环时间是对同一个模块的多个请求之间的最小时间。
从过去看,处理器和存储器被分开封装。但是,在现代的集成技术中,能够在单个集成电路芯片内集成多个模块和体以及处理器。
传统的存储器存取技术的重要问题是,这样的技术通常不能充分用于多线程处理器,即,支持同时运行多个不同指令序列或“线程”的处理器。例如,传统的存储器存取技术在用到多线程处理器时,经常需要数量过多的读取和写入端口,这过度增加了功耗。此外,这样的技术在用到多线程处理器时,能够导致个别的处理器线程失速,并增加了存储器存取时间。
从上面明显可知,在与多线程处理器相关的存储器结合使用时需要改进的存储器存取技术。

发明内容
本发明提供用于多线程处理器的改进的存储器存取技术。更具体地,本发明的存储器存储技术以示意性实施例的方式提供了在与多线程处理器相关的存储器中基于线程的体存取,因此避免了与处理器线程失速相关的存储器存取。
按照本发明,多线程处理器确定与具体处理器线程相关的线程标识符,并使用至少一部分的线程标识符来选择将由对应的处理器线程存取的相关存储器的具体部分。例如,可以利用线程标识符的第一部分来选择存储器内的多个多体存储元件的其中一个,可以利用线程标识符的第二部分来选择所选的一个多体存储元件内多个存储体(memory bank)的其中一个。第一部分可以包括线程标识符的一个或多个最高有效位,而第二部分包括线程标识符的一个或多个最低有效位。
作为更多的具体示例,多体存储元件的每个都可以包括偶数存储体和奇数存储体,利用线程标识符的第二部分的最低有效位来选择对应的处理器线程要存取的偶数存储体和奇数存储体的其中之一。
本发明的其它方面涉及权标触发(token triggerred)的线程和流水线指令处理。例如,可构造多线程处理器来实施权标触发的线程。这种类型的线程结合当前处理器时钟周期,利用权标来识别具体的硬件线程单元或允许发布用于随后时钟周期的指令的上下文。
有利的是,本发明明显降低了多线程处理器中的存储器存取时间和功耗,而处理器性能没有任何损失。例如,在示意性的实施例中,能够在单个处理器周期中使用单个存储器端口实现两个读取或写入的存储器存取。


图1是其中实施了本发明的示例性处理系统的方块图;图2是图1中处理系统的多线程处理器的示意性实施例的更详细的框图;图3示出了按照本发明的技术用在图2的多线程处理器中的权标触发的线程的示例;图4给出了按照本发明在图2的多线程处理器中流水线处理示例的指令功能所采用的方式;图5给出了具有图2中处理器的多个上下文的流水线的简化示例,其中处理器在连续周期上发出指令;图6示出了按照本发明的在图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中的每个线程高速缓存存储器可以包括具有一组或多组存储位置的存储器阵列。给定的线程高速缓存存储器还可以包括用于存储相关的线程标识符的线程标识符寄存器,其将在下面结合图6对其详细说明。
多线程高速缓存存储器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、118和120的操作是本领域公知的,因此此处不再详细说明。
数据存储器112通常直接连接到主存储器104,尽管在附图中没有显示此连接。
可以单个构成一个和多个存储器104、110和112,使其包括多个体或其它的指定部分。作为示例,每个体可以被视为由一个或多个存储模块或单个存储模块的特定部分构成。
此处所使用的术语“存储器”的含义广泛,包括内部或外部存储器、高速缓存存储器、数据存储器或其它配置的数据存储元件。本发明不限于任何特定的存储器类型、构造或应用。但是应当注意,在处理器技术领域中存储器通常被理解为明显不同于寄存器,例如包括图2中寄存器文件118的这些寄存器。在上述代理案卷号为第1007-7,标题为“减少多线程处理器中寄存器文件端口的方法和装置”的美国专利申请中说明了基于线程的存取寄存器文件的技术。
还应当强调的是,本发明不要求如图2所示的特别的多线程处理器构造。能够以各种形式的其它多线程处理器构造来实施本发明。
在2001年12月20日提交的美国临时专利申请第60/341,289号中说明了图2所示类型的且适于与本发明结合使用的多线程处理器的更具体示例,其内容通过引用并入此处。作为美国临时专利申请第60/341,289号中说明的多线程处理器的示意性实施例,其能够运行基于RISC的控制代码、数字信号处理器(DSP)代码、Java代码和网络处理代码。该处理器包括单指令多数据流(SIMD)矢量单元、缩小单元(reduction unit)和长指令字(LIW)复合指令运行。
按照本发明的一个方面,与多线程处理器102相关的存储器被分成不同的部分,并且使用对应的线程标识符通过给定的处理器线程来选择其中一个部分用于存取。更具体地,在示意性实施例中,通过基于每个线程来分体(banking)存储器,降低了与多线程处理器102相关的存储器存取时间和功率需求,而不会发生任何的性能下降。此外,基于线程的分体方法能够防止处理器线程的存储器存取相关的失速。
作为示例,以此方式配置的存储器可以包括一个或多个主存储器104、高速缓存存储器110、数据存储器112,或其它的含在多线程处理器102中或以其它方式与多线程处理器102相关的存储器。将结合图3、4、5和6说明存储器存取技术的示意性实施例。
可以构成多线程处理器102,以利用被称作权标触发线程的线程方法或其它适当的线程技术。
图3给出了处理器102实施的权标触发的线程,其中线程数N是8。通常,所有的线程同时工作,并且每次存取线程高速缓存存储器110和数据存储器112的对应情况。如图3所示,8个线程被标记为线程0、线程1、线程2、...、线程7,并且以环形顺序地相连。在多线程处理器中,通常能够在硬件以及软件方面观察给定的线程。因此,在此将与给定线程相关的特定的处理器硬件称作硬件线程单元或简单的称作“上下文”。
按照图3所示的权标触发线程,允许所有的硬件线程单元或上下文同时运行指令,但是只有一个上下文可以在处理器的特定时钟周期中发出指令。换句话说,所有的上下文同时运行,但是在特定的时钟周期上只有一个上下文是有效的。因此,如果存在总共C个上下文,则需要C个时钟周期来从所有的上下文发出指令。每个时钟周期有一个上下文发出指令,并且发出指令的下一个线程由权标表示。在图3的示例中,以顺序或循环(round robin)方式排列权标,因此上下文将顺序的发出指令。但是,可以使用其它的方式来排列用于表示将发出指令的上下文的权标,例如奇偶交替的方式。此外,如上所述,其它类型的线程可以与本发明结合使用。
图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)确定阶段和3个另外的存储器运行阶段,表示为Mem0、Mem1和Mem2。因此Ld/St流水线包括总共4个存储器运行阶段,表示为Mem0、Mem1、Mem2和WB。内部或外部确定阶段确定相关的存储器存取是否针对内部或外部存储器,并可以视为流水线内的另外的解码阶段。应当注意,对于确定的外部存储器存取可要求额外的存储器运行阶段。例如,如果在对应的线程有效的时间周期内没有完成外部存储器存取的WB阶段,则停止该线程,使得在该线程有效的下一个时间周期内完成WB阶段。
ALU流水线还包括表示为Exec1和Exec2的两个运行阶段。
内部I_Mul流水线还包括表示为Exec1、Exec2和Exec3的三个运行阶段。
矢量V_Mul流水线还包括表示为MPY1和MPY2的两个乘法阶段,Add1和Add2的两个加法阶段。
最好将多线程处理器102配置成使得一旦来自特定上下文的指令进入其对应的流水线就完成运行。
图5给出了利用多线程处理器102的多个上下文的流水线指令的简化示例组,其中多线程处理器102在连续周期上发出指令。在此示例中,为了使示例简化和清楚,假设每个发出的指令都包括相同的四个流水线阶段,表示为指令提取(IF)、读取(RD)、运行(EX)和回写(WB)。还假设存在三个线程,因此以顺序方式发出指令的三个上下文类似于结合图3所述的上下文。整数加法指令addi r0、r2、8最初由第一时钟周期上的第一个上下文发出。其它两个上下文法在各自随后的时钟周期上发出指令。对于上下文的每一个都发出指令总共需要三个时钟周期。在第四个时钟周期上,第一上下文发出另一个指令,即,内部乘法指令muli r8、r0、4。
图5的示例用于说明通过适当配置的流水线和足够数量的线程,可以同时运行所有的硬件上下文,即使每个周期只发出单个指令。如上所述,线程和流水线阶段的特定数量只是示意性的,并不影响优选实施例。本领域技术人员能够轻易的为此处所提供的技术的特定应用确定线程和流水线阶段的适当数量。
如上所述,按照本发明的一个方面,提供了供多线程处理器102使用的改进的存储器存取技术。
通常,此改进的存储器存取技术涉及确定与多线程处理器的特定线程相关的线程标识符,利用至少一部分线程标识符来选择对应的处理器线程将存取的存储器的特定部分。
更具体地,在示意性配置中,将多线程处理器将存取的存储器构造成多个不同的存储元件,每个元件具有多个存储体,线程标识符的第一部分可用于选择存储器内不同存储元件的其中之一,并且线程标识符的第二部分可用于选择所选的一个存储元件内的多个存储体的其中之一。
用于选择多体存储器元件其中之一的线程标识符的第一部分可以包括线程标识符的一个或多个最高有效位,而用于选择所选的多体存储元件内的多个存储体其中之一的线程标识符的第二部分可以包括线程标识符的一个或多个最低有效位。
图6给出了上述存储器存取技术的一个可能的实施例,其可在图1中使用多线程处理器102的处理系统中实施。该示例假设多线程处理器102中的处理器线程数量N为8。图6给出了包括表示为M0、M1、M2和M3的4个多体存储元件的存储器600。存储器600可以对应主存储器104、高速缓存存储器110、数据存储器112或其它与多线程处理器102相关的存储器。每个多体存储元件M0、M1、M2和M3都包括一对表示为B0和B1的存储体,在此也分别称作偶数存储体和奇数存储体。
线程标识符(TID)寄存器602存储具有第一部分604和第二部分606的线程标识符。在此示例中,按照先前所述N=8,线程标识符是三位标识符。线程标识符的第一部分604包括三位标识符的两个最高有效位,并用于选择四个多体存储元件M0、M1、M2和M3的其中特定一个。图6中没有显示用于选择多体存储元件中特定之一的选择电路,但是能够以直接的方式进行,这是本领域技术人员熟知的。线程标识符的第二部分606包括三位标识符的最低有效位,其用作选择电路610的选择信号,来选择与特定的存储器存取结合使用的体B0和B1其中之一。
图6中显示了读取存取,其中从所选的体B0和B1之一读取信息。但是,仅作为示例,本发明也能够用于写入存取。
在图6的实施例中,给定的多体存储器元件M0、M1、M2或M3只需要单个存储器端口用于读取和写入存取。例如,本发明能够通过在偶数和奇数体之间交替而每隔一个周期读取每一个多体元件。因此,单个存储器端口能够起到好像其有效含有多个端口的功能。更具体地,只通过每个多体存储元件的单个存储器端口可以在每个处理器周期实现两个读取或写入存取。这种配置能够用于减少存储器存取时间,并降低功耗,也能够避免由于存储器存取问题导致的处理器线程失速。
多体存储元件和存储体的多个可选构造能够使用本发明的技术。例如,一种可能的可选构造是具有两个多体存储元件,每个具有四个存储体,其中线程标识符的一位用于选择多体存储元件,线程标识符的两位用于选择所选的多体存储元件内的四个存储体之一。更具体地,如果多体存储元件的数量为M,B是每个多体存储元件的存储体的数量,则存储器可以M和B的乘积为N的方式构成,即,N=M×B。其它的构造也是可能的。此外,还应当注意,每个多体存储元件不需要具有相同数量的存储体。
线程标识符寄存器602和相关的选择电路可以作为多线程处理器102的元件来实施。例如,在本发明的实施例中,存储器600对应于高速缓存存储器110,这些元件可以整体或部分实施在高速缓存存储器控制器114或多线程处理器102的其它部分中。
线程标识符寄存器602存储多位线程标识符,多线程处理器102使用线程标识符识别特定的线程。可以传统的方式生成这样的线程标识符,其对于本领域技术人员是显而易见的。
此处所使用的术语“线程标识符”倾向于包括任何适于识别多线程处理器中特定的线程或一组多线程的信息。作为示例且不具有限制性,线程标识符可以对应于多线程处理器中的线程计数器的输出。更具体地,可构成给定的多线程处理器使得以预定顺序处理多线程,例如循环顺序,线程计数器的输出用于识别正被运行的特定的线程。在这样的实施例中,共存在8个以循环顺序处理的线程,每个线程由三位标识符识别,因此三位计数器的输出能够用于识别正被处理的特定的线程。其它的实施例可以使用线程标识符的非计数器实施方式。对于本领域技术人员来说,适于本发明使用的各种不同的线程标识符配置是显而易见的。
图6所示的存储器存取技术利用一位线程标识符来选择将被对应的处理器线程存取的偶数或奇数存储体。但是,也能够使用线程标识符的n个最低有效位来选择给定的多体存储元件的2n个存储体之一,类似地,可以使用线程标识符的m个最高有效位在与多线程处理器相关的给定存储器中选择2m个多体存储元件之一。
如上所述,本发明的基于线程的存储器存取技术相对于传统技术提供了明显的改进。例如,该技术能够改善存储器存取时间。此外,该技术能够实质上减少所需的存储器端口数量,由此降低了功耗。而且,这些改进不没有影响处理器性能。
本发明的上述实施例指示示意性的,在后附权利要求范围内的各种可选实施例对于本领域技术人员是显而易见的。例如,如上所述,通过适当的增加用于从给定的多体存储元件选择给定体的线程够标识符的位数,给定的多体存储元件可以分成多于如图6所示的偶数体和奇数体,即,能够分成n个不同的部分。作为另一个示例,用于实施选择过程的具体的选择电路配置可由可选的配置来替换。而且,能够改变多线程处理器构造、线程的数量、多体存储元件的数量、每个存储元件的体数量、线程标识符配置以及可选实施例的其它参数,以满足给定应用的具体需要。
权利要求
1.一种用于存取与多线程处理器相关的存储器的方法,该方法包括以下步骤确定与所述多线程处理器的具体线程相关的线程标识符;使用至少一部分的所述线程标识符来选择将由对应的处理器线程存取的存储器的特定部分。
2.如权利要求1所述的方法,其中使用步骤还包括以下步骤利用所述线程标识符的第一部分来选择所述存储器内的多个多体存储元件的其中一个,以及利用所述线程标识符的第二部分来选择所选的一个多体存储元件内的多个存储体的其中一个。
3.如权利要求2所述的方法,其中所述第一部分包括所述线程标识符的一个或多个最高有效位
4.如权利要求2所述的方法,其中所述第二部分包括所述线程标识符的一个或多个最低有效位。
5.如权利要求2所述的方法,其中所述多体存储元件的每个都包括偶数存储体和奇数存储体,并利用所述第二部分的最低有效位来选择由对应的处理器线程存取的所述偶数存储体和奇数存储体的其中之一。
6.如权利要求1所述的方法,其中所述存储器包括连接到所述多线程处理器的主存储器。
7.如权利要求1所述的方法,其中所述存储器包括所述多线程处理器的数据存储器。
8.如权利要求1所述的方法,其中所述存储器包括所述多线程处理器的高速缓存存储器。
9.如权利要求8所述的方法,其中所述高速缓存存储器包括多个线程高速缓存存储器,至少给定的一个线程高速缓存存储器包括具有一组或多组存储位置的存储器阵列。
10.如权利要求9所述的方法,其中给定的线程高速缓存存储器还包括用于存储所述线程标识符的线程标识符寄存器。
11.如权利要求1所述的方法,其中构造所述多线程处理器以使用权标触发的线程。
12.如权利要求11所述的方法,其中所述权标触发的线程结合当前处理器时钟周期识别具体的上下文,该具体的上下文将允许发布用于随后时钟周期的指令。
13.如权利要求1所述的方法,其中针对流水线指令处理构成多线程处理器。
14.一种处理器系统,包括多线程处理器;和与所述多线程处理器相关的存储器;所述多线程处理器用于确定与所述多线程处理器的具体线程相关的线程标识符,并使用至少一部分的所述线程标识符来选择将由对应的处理器线程存取的所述存储器的特定部分。
15.一种包括机器可读的存储介质的制造产品,该存储介质具有嵌入其上的程序代码,该程序代码用于存取与多线程处理器相关的存储器,其中当处理器运行程序代码时执行以下步骤确定与所述多线程处理器的具体线程相关的线程标识符;以及使用至少一部分的线程标识符来选择将由所述对应的处理器线程存取的存储器的特定部分。
全文摘要
公开了用于多线程处理器的基于线程的存储器存取技术。多线程处理器确定与具体的处理器线程相关的线程标识符,并使用至少一部分的线程标识符来选择与对应的处理器线程将要存取的相关存储器的具体部分。在可选实施例中,利用线程标识符的第一部分来选择存储器内的多个多体存储元件的其中一个,并利用线程标识符的第二部分来选择所选的一个多体存储元件内的多个存储体的其中一个。第一部分可以包括线程标识符的一个或多个最高有效位,而第二部分包括线程标识符的一个或多个最低有效位。本发明有利地降低了存储器存取时间和功耗,同时避免了任何处理器线程的失速。
文档编号G06F9/355GK1708747SQ200380102333
公开日2005年12月14日 申请日期2003年10月9日 优先权日2002年10月11日
发明者E·霍凯奈克, M·穆吉尔, J·C·格洛斯纳 申请人:沙桥技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1