CN106610817B - 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法 - Google Patents

用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法 Download PDF

Info

Publication number
CN106610817B
CN106610817B CN201610922480.6A CN201610922480A CN106610817B CN 106610817 B CN106610817 B CN 106610817B CN 201610922480 A CN201610922480 A CN 201610922480A CN 106610817 B CN106610817 B CN 106610817B
Authority
CN
China
Prior art keywords
instruction
constant
field
bits
value
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.)
Active
Application number
CN201610922480.6A
Other languages
English (en)
Other versions
CN106610817A (zh
Inventor
T·D·安德森
D·Q·布伊
J·R·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.)
Texas Instruments Inc
Original Assignee
Texas Instruments 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 Texas Instruments Inc filed Critical Texas Instruments Inc
Priority to CN202210633360.XA priority Critical patent/CN114968369A/zh
Publication of CN106610817A publication Critical patent/CN106610817A/zh
Application granted granted Critical
Publication of CN106610817B publication Critical patent/CN106610817B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30156Special purpose encoding of instructions, e.g. Gray coding
    • 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
    • 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/30181Instruction operation extension or modification
    • 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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/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
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49994Sign extension
    • 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/3001Arithmetic 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/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/3802Instruction prefetching
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本申请公开用于采取VLIW处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法。在超长指令字(VLIW)中央处理单元(100)中,指令被分组成并行执行的执行数据包。每条指令的一个字段(1304)可以将直接常数指定作为操作数。指令解码器(1710)确定所述执行数据包内的另一指令是否包括常数扩展位。这种指令(1600)包括常数扩展位(1601)和预定字段(1602),所述预定字段将所述指令标记为包含常数扩展位。串接器(1801)将直接常数位(1304)和扩展常数位(1601)组合,以形成扩展的常数。复用器(1802)根据原始指令是否启用常数扩展来选择直接字段位(1304)或者所述扩展常数作为操作数。所选择的常数基于选定的数据大小可选地是符号扩展(1803)。

Description

