提供向量压缩和旋转功能的指令和逻辑的制作方法

文档序号:6517068阅读:320来源:国知局
提供向量压缩和旋转功能的指令和逻辑的制作方法
【专利摘要】指令和逻辑提供向量压缩和旋转功能。对指定向量源、掩码、向量目的地和目的地偏移的指令做出响应,一些实施例读取所述掩码并且将相对应的未掩蔽向量元素从所述向量源拷贝到所述向量目的地中在所述向量目的地偏移单元处开始的相邻顺序单元。在一些实施例中,将来自所述向量源的未掩蔽向量元素拷贝到以所述向量目的地中的元素单元的总数量为模的相邻顺序元素单元。在一些可选实施例中,每当所述向量目的地为满时,就停止拷贝,并且在将未掩蔽向量元素从所述向量源拷贝到所述向量目的地中的相邻顺序元素单元时,将所述掩码中的相对应字段的值改变到掩蔽值。可选实施例使其中没有拷贝来自所述向量源的元素的向量目的地的元素归零。
【专利说明】提供向量压缩和旋转功能的指令和逻辑
【技术领域】
[0001]本公开涉及处理逻辑、微处理器和相关联的指令集架构的领域,当由所述处理器或其它处理逻辑执行时,所述相关联的指令集架构执行逻辑、算术或其它功能操作。具体地说,本公开涉及用于提供向量压缩和旋转功能的指令和逻辑。
【背景技术】
[0002]现代处理器经常包括用于提供操作的指令,这些操作是计算密集的,但是提供能够经过使用例如以单指令多数据(SMD)向量寄存器为例的各种数据存储设备的有效实现来开发的高级数据并行性。中央处理单元(CPU)可以然后提供并行硬件以支持处理向量。向量是保持多个连续数据元素的数据结构。具有尺寸M的向量寄存器可以包含具有尺寸O的N个向量元素,其中Ν=Μ/0。例如,可以将64字节向量寄存器划分为(a)64个向量元素,每一个元素保持占据I个字节的数据项,(b )32个向量元素以保持每一个占据2个字节(或一个“字”)的数据项,(c) 16个向量元素以保持每一个占据4个字节(或一个“双字”)的数据项,或(d) 8个向量元素以保持每一个占据8个字节(或一个“四倍字”)的数据项。
[0003]使应用或软件代码向量化可以包括使应用在例如以宽的或大的宽度向量架构为例的特定系统或指令集架构上编译、安装和/或运行。
[0004]计算行业发展了各种编程基准以测试架构和诸如向量化、同时多线程、预测等等的计算技术的效率。一组这样的基准来自标准性能评估公司(SPEC)。SPEC基准广泛用于“检测”处理器和平台架构的性能。构成SPEC基准的程序由行业专业人员进行描绘和分析,试图发现新的编译和计算技术以改善计算机性能。被称为CPU2006的SPEC基准组之一包括被选择以强调系统的处理器、存储器子系统和编译器的整数和浮点CPU密集的基准。CPU2006包括根据NAMD的数据布局和内环推导的被称为444.NAMD的程序,一种用于模拟由伊利诺伊大学厄巴纳-尚佩恩分校的理论和计算生物组的Jim Phillips开发的大生物分子系统的并行程序。将NAMD的几乎所有运行时间都花费在计算小组功能中的原子间交互上。这一组与大量代码分离以形成对于CPU2006的紧凑基准。计算核心在宽范围的机器架构上实现良好的性能,但是不包含平台特定的优化。
[0005]程序NAMD是2002年Gordon Bell并行可扩展性奖金的获胜者,但是串行性能同样重要。在人们例如对基准的大多数并行部分中的全部进行向量化之后,不可向量化的串行部分典型地代表基准的运行时间的甚至更显著的部分。这一情况是对于具有高并行可扩展性的计算密集程序的通常情况的典型示例。在使用向量化来加速大多数并行部分之后,还存在移除性能限制问题和瓶颈以改善程序的另外的不可向量化或串行部分的性能的艰难工作。
[0006]目前为止,还没有充分探究对于这样的性能限制问题和瓶颈的潜在解决方案。
【专利附图】

