CN104049948B - 指令仿真处理器、方法和系统 - Google Patents

指令仿真处理器、方法和系统 Download PDF

Info

Publication number
CN104049948B
CN104049948B CN201410098131.8A CN201410098131A CN104049948B CN 104049948 B CN104049948 B CN 104049948B CN 201410098131 A CN201410098131 A CN 201410098131A CN 104049948 B CN104049948 B CN 104049948B
Authority
CN
China
Prior art keywords
instruction
processor
command code
given command
logic
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.)
Active
Application number
CN201410098131.8A
Other languages
English (en)
Other versions
CN104049948A (zh
Inventor
W·C·拉什
M·G·迪克森
Y·A·圣地亚哥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN104049948A publication Critical patent/CN104049948A/zh
Application granted granted Critical
Publication of CN104049948B publication Critical patent/CN104049948B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Abstract

本申请涉及指令仿真处理器、方法和系统。根据本发明一方面的处理器包括用于接收第一指令和用于确定第一指令将被仿真的解码逻辑。该处理器还包括与解码逻辑耦合的仿真模式知晓解码后指令处理器逻辑。仿真模式知晓解码后指令处理器逻辑用于处理从指令解码出的一个或多个控制信号。该指令是用于仿真第一指令的一个或多个指令的集合中的一个。仿真模式知晓解码后指令处理器逻辑用于在处于仿真模式时与不处于仿真模式时不同地处理所述一个或多个控制信号。还公开了其它装置以及方法和系统。

Description

指令仿真处理器、方法和系统
技术领域
本文中所描述的实施例一般涉及处理器。具体地,本文所述的各实施例一般涉及处理器中的指令仿真。
背景技术
处理器通常具有指令集架构(ISA)。ISA一般表示处理器的架构中涉及编程的那部分。ISA通常包括处理器的原生指令、架构寄存器、数据类型、寻址模式等。ISA的一部分是指令集。该指令集一般包括提供给处理器以供执行的宏指令或ISA级指令。包括执行逻辑和其他流水线逻辑以处理该指令集中的指令。通常,这样的执行逻辑和其他流水线逻辑的数量可能相当大。通常,指令集中的指令越多,并且该指令集中的指令越复杂和/或越专门化,这样的逻辑的数量越大。这样的硬件趋于增加处理器的制造成本、大小和/或功耗。
附图说明
通过参考用来说明本发明的实施例的以下描述和附图,可最好地理解本发明。在附图中:
图1是计算机系统的实施例的框图;
图2是在处理器中仿真指令的方法的实施例的流程框图。
图3是示出用一个或多个指令的集合来仿真指令的逻辑的实施例的框图。
图4是示出用于允许处理器在处于仿真模式时以与不处于仿真模式时不同的方式处理异常情况的逻辑的实施例的框图。
图5是示出用于允许处理器在处于仿真模式时与不处于仿真模式时不同地访问资源和/或信息的逻辑的实施例的框图。
图6是由处理器和/或在处理器中执行的方法的实施例的流程框图。
图7是示出允许给定操作码具有不同含义的逻辑的实施例的框图。
图8是可由操作系统模块执行的方法的实施例的流程框图。
图9是程序加载器模块的实施例的框图,该程序加载器模块包括用于选择软件库中具有对于将使用它们的软件而言合适的给定操作码含义的一个或多个功能、子例程、或其他部分的集合的选择模块。
图10A是示出了根据本发明的各实施例的示例性有序流水线和示例性寄存器重命名、无序发布/执行流水线的框图。
图10B是示出了根据本发明的各实施例的要包括在处理器中的有序架构核和示例性寄存器重命名,无序发布/执行架构核的示例性实施例的框图。
图11A是根据本发明的实施例的单处理器核以及其到管芯上(on-die)互联网络的连接以及二级(L2)高速缓存的其本地子集的框图。
图11B是根据本发明的各实施例的图11A中的处理器核的一部分的展开图。
图12是根据本发明的实施例的可具有一个以上核、可具有集成存储器控制器、并且可具有集成图形器件的处理器的框图。
图13示出根据本发明的实施例的系统的框图。
图14示出根据本发明的实施例的第一更具体的示例性系统的框图。
图15示出根据本发明的实施例的第二更具体的示例性系统的框图。
图16示出根据本发明的实施例的片上系统(SoC)的框图。
图17是根据本发明的各实施例的对比使用软件指令转换器来将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
具体实施方式
本文公开了指令仿真处理器、方法和系统。在以下描述中,阐述了许多具体细节(例如,具体的仿真模式知晓逻辑、用于处理异常情况的方法、特权级资源和信息的类型、逻辑实现、宏架构细节、操作序列、逻辑划分/集成细节、硬件/软件划分细节、处理器配置、系统组件的类型和相互关系等)。然而,应该理解,本发明的各实施例可以在没有这些具体细节的情况下实施。在其他情况下,没有详细示出已知的电路、结构,以及技术,以便不至于使本描述变得模糊。
图1是计算机系统100的实施例的框图。在各个实施例中,计算机系统可以表示台式计算机、膝上型计算机、笔记本电脑、平板计算机、上网本、智能电话、个人数字助理、蜂窝电话、服务器、网络设备(例如,路由器或交换机)、移动因特网设备(MID)、媒体播放器、智能电视、机顶盒、视频游戏控制器、或其他类型的电子设备。
计算机系统包括处理器101的实施例。在某些实施例中,处理器可以是通用处理器。例如,处理器可以是通常用作中央处理单元(CPU)的类型的通用处理器。在其他实施例中,处理器可以是专用处理器。合适的专用处理器的示例包括但不限于,协处理器、图形处理器、通信处理器、网络处理器、加密处理器、嵌入式处理器、以及数字信号处理器(DSP),这里仅给出几个示例。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、其各种混合型、或完全其他类型的处理器中的任何一种。
计算机系统还包括通过耦合机构109与处理器101耦合的存储器110的实施例。本领域公知的用于耦合处理器和存储器的任何常规耦合机构均是合适的。这样的机构的示例包括但不限于互连、总线、中枢、存储器控制器、芯片组、芯片组组件等,及其组合。存储器可包括相同类型或不同类型的一个或多个存储器设备。适合于各实施例的一个常用类型的存储器是动态的随机存取存储器(DRAM),但是可另选地使用其他类型的存储器(例如,闪存)。
存储器110可以具有存储在其中的软件111。软件可以包括例如一个或多个操作系统(OS)以及一个或多个应用。在操作期间,软件的部分可以被加载到处理器上,并在处理器上运行。如图所示,处理器可以接收处理器的指令集中的ISA指令102。例如,指令提取单元可以提取ISA指令。ISA指令可以表示提供给处理器以被解码和执行的宏指令、汇编语言指令、机器级指令或其他指令。如图所示,在某些实施例中,ISA指令可以包括非仿真指令103和一个或多个类型的被仿真指令104二者。
处理器包括解码逻辑105。解码逻辑也可以被称为解码单元或解码器。解码逻辑可以接收ISA指令102。在非仿真指令103的情况下,解码逻辑可以解码相对较高级的指令并输出一个或多个相对较低级的微指令、微操作、微代码接入点、或从ISA指令导出的其他相对较低级的指令或控制信号。在本说明中,这些被示为经解码指令106。从解码器输出的这些经解码指令可以反映、表示输入到该解码器的较高级的ISA指令和/或从其导出,并且可以通过一个或多个较低级(例如,电路级或硬件级)操作来实现这些ISA指令。可使用各种不同的机制来实现解码器,这些机制包括但不限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)、以及在本领域中已知的用于实现解码器的其他机制。
解码后指令处理器逻辑107与解码逻辑耦合。解码后指令处理器逻辑可以表示处理处理器流水线的指令的解码后部分。解码后指令处理器逻辑可以接收并处理经解码指令106。通常,解码后指令处理器逻辑可以包括寄存器读和/或存储器读逻辑、执行逻辑、寄存器和/或存储器写回逻辑、和异常处理程序逻辑,但是该逻辑可以随架构不同而改变,并且本发明的范围不限于这样的逻辑。在某些实施例中,例如,在无序处理器流水线的情况下,解码后指令处理器逻辑可以任选地包括其他逻辑,诸如,作为示例的分配逻辑、重命名逻辑、调度逻辑、引退或提交逻辑等。
处理器还包括架构可见的寄存器或架构寄存器108的一个或多个集合。架构可见的寄存器表示软件和/或编程员可见的寄存器,和/或由ISA指令102指定来标识操作数的寄存器。这些架构寄存器与给定微架构中的其他非架构的或非架构可见的寄存器(例如,指令所使用的临时寄存器,重新排序缓冲器,引退寄存器等等)不同。这些架构寄存器一般表示用于存储数据的管芯上处理器存储位置。这些架构寄存器在本文中通常被简称为寄存器。作为示例,这些架构寄存器可以包括一组通用寄存器、一组打包数据寄存器、一组浮点寄存器、一组整数寄存器或其某种组合。架构寄存器可使用公知技术在不同的微架构中以不同的方式实现,并且不限于任何特定类型的电路。合适类型的架构寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、以及其组合。
解码后指令处理器逻辑107与寄存器108耦合。解码后指令处理器逻辑可以从寄存器接收数据,并将数据写入或存储到寄存器中。例如,寄存器读逻辑可以从寄存器读取被指示为指令的源操作数的数据,和/或写回逻辑可以将被指示为指令的目的地操作数的结果写入或存储到寄存器中。解码后指令处理器逻辑也与存储器110耦合,并且可以从该存储器接收数据并将数据存储到该存储器中。例如,存储器读取逻辑可以从各存储器位置读出各指令所指示的数据,和/或存储器写回逻辑可以将各指令所指示的数据写入各存储器位置。
再次参考图1,被仿真指令104也可以被提供给解码逻辑105。与非仿真指令103相反,被仿真指令104可能无法完全由解码逻辑解码并作为相应的经解码指令106被提供给解码后指令处理器逻辑107。相反,在某些实施例中,可以提供仿真逻辑115来仿真被仿真指令104。在本领域,可以将各种不同的术语给予这样的仿真,诸如,作为示例的指令转换、二进制转换、代码变形、指令解译等。术语“仿真”在本文中被广泛用于涵盖该业内使用的这些各种不同的术语。
如图所示,在某些实施例中,仿真逻辑115可以划分成部分是管芯上的仿真逻辑117而部分是管芯外的仿真逻辑113,但是这不是必须的。在其他实施例中,全部仿真逻辑115可以任选地为在管芯上,或者大部分仿真逻辑可以任选地为在管芯外,但是通常将存在至少某个管芯上仿真逻辑(例如,仿真模式118、在流水线中的某个仿真模式知晓指令处理器逻辑120等)。该管芯上仿真逻辑与处理器一起被固定、驻留、或保持在管芯上的。通常,即使在处理器已断电时、在引导之前和/或在制造完成时,该管芯上仿真逻辑也与处理器一起存在于管芯上。合适的管芯上仿真逻辑的示例包括但不限于硬件(例如,集成电路、晶体管等)、固件(例如,管芯上ROM、EPROM、闪存、或其他持久或非易失性存储器和存储在其中的非易失性指令)、或其组合。
管芯外仿真逻辑113可以被包括在存储器110中。管芯外仿真逻辑可以与管芯上仿真逻辑耦合或以其他方式与管芯上仿真逻辑通信。在某些实施例中,管芯外仿真逻辑可以被包括在存储器的受保护区域或部分112中。在某些实施例中,可保留受保护部分以供处理器的管芯上硬件和/或固件逻辑单独使用,但不供该处理器上执行的软件111使用。例如,在某些实施例中,管芯上仿真逻辑117、仿真模式知晓指令处理器逻辑120和/或潜在的其他管芯上处理器逻辑可以能够访问并使用管芯外仿真逻辑113,但在该处理器上运行的软件111(例如,操作系统或应用)可能无法访问或使用管芯外仿真逻辑113。在某些实施例中,可保护管芯外仿真逻辑免于被应用、操作系统、虚拟机管理器(如果存在的话)和/或I/O设备访问和修改,或者免于对应用、操作系统、虚拟机管理器(如果存在的话)和/或I/O设备可见。这可能有助于促进安全性。
解码逻辑包括用于检测或识别被仿真指令104的逻辑119。例如,解码器可以基于操作码来检测被仿真指令。在某些实施例中,在检测到被仿真指令后,解码器可以将仿真模式信号116(例如,仿真捕获(trap)信号)提供给仿真逻辑115。如图所示,仿真逻辑可以具有仿真模式118。作为示例,仿真模式可以包括处理器的控制或配置寄存器中的一个或多个比特或控制,以指示该处理器(例如,逻辑105、107等)是否处于仿真模式中。在某些实施例中,可以在从解码器接收到指示被仿真指令104将被仿真的仿真模式信号116后进入仿真模式118。
在某些实施例中,解码逻辑105还可以将与正被仿真的指令相关联的其他信息提供给仿真逻辑115。这样的信息的示例潜在地包括但不限于操作数标识符(例如,源寄存器地址或目的寄存器地址或存储器位置)、存储器寻址模式、即时数、加速执行的常数、和/或来自被仿真指令104和/或与被仿真指令104相关联的其他信息。作为示例,可以潜在地提供来自被仿真指令和/或与被仿真指令相关联的、对仿真系统有用的允许该仿真系统对被仿真指令104进行仿真的任何信息。
在某些实施例中,仿真逻辑115可以包括一个或多个指令114的不同集合以对每一种不同类型的被仿真指令104进行仿真。例如,可以提供一个或多个指令114的第一集合以对具有第一操作码的第一指令104进行仿真,并且可以提供一个或多个指令114的第二不同集合以对具有第二不同操作码的第二不同指令104进行仿真。在某些实施例中,每一集合可以包括至少三个指令。在所示的实施例中,一个或多个指令114的集合被包括在管芯外仿真逻辑113中,但这不是必须的。在其他实施例中,指令114可以被提供在管芯上(例如,在管芯上仿真逻辑117的持久或非易失性存储器中)。在又一些实施例中,指令114的部分可以被提供在管芯上(例如,在管芯上仿真逻辑中),而部分可以被提供在管芯外(例如,在管芯外仿真逻辑中)。
在某些实施例中,可以从仿真逻辑115中提取(fetch)或者以其他方式检取(retrieve)用于对被仿真指令104进行仿真的一个或多个指令114的集合中的每个指令,并将其提供给解码逻辑105。在某些实施例中,用于仿真被仿真指令104的一个或多个指令114的集合中的每个指令可以是与经仿真指令104相同的指令集合。解码逻辑105可以用于将一个或多个指令114的集合中的每一个指令解码成相应的经解码指令106。经解码指令可以被提供给解码后指令处理器逻辑107。
解码后指令处理器逻辑包括仿真模式知晓指令处理器逻辑120的实施例。如图所示,仿真模式知晓指令处理器逻辑可以与仿真模式118耦合,或者以其他方式知晓仿真模式118。在某些实施例中,仿真模式知晓指令处理器逻辑可用于在处理器处于仿真模式时在至少某些方面与该处理器不处于仿真模式时不同地处理指令114的经解码版本中的至少一些。处理过程可在各种不同方面存在差异。在某些实施例中,当处于仿真模式时,可以与在不处于仿真模式时不同地执行故障处理或错误处理。在其他实施例中,当处于仿真模式时可与不处于仿真模式时不同地处理对于特定类型的资源和/或信息(例如,举例来说,安全、特权级或以其他方式控制访问的资源和/或信息)的访问。例如,当处于仿真模式时可允许对于资源和/或信息的访问,但当不处于仿真模式时则不允许。
当处于仿真模式时,解码后指令处理器逻辑可访问存储位置121。在所示实施例中,存储位置121是管芯上仿真逻辑117的一部分。可替换地,存储位置可包括在管芯外仿真逻辑中,或者部分包括于管芯上仿真逻辑内且部分包括于管芯外仿真逻辑内。存储位置可用于存储临时变量、中间结果和/或与指令集114的执行相关联的执行状态。这可有助于避免保存具有已仿真指令104的原始程序的执行状态的需要,和/或可有助于保护这样的执行状态(例如,架构寄存器108的内容)免于被指令集114的处理所破坏。在某些实施例中,存储位置121可仿真架构寄存器,但这不是必需的。在一些实施例中,存储位置121的内容可独立于、隔离于、和/或受保护以免于应用程序、操作系统、虚拟机管理器、I/O设备、中断等等的访问。一旦完成指令集114,处理器的架构状态可被更新(例如,结果可从存储位置121被存储到寄存器108)。这可通过低等待时间访问来完成。通常,这可用于近似、模仿、类似或以其他方式仿真可能已产生的架构状态的变化和/或当被仿真指令104实际已经被直接执行时可能已发生的处理器行为。
为了避免混淆描述,已示出和描述了相对简单的处理器101。在其他实施例中,处理器可任选地包括其他公知的元件。实际上,处理器中的组件有大量不同的组合和配置,并且实施例不限于任何特定的组合或配置。处理器可代表集成电路,或是一个或多个半导体管芯或芯片(例如,单个管芯或芯片,或是包括两个或多个管芯或芯片的封装)的集合。在某些实施例中,处理器可代表片上系统(SoC)和/或芯片多处理器(CMP)。
某些处理器使用相对复杂的操作。例如,替代仅有单个存储器访问,某些指令执行多个存储器访问。一个示例是用于从存储器收集数据元素的向量的向量收集指令。作为另一个示例,代替比较对数据元素的或比较在两个打包数据中的数对相应数据元素,特定指令可执行很多数据元素比较。示例是向量冲突指令和字符串处理指令。一种方法是完全地以硬件实现这种复杂的操作。然而,所需的硬件量常常会趋于相当可观,这往往会增加制造成本、管芯大小、和功耗。另一种方法是至少部分地以微代码来实现这种复杂的操作。使用微代码可有助减少实现这种复杂的操作所需的硬件量,并且/或者可有助于允许特定的已有硬件被重复使用。然而,某些处理器不使用微代码(例如,不使用微代码来实现指令集的任何指令)。
在某些实施例中,相对更为复杂的指令可用一个或多个相对更为简单的指令的集合来仿真。术语“更复杂”和“更简单”是相对性用语,不是绝对性用语,它们是彼此相对而言的。因此,这可潜在地有助于减少实现更复杂指令所需的硬件量,并且/或者可有助于被用于仿真更复杂指令的一个或多个指令所使用的现有硬件的重复使用。在一些实施例中,采用一个或多个更简单指令对更复杂指令的仿真可用于提供更复杂指令的类-微代码的实现,即便处理器在某些实施例中可能没有被配置成使用微代码和/或没有被配置成使用微代码来实现该更复杂指令。
图2是在处理器中仿真指令的方法230的实施例的流程框图。在一些实施例中,图2的操作和/或方法可由图1的处理器执行,和/或在图1的处理器内执行。本文中针对图1的处理器描述的组件、特征和具体的任选细节也可任选地适用于图2的操作和/或方法。替代地,图2的操作和/或方法可由类似的或完全不同的处理器执行,和/或在类似的或完全不同的处理器内执行。此外,图1的处理器可执行类似于或不同于图2的操作和/或方法的操作和/或方法。
该方法包括在框231接收第一指令。在某些实施例中,第一指令可以在解码器处被接收。该方法包括在框232确定要仿真第一指令。在某些实施例中,解码器可通过确定第一指令的操作码是在要进行仿真的指令的一个或多个操作码的集合之中,来确定要仿真第一指令。该方法包括在框233接收要用来仿真第一指令的一个或多个指令的集合。在某些实施例中,可在解码器处从管芯上仿真逻辑、管芯外仿真逻辑或其组合接收该指令集。在某些实施例中,该集合的每个指令可以和第一指令是相同指令集的。该方法包括,在框234,在处于仿真模式时与在不处于仿真模式时不同地处理从该集合的指令导出的一个或多个控制信号。
在不同的实施例中,这可以按不同的方式来完成。在某些实施方式中,在对集合中指令的处理期间遭遇的异常情况可被不同地处理。在某些实施方式中,对集合中指令的处理可允许访问在不处于仿真模式中时对相同指令(即,具有相同操作码的指令)不可用的信息和/或资源。
图3是示出用一个或多个指令(例如,更简单指令)的集合来仿真指令(例如,复杂指令)304的逻辑301的实施例的框图。在某些实施例中,图3的逻辑可以被包括在图1的处理器和/或计算机系统中。或者,图3的逻辑可以被包括在相似的或不同的处理器或计算机系统中。此外,图1的处理器和/或计算机系统可包括和图3的逻辑类似或不同的逻辑。
要被仿真的指令(例如,复杂指令)304可被提供给解码逻辑305。解码逻辑可包括逻辑319,用于检测指令304,例如,用于检测指令304的操作码在要被仿真的指令的操作码集合中。如所示,在某些实施例中,处理器可不具有操作码330。解码逻辑可提供仿真模式信号316给仿真逻辑315。在各种实施例中,仿真逻辑315可包括管芯上逻辑、管芯外逻辑,或包括管芯上逻辑和管芯外逻辑二者。仿真逻辑可响应于仿真模式信号而进入仿真模式318。
仿真逻辑还包括可用于仿真(例如,更复杂的)指令304的一个或多个(例如,更简单的)指令314的集合。在某些实施例中,一个或多个指令314可以和指令304是相同指令集的。在某些实施例中,一个或多个指令314可以和当不处于仿真模式中时被解码和执行的其他指令相同。为了仿真(例如,更复杂的)指令304,一个或多个(例如,更简单的)指令314可被提供给解码逻辑。解码逻辑可将指令314的每一个解码为一个或多个经解码指令306。
解码后指令处理器逻辑307可接收对应于指令314的经解码指令306。解码后指令处理器逻辑可包括仿真模式知晓逻辑320的实施例。如图所示,在某些实施例中,仿真模式知晓逻辑可以与仿真模式318耦合,或者以其他方式知晓仿真模式318。在某些实施例中,仿真模式知晓逻辑可用于当处理器处于仿真模式318时与当处理器不处于该仿真模式时不同地处理对应于指令314的经解码指令306。在某些实施例中,当处于仿真模式时,可以与不处于仿真模式时不同地执行故障处理或错误处理。例如,逻辑320可使用下文针对图4所讨论的可任选方面。在其他实施例中,当处于仿真模式时,可选择性地提供对于特定资源和/或信息的访问,但当处理器不处于仿真模式时则不提供。例如,逻辑320可使用下文针对图5所讨论的可任选方面。
有利地,在某些实施例中,更复杂指令可采用更简单指令/操作的集合来实现。有利地,这可潜在地有助于减少实现更复杂指令所需的硬件量,并且/或者可有助于允许被用于仿真该更复杂指令的一个或多个指令所使用的现有硬件的重复使用。在一些实施例中,采用一个或多个更简单指令对更复杂指令的仿真可用于提供更复杂指令的类-微代码的实现,即便处理器在某些实施例中可能没有被配置成使用微代码和/或没有被配置成使用微代码来实现更为复杂的指令。在某些实施例中,更简单指令/操作甚至可与更复杂指令是相同指令集的。
使用更简单指令对更复杂指令的这种仿真仅仅是要仿真指令的可能原因的一个示例。在其他实施例中,被仿真指令可以是相对低频使用的指令(即,不频繁使用),且可使用相对高频使用一个或多个指令来仿真。有利地,这可潜在地有助于减少实现低频使用指令所需的硬件量,并且/或者可有助于允许被用于仿真该低频使用指令的一个或多个指令所使用的现有硬件的重复使用。在其他实施例中,被仿真指令可以是较老和/或过期的指令,并且/或者可以是处在被弃用(deprecated)过程中的指令,且可由一个或多个其他指令来仿真。有利地,该仿真可有助于允许正被弃用的指令仍得以执行,并藉此向软件提供向后兼容性,同时还潜在地有助于减少实现该被弃用的指令所需的硬件量,并且/或者有助于允许被用于仿真该被弃用指令的一个或多个指令所使用的现有硬件的重复使用。本领域技术人员将明显得知本申请所公开的仿真的其他使用并得到本公开的益处。
图4是示出用于允许处理器在处于仿真模式时与不处于仿真模式时不同地处理异常情况的逻辑401的实施例的框图。在某些实施例中,图4中的逻辑可以被包括在图1的处理器和/或计算机系统中,和/或图3的逻辑中。或者,图4的逻辑可以被包括在相似的或不同的处理器或计算机系统中。此外,图1的处理器和/或计算机系统和/或图3的逻辑可以包括与图4的逻辑相似或不同的逻辑。
在处理器不处于仿真模式418时,将给定指令(例如,具有给定操作码的指令)的第一实例403-1提供给解码逻辑405。在处理器正在仿真模式418中操作时,将相同给定指令的第二实例403-2(例如,具有相同给定操作码的另一指令)提供给该解码逻辑。可以响应于解码器接收到被仿真指令而从用于仿真该被仿真指令的一个或多个指令414的集合中提供给定指令的第二实例403-2。该指令集合可以被包括在可在管芯上、在管芯外、或部分在管芯上且部分在管芯外的仿真逻辑415中。仿真逻辑515可以具有本文中别处提到的仿真逻辑的任选特征中的任何一个特征。解码逻辑可为给定指令的第一实例403-1和第二实例403-2中的每一个提供一个或多个经解码指令的集合(例如相同的集合)。
解码后指令处理逻辑407可接收经解码指令406。解码后指令处理逻辑包括仿真模式知晓异常情况处理程序逻辑420。仿真模式知晓异常情况处理程序逻辑用于以仿真模式知晓的方式来处置/处理异常情况。本文中所使用的术语“异常情况”宽泛地指代当处理指令时可发生的各种不同类型的异常情况。这种异常情况的示例包括但不限于:异常、中断、故障、捕获(trap)等等。术语“异常”、“中断”、“故障”和“捕获”在本领域中通常被以不同方式使用。术语“异常”可能更为常用于指代响应于权限冲突、权限异常、页故障、存储器保护故障、除以零、尝试执行非法操作码或其他此类异常情况而自动发生的向处理程序例程的控制转移。
在某些实施例中,当处理器没有在仿真模式418中操作时,当给定指令的第一实例403-1被处理时,如果发生了权限冲突、页故障、存储器保护故障、除以零、尝试执行非法操作码或其它异常情况,则处理器可执行基本上常规的异常情况处理。例如,在某些实施例中,异常情况可被直接处理440,其中控制被转移给异常情况处理程序例程441。通常,异常情况处理程序例程可为操作系统、虚拟机监视器、或其他特权级软件的一部分。这种处理程序的示例包括但不限于:页故障处理程序、错误处理程序、中断处理程序等等。
相反,在某些实施例中,当处理器在仿真模式418中操作时,当给定指令的第二实例403-2被处理时,如果发生了权限冲突、页故障、存储器保护故障、除以零、尝试执行非法操作码或其它异常情况,则处理器可执行基本上非常规的异常情况处理。例如,在一些实施例中,异常情况可不被直接处理。在某些实施例中,逻辑420可包括用于阻止向异常情况处理程序例程的自动控制转移的机制,倘若无此机制,异常情况会引起这种自动控制转移。控制可不被从仿真程序直接转移给异常情况处理程序例程441。相反,在某些实施例中,仿真模式知晓异常情况处理程序逻辑420可临时地阻止向异常情况处理程序441的控制转换,并间接地报告442该异常情况。在某些实施例中,仿真模式知晓异常情况处理程序逻辑420可通过一个或多个仿真通信寄存器443来报告异常情况。该一个或多个通信寄存器可被用于在仿真逻辑和具有正被仿真的原始指令的程序之间传送信息。
在某些实施例中,响应于当处于仿真模式418时发生异常情况,仿真模式知晓异常情况处理程序逻辑420可在异常情况或错误状态标记、字段、或寄存器444中存储该异常情况的指示。例如,单个比特或标记可具有用于指示异常情况已发生的第一值(例如,设为二进制1),或可具有用于指示无异常情况发生的第二值(例如,被清除为二进制零)。在某些实施例中,响应于当处于仿真模式418时发生异常情况,仿真模式知晓异常情况处理程序逻辑420可在错误代码字段或寄存器445中存储用于该异常情况的错误代码。该错误代码可提供关于错误的附加信息,诸如,举例来说,错误的类型以及可任选的附加细节来帮助通知该异常情况的性质。可替代地,不是使用通信寄存器,信息可以其他方式被通知或被提供(例如,存储在存储器中,通过电信号来报告,等等)。
在某些实施例中,仿真模式知晓异常情况处理程序逻辑420还可以提供对正被仿真的指令(即,使得第二实例403-2被发送到解码逻辑405的那个指令)的地址(例如,指令指针)的指示。例如,在某些实施例中,正被仿真的指令的地址446可以被存储在堆栈447顶部。将正被仿真的给定指令(而非正被用来仿真该给定指令的各指令之一)的地址存储在该堆栈上可致使来自异常处理程序的返回被返回给被仿真指令,而非返回给正被用来仿真该被仿真指令的诸指令之一。如果相反,来自异常处理程序的返回将前往正被用来仿真该指令的诸指令之一,这可以潜在地引起问题。例如,软件(例如,应用、操作系统等)可能不知道正被用来仿真给定指令的诸指令,并且可能没识别出相关联的地址。操作系统可能感知到控制流正被传送到未知的、非法的、有风险的或者不被允许的地址,并且可能潜在的尝试阻止该传输。
在某些实施例中,指令集414可以监视错误状态444和/或错误代码445。例如,在某些实施例中,指令414可以从仿真通信寄存器443读取错误状态444和错误代码445以获悉异常情况并了解该异常情况。在某些实施例中,当错误状态444指示异常情况时,指令集414可以处理该异常情况449。例如,指令414中的一个或多个指令可以被执行以检查错误状态,并在指示有错误的情况下,将控制转移给异常情况处理程序。在某些实施例中,这可包括指令集414将控制转移给异常情况处理程序441。在某些实施例中,可以将关于异常情况的信息(例如,错误代码445)提供给异常情况处理程序441。在某些实施例中,被仿真指令地址446也可以被提供给异常情况处理程序441和/或可以至少被保留在堆栈的顶部。被仿真指令地址446,在从对该异常情况的处理中返回后,可以被异常情况处理程序441使用。有利地,通过将正被仿真的指令的地址存储在堆栈上,操作系统或其他错误处理程序例程可认为是被仿真的指令导致了该错误。
在某些实施例中,该仿真逻辑可以包括用于测试并报告该指令中的存储器访问是否将正确地工作或可导致的异常情况的类型的逻辑。例如,可以包括特殊的指令,用于采取被仿真访问权限来测试存储器地址,以查看该存储器地址(例如,在页存在的情况下)是否有效以及程序是否具有足够的访问权限来读取和/或修改那个存储器位置。如果任何测试失败,则仿真逻辑可以用返回地址将控制传递给合适的中断处理程序,就好像正被仿真的指令已直接将控制传递给异常处理程序一样。作为另一示例,状态机可以执行指示存储器操作是否有效的条件存储器事务(transaction)。假设没有异常将发生的情况下,这可用于确定何时可执行存储器操作。这还可用于确定指令流或指令信息串的多少字节可被安全地读取,而没有异常。例如,这可用于测试并确定是否指令长度可被读取,或者是否该指令长度的部分将导致页错误。该仿真逻辑可以包括用于处理跨越多页的指令和/或在页不在存储器中时处理指令的逻辑。
在某些实施例中,仿真逻辑可以包括用于提供中间执行中断状态使得对该仿真的执行可以停止并稍后在该中间点处继续的逻辑。这在仿真涉及长持续时间或者执行时间的指令时尤其有利。在某些实施例中,用于仿真特定类型的指令(例如,移动字符串指令、收集指令、以及具有长操作的其他指令)的指令集可以更新具有正被仿真的指令的软件的执行状态,以反映当前的进展水平。例如,该操作可能在中间点处被中断,并且用于仿真的指令集可以在异常情况处理程序所保存的机器状态中(例如,在处理器状态寄存器中)设置标记或状态位,使得在返回后,仿真代码可能够测试该标记或状态位以确定它是否正从中间状态恢复执行。该标记或状态位可以指示被中断的执行。通过这种方式,在异常情况已被处理之后,当从异常情况处理程序返回时,该程序可以在它所离开的中间进程水平处恢复执行。在某些情况下,指令(例如,移动字符串指令)可以修改寄存器以反映该操作的中间状态,使得在中断后,执行还可以从该中间状态恢复。
图5是示出用于允许处理器在处于仿真模式时与在不处于仿真模式时不同地访问资源和/或信息的逻辑501的实施例的框图。在某些实施例中,图5中的逻辑可以被包括在图1的处理器和/或计算机系统中,和/或图3的逻辑中。或者,图5的逻辑可以被包括在相似的或不同的处理器或计算机系统中。此外,图1的处理器和/或计算机系统和/或图3的逻辑可以包括与图5的逻辑相似或不同的逻辑。
在处理器不处于仿真模式518时,将给定指令(例如,具有给定操作码的指令)的第一实例503-1提供给解码逻辑505。在处理器正在仿真模式518中操作时,将相同给定指令的第二实例503-2(例如,具有相同给定操作码的另一指令)提供给该解码逻辑。可以响应于解码器接收到被仿真指令而从用于仿真该被仿真指令的一个或多个指令的集合514中提供给定指令的第二实例503-2。该指令集可以被包括在可能在管芯上、在管芯外、或部分在管芯上且部分在管芯外的仿真逻辑515中。仿真逻辑515可以具有本文中别处提到的仿真逻辑的任选特征中的任何一个特征。
解码后指令处理器逻辑507可以接收与第二实例503-2相对应的经解码指令506。解码后指令处理器逻辑包括仿真模式知晓访问控制逻辑520。该仿真模式知晓访问控制逻辑用于以仿真模式知晓的方式来控制对一个或多个资源和/或信息550的访问。在某些实施例中,当处理器不在仿真模式中操作时,解码后指令处理器逻辑507可以通过对资源和/或信息550的基本上常规的访问来处理给定指令的第一实例503-1。如图所示,在某些实施例中,当不处于仿真模式时,在处理给定指令的第一实例503-1时,可以阻止551对资源和/或信息550的访问。出于诸如例如保护信息和/或资源的安全性等各种可能的理由中的任何一个理由,在不处于仿真模式时阻止对资源和/或信息的访问可能是合适的,因为给定指令一般不需要访问那些资源和/或信息,且用户希望仅仅按需要或出于其他理由来提供这些资源和/或信息。
相反,在某些实施例中,当在仿真模式518中操作时,在处理给定指令的第二实例503-2时,解码后指令处理器逻辑可(例如,按与在处于非仿真模式时不同的方式)使用对资源和/或信息550的基本上非常规的访问。例如,如图所示,在所示实施例中,当在处于仿真模式518时,在处理给定指令的第二实例503-2时,可以允许552对资源和/或信息550的访问。作为示例,仿真模式518可以允许逻辑507和/或逻辑520具有在处于仿真模式时允许为该给定指令选择性地访问信息和/或资源的特殊硬件状态。例如,在处于仿真模式时可以提供并配置一个或多个访问特权位,以允许状态机选择性地访问该信息。
构想了各种不同类型的信息和/或资源550。合适的资源和/或信息的示例包括但不限于:与安全性有关的资源和/或信息(例如,安全性逻辑)、与加密和/或解密有关的资源和/或信息(例如,加密逻辑和/或解密逻辑)、随机数生成器资源和/或信息(例如,随机数生成器逻辑)、以及为与操作系统和/或虚拟机监视器相对应的特权或环级别所保留的资源和/或信息,等等。
合适的资源和/或信息的另一示例包括但不限于:处于与具有解码后指令处理器逻辑507的物理处理器或逻辑处理器不同的物理处理器或逻辑处理器(例如,核、硬件线程、线程上下文等)中的资源和/或信息。不同的物理或逻辑处理器可以在相同的插座(socket)或不同的插座中。作为示例,当处于仿真模式时,仿真模式知晓控制逻辑520可能够访问处于另一插座(的另一核的信息和/或资源例如,查询该核的状态),而该些信息和/或资源在不处于仿真模式时对解码后指令处理器逻辑507将不可用。
有利地,在处于仿真模式时,仿真模式知晓访问控制逻辑520可有助于允许指令514中的至少一些指令选择性地具有对特定资源和/或信息的访问,但这些资源和/或信息在不处于仿真模式时通常对该指令集合中的相同指令不可用。由于仿真逻辑可在管芯上和/或在存储器的受保护部分中,因此安全性仍可以被维持。
在某些实施例中,可以禁止某些执行级别(例如,安全性执行状态)使用这样的仿真来访问这些资源和/或信息。例如,不是所有执行状态都可被允许使用被仿真操作码。如果允许这样的中断或较低级别的执行,特殊的安全性执行状态可能不是可证明地安全。相反,如果这样的执行级别或安全性执行状态需要类似的访问,则它们可以改为通过使用可用于仿真软件的硬件原语来实现该访问。
在某些实施例中,指令仿真可用于帮助为指令的给定操作码提供不同的含义。宏指令、机器语言指令和指令集中的其他指令通常包括操作代码或操作码。操作码一般表示用于指定特定指令的指令的一部分和/或要响应于该指令而执行的操作。例如,打包的乘法指令的操作码可以与打包的加法指令的操作码不同。一般来说,操作码包括在一个或多个字段中的若干位,这些位即使没有被物理地分组在一起也是在逻辑上分组在一起的。通常,期望尝试将操作码保持得相对短或尽可能短,同时允许期望数目的指令/操作。相对长的操作码趋于增加解码器的尺寸和/或复杂性,并且还一般趋于使得这些指令更长。对于操作码中固定数目的位,一般仅固定数目的不同指令/操作可被标识出。存在本领域公知的各种诀窍来充分利用操作码,例如,通过使用转义代码等来获得。然而,可以用操作码来唯一地标识的指令的数目一般比通常所需的更为有限。一般来说,新的指令无法被持续添加到处理器的操作码空间中,而不会最终某时用完可用的操作码。
工作负载随时间改变。类似地,所需的指令和所需的指令功能随时间改变。新的指令功能通常不断发展地被添加到处理器中。类似地,某些指令/操作随时间变得相对无用和/或相对不频繁使用和/或相对不重要。在某些情况下,当指令/操作具有足够有限的有用性或重要性时,它们可被弃用。弃用(deprecation)是本领域中常用术语,其指示适用于组件、特性、特征或实践的一种状态,表示通常由于它处于被放弃或阻止的进程中和/或它在将来可能是不可用的或不受支持的而一般应该被回避。
通常,这样的指令/操作可能被弃用而非被立即移除,以便有助于提供临时的向后兼容性(例如,以允许现有的或旧式代码继续运行)。这可允许使代码有时间变得与取代指令/操作兼容,和/或可允许使现有代码或旧式代码有时间逐步淘汰。通常,从指令集弃用各指令/操作会花费较长时间(例如,许多年,甚至几十年),以允许有时间充分淘汰老程序。常规上,在这样的长时间段过去之前,被弃用的指令/操作的操作码的值一般不会被取回和重新用于不同的指令/操作。否则,如果旧式软件被运行,则具有操作码值的指令可能促使处理器执行取代操作,而非预期的被弃用操作,这可导致错误的结果。
在某些实施例中,指令仿真可用于帮助为指令的给定操作码提供不同的含义。在某些实施例中,指令的给定操作码可以用不同的含义来解释。在某些实施例中,可以为给定操作码支持多个操作码定义。例如,给定操作码可以用软件程序具有指令意图的含义来解释。作为示例,在某些实施例中,较老的或旧式软件程序可以指示具有该给定操作码的指令将具有较老的、旧式的或被弃用的含义,而较新的软件程序可指示具有该给定操作码的指令将具有较新的含义。在某些实施例中,较老的或被弃用的含义可以被仿真,而较新的含义可以被解码成控制信号,并在处理器流水线上直接执行。有利地,在某些实施例中,这可有助于允许较早地取回和重新使用被弃用的操作码,同时仍提供允许较老的程序仍以被弃用的操作码运行而允许被弃用的操作码还以不同的含义被用于较新的程序的向后兼容性,以帮助改进性能。
图6是由处理器执行的和/或在处理器中执行的方法660的实施例的流程框图。在某些实施例中,图6的操作和//或方法可以由图1的处理器和/或图3或图7的逻辑来执行,和/或在图1的处理器和/或图3或图7的逻辑中执行。本文中针对处理器和逻辑描述的组件、特征和具体的任选细节还可选地适用于图6的操作和方法。替换地,图6的操作和/或方法可由类似的或完全不同的处理器或装置执行,和/或在类似的或完全不同的处理器或装置内执行。此外,图1的处理器和/或图3或图7的逻辑可以执行与图6的那些操作和/或方法类似的或不同的操作和/或方法。
该方法包括在框661接收具有给定操作码的第一指令。在某些实施例中,第一指令可以在解码器处被接收。在框662可作出给定操作码具有第一含义还是第二含义的判定。在某些实施例中,第一含义可以是第一操作码定义,且第二含义可以是不同的第二操作码定义。如以下将进一步解释的,在某些实施例中,这可涉及解码器读取或检查例如在标记、状态寄存器或其他管芯上存储位置中的对给定操作码具有第一含义还是第二含义的指示。如以下将进一步解释的,在某些实施例中,软件(例如,操作系统模块的程序加载器模块)可以在加载软件以供处理器运行时将该指示存储在标记、状态寄存器或其他管芯上存储位置中。作为示例,该软件可以包括指示该软件预期或指定给定操作码具有第一含义还是第二含义的元数据(例如,对象模块格式)。
再次参考图6,如果框662处的判定是给定操作码具有第一含义,则该方法可前进到框663。在框663处,第一指令可以被解码成一个或多个微指令、微操作或其他较低级别的指令或控制信号。在某些实施例中,解码器可以将这些指令或控制信号输出到解码后指令处理器逻辑(例如,执行单元等)。该解码后指令处理器逻辑可以处理这些指令,通常处理得比改用仿真的情况快得多。在某些实施例中,第一含义可以用于未被弃用的操作码含义、相对较新的操作码含义、相对被较频繁地使用的操作码含义、或更强烈地影响性能的操作码含义等。
相反,如果框662处的判定是给定操作码具有第二含义,则该方法可前进到框664。在框664,可以引入对第一指令的仿真。例如,解码器可以向仿真逻辑提供仿真捕获或以其他方式将仿真模式告知仿真逻辑。随后,用来以具有第二含义的操作码来仿真第一指令的仿真逻辑的一个或多个指令的集合可被提供给解码器或以仿真模式来处理。这可基本上如本文中别处描述的那样完成。在某些实施例中,该第二含义可以用于弃用的操作码含义、在被弃用的或将要被弃用的进程中的操作码含义、相对较老的操作码含义、相对较不频繁使用的操作码含义、或较不强烈地影响性能的操作码含义等。
图7是示出允许给定操作码具有不同含义的逻辑701的实施例的框图。在某些实施例中,图7中的逻辑可以被包括在图1的处理器和/或计算机系统中,和/或图3的逻辑中。或者,图7的逻辑可以被包括在相似的或不同的处理器或计算机系统中。此外,图1的处理器和/或计算机系统和/或图3的逻辑可以包括与图7的逻辑相似或不同的逻辑。
存储器710包括第一软件模块711-1、第二软件模块711-2、和具有程序加载器模块770的操作系统模块797。在某些实施例中,第一软件模块包括使用给定操作码第一含义的指示772,且第二软件模块包括使用给定操作码的不同的第二含义的指示773。作为示例,第一和第二软件模块可各自包括对象模块格式、其他元数据、或包括这些指示772、773的一个或多个数据结构。程序加载器模块可用于加载第一软件模块和第二软件模块以供在处理器上执行。如图所示,在某些实施例中,程序加载器模块可包括模块771,其用于将特定软件模块所指示的给定操作码的含义加载到处理器上作为处理器状态。在某些实施例中,模块771可用于在加载第一软件模块时将指示772或在加载第二软件模块时将指示773加载到管芯上存储位置774中作为要使用给定操作码的第一含义还是第二含义的指示775。管芯上存储位置与解码器705耦合,或可被解码器705以其他方式访问。
在某些实施例中,例如在老软件程序模块的情况下,软件模块可能不具有使用给定操作码的给定含义的明确指示。例如,软件可能在较新的含义存在之前已经被写好。在某些实施例中,模块771和/或程序加载器770可用于推断该软件模块需要使用给定操作码的第一含义还是第二含义。例如,这可以从被嵌入在程序的特征列表、程序的格式、程序的年龄或程序被创建的年份、或在元数据中和/或在软件模块中的其他这样的信息中推断出。例如,如果第二软件模块711-2是在介绍/定义给定操作码的第一含义之前被创建的老软件,则程序加载器模块和/或操作系统模块可用于推断出该第二软件模块需要使用给定操作码的第二含义而非第一含义。模块771可用于在切换或交换软件时切换或交换出存储区域中的指示775。
为了进一步说明,考虑具有给定操作码的指令的第一实例703-1被从第一软件模块711-1提供到解码器705。第一软件模块包括模块711可保留在存储位置774处的使用给定操作码的第一含义的指示722。解码器包括与存储位置774耦合的用于检查对使用给定操作码的第一含义还是第二含义的指示775的检查逻辑776。该检查逻辑可以访问或读取该存储位置,并确定在处理来自第一软件模块的指令的第一实例时将使用给定操作码的第一含义。在某些实施例中,存储位置774可包括用于存储多个指示(每个指示对应于不同的操作码)的多个不同的存储位置。作为响应,假设给定操作码的第一含义的情况下,解码器的解码逻辑777可以解码该指令。可以将一个或多个经解码指令706或一个或多个其他控制信号从解码器提供到可处理它们的解码后指令处理逻辑707。
可以将具有相同给定操作码的指令的第二实例703-2从第二软件模块711-2提供到解码器705。第二软件模块包括模块711可保留在存储位置774处的使用给定操作码的第二含义的指示773。该检查逻辑776可以检查指示775,并确定在处理来自第二软件模块的指令的第二实例时将使用给定操作码的第二含义。作为响应,仿真引发逻辑778可以引发对指令的第二实例703-2的仿真。例如,仿真引发逻辑可以执行仿真捕获或以其他方式用信号通知仿真模式718。可以将用于仿真具有含第二含义的给定操作码的指令的第二实例的一个或多个指令714的集合从仿真逻辑715提供到解码器。仿真逻辑可以在管芯上、管芯外、或部分在管芯上且部分在管芯外。仿真逻辑715可以具有本文中别处描述的仿真逻辑的可选特征中的任何一个特征。
在某些实施例中,指令714可以与具有给定操作码的指令是相同指令集的。在某些实施例中,解码器可以解码这些指令中的每一指令,并将它们作为经解码指令706或其他控制信号提供给解码后指令处理逻辑。在某些实施例中,解码后指令处理逻辑可包括仿真模式知晓指令处理器逻辑720,该逻辑可以与本文中别处描述的仿真模式知晓指令处理器逻辑(例如,图1或图3-5中的任何一个逻辑中的仿真模式知晓指令处理器逻辑)类似或相同。如图所示,在某些实施例中,仿真模式知晓指令处理逻辑可以与仿真模式718耦合,或者以其他方式知晓仿真模式718。此外,仿真模式知晓指令处理逻辑可以与该仿真逻辑的存储位置721耦合,并且可以从该存储位置721读取数据和将数据写入该存储位置721。
在某些实施例中,可以包括用于基于存储位置774中的指示775来更新处理器特性标识寄存器795的逻辑796。合适的处理器特性标识寄存器的示例是用于CPU标识(CPUID)的寄存器。逻辑796可以与存储器位置774耦合,并与处理器特性标识寄存器795耦合。处理器特性标识寄存器可以是处理器的指令集中的处理器特性标识指令(例如,CPUID指令)可读的。软件可以通过执行该处理器特性标识指令来从处理器特性标识寄存器中读取对操作码的含义的指示。
在某些实施例中,特权级别和/或环形级别逻辑794可以与解码器705耦合,并且可以迫使或以其他方式使解码器基于该特权级别和/或环形级别来使用操作码的给定含义。例如,在各实施例中,在第一含义是较新的含义,而第二含义是被弃用的含义的情况下,这可以是有用的。操作系统通常以与用户应用不同的特定特权级别和/或环级别操作。此外,操作系统通常使用给定操作码的较新含义而非给定操作码的较老含义,因为它们一般被频繁地更新。在这样的情况下,特权级别和/或环级别逻辑794可以导致解码器在处于与操作系统的特权或环形级别相对应的特权或环形级别时使用给定操作码的较新含义。
为了描述的简单,本文中代表性地描述了操作码的两个不同的含义。然而,将理解,其他实施例可使用给定操作码的三个或更多个不同的含义。作为示例,存储位置774可以包括两个或更多个比特,以指示应该为给定操作码使用多个这样的不同含义中的哪个。同样,处理器特性标识寄存器可以反映出给定操作码的多个这样的含义。
图8是可由操作系统模块执行的方法880的实施例的流程框图。在某些实施例中,该方法可以由程序加载器模块执行。
该方法包括在框881确定具有给定操作码的第一指令在由软件程序被处理器执行时将具有第二含义而非第一含义。在不同的实施例中,这可以按不同的方式来完成。在某些实施例中,该软件程序可明确指定使用给定操作码的给定含义的指示。例如,操作系统模块可检查该软件程序的元数据。例如,在对象模块格式中可存在指示要使用哪个含义的标记。在其他实施例中,例如在旧式软件的情况下,软件程序可以不明确地指定要使用哪个含义的指示。在某些实施例中,操作系统模块可包括用于推断要使用哪个含义的逻辑。这可以用多种不同的方式来完成。在某些实施例中,这可以包括检查该软件程序的特性列表。在某些情况下,该特性列表可以指定哪个版本的指令是所期望的。在某些实施例中,这可以包括检查该软件程序的创建日。老于某一日期(例如,较新的取代含义的指令日期)的创建日期可以被推断为该软件程序使用较老的含义或被弃用的含义的指示。在某些实施例中,这可以包括检查该软件程序的格式。例如,在某一级别之前的某些修订版程序格式可被用来推断较老的或被弃用的含义。在某些实施例中,这可包括检查已知要使用某些含义的软件程序的显式列表(例如,排除列表)。作为示例,该列表可以基于历史信息来更新(例如,如果某错误由一个含义导致,则其他含义可以被添加到该列表中)。这仅仅是一个示例。也可以构想推断该含义的其他方式。
该方法还包括在框882将具有给定操作码的第一指令将具有第二含义而非第一含义的指示存储在处理器的状态中。例如,操作系统模块可以修改存储位置中与解码器耦合的位,如本文中别处描述的。
图9是程序加载器模块970的实施例的框图,该程序加载器模块包括用于选择软件库983中一个或多个功能、子例程、或其他部分的集合的选择模块985,所述集合具有对将使用该集合的软件而言合适的给定操作码的含义。软件库一般表示各种软件模块可使用的软件集合,并可包括以子例程、功能、类、进程、脚本、配置数据等形式存在的预先存在的软件。软件模块可使用库的这些各种部分来包括各种功能。作为示例,软件模块可以并入具有各种数学函数或子例程的数学软件库或其部分。
如图所示,在某些实施例中,该库可包括使用给定操作码的第一含义的库函数、子例程、或其他部分的第一集合。该库还可包括使用给定操作码的不同的第二含义的库函数、子例程、或其他部分的第二集合。可任选地,如果存在操作码的两个以上含义,则同样该库可存在针对这三个或更多个不同含义中的每一个含义的不同部分。在某些情况下,使用不同含义的各部分可以是不同的代码段。在其他情况下,这些部分可以是相同代码的不同部分,并且分支或其他有条件移动可以被用来适当地移动到使用第一含义或第二含义的部分。
再次参考该图解,程序加载器模块970可以为使用给定操作码的第一含义的第一软件模块911-1以及使用给定操作码的第二含义的第二软件模块911-2两者加载库的部分。程序加载器模块包括用于选择软件库中一个或多个功能、子例程、或其他部分的集合的选择模块985,所述集合具有对将使用该集合的软件而言合适的给定操作码的含义。例如,该选择模块可以选择库的数个部分,所述部分具有和将使用其的软件相同的给定操作码的含义。例如,如该图解中所示出的,该选择模块可以为第一软件模块911-1选择第一集合984-1,因为该集合使用了给定操作码的第一含义。同样,由于第二集合984-2使用给定操作码的第二含义,因此该选择模块可以为第二软件模块911-2选择第二集合984-2。在一个特定实施例中,在第一软件911-1是较老软件并且给定操作码的第一含义是被弃用的含义的情况下,选择模块可用于选择库部分984中也使用该给定操作码的该被弃用含义的第一集合。因此,选择模块可以选择库的数个部分,该部分使用与将使用该库的相应部分的软件一致或相同的给定操作码的含义。
示例性核架构、处理器以及计算机架构
处理器核可以,针对不同的目的,以不同的方式,以及在不同的处理器中实现。例如,这样的核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同的处理器的实现可以包括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用无序核的CPU;以及2)包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同的处理器导致不同的计算机系统架构,这些计算机系统架构可以包括:1)与CPU分开的单独芯片上的协处理器;2)在与CPU相同的封装中的单独管芯上的协处理器;3)在与CPU相同的管芯上的协处理器(在此情况下,这种协处理器有时被称为专用逻辑,诸如集成图形器件和/或科学(吞吐量)逻辑、或者专用核);以及4)片上系统,其可在相同管芯上包括所述的CPU(有时被称为应用核或应用处理器)、上述协处理器、以及附加功能。下面描述了示例性核架构,接下来是对于示例性处理器以及计算机架构的描述。
示例性核架构
有序和无序核框图
图10A是示出根据本发明的各实施例的示例性有序流水线和示例性寄存器重命名、无序发布/执行流水线的框图。图10B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的实施例以及示例性寄存器重命名、无序发布/执行架构核的框图。图10A-B中的实线框示出了有序流水线和有序核,而任选添加的虚线框示出寄存器重命名、无序发布/执行流水线和核。假定有序方面是无序方面的子集,将描述无序方面。
在图10A中,处理器流水线1000包括取指级1002、长度解码级1004、解码级1006、分配级1008、重命名级1010、调度(也称为分派或发布)级1012、寄存器读取/存储器读取级1014、执行级1016、回写/存储器写入级1018、异常处理级1022、以及提交级1024。
图10B示出处理器核1090,该核包括耦合到执行引擎单元1050的前端单元1030,并且两者都耦合到存储器单元1070。核1090可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或者混合或替代核类型。作为另一选项,核1090可以是专用核,诸如举例而言,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元1030包括耦合到指令高速缓存单元1034的分支预测单元1032,该指令高速缓存单元1034耦合到指令翻译后备缓冲器(TLB)1036,该指令TLB1036耦合到指令提取单元1038,该指令提取单元1038耦合到解码单元1040。解码单元1040(或解码器)可对指令进行解码,并且生成一个或多个微操作、微代码进入点、微指令、其他指令、或者从原始指令解码、或以其他方式反映原始指令、或从原始指令派生的其他控制信号作为输出。解码单元1040可使用各种不同的机制来实现。合适机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1090包括微代码ROM或为特定宏指令存储微代码(例如在解码单元1040中或在前端单元1030内)的其它介质。解码单元1040耦合至执行引擎单元1050中的重命名/分配器单元1052。
执行引擎单元1050包括耦合到引退单元1054的重命名/分配器单元1052、以及一组一个或多个调度器单元1056。调度器单元1056表示任何数量的不同调度器,包括:预约站、中央指令窗口等等。调度器单元1056耦合至物理寄存器文件单元1058。每个物理寄存器文件单元1058表示一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一种或多种不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元1058包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器以及通用寄存器。物理寄存器文件单元1058由引退单元1054重叠,以示出其中可实现寄存器重命名和无序执行(例如,使用重排序缓冲器和引退寄存器文件;使用未来文件、历史缓冲器、以及引退寄存器文件;使用寄存器映射和寄存器池等)的各种方式。引退单元1054和物理寄存器文件单元1058耦合到执行集群1060。执行集群1060包括一组一个或多个执行单元1062以及一组一个或多个存储器访问单元1064。执行单元1062可执行各种操作(例如,位移、加法、减法、乘法),并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集的若干个执行单元,但是,其他实施例可包括全部都执行所有功能的仅一个执行单元或多个执行单元。调度器单元1056、物理寄存器文件单元1058、以及执行集群1060被示为可能是多个,因为特定实施例为特定类型的数据/操作创建分离的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或各自具有其自己的调度器单元、物理寄存器文件单元和/或执行集群的存储器访问流水线;并且在分离的寄存器访问流水线的情况下,实现其中仅该流水线的执行集群具有存储器访问单元1064的特定实施例)。还应当理解,在使用分离的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,而其他流水线可以是有序发布/执行。
一组存储器访问单元1064耦合到存储器单元1070,该存储器单元1070包括耦合到数据高速缓存单元1074的数据TLB单元1072,该数据高速缓存单元1074耦合到二级(L2)高速缓存单元1076。在一个示例性实施例中,存储器存取单元1064可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元1070中的数据TLB单元1072。指令高速缓存单元1034还耦合到存储器单元1070中的第二级(L2)高速缓存单元1076。L2高速缓存单元1076耦合到一个或多个其他级的高速缓存,并且最终耦合到主存储器。
作为示例,示例性寄存器命名、无序发布/执行核架构可如下地实现流水线1000:1)指令提取1038执行提取和长度解码级1002和1004;2)解码单元1040执行解码级1006;3)重命名/分配器单元1052执行分配级1008和重命名级1010;4)调度器单元1056执行调度级1012;5)物理寄存器文件单元1058和存储器单元1070执行寄存器读取/存储器读取级1014;执行集群1060执行执行级1016;6)存储器单元1070和物理寄存器文件单元1058执行回写/存储器写入级1018;7)各个单元可涉及异常处理级1022;以及8)引退单元1054和物理寄存器文件单元1058执行提交级1024。
核1090可支持一个或多个指令集(例如,x86指令集(具有已经使用较新版本增加的一些扩展)、加利福尼亚州森尼维尔市MIPS技术公司的MIPS指令集、加利福尼亚州森尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON之类的任选的附加扩展)),包括本文中所描述的指令。在一个实施例中,核1090包括逻辑以支持打包数据指令集扩展(例如,AVX1、AVX2),由此允许许多多媒体应用所使用的操作使用打包数据来执行。
应当理解,该核可支持多线程(执行并行的两组或两组以上的操作或线程),并且可以包括分时多线程、同时多线程(其中单个物理核为每一线程提供物理核是同时多线程的逻辑核)、或者其组合(例如,分时提取和解码以及此后诸如在Hyperthreading技术中的同时多线程)的各种方式这样做。
尽管在无序执行的上下文中描述了寄存器重命名,但是应当理解寄存器重命名可在有序架构中使用。尽管处理器的所示实施例还包括单独的指令和数据高速缓存单元1034/1074以及共享的L2高速缓存单元1076,但是替换实施例可具有用于指令和数据两者的单个内部高速缓存,诸如举例而言,一级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和外部高速缓存的组合,该外部高速缓存在核和/或处理器外部。替代地,所有高速缓存可在核和/或处理器外部。
具体示例性有序核架构
图11A-B示出更具体的示例性有序核架构的框图,该核可以是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个。依据应用,逻辑块通过高带宽互连网络(例如,环形网络)与某种固定功能逻辑、存储器I/O接口及其他所需的I/O逻辑进行通信。
图11A是根据本发明的各实施例的单个处理器核、连同该处理器核到管芯上互联网络1102的连接以及该处理器核的二级(L2)高速缓存本地子集1104的框图。在一个实施例中,指令解码器1100支持具有打包的数据指令集扩展的x86指令集。L1高速缓存1106允许对高速缓存存储器进行低等待时间存取而进入标量和向量单元。尽管在一个实施例中(为了简化设计)标量单元1108和向量单元1110使用分离的寄存器集合(分别是标量寄存器1112和向量寄存器1114)并且在两者之间传输的数据被写入存储器且随后从一级(L1)高速缓存1106读回,但是替代实施例可使用不同的方法(例如,使用单个寄存器集合或者包括允许数据在不写入和读回的情况下在两个寄存器文件之间传输的通信通道)。
L2高速缓存的本地子集1104是被分成分离的本地子集(每个处理器核一个本地子集)的全局L2高速缓存的一部分。每一处理器核都具有到L2高速缓存的其自己的本地子集1104的直接存取路径。由处理器核读取的数据被存储在其L2高速缓存子集1104中,并且可与存取其自己的本地L2高速缓存子集的其他处理器核并行地快速存取。由处理器核写入的数据被存储在其自己的L2高速缓存子集1104中,并且如果必要则从其他子集清除(flush)。环形网络确保共享数据的一致性。环形网络是双向的以允许在芯片内诸如处理器核、L2高速缓存、以及其他逻辑块之类的代理相互通信。每一环形数据路径都是每个方向1012比特宽。
图11B是根据本发明的各实施例的图11A中的处理器核的一部分的展开图。图11B包括L1高速缓存1104的L1数据高速缓存1106A部分,以及关于向量单元1110和向量寄存器1114的更多细节。具体而言,向量单元1110是16宽向量处理单元(VPU)(参见16宽ALU1128),其执行整数、单精度浮动以及双精度浮动指令中的一个或多个。VPU支持利用拌和单元1120来拌和寄存器输入,利用数字转换单元1122A-B进行数字转换,以及利用复制单元1124在存储器输入上进行复制。写掩码寄存器1126允许预测所得向量写入。
具有集成存储器控制器和图形器件的处理器
图12是根据本发明的各实施例的处理器1200的框图,该处理器1200可具有一个以上的核,可以具有集成的存储器控制器,并可以具有集成的图形器件。图12的实线框示出了处理器1200,处理器1200具有单个核1202A、系统代理1216、一组一个或多个总线控制器单元1216,而可选附加的虚线框示出了替代的处理器1200,其具有多个核1202A-N、系统代理单元1210中的一组一个或多个集成存储器控制器单元1214以及专用逻辑1208。
如此,处理器1200的不同的实现可以包括:1)具有作为集成图形和/或科学(吞吐量)逻辑(该逻辑可包括一个或多个核)的专用逻辑1208、以及作为一个或多个通用核(例如,通用有序核、通用无序核、两者的组合)的核1202A-N的CPU;2)具有作为期望主要用于图形和/或科学(吞吐量)的大量专用核的核1202A-N的协处理器;以及3)具有作为大量通用有序核的核1202A-N的协处理器。如此,处理器1200可以是通用处理器、协处理器或专用的处理器,诸如,例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量许多集成核(MIC)协处理器(包括30个或更多个核),嵌入式处理器、等等。处理器可以在一个或多个芯片上实现。处理器1200可以是一个或多个衬底的一部分,和/或可以使用若干种处理技术中的任何一种,诸如,例如,BiCMOS、CMOS,或NMOS,在一个或多个衬底上实现。
存储器等级(hierarchy)包括核内的一级或多级高速缓存、一组或者一个或多个共享高速缓存单元1206、以及耦合到一组集成存储器控制器单元1214的外部存储器(未示出)。一组共享高速缓存单元1206可包括一个或多个中级高速缓存(诸如二级(L2)、三级(L3)、四级(L4))或其他级高速缓存、最后一级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环形的互连单元1212使集成图形逻辑1208、一组共享高速缓存单元1206、以及系统代理单元1210/集成存储器控制器单元1214互连,但是替代实施例可使用任意数量的公知技术来互连这些单元。在一个实施例中,在一个或多个缓存单元1206和核1202-A-N之间维护了一致性。
在某些实施例中,核1202A-N中的一个或多个能够多线程处理。系统代理1210包括协调和操作核1202A-N的那些组件。系统代理单元1210可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括管理核1202A-N和集成的图形逻辑1208的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1202A-N在架构指令集方面可以是同质的或者异质的,即核1202A-N中的两个或两个以上核可能够执行相同的指令集,而其他核可能够只执行该指令集的子集或者不同的指令集。
示例性计算机架构
图13-16是示例性计算机架构的框图。在本领域中已知的用于膝上型个人计算机、台式个人计算机、手持个人计算机(PC)、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及各种其他电子设备的其他系统设计和配置也是合适的。一般而言,如此处所公开的能够包括处理器和/或其他执行逻辑的各种系统或电子设备一般是合适的。
现在参考图13,所示出的是根据本发明实施例的系统1300的框图。系统1300可以包括耦合到控制器中枢1320的一个或多个处理器1310、1315。在一个实施例中,控制器中枢1320包括图形存储器控制器中枢(GMCH)1390和输入/输出中枢(IOH)1350(它们可在分离的芯片上),GMCH1390包括耦合到存储器1340和协处理器1345的存储器和图形控制器,IOH1350使输入/输出(I/O)设备1360耦合到GMCH1390。替换地,存储器和图形控制器中的一个或两个集成在处理器内(如本文中所描述的),存储器1340和协处理器1345直接耦合到处理器1310和在单个芯片中具有IOH1350的控制器中枢1320。
在图13中利用虚线表示附加的处理器1315的可任选特性。每一处理器1310、1315可包括此处所描述的处理核中的一个或多个,并可以是处理器1200的某种版本。
存储器1340可以是,例如,动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器中枢1320通过诸如前端总线(FSB)之类的多点分支总线(multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或类似的连接1395与处理器1310、1315进行通信。
在一个实施例中,协处理器1345是专用的处理器,诸如,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢1320可包括集成图形加速器。
按照包括架构、微架构、热、功耗特征等等优点的度量谱,物理资源1310、1315之间存在各种差别。
在一个实施例中,处理器1310执行控制一般类型的数据处理操作的指令。协处理器指令可以嵌入这些指令内。处理器1310识别如具有应当由附连的协处理器1345执行的类型的这些协处理器指令。因此,处理器1310在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发出到协处理器1345。协处理器1345接受并执行接收到的协处理器指令。
现在参考图14,示出了根据本发明的一个实施例的第一更具体的示例性系统1400的方框图。如图14所示,多处理器系统1400是点对点互连系统,并包括通过点对点互连1450耦合的第一处理器1470和第二处理器1480。处理器1470和1480中的每一个都可以是某个版本的处理器1200。在本发明的一个实施例中,处理器1470和1480分别是处理器1310和1315,而协处理器1438是协处理器1345。在另一实施例中,处理器1470和1480分别是处理器1310和协处理器1345。
处理器1470和1480被示为分别包括集成的存储器控制器(IMC)单元1472和1482。处理器1470还包括作为其总线控制器单元一部分的点对点(P-P)接口1476和1478;类似地,第二处理器1480包括P-P接口1486和1488。处理器1470,1480可以使用P-P接口电路1478,1488经由点对点(P-P)接口1450来交换信息。如图14所示,IMC1472和1482将处理器耦合到相应的存储器,即,存储器1432和存储器1434,这些存储器可以是本地连接到相应的处理器的主存储器的部分。
处理器1470,1480可各自使用点对点接口电路1476,1494,1486,1498经由各个P-P接口1452,1454与芯片组1490交换信息。芯片组1490可任选地经由高性能接口1439与协处理器1438交换信息。在一个实施例中,协处理器1438是专用的处理器,诸如,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中或者在两个处理器外部,但是经由P-P互连与处理器连接,由此如果处理器置于低功率模式中,则任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1490可以通过接口1496耦合到第一总线1416。在一个实施例中,第一总线1416可以是外围组件互连(PCI)总线,或诸如PCI Express总线之类或另一第三代I/O互连总线的总线,虽然本发明的范围不仅限于此。
如图14所示,各种I/O设备1414可连同总线桥1418一起耦合到第一总线1416,总线桥1418将第一总线1416耦合到第二总线1420。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的加速器(诸如举例而言,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或者其他处理器之类的一个或多个附加处理器1415耦合到第一总线1416。在一个实施例中,第二总线1420可以是低引脚数(LPC)总线。在一个实施例中,多个设备可以耦合到第二总线1420,包括例如键盘和/或鼠标1422、通信设备1427以及可以包括指令/代码和数据1430的存储单元1428(诸如盘驱动器或其它海量存储设备)。此外,音频I/O1424可以耦合到第二总线1420。注意,其他架构也是可以的。例如,代替图14的点对点架构,系统可以实现多点分支总线或其他这样的架构。
现在参考图15,示出了根据本发明的一个实施例的第二更具体的示例性系统1500的方框图。图14和15中的类似元件使用类似附图标记,且在图15中省略了图14的某些方面以避免混淆图15的其它方面。
图15示出处理器1470、1480可分别包括集成存储器和I/O控制逻辑(“CL”)1172和1482。因此,CL1472、1482包括集成的存储器控制器单元并包括I/O控制逻辑。图15示出:不仅存储器1432、1434耦合到CL1472、1482,而且I/O设备1514也耦合到控制逻辑1472、1482。旧式I/O设备1515耦合到芯片集1490。
现在参考图16,示出了根据本发明的实施例的SoC1600的框图。图12中的类似元件具有相似的参考编号。而且,虚线框是更高级SoC上的任选的特征。在图16中,互连单元1602耦合到:应用程序处理器1610,包括一组一个或多个核202A-N和共享缓存单元1206;系统代理单元1210;总线控制器单元1216;集成存储器控制器单元1214;一组或一个或多个协处理器1620,可以包括集成图形逻辑、图像处理器、音频处理器,以及视频处理器;静态随机存取存储器(SRAM)单元1630;直接存储器访问(DMA)单元1632;以及显示单元1640,用于耦合到一个或多个外部显示器。在一个实施例中,协处理器1620包括专用处理器,诸如,举例而言,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器,等等。
本文中所公开的机制的各实施例可以以硬件、软件、固件,或这样的实现方法的组合来实现。本发明的各实施例可以被实现为在可编程系统上执行的计算机程序或程序代码,这些可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备,以及至少一个输出设备。
可以将诸如图14中所示出的代码1430之类的程序代码应用于输入指令,以执行此处所描述的功能并生成输出信息。可以以已知的方式向一个或多个输出设备应用输出信息。出于本申请的目的,处理系统包括具有处理器(诸如,举例而言,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC),或微处理器)的任何系统。
程序代码可以以高级过程化编程语言或面向对象编程语言来实现,以与处理系统进行通信。如果需要的话,程序代码还可以以汇编或机器语言来实现。事实上,此处所描述的机制不限于任何特定编程语言。在任何情况下,语言可以是编译的或解释的语言。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性的指令来实现,指令表示处理器内的各种逻辑,这些指令在由机器读取时使得该机器制备逻辑以执行本文中所描述的技术。称为“IP核”的这些表示可被存储在有形的机器可读介质上且供应给各种客户或制造设施以加载到实际上制作逻辑或处理器的制备机器。
这种机器可读存储介质可包括但不限于,由机器或设备制造或形成的制品的非瞬态有形排列,包括:诸如硬盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、压缩盘可重写(CD-RW)存储器、以及磁电-光盘的任何其他类型的盘之类的存储介质;诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)之类的半导体器件;磁或光卡;或者适于存储电子指令的任何其他类型的介质。
因此,本发明的各实施例还包括包含指令或者包含设计数据(诸如硬件描述语言(HDL))的非瞬态有形机器可读介质,该设计数据定义本文中所描述的结构、电路、装置、处理器、和/或系统特征。这样的实施例还可以被称为程序产品。
仿真(包括二进制转换,代码变形,等等)
在某些情况下,可以使用指令转换器来将指令从源指令集转换为目标指令集。例如,指令转换器可以转换(例如,使用静态二进制转换、包括动态编译的动态二进制转换)、变形、仿真,或以别的方式将指令转换为要由核处理的一个或多个其他指令。指令转换器可以以软件、硬件、固件,或其组合来实现。指令转换器可以是在处理器上、在处理器外,或部分在处理器上且部分在处理器外。
图17是根据本发明的各实施例的比较使用软件指令转换器来将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在所示出的实施例中,指令转换器是软件指令转换器,虽然可替换地指令转换器可以以软件、固件、硬件,或其不同组合来实现。图17示出了可以使用x86编译器1704来编译高级语言1702的程序,以生成x86二进制代码1706,该x86二进制代码1706可以原生地由带有至少一个x86指令集核的处理器1716来执行。带有至少一个x86指令集核的处理器1716表示任何处理器,该处理器可以通过兼容地执行或以别的方式处理(1)Intel x86指令集核的指令集的相当大的部分或(2)用于在带有至少一个x86指令集核的Intel处理器上运行的应用程序或其他软件的目标代码版本,来与带有至少一个x86指令集核的Intel处理器执行基本上相同功能,以便与带有至少一个x86指令集核的Intel处理器实现基本上相同结果。x86编译器1704表示可操作以生成x86二进制代码1706(例如,目标代码)的编译器,x86二进制代码1706可以,伴有或者没有额外的链接处理,在带有至少一个x86指令集核的处理器1416上执行。类似地,图17示出了可以使用替代指令集编译器1708来编译高级语言1702的程序,以生成替代的指令集二进制代码1710,该替代指令集二进制代码1710可以原生地由没有至少一个x86指令集核的处理器1714(例如,带有执行位于加利福尼亚(CA)的桑尼维尔(Sunnyvale)的MIPS技术公司的MIPS指令集和/或执行位于加利福尼亚(CA)的桑尼维尔(Sunnyvale)的ARM控股公司的ARM指令集的核的处理器)来执行。使用指令转换器1712来将x86二进制代码1706转换为可以原生地由没有x86指令集核的处理器1714来执行的代码。该经转换的代码不太可能与替代的指令集二进制代码1710一样,因为难以制造能完成此举的指令转换器;然而,经转换的代码将完成通用操作,并由替代的指令集的指令所构成。如此,指令转换器1712表示通过仿真、模拟(simulation)或任何其他过程,使没有x86指令集处理器或核的处理器或其他电子器件执行x86二进制代码1706的软件、固件、硬件,或其组合。
在其他实施例中,库本身可包括逻辑来选择适用于软件模块的库部分的集合。例如,库可读取处理器特性状态寄存器以确定软件模块针对给定操作码具有什么含义,且随后可选择并提供该部分。
针对图1、4和5中任一个所描述的元件、特征和细节也可任选地被用于图2和3中任一个。此外,本文中针对任一装置所描述的组件、特征以及细节还可任选地用于本文中所描述的在实施例中可由这种装置和/或使用这种装置执行的任一方法中。
示例实施例
以下示例涉及进一步的实施例。这些示例中的特性可用于一个或多个实施例中的任何地方。
实例1是一种处理器,其包括用于接收第一指令和用于确定第一指令将被仿真的解码逻辑。该处理器还包括与解码逻辑耦合的仿真模式知晓解码后指令处理器逻辑。该仿真模式知晓解码后指令处理器逻辑用于在处于仿真模式时,与不处于仿真模式时不同地处理从用于仿真第一指令的一个或多个指令的集合中的指令解码而得的一个或多个控制信号。
示例2包括任何在前示例的处理器,且可任选的,所述第一指令比所述集合中的每一个指令都更复杂,因为所述第一指令涉及正被执行的更多操作。
示例3包括任何在前示例的处理器,且可任选地,其中所述处理器不使用微代码来实现指令集合中的任何指令。
示例4包括任何前述示例的处理器,且可任选地,其中一个或多个指令的所述集合中的每一指令与所述第一指令属于相同指令集合。
示例5包括任何在前示例的处理器,且可任选地,其中所述仿真模式知晓解码后指令处理程序逻辑包括仿真模式知晓异常情况处理程序逻辑,用于将在处理所述一个或多个控制信号时发生的异常情况报告给仿真逻辑。
示例6包括任何在前示例的处理器,且可任选地,其中所述仿真模式知晓异常情况处理程序逻辑用于把所述第一指令的地址存储在堆栈中。
示例7包括任何在前示例的处理器,且可任选地,其中所述仿真模式知晓异常情况处理程序逻辑用于把对该所述异常情况的指示以及所述异常情况的错误代码存储在与所述模拟逻辑耦合的一个或多个寄存器中。
示例8包括任何在前示例的处理器,且可任选地,其中所述仿真模式知晓异常情况处理程序逻辑用于响应于所述异常情况而避免将控制直接转移到异常情况处理程序,并且其中所述仿真逻辑的一个或多个指令用于将控制转移到所述异常情况处理程序。
示例9包括任何在前示例的处理器,且可任选地,其中所述仿真模式知晓解码后指令处理器逻辑包括仿真模式知晓访问控制逻辑,用于在处于所述仿真模式时与在不处于所述仿真模式时不同地控制由所述一个或多个控制信号对资源和信息中的至少一个的访问。
示例10包括任何在前示例的处理器,且可任选地,其中所述仿真模式知晓访问控制逻辑用于在处于所述仿真模式时允许对所述资源和所述信息中的所述至少一个的访问,并且在不处于所述仿真模式时将阻止对所述资源和所述信息中的所述至少一个的访问。
示例11包括任何在前示例的处理器,且可任选地,其中所述资源和所述信息中的所述至少一个包括安全逻辑、安全信息、加密逻辑、解密逻辑、随机数生成器逻辑、保留以供操作系统访问的逻辑、保留以供操作系统访问的存储器部分、以及保留以供操作系统访问的信息中的至少一个。
示例12包括任何在前示例的处理器,且可任选地,其中所述资源和所述信息中的所述至少一个包括:在另一逻辑处理器和另一物理处理器之一中的资源和信息中的至少一个。
示例13包括任何在前示例的处理器,且可任选地,其中一个或多个指令的所述集合包括至少三个指令。
示例14是处理器中的方法,包括接收第一指令,并确定对该第一指令进行仿真。该方法还包括接收要用来仿真所述第一指令的一个或多个指令的集合。该方法还包括:在处于仿真模式时与在不处于所述仿真模式时不同地处理从所述集合中的指令导出的一个或多个控制信号。
示例15包括任何在前示例的方法,且可任选地,其中接收第一指令包括接收比一个或多个指令的所述集合中的每一指令更复杂的所述第一指令。
示例16包括任何在前示例的方法,且可任选地,其中接收一个或多个指令的所述集合包括接收各自与所述第一指令属于相同指令集合的一个或多个指令。
示例17包括任何在前示例的方法,且可任选地,其中处理包括:将在处理所述一个或多个控制信号时发生的异常情况报告给仿真逻辑。还可任选地,执行所述仿真逻辑的一个或多个指令以将控制转移给异常情况处理程序。
示例18包括任何在前示例的方法,且可任选地,其中报告包括:将所述异常情况的指示存储在一个或多个寄存器中。还可任选地,将所述第一指令的地址存储在堆栈中。
示例19包括任何在前示例的方法,且可任选地,其中处理包括:在处于所述仿真模式时与不处于所述仿真模式时不同地控制由所述一个或多个控制信号对资源和信息中的至少一个的访问。
示例20包括任何在前示例的方法,且可任选地,其中不同地控制访问包括:当处于所述仿真模式中时,允许对所述资源和所述信息中所述至少一个的访问。还可任选地,在不处于所述仿真模式时阻止对所述资源和所述信息中的所述至少一个的访问。
示例21是用于处理指令的系统,其包括互连和与该互连耦合的处理器。所述处理器包括解码逻辑,用于接收第一指令和用于确定所述第一指令将被仿真。所述处理器还包括与所述解码逻辑耦合的仿真模式知晓解码后指令处理器逻辑。所述仿真模式知晓解码后指令处理器逻辑用于当处于仿真模式时,与不处于仿真模式时不同地处理从用于仿真所述第一指令的一个或多个指令的集合中的指令解码而得的一个或多个控制信号。所述系统还包括与所述互连耦合的动态随机存取存储器(DRAM)。
示例22包括示例21的系统,且可任选地,其中所述仿真模式知晓解码后指令处理程序逻辑包括仿真模式知晓异常情况处理程序逻辑,用于将在处理所述一个或多个控制信号时发生的异常情况报告给仿真逻辑。
示例1是处理器,其包括用于接收具有给定操作码的第一指令的解码器。所述解码器包括检查逻辑,用于检查所述给定操作码是具有第一含义还是具有第二含义。所述处理器还包括解码逻辑,用于在所述给定操作码具有第一含义时,解码所述第一指令并输出一个或多个相应的控制信号。所述解码器还包括仿真引发逻辑,用于在所述给定操作码具有第二含义时引发对所述第一指令的仿真。
示例2包括任何在前示例的处理器,且可任选地,其中所述第二含义要老于所述第一含义。
示例3包括任何在前示例的处理器,且可任选地,所述第二含义包括处于变为被弃用过程中的操作码定义。
示例4包括任何在前示例的处理器,且可任选地,还包括与所述解码器耦合的存储位置,用于存储所述给定操作码是具有第一含义还是第二含义的指示,并且其中所述检查逻辑用于检查所述存储位置以确定所述指示。
示例5包括任何在前示例的处理器,且可任选地,其中所述存储位置是程序加载器模块可访问的,以允许所述程序加载器模块将所述指示存储在所述存储位置中。
示例6包括任何在前示例的处理器,且可任选地,还包括与所述存储位置耦合的逻辑,用于将来自所述存储位置的所述指示存储到处理器特性寄存器中,其中所述处理器特性寄存器可由所述第一指令的指令集合中的处理器特性标识指令所读取。
示例7包括任何在前示例的处理器,且可任选地,还包括与所述解码器相耦合的多个存储位置,用于存储多个指示,所述指示中的每一个对应于多个操作码中的不同操作码,所述指示中的每一个用于指示每个对应操作码是具有第一含义还是第二含义。
示例8包括任何在前示例的处理器,且可任选地,其中用于引发仿真的所述逻辑包括用于设定仿真模式的逻辑。
示例9包括任何在前示例的处理器,且可任选地,还包括与所述解码器耦合的仿真逻辑,所述仿真逻辑用于当所述给定操作码具有所述第二含义时,响应于所述仿真引发逻辑引发了仿真,向所述解码器提供一个或多个指令的集合以仿真所述第一指令。
示例10包括任何前述示例的处理器,且可任选地,其中所述集合中的每一指令与所述第一指令属于相同指令集合。
示例11包括任何在前示例的处理器,且可任选地,其中所述处理器不使用微代码来实现指令集合中的任何指令。
示例12包括任何在前示例的处理器,且可任选地,还包括逻辑,用于当特权级别逻辑和环级别逻辑中的一个指示操作系统模式时,强制所述解码器为所述给定操作码使用更新(newer)的含义而非被弃用的含义。
示例13是处理器中的方法,其包括接收具有给定操作码的第一指令,并确定所述给定操作码具有第二含义而非第一含义。所述方法还包括:响应于确定所述给定操作码具有所述第二含义,确定对所述第一指令进行仿真。
示例14包括任何在前示例的方法,且可任选地,其中确定包括:确定所述给定操作码具有比第一含义更老的第二含义,且其中所述第二含义处于被弃用的过程中。
示例15包括任何在前示例的方法,且可任选地,其中确定包括:从存储位置读取所述给定操作码具有所述第二含义的指示。
示例16包括任何在前示例的方法,且可任选地,还包括将所述给定操作码具有所述第二含义的所述指示存储在处理器特性寄存器中,该处理器特性寄存器可由所述处理器的指令集合中的处理器特性标识指令来读取。
示例17包括任何在前示例的方法,且可任选地,还包括,仿真所述第一指令包括当所述给定操作码具有所述第二含义时,解码被用于仿真所述第一指令的一个或多个指令的集合。
示例18包括任何在前示例的方法,且可任选地,其中解码指令的所述集合包括解码与所述第一指令属于相同指令集合的一个或多个指令。
示例19包括任何在前示例的方法,且可任选地,在不使用微代码来实现指令集合中的任何指令的处理器中执行。
示例20是一种制品,其包括存储指令的非瞬态机器可读存储介质,所述指令当被机器执行时,将致使所述机器执行操作。所述操作包括:通过检查软件模块的元数据,确定具有给定操作码的第一指令在由所述软件模块被处理器执行时将具有第二含义而非第一含义。所述操作还包括:将具有所述给定操作码的所述第一指令要具有所述第二含义的指示存储在处理器的状态中。
示例21包括任何在前示例的制品,且可任选地,其中所述机器可读存储介质还包括如果被所述机器执行时致使所述机器执行操作的指令,所述操作包括:选择使用所述给定操作码的所述第二含义的软件库部分而非使用所述给定操作码的所述第一含义的另一软件库部分,并将所选择的软件库部分提供给所述软件模块,其中所述第二含义是被弃用含义。
示例22包括任何在前示例的制品,且可任选地,其中所述机器可读存储介质还包括如果被所述机器执行时致使所述机器执行操作的指令,所述操作包括:基于所述软件模块的年龄(age)来确定所述给定操作码具有所述第二含义。
示例23包括任何在前示例的制品,且可任选地,其中所述机器可读存储介质还包括如果被所述机器执行时致使所述机器执行操作的指令,所述操作包括:检查对象模块格式的标记并将所述指示存储在所述处理器的寄存器中的标记中。
示例24是用于处理指令的系统,其包括互连和与该互连耦合的处理器。所述处理器用于接收具有给定操作码的第一指令。所述处理器包括检查逻辑,用于检查所述给定操作码是具有第一含义还是具有第二含义。所述处理器包括解码逻辑,用于在所述给定操作码具有所述第一含义时,解码第一指令并输出一个或多个相应的控制信号。所述处理器包括仿真引发逻辑,用于在所述给定操作码具有所述第二含义时引发对所述第一指令的仿真。所述系统还包括与所述互连耦合的动态随机存取存储器(DRAM)。
示例25包括示例24的主题,并可选地,还包括仿真逻辑,用于在所述给定操作码具有所述第二含义时,将与所述第一指令属于相同指令集合的一个或多个指令的集合提供给所述解码器以仿真所述第一指令。
示例26包括用于执行示例13-19中的任何一个示例的方法的装置。
示例27包括一种设备,其含用于执行示例13-19中的任何一个示例的方法的装置。
示例28包括用于执行基本上如本文中所述的方法的设备。
示例29包括装置,其含用于执行如本文中所述的方法的设备。
在说明书和权利要求书中,可能使用了术语“耦合”和“连接”及其衍生词。应当理解,这些术语不旨在作为彼此的同义词。相反,在特定实施例中,可使用“连接”来指示两个或更多元件彼此直接物理或电气接触。“耦合”可表示两个或两个以上元件直接物理或电接触。然而,“耦合”还可表示两个或两个以上元件彼此不直接接触,但是仍然彼此协同操作或交互。例如,第一组件和第二组件可以通过居间组件彼此耦合。在附图中,双向箭头用于示出双向连接和耦合。
在该描述和权利要求中,可能使用了术语“逻辑”。如本文中所使用的,逻辑可包括硬件、固件、软件或者其各种组合。逻辑的示例包括集成电路、专用集成电路、模拟电路、数字电路、编程逻辑设备、包括指令的存储器设备等。在某些实施例中,硬件逻辑可包括晶体管和/或逻辑门,并潜在地伴有其他电路组件。
可能使用了术语“和/或”。如所使用的,术语“和/或”表示其中之一、或另一个、或两者(例如“A和/或B”表示A、或B、或A、B两者)。
在以上描述中,为解释起见,陈述了众多具体细节以提供对本发明的实施例的透彻理解。然而,将对本领域技术人员明显的是,在没有这些具体细节中的一些的情况下,也可实践一个或多个其他实施例。提供所描述的具体实施例不是为了限制本发明而是为了通过示例实施例对其进行说明。本发明的范围不是由具体示例确定,而是仅由权利要求确定。在其他实例中,以框图的形式或者在没有细节的情况下,示出了公知电路、结构、设备、以及操作,以避免混淆对该描述的理解。
在认为适宜之处,附图标记或附图标记的结尾部分在诸附图当中被重复,以指示可任选地具有相似或相同特性的对应或相似的要素,除非另行明确指出或显而易见。在描述了多个组件的情况下,一般将它们并入单个组件中。在描述了单个组件的其它情形中,它可以被划分成多个组件。
描述了各种操作和方法。在流程图中以相对基础的形式描述了这些方法中的一些方法,但是操作可被任选地增加到这些方法和/或从这些方法移除。另外,尽管流程图示出根据示例实施例的操作的特定次序,但是特定次序是示例性的。替换实施例可任选地以不同的次序执行操作,组合特定操作,重叠特定操作等。
一些实施例包括制品(例如,计算机程序产品),该制品包括机器可读介质。该介质可包括以可由机器读取的形式提供(例如,存储)信息的机制。机器可读介质可提供指令或指令顺序或者在其上存储了指令或者令顺序,该指令如果由机器执行和/或在由机器执行时可操作用于使机器执行和/或导致机器执行本文中所公开的一种或多种操作、方法、或技术。合适的机器的示例包括但不限于处理器、指令处理装置、数字逻辑电路、和集成电路等。合适的机器的其他示例包括以及结合这些处理器、指令处理装置、数字逻辑电路、或集成电路的计算设备和其他电子设备。这些计算设备和电子设备的示例包括但不限于,台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动因特网设备(MID)、媒体播放器、智能电视、上网机、机顶盒、以及视频游戏控制器。
在一些实施例中,机器可读介质可包括有形和/或非瞬态机器可读存储介质。例如,有形和/或非瞬态机器可读存储介质可包括软盘、光学存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁电-光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除和可编程ROM(EPROM)、电可擦除和可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、相变数据存储设备、非易失性存储器、非易失性数据存储设备、非瞬态存储器、非瞬态数据存储设备等。非瞬态机器可读存储介质不由瞬态传播信号组成。
还应理解,贯穿本说明书对例如“一个实施例”、“一实施例”或“一个或多个实施例”的引述意味着特定特征可包括在本发明的实践中。类似地应当理解,在本说明书中,各个特征有时被一起编组在单个实施例、附图或其描述中,以使本公开变得顺畅并帮助理解各个创新性方面。然而,本公开的该方法不应被解释为反映出本发明需要多于在每一权利要求中明确叙述的特征的意图。相反,如下面权利要求反映的,各创新性方面可体现于比单个公开的实施例的全部特征更少的特征。因此,该详细描述之后的权利要求由此被明确地结合到该详细描述中,其中,每一权利要求本身代表本发明的单独实施例。