用于采取VLIW处理器中的相同执行数据包中的常数扩展槽指 定或扩展常数位数的方法
相关申请
本申请是2014年7月9日提交的标题为“用于扩展嵌入指令集中的常数位数量的方法(METHOD TO EXTEND THE NUMBER OF CONSTANT BITS EMBEDDED IN AN INSTRUCTIONSET)”的美国专利申请号14/326,969的改进,该美国专利申请要求2013年7月9日提交的美国临时申请号61/844,099在美国专利法第35章119(e)(1)款下的优先权。
技术领域
本发明的技术领域是数字数据处理,并且更具体为提供具有扩展常数的指令。
背景技术
本申请是2014年7月9日提交的标题为“用于扩展嵌入指令集中的常数位数的方法(METHOD TO EXTEND THE NUMBER OF CONSTANT BITS EMBEDDED IN AN INSTRUCTIONSET)”的美国专利申请号14/326,969的改进。
计算中经常使用常数。这种常数必须由程序提供给进行计算的指令。能够通过以下方式提供这种常数:将其存储在存储器中,将其加载至中央处理单元寄存器集中的一个寄存器中以及使用寄存器存储常数结合寄存器存储变量执行所需的计算。
作为用于很少使用的常数的一种替代方案,能够将其嵌入指令中。指定这种常数的典型方式是用常数位替代输入操作数字段。这种输入操作数字段一般包括存储对应的输入操作数的若干寄存器。直接指令将这个输入操作数字段视为常数。这个字段被称为直接字段。由于有限数量的位可用,这严格地限制这种常数的大小。典型的中央处理单元将具有16或32个通用寄存器。这将通过直接字段能够指定的常数限制为4或5位。
在现有技术中用于指定常数使用的技术采用可变长度指令字。使用可变长度指令字,能够扩展指令的长度以提供用于指定常数所需数量的位。这是亚最优的,因为固定字长指令集结构需要较少的硬件资源解码。
2014年7月9日提交的标题为“用于扩展嵌入指令集中的常数位数的方法(METHODTO EXTEND THE NUMBER OF CONSTANT BITS EMBEDDED IN AN INSTRUCTION SET)的美国专利申请号14/326,969保持固定长度指令集。这个专利提供了用于常数扩展位的专用指令。该指令包括预定的位位置中的常数扩展位。如果指令包括常数扩展的指示,则解码器采取位于相邻指令中的预定位位置处的位以扩展直接字段的常数。该专利申请教导了串接来自这两个源的位以产生更长的常数。
发明内容
本发明是对要求常数扩展槽与需要常数扩展的指令相邻的替代方案。在超长指令字(VLIW)中央处理单元中,多条指令被分组成并行执行的执行数据包。在本发明中,常数扩展指令不需要在相邻的指令槽中。该常数扩展指令仅需要是在与需要常数扩展的指令相同的执行数据包中。与2014年7月9日提交的标题“用于扩展嵌入指令集中的常数位数的方法(METHOD TO EXTEND THE NUMBER OF CONSTANT BITS EMBEDDED IN AN INSTRUCTIONSET)”的美国专利申请号14/326,969相比,这允许在布置指令方面的较大的灵活性。
在本发明中,通过在与所述指令相同的执行数据包内的一个或更多个常数扩展指令内的常数扩展位来指定或扩展常数的位。
在一个实施例中,针对限定的功能单元集中的一个仅单个指令能够常数扩展。在VLIW中央处理器中,每个功能单元在每个执行数据包仅能够执行一条指令。从而,无论在执行数据包中的相对位置,解码器都能够明白地确定哪条指令使用这些扩展位。
在一个替代性实施例中,在每个执行数据包中允许两个或更多个常数扩展槽。每个这种常数扩展槽仅能够针对来自不相交的功能单元指令子集的不同指令扩展常数。由于每个执行数据包中指向具体功能单元仅能够存在一条指令,并且这些子集是不相交的,因此解码器能够确定哪条指令对应于每个这种常数扩展槽。因此,执行数据包内的两条或更多条指令能够采取来自不同常数扩展指令的扩展常数。
在一个进一步替代性实施例中,不只一个功能单元可以具有从相同常数扩展指令扩展的常数。在这种情况下,在每个这种功能单元的指令执行中采取相同的扩展位。
附图说明
附图中例示了本发明的这些和其它方面,其中:
图1例示了根据本发明的一个实施例的双标量/矢量数据路径处理器;
图2例示了图1中所例示的双标量/矢量数据路径处理器中的寄存器和功能单元;
图3例示了全局标量寄存器文件;
图4例示了算术功能单元共享的局部标量寄存器文件;
图5例示了乘法功能单元共享的局部标量寄存器文件;
图6例示了加载/存储单元共享的局部标量寄存器文件;
图7例示了全局矢量寄存器文件;
图8例示了判定寄存器(predicate register)文件;
图9例示了算术功能单元共享的局部矢量寄存器文件;
图10例示了乘法和相关功能单元共享的局部矢量寄存器文件;
图11例示了根据本发明的一个优选实施例的中央处理单元的流水线(pipeline)阶段;
图12例示了单个取回数据包的十六条指令;
图13例示了本发明使用的指令的指令编码的一个示例;
图14例示了条件代码扩展槽0的位编码;
图15例示了条件代码扩展槽1的位编码;
图16例示了常数扩展槽0的位编码;
图17是例示根据本发明的常数位的规范(specification)或扩展的部分框图;
图18是例示形成一个扩展的常数的常数扩展的第一实施例的部分框图;以及
图19是例示形成一个较大的扩展的常数的常数扩展的第二实施例的部分框图;以及
图20是例示具有指定一个常数的常数扩展槽的常数扩展的第三实施例的部分框图;
图21例示了采用两个常数扩展槽形成两个扩展常数;
图22例示了形成来自单个常数扩展指令的常数扩展位的两个常数;以及
图23例示了根据本发明的用于SIMD操作的进位控制。
具体实施方式
图1例示了根据本发明的一个优选实施例的双标量/矢量数据路径处理器。处理器100包括单独的一级指令缓存(L1I)121和一级数据缓存(L1D)123。处理器100包括保存指令和数据两者的二级组合指令/数据缓存(L2)130。图1例示了一级指令缓存121与二级组合指令/数据缓存130之间的连接(总线142)。图1例示了一级数据缓存123与二级组合指令/数据缓存130之间的连接(总线145)。在处理器100的优选实施例中,二级组合指令/数据缓存130将指令存储至备份一级指令缓存121并且还将数据存储至备份一级数据缓存123。在优选实施例中,将二级组合指令/数据缓存130以图1中未例示的方式进一步连接至较高级别的缓存和/或主存储器。在优选实施例中,中央处理单元内核110、一级指令缓存121、一级数据缓存123和二级组合指令/数据缓存130被形成在单个集成电路上。这个单个集成电路可选地包括其它电路。
中央处理单元内核110受指令取回单元111控制从一级指令缓存121取回指令。指令取回单元111确定将要被执行的接下来的指令,并且召回这些指令的取回数据包大小的集合。下面进一步详述取回数据包的特性和大小。如本领域中已知的,在缓存命中时(如果这些指令被存储在一级指令缓存121中),从一级指令缓存121直接取回指令。在缓存未命中时(指定的指令取回数据包未存储在一级指令缓存121中),在二级组合缓存130中寻找这些指令。在优选实施例中,一级指令缓存121中的缓存线的大小等于取回数据包的大小。这些指令的存储器位置在二级组合缓存130中或者命中或者未命中。提供二级组合缓存130的命中。提供较高级的缓存(未例示)或主存储器(未例示)的未命中。如本领域中已知的,所请求的指令可以被同时地提供给一级指令缓存121和中央处理单元内核110两者以加速使用。
在本发明的优选实施例中,中央处理单元内核110包括多个功能单元以执行指令的指定数据处理任务。指令分派单元112确定每条取回的指令的目标功能单元。在优选实施例中,中央处理单元110作为超长指令字(VLIW)处理器运行,该超长指令字处理器能够同时运行于对应功能单元中的多条指令上。优选地,编译器将指令组织在被一起执行的执行数据包中。指令分派单元112使每条指令指向其的目标功能单元。分配给指令的功能单元完全由编译器所产生的指令来指定。中央处理单元内核110的硬件未参与该功能单元分配。在优选实施例中,指令分派单元112可以并行运行于多条指令。这种并行指令的数量由执行数据包的大小来设定。下面将进一步对此进行详述。
指令分派单元112的分派任务的一部分是确定该指令是否将在标量数据路径侧A115或矢量数据路径侧B 116的功能单元上执行。每条指令内的称为s位的指令位确定该指令控制哪条数据路径。下面将进一步对此进行详述。
指令解码单元113对当前执行数据包内的每条指令进行解码。解码包括标识执行该指令的功能单元,标识用于从可能的寄存器文件当中针对对应数据处理操作供应数据的寄存器,以及标识对应的数据处理操作的结果的寄存器目标地。如下面进一步解释的,指令可以包括代替一个寄存器号操作数字段的常数字段。这个解码的结果是用于控制目标功能单元以执行通过对应指令指定的对于指定数据的数据处理操作的信号。
中央处理单元内核110包括控制寄存器114。控制寄存器114以与本发明不相关的方式存储用于控制在标量数据路径侧A 115和矢量数据路径侧B 116中的这些控制单元的信息。这条信息能够是模式信息等。
来自指令解码113的经解码指令和存储在控制寄存器114中的信息被供应给标量数据路径侧A 115和矢量数据路径侧B 116。结果是,标量数据路径侧A 115和矢量数据路径侧B 116内的功能单元对指令指定的数据执行指令指定的数据处理操作,并且将结果存储在指令指定的一个或更多个数据寄存器中。标量数据路径侧A115和矢量数据路径侧B 116中的每个包括多个功能单元,所述多个功能单元优选地并行运行。下面将结合图2对这些进行进一步详述。在标量数据路径侧A115与矢量数据路径侧B 116之间存在允许数据交换的数据路径117。
中央处理单元内核110进一步包括非基于指令的模块。仿真单元118允许响应于指令确定中央处理单元内核110的机器状态。一般将采取这种能力进行算法改进。中断/异常单元119使中央处理单元内核110能够响应于外部、异步事件(中断)并且能够对企图执行非正常操作(异常)进行响应。
中央处理单元内核110包括流引擎125。流引擎125向矢量数据路径B的寄存器文件提供一般缓存在二级组合缓存130中的预定地址的两个数据流。这样提供从存储器(当在二级组合缓存130中缓存时)直接至寄存器文件的受控制的数据移动。下面对此进行进一步详述。
图1例示了总线的不同部分之间的示例性数据宽度。一级指令缓存121经由总线141向指令取回单元111提供指令。总线141优选地是512位的总线。总线141是单向的,从一级指令缓存121到中央处理单元110。二级组合缓存130经由总线142向一级指令缓存121提供指令。总线142优选地是512位的总线。总线142是单向的,从二级组合缓存130到一级指令缓存121。
一级数据缓存123经由总线143与标量数据路径侧A 115中的寄存器文件交换数据。总线143优选地是64位的总线。一级数据缓存123经由总线144与矢量数据路径侧B 116中的寄存器文件交换数据。总线144优选地是512位的总线。总线143和144被例示为双向的,其支持中央处理单元110数据读取和数据写入两者。一级数据缓存123经由总线145与二级组合缓存130交换数据。总线145优选地是512位的总线。总线145被例示为双向的,支持对中央处理单元110数据读取和数据写入两者的缓存服务。
二级组合缓存130经由总线146将第一数据流的数据提供给流引擎125。总线146优选地是512位的总线。流引擎125将这个第一数据流的数据经由总线147提供给矢量数据路径侧B 116的寄存器文件。总线147优选地是512位的总线。二级组合缓存130经由总线148将第二数据流的数据提供给流引擎125。总线148优选地是512位的总线。流引擎125将这个第二数据流的数据经由总线149提供给矢量数据路径侧B 116的寄存器文件。总线149优选地是512位的总线。根据本发明的优选实施例,总线146、147、148和149被例示为单向的,从二级组合缓存130到流引擎125以及到矢量数据路径侧B116。
在本发明的优选实施例中,根据标题为“包括缓存和直接可寻址静态随机存取存储器的统一存储器系统架构(UNIFIED MEMORY SYSTEM ARCHITECTURE INCLUDING CACHEAND DIRECTLY ADDRESSABLE STATIC RANDOM ACCESS MEMORY)”的美国专利号6,606,686,一级数据缓存123和二级组合缓存130都可以被配置成选定量的缓存或直接可寻址存储器。
图2进一步例示了标量数据路径侧A 115和矢量数据路径侧B 116内的功能单元和寄存器文件的细节。标量数据路径侧A 115包括全局标量寄存器文件211、L1/S1局部寄存器文件212、M1/N1局部寄存器文件213和D1/D2局部寄存器文件214。标量数据路径侧A 115包括L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226。矢量数据路径侧B 116包括全局标量寄存器文件231、L2/S2局部寄存器文件232、M2/N2/C局部寄存器文件233和判定寄存器文件234。矢量数据路径侧B 116包括L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246。对哪些功能单元可以从哪些寄存器文件读取或向哪些寄存器文件写入存在限制。下面将对其进行详述
标量数据路径侧A 115包括L1单元221。L1单元221一般接受两个64位的操作数并且产生一个64位的结果。这两个操作数各自从全局标量寄存器文件211中或者L1/S1局部寄存器文件212中的指令指定寄存器召回。L1单元221优选地执行以下指令选定操作:64位加/减操作;32位最小/最大操作;如绝对值之和、最小值和最大值确定的8位单指令多数据(SIMD)指令;循环最小/最大操作;以及寄存器文件之间的各种移动操作。结果可以被写入全局标量寄存器文件211、L1/S1局部寄存器文件212、M1/N1局部寄存器文件213或D1/D2局部寄存器文件214中的指令指定寄存器。
标量数据路径侧A 115包括S1单元222。S1单元222一般接受两个64位的操作数并且产生一个64位的结果。这两个操作数各自从全局标量寄存器文件211中或者L1/S1局部寄存器文件212中的指令指定寄存器召回。S1单元222优选地执行与L1单元221相同类型的操作。通过L1单元221与S1单元222所支持的数据处理操作之间可选地可以存在轻微变化。结果可以被写入全局标量寄存器文件211、L1/S1局部寄存器文件212、M1/N1局部寄存器文件213或D1/D2局部寄存器文件214中的指令指定寄存器。
标量数据路径侧A115包括M1单元223。M1单元223一般接受两个64位的操作数并且产生一个64位的结果。这两个操作数各自从全局标量寄存器文件211中或者M1/N1局部寄存器文件213中的指令指定寄存器召回。M1单元223优选地执行以下指令选定运算:8位乘法运算;复数点积运算;32位计数运算;复数共轭相乘运算;以及按位逻辑运算、移动、加和减。结果可以被写入全局标量寄存器文件211、L1/S1局部寄存器文件212、M1/N1局部寄存器文件213或D1/D2局部寄存器文件214中的指令指定寄存器。
标量数据路径侧A 115包括N1单元224。N1单元224一般接受两个64位的操作数并且产生一个64位的结果。这两个操作数各自从全局标量寄存器文件211中或者M1/N1局部寄存器文件213中的指令指定寄存器召回。N1单元224优选地执行与M1单元223相同类型的操作。可以存在某些同时采取M1单元223和N1单元224两者的双重操作(称为双发布(dualissued)指令)。结果可以被写入全局标量寄存器文件211、L1/S1局部寄存器文件212、M1/N1局部寄存器文件213或D1/D2局部寄存器文件214中的指令指定寄存器。
标量数据路径侧A 115包括D1单元225和D2单元226。D1单元225和D2单元226一般各自接受两个64位的操作数并且各自产生一个64位的结果。D1单元225和D2单元226一般执行地址计算以及对应的加载和存储操作。D1单元225用于64位的标量加载和存储。D2单元226用于512位的矢量加载和存储。D1单元225和D2单元226优选地还执行:对加载和存储数据的调换、封包和解包;64位的SIMD算术运算;以及64位逐位逻辑运算。D1/D2逻辑寄存器文件214将一般存储针对对应的加载和存储的地址计算中所使用的基础地址和偏移地址。这两个操作数各自从全局标量寄存器文件211中或者D1/D2局部寄存器文件214中的指令指定寄存器召回。计算结果能够被写入全局标量寄存器文件211、L1/S1局部寄存器文件212、M1/N1局部寄存器文件213或D1/D2局部寄存器文件214中的指令指定寄存器。
矢量数据路径侧B 116包括L2单元241。L2单元221一般接受两个512位的操作数并且产生一个512位的结果。这两个操作数各自从全局矢量寄存器文件231中、或者L2/S2局部寄存器文件232中或者判定寄存器文件234中的指令指定寄存器召回。除了关于较宽的512位数据,L2单元241优选地执行与L1单元221相似的指令。结果可以被写入全局矢量寄存器文件231、L2/S2局部寄存器文件232、M2/N2/C局部寄存器文件233或判定寄存器文件234的指令指定寄存器。
矢量数据路径侧B 116包括S2单元242。S2单元242一般接受两个512位的操作数并且产生一个512位的结果。这两个操作数各自从全局矢量寄存器文件231中、或者L2/S2局部寄存器文件232中或者判定寄存器文件234中的指令指定寄存器召回。除了关于较宽泛的512位数据,S2单元242优选地执行与S1单元222相似的指令。结果可以被写入全局矢量寄存器文件231、L2/S2局部寄存器文件232、M2/N2/C局部寄存器文件233或判定寄存器文件234中的指令指定寄存器。
矢量数据路径侧B 116包括M2单元243。M2单元243一般接受两个512位的操作数并且产生一个512位的结果。这两个操作数各自从全局矢量寄存器文件231中或者M2/N2/C局部寄存器文件233中的指令指定寄存器召回。除了关于较宽的512位数据,M2单元243优选地执行与M1单元223相似的指令。结果可以被写入全局矢量寄存器文件231、L2/S2局部寄存器文件232、或M2/N2/C局部寄存器文件233中的指令指定寄存器。
矢量数据路径侧B 116包括N2单元244。N2单元244一般接受两个512位的操作数并且产生一个512位的结果。这两个操作数各自从全局矢量寄存器文件231中或者M2/N2/C局部寄存器文件233中的指令指定寄存器召回。N2单元244优选地执行与M2单元243相同类型的操作。可以存在某些同时采取M2单元243和N2单元244两者的双重操作(称为双发布指令)。结果可以被写入全局矢量寄存器文件231、L2/S2局部寄存器文件232、或M2/N2/C局部寄存器文件233中的指令指定寄存器。
矢量数据路径侧B 116包括C单元245。C单元245一般接受两个512位的操作数并且产生一个512位的结果。这两个操作数各自从全局矢量寄存器文件231中或者M2/N2/C局部寄存器文件233中的指令指定寄存器召回。C单元245优选地执行“搜索(Rake)”和“搜寻(Search)”指令;高达512个2位的PN*8位乘以I/Q复数乘以每时钟周期;8位与16位的绝对误差和(SAD)计算,高达512个SAD每时钟周期;水平加和水平取最小值/最大值指令;以及矢量置换指令。C单元245还包含用于控制C单元245指令的某些操作的4个矢量控制寄存器(CUCR0至CUCR3)。控制寄存器CUCR0至CUCR3被用作某些C单元245操作中的操作数。控制寄存器CUCR0至CUCR3优选地用于:控制广义置换指令(VPERM);以及作为用于SIMD多点积运算(DOTPM)以及SIMD多绝对误差和(SAD)运算的掩码。控制寄存器CUCR0优选地用于存储伽罗华域乘法运算(GFMPY)的多项式。控制寄存器CUCR1优选地用于存储伽罗华域多项式生成器函数。
矢量数据路径侧B 116包括P单元246。P单元246对局部判定寄存器文件234的寄存器执行基础逻辑运算。P单元246具有直接访问以从判定寄存器文件234读取和向判定寄存器文件234写入。这些运算包括AND、ANDN、OR、XOR、NOR、BITR、NEG、SET、BITCNT、RMBD、位抽取和扩展。P单元246的通常预期的使用包括:操纵SIMD矢量比较结果以用于控制进一步的SIMD矢量运算。
图3例示了全局标量寄存器文件211。存在指定为A0至A15的16个独立的64位宽标量寄存器。全局标量寄存器文件211的每个寄存器能够作为64位的标量数据被读取或写入。所有的标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226)能够从全局标量寄存器文件211读取或向全局标量寄存器文件211写入。全局标量寄存器文件211可以被读取为32位或被读取为64位,并且仅可以作为64位被写入。指令执行确定读取的数据大小。在下面将详述的限制下,矢量数据路径侧B 116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246)能够经由交叉路径117从全局标量寄存器文件211读取。
图4例示了D1/D2局部寄存器文件214。存在指定为D0至D16的16个独立的64位宽标量寄存器。D1/D2局部标量寄存器文件214的每个寄存器能够被作为64位的标量数据被读取或写入。所有的标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226)能够向全局标量寄存器文件211写入。只有D1单元225和D2单元226能够从D1/D2局部标量寄存器文件214读取。期望的是,存储在D1/D2局部标量寄存器文件214中的数据将包括使用在地址计算中的基础地址和偏移地址。
图5例示了L1/S1局部寄存器文件212。图5中所例示的实施例具有指定为AL0至AL7的8个独立的64位宽标量寄存器。优选的指令编码(见图13)允许L1/S1局部寄存器文件212包括高达16个寄存器。图5的实施例仅实施8个寄存器,以减小电路大小和复杂度。L1/S1局部标量寄存器文件212的每个寄存器能够被作为64位的标量数据被读取或写入。所有的标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226)能够向L1/S1局部标量寄存器文件212写入。只有L1单元221和S1单元222能够从L1/S1局部标量寄存器文件212读取。
图6例示了M1/N1局部寄存器文件213。图6中所例示的实施例具有指定为AM0至AM7的8个独立的64位宽标量寄存器。优选的指令编码(见图13)允许M1/N1局部寄存器文件213包括高达16个寄存器。图6的实施例仅实施8个寄存器,以减小电路大小和复杂度。M1/N1局部标量寄存器文件213的每个寄存器能够被作为64位的标量数据被读取或写入。所有的标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226)能够向M1/N1局部标量寄存器文件213写入。只有M1单元223和N1单元224能够从M1/N1局部标量寄存器文件213读取。
图7例示了全局矢量寄存器文件231。存在16个独立的512位宽标量寄存器。全局矢量寄存器文件231的每个寄存器能够被作为指定为B0至B15的64位的标量数据被读取或写入。全局矢量寄存器文件231的每个寄存器能够被作为指定为VB0至VB15的512位的矢量数据被读取或写入。指令类型确定数据大小。所有的矢量数据路径侧B 116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246)能够从全局矢量寄存器文件231读取或向全局矢量寄存器文件231写入。在下面将详述的限制下,标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226)能够经由交叉路径117从全局矢量寄存器文件231读取。
图8例示了P局部寄存器文件234。存在指定为P0至P15的8个独立的64位宽寄存器。P局部寄存器文件234的每个寄存器能够被作为64位的标量数据被读取或写入。矢量数据路径侧B 116功能单元(L2单元241、S2单元242、C单元244和P单元246)能够向P局部寄存器文件234写入。只有L2单元241、S2单元242和P单元246能够从P局部标量寄存器文件234读取。P局部寄存器文件234的通常预期的使用包括:从L2单元241、S2单元242或C单元244写入一位SIMD矢量比较结果;由P单元246操纵SIMD矢量比较结果;以及在控制进一步的SIMD矢量运算中使用操作结果。
图9例示了L2/S2局部寄存器文件232。图9中所例示的实施例具有8个独立的512位宽标量寄存器。优选的指令编码(见图13)允许L2/S2局部寄存器文件232包括高达16个寄存器。图9的实施例仅实施8个寄存器,以减小电路大小和复杂度。L2/S2局部矢量寄存器文件232的每个寄存器能够被作为指定为BL0至BL7的64位的标量数据被读取或写入。L2/S2局部矢量寄存器文件232的每个寄存器能够被作为指定为VBL0至VBL7的512位的矢量数据被读取或写入。指令类型确定数据大小。所有的矢量数据路径侧B 116功能单元(L2单元241、S2单元242、M2单元243、N2单元24、C单元245和P单元246)能够向L2/S2局部矢量寄存器文件232写入。只有L2单元241和S2单元242能够从L2/S2局部矢量寄存器文件232读取。
图10例示了M2/N2/C局部寄存器文件233。图10中所例示的实施例具有8个独立的512位宽标量寄存器。优选的指令编码(见图13)允许M2/N2/C局部寄存器文件233包括高达16个寄存器。图10的实施例仅实施8个寄存器,以减小电路大小和复杂度。M2/N2/C局部矢量寄存器文件233的每个寄存器能够被作为指定为BM0至BM7的64位的标量数据读取或写入。M2/N2/C局部矢量寄存器文件233的每个寄存器能够被作为指定为VBM0至VBM7的512位的矢量数据被读取或写入。所有的矢量数据路径侧B 116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246)能够向M2/N2/C局部矢量寄存器文件233写入。只有M2单元243、N2单元244和C单元245能够从M2/N2/C局部矢量寄存器文件233读取。
交叉路径117允许标量数据路径侧A 115与矢量数据路径侧B 116之间的受限的数据交换。在每个运算周期,能够从全局标量寄存器文件A 211召回一个64位的数据字,以用作矢量数据路径侧B 116的一个或更多个功能单元的操作数,并且能够从全局矢量寄存器文件231召回一个64位的数据字,以用作标量数据路径侧A115的一个或更多个功能单元的操作数。任何标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226)可以从全局矢量寄存器文件231读取64位的操作数。这个64位的操作数是全局矢量寄存器文件231的所访问的寄存器内的512位数据的最低有效位。多个标量数据路径侧A 115功能单元可以在相同运算周期内采用作为操作数的相同的64位交叉路径数据。然而,在任何单个运算周期中,将只有一个64位的操作数从矢量数据路径侧B116传递至标量数据路径侧A 115。任何矢量数据路径侧B 116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246)可以从全局标量寄存器文件211读取64位的操作数。如果对应指令是标量指令,则交叉路径操作数数据被作为任何其它64操作数处理。如果对应指令是矢量指令,则操作数的高的448位填充零。多个矢量数据路径侧B 116功能单元可以在相同运算周期内采用作为操作数的相同的64位交叉路径数据。在任何单个运算周期中,将只有一个64位的操作数从标量数据路径侧A 115传递至矢量数据路径侧B116。
流引擎125在某些受限环境下传递数据。流引擎125控制两个数据流。一个流由具体类型的元素的序列组成。对流进行运算的程序顺序地读取数据,按次序对每个元素进行运算。每个流具有以下基本特性。这时,流数据具有在时间上良好限定的开始和结束。流数据贯穿该流具有固定的元素大小和类型。流数据具有元素的固定序列。从而,程序不能够在流内随机地搜寻。流数据在活动时是只读的。程序不能向流写入而同时从流中读取。一旦流被打开,流引擎125就:计算地址;从二级统一缓存取回限定的数据类型(这可以需要来自较高级的存储器的缓存服务);执行数据类型操纵,如零扩展、符号扩展、如矩阵转置的数据元素排序/调换;以及将数据直接递送至CPU 110内的所编程的数据寄存器文件。因此,流引擎125对表现良好的数据的实时数字过滤操作是有用的。流引擎125从对应的CPU释放这些存储器取回任务,流引擎125启动其它处理功能。
流引擎125提供以下益处。流引擎125允许多维存储器访问。流引擎125增加了对功能单元的可用带宽。由于流缓存器绕开一级数据缓存123,所以流引擎125使缓存未命中停止的数量最小化。流引擎125减少了维持环路所需的标量运算的数量。流引擎125管理地址指针。流引擎125处理地址生成,针对其它计算自动地空出地址生成指令槽与D1单元225和D2单元226。
CPU 110在指令流水线上运行。在下面进一步详述的固定长度的指令数据包中取回指令。所有的指令需要相同数量的流水线阶段用于取回和解码,但是需要不同数量的执行阶段。
图11例示了以下流水线阶段:程序取回阶段1110、分派和解码阶段1110和执行阶段1130。程序取回阶段1110针对所有的指令包括三个阶段。分派和解码阶段针对所有指令包括三个阶段。执行阶段1130根据指令包括一个至四个阶段。
取回阶段1110包括程序地址生成阶段1111(PG)、程序访问阶段1112(PA)和程序接收阶段1113(PR)。在程序地址生成阶段1111(PG)期间,在CPU中产生程序地址,并且将读取请求发送至针对一级指令缓存L1I的存储器控制器。在程序访问阶段1112(PA)期间,一级指令缓存L1I处理请求,访问其存储器中的数据并且将取回数据包发送至CPU界限(boundary)。在程序接收器件1113(PR)期间,CPU登记取回数据包。
指令总是一次取回十六个32位宽的槽,组成取回数据包。图12例示了单个取回数据包的16条指令1201至1216。取回数据包在512位(16个字)界限上对齐。优选的实施例采取固定的32位指令长度。固定长度指令出于若干原因是有益的。固定长度指令使能够容易进行解码器对齐。正确对齐的指令取回能够将多条指令加载至并行的指令解码器中。当存储在与固定指令数据包取回耦合的存储器(取回数据包在512位界限上对齐)中时,这种正确对齐的指令取回能够通过预定指令对齐来实现。对齐的指令取回允许对指令大小的取回位进行并行的解码器运算。可变长度指令在它们能够被解码之前需要定位每个指令界限的初始步骤。固定长度指令集一般允许指令字段的更常规的布局。这简化了每个解码器的构造,这对于广泛发行VLIW中央处理器来说是优势。
通过每条指令中的p位部分地控制执行各指令。这个p位优选地是32位宽槽的0位。p位确定一条指令是否与下一指令并行执行。从低到高地址扫描指令。如果指令的p位是1,则接下来的后一指令(较高的存储器地址)与这条指令(在相同周期内)并行执行。如果指令的p位是0,则接下来的后一指令在该指令之后的周期中执行。
CPU 110和一级指令缓存L1I 121流水线彼此解耦合。根据如在一级指令缓存121是否存在命中或在二级组合缓存130中是否存在命中的外部环境,取回数据包从一级指令缓存L1I返回能够采取不同数量的时钟周期。因此,程序访问阶段1112(PA)能够采取若干时钟周期,而不是如在其它阶段中的1个时钟周期。
这些并行执行的指令组成执行数据包。在优选实施例中,执行数据包能够包含高达十六条指令。执行数据包中没有两条指令可以使用相同的功能单元。槽是五种类型之一:1)在CPU 110的功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225、D2单元226、L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246)中的一个上执行的独立指令;2)无单位指令,如一个NOP(无运行)指令或多个NOP指令;3)分支指令;4)常数字段扩展;和5)条件代码扩展。下面将对这些槽类型中的一些加以解释。
分派和解码阶段1110包括指令分派至合适的执行单元阶段1121(DS)、指令预解码阶段1122(D1);以及指令解码、操作数读取阶段1222(D2)。在指令分派至合适的执行单元阶段1121(DS)期间,取回数据包被拆分成执行数据包并且分配给合适的功能单元。在指令预解码阶段1122(D1)期间,解码源寄存器、目标寄存器和相关联的路径,以在功能单元中执行这些指令。在指令解码、操作码读取阶段1222(D2)期间,完成更详细的单元解码,以及从寄存器文件读取操作数。
执行阶段1130包括执行阶段1131至1135(E1至E5)。不同类型的指令需要不同数量的这些阶段完成其执行。流水线的这些阶段在理解CPU周期界限处的设备状态中扮演重要角色。
在执行1阶段1131(E1)期间,针对指令的条件进行评估,并且对操作数进行运算。如图11中所例示的,执行1阶段1131可以从流缓存器1141以及示意性地示出为1142的寄存器文件的一个接收操作数。针对加载和存储指令,执行地址生成,并且将地址修改写入至寄存器文件。针对分支指令,PG阶段中的分支取回数据包受影响。如图11中所例示的,加载和存储指令访问在此示意性示出为存储器1151的存储器。针对单循环指令,将结果写入至目标寄存器文件。这假设针对这些指令的任何条件都被评估为真。如果条件被评估为假,则在执行1阶段1131之后,该指令不写入任何结果或具有任何流水线操作。
在执行2阶段1132(E2)期间,加载指令将地址发送至存储器。存储指令将地址和数据发送至存储器。如果发生饱和,则使结果饱和的单循环指令设定状态寄存器中的SAT位。针对2循环指令,将结果写入至目标寄存器文件。
在执行3阶段1133(E3)期间,执行数据存储器访问。如果发生饱和,则使结果饱和的任何乘法指令设定状态寄存器中的SAT位。针对3循环指令,将结果写至入至目标寄存器文件。
在执行4阶段1134(E4)期间,加载指令将数据带到CPU界限。针对4循环指令,将结果写至目标寄存器文件。
在执行5阶段1135(E5)期间,加载指令将数据写入至寄存器。在图11中对此进行了示意性例示,其中,来自存储器1151的输入至执行5阶段1135。
图13例示了本发明所使用的功能单元指令的指令编码1300的一个示例。本领域技术人员将理解如何应用本发明的教导至替换指令编码。每条指令由32位组成并且控制运行单独可控制的功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225、D2单元226、L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246)中的一个。如下限定位字段。
creg字段1301(位29至31)和z位1302(位28)是条件指令中所使用的可选字段。这些位被用于条件指令以标识判定寄存器和条件。z位1302(位28)指示判定是否是基于判定寄存器中的零或非零。如果z=1,则测试是针对等于零。如果z=0,则测试是针对非零。creg=0且z=0的情况被作为总是真以允许无条件的指令执行处理。在指令中编码creg字段1301和z字段1302,如表1中所示。
Figure GDA0001938391070000161
表1
执行条件指令取决于指定的数据寄存器中存储的值。对于所有功能单元,这个数据寄存器是在全局标量寄存器文件211中。注意,z位栏中的“z”指上文所述的零/非零比较选择,并且“x”是无关状态。这个编码能够仅将16个全局寄存器的子集指定为判定寄存器。进行这个选择以预留指令编码中的位。注意,无条件的指令不具有这些可选位。对于无条件指令,字段1301和1302(28至31)中的这些位优选地被用作为附加操作码位。进一步注意,针对条件指令的creg字段(字段1301)和z字段(字段1302)可以位于其它位置,如操作码位2至12。
dst字段1303(字段23至27)将对应寄存器文件中的寄存器指定为指令结果的目的地。
src2/cst字段1304(位18至22)根据指令操作码字段(针对所有指令的位4到12,以及针对无条件指令的附加位28至31)具有若干种意义。第一种意义将对应寄存器文件的寄存器指定为第二操作数。第二种意义是直接常数。根据指令类型,这被作为扩展至指定的数据长度的无符号的整数和零处理,或者被当做扩展至指定的数据长度的有符号的整数和符号。
src1字段1305(字段13至17)将对应寄存器文件中的寄存器指定为第一源操作数。
针对所有指令的操作码字段1306(位4至12)(以及针对无条件指令的附加位28至31)指定指令的类型并且指定合适的指令选项。这包括对所使用的功能单元和执行的操作的清楚指定。除了下面详述的指令选项之外,对操作码的详细解释超出了本发明的范围。
e位1307(位2)仅被用于其中常数可以被扩展的直接常数指令。如果e=1,则然后以下面详述的方式扩展该直接常数。如果e=0,则不扩展该直接常数。在这种情况下,由src2/cst字段1304(位18至22)指定直接常数。注意,这个e位1307仅被用于某些指令。因此,在具有正确编码的情况下,可以从不需要它并且这个位被用作为附加操作码位的指令省略这个e位1307。
s位1307(位1)指定标量数据路径侧A 115或矢量数据路径侧B 116。如果s=0,则选择标量数据路径侧A 115。这将功能单元限制至L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226以及图2中所例示的对应寄存器文件。类似地,s=1选择矢量数据路径侧B 116,将功能单元限制至L2单元241、S2单元242、M2单元243、N2单元244、P单元246和图2中所例示的对应寄存器文件。
p位1308(位0)标记执行数据包。p位确定指令是否与接下来的指令并行执行。从较低到较高地址扫描p位。如果针对当前指令p=1,则下一指令与当前指令并行执行。如果针对当前指令p=0,则下一指令在当前指令之后的周期内执行。所有并行执行指令组成执行数据包。执行数据包能够包含高达十二条指令。执行数据包中的每条指令必须使用不同的功能单元。
存在两个不同的条件代码扩展槽。每个执行数据包能够包含这些唯一的32位条件代码扩展槽中的各一个,其包含针对相同执行数据包中的指令的4位creg/z字段。图14例示了用于条件代码扩展槽0的编码,并且图15例示了条件代码扩展槽1的编码。
图14例示了针对具有32位的扩展槽0的编码。字段1401(位28至31)指定了分配给相同执行数据包中的L1单元221指令的4个creg/z位。字段1402(位27至24)指定了分配给相同执行数据包中的L2单元241指令的4个creg/z位。字段1403(位19至23)指定了分配给相同执行数据包中的S1单元222指令的4个creg/z位。字段1404(位16至19)指定了分配给相同执行数据包中的S2单元242指令的4个creg/z位。字段1405(位12至15)指定了分配给相同执行数据包中的D1单元225指令的4个creg/z位。字段1406(位8至11)指定了分配给相同执行数据包中的D2单元245指令的4个creg/z位。字段1407(位6和7)是未使用/保留的。字段1408(位0至5)是被编码的一组唯一位(CCEX0)用于标识条件代码扩展槽0。一旦检测到条件代码扩展槽0的这个唯一ID,就采用对应的creg/z位来控制相同执行数据包中的任何L1单元221、L2单元241、S1单元222、S2单元242、D1单元224和D2单元225指令的条件执行。如表1中所示解释这些creg/z位。如果对应指令是有条件的(包括creg/z位),则条件代码扩展槽0中的对应位覆写指令中的条件代码位。注意,没有执行数据包能够具有指向具体执行单元的一个以上指令。没有指令的执行数据包能够包含一个以上条件代码扩展槽0。因此,creg/z位到功能单元指令的映射是清楚的。将creg/z位设置为等于“0000”使该指令是无条件的。因此,正确编码的条件代码扩展槽0能够使一些对应指令是有条件的并且一些是无条件的。
图15例示了针对具有32位的条件编码扩展槽1的编码。字段1501(位28至31)指定了分配给相同执行数据包中的M1单元223指令的4个creg/z位。字段1502(位27至24)指定了分配给相同执行数据包中的M2单元243指令的4个creg/z位。字段1503(位19至23)指定了分配给相同执行数据包中的C单元245指令的4个creg/z位。字段1504(位16至19)指定了分配给相同执行数据包中的N1单元224指令的4个creg/z位。字段1505(位12至15)指定了分配给相同执行数据包中的N2单元244指令的4个creg/z位。字段1506(位5至11)是未使用/保留的。字段1507(位0至5)是被编码的一组唯一位(CCEX1)以标识条件代码扩展槽1。一旦检测到条件代码扩展槽1的这个唯一ID,就采用对应的creg/z位来控制相同执行数据包中的任何M1单元223、M2单元243、C单元245、N1单元224和N2单元244指令的条件执行。如表1中所示解释这些creg/z位。如果对应指令是有条件的(包括creg/z位),则条件代码扩展槽1中的对应位覆写指令中的条件代码位。注意,没有执行数据包能够具有指向具体执行单元的一个以上指令。没有指令的执行数据包能够包含一个以上条件代码扩展槽1。因此,creg/z位到功能单元指令的映射是清楚的。将creg/z位设置为等于“0000”,使该指令是无条件的。从而,被正确编码的条件代码扩展槽1能够使一些指令是有条件的并且一些是无条件的。
可行的是,条件代码扩展槽0与条件代码扩展槽1两者包括p位以限定如上结合图13描述的执行数据包。在优选的实施例中,如图14和图15中所例示的,代码扩展槽0和条件代码扩展槽1优选地具有总是被编码成1的位0(p位)。因此,条件代码扩展槽0和条件代码扩展槽1都不能是在执行数据包的最后一个指令槽中。
优选实施例包括两个不同的常数扩展槽。每个执行数据包能够包含这些唯一的32位常数扩展槽中的各一个,其包含27位将要作为高阶位与5位的常数字段1304串接以形成32位常数。如上述指令编码描述中提及的,只有一些指令将src2/cst字段1304限定为常数而不是源寄存器标识符。那些指令中的至少一部分可以采取常数扩展槽以扩展这个常数至32位(下面加以描述)。
图16例示了常数扩展槽0的字段。每个执行数据包可以包括常数扩展槽0的一个实例和常数扩展槽1的一个实例。图16例示了常数扩展槽0 1600包括两个字段。字段1601(位5至31)组成扩展的32位常数的最高有效的27个位,该常数包括目标指令字段1304作为五个最低有效位。字段1602(位0至4)被编码为一组唯一位(CSTX0)以标识常数扩展槽0。在优选实施例中,常数扩展槽0 1600仅能够被用于扩展相同执行数据包中的以下各项中的一个的常数:L1单元221指令、D1单元225指令中的数据、S2单元242指令、D2单元226指令中的偏移、M2单元243指令、N2单元244指令、分支指令、或C单元245指令。除了位0至4被编码为一组唯一位(CSTX1)以标识常数扩展槽1,常数扩展槽1是与常数扩展槽0类似。在优选实施例中,常数扩展槽1仅能够被用于扩展相同执行数据包中的以下各项中的一个的常数:L2单元241指令、D2单元226指令中的数据、S1单元222指令、D1单元225指令中的偏移、M1单元223指令或N1单元224指令。
如下使用常数扩展槽0和常数扩展槽1。目标指令必须是具有允许常数规范的类型。如现有技术中已知的,这通过利用常数的最低有效位代替一个输入操作数寄存器规范字段来实现。指令解码器113从指令操作码位确定这种被称为直接字段的情况。目标指令还包括指示指定的常数是否未扩展的位编码。这优选地是常数扩展位1307,其中,常数扩展位=0指示常数扩展启用并且常数扩展位=1指示常数扩展禁用。如果指令解码器113检测到常数扩展槽0或常数扩展槽1,则其针对对应于所检测到的常数扩展槽的指令进一步检查在那个执行数据包内的其它指令。优选地,只有在一条对应指令具有等于1的常数扩展位1307的情况下,才进行常数扩展。
图17是例示常数规范或扩展的这个实施例的部分框图1700。图17假设指令解码器113检测到相同执行数据包中的常数扩展槽以及对应指令。图17例示了包括指令1300(如图13中所例示的被编码)和常数扩展指令1600(如图16中所例示的被编码)的执行数据包1701。执行数据包1701中的其它指令与本说明书不相关并且用虚线例示。最终指令解码1710是图1中例示的指令解码器113的一部分,最终指令解码1710专注于针对功能单元1730的最终指令解码。功能单元1730能够是标量数据路径侧A 115功能单元(包括L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226)或矢量数据路径B 115功能单元(包括L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246)中的任意一个。最终指令解码1710接收标识常数扩展槽1600的常数扩展位1601和唯一位1602。最终指令解码1710接收来自指令1300的目标字段(dst)1303、第二输入操作数字段(src2)1304、第一输入操作数字段(src1)1305和操作码字段1306。指令解码器113的其它部分(图17中未例示)标识这些字段并且将这些字段转发至最终指令解码1710。最终指令解码1710解析这些字段并且生成针对寄存器文件1720和功能单元1730的输出。
寄存器文件1720代表功能单元1730可访问的寄存器。如图2中所例示的,每个功能单元1730可以访问对应的全局寄存器文件和对应的局部寄存器文件。目标字段1303、第二输入操作数字段1304和第一输入操作数字段1305的默认意义是相应的可访问寄存器内的寄存器号。如现有技术中已知的,这些字段的编码指向存储着数据的唯一寄存器。根据默认意义,第二输入操作数字段1304和第一输入操作数字段1305标识存储针对功能单元1730的输入操作数的寄存器。在合适的环境下(由这条指令的操作码1306的具体意义来确定),最终指令解码1710向寄存器文件1720提供对应的寄存器号。寄存器文件1720召回存储在所标识的寄存器中的数据并且向功能单元1730提供输入操作数。最终指令解码1710还向寄存器文件1720提供对应于目标字段1303的寄存器号。寄存器文件1720将通过功能单元1730所产生的结果存储至通过目标字段1303所标识的寄存器中。
最终指令解码1710向功能单元1730提供命令1711。命令1711对应于通过指令1300的操作码1306所限定的数据处理操作。最终指令解码1710解析操作码1306并且向功能单元1730提供控制功能单元1730以执行所标识的数据处理操作的对应的命令1711。功能单元1730执行所命令的数据处理操作,其将结果提供给寄存器文件1720。
最终指令解码1710还向功能单元1730提供常数1712。功能单元1730可以从两个源接收用于其操作的数据。这个数据可以被存储在寄存器文件1720中,如通过第二输入操作数字段1304和第一输入操作数字段1305所标识出。这个数据可以通过指令指定为常数。本领域已知的是,可以解析两个输入操作数字段1304和1305之一为常数操作数,而非寄存器号。这在本领域中被称为直接操作。在直接操作中,功能单元1730直接采取操作数字段作为输入操作数,而不是采取操作数字段作为从寄存器文件1720召回的数据。由于如1304和1305的典型的输入操作数字段具有比寄存器文件1720中能够存储的更少的位,这种直接操作限制了能够被指定的常数的大小和范围。本发明使相同执行数据包中的另一条指令能够指定或扩展指令的常数。与本领域中可能的相比,这允许指定额外的常数位。根据本发明,常数扩展位1601可以基于一个或更多个输入操作数字段指定一个或更多个常数或者用于扩展常数的位。
图18至图22例示了本发明的常数运算的示例。图18例示了根据常数扩展指令的src2/cst字段1303和常数扩展位1601形成32位常数。图19例示了根据常数扩展指令0的src1字段1304、src2/cst字段1303、常数扩展位1601,以及常数扩展指令1的常数扩展位1601形成64位常数。图20例示了仅使用常数扩展指令的常数扩展位1601形成常数。图21例示了形成两个常数,根据常数扩展指令1的src2/cst字段1304和常数扩展位1601形成第一常数,根据常数扩展指令1的src1字段1304和常数扩展位1601的常数形成第二常数。图22例示了根据常数扩展指令的常数扩展位1601形成两个常数。
图18例示了本发明的常数扩展的优选实施例。图18假设指令解码器113检测到相同执行数据包中的常数扩展槽以及对应指令。在图18中,指令解码器113向串接器1801提供来自常数扩展槽(位字段1601)的27个扩展位并且提供来自对应的指令的5个常数位(位字段1304)。串接器1801根据这两个部分形成单个32位的字。在优选的实施例中,常数扩展槽的字段1601组成27个最高有效位,并且目标指令的字段1304组成五个最低有效位。这个组合的32位的字被提供给复用器1802的一个输入端。来自对应指令字段1304的这5个常数位向复用器1802提供第二输入。复用器1802的选择通过是否使能扩展常数形成进行控制。在优选实施例中,这通过e位1307的状态指示。如果e位是1(已扩展),则复用器1802从串接器1801选择串接的32位输入。如果e位是0(未扩展),则复用器1802从对应的指令字段1304选择5个常数位。复用器1802将这个输出提供给符号扩展单元1803的输入端。
符号扩展单元1803根据来自复用器1803的输入形成最终操作数值。符号扩展单元1803接收控制输入标量/矢量和数据大小。该标量/矢量输入指示对应的指令是标量指令还是矢量指令。数据路径侧A 115的功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226)仅能够执行标量指令。指向这些功能单元中的一个的任何指令是标量指令。数据路径侧B功能单元L2单元241、S2单元242、M2单元243、N2单元244和C单元245可以执行标量指令或矢量指令。指令解码器113根据操作码1306确定指令是标量指令还是矢量指令。P单元246仅能够执行标量指令。数据大小可以是8位(字节B)、16位(半个字H)、32位(字W)或64位(双字D)。
表2列出了针对优选实施例中的各个选项的符号扩展单元1803的操作。
Figure GDA0001938391070000221
Figure GDA0001938391070000231
表2
在一个替代性实施例中,基于不只一个常数扩展槽中的数据扩展常数。图19是例示了常数扩展的这个实施例的部分框图1900。图19假设指令解码器113检测到相同执行数据包中的常数扩展槽0、常数扩展槽1和对应指令。指令解码器113向第一串接器1901提供来自常数扩展槽1(位字段1601)的27个扩展位、来自常数扩展槽0(位字段1601)的27个扩展位、来自对应指令的5个常数位(位字段1304)和来自位字段1305的5个位。第一串接器1901根据这四个部分形成单个64位的字。在优选实施例中,来自常数扩展槽1的字段1601是最高有效位,来自常数扩展槽0的字段1601是接下来的最低有效位,字段1304作为接下来的最低有效位并且字段1305作为最低有效位。这个组合的64位的字被提供给复用器1903的一个输入端。指令解码器113将来自对应指令的5个常数位(位字段1304)和来自位字段1305的5个位提供至第二串接器1902。第二串接器1902根据这两个部分形成单个10位的字。在优选实施例中,字段1304是最高有效位,并且字段1305是最低有效位。将这个组合的10位的字提供给复用器1903的第二输入端。复用器1802的选择通过是否使能扩展常数形成控制。在优选实施例中,这通过常数扩展位(e位)的状态指示。如果常数扩展位是1(已扩展),则复用器1903从第一串接器1901选择串接的64位输入。如果常数扩展位是0(未扩展),则复用器1903从串接器1902选择串接的10位输入。复用器1903将这个输出提供给符号扩展单元1904的输入端。符号扩展单元1904如上述的符号扩展单元1803一样运行。
图20例示了本发明的又一实施例。部分框图2000选择来自常数扩展槽的完全指定的常数或常数“0”。图20假设指令解码器113检测到相同执行数据包中的常数扩展槽以及对应指令。指令解码器113向复用器2001的一个输入端提供来自常数扩展槽(位字段1601)的27个扩展位。复用器2001的另一个输入端接收常数“0”。复用器2002的选择通过是否使能扩展常数形成控制。在优选实施例中,这通过常数扩展位(e位)的状态指示。如果常数扩展位是1(已扩展),则复用器2002选择来自常数扩展槽的位字段1601的位。如果常数扩展位是0(未扩展),则复用器2001选择常数“0”。复用器2001将这个输出提供给符号扩展单元2002的输入端。符号扩展单元2002如上述的符号扩展单元1803一样运行。
图21例示了根据本发明的针对常数形成的另一替代方案。部分框图2100形成两个常数。图21假设指令解码器113检测到相同执行数据包中的常数扩展槽0、常数扩展槽1以及对应指令。指令解码器113向第一串接器2101提供来自常数扩展槽1(位字段1601)的27个扩展位和5个常数位(位字段1304)。第一串接器2101根据这两个部分形成单个32位的字。在优选实施例中,来自常数扩展槽1的字段1601是最高有效位,并且src2/cst字段1304是最低有效位。第一串接器2101的输出提供第一符号扩展2111,该第一符号扩展2111如符号扩展单元1803一样运行,产生第一常数操作数。
指令解码器113向第二串接器2102提供来自常数扩展槽0(位字段1601)的27个扩展位和来自对应的指令的位字段1305的5个位。第二串接器2102根据这两个部分形成单个32位的字。在优选实施例中,来自常数扩展槽0的字段1601是最高有效位,并且字段1305是最低有效位。第二串接器2102的输出提供第二符号扩展2112,该第二符号扩展2112如符号扩展单元1803一样运行,产生第一常数操作数。
图22例示了根据常数扩展指令的常数扩展位1601形成两个常数。部分框图2200根据常数扩展位形成两个常数。图22假设指令解码器113检测到相同执行数据包中的常数扩展槽以及对应指令。指令解码器113提供来自部分框图2100的27个扩展位,形成两个常数。图21假设指令解码器113检测到相同执行数据包中的常数扩展槽0、常数扩展槽1以及对应指令。指令解码器113向位解析器2201提供来自常数扩展槽1(位字段1601)的27个扩展位。位解析器2201通过指令解码器113控制以将这个位字段解析成称为第三操作数src3和第四操作数src4的两个常数。在一个优选实施例中,这些中的每个是被用作附加寄存器号的5位字段,以访问寄存器文件1720从而支持四操作数指令。如通过操作码1306所指示的指令的特性确定了位字段1601位到两个常数的映射。每个所得的常数能够是位字段1601的(可能重叠的)子集。在这些常数中的一个中不是位字段1601的所有位需要出现。位解析器2201将位字段1601的未使用位丢弃。
可行的是,常数扩展槽0与常数扩展槽1两者包括p位以如上结合图13所述限定执行数据包。在优选的实施例中,如在条件码扩展槽的情况下,常数扩展槽0和常数扩展槽1优选地具有总是被编码成1的位0(p位)。因此常数扩展槽0和常数扩展槽1都不能是在执行数据包的最后一个指令槽中。
对于执行数据包技术上可行的是,包括常数扩展槽0或1,以及不只一个对应指令标记的扩展常数(e位=1)。针对常数扩展槽0,这将指执行数据包中的以下项中的不只一项具有常数扩展位1:L1单元221指令、D1单元225指令中的数据、S2单元242指令、D2单元226指令中的偏移、M2单元243指令或N2单元244指令。针对常数扩展槽1,这将指执行数据包中的以下项中的不只一项具有常数扩展位1:L2单元241指令、D2单元226指令中的数据、S1单元222指令、D1单元225指令中的偏移、M1单元223指令或N1单元224指令。将相同常数扩展提供给不只一条指令不被期望是有用的功能。因此,在一个实施例中,指令解码器113可以确定这种情况为无效操作并且不被支持。可替代地,在常数扩展槽的相同扩展位被应用到每个对应功能单元指令标识的扩展常数的情况下,支持这种组合。
专用矢量判定指令使用判定寄存器文件234中的寄存器以控制矢量运算。在当前实施例中,所有这些SIMD矢量判定指令对所选定的数据大小运算。该数据大小可以包括字节(8位)数据、半字(16位)数据、字(32位)数据、双字(64位)数据、四倍字(128位)数据和半矢量(256位)数据。判定寄存器的每个位控制是否对数据的对应字节进行SIMD操作。P单元245的运行基于不只一个矢量比较允许各种复合矢量SIMD运算。例如,能够使用两次比较进行范围确定。将候选矢量与第一矢量参考进行比较,该第一矢量参考具有包装在第一数据寄存器中的范围的最小值。将候选矢量与第二参考矢量进行第二次比较,该第二参考矢量具有包装在第二数据寄存器中的范围的最大值。这两个结果判定寄存器的逻辑组合将允许矢量条件运算以确定候选矢量的每个数据部分在范围内还是在范围外。
L1单元221、S1单元222、L2单元241、S2单元242和C单元245通常运行在单指令多数据(SIMD)模式中。在这种SIMD模式下,相同指令被应用于来自两个操作数的已包装数据。每个操作数保存被设置在预定槽内的多个数据元素。通过在数据界限处的进位控制启用SIMD运算。这种进位控制启用对不同的数据宽度进行运算。
图23例示了进位控制。与(AND)门2301接收操作数宽算术逻辑单元内的位N的进位输出(64位用于标量数据路径侧A 115功能单元并且512位用于矢量数据路径侧B 116功能单元)。与门2301还接收进位控制信号,下面将进一步进行详细解释。与门2301的输出被提供给操作数宽算术逻辑单元的位N+1的进位输入。与门(如与门2301)被设置在可能的数据界限处的每对位之间。例如,对于8位数据(如与门),这种与门将在位7与8、位15与16、位23与24等之间。每个这种与门接收对应的进位控制信号。如果数据大小是具有最小值,则每个进位控制信号是0,这有效地阻止了相邻位之间的进位传输。如果所选择的数据大小需要两个算术逻辑单元部分,则对应的进位控制信号是1。下表3针对如通过矢量数据路径侧B 116功能单元使用的512位宽操作数的情况示出了示例进位控制信号,该512位宽操作数能够被分成8位、16位、32位、64位、128位或256位的部分。在表3中,较高的32位控制较高位(位128至511)进位,并且较低的32位控制较低位(位0至127)进位。不需要控制最高有效位的进位输出,因此仅需要63个进位控制信号。
Figure GDA0001938391070000261
表3
在本领域中典型的是对2的整数幂(2N)的数据大小进行运算。然而,这种进位控制技术不限于2的整数幂。本领域技术人员将理解如何将这种技术应用于其它数据大小和其它操作数宽度。

