利用多个测试源来提供或(or)测试和与(and)测试功能的可融合指令和逻辑的制作方法

文档序号:6540695阅读:181来源:国知局
利用多个测试源来提供或(or)测试和与(and)测试功能的可融合指令和逻辑的制作方法
【专利摘要】本申请公开了利用多个测试源来提供或(OR)测试和与(AND)测试功能的可融合指令和逻辑。可融合指令和逻辑在多个测试源上提供或测试和与测试功能。一些实施例包括处理器解码级,用于解码测试指令以用于执行,该指令指定第一、第二和第三源数据操作数以及操作类型。响应于经解码的测试指令,执行单元根据所指定的操作类型在来自第一和第二源数据操作数的数据之间执行一个逻辑操作,并在来自第三源数据操作数的数据与第一逻辑操作的结果之间执行第二逻辑操作,以设置条件标志。一些实施例通过将一个逻辑指令与现有技术的测试指令融合来动态地产生测试指令。其他实施例通过即时编译器产生测试指令。一些实施例还将测试指令与随后的条件分支指令融合,并根据条件标志如何被设置来执行分支。
【专利说明】利用多个测试源来提供或(OR)测试和与(AND)测试功能的可融合指令和逻辑

【技术领域】
[0001]本公开涉及处理逻辑、微处理器以及相关的指令集体系结构的领域,这些指令集体系结构在被处理器或其他处理逻辑执行时执行逻辑、数学或其他功能性操作。具体而言,本公开涉及用于在多个测试源上提供或测试(OR-test)和与测试(AND-test)功能的可融合指令和逻辑。

【背景技术】
[0002]当代处理器可包括用于提高处理性能和/或利用专用指令的微体系结构和技术。例如,这些微体系结构和技术可包括无序执行、用于将宏指令融合成融合指令的解码器、微指令或微操作(或微0p、“uop”)高速缓存、或追踪高速缓存、或用于处理压缩和/或融合指令或微操作的队列。
[0003]指令融合是将两个指令组合成单个指令的动态过程,该过程在运行时间在处理器内产生一个操作、微操作、序列。存储在处理器指令队列(IQ)中的指令可在从IQ中被读出之后以及被发送至指令解码器之前、或在被指令解码器解码之后被“融合”。典型地,在指令被解码之前进行的指令融合被称为“宏融合”,而在指令被解码(例如解码成微指令)之后进行的指令融合被称为“微融合”。宏融合的示例是将比较(“CMP”)指令或测试指令(“TEST”)(“CMP/TEST”)与条件转移(“ JCC”)指令进行组合。在程序中,CMP/TEST和JCC指令对可能会在循环末尾时规则地出现,例如,在循环末尾时进行比较、并基于比较结果进行分支或不进行分支。由于宏融合可有效提高指令吞吐量,故期望尽可能找出更多机会来融合指令。
[0004]Web浏览器可包括对一种或多种解释性计算机编程语言的支持,从而客户机侧脚本可与用户交互、控制浏览器、异步地通信以及在显示文档内容时改变文档内容、等等。解释性的计算机编程或脚本语言(诸如JavaScript、Jscript或ECMAScript)可能是动态的并且是弱类型的,且可能支持面向对象、命令性的以及功能性的编程风格。这样的解释性计算机编程语言可能得到即时(JIT)编译器的形式的浏览器支持,该即时编译器将解释性语言动态地编译成机器指令序列。JIT编译器可优化所存储的值以实现更快的处理,但然后需要在运行时间期间动态地测试对象类型以实现这样的优化。这些动态测试会引入附加的处理开销,从而需要更高能耗,并且限制这样的优化的任何性能优势。
[0005]到目前为止,尚未充分探索针对这样的性能受限问题、能耗担忧以及其它运行时间瓶颈的潜在解决方案。

【专利附图】

