CN104050012A - 指令模拟处理器、方法和系统 - Google Patents

指令模拟处理器、方法和系统 Download PDF

Info

Publication number
CN104050012A
CN104050012A CN201410098580.2A CN201410098580A CN104050012A CN 104050012 A CN104050012 A CN 104050012A CN 201410098580 A CN201410098580 A CN 201410098580A CN 104050012 A CN104050012 A CN 104050012A
Authority
CN
China
Prior art keywords
instruction
logic
processor
simulation model
abnormal conditions
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.)
Granted
Application number
CN201410098580.2A
Other languages
English (en)
Other versions
CN104050012B (zh
Inventor
W·C·拉什
B·L·托尔
S·D·哈恩
G·J·辛顿
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 CN104050012A publication Critical patent/CN104050012A/zh
Application granted granted Critical
Publication of CN104050012B publication Critical patent/CN104050012B/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders

Abstract

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

Description

指令模拟处理器、方法和系统
背景技术
技术领域
本文所述的各实施例一般涉及处理器。尤其地,本文所述的各实施例一般涉及处理器中的指令模拟。
背景信息
处理器通常具有指令集架构(ISA)ISA一般表示处理器的架构中涉及编程的那部分。ISA通常包括处理器的本机指令、架构寄存器、数据类型、寻址模式等。ISA的一部分是指令集。该指令集一般包括提供给处理器以供执行的宏指令或ISA级指令。执行逻辑和其他流水线逻辑被包括以处理该指令集中的指令。通常,这样的执行逻辑和其他流水线逻辑的数量可能相当大。通常,该指令集中的指令越多,并且该指令集中的指令越复杂和/或越专用,这样的逻辑的数量就越大。这样的硬件可能趋于增加处理器的制造成本、尺寸和/或功率消耗。
附图简述
通过参考用来说明本发明的实施例的以下描述和附图,可最好地理解本发明。在附图中:
图1是计算机系统的一实施例的框图。
图2是模拟处理器中的指令的方法的一实施例的方框流程图。
图3是解说用一个或多个指令的集合来模拟指令的逻辑的一实施例的框图。
图4是解说允许处理器在处于仿真模式时以与在不处于仿真模式时相比不同的方式来处理异常情况的逻辑的一实施例的框图。
图5是解说允许处理器在处于仿真模式时以与在不处于仿真模式时不同的方式来访问资源和/或信息的逻辑的一实施例的框图。
图6是由处理器和/或在处理器中执行的方法的一实施例的方框流程图。
图7是解说允许给定操作码具有面不同含义的逻辑的一实施例的框图。
图8是可由操作系统模块执行的方法的一实施例的方框流程图。
图9是具有选择模块的程序加载器模块的一实施例的框图,所述选择模块用于选择软件库中具有对于将使用一个或多个功能、子例程、或其他部分的集合的软件而言合适的给定操作码的含义的一个或多个功能、子例程、或其他部分的集合。
图10A是解说根据本发明的各实施例的示例性按序流水线和示例性的寄存器重命名、无序发布/执行流水线两者的框图。
图10B是解说根据本发明的各实施例的要包括在处理器中的按序架构核的示例性实施例和示例性的寄存器重命名、无序发布/执行架构核两者的框图。
图11A是根据本发明实施例的单处理器核连同其到管芯上互连网络的连接以及其2级(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。软件可以包括例如一个或多个操作系统(OA)以及一个或多个应用。在操作期间,软件的一部分可以被加载到处理器上,并在处理器上运行。如图所示,处理器可以接收处理器的指令集中的ISA指令102。例如,指令获取单元可以获取这些ISA指令。ISA指令可以表示宏指令、汇编语言指令、机器级指令或提供给处理器解码和执行的其他指令。如图所示,在某些实施例中,ISA指令可以包括非被模拟指令103和一个或多个类型的被模拟指令104。
处理器包括解码逻辑105。解码逻辑也可以被称为解码单元或解码器。解码逻辑可以接收ISA指令102。在非被模拟指令103的情况下,解码逻辑可以解码相对较高级的指令,并输出一个或多个相对较低级的微指令、微操作、微代码入口点、或从ISA指令导出的其他相对较低级的指令或控制信号。在该解说中,这些被示为经解码指令106。从解码器输出的这些经解码指令可以反映、表示输入到该解码器的较高级的ISA指令和/或从其导出,并且可以通过一个或多个较低级(例如,电路级或硬件级)操作来实现这些ISA指令。该解码器可以使用各种不同的机制来实现,包括但不限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)和本领域公知的用于实现解码器的其他机制。
解码后指令处理器逻辑107与解码逻辑耦合。解码后指令处理器逻辑可以表示处理处理器的流水线的指令的解码后部分。解码后指令处理器逻辑可以接收并处理经解码指令106。通常,解码后指令处理器逻辑可以包括寄存器读和/或存储器读逻辑、执行逻辑、寄存器和/或存储器写回逻辑、和执行处理程序逻辑,但是该逻辑可以因架构而异,并且本发明的范围不限于这样的逻辑。在某些实施例中,例如,在无序处理器流水线的情况下,解码后指令处理器逻辑可以可选地包括其他逻辑,诸如作为示例分配逻辑、重命名逻辑、调度逻辑、或者退出或提交逻辑等。
处理器还包括架构上可见的寄存器108或架构寄存器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(例如,模拟陷阱信号)提供给模拟逻辑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中获取或者以其他方式检索用于模拟被模拟指令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设备、和中断等无关,同应用、操作系统、虚拟机管理器、I/O设备、和中断等隔离,和/或被保护以免被应用、操作系统、虚拟机管理器、I/O设备、中断等访问。在完成指令集合114之后,可以更新处理器的架构状态(例如,可以将结果从存储位置121存储到寄存器108中)。该更新可以用低等待时间访问来完成。通常,这可被用来逼近、仿效、模仿或以其他方式模拟在被模拟指令104实际上已经被直接执行的情况下本该出现的架构状态的改变和/或已发生的处理器的行为。
为了避免混淆本描述,已示出和描述了相对简单的处理器101。在其他实施例中,处理器可可选地包括其他公知组件。实际上在处理器中存在组件的多种不同的组合和配置,并且各实施例不限于任何特定组合或配置。处理器可以表示集成电路或者一个或多个半导体管芯或芯片的集合(例如,单个管芯或芯片、或合并两个或更多个管芯或芯片的封装)。在某些实施例中,处理器可以表示系统级芯片(Soc)和/或单芯片多处理器(CMP)。
某些处理器使用相对复杂的操作。例如,某些指令执行多个存储器访问,而非仅单个存储器访问。一示例是用于从存储器收集数据元素的向量的向量收集指令。作为另一示例某些指令可以执行许多数据元素比较,而非对单对数据元素或对两个打包数据中的多对相应的数据元素进行比较。各示例是向量冲突指令和字符串处理指令。一种方法是完全用硬件来实现这样的复杂操作。然而,通常所需的硬件量可能趋于相当大,其往往可能增加生产成本、管芯尺寸和功率消耗。另一方法是至少部分地用微代码来实现这样的复杂操作。微代码的使用可有助于减少实现这样的复杂操作所需的硬件量,和/或可有助于允许某一现有硬件被重新使用。然而,某些处理器不使用微代码(例如,不使用微代码来实现指令集中的任何指令)。
在某些实施例中,相对较复杂的指令可以用一个或多个相对较简单的指令的集合来模拟。术语较复杂和较简单是相对术语,不是绝对术语,其是相对彼此而言的。有利地,这可潜在地有助于减少实现该较复杂的指令所需的硬件量,和/或可有助于允许对由用于模拟该较复杂的指令的一个或多个指令使用的现有硬件的重新使用。在某些实施例中,用较简单的一个或多个指令来模拟较复杂的指令可用于提供对较复杂的指令的类似微代码的实现,即使在某些实施例中处理器可能不被配置为使用微代码和/或可能不被配置为使用微代码来实现该较复杂的指令。
图2是模拟处理器中的指令的方法230的一实施例的方框流程图。在某些实施例中,图2中的操作和/或方法可以由图1中的处理器来执行和/或在该处理器中执行。本文中描述的图1中的处理器的各组件、各特征和各具体的可选细节也可以可选地适用于图2中的操作和/或方法。或者,图2中的操作和/或方法可以由类似的或完全不同的处理器来执行,和/或在类似的或完全不同的处理器中执行。此外,图1中的处理器可以执行与图2中的那些操作和/方法类似或不同的操作和/或方法。
该方法包括在框231接收第一指令。在某些实施例中,第一指令可以是在解码器处接收到的。该方法包括在框232处确定要模拟第一指令。在某些实施例中,解码器可以通过确定第一指令的操作码处于要被模拟的指令的一个或多个操作码的集合之中来确定要模拟第一指令。该方法包括在框232处接收要被用来模拟第一指令的一个或多个指令的集合。在某些实施例中,可以在解码器处从管芯上模拟逻辑、或管芯外模拟逻辑或其组合接收该指令集合。在某些实施例中,该集合中的各指令中的每一指令可以与第一指令属于同一指令集合。该方法包括在框234,当处于模拟模式时,与在不处于模拟模式时不同地处理从该集合中的指令导出的一个或多个控制信号。
在不同的实施例中,这可以用不同的方式来完成。在某些实施例中,在处理该集合中的指令期间所遇到的各异常情况可以被不同地处理。在某些实施例中,对该集合中的指令的这种处理可以允许访问在其他情况下当不在模拟模式中进行处理时将不对该相同指令(即,具有相同操作码的指令)可用的信息和/或资源。
图3是解说用于用一个或多个指令的集合(例如,较简单地指令)314来模拟指令(例如,复杂指令)的逻辑301的一实施例的框图。在某些实施例中,图3中的逻辑可以被包括在图1中的处理器和/或计算机系统中。或者,图3中的逻辑可以被包括在类似的或不同的处理器或计算机系统中。此外,图1中的处理器和/或计算机系统可以包括与图3中的那个逻辑类似或不同的逻辑。
将被模拟的指令(例如,复杂指令)304可以被提供给解码逻辑305。该解码逻辑可以包括用于检测指令304(例如用于检测指令304的操作码处于将被模拟的各指令的操作码的集合之中)的逻辑319。如图所示,在某些实施例中,处理器可能不具有微代码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来讨论的各可选方面。
有利地,在某些实施例中,较复杂的指令可以通过较简单的指令/操作来实现。有利地,这可潜在地有助于减少实现该较复杂的指令所需的硬件量,和/或可有助于允许对用于模拟该较复杂的指令的一个或多个指令所使用的现有硬件的重新使用。在某些实施例中,用较简单的一个或多个指令来模拟较复杂的指令可用于提供对较复杂的指令的类似微代码的实现,即使在某些实施例中处理器可能不被配置为使用微代码和/或可能不被配置为使用微代码来实现该较复杂的指令。在某些实现中,较简单的指令/操作甚至可以与较复杂的指令属于同一指令集合。
这样的用较简单的指令来模拟较复杂的指令只是模拟指令的可能理由的一个示例。在其他实施例中,被模拟指令可以是相对较不频繁被使用(例如,很少被使用)的指令,并且可以用相对较频繁被使用的一个或多个指令来模拟。有利地,这可潜在地有助于减少实现该很少被使用的指令所需的硬件量,和/或可有助于允许对由用于模拟该很少被使用的指令的一个或多个指令所使用的现有硬件的重新使用。在又一些实施例中,被模拟指令可以是较老的和/或过时的指令,和/或可以是在被弃用的进程中的一个指令,并且可以用一个或多个其他指令来进行模拟。有利地,该模拟可有助于允许正被弃用指令仍被执行并由此向软件提供向后兼容性,而在同时潜在地有助于减少实现被弃用的指令所选的硬件量和/或有助于允许对由用于模拟被弃用指令的一个或多个指令所使用的现有硬件的重新使用。对本文中公开的模拟的又一些使用对于本领域的那些技术人员而言将是显而意见的,并且具有本公开的好处。
图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。模拟模式知晓异常情况处理程序逻辑用于以模拟模式知晓方式来应付/处理异常情况。如本文中使用的,术语“异常情况”被宽泛地指在处理各指令时可能发生的各种不同类型的异常情况。这样的异常情况的示例包括但不限于异常、中断、错误、和陷阱等。在本领域中通常按不同的方式来使用术语异常、中断、错误、和陷阱。术语“异常”可能更通常被用于指示响应于特权违反、特权异常、页错误、存储器保护错误、除以零、尝试执行非法操作码以及其他这样的异常情况的自动生成的到处理程序例程的控制转移。
在某些实施例中,当处理器不在模拟模式418中操作时,如果特权违反、页错误、存储器保护错误、除以零、尝试执行非法操作码以及其他异常情况在正在处理给定指令的第一实例403-1时发生,则该处理器可能对该异常情况执行基本上常规的处理。例如,在某些实施例时,异常情况可以被直接取得,其中控制被转移到异常情况处理程序例程441。通常,异常情况处理程序例程可以是操作系统、虚拟机监控器、或其他享有特权的软件的部分。这样的处理程序例程的示例包括但不限于页错误处理程序、过错处理程序、和中断处理程序等。
相反,在某些实施例中,当处理器在模拟模式418中操作时,如果特权违反、页错误、存储器保护错误、除以零、尝试执行非法操作码以及其他异常情况在正在处理给定指令的第二实例403-2时发生,则该处理器可以对该异常情况执行基本上非常规的处理。例如,在某些实施例中,异常情况可以不被直接取得。在某些实施例中,逻辑420可以包括一种机制来抑制到在其他情况下将会由于异常情况导致的异常情况处理程序例程的在其他情况下为自动的控制转移。控制可能不会被从模拟程序直接转移到异常情况处理程序例程441。相反,在某些实施例中,模拟模式知晓异常情况处理程序逻辑420可以临时地抑制控制转移进入异常情况处理程序441并间接地报告442该异常情况。在某些实施例中,模拟模式知晓异常情况处理程序逻辑420可以通过一个或多个模拟通信寄存器443来间接报告异常情况。这一个或多个通信寄存器可用于在模拟逻辑和具有正被模拟的原始指令的程序之间传送信息。
在某些实施例中,响应于异常情况在处于模拟模式418时发生,模拟模式知晓异常情况处理程序逻辑420可以将对异常情况的指示存储在异常情况或过错状态标志、字段或寄存器444中。例如,单个比特或标志可具有用于指示异常情况已发生的第一值(例如,被设置为二进制1),或者可具有用于指示没有异常情况发生的第二值(例如,被清除为二进制0)。在某些实施例中,响应于异常情况在处于模拟模式418时发生,模拟模式知晓异常情况处理程序逻辑420可以将针对该异常情况的过错代码存储在过错代码字段或寄存器445中。过错代码可以提供与该过错有关的附加信息,诸如例如该过错的类型和有助于传送异常情况的性质的可选的附加细节。或者,不是使用各通信寄存器,而是该信息可以以其他方式来用信号通知或提供(例如,被存储在存储器中、通过电信号来报告等)。
在某些实施例中,模拟模式知晓异常情况处理程序逻辑420还可以提供对正被模拟的指令(即,使得第二实例403-2被发送到解码逻辑405的那个指令)的地址(例如,指令指针)的指示。例如,在某些实施例中,正被模拟的指令的地址446可以被存储在栈447的顶部。将正被模拟的给定指令(而非正被用来模拟该给定指令的各指令之一)的地址存储在该栈上可以导致来自异常处理程序的返回被返回给被模拟指令而不是被返回给正被用来模拟该被模拟指令的各指令之一。如果相反,则来自异常处理程序的返回将去往正被用来模拟该指令的各指令之一,这可以潜在地引起问题。例如,软件(例如,应用、操作系统等)可能不知道正被用来模拟该给定指令的指令,并且可能没有识别出相关联的地址。操作系统可以察觉到控制流正被转移到未知的、非法的、有风险的或者不被允许的位置,并且可能潜在地尝试阻止该转移。
在某些实施例中,指令集合414可以监控过错状态444和/或过错代码445。例如,在某些实施例中,指令414可以从模拟通信寄存器443读出过错状态444和过错代码445以获悉异常情况并了解该异常情况。在某些实施例中,当过错状态444指示异常情况时,指令集合414可以取得(take)该异常情况449。例如,指令414中的一个或多个指令可以被执行以检查过错状态,并在过错被指示的情况下,将控制转移到异常情况手柄。在某些实施例中,这可包括指令414的集合将控制转移到异常情况处理程序441。在某些实施例中,关于异常情况的信息(例如,过错代码445)可以被提供给异常情况处理程序441。在某些实施例中,被模拟指令地址446也可以被提供给异常情况处理程序441和/或可以至少被保留在栈的顶部。被模拟指令地址446可以被异常情况处理程序441在从处理该异常情况返回之后使用。有利地,通过将正被模拟的指令的地址存储在栈上,操作系统或其他过错处理程序例程可能认为是被模拟的指令导致了该过错。
在某些实施例中,该模拟逻辑可以包括用于测试并报告该指令中的存储器访问是否将正确地工作或可导致的异常情况的类型的逻辑。例如,可以包括如下特殊指令:其用于利用模拟访问权限来测试存储器地址以获悉该存储器地址是否有效(例如,页是否存在)以及程序是否具有足够的访问权限来读出和/或修改那个存储器位置如果任何测试失败,则模拟逻辑可以用返回地址将控制传递给合适的中断处理程序,就好像正被模拟的指令已直接将控制传递给了异常处理程序一样。作为另一示例,状态机可以执行指示存储器操作是否有效的条件存储器事务。假设没有异常将发生的情况下,这可用于确定何时可执行存储器操作。这还可用于确定指令流或一串指令信息的多少字节可被安全地读出,而没有异常。例如,这可用于测试并确定某指令长度是否可被读出,或者该指令长度的部分是否将导致页错误。该模拟逻辑可以包括用于处理跨越多个页的指令和/或在页不在存储器中时处理各指令的逻辑。
在某些实施例中,模拟逻辑可以包括用于提供中间执行中断状态使得对该模拟的执行可以在该中间点处停止并稍后在该中间点处恢复的逻辑。这尤其在模拟涉及长持续时间或者执行时间的指令时是有利的。在某些实施例中,用于模拟某些类型的指令(例如,移动字符串指令、收集各指令、以及具有长操作的其他指令)的指令集合可以更新具有正被模拟的各指令的软件的执行状态,以反映当前的进度级别。例如,该操作可能在中间点处被中断,并且用于模拟的指令集合可以在异常情况处理程序所保存的机器状态中(例如,在处理器状态寄存器中)设置标志或状态位,使得在返回时模拟代码能够测试该标志或状态位以确定它是否正从中间状态恢复执行。该标志或状态位可以指示被中断的执行。通过这种方式,当在异常情况已被处理之后从异常情况处理程序返回时,该程序可以在它曾停下的中间进度水平处恢复执行。在某些情况下,指令(例如,移动字符串指令)可以修改寄存器以反映该操作的中间状态,使得在中断执行后还可以从该中间状态恢复。
图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的物理处理器或逻辑处理器不同的物理处理器或逻辑处理器(例如,核、硬件线程、线程上下文等)中的资源和/或信息。不同的物理或逻辑处理器可以处于相同的插座或不同的插座。作为示例,当处于模拟模式时,模拟模式知晓控制逻辑520可能能够访问处于另一插座的另一核的信息和/或资源(例如,查询该核的状态),而该些信息和/或资源在不处于模拟模式时对解码后指令处理器逻辑507将是不可用的。
有利地,模拟模式知晓访问控制逻辑520可能有助于允许指令514中的至少一些指令在处于模拟模式时选择性地具有对某些资源和/或信息的访问,但这些资源和/或信息在不处于模拟模式时通常对该指令集合中的相同指令不可用。由于模拟逻辑可能在管芯上和/或在存储器的受保护部分中,因此安全性仍可以被维持。
在某些实施例中,可以禁止某些执行级别(例如,安全性执行状态)使用这样的模拟来访问这些资源和/或信息。例如,不是所有执行状态都可被允许使用被模拟操作码。如果允许这样的中断或较低级别的执行,特殊的安全性执行状态可能不是可证明地安全。相反,如果这样的执行级别或安全性执行状态需要类似的访问,则它们可以改为通过使用对模拟软件可用的硬件原语来实现该访问。
在某些实施例中,指令模拟可用来帮助为指令的给定操作码提供不同的含义。宏指令、机器语言指令和指令集中的其他指令通常包括操作代码或操作码。操作码一般表示指令的如下部分:该部分用于指定特定指令和/或要响应于该指令而执行的操作。例如,打包的乘指令的操作码可以与打包的加指令的操作码不同。一般来说,操作码包括在一个或多个字段中的若干位,这些位在没有被物理地编组在一起的情况下被逻辑上编组在一起。通常,期望尝试将各操作码保持得相对短或尽可能的短,同时允许期望数目的指令/操作。相对长的操作码趋于增加解码器的尺寸和/或复杂性,并且一般还趋于使指令更长。对于操作码中固定数目的位,一般仅固定数目的不同指令/操作可被标识出。存在本领域公知的各种诀窍来获得操作码中的大多数,例如,通过使用移出(escape)代码等。然而,可以用操作码来唯一标识出的指令的数目一般比通常所需的更为有限。一般来说,新的指令无法被持续添加到处理器的操作码空间中而不会最终在某个点处用完可用的操作码。
工作负载随时间改变。类似地,所需的指令和所需的指令功能随时间改变。新的指令功能通常以正在进行的基础被添加到处理器中。类似地,某些指令/操作随时间变得相对较不有用和/或相对较不被频繁使用和/或相对较不重要。在某些情况下,当指令/操作具有足够有限的有用性或重要性时,它们可被弃用。弃用是本领域中常用来指一种如下状态的术语:所述状态被应用于组件、特性、特征或实践以指示通常由于它处于被放弃或取代的过程中和/或它在将来可能是不可用的或不受支持的,而一般应该回避它。
通常,这样的指令/操作可能被弃用而非被立即移除,以便有助于提供临时的后向兼容性(例如,以允许现有代码或旧有代码继续运行)。这可为使要引入的代码顺从取代指令/操作争取时间,和/或可为使现有代码或旧有代码分阶段离开争取时间。通常,从指令集弃用各指令/操作会花费较长时间(例如,即使不到几十年,也处于许多年的量级),以允许足以淘汰老程序的时间。常规上,在这样的长时间段过去之前,被弃用的指令/操作的操作码的值一般不会被重新捕捉和重新使用来用于不同的指令/操作。否则,如果旧有软件被运行,则具有操作码值的指令可能促使处理器执行取代操作,而非预期被弃用的操作,这可导致错误的结果。
在某些实施例中,指令模拟可用来帮助为指令的给定操作码提供不同的含义。在某些实施例中,指令的给定操作码可以用不同的含义来解释。在某些实施例中,对于给定操作码,可以支持多个操作码定义。例如,给定操作码可以用具有该指令的软件程序所打算的含义来解释。作为示例,在某些实施例中,较老的或旧有软件程序可以指示具有该给定操作码的指令将具有较老的、旧有的或被弃用的含义,而较新的软件程序可指示具有该给定操作码的指令将具有较新的含义。在某些实施例中,较老的或被弃用的含义可以被模拟,而较新的含义可以被解码成控制信号,并直接在处理器流水线上执行。有利地,在某些实施例中,这可有助于允许较早地重新捕捉和重新使用被弃用的操作码,同时还提供允许较老的程序仍用被弃用的操作码运行并允许被弃用的操作码还以不同的含义被用于较新的程序的后向兼容性,以帮助改进性能。
图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处的使用给定操作码的第一含义的指示772。解码器包括与存储位置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使用给定操作码的第一含义,因此该选择模块可以为第一软件模块911-1选择第一集合984-1。同样,由于第二软件模块911-2使用了给定操作码的第二含义,因此该选择模块可以为第二软件模块911-2选择第二集合。在一个特定实施例中,在第一软件911-1是较老软件并且给定操作码的第一含义是被弃用的含义的情况下,该选择模块可用于选择库部分984中也使用该给定操作码的该被弃用含义的第一集合。因此,选择模块可以选择库的如下部分:所述部分使用了与将使用该库的该部分的软件一致或相同的给定操作码的含义。
示例性核架构、处理器和计算机架构
处理器核可以用出于不同目的的不同方式在不同的处理器中实现。例如,这样的核的实现可以包括:1)旨在用于通用计算的通用有序核;2)预期用于通用计算的高性能通用无序核;3)主要预期用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:包括预期用于通用计算的一个或多个通用有序核和/或预期用于通用计算的一个或多个通用无序核的CPU;以及2)包括主要预期用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核);以及4)可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上的系统级芯片。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和无序核框图
图10A是解说根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的、无序发布/执行流水线的两者的框图。图10B是解说根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的、无序发布/执行架构核的两者的框图。图10A-10B中的实线框解说了有序流水线和有序核,而虚线框中的可选附加项解说了寄存器重命名的、无序发布/执行流水线和核。给定有序方面是无序方面的子集的情况下,无序方面将被描述。
在图10A中,处理器流水线1000包括提取阶段1002、长度解码阶段1004、解码阶段1006、分配阶段1008、重命名阶段1010、调度(也称为分派或发布)阶段1012、寄存器读/存储器读阶段1014、执行阶段1016、写回/存储器写阶段1018、异常处理阶段1022和提交阶段1024。
图10B示出了包括耦合到执行引擎单元1050的前端单元1030,且执行引擎单元和前端单元两者都耦合到存储器单元1070的处理器核1090。核1090可以是精简指令集合计算(RISC)核、复杂指令集合计算(CISC)核、非常长的指令字(VLIW)核或混合或替代核类型。作为又一选项,核1090可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理器单元(GPGPU)核、或图形核等等。
前端单元1030包括耦合到指令高速缓存单元1034的分支预测单元1032,该高速缓存单元1034被耦合到指令翻译后备缓冲器(TLB)1036,该指令翻译后备缓冲器被耦合到解码单元1040。解码单元1040(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元1040可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实线、可编程逻辑阵列(OLA)、微代码只读存储器(ROM)等。在一个实施例中,核1090包括存储(例如,在解码单元1040中或否则在前端单元1030内的)某些宏指令的微代码的微代码ROM或其他介质。解码单元1040被耦合到执行引擎单元1050中的重命名/分配单元1052。
执行引擎单元1050包括重命名/分配器单元1052,该重命名/分配器单元1052耦合至退出单元1054和一个或多个调度器单元1056的集合。调度器单元1056表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元1056被耦合到物理寄存器文件单元1058。这些物理寄存器文件单元1058中的每一个单元表示一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一个或多个不同的数据类型,包括标量整型、标量浮点、打包整型、打包浮点、向量整型、向量浮点、状态(例如,作为要被执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元1058包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器文件单元1058被退出单元1054覆盖以解说可以用来实现寄存器重命名和无序执行的各种方式(例如,使用记录缓冲器和退出寄存器文件;使用将来的文件、历史缓冲器和退出寄存器文件;使用寄存器图和寄存器池等等)。退出单元1054和物理寄存器文件单元1058被耦合到执行群集1060。执行群集1060包括一个或多个执行单元1062的集合和一个或多个存储器访问单元1064的集合。执行单元1062可以执行各种操作(例如,移位、加法、减法、乘法),以及对各种类型的数据(例如,标量浮点、打包浮点、向量整型、向量浮点)执行。尽管某些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括仅一个执行单元或全部执行所有函数的多个执行单元。调度器单元1056、物理寄存器文件单元1058和执行群集1060被示为可能有多个,因为某些实施例为某些类型的数据/操作(例如,标量整型流水线、标量浮点/打包整型/打包浮点/向量整型/向量浮点流水线,和/或各自具有其自己的调度器单元、物理寄存器单元和/或执行群集的存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有存储器访问单元1064的某些实施例)创建分开的流水线。还应当理解,在分开的流水线被使用的情况下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元1064的集合被耦合到存储器单元1070,该存储器单元1070包括耦合到数据高速缓存单元1074的数据TLB单元,其中数据高速缓存单元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执行调度阶段;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)的逻辑,由此允许被许多多媒体应用使用的操作将使用打包数据来执行。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分提取和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所解说的处理器的实施例还包括分开的指令和数据高速缓存单元1034、1074以及共享L2高速缓存单元1076,但替换实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存或多个级别的内部缓存。在某些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图11A-11B解说了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核)。这些逻辑块通过高带宽的互连网络(例如,环形网络)与某些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信,这取决于应用。
图11A是根据本发明的各实施例的单个处理器核连同它与管芯上互连网络1102的连接以及其二级(L2)高速缓存1104的本地子集的框图。在一个实施例中,指令解码器1100支持具有打包数据指令集合扩展的x86指令集。L1高速缓存1106允许对标量和向量单元中的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元1108和向量单元1110使用分开的寄存器集合(分别为标量寄存器1112和向量寄存器1114),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(L1)高速缓存1106写回,但是本发明的替换实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器文件之间传输而无需被写入和读回的通信路径)。
L2高速缓存1104的本地子集是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的L2高速缓存1104的本地子集的直接访问路径。被处理器核读出的数据被存储在其L2高速缓存子集1104中,并且可以被快速访问,该访问与其他处理器核访问其自己的本地L2高速缓存子集并行。被处理器核写入的数据被存储在其子集的L2高速缓存子集1104中,并在必要的情况下从其它子集刷新。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012比特宽。
图11B是根据本发明的各实施例的图11A中的处理器核的一部分的展开图。图11B包括作为L1高速缓存1104的L1数据高速缓存1106A部分,以及关于向量单元1110和向量寄存器1114的更多细节。具体地说,向量单元1110是16宽向量处理单元(VPU)(见16宽ALU1128),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元1120支持对寄存器输入的混合、通过数值转换单元1,122A-B支持数值转换,并通过复制单元1124支持对存储器输入的复制。写掩码寄存器1126允许预测所得的向量写入。
具有集成存储器控制器和图形的处理器
图12是根据本发明的各实施例可能具有一个以上核、可能具有集成存储器控制器、以及可能具有集成图形的处理器1200的框图。图12中的实线框解说具有单个核1202A、系统代理1210、一个或多个总线控制器单元1216的集合的处理器1200,而虚线框中的可选附加项解说具有多个核1202A-N、系统代理单元1210中的一个或多个集成存储器控制器单元1214的集合以及专用逻辑1208的替换处理器1200。
因此,处理器1200的不同实现可包括:1)CPU,其中专用逻辑1208是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1202A-N是一个或多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器,其中核1202A-N是主要预期用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1202A-N是大量通用有序核。因此,处理器1200可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个管芯上。处理器1200可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将其实现在一个或多个衬底上。
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元1206的集合、以及耦合至集成存储器控制器单元1214的集合的外部存储器(未示出)。该共享高速缓存单元1206的集合可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环的互连单元1212将集成图形逻辑1208、共享高速缓存单元1206的集合以及系统代理单元1210/集成存储器控制器单元1214互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个高速缓存单元1206和核1202A-N之间的一致性(coherency)。
在某些实施例中,核1202A-N中的一个或多个核能够多线程化。系统代理1210包括协调和操作核1202A-N的那些组件。系统代理单元1210可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调整核1202A-N和集成图形逻辑1208的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1202A-N在架构指令集合方面可以是同构的或异构的;即,这些核1202A-N中的两个或更多个核可能能够执行相同的指令集合,而其他核可能能够执行该指令集合的仅仅子集或不同的指令集合。
示例性计算机架构
图13-16是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般来说,能够纳入本文中所公开的处理器和/或其它执行逻辑的大量系统和电子设备一般都是合适的。
现在参见图13,所示为根据本发明的一个实施例的系统1300的框图。系统1300可以包括一个或多个处理器1310、1315,这些处理器耦合到控制器中枢1320。在一个实施例中,控制器中枢1320包括图形存储器控制器中枢(GMCH)1390和输入/输出中枢(IOH)1350(其可以在分开的芯片上);GMCH1390包括存储器1340和协处理器1345耦合到的存储器和图形控制器;IOH1350将输入/输出(I/O)设备1360耦合到GMCH1390。或者,存储器和图形控制器中的一个或两者可以被集成在处理器中(如本文中所描述的),存储器1340和协处理器1345被直接耦合到处理器1310以及在具有IOH1350的单个芯片中的控制器中枢1320。
附加处理器1315的可选性质用虚线表示在图13中。每一处理器1310、1315可包括本文中描述的处理核中的一个或多个,并且可以是处理器1200的某一版本。
存储器1340可以是例如动态随机存取存储器(DRAM)、相变化存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1320经由诸如前侧总线(FSB)的多站总线、诸如快速路径互连(SPI)的点对点接口、或类似的连接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包括点对点接口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,总线桥1416将第一总线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)1472和1482。因此,CL1472、1482包括集成存储器控制器单元并包括I/O控制逻辑。图15不仅解说了耦合至CL1472、1482的存储器1432、1434,而且还解说了同样耦合至控制逻辑1472、1482的I/O设备1514。旧有I/O设备1515被耦合至芯片集1490。
现在参考图16,所示为根据本发明的一实施例的SoC1600的框图。在图12中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图16中,互连单元1602被耦合至:应用处理器1610,该应用处理器包括一个或多个核202A-N的集合以及共享高速缓存单元1206;系统代理单元1210;总线控制器单元1216;集成存储器控制器单元1214;一个或多个协处理器1620的集合,该集合可包括集成图形逻辑1214、图形处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1630;直接存储器存取(DMA)单元1632;以及用于耦合至一个或多个外部显示器的显示单元1640。在一个实施例中,协处理器1620包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现手法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如图14中解说的代码1430)应用于输入指令,以执行本文描述的各功能并生成输出信息。输出信息可以按已知方式被应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。程序代码也可以在需要的情况下用汇编语言或机器语言来实现。事实上,本文中描述的机制不仅限于任何特定编程语言的范围。在任一情形下,语言可以是编译语言或译码语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该指令表示处理器中的各种逻辑,其在被机器读取时使得该机器生成执行本文描述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品的非瞬态、有形安排,其包括存储介质,诸如硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)的以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变化存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态、有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特性。这些实施例也被称为程序产品。
模拟(包括二进制变换、代码变形等)
在某些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态汇编的动态二进制变换)、变形、模拟或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上部分在处理器外。
图17是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代该指令转换器可以用软件、固件、硬件或其各种组合来实现。图17示出了用高级语言1702的程序可以使用x86编译器1704来编译,以生成可以由至少一个x86指令集核1716的处理器在本机执行的x86二进制代码1706。具有至少一个x86指令集核1716的处理器表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)被定向为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它程序的对象代码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1704表示用于生成x86二进制代码1706(例如,对象代码)的编译器,该二进制代码1706可通过或不通过附加的关联处理在具有至少一个x86指令集核1716的处理器上执行。类似地,图17示出用高级语言1702的程序可以使用替代的指令集编译器1708来编译,以生成可以由不具有至少一个x86指令集核1714的处理器(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集,和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)在本机执行的替代指令集二进制代码1710。指令转换器1712被用来将x86二进制代码1706转换成可以由不具有x86指令集核1714的处理器在本机执行的代码。该转换后的代码不大可能与替代指令集二进制代码1710相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器1712通过模拟、仿真或任何其它过程来表示允许不具有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包括任何前述示例的处理器,并且可选地还包括用于在特权级别逻辑和环形级别逻辑之一指示操作系统模式时,迫使解码器使用给定操作码的较新含义而非被弃用含义的逻辑。
示例13是处理器中的方法,该方法包括接收具有给定操作码的第一指令,以及确定给定操作码具有第二含义而非第一含义。该方法还包括响应于确定给定操作码具有第二含义而确定要模拟第一指令。
示例14包括任何前述示例的方法,并且可选地其中确定包括确定给定操作码具有比第一含义老的第二含义,并且其中第二含义处于被弃用的过程中。
示例15包括任何前述示例的方法,并且可选地其中确定包括从存储位置读出给定操作码具有第二含义的指示。
示例16包括任何前述示例的方法,并且可选地还包括将给定操作码具有第二含义的指示存储在处理器的指令集中的处理器特性标识指令可读的处理器特性寄存器中。
示例17包括任何前述示例的方法,并且可选地还包括模拟第一指令,该模拟包括在给定操作码具有第二含义时解码被用来模拟第一指令的一个或多个指令的集合。
示例18包括任何前述示例的方法,并且可选地其中解码指令的集合包括解码与第一指令属于同一指令集的一个或多个指令。
示例19包括任何前述示例的方法,并且可选地在没有使用微代码来实现指令集中的任何指令的处理器中执行。
示例20是包括非瞬态、机器可读存储介质的制品,该介质存储在被机器执行的情况下将导致该机器执行操作的指令。这些操作包括通过检查软件模块的元数据来确定具有给定操作码的第一指令在被处理器从该软件模块执行时将具有第二含义而非第一含义。这些操作还包括将具有给定操作码的第一指令将具有第二含义的指示存储在处理器的状态中。
示例21包括任何前述示例的制品,并且可选地其中机器可读存储介质还存储在被该机器执行时将导致该机器执行包括以下的操作的指令:选择软件库的使用给定操作码的第二含义的一部分,而非软件库的使用给定操作码的第一含义的另一部分,并将给该软件库的所选部分提供给软件模块,其中第二含义是被弃用的含义。
示例22包括任何前述示例的人工制品,并且可选地其中机器可读存储介质还存储在被该机器执行时将导致该机器执行包括以下的操作的指令:基于软件模块的年龄确定给定操作码具有第二含义。
示例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 (25)

