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

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

Info

Publication number
CN103226465B
CN103226465B CN201310122677.8A CN201310122677A CN103226465B CN 103226465 B CN103226465 B CN 103226465B CN 201310122677 A CN201310122677 A CN 201310122677A CN 103226465 B CN103226465 B CN 103226465B
Authority
CN
China
Prior art keywords
register file
instruction
stream
group
pipeline
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
CN201310122677.8A
Other languages
English (en)
Other versions
CN103226465A (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
Publication of CN103226465A publication Critical patent/CN103226465A/zh
Application granted granted Critical
Publication of CN103226465B publication Critical patent/CN103226465B/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 or 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

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)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

本发明公开了用于管线式处理的寄存器堆系统和方法。本发明包含一种多线程处理器,其包含与第一线程相关联的第一寄存器堆以及与第二线程相关联的第二寄存器堆。至少一个硬件资源由所述第一和第二寄存器堆共享。另外,所述第一线程可具有不与所述第二线程连续的管线存取位置。本发明还揭示一种存取多个寄存器堆的方法。所述方法包含从第一寄存器堆读取数据,同时从第二寄存器堆读取数据。所述第一寄存器堆与第一指令流相关联,且所述第二寄存器堆与第二指令流相关联。在处理器的执行管线中,所述第一指令流与所述第二指令流是连续的,且所述第一寄存器堆相对于所述第二寄存器堆在非邻近位置中。

Description

