CN111984316A - 用于在处理器中比较源数据的方法和设备 - Google Patents
用于在处理器中比较源数据的方法和设备 Download PDFInfo
- Publication number
- CN111984316A CN111984316A CN202010424516.4A CN202010424516A CN111984316A CN 111984316 A CN111984316 A CN 111984316A CN 202010424516 A CN202010424516 A CN 202010424516A CN 111984316 A CN111984316 A CN 111984316A
- Authority
- CN
- China
- Prior art keywords
- register
- source
- data
- instruction
- lane
- 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 31
- 230000004044 response Effects 0.000 claims abstract description 16
- 210000004027 cell Anatomy 0.000 description 38
- 238000012545 processing Methods 0.000 description 23
- 230000006870 function Effects 0.000 description 20
- 238000012163 sequencing technique Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003252 repetitive effect Effects 0.000 description 3
- 210000003771 C cell Anatomy 0.000 description 2
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001351 cycling effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 210000004457 myocytus nodalis Anatomy 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000003068 static 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/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/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/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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
本申请涉及一种用于在处理器中比较源数据的方法和设备。一种用于响应于具有索引的矢量最大值指令而在处理器中将第一和第二源数据进行比较的方法(1600)包含指定含有第一和第二源数据的第一和第二源寄存器、存储比较数据的目的地寄存器和断言寄存器(1602)。所述寄存器中的每一个包含多个通道。所述方法包含通过以下来执行所述指令:针对所述第一和第二源寄存器中的每个通道,将所述第一源寄存器的所述通道中的值与所述第二源寄存器的所述相对应通道中的值进行比较,以标识最大值(1604);将所述最大值存储在所述目的地寄存器的相对应通道中(1606);如果所述最大值来自所述第一源寄存器,则认定所述断言寄存器的相对应通道(1608);并且如果所述最大值来自所述第二源寄存器,则取消认定所述断言寄存器的所述相对应通道(1610)。
Description
技术领域
本申请涉及在处理器中比较源数据,并且更特别涉及一种用于响应于具有索引的矢量最大值或最小值指令而在处理器中比较源数据的方法和设备。
背景技术
现代数字信号处理器(DSP)面临多重挑战。DSP可能频繁执行需要进行排序功能的软件。排序功能可能需要标识值数组中的最小值或最大值,并且在某些情况下还需要标识数组中所标识的最小值或最大值的位置或索引。可能需要多个指令来标识最小值或最大值及其位置,由于由DSP进行的排序功能具有频繁性、重复性性质,因此增加了指令开销。
发明内容
根据本公开的至少一个实例,一种用于响应于具有索引的矢量最大值或最小值指令而在处理器中将第一和第二源数据进行比较的方法包含指定含有第一和第二源数据的第一和第二源寄存器、存储比较数据的目的地寄存器和断言寄存器。寄存器中的每一个包含多个通道。所述方法包含通过以下来执行指令:针对第一和第二源寄存器中的每个通道,将第一源寄存器的通道中的值与第二源寄存器的相对应通道中的值进行比较,以标识最大值或最小值;将最大值或最小值存储在目的地寄存器的相对应通道中;如果最大值或最小值来自第一源寄存器,则认定断言寄存器的相对应通道;并且如果最大值或最小值来自第二源寄存器,则取消认定断言寄存器的相对应通道。
根据本公开的另一实例,一种数据处理器包含被配置成含有第一源数据的第一源寄存器、被配置成含有第二源数据的第二源寄存器、目的地寄存器和断言寄存器。第一和第二源寄存器、目的地寄存器和断言寄存器中的每一个包含多个通道。响应于执行单个具有索引的矢量最大值或最小值指令,所述数据处理器被配置成将第一源寄存器的通道中的值与第二源寄存器的相对应通道中的值进行比较,以标识最大值或最小值;将最大值或最小值存储在目的地寄存器的相对应通道中;由于最大值或最小值来自第一源寄存器而认定断言寄存器的相对应通道;并且由于最大值或最小值来自第二源寄存器而取消认定断言寄存器的相对应通道。
附图说明
对于各个实例的详细描述,现在将参考附图,其中:
图1示出了根据各个实例的双标量/矢量数据路径处理器;
图2示出了图1中示出的且根据各个实例的双标量/矢量数据路径处理器中的寄存器和功能单元;
图3示出了示范性全局标量寄存器文件;
图4示出了由算术功能单元共享的示范性本地标量寄存器文件;
图5示出了由乘法功能单元共享的示范性本地标量寄存器文件;
图6示出了由加载/存储单元共享的示范性本地标量寄存器文件;
图7示出了示范性全局矢量寄存器文件;
图8示出了示范性断言寄存器文件;
图9示出了由算术功能单元共享的示范性本地矢量寄存器文件;
图10示出了由乘法和相关功能单元共享的示范性本地矢量寄存器文件;
图11示出了根据各个实例的中央处理单元的流水线阶段;
图12示出了根据各个实例的单个获取包的十六个指令;
图13示出了根据各个实例的与指令执行有关的一组示范性寄存器,包含第一和第二源寄存器、目的地寄存器和断言寄存器;
图14A-14D示出了根据各个实例的进行指令执行的数值实例;
图15示出了根据各个实例的指令的指令编码;和
图16示出了根据各个实例的执行指令的方法的流程图。
具体实施方式
如以上所解释,DSP通常执行需要进行排序功能的软件。尽管通常已经很好地理解了排序功能,但是以处理器级别(例如,使用汇编或编译器级别的指令)实施排序功能可能需要多个指令。例如,排序功能可能需要标识值数组中的最小值或最大值,以及标识数组中所标识的最小值或最大值的位置或索引。由于由DSP进行的排序功能通常具有频繁性和重复性,因此不希望增加指令开销。
为了至少通过减少进行那些排序功能所需的指令开销来改善进行排序功能的DSP的性能,本公开的实例涉及具有索引的矢量最大值/最小值指令,其将第一源寄存器中的第一源数据与第二源寄存器中的第二源数据进行比较。具有索引的矢量最大值/最小值指令是单指令多数据(SIMD)指令,其对第一和第二源寄存器的相对应通道中的数据进行操作。例如,第一和第二源寄存器是512位矢量寄存器,并且每个通道是8位通道,使得响应于执行单个具有索引的矢量最大值/最小值指令而进行64次比较。
参考具有索引的矢量最大值指令,执行具有索引的矢量最大值指令将第一和第二源寄存器的相对应通道中的数据进行比较,标识每对比较数据(即,单个通道中的来自第一和第二源寄存器的数据)的最大值,并且将最大值存储在目的地寄存器中。在至少一个实例中,目的地寄存器是第二源寄存器。具有索引的矢量最大值指令还基于第一和第二源寄存器的相对应通道的比较结果针对每个通道认定或取消认定断言寄存器的相对应通道。例如,如果所标识的最大值来自第一源寄存器,则认定断言寄存器中的相对应通道;如果所标识的最大值来自第二源寄存器,则取消认定断言寄存器中的相对应通道。断言寄存器值例如在下一个排序迭代中使用以将“丢失”项(例如,所标识的最大值来自第二源寄存器并且因此取消认定断言寄存器中的相对应通道的那些)清零,使得第一源寄存器中的相对应值不再在排序池中。
具有索引的矢量最小值指令的操作类似,只是不标识每对比较数据的最大值,具有索引的矢量最小值指令标识最小值并且将最小值存储在目的地寄存器中。具有索引的矢量最小值指令还基于第一和第二源寄存器的相对应通道的比较结果针对每个通道认定或取消认定断言寄存器的相对应通道。例如,如果所标识的最小值来自第一源寄存器,则认定断言寄存器中的相对应通道;如果所标识的最小值来自第二源寄存器,则取消认定断言寄存器中的相对应通道。与以上类似,断言寄存器值例如在下一个排序迭代中使用以将“丢失”项(例如,所标识的最小值来自第二源寄存器并且因此取消认定断言寄存器中的相对应通道的那些)清零,使得第一源寄存器中的相对应值不再在排序池中。
通过实施单个具有索引的矢量最大值/最小值指令(所述指令既标识了每对比较数据(即单个通道中的来自第一和第二源寄存器的数据)的最大值/最小值,又通过认定或取消认定断言寄存器中的相对应通道而标识了所标识的最大值/最小值的位置或索引),减少了用于进行排序功能的指令开销,这改善了DSP在执行需要进行排序功能的软件时的性能。
图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还是矢量数据路径侧B116的功能单元上执行。每个指令中被称为s位的指令位确定了指令控制哪个数据路径。这将在下面进一步详细说明。
指令解码单元113对当前执行包中的每个指令进行解码。解码包含标识进行指令的功能单元,从可能的寄存器文件中标识用于为相对应数据处理操作提供数据的寄存器,和标识相对应数据处理操作的结果的寄存器目的地。如下面进一步解释,指令可以包含一个常数字段来代替一个寄存器号操作数字段。这种解码的结果是用于控制目标功能单元以对所指的定数据进行由相对应指令指定的数据处理操作的信号。
中央处理单元核心110包含控制寄存器114。控制寄存器114在标量数据路径侧A115和矢量数据路径侧B116中存储用于控制功能单元的信息。本信息可以是模式信息等。
来自指令解码113的解码指令和存储在控制寄存器114中的信息被提供给标量数据路径侧A115和矢量数据路径侧B116。因此,标量数据路径侧A115和矢量数据路径侧B116内的功能单元对指令指定数据进行指令指定数据处理操作,并且将结果存储在一或多个指令指定数据寄存器中。标量数据路径侧A115和矢量数据路径侧B116中的每一个包含优选地并行操作的多个功能单元。这些将在下面结合图2进一步详细说明。在标量数据路径侧A115和矢量数据路径侧B116之间存在允许数据交换的数据路径117。
中央处理单元核心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与标量数据路径侧A115中的寄存器文件交换数据。总线143优选地是64位总线。一级数据高速缓存123经由总线144与矢量数据路径侧B116中的寄存器文件交换数据。总线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将本第一数据流的数据提供给矢量数据路径侧B116的功能单元。总线147优选地是512位总线。二级组合高速缓存130经由总线148将第二数据流的数据提供给流引擎125。总线148优选地是512位总线。流引擎125经由总线149将本第二数据流的数据提供给矢量数据路径侧B116的功能单元。总线149优选地是512位总线。根据本公开的各个实例,总线146、147、148和149被示出为是从二级组合高速缓存130到流引擎125以及到矢量数据路径侧B116单向的。
在高速缓存命中时(如果所请求的数据存储在二级组合高速缓存130中),直接从二级组合高速缓存130获取流引擎125数据请求。在高速缓存未命中(所指定的数据未存储在二级组合高速缓存130中)时,从另一级别的高速缓存(未示出)或从主存储器(未示出)查找本数据。在一些实例中,一级数据高速缓存123缓存未存储在二级组合高速缓存130中的数据在技术上是可行的。如果支持此操作,则在流引擎125数据请求是二级组合高速缓存130中的未命中时,二级组合高速缓存130应监听一级数据高速缓存123以获得流引擎125请求数据。如果一级数据高速缓存123存储本数据,则其监听响应将包含所述数据,然后将其提供以为流引擎125请求提供服务。如果一级数据高速缓存123未存储本数据,则其监听响应将指示本情况,并且二级组合高速缓存130必须从另一级别的高速缓存(未示出)或从主存储器(未示出)为本流引擎125请求提供服务。
在一个实例中,一级数据高速缓存123和二级组合高速缓存130都可以被配置为根据标题为“包含高速缓存和直接可寻址静态随机访问存储器的统一存储器系统架构(UNIFIED MEMORY SYSTEM ARCHITECTURE INCLUDING CACHE AND DIRECTLYADDRESSABLESTATIC RANDOM ACCESS MEMORY)”的美国专利第6,606,686号的选定量的高速缓存或直接可寻址存储器。
图2示出了标量数据路径侧A115和矢量数据路径侧B116内的功能单元和寄存器文件的另外的细节。标量数据路径侧A115包含全局标量寄存器文件211、L1/S1本地寄存器文件212、M1/N1本地寄存器文件213和D1/D2本地寄存器文件214。标量数据路径侧A115包含L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226。矢量数据路径侧B116包含全局矢量寄存器文件231、L2/S2本地寄存器文件232、M2/N2/C本地寄存器文件233和断言寄存器文件234。矢量数据路径侧B116包含L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246。在哪些功能单元可以读取或哪些寄存器文件可以写入方面存在限制。这些将在下面详细说明。
标量数据路径侧A115包含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的指令指定寄存器中。
标量数据路径侧A115包含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的指令指定寄存器中。
标量数据路径侧A115包含M1单元223。M1单元223通常接受两个64位操作数,并且产生一个64位结果。两个操作数各自从全局标量寄存器文件211或M1/N1本地寄存器文件213中的指令指定寄存器调用。M1单元223优选地进行以下指令选择运算:8位乘法运算;复杂点积运算;32位位计数运算;复共轭乘法运算;和按位逻辑运算、移动、加法和减法。结果可以写入全局标量寄存器文件211、L1/S1本地寄存器文件212、M1/N1本地寄存器文件213或D1/D2本地寄存器文件214的指令指定寄存器中。
标量数据路径侧A115包含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的指令指定寄存器中。
标量数据路径侧A115包含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的指令指定寄存器中。
矢量数据路径侧B116包含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的指令指定寄存器中。
矢量数据路径侧B116包含S2单元242。S2单元242通常接受两个512位操作数,并且产生一个512位结果。两个操作数各自从全局矢量寄存器文件231、L2/S2本地寄存器文件232或断言寄存器文件234中的指令指定寄存器调用。S2单元242优选地进行与S1单元222类似的指令。结果可以写入全局矢量寄存器文件231、L2/S2本地寄存器文件232、M2/N2/C本地寄存器文件233或断言寄存器文件234的指令指定寄存器中。
矢量数据路径侧B116包含M2单元243。M2单元243通常接受两个512位操作数,并且产生一个512位结果。两个操作数各自从全局矢量寄存器文件231或M2/N2/C本地寄存器文件233中的指令指定寄存器调用。M2单元243优选地进行与M1单元223类似的指令,只是在较宽的512位数据上。结果可以写入全局矢量寄存器文件231、L2/S2本地寄存器文件232或M2/N2/C本地寄存器文件233的指令指定寄存器中。
矢量数据路径侧B116包含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的指令指定寄存器中。
矢量数据路径侧B116包含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)。在某些C单元245运算中,控制寄存器CUCR0到CUCR3用作操作数。控制寄存器CUCR0到CUCR3优选地用于控制一般排列指令(VPERM);并且用作SIMD多DOT积运算(DOTPM)和SIMD多绝对差和(SAD)运算的掩码。控制寄存器CUCR0优选地用于存储伽罗瓦域乘法运算(GFMPY)的多项式。控制寄存器CUCR1优选地用于存储伽罗瓦域多项式生成器函数。
矢量数据路径侧B116包含P单元246。P单元246对本地断言寄存器文件234的寄存器进行基本逻辑运算。P单元246可以直接读取和写入断言寄存器文件234。这些运算包含单寄存器一元运算。例如:NEG(取反),其反转单个寄存器的每一位;BITCNT(位计数),其返回具有预定数字状态(1或0)的单个寄存器中的位数的计数;RMBD(最右位检测),其返回从最低有效位位置(最右)到具有预定数字状态(1或0)的第一位位置的位位置数;DECIMATE,其选择每个指令指定第N(1、2、4等)位进行输出;和EXPAND,其将每位复制指令指定N次(2、4等)。这些运算包含两个寄存器二进制运算,例如:AND,两个寄存器的数据的按位AND;NAND,两个寄存器的数据的按位AND,然后取反;OR,两个寄存器的数据的按位OR;NOR,两个寄存器的数据的按位OR运算,然后取反;和XOR,两个寄存器的数据的异OR。这些运算包含将数据从断言寄存器文件234的断言寄存器转移到另一指定断言寄存器或全局矢量寄存器文件231中的指定数据寄存器。P单元246的通常预期用途包含操纵SIMD矢量比较结果以用于控制另外的SIMD矢量运算。BITCNT指令可以用于对断言寄存器中的1进行计数,以确定来自断言寄存器的有效数据元素的数量。
图3示出了全局标量寄存器文件211。存在16个独立的64位宽的标量寄存器,命名为A0到A15。全局标量寄存器文件211的每个寄存器可以被读取或写入为64位标量数据。所有标量数据路径侧A115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226)都可以读取或写入全局标量寄存器文件211。全局标量寄存器文件211可以被读取为32位或64位,并且仅可以被写入为64位。指令执行确定了读取数据大小。矢量数据路径侧B116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246)可以在以下将详细说明的限制条件下经由交叉路径117从全局标量寄存器文件211读取。
图4示出了D1/D2本地寄存器文件214。存在16个独立的64位宽标量寄存器,命名为D0到D16。D1/D2本地寄存器文件214的每个寄存器可以被读取或写入为64位标量数据。所有标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226)都可以写入全局标量寄存器文件211。仅D1单元225和D2单元226可以从D1/D2本地标量寄存器文件214读取。期望存储在D1/D2本地标量寄存器文件214中的数据将包含地址计算中使用的基础地址和偏移地址。
图5示出了L1/S1本地寄存器文件212。图5中示出的实例具有8个独立的64位宽的标量寄存器,命名为AL0到AL7。优选的指令编码(参见图15)允许L1/S1本地寄存器文件212包含多达16个寄存器。图5的实例仅实施了8个寄存器以减小电路大小和复杂度。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/S1本地标量寄存器文件212读取。
图6示出了M1/N1本地寄存器文件213。图6中示出的实例具有8个独立的64位宽的标量寄存器,命名为AM0到AM7。优选的指令编码(参见图15)允许M1/N1本地寄存器文件213包含多达16个寄存器。图6的实例仅实施了8个寄存器以减小电路大小和复杂度。M1/N1本地寄存器文件213的每个寄存器可以被读取或写入为64位标量数据。所有标量数据路径侧A115功能单元(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。指令类型确定了数据大小。所有矢量数据路径侧B116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246)都可以读取或写入全局标量寄存器文件231。标量数据路径侧A115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226)可以在以下将详细说明的限制条件下经由交叉路径117从全局矢量寄存器文件231读取。
图8示出了P本地寄存器文件234。存在8个独立的64位宽的寄存器,命名为P0到P7。P本地寄存器文件234的每个寄存器可以被读取或写入为64位标量数据。矢量数据路径侧B116功能单元(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位宽的矢量寄存器。优选的指令编码(参见图15)允许L2/S2本地寄存器文件232包含多达16个寄存器。图9的实例仅实施了8个寄存器以减小电路大小和复杂度。L2/S2本地矢量寄存器文件232的每个寄存器可以被读取或写入为64位标量数据,命名为BL0到BL7。L2/S2本地矢量寄存器文件232的每个寄存器可以被读取或写入为512位矢量数据,命名为VBL0到VBL7。指令类型确定了数据大小。所有矢量数据路径侧B116功能单元(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位宽的矢量寄存器。优选的指令编码(参见图15)允许M2/N2/C本地矢量寄存器文件233包含多达16个寄存器。图10的实例仅实施了8个寄存器以减小电路大小和复杂度。M2/N2/C本地矢量寄存器文件233的每个寄存器可以被读取或写入为64位标量数据,命名为BM0到BM7。M2/N2/C本地矢量寄存器文件233的每个寄存器可以被读取或写入为512位矢量数据,命名为VBM0到VBM7。所有矢量数据路径侧B116功能单元(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读取。
一种设计选择是提供一侧的所有功能单元均可访问的全局寄存器文件以及仅一侧的一些功能单元可访问的本地寄存器文件。本公开的一些实例仅采用了与所公开的全局寄存器文件相对应的一种类型的寄存器文件。
返回参考图2,交叉路径117允许标量数据路径侧A115和矢量数据路径侧B116之间的有限的数据交换。在每个操作周期期间,可以从全局标量寄存器文件A 211调用一个64位数据字以由矢量数据路径侧B116的一或多个功能单元用作操作数,并且可以从全局矢量寄存器文件231调用一个64位数据字以由标量数据路径侧A 115的一或多个功能单元用作操作数。任何标量数据路径侧115个功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226)可以从全局矢量寄存器文件231读取64位操作数。本64位操作数是所访问的全局矢量寄存器文件231的寄存器中的512位数据的最低有效位。多个标量数据路径侧A115功能单元可以在相同的操作周期期间采用相同的64位交叉路径数据作为操作数。然而,在任何单个操作周期中,仅一个64位操作数从矢量数据路径侧B116转移到标量数据路径侧A 115。任何矢量数据路径侧B116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246)可以从全局标量寄存器文件211读取64位操作数。如果相对应的指令是标量指令,则交叉路径操作数数据被视为任何其它64位操作数。如果相对应的指令是矢量指令,则操作数的高448位被填充为零。多个矢量数据路径侧B116功能单元可以在相同的操作周期期间采用相同的64位交叉路径数据作为操作数。在任何单个操作周期中,仅一个64位操作数从标量数据路径侧A 115转移到矢量数据路径侧B116。
在某些受限情况下,流引擎125转移数据。流引擎125控制两个数据流。流由特定类型的元素的序列组成。对流进行操作的程序按顺序读取数据,依次对每个元素进行操作。每个流都具有以下基本性质。流数据具有明确定义的开始和结束时间。流数据在整个流中具有固定的元素大小和类型。流数据具有固定的元素序列。因此,程序无法在流内随机地查找。流数据在活动状态下是只读的。程序无法在读取的同时写入流。一旦流被打开,流引擎125:计算地址;从二级统一高速缓存获取定义的数据类型(这可能需要来自更高级别的存储器的高速缓存服务);进行数据类型操纵,例如零扩展、符号扩展、数据元素排序/交换(例如,矩阵转置);并且将数据直接传递到CPU 110内的编程数据寄存器文件。因此,流引擎125对于对表现良好的数据进行实时数字过滤操作很有用。流引擎125从相对应的CPU释放这些存储器获取任务,从而启用其它处理功能。
流引擎125提供了以下益处。流引擎125允许多维存储器访问。流引擎125增加了功能单元的可用带宽。由于流缓冲器绕过一级数据高速缓存123,因此流引擎125使高速缓存未命中延迟(stall)的数量最小化。流引擎125减少了维持循环所需的标量运算的数量。流引擎125管理地址指针。流引擎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)期间,一级指令高速缓存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流水线彼此分离。来自一级指令高速缓存L1I的获取包返回可以占用不同数量的时钟周期,这取决于外部环境,例如一级指令高速缓存121中存在命中还是二级组合高速缓存130中存在命中。因此,程序访问阶段1112(PA)可以占用几个时钟周期,而不是如其它阶段中那样占用1个时钟周期。
并行执行的指令构成执行包。在一个实例中,执行包可以含有多达十六个指令。执行包中的两个指令不得使用相同的功能单元。槽是以下五种类型中的一个:1)在CPU 110的功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225、D2单元226、L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246)中的一个上执行的自含指令;2)无单元指令,例如NOP(无操作)指令或多NOP指令;3)分支指令;4)常数字段扩展;和5)条件代码扩展。这些槽类型中的一些将在下面进一步解释。
分派和解码阶段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的输入来示意性地示出。
在一些情况下,可以调用处理器100(例如,DSP)来执行需要进行排序功能的软件。如上所解释,以处理器级别(例如,使用汇编或编译器级别的指令)实施排序功能需要多个指令来标识最大值/最小值及其在值数组中的索引或位置。由于由DSP进行的排序功能通常具有频繁性和重复性,因此不希望增加指令开销。
图13示出了在执行具有索引的矢量最大值/最小值指令中使用的寄存器1300的一个实例。寄存器1300包含第一源寄存器1302、第二源寄存器1304和目的地寄存器1306。如将在下面进一步解释,在一些实例中,第二源寄存器1304用作目的地寄存器1306。寄存器1300还包含断言寄存器1308。在本实例中,第一和第二源寄存器1302、1304以及目的地寄存器1306是512位矢量寄存器,例如以上解释的全局矢量寄存器文件231中含有的那些。在本实例中,断言寄存器1308是含在断言寄存器文件234中的64位断言寄存器,这也在上面进行了解释。在其它实例中,第一和第二源寄存器1302、1304、目的地寄存器1306和断言寄存器1308可以具有不同的大小;本公开的范围不限于某一个特定寄存器大小或某一组特定寄存器大小。
在本实例中,第一源寄存器1302、第二源寄存器1304、目的地寄存器1306和断言寄存器1308中的每一个都被分为64个相等大小的通道,标记为通道0至通道63。因此,第一和第二源寄存器1302、1304以及目的地寄存器1306是8位通道(分别标记为字节0至字节63),而断言寄存器1308的通道是单个位通道(分别标记为P0至P63)。在不同寄存器中的编号相似的通道中的数据被称为在“相对应的”通道中。例如,第一源寄存器1302的字节0、第二源寄存器1304的字节0、目的地寄存器1306的字节0和断言寄存器1308的位P0都在相对应的通道中,即在通道0中。
具有索引的矢量最大值指令含有指定第一源寄存器1302、第二源寄存器1304和目的地寄存器1306的字段(例如,在全局矢量寄存器文件231中)。具有索引的矢量最大值指令还含有指定断言寄存器1308的字段(例如,在断言寄存器文件234中)。响应于执行具有索引的矢量最大值指令,DSP 100将第一和第二源寄存器1302、1304的各个通道中的每对值进行比较。例如,将第一源寄存器1302的字节0与第二源寄存器1304的字节0进行比较,将第一源寄存器1302的字节1与第二源寄存器1304的字节1进行比较,依此类推。由于第一和第二源寄存器1302、1304的相对应通道中的值的比较,DSP 100标识每对比较值的最大值,并将最大值存储在目的地寄存器1306的相对应通道中。例如,第一和第二源寄存器1302、1304中的通道0值的最大值被存储在目的地寄存器1306的通道0中。在第二源寄存器1304用作目的地寄存器1306的实例中,第二源寄存器1304的通道0中的数据可以被比较中所标识的最大值覆写。
另外,响应于执行具有索引的矢量最大值指令,DSP 100认定或取消认定断言寄存器1308的相对应通道。为便于下面的讨论,“认定”是指将断言寄存器1308位值设置为‘1’,而“取消认定”是指将断言寄存器1308位值设置为‘0’。然而,应当理解,本公开的范围不限于与断言寄存器1308中的字段的认定或取消认定相关的某个值。在一个实例中,由于比较指示最大值来自或含在第一源寄存器1302中,DSP 100认定断言寄存器1308的相对应通道。在本实例中,由于比较指示最大值来自或含在第二源寄存器1302中,DSP 100取消认定断言寄存器1308的相对应通道。在第一和第二源寄存器1302、1304的相对应通道中的值相等的情况下,可以将认定还是取消认定断言寄存器1308的相对应通道视为设计选择。也就是说,在一些实例中,第一和第二源寄存器1302、1304的通道中的等效值会导致认定断言寄存器1308的相对应通道;在其它实例中,第一和第二源寄存器1302、1304的通道中的等效值会导致取消认定断言寄存器1308的相对应通道。
具有索引的矢量最小值指令也含有指定第一源寄存器1302、第二源寄存器1304和目的地寄存器1306的字段(例如,在全局矢量寄存器文件231中)。具有索引的矢量最小值指令还含有指定断言寄存器1308的字段(例如,在断言寄存器文件234中)。响应于执行具有索引的矢量最小值指令,DSP 100将第一和第二源寄存器1302、1304的各个通道中的每对值进行比较。例如,将第一源寄存器1302的字节0与第二源寄存器1304的字节0进行比较,将第一源寄存器1302的字节1与第二源寄存器1304的字节1进行比较,依此类推。由于第一和第二源寄存器1302、1304的相对应通道中的值的比较,DSP 100标识每对比较值的最小值,并将最小值存储在目的地寄存器1306的相对应通道中。例如,第一和第二源寄存器1302、1304中的通道0值的最小值被存储在目的地寄存器1306的通道0中。在第二源寄存器1304用作目的地寄存器1306的实例中,第二源寄存器1304的通道0中的数据可以被比较中所标识的最小值覆写。
另外,响应于执行具有索引的矢量最小值指令,DSP 100认定或取消认定断言寄存器1308的相对应通道。在一个实例中,由于比较指示最小值来自或含在第一源寄存器1302中,DSP 100认定断言寄存器1308的相对应通道。在本实例中,由于比较指示最小值来自或含在第二源寄存器1302中,DSP 100取消认定断言寄存器1308的相对应通道。如上,在第一和第二源寄存器1302、1304的相对应通道中的值相等的情况下,可以将认定还是取消认定断言寄存器1308的相对应通道视为设计选择。也就是说,在一些实例中,第一和第二源寄存器1302、1304的通道中的等效值会导致认定断言寄存器1308的相对应通道;在其它实例中,第一和第二源寄存器1302、1304的通道中的等效值会导致取消认定断言寄存器1308的相对应通道。
图14A-14D示出了具有索引的矢量最大值/最小值指令的功能性的各个实例。特别地,图14A-14D示出了含在第一和第二源寄存器1402、1404的前四个通道中的值。图14A-14D还示出了存储在目的地寄存器1406和断言寄存器1408的相对应的前四个通道中的值,其由执行具有索引的矢量最大值/最小值指令而产生,如下面进一步解释。尽管对于第一和第二源寄存器1402、1404、目的地寄存器1406和断言寄存器1408中的每一个仅示出了四个通道,但是应当理解,这是为了便于讨论,并且图14A-14D的实例可以扩展到以上关于图13讨论的寄存器大小。此外,如以上关于图13所解释,在一些实例中,第二源寄存器1404用作目的地寄存器1406,并且因此,第二源寄存器1404的先前值被针对每个通道所标识的最小值或最大值覆写。
图14A示出了具有索引的矢量最大值指令的一个实例,其中第一和第二源寄存器1402a、1404a的通道中的数据被视为无符号值。因此,如以上所解释,目的地寄存器1406a含有来自第一和第二源寄存器1402a、1404a的相对应通道的每对比较值的最大值。在本实例中,如果所标识的最大值来自第一源寄存器1402a,则认定断言寄存器1408a的相对应通道,并且如果所标识的最大值来自第二源寄存器1404a,则取消认定。
示范性第一源寄存器1402a数据分别为通道3至通道0中的x01、x04、x80、x7F。示范性第二源寄存器1404a数据分别为通道3至通道0中的x02、x03、x6F、x7F。由于执行具有索引的矢量最大值指令,因此在数据值是无符号值的本实例中,目的地寄存器1406a含有最大值,即通道3中的x02、通道2中的x04、通道1中的x80和通道0中的x7F。
由于通道3中所标识的最大值x02来自第二源寄存器1404a,因此取消认定断言寄存器1408a的相对应通道。由于通道2中所标识的最大值x04来自第一源寄存器1402a,因此认定断言寄存器1408a的相对应通道。由于通道1中所标识的最大值x80来自第一源寄存器1402a,因此认定断言寄存器1408a的相对应通道。最后,由于通道0中的值相等,因此在本实例中,取消认定断言寄存器1408a的相对应通道。
图14B示出了具有索引的矢量最大值指令的一个实例,其中第一和第二源寄存器1402b、1404b的通道中的数据被视为有符号值。因此,如以上所解释,目的地寄存器1406b含有来自第一和第二源寄存器1402b、1404b的相对应通道的每对比较值的最大值。在本实例中,如果所标识的最大值来自第一源寄存器1402b,则认定断言寄存器1408b的相对应通道,并且如果所标识的最大值来自第二源寄存器1404b,则取消认定。
示范性第一源寄存器1402b数据分别为通道3至通道0中的x01、x04、x80、x7F。示范性第二源寄存器1404b数据分别为通道3至通道0中的x02、x03、x6F、x7F。由于执行具有索引的矢量最大值指令,因此在数据值是有符号值的本实例中,目的地寄存器1406b含有最大值,即通道3中的x02、通道2中的x04、通道1中的x6F和通道0中的x7F。
由于通道3中所标识的最大值x02来自第二源寄存器1404b,因此取消认定断言寄存器1408b的相对应通道。由于通道2中所标识的最大值x04来自第一源寄存器1402b,因此认定断言寄存器1408b的相对应通道。由于通道1中所标识的最大值x6F来自第二源寄存器1404b,因此取消认定断言寄存器1408b的相对应通道。最后,由于通道0中的值相等,因此在本实例中,取消认定寄存器1408b的相对应通道。
图14C示出了具有索引的矢量最小值指令的一个实例,其中第一和第二源寄存器1402c、1404c的通道中的数据被视为无符号值。因此,如以上所解释,目的地寄存器1406c含有来自第一和第二源寄存器1402c、1404c的相对应通道的每对比较值的最小值。在本实例中,如果所标识的最小值来自第一源寄存器1402c,则认定断言寄存器1408c的相对应通道,并且如果所标识的最小值来自第二源寄存器1404c,则取消认定。
示范性第一源寄存器1402c数据分别为通道3至通道0中的x01、x04、x80、x7F。示范性第二源寄存器1404c数据分别为通道3至通道0中的x02、x03、x6F、x7F。由于执行具有索引的矢量最小值指令,因此在数据值是无符号值的本实例中,目的地寄存器1406c含有最小值,即通道3中的x01、通道2中的x03、通道1中的x6F和通道0中的x7F。
由于通道3中所标识的最小值x01来自第一源寄存器1402c,因此认定断言寄存器1408c的相对应通道。由于通道2中所标识的最小值x03来自第二源寄存器1404c,因此取消认定断言寄存器1408c的相对应通道。由于通道1中所标识的最小值x6F来自第二源寄存器1404c,因此取消认定断言寄存器1408c的相对应通道。最后,由于通道0中的值相等,因此在本实例中,取消认定断言寄存器1408b的相对应通道。
最后,图14D示出了具有索引的矢量最小值指令的一个实例,其中第一和第二源寄存器1402d、1404d的通道中的数据被视为有符号值。因此,如以上所解释,目的地寄存器1406d含有来自第一和第二源寄存器1402d、1404d的相对应通道的每对比较值的最小值。在本实例中,如果所标识的最小值来自第一源寄存器1402d,则认定断言寄存器1408d的相对应通道,并且如果所标识的最小值来自第二源寄存器1404d,则取消认定。
示范性第一源寄存器1402d数据分别为通道3至通道0中的x01、x04、x80、x7F。示范性第二源寄存器1404d数据分别为通道3至通道0中的x02、x03、x6F、x7F。由于执行具有索引的矢量最小值指令,因此在数据值是有符号值的本实例中,目的地寄存器1406d含有最小值,即通道3中的x01、通道2中的x03、通道1中的x80和通道0中的x7F。
由于通道3中所标识的最小值x01来自第一源寄存器1402d,因此认定断言寄存器1408d的相对应通道。由于通道2中所标识的最小值x03来自第二源寄存器1404d,因此取消认定断言寄存器1408d的相对应通道。由于通道1中所标识的最小值x80来自第一源寄存器1402d,所以认定断言寄存器1408d的相对应通道。最后,由于通道0中的值相等,因此在本实例中,取消认定断言寄存器1408b的相对应通道。
图15示出了本公开的实例所使用的功能单元指令的指令编码1500的一个实例。其它指令编码也是可行的并且在本公开的范围内。每个指令由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)中的一个的操作。位字段定义如下。
pdst字段1502(位26到位31)将相对应的断言寄存器文件234中的断言寄存器指定为指令结果的索引或断言部分的目的地。
src2/dst字段1504(位20到25)从全局矢量寄存器文件231指定第二源寄存器(例如,第二源寄存器1304),并且在本实例中,还指定将保存比较结果或所标识的最大值/最小值的目的地寄存器(例如,目的地寄存器1306)。
src1字段1506(位14到19)从全局矢量寄存器文件231指定第一源寄存器(例如,第一源寄存器1302)。
操作码字段1508(位5到13)指定指令的类型(例如,最大值或最小值),并且指明适当的指令选项(例如,将源寄存器的通道中的数据视为有符号或无符号值)。单元字段1510(位2到4)提供了所使用功能单元和所进行操作的明确指明。除了下面详细说明的指令选项之外,操作码的详细解释通常超出了本公开的范围。
s位1512(位1)指明标量数据路径侧A 115或矢量数据路径侧B116。如果s=0,则选择标量数据路径侧A115。这将功能单元限制为图2中示出的L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226以及相对应的寄存器文件。类似地,s=1选择矢量数据路径侧B116,从而将功能单元限制为图2中示出的L2单元241、S2单元242、M2单元243、N2单元244、P单元246和相对应的寄存器文件。
p位1514(位0)标记执行包。p位确定指令是否与后续指令并行执行。从低位地址到高位地址扫描p位。如果当前指令的p=1,则下一指令与当前指令并行执行。如果当前指令的p=0,则在当前指令之后的周期中执行下一指令。所有并行执行的指令构成执行包。执行包可以含有多达十二个指令。执行包中的每个指令必须使用不同的功能单元。
图16示出了根据本公开的实例的方法1600的流程图。方法1600在框1602中开始:指定含有第一源数据的第一源寄存器、含有第二源数据的第二源寄存器、用于存储比较数据的目的地寄存器和断言寄存器。第一和第二源寄存器、目的地寄存器和断言寄存器在具有索引的矢量最大值/最小值指令的字段中指定,分别例如src1字段1506、src2字段1504、dst字段1504和pdst字段1502(其关于图15在以上描述)。在某些情况下,断言寄存器是含在断言寄存器文件234中的64位断言寄存器,这在上面进行了解释。在其它情况下,第一和第二源寄存器、目的地寄存器和断言寄存器可以具有不同的大小;本公开的范围不限于某一个特定寄存器大小或某一组特定寄存器大小。
方法1600在框1604中继续:执行具有索引的矢量最大值/最小值指令,特别是通过将第一源寄存器的通道中的值与第二源寄存器的相对应通道中的值进行比较以标识最大值/最小值。在一个实例中,源寄存器是512位矢量寄存器,并且通道是8位通道,使得在执行单个具有索引的矢量最大值/最小值指令时进行64次比较,如以上关于图13所解释。8位通道可以被解释为有符号或无符号值。
方法1600在框1606中进一步继续:将最大值/最小值标识值存储在目的地寄存器的相对应通道中。在一个实例中,目的地寄存器可以是第二源寄存器,使得第二源寄存器被所标识的最大值/最小值覆写。
方法1600在框1608中继续:由于最大值/最小值来自第一源寄存器而认定断言寄存器的相对应通道。然而,如果最大值/最小值来自第二源寄存器,则方法1600在框1610中继续:取消认定断言寄存器的相对应通道。在本实例中,“认定”是指将断言寄存器值设置为‘1’,而“取消认定”是指将断言寄存器位值设置为‘0’。然而,应当理解,本公开的范围不限于与断言寄存器中的字段的认定或取消认定相关的某个值。在一个实例中,由于比较指示最大值/最小值来自或含在第一源寄存器中,DSP 100认定断言寄存器的相对应通道。在本实例中,由于比较指示最大值/最小值来自或含在第二源寄存器中,DSP 100取消认定断言寄存器的相对应通道。在第一和第二源寄存器的相对应通道中的值相等的情况下,可以将认定还是取消认定断言寄存器的相对应通道视为设计选择。也就是说,在一些实例中,第一和第二源寄存器的通道中的等效值会导致认定断言寄存器的相对应通道;在其它实例中,第一和第二源寄存器的通道中的等效值会导致取消认定断言寄存器的相对应通道。
在前述讨论和权利要求中,术语“包含”和“包括”以开放式方式使用,并且因此应被解释为表示“包含但不限于……”。而且,术语“耦合(couple/couples)”旨在表示间接或直接连接。因此,如果第一装置耦合到第二装置,则连接可以通过直接连接或通过经由其它装置和连接的间接连接。类似地,耦合在第一组件或位置和第二组件或位置之间的装置可以通过直接连接或通过经由其它装置和连接的间接连接。“被配置成”进行任务或功能的元件或特征可以由制造商在制造时进行配置(例如,编程或在结构上设计)以进行功能和/或可以在制造后可由用户配置(或重新配置)以进行功能和/或其它另外或替代的功能。配置可以通过装置的固件和/或软件编程,通过装置的硬件组件和互连的构造和/或布置,或其组合。另外,在前述讨论中,短语“接地”或类似词语的使用旨在包含机壳接地、地面接地、浮动接地、虚拟接地、数字接地、公共接地和/或适用于或适合于本公开的教导的任何其它形式的接地连接。除非另有说明,否则在值之前的“约”、“大约”或“基本上”是指所述值的+/-10%。
以上讨论旨在说明本公开的原理和各个实例。一旦完全理解了上述公开内容,许多变化和修改对于本领域技术人员将变得显而易见。以下权利要求旨在被解释为涵盖所有此些变化和修改。
Claims (24)
1.一种用于响应于具有索引的矢量最大值指令而在处理器中将第一和第二源数据进行比较的方法,所述方法包括:
在所述具有索引的矢量最大值指令的相应字段中,指定含有所述第一源数据的第一源寄存器、含有所述第二源数据的第二源寄存器、用于存储比较数据的目的地寄存器和断言寄存器,其中所述第一和第二源寄存器、所述目的地寄存器和所述断言寄存器中的每一个包括多个通道;和
执行所述具有索引的矢量最大值指令,其中执行所述具有索引的矢量最大值指令进一步包括,针对所述第一源寄存器中的每个通道和所述第二源寄存器中的相对应通道:
将所述第一源寄存器的所述通道中的值与所述第二源寄存器的所述相对应通道中的值进行比较,以标识最大值;
将所述最大值存储在所述目的地寄存器的相对应通道中;
由于所述最大值来自所述第一源寄存器而认定所述断言寄存器的相对应通道;和
由于所述最大值来自所述第二源寄存器而取消认定所述断言寄存器的所述相对应通道。
2.根据权利要求1所述的方法,其中所述目的地寄存器包括所述第二源寄存器。
3.根据权利要求1所述的方法,其中所述第一和第二源数据各自包括512位矢量。
4.根据权利要求3所述的方法,其中所述第一和第二源寄存器的所述通道包括8位通道。
5.根据权利要求4所述的方法,其中每个8位通道中的所述值是有符号值。
6.根据权利要求4所述的方法,其中所述断言寄存器的所述相对应通道包括单个位。
7.一种数据处理器,其包括:
第一源寄存器,其被配置成含有第一源数据;
第二源寄存器,其被配置成含有第二源数据;
目的地寄存器;和
断言寄存器;
其中所述第一和第二源寄存器、所述目的地寄存器和所述断言寄存器中的每一个包括多个通道;
其中响应于执行单个具有索引的矢量最大值指令,所述数据处理器被配置成:
将所述第一源寄存器的所述通道中的值与所述第二源寄存器的所述相对应通道中的值进行比较,以标识最大值;
将所述最大值存储在所述目的地寄存器的相对应通道中;
由于所述最大值来自所述第一源寄存器而认定所述断言寄存器的相对应通道;和
由于所述最大值来自所述第二源寄存器而取消认定所述断言寄存器的所述相对应通道。
8.根据权利要求7所述的数据处理器,其中所述目的地寄存器包括所述第二源寄存器。
9.根据权利要求7所述的数据处理器,其中所述第一和第二源数据各自包括512位矢量。
10.根据权利要求9所述的数据处理器,其中所述第一和第二源寄存器的所述通道包括8位通道。
11.根据权利要求10所述的数据处理器,其中每个8位通道中的所述值是有符号值。
12.根据权利要求10所述的数据处理器,其中所述断言寄存器的所述相对应通道包括单个位。
13.一种用于响应于具有索引的矢量最小值指令而在处理器中将第一和第二源数据进行比较的方法,所述方法包括:
在所述具有索引的矢量最小值指令的相应字段中,指定含有所述第一源数据的第一源寄存器、含有所述第二源数据的第二源寄存器、用于存储比较数据的目的地寄存器和断言寄存器,其中所述第一和第二源寄存器、所述目的地寄存器和所述断言寄存器中的每一个包括多个通道;和
执行所述具有索引的矢量最小值指令,其中执行所述具有索引的矢量最小值指令进一步包括,针对所述第一源寄存器中的每个通道和所述第二源寄存器中的相对应通道:
将所述第一源寄存器的所述通道中的值与所述第二源寄存器的所述相对应通道中的值进行比较,以标识最小值;
将所述最小值存储在所述目的地寄存器的相对应通道中;
由于所述最小值来自所述第一源寄存器而认定所述断言寄存器的相对应通道;和
由于所述最小值来自所述第二源寄存器而取消认定所述断言寄存器的所述相对应通道。
14.根据权利要求13所述的方法,其中所述目的地寄存器包括所述第二源寄存器。
15.根据权利要求13所述的方法,其中所述第一和第二源数据各自包括512位矢量。
16.根据权利要求15所述的方法,其中所述第一和第二源寄存器的所述通道包括8位通道。
17.根据权利要求16所述的方法,其中每个8位通道中的所述值是有符号值。
18.根据权利要求16所述的方法,其中所述断言寄存器的所述相对应通道包括单个位。
19.一种数据处理器,其包括:
第一源寄存器,其被配置成含有第一源数据;
第二源寄存器,其被配置成含有第二源数据;
目的地寄存器;和
断言寄存器;
其中所述第一和第二源寄存器、所述目的地寄存器和所述断言寄存器中的每一个包括多个相对应通道;
其中响应于执行单个具有索引的矢量最小值指令,所述数据处理器被配置成:
将所述第一源寄存器的所述通道中的值与所述第二源寄存器的所述相对应通道中的值进行比较,以标识最小值;
将所述最小值存储在所述目的地寄存器的相对应通道中;
由于所述最小值来自所述第一源寄存器而认定所述断言寄存器的相对应通道;和
由于所述最小值来自所述第二源寄存器而取消认定所述断言寄存器的所述相对应通道。
20.根据权利要求19所述的数据处理器,其中所述目的地寄存器包括所述第二源寄存器。
21.根据权利要求19所述的数据处理器,其中所述第一和第二源数据各自包括512位矢量。
22.根据权利要求21所述的数据处理器,其中所述第一和第二源寄存器的所述通道包括8位通道。
23.根据权利要求22所述的数据处理器,其中每个8位通道中的所述值是有符号值。
24.根据权利要求22所述的数据处理器,其中所述断言寄存器的所述相对应通道包括单个位。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/422,501 US10963252B2 (en) | 2019-05-24 | 2019-05-24 | Vector maximum and minimum with indexing |
US16/422,501 | 2019-05-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111984316A true CN111984316A (zh) | 2020-11-24 |
Family
ID=73441605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010424516.4A Pending CN111984316A (zh) | 2019-05-24 | 2020-05-19 | 用于在处理器中比较源数据的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10963252B2 (zh) |
CN (1) | CN111984316A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114710161A (zh) * | 2022-06-06 | 2022-07-05 | 成都市易冲半导体有限公司 | 一种adc通道结果计算的面积优化方法和电路 |
CN114840255A (zh) * | 2022-07-04 | 2022-08-02 | 飞腾信息技术有限公司 | 处理数据的方法、装置及设备可读存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5627981A (en) * | 1994-07-01 | 1997-05-06 | Digital Equipment Corporation | Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination |
WO2004066141A2 (en) * | 2003-01-15 | 2004-08-05 | Globespanvirata Incorporated | Apparatus and method for determining extreme values |
WO2006010872A1 (en) * | 2004-07-27 | 2006-02-02 | Arm Limited | Handling of conditional instructions in a data processing apparatus |
US8417921B2 (en) * | 2008-08-15 | 2013-04-09 | Apple Inc. | Running-min and running-max instructions for processing vectors using a base value from a key element of an input vector |
US20130086328A1 (en) * | 2011-06-13 | 2013-04-04 | Paneve, Llc | General Purpose Digital Data Processor, Systems and Methods |
US10620957B2 (en) * | 2015-10-22 | 2020-04-14 | Texas Instruments Incorporated | Method for forming constant extensions in the same execute packet in a VLIW processor |
GB2549737B (en) * | 2016-04-26 | 2019-05-08 | Advanced Risc Mach Ltd | An apparatus and method for managing address collisions when performing vector operations |
US10691455B2 (en) * | 2017-05-23 | 2020-06-23 | Samsung Electronics Co., Ltd | Power saving branch modes in hardware |
-
2019
- 2019-05-24 US US16/422,501 patent/US10963252B2/en active Active
-
2020
- 2020-05-19 CN CN202010424516.4A patent/CN111984316A/zh active Pending
-
2021
- 2021-03-29 US US17/215,013 patent/US11614940B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114710161A (zh) * | 2022-06-06 | 2022-07-05 | 成都市易冲半导体有限公司 | 一种adc通道结果计算的面积优化方法和电路 |
CN114840255A (zh) * | 2022-07-04 | 2022-08-02 | 飞腾信息技术有限公司 | 处理数据的方法、装置及设备可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20210216313A1 (en) | 2021-07-15 |
US20230367598A1 (en) | 2023-11-16 |
US11614940B2 (en) | 2023-03-28 |
US10963252B2 (en) | 2021-03-30 |
US20200371788A1 (en) | 2020-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11989555B2 (en) | Instructions for remote atomic operations | |
US10963247B2 (en) | Vector floating-point classification | |
US20020133682A1 (en) | System with wide operand architecture, and method | |
CN111213131B (zh) | 高速缓存器中的零时延预提取 | |
CN108139911B (zh) | 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 | |
US20240028338A1 (en) | Histogram operation | |
CN111406286A (zh) | 具有数据元素提升的查找表 | |
CN111984319A (zh) | 嵌套循环控制 | |
US11614940B2 (en) | Vector maximum and minimum with indexing | |
US11403110B2 (en) | Storing a result of a first instruction of an execute packet in a holding register prior to completion of a second instruction of the execute packet | |
US20230221955A1 (en) | Vector bit transpose | |
US11934830B2 (en) | Method and apparatus for data-ready memory operations | |
EP4020225A1 (en) | Adaptive remote atomics | |
US20200371793A1 (en) | Vector store using bit-reversed order | |
US12032961B2 (en) | Vector maximum and minimum with indexing | |
US11900112B2 (en) | Vector reverse | |
US11449336B2 (en) | Method of storing register data elements to interleave with data elements of a different register, a processor thereof, and a system thereof | |
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 |