CN101809537B - 用于管线式处理的寄存器堆系统和方法 - Google Patents

用于管线式处理的寄存器堆系统和方法 Download PDF

Info

Publication number
CN101809537B
CN101809537B CN200880109732.7A CN200880109732A CN101809537B CN 101809537 B CN101809537 B CN 101809537B CN 200880109732 A CN200880109732 A CN 200880109732A CN 101809537 B CN101809537 B CN 101809537B
Authority
CN
China
Prior art keywords
register file
instruction
data
pipeline
stream
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 - Fee Related
Application number
CN200880109732.7A
Other languages
English (en)
Other versions
CN101809537A (zh
Inventor
王林
马苏德·卡迈
保罗·巴塞特
苏雷什·文库马洪蒂
沈剑
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
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Priority to CN201310122677.8A priority Critical patent/CN103226465B/zh
Publication of CN101809537A publication Critical patent/CN101809537A/zh
Application granted granted Critical
Publication of CN101809537B publication Critical patent/CN101809537B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4247Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
    • G06F13/4252Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus using a handshaking protocol
    • 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/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • 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

用于管线式处理的寄存器堆系统和方法
技术领域
本发明大体上涉及一种用于管线式处理的寄存器堆系统和方法。
背景技术
技术的进步已产生更小且更强大的个人计算装置。举例来说,当前存在多种便携式个人计算装置,包含无线计算装置,例如便携式无线电话、个人数字助理(PDA)和寻呼装置,其体积小、重量轻,且容易被用户携带。更具体地说,便携式无线电话(例如蜂窝式电话和IP电话)可经由无线网络传送语音和数据包。另外,许多此类无线电话包含并入其中的其它类型的装置。举例来说,无线电话还可包含数字静物照相机、数字视频照相机、数字记录器和音频文件播放器。而且,此类无线电话可处理可执行指令,包含软件应用程序,例如网络浏览器应用程序,其可用于访问因特网。由此,这些无线电话可包含相当大的计算能力。
数字信号处理器(DSP)通常用于便携式个人计算装置(例如无线电话)中。此类DSP可用于提供视频和音频功能、用于处理接收到的数据,或用于执行其它功能。此类DSP可使用管线式和/或并行执行单元。
现代微处理器或DSP中的寄存器堆由于其相对大小、其数据总线的宽度以及其线迹的长度而消耗相当多的功率。在某些处理器中,使用多个寄存器堆,且此类寄存器堆促成装置的总功率消耗。另外,电路装置的邻近区域中的多个寄存器堆的布局可增加功率消耗密度,且促成因电路加热导致的低效。因此,需要一种增强的寄存器堆结构和使用寄存器堆的方法。
发明内容
在一特定实施例中,揭示一种多线程处理器。所述处理器包含与第一线程相关联的第一寄存器堆以及与第二线程相关联的第二寄存器堆。至少一个硬件资源由所述第一和第二寄存器堆共享。另外,所述第一线程具有不与所述第二线程连续的管线存取位置。
在另一特定实施例中,所述处理器包含与第一指令执行流相关联的第一寄存器堆以及与第二指令执行流相关联的第二寄存器堆。所述第一和第二执行流以连续方式进行管线输送,且第一寄存器堆相对于第二寄存器堆不在邻近位置中以允许在第一寄存器堆与第三寄存器堆之间共享硬件资源。
在另一特定实施例中,所述处理器包含:用以执行第一指令流的第一执行管线、用以执行第二指令流的第二执行管线、与第一指令流相关联的第一寄存器堆以及与第二指令流相关联的第二寄存器堆。所述第一和第二指令流以对第一和第二寄存器堆的非连续存取配置在第一和第二执行管线内,以允许第一和第二寄存器堆共享至少一个硬件资源。
在另一特定实施例中,揭示一种存取多个寄存器堆的方法。所述方法包含从第一寄存器堆读取数据,同时从第二寄存器堆读取数据。所述第一寄存器堆与第一指令流相关联,且所述第二寄存器堆与第二指令流相关联。在处理器的执行管线中,第一指令流与第二指令流是连续的,且第一寄存器堆相对于第二寄存器堆不在连续位置中。
在另一特定实施例中,揭示一种选择寄存器堆以供存取的方法。所述方法包含选择性地启用第一组寄存器堆中的至少一者以供存取,与此同时同时启用第二组寄存器堆中的至少一者以供存取。所述方法进一步包含:从所述第一组寄存器堆中的所述至少一者向与第一指令流相关联的第一指令单元提供数据;从所述第二组寄存器堆中的所述至少一者向与第二指令流相关联的第二指令单元提供数据;以及使用至少一个管线式执行单元来执行所述第一和第二指令流。所述第一组寄存器堆共享第一组硬件资源,且所述第二组寄存器堆共享第二组硬件资源。
用于管线式处理的寄存器堆系统和方法的实施例所提供的一个特定优点体现在降低的制造成本、操作期间降低的功率密度或两者。
在审阅整个申请案之后,将明白本发明的其它方面、优点和特征,整个申请案包含以下部分:附图说明、具体实施方式和权利要求书。
附图说明
图1是包含用于管线式处理的寄存器堆系统的处理器的实施例的框图;
图2是用于管线式处理的寄存器堆系统的物理布局的实施例的一部分的框图;
图3是描绘可使用用于管线式处理的寄存器堆系统来执行的管线式处理操作的概图;
图4是使用用于管线式处理的寄存器堆的方法的实施例的流程图;以及
图5是包含用于管线式处理的寄存器堆系统的便携式通信装置的框图。
具体实施方式
参看图1,揭示处理器100。在特定说明性实施例中,处理器100可为多线程数字信号处理器。处理器100包含具有指令队列134的存储器102、存储器总线107、定序器单元104、多个执行单元108到114、第一总线118、具有用以共享硬件资源的结构的寄存器堆116,以及第二总线120。定序器104耦合到控制寄存器103。存储器102耦合到第二总线120,且定序器104也耦合到第二总线120。
在特定实施例中,存储器总线107可为六十四(64)位总线,且定序器104可经配置以从存储器102检索指令。在特定说明性实施例中,每一指令可具有三十二(32)位的长度。定序器104经由第一路径(时隙0)耦合到第一指令执行单元108、经由第二路径(时隙1)耦合到第二指令执行单元110、经由第三路径(时隙2)耦合到第三指令执行单元112,且经由第四路径(时隙3)耦合到第四指令执行单元114。每一指令执行单元108、110、112和114可经由第一总线118耦合到一组经构造寄存器堆116。寄存器堆116也可经由第二总线120耦合到定序器104且耦合到存储器102。
在特定实施例中,存储器102可为内容可寻址存储器(CAM),其包含第一指令高速缓冲存储器122、第二指令高速缓冲存储器124、第三指令高速缓冲存储器126、第四指令高速缓冲存储器128、第五指令高速缓冲存储器130和第六指令高速缓冲存储器132。在操作期间,定序器104可存取指令高速缓冲存储器122、124、126、128、130和132中的每一者。另外,在特定实施例中,每一指令高速缓冲存储器122、124、126、128、130和132包含多个指令、用于每一指令的指令操纵数据以及用于每一指令的指令预解码数据。存储器102中的指令队列134可包含用于每一指令对应高速缓冲存储器122、124、126、128、130和132的指令队列136、138、140、142、144和146。
寄存器堆116包含第一组寄存器堆和第二组寄存器堆。所述第一组寄存器堆共享至少一个第一硬件资源,且所述第二组寄存器堆共享至少一个第二硬件资源。实例共享硬件资源包含数据读取端口、数据写入端口、数据读取总线、数据写入总线、存取逻辑和布线连接。在特定实施例中,寄存器堆116包含六个不同寄存器堆,其中所述六个寄存器堆中的每一者对应于存储器102内的相应指令高速缓冲存储器122、124、126、128、130和132中的一者。另外,在特定实施例中,所述寄存器堆中的每一者可具有相同构造,且可包含相等数目的数据操作数和地址操作数。
图1说明多线程处理器100可进一步包含耦合到定序器104的控制寄存器103。如图所示,控制寄存器103可为独立寄存器。
在多线程处理器100的操作期间,指令由定序器104从存储器102取出、发送到选定指令执行单元108、110、112和114,且在指令执行单元108、110、112和114处执行。来自在每一指令执行单元108、110、112和114处执行的指令的结果可写入到总寄存器堆116中的一者。在特定实施例中,处理器100能够执行多个程序线程。另外,在特定实施例中,处理器100可经配置以在交错基础上执行至多达六个不同程序线程。所述程序线程中的每一者可包括一指令流,且可使用执行单元108、110、112或114中的一者或一者以上以管线式方式来执行每一指令流。
参看图2,用于管线式处理的寄存器堆系统的物理布局的实施例的一部分经描绘且概括表示为200。系统200包含第一组寄存器堆202和第二组寄存器堆204。第一组寄存器堆202包含寄存器堆R0(206)、R2(208)和R4(210)。第二组寄存器堆204包含R3(212)、R5(214)和R1(216)。第一总线220耦合到R0(206)、R2(208)和R4(210)中的每一者,以提供对第一组寄存器堆202的寄存器堆中的每一者的读取存取、写入存取或其任意组合。第二总线230耦合到R3(212)、R5(214)和R1(216)中的每一者,以提供对第二组寄存器堆204的寄存器堆中的每一者的读取存取、写入存取或其任意组合。存取总线204耦合到第一总线220和第二总线230。存取总线240进一步耦合到一个或一个以上执行单元260。第一启用电路250耦合到第一组寄存器堆202的每一寄存器堆。第二启用电路252耦合到第二组寄存器堆204的每一寄存器堆。
在特定实施例中,第一组寄存器堆202中和第二组寄存器堆204中的每一寄存器堆与独立的指令执行流相关联。举例来说,R0(206)可与第一执行流相关联,R1(216)可与第二指令执行流相关联,R2(208)可与第三指令执行流相关联,R3(212)可与第四指令执行流相关联,R4(210)可与第五指令执行流相关联,且R5(214)可与第六指令执行流相关联。在说明性实施例中,指令执行流中的每一者可对应于多线程处理器的特定线程。在另一实施例中,指令执行流中的每一者可进行管线输送且可交错。指令流可包含超长指令字(Very Long Instruction Word,VLIW)型指令、超标量型指令、可进行管线输送的其它类型的指令,或其任意组合。
在特定实施例中,连续管线式指令执行流与非邻近寄存器堆206到216相关联。举例来说,与第一执行流相关联的R0(206)和与第二执行流相关联的R1(216)具有连续管线存取位置,但定位在非邻近物理位置处。另外,物理上邻近的寄存器堆206到216具有非连续的管线存取位置。举例来说,R0(206)物理上邻近于R2(208),但与第一执行流相关联,而R2与第三执行流相关联,第三执行流相对于第一执行流具有非连续管线存取位置。
在说明性实施例中,当第一和第二寄存器堆物理上不邻近时,与第一寄存器堆(例如R0(206))相关联的第一执行流以及与第二寄存器堆(例如R1(216))相关联的第二执行流可具有连续的管线存取。当第三执行流相对于第一执行流不连续地管线输送时,与第三执行流相关联的第三寄存器堆(例如R2(208))可物理上邻近于第一寄存器堆。
在特定实施例中,对多个寄存器堆的数据存取可同时发生。举例来说,使用R0(206)在第一指令执行流处执行的数据读取指令可与使用R1(216)在第二指令流处执行的数据读取操作同时地执行数据读取操作。
在特定实施例中,指令执行流可包含一个或一个以上预定义的操作序列。举例来说,指令流可包含两个连续从相关联寄存器堆读取数据的操作,接着是一个或一个以上数据执行操作。因此,可同时从与连续指令执行流相关联的两个寄存器堆读取数据。所述组寄存器堆202和204经布置以使得与连续指令执行流相关联的寄存器堆定位在不同组的寄存器堆202和204中。明确地说,所述组寄存器堆202和204通过偶数编号的指令执行流和奇数编号的指令执行流来分组。
第一组寄存器堆202的寄存器堆R0(206)、R2(208)和R4(210)与相对于彼此非连续执行的相应指令执行流相关联。类似地,第二组寄存器堆204的寄存器堆R3(212)、R5(214)和R1(216)也与相对于彼此非连续执行的相应指令执行流相关联。因此,指令执行流的同时数据存取操作不会在第一组寄存器堆202间所共享的硬件资源上或在第二组寄存器堆204间所共享的硬件资源上产生冲突。
在特定实施例中,所述第一组寄存器堆202经布置以共享第一组硬件资源,且所述第二组寄存器堆204经布置以共享第二组硬件资源。举例来说,第一组寄存器堆202共享第一启用电路250。另外,第一组寄存器堆202共享第一共用数据存取资源,包含一个或一个以上逻辑元件(例如数据读取逻辑或数据写入逻辑),以及与第一总线220相关联的总线布线。第一组寄存器堆202还可共享其它数据线、控制线、其它硬件资源或其任意组合。类似地,第二组寄存器堆204共享第二启用电路252。另外,第二组寄存器堆204共享第二共用数据存取资源,包含一个或一个以上逻辑元件(例如数据读取逻辑或数据写入逻辑),以及与第二总线230相关联的总线布线。第二组寄存器堆204还可共享其它数据线、控制线、其它硬件资源或其任意组合。
在特定实施例中,硬件资源可在第一组寄存器堆202内共享,但此类硬件资源不可由第二组寄存器堆204的寄存器堆共享。类似地,硬件资源可在第二组寄存器堆204内共享,但不可由第一组寄存器堆202的寄存器堆共享。举例来说,第一总线220可包含由第一寄存器堆(例如R0(206))与第三寄存器堆(例如R2(208))共享的第一数据读取总线,但第一总线220不由第二寄存器堆(例如R1(216))或第四寄存器堆(例如R3(212))共享。类似地,第二总线230可包含由第二寄存器堆R1(216)与第四寄存器堆R3(212)共享的第二数据读取总线,但第二总线230不由第一寄存器堆R0(206)和第三寄存器堆R2(208)共享。因此,当连续执行流执行同时数据读取操作(例如对第一和第二寄存器堆、第二和第三寄存器堆或第三和第四寄存器堆的读取存取)时,可利用第一数据读取总线和第二数据读取总线两者,且不引入冲突。
第一组寄存器堆202和第二组寄存器堆204物理上布置在单独的区中,以减少多个指令执行流的操作的执行期间的功率密度。举例来说,位于第一区中的第一组寄存器堆202和位于第二区中的第二组寄存器堆204经布置以减少在与连续指令执行流相关联的寄存器堆处同时发生的数据读取期间的总功率耗散。第一区可位于第一功率耗散区域中,且第二区可位于第二功率耗散区域中,使得包含第一和第二区两者的区域具有比其中每一寄存器堆邻近于至少一个其它寄存器堆的相当区域低的功率密度。为了说明,在R0(206)和R1(216)处执行的同时数据读取在物理上分开的非邻近位置处发生,从而与在物理上邻近的寄存器堆处执行的数据读取相比,降低总功率密度,且改进芯片性能。作为另一实例,在R3(212)和R4(210)处的同时数据读取在第一区和第二区的物理上分开的非邻近位置处发生,从而降低总功率密度,且改进芯片性能。
在特定实施例中,系统200的配置通过配置寄存器堆以使得能够在每一组寄存器堆202和204间共享硬件资源(通过减少或消除所共享资源上的冲突),来实现较低制造成本。另外,由于个别寄存器堆相对于对寄存器堆中的每一者的连续存取的次序的物理位置而获得性能益处,从而实现降低的功率密度和改进的芯片性能。
参看图3,可用寄存器堆系统执行的管线式处理操作的说明性实施例经描绘且概括表示为300。以具有指示连续时间周期T1、T2、T3、T4、T5和T6的列且具有指示管线式指令流1到6的行的表格格式来描绘操作300。使用指令流1作为说明性实例,在T1处执行第一读取操作R1 1,接着在T2处执行第二读取操作R2 1。在T3处执行第一执行操作E1 1,接着在T4处执行第二执行操作E2 1,且在T5处执行第三执行操作E3 1。在T6处执行数据写入操作W1。同样,指令流2在T2处执行第一读取操作R1 2,在T3处执行第二读取操作R2 2,在T4处执行一执行操作E1 2,在T5处执行一执行操作E2 2,且在T6处执行一执行操作E3 2
因为读取操作在管线式处理期间的连续时间周期(例如流1的T1和T2)处执行,所以读取操作针对具有连续管线存取的流同时执行。举例来说,在时间周期T2期间,流1执行读取操作R2 1,同时流2执行读取操作R1 2。作为另一实例,在第三时间周期T3期间,流2执行读取操作R2 2,同时流3执行读取操作R1 3。类似地,因为每一指令执行流包含三个连续执行步骤,所以多个流同时执行执行步骤。举例来说,在时间周期T6处,流2正处理执行操作E3 2,流3正处理执行操作E2 3,且流4正处理执行操作E1 4
在一实施例中,指令流1到6可经由管线式处理器的多个执行管线来执行。在说明性实施例中,指令流1到6可由交错多线程处理器执行。在特定实施例中,指令流1到6中的每一者可为超长指令字(VLIW)型指令。在另一实施例中,指令流1到6中的每一者可为超标量型指令。
在特定实施例中,用于管线式处理的寄存器堆系统(例如图2的系统200)可使得能够使用在与流1到6相关联的寄存器堆间共享的硬件资源。举例来说,因为同时数据读取操作仅在与连续流相关联的寄存器堆处执行,所以寄存器堆可布置成群组,每一群组共享一单独读取数据总线,使得可在不引入冲突的情况下执行同时读取。作为另一实例,因为不执行同时数据写入操作,所以可使用单个数据写入总线来在第一寄存器堆处为第一指令流写入数据,且在第二寄存器堆处为与第一指令流连续的第二指令流写入数据,而不引入写入冲突。
参看图4,使用用于管线式处理的寄存器堆的方法的说明性实施例经描绘且概括表示为400。在402处,选择性地启用第一组寄存器堆中的至少一者以供存取,与此同时同时启用第二组寄存器堆中的至少一者以供存取。举例来说,寄存器堆R2(208)可与寄存器堆R1(216)同时存取。在特定实施例中,所述第一组寄存器堆共享第一组硬件资源,且所述第二组寄存器堆共享第二组硬件资源。举例来说,第一组硬件资源可包含数据读取总线。在说明性实施例中,第一组寄存器堆可为第一组寄存器堆202,且第二组寄存器堆可为图2的第二组寄存器堆204,或图1中描绘的执行单元108到114。
在404处,可从第一组寄存器堆中的至少一者向与第一指令流相关联的第一指令单元提供数据。在406处,可从第二组寄存器堆中的至少一者向与第二指令流相关联的第二指令单元提供数据(在406处)。在408处,可使用至少一个管线式执行单元来执行第一和第二指令流。在特定实施例中,第一指令单元、第二指令单元和执行单元可为经配置以处理管线式执行流的执行单元。在说明性实施例中,执行单元为图2中描绘的执行单元260。
在说明性实施例中,指令可在管线式执行单元中以预定次序执行。在特定实施例中,所述指令中的每一者可作为超长指令字(VLIW)型指令在管线式执行单元中执行。在另一实施例中,所述指令中的每一者可作为超标量型指令在管线式执行单元中执行。
图5是使用用于管线式处理的寄存器堆系统的便携式通信装置的框图。便携式通信装置500包含芯片上系统522,其包含管线式处理器,例如数字信号处理器510。数字信号处理器510包含具有共享硬件资源的寄存器堆570。举例来说,处理器510和具有共享硬件资源的寄存器堆570可包含图1或图2的系统的若干部分,且可利用图3或图4中描述的操作,或其任意组合。在特定说明性实施例中,具有共享硬件资源的寄存器堆570可实现降低的功率密度、降低的制造成本或两者,以支持管线式处理器,例如数字信号处理器510。
在特定实施例中,可通过配置具有共享硬件资源的寄存器堆570,使得邻近寄存器堆不被连续指令执行流存取以用于数据操作,从而防止邻近寄存器堆位置处的同时数据存取操作,来降低处理期间的功率密度。同样,可通过将具有共享硬件资源的寄存器堆570分成至少像存在同一类型的同时数据存取操作一样多组的寄存器堆,来降低制造成本。举例来说,如果两个管线式指令执行流在相关联的寄存器堆处同时执行数据读取操作,如图3中所描绘,那么可定义至少两组寄存器堆,每一组寄存器堆在所述组的寄存器堆间共享数据存取硬件资源,而不产生冲突,例如图2中所描绘。作为另一实例,如果三个管线式指令执行流在相关联的寄存器堆处同时执行数据读取操作,那么可定义至少三组寄存器堆,每一组寄存器堆在所述组的寄存器堆间共享数据存取硬件资源,而不在每一组内产生冲突。
图5还展示显示器控制器526,其耦合到数字信号处理器510且耦合到显示器528。此外,输入装置530耦合到数字信号处理器510。另外,存储器532耦合到数字信号处理器510。编码器/解码器(CODEC)534也可耦合到数字信号处理器510。扬声器536和麦克风538可耦合到CODEC 534。
图5还指示无线控制器540可耦合到数字信号处理器510且耦合到无线天线542。在特定实施例中,电源544耦合到芯片上系统522。此外,在特定实施例中,如图5中所说明,显示器528、输入装置530、扬声器536、麦克风538、无线天线542和电源544在芯片上系统522外部。然而,每一者均耦合到芯片上系统522的组件。
在特定说明性实施例中,具有共享硬件资源的寄存器堆570可用于增强便携式通信装置500的总体性能。明确地说,具有共享硬件资源的寄存器堆570可降低功率密度,从而实现较快的处理速度,且可通过共享共用硬件来降低制造成本,而不使装置500的性能降级。
技术人员将进一步了解,结合本文所揭示的实施例而描述的各种说明性逻辑区块、配置、模块、电路和算法步骤可实施为电子硬件、计算机软件或上述两者的组合。为了清楚地说明硬件与软件的这种可互换性,上文已大体上根据各种说明性组件、区块、配置、模块、电路和步骤的功能性来描述各种说明性组件、区块、配置、模块、电路和步骤。将此类功能性实施为硬件还是软件取决于特定应用和强加于整个系统的设计约束。熟练的技术人员可针对每个特定应用以不同的方式来实施所描述的功能性,但此类实施决策不应被解释为导致与本发明范围的偏离。
结合本文所揭示的实施例而描述的方法或算法的步骤可直接以硬件、以由处理器执行的软件模块或以上述两者的组合的形式体现。软件模块可驻存在RAM存储器、快闪存储器、ROM存储器、PROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸盘、CD-ROM或此项技术中已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息且将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成一体式。处理器和存储媒体可驻存在ASIC中。ASIC可驻存在计算装置或用户终端中。在替代方案中,处理器和存储媒体可作为离散组件驻存在计算装置或用户终端中。
提供对所揭示实施例的先前描述,以使所属领域的技术人员能够制作或使用所揭示的实施例。所属领域的技术人员将容易明白对这些实施例的各种修改,且本文所界定的一般原理可在不脱离本发明的精神或范围的情况下应用于其它实施例。因此,本发明不希望限于本文所展示的实施例,而是应被赋予与如所附权利要求书所界定的原理和新颖特征一致的最宽范围。

Claims (23)

1.一种多线程处理器,其包括:
在芯片上的第一位置处的第一寄存器堆,其中所述第一寄存器堆与第一线程相关联;
在芯片上的第二位置处的第二寄存器堆,其中所述第二寄存器堆与第二线程相关联;以及
由所述第一和第二寄存器堆共享的硬件资源;
其中所述第一位置物理上邻近于所述第二位置,并且其中所述第一线程具有第一管线存取位置,在管线中,所述第一管线存取位置与第二线程的第二存取位置不连续;
其中对所述第一寄存器堆的数据存取和对所述第二寄存器堆的数据存取不同时发生。
2.根据权利要求1所述的处理器,其中所述硬件资源包含逻辑元件和总线布线。
3.根据权利要求2所述的处理器,其中所述逻辑元件包含逻辑读取元件。
4.根据权利要求2所述的处理器,其中所述逻辑元件包含逻辑写入元件。
5.根据权利要求1所述的处理器,其中第一组寄存器堆位于第一区中,且其中第二组寄存器堆位于与所述第一区分开的第二区中,并且其中所述第一区中的所述第一组寄存器堆能够使用第一数据存取资源,而所述第二区中的所述第二组寄存器堆同时使用第二数据存取资源。
6.根据权利要求5所述的处理器,其中所述第一数据存取资源包含第一数据读取总线,且其中所述第二数据存取资源包含第二数据读取总线。
7.根据权利要求5所述的处理器,其中所述第一数据存取资源是所述第一区中的所述寄存器堆中的每一者间的共享资源。
8.根据权利要求5所述的处理器,其中所述第二数据存取资源是所述第二组寄存器堆的每一寄存器堆间的共享资源。
9.根据权利要求5所述的处理器,其中所述第一组寄存器堆对应于偶数编号的线程,且其中所述第二组寄存器堆对应于奇数编号的线程。
10.根据权利要求5所述的处理器,其中所述第一数据存取资源包含包括第一数据写入总线的第一数据写入资源,且其中所述第二数据存取资源包含包括第二数据写入总线的第二数据写入资源。
11.根据权利要求5所述的处理器,其中所述第一区位于第一功率耗散区域中,且所述第二区位于第二功率耗散区域中,使得包含所述第一和第二区两者的区域具有比其中每一寄存器堆邻近于至少一个其它寄存器堆的相当区域低的功率密度。
12.一种处理器,其包括:
与第一指令执行流相关联的第一寄存器堆;
与第二指令执行流相关联的第二寄存器堆,所述第二指令执行流相对于所述第一指令执行流连续地管线输送;以及
与第三指令执行流相关联的第三寄存器堆,所述第三指令执行流相对于所述第一指令执行流不连续地管线输送;以及
其中所述第一寄存器堆物理上邻近于所述第三寄存器堆;
其中所述第一寄存器堆相对于所述第二寄存器堆位于非邻近位置中,以允许在所述第一寄存器堆与所述第三寄存器堆之间共享硬件资源;
其中对所述第一寄存器堆的数据存取和对所述第三寄存器堆的数据存取不同时发生;并且其中对所述第一寄存器堆的数据存取和对所述第二寄存器堆的数据存取同时发生。
13.根据权利要求12所述的处理器,其中所述硬件资源包含逻辑元件和总线布线。
14.根据权利要求12所述的处理器,其中所述硬件资源包含不与所述第二寄存器堆共享的第一数据读取总线。
15.根据权利要求14所述的处理器,其进一步包括:
第四寄存器堆;以及
第二数据读取总线,其由所述第二寄存器堆和所述第四寄存器堆共享,但不由所述第一寄存器堆或所述第三寄存器堆共享。
16.一种处理器,其包括:
用以执行第一指令流的第一执行管线;
用以执行第二指令流的第二执行管线;
与所述第一指令流相关联的第一寄存器堆;
与芯片上的所述第一寄存器堆物理上相邻的第二寄存器堆,所述第二寄存器堆与所述第二指令流相关联;
其中所述第一和第二指令流以不同时存取所述第一和第二寄存器堆的方式配置在所述第一和第二执行管线内,以使得所述第一和第二寄存器堆能够共享至少一个硬件资源:
其中所述第二指令流相对于所述第一指令流不连续地管线输送。
17.根据权利要求16所述的处理器,其中所述至少一个硬件资源包含数据读取总线。
18.根据权利要求16所述的处理器,其中指令在所述第一执行管线中以预定次序执行。
19.根据权利要求16所述的处理器,其中在所述第一执行管线中执行的所述指令中的每一者是超长指令字型指令。
20.根据权利要求16所述的处理器,其中在所述第一执行管线中执行的所述指令中的每一者是超标量型指令。
21.一种存取多个寄存器堆的方法,所述方法包括:
在处理器的执行管线的第一时间周期处从第一寄存器堆读取数据,同时从第二寄存器堆读取数据,其中所述第一寄存器堆与第一指令流相关联,且所述第二寄存器堆与第二指令流相关联,其中在处理器的执行管线中,所述第一指令流具有与所述第二指令流连续的管线存取位置,且其中所述第一寄存器堆相对于所述第二寄存器堆处于非邻近位置;
在第二时间周期处从第二寄存器堆读取数据时,同时从第三寄存器堆读取数据,在所述处理器的执行管线中,所述第二时间周期在所述第一时间周期之后发生且与所述第一时间周期是连续的,其中所述第三寄存器堆与第三指令流相关联,其中在所述处理器的执行管线中,所述第二指令流具有与所述第三指令流连续的第二管线存取位置,且其中所第一寄存器堆相对于所述第三寄存器堆处于邻近位置,且所述第三寄存器堆相对于所述第二寄存器堆处于非邻近位置。
22.根据权利要求21所述的方法,其进一步包括将数据写入到所述第一寄存器堆且写入到所述第二寄存器堆。
23.一种存取多个寄存器堆的装置,所述装置包括:
用于将数据写入到第一寄存器堆的装置;
用于将数据写入到第二寄存器堆的装置;
用于在处理器的执行管线的第一时间周期处从所述第一寄存器堆读取数据而同时从所述第二寄存器堆读取数据的装置;
其中所述第一寄存器堆与第一指令流相关联,且所述第二寄存器堆与第二指令流相关联,其中在处理器的执行管线中,所述第一指令流具与所述第二指令流连续的管线存取位置;以及
其中所述第一寄存器堆相对于所述第二寄存器堆处于非邻近位置;
用于在第二时间周期处从第二寄存器堆读取数据时,同时从第三寄存器堆读取数据的装置,在所述处理器的执行管线中,所述第二时间周期在所述第一时间周期之后发生且与所述第一时间周期是连续的,
其中所述第三寄存器堆与第三指令流相关联,其中在所述处理器的执行管线中,所述第二指令流具有与所述第三指令流连续的第二管线存取位置,且其中所第一寄存器堆相对于所述第三寄存器堆处于邻近位置,且所述第三寄存器堆相对于所述第二寄存器堆处于非邻近位置。
CN200880109732.7A 2007-09-12 2008-09-12 用于管线式处理的寄存器堆系统和方法 Expired - Fee Related CN101809537B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310122677.8A CN103226465B (zh) 2007-09-12 2008-09-12 用于管线式处理的寄存器堆系统和方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/853,866 2007-09-12
US11/853,866 US8725991B2 (en) 2007-09-12 2007-09-12 Register file system and method for pipelined processing
PCT/US2008/076249 WO2009036335A1 (en) 2007-09-12 2008-09-12 Register file system and method for pipelined processing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201310122677.8A Division CN103226465B (zh) 2007-09-12 2008-09-12 用于管线式处理的寄存器堆系统和方法

Publications (2)

Publication Number Publication Date
CN101809537A CN101809537A (zh) 2010-08-18
CN101809537B true CN101809537B (zh) 2014-10-22

Family

ID=39645252

Family Applications (2)

Application Number Title Priority Date Filing Date
CN200880109732.7A Expired - Fee Related CN101809537B (zh) 2007-09-12 2008-09-12 用于管线式处理的寄存器堆系统和方法
CN201310122677.8A Expired - Fee Related CN103226465B (zh) 2007-09-12 2008-09-12 用于管线式处理的寄存器堆系统和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201310122677.8A Expired - Fee Related CN103226465B (zh) 2007-09-12 2008-09-12 用于管线式处理的寄存器堆系统和方法

Country Status (6)

Country Link
US (1) US8725991B2 (zh)
EP (2) EP3056985A1 (zh)
JP (1) JP5420545B2 (zh)
KR (1) KR101139066B1 (zh)
CN (2) CN101809537B (zh)
WO (1) WO2009036335A1 (zh)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327115B2 (en) * 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
CN107368285B (zh) 2006-11-14 2020-10-09 英特尔公司 多线程架构
JP5049802B2 (ja) * 2008-01-22 2012-10-17 株式会社リコー 画像処理装置
US8195909B2 (en) 2009-10-05 2012-06-05 Seagate Technology Llc Data management in a data storage system
EP3156896B1 (en) 2010-09-17 2020-04-08 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
US9207995B2 (en) 2010-11-03 2015-12-08 International Business Machines Corporation Mechanism to speed-up multithreaded execution by register file write port reallocation
KR101826121B1 (ko) 2011-03-25 2018-02-06 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
TWI548994B (zh) 2011-05-20 2016-09-11 軟體機器公司 以複數個引擎支援指令序列的執行之互連結構
CN107729267B (zh) 2011-05-20 2022-01-25 英特尔公司 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
CN103748566A (zh) * 2011-06-07 2014-04-23 爱立信(中国)通信有限公司 用于寄存器组的创新结构
KR101703400B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 마이크로프로세서 가속 코드 최적화기
US10191746B2 (en) 2011-11-22 2019-01-29 Intel Corporation Accelerated code optimizer for a multiengine microprocessor
US9626191B2 (en) * 2011-12-22 2017-04-18 Nvidia Corporation Shaped register file reads
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US9715392B2 (en) * 2014-08-29 2017-07-25 Qualcomm Incorporated Multiple clustered very long instruction word processing core
US10649771B2 (en) 2017-03-31 2020-05-12 Samsung Electronics Co., Ltd. Semiconductor device
KR102235803B1 (ko) 2017-03-31 2021-04-06 삼성전자주식회사 반도체 장치
CN111221573B (zh) * 2018-11-26 2022-03-25 深圳云天励飞技术股份有限公司 一种寄存器访问时序的管理方法、处理器、电子设备及计算机可读存储介质
US11144367B2 (en) 2019-02-08 2021-10-12 International Business Machines Corporation Write power optimization for hardware employing pipe-based duplicate register files
KR102292580B1 (ko) 2020-03-19 2021-08-20 연세대학교 산학협력단 고성능 비순차 실행 코어의 물리 레지스터 파일 관리 장치 및 방법
FR3109226B1 (fr) * 2020-04-08 2022-04-22 St Microelectronics Grenoble 2 Circuit de vérification du contenu de registres
CN113496723A (zh) * 2020-04-08 2021-10-12 意法半导体(格勒诺布尔2)公司 用于验证寄存器的内容的电路

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0270125A2 (en) * 1986-12-05 1988-06-08 Kabushiki Kaisha Toshiba Pipeline controlling system
EP0436341A3 (en) * 1990-01-02 1993-03-17 Motorola Inc. Sequential prefetch method for 1, 2 or 3 word instructions
US5404486A (en) * 1990-03-15 1995-04-04 Sun Microsystems, Inc. Processor having a stall cache and associated method for preventing instruction stream stalls during load and store instructions in a pipelined computer system
US5913049A (en) * 1997-07-31 1999-06-15 Texas Instruments Incorporated Multi-stream complex instruction set microprocessor
CN1936831A (zh) * 2005-09-22 2007-03-28 富士通株式会社 算术运算装置、信息处理装置以及寄存器堆控制方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778243A (en) 1996-07-03 1998-07-07 International Business Machines Corporation Multi-threaded cell for a memory
US20030188141A1 (en) 2002-03-29 2003-10-02 Shailender Chaudhry Time-multiplexed speculative multi-threading to support single-threaded applications
JP2002140200A (ja) 2000-10-31 2002-05-17 Toshiba Corp 仮想マルチスレッドプロセッサ及びスレッド実行方法
US6904511B2 (en) * 2002-10-11 2005-06-07 Sandbridge Technologies, Inc. Method and apparatus for register file port reduction in a multithreaded processor
AU2003283680A1 (en) 2002-12-04 2004-06-23 Koninklijke Philips Electronics N.V. Software-based control of microprocessor power dissipation
US7339592B2 (en) 2004-07-13 2008-03-04 Nvidia Corporation Simulating multiported memories using lower port count memories
TWI326428B (en) 2005-03-18 2010-06-21 Marvell World Trade Ltd Real-time control apparatus having a multi-thread processor
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0270125A2 (en) * 1986-12-05 1988-06-08 Kabushiki Kaisha Toshiba Pipeline controlling system
EP0436341A3 (en) * 1990-01-02 1993-03-17 Motorola Inc. Sequential prefetch method for 1, 2 or 3 word instructions
US5404486A (en) * 1990-03-15 1995-04-04 Sun Microsystems, Inc. Processor having a stall cache and associated method for preventing instruction stream stalls during load and store instructions in a pipelined computer system
US5913049A (en) * 1997-07-31 1999-06-15 Texas Instruments Incorporated Multi-stream complex instruction set microprocessor
CN1936831A (zh) * 2005-09-22 2007-03-28 富士通株式会社 算术运算装置、信息处理装置以及寄存器堆控制方法

Also Published As

Publication number Publication date
US8725991B2 (en) 2014-05-13
CN103226465B (zh) 2016-05-11
EP2037358A1 (en) 2009-03-18
KR20100061524A (ko) 2010-06-07
WO2009036335A1 (en) 2009-03-19
EP3056985A1 (en) 2016-08-17
US20090070554A1 (en) 2009-03-12
CN103226465A (zh) 2013-07-31
CN101809537A (zh) 2010-08-18
JP2010539603A (ja) 2010-12-16
JP5420545B2 (ja) 2014-02-19
KR101139066B1 (ko) 2012-04-30

Similar Documents

Publication Publication Date Title
CN101809537B (zh) 用于管线式处理的寄存器堆系统和方法
EP2438529B1 (en) Conditional operation in an internal processor of a memory device
US20050204118A1 (en) Method for inter-cluster communication that employs register permutation
US20140149715A1 (en) Scalable and programmable computer systems
JP2012174016A (ja) データ処理装置およびそのデータ処理方法
JP6920277B2 (ja) 広いデータ要素のためのレジスタのペアを用いた偶数要素演算および奇数要素演算を有する混合幅simd演算
US20060212681A1 (en) Processor and method of grouping and executing dependent instructions in a packet
JP2008226236A (ja) 構成可能なマイクロプロセッサ
US7774583B1 (en) Processing bypass register file system and method
EP3475808B1 (en) Method and apparatus for performing simd gather and copy operations
WO2008043287A1 (en) Configurable single instruction multiple data unit
US7143268B2 (en) Circuit and method for instruction compression and dispersal in wide-issue processors
EP2542963B1 (en) System and method of processing hierarchical very long instruction packets
CN112486904A (zh) 可重构处理单元阵列的寄存器堆设计方法及装置
US20050055539A1 (en) Methods and apparatus for general deferred execution processors
CN102622318B (zh) 一种存储器控制电路及其控制的向量数据寻址方法
JP2022028579A (ja) 命令取得、解読、実行と論理アドレスとバスネットの回路が有る記憶装置
US20040128475A1 (en) Widely accessible processor register file and method for use
CN112506468A (zh) 支持高吞吐多精度乘法运算的risc-v通用处理器
CN105308557A (zh) 一种数据处理装置及方法
CN115857872A (zh) 针对每个矩阵维度的多个片的矩阵操作
CN1763709A (zh) 在移动微处理器中支持mmx指令的方法及扩展的微处理器
JPH05298094A (ja) 処理装置
JP2010122741A (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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20141022

Termination date: 20210912