CN103500082A - 用于处理矢量数据的方法、设备和指令 - Google Patents
用于处理矢量数据的方法、设备和指令 Download PDFInfo
- Publication number
- CN103500082A CN103500082A CN201310464160.7A CN201310464160A CN103500082A CN 103500082 A CN103500082 A CN 103500082A CN 201310464160 A CN201310464160 A CN 201310464160A CN 103500082 A CN103500082 A CN 103500082A
- Authority
- CN
- China
- Prior art keywords
- vector
- register
- vector element
- parameter
- instruction
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000012545 processing Methods 0.000 title abstract description 36
- 230000004044 response Effects 0.000 claims abstract description 20
- 238000005192 partition Methods 0.000 claims description 22
- 238000011282 treatment Methods 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 17
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 230000008878 coupling Effects 0.000 claims description 5
- 238000010168 coupling process Methods 0.000 claims description 5
- 238000005859 coupling reaction Methods 0.000 claims description 5
- 230000008859 change Effects 0.000 claims description 4
- 230000014759 maintenance of location Effects 0.000 claims 3
- 230000008569 process Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 8
- 238000007906 compression Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 230000000712 assembly Effects 0.000 description 5
- 238000000429 assembly Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000013144 data compression Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 241001417495 Serranidae Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000009877 rendering Methods 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/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/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/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
本发明的名称为用于处理矢量数据的方法、设备和指令,一种计算机处理器包括用于执行LoadUnpack和PackStore指令的控制逻辑。在一个实施例中,处理器包括矢量寄存器和屏蔽码寄存器。响应含有指定存储器位置的自变量的PackStore指令,该处理器中的电路在所指定的存储器位置处开始将来自矢量寄存器的未屏蔽矢量元素复制到连续的存储器位置中,而不复制被屏蔽矢量元素。响应LoadUnpack指令,该电路在所标识的存储器位置处开始将来自连续的存储器位置的数据项复制到矢量寄存器的未屏蔽矢量元素中,而不将数据复制到被屏蔽矢量元素。还描述了其他实施例并且对这些其他实施例要求权利。
Description
本分案申请的母案申请日为2008年12月26日、申请号为200810189736.2、发明名称为“用于处理矢量数据的方法、设备和指令”。
技术领域
本发明公开一般涉及数据处理的领域,更具体地说,涉及用于处理矢量数据的方法和相关设备。
背景技术
数据处理系统可以包括诸如中央处理单元(CPU)、随机存取存储器(RAM)、只读存储器(ROM)等的硬件资源。处理系统还可以包括诸如基本输入/输出系统(BIOS)、虚拟机监视器(VMM)和一个或多个操作系统(OS)的软件资源。
CPU可以提供对处理矢量的硬件支持。矢量是保存多个连续数据项的数据结构。大小为M的矢量寄存器可以包含大小为O的N个矢量元素,其中N=M/O。例如,64字节矢量寄存器可以划分成(a)64个矢量元素,其中每个元素保存占据1个字节的数据项,(b)32个矢量元素,其中每个元素保存各占据2个字节(或一个“字”)的数据项,(c)16个矢量元素以保存各占据4个字节(或一个“双字()”)的数据项,或(d)8个矢量元素以保存各占据8个字节或(或一个“四倍字长()”)的数据项。
为了提供数据级并行性,CPU可以支持单个指令多个数据(SIMD)操作。SIMD操作涉及对多个数据项应用相同的操作。
例如,响应单个SIMD相加指令,CPU可以将一个矢量中的每个元素加到另一个矢量中的对应元素。CPU可以包括多个处理核以便利于并行运算。
发明内容
根据第一实施例,提供了一种用于处理矢量指令的方法,所述方法包括:
接收指定矢量元素要占据的至少一个可变分区大小的处理器指令,所述处理器指令具有指定存储器位置的源参数、指定屏蔽寄存器的屏蔽参数和指定矢量寄存器的目的地参数;以及
响应于所述处理器指令,在所指定的存储器位置处开始,将数据从存储器位置复制到所指定的矢量寄存器的未屏蔽矢量元素中,而不将数据复制到所指定的矢量寄存器的被屏蔽矢量元素中。
根据第二实施例,提供了一种处理器,包括:
控制逻辑,对指定矢量元素要占据的至少一个可变分区大小的处理器指令进行解码,所述处理器指令具有指定存储器位置的源参数、指定屏蔽寄存器的屏蔽参数和指定矢量寄存器的目的地参数;以及
执行逻辑,响应于解码的处理器指令,在所指定的存储器位置处开始,将数据从存储器位置复制到所指定的矢量寄存器的未屏蔽矢量元素中,而不将数据复制到所指定的矢量寄存器的被屏蔽矢量元素中。
根据第三实施例,提供了一种计算机系统,包括:
存储器,存储指定矢量元素要占据的至少一个可变分区大小的处理器指令,所述处理器指令具有指定存储器位置的源参数、指定屏蔽寄存器的屏蔽参数和指定矢量寄存器的目的地参数;以及
处理器,与所述存储器耦合,所述处理器包括用于对处理器指令进行解码的控制逻辑,以及执行逻辑,响应于解码的处理器指令,在所指定的存储器位置处开始,将数据从存储器位置复制到所指定的矢量寄存器的未屏蔽矢量元素中,而不将数据复制到所指定的矢量寄存器的被屏蔽矢量元素中。
本发明的第一方面在于一种处理器,包括:执行逻辑,所述执行逻辑通过执行包括如下的操作来执行处理器指令:在指定的存储器位置处开始将来自源矢量寄存器的未屏蔽矢量元素复制到连续的存储器位置中,而不复制来自所述源矢量寄存器的被屏蔽矢量元素。
本发明的第二方面在于一种其上存储了PackStore指令的机器可访问媒体,其中:所述PackStore指令包括标识存储器位置的自变量;以及所述PackStore指令在被处理器执行时,使所述处理器在所标识的存储器位置处开始将来自源矢量寄存器的未屏蔽矢量元素复制到连续的存储器位置中,而不复制被屏蔽矢量元素。
本发明的第三方面在于一种其上存储了LoadUnpack指令的机器可访问媒体,其中:所述LoadUnpack指令包括标识存储器位置的自变量;以及所述LoadUnpack指令在被处理器执行时,使所述处理器在所标识的存储器位置处开始将来自连续的存储器位置的数据项复制到目标矢量寄存器的未屏蔽矢量元素中,而不修改所述目标矢量寄存器的被屏蔽矢量元素。
本发明的第四方面在于一种用于处理矢量指令的方法,所述方法包括:接收处理器指令,所述处理器指令具有指定矢量寄存器的源参数、指定屏蔽寄存器的屏蔽参数和指定存储器位置的目的地参数;以及响应接收到所述处理器指令,在所指定的存储器位置处开始将来自所指定的矢量寄存器的未屏蔽矢量元素复制到连续的存储器位置,而不复制被屏蔽矢量元素。
本发明的第五方面在于一种用于处理矢量指令的方法,所述方法包括:接收处理器指令,所述处理器指令具有指定存储器位置的源参数、指定屏蔽寄存器的屏蔽参数和指定矢量寄存器的目的地参数;以及响应接收到所述处理器指令,在所指定的存储器位置处开始将来自连续的存储器位置的数据复制到所指定的矢量寄存器的未屏蔽矢量元素中,而不将数据复制到所述指定的矢量寄存器的被屏蔽矢量元素中。
本发明的第六方面在于一种计算机系统,包括:存储器,所述存储器存储PackStore指令;以及耦合到所述存储器的处理器,所述处理器包括对所述PackStore指令进行解码的控制逻辑。
本发明的第七方面在于一种计算机系统,包括:存储器,所述存储器存储LoadUnpack指令;以及耦合到所述存储器的处理器,所述处理器包括对所述LoadUnpack指令进行解码的控制逻辑。
附图说明
从所附权利要求、下文对一个或多个示例实施例的详细描述以及对应的附图,本发明的特征和优点将变得更为明显,其中:
图1是图解其中可实现本发明的示例实施例的某些方面的适当的数据处理环境的框图;
图2是图1的处理系统中用于处理矢量的过程的示例实施例的流程图;以及
图3和图4是图解图1的实施例中用于处理矢量的示例存储构造的框图。
具体实施方式
处理系统中的程序可以创建包含数千个元素的矢量。处理系统中的处理器还可以包括一次只能保存16个元素的矢量寄存器。因此,该程序可以一批16个地处理矢量中数千个元素。处理器还可以包括多个处理单元或处理核(例如16个核),以用于并行地处理多个矢量元素。例如,16个核能够在16个单独线程或执行流中并行地处理16个矢量元素。
但是,在一些应用中,矢量的大多数元素通常将需要很少或不需要处理。例如,光线跟踪程序可以使用矢量元素来表示光线,并且该程序可以测试超过10000个光线并确定它们中仅99个从给定物体反射。如果光线与给定物体相交,则光线跟踪程序可能需要对该光线元素执行额外的处理,以便实现光线与物体相互作用。但是,对于不与物体相交的大多数光线,则无需额外的处理。例如,程序的分支可以执行如下操作:
光线跟踪程序可以使用条件语句(例如,矢量比较或“vcmp”)以确定矢量中的哪些元素需要处理,以及使用位(bit)屏蔽码或“写屏蔽(writemask)”来记录结果。位映射因此可以“屏蔽”不需要处理的元素。
当矢量包含许多元素时,情况有时是在应用中一个或多个条件检查之后,很少几个矢量元素保持未屏蔽。如果此分支中有要执行的有效处理而稀疏地布置了满足条件的元素,则相当大比例的矢量处理能力可能被浪费。例如,涉及使用vcmp和写屏蔽的简单的if/then型语句的程序分支可能导致很少或甚至没有未屏蔽的元素被处理,直到控制流程中退出此分支为止。
因为需要大量时间处理矢量元素(例如要处理撞击物体的光线),所以可以通过将(10000个光线中的)99个关注光线压缩(pack)到连续的矢量元素块中来提高效率,从而可以一次16个地处理这99个元素。在没有此类捆绑(bundling)的情况下,当问题集(problemset)稀疏时(即当关注工作与相距远而非紧密捆绑在一起的存储器位置关联时),数据并行处理可能效率非常低。例如,如果99个关注光线未压缩到连续元素中,则每16个元素的批量可能只有很少或没有对于该批量要处理的元素。因此,在处理该批量时,大多数核可能一直处于空闲。
除了对于光线跟踪应用有用外,将关注矢量元素捆绑在一起以进行并行处理的技术还提供适于其他应用的优点,以及尤其对于有一个或多个大输入数据集而处理需求稀疏的应用是有益的。
本文公开描述一种类型的机器指令或处理器指令,其捆绑矢量寄存器的所有未屏蔽的元素并将此新矢量(寄存器文件源的子集)在随意的元素对齐地址处开始存储到存储器中。出于解释本公开的目的,这种类型的指令称为PackStore指令。
本公开还描述另一种类型的处理器指令,该类型的处理器指令或多或少地执行PackStore指令的逆操作。此另一种类型的指令从随意存储器地址加载元素,并将该数据“压缩恢复(unpack)”到目的地矢量寄存器的未屏蔽元素中。出于解释本公开的目的,这种第二种类型的指令称为LoadUnpack指令。
PackStore指令允许程序员创建快速将来自矢量的数据分类到多组数据项中,例如这多组数据项通过分支代码序列将各采用一个共用控制路径。这些程序也可以使用LoadUnpack以在控制分支完成之后快速地将从组中返回的数据项展开到这些数据项在数据结构中的原位置中(例如展开到矢量寄存器中的原元素中)。因此,这些指令提供排队和取消排队能力,这可以使得程序在许多矢量元素被屏蔽的状态中较之仅使用常规矢量指令的程序花费较少的执行时间。
如下的伪代码说明用于处理稀疏数据集的示例方法:
在此示例中,这些元素中的仅3个元素以及由此这些核中大约3个核实际将在执行有效工作(因为屏蔽码的仅3个位是1)。
相比之下,如下的伪代码在广泛的矢量寄存器组上执行比较,然后将与有效屏蔽码(屏蔽码=1)关联的所有数据压缩到连续的存储器块中。
压缩恢复
虽然存在来自压缩和压缩恢复的开销,但是当需要工作的元素稀疏且工作是重要的时候,此第二种方法通常效率更高。
此外,在至少一个实施例中,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和LoadUnpack指令的示例实现的其他细节。
图1是图解其中可实现本发明的示例实施例的某些方面的适当的数据处理环境12的框图。数据处理环境12包括处理系统20,处理系统20具有多种硬件组件82(例如一个或多个CPU或处理器22)以及多种其他组件,这些组件可以经由一个或多个系统总线14或其他通信路径或媒体在通信上耦合。本公开使用术语“总线”来指共享的(例如多站(multi-drop))通信路径以及点到点路径。每个处理器可以包括一个或多个处理单元或核。这些核可以实现为超线程(HT)技术,或实现为用于同时或基本同时执行多个线程或指令的任何其他合适技术。
处理器22可以在通信上耦合到一个或多个易失性或非易失性数据存储设备(例如RAM26、ROM42)、海量存储设备36(例如硬盘驱动器)和/或其他设备或媒体(例如软盘、光存储装置、磁带、闪速存储器、存储棒、数字多功能光盘(DVD)等)。出于解释本文公开的目的,术语“只读存储器”和“ROM”一般可以用于指非易失性存储器设备,例如可擦写可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、闪速ROM、闪速存储器等。处理系统20使用RAM26作为主存储器。此外,处理器22可以包括还可临时性用作主存储器的高速缓存存储器。
处理器22还可以在通信上耦合到其他组件,例如视频控制器、集成驱动器电子(IDE)控制器、小计算机系统接口(SCSI)控制器、通用串行总线(USB)控制器、输入/输出(I/O)端口28、输入设备、输出设备(例如显示器)等。处理系统20中的芯片组34可以用于将多种硬件组件互连。芯片组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处可获得有关这些协议的信息。
一些组件可以实现为具有用于与总线通信的接口(例如外围组件互连(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)。
处理系统20()中的附加处理核(例如处理核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也可以包括诸如解码器、执行单元、高速缓存存储器、寄存器文件等的组件。处理核31、33和33n以及处理器22还包括为理解本发明所不需要的其他电路。
在图1的实施例中,解码器165用于将处理核33接收的指令解码,执行单元130用于执行处理核33接收的指令。例如,解码器165可以将处理器22接收的机器指令解码成控制信号和/或微代码入口点。可以将这些控制信号和/或微代码入口点从解码器165转发到执行单元130。
在备选实施例中,如图1中的虚线所示,处理核31中的解码器167可以将处理器22接收的机器指令解码,而处理核31可以识别类型为应由协处理器(例如核33)来执行的一些指令(例如PackStore和LoadUnpack)。可以将要从解码器167路由到另一个核的指令称为协处理器指令。当识别出协处理器指令时,处理核31可以将该指令路由到处理核33以用于执行。或者,主核可以向辅助核发送某些控制信号,其中这些控制信号对应于要执行的协处理器指令。
在备选实施例中,不同的处理核可以驻留在单独的芯片封装上。在其他实施例中,可以使用多于两个不同的处理器和/或处理核。在另一个实施例中,处理系统可以包括含有单个处理核的单个处理器,其中单个处理核中含有用于执行上述操作的功能(facility)。在任何情况中,至少一个处理核能够执行捆绑矢量寄存器的未屏蔽元素并在指定地址处开始将捆绑的元素存储到存储器中的至少一个指令,和/或执行从指定的存储器地址加载元素并将数据压缩恢复到目的地矢量寄存器的未屏蔽元素中的至少一个指令。例如,响应接收到PackStore指令,解码器165可以使执行单元130内的矢量处理电路145执行所需的压缩和存储。并且响应接收到LoadUnpack指令,解码器165可以使执行单元130内的矢量处理电路145执行所需的加载和压缩恢复。
图2是图1的处理系统中用于处理矢量的过程的示例实施例的流程图。该过程开始于框210,其中解码器165从程序100接收处理器指令。程序100可以是用于例如显现(rendering)图形的程序。在框220处,解码器165确定该指令是否是PackStore指令。如果指令是PackStore指令,则解码器165将该指令或与该指令对应的信号派发到执行单元130。如图框222处所示,响应接收到该输入,执行单元130中的矢量处理电路145可以在指定的存储器位置处开始,将来自指定矢量寄存器的未屏蔽矢量元素复制到存储器。矢量处理电路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与矢量寄存器V1关联。此外,图3中的右上方的表示出矢量寄存器V1中不同组的位如何对应于不同的矢量元素。例如,位31:0包含元素a,位63:32包含元素b等。而且,屏蔽寄存器M1示出为与矢量寄存器V1对齐,以说明屏蔽寄存器M1中的位对应于矢量寄存器V1中的元素。例如,屏蔽寄存器M1中的前三个位(从右边起)包含0,从而指示元素a、b和c被屏蔽。除了对应于屏蔽寄存器M1中的1的元素d、e和n外,其余全部也都被屏蔽。图3中的右下方的表还示出与存储器区域MA1内的不同位置关联的不同地址。例如,线性地址0b0100(其中前缀0b表示二进制符号)引用存储器区域MA1中的元素E,线性地址0b0101引用存储器区域MA1中的元素F,等等。
如上所述,处理器22可以接收处理器指令,该处理器指令具有指定矢量寄存器的源参数、指定屏蔽寄存器的屏蔽参数和指定存储器位置的目的地参数。响应接收到处理器指令,处理器22可以在指定的存储器位置处开始将与指定的屏蔽寄存器中的未屏蔽位对应的矢量元素复制到连续的存储器位置中,而不复制与指定的屏蔽寄存器中的被屏蔽位对应的矢量元素。
因此,如图从矢量寄存器V1内的元素d、e和n引到存储器区域MA1内的元素F、G和H的箭头所示,PackStore指令50可以使处理器22在指定的存储器位置处开始,将来自矢量寄存器V1的非连续元素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指令将屏蔽寄存器M1与矢量寄存器V1关联。此外,图4中的右上方的表示出矢量寄存器V1中不同组的位如何对应于不同的矢量元素。而且,屏蔽寄存器M1示为与矢量寄存器V1对齐,以说明屏蔽寄存器M1中的位对应于矢量寄存器V1中的元素。图4中的右下方的表还示出与存储器区域MA1内的不同位置关联的不同地址。
如上所述,处理器22可以接收处理器指令,该处理器指令具有指定存储器位置的源参数、指定屏蔽寄存器的屏蔽参数和指定矢量寄存器的目的地参数。响应接收到处理器指令,处理器22可以在指定的存储器位置处开始,将来自连续的存储器位置的数据项复制到与指定的屏蔽寄存器中的未屏蔽位对应的指定的矢量寄存器的元素中,而不将数据复制到与指定的屏蔽寄存器中的被屏蔽位对应的矢量元素中。
因此,如图分别从存储器区域MA1内的位置F、G和H引到矢量寄存器V1内的元素d、e和n的箭头所示,LoadUnpack指令60可以使处理器22在指定的存储器位置处开始(例如位置F,在线性地址0b0101处),将来自连续的存储器位置(例如,位置F、G和H)的数据复制到矢量寄存器V1的非连续元素中。
因此,正如所描述的,PackStore类型的指令允许将选定元素从源矢量移动或复制到连续的存储器位置,而LoadUnpack类型的指令允许将存储器中的连续数据项移动或复制到矢量寄存器内的选定元素中。在两种情况中,映射都至少部分基于包含与矢量寄存器的元素对应的屏蔽码值的屏蔽寄存器。程序员能够以LoadUnpack和PackStore替换他们的代码中的加载和存储而额外建立指令(如果有的话)最少,就此意义而言这些类型的操作常常可以是“无开销的”或具有最小的性能影响。
根据本文描述和说明的原理和示例实施例,将认识到在不背离此类原理的前提下可以在设置和细节上对说明的实施例进行修改。例如,在图3和图4的实施例中,由线性地址引用存储器位置(例如通过地址位定义64字节超高速缓存存储器线内的位置)。但是,在其他实施例中,还可以使用其他技术来标识存储器位置。
而且,前文论述着重于特定实施例,但是也可设想其他配置。具体来说,即使本文中使用诸如“在一个实施例中”、“在另一个实施例中”等的表述,这些短语仍意味着普适性地引述实施例可能性,但是无意将本发明仅限于特定的实施例配置。正如本文使用的,这些术语可以引述可组合到其他实施例中的同一个或不同实施例。
相似地,虽然示例过程是结合按特定次序执行的特定操作来描述的,但是可以对这些过程进行多种修改以得到本发明的多种备选实施例。例如,备选实施例可以包括所使用的操作比所公开的全部操作少的过程、使用附加的操作的过程、按不同次序使用相同操作的过程、以及其中对本文公开的个别操作进行组合、细分或更改的过程。
本发明的备选实施例还包括对用于执行本发明操作的指令进行编码的机器可访问媒体。此类实施例也可以称为程序产品。此类机器可访问媒体可以包括但不限于,诸如软盘、硬盘、CD-ROM、ROM和RAM的存储媒体;以及由机器或设备制造或形成的其他可检测的微粒设置(arrangementsofparticles)。还可以在分布式环境中使用指令,并且可以本地和/或远程存储指令以供单处理器或多处理器机器访问。
还应该理解,本文描述的硬件和软件组件表示合理地自包含(self-contained)从而可以彼此基本独立地进行设计、构造或更新的功能元件。在不同实施例中可以将用于提供所描述和图示的功能性的控制逻辑实现为硬件、软件或硬件与软件的组合。例如,处理器中的执行逻辑可以包含用于执行提取、解码和执行机器指令所需的操作的电路和/或微代码。
正如本文所使用的,术语“处理系统”和“数据处理系统”应广义地涵盖单个机器、在通信上耦合的机器的系统或一起工作的设备。示例处理系统包括但不限于,分布式计算系统、超级计算机、高性能计算系统、计算集群(computingcluster)、大型计算机、微型计算机、客户机服务器系统、个人计算机、工作站、服务器、便携式计算机、膝上型计算机、平板计算机、电话、个人数字助理(PDA)、手持设备、例如音频和/或视频设备的娱乐设备、以及用于处理或传送信息的其他平台或设备。
鉴于从本文描述的示例实施例可容易地得到范围广泛的多种有用置换,本文的详细描述应仅视为说明性的,并且不应视为限制本发明的范围。因此,作为本发明要求权利的是符合所附权利要求范围和精神的所有实现以及这些实现的所有等效物。
Claims (20)
1.一种用于处理矢量指令的方法,所述方法包括:
接收指定矢量元素要占据的至少一个可变分区大小的处理器指令,所述处理器指令具有指定存储器位置的源参数、指定屏蔽寄存器的屏蔽参数和指定矢量寄存器的目的地参数;以及
响应于所述处理器指令,在所指定的存储器位置处开始,将数据从存储器位置复制到所指定的矢量寄存器的未屏蔽矢量元素中,而不将数据复制到所指定的矢量寄存器的被屏蔽矢量元素中。
2.如权利要求1所述的方法,所述处理器指令:
通过所述目的地参数,指定容纳可变的多个N个连续矢量元素的M字节矢量寄存器,每个矢量元素具有相同的O字节的可变分区大小,其中N= M/O;以及
通过所述屏蔽参数,指定容纳至少等于可变的多个N个矢量元素的多个屏蔽位的屏蔽寄存器。
3.如权利要求1所述的方法,所述处理器指令:
通过所述源参数,指定在所指定的存储器位置开始的连续存储器位置处的数据项,每个数据项要占据所述存储器中的所述至少一个可变分区大小的第一个。
4.如权利要求3所述的方法,所述处理器指令:
通过所述目的地参数,指定容纳可变的多个N个连续矢量元素的M字节矢量寄存器,每个矢量元素要占据所述矢量寄存器中的所述至少一个可变分区大小的第二个。
5.如权利要求4所述的方法,其中:
所述未屏蔽矢量元素包括与所指定的屏蔽寄存器中的未屏蔽位对应的矢量元素;以及
所述被屏蔽矢量元素包括与所指定的屏蔽寄存器中的被屏蔽位对应的矢量元素。
6.如权利要求4所述的方法,其中:
在由所述源参数指定的存储器位置处开始的多个连续存储器位置与所指定的屏蔽寄存器中的可变的多个N个位的相同数量的未屏蔽位相对应。
7.如权利要求3所述的方法,所述处理器指令指定转换指示,其中:
响应于所述处理器指令,在将数据项存储在由所述目的地参数指定的矢量寄存器中之前,根据所述转换指示自动转换每个数据项;以及
每个数据项作为矢量元素来被存储,所述矢量元素在所述矢量寄存器中占据与在所述存储器中占据的第一可变分区大小不同的可变分区大小。
8.一种处理器,包括:
控制逻辑,对指定矢量元素要占据的至少一个可变分区大小的处理器指令进行解码,所述处理器指令具有指定存储器位置的源参数、指定屏蔽寄存器的屏蔽参数和指定矢量寄存器的目的地参数;以及
执行逻辑,响应于解码的处理器指令,在所指定的存储器位置处开始,将数据从存储器位置复制到所指定的矢量寄存器的未屏蔽矢量元素中,而不将数据复制到所指定的矢量寄存器的被屏蔽矢量元素中。
9.如权利要求8所述的处理器,所述处理器指令:
通过所述源参数,指定在所指定的存储器位置开始的连续存储器位置处的数据项,每个数据项要占据所述存储器中的所述至少一个可变分区大小的第一个。
10.如权利要求9所述的处理器,所述处理器指令指定转换指示,其中:
响应于所述处理器指令,在将数据项存储在由所述目的地参数指定的矢量寄存器中之前,根据所述转换指示自动转换每个数据项;以及
每个数据项作为矢量元素来被存储,所述矢量元素在所述矢量寄存器中占据与在所述存储器中占据的第一可变分区大小不同的可变分区大小。
11.如权利要求9所述的处理器,所述处理器指令:
通过所述目的地参数,指定容纳可变的多个N个连续矢量元素的M字节矢量寄存器,每个矢量元素占据所述矢量寄存器中的所述至少一个可变分区大小的第二个。
12.如权利要求11所述的处理器,其中:
所述未屏蔽矢量元素包括与所指定的屏蔽寄存器中的未屏蔽位对应的矢量元素;以及
所述被屏蔽矢量元素包括与所指定的屏蔽寄存器中的被屏蔽位对应的矢量元素。
13.如权利要求11所述的处理器,其中:
在由所述源参数指定的存储器位置处开始的多个连续存储器位置与所指定的屏蔽寄存器中的可变的多个N个位的相同数量的未屏蔽位相对应。
14.如权利要求8所述的处理器,所述处理器指令包括第一指令;
其中:
所述控制逻辑能够操作来对第二处理器指令进行解码,第二处理器指令指定第二矢量元素要占据的至少第二可变分区大小,第二处理器指令具有指定第二矢量寄存器的第二源参数、指定第二屏蔽寄存器的第二屏蔽参数和指定第二存储器位置的第二目的地参数;以及
所述执行逻辑能够操作来响应于第二处理器指令,在标识的存储器位置处开始,将数据项从第二矢量寄存器的未屏蔽矢量元素复制到存储器位置,而不复制第二矢量寄存器的被屏蔽矢量元素。
15.如权利要求8所述的处理器,所述处理器指令:
通过所述目的地参数,指定容纳可变的多个N个连续矢量元素的M字节矢量寄存器,每个矢量元素具有相同的O字节的可变分区大小,其中N= M/O;以及
通过所述屏蔽参数,指定容纳至少等于可变的多个N个矢量元素的多个屏蔽位的屏蔽寄存器。
16.一种计算机系统,包括:
存储器,存储指定矢量元素要占据的至少一个可变分区大小的处理器指令,所述处理器指令具有指定存储器位置的源参数、指定屏蔽寄存器的屏蔽参数和指定矢量寄存器的目的地参数;以及
处理器,与所述存储器耦合,所述处理器包括用于对处理器指令进行解码的控制逻辑,以及执行逻辑,响应于解码的处理器指令,在所指定的存储器位置处开始,将数据从存储器位置复制到所指定的矢量寄存器的未屏蔽矢量元素中,而不将数据复制到所指定的矢量寄存器的被屏蔽矢量元素中。
17.如权利要求16所述的计算机系统,所述处理器指令:
通过所述源参数,指定在所指定的存储器位置开始的连续存储器位置处的数据项,每个数据项要占据所述存储器中的所述至少一个可变分区大小的第一个。
18.如权利要求17所述的计算机系统,所述处理器指令指定转换指示,其中:
响应于所述处理器指令,在将数据项存储在由所述目的地参数指定的矢量寄存器中之前,根据所述转换指示自动转换每个数据项;以及
每个数据项作为矢量元素来被存储,所述矢量元素在所述矢量寄存器中占据与在所述存储器中占据的第一可变分区大小不同的可变分区大小。
19.如权利要求17所述的计算机系统,所述处理器指令:
通过所述目的地参数,指定容纳可变的多个N个连续矢量元素的M字节矢量寄存器,每个矢量元素占据所述矢量寄存器中的所述至少一个可变分区大小的第二个。
20.如权利要求16所述的计算机系统,所述处理器指令:
通过所述目的地参数,指定容纳可变的多个N个连续矢量元素的M字节矢量寄存器,每个矢量元素具有相同的O字节的可变分区大小,其中N= M/O;其中:
在由所述源参数指定的存储器位置处开始的多个连续存储器位置与所指定的屏蔽寄存器中的可变的多个N个位的相同数量的未屏蔽位相对应。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/964,604 US20090172348A1 (en) | 2007-12-26 | 2007-12-26 | Methods, apparatus, and instructions for processing vector data |
US11/964604 | 2007-12-26 | ||
CN2008101897362A CN101482810B (zh) | 2007-12-26 | 2008-12-26 | 从不同存储器位置加载矢量数据并将其存储到所述位置的方法和装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101897362A Division CN101482810B (zh) | 2007-12-26 | 2008-12-26 | 从不同存储器位置加载矢量数据并将其存储到所述位置的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103500082A true CN103500082A (zh) | 2014-01-08 |
CN103500082B CN103500082B (zh) | 2018-11-02 |
Family
ID=40690955
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101897362A Expired - Fee Related CN101482810B (zh) | 2007-12-26 | 2008-12-26 | 从不同存储器位置加载矢量数据并将其存储到所述位置的方法和装置 |
CN201310464160.7A Expired - Fee Related CN103500082B (zh) | 2007-12-26 | 2008-12-26 | 用于处理矢量数据的方法和设备 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101897362A Expired - Fee Related CN101482810B (zh) | 2007-12-26 | 2008-12-26 | 从不同存储器位置加载矢量数据并将其存储到所述位置的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (3) | US20090172348A1 (zh) |
CN (2) | CN101482810B (zh) |
DE (1) | DE102008059790A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110651250A (zh) * | 2017-05-23 | 2020-01-03 | 国际商业机器公司 | 生成和验证包括存储器数据内容的硬件指令跟踪 |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9529592B2 (en) | 2007-12-27 | 2016-12-27 | Intel Corporation | Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation |
US8909901B2 (en) | 2007-12-28 | 2014-12-09 | Intel Corporation | Permute operations with flexible zero control |
US9335980B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using wrapping propagate instructions in the macroscalar architecture |
US9342304B2 (en) * | 2008-08-15 | 2016-05-17 | Apple Inc. | Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture |
US9335997B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture |
US8356159B2 (en) * | 2008-08-15 | 2013-01-15 | Apple Inc. | Break, pre-break, and remaining instructions for processing vectors |
US8607033B2 (en) * | 2010-09-03 | 2013-12-10 | Lsi Corporation | Sequentially packing mask selected bits from plural words in circularly coupled register pair for transferring filled register bits to memory |
US8904153B2 (en) | 2010-09-07 | 2014-12-02 | International Business Machines Corporation | Vector loads with multiple vector elements from a same cache line in a scattered load operation |
KR101595637B1 (ko) | 2011-04-01 | 2016-02-18 | 인텔 코포레이션 | 벡터 친숙형 명령어 형식 및 그의 실행 |
US20130027416A1 (en) * | 2011-07-25 | 2013-01-31 | Karthikeyan Vaithianathan | Gather method and apparatus for media processing accelerators |
CN106293631B (zh) * | 2011-09-26 | 2020-04-10 | 英特尔公司 | 用于提供向量分散操作和聚集操作功能的指令和逻辑 |
WO2013089791A1 (en) * | 2011-12-16 | 2013-06-20 | Intel Corporation | Instruction and logic to provide vector linear interpolation functionality |
WO2013095515A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions |
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 |
US20140223138A1 (en) * | 2011-12-23 | 2014-08-07 | Elmoustapha Ould-Ahmed-Vall | Systems, apparatuses, and methods for performing conversion of a mask register into a vector register. |
US9946540B2 (en) | 2011-12-23 | 2018-04-17 | Intel Corporation | Apparatus and method of improved permute instructions with multiple granularities |
CN104081342B (zh) | 2011-12-23 | 2017-06-27 | 英特尔公司 | 经改进的插入指令的装置和方法 |
WO2013095637A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method of improved permute instructions |
CN104067224B (zh) | 2011-12-23 | 2017-05-17 | 英特尔公司 | 在不同的粒度水平下对数据值进行广播和掩码的指令执行 |
WO2013095604A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing mask bit compression |
US9588764B2 (en) | 2011-12-23 | 2017-03-07 | Intel Corporation | Apparatus and method of improved extract instructions |
CN107220029B (zh) | 2011-12-23 | 2020-10-27 | 英特尔公司 | 掩码置换指令的装置和方法 |
CN104011673B (zh) * | 2011-12-30 | 2016-12-07 | 英特尔公司 | 向量频率压缩指令 |
US9389860B2 (en) | 2012-04-02 | 2016-07-12 | Apple Inc. | Prediction optimizations for Macroscalar vector partitioning loops |
US9569211B2 (en) | 2012-08-03 | 2017-02-14 | International Business Machines Corporation | Predication in a vector processor |
US9575755B2 (en) | 2012-08-03 | 2017-02-21 | International Business Machines Corporation | Vector processing in an active memory device |
US9632777B2 (en) * | 2012-08-03 | 2017-04-25 | International Business Machines Corporation | Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry |
US9594724B2 (en) | 2012-08-09 | 2017-03-14 | International Business Machines Corporation | Vector register file |
US9342479B2 (en) * | 2012-08-23 | 2016-05-17 | Qualcomm Incorporated | Systems and methods of data extraction in a vector processor |
US9606961B2 (en) | 2012-10-30 | 2017-03-28 | Intel Corporation | Instruction and logic to provide vector compress and rotate functionality |
US9501276B2 (en) * | 2012-12-31 | 2016-11-22 | Intel Corporation | Instructions and logic to vectorize conditional loops |
US9632781B2 (en) * | 2013-02-26 | 2017-04-25 | Qualcomm Incorporated | Vector register addressing and functions based on a scalar register data value |
US9817663B2 (en) | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
US9348589B2 (en) | 2013-03-19 | 2016-05-24 | Apple Inc. | Enhanced predicate registers having predicates corresponding to element widths |
US9645820B2 (en) * | 2013-06-27 | 2017-05-09 | Intel Corporation | Apparatus and method to reserve and permute bits in a mask register |
US9513907B2 (en) * | 2013-08-06 | 2016-12-06 | Intel Corporation | Methods, apparatus, instructions and logic to provide vector population count functionality |
US9495155B2 (en) | 2013-08-06 | 2016-11-15 | Intel Corporation | Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment |
US9552205B2 (en) * | 2013-09-27 | 2017-01-24 | Intel Corporation | Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions |
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 |
TWI489279B (zh) | 2013-11-27 | 2015-06-21 | Realtek Semiconductor Corp | 虛擬實體位址轉換系統以及虛擬實體位址轉換系統的管理方法 |
US8842117B1 (en) | 2014-02-13 | 2014-09-23 | Raycast Systems, Inc. | Computer hardware architecture and data structures for lookahead flags to support incoherent ray traversal |
US9557995B2 (en) * | 2014-02-07 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing segmented operations |
US9690709B2 (en) * | 2014-07-14 | 2017-06-27 | Oracle International Corporation | Variable handles |
US11544214B2 (en) * | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
US20170177350A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Set-Multiple-Vector-Elements Operations |
US20170185413A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Processing devices to perform a conjugate permute instruction |
US9959247B1 (en) | 2017-02-17 | 2018-05-01 | Google Llc | Permuting in a matrix-vector processor |
DE102017207876A1 (de) * | 2017-05-10 | 2018-11-15 | Robert Bosch Gmbh | Parallelisierte Verarbeitung |
CN112415932B (zh) * | 2020-11-24 | 2023-04-25 | 海光信息技术股份有限公司 | 电路模块及其驱动方法、电子设备 |
CN117215653A (zh) * | 2023-11-07 | 2023-12-12 | 英特尔(中国)研究中心有限公司 | 处理器 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6015771A (ja) * | 1983-07-08 | 1985-01-26 | Hitachi Ltd | ベクトルプロセッサ |
JPS62276668A (ja) * | 1985-07-31 | 1987-12-01 | Nec Corp | ベクトルマスク演算制御ユニツト |
JPH0731669B2 (ja) * | 1986-04-04 | 1995-04-10 | 株式会社日立製作所 | ベクトル・プロセツサ |
US5206822A (en) * | 1991-11-15 | 1993-04-27 | Regents Of The University Of California | Method and apparatus for optimized processing of sparse matrices |
JP2665111B2 (ja) * | 1992-06-18 | 1997-10-22 | 日本電気株式会社 | ベクトル処理装置 |
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 |
JP3515337B2 (ja) * | 1997-09-22 | 2004-04-05 | 三洋電機株式会社 | プログラム実行装置 |
US7133040B1 (en) * | 1998-03-31 | 2006-11-07 | Intel Corporation | System and method for performing an insert-extract instruction |
US7529907B2 (en) * | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US6591361B1 (en) * | 1999-12-28 | 2003-07-08 | International Business Machines Corporation | Method and apparatus for converting data into different ordinal types |
US7093102B1 (en) * | 2000-03-29 | 2006-08-15 | Intel Corporation | Code sequence for vector gather and scatter |
US6701424B1 (en) * | 2000-04-07 | 2004-03-02 | Nintendo Co., Ltd. | Method and apparatus for efficient loading and storing of vectors |
US6697064B1 (en) * | 2001-06-08 | 2004-02-24 | Nvidia Corporation | System, method and computer program product for matrix tracking during vertex processing in a graphics pipeline |
US6922716B2 (en) * | 2001-07-13 | 2005-07-26 | Motorola, Inc. | Method and apparatus for vector processing |
US7689641B2 (en) * | 2003-06-30 | 2010-03-30 | Intel Corporation | SIMD integer multiply high with round and shift |
US8191056B2 (en) * | 2006-10-13 | 2012-05-29 | International Business Machines Corporation | Sparse vectorization without hardware gather/scatter |
US7620797B2 (en) * | 2006-11-01 | 2009-11-17 | Apple Inc. | Instructions for efficiently accessing unaligned vectors |
-
2007
- 2007-12-26 US US11/964,604 patent/US20090172348A1/en not_active Abandoned
-
2008
- 2008-12-01 DE DE102008059790A patent/DE102008059790A1/de not_active Withdrawn
- 2008-12-26 CN CN2008101897362A patent/CN101482810B/zh not_active Expired - Fee Related
- 2008-12-26 CN CN201310464160.7A patent/CN103500082B/zh not_active Expired - Fee Related
-
2013
- 2013-01-08 US US13/736,077 patent/US20130124823A1/en not_active Abandoned
-
2014
- 2014-01-10 US US14/152,698 patent/US20140129802A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110651250A (zh) * | 2017-05-23 | 2020-01-03 | 国际商业机器公司 | 生成和验证包括存储器数据内容的硬件指令跟踪 |
CN110651250B (zh) * | 2017-05-23 | 2023-05-05 | 国际商业机器公司 | 生成和验证包括存储器数据内容的硬件指令跟踪 |
Also Published As
Publication number | Publication date |
---|---|
CN101482810A (zh) | 2009-07-15 |
CN103500082B (zh) | 2018-11-02 |
US20090172348A1 (en) | 2009-07-02 |
DE102008059790A1 (de) | 2009-07-02 |
CN101482810B (zh) | 2013-11-06 |
US20140129802A1 (en) | 2014-05-08 |
US20130124823A1 (en) | 2013-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101482810B (zh) | 从不同存储器位置加载矢量数据并将其存储到所述位置的方法和装置 | |
CN110688157B (zh) | 一种计算装置及计算方法 | |
US10942716B1 (en) | Dynamic computational acceleration using a heterogeneous hardware infrastructure | |
CN101488083B (zh) | 用于转换向量数据的方法、装置和指令 | |
US10614148B2 (en) | Reconfigurable convolution accelerator | |
CN103827813A (zh) | 用于提供向量分散操作和聚集操作功能的指令和逻辑 | |
CN104049945A (zh) | 用于融合指令以在多个测试源上提供或(or)测试和与(and)测试功能的方法和装置 | |
CN117724763A (zh) | 用于矩阵操作加速器的指令的装置、方法和系统 | |
CN103970509A (zh) | 对条件循环进行矢量化的指令和逻辑 | |
CN104050077A (zh) | 利用多个测试源来提供或(or)测试和与(and)测试功能的可融合指令和逻辑 | |
Vidal et al. | A multi-GPU implementation of a cellular genetic algorithm | |
CN104303142A (zh) | 使用索引阵列和有限状态机的分散 | |
CN103827815A (zh) | 用于提供利用跨越和掩码功能的向量加载和存储的指令和逻辑 | |
CN103959236A (zh) | 用于提供向量横向多数表决功能的指令和逻辑 | |
CN116342372A (zh) | 使用一个或更多个神经网络的图像生成 | |
DE112021005433T5 (de) | Verfahren zur leistungsbalancierung mehrerer chips | |
DE102021125626A1 (de) | Licht-resampling mit flächenähnlichkeitsprüfung | |
CN106030519A (zh) | 用于从多个股分派指令的处理器逻辑和方法 | |
Xu et al. | Empowering R with high performance computing resources for big data analytics | |
WO2024002175A1 (zh) | 指令执行方法、系统控制器及相关产品 | |
DE102022132008A1 (de) | Asynchrone speicherdeallokation | |
DE102022124362A1 (de) | Benutzerkonfigurierbare speicherzuweisung | |
US20230367964A1 (en) | Parallel processing of hierarchical text | |
WO2024002172A1 (zh) | 片上系统、指令系统、编译系统及相关产品 | |
Gupta et al. | Trends in Hardware-Based AL and ML |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181102 |
|
CF01 | Termination of patent right due to non-payment of annual fee |