CN102609311B - 用于选择接收中断的处理器的装置、方法和系统 - Google Patents
用于选择接收中断的处理器的装置、方法和系统 Download PDFInfo
- Publication number
- CN102609311B CN102609311B CN201110439938.XA CN201110439938A CN102609311B CN 102609311 B CN102609311 B CN 102609311B CN 201110439938 A CN201110439938 A CN 201110439938A CN 102609311 B CN102609311 B CN 102609311B
- Authority
- CN
- China
- Prior art keywords
- processor
- apic
- cluster
- interruption
- logic
- 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
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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
-
- 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
- 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
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
-
- 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
在一些实施例中,一种装置包括处理器选择逻辑,用于接收与中断相关联的逻辑目的地标识号码,所述中断每个都具有处理器集群标识号码,用于识别所述中断所引导至的处理器集群。所述逻辑目的地标识号码每个都用于识别在所识别的处理器集群中哪些处理器可用来接收中断中相对应的一个。所述处理器选择逻辑用于选择所述可用的处理器的一个来接收所述中断,以及所述可用的处理器中所选择的一个通过所述逻辑目的地标识号码中相应位的相对位置来被识别。还描述了其它实施例。
Description
本申请是2008年9月4日提交的同名专利申请(申请号为200810212765.6)的分案申请。
技术领域
本发明的实施例一般涉及多个处理器中断。
背景技术
高级可编程中断控制器(APIC)是一种根据可编程的过程或优先级来接收中断请求并提供中断输出的可编程中断控制器(PIC)。本地APIC在处理器(比如微处理器)中使用。I/O APIC在芯片组设备(比如输入/输出(I/O)控制中心(ICH))和外围设备上使用。外围设备的实例包括耦合到ICH的、与外围组件互连(PCI)标准之一或PCI Express(PCIe)标准(比如2006年12月20日提供的PCI基本规范2.0版)之一兼容的设备。xAPIC是扩展的APIC,其类似于早期的APIC但是具有一些另外的特性,并且在xAPIC体系结构中,本地和I/O APIC通过系统总线而并非通过APIC总线来通信。进一步扩展的xAPIC包括另外的扩展和特性。
处理器封装可以包括多于一个的内核,每个处理器封装可以包括多于一个的处理器。物理模式中断是发出中断的设备通过物理标识号码为其指定处理器的中断,或者是向所有处理器广播的中断。逻辑模式中断是发出中断的设备通过一个或多个逻辑标识号码为其指定一个或多个处理器的中断。APIC中断传送包括被引导中断(单个处理器目标)、多播(多个处理器目标)以及广播(所有处理器)。在最低优先级中断中,使用一过程来选择处于最低处理器优先级中的处理器来响应该中断。最低优先级可以在芯片组决定——通常以特别的方式或以处理器优先级的过期数据进行。因为优先级信息常常是不可靠的,一些芯片仅选择特定的处理器(比如通过轮询技术)并以广播方式向该处理器提供中断,这种方式中其他的处理器也接收到中断但不对它们作响应。
逻辑模式在被引导中断方面提供显著地更重大的灵活性,并且是微软视窗和一些Linux收缩包装的操作系统使用的模式。xAPIC体系结构的逻辑模式向操作系统软件提供在初始化逻辑APIC标识号码(ID)过程中的灵活性,该逻辑APIC标识号码是系统中每个处理器的唯一标识符。(处理器还具有物理APIC ID)。其他的处理器以及设备或IOxAPIC使用该ID向该处理器发送中断。尽管在逻辑xAPIC ID初始化过程中具有灵活性,平台的实际物理拓扑与如何分配ID之间并没有联系。尽管操作系统初始化提供了操作系统在对处理器进行分组中的更多的灵活性,在平台层,这使被引导的逻辑模式中断的路由过程变得复杂。通过广播该中断,以及假如该中断匹配处理器的本地APIC ID则使该本地处理器逻辑接收该中断,逻辑模式中断的路由过程得以完成。
由每个处理器检查每个中断导致性能和功耗的低效。例如,在广播方法下,即使处理器处于低功耗状态,每个处理器都要检查来了解中断是否被引导至该处理器。由于中断出现相当频繁,这使得处理器难以持续处于深度低功耗状态。此外,由于将中断发送至该中断未被引导至的封装的过程中在互连结构上具有的流量,性能被降低。在一种方法下,通过以处理器启动的顺序分配逻辑ID,操作系统试图让同一封装中的各个处理器构成一处理器的逻辑集群。如果依靠这种方法,它仅提供部分解决方案并且仍然使用广播。因此,依然存在创造能以有效的方式被路由至处理器的逻辑APIC的需求。
附图说明
本发明将通过以下给出的详细说明和通过本发明实施例的附图得到更为充分的理解,然而,这些附图不应被用来将本发明限制于所述的特定的实施例,而仅是出于说明和理解的目的。
图1是根据本发明的一些实施例,表示包括多内核处理器封装、输入/输出中心以及设备的系统的框图。
图2是根据本发明的一些实施例,表示包括多内核处理器封装、输入/输出中心以及设备的系统的框图。
图3是表示在本发明的一些实施例中使用的电路板上的插槽的框图。
图4是表示在本发明的一些实施例中使用的物理APIC ID寄存器的框图。
图5是表示在本发明的一些实施例中使用的逻辑APIC ID寄存器的框图。
图6是表示逻辑APIC ID创建逻辑的框图。
图7说明在本发明的一些实施例中使用的从物理APIC ID生成逻辑APIC ID的过程。
图8根据本发明的一些实施例,说明具有每个封装四个内核和每个内核两个逻辑处理器的两插槽系统的物理和逻辑APIC ID。
图9是表示在本发明的一些实施例中使用的具有多个表项的APIC重定向表格的框图。
图10是表示在本发明的一些实施例中使用的APIC重定向表格的表项的框图。
具体实施方式
在一些实施例中,系统为每个处理器从处理器的物理ID创建逻辑APICID。逻辑APIC ID包括处理器集群ID和该集群内的处理器号码(集群内ID)。逻辑APIC ID的创建使得集群内的所有处理器被包含在同一处理器封装内。这有助于减少互连结构上的流量,因为中断可以只被引导至一个处理器封装,而不是被广播至所有的处理器封装。此外,这减少了功耗,因为其他处理器封装中的处理器(或在一些情形下,同一处理器封装内的其他集群)并不接收中断,以及因此而不必去确定该中断是否被引导至它们。在一些情形下,这防止处理器不得不退出睡眠状态。
在一些实施例中,逻辑目的地标识号码可以包括可用于响应中断的处理器。处理器选择逻辑选择可用的处理器中的一个来接收中断。
在下列叙述中,物理APIC ID是物理处理器标识号码的实例,以及逻辑APIC ID是逻辑处理器标识号码的实例。逻辑APIC ID创建逻辑是逻辑标识号码创建逻辑的实例。
1.系统概述
图1说明了可以在本发明的一些实施例中使用的系统,但是其他的实施例可以包括包含不同细节的系统。参照图1,系统包括多个处理器封装,所述多个处理器封装至少包括耦合至输入/输出中心(IOH)12的处理器封装0和处理器封装1。IOH 12包括IOH I/O APIC 14、重定向逻辑18以及处理器选择逻辑20。PCIe设备26包括通过中断接口电路30耦合至IOH 12的PCIe I/O APIC 28。设备36(比如键盘和鼠标)通过IOH I/O APIC 14提供中断。IOH I/O APIC 14、I/O PCIe APIC 28以及本地APIC 72-1...72-4和78-1...78-4可以是各种类型的APIC,例如xAPIC或扩展的xAPIC。可替换地,可以使用中断控制器而非APIC。
封装0包括内核0和1以及本文所称非内核42的另外的电路。内核0包括处理器70-1和70-2,其分别包括本地APIC 72-1和72-2,以及内核1包括处理器70-3和70-4,其分别包括本地APIC 72-3和72-4。封装1包括内核2和3以及本文所称非内核52的另外的电路。内核2包括处理器76-1和76-2,其分别包括本地APIC 78-1和78-2,以及内核3包括处理器76-3和76-4,其分别包括本地APIC 78-3和78-4。封装0和1还将包括各种未明确说明的组件。存储器64(比如主存储器DRAM)耦合至非内核42,以及存储器66耦合至非内核52。存储器60(包括保存操作系统的硬盘)耦合至IOH 12。存储器60和IOH 12之间可以存在中间组件。BIOS存储器62耦合至IOH 12。
处理器70-1、70-2、70-3以及70-4分别具有物理APIC ID P0、P1、P2以及P3。处理器70-1、70-2、70-3以及70-4分别具有物理APIC ID P0、P1、P2以及P3。逻辑APIC ID创建逻辑(在图6中)基于物理ID P0、P1、P2和P3以及P16、P17、P18和P19分别提供逻辑APIC ID L0、L1、L2和L3以及L16、L17、L18和L19。(当然,P0...P4和P16...P19以及L0...L3和L16...L19表示ID位,而不是字母“P”或“L”和号码。)在一些实施例中,封装0和1包括多于两个的内核(例如参加图8),并且内核可以包括多于两个的处理器。在所说明的实施例中,在物理ID P3和P16之间以及相应的逻辑ID L3和L16之间存在间隙。对此的理由是在这些实施例中,集群包括16个处理器的ID,无论是否存在16个实际处理器。处理器封装可以包括一个芯片(管芯)或多于一个芯片。处理器封装可以包括零个、一个或多于一个的存储器芯片。
重定向逻辑18从设备26接收一个值(例如,16位的值)并且向封装0或封装1提供中断。使用哪个处理器来响应中断的决定可以在各种位置中作出。例如,取决于实施例,该决定可以在IOH 12中的处理器选择逻辑20中和/或在非内核中的处理器选择子逻辑中作出(比如非内核42中的处理器选择子逻辑46或非内核52中的处理器选择子逻辑56)。子逻辑46中的过滤器48和子逻辑56中的过滤器58可以被用来基于例如电源状态(c-状态)和/或处理器优先级将处理器过滤出来而不予考虑。类似的过滤器可以在处理器选择逻辑20中使用。在一些实施例中,不存在处理器选择逻辑20,而仅存在处理器选择子逻辑。
图2类似于图1,并说明IOH 112,其具有可能与图1中的IOH APIC 14、重定向逻辑18、处理器选择逻辑20以及中断接口电路130类似或相同的IOH APIC 114、重定向逻辑118、处理器选择逻辑120以及中断接口电路130。图2还说明包括处理器集群0和处理器集群1的处理器封装0,包括处理器集群2和处理器集群3的处理器封装1,包括处理器集群2(N-1)和处理器集群2(N-1)+1的处理器封装N-1。处理器封装0、1...N-1通过互连结构142-0、142-1...142-N-1耦合到IOH 112。在一些实施例中,存在单独的将处理器分开的互连结构,而在其他的实施例中为每个处理器封装使用一组互连结构,或为每个集群使用一组中断。中断的集群ID表示集群中的哪个将要接收该中断。
例如,假设集群ID是0000000000000010b(此处b表示二进制)。那将表示集群2将要接收中断。与将中断广播给所有的处理器的方法相比较,这占用较少的功率且占用较少的互连结构上的流量。中断不在互连结构142-0和142-N-1上被发送,所以在这些互连结构上存在较少的流量,其有助于带宽和降低功率。同样,在集群0、1、3、2(N-1)和2(N-1)+1中的处理器不需要检查中断是否被引导至它们,其降低了功率(特别地,当处理器必须退出深度低功耗状态来确定中断是否被引导至它时)。由于局部性,在不同集群中的处理器之间也可能存在较少的高速缓存行的流量。其他的实施例可以在处理器封装中包括甚至更多的处理器集群。其他的组件(比如非内核,如果包括的话)未在图2中示出。可能存在另外的组件,比如IOH和处理器封装之间的桥接器。此外,在系统中也可能存在一个以上IOH。
图3说明,电路板190(比如印刷电路板)包括多个插槽,所述多个插槽包括用于接收处理器封装0的插槽0、用于接收处理器封装N-1的插槽N-1以及用于接收IOH芯片的插槽194。在一些实施例中,电路板190包括用于处理器封装和各种其他的芯片的另外的插槽,但是在其他的实施例中,电路板190仅包括两个插槽。如本文所使用,术语“插槽”涵盖各种用于将一个芯片或多个芯片耦合至电路板的技术。
2.APIC ID初始化
在一些实施例中,物理APIC ID在例如重置后过程中被硬件和/或微代码静态地初始化/锁存,并一直保持到下一个电源周期为止。图4说明保存32位物理APIC ID的寄存器110,其在一些实施例中被包括在相应的本地APIC内。
使用在逻辑模式中的逻辑APIC ID被划分成两个域——在处理器集群内的16位宽集群ID和16位宽逻辑ID。逻辑ID的16个最高位包含目的地集群的地址或标识号码,而较低的16位识别集群内的单独的本地APIC单元。逻辑ID部分可以是集群中每处理器具有1位的位掩码——例如,在处理器集群中位0将为处理器0设置,位1为处理器1设置等等。图5说明保存32位逻辑APIC ID的寄存器112,其采用位16至31保存集群ID以及位0至15保存集群内逻辑ID。实际看来,许多系统将具有少量的处理器集群,使得,例如只需要一位或两位来识别集群ID。在不同的实施例中,剩余的位可以作不同处理。例如,在一些系统中一些位被忽视而在其他的系统中被使用。
通过初始化算法,基于平台拓扑可以在逻辑APIC ID和物理APIC ID之间存在已建立的持久的联系。这为路由结构提供了所要将中断路由到(而不是进行广播)的特定处理器封装(插槽)的情况。
在处理器集群可以容纳限度为16个处理器的的情形下,如果在处理器封装中有多于16个处理器,那么每个封装将具有多个集群。如果在集群中的处理器少于16个,那么可以对APIC ID进行填充。
逻辑APIC ID创建逻辑216从物理APIC ID创建逻辑APIC ID。逻辑APIC ID创建逻辑216可以在硬件、软件或微代码或者它们的组合中实现。硬件可以存在于非内核或本地APIC或别处。在一些实施例中,逻辑APIC ID的得出,使得物理APIC ID的较低的4位被“解码”(即1<<物理APIC ID[3:0])来在集群内部提供16位逻辑ID。物理APIC ID的剩余16位然后组成逻辑xAPIC ID的集群ID部分。因此使用下列公式从本地xAPIC ID得出逻辑xAPIC ID:
逻辑APIC ID=[(物理APIC ID[19:4]<<16)||(1<<物理APIC ID[3:0])]在这个公式中,符号||表示“或”,但可以用加号来代替并且将得到相同的结果。
这个公式可以以类似的方式重述如下:
逻辑ID=(1<<本地xAPIC ID[3:0]) //集群内逻辑ID
||(本地xAPIC ID[19:4]<<16) //集群ID
图7说明通过将寄存器210中的物理APIC ID转换成寄存器212中的逻辑APIC ID来得出逻辑APIC的过程的实例。位20-31可以被忽略,或被用于各种目的。
图8示出通过处理器封装0和1中的物理APIC ID获取逻辑APIC ID的实例,其中处理器封装0和1每个包括四个内核,而每个内核具有两个处理器。由于每个封装的处理器少于16个,每个封装只有一个集群。参见封装0,处理器P0的物理APIC ID被示为00000b。“b”表示二进制。第一个0来自集群ID,表示该集群是封装0中的集群。为了在图中节约空间,图8中未说明来自集群ID的其他位。四个下划线的0位于集群内ID中,表示物理APIC ID是0(未列出所有的零)。遵循上述过程,通过从原本包含多个零的集群内逻辑ID中的最低位(LSB)中以一个“1”开始,然后将该“1”按物理ID的前四位中给出的量进行移位,来创建逻辑APIC ID。由于,处理器P0的物理ID的前四位是0000,“1”未被移位,因此逻辑ID是0001h(此处“h”表示十六进制)。使用十六进制以允许在图8中说明大的数。集群ID(0)保持物理ID的位4-19中的不变。在处理器P1的情形下,物理ID的四个LSB是0001,所以“1”被移位一位,使得集群0的集群ID是0,逻辑ID是0002h,其由于1被移位一位而引起。例如,在P5的情形下,“1”被向左移位5位,即变成十进制的32或十六进制的20。对于封装1也进行相同的操作,除了在物理和逻辑APIC ID中的集群ID都是1。
初始化可以在时间的多个点上发生,例如,取决于实现的容易性。初始化可以何时发生的实例,包括在重置后过程中当物理APIC ID被初始化时,或者在操作系统首次读取逻辑APIC ID时。上述需要时对APIC ID进行填充的算法可以确保每个APIC集群被限于单一的处理器封装。
3.处理器选择逻辑和重定向
处理器选择逻辑从可用的选项中选择处理器来接收中断。由本地APIC接收中断是处理器接收中断的一个实例。在现有技术中,通过最低优先级方案来为中断选择处理器。但是,如下面所说明的,在决定由哪个处理器来接收中断时可以考虑处理器优先级之外的其他因素或者将其他因素加上处理器优先级一起来考虑。
操作系统可以选择集群以及集群内的至少一个处理器来作为中断可用的。该信息可以被直接或间接地包括在设备(比如图1中的设备26)所提供的中断中。例如,在直接的实现中,中断可以包括一16位域,以位映射的方式为集群中每个处理器分配一位(尽管可能存在少于16个处理器,在此情形下一些位可不被使用)。当“1”处在与一处理器相关联的位置中时,该处理器是可用的,在以上所讨论的公式和图8中,这种位置用于从物理APIC ID提供逻辑APIC ID。这可以称作逻辑目的地ID。作为实例,逻辑目的地ID位掩码可以是00101101,其表示处理器P0、P2、P3和P5对中断是可用的。这假定了在集群中有8个处理器,因而未示出最左边的8位。当然,“0”和“1”的作用可以颠倒,从而0代表可用的处理器,以及1代表不可用的处理器。以上所讨论的处理器选择逻辑可以选择可用的处理器中的哪一个来接收中断。注意,虽然通常只有一个处理器接收中断,在一些情形下,中断可能被指引至多于一个的处理器。
作为替代的,来自设备36的中断可以包括索引(比如16-位的索引),其提供重定向表格的索引,该重定向表格可以被包括在图1中的重定向逻辑19中。参照图9,重定向表格230包括,例如不同的索引值的64位表项。表项234是个实例。图10示出根据一些实施例的示例性表项234的细节,但是在其他的实施例中它可能是不同的。参照图10,位48-63表示集群ID,其在图10的实例中表示集群2将接收中断。见与图2有关的实例。还参照图10,逻辑目的地ID为处理器选择逻辑(或子逻辑)列出可用的处理器来考虑。目的地ID位掩码011b表示处理器P0和P1是可用的,而其他的处理器是不可用的。处于说明的便利,16个位中只有三个在图10中示出。作为另一个实例,目的地位掩码可以是00101101b,其表示处理器P0、P2、P3和P5是可用的,而处理器P1、P4、P6和P7是不可用的。在这个实例中没有处理器P8-P15。可能只有一个处理器是可用的。位0到31可以给出各种类型的路由信息,比如是否涉及直接的中断。“最低优先级”在图10中示出,但如前所述,可以考虑其他因素比如电源状态,从而严格来说最低优先级选择可能不被考虑。
可能存在数个实现,其可以用于基于处理器电源状态的情况和优先级,在集群内部对中断进行路由。一个可能的在“非内核”中的实现将使用处理器功耗状态消息和优先级来提供对中断进行路由,来使二者都进行能察觉功耗的中断路由,其将性能问题考虑在内。非内核将了解处理器的C-状态(功耗节省状态)——这些被称为,例如,C0、C1、C2...C6——其中C0是处理器正在运行代码的状态,而C1、...C6是空闲状态,其中处理器是停止的:C1是最低的功耗节约状态并且C6是较高的功耗节约状态。同样,进入C1的延迟(以及微体系结构的副作用)可能是最低的,而对C6来说是最高的。为了从较深的C-状态(比如C6)提供最高的值,可能希望允许已经进入C6状态的处理器保持驻留在那个状态中最长可能的间隔。在这个可能的实现中,非内核识别目标将通过下述步骤来进行:(1)识别处在最低标号的C-状态中的处理器,以及(2)在这些处理器中找出具有最低优先级的处理器作为中断的目标。有几种方式来在其中实现这些方法。一种实现可以保留封装内的处理器的各种C-状态的位图,将这些与进入的目标位图进行与运算,并挑选该位图中最高或最低的APIC ID作为目标。其他的实现细节可以被使用。
附加的信息和实施例
本文所称的“逻辑”可以在电路、软件、微代码或它们的组合中实现。
实施例是本发明的一种实现或实例。在本说明中提及的“某实施例”、“一个实施例”、“一些实施例”或“其他实施例”表示与实施例相联系来描述的特定的特性、结构或特征被包括在至少一些实施例中,但不一定是在所有实施例中。“某实施例”、“一个实施例”或“一些实施例”的各次出现并不一定都指的是同一个实施例。
当叙述元素“A”耦合到元素“B”时,其表示元素A可以直接耦合到元素B,或者间接地通过例如元素C来耦合。
当说明书或权利要求称部件、特性、结构、过程或特征A“引起”部件、特性、结构、过程或特征B时,其表示“A”至少是“B”的部分原因,但可能还存在另一个部件、特性、结构、过程或特征在协助引起“B”。同样地,A响应于B不表示其并不还响应于C。
如果说明书称部件、特性、结构、过程或特征“可以”、“可能”或“能”被包括时,该特定的部件、特性、结构、过程或特征并不被要求被包括。如果说明书或权利要求提到“某个”元素,其并不表示该元素只有一个。
本发明并不限于本文所描述的特定细节。确实地,可以在本发明范围内给出前述描述和附图的许多其他变型。因此,定义本发明范围的是下面的权利要求,包括对其进行的任何修改。
Claims (17)
1.一种用于选择接收中断的处理器的装置,包括:
包括处理器集群的处理器封装,每一个集群包括多个处理器,每个处理器具有本地高级可编程中断控制器(APIC),其具有用于保存物理APIC标识符(ID)的寄存器,所述本地APIC具有基于所述物理APIC ID的逻辑APIC ID,
处理器选择部,用于接收与中断相关联的逻辑目的地标识号码,所述中断每个都具有处理器集群标识号码以用于识别所述中断所引导至的处理器集群,并且其中,所述逻辑目的地标识号码每个都用于识别在所识别的处理器集群中哪些处理器可用于接收相应的一个中断,
其中,所述处理器选择部用于选择所述可用的处理器中的一个处理器来接收所述一个中断,以及其中,所述可用的处理器中所选择的一个处理器是通过所述逻辑目的地标识号码中相应位的相对位置来识别的,并且其中,在所述识别的集群中的所述可用的处理器中的未被选择来接收所述一个中断的其他处理器不接收所述一个中断。
2.根据权利要求1所述的装置,还包括逻辑APIC ID创建部,用于从所述物理APIC ID创建所述逻辑APIC ID。
3.根据权利要求2所述的装置,其中,所述逻辑APIC ID创建部用于将所述逻辑APIC ID划分成第一域和第二域。
4.根据权利要求3所述的装置,其中,所述第一域是用于识别目的地集群的集群域。
5.根据权利要求3所述的装置,其中,所述第二域是用于识别所述目的地集群中的逻辑APIC的逻辑域。
6.根据权利要求1所述的装置,其中,在进行选择的过程中,响应于所述可用的处理器的电源状态,所述处理器选择部选择所述一个处理器来接收所述一个中断。
7.根据权利要求1所述的装置,其中,响应于所述可用的处理器的处理器优先级,所述处理器选择部选择所述一个处理器来接收所述一个中断。
8.根据权利要求1所述的装置,其中,在进行选择的过程中,响应于所述可用的处理器的电源状态和处理器优先级,所述处理器选择部选择所述一个处理器来接收所述一个中断。
9.根据权利要求1所述的装置,还包括重定向表格,该重定向表格包括包含所述逻辑APIC ID的表项。
10.根据权利要求9所述的装置,其中,所述装置包括与设备通过接口进行连接的接口电路,以提供作为所述重定向表格的索引的值。
11.根据权利要求1所述的装置,其中,所述逻辑目的地标识号码中的一些将所识别的处理器集群中的仅一个处理器识别为可用于接收相应的一个中断,在这一情形中,该一个处理器是所被选择的那一个处理器。
12.一种用于选择接收中断的处理器的方法,包括:
为重置后的处理器集群封装的处理器的本地APIC初始化物理高级可编程中断控制器(APIC)标识符(ID);从所述物理APIC ID创建逻辑APICID,并且将所述逻辑APIC ID划分成第一域和第二域;
从处理器集群标识号码确定将中断引导至多个处理器集群中的哪些;
接收与所述中断相关联的逻辑目的地标识号码,并且其中,所述逻辑目的地标识号码每个都用于将所识别的处理器集群中特定的处理器识别为可用于接收相应的一个中断,以及
选择所述可用的处理器中的至少一个处理器来接收所述一个中断,并且其中,所述可用的处理器中所选择的至少一个处理器是通过所述逻辑目的地标识号码中相应位的相对位置来识别的,并且其中,在所述识别的集群中的所述可用的处理器中的未被选择来接收所述一个中断的其他处理器不接收所述一个中断。
13.根据权利要求12所述的方法,还包括,在进行选择的过程中,响应于所述可用的处理器的电源状态和处理器优先级,选择所述一个处理器来接收所述一个中断。
14.根据权利要求12所述的方法,还包括,通过重定向表格选择所述逻辑APIC ID。
15.一种用于选择接收中断的处理器的系统,包括:
处理器封装,所述处理器封装每个都包括至少一个处理器集群,每一个集群包括多个处理器,每个处理器具有本地高级可编程中断控制器(APIC),其具有用于保存物理APIC标识符(ID)的寄存器,所述本地APIC具有基于所述物理APIC ID的逻辑APIC ID;和
中断接收部,用于接收中断,所述中断每个都包括处理器集群标识号码,以及用于基于相应的处理器集群标识号码来将所述中断引导至一个处理器集群,并且其中,对于每一个处理器集群,该集群中的所有处理器都包含在单个处理器封装中;和
处理器选择部,用于接收与所述中断相关联的逻辑目的地标识号码,所述中断每个都具有一个处理器集群标识号码,并且其中,所述逻辑目的地标识号码每个都用于识别在所识别的处理器集群中哪些处理器可用于接收相应的一个中断,以及
其中,所述处理器选择部用于选择所述可用的处理器中的至少一个处理器来接收所述一个中断,以及其中,所述可用的处理器中所选择的至少一个处理器是通过所述逻辑目的地标识号码中相应位的相对位置来识别的,并且其中,在所述识别的集群中的所述可用的处理器中的未被选择来接收所述一个中断的其他处理器不接收所述一个中断。
16.根据权利要求15所述的系统,还包括输入输出中心,所述输入输出中心包括重定向表格,所述重定向表格用来提供所述处理器集群标识号码中的至少一些以及所述逻辑目的地标识号码中的至少一些,并且其中,所述处理器选择部被包括在所述输入输出中心中。
17.根据权利要求15所述的系统,其中,所述处理器选择部包括包含在第一个处理器封装中的第一处理器选择子部和包含在第二个处理器封装中的第二处理器选择子部。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/850,790 US7769938B2 (en) | 2007-09-06 | 2007-09-06 | Processor selection for an interrupt identifying a processor cluster |
US11/850,790 | 2007-09-06 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102127656A Division CN101382910B (zh) | 2007-09-06 | 2008-09-04 | 用于选择接收中断的处理器的装置、方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102609311A CN102609311A (zh) | 2012-07-25 |
CN102609311B true CN102609311B (zh) | 2014-12-17 |
Family
ID=40340233
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102127656A Active CN101382910B (zh) | 2007-09-06 | 2008-09-04 | 用于选择接收中断的处理器的装置、方法和系统 |
CN201110439938.XA Active CN102609311B (zh) | 2007-09-06 | 2008-09-04 | 用于选择接收中断的处理器的装置、方法和系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102127656A Active CN101382910B (zh) | 2007-09-06 | 2008-09-04 | 用于选择接收中断的处理器的装置、方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7769938B2 (zh) |
KR (2) | KR101004240B1 (zh) |
CN (2) | CN101382910B (zh) |
DE (1) | DE102008035120B4 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10216245B2 (en) | 2015-12-22 | 2019-02-26 | Cray Inc. | Application ramp rate control in large installations |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8032681B2 (en) * | 2007-09-06 | 2011-10-04 | Intel Corporation | Processor selection for an interrupt based on willingness to accept the interrupt and on priority |
US7783811B2 (en) * | 2007-12-17 | 2010-08-24 | Microsoft Corporation | Efficient interrupt message definition |
CN101546276B (zh) * | 2008-03-26 | 2012-12-19 | 国际商业机器公司 | 多核环境下实现中断调度的方法及多核处理器 |
US8024504B2 (en) * | 2008-06-26 | 2011-09-20 | Microsoft Corporation | Processor interrupt determination |
JP5169731B2 (ja) * | 2008-10-24 | 2013-03-27 | 富士通セミコンダクター株式会社 | マルチプロセッサシステムlsi |
US8103816B2 (en) * | 2008-10-28 | 2012-01-24 | Intel Corporation | Technique for communicating interrupts in a computer system |
US7996548B2 (en) * | 2008-12-30 | 2011-08-09 | Intel Corporation | Message communication techniques |
CN101908003B (zh) * | 2009-06-05 | 2014-10-22 | Sap股份公司 | 并行化查询的多核调度 |
US8688883B2 (en) | 2011-09-08 | 2014-04-01 | Intel Corporation | Increasing turbo mode residency of a processor |
US8972642B2 (en) * | 2011-10-04 | 2015-03-03 | Qualcomm Incorporated | Low latency two-level interrupt controller interface to multi-threaded processor |
US8949474B1 (en) * | 2011-11-21 | 2015-02-03 | Marvell International Ltd. | Method for inter-chip and intra-chip addressing using port identifiers and address mapping |
US9026705B2 (en) * | 2012-08-09 | 2015-05-05 | Oracle International Corporation | Interrupt processing unit for preventing interrupt loss |
US8806104B2 (en) | 2012-09-25 | 2014-08-12 | Intel Corporation | Enabling virtualization of a processor resource |
US9043521B2 (en) | 2012-11-13 | 2015-05-26 | Intel Corporation | Technique for communicating interrupts in a computer system |
US9384156B2 (en) * | 2013-11-21 | 2016-07-05 | Microsoft Technology Licensing, Llc | Support for IOAPIC interrupts in AMBA-based devices |
JP6365224B2 (ja) * | 2014-10-21 | 2018-08-01 | 富士通株式会社 | センシング制御プログラム及び携帯端末装置 |
US10031573B2 (en) | 2014-11-17 | 2018-07-24 | Mediatek, Inc. | Energy efficiency strategy for interrupt handling in a multi-cluster system |
US20160188503A1 (en) * | 2014-12-25 | 2016-06-30 | Intel Corporation | Virtual legacy wire |
KR102296740B1 (ko) * | 2015-09-16 | 2021-09-01 | 삼성전자 주식회사 | 메모리 장치 및 그것을 포함하는 메모리 시스템 |
KR102509986B1 (ko) | 2016-03-28 | 2023-03-14 | 삼성전자주식회사 | 다중 코어 프로세서 및 다중 코어 프로세서를 제어하는 방법 |
US10289188B2 (en) * | 2016-06-21 | 2019-05-14 | Intel Corporation | Processor having concurrent core and fabric exit from a low power state |
US10747631B2 (en) * | 2018-01-19 | 2020-08-18 | DinoplusAI Holdings Limited | Mission-critical AI processor with record and replay support |
US11675718B2 (en) * | 2021-03-26 | 2023-06-13 | Advanced Micro Devices, Inc. | Enhanced low-priority arbitration |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890640A (zh) * | 2003-10-06 | 2007-01-03 | 英特尔公司 | 高效的系统管理同步和存储器分配 |
CN1979455A (zh) * | 2005-11-29 | 2007-06-13 | 泰安电脑科技(上海)有限公司 | 高级可编程中断控制器的识别码配置方法 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5612128A (en) * | 1988-09-09 | 1997-03-18 | Hitachi, Ltd. | Ultra fine particles having uneven surfaces and treatment plate using same |
US5495615A (en) | 1990-12-21 | 1996-02-27 | Intel Corp | Multiprocessor interrupt controller with remote reading of interrupt control registers |
US5613128A (en) | 1990-12-21 | 1997-03-18 | Intel Corporation | Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller |
JP2855298B2 (ja) * | 1990-12-21 | 1999-02-10 | インテル・コーポレーション | 割込み要求の仲裁方法およびマルチプロセッサシステム |
US5724527A (en) * | 1995-12-28 | 1998-03-03 | Intel Corporation | Fault-tolerant boot strap mechanism for a multiprocessor system |
US6665761B1 (en) * | 1999-07-28 | 2003-12-16 | Unisys Corporation | Method and apparatus for routing interrupts in a clustered multiprocessor system |
US6687818B1 (en) * | 1999-07-28 | 2004-02-03 | Unisys Corporation | Method and apparatus for initiating execution of an application processor in a clustered multiprocessor system |
US6772241B1 (en) * | 2000-09-29 | 2004-08-03 | Intel Corporation | Selective interrupt delivery to multiple processors having independent operating systems |
US6983339B1 (en) * | 2000-09-29 | 2006-01-03 | Intel Corporation | Method and apparatus for processing interrupts of a bus |
US7328294B2 (en) * | 2001-12-03 | 2008-02-05 | Sun Microsystems, Inc. | Methods and apparatus for distributing interrupts |
US7039740B2 (en) * | 2002-07-19 | 2006-05-02 | Newisys, Inc. | Interrupt handling in systems having multiple multi-processor clusters |
US7051137B2 (en) * | 2002-10-31 | 2006-05-23 | Intel Corporation | Event delivery |
US7191349B2 (en) * | 2002-12-26 | 2007-03-13 | Intel Corporation | Mechanism for processor power state aware distribution of lowest priority interrupt |
US8984199B2 (en) * | 2003-07-31 | 2015-03-17 | Intel Corporation | Inter-processor interrupts |
US7222203B2 (en) * | 2003-12-08 | 2007-05-22 | Intel Corporation | Interrupt redirection for virtual partitioning |
US7089341B2 (en) * | 2004-03-31 | 2006-08-08 | International Business Machines Corporation | Method and apparatus for supporting interrupt devices configured for a particular architecture on a different platform |
US7496706B2 (en) * | 2004-06-30 | 2009-02-24 | Intel Corporation | Message signaled interrupt redirection table |
US7689747B2 (en) | 2005-03-28 | 2010-03-30 | Microsoft Corporation | Systems and methods for an augmented interrupt controller and synthetic interrupt sources |
JP2006352706A (ja) * | 2005-06-17 | 2006-12-28 | Hitachi Ltd | マイクロプロセッサ、ネットワークシステム及び通信方法 |
US20060294277A1 (en) | 2005-06-24 | 2006-12-28 | Tetrick Raymond S | Message signaled interrupt redirection |
TW200708969A (en) * | 2005-08-24 | 2007-03-01 | Tyan Computer Corp | ID allocating method for advanced programmable interrupt controller |
US20070239917A1 (en) * | 2005-12-09 | 2007-10-11 | Ryuji Orita | Interrupt routing within multiple-processor system |
US8286162B2 (en) * | 2005-12-30 | 2012-10-09 | Intel Corporation | Delivering interrupts directly to a virtual processor |
US20080162762A1 (en) | 2006-12-29 | 2008-07-03 | Gilbert Neiger | Interrupt remapping based on requestor identification |
-
2007
- 2007-09-06 US US11/850,790 patent/US7769938B2/en active Active
-
2008
- 2008-07-28 DE DE102008035120.2A patent/DE102008035120B4/de active Active
- 2008-09-04 CN CN2008102127656A patent/CN101382910B/zh active Active
- 2008-09-04 CN CN201110439938.XA patent/CN102609311B/zh active Active
- 2008-09-05 KR KR1020080087954A patent/KR101004240B1/ko active IP Right Grant
-
2010
- 2010-05-24 KR KR1020100048215A patent/KR101035447B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890640A (zh) * | 2003-10-06 | 2007-01-03 | 英特尔公司 | 高效的系统管理同步和存储器分配 |
CN1979455A (zh) * | 2005-11-29 | 2007-06-13 | 泰安电脑科技(上海)有限公司 | 高级可编程中断控制器的识别码配置方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10216245B2 (en) | 2015-12-22 | 2019-02-26 | Cray Inc. | Application ramp rate control in large installations |
Also Published As
Publication number | Publication date |
---|---|
KR20090026100A (ko) | 2009-03-11 |
US7769938B2 (en) | 2010-08-03 |
CN101382910A (zh) | 2009-03-11 |
KR101035447B1 (ko) | 2011-05-18 |
KR101004240B1 (ko) | 2010-12-24 |
CN102609311A (zh) | 2012-07-25 |
US20090070511A1 (en) | 2009-03-12 |
DE102008035120A1 (de) | 2009-03-12 |
KR20100061648A (ko) | 2010-06-08 |
DE102008035120B4 (de) | 2014-11-13 |
CN101382910B (zh) | 2012-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102609311B (zh) | 用于选择接收中断的处理器的装置、方法和系统 | |
CN101796499B (zh) | 具有群集id和群集内id的逻辑apic id的创建 | |
JP4128956B2 (ja) | デュアル・インライン・メモリモジュール・フォーマットにおいて一連のマルチアダプティブプロセッサを採用したクラスタ型コンピュータ用スイッチ/ネットワークアダプタポート | |
US8032684B2 (en) | Programmable bridge header structures | |
US7231638B2 (en) | Memory sharing in a distributed data processing system using modified address space to create extended address space for copying data | |
JP4160925B2 (ja) | 分散型ノード・トポロジにおけるクロス・チップ通信機構を含むマルチプロセッサ・コンピュータ・システム内の処理ユニット間の通信方法およびシステム | |
WO2021244194A1 (zh) | 寄存器的读写方法、芯片、子系统、寄存器组及终端 | |
US8032681B2 (en) | Processor selection for an interrupt based on willingness to accept the interrupt and on priority | |
CN104969207A (zh) | 高性能互连一致性协议 | |
WO2022103485A1 (en) | Source ordering in device interconnects | |
CN112131148A (zh) | 预测性分组头部压缩 | |
CN112463657A (zh) | 一种地址转换缓存清除指令的处理方法和处理装置 | |
US7107432B2 (en) | VLIW processor with data spilling means | |
CN114265804A (zh) | 一种多根CPU下的PCIe交换芯片上、下游端口路由表构建方法 | |
US10503541B2 (en) | System and method for handling dependencies in dynamic thread spawning for a multi-threading processor | |
CN112559037A (zh) | 一种指令执行方法、单元、装置及系统 | |
US11706293B1 (en) | Buffer profile assignment management based on peer network device data | |
WO2022257898A1 (zh) | 一种任务调度的方法、系统和硬件任务调度器 | |
CN115174698B (zh) | 基于表项索引的行情数据解码方法、装置、设备及介质 | |
CN110286743A (zh) | 一种数据中心节电方法、终端、计算机可读存储介质 | |
CN115858442A (zh) | 远程分解式基础设施处理单元(ipus) | |
CN112015480A (zh) | 指令的分配方法和处理器 | |
CN110580194A (zh) | 基于内存热插拔技术的容器调度方法及管理节点调度器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |