平码五不中公式规律
  • / 43
  • 下载费用:30 金币  

当从异常返回时避免对不可屏蔽中断的过早启用.pdf

关 键 ?#21097;?/dt>
异常 返回 避免 不可 屏蔽 中断 过早 启用
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

CN201580045894.9

申请日:

2015.08.31

公开号:

CN106663000A

公开日:

2017.05.10

当前法律状态:

实审

?#34892;?#24615;:

审中

法?#19978;?#24773;: 实质审查的生效IPC(主分类):G06F 9/38申请日:20150831|||公开
IPC分类号: G06F9/38; G06F9/48 主分类号: G06F9/38
申请人: 英特尔公司
发明人: H·P·安文; G·奈格
地址: 美国加利福尼亚州
优?#28909;ǎ?/td> 2014.09.26 US 14/498,884
专利代理机构: 上海专利商标事务所有限公司 31100 代理人: 张欣
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201580045894.9

授权公告号:

|||

法律状态公告日:

2017.06.06|||2017.05.10

法律状态类型:

实质审查的生效|||公开

摘要

一方面的处理器包括用于解码异常处理程序返回指令的解码单元。该处理器还包括与解码单元耦合的异常处理程序返回执行单元。异常处理程序返回执行单元,响应于异常处理程序返回指令,如果对应于异常处理程序返回指令的异常是在NMI处理程序中被获得的,则不将处理器配置成启用将后续接收到的不可屏蔽中断(NMI)递送至NMI处理程序。异常处理程序返回执行单元,响应于异常处理程序返回指令,如果异常不是在NMI处理程序中被获得的,则将处理器配置成启用将后续接收到的NMI递送至NMI处理程序。公开了其他处理器、方法、系统以及指令。

权利要求书

1.一种处理器,包括:
解码单元,用于解码异常处理程序返回指令;以及
异常处理程序返回执行单元,与所述解码单元耦合,所述异常处理程序返回执行单元
响应于所述异常处理程序返回指令,用于:
如果对应于所述异常处理程序返回指令的异常是在所述NMI处理程序中被获得的,则
不将所述处理器配置成启用将后续接收到的不可屏蔽中断(NMI)递送至NMI处理程序;并且
如果所述异常不是在所述NMI处理程序中被获得的,则将所述处理器配置成启用将所
述后续接收到的NMI递送至所述NMI处理程序。
2.如权利要求1所述的处理器,进一步包括保存的NMI指示检查器单元,响应于所述异
常处理程序返回指令,用于:
检查在已从存储器检取到的对应于所述异常的异常帧中的,关于所述异常是否是在所
述NMI处理程序中被获得的保存的指示;并部分地基于所述保存的指示,确定是否将所述处
理器配置成启用所述后续接收到的NMI的所述递送。
3.如权利要求2所述的处理,其特征在于,所述保存的NMI指示检查器单元,响应于所述
异常处理程序返回指令,将:
在所述保存的指示具有第一值时,确定不将所述处理器配置成启用所述后续接收到的
NMI的所述递送;或
在所述保存的指示具有第二不同值时,确定将所述处理器配置成启用所述后续接收到
的NMI的所述递送。
4.如权利要求2所述的处理器,其特征在于,所述保存的指示具有不对应于所述处理器
的标志寄存器中的一个或多个对应位的在所述异常帧中的位置。
5.如权利要求2所述的处理器,其特征在于,所述保存的指示具有对应于所述处理器的
标志寄存器中的一个或多个预留位的在所述异常帧中的位置,但其中,所述处理器仍然将
所述一个或多个预留位保留在所述标志寄存器中。
6.如权利要求1所述的处理器,其特征在于,所述异常处理程序返回执行单元,响应于
所述异常处理程序返回指令,将:
检查保存的NMI禁用控制,所述保存的NMI禁用控制是所述处理器的NMI禁用控制的保
存的副本,所述NMI禁用控制用于交替地启用和延迟NMI的递送;并且如果所述异常不是在
所述NMI处理程序中被获得的,则通过改变所述处理器的所述NMI禁用控制,将所述处理器
配置成启用将所述后续接收到的NMI递送至所述NMI处理程序。
7.如权利要求1-6中任一项所述的的处理器,进一步包括嵌套NMI阻止启用控制检查器
单元,其响应于所述异常处理程序返回指令,用于检查交替地启用和禁用嵌套NMI阻止机制
的嵌套NMI阻止启用控制,其中,所述机制在被启用时包括所述异常处理程序返回执行单元
基于所述异常是否在所述NMI处理程序中被获得的,调节对所述后续接收到的NMI的所述递
送的启用。
8.如权利要求1到6中任一项所述的处理器,其特征在于,所述异常处理程序返回指令
具有操作码,所述操作码还用于从NMI处理程序返回。
9.一种处理器中的方法,包括:
接收第一异常处理程序返回指令,所述第一异常处理程序返回指令已被用于从对应于
不是在不可屏蔽中断(NMI)处理程序中被获得的第一异常的异常处理程序返回;
响应于所述第一异常处理程序返回指令,将所述处理器配置成启用对后续接收到的
NMI的递送;
接收第二异常处理程序返回指令,所述第二异常处理程序返回指令已被用于从对应于
是在所述NMI处理程序中被获得的第二异常的异常处理程序返回;
响应于所述第二异常处理程序返回指令,不将所述处理器配置成启用对后续接收到的
NMI的递送。
10.如权利要求9所述的方法,进一步包括,响应于所述第二异常处理程序返回指令,检
查在从存储器检取到的异常帧中的,关于所述第二异常是在所述NMI处理程序中被获得的
保存的指示。
11.如权利要求10所述的方法,其特征在于,检查所述保存的指示包括:检查不具有所
述处理器的标志寄存器中的对应一组一个或多个位的所述异常帧中的一组一个或多个位
中的所述保存的指示。
12.如权利要求10所述的方法,其特征在于,检查所述保存的指示包括:检查对应于处
理器的标志寄存器中的一组一个或多个预留位的所述异常帧中的一组一个或多个位中的
所述保存的指示。
13.如权利要求9所述的方法,其特征在于,响应于所述第一异常处理程序返回指令,将
所述处理器配置成启用所述后续接收到的NMI的所述递送包括:改变NMI禁用控制,其中,响
应于被递送至NMI处理程序的NMI,所述NMI禁用控制也由所述处理器改变。
14.一种处理器,包括:
不可屏蔽中断(NMI)确定单元,用于确定异常是否是在NMI处理程序中被获得的;以及
NMI保存单元,与所述NMI确定单元耦合,所述NMI保存单元用于保存关于所述异常是否
是在所述NMI处理程序中被获得的指示。
15.如权利要求14所述的处理器,其特征在于,所述NMI保存单元包括NMI禁用控制保存
单元,所述NMI禁用控制保存单元将保存处理器的NMI禁用控制,其中,所述NMI禁用控制将
用于交替地暂时禁用和启用对NMI的递送。
16.如权利要求15所述的处理器,其特征在于,所述NMMI保存单元将关于所述异常是否
是在所述NMI处理程序中被获得的所述指示保存在要被存储在存储器中(例如,在栈结构
上)的异常帧中。
17.如权利要求16所述的处理器,其特征在于,所述NMI保存单元将所述指示保存在不
具有处理器的标志寄存器中的对应一组一个或多个位的所述异常帧的一组一个或多个位
中。
18.如权利要求16所述的处理器,其特征在于,所述NMI保存单元将所述指示保存在对
应于处理器的标志寄存器中的一组一个或多个预留位的所述异常帧的一组一个或多个位
中。
19.如权利要求14所述的处理器,其特征在于,所述NMI确定单元包括NMI禁用控制确定
单元,所述NMI禁用控制确定单元将通过检查处理器的NMI禁用控制来确定所述异常是否在
所述NMI处理程序中被获得的,其中,所述NMI禁用控制将被用于交替地暂时禁用和启用对
NMI的递送。
20.如权利要求14到19中任一项所述的处理器,进一步包括嵌套NMI阻止启用控制检查
器单元以用于检查处理器的嵌套NMI阻止启用控制,所述嵌套NMI阻止启用控制交替地启用
和禁用嵌套NMI阻止机制,其中,所述嵌套NMI阻止机制当被启用时包括:所述NMI保存单元
保存关于所述异常是否是在所述NMI处理程序中被获得的所述指示,并当未被启用时不包
括保存所述指示的所述NMI保存单元。
21.一种包括用于执行权利要求9到13中的任一项所述的方法的设备的装置。
22.一种?#30772;罰?#21253;括存储指令的非暂态机器可读介?#21097;?#22914;果由机器执行所述指令,则所
述指令用于使所述机器执行权利要求9到13中任一项所述的方法。
23.一种电子设备,包括:互连、与所述互连耦合的如权利要求1到6中任一项所述的处
理器、以及与所述互连耦合的动态随机存取存储器(DRAM)。
24.一种电子设备,包括:互连、与所述互连耦合的如权利要求14到19中任一项所述的
处理器、以及与所述互连耦合的动态随机存取存储器(DRAM)。

?#24471;?#20070;

当从异常返回时避免对不可屏蔽中断的过早启用

背景

技术领域

本文所描述的实施例总体涉及计算机系统。具体而言,本文所描述的实施例总体
涉及对计算机系统中的中断与异常的处理。

背景信息

在操作期间,处理器与计算机系统通常会遇到所谓的中断与异常。中断与异常一
般表示存在于处理器内或在正在执行的程序或任务内的、系统中的各个位置中的任一个中
的状况或事件,并且需要处理器的注意。这些中断与异常通常导致处理器挂起对正在执行
的程序或任务的处理,并将控?#23631;?#36716;移给处理中断或异常的中断或异常处理程序
(handler)模块。这常常被称为服务或处理中断或异常。

中断常常但不总是指在给定处理器或?#36865;?#37096;发生的外部状况或事件。例如,输入
和/或输出(I/O)设备、计时器、外围设备、外部处理器、或在给定处理器或?#36865;?#37096;的其他外
部硬件可将中断递送给给定处理器或核。作为另一个示例,处理器的一个核可将中断递送
给处理器的另一个核。然而,并非所有中断都是由于外部事件。某些中断可在核的内部产
生,并且可因为它们是异步的而被作为中断递送。某些中断不是异步的。例如,存在某些同
步的?#20174;?#26680;的中断。作为另一个示例,可同步地断言中断以再发出(reissue)或再断言遗漏
的或延迟的(例如,屏蔽的(masked))的中断。通常,大多数中断是异步的并且是由于外部状
况而产生的。

相反,异常通常指在给定处理器或核的内部发生的内部状况或事件。例如,异常通
常由给定处理器或核的执行流水线内的正被执行的指令造成。异常一般表示一般由指令的
执行触发的,且一般以和相关指令的特定关系而被递送给的同步事件。某些类型的同步事
件(例如,错误)一般被递送而非执行相关的指令,然而其他类型的同步事件(例如,陷阱)一
般在执行相关指令后立即被递送。

可将中断进一步分类为可屏蔽的(maskable)中断与不可屏蔽的中断(NMI)。可屏
蔽的中断可被屏蔽。例如,某些处理器具有可屏蔽性控制(maskability control),诸如,例
如标志、条件码或状态位,该可屏蔽控制性允许所有可屏蔽中断被屏蔽为一组。例如,某些
英特尔架构兼容处理器具有中断标志(IF),该中断标志当被清除成二进?#23631;?#26102;不允许可屏
蔽中断被递送到软件,但当被设置成二进制一时允许可屏蔽中断被递送到软件。