【附图说明】
[0006]在附图的各图中通过示例而非限制地示出本发明。
[0007]图1A是执行指令以在多个测试源上提供或测试和与测试功能的系统的一个实施例的框图。
[0008]图1B是执行指令以在多个测试源上提供或测试和与测试功能的系统的另一实施例的框图。
[0009]图1C是执行指令以在多个测试源上提供或测试和与测试功能的系统的另一实施例的框图。
[0010]图2是执行指令以在多个测试源上提供或测试和与测试功能的处理器的一个实施例的框图。
[0011]图3A示出根据一个实施例的打包数据类型。
[0012]图3B示出根据一个实施例的打包数据类型。
[0013]图3C示出根据一个实施例的打包数据类型。
[0014]图3D示出根据一个实施例的用于在多个测试源上提供或测试和与测试功能的指令编码。
[0015]图3E示出根据另一个实施例的用于在多个测试源上提供或测试和与测试功能的指令编码。
[0016]图3F示出根据另一个实施例的用于在多个测试源上提供或测试和与测试功能的指令编码。
[0017]图3G示出根据另一个实施例的用于在多个测试源上提供或测试和与测试功能的指令编码。
[0018]图3H示出根据另一个实施例的用于在多个测试源上提供或测试和与测试功能的指令编码。
[0019]图4A示出用于执行在多个测试源上提供或测试和与测试功能的指令的处理器微体系结构的一个实施例的要素。
[0020]图4B示出用于执行在多个测试源上提供或测试和与测试功能的指令的处理器微体系结构的另一实施例的要素。
[0021]图5是用于执行在多个测试源上提供或测试和与测试功能的指令的处理器的一个实施例的框图。
[0022]图6是用于执行在多个测试源上提供或测试和与测试功能的指令的计算机系统的一个实施例的框图。
[0023]图7是用于执行在多个测试源上提供或测试和与测试功能的指令的计算机系统的另一实施例的框图。
[0024]图8是用于执行在多个测试源上提供或测试和与测试功能的指令的计算机系统的另一实施例的框图。
[0025]图9是用于执行在多个测试源上提供或测试和与测试功能的指令的芯片上系统的一个实施例的框图。
[0026]图10是用于执行在多个测试源上提供或测试和与测试功能的指令的处理器的实施例的框图。
[0027]图11是在多个测试源上提供或测试和与测试功能的IP核开发系统的一个实施例的框图。
[0028]图12示出在多个测试源上提供或测试和与测试功能的体系结构仿真系统的一个实施例。
[0029]图13示出用于转换在多个测试源上提供或测试和与测试功能的指令的系统的一个实施例。
[0030]图14示出用于融合在多个测试源上提供或测试和与测试功能的指令的处理器微体系结构的一个替代实施例的要素。
[0031]图15A示出用于在多个测试源上提供或测试和与测试功能的融合指令结构的一个实施例的流程图。
[0032]图15B示出用于在多个测试源上提供或测试和与测试功能的融合指令结构的替代实施例的流程图。
[0033]图15C示出用于在多个测试源上提供或测试和与测试功能的融合指令结构的另一替代实施例的流程图。
[0034]图16A示出用于融合指令以在多个测试源上提供或测试和与测试功能的过程的一个实施例的流程图。
[0035]图16B示出用于融合指令以在多个测试源上提供或测试和与测试功能的过程的替代实施例的流程图。
[0036]图16C示出用于融合指令以在多个测试源上提供或测试和与测试功能的过程的另一替代实施例的流程图。
[0037]图16D示出用于融合指令以在多个测试源上提供或测试和与测试功能的过程的另一替代实施例的流程图。
[0038]图17示出用于执行指令以在多个测试源上提供或测试和与测试功能的过程的一个实施例的流程图。

