对使用前缀的isa指令的条件执行支持的制作方法

文档序号:6485227阅读:149来源:国知局
对使用前缀的isa指令的条件执行支持的制作方法
【专利摘要】在一种实施例中,一种处理器包括指令解码器和执行单元,该指令解码器接收具有前缀和操作码的第一指令,并且,由该处理器的指令解码器生成以基于前缀确定的条件为基础执行的第二指令,该执行单元以基于前缀确定的条件为基础有条件地执行第二指令。
【专利说明】对使用前缀的ISA指令的条件执行支持
发明领域
[0001 ] 本发明的各实施例通常涉及指令处理装置。尤其,本发明的各实施例涉及具有对使用前缀的ISA指令的条件执行扩展的指令处理装置。
[0002]背景
[0003]诸如整数寄存器等的通用寄存器(GPR)中所涉及的指令被广泛用于诸如x86体系结构等的指令集体系结构(ISA)。大多数X86GPR(例如,整数寄存器,而不是x87或单指令多数据(SMD)/高级矢量扩展(AVX)寄存器)操作写入到整数寄存器并且操纵x86算术标志寄存器。例如,诸如ADD指令等加指令修改标志(例如,OF、SF、ZF、AF、CF和PF标志)并更新GPR目的地。诸如INC等递增指令也修改标志(例如,OF、SF、ZF、AF和PF)并更新GPR目的地。通常,这种标志修改是不必要的,甚至由于不必要的依赖关系链而增加了复杂性和潜在的性能影响。
[0004]也可以由处理器基于一个或多个条件有条件地执行指令。通常,为了执行条件执行,X86GPR指令要求多个操作码或指令,例如,基于图6中的条件代码表中所示出的一个或多个测试字段(test field)。这样的要求可以消耗更多资源且降低处理器的性能。
[0005]附图简述
[0006]作为示例而非限制在附图的各图中阐释本发明的各实施例,附图中,类似的标号指示相似的元素。
[0007]图1是阐释根据一种实施例的处理器的示例的框图。
[0008]图2是阐释根据一种实施例的指令的示例的框图。
[0009]图3是阐释根据一种实施例的处理器的示例的框图。
[0010]图4是阐释标志寄存器的示例的框图。
[0011]图5是阐释根据一种实施例与基于AVX的指令一起使用的VEX前缀编码的框图。
[0012]图6是阐释常规条件代码表的框图。
[0013]图7是阐释根据一种实施例的前缀编码表的框图。
[0014]图8是阐释根据一种实施例的处理指令的方法的流程图。
[0015]图9是阐释根据一种实施例的数据处理系统的示例的框图。
[0016]图10是阐释根据另一实施例的数据处理系统的示例的框图。
[0017]详细描述
[0018]将参考下面讨论的细节描述本发明的各种实施例和各方面,且附图将阐释各种实施例。下列描述和附图阐释本发明,且不应被解释成限制本发明。描述了众多特定细节,以便提供对本发明的各种实施例的透彻理解。然而,在某些实例中,不描述公知的或常规的细节,以便提供对本发明的各实施例的简练讨论。
[0019]本说明书中对“一种实施例”或“一个实施例”的引用意味着,结合该实时例描述的具体的特征、结构或特性可以被包括在本发明的至少一种实施例中。在本说明书中各处出现“在一个实施例中”的短语不一定都是指相同的实施例。
[0020]根据一些实施例,在处理器处接收到的指令包括前缀和操作码。指令的前缀的一个或多个比特被用来指示一个或多个条件,在得到满足时,这些条件引起执行指令的操作码。前缀的不同的比特模式可以被用来指定操作码的条件执行的不同条件。指令的操作码可以表示整数通用寄存器(GPR)或存储器指令,例如x86兼容操作码(例如,x86传统操作码)。结果,单个指令可以包括指定操作码的条件执行的一个或多个条件的信息。
[0021]另外,根据一种实施例,指令的前缀也被用来提供指示,即在由处理器执行指令的操作码时是否应当修改寄存器的标志。在一种实施例中,当在处理器处接收到指令时,诸如指令解码器等的处理逻辑被配置为检查前缀的一个或多个比特的比特模式,以便判断是否应当允许指令的操作码在执行时修改诸如标志寄存器、状态寄存器或条件代码寄存器等等的寄存器的标志。如果比特模式匹配预先确定的模式,则防止执行操作码的执行单元修改通常通过操作码的执行修改的标志。
[0022]在一种实施例中,指令的前缀的比特模式可以被用来指示:1) 一个或多个条件,其判断是否执行指令的操作码;以及2)是否允许操作码的条件执行修改诸如标志寄存器、状态寄存器和/或条件代码寄存器等等的寄存器的一个或多个标志。因而,具有如缀和操作码的单个指令可以在前缀中包括所有信息,以确定有条件地执行操作码的一个或多个条件和/或判断操作码的条件执行是否可以修改寄存器的一个或多个标志。
[0023]图1是阐释根据一种实施例的处理器的示例的框图。参见图1,处理器100可以表示任何种类的指令处理装置。例如,处理器101可以是通用处理器。处理器100可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIff)处理器、其各种混合或完全是其他类型的处理器中的任何。在一种实施例中,处理器100包括接收和解码指令106的指令解码器101。指令解码器101可以生成并输出反映指令106或是从中导出的一个或多个微操作、微代码、入口点、微指令、其他指令或其他控制信号。可以使用各种不同的机制来实现指令解码器101。合适的机制的示例包括但不限于微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)等等。
[0024]处理器100还包括一个或多个执行单元102,其可以包括算术逻辑单元,或能够基于指令106执行操作的另一类型的逻辑单元。作为指令解码器101解码指令106的结果,执行单元102可以接收反映指令106或是从中导出的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号。执行单元102可以作为指示一个或多个源操作数(SRC) 108的指令106的结果而操作,并把结果存储在由指令106指示的寄存器集105的一个或多个目的地操作数(DEST) 109中。执行单元102可以包括可操作为执行从指令106导出的指令或其他控制信号并据此执行操作的电路或其他执行逻辑(例如,与硬件和/或固件结合的软件)。执行单元102可以表示诸如逻辑单元、算术逻辑单元(ALU)、算术单元、整数单元等等的任何种类的执行单元。
[0025]在一种实施例中,指令106可以隐含地指示和/或明确地指定(例如,通过一个或多个专用字段或比特集合)源和目的地操作数。操作数的合适的源和/或目的地的示例包括寄存器、存储器、即时指令(immediate of the instruction)及其组合。在各种实施例中,源和目的地操作数可以是8位、16位、32位或64位操作数,尽管不要求这一点。
[0026]在一种实施例中,源操作数和目的地操作数中的一些或全部可以存储在寄存器集105的寄存器或存储器中。寄存器集可以是寄存器堆(register file)的一部分,以及潜在地是其他寄存器,例如状态寄存器、标志寄存器等等。寄存器可以是可以用来存储数据的存储位置或设备。寄存器集常常可以物理上位于具有执行单元的管芯上。寄存器可以在处理器外或从程序员的视角可见。例如,指令可以指定存储在寄存器中的操作数。只要各种不同类型的寄存器能够存储和提供在此描述的数据,它们就是合适的。可以重命名或不重命名寄存器。合适的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。备选地,源操作数和目的地操作数中的一种或多个可以存储在不同于寄存器的存储位置,诸如例如系统存储器中的位置。
[0027]再参见图1,在一种实施例中,指令106可以包括如图2中所示出的至少一个前缀和操作码。参见图1和图2,图2的指令200可以表示图1的指令106。在一种实施例中,指令200包括前缀201和操作码202。当指令解码器101接收到指令200时,根据一种实施例,指令解码器101被配置为基于操作码202生成一个或多个微代码操作或微指令以便由执行单元102执行。另外,指令解码器101被配置为检查前缀201的一个或多个比特,以便确定应由执行单元102执行与操作码202相关联的微代码操作或微指令的一个或多个条件。此外,指令解码器101被配置为检查前缀201的一个或多个比特,以便判断作为微代码操作或微指令的执行(例如,条件执行)的结果执行单元102是否可以修改寄存器104的标志107中的至少一个。
[0028]在一种实施例中,在指令解码器101接收到指令106时,指令解码器101被配置为从指令106提取前缀,例如图2的前缀201。然后,指令解码器101基于该前缀确定执行指令106的操作码的条件。在一种实施例中,通过查找条件编码表112确定条件,条件编码表112把特定前缀映射到特定条件。前缀的不同比特模式可以表示不同的条件。条件编码表112可以以硬件、固件、软件或其组合实现。基于该条件或从前缀导出的条件,指令解码器101被配置为生成一个或多个条件执行的微代码操作或微指令111,以便由执行单元102条件执行。
[0029]另外,指令解码器101还检查指令106的前缀,以便作为条件执行结果判断是否允许执行单元102修改寄存器104的任意标志107。根据一种实施例,在前缀201的一个或多个比特的比特模式匹配预先确定的模式时,指令解码器101把标志修改覆盖(FMO)信号(flag modification override signal) 110 传送给 FMO 逻辑 103。FMO 逻辑 103 可以防止标志被该操作修改。如果前缀201的一个或多个比特的比特模式不匹配预先确定的比特模式,则FMO逻辑103可以允许执行单元102修改标志107。可以由编译器和/或程序器填充存储在前缀201和/或操作码202中的信息。FMO逻辑103可以以硬件、固件、软件或其组合实现。注意,前缀201的具体比特模式可以指示可以修改具体标志,而不可以修改其他标志。因而,前缀201的比特模式规定标志107中的哪些可以由执行单元102修改,并规定为了执行操作码202必须为真的条件或多个条件。结果,单个指令可以指定条件以及是否覆盖对标志的修改尝试的指示两者。常规的系统通常要求用于条件执行的多个指令或操作码。也应注意,仅出于阐释的目的示出和描述了图2的指令200的格式;也可以应用其他格式。
[0030]在一种实施例中,在从操作码生成微代码操作或微指令111之前,假设操作码202中提供操作码,指令解码器101被配置为检查具有具体比特模式的前缀201是否有效。如果基于操作码202判断前缀201是无效的,则生成异常,且将不执行操作码。此外,对于给定的处理器100的能力(可以基于诸如图3中所示出的CPnD等的处理器标识符来确定),指令解码器101也可以检查指令200是否有效。参见图3,基于诸如前缀201、操作码202和/或处理器ID203等信息,如果判断指令是无效的,则指令解码器101被配置为生成异常204 (例如,未经定义的或UD操作)。否则,指令解码器101被配置为基于前缀201、操作码202和条件编码表112生成FMO信号110和条件执行的微代码操作或微指令111。再参见图1,基于FMO信号110,FMO逻辑103被配置为控制对于该操作是否修改寄存器104的标志107,其中,取决于指令106的特定前缀,FMO逻辑103可以允许或不允许这样的修改。
[0031]在一种实施例中,标志107可以表示算术标志中的一个或多个。寄存器104可以是状态寄存器、标志寄存器(例如,EFLAGS)或条件代码寄存器(CCR)。图4中示出了寄存器104的示例,它表示EFLAGS寄存器的示例。标志107可以包括一个或多个比特,往往是在诸如寄存器104等的寄存器中。标志107不必是寄存器中的比特。标志可以包括触发电路。比特标志可以存储二进制值,例如二进制一或二进制零。多个比特可以存储二进制值的序列或代码。这样的二进制值或二进制值的序列可以表示不同的标志值。对处理器100或其他逻辑设备来说,这些不同的标志值可以具有所指定的或所理解的含义。标志107可以用于各种不同的目的。在一些情况中,标志107可以被用来记录在处理器100或其他逻辑设备内的操作的状况(status)、状态(state)、条件或结果。标志107可以包括进位标志(CF)、溢出标志(0F)、符号标志(SF)、零标志(ZF)、辅助进位标志(AF)或奇偶标志(PF)或其组合,如图4中所示出的。并非在所有处理器或其他逻辑设备中都包括所有这样的标志。另外,不同的名称有时被用于这些不同的标志。
[0032]根据一种实施例,指令106与加利福尼亚州圣克拉拉市的英特尔公司的基于高级矢量扩展(AVX)的ISA兼容。一种实施例利用基于AVX的指令的AVX前缀来把“标志不修改(flag non-modifying) ”指示编码到ISA。经由前缀这样做,允许这种扩展广泛地应用于X86GPR指令操作码的现有传统集。这可以应用到诸如16位、32位或64位模式等的各种模式。通过在前缀空间中添加标志不修改指示,各实施例允许在利用仅具有少量修改的大部分预先存在的传统硬件的同时生成一组丰富的标志不修改指令。在一种实施例中,一个或多个AVX前缀比特被用来向写入整数GPR或存储器目的地并更新一个或多个算术标志比特的任何或全部传统整数指令操作码指出标志不修改。这样的前缀防止在期望现有的传统指令的标志不修改版本时要求新的操作码和相应的解码器硬件。另外,根据一种实施例,AVX前缀也可以被用来指定诸如x86整数GPR或存储器指令等的某些指令的条件执行的一个或多个条件。
[0033]图5是阐释根据一种实施例与基于AVX的指令一起使用的VEX前缀编码的框图。参见图5,基于AVX的前缀包括3个字节的C4VEX编码510,它可以被实现为图2的前缀201的一部分。根据一种实施例,VEX前缀编码中的多个比特的组合可以用于条件整数执行(conditional integer execution)和标志不修改扩展(flag non-modificationextension)。再参见图5,诸如“_11111111”比特502等的在典型矢量指令中不使用的某些比特可以被用来指示是否应由执行单元修改标志。在这一实施例中,不使用比特502的较高三个比特503,而比特504被用于矢量指令。结果,比特503和/或L比特501的组合的某些比特模式可以被用来指定条件执行的一个或多个条件并指示是否应当修改标志。
[0034]在一种实施例中,L比特501的组合中的比特503也可以被用来指定条件执行的一个或多个条件并指示是否应当修改标志,如图2中所示出的。比特503和L比特501的组合比特模式被用来表示条件执行的各种条件,如图7中所示出,其可以表示图1的条件编码表112。如图7中所示出的条件编码表表示如图6中所示出的、通常要求多个指令或操作码的传统条件代码表的大多数条件。在这一实施例中,C4AVX前缀510中三个当前保留的比特503以及L比特501被用来允许现有的GPR x86操作码空间具有支持一组丰富的条件执行选项和标志不修改的能力,以及利用VEX提供的现有的三元能力的能力。在一种实施例中,标志不修改覆盖仅应用于更新GPR寄存器和标志寄存器两者的指令;它可以不应用于仅修改标志寄存器的指令。
[0035]利用如图6中所示出的条件码的x86指令使用四个比特来指定被用来评估x86算术标志的条件。通过使用C4VEX编码中的三个当前保留的比特并且再次利用(repurpose)C4VEX编码中的L比特以便允许如图6中所示出的传统条件测试字段中存在的几乎所有相同条件,本发明的一个实施例复制如图6中所示出的用于条件执行行为。“ccc”比特当前被保留在常规的系统中,且非零值将引起故障(例如,冊D)。用于利用VEX的新整数GPR指令的常规系统中的L的非零值将引起故障。借助于这种扩展,根据一种实施例,这些比特将承担可以扩展的那些整数GPR指令的含义。基于如图7中所示出编码表,可以解析编码。
[0036]在一种实施例中,可以与写入整数和标志寄存器两者的指令不同地对待仅操纵算术标志寄存器且不具有其他整数寄存器目的地的x86传统操作码,同时仍然符合VEX前缀框架。断言(predication)暗示用于更新整数寄存器的指令的标志不修改(flagnon-modification),但是该断言不必暗示用于仅更新算术标志的那些x86指令的标志不修改。CMP指令可以允许条件执行编码。对于这些指令,断言应用于标志修改本身,允许断言为真(TRUE)的指令更新算术标志,且断言为假(FALSE)的指令不更新标志。
[0037]图8是阐释根据一种实施例处理指令的方法的流程图。例如,方法800可以由图1的指令解码器101执行。参见图8,在框801,响应于在处理器处接收的第一指令,从第一指令提取前缀和操作码。在框802,处理逻辑鉴于操作码和处理器(例如,CPWD)检查该前缀的一个或多个比特,以便判断前缀比特是否有效。如果不是,在框806,生成异常。如果前缀或第一指令有效,在框803,处理逻辑生成第二指令(例如,一个或多个微代码操作或微指令),以便可由执行单元基于根据前缀确定的一个或多个条件条件执行。在框804,处理逻辑检查前缀的一个或多个比特,以便判断各比特是否匹配预先确定的比特模式。如果是这样,在框805,处理逻辑覆盖作为微代码操作或微指令的执行的结果执行单元修改标志的尝试。
[0038]图9是阐释根据本发明的一种实施例的数据处理系统的示例的框图。系统900的处理器901可以表示以上所描述的图1的处理器100。系统900可以表示台式计算机、膝上型计算机、平板计算机、服务器、移动电话(例如,智能手机)、媒体播放器、个人数字助理(PDA)、个人通信设备、游戏设备、网络路由器或集线器、无线接入点或中继器、机顶盒或其组合。注意,尽管图9阐释了数据处理系统的各种组件,但它不旨在表示任何具体的体系结构或互连组件的方式;因而,这些细节与本发明的各实施例没有密切关系。还应明白,具有更少组件或者也许具有更多组件的网络计算机、手持式计算机、移动电话和其他数据处理系统也可以与本发明的各实施例一起使用。
[0039]参见图9,在一种实施例中,系统900包括处理器901和芯片组902,芯片组902经由总线或互连将包括存储器905和设备903-904的各种组件耦合到处理器901。处理器901可以表示其中包括有单个处理器核或多个处理器核909的单个处理器或多个处理器。处理器901可以表示一个或多个通用处理器,例如微处理器、中央处理单元(CPU)等等。更具体地,处理器901可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实现其他指令集的处理器或实现指令集的组合的处理器。处理器901也可以是一个或多个专用处理器,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器、图形处理器、网络处理器、通信处理器、密码处理器、协处理器、嵌入式处理器或能够处理指令的任何其他类型的逻辑。例如,处理器901可以是可从加利福尼亚州圣克拉拉市的英特尔公司购买的奔腾? 4( Pentium84)、奔腾? 双核(Pentium? Dual-Core)、酷睿 ?2 双核和四核(C0re?2Du0 and Quad)、至强?(XeonTM)、安腾 ?(Itanium?)、XScale?、酷睿 ?i7 (Core?i7)、酷睿 ?i5 (Core?i5)、赛扬?(Celeron? )或StixmgARM?微处理器。处理器901被配置为执行用于执行在此讨论的操作和步骤的指令。
[0040]处理器901可以包括指令解码器,指令解码器可以接收和解码各种指令。解码器可以生成和输出一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号,它们反映原始输入指令或者是从原始输入指令导出。可以使用各种不同的机制实现解码器。合适的机制的示例包括但不限于微代码只读存储器(ROM)、查找、硬件实现、可编程逻辑阵列(PLA)等等。
[0041]解码器可以不是处理器901的必要组件。在一个或多个其他实施例中,处理器901可以改为具有指令仿真器、指令翻译器、指令变形器、指令解释器或其他指令转换逻辑。各种不同类型的指令仿真器、指令变形器、指令翻译器等等在本领域中是已知的。指令转换逻辑可以接收比特范围隔离指令,仿真、转换、变形、解释或以另外方式转换该比特范围隔离指令,并输出对应于原始比特范围隔离指令的一个或多个指令或控制信号。指令转换逻辑可以以软件、硬件、固件或其组合实现。在一些情况中,指令转换逻辑中的一些或全部可以位于与其余的指令处理装置不同的管芯,例如在分离的管芯上或在系统存储器中。在一些情况中,指令处理装置可以具有解码器和指令转换逻辑两者。
[0042]处理器901和/或核心909还可以包括一个或多个执行单元,这些执行单元与解码器的输出耦合或以另外方式与之通信。术语“耦合”可以意味着两个或更多个元素处于直接的电气接触或连接。然而,“耦合”也可以意味着两个或更多个元素相互不处于直接连接,但仍然彼此协同操作或交互或通信(例如,通过中间组件)。作为一个示例,解码器和执行单元可以通过中间的可选缓冲器或本领域中已知可能耦合在解码器和执行单元之间的其他组件彼此耦合起来。处理器901和/或核心909还可以包括多种不同类型的执行单元,诸如例如算术单元、算术逻辑单元(ALU)、整数单元等等。
[0043]处理器901还可以包括一个或多个寄存器堆,包括但不限于整数寄存器、浮点寄存器、矢量或扩展寄存器、状态寄存器和指令指针寄存器等等。在此使用术语“寄存器”来指代被用作宏指令的一部分以便标识操作数的板载处理器存储位置。换句话说,在此指出的寄存器在处理器外(从程序器的视角)可见的寄存器。然而,寄存器在含义上不应限于具体类型的电路。相反,寄存器仅需要能够存储和提供数据,并执行在此描述的功能。在此描述的寄存器可以使用任何数量的不同技术由在处理器内的电路实现,例如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。在一种实施例中,整数寄存器存储32位或64位整数数据。寄存器堆可以包含用于经打包数据的扩展多媒体SMD寄存器(例如,XMM)。这样的寄存器可以包括涉及SSE2、SSE3、SSE4、GSSE和更高(泛指为“SSEx” )技术的128位宽的XMM寄存器和256位宽的寄存器(它们可以在它们的低阶比特中合并XMM寄存器),以便保存这样的经打包数据操作数。
[0044]处理器901和/或核心909也可以可选地包括一个或多个其他公知的组件。例如,处理器901可以可选地包括指令取数逻辑、预解码逻辑、调度逻辑、重排序缓冲器、分支预测逻辑、引退逻辑、寄存器重命名逻辑等等或其某种组合。这些组件可以按常规方式实现,或者具有本领域中的技术人员基于本公开内容将明显看出的细微调整。理解在此的实施例不需要对这些组件的进一步描述,但如果期望的话,可以容易地从常见文献得到进一步的描述。存在本领域中已知的这样的组件的众多不同的组合和配置。该范围不限于任何已知的这样的组合或配置。各实施例可以被实现为带有或不带有这样的附加组件。
[0045]芯片组902可以包括存储器控制中枢(MCH)910和输入输出控制中枢(ICH)911。MCH910可以包括与存储器905通信的存储器控制器(未示出)。MCH910也可以包括与图形设备912通信的图形接口。在本发明的一种实施例中,图形接口可以经由加速图形端口(AGP)、高速外围组件互连(PCI)总线或其他类型的互连与图形设备912通信。ICH911可以提供到诸如设备903-904等的I/O设备的接口。设备903-904中的任何都可以是存储设备(例如,硬盘驱动器、闪速存储器设备)、通用串行总线(USB)端口、键盘、鼠标、并行端口、串行端口、打印机、网络接口(有线或无线)、无线收发器(例如,WiF1、蓝牙或蜂窝收发器)、媒体设备(例如、音频/视频编解码器或控制器)、总线桥(例如,PC1-PCI桥)或其组合。
[0046]MCH910有时被称为北桥,且ICH911有时被称为南桥,尽管有些人在它们之间做出技术区分。在此所使用的术语MCH、ICH、北桥和南桥预期被广泛地解释为覆盖其功能包括向处理器传送中断信号的各种芯片。在一些实施例中,MCH910可以与处理器901集成起来。在这样的配置中,芯片组902操作执行MCH910和ICH911的一些功能的接口芯片,如图10中所示出的。此外,图形加速器912可以被集成在MCH910或处理器901内。
[0047]存储器905可以存储包括由处理器901或任何其他设备执行的指令序列的数据。例如,各种操作系统、设备驱动器、固件(例如,输入输出基本系统或BIOS)和/或应用的可执行代码913和/或数据914可以被加载到存储器905中且由处理器901执行。操作系
统可以是任何种类的操作系统,诸如例如来自微软?的Windows?操作系统、来自苹果的Mac OS? iOS?、来自作歌⑧的Android?、Linux?、Unix?或其他实时操作系统。在一种实施例中,存储器905可以包括一个或多个易失性存储(或存储器)设备。例如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM (SDRAM)、静态RAM(SRAM)或其他类型的存储设备。也可以利用非易失性存储器,例如硬盘或闪速存储设备。前端总线(FSB)906可以是多点式互连或点对点互连。术语FSB预期覆盖到处理器901的各种类型的互连。芯片组902可以经由点对点接口与诸如设备903-904等的其他设备通信。总线906可以被实现为各种总线或互连,诸如例如快速路径互连(QPI)、超传输互连或与高级微控制器总线体系结构(AMBA)兼容的总线,例如AMBA高性能总线(AHB)。
[0048]高速缓存908可以是任何种类的处理器高速缓存,例如I级(LI)高速缓存、L2高速缓存、L3高速缓存、L4高速缓存、末级高速缓存(LLC)或其组合。高速缓存908可以与处理器901的处理器核心909共享。高速缓存908可以嵌入在处理器901内和/或外置于处理器901。高速缓存908可以在各核心909当中共享。备选地,核心909中的至少一种还包括其中嵌入的其自己的本地高速缓存(例如,高速缓存908A-908N)。核心909中的至少一种可以利用本地高速缓存已经与核心909中的另一个共享的高速缓存两者。处理器901还可以包括直接高速缓存访问(DCA)逻辑,以便允许诸如设备903-904等的其他设备直接地访问高速缓存908。处理器901和/或芯片组902还可以包括中断控制器,例如高级可编程中断控制器(APIC),以便处理诸如消息信号中断等的中断。
[0049]已经在对在计算机存储器内的数据比特的操作的算法和符号表示方面呈现了前述详细描述中的一些部分。这些算法描述和表示是由数据处理领域的技术人员最有效地把他们的工作实质传达给其他本领域技术人员的方式。通常,在这里把算法设想为引起所期望的结果的自相一致的操作序列。各操作是要求物理量的物理操纵的那些操作。
[0050]然而,应当牢记,所有这些和类似术语与适当的物理量相关联,且仅仅是适用于这些量的方便的标签。除非特别声明,否则从上面的讨论中可以明显看出,可以理解,在整个描述中,利用诸如下面的权利要求书中所陈述的那些的术语的讨论,是指计算机系统或类似的电子计算设备的动作和过程,这些动作和过程把在计算机系统的寄存器和存储器内被表示为物理(电子)量的数据操纵和变换成在计算机系统存储器或寄存器或其它这样的信息存储、传输或显示设备中内类似地表示为物理量的其他数据。
[0051]可以使用在一个或多个电子设备上存储和执行的代码和数据来实现附图中所示出的技术。这样的电子设备使用计算机可读介质存储和通信(在内部和/或与网络上的其他电子设备)代码和数据,计算机可读介质例如非暂态计算机可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪速存储器设备;相变存储器)和暂态计算机可读传输介质(例如,诸如载波、红外信号、数字信号等的电、光、声或其他形式的所传播的信号)。
[0052]前述附图中所叙述的过程或方法可以由包括硬件(例如电路、专用逻辑等等)、固件、软件(例如,在非暂态计算机可读介质上实现)或两者的组合的处理逻辑执行。尽管以上相对于一些连续操作描述了过程或方法,但应明白,可以按不同次序执行所描述的操作中的一些。此外,可以并行而非循序执行一些操作。
[0053]在前述的说明书中,已经参考其特定示例性实施例描述了本发明的各实施例。可以明显看出,在不偏离下列权利要求所陈述的本发明的宽泛的精神和范围的前提下,可以对其做出各种修改。因此,应该以说明性而非限制性的意义来看待说明书和附图。
【权利要求】
1.一种处理器,包括: 指令解码器,其接收具有前缀和操作码的第一指令,并且由所述处理器的所述指令解码器生成以基于所述前缀确定的条件为基础执行的第二指令;以及 执行单元,其以基于所述前缀确定的所述条件为基础有条件地执行所述第二指令。
2.如权利要求1所述的所述处理器,进一步包括把多个前缀转换成多个条件的前缀-条件表,其中,所述指令解码器在所述前缀-条件表中执行查找操作,以便把所述前缀转换成所述条件。
3.如权利要求1所述的所述处理器,其特征在于,所述执行单元基于所述条件检查所述处理器的标志寄存器,以便判断所述标志寄存器的一个或多个标志是否满足从所述前缀导出的、执行所述第二指令的所述条件。
4.如权利要求1所述的所述处理器,进一步包括标志修改覆盖逻辑,其基于所述第一指令的所述前缀防止所述执行单元修改所述处理器的标志寄存器。
5.如权利要求1所述的所述处理器,其特征在于,所述指令解码器: 从所述第一指令提取所述前缀, 考虑所述处理器的能力,基于所述前缀判断所述第一指令是否有效,其中,如果所述第一指令有效,则所述执行单元仅执行所述第一指令,以及 如果基于所述处理器的能力所述前缀的一个或多个比特匹配预先确定的比特模式,则生成指示所述第一指令无效的异常。
6.如权利要求5所述的所述处理器,其特征在于,在判断所述第一指令是否有效时,考虑标识所述处理器的类型的处理器标识符,所述指令解码器检查所述前缀的一个或多个比特的值。
7.如权利要求1所述的所述处理器,其特征在于,所述标志修改逻辑进行: 如果所述前缀的一个或多个比特匹配第一预先确定的比特模式,则防止所述执行单元修改所述标志寄存器,以及 如果所述前缀的一个或多个比特匹配第二预先确定的比特模式,则允许所述执行单元修改所述标志寄存器。
8.如权利要求1所述的所述处理器,其特征在于,在所述操作码包括受所述处理器支持的矢量指令时,所述前缀包括表示矢量长度的一个或多个比特。
9.一种方法,包括: 在处理器处接收具有前缀和操作码的第一指令; 由所述处理器的指令解码器生成以基于所述前缀确定的条件为基础执行的第二指令;以及 由所述处理器的执行单元以基于所述前缀确定的条件为基础有条件地执行所述第二指令。
10.如权利要求9所述的方法,其特征在于,生成第二指令包括在前缀-条件表中执行查找操作,以便把所述前缀转换成所述条件。
11.如权利要求9所述的方法,其特征在于,有条件地执行包括基于所述条件检查所述处理器的标志寄存器,以 便判断所述标志寄存器的一个或多个标志是否满足从所述前缀导出的、执行所述第二指令的所述条件。
12.如权利要求9所述的方法,进一步包括基于所述第一指令的所述前缀防止所述执行单元修改所述处理器的标志寄存器。
13.如权利要求9所述的方法,进一步包括: 从所述第一指令提取所述前缀; 考虑所述处理器的能力,基于所述前缀判断所述第一指令是否有效,其中,如果所述第一指令有效,则所述执行单元仅执行所述第一指令;以及 基于所述处理器的能力,如果所述前缀的一个或多个比特匹配预先确定的比特模式,则生成指示所述第一指令无效的异常。
14.如权利要求13所述的方法,其特征在于,判断所述第一指令是否有效包括考虑标识所述处理器的类型的处理器标识符检查所述前缀的一个或多个比特的值。
15.如权利要求9所述的方法,进一步包括: 如果所述前缀的一个或多个比特匹配第一预先确定的比特模式,则防止所述执行单元修改所述标志寄存器;以及 如果所述前缀的一个或多个比特匹配第二预先确定的比特模式,则允许所述执行单元修改所述标志寄 存器。
16.如权利要求9所述的方法,其特征在于,在所述操作码包括受所述处理器支持的矢量指令时,所述前缀包括表示矢量长度的一个或多个比特。
17.—种系统,包括: 互连; 耦合到所述互连的处理器,其接收具有前缀和操作码的第一指令,由所述处理器的指令解码器生成以基于所述前缀确定的条件为基础执行的第二指令,并引起执行单元以基于所述前缀确定的条件为基础有条件地执行所述第二指令;以及 耦合到所述互连的动态随机存取存储器(DRAM)。
18.如权利要求17所述的系统,其特征在于,所述处理器进一步包括将多个前缀转换成多个条件的前缀-条件表,其中,所述指令解码器在所述前缀-条件表中执行查找操作以便把所述前缀转换成所述条件。
19.如权利要求17所述的系统,其特征在于,所述处理器基于所述条件检查所述处理器的标志寄存器,以便判断所述标志寄存器的一个或多个标志是否满足从所述前缀导出的、执行所述第二指令的所述条件。
20.如权利要求17所述的系统,其特征在于,所述处理器进一步包括标志修改覆盖逻辑,以便基于所述第一指令的所述前缀防止所述执行单元修改所述处理器的标志寄存器。
【文档编号】G06F9/30GK103959239SQ201180075225
【公开日】2014年7月30日 申请日期:2011年11月30日 优先权日:2011年11月30日
【发明者】J·D·库姆斯, J·W·布兰德特, R·凡伦天, K·B·史密斯, Z·安萨瑞, M·洛克西金 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1