Claims (30)

1.一种处理器,包括:
解码器,用于接收具有给定操作码的第一指令,所述解码器包括:
检查逻辑单元,用于检查所述给定操作码是具有第一含义还是具有第二含义;
解码逻辑单元,用于在所述给定操作码具有所述第一含义时解码所述第一指令并输出一个或多个相应的控制信号;
仿真引发逻辑单元,用于在所述给定操作码具有所述第二含义时,使用和所述第一指令属于相同指令集的一个或多个指令的集合来引发对所述第一指令的仿真;以及
解码后指令处理逻辑单元,用于处理从和所述第一指令属于相同指令集的所述一个或多个指令的集合中的指令导出的至少一个控制信号,其中所述解码后指令处理逻辑单元用于在仿真中和不在仿真中不同地处理所述至少一个控制信号,
其中,所述处理器用于允许通过所述至少一个控制信号在仿真中时与不在仿真中时不同地访问资源和信息中的一者。
2.如权利要求1所述的处理器,其特征在于,所述第二含义比所述第一含义老。
3.如权利要求2所述的处理器,其特征在于,所述第二含义包括具有被弃用状态的操作码定义。
4.如权利要求1所述的处理器,还包括与所述解码器耦合的存储位置,用于存储所述给定操作码是具有第一含义还是第二含义的指示,并且其中所述检查逻辑单元用于检查所述存储位置以确定所述指示。
5.如权利要求4所述的处理器,其特征在于,所述存储位置是程序加载器模块可访问的,以允许所述程序加载器模块将所述指示存储在所述存储位置中。
6.如权利要求4所述的处理器,其特征在于,还包括与所述存储位置耦合的逻辑单元,用于将来自所述存储位置的所述指示存储到处理器特性寄存器中,其中所述处理器特性寄存器可由所述第一指令的所述相同指令集中的处理器特性标识指令所读取。
7.如权利要求4所述的处理器,其特征在于,还包括与所述解码器相耦合的多个存储位置,用于存储多个指示,所述指示中的每一个对应于多个操作码中的不同操作码,所述指示中的每一个用于指示每个对应操作码是具有第一含义还是第二含义。
8.如权利要求1所述的处理器,其特征在于,所述引发仿真的逻辑单元用于设定仿真模式。
9.如权利要求1所述的处理器,其特征在于,还包括与所述解码器耦合的仿真逻辑单元,所述仿真逻辑单元用于当所述给定操作码具有所述第二含义时,响应于所述仿真引发逻辑单元引发了仿真,向所述解码器提供所述一个或多个指令的集合以仿真所述第一指令。
10.如权利要求1所述的处理器,其特征在于,所述处理器用于在仿真中时与不在仿真中时不同地处理和所述至少一个控制信号对应的异常情况。
11.如权利要求1所述的处理器,其特征在于,所述处理器不使用微代码来实现所述指令集中的任何指令。
12.一种处理器,包括:
解码器,用于接收具有给定操作码的第一指令,所述解码器包括:
检查逻辑单元,用于检查所述给定操作码是具有第一含义还是具有第二含义;
解码逻辑单元,用于在所述给定操作码具有所述第一含义时解码所述第一指令并输出一个或多个相应的控制信号;以及
仿真引发逻辑单元,用于在所述给定操作码具有所述第二含义时,使用和所述第一指令属于相同指令集的一个或多个指令的集合来引发对所述第一指令的仿真;
解码后指令处理逻辑单元,用于处理从和所述第一指令属于相同指令集的所述一个或多个指令的集合中的指令导出的至少一个控制信号,其中所述解码后指令处理逻辑单元用于在仿真中和不在仿真中不同地处理所述至少一个控制信号,
其中所述处理器用于当特权级别逻辑单元和环级别逻辑单元中的一个指示操作系统模式时,强制所述解码器为所述给定操作码使用更新的含义而非被弃用的含义,其中所述更新的含义比所述被弃用的含义新,并且其中,所述处理器用于允许通过所述至少一个控制信号在仿真中时与不在仿真中时不同地访问资源和信息中的一者。
13.一种在处理器中的方法,包括:
接收具有给定操作码的第一指令;
确定所述给定操作码具有第二含义而非第一含义;以及
响应于确定所述给定操作码具有所述第二含义,确定使用和所述第一指令属于相同指令集的一个或多个指令的集合来对所述第一指令进行仿真;以及
在仿真期间,和不在仿真中不一样地去处理将会从和所述第一指令属于相同指令集的所述一个或多个指令的集合中的指令导出的至少一个控制信号;以及
允许通过所述至少一个控制信号在仿真中时与不在仿真中时不同地访问资源和信息中的一者。
14.如权利要求13所述的方法,其特征在于,所述确定所述给定操作码具有第二含义的步骤包括:确定所述给定操作码具有比第一含义更老的所述第二含义,且其中所述第二含义具有被弃用的状态。
15.如权利要求13所述的方法,其特征在于,所述确定所述给定操作码具有第二含义的步骤包括:从存储位置读取所述给定操作码具有所述第二含义的指示。
16.如权利要求15所述的方法,其特征在于,还包括将所述给定操作码具有所述第二含义的所述指示存储在处理器特性寄存器中,所述处理器特性寄存器可由所述处理器的所述指令集中的处理器特性标识指令来读取。
17.如权利要求13所述的方法,其特征在于,还包括,当所述给定操作码具有所述第二含义时,解码被用于仿真所述第一指令的所述一个或多个指令的集合。
18.如权利要求13所述的方法,其特征在于,在不使用微代码来实现所述指令集中的任何指令的处理器中执行所述方法。
19.一种处理指令的设备:
处理器,所述处理器包括:
解码器,用于接收具有给定操作码的第一指令,所述解码器包括:
检查逻辑单元,用于检查所述给定操作码是具有第一含义还是具有第二含义;
解码逻辑单元,用于在所述给定操作码具有所述第一含义时解码所述第一指令并输出一个或多个相应的控制信号;
仿真引发逻辑单元,用于在所述给定操作码具有所述第二含义时,使用和所述第一指令属于相同指令集的一个或多个指令的集合来引发对所述第一指令的仿真;以及
解码后指令处理逻辑单元,用于处理从和所述第一指令属于相同指令集的所述一个或多个指令的集合中的指令导出的至少一个控制信号,其中所述解码后指令处理逻辑单元用于在仿真中和不在仿真中不同地处理所述至少一个控制信号,
其中,所述处理器用于允许通过所述至少一个控制信号在仿真中时与不在仿真中时不同地访问资源和信息中的一者;以及
程序加载器模块,与所述处理器耦合,所述程序加载器模块通过检查软件模块的元数据,推断具有给定操作码的第一指令在由所述软件模块被所述处理器执行时将具有第二含义而非第一含义,所述程序加载器模块包括:
存储模块,用于将具有所述给定操作码的所述第一指令要具有所述第二含义的指示存储在所述处理器的状态中。
20.如权利要求19所述的设备,其特征在于,所述程序加载器模块包括:选择模块,用于选择使用所述给定操作码的所述第二含义的软件库部分而非使用所述给定操作码的所述第一含义的另一软件库部分,并将所选择的软件库部分提供给所述软件模块,其中所述第二含义是被弃用含义。
21.如权利要求19所述的设备,其特征在于,所述程序加载器模块用于基于所述软件模块的年龄来推断所述给定操作码具有第二含义。
22.如权利要求19所述的设备,其特征在于,所述程序加载器模块用于检查对象模块格式的标记并将所述指示存储在所述处理器的寄存器中的标记中。
23.一种处理指令的系统,包括:
互连;
与所述互连相耦合的处理器,所述处理器用于接收具有给定操作码的第一指令,所述处理器包括:
检查逻辑单元,用于检查所述给定操作码是具有第一含义还是具有第二含义;
解码逻辑单元,用于在所述给定操作码具有所述第一含义时,解码所述第一指令并输出一个或多个相应的控制信号;以及
仿真引发逻辑单元,用于在所述给定操作码具有所述第二含义时,使用和所述第一指令属于相同指令集的一个或多个指令的集合来引发对所述第一指令的仿真,
解码后指令处理逻辑单元,用于处理从和所述第一指令属于相同指令集的所述一个或多个指令的集合中的指令导出的至少一个控制信号,其中所述解码后指令处理逻辑单元用于在仿真中和不在仿真中不同地处理所述至少一个控制信号,
其中,所述处理器用于允许通过所述至少一个控制信号在仿真中时与不在仿真中时不同地访问资源和信息中的一者;以及
与所述互连耦合的动态随机存取存储器(DRAM)。
24.如权利要求23所述的系统,其特征在于,还包括仿真逻辑单元,用于在所述给定操作码具有所述第二含义时,将与所述第一指令属于相同指令集的所述一个或多个指令的集合提供给解码器以仿真所述第一指令。
25.一种制品,包括存储有指令的非瞬态机器可读存储介质,所述指令如果由机器执行将使所述机器执行如权利要求13-18中任一项所述的方法。
26.一种设备,包括:
用于接收具有给定操作码的第一指令的装置;
用于确定所述给定操作码具有第二含义而非第一含义的装置;以及
用于响应于确定所述给定操作码具有所述第二含义而确定使用和所述第一指令属于相同指令集的一个或多个指令的集合来对所述第一指令进行仿真的装置;以及
用于在仿真期间和不在仿真中不一样地去处理将会从和所述第一指令属于相同指令集的所述一个或多个指令的集合中的指令导出的至少一个控制信号的装置;以及
用于允许通过所述至少一个控制信号在仿真中时与不在仿真中时不同地访问资源和信息中的一者的装置。
27.如权利要求26所述的设备,其特征在于,所述用于确定所述给定操作码具有第二含义的装置包括:用于确定所述给定操作码具有比第一含义更老的所述第二含义的装置,且其中所述第二含义具有被弃用的状态。
28.如权利要求26所述的设备,其特征在于,所述用于确定所述给定操作码具有第二含义的装置包括:用于从存储位置读取所述给定操作码具有所述第二含义的指示的装置。
29.如权利要求28所述的设备,其特征在于,还包括用于将所述给定操作码具有所述第二含义的所述指示存储在处理器特性寄存器中的装置,所述处理器特性寄存器可由所述处理器的所述指令集中的处理器特性标识指令来读取。
30.如权利要求26所述的设备,其特征在于,还包括,用于当所述给定操作码具有所述第二含义时解码被用于仿真所述第一指令的所述一个或多个指令的集合的装置。
CN201410098131.8A 2013-03-16 2014-03-17 指令仿真处理器、方法和系统 Active CN104049948B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/844,873 2013-03-16
US13/844,873 US20140281398A1 (en) 2013-03-16 2013-03-16 Instruction emulation processors, methods, and systems

