在协同设计的处理器中创建隔离执行环境的制作方法

文档序号:6540114阅读:144来源:国知局
在协同设计的处理器中创建隔离执行环境的制作方法
【专利摘要】在一实施例中,一种处理器包括具有生成第一代码段的二进制转换并将该二进制转换储存在转换高速缓存中的代码的二进制转换(BT)容器、用于管理BT容器并标识第一代码段的主机实体逻辑、以及用于将BT容器与软件栈隔离的保护逻辑。以此方式,BT容器被配置成对软件栈而言是透明的。描述并要求保护其他实施例。
【专利说明】在协同设计的处理器中创建隔离执行环境

【技术领域】
[0001]本发明涉及协同设计的处理器。

【背景技术】
[0002]现代微处理器是大多数计算机系统的心脏。一般而言,这些处理器通过接收指令并响应于这些指令而执行各操作来运作。对于应用程序和操作系统(OS)活动而言,指令可在处理器中接收,处理器随后将这些指令解码成适于在处理器硬件上执行的一个或多个较小操作,这些较小操作通常称为微指令(uop)。一些处理器缺少直接执行某些指令集架构(ISA)指令的硬件特征。出于这一原因,指令被解码成可直接在硬件上执行的诸个uop。解码到uop允许处理器并行且无序地调度和执行,从而帮助提高性能。但这一机制在许多情况下可能是不足的。

【专利附图】

【附图说明】
[0003]图1是根据本发明实施例的系统的一部分的框图。
[0004]图2是根据本发明的另一实施例的协同设计的处理器的框图。
[0005]图3是根据本发明的实施例的用于执行二进制转换的方法的流程图。
[0006]图4是根据本发明的实施例的用于执行到经转换的代码的低开销转移的方法的流程图。
[0007]图5是根据本发明的一个实施例的包括处理器和存储器的协同设计的环境的框图。
[0008]图6是根据本发明的实施例的系统的框图。

