CN111406286A - 具有数据元素提升的查找表 - Google Patents

具有数据元素提升的查找表 Download PDF

Info

Publication number
CN111406286A
CN111406286A CN201880075362.3A CN201880075362A CN111406286A CN 111406286 A CN111406286 A CN 111406286A CN 201880075362 A CN201880075362 A CN 201880075362A CN 111406286 A CN111406286 A CN 111406286A
Authority
CN
China
Prior art keywords
data
instruction
register
unit
lookup table
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.)
Pending
Application number
CN201880075362.3A
Other languages
English (en)
Inventor
D·裴
D·巴拉苏布拉马尼亚安
N·布霍里亚
S·克里希纳
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 CN111406286A publication Critical patent/CN111406286A/zh
Pending legal-status Critical Current

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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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
    • 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/30141Implementation provisions of register files, e.g. ports
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)

Abstract

所描述实施例涉及在数字数据处理器(100)中实施的查找表操作。查找表读取指令从表调用指定数据大小的数据元素,并将所调用数据元素存储在目的地寄存器中的连续槽中。所描述实施例用选定符号或零扩展将数据元素提升到较大大小。源操作数寄存器存储从表开始地址的向量偏移。目的地操作数存储所述查找表读取的结果。所述查找表指令隐含基地址寄存器及配置寄存器。所述基地址寄存器存储表基地址。所述配置寄存器设置各种查找表读取操作参数。

Description