Publications (2)

Publication Number Publication Date
CN104049948A CN104049948A (zh) 2014-09-17
CN104049948B true CN104049948B (zh) 2018-05-11

Family

ID=50554832

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410098131.8A Active CN104049948B (zh) 2013-03-16 2014-03-17 指令仿真处理器、方法和系统

Country Status (7)

Country Link
US (1) US20140281398A1 (zh)
JP (2) JP6006248B2 (zh)
KR (1) KR101793318B1 (zh)
CN (1) CN104049948B (zh)
BR (1) BR102014006301A2 (zh)
DE (1) DE102014003705A1 (zh)
GB (1) GB2513975B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8281109B2 (en) * 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
US10496461B2 (en) * 2011-06-15 2019-12-03 Arm Finance Overseas Limited Apparatus and method for hardware initiation of emulated instructions
US20140281398A1 (en) * 2013-03-16 2014-09-18 William C. Rash Instruction emulation processors, methods, and systems
US9703562B2 (en) 2013-03-16 2017-07-11 Intel Corporation Instruction emulation processors, methods, and systems
US20160179161A1 (en) * 2014-12-22 2016-06-23 Robert P. Adler Decode information library
US9946482B2 (en) * 2015-07-14 2018-04-17 Microchip Technology Incorporated Method for enlarging data memory in an existing microprocessor architecture with limited memory addressing
US11403099B2 (en) 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
US10235219B2 (en) * 2015-07-27 2019-03-19 Sony Interactive Entertainment America Llc Backward compatibility by algorithm matching, disabling features, or throttling performance
US9892024B2 (en) 2015-11-02 2018-02-13 Sony Interactive Entertainment America Llc Backward compatibility testing of software in a mode that disrupts timing
MA44821A (fr) * 2016-02-27 2019-01-02 Kinzinger Automation Gmbh Procédé d'allocation d'une pile de registres virtuels dans une machine à pile
US10915333B2 (en) 2016-03-30 2021-02-09 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
KR101869013B1 (ko) * 2017-02-01 2018-06-20 이노6 주식회사 이동 가능한 테이블 시스템
CN109144036B (zh) * 2018-10-22 2023-11-21 江苏艾科半导体有限公司 一种基于fpga芯片的机械手模拟测试系统及测试方法
US20220197678A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Apparatus and method for secure instruction set execution, emulation, monitoring, and prevention
CN113805942A (zh) * 2021-08-23 2021-12-17 北京奕斯伟计算技术有限公司 处理器核、处理器及指令处理方法
CN115480872B (zh) * 2022-09-14 2023-04-28 北京计算机技术及应用研究所 一种dsp c2812处理器指令集虚拟化仿真方法
CN116151187B (zh) * 2023-02-14 2024-01-19 芯华章科技(北京)有限公司 处理触发条件的方法、装置和存储介质
CN117608590B (zh) * 2024-01-24 2024-04-09 长沙科梁科技有限公司 数据组包解包方法、装置和计算机设备

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1027248A (en) * 1973-11-08 1978-02-28 Honeywell Information Systems Inc. Data processing system having improved program allocation and search technique
JP3191263B2 (ja) * 1989-12-07 2001-07-23 富士通株式会社 最適オブジェクト選択実行処理装置
JPH04199331A (ja) * 1990-11-29 1992-07-20 Hitachi Ltd マイクロコンピュータ
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
US5677864A (en) * 1993-03-23 1997-10-14 Chung; David Siu Fu Intelligent memory architecture
US6496922B1 (en) * 1994-10-31 2002-12-17 Sun Microsystems, Inc. Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation
US5632028A (en) * 1995-03-03 1997-05-20 Hal Computer Systems, Inc. Hardware support for fast software emulation of unimplemented instructions
JP2000235489A (ja) * 1999-02-15 2000-08-29 Hitachi Ltd プロセッサ
GB2367651B (en) * 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
EP1197847A3 (en) * 2000-10-10 2003-05-21 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US7100023B2 (en) * 2001-08-23 2006-08-29 Sony Computer Entertainment Inc. System and method for processing complex computer instructions
US8423976B2 (en) * 2003-03-13 2013-04-16 Northrop Grumman Corporation Extreme pipeline and optimized reordering technology
JP3938580B2 (ja) * 2004-12-21 2007-06-27 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、情報処理方法、半導体装置、コンピュータプログラム
JP2006302168A (ja) * 2005-04-25 2006-11-02 Hitachi Ltd コプロセッサ、および、その演算制御方法
US8146106B2 (en) * 2007-12-31 2012-03-27 Intel Corporation On-demand emulation via user-level exception handling
US8195923B2 (en) * 2009-04-07 2012-06-05 Oracle America, Inc. Methods and mechanisms to support multiple features for a number of opcodes
WO2010135696A1 (en) * 2009-05-21 2010-11-25 Salesforce.Com, Inc. System, method and computer program product for versioning components of an application
US9495183B2 (en) * 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US9280347B2 (en) * 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US20140281398A1 (en) * 2013-03-16 2014-09-18 William C. Rash Instruction emulation processors, methods, and systems