Claims (27)

1.一种用于响应于处理包括第一指令和第二指令的指令的执行数据包而形成常数的方法,所述方法包括:
基于所述第二指令的第二字段,确定所述第二指令是常数扩展槽指令;
确定所述第一指令中的常数扩展位字段是否指示是第一值或第二值的值;
通过以下方式选择第三值和第四值中的一个:
当所述第一指令中的所述常数扩展位字段指示所述第一值时,选择所述第三值,所述第三值等于0值;
当所述第一指令中的所述常数扩展位字段指示所述第二值时,选择所述第四值,所述第四值等于存储在所述第二指令的第一字段中的位指示的值;以及
基于所述第三值和所述第四值中的所选择的一个以及所述第一指令包括的常数值形成所述常数;
其中,当所述第一指令中的所述常数扩展位字段指示所述第一值时,所述第四值不被用于形成所述常数,并且当所述第一指令中的所述常数扩展位字段指示所述第二值时,所述第三值不被用于形成所述常数。
2.根据权利要求1所述的方法,其中,所述第一指令中的所述常数扩展位字段包括单个位。
3.根据权利要求2所述的方法,其中,所述第一值是逻辑0,并且所述第二值是逻辑1。
4.根据权利要求3所述的方法,还包括:
将所述第三值提供给多路复用器的第一输入端;
将所述第四值提供给所述多路复用器的第二输入端;
将所述第一指令中的所述常数扩展位字段指示的值提供给所述多路复用器的第三输入端,所述第三输入端是所述多路复用器的控制输入端;以及
在所述多路复用器的输出端处输出输出值,其中取决于所述控制输入端,所述输出值是所述第三值和所述第四值中的所述选择的一个。
5.根据权利要求4所述的方法,还包括:
确定所述第一指令是标量指令还是矢量指令;
基于所述第一指令是标量指令还是矢量指令,对所述输出值进行符号扩展。
6.根据权利要求5所述的方法,其中,所述第一指令和所述第二指令是32位指令,并且其中,基于所述第一指令是标量指令还是矢量指令对所述输出值进行符号扩展包括:
当所述第一指令是标量指令时,将所述输出值符号扩展为64位;以及
当所述第一指令是矢量指令时,将所述输出值符号扩展为指示的操作数大小,并且将符号扩展的输出值复制到512位上。
7.根据权利要求1所述的方法,还包括:
确定所述第一指令是标量指令还是矢量指令;
基于所述第一指令是标量指令还是矢量指令,对所述第三值和所述第四值中的所述选择的一个进行符号扩展。
8.根据权利要求7所述的方法,其中,所述第一指令和所述第二指令是32位指令,并且其中,基于所述第一指令是标量指令还是矢量指令对所述第一值和所述第二值中的所述选择的一个进行符号扩展包括:
当所述第一指令是标量指令时,将所述第一值和所述第二值中的所述选择的一个符号扩展为64位;以及
当所述第一指令是矢量指令时,将所述第一值和所述第二值中的所述选择的一个符号扩展为指示的操作数大小,并且将符号扩展的输出值复制到512位上。
9.根据权利要求8所述的方法,其中,所述操作数大小被选择为字节、半字、字和双字中的一个。
10.根据权利要求1所述的方法,其中,所述执行数据包中的每个指令是32位,并且其中:
所述第二指令的所述第一字段是27位;以及
所述第二指令的所述第二字段是5位。
11.一种用于响应于处理包括第一指令和作为常数扩展指令的第二指令的指令的执行数据包而使用常数扩展指令形成第一常数和第二常数的方法,所述方法包括:
基于所述第二指令的第二字段,确定所述第二指令是常数扩展槽指令;
确定所述第一指令中的常数扩展位是否包含指示要形成所述第一常数和所述第二常数的第一值;以及
当所述第一指令中的所述常数扩展位包含所述第一值时:
解析存储在所述常数扩展指令的第一字段中的多个位的至少一部分,以确定常数扩展;
基于所述常数扩展,形成所述第一常数和所述第二常数;
提供所述第一常数作为用于执行所述第一指令的第一操作数;以及
提供所述第二常数作为用于执行所述第一指令的第二操作数。
12.根据权利要求11所述的方法,其中,当所述第一指令中的所述常数扩展位存储所述第一值时,不使用存储在所述常数扩展指令的所述第一字段中的任何位来扩展所述第一指令的任何字段中的常数。
13.根据权利要求11所述的方法,其中,所述第一指令包括存储用于执行所述第一指令的第三操作数的第一字段,所述第三操作数与所述第一操作数和所述第二操作数分开。
14.根据权利要求13所述的方法,其中,所述第一指令还包括存储用于执行所述第一指令的第四操作数的第二字段,所述第四操作数与所述第一操作数、所述第二操作数和所述第三操作数分开。
15.根据权利要求11所述的方法,其中,解析存储在所述常数扩展指令的所述第一字段中的多个位的至少一部分包括解析所述常数扩展指令的所述第一字段中的所有位。
16.根据权利要求11所述的方法,其中,解析存储在所述常数扩展指令的所述第一字段中的多个位的至少一部分包括解析少于所述常数扩展指令的所述第一字段中的所有位,并且其中,未被解析为所述第一常数和所述第二常数的位被丢弃。
17.根据权利要求11所述的方法,其中,所述常数扩展指令包括与所述常数扩展指令的所述第一字段分开的第二字段,所述常数扩展指令的所述第二字段包含用于标识所述常数扩展指令的一组唯一位。
18.根据权利要求17所述的方法,其中,所述常数扩展指令的所述第一字段和所述第二字段是所述常数扩展指令的仅有字段。
19.一种数据处理装置,包括:
多个功能单元,每个功能单元可操作以对指令指定的数据执行指令指定的数据处理操作;
至少一个数据寄存器文件,其连接到每个功能单元,每个数据寄存器文件包括用于存储数据的数据寄存器,并且每个数据寄存器由相应的寄存器号标识;
指令取回单元,其用于从存储器取回指令;
指令分派单元,其用于确定指令的执行数据包,以同时分派到所述功能单元的第一功能单元,所述执行数据包包括第一指令和第二指令,所述第二指令是常数扩展指令;
指令解码单元,其用于通过以下方式解码所述第一指令:
基于所述第二指令的第二字段,确定所述第二指令是常数扩展槽指令;
确定所述第一指令中的常数扩展位是否包含第一值,所述第一值指示要从所述常数扩展指令形成用于执行所述第一指令的第一常数和第二常数;以及
当所述第一指令中的所述常数扩展位包含所述第一值时:
解析存储在所述常数扩展指令的第一字段中的多个位的至少一部分,以确定常数扩展;
基于所述常数扩展,形成所述第一常数和所述第二常数;
提供所述第一常数作为用于由所述第一功能单元执行所述第一指令的第一操作数;以及
提供所述第二常数作为用于由所述第一功能单元执行所述第一指令的第二操作数。
20.根据权利要求19所述的数据处理装置,其中,当所述第一指令中的所述常数扩展位存储所述第一值时,不使用存储在所述常数扩展指令的所述第一字段中的任何位来扩展所述第一指令的任何字段中的常数。
21.根据权利要求19所述的数据处理装置,其中,所述第一指令包括存储用于由所述第一功能单元执行所述第一指令的第三操作数的第一字段,所述第三操作数与所述第一操作数和所述第二操作数分开。
22.根据权利要求21所述的数据处理装置,其中,所述第一指令还包括存储用于由所述第一功能单元执行所述第一指令的第四操作数的第二字段,所述第四操作数与所述第一操作数、所述第二操作数和所述第三操作数分开。
23.根据权利要求19所述的数据处理装置,其中,解析存储在所述常数扩展指令的所述第一字段中的多个位的至少一部分包括解析所述常数扩展指令的所述第一字段中的所有位。
24.根据权利要求19所述的数据处理装置,其中,解析存储在所述常数扩展指令的所述第一字段中的多个位的至少一部分包括解析少于所述常数扩展指令的所述第一字段中的所有位,并且其中,所述指令解码单元丢弃所述常数扩展指令的所述第一字段中的未被解析为所述第一常数和所述第二常数的位。
25.根据权利要求19所述的数据处理装置,其中,所述常数扩展指令包括与所述常数扩展指令的所述第一字段分开的第二字段,所述常数扩展指令的所述第二字段包含一组唯一位,以使所述指令解码单元能够标识所述常数扩展指令。
26.根据权利要求25所述的数据处理装置,其中,所述常数扩展指令的所述第一字段和所述第二字段是所述常数扩展指令的仅有字段。
27.根据权利要求19所述的数据处理装置,其中,所述数据处理装置包括数字信号处理器。
CN201610922480.6A 2015-10-22 2016-10-21 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法 Active CN106610817B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210633360.XA CN114968369A (zh) 2015-10-22 2016-10-21 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/920,402 US10620957B2 (en) 2015-10-22 2015-10-22 Method for forming constant extensions in the same execute packet in a VLIW processor
US14/920,402 2015-10-22

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202210633360.XA Division CN114968369A (zh) 2015-10-22 2016-10-21 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法

