用于转换向量数据的方法、装置和指令的制作方法

文档序号:6469068阅读:274来源:国知局
专利名称:用于转换向量数据的方法、装置和指令的制作方法
技术领域
本公开一般涉及数据处理领域,尤其涉及用于转换向量中使用的数据的 方法和有关装置。
些旦 Ff豕
数据处理系统可包括硬件资源,诸如一个或多个处理器、随机存取存储
器(RAM)、只读存储器(ROM)等。处理器可包括多个处理核。处理系统还可包 括软件资源,诸如基本输入/输出系统(BIOS)、虚拟机监控器以及一个或多 个操作系统(OS)。
处理器可为处理向量提供硬件资源。向量是一种持有数个连续元素或数 据项的数据结构。大小为M的向量寄存器可包含N个大小为O的向量元素, 其中N二M/0。例如,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包括一个或多个易失性或非易失性数据存储设备,诸如RAM 26、 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获f导。
在图1的实施例中,处理器22驻留在扩展模块300 (例如,适配器卡) 上,该扩展模块300经由外围组件互连(PCI)快速(PCIe)接口与处理单元 24通信。处理器22被实现为包括多个核心(例如,处理核心31、处理核心33、... 处理核心33n)以及诸如存储器控制器310、 PCIe控制器330和视频输出端口340 (可包括例如数字-模拟转换器(DAC))之类的其它组件。扩展模块300 还包括用于存储将由处理器22使用的指令和数据的RAM 320。处理器22可将 R層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执行时,它可使OS102生成一个或多个合并的向量 转换指令,且处理器24可将合并的向量转换指令发送到处理器22。处理器22 可将从处理器24接收的指令存储在RAM 320中作为程序106,且RAM 320 还可包括在核心中的一个或多个上运行并控制程序106的执行的微OS 104。
例如,程序100可以是视频游戏,且OS102可向程序100提供图形应 用程序接口 (API),以用于请求关于图形的各种功能,诸如光线跟踪、光栅 化等。当程序100调用API时,0S102中的设备驱动器可通过生成将由处理器 22执行的合并的向量转换指令和其它指令来作出响应。处理器24可将这些指
13令发送给处理器22,以作为程序106存储,如以上指示的。例如,微OS 104 然后可调度这些指令以在处理核心31上运行。例如,在不同的实施例中,程 序可适用不同种类的函数或应用,诸如文本处理、物理模拟等。
在一个示例应用中,处理系统20使用处理器22来处理向量操作(例如 图形渲染工作负载),并且这些操作涉及带有与被处理器22用于大多数内部 操作的格式不同的格式的数据结构。例如,处理核心31可提供512位的向量, 且VPU 145可对如或者DWORD向量或者QWORD向量那样的向量进行操作。 DWORD向量是16元素向量,每个元素具有32位。QWORD向量是8元素向 量,每个元素具有64位。因此,VPU145可将以下格式用于向量操作
float32: 32位浮点(或"单精度浮点"),
Float64: 64位浮点(或"双精度浮点"),
sint32: 32位带符号整数,以及
uint32: 32位无符号整数。
具体地,在图1的实施例中,VPU 145将以下的内部表示之一用于向量的 每一个元素。
float32用于DWORD向量,
sint32用于DWORD向量,
uint32用于DWORD向量,或
float64用于QWORD向量。
然而,软件可决定使用与这些内部格式不同的格式来在存储器中编码向量 数据(例如,图形渲染工作负载)。例如,图形软件可使用带有如下格式的数 据结构
floatl6: 16位浮点数;
floatll: ll位浮点数;
floatl0: 10位浮点数;
uintl6:映射到
范围中的整数的16位值;
uint8:映射到
范围中的整数的8位值;
sintl6:映射到[-32768,32767]范围中的整数的16位值;
sint8:映射到[-128, 127]范围中的整数的8位值; snorml6:映射到[-l, l]范围中的浮点数的16位值;
snorm8:映射到[-l, l]范围中的浮点数的8位值;
srgb8:通过伽玛(gamma)校正函数(一般实现为査找表)映射到[-l, 1]范围中的浮点数的8位值;
unorml6:映射到[O, l]范围中的浮点数的16位值;
unorml0:映射到[O, l]范围中的浮点数的10位值;
unorm8:映射到[O, l]范围中的浮点数的8位值;
unorm2:映射到[O, l]范围中的浮点数的2位值;
floatllAllB10C:具有两个FLOATll值和一个FLOAT10值的32位分
组的压縮数据类型,开始于位于高阶位的最后一个;以及
unormlOA10B10C2D:具有三个UNORM10值和一个UNORM2值的 32位分组的压縮数据类型,开始于位于高阶位的最后一个。
此外,关于floatllAllB10C,持有不同值的四个不同的比特组可被称为 字段A、 B、 C和D。类似地,unormlOA10B10C2D中的三个不同的位组可被 称为字段A、 B禾口C。
常规的系统可使用float32元素的阵列来处理floatl6数据元素的很大的 二维阵列(例如,表示屏幕的一个彩色通道)。然而,float32阵列可占据floatl6 阵列的两倍空间。因此,如果float32阵列保持高速缓存驻留,则相当大的比 例的高速缓存可能不可用于其它用途。
相反,在图1的实施例中,程序106使用合并的向量转换指令。这些指 令使得高速缓存160中的数据能够保持为较小的格式(例如,floatl6),而以 较大格式由VPU145处理(例如,float32)。如以上所指示的,合并的向量转 换指令包括VLoadConWr指令、VLoadConComWr指令和VConStore指令。这 些指令使用向量作为源或产生向量作为结果或两者都有。VPU 145可并行计算 向量的所有元素。
因为VPU 145仅可利用上述的内部格式对向量进行操作,所以可能需 要在处理核心31能够将向量加载到VPU 145之前将软件所使用的外部格式转 换成内部表示之一。例如,如果程序106使用带有floatl6元素的向量,则 VLoadConWr指令可用于从存储器读取floatl6向量数据,将该数据转换成VPU145支持的内部格式之一 (例如,float32),并将转换的数据加载到向量寄存 器。类似地,可将VConStore指令用于将向量寄存器数据从内部表示转换成外 部表示,然而将该数据以外部格式存储到存储器中。
类似于VLoadConWr指令,VLoadConComWr指令提供从外部格式转 换成内部格式,并将内部格式加载到向量寄存器。然而,VLoadConComWr指 令允许向量算术操作与这些操作组合。
图2是根据本发明的示例实施例的示例VLoadConComWr指令170和 相应的执行流水线112的框图。在图2的实施例中,VLoadConComWr指令170 包括以下部分
操作码(opcode): vLoadConAddWrF32,
目的地自变量VI,
寄存器源自变量V2,
存储器源自变量0b0000 (其中前缀0b指示二进制记数法),以及
格式自变量floatl6。
同样,流水线112包括以下五个阶段
阶段120:从存储器取出指令,
阶段122:从存储器读取数据,
阶段124:转换数据,
阶段126:执行算术,以及
阶段128:将结果加载到向量寄存器。
在一个实施例中,处理核心31可并行执行5条流水线,且每条流水线具 有5个阶段。处理可在处理核心31中的每个时钟周期或滴答从各阶段进行到 下一个。因此,处理核心31可有效地将电路用于每个阶段,例如通过一旦当 前指令从取出阶段120移至读取阶段122就取出下一个指令。在其它实施例中, 处理核心可使用更少的流水线或更多的流水线,且流水线可使用更少的阶段或 更多的阶段。
图3是在图1的处理系统中用于处理向量的过程的示例实施例的流程 图。所示的过程在一组指令——本文中称为程序106——已被存储在RAM320 中之后开始,如上文所指出的。在框210,处理核心31从RAM320取出程序
16106中的指令之一。在框220,解码器165确定哪种指令已被取出。具体地, 解码器165确定指令是否是合并的向量转换指令。如果指令不是合并的向量转 换指令,则处理核心31可使用或多或少的常规技术来执行指令,如框222所 指示的。然而,如果指令是合并的向量转换指令,则取决于合并的向量转换指 令的类型,处理可沿着三种不同的路径之一进行下去,如框230所指示的。
如果指令是VLoadConWr指令,则过程可沿"加载"路径到达框232, 其示出处理核心31从存储器读取外部格式数据。如框234所指示的,转换单 元140然后可至少部分地基于指令中的转换指示符将数据转换成内部格式。执 行单元130然后可将内部格式数据保存到指定向量寄存器,如框236所示。
例如,图4是描述根据本发明的示例实施例的示例VLoadConWr指令 50及相关联的存储结构的框图。如图所示,VLoadConWr指令50包括以下部 分
opcode 52: VLoadConWrF32,
目的地自变量54: VI,
存储器源自变量56: 0b0000,以及
格式自变量58: floatl6。
如上文参照图3的框232、 234和236所解释的,当处理核心31执行 VLoadConWr指令50时,执行单元130从存储器读取外部格式的数据,将该 数据转换成内部格式,并将内部格式数据写入向量寄存器。在图4的实施例中, 执行单元130至少部分地基于opcode 52确定用于以下"加载"路径的指令类 型调用。存储器源自变量56标识将从其读取数据的存储位置和存储区域。例 如,存储器源自变量56可指定将从其读取向量元素的存储位置或存储区域114 的起点。格式自变量58标识存储器中的数据的外部格式。例如,floatl6的格 式自变量可指示存储器中的每个向量元素占据16比特,且存储器源自变量56 标识第一元素的位置。目的地自变量54标识用于接收转换的数据的向量寄存 器。
因此,格式自变量58构成影响如何执行VLoadConWr指令50的格式 指示符。此外,部分opcode可用作另一个格式指示符。例如,"F32"后缀还 可影响如何执行VLoadConWr指令50。在图4的实施例中,floatl6和"F32"后缀的格式自变量指示利用floatl6格式从存储器读取数据并转换成float32格 式,以便在向量寄存器中内部使用。
部分opcode还可用作广播指示符,用于从多种不同类型的加载操作中 选择。例如,处理核心31可指示一对一加载,如图4所示,其中向量寄存器 中的每一个元素从存储器中的向量获得相应的元素。处理核心31还可指示一 对多广播加载以及四对多广播加载,如以下参照图5和6详细解释的。当叩code 包括"Broadl"时,执行单元B0可执行类似图5所示的那些的操作,而当opcode 包括"Broad4"时,执行单元130可执行类似图6所示的那些的操作。
图5是描述根据本发明的示例实施例的一对多VLoadConWr指令60及 相关联的存储结构的框图。如图所示,在这种情况下,opcode 62是 "vConBroadlF32",目的地自变量64是V1,存储器源自变量66是0b0000, 而格式参数68是srgb8。因此,当执行VLoadConWr指令60时,处理核心31 基于源自变量66和格式参数68,从存储区域114的第一个8位位置读取单个 数据项。此外,转换单元140基于opcode 62中的格式属性"F32"将该数据项 转换成float32。然后VPU 145基于目的地自变量64将经转换的数据的副本保 存到VI的16个向量元件中的每一个。
图6是描述根据本发明的示例实施例的四对多VLoadConWr指令70及 相关联的存储结构的框图。在图6中,opcode 72是"vConBroad4F32",目的 地自变量74是V1,存储器源自变量76是0b0000,而格式参数78是sintl6。 当执行VLoadConWr指令70时,处理核心31基于源自变量76、格式参数78 和opcode 72中的选择指示符"Broad4",从存储区域114中的前四个16位位 置读取四个数据项。转换单元140然后基于opcode 72中的格式指示符"F32" 将这些项中的每一个转换成float32。执行单元130然后基于目的地自变量74 和opcode 72中的选择指示符"Broad4",将经转换的数据保存在VI中作为 广播。g卩,VI的16个元素被视为四组四个连续的元素,且这些组中的每一个 获取四个经转换的数据项中一个副本。
因此,处理器22指示各种不同的VLoadConWr指令。然而,VLoadConWr 指令中的每一个都是单个机器指令,该指令使处理核心31从存储器读取数据、 将该数据转换成另一个格式并将经转换的数据加载到向量寄存器。在一个实施例中,VLoadConWr支持以下数据格式转换
floatl6至float32,
srgb8至float32,
uint8至float32,
sint8至float32,
unorm8至float32,
snorm8至float32,
uintl6至float32,
sintl6至float32,
unorml6至float32,
snorml6至float32,
uint8至uint32,
sint8至sint32,
uintl6至uint32,
sintl6至sint32,
unormlOA10B10C2D字段A (unorml0A)至float32,
unormlOA10B10C2D字段B (unorml0B)至float32,
unormlOA10B10C2D字段C (unorml0C)至float32,
unormlOA10B10C2D字段D (unorm2D)至float32,
floatllAllB10C字段A (floatl 1A)至float32,
floatl 1A1 IB 10C字段B (floatlIB)至float32,以及
floatl 1A1 IB 10C字段C (floatlOC)至float32。 在可选实施例中可支持其它数据格式转换。
再次参照图3,当执行VLoadConComWr指令和VConStore指令时处 理核心31可使用不同的路径。例如,当处理核心31解码VLoadConComWr 指令时,图3的过程可沿"数学"路径通过框230到框240和242,与框232 和234相类似,框240和242描述了执行单元130从存储器读取外部格式的数 据并将该数据转换成内部格式。然而,VLoadConComWr指令的路径还包括待 执行的向量算术操作,如框244所示。向量算术操作可由处理核心31中的向
19量算术逻辑单元(ALU)执行。因此,向量算术操作还可被称为向量ALU操 作。这种操作还可被称为向量数学。然后可将向量数学的结果加载到目的地向 量寄存器,如框246所描述的。
例如,当执行VLoadConComWr指令时,处理核心31可从存储器读取 外部格式的向量。处理核心31还可将数据转换成内部格式。向量ALU操作可 使用经转换的数据和可能的另一向量寄存器源来产生向量寄存器结果。
图7是描述根据本发明的示例实施例的示例VLoadConComWr指令170 及相关联的存储结构的框图。在图7中,opcode 172是"vConAddF32",目 的地自变量174是V1,向量操作数自变量176是V2,存储器源自变量178是 0b0100,而格式参数180是floatl6。当执行VLoadConComWr指令170时,执 行单元130可基于存储器源自变量178和格式参数180,从在位置0b0100开始 的存储区域115读取floatl6格式的十六个向量元素。转换单元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中,encode 82是"vCon4StoreF16",目的地自 变量84是0b1000,源自变量86是VI,而格式参数88是float32。 opcode中 的"4"可用作选择指示符,用于选择将存储在存储器中的源向量的子集。例 如,opcode "vCon4StoreF16"可指示源寄存器中的前四个元素将被转换并存储 在存储器中。opcode "vConlStoreF16"可指示仅源寄存器中的第一个元素将被 转换并存储在存储器中。opcode "vConStoreF16" ( "Con"禾B "Store"之间 没有数字)可指示源寄存器中的所有元素将被转换并存储在存储器中。当执行VConStore指令80时,转换单元140可基于格式参数88、opcode 中的格式指示符"F16"和opcode中的选择指示符"4",将所选元素从float 32 转换成floatl6。执行单元130然后可基于目的地参数84,将经转换的数据存 储在以位置0b1000开始的存储区域116中。
在一个实施例中,处理核心31支持VConStore指令,用于执行以下类 型的格式转换
float32至floatl6,
float32至floatl6 (舍入为0),
float32至uint8,
float32至sint8,
float32至unorm8,
float32至snorm8,
float32至uintl6,
float32至sintl6,
float3 2至unorm 16 ,
float32至snorml6,
uint32至uint8,
sint32至sint8,
uint32至uintl6,以及
sint32至sintl6。 可选实施例可支持其它类型的转换。
正如已经描述的,当执行VLoadConWr指令时,处理核心可(a)从存 储器加载外部格式的数据,(b)将数据从外部格式转换成内部格式,以及(c) 以可选择的广播(例如, 一对六、四对六等)将数据加载到向量寄存器。因此, VLoadConWr可用于将转换和加载操作以及广播操作组合在单个指令中。
当执行VLoadConComWr指令时,处理核心可(a)从存储器加载外部 格式的数据,(b)将数据从外部格式转换成内部格式,(c)执行向量ALU 操作,以及(c)将结果加载到向量寄存器。例如,流过流水线的单个指令可 进行加载操作,以从存储器读取到临时向量寄存器,从floatl6转换至float32格式,将经转换的值与第二向量寄存器相乘,并将结果保存在第三向量寄存器
中。在另一个实施例中,VLoadConComWr指令还可在进行向量算术之前进行 广播。然而,这一实施例可能需要较长的流水线。
当执行VConStore指令时,处理核心可(a)任选地选择用于存储的向 量的子集,(b)从内部格式转换成外部格式,以及(c)将经转换的数据存储 到存储器。
本文描述的操作可使得程序能够使用32位或64位整数或浮点格式进行 内部向量操作,同时数据仍被压縮成较小的数据类型,用于与存储器相互作用, 且除诸如加载和存储之类的操作外程序不包括用于处理转换的额外指令。这些 操作可由单个指令触发,该单个指令提供与诸如存储、加载和/或向量算术组合 的程序设计员可选择的转换。
按照本文所描述和示出的原理和示例实施例,将意识到可在结构和细节 上对所示实施例进行修改而不背离这些原理。例如,可选实施例可涉及以更多 或更少处理器为特征的处理系统,且每一个处理器可包括任何适当数量的核 心。同样,可选实施例可使用除PCIe以外的协议或总线。
在某些实施例中,处理系统中的一个或多个设备可利用诸如可编程或不 可编程逻辑设备或阵列、专用集成电路(ASIC)、嵌入式处理器、智能卡等组 件实现为嵌入式控制器。例如,在可选实施例中,主处理器可驻留在带有用作 图形协处理器或图形处理单元(GPU)的辅助处理器或协处理器的主板上。主 处理器和辅助处理器可利用任何适当类型的总线或协议通信。主处理器、GPU 或两者能够执行诸如本文所述的那些指令。或者,处理器24和扩展模块300 的组件中的某些可被集成到单个CPU封装或集成电路。较佳地,至少一个处 理核心能够执行至少一个合并的向量转换指令。
同样,以上的描述解释指令可包括各种不同的指示符,用于标识待处理 的数据和待执行的操作的各种特性。例如,opcode (或其部分)和指令参数或 自变量被描述为格式指示符、选择指示符、源自变量等。在其它实施例中,可 按本文所述特定方法之外的方式实现指示符。
同样,上述的讨论集中在特定实施例,但预期了其它配置。具体地,即 使在本文中使用了诸如"在一个实施例中"、"在另一个实施例中"等表达,
22这些短语也表示一般参照可能的实施例,且无意将本发明限于特定实施例配 置。如本文所使用的,这些术语可参照能够组合成其它实施例的相同或不同的 实施例。
类似地,虽然关于以特定顺序执行的特定操作描述了示例过程,但可将 众多的修改应用于这些过程,以导出本发明的众多可选实施例。例如,可选实 施例可包括使用比全部公开的操作少的过程、利用附加操作的过程、利用以 不同顺序的相同操作的过程、以及其中本文公开的各个操作被组合、细分或以 其它方式改变的过程。
本发明的可选实施例还包括用于执行本发明的操作的机器可访问介质 编码指令。这种实施例还可被称为程序产品。这种机器可访问介质可包括而不 限于诸如软盘、硬盘、CD-ROM、 ROM和RAM的存储介质;以及其它由机 器或设备制造或形成的制品的其它可检测配置。还可将指令用于分布式环境 中,且可本地和/或远程地存储该指令用于由单处理器或多处理器机器访问。
应该理解,本文描述的硬件和软件组件表示适度自备的功能元件,以使 得每一个都可基本独立于其它而被设计、配置或更新。在不同的实施例中,用 于提供本文所述和示出的功能的控制逻辑可被实现为硬件、软件或硬件和软件 的组合。例如,处理器中的执行逻辑可包括用于执行取出、解码和执行机器指 令所需的操作的电路和微代码。
正如本文所使用的,术语"处理系统"和"数据处理系统"旨在广泛地 包括单个机器或多个共同运行的通信耦合的机器或设备的系统。处理系统的例
子包括但不限于分布式计算系统、超级计算机、高性能计算系统、计算群、大 型计算机、迷你计算机、客户机-服务器系统、个人计算机、工作站、服务器、 便携计算机、膝上型计算机、平板、电话、个人数字助理(PDA)、手持设备、 诸如音频和/或视频设备的娱乐设备、用于处理或发射信息的其它平台或设备。 鉴于可从本文描述的示例实施例容易地导出的广泛的有用置换,该详细 描述旨在是仅为说明性的,而不应被理解为限制本发明的范围。因此,本发明 要求的是落在所附权利要求的范围和精神内的所有实现以及这些实现的所有 等价技术方案。
权利要求
1. 一种用于执行组合了数据格式转换与至少一个向量操作的机器指令的处理器,所述处理器包括控制逻辑,能够执行包括具有格式转换指示符和向量寄存器指示符的向量-加载-转换-和写入指令的处理器指令;其中,响应于所述向量-加载-转换-和写入指令,所述控制逻辑能够至少部分地基于所述格式转换指示符,将数据从第一格式转换成第二格式;以及在将所述数据转换成所述第二格式后,将所述第二格式的所述数据保存到由所述向量寄存器指示符标识的向量寄存器的多个元素。
2. 如权利要求1所述的处理器,其特征在于,所述控制逻辑还能够执行具有格式转换指示符和向量寄存器指示符的向量-加载-转换-计算-和写入指令,其中响应于所述向量-加载-转换-计算-和写入指令,所述控制逻辑能够 至少部分地基于所述格式转换指示符,将数据从所述第一格式转换成所 述第二格式;至少部分地基于所述第二格式的数据,执行向量算术操作;以及 将所述向量算术操作的结果保存到由所述向量寄存器指示符标识的所 述向量寄存器的多个元素。
3. 如权利要求2所述的处理器,其特征在于,所述控制逻辑还能够执行具有格式转换指示符和存储位置指示符的向量-转换-和存储指令,其中 响应于所述向量-转换-和存储指令,所述控制逻辑能够 将来自向量寄存器元素的数据从所述第一格式转换成所述第二格式;以及将所述第二格式的所述数据保存到与所述存储位置指示符相对应的存 储位置。
4. 如权利要求1所述的处理器,其特征在于 当所述向量-加载-转换-和写入指令包括存储位置指示符时,所述处理器2能够在将数据转换成所述第二格式并将所述第二格式的所述数据保存到所述 向量寄存器之前,从与所述存储位置指示符相对应的存储位置读取所述第一格 式的所述数据。
5. 如权利要求1所述的处理器,其特征在于,所述将数据从第一格式转换 成第二格式的操作包括将占据小于32位或大于32位的数据项转换成占据32位的格式。
6. —种用于执行组合了数据格式转换与至少一个向量操作的机器指令的处理器,所述处理器包括控制逻辑,能够执行包括具有格式转换指示符和向量寄存器指示符的向 量-加载-转换-计算-和写入指令的处理器指令;其中响应于所述向量-加载-转换-计算-和写入指令,所述控制逻辑能够 至少部分地基于所述格式转换指示符,将数据从第一格式转换成第二格式;至少部分地基于所述第二格式的数据,执行向量算术操作;以及 将所述向量算术操作的结果保存到由所述向量寄存器指示符标识的向 量寄存器的多个元素。
7. 如权利要求6所述的处理器,其特征在于 当所述向量-加载-转换-计算-和写入指令包括存储位置指示符时,所述处理器能够在将数据转换成所述第二格式并执行所述向量算术操作之前,从与 所述存储位置指示符相对应的存储位置读取所述第一格式的所述数据。
8. —种用于执行组合了数据格式转换与至少一个向量操作的机器指令的处理器,所述处理器包括控制逻辑,能够执行包括具有格式转换指示符和存储位置指示符的向量-转换-和存储指令的处理器指令;其中,响应于所述向量-转换-和存储指令,所述控制逻辑能够将来自向量寄存器的至少一个元素的数据从第一格式转换成第二格式;以及在将所述数据转换成所述第二格式之后,将所述第二格式的数据保存到 与所述存储位置指示符相对应的至少一个存储位置。
9. 如权利要求8所述的处理器,其特征在于 当所述向量-转换-和存储指令具有用于标识包含所述第一格式的数据的所述向量寄存器的向量寄存器指示符时,所述控制逻辑能够执行所述向量-转换-和存储指令。
10. —种具有用于组合数据格式转换与写入操作的机器指令存储于其 中的机器可访问介质,其中所述机器指令包括格式转换指示符和向量寄存器指示符,以及 所述机器指令在由处理器执行时导致所述处理器至少部分地基于所述格式转换指示符,将数据从第一格式转换成第 二格式;以及在将所述数据转换成所述第二格式后,将所述第二格式的所述数据 保存到由所述向量寄存器指示符标识的向量寄存器的多个元素。
11. 如权利要求IO所述的机器可访问介质,其特征在于 所述向量寄存器指示符包括第一指令自变量;以及 所述格式转换指示符包括来自包含以下的组的至少一个指示符 第二指令自变量;以及至少部分指令操作码。
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所述的计算机系统,其特征在于所述处理器包括一个或多个向量寄存器,每一个向量寄存器都能够保持 多个向量元素;以及所述向量-转换-和存储指令包括用于标识期望数据格式转换的格式转换指示符;以及 用于将期望存储位置标识为所述向量-转换-和存储指令的结果的目 的地的存储位置指示符。
全文摘要
本发明涉及用于转换向量数据的方法、装置和指令,提供了一种计算机处理器,包括用于解码机器指令的解码器和用于执行这些指令的执行单元。该解码器和执行单元能够解码并执行包括一个或多个格式转换指示符的向量指令。例如,处理器能够执行向量-加载-转换-和写入(VLoadConWr)指令,它用于将来自存储器的数据加载到向量寄存器。VLoadConWr指令可包括格式转换指示符,以指示来自存储器的数据应在该数据被加载到向量寄存器之前从第一格式转换成第二格式。描述并要求保护其他实施例。
文档编号G06F9/30GK101488083SQ200810190320
公开日2009年7月22日 申请日期2008年12月25日 优先权日2007年12月26日
发明者A·罗希尔, D·M·卡尔曼, E·斯普林格, R·D·凯文 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1