【附图说明】
[0007]在附图中通过示例而非限制的方式说明了本发明。[0008]图1A是执行用于提供向量压缩和旋转功能的指令的系统的一个实施例的方框图。
[0009]图1B是执行用于提供向量压缩和旋转功能的指令的系统的另一实施例的方框图。
[0010]图1C是执行用于提供向量压缩和旋转功能的指令的系统的另一实施例的方框图。
[0011]图2是执行用于提供向量压缩和旋转功能的指令的处理器的一个实施例的方框图。
[0012]图3A说明了根据一个实施例的压缩数据类型。
[0013]图3B说明了根据一个实施例的压缩数据类型。
[0014]图3C说明了根据一个实施例的压缩数据类型。
[0015]图3D说明了根据一个实施例用于提供向量压缩和旋转功能的指令编码。
[0016]图3E说明了根据另一实施例用于提供向量压缩和旋转功能的指令编码。
[0017]图3F说明了根据另一实施例用于提供向量压缩和旋转功能的指令编码。
[0018]图3G说明了根据另一实施例用于提供向量压缩和旋转功能的指令编码。
[0019]图3H说明了根据另一实施例用于提供向量压缩和旋转功能的指令编码。
[0020]图4A说明了用于执行提供向量压缩和旋转功能的指令的处理器微架构的一个实施例的元素。
[0021]图4B说明了用于执行提供向量压缩和旋转功能的指令的处理器微架构的另一实施例的元素。
[0022]图5是执行提供向量压缩和旋转功能的指令的处理器的一个实施例的方框图。
[0023]图6是执行提供向量压缩和旋转功能的指令的计算机系统的一个实施例的方框图。
[0024]图7是执行提供向量压缩和旋转功能的指令的计算机系统的另一实施例的方框图。
[0025]图8是执行提供向量压缩和旋转功能的指令的计算机系统的另一实施例的方框图。
[0026]图9是执行提供向量压缩和旋转功能的指令的片上系统的一个实施例的方框图。
[0027]图10是执行提供向量压缩和旋转功能的指令的处理器的实施例的方框图。
[0028]图11是提供向量压缩和旋转功能的IP核心开发系统的一个实施例的方框图。
[0029]图12说明了提供向量压缩和旋转功能的架构仿真系统的一个实施例。
[0030]图13说明了翻译提供向量压缩和旋转功能的指令的系统的一个实施例。
[0031]图14A说明了用于提供向量压缩和旋转功能的指令的一个实施例的流程图。
[0032]图14B说明了用于提供向量压缩和旋转功能的指令的另一实施例的流程图。
[0033]图15A说明了使用指令以提供向量压缩和旋转功能的处理的实施例的流程图。
[0034]图15B说明了使用指令以提供向量压缩和旋转功能的处理的另一实施例的流程图。
[0035]图16A说明了提供向量压缩和旋转功能的处理的一个实施例的流程图。
[0036]图16B说明了提供向量压缩和旋转功能的处理的可选实施例的流程图。[0037]图17说明了提供向量压缩和旋转功能的处理的另一实施例的流程图。
[0038]图18说明了在基准应用中提供向量压缩功能的处理的实施例的流程图。
[0039]图19A说明了在基准应用中提供向量压缩和旋转功能的处理的实施例的流程图。
[0040]图19B说明了在基准应用中提供向量压缩和旋转功能的处理的可选实施例的流程图。
【具体实施方式】
[0041]下面的描述公开了用于在处理器、计算机系统或其它处理装置内或与该处理器、计算机系统或其它处理装置相关联地提供向量压缩和旋转功能的指令和处理逻辑。
[0042]本文公开了用于提供向量压缩和旋转功能的指令和逻辑。对指定向量源、掩码、向量目的地和目的地偏移的指令做出响应,一些实施例读取该掩码,并且将相对应的未掩蔽向量元素从向量源拷贝到向量目的地中在向量目的地偏移单元处开始的相邻顺序元素单元。可选实施例使其中没有拷贝来自向量源的元素的向量目的地的元素归零。在一些实施例中,将来自向量源的未掩蔽向量元素拷贝到以向量目的地中的元素单元的总数量为模的相邻顺序元素单元。在一些可选实施例中,每当向量目的地为满时,拷贝就停止。在将未掩蔽向量元素从向量源拷贝到向量目的地中的相邻顺序元素单元时,也可以将掩码中的相对应的字段的值改变到掩蔽值。因而,掩码值可以用于跟踪进展和/或完成,并且在将变为满的目的地存储到存储器之后,能够重新执行指令。然后,可以使用修改的掩码和为零的向量目的地偏移来重新执行指令,以仅压缩仍然需要执行向量压缩和旋转指令的元素,从而允许改善的指令吞吐量。
[0043]将认识到,SIMD压缩和旋转指令可以用于在否则不容易被向量化的应用中提供向量压缩功能,例如在以在SPEC基准组的444.NAMD的内环中为例的基准应用中,从而减少到外部存储器的昂贵顺序存储的数量,增加性能和指令吞吐量,并且降低功率使用。
[0044]在下面的描述中,阐述了诸如处理逻辑、处理器类型、微架构条件、事件、使能机制等等的各种具体细节,以便提供对本发明实施例的更加全面的理解。然而,本领域中的技术人员将认识到,可以在没有这样的具体细节的情况下来实践本发明。此外,没有详细地示出一些公知的结构、电路等等,以避免不必要地混淆本发明的实施例。
[0045]尽管参考处理器描述了下面的实施例,但是其它实施例可以应用于其它类型的集成电路和逻辑设备。本发明实施例的类似技术和教导可以适用于能够得益于较高管线吞吐量和改善的性能的其它类型的电路或半导体器件。本发明实施例的教导可以应用于执行数据操控的任何处理器或机器。然而,本发明不局限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且能够适用于其中执行数据的操控或管理的任何处理器和机器。此外,下面的描述提供示例,并且附图出于说明目的示出了各种示例。然而,不应该将这些示例以限制的意义解释为它们仅意在提供本发明实施例的示例而不是提供本发明实施例的所有可能实现的详尽列表。
[0046]尽管下面的示例在执行单元和逻辑电路的上下文中描述了指令处理和分布,但是可以通过存储在机器可读的有形介质上的数据或指令的方式来实现本发明的其它实施例,该指令在由机器执行时使该机器执行与本发明至少一个实施例一致的功能。在一个实施例中,将与本发明实施例相关联的功能体现在机器可执行指令中。所述指令可以用于使以所述指令编程的通用或专用处理器执行本发明的步骤。可以将本发明的实施例提供为可以包括机器或计算机可读介质的计算机程序产品或软件,该机器或计算机可读介质具有存储在其上的可以用于对计算机(或其它电子设备)进行编程以执行根据本发明实施例的一个或多个操作的指令。可选地,可以由包含用于执行所述步骤的固定功能逻辑的特定硬件部件或由编程的计算机部件和固定功能硬件部件的任何组合来执行本发明实施例的步骤。
[0047]可以将用于对逻辑进行编程以执行本发明实施例的指令存储在系统中的存储器内,例如DRAM、高速缓存、闪存或其它存储。而且,可以经由网络或通过其它计算机可读介质的方式来分布指令。因而,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,但不局限于在经过互联网经由电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等等)传输信息时使用的软盘、光盘、压缩盘只读存储器(⑶-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPR0M)、电可擦除可编程只读存储器(EEPR0M)、磁卡或光学卡、闪存或有形机器可读存储。因此,计算机可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的有形机器可读介质。
[0048]设计可以经历从创建到模拟到制造的各种阶段。代表设计的数据可以按照多种方式来代表设计。首先,如在模拟中有用的,可以使用硬件描述语言或另一功能描述语言来代表硬件。此外,可以在设计处理的一些阶段处产生具有逻辑和/或晶体管门的电路级模型。而且,大部分设计在某一阶段达到代表硬件模型中的各种设备的物理布置的数据水平。在使用常规半导体制造技术的情况下,代表硬件模型的数据可以是指定在用于制造集成电路的掩码的不同掩码层上的各种特征的存在或不存在的数据。在设计的任何代表中,可以在任何形式的机器可读介质中存储数据。存储器或诸如盘的磁性或光学存储可以是机器可读介质以存储经由被调制或以其它方式生成以传输这样的信息的光波或电波来传输的信息。当传输指示或携带代码或设计的电载波时,在执行电信号的拷贝、缓冲或重新传输的程度上,进行新拷贝。因而,通信提供商或网络提供商可以在有形的机器可读介质上至少临时地存储体现本发明实施例的技术的物品,例如被编码为载波的信息。
[0049]在现代处理器中,使用许多不同的执行单元来处理并执行各种代码和指令。不是等同地创建所有指令,因为一些指令完成得较快,而其它指令要花费多个时钟周期来完成。指令的吞吐量越快,处理器的整体性能就越好。因而,使许多指令尽可能快速地执行将是有利的。然而,存在具有较大复杂性且在执行时间和处理器资源方面要求更多的某些指令。例如,存在浮点指令、加载/存储操作、数据移动等等。
[0050]随着更多的计算机系统用于互联网、文本和多媒体应用中,已经随着时间引入了额外的处理器支持。在一个实施例中,可以将指令集与包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/o)的一个或多个计算机架构相关联。
[0051]在一个实施例中,指令集架构(ISA)可以由包括用于实现一个或多个指令集的处理器逻辑和电路的一个或多个微架构实现。因此,具有不同微架构的处理器可以共享公共
指令集的至少一部分。例如,Inter?奔腾4处理器、Inter?Core?处理器和来自加利福
尼亚州Sunnyvale的高级微设备公司的处理器实现几乎相同版本的x86指令集(在较新版本中添加有一些扩展),但是具有不同的内部设计。类似地,由诸如ARM Holding有限公司、MIPS的其它处理器开发公司或其许可接受方或采纳者设计的处理器可以共享公共指令集的至少一部分,但是可以包括不同的处理器设计。例如,ISA的相同寄存器架构可以使用新的或公知的技术,包括专用物理寄存器、使用寄存器重命名机制(例如,寄存器别名表(RAT)的使用)的一个或多个动态分配的物理寄存器、重排序缓冲器(ROB)和撤回寄存器文件,在不同的微架构中按照不同的方式来实现。在一个实施例中,寄存器可以包括一个或多个寄存器、寄存器架构、寄存器文件或者可以或不可以由软件编程器寻址的其它寄存器组。
[0052]在一个实施例中,指令可以包括一个或多个指令格式。在一个实施例中,指令格式可以指示各种字段(位的数量、位的单元等等)以指定待执行的操作和将在其上执行操作的操作数。可以进一步由指令模板(或子格式)来零散地定义一些指令格式。例如,可以将具有给定指令格式的指令模板定义为具有指令格式的字段的不同子集和/或定义为具有被不同地解释的给定字段。在一个实施例中,使用指令格式(并且如果定义,则在该指令格式的指令模板的给定一个中)来表达指令,并且该指令指定或指示操作以及将在其上执行操作的操作数。
[0053]科学、金融、自动向量化的通用RMS (识别、挖掘和合成)以及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操控)会要求对大量的数据项执行相同的操作。在一个实施例中,单指令多数据(SMD)指代使处理器对多个数据元素执行操作的指令类型。可以在能够将寄存器中的位逻辑地划分为多个固定尺寸或可变尺寸的数据元素的处理器中使用SMD技术,这些数据元素中的每一个代表单独的值。例如,在一个实施例中,可以将64位寄存器中的位组织为包含四个单独的16位数据元素的源操作数,其中每一个数据元素代表单独的16位值。可以将这一类型的数据称为“压缩”数据类型或“向量”数据类型,并且可以将这一数据类型的操作数称为压缩数据操作数或向量操作数。在一个实施例中,压缩数据项或向量可以是存储在单个寄存器内的压缩数据元素的序列,并且压缩数据操作数或向量操作数可以是SMD指令(或“压缩数据指令”或“向量指令”)的源或目的地操作数。在一个实施例中,SIMD指令指定要多两个源向量操作数执行的单个向量操作以生成具有相同或不同尺寸、具有相同或不同数量的数据元素和具有相同或不同的数据元素顺序的目的地向量操作数(也被称为结果向量操作数)。
[0054]例如由具有包括x86、MMX?、流化 SMD 扩展(SSE)、SSE2、SSE3、SSE4.1 和 SSE4.2
指令的指令集的Intel?CoreTM处理器、诸如具有包括向量浮点(VFP)和/或NEON指令的
指令集的ARM Cortex?系列处理器的ARM处理器以及诸如由中国科学院的计算技术研究所(ICT)开发的Loongson系列处理器的MIPS处理器采用的SMD技术在应用性能方面实现了显著改善(Core?和MMX?是注册商标或加利福尼亚州Santa Clara的英特尔公司的商标)。
[0055]在一个实施例中,目的地和源寄存器/数据是代表相对应的数据或操作的源和目的地的一般术语。在一些实施例中,它们可以由寄存器、存储器或具有与描绘的名称或功能不同的其它名称或功能的其它存储区域实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其它存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其它存储区域,等等。在其它实施例中,SRC和DEST存储区域中的两个或更多个可以与相同存储区域(例如,SIMD寄存器)内的不同数据存储元素相对应。在一个实施例中,源寄存器之一也可以用作目的地寄存器,例如通过将对第一和第二源数据执行的操作的结果写回到用作目的地寄存器的两个源寄存器之一。
[0056]图1A是形成有包括用于执行根据本发明一个实施例的指令的执行单元的处理器的示例性计算机系统的方框图。系统100包括根据本发明,例如在本文描述的实施例中,的部件,例如处理器102用于采用包括逻辑的执行单元来执行用于处理数据的算法。系统100代表以从加利福尼亚州Santa Clara的英特尔公司可获得的
PETIUM li HK PENTIUM "4, Xeon?, Itanium" ^ Xscale? 和 / 或 StrongARM? 微处理
器为基础的处理系统,尽管也可以使用其它系统(包括具有其它微处理器、工程工作站、机顶盒等等的PC)。在一个实施例中,样本系统100可以执行从华盛顿州Redmond的微软公司可获得的一种版本的WINDOWS?操作系统,尽管也可以使用其它操作系统(例如UNIX和Linux)、嵌入式软件和/或图形用户接口。因而,本发明的实施例不局限于硬件电路和软件的任何特定组合。
[0057]实施例不局限于计算机系统。本发明的可选实施例可以用在诸如手持设备的其它设备和嵌入式应用中。手持设备的一些示例包括手机、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或能够执行根据至少一个实施例的一个或多个指令的任何其它系统。
[0058]图1A是形成有包括一个或多个执行单元108以执行算法来执行根据本发明一个实施例的至少一个指令的处理器102的计算机系统100的方框图。可以在单个处理器桌面型计算机或服务器系统的上下文中描述一个实施例,但是可以在多处理器系统中包括可选实施例。系统100是 “集线器”系统架构的示例。计算机系统100包括处理器102以处理数据信号。处理器102可以是复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器或例如以数据信号处理器为例的任何其它处理器设备。处理器102耦接到能够在处理器102和系统100中的其它部件之间传输数据信号的处理器总线110。系统100的元件执行熟悉本领域的人员公知的常规功能。
[0059]在一个实施例中,处理器102包括级I (LI)内部高速缓存存储器104。取决于架构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。可选地,在另一实施例中,高速缓存存储器可以驻留在处理器102的外部。取决于特定的实现和需要,其它实施例也可以包括内部和外部高速缓存二者的组合。寄存器文件106可以将不同类型的数据存储在各种寄存器中,包括整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
[0060]执行单元108,包括用于执行整数和浮点操作的逻辑,也驻留在处理器102中。处理器102还包括存储用于某些宏指令的微代码的微代码(ucode)R0M。对于一个实施例,执行单元108包括用于处理压缩指令集109的逻辑。通过在通用处理器102的指令集中包括压缩指令集109,连同用于执行所述指令的相关联的电路,可以使用通用处理器102中的压缩数据来执行由许多多媒体应用使用的操作。因而,通过使用用于对压缩数据执行操作的处理器数据总线的全宽度,能够更加有效地加速和执行许多多媒体应用。这可以消除跨处理器的数据总线传递较小单位的数据以便一次对一个数据元素执行一个或多个操作的需要。[0061]执行单元108的可选实施例也可以用在微控制器、嵌入式处理器、图形设备、DSP和其它类型的逻辑电路中。系统100包括存储器120。存储器120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其它存储器设备。存储器120能够存储由能够由处理器102执行的数据信号代表的指令和/或数据。
[0062]系统逻辑芯片116耦接到处理器总线110和存储器120。在说明的实施例中,系统逻辑芯片116是存储器控制器集线器(MCH)。处理器102可以经由处理器总线110与MCHl 16通信。MCH116向存储器120提供高带宽存储器路径118,用于指令和数据存储并且用于图形命令、数据和纹理的存储。MCH116用于在处理器102、存储器120和系统100中的其它部件之间引导数据信号,并且在处理器总线110、存储器120和系统1/0122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可以提供用于耦接到图形控制器112的图形端口。MCHl 16经过存储器接口 118耦接到存储器120。图形卡112经过加速图形端口(AGP)互连114 耦接到 MCHl 16。
[0063]系统100使用专有集线器接口总线122来将MCH116耦接到I/O控制器集线器(ICH) 130。ICH130经由本地I/O总线提供到一些I/O设备的直接连接。本地I/O总线是用于将外围设备连接到存储器120、芯片集和处理器102的高速I/O总线。一些示例是音频控制器、固件集线器(闪速BIOS) 128、无线收发机126、数据存储124、包含用户输入和键盘接口的传统I/O控制器、诸如通用串行总线(USB)的串行扩展端口和网络控制器134。数据存储设备124能够包括硬盘驱动、软盘驱动、CD-ROM设备、闪存设备或其它海量存储设备。
[0064]对于系统的另一实施例,可以与片上系统一起使用根据一个实施例的指令。片上系统的一个实施例由处理器和存储器构成。用于一种这样的系统的存储器是闪存。闪存可以与处理器和其它系统部件位于相同的裸片上。此外,诸如存储器控制器或图形控制器的其它逻辑方框也可以位于片上系统上。
[0065]图1B说明了实现本发明一个实施例的原理的数据处理系统140。本领域中的技术人员将容易认识到,在不偏离本发明实施例的范围的情况下,可以与可选的处理系统一起使用本文描述的实施例。
[0066]计算机系统140包括能够执行根据一个实施例的至少一个指令的处理核心159。对于一个实施例,处理核心159代表具有任何类型的架构的处理单元,该任何类型的架构包括但不局限于CISC、RISC或VLIW型架构。处理核心159还可以适合于以一种或多种处理技术进行制造,并且通过在机器可读介质上进行足够详细地表示,可以适合于促进所述制造。
[0067]处理核心159包括执行单兀142、一组寄存器文件145和解码器144。处理核心159还包括对于理解本发明实施例不必要的额外电路(未示出)。执行单元142用于执行由处理核心159接收的指令。除了执行典型的处理器指令,执行单元142还可以执行压缩指令集143中的指令,用于对压缩数据格式执行操作。压缩指令集143包括用于执行本发明实施例的指令和其它压缩指令。执行单元142通过内部总线耦接到寄存器文件145。寄存器文件145代表处理核心159上用于存储包括数据的信息的存储区域。如先前提到的,应该理解,用于存储压缩数据的存储区域不是关键的。执行单元142耦接到解码器144。解码器144用于将由处理核心159接收的指令解码为控制信号和/或微代码进入点。对这些控制信号和/或微代码进入点做出响应,执行单元142执行适当的操作。在一个实施例中,解码器用于解释指令的操作码,该指令的操作码将指示应该对在指令内指示的相对应的数据执行什么操作。
[0068]处理核心159与总线141耦接,用于与各种其它系统设备进行通信,该其它系统设备可以例如包括但不局限于同步动态随机存取存储器(SDRAM)控制146、静态随机存取存储器(SRAM)控制147、突发闪速接口 148、个人计算机存储卡国际协会(PCMCIA)/紧凑闪速(CF)卡控制149、液晶显示器(IXD)控制150、直接存储器存取(DMA)控制器151和可选的总线主接口 152。在一个实施例中,数据处理系统140还可以包括用于经由I/O总线153与各种I/O设备进行通信的I/O桥154。这样的I/O设备可以例如包括但不局限于通用异步接收机/发射机(UART) 155、通用串行总线(USB) 156、蓝牙无线UART157和I/O扩展接口158。
[0069]数据处理系统140的一个实施例规定移动、网络和/或无线通信以及能够执行包括文本串比较操作的SMD操作的处理核心159。可以使用各种音频、视频、成像和通信算法来对处理核心159进行编程,这些算法包括诸如Walsh-Hadamard变换、快速傅立叶变换(FFT)、离散余弦变换(DCT)及其各自的逆变换的离散变换;诸如色彩空间变换、视频编码运动估计或视频解码运动补偿的压缩/解压缩技术;以及诸如脉冲编码调制(PCM)的调制/解调(MODEM)功能。
[0070]图1C说明了能够执行用于提供向量压缩和旋转功能的指令的数据处理系统的另一可选实施例。根据一个可选实施例,数据处理系统160可以包括主处理器166、SIMD协处理器161、高速缓存存储器167和输入/输出系统168。输入/输出系统168可以可选地率禹接到无线接口 169。SMD协处理器161能够执行包括根据一个实施例的指令的操作。处理核心170可以适合于以一种或多种处理技术进行制造,并且通过足够详细地在机器可读介质上进行表示,可以适合于促进包括处理核心170的数据处理系统160的全部或部分的制造。
[0071]对于一个实施例,SMD协处理器161包括执行单元162和一组寄存器文件164。主处理器166的一个实施例包括解码器165以识别包括根据一个实施例的指令的指令集163的指令,用于由执行单元162执行。对于可选实施例,SMD协处理器161还包括解码器165B的至少一部分,用于对指令集163的指令进行解码。处理核心170还包括对于理解本发明实施例不必要的额外电路(未示出)。
[0072]在操作中,主处理器166执行数据处理指令的流,该数据处理指令控制一般类型的数据处理操作,包括与高速缓存存储器167和输入/输出系统168的交互。SMD协处理器指令嵌入在该数据处理指令的流内。主处理器166的解码器165将这些SMD协处理器指令识别为具有应该由附接的SMD协处理器161执行的类型。因此,主处理器166在协处理器总线171上发出这些SMD协处理器指令(或代表SMD协处理器指令的控制信号),其中由任何附接的SMD协处理器从该协处理器总线接收这些协处理器指令。在这一情况下,SIMD协处理器161将接受并执行意欲用于其的任何接收的SMD协处理器指令。
[0073]可以经由无线接口 169接收数据,用于由SMD协处理器指令进行处理。对于一个示例,可以以数字信号的形式接收语音通信,该语音通信可以由SMD协处理器指令处理以重新生成代表该语音通信的数字音频样本。对于另一示例,可以接收数字位流形式的压缩的音频和/或视频,该压缩的音频和/或视频可以由SMD协处理器指令进行处理以重新生成数字音频样本和/或运动视频巾贞。对于处理核心170的一个实施例,将主处理器166和SIMD协处理器161集成到包括执行单元162、一组寄存器文件164和解码器165的单个处理核心170中,以识别包括根据一个实施例的指令的指令集163的指令。
[0074]图2是包括用于执行根据本发明一个实施例的指令的逻辑电路的处理器200的微架构的方框图。在一些实施例中,能够实现根据一个实施例的指令以对具有字节、字、双字、四倍字等等的尺寸以及诸如单精度和双精度整数和浮点数据类型的数据类型的数据元素进行操作。在一个实施例中,有序前端201是取出待执行的指令并使它们准备稍后在处理器管线中使用的处理器200的一部分。前端201可以包括几个单元。在一个实施例中,指令预取出器226从存储器取出指令并将它们馈送到指令解码器228,该指令解码器228转而对它们进行解码或解释。例如,在一个实施例中,解码器将接收的指令解码为机器能够执行的被称为“微指令”或“微操作”(也被称为微op或uop)的一个或多个操作。在其它实施例中,解码器将该指令解析为由微架构使用以执行根据一个实施例的操作的操作码和相对应的数据以及控制字段。在一个实施例中,踪迹高速缓存230采取解码的uop并将它们组装为程序排序的序列或uop队列234中的踪迹用于执行。当踪迹闻速缓存230遇见复杂的指令时,微代码R0M232提供完成该操作需要的uop。
[0075]一些指令被转换为单个微操作,而其它指令需要几个微操作来完成完整的操作。在一个实施例中,如果需要多于四个微操作来完成指令,则解码器228存取微代码R0M232来完成该指令。对于一个实施例,可以将指令解码为用于在指令解码器228处进行处理的少量微操作。在另一实施例中,假定需要多个微操作来完成操作,则能够将指令存储在微代码R0M232内。踪迹高速缓存230指代进入点可编程逻辑阵列(PLA)以确定用于从微代码R0M232读取微代码序列来完成根据一个实施例的一个或多个指令的正确的微指令指针。在微代码R0M232完成指令的顺序微操作之后,机器的前端201重新开始从踪迹高速缓存230取出微操作。
[0076]无序执行引擎203是在其中制备指令用于执行的引擎。无序执行逻辑具有多个缓冲器来使指令流平滑并重排以便当它们沿着管线下行并被调度用于执行时优化性能。分配器逻辑分配每一个UOP需要的机器缓冲器和资源以便进行执行。寄存器重命名逻辑将逻辑寄存器重新命名到寄存器文件中的条目上。分配器还在指令调度器的前面分配对于两个UOP队列之一中的每一个UOP的条目,一个UOP用于存储器操作而一个用于非存储器操作:存储器调度器、快速调度器202、慢速/ 一般浮点调度器204和简单浮点调度器206。Uop调度器202、204、206以其依赖的输入寄存器操作数源的准备状态和该uop完成其操作需要的执行资源的可用性为基础来确定uop何时准备执行。一个实施例的快速调度器202可以在主时钟周期的每一半上进行调度,而其它调度器可以仅每主处理器时钟周期调度一次。调度器仲裁调派端口以调度uop用于执行。
[0077]寄存器文件208、210位于调度器202、204、206和执行方框211中的执行单元212、214、216、218、220、222、224之间。对于整数和浮点操作,分别具有单独的寄存器文件208、210。一个实施例的每一个寄存器文件208、210还包括旁路网络,该旁路网络可以绕过还没有被写到寄存器文件中的刚刚完成的结果或将所述结果转发到新的相关uop。整数寄存器文件208和浮点寄存器文件210也能够与另一寄存器文件传送数据。对于一个实施例,将整数寄存器文件208划分为两个单独的寄存器文件,一个寄存器文件用于低阶32位数据,而第二寄存器文件用于高阶32位数据。一个实施例的浮点寄存器文件210具有128位宽条目,因为浮点指令一般具有在宽度上从64位到128位的操作数。
[0078]执行方框211包含在其中实际地执行指令的执行单元212、214、216、218、220、222、224。这一部分包括存储微指令需要用于执行的整数和浮点数据操作数值的寄存器文件208、210。一个实施例的处理器200由多个执行单元组成:地址生成单元(AGU) 212、AGU214、快速ALU216、快速ALU218、慢速ALU220、浮点ALU222、浮点移动单元224。对于一个实施例,浮点执行方框222、224执行浮点、MMX, SIMD和SSE或其它操作。一个实施例的浮点ALU222包括执行除法、平方根和余数微操作的64位除64位浮点除法器。对于本发明的实施例,可以使用浮点硬件来处理涉及浮点值的指令。在一个实施例中,ALU操作转到高速ALU执行单元216、218。一个实施例的快速ALU216、218可以执行具有一半时钟周期的有效时延的快速操作。对于一个实施例,大部分复杂的整数操作转到慢速ALU220,因为慢速ALU220包括用于诸如乘法器、移位、标记逻辑和分支处理的长时延类型操作的整数执行硬件。存储器加载/存储操作由AGU212、214执行。对于一个实施例,在对64位数据操作数执行整数操作的上下文中描述了整数ALU216、218、220。在可选实施例中,可以实现ALU216、218,220以支持包括16、32、128、256等等的各种数据位。类似地,可以实现浮点单元222、224以支持具有各种宽度的位的一系列操作数。对于一个实施例,浮点单元222、224可以结合SIMD和多媒体指令来对128位宽的压缩数据操作数进行操作。
[0079]在一个实施例中,uop调度器202、204、206在父加载完成执行之前分派相关的操作。由于在处理器200中推测地调度和执行uop,因此处理器200还包括用于处理存储器遗漏的逻辑。如果在数据高速缓存中遗漏了数据加载,则在管线中可能存在飞行中的相关操作,这为调度器留下暂时不正确的数据。重放机制跟踪并重新执行使用不正确的数据的指令。只需要重放相关的操作,并且允许完成独立的操作。处理器的一个实施例的调度器和重放机制还设计为捕获提供向量压缩和旋转功能的指令。
[0080]术语“寄存器”可以指代用作识别操作数的指令的一部分的机载处理器存储单元。换句话说,寄存器可以是从处理器的外部(从程序员的角度)可以使用的寄存器。然而,实施例的寄存器不应该在含义上局限于特定类型的电路。而是,实施例的寄存器能够存储和提供数据,并且执行本文描述的功能。本文描述的寄存器可以由处理器内的电路使用任何数量的不同技术来实现,例如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器文件还包含用于压缩数据的八个多媒体SMD寄存器。对于下面的讨论,将寄存器理解为设计为保持压缩数据的数据寄存器,例如在使用来自加利福尼亚州Santa Clara的英特尔公司的MMX技术实现的微处理器中的64位宽MMX?寄存器(在一些实例中也被称为寄存器)。以整数和浮点形式二者可用的这些MMX寄存器可以与伴随SMD和SSE指令的压缩数据元素一起操作。类似地,与SSE2、SSE3、SSE4或更高(通常被称为“SSEx”)技术有关的128位宽XMM寄存器也可以用于保持这样的压缩数据操作数。在一个实施例中,在存储压缩数据和整数数据时,寄存器不需要区分开这两种数据类型。在一个实施例中,整数和浮点或者包含在相同的寄存器文件中或者包含在不同的寄存器文件中。而且,在一个实施例中,可以将浮点和整数数据存储在不同的寄存器或相同的寄存器中。[0081]在下面附图的示例中,描述了多个数据操作数。图3A说明了根据本发明一个实施例在多媒体寄存器中的各种压缩数据类型表示。图3A说明了对于128位宽操作数的压缩字节310、压缩字320和压缩双字(dword) 330的数据类型。这一示例的压缩字节格式310是128位长,并且包含16个压缩字节数据元素。这里将字节定义为8位数据。将对于每一个字节数据元素的信息存储在字节O的位7到位O、字节I的位15到位8、字节2的位23到位16、以及最后字节15的位120到位127中。因而,在寄存器中使用所有可用的位。这一存储布置增加了处理器的存储效率。并且,在访问16个数据元素的情况下,现在可以对16个数据元素并行地执行一个操作。
[0082]通常,数据元素是与具有相同长度的其它数据元素一起存储在单个寄存器或存储器单元中的单独数据段。在与SSEx技术有关的压缩数据序列中,存储在XMM寄存器中的数据元素的数量是128位除以单独数据元素的位的长度。类似地,在与MMX和SSE技术有关的压缩数据序列中,存储在MMX寄存器中的数据元素的数量是64位除以单独数据元素的位的长度。尽管图3A中说明的数据类型是128位长,但是本发明的实施例也可以利用64位宽、256位宽、512位宽或其它尺寸的操作数进行操作。这一示例的压缩字格式320是128位长,并且包含八个压缩字数据元素。每一个压缩字包含16位信息。图3A的压缩双字格式是128位长,并且包含四个压缩双字数据元素。每一个压缩双字数据元素包含32位信息。压缩四倍字是128位长,并且包含两个压缩四倍字数据元素。
[0083]图3B说明了可选的寄存器中数据存储格式。每一个压缩数据可以包括多于一个独立的数据元素。说明了三个压缩数据格式:压缩半字341、压缩单字342和压缩双字343。压缩半字341、压缩单字342和压缩双字343的一个实施例包含固定点数据元素。对于可选实施例,压缩半字341、压缩单字342和压缩双字343中的一个或多个可以包含浮点数据元素。压缩半字341的一个可选实施例是包含八个16位数据元素的128位长。压缩单字342的一个实施例是128位长并且包含四个32位数据元素。压缩双字343的一个实施例是128位长并且包含两个64位数据元素。将认识到,可以将这样的压缩数据格式进一步扩展到其它寄存器长度,例如96位、160位、192位、224位、256位、512位或更多。
[0084]图3C说明了根据本发明实施例的多媒体寄存器中的各种带符号和无符号压缩数据类型表示。无符号压缩字节表示344说明了 SIMD寄存器中无符号压缩字节的存储。将每一个字节数据元素的信息存储在字节O的位7到位O、字节I的位15到位8、字节2的位23到位16等等、以及最后字节15的位120到位127中。因而,在寄存器中使用所有可用的位。这一存储布置可以增加处理器的存储效率。并且,在访问16个数据元素的情况下,现在能够按照并行的方式对16个数据元素执行一个操作。带符号压缩字节表示345说明了带符号压缩字节的存储。注意到,每一个字节数据元素的第八位是符号指示符。无符号压缩字表示346说明了如何将字7到字O存储在SIMD寄存器中。带符号压缩字表示347与无符号压缩字寄存器中表示346类似。注意到,每一个字数据元素的第16位是符号指示符。无符号压缩双字表示348示出了如何存储双字数据元素。带符号压缩双字表示349与无符号压缩双字寄存器中表示348类似。注意到,必要的符号位是每一个双字数据元素的第32位。
[0085]图3D描述了具有32位或更多位的操作编码(操作码)格式360和与一种类型的操作码格式相对应的寄存器/存储器操作数寻址模式的一个实施例,所述操作码格式在 intel.com/products/processor/manuals/ 的万维网(www)上从加利福尼亚州 SantaClara 的英特尔公司可获得的 “ Intel? 64and IA_32Intel Architecture SoftwareDeveloper’ s Manual Combined Volumes2A and2B:1nstruction Set Reference A-Z,,中有所描述。在一个实施例中,指令可以由字段361和362中的一个或多个进行编码。可以识别每指令多达两个操作数单元,包括多达两个源操作数标识符364和365。对于一个实施例,目的地操作数标识符366与源操作数标识符364相同,而在其它实施例中,它们是不同的。对于可选实施例,目的地操作数标识符366与源操作数标识符365相同,而在其它实施例中,它们是不同的。在一个实施例中,由源操作数标识符364和365识别的源操作数之一由该指令的结果重写,而在其它实施例中,标识符364与源寄存器元素相对应,并且标识符365与目的地寄存器元素相对应。对于一个实施例,操作数标识符364和365可以用于识别32位或64位源和目的地操作数。
[0086]图3E描述了具有40或更多位的另一可选的操作编码(操作码)格式370。操作码格式370与操作码格式360相对应,并且包括可选的前缀字节378。根据一个实施例的指令可以由字段378、371和372中的一个或多个进行编码。每指令多达两个操作数单元可以由源操作数标识符374和375并且由前缀字节378识别。对于一个实施例,前缀字节378可以用于识别32位或64位源和目的地操作数。对于一个实施例,目的地操作数标识符376与源操作数标识符374相同,而在其它实施例中,它们是不同的。对于可选实施例,目的地操作数标识符376与源操作数标识符375相同,而在其它实施例中,它们是不同的。在一个实施例中,指令对由操作数标识符374和375识别的操作数中的一个或多个进行操作,并且由操作数标识符374和375识别的一个或多个操作数由该指令的结果进行重写,而在其它实施例中,将由标识符374和375识别的操作数写到另一寄存器中的另一数据元素。操作码格式360和370允许部分地由MOD字段363和373并且由可选的因子_索引-基础(scale-1ndex-base)和位移字节指定的寄存器到寄存器、存储器到寄存器、寄存器乘存储器、寄存器乘寄存器、寄存器乘立即数、寄存器到存储器寻址。
[0087]接下来转到图3F,在一些可选实施例中,可以经过协处理器数据处理(⑶P)指令来执行64位(或128位或256位或512位或更多)单指令多数据(SIMD)算术操作。操作编码(操作码)格式380描绘了具有⑶P操作码字段382和389的一种这样的⑶P指令。对于可选实施例,可以由字段383、384、387和388中的一个或多个对⑶P指令的类型和操作进行编码。可以识别每指令多达三个操作数单元,包括多达两个源操作数标识符385和390以及一个目的地操作数标识符386。协处理器的一个实施例可以对8、16、32和64位值进行操作。对于一个实施例,对整数数据元素执行指令。在一些实施例中,可以使用条件字段381来有条件地执行指令。对于一些实施例,源数据尺寸可以由字段383进行编码。在一些实施例中,可以对SIMD字段完成零(Z)、负(N)、进位(C)和溢出(V)检测。对于一些指令,饱和的类型可以由字段384进行编码。
[0088]接下来转到图3G,阐释了根据另一实施例用于提供向量压缩和旋转功能的另一可选的操作编码(操作码)格式397,这一操作编码格式397与在intel.com/products/processor/manuals/的万维网(www)上从加利福尼亚州Santa Clara的英特尔公司可获得的“Intel? Advanced Vector Extensions Programming Reference”中描述的操作码格式的类型相对应。[0089]原始χ86指令集规定具有地址音节的各种格式的I字节操作码以及在其存在根据第一“操作码”字节已知的额外字节中包含的立即数操作数。此外,存在被保留为操作码的修改因子(被称为前缀,因为必须将它们放置在指令之前)的某些字节值。当256个操作码字节(包括这些特殊前缀值)的原始调色板被耗尽时,单个字节作为换码专用于一组新的256个操作码。在添加向量指令(例如SMD)时,生成对于更多操作码的需要,并且“两个字节”操作码地图也是不充足的,即使当经过使用前缀进行扩展时。为此,在使用2个字节加可选的前缀作为标识符的额外地图中添加新的指令。
[0090]此外,为了促进64位模式中的额外寄存器,可以在前缀和操作码(以及确定操作码必需的任何换码字节)之间使用额外的前缀(被称为“REX”)。在一个实施例中,REX可以具有4个“有效载荷”位以指示在64位模式中额外寄存器的使用。在其它实施例中,它可以具有少于或多于4个的位。一般通过下面来说明至少一个指令集的一般格式(通常与格式360和/或格式370相对应):
[0091][前缀][rex]换码[换码2]操作码modrm(等等)
[0092]操作码格式397与操作码格式370相对应并且包括可选的VEX前缀字节391 (在一个实施例中以C4hex开始)来更换大多数其它常用的传统指令前缀字节和换码代码。例如,下面说明了使用两个字段来对指令进行编码的实施例,当在原始指令中存在第二换码代码时或当需要使用REX字段中的额外位(例如,XB和W字段)时,可以使用该指令。在下面说明的实施例中,传统换码由新的换码值表示,传统前缀被充分压缩为“有效载荷”字节的一部分,传统前缀被回收并可以用于未来的扩展,第二换码代码被压缩在“地图”字段中,未来的地图或特征空间可用,并且添加新的特征(例如,增加的向量长度和额外的源寄存器指定符)。
[0093][前缀][rex]换码[换码2]操作码 modrm [sib] [disp] [imm]
[0094]
[0095]Vex RXBmmmmm WvvvLpp 操作码 modrm[sib] [disp] [imm]
[0096]
新特征
[0097]根据一个实施例的指令可以由字段391和392中的一个或多个进行编码。每指令多达四个操作数单元可以由字段391结合源操作数标识符374和375并结合可选的因子-索引-基础(SIB)标识符393、可选的位移标识符394和可选的立即数字节395进行识另O。对于一个实施例,VEX前缀字节391可以用于识别32位或64位源和目的地操作数和/或128位或256位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式397提供的功能可能与操作码格式370重复,而在其它实施例中,它们是不同的。操作码格式370和397允许部分地由MOD字段373并且由可选的(SIB)标识符393、可选的位移标识符394和可选的立即数字节395指定的寄存器到寄存器、存储器到寄存器、寄存器乘存储器、寄存器乘寄存器、寄存器乘立即数、寄存器到存储器寻址。
[0098]接下来转到图3H,阐释了根据另一实施例用于提供向量压缩和旋转功能的另一可选的操作编码(操作码)格式398。操作码格式398与操作码格式370和397相对应并且包括可选的EVEX前缀字节396 (在一个实施例中以62hex开始)以代替大部分其它常用的传统指令前缀字节和换码代码并且提供额外的功能。根据一个实施例的指令可以由字段396和392中的一个或多个进行编码。每指令多达四个操作数单元和掩码可以由字段396结合源操作数标识符374和375并结合可选的因子-索引-基础(SIB)标识符393、可选的位移标识符394和可选的立即数字节395进行识别。对于一个实施例,EVEX前缀字节396可以用于识别32位或64位源和目的地操作数和/或128位、256位或512位SMD寄存器或存储器操作数。对于一个实施例,由操作码格式398提供的功能可以与操作码格式370或397重复,而在其它实施例中,它们是不同的。操作码格式398允许部分地由MOD字段373并且由可选的(SIB)标识符393、可选的位移标识符394和可选的立即数字节395指定的具有掩码的寄存器到寄存器、存储器到寄存器、寄存器乘存储器、寄存器乘寄存器、寄存器乘立即数、寄存器到存储器寻址。通常通过下面来说明至少一个指令集的一般格式(通常与格式360和/或格式370相对应):
[0099]evexlRXBmmmmm WvvvLpp evex4 操作码 modrm[sib] [disp] [imm]
[0100]对于一个实施例,根据EVEX格式398编码的指令可以具有额外的“有效载荷”位,其可以用于利用例如以用户可配置的掩码寄存器,或额外的操作数或从128位、256位或512位向量寄存器进行的选择或要从其进行选择的更多寄存器等等为例的额外的新特征来提供向量压缩和旋转功能。
[0101]例如,在VEX格式397可以用于使用隐含掩码来提供向量压缩和旋转功能的情况下,EVEX格式398可以用于使用简明的用户可配置掩码来提供向量压缩和旋转功能。此外,在VEX格式397可以用于对128位或256位向量寄存器提供向量压缩和旋转功能的情况下,EVEX格式398可以用于对128位、256位、512位或更大(或更小)的向量寄存器提供向量压缩和旋转功能。
[0102]通过下面的示例来说明用于提供向量压缩和旋转功能的示例指令:
[0103]
【权利要求】
1.一种处理器,包括: 掩码寄存器,包括第一多个数据字段,其中,所述掩码寄存器中的所述第一多个数据字段中的每一个与向量中的元素单元相对应; 解码级,用于对指定向量源操作数、所述掩码寄存器、向量目的地操作数和向量目的地偏移的第一指令进行解码;以及 一个或多个执行单元,用于响应于解码的第一指令来执行以下操作: 读取所述掩码寄存器中的所述第一多个数据字段的值;并且 对于所述掩码寄存器中具有第一值的所述第一多个数据字段中的每一个,将相对应的向量元素从所述向量源操作数拷贝到所述向量目的地中在所述向量目的地偏移单元处开始的相邻顺序元素单元。
2.如权利要求1所述的处理器,其中,将来自所述向量源操作数的所述相对应的向量元素拷贝到以所述向量目的地中的元素单元的总数量为模的相邻顺序元素单元。
3.如权利要求2所述的处理器,其中,所述第一指令是向量压缩和旋转指令。
4.如权利要求1所述的处理器,其中,将所述相对应的向量元素从所述向量源操作数拷贝到在所述向量目的地偏移单元处开始的相邻顺序元素单元,仅直到填充了最高有效向量目的地元素单元为止。
5.如权利要求4所述的处理器,其中,所述第一指令是向量压缩、填充和旋转指令。
6.如权利要求1所述的处理器,其中,所述第一值为一。
7.如权利要求1所述的处理器,其中,在将每一个相对应的向量元素从所述向量源操作数拷贝到所述向量目的地中的相邻顺序元素单元时,将所述掩码寄存器中的相对应数据字段的值从所述第一值改变到第二值。
8.如权利要求5所述的处理器,其中,所述第二值为零。
9.如权利要求1所述的处理器,其中,拷贝到所述向量目的地操作数中的所述数据元素是32位数据元素。
10.如权利要求1所述的处理器,其中,拷贝到所述向量目的地操作数中的所述数据元素是64位数据元素。
11.如权利要求1所述的处理器,其中,所述向量目的地操作数是128位向量寄存器。
12.如权利要求1所述的处理器,其中,所述向量目的地操作数是256位向量寄存器。
13.如权利要求1所述的处理器,其中,所述向量目的地操作数是512位向量寄存器。
14.一种用于记录包括第一可执行指令的功能描述材料的机器可读介质,所述第一可执行指令如果由机器执行,则使所述机器: 读取掩码寄存器中的第一多个数据字段的值;并且 对于所述掩码寄存器中具有第一值的所述第一多个数据字段中的每一个,将相对应的向量元素从向量源操作数拷贝到向量目的地中在向量目的地偏移单元处开始的相邻顺序元素单元。
15.如权利要求14所述的机器可读介质,其中,将来自所述向量源操作数的所述相对应的向量元素拷贝到以所述向量目的地中的元素单元的总数量为模的相邻顺序元素单元。
16.如权利要求14所述的机器可读介质,其中,将所述相对应的向量元素从所述向量源操作数拷贝到在所述向量目的地偏移单元处开始的相邻顺序元素单元,仅直到填充了最高有效向量目的地元素单元为止。
17.如权利要求16所述的机器可读介质,所述第一可执行指令如果由所述机器执行,则进一步使所述机器: 对于被从所述向量源操作数拷贝到所述向量目的地中的相邻顺序元素单元的每一个相对应的向量元素,将所述掩码寄存器中的相对应数据字段的值从所述第一值改变到第二值。
18.如权利要求14所述的机器可读介质,其中,存储到所述向量目的地中的所述数据元素是32位数据元素。
19.如权利要求14所述的机器可读介质,其中,存储到所述向量目的地中的所述数据元素是64位数据元素。
20.如权利要求14所述的机器可读介质,其中,所述向量目的地是128位向量寄存器。
21.如权利要求14所述的机器可读介质,其中,所述向量目的地是256位向量寄存器。
22.如权利要求14所述的机器可读介质,其中,所述向量目的地是512位向量寄存器。
23.一种处理器,包括: 解码级,用于对指定向量源操作数、掩码寄存器、向量目的地操作数和向量目的地偏移的第一单指令多数据(SIMD)指令进行解码;以及 一个或多个执行单元,用于响应于解码的第一 SIMD指令来执行以下操作: 读取所述掩码寄存器中的第一多个数据字段的值;并且` 对于所述掩码寄存器中具有第一值的所述第一多个数据字段中的每一个,将相对应的向量元素从所述向量源拷贝到所述向量目的地中在所述向量目的地偏移单元处开始的以所述向量目的地中的元素单元的总数量为模的相邻顺序元素单元。
24.如权利要求23所述的处理器,其中,所述向量目的地是128位向量寄存器。
25.如权利要求20所述的处理器,其中,所述向量目的地是256位向量寄存器。
26.如权利要求20所述的处理器,其中,所述向量目的地是512位向量寄存器。
27.一种处理器,包括: 解码级,用于对指定向量源操作数、掩码寄存器、向量目的地操作数和向量目的地偏移的第一单指令多数据(SIMD)指令进行解码;以及 一个或多个执行单元,用于响应于解码的第一 SIMD指令来执行以下操作: 读取所述掩码寄存器中的第一多个数据字段的值;并且 对于所述掩码寄存器中具有掩蔽值的所述第一多个数据字段中的每一个,将相对应的向量元素从所述向量源拷贝到所述向量目的地中在所述向量目的地偏移单元处开始的相邻顺序元素单元,仅达到并且直到填充了所述最高有效向量目的地元素单元为止。
28.如权利要求27所述的处理器,其中,所述一个或多个执行单元响应于解码的第一SMD指令来执行以下操作: 对于被从所述向量源拷贝到所述向量目的地中的相邻顺序元素单元的每一个相对应的向量元素,将所述掩码寄存器中的相对应的数据字段的值从所述未掩蔽值改变到掩蔽值。
29.如权利要求28所述的处理器,其中,所述掩蔽值为零。
30.一种处理系统,包括:存储器;以及 多个处理器,每一个处理器包括: 解码级,用于对指定向量源操作数、掩码操作数、向量目的地操作数和向量目的地偏移的第一 SMD指令进行解码;以及 一个或多个执行单元,用于响应于解码的第一 SIMD指令来执行以下操作: 读取掩码寄存器中的第一多个数据字段的值;并且 对于所述掩码寄存器中具有未掩蔽值的所述第一多个数据字段中的每一个,将相对应的向量元素从所述向量源拷贝到所述向量目的地中在所述向量目的地偏移单元处开始的相邻顺序元素单元。
31.如权利要求30所述的处理系统,其中,将来自所述向量源的所述相对应的向量元素拷贝到以所述向量目的地中的元素单元的总数量为模的相邻顺序元素单元。
32.如权利要求30所述的处理系统,其中,所述一个或多个执行单元进一步响应于所述第一 SIMD指令来执行以下操作: 对于不与从所述向量源拷贝的向量元素相对应的每一个向量目的地元素,使所述向量目的地元素的值归零。
33.如权利要求30所述的处理系统,其中,将来自所述向量源的所述相对应的向量元素拷贝到在所述向量目的地偏移单元处开始的相邻顺序元素单元,仅达到并且直到填充了最高有效向量目的地元素单元为止。
34.如权利要求33所述的处理系统,所述一个或多个执行单元进一步响应于所述第一SMD指令来执行以下操作: 对于被从所述向量源拷贝到所述向量目的地中的相邻顺序元素单元的每一个相对应的向量元素,将所述掩码寄存器中的相对应的数据字段的值从所述未掩蔽值改变到掩蔽值。
35.如权利要求34所述的处理系统,其中,所述掩蔽值为零。
36.如权利要求30所述的处理系统,其中,存储到所述向量目的地中的所述数据元素是32位数据元素。
37.如权利要求30所述的处理系统,其中,存储到所述向量目的地中的所述数据元素是64位数据元素。
38.如权利要求30所述的处理系统,其中,所述向量目的地是128位向量寄存器。
39.如权利要求30所述的处理系统,其中,所述向量目的地是256位向量寄存器。
40.如权利要求30所述的处理系统,其中,所述向量目的地是512位向量寄存器。
【文档编号】G06F9/30GK103793201SQ201310524909
【公开日】2014年5月14日 申请日期:2013年10月30日 优先权日:2012年10月30日
【发明者】T·乌利尔, E·乌尔德-艾哈迈德-瓦勒, R·瓦伦丁 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1