1.一种处理器,包括:
用于接收第一指令和用于确定所述第一指令将被模拟的解码逻辑;以及
与所述解码逻辑耦合的模拟模式知晓解码后指令处理器逻辑,所述模拟模式知晓解码后指令处理器逻辑用于在处于模拟模式时与在不处于模拟模式时不同地处理从用于模拟所述第一指令的一个或多个指令的集合中的指令解码出的一个或多个控制信号。
2.如权利要求1所述的处理器,其特征在于,所述第一指令比所述集合中的每一个指令都更复杂,因为所述第一指令涉及被执行的更多操作。
3.如权利要求2所述的处理器,其特征在于,所述处理器不使用微代码来实现指令集中的任何指令。
4.如权利要求1所述的处理器,其特征在于,所述一个或多个指令的集合中的每一指令与所述第一指令属于同一指令集。
5.如权利要求1到4中的任一项所述的处理器,其特征在于,所述模拟模式知晓解码后指令处理器逻辑包括用于将在处理所述一个或多个控制信号时将要发生的异常情况报告给模拟逻辑的模拟模式知晓异常情况处理程序逻辑。
6.如权利要求5所述的处理器,其特征在于,所述模拟模式知晓异常情况处理程序逻辑将把所述第一指令的地址存储在栈中。
7.如权利要求5所述的处理器,其特征在于,所述模拟模式知晓异常情况处理程序逻辑将把对该所述异常情况的指示以及所述异常情况的过错代码存储在与所述模拟逻辑耦合的一个或多个寄存器中。
8.如权利要求5所述的处理器,其特征在于,所述模拟模式知晓异常情况处理程序逻辑将响应于所述异常情况而避免将控制直接转移到异常情况处理程序,并且其中所述模拟逻辑的一个或多个指令将把控制转移到所述异常情况处理程序。
9.如权利要求1到4中的任一项所述的处理器,其特征在于,所述模拟模式知晓解码后指令处理器逻辑包括用于在处于所述模拟模式时与在不处于所述模拟模式时不同地控制通过所述一个或多个控制信号对资源和信息中的至少一个的访问的模拟模式知晓访问控制逻辑。
10.如权利要求9所述的处理器,其特征在于,所述模拟模式知晓访问控制逻辑在处于所述模拟模式时将允许对所述资源和所述信息中的所述至少一个的访问,并且在不处于所述模拟模式时将阻止对所述资源和所述信息中的所述至少一个的访问。
11.如权利要求10所述的处理器,其特征在于,所述资源和所述信息中的所述至少一个包括下列各项中的至少一个:安全逻辑、安全信息、加密逻辑、解密逻辑、随机数生成器逻辑、为操作系统的访问保留的逻辑、为操作系统的访问保留的一部分存储器、以及为操作系统的访问保留的信息。
12.如权利要求10所述的处理器,其特征在于,所述资源和所述信息中的至少一个包括在另一逻辑处理器和另一物理处理器之一中的资源和信息中的至少一个。
13.如权利要求1到4中的任一项所述的处理器,其特征在于,所述一个或多个指令的集合包括至少三个指令。
14.一种在处理器中的方法,包括:
接收第一指令;
确定要模拟所述第一指令;
接收要用来模拟所述第一指令的一个或多个指令的集合;以及
在处于模拟模式时与在不处于所述模拟模式时不同地处理从所述集合的指令中导出的一个或多个控制信号。
15.如权利要求14所述的方法,其特征在于,接收第一指令包括接收与所述一个或多个指令的集合中的每一指令相比更复杂的所述第一指令。
16.如权利要求14所述的方法,其特征在于,接收所述一个或多个指令的集合包括接收各自与所述第一指令属于同一指令集的一个或多个指令。
17.如权利要求14所述的方法,其特征在于,处理包括:
将在处理所述一个或多个控制信号时发生的异常情况报告给模拟逻辑;以及
执行所述模拟逻辑的一个或多个指令以将控制转移到异常情况处理程序。
18.如权利要求17所述的方法,其特征在于,报告包括:
将对所述异常情况的指示存储在一个或多个寄存器中;以及
将所述第一指令的地址存储在栈中。
19.如权利要求14所述的方法,其特征在于,处理包括在处于所述模拟模式时与在不处于所述模拟模式时不同地控制通过所述一个或多个控制信号对资源和信息中的至少一个的访问。
20.如权利要求19所述的方法,其特征在于,不同地控制访问包括:
在处于所述模拟模式时允许对所述资源和所述信息中的所述至少一个的访问;以及
在不处于所述模拟模式时阻止对所述资源和所述信息中的所述至少一个的访问。
21.一种处理指令的系统,包括:
互连;
与所述互连耦合的处理器,所述处理器包括:
用于接收第一指令和用于确定第一指令将被模拟的解码逻辑;以及
与所述解码逻辑耦合的模拟模式知晓解码后指令处理器逻辑,所述模拟模式知晓解码后指令处理器逻辑用于在处于模拟模式时与在不处于模拟模式时不同地处理从用于模拟所述第一指令的一个或多个指令的集合中的指令解码出的一个或多个控制信号;以及
与所述互连耦合的动态随机存取存储器(DRAM)。
22.如权利要求21所述的系统,其特征在于,所述模拟模式知晓解码后指令处理器逻辑包括用于将在处理所述一个或多个控制信号时发生的异常情况报告给模拟逻辑的模拟模式知晓异常情况处理程序逻辑。
23.一种用于执行权利要求14-20中的任一项所述的方法的设备。
24.一种包括用于执行权利要求14-20中的任一项所述的方法的装置的设备。
25.一种系统,该系统包括权利要求1-4中的任一项所述的处理器,以及与所述处理器耦合的动态随机存取存储器。
CN201410098580.2A 2013-03-16 2014-03-17 指令模拟处理器、方法和系统 Active CN104050012B (zh)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
CN104050012A true CN104050012A (zh) 2014-09-17
CN104050012B CN104050012B (zh) 2017-11-28

