CN108701101B - 处理器***管理中断事件的基于仲裁器的串行化 - Google Patents
处理器***管理中断事件的基于仲裁器的串行化 Download PDFInfo
- Publication number
- CN108701101B CN108701101B CN201780014456.5A CN201780014456A CN108701101B CN 108701101 B CN108701101 B CN 108701101B CN 201780014456 A CN201780014456 A CN 201780014456A CN 108701101 B CN108701101 B CN 108701101B
- Authority
- CN
- China
- Prior art keywords
- smi
- processor
- smi event
- event
- interrupt
- 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
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Microcomputers (AREA)
Abstract
处理器包括:核,用以执行指令;以及电路,用以检测处理器上的***管理中断(SMI)事件,将SMI事件的指示引导到控制器中枢上的仲裁器,以及从仲裁器接收中断信号。处理器还包括SMI处置器,用以响应于中断而采取动作;以及电路,用以将中断信号传递到核。核包括电路,用以在SMI处置器对中断作出响应时暂停。中断处置器包括电路,用以确定在处理器或控制器中枢上检测到的第二SMI事件是待决的,并作为响应采取动作。中断处置器包括电路,用以设置SMI结束位以指示中断处置器已完成它的动作。控制器包括电路,用以在此位为假时防止仲裁器向处理器发布另一中断。
Description
技术领域
本公开涉及处理逻辑、微处理器以及关联的指令集架构的领域,其当由处理器或其它处理逻辑执行时执行逻辑、数学或其它功能操作。
背景技术
微处理器***正变得越来越常见。多处理器***的应用包括动态域分区,一直到桌上型计算。为了利用多处理器***,要执行的代码可被分成多个线程以用于由各种处理实体执行。每个线程可彼此并行执行。可以在***中实现应用的流水线化以便更有效地执行应用。***管理中断和对应的处置器可用于响应于某些类型的***错误和***事件来管理***。处理器可以在片上***中实现。
附图描述:
在附图的图中作为示例而非限制示出了实施例:
图1A是按照本公开的实施例用可包含执行指令的执行单元的处理器形成的示范计算机***的框图;
图1B示出了按照本公开的实施例的数据处理***;
图1C示出了用于执行文本字符串比较操作的数据处理***的其它实施例;
图2是按照本公开的实施例可包含执行指令的逻辑电路的处理器的微架构的框图;
图3A示出了按照本公开的实施例的多媒体寄存器中的各种打包数据类型表示;
图3B示出了按照本公开的实施例的可能寄存器中的数据存储格式;
图3C示出了按照本公开的实施例的多媒体寄存器中的各种有符号和无符号的打包数据类型表示;
图3D示出了操作编码格式的实施例;
图3E示出了按照本公开的实施例的具有40位或更多位的另一可能操作编码格式;
图3F示出了按照本公开的实施例的又一可能操作编码格式;
图4A是示出按照本公开实施例的有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图;
图4B是示出按照本公开实施例的要包含在处理器中的有序架构核以及寄存器重命名逻辑、无序发布/执行逻辑的框图;
图5A是按照本公开实施例的处理器的框图;
图5B是按照本公开实施例的核的示例实现的框图;
图6是按照本公开实施例的***的框图;
图7是按照本公开实施例的第二***的框图;
图8是按照本公开实施例的第三***的框图;
图9是按照本公开实施例的片上***的框图;
图10示出了按照本公开的实施例的可执行至少一个指令的含有中央处理单元和图形处理单元的处理器;
图11是示出按照本公开实施例的IP核的开发的框图;
图12示出根据本公开的实施例,第一类型的指令可如何由不同类型的处理器仿真;
图13示出根据本公开的实施例的对比将源指令集中的二进制指令转换成目标指令集中二进制指令的软件指令转换器的使用的框图;
图14是根据本公开的实施例的处理器的指令集架构的框图;
图15是根据本公开的实施例的处理器的指令集架构的更详细框图;
图16是根据本公开的实施例的用于处理器的指令集架构的执行流水线的框图;
图17是根据本公开的实施例的用于利用处理器的电子装置的框图;
图18是根据本公开的实施例的用于处理器***管理中断(SMI)事件的基于仲裁的串行化的示例***的图示;
图19是根据本公开的实施例的包括SMI串行化逻辑的平台控制器中枢(PCH)的一部分的图示;
图20是根据本公开的实施例的用于生成和响应于处理器***管理中断事件的方法的图示;
图21是根据本公开的实施例的用于由仲裁器串行化***管理中断事件的方法的图示; 以及
图22是根据本公开的实施例的用于处置串行化的***管理中断事件的方法的图示。
具体实施方式
以下描述描述了用于处理器***管理中断(SMI)事件的基于仲裁的串行化的处理设备和处理逻辑。此类处理设备可包含无序处理器。在如下描述中,阐述了众多特定细节,诸如处理逻辑、处理器类型、微架构条件、事件、启动(enablement)机制等,以便提供本公开实施例的更透彻理解。然而,本领域技术人员将认识到,没有此类特定细节也可实践实施例。此外,一些众所周知的结构、电路等未详细示出,以避免不必要地使本公开的实施例混淆。
尽管如下实施例参考处理器进行描述,但其它实施例可应用于其它类型集成电路和逻辑器件。本公开实施例的类似技术和教导可应用于可受益于更高流水线吞吐量和改进性能的其它类型电路或半导体器件。本公开实施例的教导可应用于执行数据操纵的任何处理器或机器。然而,实施例不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可应用于其中可执行数据操纵或管理的任何处理器和机器。此外,如下描述提供了示例,并且附图为了示出目的示出了各种示例。然而,这些示例不应被理解为限制意义,因为它们仅仅意图提供本公开实施例的示例,而不是提供本公开的实施例的所有可能实现的详尽列表。
尽管以下示例在执行单元和逻辑电路的上下文中描述了指令处置和分布,但本公开的其它实施例可通过存储在机器可读有形介质上的数据或指令实现,所述指令当由机器执行时使机器执行与本公开的至少一个实施例一致的功能。在一个实施例中,与本公开实施例关联的功能体现在机器可执行指令中。指令可用于使可用指令编程的通用或专用处理器执行本公开的步骤。本公开的实施例可提供为计算机程序产品或软件,该产品或软件可包括机器或计算机可读介质,其上存储有可用于编程计算机(或其它电子装置)以执行根据本公开的实施例的一个或更多个操作的指令。更进一步,本公开的实施例的步骤可由包含用于执行所述步骤的固定功能逻辑的特定硬件组件执行,或者由编程的计算机组件和固定功能硬件组件的任何组合执行。
用于对逻辑编程以执行本公开的实施例的指令可被存储在***中的存储器内,诸如DRAM、高速缓存、闪速存储器或其它存储装置内。更进一步,指令可经由网络或通过其它计算机可读介质分布。从而,机器可读介质可包含用于存储或传送由机器(例如计算机)可读形式的信息的任何机制,但其不限于软盘、光盘、紧凑盘只读存储器(CD-ROM)、以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或在因特网上经由电、光、声或其它形式传播信号(例如载波、红外信号、数字信号等)传送信息中使用的有形机器可读存储装置。相应地,计算机可读介质可包含适合于存储或传送由机器(例如计算机)可读形式的电子指令或信息的任何类型有形机器可读介质。
设计从创建到模拟到制造可经过各种阶段。表示设计的数据可用多种方式表示该设计。首先,如在模拟中可能有用的,硬件可使用硬件描述语言或另一功能描述语言表示。附加地,在设计过程的某些阶段,可产生具有逻辑和/或晶体管栅的电路级模型。更进一步,设计在某一阶段可达到用硬件模型表示各种器件的物理布局的数据级。在其中使用一些半导体制造技术的情况下,表示硬件模型的数据可以是规定在用于产生集成电路的掩膜的不同掩膜层上存在或缺乏各种特征的数据。在设计的任何表示中,数据都可存储在任何形式的机器可读介质中。存储器或者磁或光存储装置(诸如盘)可以是机器可读介质,以存储经由调制或以其它方式生成以传送信息的光波或电波传送的此类信息。在传送指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重新传送而言,可进行新的拷贝。从而,通信提供商或网络提供商可在有形机器可读介质上至少暂时存储体现本公开实施例的技术的制品,诸如被编码到载波中的信息。
在现代处理器中,可使用若干不同执行单元来处理和执行各种代码和指令。一些指令可能更快地完成,而其它指令可能花了若干时钟周期完成。指令吞吐量越快,处理器的总体性能越好。从而,使许多指令尽可能快地执行会是有利的。然而,可存在具有更大复杂性并且在执行时间和处理器资源方面要求更大的某些指令,诸如浮点指令、加载/存储操作、数据移动等。
当在因特网、文本和多媒体应用中使用更多计算机***时,已经随时间引入了附加处理器支持。在一个实施例中,指令集可与一个或多个计算机架构关联,包含数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处置以及外部输入和输出(I/O)。
在一个实施例中,指令集架构(ISA)可由一个或多个微架构实现,微架构可包含用于实现一个或多个指令集的处理器逻辑和电路。相应地,具有不同微架构的处理器至少可共享部分公共指令集。例如,Intel® Pentium 4处理器、Intel® Core™处理器以及来自加利福尼亚州,Sunnyvale 的Advanced Micro devices, Inc的处理器实现了几乎相同版本的x86指令集(具有已经对于较新版本被添加的一些扩展),但具有不同的内部设计。类似地,由其它处理器开发公司(诸如ARM Holding, Ltd、MIPS或他们的许可方或采纳方)设计的处理器至少可共享公共指令集的一部分,但可包含不同处理器设计。例如,ISA的相同寄存器架构可使用新或公知的技术在不同微架构中以不同方式实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重新排序缓冲器(ROB)和引退寄存器堆)的一个或更多个动态分配的物理寄存器。在一个实施例中,寄存器可包括一个或更多个寄存器、寄存器架构、寄存器堆或可以或可以不由软件编程器可寻址的其它寄存器集。
指令可包含一个或多个指令格式。在一个实施例中,除了其它之外,指令格式还可指示要规定的各种字段(位数、位的位置等)、要执行的操作以及在其上将执行操作的操作数。在另外实施例中,一些指令格式可由指令模板(或子格式)进一步定义。例如,给定的指令格式的指令模板可被定义成具有指令格式字段的不同子集,和/或定义成具有不同解译的给定字段。在一个实施例中,指令可使用指令格式(并且如果定义了,则在那个指令格式的指令模板中的给定一个模板中)表述,并且规定或指示操作以及操作将在其上进行操作的操作数。
科学、金融、自动向量化通用、RMS(识别、挖掘和合成)及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压、语音识别算法和音频操纵)可要求对大量数据项执行相同操作。在一个实施例中,单指令多数据(SIMD)指使得处理器对多个数据元素执行操作的指令的类型。在逻辑上可将寄存器中的位划分成多个固定大小或可变大小数据元素(每个元素表示单独的值)的SIMD技术可使用在处理器中。例如,在一个实施例中,可将64位寄存器中的位组织为包含4个单独16位数据元素的源操作数,每个元素表示单独的16位值。此类型的数据可称为“打包(packed)”数据类型或“向量”数据类型,并且此数据类型的操作数可称为打包数据操作数或向量操作数。在一个实施例中,打包数据项或向量可以是在单个寄存器内存储的打包数据元素的序列,并且打包数据操作数或向量操作数可以是SIMD指令(或“打包数据指令”或“向量指令”)的源或目的地操作数。在一个实施例中,SIMD指令指定要对两个源向量操作数执行的单向量操作,以生成相同或不同大小的具有相同或不同数量的数据元素和以相同或不同的数据元素顺序的目的地向量操作数(也称为结果向量操作数)。
例如由具有包括x86、MMX™、流播SIMD扩展(SSE)、SSE2、SSE3、SSE4.1及SSE4.2指令的指令集的Intel® Core™处理器,诸如ARM Cortex®系列处理器的具有包括向量浮点(VFP)和/或NEON指令的指令集的ARM处理器,以及诸如由中国科学院的计算技术研究所(ICT)开发的龙芯(Loongson)系列处理器的MIPS处理器所采用的SIMD技术已经在应用性能方面实现了相当大的改进(Core™和MMX™是加利福尼亚州Santa Clara的IntelCorporation的注册商标或商标)。
在一个实施例中,目的地和源寄存器/数据可以是表示对应数据或操作的源和目的地的常规术语。在一些实施例中,它们可通过具有与描绘的那些名称或功能不同的名称或功能的寄存器、存储器或其它存储区域来实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其它存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其它存储区域并以此类推。在其它实施例中,两个或更多个SRC和DEST存储区域可对应于相同存储区域(例如,SIMD寄存器)内的不同数据存储元素。在一个实施例中,例如通过将对第一和第二源数据执行的操作的结果写回到用作目的地寄存器的所述两个源寄存器中的一个,源寄存器之一也可充当目的地寄存器。
图1A是根据本公开的实施例的用可包括执行单元以执行指令的处理器形成的示范计算机***的框图。根据本公开(例如本文描述的实施例中的),***100可包括诸如处理器102的组件,以采用包括执行用于处理数据的算法的逻辑的执行单元。***100可表示基于根据加利福尼亚州Santa Clara的Intel Corporation可用的PENTIUM® III、PENTIUM®4、Xeon™、Itanium®、XScale™和/或StrongARM™微处理器的处理***,尽管也可使用其它***(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本***100可执行从华盛顿Redmond的Microsoft Corporation可得到的Windows™操作***的某个版本,尽管也可使用其它操作***(例如,UNIX和Linux)、嵌入式软件和/或图形用户界面。因此,本公开的实施例不限于硬件电路和软件的任何特定组合。
实施例并不限于计算机***。本公开的实施例可在诸如手持式装置和嵌入式应用的其它装置中使用。手持式装置的一些示例包括蜂窝电话、因特网协议装置、数码相机、个人数字助理(PDA)及手持式PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、片上***、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机或可执行根据至少一个实施例的一个或更多个指令的任何其它***。
计算机***100可包含处理器102,处理器102可包含一个或多个执行单元108以执行按照本公开一个实施例执行至少一个指令的算法。一个实施例可在单个处理器桌上型计算机或服务器***的上下文中描述,而其它实施例可包含在多处理器***中。***100可以是“中枢”***架构的示例。***100可包含用于处理数据信号的处理器102。处理器102可包含复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器或任何其它处理装置,诸如例如数字信号处理器。在一个实施例中,处理器102可耦合到处理器总线110,其可在处理器102与***100中的其它组件之间传送数据信号。***100的元件可执行本领域技术人员众所周知的常规功能。
在一个实施例中,处理器102可包含一级(L1)内部高速缓冲存储器104。取决于架构,处理器102可具有单个内部高速缓存或多级内部高速缓存。在另一实施例中,高速缓冲存储器可驻留在处理器102外部。取决于具体实现和需要,其它实施例也可包含内部和外部高速缓存二者的组合。寄存器堆106可将不同类型的数据存储在各种寄存器中,包含整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
执行单元108(包含执行整数和浮点运算的逻辑)也驻留在处理器102中。处理器102也可包含存储某些宏指令的微代码的微代码(ucode)ROM。在一个实施例中,执行单元108可包含处置打包指令集109的逻辑。通过在通用处理器102的指令集中包括打包指令集109,连同执行指令的关联电路,可使用通用处理器102中的打包数据执行由许多多媒体应用使用的操作。从而,通过使用处理器的数据总线的完全宽度来对打包数据执行操作,可加速和更有效地执行许多多媒体应用。这可消除跨处理器的数据总线传输更小数据单元来一次一个数据元素执行一个或更多个操作的需要。
执行单元108的实施例也可用在微控制器、嵌入式处理器、图形装置、DSP以及其它类型逻辑电路中。***100可包含存储器120。存储器120可实现为动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪速存储器装置或其它存储器装置。存储器120可存储由数据信号表示的可由处理器102执行的指令119和/或数据121。
***逻辑芯片116可耦合到处理器总线110和存储器120。***逻辑芯片116可包含存储器控制器中枢(MCH)。处理器102可经由处理器总线110与MCH 116通信。MCH 116可提供到存储器120的高带宽存储器路径118,其用于指令119和数据121的存储以及用于图形命令、数据和结构(texture)的存储。MCH 116可在处理器102、存储器120和***100中的其它组件之间引导数据信号,并在处理器总线110、存储器120和***I/O 122之间桥接数据信号。在一些实施例中,***逻辑芯片116可提供用于耦合到图形控制器112的图形端口。MCH116可通过存储器接口118耦合到存储器120。图形卡112可通过加速图形端口(AGP)互连114耦合到MCH 116。
***100可使用专有中枢接口总线122将MCH 116耦合到I/O控制器中枢(ICH)130。在一个实施例中,ICH 130可经由本地I/O总线提供到一些I/O装置的直接连接。本地I/O总线可包含用于将外设连接到存储器120、芯片集和处理器102的高速I/O总线。示例可包含音频控制器129、固件中枢(闪速BIOS)128、无线收发器126、数据存储装置124、含有用户输入接口125(其包含键盘接口)的遗留I/O控制器123、串行扩展端口127(诸如通用串行总线(USB))和网络控制器134。数据存储装置124可包括硬盘驱动器、软盘驱动器、CD-ROM装置、闪速存储器装置或其它大容量存储装置。
对于***的另一实施例,按照一个实施例的指令可与片上***一起使用。片上***的一个实施例由处理器和存储器组成。用于一个此类***的存储器可包含闪速存储器。闪速存储器可位于与处理器和其它***组件相同的管芯上。此外,诸如存储器控制器或图形控制器的其它逻辑块也可位于片上***上。
图1B示出了实现本公开的实施例的原理的数据处理***140。本领域技术人员将容易认识到,本文描述的实施例可通过备选处理***操作,而不脱离本公开实施例的范围。
按照一个实施例,计算机***140包括用于执行至少一个指令的处理核159。在一个实施例中,处理核159表示任何类型架构的处理单元,包含但不限于CISC、RISC或VLIW型架构。处理核159还可适合于以一个或多个工艺技术的制造,并且通过充分详细地表示在机器可读介质上,处理核159可适合于促进所述制造。
处理核159包括执行单元142、一组寄存器堆145、以及解码器144。处理核159还可包含对理解本公开实施例不必要的附加电路(未示出)。执行单元142可执行由处理核159接收的指令。除了执行典型处理器指令,执行单元142可执行打包指令集143中的指令,以便执行对打包数据格式的操作。打包指令集143可包含用于执行本公开实施例的指令以及其它打包指令。执行单元142可通过内部总线耦合到寄存器堆145。寄存器堆145可表示处理核159上的用于存储信息(包含数据)的存储区域。如先前所提到的,要理解到,存储区域可存储可能不关键的打包数据。执行单元142可耦合到解码器144。解码器144可将由处理核159接收的指令解码成控制信号和/或微代码入口点。响应于这些控制信号和/或微代码入口点,执行单元142执行适当操作。在一个实施例中,解码器可解译指令的操作码,其将指示应该对在指令内指示的对应数据执行什么操作。
处理核159可与总线141耦合,以便与各种其它***装置通信,所述各种其它***装置例如可包含但不限于:同步动态随机存取存储器(SDRAM)控制146、静态随机存取存储器(SRAM)控制147、突发闪速存储器接口148、个人计算机存储卡国际协会(PCMCIA)/紧凑型闪存(CF)卡控制149、液晶显示器(LCD)控制150、直接存储器存取(DMA)控制器151以及备选总线主接口152。在一个实施例中,数据处理***140还可包括I/O桥154以便经由I/O总线153与各种I/O装置通信。此类I/O装置例如可包含但不限于通用异步接收器/传送器(UART)155、通用串行总线(USB) 156、蓝牙无线UART 157和I/O扩展接口158。
数据处理***140的一个实施例规定移动、网络和/或无线通信以及可执行包含文本字符串比较操作的SIMD操作的处理核159。处理核159可采用各种音频、视频、成像和通信算法编程,所述算法包含:离散变换,诸如Walsh-Hadamard变换,快速傅里叶变换(FFT)、离散余弦变换(DCT)以及它们的相应逆变换;压缩/解压技术,诸如色彩空间变换、视频编码运动估计或视频解码运动补偿;以及调制/解调(MODEM)功能,诸如脉冲译码调制(PCM)。
图1C示出了执行SIMD文本字符串比较操作的数据处理***的其它实施例。在一个实施例中,数据处理***160可包含主处理器166、SIMD协处理器161、高速缓冲存储器167和输入/输出***168。输入/输出***168可选地可耦合到无线接口169。SIMD协处理器161可执行包含按照一个实施例的指令的操作。在一个实施例中,处理核170可适合于以一个或多个工艺技术的制造,并且通过充分详细地在机器可读介质上表示,处理核170可适合于促进制造所有或部分数据处理***160(包含处理核170)。
在一个实施例中,SIMD协处理器161包括执行单元162和一组寄存器堆164。主处理器166的一个实施例包括解码器165以识别指令集163中的指令(包含按照一个实施例的指令)以用于由执行单元162执行。在其它实施例中,SIMD协处理器161还包括至少部分解码器165(示出为165B)以解码指令集163中的指令。处理核170还可包含对理解本公开实施例可不必要的附加电路(未示出)。
在操作中,主处理器166执行数据处理指令流,其控制通用类型的数据处理操作(包含与高速缓冲存储器167和输入/输出***168的交互)。嵌入在数据处理指令流内的可以是SIMD协处理器指令。主处理器166的解码器165将这些SIMD协处理器指令识别为应该由附连的SIMD协处理器161执行的类型。相应地,主处理器166在协处理器总线166上发布这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号)。从协处理器总线171,可由任何附连的SIMD协处理器接收这些指令。在此情况下,SIMD协处理器161可接受并执行预期用于它的任何接收的SIMD协处理器指令。
数据可经由无线接口169接收以便由SIMD协处理器指令处理。对于一个示例,语音通信可以以数字信号形式被接收,其可由SIMD协处理器指令处理以重新生成代表语音通信的数字音频样本。对于另一个示例,压缩的音频和/或视频可以数字位流形式被接收,其可由SIMD协处理器指令处理以重新生成数字音频样本和/或运动视频帧。在处理核170的一个实施例中,主处理器166和SIMD协处理器161可被集成到单个处理核170中,处理核170包括执行单元162、一组寄存器堆164、以及识别指令集163中的指令(包含按照一个实施例的指令)的解码器165。
图2是按照本公开的实施例的可包含执行指令的逻辑电路的处理器200的微架构的框图。在一些实施例中,可实现按照一个实施例的指令,以对具有字节、字、双字、四字等大小以及诸如单和双精度整数和浮点数据类型的数据类型的数据元素进行操作。在一个实施例中,有序前端201可实现处理器200的一部分,该部分可获得要执行的指令,并且有序前端201准备所述指令以稍后在处理器流水线中进行使用。前端201可包含几个单元。在一个实施例中,指令预获取器226从存储器中获取指令,并将指令馈送到指令解码器228,其又解码或解译这些指令。例如,在一个实施例中,解码器将接收的指令解码成机器可执行的称为“微指令”或“微操作”(也称为microop或uop)的一个或多个操作。在其它实施例中,解码器将指令解析成操作码和对应的数据以及控制字段,它们可由微架构使用以执行按照一个实施例的操作。在一个实施例中,追踪(trace)高速缓存230可将解码的uop汇编成uop队列234中的程序排序的序列或追踪以便执行。当追踪高速缓存230遇到复杂指令时,微代码ROM232提供完成该操作所需的uop。
一些指令可被转换成单个微-op,而其它指令需要几个微-op来完成整个操作。在一个实施例中,如果需要多于四个微-op来完成指令,则解码器228可访问微代码ROM 232以执行指令。在一个实施例中,指令可被解码成小数量的微-op,以便在指令解码器228进行处理。在另一实施例中,指令可被存储在微代码ROM 232内,如果需要若干微-op来完成操作的话。追踪高速缓存230指的是入口点可编程逻辑阵列(PLA),其用来确定针对读取微代码序列的正确微指令指针,以完成来自微代码ROM 232的按照一个实施例的一个或多个指令。在微代码ROM 232完成对指令的微-op进行排序后,机器的前端201可恢复从追踪高速缓存230获取微-op。
无序执行引擎203可准备指令以用于执行。无序执行逻辑具有多个缓冲器,以在指令沿流水线向下并且被调度用于执行时,平滑处理和重新排序指令的流以优化性能。分配器/寄存器重命名器215中的分配器逻辑分配每个uop为了执行而所需要的机器缓冲器和资源。分配器/寄存器重命名器215中的寄存器重命名逻辑将逻辑寄存器重命名到寄存器堆中的条目上。在指令调度器(存储器调度器209、快速调度器202、慢速/通用浮点调度器204和简单浮点调度器206)前面,分配器215还为两个uop队列(一个用于存储器操作(存储器uop队列207),并且一个用于非存储器操作(整数/浮点uop队列205))之一中的每个uop分配条目。Uop调度器202、204、206基于其相关性输入寄存器操作数源的准备度和uop完成其操作需要的执行资源的可用性,确定uop何时准备就绪执行。一个实施例的快速调度器202可在主时钟周期的每半个周期上进行调度,而其它调度器可每主处理器时钟周期仅调度一次。调度器对于分派端口进行裁决以调度uop以便执行。
寄存器堆208、210可布置在调度器202、204、206与执行块211中的执行单元212、214、216、218、220、222、224之间。寄存器堆208、210中的每个分别执行整数运算和浮点运算。每个寄存器堆208、210可包含旁路网络,其可向新的相关uop进行旁路或转发尚未写入寄存器堆中的刚刚完成的结果。整数寄存器堆208和浮点寄存器堆210可相互传递数据。在一个实施例中,整数寄存器堆208可被分成两个单独的寄存器堆,一个寄存器堆用于数据的低阶32位,而第二寄存器堆用于数据的高阶32位。浮点寄存器堆210可包含128位宽条目,因为浮点指令通常具有从64位到128位宽的操作数。
执行块211可含有执行单元212、214、216、218、220、222、224。执行单元212、214、216、218、220、222、224可执行指令。执行块211可包含存储微指令需要执行的整数和浮点数据操作数值的寄存器堆208、210。在一个实施例中,处理器200可包括若干执行单元:地址生成单元(AGU) 212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮点ALU 222、浮点移动单元224。在另一实施例中,浮点执行块222、224可执行浮点、MMX、SIMD和SSE或其它运算。在又一个实施例中,浮点ALU 222可包含64位×64位浮点除法器以执行除法、平方根和余数微-op。在各种实施例中,涉及浮点值的指令可用浮点硬件处置。在一个实施例中,ALU运算可传到高速ALU执行单元216、218。高速ALU 216、218可以通过时钟周期一半的有效等待时间执行快速运算。在一个实施例中,最复杂的整数操作去到慢速ALU 220,因为慢速ALU220可包括用于长等待时间类型操作的整数执行硬件,如乘法器、位移、标记逻辑和分支处理。存储器加载/存储操作由AGU 212、214执行。在一个实施例中,整数ALU 216、218、220可对64位数据操作数执行整数运算。在其它实施例中,可实现ALU 216、218、220以支持各种数据位大小,包含16、32、128、256等。类似地,可实现浮点单元222、224以支持具有各种宽度位的一系列操作数。在一个实施例中,浮点单元222、224可结合SIMD和多媒体指令对128位宽打包数据操作数进行操作。
在一个实施例中,在父载荷已经完成执行之前,uop调度器202、204、206分派相关操作。由于在处理器200中可推测性地调度和执行uop,故处理器200还可包含处置存储器丢失的逻辑。如果数据加载在数据高速缓存中丢失,则流水线中可存在执行中(in flight)相关操作,其为调度器留下了暂时不正确的数据。重放机制跟踪和重新执行使用不正确数据的指令。可能只需要重放相关操作,并且可允许完成独立操作。处理器的一个实施例的调度器和重放机制也可设计成捕捉用于文本字符串比较运算的指令序列。
术语“寄存器”可指代可用作标识操作数的部分指令的板载处理器存储位置。换而言之,寄存器可以是从处理器的外部可使用的那些寄存器(从编程器的角度而言)。然而,在一些实施例中,寄存器可能不限于特定类型的电路。相反,寄存器可存储数据,提供数据,并且执行本文中描述的功能。本文中描述的寄存器可由处理器内的电路使用任何数量的不同技术实现,诸如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆也包含用于打包数据的8个多媒体SIMD寄存器。对于下面的讨论,可将寄存器理解为设计成保持打包数据的数据寄存器,诸如来自加利福尼亚州Santa Clara的IntelCorporation的以MMX技术实现的微处理器中的64位宽MMX™寄存器(在一些实例中也称为“mm”寄存器)。在整数和浮点形式两者中可用的这些MMX寄存器可与伴随SIMD 和SSE指令的打包数据元素一起操作。类似地,与SSE2、SSE3、SSE4或更高版本(一般称为“SSEx”)技术有关的128位宽XMM寄存器可保持此类打包数据操作数。在一个实施例中,在存储打包数据和整数数据中,寄存器无需区分所述两种数据类型。在一个实施例中,整数和浮点数据可包含在相同寄存器堆或不同寄存器堆中。此外,在一个实施例中,浮点和整数数据可存储在不同寄存器或相同寄存器中。
在以下图形的示例中,可描述多个数据操作数。图3A示出根据本公开的实施例的在多媒体寄存器中的各种打包数据类型表示。图3A示出用于128位宽操作数的打包字节310、打包字320和打包双字(dword) 330的数据类型。此示例的打包字节格式310可以为128位长,并且包含16个打包字节数据元素。字节例如可定义为8位的数据。用于每个字节数据元素的信息可存储在针对字节0的位7到位0、针对字节1的位15到位8、针对字节2的位23到位16及最后针对字节15的位120到位127中。因此,在寄存器中可使用所有可用位。此存储布置增大了处理器的存储效率。此外,利用访问的16个数据元素,现在可并行对16个数据元素执行一个操作。
通常,数据元素可包括与相同长度的其它数据元素一起存储在单个寄存器或存储器位置中的单独数据段。在与SSEx技术有关的打包数据序列中,XMM寄存器中存储的数据元素的数量可以是128位除以单独数据元素的以位为单位的长度。类似地,在与MMX和SSE技术有关的打包数据序列中,MMX寄存器中存储的数据元素的数量可以是64位除以单独数据元素的以位为单位的长度。虽然图3A中示出的数据类型可以为128位长,但本公开的实施例也可利用64位宽或其它大小的操作数操作。此示例的打包字格式320可以为128位长,并且包含8个打包字数据元素。每个打包字包含16位的信息。图3A的打包双字格式330可以为128位长,并且包含4个打包双字数据元素。每个打包双字数据元素包含32位的信息。打包四字可以为128位长,并且包含2个打包四字数据元素。
图3B示出根据本公开的实施例的可能寄存器中的数据存储格式。每个打包数据可包括多于一个独立数据元素。示出了三个打包数据格式;打包半精度型(half)341、打包单精度型342和打包双精度型343。打包半精度型341、打包单精度型342和打包双精度型343的一个实施例包含固定点数据元素。对于另一实施例,打包半精度型341、打包单精度型342和打包双精度型343中的一个或更多个可包含浮点数据元素。打包半精度型341的一个实施例可以为128位长,其包含8个16位数据元素。打包单精度型342的一个实施例可以为128位长,并且包含4个32位数据元素。打包双精度型343的一个实施例可以为128位长,并且包含2个64位数据元素。将领会的是,此类打包数据格式可进一步扩展到其它寄存器长度,例如,96位、160位、192位、224位、256位或更多。
图3C示出根据本公开的实施例的在多媒体寄存器中的各种有符号和无符号的打包数据类型表示。无符号的打包字节表示344示出在SIMD寄存器中的无符号的打包字节的存储。每个字节数据元素的信息可存储在针对字节0的位7到位0、针对字节1的位15到位8、针对字节2的位23到位16及最后针对字节15的位120到位127中。因此,在寄存器中可使用所有可用位。此存储布置可增大处理器的存储效率。此外,利用访问的16个数据元素,现在可以并行方式对16个数据元素执行一个操作。有符号的打包字节表示345示出有符号的打包字节的存储。要注意的是,每个字节数据元素的第8位可以是符号指示符。无符号的打包字表示346示出在SIMD寄存器中可如何存储字7到字0。有符号的打包字表示347可类似于无符号的打包字寄存器中的表示346。要注意的是,每个字数据元素的第16位可以是符号指示符。无符号的打包双字表示348显示如何存储双字数据元素。有符号的打包双字表示349可类似于无符号的打包双字寄存器中的表示348。要注意的是,必需的符号位可以是每个双字数据元素的第32位。
图3D示出操作编码(操作码)的实施例。此外,格式360可包括寄存器/存储器操作数寻址模式,其与万维网(www) at intel.com/design/litcentr上从加利福尼亚州圣克拉拉Intel Corporation可获得的“IA-32 Intel架构软件开发员手册第2卷:指令集参考”(IA-32 Intel Architecture Software Developer's Manual Volume 2: InstructionSet Reference)中描述的操作码格式的类型相对应。在一个实施例中,指令可通过字段361和362中的一个或更多个字段编码。可标识直到每指令两个操作数位置,包括直到两个源操作数标识符364和365。在一个实施例中,目的地操作数标识符366可与源操作数标识符364相同,而在其它实施例中,它们可不同。在另一实施例中,目的地操作数标识符366可与源操作数标识符365相同,而在其它实施例中,它们可不同。在一个实施例中,通过源操作数标识符364和365标识的源操作数之一可通过文本字符串比较运算的结果被改写,而在其它实施例中,标识符364对应于源寄存器元素,并且标识符365对应于目的地寄存器元素。在一个实施例中,操作数标识符364和365可标识32位或64位源和目的地操作数。
图3E示出根据本公开的实施例的具有40或更多个位的另一可能操作编码(操作码)格式370。操作码格式370与操作码格式360相对应,并且包括可选前缀字节378。根据一个实施例的指令可通过字段378、371和372的一个或更多个字段编码。通过源操作数标识符374和375以及通过前缀字节378,可标识直到每指令两个操作数位置。在一个实施例中,前缀字节378可用于标识32位或64位源和目的地操作数。在一个实施例中,目的地操作数标识符376可与源操作数标识符374相同,而在其它实施例中,它们可不同。对于另一实施例,目的地操作数标识符376可与源操作数标识符375相同,而在其它实施例中,它们可不同。在一个实施例中,指令对通过操作数标识符374和375标识的一个或更多个操作数进行操作,并且通过操作数标识符374和375标识的一个或更多个操作数可通过指令的结果被改写,而在其它实施例中,通过标识符374和375标识的操作数可被写入另一寄存器中的另一数据元素。操作码格式360和370允许由MOD字段363和373和由可选比例-索引-基础和位移字节部分地指定的寄存器到寄存器、存储器到寄存器、寄存器接(by)存储器、寄存器接寄存器、寄存器接中间物、寄存器到存储器寻址。
图3F示出根据本公开的实施例的又一可能操作编码(操作码)格式。64位单指令多数据(SIMD)算术运算可通过协处理器数据处理(CDP)指令被执行。操作编码(操作码)格式380描绘具有CDP操作码字段382和389的一个此类CDP指令。CDP指令的类型,对于另一实施例,操作可通过字段383、384、387和388的一个或更多个字段编码。可标识直到每指令三个操作数位置,包括直到两个源操作数标识符385、390和一个目的地操作数标识符386。协处理器的一个实施例可对8、16、32和64位值进行操作。在一个实施例中,可对整数数据元素执行指令。在一些实施例中,可使用条件字段381,有条件地执行指令。对于一些实施例,源数据大小可由字段383编码。在一些实施例中,可对SIMD字段进行零(Z)、负(N)、进位(C)和溢出(V)检测。对于一些指令,饱和的类型可由字段384编码。
图4A是根据本公开的实施例的示出有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图。图4B是根据本公开的实施例的示出有序架构核和寄存器重命名逻辑、无序发布/执行流水线(要被包括在处理器中)的框图。图4A中的实线框示出有序流水线,而虚线框示出寄存器重命名、无序发布/执行流水线。类似地,图4B中的实线框示出有序架构逻辑,而虚线框示出寄存器重命名逻辑和无序发布/执行逻辑。
在图4A中,处理器流水线400可包括获取阶段402、长度解码阶段404、解码阶段406、分配阶段408、重命名阶段410、调度(也称为分派或发布)阶段412、寄存器读取/存储器读取阶段414、执行阶段416、写回/存储器写入阶段418、异常处理阶段422及提交阶段424。
在图4B中,箭头表示在两个或更多个单元之间的耦合,并且箭头的方向指示在那些单元之间数据流的方向。图4B显示处理器核490,其包括耦合到执行引擎单元450的前端单元430,并且两者均可耦合到存储器单元470。
核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或备选核类型。在一个实施例中,核490可以是专用核,诸如,例如网络或通信核、压缩引擎、图形核或诸如此类。
前端单元430可包括耦合到指令高速缓存单元434的分支预测单元432。指令高速缓存单元434可耦合到指令转化后备缓冲器(TLB) 436。TLB 436可耦合到指令获取单元438,其耦合到解码单元440。解码单元440可将指令解码,并且生成作为输出的一个或更多个微操作、微代码入口点、微指令、其它指令或其它控制信号,它们可从原始指令解码或者以其它方式反映原始指令或者可从原始指令得到。解码器可使用各种不同机制实现。适合机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,指令高速缓存单元434可还耦合到存储器单元470中的2级(L2)高速缓存单元476。解码单元440可耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450可包括耦合到引退单元454和一个或更多个调度器单元456的集合的重命名/分配器单元452。调度器单元456表示任何数量的不同调度器,包括预留站、中央指令窗口等。调度器单元456可耦合到物理寄存器堆单元458。每个物理寄存器堆单元458表示一个或更多个物理寄存器堆,这些寄存器堆中的不同寄存器堆存储一个或更多个不同数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、等,状态(例如,作为要执行的下一指令的地址的指令指针)等。物理寄存器堆单元458可由引退单元454重叠以示出其中可实现寄存器重命名和无序执行的各种方式(例如,使用一个或更多个重排序缓冲器和一个或更多个引退寄存器堆;使用一个或更多个将来文件(file)、一个或更多个历史缓冲器和一个或更多个引退寄存器堆;使用寄存器映射和寄存器池等)。通常,架构寄存器可从处理器外部或者从程序员的角度而言是可见的。寄存器可能不限于任何已知特定类型的电路。各种不同类型的寄存器只要如本文中所述存储和提供数据,它们便是适合的。适合寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。引退单元454和物理寄存器堆单元458可耦合到执行集群460。执行集群460可包括一个或更多个执行单元462的集合和一个或更多个存储器存取单元464的集合。执行单元462可执行各种操作(例如,移位、加法、减法、乘法),并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)进行执行。虽然一些实施例可包括专用于特定功能或功能的集合的多个执行单元,但其它实施例可只包括一个执行单元或全部执行所有功能的多个执行单元。调度器单元456、物理寄存器堆单元458和执行集群460示为可能是多个,这是因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线和/或存储器存取流水线,每个流水线具有其自己的调度器单元、物理寄存器堆单元和/或执行集群 - 并且在单独的存储器存取流水线的情况下,可实现其中仅此流水线的执行集群具有存储器存取单元464的某些实施例)。还应理解的是,在使用单独流水线的情况下,一个或更多个这些流水线可以是无序发布/执行,并且其余的流水线是有序的。
存储器存取单元464的集合可耦合到存储器单元470,其可包括耦合到数据高速缓存单元474的数据TLB单元472,数据高速缓存单元474耦合到2级(L2)高速缓存单元476。在一个示范实施例中,存储器存取单元464可包括载荷单元、存储地址单元和存储数据单元,它们中的每个可耦合到存储器单元470中的数据TLB单元472。L2高速缓存单元476可耦合到一个或更多个其它级的高速缓存,并且最终耦合到主存储器。
通过示例,示范寄存器重命名、无序发布/执行核架构可如下实现流水线400:1)指令获取438可执行获取阶段402和长度解码阶段404;2)解码单元440可执行解码阶段406;3)重命名/分配器单元452可执行分配阶段408和重命名阶段410;4)调度器单元456可执行调度阶段412;5)物理寄存器堆单元458和存储器单元470可执行寄存器读取/存储器读取阶段414;执行集群460可执行执行阶段416;6)存储器单元470和物理寄存器堆单元458可执行写回/存储器写入阶段418;7)各种单元可涉及异常处理阶段422的执行;以及8)引退单元454和物理寄存器堆单元458可执行提交阶段424。
核490可支持一个或更多个指令集(例如,x86指令集(其中对于较新版本已添加一些扩展);加利福尼亚州Sunnyvale的MIPS Technologies的MIPS指令集;加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集(具有诸如NEON的可选另外扩展))。
应理解的是,核可以以多种方式支持多线程(执行两个或更多个并行的操作或线程的集合)。例如通过包括时间片多线程、同时多线程(其中,单个物理核提供用于物理核在同时进行多线程的每个线程的逻辑核)或其组合,可执行多线程支持。此类组合例如可包括时间片获取和解码及之后的同时多线程,诸如在Intel®超线程技术中一样。
虽然寄存器重命名可在无序执行的上下文中描述,但应理解的是,可在有序架构中使用寄存器重命名。虽然处理器的所示实施例也可包括单独的指令和数据高速缓存单元434/474及共享L2高速缓存单元476,但其它实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如1级(L1)内部高速缓存,或多个级的内部高速缓存。在一些实施例中,***可包括内部高速缓存和可在核和/或处理器外的外部高速缓存的组合。在其它实施例中,所有高速缓存可在核和/或处理器的外部。
图5A是根据本公开的实施例的处理器500的框图。在一个实施例中,处理器500可包括多核处理器。处理器500可包括以通信方式耦合到一个或更多个核502的***代理510。此外,核502和***代理510可以通信方式耦合到一个或更多个高速缓存506。核502、***代理510和高速缓存506可经一个或更多个存储器控制单元552以通信方式耦合。此外,核502、***代理510和高速缓存506可经存储器控制单元552以通信方式耦合到图形模块560。
处理器500可包括用于将核502、***代理510和高速缓存506及图形模块560互连的任何适合机制。在一个实施例中,处理器500可包括基于环形的互连单元508以将核502、***代理510和高速缓存506及图形模块560互连。在其它实施例中,处理器500可包括用于将此类单元互连的任何数量的公知技术。基于环形的互连单元508可利用存储器控制单元552以促进互连。
处理器500可包括存储器层级,该层级包括核内的一个或更多个级的高速缓存、诸如高速缓存506的一个或更多个共享高速缓存单元或耦合到集成存储器控制器单元552的集合的外部存储器(未示出)。高速缓存506可包括任何适合的高速缓存。在一个实施例中,高速缓存506可包括诸如2级(L2)、3级(L3)、4级(L4)或其它级的高速缓存的一个或更多个中间级高速缓存、末级高速缓存(LLC)和/或其组合。
在各种实施例中,一个或更多个核502可执行多线程。***代理510可包括用于协调和操作核502的组件。***代理510例如可包括功率控制单元(PCU)。PCU可以是或者包括对于调节核502的功率状态所需的逻辑和组件。***代理510可包括用于驱动一个或更多个外部连接的显示器或图形模块560的显示引擎512。***代理510可包括用于针对图形的通信总线的接口514。在一个实施例中,接口514可通过PCI高速 (PCIe)来实现。在其它的实施例中,接口514可通过PCI高速图形(PEG)来实现。***代理510可包括直接媒体接口(DMI)516。DMI 516可在计算机***的母板或其它部分上的不同桥之间提供链路。***代理510可包括用于提供PCIe链路到计算***的其它元素的PCIe桥518。PCIe桥518可使用存储器控制器520和一致性逻辑522实现。
核502可以以任何适合的方式实现。核502可在架构和/或指令集方面是同构或异构的。在一个实施例中,一些核502可以是有序的,而其它核可以是无序的。在另一实施例中,两个或更多个核502可执行相同指令集,而其它核可只执行该指令集的子集或不同指令集。
处理器500可包括诸如可从加利福尼亚州Santa Clara的Intel Corporation获得的Core™ i3、i5、i7、2 Duo和Quad、Xeon™、Itanium™、XScale™或StrongARM™处理器等通用处理器。处理器500可从诸如ARM Holdings, Ltd、MIPS的另一公司提供。处理器500可以是专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器或诸如此类。处理器500可在一个或更多个芯片上实现。处理器500可以是使用诸如例如BiCMOS、COMS或NMOS的多个处理技术的任何技术的一个或更多个衬底的一部分,和/或可在衬底上实现。
在一个实施例中,高速缓存506的一个给定高速缓存可由核502的多个核共享。在另一实施例中,高速缓存506的一个给定高速缓存可专用于核502之一。高速缓存506到核502的指派可由高速缓存控制器或其它适合机制处理。通过实现给定高速缓存506的时间片,可由两个或更多个核502共享高速缓存506的一个给定高速缓存。
图形模块560可实现集成图形处理子***。在一个实施例中,图形模块560可包括图形处理器。此外,图形模块560可包括媒体引擎565。媒体引擎565可提供媒体编码和视频解码。
图5B是根据本公开的实施例的核502的示例实现的框图。核502可包括以通信方式耦合到无序引擎580的前端570。核502可通过高速缓存层级503,以通信方式耦合到处理器500的其它部分。
前端570可以以任何适合的方式实现,例如,如上所述部分或完全由前端201实现。在一个实施例中,前端570可通过高速缓存层级503与处理器500的其它部分进行通信。在另外实施例中,前端570可从处理器500的部分获取指令,并且在指令传递到无序执行引擎580时准备处理器流水线中以后要使用的指令。
无序执行引擎580可以以任何适合的方式实现,例如,如上所述部分或完全通过无序执行引擎203来实现。无序执行引擎580可准备从前端570接收到的指令以供执行。无序执行引擎580可包括分配模块582。在一个实施例中,分配模块582可分配处理器500的资源或诸如寄存器或缓冲器的其它资源以执行给定指令。分配模块582可在调度器中进行分配,如存储器调度器、快速调度器或浮点调度器。此类调度器可在图5B中由资源调度器584表示。分配模块582可完全或部分通过结合图2描述的分配逻辑来实现。资源调度器584可基于给定资源的源的准备度和执行指令需要的执行资源的可用性,确定指令何时准备就绪以执行。资源调度器584可例如通过如上所述的调度器202、204、206来实现。资源调度器584可对一个或更多个资源调度指令的执行。在一个实施例中,此类资源可在核502的内部,并且例如可示出为资源586。在另一实施例中,此类资源可在核502的外部,并且例如可由高速缓存层级503访问。资源例如可包括存储器、高速缓存、寄存器堆或寄存器。核502内部的资源可由图5B中的资源586表示。在必需时,可例如通过高速缓存层级503,协调写入资源586或从中读取的值和处理器500的其它部分。在指令是指派的资源时,可将它们置于重新排序缓冲器588中。重新排序缓冲器588可在指令执行时跟踪指令,并且可基于处理器500的任何适合准则,有选择地将其执行重新排序。在一个实施例中,重新排序缓冲器588可标识可独立执行的指令或一系列指令。此类指令或一系列指令可与其它此类指令并行执行。核502中的并行执行可通过任何适合数量的单独执行块或虚拟处理器执行。在一个实施例中,给定核502内的多个虚拟处理器可访问诸如存储器、寄存器和高速缓存的共享资源。在其它实施例中,处理器500内的多个处理实体可访问共享资源。
高速缓存层级503可以以任何适合的方式实现。例如,高速缓存层级503可包括诸如高速缓存572、574的一个或更多个更低或中级高速缓存。在一个实施例中,高速缓存层级503可包括以通信方式耦合到高速缓存572、574的LLC 595。在另一实施例中,LLC 595可在对处理器500的所有处理实体可访问的模块590中实现。在另外的实施例中,模块590可在来自Intel, Inc的处理器的非核心模块中实现。模块590可包括对于执行核502所必需,但可能不在核502内实现的处理器500的部分或子***。除LLC 595外,模块590例如可包括硬件接口、存储器一致性协调器、处理器间互连、指令流水线或存储器控制器。通过模块590,并且更具体地说,通过LLC 595,可对可用于处理器500的RAM 599进行访问。此外,核502的其它实例可类似地访问模块590。可部分通过模块590,促进核502的实例的协调。
图6-8可示出适合于包含处理器500的示范***,而图9可示出可包含一个或多个核502的示范性片上***(SoC)。在本领域已知的用于膝上型计算机、桌面型计算机、手持PC、个人数字助理、工程设计工作站、服务器、网络装置、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置和各种其它电子装置的其它***设计和实现也是适合的。一般而言,结合处理器和/或本文所公开的其它执行逻辑的大量***或电子装置一般可以是适合的。
图6示出了按照本公开实施例的***600的框图。***600可包含一个或多个处理器610、615,它们可耦合到图形存储器控制器中枢(GMCH) 620。在图6中用虚线指代附加处理器615的可选性质。
每个处理器610、615可以是某版本的处理器500。然而,应该指出,在处理器610、615中可能不存在集成图形逻辑和集成存储器控制单元。图6示出了GMCH 620可耦合到存储器640,存储器640例如可以是动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可与非易失性高速缓存关联。
GMCH 620可以是芯片集,或者芯片集的一部分。GMCH 620可与处理器610、615通信,并控制处理器610、615与存储器640之间的交互。GMCH 620也可充当处理器610、615与***600其它元件之间的加速总线接口。在一个实施例中,GMCH 620经由多点总线(诸如前侧总线(FSB) 695)与处理器610、615通信。
更进一步,GMCH 620可耦合到显示器645(诸如平板显示器)。在一个实施例中,GMCH 620可包含集成图形加速器。GMCH 620可进一步耦合到输入/输出(I/O)控制器中枢(ICH) 650,其可用于将各种外设装置耦合到***600。外部图形装置660可包含耦合到ICH650的分立图形装置,连同另一外设装置670。
在其它实施例中,在***600中也可存在附加的或不同的处理器。例如,附加处理器610、615可包含可与处理器610相同的附加处理器、可与处理器610异质或不对称的附加处理器、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。在品质度量谱(包含架构、微架构、热、功耗特性等)方面,在物理资源610、615之间可能存在各种差异。这些差异在处理器610、615之间可有效地将它们自己标明为不对称并且异质。对于至少一个实施例,各种处理器610、615可驻留在同一管芯封装中。
图7示出了按照本公开实施例的第二***700的框图。如图7中所示,多处理器***700可包含点对点互连***,并且可包经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每个可以如一个或更多个处理器610,615一样,是某一版本的处理器500。
虽然图7可示出两个处理器770、780,但要理解到,本公开的范围不限于此。在其它实施例中,在给定处理器中可存在一个或多个附加处理器。
分别示出处理器770和780包含集成存储器控制器单元772和782。处理器770还可包含点对点(P-P)接口776和778作为其总线控制器单元的一部分;类似地,第二处理器780可包含P-P接口786和788。处理器770、780可经由点对点(P-P)接口750使用P-P接口电路778、788交换信息。如图7中所示,IMC 772和782可将处理器耦合到相应存储器,即存储器732和存储器734,它们在一个实施例中可以是本地附连到相应处理器的主存储器的部分。
处理器770、780可各经由单独P-P接口752、754使用点对点接口电路776、794、786、798与芯片集790交换信息。在一个实施例中,芯片集790还可经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可被包含在任一处理器中或两个处理器外,仍经由P-P互连与处理器连接,使得任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中(如果处理器被置于低功率模式)。
芯片集790可经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外设组件互连(PCI)总线,或诸如PCI高速总线的总线,或另一个第三代I/O互连总线,尽管本公开的范围不限于此。
如图7中所示,各种I/O装置714可耦合到第一总线716,连同将第一总线716耦合到第二总线720的总线桥718。在一个实施例中,第二总线720可以是低管脚计数(LPC)总线。在一个实施例中,各种装置可耦合到第二总线720,例如包含键盘和/或鼠标722、通信装置727和存储单元728,诸如盘驱动器或可包含指令/代码和数据730的其它大容量存储装置。进一步说,音频I/O 724可耦合到第二总线720。要指出,其它架构是可能的。例如,代替图7的点对点架构,***可实现多点总线或其它此类架构。
图8示出了按照本公开实施例的第三***800的框图。图7和图8中的相同的元件承载相同的附图标记,并且已经从图8中省略了图7的某些方面,以便避免使图8的其它方面混淆。
图8示出处理器770、780可分别包含集成存储器和I/O控制逻辑(“CL”) 872和882。对于至少一个实施例,CL 872、882可包含集成存储器控制器单元,诸如上面结合图5和图7所描述的。此外,CL 872、882也可包含I/O控制逻辑。图8不仅示出了存储器732、734可耦合到CL 872、882,而且I/O装置814也可耦合到控制逻辑872、882。传统I/O装置815可耦合到芯片集790。
图9示出了按照本公开实施例的SoC 900的框图。图5中的相同元件承载相同附图标记。还有,虚线框可表示更高级SoC上的可选特征。互连单元902可耦合到:应用处理器910,其可包含一个或多个核502A-N的集合以及共享高速缓存单元506;***代理单元510;总线控制器单元916;集成存储器控制器单元914;一组或一个或多个媒体处理器920,其可包含集成图形逻辑908、用于提供静止和/或视频相机功能性的图像处理器924、用于提供硬件音频加速的音频处理器926以及用于提供视频编码/解码加速的视频处理器928;静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;以及用于耦合到一个或多个外部显示器的显示单元940。
图10示出了按照本公开的实施例的可执行至少一个指令的含有中央处理单元(CPU)和图形处理单元(GPU)的处理器。在一个实施例中,执行根据至少一个实施例的操作的指令可由CPU执行。在另一实施例中,指令可由GPU执行。在又一实施例中,指令可通过由GPU和CPU执行的操作组合执行。例如,在一个实施例中,按照一个实施例的指令可被接收和解码以便在CPU上执行。然而,解码指令内的一个或多个操作可由CPU执行,并且结果返回到GPU用于指令的最后引退。相反,在一些实施例中,CPU可充当主处理器,并且GPU充当协处理器。
在一些实施例中,受益于高度并行吞吐量处理器的指令可由GPU执行,而受益于处理器(其受益于深流水线架构)的性能的指令可由CPU执行。例如,图形、科学应用、金融应用和其它并行工作负荷可受益于GPU的性能,并被相应地执行,而更多序列应用(诸如操作***内核或应用代码)可更适合于CPU。
在图10中,处理器1000包含CPU 1005、GPU 1010、图像处理器1015、视频处理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、显示装置1040、存储器接口控制器1045、MIPI控制器1050、闪速存储器控制器1055、双数据速率(DDR)控制器1060、安全性引擎1065和I2S/I2C控制器1070。其它逻辑和电路可包含在图10的处理器中,包含更多CPU和GPU以及其它外设接口控制器。
至少一个实施例的一个或多个方面可由存储在表示处理器内的各种逻辑的机器可读介质上的代表性数据实现,其当由机器读取时使机器制造执行本文描述的技术的逻辑。称为“IP核”的此类表示可存储在有形机器可读介质(“带”)上,并供应给各种消费者或制造设施,以加载到实际上制造逻辑或处理器的制造机器中。例如,诸如由ARM Holdings,Ltd开发的Cortex™族处理器和中国科学院计算技术研究所(ICT)开发的龙芯IP核的IP核可许可或销售到各种客户或被许可人,如Texas Instruments、Qualcomm、Apple或Samsung,并且在由这些客户或被许可人生产的处理器中实现。
图11示出了按照本公开实施例示出开发IP核的框图。存储装置1100可包含模拟软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可经由存储器1140(例如硬盘)、有线连接(例如因特网)1150或无线连接1160提供给存储装置1100。由模拟工具和模型生成的IP核信息然后可被传送到制造设施1165,其中它可由第三方制造以执行按照至少一个实施例的至少一个指令。
在一些实施例中,一个或多个指令可对应于第一类型或架构(例如x86),并且在不同类型或架构(例如ARM)的处理器上转化或仿真。根据一个实施例,指令因此可在任何处理器或处理器类型(包含ARM、x86、MIPS、GPU)或其它处理器类型或架构上执行。
图12示出了按照本公开实施例,可如何由不同类型的处理器仿真第一类型的指令。在图12中,程序1205含有可与根据一个实施例的指令执行相同或基本上相同功能的一些指令。然而,程序1205的指令可属于与处理器1215不同或不兼容的类型和/或格式,意味着,程序1205中的类型的指令可能不能够由处理器1215本地执行。然而,在仿真逻辑1210的帮助下,程序1205的指令可被转化成可由处理器1215本地执行的指令。在一个实施例中,仿真逻辑可实施在硬件中。在另一实施例中,仿真逻辑可实施在有形、机器可读介质中,其含有将程序1205中的类型的指令转化成由处理器1215本地可执行的类型。在其它实施例中,仿真逻辑可以是固定功能或可编程硬件以及存储在有形、机器可读介质上的程序的组合。在一个实施例中,处理器含有仿真逻辑,而在其它实施例中,仿真逻辑存在于处理器外部,并且可由第三方提供。在一个实施例中,处理器可通过执行在处理器中含有的或与处理器关联的微代码或固件来加载实施在含有软件的有形、机器可读介质中的模拟逻辑。
图13示出了按照本公开的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示出的实施例中,指令转换器可以是软件指令转换器,尽管指令转换器可以用软件、固件、硬件或它们的各种组合实现。图13示出可使用x86编译器1304编译高级语言1302的程序以生成x86二进制代码1306,其可由具有至少一个x86指令集核1316的处理器本地执行。具有至少一个x86指令集核的处理器1316表示可通过兼容执行或以其它方式处理(1) Intel x86指令集核的指令集的实质部分或(2)定向为在具有至少一个x86指令集核的Intel处理器上运行的应用或其它软件的对象代码版本,执行与具有至少一个x86指令集核的Intel处理器基本上相同功能,以便实现与具有至少一个x86指令集核的Intel处理器基本上相同结果的任何处理器。x86编译器1304表示可操作以生成x86二进制代码1306(例如对象代码)的编译器,二进制代码1306可在具有或没有附加连锁处理的情况下在具有至少一个x86指令集核1316的处理器上执行。类似地,图13示出采用高级语言1302的程序可使用备选指令集编译器1308编译以生成备选指令集二进制代码1310,其可由没有至少一个x86指令集核1314的处理器(例如,具有执行加利福尼亚州Sunnyvale的MIPS Technologies的MIPS指令集,和/或执行加利福尼亚州Sunnyvale的ARM Holdings的ARM指令集的核的处理器)本地执行。指令转换器1312可用于将x86二进制代码1306转换成可由没有x86指令集核1314的处理器本地执行的代码。这个转换的代码可能不与备选指令集二进制代码1310相同;然而,转换的代码将完成一般操作,并且由来自备选指令集的指令组成。从而,指令转换器1312表示通过仿真、模拟或任何其它过程,允许不具有x86指令集处理器或核的处理器或其它电子装置执行x86二进制代码1306的软件、固件、硬件或其组合。
图14是按照本公开实施例的处理器的指令集架构1400的框图。指令集架构1400可包含任何适合数量或种类的组件。
例如,指令集架构1400可包含处理实体,诸如一个或多个核1406、1407和图形处理单元1415。核1406、1407可通过任何适合的机制(诸如通过总线或高速缓存)以通信方式耦合到其余指令集架构1400。在一个实施例中,核1406、1407可通过L2高速缓存控制1408以通信方式耦合,L2高速缓存控制1408可包含总线接口单元1409和L2高速缓存1411。核1406、1407和图形处理单元1415可通过互连1410以通信方式彼此耦合,并耦合到指令集架构1400的剩余部分。在一个实施例中,图形处理单元1415可使用视频代码1420(其定义其中具体视频信号将被编码和解码以便输出的方式)。
指令集架构1400还可包含任何数量或种类的接口、控制器或用于与电子装置或***的其它部分对接或通信的其它机制。此类机制例如可促进与外设、通信装置、其它处理器或存储器的交互。在图14的示例中,指令集架构1400可包含液晶显示器(LCD)视频接口1425、订户接口模块(SIM)接口1430、引导ROM接口1435、同步动态随机存取存储器(SDRAM)控制器1440、闪存控制器1445和串行外设接口(SPI)主单元1450。LCD视频接口1425例如可从GPU 1415并且例如通过移动工业处理器接口(MIPI)1490或高清多媒体接口(HDMI)1495向显示器提供视频信号的输出。此类显示器例如可包含LCD。SIM接口1430可提供对或从SIM卡或装置的访问。SDRAM控制器1440可提供对或从诸如SDRAM芯片或模块1460的存储器的访问。闪存控制器1445可提供对或从诸如闪存存储器1465或RAM的其它实例的存储器的访问。SPI主单元1450可提供对或从诸如蓝牙模块1470、高速3G调制解调器1475、全球定位***模块1480或实现诸如802.11的通信标准的无线模块1485的通信模块的访问。
图15是按照本公开实施例的处理器的指令集架构1500的更详细框图。指令架构1500可实现指令集架构1400的一个或多个方面。更进一步,指令集架构1500可示出用于执行处理器内指令的模块和机制。
指令架构1500可包含以通信方式耦合到一个或多个执行实体1565的存储器***1540。更进一步,指令架构1500可包含以通信方式耦合到执行实体1565和存储器***1540的高速缓存和总线接口单元(诸如单元1510)。在一个实施例中,将指令加载到执行实体1565可由一个或多个执行阶段执行。此类阶段例如可包含指令预获取阶段1530、双指令解码阶段1550、寄存器重命名阶段1555、发布阶段1560和写回阶段1570。
在一个实施例中,存储器***1540可包含执行的指令指针1580。执行的指令指针1580可存储标识一批指令内最旧的、未指派的指令的值。最旧的指令可对应于最低程序指令(PO)值。PO可包含唯一数量的指令。此类指令可以是由多个指令串(strand)表示的线程内的单个指令。PO可在排序指令中用于确保代码的正确执行语义。PO可通过诸如评估指令中编码的PO的增量而不是绝对值的机制来重构。此类重构的PO可被称为“RPO”。尽管本文可提到PO,但此类PO可与RPO互换使用。指令串可包含是取决于彼此的数据的指令序列。在编译时间,指令串可由二进制转化器布置。执行指令串的硬件可按根据各种指令的PO的次序执行给定指令串的指令。线程可包含多个指令串,使得不同指令串的指令可取决于彼此。给定指令串的PO可以是指令串中尚未从发布阶段分派执行的最旧的指令的PO。相应地,给定多个指令串的线程,每个指令串包含按PO排序的指令,执行的指令指针1580可存储线程中最旧的——由最低号码示出的——PO。
在另一个实施例中,存储器***1540可包含引退指针1582。引退指针1582可存储标识最后引退的指令的PO的值。引退指针1582例如可由引退单元454设置。如果尚没有指令引退,则引退指针1582可包含空值。
执行实体1565可包含处理器通过其可执行指令的任何适合数量和种类的机制。在图15的示例中,执行实体1565可包含ALU/乘法单元(MUL)1566、ALU 1567和浮点单元(FPU)1568。在一个实施例中,此类实体可利用在给定地址1569内含有的信息。执行实体1565与阶段1530、1550、1555、1560、1570组合可共同形成执行单元。
单元1510可用任何适合的方式实现。在一个实施例中,单元1510可执行高速缓存控制。在此类实施例中,单元1510从而可包含高速缓存1525。在另外实施例中,高速缓存1525可实现为具有任何适合大小(诸如0、128k、256k、512k、1M或2M字节的存储器)的L2统一高速缓存。在另一、另外的实施例中,高速缓存1525可实现在纠错代码存储器中。在另一实施例中,单元1510可执行到处理器或电子装置的其它部分的总线对接。在此类实施例中,单元1510从而可包含用于通过互连、处理器内总线、处理器间总线或其它通信总线、端口或线路通信的总线接口单元1520。总线接口单元1520可提供对接以便例如执行生成存储器和输入/输出地址,以便在执行实体1565与指令架构1500外部的***部分之间传送数据。
为了进一步促进其功能,总线接口单元1520可包含用于生成中断和到处理器或电子装置的其它部分的其它通信的中断控制和分布单元1511。在一个实施例中,总线接口单元1520可包含处置针对多个处理核的高速缓存访问和一致性的探听控制单元1512。在另外的实施例中,为了提供此类功能性,探听控制单元1512可包含处置不同高速缓存之间信息交换的高速缓存到高速缓存传送单元。在另一、另外实施例中,探听控制单元1512可包含一个或多个探听过滤器1514,其监视其它高速缓存(未示出)的一致性,使得高速缓存控制器(诸如单元1510)不用必须直接执行此类监视。单元1510可包含用于同步指令架构1500的动作的任何适合数量的定时器1515。还有,单元1510可包含AC端口1516。
存储器***1540可包含用于存储对于指令架构1500的处理需要的信息的任何适合的数量和种类的机制。在一个实施例中,存储器***1540可包含用于存储信息(诸如写入到存储器或寄存器或从存储器或寄存器读回的缓冲器)的载荷存储单元1546。在另一实施例中,存储器***1540可包含转化后备缓冲器(TLB)1545,其提供了物理地址与虚拟地址之间的地址值的查找。在又一实施例中,存储器***1540可包含用于促进访问虚拟存储器的存储器管理单元(MMU)1544。在又一实施例中,存储器***1540可包含预获取器1543,用于在指令实际需要被执行之前从存储器请求此类指令以便减少等待时间。
执行指令的指令架构1500的操作可通过不同阶段执行。例如,使用单元1510指令预获取阶段1530可通过预获取器1543访问指令。检索的指令可被存储在指令高速缓存1532中。预获取阶段1530可实现用于快速环路模式的选项1531,其中执行形成环路的一系列指令,环路足够小以在给定高速缓存内拟合。在一个实施例中,执行此类执行例如可无需从指令高速缓存1532访问附加指令。预获取什么指令的确定例如可由分支预测单元1535进行,单元1535可访问全局历史1536中的执行指示、目标地址1537的指示或确定接下来将执行代码的分支1557中的哪个的返回栈1538的内容。此类分支有可能作为结果预获取。分支1557可通过如下面所描述的其它操作阶段产生。指令预获取阶段1530可提供指令及有关将来指令的任何预测到双指令解码阶段。
双指令解码阶段1550可将接收的指令转化成可执行的基于微代码的指令。双指令解码阶段1550每时钟周期可同时解码两个指令。更进一步,双指令解码阶段1550可将其结果传到寄存器重命名阶段1555。此外,双指令解码阶段1550可从其解码和微代码的最终执行中确定任何结果分支。此类结果可输入到分支1557中。
寄存器重命名阶段1555可将对虚拟寄存器或其它资源的引用转化成对物理寄存器或资源的引用。寄存器重命名阶段1555可包含寄存器池1556中此类映射的指示。寄存器重命名阶段1555可更改所接收的指令,并将结果发送到发布阶段1560。
发布阶段1560可向执行实体1565发布或分派命令。此类发布可按无序方式执行。在一个实施例中,多个指令可在执行之前在发布阶段1560保持。发布阶段1560可包含用于保持此类多个命令的指令队列1561。可基于任何可接受的判据,诸如用于执行给定指令的资源的可用性或适用性,由发布阶段1560向具体处理实体1565发布指令。在一个实施例中,发布阶段1560可重新排序指令队列1561内的指令,使得所接收的第一指令可能不是所执行的第一指令。基于指令队列1561的排序,附加分支信息可被提供给分支1557。发布阶段1560可将指令传到执行实体1565以用于执行。
在执行时,写回阶段1570可将数据写入到寄存器、队列或指令集架构1500的其它结构中,以传递给定命令的完成。取决于在发布阶段1560中布置的指令次序,写回阶段1570的操作可实现要被执行的附加指令。指令集架构1500的执行可由追踪单元1575监视或调试。
图16是按照本公开实施例的用于处理器的指令集架构的执行流水线1600的框图。执行流水线1600例如可示出图15的指令架构1500的操作。
执行流水线1600可包含步骤或操作的任何适合的组合。在1605,可进行接下来要执行的分支的预测。在一个实施例中,此类预测可基于先前指令的执行及其结果。在1610,对应于预测的执行分支的指令可被加载到指令高速缓存中。在1615,可获取指令高速缓存中的一个或多个此类指令以便执行。在1620,已经获取的指令可被解码成微代码或更特定的机器语言。在一个实施例中,可同时解码多个指令。在1625,可重新指配解码指令内对寄存器或其它资源的引用。例如,可引用对应物理寄存器替换对虚拟寄存器的引用。在1630,指令可被分派给队列以便执行。在1640,可执行指令。可按任何适合的方式执行此类执行。在1650,可向适合的执行实体发布指令。其中执行指令的方式可取决于执行指令的特定实体。例如,在1655,ALU可执行算术函数。ALU可针对其操作利用单个时钟周期以及两个移位器。在一个实施例中,可采用两个ALU,并且从而在1655可执行两个指令。在1660,可进行结果分支的确定。程序计数器可用于指定分支将进行到其的目的地。1660可在单个时钟周期内执行。在1665,浮点算术可由一个或多个FPU执行。浮点操作可需要执行多个时钟周期,诸如2个到10个周期。在1670,可执行乘法和除法运算。此类运算可在4个时钟周期中执行。在1675,可执行对寄存器或流水线1600其它部分的加载和存储操作。操作可包含加载和存储地址。此类运算可在4个时钟周期中执行。在1680,写回操作可根据需要由1655-1675的结果操作执行。
图17是根据本公开的实施例的用于利用处理器1710的电子装置1700的框图。电子装置1700例如可包括笔记本、超级本、计算机、塔式服务器、机架服务器、刀片服务器、膝上型计算机、桌上型计算机、平板、移动装置、电话、嵌入式计算机或任何其它适合的电子装置。
电子装置1700可包括以通信方式耦合到任何适合数量或种类的组件、外设、模块或装置的处理器1710。此类耦合可通过任何适合种类的总线或接口来实现,如I2C总线、***管理总线(SMBus)、低引脚计数(LPC)总线、SPI、高清晰音频(HDA)总线、串行高级技术附件(SATA)总线、USB总线(版本1、2、3)或通用异步接收器/传送器(UART)总线。
此类组件例如可包括显示器1724、触摸屏1725、触摸板1730、近场通信(NFC)单元1745、传感器中枢1740、热传感器1746、高速芯片集(EC)1735、可信平台模块(TPM)1738、BlOS/固件/闪存存储器1722、数字信号处理器1760、诸如固态磁盘(SSD)或硬盘驱动器(HDD)的驱动器1720、无线局域网(WLAN)单元1750、蓝牙单元1752、无线广域网(WWAN)单元1756、全球定位***(GPS)1755、诸如USB 3.0摄像头的摄像头1754、或例如以LPDDR3标准实现的低功率双倍数据率(LPDDR)存储器单元1715。这些组件每个可以以任何适合的方式实现。
此外,在各种实施例中,其它组件可通过上面讨论的组件以通信方式耦合到处理器1710。例如,加速计1741、环境光传感器(ALS)1742、罗盘1743和陀螺仪1744可以以通信方式耦合到传感器中枢1740。热传感器1739、风扇1737、键盘1736和触摸板1730可以以通信方式耦合到EC 1735。扬声器1763、耳机1764和麦克风1765可以以通信方式耦合到音频单元1762,音频单元又可以通信方式耦合到DSP 1760。音频单元1762可包括例如音频编解码器和D类放大器。SIM卡1757可以以通信方式耦合到WWAN单元1756。诸如WLAN单元1750和蓝牙单元1752以及WWAN单元1756的组件可以以下一代规格(NGFF)实现。
本公开的实施例涉及用于串行化***管理中断(SMI)事件(包括串行化在处理器中始发的SMI)的处理逻辑或电路。图18是根据本公开的实施例的用于处理器***管理中断事件的基于仲裁的串行化的示例***1800的图示。一般而言,***管理中断可以是给定***中的对所有处理器或核的不可掩蔽的中断。在发布SMI之后,***中的所有处理器或核可以停止它们正进行的事情并进入***管理模式。当在此模式中时,可以调用SMI处置器来处置中断,在这之后处理器或核将在它们被中断所处的点恢复操作。
***1800可以包括处理器、SoC、集成电路或其它机制。例如,***1800可以包括处理器1810。尽管处理器1810被示出并描述为图18中的示例,但是可以使用任何适合的机制。例如,本文描述的处理器1804的一些或全部功能性可以通过电路、用于重新配置电路的指令、数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或具有更多、更少或不同于图18中示出的那些元件的不同元件来实现。处理器1810可以包括用于串行化***管理中断(SMI)事件(包括串行化在处理器中始发的SMI)的任何适合的机制。在至少一些实施例中,此类机制可以用硬件实现。例如,在一些实施例中,图18中示出和/或本文描述的处理器1804的一些或所有元件可以使用硬件电路完全或部分地实现。在一些实施例中,此电路可以包括静态(固定功能)逻辑装置,其共同实现处理器1804的一些或全部功能性。在其它实施例中,此电路可以包括可编程逻辑装置,例如现场可编程逻辑门或其阵列,其共同实现处理器1804的一些或全部功能性。在还有其它实施例中,此电路可以包括静态、动态和/或可编程存储器装置,当结合其它硬件元件操作时,实现处理器1804的一些或全部功能性。例如,处理器1804可以包括具有指令存储在其中的硬件存储器,所述指令可以用于对***1800进行编程以执行根据本公开的实施例的一个或多个操作。***1800和处理器1804的实施例不限于硬件电路和软件的任何特定组合。处理器1810可以由图1-17中描述的元件完全或部分地实现。处理器1810可以包括一个或多个核1815。处理器1810还可以包括用以实现中断路由选择逻辑1840的功能性的电路或逻辑,如本文所描述的。
***1800可以包括平台控制器中枢(PCH)1850,其可以用于将***1800的各种装置和组件耦合到处理器1810。在一个实施例中,PCH 1850可以包括输入/输出(I/O)控制器中枢(ICH),其可以用于将各种外设装置耦合到***1800中的一个或多个处理器1810。例如,PCH 1850可以包括用以实现图1A中示出的ICH 130或图6中示出的ICH 650的功能性的电路或逻辑。在另一实施例中,PCH 1850可以包括存储器控制器中枢(MCH),其可以向***1800内的存储器提供高带宽路径。例如,PCH 1850可以包括用以实现图1A中示出的MCH 116或图6中示出的GMCH 620的功能性的电路或逻辑。在又一实施例中,PCH 1850可以包括用以实现与由***1800内的I/O控制器中枢或存储器控制器中枢提供的功能性不同的功能性的电路或逻辑。
在一些实施例中,可以存在处理器1810上始发的SMI事件的多个源,每个源可以由电路或逻辑实现。例如,在一个实施例中,处理器上的SMI事件源可以包括核错误逻辑1812。在一个实施例中,处理器上的SMI事件源可以包括存储器控制器错误逻辑1814。在一个实施例中,处理器上的SMI事件源可以包括互连错误逻辑1816。在一个实施例中,处理器上的SMI事件源可以包括非核错误逻辑1818。在一个实施例中,处理器上的SMI事件源可以包括输入/输出(I/O)错误逻辑1820。
在本公开的实施例中,在处理器1810上始发的每个SMI事件的相应指示(在图18中示出为指示1845)可以被引导到PCH 1850上的SMI处理电路或逻辑以用于仲裁和串行化。在一个实施例中,处理器1810可以通过直接媒体接口(DMI)1830与PCH 1850通信。例如,在处理器1810上始发的SMI事件的指示(1845)可以通过DMI链路1830传递到PCH 1850。在一个实施例中,DMI链路1830可以在处理器1810上的***代理(未示出)内实现。例如,DMI链路1830可以包括用以在处理器1810上的***代理510内实现图5A中示出的DMI 516的功能性的电路或逻辑。
在一个实施例中,PCH 1850上的SMI处理逻辑可以包括用以在处理器上始发和/或从PCH 1850上的SMI事件源中始发的任何待决的SMI之间进行仲裁以及串行化传递到处理器1810的SMI信号的电路或逻辑。在一个实施例中,一次只能将一个***管理中断信号1855发送到处理器1810的核1815。例如,PCH 1850可以包括仲裁器1870以串行化SMI信号到处理器1810的核1815的通信以用于处置。发布到处理器1810的每个SMI可以触发处理器1810上的一个待决SMI事件或多个待决SMI事件的处置。例如,在一个实施例中,一旦PCH 1850上的仲裁器1870断言SMI信号1855,则将不会发布其它SMI到处理器1810直到所有待决的SMI事件已由处理器1810处置。
在一些实施例中,当检测到从处理器1810上的SMI事件源始发的SMI事件时,可以通过DMI 1830将SMI事件的指示(示出为1845)发送到PCH 1850,而不是将SMI事件的指示直接路由到处理器1810上的中断路由选择逻辑1840以用于分发到核1815。处理器1810可以是***1800中通信地耦合到PCH 1850的多个处理器中的一个。在一个实施例中,这些处理器可以全部类似于处理器1810。在另一实施例中,至少两个处理器可以彼此不同。在一些实施例中,***1800内的多个处理器中的每个(包括处理器1810)可以通过相应的直接媒体接口(DMI)链路1830与PCH 1850通信。在其中***1800包括多个处理器的实施例中,响应于检测到处理器上的SMI事件而引导到PCH 1850的SMI事件的指示1845可以包括处理器(SMI事件在其上始发)的标识符。在另一实施例中,响应于检测到处理器上的SMI事件而引导到PCH1850的SMI事件的指示1845可包括与检测到的SMI事件关联或受其影响的核或线程的标识符。在又一实施例中,响应于检测到处理器上的SMI事件而引导到PCH 1850的SMI事件的指示1845可以包括处理器驻留在其中的插槽(socket)的标识符。
如上面注意到的,PCH 1850可以包括仲裁器1870以仲裁和串行化要由处理器1810处置的SMI,如本文详细描述的。在一个实施例中,PCH 1850可以包括SMI状态寄存器,其包括用于多个可能的SMI事件源中的每个的相应字段。每个状态寄存器字段的值可以包括从具体SMI事件源始发的SMI事件是否待决。在另一实施例中,PCH 1850可以包括表示多个SMI状态指示符(其由PCH 1850的其它元件单独可访问,而不是作为单个SMI状态寄存器的字段)的电路或逻辑。在一个实施例中,SMI状态位或指示符可由软件编程器可寻址。在其它实施例中,SMI状态位或指示符可能不能由软件编程器可寻址。
在本公开的实施例中,一个或多个SMI事件源可以驻留在处理器1810上。例如,SMI状态寄存器中的SMI状态位1852可以指示在具体处理器或处理器核(显示为CPU0)上始发的SMI事件是否是待决的。在此示例中,SMI状态位1852可以由PCH 1850内的逻辑或SMI处理电路设置(响应于接收到在与SMI状态位1852关联的具体处理器或处理器核上始发的SMI事件1845的指示,而不管在处理器或处理器核上的SMI事件的特定源)。在一些实施例中,如果在处理器1810上的核错误逻辑1812、存储器控制器错误逻辑1814、互连错误逻辑1816或I/O错误逻辑1820中或由其检测到SMI事件,则在处理器1810上始发了SMI事件的指示1845可以发送到PCH 1850。在一个实施例中,SMI事件1845的指示可以包括处理器1810的标识符,但是可以不包括SMI事件的特定源的标识符。这可以允许PCH 1850内的SMI处理电路或逻辑识别响应于SMI事件而要设置的具体SMI状态位或指示符。在另一实施例中,SMI事件1845的指示可包括与SMI事件关联或受SMI事件影响的具体线程、插槽或核的标识符。在又一实施例中,SMI事件1845的指示可以包括处理器上的特定SMI事件源或SMI事件的类型的标识符。
在图18中所示的示例实施例中,SMI状态寄存器中的一个或多个其它SMI状态位1854可以指示在相应的不同处理器或处理器核(显示为CPUx)上始发的SMI事件是否是待决的。虽然图18中所示的示例实施例包括在给定处理器上始发的所有SMI事件的一个SMI状态位或指示符,而不管在处理器内它们的源,但在其它实施例中,PCH 1850可包括针对处理器上的每个SMI事件源的相应的SMI状态位或指示符。
在一些实施例中,一个或多个SMI事件源可以驻留在***1800内的处理器1810外部。PCH 1850上的相应SMI状态位的值可以指示是否存在与每个此类SMI事件源关联的待决的SMI事件。例如,在一个实施例中,SMI状态寄存器中的位1856可以指示由软件触发的SMI事件是否是待决的。在一个实施例中,SMI状态寄存器中的位1858可以指示在计时器上或由计时器触发的SMI事件是否是待决的。在一个实施例中,SMI状态寄存器中的位1860可以指示由PCH 1850上的通用输入/输出电路或逻辑触发的SMI事件是否是待决的。在其它实施例中,***1800可以包括更多、更少或不同的SMI事件源,并且PCH 1850可以包括与那些SMI事件源对应的更多、更少或不同的SMI状态位。
在一些实施例中,PCH 1850上的仲裁器1870可以仲裁和串行化任何和所有待决的SMI事件以用于由处理器1810处置,而不管它们的源。例如,仲裁器1870在处理器和/或PCH1850上始发的任何待决的SMI之间进行仲裁,并且可以一次向处理器发布单个中断信号,而不管待决的SMI事件的数量。在一个实施例中,处理器上的SMI处置器然后可以在产生SMI处置器已响应于中断信号而完成它的动作的指示之前处置所有待决的SMI事件。例如,当PCH1850向处理器发布中断时,可以由PCH 1850上的SMI处理电路或逻辑清除PCH 1850上的SMI结束(EOS)状态位或指示符。然后,SMI处置器可以在PCH 1850上设置EOS状态位或指示符(一旦它完成处置所有待决的SMI事件)。以这种方式,可以串行化SMI信号到处理器1810的核1815的通信。在一个实施例中,如果存在至少一个SMI事件待决并且PCH 1850上的EOS状态位或指示符被设置(真),则PCH 1850可以通过DMI 1830向处理器1810发布***管理中断(SMI)信号1855。然而,如果PCH 1850上的EOS状态位或指示符清除(假),则即使一个或多个SMI事件是待决的,也不会向处理器1810发布中断信号。在中断信号由处理器1810接收时,***管理中断信号1845可以被引导到中断路由选择逻辑1840。然后,中断路由逻辑1840可以将中断信号分发到处理器1810的所有核1815。
在一个实施例中,PCH 1850可以包括SMI处理逻辑以串行化SMI。在不同的实施例中,此串行化逻辑可以整体或部分地驻留在仲裁器1870内。图19是根据本公开的实施例的包括SMI串行化逻辑1900的平台控制器中枢(PCH)1850的一部分的图示。在一个实施例中,SMI串行化逻辑1900可以包括用以执行OR功能的电路或逻辑1910,其输入包括SMI状态寄存器的所有字段。例如,图18中作为SMI状态位1852、1854、1856、1858或1860示出的SMI状态寄存器字段中的任何一个或所有可以是到1910的输入。在其它实施例中,***1800可以包括更多、更少或不同的SMI事件源和对应的SMI状态位或指示符。在图19中所示的示例实施例中,如果到逻辑1910的任何一个或多个输入为真,则1910的输出将为真。例如,如果SMI状态位1852、1854、1856、1858或1860中的任何一个具有值“1”,则1910的输出也将是“1”。这可能指示至少一个SMI事件是待决的。
在一些实施例中,SMI串行化逻辑1900可以包括用以执行AND功能的电路或逻辑1920。到AND功能的输入可以包括1910的输出和表示SMI结束(EOS)位1930的值的输入。在一个实施例中,可以默认设置EOS位1930(例如,它可以具有值1,或者真)。 EOS位1930可以保持设置,直到并且除非发生某些事情以清除它。在一个实施例中,当SMI被发布到处理器1810时,EOS位1930可以被硬件清除(例如,成为值0或者为假),这可以防止基于SMI事件向处理器发布任何其它中断。在一个实施例中,1920的输出可以是SMI信号1855。在一个实施例中,也可以通过DMI 1830将SMI信号1855(也在图18中示出)传递到处理器1810。在图19中所示的示例实施例中,如果1910的输出和EOS位1930的值均为真,1920的输出(SMI信号1855)将为真。在此情况下,SMI信号1855将通过DMI 1830发布到处理器1810,触发处理器1810上的中断。然而,如果EOS位1930的值不为真,则1920的输出(示出为SMI信号1855)将为假。在此情况下,SMI信号1855将不被断言。因此,将不会向处理器1810发布中断,不管任何SMI事件是否是待决的(如由1910的输出指示的)。
在一个实施例中,电路/逻辑1910、电路/逻辑1920和EOS位1930可以在图18中示出的仲裁器1870内实现。在其它实施例中,电路/逻辑1910、电路/逻辑1920和/或EOS位1930的至少一部分可以在PCH 1850上的仲裁器1870外部实现。在其中在仲裁器1870外部生成电路/逻辑1920的输出的实施例中,可以将此输出提供到仲裁器1870,从而触发通过仲裁器1870的SMI信号1855的断言。
在一些实施例中,PCH 1850可以包括用以控制EOS位1930的值的电路或逻辑(未示出)。PCH 1850还可以包括用以为每个SMI事件源设置和/或清除相应SMI状态位的电路或逻辑(未示出)。在一些实施例中,通过控制到SMI串行化逻辑1900的这些输入,PCH 1850可以串行化***管理中断,该***管理中断被传递到中断路由选择逻辑1840,并且转而被传递到处理器1810的核1815。
在本公开的实施例中,在串行化处理器SMI事件中利用的机制可以被描述如下:
1. PCH中的SMI仲裁器可以包括用以在其仲裁中包含处理器生成的SMI连同PCH生成的SMI的电路或逻辑。
2. 处理器非核可以包括用以将处理器生成的SMI的SMI指示发送到PCH的电路或逻辑。此指示可以包括处理器ID。
3. PCH可以包括用以设置SMI状态寄存器中与处理器ID对应的状态位的电路或逻辑。
4. PCH可以包括用以清除EOS位和断言SMI信号的电路或逻辑。
5. 处理器可以包括用以将SMI递送到***中所有处理器上的所有核的电路或逻辑。
6. 一旦SMI事件已被处置并且对应的状态位已被清除,SMI处置器可以包括用以设置EOS位的电路或逻辑。这可能向PCH指示它可以释放另外SMI。例如,这可以允许SMI仲裁器在检测到另一SMI事件时再次断言SMI信号。
图20是根据本公开的实施例的用于生成在处理器上始发的***管理中断事件和对其作出响应的方法2000的图示。方法2000可以由图1-19中所示的任何元件实现。方法2000可以由任何适合的准则发起,并且可以在任何适合之处发起操作。在一个实施例中,方法2000可以在2005发起操作。方法2000可以包括比示出的那些步骤更多或更少的步骤。此外,方法2000可以以与下面示出的那些顺序不同的顺序执行其步骤。方法2000可以在任何适合的步骤终止。此外,方法2000可以在任何适合的步骤重复操作。方法2000可以执行与方法2000的其它步骤并行的或者与其它方法的步骤并行的任何其步骤。
在2005,在一个实施例中,可以在处理器上检测***管理中断(SMI)事件。在2010,可以将SMI事件的指示引导到平台控制器中枢(PCH)以用于仲裁和串行化。SMI事件的指示可以包括受影响的CPU的标识符。在一个示例中,SMI事件的指示可以包括处理器(在其上检测到SMI事件)的标识符。在另一示例中,SMI事件的指示可以包括处理器上的与SMI事件关联的具体核的标识符。在另一示例中,SMI事件的指示可以包括与SMI事件关联的具体执行线程的标识符。在又一示例中,SMI事件的指示可以包括插槽(处理器(在其上检测到SMI事件)驻留在其中)的标识符。
在一个实施例中,当没有从PCH接收到中断信号(在2015)并且当没有检测到附加SMI事件(在2020)时,处理器的操作可以继续而不响应于检测到的SMI事件采取任何动作。在一个实施例中,如果在接收到中断信号之前(在2015),检测到一个或多个其它SMI事件(在2020),则可以将每个附加SMI事件的指示引导到平台控制器中枢(PCH)以用于仲裁和串行化。每个附加SMI事件的指示可以包括与附加SMI事件关联的CPU的标识符。
在一个实施例中,如果(在2015)从PCH接收到中断信号,则在2025,可以采取中断。在一个实施例中,采取中断可以包括将SMI中断信号递送到处理器的所有核。采取中断还可以包括在完成当前正在执行的指令之后每个核进入***管理模式(SMM)(如果在接收到中断信号时指令的执行在进行中)。随后,在2030,SMI处置器可以处理所有当前待决的SMI事件,包括自从发布中断信号以来检测到的任何事件。例如,在一个实施例中,当进入SMM时,每个线程可以进入SMI处置器并执行会合过程,这意味着它等待所有其它线程来到SMI处置器中。一旦所有线程已登记到达SMI处置器中,则其中的一个可以处置SMI事件。一旦SMI处置器已处理了所有当前待决的SMI事件,则它可以在PCH中设置SMI结束(EOS)位以指示它已完成响应于中断信号而采取它的动作,在这之后SMI处置器可以退出。在2035,核可以从它们被中断之处恢复正常操作。如在图20中示出的,如果以及当检测到任何附加SMI事件或者从PCH接收到任何附加中断信号时,可以在适当的地方重复方法2000的步骤2010-2035中的任何一个或全部。
在图20中所示的示例实施例中,处理器在从PCH接收SMI中断信号之前检测到在处理器上始发的SMI事件。在其它实施例中,处理器可以在检测到在处理器上始发的SMI事件之前接收SMI中断信号(例如,基于在PCH上始发的SMI事件的检测而触发的信号)。
在本公开的实施例中,仲裁器和每个SMI之间的握手协议可以被描述如下:
1. SMI的源(例如,定时器、USB接口、通用I/O组件、处理器等)作为位图记录在SMI状态寄存器中。
2. SMI事件被递送到PCH上的仲裁器。
3. 仲裁器检查EOS位的状态。
4. 如果EOS位清除(值0或为假),则这阻止SMI的递送,因为它指示在先前SMI的处置在进行中。
5.如果EOS位置被设置(值1或为真),则这允许PCH递送SMI(如果SMI状态寄存器中设置有任何状态位),在所述之处PCH清除EOS位。
6. SMI处置器查询SMI状态寄存器以确定一个或多个SMI事件源。如果SMI事件源是处理器,则SMI处置器可以查询处理器以确定该处理器上的特定SMI事件源。例如,在不同实施例中,SMI事件的源可以是核错误逻辑、存储器控制器错误逻辑、互连错误逻辑、非核错误逻辑、I/O错误逻辑或处理器的另一组件。
7. SMI处置器处置与在SMI状态寄存器中设置的位对应的SMI事件。一旦针对SMI事件完成处置,则SMI处置器清除SMI状态寄存器中的对应位。
8. 一旦已处置所有SMI事件,处理器在PCH上设置EOS位。例如,SMI处置器可以将值1写入到EOS位。在另一示例中,BIOS可以将值1写入到EOS位。
9.一旦设置了EOS,这向仲裁器指示先前的SMI已被处置。然后,这将取消阻止SMI递送,使得如果在SMI状态寄存器中存在任何设置位,则将递送另一SMI。这种机制可以确保在步骤7和8之间发生的任何新的SMI事件将不丢失。
在一些实施例中,SMI处置器在被调用时可以处置在发布SMI事件时待决的所有SMI事件以及在SMI处置器正操作以处置较早的SMI事件时检测到的任何附加SMI事件,而不管其源。在不同的实施例中,可以以任何顺序处置SMI事件。在一些实施例中,可以通过一个或多个处理器或核内的不同电路或逻辑同时(例如,大体上并行地)处置多个SMI事件。一旦SMI处置器确定已处置来自所有SMI源的所有待决SMI事件,它可以设置EOS位,并且然后退出SMI处置器。在一些实施例中,如果在包括多个处理器插槽的***中的处理器上生成SMI事件,则可以向PCH提供插槽或处理器的标识符。在一些实施例中,PCH可以提供每插槽或每处理器SMI状态位,并且可以使用所述标识符来填充对应的位。在一些实施例中,这可以确保更快地处置处理器SMI事件。例如,代替在检测到处理器生成的SMI事件时查询所有处理器以确定SMI事件的特定源,SMI处置器可以仅查询所识别的处理器以确定特定的SMI源。
图21是根据本公开的实施例的用于由仲裁器串行化***管理中断事件的方法2100的图示。方法2100可以由图1-19中示出的任何元件实现。方法2100可以由任何适合的准则发起,并且可以在任何适合之处发起操作。在一个实施例中,方法2100可以在2105发起操作。方法2100可以包括比示出的那些步骤更多或更少的步骤。此外,方法2100可以以与下面所示的那些顺序不同的顺序执行其步骤。方法2100可以在任何适合的步骤终止。此外,方法2100可以在任何适合的步骤重复操作。方法2100可以执行与方法2100的其它步骤并行或者与其它方法的步骤并行的任何其步骤。在一个实施例中,响应于由PCH 1850从处理器1810接收处理器SMI事件1845的指示,可以在PCH 1850上调用方法2100。
在2105,在一个实施例中,PCH中的SMI结束(EOS)位可以被初始化成值1(真)。这可以指示当前没有SMI事件由相同***中处理器上的中断处置器(更具体地说,SMI处置器)处置。如果(在2010)从处理器接收到SMI事件指示,则在2115,可以设置PCH中的SMI状态位。SMI事件指示可以包括CPU(在其上检测到SMI事件)的标识符,并且被设置的SMI状态位可以与所识别的CPU关联。类似地,如果(在2120)在PCH上检测到SMI事件,则在2125,可以设置PCH中的不同SMI状态位。此SMI状态位可以与PCH上的SMI事件的源关联。如图20中所示的,直到且除非处理器上或PCH上的逻辑检测到SMI事件,操作可以继续,而不断言SMI信号以中断处理器。
如果(在2110)从处理器接收到SMI事件指示或者如果(在2120)在PCH上检测到SMI事件,以及如果(在2130),确定EOS位被设置,则可以向处理器发布SMI中断。发布中断可以包括断言中断信号和清除EOS位以指示中断的处置在进行中。在另一方面,如果(在2110)从处理器接收到SMI事件指示或者如果(在2120)在PCH上检测到SMI事件,但是如果(在2130)确定EOS位未被设置,则操作可以继续而无需向处理器发布中断。如图21中所示的,如果并且当在处理器上或在PCH上检测到任何附加SMI事件时,可以在适当地方重复方法2100的步骤2110-2135中的任何一个或全部。
在本公开的实施例中,处理器上和/或PCH上的SMI事件的检测可以以任何顺序发生。然而,针对在处理器或在PCH上始发的待决SMI事件,将不会向处理器发布中断,直到且除非EOS位的值为1(真)。
图22是根据本公开的实施例的用于处置串行化***管理中断事件的方法2200的说明。方法2200可以由图1-19中示出的任何元件实现。方法2200可以由任何适合的准则发起,并且可以在任何合适之处发起操作。在一个实施例中,方法2200可以在2205发起操作。方法2200可以包括比所示的那些步骤更多或更少的步骤。此外,方法2200可以以与下面所示的那些顺序不同的顺序执行其步骤。方法2200可以在任何适合的步骤终止。此外,方法2200可以在任何适合的步骤重复操作。方法2200可以执行与方法2200的其它步骤并行的或者与其它方法的步骤并行的任何其步骤。在一个实施例中,响应于由处理器1810从PCH1850接收到SMI信号1855,可以在处理器1810上调用方法2200。
在2205,在一个实施例中,处理器的所有核可以进入***管理模式(SMM),并且SMI处置器可以开始执行。在一个实施例中,当处于SMM中时核可以暂停或停止正常操作。例如,当处于SMM中时它们可以避免执行指令流中的任何指令。在一个实施例中,当所有核处于SMM中时,SMI处置器可以由处理器的核中的一个中的电路或逻辑实现。在另一示例中,当核处于SMM中时,SMI处置器可以由核外部的电路或逻辑实现。在2210,SMI处置器可以访问PCH上的状态寄存器以确定什么SMI事件是待决的。
在2215,在一个实施例中,可以确定是否存在待决的处理器SMI事件。如果存在处理器上始发的至少一个待决的SMI事件,如由处理器的SMI状态位的值所指示的,则在2220,可以针对待决的SMI事件轮询处理器(其状态位被设置)。SMI处置器可以采取动作来处理在处理器上始发的每个待决的SMI事件。例如,处理器可以包括多个SMI事件源,每个SMI事件源检测不同类型的SMI事件。在一个实施例中,由SMI处置器采取的用以处理在处理器上始发的每个待决的SMI事件的动作可以取决于处理器上的SMI事件的源。在另一实施例中,由SMI处置器采取的用以处理在处理器上始发的每个待决的SMI事件的动作可以取决于SMI事件的类型。一旦已处理了在处理器上始发的所有待决的SMI事件,SMI处置器可以清除处理器(在PCH上)的SMI状态位。
在2225,在一个实施例中,可以确定是否存在来自PCH上的SMI事件源的待决的SMI事件。如果存在PCH上始发的至少一个待决的SMI事件,如由与PCH上的SMI事件源关联的一个或多个SMI状态位的真值所指示的,则在2230,SMI处置器可以处置来自PCH源(设置了其SMI状态位)的每个SMI事件。例如,对于每个待决的SMI事件,SMI处置器可以采取取决于SMI事件的源的一个或多个动作。一旦已处理了来自PCH上的具体SMI事件源的所有待决的SMI事件,SMI处置器可以清除与该SMI事件源关联的SMI状态位。
虽然(在2235)存在更多要处置的附加待决的SMI事件,但是可以适当的地方重复步骤2215-2230中的一些或全部,以发现和处置每个附加待决的SMI事件。如果或一旦(在2235)不存在要处置的附加待决的SMI事件,则在2240,SMI处置器可以在PCH中设置EOS位,在这之后SMI处置器可以退出。
在一些实施例中,可以基于在方法2000的执行期间发生的事件和/或采取的动作来调用方法2100和/或2200。例如,可以调用方法2100和/或2200来进行仲裁、串行化并处置一个或多个SMI事件,包括在处理器上始发的SMI事件。
在一些实施例中,本文描述的用于串行化SMI(包括处理器生成的SMI)的机制可以减少或消除由于SMI而在一些现有***中发生的复杂度。例如,在一些现有的服务器***中,SMI广泛用于基于固件的错误处置和用于处置各种可靠性、可用性和可串行化事件。在今天的高核数服务器***中,此类固件优先的错误处置和对SMI的依赖可能导致复杂的极端情况和竞态条件(其要求复杂的变通方案)。在一些现有***中,这些复杂的极端情况和竞态条件由处理器生成的SMI没有被串行化的事实引起。
在一些实施例中,本文描述的用于串行化SMI(包括处理器生成的SMI)的机制可以减少或消除在一些现有***中发生的SMI风暴。例如,在一些现有***中,即使核已经在处理先前的SMI,所有处理器生成的SMI事件被递送到核。由于针对这些SMI事件没有仲裁器,可以将多个紧接的SMI递送到处理器,引起SMI处置器不能跟上的SMI风暴。本文描述的***可以串行化SMI递送,其可以通过一次仅允许发布单个SMI信号来减少或消除此类SMI风暴,这样的处置可以包括处置多个待决的SMI事件。
在一些实施例中,本文描述的用于串行化SMI(包括处理器生成的SMI)的机制可以减少或消除可以通过在一些现有***中执行的SMI的合并而引入的复杂度类型。例如,在一些现有***中,存在情况,在所述情况中可以存在快速连续发生多个紧接的SMI事件,并且由于称为SMM合并的机制,那些事件可能丢失。在这些***中,每个线程具有一个SMI待决位。如果在指令边界内检测到多于一个SMI,则SMI将合并为一个SMI。在此类***中,当两个紧接的SMI在一个线程中在指令边界内发生时,两个SMI被合并,而如果这相同的两个SMI事件碰巧命中(hit)跨指令边界的线程,则该线程将观测两个单独的SMI事件。这种情况会使SMI处理不同步,导致各种极端情况。本文描述的***可以串行化SMI递送,这可以减少或消除这些类型的SMM合并问题。
在一些实施例中,本文描述的用于串行化SMI(包括处理器生成的SMI)的机制可以减少处理器的核响应于SMI事件而在***管理模式中花费的时间量。例如,中断处理器较少次数,并允许SMI处置器在每次响应于中断而停止所有核时处置所有当前待决的SMI,而不是重复中断处理器并等待核在SMI处置器中会合以便处置个体SMI,可以允许处理器在SMM中花费更少的时间并且花费更多时间执行操作***和应用工作负载。当核处置SMI时,这可以减少由操作***进程和/或应用观测到的“超时”数量。在另一示例中,通过将由SMI处置器查询的处理器的数量限制为实际生成SMI事件(如由PCH上的对应SMI状态位指示的)的那些处理器的数量,可以减少由SMI处置器花费用来识别所有当前待决的SMI事件的源的时间。
在一些实施例中,本文描述的用于串行化SMI(包括处理器生成的SMI)的机制可以为***中的所有SMI事件提供一致的语义,而不管它们的源。然后,可以使用PCH上的仲裁器来串行化处理器生成的SMI以及PCH生成的SMI,使得SMI被发布到处理器,并且仅在当前正被处置的任何SMI的处置完成之后发送到其核 。在一些实施例中,这些机制可以提供用于处置多个SMI事件比现有***中更简洁的解决方案,可以防止在一些现有***中可能发生的风暴、超时和SMM合并问题,并且可以避免由于虚假的SMI问题而导致的复杂调试情形。
在一些实施例中,本文描述的用于串行化SMI(包括处理器生成的SMI)的机制可以通过利用是由***中所有处理器插槽共享的公共资源的PCH中的仲裁器无缝地处置多处理器情形 。在一些实施例中,PCH可以驻留在与***中的一个或多个处理器相同的集成电路管芯上。在其它实施例中,PCH可以驻留在与***中的一个或多个处理器相同的插槽或封装中。在还有其它实施例中,PCH可以驻留在与***中的一个或多个处理器相同的芯片集中。
本文公开的机制的实施例可以用硬件、软件、固件或此类实现方法的组合来实现。本公开的实施例可以被实现为在可编程***上执行的计算机程序或程序代码,该可编程***包括至少一个处理器、存储***(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置以及至少一个输出装置。
程序代码可以应用于输入指令以执行本文描述的功能并生成输出信息。输出信息可以以已知的方式应用于一个或多个输出装置。出于本申请的目的,处理***可以包括具有处理器(诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器)的任何***。
程序代码可以以高级面向过程或面向对象的编程语言来实现以与处理***通信。如果期望,程序代码还可以用汇编或机器语言来实现。事实上,本文描述的机制范围上不限于任何特定的编程语言。在任何情况下,语言可以是编译或解译的语言。
至少一个实施例的一个或多个方面可由存储在表示处理器内各种逻辑的机器可读介质上的代表性指令实现,这些指令当由机器读取时使机器制造执行本文描述的技术的逻辑。称为“IP核”的此类表示可存储在有形、机器可读介质上,并供应给各种消费者或制造设施,以加载到实际上制造逻辑或处理器的制造机器中。
此类机器可读存储介质可包含但不限于由机器或装置制造或形成的制品的非暂态、有形布置,包含存储介质,诸如硬盘、任何其它类型盘,包含软盘、光盘、紧凑盘只读存储器(CD-ROM)、紧凑盘可重写(CD-RW)以及磁光盘、半导体器件,诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡或适合于存储电子指令的任何其它类型介质。
相应地,本公开的实施例还可包含非暂态、有形机器可读介质,其含有指令或含有设计数据(诸如硬件描述语言(HDL),其定义本文描述的结构、电路、设备、处理器和/或***特征)。此类实施例也可称为程序产品。
在一些情况下,指令转换器可用于将指令从源指令集转换到目标指令集。例如,指令转换器可转化(例如使用静态二进制转化、动态二进制转化,包含动态编译)、变形、仿真或以其它的方式将指令转换成要由核处理的一个或多个其它指令。指令转换器可用软件、硬件、固件或它们的组合实现。指令转换器可以在处理器上、在处理器外或者部分在处理器上且部分在处理器外。
从而,公开了用于执行根据至少一个实施例的一个或多个指令的技术。虽然已经在附图中描述和示出了某些示范实施例,但要理解的是,此类实施例仅仅是说明性的并且不对其它实施例进行约束,并且此类实施例不限于所示出和描述的特定构造和布置,因为本领域技术人员在学习本公开时可想到各种其它修改。在诸如其中增长快速并且进一步进步不容易预见的此类的技术领域中,所公开的实施例在布置和细节上可容易地修改(如通过实现技术进步所促进的)而并不脱离本公开的原理或所附权利要求书的范围。
本公开的一些实施例包括一种处理器。在这些实施例的至少一些中,所述处理器可以包括用以执行指令的核;用以在所述处理器上检测第一***管理中断(SMI)事件类型的第一SMI事件的逻辑或电路;用以将所述第一SMI事件的指示引导到仲裁器的逻辑或电路;用以从所述仲裁器接收中断信号的逻辑或电路;用以对所述中断信号作出响应的中断处置器,包括用以响应于检测到所述第一SMI事件而采取动作的逻辑或电路,所述动作要取决于所述第一SMI事件类型;以及用以产生所述中断处置器已响应于所述中断信号完成它的动作的指示的逻辑或电路。结合任何上面实施例,所述处理器可以包括用以将所述中断信号传递到所述核的逻辑或电路以及所述核可以包括用以在所述中断处置器对所述中断信号作出响应时暂停执行指令的逻辑或电路。结合任何上面实施例,所述处理器可以包括用以在所述处理器上并在接收到所述中断信号之前,检测与所述第一SMI事件类型不同的第二SMI事件类型的第二SMI事件的逻辑或电路;以及用以将所述第二SMI事件的指示引导到所述仲裁器的逻辑或电路;并且所述中断处置器可以还包括用以响应于检测到所述第二SMI事件而采取动作的逻辑或电路,所述动作要取决于所述第二SMI事件类型。结合任何上面实施例,所述中断处置器可以还包括用以确定所述第一SMI事件类型的逻辑或电路。结合任何上面实施例,所述中断处置器可以还包括用以确定第二SMI事件是待决的的逻辑或电路;以及用以响应于所述第二SMI事件而采取动作的逻辑或电路。结合任何上面实施例,所述仲裁器可以是控制器中枢的组件,并且所述中断处置器可以还包括用以确定在所述控制器中枢上检测到第二SMI事件的逻辑或电路以及用以响应于所述第二SMI事件而采取动作的逻辑或电路。结合任何上面实施例,所述仲裁器可以是控制器中枢的组件并且所述处理器和所述控制器中枢可以驻留在单个集成电路封装中。结合任何上面实施例,所述仲裁器可以是控制器中枢的组件并且所述逻辑或电路可以在控制器中枢上设置SMI结束指示符。结合任何上面实施例,处理器可以是通信地耦合到仲裁器的多个处理器中的一个,并且第一SMI事件的指示可以包括处理器的标识符。结合任何上面实施例,处理器可以包括多个SMI事件源,并且中断处置器还可以包括用以确定处理器上的第一SMI事件的源的逻辑或电路。结合任何上面实施例,仲裁器可以是控制器中枢的组件,控制器中枢可以包括至少一个SMI事件源,并且中断处置器可以还包括用以确定在控制器中枢上检测到第二SMI事件的逻辑或电路以及用以确定控制器中枢上的第二SMI事件的源的逻辑或电路。结合任何上面实施例,处理器可以还包括一个或多个SMI事件源,包括核错误逻辑或电路、存储器控制器错误逻辑或电路、互连错误逻辑或电路、非核错误逻辑或电路或输入/输出错误逻辑或电路。结合任何上面实施例,处理器可以是通信地耦合到仲裁器的多个处理器中的第一个,并且中断处置器可以还包括用以确定在多个处理器的第二个上检测到第二SMI事件的逻辑或电路以及用以确定在第二处理器上的第二SMI事件的源的逻辑或电路。
本公开的一些实施例包括一种方法。所述方法可以包括:在处理器上检测第一***管理中断(SMI)事件类型的第一SMI事件;将所述第一SMI事件的指示引导到控制器中枢;从所述控制器中枢接收中断信号;响应于接收到所述中断信号,执行中断处置器,包括:响应于检测到所述第一SMI事件而采取动作,所述动作取决于所述第一SMI事件类型;以及在所述控制器中枢上设置指示符以指示所述中断处置器已响应于所述中断信号完成它的动作。结合任何上面实施例,所述处理器可以包括用于执行指令的核;以及所述方法可以还包括:将所述中断信号传递到所述核;以及在所述中断处置器对所述中断信号作出响应时,由所述核暂停执行指令。结合任何上面实施例,所述方法可以还包括:在接收到所述中断信号之前在所述处理器上检测与所述第一SMI事件类型不同的第二SMI事件类型的第二SMI事件;以及将所述第二SMI事件的指示引导到所述控制器中枢;以及执行所述中断处置器还可以包括:响应于检测到第二SMI事件而采取动作,所述动作取决于所述第二SMI事件类型。结合任何上面实施例,执行所述中断处置器可以还包括确定所述第一SMI事件类型。结合任何上面实施例,执行所述中断处置器可以还包括:确定第二SMI事件是待决的;以及响应于所述第二SMI事件而采取动作。结合任何上面实施例,执行所述中断处置器还包括:确定在所述控制器中枢上检测到第二SMI事件;以及响应于所述第二SMI事件而采取动作。结合任何上面实施例,所述处理器可以是通信地耦合到所述控制器中枢的多个处理器中的一个;以及所述第一SMI事件的所述指示可以包括所述处理器的标识符。结合任何上面实施例,所述处理器可以包括多个SMI事件源;以及执行所述中断处置器可以还包括:确定所述处理器上的所述第一SMI事件的所述源。结合任何上面实施例,控制器中枢可以包括至少一个SMI事件源,并且执行中断处置器可以还包括确定在控制器中枢上检测到第二SMI事件,以及确定所述控制器中枢上的第二SMI事件的源。结合任何上面实施例,控制器中枢可以包括针对一个或多个SMI事件类型(包括软件SMI事件类型、定时器SMI事件类型或输入/输出SMI事件类型)的每个的相应源。结合任何上面实施例,处理器可包括一个或多个SMI事件源,包括核错误逻辑或电路、存储器控制器错误逻辑或电路、互连错误逻辑或电路、非核错误逻辑或电路,或输入/输出错误逻辑或电路。结合任何上面实施例,处理器可以是通信地耦合到控制器中枢的多个处理器中的第一个,并且执行中断处置器可以还包括确定在多个处理器上的第二个上检测到第二SMI事件以及在确定第二处理器上的第二SMI事件的源。结合任何上面实施例,执行中断处置器可以还包括在控制器中枢上设置指示符之前,响应于至少一个附加待决的SMI事件而采取相应的动作,所述动作取决于附加待决的SMI事件的类型,以及在控制器中枢上设置指示符随后从控制器中枢接收第二中断信号。
本公开的一些实施例包括一种***。在这些实施例的至少一些中,所述***可以包括控制器中枢以及第一处理器。所述第一处理器可以包括:用以执行指令的核;用以从所述第一处理器上的第一***管理中断(SMI)事件源检测第一SMI事件的逻辑或电路;用以将所述第一SMI事件的指示引导到所述控制器中枢的逻辑或电路;用以从所述控制器中枢接收中断信号的逻辑或电路;用以对所述中断信号作出响应的中断处置器,包括用以响应于检测到所述第一SMI事件而采取动作的逻辑或电路,所述动作要取决于所述第一SMI事件的所述源,以及用以在所述控制器中枢上设置指示符以指示所述中断处置器已响应于所述中断信号完成它的动作的逻辑或电路;结合任何上面实施例,所述第一处理器可以还包括用以将所述中断信号传递到所述核的逻辑或电路;所述核包括用以在所述中断处置器对所述中断信号作出响应时暂停执行指令的逻辑或电路。结合任何上面实施例,所述第一处理器可以还包括用以在接收到所述中断信号之前,检测来自与所述第一SMI事件源不同的所述第一处理器上的第二SMI事件源的第二SMI事件的逻辑或电路;以及用以将所述第二SMI事件的指示引导到所述控制器中枢的逻辑或电路;以及所述中断处置器可以还包括用以响应于检测到所述第二SMI事件而采取动作的逻辑或电路,所述动作要取决于所述第二SMI事件的所述源。结合任何上面实施例,所述中断处置器可以还包括用以确定第二SMI事件是待决的的逻辑或电路;以及用以响应于所述第二SMI事件而采取动作的逻辑或电路。结合任何上面实施例,所述控制器中枢可以包括第一SMI状态位,其值指示是否已针对所述第一处理器上的SMI事件源检测到SMI事件;第二SMI状态位,其值指示是否已针对所述控制器中枢上的SMI事件源检测到SMI事件;并且所述中断处置器可以还包括用以取决于所述第二SMI状态位确定在所述控制器中枢上检测到第二SMI事件的逻辑或电路;以及用以响应于所述第二SMI事件而采取动作的逻辑或电路。结合任何上面实施例,所述控制器中枢可以包括SMI结束指示符,其值指示所述中断处置器是否已响应于由所述控制器中枢发布到所述第一处理器的中断完成它的动作;用以在所述SMI结束指示符为假时,防止所述控制器中枢向所述第一处理器发布中断的逻辑或电路;用以确定至少一个SMI事件是待决的的逻辑或电路;用以响应于确定至少一个SMI事件是待决的以及所述SMI结束指示符为真而向所述第一处理器发布中断的逻辑或电路,包括用以清除所述SMI结束指示符的逻辑或电路;以及用以断言所述中断信号的逻辑或电路。结合任何上面实施例,所述***可以还包括第二处理器;所述第一SMI事件的所述指示可以包括所述第一处理器的标识符;所述控制器中枢可以包括:第一SMI状态位,其值指示是否已针对所述第一处理器上的SMI事件源检测到SMI事件;以及用以取决于接收到所述第一SMI事件的所述指示和所述第一处理器的所述标识符而确定要设置所述第一SMI状态位的逻辑或电路。结合任何上面实施例,所述控制器中枢可以包括:第一SMI状态位,其值指示是否已针对所述第一处理器上的SMI事件源检测到SMI事件;所述中断处置器可以还包括用以确定所述第一处理器上的所述第一SMI事件的所述源的逻辑或电路。结合任何上面实施例,控制器中枢可以包括第一SMI状态位,其值指示是否已针对所述第一处理器上的SMI事件源检测到SMI事件,第二SMI状态位,其值指示是否已针对所述控制器中枢上的SMI事件源检测到SMI事件;用以确定在控制器中枢上检测到第二SMI事件的逻辑或电路;以及用以设置第二SMI状态位的逻辑或电路。结合任何上述实施例,***还可以包括第二处理器,控制器中枢可以包括第一SMI状态位,其值指示是否已针对所述第一处理器上的SMI事件源检测到SMI事件;第二SMI状态位,其值指示是否已针对第二处理器上的SMI事件源检测到SMI事件;以及用以取决于接收到包括所述第二处理器的标识符的第二SMI事件的指示来确定要设置第二SMI状态位的逻辑或电路。结合任何上面实施例,中断处置器可以还包括用以确定第一SMI事件类型的逻辑或电路。结合任何上面实施例,逻辑或电路可以在控制器中枢上设置SMI结束指示符。结合任何上面实施例,第一处理器可以是***中的多个处理器中的一个,并且第一SMI事件的指示可以包括第一处理器的标识符。结合任何上面实施例,第一处理器可以包括多个SMI事件源,并且中断处置器可以还包括用以确定第一处理器上的第一SMI事件的源。结合任何上面实施例,中断处置器可以还包括用以确定在控制器中枢上检测到第二SMI事件的逻辑或电路,以用以确定控制器中枢上的第二SMI事件的源的逻辑或电路。结合任何上面实施例,控制器中枢可以包括针对一个或多个SMI事件类型(包括软件SMI事件类型、定时器SMI事件类型或输入/输出SMI事件类型)的每个的相应源。结合任何上面实施例,处理器还可以包括一个或多个SMI事件源,包括核错误逻辑或电路、存储器控制器错误逻辑或电路、互连错误逻辑或电路、非核错误逻辑或电路,或输入/输出错误逻辑或电路。结合任何上面实施例,控制器中枢可以包括用以断言中断信号的仲裁器。结合任何上面实施例,第一处理器和控制器中枢可以驻留在单个集成电路封装中。结合任何上面实施例,第一处理器和控制器中枢可以驻留在单个集成电路管芯上。
本公开的一些实施例包括用于执行指令的一种***。在这些实施例的至少一些中,所述***可以包括:用于在所述处理器上检测第一***管理中断(SMI)事件类型的第一SMI事件的部件;用于将所述第一SMI事件的指示引导到控制器中枢的部件;用于从所述控制器中枢接收中断信号的部件;用于响应于接收到所述中断信号执行中断处置器的部件,包括用于响应于检测到所述第一SMI事件而采取动作的部件,所述动作取决于所述第一SMI事件类型;以及用于在所述控制器中枢上设置指示符以指示所述所述中断处置器已响应于所述中断信号完成它的动作的部件。结合任何上面实施例,所述处理器可以包括用于执行指令的核以及所述设备可以还包括用于将所述中断信号传递到所述核的部件;以及用于在所述中断处置器对所述中断信号作出响应时由所述核暂停执行指令的部件。结合任何上面实施例,所述设备可以还包括:用于在接收到所述中断信号之前在所述处理器上检测与所述第一SMI事件类型不同的第二SMI事件类型的第二SMI事件的部件;以及用于将所述第二SMI事件的指示引导到所述中枢控制器的部件;用于执行所述中断处置器的所述部件可以还包括用于响应于检测到所述第二SMI事件而采取动作的部件,所述动作取决于所述第二SMI事件类型。结合任何上面实施例,用于执行所述所述中断处置器的所述部件可以还包括用于确定所述第一SMI事件类型的部件。结合任何上面实施例,用于执行所述中断处置器的所述部件可以还包括用于确定第二SMI事件是待决的的部件,以及用于响应于所述第二SMI事件而采取动作的部件。结合任何上面实施例,用于执行所述中断处置器的所述部件可以还包括用于确定在是控制器中枢上检测到第二SMI事件的部件,以及用于响应于所述第二SMI事件而采取动作的部件。结合任何上面实施例,所述处理器可以是通信地耦合到所述控制器中枢的多个处理器中的一个,以及所述第一SMI事件的指示可以包括所述处理器的标识符。结合任何上面实施例,所述处理器可以包括多个SMI事件源,并且用于执行所述中断处置器的部件可以还包括用于确定所述处理器上的第一SMI事件的源的部件。结合任何上面实施例,所述控制器中枢可以包括至少一个SMI事件源,并且用于执行所述中断处置器的部件还可以包括用于确定在所述控制器中枢上检测到第二SMI事件的部件,以及用于确定控制器中枢上的第二SMI事件的源的部件。结合任何上面实施例,控制器中枢可以包括针对一个或多个SMI事件类型(包括软件SMI事件类型、定时器SMI事件类型或输入/输出SMI事件类型)的每个的相应源。结合任何上面实施例,处理器可包括一个或多个SMI事件源,包括核错误逻辑或电路、存储器控制器错误逻辑或电路、互连错误逻辑或电路、非核错误逻辑或电路或输入/输出错误逻辑或电路。结合任何上面实施例,处理器可以是通信地耦合到控制器中枢的多个处理器中的第一个,并且用于执行中断处理器的部件可以还包括用于确定在多个处理器中的第二个上检测到第二SMI事件的部件;以及用于确定在第二处理器上的第二SMI事件的源的部件。结合任何上面实施例,用于执行中断处置器的部件可以还包括用于在控制器中枢上设置指示符之前响应于至少一个附加待决的SMI事件而采取相应动作的部件,所述动作取决于附加待决的SMI事件的类型;以及用于在控制器中枢上设置指示符随后从控制器中枢接收第二中断信号的部件。
Claims (34)
1.一种处理器,包括:
核,所述核包括用以执行指令的电路;
电路,所述电路用于:
在所述处理器上检测第一***管理中断SMI事件类型的第一SMI事件;
将所述第一SMI事件的指示引导到在所述处理器外部的仲裁器,其中所述仲裁器是对在所述处理器上始发的SMI事件进行仲裁和串行化的控制器中枢的组件;
从所述仲裁器接收中断信号; 以及
中断处置器,所述中断处置器包括电路以用于:
访问控制器中枢上的状态寄存器以响应于从仲裁器接收到中断信号来确定当前待决的 SMI 事件,在所述状态寄存器中由一个或多个状态位指示所述当前待决的SMI 事件,包括指示是否在所述处理器上检测到 SMI 事件的第一状态位;
基于它们各自的 SMI 事件类型对所述当前待决的SMI 事件采取动作,所述当前待决的SMI 事件包括所述第一SMI 事件;以及
响应于对所述当前待决的SMI 事件采取的动作在所述控制器中枢上设置 SMI结束指示符,所述SMI结束指示符用于指示所述中断处置器是否已响应于从所述仲裁器接收的中断信号而完成其动作。
2.如权利要求1所述的处理器,其中:
所述处理器还包括电路以用于:
将所述中断信号传递到所述核;以及
所述核包括电路以用于:
在所述中断处置器响应于所述中断信号采取动作时暂停执行指令。
3.如权利要求1所述的处理器,其中:
所述处理器还包括电路以用于:
在所述处理器上并在接收到所述中断信号之前,检测与所述第一SMI事件类型不同的第二SMI事件类型的第二SMI事件;以及
将所述第二SMI事件的指示引导到所述仲裁器;
所述中断处置器还包括电路以用于:
响应于接收到所述中断信号,基于所述第二SMI 事件类型对所述第二SMI 事件采取动作。
4.如权利要求1所述的处理器,其中:
所述中断处置器还包括电路以用于:
确定所述第一SMI事件类型。
5.如权利要求1所述的处理器,其中:
所述中断处置器还包括电路以用于:
确定第二SMI事件是待决的;以及
对所述第二SMI事件采取动作。
6.如权利要求1所述的处理器,其中:
所述仲裁器在所述处理器上和在所述控制器中枢上始发的SMI事件之间进行仲裁;以及
所述中断处置器还包括电路以用于:
确定在所述控制器中枢上检测到第二SMI事件;以及
对所述第二SMI事件采取动作。
7.如权利要求1所述的处理器,其中:
所述处理器和所述控制器中枢驻留在单个集成电路封装中。
8.如权利要求1所述的处理器,其中:
所述处理器包括多个SMI事件源;以及
所述中断处置器还包括电路以用于:
确定在所述处理器上的所述第一SMI事件的SMI事件源。
9.一种用于由仲裁器串行化***管理中断SMI事件的方法,在处理器中,包括:
在所述处理器上检测第一***管理中断SMI事件类型的第一SMI事件;
将所述第一SMI事件的指示引导到在所述处理器外部的控制器中枢,其中所述控制器中枢对在所述处理器上始发的SMI事件进行仲裁和串行化;
从所述控制器中枢接收中断信号;
执行中断处置器,包括:
访问控制器中枢上的状态寄存器以响应于从仲裁器接收到中断信号来确定当前待决的 SMI 事件,在所述状态寄存器中由一个或多个状态位指示所述当前待决的SMI 事件,包括指示是否在所述处理器上检测到 SMI 事件的第一状态位;
基于它们各自的 SMI 事件类型对所述当前待决的SMI 事件采取动作,所述当前待决的SMI 事件包括所述第一SMI 事件;以及
在所述控制器中枢上设置指示符以指示所述中断处置器已响应于所述中断信号完成它的动作。
10.如权利要求9所述的方法,其中:
所述处理器包括用于执行指令的核;以及
所述方法还包括:
将所述中断信号传递到所述核;以及
在所述中断处置器响应于所述中断信号采取动作时,由所述核暂停执行指令。
11.如权利要求9所述的方法,其中:
所述方法还包括:
在接收到所述中断信号之前在所述处理器上检测与所述第一SMI事件类型不同的第二SMI事件类型的第二SMI事件;以及
将所述第二SMI事件的指示引导到所述控制器中枢;
执行所述中断处置器还包括:
响应于接收到所述中断信号,基于所述第二SMI 事件类型对所述第二SMI 事件采取动作。
12.如权利要求9所述的方法,其中:
执行所述中断处置器还包括:
确定所述第一SMI事件类型。
13.如权利要求9所述的方法,其中:
执行所述中断处置器还包括:
确定第二SMI事件是待决的;以及
对所述第二SMI事件采取动作。
14.如权利要求9所述的方法,其中:
所述控制器中枢在所述处理器上和在所述控制器中枢上始发的SMI事件之间进行仲裁;以及
执行所述中断处置器还包括:
确定在所述控制器中枢上检测到第二SMI事件;以及
对所述第二SMI事件采取动作。
15.如权利要求9所述的方法,其中:
所述处理器是通信地耦合到所述控制器中枢的多个处理器中的一个;以及
所述第一SMI事件的所述指示包括所述处理器的标识符。
16.如权利要求9所述的方法,其中:
所述处理器包括多个SMI事件源;以及
执行所述中断处置器还包括:
确定在所述处理器上的所述第一SMI事件的SMI事件源。
17.一种用于由仲裁器串行化***管理中断SMI事件的***,包括:
第一处理器;
控制器中枢,包括:
仲裁器,用于对在所述处理器上始发的SMI事件进行仲裁和串行化;
一个或多个状态位,其值指示是否已针对所述第一处理器上的 SMI事件源检测到 SMI事件;以及
SMI 结束指示符,其值指示所述第一处理器的中断处置器是否已响应于由所述控制器中枢发布的中断而完成动作;以及
其中所述第一处理器包括:
核,所述核包括用以执行指令的电路;
电路,所述电路用于:
从所述第一处理器上的第一***管理中断SMI事件源检测第一SMI事件;
将所述第一SMI事件的指示引导到所述控制器中枢;以及
从所述控制器中枢的所述仲裁器接收中断信号;以及
中断处置器,所述中断处置器包括电路以用于:
访问控制器中枢上的SMI状态位以响应于从仲裁器接收到中断信号来确定当前待决的SMI 事件;
基于它们各自的 SMI 事件类型对所述当前待决的SMI 事件采取动作,所述当前待决的SMI 事件包括所述第一SMI 事件;以及
在所述控制器中枢上设置SMI结束指示符以指示所述中断处置器已响应于所述中断信号完成它的动作。
18.如权利要求17所述的***,其中:
所述第一处理器还包括电路以用于:
将所述中断信号传递到所述核;
所述核包括电路以用于:
在所述中断处置器响应于所述中断信号采取动作时暂停执行指令。
19.如权利要求17所述的***,其中:
所述第一处理器还包括电路以用于:
在接收到所述中断信号之前,检测来自与所述第一SMI事件源不同的所述第一处理器上的第二SMI事件源的第二SMI事件;以及
将所述第二SMI事件的指示引导到所述控制器中枢;
所述中断处置器还包括电路以用于:
响应于接收到所述中断信号,基于所述第二SMI事件的SMI事件源对所述第二SMI 事件采取动作。
20.如权利要求17所述的***,其中:
所述中断处置器还包括电路以用于:
确定第二SMI事件是待决的;以及
对所述第二SMI事件采取动作。
21.如权利要求17所述的***,其中:
所述控制器中枢包括:
第一SMI状态位,所述第一SMI状态位的值指示是否已针对所述第一处理器上的SMI事件源检测到SMI事件;
第二SMI状态位,所述第二SMI状态位的值指示是否已针对所述控制器中枢上的SMI事件源检测到SMI事件;
所述中断处置器还包括电路以用于:
取决于所述第二SMI状态位确定在所述控制器中枢上检测到第二SMI事件;以及
对所述第二SMI事件采取动作。
22.如权利要求17所述的***,其中:
所述控制器中枢包括电路,用于:
在所述SMI结束指示符为假时,防止所述控制器中枢向所述第一处理器发布中断;
确定至少一个SMI事件是待决的;以及
响应于确定至少一个SMI事件是待决的以及所述SMI结束指示符为真,向所述第一处理器发布中断,包括电路以用于:
清除所述SMI结束指示符;以及
断言所述中断信号。
23.如权利要求17所述的***,其中:
所述***还包括第二处理器;
所述第一SMI事件的所述指示包括所述第一处理器的标识符;
所述控制器中枢包括:
第一SMI状态位,所述第一SMI状态位的值指示是否已针对所述第一处理器上的SMI事件源检测到SMI事件;以及
电路,所述电路用以取决于接收到所述第一SMI事件的所述指示和所述第一处理器的所述标识符,确定要设置所述第一SMI状态位。
24.如权利要求17所述的***,其中:
所述控制器中枢包括:
第一SMI状态位,所述第一SMI状态位的值指示是否已针对所述第一处理器上的SMI事件源检测到SMI事件;
所述中断处置器还包括电路以用于:
确定所述第一处理器上的所述第一SMI事件的SMI事件源。
25.一种用于由仲裁器串行化***管理中断SMI事件的设备,包括用于执行权利要求9-16中所述的方法中的任何方法的部件。
26.一种用于由仲裁器串行化***管理中断SMI事件的设备,包括:
用于在处理器上检测第一***管理中断SMI事件类型的第一SMI事件的部件;
用于将所述第一SMI事件的指示引导到在所述处理器外部的控制器中枢的部件,其中所述控制器中枢对在所述处理器上始发的SMI事件进行仲裁和串行化;
用于从所述控制器中枢接收中断信号的部件;
用于执行中断处置器的部件,所述部件包括:
用于访问控制器中枢上的状态寄存器以响应于从仲裁器接收到中断信号来确定当前待决的 SMI 事件的部件,在所述状态寄存器中由一个或多个状态位指示所述当前待决的SMI 事件,包括指示是否在所述处理器上检测到 SMI 事件的第一状态位;
用于基于它们各自的 SMI 事件类型对所述当前待决的SMI 事件采取动作的部件,所述当前待决的SMI 事件包括所述第一SMI 事件;以及
用于在所述控制器中枢上设置指示符以指示所述中断处置器已响应于所述中断信号完成它的动作的部件。
27.如权利要求26所述的设备,其中:
所述处理器包括用于执行指令的核;以及
所述设备还包括:
用于将所述中断信号传递到所述核的部件;以及
用于在所述中断处置器响应于所述中断信号采取动作时,由所述核暂停执行指令的部件。
28.如权利要求26所述的设备,其中:
所述设备还包括:
用于在接收到所述中断信号之前在所述处理器上检测与所述第一SMI事件类型不同的第二SMI事件类型的第二SMI事件的部件;以及
用于将所述第二SMI事件的指示引导到所述控制器中枢的部件;
用于执行所述中断处置器的部件还包括:
用于响应于接收到所述中断信号,基于所述第二SMI 事件类型对所述第二SMI 事件采取动作的部件。
29.如权利要求26所述的设备,其中:
用于执行所述中断处置器的部件还包括:
用于确定所述第一SMI事件类型的部件。
30.如权利要求26所述的设备,其中:
用于执行所述中断处置器的部件还包括:
用于确定第二SMI事件是待决的部件;以及
用于对所述第二SMI事件采取动作的部件。
31.如权利要求26所述的设备,其中:
所述控制器中枢在所述处理器上和在所述控制器中枢上始发的SMI事件之间进行仲裁;以及
用于执行所述中断处置器的部件还包括:
用于确定在所述控制器中枢上检测到第二SMI事件的部件;以及
用于对所述第二SMI事件采取动作的部件。
32.如权利要求26所述的设备,其中:
所述处理器是通信地耦合到所述控制器中枢的多个处理器中的一个;以及
所述第一SMI事件的所述指示包括所述处理器的标识符。
33.如权利要求26所述的设备,其中:
所述处理器包括多个SMI事件源;以及
用于执行所述中断处置器的部件还包括:
用于确定在所述处理器上的所述第一SMI事件的SMI事件源的部件。
34.一种在其上存储有指令的计算机可读介质,所述指令当被执行时促使计算装置执行根据权利要求9-16所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/085,734 US20170286333A1 (en) | 2016-03-30 | 2016-03-30 | Arbiter Based Serialization of Processor System Management Interrupt Events |
US15/085734 | 2016-03-30 | ||
PCT/US2017/018939 WO2017172124A1 (en) | 2016-03-30 | 2017-02-22 | Arbiter based serialization of processor system management interrupt events |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108701101A CN108701101A (zh) | 2018-10-23 |
CN108701101B true CN108701101B (zh) | 2022-08-26 |
Family
ID=59961651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780014456.5A Active CN108701101B (zh) | 2016-03-30 | 2017-02-22 | 处理器***管理中断事件的基于仲裁器的串行化 |
Country Status (4)
Country | Link |
---|---|
US (2) | US20170286333A1 (zh) |
CN (1) | CN108701101B (zh) |
DE (1) | DE112017001704T5 (zh) |
WO (1) | WO2017172124A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10846219B2 (en) * | 2015-07-31 | 2020-11-24 | Hewlett Packard Enterprise Development Lp | Data copy to non-volatile memory |
US20170286333A1 (en) | 2016-03-30 | 2017-10-05 | Intel Corporation | Arbiter Based Serialization of Processor System Management Interrupt Events |
US10416897B2 (en) * | 2017-03-27 | 2019-09-17 | SK Hynix Inc. | Memory system with latency distribution optimization and an operating method thereof |
GB201801572D0 (en) * | 2018-01-31 | 2018-03-14 | Nordic Semiconductor Asa | Inter-processor communication |
CN110737616B (zh) * | 2018-07-20 | 2021-03-16 | 瑞昱半导体股份有限公司 | 处理中断优先级的电路*** |
CN117170745B (zh) * | 2023-11-03 | 2024-01-12 | 睿思芯科(深圳)技术有限公司 | Risc-v外部中断的处理方法、***及相关设备 |
CN118193431A (zh) * | 2024-05-20 | 2024-06-14 | 芯弦半导体(苏州)有限公司 | 信号转换装置及信号通道仲裁方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5475854A (en) * | 1994-01-28 | 1995-12-12 | Vlsi Technology, Inc. | Serial bus I/O system and method for serializing interrupt requests and DMA requests in a computer system |
CN1434943A (zh) * | 1999-12-16 | 2003-08-06 | 英特尔公司 | 基于专用时隙分配的存储器资源仲裁装置 |
US7398343B1 (en) * | 2006-01-03 | 2008-07-08 | Emc Corporation | Interrupt processing system |
CN103019835A (zh) * | 2011-09-26 | 2013-04-03 | 同方股份有限公司 | 一种多核处理器中断资源优化处理***和方法 |
CN105359101A (zh) * | 2013-03-13 | 2016-02-24 | 英特尔公司 | 用于多核处理器的***管理中断处理 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5551044A (en) * | 1994-12-01 | 1996-08-27 | Intel Corporation | Method and apparatus for interrupt/SMI# ordering |
US5560018A (en) * | 1994-12-16 | 1996-09-24 | International Business Machines Corporation | Providing external interrupt serialization compatibility in a multiprocessing environment for software written to run in a uniprocessor environment |
US6219741B1 (en) * | 1997-12-10 | 2001-04-17 | Intel Corporation | Transactions supporting interrupt destination redirection and level triggered interrupt semantics |
US6065088A (en) * | 1998-08-31 | 2000-05-16 | International Business Machines Corporation | System and method for interrupt command queuing and ordering |
US7234017B2 (en) * | 2005-02-24 | 2007-06-19 | International Business Machines Corporation | Computer system architecture for a processor connected to a high speed bus transceiver |
US7805556B2 (en) * | 2007-05-01 | 2010-09-28 | Ricoh Company, Ltd. | Interrupt control apparatus, bus bridge, bus switch, image processing apparatus, and interrupt control method |
US20170286333A1 (en) | 2016-03-30 | 2017-10-05 | Intel Corporation | Arbiter Based Serialization of Processor System Management Interrupt Events |
-
2016
- 2016-03-30 US US15/085,734 patent/US20170286333A1/en not_active Abandoned
-
2017
- 2017-02-22 WO PCT/US2017/018939 patent/WO2017172124A1/en active Application Filing
- 2017-02-22 DE DE112017001704.1T patent/DE112017001704T5/de active Pending
- 2017-02-22 CN CN201780014456.5A patent/CN108701101B/zh active Active
-
2019
- 2019-03-29 US US16/369,277 patent/US11074204B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5475854A (en) * | 1994-01-28 | 1995-12-12 | Vlsi Technology, Inc. | Serial bus I/O system and method for serializing interrupt requests and DMA requests in a computer system |
CN1434943A (zh) * | 1999-12-16 | 2003-08-06 | 英特尔公司 | 基于专用时隙分配的存储器资源仲裁装置 |
US7398343B1 (en) * | 2006-01-03 | 2008-07-08 | Emc Corporation | Interrupt processing system |
CN103019835A (zh) * | 2011-09-26 | 2013-04-03 | 同方股份有限公司 | 一种多核处理器中断资源优化处理***和方法 |
CN105359101A (zh) * | 2013-03-13 | 2016-02-24 | 英特尔公司 | 用于多核处理器的***管理中断处理 |
Also Published As
Publication number | Publication date |
---|---|
US11074204B2 (en) | 2021-07-27 |
WO2017172124A1 (en) | 2017-10-05 |
CN108701101A (zh) | 2018-10-23 |
US20190227965A1 (en) | 2019-07-25 |
DE112017001704T5 (de) | 2019-01-03 |
US20170286333A1 (en) | 2017-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10656697B2 (en) | Processor core power event tracing | |
CN108701101B (zh) | 处理器***管理中断事件的基于仲裁器的串行化 | |
US9569212B2 (en) | Instruction and logic for a memory ordering buffer | |
JP6351722B2 (ja) | クラスタ化されたワイド実行機械におけるメモリアクセス用の命令およびロジック | |
US10761938B2 (en) | System and method for granular reset management without reboot | |
US11256506B2 (en) | Instruction and logic for tracking fetch performance bottlenecks | |
US10175986B2 (en) | Stateless capture of data linear addresses during precise event based sampling | |
US9626274B2 (en) | Instruction and logic for tracking access to monitored regions | |
US20170168819A1 (en) | Instruction and logic for partial reduction operations | |
US9851976B2 (en) | Instruction and logic for a matrix scheduler | |
US20160364237A1 (en) | Processor logic and method for dispatching instructions from multiple strands | |
US20170177342A1 (en) | Instructions and Logic for Vector Bit Field Compression and Expansion | |
US20210096866A1 (en) | Instruction length decoding | |
US10133582B2 (en) | Instruction and logic for identifying instructions for retirement in a multi-strand out-of-order processor | |
US10268255B2 (en) | Management of system current constraints with current limits for individual engines | |
WO2018005718A1 (en) | System and method for out-of-order clustered decoding | |
US10795684B2 (en) | Method and logic for maintaining performance counters with dynamic frequencies | |
US20160378698A1 (en) | Instruction and logic for real-time behavior of interrupts | |
US10990395B2 (en) | System and method for communication using a register management array circuit | |
WO2017168197A1 (en) | Apparatus and method for improving performance of inter-strand communications |
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 |