与可屏蔽中断相反,不可屏蔽中断(NMI)一般不能被用于屏蔽可屏蔽中断的可屏
蔽性控制(例如,IF标志)屏蔽。然而,一旦已经将NMI递送给软件,某些处理器可调用硬件条
件来试图阻止将进一步(further)的NMI递送给软件,直到已经完成了对初始NMI的处理。例
如,在英特尔64和IA-32架构软件开发者手册(64and IA-32Architectures
Software Developer's Manual)卷3A、订单编号325462-051US、2014年6月出版、章节6.7与
6.7.1部分地中描述了在接收到NMI时,处理器可调用某些硬件条件以试图确认没有接收到
其他中断(包括NMI中断)直到负责处理NMI的NMI处理程序已经完成执行控?#23631;?#24182;将控?#23631;?br />返回到初始程序或任务。这种对进一步的NMI的递送的阻止或延迟试图阻止NMI处理程序的
嵌套执行。

附图?#24471;?br />

通过参考用于?#24471;?#23454;施例的以下描述和所附附图,可最佳地理解本发明。在附图
中:

图1是其中可实现本发明的实施例并具有嵌套NMI阻止单元的实施例的计算机系
统的实施例的框图。

图2是能用于将异常是否是在NMI处理程序中被获得的指示保存在异常帧中的嵌
套NMI阻止单元的实施例的框图。

图3是保存异常是在NMI处理程序中被获得的指示的方法的实施例的流程框图。

图4是要执行异常处理程序返回指令的实施例的处理器的实施例的框图。

图5是在执行异常处理程序返回指令的实施例的处理器中的方法的实施例的流程
框图。

图6是具有嵌套NMI阻止支持模块的实施例的操作系统模块的实施例的框图。

图7A是示出有序流水线的实施例以及寄存器重命名的无序发布/执行流水线的实
施例的框图。

图7B是处理器核的实施例的框图,该处理器核包括耦合到执行引擎单元的前端单
元,并且前端单元和执行引擎单元两者都耦合到存储器单元。

图8A是单个处理器核以及它与管芯上互连网络的连接及其第二级(L2)高速缓存
的?#38236;?#23376;集的实施例的框图。

图8B是图8A的处理器核的部分的展开图的实施例的框图。

图9是可具有多于一个的核、可具有集成存储器控制器并且可具有集成图形器件
的处理器的实施例的框图。

图10是计算机架构的第一实施例的框图。

图11是计算机架构的第二实施例的框图。

图12是计算机架构的第三实施例的框图。

图13是芯片上系统架构的实施例的框图。

图14是根据本发明的实施例的使用软件指令转换器将源指令集中的二进制指令
转换成目标指令集中的二进制指令的框图。

具体实施方式

处理处理器中的NMI的一个挑战是在从异常返回时可能过早地启用进一步NMI的
递送。如在背?#23433;?#20998;中所?#33268;?#30340;,在接收到NMI时,某些处理器可调用某些硬件条件以试图
确认没有收到其他中断(包括NMI中断),直到负责处理NMI的NMI处理程序已经完成了执行
控?#23631;?#24182;将控?#23631;?#36820;回的初始程序或任务。例如,处理器可通过由软件不可见NMI禁用控制
(例如,NMI禁用位)暂时地禁用或延迟(与术语“不可屏蔽”一致)后续NMI的递送来对NMI的
接收作出响应。当NMI处理程序返回时(例如,使用IRET指令或其他NMI处理程序返回指令),
处理器可将NMI禁用控制配置成重新启用进一步NMI的递送(例如,通过清除NMI禁用位)。然
而,从异常的返回也可将NMI禁用控制配置成重新启用进一步NMI的递送(例如,通过清除
NMI禁用位)。例如,NMI处理程序与异常处理程序两者可使用相同的指令(例如,IRET指令或
其他处理程序返回指令)以从处理程序返回到程序或任务,且此返回指令可将NMI禁用控制
配置成重新启用进一步NMI的递送(例如,通过清除NMI禁用位),而不管该返回来自NMI还是
异常。即使相同的指令不用于从NMI处理程序与异常处理程序两者返回,依然可能的是,从
异常处理程序的返回可重新启用对进一步NMI的递送。

结果,如果异常是在处理NMI时(例如,当NMI处理程序正在处理NMI且在NMI处理程
序返回之前)被带到,则异常处理程序在它返回时可能过早地重新启用后续NMI的递送。此
外,异常发生在NMI内不是不常见的,诸如,例如由于页错误、机器校验异常或其他类型的异
常。这种过早地重新启用进一步NMI的递送的一个潜在问题是它可能通过在NMI处理程序已
经完成对更早递送的NMI的处理之前允许第二NMI被递送至NMI处理程序而无意间允许NMI
嵌套(例如,NMI处理程序的嵌套执行)。这可往往导致操作系统不稳定性和/或潜在的致命
错误,因为对NMI的处理可?#35272;?#20110;任务门、中断堆栈表(IST)或与嵌套NMI不完全兼容的处理
器的其他特征。在处理器被用于一般预期NMI与中断(诸如机器校验异常)会共存的高可靠
性环境中时,这往往是特别成问题的。

本文公开的是当从异常返回时避免过早地启用不可屏蔽中断的方法、装置、系统
以及指令。在以下描述中,阐述了多个特定?#38468;?例如,特定的微架构?#38468;凇?#25805;作的序列、指
令操作等)。然而,在没有这些特定?#38468;?#30340;情况下,也可实践实施例。在其他实例中,未详细
示出公知的电路、结构和技术以避免混淆对本描述的理解。

图1是其中可以实现本发明的各实施例的计算机系统100的实施例的框图。在各个
实施例中,计算机系统可表示台式计算机、膝上型计算机、?#22987;?#26412;计算机、?#22987;?#26412;、智能电
话、?#21482;?#26381;务器、网络设备(例如,路由器、开关等等)、媒体播放器、智能电视机、上网机、机
顶盒、视频游戏控制器或本领域已知的其他类型的电子设备。计算机系统包括处理器102和
存储器130。处理器与存储器耦合,或通过常规的耦合机制125(例如,通过一个或多个总线、
中枢、存储器控制器、芯片组组件等等)以其他方式彼?#36865;?#20449;。

在一些实施例中,处理器102可以是通用处理器(例如,台式计算机、膝上型计算机
或其他计算机中所使用类型的通用微处理器或中央处理单元(CPU))。替代地,处理器可以
是专用处理器。合适的专用处理器的示例包括但不仅限于,网络处理器、通信处理器、?#29992;?br />处理器、图形处理器、协处理器、?#24230;?#24335;处理器、数?#20013;?#21495;处理器(DSP)以及控制器(例如,微
控制器)。该处理器可具有各?#25351;?#26434;指令集计算(CISC)架构、精简指令集计算(RISC)架构、
超长指令字(VLIW)架构、混合架构、其他类型的架构中的任一者,或具有不同架构的组合
(例如,不同的核可具有不同的架构)。

存储器130可包括一个或多个不同的存储器设备和/或一?#21482;?#22810;种不同类型的存
储器。例如,在一些实施例中,存储器可包括动态随机存取存储器(DRAM),而在其他实施例
中,存储器可包括闪存。存储器包括操作系统(OS)模块132。虽然示出的是单个OS模块,其他
实施例可任选地包括两个或更多个OS模块和/或可任选地包括虚拟机管理器(VMM)模块、管
理程序模块,等?#21462;S模块包括NMI处理程序模块134以及异常处理程序模块136。存储器还
包括一个或多个应用模块142,例如,诸如字处理应用程序、电子表格、绘图应用程序、电子
邮件应用程序?#21462;?#23384;储器还具有一个或多个堆栈结构144,该堆栈结构可用于存储关于计算
机程序的活跃例程的信息,以便帮助保持追踪:在活跃例程完成执行时应该将控制予以返
回的时点(point)。堆栈结构有时也被称作调用栈结构、执行栈结构、运行时栈结构、机器栈
机构,或简称为栈。

在操作期间,执行软件104可在处理器上执行。执行软件可包括从存储器(例如,从
OS模块和/应用模块)加载的并且由执行流水线106(例如,解码器、执行单元等)执行的处理
器的指令集的宏指令或指令。执行软件可利用相关的架构状态108,例如,诸如标志寄存器、
程序计数器、代码段选择符、通用寄存器、紧缩数据寄存器、其他架构寄存器等?#21462;?br />

在操作期间,处理器可遭遇不可屏蔽中断(NMI)。在不同的实施例中可以以不同的
方式遭遇NMI。在一些实施例中,处理器可包括中断和异常单元110,用于接收对应于NMI的
事件121。例如,中断和异常单元110可包括:可编程中断控制器(例如,?#38236;?#39640;级可编程中断
控制器(LAPIC)),用于从各种内部源和/或外部源收集事件121并将它们?#25104;?#25104;中断或异常
(例如,NMI、非NMI中断、异常、系统管理中断(SMI)等)、以及中断单元和/或异常单元,用于
接收并处理中断或异常,但是本发明的范围不限于此。作为另一个示例,可在处理器处从外
部组件124(例如,输入/输出设备、外围设备、另一个处理器等)在处理器的一个或多个引脚
116上接收NMI 120。在一些情况下,可存在专用于接收NMI 120的引脚。可将在引脚(多个)
上接收的NMI 120提供给中断和异常单元110。作为又一示例,在一些情况下,中断和异常单
元110(例如,可编程中断控制器)可任选地具有定时器(未示出),该定时器可用于产生用于
调试、分析或其他的NMI。其他处理器可具有除了所描述的中断和异常单元110之外的各种
其他已知的中断或异常处理能力。处理器可通过向NMI处理程序模块134做出调用126来发
起对以这些各种不同的方式接收到的NMI的处理。例如,处理器可查阅中断和/或异常描述
符表结构或处理器的其他结构以定位对应于NMI的中断向量,并可随后调用对应于所定位
的中断向量的NMI处理程序。在英特尔架构的特定情况下,NMI被分配给中断向量2。NMI处理
程序模块可开始处理或服务NMI。