Family

ID=50634651

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410098580.2A Active CN104050012B (zh) 2013-03-16 2014-03-17 指令模拟处理器、方法和系统

Country Status (6)

Country Link
US (1) US9703562B2 (zh)
JP (1) JP5984865B2 (zh)
KR (1) KR101738212B1 (zh)
CN (1) CN104050012B (zh)
DE (1) DE102014003690A1 (zh)
GB (1) GB2514882B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106796430A (zh) * 2014-10-08 2017-05-31 三菱电机株式会社 监视控制装置用测试装置
CN111881013A (zh) * 2015-11-02 2020-11-03 索尼互动娱乐有限责任公司 以扰乱时序的模式进行的软件向后兼容性测试
CN111881013B (zh) * 2015-11-02 2024-04-23 索尼互动娱乐有限责任公司 以扰乱时序的模式进行的软件向后兼容性测试

Families Citing this family (20)

* 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
US9685219B2 (en) 2015-05-13 2017-06-20 Samsung Electronics Co., Ltd. Semiconductor memory device for deconcentrating refresh commands and system including the same
US9841997B2 (en) * 2015-06-25 2017-12-12 Intel Corporation Method and apparatus for execution mode selection
US9830132B2 (en) * 2015-09-14 2017-11-28 Box, Inc. Incremental user interface deployment and deprecation
US10564967B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Move string processing via inline decode-based micro-operations expansion
US10255068B2 (en) 2017-03-03 2019-04-09 International Business Machines Corporation Dynamically selecting a memory boundary to be used in performing operations
US10620956B2 (en) * 2017-03-03 2020-04-14 International Business Machines Corporation Search string processing via inline decode-based micro-operations expansion
US10789069B2 (en) 2017-03-03 2020-09-29 International Business Machines Corporation Dynamically selecting version of instruction to be executed
US10613862B2 (en) 2017-03-03 2020-04-07 International Business Machines Corporation String sequence operations with arbitrary terminators
US10564965B2 (en) * 2017-03-03 2020-02-18 International Business Machines Corporation Compare string processing via inline decode-based micro-operations expansion
US10324716B2 (en) 2017-03-03 2019-06-18 International Business Machines Corporation Selecting processing based on expected value of selected character
US11669328B2 (en) 2020-12-29 2023-06-06 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for converting instructions
US11803383B2 (en) 2020-12-29 2023-10-31 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11604643B2 (en) * 2020-12-29 2023-03-14 Shanghai Zhaoxin Semiconductor Co., Ltd. System for executing new instructions and method for executing new instructions
US11803381B2 (en) 2020-12-29 2023-10-31 Shanghai Zhaoxin Semiconductor Co., Ltd. Instruction simulation device and method thereof
US11914997B2 (en) 2020-12-29 2024-02-27 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11803387B2 (en) 2020-12-29 2023-10-31 Shanghai Zhaoxin Semiconductor Co., Ltd. System for executing new instructions and method for executing new instructions
US11789736B2 (en) 2020-12-29 2023-10-17 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11625247B2 (en) 2020-12-29 2023-04-11 Shanghai Zhaoxin Semiconductor Co., Ltd. System for executing new instructions and method for executing new instructions

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6745322B1 (en) * 2000-02-18 2004-06-01 Hewlett-Packard Development Company, Lp. Apparatus and method for conditionally flushing a pipeline upon a failure of a test condition
US6799157B1 (en) * 1999-03-23 2004-09-28 Seiko Epson Corporation Method for improving pin compatibility in microcomputer emulation equipment
CN1965558A (zh) * 2004-05-04 2007-05-16 费舍-柔斯芒特系统股份有限公司 用于过程控制系统的面向服务的架构
US20110153307A1 (en) * 2009-12-23 2011-06-23 Sebastian Winkel Transitioning From Source Instruction Set Architecture (ISA) Code To Translated Code In A Partial Emulation Environment

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62165670A (ja) 1986-01-17 1987-07-22 Canon Inc プロセスカートリッジ及び画像形成装置
JP3191263B2 (ja) 1989-12-07 2001-07-23 富士通株式会社 最適オブジェクト選択実行処理装置
JPH04199331A (ja) 1990-11-29 1992-07-20 Hitachi Ltd マイクロコンピュータ
US5781750A (en) 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
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
DE69613586T2 (de) 1995-10-06 2002-04-25 Advanced Micro Devices Inc Befehlsdekoder mit emulation durch indirektspezifizierer
EP0991994A4 (en) 1997-06-25 2001-11-28 Transmeta Corp IMPROVED MICROPROCESSOR
US6289300B1 (en) * 1998-02-06 2001-09-11 Analog Devices, Inc. Integrated circuit with embedded emulator and emulation system for use with such an integrated circuit
JP2000322269A (ja) 1999-05-10 2000-11-24 Nec Software Hokuriku Ltd エミュレーションシステム
US6446197B1 (en) 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6820190B1 (en) 2000-02-02 2004-11-16 Hewlett-Packard Development Company, L.P. Method and computer system for decomposing macroinstructions into microinstructions and forcing the parallel issue of at least two microinstructions
JP3652956B2 (ja) 2000-04-25 2005-05-25 北陸日本電気ソフトウェア株式会社 エミュレーション装置
GB2367651B (en) 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
KR20020028814A (ko) 2000-10-10 2002-04-17 나조미 커뮤니케이션즈, 인코포레이티드 마이크로코드 엔진을 이용한 자바 하드웨어 가속기
US7100023B2 (en) 2001-08-23 2006-08-29 Sony Computer Entertainment Inc. System and method for processing complex computer instructions
US7496494B2 (en) 2002-09-17 2009-02-24 International Business Machines Corporation Method and system for multiprocessor emulation on a multiprocessor host system
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 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、情報処理方法、半導体装置、コンピュータプログラム
US8146106B2 (en) 2007-12-31 2012-03-27 Intel Corporation On-demand emulation via user-level exception handling
US8447962B2 (en) 2009-12-22 2013-05-21 Intel Corporation Gathering and scattering multiple data elements
JP5081034B2 (ja) 2008-03-28 2012-11-21 東レ株式会社 強化繊維成形体の製造装置および製造方法
US8195923B2 (en) 2009-04-07 2012-06-05 Oracle America, Inc. Methods and mechanisms to support multiple features for a number of opcodes
EP2433200B1 (en) 2009-05-21 2020-02-26 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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6799157B1 (en) * 1999-03-23 2004-09-28 Seiko Epson Corporation Method for improving pin compatibility in microcomputer emulation equipment
US6745322B1 (en) * 2000-02-18 2004-06-01 Hewlett-Packard Development Company, Lp. Apparatus and method for conditionally flushing a pipeline upon a failure of a test condition
CN1965558A (zh) * 2004-05-04 2007-05-16 费舍-柔斯芒特系统股份有限公司 用于过程控制系统的面向服务的架构
US20110153307A1 (en) * 2009-12-23 2011-06-23 Sebastian Winkel Transitioning From Source Instruction Set Architecture (ISA) Code To Translated Code In A Partial Emulation Environment
CN102110011A (zh) * 2009-12-23 2011-06-29 英特尔公司 局部仿真环境中从源指令集架构代码向转换后代码的转换

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106796430A (zh) * 2014-10-08 2017-05-31 三菱电机株式会社 监视控制装置用测试装置
CN111881013A (zh) * 2015-11-02 2020-11-03 索尼互动娱乐有限责任公司 以扰乱时序的模式进行的软件向后兼容性测试
US11907105B2 (en) 2015-11-02 2024-02-20 Sony Interactive Entertainment LLC Backward compatibility testing of software in a mode that disrupts timing
CN111881013B (zh) * 2015-11-02 2024-04-23 索尼互动娱乐有限责任公司 以扰乱时序的模式进行的软件向后兼容性测试