【具体实施方式】
[0039]以下说明书公开了用于在处理器、计算机系统或其他处理装置之中的多个测试源上或在与处理器、计算机系统或其他处理装置相关联的多个测试源上提供或测试和与测试功能的可融合指令和逻辑。
[0040]Web浏览器可包括对一种或多种解释性的计算机编程语言(诸如JavaScript、Jscript或ECMAScript)的支持,这些解释性的计算机编程语言可能是动态的并且是弱类型的,且可能支持面向对象、命令性的以及功能性的编程风格。这样的解释性计算机编程语言可能得到即时(JIT)编译器的形式的浏览器支持,该即时编译器将解释性语言动态地编译成机器指令序列。在运行时间期间,JIT编译器可优化所存储的值以实现更快的处理,但然后可能需要动态地测试对象类型以实现这样的优化。例如,JIT编译器可能使用一位或多位机器字来区分和/或指定一值是经优化的整数而不是更一般的浮点值或字符串。可在访问该值之前在运行时间动态地检查这些一位或多位的存在。这样的动态类型测试会引入以频繁执行的类型测试指令序列习语的形式所体现的附加处理开销,从而需要更高的能耗并且限制这样的编译器优化的任何性能优势。
[0041]这些频繁执行的指令序列习语可包括:将两个源数据操作数组合的逻辑操作(例如,当测试各个源中的位是否为I时的或(OR)操作,当测试各个源中的位是否为零时的与(AND)操作);比较或测试指令(例如TEST,用于测试对于掩码的逻辑操作的结果);以及条件分支(例如如果TEST曾设置/未曾设置零标志,则跳转至更慢的一般代码序列的JZ/JNZ)。处理解码逻辑在将比较指令或测试指令(例如TEST)与条件分支指令(例如JZ)组合时可利用宏融合。
[0042]可融合指令和逻辑的实施例可在多个测试源上提供或测试和与测试功能。一些实施例包括处理器解码级,用于解码测试指令以用于执行,该指令指定第一、第二和第三源数据操作数以及操作类型。响应于经解码的测试指令,执行单元根据所指定的操作类型在来自第一和第二源数据操作数的数据之间执行一个逻辑操作(例如或操作),并在来自第三源数据操作数的数据与第一逻辑操作的结果之间执行第二逻辑操作(例如与操作),以设置条件标志。一些实施例通过将一个逻辑指令(例如,或)与现有技术的测试指令融合来动态地产生测试指令。其他实施例通过JIT编译器动态地产生测试指令。一些实施例还将测试指令与随后的条件分支指令(例如JZ)融合,并根据条件标志如何被设置而执行分支。因此,在运行时间,频繁执行的指令序列习语可被融合成单个指令,该单个指令导致处理器内的一个微操作序列。
[0043]将理解,用于在多个测试源上提供或测试和/或与测试功能的可融合指令和逻辑至少可消除与由JIT编译器所产生的频繁执行的类型测试指令相关联的性能限制问题、能耗担忧以及其他运行时间瓶颈。
[0044]在以下描述中,陈述了诸如处理逻辑、处理器类型、微体系结构条件、事件、启用机制等多种特定细节,以提供对本发明实施例的更透彻理解。然而,本领域技术人员应当领会,没有这些具体细节也可实践本发明。此外,没有详细示出一些公知的结构、电路等等,以避免不必要地混淆本发明的实施例。
[0045]虽然下述的诸个实施例参照处理器来描述,但其他实施例也适用于其他类型的集成电路和逻辑设备。本发明的实施例的类似技术和教导可应用于其它类型的电路或半导体器件,这些其它类型的电路或半导体器件也可受益于更高的流水线吞吐量和提高的性能。本发明的诸个实施例的教示适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位、或16位数据运算的处理器或机器,并适用于执行数据操作或管理的任何处理器和机器。此外,下述描述提供了示例,并且附图出于示意性目的示出了多个示例。然而,这些示例不应该被理解为具有限制性目的,因为它们仅仅旨在提供本发明的诸个实施例的示例,而并非对本发明的实施例的所有可能实现方式进行穷举。
[0046]虽然下述的示例描述了在执行单元和逻辑电路情况下的指令处理和分配,但本发明的其他实施例也可通过存储在机器可读有形介质上的数据和/或指令来完成,这些数据和/或指令在被机器执行时使得机器执行与本发明至少一个实施例相一致的功能。在一个实施例中,与本发明的实施例相关联的功能被具体化在机器可执行指令中。这些指令可用来使通过这些指令编程的通用处理器或专用处理器执行本发明的步骤。本发明的诸个实施例也可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程来执行根据本发明的实施例的一个或多个操作。另选地,本发明的诸个实施例的这些步骤可由包含用于执行这些步骤的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
[0047]被用于对逻辑进行编程以执行本发明的诸个实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储器)内。进一步的,指令可经由网络或其他计算机可读介质来分发。因此,计算机可读介质可包括用于以机器(诸如,计算机)可读的格式存储或发送信息的任何机制,但不限于:磁盘、光盘、致密盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPR0M)、电可擦除可编程只读存储器(EEPR0M)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)发送信息中所用的有形机器可读存储器。因此,计算机可读介质包括用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
[0048]设计会经历多个阶段,从创新到仿真到制造。表示设计的数据可用多种方式来表示该设计。首先,如仿真中将有用的,可使用硬件描述语言或其他功能性描述语言来表示硬件。此外,可在设计过程的某些阶段产生具有逻辑和/或晶体管门电路的电路级模型。此夕卜,大多数设计在某些阶段都达到表示硬件模型中多种设备的物理布置的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种各样特征的数据。在任何的设计表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁/光存储器(诸如,盘)可以是存储信息的机器可读介质,这些信息是经由光学或电学波来发送的,这些光学或电学波被调制或以其他方式生成以传送这些信息。当发送指示或承载代码或设计的电学载波达到实现电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本发明的诸个实施例的技术的物品(诸如,编码在载波中的信息)。
[0049]在现代处理器中,多个不同执行单元被用于处理和执行多种代码和指令。并不是所有指令都被同等地创建,因为其中有一些更快地被完成而另一些需要多个时钟周期来完成。指令的吞吐量越快,则处理器的总体性能越好。因此,使大量指令尽可能快地执行将会是有利的。然而,某些指令具有更大的复杂度,并需要更多的执行时间和处理器资源。例如,存在浮点指令、加载/存储操作、数据移动等等。
[0050]因为更多的计算机系统被用于互联网、文本以及多媒体应用,所以逐渐地引进更多的处理器支持。在一个实施例中,指令集可与一个或多个计算机体系结构相关联,一个或多个计算机体系结构包括数据类型、指令、寄存器体系结构、寻址模式、存储器体系结构、中断和例外处理、外部输入输出(I/o)。
[0051]在一个实施例中,指令集体系结构(ISA)可由一个或更多微体系结构来执行,微体系结构包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微体系结构的诸个处理器可共享公共指令集的至少一部分。例如,INTEL?奔腾四(Pentium4)处理器、丨ntel?酷睿(Core?)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced Micro Devices, Inc.)的诸多处理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。类似地,由其他处理器开发公司(诸如,ARM控股有限公司、MIPS或它们的授权方或兼容方)所设计的诸多处理器可共享至少一部分公共指令集,但可包括不同的处理器设计。例如,ISA的相同寄存器体系结构在不同的微体系结构中可使用新的或已知的技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(诸如,使用寄存器别名表RAT、重排序缓冲器R0B、以及隐退寄存器文件)的一个或多个动态分配物理寄存器。在一个实施例中,寄存器可包括:可由软件编程者寻址或不可寻址的一个或多个寄存器、寄存器体系结构、寄存器文件、或其他寄存器鱼人
口 O
[0052]在一个实施例中,指令可包括一个或多个指令格式。在一个实施例中,指令格式可指示多个字段(位的数目、位的位置等)以特别指定将要被执行的操作以及将要被执行的操作的操作数。一些指令格式可进一步被指令模板(或子格式)所细分定义。例如,给定指令格式的指令模板可被定义为具有指令格式字段的不同的子集,和/或被定义为具有不同解释的给定字段。在一个实施例中,使用指令格式(并且,如果定义过,则以该指令格式的一个给定指令模板)来表示指令,并且该指令指定或指示操作以及该操作将操作的操作数。
[0053]科学应用、金融应用、自动向量化通用应用、RMS (识别、挖掘和合成)应用以及视觉和多媒体应用(诸如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频处理)可能需要对大量数据项执行相同的操作。在一个实施例中,单指令多数据(SMD)指的是使得处理器在多个数据元素上执行一操作的一种类型的指令。SMD技术可被用于处理器中,这些处理器将寄存器中的诸个位(bit)逻辑地划分入多个固定大小或可变大小的数据元素,每个数据元素表示单独的值。例如,在一个实施例中,64位寄存器中的诸个位可被组织为包含四个单独的16位数据元素的源操作数,每个数据元素表示单独的16位值。该数据类型可被称为“打包”数据类型或“向量”数据类型,并且该数据类型的操作数被称为打包数据操作数或向量操作数。在一个实施例中,打包数据项或向量可以是存储在单个寄存器中的打包数据元素的序列,并且打包数据操作数或向量操作数可以是SMD指令(或“打包数据指令”或“向量指令”)的源操作数或目的地操作数。在一个实施例中,SIMD指令指定了将要被执行在两个源向量操作数上的单个向量操作,以生成具有相同或不同大小的、具有相同或不同数量的数据元素的、具有相同或不同数据元素次序的目的地向量操作数(也被称为结果向量操作数)。
[0054]诸如由Intel?酷睿(Core?)处理器(具有包括x86、MMX?、流SMD扩展(SSE)、SSE2、SSE3、SSE4.1、SSE4.2指令的指令集)、ARM处理器(诸如,ARM Cortex?处理器族,具有包括向量浮点(VFP)和/或NEON指令的指令集)、MIPS处理器(诸如,中国科学院计算机技术研究所(ICT)开发的龙芯处理器族)所使用的SMD技术之类的SMD技术在应用性能上带来了极大的提高(Core?和MMX?是加利福尼亚州圣克拉拉市的英特尔公司的注册商标或商标)。
[0055]在一个实施例中,目的地寄存器/数据和源寄存器/数据是表示对应数据或操作的源和目的地的通用术语。在一些实施例中,它们可由寄存器、存储器或具有与所示出的那些名称或功能不同的名称或功能的其他存储区域所实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其他存储区域,而“SRC1”和“SRC2”是第一和第二源存储寄存器或其他存储区域,等等。在其他实施例中,SRC和DEST存储区域中的两个或更多区域可对应于相同存储区域中的不同数据存储元素(例如,SIMD寄存器)。在一个实施例中,例如通过将对第一和第二源数据执行的操作的结果写回至两个源寄存器中作为目的地寄存器的那个寄存器,源寄存器中的一个也可以作为目的地寄存器。
[0056]图1A是根据本发明的一个实施例的示例性计算机系统的框图,该计算机系统被形成为具有包括执行单元以执行指令的处理器。根据本发明,诸如根据在此所描述的实施例,系统100包括诸如处理器102之类的组件,以采用包括逻辑的执行单元来执行算法以处理数据。系统100代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的PENTIUM? II1、PENTIUM? 4,Xeontm, Itanium?、XScaletm 和 / 或 StrongARMtm 微处理器的处理系统,不过也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统100可执行可从美国华盛顿州雷蒙德市的微软公司买到的WINDOWStm操作系统的一个版本,不过也可使用其它操作系统(例如UNIX和Linux)、嵌入式软件、和/或图形用户界面。因此,本发明的各实施例不限于硬件和软件的任何具体组合。
[0057]实施例不限于计算机系统。本发明的替换实施例可被用于其他设备,诸如手持式设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)以及手持PC。嵌入式应用可包括:微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机、或可执行根据至少一个实施例的一个或多个指令的任何其他系统。
[0058]图1A是计算机系统100的框图,计算机系统100被形成为具有处理器102,处理器102包括一个或多个执行单元108以执行算法,以执行根据本发明的一个实施例的至少一个指令。参照单处理器桌面或服务器系统来描述了一个实施例,但替代实施例可被包括在多处理器系统中。系统100是“中枢”系统体系结构的示例。计算机系统100包括处理器102以处理数据信号。处理器102可以是复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器或任意其它处理器设备(诸如数字信号处理器)。处理器102耦合至处理器总线110,处理器总线110可在处理器102和系统100内的其他组件之间传输数据信号。系统100的诸个元素执行本领域所熟知的常规功能。
[0059]在一个实施例中,处理器102包括第一级(LI)内部高速缓存存储器104。取决于体系结构,处理器102可具有单个内部高速缓存或多级内部高速缓存。或者,在另一个实施例中,高速缓存存储器可位于处理器102的外部。其他实施例也可包括内部高速缓存和外部高速缓存的组合,这取决于特定实现和需求。寄存器文件106可在多个寄存器(包括整数寄存器、浮点寄存器、状态寄存器、指令指针寄存器)中存储不同类型的数据。
[0060]执行单元108 (包括执行整数和浮点操作的逻辑)也位于处理器102中。处理器102还包括微代码(Ucode)ROM,其存储用于特定宏指令的微代码。对于一个实施例,执行单元108包括处理打包指令集109的逻辑。通过将打包指令集109包括在通用处理器102的指令集内并包括相关的电路以执行这些指令,可使用通用处理器102中的打包数据来执行许多多媒体应用所使用的操作。因此,通过将处理器数据总线的全带宽用于对打包数据进行操作,许多多媒体应用可获得加速,并更为有效率地执行。这能减少在处理器数据总线上传输更小数据单元以在一个时间对一个数据元素执行一个或多个操作的需要。
[0061]执行单元108的替换实施例也可被用于微控制器、嵌入式处理器、图形设备、DSP以及其他类型的逻辑电路。系统100包括存储器120。存储器设备120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器120可存储可由处理器102执行的指令和/或数据,数据由数据信号表示。
[0062]系统逻辑芯片116耦合至处理器总线110和存储器120。在所示出的实施例中的系统逻辑芯片116是存储器控制器中枢(MCH)。处理器102可经由处理器总线110与MCH116通信。MCHl 16提供至存储器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总线是高速I/O总线,用于将外围设备连接至存储器120、芯片组以及处理器102。一些示例是音频控制器、固件中枢(闪存B1S) 128、无线收发机126、数据存储器124、包括用户输入和键盘接口的传统I/O控制器、串行扩展端口(诸如通用串行总线USB)以及网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、⑶-ROM设备、闪存设备、或其他大容量存储设备。
[0064]对于系统的另一个实施例,根据一个实施例的指令可被用于芯片上系统。芯片上系统的一个实施例包括处理器和存储器。用于这样一个系统的存储器是闪存存储器。闪存存储器可位于与处理器和其他系统组件相同的管芯上。此外,诸如存储器控制器或图形控制器之类的其他逻辑块也可位于芯片上系统上。
[0065]图1B示出数据处理系统140,数据处理系统140实现本发明的一个实施例的原理。本领域的技术人员将容易理解,在此描述的诸个实施例可用于替代处理系统,而不背离本发明的实施例的范围。
[0066]计算机系统140包括处理核心159,处理核心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桥154,用于经由I/O总线153与多个I/O设备进行通信。这样的I/O设备可包括但不限于:例如,通用异步接收机/发射机(UART) 155、通用串行总线(USB) 156、蓝牙无线UART157、以及I/O扩展接Π 158。
[0069]数据处理系统140的一个实施例提供了移动通信、网络通信和/或无线通信,并提供了能够执行SMD操作的处理核心159,SIMD操作包括文本串比较操作。处理核心159可编程有多种音频、视频、图像和通信算法,包括离散变换(诸如Walsh-Hadamard变换、快速傅立叶变换(FFT)、离散余弦变换(DCT)、以及它们相应的逆变换)、压缩/解压缩技术(诸如色彩空间变换)、视频编码运动估计或视频解码运动补偿、以及调制/解调(MODEM)功能(诸如脉冲编码调制PCM)。
[0070]图1C示出能够执行用于在多个测试源上提供或测试和与测试功能的数据处理系统的另一替代实施例。根据一个替代实施例,数据处理系统160可包括主处理器166、SMD协处理器161、高速缓存处理器167以及输入/输出系统168。输入/输出系统168可选地耦合至无线接口 169。SMD协处理器161能够执行包括根据一个实施例的指令的操作。处理核心170可适于以一种或多种处理技术来制造,并且通过充分详细地表示在机器可读介质上可以便于包括处理核心170的数据处理系统160的全部或一部分的制造。
[0071]对于一个实施例,SMD协处理器161包括执行单元162以及一组寄存器文件164。主处理器166的一个实施例包括解码器165,用于识别指令集163的指令,指令集163包括根据一个实施例的用于由执行单元162所执行的指令。对于替换实施例,SMD协处理器161也包括解码器165B的至少一部分以解码指令集163的指令。处理核心170也包括对于理解本发明的实施例不是必需的额外电路(没有示出)。
[0072]在操作中,主处理器166执行数据处理指令流,数据处理指令流控制通用类型的数据处理操作,包括与高速缓存存储器167以及输入/输入系统168的交互。SMD协处理器指令嵌入数据处理指令流中。主处理器166的解码器165将这些SMD协处理器指令识别为可由附连的SMD协处理器161来执行的类型。因此,主处理器166在协处理器总线171上发出这些SMD协处理器指令(或表示SMD协处理器指令的控制信号),任何附连的SMD协处理器从协处理器总线171接收到这些指令。在该情况中,SMD协处理器161将接受并执行任何接收到的针对该SMD协处理器的SMD协处理器指令。
[0073]可经由无线接口 169接收数据以通过SMD协处理器指令进行处理。对于一个示例,语音通信可以数字信号的形式被接收到,其将被SMD协处理器指令所处理,以重新生成表示该语音通信的数字音频采样。对于另一个示例,压缩音频和/或视频可以数字位流的形式被接收到,其将被SMD协处理器指令所处理,以重新生成数字音频采样和/或运动视频巾贞。对于处理核心170的一个实施例,主处理器166和SIMD协处理器161被集成在单个处理核心170中,该单个处理核心170包括执行单元162、一组寄存器文件164、以及解码器165以识别指令集163的指令,指令集163包括根据一个实施例的指令。
[0074]图2是包括逻辑电路以执行根据本发明的一个实施例的指令的处理器200的微体系结构的框图。在一些实施例中,根据一个实施例的指令可被实现为对具有字节大小、字大小、双字大小、四字大小等并具有诸多数据类型(诸如单精度和双精度整数和浮点数据类型)的数据元素执行操作。在一个实施例中,有序前端201是处理器200的一部分,其获取将要被执行的指令,并准备这些指令以在稍后供处理器流水线使用。前端201可包括诸个单元。在一个实施例中,指令预取器226从存储器获取指令,并将指令馈送至指令解码器228,指令解码器228随后解码或解释指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微操作数或uop)的一个或多个操作。在其他实施例中,解码器将指令解析为操作码和对应的数据及控制字段,它们被微体系结构用于执行根据一个实施例的操作。在一个实施例中,追踪高速缓存230接受经解码的微操作,并将它们组装为程序有序序列或微操作队列234中的踪迹,以用于执行。当追踪高速缓存230遇到复杂指令时,微代码ROM232提供完成操作所需的微操作。
[0075]—些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实施例中,如果需要超过四个微操作来完成指令,则解码器228访问微代码R0M232以进行该指令。对于一个实施例,指令可被解码为少量的微操作以用于在指令解码器228处进行处理。在另一个实施例中,如果需要若干微操作来完成操作,则可将指令存储在微代码R0M232中。追踪高速缓存230参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码R0M232读取微代码序列以完成根据一个实施例的一个或多个指令。在微代码R0M232完成对于指令的微操作序列化之后,机器的前端201恢复从追踪高速缓存230提取微操作。
[0076]无序执行引擎203是将指令准备好用于执行的单元。无序执行逻辑具有若干个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存器文件中的条目。在指令调度器(存储器调度器、快速调度器202、慢速/通用浮点调度器204、简单浮点调度器206)之前,分配器也将每个微操作的条目分配在两个微操作队列中的一个之中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。微操作调度器202、204、206基于对它们的依赖输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实施例的快速调度器202可在主时钟周期的每半个上进行调度,而其他调度器可仅仅在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁以调度微操作以便执行。
[0077]寄存器文件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位宽度的操作数。
[0078]执行块211 包括执行单元 212、214、216、218、220、222、224,在执行单元 212、214、216、218、220、222、224中实际执行指令。该区块包括寄存器文件208、210,寄存器文件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来执行。对于一个实施例,整数ALU216、218、220被描述为对64位数据操作数执行整数操作。在替代实施例中,可实现ALU216、218、220以支持包括16、32、128、256等各种数据位。类似地,可实现浮点单元222、224以支持具有各种位宽的多个操作数。对于一个实施例,浮点单元222、224可结合SMD和多媒体指令对128位宽度打包数据操作数进行操作。
[0079]在一个实施例中,在父加载完成执行之前,微操作调度器202、204、206就分派依赖操作。因为在处理器200中微操作被投机地调度和执行,所以处理器200也包括处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则可能存在带有临时错误数据离开调度器并运行在流水线中的依赖操作。重放机制跟踪使用错误数据的指令,并重新执行这些指令。仅仅依赖操作需要被重放,而允许独立操作完成。处理器的一个实施例的调度器和重放机制还被设计成捕捉在多个测试源上提供或测试和与测试功能的指令。
[0080]术语“寄存器”指代被用作为指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器是那些处理器外部(从编程者的角度来看)可用的处理器存储位置。然而,一实施例的寄存器不限于表不特定类型的电路。相反,一实施例的寄存器能够存储并提供数据,能够执行在此所述的功能。本文所描述的寄存器可利用任何数量的不同技术通过处理器中的电路来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器文件也包含八个多媒体SIMD寄存器,用于打包数据。对于以下讨论,寄存器应被理解为设计成保存打包数据的数据寄存器,诸如来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了 MMX技术的微处理器的64位宽MMXtm寄存器(在一些实例中也称为“mm寄存器)。”这些MMX寄存器(可用在整数和浮点格式中)可与伴随SIMD和SSE指令的打包数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持这样打包数据操作数。在一个实施例中,在存储打包数据和整数数据时,寄存器不需要区分这两类数据类型。在一个实施例中,整数和浮点数据可被包括在相同的寄存器文件中,或被包括在不同的寄存器文件中。进一步的,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
[0081]在下述附图的示例中,描述了多个数据操作数。图3A示出了根据本发明一个实施例的多媒体寄存器中的各种打包数据类型表示。图3A示出用于128位宽操作数的打包字节310、打包字320以及打包双字(dword)330的数据类型。本示例的打包字节格式310是128位长,并且包含十六个打包字节数据元素。字节在此被定义为是8位数据。每一个字节数据元素的信息被存储为:对于字节O存储在位7到位0,对于字节I存储在位15到位8,对于字节2存储在位23到位16,最后对于字节15存储在位120到位127。因此,在该寄存器中使用了所有可用的位。该存储配置提高了处理器的存储效率。同样,因为访问了十六个数据元素,所以现在可对十六个数据元素并行地执行一个操作。
[0082]通常,数据元素是单独的数据片,与具有相同长度的其他数据元素一起存储在单个寄存器或存储器位置中。在涉及SSEx技术的打包数据序列中,存储在XMM寄存器中的数据元素的数目是128位除以单个数据元素的位长。类似地,在涉及MMX和SSE技术的打包数据序列中,存储在MMX寄存器中的数据元素的数目是64位除以单个数据元素的位长。虽然图3A中所示的数据类型是128位长,但本发明的诸个实施例也可操作64位宽、256位宽、512位宽或其他大小的操作数。本示例的打包字格式320是128位长,并且包含八个打包字数据元素。每个打包字包含十六位的信息。图3A的打包双字格式330是128位长,并且包含四个打包双字数据元素。每个打包双字数据元素包含三十二位信息。打包四字是128位长,并包含两个打包四字数据元素。
[0083]图3B示出了替代的寄存器内数据存储格式。每个打包数据可包括超过一个独立数据元素。示出了三个打包数据格式:打包半数据元素314、打包单数据元素342、以及打包双数据元素343。打包半数据元素341、打包单数据元素342、打包双数据元素343的一个实施例包含定点数据元素。对于替代实施例中,一个或多个打包半数据元素341、打包单数据元素342、打包双数据元素343可包含浮点数据元素。打包半数据元素341的一个替代实施例是一百二十八位长度,包含八个16位数据元素。打包单数据元素342的一个替代实施例是一百二十八位长度,且包含四个32位数据元素。打包双数据元素343的一个实施例是一百二十八位长度,且包含两个64位数据元素。可以理解的是,这样的打包数据格式进一步可被扩展至其他寄存器长度,例如,96位、160位、192位、224位、256位、512位或更长。
[0084]图3C示出了根据本发明的一个实施例的多媒体寄存器中的多种有符号和无符号打包数据类型表示。无符号打包字节表示344示出了 SMD寄存器中的无符号打包字节的存储。每一个字节数据元素的信息被存储为:对于字节O存储在位7到位0,对于字节I存储在位15到位8,对于字节2存储在位23到位16,等等,最后对于字节15存储在位120到位127。因此,在该寄存器中使用了所有可用的位。该存储配置可提高处理器的存储效率。同样,因为访问了十六个数据元素,所以可对十六个数据元素并行地执行一个操作。有符号打包字节表示345示出了有符号打包字节的存储。注意到,每个字节数据元素的第八位是符号指示符。无符号打包字表示346示出了 SMD寄存器中字7到字O如何被存储。有符号打包字表示347类似于无符号打包字寄存器内表示346。注意到,每个字数据元素的第十六位是符号指示符。无符号打包双字表示348示出了双字数据元素如何存储。有符号打包双字表示349类似于无符号打包双字寄存器内表示348。注意到,必要的符号位是每个双字数据元素的第三十二位。
[0085]图3D是与可从美国加利福尼亚艸丨圣克拉拉市的英特尔公司的万维网(www)intel.com/products/processor/manuals/ 上获得的“丨n.t.el? 64 和 IA-32 英特尔体系结构软件开发者手册卷2:指令集参考(Intel? 64和IA_32Intel Architecture SoftwareDeveloper’s Manual Volume2:1nstruct1n Set Reference),,中描述的操作码格式类型相对应的具有32或更多位的操作编码(操作码)格式360以及寄存器/存储器操作数寻址模式的一个实施例的描述。在一个实施例中,可通过一个或更多个字段361和362来编码指令。可以标识每个指令高达两个操作数位置,包括高达两个源操作数标识符364和365。对于一个实施例,目的地操作数标识符366与源操作数标识符364相同,而在其他实施例中它们不相同。对于可选实施例,目的地操作数标识符366与源操作数标识符365相同,而在其他实施例中它们不相同。在一个实施例中,由源操作数标识符364和365所标识的源操作数中的一个被指令的结果所覆写,而在其他实施例中,标识符364对应于源寄存器元素,而标识符365对应于目的地寄存器元素。对于一个实施例,操作数标识符364和365可被用于标识32位或64位的源和目的地操作数。
[0086]图3E示出了具有四十个或更多位的另一个替代操作编码(操作码)格式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)和位移(displacement)字节所部分指定的寄存器到寄存器寻址、存储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、直接对寄存器寻址、寄存器至存储器寻址。
[0087]接下来转到图3F,在一些替换实施例中,64位(或128位、或256位、或512位或更多)单指令多数据(SMD)算术操作可经由协处理器数据处理(CDP)指令来执行。操作编码(操作码)格式380示出了一个这样的CDP指令,其具有CDP操作码字段382和389。对于替代实施例,该类型⑶P指令操作可由字段383、384、387和388中的一个或多个来编码。可以对每个指令标识高达三个操作数位置,包括高达两个源操作数标识符385和390以及一个目的地操作数标识符386。协处理器的一个实施例可对8、16、32和64位值操作。对于一个实施例,对整数数据元素执行指令。在一些实施例中,使用条件字段381,可有条件地执行指令。对于一些实施例,源数据大小可通过字段383来编码。在一些实施例中,可对SMD字段执行零(Z)、负(N)、进位(C)和溢出(V)检测。对于一些指令,饱和类型可通过字段384来编码。
[0088]现在转到图3G,其描绘了根据另一实施例的与可从美国加利福尼亚州圣克拉拉市的英特尔公司的万维网(www) intel.com/products/processor/manuals/上获得的“丨ntel? 高级向量扩展编程参考(丨ntel? Advanced Vector Extens1ns ProgrammingReference)”中描述的操作码格式类型相对应的用于在多个测试源上提供或测试和与测试功能的另一替代操作编码(操作码)格式397。
[0089]原始x86指令集向I字节操作码提供多种地址字节(syllable)格式以及包含在附加字节中的直接操作数,其中可从第一个“操作码”字节中获知附加字节的存在。此外,特定字节值被预留给操作码作为修改符(称为前缀prefix,因为它们被放置在指令之前)。当256个操作码字节的原始配置(包括这些特殊前缀值)耗尽时,指定单个字节以跳出(escape)到新的256个操作码集合。因为添加了向量指令(诸如,SIMD),即便通过使用前缀进行了扩展以后,也需要产生更多的操作码,并且“两字节”操作码映射也已经不够。为此,将新指令加Λ附加的映射中,附加的映射使用两字节加上可选的前缀作为标识符。
[0090]除此外,为了便于在64位模式中实现额外的寄存器,在前缀和操作码(以及任何的用于确定操作码所需的跳出字节)之间使用额外的前缀(被称为“REX”)。在一个实施例中,REX具有4个“有效载荷”位,以指示在64位模式中使用附加的寄存器。在其他实施例中,可具有比4位更少或更多的位。至少一个指令集的通用格式(一般对应于格式360和/或格式370)被一般地不出如下:
[0091][prefixes] [rex] escape [escape2] opcode modrm (等等)
[0092]操作码格式397对应于操作码格式370,并包括可选的VEX前缀字节391 (在一个实施例中,以十六进制的C4开始)以替换大部分的其他公共使用的传统指令前缀字节和跳出代码。例如,以下示出了使用两个字段来编码指令的实施例,其可在原始指令中存在第二跳出代码时、或在需要在REX字段中使用额外位(诸如,XB和W字段)时被使用。在以下所示的实施例中,传统跳出由新的跳出值所表示,传统前缀被完全压缩为“有效载荷(payload)”字节的一部分,传统前缀被重新申明并可用于未来的扩展,第二跳出代码被压缩在“映射(map)”字段中且未来的映射或特征空间可用,并且加入新的特征(诸如,增加的向量长度以及额外的源寄存器区分符)。
[0093]