具有数据元素提升的查找表
本发明大体上涉及数字数据处理,并且更特定来说,涉及查找表操作的改进。
背景技术
现代数字信号处理器(DSP)面临多重挑战。工作量继续增加,需要增加带宽。芯片上系统(SOC)的大小及复杂性持续增长。存储器系统延时会严重影响某些类别的算法。随着晶体管变得更小,存储器及寄存器的可靠性降低。随着软件堆叠变得更大,潜在的交互作用及错误的数目随之变得更大。甚至线路也日益成为挑战。宽的总线难以路由。线路速度持续落后于晶体管速度。路由拥塞是一个持续挑战。
一种对筛选函数有用的技术是表查找。数据表被加载到将对应于输入参数的一组结果存储在存储器位置处的存储器中。为执行函数,使用输入参数来调用预先计算的结果。对于很少使用且难以计算数学函数来说,此技术可能特别有价值。
发明内容
此描述涉及查找表操作。存储在表中的数据元素的大小可能与数据处理器所需的数据大小不匹配。需要两个精度的相同表数据的算法先前需要存储及采用两个表。基于所需数据大小选择待使用的表,这通常浪费存储器空间。另一问题是查找表的粒度。筛选算法可能要求所存储的输入之间的输入的表值。
所描述的实施例可在数字数据处理器中实施。指令存储器存储指定数据处理操作的指令。指令解码器循序地调用指令并确定指定数据处理操作及操作数。操作单元对查找表读取指令的响应是:从具有指令指定数据大小的至少一个表调用数据元素;并将所调用数据元素以连续槽存储在指令指定目的地寄存器中。
某些所描述实施例实施两个专用查找表读取操作。第一特殊操作将从表调用的数据元素提升到较大大小。数据元素大小通常是二的整数幂(2N)个位。在一个实例实施例中,查找表读取指令支持不提升、2x提升,4x提升及8x提升。提升为每一所调用数据元素提供扩展位。查找表指令可将数据元素视为无符号整数,并且将数据元素零扩展为扩展位。查找表指令可将数据元素视为带符号整数,并将数据元素符号扩展为扩展位。
查找表指令将源操作数指定为存储从表开始地址到存取数据元素的一组向量偏移的寄存器。查找表指令将目的地操作数指定为存储查找表读取指令的结果的寄存器。查找表指令隐含查找表基地址寄存器及查找表配置寄存器。在一个实施例中,查找表读取指令从多个表组当中指定多个表的表组。查找表基地址寄存器及查找表配置寄存器绑定到指定表组。基地址寄存器存储表基地址。从此基地址的偏移来源于源操作数寄存器。配置寄存器设置许多查找表读取操作参数。这些参数包含:提升模式(无、2x、4x及8x);分配到对应表组的存储器量(表大小);所调用数据元素将被视为带符号整数还是不带符号整数;表数据元素的大小;以及表组中的表的数目。
根据标题为“包含高速缓存及可直接寻址静态随机存取存储器的统一存储器系统架构(UNIFIED MEMORY SYSTEM ARCHITECTURE INCLUDING CACHE AND DIRECTLYADDRESSABLE STATIC RANDOM ACCESS MEMORY)”的共同指派的第US 6,606,686号专利,可将用于这些查找表读取操作的表映射到一级数据高速缓存可直接寻址存储器中,所述专利以引用的方式并入本文中。这些表可通过正常存储器操作加载。在一个实例实施例中,数据处理器支持至多4组独立的并行查找表。在一组内,可用字节、半字或字元素大小来并行查找至多16个表。根据此实例实施例,专用于直接寻址存储器的一级数据高速缓存的至少部分具有16个库。这允许并行存取16个存储器位置,并且支持每表组至多16个表。
附图说明
图1说明根据一个实施例的双标量/向量数据路径处理器。
图2说明图1中所说明的双标量/向量数据路径处理器中的寄存器及功能单元。
图3说明全局标量寄存器堆。
图4说明由算术功能单元共享的本地标量寄存器堆。
图5说明由乘法功能单元共享的本地标量寄存器堆。
图6说明由加载/存储单元共享的本地标量寄存器堆。
图7说明全局向量寄存器堆。
图8说明谓词寄存器堆。
图9说明由算术功能单元共享的本地向量寄存器堆。
图10说明由乘法及相关功能单元共享的本地向量寄存器堆。
图11说明根据实例实施例的中央处理单元的管线阶段。
图12说明单个提取包的十六个指令。
图13说明根据一个实施例的指令编码实例。
图14说明条件码扩展槽0的位编码。
图15说明条件码扩展槽1的位编码。
图16说明常数扩展槽0的位编码。
图17是说明常数扩展的局部框图。
图18说明根据实例实施例的用于SIMD操作的进位控制。
图19说明实例查找表配置寄存器的数据字段。
图20说明指定特定表组所允许的操作类型的实例查找表启用寄存器中的数据字段。
图21说明针对所述表组的一个表的查找表组织。
图22说明针对所述表组的两个表的查找表组织。
图23说明针对所述表组的四个表的查找表组织。
图24说明针对所述表组的八个表的查找表组织。
图25说明针对所述表组的十六个表的查找表组织。
图26说明根据实例实施例的用于四个并行表、字节的数据元素大小及无提升的查找表读取指令的操作的实例。
图27说明根据实例实施例的用于四个并行表、字节的数据元素大小及2x提升的查找表读取指令的操作的实例。
图28说明根据实例实施例的用于四个并行表、字节的数据元素大小及4x提升的查找表读取指令的操作的实例。
图29A及29B一起说明提升实施方案的实例实施例。
图30说明图29A中所说明的扩展元素的实例。
图31说明控制图29A及29B中所说明的多路复用器的多路复用控制编码器。
具体实施方式
图1说明根据实例实施例的双标量/向量数据路径处理器100。处理器100包含单独一级指令高速缓存(L1I)121及一级数据高速缓存(L1D)123。处理器100包含保持指令及数据两者的二级组合指令/数据高速缓存(L2)130。图1说明一级指令高速缓存121与二级组合指令/数据高速缓存130之间的连接(总线142)。图1说明一级数据高速缓存123与二级组合指令/数据高速缓存130之间的连接(总线145)。二级组合指令/数据高速缓存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将对这些进行进一步详述。在标量数据路径侧A 115与向量数据路径侧B 116之间存在数据路径117,从而允许数据交换。
中央处理单元核心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与向量数据路径侧B 116中的寄存器堆交换数据。在此实例实施例中,总线144是512位总线。总线143及144经说明为双向的,从而支持中央处理单元110数据读取及数据写入两者。一级数据高速缓存器123经由总线145与二级组合高速缓存130交换数据。在此实例实施例中,总线145是512位总线。总线145经说明为双向的,从而支持用于中央处理单元110数据读取及数据写入两者的高速缓存服务。
在高速缓存命中时(如果所请求数据存储在一级数据高速缓存123中),从一级数据高速缓存123直接提取CPU数据请求。在高速缓存未命中时(指定数据未存储在一级数据高速缓存123中),在二级组合高速缓存130中寻找此数据。此所请求数据的存储器位置是二级组合高速缓存130中的命中或未命中。从二级组合高速缓存130为命中服务。从另一级高速缓存(未说明)或从主存储器(未说明)为未命中服务。所请求指令可同时供应到一级数据高速缓存123及中央处理单元核心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单向。
在高速缓存命中时(如果所请求数据存储在二级组合高速缓存130中),从二级组合高速缓存130直接提取蒸汽引擎数据请求。在高速缓存未命中时(指定数据未存储在二级组合高速缓存130中),从另一级高速缓存(未说明)或从主存储器(未说明)寻找此数据。在一些实施例中,一级数据高速缓存123可高速缓存未存储在二级组合高速缓存130中的数据。如果支持此类操作,那么在流式传输引擎数据请求在二级组合高速缓存130中未命中时,二级组合高速缓存130可针对流式传输引擎请求的数据侦听一级数据高速缓存123。如果一级数据高速缓存123存储此数据,那么其侦听响应将包含所述数据,然后供应所述数据以服务流式传输引擎请求。如果一级数据高速缓存123未存储此数据,那么其侦听响应将指示此,并且二级组合高速缓存130将接着从另一级高速缓存(未说明)或从主存储器(未说明)服务此流式传输引擎请求。
在一个实施例中,根据标题为“包含高速缓存及可直接寻址静态随机存取存储器的统一存储器系统架构”的第US 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。这些功能单元可经配置以从某些寄存器堆读取或向某些寄存器堆写入,如下文将详述。
L1单元221可接受两个64位操作数并产生一个64位结果。两个操作数各自从全局标量寄存器堆211或L1/S1局部寄存器堆212中的指令指定寄存器调用。L1单元221可执行以下指令选定操作:64位加/减运算;32位最小/最大运算;8位单指令多数据(SIMD)指令,例如绝对值的总和、最小值及最大值确定;循环最小/最大运算;以及寄存器堆之间的各种移动操作。由L1单元221产生的结果可被写入全局标量寄存器堆211、L1/S1局部寄存器堆212、M1/N1局部寄存器堆213或D1/D2局部寄存器堆214的指令指定寄存器中。
S1单元222可接受两个64位操作数并产生一个64位结果。两个操作数各自从全局标量寄存器堆211或L1/S1局部寄存器堆212中的指令指定寄存器调用。在一个实施例中,S1单元222可执行与L1单元221相同类型的运算。在其它实施例中,由L1单元221及S1单元222支持的数据处理操作之间可能会有细微变化。由S1单元222产生的结果可写入全局标量寄存器堆211、L1/S1局部寄存器堆212、M1/N1局部寄存器堆213或D1/D2局部寄存器堆214的指令指定寄存器中。
M1单元223可接受两个64位操作数并产生一个64位结果。两个操作数各自从全局标量寄存器堆211或M1/N1局部寄存器堆213中的指令指定寄存器调用。M1单元223可执行以下指令选定操作:8位乘法运算;复数点积运算;32位位计数运算;复数共轭乘法运算;以及按位逻辑运算、移动、加法及减法。由M1单元223产生的结果可写入全局标量寄存器堆211、L1/S1局部寄存器堆212、M1/N1局部寄存器堆213或D1/D2局部寄存器堆214的指令指定寄存器中。
N1单元224可接受两个64位操作数并产生一个64位结果。两个操作数各自从全局标量寄存器堆211或M1/N1局部寄存器堆213中的指令指定寄存器调用。N1单元224可执行与M1单元223相同类型的操作。可能存在一起采用M1单元223及N1单元224两者的某些双重操作(称为双发布指令)。由N1单元224产生的结果可写入全局标量寄存器堆211、L1/S1局部寄存器堆212、M1/N1局部寄存器堆213或D1/D2局部寄存器堆214的指令指定寄存器中。
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中的指令指定寄存器调用。由D1单元225及/或D2单元226计算的结果可写入全局标量寄存器堆211、L1/S1局部寄存器堆212、M1/N1局部寄存器堆213或D1/D2局部寄存器堆214的指令指定寄存器中。
L2单元221可接受两个512位操作数并产生一个512位结果。最多两个操作数中的每一者各自从全局向量寄存器堆231、L2/S2局部寄存器堆232或谓词寄存器堆234中的指令指定寄存器调用。L2单元241可类似于L1单元221那样执行指令,除了对较宽512位数据执行外。由L2单元241产生的结果可写入全局向量寄存器堆231、L2/S2局部寄存器堆232、M2/N2/C局部寄存器堆233或谓词寄存器堆234的指令指定寄存器中。
S2单元242可接受两个512位操作数并产生一个512位结果。最多两个操作数中的每一者各自从全局向量寄存器堆231、L2/S2局部寄存器堆232或谓词寄存器堆234中的指令指定寄存器调用。S2单元242可类似于S1单元222那样执行指令,除了对较宽512位数据执行外。由S2单元242产生的结果可写入全局向量寄存器堆231、L2/S2局部寄存器堆232、M2/N2/C局部寄存器堆233或谓词寄存器堆234的指令指定寄存器中。
M2单元243可接受两个512位操作数并产生一个512位结果。两个操作数各自从全局向量寄存器堆231或M2/N2/C局部寄存器堆233中的指令指定寄存器调用。M2单元243可类似于M1单元222那样指令,除了对较宽512位数据执行外。由M2单元243产生的结果可写入全局向量寄存器堆231、L2/S2局部寄存器堆232或M2/N2/C局部寄存器堆233的指令指定寄存器中。
N2单元244可接受两个512位操作数并产生一个512位结果。两个操作数各自从全局标量寄存器堆231或M2/N2/C局部寄存器堆233中的指令指定寄存器调用。N2单元244可执行与M2单元243相同类型的操作。可能存在一起采用M2单元243及N2单元244两者的某些双重操作(称为双发布指令)。由N2单元224产生的结果可写入全局向量寄存器堆231、L2/S2局部寄存器堆232或M2/N2/C局部寄存器堆233的指令指定寄存器中。
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)。在某些C单元245操作中,控制寄存器CUCR0到CUCR3用作操作数。举例来说,控制寄存器CUCR0到CUCR3可用于控制通用排列指令(VPERM)或用作SIMD多重点积运算(DOTPM)及SIMD多重绝对差之和(SAD)运算的掩码。控制寄存器CUCR0可用于存储伽罗瓦域乘法运算(GFMPY)的多项式。控制寄存器CUCR1可用于存储伽罗瓦域多项式产生器函数。
P单元246可对本地谓词寄存器堆234的寄存器执行基本逻辑运算。P单元246可直接存取以从谓词寄存器堆234读取及写入谓词寄存器堆234。由P单元246执行的运算可包含AND、ANDN、OR、XOR、NOR、BITR、NEG、SET、BITCNT、RMBDD、BIT抽取及展开。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可读取为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)可写入D1/D2局部寄存器堆214。仅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的实施例6仅实施8个寄存器以减小电路大小及复杂性。M1/N1局部寄存器堆213的每一寄存器可作为64位标量数据读取或写入。所有标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可写入M1/N1局部寄存器堆213。仅M1单元223及N1单元224可从M1/N1局部寄存器堆213读取。
图7说明全局向量寄存器堆231的实例实施例。在所说明实施例中,存在16个独立512位宽向量寄存器。全局向量寄存器堆231的每一寄存器可作为指示为B0到B15的64位标量数据读取或写入。全局向量寄存器堆231的每一寄存器可作为指示为VB0到VB15的512位向量数据读取或写入。指令类型确定数据大小。所有向量数据路径侧B 116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245及P单元246)都可读取或写入全局向量寄存器堆231。标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可在下文将详述的限制下经由交叉路径117从全局向量寄存器堆231读取。
图8说明P局部寄存器堆234的实例实施例。在所说明实施例中,存在经指示为P0到P7的8个独立64位宽寄存器。P局部寄存器堆234的每一寄存器可作为64位标量数据读取或写入。向量数据路径侧B 116功能单元L2单元241、S2单元242、C单元244及P单元246可写入P局部寄存器堆234。仅L2单元241、S2单元242及P单元246可从P局部寄存器堆234读取。P局部寄存器堆234可用于:从L2单元241、S2单元242或C单元244写入一位SIMD向量比较结果;通过P单元246操纵SIMD向量比较结果;使用操纵结果来控制另一SIMD向量运算。
图9说明L2/S2局部寄存器堆232的实例实施例。图9中说明的实施例具有8个独立512位宽向量寄存器。在某些指令编码格式下(参见图13),L2/S2局部寄存器堆232可包含至多16个寄存器。图9的实施例仅实施8个寄存器,以减小电路大小及复杂度。L2/S2本地向量寄存器堆232的每一寄存器可作为指示为BL0到BL7的64位标量数据读取或写入。L2/S2本地向量寄存器堆232的每一寄存器可作为指示为VBL0到VBL7的512位向量数据读取或写入。指令类型确定数据大小。所有向量数据路径侧B 116功能单元(L2单元241、S2单元242、M2单元243、N2单元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的每一寄存器可作为指示为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之间的有限数据交换。在每一操作循环期间,可从全局标量寄存器堆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位操作数是全局向量寄存器堆231的经存取寄存器中的512位数据的最低有效位。标量数据路径侧A 115功能单元可在同一操作循环期间使用相同的64位交叉路径数据作为操作数。然而,在任何单个操作循环中,仅一个64位操作数从向量数据路径侧B 116转移到标量数据路径侧A 115。任何向量数据路径侧B116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245及P单元246)可从全局标量寄存器堆211读取64位操作数。如果对应指令是标量指令,那么将交叉路径操作数数据视为任何其它64位操作数。如果对应指令是向量指令,那么操作数的上448位填零。向量数据路径侧B 116功能单元可在相同操作循环期间使用相同的64位交叉路径数据作为操作数。在任何单个操作循环中,仅一个64位操作数从标量数据路径侧A 115转移到向量数据路径侧B 116。
流式传输引擎125在某些情况下转移数据。在图1的实施例中,流式传输引擎125控制两个数据流。流包含特定类型的元素序列。对流进行操作的程序循序地读取数据,依次对每一元素进行操作。流数据可具有以下基本属性:明确定义的开始及结束时间;贯穿流的固定元素大小及类型;及固定元素顺序。因此,程序无法在流中随机寻找。此外,流数据在活动时为只读。因此,程序无法在读取流的同时写入流。一旦流被打开,流式传输引擎125:计算地址;从二级统一高速缓存130提取定义数据类型(其可能需要来自较高级存储器的高速缓存服务,即在二级统一高速缓存130中的高速缓存未命中的情况下);执行数据类型操纵(例如,例如零扩展、符号扩展及/或数据元素分类/调换,例如矩阵转置);并将数据直接递送到CPU 110内的经编程数据寄存器堆。因此,流式传输引擎125对于对良性数据进行实时数字筛选操作很有用。流式传输引擎125从对应CPU 110释放这些存储器提取任务,借此使CPU110能够执行其它处理功能。
流式传输引擎125提供若干益处。举例来说,流式传输引擎125允许多维存储器存取,增加CPU 110的功能单元的可用带宽,减少由于流缓冲器绕过一级数据高速缓存123引起的高速缓存未命中失速的数目,减少维持环路所需的标量操作的数目以及管理地址指针。流式传输引擎125还可处置地址产生,其释放地址产生指令槽以及D1单元225及D2单元226用于其它计算。
CPU 110在指令管线上操作。如下文进一步描述,在固定长度指令包中提取指令。所有指令具有相同数目的管线阶段用于提取及解码,但可具有不同数目的执行阶段。
图11说明具有以下管线阶段的指令管线的实例实施例:程序提取阶段1110、分派及解码阶段1120以及执行阶段1130。程序提取阶段1110包含用于所有指令的三个级。分派及解码阶段1120包含用于所有指令的三个级。执行阶段1130包含取决于指令的一到四个级。
提取阶段1110包含程序地址产生级1111(PG)、程序存取级1112(PA)及程序接收级1113(PR)。在程序地址产生级1111(PG)期间,在CPU中产生程序地址,并且将读取请求发送到针对一级指令高速缓存L1I的存储器控制器。在程序存取级1112(PA)期间,一级指令高速缓存LlI处理所述请求,存取其存储器中的数据,并将提取包发送到CPU边界。在程序接收级1113(PR)期间,CPU寄存提取包。
在实例实施例中,一次将指令作为构成提取包的十六个32位宽槽来提取。图12说明一个此实施例,其中单个提取包包含十六个指令1201到1216。提取包在512位(16字)边界上对准。在一个实施例中,提取包采用固定32位指令长度。固定长度指令由于若干原因而具有优势。固定长度指令可实现容易的解码器对准。正确对准指令提取可将多个指令加载到并行指令解码器中。当存储在与固定指令包提取耦合的存储器(提取包在512位边界上对准)中时,可通过预定指令对准实现此正确对准指令提取。对准指令提取还允许并行解码器对指令大小提取位进行操作。可变长度指令在其可经解码之前可能需要定位每一指令边界的初始步骤。固定长度指令集通常允许更规则地布局指令字段。这简化每一解码器的构造,这对于大量发布的VLIW中央处理器来说是优势。
个别指令的执行由每一指令中的p位部分控制。可将此p位配置为32位宽槽的位0。指令的p位确定指令是否与下一个指令并行执行。从较低地址到较高地址扫描指令。如果指令的p位为1,那么与所述指令并行(以与其相同的循环)执行下一个随后指令(较高存储器地址)。如果指令的p位为0,那么在指令之后的循环中执行下一个随后指令。
CPU 110及一级指令高速缓存L1I 121管线彼此去耦。从一级指令高速缓存L1I返回的提取包可采取不同数目的时钟循环,这取决于外部环境,例如是否在一级指令高速缓存121中存在命中或在二级组合高速缓存130中存在命中。因此,程序存取级1112(PA)可采取若干时钟循环,而不是如在其它级中的1个时钟循环。
并行执行的指令构成执行包。在一个实施例中,执行包可包含至多十六个指令(槽)。执行包中的两个指令不可使用相同功能单元。槽可为五种类型中的一者:1)在CPU110的功能单元中的一者(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阶段中的分支提取包受到影响。
如图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)中的一者的操作。指令编码1300的位字段定义如下。
creg字段1301(位29到31)及z位1302(位28)是在条件指令中使用的字段。这些位用于条件指令以识别谓词(也称为“条件”)寄存器及条件。z位1302(位28)指示条件是基于谓词寄存器中的零还是非零。如果z=1,那么测试是针对等于零。如果z=0,那么测试是针对非零。针对无条件指令,将creg字段1301及z位1302设置为全0以允许无条件指令执行。creg字段1301及z字段1302如表1中所展示那样编码在指令中。
表1
Figure BDA0002501771950000141
条件指令的执行取决于存储在指定条件数据寄存器中的值。在所述说明实例中,条件寄存器是全局标量寄存器堆211中的数据寄存器。z位列中的“z”是指上文提及的零/非零比较选择,且“x”是无关紧要状态。在此实例中,在此编码中针对creg字段1301使用三个位允许仅将全局标量寄存器堆211的16个全局寄存器的子集(A0到A5)指定为谓词寄存器。做出此选择是为保留指令编码中的位并减少操作码空间。dst字段1303(位23到27)指定对应寄存器堆中的寄存器作为指令结果的目的地(例如,结果将被写入的位置)。
src2/cst字段1304(位18到22)可取决于指令操作码字段(针对所有指令的位4到12及额外地针对无条件指令的位28到31)以不同方式来解译。src2/cst字段1304指示第二源操作数,其来自对应寄存器堆的寄存器或作为取决于指令操作码字段的常数。取决于指令类型,当第二源操作数为常数时,其可被视为扩展到指定数据长度的无符号整数及零,或可被视为扩展到指定数据长度的带符号整数及符号。
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位1308(位1)指示标量数据路径侧A 115或向量数据路径侧B116。如果s=0,那么选择标量数据路径侧A 115,并且可用功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)及寄存器堆(全局标量寄存器堆211、L1/S1局部寄存器堆212、M1/N1局部寄存器堆213及D1/D2局部寄存器堆214)将是对应于如图2中所说明的标量数据路径侧A 115的功能单元及寄存器堆。类似地,s=1选择向量数据路径侧B 116,以及可用功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245及P单元246)及寄存器堆(全局向量寄存器堆231、L2/S2局部寄存器堆232、M2/N2/C局部寄存器堆233及谓词局部寄存器堆234)将是对应于如图2中所说明的向量数据路径侧B 116的功能单元及寄存器堆。
p位1308(位0)用于确定指令是否与随后指令并行执行。从较低地址到较高地址扫描p位。如果针对当前指令p=1,那么下一个指令与当前指令并行执行。如果针对当前指令的p=0,那么下一个指令在当前指令之后的循环中执行。所有并行执行的指令构成执行包。在一个实例实施例中,执行包可含有至多十二个指令用于并行执行,其中执行包中的每一指令被指派到不同功能单元。
在处理器100的一个实例实施例中,存在两个不同的条件码扩展槽(槽0及槽1)。在此实例实施例中,条件码扩展槽可为32位,如在图13中描述的编码格式1300一样。每一执行包可含有这些32位条件码扩展槽中的每一者,其含有用于同一执行包中的指令的4位creg/z字段(例如,类似于编码1300的位28到31)。图14说明用于条件码扩展槽0的实例编码,且图15说明用于条件码扩展槽1的实例编码。
图14说明用于条件码扩展槽0的实例编码1400。字段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单元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单元224及D2单元225指令的条件执行。如表1中所展示那样解译这些creg/z位。如果对应指令是有条件的(例如,creg/z位不全为0),那么条件码扩展槽0中的对应位将覆写指令(例如,使用编码格式1300编码)中的条件码位(creg字段1301及z位1302的位28到31)。在所说明实例中,没有执行包可具有引导到特定执行单元的一个以上指令,并且没有指令执行包可含有一个以上条件码扩展槽0。因此,creg/z位到功能单元指令的映射是明确的。如上文论述,将creg/z位设置为等于“0000”使得指令为无条件的。因此,正确编码的条件码扩展槽0可使一些对应指令为有条件的且使一些指令为无条件的。
图15说明用于条件码扩展槽1的实例编码1500。字段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位不全为0),那么条件码扩展槽1中的对应位将覆写指令(例如,使用编码格式1300编码的)中的条件码位(creg字段1301及z位1302的位28到31)。在所说明实例中,没有执行包可具有引导到特定执行单元的一个以上指令,并且没有指令执行包可含有一个以上条件码扩展槽1。因此,creg/z位到功能单元指令的映射是明确的。如上文论述,将creg/z位设置为等于“0000”使得指令为无条件的。因此,正确编码的条件码扩展槽1可使一些对应指令为有条件的且使一些指令为无条件的。
条件码扩展槽0 1400及条件码扩展槽1两者都可包含p位以定义执行包,如上文结合图13所描述。在一个实例实施例中,如图14及15中所说明,码扩展槽0 1400及条件码扩展槽1 1500的位0可提供p位。假定针对码扩展槽1400、1500的p位始终被编码为1(并行执行),码扩展槽1400、1500两者都不应是执行包的最后一个指令槽。
在处理器100的一个实例实施例中,存在两个不同的常数扩展槽。每一执行包可含有这些唯一32位常数扩展槽中的每一者,其含有待作为高阶位与指令编码1300中的5位常数字段串接以形成32位常数的27位。如在上文的指令编码1300描述中所指出,仅一些指令将5位src2/cst字段1304定义为常数而不是源寄存器识别符。那些指令中的至少部分可采用常数扩展槽以将此常数扩展到32位。
图16说明常数扩展槽0的实例编码1600。每一执行包可包含常数扩展槽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是说明可在处理器100中实施的常数扩展逻辑的框图1700。图17假定指令解码器113在同一执行包中检测到常数扩展槽及对应指令。指令解码器113将来自常数扩展槽的27个扩展位(位字段1601)及来自对应指令的5个常数位(位字段1304)供应到串接器1701。串接器1701由这两个部分形成单个32位字。在所说明实施例中,来自常数扩展槽的27个扩展位(位字段1601)是最高有效位,且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)、四字(128位)数据或半向量(256位)数据。
表2列出针对各种选项的符号扩展单元1703的操作。
表2
Figure BDA0002501771950000191
常数扩展槽0及常数扩展槽1两者都可包含p位以定义执行包,如上面结合图13所描述。在一个实例实施例中,如在条件码扩展槽的情况下,常数扩展槽0及常数扩展槽1的位0可提供p位。假定针对常数扩展槽0及常数扩展槽1的p位始终经编码为1(并行执行),那么常数扩展槽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单元246的操作基于一个以上向量比较而允许多种复合向量SIMD操作。举例来说,可使用两个比较来进行范围确定。将候选向量与具有打包在第一数据寄存器内的范围的最小值的第一向量参考进行比较。与具有打包在第二数据寄存器内的范围的最大值的第二参考向量进行候选向量的第二比较。两个所得谓词寄存器的逻辑组合将允许向量条件操作来确定候选向量的每一数据部分是在范围内还是在范围外。
L1单元221、S1单元222、L2单元241、S2单元242及C单元245通常以单指令多数据(SIMD)模式操作。在此SIMD模式下,将相同指令应用于来自两个操作数的打包数据。每一操作数保持安置在预定槽中的多个数据元素。SIMD操作通过在数据边界处进行进位控制来启用。此进位控制实现对变化的数据宽度的操作。
图18说明进位控制。“与”门1801接收操作数宽算术逻辑单元内的位N的进位输出(对于标量数据路径侧A 115功能单元为64位且对于向量数据路径侧B 116功能单元为512位)。“与”门1801还接收进位控制信号,这将在下文进一步解释。“与”门1801的输出被供应到操作数宽算术逻辑单元的位N+1的进位输入。例如“与”门1801的“与”门在可能数据边界处安置在每一对位之间。举例来说,对于8位数据,此“与”门将在位7与位8之间、在位15与位16之间、在位23与位24之间等等。每一此“与”门接收对应进位控制信号。如果数据大小具有最小值,那么每一进位控制信号为0,从而有效阻挡邻近位之间的进位传输。如果选定数据大小需要两个算术逻辑单元区段,那么对应进位控制信号为1。下文表3展示针对512位宽操作数(例如由向量数据路径侧B 116功能单元所使用的操作数)的案例的进位控制信号,其可分为8位、16位、32位,64位、128位或256位的区段。在表3中,上32位控制上位(位128到511)进位,且下32位控制下位(位0到127)进位。不需要控制最高有效位的进位输出,因此仅需要63个进位控制信号。
表3
Figure BDA0002501771950000201
通常,对为2的整数幂(2N)的数据大小执行操作。然而,此进位控制技术不限于2的整数幂。此技术适用于其它数据大小及其它操作数宽度。
处理器100包含用以执行经由D1单元225或D2单元226中的一者实施的表查找操作的专用指令。用于这些表查找操作的表被映射到一级数据高速缓存123可直接寻址存储器中。根据标题为“包含高速缓存及可直接寻址静态随机存取存储器的统一存储器系统架构”的第US 6,606,686号专利描述此表/高速缓存配置的实例。这些表可通过正常存储器操作(例如,经由直接存储器存取(DMA)端口),通过专用LUTINIT指令(如下文描述)或仅正常存储指令加载到含有表的存储器空间。在一个实例实施例中,处理器100支持至多4个单独的并行查找表组,并且在一组中,可用字节、半字或字元素大小并行查找至多16个表。根据此实施例,专用于直接寻址的存储器的一级数据高速缓存123的至少一部分具有16个库。这允许并行存取16个存储器位置,并且支持每表组至多16个表。
用独立指定基地址及索引地址存取这些查找表。查找表基地址寄存器(LTBR)指定针对每组并行表的基地址。每一查找表指令含有用于识别所述指令使用哪个基地址寄存器的设置编号。基于一级数据高速缓存123的可直接寻址部分的使用,每一基地址应与一级数据高速缓存123的高速缓存线大小对准。在一个实施例中,高速缓存线大小可为128字节。
用于每一组并行表的查找表配置寄存器设置到对应表组的控制信息。图19说明实例查找表配置寄存器1900的数据字段。提升字段1901(位24及25)在将元素存储到向量寄存器中之后设置提升的类型。如表4中所展示那样对提升字段1901进行解码。
表4
提升 描述
00 无提升
01 2x提升
10 4x提升
11 8x提升
字段1901编码00指示无提升。字段1901编码01指示2x提升。字段1901编码10指示4x提升。字段1901编码11指示8x提升。在一个实例实施例中,提升数据限于至多双字大小(64位)的数据大小。因此,在此实施例中:2x提升对于字节(从字节(8位)提升到半字(16位))、半字(从半字(16位)提升到字(32位))及字(从字(32位)提升到双字(64位))的数据元素大小有效;4x提升对于字节(从字节(8位)提升到字(32位))及半字(从字(16位)提升到双字(64位))的数据元素大小有效;且8x提升仅对字节(从字节(8位)提升到双字(64位))的数据元素大小有效。下文将进一步解释提升。
表大小字段1902(位16到23)设置表大小。如表5中所展示那样对表大小字段1902进行解码。
表5
Figure BDA0002501771950000221
存储在对应查找表基地址寄存器中的表基地址必须与查找表配置寄存器中指定的表大小对准。
带符号字段1903(位6)指示处理器100是否将经调用查找表元素视为带符号整数或无符号整数。如果带符号字段1903为1,那么处理器100将查找表元素视为带符号整数。如果带符号字段1903为0,那么处理器100将查找表元素视为无符号整数。
元素大小(E大小)字段1904(位3到5)指示查找表元素大小。如图6中所展示那样对元素大小字段1904进行解码。
表6
Figure BDA0002501771950000222
表数目(NTBL)字段1905(位0到2)指示待并行查找的表的数目。如表7中所展示那样对表数目字段1905进行解码。
表7
Figure BDA0002501771950000231
查找表启用寄存器2000指定特定表组所允许的操作类型。这在图20中说明。如图20中所展示,此实例采用单个寄存器中的字段来控制四个表组中的对应一者。字段2001控件表组3。字段2002控件表组2。字段2003控件表组1。字段2004控件表组0。如在表8中所展示那样各自对表启用字段2001、2002、2003及2004进行解码。
表8
表启用 描述
00 无查找表操作
01 所允许的读取操作
10 保留
11 所允许的读取及写入操作
如果表设置字段为01,那么允许从对应查找表基地址寄存器及对应查找表配置寄存器进行读取操作。如果表组字段为11,那么允许从对应查找表基地址寄存器及对应查找表配置寄存器进行读取操作,以及允许到对应查找表基地址寄存器及对应查找表配置寄存器的写入操作。如果表组字段为00,那么不允许进行任何查找表操作。
每一查找表指令将向量寄存器指定为操作数。通过对应于指令的查找表操作,将此向量寄存器视为一组32位查找表索引。表9展示基于由对应查找表配置寄存器的表数目字段1906控制的表组的数目表的向量操作数寄存器中的向量索引的编码。
表9
向量寄存器位 索引 1个表 2个表 4个表 8个表 16个表
Vx[31:0] 索引0 有效 有效 有效 有效 有效
Vx[63:32] 索引1 - 有效 有效 有效 有效
Vx[95:64] 索引2 - - 有效 有效 有效
Vx[127:96] 索引3 - - 有效 有效 有效
Vx[159:128] 索引4 - - - 有效 有效
Vx[191:160] 索引5 - - - 有效 有效
Vx[223:192] 索引6 - - - 有效 有效
Vx[255:224] 索引7 - - - 有效 有效
Vx[287:256] 索引8 - - - - 有效
Vx[319:288] 索引9 - - - - 有效
Vx[351:320] 索引10 - - - - 有效
Vx[383:352] 索引11 - - - - 有效
Vx[415:384] 索引12 - - - - 有效
Vx[447:416] 索引13 - - - - 有效
Vx[479:448] 索引14 - - - - 有效
Vx[511:480] 索引15 - - - - 有效
取决于在对应查找表配置寄存器1900的表字段1906的编号中指定的表的数目,向量寄存器位指定各种索引。用于查找表操作的第一个表内的表元素的地址是存储在基地址寄存器中的基地址加上由向量寄存器值的位0到31指定的索引。用于查找表操作的第二个表内的表元素的地址(假定由表字段1906的数目指定至少两个表)是存储在基地址寄存器中的基地址加上由向量寄存器的位32到63指定的索引。类似地,向量寄存器指定针对所指定的每一表的偏移。
下文是根据一个实例实施例的查找表读取(LUTRD)指令的形式。
LUTDR tbl_index,tbl_set,dstTbl_index是通过寄存器编号指定向量寄存器(例如在通用向量寄存器堆231内)的指令操作数。如表9中所展示那样将此解译为索引编号。Tbl_set是编号[0:3],其指定指令中采用的表组。此命名表组编号指定:存储表基地址的对应查找表基地址寄存器,其可为标量寄存器或向量寄存器;对应查找表配置寄存器(图19),其可为标量寄存器或向量寄存器;及查找表启用寄存器的对应操作部分(图20),其可为标量寄存器或向量寄存器。对应于命名表组的查找表基地址寄存器确定表组的基地址。由Tbl_index命名的向量寄存器的索引从此表组基地址偏移。对应于命名表组的查找表配置寄存器确定:提升模式(表4);分配到表大小的存储器量(表5);数据元素大小(表6);以及表组中表的数目。Dst是指令操作数,其通过寄存器编号指定向量寄存器(例如在通用向量寄存器堆231内)作为表查找操作的目的地。由这些其它参数指定的从表调用的数据打包并存储在此目的地寄存器中。提升过程不会增加任何性能损失。
图21说明当对应查找表配置寄存器1900为那个表组指定一个表时的查找表组织。一级数据高速缓存123包含可直接寻址存储器的一部分,其包含查找表下方的部分2111、查找表及查找表上方的部分2112。对应查找表组基地址寄存器2101指定表组的开始。在图21的实例中,表数目字段1905指定单个表。分配到表组的存储器的端由表大小字段1902指定。索引源寄存器2102指定用以对表进行寻址的单个偏移(索引iA)。如图21中所展示,单个表采用所有16个存储器库。
图22说明当对应查找表配置寄存器1900为那个表组指定两个表时的查找表组织。查找表组基地址寄存器2101指定表组的开始。表数目字段1905指定两个表。分配到表组的存储器的端由表大小字段1902指定。索引源寄存器2102指定用以对表进行寻址的两个偏移。第一索引iA对表1进行寻址,且第二索引iB对表2进行寻址。表1数据存储在存储器库1到8中。表2数据存储在存储器库9到16中。
图23说明当对应查找表配置寄存器1900为那个表组指定四个表时的查找表组织。查找表组基地址寄存器2101指定表组的开始。表数目字段1905指定四个表。分配到表组的存储器的端由表大小字段1902指定。索引源寄存器2102指定用以对表进行寻址的四个偏移。第一索引iA对表1进行寻址,第二索引iB对表2进行寻址,第三索引iC对表3进行寻址,且第四索引iD对表4进行寻址。表1数据存储在存储器库1到4中。表2数据存储在存储器库5到8中。表3数据存储在存储器库9到12中。表4数据存储在存储器库13到16中。
图24说明当对应查找表配置寄存器1900为那个表组指定八个表时的查找表组织。查找表组基地址寄存器2101指定表组的开始。表数目字段1905指定八个表。分配到表组的存储器的端由表大小字段1902指定。索引源寄存器2102指定用以寻址表的八个偏移。第一索引iA对表1进行寻址,第二索引iB对表2进行寻址,第三索引iC对表3进行寻址,第四索引iD对表4进行寻址,第五索引iE对表5进行寻址,第六索引iF对表6进行寻址,第七索引iG对表7进行寻址,且第八索引iH对表8进行寻址。表1数据存储在存储器库1及2中。表2数据存储在存储器库3及4中。表3数据存储在存储器库5及6中。表4数据存储在存储器库7及8中。表5数据存储在存储器库9及10中。表6数据存储在存储器库11及12中。表7数据存储在存储器库13及14中。表8数据存储在存储器库15及16中。
图25说明当对应查找表配置寄存器1900为那个表组指定十六个表时的查找表组织。查找表组基地址寄存器2101指定表组的开始。表数目字段1905指定十六个表。分配到表组的存储器的端由表大小字段1902指定。索引源寄存器2102指定用以对表进行寻址的十六个偏移。第一索引iA对表1进行寻址,第二索引iB对表2进行寻址,第三索引iC对表3进行寻址,第四索引iD对表4进行寻址,第五索引iE对表5进行寻址,第六索引iF对表6进行寻址,第七索引iG对表7进行寻址,第八索引iH对表8进行寻址,第九索引iI对表9进行寻址,第十索引iJ对表10进行寻址,第十一索引iK对表11进行寻址,第十二索引iL对表12进行寻址,第十三索引iM对表13进行寻址,第十四索引iN对表14进行寻址,第十五索引iO对表15进行寻址,且第十六索引iP对表16进行寻址。表1数据存储在存储器库1中。表2数据存储在存储器库2中。表3数据存储在存储器库3中。表4数据存储在存储器库4中。表5数据存储在存储器库5中。表6数据存储在存储器库6中。表7数据存储在存储器库7中。表8数据存储在存储器库8中。表9数据存储在存储器库9中。表10数据存储在存储器库10中。表11数据存储在存储器库11中。表12数据存储在存储器库12中。表13数据存储在存储器库13中。表14数据存储在存储器库14中。表15数据存储在存储器库15中。表16数据存储在存储器库16中。
图26说明查找表读取指令的操作的实例。在图26中所说明实例中,对应查找表配置寄存器(1900)指定四个并行表,数据元素大小为字节(8位),并且没有提升。为执行查找表操作,对应于选定表组的查找表启用寄存器字段(在寄存器2000中)必须启用读取操作(01)或读取及写入操作(11)两者。
对应于指定表组的查找表基地址寄存器2101存储用于查找表组的基地址,如图26中示意性说明。表数据存储在配置为可直接存取的存储器的一级数据高速缓存123的一部分中,例如在标题为“包含高速缓存及可直接寻址静态随机存取存储器的统一存储器系统架构”的第US 6,606,686号专利中所描述。
图26中说明的实例具有四个表:表1 2611;表2 2612;表3 2613;及表4 2614。如表9所展示,具有这些选定选项的此指令将存储在向量源索引寄存器2102中的数据视为指定表偏移的一组4个32位字段。第一字段(位Vx[31:0])存储iA,即到第一表2611中的索引。在此实例中,此索引到元素A5。第二字段(位Vx[63:32])存储iB,即到第二表2612中的索引。在此实例中,此索引到元素B1。第三字段(位Vx[95:64])存储iC,即到第三表2613中的索引。在此实例中,此索引到元素C8。第四字段(位Vx[127:96])存储iD,即到第四表2611中的索引。在此实例中,此索引到元素D10。各种索引是从针对表组的基地址到指定数据元素的存储器地址偏移。根据此查找表读取指令的操作,表1 2611(A5)中的索引数据元素存储在目的地寄存器2120中的第一数据槽中。表2 2612(B1)中的索引数据元素存储在目的地寄存器2120中的第二数据槽中。表3 2613(C8)中的索引数据元素存储在目的地寄存器2120中的第三数据槽中。表4 2614(D10)中的索引数据元素存储在目的地寄存器2120中的第四数据槽中。根据此实例实施方案,目的地寄存器2120的其它数据槽填零。
查找表读取指令将从表调用的数据直接映射到目的地寄存器2120的向量通道。所述指令将较早元素映射到较低通道编号,而将较晚元素映射到较高通道编号。查找表读取指令以增加的通道顺序将元素存放在向量中。查找表读取指令用从表调用的元素填充目的地寄存器2120的每一向量通道。如果调用数据不等于向量长度,那么查找表读取指令用零填补目的地寄存器2120的多余通道。
当启用提升模式时(对应查找表配置寄存器1900的提升字段1901≠00),查找表读取指令将每一所调用数据元素提升到更大大小。图27说明根据实例实施例的查找表读取指令的操作的实例。图27说明除启用2x提升(提升字段1901为01)之外类似于图26的操作。如在图26中,向量源索引寄存器2102的四个索引中的每一者从对应表调用数据元素。图27说明与图26中不同地将这些数据元素放置在目的地寄存器2120中。每一所调用数据元素与大小相等的扩展一起存储在目的地寄存器2120中的槽中。此扩展经形成为对应于对应查找表配置寄存器的带符号字段1904的带符号/无符号指示。如果带符号字段1904指示无符号(0),那么扩展将填零。如果带符号字段1904指示带符号(1),那么扩展槽用与对应数据元素的最高有效位(符号位)相同的值填充。这将数据元素视为带符号整数。
图28说明根据实例实施例的查找表读取指令的操作的实例。图27说明除启用4x提升(提升字段1901为10)之外类似于图26的操作。向量源索引寄存器2101的四个索引中的每一者从每一表调用数据元素。图2说明与图21中不同地将这些数据元素放置在目的地寄存器2120中。每一所调用数据元素与三个大小相等的扩展一起存储在目的地寄存器2420中的槽中。这些扩展形成为对应于对应查找表配置寄存器的带符号字段1904的带符号/无符号指示。
将类似地实施一个字节的数据元素大小。可类似地实现8x的提升因子。本文描述的原理适用于选定表组内的其它数目的查找表。
图29A及29B一起说明提升实施方案的实例实施例。临时寄存器2950接收从一级数据高速缓存123调用的表数据。临时寄存器2950包含布置在16个1字节块通道1到通道16中的16个字节。应注意,这些通道的长度各自等于在元素大小字段1905中可指定的数据大小的最小值。在此实例中其为1字节/8位。扩展元素2901到2908形成对相应通道1到8的扩展。多个多路复用器2932到2946将输入通道从临时寄存器2950耦合到目的地寄存器2102的对应通道。并非临时寄存器2950的所有输入通道都耦合到每一个多路复用器2932到2946。许多多路复用器2932到2946也接收扩展输入及一或多个扩展元素2901到2908。请注意,没有多路复用器供应输出寄存器2102的通道1。在此所说明实施例中,目的地寄存器2102的通道1始终由临时寄存器2905的通道1供应。
图30说明图29A的示范性延伸元素N。临时寄存器2950的数据元素N的符号位(S)供应对应扩展多路复用器3001的一个输入。带符号整数的符号位是值的最高有效位,如图30中所展示。常数0供应多路复用器3001的第二输入。多路复用器3001及对应于其它输入数据元素的其它类似多路复用器由带符号/无符号信号控制。此带符号/无符号信号基于对应查找表配置寄存器1900的带符号字段1904。如果带符号字段1904为0,那么多路复用器3001(以及针对其它输入通道的对应多路复用器)选择常数0输入。如果带符号字段1904为1,那么多路复用器3001(以及针对其它输入通道的对应多路复用器)选择符号位输入。选定扩展被供应到扩展元素3002。扩展元素3002将由多路复用器3001选择的位扩张达到通道大小。根据此实例,通道大小经选择以等于1字节的最小表数据元素大小。对于等于通道大小的指定表数据大小并且其中带符号字段1904为0,下一个数据槽用0填充,从而实现零扩展。如果带符号字段1904为1,那么下一个数据槽用数据元素的符号位填充,从而实现符号扩展。多路复用器2932到2946选择对应于指定表数据元素大小的适当扩展。如果选定表数据元素大小是半字,那么控制多路复用器2932到2946以从交替扩展元素选择扩展。如果选定表数据元素大小是字,那么控制多路复用器2932到2946以从每第四个扩展元素选择扩展。
多路复用器2932到2946由图31中所说明的多路复用器控制编码器3110控制。多路复用器控制编码器3110接收元素数据大小输入(元素大小字段1905)、提升指示(提升字段1901),并产生针对多路复用器2932到2946的对应控制信号。并非所有输入字节都可供应每一输出字节。表10说明此控制。表10展示根据实例实施例的针对各种数据大小及提升模式的目的地寄存器2102的16个通道中的每一者的源数据。
表10
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
--1x 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
b-2x e8 8 e7 7 e6 6 e5 5 e4 4 e3 3 e2 2 e1 1
b-4x e4 e4 e4 4 e3 e3 e3 3 e2 e2 e2 2 e1 e1 e1 1
b-8x e2 e2 e2 e2 e2 e2 e2 2 e1 e1 e1 e1 e1 e1 e1 1
hw-2x e8 e8 8 7 e6 e6 6 5 e4 e4 4 3 e2 e2 2 1
hw-4x e4 e4 e4 e4 e4 e4 4 3 e2 e2 e2 e2 e2 e2 2 1
w-2x e8 e8 e8 e8 8 7 6 5 e4 e4 e4 e4 4 3 2 1
应注意,目的地寄存器2102的通道1始终与临时寄存器2950的通道1相同,而不管选定数据大小或提升因子如何。专用于通道1的列包含所有1's,且图29A说明临时寄存器2950的通道1与目的地寄存器2102之间的直连接。表10的第一行展示针对没有提升(1x),目的地寄存器2101的每一通道与临时寄存器2930相同,而不管选定表数据元素数据大小如何。对于字节的数据大小及提升因子2(b-2x),多路复用器2932选择通道1的扩展(e1),多路复用器2933选择输入通道2的数据,多路复用器2934选择通道2的扩展(e2),多路复用器2935选择输入通道3的数据,多路复用器2936选择通道3的扩展(e3),等等。对于字节的数据大小及提升因子4(b-4x),多路复用器2932到2934选择通道1的扩展(e1),多路复用器2935选择输入通道2的数据,且多路复用器2936到2938选择通道2的扩展(e2),多路复用器2939选择输入通道3的数据,多路复用器2940到2942选择通道3的扩展(e3),等等。对于字节的数据大小及提升因子8(b-8x),多路复用器2932到2938选择通道1的扩展(e1),多路复用器2939选择输入通道2的数据,多路复用器2940到2446选择通道2的扩展(e2)。对于半字的数据大小及提升因子2(hw-2x),多路复用器2932选择通道2的数据,多路复用器2933及2934选择通道2的扩展(e2),多路复用器2935选择通道3的数据,多路复用器2936选择通道4的数据,多路复用器2937及2938选择通道4的扩展(e4),等等。对于半字的数据大小及提升因子4(hw-4X),多路复用器2932选择通道2的数据,多路复用器2933到2938选择通道2的扩展(e2),多路复用器2939选择通道3的数据,多路复用器2940选择通道4的数据,且多路复用器2941及2946选择通道4的扩展(e4)。对于字的数据大小及提升因子3(w-2x),多路复用器2932选择通道2的数据,多路复用器2933选择通道3的数据,多路复用器2934选择通道4的数据,多路复用器2935到2938选择通道4的扩展(e4),多路复用器2939选择通道5的数据,多路复用器2940选择通道6的数据,多路复用器2941选择通道7的数据,多路复用器2942选择通道8的数据,且多路复用器2943到2946选择通道8的扩展。如先前描述,这些是此实例中支持的数据大小及提升因子的所有组合。
如将理解,本文中仅通过实例的方式提供上文描述及关于查找表操作的各种技术。因此,应理解,此描述不应被解释为仅限于以上提供的实例。应进一步了解,本文描述的各种查找表操作技术可以任何合适的方式实施,其包含硬件(合适配置的电路)、软件(例如,经由包含存储在一或多个非暂时性有形计算机可读媒体上的可执行码的计算机程序),或经由使用硬件元件及软件元件两者的组合。
修改在所描述布置中是可能的,并且其它布置在权利要求书的范围内是可能的。

