CN104981771A - 基于标量寄存器数据值的向量寄存器寻址和功能 - Google Patents

基于标量寄存器数据值的向量寄存器寻址和功能 Download PDF

Info

Publication number
CN104981771A
CN104981771A CN201480008139.9A CN201480008139A CN104981771A CN 104981771 A CN104981771 A CN 104981771A CN 201480008139 A CN201480008139 A CN 201480008139A CN 104981771 A CN104981771 A CN 104981771A
Authority
CN
China
Prior art keywords
register
processor
vector
vrf
aligned
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
Application number
CN201480008139.9A
Other languages
English (en)
Other versions
CN104981771B (zh
Inventor
阿贾伊·阿南塔·英格尔
马克·M·霍夫曼
乔斯·弗里德曼
卢西恩·科德雷斯库
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 CN104981771A publication Critical patent/CN104981771A/zh
Application granted granted Critical
Publication of CN104981771B publication Critical patent/CN104981771B/zh
Active 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/30098Register arrangements
    • G06F9/30105Register structure
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • 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/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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

Abstract

提供一种用于执行向量对准指令的技术。在第一处理器中的标量寄存器堆经配置以与第二处理器共享一或多个寄存器值,所述一或多个寄存器值根据在向量对准指令中指定的Rt地址从所述标量寄存器堆进行存取,其中起始位置从所述经共享寄存器值中的一者确定。在所述第二处理器中的对准电路经配置以根据所述向量对准指令使在向量寄存器堆VRF的开始Vu寄存器内的所述起始位置和所述VRF的最末Vu寄存器的结束位置之间识别的数据对准。存储电路经配置以从所述对准电路选择所述经对准数据,且根据通过所述向量对准指令指定的对准存储地址将所述经对准数据存储在所述向量寄存器堆中。

Description

基于标量寄存器数据值的向量寄存器寻址和功能
优先权申请
本申请案主张2013年2月26日提交的名称为“基于标量寄存器数据值的向量寄存器寻址和功能(VECTOR REGISTER ADDRESSING AND FUNCTIONS BASED ON ASCALAR REGISTER DATA VALUE)”的第13/777,297号美国专利申请案的优先权,所述申请案以全文引用的方式并入本文中。
技术领域
本发明大体上涉及数据对准的领域,且更具体来说涉及有效地在未对准存储器地址处存取双倍宽度数据值。
背景技术
许多便携式产品(例如蜂窝电话、膝上型计算机、个人数据助理(PDA)和其类似者)利用执行程序(例如通信和多媒体程序)的处理系统。用于此类产品的处理系统可以包含多个处理器、多线程处理器、包含用于存储指令和数据的多层高速缓冲存储器的复合存储器系统、控制器、通信接口等外围装置以及配置(例如)在单芯片上的固定功能逻辑块。
将由处理器接收且操作的数据是根据所需用以表示信息的测量精度的水平以二进制形式量化的信息的值。数据的标准类或数据类型根据二进制位的数据进行分组,例如表示为8位字节、16位半字、32位字、64位双字、128位四字的整数值,以及表示为32位单精度值、64位双精度值的浮点值等。许多处理器支持多个数据类型且需要有效的存取用于处理的数据的方式。通常,每一数据指派有表示在处理器的存储器系统中的位置的地址。在许多存储器系统中,根据标准精度位宽度来组织存储器,例如32位允许将四个字节、两个半字或一个字存储在每一32位位置中。在其它处理系统中,例如与经打包数据集的单指令多数据(SIMD)处理器和向量处理器相关联的那些处理系统,例如SIMD向量处理器,存储器系统可以基于标准精度值的群组围绕较大位宽度进行组织,例如256位、512位等的宽度。例如,在具有512位宽度存储位置的存储器系统中,每一位置可以存储六十四个字节或三十二个半字或十六个字或八个双字或四个四字。此类大宽度存储位置可以位于SIMD向量处理器的寄存器堆中。在此类系统中,对可寻址存储位置的数据对准对于使用标准处理器存储器存取指令来进行有效存取是非常重要的。然而,此类数据对准未必易于实现。例如,数据结构可能不是存储位置的宽度的倍数。并且,不保证任何大小的数据结构都可以恰当对准地起始或结束。因此,有效地存取未对准数据是困难的问题。
发明内容
在其若干方面当中,本发明认识到,提供用于对准数据的更有效的方法和设备是有利的。为此,本发明的实施例提出用于执行向量对准指令的方法。从在第一处理器和第二处理器之间共享的标量寄存器堆中的寄存器存取在第一处理器上的起始位置。在第二处理器上,使在向量寄存器堆(VRF)的寄存器内的起始位置处开始的数据值的集合对准以将其在VRF的目标寄存器处存储为经对准数据值的集合。
另一实施例提出用于执行向量对准和操作指令的方法。从在第一处理器和第二处理器之间共享的标量寄存器堆中的寄存器存取在第一处理器上产生的起始位置。在第二处理器上,使在向量寄存器堆(VRF)的寄存器内的起始位置处开始的数据值的集合对准以产生经对准数据值的集合。根据向量对准和操作指令对经对准数据值进行操作以产生存储在VRF的目标寄存器处的结果。
另一实施例提出用于执行向量掩码对准指令的方法。从在第一处理器和第二处理器之间共享的标量寄存器堆中的第一寄存器和第二寄存器存取在第一处理器上产生的掩码和起始位置。应用掩码以根据在所述掩码中的启用位来识别在第二处理器上的向量寄存器堆(VRF)的寄存器的集合。在第二处理器上,使在向量寄存器堆(VRF)的寄存器的经识别集合内的起始位置处开始的数据值的集合对准以将其在VRF的寄存器的目标集合处存储为经对准数据值的集合。
另一实施例提出用于执行向量对准指令的设备。与第一处理器相关联的标量寄存器堆经配置以与第二处理器共享一或多个寄存器值,所述一或多个寄存器值根据在向量对准指令中指定的Rt地址从标量寄存器堆进行存取。在第二处理器中的对准电路经配置以根据向量对准指令和从一或多个寄存器值确定的对准起始位置来使在向量寄存器堆(VRF)的多个寄存器内识别的数据对准。存储电路经配置以从对准电路选择经对准数据,且根据通过向量对准指令指定的对准存储地址将经对准数据存储在向量寄存器堆中。
另一实施例提出一种经编码有计算机可读程序数据和代码的计算机可读非暂时性媒体。从在第一处理器和第二处理器之间共享的标量寄存器堆中的寄存器存取在第一处理器上的起始位置。在第二处理器上,使在向量寄存器堆(VRF)的寄存器内的起始位置处开始的数据值的集合对准以将其在VRF中的目标寄存器处存储为经对准数据值的集合。
另一实施例提出用于执行向量对准指令的设备。利用装置来与第二处理器共享从第一处理器中的标量寄存器堆存取的一或多个寄存器值,所述一或多个寄存器值根据在向量对准指令中指定的Rt地址进行存取,其中起始位置从经共享寄存器值中的一者确定。利用装置来使第二处理器中的数据对准,所述数据根据向量对准指令在向量寄存器堆(VRF)的开始Vu寄存器内的起始位置和VRF的最末Vu寄存器的结束位置之间被识别。利用装置来从对准电路选择经对准数据,且根据通过向量对准指令指定的对准存储地址将经对准数据存储在向量寄存器堆中。
应理解,通过以下具体实施方式,所属领域的技术人员将变得容易明白本发明的其它实施例,其中本发明的各种实施例借助于图示示出和描述。如将意识到,在都不脱离本发明的精神和范围的情况下,本发明能够具有其它和不同实施例且其若干细节能够在各种其它方面进行修改,因此,图式和具体实施方式应被视为在本质上是说明性而非限制性的。
附图说明
在附图中作为举例而非作为限制图示本发明的各种方面,其中:
图1图示第一对准功能的实施例;
图2A和2B图示第二对准功能的实施例;
图3A图示第一对准子系统的实施例;
图3B图示第二对准子系统的实施例;
图4图示用于数据对准的过程的实施例;以及
图5图示具有中央处理单元(CPU)和协处理器(CoP)的便携式装置,所述协处理器例如向量协处理器,其经配置以提供向量对准功能且满足便携式装置的实时要求。
具体实施方式
下文结合附图阐述的具体实施方式意图作为对本发明的各种示例性实施例的描述,且并不意图表示其中可以实践本发明的仅有实施例。具体实施方式包含出于提供对本发明的透彻理解的目的的具体细节。然而,所属领域的技术人员将明白,可以在没有这些具体细节的情况下实践本发明。在一些情况下,以框图形式示出众所周知的结构和组件以便避免混淆本发明的概念。
为了解决数据对准问题和标量起始地址值的有效产生,在向量处理器的指令集架构(ISA)中产生对准类型的指令。存储在宽存储位置(例如在向量处理器的向量寄存器堆中的512位或1024位向量寄存器)中的经打包数据元素的起始地址可以例如在向量寄存器内的任何字节位置处。与在处理较大经打包数据元素的向量处理器上产生单一起始地址值相比,在通用(GP)处理器上大体上更有效地产生存储在存储器或寄存器堆中的此数据结构的起始地址。在具有GP处理器和向量协处理器的系统中,此起始地址值的共享可能是耗时的且影响系统的性能。通过组织包含如本文中所描述通过经共享数据端口耦合的GP处理器和向量协处理器的处理器复合,起始地址可以在GP处理器上产生且以有效方式共享或传送到向量处理器,所述向量处理器处理数据对准操作而不对系统性能造成影响。尽管对准类型指令主要用于对准目的,但它还可以经扩展以包含不同水平的复杂性的对准加功能类型指令。C位Vd=valign(VuRt)指令和2C位Vdd=valign(VuRT)指令包含于SIMD向量协处理器的指令集架构(ISA)中。
图1图示可以有利地被采用的第一对准功能100的实施例。图1图示1kb字VRFVd=valign(VuRt)指令104的操作,所述指令是需要来自两个处理器的数据的指令,其中Rt字段识别寄存器,所述寄存器的所存储值从在经耦合GP处理器中的寄存器堆获得,且其它字段在协处理器中解释。向量协处理器与B×C位向量寄存器堆(VRF)组织在一起,其中B=32且C位=1024位(1kb)。Vd=valign(VuRt)指令104包括操作码(Opc)105、指令特定字段106、向量寄存器地址源字段Vu 107、向量寄存器地址目标字段Vd 108以及GP处理器起始位置寄存器地址源字段GP Rt 109。Vu 107值可以用作直接地址寄存器值,或替代地,VRF的Vu寄存器可以通过存储在向量单元基址寄存器中的值间接识别。三个C位向量寄存器涉及对准指令的执行。两个源操作数寄存器是Vu 112和Vu+1 114且结果目标寄存器是Vd 122。
当接收Vd=valign(VuRt)指令104且对其进行解码时,从在GP处理器中的寄存器堆存取GP处理器寄存器GP Rt 109。例如,读取GP Rt的位[6:0]且通过数据端口将其传递到向量协处理器。GP Rt[6:0]值在此示例性情形中是十进制值50,其表示用于对准功能的在Vu寄存器112中的字节起始位置“a50”126。字节起始位置“a50”126还可以被称为从字节“a0”127的偏移。在操作中,从字节起始位置“a50”126到字节“a127”128的数据元素选自Vu寄存器112,且从字节“b0”128到Rt[6:0]-1字节“b49”130的数据元素选自Vu+1寄存器114。执行Vd=valign(VuRt)指令104使得字节“a50”126到“a127”128移动到在Vd寄存器122中在“0”位置131处开始到字节“77”位置132的字节。并且,对准指令的执行使得字节“b0”129到Rt[6:0]-1字节“b49”130移动到在Vd寄存器122中在“78”位置133处开始到字节“127”位置134的字节。这还可以被视为在来自Vu寄存器112的Rt[6:0]位置处的字节变成Vd寄存器122的最低有效字节,且在来自Vu+1寄存器114的Rt[6:0]-1位置处的字节变成Vd寄存器122的最高有效字节。
图2A和2B对应地图示可以有利地被采用的第二对准功能200和201的实施例。图2A示出在Rt[7]等跨越位是零且Rt[6:0]等于十进制50时的示例性对准操作219。图2A图示2kb字VRF Vdd=valign(VuRT)指令203的操作,所述指令是需要来自两个处理器的数据的指令,其中GP Rt值从在经耦合GP处理器中的GP Rt地址(dataRt)334处的寄存器堆获得,且其它字段指令203在协处理器中解释。向量协处理器与B×C位向量寄存器堆(VRF)组织在一起,其中B=32且C位=1024位(1kb)。Vd=valign(VuRt)指令203包括操作码(Opc)205、指令特定字段206、向量寄存器地址源字段Vu 207、向量寄存器地址目标字段Vdd 208以及GP处理器起始位置寄存器地址源字段GP Rt 209。Vu 207值可以用作直接地址寄存器值,或替代地,VRF的寄存器可以通过存储在向量单元(Vu)基址寄存器中的值间接识别。六个C位向量寄存器涉及第二对准指令的执行。四个源操作数寄存器是Vu 212、Vu+1 214、Vu+2 216以及Vu+3 218,且两个结果目标寄存器是用于所述结果的较低128位的Vdd.L 222和用于所述结果的较高128位的Vdd.H 224。
跨越位是从在GP Rt地址(dataRt)334处的GP寄存器堆读取的Rt值的位七,或在替代实施例中,跨越位是在图2A中的GP Rt字段209和图2B的210的最高有效位。跨越位指示可以跨越经打包数据元素的双寄存器集合的起始地址,所述数据元素在此示例性情况中是256字节元素。与图1中图示出的Vd=valign(VuRT)指令的对准操作相比,Vdd=valign(VuRT)指令允许双对准。示例性Vdd对准功能200依赖于跨越位从四个寄存器Vu 212、Vu+1 214、Vu+2 216以及Vu+3 218的群组选择寄存器的子集。对于图2A的示例性Vdd对准操作220,跨越位是零且经正确选定的源寄存器是Vu 212、Vu+1 214以及Vu+2 216。
对Rt[7]=0等跨越位执行Vdd=valign(VuRT)指令203,使得来自Vu寄存器212的从偏移Rt[6:0]元素a50到字节127元素a127的字节和来自Vu+1寄存器214的从字节0元素a128到偏移Rt[6:0]-1元素a177的字节被选定且随后被移动,使得在偏移Rt[6:0]元素a50处的Vu字节变成Vdd.L寄存器222的最低有效字节,且在偏移Rt[6:0]-1元素a177处的Vu+1字节变成Vdd.L寄存器222的最高有效字节。并且,对准指令的执行使得来自Vu+1寄存器214的从偏移Rt[6:0]元素a178到字节127元素a255的字节和来自Vu+2寄存器216的从字节0元素b0到偏移Rt[6:0]-1元素b49的字节被选定且随后被移动,使得在偏移Rt[6:0]元素a178处的Vu+1字节变成Vdd.H寄存器224的最低有效字节,且在偏移Rt[6:0]-1元素b49处的Vu+2字节变成Vdd.H寄存器224的最高有效字节。
图2B还示出在Rt[7]等跨越位是一且Rt[6:0]等于十进制254时的示例性对准功能201。示例性Vdd对准功能201依赖于跨越位从四个寄存器Vu 212、Vu+1 214、Vu+2 216以及Vu+3 218的群组选择寄存器的子集。对于示例性Vdd对准操作220,跨越位是一且将选定的源寄存器的正确集合是Vu+1 214、Vu+2 216以及Vu+3 218。因此,跨越位允许在不使用用于起始地址管理和源寄存器选择的另外的程序指令的情况下选择寄存器的适当的集合。
对Rt[7]=1执行Vdd=valign(VuRT)指令204使得来自Vu+1寄存器214的从偏移Rt[6:0]226到字节127 227的字节和来自Vu+2寄存器216的从字节0 228到在偏移(Rt[6:0]-1)=253 229处的字节的字节被选定且随后被移动,使得在偏移Rt[6:0]226处的Vu+1字节变成Vdd.L寄存器222的最低有效字节230且在偏移Rt[6:0]-1 229处的Vu+2字节变成Vdd.L寄存器222的最高有效字节231。并且,对准指令的执行使得来自Vu+2寄存器216的从偏移Rt[6:0]232到字节127 233的字节和来自Vu+3寄存器218的从字节0 234到偏移(Rt[6:0]-1)=253 235的字节被选定且随后被移动,使得在偏移Rt[6:0]232处的Vu+2字节变成Vdd.H寄存器224的最低有效字节236,且在偏移Rt[6:0]-1235处的Vu+3字节变成Vdd.H寄存器224的最高有效字节237。与Vd=valign(VuRT)指令104的对准能力相比,Vdd=valign(VuRT)指令204有利地允许待对准的未对准数据的跨越加倍。通过使用Rt[7],在不使软件明确地管理在0到255字节范围中的GP Rt指针的位置的情况下实现双对准跨越。
图3A图示可以有利地被采用的第一对准子系统300的实施例。第一对准子系统300包含存储器层次302(例如1级(L1)高速缓冲存储器、L2高速缓冲存储器、L3高速缓冲存储器、系统存储器)、向量协处理器304以及通用(GP)处理器306。GP处理器306包含GP处理器寄存器堆307和在GP处理器306和协处理器304之间的数据端口305的一部分。协处理器304包含向量处理器指令寄存器308、指令解码单元309、向量寄存器堆(VRF)310、向量功能单元312、操作数提取单元320、结果写入单元330以及在协处理器304和GP处理器306之间的数据端口305的一部分。GP寄存器堆307的内容通过数据端口305在GP处理器306和协处理器304之间共享。向量功能单元312包含对准单元314、向量执行单元315以及存储电路316以选择或者来自对准单元314的结果或者来自向量执行单元315的结果且将选定结果存储在VRF 310中。VRF 310可以配置为B×C位寄存器堆,其中例如B=32项且C位=1024位(1kb)。
在第一对准子系统300在操作中的情况下,图1的对准指令104、图2A的203或图2B的204等对准指令被接收在向量指令寄存器308中。所接收的对准指令在指令解码单元309中进行解码,从而产生多个经解码结果,所述结果包含GP Rt地址字段333、经解码操作码335、Vu寄存器地址338以及Vd或Vdd寄存器地址339。
如关于图2A或图2B所描述的跨越方法使用从在GP Rt地址(dataRt)334处的GP寄存器堆读取的Rt值的位七,或在替代实施例中,所述跨越位是在图2A中的GP Rt字段209和图2B的210的最高有效位。较低位Rt[6:0]指示从存储在操作数提取单元320中的向量单元(VU)基址寄存器中的VRF地址的偏移。从在GP Rt地址(dataRt)334处的GP寄存器堆读取的基于寄存器的跨越位Rt[7]指示基于VU基址寄存器来选择的VRF的跨越。例如,在Rt[7]=0的情况下,将选定Vu、Vu+1、Vu+2寄存器,且在Rt[7]=1的情况下,将选定Vu+1、Vu+2、Vu+3寄存器。基于操作码的跨越位337指示基于VU基址寄存器来选择的VRF的跨越。例如,在跨越位337等于“0”的情况下,将选定Vu、Vu+1、Vu+2寄存器,且在跨越位337等于“1”的情况下,将选定Vu+1、Vu+2、Vu+3寄存器。
GP Rt地址字段333通过数据端口305转发到GP处理器306,其中所述地址字段用于存取产生在GP Rt地址(dataRt)334处选定的数据的GP处理器寄存器堆307。dataRt 334通过数据端口305转发到向量协处理器304以由对准单元314使用。在替代实施方案中,来自操作数提取单元320的VRF选择可以从通过数据端口305共享的dataRt 334值获得。对准单元314可以结合从GP处理器提取的起始位置用选择通过包含跨越位字段的向量对准指令识别的数据元素的多个复用器实施,且将选定数据元素放置在指定对准位置中,如示例性图1、2A或2B中所图示。
基于对准指令的要求,在操作数提取单元320中产生两个或四个源寄存器地址,所述地址供应到向量寄存器堆(VRF)310。所需的源操作数从VRF 310读取。对准功能(例如)用图1的和图2A或图2B的对准指令如所描述对所供应的源操作数进行操作。存储电路316选择经对准结果且将其传递到VRF 310,其中经对准数据写在由结果写入单元330产生的Vd/Vdd地址处。存储电路316基于通过指令解码单元309识别的指令解码信息选择或者来自对准单元314的结果或者来自向量执行单元315的结果。
图3B图示可以有利地被采用的第二对准子系统350的实施例。第二对准子系统350包含存储器层次302(例如1级(L1)高速缓冲存储器、L2高速缓冲存储器、L3高速缓冲存储器、系统存储器)、向量协处理器354以及通用(GP)处理器356。GP处理器356包含GP处理器寄存器堆357和在GP处理器356和协处理器354之间的数据端口355的一部分。协处理器354包含向量处理器指令寄存器308、指令解码单元359、向量寄存器堆(VRF)360、向量功能单元362、操作数提取单元370、结果写入单元380以及在协处理器354和GP处理器356之间的数据端口355的一部分。GP寄存器堆357的内容通过数据端口355在GP处理器356和协处理器354之间共享。向量功能单元362包含掩码对准单元364、向量执行单元365以及存储电路366以选择或者来自掩码对准单元364的结果或者来自向量执行单元365的结果且将选定结果存储在VRF 360中。VRF 360可以配置为B×C位寄存器堆,其中例如B=32项且C位=1024位(1kb)。
在第二实例中,对于32项VRF,将选自GP处理器的寄存器堆357的32位Rt.H 383设定为位掩码,其中每一启用位指示待读取的VRF地址,其中例如位零与VRF地址零相对应,位一与VRF地址一相对应,且继续到位三十一与VRF地址31相对应。并且将选自GP处理器的寄存器堆357的32位Rt.L 384设定为偏移或起始位置。在第二对准子系统350在操作中的情况下,图1的对准指令104、图2A的203或图2B的204等对准指令接收在向量指令寄存器308中。所接收的对准指令在指令解码单元359中进行解码,从而产生多个经解码结果,所述结果包含GP Rt地址字段382、经解码操作码385和386、如关于图2A和2B所描述的Rt[7]等跨越位387、Vu寄存器地址388以及Vd或Vdd寄存器地址389。GP Rt地址字段382转发到GP处理器356,其中所述地址字段用于存取产生dataRt=Rt.L偏移值和dataRt+1=Rt.H掩码值的GP处理器寄存器堆357。Rt.H 383掩码值通过数据端口355转发到操作数提取单元370且Rt.L 384偏移值或起始地址转发到向量功能单元362。基于对准指令和掩码的要求,在向量Vu功能(VuFn)单元372中产生多个源寄存器地址,所述地址供应到向量寄存器堆(VRF)360。例如:
dataRt+1=Rt.H=0100_0000_1000_0000_0000_0000_0000_0001
对于32项VRF 360,在此掩码中的每一启用位指示待读取的从与掩码的最低有效位相对应的寄存器V0开始的VRF地址。在此示例性掩码中,其中启用位是“1”,VRF寄存器在V0、V23处,且读取V30。可以此方式指定多达32个寄存器,且VRF 360可能不具有足够的读取端口来容纳此数目的同时读取操作。因此,作为具有32个读取端口的替代方案,操作数读取操作的顺序集合可以通过在协处理器354中的状态机功能来控制。例如,利用两个读取端口,可以提供16个顺序读取操作以读取多达32个寄存器(如果由32个启用屏蔽位指定的话),且利用四个读取端口,可以提供8个顺序读取操作。所需的源操作数从VRF 360读取。掩码值还可以用于掩蔽在向量执行单元362上的操作。对准功能(例如)用图1的和图2A和图2B的对准指令如所描述对所供应的源操作数进行操作。存储电路366选择经对准结果且将其传递到VRF 360,其中经对准数据写在由结果写入单元380产生的Vd/Vdd地址处。存储电路366基于通过指令解码单元359识别的指令解码信息选择或者来自对准单元364的结果或者来自向量执行单元365的结果。
图3A的向量Vu功能(VuFn)单元322和图3B的VuFn单元372可以实施向量寄存器地址的不同集合,例如,线性增加一的次序,Vu、Vu+1和Vu+2,如在图2A的第二对准功能200和图2B的201的情况下所描述。并且,其它次序可以包含线性增加二的次序,Vu、Vu+2、Vu+4;按素数增加的次序,Vu、Vu+3、Vu+5,例如寄存器Vu、Vu+P1、Vu+P2的第一集合和寄存器Vu+P1、Vu+P2、Vu+P3的第二集合,其中(例如)P1、P2、P3是通过对准指令指定为在可存取VRF寄存器范围内的素数,或是特定对准指令所需的其它地址次序。
对准单元314和364可以对应地耦合到向量执行单元315和365,以允许融合的对准加执行功能操作,所述操作并不需要必须在对准结果可以用于随后的执行功能之前首先存储对准结果且从VRF重新提取它。向量对准和操作指令可以用于指定此类融合的对准和执行功能。操作可以包含选择由向量执行单元315或365提供的向量执行功能。
图3A的数据端口305和GP寄存器堆307或图3B的数据端口355和GP寄存器堆357提供用于与第二处理器(例如协处理器304或354)共享从第一处理器(例如GP处理器306或356)中的标量寄存器堆存取的一或多个寄存器值的示例性装置。并且,所述一或多个寄存器值根据在向量处理器指令寄存器308中提取的向量对准指令104、203或204中指定的Rt地址333或382进行存取,其中起始位置从经共享寄存器值中的一者确定。
操作数提取单元320或370、向量寄存器堆(VRF)310或360以及对准单元314或364提供用于使第二处理器中的数据对准的示例性装置,所述数据根据向量对准指令在向量寄存器堆(VRF)的开始Vu寄存器内的起始位置和VRF的最末Vu寄存器的结束位置之间识别,如例如在图1、2A和2B中所图示。
指令解码单元309或359、存储电路316或366以及VRF 310或360提供用于从对准电路选择经对准数据且根据通过向量对准指令指定的对准存储地址将经对准数据存储在向量寄存器堆中的示例性装置。
图4图示可以有利地被采用的数据对准过程400的实施例。在数据对准过程400中的操作与图1、2A、2B、3A以及3B的元素相关联。在框404处,向量对准指令接收在308等向量处理器指令寄存器中。在框406处,所接收的向量对准指令进行解码,例如在指令解码单元309或359中进行。在框408处,判定向量对准指令是针对如图1中示出的Vd向量结果还是针对如图2A中或图2B中示出的Vdd向量结果。如果解码指示将产生Vd向量结果,那么方法400前进到框410。在框410处,读取向量寄存器堆(VRF)的Vu和Vu+1寄存器以及端口GP Rt寄存器。在框412处,对Rt1地址的dataRt读取用作起始字节,例如图1的“a50”126。在框414处,在Vu和Vu+1寄存器中的数据根据Vd=valign(VuRT)指令104对准,从而产生结果Vd,例如在图1的Vd寄存器122中示出。随后,方法400返回到框404。
返回到框408,其中确定将产生Vdd向量结果,方法400前进到框418。在框418处,确定情况操作。如果跨越位扩展到两个或更多个位,那么可以指定多个寄存器地址。例如,情况零(C0)与具有值0的跨越位相同,情况一(C1)与具有值1的跨越位相同,但可以指定其它情况地址产生类型,例如针对C2代码的加二次序,或针对C3代码的加素数次序等。如果确定C0代码,那么方法400前进到框420。在框420处,读取Vu、Vu+1和Vu+2寄存器和端口GP Rt寄存器。在框422处,针对Rt2地址的dataRt读取用作起始字节。在框424处,在Vu、Vu+1和Vu+2寄存器中的数据根据Vdd=valign(VuRT)指令204对准,从而产生结果Vdd。随后,方法400返回到框404。
返回到框418,其中确定C1代码,方法400前进到框430。在框430处,读取Vu+1、Vu+2和Vu+3寄存器以及端口GP Rt寄存器。在框422处,针对Rt2地址的dataRt读取用作起始字节。在框424处,在Vu+1、Vu+2和Vu+3寄存器中的数据根据Vdd=valign(VuRT)指令204对准,从而产生结果Vdd,例如在Vdd寄存器222和224中示出。随后,方法400返回到框404。
返回到框418,其中确定Ck代码,方法400前进到框432。在框432处,读取(例如)Vu+k、Vu+k+1和Vu+k+2寄存器以及端口GP Rt寄存器,其中k通过对准指令指定为大于或等于1的整数,且其中Vu+k、Vu+k+1和Vu+k+2在VRF的能力内。可以读取其它次序的向量寄存器,例如先前通过两个次序或通过素数次序所描述或如特定应用所需要。在框422处,针对Rt2地址的dataRt读取用作起始字节。在框424处,在Vu+k、Vu+k+1和Vu+k+2寄存器中的数据根据Vdd=valign(VuRT)指令204对准,从而产生结果Vdd。随后,方法400返回到框404。如在框418处通过跨越代码所确定且如通过向量对准指令所指定,存在其它可能的寄存器选择。例如,第一跨越代码可以经指定以选择在框420、430和432中示出的寄存器集合中的一者,且第二跨越可以经指定以从通过第一跨越代码选定的集合选择寄存器的不同集合。例如,如果如框432中所图示的寄存器Vu+k、Vu+k+1和Vu+k+2的第一集合通过第一跨越代码选定,那么Vu+k+1、Vu+k+2和Vu+k+3(未图示)等寄存器的不同集合可以通过用于寄存器的第二集合的第二跨越代码来选择。在另一个实例中,如框420中所图示的寄存器Vu、Vu+1、Vu+2的第一集合可以通过跨越代码C0来选择,且如框432中所图示的寄存器Vu+k、Vu+k+1、Vu+k+2的第二集合可以通过跨越代码Ck来选择。
图5图示具有通用(GP)处理器536和协处理器(CoP)538的便携式装置500,所述协处理器例如向量协处理器,其经配置以提供向量对准功能且满足便携式装置的实时要求。便携式装置500可以是无线电子装置且包含系统核心504,所述系统核心包含耦合到具有软件指令510的系统存储器508的处理器复合506。便携式装置500包括电源514、天线516、键盘等输入装置518、液晶显示器LCD等显示器520、具有视频能力的一或两个相机522、扬声器524和麦克风526。系统核心504还包含无线接口528、显示控制器530、相机接口532以及编解码器534。处理器复合506可以包含具有本地1级指令高速缓冲存储器和1级数据高速缓冲存储器549的GP处理器536以及具有1级向量存储器554的协处理器(CoP)538的双核布置。CoP 538的对准功能可以与图1到4的对准功能相对应。处理器复合506还可以包含调制解调器子系统540、闪存控制器544、闪存装置546、多媒体子系统548、2级高速缓冲存储器550以及存储器控制器552。闪存装置546可以包含可拆卸闪存存储器或还可以是嵌入式存储器。
在说明性实例中,系统核心504根据图1到4中图示出或与图1到4相关联的实施例中的任一者进行操作。例如,如图3A和3B中示出,CoP 538经配置以存取存储在L1I&D高速缓冲存储器、L2高速缓冲存储器550的存储器中以及存储在系统存储器508中的程序指令,以提供如图1和2中所图示的示例性数据对准功能。
无线接口528可以耦合到处理器复合506且耦合到无线天线516,使得经由天线516和无线接口528接收的无线数据可以提供到MSS 540且与CoP 538且与GP处理器536共享。相机接口532耦合到处理器复合506并且还耦合到一或多个相机,例如具有视频能力的相机522。显示控制器530耦合到处理器复合506且耦合到显示器装置520。编码器/解码器(编解码器)534也耦合到处理器复合506。扬声器524(所述扬声器可以包括一对立体声扬声器)和麦克风526耦合到编解码器534。外围装置和其相关联的接口是示例性的且不在数量或在能力上进行限制。例如,输入装置518可以包含通用串行总线(USB)接口等、QWERTY样式的键盘、字母数字键盘以及数字小键盘,所述几者可以个别地在特定装置中实施或成组合在不同装置中实施。
GP处理器536和CoP 538经配置以执行存储在非暂时性计算机可读媒体(例如系统存储器508)中的软件指令510,所述软件指令可执行以使得计算机(例如双核处理器536和538)执行程序以提供如图1和2中所图示的数据对准功能。GP处理器536和CoP 538经配置以在GP处理器536上执行软件指令510且与CoP 538共用GP Rt数据值,所述指令例如Vd=valign(VuRt)和Vdd=valign(VuRt),其计算变量Rt,其还可以与Rt.H和Rt.L相对应。软件指令从不同层的高速缓冲存储器存储器中进行存取,例如L1指令存储器549和系统存储器508。
在特定实施例中,系统核心504物理上组织在系统级封装中或在片上系统装置上。在特定实施例中,组织为片上系统装置的系统核心504如图5中所图示在物理上耦合到电源514、无线天线516、输入装置518、显示器装置520、相机522、扬声器524、麦克风526,且可以耦合到可拆卸闪存装置546。
根据本文中所描述的实施例的便携式装置500可并入在多种电子装置中,例如机顶盒、娱乐单元、导航装置、通信装置、个人数字助理(PDA)、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、计算机、便携式计算机、平板计算机、监视器、计算机监视器、电视、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、视频播放器、数字视频播放器、数字视频光盘(DVD)播放器、便携式数字视频播放器、存储或检索数据或计算机指令的任何其它装置,或其任何组合。
结合本文中所揭示的实施例描述的各种说明性逻辑块、模块、电路、元件和/或组件可以用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件或其经设计以执行本文中所描述的功能的任何组合来实施或执行。通用处理器可以为微处理器,但在替代方案中,处理器可以为任何常规的处理器、控制器、微控制器或状态机。处理器还可以经实施为计算组件的组合,例如,DSP和微处理器的组合、多个微处理器、结合DSP核心的一或多个微处理器或适合于所希望的应用的任何其它此类配置。
例如,图5的双核处理器536和538可以经配置以执行针对在多处理器系统中的数据对准功能的指令以便在程序的控制下服务于实时任务。存储在计算机可读非暂时性存储媒体上的程序或者直接地在本地与处理器复合506相关联,例如可通过指令高速缓冲存储器549获得,或者可通过特定输入装置518或无线接口528进行存取。例如,输入装置518或无线接口528还可以存取驻留在存储器装置中的数据,所述数据或者直接在本地与处理器(例如处理器本地数据高速缓冲存储器)相关联,或者可从系统存储器508存取。结合本文中所揭示的各种实施例所描述的方法可以直接在硬件中、在具有通过处理器执行的一或多个程序的软件模块中或在两者的组合中实施。软件模块可以驻留在随机存取存储器(RAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、闪存存储器、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、硬盘、可拆卸的磁盘、光盘(CD)-ROM、数字视频磁盘(DVD)或所属领域中已知的任何其它形式的非暂时性存储媒体。非暂时性存储媒体可以耦合到处理器,使得处理器可以从所述存储媒体读取信息且将信息写入到所述存储媒体。在替代方案中,存储媒体可以与处理器成一体。
尽管在用于处理器系统的说明性实施例的背景中揭示本发明,但将认识到可以由所述领域的技术人员采用符合上文论述和下文接着的权利要求书的广泛多种实施方案。例如,固定功能实施方案还可以利用本发明的各种实施例。

Claims (23)

1.一种用于执行向量对准指令的方法,所述方法包括:
从在第一处理器和第二处理器之间共享的标量寄存器堆中的寄存器存取在所述第一处理器上的起始位置;以及
在所述第二处理器上使在向量寄存器堆VRF的寄存器内的所述起始位置处开始的数据值的集合对准以将其在所述VRF中的目标寄存器处存储为经对准数据值的集合。
2.根据权利要求1所述的方法,其中在所述标量寄存器堆中的所述寄存器和所述目标寄存器在所述向量对准指令中指定,且所述VRF的所述寄存器通过存储在向量单元Vu基址寄存器中的值间接识别。
3.根据权利要求1所述的方法,其中跨越位(span bit)将在所述VRF中的寄存器的第一群组的第一寄存器或在所述VRF中的寄存器的第二群组的第二寄存器选择为所述VRF的所述寄存器。
4.根据权利要求3所述的方法,其中所述跨越位是所述起始位置的最高有效位。
5.根据权利要求3所述的方法,其中所述寄存器的第一群组的所述第一寄存器通过在所述向量对准指令中的Vu字段来识别,其中在所述寄存器的第一群组中的其它寄存器根据指令指定的寄存器的次序来识别。
6.根据权利要求1所述的方法,其中所述第一处理器是通用GP处理器且所述第二处理器是单指令多数据SIMD向量处理器。
7.根据权利要求1所述的方法,其中在所述标量寄存器堆中的所述寄存器通过指派给所述第二处理器的数据端口被共享,从而允许在不影响在所述第一处理器上的操作的情况下进行对所述起始位置的存取。
8.根据权利要求1所述的方法,其进一步包括:
从某一值存取跨越位和所述起始位置,所述值在第一处理器上产生、存储在所述第一处理器的标量寄存器堆中的寄存器中且在所述第一处理器和第二处理器之间共享;以及
在所述第二处理器上使在向量寄存器堆VRF的寄存器的集合内的所述起始位置处开始的数据值的集合对准以将其在所述VRF的寄存器的目标集合处存储为经对准数据值的集合,其中所述VRF的寄存器的所述集合基于所述跨越位被选定为寄存器的第一集合或寄存器的第二集合。
9.根据权利要求8所述的方法,其中寄存器的所述第一集合是以线性加一次序在Vu识别的寄存器处开始的三个寄存器的集合,且寄存器的所述第二集合是以线性加k加一次序在Vu+k识别的寄存器处开始的三个寄存器的集合,且k通过所述对准指令指定为大于或等于1的整数。
10.根据权利要求8所述的方法,其中寄存器的所述第一集合是以线性加二次序在Vu识别的寄存器处开始的三个寄存器的集合,且寄存器的所述第二集合是以线性加k加二次序在Vu+k识别的寄存器处开始的三个寄存器的集合,且k通过所述对准指令指定为大于或等于1的整数。
11.根据权利要求8所述的方法,其中寄存器的所述第一集合是Vu,Vu+P1,Vu+P2,寄存器的所述第二集合是Vu+P1,Vu+P2,Vu+P3,且P1、P2、P3是通过所述对准指令指定为在可存取VRF寄存器的范围内的素数。
12.一种用于执行向量对准和操作指令的方法,所述方法包括:
从在第一处理器和第二处理器之间共享的标量寄存器堆中的寄存器存取在所述第一处理器上产生的起始位置;
在所述第二处理器上使在向量寄存器堆VRF的寄存器内的所述起始位置处开始的数据值的集合对准以产生经对准数据值的集合;以及
根据所述向量对准和操作指令对所述经对准数据值进行操作以产生存储在所述VRF的目标寄存器处的结果。
13.根据权利要求12所述的方法,其中在所述标量寄存器堆中的所述寄存器通过指派给所述第二处理器的数据端口被共享,从而允许在不影响在所述第一处理器上的操作的情况下进行对所述起始位置的存取。
14.根据权利要求12所述的方法,其中在所述标量寄存器堆中的所述寄存器和所述目标寄存器在所述向量对准和操作指令中指定,且所述VRF的所述寄存器通过存储在向量单元Vu基址寄存器中的值间接识别。
15.一种用于执行向量掩码对准指令的方法,所述方法包括:
从在第一处理器和第二处理器之间共享的标量寄存器堆中的第一寄存器和第二寄存器存取在所述第一处理器上产生的掩码和起始位置;
应用所述掩码以根据在所述掩码中的启用位来识别在所述第二处理器上的向量寄存器堆VRF的寄存器的集合;以及
在所述第二处理器上使在所述向量寄存器堆VRF的寄存器的所述经识别集合内的所述起始位置处开始的数据值的集合对准以将其在所述VRF的寄存器的目标集合处存储为经对准数据值的集合。
16.根据权利要求15所述的方法,其中所述第一寄存器和所述第二寄存器通过指派给所述第二处理器的数据端口被共享,从而允许在不影响在所述第一处理器上的操作的情况下进行对所述掩码和所述起始位置的存取。
17.一种用于执行向量对准指令的设备,所述设备包括:
与第一处理器相关联的标量寄存器堆,其经配置以与第二处理器共享一或多个寄存器值,所述一或多个寄存器值根据在向量对准指令中指定的Rt地址从所述标量寄存器堆进行存取;
在所述第二处理器中的对准电路,其经配置以根据所述向量对准指令和从所述一或多个寄存器值确定的对准起始位置来使在向量寄存器堆VRF的多个寄存器内识别的数据对准;以及
存储电路,其经配置以从所述对准电路选择所述经对准数据且根据通过所述向量对准指令指定的对准存储地址将所述经对准数据存储在所述向量寄存器堆中。
18.根据权利要求17所述的设备,其中所述起始位置在所述多个寄存器中的开始寄存器内。
19.根据权利要求17所述的设备,其中双对准指令指定选自所述一或多个寄存器值的跨越代码(span code)以根据所述跨越代码的状态识别所述VRF的寄存器的第一集合或寄存器的第二集合。
20.根据权利要求17所述的设备,其中掩码对准指令指定选自所述一或多个寄存器值的掩码以根据在所述掩码中的一或多个启用位来识别存储在选自所述VRF的一或多个寄存器中的数据的对准。
21.根据权利要求17所述的设备,其中从在所述第一处理器中的所述标量寄存器堆存取的所述一或多个寄存器值通过指派给所述第二处理器的数据端口被共享,从而允许在不影响在所述第一处理器上的操作的情况下进行对所述寄存器值的存取。
22.一种经编码有计算机可读程序数据和代码的计算机可读非暂时性媒体,所述程序数据和代码在被执行时可操作以:
从在第一处理器和第二处理器之间共享的标量寄存器堆中的寄存器存取在所述第一处理器上的起始位置;以及
在所述第二处理器上使在向量寄存器堆VRF的寄存器内的所述起始位置处开始的数据值的集合对准以将其在所述VRF中的目标寄存器处存储为经对准数据值的集合。
23.一种用于执行向量对准指令的设备,所述设备包括:
用于与第二处理器共享从在第一处理器中的标量寄存器堆存取的一或多个寄存器值的装置,所述一或多个寄存器值根据在向量对准指令中指定的Rt地址进行存取,其中起始位置从所述经共享寄存器值中的一者确定;
用于使所述第二处理器中的数据对准的装置,所述数据根据所述向量对准指令在向量寄存器堆VRF的开始Vu寄存器内的所述起始位置和所述VRF的最末Vu寄存器的结束位置之间被识别;以及
用于从对准电路选择所述经对准数据且根据通过所述向量对准指令指定的对准存储地址将所述经对准数据存储在所述向量寄存器堆中的装置。
CN201480008139.9A 2013-02-26 2014-02-21 基于标量寄存器数据值的向量寄存器寻址和功能 Active CN104981771B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/777,297 2013-02-26
US13/777,297 US9632781B2 (en) 2013-02-26 2013-02-26 Vector register addressing and functions based on a scalar register data value
PCT/US2014/017713 WO2014133895A2 (en) 2013-02-26 2014-02-21 Vector register addressing and functions based on a scalar register data value

Publications (2)

Publication Number Publication Date
CN104981771A true CN104981771A (zh) 2015-10-14
CN104981771B CN104981771B (zh) 2018-05-04

Family

ID=50272743

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480008139.9A Active CN104981771B (zh) 2013-02-26 2014-02-21 基于标量寄存器数据值的向量寄存器寻址和功能

Country Status (6)

Country Link
US (1) US9632781B2 (zh)
EP (1) EP2962187B1 (zh)
JP (1) JP6293795B2 (zh)
KR (1) KR101753900B1 (zh)
CN (1) CN104981771B (zh)
WO (1) WO2014133895A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018141233A1 (en) * 2017-02-01 2018-08-09 Huawei Technologies Co., Ltd. Ultra lean vector processor
CN114008604A (zh) * 2020-07-28 2022-02-01 深圳市汇顶科技股份有限公司 具有专用寄存器的risc处理器

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10001995B2 (en) 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US20170177355A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instruction and Logic for Permute Sequence
US11243958B2 (en) 2015-12-31 2022-02-08 Teradata Us, Inc. Implementing contract-based polymorphic and parallelizable SQL user-defined scalar and aggregate functions
CN111580864B (zh) * 2016-01-20 2024-05-07 中科寒武纪科技股份有限公司 一种向量运算装置及运算方法
US10762164B2 (en) 2016-01-20 2020-09-01 Cambricon Technologies Corporation Limited Vector and matrix computing device
US10296337B2 (en) * 2016-03-21 2019-05-21 International Business Machines Corporation Preventing premature reads from a general purpose register
GB2548600B (en) * 2016-03-23 2018-05-09 Advanced Risc Mach Ltd Vector predication instruction
CN111651205B (zh) * 2016-04-26 2023-11-17 中科寒武纪科技股份有限公司 一种用于执行向量内积运算的装置和方法
KR102343652B1 (ko) * 2017-05-25 2021-12-24 삼성전자주식회사 벡터 프로세서의 서열 정렬 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030163667A1 (en) * 2001-10-31 2003-08-28 Alphamosaic Limited Vector processing system
CN1688966A (zh) * 2002-08-09 2005-10-26 英特尔公司 包括对准或者广播指令的多媒体协处理器控制机制
CN1894659A (zh) * 2003-12-09 2007-01-10 Arm有限公司 在寄存器和存储器之间移动数据的数据处理设备和方法
US20090172348A1 (en) * 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5922066A (en) 1997-02-24 1999-07-13 Samsung Electronics Co., Ltd. Multifunction data aligner in wide data width processor
US7197625B1 (en) 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
GB2372848B (en) 2001-02-20 2004-10-27 Advanced Risc Mach Ltd Data processing using a coprocessor
US7376812B1 (en) 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
WO2004015563A1 (en) * 2002-08-09 2004-02-19 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
US7574409B2 (en) 2004-11-04 2009-08-11 Vericept Corporation Method, apparatus, and system for clustering and classification
US7620797B2 (en) 2006-11-01 2009-11-17 Apple Inc. Instructions for efficiently accessing unaligned vectors
US8255446B2 (en) * 2006-12-12 2012-08-28 Arm Limited Apparatus and method for performing rearrangement and arithmetic operations on data
GB2444744B (en) 2006-12-12 2011-05-25 Advanced Risc Mach Ltd Apparatus and method for performing re-arrangement operations on data
US7783860B2 (en) 2007-07-31 2010-08-24 International Business Machines Corporation Load misaligned vector with permute and mask insert
US10387151B2 (en) 2007-12-31 2019-08-20 Intel Corporation Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks
US7865693B2 (en) 2008-10-14 2011-01-04 International Business Machines Corporation Aligning precision converted vector data using mask indicating offset relative to element boundary corresponding to precision type
US8607033B2 (en) 2010-09-03 2013-12-10 Lsi Corporation Sequentially packing mask selected bits from plural words in circularly coupled register pair for transferring filled register bits to memory
US8904153B2 (en) 2010-09-07 2014-12-02 International Business Machines Corporation Vector loads with multiple vector elements from a same cache line in a scattered load operation
US20120254589A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian System, apparatus, and method for aligning registers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030163667A1 (en) * 2001-10-31 2003-08-28 Alphamosaic Limited Vector processing system
CN1688966A (zh) * 2002-08-09 2005-10-26 英特尔公司 包括对准或者广播指令的多媒体协处理器控制机制
CN1894659A (zh) * 2003-12-09 2007-01-10 Arm有限公司 在寄存器和存储器之间移动数据的数据处理设备和方法
US20090172348A1 (en) * 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018141233A1 (en) * 2017-02-01 2018-08-09 Huawei Technologies Co., Ltd. Ultra lean vector processor
CN114008604A (zh) * 2020-07-28 2022-02-01 深圳市汇顶科技股份有限公司 具有专用寄存器的risc处理器

Also Published As

Publication number Publication date
CN104981771B (zh) 2018-05-04
JP2016511470A (ja) 2016-04-14
US20140244967A1 (en) 2014-08-28
KR20150122195A (ko) 2015-10-30
US9632781B2 (en) 2017-04-25
WO2014133895A2 (en) 2014-09-04
WO2014133895A3 (en) 2014-10-23
EP2962187B1 (en) 2018-03-28
JP6293795B2 (ja) 2018-03-14
EP2962187A2 (en) 2016-01-06
KR101753900B1 (ko) 2017-07-04

Similar Documents

Publication Publication Date Title
CN104981771A (zh) 基于标量寄存器数据值的向量寄存器寻址和功能
EP3588281B1 (en) Apparatus and method for a tensor permutation engine
TWI567646B (zh) 容許一架構之編碼模組使用另一架構之程式庫模組的架構間相容性模組
CN108351830B (zh) 用于存储器损坏检测的硬件装置和方法
CN100480997C (zh) 选择可实质同时处理的多重线程的系统与方法
CN104756090B (zh) 提供扩展的缓存替换状态信息
CN107273095B (zh) 用于对齐寄存器的系统、装置和方法
TWI525533B (zh) 用以執行遮罩位元壓縮之系統、設備、及方法
KR101513380B1 (ko) 구성 정보에 따라 원자 메모리 동작들을 수행하기 위한 방법들 및 메모리들
CN104982051B (zh) 用于加速无线安全算法的装置、方法和系统
CN107220029B (zh) 掩码置换指令的装置和方法
KR101851439B1 (ko) 충돌 검출을 수행하고, 레지스터의 콘텐츠를 다른 레지스터의 데이터 구성요소 위치들로 브로드캐스트하기 위한 시스템들, 장치들 및 방법들
JP2014182810A (ja) デフレート圧縮のために高速で高圧縮のlz77トークン化及びハフマンエンコーディングを行う並列装置
KR20110055629A (ko) 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공
CN110659129A (zh) 用于数据表示之间的一致、加速的转换的装置和方法
MX2007008823A (es) Metodos y aparatos para administrar dinamicamente memoria en banco.
TW201732589A (zh) 用於容錯及錯誤偵測之系統、方法和裝置
TW202246973A (zh) 硬體處理器及處理器
CN110909882A (zh) 用于执行水平铺块操作的系统和方法
US8356145B2 (en) Multi-stage multiplexing operation including combined selection and data alignment or data replication
ES2951658T3 (es) Sistemas, aparatos y métodos para generar un índice por orden de clasificación y reordenar elementos basándose en el orden de clasificación
JP2013517576A5 (zh)
US8572147B2 (en) Method for implementing a bit-reversed increment in a data processing system
US20090228612A1 (en) Flexible Bus Interface and Method for Operating the Same
JP2012128559A (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
GR01 Patent grant
GR01 Patent grant