处理器还具有嵌套NMI阻止单元149。嵌套NMI阻止单元(例如,NMI禁用控制配置单
元112)可接收NMI(例如,来自先前所描述的源中的任一个)已发生的指示121。响应于NMI
121的指示,处理器和/或嵌套NMI阻止单元可通过暂时地禁用或延迟进一步NMI的递送来阻
止嵌套的NMI。在一些实施例中,嵌套NMI阻止单元可具有NMI禁用控制114。NMI禁用控制可
广泛地表示位、一组位、模式或硬件条件,以交替地启用与延迟对进一步NMI的递送。例如,
NMI禁用位或一组位可具有第一值(例如,位可被清除成二进?#23631;?,以启用进一步NMI的递
送,或替代地可具有第二不同值(例如,该位可被设置成二进制一)以暂时地禁用或延迟进
一步NMI的递送。在一些实施例中,嵌套NMI阻止单元可具有NMI禁用控制配置单元112,用于
将NMI禁用控制114配置成交替地启用或延迟对进一步NMI的递送。响应于NMI 121的指示,
NMI禁用控制配置单元112可用于将NMI禁用控制114配置成暂时地禁用或延迟对进一步NMI
的递送(例如,可将单个位设置成二进制一)。

典型地,当将NMI禁用控制配置成暂时地阻止或禁用对后续NMI的递送时,NMI禁用
控制可导致中断和异常单元110(或它们的逻辑或它们的电路)或将中断和异常单元110(或
它们的逻辑或它们的电路)配置成暂时地阻止或延迟后续NMI的递送。应当理解,虽然单个
位可能是足够的,但可任选地使用两个或更多个位,以及可根据任何期望的惯例使用一个
位或者两个或更多个位的任何期望值来表示启用状态与禁用状态。在图示中,NMI禁用控制
配置单元与NMI禁用控制被示成是分开的单元,但是在其他的实施例中,它们可任选地被包
括在所示单元中的一个中(例如,在中断与异常单元110中)。

当NMI处理程序模块134正在处理或服务NMI(例如,NMI 120)时,可能发生异常
118。在一些实施例中,异常可在执行流水线106正在处理执行软件104的指令时发生。合适
类型的异常的示例包括错误、陷阱以及中止。是否将异常分类为错误、陷阱或中止可从一个
实现到另一个实现有所变化,和/或基于其中异常发生的不同环境而变化。错误和陷阱常常
指在没有损失程序或任务连续性的情况下一般可重启导致异常的程序或任务对其的执行
的那些异常。错误常常表示一般可被改正的那些异常。不同类型的错误的示例包括但不限
于,页错误、一般保护错误、段不存在、栈?#26410;?#35823;、除法错误、无效或未定义的操作码、数学协
处理器不可用、数学错误、定位检查错误、SIMD浮点异常错误、虚拟化异常错误,等?#21462;?#38519;阱
(trap)常常表示在导致了它们的指令完成之后被递送的那些异常。不同类型的陷阱的示例
包括但不限于断点陷阱与上溢陷阱。与错误以及陷阱相反,中止(abort)常常表示在没有损
失程序或任务连续性的情况下常常不允许导致了异常的程序或任务被重启的那些中断。中
止常常指难以从中?#25351;?#30340;不平常事件。不同类型的中断的示例包括但不限于,双误中止与
机器校验中止。

可将异常提供给中断和异常单元110。响应于接收到异常,中断和异常单元或处理
器可通过向异常处理程序模块136做出调用128来发起对异常的处理。例如,处理器可查阅
中断和/或异常描述符表结构或处理器的其他结构,以定位对应于异常的向量,并可随后调
用对应于所定位的向量的异常处理程序。

嵌套NMI阻止单元149具有NMI确定单元138以及NMI保存单元140的实施例。可以硬
件(例如,集成电路)、固件(例如,微码或者存储在?#19988;资源?#20648;上的其他指令或代码)或者
它们的结合?#35789;?#29616;这些组件中的每个。NMI确定单元可用于确定异常118是否是在NMI中被
获得的(例如,在NMI处理程序134的执行期间)。在一些实施例中,NMI确定单元可与NMI禁用
控制114耦合并用于检查NMI禁用控制114,以便做出此确定。如果NMI禁用控制指示应该暂
时禁用或延迟进一步NMI的递送,则NMI确定单元可推断异常118是在NMI中获得的(例如,
NMI 120)。相反地,如果NMI禁用控制114指示未延迟对进一步NMI的递送,则NMI确定单元可
推断异常118不是在NMI中被获得的。在本示例中,因为异常118是在NMI中被获得的(例如,
在NMI处理程序模块被调用之后但在它能够完成处理NMI并返回到中断的程序或任务之
前),所以NMI确定单元138将确定异常是在NMI中被获得的(例如,在NMI处理程序执行内)。

再次参考图1,嵌套NMI阻止单元149还具有NMI保存单元140。NMI保存单元可与NMI
确定单元138耦合,或以其他方式与其通信。NMI保存单元在异常是在NMI中被获得的时用于
存储或以其他方式保存异常是在NMI中被获得的指示。在一些实施例中,位或一组位可具有
第一值(例如,单个位可被设置成二进制一(或可替代地,被清除成二进?#23631;?)以指示异常
是在NMI中被获得的,或可具有第二不同值(例如,该单个位可被清除成二进?#23631;?或可替代
地,被设置成二进制一))以指示异常不是在NMI中被获得的。保存异常是在NMI中被获得或
不是在NMI中被获得的指示也可被视为保存应该延迟或不延迟进一步的NMI的递送和/或保
存NMI禁用控制114的值的指示。例如,如果异常是在NMI中被获得的,则它可对应于NMI禁用
控制的第一值,然而如果异常不是在NMI中被被获得的,则它可对应于NMI禁用控制的第二
不同值。

在不同的实施例中可将该指示存储或保存在各种不同的位置中。在一些实施例
中,可将该指示存储或以其他方式保存在要被存储在存储器中的异常帧中(例如,在栈结构
(例如,栈结构144)中)。如所示,在一些实施例中,NMI保存单元140可任选地是异常帧生成
单元150的一部分。可替代地,NMI保存单元可任选地与异常帧产生单元分开,但与异常帧产
生单元耦合或以其他方式与异常帧生成单元通信。将指示存储在栈结构上的异常帧中的一
个优势是栈结构可能已经具有可被利用的对嵌套的本机内建支持。作为另一选项,在其他
实施例中,可将指示存储或保存(例如,在异常帧或其他数据结构中)在任务状态段(TSS)或
类似的结构中。TSS可表示用于存储关于任务的信息并用于被操作系统模块用于任务管理
的结构。例如,OS模块可在任务切换时将信息存储在TSS上。除了所保存的指示,可被存储在
TSS中的其他信息包括,例如处理器寄存器状态、I/O端口许可、内级栈指针、先前的TSS链路
?#21462;?#22312;又一实施例中,可将指示存储或以其他方式保存在异常处理程序内的或可由异常处
理程序访问到的数据结构中(例如,在存储器130中的一些位置中)。在这样的实施例中,指
示还可包括足够允许其与异常帧相关联的信息及其相关的内容(例如,保存的架构状态)。
在又一其他实施例中,可将指示潜在地与异常状态一起存储在或以其他方式保存在处理器
寄存器中,使用该处理器寄存器而不使用和/或除了栈上的异常帧,以将信息在处理器与异
常处理程序模块之间进行传递。

如将在下面进一步解释的,有利的是,保存异常是否是在NMI中被被获得的指示可
用于有条件地确定在从异常处理程序返回时是否重新启动对进一步NMI的即时递送。例如,
如果异常不是在NMI处理期间被获得,则当处理器执行异常处理程序返回指令时,异常处理
程序返回指令可重新启动对进一步NMI的立即递送,但如果异常是在NMI处理期间被获得,
则可放弃重新启用对进一步NMI的递送。在这种条件下放弃重新启用对进一步NMI的递送可
帮助防止NMI的嵌套以及可从其导致的相关问题。

在一些实施例中,先前描述的异常处理程序模块136帮助防止过早地启动对NMI的
递送的能力可一直被启用或打开。在其他的实施例中,可例如通过操作系统或其他有特权
的和/或系统级的软件将此能力配置成被启用或禁用。

例如,处理器可任选地具有嵌套NMI阻止启用控制122。嵌套的NMI阻止启用控制可
包括例如具有第一值的一个或多个位(例如,单个位可被设置成二进制一(或可替代地被清
除成二进?#23631;?),用于启用嵌套NMI阻止能力/机制(例如,包括先前描述的异常处理程序模
块的能力),或可具有第二不同值的一个或多个位(例如,该单个位可被清除成二进?#23631;?或
可替代地被设置成二进制一)),用于禁用嵌套NMI阻止能力/机制。?#28304;?#26041;式,如对特定实现
所期望的,系统可使用或不使用此能力/机制。

图2是嵌套NMI阻止单元249的实施例的框图,嵌套NMI阻止单元249用于通过保存
异常是否在NMI处理程序中被获得的指示256(例如,在异常帧254中)来帮助阻止嵌套的
NMI。在此实施例中,将异常是否是在NMI处理程序中被获得的指示256实现为保存的NMI禁
用控制值256。

嵌套NMI阻止单元249包括可用于确定NMI禁用控制值的NMI禁用控制确定单元
240。这也可或可替代地被视为确定对应于对异常处理程序模块的调用的异常是否是在NMI
处理程序中被获得。NMI禁用控制确定单元可与NMI禁用控制214(例如,NMI禁用控制114)耦
合,或以其他方式与其通信。

嵌套NMI阻止单元249还包括NMI禁用控制保存单元240.NMI禁用控制保存单元与
NMI禁用控制确定单元耦合,或以其他方式与其通信,以便接收当前的NMI禁用控制值。

如所示,在一些实施例中,NMI禁用控制保存单元可任选地是异常帧生成单元250
的一部分。异常帧生成单元可用于针对异常生成异常帧254,并将异常帧存储到存储器中
(例如,将异常帧推入或以其他方式将异常帧存储到栈结构244上)。异常帧可包括通常在异
常帧中找到的类型的架构状态209。例如,此架构状态可包括返回指令指针、返回代码段选
择符以及处理器标志的副本。在这样的实施例中,NMI禁用控制保存单元可用于使NMI禁用
控制值214的保存副本存储或以其他方式被包括在异常帧中作为保存的NMI禁用控制256。
可替代地,如先前所述的可将保存的NMI禁用控制保存在处理器寄存器中。

作为一个特定示例,如果NMI禁用控制值是具有用于指示进一步NMI的递送当前已
经被延迟进入异常处理程序内的二进制一值的单个位,则保存的NMI禁用控制还可包括具
有用于指示异常是在NMI处理程序中被获得和/或指示NMI当前已经被延迟进入到异常处理
程序的二进制一值的单个位。

如先前所提及的,使用一个或多个位的哪个特定值主要是所采用的惯例的问题,
而且它们可以是但是不必是对处理器的NMI禁用控制214以及保存的NMI禁用控制所采用的
相同的惯例,只要他们被逻辑理解以根据所采用的惯例彼此对应即可。

在一些实施例中,保存的NMI禁用控制256可表示异常帧254中的一个或多个位。在
一些实施例中,这些一个或多个位可以是?#24418;从?#20110;一些其他目的(例如,?#24418;从?#20110;架构状态
209)的异常帧的任何先前未使用的位。可任选地使用各种先前未使用的位。在一些实施例
中,保存的NMI禁用控制256可不具有处理器的实际架构状态中的对应一组一个或多个位
(例如,可不存在处理器的标志寄存器中的对应一组一个或多个位)。常常不期望将附加的
标志增加到处理器的标志寄存器(例如,出于兼容性原因)。使用不具有标志寄存器中的对
应一组一个或多个位的异常帧的一组一个或多个位可允许NMI禁用控制214的保存而并不
会施加兼容性困?#36873;?#22312;一些实施例中,用于保存的NMI禁用控制256的异常帧的该一组一个
或多个位可以不是处理器的标志寄存器中的预留位。在其他的实施例中,用于保存的NMI禁
用控制256的异常帧的该一组一个或多个位可具有对应于处理器的标志寄存器中的预留位
的异常帧中的位置,但在一些实施例中,处理器可仍然保留或不使用实?#26102;?#24535;寄存器中的
这些对应位。可替代地,如果期望的话,一个或多个位可任选地被添加到处理器的标志寄存
器,并具有异常帧254中的架构状态209中的对应位。本发明一个实施例涉及异常帧数据结
构,该异常帧数据结构具有异常是否是在NMI中被获得和/或保存的NMI禁用控制的保存的
指示。

在一些实施例中,嵌套NMI阻止单元249可任选地具有嵌套NMI阻止启用控制检查
器单元252。

该嵌套NMI阻止启用控制检查器单元可与可选的嵌套NMI阻止启用控制222(例如,
可选的嵌套NMI阻止启用控制122)耦合并对其进行检查,以确定嵌套NMI阻止和/或NMI禁用
控制的保存当前是否被启用或禁用。可选的嵌套NMI阻止启用控制检查器单元与NMI禁用控
制保存单元240耦合,或以其他方式与其通信。如果嵌套NMI阻止和/或NMI禁用控制的保存
当前被禁用,则检查器模块252可向NMI禁用控制保存单元发信号以不包括异常帧中的保存
的NMI禁用控制,或相反,检查器模块252可向NMI禁用控制保存单元发信号以包括异常帧中
的保存的NMI禁用控制。

图3是保存异常是在NMI处理程序中被获得的指示的方法357的实施例的流程框
图。在一些实施例中,方法357可由图1的嵌套NMI阻止单元149和/或图2的嵌套NMI阻止单元
249执行,和/或在图1的嵌套NMI阻止单元149和/或图2的嵌套NMI阻止单元249内执行。用于
嵌套NMI阻止单元149、249的本文中所描述的组件、特征以及特定的可选?#38468;?#20063;可任选地应
用于方法357。可替代地,方法357可由类似的或不同的单元或者其他装置执行,和/或在类
似的或不同的单元或者其他装置内执行。?#36865;猓?#21333;元149、249可执行与方法357相同、类似、
或不同的方法。

该方法包括在框358处确定异常是在NMI处理程序中被获得。在一些实施例中,可
通过检查处理器的NMI禁用控制来做出此确定。在一些实施例中,被检查的NMI禁用控制可
具有处理器将其配置成在接收到NMI时延迟进一步NMI的递送的特性。

该方法包括在框359处保存异常被带到NMI处理程序内的指示。在一些实施例中,
可将该指示保存在要被存储在存储器中的异常帧中(例如,被推到栈结构上)。在一些实施
例中,可将该指示保存在不具有处理器的标志存储器中的对应一组一个或多个位的异常帧
的一组一个或多个位中。在一些实施例中,可将该指示保存在对应于处理器的标志寄存器
中的一组一个或多个预留位的异常帧的一组一个或多个位中,但处理器可仍然保留对这些
位的使用而非实际上使用它们。在一些实施例中,该指示可以是处理器的NMI禁用控制的
NMI禁用控制值。

图4是要执行异常处理程序返回指令460的实施例的处理器402的实施例的框图。
处理器可以是先前描述的类型的处理器的任一种(例如,通用处理器或专用处理器)。在操
作期间,处理器可接收异常处理程序返回指令。例如,可从互连上的存储器接收指令。指令
可表示宏指令、汇编语言指令、机器代码指令、或其他指令、或处理器的指令集的控制信号。

在一些实施例中,该指令可表示要在异常处理程序模块结束时被包括且要被用于
将控?#23631;?#20174;异常处理程序模块返回到被异常中断的程序或任务的指令。虽然指令在本文被
称为异常处理程序返回指令,但是它也可任选地是中断处理程序返回指令(例如,用于从异
常以及中断两者返回的指令)。

该处理器包括解码单元或解码器462。解码单元可接收并解码异常处理程序返回
指令460。解码单元可输出?#20174;场?#34920;示相对较高级的异常处理程序返回指令和/或从相对较
高级的异常处理程序返回指令导出的一个或多个相对?#31995;图?#30340;指令或控制信号(例如,一
个或多个微指令、微操作、微码入口点、经解码的指令或控制信号等)。在一些实施例中,解
码单元可以包括用于接收指令的一个或多个输入结构(例如端口、互连、接口)、与输入结构
耦合用于识别并解码指令的指令识别和解码逻辑、以及与指令识别和解码逻辑耦合用于输
出?#22270;?#25351;令或控制信号的一个或多个输出结构(例如端口、互连、接口)。可使用各种不同机
制?#35789;迪指?#35299;码单元,包括但不限于,微代码只读存储器(ROM)、查?#20918;懟?#30828;件实?#24103;?#21487;编程
逻辑阵列(PLA)和本领域中已知的用于实现解码单元的其他机制。

异常处理程序返回执行单元464与解码单元462耦合。异常处理程序返回执行单元
可接收表示异常处理程序返回指令和/或从其导出的一个或多个经解码或以其他方式转换
的指令或控制信号。异常处理程序返回执行单元还可接收或以其他方式访?#26102;?#23384;的NMI禁
用控制456(例如,指令可使具有保存的NMI禁用控制456的异常帧454从栈弹出或以其他方
式被接收到处理器内)。异常处理程序返回执行单元具有可选的嵌套NMI阻止启用控制检查
器单元466。嵌套NMI阻止启用控制检查器单元与处理器的嵌套NMI阻止启用控制422耦合,
并且可检查以确定嵌套NMI阻止是否被启用或禁用。如果嵌套NMI阻止被禁用,则在一些实
施例中,异常处理程序返回执行单元可将NMI禁用控制412配置成启用对NMI的递送,而不管
保存的NMI禁用控制456。

相反地,如果嵌套的NMI阻止被启用,则在一些实施例中,异常处理程序返回执行
单元464(例如,NMI禁用控制配置单元412)可取决于或基于保存的NMI禁用控制456将NMI禁
用控制414配置成启用或延迟进一步NMI的递送。

在一些实施例中,保存的NMI禁用控制检查器单元468可检查(check)或调查
(examine)保存的NMI禁用控制。在一些实施例中,保存的NMI禁用控制可以在被弹出的或以
其他方式被检取到的异常帧454中,且检查器单元可检查或调查异常帧。可替代地,保存的
NMI禁用控制可已经被提取(例如,来自被检取的异常帧)并被提供给执行单元。保存的NMI
禁用控制可指示对应于异常处理程序返回指令被用于从其返回的异常处理程序的异常是
否是在NMI处理程序中被获得。NMI禁用控制配置单元与保存的NMI禁用控制检查器单元耦
合。如果异常是在NMI处理程序中被获得的和/或如果保存的NMI禁用控制456指示进一步
NMI的递送在保存的时候是被暂时地禁用或延迟的,则NMI禁用控制配置单元可用于响应于
异常处理程序返回指令和/或作为其结果(例如,响应于从异常处理程序返回指令解码出的
一个或多个指令或控制信号)不将NMI禁用控制414配置成启用对后续接收到的NMI的递送。

相反地,如果异常不是在NMI处理程序中被获得和/或如果保存的NMI禁用控制456
指示进一步NMI的递送在保存的时候是被启用的,则NMI禁用控制配置单元412可用于响应
于异常处理程序返回指令460或作为其结果,将NMI禁用控制414配置成启用对后续接收到
的NMI的递送。因此,响应于异常处理程序返回指令,异常处理程序返回执行单元可基于保
存的NMI禁用控制是否指示异常是或不是在NMI中被获得的而启用或不启用进一步NMI的递
送。例如,如果保存的NMI禁用控制具有第一值,则可启用进一步NMI的递送,但是如果保存
的NMI禁用控制具有第二不同值,则进一步NMI的递送可不被启用并可因此仍然被延迟。响
应于异常返回指令,执行单元还可执行其他常规操作,诸如,例如将架构状态从异常帧存储
到处理器的架构状态中(例如,用来自异常帧的值加载处理器的程序计数器、用来自异常帧
的值加载处理器的标志寄存器等)。

NMI禁用控制配置单元412和/或处理器可包括专用的或特定的逻辑(例如,晶体
管、集成电路或潜在地与固件(例如,存储在?#19988;资源?#20648;器中的指令)和/或软件结合的其
他硬件),响应于异常处理程序返回指令和/或作为其结果(例如,响应于从异常处理程序返
回指令解码出的一个或多个指令或控制信号),该专用的或特定的逻辑可用于执行异常处
理程序返回指令和/或配置NMI禁用控制。在一些实施例中,NMI禁用控制配置单元可包括:
一个或多个输入结构(例如,端口、互连、接口)以接收解码的指令;以及与该一个或多个输
入结构耦合的相关的数据、电路或逻辑(例如,状态机)以接收并处理解码的指令与相关数
据;以及一个或多个输出结构(例如,端口、互连、接口)以提供输出信号来配置NMI禁用控
制。

有利地,基于异常是否是在NMI处理中被获得的有条件地启用对进一步NMI的递送
的这种能力可帮助避免NMI的嵌套以及本文别处所描述的相关潜在问题。?#36865;猓?#25805;作系统或
任何其他有特权的软件不需要直接地设置NMI禁用位,直接地设置NMI禁用位可在被破坏软
件的情况下施加可能的风险。相反地,可在处理器的逻辑已经禁用NMI时,只允许进一步NMI
的递送保持为被禁用的。

为了避免混淆本描述,已示出和描述了相对简单的处理器。然而,处理器可以可任
选地包括其他公知的处理器组件。这种组件的可能示例包括但不限于,通用寄存器、状态寄
存器(有时被称作标志寄存器)、程序计数器寄存器、段寄存器、系统控制寄存器、指令取出
单元、预拾取缓冲器、一级或多级高速缓存(例如,等级1(LI)指令高速缓存、LI数据高速缓
存、以及L2数据/指令高速缓存)、指令转换后背缓冲器(TLB)、数据TLB、分支预测单元、无序
执行单元(例如,指令调度单元、寄存器重命名和/或分配单元、指令分派单元、重排序缓冲
器(ROB)、保留站、存储器排序缓冲器、引退单元等)、总线接口单元、地址生成单元、调试单
元、性能监测器单元、功?#20351;?#29702;单元、外部引脚、被包括在处理器中的其他组件,以及它们的
各种组合。这样的组件可以以各种不同的合?#39318;?#21512;和/或本领域已知的配置被耦合到一起。
多个实施例不限于任?#25105;?#30693;的这种组合或配置。?#36865;猓?#23454;施例可被包括在具有多核的处理
器中,多核中的至少一个用于执行本文所描述的异常处理程序返回指令的实施例。

图5是在执行异常处理程序返回指令的实施例的处理器中的方法595的实施例的
流程框图。

在一些实施例中,方法595可由图1的处理器102和/或图4的处理器402执行,和/或
在图1的处理器102和/或图4的处理器402内执行。本文中针对处理器102、402所描述的组
件、特征以及特定可选?#38468;?#20063;可任选地应用于方法595。可替代地,方法595可由类似的或不
同的处理器或装置执行,和/或在类似的或不同的处理器或装置内执行。?#36865;猓?#22788;理器102、
402可执行与方法595相同、类似、或不同的方法。

该方法包括在框596处接收异常处理程序返回指令的第一实例。第一异常处理程
序返回指令已用于从对应于第一异常的异常处理程序返回,该第一异常在此方法中不是在
NMI处理程序中被获得的。该方法包括在框597处响应于第一异常处理程序返回指令,将处
理器配置成(例如,通过NMI禁用控制)启用对后续接收到的NMI的递送。因为第一异常不是
在NMI处理程序中被获得的,因此不存在当前正被服务的未完成的待定NMI,使得可以提早
地启用对后继NMI的递送。

该方法包括在框598处接收异常处理程序返回指令的第二实例。虽然未在图示中
示出,应当理解,可在框597-598之间发生若干其他事件。例如,可接收NMI,可做出对NMI处
理程序的调用、当处在NMI处理程序中时可接收到异常,可做出对异常处理程序的调用、并
随后可使用在框598处接收到的异常处理程序返回指令的第二实例来执行从异常处理程序
的返回。即,异常处理程序返回指令的第二实例已被用于从对应于在NMI处理程序中被获得
的第二异常的异常处理程序返回。该方法包括在框599处响应于第二异常处理程序返回指
令,不将处理器配置成,或放弃将处理器配置成(例如,通过NMI禁用控制)启用对后续接收
的NMI的递送。有利地,不将NMI禁用控制配置成启用对后续接收到的NMI的递送可帮助避免
过早地启用NMI和/或嵌套的NMI。相反,可仍然延迟对于后续接收到的NMI的递送,直到从
NMI返回。

注意到,异常处理程序返回指令可具有取决于正被返回的异常是否是在NMI处理
期间被被获得的两个不同的行为。以相对基本的形式示出该方法。然而,操作可被添加至该
方法和/或从该方法中移除。?#36865;猓?#34429;然已经示出特定顺序的操作,但是顺序是示例性的。其
他实施例可以以不同的顺序执行操作、使操作重叠?#21462;?br />

可被修改以包含针对图5-6示出并描述的特征中的任一个的合适的异常处理程序
返回指令的一个特定示例实施例是IRET中断返回指令。此指令可针对操作数大小16位、32
位、以及64位通过助记符分别被称为IRET、IRETD、以及IRETQ。大多数汇编器对所有操作数
尺寸可互换地使用IRET助记符。软件可使用此指令以将程序控制从异常或中断处理程序中
返回到被异常、外部中断或软件生成的中断所中断的程序或过程(procedure)。指令还可用
于执行从嵌套的任务的返回。当调用(CALL)指令被用于发起任务转换或当中断或异常导致
任务转换至中断或异常处理程序时,可创建嵌套的任务。在真?#26723;刂纺?#24335;中,IRET指令执行
远返回(far return)到被中断的程序或过程。在此操作期间,处理器将返回指令指针、返回
代码段选择符、以及EFLAGS图像从栈分别弹出到扩展的指令指针(EIP)、代码段选择符
(CS)、以及标志(EFLAGS)寄存器,并随后对被中断的程序或过程?#25351;?#25191;行。在保护模式中,
IRET指令的动作取决于:EFLAGS寄存器中的NT(嵌套任务)以及VM(虚拟-8086模式)标志的
设置;来?#28304;?#30721;段选择符的RPL字段的当前特权等级(CPL)的设置;存储在当前栈上的
EFLAGS图像中的VM标志的设置;以及当前栈上的代码段选择符的RPL字段的设置。取决于这
些值,处理器执行以下类型的中断返回中的一种:(1)从虚拟-8086模式返回;(2)返回到虚
拟-8086模式;(3)特权等级内返回;(4)特权等级间返回;(5)从嵌套的任务返回(任务转
换)。

如果NT标志(例如,在EFLAGS寄存器中)被清除,则在没有任务转换的情况下,IRET
指令执行从中断过程的远返回。被返回的代码段一般与中断处理程序例程同样特权或比中
断处理程序例程更少特权(例如,如由从栈中弹出的代码段选择符的RPL字段指示的)。和使
用真?#26723;刂纺?#24335;中断返回时一样,IRET指令将返回指令指针、返回代码段选择符、以及
EFLAGS图像从栈分别弹出到扩展的指令指针、代码段选择符、以及EFLAGS寄存器,并随后恢
复对被中断的程序或过程的执行。如果返回是到另一个特权等级,或者如果返回是来自64
位模式,则在?#25351;?#31243;序执行之前,IRET指令还将栈指针与段选择符从栈弹出。如果返回是到
虚拟-8086模式,则处理器还将数据段选择符从栈弹出。

如果设置了NT标志(例如,在EFLAGS寄存器中),则IRET指令执行从嵌套任务(用调
用指令、中断、或异常来调用的任务)返回到调用或中断的任务的任务转换(返回)。执行
IRET指令的任务的更新状态被保存在它的TSS中。如果任务是稍后重新进入的,则执行跟随
IRET指令的代码。如果设置了NT标志且处理器处于IA-32e模式,则IRET指令可导致一般保
护异常。

如果NMI被阻挡,则IRET指令的执行解除对NMI的阻挡。发生此解除阻挡,即使该指
令导致错误。在这样的情况下,NMI在异常处理程序被调用之前是未经屏蔽的。

图6是具有嵌套NMI阻止支持模块680的实施例的操作系统模块632的实施例的框
图。嵌套NMI阻止支持模块包括处理器特征支持检查器模块684。处理器特征支持检查器模
块可与处理器的一个或多个处理器特征支持寄存器682耦合,或以其他方式与其通信。处理
器通常具有用于指定处理器的特征与能力的一个或多个特征支持和/或标识寄存器。处理
器特征支持检查器模块可用于检查或确定处理器是否支持嵌套NMI阻止机制/能力。例如,
处理器特征支持检查器模块可发布处理器特征标识指令(例如,CPUID指令等等)以执行此
检查。

嵌套NMI阻止支持模块可任选地包括嵌套NMI阻止启用控制配置模块686。嵌套NMI
阻止启用控制配置模块与处理器的嵌套NMI阻止启用控制622(例如嵌套NMI阻止启用控制
122)耦合,或以其他方式与其通信。作为示例,可在处理器的特定模式寄存器、控制或配置
寄存器等中找到嵌套NMI阻止启用控制。在一个方面,嵌套NMI阻止启用控制可表示能够被
操作系统或其他特权等?#24230;?#20214;但不被无特权等?#24230;?#20214;或应用等?#24230;?#20214;修改的特权等级控
制。如果处理器支持嵌套NMI阻止机制/能力,则配置模块686可任选地将嵌套NMI阻止启用
控制622配置成启用此机制/能力。可替代地,可出于某些原因确定不启用此机制/能力。

嵌套NMI阻止支持模块还可任选地包括“工作区”禁用模块688。该工作区禁用模块
与操作系统模块的一个或多个工作区模块690耦合,或以其他方式与其通信。

这些工作区模块可表示试图应付或避免与嵌套的NMI处理相关联的问题的本领域
已知的各种方法中的任一种。作为示例,工作区模块可用于在每个异常处理程序中采取步
骤,以检测NMI处理程序内部的嵌套并避免执行返回指令(例如,IRET指令)。如果不需要的
嵌套的中断实际上要被递送(诸如特殊栈处理),则他们可用于减轻或消除影响,一般地,这
样的工作区引发复?#26377;?#21644;/或性能方面的成本。在一些实施例中,如本文别处所述,当嵌套
NMI阻止机制/能力被启用,工作区禁用模块可任选地禁用这些工作区模块中的一个或多
个,但这不是必需的。

虽然已经主要针对NMI描述本文中所描述的各实施例,但是其他实施例可用于其
他类型的中断。例如,实施例适用于系统管理中断(SMI)和/或其他相对高优先级的中断(例
如,与NMI同样高的优先级或比NMI更高的优先级)。SMI的可能原因的示例包括但不限于:在
指定SMI引脚上对SMI进行信号传输的组件(例如,主板上的芯片集、硬件)、?#19978;?#32479;软件由于
对被系统硬件认为是特殊的特定位置的输入/输出访问所导致的软件SMI,等?#21462;?#36825;样的SMI
可允许进入系统管理模式(SMM)中。SMM可表示不同的且隔离的操作模式或执行环?#24120;?#20854;中
包括对操作系统的操作在内的正常执行被暂时地挂起,且SMI处理程序和/或其他SMM模式
(例如,固件(例如基本输入-输出系统(BIOS)的固件)和或软件)可对操作系统以及用户级
应用?#35813;?#22320;在高特权模式中执行。代表性地,SMM模式通常从对操作系统的其他操作模式而
言不可访问的地址空间执行。

如上所述,一般期望阻止过早地重新启用后继NMI的递送,过早地重新启用后继
NMI的递送可导致操作系统不稳定性和/或潜在的致命错误,因为对NMI的处理可能?#35272;?#20110;
任务门、中断堆栈表(IST)或与嵌套的NMI不完全兼容的处理器的其他特征。在某些系统中,
SMI可由在固件(例如,BIOS)中执行的SMI处理程序来处理,而大多数或所有其他中断(包括
NMI)通常由操作系统处理。出于这个原因,一般期望在SMI处理程序(例如,在BIOS和/或固
件中)正在操作以处理SMI时延迟对NMI的递送。为支?#25191;耍?#26576;些处理器可在递送SMI时启用
或配置NMI的暂时延迟或阻挡。如果在处理SMI时获得异常(例如,当SMI处理程序正在处理
SMI并在SMI处理程序返回之前),则异常处理程序在SMI处理程序返回时可能过早地重新启
用对后续NMI的递送。这可导致后续的NMI在SMI的处理期间被递送至BIOS/固件(即,不是被
递送至操作系统),而其此时应该是相反地被递送至操作系统(例如,NMI处理程序)。在一些
实施例中,指令(例如,BIOS异常处理程序返回指令)可使用类似于本文所公开的那些的技
术在没有过早的重新启用对NMI的递送的情况下从BIOS异常处理程序返回。?#36865;猓?#20854;他架构
可具有本领域技术人员将理解本文所描述的实施例适用的类似于SMI的其他类型的高优先
级中断。

示例性核架构、处理器和计算机架构

处理器核可以用出于不同目的的不同方式在不同的处理器中实?#24103;?#20363;如,这样的
核的实现可以包括:1)旨在用于通用计算的通用有序核;2)预期用于通用计算的高性能通
用无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包
括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或
多个通用无序核的CPU;以及2)包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专
用核的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分
开的芯片上的协处理器;2)在与CPU相同的封装中但分开的管芯上的协处理器;3)与CPU在
相同管芯上的协处理器(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学
(吞吐量)逻辑等专用逻辑,或被称为专用核);以及4)可以将所描述的CPU(有时被称为应用
核或应用处理器)、以上描述的协处理器?#36879;?#21152;功能包括在同一管芯上的芯片上系统。接着
描述示例性核架构,随后描述示例性处理器和计算机架构。