Claims (11)

1.一种数字数据处理器,其包括:
指令存储器,其存储指令,所述指令各自指定数据处理操作及至少一个数据操作数字段;
指令解码器,其连接到所述指令存储器以用于循序地从所述指令存储器调用指令,并确定所述数据处理操作及所述至少一个数据操作数;及
至少一个操作单元,其连接到数据寄存器堆及指令解码器,以对对应于由所述指令解码器解码的指令的至少一个操作数执行数据处理操作,并存储所述数据处理操作的结果,其中所述至少一个操作单元经配置以通过以下方式响应于查找表读取指令来执行表调用:
从指定数目的至少一个表中的指定位置调用数据元素,所述所调用数据元素具有指定数据大小;及
将所述所调用数据元素存储在目的地寄存器的连续槽中,其中每一所调用数据元素经提升而以比所述指定数据大小更大的数据大小存储在所述目的地寄存器中。
2.根据权利要求1所述的数字数据处理器,其中:
所述数据寄存器堆包含由寄存器编号指定的多个数据寄存器,每一数据寄存器存储数据;
所述查找表读取指令包含目的地操作数字段,其指定所述数据寄存器堆中的所述数据寄存器中的一者的寄存器编号;且
所述指令解码器经配置以对所述查找表读取指令进行解码,以将具有所述目的地操作数字段的所述寄存器编号的所述数据寄存器识别为所述目的地寄存器。
3.根据权利要求2所述的数字数据处理器,其中所述指令解码器经配置以对所述查找表读取指令进行解码,以将存储在对应于所述指定寄存器编号的所述数据寄存器中的源操作数的部分用作到所述调用的所述指定位置的指针。
4.根据权利要求3所述的数字数据处理器,其中:
所述查找表读取指令指定存储表基地址的查找表基地址寄存器;且
所述指令解码器经配置以对所述查找表读取指令进行解码,以将所述指针用作到存储在所述查找表基地址寄存器中的所述表基地址的偏移。
5.根据权利要求1所述的数字数据处理器,其中所述查找表读取指令指定具有指示所述指定数据大小的查找表数据元素大小字段的查找表配置寄存器。
6.根据权利要求5所述的数字数据处理器,其中所述查找表配置寄存器包含指定在所述指定数据大小与所述较大数据大小之间的提升因子的提升字段。
7.根据权利要求6所述的数字数据处理器,其中所述提升字段经配置以指示从无提升、2x提升、4x提升及8x提升中的一者选择的提升因子。
8.根据权利要求5所述的数字数据处理器,其中:
所述查找表配置寄存器包含指示无符号或带符号的符号字段;
响应于所述查找表读取指令,所述至少一个操作单元经配置以在所述符号字段指示无符号时将所述目的地寄存器中的扩展位存储为0,并且在所述符号字段指示带符号时将所述扩展位存储为所述所调用数据元素的最高有效位;且
扩展位的数目等于所述较大数据大小与所述指定数据大小之间的差。
9.根据权利要求5所述的数字数据处理器,其中所述查找表配置寄存器包含指定所述至少一个表中的每一者的大小的表大小字段。
10.根据权利要求5所述的数字数据处理器,其中所述查找表配置寄存器包含指定表集的数个表的字段。
11.根据权利要求1所述的数字数据处理器,其进一步包括:
一级数据存储器,其包括:
第一部分,其包含连接到所述至少一个操作单元的一级数据高速缓存,其中所述第一部分经配置以存储供所述至少一个操作单元操纵的数据,其中所述一级数据高速缓存服务于所述至少一个操作单元的存储器读取及写入;及
第二部分,其包含可经由所述至少一个操作单元直接存取的存储器,其中所述至少一个表存储在所述一级数据存储器的所述第二部分中;
其中所述至少一个操作单元响应于所述查找表读取指令而从其调用所述数据元素的位置在所述一级数据存储器的所述第二部分中。
CN201880075362.3A 2017-12-28 2018-12-12 具有数据元素提升的查找表 Pending CN111406286A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762611395P 2017-12-28 2017-12-28
US62/611,395 2017-12-28
US15/940,283 2018-03-29
US15/940,283 US10761850B2 (en) 2017-12-28 2018-03-29 Look up table with data element promotion
PCT/US2018/065240 WO2019133258A1 (en) 2017-12-28 2018-12-12 Look up table with data element promotion

