CN106663000B - 处理器和用于处理器中的中断处理的方法 - Google Patents
处理器和用于处理器中的中断处理的方法 Download PDFInfo
- Publication number
- CN106663000B CN106663000B CN201580045894.9A CN201580045894A CN106663000B CN 106663000 B CN106663000 B CN 106663000B CN 201580045894 A CN201580045894 A CN 201580045894A CN 106663000 B CN106663000 B CN 106663000B
- Authority
- CN
- China
- Prior art keywords
- nmi
- processor
- instruction
- maskable interrupts
- interrupts nmi
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 142
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000002159 abnormal effect Effects 0.000 claims abstract description 124
- 230000004044 response Effects 0.000 claims abstract description 40
- 230000015654 memory Effects 0.000 claims description 87
- 238000003860 storage Methods 0.000 claims description 64
- 238000004321 preservation Methods 0.000 claims description 52
- 230000007246 mechanism Effects 0.000 claims description 24
- 230000002265 prevention Effects 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 3
- 230000009471 action Effects 0.000 claims description 2
- 238000007689 inspection Methods 0.000 claims description 2
- 230000000717 retained effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 31
- 230000008878 coupling Effects 0.000 description 16
- 238000010168 coupling process Methods 0.000 description 16
- 238000005859 coupling reaction Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 13
- 210000004027 cell Anatomy 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 229910002056 binary alloy Inorganic materials 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 210000004940 nucleus Anatomy 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000001052 transient effect Effects 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000005856 abnormality Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 235000013290 Sagittaria latifolia Nutrition 0.000 description 1
- GGZVJPRZONQVPC-UHFFFAOYSA-N Smipine Natural products O=CN1CCCCC1C2CCN=C2 GGZVJPRZONQVPC-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 235000015246 common arrowhead Nutrition 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1072—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一方面的处理器包括用于解码异常处理程序返回指令的解码单元。该处理器还包括与解码单元耦合的异常处理程序返回执行单元。异常处理程序返回执行单元,响应于异常处理程序返回指令,如果对应于异常处理程序返回指令的异常是在NMI处理程序中被获得的,则不将处理器配置成启用将后续接收到的不可屏蔽中断(NMI)递送至NMI处理程序。异常处理程序返回执行单元,响应于异常处理程序返回指令,如果异常不是在NMI处理程序中被获得的,则将处理器配置成启用将后续接收到的NMI递送至NMI处理程序。公开了其他处理器、方法、系统以及指令。
Description
背景
技术领域
本文所描述的实施例总体涉及计算机系统。具体而言,本文所描述的实施例总体涉及对计算机系统中的中断与异常的处理。
背景信息
在操作期间,处理器与计算机系统通常会遇到所谓的中断与异常。中断与异常一般表示存在于处理器内或在正在执行的程序或任务内的、系统中的各个位置中的任一个中的状况或事件,并且需要处理器的注意。这些中断与异常通常导致处理器挂起对正在执行的程序或任务的处理,并将控制流转移给处理中断或异常的中断或异常处理程序(handler)模块。这常常被称为服务或处理中断或异常。
中断常常但不总是指在给定处理器或核外部发生的外部状况或事件。例如,输入和/或输出(I/O)设备、计时器、外围设备、外部处理器、或在给定处理器或核外部的其他外部硬件可将中断递送给给定处理器或核。作为另一个示例,处理器的一个核可将中断递送给处理器的另一个核。然而,并非所有中断都是由于外部事件。某些中断可在核的内部产生,并且可因为它们是异步的而被作为中断递送。某些中断不是异步的。例如,存在某些同步的源于核的中断。作为另一个示例,可同步地断言中断以再发出(reissue)或再断言遗漏的或延迟的(例如,屏蔽的(masked))的中断。通常,大多数中断是异步的并且是由于外部状况而产生的。
相反,异常通常指在给定处理器或核的内部发生的内部状况或事件。例如,异常通常由给定处理器或核的执行流水线内的正被执行的指令造成。异常一般表示一般由指令的执行触发的,且一般以和相关指令的特定关系而被递送给的同步事件。某些类型的同步事件(例如,错误)一般被递送而非执行相关的指令,然而其他类型的同步事件(例如,陷阱)一般在执行相关指令后立即被递送。
可将中断进一步分类为可屏蔽的(maskable)中断与不可屏蔽的中断(NMI)。可屏蔽的中断可被屏蔽。例如,某些处理器具有可屏蔽性控制(maskability control),诸如,例如标志、条件码或状态位,该可屏蔽控制性允许所有可屏蔽中断被屏蔽为一组。例如,某些英特尔架构兼容处理器具有中断标志(IF),该中断标志当被清除成二进制零时不允许可屏蔽中断被递送到软件,但当被设置成二进制一时允许可屏蔽中断被递送到软件。
与可屏蔽中断相反,不可屏蔽中断(NMI)一般不能被用于屏蔽可屏蔽中断的可屏蔽性控制(例如,IF标志)屏蔽。然而,一旦已经将NMI递送给软件,某些处理器可调用硬件条件来试图阻止将进一步(further)的NMI递送给软件,直到已经完成了对初始NMI的处理。例如,在64和IA-32架构软件开发者手册(64and IA-32ArchitecturesSoftware Developer's Manual)卷3A、订单编号325462-051US、2014年6月出版、章节6.7与6.7.1部分地中描述了在接收到NMI时,处理器可调用某些硬件条件以试图确认没有接收到其他中断(包括NMI中断)直到负责处理NMI的NMI处理程序已经完成执行控制流并将控制流返回到初始程序或任务。这种对进一步的NMI的递送的阻止或延迟试图阻止NMI处理程序的嵌套执行。
附图说明
通过参考用于说明实施例的以下描述和所附附图,可最佳地理解本发明。在附图中:
图1是其中可实现本发明的实施例并具有嵌套NMI阻止单元的实施例的计算机系统的实施例的框图。
图2是能用于将异常是否是在NMI处理程序中被获得的指示保存在异常帧中的嵌套NMI阻止单元的实施例的框图。
图3是保存异常是在NMI处理程序中被获得的指示的方法的实施例的流程框图。
图4是要执行异常处理程序返回指令的实施例的处理器的实施例的框图。
图5是在执行异常处理程序返回指令的实施例的处理器中的方法的实施例的流程框图。
图6是具有嵌套NMI阻止支持模块的实施例的操作系统模块的实施例的框图。
图7A是示出有序流水线的实施例以及寄存器重命名的无序发布/执行流水线的实施例的框图。
图7B是处理器核的实施例的框图,该处理器核包括耦合到执行引擎单元的前端单元,并且前端单元和执行引擎单元两者都耦合到存储器单元。
图8A是单个处理器核以及它与管芯上互连网络的连接及其第二级(L2)高速缓存的本地子集的实施例的框图。
图8B是图8A的处理器核的部分的展开图的实施例的框图。
图9是可具有多于一个的核、可具有集成存储器控制器并且可具有集成图形器件的处理器的实施例的框图。
图10是计算机架构的第一实施例的框图。
图11是计算机架构的第二实施例的框图。
图12是计算机架构的第三实施例的框图。
图13是芯片上系统架构的实施例的框图。
图14是根据本发明的实施例的使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
处理处理器中的NMI的一个挑战是在从异常返回时可能过早地启用进一步NMI的递送。如在背景部分中所讨论的,在接收到NMI时,某些处理器可调用某些硬件条件以试图确认没有收到其他中断(包括NMI中断),直到负责处理NMI的NMI处理程序已经完成了执行控制流并将控制流返回的初始程序或任务。例如,处理器可通过由软件不可见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的处理可依赖于任务门、中断堆栈表(IST)或与嵌套NMI不完全兼容的处理器的其他特征。在处理器被用于一般预期NMI与中断(诸如机器校验异常)会共存的高可靠性环境中时,这往往是特别成问题的。
本文公开的是当从异常返回时避免过早地启用不可屏蔽中断的方法、装置、系统以及指令。在以下描述中,阐述了多个特定细节(例如,特定的微架构细节、操作的序列、指令操作等)。然而,在没有这些特定细节的情况下,也可实践实施例。在其他实例中,未详细示出公知的电路、结构和技术以避免混淆对本描述的理解。
图1是其中可以实现本发明的各实施例的计算机系统100的实施例的框图。在各个实施例中,计算机系统可表示台式计算机、膝上型计算机、笔记本计算机、笔记本、智能电话、手机、服务器、网络设备(例如,路由器、开关等等)、媒体播放器、智能电视机、上网机、机顶盒、视频游戏控制器或本领域已知的其他类型的电子设备。计算机系统包括处理器102和存储器130。处理器与存储器耦合,或通过常规的耦合机制125(例如,通过一个或多个总线、中枢、存储器控制器、芯片组组件等等)以其他方式彼此通信。
在一些实施例中,处理器102可以是通用处理器(例如,台式计算机、膝上型计算机或其他计算机中所使用类型的通用微处理器或中央处理单元(CPU))。替代地,处理器可以是专用处理器。合适的专用处理器的示例包括但不仅限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器)。该处理器可具有各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、超长指令字(VLIW)架构、混合架构、其他类型的架构中的任一者,或具有不同架构的组合(例如,不同的核可具有不同的架构)。
存储器130可包括一个或多个不同的存储器设备和/或一种或多种不同类型的存储器。例如,在一些实施例中,存储器可包括动态随机存取存储器(DRAM),而在其他实施例中,存储器可包括闪存。存储器包括操作系统(OS)模块132。虽然示出的是单个OS模块,其他实施例可任选地包括两个或更多个OS模块和/或可任选地包括虚拟机管理器(VMM)模块、管理程序模块,等等。OS模块包括NMI处理程序模块134以及异常处理程序模块136。存储器还包括一个或多个应用模块142,例如,诸如字处理应用程序、电子表格、绘图应用程序、电子邮件应用程序等。存储器还具有一个或多个堆栈结构144,该堆栈结构可用于存储关于计算机程序的活跃例程的信息,以便帮助保持追踪:在活跃例程完成执行时应该将控制予以返回的时点(point)。堆栈结构有时也被称作调用栈结构、执行栈结构、运行时栈结构、机器栈机构,或简称为栈。
在操作期间,执行软件104可在处理器上执行。执行软件可包括从存储器(例如,从OS模块和/应用模块)加载的并且由执行流水线106(例如,解码器、执行单元等)执行的处理器的指令集的宏指令或指令。执行软件可利用相关的架构状态108,例如,诸如标志寄存器、程序计数器、代码段选择符、通用寄存器、紧缩数据寄存器、其他架构寄存器等等。
在操作期间,处理器可遭遇不可屏蔽中断(NMI)。在不同的实施例中可以以不同的方式遭遇NMI。在一些实施例中,处理器可包括中断和异常单元110,用于接收对应于NMI的事件121。例如,中断和异常单元110可包括:可编程中断控制器(例如,本地高级可编程中断控制器(LAPIC)),用于从各种内部源和/或外部源收集事件121并将它们映射成中断或异常(例如,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。响应于NMI120的指示,处理器和/或嵌套NMI阻止单元可通过暂时地禁用或延迟进一步NMI的递送来阻止嵌套的NMI。在一些实施例中,嵌套NMI阻止单元可具有NMI禁用控制114。NMI禁用控制可广泛地表示位、一组位、模式或硬件条件,以交替地启用与延迟对进一步NMI的递送。例如,NMI禁用位或一组位可具有第一值(例如,位可被清除成二进制零),以启用进一步NMI的递送,或替代地可具有第二不同值(例如,该位可被设置成二进制一)以暂时地禁用或延迟进一步NMI的递送。在一些实施例中,嵌套NMI阻止单元可具有NMI禁用控制配置单元112,用于将NMI禁用控制114配置成交替地启用或延迟对进一步NMI的递送。响应于NMI 120的指示,NMI禁用控制配置单元112可用于将NMI禁用控制114配置成暂时地禁用或延迟对进一步NMI的递送(例如,可将单个位设置成二进制一)。
典型地,当将NMI禁用控制配置成暂时地阻止或禁用对后续NMI的递送时,NMI禁用控制可导致中断和异常单元110(或它们的逻辑或它们的电路)或将中断和异常单元110(或它们的逻辑或它们的电路)配置成暂时地阻止或延迟后续NMI的递送。应当理解,虽然单个位可能是足够的,但可任选地使用两个或更多个位,以及可根据任何期望的惯例使用一个位或者两个或更多个位的任何期望值来表示启用状态与禁用状态。在图示中,NMI禁用控制配置单元与NMI禁用控制被示成是分开的单元,但是在其他的实施例中,它们可任选地被包括在所示单元中的一个中(例如,在中断与异常单元110中)。
当NMI处理程序模块134正在处理或服务NMI(例如,NMI 120)时,可能发生异常118。在一些实施例中,异常可在执行流水线106正在处理执行软件104的指令时发生。合适类型的异常的示例包括错误、陷阱以及中止。是否将异常分类为错误、陷阱或中止可从一个实现到另一个实现有所变化,和/或基于其中异常发生的不同环境而变化。错误和陷阱常常指在没有损失程序或任务连续性的情况下一般可重启导致异常的程序或任务对其的执行的那些异常。错误常常表示一般可被改正的那些异常。不同类型的错误的示例包括但不限于,页错误、一般保护错误、段不存在、栈段错误、除法错误、无效或未定义的操作码、数学协处理器不可用、数学错误、定位检查错误、SIMD浮点异常错误、虚拟化异常错误,等等。陷阱(trap)常常表示在导致了它们的指令完成之后被递送的那些异常。不同类型的陷阱的示例包括但不限于断点陷阱与上溢陷阱。与错误以及陷阱相反,中止(abort)常常表示在没有损失程序或任务连续性的情况下常常不允许导致了异常的程序或任务被重启的那些中断。中止常常指难以从中恢复的不平常事件。不同类型的中断的示例包括但不限于,双误中止与机器校验中止。
可将异常提供给中断和异常单元110。响应于接收到异常,中断和异常单元或处理器可通过向异常处理程序模块136做出调用128来发起对异常的处理。例如,处理器可查阅中断和/或异常描述符表结构或处理器的其他结构,以定位对应于异常的向量,并可随后调用对应于所定位的向量的异常处理程序。
嵌套NMI阻止单元149具有NMI确定单元138以及NMI保存单元140的实施例。可以硬件(例如,集成电路)、固件(例如,微码或者存储在非易失性存储上的其他指令或代码)或者它们的结合来实现这些组件中的每个。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中被获得的指示。在一些实施例中,位或一组位可具有第一值(例如,单个位可被设置成二进制一(或可替代地,被清除成二进制零))以指示异常是在NMI中被获得的,或可具有第二不同值(例如,该单个位可被清除成二进制零(或可替代地,被设置成二进制一))以指示异常不是在NMI中被获得的。保存异常是在NMI中被获得或不是在NMI中被获得的指示也可被视为保存应该延迟或不延迟进一步的NMI的递送和/或保存NMI禁用控制114的值的指示。例如,如果异常是在NMI中被获得的,则它可对应于NMI禁用控制的第一值,然而如果异常不是在NMI中被被获得的,则它可对应于NMI禁用控制的第二不同值。
在不同的实施例中可将该指示存储或保存在各种不同的位置中。在一些实施例中,可将该指示存储或以其他方式保存在要被存储在存储器中的异常帧中(例如,在栈结构(例如,栈结构144)中)。如所示,在一些实施例中,NMI保存单元140可任选地是异常帧生成单元150的一部分。可替代地,NMI保存单元可任选地与异常帧产生单元分开,但与异常帧产生单元耦合或以其他方式与异常帧生成单元通信。将指示存储在栈结构上的异常帧中的一个优势是栈结构可能已经具有可被利用的对嵌套的本机内建支持。作为另一选项,在其他实施例中,可将指示存储或保存(例如,在异常帧或其他数据结构中)在任务状态段(TSS)或类似的结构中。TSS可表示用于存储关于任务的信息并用于被操作系统模块用于任务管理的结构。例如,OS模块可在任务切换时将信息存储在TSS上。除了所保存的指示,可被存储在TSS中的其他信息包括,例如处理器寄存器状态、I/O端口许可、内级栈指针、先前的TSS链路等。在又一实施例中,可将指示存储或以其他方式保存在异常处理程序内的或可由异常处理程序访问到的数据结构中(例如,在存储器130中的一些位置中)。在这样的实施例中,指示还可包括足够允许其与异常帧相关联的信息及其相关的内容(例如,保存的架构状态)。在又一其他实施例中,可将指示潜在地与异常状态一起存储在或以其他方式保存在处理器寄存器中,使用该处理器寄存器而不使用和/或除了栈上的异常帧,以将信息在处理器与异常处理程序模块之间进行传递。
如将在下面进一步解释的,有利的是,保存异常是否是在NMI中被被获得的指示可用于有条件地确定在从异常处理程序返回时是否重新启动对进一步NMI的即时递送。例如,如果异常不是在NMI处理期间被获得,则当处理器执行异常处理程序返回指令时,异常处理程序返回指令可重新启动对进一步NMI的立即递送,但如果异常是在NMI处理期间被获得,则可放弃重新启用对进一步NMI的递送。在这种条件下放弃重新启用对进一步NMI的递送可帮助防止NMI的嵌套以及可从其导致的相关问题。
在一些实施例中,先前描述的异常处理程序模块136帮助防止过早地启动对NMI的递送的能力可一直被启用或打开。在其他的实施例中,可例如通过操作系统或其他有特权的和/或系统级的软件将此能力配置成被启用或禁用。例如,处理器可任选地具有嵌套NMI阻止启用控制122。嵌套的NMI阻止启用控制可包括例如具有第一值的一个或多个位(例如,单个位可被设置成二进制一(或可替代地被清除成二进制零)),用于启用嵌套NMI阻止能力/机制(例如,包括先前描述的异常处理程序模块的能力),或可具有第二不同值的一个或多个位(例如,该单个位可被清除成二进制零(或可替代地被设置成二进制一)),用于禁用嵌套NMI阻止能力/机制。以此方式,如对特定实现所期望的,系统可使用或不使用此能力/机制。
图2是嵌套NMI阻止单元249的实施例的框图,嵌套NMI阻止单元249用于通过保存异常是否在NMI处理程序中被获得的指示256(例如,在异常帧254中)来帮助阻止嵌套的NMI。在此实施例中,将异常是否是在NMI处理程序中被获得的指示256实现为保存的NMI禁用控制值256。
嵌套NMI阻止单元249包括可用于确定NMI禁用控制值的NMI禁用控制确定单元238。这也可或可替代地被视为确定对应于对异常处理程序模块的调用的异常是否是在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中的一个或多个位。在一些实施例中,这些一个或多个位可以是尚未用于一些其他目的(例如,尚未用于架构状态209)的异常帧的任何先前未使用的位。可任选地使用各种先前未使用的位。在一些实施例中,保存的NMI禁用控制256可不具有处理器的实际架构状态中的对应一组一个或多个位(例如,可不存在处理器的标志寄存器中的对应一组一个或多个位)。常常不期望将附加的标志增加到处理器的标志寄存器(例如,出于兼容性原因)。使用不具有标志寄存器中的对应一组一个或多个位的异常帧的一组一个或多个位可允许NMI禁用控制214的保存而并不会施加兼容性困难。在一些实施例中,用于保存的NMI禁用控制256的异常帧的该一组一个或多个位可以不是处理器的标志寄存器中的预留位。在其他的实施例中,用于保存的NMI禁用控制256的异常帧的该一组一个或多个位可具有对应于处理器的标志寄存器中的预留位的异常帧中的位置,但在一些实施例中,处理器可仍然保留或不使用实际标志寄存器中的这些对应位。可替代地,如果期望的话,一个或多个位可任选地被添加到处理器的标志寄存器,并具有异常帧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的本文中所描述的组件、特征以及特定的可选细节也可任选地应用于方法357。可替代地,方法357可由类似的或不同的单元或者其他装置执行,和/或在类似的或不同的单元或者其他装置内执行。此外,单元149、249可执行与方法357相同、类似、或不同的方法。
该方法包括在框358处确定异常是在NMI处理程序中被获得。在一些实施例中,可通过检查处理器的NMI禁用控制来做出此确定。在一些实施例中,被检查的NMI禁用控制可具有处理器将其配置成在接收到NMI时延迟进一步NMI的递送的特性。
该方法包括在框359处保存异常被带到NMI处理程序内的指示。在一些实施例中,可将该指示保存在要被存储在存储器中的异常帧中(例如,被推到栈结构上)。在一些实施例中,可将该指示保存在不具有处理器的标志存储器中的对应一组一个或多个位的异常帧的一组一个或多个位中。在一些实施例中,可将该指示保存在对应于处理器的标志寄存器中的一组一个或多个预留位的异常帧的一组一个或多个位中,但处理器可仍然保留对这些位的使用而非实际上使用它们。在一些实施例中,该指示可以是处理器的NMI禁用控制的NMI禁用控制值。
图4是要执行异常处理程序返回指令460的实施例的处理器402的实施例的框图。处理器可以是先前描述的类型的处理器的任一种(例如,通用处理器或专用处理器)。在操作期间,处理器可接收异常处理程序返回指令。例如,可从互连上的存储器接收指令。指令可表示宏指令、汇编语言指令、机器代码指令、或其他指令、或处理器的指令集的控制信号。
在一些实施例中,该指令可表示要在异常处理程序模块结束时被包括且要被用于将控制流从异常处理程序模块返回到被异常中断的程序或任务的指令。虽然指令在本文被称为异常处理程序返回指令,但是它也可任选地是中断处理程序返回指令(例如,用于从异常以及中断两者返回的指令)。
该处理器包括解码单元或解码器462。解码单元可接收并解码异常处理程序返回指令460。解码单元可输出反映、表示相对较高级的异常处理程序返回指令和/或从相对较高级的异常处理程序返回指令导出的一个或多个相对较低级的指令或控制信号(例如,一个或多个微指令、微操作、微码入口点、经解码的指令或控制信号等)。在一些实施例中,解码单元可以包括用于接收指令的一个或多个输入结构(例如端口、互连、接口)、与输入结构耦合用于识别并解码指令的指令识别和解码逻辑、以及与指令识别和解码逻辑耦合用于输出低级指令或控制信号的一个或多个输出结构(例如端口、互连、接口)。可使用各种不同机制来实现该解码单元,包括但不限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)和本领域中已知的用于实现解码单元的其他机制。
异常处理程序返回执行单元464与解码单元462耦合。异常处理程序返回执行单元可接收表示异常处理程序返回指令和/或从其导出的一个或多个经解码或以其他方式转换的指令或控制信号。异常处理程序返回执行单元还可接收或以其他方式访问保存的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和/或处理器可包括专用的或特定的逻辑(例如,晶体管、集成电路或潜在地与固件(例如,存储在非易失性存储器中的指令)和/或软件结合的其他硬件),响应于异常处理程序返回指令和/或作为其结果(例如,响应于从异常处理程序返回指令解码出的一个或多个指令或控制信号),该专用的或特定的逻辑可用于执行异常处理程序返回指令和/或配置NMI禁用控制。在一些实施例中,NMI禁用控制配置单元可包括:一个或多个输入结构(例如,端口、互连、接口)以接收解码的指令;以及与该一个或多个输入结构耦合的相关的数据、电路或逻辑(例如,状态机)以接收并处理解码的指令与相关数据;以及一个或多个输出结构(例如,端口、互连、接口)以提供输出信号来配置NMI禁用控制。
有利地,基于异常是否是在NMI处理中被获得的有条件地启用对进一步NMI的递送的这种能力可帮助避免NMI的嵌套以及本文别处所描述的相关潜在问题。此外,操作系统或任何其他有特权的软件不需要直接地设置NMI禁用位,直接地设置NMI禁用位可在被破坏软件的情况下施加可能的风险。相反地,可在处理器的逻辑已经禁用NMI时,只允许进一步NMI的递送保持为被禁用的。
为了避免混淆本描述,已示出和描述了相对简单的处理器。然而,处理器可以可任选地包括其他公知的处理器组件。这种组件的可能示例包括但不限于,通用寄存器、状态寄存器(有时被称作标志寄存器)、程序计数器寄存器、段寄存器、系统控制寄存器、指令取出单元、预拾取缓冲器、一级或多级高速缓存(例如,等级1(LI)指令高速缓存、LI数据高速缓存、以及L2数据/指令高速缓存)、指令转换后背缓冲器(TLB)、数据TLB、分支预测单元、无序执行单元(例如,指令调度单元、寄存器重命名和/或分配单元、指令分派单元、重排序缓冲器(ROB)、保留站、存储器排序缓冲器、引退单元等)、总线接口单元、地址生成单元、调试单元、性能监测器单元、功率管理单元、外部引脚、被包括在处理器中的其他组件,以及它们的各种组合。这样的组件可以以各种不同的合适组合和/或本领域已知的配置被耦合到一起。多个实施例不限于任何已知的这种组合或配置。此外,实施例可被包括在具有多核的处理器中,多核中的至少一个用于执行本文所描述的异常处理程序返回指令的实施例。
图5是在执行异常处理程序返回指令的实施例的处理器中的方法595的实施例的流程框图。
在一些实施例中,方法595可由图1的处理器102和/或图4的处理器402执行,和/或在图1的处理器102和/或图4的处理器402内执行。本文中针对处理器102、402所描述的组件、特征以及特定可选细节也可任选地应用于方法595。可替代地,方法595可由类似的或不同的处理器或装置执行,和/或在类似的或不同的处理器或装置内执行。此外,处理器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处理期间被被获得的两个不同的行为。以相对基本的形式示出该方法。然而,操作可被添加至该方法和/或从该方法中移除。此外,虽然已经示出特定顺序的操作,但是顺序是示例性的。其他实施例可以以不同的顺序执行操作、使操作重叠等。
可被修改以包含针对图5-6示出并描述的特征中的任一个的合适的异常处理程序返回指令的一个特定示例实施例是IRET中断返回指令。此指令可针对操作数大小16位、32位、以及64位通过助记符分别被称为IRET、IRETD、以及IRETQ。大多数汇编器对所有操作数尺寸可互换地使用IRET助记符。软件可使用此指令以将程序控制从异常或中断处理程序中返回到被异常、外部中断或软件生成的中断所中断的程序或过程(procedure)。指令还可用于执行从嵌套的任务的返回。当调用(CALL)指令被用于发起任务转换或当中断或异常导致任务转换至中断或异常处理程序时,可创建嵌套的任务。在真实地址模式中,IRET指令执行远返回(far return)到被中断的程序或过程。在此操作期间,处理器将返回指令指针、返回代码段选择符、以及EFLAGS图像从栈分别弹出到扩展的指令指针(EIP)、代码段选择符(CS)、以及标志(EFLAGS)寄存器,并随后对被中断的程序或过程恢复执行。在保护模式中,IRET指令的动作取决于:EFLAGS寄存器中的NT(嵌套任务)以及VM(虚拟-8086模式)标志的设置;来自代码段选择符的RPL字段的当前特权等级(CPL)的设置;存储在当前栈上的EFLAGS图像中的VM标志的设置;以及当前栈上的代码段选择符的RPL字段的设置。取决于这些值,处理器执行以下类型的中断返回中的一种:(1)从虚拟-8086模式返回;(2)返回到虚拟-8086模式;(3)特权等级内返回;(4)特权等级间返回;(5)从嵌套的任务返回(任务转换)。
如果NT标志(例如,在EFLAGS寄存器中)被清除,则在没有任务转换的情况下,IRET指令执行从中断过程的远返回。被返回的代码段一般与中断处理程序例程同样特权或比中断处理程序例程更少特权(例如,如由从栈中弹出的代码段选择符的RPL字段指示的)。和使用真实地址模式中断返回时一样,IRET指令将返回指令指针、返回代码段选择符、以及EFLAGS图像从栈分别弹出到扩展的指令指针、代码段选择符、以及EFLAGS寄存器,并随后恢复对被中断的程序或过程的执行。如果返回是到另一个特权等级,或者如果返回是来自64位模式,则在恢复程序执行之前,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阻止启用控制可表示能够被操作系统或其他特权等级软件但不被无特权等级软件或应用等级软件修改的特权等级控制。如果处理器支持嵌套NMI阻止机制/能力,则配置模块686可任选地将嵌套NMI阻止启用控制622配置成启用此机制/能力。可替代地,可出于某些原因确定不启用此机制/能力。
嵌套NMI阻止支持模块还可任选地包括“工作区”禁用模块688。该工作区禁用模块与操作系统模块的一个或多个工作区模块690耦合,或以其他方式与其通信。
这些工作区模块可表示试图应付或避免与嵌套的NMI处理相关联的问题的本领域已知的各种方法中的任一种。作为示例,工作区模块可用于在每个异常处理程序中采取步骤,以检测NMI处理程序内部的嵌套并避免执行返回指令(例如,IRET指令)。如果不需要的嵌套的中断实际上要被递送(诸如特殊栈处理),则他们可用于减轻或消除影响,一般地,这样的工作区引发复杂性和/或性能方面的成本。在一些实施例中,如本文别处所述,当嵌套NMI阻止机制/能力被启用,工作区禁用模块可任选地禁用这些工作区模块中的一个或多个,但这不是必需的。
虽然已经主要针对NMI描述本文中所描述的各实施例,但是其他实施例可用于其他类型的中断。例如,实施例适用于系统管理中断(SMI)和/或其他相对高优先级的中断(例如,与NMI同样高的优先级或比NMI更高的优先级)。SMI的可能原因的示例包括但不限于:在指定SMI引脚上对SMI进行信号传输的组件(例如,主板上的芯片集、硬件)、由系统软件由于对被系统硬件认为是特殊的特定位置的输入/输出访问所导致的软件SMI,等等。这样的SMI可允许进入系统管理模式(SMM)中。SMM可表示不同的且隔离的操作模式或执行环境,其中包括对操作系统的操作在内的正常执行被暂时地挂起,且SMI处理程序和/或其他SMM模式(例如,固件(例如基本输入-输出系统(BIOS)的固件)和或软件)可对操作系统以及用户级应用透明地在高特权模式中执行。代表性地,SMM模式通常从对操作系统的其他操作模式而言不可访问的地址空间执行。
如上所述,一般期望阻止过早地重新启用后继NMI的递送,过早地重新启用后继NMI的递送可导致操作系统不稳定性和/或潜在的致命错误,因为对NMI的处理可能依赖于任务门、中断堆栈表(IST)或与嵌套的NMI不完全兼容的处理器的其他特征。在某些系统中,SMI可由在固件(例如,BIOS)中执行的SMI处理程序来处理,而大多数或所有其他中断(包括NMI)通常由操作系统处理。出于这个原因,一般期望在SMI处理程序(例如,在BIOS和/或固件中)正在操作以处理SMI时延迟对NMI的递送。为支持此,某些处理器可在递送SMI时启用或配置NMI的暂时延迟或阻挡。如果在处理SMI时获得异常(例如,当SMI处理程序正在处理SMI并在SMI处理程序返回之前),则异常处理程序在SMI处理程序返回时可能过早地重新启用对后续NMI的递送。这可导致后续的NMI在SMI的处理期间被递送至BIOS/固件(即,不是被递送至操作系统),而其此时应该是相反地被递送至操作系统(例如,NMI处理程序)。在一些实施例中,指令(例如,BIOS异常处理程序返回指令)可使用类似于本文所公开的那些的技术在没有过早的重新启用对NMI的递送的情况下从BIOS异常处理程序返回。此外,其他架构可具有本领域技术人员将理解本文所描述的实施例适用的类似于SMI的其他类型的高优先级中断。
示例性核架构、处理器和计算机架构
处理器核可以用出于不同目的的不同方式在不同的处理器中实现。例如,这样的核的实现可以包括:1)旨在用于通用计算的通用有序核;2)预期用于通用计算的高性能通用无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用无序核的CPU;以及2)包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核);以及4)可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上的芯片上系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和无序核框图
图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)核、或图形核等等。
前端单元730包括耦合到指令高速缓存单元734的分支预测单元732,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)736,该指令转换后备缓冲器耦合到指令取出单元738,指令取出单元耦合到解码单元740。解码单元740(或解码器)可解码指令,并生成从原始指令解码出的、或以其它方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其它指令、或其它控制信号作为输出。解码单元740可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核790包括(例如,在解码单元740中或否则在前端单元730内的)用于存储某些宏指令的微代码的微代码ROM或其它介质。解码单元740耦合至执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括重命名/分配器单元752,该重命名/分配器单元耦合至引退单元754和一个或多个调度器单元756的集合。调度器单元756表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元756耦合到物理寄存器组单元758。每个物理寄存器组单元758表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器组单元758包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元758与引退单元754重叠以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池等等)。引退单元754和物理寄存器组单元758耦合到执行群集760。执行群集760包括一个或多个执行单元762的集合和一个或多个存储器访问单元764的集合。执行单元762可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其它实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。调度器单元756、物理寄存器组单元758、执行群集760被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了诸个单独流水线(例如,均具有各自调度器单元、物理寄存器组单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,以及在单独的存储器访问流水线的情况下特定实施例被实现为仅仅该流水线的执行群集具有存储器访问单元764)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元764的集合耦合到存储器单元770,该存储器单元包括耦合到数据高速缓存单元774的数据TLB单元772,其中数据高速缓存单元耦合到二级(L2)高速缓存单元776。在一个示例性实施例中,存储器访问单元764可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元770中的数据TLB单元772。指令高速缓存单元734还耦合到存储器单元770中的第二级(L2)高速缓存单元776。L2高速缓存单元776被耦合到一个或多个其他级的高速缓存,并最终被耦合到主存储器。
作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线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)的逻辑,进而允许由许多多媒体应用使用的操作将使用紧缩数据来执行。
应当理解,核可支持多线程化(执行两个或多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单元734/774以及共享L2高速缓存单元776,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图8A-B示出更具体的示例性有序核架构的框图,该核将是芯片中的多个逻辑块中的一个(包括相同类型和/或不同类型的其他核)。根据应用,这些逻辑块通过高带宽的互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信。
图8A是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络802的连接及其二级(L2)高速缓存的本地子集804的框图。在一个实施例中,指令解码器800支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存806允许对进入标量和向量单元中的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元808和向量单元810使用分开的寄存器集合(分别为标量寄存器812和向量寄存器814),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(L1)高速缓存806读回,但是本发明的替代实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集804是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的L2高速缓存804的本地子集的直接访问路径。被处理器核读出的数据被存储在其L2高速缓存子集804中,并且可以与其它处理器核访问其自己的本地L2高速缓存子集并行地被快速访问。被处理器核写入的数据被存储在其自己的L2高速缓存子集804中,并在必要的情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图8B是根据本发明的各实施例的图8A中的处理器核的一部分的展开图。图8B包括L1高速缓存804的L1数据高速缓存806A部分,以及关于向量单元810和向量寄存器814的更多细节。具体地说,向量单元810是16宽向量处理单元(VPU)(见16宽ALU 828),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元820支持对寄存器输入的混合、通过数值转换单元822A-B支持数值转换、并通过复制单元824支持对存储器输入的复制。写掩码寄存器826允许断言所得的向量写入。
具有集成存储器控制器和图形器件的处理器
图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个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器900可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将该处理器实现在一个或多个衬底上。
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元906的集合、以及耦合至集成存储器控制器单元914的集合的外部存储器(未示出)。该共享高速缓存单元906的集合可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其它级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环的互连单元912将集成图形逻辑908、共享高速缓存单元906的集合以及系统代理单元910/集成存储器控制器单元914互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个高速缓存单元904A-N和核902A-N之间的一致性(coherency)。
在一些实施例中,一个或多个核902A-N能够实现多线程。系统代理910包括协调和操作核902A-N的那些组件。系统代理单元910可包括例如功率控制单元(PCU)和显示单元。PCU可以是或可包括用于调节核902A-N和集成图形逻辑908的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核902A-N在架构指令集方面可以是同构的或异构的;即,这些核902A-N中的两个或更多个核可能能够执行相同的指令集,而其它核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图10-13是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其它电子设备的其它系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其它执行逻辑的多个系统和电子设备一般都是合适的。
现在参考图10,所示出的是根据本发明一个实施例的系统1000的框图。系统1000可以包括一个或多个处理器1010、1015,这些处理器耦合到控制器中枢1020。在一个实施例中,控制器中枢1020包括图形存储器控制器中枢(GMCH)1090和输入/输出中枢(IOH)1050(其可以在分开的芯片上);GMCH 1090包括存储器和图形控制器,存储器1040和协处理器1045耦合到该存储器和图形控制器;IOH 1050将输入/输出(I/O)设备1060耦合到GMCH1090。或者,存储器和图形控制器中的一个或两者被集成在处理器内(如本文中所描述的),存储器1040和协处理器1045直接耦合到处理器1010以及控制器中枢1020,该控制器中枢与IOH 1050处于单个芯片中。
附加处理器1015的任选性质用虚线表示在图10中。每一个处理器1010、1015可包括本文中描述的处理核中的一个或多个,并且可以是处理器900的某一版本。
存储器1040可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1020经由诸如前端总线(FSB)之类的多分支总线、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1095与处理器1010、1015进行通信。
在一个实施例中,协处理器1045是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU或嵌入式处理器,等等。在一个实施例中,控制器中枢1020可以包括集成图形加速器。
在处理器1010、1015之间会存在包括架构、微架构、热、和功耗特征等的一系列品质度量方面的各种差异。
在一个实施例中,处理器1010执行控制一般类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器1010将这些协处理器指令识别为应当由附连的协处理器1045执行的类型。因此,处理器1010在协处理器总线或者其它互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1045。协处理器1045接受并执行所接收的协处理器指令。
现在参考图11,所示为根据本发明的一实施例的更具体的第一示例性系统1100的框图。如图11所示,多处理器系统1100是点对点互连系统,并包括经由点对点互连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,这些存储器可以是本地附连至相应的处理器的主存储器的部分。
处理器1170、1180可各自经由使用点对点接口电路1176、1194、1186、1198的各个P-P接口1152、1154与芯片组1190交换信息。芯片组1190可任选地经由高性能接口1139与协处理器1138交换信息。在一个实施例中,协处理器1138是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。
共享高速缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
芯片组1190可经由接口1196耦合至第一总线1116。在一个实施例中,第一总线1116可以是外围组件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图11所示,各种I/O设备1114可以连同总线桥1118耦合到第一总线1116,该总线桥将第一总线1116耦合至第二总线1120。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器的一个或多个附加处理器1115耦合到第一总线1116。在一个实施例中,第二总线1120可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线1120,在一个实施例中这些设备包括例如键盘/鼠标1122、通信设备1127以及诸如可包括指令/代码和数据1130的盘驱动器或其它大容量存储设备的存储单元1128。此外,音频I/O1124可以被耦合至第二总线1120。注意,其它架构是可能的。例如,代替图11的点对点架构,系统可以实现多分支总线或其它这类架构。
现在参考图12,所示为根据本发明的实施例的更具体的第二示例性系统1200的框图。图11和图12中的相同部件用相同附图标记表示,并从图12中省去了图11中的某些方面,以避免使图12的其它方面变得模糊。
图12示出处理器1170、1180可以分别包括集成存储器和I/O控制逻辑(“CL”)1272和1282。因此,CL 1272、1282包括集成存储器控制器单元并包括I/O控制逻辑。图12示出不仅存储器1132、1134耦合到CL 1272、1282,而且I/O设备1214也耦合到控制逻辑1272、1282。传统I/O设备1215被耦合至芯片组1190。
现在参照图13,所示出的是根据本发明一个实施例的SoC 1300的框图。在图9中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图13中,互连单元1302被耦合至:应用处理器1310,该应用处理器包括一个或多个核902A-N的集合以及共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;一组或一个或多个协处理器1320,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1330;直接存储器存取(DMA)单元1332;以及用于耦合至一个或多个外部显示器的显示单元1340。在一个实施例中,协处理器1320包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如图11中示出的代码1130)应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图14是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图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所描述的组件、特征以及细节还可任选地应用于图2-3和/或图4-5中的任一者。此外,针对任一装置所描述的组件、特征、以及细节还可任选地应用于可由这种装置和/或使用这种装置执行的任一方法中。任一系统可包括本文所描述的系统中的任一个,且本文所描述的处理器中的任一个可被包括在这些系统(例如,图9-13)中的任一个中。
在说明书和权利要求书中,可能已经使用了术语“耦合的”和/或“连接的”及其衍生词。这些术语不旨在互为同义词。相反,在多个实施例中,“连接的”用于指示两个或更多元件彼此直接物理和/或电接触。“耦合的”可意味着两个或更多个元件彼此直接物理和/或电接触。然而,“耦合的”也可意味着两个或更多个元件彼此并不直接接触,但是仍然彼此协作或相互作用。例如,执行单元可通过一个或多个中间组件与解码单元耦合。在附图中,箭头用于示出连接和耦合。
在说明书和/或权利要求书中,可能已经使用了术语“逻辑”、“单元”、或“组件”。可将这些术语中的每一个用于指代硬件、固件或它们的各种组合。在示例实施例中,这些术语中的每一个可以指集成电路、专用集成电路、模拟电路、数字电路、可编程逻辑器件、包括指令的存储器设备等,以及它们的各种组合。在一些实施例中,它们可包括至少某个硬件(例如,晶体管、门、其他电路组件等)。
可能已经使用了术语“和/或”。如本文中所使用的,术语“和/或”意思是一个或另一个或两者(例如,A和/或B意思是:A或B,或者A和B两者)。
在以上描述中,为了提供对实施例的透彻理解,已阐述了特定的细节。然而,可以在没有这些特定细节中的一些的情况下来实践其他实施例。本发明的范围不是由以上所提供的具体示例来确定的,而仅由所附权利要求确定。在其他实例中,已经以框图形式和/或没有细节的形式示出了公知的电路、结构、设备和操作,以避免使对说明书的理解变得模糊。在认为合适的地方,已在诸附图之间重复了附图标记或附图标记的结尾部分以指示可能可选地具有类似或相同特性的对应或类似的元件,除非另外指定或是显而易见的。
某些操作可由硬件组件执行,或者能以机器可执行或电路可执行指令来具体化,这些机器可执行指令或电路可执行指令可用于使得和/或者导致机器、电路、或硬件组件(例如,处理器、处理器的部分、电路等)利用执行这些操作的指令来编程。这些操作还可任选地由硬件和软件的组合执行。处理器、机器、电路或硬件可包括专用或特定电路或其他逻辑(例如,可能与固件和/或软件组合的硬件),该专用或特定电路或其他逻辑用于执行和/或处理指令,并且响应于该指令而存储结果。
一些实施例包括制品(例如,计算机程序产品),所述制品包括机器可读介质。该介质可包括以机器可读形式提供(例如,存储)信息的机制。机器可读介质可提供或在其上存储有指令或指令序列,如果和/或当由机器执行执行所述指令或指令序列时,所述指令或指令序列可操作以使所述机器执行和/或导致所述机器执行本文中所公开的一种或多种操作、方法或技术。
在一些实施例中,机器可读介质可包括非短暂的机器可读存储介质。例如,有非暂态的机器可读存储介质可包括,软盘、光存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂态存储器、或非暂态数据存储设备等。非暂态机器可读存储介质不由暂态传播的信号组成。在一些实施例中,存储介质可包括:包含固态物质的有形介质。
合适机器的示例包括但不限于,通用处理器、专用处理器、数字逻辑电路、集成电路等。合适的机器的另一些示例包括,包含处理器、数字逻辑电路或集成电路的计算系统或其他电子设备。此类计算机系统或电子设备的示例包括但不限于,台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动互联网设备(MID)、媒体播放器、智能电视、迷你桌上型设备、机顶盒和视频游戏控制器。
贯穿本说明书对例如“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的引用指示,可将特定的特征包括在本发明的实施中,但是不一定要求这么做。类似地,在该描述中,为了使本公开流畅并辅助对各个发明性方面的理解,有时将各种特征一起归组在单个实施例、附图或对它们的描述中。然而,不应当将该公开方法解释为反映本发明需要比每项权利要求中所明确记载的更多特征的意图。相反,如所附权利要求所反映,发明性方面在于少于单个的公开实施例的所有特征。因此,将遵循具体实施方式的各项权利要求明确地结合进该具体实施方式,每一项权利独立地作为本发明单独的实施例而存在。
示例实施例
以下示例关于进一步的实施例。这些示例中的细节可以在一个或多个实施例中的任何地方被使用。
示例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是处理指令的系统,该系统包括互连和与该互连耦合的处理器。处理器将接收异常处理程序返回指令。响应于异常处理程序返回指令,如果对应于异常处理程序返回指令的异常是在NMI处理程序中被获得的,则处理器将保持处理器被配置成延迟将后续接收到的不可屏蔽中断(NMI)递送至NMI处理程序。响应于该指令,如果异常不是在NMI处理程序中被获得的,则处理器将处理器配置成将后续接收到的NMI递送至NMI处理程序。该系统还包括与该互连耦合的动态随机存取存储器(DRAM)。
示例22包括示例21的系统,其中任选地,响应于异常处理程序返回指令,处理器将检查在已从存储器检取到的对应于异常的异常帧中的,关于异常是否是在NMI处理程序中被获得的保存的指示。
示例23是一种制品,该制品包括非暂态机器可读存储介质。该非暂态机器可读存储介质存储异常处理程序返回指令。如果对应于异常处理程序返回指令的异常是在NMI处理程序中被获得的,则异常处理程序返回指令(如果由机器执行)将使机器执行包括延迟将后续接收到的不可屏蔽中断(NMI)递送至NMI处理程序的操作。如果该异常不是在NMI处理程序中被获得的,则该操作还包括将后续接收到的NMI递送至NMI处理程序。
示例24包括示例23的制品,其中任选地,如果由机器执行异常处理程序返回指令,则异常处理程序返回指令使机器执行包括检查在已从存储器检取到的异常帧中的,关于异常是否是在NMI处理程序中被获得的保存的指示的操作。
示例25是处理器或其他装置,其用于执行示例9到13中任意一项所述的方法。
示例26是处理器或其他装置,其包括用于执行示例9到13中任意一项所述的方法的设备。
示例27是处理器,其包括用于执行示例9到13中任意一项所述的方法的单元和/或逻辑和/或电路和/或设备的任何组合。
示例28是制品,其包括可选地非暂态机器可读介质,该非暂态机器可读介质可选地存储或以其他方式提供指令,如果和/或当由处理器、计算机系统、电子设备或其他机器执行该指令时,该指令用于使该机器执行示例9到13中任意一项的方法。
示例29是计算机系统、其他电子设备或其他装置,其包括总线、或其他互连、与该互连耦合的示例1到8中任意一项所述的处理器、以及与该互连耦合的至少一个组件,该至少一个组件是从下列各项中选出的:动态随机存取存储器(DRAM)、网络接口、图形芯片、无线通信芯片、全球移动通信系统(GSM)天线、相变存储器和视频相机。
示例30是基本上如本文中所述的处理器或其他装置。
示例31是用于执行基本上如本文中所述的任何方法的处理器或其他装置。
示例32是用于执行基本上如本文中所述的任何异常处理程序返回指令的处理器或其他装置。
Claims (25)
1.一种处理器,包括:
解码单元,用于解码异常处理程序返回指令;以及
异常处理程序返回执行单元,与所述解码单元耦合,所述异常处理程序返回执行单元响应于所述异常处理程序返回指令,用于:
如果对应于所述异常处理程序返回指令的异常是在不可屏蔽中断NMI处理程序中被获得的,则不将所述处理器配置成启用将后续接收到的不可屏蔽中断NMI递送至所述不可屏蔽中断NMI处理程序;并且
如果所述异常不是在所述不可屏蔽中断NMI处理程序中被获得的,则将所述处理器配置成启用将所述后续接收到的不可屏蔽中断NMI递送至所述不可屏蔽中断NMI处理程序。
2.如权利要求1所述的处理器,进一步包括保存的不可屏蔽中断NMI指示检查器单元,响应于所述异常处理程序返回指令,用于:
检查在已从存储器检取到的对应于所述异常的异常帧中的,关于所述异常是否是在所述不可屏蔽中断NMI处理程序中被获得的保存的指示;并部分地基于所述保存的指示,确定是否将所述处理器配置成启用所述后续接收到的不可屏蔽中断NMI的所述递送。
3.如权利要求2所述的处理器,其特征在于,所述保存的不可屏蔽中断NMI指示检查器单元,响应于所述异常处理程序返回指令,将:
在所述保存的指示具有第一值时,确定不将所述处理器配置成启用所述后续接收到的不可屏蔽中断NMI的所述递送;或
在所述保存的指示具有与所述第一值不同的第二值时,确定将所述处理器配置成启用所述后续接收到的不可屏蔽中断NMI的所述递送。
4.如权利要求2所述的处理器,其特征在于,所述保存的指示具有不对应于所述处理器的标志寄存器的多个位的在所述异常帧中的位置。
5.如权利要求2所述的处理器,其特征在于,所述保存的指示具有对应于所述处理器的标志寄存器中的一个或多个预留位的在所述异常帧中的位置,但其中,所述处理器仍然将所述一个或多个预留位保留在所述标志寄存器中。
6.一种处理器,包括:
解码单元,用于解码异常处理程序返回指令;以及
异常处理程序返回执行单元,与所述解码单元耦合,所述异常处理程序返回执行单元响应于所述异常处理程序返回指令,用于:
按照关于所述异常是否是在不可屏蔽中断NMI处理程序中被获得的保存的指示,确定对应于所述异常处理程序返回指令的异常是否是在所述不可屏蔽中断NMI处理程序中被获得的;
如果对应于所述异常处理程序返回指令的异常是在不可屏蔽中断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处理程序的不可屏蔽中断NMI,所述不可屏蔽中断NMI禁用控制也由所述处理器改变。
14.一种处理器,包括:
不可屏蔽中断NMI确定单元,用于确定异常是否是在不可屏蔽中断NMI处理程序中被获得的;以及
不可屏蔽中断NMI保存单元,与所述不可屏蔽中断NMI确定单元耦合,所述不可屏蔽中断NMI保存单元用于保存关于所述异常是否是在所述不可屏蔽中断NMI处理程序中被获得的指示;
所述不可屏蔽中断NMI确定单元包括不可屏蔽中断NMI禁用控制确定单元,所述不可屏蔽中断NMI禁用控制确定单元将通过检查处理器的不可屏蔽中断NMI禁用控制来确定所述异常是否在所述不可屏蔽中断NMI处理程序中被获得的,其中,所述不可屏蔽中断NMI禁用控制将被用于交替地暂时禁用和启用对不可屏蔽中断NMI的递送。
15.如权利要求14所述的处理器,其特征在于,所述不可屏蔽中断NMI保存单元包括不可屏蔽中断NMI禁用控制保存单元,所述不可屏蔽中断NMI禁用控制保存单元将保存处理器的不可屏蔽中断NMI禁用控制,其中,所述不可屏蔽中断NMI禁用控制将用于交替地暂时禁用和启用对不可屏蔽中断NMI的递送。
16.如权利要求15所述的处理器,其特征在于,所述NMI保存单元将关于所述异常是否是在所述不可屏蔽中断NMI处理程序中被获得的所述指示保存在要被存储在存储器中的异常帧中。
17.如权利要求16所述的处理器,其特征在于,所述NMI保存单元将关于所述异常是否是在所述不可屏蔽中断NMI处理程序中被获得的所述指示保存在要被存储在栈结构上的异常帧中。
18.如权利要求16所述的处理器,其特征在于,所述不可屏蔽中断NMI保存单元将所述指示保存在不具有对应于处理器的标志寄存器中的一组一个或多个位的所述异常帧的一组一个或多个位中。
19.如权利要求16所述的处理器,其特征在于,所述不可屏蔽中断NMI保存单元将所述指示保存在对应于处理器的标志寄存器中的一组一个或多个预留位的所述异常帧的一组一个或多个位中。
20.如权利要求14到19中任一项所述的处理器,进一步包括嵌套不可屏蔽中断NMI阻止启用控制检查器单元以用于检查处理器的嵌套不可屏蔽中断NMI阻止启用控制,所述嵌套不可屏蔽中断NMI阻止启用控制交替地启用和禁用嵌套不可屏蔽中断NMI阻止机制,其中,所述嵌套不可屏蔽中断NMI阻止机制当被启用时包括:所述不可屏蔽中断NMI保存单元保存关于所述异常是否是在所述不可屏蔽中断NMI处理程序中被获得的所述指示,并当未被启用时不包括保存所述指示的所述不可屏蔽中断NMI保存单元。
21.一种计算机实现的系统,包括:
用于解码异常处理程序返回指令的装置;以及
用于响应于所述异常处理程序返回指令执行以下操作的装置:
如果对应于所述异常处理程序返回指令的异常是在不可屏蔽中断NMI处理程序中被获得的,则不将处理器配置成启用将后续接收到的不可屏蔽中断NMI递送至不可屏蔽中断NMI处理程序;并
如果所述异常不是在所述不可屏蔽中断NMI处理程序中获得的,则将所述处理器配置成启用将所述后续接收到的不可屏蔽中断NMI递送至所述不可屏蔽中断NMI处理程序。
22.一种包括分别用于执行权利要求9到13中的任一项所述的方法中的对应步骤的多个设备的装置。
23.一种制品,包括存储指令的非暂态机器可读介质,如果由机器执行所述指令,则所述指令用于使所述机器执行权利要求9到13中任一项所述的方法。
24.一种电子设备,包括:互连、与所述互连耦合的如权利要求1到6中任一项所述的处理器、以及与所述互连耦合的动态随机存取存储器DRAM。
25.一种电子设备,包括:互连、与所述互连耦合的如权利要求14到19中任一项所述的处理器、以及与所述互连耦合的动态随机存取存储器DRAM。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/498,884 | 2014-09-26 | ||
US14/498,884 US9740644B2 (en) | 2014-09-26 | 2014-09-26 | Avoiding premature enabling of nonmaskable interrupts when returning from exceptions |
PCT/US2015/047735 WO2016048591A1 (en) | 2014-09-26 | 2015-08-31 | Avoiding premature enabling of nonmaskable interrupts when returning from exceptions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106663000A CN106663000A (zh) | 2017-05-10 |
CN106663000B true CN106663000B (zh) | 2019-12-03 |
Family
ID=55581783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580045894.9A Active CN106663000B (zh) | 2014-09-26 | 2015-08-31 | 处理器和用于处理器中的中断处理的方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9740644B2 (zh) |
EP (1) | EP3198402B1 (zh) |
JP (1) | JP6508851B2 (zh) |
KR (1) | KR102262176B1 (zh) |
CN (1) | CN106663000B (zh) |
TW (1) | TWI556109B (zh) |
WO (1) | WO2016048591A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2530050B (en) * | 2014-09-10 | 2021-07-21 | Advanced Risc Mach Ltd | Debugging in a data processing apparatus |
US9740644B2 (en) | 2014-09-26 | 2017-08-22 | Intel Corporation | Avoiding premature enabling of nonmaskable interrupts when returning from exceptions |
US20160210069A1 (en) * | 2015-01-21 | 2016-07-21 | Bitdefender IPR Management Ltd. | Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine |
US9769169B2 (en) * | 2015-09-25 | 2017-09-19 | Intel Corporation | Secure sensor data transport and processing |
US20210026950A1 (en) * | 2016-03-07 | 2021-01-28 | Crowdstrike, Inc. | Hypervisor-based redirection of system calls and interrupt-based task offloading |
US10146606B2 (en) * | 2016-04-06 | 2018-12-04 | Dell Products, Lp | Method for system debug and firmware update of a headless server |
US10061722B2 (en) | 2016-10-17 | 2018-08-28 | Qualcomm Incorporated | Method to handle concurrent fatal events in a multicore execution environment |
GB2563884B (en) * | 2017-06-28 | 2020-01-08 | Advanced Risc Mach Ltd | Exception return instruction |
CN109828932B (zh) * | 2019-02-18 | 2020-12-18 | 华夏芯(北京)通用处理器技术有限公司 | 一种地址微调加速系统 |
CN109918251A (zh) * | 2019-03-20 | 2019-06-21 | 浪潮商用机器有限公司 | 处理器中断的触发方法及装置 |
US11386518B2 (en) * | 2019-09-24 | 2022-07-12 | Advanced Micro Devices, Inc. | Exception handler for sampling draw dispatch identifiers |
US11392521B2 (en) * | 2020-04-13 | 2022-07-19 | Tcl China Star Optoelectronics Technology Co., Ltd. | Heterogeneous computing system and heterogeneous computing method using the system |
US20230195470A1 (en) * | 2021-12-22 | 2023-06-22 | Vmware, Inc. | Behavioral implementation of a double fault stack in a computer system |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5303378A (en) * | 1991-05-21 | 1994-04-12 | Compaq Computer Corporation | Reentrant protected mode kernel using virtual 8086 mode interrupt service routines |
US5349667A (en) * | 1991-09-05 | 1994-09-20 | Nec Corporation | Interrupt control system for microprocessor for handling a plurality of maskable interrupt requests |
CN1818854A (zh) * | 2005-02-10 | 2006-08-16 | 国际商业机器公司 | 产生精确异常的系统和方法 |
CN101093414A (zh) * | 2006-06-21 | 2007-12-26 | 国际商业机器公司 | 对中断等待影响最小的热调节控制方法、系统和处理器 |
CN104054063A (zh) * | 2012-01-31 | 2014-09-17 | 惠普发展公司,有限责任合伙企业 | 锁定芯片组的系统管理中断(smi)使能寄存器 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5920053A (ja) * | 1982-07-26 | 1984-02-01 | Toshiba Corp | マイクロコンピユ−タシステム |
JPS61121136A (ja) * | 1984-11-19 | 1986-06-09 | Toshiba Corp | 演算処理装置 |
US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
JPH06175860A (ja) * | 1992-12-08 | 1994-06-24 | Toshiba Corp | マイクロプロセッサ応用装置 |
JP3672634B2 (ja) | 1994-09-09 | 2005-07-20 | 株式会社ルネサステクノロジ | データ処理装置 |
JP2625402B2 (ja) * | 1995-05-24 | 1997-07-02 | 日本電気株式会社 | マイクロプロセッサ |
US5987258A (en) * | 1997-06-27 | 1999-11-16 | Lsi Logic Corporation | Register reservation method for fast context switching in microprocessors |
US6880030B2 (en) * | 2000-12-13 | 2005-04-12 | Wind River Systems, Inc. | Unified exception handling for hierarchical multi-interrupt architectures |
US6829719B2 (en) | 2001-03-30 | 2004-12-07 | Transmeta Corporation | Method and apparatus for handling nested faults |
US6928582B2 (en) | 2002-01-04 | 2005-08-09 | Intel Corporation | Method for fast exception handling |
US7043582B2 (en) * | 2002-09-06 | 2006-05-09 | Intel Corporation | Self-nesting interrupts |
GB2403822B (en) | 2003-07-07 | 2006-05-10 | Advanced Risc Mach Ltd | Data processing apparatus and method for handling interrupts |
WO2008122746A1 (en) | 2007-04-10 | 2008-10-16 | Cambridge Consultants Limited | Data processing apparatus |
JP2008262437A (ja) | 2007-04-13 | 2008-10-30 | Renesas Technology Corp | プロセッサシステムおよび例外処理方法 |
US8103816B2 (en) | 2008-10-28 | 2012-01-24 | Intel Corporation | Technique for communicating interrupts in a computer system |
US8688964B2 (en) | 2009-07-20 | 2014-04-01 | Microchip Technology Incorporated | Programmable exception processing latency |
US8135894B1 (en) * | 2009-07-31 | 2012-03-13 | Altera Corporation | Methods and systems for reducing interrupt latency by using a dedicated bit |
US8707433B1 (en) | 2011-05-03 | 2014-04-22 | Symantec Corporation | Fake exception handler detection |
US9740644B2 (en) | 2014-09-26 | 2017-08-22 | Intel Corporation | Avoiding premature enabling of nonmaskable interrupts when returning from exceptions |
-
2014
- 2014-09-26 US US14/498,884 patent/US9740644B2/en active Active
-
2015
- 2015-08-20 TW TW104127158A patent/TWI556109B/zh not_active IP Right Cessation
- 2015-08-31 CN CN201580045894.9A patent/CN106663000B/zh active Active
- 2015-08-31 KR KR1020177005435A patent/KR102262176B1/ko active IP Right Grant
- 2015-08-31 WO PCT/US2015/047735 patent/WO2016048591A1/en active Application Filing
- 2015-08-31 JP JP2017509003A patent/JP6508851B2/ja not_active Expired - Fee Related
- 2015-08-31 EP EP15843881.2A patent/EP3198402B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5303378A (en) * | 1991-05-21 | 1994-04-12 | Compaq Computer Corporation | Reentrant protected mode kernel using virtual 8086 mode interrupt service routines |
US5349667A (en) * | 1991-09-05 | 1994-09-20 | Nec Corporation | Interrupt control system for microprocessor for handling a plurality of maskable interrupt requests |
CN1818854A (zh) * | 2005-02-10 | 2006-08-16 | 国际商业机器公司 | 产生精确异常的系统和方法 |
CN101093414A (zh) * | 2006-06-21 | 2007-12-26 | 国际商业机器公司 | 对中断等待影响最小的热调节控制方法、系统和处理器 |
CN104054063A (zh) * | 2012-01-31 | 2014-09-17 | 惠普发展公司,有限责任合伙企业 | 锁定芯片组的系统管理中断(smi)使能寄存器 |
Also Published As
Publication number | Publication date |
---|---|
US20160092382A1 (en) | 2016-03-31 |
JP6508851B2 (ja) | 2019-05-08 |
WO2016048591A1 (en) | 2016-03-31 |
JP2017527902A (ja) | 2017-09-21 |
US9740644B2 (en) | 2017-08-22 |
CN106663000A (zh) | 2017-05-10 |
KR102262176B1 (ko) | 2021-06-07 |
EP3198402B1 (en) | 2021-06-30 |
TWI556109B (zh) | 2016-11-01 |
KR20170036080A (ko) | 2017-03-31 |
EP3198402A4 (en) | 2018-06-20 |
EP3198402A1 (en) | 2017-08-02 |
TW201626241A (zh) | 2016-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106663000B (zh) | 处理器和用于处理器中的中断处理的方法 | |
TWI807877B (zh) | 用以保護影子堆疊之處理器、方法、系統和指令 | |
JP6507435B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
CN108463826B (zh) | 用于在环转变期间保护栈的处理器扩展 | |
CN106648843B (zh) | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 | |
CN105760139B (zh) | 用于测试事务性执行状态的系统 | |
US20210357213A1 (en) | Hardware apparatuses and methods to switch shadow stack pointers | |
JP6450705B2 (ja) | 永続コミットプロセッサ、方法、システムおよび命令 | |
GB2514882A (en) | Instruction emulation processors, methods, and systems | |
CN109643293B (zh) | 检测总线上锁条件并且避免总线锁 | |
TWI515653B (zh) | 指令順序執行之指令對、處理器、方法及系統 | |
CN108701101B (zh) | 处理器系统管理中断事件的基于仲裁器的串行化 | |
US9207940B2 (en) | Robust and high performance instructions for system call | |
CN108334400A (zh) | 为安全飞地管理存储器 | |
CN106575335A (zh) | 返回控制转移指令 | |
TW202416123A (zh) | 硬體處理器及處理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |