CN113841126A - 存储寄存器数据元素的处理器、系统及方法 - Google Patents
存储寄存器数据元素的处理器、系统及方法 Download PDFInfo
- Publication number
- CN113841126A CN113841126A CN202080036966.4A CN202080036966A CN113841126A CN 113841126 A CN113841126 A CN 113841126A CN 202080036966 A CN202080036966 A CN 202080036966A CN 113841126 A CN113841126 A CN 113841126A
- Authority
- CN
- China
- Prior art keywords
- processor
- data elements
- registers
- type
- vector
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 14
- 239000013598 vector Substances 0.000 claims description 141
- 239000012530 fluid Substances 0.000 claims 6
- 230000000873 masking effect Effects 0.000 claims 3
- 230000000903 blocking effect Effects 0.000 claims 1
- 210000004027 cell Anatomy 0.000 description 36
- 238000012545 processing Methods 0.000 description 27
- 230000009977 dual effect Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 210000004457 myocytus nodalis Anatomy 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 239000000523 sample Substances 0.000 description 3
- 210000003771 C cell Anatomy 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control 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/30098—Register arrangements
- G06F9/30105—Register structure
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- 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/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
本发明公开一种存储寄存器数据元素以与不同寄存器的数据元素交错的方法、其处理器(1212)及其系统,其中寄存器的每一非连续数据元素经检索以在执行交错存储指令时经存储以与不同寄存器的每一非连续数据元素交错,其中指示其中存储所述非连续数据元素的存储空间的通道的掩码指令与所述交错存储指令结合执行,并且其中第二类型的处理器(1222)经配置以仿真第一类型的处理器(1212)以存储与存储在所述第一类型处理器(1212)中的非连续数据元素相同的所述非连续数据元素。
Description
背景技术
数字信号处理器(DSP)经优化用于处理可从各种输入信号(例如传感器数据、视频流、语音信道、雷达信号、生物医学信号等)导出的数据流。对实时数据进行操作的数字信号处理器可接收输入数据流,对数据流执行滤波功能(例如编码或解码),并输出经变换数据流。实例应用程序需要存储器存取来加载数据寄存器文件中的数据寄存器,且接着将来自数据寄存器的数据供应到执行数据处理的功能单元。
一或多个DSP处理核心可与单个集成电路(IC)裸片上的各种外围电路、存储器块等组合,以形成芯片上系统(SoC)。这些系统可包含共享芯片上及芯片外存储器的使用的多个互连处理器。处理器可包含指令高速缓存(ICache)及数据高速缓存(DCache)的某一组合以改进处理。此外,多个处理器(在其当中共享存储器)可并入单个嵌入式系统中。处理器可在物理上共享同一存储器。
现代微处理器可分若干步骤执行指令。这些步骤包含从存储器读取指令、解码指令、读取待操作的值、执行操作以及将结果写入存储装置的步骤。有时被称为“管线处理”,执行这些步骤的处理器在不同阶段(即“在管线中”)同时执行若干指令。在此操作模式中,处理器可在解码前一指令、读取用于较早指令的输入值等时提取指令。通过重叠指令的执行,提高处理器可执行指令的速率。
在现代微处理器中,单个指令对多个数据的并行操作也是可能的。单个指令同时对多个数据进行操作的并行操作称为单指令多数据(SIMD)处理。提高SIMD处理效率的一种方法是从存储空间(例如,主存储器或更高阶高速缓存)加载多个数据或将多个数据存储到所述存储空间。
每一微处理器可在各种方面与其它微处理器不同。例如,在存储器中具有两个存储体的微处理器以不同于在存储器中具有四个存储体的微处理器的方式从存储器或高速缓存加载数据及将数据存储到存储器或高速缓存。为微处理器编写的程序或代码可能需要重新写入以便在具有不同存储器存取及管理架构的微处理器上运行。
发明内容
此描述大体上涉及DSP领域。更具体来说,但不通过限制的方式,此描述的方面涉及一种用于由处理器执行交错存储指令的方法。根据此描述的方面,由第二类型处理器执行用于交错待存储的处理器的寄存器的值的指令以仿真第一类型处理器。根据此描述的方面,将由第二类型处理器执行的用于交错值的指令从指令转译为第一类型处理器的寄存器的交错值。根据一些方面,第一类型处理器的寄存器及第二类型处理器的寄存器具有不同大小。
根据一些方面,第二类型处理器寄存器的交错值包括存储在第二类型处理器寄存器中的每一者中的向量的数据元素。第二类型处理器中的每一者的向量为也可存储在第一类型处理器寄存器中的大小。第二类型处理器阻塞其寄存器的一或多个通道使得寄存器中的每一者的大小匹配其相应向量的大小。
附图说明
针对关于各种实例的详细描述,现在将参考附图,其中:
图1说明双标量/向量数据路径处理器的实例。
图2说明图1中所说明的双标量/向量数据路径处理器中的寄存器文件及功能单元。
图3说明全局标量寄存器文件。
图4说明由算术功能单元共享的本地标量寄存器文件。
图5说明由乘法功能单元共享的本地标量寄存器文件。
图6说明由加载/存储单元共享的本地标量寄存器。
图7说明全局向量寄存器文件。
图8说明谓词寄存器文件。
图9说明由算术功能单元共享的本地向量寄存器文件。
图10说明由乘法及关联功能单元共享的本地向量寄存器文件。
图11说明此实例的中央处理器的管线阶段。
图12说明存储寄存器数据元素以与不同寄存器的数据元素交错的系统;及
图13A到13D说明图12中说明的系统的寄存器及存储器。
具体实施方式
在图式中,为了一致性,相同元件由相同参考编号表示。
图1说明包含双标量/向量数据路径115、116的实例处理器100。处理器100包含流式引擎125、一级指令高速缓存(L1I)121及一级数据高速缓存(L1D)123。处理器100进一步包含保存指令及数据两者的二级组合指令/数据高速缓存(L2)130。
图1说明L1I高速缓存121与L2组合指令/数据高速缓存130之间通过512位总线142的连接。图1进一步说明L1D高速缓存123与L2组合指令/数据高速缓存130、512位总线145之间的连接。在处理器100的实例中,L2组合指令/数据高速缓存130存储备份L1I高速缓存121的指令及备份L1D高速缓存123的数据。在一个实例中,L2组合指令/数据高速缓存130使用图1中未说明的已知或后来开发的存储器系统技术进一步连接到更高级别的高速缓存及/或存储器。
在各种实例中,L1I高速缓存121、L1D高速缓存123及L2高速缓存130的大小可以不同大小实施;在此实例中,L1I高速缓存121及L1D高速缓存123各自为32千字节,且L2高速缓存130为1024千字节。在一个实例中,中央处理单元核心110、L1I高速缓存121、L1D高速缓存123及L2组合指令/数据高速缓存130形成在单个集成电路上。单个化集成电路可包含其它电路。
中央处理单元核心110如由指令提取单元111控制从L1I高速缓存121提取指令。指令提取单元111确定待执行的下一个指令,并调用此类指令的提取分组大小的集合。在高速缓存命中时直接从L1I高速缓存121提取指令(如果这些指令存储在L1I高速缓存121中)。在高速缓存未命中时(指定指令提取分组未存储在L1I高速缓存121中),在L2组合高速缓存130中查找这些指令。在一个实例中,L1I高速缓存121中的高速缓存线的大小等于提取分组的大小,其为512位。
这些指令的存储器位置是L2组合高速缓存130中的命中或未命中。从L2组合高速缓存130服务命中。从更高级别的高速缓存(未说明)或从主存储器(未说明)服务未命中。在一个实例中,所请求指令同时供应到L1I高速缓存121及中央处理单元核心110以加快使用速度。
在图1中,中央处理单元核心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中的每一者包含并行操作的多个功能单元。标量数据路径侧A 115与向量数据路径侧B 116之间的数据路径117允许数据交换。
中央处理单元核心110包含其它非基于指令的模块。仿真单元118允许响应于指令来确定中央处理单元核心110的机器状态。能力可用于算法开发。中断/异常单元119使得中央处理单元核心110能够响应外部异步事件(中断)并对执行不当操作(异常)的尝试做出响应。
处理器100包含流式引擎125。流式引擎125供应来自预定地址的两个数据流,其可高速缓存在L2组合高速缓存130中,到中央处理单元核心110的向量数据路径侧B的寄存器文件。这提供从存储器(如高速缓存在L2组合高速缓存130中)直接到功能单元操作数输入的受控数据移动。
图1进一步说明各种部件之间总线的实例数据宽度。L1I高速缓存121经由总线141向指令提取单元111供应指令。在一个实例中,总线141是512位总线。总线141从L1I高速缓存121到中央处理单元110是单向的。L2组合高速缓存130经由总线142向L1I高速缓存121供应指令。在一个实例中,总线142是512位总线。总线142从L2组合高速缓存130到L1I高速缓存121是单向的。
L1D高速缓存123经由总线143与标量数据路径侧A 115中的寄存器文件交换数据。在一个实例中,总线143是64位总线。L1D高速缓存123经由总线144与向量数据路径侧B 116中的寄存器文件交换数据。在一个实例中,总线144是512位总线。总线143及144被说明为双向的,从而支持中央处理单元110数据读取及数据写入两者。L1D高速缓存123经由总线145与L2组合高速缓存130交换数据。在一个实例中,总线145是512位总线。总线145被说明为双向的,从而支持中央处理单元110数据读取及数据写入两者的高速缓存服务。
处理器数据请求在高速缓存命中时直接从L1D高速缓存123提取(如果所请求数据存储在L1D高速缓存123中)。在高速缓存未命中时(指定数据未存储在L1D高速缓存123中),在L2组合高速缓存130中查找数据。此所请求数据的存储器位置是L2组合高速缓存130中的命中或未命中。从L2组合高速缓存130服务命中。从另一级别的高速缓存(未说明)或从主存储器(未说明)服务未命中。所请求数据可同时供应到L1D高速缓存123及中央处理单元核心110以加速使用。
L2组合高速缓存130经由总线146将第一数据流的数据供应到流式引擎125。在一个实例中,总线146是512位总线。流式引擎125经由总线147将此第一数据流的数据供应到向量数据路径B 116的功能单元。在一个实例中,总线147是512位总线。L2组合高速缓存130经由总线148将第二数据流的数据供应到流式引擎125。在一个实例中,总线148是512位总线。流式引擎125经由总线149将此第二数据流的数据供应到向量数据路径侧B 116的功能单元,在一个实例中,总线149是512位总线。根据一个实例,总线146、147、148及149被说明为从L2组合高速缓存130到流式引擎125以及到向量数据路径侧B 116为单向的。
流式引擎数据请求在高速缓存命中时直接从L2组合高速缓存130提取(如果所请求数据存储在L2组合高速缓存130中)。在高速缓存未命中时(指定数据未存储在L2组合高速缓存130中),从另一级别的高速缓存(未说明)或从主存储器(未说明)查找此数据。在一些实例中,L1D高速缓存123高速缓存未存储在L2组合高速缓存130中的数据在技术上是可行的。如果支持此操作,那么在流式引擎数据请求在L2组合高速缓存130中未命中时,L2组合高速缓存130应探测L1D高速缓存123以找到由流式引擎125请求的数据。如果L1D高速缓存123存储此数据,那么其探测响应将包含所述数据,然后供应所述数据以服务流式引擎请求。如果L1D高速缓存123不存储此数据,那么其探测响应将指示此及L2组合高速缓存130必须从另一级别的高速缓存(未说明)或从主存储器(未说明)服务此流式引擎请求。
图2说明标量数据路径侧A 115及向量数据路径侧B 116内的功能单元及寄存器文件的进一步细节。标量数据路径侧A 115包含L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226。标量数据路径侧A 115包含全局标量寄存器文件211、L1/S1本地寄存器文件212、M1/N1本地寄存器文件213及D1/D2本地寄存器文件214。向量数据路径侧B 116包含L2单元241、S2单元242、M2单元243、N2单元244、C单元245及P单元246。向量数据路径侧B 116包含全局向量寄存器文件231、L2/S2本地寄存器文件232、M2/N2/C本地寄存器文件233及谓词寄存器文件234。可从哪些功能单元读取或写入到哪些寄存器文件是有限制的。
标量数据路径侧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。S2单元243通常接受两个512位操作数并产生一个512位结果。两个操作数各自从全局向量寄存器文件231或M2/N2/C本地寄存器文件233中的指令指定寄存器调用。在一个实例中,M2单元243执行类似于M1单元223的指令,除对更宽的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中的指令指定寄存器调用。
向量数据路径侧B 116包含P单元246。向量谓词(P)单元246对本地谓词寄存器文件234的寄存器执行基本逻辑操作。P单元246直接存取以从谓词寄存器文件234读取或写入谓词寄存器文件234。
图3说明全局标量寄存器文件211。存在指定为A0到A15的16个独立的64位宽标量寄存器。全局标量寄存器文件211的每一寄存器可作为64位的标量数据读取或写入。所有标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可从全局标量寄存器文件211读取或写入到全局标量寄存器文件211。在一个实例中,全局标量寄存器文件211可作为32位或作为64位读取,并且仅作为64位写入。指令执行确定读取数据大小。向量数据路径侧B 116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245及P单元246)可在将在下面详述的限制下经由交叉路径117从全局标量寄存器文件211读取。
图4说明D1/D2本地寄存器文件214。存在指定为D0到D15的十六个独立的64位宽标量寄存器。D1/D2本地寄存器文件214中的每一寄存器可作为64位的标量数据读取或写入。所有标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可写入到全局标量寄存器文件211。仅D1单元225及D2单元226可从D1/D2本地标量寄存器文件214读取。预期存储在D1/D2本地标量寄存器文件214中的数据将包含地址计算中使用的基地址及偏移地址。
图5说明L1/S1本地寄存器文件212。在此实例中,L1/S1本地寄存器文件212包含指定为AL0到AL7的八个独立64位宽标量寄存器。在此实例中,指令译码允许L1/S1本地寄存器文件212包含多达16个寄存器,但仅实施八个寄存器以减小电路尺寸及复杂性。L1/S1本地寄存器文件212中的每一寄存器可作为64位的标量数据读取或写入。所有标量数据路径侧A115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可写入到L1/S1本地标量寄存器文件212。仅L1单元221及S1单元222可从L1/S2本地标量寄存器文件212读取。
图6说明M1/N1本地寄存器文件213。在此实例中,实施指定为AM0到AM7的八个独立64位宽标量寄存器。在此实例中,指令译码允许M1/N1本地寄存器文件213包含多达16个寄存器,但仅实施八个寄存器以减小电路尺寸及复杂性。M1/N1本地寄存器文件213中的每一寄存器可作为64位的标量数据读取或写入。所有标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可写入到M1/N1本地标量寄存器文件213。仅M1单元223及N1单元224可从M1/N1本地标量寄存器文件213读取。
图7说明全局向量寄存器文件231。存在16个独立的512位宽向量寄存器。全局向量寄存器文件231的每一寄存器可作为指定为B0到B15的64位的标量数据读取或写入。全局向量寄存器文件231的每一寄存器可作为指定为VB0到VB15的512位的向量数据读取或写入。指令类型决定数据大小。所有向量数据路径侧B 116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245及P单元246)可从全局向量寄存器文件231读取或写入全局向量寄存器文件231。标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225及D2单元226)可在将在下面详述的限制下经由交叉路径117从全局向量寄存器文件231读取。
图8说明谓词(P)本地寄存器文件234。存在指定为P0到P7的八个独立的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单元245写入一位SIMD向量比较结果;由P单元246操纵SIMD向量比较结果;及使用受操纵结果控制进一步的SIMD向量操作。
图9说明L2/S2本地寄存器文件232。在此实例中,实施八个独立的512位宽向量寄存器。在此实例中,指令译码允许L2/S2本地寄存器文件232包含多达16个寄存器,但仅实施八个寄存器以减小电路尺寸及复杂性。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。在此实例中,实施八个独立的512位宽向量寄存器。在此实例中,指令译码允许M2/N2/C本地寄存器文件233包含多达16个寄存器,但仅实施八个寄存器以减小电路尺寸及复杂性。M2/N2/C本地向量寄存器文件233的每一寄存器可作为指定为BM0到BM7的64位的标量数据读取或写入。M2/N2/C本地向量寄存器文件233的每一寄存器可作为指定为VBM0到VBM7的512位的向量数据读取或写入。所有向量数据路径侧B 116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245及P单元246)可写入到M2/N2/C本地向量寄存器文件233。仅M2单元243、N2单元244及P单元245可从M2/N2/C本地向量寄存器文件233读取。
规定全局寄存器文件可由一侧的所有功能单元存取且本地寄存器文件仅可由一侧的功能单元中的一些存取是一种设计选择。在另一实例中,可作出不同的可存取性规定,例如仅采用对应于本文描述的全局寄存器文件的一种类型的寄存器文件。
交叉路径117允许在标量数据路径侧A 115与向量数据路径侧B 116之间进行有限的数据交换。在每一操作循环期间,可从全局标量寄存器文件A 211调用一个64位数据字以由向量数据路径侧B 116的一或多个功能单元用作操作数,并可从全局向量寄存器文件231调用一个64位数据字以由标量数据路径侧A 115的一或多个功能单元用作操作数。任何标量数据路径侧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位操作数从标量数据路径侧A 115传送到向量数据路径侧B 116。
图11说明以下管线阶段:程序提取阶段1110、分派及解码阶段1120及执行阶段1130。程序提取阶段1110包含所有针对指令的三个阶段。分派及解码阶段1120包含针对所有指令的三个阶段。执行阶段1130包含取决于指令的一到四个阶段。
提取阶段1110包含程序地址产生(PG)阶段1111、程序存取(PA)阶段1112及程序接收(PR)阶段1113。在程序地址产生阶段1111期间,程序地址在处理器中产生,并且读取请求被发送到用于L1I高速缓存的存储器控制器。在程序存取阶段1112期间,L1I高速缓存处理请求,存取在其存储器中的数据,并向处理器边界发送提取分组。在程序接收阶段1113期间,处理器寄存提取分组。指令在包含十六个32位宽的字的提取分组中提取。
处理器核心110(图1)及L1I高速缓存121管线(图1)彼此解耦。从L1I高速缓存的的提取分组返回可能耗费不同数目个时钟循环,这取决于外部环境,例如L1I高速缓存121中是否存在命中,或者L2组合高速缓存130中是否存在命中。因此,程序存取阶段1112可耗费若干时钟循环,而不是像在其它级中那样耗费一个时钟循环。
并行执行的指令构成一个执行分组。在此实例中,执行分组最多可含有用于十六个指令的十六个32位宽时隙。执行分组中的两个指令不可使用相同功能单元。时隙是五种类型中的一者:1)在处理器核心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(图11)包含到适当执行单元(DS)阶段1121、指令预解码(DC1)阶段1122及指令解码、操作数读取(DC2)阶段1123的指令分派。在到适当执行单元阶段1121的指令分派期间,提取分组被分割成执行分组并指派到适当功能单元。在指令预解码阶段1122期间,对源寄存器、目的地寄存器及相关联路径进行解码以在功能单元中执行指令。在指令解码、操作数读取阶段1123期间,进行更详细单元解码,以及从寄存器文件读取操作数。
执行阶段1130包含执行(E1到E5)阶段1131到1135。不同类型的指令需要不同数目个这些阶段来完成其执行。管线的这些阶段在理解处理器循环边界处的装置状态方面起着重要作用。
在E1阶段1131期间,评估指令的条件并对操作数进行操作。如在图11中说明,E1阶段1131可从流缓冲器1141及示意地展示为1142的寄存器文件中的一者接收操作数。对于加载及存储指令,执行地址产生,并将地址修改写入到寄存器文件。对于分支指令,PG阶段(1111)中的分支提取分组受到影响。如在图11中说明,加载及存储指令存取此处示意性展示为存储器1151的存储器。对于单循环指令,将结果写入到目的地寄存器文件。这假设指令的任何条件被评估为真。如果条件评估为假,那么指令在E1阶段1131之后不会写入任何结果或具有任何管线操作。
在E2阶段1132期间,加载指令向存储器发送地址。存储指令向存储器发送地址及数据。在饱和发生的情况下,使结果饱和的单循环指令设置控制状态寄存器(CSR)中的饱和(SAT)位。对于2循环指令,将结果写入到目的地寄存器文件。
在E3阶段1133期间,执行数据存储器存取。在饱和发生的情况下,使结果饱和的任何乘法指令设置控制状态寄存器(CSR)中的SAT位。对于3循环指令,将结果写入到目的地寄存器文件。
在E4阶段1134期间,加载指令将数据带到处理器边界。对于4循环指令,将结果写入目的地寄存器文件。
在E5阶段1135期间,加载指令将数据写入到寄存器中。这在图11中用从存储器1151到E5阶段1135的输入示意性地说明。
在实例中,512位寄存器用于在图1及2的处理器上执行的SIMD操作。取决于数据元素的大小,可并行执行不同数目个操作。例如,在一个实例中,字的大小为32位(4字节),且半字为16位(2字节)。当输入数据的数据精度为半字(2字节)时,512位(64字节)寄存器中存在32个通道,从而允许32个并行操作。当数据精度为64位(8字节)时,512位(64字节)寄存器中存在8个通道,从而允许8个并行操作。当数据精度为32位(4字节)时,512位(64字节)寄存器中存在16个通道,从而允许16个并行操作。
在一个实例中,寄存器的通道的数目等于在寄存器上执行算术功能的功能单元的数目。例如,当寄存器中存在32个通道时,32个功能单元对寄存器文件上的相应数据元素执行算术功能。在此实例中,当寄存器的大小为512位时,相应数据元素的大小可为半字(2字节)。
根据此描述的一些方面,编译器经配置以在处理器上运行,并产生运行图1及2的处理器的代码。编译器进一步经配置以产生交错来自多个寄存器的向量数据元素并将交错值存储在单个寄存器、高速缓存或存储器中的指令。多个指令可由编译器产生以仿真具有不同于图1及2中说明的架构的架构的处理器。处理器架构由一组特定的指令(ISA)定义,包含向量大小、其如何执行此类操作以及数据如何传入及传出。至少当第一处理器及第二处理器对不同大小向量进行操作,或者从不同大小寄存器检索值及将值存储到不同大小寄存器时,第一处理器的架构与第二处理器的架构不同。
图12说明两个编译器的系统,每一编译器经配置以将源代码编译为其相应处理器的可执行代码,其中处理器具有彼此不同的架构。在实例中,用于第二类型的处理器的编译器基于为第一类型的处理器准备的源代码文件产生用于第二类型处理器的可执行文件。当源代码在第二类型的处理器上执行时,第二类型的处理器可仿真第一类型的处理器。在仿真第一类型的处理器的同时,第二类型的处理器还可仿真为第一类型的处理器准备的交错存储指令。
在图12中,写入源文件以在第一类型的处理器(处理器1212)上执行。为在处理器1212上执行源文件,编译器1211编译源代码以产生处理器1212的可执行文件。编译器1211还可操作为汇编器及链接器以基于源文件的类型及其结构产生处理器1212的可执行文件。
图12的转译器1201将为处理器1212编写的源文件转译为第二类型的处理器(处理器1222)的源文件。编译由转译器1201产生的源代码的编译器1221产生处理器1222的可执行文件。编译器1221可依赖于存储在库(例如,虚拟机库)中的例程、模块或对象产生处理器1222的可执行文件。
当处理器1222执行由编译器1221产生的可执行文件时,处理器1222仿真处理器1212的操作及功能。处理器1222具有与处理器1212不同的架构。举例来说,处理器1222可对比处理器1212的向量(320位)更宽(512位)的向量进行操作。处理器1222可具有每寄存器的可变宽度通道,例如8、12、32及64个通道,以适应基于不同大小或更宽向量的各种操作。处理器1212可具有一组40位数据元素的寄存器,其具有固定数目(其为8)个寄存器通道。处理器1222可具有仅允许存储寄存器的某些通道的向量预测机制,而处理器1212可具有允许交错存储其向量的交错存储指令。处理器1222基于由编译器1221编译的交错存储指令及其向量预测机制来仿真处理器1212的交错存储功能。处理器1222可为图1及2中说明的处理器。
为仿真处理器1212,转译器1201转译处理器1212的源代码,并且编译器1221用交错存储指令的以下实例产生可执行文件,例如,VSTINLB、VSTINTLB4、VSTINTLH、VSTINTLW、VSTINTLD。当处理器1222执行这些文件时,其仿真处理器1212及其交错存储指令。
VSTINTLB指令采用各自64字节(512位)宽的两个输入向量(输入1、输入2),交错来自输入1及输入2的偶数字节元素,并将交错输出存储在存储结构中,例如另一寄存器、更高阶高速缓存或存储器。
输入1:A63,A62,A61,A60,..............A4,A3,A2,A1,A0
输入2:B63,B62,B61,B60,..............B4,B3,B2,B1,B0
输出:B62,A62,B60,A60,…………………B4,A4,B2,A2,B0,A0
在此上文,向量输入1具有64个数据元素A63到A0,且向量输入2具有64个数据元素B63到B0。当执行VSTINTLB时,存储由来自两个输入向量(即向量输入1及向量输入2)的交替偶数字节元素组成的64个数据元素的向量输出。
VSTINTLB4指令采用各自64字节(512位)宽的两个输入向量(输入1、输入2),交错来自输入1及输入2的每第4个字节元素,并将交错输出(下面表示)存储在存储结构中,例如另一寄存器、更高阶高速缓存或存储器。
输入1:A63,A62,A61,A60,..............A4,A3,A2,A1,A0
输入2:B63,B62,B61,B60,..............B4,B3,B2,B1,B0
输出:0,0,...0,0,B60,A60,……………………B4,A4,B0,A0
所得交错输出仍为一个输入向量(例如,输入1或输入2)的大小,且输出的上半部用零填充。
VSTINTLH指令采用来自两个输入向量(输入1、输入2)的偶数半字,其各自512位宽,具有半字(2字节)数据元素,并将以下向量输出存储在存储结构中,例如另一寄存器、更高阶高速缓存或存储器。
输入1:A31,A30,A29,A28,..............A4,A3,A2,A1,A0
输入2:B31,B30,B29,B28,..............B4,B3,B2,B1,B0
输出:B30,A30,B28,A28,……………B4,A4,B2,A2,B0,A0
VSTINTLW指令采用来自两个输入向量的偶数字,每一向量512位宽,具有字(4字节)数据元素,并将偶数字数据元素存储在存储结构中,使得来自一个输入向量的偶数字数据元素与来自另一输入向量的偶数字数据元素交错,所述存储结构例如另一寄存器、更高阶高速缓存或存储器。VSTINLD指令采用来自两个输入向量的偶数双字,每一向量512位宽,具有双字(8字节)数据元素,并将偶数双字数据元素存储在存储结构中,使得来自一个输入向量的偶数双字数据元素与来自另一输入向量的双字数据元素交错,所述存储结构例如另一寄存器、更高阶高速缓存或存储器。
图13A到13D说明图12的处理器1212及处理器1222的寄存器及存储器。图13A说明处理器1212的向量Vn及向量Vn+1的两个向量寄存器。处理器1212的向量寄存器各自为320位且具有8个通道。图13B说明当由处理器1212执行交错存储指令时存储图13A的向量Vn及Vn+1的交错值的处理器1212的存储器。如在图13B中说明,向量Vn及Vn+1的数据元素经存储以在处理器1212的存储器中在地址addr及addr+16的行处交错。
图13C说明处理器1222的向量Vn及向量Vn+1的两个向量寄存器。处理器1222的向量寄存器各自为512位且具有16个通道。图13D说明当由转译器1201将处理器1212的交错存储指令转译为VSTINLH指令时存储图13B的向量Vn及Vn+1的交错值的处理器1222的存储器。
当转译器1201将用于处理器1212的指令转译为用于处理器1222的指令时,除交错存储指令之外,转译器1201还产生预测指令。由处理器1222执行预测指令以屏蔽处理器1222的向量寄存器的上8个通道,处理器1222具有比处理器1212的向量寄存器更多的通道。图13C的寄存器的“xxxxxxxx”值表示未使用的寄存器通道。谓词指令设置谓词以仅存储图13C的寄存器的剩余8个通道。在执行VSTINLH指令时,处理器1222的存储器存储与处理器1212的存储器(图13B)相同的向量值(图13D)。
在此描述中,陈述“基于”意指“至少部分基于”。因此,如果X基于Y,那么X可随Y或任何数目个其它因素而变化。
在所描述实施例中修改是可能的,且在权利要求书的范围内其它实施例是可能的。
Claims (27)
1.一种存储寄存器的值的方法,所述方法包括:
在包括至少两个寄存器的处理器上执行交错存储指令,其中所述至少两个寄存器中的每一者经配置以存储具有多个数据元素的向量,其中所述交错存储指令的所述执行包含:
从所述至少两个寄存器中的每一者的所述相应向量的所述多个数据元素检索至少两个数据元素;及
将从所述至少两个寄存器中的每一者的所述相应向量的所述多个数据元素检索的所述至少两个数据元素存储在所述处理器的存储结构中,
其中所述至少两个寄存器中的第一寄存器的所述至少两个数据元素中的每一者经存储以与所述至少两个寄存器中的第二寄存器的所述至少两个数据元素中的每一者交错。
2.根据权利要求1所述的方法,
其中所述至少两个数据元素是非连续数据元素。
3.根据权利要求1所述的方法,其中从所述至少两个寄存器中的每一者的所述相应向量的所述多个数据元素检索的所述至少两个数据元素包括所述至少两个寄存器的相应寄存器的偶数数据元素。
4.根据权利要求1所述的方法,
其中从所述至少两个寄存器中的每一者的所述相应向量的所述多个数据元素检索的所述至少两个数据元素包括所述至少两个寄存器的所述相应寄存器的每第四个数据元素。
5.根据权利要求1所述的方法,
其中从所述至少两个寄存器中的每一者的所述相应向量的所述多个数据元素检索的所述至少两个数据元素的数据元素包括一个字节、2个字节、4个字节或8个字节的数据元素。
6.根据权利要求1所述的方法,其中所述存储结构包含所述处理器的存储器或更高阶高速缓存,且所述方法进一步包括:
产生掩码指令;及
执行所述掩码指令以阻塞所述存储器或所述更高阶高速缓存的通道,
其中从所述至少两个寄存器中的每一者的所述相应向量的所述多个数据元素检索的所述至少两个数据元素存储在所述存储器或所述更高阶高速缓存的非阻塞通道中。
7.根据权利要求1所述的方法,
其中所述处理器包括第二类型处理器,
其中所述交错存储指令包括从用于第一类型的处理器的交错存储指令转译的用于所述第二类型处理器的交错存储指令,
其中所述第二类型处理器包括所述至少两个寄存器,
其中所述至少两个寄存器中的每一者的大小大于所述第一类型处理器的寄存器的大小,
其中所述至少两个寄存器中的每一者的所述向量的大小与能够存储在所述第一类型处理器的所述寄存器中的向量的大小相同,且
其中所述至少两个寄存器中的每一者的一或多个通道经阻塞以匹配其相应向量的所述大小。
8.根据权利要求7所述的方法,
其中用于所述第二类型处理器的所述交错存储指令的所述执行包括,
产生掩码指令;及
执行所述掩码指令以阻塞所述至少两个寄存器中的所述每一者的所述一或多个通道。
9.一种系统,其包括,
源文件,其用于第一类型的处理器;
转译器,其经配置以将用于所述第一类型处理器的所述源文件转译成用于第二类型的处理器的源文件;及
编译器,其经配置以基于所述经转译源文件产生用于所述第二类型处理器的执行文件;
其中所述第一类型处理器源文件包括交错存储指令;
其中所述第二类型处理器包括至少两个寄存器;
其中所述至少两个寄存器中的每一者经配置以存储具有多个数据元素的向量;其中所述第二类型处理器经配置以在执行用于所述第二类型处理器的所述源文件时,从所述至少两个寄存器中的每一者的所述相应向量的所述多个数据元素中检索及存储至少两个数据元素;且
其中所述至少两个寄存器中的第一寄存器的所述至少两个数据元素中的每一者经存储以与所述至少两个寄存器中的第二寄存器的所述至少两个数据元素中的每一者交错。
10.根据权利要求9所述的系统,
其中所述至少两个数据元素是非连续数据元素。
11.根据权利要求9所述的系统,
其中在用于所述第一类型处理器的所述源文件由所述第一类型处理器执行时,由所述第二类型处理器存储的所述数据元素经配置以与待由所述第一类型处理器存储的数据元素相同。
12.根据权利要求9所述的系统,其进一步包括,
所述第二类型处理器的存储结构,其经配置以存储所述交错数据元素。
13.根据权利要求12所述的系统,其中所述存储结构包含所述第二类型处理器的存储器或更高阶高速缓存。
14.根据权利要求9所述的系统,
其中从所述至少两个寄存器中的每一者的所述相应向量的所述多个数据元素检索的所述至少两个数据元素包括所述至少两个寄存器的相应寄存器的偶数数据元素。
15.根据权利要求9所述的系统,
其中从所述至少两个寄存器中的每一者的所述相应向量的所述多个数据元素检索的所述至少两个数据元素包括所述至少两个寄存器的相应寄存器的每第四个数据元素。
16.根据权利要求9所述的系统,
其中从所述至少两个寄存器中的每一者的所述相应向量的所述多个数据元素检索的所述至少两个数据元素的数据元素包括一个字节、2个字节、4个字节或8个字节的数据元素。
17.根据权利要求9所述的系统,
其中所述至少两个寄存器包括至少两个第二类型寄存器;
其中所述第一类型处理器包括第一类型寄存器;
其中所述第二类型寄存器的大小大于所述第一类型寄存器的大小;
其中所述至少两个第二类型寄存器中的每一者的所述向量的大小与能够存储在所述第一类型寄存器中的向量的大小相同;且
其中所述至少两个第二类型寄存器中的每一者的一或多个通道经阻塞以匹配其相应向量的所述大小。
18.根据权利要求17所述的系统,
其中所述执行文件包括掩码指令;且
其中所述第二类型处理器经配置以在执行所述掩码指令时阻塞所述至少两个第二类型寄存器中的每一者的所述一或多个通道。
19.一种处理器,其包括,
至少两个寄存器;及
存储结构,其耦合到所述至少两个寄存器,
其中所述至少两个寄存器中的每一者包括具有多个数据元素的向量,
其中所述处理器经配置以从所述至少两个寄存器中的每一者的所述相应向量的所述多个数据元素检索至少两个数据元素,并且在执行交错存储指令的同时将所述检索到的数据元素存储在所述存储结构中,且
其中当存储在所述存储结构中时,所述至少两个寄存器中的第一寄存器的所述至少两个数据元素中的每一者经配置以与所述至少两个寄存器中的第二寄存器的所述至少两个数据元素中的每一者交错。
20.根据权利要求19所述的系统,
其中所述至少两个数据元素是非连续数据元素。
21.根据权利要求19所述的处理器,
其中所述处理器经配置以在执行掩码指令时阻塞所述存储结构中的通道,且其中所述至少两个数据元素经配置以存储在所述存储结构的非阻塞通道中。
22.根据权利要求19所述的处理器,
其中所述存储结构包括经配置以存储所述交错数据元素的高速缓存。
23.根据权利要求19所述的处理器,
其中从所述至少两个寄存器中的每一者的所述多个数据元素检索的所述至少两个数据元素包括所述至少两个寄存器的相应寄存器的偶数数据元素。
24.根据权利要求19所述的处理器,
其中从所述至少两个寄存器中的每一者的所述多个数据元素检索的所述至少两个数据元素包括所述至少两个寄存器的相应寄存器的每第四个数据元素。
25.根据权利要求19所述的处理器,
其中从所述至少两个寄存器中的每一者的所述相应向量的所述多个数据元素检索的所述至少两个数据元素的数据元素包括一个字节、2个字节、4个字节或8个字节的数据元素。
26.根据权利要求19所述的处理器,
其中所述处理器包括第二类型处理器,
其中所述至少两个寄存器包括至少两个第二类型寄存器,
其中所述交错存储指令包括从用于第一类型的处理器的交错存储指令转译的用于所述第二类型处理器的交错存储指令,
其中所述第一类型处理器包括第一类型寄存器,
其中所述至少两个第二类型寄存器中的每一者的寄存器的大小大于所述第一类型寄存器的大小,
其中所述至少两个第二类型寄存器中的每一者的所述向量的大小与能够存储在所述第一类型寄存器中的向量的大小相同,且
其中所述至少两个寄存器中的每一者的一或多个通道经阻塞以匹配其相应向量的所述大小。
27.根据权利要求26所述的处理器,
其中所述第二类型处理器经配置以执行掩码指令以阻塞所述至少两个寄存器中的每一者的所述一或多个通道。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962852918P | 2019-05-24 | 2019-05-24 | |
US62/852,918 | 2019-05-24 | ||
US16/786,457 US11449336B2 (en) | 2019-05-24 | 2020-02-10 | Method of storing register data elements to interleave with data elements of a different register, a processor thereof, and a system thereof |
US16/786,457 | 2020-02-10 | ||
PCT/US2020/034457 WO2020243044A1 (en) | 2019-05-24 | 2020-05-25 | Processor, system and method of storing register data elements. |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113841126A true CN113841126A (zh) | 2021-12-24 |
Family
ID=73457059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080036966.4A Pending CN113841126A (zh) | 2019-05-24 | 2020-05-25 | 存储寄存器数据元素的处理器、系统及方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11449336B2 (zh) |
CN (1) | CN113841126A (zh) |
WO (1) | WO2020243044A1 (zh) |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5768564A (en) * | 1994-10-07 | 1998-06-16 | Tandem Computers Incorporated | Method and apparatus for translating source code from one high-level computer language to another |
US5933650A (en) * | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
JP2001297035A (ja) | 2000-04-11 | 2001-10-26 | Hitachi Ltd | 情報処理装置 |
US9146738B2 (en) | 2002-03-30 | 2015-09-29 | Hewlett-Packard Development Company, L.P. | Interleaving bits of multiple instruction results in a single destination register |
GB2409062C (en) * | 2003-12-09 | 2007-12-11 | Advanced Risc Mach Ltd | Aliasing data processing registers |
US7813909B2 (en) * | 2006-05-03 | 2010-10-12 | Sony Computer Entertainment Inc. | Register mapping in emulation of a target system on a host system |
US20120216011A1 (en) * | 2011-02-18 | 2012-08-23 | Darryl Gove | Apparatus and method of single-instruction, multiple-data vector operation masking |
US20130024647A1 (en) * | 2011-07-20 | 2013-01-24 | Gove Darryl J | Cache backed vector registers |
CN108647044B (zh) | 2011-12-28 | 2022-09-13 | 英特尔公司 | 浮点缩放处理器、方法、系统和指令 |
US20170192780A1 (en) * | 2015-12-30 | 2017-07-06 | Robert Valentine | Systems, Apparatuses, and Methods for Getting Even and Odd Data Elements |
GB2564853B (en) | 2017-07-20 | 2021-09-08 | Advanced Risc Mach Ltd | Vector interleaving in a data processing apparatus |
-
2020
- 2020-02-10 US US16/786,457 patent/US11449336B2/en active Active
- 2020-05-25 WO PCT/US2020/034457 patent/WO2020243044A1/en active Application Filing
- 2020-05-25 CN CN202080036966.4A patent/CN113841126A/zh active Pending
-
2022
- 2022-09-16 US US17/946,113 patent/US20230015163A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2020243044A1 (en) | 2020-12-03 |
US20200371790A1 (en) | 2020-11-26 |
US11449336B2 (en) | 2022-09-20 |
US20230015163A1 (en) | 2023-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230418764A1 (en) | Tracking streaming engine vector predicates to control processor execution | |
CN109643233B (zh) | 具有带读取和读取/前进操作数编码的流引擎的数据处理设备 | |
US5983336A (en) | Method and apparatus for packing and unpacking wide instruction word using pointers and masks to shift word syllables to designated execution units groups | |
US11755456B2 (en) | Tracking debug events from an autonomous module through a data pipeline | |
US11467832B2 (en) | Vector floating-point classification | |
CN108205448B (zh) | 具有在每个维度上可选择的多维循环寻址的流引擎 | |
CN109997109B (zh) | 具有提取提前滞后的流引擎 | |
US10929296B2 (en) | Zero latency prefetching in caches | |
US20240028338A1 (en) | Histogram operation | |
CN111406286B (zh) | 具有数据元素提升的查找表 | |
US12032961B2 (en) | Vector maximum and minimum with indexing | |
JP2003526155A (ja) | 配列境界をチェックする能力を有する処理アーキテクチャ | |
CN114691597A (zh) | 自适应远程原子操作 | |
US11704046B2 (en) | Quick clearing of registers | |
US11934830B2 (en) | Method and apparatus for data-ready memory operations | |
US11449336B2 (en) | Method of storing register data elements to interleave with data elements of a different register, a processor thereof, and a system thereof | |
CN111984313A (zh) | 矢量位转置 | |
US12124728B2 (en) | Quick clearing of registers | |
US20240362021A1 (en) | Instructions for remote atomic operations |
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 |