Publications (1)

Publication Number Publication Date
CN111406286A true CN111406286A (zh) 2020-07-10

Family

ID=67058232

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880075362.3A Pending CN111406286A (zh) 2017-12-28 2018-12-12 具有数据元素提升的查找表

Country Status (3)

Country Link
US (2) US10761850B2 (zh)
CN (1) CN111406286A (zh)
WO (1) WO2019133258A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200183837A1 (en) * 2018-12-07 2020-06-11 Samsung Electronics Co., Ltd. Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning
US11029954B2 (en) * 2019-04-22 2021-06-08 Samsung Electronics Co., Ltd. Per-lane dynamic indexing in temporary registers
US11226822B2 (en) * 2019-05-27 2022-01-18 Texas Instmments Incorporated Look-up table initialize
US11442729B2 (en) * 2020-10-26 2022-09-13 Google Llc Bit-packed array processing using SIMD
US11726773B2 (en) 2021-05-19 2023-08-15 Micro Focus Llc Software supply chain quality control evaluation using blockchain

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US6829696B1 (en) * 1999-12-30 2004-12-07 Texas Instruments Incorporated Data processing system with register store/load utilizing data packing/unpacking
US20050066131A1 (en) * 2003-09-24 2005-03-24 Arm Limited Apparatus and method for loading data values
CN101382884A (zh) * 2007-09-07 2009-03-11 上海奇码数字信息有限公司 指令编码方法、指令编码系统及数字信号处理器
CN102356378A (zh) * 2009-05-27 2012-02-15 密克罗奇普技术公司 具有隐式混合操作数的数字信号处理引擎
CN107077332A (zh) * 2014-12-23 2017-08-18 英特尔公司 执行矢量饱和双字/四倍字长加法的指令和逻辑

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5119484A (en) * 1987-02-24 1992-06-02 Digital Equipment Corporation Selections between alternate control word and current instruction generated control word for alu in respond to alu output and current instruction
US5644787A (en) * 1993-08-03 1997-07-01 Seiko Epson Corporation Apparatus for controlling data transfer between external interfaces through buffer memory using table data having transfer start address transfer count and unit selection parameter
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6754809B1 (en) 1999-12-30 2004-06-22 Texas Instruments Incorporated Data processing apparatus with indirect register file access
EP1182565B1 (en) * 2000-08-21 2012-09-05 Texas Instruments France Cache and DMA with a global valid bit
US7681013B1 (en) 2001-12-31 2010-03-16 Apple Inc. Method for variable length decoding using multiple configurable look-up tables
US20040073773A1 (en) * 2002-02-06 2004-04-15 Victor Demjanenko Vector processor architecture and methods performed therein
US6832296B2 (en) * 2002-04-09 2004-12-14 Ip-First, Llc Microprocessor with repeat prefetch instruction
GB2409060B (en) * 2003-12-09 2006-08-09 Advanced Risc Mach Ltd Moving data between registers of different register data stores
US7539851B2 (en) * 2006-05-18 2009-05-26 Sun Microsystems, Inc. Using register readiness to facilitate value prediction
US8065506B2 (en) 2007-08-17 2011-11-22 Texas Instruments Incorporated Application specific instruction set processor for digital radio processor receiving chain signal processing
US7890702B2 (en) * 2007-11-26 2011-02-15 Advanced Micro Devices, Inc. Prefetch instruction extensions
US20110280314A1 (en) 2010-05-12 2011-11-17 Texas Instruments Incorporated Slice encoding and decoding processors, circuits, devices, systems and processes
US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
US11182200B2 (en) * 2017-06-29 2021-11-23 Texas Instruments Incorporated Streaming engine with short cut start instructions

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US6829696B1 (en) * 1999-12-30 2004-12-07 Texas Instruments Incorporated Data processing system with register store/load utilizing data packing/unpacking
US20050066131A1 (en) * 2003-09-24 2005-03-24 Arm Limited Apparatus and method for loading data values
CN101382884A (zh) * 2007-09-07 2009-03-11 上海奇码数字信息有限公司 指令编码方法、指令编码系统及数字信号处理器
CN102356378A (zh) * 2009-05-27 2012-02-15 密克罗奇普技术公司 具有隐式混合操作数的数字信号处理引擎
CN107077332A (zh) * 2014-12-23 2017-08-18 英特尔公司 执行矢量饱和双字/四倍字长加法的指令和逻辑

Also Published As

Publication number Publication date
WO2019133258A1 (en) 2019-07-04
US20200394038A1 (en) 2020-12-17
US10761850B2 (en) 2020-09-01
US20190205132A1 (en) 2019-07-04

Similar Documents

Publication Publication Date Title
CN111406286A (zh) 具有数据元素提升的查找表
CN109144568B (zh) 将有效位通道作为矢量断言暴露于cpu
US9652392B2 (en) Using L1 cache as re-order buffer
US11397583B2 (en) Conditional execution specification of instructions using conditional extension slots in the same execute packet in a VLIW processor
US20240028338A1 (en) Histogram operation
US20230325189A1 (en) Forming Constant Extensions in the Same Execute Packet in a VLIW Processor
CN111984316A (zh) 用于在处理器中比较源数据的方法和设备
CN111984313A (zh) 矢量位转置
CN111984314A (zh) 使用位反转顺序的矢量存储
US11900112B2 (en) Vector reverse
CN113841126A (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