CN101488083A - 用于转换向量数据的方法、装置和指令 - Google Patents
用于转换向量数据的方法、装置和指令 Download PDFInfo
- Publication number
- CN101488083A CN101488083A CNA2008101903202A CN200810190320A CN101488083A CN 101488083 A CN101488083 A CN 101488083A CN A2008101903202 A CNA2008101903202 A CN A2008101903202A CN 200810190320 A CN200810190320 A CN 200810190320A CN 101488083 A CN101488083 A CN 101488083A
- Authority
- CN
- China
- Prior art keywords
- vector
- instruction
- data
- designator
- conversion
- 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.)
- Granted
Links
- 239000013598 vector Substances 0.000 title claims abstract description 162
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000006243 chemical reaction Methods 0.000 claims abstract description 83
- 230000015654 memory Effects 0.000 claims abstract description 59
- 230000004044 response Effects 0.000 claims description 9
- 238000011068 loading method Methods 0.000 abstract description 7
- 238000012545 processing Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000007667 floating Methods 0.000 description 12
- 230000008520 organization Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241001417495 Serranidae Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012360 testing method 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/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
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
本发明涉及用于转换向量数据的方法、装置和指令,提供了一种计算机处理器,包括用于解码机器指令的解码器和用于执行这些指令的执行单元。该解码器和执行单元能够解码并执行包括一个或多个格式转换指示符的向量指令。例如,处理器能够执行向量-加载-转换-和写入(VLoadConWr)指令,它用于将来自存储器的数据加载到向量寄存器。VLoadConWr指令可包括格式转换指示符,以指示来自存储器的数据应在该数据被加载到向量寄存器之前从第一格式转换成第二格式。描述并要求保护其他实施例。
Description
技术领域
本公开一般涉及数据处理领域,尤其涉及用于转换向量中使用的数据的方法和有关装置。
背景
数据处理系统可包括硬件资源,诸如一个或多个处理器、随机存取存储器(RAM)、只读存储器(ROM)等。处理器可包括多个处理核。处理系统还可包括软件资源,诸如基本输入/输出系统(BIOS)、虚拟机监控器以及一个或多个操作系统(OS)。
处理器可为处理向量提供硬件资源。向量是一种持有数个连续元素或数据项的数据结构。大小为M的向量寄存器可包含N个大小为O的向量元素,其中N=M/O。例如,64字节向量寄存器可被分成(a)64个向量元素,且每个元素持有占据1字节的数据项;(b)32个各自持有占据2字节(或一个“字”)的数据项的向量元素;(c)16个各自持有占据4字节(或一个“双字”)的数据项的向量元素;(d)8个各自持有占据8字节(或一个“四字”)的数据项的向量元素。
为了提供数据级并行性,处理器可支持单指令、多数据(SIMD)操作。SIMD操作包括将相同操作应用于多个数据项。例如,响应于单个SIMD加指令,处理器可将特定值与向量中的每个元素相加。
附图简要说明
本发明的特征和优点将从所附权利要求、以下一个或多个示例实施例的详细描述以及相应附图变得显而易见,附图中:
图1是描述其中可实现本发明的示例实施例的某些方面的适当数据处理环境的框图;
图2是根据本发明的示例实施例的示例指令和相应的执行流水线的框图;
图3是在图1的处理系统中用于处理向量的过程的示例实施例的流程图;以及
图4-6是描述根据本发明的示例实施例的示例向量-加载-转换-和写入指令及相关联的存储结构的框图;
图7是描述根据本发明的示例实施例的示例向量-加载-转换-计算-和写入指令及相关联的存储结构的框图;以及
图8是描述根据本发明的示例实施例的示例向量-转换-和存储指令及相关联的存储结构的框图。
具体实施方式
本公开描述了某些新型机器指令,这些指令的每一个都将数据格式转换操作与一个或多个向量操作相结合。例如,一种类型的指令将转换操作与向量寄存器加载操作合并或组合。这种类型的指令一般被称为向量-加载-转换-和写入(或“VLoadConWr”)指令。另一种类型(或者它可被视为VLoadConWr类型的变形)将转换操作、向量算术操作和向量寄存器加载操作组合。这种类型的指令一般被称为向量-加载-转换-计算-和写入(或“VLoadConComWr”)指令。另一种类型将转换操作和用于将数据从向量寄存器存储到存储器的操作组合。这种类型的指令一般被称为向量-转换-和存储(或“VConStore”)指令。可一般地使用术语“合并的向量转换指令”来指代VLoadConWr、VLoadConComWr和VConStore指令。本公开还描述了有关的装置和方法。
图1是描述其中可实现本发明的示例实施例的某些方面的适当数据处理环境12的框图。数据处理环境12包括具有各种硬件和软件组件的处理系统20。硬件组件包括处理器22和处理器24。处理器24可用作中央处理单元(CPU),而处理器22可充当辅助处理器或协处理器。每个处理器可包括一个或多个处理单元或核心。处理单元可被实现为超线程(HT)技术或用于同时或基本同时执行多个线程或指令的任何其它适当技术。
处理系统还可包括其它硬件组件,且硬件组件可经由一个或多个系统总线14或其它通信路径或介质被通信地耦合。本公开使用术语“总线”来指示共享(例如,多站)通信路径、以及点到点路径、互连环等。在图1的实施例中,处理系统20包括一个或多个易失性或非易失性数据存储设备,诸如RAM26、ROM 42、诸如硬盘驱动器之类的大容量存储设备36和/或其它设备或介质,诸如软盘、光存储、磁带、闪存、存储棒、数字通用盘(DVD)等。为了本公开的目的,术语“只读存储器”和“ROM”可用于一般地指示非易失性存储设备,诸如可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速ROM、闪存等。处理器24使用RAM 26作为主存储器,且处理器24经由嵌入式存储器控制器与RAM 26通信。处理器24还可通信地耦合到附加组件,诸如集成驱动电子设备(IDE)控制器、小型计算机系统接口(SCSI)控制器、通用串行总线(USB)控制器、输入/输出(I/O)端口28、输入设备、诸如显示器之类的输出设备等。处理系统20中的芯片组或I/O集线器(IOH)34可用于互连各种硬件组件。IOH 34可包括一个或多个桥和/或集线器以及其它逻辑和存储组件。
处理系统20可至少部分地通过来自诸如键盘、鼠标等输入设备的输入和或从另一个机器、生物测定反馈或其它输入源或信号接收的指示来控制。处理系统20可利用至一个或多个远程数据处理系统90的一个或多个连接,诸如通过网络接口控制器(NIC)40、调制解调器、或其它通信端口或耦合。处理系统可经由物理和/或逻辑网络92——诸如局域网(LAN)、广域网(WAN)、内联网、因特网等——互连。涉及网络92的通信可使用各种有线和/或无线短程或长程载波和协议,包括射频(RF)、卫星、微波、电气与电子工程师协会(IEEE)802.11、802.16、802.20、蓝牙、光、红外线、电缆、激光等。802.11协议还可被称为无线保真(WiFi)协议。802.16协议还可被称为WiMAX或无线城域网协议,且关于这些协议的信息目前可在grouper.ieee.org/groups/802/16/published.html获得。
在图1的实施例中,处理器22驻留在扩展模块300(例如,适配器卡)上,该扩展模块300经由外围组件互连(PCI)快速(PCIe)接口与处理单元24通信。处理器22被实现为包括多个核心(例如,处理核心31、处理核心33、...处理核心33n)以及诸如存储器控制器310、PCIe控制器330和视频输出端口340(可包括例如数字-模拟转换器(DAC))之类的其它组件。扩展模块300还包括用于存储将由处理器22使用的指令和数据的RAM 320。处理器22可将RAM 320用作主存储器。处理系统20中的高速缓冲存储器(例如,核心31中的高速缓冲存储器160)也可至少暂时地用作主存储器。处理器22中的核心可经由存储器控制器310访问RAM 320,且该核心可经由PCIe控制器330与处理器24通信。核心可经由输出端口340将输出发送到显示设备。扩展模块300上的各种子系统(例如,核心、RAM等)可通过任何适当的一个或多个通信信道互连。
在图1的实施例中,处理核心31包括一个或多个寄存器堆150。寄存器堆150包括各种向量寄存器(例如,向量寄存器V1、向量寄存器V2、...、向量寄存器Vn)。寄存器堆150还可包括各种其它寄存器——诸如用于保持对在一个或多个执行流或线程中执行的当前或下一处理器指令的跟踪的一个或多个指令指针(IP)寄存器211——以及其它类型的寄存器。处理核心31还包括解码器165和执行单元130。解码器160识别并解码包括合并的向量转换指令的指令集中的指令,以便由执行单元130执行。
处理系统20中的某些或全部核心可相互并行地执行指令。此外,每一个体核心可执行SIMD指令。例如,每个核心可用作宽度为16的向量机,并行处理高达16个元素。具体地,这些类型的向量操作可由称为向量处理单元(VPU)的控制逻辑处理。对于带有16个以上元素的向量,软件可将向量分成各自含有16个元素(或其倍数)的子集,且两个或更多个子集在两个或更多个核心上基本同时执行。同样,核心中的一个或多个可以是超标量的(例如,能够执行并行/SIMD操作和标量操作)。
在图1的实施例中,VPU 145的至少一部分驻留在执行单元130内。如以下更详细解释的,执行单元145还包括转换单元140,用于将数据在适用于VPU 145的内部格式和由软件指定的外部格式之间转换。
其它的处理核心还可包括类似解码器、执行单元、高速缓冲存储器、寄存器堆的组件。处理器22和处理器24可包括对于理解本发明而言并非必需的附加电路。
在图1的实施例中,解码器165用于解码由处理器核心31接收的指令,而执行单元130用于执行由处理核心31接收的指令。例如,解码器165可将由处理器22接收的机器指令解码成控制信号和/或微码进入点。这些控制信号和/或微码进入点可从解码器165转发到执行单元130。例如,响应于接收VLoadConWr指令,解码器165可使执行单元130执行所要求的数据转换和寄存器加载操作。响应于接收VLoadConComWr指令,解码器165可使执行单元130执行所要求的数据转换、向量算术和寄存器加载操作。响应于接收VConStore指令,解码器165可使执行单元130执行所要求的转换和存储操作。
在本文中可参照诸如指令、函数、过程、数据结构、应用程序、配置设定等数据描述本发明。当机器访问数据时,机器可通过执行任务、定义抽象数据类型、建立低级硬件上下文和/或执行其它操作而作出响应,如以下详细描述的。可将数据存储在易失性和/或非易失性数据存储中。为了本公开的目的,术语“程序”覆盖广泛的软件组件和结构,包括应用、驱动器、进程、例程、方法、模块和子程序。术语“程序”可用于指示完整的编译单元(即可独立编译的指令集)、多个编译单元的集合或编译单元的一部分。术语“程序”还可用于指示从诸如翻译、解释、编译、联接等处理得到的一个或多个指令的组。因此,术语“程序”可用于指示在由处理系统执行时完成所要求的一个或多个操作的任何指令集合。
在图1的实施例中,大容量存储设备36包含OS 102和至少一个程序100。处理系统20可将OS 102和程序100复制到RAM 26,然后在处理器24上执行OS 102和程序100。OS 102和/或程序100可包括一个或多个合并的向量转换指令(例如,VLoadConWr、VLoadConComWr和/或VConStore指令)。
或者,当程序100执行时,它可使OS 102生成一个或多个合并的向量转换指令,且处理器24可将合并的向量转换指令发送到处理器22。处理器22可将从处理器24接收的指令存储在RAM 320中作为程序106,且RAM 320还可包括在核心中的一个或多个上运行并控制程序106的执行的微OS 104。
例如,程序100可以是视频游戏,且OS 102可向程序100提供图形应用程序接口(API),以用于请求关于图形的各种功能,诸如光线跟踪、光栅化等。当程序100调用API时,OS 102中的设备驱动器可通过生成将由处理器22执行的合并的向量转换指令和其它指令来作出响应。处理器24可将这些指令发送给处理器22,以作为程序106存储,如以上指示的。例如,微OS 104然后可调度这些指令以在处理核心31上运行。例如,在不同的实施例中,程序可适用不同种类的函数或应用,诸如文本处理、物理模拟等。
在一个示例应用中,处理系统20使用处理器22来处理向量操作(例如图形渲染工作负载),并且这些操作涉及带有与被处理器22用于大多数内部操作的格式不同的格式的数据结构。例如,处理核心31可提供512位的向量,且VPU 145可对如或者DWORD向量或者QWORD向量那样的向量进行操作。DWORD向量是16元素向量,每个元素具有32位。QWORD向量是8元素向量,每个元素具有64位。因此,VPU 145可将以下格式用于向量操作:
·float32:32位浮点(或“单精度浮点”),
·Float64:64位浮点(或“双精度浮点”),
·sint32:32位带符号整数,以及
·uint32:32位无符号整数。
具体地,在图1的实施例中,VPU 145将以下的内部表示之一用于向量的每一个元素。
·float32用于DWORD向量,
·sint32用于DWORD向量,
·uint32用于DWORD向量,或
·float64用于QWORD向量。
然而,软件可决定使用与这些内部格式不同的格式来在存储器中编码向量数据(例如,图形渲染工作负载)。例如,图形软件可使用带有如下格式的数据结构:
·float16:16位浮点数;
·float11:11位浮点数;
·float10:10位浮点数;
·uint16:映射到[0,65535]范围中的整数的16位值;
·uint8:映射到[0,255]范围中的整数的8位值;
·sint16:映射到[-32768,32767]范围中的整数的16位值;
·sint8:映射到[-128,127]范围中的整数的8位值;
·snorm16:映射到[-1,1]范围中的浮点数的16位值;
·snorm8:映射到[-1,1]范围中的浮点数的8位值;
·srgb8:通过伽玛(gamma)校正函数(一般实现为查找表)映射到[-1,1]范围中的浮点数的8位值;
·unorm16:映射到[0,1]范围中的浮点数的16位值;
·unorm10:映射到[0,1]范围中的浮点数的10位值;
·unorm8:映射到[0,1]范围中的浮点数的8位值;
·unorm2:映射到[0,1]范围中的浮点数的2位值;
·float11A11B10C:具有两个FLOAT11值和一个FLOAT10值的32位分组的压缩数据类型,开始于位于高阶位的最后一个;以及
·unorm10A10B10C2D:具有三个UNORM10值和一个UNORM2值的32位分组的压缩数据类型,开始于位于高阶位的最后一个。
此外,关于float11A11B10C,持有不同值的四个不同的比特组可被称为字段A、B、C和D。类似地,unorm10A10B10C2D中的三个不同的位组可被称为字段A、B和C。
常规的系统可使用float32元素的阵列来处理float16数据元素的很大的二维阵列(例如,表示屏幕的一个彩色通道)。然而,float32阵列可占据float16阵列的两倍空间。因此,如果float32阵列保持高速缓存驻留,则相当大的比例的高速缓存可能不可用于其它用途。
相反,在图1的实施例中,程序106使用合并的向量转换指令。这些指令使得高速缓存160中的数据能够保持为较小的格式(例如,float16),而以较大格式由VPU 145处理(例如,float32)。如以上所指示的,合并的向量转换指令包括VLoadConWr指令、VLoadConComWr指令和VConStore指令。这些指令使用向量作为源或产生向量作为结果或两者都有。VPU 145可并行计算向量的所有元素。
因为VPU 145仅可利用上述的内部格式对向量进行操作,所以可能需要在处理核心31能够将向量加载到VPU 145之前将软件所使用的外部格式转换成内部表示之一。例如,如果程序106使用带有float16元素的向量,则VLoadConWr指令可用于从存储器读取float16向量数据,将该数据转换成VPU145支持的内部格式之一(例如,float32),并将转换的数据加载到向量寄存器。类似地,可将VConStore指令用于将向量寄存器数据从内部表示转换成外部表示,然而将该数据以外部格式存储到存储器中。
类似于VLoadConWr指令,VLoadConComWr指令提供从外部格式转换成内部格式,并将内部格式加载到向量寄存器。然而,VLoadConComWr指令允许向量算术操作与这些操作组合。
图2是根据本发明的示例实施例的示例VLoadConComWr指令170和相应的执行流水线112的框图。在图2的实施例中,VLoadConComWr指令170包括以下部分:
·操作码(opcode):vLoadConAddWrF32,
·目的地自变量:V1,
·寄存器源自变量:V2,
·存储器源自变量:0b0000(其中前缀0b指示二进制记数法),以及
·格式自变量:float16。
同样,流水线112包括以下五个阶段:
·阶段120:从存储器取出指令,
·阶段122:从存储器读取数据,
·阶段124:转换数据,
·阶段126:执行算术,以及
·阶段128:将结果加载到向量寄存器。
在一个实施例中,处理核心31可并行执行5条流水线,且每条流水线具有5个阶段。处理可在处理核心31中的每个时钟周期或滴答从各阶段进行到下一个。因此,处理核心31可有效地将电路用于每个阶段,例如通过一旦当前指令从取出阶段120移至读取阶段122就取出下一个指令。在其它实施例中,处理核心可使用更少的流水线或更多的流水线,且流水线可使用更少的阶段或更多的阶段。
图3是在图1的处理系统中用于处理向量的过程的示例实施例的流程图。所示的过程在一组指令——本文中称为程序106——已被存储在RAM320中之后开始,如上文所指出的。在框210,处理核心31从RAM 320取出程序106中的指令之一。在框220,解码器165确定哪种指令已被取出。具体地,解码器165确定指令是否是合并的向量转换指令。如果指令不是合并的向量转换指令,则处理核心31可使用或多或少的常规技术来执行指令,如框222所指示的。然而,如果指令是合并的向量转换指令,则取决于合并的向量转换指令的类型,处理可沿着三种不同的路径之一进行下去,如框230所指示的。
如果指令是VLoadConWr指令,则过程可沿“加载”路径到达框232,其示出处理核心31从存储器读取外部格式数据。如框234所指示的,转换单元140然后可至少部分地基于指令中的转换指示符将数据转换成内部格式。执行单元130然后可将内部格式数据保存到指定向量寄存器,如框236所示。
例如,图4是描述根据本发明的示例实施例的示例VLoadConWr指令50及相关联的存储结构的框图。如图所示,VLoadConWr指令50包括以下部分:
·opcode 52:VLoadConWrF32,
·目的地自变量54:V1,
·存储器源自变量56:0b0000,以及
·格式自变量58:float16。
如上文参照图3的框232、234和236所解释的,当处理核心31执行VLoadConWr指令50时,执行单元130从存储器读取外部格式的数据,将该数据转换成内部格式,并将内部格式数据写入向量寄存器。在图4的实施例中,执行单元130至少部分地基于opcode 52确定用于以下“加载”路径的指令类型调用。存储器源自变量56标识将从其读取数据的存储位置和存储区域。例如,存储器源自变量56可指定将从其读取向量元素的存储位置或存储区域114的起点。格式自变量58标识存储器中的数据的外部格式。例如,float16的格式自变量可指示存储器中的每个向量元素占据16比特,且存储器源自变量56标识第一元素的位置。目的地自变量54标识用于接收转换的数据的向量寄存器。
因此,格式自变量58构成影响如何执行VLoadConWr指令50的格式指示符。此外,部分opcode可用作另一个格式指示符。例如,“F32”后缀还可影响如何执行VLoadConWr指令50。在图4的实施例中,float16和“F32”后缀的格式自变量指示利用float16格式从存储器读取数据并转换成float32格式,以便在向量寄存器中内部使用。
部分opcode还可用作广播指示符,用于从多种不同类型的加载操作中选择。例如,处理核心31可指示一对一加载,如图4所示,其中向量寄存器中的每一个元素从存储器中的向量获得相应的元素。处理核心31还可指示一对多广播加载以及四对多广播加载,如以下参照图5和6详细解释的。当opcode包括“Broad1”时,执行单元130可执行类似图5所示的那些的操作,而当opcode包括“Broad4”时,执行单元130可执行类似图6所示的那些的操作。
图5是描述根据本发明的示例实施例的一对多VLoadConWr指令60及相关联的存储结构的框图。如图所示,在这种情况下,opcode62是“vConBroad1F32”,目的地自变量64是V1,存储器源自变量66是0b0000,而格式参数68是srgb8。因此,当执行VLoadConWr指令60时,处理核心31基于源自变量66和格式参数68,从存储区域114的第一个8位位置读取单个数据项。此外,转换单元140基于opcode 62中的格式属性“F32”将该数据项转换成float32。然后VPU 145基于目的地自变量64将经转换的数据的副本保存到V1的16个向量元件中的每一个。
图6是描述根据本发明的示例实施例的四对多VLoadConWr指令70及相关联的存储结构的框图。在图6中,opcode 72是“vConBroad4F32”,目的地自变量74是V1,存储器源自变量76是0b0000,而格式参数78是sint16。当执行VLoadConWr指令70时,处理核心31基于源自变量76、格式参数78和opcode 72中的选择指示符“Broad4”,从存储区域114中的前四个16位位置读取四个数据项。转换单元140然后基于opcode 72中的格式指示符“F32”将这些项中的每一个转换成float32。执行单元130然后基于目的地自变量74和opcode 72中的选择指示符“Broad4”,将经转换的数据保存在V1中作为广播。即,V1的16个元素被视为四组四个连续的元素,且这些组中的每一个获取四个经转换的数据项中一个副本。
因此,处理器22指示各种不同的VLoadConWr指令。然而,VLoadConWr指令中的每一个都是单个机器指令,该指令使处理核心31从存储器读取数据、将该数据转换成另一个格式并将经转换的数据加载到向量寄存器。在一个实施例中,VLoadConWr支持以下数据格式转换:
·float16至float32,
·srgb8至float32,
·uint8至float32,
·sint8至float32,
·unorm8至float32,
·snorm8至float32,
·uint16至float32,
·sint16至float32,
·unorm16至float32,
·snorm16至float32,
·uint8至uint32,
·sint8至sint32,
·uint16至uint32,
·sint16至sint32,
·unorm10A10B10C2D字段A(unorm10A)至float32,
·unorm10A10B10C2D字段B(unorm10B)至float32,
·unorm10A10B10C2D字段C(unorm10C)至float32,
·unorm10A10B10C2D字段D(unorm2D)至float32,
·float11A11B10C字段A(float11A)至float32,
·float11A11B10C字段B(float11B)至float32,以及
·float11A11B10C字段C(float10C)至float32。
在可选实施例中可支持其它数据格式转换。
再次参照图3,当执行VLoadConComWr指令和VConStore指令时处理核心31可使用不同的路径。例如,当处理核心31解码VLoadConComWr指令时,图3的过程可沿“数学”路径通过框230到框240和242,与框232和234相类似,框240和242描述了执行单元130从存储器读取外部格式的数据并将该数据转换成内部格式。然而,VLoadConComWr指令的路径还包括待执行的向量算术操作,如框244所示。向量算术操作可由处理核心31中的向量算术逻辑单元(ALU)执行。因此,向量算术操作还可被称为向量ALU操作。这种操作还可被称为向量数学。然后可将向量数学的结果加载到目的地向量寄存器,如框246所描述的。
例如,当执行VLoadConComWr指令时,处理核心31可从存储器读取外部格式的向量。处理核心31还可将数据转换成内部格式。向量ALU操作可使用经转换的数据和可能的另一向量寄存器源来产生向量寄存器结果。
图7是描述根据本发明的示例实施例的示例VLoadConComWr指令170及相关联的存储结构的框图。在图7中,opcode 172是“vConAddF32”,目的地自变量174是V1,向量操作数自变量176是V2,存储器源自变量178是0b0100,而格式参数180是float16。当执行VLoadConComWr指令170时,执行单元130可基于存储器源自变量178和格式参数180,从在位置0b0100开始的存储区域115读取float16格式的十六个向量元素。转换单元140然后可基于格式参数180和opcode中的格式指示符“F32”将这些元素中的每一个转换成float32。执行单元130然后可基于opcode中的算术指示符“Add”和向量操作数自变量176,利用来自存储器的经转换的数据和向量寄存器V2中的数据,使用向量ALU执行向量加法。执行单元130然后可基于目的地参数174将ALU结果写入向量寄存器V1。
此外,再次参照图3,处理核心31还支持用于执行VConStore指令的“存储”路径。例如,如框250所示,当执行VConStore指令时,处理核心31可将向量寄存器中的数据从内部格式转换成外部格式。如框252所示,处理核心31然后可将经转换的数据存储在存储器中。
图8是描述根据本发明的示例实施例的示例VConStore指令80及相关联的存储结构的框图。在图8中,opcode82是“vCon4StoreF16”,目的地自变量84是0b1000,源自变量86是V1,而格式参数88是float32。opcode中的“4”可用作选择指示符,用于选择将存储在存储器中的源向量的子集。例如,opcode“vCon4StoreF16”可指示源寄存器中的前四个元素将被转换并存储在存储器中。opcode“vConlStoreF16”可指示仅源寄存器中的第一个元素将被转换并存储在存储器中。opcode“vConStoreF16”(“Con”和“Store”之间没有数字)可指示源寄存器中的所有元素将被转换并存储在存储器中。
当执行VConStore指令80时,转换单元140可基于格式参数88、opcode中的格式指示符“F16”和opcode中的选择指示符“4”,将所选元素从float 32转换成float16。执行单元130然后可基于目的地参数84,将经转换的数据存储在以位置0b1000开始的存储区域116中。
在一个实施例中,处理核心31支持VConStore指令,用于执行以下类型的格式转换:
·float32至float16,
·float32至float16(舍入为0),
·float32至uint8,
·float32至sint8,
·float32至unorm8,
·float32至snorm8,
·float32至uint16,
·float32至sint16,
·float32至unorm16,
·float32至snorm16,
·uint32至uint8,
·sint32至sint8,
·uint32至uint16,以及
·sint32至sint16。
可选实施例可支持其它类型的转换。
正如已经描述的,当执行VLoadConWr指令时,处理核心可(a)从存储器加载外部格式的数据,(b)将数据从外部格式转换成内部格式,以及(c)以可选择的广播(例如,一对六、四对六等)将数据加载到向量寄存器。因此,VLoadConWr可用于将转换和加载操作以及广播操作组合在单个指令中。
当执行VLoadConComWr指令时,处理核心可(a)从存储器加载外部格式的数据,(b)将数据从外部格式转换成内部格式,(c)执行向量ALU操作,以及(c)将结果加载到向量寄存器。例如,流过流水线的单个指令可进行加载操作,以从存储器读取到临时向量寄存器,从float16转换至float32格式,将经转换的值与第二向量寄存器相乘,并将结果保存在第三向量寄存器中。在另一个实施例中,VLoadConComWr指令还可在进行向量算术之前进行广播。然而,这一实施例可能需要较长的流水线。
当执行VConStore指令时,处理核心可(a)任选地选择用于存储的向量的子集,(b)从内部格式转换成外部格式,以及(c)将经转换的数据存储到存储器。
本文描述的操作可使得程序能够使用32位或64位整数或浮点格式进行内部向量操作,同时数据仍被压缩成较小的数据类型,用于与存储器相互作用,且除诸如加载和存储之类的操作外程序不包括用于处理转换的额外指令。这些操作可由单个指令触发,该单个指令提供与诸如存储、加载和/或向量算术组合的程序设计员可选择的转换。
按照本文所描述和示出的原理和示例实施例,将意识到可在结构和细节上对所示实施例进行修改而不背离这些原理。例如,可选实施例可涉及以更多或更少处理器为特征的处理系统,且每一个处理器可包括任何适当数量的核心。同样,可选实施例可使用除PCIe以外的协议或总线。
在某些实施例中,处理系统中的一个或多个设备可利用诸如可编程或不可编程逻辑设备或阵列、专用集成电路(ASIC)、嵌入式处理器、智能卡等组件实现为嵌入式控制器。例如,在可选实施例中,主处理器可驻留在带有用作图形协处理器或图形处理单元(GPU)的辅助处理器或协处理器的主板上。主处理器和辅助处理器可利用任何适当类型的总线或协议通信。主处理器、GPU或两者能够执行诸如本文所述的那些指令。或者,处理器24和扩展模块300的组件中的某些可被集成到单个CPU封装或集成电路。较佳地,至少一个处理核心能够执行至少一个合并的向量转换指令。
同样,以上的描述解释指令可包括各种不同的指示符,用于标识待处理的数据和待执行的操作的各种特性。例如,opcode(或其部分)和指令参数或自变量被描述为格式指示符、选择指示符、源自变量等。在其它实施例中,可按本文所述特定方法之外的方式实现指示符。
同样,上述的讨论集中在特定实施例,但预期了其它配置。具体地,即使在本文中使用了诸如“在一个实施例中”、“在另一个实施例中”等表达,这些短语也表示一般参照可能的实施例,且无意将本发明限于特定实施例配置。如本文所使用的,这些术语可参照能够组合成其它实施例的相同或不同的实施例。
类似地,虽然关于以特定顺序执行的特定操作描述了示例过程,但可将众多的修改应用于这些过程,以导出本发明的众多可选实施例。例如,可选实施例可包括:使用比全部公开的操作少的过程、利用附加操作的过程、利用以不同顺序的相同操作的过程、以及其中本文公开的各个操作被组合、细分或以其它方式改变的过程。
本发明的可选实施例还包括用于执行本发明的操作的机器可访问介质编码指令。这种实施例还可被称为程序产品。这种机器可访问介质可包括而不限于诸如软盘、硬盘、CD-ROM、ROM和RAM的存储介质;以及其它由机器或设备制造或形成的制品的其它可检测配置。还可将指令用于分布式环境中,且可本地和/或远程地存储该指令用于由单处理器或多处理器机器访问。
应该理解,本文描述的硬件和软件组件表示适度自备的功能元件,以使得每一个都可基本独立于其它而被设计、配置或更新。在不同的实施例中,用于提供本文所述和示出的功能的控制逻辑可被实现为硬件、软件或硬件和软件的组合。例如,处理器中的执行逻辑可包括用于执行取出、解码和执行机器指令所需的操作的电路和微代码。
正如本文所使用的,术语“处理系统”和“数据处理系统”旨在广泛地包括单个机器或多个共同运行的通信耦合的机器或设备的系统。处理系统的例子包括但不限于分布式计算系统、超级计算机、高性能计算系统、计算群、大型计算机、迷你计算机、客户机-服务器系统、个人计算机、工作站、服务器、便携计算机、膝上型计算机、平板、电话、个人数字助理(PDA)、手持设备、诸如音频和/或视频设备的娱乐设备、用于处理或发射信息的其它平台或设备。
鉴于可从本文描述的示例实施例容易地导出的广泛的有用置换,该详细描述旨在是仅为说明性的,而不应被理解为限制本发明的范围。因此,本发明要求的是落在所附权利要求的范围和精神内的所有实现以及这些实现的所有等价技术方案。
Claims (30)
1.一种用于执行组合了数据格式转换与至少一个向量操作的机器指令的处理器,所述处理器包括:
控制逻辑,能够执行包括具有格式转换指示符和向量寄存器指示符的向量-加载-转换-和写入指令的处理器指令;
其中,响应于所述向量-加载-转换-和写入指令,所述控制逻辑能够:
至少部分地基于所述格式转换指示符,将数据从第一格式转换成第二格式;以及
在将所述数据转换成所述第二格式后,将所述第二格式的所述数据保存到由所述向量寄存器指示符标识的向量寄存器的多个元素。
2.如权利要求1所述的处理器,其特征在于,所述控制逻辑还能够执行具有格式转换指示符和向量寄存器指示符的向量-加载-转换-计算-和写入指令,其中:
响应于所述向量-加载-转换-计算-和写入指令,所述控制逻辑能够:
至少部分地基于所述格式转换指示符,将数据从所述第一格式转换成所述第二格式;
至少部分地基于所述第二格式的数据,执行向量算术操作;以及
将所述向量算术操作的结果保存到由所述向量寄存器指示符标识的所述向量寄存器的多个元素。
3.如权利要求2所述的处理器,其特征在于,所述控制逻辑还能够执行具有格式转换指示符和存储位置指示符的向量-转换-和存储指令,其中:
响应于所述向量-转换-和存储指令,所述控制逻辑能够:
将来自向量寄存器元素的数据从所述第一格式转换成所述第二格式;以及
将所述第二格式的所述数据保存到与所述存储位置指示符相对应的存储位置。
4.如权利要求1所述的处理器,其特征在于:
当所述向量-加载-转换-和写入指令包括存储位置指示符时,所述处理器能够在将数据转换成所述第二格式并将所述第二格式的所述数据保存到所述向量寄存器之前,从与所述存储位置指示符相对应的存储位置读取所述第一格式的所述数据。
5.如权利要求1所述的处理器,其特征在于,所述将数据从第一格式转换成第二格式的操作包括:
将占据小于32位或大于32位的数据项转换成占据32位的格式。
6.一种用于执行组合了数据格式转换与至少一个向量操作的机器指令的处理器,所述处理器包括:
控制逻辑,能够执行包括具有格式转换指示符和向量寄存器指示符的向量-加载-转换-计算-和写入指令的处理器指令;
其中响应于所述向量-加载-转换-计算-和写入指令,所述控制逻辑能够:
至少部分地基于所述格式转换指示符,将数据从第一格式转换成第二格式;
至少部分地基于所述第二格式的数据,执行向量算术操作;以及
将所述向量算术操作的结果保存到由所述向量寄存器指示符标识的向量寄存器的多个元素。
7.如权利要求6所述的处理器,其特征在于:
当所述向量-加载-转换-计算-和写入指令包括存储位置指示符时,所述处理器能够在将数据转换成所述第二格式并执行所述向量算术操作之前,从与所述存储位置指示符相对应的存储位置读取所述第一格式的所述数据。
8.一种用于执行组合了数据格式转换与至少一个向量操作的机器指令的处理器,所述处理器包括:
控制逻辑,能够执行包括具有格式转换指示符和存储位置指示符的向量-转换-和存储指令的处理器指令;
其中,响应于所述向量-转换-和存储指令,所述控制逻辑能够:
将来自向量寄存器的至少一个元素的数据从第一格式转换成第二格式;以及
在将所述数据转换成所述第二格式之后,将所述第二格式的数据保存到与所述存储位置指示符相对应的至少一个存储位置。
9.如权利要求8所述的处理器,其特征在于:
当所述向量-转换-和存储指令具有用于标识包含所述第一格式的数据的所述向量寄存器的向量寄存器指示符时,所述控制逻辑能够执行所述向量-转换-和存储指令。
10.一种具有用于组合数据格式转换与写入操作的机器指令存储于其中的机器可访问介质,其中:
所述机器指令包括格式转换指示符和向量寄存器指示符,以及
所述机器指令在由处理器执行时导致所述处理器:
至少部分地基于所述格式转换指示符,将数据从第一格式转换成第二格式;以及
在将所述数据转换成所述第二格式后,将所述第二格式的所述数据保存到由所述向量寄存器指示符标识的向量寄存器的多个元素。
11.如权利要求10所述的机器可访问介质,其特征在于:
所述向量寄存器指示符包括第一指令自变量;以及
所述格式转换指示符包括来自包含以下的组的至少一个指示符:
第二指令自变量;以及
至少部分指令操作码。
12.如权利要求10所述的机器可访问介质,其特征在于,所述机器指令还包括用于标识与所述第一格式的数据相关联的存储位置的源自变量。
13.一种具有用于组合数据格式转换与向量算术和写入操作的机器指令存储于其中的机器可访问介质,其中:
所述机器指令包括格式转换指示符和向量寄存器指示符,以及
所述机器指令在由处理器执行时导致所述处理器:
至少部分地基于所述格式转换指示符,将数据从第一格式转换成第二格式;
至少部分地基于所述第二格式的数据,执行向量算术操作;以及
在执行所述向量算术操作之后,将所述向量算术操作的结果保存到由所述向量寄存器指示符标识的向量寄存器的多个元素。
14.如权利要求13所述的机器可访问介质,其特征在于:
所述向量寄存器指示符包括第一指令自变量;以及
所述格式转换指示符包括来自包含以下的组的至少一个指示符:
第二指令自变量;以及
至少部分指令操作码。
15.如权利要求13所述的机器可访问介质,其特征在于,所述机器指令还包括用于标识与所述第一格式的数据相关联的存储位置的源自变量。
16.一种具有用于组合数据格式转换与存储操作的机器指令存储于其中的机器可访问介质,其中:
所述机器指令包括格式转换指示符和存储位置指示符,以及
所述机器指令在由处理器执行时导致所述处理器:
至少部分地基于所述格式转换指示符,将来自向量寄存器的至少一个元素的数据从第一格式转换成第二格式;以及
在转换所述数据之后,将所述第二格式的数据保存到与所述存储位置指示符相对应的至少一个存储位置。
17.如权利要求16所述的机器可访问介质,其特征在于,所述格式转换指示符包括来自包含以下的组的至少一个指示符:
指令自变量;以及
至少部分指令操作码。
18.如权利要求16所述的机器可访问介质,其特征在于,所述机器指令还包括用于标识所述向量寄存器的源自变量。
19.一种用于处理向量指令的方法,所述方法包括:
取出向量-加载-转换-和写入处理器指令,所述向量-加载-转换-和写入处理器指令具有格式转换指示符和向量寄存器指示符;以及
通过执行以下操作来执行所述向量-加载-转换-和写入处理器指令:
至少部分地基于格式转换指示符,将数据从第一格式转换成第二格式;以及
在将所述数据转换成所述第二格式后,将所述第二格式的所述数据保存到由所述向量寄存器指示符标识的向量寄存器的多个元素。
20.如权利要求19所述的方法,其特征在于:
所述第一格式的数据包括占据预定位数的数据项;以及
所述将数据从第一格式转换成第二格式的操作包括生成占据与所述预定位数不同的位数的新数据项。
21.一种用于处理向量指令的方法,所述方法包括:
取出向量-加载-转换-计算-和写入处理器指令,所述向量-加载-转换-计算-和写入处理器指令具有格式转换指示符和向量寄存器指示符;
通过执行以下操作来执行所述向量-加载-转换-计算-和写入处理器指令:
至少部分地基于所述格式转换指示符,将数据从第一格式转换成第二格式;
至少部分地基于所述第二格式的数据,执行向量算术操作;以及
将所述向量算术操作的结果保存到由所述向量寄存器指示符标识的向量寄存器的多个元素。
22.如权利要求21所述的方法,其特征在于:
所述第一格式的数据包括占据预定位数的数据项;以及
所述将数据从第一格式转换成第二格式的操作包括生成占据与所述预定位数不同的位数的新数据项。
23.一种用于处理向量指令的方法,所述方法包括:
取出向量-转换-和存储处理器指令,所述向量-转换-和存储处理器指令具有格式转换指示符和存储位置指示符;
通过执行以下操作来执行所述向量-转换-和存储处理器指令:
将来自向量寄存器的至少一个元素的数据从第一格式转换成第二格式;以及
将所述第二格式的所述数据保存到与所述存储位置指示符相对应的至少一个存储位置。
24.如权利要求23所述的方法,其特征在于:
所述向量寄存器中的数据包括各自占据预定位数的多个数据项;以及
所述将数据从第一格式转换成第二格式的操作包括生成占据与所述预定位数不同的位数的新数据项。
25.一种计算机系统,包括:
用于存储向量-加载-转换-和写入指令的存储器;以及
处理器,它耦合到所述存储器,所述处理器包括能够解码所述向量-加载-转换-和写入指令的控制逻辑。
26.如权利要求25所述的计算机系统,其特征在于:
所述处理器包括一个或多个向量寄存器,每一个向量寄存器都能够保持多个向量元素;以及
所述向量-加载-转换-和写入指令包括:
用于标识期望数据格式转换的格式转换指示符;以及
用于在所述一个或多个向量寄存器中,将期望向量寄存器标识为所述向量-加载-转换-和写入指令的结果的目的地的向量寄存器指示符。
27.一种计算机系统,包括:
用于存储向量-加载-转换-计算-和写入指令的存储器;以及
处理器,它耦合到所述存储器,所述处理器包括能够解码所述向量-加载-转换-和写入指令的控制逻辑。
28.如权利要求27所述的计算机系统,其特征在于:
所述处理器包括一个或多个向量寄存器,每一个向量寄存器都能够保持多个向量元素;以及
所述向量-加载-转换-计算-和写入指令包括:
用于标识期望数据格式转换的格式转换指示符;以及
用于在所述一个或多个向量寄存器中,将期望向量寄存器标识为所述向量-加载-转换-计算-和写入指令的结果的目的地的向量寄存器指示符。
29.一种计算机系统,包括:
用于存储向量-转换-和存储指令的存储器;以及
处理器,它耦合到所述存储器,所述处理器包括能够解码所述向量-转换-和存储指令的控制逻辑。
30.如权利要求29所述的计算机系统,其特征在于:
所述处理器包括一个或多个向量寄存器,每一个向量寄存器都能够保持多个向量元素;以及
所述向量-转换-和存储指令包括:
用于标识期望数据格式转换的格式转换指示符;以及
用于将期望存储位置标识为所述向量-转换-和存储指令的结果的目的地的存储位置指示符。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310080591.3A CN103257847B (zh) | 2007-12-26 | 2008-12-25 | 用于转换向量数据的方法、装置和指令 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/964,631 | 2007-12-26 | ||
US11/964,631 US8667250B2 (en) | 2007-12-26 | 2007-12-26 | Methods, apparatus, and instructions for converting vector data |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310080591.3A Division CN103257847B (zh) | 2007-12-26 | 2008-12-25 | 用于转换向量数据的方法、装置和指令 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101488083A true CN101488083A (zh) | 2009-07-22 |
CN101488083B CN101488083B (zh) | 2013-05-01 |
Family
ID=40800055
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310080591.3A Expired - Fee Related CN103257847B (zh) | 2007-12-26 | 2008-12-25 | 用于转换向量数据的方法、装置和指令 |
CN2008101903202A Expired - Fee Related CN101488083B (zh) | 2007-12-26 | 2008-12-25 | 用于转换向量数据的方法、装置和指令 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310080591.3A Expired - Fee Related CN103257847B (zh) | 2007-12-26 | 2008-12-25 | 用于转换向量数据的方法、装置和指令 |
Country Status (2)
Country | Link |
---|---|
US (3) | US8667250B2 (zh) |
CN (2) | CN103257847B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763244A (zh) * | 2010-01-21 | 2010-06-30 | 北京龙芯中科技术服务中心有限公司 | 存储器与寄存器之间的数据传输装置和方法 |
CN102375418A (zh) * | 2010-06-08 | 2012-03-14 | 株式会社日立制作所 | 控制装置及其数据处理方法 |
CN103460182A (zh) * | 2011-04-01 | 2013-12-18 | 英特尔公司 | 使用写掩码将两个源操作数混合进单个目的地的系统、装置和方法 |
CN103562855A (zh) * | 2011-04-01 | 2014-02-05 | 英特尔公司 | 用于将存储器源扩展到目的地寄存器并将源寄存器压缩到目的地存储器单元中的系统、装置和方法 |
CN103946797A (zh) * | 2011-12-06 | 2014-07-23 | 英特尔公司 | 用于转换矢量指令的系统、装置和方法 |
CN104081336A (zh) * | 2011-12-23 | 2014-10-01 | 英特尔公司 | 用于检测向量寄存器内的相同元素的装置和方法 |
CN104137052A (zh) * | 2011-12-23 | 2014-11-05 | 英特尔公司 | 用于选择向量计算的元素的装置和方法 |
TWI476684B (zh) * | 2011-04-01 | 2015-03-11 | Intel Corp | 於電腦處理器中執行聚集跨步指令及分散跨步指令之方法及設備 |
CN104919416A (zh) * | 2012-12-29 | 2015-09-16 | 英特尔公司 | 用于提供矢量地址冲突检测功能的方法、装置、指令和逻辑 |
CN104956322A (zh) * | 2013-03-05 | 2015-09-30 | 英特尔公司 | 分析向量化的潜在效益 |
TWI502499B (zh) * | 2011-12-23 | 2015-10-01 | Intel Corp | 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法 |
CN105940373A (zh) * | 2014-01-31 | 2016-09-14 | 高通股份有限公司 | 向量处理器中的加载/存储操作期间的格式转换 |
CN108241504A (zh) * | 2011-12-23 | 2018-07-03 | 英特尔公司 | 经改进的提取指令的装置和方法 |
CN111831335A (zh) * | 2011-12-23 | 2020-10-27 | 英特尔公司 | 经改进的插入指令的装置和方法 |
CN112394994A (zh) * | 2019-08-13 | 2021-02-23 | 上海寒武纪信息科技有限公司 | 半精度浮点转八位整形指令处理装置、方法及相关产品 |
CN112394993A (zh) * | 2019-08-13 | 2021-02-23 | 上海寒武纪信息科技有限公司 | 半精度浮点转短整形指令处理装置、方法及相关产品 |
CN112394902A (zh) * | 2019-08-13 | 2021-02-23 | 上海寒武纪信息科技有限公司 | 半精度浮点转浮点指令处理装置、方法及相关产品 |
CN112394987A (zh) * | 2019-08-13 | 2021-02-23 | 上海寒武纪信息科技有限公司 | 短整形转半精度浮点指令处理装置、方法及相关产品 |
CN112394996A (zh) * | 2019-08-13 | 2021-02-23 | 上海寒武纪信息科技有限公司 | 八位整形转半精度浮点指令处理装置、方法及相关产品 |
TWI720056B (zh) * | 2015-12-18 | 2021-03-01 | 美商英特爾公司 | 用於設置多重向量元素操作之指令及邏輯 |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8392489B2 (en) * | 2008-02-15 | 2013-03-05 | International Business Machines Corporation | ASCII to binary floating point conversion of decimal real numbers on a vector processor |
US8493979B2 (en) | 2008-12-30 | 2013-07-23 | Intel Corporation | Single instruction processing of network packets |
US9952875B2 (en) * | 2009-08-07 | 2018-04-24 | Via Technologies, Inc. | Microprocessor with ALU integrated into store unit |
EP2695054B1 (en) | 2011-04-01 | 2018-08-15 | Intel Corporation | Vector friendly instruction format and execution thereof |
US20120254589A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | System, apparatus, and method for aligning registers |
US20130185538A1 (en) * | 2011-07-14 | 2013-07-18 | Texas Instruments Incorporated | Processor with inter-processing path communication |
US10083032B2 (en) * | 2011-12-14 | 2018-09-25 | Intel Corporation | System, apparatus and method for generating a loop alignment count or a loop alignment mask |
US10157061B2 (en) | 2011-12-22 | 2018-12-18 | Intel Corporation | Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks |
WO2013095605A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method for sliding window data gather |
CN104081337B (zh) * | 2011-12-23 | 2017-11-07 | 英特尔公司 | 用于响应于单个指令来执行横向部分求和的系统、装置和方法 |
CN104011648B (zh) * | 2011-12-23 | 2018-09-11 | 英特尔公司 | 用于执行向量打包压缩和重复的系统、装置以及方法 |
CN108519921B (zh) * | 2011-12-23 | 2022-07-12 | 英特尔公司 | 用于从通用寄存器向向量寄存器进行广播的装置和方法 |
CN104025022B (zh) | 2011-12-23 | 2017-09-19 | 英特尔公司 | 用于具有推测支持的向量化的装置和方法 |
CN104126166A (zh) * | 2011-12-23 | 2014-10-29 | 英特尔公司 | 用于执行使用掩码的向量打包一元编码的系统、装置和方法 |
WO2013095669A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Multi-register scatter instruction |
US20130297877A1 (en) * | 2012-05-02 | 2013-11-07 | Jack B. Dennis | Managing buffer memory |
US9501276B2 (en) | 2012-12-31 | 2016-11-22 | Intel Corporation | Instructions and logic to vectorize conditional loops |
US10423413B2 (en) * | 2013-07-09 | 2019-09-24 | Texas Instruments Incorporated | Vector load and duplicate operations |
US9606803B2 (en) * | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
GB201313292D0 (en) * | 2013-07-25 | 2013-09-11 | Bifold Fluidpower Ltd | Graphical data representation |
US9880845B2 (en) | 2013-11-15 | 2018-01-30 | Qualcomm Incorporated | Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods |
US10296489B2 (en) * | 2014-12-27 | 2019-05-21 | Intel Corporation | Method and apparatus for performing a vector bit shuffle |
WO2016169032A1 (zh) * | 2015-04-23 | 2016-10-27 | 华为技术有限公司 | 数据格式转换装置、缓冲芯片及方法 |
US10007519B2 (en) * | 2015-12-22 | 2018-06-26 | Intel IP Corporation | Instructions and logic for vector bit field compression and expansion |
CN107688466B (zh) * | 2016-08-05 | 2020-11-03 | 中科寒武纪科技股份有限公司 | 一种运算装置及其操作方法 |
CN107766078A (zh) * | 2016-08-15 | 2018-03-06 | 法乐第(北京)网络科技有限公司 | 变量值存储方法、读取方法、操作执行方法及装置 |
US10698685B2 (en) * | 2017-05-03 | 2020-06-30 | Intel Corporation | Instructions for dual destination type conversion, mixed precision accumulation, and mixed precision atomic memory operations |
US10346163B2 (en) | 2017-11-01 | 2019-07-09 | Apple Inc. | Matrix computation engine |
US10761850B2 (en) * | 2017-12-28 | 2020-09-01 | Texas Instruments Incorporated | Look up table with data element promotion |
US10970078B2 (en) * | 2018-04-05 | 2021-04-06 | Apple Inc. | Computation engine with upsize/interleave and downsize/deinterleave options |
US10642620B2 (en) | 2018-04-05 | 2020-05-05 | Apple Inc. | Computation engine with strided dot product |
US11151445B2 (en) * | 2018-04-21 | 2021-10-19 | Microsoft Technology Licensing, Llc | Neural network processor with a window expander circuit |
US10754649B2 (en) | 2018-07-24 | 2020-08-25 | Apple Inc. | Computation engine that operates in matrix and vector modes |
US10831488B1 (en) | 2018-08-20 | 2020-11-10 | Apple Inc. | Computation engine with extract instructions to minimize memory access |
CN111078286B (zh) * | 2018-10-19 | 2023-09-01 | 上海寒武纪信息科技有限公司 | 数据通信方法、计算系统和存储介质 |
US11372643B2 (en) | 2018-11-09 | 2022-06-28 | Intel Corporation | Systems and methods for performing instructions to convert to 16-bit floating-point format |
US11263010B2 (en) * | 2019-07-09 | 2022-03-01 | Micron Technology, Inc. | Bit string lookup data structure |
CN110837719A (zh) * | 2019-11-15 | 2020-02-25 | 广州健飞通信有限公司 | 数据参考模块整合系统 |
US20210406012A1 (en) * | 2020-06-27 | 2021-12-30 | Intel Corporation | Loading and storing matrix data with datatype conversion |
US20220206743A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Instructions to convert from fp16 to bf8 |
US20220206805A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Instructions to convert from fp16 to bf8 |
CN113806250B (zh) * | 2021-09-24 | 2022-10-18 | 中国人民解放军国防科技大学 | 通用处理器核心与向量部件的协同方法、接口及处理器 |
CN117453381A (zh) * | 2022-07-18 | 2024-01-26 | 阿里巴巴(中国)有限公司 | 处理器及其数据操作方法 |
CN116185502B (zh) * | 2023-02-16 | 2023-11-07 | 南京金阵微电子技术有限公司 | 流水线处理器及电子设备 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2229832B (en) | 1989-03-30 | 1993-04-07 | Intel Corp | Byte swap instruction for memory format conversion within a microprocessor |
US5384582A (en) | 1993-06-16 | 1995-01-24 | Intel Corporation | Conversion of image data from subsampled format to clut format |
US5673407A (en) * | 1994-03-08 | 1997-09-30 | Texas Instruments Incorporated | Data processor having capability to perform both floating point operations and memory access in response to a single instruction |
US5892697A (en) * | 1995-12-19 | 1999-04-06 | Brakefield; James Charles | Method and apparatus for handling overflow and underflow in processing floating-point numbers |
US5812147A (en) * | 1996-09-20 | 1998-09-22 | Silicon Graphics, Inc. | Instruction methods for performing data formatting while moving data between memory and a vector register file |
US6108768A (en) * | 1998-04-22 | 2000-08-22 | Sun Microsystems, Inc. | Reissue logic for individually reissuing instructions trapped in a multiissue stack based computing system |
US6292815B1 (en) | 1998-04-30 | 2001-09-18 | Intel Corporation | Data conversion between floating point packed format and integer scalar format |
US6263426B1 (en) | 1998-04-30 | 2001-07-17 | Intel Corporation | Conversion from packed floating point data to packed 8-bit integer data in different architectural registers |
US6266769B1 (en) | 1998-04-30 | 2001-07-24 | Intel Corporation | Conversion between packed floating point data and packed 32-bit integer data in different architectural registers |
US6247116B1 (en) | 1998-04-30 | 2001-06-12 | Intel Corporation | Conversion from packed floating point data to packed 16-bit integer data in different architectural registers |
US6762761B2 (en) * | 1999-03-31 | 2004-07-13 | International Business Machines Corporation | Method and system for graphics rendering using hardware-event-triggered execution of captured graphics hardware instructions |
US6393452B1 (en) * | 1999-05-21 | 2002-05-21 | Hewlett-Packard Company | Method and apparatus for performing load bypasses in a floating-point unit |
US6591361B1 (en) * | 1999-12-28 | 2003-07-08 | International Business Machines Corporation | Method and apparatus for converting data into different ordinal types |
US6701424B1 (en) * | 2000-04-07 | 2004-03-02 | Nintendo Co., Ltd. | Method and apparatus for efficient loading and storing of vectors |
US7047396B1 (en) * | 2000-06-22 | 2006-05-16 | Ubicom, Inc. | Fixed length memory to memory arithmetic and architecture for a communications embedded processor system |
US6772320B1 (en) | 2000-11-17 | 2004-08-03 | Intel Corporation | Method and computer program for data conversion in a heterogeneous communications network |
US7330864B2 (en) * | 2001-03-01 | 2008-02-12 | Microsoft Corporation | System and method for using native floating point microprocessor instructions to manipulate 16-bit floating point data representations |
US7062525B1 (en) | 2002-08-30 | 2006-06-13 | Lsi Logic Corporation | Circuit and method for normalizing and rounding floating-point results and processor incorporating the circuit or the method |
US7689641B2 (en) * | 2003-06-30 | 2010-03-30 | Intel Corporation | SIMD integer multiply high with round and shift |
US7676655B2 (en) | 2004-06-30 | 2010-03-09 | Sun Microsystems, Inc. | Single bit control of threads in a multithreaded multicore processor |
US20060190700A1 (en) * | 2005-02-22 | 2006-08-24 | International Business Machines Corporation | Handling permanent and transient errors using a SIMD unit |
US8255884B2 (en) * | 2008-06-06 | 2012-08-28 | International Business Machines Corporation | Optimized scalar promotion with load and splat SIMD instructions |
US7865693B2 (en) * | 2008-10-14 | 2011-01-04 | International Business Machines Corporation | Aligning precision converted vector data using mask indicating offset relative to element boundary corresponding to precision type |
US20110004644A1 (en) * | 2009-07-03 | 2011-01-06 | Via Technologies, Inc. | Dynamic floating point register precision control |
-
2007
- 2007-12-26 US US11/964,631 patent/US8667250B2/en active Active
-
2008
- 2008-12-25 CN CN201310080591.3A patent/CN103257847B/zh not_active Expired - Fee Related
- 2008-12-25 CN CN2008101903202A patent/CN101488083B/zh not_active Expired - Fee Related
-
2013
- 2013-02-07 US US13/762,220 patent/US20140019720A1/en not_active Abandoned
- 2013-03-15 US US13/844,111 patent/US9495153B2/en active Active
Cited By (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763244A (zh) * | 2010-01-21 | 2010-06-30 | 北京龙芯中科技术服务中心有限公司 | 存储器与寄存器之间的数据传输装置和方法 |
CN102375418A (zh) * | 2010-06-08 | 2012-03-14 | 株式会社日立制作所 | 控制装置及其数据处理方法 |
CN106681693B (zh) * | 2011-04-01 | 2019-07-23 | 英特尔公司 | 使用写掩码将两个源操作数混合进单个目的地的处理器 |
CN103460182A (zh) * | 2011-04-01 | 2013-12-18 | 英特尔公司 | 使用写掩码将两个源操作数混合进单个目的地的系统、装置和方法 |
CN103562855A (zh) * | 2011-04-01 | 2014-02-05 | 英特尔公司 | 用于将存储器源扩展到目的地寄存器并将源寄存器压缩到目的地存储器单元中的系统、装置和方法 |
CN103562855B (zh) * | 2011-04-01 | 2017-08-11 | 英特尔公司 | 用于将存储器源扩展到目的地寄存器并将源寄存器压缩到目的地存储器单元中的系统、装置和方法 |
TWI476684B (zh) * | 2011-04-01 | 2015-03-11 | Intel Corp | 於電腦處理器中執行聚集跨步指令及分散跨步指令之方法及設備 |
CN106681693A (zh) * | 2011-04-01 | 2017-05-17 | 英特尔公司 | 使用写掩码将两个源操作数混合进单个目的地的系统、装置和方法 |
CN103460182B (zh) * | 2011-04-01 | 2016-12-21 | 英特尔公司 | 使用写掩码将两个源操作数混合进单个目的地的系统、装置和方法 |
TWI514273B (zh) * | 2011-04-01 | 2015-12-21 | Intel Corp | 於電腦處理器中執行聚集跨步指令及分散跨步指令之方法及設備 |
CN103946797A (zh) * | 2011-12-06 | 2014-07-23 | 英特尔公司 | 用于转换矢量指令的系统、装置和方法 |
CN103946797B (zh) * | 2011-12-06 | 2017-07-04 | 英特尔公司 | 用于转换矢量指令的系统、装置和方法 |
CN104081336A (zh) * | 2011-12-23 | 2014-10-01 | 英特尔公司 | 用于检测向量寄存器内的相同元素的装置和方法 |
US9454507B2 (en) | 2011-12-23 | 2016-09-27 | Intel Corporation | Systems, apparatuses, and methods for performing a conversion of a writemask register to a list of index values in a vector register |
TWI502499B (zh) * | 2011-12-23 | 2015-10-01 | Intel Corp | 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法 |
CN111831335A (zh) * | 2011-12-23 | 2020-10-27 | 英特尔公司 | 经改进的插入指令的装置和方法 |
CN104137052A (zh) * | 2011-12-23 | 2014-11-05 | 英特尔公司 | 用于选择向量计算的元素的装置和方法 |
CN108241504A (zh) * | 2011-12-23 | 2018-07-03 | 英特尔公司 | 经改进的提取指令的装置和方法 |
CN104081336B (zh) * | 2011-12-23 | 2018-10-23 | 英特尔公司 | 用于检测向量寄存器内的相同元素的装置和方法 |
US9921840B2 (en) | 2011-12-23 | 2018-03-20 | Intel Corporation | Sytems, apparatuses, and methods for performing a conversion of a writemask register to a list of index values in a vector register |
CN104919416A (zh) * | 2012-12-29 | 2015-09-16 | 英特尔公司 | 用于提供矢量地址冲突检测功能的方法、装置、指令和逻辑 |
CN104919416B (zh) * | 2012-12-29 | 2017-09-05 | 英特尔公司 | 用于提供矢量地址冲突检测功能的方法、装置、指令和逻辑 |
CN104956322B (zh) * | 2013-03-05 | 2019-03-01 | 英特尔公司 | 分析向量化的潜在效益 |
CN104956322A (zh) * | 2013-03-05 | 2015-09-30 | 英特尔公司 | 分析向量化的潜在效益 |
US10061581B2 (en) | 2014-01-31 | 2018-08-28 | Qualcomm Incorporated | On-the-fly conversion during load/store operations in a vector processor |
CN105940373B (zh) * | 2014-01-31 | 2018-11-20 | 高通股份有限公司 | 向量处理器中的加载/存储操作期间的格式转换 |
CN105940373A (zh) * | 2014-01-31 | 2016-09-14 | 高通股份有限公司 | 向量处理器中的加载/存储操作期间的格式转换 |
TWI720056B (zh) * | 2015-12-18 | 2021-03-01 | 美商英特爾公司 | 用於設置多重向量元素操作之指令及邏輯 |
CN112394994A (zh) * | 2019-08-13 | 2021-02-23 | 上海寒武纪信息科技有限公司 | 半精度浮点转八位整形指令处理装置、方法及相关产品 |
CN112394993A (zh) * | 2019-08-13 | 2021-02-23 | 上海寒武纪信息科技有限公司 | 半精度浮点转短整形指令处理装置、方法及相关产品 |
CN112394902A (zh) * | 2019-08-13 | 2021-02-23 | 上海寒武纪信息科技有限公司 | 半精度浮点转浮点指令处理装置、方法及相关产品 |
CN112394987A (zh) * | 2019-08-13 | 2021-02-23 | 上海寒武纪信息科技有限公司 | 短整形转半精度浮点指令处理装置、方法及相关产品 |
CN112394996A (zh) * | 2019-08-13 | 2021-02-23 | 上海寒武纪信息科技有限公司 | 八位整形转半精度浮点指令处理装置、方法及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
US8667250B2 (en) | 2014-03-04 |
US9495153B2 (en) | 2016-11-15 |
CN103257847A (zh) | 2013-08-21 |
US20130232318A1 (en) | 2013-09-05 |
US20140019720A1 (en) | 2014-01-16 |
CN101488083B (zh) | 2013-05-01 |
CN103257847B (zh) | 2016-11-16 |
US20090172349A1 (en) | 2009-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101488083B (zh) | 用于转换向量数据的方法、装置和指令 | |
KR102449616B1 (ko) | 벡터 요소 세트에 대해 축소 연산을 수행하기 위한 방법 및 장치 | |
US9600281B2 (en) | Matrix multiplication operations using pair-wise load and splat operations | |
US8650240B2 (en) | Complex matrix multiplication operations with data pre-conditioning in a high performance computing architecture | |
KR101300431B1 (ko) | 내적 연산을 수행하기 위한 명령 및 논리 | |
US7900025B2 (en) | Floating point only SIMD instruction set architecture including compare, select, Boolean, and alignment operations | |
US8423983B2 (en) | Generating and executing programs for a floating point single instruction multiple data instruction set architecture | |
CN102073478B (zh) | 用于处理文本串的指令和逻辑 | |
CN100541422C (zh) | 用于执行具有取整和移位的组合型高位乘法的方法和装置 | |
US9652231B2 (en) | All-to-all permutation of vector elements based on a permutation pattern encoded in mantissa and exponent bits in a floating-point SIMD architecture | |
US20190102671A1 (en) | Inner product convolutional neural network accelerator | |
US7865693B2 (en) | Aligning precision converted vector data using mask indicating offset relative to element boundary corresponding to precision type | |
CN104049945A (zh) | 用于融合指令以在多个测试源上提供或(or)测试和与(and)测试功能的方法和装置 | |
CN103970509A (zh) | 对条件循环进行矢量化的指令和逻辑 | |
CN104050077A (zh) | 利用多个测试源来提供或(or)测试和与(and)测试功能的可融合指令和逻辑 | |
CN102473093A (zh) | 对多个通道中的紧缩数据解压缩 | |
CN104915181A (zh) | 条件存储器错误帮助抑制 | |
CN104011662A (zh) | 用于提供向量混合和置换功能的指令和逻辑 | |
CN104919416A (zh) | 用于提供矢量地址冲突检测功能的方法、装置、指令和逻辑 | |
CN103959237A (zh) | 用于提供向量横向比较功能的指令和逻辑 | |
CN103827813A (zh) | 用于提供向量分散操作和聚集操作功能的指令和逻辑 | |
US20130151822A1 (en) | Efficient Enqueuing of Values in SIMD Engines with Permute Unit | |
CN105612509A (zh) | 用于提供向量子字节解压缩功能性的方法、设备、指令和逻辑 | |
CN103827815A (zh) | 用于提供利用跨越和掩码功能的向量加载和存储的指令和逻辑 | |
CN103959236A (zh) | 用于提供向量横向多数表决功能的指令和逻辑 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130501 |
|
CF01 | Termination of patent right due to non-payment of annual fee |