示例性核架构

有序和无序核框图

图7A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命
名的无序发布/执行流水线的框图。图7B是示出根据本发明的各实施例的要被包括在处理
器中的有序架构核的和示例性寄存器重命名的无序发布/执行架构核的示例性实施例的框
图。

图7A-B中的实线框示出了有序流水线和有序核,而可选增加的虚线框示出了寄存
器重命名的、无序发布/执行流水线和核。给定有序方面是无序方面的子集的情况下,将描
述无序方面。

在图7A中,处理器流水线700包括取出级702、长度解码级704、解码级706、分配级
708、重命名级710、调度(也称为分派或发布)级712、寄存器读取/存储器读取级714、执行级
716、写回/存储器写入级718、异常处理级722和提交级724。

图7B示出了包括耦合到执行引擎单元750的前端单元730的处理器核790,且执行
引擎单元和前端单元两者都耦合到存储器单元770。核790可以是精简指令集计算(RISC)
核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,
核790可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单
元(GPGPU)核、或图形?#35828;鵲取?br />

前端单元730包括耦合到指令高速缓存单元734的分支预测单元732,该指令高速
缓存单元耦合到指令转换后备缓冲器(TLB)736,该指令转换后备缓冲器耦合到指令取出单
元738,指令取出单元耦合到解码单元740。解码单元740(或解码器)可解码指令,并生成从
原始指令解码出的、或以其它方式?#20174;?#21407;始指令的、或从原始指令导出的一个或多个微操
作、微代码进入点、微指令、其它指令、或其它控制信号作为输出。解码单元740可使用各种
不同的机制?#35789;迪帧?#21512;适的机制的示例包括但不限于查?#20918;懟?#30828;件实?#24103;?#21487;编程逻辑阵列
(PLA)、微代码只读存储器(ROM)?#21462;?#22312;一个实施例中,核790包括(例如,在解码单元740中或
否则在前端单元730内的)用于存储某些宏指令的微代码的微代码ROM或其它介质。解码单
元740耦合至执行引擎单元750中的重命名/分配器单元752。