Publications (2)

Publication Number Publication Date
CN106610817A CN106610817A (zh) 2017-05-03
CN106610817B true CN106610817B (zh) 2022-06-24

Family

ID=58561602

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202210633360.XA Pending CN114968369A (zh) 2015-10-22 2016-10-21 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法
CN201610922480.6A Active CN106610817B (zh) 2015-10-22 2016-10-21 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202210633360.XA Pending CN114968369A (zh) 2015-10-22 2016-10-21 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法

Country Status (2)

Country Link
US (3) US10620957B2 (zh)
CN (2) CN114968369A (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11182200B2 (en) 2017-06-29 2021-11-23 Texas Instruments Incorporated Streaming engine with short cut start instructions
US11288067B2 (en) * 2019-05-24 2022-03-29 Texas Instruments Incorporated Vector reverse
US10963252B2 (en) * 2019-05-24 2021-03-30 Texas Instruments Incorporated Vector maximum and minimum with indexing

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
CN1473300A (zh) * 2000-09-29 2004-02-04 智能网络存储接口系统和装置
CN1477520A (zh) * 2002-08-21 2004-02-25 先进数字芯片株式会社 具有扩展指令的中央处理器
US6751724B1 (en) * 2000-04-19 2004-06-15 Motorola, Inc. Method and apparatus for instruction fetching
CN1766834A (zh) * 2005-01-20 2006-05-03 西安电子科技大学 双算术逻辑单元精简指令集8位微控制器
CN101419713A (zh) * 2007-10-24 2009-04-29 株式会社理光 图像处理装置

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5859994A (en) * 1992-08-10 1999-01-12 Intel Corporation Apparatus and method for modifying instruction length decoding in a computer processor
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US5920380A (en) 1997-12-19 1999-07-06 Sandia Corporation Apparatus and method for generating partially coherent illumination for photolithography
US6292845B1 (en) * 1998-08-26 2001-09-18 Infineon Technologies North America Corp. Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively
US6282633B1 (en) * 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
US6442701B1 (en) * 1998-11-25 2002-08-27 Texas Instruments Incorporated Power saving by disabling memory block access for aligned NOP slots during fetch of multiple instruction words
US6687806B1 (en) * 2000-06-15 2004-02-03 Advanced Micro Devices, Inc. Apparatus and method for generating 64 bit displacement and immediate values
US6922773B2 (en) * 2000-12-29 2005-07-26 Stmicroelectronics, Inc. System and method for encoding constant operands in a wide issue processor
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US6826676B2 (en) * 2001-11-19 2004-11-30 Intel Corporation Extending immediate operands across plural computer instructions with indication of how many instructions are used to store the immediate operand
US6957321B2 (en) * 2002-06-19 2005-10-18 Intel Corporation Instruction set extension using operand bearing NOP instructions
JP3627725B2 (ja) * 2002-06-24 2005-03-09 セイコーエプソン株式会社 情報処理装置及び電子機器
GB2411973B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US7555554B2 (en) * 2004-08-06 2009-06-30 Microsoft Corporation System and method for generating selectable extension to media transport protocol
JP3867804B2 (ja) * 2005-03-22 2007-01-17 セイコーエプソン株式会社 集積回路装置
US7761694B2 (en) * 2006-06-30 2010-07-20 Intel Corporation Execution unit for performing shuffle and other operations
US7870339B2 (en) * 2008-01-11 2011-01-11 International Business Machines Corporation Extract cache attribute facility and instruction therefore
US8060724B2 (en) * 2008-08-15 2011-11-15 Freescale Semiconductor, Inc. Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor
US9274796B2 (en) * 2009-05-11 2016-03-01 Arm Finance Overseas Limited Variable register and immediate field encoding in an instruction set architecture
US9678754B2 (en) * 2010-03-03 2017-06-13 Qualcomm Incorporated System and method of processing hierarchical very long instruction packets
JP5971635B2 (ja) * 2011-01-25 2016-08-17 エヌエックスピー カナダ インコーポレイテッド ベクトルユニット共有の装置および方法
US20120284488A1 (en) * 2011-05-03 2012-11-08 Qualcomm Incorporated Methods and Apparatus for Constant Extension in a Processor
KR101541156B1 (ko) * 2013-11-13 2015-08-03 한국전자통신연구원 다차원 기법의 시공간 결정적 태스크 스케줄링 장치 및 방법
KR102270790B1 (ko) * 2014-10-20 2021-06-29 삼성전자주식회사 데이터 처리 방법 및 장치
US20160125257A1 (en) * 2014-11-03 2016-05-05 Texas Instruments Incorporated Optimized Fast Feature Detection for Vector Processors

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US6751724B1 (en) * 2000-04-19 2004-06-15 Motorola, Inc. Method and apparatus for instruction fetching
CN1473300A (zh) * 2000-09-29 2004-02-04 智能网络存储接口系统和装置
CN1477520A (zh) * 2002-08-21 2004-02-25 先进数字芯片株式会社 具有扩展指令的中央处理器
CN1766834A (zh) * 2005-01-20 2006-05-03 西安电子科技大学 双算术逻辑单元精简指令集8位微控制器
CN101419713A (zh) * 2007-10-24 2009-04-29 株式会社理光 图像处理装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Fast and Efficient Implementation of AES via Instruction Set Extensions;A.J. Elbirt;《21st International Conference on Advanced Information Networking and Applications Workshops (AINAW"07)》;20070827;第1-8页 *
一种针对位操作密集应用的扩展指令自动选择方法;张吉豫等;《电子学报》;20120229;第40卷(第2期);第209-214页 *

Also Published As

Publication number Publication date
US20230325189A1 (en) 2023-10-12
CN114968369A (zh) 2022-08-30
CN106610817A (zh) 2017-05-03
US11681532B2 (en) 2023-06-20
US20200310807A1 (en) 2020-10-01
US10620957B2 (en) 2020-04-14
US20170115989A1 (en) 2017-04-27

Similar Documents

Publication Publication Date Title
US9652392B2 (en) Using L1 cache as re-order buffer
US11397583B2 (en) Conditional execution specification of instructions using conditional extension slots in the same execute packet in a VLIW processor
US20200394038A1 (en) Look up table with data element promotion
US20230325189A1 (en) Forming Constant Extensions in the Same Execute Packet in a VLIW Processor
CN117632257A (zh) 将有效位通道作为矢量断言暴露于cpu
US20240176620A1 (en) Look-up table write
US11614940B2 (en) Vector maximum and minimum with indexing
US20230221955A1 (en) Vector bit transpose
US20200371793A1 (en) Vector store using bit-reversed order
US11900112B2 (en) Vector reverse

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant