用于处理矢量数据的方法、设备和指令的制作方法

文档序号:6468996阅读:149来源:国知局
专利名称:用于处理矢量数据的方法、设备和指令的制作方法
技术领域
本发明公开一般涉及数据处理的领域,更具体地说,涉及用于处
理矢量数据的方法和相关i殳备。
背景技术
数据处理系统可以包括诸如中央处理单元(CPU)、随机存取存储 器(RAM)、只读存储器(ROM)等的硬件资源。处理系统还可以包括诸 如基本输A/输出系统(BIOS)、虚拟机监视器(VMM)和一个或多个操作 系统(OS)的软件资源。
CPU可以提供对处理矢量的硬件支持。矢量是保存多个连续数据 项的数据结构。大小为M的矢量寄存器可以包含大小为O的N个矢 量元素,其中N-M/0。例如,64字节矢量寄存器可以划分成(a)64个 矢量元素,其中每个元素保存占据1个字节的数据项,(b)32个矢量元 素,其中每个元素保存各占据2个字节(或一个"字")的数据项,(c)16 个矢量元素以保存各占据4个字节(或一个"双字0")的数据项,或(d)8 个矢量元素以保存各占据8个字节或(或一个"四倍字长()")的数据项。
为了提供数据级并行性,CPU可以支持单个指令多个数据(SIMD) 操作。SIMD操作涉及对多个数据项应用相同的操作。
例如,响应单个SIMD相加指令,CPU可以将一个矢量中的每个 元素加到另 一个矢量中的对应元素。CPU可以包括多个处理核以便利 于并行运算。

发明内容
本发明的第一方面在于一种处理器,包括执行逻辑,所述执行
8逻辑通过执行包括如下的操作来执行处理器指令在指定的存储器位 置处开始将来自源矢量寄存器的未屏蔽矢量元素复制到连续的存储 器位置中,而不复制来自所述源矢量寄存器的被屏蔽矢量元素。
本发明的第二方面在于一种其上存储了 PackStore指令的机器可 访问媒体,其中所述PackStore指令包括标识存储器位置的自变量; 以及所述PackStore指令在^f皮处理器执行时,使所述处理器在所标识 的存储器位置处开始将来自源矢量寄存器的未屏蔽矢量元素复制到 连续的存储器位置中,而不复制祐岸蔽矢量元素。
本发明的第三方面在于一种其上存储了 LoadU叩ack指令的机器 可访问媒体,其中所述LoadUnpack指令包括标识存储器位置的自 变量;以及所述LoadU叩ack指令在被处理器执行时,使所述处理器 在所标识的存储器位置处开始将来自连续的存储器位置的数据项复 制到目标矢量寄存器的未屏蔽矢量元素中,而不修改所述目标矢量寄 存器的被屏蔽矢量元素。
本发明的笫四方面在于一种用于处理矢量指令的方法,所述方法 包括接收处理器指令,所述处理器指令具有指定矢量寄存器的源参 数、指定屏蔽寄存器的屏蔽参数和指定存储器位置的目的地参数;以 及响应接收到所述处理器指令,在所指定的存储器位置处开始将来自 所指定的矢量寄存器的未屏蔽矢量元素复制到连续的存储器位置,而 不复制被屏蔽矢量元素。
本发明的第五方面在于一种用于处理矢量指令的方法,所述方法 包括接收处理器指令,所述处理器指令具有指定存储器位置的源参 数、指定屏蔽寄存器的屏蔽参数和指定矢量寄存器的目的地参数;以 及响应接收到所述处理器指令,在所指定的存储器位置处开始将来自 连续的存储器位置的数据复制到所指定的矢量寄存器的未屏蔽矢量 元素中,而不将数据复制到所述指定的矢量寄存器的^L屏蔽矢量元素 中。
9本发明的第六方面在于一种计算机系统,包括存储器,所述存 储器存储PackStore指令;以及耦合到所述存储器的处理器,所述处 理器包括对所述PackStore指令进行解码的控制逻辑。
本发明的第七方面在于一种计算机系统,包括存储器,所述存 储器存储LoadU叩ack指令;以及耦合到所述存储器的处理器,所述 处理器包括对所述LoadUnpack指令进行解码的控制逻辑。


从所附权利要求、下文对一个或多个示例实施例的详细描迷以及 对应的附图,本发明的特征和优点将变得更为明显,其中
图l是图解其中可实现本发明的示例实施例的某些方面的适当的
数据处理环境的框图2是图1的处理系统中用于处理矢量的过程的示例实施例的流 程图;以及
图3和图4是图解图1的实施例中用于处理矢量的示例存储构造 的框图。
具体实施例方式
处理系统中的程序可以创建包含数千个元素的矢量。处理系统中 的处理器还可以包括一次只能保存16个元素的矢量寄存器。因此, 该程序可以一批16个地处理矢量中数千个元素。处理器还可以包括 多个处理单元或处理核(例如16个核),以用于并行地处理多个矢量元 素。例如,16个核能够在16个单独线程或执行流中并行地处理16个 矢量元素。
但是,在一些应用中,矢量的大多数元素通常将需要很少或不需 要处理。例如,光线跟踪程序可以使用矢量元素来表示光线,并且该 程序可以测试超过10000个光线并确定它们中仅99个从给定物体反 射。如果光线与给定物体相交,则光线跟踪程序可能需要对该光线元 素执行额外的处理,以便实现光线与物体相互作用。但是,对于不与 物体相交的大多数光线,则无需额外的处理。例如,程序的分支可以执行如下操作
If(ray—intersects—obj ect) {处理反射}
else
{不执行任何操作}。 光线跟踪程序可以使用条件语句(例如,矢量比较或"vcmp")以 确定矢量中的哪些元素需要处理,以及使用位(bit)屏蔽码或"写屏蔽 (writemask)"来记录结果。位映射因此可以"屏蔽"不需要处理的元 素。
当矢量包含许多元素时,情况有时是在应用中一个或多个条件检 查之后,很少几个矢量元素保持未屏蔽。如果此分支中有要执行的有 效处理而稀疏地布置了满足条件的元素,则相当大比例的矢量处理能 力可能被浪费。例如,涉及使用vcmp和写屏蔽的简单的if/then型语 句的程序分支可能导致卩艮少或甚至没有未屏蔽的元素纟皮处理,直到控 制流程中退出此分支为止。
因为需要大量时间处理矢量元素(例如要处理撞击物体的光线), 所以可以通过将(10000个光线中的)99个关注光线压缩(pack)到连续 的矢量元素块中来提高效率,从而可以一次16个地处理这99个元素。 在没有此类捆绑(bundling)的情况下,当问题集(problem set)稀疏时(即 当关注工作与相距远而非紧密捆绑在一起的存储器位置关联时),数据 并行处理可能效率非常低。例如,如果99个关注光线未压缩到连续 元素中,则每16个元素的批量可能只有很少或没有对于该批量要处 理的元素。因此,在处理该批量时,大多数核可能一直处于空闲。
除了对于光线跟踪应用有用外,将关注矢量元素捆绑在一起以进 行并行处理的技术还提供适于其他应用的优点,以及尤其对于有一个 或多个大输入数据集而处理需求稀疏的应用^^有益的。
本文公开描述一种类型的机器指令或处理器指令,其捆绑矢量寄 存器的所有未屏蔽的元素并将此新矢量(寄存器文件源的子集)在随意的元素对齐地址处开始存储到存储器中。出于解释本^^开的目的,这
种类型的指令称为PackStore指令。
本公开还描述另一种类型的处理器指令,该类型的处理器指令或 多或少地执行PackStore指令的逆操作。此另一种类型的指令从随意 存储器地址加栽元素,并将该数据"压缩恢复(unpack)"到目的地矢 量寄存器的未屏蔽元素中。出于解释本公开的目的,这种笫二种类型 的指令称为LoadUnpack指令。
PackStore指令允许程序员创建快速将来自矢量的数据分类到多
组数据项中,例如这多组数据项通过分支代码序列将各采用一个共用
控制路径。这些程序也可以使用LoadUnpack以在控制分支完成之后
快速地将从组中返回的数据项展开到这些数据项在数据结构中的原
位置中(例如展开到矢量寄存器中的原元素中)。因此,这些指令提供
排队和取消排队能力,这可以使得程序在许多矢量元素^皮屏蔽的状态
中较之仅使用常规矢量指令的程序花费较少的执行时间。
如下的伪代码说明用于处理稀疏数据集的示例方法 If(vl==v2)
(VCMPkl,vl,v2 {eq}
—现在屏蔽码kl = [1 00010000000000 1]—
-这样,仅对3个元素执行有效处理,但是使用16个
核-誦
在此示例中,这些元素中的仅3个元素以及由此这些核中大约3 个核实际将在执行有效工作(因为屏蔽码的仅3个位是1)。
相比之下,如下的伪代码在广泛的矢量寄存器组上执行比较,然 后将与有效屏蔽码(屏蔽码=1)关联的所有数据压缩到连续的存储器块中。
For (int i = 0; i < num—vector—elements; i++) {If(vl[i]==v^[i])— (VCMPkl,vl,v2 {eq}
12-國^L^,^;^kl = [1 00010000000000 1]—画 —这样,将V3[i]存储到[rax]-PackStore [rax] , v3 [i] {k 1} }
Rax += num—masks—set
} — —
For (int i = 0; i < num—masks—set; i++)
{ 使用l6个核一;I对16+元素执行有效处理-压缩恢复
虽然存在来自压缩和压缩恢复的开销,但是当需要工作的元素稀 疏且工作是重要的时候,此第二种方法通常效率更高。
此夕卜,在至少一个实施例中,PackStore和LoadUnpack还可以对 正在从存储器加栽到矢量寄存器中的数据以及对正在从矢量寄存器 存储到存储器中的数据执行即时(on-the-fly)格式转换。所支持的格式 转换可以包括多种不同格式对之间的单向或双向转换,例如8位与32 位(例如,uint8-〉float32 、 uint8-〉uint32) 、 16位与32位(例如, sintl6-〉float32、 sintl6-〉int32)等。在一个实施例中,()操作码可以使用 如下文的格式来指示期望的格式转换
LoadUnpackMN:指定每个数据项占据存储器中的M个字节, 并且将^皮转:换成N个字节以 <更加栽到占据N个字节的矢量元素中。
PackLoadOP:指定每个矢量元素占据矢量寄存器中的O个字 节,并且将被转换成要存储在存储器中的P个字节。
在其他实施例中还可以使用其他类型的转换指示(例如指令参数) 来指定期望的格式转换。
除了对于排队和取消排队有用外,这些指令还比要求存储器与整 个矢量对齐的矢量指令更具便利和效率。相比之下,PackStore和 LoadUnpack可以结合仅与矢量的元素的大小对齐的存储器位置来使 用。例如,程序可以执行8位至32位转换的LoadUnpack指令,在此 情况中可以从任何随意存储器指针进行加栽。下文提供有关PackStore
13和LoadUnpack指令的示例实现的其他细节。
图l是图解其中可实现本发明的示例实施例的某些方面的适当的 数据处理环境12的框图。数据处理环境12包括处理系统20,处理系 统20具有多种硬件组件82(例如一个或多个CPU或处理器22)以及多 种其他组件,这些组件可以经由一个或多个系统总线14或其他通信 路径或纟某体在通信上耦合。本么、开使用术语"总线,,来指共享的(例如 多站(multi-drop》通信路径以及点到点路径。每个处理器可以包括一个 或多个处理单元或核。这些核可以实现为超线程(HT)技术,或实现为 用于同时或基本同时执行多个线程或指令的任何其他合适技术。
处理器22可以在通信上耦合到一个或多个易失性或非易失性数 据存储设备(例如RAM 26、 ROM 42)、海量存储设备36(例如硬盘驱 动器)和/或其他设备或媒体(例如软盘、光存储装置、磁带、闪速存储 器、存储棒、数字多功能光盘(DVD)等)。出于解释本文公开的目的, 术语"只读存储器"和"ROM" —般可以用于指非易失性存储器设备, 例如可擦写可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、 闪速ROM、闪速存储器等。处理系统20使用RAM26作为主存储器。 此外,处理器22可以包括还可临时性用作主存储器的高速緩存存储 器。
处理器22还可以在通信上耦合到其他组件,例如视频控制器、 集成驱动器电子(E)E)控制器、小计算机系统接口(SCSI)控制器、通用 串行总线(USB)控制器、输A/输出(I/0)端口 28、输入设备、输出设备 (例如显示器)等。处理系统20中的芯片组34可以用于将多种硬件组 件互连。芯片组34可以包括一个或多个桥和/或集线器,以及其他逻 辑和存储组件。
可以至少部分地通it^输入设备(例如键盘、鼠标等)输入,和/或 通过从另 一个机器、生物测定反馈或其他输入源或信号接收的指令来 控制处理系统20。处理系统20可以利用至一个或多个远程数据处理 系统卯的一个或多个连接,例如通过网洛接口控制器(NIC)40、调制解调器或其他通信端口或耦4妄头。处理系统可以通过物理和/或逻辑网
络92(例如局域网(LAN)、广域网(WAN)、内联网、因特网等)来进行 互连。包含网络92的通信可以利用多种有线和/或无线短距离或长距 离载波和协议,包括射频(RF)、卫星、微波、电气和电子工程师协会 (正EE)802.11、 802.16、 802.20、蓝牙、光、红外线、电缆、激光等。 802.11的协议还可以称为无线保真(WiFi)协议。802.16的协议还可以 称为 WiMAX 或无线城域网协议, 目前在 grouper.ieee.org/groups/802/16/published.html处可获4寻有关这些"M 、i义的 信息。
一些组件可以实现为具有用于与总线通信的接口(例如外围组件 互连(PCI)连接器)的适配器卡。在一些实施例中, 一个或多个设备可 以使用诸如可编程或不可编程逻辑设备或阵列、专用集成电路(ASIC)、 嵌入式处理器、智能卡等组件实现为嵌入式控制器。
本发明可以参考诸如指令、函数、过程、数据结构、应用程序、 配置设置等的数据来描述。当这些数据被机器访问时,该机器可以通 过执行任务、定义抽象数据类型、建立低级硬件上下文和/或执行其他 操作来进行响应,下文将对此进行更详细的描述。该数据可以存储在 易失性和/或非易失性数据存储装置中。出于解释本公开的目的,术语 "程序"涵盖宽泛范围的软件组件和构造,包括应用程序、驱动程序、 进程、例行程序、方法、才莫块和子程序。术语"程序"可以用于指完 整的编译单元(即可以独立编译的指令集)、编译单元集合或编译单元
的一部分。因此,术语"程序"可以用于指在被处理系统执行时执行 一个或多个期望的操作的指令的任何集合。
在图1的实施例中,至少一个程序100存储在海量存储设备36 中,处理系统20可以将程序100复制到RAM26中并在处理器22上 执行程序100。程序100包括一个或多个矢量指令,例如LoadUnpack 指令和PackStore指令。可以将程序100和/或备选程序编写成使处理 器22使用LoadUnpack指令和PackStore指令来用于图形操作(例如光线跟踪),和/或用于多种其他目的(例如,文本处理、光栅化
(rasterization)、物理才莫拟等)。
在图1的实施例中,处理器22实现为包含多个核(例如处理核31、
处理核33.....处理核33n)的单个芯片封装。处理核31可以用作主
处理器,并且处理核33可以用作辅助核和协处理器。处理核33可以 用作例如能够执行SIMD指令的图形协处理器、图形处理单元(GPU) 或矢量处理单元(VPU)。
处理系统200中的附加处理核(例如处理核33n)也可以用作协处 理器和/或用作主处理器。例如,在一个实施例中,处理系统可以具有 ^^有一个主处理核和16个辅助处理核的CPU。这些核的一些或全部 能够彼此并行地执行指令。此外,每个单独的核能够同时执行两个或 两个以上指令。例如,每个核可以作为16宽幅(16-wide)矢量机器来 工作,从而并行地处理最多16个元素。对于具有多于16个元素的矢 量,软件可以将矢量分割成各包含16个元素(或其倍数)的子集,其中 两个或两个以上子集在两个或两个以上核上基本同时执行。而且,这 些核的一个或多个核可以是超标量(例如能够执行并行/SIMD操作和 标量操作)。而且,其他实施例中可以使用上面配置中的任何合适的变 化,例如具有更多或更少的辅助核的CPU等。
在图1的实施例中,处理核33包括执行单元130和一个或多个 寄存器文件150。寄存器文件150可以包含多个矢量寄存器(例如,矢 量寄存器V1、矢量寄存器V2、...、矢量寄存器Vn)和多个屏蔽寄存 器(例如,屏蔽寄存器M1、屏蔽寄存器M2、...、屏蔽寄存器Mn)。寄 存器文件还可以包括多个其他寄存器,例如跟踪用于在一个或多个执 行流或线程中执行的当前或下一个处理器指令的一个或多个指令指 针(IP)寄存器211以及其他类型的寄存器。
处理核33还包括解码器165以识别指令集中包含PackStore和 LoadUnpack指令的指令并将其解码,以便由执行单元130来执行。处 理核33还可以包括高速緩存存储器160。处理核31也可以包括诸如
16解码器、执行单元、高速^爰存存储器、寄存器文件等的组件。处理核
31、 33和33n以及处理器22还包括为理解本发明所不需要的其他电 路。
在图1的实施例中,解码器165用于将处理核33接收的指令解 码,执行单元130用于执行处理核33接收的指令。例如,解码器165 可以将处理器22接收的机器指令解码成控制信号和/或微代码入口 点。可以将这些控制信号和/或微代码入口点从解码器165转发到执行 单元130。
在备选实施例中,如图1中的虛线所示,处理核31中的解码器 167可以将处理器22接收的机器指令解码,而处理核31可以识别类 型为应由协处理器(例如核33)来执行的一些指令(例如PackStore和 LoadU叩ack)。可以将要从解码器167路由到另一个核的指令称为协 处理器指令。当识别出协处理器指令时,处理核31可以将该指令路 由到处理核33以用于执行。或者,主核可以向辅助核发送某些控制 信号,其中这些控制信号对应于要执行的协处理器指令。
在备选实施例中,不同的处理核可以驻留在单独的芯片封装上。 在其他实施例中,可以使用多于两个不同的处理器和/或处理核。在另 一个实施例中,处理系统可以包括含有单个处理核的单个处理器,其 中单个处理核中含有用于执行上述操作的功能(facility)。在任何情况 中,至少一个处理核能够执行捆绑矢量寄存器的未屏蔽元素并在指定 地址处开始将捆绑的元素存储到存储器中的至少一个指令,和/或执行 从指定的存储器地址加载元素并将数据压缩恢复到目的地矢量寄存 器的未屏蔽元素中的至少一个指令。例如,响应接收到PackStore指 令,解码器165可以使执行单元130内的矢量处理电路145执行所需 的压缩和存储。并且响应^妄收到LoadUnpack指令,解码器165可以 使4丸行单元130内的矢量处理电路145 4丸行所需的加载和压缩恢复。
图2是图1的处理系统中用于处理矢量的过程的示例实施例的流 程图。该过程开始于框210,其中解码器165从程序IOO接收处理器指令。程序100可以是用于例如显现(rendering)图形的程序。在框220 处,解码器165确定该指令是否是PackStore指令。如果指令是 PackStore指令,则解码器165将该指令或与该指令对应的信号派发到 执行单元130。如图框222处所示,响应接收到该输入,执行单元130 中的矢量处理电路145可以在指定的存储器位置处开始,将来自指定 矢量寄存器的未屏蔽矢量元素复制到存^l器。矢量处理电路145还可 以称为矢量处理单元145。确切地来说,矢量处理单元145可以将来 自未屏蔽元素的数据压缩到存储器中的一个连续存储空间中,下文将 结合图3对此更详细地进行解释。
但是,如果该指令不是PackStore指令,则过程可以从框220转 至框230,其图解解码器165确定该指令是否是LoadUnpack指令。如 果指令是LoadUnpack指令,则解码器165将该指令或与该指令对应 的信号派发到执行单元130。如图框232处所示,响应接收到该输入, 执行单元130中的矢量处理电路145可以在指定位置处开始将来自存 储器中的连续位置的数据复制到指定的矢量寄存器的未屏蔽矢量元 素中,其中指定的屏蔽寄存器中的数据指示哪些矢量元素被屏蔽。如 图框240处所示,如果该指令不是PackStore也不是LoadUnpack,则 处理器22可以使用更多或更少的常规技术来执行该指令。
图3是图解用于执行PackStore指令的示例自变量和存储构造的 框图。具体来说,图3示出PackStore指令的示例才莫板50。例如, PackStore模板50指示PackStore指令可以包含操作码52和多个自变 量或参数(例如目的地参数54、源参数56和屏蔽参数58)。在图3的 示例中,操作码52将指令识别为PackStore指令,目的地参数54指 定要用作结果的目的地的存储器位置,源参数56指定源矢量寄存器, 以及屏蔽参数58指定其位对应于指定的矢量寄存器中的元素的屏蔽 寄存器。
具体来说,图3图示才莫板50中的特定PackStore指令将屏蔽寄存 器M1与矢量寄存器VI关联。此外,图3中的右上方的表示出矢量寄存器V1中不同组的位如何对应于不同的矢量元素。例如,位31:0 包含元素a,位63:32包含元素b等。而且,屏蔽寄存器M1示出为与 矢量寄存器V1对齐,以说明屏蔽寄存器M1中的位对应于矢量寄存 器V1中的元素。例如,屏蔽寄存器M1中的前三个位(从右边起)包含 0,从而指示元素a、 b和c被屏蔽。除了对应于屏蔽寄存器M1中的 l的元素d、 e和n外,其余全部也都净皮屏蔽。图3中的右下方的表还 示出与存储器区域MA1内的不同位置关联的不同地址。例如,线性 地址ObO 1 OO(其中前缀Ob表示二进制符号)引用存储器区域MA1中的 元素E,线性地址0b0101引用存储器区域MA1中的元素F,等等。
如上所述,处理器22可以接收处理器指令,该处理器指令具有 指定矢量寄存器的源参数、指定屏蔽寄存器的屏蔽参数和指定存储器 位置的目的地参数。响应接收到处理器指令,处理器22可以在指定 的存储器位置处开始将与指定的屏蔽寄存器中的未屏蔽位对应的矢 量元素复制到连续的存储器位置中,而不复制与指定的屏蔽寄存器中 的4皮屏蔽位对应的矢量元素。
因此,如图从矢量寄存器V1内的元素d、 e和n引到存储器区域 MA1内的元素F、 G和H的箭头所示,PackStore指令50可以使处理 器22在指定的存储器位置处开始,将来自矢量寄存器VI的非连续元 素d、 e和n压缩到连续的存储器位置(例如,位置F、 G和H)。
图4是图解用于执行LoadUnpack指令的示例自变量和存储构造 的框图。具体来说,图4示出LoadUnpack指令的示例才莫板60。例如, LoadUnpack模板60指示LoadUnpack指令可以包含操作码()62和多 个自变量或参数(例如目的地参数64、源参数66和屏蔽参数68)。在 图4的示例中,操作码62识别指令为LoadUnpack指令,目的地参数 64指定要用作结果的目的地的源矢量寄存器,源参数56指定源存储 器位置,以及屏蔽参数68指定其位对应于指定的矢量寄存器中的元 素的屏蔽寄存器。
具体来说,图4图示模板60中的特定LoadUnpack指令将屏蔽寄
19存器M1与矢量寄存器VI关联。此外,图4中的右上方的表示出矢 量寄存器V1中不同组的位如何对应于不同的矢量元素。而且,屏蔽 寄存器M1示为与矢量寄存器VI对齐,以说明屏蔽寄存器M1中的 位对应于矢量寄存器VI中的元素。图4中的右下方的表还示出与存 储器区域MA1内的不同位置关联的不同地址。
如上所述,处理器22可以接收处理器指令,该处理器指令具有 指定存储器位置的源参数、指定屏蔽寄存器的屏蔽参数和指定矢量寄 存器的目的地参数。响应接收到处理器指令,处理器22可以在指定 的存储器位置处开始,将来自连续的存储器位置的数据项复制到与指 定的屏蔽寄存器中的未屏蔽位对应的指定的矢量寄存器的元素中,而 不将数据复制到与指定的屏蔽寄存器中的被屏蔽位对应的矢量元素 中。
因此,如图分别从存储器区域MA1内的位置F、 G和H引到矢 量寄存器V1内的元素d、 e和n的箭头所示,LoadUnpack指令60可 以使处理器22在指定的存储器位置处开始(例如位置F,在线性地址 0b0101处),将来自连续的存储器位置(例如,位置F、 G和H)的数据 复制到矢量寄存器VI的非连续元素中。
因此,正如所描述的,PackStore类型的指令允许将选定元素从源 矢量移动或复制到连续的存储器位置,而LoadUnpack类型的指令允 许将存储器中的连续数据项移动或复制到矢量寄存器内的选定元素 中。在两种情况中,映射都至少部分基于包含与矢量寄存器的元素对 应的屏蔽码值的屏蔽寄存器。程序员能够以LoadUnpack和PackStore 替换他们的代码中的加载和存储而额外建立指令(如果有的话)最少, 就此意义而言这些类型的操作常常可以是"无开销的"或具有最小的 性能影响。
根据本文描述和说明的原理和示例实施例,将认识到在不背离此 类原理的前提下可以在设置和细节上对说明的实施例进行修改。例 如,在图3和图4的实施例中,由线性地址引用存储器位置(例如通过地址位定义64字节超高速緩存存储器线内的位置)。但是,在其他实 施例中,还可以使用其他技术来标识存储器位置。
而且,前文论述着重于特定实施例,但是也可设想其他配置。具 体来说,即使本文中使用诸如"在一个实施例中"、"在另一个实施例 中"等的表述,这些短语仍意味着普适性地引述实施例可能性,但是 无意将本发明仅限于特定的实施例配置。正如本文使用的,这些术语 可以引述可组合到其他实施例中的同 一个或不同实施例。
相似地,虽然示例过程是结合按特定次序执行的特定操作来描述 的,但是可以对这些过程进行多种修改以得到本发明的多种备选实施 例。例如,备选实施例可以包括所使用的操作比所公开的全部操作少 的过程、使用附加的操作的过程、按不同次序使用相同操作的过程、 以及其中对本文/^开的个别操作进行组合、细分或更改的过程。
本发明的备选实施例还包括对用于执行本发明操作的指令进行 编码的机器可访问々某体。此类实施例也可以称为程序产品。此类才几器 可访问媒体可以包括但不限于,诸如软盘、硬盘、CD-ROM、 ROM和 RAM的存储媒体;以及由机器或设备制造或形成的其他可检测的微 粒设置(arrangements of particles)。还可以在分布式环境中使用指令, 并且可以本地和/或远程存储指令以供单处理器或多处理器机器访问。
还应该理解,本文描述的硬件和软件组件表示合理地自包含 (self-contained)从而可以彼此基本独立地进行设计、构造或更新的功能 元件。在不同实施例中可以将用于提供所描述和图示的功能性的控制 逻辑实现为硬件、软件或硬件与软件的组合。例如,处理器中的执行 逻辑可以包含用于执行提取、解码和执行机器指令所需的操作的电路 和/或微代码。
正如本文所使用的,术语"处理系统"和"数据处理系统"应广 义地涵盖单个机器、在通信上耦合的机器的系统或一起工作的设备。 示例处理系统包括但不限于,分布式计算系统、超级计算机、高性能 计算系统、计算集群(computing cluster)、大型计算机、微型计算才凡、
21客户机服务器系统、个人计算机、工作站、服务器、便携式计算才几、
膝上型计算机、平板计算机、电话、个人数字助理(PDA)、手持设备、 例如音频和/或视频设备的娱乐设备、以及用于处理或传送信息的其他 平台或设备。
鉴于从本文描述的示例实施例可容易地得到范围广泛的多种有 用置换,本文的详细描述应仅视为说明性的,并且不应视为限制本发 明的范围。因此,作为本发明要求权利的是符合所附权利要求范围和 精神的所有实现以及这些实现的所有等效物。
权利要求
1. 一种处理器,包括执行逻辑,所述执行逻辑通过执行包括如下的操作来执行处理器指令在指定的存储器位置处开始将来自源矢量寄存器的未屏蔽矢量元素复制到连续的存储器位置中,而不复制来自所述源矢量寄存器的被屏蔽矢量元素。
2. 如权利要求1所述的处理器,其中所述未屏蔽矢量元素包括与所述处理器的屏蔽寄存器中具有笫 一值的位对应的矢量元素;以及所述被屏蔽矢量元素包括与所述屏蔽寄存器中具有第二值的位 对应的矢量元素。
3. 如权利要求1所述的处理器,还包括矢量寄存器,所述矢量寄存器保存多个矢量元素,所述矢量寄存 器可操作以用作所述源矢量寄存器;以及屏蔽寄存器,所述屏蔽寄存器保存至少等于矢量元素的数量的多 个屏蔽位。
4. 如权利要求1所述的处理器,其中所述指定的存储器位置包括所述处理器指令的自变量所指定的存储器位置o
5. 如权利要求1所述的处理器,其中 所述处理器指令包括第一指令,以及响应带有标识存储器位置的自变量的笫二处理器指令,所述执行 逻辑可操作以用于在所标识的存储器位置处开始将来自连续的存储 器位置的数据项复制到目的地矢量寄存器的未屏蔽矢量元素中,而不 修改所述目的地矢量寄存器的^皮屏蔽矢量元素。
6. 如权利要求5所述的处理器,其中 所述处理器包括多个矢量寄存器和多个屏蔽寄存器;以及 所述第一处理器指令和第二处理器指令各包括标识所述多个矢量寄存器当中期望的矢量寄存器、标识所述多个屏蔽寄存器当中对应 的屏蔽寄存器以及标识期望的存储器位置的自变量。
7. 如权利要求5所述的处理器,其中所述第一处理器指令包括 PackStore指令,而所述第二处理器指令包括LoadU叩ack指令。
8. 如权利要求1所述的处理器,其中 所述处理器包括多个矢量寄存器;以及所述处理器指令包括源自变量,所述源自变量用于标识所述多个 矢量寄存器当中期望的矢量寄存器。
9. 如权利要求1所述的处理器,其中 所述处理器包括多个屏蔽寄存器;以及所述处理器指令包括屏蔽自变量,所述屏蔽自变量标识所述多个 屏蔽寄存器当中期望的屏蔽寄存器。
10. 如权利要求1所述的处理器,其中 所述处理器包括多个矢量寄存器和多个屏蔽寄存器;以及 所述处理器指令包括源自变量和屏蔽自变量,所述源自变量用于标识所述多个矢量寄存器当中期望的矢量寄存器,以及所述屏蔽自变 量用于标识所述多个屏蔽寄存器当中对应的屏蔽寄存器。
11. 如权利要求1所述的处理器,还包括多个处理核,所述多个处理核中至少两个包括可操作以执行 PackStore指令和LoadUnpack指令的电路。
12. 如权利要求1所述的处理器,其中所述处理器指令包括转换 指示,所述电路还可操作以在将矢量元素存储在存储器中之前,至少 部分地基于所述转换指示来对所述矢量元素执行格式转换。
13. —种其上存储了 PackStore指令的机器可访问々某体,其中 所述PackStore指令包括标识存储器位置的自变量;以及所述PackStore指令在>^皮处理器执行时,使所述处理器在所标识 的存储器位置处开始将来自源矢量寄存器的未屏蔽矢量元素复制到 连续的存储器位置中,而不复制被屏蔽矢量元素。
14. 如权利要求13所述的机器可访问J某体,其中所述PackStore 指令还包括源自变量,所述源自变量标识所述源矢量寄存器;以及 屏蔽自变量,所述屏蔽自变量标识对应的屏蔽寄存器。
15. 如权利要求13所述的机器可访问4某体,其中所述PackStore 指令还包括转换指示,所述转换指示指定在所述处理器将矢量元素存储在存 储器中之前要对所述矢量元素执行的格式转换。
16. —种其上存储了 LoadUnpack指令的机器可访问々某体,其中 所述LoadUnpack指令包括标识存储器位置的自变量;以及 所迷LoadUnpack指令在被处理器执行时,使所迷处理器在所标识的存储器位置处开始将来自连续的存储器位置的数据项复制到目 标矢量寄存器的未屏蔽矢量元素中,而不修改所述目标矢量寄存器的 被屏蔽矢量元素。
17. 如权利要求16所述的机器可访问媒体,其中所述LoadU叩ack 指令还包括目标自变量,所述目标自变量标识所述目标矢量寄存器;以及 屏蔽自变量,所述屏蔽自变量标识对应的屏蔽寄存器。
18. 如权利要求16所述的机器可访问媒体,其中所述LoadUnpack 指令还包括转换指示,所述转换指示指定在所述处理器将数据项存储在所述 目标矢量寄存器中之前要对所述数据项执行的格式转换。
19. 一种用于处理矢量指令的方法,所述方法包括 接收处理器指令,所述处理器指令具有指定矢量寄存器的源参数、指定屏蔽寄存器的屏蔽参数和指定存储器位置的目的地参数;以及响应接收到所述处理器指令,在所指定的存储器位置处开始将来 自所指定的矢量寄存器的未屏蔽矢量元素复制到连续的存储器位置, 而不复制 一皮屏蔽矢量元素。
20. 如权利要求19所述的方法,其中 每个矢量元素占据所述矢量寄存器中的预定数量的位; 所述处理器指令包括转换指示;响应接收到所述处理器指令,在将矢量元素存储在存储器中之前 根据所述转换指示自动转换所述矢量元素;以及所述矢量元素作为占据与所述预定数量的位不同数量的位的数 据项来存储。
21. 如权利要求19所述的方法,其中;所述未屏蔽矢量元素包括与所指定的屏蔽寄存器中的未屏蔽位 对应的矢量元素;以及所述被屏蔽矢量元素包括与所指定的屏蔽寄存器中的被屏蔽位 对应的矢量元素。
22. —种用于处理矢量指令的方法,所述方法包括 接收处理器指令,所述处理器指令具有指定存储器位置的源参数、指定屏蔽寄存器的屏蔽参数和指定矢量寄存器的目的地参数;以 及响应接收到所述处理器指令,在所指定的存储器位置处开始将来 自连续的存储器位置的数椐复制到所指定的矢量寄存器的未屏蔽矢 量元素中,而不将数据复制到所述指定的矢量寄存器的,皮屏蔽矢量元 素中。
23. 如权利要求22所述的方法,其中; 每个数据项占据存储器中预定数量的位; 所述处理器指令包括转换指示;响应接收到所述处理器指令,在将数据项存储在所述目的地矢量寄存器中之前根据所述转换指示自动转换所述数据项;以及所述数据项作为占据与所述预定数量的位不同数量的位的矢量 元素来被存储。
24. 如权利要求22所述的方法,其中;所述未屏蔽矢量元素包括与所指定的屏蔽寄存器中的未屏蔽位 对应的矢量元素;以及所述被屏蔽矢量元素包括与所指定的屏蔽寄存器中的被屏蔽位 对应的矢量元素。
25. —种计算机系统,包括存储器,所述存储器存储PackStore指令;以及 耦合到所述存储器的处理器,所述处理器包括对所述PackStore 指令进行解码的控制逻辑。
26. 如权利要求25所述的计算机系统,其中 所述处理器包括多个矢量寄存器和多个屏蔽寄存器,以及 所述PackStore指令包括源自变量和屏蔽自变量,所述源自变量用于标识所述多个矢量寄存器当中期望的矢量寄存器,以及所述屏蔽 自变量用于标识所迷多个屏蔽寄存器当中对应的屏蔽寄存器。
27. 如权利要求25所述的计算机系统,其中所述处理器包括多 个处理核,所述多个处理核中至少两个包括可操作以执行PackStore 指令的电路。
28. —种计算机系统,包括存储器,所述存储器存储LoadUnpack指令;以及 耦合到所述存储器的处理器,所述处理器包括对所述LoadUnpack 指令进行解码的控制逻辑。
29. 如权利要求28所述的计算机系统,其中 所述处理器包括多个矢量寄存器和多个屏蔽寄存器;以及 所述LoadUnpack指令包括目标自变量和屏蔽自变量,所述目标自变量用于标识所述多个矢量寄存器当中期望的矢量寄存器,以及所述屏蔽自变量用于标识所述多个屏蔽寄存器当中对应的屏蔽寄存器。
30.如权利要求25所述的计算机系统,其中所述处理器包括多 个处理核,所述多个处理核中至少两个包括可操作以执行LoadUnpack 指令的电路。
全文摘要
本发明为用于处理矢量数据的方法、设备和指令,一种计算机处理器包括用于执行LoadUnpack和PackStore指令的控制逻辑。在一个实施例中,处理器包括矢量寄存器和屏蔽码寄存器。响应含有指定存储器位置的自变量的PackStore指令,该处理器中的电路在所指定的存储器位置处开始将来自矢量寄存器的未屏蔽矢量元素复制到连续的存储器位置中,而不复制被屏蔽矢量元素。响应LoadUnpack指令,该电路在所标识的存储器位置处开始将来自连续的存储器位置的数据项复制到矢量寄存器的未屏蔽矢量元素中,而不将数据复制到被屏蔽矢量元素。还描述了其他实施例并且对这些其他实施例要求权利。
文档编号G06F9/38GK101482810SQ20081018973
公开日2009年7月15日 申请日期2008年12月26日 优先权日2007年12月26日
发明者R·D·卡温 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1