用于管线式处理的寄存器堆系统和方法
分案声明
本案是发明名称为“用于管线式处理的寄存器堆系统和方法”,优先权日为2007年9月12日,申请号为200880109732.7,申请日为2008年9月12日的专利申请的分案申请。
技术领域
本发明大体上涉及一种用于管线式处理的寄存器堆系统和方法。
背景技术
技术的进步已产生更小且更强大的个人计算装置。举例来说,当前存在多种便携式个人计算装置,包含无线计算装置,例如便携式无线电话、个人数字助理(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)可与第六指令执行流相关联。在说明性实施例中,指令执行流中的每一者可对应于多线程处理器的特定线程。在另一实施例中,指令执行流中的每一者可进行管线输送且可交错。指令流可包含超长指令字(VeryLongInstructionWord,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处执行第一读取操作接着在T2处执行第二读取操作在T3处执行第一执行操作接着在T4处执行第二执行操作且在T5处执行第三执行操作在T6处执行数据写入操作W1。同样,指令流2在T2处执行第一读取操作在T3处执行第二读取操作在T4处执行一执行操作在T5处执行一执行操作且在T6处执行一执行操作
因为读取操作在管线式处理期间的连续时间周期(例如流1的T1和T2)处执行,所以读取操作针对具有连续管线存取的流同时执行。举例来说,在时间周期T2期间,流1执行读取操作同时流2执行读取操作作为另一实例,在第三时间周期T3期间,流2执行读取操作同时流3执行读取操作类似地,因为每一指令执行流包含三个连续执行步骤,所以多个流同时执行执行步骤。举例来说,在时间周期T6处,流2正处理执行操作流3正处理执行操作且流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可耦合到CODEC534。
图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 (7)

1.一种多线程处理器,其包括:
在芯片上的第一位置处的第一寄存器堆,其中所述第一寄存器堆与第一线程相关联;
在所述芯片上的第二位置处的第二寄存器堆,其中所述第二寄存器堆与第二线程相关联;
在所述芯片上的第三位置处的第三寄存器堆,其中所述第三寄存器堆与第三线程相关联;
在所述芯片上的第四位置处的第四寄存器堆,其中所述第四寄存器堆与第四线程相关联;以及
硬件资源,其由所述第一寄存器堆和所述第二寄存器堆共享;
其中所述第一位置物理上邻近于所述第二位置,并且其中所述第一线程具有第一管线存取位置,在管线中,所述第一管线存取位置在所述第二线程的第二管线存取位置之前且与所述第二管线存取位置不连续;
其中所述第三位置与所述第一位置在物理上非邻近,且其中在所述管线中,所述第一线程的所述第一管线存取位置在所述第三线程的第三管线存取位置之前,且与所述第三管线存取位置连续;
其中所述第四位置物理上邻近于所述第三位置,且其中在所述管线中,所述第四线程的第四管线存取位置在所述第二线程的所述第二管线存取位置之后,且与所述第二管线存取位置连续;
其中对所述第一寄存器堆的数据存取和对所述第二寄存器堆的数据存取不同时发生;
其中至少对所述第一寄存器堆的第一数据存取和对所述第三寄存器堆的第二数据存取同时发生;以及
其中至少对所述第二寄存器堆的第三数据存取和对所述第四寄存器堆的第四数据存取同时发生。
2.一种处理器,其包括:
第一寄存器堆组,其包括第一寄存器堆,所述第一寄存器堆物理上邻近于第二寄存器堆,所述第一寄存器堆与第一指令执行流相关联,且所述第二寄存器堆与第二指令执行流相关联;
第二寄存器堆组,其包括第三寄存器堆,所述第三寄存器堆与第三指令执行流相关联,其中所述第二寄存器堆组位于在芯片上相对于所述第一寄存器堆组的物理上非邻近位置;
其中所述第三指令执行流具有在所述第一指令执行流之后的管线存取位置,且与所述第一指令执行流连续,且其中所述第二指令执行流具有在第三指令执行流之后的第二管线存取位置,且与所述第三指令执行流连续,以允许在所述第一寄存器堆与所述第二寄存器堆之间共享硬件资源;
其中至少对所述第一寄存器堆的第一数据存取与对所述第三寄存器堆的第二数据存取同时发生;
其中对第一寄存器堆的数据存取与对所述第二寄存器堆的数据存取不同时发生;以及
其中所述第一寄存器堆组的第一多个寄存器堆共享第一组硬件资源,且所述第二寄存器堆组的第二多个寄存器堆共享第二组硬件资源。
3.一种处理器,其包括:
第一寄存器堆组,其包括第一寄存器堆,所述第一寄存器堆物理上邻近于第二寄存器堆,所述第一寄存器堆与第一指令执行流相关联,且所述第二寄存器堆与第二指令执行流相关联;
第二寄存器堆组,其包括第三寄存器堆,所述第三寄存器堆与第三指令执行流相关联,其中所述第二寄存器堆组位于在芯片上相对于所述第一寄存器堆组的物理上非邻近位置;以及
单个数据写入总线,其耦合到所述第一寄存器堆组和所述第二寄存器堆组,且用于向所述第一寄存器堆组和所述第二寄存器堆组写入数据;
其中所述第三指令执行流具有在所述第一指令执行流之后的管线存取位置,且与所述第一指令执行流连续,且其中所述第二指令执行流具有在第三指令执行流之后的第二管线存取位置,且与所述第三指令执行流连续,以允许硬件资源在所述第一寄存器堆与所述第二寄存器堆之间共享;
其中至少对所述第一寄存器堆的第一数据存取与对所述第三寄存器堆的第二数据存取同时发生;
其中同时发生的所述第一数据存取与所述第二数据存取是数据读取存取;以及
其中对第一寄存器堆的数据存取与对所述第二寄存器堆的数据存取不同时发生。
4.一种处理器,其包括:
第一寄存器堆组,其包括第一寄存器堆,所述第一寄存器堆物理上邻近于第二寄存器堆,所述第一寄存器堆与第一指令执行流相关联,且所述第二寄存器堆与第二指令执行流相关联;
第二寄存器堆组,其包括第三寄存器堆,所述第三寄存器堆与第三指令执行流相关联,其中所述第二寄存器堆组位于在芯片上相对于所述第一寄存器堆组的物理上非邻近位置;
其中所述第三指令执行流具有在所述第一指令执行流之后的管线存取位置,且与所述第一指令执行流连续,且其中所述第二指令执行流具有在第三指令执行流之后的第二管线存取位置,且与所述第三指令执行流连续,以允许硬件资源在所述第一寄存器堆与所述第二寄存器堆之间共享;
其中至少对所述第一寄存器堆的第一数据存取与对所述第三寄存器堆的第二数据存取同时发生;
其中对第一寄存器堆的数据存取与对所述第二寄存器堆的数据存取不同时发生;以及
其中所述第一寄存器堆组位于第一功率耗散区域中,且所述第二寄存器堆组位于第二功率耗散区域中。
5.一种处理器,其包括:
第一寄存器堆组,其包括第一寄存器堆,所述第一寄存器堆物理上位于邻近于第二寄存器堆,所述第一寄存器堆与第一指令执行流相关联,且所述第二寄存器堆与第二指令执行流相关联;
第二寄存器堆组,其包括第三寄存器堆,所述第三寄存器堆与第三指令执行流相关联,其中所述第二寄存器堆组位于在芯片上相对于所述第一寄存器堆组的物理上非邻近位置;
其中所述第三指令执行流具有在所述第一指令执行流之后的管线存取位置,且与所述第一指令执行流连续,且其中所述第二指令执行流具有在第三指令执行流之后的第二管线存取位置,且与所述第三指令执行流连续,以允许硬件资源在所述第一寄存器堆与所述第二寄存器堆之间共享;
其中至少对所述第一寄存器堆的第一数据存取与对所述第三寄存器堆的第二数据存取同时发生;
其中对第一寄存器堆的数据存取与对所述第二寄存器堆的数据存取不同时发生;
其中所述硬件资源包括不与所述第三寄存器堆共享的第一数据读取总线;以及
其中第二硬件资源包括第二数据读取总线,所述第二数据读取总线由所述第二寄存器堆组共享,但是不由所述第一寄存器堆组共享。
6.一种处理器,其包括:
第一执行管线,其执行第一指令流;
第二执行管线,其执行第二指令流;
第三执行管线,其执行第三指令流;
第一寄存器堆,其与所述第一指令流相关联;
第二寄存器堆,其在芯片上物理上邻近于所述第一寄存器堆,所述第二寄存器堆与所述第二指令流相关联;以及
第三寄存器堆,其物理上非邻近于所述第一寄存器堆和第二寄存器堆,所述第三寄存器堆与所述第三指令流相关联;
其中所述第一指令流和所述第二指令流配置在所述第一执行管线和所述第二执行管线内,所述第一执行管线和所述第二执行管线具有不同时发生的第一寄存器堆和第二寄存器堆的存取,以使得所述第一寄存器堆和所述第二寄存器堆共享至少一个硬件资源;
第二硬件资源,其包括第二数据读取总线,所述第二数据读取总线由第二组寄存器堆共享,但是不由第一组寄存器堆共享;
其中所述第一指令流和所述第三指令流配置在所述第一执行管线和所述第三执行管线内,以同时存取所述第一寄存器堆和所述第三寄存器堆。
7.根据权利要求6所述的处理器,其中所述第一寄存器堆和所述第二寄存器堆位于第一功率耗散区域中,且所述第三寄存器堆位于第二功率耗散区域中。
CN201310122677.8A 2007-09-12 2008-09-12 用于管线式处理的寄存器堆系统和方法 Expired - Fee Related CN103226465B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/853,866 US8725991B2 (en) 2007-09-12 2007-09-12 Register file system and method for pipelined processing
US11/853,866 2007-09-12
CN200880109732.7A CN101809537B (zh) 2007-09-12 2008-09-12 用于管线式处理的寄存器堆系统和方法

Related Parent Applications (1)

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

Publications (2)

Publication Number Publication Date
CN103226465A CN103226465A (zh) 2013-07-31
CN103226465B true CN103226465B (zh) 2016-05-11

Family

ID=39645252

Family Applications (2)

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

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN200880109732.7A Expired - Fee Related CN101809537B (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) CN103226465B (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
CN103646009B (zh) 2006-04-12 2016-08-17 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
CN101627365B (zh) 2006-11-14 2017-03-29 索夫特机械公司 多线程架构
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
CN103250131B (zh) 2010-09-17 2015-12-16 索夫特机械公司 包括用于早期远分支预测的影子缓存的单周期多分支预测
US9207995B2 (en) 2010-11-03 2015-12-08 International Business Machines Corporation Mechanism to speed-up multithreaded execution by register file write port reallocation
WO2012135050A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
TWI518504B (zh) 2011-03-25 2016-01-21 軟體機器公司 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的暫存器檔案節段
CN103547993B (zh) 2011-03-25 2018-06-26 英特尔公司 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块
CN103649931B (zh) 2011-05-20 2016-10-12 索夫特机械公司 用于支持由多个引擎执行指令序列的互连结构
TWI603198B (zh) 2011-05-20 2017-10-21 英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
US20140173160A1 (en) * 2011-06-07 2014-06-19 Telefonaktiebolaget L M Ericsson (Publ) Innovative Structure for the Register Group
WO2013077875A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. An accelerated code optimizer for a multiengine microprocessor
EP2783281B1 (en) 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
US9626191B2 (en) * 2011-12-22 2017-04-18 Nvidia Corporation Shaped register file reads
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
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
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
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
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
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
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004034209A2 (en) * 2002-10-11 2004-04-22 Sandbridge Technologies, Inc. Method and apparatus for register file port reduction in a multithreaded processor
WO2006110906A2 (en) * 2005-04-11 2006-10-19 Qualcomm Incorporated Unified non-partitioned register files for a digital signal processor operating in an interleaved multi-threaded environment

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07101385B2 (ja) * 1986-12-05 1995-11-01 株式会社東芝 情報処理装置
DE69030648T2 (de) * 1990-01-02 1997-11-13 Motorola Inc Verfahren zum sequentiellen Vorabruf von 1-Wort-, 2-Wort oder 3-Wort-Befehlen
KR100210205B1 (ko) * 1990-03-15 1999-07-15 리패치 스톨캐쉬를 제공하기 위한 장치 및 방법
US5778243A (en) * 1996-07-03 1998-07-07 International Business Machines Corporation Multi-threaded cell for a memory
US5913049A (en) * 1997-07-31 1999-06-15 Texas Instruments Incorporated Multi-stream complex instruction set microprocessor
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 仮想マルチスレッドプロセッサ及びスレッド実行方法
CN100407102C (zh) 2002-12-04 2008-07-30 Nxp股份有限公司 基于软件的微处理器功率损耗控制
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
JP5028774B2 (ja) * 2005-09-22 2012-09-19 富士通株式会社 演算処理装置,情報処理装置,及びレジスタファイルの制御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004034209A2 (en) * 2002-10-11 2004-04-22 Sandbridge Technologies, Inc. Method and apparatus for register file port reduction in a multithreaded processor
WO2006110906A2 (en) * 2005-04-11 2006-10-19 Qualcomm Incorporated Unified non-partitioned register files for a digital signal processor operating in an interleaved multi-threaded environment

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Heat-and-Run: Leveraging SMT and CMP to Manage Power Density Through the Operating System;Michael D. Powell et al.;《The 11th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2004)》;20041013;正文第1节INTRODUCTION第1-4段 *

Also Published As

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

Similar Documents

Publication Publication Date Title
CN103226465B (zh) 用于管线式处理的寄存器堆系统和方法
EP2438529B1 (en) Conditional operation in an internal processor of a memory device
US6418527B1 (en) Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
CN102279818B (zh) 支持有限共享的向量数据访存控制方法及向量存储器
EP2261815A2 (en) Multithread processor with efficient processing for convergence device applications
US20050204118A1 (en) Method for inter-cluster communication that employs register permutation
CN101203830A (zh) 用于在交错的多线程环境中操作的数字信号处理器的寄存器堆
JP2010538398A (ja) マルチステージデータ処理パイプラインにおける命令実行システム及び方法
JP6920277B2 (ja) 広いデータ要素のためのレジスタのペアを用いた偶数要素演算および奇数要素演算を有する混合幅simd演算
CN102591619B (zh) 用于处理器中的算术逻辑和移位装置
GB2496934A (en) Multi-stage register renaming using dependency removal and renaming maps.
TW200839611A (en) Data-processing unit
US7774583B1 (en) Processing bypass register file system and method
US7340591B1 (en) Providing parallel operand functions using register file and extra path storage
US20020087830A1 (en) Circuit and method for instruction compression and dispersal in wide-issue processors
WO2017030690A1 (en) Efficient handling of register files
EP2542963B1 (en) System and method of processing hierarchical very long instruction packets
CN112486904A (zh) 可重构处理单元阵列的寄存器堆设计方法及装置
US20040128475A1 (en) Widely accessible processor register file and method for use
EP3304283B1 (en) System, apparatus, and method for temporary load instruction
US20130339660A1 (en) Method and apparatus for a partial-address select-signal generator with address shift
Lee Pseudo-vector machine for embedded applications
CN1763709A (zh) 在移动微处理器中支持mmx指令的方法及扩展的微处理器

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

Termination date: 20210912