执行引擎单元750包括重命名/分配器单元752,该重命名/分配器单元耦合至引退
单元754和一个或多个调度器单元756的集合。调度器单元756表示任何数目的不同调度器,
包括预留站、中央指令窗?#21462;?#35843;度器单元756耦合到物理寄存器组单元758。每个物理寄存器
组单元758表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一?#21482;?#22810;种不同
的数据类型,诸如标?#31354;?#25968;、标量浮点、紧缩整数、紧缩浮点、向?#31354;?#25968;、向量浮点、状态(例
如,作为要执行的下一指令的地?#36820;?#25351;令指针)?#21462;?#22312;一个实施例中,物理寄存器组单元758
包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架
构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元758与引退单元754重叠
以示出可以用?#35789;?#29616;寄存器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和
引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组;使用寄存器?#25104;?#21644;寄存器池
等等)。引退单元754和物理寄存器组单元758耦合到执行群集760。执行群集760包括一个或
多个执行单元762的集合和一个或多个存储器访问单元764的集合。执行单元762可以对各
种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向?#31354;?#22411;、向量浮点)执行各种操作
(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集合的多
个执行单元,但其它实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。
调度器单元756、物理寄存器组单元758、执行群集760被示出为可能是复数个,因为某些实
施例为某些数据/操作类型创建了诸个单独流水线(例如,均具有各自调度器单元、物理寄
存器组单元和/或执行群集的标?#31354;?#25968;流水线、标量浮点/紧缩整数/紧缩浮点/向?#31354;?#25968;/
向量浮点流水线、和/或存储器访问流水线,以及在单独的存储器访问流水线的情况下特定
实施例被实现为仅仅该流水线的执行群集具有存储器访问单元764)。还应当理解,在使用
分开的流水线的情况下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水
线可以为有序发布/执行。

存储器访问单元764的集合耦合到存储器单元770,该存储器单元包括耦合到数据
高速缓存单元774的数据TLB单元772,其中数据高速缓存单元耦合到二级(L2)高速缓存单
元776。在一个示例性实施例中,存储器访问单元764可包括加载单元、存储地?#36820;?#20803;和存储
数据单元,其中的每一个均耦合至存储器单元770中的数据TLB单元772。指令高速缓存单元
734还耦合到存储器单元770中的第二级(L2)高速缓存单元776。L2高速缓存单元776被耦合
到一个或多个其他级的高速缓存,并最终被耦合到主存储器。

作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实?#33267;?#27700;线
700:1)指令取出738执行取出和长度解码级702和704;2)解码单元740执行解码级706;3)重
命名/分配器单元752执行分配级708和重命名级710;4)调度器单元756执行调度级712;5)
物理寄存器组单元758和存储器单元770执行寄存器读取/存储器读取级714;执行群集760
执行执行级716;6)存储器单元770和物理寄存器组单元758执行写回/存储器写入级718;7)
各单元可牵涉到异常处理级722;以及8)引退单元754和物理寄存器组单元758执行提交级
724。

