CN106610817A - 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法 - Google Patents
用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法 Download PDFInfo
- Publication number
- CN106610817A CN106610817A CN201610922480.6A CN201610922480A CN106610817A CN 106610817 A CN106610817 A CN 106610817A CN 201610922480 A CN201610922480 A CN 201610922480A CN 106610817 A CN106610817 A CN 106610817A
- Authority
- CN
- China
- Prior art keywords
- instruction
- constant
- field
- state
- extended
- 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 66
- 238000012545 processing Methods 0.000 claims abstract description 64
- 230000006870 function Effects 0.000 claims description 14
- 239000000203 mixture Substances 0.000 claims description 12
- 230000015572 biosynthetic process Effects 0.000 claims description 9
- 238000010977 unit operation Methods 0.000 claims 1
- 239000013598 vector Substances 0.000 description 96
- 230000037361 pathway Effects 0.000 description 57
- 101100385237 Mus musculus Creg1 gene Proteins 0.000 description 26
- 210000003771 C cell Anatomy 0.000 description 23
- 238000011068 loading method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 101100058681 Drosophila melanogaster Btk29A gene Proteins 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000000052 comparative effect Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 208000034630 Calculi Diseases 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
- 208000008281 urolithiasis Diseases 0.000 description 1
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
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30156—Special purpose encoding of instructions, e.g. Gray coding
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/30181—Instruction operation extension or modification
-
- 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/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49994—Sign extension
-
- 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/3001—Arithmetic instructions
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction 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)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请公开用于采取VLIW处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法。在超长指令字(VLIW)中央处理单元(100)中,指令被分组成并行执行的执行数据包。每条指令的一个字段(1304)可以将直接常数指定作为操作数。指令解码器(1710)确定所述执行数据包内的另一指令是否包括常数扩展位。这种指令(1600)包括常数扩展位(1601)和预定字段(1602),所述预定字段将所述指令标记为包含常数扩展位。串接器(1801)将直接常数位(1304)和扩展常数位(1601)组合,以形成扩展的常数。复用器(1802)根据原始指令是否启用常数扩展来选择直接字段位(1304)或者所述扩展常数作为操作数。所选择的常数基于选定的数据大小可选地是符号扩展(1803)。
Description
相关申请
本申请是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内的功能单元对指令指定的数据执行指令指定的数据处理操作,并且将结果存储在指令指定的一个或更多个数据寄存器中。标量数据路径侧A 115和矢量数据路径侧B 116中的每个包括多个功能单元,所述多个功能单元优选地并行运行。下面将结合图2对这些进行进一步详述。在标量数据路径侧A 115与矢量数据路径侧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以及到矢量数据路径侧B 116。
在本发明的优选实施例中,根据标题为“包括缓存和直接可寻址静态随机存取存储器的统一存储器系统架构(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中的指令指定寄存器。
标量数据路径侧A 115包括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局部寄存器文件222、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局部寄存器文件222、M2/N2/C局部寄存器文件233或判定寄存器文件234中的指令指定寄存器。
矢量数据路径侧B 116包括M2单元243。M2单元243一般接受两个512位的操作数并且产生一个512位的结果。这两个操作数各自从全局矢量寄存器文件231中或者M2/N2/C局部寄存器文件233中的指令指定寄存器召回。除了关于较宽的512位数据,M2单元243优选地执行与M1单元222相似的指令。结果可以被写入全局矢量寄存器文件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/D1局部标量寄存器文件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、M3单元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单元233、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)允许L1/S1局部寄存器文件212包括高达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单元233、N2单元244和C单元245能够从M2/N2/C局部矢量寄存器文件233读取。
交叉路径117允许标量数据路径侧A 115与矢量数据路径侧B 116之间的受限的数据交换。在每个运算周期,能够从全局标量寄存器文件A 211召回一个64位的数据字,以用作矢量数据路径侧B 116的一个或更多个功能单元的操作数,并且能够从全局矢量寄存器文件231召回一个64位的数据字,以用作标量数据路径侧A 115的一个或更多个功能单元的操作数。任何标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226)可以从全局矢量寄存器文件231读取64位的操作数。这个64位的操作数是全局矢量寄存器文件232的所访问的寄存器内的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单元224和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中所示。
表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的操作。
表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个进位控制信号。
表3
在本领域中典型的是对2的整数幂(2N)的数据大小进行运算。然而,这种进位控制技术不限于2的整数幂。本领域技术人员将理解如何将这种技术应用于其它数据大小和其它操作数宽度。
Claims (92)
1.一种针对固定长度指令集中的指令指定常数的方法,包括以下步骤:
在具有固定长度的指令的指令操作码中设置指示常数规范的位编码;
在具有所述固定长度的常数扩展指令的常数字段中存储常数;
取回预定数量的固定长度指令;
确定将哪些取回的指令作为执行数据包同时地分派至对应功能单元;以及检测到具有指示常数规范的位编码的指令之后,根据在与那条指令相同的执行数据包中的常数扩展指令的所述常数字段,形成针对那条指令的常数。
2.根据权利要求1所述的针对固定长度指令集中的指令指定常数的方法,包括扩展嵌入在所述指令中的常数的大小,进一步包括以下步骤:
在所述指令的所述指令操作码中设置指示常数扩展的位编码;
在所述指令的第一常数字段中存储常数的第一部分;
在常数扩展指令的常数字段中存储常数的所述步骤包括在所述常数扩展指令的第二常数字段中存储所述常数的第二部分;以及
检测到具有指示常数扩展的位编码的指令之后,根据在具有那条指令的执行数据包中的那条指令的所述第一常数字段和常数扩展指令的所述第二部分字段形成针对那条指令的扩展常数。
3.根据权利要求2所述的方法,其中:
形成扩展常数的所述步骤包括:串接所述第一常数字段和所述第二常数字段,形成较大的常数。
4.根据权利要求3所述的方法,其中:
串接的所述步骤采取所述第一常数字段作为最低有效位并且采取所述第二常数字段作为最高有效位。
5.根据权利要求2所述的方法,其中:
设置指示常数扩展的位编码的所述步骤包括在第一状态中设置预定常数扩展位;以及
形成针对所述指令的扩展常数的所述步骤包括:
如果所述指令的所述预定常数位具有所述第一状态,则根据具有那条指令的所述执行数据包中的那条指令的所述第一常数字段和所述扩展指令的所述第二常数字段形成常数,以及
如果所述指令的所述预定常数位具有与所述第一状态相反的第二状态,则根据那条指令的所述第一常数字段形成常数。
6.根据权利要求2所述的方法,其中:
存储所述常数的所述第二部分的所述步骤包括:在所述常数扩展指令的第一字段中存储所述常数的所述第二部分并且在所述常数扩展指令的第二字段中存储常数扩展指令标识符。
7.根据权利要求2所述的方法,其中:
确定将执行数据包中的哪些指令同时地分派的所述步骤包括复查取回的指令的位编码。
8.根据权利要求7所述的方法,其中:
确定将执行数据包中的哪些指令同时地分派的所述步骤包括:
如果指令的预定位具有第一状态,则确定所述指令是在与下一个较高存储器地址处的指令相同的执行数据包中,以及
如果所述指令的所述预定位具有与所述第一状态相反的第二状态,则确定所述指令是在与所述下一个较高存储器地址处的指令不同的执行数据包中。
9.根据权利要求8所述的方法,其中:
所述常数扩展指令的所述预定位能够具有所述第一状态或所述第二状态。
10.根据权利要求8所述的方法,其中:
所述常数扩展指令的所述预定位能够仅具有所述第一状态。
11.根据权利要求2所述的方法,其中:
在第一常数字段中存储常数的第一部分的所述步骤包括在所述指令的操作数字段中存储常数;以及
所述方法进一步包括:
在所述指令的指令操作码中设置位编码,所述位编码可选地指示常数运算或者非常数运算;
检测到具有指示常数运算而不是指示常数扩展的位编码的指令之后,根据那条指令的所述第一常数字段形成针对那条指令的常数;以及
检测到具有指示非常数运算的位编码的指令之后,从对应于所述操作数字段的寄存器召回针对那条指令的操作数。
12.根据权利要求2所述的方法,其中:
所述指令中的每条指令控制多个功能单元中预定的一个功能单元上的数据处理操作;
所述常数扩展指令包括对应于所述多个功能单元的第一子集的第一常数扩展指令以及对应于所述多个功能单元的与所述第一子集不同的第二子集的第二常数扩展指令;以及
形成针对那条指令的扩展常数的所述步骤根据那条指令的所述第一常数字段以及以下各项形成所述扩展常数:
如果所述指令的所述功能单元在所述第一子集中,在具有那条指令的所述执行数据包中的所述第一常数扩展指令的第二常数字段,以及
如果所述指令的所述功能单元在所述第二子集中,在具有那条指令的所述执行数据包中的所述第二常数扩展指令的第二常数字段部分。
13.根据权利要求12所述的方法,其中:
存储所述常数的所述第二部分的所述步骤包括:
在第一常数扩展指令的第一字段中存储所述常数的所述第二部分并且在所述第一常数扩展指令的第二字段中存储第一常数扩展指令标识符,以及
在第二常数扩展指令的第一字段中存储所述常数的所述第二部分并且在所述第二常数扩展指令的第二字段存储第二常数扩展指令标识符。
14.根据权利要求1所述的针对固定长度指令指定常数的方法,包括扩展嵌入在所述指令中的常数的大小,进一步包括以下步骤:
在所述指令的指令操作码中设置指示常数扩展的位编码;
在所述指令的第一常数字段中存储常数的第一部分;
在第一常数扩展指令的第二常数字段中存储所述常数的第二部分;
在第二常数扩展指令的第三常数字段中存储所述常数的第三部分;以及
检测到具有指示常数扩展的位编码的指令之后,根据以下各项形成针对那条指令的扩展常数:那条指令的所述第一常数字段的所述第一部分,在具有那条指令的所述执行数据包中的第一常数扩展指令的所述第二常数字段的所述第二部分和在具有那条指令的所述执行数据包中的第二常数扩展指令的所述第三常数字段的所述第三部分。
15.根据权利要求14所述的方法,其中:
形成扩展常数的所述步骤包括:串接所述第一常数字段、所述第二常数字段和所述第三常数字段,形成较大的常数。
16.根据权利要求15所述的方法,其中:
串接的所述步骤采取所述第一常数字段作为最低有效位,采取所述第二常数字段作为接下来的最高有效位以及采取所述第三字段作为最高有效位。
17.根据权利要求14所述的方法,其中:
设置指示常数扩展的位编码的所述步骤包括在第一状态中设置预定常数扩展位;以及
形成针对所述指令的扩展常数的所述步骤包括:
如果所述指令的所述预定常数位具有所述第一状态,则根据以下各项形成常数:那条指令的所述第一常数字段,具有那条指令的所述执行数据包中的第一常数扩展指令的所述第二部分字段和具有那条指令的所述执行数据包中的第二常数扩展指令的所述第三部分字段,以及
如果所述指令的所述预定常数位具有与所述第一状态相反的第二状态,则根据那条指令的所述第一常数字段形成常数。
18.根据权利要求14所述的方法,其中:
存储所述常数的所述第二部分的所述步骤包括:在所述第一常数扩展指令的第一字段中存储所述常数的所述第二部分,以及在所述第一常数扩展指令的第二字段中存储第一常数扩展指令标识符;以及
存储所述常数的所述第三部分的所述步骤包括:在所述第一常数扩展指令的第一字段中存储所述常数的所述第三部分,以及在所述第二常数扩展指令的第二字段中存储第二常数扩展指令标识符。
19.根据权利要求14所述的方法,其中:
确定将执行数据包中的哪些指令同时地分派的所述步骤包括复查取回的指令的位编码。
20.根据权利要求19所述的方法,其中:
确定将执行数据包中的哪些指令同时地分派的所述步骤包括:
如果指令的预定位具有第一状态,则确定所述指令是在与下一个较高存储器地址处的指令相同的执行数据包中,以及
如果所述指令的所述预定位具有与所述第一状态相反的第二状态,则确定所述指令是在与所述下一个较高存储器地址处的指令不同的执行数据包中。
21.根据权利要求20所述的方法,其中:
所述第一常数扩展指令的所述预定位能够具有所述第一状态或所述第二状态;以及
所述第二常数扩展指令的所述预定位能够具有所述第一状态或所述第二状态。
22.根据权利要求20所述的方法,其中:
所述第一常数扩展指令的所述预定位能够仅具有所述第一状态;以及
所述第二常数扩展指令的所述预定位能够仅具有所述第一状态。
23.根据权利要求14所述的方法,其中:
在第一常数字段中存储常数的第一部分的所述步骤包括:在所述指令中的第一操作数字段和第二操作数中存储常数;以及
所述方法进一步包括:
在所述指令的所述指令操作码中设置位编码,所述位编码可选地指示常数运算或者非常数运算;
检测到具有指示常数运算而不是指示常数扩展的位编码的指令之后,
根据那条指令的所述第一常数字段形成针对那条指令的常数;以及
检测到具有指示非常数运算的位编码的指令之后,从对应于所述第一操作数字段的寄存器召回针对那条指令的第一操作数以及从对应于所述第二操作数字段的寄存器召回针对那条指令的第二操作数。
24.根据权利要求1所述的针对指令指定常数的方法,包括扩展嵌入在指令中的常数的大小,进一步包括以下步骤:
在所述指令的所述指令操作码中设置指示常数扩展或无常数扩展中的预定一个的位编码;
在常数扩展指令的第一常数字段中存储常数;
检测到具有指示常数扩展的位编码的指令之后,根据在具有那条指令的所述执行数据包中的常数扩展指令的所述第一常数字段形成针对那条指令的常数;以及
检测到具有指示无常数扩展的位编码的指令之后,形成等于“0”的常数。
25.根据权利要求24所述的方法,其中:
设置指示常数扩展的位编码的所述步骤包括:在第一状态中设置预定常数扩展位;以及
形成针对所述指令的扩展常数的所述步骤包括:
如果所述指令的所述预定常数位具有所述第一状态,则根据在具有那条指令的所述执行数据包中的所述常数扩展指令的所述第一常数字段形成常数,以及
如果所述指令的所述预定常数位具有与所述第一状态相反的第二状态,则形成常数“0”。
26.根据权利要求24所述的方法,其中:
存储所述常数的所述第二部分的所述步骤包括:在所述常数扩展指令的第一字段中存储所述常数的所述第二部分以及在所述常数扩展指令的第二字段中存储常数扩展指令标识符。
27.根据权利要求24所述的方法,其中:
确定将执行数据包中的哪些指令同时地分派的所述步骤包括复查取回的指令的位编码。
28.根据权利要求27所述的方法,其中:
确定将执行数据包中的哪些指令同时地分派的所述步骤包括:
如果指令的预定位具有第一状态,则确定所述指令是与在下一较高存储器地址处的指令相同的执行数据包中,以及
如果所述指令的所述预定位具有与所述第一状态相反的第二状态,则确定所述指令是在所述下一较高存储器地址处的指令不同的执行数据包中。
29.根据权利要求28所述的方法,其中:
所述常数扩展指令的所述预定位能够具有所述第一状态或所述第二状态。
30.根据权利要求28所述的方法,其中:
所述常数扩展指令的所述预定位能够仅具有所述第一状态。
31.根据权利要求1所述的针对固定长度指令指定常数的方法,包括扩展嵌入在所述指令中的两个常数的大小,进一步包括以下步骤:
在所述指令的指令操作码中设置指示常数扩展的位编码;
在所述指令的第一常数字段存储第一常数的第一部分;
在所述指令的第二常数字段存储第二常数的第一部分;
在第一常数扩展指令的第三常数字段中存储所述第一常数的第二部分;
在第二常数扩展指令的第四常数字段中存储所述第二常数的第二部分;以及
检测到具有指示两个常数的常数扩展的位编码的指令之后,
根据那条指令的所述第一常数字段和在具有那条指令的所述执行数据包中的所述第一常数扩展指令的第三常数字段形成针对那条指令的第一扩展常数,以及
根据那条指令的所述第二常数字段和在具有那条指令的所述执行数据包中的所述第二常数扩展指令的第四常数字段形成针对那条指令的第二扩展常数。
32.根据权利要求31所述的方法,其中:
形成所述第一扩展常数的所述步骤包括:串接所述第一常数字段和所述第三常数字段,形成较大的常数;以及
形成所述第二扩展常数的所述步骤包括:串接所述第二常数字段和所述第四常数字段,形成较大的常数。
33.根据权利要求32所述的方法,其中:
串接所述第一常数字段和所述第三常数字段的所述步骤采取所述第一常数字段作为最低有效位,并且采取所述第三字段作为最高有效位;以及
串接所述第二常数字段和所述第四常数字段的所述步骤采取所述第二常数字段作为最低有效位,并且采取所述第四字段作为最高有效位。
34.根据权利要求31所述的方法,其中:
设置指示常数扩展的位编码的所述步骤包括在第一状态中设置预定常数扩展位;以及
形成针对所述指令的两个扩展常数的所述步骤包括:
如果所述指令的所述预定常数位具有所述第一状态,则根据以下各项形成第一常数:那条指令的所述第一常数字段以及具有那条指令的所述执行数据包中的所述第一常数扩展指令的所述第三常数字段,并且根据以下各项形成第二常数:那条指令的所述第二常数字段以及具有那条指令的所述执行数据包中的所述第二常数扩展指令的所述第四常数字段,以及
如果所述指令的所述预定常数位具有与所述第一状态相反的第二状态,则根据那条指令的所述第一常数字段形成常数。
35.根据权利要求31所述的方法,其中:
存储所述第一常数的所述第二部分的所述步骤包括:在所述第一常数扩展指令的第五字段中存储所述第一常数的所述第二部分以及在所述第一常数扩展指令的第六字段中存储第一常数扩展指令标识符;以及
存储所述第二常数的所述第二部分的所述步骤包括:在所述第二常数扩展指令的第七字段中存储所述第二常数的所述第二部分以及在所述第二常数扩展指令的第八字段中存储第二常数指令标识符。
36.根据权利要求31所述的方法,其中:
确定将执行数据包中的哪些指令同时地分派的所述步骤包括复查取回的指令的位编码。
37.根据权利要求36所述的方法,其中:
确定将执行数据包中的哪些指令同时地分派的所述步骤包括:
如果指令的预定位具有第一状态,则确定所述指令是在与下一个较高存储器地址处的指令相同的执行数据包中,以及
如果所述指令的所述预定位具有与所述第一状态相反的第二状态,则确定所述指令是在所述下一个较高存储器地址处的指令不同的执行数据包中。
38.根据权利要求37所述的方法,其中:
所述第一常数扩展指令的所述预定位能够具有所述第一状态或所述第二状态;以及
所述第二常数扩展指令的所述预定位能够具有所述第一状态或所述第二状态。
39.根据权利要求37所述的方法,其中:
所述第一常数扩展指令的所述预定位能够仅具有所述第一状态;以及
所述第二常数扩展指令的所述预定位能够仅具有所述第一状态。
40.根据权利要求31所述的方法,其中:
在第一常数字段中存储所述第一常数的第一部分的所述步骤包括在第一操作数字段中存储常数;以及
在第二常数字段中存储所述第二常数的第一部分的所述步骤包括在第二操作数字段中存储常数;
所述方法进一步包括:
在所述指令的所述指令操作码中设置位编码,所述位编码可选地指示常数运算或非常数运算;
检测到具有指示常数运算而不是指示常数扩展的位编码的指令之后,根据那条指令的所述第一常数字段形成针对那条指令的常数;以及
检测到具有指示非常数运算的位编码的指令之后,从对应于所述第一操作数字段的寄存器召回针对那条指令的第一操作数以及从对应于所述第二操作数字段的寄存器召回针对那条指令的第二操作数。
41.根据权利要求1所述的针对固定长度指令集中的指令指定常数的方法,包括指定两个常数,进一步包括以下步骤:
在常数扩展指令的常数字段中存储常数的所述步骤包括:在所述常数扩展指令的所述常数字段中存储第一常数和第二常数;以及
检测到具有指示常数规范的位编码的指令之后,根据具有那条指令的所述执行数据包中的常数扩展指令的所述第一常数字段形成针对那条指令的第一常数以及根据所述常数扩展指令的所述第二常数字段形成针对那条指令的第二常数。
42.根据权利要求41所述的方法,其中:
确定将执行数据包中的哪些指令同时地分派的所述步骤包括复查取回的指令的位编码。
43.根据权利要求42所述的方法,其中:
确定将执行数据包中的哪些指令同时地分派的所述步骤包括:
如果指令的预定位具有第一状态,则确定所述指令是与在下一个较高存储器地址处的指令相同的执行数据包中,以及
如果所述指令的所述预定位具有与所述第一状态相反的第二状态,则确定所述指令是与在所述下一个较高存储器地址处的指令不同的执行数据包中。
44.根据权利要求43所述的方法,其中:
所述常数扩展指令的所述预定位能够具有所述第一状态或所述第二状态。
45.根据权利要求43所述的方法,其中:
所述常数扩展指令的所述预定位能够仅具有所述第一状态。
46.根据权利要求41所述的方法,进一步包括:
在所述指令的第一操作数字段中存储第一寄存器号;
在所述指令中的第二操作数字段中存储第二寄存器号;
从对应于所述第一寄存器号的寄存器召回针对那条指令的第一操作数;以及
从对应于所述第二寄存器号的寄存器召回针对那条指令的第二操作数。
47.一种数据处理装置,所述装置包括:
多个功能单元,其可运行以对指令的指定数据执行指令指定的数据处理操作;
至少一个数据寄存器文件,其连接至每个功能单元,每个数据寄存器文件包括多个数据寄存器,所述多个数据寄存器存储通过寄存器号能够访问的数据;
指令取回单元,其从存储器取回预定数量的指令;
指令分派单元,其连接至所述指令取回单元,所述指令分派单元确定将哪些指令作为执行数据包同时地分派给对应的功能单元;
指令解码单元,其连接至所述指令分派单元,所述指令解码单元针对执行数据包中的每条指令:
标识预定功能单元以执行所述指令,以及
通过以下各项中的至少一项来标识所述指令的至少一个输入操作数:
从所述至少一个数据寄存器文件的所述多个数据寄存器中的一个指令指定的寄存器召回数据,
如果所述指令具有指示常数扩展的位编码,根据具有所述指令的所述执行数据包中的常数扩展指令中的常数字段形成针对所述指令的常数,以及
标识针对标识的功能单元的指令指定的数据处理操作,以对所述至少一个标识的操作数执行;并且
所述多个功能单元连接至所述指令解码单元,所述标识的功能单元对所述至少一个标识的操作数执行由对应的指令指定的数据处理操作。
48.根据权利要求47所述的数据处理装置,其中,所述指令解码单元进一步运行用于:
如果所述指令具有指示无常数扩展的位编码,根据所述指令中的第一常数字段形成针对所述指令的常数,以及
如果所述指令具有指示常数扩展的位编码,根据所述指令中的第一常数字段和具有所述指令的所述执行数据包中的常数扩展指令中的第二常数字段形成针对所述指令的扩展常数。
49.根据权利要求48所述的数据处理装置,其中:
所述指令解码单元通过将所述指令中的所述第一常数字段与所述常数扩展指令的所述第二常数字段串接从而形成较大的常数来形成所述扩展常数。
50.根据权利要求49所述的数据处理装置,其中:
所述指令解码单元通过将所述指令中的所述第一常数字段作为最低有效位与所述常数扩展指令的所述第二常数字段作为最高有效位串接形成所述扩展常数。
51.根据权利要求48所述的数据处理装置,其中:
如果预定常数扩展位是在第一状态中,则指令包括指示常数扩展的位编码;以及
所述指令解码单元根据以下各项形成针对所述指令的扩展常数:
如果所述指令的所述预定常数位具有所述第一状态,那条指令的所述第一常数字段和具有那条指令的所述执行数据包中的所述扩展指令的所述第二常数字段,以及
如果所述指令的所述预定常数位具有与所述第一状态相反的第二状态,那条指令的所述第一常数字段。
52.根据权利要求48所述的数据处理装置,其中:
所述常数扩展指令包括:第一字段,其组成包括常数扩展位的所述第二常数字段,以及第二字段,其组成常数扩展指令标识符。
53.根据权利要求48所述的数据处理装置,其中:
所述指令分派单元通过复查取回的指令的位编码来确定将执行数据包中的哪些指令同时地分派。
54.根据权利要求53所述的数据处理装置,其中:
所述指令分派单元通过以下各项来确定将执行数据包中的哪些指令同时地分派:
如果指令的预定位具有第一状态,则确定所述指令是在与下一个较高存储器地址处的指令相同的执行数据包中,以及
如果所述指令的所述预定位具有与所述第一状态相反的第二状态,则确定所述指令是在与所述下一个较高存储器地址处的指令不同的执行数据包中。
55.根据权利要求54所述的数据处理装置,其中:
所述常数扩展指令的所述预定位能够具有所述第一状态或所述第二状态。
56.根据权利要求54所述的数据处理装置,其中:
所述常数扩展指令的所述预定位能够仅具有所述第一状态。
57.根据权利要求48所述的数据处理装置,其中:
每条指令包括至少一个输入操作数字段;以及
所述指令解码单元标识包括以下各项中的至少一项的至少一个输入操作数:
由所述指令中的所述至少一个操作数字段中的寄存器号标识的数据寄存器中的数据,以及
如果所述指令具有指示直接操作而不是指示常数扩展的位编码,对应于所述指令中的所述至少一个输入操作数字段的常数字段,
如果所述指令具有指示直接操作并且指示常数扩展的位编码,根据所述指令的所述至少一个输入操作数字段和具有那条指令的所述执行数据包中的常数扩展指令的第二常数字段形成的常数。
58.根据权利要求48所述的数据处理装置,其中:
所述常数扩展指令包括对应于所述多个功能单元的第一子集的第一常数扩展指令和对应于所述多个功能单元的与所述第一子集不同的第二子集的第二常数扩展指令;以及
所述指令解码单元根据所述指令的所述第一常数字段以及以下各项形成针对所述指令的所述扩展常数:
如果所述指令的所述标识的功能单元是在所述第一子集中,具有所述指令的所述执行数据包中的所述第一常数扩展指令的第二常数字段,以及
如果所述指令的所述标识的功能单元是在所述第二子集中,具有所述指令的所述执行数据包中的所述第二常数扩展指令的第二常数字段。
59.根据权利要求58所述的数据处理装置,其中:
所述第一常数扩展指令包括:第一字段,其组成包括常数扩展位的所述第二常数字段,以及第二字段,其组成第一常数扩展指令标识符;以及
所述第二常数扩展指令包括:第一字段,其组成包括常数扩展位的所述第二常数字段,以及第二字段,其组成第二常数扩展指令标识符。
60.根据权利要求47所述的数据处理装置,其中:所述指令解码单元进一步运行用于:
如果所述指令具有指示无常数扩展的位编码,则根据所述指令中的第一常数字段形成针对所述指令的常数,以及
如果所述指令具有指示常数扩展的位编码,则根据以下各项形成针对所述指令的扩展常数:所述指令中的所述第一常数字段,具有所述指令的所述执行数据包中的第一常数扩展指令的第二常数字段,以及具有所述指令的所述执行数据包中的第二常数扩展指令的第三常数字段。
61.根据权利要求60所述的数据处理装置,其中:
所述指令解码单元通过串接所述第一常数字段、所述第二常数字段和所述第三常数字段形成较大的常数来形成所述扩展常数。
62.根据权利要求61所述的数据处理装置,其中:
所述指令解码单元通过串接作为最低有效位的所述第一常数字段,作为接下来的最高有效位的所述第二常数字段,以及作为最高有效位的所述第三字段形成所述扩展常数。
63.根据权利要求60所述的数据处理装置,其中:
如果预定常数扩展位是在第一状态中,则指令包括指示常数扩展的位编码;以及
所述指令解码单元根据以下各项形成针对所述指令的扩展常数:
如果所述指令的所述预定常数位具有所述第一状态,那条指令的所述第一常数字段,具有那条指令的所述执行数据包中的第一常数扩展指令的所述第二部分字段以及具有那条指令的所述执行数据包中的第二常数扩展指令的所述第三部分字段,以及
如果所述指令的所述预定常数位具有与所述第一状态相反的第二状态,那条指令的所述第一常数字段。
64.根据权利要求60所述的数据处理装置,其中:
所述第一常数扩展指令包括:第一字段,包括第一常数扩展位,以及第二字段,将所述指令标识为所述第一常数扩展指令;以及
所述第二常数扩展指令包括:第一字段,包括第二常数扩展位,以及第二字段,将所述指令标识为所述第二常数扩展指令。
65.根据权利要求60所述的数据处理装置,其中:
所述指令分派单元通过复查取回的指令的位编码来确定将执行数据包中的哪些指令同时地分派。
66.根据权利要求65所述的数据处理装置,其中:
所述指令分派单元通过以下各项来确定将执行数据包中的哪些指令同时地分派:
如果指令的预定位具有第一状态,则确定所述指令是在与下一个较高存储器地址处的指令相同的执行数据包中,以及
如果所述指令的所述预定位具有与所述第一状态相反的第二状态,则确定所述指令是在与所述下一个较高存储器地址处的指令不同的执行数据包中。
67.根据权利要求66所述的数据处理装置,其中:
所述第一常数扩展指令的所述预定位能够具有所述第一状态或所述第二状态;以及
所述第二常数扩展指令的所述预定位能够具有所述第一状态或所述第二状态。
68.根据权利要求66所述的数据处理装置,其中
所述第一常数扩展指令的所述预定位能够仅具有所述第一状态;以及
所述第二常数扩展指令的所述预定位能够仅具有所述第一状态。
69.根据权利要求60所述的数据处理装置,其中:
每条指令包括至少一个输入操作数字段;以及
所述指令解码单元标识包括以下各项中至少一项的至少一个输入操作数:
由在所述指令中的所述至少一个操作数字段中的寄存器号标识的数据寄存器中的数据,以及
如果所述指令具有指示直接操作并且不指示常数扩展的位编码,对应于所述指令中的所述至少一个输入操作数字段的常数字段,以及
如果所述指令具有指示直接操作并且指示常数扩展的位编码,根据所述指令的所述至少一个输入操作数字段和具有那条指令的所述执行数据包中的常数扩展指令的第二常数字段形成的常数。
70.根据权利要求47所述的数据处理装置,其中:
所述指令解码单元进一步可运行以用于:
如果所述指令具有指示无常数扩展的位编码,形成等于“0”的常数,以及
如果所述指令具有指示常数扩展的位编码,根据具有所述指令的所述执行数据包中的常数扩展指令的常数字段形成针对所述指令的常数。
71.根据权利要求70所述的数据处理装置,其中:
如果预定常数扩展位是在第一状态中,则指令包括指示常数扩展的位编码;以及
所述指令解码单元根据以下各项形成针对所述指令的扩展常数:
如果将预定常数扩展位设定至第一状态,形成等于“0”的常数,以及
如果所述指令将所述预定常数扩展位设置至与所述第一状态相反的第二状态,根据具有所述指令的所述执行数据包中的常数扩展指令的常数字段形成针对所述指令的常数。
72.根据权利要求70所述的数据处理装置,其中:
所述常数扩展指令包括:第一字段,组成包括常数扩展位的所述第二常数字段,以及第二字段,组成常数扩展指令标识符。
73.根据权利要求72所述的数据处理装置,其中:
所述指令分派单元通过复查取回的指令的位编码来确定将执行数据包中的哪些指令同时地分派。
74.根据权利要求73所述的数据处理装置,其中:
所述指令分派单元通过以下各项来确定将执行数据包中的哪些指令同时地分派:
如果指令的预定位具有第一状态,则确定所述指令是在与下一个较高存储器地址处的指令相同的执行数据包中,以及
如果所述指令的所述预定位具有与所述第一状态相反的第二状态,则确定所述指令是在与所述下一个较高存储器地址处的指令不同的执行数据包中。
75.根据权利要求74所述的数据处理装置,其中:
所述常数扩展指令的所述预定位能够具有所述第一状态或所述第二状态。
76.根据权利要求74所述的数据处理装置,其中:
所述常数扩展指令的所述预定位能够仅具有所述第一状态。
77.根据权利要求47所述的数据处理装置,其中:
所述指令解码单元进一步运行以:
如果所述指令具有指示无常数扩展的位编码,根据所述指令中的第一常数字段形成针对所述指令的常数,
根据那条指令的所述第一常数字段和具有那条指令的所述执行数据包中的所述第一常数扩展指令的第三常数字段形成针对那条指令的第一扩展常数,以及
根据那条指令的所述第二常数字段和具有那条指令的所述执行数据包中的所述第二常数扩展指令的第四常数字段形成针对那条指令的第二扩展常数。
78.根据权利要求77所述的数据处理装置,其中:
所述指令解码单元运行以:
形成所述第一扩展常数,其包括串接所述第一常数字段和所述第三常数字段,形成较大的常数,以及
形成所述第二扩展常数,其包括串接所述第二常数字段和所述第四常数字段,形成较大的常数。
79.根据权利要求78所述的数据处理装置,其中:
所述指令解码单元其中
串接所述第一常数字段和所述第三常数字段采取所述第一常数字段作为最低有效位,并且采取所述第三字段作为最高有效位;以及
串接所述第二常数字段和所述第四常数字段采取所述第二常数字段作为最低有效位,并且采取所述第四常数字段作为最高有效位。
80.根据权利要求77所述的数据处理装置,其中:
如果预定常数扩展位是在第一状态中,则指令包括指示常数扩展的位编码;以及
所述指令解码单元根据以下各项形成针对所述指令的扩展常数:
如果所述指令的所述预定常数位具有所述第一状态,那条指令的所述第一常数字段,具有那条指令的所述执行数据包中的第一常数扩展指令的所述第二部分字段和具有那条指令的所述执行数据包中的第二常数执行指令的所述第三部分字段,以及
如果所述指令的所述预定常数位具有与所述第一状态相反的第二状态,那条指令的所述第一常数字段。
81.根据权利要求77所述的数据处理装置,其中:
所述第一常数扩展指令包括:第一字段,其包括第一常数扩展位,以及第二字段,将所述指令标识为所述第一常数扩展指令;以及
所述第二常数扩展指令包括:第一字段,其包括第二常数扩展位,以及第二字段,将所述指令标识为所述第二常数扩展指令。
82.根据权利要求77所述的数据处理装置,其中:
所述指令分派单元通过复查取回的指令的位编码来确定将执行数据包中的哪些指令同时地分派。
83.根据权利要求82所述的数据处理装置,其中
所述指令分派单元通过以下各项来确定将执行数据包中的哪些指令同时地分派:
如果指令的预定位具有第一状态,则确定所述指令是在与下一个较高存储器地址处的指令相同的执行数据包中,以及
如果所述指令的所述预定位具有与所述第一状态相反的第二状态,则确定所述指令是在与所述下一个较高存储器地址处的指令不同的执行数据包中。
84.根据权利要求83所述的数据处理装置,其中
所述第一常数扩展指令的所述预定位能够具有所述第一状态或所述第二状态;以及
所述第二常数扩展指令的所述预定位能够具有所述第一状态或所述第二状态。
85.根据权利要求83所述的数据处理装置,其中
所述第一常数扩展指令的所述预定位能够仅具有所述第一状态;以及
所述第二常数扩展指令的所述预定位能够仅具有所述第一状态。
86.根据权利要求77所述的数据处理装置,其中:
每条指令包括至少一个输入操作数字段;以及
所述指令解码单元标识包括以下各项中的至少一项的至少一个输入操作数:
通过所述指令中的所述至少一个操作数字段中的寄存器号标识的数据寄存器中的数据,以及
如果所述指令具有指示直接操作并且不指示常数扩展的位编码,对应于所述指令中的所述至少一个输入操作数字段的常数字段,以及
如果所述指令具有指示直接操作并且指示常数扩展的位编码,根据所述指令的所述至少一个输入操作数字段和具有那条指令的所述执行数据包中的常数扩展指令的第二常数字段形成的常数。
87.根据权利要求47所述的数据处理装置,其中:
所述指令解码单元进一步可运行以:
如果所述指令具有指示无常数扩展的位编码,形成等于“0”的常数,以及
如果所述指令具有指示常数扩展的位编码,根据具有所述指令的所述执行数据包中的常数扩展指令的常数字段形成针对所述指令的常数。
88.根据权利要求87所述的数据处理装置,其中:
所述指令分派单元通过复查取回的指令的位编码来确定将执行数据包中的哪些指令同时地分派。
89.根据权利要求88所述的数据处理装置,其中:
所述指令分派单元通过以下各项来确定将执行数据包中的哪些指令同时地分派:
如果指令的预定位具有第一状态,则确定所述指令是在与下一个较高存储器地址处的指令相同的执行数据包中,以及
如果所述指令的所述预定位具有与所述第一状态相反的第二状态,则确定所述指令是在与所述下一个较高存储器地址处的指令不同的执行数据包中。
90.根据权利要求89所述的数据处理装置,其中:
所述第一常数扩展指令的所述预定位能够具有所述第一状态或所述第二状态。
91.根据权利要求89所述的数据处理装置,其中:
所述第一常数扩展指令的所述预定位能够仅具有所述第一状态。
92.根据权利要求87所述的方法,进一步包括:
每条指令包括第一输入操作数字段和第二输入操作数字段;以及
所述指令解码单元标识包括以下各项中的至少一项的至少一个输入操作数:
通过所述指令中的所述第一操作数字段中的寄存器号标识的数据寄存器中的数据,以及通过所述指令中的所述第二操作数字段中的寄存器号标识的数据寄存器中的数据,
如果所述指令具有指示直接操作并且不指示常数扩展的位编码,则对应于所述指令中的所述第一输入操作数字段的常数字段,以及
如果所述指令具有指示直接操作以及指示常数扩展的位编码,根据所述指令的所述第一操作数字段和具有那条指令的所述执行数据包中的常数扩展指令的第二常数字段形成的常数。
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 | 2015-10-22 | ||
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 |
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 true CN106610817A (zh) | 2017-05-03 |
CN106610817B CN106610817B (zh) | 2022-06-24 |
Family
ID=58561602
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610922480.6A Active CN106610817B (zh) | 2015-10-22 | 2016-10-21 | 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法 |
CN202210633360.XA Pending CN114968369A (zh) | 2015-10-22 | 2016-10-21 | 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法 |
Family Applications After (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) | CN106610817B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213525A (zh) * | 2017-06-29 | 2019-01-15 | 德州仪器公司 | 具有快捷起始指令的流式传输引擎 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 (16)
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 |
US20020087834A1 (en) * | 2000-12-29 | 2002-07-04 | Stmicroelectronics, Inc. | System and method for encoding constant operands in a wide issue processor |
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 |
CN1744601A (zh) * | 2004-08-06 | 2006-03-08 | 微软公司 | 用于产生介质传输协议的可选择扩展的系统和方法 |
CN1766834A (zh) * | 2005-01-20 | 2006-05-03 | 西安电子科技大学 | 双算术逻辑单元精简指令集8位微控制器 |
US20080215855A1 (en) * | 2006-06-30 | 2008-09-04 | Mohammad Abdallah | Execution unit for performing shuffle and other operations |
CN101419713A (zh) * | 2007-10-24 | 2009-04-29 | 株式会社理光 | 图像处理装置 |
US20090182942A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Extract Cache Attribute Facility and Instruction Therefore |
CN101887357A (zh) * | 2009-05-11 | 2010-11-17 | 美普思科技有限公司 | 指令集架构中的变量寄存器和立即数字段编码 |
US20110029759A1 (en) * | 2001-10-29 | 2011-02-03 | Macy Jr William W | Method and apparatus for shuffling data |
CN102124443A (zh) * | 2008-08-15 | 2011-07-13 | 飞思卡尔半导体公司 | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 |
US20120284489A1 (en) * | 2011-05-03 | 2012-11-08 | Qualcomm Incorporated | Methods and Apparatus for Constant Extension in a Processor |
US20140006748A1 (en) * | 2011-01-25 | 2014-01-02 | Cognivue Corporation | Apparatus and method of vector unit sharing |
US20150135184A1 (en) * | 2013-11-13 | 2015-05-14 | Electronics And Telecommunications Research Institute | Time and space-deterministic task scheduling apparatus and method using multi-dimensional scheme |
Family Cites Families (16)
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 |
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 |
JP3867804B2 (ja) * | 2005-03-22 | 2007-01-17 | セイコーエプソン株式会社 | 集積回路装置 |
US9678754B2 (en) * | 2010-03-03 | 2017-06-13 | Qualcomm Incorporated | System and method of processing hierarchical very long instruction packets |
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 |
-
2015
- 2015-10-22 US US14/920,402 patent/US10620957B2/en active Active
-
2016
- 2016-10-21 CN CN201610922480.6A patent/CN106610817B/zh active Active
- 2016-10-21 CN CN202210633360.XA patent/CN114968369A/zh active Pending
-
2020
- 2020-04-13 US US16/846,686 patent/US11681532B2/en active Active
-
2023
- 2023-06-12 US US18/208,444 patent/US20230325189A1/en active Pending
Patent Citations (16)
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 | 智能网络存储接口系统和装置 | |
US20020087834A1 (en) * | 2000-12-29 | 2002-07-04 | Stmicroelectronics, Inc. | System and method for encoding constant operands in a wide issue processor |
US20110029759A1 (en) * | 2001-10-29 | 2011-02-03 | Macy Jr William W | Method and apparatus for shuffling data |
CN1477520A (zh) * | 2002-08-21 | 2004-02-25 | 先进数字芯片株式会社 | 具有扩展指令的中央处理器 |
CN1744601A (zh) * | 2004-08-06 | 2006-03-08 | 微软公司 | 用于产生介质传输协议的可选择扩展的系统和方法 |
CN1766834A (zh) * | 2005-01-20 | 2006-05-03 | 西安电子科技大学 | 双算术逻辑单元精简指令集8位微控制器 |
US20080215855A1 (en) * | 2006-06-30 | 2008-09-04 | Mohammad Abdallah | Execution unit for performing shuffle and other operations |
CN101419713A (zh) * | 2007-10-24 | 2009-04-29 | 株式会社理光 | 图像处理装置 |
US20090182942A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Extract Cache Attribute Facility and Instruction Therefore |
CN102124443A (zh) * | 2008-08-15 | 2011-07-13 | 飞思卡尔半导体公司 | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 |
CN101887357A (zh) * | 2009-05-11 | 2010-11-17 | 美普思科技有限公司 | 指令集架构中的变量寄存器和立即数字段编码 |
US20140006748A1 (en) * | 2011-01-25 | 2014-01-02 | Cognivue Corporation | Apparatus and method of vector unit sharing |
US20120284489A1 (en) * | 2011-05-03 | 2012-11-08 | Qualcomm Incorporated | Methods and Apparatus for Constant Extension in a Processor |
US20150135184A1 (en) * | 2013-11-13 | 2015-05-14 | Electronics And Telecommunications Research Institute | Time and space-deterministic task scheduling apparatus and method using multi-dimensional scheme |
Non-Patent Citations (3)
Title |
---|
A.J. ELBIRT: "Fast and Efficient Implementation of AES via Instruction Set Extensions", 《21ST INTERNATIONAL CONFERENCE ON ADVANCED INFORMATION NETWORKING AND APPLICATIONS WORKSHOPS (AINAW"07)》 * |
N.R. SAXENA .ETC: "Control-flow checking using watchdog assists and extended-precision checksums", 《[1989] THE NINETEENTH INTERNATIONAL SYMPOSIUM ON FAULT-TOLERANT COMPUTING. DIGEST OF PAPERS》 * |
张吉豫等: "一种针对位操作密集应用的扩展指令自动选择方法", 《电子学报》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213525A (zh) * | 2017-06-29 | 2019-01-15 | 德州仪器公司 | 具有快捷起始指令的流式传输引擎 |
CN109213525B (zh) * | 2017-06-29 | 2023-12-29 | 德州仪器公司 | 具有快捷起始指令的流式传输引擎 |
US11983559B2 (en) | 2017-06-29 | 2024-05-14 | Texas Instruments Incorporated | Streaming engine with short cut start instructions |
Also Published As
Publication number | Publication date |
---|---|
US20170115989A1 (en) | 2017-04-27 |
US20230325189A1 (en) | 2023-10-12 |
CN114968369A (zh) | 2022-08-30 |
US20200310807A1 (en) | 2020-10-01 |
US11681532B2 (en) | 2023-06-20 |
CN106610817B (zh) | 2022-06-24 |
US10620957B2 (en) | 2020-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11989555B2 (en) | Instructions for remote atomic operations | |
US11941399B2 (en) | Exposing valid byte lanes as vector predicates to CPU | |
CN109643233B (zh) | 具有带读取和读取/前进操作数编码的流引擎的数据处理设备 | |
US9965274B2 (en) | Computer processor employing bypass network using result tags for routing result operands | |
US7177876B2 (en) | Speculative load of look up table entries based upon coarse index calculation in parallel with fine index calculation | |
US20200104137A1 (en) | Apparatuses and methods for dynamic asymmetric scaling of branch predictor tables | |
US7376813B2 (en) | Register move instruction for section select of source operand | |
CN108205448B (zh) | 具有在每个维度上可选择的多维循环寻址的流引擎 | |
CN109791487A (zh) | 用于将多个数据元素加载到除紧缩数据寄存器之外的目的地存储位置的处理器、方法、系统和指令 | |
CN111213131B (zh) | 高速缓存器中的零时延预提取 | |
US20160092234A1 (en) | Method and apparatus for speculative vectorization | |
US9965275B2 (en) | Element size increasing instruction | |
CN109992304A (zh) | 用于加载片寄存器对的系统和方法 | |
CN107111550A (zh) | 通过选择性页遗漏转换预取隐藏程序存储器控制器中转换遗漏时延 | |
CN111406286B (zh) | 具有数据元素提升的查找表 | |
CN108205447B (zh) | 使用早期和后期地址以及循环计数寄存器来跟踪架构状态的流引擎 | |
CN116521237A (zh) | 具有单独可选元素及成组复制的流式传输引擎 | |
JP2017027149A (ja) | 半導体装置 | |
CN108139911A (zh) | 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 | |
CN116880903A (zh) | 具有提取提前滞后的流引擎 | |
US20230325189A1 (en) | Forming Constant Extensions in the Same Execute Packet in a VLIW Processor | |
CN113924550A (zh) | 直方图运算 | |
JP2018500629A (ja) | 3d座標から3dのz曲線インデックスを計算するための機械レベル命令 | |
US11934830B2 (en) | Method and apparatus for data-ready memory operations | |
US8046569B2 (en) | Processing element having dual control stores to minimize branch latency |
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 |