Also Published As

Publication number Publication date
CN104049948A (zh) 2014-09-17
GB2513975A (en) 2014-11-12
BR102014006301A2 (pt) 2015-11-03
DE102014003705A1 (de) 2014-09-18
JP6507435B2 (ja) 2019-05-08
JP2014182813A (ja) 2014-09-29
GB201404224D0 (en) 2014-04-23
KR20140113585A (ko) 2014-09-24
KR101793318B1 (ko) 2017-11-02
GB2513975B (en) 2017-07-19
US20140281398A1 (en) 2014-09-18
JP6006248B2 (ja) 2016-10-12
JP2016207231A (ja) 2016-12-08

Similar Documents

Publication Publication Date Title
CN104049948B (zh) 指令仿真处理器、方法和系统
CN104050012B (zh) 指令模拟处理器、方法和系统
TWI742964B (zh) 用於異質計算之系統,方法,及設備
CN104954356B (zh) 保护共享的互连以用于虚拟机
TWI770009B (zh) 原子式儲存至寬於原生支援資料寬度之記憶體資料的處理器、方法、系統與指令
CN104951697B (zh) 来自过程指令的返回-目标限制性返回、处理器、方法及系统
CN108351830B (zh) 用于存储器损坏检测的硬件装置和方法
US11086624B2 (en) Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
CN108268282A (zh) 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、系统和指令
CN104969199B (zh) 实施黑名单分页结构指示值的处理器、方法,以及系统
CN105453030B (zh) 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统
CN104025027B (zh) 结构访问处理器、方法、系统和指令
CN109690552A (zh) 用于判定是否将受保护容器页的加密副本加载到受保护容器存储器中的处理器、方法、系统和指令
CN106575218A (zh) 持久性存储屏障处理器、方法、系统和指令
KR20170043635A (ko) 독립적인 사용자 및 관리자 도메인을 갖는 메모리 보호 키 아키텍처
CN108351839A (zh) 用来挂起/恢复安全飞地页面高速缓存中飞地的迁移的指令和逻辑
CN106133687A (zh) 管理与选定架构工具相关联的处理
CN108351779A (zh) 用于安全指令执行流水线的指令和逻辑
CN104050415B (zh) 用于系统调用的稳健且高性能的指令
CN108885551A (zh) 存储器复制指令、处理器、方法和系统
US20190156015A1 (en) Smm protection utilizing ring separation and smi isolation
US10223149B2 (en) Implementing device models for virtual machines with reconfigurable hardware
CN107077421A (zh) 用于页表游走改变位的指令和逻辑
CN111355574A (zh) 信任域中的安全加密密钥管理
CN108369510A (zh) 用于以无序加载的置换的指令和逻辑

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