核790可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一
些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼州桑尼维尔市
的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)),其中包括本文中描述的各指令。
在一个实施例中,核790包括用于支持紧缩数据指令集合扩展(例如,AVX1、AVX2)的逻辑,进
而允许由许多多媒体应用使用的操作将使用紧缩数据来执行。

应当理解,核可支持多线程化(执行两个或多个并行的操作或线程的集合),并且
可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单
个物理?#23435;?#29289;理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例
如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。

尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构
中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单
元734/774以及共享L2高速缓存单元776,但替代实施例可以具有用于指令和数据两者的单
个内部高速缓存,诸如例如一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实
施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或
者,所有高速缓存都可以在核和/或处理器的外部。

具体的示例性有序核架构

图8A-B示出更具体的示例性有序核架构的框图,该核将是芯片中的多个逻辑块中
的一个(包括相同类型和/或不同类型的其他核)。根据应用,这些逻辑块通过高带宽的互连
网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信。

图8A是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络802的连
接及其二级(L2)高速缓存的?#38236;?#23376;集804的框图。在一个实施例中,指令解码器800支持具
有紧缩数据指令集扩展的x86指令集。L1高速缓存806允许对进入标量和向量单元中的高速
缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元808和向量
单元810使用分开的寄存器集合(分别为标量寄存器812和向量寄存器814),并且在这些寄
存器之间转移的数据被写入到存储器并随后从一级(L1)高速缓存806读回,但是本发明的
替代实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存
器组之间传输而无需被写入和读回的通信路径)。

L2高速缓存的?#38236;?#23376;集804是全局L2高速缓存的一部分,该全局L2高速缓存被划
分成多个分开的?#38236;?#23376;集,即每个处理器核一个?#38236;?#23376;集。每个处理器?#21496;?#26377;到其自己的
L2高速缓存804的?#38236;?#23376;集的直接访?#20107;?#24452;。被处理器核读出的数据被存储在其L2高速缓
存子集804中,并且可以与其它处理器核访问其自己的?#38236;豅2高速缓存子集并行地被快速
访问。被处理器核写入的数据被存储在其自己的L2高速缓存子集804中,并在必要的情况下
从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器
核、L2高速缓存和其它逻辑块之类的代理在芯片内彼?#36865;?#20449;。每个环形数据路径为每个方
向1012位宽。

图8B是根据本发明的各实施例的图8A中的处理器核的一部分的展开图。图8B包括
L1高速缓存804的L1数据高速缓存806A部分,以及关于向量单元810和向量寄存器814的更
多?#38468;凇?#20855;体地说,向量单元810是16宽向量处理单元(VPU)(见16宽ALU 828),该单元执行
整型、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元820支持对寄
存器输入的混合、通过数值转换单元822A-B支持数值转换、并通过复制单元824支持对存储
器输入的复制。写掩码寄存器826允许断?#36816;?#24471;的向量写入。

具有集成存储器控制器和图形器件的处理器

图9是根据本发明的各实施例的可具有多于一个的核、可具有集成存储器控制器、
以及可具有集成图形器件的处理器900的框图。图9中的实线框示出具有单个核902A、系统
代理910、一个或多个总线控制器单元916的集合的处理器900,而虚线框的可选附加示出具
有多个核902A-N、系统代理单元910中的一个或多个集成存储器控制器单元914的集合以及
专用逻辑908的替代处理器900。

因此,处理器900的不同实现可包括:1)CPU,其中专用逻辑908是集成图形和/或科
学(吞吐量)逻辑(其可包括一个或多个核),并且核902A-N是一个或多个通用核(例如,通用
的有序核、通用的无序核、这两者的组合);2)协处理器,其中核902A-N是旨在主要用于图形
和/或科学(吞吐量)的多个专用核;以及3)协处理器,其中核902A-N是多个通用有序核。因
此,处理器900可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压
缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包
括30个或更多核)、或?#24230;?#24335;处理器?#21462;?#35813;处理器可以被实现在一个或多个芯片上。处理器
900可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多
个加工技术中的任何一个技术将该处理器实现在一个或多个衬底上。

存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高
速缓存单元906的集合、以及耦合至集成存储器控制器单元914的集合的外部存储器(未示
出)。该共享高速缓存单元906的集合可以包括一个或多个中间级高速缓存,诸如二级(L2)、
三级(L3)、四级(L4)或其它级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一
个实施例中,基于?#36820;?#20114;连单元912将集成图形逻辑908、共享高速缓存单元906的集合以及
系统代理单元910/集成存储器控制器单元914互连,但替代实施例可使用任何数量的公知
技术来将这些单元互连。在一个实施例中,可以维护一个或多个高速缓存单元906和核902-
A-N之间的一致性(coherency)。

在一些实施例中,一个或多个核902A-N能够实现多线程。系统代理910包括协调和
操作核902A-N的那些组件。系统代理单元910可包括例如功率控制单元(PCU)和显示单元。
PCU可以是或可包括用于调节核902A-N和集成图形逻辑908的功?#39318;?#24577;所需的逻辑和组件。
显示单元用于驱动一个或多个外部连接的显示器。

核902A-N在架构指令集方面可以是同构的或异构的;即,这些核902A-N中的两个
或更多个核可能能够执行相同的指令集,而其它核可能能够执行该指令集的仅仅子集或不
同的指令集。

示例性计算机架构

图10-13是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持
PC、个人数?#31181;?#29702;、工程工作站、服务器、网络设备、网络集线器、交换机、?#24230;?#24335;处理器、数
?#20013;?#21495;处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播
放器、手持设备以及各种其它电子设备的其它系?#25104;?#35745;和配置也是合适的。一般地,能够包
含本文中所公开的处理器和/或其它执行逻辑的多个系统和电子设备一般都是合适的。

现在参考图10,所示出的是根据本发明一个实施例的系统1000的框图。系统1000
可以包括一个或多个处理器1010、1015,这些处理器耦合到控制器中枢1020。在一个实施例
中,控制器中枢1020包括图?#26410;?#20648;器控制器中枢(GMCH)1090和输入/输出中枢(IOH)1050
(其可以在分开的芯片上);GMCH 1090包括存储器和图形控制器,存储器1040和协处理器
1045耦合到该存储器和图形控制器;IOH 1050将输入/输出(I/O)设备1060耦合到GMCH
1090。或者,存储器和图形控制器中的一个或两者被集成在处理器内(如本文中所描述的),
存储器1040和协处理器1045直接耦合到处理器1010以及控制器中枢1020,该控制器中枢与
IOH 1050处于单个芯片中。

附加处理器1015的任选性质用虚线表示在图10中。每一个处理器1010、1015可包
括本文中描述的处理核中的一个或多个,并且可以是处理器900的某一版本。

存储器1040可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者
的组合。对于至少一个实施例,控制器中枢1020经由诸如前端总线(FSB)之类的多分支总
线、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1095与处理器1010、1015
进行通信。

在一个实施例中,协处理器1045是专用处理器,诸如例如,高吞吐量MIC处理器、网
络或通信处理器、压缩引擎、图形处理器、GPGPU或?#24230;?#24335;处理器,等?#21462;?#22312;一个实施例中,控
制器中枢1020可以包括集成图形加速器。

在物理资源1010、1015之间会存在包括架构、微架构、热、和功耗特征等的一系列
?#20998;?#24230;量方面的各种差异。