【具体实施方式】
[0009]在各实施例中,提供了协同设计的处理器架构框架以使二进制转换软件保持对固件层之上的软件栈的隐藏。这一软件栈包括虚拟机监视器(VMM)、操作系统(OS)、以及在处理器的一个或多个核上执行的应用程序。以此方式,各实施例可以避免对固件之上的软件栈的任何层的修改。如此,这一栈可以从动态二进制优化和指令集架构(ISA)仿真系统中获益。即使提供了这一架构框架来对VMM、OS以及各应用程序而言透明地执行BT软件,它也可被用来运行协同设计的处理器的不同类型的软件组件并启用不同类型的用途。例如,这一框架可被用来执行要在隐藏环境(例如,对VMM/0S层隐藏)中运行的任何软件(例如,病毒扫描软件)。这一隐藏环境是相对于VMM、0S以及各应用程序而言隔离的、独立的、以及受保护的执行环境。
[0010]通过二进制转换,硬件/软件协同设计的处理器启用通过隐藏二进制转换(BT)软件的动态二进制优化和转换。它能以功率高效的方式来产生提高的性能,并且还通过二进制转换启用新ISA扩展。在标准ISA被称为源ISA的协同设计的处理器中,例如,存在X86ISA。常规软件,包括OS和应用程序两者,被编译到源ISA。进而,协同设计的处理器的硬件实现针对具有特殊性能和/或能效特征的给定硬件实现来特别设计的目标ISA。目标ISA与uop处于同一层,并且可以与该组uop相同。
[0011]属于该协同设计的处理器的仿真软件通过对应用程序/OS进行译码或通过将应用程序/OS直接转换成经优化的目标指令序列来将应用程序/OS的执行定向到源ISA软件。这样的转换保证了性能增益和/或提高能效。
[0012]仿真过程通常如下进行。译码被用于首次遇到的代码(源ISA指令)。随后,在通过动态概况分析或某一其他手段发现了频繁执行的代码区(热点)时,它们被转换成目标ISA。优化通常作为转换过程的一部分而被完成;非常频繁使用的代码可在稍后被进一步优化。经转换的代码区被保存在转换高速缓存中,因此它们可被重复使用。转换高速缓存由仿真软件来管理并且被保存在对所有应用程序/OS软件隐藏的存储器扇区中。应用程序/OS软件被保存在常规(可见)存储器中。
[0013]采用协同设计VM的先前处理器实现使用完全仿真,其中仿真软件对所有应用程序/OS软件进行仿真。完全仿真的一个缺点是在可被执行之前所有代码必须首先被译码和/或转换,并且这在软件区被首次遇到时可导致低性能。
[0014]各实施例可以使用硬件和基于处理器固件的机制来创建隔离且隐藏的虚拟机执行环境,在此称为二进制转换(BT)容器。这一容器可被用来执行BT软件,以实现部分转换或完全ISA仿真模型。在一实施例中,BT容器本质上是由处理器固件直接控制的虚拟机环境的特殊(且在一些实施例中是简化的)版本。在各实施例中,该容器被设计成对包括VMM、操作系统以及应用程序的软件栈而言是隐藏且透明的。
[0015]在操作期间,BT容器与各种组件和机制进行交互。首先,处理器包括用于管理BT容器的主机实体。在不同的实施例中,这一实体可以由处理器硬件扩展和固件(例如,微代码层或处理器抽象层)的组合来实现。如将在此描述的,主机实体控制进入和退出BT容器以及暴露给在BT容器内运行的软件的ISA。
[0016]BT容器环境包括BT软件的处理器状态以及保存BT软件的代码和数据的私有存储器空间。BT软件在这一 BT容器内执行并且实现用于执行优化和ISA兼容性操作的一个或多个二进制转换算法。
[0017]各实施例可以提供被用来保护BT容器存储器免受软件(VMM、OS以及应用程序)和硬件攻击者攻击的基于硬件的保护机制。在一个实施例中,这一保护机制可以用基于存储器范围寄存器的保护、存储器加密硬件等来实现,在不同的实现中,所提供的保护等级可以基于所使用的特征以及所需的安全目标。
[0018]BT硬件单元被提供来实现对协同设计的处理器的硬件支持。在一实施例中,这一单元包括硬件支持,硬件支持用于检测其他事件中的调用BT容器的事件,检测包括热点检测、自修改代码检测等,其他事件诸如处理器间中断(IPI)事件、功率管理事件、可靠性可用性可服务性(RAS)事件、以及其他。更一般地,这些事件可以受到来自BT软件的立即注意。例如,一个事件可以是定义为在多个处理器上运行的BT软件之间进行同步的私有IPI机制。
[0019]为了启用转入/转出BT容器以及容器内的各种操作,可以提供BT ISA扩展。在一实施例中,这些ISA扩展对在BT容器内运行的BT软件而言是可独占使用的。出于示例的目的,这些ISA扩展允许BT软件访问并编程BT硬件单元,与主机实体进行通信来配置容器策略并访问原始代码存储器空间以用于二进制转换。
[0020]在一实施例中,转换高速缓存可被提供以存储经转换的代码。在一实施例中,到经转换的代码执行的转变受BT硬件单元所提供的转换进入机制所管控。BT容器环境(包括其私有处理器状态和私有存储器空间)可以与其他软件(VMM、操作系统以及应用程序)隔离并对这些软件隐藏。
[0021]BT容器资源可以由主机实体在系统引导期间分配并创建。正是在此时,硬件保护机制可由主机实体编程并管理。
[0022]为了对OS和VMM透明,对BT容器中的BT软件的调用和退出由主机实体直接控制。在一个实施例中,调用和退出操作是用硬件和微代码的组合来实现的。在另一实施例中,处理器固件可被用来执行这些操作。
[0023]作为一个控制转移操作,在BT硬件单元检测到BT调用事件(如热点)时,处理器停止客户客户软件栈的执行并向主机实体通知该事件。随后,主机实体将处理器上下文的当前状态保存在临时状态存储区域中,切换到BT容器上下文(这可被存储在BT容器内的BT存储区域中)并从所定义的入口指令指针开始BT软件的执行。一旦BT软件获得了控制,它就执行,直至在特殊退出指令(这可以是暴露给BT容器的BT ISA扩展)的情况下发生主动退出或者由主机实体在某些硬件事件(如外部中断、内部定时器中断,等等)时实施非主动退出。这样的内部定时器中断实际上是允许BT软件将长延时操作进行时间分片的超时事件,这些事件对VMM和OS隐藏。
[0024]透明度也可通过很好地控制和管理暴露给软件栈的BT软件延时以满足这一栈的向前进展要求来实现。例如,在BT软件花费高达I毫秒(ms)来完成所标识的热点的转换任务时,主机实体可以向BT软件提供减轻并控制暴露给该软件的延时的机制。在一实施例中,这些机制包括:1)在外部中断时BT软件的抢先(非主动退出)以最小化暴露给OS中断句柄的延时;2)使用一个或多个内部定时器来启用BT软件的时间量化管理(时间片调度)以满足底层程序执行的最小向前进展要求;以及3)向一个或多个空闲核调度长延时BT任务以隐藏BT软件延时。这些机制可由主机实体预配置或通过暴露给BT软件的BTISA扩展来动态配置。
[0025]使得隔离的容器来运行BT软件还允许主机实体控制暴露给BT容器的ISA特征以及各特权,如给予在BT容器内运行的BT软件的存储器和处理器资源访问许可。例如,主机实体可以在ISA特征的子集(例如,没有浮点ISA指令)足以执行给定二进制转换任务的情况下限制并控制暴露给BT软件的ISA特征。这样的控制可有助于简化容器环境并降低本机与BT容器执行之间的上下文切换时间。
[0026]不同于被提供来运行系统管理程序或VMM的监控模式,BT容器被给予适于操作的最小特权和优先级,因此即使ISA特征的一部分是通过BT软件来实现的,这也显著地降低了安全风险和系统影响,如暴露给操作系统的延时。在一实施例中,主机实体可以限制并控制BT软件的ISA特征和特权,如花费在BT执行上的系统ISA特征和时间,从而约束BT容器只能访问出于它的合法目的操作所需要的信息、资源、指令以及时间量。
[0027]例如,BT软件可被暴露为只具有用户级(例如,环3) ISA访问,如果这一暴露足以执行二进制转换任务的话。在部分转换模型中执行的仿真是出于用户级应用程序的目的的情况下,这样的访问暴露可以是适当的。此外,对于BT容器存储器外部的存储器引用可被限制为仅仅针对应用软件的指令页。同样,只向BT软件给予读许可,如果这一许可足以供BT软件只向二进制转换任务的话。BT软件的客户处理器状态访问可被限于足够用于二进制转换任务的客户处理器状态子集。换言之,只有转换所需的客户状态才对BT软件可用,使得没有对处理器资源的访问不被BT软件使用。在一实施例中,主机实体还可以阻止BT软件访问客户内核(例如,环O)存储器,如果二进制转换只针对应用(B卩,用户)软件代码执行的话。这一控制使得BT软件能够在足以操作的最小可能的特权和特征的情况下运行,这可有助于在更简单的系统影响、改变以及测试要求的范围下提高稳健性并降低HW/SW协同设计的处理器的安全风险并允许更好的系统安全性。
[0028]使用本发明的实施例,部分转换模型可被实现在处理器的一个或多个核上。以此方式,ISA可被虚拟化以启用多个BT使用并提供每瓦特(per watt)上的更高性能。一个这样的示例使用BT机制来在向量核中执行向量范围操作,该向量核具有针对非向量宽度或较小向量宽度硬件所编写的代码。以此方式,BT机制可以转换软件来使用较宽向量寄存器,即使该原始软件被编写成在较窄的前代向量寄存器或非向量寄存器上使用。在特定示例中,使用Intel? ISA的流SMD扩展(SSE)指令的软件被转换以改为使用Intel? ISA高级向量扩展(AVX)指令。另外,通过经由在此描述的BT机制来提供ISA特征扩展,可以用较小的核尺寸来实现ISA兼容性,而并非包括用于执行该特征的附加专用硬件。例如,较小核可不具有AVX支持并且可只具有SSE支持。BT可以将使用AVX指令的软件进行转换以改为使用SSE指令。这提供了 ISA兼容性并且填补了较小核的ISA空白。
[0029]如在此描述的,虽然这一 HW和SW协同设计的框架可被用于BT,但它可被用于启用其他使用模型以提高处理器特征和价值,如性能、功率管理和ISA扩展/仿真,而不改变现有 0S/VMM。
[0030]注意,在一些实施例中,诸如系统管理模式(SMM)之类的平台固件组件可位于BT容器和BT软件的可信边界内部,以与服务器可靠性/可用性/可服务性(RAS)特征共存。然而,在其他实施例中,这样的组件可位于可信边界外部,其中某些HW扩展(如基于HW的存储器加密和完整性检查)改进对针对HW和SW协同设计的处理器的软件组件的SMM代码和HW攻击的恢复力。
[0031]现在参考图1,所示是根据本发明的实施例的系统的一部分的框图。如图1所示,系统100的该部分包括协同设计的处理器110及其与软件栈190的交互。尽管许多不同类型的处理器设计可被用作该协同设计的处理器的基线,但在一实施例中,处理器110可以是包括多个处理器核的多核处理器,这些处理器核可以是一组同构核或一组异构核,如一个或多个低功率核和一个或多个较高功率核。另外,将理解,可存在附加处理单元,如图形处理器和其他专用处理单元。在一实施例中,处理器110可针对特定类型的ISA来配置,如Intel? 64ISA。当然,可改为存在其他处理器ISA,如另一 Intel ISA(例如,Intel? 32 ISA)或另一类型的ISA (如基于ARM的ISA)。或者,处理器可配备多个ISA。
[0032]在图1所示的实施例中,各核和其他执行逻辑一般可存在于处理器硬件120中。出于根据本发明的一实施例执行二进制转换的目的,硬件120包括主机实体逻辑122、保护逻辑124、以及BT硬件单元126。在各实施例中,这些不同的逻辑单元可被形成为硬件集合和/或处理器固件扩展,如被配置成在可编程逻辑上执行的处理器微代码。
[0033]一般而言,主机实体逻辑122可包括用于按对软件栈190透明的方式来管理BT容器的控制逻辑。保护逻辑124进而可包括基于寄存器的保护机制,如范围寄存器,范围寄存器存储范围值(例如第一值和第二值)以指示被指定给BT容器以及其中的软件的存储器范围,这因而被控制来保持对软件栈的隐藏。在其他实施例中,多个寄存器可存在与这一保护逻辑内,包括基寄存器,基寄存器存储对应于BT容器的受保护区域的开头的基值以及指示该受保护区域的结束的结束值。在一实施例中,BT硬件单元126可包括启用本机代码执行和BT容器130内的二进制转换执行之间的控制转移的定向逻辑。在一个这样的实施例中,定向逻辑可包括或可以关联于包含多个条目的一个或多个映射表,每一条目将本机代码段与对应的二进制转换相关联。例如,每一条目可包括本机代码段的入口点和二进制转换的对应入口点,例如储存在转换高速缓存140中。
[0034]如在图1中可进一步看到的,处理器硬件120与BT容器130对接。这一容器是隔离且隐藏的虚拟机执行环境,并且因而对软件栈190而言是透明的。这一隐藏的环境可由硬件120使用处理器固件和/或微代码按对软件栈190透明的方式来控制。在所示实施例中,容器130包括状态存储132和私有存储器134。一般而言,状态存储132可以储存处理器状态以在BT操作期间使用。更具体地,这一状态存储可以储存所有处理器状态信息的副本,包括状态和配置寄存器、通用寄存器等等。在一些实施例中,这一状态存储可以是多线程的。另外,BT容器130包括私有存储器134,BT软件可被储存在该私有存储器内。在一些实施例中,这一私有存储器可以是多级分层结构,包括处理器的一级或多级高速缓存存储器中的临时存储以及系统存储器中的存储。
[0035]一般而言,BT软件可包括各组件,这些组件中的若干组件在图1中示出。一般而言,BT软件可包括被用来执行二进制转换以启用各ISA控制的优化和/或仿真的转换器135。另外,运行时层136在运行时期间被用于执行经转换的代码。此外,系统层138可被配置成担当BT容器130与底层处理器硬件120之间的接口。
[0036]BT软件所生成的二进制转换被储存在转换高速缓存140中。在各实施例中,BT硬件单元126和/或BT软件可被配置成标识存在与要执行的本机代码相对应的二进制转换,并且因而造成处理器的适当配置以使用从BT容器130内的状态存储132获得的处理器状态来执行该二进制转换。
[0037]仍然参考图1,软件栈190存在并且在处理器110上执行。一般而言,软件栈190包括VMM层192、OS层194以及应用层195。在图1所示的示例中,多个应用程序196a_196n可存在于应用层195内。一般而言,这些应用程序可以是被用来执行用户所请求的任务的用户级应用程序。
[0038]一般而言,软件栈190的各软件可在处理器120上本机地执行。然而,该代码的至少某些部分(如热代码或诸如包括处理器I1的本机ISA不支持的指令的代码等其他代码)可从二进制转换中获益。这样的代码可例如经由主机实体逻辑122被检测到,主机实体逻辑122进而可触发BT容器130来执行二进制转换并在转换高速缓存140中安装该二进制转换。如此,在遇到已被转换的本机代码部分的入口点时,处理器硬件120的至少一部分(例如,单个核、核的执行,等等)可被用状态存储132中存在的处理器状态来配置以启用转换高速缓存140内的经转换的代码的执行。虽然在图1的实施例中以这一高级框图示出,但应理解本发明的范围不限于此方面。
[0039]现在参考图2,所示是根据本发明的另一个实施例的协同设计的处理器的框图。如图2所示,处理器200是多核处理器。更具体地,处理器200可以是包括不同类型的处理单元的非对称多处理器。在图2所示的实施例中,处理器200包括可被配置为大型核的第一多个核ZlOciHOn (统称为核210)。就“大型核”而言,它意味着这些核可被配置成完全支持给定ISA。例如,这些核可以支持给定丨ntel? ISA,包括诸如对于高级向量扩展(AVX)指令的向量支持。因而,大型核内的执行单元中的一个或多个的数据路径可以是给定向量宽度,例如128位、256位、512位或另一向量宽度。考虑到相对宽的向量数据路径,大型核在执行期间,至少在向量指令的执行期间,消耗相对高的功率量是可能的。
[0040]虽然许多应用利用这些向量指令,但其他类型的应用可能没有利用这些指令,并且因而可能没有从大型核210的较大功耗中获益。为此,处理器200还包括多个小型核2120-212n (统称为核212)。术语“小型核”意味着这些核(它们可与大型核是异构设计)可具有较低功耗。例如,这些小型核可以支持不同的ISA或只支持大型核的ISA的子集。例如,小型核212可以不提供对诸如AVX指令等向量指令的支持。以此方式,小型核的一个或多个执行单元的数据路径可以具有比大型核210的执行单元的数据路径更小的宽度。
[0041]除了各类型的核之外,处理器200内可存在附加处理单元。在图2所示的实施例中,可提供多个图形引擎214-214#这些图形引擎可以是可被用来执行图形处理的图形处理单元(GPU)。然而,要理解,也可在这些图形引擎上执行附加/不同的处理。例如,通用指令可在通用图形处理单元(GPGPU)模型中执行。处理器200内可存在其他一些处理单元(为易于解说图2起见未示出)。
[0042]仍然参考图2,各核和其他处理单元耦合到共享的高速缓存存储器215,在一实施例中,共享的高速缓存存储器可以是末级高速缓存(LLC)。在一些实施例中,这一高速缓存存储器可以是具有与这些核/图形引擎中的每一个相关联的一个或多个排(bank)的分布式高速缓存存储器。
[0043]为了实现动态二进制操作,处理器200还包括用于控制并执行二进制转换的各硬件。在图2所示的实施例中,处理器200包括耦合到二进制转换容器225的二进制转换控制逻辑220。进而,二进制转换容器225耦合到转换高速缓存228。
[0044]一般而言,BT控制逻辑220可被配置成直接控制到在BT容器225内执行的BT软件内的调用以及从BT软件的退出。例如,BT控制逻辑220可被配置成标识适用于二进制转换的代码段,例如以有助于优化或其他仿真特征。因而,BT控制逻辑220可以指令BT容器225内的BT软件生成给定代码段的二进制转换并使得BT软件将所得的二进制转换存储在转换高速缓存228内。另外,BT控制逻辑220可以对定向逻辑(或其他处理器逻辑)编程以在遇到其二进制转换可用的代码段的入口点时启用到二进制转换的控制转移。在一实施例中,这一编程可包括将使本机代码段与所改动的(instrumented)代码段相关联的条目写入映射表。
[0045]动态二进制转换可针对各种情况来执行,如用于代码优化和ISA仿真。一个特定情况是出于执行具有核不支持的一个或多个指令的代码的目的。例如,如上所述,在一个实施例中,小型核212可以不提供对向量指令的支持。然而,在有限数量的向量指令出现在代码段中时,考虑到小型核与大型核相比的功耗优点,使这一代码段在小型核上执行是合乎需要的。因而,BT控制逻辑220可以使得BT软件生成具有例如少量向量指令的代码段的二进制转换,以启用这些向量指令的仿真来在给定小型核212上执行。
[0046]仍然参考图2,处理器200还包括包含系统代理电路230的附加电路,系统代理电路可以提供整体监控功能,如经由功率控制单元(P⑶)232对处理器的功率控制。另外,集成存储器控制器234提供到诸如动态随机存取存储器(DRAM)等系统存储器的接口。系统代理230还可包括一个或多个接口 236以允许对接到系统的其他代理,如多处理器系统的其他处理器、外围控制器以及其他系统组件。虽然在图2的实施例中以这一高级框图示出,但应理解本发明的范围不限于此方面。
[0047]现在参考图3,所示是根据本发明的实施例的方法的流程图。在图3的总体方法300可由处理器的各逻辑的组合来执行,以生成经转换的代码并配置该处理器以在执行期间作出对对应本机代码(已为该对应本机代码生成了该经二进制转换的代码)的调用时启用到这一经转换的代码的控制转移。
[0048]在图3中,方法300通过对代码执行进行概况分析以标识一个或多个关键代码段来开始(框310)。在此所描述的示例中,对代码的这一概况分析可被执行以标识热点代码、自修改代码、要被仿真的代码(例如,针对给定核所不支持的ISA指令,其中该ISA指令在该给定核上执行),等等。
[0049]仍然参考图3,在执行进行并且执行了概况分析之后,与所标识的代码段(例如,热点代码、自修改代码、或要仿真的代码)有关的信息可被提供给二进制转换代理(框320)作为示例,这一二进制转换代理可以是在此描述的二进制转换引擎。控制接着传递到框330,在此,所操纵的代码段可根据该代码段来生成并被储存在操纵高速缓存中。作为示例,所改动的代码的生成可包括:针对给定核或处理器的其他处理单元所不支持的一个或多个指令进行仿真的一个或多个仿真例程。以此方式,所改动的代码提供仿真功能以使得被仿真的代码能够以较低成本(例如,在较低功耗的核上)来执行。在一实施例中,可以作出时间检查以确保在该转换生成期间OS和应用代码的向前进展预期。如果这样的事件发生,则控制回到本机代码执行。下一个热点事件将处理器带回转换生成栈。
[0050]继续参考图3,控制接着传递到框340,在此,处理器的定向逻辑可被编程以指向这一所改动的代码段。即,诸如BT硬件单元等定向逻辑可包括要用标识本机代码段(即,所标识的关键代码段)与要取代该本机代码段来执行的所改动的代码段之间的对应关系的条目来更新的一个或多个映射表。这一编程因而可使得该逻辑能够在遇到新的被转换的本机代码的入口点时,实现执行的从本机代码到所改动的代码的转移或定向。尽管在图3的实施例中示出该高级图,但是应理解本发明的范围在这方面不受限制。
[0051]现在参见图4,所示为根据本发明一实施例的用于执行到经转换的代码的低开销转移的方法的流程图。图4的方法400可由处理器的各逻辑来执行,包括BT控制逻辑和其他处理器逻辑。如可看到的,方法400可在菱形框410开始,确定是否遇到第一代码段的入口点。在一实施例中,这一入口点可以是对已对其实现了二进制转换的代码段的第一指令的调用。如果没有接收到这样的调用,则典型的代码执行可在框420处继续。否则,在接收到对这样的代码的调用时,控制传递到框430,在此,定向逻辑被启用以将控制转移到所改动的代码段。在一个实施例中,控制转移的这一启用可通过访问映射表来实现,该映射表将本机代码段入口点与经转换的代码段入口点进行关联。
[0052]为了启用二进制转换的执行,控制传递到框440,在此,储存在处理器中的本机上下文和二进制转换上下文之间的交换发生。在一实施例中,该交换可包括将处理器的状态保存到处理器状态存储并将来自BT容器内的BT状态存储的BT处理器状态加载到该处理器的各寄存器,包括配置和状态寄存器、通用寄存器,等等。控制接着传递到框450,在此,所改动的代码段可被执行以对不支持的特征进行仿真。
[0053]在执行期间发生异常或外部中断是可能的,如在菱形框460处所确定的。如果没有发生这样的事件,则所改动的代码段可完成执行(在框480处)。并且相应地,在框420处,可发生本机代码的继续执行。
[0054]否则,如果发生了这样的事件,则控制传递到框470。在框470,另一上下文切换可发生以使得本机状态能被重新加载到处理器中。随后,控制传递到框480,在此,本机代码可以执行以处理该中断或异常。随后,如果要完成二进制转换的附加工作,则控制传递回到上述框430以继续执行二进制转换。尽管在图4的实施例中示出该高级图,但是应理解本发明的范围在这方面不受限制。
[0055]为了解说根据本发明的一实施例的被实现成协同设计的虚拟机的处理器的各组件,对图5进行了参考。如图5所示,协同设计的环境600包括处理器605和存储器620,在一个实施例中,存储器620可以是系统存储器,如动态随机存取存储器(DRAM)。如可看到的,处理器605可具有给定微架构并且可通过例如点对点互连、总线或其他这样的方式来耦合到存储器620。在存储器620的可见部分(即,第一部分630)中,可以储存一个或多个操作系统635和应用程序638。这一部分被称为“可见”的,是因为它对用户级代码(即,应用程序638)而言是可见的并且对OS (0S635和程序638两者)是可见的。取决于要在这些程序中执行的指令的类型,通信可以与处理器605直接进行,例如通过使用处理器中存在的指令解码器来处理这些指令。
[0056]或者,对于可使用经转换的代码来优化的各代码序列或对于其中没有提供微架构支持的序列,各实施例可以使用存储器的隐藏部分(即,第二部分640)来向处理器提供经转换的代码。具体而言,如可看到的,0S635和应用程序638两者都可与BT引擎645通信,BT引擎645可包括运行时执行单元,包括译码、转换以及优化机制。注意到,隐藏的存储器640对OS或应用程序而言不是可见的或可访问的。BT引擎645因而可以向转换高速缓存648提供代码和地址信息,转换高速缓存648可包括可被提供给处理器605以供执行的经转换的代码。在一个实施例中,转换高速缓存648中存储的代码可被加密。这一经转换的代码可针对处理器的底层微架构来编写和优化,例如目标ISA代码。
[0057]如可看到的,处理器605可以是协同设计的处理器,它包括前端单元,如可直接从OS或应用程序接收指令的指令取出器606。这些指令可以是宏指令(例如与应用程序的用户级指令相对应),这些指令可被使用解码器607来解码,解码器607可用于解码该指令并访问对应的uop,例如存在于处理器605的微代码存储中。进而,解码器607可以将uop提供给一个或多个执行单元608,执行单元608可包括各算术逻辑单元(ALU)、专用硬件、以及其他类型的计算单元。来自这些指令的结果可被提供给回收单元609,回收单元609用于回收指令以按程序次序将结果存储到处理器的架构状态,如果没有发生故障或异常的话。尽管被描述为有序机器,但各实施例可以等同地使用无序机器来实现。
[0058]各实施例可被实现在许多不同的系统类型中。现在参见图6,所示为根据本发明一个实施例的系统的框图。如图6所示,多处理器系统700是点对点互连系统,并包括经由点对点互连750耦合的第一处理器770和第二处理器780。如图6所示,处理器770和780中的每一个可以是多核处理器,包括第一和第二处理器核(即,处理器核774a和774b以及处理器核784a和784b),但处理器中也可能存在更多核。处理器中的每一个可包括创建并管理BT容器的逻辑,如在此描述的。
[0059]仍然参考图6,第一处理器770还包括存储器控制器中枢(MCH) 772和点对点(P-P)接口 776和778。类似地,第二处理器780包括MCH782和P-P接口 786及788。如图6所示,MCH772和782将各处理器耦合至相应的存储器,即存储器732和存储器734,这些存储器可以是本地附连至相应处理器的系统存储器的一部分。第一处理器770和第二处理器780可以分别经由P-P互连752和754耦合到芯片组790。如图6所示,芯片组790包括 P-P 接口 794 和 798。
[0060]此外,芯片组790包括用于通过P-P互连739将芯片组790与高性能图形引擎738进行耦合的接口 792。进而,芯片组790可经由接口 796耦合至第一总线716。如图6所示,各种输入输出(I/O)设备714可连同总线桥718耦合至第一总线716,该总线桥718将第一总线716耦合至第二总线720。在一个实施例中,各种设备可耦合到第二总线720,包括例如键盘/鼠标722、通信设备726以及数据存储单元728,如可包括代码730的盘驱动器或其他大容量存储设备。此外,音频1/0724可耦合至第二总线720。各实施例可被合并到其他类型的系统中,包括诸如智能蜂窝电话、平板计算机、上网本等移动设备。
[0061]以下示例属于进一步的实施例。
[0062]在一个示例中,一种处理器包括用于执行第一指令集架构(ISA)的指令的第一核、用于执行第二 ISA的指令的第二核、以及用于对软件栈而言由处理器透明地控制的二进制转换容器,该第二核与第一核不对称,该二进制转换容器包括二进制转换引擎用于接收代码段、生成该代码段的二进制转换、以及将该二进制转换储存在转换高速缓存中,该二进制转换包括用于对第二 ISA中不可用的第一 ISA的指令进行仿真的至少一个仿真例程,其中第二核用于执行该二进制转换。
[0063]在一示例中,所述至少一个仿真例程用于启用第二核执行指令以对第一向量操作数执行操作,其中第二核的数据路径的宽度小于该第一向量操作数的宽度。
[0064]在一示例中,所述处理器用于对包括该代码段的应用程序进行概况分析,并且用于响应于该概况分析来使得二进制转换引擎生成二进制转换。
[0065]在一示例中,所述处理器包括包含多个条目的映射表,每一条目用于将本机代码段与二进制转换代码段进行关联。
[0066]在一不例中,所述处理器用于访问映射表并且用于在映射表包括将该代码段与二进制转换相关联的条目的情况下在遇到该代码段的入口点时执行二进制转换而不是执行该代码段。
[0067]在一示例中,所述二进制转换引擎包括用于使得二进制转换代替该代码段被执行的定向逻辑。
[0068]在一示例中,所述第二核具有比第一核更低的功耗水平。
[0069]注意,以上处理器可以使用各种手段来实现。
[0070]在一示例中,所述处理器包括合并在用户装备启用触摸的设备中的片上系统(SoC)。
[0071]在另一示例中,一种系统包括显示器和存储器并且包括以上示例中的一个或多个的处理器。
[0072]在又一示例中,一种其上存储有指令的机器可读介质,所述指令在由机器执行时使得所述机器执行一种方法,所述方法包括接收要在处理器的二进制转换代理中执行第一代码段的二进制转换的指令,生成所述第一代码段的所改动的代码段,所改动的代码段包括用于当在处理器的不支持第一指令集架构(ISA)的第一指令的核上执行第一指令时对所述第一指令进行仿真的第一例程,将所改动的代码段储存在改动高速缓存存储器中,以及对处理器编程以在遇到第一代码段的入口点时启用该核来执行所改动的代码段而不是执行第一代码段。
[0073]在一示例中,所述二进制转换代理对在该处理器上执行的软件栈而言是透明的。
[0074]在一示例中,将条目储存在映射表中的指令用于将入口点关联到改动高速缓存存储器中的所改动的代码段的位置。
[0075]在一示例中,将条目储存在映射表中的指令用于使得所述核执行第二所改动的代码段代替第二代码段,其中所述第二代码段包括热点。
[0076]在一示例中,所述机器可读介质还包括用于将条目储存在映射表中的指令,所述指令使得所述核执行第三所改动的代码段代替第三代码段,其中所述第三代码段包括自修改代码。
[0077]在又一示例中,一种处理器包括二进制转换(BT)容器、用于管理BT容器并标识第一代码段的主机实体逻辑、以及用于将BT容器与软件栈隔离的保护逻辑,所述BT容器包含用于生成第一代码段的二进制转换并将二进制转换储存在转换高速缓存中的代码,所述软件栈包括虚拟机监视器(VMM)层、操作系统(OS)层、以及应用层,其中所述BT容器对所述软件栈而言是透明的。
[0078]在一示例中,所述保护逻辑包括用于存储标识BT容器的位置的范围值的至少一个寄存器。
[0079]在一示例中,所述主机实体逻辑用于使得处理器的状态被储存在第一状态存储中以及在进入BT调用时将储存在BT容器的BT状态存储中的BT状态加载到处理器中。
[0080]在一示例中,所述主机实体逻辑用于使得BT状态被储存在BT容器的BT状态存储中并在二进制转换执行了第一时间量之后从第一状态存储中加载处理器状态,以启用软件栈的应用程序的执行。
[0081]在一示例中,所述主机实体逻辑用于使得BT状态被加载到处理器的空闲核的状态存储中,以启用二进制转换在该空闲核中的执行,其中软件栈的应用程序在处理器的第二核上执行。
[0082]在一示例中,所述主机实体逻辑用于阻止BT容器访问软件栈的OS层和VMM层。
[0083]在一示例中,所述主机实体逻辑用于阻止BT容器对软件栈的应用层的写访问。
[0084]在一示例中,所述主机实体逻辑用于启用BT容器来访问处理器的状态的第一子集,并阻止BT容器访问处理器状态的第二子集。
[0085]在又一示例中,一种方法包括接收要在处理器的二进制转换代理中执行第一代码段的二进制转换的指令,生成所述第一代码段的所改动的代码段,所改动的代码段包括用于当在处理器的不支持第一指令集架构(ISA)的第一指令的核上执行第一指令时对所述第一指令进行仿真的第一例程,将所改动的代码段储存在改动高速缓存存储器中,以及对处理器编程以在遇到第一代码段的入口点时启用该核来执行所改动的代码段而不是执行第一代码段。
[0086]在一示例中,所述二进制转换代理对在该处理器上执行的软件栈而言是透明的。
[0087]在一示例中,所述方法包括将条目储存在映射表中来将入口点关联到改动高速缓存存储器中的所改动的代码段的位置。
[0088]在一示例中,所述方法还包括将条目储存在映射表中以使得所述核执行第二所改动的代码段代替第二代码段,其中所述第二代码段包括热点。
[0089]在一示例中,所述方法包括用于将条目储存在映射表中,以使得所述核执行第三所改动的代码段代替第三代码段,其中所述第三代码段包括自修改代码。
[0090]在又一示例中,一种处理器包括二进制转换(BT )容器装置、用于管理BT容器装置并标识第一代码段的主机实体装置、以及用于将BT容器装置与软件栈隔离的保护装置,所述BT容器装置包含用于生成第一代码段的二进制转换并将二进制转换储存在转换高速缓存中的代码,所述软件栈包括虚拟机监视器(VMM)层、操作系统(OS)层、以及应用层,其中所述BT容器装置对所述软件栈而言是透明的。
[0091]在一示例中,所述保护装置包括用于存储标识BT容器装置的位置的范围值的至少一个寄存器。
[0092]在一示例中,所述主机实体装置用于使得处理器的状态被储存在第一状态存储中以及在进入BT调用时将储存在BT容器装置的BT状态存储中的BT状态加载到处理器中。
[0093]在一示例中,所述主机实体装置用于使得BT状态被储存在BT容器装置的BT状态存储中并在二进制转换执行了第一时间量之后从第一状态存储中加载处理器状态,以启用软件栈的应用程序的执行。
[0094]在一示例中,所述主机实体装置用于使得BT状态被加载到处理器的空闲核的状态存储中,以启用二进制转换在该空闲核中的执行,其中软件栈的应用程序在处理器的第二核上执行。
[0095]在一示例中,所述主机实体装置用于阻止BT容器访问软件栈的OS层和VMM层。
[0096]在一示例中,所述主机实体装置用于阻止BT容器对软件栈的应用层的写访问。
[0097]在一示例中,所述主机实体装置用于启用BT容器来访问处理器的状态的第一子集,并阻止BT容器访问处理器状态的第二子集。
[0098]在又一示例中,一种包括用于执行以上示例中的任一个的方法的指令的计算机可读介质。
[0099]在又一示例中,一种包括用于执行以上示例中的任一个的方法的装置的设备。
[0100]在一示例中,一种通信设备被安排成执行以上示例中的任一个的方法。
[0101]在一示例中,包括多个指令的至少一个机器可读介质,响应于在计算设备上执行,所述指令使得所述计算设备执行根据以上示例中的任一个的方法。
[0102]要理解,以上示例的各种组合是可能的。
[0103]各实施例可被用于许多不同类型的系统中。例如,在一个实施例中,一种通信设备可被安排成执行在此描述的各方法和技术。当然,本发明的范围被限于通信设备,而是相反,其他实施例可涉及用于处理指令的其他类型的装置,或者包括指令的一个或多个机器可读介质,响应于在计算设备上执行,所述指令使得所述设备实现在此描述的方法和技术中的一个或多个。
[0104]各实施例可以用代码实现并可存储在其上存储有指令的存储介质上,这些代码可用来对系统编程以执行这些指令。存储介质可包括但不限于任何类型的盘,包括软盘、光盘、光碟、固态驱动器(SSD)、紧凑盘只读存储器(⑶-ROM)、可重写紧凑盘(⑶-RW)和磁光盘、诸如只读存储器(ROM)的半导体器件、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPR0M)、闪存、电可擦除可编程只读存储器(EEPR0M)、磁卡或者光学卡、或适于存储电子指令的任意其它类型的介质。
[0105]尽管本发明已针对有限数量的实施例作了描述,然而本领域技术人员将会从其中领会到许多修改和变型。所附权利要求旨在覆盖落在本发明的真实精神和范围内的所有这样的修改和变型。
【权利要求】
1.一种用于执行二进制转换的处理器,包括: 用于执行第一指令集架构(ISA)的指令的第一核; 用于执行第二 ISA的指令的第二核,所述第二核与所述第一核不对称;以及 用于对软件栈而言由所述处理器透明地控制的二进制转换容器,所述二进制转换容器包括二进制转换引擎,所述二进制转换引擎用于接收代码段、生成所述代码段的二进制转换、以及将所述二进制转换储存在转换高速缓存中,所述二进制转换包括用于对在所述第二 ISA中不可用的所述第一 ISA的指令进行仿真的至少一个仿真例程,其中所述第二核用于执行所述二进制转换。
2.如权利要求1所述的处理器,其特征在于,所述至少一个仿真例程用于启用所述第二核执行指令以对第一向量操作数执行操作,其中所述第二核的数据路径的宽度小于所述第一向量操作数的宽度。
3.如权利要求1所述的处理器,其特征在于,所述处理器对包括所述代码段的应用程序进行概况分析,并响应于所述概况分析来使得所述二进制转换引擎生成所述二进制转换。
4.如权利要求1所述的处理器,其特征在于,所述处理器包括包含多个条目的映射表,每一条目将本机代码段与二进制转换代码段进行关联。
5.如权利要求4所述的处理器,其特征在于,所述处理器用于访问所述映射表并且用于在所述映射表包括将所述代码段与所述二进制转换相关联的条目的情况下在遇到所述代码段的入口点时执行所述二进制转换代替所述代码段。
6.如权利要求1所述的处理器,其特征在于,所述二进制转换引擎包括用于使得所述二进制转换代替所述代码段被执行的定向逻辑。
7.如权利要求1所述的处理器,其特征在于,所述第二核具有比所述第一核更低的功耗水平。
8.一种用于执行二进制转换的方法,包括: 接收在处理器的二进制转换代理中执行第一代码段的二进制转换的指令; 生成所述第一代码段的所改动的代码段,所述所改动的代码段包括用于当在所述处理器的不支持第一指令集架构(ISA)的第一指令的核上执行第一指令时对所述第一指令进行仿真的第一例程; 将所改动的代码段储存在改动高速缓存存储器中;以及 对所述处理器编程以在遇到所述第一代码段的入口点时启用所述核来执行所改动的代码段代替所述第一代码段。
9.如权利要求8所述的方法,其特征在于,所述二进制转换代理对在所述处理器上执行的软件栈而言是透明的。
10.如权利要求8所述的方法,其特征在于,还包括将条目储存在映射表中来将所述入口点关联到所述改动高速缓存存储器中的所改动的代码段的位置。
11.如权利要求8所述的方法,其特征在于,还包括将条目储存在映射表中以使得所述核执行第二所改动的代码段而不执行第二代码段,其中所述第二代码段包括热点。
12.如权利要求8所述的方法,其特征在于,还包括将条目储存在映射表中以使得所述核执行第三所改动的代码段而不执行第三代码段,其中所述第三代码段包括自修改代码。
13.一种用于执行二进制转换的处理器,包括: 包括用于生成第一代码段的二进制转换并将所述二进制转换储存在转换高速缓存中的代码的二进制转换(BT)容器装置; 用于管理所述BT容器装置并用于标识所述第一代码段的主机实体装置;以及 用于将所述BT容器装置与软件栈隔离的保护装置,所述软件栈包括虚拟机监视器(VMM)层、操作系统(OS)层、以及应用层,其中所述BT容器装置对所述软件栈而言是透明的。
14.如权利要求13所述的处理器,其特征在于,所述保护装置包括用于存储标识所述BT容器装置的位置的范围值的至少一个寄存器。
15.如权利要求13所述的处理器,其特征在于,所述主机实体装置用于使得所述处理器的状态被储存在第一状态存储中以及用于在进入BT调用时将储存在所述BT容器装置的BT状态存储中的BT状态加载到所述处理器中。
16.如权利要求15所述的处理器,其特征在于,所述主机实体装置用于使得所述BT状态被储存在所述BT容器装置的BT状态存储中并用于在所述二进制转换执行了第一时间量之后从所述第一状态存储中加载所述处理器状态,以启用所述软件栈的应用程序的执行。
17.如权利要求15所述的处理器,其特征在于,所述主机实体装置用于使得所述BT状态被加载到所述处理器的空闲核的状态存储中以启用所述二进制转换在所述空闲核中的执行,其中所述软件栈 的应用程序在所述处理器的第二核上执行。
18.如权利要求13所述的处理器,其特征在于,所述主机实体装置用于阻止所述BT容器访问所述软件栈的OS层和VMM层。
19.如权利要求13所述的处理器,其特征在于,所述主机实体装置用于阻止所述BT容器对所述软件栈的应用层的写访问。
20.如权利要求13所述的处理器,其特征在于,所述主机实体装置用于启用所述BT容器来访问所述处理器的状态的第一子集,并用于阻止所述BT容器访问所述处理器状态的第二子集。
21.一种被安排成执行权利要求8到12中的任一项所述的方法的通信设备。
22.包括多个指令的至少一个机器可读介质,响应于在计算设备上执行,所述指令使得所述计算设备执行根据权利要求8到12中的任一项所述的方法。
23.一种用于处理指令的装置,所述装置被配置成执行权利要求8到12中的任一项所述的方法。
24.一种包括用于执行权利要求8-12中的任一项所述的方法的装置的设备。
【文档编号】G06F21/57GK104050010SQ201410088411
【公开日】2014年9月17日 申请日期:2014年3月11日 优先权日:2013年3月12日
【发明者】K·山田, P·R·山姆盖弗拉于坦, S·D·罗杰斯, B·E·亨特利, J·D·小比内, B·塔米尔 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1