CN108139911B - 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 - Google Patents

在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 Download PDF

Info

Publication number
CN108139911B
CN108139911B CN201680061241.4A CN201680061241A CN108139911B CN 108139911 B CN108139911 B CN 108139911B CN 201680061241 A CN201680061241 A CN 201680061241A CN 108139911 B CN108139911 B CN 108139911B
Authority
CN
China
Prior art keywords
instruction
conditional
instructions
register
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680061241.4A
Other languages
English (en)
Other versions
CN108139911A (zh
Inventor
T·D·安德森
D·Q·裴
J·R·M·兹比奇克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of CN108139911A publication Critical patent/CN108139911A/zh
Application granted granted Critical
Publication of CN108139911B publication Critical patent/CN108139911B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent 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/3891Concurrent 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)处理器或超标量处理器,替代数据处理操作可在同一指令周期期间被排定。在此情况下,当采取分支时,条件指令执行所采取的指令周期的数目通常与有条件分支指令路径所采取的指令周期的数目相同。因此,在许多例子中,有条件指令执行可比有条件分支操作有利。
发明内容
如上文所述,采用有条件执行可能是有利的,但其有问题。据信,具有可控制有条件操作的多于一个寄存器是有利的。指令包含指定来自可用于控制有条件执行的寄存器当中的特定寄存器的位。随着更多寄存器可用于控制有条件执行,在每一指令内需要更多位来指定特定寄存器。这会减少可用于指定其它指令操作的位的数目,被称为操作码空间。
可针对有条件执行位采用特殊辅助指令。这在其中可能不使用执行包中的每个槽的VLIW处理器中是有利的。因此,有条件执行条件的规格无需额外指令周期。
又一因素可能会产生问题。VLIW处理器通常包含可并行操作的功能单元。指定用于所有这些功能单元的有条件操作所需的位可能会超过指令长度。据信,固定指令长度对于编码/解码目的是有利的。因此,扩展有条件执行辅助指令的长度是不利的。一个实施例提供被引导到功能单元的全异子集的两个此类有条件执行辅助指令。取决于所期望的有条件执行,特定执行包可能需要两个有条件执行辅助指令中的仅一者。
另一实施例针对条件寄存器采用两个可能寄存器文件中的仅一者。在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的调度任务的一部分是确定是否在标量数据路径侧A115或向量数据路径侧B 116中的功能单元上执行指令。每一指令内被称为s位的指令位确定指令控制哪一数据路径。这将在下文进一步详细描述。
指令解码单元113解码当前执行包中的每一指令。解码包含识别执行指令的功能单元、识别用于从可能寄存器文件中供应数据以进行对应数据处理操作的寄存器及识别对应数据处理操作的结果的寄存器目的地。如下文进一步解释,指令可包含常数字段,以代替一个寄存器号操作数字段。此解码的结果是用于控制目标功能单元对指定数据执行由对应指令指定的数据处理操作的信号。
中央处理单元核心110包含控制寄存器114。控制寄存器114存储用于以与实例实施例不相关的方式控制标量数据路径侧A115及向量数据路径侧B 116中的功能单元的信息。举例来说,此信号可为模式信息。
来自指令解码113的经解码指令及存储于控制寄存器114中的信息被供应到标量数据路径侧A115及向量数据路径侧B 116。因此,标量数据路径侧A 115及向量数据路径侧B116内的功能单元依据指令指定数据执行指令指定数据处理操作且将结果存储在指令指定数据寄存器或寄存器中。标量数据路径侧A 115及向量数据路径侧B 116中的每一者包含优选地并行操作的功能单元。这些将在下文结合图2进一步详细描述。数据路径117存在于标量数据路径侧A 115与向量数据路径侧B 116之间,从而准许数据交换。
中央处理单元核心110包含另外的基于非指令的模块。仿真单元118准许响应于指令确定中央处理单元核心110的机器状态。此能力通常将用于算法开发。中断/异常单元119使中央处理单元核心110能够响应于外部异步事件(中断)且作为响应试图执行不正确操作(异常)。
中央处理单元核心110包含流引擎125。流引擎125将两个数据流从通常缓存于二级组合高速缓存130中的预定地址供应到向量数据路径侧B 116的寄存器文件。这将受控数据移动从(二级组合高速缓存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内的功能单元及寄存器文件的另外细节。标量数据路径侧A115包含全局标量寄存器文件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单元241通常接受两个512位操作数且产生一个512位结果。两个操作数各自从全局向量寄存器文件231、L2/S2局部寄存器文件232或谓词寄存器文件234中的指令指定寄存器召回。L2单元241优选地类似于L1单元221执行指令,但除了对更宽的512位数据执行指令之外。结果可被写入到全局向量寄存器文件231、L2/S2局部寄存器文件232、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局部寄存器文件232、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。全局标量寄存器文件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到D15。可从D1/D2局部寄存器文件214中的每一寄存器读取或写入到所述每一寄存器作为64位标量数据。所有标量数据路径侧A 115的功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可写入到D1/D2局部寄存器文件214。仅D1单元225及D2单元226可从D1/D2局部寄存器文件214读取。存储于D1/D2局部标量寄存器文件214中的数据将包含用于地址计算中的基地址及偏移地址。
图5说明L1/S1局部寄存器文件212。图5所说明的实施例具有被标示为AL0到AL7的8个独立的64位宽标量寄存器。优选指令编码(参见图13)准许L1/S1局部寄存器文件212包含高达16个寄存器。图5的实施例实施仅8个寄存器以减小电路大小及复杂性。可从L1/S1局部寄存器文件212中的每一寄存器读取或写入到所述每一寄存器作为64位标量数据。所有标量数据路径侧A 115的功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可写入到L1/S1局部标量寄存器文件212。仅L1单元221及S1单元222可从L1/S1局部标量寄存器文件212读取。
图6说明M1/N1局部寄存器文件213。图6所说明的实施例具有被标示为AM0到AM7的8个独立的64位宽标量寄存器。优选指令编码(参见图13)准许M1/N1局部寄存器文件213包含高达16个寄存器。图6的实施例实施仅8个寄存器以减小电路大小及复杂性。可从M1/N1局部寄存器文件213中的每一寄存器读取或写入到所述每一寄存器作为64位标量数据。所有标量数据路径侧A 115的功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可写入到M1/N1局部标量寄存器文件213。仅M1单元223及N1单元224可从M1/N1局部标量寄存器文件213读取。
图7说明全局向量寄存器文件231,其包含十六(16)个独立的512位宽向量寄存器。可从全局向量寄存器文件231中的每一寄存器读取或写入到所述每一寄存器作为64位标量数据,被标示为B0到B15。可从全局向量寄存器文件231中的每一寄存器读取或写入到所述每一寄存器作为512位向量数据,被标示为VB0到VB15。指令类型确定数据大小。所有向量数据路径侧B 116的功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245及P单元246)可从全局向量寄存器文件231读取或写入到全局向量寄存器文件231。标量数据路径侧A 115的功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可在下文将详细描述的约束下经由交叉路径117从全局向量寄存器文件231读取。
图8说明P局部寄存器文件234。将八个独立的64位宽寄存器标示为P0到P7。可从P局部寄存器文件234中的每一寄存器读取或写入到所述每一寄存器作为64位标量数据。向量数据路径侧B 116的功能单元L2单元241、S2单元242、C单元245及P单元246可写入到P局部寄存器文件234。仅L2单元241、S2单元242及P单元246可从P局部标量寄存器文件234读取。P局部寄存器文件234的通常期望的用途包含:写入来自L2单元241、S2单元242或C单元245的一个位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单元243、N2单元244、C单元245及P单元246)可写入到L2/S2局部向量寄存器文件232。仅L2单元241及S2单元242可从L2/S2局部向量寄存器文件232读取。
图10说明M2/N2/C局部寄存器文件233。图10所说明的实施例具有8个独立的512位宽向量寄存器。优选指令编码(参见图13)准许M2/N2/C局部寄存器文件233包含高达16个寄存器。图10的实施例实施仅8个寄存器以减小电路大小及复杂性。可从M2/N2/C局部向量寄存器文件233中的每一寄存器读取或写入到所述每一寄存器作为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单元243、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位操作数是全局向量寄存器文件231的经存取寄存器中的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、调度及解码阶段1120及执行阶段1130。程序提取阶段1110包含用于所有指令的三个阶段。调度及解码阶段1120包含用于所有指令的三个阶段。执行阶段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个时钟周期。
并行执行的指令构成执行包。在优选实施例中,执行包可含有高达十二个指令(因为CPU 110包含十二个功能单元)。执行包中没有两个指令可使用同一功能单元。槽是五种类型中的一种: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)有条件代码扩展。将在下文进一步解释这些槽类型中的一些类型。
调度及解码阶段1120包含:指令调度到适当执行单元阶段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阶段1111中的分支提取包。如图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
Figure GDA0001634004720000141
有条件指令的执行依据存储于指定数据寄存器中的值是有条件的。此数据寄存器在用于所有功能单元的全局标量寄存器文件211中。z位列中的“z”是指上文所述的零/非零比较选择,且“x”是“不关心”关心状态。此编码可仅将16个全局寄存器的子集指定为谓词寄存器。作出此选择以保存指令编码中的位。无条件执行不具有这些任选位。对于无条件指令,字段1301及1302(28到31)中的这些位优选地用作额外操作码位。
dst字段1303(位23到27)将对应寄存器文件中的寄存器指定为指令结果的目的地。
src2/cst字段1304(位18到22)取决于指令操作码字段(用于所有指令的位3到12及另外用于无条件指令的位28到31)而具有若干意义。第一意义将对应寄存器文件的寄存器指定为第二操作数。第二意义是即时常数。取决于指令类型,将这看作无符号整数及扩展到指定数据长度的零,或将这看作有符号整数及扩展到指定数据长度的符号。
src1字段1305(位13到17)将对应寄存器文件中的寄存器指定为第一源操作数。
用于所有指令的操作码字段1306(位3到12)(及另外用于无条件指令的位28到31)指定指令类型且标示适当的指令选项。这包含所使用的功能单元及所执行的操作的明确标示。操作码的详细解释超出了此描述的范围,但除了下文详细描述的指令选项之外。
e位1308(位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位1309(位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(位20到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单元226指令的4个creg/z位。字段1407(位6到7)未使用/经保留。将字段1408(位0到5)用一组唯一位(CCEX0)编码以识别条件代码扩展槽0。在检测到条件代码扩展槽0的此唯一ID之后,采用对应creg/z位控制同一执行包中的任何L1单元221、L2单元241、S1单元222、S2单元242、D1单元225及D2单元226指令的有条件执行。如表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(位20到23)指定指派到同一执行包中的C单元225指令的4个creg/z位。字段1504(位16到19)指定指派到同一执行包中的N1单元224指令的4个creg/z位。字段1505(位12到15)指定指派到同一执行包中的N2单元244指令的4个creg/z位。字段1506(位6到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位常数字段1304的高阶位以形成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个常数位(位字段1304)供应到串接器1701。串接器1701从这两个部分形成单个32位字。在优选实施例中,来自常数扩展槽(位字段1601)的27个扩展位是最高有效位,且5个常数位(位字段1304)是最低有效位。此经组合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
Figure GDA0001634004720000181
常数扩展槽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指令或C单元245指令中的多于一者具有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单元246的操作准许基于多于一个向量比较的多种复合向量SIMD操作。举例来说,范围确定可使用两个比较进行。候选向量与具有打包于第一数据寄存器内的范围的最小值的第一向量参考作比较。进行候选向量与具有打包于第二数据寄存器内的范围的最大值的第二参考向量的第二比较。两个所得谓词寄存器的逻辑组合将准许向量有条件操作以确定候选向量中的每一数据部分是否在范围内或超出了范围。
L1单元221、S1单元222、L2单元241、S2单元242及C单元245通常操作于单指令多数据(SIMD)模式中。在此SIMD模式中,同一指令从两个操作数应用到经打包数据。每一操作数保持安置于预定槽中的数据元素。SIMD操作由数据边界处的进位控制启用。此类进位控制实现在不同数据宽度上的操作。
图18说明进位控制。AND门1801接收操作数宽算术逻辑单元(对于标量数据路径侧A 115的功能单元是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
Figure GDA0001634004720000191
Figure GDA0001634004720000201
通常,数据大小是2的整数幂(2N)。然而,此进位控制技术并不限于2的整数幂。此技术适用于其它数据大小及其它操作数宽度。

Claims (45)

1.一种用于在数据处理器中有条件地执行指令的方法,所述方法包括:
提取多个指令;
确定经提取指令中的哪些将由所述数据处理器并行执行;
将执行包调度到所述数据处理器的功能单元,其中所述执行包包含经确定将由所述数据处理器并行执行的指令;
确定所述执行包的所述指令是否包含第一有条件代码扩展指令,所述第一有条件代码扩展指令包含第一多个条件操作字段,所述第一多个条件操作字段中的每一者对应于第一指令类型集合的相应一者;
确定所述执行包的所述指令是否包含第一指令类型的第一指令,所述第一指令类型是所述第一指令类型集合中的一者;以及
当所述执行包包含所述第一有条件代码扩展指令及所述第一指令两者时,基于对应于所述第一指令类型的所述第一有条件代码扩展指令的条件操作字段而有条件地执行所述第一指令,其中所述第一有条件代码扩展指令及所述第一指令在所述执行包中是单独的指令,且其中所述第一有条件代码扩展指令及所述第一指令两者都具有等于第一长度的长度。
2.根据权利要求1所述的方法,其中对应于第一指令类型的所述第一有条件代码扩展指令的所述条件操作字段包括第一子字段和第二子字段,且其中基于对应于第一指令类型的所述第一有条件代码扩展指令的所述条件操作字段有条件地执行所述第一指令包括:
基于包含在所述第一子字段中的信息识别所述数据处理器的寄存器;
确定存储于所述寄存器中的值;
基于所述第二子字段确定条件;
确定存储于所述寄存器中的所述值是否符合所述条件;
当所述存储于所述寄存器中的所述值符合所述条件时,执行所述第一指令;及
当所述存储于所述寄存器中的所述值不符合所述条件时,不执行所述第一指令。
3.根据权利要求2所述的方法,其中所述条件由所述第二子字段的第一位指示,当所述第二子字段的所述第一位具有第一状态时,所述条件等于0;且当所述第二子字段的所述第一位具有第二状态时,所述条件不等于0;且其中当存储于所述寄存器中的所述值具有的状态等于所述第一位的所述状态时,所述寄存器符合所述条件。
4.根据权利要求3所述的方法,其中:所述第一状态是1且所述第二状态是0。
5.根据权利要求3所述的方法,其中所述第二子字段仅含有单个位,且所述第二子字段的所述第一位是所述单个位。
6.根据权利要求3所述的方法,其中所述第一子字段包含多个位且当所述多个位的至少两个位具有不同的状态时,所述多个位识别寄存器。
7.根据权利要求6所述的方法,其中当所述第一子字段的所有所述多个位具有所述第二状态及所述第二子字段的所述第一位具有所述第二状态时,无条件地执行所述第一指令。
8.根据权利要求7所述的方法,其中所述第一状态是1且所述第二状态是0。
9.根据权利要求1所述的方法,其中提取所述多个指令包括提取包括有第一预定数目个单独的指令的提取包。
10.根据权利要求9所述的方法,其中在所述执行包中的指令数目小于所述第一预定数目。
11.根据权利要求10所述的方法,其中在所述执行包中的指令数目的最大值等于所述数据处理器的功能单元的总数目。
12.根据权利要求11所述的方法,其中所述数据处理器的功能单元的总数目是12。
13.根据权利要求11所述的方法,其中所述处理器包括标量数据路径和矢量数据路径,其中:
所述标量数据路径包括第一功能单元及第二功能单元以对标量数据实施加法运算,包括第三功能单元及第四功能单元以对标量数据实施乘法运算,以及包括第五功能单元及第六功能单元以对标量数据实施加载与存储操作;及
所述矢量数据路径包括第七功能单元及第八功能单元以对矢量数据实施加法运算,包括第九功能单元及第十单元以对矢量数据实施乘法运算,包括第十一功能单元以实施矢量排列操作,及包括第十二功能单元以对谓词寄存器文件实施逻辑操作。
14.根据权利要求9所述的方法,其中所述第一预定数目是16。
15.根据权利要求9所述的方法,其中所述提取包的每个指令包括第一位,且其中所述提取包的每个指令经确定以当所述第一位具有第一状态时成为所述执行包的一部分且经确定以当所述第一位具有第二状态时不成为所述执行包的一部分。
16.根据权利要求15所述的方法,其中所述第一位是所述提取包的每个指令的最低有效位。
17.根据权利要求15所述的方法,其中对于所述多个指令中的每一者,所述第一位是每个指令的最低有效位。
18.根据权利要求15所述的方法,其中所述第一状态是1且所述第二状态是0。
19.根据权利要求1所述的方法,其中所述第一长度是32位。
20.根据权利要求1所述的方法,其中经提取的多个指令中的每一者具有等于所述第一长度的长度。
21.根据权利要求1所述的方法,其进一步包括:
确定所述执行包的所述指令是否包含第二有条件代码扩展指令,所述第二有条件代码扩展指令包含第二多个有条件操作字段,所述第二多个条件操作字段中的每一者对应于不同于所述第一指令类型集合的第二指令类型集合中的相应一者;
确定所述执行包的所述指令是否包括第二指令类型的第二指令,所述第二指令类型是所述第二指令类型集合中的一者,及
当所述执行包包含所述第二有条件代码扩展指令及所述第二指令两者时,基于对应于所述第二指令类型的所述第二有条件代码扩展指令的条件操作字段有条件地执行所述第二指令,其中所述第一有条件代码扩展指令、第二有条件代码扩展指令、所述第一指令以及所述第二指令是所述执行包中的单独的指令,且其中所述第二有条件代码扩展指令及所述第二指令两者都具有等于所述第一长度的长度。
22.根据权利要求21所述的方法,其中:
对应于第一指令类型的所述第一有条件代码扩展指令的所述条件操作字段包含第一子字段及第二子字段;
对应于所述第二指令类型的所述第二有条件代码扩展指令的所述条件操作字段包括第三子字段及第四子字段;
基于对应于第一指令类型的所述第一有条件代码扩展指令的所述条件操作字段有条件地执行所述第一指令包括:基于包含在所述第一子字段中的信息识别所述数据处理器的第一寄存器,确定存储在所述第一寄存器中的值,基于所述第二子字段确定第一条件,确定存储于所述第一寄存器中的所述值是否符合所述第一条件,当存储于所述第一寄存器中的所述值符合所述第一条件时,执行所述第一指令,以及当存储于所述第一寄存器中的所述值不符合所述第一条件时,不执行所述第一指令;以及
基于对应于第二指令类型的所述第二有条件代码扩展指令的所述条件操作字段有条件地执行所述第二指令包括:基于包含在所述第三子字段中的信息识别所述数据处理器的第二寄存器,确定存储在所述第二寄存器中的值,基于所述第四子字段确定第二条件,确定存储于所述第二寄存器中的所述值是否符合所述第二条件,当存储于所述第二寄存器中的所述值符合所述第二条件时,执行所述第二指令,以及当存储于所述第二寄存器中的所述值不符合所述第二条件时,不执行所述第二指令。
23.根据权利要求22所述的方法,其中所述第一寄存器及所述第二寄存器是所述数据处理器的第一寄存器文件内的寄存器。
24.根据权利要求23所述的方法,其中所述数据处理器包括标量数据路径及矢量数据路径,其中所述第一寄存器文件是所述标量数据路径的全局标量寄存器文件。
25.根据权利要求21所述的方法,其中:
所述第一指令类型集合中的每一者对应于所述功能单元的第一子集中的相应一者;
所述第二指令类型集合中的每一者对应于所述功能单元的第二子集中的相应一者;以及
所述第一子集的所述功能单元中没有一者是所述第二子集的一部分。
26.根据权利要求21所述的方法,其中提取所述多个指令包括提取包括第一预定数目个单独指令的提取包。
27.根据权利要求26所述的方法,其中所述执行包中的指令的数目小于所述第一预定数目。
28.根据权利要求27所述的方法,其中所述执行包中的指令的数目的最大值等于所述数据处理器的功能单元的总数目。
29.根据权利要求28所述的方法,其中所述数据处理器的功能单元的总数目等于12。
30.根据权利要求29所述的方法,其中所述第一预定数目是16。
31.根据权利要求21所述的方法,其中所述第一长度是32位。
32.根据权利要求1所述的方法,其中所述数据处理器包括超长指令字VLIW处理器。
33.一种数据处理设备,其包括:
多个功能单元;
指令提取单元,其经配置以提取多个指令;
指令调度单元,其经配置以确定经提取指令中的哪些将由所述数据处理设备并行执行,且经配置以将执行包调度到所述功能单元,所述执行包包含确定将由所述数据处理设备并行执行的指令;
指令解码单元,其经配置以:确定所述执行包的所述指令是否包含第一有条件代码扩展指令,所述第一有条件代码扩展指令包含第一多个条件操作字段,其中所述第一多个条件操作字段中的每一者对应于第一指令类型集合中的相应一者;且经配置以确定所述执行包的所述指令是否包括第一指令类型的第一指令,所述第一指令类型是所述第一指令类型集合中的一者;及
其中所述功能单元包括对应于所述第一指令类型的第一功能单元,且当所述执行包包括所述第一指令及所述第一有条件代码扩展指令两者时,所述第一功能单元经配置以基于对应于所述第一指令类型的所述第一有条件代码扩展指令的条件操作字段有条件地执行所述第一指令,其中所述第一有条件代码扩展指令及所述第一指令是所述执行包中的单独的指令,且其中所述第一有条件代码扩展指令及所述第一指令两者都具有等于第一长度的长度。
34.根据权利要求33所述的数据处理设备,其中:
所述指令解码单元进一步经配置以:确定所述执行包的所述指令是否包括包含第二多个条件操作字段的第二有条件代码扩展指令,所述第二多个条件操作字段中的每一者对应于不同于所述第一指令类型集合的第二指令类型集合中的相应一者;且经配置以确定所述执行包的所述指令是否包括第二指令类型的第二指令,所述第二指令类型是所述第二指令类型集合中的一者;及
其中所述功能单元包括对应于所述第二指令类型的第二功能单元,且当所述执行包包括所述第二有条件代码扩展指令及第二指令二者时,所述第二功能单元经配置以基于对应于所述第二指令类型的所述第二有条件代码扩展指令的条件操作字段有条件地执行所述第二指令,其中所述第一有条件代码扩展指令、所述第二有条件代码扩展指令、所述第一指令及所述第二指令是所述执行包中的单独指令,且其中所述第二有条件代码扩展指令及所述第二指令二者都具有等于所述第一长度的长度。
35.根据权利要求34所述的数据处理设备,其中:
对应于第一指令类型的所述第一有条件代码扩展指令的所述条件操作字段包括第一子字段及第二子字段;
对应于第二指令类型的所述第二有条件代码扩展指令的所述条件操作字段包括第三子字段及第四子字段;
所述第一功能单元经配置以基于对应于第一指令类型的所述第一有条件代码扩展指令的所述条件操作字段、通过基于包含在第一子字段中的信息识别所述数据处理设备的第一寄存器有条件地执行所述第一指令,确定存储于所述第一寄存器中的值,基于所述第二子字段确定第一条件,确定存储于所述第一寄存器中的所述值是否符合所述第一条件,当存储于所述第一寄存器中的所述值符合所述第一条件时,执行所述第一指令,且当存储于所述第一寄存器中的所述值不符合所述第一条件时,不执行所述第一指令;及
所述第二功能单元经配置以基于对应于第二指令类型的所述第二有条件代码扩展指令的所述条件操作字段、通过基于包含在第三子字段中的信息识别所述数据处理设备的第二寄存器有条件地执行所述第二指令,确定存储于所属第二寄存器中的值,基于所述第四子字段确定第二条件,确定存储于所述第二寄存器中的所述值是否符合所述第二条件,当存储于所述第二寄存器中的所述值符合所述第二条件时,执行所述第二指令,且当存储于所述第二寄存器中的所述值不符合所述第二条件时,不执行所述第二指令。
36.根据权利要求35所述的数据处理设备,其中所述第一寄存器及所述第二寄存器是所述数据处理设备的第一寄存器文件内的寄存器。
37.根据权利要求36所述的数据处理设备,其进一步包括标量数据路径及矢量数据路径,其中所述第一寄存器文件是所述标量数据路径的全局标量寄存器文件。
38.根据权利要求34所述的数据处理设备,其中所述第一指令类型集合中的每一者对应于所述功能单元的第一子集中的相应一者,所述第二指令类型集合中的每一者对应于所述功能单元的第二子集中的相应一者,所述第一子集的所述功能单元中没有一者是所述第二子集的部分,所述第一功能单元在所述第一子集中,且所述第二功能单元在所述第二子集中。
39.根据权利要求34所述的数据处理设备,其中由所述指令提取单元提取的所述多个指令是提取包的指令,所述提取包的指令数目是第一预定数目。
40.根据权利要求39所述的数据处理设备,其中所述执行包的指令数目小于所述第一预定数目。
41.根据权利要求40所述的数据处理设备,其中所述执行包中的指令数目的最大值等于功能单元的总数目。
42.根据权利要求41所述的数据处理设备,其中所述数据处理设备的所述功能单元的总数目是12。
43.根据权利要求41所述的数据处理设备,其进一步包括标量数据路径及矢量数据路径,其中:
所述标量数据路径包括第一功能单元及第二功能单元以对标量数据实施加法运算,包括第三功能单元及第四功能单元以对标量数据实施乘法操作,及包括第五功能单元及第六功能单元以对标量数据实施加载与存储操作;及
所述矢量数据路径包括第七功能单元及第八功能单元以对矢量数据实施加法运算,包括第九功能单元及第十功能单元以对矢量数据实施乘法运算,包括第十一功能单元以实施矢量排列操作,及包括第十二功能单元以对谓词寄存器文件实施逻辑操作。
44.根据权利要求39所述的数据处理设备,其中所述第一预定数目是16。
45.权利要求34所述的数据处理设备,其中所述第一长度是32位。
CN201680061241.4A 2015-10-22 2016-10-24 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 Active CN108139911B (zh)

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 CN108139911A (zh) 2018-06-08
CN108139911B true 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)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461096B2 (en) 2019-05-24 2022-10-04 Texas Instruments Incorporated Method and apparatus for vector sorting using vector permutation logic
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
CN108958453B (zh) * 2018-07-03 2020-06-05 中国人民解放军国防科技大学 一种寄存器堆的低功耗访问方法及装置
CN115951936B (zh) * 2023-01-17 2023-05-26 上海燧原科技有限公司 向量化编译程序的芯片适配方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 英特尔公司 用于将程序自动分解成多个并行线程的硬件和软件系统的系统、设备和方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
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
US6418527B1 (en) * 1998-10-13 2002-07-09 Motorola, Inc. Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
US6606686B1 (en) 1999-07-15 2003-08-12 Texas Instruments Incorporated Unified memory system architecture including cache and directly addressable static random access memory
GB2352308B (en) * 1999-07-21 2004-06-30 Element 14 Ltd Accessing a test condition
GB2355084B (en) * 1999-07-21 2004-04-28 Element 14 Ltd Setting condition values in a computer
JP2001142692A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
US8762581B2 (en) * 2000-12-22 2014-06-24 Avaya Inc. Multi-thread packet processor
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
US20150019845A1 (en) 2013-07-09 2015-01-15 Texas Instruments Incorporated Method to Extend the Number of Constant Bits Embedded in an Instruction Set
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 英特尔公司 用于将程序自动分解成多个并行线程的硬件和软件系统的系统、设备和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YHFT-Matrix DSP取指部件设计实现与多指令流扩展;王海波;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20111101;全文 *

Also Published As

Publication number Publication date
US11397583B2 (en) 2022-07-26
US10402199B2 (en) 2019-09-03
EP3365770A1 (en) 2018-08-29
US11960892B2 (en) 2024-04-16
EP3365770A4 (en) 2019-05-22
CN108139911A (zh) 2018-06-08
WO2017070675A1 (en) 2017-04-27
US20220357952A1 (en) 2022-11-10
US20190391812A1 (en) 2019-12-26
US20170115990A1 (en) 2017-04-27

Similar Documents

Publication Publication Date Title
EP3238073B1 (en) Hiding page translation miss latency in program memory controller by selective page miss translation prefetch
CN108139911B (zh) 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格
US20200394038A1 (en) Look up table with data element promotion
US20230325189A1 (en) Forming Constant Extensions in the Same Execute Packet in a VLIW Processor
US20240176620A1 (en) Look-up table write
US20230367598A1 (en) Vector maximum and minimum with indexing
US20230221955A1 (en) Vector bit transpose
US20200371793A1 (en) Vector store using bit-reversed order
US11900112B2 (en) Vector reverse
US20200371784A1 (en) Vector floating-point scale

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