在一个实施例中,处理器1010执行控制一般类型的数据处理操作的指令。协处理
器指令可?#24230;?#22312;这些指令中。处理器1010将这些协处理器指令识别为应当由附连的协处理
器1045执行的类型。因此,处理器1010在协处理器总线或者其它互连上将这些协处理器指
令(或者表示协处理器指令的控制信号)发布到协处理器1045。协处理器1045接受并执行所
接收的协处理器指令。

现在参考图11,所示为根据本发明的一实施例的更具体的第一示例性系统1100的
框图。如图11所示,多处理器系统1100是点对点互连系?#24120;?#24182;包括经由点对点互连1150耦合
的第一处理器1170和第二处理器1180。处理器1170和1180中的每一个都可以是处理器900
的某一版本。在本发明的一个实施例中,处理器1170和1180分别是处理器1010和1015,而协
处理器1138是协处理器1045。在另一实施例中,处理器1170和1180分别是处理器1010和协
处理器1045。

处理器1170和1180被示为分别包括集成存储器控制器(IMC)单元1172和1182。处
理器1170还包括作为其总线控制器单元的一部分的点对点(P-P)接口1176和1178;类似地,
第二处理器1180包括点对点接口1186和1188。处理器1170、1180可以使用点对点(P-P)接口
电路1178、1188经由P-P接口1150来交换信息。如图11所示,IMC 1172和1182将各处理器耦
合至相应的存储器,即存储器1132和存储器1134,这些存储器可以是?#38236;?#38468;连至相应的处
理器的主存储器的部分。

处理器1170、1180可各自经由使用点对点接口电路1176、1194、1186、1198的各个
P-P接口1152、1154与芯片组1190交换信息。芯片组1190可任选地经由高性能接口1139与协
处理器1138交换信息。在一个实施例中,协处理器1138是专用处理器,诸如例如高吞吐量
MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或?#24230;?#24335;处理器等?#21462;?br />

共享高速缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外
部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一
处理器或两个处理器的?#38236;?#39640;速缓存信息存储在该共享高速缓存中。

芯片组1190可经由接口1196耦合至第一总线1116。在一个实施例中,第一总线
1116可以是外围组件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线
之类的总线,但本发明的范围并不受此限制。

