CN1332303C - 用于多线程处理器中基于线程的存储器存取的方法和装置 - Google Patents

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

Info

Publication number
CN1332303C
CN1332303C CNB2003801023335A CN200380102333A CN1332303C CN 1332303 C CN1332303 C CN 1332303C CN B2003801023335 A CNB2003801023335 A CN B2003801023335A CN 200380102333 A CN200380102333 A CN 200380102333A CN 1332303 C CN1332303 C CN 1332303C
Authority
CN
China
Prior art keywords
thread
memory
processor
multiline procedure
thread identifier
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
CNB2003801023335A
Other languages
English (en)
Other versions
CN1708747A (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 CN1708747A publication Critical patent/CN1708747A/zh
Application granted granted Critical
Publication of CN1332303C publication Critical patent/CN1332303C/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • 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/3824Operand accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

公开了用于多线程处理器的基于线程的存储器存取技术。多线程处理器确定与具体的处理器线程相关的线程标识符,并使用至少一部分的线程标识符来选择与对应的处理器线程将要存取的相关存储器的具体部分。在可选实施例中,利用线程标识符的第一部分来选择存储器内的多个多体存储元件的其中一个,并利用线程标识符的第二部分来选择所选的一个多体存储元件内的多个存储体的其中一个。第一部分可以包括线程标识符的一个或多个最高有效位,而第二部分包括线程标识符的一个或多个最低有效位。本发明有利地降低了存储器存取时间和功耗,同时避免了任何处理器线程的失速。

Description

用于多线程处理器中基于线程的存储器存取的方法和装置
相关申请
本发明与以下美国专利申请中公开的发明相关:美国专利6,968,445,标题为“能有效处理会聚设备应用的多线程处理器(Multithreaded Processor With Efficient Processing For ConvergenceDevice Applications)”;美国专利6,904,511,标题为“减少多线程处理器中寄存器文件端口的方法和装置(Method and Apparatus forRegister File Port Reduction in a Multithreaded Processor)”;美国专利6,842,848,标题为“权标触发多线程的方法和装置(Method andApparatus for Token Triggered Multithreading)”。上述申请被同时提交,且其内容以引用方式结合在此处。
技术领域
本发明通常涉及数字数据处理器领域,更特别地涉及多线程处理器中使用的存储器存取技术。
背景技术
存储器是处理器设计中重要的方面。众所周知,处理器经常与包括不同存储元件层次的存储系统结合使用。例如,这样的存储系统可以包括备份存储(backing store)、主存储器和高速缓存存储器,例如,如M·J·Flynn在“计算机结构:流水线与并行处理器设计(PipelinedArchitectute:Pipelined 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和ALU120协同工作。多线程处理器元件例如,116、118和120的操作是本领域公知的,因此此处不再详细说明。
数据存储器112通常直接连接到主存储器104,尽管在附图中没有显示此连接。
可以单个构成一个和多个存储器104、110和112,使其包括多个体或其它的指定部分。作为示例,每个体可以被视为由一个或多个存储模块或单个存储模块的特定部分构成。
此处所使用的术语“存储器”的含义广泛,包括内部或外部存储器、高速缓存存储器、数据存储器或其它配置的数据存储元件。本发明不限于任何特定的存储器类型、构造或应用。但是应当注意,在处理器技术领域中存储器通常被理解为明显不同于寄存器,例如包括图2中寄存器文件118的这些寄存器。在上述美国专利6,904,511,标题为“减少多线程处理器中寄存器文件端口的方法和装置”的美国专利申请中说明了基于线程的存取寄存器文件的技术。
还应当强调的是,本发明不要求如图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个不同的部分。作为另一个示例,用于实施选择过程的具体的选择电路配置可由可选的配置来替换。而且,能够改变多线程处理器构造、线程的数量、多体存储元件的数量、每个存储元件的体数量、线程标识符配置以及可选实施例的其它参数,以满足给定应用的具体需要。

Claims (13)

1.一种用于存取与多线程处理器相关的存储器的方法,该方法包括以下步骤:
确定与所述多线程处理器的具体线程相关的线程标识符;
使用至少一部分的所述线程标识符来选择将由对应的处理器线程存取的存储器的特定部分,
其中使用步骤还包括以下步骤:利用所述线程标识符的第一部分来选择所述存储器内的多个多体存储元件的其中一个,以及利用所述线程标识符的第二部分来选择所选的一个多体存储元件内的多个存储体的其中一个。
2.如权利要求1所述的方法,其中所述第一部分包括所述线程标识符的一个或多个最高有效位
3.如权利要求1所述的方法,其中所述第二部分包括所述线程标识符的一个或多个最低有效位。
4.如权利要求1所述的方法,其中所述多体存储元件的每个都包括偶数存储体和奇数存储体,并利用所述第二部分的最低有效位来选择由对应的处理器线程存取的所述偶数存储体和奇数存储体的其中之一。
5.如权利要求1所述的方法,其中所述存储器包括连接到所述多线程处理器的主存储器。
6.如权利要求1所述的方法,其中所述存储器包括所述多线程处理器的数据存储器。
7.如权利要求1所述的方法,其中所述存储器包括所述多线程处理器的高速缓存存储器。
8.如权利要求7所述的方法,其中所述高速缓存存储器包括多个线程高速缓存存储器,至少给定的一个线程高速缓存存储器包括具有一组或多组存储位置的存储器阵列。
9.如权利要求8所述的方法,其中给定的线程高速缓存存储器还包括用于存储所述线程标识符的线程标识符寄存器。
10.如权利要求1所述的方法,其中构造所述多线程处理器以使用权标触发的线程。
11.如权利要求10所述的方法,其中所述权标触发的线程结合当前处理器时钟周期识别具体的上下文,该具体的上下文将允许发布用于随后时钟周期的指令。
12.如权利要求1所述的方法,其中针对流水线指令处理构成多线程处理器。
13.一种处理器系统,包括:
多线程处理器;和
与所述多线程处理器相关的存储器;
所述多线程处理器用于确定与所述多线程处理器的具体线程相关的线程标识符,并使用至少一部分的所述线程标识符来选择将由对应的处理器线程存取的所述存储器的特定部分,
其中利用所述线程标识符的第一部分来选择所述存储器内的多个多体存储元件的其中一个,以及利用所述线程标识符的第二部分来选择所选的一个多体存储元件内的多个存储体的其中一个。
CNB2003801023335A 2002-10-11 2003-10-09 用于多线程处理器中基于线程的存储器存取的方法和装置 Expired - Lifetime CN1332303C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/269,247 US6925643B2 (en) 2002-10-11 2002-10-11 Method and apparatus for thread-based memory access in a multithreaded processor
US10/269,247 2002-10-11

Publications (2)

Publication Number Publication Date
CN1708747A CN1708747A (zh) 2005-12-14
CN1332303C true CN1332303C (zh) 2007-08-15

Family

ID=32068735

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2003801023335A Expired - Lifetime CN1332303C (zh) 2002-10-11 2003-10-09 用于多线程处理器中基于线程的存储器存取的方法和装置

Country Status (9)

Country Link
US (1) US6925643B2 (zh)
EP (1) EP1550032B1 (zh)
JP (1) JP2006502507A (zh)
KR (1) KR100980536B1 (zh)
CN (1) CN1332303C (zh)
AU (1) AU2003282511A1 (zh)
ES (1) ES2758623T3 (zh)
HU (1) HUE046355T2 (zh)
WO (1) WO2004034218A2 (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100591755B1 (ko) * 2003-07-22 2006-06-22 삼성전자주식회사 복수의 스레드를 동시에 처리하는 장치 및 방법
US20050102494A1 (en) * 2003-11-12 2005-05-12 Grochowski Edward T. Method and apparatus for register stack implementation using micro-operations
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
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7280428B2 (en) 2004-09-30 2007-10-09 Rambus Inc. Multi-column addressing mode memory system including an integrated circuit memory device
US7797728B2 (en) * 2004-10-27 2010-09-14 Intel Corporation Mechanism to generate restricted and unrestricted execution environments
TW200625097A (en) * 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
US8595459B2 (en) 2004-11-29 2013-11-26 Rambus Inc. Micro-threaded memory
US20060136681A1 (en) * 2004-12-21 2006-06-22 Sanjeev Jain Method and apparatus to support multiple memory banks with a memory block
WO2007014261A2 (en) * 2005-07-25 2007-02-01 Sysair, Inc. Cellular pc modem architecture and method of operation
WO2007033203A2 (en) 2005-09-13 2007-03-22 Freescale Semiconductor Inc. Multi-threaded processor architecture
KR101305490B1 (ko) * 2005-10-01 2013-09-06 삼성전자주식회사 메모리 맵핑 방법 및 장치
US7788468B1 (en) 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
US7861060B1 (en) * 2005-12-15 2010-12-28 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior
US7584342B1 (en) * 2005-12-15 2009-09-01 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and SIMD instruction issue
US20070260841A1 (en) 2006-05-02 2007-11-08 Hampel Craig E Memory module with reduced access granularity
JP5076418B2 (ja) * 2006-09-19 2012-11-21 ソニー株式会社 共有メモリ装置
US8819099B2 (en) * 2006-09-26 2014-08-26 Qualcomm Incorporated Software implementation of matrix inversion in a wireless communication system
US9110726B2 (en) * 2006-11-10 2015-08-18 Qualcomm Incorporated Method and system for parallelization of pipelined computations
US7596668B2 (en) * 2007-02-20 2009-09-29 International Business Machines Corporation Method, system and program product for associating threads within non-related processes based on memory paging behaviors
EP2210171A1 (en) * 2007-11-05 2010-07-28 Sandbridge Technologies, Inc. Method of encoding register instruction fields
EP2250539A1 (en) * 2008-01-30 2010-11-17 Sandbridge Technologies, Inc. Method for enabling multi-processor synchronization
KR20100133964A (ko) * 2008-03-13 2010-12-22 아스펜 액퀴지션 코포레이션 유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법
JP2011530744A (ja) 2008-08-06 2011-12-22 アスペン・アクイジション・コーポレーション 停止可能および再始動可能dmaエンジン
CN101739242B (zh) * 2009-11-27 2013-07-31 深圳中微电科技有限公司 一种流数据处理方法及流处理器
CN102141905B (zh) * 2010-01-29 2015-02-25 上海芯豪微电子有限公司 一种处理器体系结构
US9268719B2 (en) 2011-08-05 2016-02-23 Rambus Inc. Memory signal buffers and modules supporting variable access granularity
GB2519813B (en) 2013-10-31 2016-03-30 Silicon Tailor Ltd Pipelined configurable processor
US9436501B2 (en) * 2014-08-26 2016-09-06 International Business Machines Corporation Thread-based cache content saving for task switching
CN104461961B (zh) * 2014-11-20 2018-02-27 上海宝存信息科技有限公司 一种多核多线程的闪存装置及闪存控制方法
CN114968358A (zh) * 2020-10-21 2022-08-30 上海壁仞智能科技有限公司 配置向量运算系统中的协作线程束的装置和方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0553158B1 (en) * 1990-10-19 1994-12-28 Cray Research, Inc. A scalable parallel vector computer system
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
GB2311882B (en) * 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US6317872B1 (en) * 1997-07-11 2001-11-13 Rockwell Collins, Inc. Real time processor optimized for executing JAVA programs
US6263404B1 (en) * 1997-11-21 2001-07-17 International Business Machines Corporation Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system
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
US6269425B1 (en) * 1998-08-20 2001-07-31 International Business Machines Corporation Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system
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
US6341338B1 (en) * 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory
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
US6351808B1 (en) * 1999-05-11 2002-02-26 Sun Microsystems, Inc. Vertically and horizontally threaded processor with multidimensional storage for storing thread data
US20020103990A1 (en) * 2001-02-01 2002-08-01 Hanan Potash Programmed load precession machine

Also Published As

Publication number Publication date
EP1550032A2 (en) 2005-07-06
AU2003282511A8 (en) 2004-05-04
HUE046355T2 (hu) 2020-03-30
US6925643B2 (en) 2005-08-02
US20040073772A1 (en) 2004-04-15
EP1550032B1 (en) 2019-09-11
KR20050046819A (ko) 2005-05-18
KR100980536B1 (ko) 2010-09-06
EP1550032A4 (en) 2008-03-12
JP2006502507A (ja) 2006-01-19
ES2758623T3 (es) 2020-05-06
WO2004034218A2 (en) 2004-04-22
CN1708747A (zh) 2005-12-14
AU2003282511A1 (en) 2004-05-04
WO2004034218A3 (en) 2004-06-03

Similar Documents

Publication Publication Date Title
CN1332303C (zh) 用于多线程处理器中基于线程的存储器存取的方法和装置
US6842848B2 (en) Method and apparatus for token triggered multithreading
CN100342325C (zh) 减少多线程处理器中寄存器文件端口的方法和装置
EP1047989B1 (en) Digital signal processor having data alignment buffer for performing unaligned data accesses
US20160202989A1 (en) Reconfigurable parallel execution and load-store slice processor
US20060288193A1 (en) Register-collecting mechanism for multi-threaded processors and method using the same
WO2008043287A1 (en) Configurable single instruction multiple data unit
US7340591B1 (en) Providing parallel operand functions using register file and extra path storage
US7581086B2 (en) Digital signal processor
JP3517139B2 (ja) 情報処理装置
CN114296804A (zh) 双模指令集架构下的阵列处理器可避免load_use冒险停顿
JP3299663B2 (ja) 演算装置
JP2000148585A (ja) データ処理装置、方法及びコンピュータ読み取り可能な記憶媒体

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

CX01 Expiry of patent term