用于在单个指令中执行移位和异或运算的方法和装置的制作方法

文档序号:6339626阅读:159来源:国知局

专利名称::用于在单个指令中执行移位和异或运算的方法和装置的制作方法
技术领域
:本发明属于计算机处理领域。更具体地,各个实施例涉及用于执行移位和异或(XOR)运算的指令。
背景技术
:单指令多数据(SIMD)指令在各种应用中可用于并行地处理多个数据元(压缩数据)。串行地执行诸如移位运算和异或(XOR)运算的运算会降低性能。本发明通过示例进行说明,且不受限于附图的各个图,其中图IA是根据本发明的一个实施例的计算机系统的框图,该计算机系统被形成为具有处理器,该处理器包括用于执行移位和异或运算指令的执行单元;图IB是根据本发明的替代实施例的另一示例性计算机系统的框图;图IC是根据本发明的另一替代实施例的又一示例性计算机系统的框图;图2是根据本发明的一个实施例的处理器的微体系结构的框图,该处理器包括用于执行移位和异或运算的逻辑电路;图3A示出根据本发明的一个实施例的多媒体寄存器中的各种压缩数据类型表示;图3B示出根据替代实施例的压缩数据类型;图3C示出根据本发明的一个实施例的多媒体寄存器中的各种有符号和无符号压缩数据类型表示;图3D示出运算编码(运算码)格式的一个实施例;图3E示出替代的运算编码(运算码)格式;图3F示出又一替代的运算编码格式;图4是根据本发明的用于执行指令的逻辑的一个实施例的框图。图5是要与一个实施例协同执行的运算的流程图。具体实施例方式以下说明书描述了一种用于在处理装置、计算机系统或软件程序中执行移位和异或运算的技术的实施例。在以下描述中,陈述了诸如处理器类型、微体系结构条件、事件、启用机制等来提供对本发明的更透彻理解。然而,本领域技术人员将理解,没有这些特定细节也可实施本发明。此外,未详细示出一些公知的结构、电路等,以避免不必要地混淆本发明的实施例。虽然参照处理器描述了以下实施例,但其他实施例也可应用于其他类型的集成电路和逻辑器件。本发明的相同技术和示教能容易地应用于可受益于较高流水线吞吐量和改进性能的其他类型的电路或半导体器件。本发明的示教可应用于执行数据操纵的任何处理器或机器。然而,本发明的实施例不限于执行256位、128位、64位、32位或16位数据运算的处理器或机器,且可应用于其中需要运算压缩数据的任何处理器和机器。虽然以下示例描述了执行单元和逻辑电路背景下的指令处理和分配,但本发明的其他实施例可通过存储于有形介质上的软件来实现。在一个实施例中,本发明的方法以机器可执行指令的方式具体化。这些指令可被用于使利用这些指令编程的通用或专用处理器执行本发明的步骤。本发明的多个实施例可作为计算机程序产品或软件提供,其可包括其上存储了计算机程序指令的计算机可读介质,这些计算机程序指令可用于对计算机(或其它电子设备)编程以执行根据本发明的过程。替代地,本发明的步骤可通过包含用于执行这些步骤的硬接线逻辑的特定硬件部件来执行,或通过已编程计算机部件和定制硬件部件的任何组合来执行。此类软件可被存储在系统中的存储器中。类似地,代码可经由网络分发,或通过其他计算机可读介质来分发。因此,计算机可读介质可包括用于以机器(计算机)可读的形式存储或发送信息的任何机构,包括但不限于软盘、光盘、光盘只读存储器(CD-ROM)、以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁或光卡、闪存、经由因特网的传输、电形式、光形式、声音形式或其他形式的传播信号(例如载波、红外信号、数字信号等)等。因此,计算机可读介质包括适用于以机器(例如计算机)可读的形式存储或发送电子指令或信息的任何类型的介质/机器可读介质。此外,本发明也可被下载为计算机程序产品。同样,程序可从远程计算机(例如服务器)被传输至请求计算机(例如客户机)。该程序的传输可通过被具体化在经由通信链路(例如调制解调器、网络连接等)的载波或其它传输介质中的电、光、声音或其它形式的数据信号的方式。一种设计可经过多个阶段,从创建到模拟到制造。表示设计的数据可按照多种方式来表示该设计。首先,因为在模拟中有用,该硬件可使用硬件描述语言或另一功能描述语言来表示。此外,可在设计过程的一些阶段制造具有逻辑和/或晶体管门电路的电路级模型。再者,在一些阶段,大多数设计达到表示各种器件在硬件模型中的物理布置的数据级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定各种功能部件在用于生产集成电路的掩模的不同掩模层上存在或不存在的数据。在该设计的任何表示中,该数据可以机器可读介质的任何形式来存储。经调制或其它方式生成的用于发送此类信息的光或电波、存储器、诸如盘的磁或光存储可以是该机器可读介质。这些介质中的任一种可“承载”或“表明”该设计或软件信息。当表明或承载该代码或设计的电载波被发送时,只要执行该电信号的复制、缓存或重新发送,就建立了新的副本。因此,通信提供商或网络提供商可建立具体化本发明技术的物品(载波)的副本。在现代处理器中,多个不同执行单元被用于处理和执行各种代码和指令。并非所有指令都被等同地创建,因为一些指令较快地完成,而另一些会花费数目庞大的时钟周期。指令的吞吐越快,处理器的总体性能越好。因此,使许多指令尽可能快地执行会是有利的。然而,存在具有更高复杂度且在执行时间和处理器资源方面需要更多的某些指令。例如,存在浮点指令、装载/存储操作、数据移动等。随着越来越多的计算机系统被用于因特网和多媒体应用,已随时间引入了附加的处理器支持。例如,单指令多数据(SIMD)整数/浮点指令和流送SIMD扩展(SSE)是减少执行特定程序任务所需的总指令数的指令,这又减少了功耗。这些指令可通过对多个数据元进行并行运算来加速软件性能。因此,可在包括视频、语音以及图像/照片处理的宽泛范围的应用中实现性能提高。SIMD指令在微处理器和相似类型的逻辑电路中的实现通常涉及多种问题。此外,SIMD运算的复杂度通常导致对用于正确处理和操纵数据的附加电路的需要。当前,尚无SIMD移位和异或指令可用。在不存在SIMD移位和异或指令的情况下,根据本发明的实施例,可能需要大量指令和数据寄存器来在诸如音频/视频/图形压缩、处理以及操纵的应用中获得相同结果。因此,根据本发明的实施例的至少一个移位和异或指令可减少代码开销和资源要求。本发明的实施例提供利用SIMD相关硬件将移位和异或运算实现为算法的方法。当前,对SIMD寄存器中的数据执行移位和异或运算是有些困难和冗长的。相比于执行那些运算的实际指令数量,一些算法需要更多指令用于安排数据进行算术运算。通过实现根据本发明的实施例的移位和异或运算的实施例,实现移位和异或处理所需的指令的数量可显著减少。本发明的实施例涉及用于实现移位和异或运算的指令。根据一个实施例对数据元进行的移位和异或运算可一般表示如下DESTl—SRCl[SRC2];在一个实施例中,SRCl存储具有多个数据元的第一运算数,而SRC2包含表示要被该移位和异或指令移动多少值的值。在其它实施例中,移位和异或值指示符可被存储于紧邻的字段中。在上述流程中,“DEST”(目地的)和“SRC”(源)是用于表示相应数据或运算的源和目的地的通用术语。在一些实施例中,它们可通过寄存器、存储器或具有与所描述的名称或功能不同的其它存储区来实现。例如,在一个实施例中,DESTl和DEST2可以是第一和第二临时存储区(例如“TEMP1”和“TEMP2”寄存器),SRC1和SRC3可以是第一和第二目的地存储区(例如“DEST1”和“DEST2”寄存器),如此等等。在其它实施例中,SRC和DEST存储区中的两个或更多个可与同一存储区(例如SIMD寄存器)内的不同数据存储元相对应。图IA是根据本发明一个实施例的示例性计算机系统的框图,该计算机系统被形成为具有处理器,该处理器包括用于执行移位和异或运算的指令的执行单元。根据本发明,系统100包括诸如处理器102的部件,该部件采用包括执行诸如本文所描述的实施例中的用于处理数据的算法的逻辑。系统100代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司买到的PENTIUMIH>PENTIUM4、Xeontm、Itanium、XScaletm和/或StrongARMtm微处理器的处理系统,不过也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统100可执行可从美国华盛顿州雷蒙德市的微软公司买到的WINDOWStm操作系统的一个版本,不过也可使用其它操作系统(例如UNIX和Linux)、嵌入式软件、和/或图形用户界面。因此,本发明的实施例不限于硬件电路和软件的任何特定组合。诸实施例不限于计算机系统。本发明的替代实施例也可用于诸如手持设备和嵌入式应用的其它设备。手持设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)以及手持PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(网络PC)、机顶盒、网络集线器、广域网(WAN)交换机或对操作数执行移位和异或运算的任何其它系统。此外,已实现一些体系结构以使指令能同时运算若干数据,以提高多媒体应用的效率。随着数据类型和数据量增加,计算机和它们的处理器必须被增强以按照更高效的方法操纵数据。图IA是根据本发明一个实施例的计算机系统100的框图,该计算机系统100被形成为具有处理器102,该处理器102包括用于执行对多个数据元的移位和异或算法的一个或更多个执行单元108。一个实施例可在单处理器桌面或服务器系统的背景下进行描述,但替代实施例可被包括在多处理器系统中。系统100是中枢体系结构的示例。计算机系统100包括用于处理数据信号的处理器102。处理器102可以是复杂指令集计算机(CISC)微处理器、简约指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器或诸如例如数字信号处理器的任何其他处理器设备。处理器102耦合至处理器总线110,该处理器总线110可在处理器102与系统100中的其它部件之间传输数据信号。系统100的元件执行本领域技术人员熟知的它们的常规功能。在一个实施例中,处理器102包括一级(Li)内部高速缓存104。取决于体系结构,处理器102可具有单级内部高速缓存或多级内部高速缓存。替代地,在另一实施例中,高速缓存可驻留在处理器102外部。取决于特定实现和需要,其它实施例也可包括内部和外部高速缓存的组合。寄存器文件106可在包括整数寄存器、浮点寄存器、状态寄存器以及指令指针寄存器的各种寄存器中存储不同类型的数据。包括用于执行整数和浮点运算的逻辑的执行单元108也可驻留于处理器102中。处理器102还包括存储用于某些宏指令的微代码的微代码(ucode)ROM。对于该实施例而言,执行单元108包括用于处理压缩指令集109的逻辑。在一个实施例中,压缩指令集109包括用于对多个运算数执行移位和异或的压缩移位和异或指令。通过将压缩指令集109包括在通用处理器102以及用于执行指令的关联电路的指令集中,许多多媒体应用所使用的操作可使用通用处理器102中的压缩数据来执行。因此,通过将处理器数据总线的全带宽用于对压缩数据执行运算,可使许多多媒体应用加速和更高效地执行。这样可消除在处理器数据总线上传输较小单位数据以在一个时刻对数据元执行一个或更多个运算的需要。执行单元108的替代实施例也可在微控制器、嵌入式处理器、图形设备、DSP以及其它类型的逻辑电路中使用。系统100包括存储器120。存储器120可以是动态随机存取存储器(DRAM)器件、静态随机存取存储器(SRAM)器件、闪存器件或其它存储器件。存储器120可存储通过数据信号表示的可由处理器102执行的指令和/或数据。系统逻辑芯片116耦合至处理器总线110和存储器120。所示实施例中的系统逻辑芯片116是存储器控制中枢(MCH)。处理器102可经由处理器总线110向MCH116通信。MCH116向存储器120提供高带宽存储器通道118,以用于存储指令和数据且用于存储图形命令、数据和纹理。MCH116用于在处理器102、存储器120以及系统100中的其它部件之间引导数据信号,并在处理器总线110、存储器120以及系统I/O122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可提供用于耦合至图形控制器112的图形端口。MCH116通过存储器接口118耦合至存储器120。图形卡112通过加速图形端口(AGP)互连114耦合至MCH116。系统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设备、闪存器件或其它大容量存储设备。对于系统的另一实施例而言,用于执行具有移位和异或指令的算法的执行单元可与芯片上系统一起使用。芯片上系统的一个实施例由处理器和存储器组成。用于一种此类系统的存储器是闪存。该闪存可位于与处理器和其它系统部件相同的同一管芯上。此外,诸如存储器控制器或图形控制器的其它逻辑块也可位于芯片上系统上。图IB示出实现根据本发明一个实施例的原理的数据处理系统140。本领域技术人员将容易理解,本文所描述的实施例可与替代的处理系统一起使用,而不背离本发明的范围。计算机系统140包括能执行包括移位和异或运算的SIMD操作的处理核159。对于一个实施例而言,处理核150表示具有任何类型的体系结构的处理单元,包括但不限于CISC、RISC或VLIW型体系结构。处理核159也可适用于以一种或更多种工艺技术来制造,而且通过以足够的细节被表示在机器可读介质上,处理核159可适合便于所述制造。处理核159包括执行单元142、一组寄存器文件145以及解码器144。处理核159还包括对理解本发明而言不必要的附加电路(未示出)。执行单元142用于执行由处理核159接收的指令。除了识别典型的处理器指令之外,执行单元142可识别用于对压缩数据格式进行运算的压缩指令集143中的指令。压缩指令集143包括用于支持移位和异或运算的指令,且可包括其它压缩指令。执行单元142通过内部总线耦合至寄存器文件145。寄存器文件145表示处理核159上的用于存储包括数据的信息的存储区。如上所述,应理解用于存储压缩数据的存储区不是关键的。执行单元142耦合至解码器144。解码器144用于将处理核159所接收的指令解码成控制信号和/或微代码入口点。响应于这些控制信号和/或微代码入口点,执行单元142执行适当的操作。处理核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。数据处理系统140的一个实施例供移动、网络和/或无线通信之用,以及处理核159能执行包括移位和异或运算的SIMD操作。处理核159可用各种音频、视频、成像以及通信算法编程,包括诸如沃尔什-哈达马德(Walsh-Hadamard)变换、快速傅立叶变换(FFT)、离散正弦变换(DCT)的离散变换以及它们各自的逆变换;诸如色空间变换、视频编码运动估计或视频解码运动补偿的压缩/解压缩技术;以及诸如脉冲编码调制(PCM)的调制/解调(MODEM)功能。本发明的一些实施例也可应用于图形应用,诸如三维(“3D”)建模、渲染、对象碰撞检测、3D对象变换和照明等。图IC示出能执行SIMD移位和异或运算的数据处理系统的另一实施例。根据一个替代实施例,数据处理系统160可包括主处理器166、SIMD协处理器161、高速缓存167以及输入/输出系统168。输入/输出系统168可任选地耦合至无线接口169。SIMD协处理器161能执行包括移位和异或运算的SIMD运算。处理核170可适于以一种或更多种工艺技术来制造,且通过以足够的细节被表示在机器可读介质上,可适合便于包括处理核170的数据处理系统160的全部或一部分的制造。对于一个实施例而言,SIMD协处理器161包括执行单元162和一组寄存器文件164。主处理器165的一个实施例包括解码器165,该解码器165用于识别指令集163中的指令,包括由执行单元162执行的SIMD移位和异或计算指令。对于替代实施例而言,SIMD协处理器161也包括用于解码指令集163中的指令的解码器的至少一部分165B。处理核170还包括对理解本发明的实施例而言不必要的附加电路(未示出)。在操作时,主处理器166执行数据处理指令流,该数据处理指令流控制一般类型的数据处理操作,包括与高速缓存167以及输入/输出系统168的交互。数据处理指令流内嵌有SIMD协处理器指令。主处理器166的解码器165将这些SIMD协处理器指令识别为应当由附连的SIMD协处理器161执行的类型。因此,主处理器166将这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号)发送到协处理器总线166上,在该总线166处它们被任何附连的SIMD协处理器接收。在该情况下,SIMD协处理器161将接受并执行发送给它的任何已接收SIMD协处理器指令。数据可经由无线接口169接收以通过SIMD协处理器指令进行处理。作为一个示例,可以数字信号的形式接收语音通信,该数字信号可由SIMD协处理器指令处理,以再生代表该语音通信的数字音频样本。作为另一示例,已压缩音频和/或视频可以数字比特流的形式接收,该数字比特流可由SIMD协处理器指令处理,以再生数字音频样本和/或运动视频帧。对于处理核170的一个实施例而言,主处理器166以及SIMD协处理器161被集成到单个处理核170中,该处理核170包括执行单元162、一组寄存器文件164以及用于识别包括SIMD移位和异或指令的指令集163中的指令的解码器165。图2是根据本发明一个实施例的包括用于执行移位和异或指令的逻辑电路的处理器200的微体系结构的框图。对于移位和异或指令的一个实施例而言,该指令可将浮点尾数值向右移动由指数所表示的量,将经移位值与一个值进行异或运算,并产生最终结果。在一个实施例中,有序前端201是处理器200的一部分,其读取要执行的宏指令,并将它们准备就绪以便于后来在处理器流水线中使用。该前端201可包括若干单元。在一个实施例中,指令预取器226从存储器读取宏指令,并将它们馈送到指令解码器228中,指令解码器228又将它们解码成机器可执行的称为微指令或微运算(也称为微op或uop)的原语。在一个实施例中,追踪高速缓存(tracecache)230获取已解码的微指令,并将它们组装成微指令队列234中的程序有序序列或记录以供执行。当追踪高速缓存230遇到复杂宏指令时,微代码R0M232提供完成该运算所需的微指令。许多宏指令被转换成单个微指令,而其它宏指令需要若干微指令来完成整个操作。在一个实施例中,如果需要四个以上微指令来完成宏指令,则解码器228访问微代码ROM232来执行该宏指令。对于一个实施例而言,压缩移位和异或指令可被解码成少量微指令以供在指令解码器228处进行处理。在另一实施例中,如果需要多个微指令来完成该运算,则用于压缩移位和异或算法的指令可被存储在微代码ROM232中。追踪高速缓存230指的是用于确定在微代码ROM232中读取用于移位和异或算法的微代码序列的正确微指令指针的入口点可编程逻辑阵列(PLA)。在微代码ROM232完成当前宏指令的微运算排序之后,机器的前端201恢复从追踪高速缓存230读取微运算。一些SIMD和其它多媒体类型的指令被认为是复杂指令。许多浮点相关指令也是复杂指令。因而,当指令解码器228遇到复杂宏指令时,在适当的位置访问微代码ROM232以取回用于该宏指令的微代码序列。用于执行该宏指令的各个微运算被传递至无序执行引擎203以在适当的整数和浮点执行单元处执行。无序执行引擎203是微指令被准备好以供执行的地方。无序执行逻辑具有多个缓冲器,当微指令沿流水线向下并被排定以供执行时,这些缓冲器用于使微指令流平滑并对其重新排序以最优化性能。分配器逻辑分配每个微指令执行所需的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器文件中的条目上。该分配器还为两个微指令队列(一个用于存储器操作,另一个用于非存储器操作)之一中的每个微指令分配条目,该分配器在以下指令调度器之前存储器调度器、快速调度器202、慢速/通用浮点调度器204以及简单浮点调度器206。微指令调度器202、204、206基于微指令的相关输入寄存器操作数源的就绪和微指令完成它们的操作所需的执行资源的可用性来确定微指令何时准备好执行。本实施例的快速调度器202可在主时钟周期的每半个周期时调度,而其它调度器在每个主处理器时钟周期仅调度一次。调度器仲裁分派端口来排定微指令以供执行。寄存器文件208、210位于调度器202、204、206与执行块211中的执行单元212、214、216、218、220、222、224之间。存在分别用于整数和浮点运算的不同的寄存器文件208、210。本实施例的每个寄存器文件208、210还包括旁路网络,该旁路网络可将尚未写入寄存器文件的刚完成的结果通过旁路发送或转发至新的相关微指令。整数寄存器文件208和浮点寄存器文件210也能相互传递数据。对于一个实施例,整数寄存器文件208被分割成两个独立的寄存器文件,一个寄存器文件用于数据的低位32位,而第二寄存器文件用于数据的高位32位。一个实施例的浮点寄存器文件210具有128位宽条目,因为浮点指令通常具有从64到128位宽的运算数。执行块211包含执行单元212、214、216、218、220、222、224,指令实际在这些执行单元中执行。该部分包括存储微指令需要执行的整数和浮点数据运算数值的寄存器文件208、210。本实施例的处理器200由多个执行单元组成地址产生单元(AGU)212、AGU214、快速ALU(算术逻辑单元)216、快速ALU218、慢速ALU220、浮点ALU222、浮点移动单元224。对于该实施例,浮点执行块222、224执行浮点、MMX、SIMD以及SSE运算。本实施例的浮点ALU222包括用于执行除法、平方根以及其它微运算的64位X64位浮点除法器。对于本发明的实施例而言,涉及浮点值的任何动作利用该浮点硬件进行。例如,整数格式和浮点格式之间的转换涉及浮点寄存器文件。类似地,浮点除法运算在浮点除法器处进行。另一方面,非浮点数和整数类型利用整数硬件资源进行处理。简单而非常频繁的ALU操作由高速ALU执行单元216、218完成。本实施例的快速ALU216、218可在半个时钟周期的有效等待时间内执行快速运算。对于一个实施例而言,多数复杂整数运算由慢速ALU220完成,因为慢速ALU220包括用于长等待时间类型的运算的整数执行硬件,诸如乘法器、移位器、标记逻辑以及分支处理。存储器装载/存储操作由AGU212、214执行。对于该实施例,整数ALU216、218、220在对64位数据运算数执行整数运算的背景下进行描述。在替代实施例中,可实现ALU216,218,220以支持包括16、32、128、256的各种数据位。类似地,可实现浮点单元222、224以支持具有各种位宽的多个运算数。对于一个实施例而言,浮点单元222、224可协同SIMD和多媒体指令对128位宽压缩数据运算数进行运算。术语“寄存器”在本文中被用于指示处理器上的存储位置,这多个位置被用作用于标识运算数的宏指令的一部分。换言之,本文所指的寄存器是从处理器外部(从程序员角度)可见的寄存器。然而,实施例的寄存器在含义上不应限于特定类型的电路。相反,实施例的寄存器仅需要能存储和提供数据,并执行本文中所描述的功能。本文所描述的寄存器可利用任何数量的不同技术通过处理器中的电路来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器文件还包含用于压缩数据的16个XMM和通用寄存器、8个多媒体(例如“EM64T”加法)多媒体SIMD寄存器。对于以下讨论,寄存器应被理解为设计成保存压缩数据的数据寄存器,诸如来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器的64位宽MMXtm寄存器(在一些实例中也称为“mm”寄存器)。既有整数形式又有浮点形式的这些MMX寄存器可与伴随SIMD和SSE指令的压缩数据元一起运算。相似地,与SSE2、SSE3、SSE4或更高级技术(通称为“SSEx”)有关的128位宽XMM寄存器也可被用于保存此类压缩数据运算数。在该实施例中,在存储压缩数据和整数数据时,寄存器不需要区分这两种数据类型。在一个实施例中,其它寄存器或寄存器组合可被用于存储256位或更多数据。在以下附图的示例中,描述了多个数据运算数。图3A示出了根据本发明一个实施例的多媒体寄存器中的各种压缩数据类型表示。图3A示出128位宽运算数的压缩字节310、压缩字320以及压缩双字(dwOrd)330的数据类型。该示例的压缩字节格式310是128位长度,且包含16个压缩字节数据元。一个字节在此被定义为8位数据。每个字节数据元的信息被存储在字节0的位7到位0、字节1的位15到位8、字节2的位23到位16、以及最终字节15的位120到位127中。因此,该寄存器中的所有可用位均被使用。该存储布置提高了处理器的存储效率。此外,在16个数据元被访问的情况下,现可对16个数据元并行地执行一个运算。一般而言,数据元是与同样长度的其它数据元一起存储于单个寄存器或存储器位置中的单个数据片段。在与SSEx技术有关的压缩数据序列中,存储于XMM寄存器中的数据元数量为128位除以单个数据元的位长度。相似地,在与MMX和SSE技术有关的压缩数据序列中,存储于MMX寄存器中的数据元数量为64位除以单个数据元的位长度。虽然图3A中所示的数据类型是128位长度,但本发明的实施例也可运算64位宽或其它大小的运算数。该示例的压缩字格式320是128位长度,且包含8个压缩字数据元。每个压缩字包含16个信息位。图3A的压缩双字格式330是128位长,且包含四个压缩双字数据元。每个压缩双字数据元包含32位信息。压缩四倍长字(quadword)是128位长度,且包含两个压缩的四倍长字数据元。图3B示出替代的寄存器内数据存储格式。每个压缩数据可包括一个以上独立数据元。示出了三种压缩数据格式半压缩(packedhalf)341、单压缩(packedsingle)342以及双压缩(packeddouble)343ο半压缩341、单压缩342以及双压缩343的一个实施例包含定点(fixed-point)数据元。对于一个或更多个半压缩341的替代实施例而言,单压缩342和双压缩343可包含浮点数据元。半压缩341的一个替代实施例是包含8个16位数据元的128位长度。单压缩342的一个实施例是128位长度,且包含4个32位数据元。双压缩343的一个实施例是128位长度,且包含2个64位数据元。将理解,此类压缩数据格式可进一步被扩展为其它寄存器长度,例如96位、160位、192位、224位、256位或更长。图3C示出根据本发明一个实施例的多媒体寄存器中的各种有符号和无符号压缩数据类型表示。无符号压缩字节表示344示出了SIMD寄存器中的无符号压缩字节的存储。每个字节数据元的信息被按位存储于字节0的位7到位0、字节1的位15到位8、字节2的位23到位16以及最终字节15的位120到位127中。因此,该寄存器中的所有可用位均被使用。该存储布置可提高处理器的存储效率。此外,在16个数据元被访问的情况下,现可对16个数据元并行地执行一个运算。有符号压缩数据表示345示出了有符号压缩字节的存储。注意,每个字节数据元的第8位是符号指示符。无符号压缩字表示346示出了字7到字0如何被存储于SIMD寄存器中。有符号压缩字表示347与无符号压缩字寄存器内表示346相似。注意,每个字数据元的第16位是符号指示符。无符号压缩双字表示348示出双字数据元如何被存储。有符号压缩双字表示349与无符号压缩双字寄存器内表示348相似。注意,必需的符号位是每个双字数据元的第32位。图3D是与可从美国加利福尼亚州圣克拉拉市的英特尔公司的万维网intel.com/design/litcentr上获得的“IA-32英特尔体系结构软件开发者手册卷2指令集参考(IA-32IntelArchitectureSoftwareDeveloper'sManualVolume2:InstructionSetReference)”中描述的运算码格式类型相对应的具有32或更多位的运算编码(运算码)格式360以及寄存器/存储器运算数寻址模式的一个实施例的描述。在一个实施例中,移位和异或运算可通过一个或更多个字段361和362来编码。对每个指令可标识多达两个运算数位置,包括多达两个源运算数标识符364和365。对于移位和异或指令的一个实施例而言,目的地运算数标识符366与源运算数标识符364相同,而在其它实施例中,它们不同。对于替代实施例,目的地运算数标识符366与源运算数标识符365相同,而在其它实施例中它们不同。在移位和异或指令的一个实施例中,由源运算数标识符364和365标识的源运算数之一被移位和异或运算的结果盖写,而在其它实施例中,标识符364与源寄存器相对应,而标识符365与目的地寄存器元相对应。对于移位和异或指令的一个实施例而言,运算数标识符364和365可被用于标识32位或64位源和目的地运算数。图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-index-base,SIB)和位移字节指定的寄存器到寄存器寻址、存储器到寄存器寻址、通过寄存器的寄存器寻址、直接寄存器寻址、寄存器到存储器寻址。接着转到图3F,在一些替代实施例中,64位单指令多数据(SIMD)算术运算可通过协处理器数据处理(CDP)指令来执行。运算编码(运算码)格式380描述具有CDP运算码字段382和389的一个此类⑶P指令。对于移位和异或运算的替代实施例而言,⑶P指令的类型可通过一个或更多个字段383、384、387以及388来编码。对每个指令可标识多达三个运算数位置,包括多达两个源运算数标识符385和390以及一个目的地运算数标识符386。协处理器的一个实施例可对8、16、32以及64位值进行运算。对于一个实施例而言,对浮点数据元执行移位和异或运算。在一些实施例中,利用选择字段381,可有条件地执行移位和异或指令。对于一些移位和异或指令,源数据大小可通过字段383来编码。在移位和异或指令的一些实施例中,零(Z)、负(N)、进位(C)以及溢出(V)检测可在SIMD字段上进行。对于一些指令,饱和类型可通过字段384来编码。图4是根据本发明的用于对压缩数据运算数执行移位和异或运算的逻辑的一个实施例的框图。可实现本发明的实施例以作用于诸如上述的各种类型的运算数。为简单起见,以下讨论和示例是在用于处理数据元的移位和异或指令的背景下进行的。在一个实施例中,第一运算数401被移位器410移动由输入405指定的量。在一个实施例中,它是右移。然而在其它实施例中,移位器执行左移运算。在一些实施例中,该运算数是标量值,而在其它实施例中,它是具有多种不同数据大小和类型(例如浮点、整数)的压缩数据值。在一个实施例中,移位计数405是压缩(或“矢量”)值,其每个元与要由相应移位计数元件移动的压缩运算数的元相对应。在其它实施例中,该移位计数应用于第一数据运算数的所有元。此外,在一些实施例中,移位计数由该指令中的字段(诸如中值、r/m或其它字段)指定。在其它实施例中,移位计数由该指令指示的寄存器指定。然后,经移位的运算数通过逻辑420与值430进行异或运算,且异或运算结果被存储于目的地存储位置(例如寄存器)425中。在一个实施例中,异或值430是压缩(或“矢量”)值,其每个元与要由相应异或元件进行异或运算的压缩运算数的元相对应。在其它实施例中,异或值430应用于第一数据运算数的所有元。此外,在一些实施例中,异或值由该指令中的字段(诸如中值、r/m或其它字段)指定。在其它实施例中,异或值由该指令指示的寄存器指定。图5示出根据本发明一个实施例的移位和异或指令的运算。在运算501,如果接收到移位和异或指令,则在运算505,将第一运算数移动移位数。在一个实施例中,它被右移。然而在其它实施例中,移位器执行左移运算。在一些实施例中,该运算数是标量值,而在其它实施例中,它是具有多种不同数据大小和类型(例如浮点、整数)的压缩数据值。在一个实施例中,移位计数值405是压缩(或“矢量”)值,其每个元与要由相应移位计数元件移动的压缩运算数的元相对应。在其它实施例中,该移位计数值应用于第一数据运算数的所有元。此外,在一些实施例中,移位计数值由该指令中的字段(诸如中值、r/m或其它字段)指定。在其它实施例中,移位计数值由该指令指示的寄存器指定。在运算510,经移位值与异或值进行异或运算。在一个实施例中,异或值430是压缩(或“矢量”)值,其每个元与要由相应异或元件进行异或运算的压缩运算数的元相对应。在其它实施例中,异或值430应用于第一数据运算数的所有元。此外,在一些实施例中,该异或值由该指令中的字段(诸如中值、r/m或其它字段)指定。在其它实施例中,该异或值由该指令指示的寄存器指定。在运算515,经移位和异或运算的值被存储于一个位置。在一个实施例中,该位置是标量寄存器。在另一个实施例中,该位置是压缩数据寄存器。在另一实施例中,目的地位置也被用作源位置,诸如由指令指定的压缩数据寄存器。在其它实施例中,目的地位置是与存储初始运算数或诸如移位计数或异或值的其它值的源位置不同的位置。在一个实施例中,移位和异或指令可用于在各种计算机应用中执行数据去重复。数据去重复试图找出文件之间的共同数据块,以最优化磁盘存储和/或网络带宽。在一个实施例中,移位和异或指令通过利用诸如使用滚动散列、散列摘要(例如SHAl或MD5)找出组块边界、并(利用快速Lempel-Ziv方案)压缩与众不同的组块的运算,可用于提高数据去重复运算的性能。例如,一种数据去重复算法可通过以下伪代码示出while(ρ<max){ν=(ν1)XORscramble[(unsignedchar)*ρ];ifV具有至少2个尾随0{ret=1;break;}P++;}在上述算法中,加扰表(scrambletable)是随机32位常数的256个条目的数组,而ν是具有数据的前32个字节的散列值的滚动散列。当找出组块边界时,该算法返回ret=1,且位置ρ表示组块边界。值ζ可以是导致良好组块检测的诸如12-15的常数,且可以是应用特定的。在一个实施例中,移位和异或指令可帮助上述算法以约2循环/字节的速率运算。在其它实施例中,取决于用途,移位和异或指令帮助该算法执行得更快或更慢。其中使用移位和异或指令的至少一个实施例可通过以下伪代码示出while(ρ<max){ν=(ν1)XORbrefl_scramble[(unsignedchar)*ρ];ifν具有至少ζ个尾随O{ret=1;break;}ρ++;}在上述算法中,breflscramble数组中的每个条目包含原始加扰数组中的相应条目的位折算版本。在一个实施例中,上述算法左移ν而不是右移,且ν包含滚动散列的位折算版本。在一个实施例中,检查组块边界通过检查前导零的最小数量来执行。在其它实施例中,移位和异或指令可被用于其它有用的计算机运算和算法。此外,诸实施例有助于提高密集使用移位和异或运算的许多程序的性能。因此,公开了用于执行移位和异或指令的技术。虽然已在附图中描述和示出了某些示例性实施例,但应理解,这些实施例仅仅是为了说明而非限制宽泛的本发明,且本发明不限于所示和所描述的特定构造和布置,因为本领域技术人员在学习本公开内容时能想到各种其它变型。在诸如本技术的发展迅速且进一步进步难以预见的
技术领域
中,所公开的实施例的布置和细节可能如实现技术进步所促进地容易被修改,但不背离本公开的原理或所附权利要求的范围。权利要求1.一种处理器,包括用于执行移位和异或指令的逻辑,其中将第一值移位移位量,且经移位值与第二值进行异或运算。2.如权利要求1所述的处理器,其特征在于,所述第一值将被左移位。3.如权利要求1所述的处理器,其特征在于,所述第一值将被右移位。4.如权利要求1所述的处理器,其特征在于,所述第一值通过逻辑方式移位。5.如权利要求1所述的处理器,其特征在于,所述第一值通过算术方式移位。6.如权利要求1所述的处理器,其特征在于,包括移位器和异或电路。7.如权利要求1所述的处理器,其特征在于,所述移位和异或指令包括用于存储所述第二值的第一字段。8.如权利要求1所述的处理器,其特征在于,所述第一值是压缩数据类型。9.一种系统,包括存储,用于存储用来执行移位和异或运算的第一指令;处理器,用于执行用来执行移位和异或指令的逻辑,其中将第一值移位移位量,且经移位值与第二值进行异或运算。10.如权利要求9所述的系统,其特征在于,所述第一值将被左移位。11.如权利要求9所述的系统,其特征在于,所述第一值将被右移位。12.如权利要求9所述的系统,其特征在于,所述第一值通过逻辑方式移位。13.如权利要求9所述的系统,其特征在于,所述第一值通过算术方式移位。14.如权利要求9所述的系统,其特征在于,包括移位器和异或电路。15.如权利要求9所述的系统,其特征在于,所述移位和异或指令包括用于存储所述第二值的第一字段。16.如权利要求9所述的系统,其特征在于,所述第一值是压缩数据类型。17.一种方法,包括执行移位和异或指令,其中将第一值移位移位量,且经移位值与第二值进行异或运算。18.如权利要求17所述的方法,其特征在于,所述第一值将被左移位。19.如权利要求17所述的方法,其特征在于,所述第一值将被右移位。20.如权利要求17所述的方法,其特征在于,所述第一值通过逻辑方式移位。21.如权利要求17所述的方法,其特征在于,所述第一值通过算术方式移位。22.如权利要求17所述的方法,其特征在于,包括移位器和异或电路。23.如权利要求17所述的方法,其特征在于,所述移位和异或指令包括用于存储所述第二值的第一字段。24.如权利要求17所述的方法,其特征在于,所述第一值是压缩数据类型。25.一种其上存储有指令的机器可读介质,所述指令在由机器执行时使所述机器执行一种方法,所述方法包括将第一值移位移位量;以及将经移位值与第二值进行异或运算。26.如权利要求25所述的机器可读介质,其特征在于,所述第一值将被左移位。27.如权利要求25所述的机器可读介质,其特征在于,所述第一值将被右移位。28.如权利要求25所述的机器可读介质,其特征在于,所述第一值通过逻辑方式移位。29.如权利要求25所述的机器可读介质,其特征在于,所述第一值通过算术方式移位。30.如权利要求25所述的机器可读介质,其特征在于,包括移位器和异或电路。31.如权利要求25所述的机器可读介质,其特征在于,所述移位和异或指令包括用于存储所述第二值的第一字段。32.如权利要求25所述的机器可读介质,其特征在于,所述第一值是压缩数据类型。33.一种方法,包括在第一经移位值与第二位折算值之间执行异或(XOR)运算,并将运算结果存储于第一寄存器中;在所述结果中检查最少前导零数量。34.如权利要求33所述的方法,其特征在于,如果所述最少数量的前导零在所述结果中,则表明所述结果与第一组块相对应。35.如权利要求34所述的方法,其特征在于,所述第一经移位值将被左移1位。36.如权利要求34所述的方法,其特征在于,所述第一经移位值将被右移1位。全文摘要用于执行移位和异或运算的方法和装置。在一个实施例中,一种装置包括用于执行第一指令的执行资源。响应于该第一指令,所述执行资源对至少一个值执行移位和异或运算。文档编号G06F9/305GK102103487SQ20101060169公开日2011年6月22日申请日期2010年12月15日优先权日2009年12月17日发明者E·奥兹图科,G·M·沃尔里齐,J·D·吉尔福德,M·G·迪克森,V·戈帕尔,W·K·费格哈利申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1