如图11所示,各种I/O设备1114可以连同总线桥1118耦合到第一总线1116,该总线
桥将第一总线1116耦合至第二总线1120。在一个实施例中,诸如协处理器、高吞吐量MIC处
理器、GPGPU的处理器、加速器(诸如例如图形加速器或数?#20013;?#21495;处理(DSP)单元)、现场可编
程门阵列或任何其它处理器的一个或多个附加处理器1115耦合到第一总线1116。在一个实
施例中,第二总线1120可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线
1120,在一个实施例中这些设备包括例如键盘/鼠标1122、通信设备1127以及诸如可包括指
令/代码和数据1130的盘驱动器或其它大容量存储设备的存储单元1128。?#36865;猓?#38899;频I/O
1124可以被耦合至第二总线1120。注意,其它架构是可能的。例如,代替图11的点对点架构,
系统可以实现多分支总线或其它这类架构。

现在参考图12,所示为根据本发明的实施例的更具体的第二示例性系统1200的框
图。图11和图12中的相同部件用相同附图标记表示,并从图12中省去?#36865;?1中的某些方面,
以避免使图12的其它方面变得模糊。

图12示出处理器1170、1180可以分别包括集成存储器和I/O控制逻辑(“CL”)1172
和1182。因此,CL 1172、1182包括集成存储器控制器单元并包括I/O控制逻辑。图12示出不
仅存储器1132、1134耦合到CL 1172、1182,而且I/O设备1214也耦合到控制逻辑1172、1182。
传统I/O设备1215被耦合至芯片组1190。

现在参照图13,所示出的是根据本发明一个实施例的SoC 1300的框图。在图9中,
相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图13中,互连
单元1302被耦合至:应用处理器1310,该应用处理器包括一个或多个核202A-N的集合以及
共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元
914;一组或一个或多个协处理器1320,其可包括集成图形逻辑、图像处理器、音频处理器和
视频处理器;静态随机存取存储器(SRAM)单元1330;直接存储器存取(DMA)单元1332;以及
用于耦合至一个或多个外部显示器的显示单元1340。在一个实施例中,协处理器1320包括
专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或?#24230;?#24335;
处理器等?#21462;?br />

本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组
合中。本发明的实施例可实现为在可编程系?#25104;?#25191;行的计算机程序或程序代码,该可编程
系统包括至少一个处理器、存储系统(包括?#36164;?#24615;和?#19988;资源?#20648;器和/或存储元件)、至少
一个输入设备以及至少一个输出设备。

可将程序代码(诸如图11中示出的代码1130)应用于输入指令,以执行本文描述的
各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本
申请的目的,处理系统包括具有诸如例如数?#20013;?#21495;处理器(DSP)、微控制器、专用集成电路
(ASIC)或微处理器之类的处理器的任何系统。

程序代码可以用高级程序化语言或面向对象的编程语言?#35789;?#29616;,以便与处理系统
通信。在需要时,也可用汇编语言或机器语言?#35789;?#29616;程序代码。事实上,本文中描述的机制
不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。

至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令
?#35789;?#29616;,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本
文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在?#34892;?#30340;机器可读介质上,并
被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。

这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品
的非瞬态的?#34892;?#23433;排,其包括存储介?#21097;?#35832;如:硬盘;任何其它类型的盘,包括软盘、光盘、紧
致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘?#35805;?#23548;体器件,例如只读存储
器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取
存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器
(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。

因此,本发明的各实施例还包括非瞬态的?#34892;?#26426;器可读介?#21097;?#35813;介质包含指令或
包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/
或系?#31243;?#24449;。这些实施例也被称为程序产品。

仿真(包括二进制变换、代码变形等)

在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指
令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿
真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软
件、硬件、固件、或其组合实?#24103;?#25351;令转换器可以在处理器上、在处理器外、或者部分在处理
器上?#20063;?#20998;在处理器外。

图14是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进
制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件
指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合?#35789;迪帧?#22270;14
示出可以使用x86编译器1404来编译高级语言1402形式的程序以生成可由具有至少一个
x86指令集核的处理器1416原生地执行的x86二进制代码1406。具有至少一个x86指令集核
的处理器1416表示能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个
x86指令集核的英特尔处理器基本相同的功能的任何处理器:(1)英特尔x86指令集核的指
令集的本质部分,或(2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以实现
与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代
码版本。x86编译器1404表示用于生成x86二进制代码1406(例如,目标代码)的编译器,该
x86二进制代码1406可利用或不利用附加的链路处理而在具有至少一个x86指令集核的处
理器1416上执行。类似地,图14示出可以使用替代的指令集编译器1408来编译高级语言
1402的程序以生成可由不具有至少一个x86指令集核的处理器1414(例如,具有执行加利福
尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集和/或执行加利福尼州桑尼维尔市的ARM
控股公司的ARM指令集的核的处理器)原生地执行的替代的指令集二进制代码1410。指令转
换器1412用于将x86二进制代码1406转换成可以由不具有x86指令集核的处理器1414原生
地执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1410相同,因为能够
这样做的指令转换器难以制造;然而,转换后的代码将完成通用操作,并且将由来自替代指
令集的指令构成。因此,指令转换器1412表示软件、固件、硬件或它们的组合,这些软件、固
件、硬件或它们的组合通过仿真、模拟或任何其他过程允许不具有x86指令集处理器或核的
处理器或其他电子设备执行x86二进制代码1406。

针对图1所描述的组件、特征以及?#38468;?#36824;可任选地应用于图2-3和/或图4-5中的任
一者。?#36865;猓?#38024;对任一装置所描述的组件、特征、以及?#38468;?#36824;可任选地应用于可由这种装置
和/或使用这种装置执行的任一方法中。任一系统可包括本文所描述的系统中的任一个,且
本文所描述的处理器中的任一个可被包括在这些系统(例如,图9-13)中的任一个中。

在?#24471;?#20070;和权利要求书中,可能已经使用了术语“耦合的”和/或“连接的”及其衍
生词。这些术语不旨在互为同义词。相反,在多个实施例中,“连接的”用于指示两个或更多
元件彼此直接物理和/或电接触。“耦合的”可意味着两个或更多个元件彼此直接物理和/或
电接触。然而,“耦合的?#24065;?#21487;意味着两个或更多个元件彼此并不直接接触,但是仍然彼此协
作或相互作用。例如,执行单元可通过一个或多个中间组件与解码单元耦合。在附图中,箭
头用于示出连接和耦合。

在?#24471;?#20070;和/或权利要求书中,可能已经使用了术语“逻辑”、“单元”、或“组件”。可
将这些术语中的每一个用于指代硬件、固件或它们的各种组合。在示例实施例中,这些术语
中的每一个可以指集成电路、专用集成电路、模拟电路、数字电路、可编程逻辑器件、包括指
令的存储器设备等,以及它们的各种组合。在一些实施例中,它们可包括至少某个硬件(例
如,晶体管、门、其他电路组件等)。

可能已经使用了术语“和/或”。如本文中所使用的,术语“和/或?#24065;?#24605;是一个或另
一个或两者(例如,A和/或B意思是:A或B,或者A和B两者)。

在以上描述中,为了提供对实施例的透彻理解,已阐述了特定的?#38468;凇?#28982;而,可以
在没有这些特定?#38468;?#20013;的一些的情况下?#35789;导?#20854;他实施例。本发明的范围不是由以上所提
供的具体示例来确定的,而仅由所附权利要求确定。在其他实例中,已经以框图形式和/或
没有?#38468;?#30340;形式示出了公知的电路、结构、设备和操作,以避免使对?#24471;?#20070;的理解变得模
糊。在认为合适的地方,已在诸附图之间重复了附图标记或附图标记的结尾部分以指示可
能可选地具有类似或相同特性的对应或类似的元件,除非另外指定或是显而易见的。

某些操作可由硬件组件执行,或者能以机器可执行或电路可执行指令来具体化,
这些机器可执行指令或电路可执行指令可用于使得和/或者导致机器、电路、或硬件组件
(例如,处理器、处理器的部分、电?#36820;?利用执行这些操作的指令来编程。这些操作还可任
选地由硬件和软件的组合执行。处理器、机器、电路或硬件可包括专用或特定电路或其他逻
辑(例如,可能与固件和/或软件组合的硬件),该专用或特定电路或其他逻辑用于执行和/
或处理指令,并且响应于该指令而存储结果。

一些实施例包括?#30772;?例如,计算机程序产品),所述?#30772;?#21253;括机器可读介质。该介
质可包括以机器可?#21015;?#24335;提供(例如,存储)信息的机制。机器可读介质可提供或在其上存
储有指令或指令序列,如果和/或当由机器执行执行所述指令或指令序列时,所述指令或指
令序列可操作以使所述机器执行和/或导?#28388;?#36848;机器执行本文中所公开的一?#21482;?#22810;种操
作、方法或技术。

在一些实施例中,机器可读介质可包括?#23884;?#26242;的机器可读存储介质。例如,有非暂
态的机器可读存储介质可包括,软盘、光存储介质、光盘、光学数据存储设备、CD-ROM、?#25490;獺?br />磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程
ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、
相变数据存储材料、?#19988;资源?#20648;器、?#19988;资?#24615;数据存储设备、非暂态存储器、或非暂态数
据存储设备?#21462;?#38750;暂态机器可读存储介质不?#31245;?#24577;传播的信号组成。在一些实施例中,存储
介质可包括:包含固态物质的?#34892;?#20171;质。

合适机器的示例包括但不限于,通用处理器、专用处理器、数?#33268;?#36753;电路、集成电
?#36820;取?#21512;适的机器的另一些示例包括,包含处理器、数?#33268;?#36753;电路或集成电?#36820;?#35745;算系统或
其他电子设备。此类计算机系统或电子设备的示例包括但不限于,台式计算机、膝上型计算
机、?#22987;?#26412;计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由
器和交换机)、移动互联网设备(MID)、媒体播放器、智能电视、?#38405;?#26700;上型设备、机顶盒和视
频游戏控制器。

贯穿本?#24471;?#20070;对例如“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施
例”的引用指示,可将特定的特征包括在本发明的实施中,但是不一定要求这么做。类似地,
在该描述中,为了使本公开流畅并辅助对各个发明性方面的理解,有时将各种特征一起归
组在单个实施例、附图或对它们的描述中。然而,不应当将该公开方法解释为?#20174;?#26412;发明需
要比每项权利要求中所明确记载的更多特征的意图。相反,如所附权利要求所?#20174;常?#21457;明性
方面在于少于单个的公开实施例的所有特征。因此,将遵循具体实施方式的各项权利要求
明?#36820;?#32467;合进该具体实施方式,每一项权利独立地作为本发明单独的实施例而存在。

示例实施例

以下示例关于进一步的实施例。这些示例中的?#38468;?#21487;以在一个或多个实施例中的
任何地方被使用。

示例1是一种包括用于解码异常处理程序返回指令的解码单元的处理器或其他装
置。该装置还包括与解码单元耦合的异常处理程序返回执行单元。异常处理程序返回执行
单元,响应于异常处理程序返回指令,用于如果对应于异常处理程序返回指令的异常是在
NMI处理程序中被获得的,则不将处理器配置成启用将后续接收到的不可屏蔽中断(NMI)递
送至NMI处理程序。异常处理程序返回执行单元,响应于异常处理程序返回指令,用于如果
异常不是在NMI处理程序中被获得的,则将处理器配置成启用将后续接收到的NMI递送至
NMI处理器。

示例2包括示例1的处理器,进一步包括保存的NMI指示检查器单元,响应于异常处
理程序返回指令,用于检查已从存储器检取到的(例如,从栈弹出)对应于异常的异常帧中
的,关于所述异常是否是在NMI处理程序中被获得的保存的指示,并部分地基于该保存的指
示,确定是否将处理器配置成启用后续接收到的NMI的递送。

示例3包括示例2的处理器,其中任选地,保存的NMI指示检查器单元,响应于异常
处理程序返回指令,当保存的指示具有第一值时,确定不将处理器配置成启用后续接收到
的NMI的递送,或当保存的指示具有第二不同值时,确定将处理器配置成启用后续接收到的
NMI的递送。

示例4包括示例2的处理器,其中任选地,保存的指示具有不对应于处理器的标志
寄存器中的一个或多个对应位的异常帧中的位置。

示例5包括示例2的处理器,其中任选地,保存的指示具有对应于处理器的标志寄
存器中的一个或多个预留位的异常帧中的位置,但其中任选地,处理器仍然将一个或多个
预留位保留在标志寄存器中。

示例6包括示例1的处理器,其中任选地,异常处理程序返回执行单元,响应于异常
处理返回指令,将检查保存的NMI禁用控制,该保存的NMI禁用控制是处理器的NMI禁用控制
的保存的副本,该NMI禁用控制用于交替地启用和延迟对NMI的递送。异常处理程序返回执
行单元,响应于异常处理程序返回指令,如果异常不是在NMI处理程序中被获得的,则通过
改变处理器的NMI禁用控制把处理器配置成启用将后续接收到的NMI递送至NMI处理程序。

示例7包括示例1到6中的任一项的处理器,进一步包括嵌套NMI阻止启用控制检查
器单元,其响应于异常处理程序返回指令,用于检查嵌套NMI阻止启用控制,该NMI阻止启用
控制交替地启用和禁用嵌套NMI阻止机制。

该机制当被启用时包括:异常处理程序返回执行单元基于异常是否是在NMI处理
程序中被获得,来调节对后续接收到的NMI的递送的启用。

示例8包括示例1到6中的任一项的处理器,其中任选地,异常处理程序返回指令具
有操作码,该操作码还用于从NMI处理程序返回。

示例9是处理器中的一种方法,该方法包括接收第一异常处理程序返回指令,该第
一异常处理程序返回指令已被用于从对应于不是在不可屏蔽中断(NMI)处理程序中被获得
的第一异常的异常处理程序返回。该方法包括,响应于第一异常处理程序返回指令,将处理
器配置成启用对后续接收到的NMI的递送。该方法还包括,接收第二异常处理程序返回指
令,该第二异常处理程序返回指令已被用于从对应于是在所述NMI处理程序中被获得的第
二异常的异常处理程序返回。该方法包括,响应于第二异常处理程序返回指令,不将处理器
配置成启用对后续接收到的NMI的递送。

示例10包括示例9的方法,进一步包括,响应于第二异常处理程序返回指令,检查
在从存储器检取到的异常帧中的,关于第二异常是在NMI处理程序中被获得的保存的指示。

示例11包括示例10的方法,其中任选地,检查保存的指示包括:检查不具有处理器
的标志寄存器中的对应一组一个或多个位的异常帧中的一组一个或多个位中的保存的指
示,

示例12包括示例10的方法,其中任选地,检查保存的指示包括:检查对应于处理器
的标志寄存器中的一组一个或多个预留位的异常帧中的一组一个或多个位中的保存的指

示例13包括示例9的方法,其中任选地,响应于第一异常处理程序返回指令而将处
理器配置成启用后续接收到的NMI的递送包括:改变NMI禁用控制。响应于被递送至NMI处理
程序的NMI,NMI禁用控制也由处理器改变。

示例14是处理器或其他装置,其包括用于确定异常是否是在NMI处理程序中被获
得的不可屏蔽中断(NMI)确定单元。该装置还包括与该NMI确定单元耦合的NMI保存单元。
NMI保存单元将保存关于异常是否是在NMI处理程序中被获得的指示。

示例15包括示例14的处理器,其中任选地,NMI保存单元包括NMI禁用控制保存单
元,该NMI禁用控制保存单元将保存处理器的NMI禁用控制。NMI禁用控制将被用于交替地暂
时禁用和启用对NMI的递送。

示例16包括示例15的处理器,其中任选地,NMI保存单元将关于异常是否是在NMI
处理程序中被获得的指示保存在要被存储在存储器中(例如,在栈结构上)的异常帧中。

示例17包括示例16的处理器,其中任选地,NMI保存单元将指示保存在不具有处理
器的标志寄存器中的对应一组一个或多个位的异常帧的一组一个或多个位中。

示例18包括示例16的处理器,其中任选地,NMI保存单元将指示保存在对应于处理
器的标志寄存器中的一组一个或多个预留位的异常帧的一组一个或多个位中。

示例19包括示例14的处理器,其中任选地,NMI确定单元包括NMI禁用控制确定单
元,该NMI禁用控制确定单元将通过检查处理器的NMI禁用控制来确定异常是否是在NMI处
理程序中被获得的。NMI禁用控制将被用于交替地暂时禁用和启用对NMI的递送。

示例20包括示例14到19中的任一项的处理器,进一步包括用于检查处理器的嵌套
NMI阻止启用控制的嵌套NMI阻止启用控制检查器单元,该嵌套NMI阻止启用控制交替地启
用和禁用嵌套的NMI阻止机制。嵌套NMI阻止机制当启用时包括保存关于异常是否是在NMI
处理程序中被获得的指示的NMI保存单元,并当未被启用时不包括保存该指示的NMI保存单
元。

示例21是处理指令的系?#24120;?#35813;系统包括互连和与该互连耦合的处理器。处理器将
接收异常处理程序返回指令。响应于异常处理程序返回指令,如果对应于异常处理程序返
回指令的异常是在NMI处理程序中被获得的,则处理器将保持处理器被配置成延迟将后续
接收到的不可屏蔽中断(NMI)递送至NMI处理程序。响应于该指令,如果异常不是在NMI处理
程序中被获得的,则处理器将处理器配置成将后续接收到的NMI递送至NMI处理程序。该系
统还包括与该互连耦合的动态随机存取存储器(DRAM)。

示例22包括示例21的系?#24120;?#20854;中任选地,响应于异常处理程序返回指令,处理器将
检查在已从存储器检取到的对应于异常的异常帧中的,关于异常是否是在NMI处理程序中
被获得的保存的指示。

示例23是一种?#30772;罰?#35813;?#30772;?#21253;括非暂态机器可读存储介质。该非暂态机器可读存
储介质存储异常处理程序返回指令。如果对应于异常处理程序返回指令的异常是在NMI处
理程序中被获得的,则异常处理程序返回指令(如果由机器执行)将使机器执行包括延迟将
后续接收到的不可屏蔽中断(NMI)递送至NMI处理程序的操作。如果该异常不是在NMI处理
程序中被获得的,则该操作还包括将后续接收到的NMI递送至NMI处理程序。

示例24包括示例23的?#30772;罰?#20854;中任选地,如果由机器执行异常处理程序返回指令,
则异常处理程序返回指令使机器执行包括检查在已从存储器检取到的异常帧中的,关于异
常是否是在NMI处理程序中被获得的保存的指示的操作。

示例25是处理器或其他装置,其用于执行示例9到13中?#25105;?#19968;项所述的方法。

示例26是处理器或其他装置,其包括用于执行示例9到13中?#25105;?#19968;项所述的方法
的设备。

示例27是处理器,其包括用于执行示例9到13中?#25105;?#19968;项所述的方法的单元和/或
逻辑和/或电路和/或设备的任何组合。

示例28是?#30772;罰?#20854;包括可选地非暂态机器可读介?#21097;?#35813;非暂态机器可读介质可选
地存储或以其他方式提供指令,如果和/或当由处理器、计算机系统、电子设备或其他机器
执行该指令时,该指令用于使该机器执行示例9到13中?#25105;?#19968;项的方法。

示例29是计算机系统、其他电子设备或其他装置,其包括总线、或其他互连、与该
互连耦合的示例1到8中?#25105;?#19968;项所述的处理器、以及与该互连耦合的至少一个组件,该至
少一个组件是从下列各项中选出的:动态随机存取存储器(DRAM)、网络接口、图形芯片、无
线通信芯片、全球移动通信系统(GSM)天线、相变存储器和视频相机。

示例30是基本上如本文中所述的处理器或其他装置。

示例31是用于执行基本上如本文中所述的任何方法的处理器或其他装置。

示例32是用于执行基本上如本文中所述的任何异常处理程序返回指令的处理器
或其他装置。

关于本文
本文标题:当从异常返回时避免对不可屏蔽中断的过早启用.pdf
链接地址:http://www.pqiex.tw/p-6091786.html
关于我们 - 网站声明 - 网?#38236;?#22270; - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
平码五不中公式规律 暗黑3夺魂之镰赚钱 年轻人如何创业赚钱 河北快3今日中奖号码 彩票转让合同 开跨国店赚钱 水果机破解技术打法 pt老虎机娱乐网站官方 一分彩大小单双玩法说明 fg美人捕鱼是什么平台 时时彩平刷软件