Also Published As

Publication number Publication date
KR101738212B1 (ko) 2017-05-19
KR20140113607A (ko) 2014-09-24
GB2514882A (en) 2014-12-10
GB201404410D0 (en) 2014-04-30
GB2514882B (en) 2017-07-12
JP5984865B2 (ja) 2016-09-06
CN104050012B (zh) 2017-11-28
US20140281399A1 (en) 2014-09-18
US9703562B2 (en) 2017-07-11
DE102014003690A1 (de) 2014-09-18
JP2014194770A (ja) 2014-10-09

Similar Documents

Publication Publication Date Title
CN104050012A (zh) 指令模拟处理器、方法和系统
CN104049948B (zh) 指令仿真处理器、方法和系统
CN104951697B (zh) 来自过程指令的返回-目标限制性返回、处理器、方法及系统
CN104954356B (zh) 保护共享的互连以用于虚拟机
CN108351830B (zh) 用于存储器损坏检测的硬件装置和方法
RU2636675C2 (ru) Команды, процессоры, способы и системы доступа множественных регистров к памяти
CN104484284A (zh) 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
CN105453030B (zh) 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统
CN104969199B (zh) 实施黑名单分页结构指示值的处理器、方法,以及系统
CN105224865A (zh) 用于在安全飞地页高速缓存中进行中断和恢复分页的指令和逻辑
TWI715686B (zh) 用於容錯及錯誤偵測之系統、方法和裝置
CN108351839A (zh) 用来挂起/恢复安全飞地页面高速缓存中飞地的迁移的指令和逻辑
CN106708753A (zh) 在使用共享虚拟存储器的处理器中加速操作的装置和方法
CN104025027B (zh) 结构访问处理器、方法、系统和指令
RU2636669C2 (ru) Устройство и способ реверсирования и перестановки битов в регистре маски
CN104205088A (zh) 用于实现页级自动二进制转换的硬件剖析机制
CN104050026A (zh) 使对共享存储器存取的同步松弛的处理器、方法及系统
CN104077107A (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
CN104050415B (zh) 用于系统调用的稳健且高性能的指令
CN104011663A (zh) 掩码寄存器上的广播操作
WO2014105057A1 (en) Instruction to reduce elements in a vector register with strided access pattern
CN104246694A (zh) 聚集页错误信令和处理
TW201804319A (zh) 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令
TW201732569A (zh) 用以監控位址衝突的計數器
US10877765B2 (en) Apparatuses and methods to assign a logical thread to a physical thread

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