【权利要求】
1.一种处理器,包括: 解码级,用于将第一指令解码以执行,所述第一指令指定第一操作数源数据、第二操作数源数据、第三操作数源数据以及操作类型;以及 一个或多个执行单元,用于响应于经解码的第一指令: 根据指定操作类型,在来自第一和第二操作数源的数据之间执行第一逻辑操作,以及在来自第三操作数源的数据与第一逻辑操作的结果之间执行第二逻辑操作,以条件地设置条件标志。
2.如权利要求1所述的处理器,其特征在于,执行所述第二逻辑操作包括逻辑与操作并且条件地设置零标志。
3.如权利要求2所述的处理器,其特征在于,根据指定的操作类型,在来自第一和第二操作数源数据的数据之间执行逻辑与操作。
4.如权利要求2所述的处理器,其特征在于,根据指定的操作类型,在来自第一和第二操作数源数据的数据之间执行逻辑或操作。
5.如权利要求1所述的处理器,其特征在于,当所述解码级解码所述第一指令时,它将第一指令与分支指令融合,以作为单个融合的微操作来执行。
6.如权利要求5所述的处理器,其特征在于,当所述一个或多个执行单元响应于所述单个融合的微操作来执行 所述第一逻辑操作时,针对所述第三源数据操作数来测试所述第一逻辑操作的结果以条件地设置零标志,并且如果所述零标志被设置则条件地分支。
7.一种处理器,包括: 解码级,用于解码: 指定第一源数据操作数、第二源数据操作数以及第三源数据操作数的第一指令,以及 指定分支目标的第二指令; 所述解码级用于将第一指令与第二指令融合,以作为单个融合的微操作来执行;以及 一个或多个执行单元,响应于所述单个融合的微操作: 在来自第一源数据操作数和第二源数据操作数的数据之间执行第一逻辑操作, 在来自第三源数据操作数的数据与第一逻辑操作的结果之间执行第二逻辑操作,以设置条件标志,以及 如果条件标志被设置,则执行去往分支目标的条件分支。
8.如权利要求7所述的处理器,其特征在于,执行所述第二逻辑操作包括逻辑测试操作并且条件地设置零标志。
9.如权利要求8所述的处理器,其特征在于,根据第一指令,在来自第一源数据操作数和第二源数据操作数的数据之间执行逻辑与操作。
10.如权利要求8所述的处理器,其特征在于,根据第一指令,在来自第一源/目的地数据操作数和第二源数据操作数的数据之间执行逻辑或操作。
11.一种方法,包括: 将第一指令解码以执行,所述第一指令指定第一源数据操作数、第二源数据操作数、第三源数据操作数以及操作类型;以及响应于经解码的第一指令: 根据指定操作类型,在来自第一和第二源数据操作数的数据之间执行第一逻辑操作,以及 在来自第三源数据操作数的数据与第一逻辑操作的结果之间执行第二逻辑操作,以设置条件标志。
12.如权利要求11所述的方法,其特征在于,执行所述第二逻辑操作包括执行逻辑与操作并且条件地设置零标志。
13.如权利要求12所述的方法,其特征在于,根据指定的操作类型,在来自第一和第二源数据操作数的数据之间执行逻辑与操作。
14.如权利要求12所述的方法,其特征在于,根据指定的操作类型,在来自第一和第二源数据操作数的数据之间执行逻辑或操作。
15.如权利要求11所述的方法,其特征在于,还包括: 将第一指令与分支指令融合,以作为单个融合的微操作来执行。
16.如权利要求15所述的方法,其特征在于,包括,响应于所述单个融合的微操作: 执行第一逻辑操作, 针对第三源数据操作数测试所述第一逻辑操作的结果,以条件地设置零标志,以及 如果零标志被设置则条件地分支。
17.—种处理系统 ,包括: 存储器;以及 多个处理器,包括第一处理器核心和第二处理器核心,每个处理器包括: 解码级,用于将第一指令解码以执行,所述第一指令指定第一操作数源数据、第二操作数源数据、第三操作数源数据以及操作类型;以及 一个或多个执行单元,用于响应于经解码的第一指令: 根据指定操作类型,在来自第一和第二操作数源的数据之间执行第一逻辑操作,以及在来自第三操作数源的数据与第一逻辑操作的结果之间执行第二逻辑操作,以条件地设置条件标志。
18.如权利要求17所述的处理系统,其特征在于,执行所述第二逻辑操作包括逻辑测试操作并且条件地设置零标志。
19.如权利要求18所述的处理系统,其特征在于,根据第一指令,在来自第一源/目的地数据操作数和第二源数据操作数的数据之间执行逻辑与操作。
20.如权利要求18所述的处理系统,其特征在于,根据第一指令,在来自第一源/目的地数据操作数和第二源数据操作数的数据之间执行逻辑或操作。
【文档编号】G06F11/36GK104050077SQ201410097060
【公开日】2014年9月17日 申请日期:2014年3月14日 优先权日:2013年3月15日
【发明者】M·洛克西金, R·凡伦天, J·C·霍恩, M·J·查尼 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1