CN111984315A - 矢量浮点缩放 - Google Patents
矢量浮点缩放 Download PDFInfo
- Publication number
- CN111984315A CN111984315A CN202010410209.0A CN202010410209A CN111984315A CN 111984315 A CN111984315 A CN 111984315A CN 202010410209 A CN202010410209 A CN 202010410209A CN 111984315 A CN111984315 A CN 111984315A
- Authority
- CN
- China
- Prior art keywords
- floating
- value
- register
- scaling
- point value
- 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 claims abstract description 24
- 230000004044 response Effects 0.000 claims abstract description 14
- 239000000872 buffer Substances 0.000 description 51
- 210000004027 cell Anatomy 0.000 description 47
- 238000012545 processing Methods 0.000 description 22
- 230000009977 dual effect Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification 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
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 210000004457 myocytus nodalis Anatomy 0.000 description 2
- 230000017105 transposition Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 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/3001—Arithmetic 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/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/78—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
-
- 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/30098—Register arrangements
-
- 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
- G06F9/30109—Register structure having multiple operands in a single register
-
- 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
- G06F9/30112—Register structure comprising data of variable length
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Abstract
本申请公开矢量浮点缩放。一种响应于矢量浮点缩放指令而在处理器中缩放源数据的方法(1600)包括指定包含源数据的第一源寄存器、包含缩放值的第二源寄存器以及用于存储缩放的源数据的目的地寄存器(1602)。第一源寄存器包括各自包含浮点值的多个通道,并且第二源寄存器和目的地寄存器各自包括与第一源寄存器的通道相对应的多个通道。该方法包括通过以下方式执行矢量浮点缩放指令:针对第一源寄存器中的每个通道,将第二源寄存器的对应通道中的缩放值添加到第一源寄存器的通道中的浮点值的指数字段中以创建缩放的浮点值(1604),并将缩放的浮点值存储在目的地寄存器的对应通道中(1606)。
Description
背景技术
现代数字信号处理器(DSP)面临多重挑战。DSP可能频繁地执行需要执行通用算法的软件,这些算法需要将浮点值乘以或除以2的幂(例如,牛顿-拉夫森近似)。浮点乘法运算需要多个周期才能完成。考虑到DSP可能频繁地执行需要浮点值乘以2的幂的算法,因此执行每个浮点乘法运算所需的多个周期形式的计算开销是不希望的。
发明内容
根据本公开的至少一个示例,一种响应于矢量浮点缩放指令而在处理器中缩放源数据的方法包括指定包含源数据的第一源寄存器、包含缩放值的第二源寄存器以及用于存储缩放的源数据的目的地寄存器。第一源寄存器包括各自包含浮点值的多个通道,并且第二源寄存器和目的地寄存器各自包括与第一源寄存器的通道相对应的多个通道。该方法包括通过以下方式执行矢量浮点缩放指令:针对第一源寄存器中的每个通道,将第二源寄存器的对应通道中的缩放值添加到第一源寄存器的通道中的浮点值的指数字段中以创建缩放的浮点值,并且将缩放的浮点值存储在目的地寄存器的对应通道中。
根据本公开的另一示例,一种数据处理器包括:第一源寄存器,其被配置为包含源数据;第二源寄存器,其被配置为包含缩放值;以及目的地寄存器。第一源寄存器包括各自包含浮点值的多个通道,并且第二源寄存器和目的地寄存器各自包括与第一源寄存器的通道相对应的多个通道。响应于单个矢量浮点缩放指令的执行,数据处理器被配置为针对第一源寄存器中的每个通道,将第二源寄存器的对应通道中的缩放值添加到第一源寄存器的通道中的浮点值的指数字段中以创建缩放的浮点值,并且将缩放的浮点值存储在目的地寄存器的对应通道中。
附图说明
对于各种示例的详细描述,现在将参考附图,其中:
图1示出了根据各种示例的成双的标量/矢量数据路径处理器;
图2示出了图1所示并且根据各种示例的成双的标量/矢量数据路径处理器中的寄存器和功能单元;
图3示出了示例性全局标量寄存器文件;
图4示出了由算术功能单元共享的示例性局部标量寄存器文件;
图5示出了由多个功能单元共享的示例性局部标量寄存器文件;
图6示出了由加载/存储单元共享的示例性局部标量寄存器文件;
图7示出了示例性全局矢量寄存器文件;
图8示出了示例性断言寄存器文件;
图9示出了由算术功能单元共享的示例性局部矢量寄存器文件;
图10示出了由乘法和相关功能单元共享的示例性局部矢量寄存器文件;
图11示出了根据各种示例的中央处理单元的流水线阶段;
图12示出了根据各种示例的单个提取包的十六个指令;
图13A和图13B分别示出了根据各种示例的示例性单精度浮点值和双精度浮点值;
图14A和图14B示出了根据各种示例的与指令的执行有关的示例性寄存器组;
图15A和图15B示出了根据各种示例的指令的指令编码;并且
图16示出了根据各种示例的执行指令的方法的流程图。
具体实施方式
如上所述,DSP经常执行需要执行通用算法的软件,这些算法需要将浮点值乘以或除以2的幂(例如,牛顿-拉夫森近似)。浮点乘法运算需要多个周期才能完成。由于DSP可能频繁且重复地执行需要浮点值乘以2的幂的算法,因此执行每个浮点乘法运算所需的多个周期形式的计算开销是不希望的。
为了改善执行需要将浮点值乘以或除以2的幂的算法的DSP的性能,至少通过减少此类运算的计算开销,本公开的示例针对一种矢量浮点缩放指令,其缩放第一源寄存器中的包括浮点值的源数据,并且将缩放的浮点值存储在目的地寄存器中。
矢量浮点缩放指令是单指令多数据(SIMD)指令,其根据存储在第二源寄存器的对应通道中的缩放值对第一源寄存器的通道中的数据进行运算。
例如,第一源寄存器是512位矢量寄存器,并且每个通道是32位通道(例如,单精度浮点值)。第二源寄存器的对应通道各自包含缩放值。用于每个通道的缩放值可能不同,并且因此并非所有通道都需要按相同的量进行缩放。执行矢量浮点缩放指令的结果是,第二源寄存器的16个缩放值中的每一个应用于第一源寄存器中的16个单精度浮点值中的一个,并且16个得到的缩放的浮点值存储在目的地寄存器中。
在另一个示例中,源寄存器是512位矢量寄存器,并且每个通道是64位通道(例如,双精度浮点值)。第二源寄存器的对应通道各自包含上述的缩放值。用于每个通道的缩放值可能不同,并且因此并非所有通道都需要按相同的量进行缩放。执行矢量浮点缩放指令的结果是,第二源寄存器的8个缩放值中的每一个应用于第一源寄存器中的8个双精度浮点值中的一个,并且8个得到的缩放的浮点值存储在目的地寄存器中。
在任一以上示例中,通过将缩放值添加到浮点值的指数字段中,将第二源寄存器的对应通道中的缩放值应用于第一源寄存器中的浮点值。如下面将进一步详细说明的,向浮点值的指数字段添加(或从其减去)具有将浮点值乘以(或除以)2的幂的效果。然而,与需要花费几个周期才能完成的常规的更一般的浮点乘法不同,矢量浮点缩放指令可以在单个周期内执行,或者可以在比浮点乘法运算少的周期内执行。
通过实现单个矢量浮点缩放指令,该指令以2的幂对浮点值进行缩放并且存储缩放的浮点值,可以进行浮点值乘以(或除以)2的幂,其减少了计算开销。结果,当执行需要将浮点值乘以或除以2的幂的算法时,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的硬件不参与该功能单元分配。在该示例中,指令分派单元12可以并行操作复数个指令。这种并行指令的数量由执行包的尺寸设定。这将在下面进一步详述。
指令分派单元112的分派任务的一部分是确定指令在标量数据路径侧A 115中的功能单元上执行还是在矢量数据路径侧B 116中的功能单元上执行。每个指令中被称为s位的指令位确定该指令控制哪个数据路径。这将在下面进一步详述。
指令解码单元113对当前执行包中的每个指令解码。解码包括识别执行该指令的功能单元、从可能的寄存器文件(RF)中识别用于为相应的数据处理操作供应数据的寄存器以及识别相应的数据处理操作的结果的寄存器目的地。如下面进一步解释的,指令可以包括代替一个寄存器编号操作数字段的常量字段。该解码的结果是信号,这些信号用于控制目标功能单元以便对指定数据执行由相应的指令所指定的数据处理操作。
中央处理单元核心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 116的寄存器文件。这提供从存储器(如缓存在二级组合式缓存器130中的)直接到功能单元操作数输入端的受控数据移动。这将在下面进一步详述。
图1说明各个部分之间的总线的示例性数据宽度。一级指令缓存器121将指令经由总线141供应到指令提取单元111。优选地,总线141是512位总线。总线141从一级指令缓存器121单向通到中央处理单元10。二级组合式缓存器130将指令经由总线142供应到一级指令缓存器121。优选地,总线142是512位总线。总线142从二级组合式缓存器130单向通到一级指令缓存器121。
一级数据缓存器123与标量数据路径侧A 115中的寄存器文件经由总线143交换数据。优选地,总线143是64位总线。一级数据缓存器123与矢量数据路径侧B 116中的寄存器文件经由总线144交换数据。优选地,总线144是512位总线。总线143和144被图示说明为双向支持中央处理单元110数据读取和数据写入两者。一级数据缓存器123与二级组合式缓存器130经由总线145交换数据。优选地,总线145是512位总线。总线145被图示说明为双向支持中央处理单元110数据读取和数据写入两者的缓存服务。
如本领域已知的,在缓存命中之后(如果请求的数据存储在一级数据缓存器123中),CPU数据请求直接从一级数据缓存器123提取。在缓存错失之后(指定的数据没有存储在一级数据缓存器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中),流引擎125数据请求直接从二级组合式缓存器130提取。在缓存错失之后(指定的数据没有存储在二级组合式缓存器130中),从另一级缓存器(未图示说明)或从主存储器(未图示说明)寻找该数据。在一些示例中,一级数据缓存器123缓存未存储在二级组合式缓存器130中的数据在技术上是可行的。如果支持该操作,则根据在二级组合式缓存器130中错失的流引擎125数据请求,二级组合式缓存器130应该对于流引擎125请求的数据监听一级数据缓存器123。如果一级数据缓存器123存储该数据,则其监听响应将包括随后被供应以服务流引擎125请求的数据。如果一级数据缓存器123没有存储该数据,则其监听响应将指示此结果并且二级组合式缓存器130必须服务来自另一级缓存器(未图示说明)或来自主存储器(未图示说明)的这一流引擎125请求。
在一个示例中,根据题为“UNIFIED MEMORY SYSTEM ARCHITECTURE INCLUDINGCACHE AND DIRECTLY ADDRESSABLE STATIC RANDOM ACCESS MEMORY”的美国专利No.6,606,686,一级数据缓存器123和二级组合式缓存器130两者都可以被配置为选定数量的缓存器或直接可寻址的存储器。
图2进一步说明标量数据路径侧A 115和矢量数据路径侧B 116中的功能单元和寄存器文件的细节。标量数据路径侧A 115包括全局标量寄存器文件(RF)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和断言寄存器文件214。矢量数据路径侧B 116包括L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246。在功能单元可以从哪个寄存器文件读取或者可以写入哪个寄存器文件上存在限制。这些将在下面详述。
标量数据路径侧A 115包括L1单元221。L1单元221通常接受两个64位操作数并且产生一个64位结果。这两个操作数都是从全局标量寄存器文件211或L1/S1局部寄存器文件212中的指令指定的寄存器调用的。L1单元221优选执行以下指令选择的操作:64位加/减操作;32位最小/最大操作;8位单指令多数据(SIMD)指令(诸如绝对值求和、最小值和最大值确定);循环最小/最大操作以及寄存器文件之间的各种移动操作。结果可以被写入全局标量寄存器文件211、L1/S1局部寄存器文件212、M1/N1局部寄存器文件213或D1/D2局部寄存器文件214的指令指定的寄存器中。
标量数据路径侧A 115包括S1单元222。S1单元222通常接受两个64位操作数并且产生一个64位结果。这两个操作数都是从全局标量寄存器文件211或L1/S1局部寄存器文件212中的指令指定的寄存器调用的。S1单元222优选执行与L1单元211相同类型的操作。由L1单元211和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中的指令指定的寄存器调用的。除了更宽的512位数据之外,L2单元241优选执行与L1单元221类似的指令。结果可以被写入全局矢量寄存器文件231、L2/S2局部寄存器文件232、M2/N2/C局部寄存器文件233或断言寄存器文件214的指令指定的寄存器中。
矢量数据路径侧B 116包括S2单元242。S2单元242通常接受两个512位操作数并且产生一个512位结果。这两个操作数都是从全局矢量寄存器文件231、L2/S2局部寄存器文件232或断言寄存器文件234中的指令指定的寄存器调用的。S2单元242优选与S1单元222类似地执行指令。结果可以被写入全局矢量寄存器文件231、L2/S2局部寄存器文件232、M2/N2/C局部寄存器文件233或断言寄存器文件214的指令指定的寄存器中。
矢量数据路径侧B 116包括M2单元243。M2单元243通常接受两个512位操作数并且产生一个512位结果。这两个操作数都是从全局矢量寄存器文件231或M2/N2/C局部寄存器文件233中的指令指定的寄存器调用的。除了更宽的512位数据之外,M2单元243优选执行与M1单元223类似的指令。结果可以被写入全局矢量寄存器文件231、L2/S2局部寄存器文件232或M2/N2/C局部寄存器文件233的指令指定的寄存器中。
矢量数据路径侧B 116包括N2单元244。N2单元244通常接受两个512位操作数并且产生一个512位结果。这两个操作数都是从全局矢量寄存器文件231或M2/N2/C局部寄存器文件233中的指令指定的寄存器调用的。N2单元244优选执行与M2单元243相同类型的操作。可以存在同时采用M2单元243和N2单元244两者的某些双重操作(称为成双发布的指令)。结果可以被写入全局矢量寄存器文件231、L2/S2局部寄存器文件232或M2/N2/C局部寄存器文件233的指令指定的寄存器中。
矢量数据路径侧B 116包括C单元245。C单元245通常接受两个512位操作数并且产生一个512位结果。这两个操作数都是从全局矢量寄存器文件231或M2/N2/C局部寄存器文件233中的指令指定的寄存器调用的。C单元245优选执行:“搜查”和“搜索”指令;每个时钟周期高达512个2位PN*8位乘法的I/Q复杂乘法;8位和16位的绝对差值求和(SAD)计算,每个时钟周期高达512个SAD;水平加法和水平最小/最大指令;以及矢量排列指令。C单元245还包括用于控制C单元245指令的某些操作的4个矢量控制寄存器(CUCR0到CUCR3)。控制寄存器CUCR0到CUCR3用作某些C单元245操作的操作数。控制寄存器CUCR0到CUCR3优选用于控制通用排列指令(VPERM),并且用作SIMD多重点积操作(DOTPM)和SIMD多重绝对差值求和(SAD)操作的掩码。控制寄存器CUCR0优选用于存储伽罗瓦(Galois)域乘法操作(GFMPY)的多项式。控制寄存器CUCR1优选用于存储伽罗瓦域多项式发生器函数。
矢量数据路径侧B 116包括P单元246。P单元246在局部断言寄存器文件234的寄存器上执行基础逻辑操作。P单元246具有从断言寄存器文件234读取和对断言寄存器文件234写入的直接访问权。这些操作包括单寄存器一元操作,诸如:NEG(否定),其将单个寄存器的每个位反转;BITCNT(位计数),其返回单个寄存器中具有预定数字状态(1或0)的位的数量的计数;RMBD(最右位检测),其返回从最低有效位位置(最右)到具有预定数字状态(1或0)的第一位位置的位位置的数量;DECIMATE,其选择待输出的每个指令指定的第N(第1、第2、第4等)位;以及EXPAND,其将每个位重复指令指定的N次(2、4等)。这些操作包括双寄存器二元操作,诸如:AND,其将两个寄存器的数据按位取“与”;NAND,其将两个寄存器的数据按位取“与”和“非”;OR,其将两个寄存器的数据按位取“或”;NOR,其将两个寄存器的数据按位取“或”和“非”;以及XOR,其对两个寄存器的数据取“异或”。这些操作包括将数据从断言寄存器文件234的断言寄存器转移到另一个指定断言寄存器或转移到全局矢量寄存器文件231中的指定数据寄存器。P单元246的普通预期用途包括用于控制进一步SIMD矢量操作的SIMD矢量比较结果的操纵。BITCNT指令可以用于对断言寄存器中“1”的数量进行计数以确定来自断言寄存器的有效数据元素的数量。
图3说明全局标量寄存器文件211。存在16个独立的64位宽标量寄存器,其标记为A0-A15。全局标量寄存器文件211的每个寄存器可以被读取或写入作为64位的标量数据。所有的标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226)可以对全局标量寄存器文件211读取或写入。全局标量寄存器文件211可以被读取为32位或读取为64位并且可以仅被写入为64位。指令的执行确定读取数据的尺寸。矢量数据路径侧B 116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246)可以在下面将详述的限制条件下经由交叉路径117从全局标量寄存器文件211读取。
图4说明D1/D2局部寄存器文件214。存在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。指令类型确定数据尺寸。所有的矢量数据路径侧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。存了8个独立的64位宽的寄存器,其标记为P0-P7。P局部寄存器文件234的每个寄存器可以被读取或写入作为64位的标量数据。矢量数据路径侧B 116功能单元L2单元241、S2单元242、C单元244和P单元246可以对P局部寄存器文件234写入。仅L2单元241、S2单元242和P单元246可以从P局部寄存器文件234读取。P局部寄存器文件234的普通预期用途包括:从L2单元241、S2单元242或C单元244写入一位SIMD矢量比较结果;由P单元246操纵SIMD矢量比较结果;以及使用操纵结果用于控制进一步的SIMD矢量操作。
图9说明L2/S2局部寄存器文件232。图9中说明的示例具有8个独立的512位宽的矢量寄存器。优选的指令编码(见图15)允许L2/S2局部寄存器文件232包括高达16个寄存器。图9的示例仅实施8个寄存器以降低电路尺寸和复杂性。L2/S2局部矢量寄存器文件232的每个寄存器可以被读取或写入作为64位的标量数据,标记为BL0-BL7。L2/S2局部矢量寄存器文件232的每个寄存器可以被读取或写入作为512位的矢量数据,标记为VBL0-VBL7。指令类型确定数据尺寸。所有的矢量数据路径侧B 116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246)可以对L2/S2局部矢量寄存器文件232写入。仅L2单元241和S2单元242可以从L2/S2局部矢量寄存器文件232读取。
图10说明M2/N2/C局部寄存器文件233。图10中说明的示例具有8个独立的512位宽的矢量寄存器。优选的指令编码(见图15)允许M2/N2/C局部矢量寄存器文件233包括高达16个寄存器。图10的示例仅实施8个寄存器以降低电路尺寸和复杂性。M2/N2/C局部矢量寄存器文件233的每个寄存器可以被读取或写入作为64位的标量数据,标记为BM0-BM7。M2/N2/C局部矢量寄存器文件233的每个寄存器可以被读取或写入作为512位的矢量数据,标记为VML0-VML7。所有的矢量数据路径侧B 116功能单元(L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246)可以对M2/N2/C局部矢量寄存器文件233写入。仅M2单元243、N2单元244和C单元245可以从M2/N2/C局部矢量寄存器文件233读取。
对由一侧的所有功能区可访问的全局寄存器文件和仅由一侧的一些功能单元可访问的局部寄存器文件的规定是设计选择。本公开的一些示例仅采用对应于所公开的全局寄存器文件的一类寄存器文件。
返回参考图2,交叉路径117允许标量数据路径侧A 115和矢量数据路径侧B 116之间的有限数据交换。在每个操作周期期间,一个64位数据字可以被从全局标量寄存器文件A211调用以用作矢量数据路径侧B 116的一个或多个功能单元的操作数,并且一个64位数据字可以被从全局矢量寄存器文件231调用以用作标量数据路径侧A 115的一个或多个功能单元的操作数。任何标量数据路径侧A 115功能单元(L1单元221、S1单元222、M1单元223、N1单元224、D1单元225和D2单元226)都可以从全局矢量寄存器文件231读取64位操作数。该64位操作数是全局矢量寄存器文件231的访问的寄存器中的512位数据的最低有效位。复数个标量数据路径侧A 115功能单元可以采用与相同操作周期期间的操作数相同的64位交叉路径数据。然而,在任何单个操作周期中,仅一个64位操作数被从矢量数据路径侧B 116转移到标量数据路径侧A 115。任何矢量数据路径侧B 116(L2单元241、S2单元242、M2单元243、N2单元244、C单元245和P单元246)都可以从全局标量寄存器文件211读取64位操作数。如果相应的指令是标量指令,则交叉路径操作数数据被视为任意其他64位操作数。如果相应的指令是矢量指令,则操作数的高448位由零填充。复数个矢量数据路径侧B 116功能单元可以采用与相同操作周期期间的操作数相同的64位交叉路径数据。在任何单个操作周期中,仅一个64位操作数被从标量数据路径侧A 115转移到矢量数据路径侧B 116。
流引擎125在某些受限的情况下传输数据。流引擎125控制两个数据流。一个流由特定类型的元素序列构成。对这些流进行操作的程序顺序读取数据,进而在每个元素上操作。每个流具有下列基本属性。流数据具有良好定义的开始时间和结束时间。在整个流中,流数据具有固定的元素尺寸和类型。流数据具有固定的元素序列。因此程序不能在流中随机寻找。流数据仅在激活时被读取。当程序从流读取时不能同时对该流写入。一旦流被打开,则流引擎125:计算地址;从二级统一缓存器(其可能需要来自更高级的存储器的缓存服务)提取所定义的数据类型;执行数据类型操纵,诸如零扩展、符号扩展、数据元素整理/调换(诸如矩阵转置);以及将数据直接传送到CPU 110中的程序化数据寄存器文件。因此,流引擎125有益于对表现良好的数据的实时数字滤波操作。流引擎125从相应的CPU释放这些存储器提取任务以使能其他处理功能。
流引擎125提供以下益处。流引擎125允许多维存储器访问。流引擎125增加功能单元的可用带宽。由于流缓冲器旁通一级数据缓存器123,流引擎125使缓存错失拖延(stalls)的数量最小化。流引擎125降低维持循环所需要的标量操作的数量。流引擎125管理地址指针。流引擎125处理自动释放用于其他计算的地址生成指令间隙(slot)以及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位边界上对准)中时,预定指令对准可以获得这种恰当对准的指令提取。对准的指令提取允许并行解码器在指令尺寸的提取位上的操作。可变长度的指令需要在每个指令可以被解码之前定位每个指令边界的初始步骤。固定长度指令集通常允许更规则的指令字段的布局。这简化每个解码器的结构,有益于宽发布(wide issue)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的输入来图示说明。
在某些情况下,可以调用处理器100(例如,DSP)来执行需要执行通用算法的软件,这些算法需要将浮点值乘以或除以2的幂(例如,牛顿-拉弗森近似)。浮点乘法运算需要多个周期才能完成。由于DSP可能频繁且重复地执行需要浮点值乘以2的幂的算法,因此执行每个浮点乘法运算所需的多个周期形式的计算开销是不希望的。
浮点操作数被分类为单精度(例如,32位值)和双精度(例如,64位值)。IEEE浮点数可以分类为零值、正常(normal)值、次正常(subnormal)值、无穷大值和NaN值。NaN值可以是静态NaN(QNaN)或告警NaN(SNaN)。次正常值是小于最小非零正常值的非零值。无穷大是表示无穷浮点数的值。NaN值表示无效运算的结果,诸如(+无穷大+(-无穷大))。正常单精度值精确到至少六个小数位,有时多达九个小数位。正常双精度值精确到至少15个小数位,有时多达17个小数位。
图13A示出了单精度浮点值1300的示例编码。如上所述,单精度浮点值1300包括32位。位31是符号位(s)(例如,0是正值,1是负值)。位23到30是8位指数字段(e)。位0到22是23位分数字段(f)。浮点值1300的字段表示两个范围内的浮点值:正常(0<e<255)和次正常(e=0)。以下公式定义了如何将符号、指数和分数字段转换为单精度浮点值。
正常:-1s×2(e-127)×1.f,其中0<e<255;
次正常:-1s×2-126×0.f,其中e=0并且f为非零。
图13B示出了双精度浮点值1320的示例编码。如上所述,双精度浮点值1320包括64位。位63是符号位(s)(例如,0是正值,1是负值)。位52到62是11位指数字段(e)。位0到51是52位分数字段(f)。与单精度浮点值1300相似,浮点值1320的字段表示两个范围内的浮点值:正常(0<e<2047)和次正常(e=0)。以下公式定义了如何将符号、指数和分数字段转换为双精度浮点值。
正常:-1s×2(e-1023)×1.f,其中0<e<2047;
次正常:-1s×2-1022×0.f,其中e=0并且f为非零。
返回参考图13A的单精度浮点值1300,该值1300也可以是以下表1.1所示的若干特殊值之一:
代号 | 符号(s) | 指数(e) | 分数(f) |
+0 | 0 | 0 | 0 |
-0 | 1 | 0 | 0 |
+Inf | 0 | 255 | 0 |
-Inf | 1 | 255 | 0 |
NaN | x | 255 | 非零 |
QNaN | x | 255 | 1xx…x |
SNaN | x | 255 | 0xx…x并且非零 |
表1.1特殊单精度值
如表1.1所示,零值包括+/-零两者,其仅在浮点值1300的符号位上有所不同。类似地,无穷大值包括+/-无穷大两者,其仅在浮点值1300的符号位上有所不同。此外,NaN值是广义的(例如,分数字段为非零),而QNaN值(例如,分数字段等于1xx…x)和SNaN值(例如,分数字段等于0xx…x,但不为零)是广义NaN分类的更具体版本。在将浮点值分类为NaN值时不考虑符号位。
返回参考图13B的双精度浮点值1320,该值1320也可以是以下表1.2所示的若干特殊值之一:
表1.2特殊双精度值
如表1.2所示,零值包括+/-零两者,其仅在浮点值1320的符号位上有所不同。类似地,无穷大值包括+/-无穷大两者,其仅在浮点值1320的符号位上有所不同。此外,NaN值是广义的(例如,分数字段为非零),而QNaN值(例如,分数字段等于1xx…x)和SNaN值(例如,分数字段等于0xx…x,但不为零)是广义NaN分类的更具体版本。在将浮点值分类为NaN值时不考虑符号位。
图14A示出了在执行用于单精度浮点值(例如,每个浮点值是32位)的矢量浮点缩放指令中使用的寄存器1400的示例。寄存器1400包括第一源寄存器1402、第二源寄存器1404和目的地寄存器1406。在该示例中,第一源寄存器1402和第二源寄存器1404以及目的地寄存器1406是512位矢量寄存器,诸如包含在上面说明的全局矢量寄存器文件231中的那些寄存器。然而,在其他示例中,第一源寄存器1402和第二源寄存器1404以及目的地寄存器1406中的任何一个也可以具有不同的尺寸;本公开的范围不限于特定寄存器尺寸或寄存器组尺寸。
在该示例中,其中要缩放的浮点值是单精度(例如,32位或单个字),将第一源寄存器1402和第二源寄存器1404以及目的地寄存器1404分为标记为通道0至通道15的16个相等尺寸的通道。第一源寄存器1402的每个通道包含标记为FP_0至FP_15的单精度浮点值。第二源寄存器1404的每个通道包含标为SCALE_0至SCALE_15的缩放值。在一个示例中,缩放值是16位值,并且每个通道的其余位(例如,最高的16位)被忽略。缩放值可以被视为有符号值,从而允许乘以或除以2的幂(例如,通过向第一源寄存器1402中的对应浮点值的指数字段添加或从其减去)。缩放值也可以被视为无符号值。目的地寄存器1406的每个通道包含缩放的浮点值,该缩放的浮点值是通过将第二源寄存器1404的对应通道中的缩放值添加到第一源寄存器1402的对应通道中的浮点值的指数字段而得到的。目的地寄存器1406中的缩放的浮点值标记为SFP_0至SFP_15。在不同寄存器中编号相似的通道中的数据被称为在“对应”通道中。例如,第一源寄存器1402的FP_0、第二源寄存器1404的SCALE_0和目的地寄存器1406的SFP_0在对应的通道(即通道0)中。
图14B示出了在执行用于双精度浮点值(例如,每个浮点值是64位)的矢量浮点缩放指令中使用的寄存器1420的示例。寄存器1420包括第一源寄存器1422、第二源寄存器1424和目的地寄存器1426。在该示例中,第一源寄存器1422和第二源寄存器1424以及目的地寄存器1426是512位矢量寄存器,诸如包含在在上面说明的全局矢量寄存器文件231中的那些寄存器。然而,在其他示例中,第一源寄存器1422和第二源寄存器1424以及目的地寄存器1426也可以具有不同的尺寸;本公开的范围不限于特定寄存器尺寸或寄存器组尺寸。
在该示例中,其中要缩放的浮点值是双精度(例如,64位或双字),第一源寄存器1422和第二源寄存器1424以及目的地寄存器1424被分为标记为通道0至通道7的8个相等尺寸的通道。第一源寄存器1422的每个通道包含标记为FP_0至FP_7的双精度浮点值。第二源寄存器1424的每个通道包含标记为SCALE_0至SCALE_7的缩放值。在一个示例中,缩放值是16位值,并且每个通道的其余位(例如,最高的48位)被忽略。缩放值可以被视为有符号值,从而允许乘以或除以2的幂(例如,通过向第一源寄存器1422的对应浮点值的指数字段添加或从其减去)。缩放值也可以被视为无符号值。目的地寄存器1426的每个通道包含缩放的浮点值,该缩放的浮点值是通过将第二源寄存器1424的对应通道中的缩放值添加到第一源寄存器1422的对应通道中的浮点值的指数字段而得到的。目的地寄存器1426中的缩放的浮点值标记为SFP_0至SFP_7。在不同寄存器中编号相似的通道中的数据被称为在“对应”通道中。例如,第一源寄存器1422的FP_0、第二源寄存器1424的SCALE_0和目的地寄存器1426的SFP_0在对应的通道(即通道0)中。
矢量浮点缩放指令包含指定第一源寄存器1402/1422和第二源寄存器1404/1424以及目的地寄存器1406/1426(例如,在全局矢量寄存器文件231中)的字段。矢量浮点缩放指令还包含指定浮点值是单精度还是双精度(例如,寄存器1400、1420的通道尺寸)的字段(例如,操作码字段,其将在下面进一步说明)。
响应于执行矢量浮点缩放指令,DSP 100将第二源寄存器1404/1424的每个通道中的缩放值添加到第一源寄存器1402/1422的对应通道中的浮点值的指数字段中以缩放浮点值,从而得到缩放的浮点值。DSP 100将缩放的浮点值存储在目的地寄存器1406/1426的对应通道中。
提供以下示例以说明矢量浮点缩放指令的功能。示例参考图14A,其中浮点值是单精度值。然而,应当理解,出于应用所公开的矢量浮点缩放指令的目的,单精度浮点值和双精度浮点值之间的差别仅在指数字段中所包含的值的范围。
在第一示例中,参考寄存器1400的通道0,浮点值(例如,FP_0)由2(e-127)×1.f给出,如上所述。在此示例中,f对于一般性而言是变量,并且e=128。因此,FP_0=2(128-127)×1.f=2×1.f。对应的缩放值SCALE_0等于2,其表示期望以4(例如,2SCALE_0)的因子缩放浮点值FP_0。如上所述,响应于执行矢量浮点缩放指令,DSP 100将第二源寄存器1404的每个通道中的缩放值添加到第一源寄存器1402的对应通道中的浮点值的指数字段中。因此,响应于执行矢量浮点缩放指令,将SCALE_0添加到FP_0的e中,从而得到具有e=128+2=130的缩放的浮点值SFP_0,并且缩放的浮点值SFP_0等于2(130-127)×1.f=2(3)×1.f=8×1.f,是存储在第一源寄存器1402中的浮点值FP_0的4倍。缩放的浮点值SFP_0存储在目的地寄存器1406的对应通道中。
在第二示例中,参考寄存器1400的通道0,浮点值(例如,FP_0)由2(e-127)×1.f给出,如上所述。在此示例中,f对于一般性而言是变量,并且e=128。因此,FP_0=2(128-127)×1.f=2×1.f。对应的缩放值SCALE_0等于-2,其表示期望以1/4(例如,2SCALE_0)的因子缩放浮点值FP_0。如上所述,响应于执行矢量浮点缩放指令,DSP 100将第二源寄存器1404的每个通道中的缩放值添加到第一源寄存器1402的对应通道中的浮点值的指数字段中。因此,响应于执行矢量浮点缩放指令,将SCALE_0添加到FP_0的e中,从而得到具有e=128-2=126的缩放的浮点值SFP_0,并且缩放的浮点值SFP_0等于2(126-127)×1.f=2(-1)×1.f=1/2×1.f,其是存储在第一源寄存器1402中的浮点值FP_0的1/4。缩放的浮点值SFP_0存储在目的地寄存器1406的对应通道中。
上面的讨论总体上解决了正常浮点值的缩放。然而,矢量浮点缩放指令的某些示例也可以在次正常和特殊浮点值上操作,如上所述。例如,如果第一源寄存器1402中的浮点值是最小正常浮点值,并且第二源寄存器1404的对应通道中的缩放值将浮点值缩小到次正常范围,则执行去归一化(denormalization)移位,其将分数向右移位并暴露否则将隐藏的“1”,同时将指数钳位为0。类似地,如果第一源寄存器1402中的浮点值是最大次正常浮点值,并且在第二源寄存器1404的对应通道中的缩放值将浮点值放大到正常范围,则执行归一化(normalization)移位以对分数字段进行归一化,并且分数字段的“1”部分被隐藏。另外,确定通过分数字段的归一化消耗了缩放值的哪一部分,然后将缩放值的其余部分应用于缩放的浮点值的指数字段。
在其他示例中,如果第二源寄存器1404的对应通道中的缩放值在应用于第一源寄存器1402中的浮点值时,将浮点值缩小(以绝对值)到最小正常浮点值(正值或负值)以下,则采用“冲洗到零(flush-to-zero)”模式,其中缩放的浮点值是零值,而不是如上所述的次正常值。在其他示例中,如果第二源寄存器1404的对应通道中的缩放值在应用于第一源寄存器1402中的浮点值时,将浮点值按放大(以绝对值)到最大正常浮点值(正或负)以上,则目的地寄存器1406中的缩放的浮点值是+/-无穷大值。
在另一示例中,第一源寄存器1402包括一个或多个特殊浮点值,诸如+/-零、+/-无穷大或NaN。在此示例中,矢量浮点缩放指令的执行还会在将缩放值添加到浮点值的指数字段之前检查各种条件。例如,如果第一源寄存器1402中的浮点值为+/-零,则无论第二源寄存器1404的对应通道中的缩放值如何,目的地寄存器1406的对应通道中的缩放的结果将保持+/-零。类似地,如果第一源寄存器1402中的浮点值是+/-无穷大,则无论第二源寄存器1404的对应通道中的缩放值如何,目的地寄存器1406的对应通道中的缩放的结果将保持+/-无穷大。
在另外的示例中,矢量浮点缩放指令的执行更新浮点状态寄存器,就好像已经执行了浮点乘法一样,例如以处理NaN情况。
图15A说明本公开的示例使用的功能单元指令的指令编码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)中的一个的操作。位字段被定义如下。
dst字段1502(位26至位31)在对应的矢量寄存器文件231中指定目的地寄存器,该目的地寄存器包含矢量浮点缩放指令(例如,在一个示例中为512位矢量)的执行结果(例如,缩放的浮点值)。
src2字段1504(位20至位25)指定第二源寄存器,该第二源寄存器包括在图15A的示例中为16位有符号值的缩放值。如上所述,根据第二源寄存器的尺寸和通道数,忽略每个通道的超过16位的最高位。
src1字段1506(位14至位19)指定第一源寄存器,该第一源寄存器包括浮点值,该浮点值在图15A的示例中为单精度浮点值,根据以上描述该单精度浮点值将被缩放,从而创建存储在目的地寄存器中的缩放的浮点值。
操作码字段1508(位5至位13)指明适当的指令选项(例如,源数据的通道是单精度浮点值(32位)还是双精度浮点值(64位))。例如,图15A的操作码字段1508对应于缩放单精度浮点值,例如,如图14A所示。图15B示出了与图15A中所示的指令编码相同的指令编码1520,不同之处在于指令编码1520包括对应于缩放双精度浮点值的操作码字段1528,例如,如图14B所示。单元字段1510(位2至位4)提供了所使用的功能单元和所执行的操作的明确指明,在这种情况下,该功能单元是L1单元221或S1单元222。除了以上详述的指令选项之外,操作码的详细说明通常超出了本公开的范围。
s位1510(位1)指明标量数据路径侧A 115或矢量数据路径侧B 116。如果s=0,则选择标量数据路径侧A 115。这将功能单元限制到图2中图示说明的L1单元221、S1单元222、M1单元223、N1单元224、D1单元225、D2单元226以及相应的寄存器文件。类似地,s=1选择矢量数据路径侧B 116,其将功能单元限制到图2中图示说明的L2单元241、S2单元242、M2单元243、N2单元244、P单元246以及相应的寄存器文件。
p位1512(位0)标记执行包。p位确定该指令是否与随后的指令并行执行。从较低地址到较高地址扫描p位。如果对于当前指令p=1,则下一个指令与当前指令并行执行。如果对于当前指令p=0,则下一个指令在当前指令之后的周期中执行。并行执行的所有指令组成执行包。执行包可以包含高达十二个指令。执行包中的每个指令必须使用不同的功能单元。
图16示出了根据本公开的示例的方法1600的流程图。方法1600在框1602中开始,其中指定包含源数据的第一源寄存器、包含缩放值的第二源寄存器以及目的地寄存器。第一源寄存器和第二源寄存器以及目的地寄存器在矢量浮点缩放指令的字段(诸如上面参考图15分别描述的src1字段1506、src2字段1504和dst字段1502)中被指定。源数据可以是512位矢量,其中浮点值是单精度浮点值或双精度浮点值。此外,缩放值可以是有符号值或无符号值的16位值。
方法1600在框1604中继续,其中特别是通过针对第一源寄存器的每个通道,将第二源寄存器的对应通道中的缩放值添加到第一源寄存器的通道中的浮点值的指数字段来执行矢量浮点缩放指令。如上所述,根据缩放值是否带符号,缩放值还可从浮点值的指数字段中减去。无论如何,将缩放值应用于浮点值的指数字段导致缩放的浮点值。如上所述,应用于每个浮点值的缩放值不必相同,并且因此可以将第一源寄存器的第一通道中的浮点值按第一量进行缩放,而可以将第一源寄存器的第二通道中的浮点值按第二不同量进行缩放。方法1600在框1606中继续,其中将缩放的浮点值存储在目的地寄存器的对应通道中。
方法1600的框1604通常响应于矢量浮点缩放指令的执行来解决正常浮点值的缩放。然而,如上所述,矢量浮点缩放指令的某些其他示例也可操作用于次正常和特殊浮点值(例如,+/-零、+/-无穷大和NaN)。例如,将浮点值(以绝对值)缩小到最小(正值或负值)正常浮点值以下可以导致执行去归一化移位,以使浮点值的分数字段向右移位,从而暴露否则将隐藏的“1”,并将指数字段钳位在0。类似地,将浮点值(以绝对值)放大到最大次正常浮点值(正值或负值)以上可以导致执行归一化移位以对分数字段进行归一化,并隐藏分数字段的“1”部分。另外,确定通过分数字段的归一化所消耗的缩放值的哪一部分,并且然后将缩放值的其余部分应用于缩放的浮点值的指数字段。
在其他示例中,如果第二源寄存器1404的对应通道中的缩放值在应用于第一源寄存器1402中的浮点值时,将浮点值缩小(以绝对值)到最小正常浮点值(正值或负值)以下,则采用“冲洗到零”模式,其中缩放的浮点值是零值,而不是如上所述的次正常值。在其他示例中,如果第二源寄存器1404的对应通道中的缩放值在应用于第一源寄存器1402中的浮点值时,将浮点值放大(以绝对值)到最大正常浮点值(正值或负值)以上,则目的地寄存器1406中的缩放的浮点值是+/-无穷大值。
在另一示例中,浮点值包括一个或多个特殊浮点值,诸如+/-零、+/-无穷大或NaN。在此示例中,矢量浮点缩放指令的执行还在将缩放值添加到浮点值的指数字段之前检查各种条件。例如,如果第一源寄存器1402中的浮点值为+/-零,则无论第二源寄存器1404的对应通道中的缩放值如何,目的地寄存器1406的对应通道中的缩放的结果将保持+/-零。类似地,如果第一源寄存器1402中的浮点值是+/-无穷大,则无论第二源寄存器1404的对应通道中的缩放值如何,目的地寄存器1406的对应通道中的缩放的结果将保持+/-无穷大。
在前述讨论和权利要求中,术语“包括”和“包含”以开放式方式使用,因此应解释为表示“包括但不限于……”。而且,术语“耦合”或“耦接”旨在表示间接或直接连接。因此,如果第一设备耦合到第二设备,则该连接可以是通过直接连接或通过经由其他设备和连接的间接连接。类似地,耦合在第一组件或位置与第二组件或位置之间的设备可以通过直接连接或通过经由其他设备和连接的间接连接。“被配置为”执行任务或功能的元件或特征可以由制造商在制造时进行配置(例如,编程或结构设计)以执行功能和/或可以是由用户在制造后可配置的(或可重新配置的)以执行功能和/或其他附加或替代功能。可以通过设备的固件和/或软件编程、通过设备的硬件组件和互连的构造和/或布局或其组合来进行配置。另外,在前面的讨论中,短语“接地”或类似术语的使用旨在包括机箱接地、大地接地、浮置接地、虚拟接地、数字接地、公共接地和/或适用于或适合于本公开的教导的任何其他形式的接地连接。除非另有说明,否则在值之前的“大约”、“近似”或“基本上”是指所述值的+/-10%。
以上讨论意在说明本公开的原理和各种实施例。一旦完全理解上述公开,则许多变化和修改对于本领域技术人员将变得明显。意图将随附权利要求解释为包含所有这样的变化和修改。
Claims (20)
1.一种响应于矢量浮点缩放指令而在处理器中缩放源数据的方法,所述方法包括:
在所述矢量浮点缩放指令的相应字段中,指定包含所述源数据的第一源寄存器、包含缩放值的第二源寄存器以及用于存储缩放的源数据的目的地寄存器,其中所述第一源寄存器包括各自包含浮点值的多个通道,并且所述第二源寄存器和所述目的地寄存器各自包括与所述第一源寄存器的所述通道相对应的多个通道;以及
执行所述矢量浮点缩放指令,其中执行所述矢量浮点缩放指令还包括,针对所述第一源寄存器中的每个通道:
将所述第二源寄存器的对应通道中的所述缩放值添加到所述第一源寄存器的所述通道中的所述浮点值的指数字段,以创建缩放的浮点值;以及
将所述缩放的浮点值存储在所述目的地寄存器的对应通道中。
2.根据权利要求1所述的方法,其中所述源数据包括512位矢量。
3.根据权利要求1所述的方法,其中每个浮点值包括单精度浮点值。
4.根据权利要求1所述的方法,其中每个浮点值包括双精度浮点值。
5.根据权利要求1所述的方法,其中所述缩放值包括16位值。
6.根据权利要求1所述的方法,其中所述缩放值是有符号值。
7.根据权利要求1所述的方法,其中所述缩放值是无符号值。
8.根据权利要求1所述的方法,其中所述缩放值中的至少一个缩放值不同于所述缩放值中的其他缩放值。
9.根据权利要求1所述的方法,其中所述第一源寄存器的一个通道中的所述浮点值包括正或负零浮点值,并且执行所述矢量浮点缩放指令还包括:
在所述目的寄存器的与所述一个通道相对应的通道中,分别存储正或负零浮点值,而不管在所述第二源寄存器的与所述一个通道相对应的通道中的所述缩放值如何。
10.根据权利要求1所述的方法,其中所述第一源寄存器的一个通道中的所述浮点值包括正或负无穷大浮点值,并且执行所述矢量浮点缩放指令还包括:
在所述目的寄存器的与所述一个通道相对应的通道中,分别存储正或负无穷大浮点值,而不管在所述第二源寄存器的与所述一个通道相对应的通道中的所述缩放值如何。
11.根据权利要求1所述的方法,其中当将所述第二源寄存器的通道中的所述缩放值应用于所述第一源寄存器的对应通道中的所述浮点值时,所述第二源寄存器的所述通道中的所述缩放值将所述浮点值缩小至最小正常浮点值以下,其中执行所述矢量浮点缩放指令还包括:
对所述一个通道中的所述浮点值的分数字段进行去归一化;以及
将所述一个通道中的所述浮点值的所述指数字段钳位为0,以创建所述缩放的浮点值。
12.根据权利要求1所述的方法,其中当将所述第二源寄存器的通道中的所述缩放值应用于所述第一源寄存器的对应通道中的所述浮点值时,所述第二源寄存器的所述通道中的所述缩放值将所述浮点值放大至最大次正常浮点值以上,其中执行所述矢量浮点缩放指令还包括:
对所述一个通道中的所述浮点值的分数字段进行归一化;
确定对所述分数字段进行归一化所消耗的所述缩放值的一部分;以及
将所述缩放值的其余部分应用于所述一个通道中的所述浮点值的所述指数字段,以创建所述缩放的浮点值。
13.一种数据处理器,其包括:
第一源寄存器,其被配置为包含源数据;
第二源寄存器,其被配置为包含缩放值;以及
目的地寄存器;
其中所述第一源寄存器包括各自包含浮点值的多个通道,并且所述第二源寄存器和所述目的寄存器各自包括与所述第一源寄存器的所述通道相对应的多个通道;
其中,响应于单个矢量浮点缩放指令的执行,所述数据处理器被配置为针对所述第一源寄存器中的每个通道:
将所述第二源寄存器的对应通道中的所述缩放值添加到所述第一源寄存器的所述通道中的所述浮点值的指数字段中,以创建缩放的浮点值;以及
将所述缩放的浮点值存储在所述目的地寄存器的对应通道中。
14.根据权利要求13所述的数据处理器,其中所述源数据包括512位矢量。
15.根据权利要求13所述的数据处理器,其中每个浮点值包括单精度浮点值。
16.根据权利要求13所述的数据处理器,其中每个浮点值包括双精度浮点值。
17.根据权利要求13所述的数据处理器,其中所述缩放值包括16位值。
18.根据权利要求13所述的数据处理器,其中所述缩放值是有符号值。
19.根据权利要求13所述的数据处理器,其中所述缩放值是无符号值。
20.根据权利要求13所述的数据处理器,其中所述缩放值中的至少一个缩放值不同于所述缩放值中的其他缩放值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/422,754 | 2019-05-24 | ||
US16/422,754 US20200371784A1 (en) | 2019-05-24 | 2019-05-24 | Vector floating-point scale |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111984315A true CN111984315A (zh) | 2020-11-24 |
Family
ID=73442009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010410209.0A Pending CN111984315A (zh) | 2019-05-24 | 2020-05-15 | 矢量浮点缩放 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20200371784A1 (zh) |
CN (1) | CN111984315A (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5058048A (en) * | 1990-04-02 | 1991-10-15 | Advanced Micro Devices, Inc. | Normalizing pipelined floating point processing unit |
US5649174A (en) * | 1994-12-09 | 1997-07-15 | Vlsi Technology Inc. | Microprocessor with instruction-cycle versus clock-frequency mode selection |
US5668984A (en) * | 1995-02-27 | 1997-09-16 | International Business Machines Corporation | Variable stage load path and method of operation |
US5615113A (en) * | 1995-06-16 | 1997-03-25 | Cyrix Corporation | Early signaling of no-overflow for nonrestoring twos complement division |
US5619439A (en) * | 1995-07-05 | 1997-04-08 | Sun Microsystems, Inc. | Shared hardware for multiply, divide, and square root exponent calculation |
US7668896B2 (en) * | 2004-11-30 | 2010-02-23 | Arm Limited | Data processing apparatus and method for performing floating point multiplication |
CN108647044B (zh) * | 2011-12-28 | 2022-09-13 | 英特尔公司 | 浮点缩放处理器、方法、系统和指令 |
US20160019027A1 (en) * | 2014-07-15 | 2016-01-21 | Qualcomm Incorporated | Vector scaling instructions for use in an arithmetic logic unit |
US20160125263A1 (en) * | 2014-11-03 | 2016-05-05 | Texas Instruments Incorporated | Method to compute sliding window block sum using instruction based selective horizontal addition in vector processor |
-
2019
- 2019-05-24 US US16/422,754 patent/US20200371784A1/en active Pending
-
2020
- 2020-05-15 CN CN202010410209.0A patent/CN111984315A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20200371784A1 (en) | 2020-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7739480B2 (en) | Method and apparatus for obtaining a scalar value directly from a vector register | |
US6701424B1 (en) | Method and apparatus for efficient loading and storing of vectors | |
US11803379B2 (en) | Vector floating-point classification | |
US6671796B1 (en) | Converting an arbitrary fixed point value to a floating point value | |
US11256504B2 (en) | Apparatus and method for complex by complex conjugate multiplication | |
KR20210086447A (ko) | 행렬 연산 가속기의 명령어들을 위한 장치들, 방법들, 및 시스템들 | |
KR101048234B1 (ko) | 마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템 | |
US10768896B2 (en) | Apparatus and method for processing fractional reciprocal operations | |
CN108139911B (zh) | 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 | |
US12032961B2 (en) | Vector maximum and minimum with indexing | |
CN113924550A (zh) | 直方图运算 | |
US20210279038A1 (en) | Using fuzzy-jbit location of floating-point multiply-accumulate results | |
US10664237B2 (en) | Apparatus and method for processing reciprocal square root operations | |
US11934830B2 (en) | Method and apparatus for data-ready memory operations | |
US5764939A (en) | RISC processor having coprocessor for executing circular mask instruction | |
CN111984314A (zh) | 使用位反转顺序的矢量存储 | |
CN111984315A (zh) | 矢量浮点缩放 | |
CN111984313A (zh) | 矢量位转置 | |
US20220214878A1 (en) | Vector reverse | |
CN113050994A (zh) | 用于512位操作的系统、装置和方法 |
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 |