CN101495959A - 组合微处理器内的多个寄存器单元的方法和系统 - Google Patents
组合微处理器内的多个寄存器单元的方法和系统 Download PDFInfo
- Publication number
- CN101495959A CN101495959A CNA2007800282684A CN200780028268A CN101495959A CN 101495959 A CN101495959 A CN 101495959A CN A2007800282684 A CNA2007800282684 A CN A2007800282684A CN 200780028268 A CN200780028268 A CN 200780028268A CN 101495959 A CN101495959 A CN 101495959A
- Authority
- CN
- China
- Prior art keywords
- register cell
- register
- gained
- cell
- unit
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000013500 data storage Methods 0.000 claims description 11
- 230000015654 memory Effects 0.000 claims description 9
- 230000010365 information processing Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000011068 loading method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明描述一种用以组合微处理器(例如数字信号处理器)内的多个寄存器单元的方法和系统。从处理单元内的寄存器堆结构检索第一寄存器单元和第二寄存器单元,所述第一寄存器单元和所述第二寄存器单元非相邻地位于所述寄存器堆结构内。在执行单一指令期间进一步组合所述第一寄存器单元和所述第二寄存器单元以形成所得寄存器单元。最后,将所述所得寄存器单元存储在所述寄存器堆结构内以用于进一步处理。或者,检索来自所述第一寄存器单元的第一半字单元和来自所述第二寄存器单元的第二半字单元。在执行单一指令期间将所述第一半字单元和所述第二半字单元进一步输入到所得寄存器单元的对应高部分和低部分中以形成所述所得寄存器单元。最后,将所述所得寄存器单元存储在所述寄存器堆结构内以用于进一步处理。
Description
技术领域
本发明大体上涉及微处理器,且更具体来说,涉及组合微处理器(例如数字信号处理器)内的多个寄存器单元的方法和系统。
背景技术
通常,计算机系统包括一个或一个以上微处理器装置,每一微处理器装置经配置以对存储在计算机系统的存储器内的值执行运算并管理计算机系统的总运算。这些计算机系统也可包括各种多媒体装置(例如声卡和/或视频卡),每一多媒体装置进一步包括一个或一个以上处理器(例如数字信号处理器(DSP)),所述一个或一个以上处理器执行每一各自多媒体装置内的复杂数学计算。
数字信号处理器(DSP)通常包括经特定配置以执行此类数学计算的硬件执行单元,例如一个或一个以上算术逻辑单元(ALU)、一个或一个以上乘法和累加单元(MAC),以及经配置以执行通过DSP内的指令集所指定的运算的其它功能单元。此类运算可包括(例如)算术运算、逻辑运算和其它数据处理运算,每一者由相关联的指令集界定。
通常,DSP内的执行单元从耦合到存储器和执行单元的寄存器堆读取数据和操作数、执行指令运算,且将结果存储在寄存器堆中。寄存器堆包括多个寄存器单元,每一寄存器单元作为单一寄存器或作为两个相邻寄存器单元的经对准对而为可存取的。然而,某些特定运算(例如加或减数据的运算)需要来自寄存器堆内的独立寄存器单元的数据经正确地对准以用于执行指令。因此,需要一种在执行单一指令期间组合DSP内的多个非相邻的寄存器单元以使得能够正确对准存储在此类寄存器单元内的数据的方法和系统。
发明内容
本发明描述一种组合微处理器(例如数字信号处理器)内的多个寄存器单元的方法和系统。在一实施例中,从处理单元内的寄存器堆结构检索第一寄存器单元和第二寄存器单元,所述第一寄存器单元和所述第二寄存器单元非相邻地位于寄存器堆结构内。在执行单一指令期间进一步组合所述第一寄存器单元和所述第二寄存器单元以形成所得寄存器单元。最后,所得寄存器单元存储在寄存器堆结构内以用于进一步处理。
在一替代实施例中,在检索第一寄存器单元和第二寄存器单元之后,从第一寄存器单元检索第一半字单元且从第二寄存器单元检索第二半字单元。在执行单一指令期间将第一半字单元和第二半字单元进一步输入到所得寄存器单元的对应高部分和低部分以形成所得寄存器单元。最后,所得寄存器单元存储在寄存器堆结构内以用于进一步处理。
附图说明
图1为在其内可执行指令集的数字信号处理系统的方框图;
图2为说明数字信号处理系统内的通用寄存器结构的一实施例的方框图;
图3为说明超长指令字(VLIW)数字信号处理系统架构的一实施例的方框图;
图4为说明组合数字信号处理系统内的寄存器单元的方法的一实施例的流程图;
图5为说明结合图4所描述的用以组合寄存器单元的方法的方框图;
图6为说明组合数字信号处理系统内的寄存器单元的方法的一替代实施例的流程图;
图7为说明结合图6所描述的用以组合寄存器单元的方法的方框图。
具体实施方式
本发明描述一种组合微处理器(例如数字信号处理器)内的多个寄存器单元的方法和系统。尽管以下所描述的系统使得数字信号处理器(DSP)能够组合寄存器单元,但应了解可使用微处理器装置,或能在执行单一指令期间将多个寄存器单元组合为所得较大寄存器单元的任何其它处理单元来实施所述系统。
通常,DSP内的执行单元从寄存器堆读取数据和操作数,执行指令运算,且将结果存储在寄存器堆中。寄存器堆包括多个寄存器单元,每一寄存器单元作为单一寄存器或作为两个相邻寄存器单元的经对准对而为可存取的。然而,某些特定运算(例如加或减数据的运算)需要来自寄存器堆内的单独寄存器单元的数据经正确地对准以用于执行指令。以下详述的实施例有助于在执行单一指令期间组合/串联DSP内的多个非相邻寄存器单元,以使得能够正确对准存储在此些寄存器单元内的数据以备用于后续的向量运算。
在一实施例中,从处理单元内的寄存器堆结构检索第一寄存器单元和第二寄存器单元,所述第一寄存器单元和所述第二寄存器单元非相邻地位于寄存器堆结构内。在执行单一指令期间进一步组合所述第一寄存器单元和所述第二寄存器单元以形成所得较大寄存器单元。最后,所得寄存器单元存储在寄存器堆结构内以用于进一步处理。
在一替代实施例中,在检索第一寄存器单元和第二寄存器单元之后,检索来自第一寄存器单元的第一半字单元和来自第二寄存器单元的第二半字单元。在执行单一指令期间将第一半字单元和第二半字单元进一步输入到所得寄存器单元的对应高部分和低部分以形成所得寄存器单元。最后,所得寄存器单元存储在寄存器堆结构内以用于进一步处理。
图1为在其内执行指令集的数字信号处理系统的方框图。如图1中所说明,数字信号处理系统100包括处理单元110、存储器150和一个或一个以上总线160,所述一个或一个以上总线160将处理单元110耦合到存储器150。
存储器150以(例如)由VLIW编译器产生的超长指令字(VLIW)包的形式存储数据和指令,每一VLIW包包含一个或一个以上指令。包的每一指令通常具有预定宽度且具有在存储器150中的特定地址,使得包中的第一指令通常具有比包的最后一指令低的存储器地址。存储器的寻址机制是此项技术中众所周知的且此处未加以详细论述。经由总线160将存储器150中的指令加载到处理单元110中。
处理单元110进一步包含经由一个或一个以上管线140耦合到一个或一个以上寄存器堆结构120的中央处理单元核心130。处理单元110可进一步包含一个或一个以上微处理器,数字信号处理器等。
寄存器堆120进一步包含:一组通用寄存器单元,其支持通用计算,且在下文结合图2进一步详细描述其;和一组控制寄存器单元,其支持特殊目的功能性,例如硬件回路、声明和其它特殊操作数。
图2为说明数字信号处理系统内的通用寄存器结构的一实施例的方框图。如图2中所说明,在一实施例中,寄存器堆120内的通用寄存器堆结构200包括多个寄存器单元,例如三十二(32)位宽寄存器单元210,每一寄存器单元作为单一寄存器或作为两个相邻寄存器单元210的经对准对220而为可存取的。
可基于合适的指令通过多个名称来指代通用寄存器单元210。举例来说,寄存器单元210可个别地被称为R0、R1、......、R30和R31。此外,寄存器单元R0和R1可形成被称为R10的64位寄存器对220。类似地,寄存器单元R2和R3可形成被称为R3:2的64位寄存器对220,寄存器单元R28和R29可形成被称为R29:28的64位寄存器对220,且寄存器单元R30和R31可形成被称为R31:30的64位寄存器对220。
在一实施例中,通用寄存器单元210用于通用计算目的,例如地址产生、标量算术和向量算术;且提供用于指令的所有操作数,包括用于加载/存储指令的地址、用于数值指令的数据操作数和用于向量指令的向量操作数。
图3为说明超长指令字(VLIW)数字信号处理系统架构的一实施例的方框图。VLIW系统架构300包括经由指令加载总线320、数据加载总线322和数据加载/存储总线324耦合到数字信号处理器(DSP)330的存储器310。
在一实施例中,存储器310以(例如)具有一到四个指令的VLIW包的形式存储数据和指令。经由指令加载总线320将存储器310内所存储的指令加载到DSP 330。在一实施例中,每一指令具有32位字宽,其经由具有四字宽的128位指令加载总线320加载到DSP 330。在一实施例中,存储器310为统一字节可寻址存储器,具有存储指令和数据的32位地址空间,且在小端模式(little-endian mode)中操作。
在一实施例中,DSP 330包含定序器335、用于四个处理或执行单元345的四个管线340、通用寄存器堆结构350((包含多个通用寄存器单元(例如结合图2详细描述的通用寄存器堆结构200))和控制寄存器堆结构360。定序器335从存储器310接收指令的包且使用指令内所含有的信息为每一所接收的包的每一指令确定适当的管线340和各自执行单元345。在为包的每一指令作出此确定之后,定序器335将指令输入到适当的管线340中以由适当的执行单元345处理。
在一实施例中,所述执行单元345进一步包含向量移位单元、向量MAC单元、加载单元和加载/存储单元。向量移位单元345执行(例如)S型(移位单元)指令,例如移位和加/减运算、移位和逻辑运算、排列运算(Permute operation)、声明运算、位操纵和向量半字/字移位;A64型(64位算术)指令,例如64位算术和逻辑运算、32位逻辑运算、排列运算;A32型(32位算术)指令,例如32位算术运算;J型(跳跃)指令,例如跳跃/调用PC相关运算;和CR型(控制寄存器)指令,例如控制寄存器转移、硬件回路设置。向量MAC单元345执行(例如)M型(乘法单元)指令,例如单精度、双精度、复杂和向量字节/半字指令;A64型指令;A32型指令;J型指令和JR型(跳跃寄存器)指令,例如跳跃/调用寄存器运算。加载单元345将数据从存储器310加载到通用寄存器堆结构350且执行(例如)加载型和A32型指令。加载/存储单元345将来自通用寄存器堆结构350的数据加载并存储回到存储器310,且执行(例如)加载型、存储型和A32型指令。
接收指令的每一执行单元345使用通过四个执行单元345所共享的通用寄存器堆结构350来执行指令。将指令所需的数据经由64位数据加载总线322加载到通用寄存器堆结构350。在通过执行单元345执行包的指令之后,将所得数据存储到通用寄存器堆结构350且随后经由64位数据加载/存储总线324加载并存储到存储器310。通常,包的一到四个指令由四个执行单元345在一个时钟循环中并行执行,其中对于每一时钟循环来说,管线340接收并处理最多一个指令。
在一实施例中,执行单元345也可使用控制寄存器堆结构360来执行对应的指令。控制寄存器堆结构360包含一组特殊寄存器单元,例如修改量寄存器单元、状态寄存器单元和声明寄存器单元。
图4为说明组合数字信号处理系统100内的寄存器单元的方法的一实施例的流程图。如图4的实施例中所说明,在处理方框410处,接收用以组合/串联数字信号处理系统300内的寄存器单元的指令。在一实施例中,如以下所描述,DSP 330内的执行单元345接收指令且执行所述指令以组合存储在通用寄存器堆结构350中的预定寄存器单元。在一实施例中,预定寄存器单元非相邻地位于通用寄存器堆结构内。
在处理方框420处,识别预定寄存器单元(例如第一32位宽寄存器单元和第二32位宽寄存器单元)。在一实施例中,执行单元345与通用寄存器堆结构350通信且识别请求组合的寄存器单元。在一实施例中,存储器310随后经由64位数据加载总线322将指令所需的数据加载到通用寄存器堆结构350。或者,数据可能已存储在所识别的第一和第二寄存器单元内。
在处理方框430处,检索所识别的寄存器单元和相关联的数据。在一实施例中,执行单元345从通用寄存器堆结构350检索所识别的寄存器单元和相关联的数据。
在处理方框440处,将所检索的寄存器单元组合/串联在所得较大寄存器对内。在一实施例中,执行单元345将所检索的寄存器单元(例如第一和第二32位宽寄存器单元)以及其相关联的数据组合为所得64位宽寄存器对单元,使得第一寄存器单元和其相关联的数据输入到所得寄存器单元的高部分且第二寄存器单元和其相关联的数据输入到所得寄存器单元的低部分。
最后,在处理方框450处,存储所得寄存器对以用于进一步处理。在一实施例中,执行单元345将所得寄存器单元输出到通用寄存器堆结构350且存储所得寄存器单元以用于额外指令的进一步处理。
图5为说明结合图4所描述的用以组合寄存器单元的方法的方框图。如图5中所说明,识别源寄存器单元RS 510和RT 520且进一步从通用寄存器堆结构350检索所述源寄存器单元RS 510和RT 520。
在一实施例中,将源寄存器单元RS 510和RT 520组合/串联为所得较大目的地寄存器单元RD 530的指令为:
RD=组合(RS,RT)
一旦执行所述指令,便将寄存器单元RS 510和RT 520组合/串联为所得较大目的地寄存器单元RD 530,使得将驻留于寄存器单元RS 510中的数据输入到寄存器单元RD 530的高部分中且将驻留于寄存器单元RT 520中的数据输入到寄存器单元RD 530的低部分中。如果(例如)RS 510和RT 520均为32位宽寄存器单元,则所得目的地寄存器单元RD 530为64位宽寄存器。
图6为说明用以组合数字信号处理系统300内的寄存器单元的方法的一替代实施例的流程图。如图6的实施例中所说明,在处理方框610处,接收用以组合/串联数字信号处理系统300内的寄存器单元的指令。在一实施例中,DSP 330内的执行单元345接收指令且执行所述指令以组合存储在通用寄存器堆结构350中的预定寄存器单元。在一实施例中,预定寄存器单元非相邻地位于通用寄存器堆结构内。
在处理方框620处,识别预定寄存器单元(例如第一32位宽寄存器单元和第二32位宽寄存器单元)。在一实施例中,执行单元345与通用寄存器堆结构350通信且识别被请求组合的寄存器单元。在一实施例中,存储器310随后经由64位数据加载总线322将指令所需的数据加载到通用寄存器堆结构350。或者,数据可能已存储在所识别的第一和第二寄存器单元内。
在处理方框630处,检索所识别的寄存器单元和相关联的数据。在一实施例中,执行单元345从通用寄存器堆结构350检索所识别的寄存器单元和相关联的数据。
在处理方框640处,从第一寄存器单元检索第一半字单元且将其输入到所得寄存器单元中。在一实施例中,执行单元345进一步从第一寄存器单元检索第一16位宽半字单元(其在一实施例中可为第一寄存器单元的高半字单元,或作为替代,可为第一寄存器单元的低半字单元),且将第一半字单元输入到所得寄存器单元的高部分中。
在处理方框650处,从第二寄存器单元检索第二半字单元且将其输入到所得寄存器单元中。在一实施例中,执行单元345进一步从第二寄存器单元检索第二16位宽半字单元(其在一实施例中可为第二寄存器单元的高半字单元,或作为替代,可为第二寄存器单元的低半字单元),且将第二半字单元输入到所得寄存器单元的低部分中,因此获得32位宽所得寄存器单元。
最后,在处理方框660处,存储所得寄存器单元以用于进一步处理。在一实施例中,执行单元345将所得寄存器单元输出到通用寄存器堆结构350且存储所得寄存器单元以用于额外指令的进一步处理。
图7为说明结合图6所描述的用以组合寄存器单元的方法的方框图。如图7中所说明,识别源寄存器单元RS 540和RT 550且从通用寄存器堆结构200检索所述源寄存器单元RS 540和RT 550。
在一实施例中,将源寄存器单元RS 540和RT 550组合/串联为所得目的地寄存器单元RD 560的指令为:
RD=组合(RT·[HL],RS·[HL])
其中RT·[HL]为具有高半字H和低半字L的源寄存器单元RT,且其中RS为具有高半字H和低半字L的源寄存器单元RS。
如图7中所示,一旦执行指令,将源寄存器单元RT 550的高半字RT1或(作为替代)源寄存器单元RT 550的低半字RT2经由多路复用器555输入到寄存器单元RD 560的高部分中,且将源寄存器单元RS 540的高半字RS1或(作为替代)源寄存器单元RS 540的低半字RS2经由多路复用器545输入到寄存器单元RD 560的低部分中。如果(例如)RS 540和RT 550均为32位宽寄存器单元,则在一实施例中,源寄存器单元RT 550的高半字RT1为16位宽,源寄存器单元RS 540的低半字RS2也为16位宽,且因此所得目的地寄存器单元RD 560为32位宽寄存器。
所属领域的技术人员将了解,可使用多种不同技术和技艺中的任一者来表示信息和信号。举例来说,在以上描述中可参考的数据、指令、命令、信息、信号、位、符号和码片可由电压、电流、电磁波、磁场或磁性粒子、光场或光学粒子或其任何组合来表示。
所属领域的技术人员将进一步了解,可将结合本文中所揭示的实施例而描述的各种说明性逻辑区块、模块、电路和算法步骤实施为电子硬件、计算机软件或两者的组合。为清楚地说明硬件和软件的此互换性,已根据其功能性在上文中大体上描述了各种说明性组件、区块、模块、电路和步骤。将此功能性实施为硬件还是软件取决于特定应用和强加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以变化的方式实施所描述的功能性,但不应将此些实施方案解释为导致脱离本发明的范围。
可使用经设计以执行本文所描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其任何组合来实施或执行结合本文中所揭示的实施例而描述的各种说明性逻辑区块、模块和电路。通用处理器可为微处理器,但作为替代,所述处理器可为任何常规的处理器、控制器、微控制器或状态机。处理器也可实施为计算装置的组合,例如DSP和微处理器的组合、多个微处理器的组合、一个或一个以上微处理器结合DSP核心的组合,或任何其它此类配置。
结合本文所揭示的实施例而描述的方法或算法的步骤可直接包含在硬件中、由处理器执行的软件中,或两者的组合中。应了解,这些实施例可用作软件程序或用以支持软件程序,这些软件程序在某一形式的处理器或处理核心(例如计算机的CPU)上执行,或另外实施或实现于机器或计算机可读媒体上或内。机器可读媒体包括用于存储或传输具有可由机器(例如,计算机)读取的形式的信息的任何机构。举例来说,机器可读媒体包括RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移除盘、CD-ROM,或此项技术中已知的任何其它形式的存储媒体。将示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息或将信息写入到存储媒体。作为替代,可将存储媒体整合到处理器。处理器和存储媒体可驻留于ASIC中。ASIC可驻留于使用者终端中。或者,处理器和存储媒体可作为离散组件驻留于使用者终端中。
提供所揭示实施例的先前描述以使得任何所属领域的技术人员能够制造或使用本发明。所属领域的技术人员将易于了解对这些实施例的各种修改,且在不脱离本发明的精神或范围的情况下本文中所界定的一般原理可应用于其它实施例。因此,并不希望将本发明限于本文中所示的实施例,而是将赋予其与本文中所揭示的原理和新颖特征一致的最广泛范围。
Claims (39)
1.一种计算机可读媒体,其包含:
所述媒体内所含有的多个可执行指令中的一指令,所述指令当在处理系统中执行时促使所述处理系统选择性地组合来自寄存器堆结构的第一寄存器单元和第二寄存器单元以形成所得寄存器单元,所述第一寄存器单元和所述第二寄存器单元非相邻地位于所述寄存器堆结构内。
2.根据权利要求1所述的计算机可读媒体,其中驻留于所述第一寄存器单元内的数据和驻留于所述第二寄存器单元内的数据被存储在所述所得寄存器单元的对应部分中。
3.根据权利要求2所述的计算机可读媒体,其中所述第一寄存器单元和所述第二寄存器单元为32位宽寄存器单元,且所述所得寄存器单元为64位宽寄存器单元。
4.根据权利要求1所述的计算机可读媒体,其中所述第一寄存器单元的第一半字单元和所述第二寄存器单元的第二半字单元被存储在所述所得寄存器单元的对应部分中。
5.根据权利要求4所述的计算机可读媒体,其中所述第一半字单元和所述第二半字单元为16位宽单元,且所述所得寄存器单元为32位宽寄存器单元。
6.一种方法,其包含:
接收可执行指令;以及
执行所述指令以选择性地组合来自寄存器堆结构的第一寄存器单元和第二寄存器单元以形成所得寄存器单元,所述第一寄存器单元和所述第二寄存器单元非相邻地位于所述寄存器堆结构内。
7.根据权利要求6所述的方法,其中所述执行进一步包含:
将驻留于所述第一寄存器单元内的数据和驻留于所述第二寄存器单元内的数据存储在所述所得寄存器单元内的具有相同宽度的对应部分中。
8.根据权利要求7所述的方法,其中所述第一寄存器单元和所述第二寄存器单元为32位宽寄存器单元,且所述所得寄存器单元为64位宽寄存器单元。
9.根据权利要求6所述的方法,其中所述执行进一步包含:
将所述第一寄存器单元的第一半字单元和所述第二寄存器单元的第二半字单元存储在所述所得寄存器单元内的具有相同宽度的对应部分中。
10.根据权利要求9所述的方法,其中所述第一半字单元和所述第二半字单元为16位宽单元,且所述所得寄存器单元为32位宽寄存器单元。
11.根据权利要求6所述的方法,其中所述执行进一步包含:
从存储器检索与所述第一寄存器单元和所述第二寄存器单元相关联的数据;
将所述数据存储在所述各自第一和第二寄存器单元内;以及
将所述数据选择性地组合到所述所得寄存器单元中。
12.一种方法,其包含:
从处理单元内的寄存器堆结构检索第一寄存器单元和第二寄存器单元,所述第一寄存器单元和所述第二寄存器单元非相邻地位于所述寄存器堆结构内;
在执行单一指令期间选择性地组合所述第一寄存器单元和所述第二寄存器单元以形成所得寄存器单元;以及
将所述所得寄存器单元存储在所述寄存器堆结构内以用于进一步处理。
13.根据权利要求12所述的方法,其中所述组合进一步包含:
接收用以组合所述第一寄存器单元和所述第二寄存器单元的所述指令;以及
在所述处理单元内执行所述指令。
14.根据权利要求12所述的方法,其中所述组合进一步包含:
将驻留于所述第一寄存器单元内的数据和驻留于所述第二寄存器单元内的数据存储在所述所得寄存器单元内的具有相同宽度的对应部分中。
15.根据权利要求14所述的方法,其中所述第一寄存器单元和所述第二寄存器单元为32位宽寄存器单元,且所述所得寄存器单元为64位宽寄存器单元。
16.根据权利要求12所述的方法,其中所述组合进一步包含:
将所述第一寄存器单元的第一半字单元和所述第二寄存器单元的第二半字单元存储在所述所得寄存器单元内的具有相同宽度的对应部分中。
17.根据权利要求16所述的方法,其中所述第一半字单元和所述第二半字单元为16位宽单元,且所述所得寄存器单元为32位宽寄存器单元。
18.根据权利要求12所述的方法,其进一步包含:
从存储器检索与所述第一寄存器单元和所述第二寄存器单元相关联的数据;
将所述数据存储在所述各自第一和第二寄存器单元内;以及
将所述数据选择性地组合到所述所得寄存器单元中。
19.一种含有可执行指令的计算机可读媒体,所述可执行指令当在处理系统中执行时促使所述处理系统执行包含以下步骤的方法:
从处理单元内的寄存器堆结构检索第一寄存器单元和第二寄存器单元,所述第一寄存器单元和所述第二寄存器单元非相邻地位于所述寄存器堆结构内;
在执行单一指令期间选择性地组合所述第一寄存器单元和所述第二寄存器单元以形成所得寄存器单元;以及
将所述所得寄存器单元存储在所述寄存器堆结构内以用于进一步处理。
20.根据权利要求19所述的计算机可读媒体,其中所述组合进一步包含:
接收用以组合所述第一寄存器单元和所述第二寄存器单元的所述指令;以及
在所述处理单元内执行所述指令。
21.根据权利要求19所述的计算机可读媒体,其中所述组合进一步包含:
将驻留于所述第一寄存器单元内的数据和驻留于所述第二寄存器单元内的数据存储在所述所得寄存器单元内的具有相同宽度的对应部分中。
22.根据权利要求21所述的计算机可读媒体,其中所述第一寄存器单元和所述第二寄存器单元为32位宽寄存器单元,且所述所得寄存器单元为64位宽寄存器单元。
23.根据权利要求19所述的计算机可读媒体,其中所述组合进一步包含:
将所述第一寄存器单元的第一半字单元和所述第二寄存器单元的第二半字单元存储在所述所得寄存器单元内的具有相同宽度的对应部分中。
24.根据权利要求23所述的计算机可读媒体,其中所述第一半字单元和所述第二半字单元为16位宽单元,且所述所得寄存器单元为32位宽寄存器单元。
25.根据权利要求19所述的计算机可读媒体,其中所述方法进一步包含:
从存储器检索与所述第一寄存器单元和所述第二寄存器单元相关联的数据;
将所述数据存储在所述各自第一和第二寄存器单元内;以及
将所述数据选择性地组合到所述所得寄存器单元中。
26.一种集成电路,其包含:
存储器,其用以存储包含一个或一个以上指令的包;以及
处理器,其耦合到所述存储器,所述处理器进一步包含处理单元和耦合到所述处理单元的寄存器堆结构;
所述处理单元用以:从所述寄存器堆结构检索第一寄存器单元和第二寄存器单元,所述第一寄存器单元和所述第二寄存器单元非相邻地位于所述寄存器堆结构内;在执行单一指令期间选择性地组合所述第一寄存器单元和所述第二寄存器单元以形成所得寄存器单元;以及将所述所得寄存器单元存储在所述寄存器堆结构内以用于进一步处理。
27.根据权利要求26所述的电路,其中所述处理单元进一步从所述存储器接收用以组合所述第一寄存器单元和所述第二寄存器单元的所述指令且执行所述指令。
28.根据权利要求26所述的电路,其中所述处理单元进一步将驻留于所述第一寄存器单元内的数据和驻留于所述第二寄存器单元内的数据存储在所述所得寄存器单元内的具有相同宽度的对应部分中。
29.根据权利要求28所述的电路,其中所述第一寄存器单元和所述第二寄存器单元为32位宽寄存器单元,且所述所得寄存器单元为64位宽寄存器单元。
30.根据权利要求26所述的电路,其中所述处理单元进一步将所述第一寄存器单元的第一半字单元和所述第二寄存器单元的第二半字单元存储在所述所得寄存器单元内的具有相同宽度的对应部分中。
31.根据权利要求30所述的电路,其中所述第一半字单元和所述第二半字单元为16位宽单元,且所述所得寄存器单元为32位宽寄存器单元。
32.根据权利要求26所述的电路,其中所述存储器进一步存储与所述第一寄存器单元和所述第二寄存器单元相关联的数据,所述寄存器堆结构进一步检索所述数据且将所述数据存储在所述各自第一和第二寄存器单元内,且所述处理单元进一步将所述数据选择性地组合到所述所得寄存器单元中。
33.一种设备,其包含:
用于从处理单元内的寄存器堆结构检索第一寄存器单元和第二寄存器单元的装置,所述第一寄存器单元和所述第二寄存器单元非相邻地位于所述寄存器堆结构内;
用于在执行单一指令期间选择性地组合所述第一寄存器单元和所述第二寄存器单元以形成所得寄存器单元的装置;以及
用于将所述所得寄存器单元存储在所述寄存器堆结构内以用于进一步处理的装置。
34.根据权利要求33所述的设备,其进一步包含:
用于接收用以组合所述第一寄存器单元和所述第二寄存器单元的所述指令的装置;以及
用于在所述处理单元内执行所述指令的装置。
35.根据权利要求33所述的设备,其进一步包含:
用于将驻留于所述第一寄存器单元内的数据和驻留于所述第二寄存器单元内的数据存储在所述所得寄存器单元内的具有相同宽度的对应部分中的装置。
36.根据权利要求35所述的设备,其中所述第一寄存器单元和所述第二寄存器单元为32位宽寄存器单元,且所述所得寄存器单元为64位宽寄存器单元。
37.根据权利要求33所述的设备,其进一步包含:
用于将所述第一寄存器单元的第一半字单元和所述第二寄存器单元的第二半字单元存储在所述所得寄存器单元内的具有相同宽度的对应部分中的装置。
38.根据权利要求37所述的设备,其中所述第一半字单元和所述第二半字单元为16位宽单元,且所述所得寄存器单元为32位宽寄存器单元。
39.根据权利要求33所述的设备,其进一步包含:
用于从存储器检索与所述第一寄存器单元和所述第二寄存器单元相关联的数据的装置;
用于将所述数据存储在所述各自第一和第二寄存器单元内的装置;以及
用于将所述数据选择性地组合到所述所得寄存器单元中的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/498,627 US8417922B2 (en) | 2006-08-02 | 2006-08-02 | Method and system to combine multiple register units within a microprocessor |
US11/498,627 | 2006-08-02 | ||
PCT/US2007/074820 WO2008016902A1 (en) | 2006-08-02 | 2007-07-31 | Method and system to combine multiple register units within a microprocessor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101495959A true CN101495959A (zh) | 2009-07-29 |
CN101495959B CN101495959B (zh) | 2012-04-25 |
Family
ID=38745271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800282684A Active CN101495959B (zh) | 2006-08-02 | 2007-07-31 | 组合微处理器内的多个寄存器单元的方法和设备 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8417922B2 (zh) |
EP (1) | EP2069913A1 (zh) |
JP (5) | JP2009545823A (zh) |
KR (1) | KR101048234B1 (zh) |
CN (1) | CN101495959B (zh) |
TW (1) | TW200825906A (zh) |
WO (1) | WO2008016902A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102457268A (zh) * | 2010-10-15 | 2012-05-16 | 北京德威特电力系统自动化有限公司 | 32位捕获寄存器的实现方法 |
CN106055308A (zh) * | 2015-04-04 | 2016-10-26 | 德州仪器公司 | 用于低能加速器处理器架构的设备 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8898436B2 (en) | 2009-04-20 | 2014-11-25 | Oracle America, Inc. | Method and structure for solving the evil-twin problem |
KR101801920B1 (ko) | 2010-12-17 | 2017-12-28 | 삼성전자주식회사 | 동적 클러스터링이 가능한 레지스터 파일 및 동적 클러스터링이 가능한 레지스터 파일을 이용한 재구성 가능 컴퓨팅 장치 |
WO2013100927A1 (en) * | 2011-12-28 | 2013-07-04 | Intel Corporation | Reducing the number of io requests to memory when executing a program that iteratively processes contiguous data |
US9323529B2 (en) | 2012-07-18 | 2016-04-26 | International Business Machines Corporation | Reducing register read ports for register pairs |
US9323532B2 (en) | 2012-07-18 | 2016-04-26 | International Business Machines Corporation | Predicting register pairs |
US9298459B2 (en) * | 2012-07-18 | 2016-03-29 | International Business Machines Corporation | Managing register pairing |
US9026791B2 (en) * | 2013-03-11 | 2015-05-05 | Qualcomm Incorporated | Linear feedback shift register (LFSR) |
US10228941B2 (en) * | 2013-06-28 | 2019-03-12 | Intel Corporation | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register |
US9582419B2 (en) * | 2013-10-25 | 2017-02-28 | Arm Limited | Data processing device and method for interleaved storage of data elements |
US9886276B2 (en) * | 2014-10-10 | 2018-02-06 | Arm Limited | System register access |
US10162634B2 (en) * | 2016-05-20 | 2018-12-25 | International Business Machines Corporation | Extendable conditional permute SIMD instructions |
CN107621949A (zh) * | 2016-07-15 | 2018-01-23 | 龙芯中科技术有限公司 | 内存拷贝方法及装置 |
US10747531B1 (en) * | 2018-04-03 | 2020-08-18 | Xilinx, Inc. | Core for a data processing engine in an integrated circuit |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0779577B1 (en) * | 1993-10-18 | 2002-05-22 | VIA-Cyrix, Inc. | Micoprocessor pipe control and register translation |
US5564056A (en) | 1994-03-01 | 1996-10-08 | Intel Corporation | Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming |
JPH07262010A (ja) * | 1994-03-25 | 1995-10-13 | Hitachi Ltd | 演算処理装置および演算処理方法 |
EP0743591B1 (en) | 1995-05-16 | 2002-01-02 | Océ-Technologies B.V. | Printing system comprising a communication control apparatus |
GB9509987D0 (en) | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Manipulation of data |
JP3526976B2 (ja) * | 1995-08-03 | 2004-05-17 | 株式会社日立製作所 | プロセッサおよびデータ処理装置 |
WO1997009679A1 (en) | 1995-09-01 | 1997-03-13 | Philips Electronics North America Corporation | Method and apparatus for custom processor operations |
US5854939A (en) * | 1996-11-07 | 1998-12-29 | Atmel Corporation | Eight-bit microcontroller having a risc architecture |
US6052522A (en) * | 1997-10-30 | 2000-04-18 | Infineon Technologies North America Corporation | Method and apparatus for extracting data stored in concatenated registers |
US6041404A (en) * | 1998-03-31 | 2000-03-21 | Intel Corporation | Dual function system and method for shuffling packed data elements |
US6247112B1 (en) * | 1998-12-30 | 2001-06-12 | Sony Corporation | Bit manipulation instructions |
US6463525B1 (en) * | 1999-08-16 | 2002-10-08 | Sun Microsystems, Inc. | Merging single precision floating point operands |
US6631460B1 (en) | 2000-04-27 | 2003-10-07 | Institute For The Development Of Emerging Architectures, L.L.C. | Advanced load address table entry invalidation based on register address wraparound |
AU2001259555A1 (en) | 2000-05-05 | 2001-11-20 | Ruby B. Lee | A method and system for performing subword permutation instructions for use in two-dimensional multimedia processing |
US7120781B1 (en) * | 2000-06-30 | 2006-10-10 | Intel Corporation | General purpose register file architecture for aligned simd |
JP2002132499A (ja) * | 2000-10-27 | 2002-05-10 | Hitachi Ltd | データ処理装置及び記録媒体 |
JP3779540B2 (ja) * | 2000-11-08 | 2006-05-31 | 株式会社ルネサステクノロジ | 複数レジスタ指定が可能なsimd演算方式 |
US7228403B2 (en) * | 2000-12-23 | 2007-06-05 | International Business Machines Corporation | Method for handling 32 bit results for an out-of-order processor with a 64 bit architecture |
JP3776732B2 (ja) * | 2001-02-02 | 2006-05-17 | 株式会社東芝 | プロセッサ装置 |
WO2004015563A1 (en) | 2002-08-09 | 2004-02-19 | Intel Corporation | Multimedia coprocessor control mechanism including alignment or broadcast instructions |
US7103756B2 (en) | 2002-09-30 | 2006-09-05 | Hewlett-Packard Development Company, L.P. | Data processor with individually writable register subword locations |
GB2411976B (en) * | 2003-12-09 | 2006-07-19 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2409066B (en) | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2409064B (en) * | 2003-12-09 | 2006-09-13 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing in parallel a data processing operation on data elements |
JP4202244B2 (ja) | 2003-12-22 | 2008-12-24 | Necエレクトロニクス株式会社 | Vliw型dsp,及びその動作方法 |
US7177876B2 (en) * | 2004-03-04 | 2007-02-13 | Texas Instruments Incorporated | Speculative load of look up table entries based upon coarse index calculation in parallel with fine index calculation |
US7376813B2 (en) * | 2004-03-04 | 2008-05-20 | Texas Instruments Incorporated | Register move instruction for section select of source operand |
US7237096B1 (en) * | 2004-04-05 | 2007-06-26 | Sun Microsystems, Inc. | Storing results of producer instructions to facilitate consumer instruction dependency tracking |
US8621444B2 (en) | 2004-06-01 | 2013-12-31 | The Regents Of The University Of California | Retargetable instruction set simulators |
US8127117B2 (en) | 2006-05-10 | 2012-02-28 | Qualcomm Incorporated | Method and system to combine corresponding half word units from multiple register units within a microprocessor |
US8445994B2 (en) | 2009-05-07 | 2013-05-21 | Qualcomm Incorporated | Discontinuous thin semiconductor wafer surface features |
US20100314725A1 (en) | 2009-06-12 | 2010-12-16 | Qualcomm Incorporated | Stress Balance Layer on Semiconductor Wafer Backside |
US8076762B2 (en) | 2009-08-13 | 2011-12-13 | Qualcomm Incorporated | Variable feature interface that induces a balanced stress to prevent thin die warpage |
-
2006
- 2006-08-02 US US11/498,627 patent/US8417922B2/en active Active
-
2007
- 2007-07-31 WO PCT/US2007/074820 patent/WO2008016902A1/en active Application Filing
- 2007-07-31 JP JP2009523009A patent/JP2009545823A/ja not_active Withdrawn
- 2007-07-31 CN CN2007800282684A patent/CN101495959B/zh active Active
- 2007-07-31 EP EP07840609A patent/EP2069913A1/en not_active Withdrawn
- 2007-07-31 KR KR1020097004441A patent/KR101048234B1/ko active IP Right Grant
- 2007-08-02 TW TW096128461A patent/TW200825906A/zh unknown
-
2013
- 2013-05-15 JP JP2013103471A patent/JP2013218709A/ja not_active Withdrawn
- 2013-06-14 JP JP2013125449A patent/JP5680709B2/ja active Active
-
2015
- 2015-05-27 JP JP2015107759A patent/JP2015201216A/ja not_active Withdrawn
-
2017
- 2017-03-01 JP JP2017038550A patent/JP2017138993A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102457268A (zh) * | 2010-10-15 | 2012-05-16 | 北京德威特电力系统自动化有限公司 | 32位捕获寄存器的实现方法 |
CN102457268B (zh) * | 2010-10-15 | 2014-10-22 | 北京德威特继保自动化科技股份有限公司 | 32位捕获寄存器的实现方法 |
CN106055308A (zh) * | 2015-04-04 | 2016-10-26 | 德州仪器公司 | 用于低能加速器处理器架构的设备 |
Also Published As
Publication number | Publication date |
---|---|
US8417922B2 (en) | 2013-04-09 |
CN101495959B (zh) | 2012-04-25 |
KR101048234B1 (ko) | 2011-07-08 |
JP2013218709A (ja) | 2013-10-24 |
US20080184007A1 (en) | 2008-07-31 |
JP2009545823A (ja) | 2009-12-24 |
JP2015201216A (ja) | 2015-11-12 |
KR20090042294A (ko) | 2009-04-29 |
JP2017138993A (ja) | 2017-08-10 |
EP2069913A1 (en) | 2009-06-17 |
JP5680709B2 (ja) | 2015-03-04 |
WO2008016902A1 (en) | 2008-02-07 |
TW200825906A (en) | 2008-06-16 |
JP2013242879A (ja) | 2013-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101495959B (zh) | 组合微处理器内的多个寄存器单元的方法和设备 | |
US7937559B1 (en) | System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes | |
US9575753B2 (en) | SIMD compare instruction using permute logic for distributed register files | |
US11341085B2 (en) | Low energy accelerator processor architecture with short parallel instruction word | |
KR101482540B1 (ko) | 중첩된 피연산자들을 갖는 simd 내적 연산들 | |
CN113050990A (zh) | 用于矩阵操作加速器的指令的装置、方法和系统 | |
US20090313442A1 (en) | Circular buffer support in a single instruction multiple data (simd) data processsor | |
ES2934513T3 (es) | Sistemas y métodos para omitir operaciones matriciales intrascendentes | |
US20140331031A1 (en) | Reconfigurable processor having constant storage register | |
CN101802779A (zh) | 具有可重新组构的浮点单元的处理器 | |
WO2003098379A2 (en) | Method and apparatus for adding advanced instructions in an extensible processor architecture | |
WO2012106716A1 (en) | Processor with a hybrid instruction queue with instruction elaboration between sections | |
CN101438236A (zh) | 用以在微处理器内组合来自多个寄存器单元的对应半字单元的方法及系统 | |
US5119324A (en) | Apparatus and method for performing arithmetic functions in a computer system | |
US5053986A (en) | Circuit for preservation of sign information in operations for comparison of the absolute value of operands | |
CN114691217A (zh) | 用于8位浮点矩阵点积指令的装置、方法和系统 | |
US7111155B1 (en) | Digital signal processor computation core with input operand selection from operand bus for dual operations | |
EP2267596B1 (en) | Processor core for processing instructions of different formats | |
EP3716050B1 (en) | Using fuzzy-jbit location of floating-point multiply-accumulate results | |
US7107302B1 (en) | Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units | |
KR100267092B1 (ko) | 멀티미디어신호프로세서의단일명령다중데이터처리 | |
US6820189B1 (en) | Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation | |
US6859872B1 (en) | Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation | |
US6275925B1 (en) | Program execution method and program execution device | |
US6944745B2 (en) | Exception handling for single instructions with multiple data |
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 |