CN108139911A - 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 - Google Patents
在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 Download PDFInfo
- Publication number
- CN108139911A CN108139911A CN201680061241.4A CN201680061241A CN108139911A CN 108139911 A CN108139911 A CN 108139911A CN 201680061241 A CN201680061241 A CN 201680061241A CN 108139911 A CN108139911 A CN 108139911A
- Authority
- CN
- China
- Prior art keywords
- instruction
- state
- ready conditions
- register
- described instruction
- 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
- 238000012545 processing Methods 0.000 claims description 54
- 238000000605 extraction Methods 0.000 claims description 26
- 238000000034 method Methods 0.000 claims description 25
- 238000003860 storage Methods 0.000 claims description 24
- 230000015654 memory Effects 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 16
- 239000000284 extract Substances 0.000 claims description 5
- 239000013598 vector Substances 0.000 description 92
- 230000037361 pathway Effects 0.000 description 58
- 101100385237 Mus musculus Creg1 gene Proteins 0.000 description 25
- 210000003771 C cell Anatomy 0.000 description 20
- 238000004519 manufacturing process Methods 0.000 description 8
- 230000009977 dual effect Effects 0.000 description 7
- 241001269238 Data Species 0.000 description 6
- 230000006399 behavior Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 101100058681 Drosophila melanogaster Btk29A gene Proteins 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 1
- 230000008901 benefit 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
- 239000002131 composite material Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 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/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/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
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)
- Complex Calculations (AREA)
Abstract
在所描述的实例中,超长指令字VLIW数据处理器包含:功能单元,其可操作以并行执行预定指令执行包。可经由同一执行包中的两个有条件执行辅助指令中的一者使被引导到功能单元的指令是有条件的。每一有条件执行辅助指令包含识别所述指令的第一字段(1408)及包含用于对应功能单元的有条件位的字段(1401、1402、1403、1404、1405、1406)。所述两个有条件执行辅助指令包含用于功能单元的全异子集的条件寄存器识别位。对于每一功能单元操作,如果所述执行包包含对应有条件执行辅助指令,那么操作是以经识别寄存器的状态为条件。条件位优选地包含额外零位,其确定条件是否依据所述经识别寄存器是零或非零。
Description
技术领域
本发明大体上涉及数字数据处理,且更特定来说,本发明涉及由另一指令控制的有条件指令执行。
背景技术
有条件指令执行通常是通过确定数据寄存器的状态且取决于此状态而执行或不执行指令来实现。零/非零确定对于此有条件执行是有用的。
可代替有条件分支有利地采用有条件指令执行。在深度管线式数据处理器中,采取有条件分支通常会导致在管线中稍后提取的指令不再处于通过程序的指令路径上。常规地,这些稍后提取的指令被清空,且分支指令路径上的新指令被提取。这会导致延迟,在延迟期间,新分支指令路径上的指令赶上指令被清空的点。此延迟被称为管线碰撞。这使数据处理器操作变慢的量取决于管线深度及所采取的有条件分支的频率。
有条件指令执行不涉及管线碰撞。程序指令路径不变,且无指令需要被清空。使用有条件分支的典型程序数据路径基于条件选择替代数据处理操作。接着,两个分支合并以进行额外处理。可使用有条件指令执行容易地实施此程序数据路径。使替代数据处理操作在反指向上在相同条件下是有条件的。基于所述条件,执行一个数据处理操作且不执行另一数据处理操作。这会执行所期望的替代操作。如果替代分支短,理想地是一个指令,那么有条件执行指令路径可短于有条件分支指令数据路径。对于一次可执行多于一个指令的数据处理器,例如超长指令字(VLIW)处理器或超标量处理器,替代数据处理操作可在同一指令周期期间被排定。在此情况下,当采取分支时,条件指令执行所采取的指令周期的数目通常与有条件分支指令路径所采取的指令周期的数目相同。因此,在许多例子中,有条件指令执行可比有条件分支操作有利。
发明内容
如上文所述,采用有条件执行可能是有利的,但其有问题。据信,具有可控制有条件操作的多于一个寄存器是有利的。指令包含指定来自可用于控制有条件执行的寄存器当中的特定寄存器的位。随着更多寄存器可用于控制有条件执行,在每一指令内需要更多位来指定特定寄存器。这会减少可用于指定其它指令操作的位的数目,被称为操作码空间。
可针对有条件执行位采用特殊辅助指令。这在其中可能不使用执行包中的每个槽的VLIW处理器中是有利的。因此,有条件执行条件的规格无需额外指令周期。
又一因素可能会产生问题。VILW处理器通常包含可并行操作的功能单元。指定用于所有这些功能单元的有条件操作所需的位可能会超过指令长度。据信,固定指令长度对于编码/解码目的是有利的。因此,扩展有条件执行辅助指令的长度是不利的。一个实施例提供被引导到功能单元的全异子集的两个此类有条件执行辅助指令。取决于所期望的有条件执行,特定执行包可能需要两个有条件执行辅助指令中的仅一者。
另一实施例针对条件寄存器采用两个可能寄存器文件中的仅一者。在VLIW处理器中,将功能单元拆分成具有对应寄存器文件的单独集可能是有利的。这会限制可同时存取寄存器文件的功能单元的数目。在优选实施例中,功能单元被划分成存取标量寄存器的标量集及存取向量寄存器的向量集。存储用于标量及向量指令两者的条件的数据寄存器在标量数据寄存器文件中。
附图说明
图1说明根据一个实施例的双重标量/向量数据路径处理器。
图2说明图1所说明的双重标量/向量数据路径处理器中的寄存器及功能单元。
图3说明全局标量寄存器文件。
图4说明由算术功能单元共享的局部标量寄存器文件。
图5说明由乘法功能单元共享的局部标量寄存器文件。
图6说明由加载/存储单元共享的局部标量寄存器文件。
图7说明全局向量寄存器文件。
图8说明谓词寄存器文件。
图9说明由算术功能单元共享的局部向量寄存器文件。
图10说明由乘法及相关功能单元共享的局部向量寄存器文件。
图11说明根据优选实施例的中央处理单元的管线阶段。
图12说明单个提取包的十六个指令。
图13说明由实例实施例使用的指令的指令编码的实例。
图14说明条件代码扩展槽0的位编码。
图15说明条件代码扩展槽1的位编码。
图16说明常数扩展槽0的位编码。
图17是说明常数扩展的部分框图。
图18说明根据实例实施例的用于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的调度任务的一部分是确定是否在标量数据路径侧A 115或向量数据路径侧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进一步详细描述。数据路径117存在于标量数据路径侧A 115与向量数据路径侧B 116之间,从而准许数据交换。
中央处理单元核心110包含另外的基于非指令的模块。仿真单元118准许响应于指令确定中央处理单元核心110的机器状态。此能力通常将用于算法开发。中断/异常单元119使中央处理单元核心110能够响应于外部异步事件(中断)且作为响应试图执行不正确操作(异常)。
中央处理单元核心110包含流引擎125。流引擎125将两个数据流从通常缓存于二级组合高速缓存130中的预定地址供应到向量数据路径侧B的寄存器文件。这将受控数据移动从(二级组合高速缓存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与向量数据路径侧B116中的寄存器文件交换数据。总线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是单向的。
在优选实施例中,一级数据高速缓存123及二级组合高速缓存130两者可根据标题为“包含高速缓存及可直接寻址静态随机存取存储器的统一存储器系统架构(UNIFIEDMEMORY SYSTEM ARCHITECTURE INCLUDING CACHE AND DIRECTLY ADDRESSABLE STATICRANDOM ACCESS MEMORY)”的第6,606,686号美国专利而经配置为所选择量的高速缓存或可直接寻址存储器。
图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。向量数据路径侧B116包含全局标量寄存器文件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两者。结果可被写入到全局标量寄存器文件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中的指令指定寄存器召回。L2单元241优选地类似于L1单元221执行指令,但除了对更宽的512位数据执行指令之外。结果可被写入到全局向量寄存器文件231、L2/S2局部寄存器文件222、M2/N2/C局部寄存器文件233或谓词寄存器文件234的指令指定寄存器中。
向量数据路径侧B 116包含S2单元242。S2单元242通常接受两个512位操作数且产生一个512位结果。两个操作数各自从全局向量寄存器文件231、L2/S2局部寄存器文件232或谓词寄存器文件234中的指令指定寄存器召回。S2单元242优选地类似于S1单元222执行指令,但除了对更宽的512位数据执行指令之外。结果可被写入到全局向量寄存器文件231、L2/S2局部寄存器文件222、M2/N2/C局部寄存器文件233或谓词寄存器文件234的指令指定寄存器中。
向量数据路径侧B 116包含M2单元243。M2单元243通常接受两个512位操作数且产生一个512位结果。两个操作数各自从全局向量寄存器文件231或M2/N2/C局部寄存器文件233中的指令指定寄存器召回。M2单元243优选地类似于M1单元222执行指令,但除了对更宽的512位数据执行指令之外。结果可被写入到全局向量寄存器文件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优选地执行:“耙”及“搜索”指令;每时钟周期高达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、BIT十中抽一及扩展。P单元246的通常期望的用途包含操纵SIMD向量比较结果以用于控制另一SIMD向量运算。
图3说明全局标量寄存器文件211。将十六个独立的64位宽标量寄存器标示为A0到A15。可从全局标量寄存器文件211中的每一寄存器读取或写入到所述每一寄存器作为64位标量数据。所有标量数据路径侧A 115的功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可读取或写入到全局标量寄存器文件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。将十六个独立的64位宽标量寄存器标示为D0到D16。可从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中的每一寄存器读取或写入到所述每一寄存器作为64位标量数据,被标示为B0到B15。可从全局向量寄存器文件231中的每一寄存器读取或写入到所述每一寄存器作为512位向量数据,被标示为VB0到VB15。指令类型确定数据大小。所有向量数据路径侧B 116的功能单元(L2单元241、S2单元242、M3单元243、N2单元244、C单元245及P单元246)可读取或写入到全局标量寄存器文件231。标量数据路径侧A 115的功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可在下文将详细描述的约束下经由交叉路径117从全局向量寄存器文件231读取。
图8说明P局部寄存器文件234。将八个独立的64位宽寄存器标示为P0到P7。可从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中的每一寄存器读取或写入到所述每一寄存器作为64位标量数据,被标示为BL0到BL7。可从L2/S2局部向量寄存器文件232中的每一寄存器读取或写入到所述每一寄存器作为512位向量数据,被标示为VBL0到VBL7。指令类型确定数据大小。所有向量数据路径侧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中的每一寄存器读取或写入到所述每一寄存器作为64位标量数据,被标示为BM0到BM7。可从M2/N2/C局部向量寄存器文件233中的每一寄存器读取或写入到所述每一寄存器作为512位向量数据,被标示为VBM0到VBM7。所有向量数据路径侧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之间的有限数据交换。在每一操作周期期间,一个64位数据字可从全局标量寄存器文件A 211召回以由向量数据路径侧B 116的一或多个功能单元用作操作数,且一个64位数据字可从全局向量寄存器文件231召回以由标量数据路径侧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位操作数从向量数据路径侧B 116传送到标量数据路径侧A 115。任何向量数据路径侧B 116的功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245及P单元246)可从全局标量寄存器文件211读取64位操作数。如果对应指令是标量指令,那么将交叉路径操作数路径看作任何其它64位操作数。如果对应指令是向量指令,那么操作数的448个高位被零填充。向量数据路径侧B 116的功能单元可在同一操作周期期间采用同一64位交叉路径数据作为操作数。在任何单个操作周期中仅一个64位操作数从标量数据路径侧A115传送到向量数据路径侧B 116。
流引擎125在某些受限情况下传送数据。流引擎125控制两个数据流。流由特定类型的元素序列组成。对流操作的程序循序地读取数据,从而又对每一元素操作。每个流具有以下基本性质。流数据在时间中具有良好定义的开始及结束。流数据贯穿所述流具有固定元素大小及类型。流数据具有固定元素序列。因此,程序不能在流内随机寻找。流数据在活动时是只读的。程序不能在从流读取的同时写入到流。在流打开之后,流引擎125:计算地址;从二级统一高速缓存(其可能需要来自更高级存储器的缓存服务)提取经定义数据类型;执行数据类型操纵,例如零扩展、符号扩展、数据元素分类/交换(例如矩阵转置);及将数据直接递送到CPU 110内的经编程数据寄存器文件。因此,流引擎125对对行为良好的数据进行实时数字滤波操作有用。流引擎125从对应CPU释放这些存储器提取任务,从而启用其它处理功能。
流引擎125提供以下益处。流引擎125准许多维存储器存取。流引擎125增加功能单元可用的带宽。流引擎125最小化高速缓存未中停顿的数目,这是因为流缓冲器绕过一级数据高速缓存123。流引擎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边界。在程序接收阶段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(DC1);及指令解码、操作数读取阶段1123(DC2)。在指令调度到适当执行单元阶段1121(DS)期间,提取包经拆分成执行包且经指派到适当功能单元。在指令预解码阶段1122(DC1)期间,源寄存器、目的地寄存器及相关联路径经解码以用于执行功能单元中的指令。在指令解码期间,操作数读取阶段1123(DC2)期间,执行更详细单元解码,且操作数从寄存器文件读取。
执行阶段1130包含执行阶段1131到1135(E1到E5)。不同类型的指令需要不同数目个这些阶段来完成其执行。管线的这些阶段在理解CPU周期边界处的装置状态中扮演着重要角色。
在执行1阶段1131(E1)期间,评估指令的条件且对操作数操作。如图11所说明,执行1阶段1131可从流缓冲器1141及示意性地展示为1142的寄存器文件中的一者接收操作数。对于加载及存储指令,执行地址生成,且将地址修改写入到寄存器文件。对于分支指令,影响PG阶段中的分支提取包。如图11所说明,加载及存储指令存取此处示意性地展示为存储器1151的存储器。对于单周期指令,结果被写入到目的地寄存器文件。这假定将指令的任何条件评估为真。如果将条件评估为假,那么指令在执行1阶段1131之后不会写入任何结果或具有任何管线操作。
在执行2阶段1132(E2)期间,加载指令将地址发送到存储器。存储指令将地址及数据发送到存储器。如果发生饱和,那么使结果饱和的单周期指令设置控制状态寄存器(CSR)中的SAT位。对于2周期指令,将结果写入到目的地寄存器文件。
在执行3阶段1133(E3)期间,执行数据存储器存取。如果发生饱和,那么使结果饱和的任何乘法指令设置控制状态寄存器(CSR)中的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)中的这些位优选地用作额外操作码位。
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的指令省略此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选择将功能单元限制到L2单元241、S2单元242、M2单元243、N2单元244、P单元246及图2所说明的对应寄存器文件的向量数据路径侧B 116。
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单元225指令的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个位,所述27个位待串接为具有5位常数字段1305的高阶位以形成32位常数。如上文指令编码描述中所述,仅一些指令将src2/cst字段1304定义为常数,而非源寄存器标识符。那些指令中的至少一些指令可采用常数扩展槽以将此常数扩展到32个位。
图16说明常数扩展槽0的字段。每一执行包可包含常数扩展槽0的一个例子及常数扩展槽1的一个例子。图16说明常数扩展槽0 1600包含两个字段。字段1601(位5到31)构成经扩展32位常数的27个最高有效位,其包含目标指令scr2/cst字段1304作为五个最低有效位。将字段1602(位0到4)编码为一组唯一位(CSTX0)以识别常数扩展槽0。在优选实施例中,常数扩展槽0 1600可仅用于扩展同一执行包中的L1单元221指令、D1单元225指令中的数据、S2单元242指令、D2单元226指令中的偏移、M2单元243指令、N2单元244指令、分支指令或C单元245指令中的一者的常数。常数扩展槽1类似于常数扩展槽0,但除了将位0到4编码为一组唯一位(CSTX1)以识别常数扩展槽1之外。在优选实施例中,常数扩展槽1可仅用于扩展同一执行包中的L2单元241指令、D2单元226指令中的数据、S1单元222指令、D1单元225指令中的偏移、M1单元223指令或N1单元224指令中的一者的常数。
如下使用常数扩展槽0及常数扩展槽1。目标指令必须属于准许常数规格的类型。如所知,这是通过使用常数的最低有效位替换一个输入操作数寄存器规格字段来实施,如上文关于scr2/cst字段1304所描述。指令解码器113从指令操作码位确定此情况,被称为即时字段。目标指令还包含一个常数扩展位(e位1307),其专用于用信号发出指定常数是否未扩展(优选地常数扩展位=0)或常数是否扩展(优选地常数扩展位=1)。如果指令解码器113检测到常数扩展槽0或常数扩展槽1,那么其进一步检查那个执行包内的其它指令中对应于检测到的常数扩展槽的指令。仅在一个对应指令具有等于1的常数扩展位(e位1307)时,进行常数扩展。
图17是说明常数扩展的部分框图1700。图17假定指令解码器113检测到常数扩展槽及同一执行包中的对应指令。指令解码器113将来自常数扩展槽(位字段1601)的27个扩展位及来自对应指令的5个常数位(位字段1305)供应到串接器1701。串接器1701从这两个部分形成单个32位字。在优选实施例中,来自常数扩展槽(位字段1601)的27个扩展位是最高有效位,且5个常数位(位字段1305)是最低有效位。此经组合32位字被供应到多路复用器1702的一个输入。来自对应指令字段1305的5个常数位将第二输入供应到多路复用器1702。多路复用器1702的选择由常数扩展位的状态控制。如果常数扩展位(e位1307)是1(经扩展),那么多路复用器1702选择经串接32位输入。如果常数扩展位是0(未扩展),那么多路复用器1702从对应指令字段1305选择5个常数位。多路复用器1702将此输出供应到符号扩展单元1703的输入。
符号扩展单元1703从来自多路复用器1703的输入形成最终操作数值。符号扩展单元1703接收控制输入标量/向量及数据大小。标量/向量输入指示对应指令是标量指令还是向量指令。数据路径侧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从操作码位确定指令是标量指令还是向量指令。P单元246可仅执行标量指令。数据大小可为8个位(字节B)、16个位(半字H)、32个位(字W)或64个位(双字D)。
表2
常数扩展槽0及常数扩展槽1两者可包含p位以定义上文结合图13所描述的执行包。在优选实施例中,如在条件代码扩展槽的情况下,常数扩展槽0及常数扩展槽1优选地具有总是被编码为1的位0(p位)。因此,常数扩展槽0及常数扩展槽1两者都不可能在执行包的最后指令槽中。
执行包可包含常数扩展槽0或1及被标记为常数扩展(e位=1)的多于一个对应指令。对于常数扩展槽0,这将意味着执行包中的L1单元221指令、D1单元225指令中的数据、S2单元242指令、D2单元226指令中的偏移、M2单元243指令或N2单元244指令中的多于一者具有e位1。对于常数扩展槽1,这将意味着执行包中的L2单元241指令、D2单元226指令中的数据、S1单元222指令、D1单元225指令中的偏移、M1单元223指令或N1单元224指令中的多于一者具有e位1。不期望将相同常数扩展供应到多于一个指令是有用的功能。因此,在一个实施例中,指令解码器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操作由数据边界处的进位控制启用。此类进位控制实现在不同数据宽度上的操作。
图18说明进位控制。AND门1801接收操作数宽算术逻辑单元(对于标量数据路径侧A115的功能单元是64个位,且对于向量数据路径侧B 116的功能单元是512个位)内的位N的进位输出。AND门1801还接收将在下文进一步解释的进位控制信号。AND门1801的输出被供应到操作数宽算术逻辑单元的位N+1的进位输入。例如AND门1801的AND门安置于可能数据边界处的每对位之间。举例来说,对于8位数据,此类AND门将在位7与8、位15与16、位23与24等等之间。每一此类AND门接收对应进位控制信号。如果数据大小是最小的,那么每一进位控制信号是0,从而有效地阻挡邻近位之间的进位传输。如果所选择的数据大小需要算术逻辑单元区段两者,那么对应进位控制信号是1。下文表3展示针对例如由向量数据路径侧B116的功能单元使用的512位宽操作数的情况的实例进位控制信号,其可被划分成8个位、16个位、32个位、64个位、128个位或256个位的区段。在表3中,32个高位控制高位(位128到511)进位且32个低位控制低位(位0到127)进位。无需控制最高有效位的进位输出,因此需要仅63个进位控制信号。
表3
通常,数据大小是2的整数幂(2N)。然而,此进位控制技术并不限于2的整数幂。此技术适用于其它数据大小及其它操作数宽度。
Claims (47)
1.一种指定用于一组固定长度指令中的指令的有条件操作的方法,其包括以下步骤:
将多个第一组有条件操作字段存储于具有固定长度的第一有条件代码扩展指令中,每一第一条件操作字段对应于指令的第一子集的指令类型;
将多个第二组有条件操作字段存储于具有固定长度的第二有条件代码扩展指令中,每一第二条件操作字段对应于指令的第二子集的指令类型,指令的所述第二子集不同于指令的所述第一子集;
提取预定数目个固定长度指令;
确定哪些经提取指令用于同时调度到对应功能单元作为执行包;
一旦检测到指令的所述第一子集中的指令及同一执行包中的第一有条件代码扩展指令,就基于所述第一有条件代码扩展指令中的对应条件操作字段有条件地执行所述指令;及
一旦检测到指令的所述第二子集中的指令及同一执行包中的第二有条件代码扩展指令,就基于所述第二有条件代码扩展指令中的对应条件操作字段有条件地执行所述指令。
2.根据权利要求1所述的指定用于指令的有条件操作的方法,其中有条件地执行所述指令的每一步骤包含确定对应于与所述指令对应的所述条件字段的寄存器的状态。
3.根据权利要求2所述的指定用于指令的有条件操作的方法,其中有条件地执行所述指令的每一步骤包含:如果所述对应寄存器具有第一状态,那么执行所述指令,且如果所述对应寄存器具有不同于所述第一状态的第二状态,那么不执行所述指令。
4.根据权利要求3所述的指定用于指令的有条件操作的方法,其中:所述第一状态是所述寄存器等于零;且所述第二状态是所述寄存器不等于零。
5.根据权利要求2所述的指定用于指令的有条件操作的方法,其中:
每一有条件操作字段包含标示寄存器号的第一子字段及标示条件选择的第二子字段;
有条件地执行所述指令的每一步骤包含:
当所述条件选择具有第三状态时,如果所述对应寄存器具有第一状态,那么执行所述指令,且如果所述对应寄存器具有不同于所述第一状态的第二状态,那么不执行所述指令,及
当所述条件选择具有与所述第三状态相反的第四状态时,如果所述对应寄存器具有第一状态,那么不执行所述指令,且如果所述对应寄存器具有不同于所述第一状态的第二状态,那么执行所述指令。
6.根据权利要求5所述的指定用于指令的有条件操作的方法,其中如果所述寄存器号是预定号且所述条件选择具有预定状态,那么基于对应条件操作字段有条件地执行所述指令的每一步骤无条件地执行所述指令。
7.根据权利要求1所述的指定用于指令的有条件操作的方法,其中:
每一操作指令具有对应于所述指令被引导到的预定多个功能单元中的一者的指令类型;
指令的所述第一子集对应于被引导到所述预定多个功能单元的第一子集的指令;且
指令的所述第二子集对应于被引导到所述预定多个功能单元的第二子集的指令,所述预定多个功能单元的所述第二子集不同于所述预定多个功能单元的所述第一子集。
8.根据权利要求1所述的指定用于指令的有条件操作的方法,其中:
所述第一类型的至少一个指令是具有指令条件操作字段的有条件指令;且
一旦检测到指令的所述第一子集中的指令而未检测到同一执行包中的第一有条件代码扩展指令,就进行以下操作:
如果所述指令是有条件指令,那么基于所述指令条件操作字段有条件地执行所述指令,及
如果所述指令并非有条件指令,那么无条件地执行所述指令。
9.根据权利要求1所述的指定用于指令的有条件操作的方法,其中:
所述第二类型的至少一个指令是具有指令条件操作字段的有条件指令;且
一旦检测到指令的所述第二子集中的指令而未检测到同一执行包中的第二有条件代码扩展指令,就进行以下操作:
如果所述指令是有条件指令,那么基于所述指令条件操作字段有条件地执行所述指令,及
如果所述指令并非有条件指令,那么无条件地执行所述指令。
10.根据权利要求1所述的指定用于指令的有条件操作的方法,其中确定哪些指令用于同时调度于执行包中的所述步骤包括查核经提取指令的位编码。
11.根据权利要求10所述的指定用于指令的有条件操作的方法,其中确定哪些指令用于同时调度于执行包中的所述步骤包括:
如果指令的预定位具有第一状态,那么确定所述指令与下一较高存储器地址处的指令在同一执行包中;及
如果所述指令的所述预定位具有与所述第一状态相反的第二状态,那么确定所述指令与所述下一较高存储器地址处的所述指令在不同执行包中。
12.根据权利要求11所述的指定用于指令的有条件操作的方法,其中:所述第一条件代码扩展指令的所述预定位能够具有所述第一状态或所述第二状态;且所述第二条件代码扩展指令的所述预定位能够具有所述第一状态或所述第二状态。
13.根据权利要求11所述的指定用于指令的有条件操作的方法,其中:所述第一条件代码扩展指令的所述预定位能够具有仅所述第一状态;且所述第二条件代码扩展指令的所述预定位能够具有仅所述第一状态。
14.一种指定用于一组固定长度指令中的指令的有条件操作的方法,其包括以下步骤:
定义第一指令类型,所述第一指令类型可操作以从第一数据寄存器文件读取或向第一数据寄存器文件写入;
定义第二指令类型,所述第二指令类型可操作以从第二数据寄存器文件读取或向第二数据寄存器文件写入;
将多个有条件操作字段存储于具有固定长度的有条件代码扩展指令中;
提取预定数目个固定长度指令;
确定哪些经提取指令用于同时调度到对应功能单元作为执行包;及
一旦检测到指令及同一执行包中的有条件代码扩展指令,就基于对应于与所述指令对应的所述条件字段的所述第一数据寄存器文件内的寄存器的状态有条件地执行所述指令。
15.根据权利要求14所述的指定用于指令的有条件操作的方法,其中有条件地执行所述指令的每一步骤包含:如果所述对应寄存器具有第一状态,那么执行所述指令,且如果所述对应寄存器具有不同于所述第一状态的第二状态,那么不执行所述指令。
16.根据权利要求15所述的指定用于指令的有条件操作的方法,其中:所述第一状态是所述寄存器等于零;且所述第二状态是所述寄存器不等于零。
17.根据权利要求14所述的指定用于指令的有条件操作的方法,其中:
每一有条件操作字段包含标示寄存器号的第一子字段及标示条件选择的第二子字段;且
有条件地执行所述指令的每一步骤包含:
当所述条件选择具有第三状态时,如果所述对应寄存器具有第一状态,那么执行所述指令,且如果所述对应寄存器具有不同于所述第一状态的第二状态,那么不执行所述指令,及
当所述条件选择具有与所述第三状态相反的第四状态时,如果所述对应寄存器具有第一状态,那么不执行所述指令,且如果所述对应寄存器具有不同于所述第一状态的第二状态,那么执行所述指令。
18.根据权利要求17所述的指定用于指令的有条件操作的方法,其中如果所述寄存器号是预定号且所述条件选择具有预定状态,那么基于对应条件操作字段有条件地执行所述指令的每一步骤无条件地执行所述指令。
19.根据权利要求14所述的指定用于指令的有条件操作的方法,其中:
每一操作指令具有对应于所述指令被引导到的预定多个功能单元中的一者的指令类型;且
所述条件代码扩展指令包括:
第一条件代码扩展指令,其存储多个第一组有条件操作字段,每一第一条件操作字段对应于被引导到功能单元的第一子集的指令类型;及
第二有条件代码扩展指令,其存储第二组有条件操作字段,每一第二条件操作字段对应于被引导到功能单元的第二子集的指令类型,功能单元的所述第二子集不同于功能单元的所述第一子集。
20.根据权利要求14所述的指定用于指令的有条件操作的方法,其中:
至少一个指令是具有指令条件操作字段的有条件指令;且
一旦检测到被引导到功能单元的所述第一子集中的指令而未检测到同一执行包中的有条件代码扩展指令,就进行以下操作:
如果所述指令是有条件指令,那么基于所述指令条件操作字段有条件地执行所述指令,及
如果所述指令并非有条件指令,那么无条件地执行所述指令。
21.根据权利要求14所述的指定用于指令的有条件操作的方法,其中确定哪些指令用于同时调度于执行包中的所述步骤包括查核经提取指令的位编码。
22.根据权利要求21所述的指定用于指令的有条件操作的方法,其中确定哪些指令用于同时调度于执行包中的所述步骤包括:
如果指令的预定位具有第一状态,那么确定所述指令与下一较高存储器地址处的指令在同一执行包中,及
如果所述指令的所述预定位具有与所述第一状态相反的第二状态,那么确定所述指令与所述下一较高存储器地址处的所述指令在不同执行包中。
23.根据权利要求22所述的指定用于指令的有条件操作的方法,其中所述条件代码扩展指令的所述预定位能够具有所述第一状态或所述第二状态。
24.根据权利要求22所述的指定用于指令的有条件操作的方法,其中所述条件代码扩展指令的所述预定位能够具有仅所述第一状态。
25.一种数据处理设备,其包括:
多个功能单元,其可操作以对指令指定数据执行指令指定数据处理操作;
至少一个数据寄存器文件,其连接到每一功能单元,每一数据寄存器文件包含存储通过寄存器号可存取的数据的数据寄存器;
指令提取单元,其从存储器提取预定数目个指令;
指令调度单元,其连接到所述指令提取单元,所述指令调度单元确定哪些指令用于同时调度到对应功能单元作为执行包;
指令解码单元,其连接到所述指令调度单元,所述指令解码单元针对执行包中的每一指令进行以下操作:
从第一组功能单元及不同于所述第一组功能单元的第二组功能单元中的一者识别预定功能单元以执行所述指令,
一旦检测到被引导到功能单元的所述第一子集中的一者的指令及同一执行包中的第一有条件代码扩展指令,就基于所述第一有条件代码扩展指令中的对应条件操作字段有条件地执行所述指令,及
一旦检测到被引导到功能单元的所述第二子集中的一者的指令及同一执行包中的第二有条件代码扩展指令,就基于所述第二有条件代码扩展指令中的对应条件操作字段有条件地执行所述指令;且
所述功能单元连接到所述指令解码单元,所述经识别功能单元执行由对应指令指定的数据处理操作。
26.根据权利要求25所述的数据处理设备,其中所述指令解码单元可操作以有条件地执行指令,包含确定对应于与所述指令对应的所述条件字段的所述数据寄存器文件中的数据寄存器的状态。
27.根据权利要求26所述的数据处理设备,其中所述指令解码单元可操作以有条件地执行指令,包含:如果所述对应数据寄存器具有第一状态,那么执行所述指令,且如果所述对应数据寄存器具有不同于所述第一状态的第二状态,那么不执行所述指令。
28.根据权利要求27所述的数据处理设备,其中:所述第一状态是所述数据寄存器存储等于零的值;且所述第二状态是所述数据寄存器存储不等于零的值。
29.根据权利要求26所述的数据处理设备,其中:
每一有条件操作字段包含标示寄存器号的第一子字段及标示条件选择的第二子字段;且
所述指令解码单元可操作以有条件地执行指令,包含:
当所述条件选择具有第三状态时,如果所述对应数据寄存器具有第一状态,那么执行所述指令,且如果所述对应数据寄存器具有不同于所述第一状态的第二状态,那么不执行所述指令,及
当所述条件选择具有与所述第三状态相反的第四状态时,如果所述对应数据寄存器具有第一状态,那么不执行所述指令,且如果所述对应数据寄存器具有不同于所述第一状态的第二状态,那么执行所述指令。
30.根据权利要求29所述的数据处理设备,其中所述指令解码单元可操作以有条件地执行指令,包含:如果所述寄存器号是预定号且所述条件选择具有预定状态,那么无条件地执行所述指令。
31.根据权利要求25所述的数据处理设备,其中:
被引导到功能单元的所述第一子集中的一者的至少一个指令是具有指令条件操作字段的有条件指令;且
一旦检测到被引导到功能单元的所述第一子集中的一者的指令而未检测到同一执行包中的第一有条件代码扩展指令,所述指令解码单元就可操作以进行以下操作:
如果所述指令是有条件指令,那么基于所述指令条件操作字段有条件地执行所述指令,及
如果所述指令并非有条件指令,那么无条件地执行所述指令。
32.根据权利要求25所述的数据处理设备,其中:
被引导到功能单元的所述第二子集中的一者的至少一个指令是具有指令条件操作字段的有条件指令;且
一旦检测到被引导到功能单元的所述第二子集中的一者的指令而未检测到同一执行包中的第二有条件代码扩展指令,所述指令解码单元就可操作以进行以下操作:
如果所述指令是有条件指令,那么基于所述指令条件操作字段有条件地执行所述指令,及
如果所述指令并非有条件指令,那么无条件地执行所述指令。
33.根据权利要求24所述的数据处理设备,其中所述指令调度单元通过查核经提取指令的位编码而确定哪些指令用于同时调度于执行包中。
34.根据权利要求33所述的数据处理设备,其中所述指令调度单元通过以下操作而确定哪些指令用于同时调度于执行包中:
如果指令的预定位具有第一状态,那么确定所述指令与下一较高存储器地址处的指令在同一执行包中,及
如果所述指令的所述预定位具有与所述第一状态相反的第二状态,那么确定所述指令与所述下一较高存储器地址处的所述指令在不同执行包中。
35.根据权利要求34所述的数据处理设备,其中:所述第一条件代码扩展指令的所述预定位能够具有所述第一状态或所述第二状态;且所述第二条件代码常数扩展指令的所述预定位能够具有所述第一状态或所述第二状态。
36.根据权利要求34所述的数据处理设备,其中:所述第一条件代码扩展指令的所述预定位能够具有仅所述第一状态;且所述第二条件代码扩展指令的所述预定位能够具有仅所述第一状态。
37.一种数据处理设备,其包括:
多个功能单元,其可操作以对指令指定数据执行指令指定数据处理操作,所述多个功能单元包括第一组功能单元及不同于所述第一组功能单元的第二组功能单元;
第一数据寄存器文件,其连接到所述第一组功能单元中的每一功能单元,所述第一数据寄存器文件包含存储通过寄存器号可存取的数据的数据寄存器;
第二数据寄存器文件,其连接到所述第二组功能单元中的每一功能单元,所述第二数据寄存器文件包含存储通过寄存器号可存取的数据的数据寄存器;
指令提取单元,其从存储器提取预定数目个指令;
指令调度单元,其连接到所述指令提取单元,所述指令调度单元确定哪些指令用于同时调度到对应功能单元作为执行包;
指令解码单元,其连接到所述指令调度单元,所述指令解码单元针对执行包中的每一指令进行以下操作:
从所述第一组功能单元及所述第二组功能单元中的一者识别预定功能单元以执行所述指令,
一旦检测到被引导到所述第一组功能单元中的一者的指令及同一执行包中的第一有条件代码扩展指令,就基于对应于所述第一有条件代码扩展指令中的预定条件操作字段的所述第一数据寄存器文件中的数据寄存器的状态有条件地执行所述指令,及
一旦检测到被引导到功能单元的所述第二子集中的一者的指令及同一执行包中的第二有条件代码扩展指令,就基于对应于所述第二有条件代码扩展指令中的预定条件操作字段的所述第一数据寄存器文件中的数据寄存器的状态有条件地执行所述指令;且
所述功能单元连接到所述指令解码单元,所述经识别功能单元执行由对应指令指定的数据处理操作。
38.根据权利要求37所述的数据处理设备,其中所述指令解码单元可操作以有条件地执行指令,包含:如果所述对应数据寄存器具有第一状态,那么执行所述指令,且如果所述对应数据寄存器具有不同于所述第一状态的第二状态,那么不执行所述指令。
39.根据权利要求38所述的数据处理设备,其中:所述第一状态是所述数据寄存器存储等于零的值;且所述第二状态是所述数据寄存器存储不等于零的值。
40.根据权利要求37所述的数据处理设备,其中:
每一有条件操作字段包含标示寄存器号的第一子字段及标示条件选择的第二子字段;
所述指令解码单元可操作以有条件地执行指令,包含:
当所述条件选择具有第三状态时,如果所述对应数据寄存器具有第一状态,那么执行所述指令,且如果所述对应数据寄存器具有不同于所述第一状态的第二状态,那么不执行所述指令,及
当所述条件选择具有与所述第三状态相反的第四状态时,如果所述对应数据寄存器具有第一状态,那么不执行所述指令,且如果所述对应数据寄存器具有不同于所述第一状态的第二状态,那么执行所述指令。
41.根据权利要求40所述的数据处理设备,其中所述指令解码单元可操作以有条件地执行指令,包含:如果所述寄存器号是预定号且所述条件选择具有预定状态,那么无条件地执行所述指令。
42.根据权利要求37所述的数据处理设备,其中所述条件代码扩展指令包括:
第一条件代码扩展指令,其存储多个第一组有条件操作字段,每一第一条件操作字段对应于被引导到第三组功能单元的指令类型;及
第二有条件代码扩展指令,其存储第二组有条件操作字段,每一第二条件操作字段对应于被引导到不同于所述第三组功能单元的第四组功能单元的指令类型。
43.根据权利要求37所述的数据处理设备,其中:
至少一个指令是具有指令条件操作字段的有条件指令;且
一旦检测到指令而未检测到同一执行包中的有条件代码扩展指令,就进行以下操作:
如果所述指令是有条件指令,那么基于所述指令条件操作字段有条件地执行所述指令,及
如果所述指令并非有条件指令,那么无条件地执行所述指令。
44.根据权利要求37所述的数据处理设备,其中所述指令调度单元通过查核经提取指令的位编码而确定哪些指令用于同时调度于执行包中。
45.根据权利要求44所述的数据处理设备,其中所述指令调度单元通过以下操作而确定哪些指令用于同时调度于执行包中:
如果指令的预定位具有第一状态,那么确定所述指令与下一较高存储器地址处的指令在同一执行包中,及
如果所述指令的所述预定位具有与所述第一状态相反的第二状态,那么确定所述指令与所述下一较高存储器地址处的所述指令在不同执行包中。
46.根据权利要求45所述的数据处理设备,其中所述条件代码扩展指令的所述预定位能够具有所述第一状态或所述第二状态。
47.根据权利要求45所述的数据处理设备,其中所述条件代码扩展指令的所述预定位能够具有仅所述第一状态。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/920,298 | 2015-10-22 | ||
US14/920,298 US10402199B2 (en) | 2015-10-22 | 2015-10-22 | Conditional execution specification of instructions using conditional extension slots in the same execute packet in a VLIW processor |
PCT/US2016/058481 WO2017070675A1 (en) | 2015-10-22 | 2016-10-24 | Conditional execution specification of instructions using conditional extension slots in the same execute packet in a vliw processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108139911A true CN108139911A (zh) | 2018-06-08 |
CN108139911B CN108139911B (zh) | 2022-08-09 |
Family
ID=58558123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680061241.4A Active CN108139911B (zh) | 2015-10-22 | 2016-10-24 | 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10402199B2 (zh) |
EP (1) | EP3365770A4 (zh) |
CN (1) | CN108139911B (zh) |
WO (1) | WO2017070675A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958453A (zh) * | 2018-07-03 | 2018-12-07 | 中国人民解放军国防科技大学 | 一种寄存器堆的低功耗访问方法及装置 |
CN115951936A (zh) * | 2023-01-17 | 2023-04-11 | 上海燧原科技有限公司 | 向量化编译程序的芯片适配方法、装置、设备及介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9606803B2 (en) | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
US11106462B2 (en) | 2019-05-24 | 2021-08-31 | Texas Instruments Incorporated | Method and apparatus for vector sorting |
US10402199B2 (en) | 2015-10-22 | 2019-09-03 | Texas Instruments Incorporated | Conditional execution specification of instructions using conditional extension slots in the same execute packet in a VLIW processor |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020056035A1 (en) * | 1998-10-13 | 2002-05-09 | Zvika Rozenshein | Data processor instruction system for grouping instruction with or without a common prefix and data processing system that uses two or more instruction grouping methods |
US20020083297A1 (en) * | 2000-12-22 | 2002-06-27 | Modelski Richard P. | Multi-thread packet processor |
US6865662B2 (en) * | 2002-08-08 | 2005-03-08 | Faraday Technology Corp. | Controlling VLIW instruction operations supply to functional units using switches based on condition head field |
CN101689107A (zh) * | 2007-06-27 | 2010-03-31 | 高通股份有限公司 | 用于将条件指令扩展为无条件指令与选择指令的方法和系统 |
CN103282877A (zh) * | 2010-12-25 | 2013-09-04 | 英特尔公司 | 用于将程序自动分解成多个并行线程的硬件和软件系统的系统、设备和方法 |
US20150019845A1 (en) * | 2013-07-09 | 2015-01-15 | Texas Instruments Incorporated | Method to Extend the Number of Constant Bits Embedded in an Instruction Set |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5201056A (en) * | 1990-05-02 | 1993-04-06 | Motorola, Inc. | RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output |
JP2931890B2 (ja) * | 1995-07-12 | 1999-08-09 | 三菱電機株式会社 | データ処理装置 |
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 |
US6606686B1 (en) | 1999-07-15 | 2003-08-12 | Texas Instruments Incorporated | Unified memory system architecture including cache and directly addressable static random access memory |
GB2355084B (en) * | 1999-07-21 | 2004-04-28 | Element 14 Ltd | Setting condition values in a computer |
GB2352308B (en) * | 1999-07-21 | 2004-06-30 | Element 14 Ltd | Accessing a test condition |
JP2001142692A (ja) * | 1999-10-01 | 2001-05-25 | Hitachi Ltd | 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法 |
US7949856B2 (en) * | 2004-03-31 | 2011-05-24 | Icera Inc. | Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit |
US7196708B2 (en) * | 2004-03-31 | 2007-03-27 | Sony Corporation | Parallel vector processing |
JP5240424B2 (ja) * | 2004-11-05 | 2013-07-17 | 日本電気株式会社 | Simd型並列演算装置、プロセッシング・エレメント、simd型並列演算装置の制御方式 |
US20060150171A1 (en) * | 2004-12-28 | 2006-07-06 | Ceva D.S.P. Ltd. | Control words for instruction packets of processors and methods thereof |
US20060174089A1 (en) * | 2005-02-01 | 2006-08-03 | International Business Machines Corporation | Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture |
US7581082B2 (en) * | 2005-05-13 | 2009-08-25 | Texas Instruments Incorporated | Software source transfer selects instruction word sizes |
US7673119B2 (en) * | 2005-05-13 | 2010-03-02 | Texas Instruments Incorporated | VLIW optional fetch packet header extends instruction set space |
KR101645001B1 (ko) * | 2009-02-18 | 2016-08-02 | 삼성전자주식회사 | Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법 |
US10360039B2 (en) * | 2009-09-28 | 2019-07-23 | Nvidia Corporation | Predicted instruction execution in parallel processors with reduced per-thread state information including choosing a minimum or maximum of two operands based on a predicate value |
US20140089645A1 (en) | 2012-09-27 | 2014-03-27 | Texas Instruments Incorporated | Processor with execution unit interoperation |
US10318293B2 (en) * | 2013-07-09 | 2019-06-11 | Texas Instruments Incorporated | Predication methods for vector processors |
US9606803B2 (en) * | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
US10402199B2 (en) * | 2015-10-22 | 2019-09-03 | Texas Instruments Incorporated | Conditional execution specification of instructions using conditional extension slots in the same execute packet in a VLIW processor |
US10140239B1 (en) * | 2017-05-23 | 2018-11-27 | Texas Instruments Incorporated | Superimposing butterfly network controls for pattern combinations |
US10210090B1 (en) * | 2017-10-12 | 2019-02-19 | Texas Instruments Incorporated | Servicing CPU demand requests with inflight prefetchs |
-
2015
- 2015-10-22 US US14/920,298 patent/US10402199B2/en active Active
-
2016
- 2016-10-24 CN CN201680061241.4A patent/CN108139911B/zh active Active
- 2016-10-24 EP EP16858439.9A patent/EP3365770A4/en active Pending
- 2016-10-24 WO PCT/US2016/058481 patent/WO2017070675A1/en active Application Filing
-
2019
- 2019-09-03 US US16/558,569 patent/US11397583B2/en active Active
-
2022
- 2022-07-22 US US17/870,926 patent/US11960892B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020056035A1 (en) * | 1998-10-13 | 2002-05-09 | Zvika Rozenshein | Data processor instruction system for grouping instruction with or without a common prefix and data processing system that uses two or more instruction grouping methods |
US20020083297A1 (en) * | 2000-12-22 | 2002-06-27 | Modelski Richard P. | Multi-thread packet processor |
US6865662B2 (en) * | 2002-08-08 | 2005-03-08 | Faraday Technology Corp. | Controlling VLIW instruction operations supply to functional units using switches based on condition head field |
CN101689107A (zh) * | 2007-06-27 | 2010-03-31 | 高通股份有限公司 | 用于将条件指令扩展为无条件指令与选择指令的方法和系统 |
CN103282877A (zh) * | 2010-12-25 | 2013-09-04 | 英特尔公司 | 用于将程序自动分解成多个并行线程的硬件和软件系统的系统、设备和方法 |
US20150019845A1 (en) * | 2013-07-09 | 2015-01-15 | Texas Instruments Incorporated | Method to Extend the Number of Constant Bits Embedded in an Instruction Set |
Non-Patent Citations (1)
Title |
---|
王海波: "YHFT-Matrix DSP取指部件设计实现与多指令流扩展", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958453A (zh) * | 2018-07-03 | 2018-12-07 | 中国人民解放军国防科技大学 | 一种寄存器堆的低功耗访问方法及装置 |
CN108958453B (zh) * | 2018-07-03 | 2020-06-05 | 中国人民解放军国防科技大学 | 一种寄存器堆的低功耗访问方法及装置 |
CN115951936A (zh) * | 2023-01-17 | 2023-04-11 | 上海燧原科技有限公司 | 向量化编译程序的芯片适配方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3365770A4 (en) | 2019-05-22 |
US20220357952A1 (en) | 2022-11-10 |
US11960892B2 (en) | 2024-04-16 |
US20170115990A1 (en) | 2017-04-27 |
EP3365770A1 (en) | 2018-08-29 |
US10402199B2 (en) | 2019-09-03 |
US20190391812A1 (en) | 2019-12-26 |
CN108139911B (zh) | 2022-08-09 |
WO2017070675A1 (en) | 2017-04-27 |
US11397583B2 (en) | 2022-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0474297B1 (en) | Very long instruction word machine for efficient execution of programs with conditional branches | |
US9965274B2 (en) | Computer processor employing bypass network using result tags for routing result operands | |
CN107111550B (zh) | 用于隐藏程序提取的页遗漏转换时延的方法和装置 | |
CN108139911A (zh) | 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 | |
CN109213723A (zh) | 用于具有安全、功率降低和性能特征的可配置空间加速器的处理器、方法和系统 | |
CN109643233B (zh) | 具有带读取和读取/前进操作数编码的流引擎的数据处理设备 | |
CN110018850A (zh) | 用于可配置空间加速器中的多播的设备、方法和系统 | |
US7509483B2 (en) | Methods and apparatus for meta-architecture defined programmable instruction fetch functions supporting assembled variable length instruction processors | |
US7177876B2 (en) | Speculative load of look up table entries based upon coarse index calculation in parallel with fine index calculation | |
TWI292553B (en) | Processor, method for generating or manufacturing a processor, system for generating a processor, and computer-readable medium having stored thereon a computer program | |
KR100346515B1 (ko) | 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일 | |
CN111213131B (zh) | 高速缓存器中的零时延预提取 | |
GB2553783A (en) | Vector multiply-add instruction | |
CN109144568A (zh) | 将有效位通道作为矢量断言暴露于cpu | |
WO1998006042A1 (en) | Wide instruction unpack method and apparatus | |
US20170031682A1 (en) | Element size increasing instruction | |
CN109952559A (zh) | 具有单独可选元素及成组复制的流式传输引擎 | |
CN107589957A (zh) | 具有双矢量和成双的单矢量操作模式的流参考寄存器 | |
CN103119555B (zh) | 下一指令类型字段 | |
KR101586770B1 (ko) | 데이터 처리 장치 | |
CN109213525A (zh) | 具有快捷起始指令的流式传输引擎 | |
JP3736866B2 (ja) | スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット | |
CN106610817A (zh) | 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法 | |
US8055883B2 (en) | Pipe scheduling for pipelines based on destination register number | |
CN101727435A (zh) | 一种超长指令字处理器 |
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 |