CN101896896A - 高效中断消息定义 - Google Patents

高效中断消息定义 Download PDF

Info

Publication number
CN101896896A
CN101896896A CN2008801210669A CN200880121066A CN101896896A CN 101896896 A CN101896896 A CN 101896896A CN 2008801210669 A CN2008801210669 A CN 2008801210669A CN 200880121066 A CN200880121066 A CN 200880121066A CN 101896896 A CN101896896 A CN 101896896A
Authority
CN
China
Prior art keywords
processor
message
equipment
group
target
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.)
Granted
Application number
CN2008801210669A
Other languages
English (en)
Other versions
CN101896896B (zh
Inventor
B·沃辛顿
V·马穆塔尼
B·雷林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101896896A publication Critical patent/CN101896896A/zh
Application granted granted Critical
Publication of CN101896896B publication Critical patent/CN101896896B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling 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)
  • Multi Processors (AREA)
  • Communication Control (AREA)

Abstract

一种用于多处理器计算机的高效中断系统。设备使用通过PCI、PCI-X或PCI Express总线用存储器写事务传递的预定义的消息地址和数据净荷来中断处理器或处理器组。设备配置有各自将一处理器确定为目标的消息。在接收到执行操作的命令后,该设备可接收要用来在完成该操作后中断处理器的优选消息的指示。通过为计算机中的各设备定义消息以使得每一个设备都包含将分布在各组处理器(每一组都表示接近邻近度内的处理器)中的处理器确定为目标的消息来提高处理每一个中断的效率以及计算机操作的总效率。在为消息选择目标处理器时,选择处理器以便将处理分布在各处理器组以及每一组中的处理器上。

Description

高效中断消息定义
背景
计算机系统包括一个或多个处理器,每一个处理器都执行一机器指令集。处理器可以是用半导体芯片实现的物理组件,或者可以是虚拟的、通过对一个或多个物理处理器的操作来实现。
由处理器执行的某些指令可以完全在该处理器中执行。但是,其他指令可能需要处理器和计算机系统的其他组件之间的交互。通常,计算机系统将包含处理器将在计算机操作时与其交互的单独设备。例如,存储器操作可能需要与硬盘交互而网络通信操作可能需要与网络接口卡交互。
为了方便这些交互,计算机系统可具有支持处理器和其他设备之间的通信的总线。一种常见类型的总线被称为PCI(外围部件互连)总线。除了允许交换数据之外,某些总线还支持可告知中断的消息。设备可使用这一消息来向处理器告知它已完成该处理器所请求的操作或者它已经以其他方式执行某一动作或检测到需要来自处理器的服务的情况。以此方式,处理器可将一操作分配给设备并在该设备执行该操作的同时执行其他功能。
一旦该设备完成该操作,处理器就通过中断得到通知并且可执行对该操作的完成处理。完成处理的特性可基于设备或所执行的操作而变化。然而,完成处理的示例包括从设备读取数据或者将检索到的数据传递给请求该数据的应用程序。
根据PCI、PCI-X、或PCI Express标准来实现的总线支持消息告知中断(MSI)和消息告知中断扩展(MSI-X)协议。使用这些协议的设备可通过使用PCI存储器写事务来向系统指定地址写入系统指定数据值来请求服务。系统软件在设备配置期间初始化消息地址和消息数据。消息地址编码关于目标处理器和传递模式的信息。设备执行对于预先配置的MSI消息的存储器写入以中断处理器。
发明概述
可通过适当地定义和选择供设备用来中断多处理器系统中的处理器的消息来改进中断服务和总体计算机系统操作。这些消息可使用处理器组基于每一组中的处理器的邻近度来定义。各组可以是不同的处理器集合或者可重叠或者可被包含在其他组中。用于中断服务的合乎需要的方法可通过为每一个设备定义消息以使得该设备具有将分布在各处理器组中的处理器确定为目标的消息来实现。如果最高效的处理器不是设备的消息的目标,则可选择将与最高效处理器相同的组中的处理器或者与包含最高效处理器的组的接近邻近度内的组中的处理器确定为目标的消息。通过用分布在基于邻近度的各组中的处理器来定义消息,增加设备将具有将最高效的处理器或与该最高效的处理器的接近邻近度内的处理器确定为目标的消息的可能性。
对消息的适当定义还可提高计算机系统操作的总效率。通过定义包含分布在每一组中的处理器中的目标处理器的消息,更高效地分布处理负载。
因此,在一方面,本发明涉及一种操作计算机以便为设备定义供在发出中断时使用的消息的方法。该方法可导致最大化被为多个设备中的每一个设备创建的消息确定为目标的多个基于邻近度的处理器组中的组数。该方法可最小化将每一组确定为目标的消息数。
在另一方面,本发明涉及具有通过总线耦合到多个设备的多个处理器的计算机。该计算机可被编程为基于处理器组和组中的处理器的排序来定义总线消息。使用该排序,可以实现消息在处理器和处理器组上的所需分布。
在又一方面,本发明涉及一种方法,该方法操作计算机以将消息存储在每一个设备中以供在中断目标处理器时使用,向设备发送请求以执行功能,并且建议设备应在完成该功能后使用哪一个中断消息。所建议的消息通过标识为特定设备中断服务的高效处理器并且然后将其选为基于与该高效处理器的邻近度来将处理器确定为目标的所建议的消息一来选择。
以上概述是对由所附权利要求定义的本发明的非限定性的概述。
附图简述
附图不旨在按比例绘制。在附图中,各个附图中示出的每一完全相同或近乎完全相同的组件由同样的标号来表示。出于简明的目的,不是每个组件在每张附图中均被标号。在附图中:
图1是示出现有技术多处理器计算机系统的高级概览的略图;
图2是示出现有技术多处理器计算机系统中的输入/输出(I/O)操作的处理的框图;
图3是根据本发明的各实施例的定义中断消息并将其分配给设备的过程的流程图;以及
图4是根据本发明的各实施例的将操作分配给设备的过程的流程图。
详细描述
发明人理解对于多处理器计算机中的某些中断,诸如告知分配给设备的输入/输出(I/O)操作完成的那些中断,处理该中断的效率可随处理器变化。此外,每一个处理器执行操作的效率可以是基于邻近度的。因此,在本发明的各实施例中,可出于定义中断消息的目的基于邻近度来对处理器分组。基于邻近度的分组可包括具有与该分组中的其他处理器的接近物理邻近度和/或具有便于在分组的处理器之间进行高效通信的邻近度的处理器。
例如,在I/O操作之后执行的完成处理中,发起I/O操作的处理器能够更高效地访问完成该处理所必需的信息或指令。这种情况可能由于发起操作的处理器可具有存储在该处理器可优先访问的本地高速缓存或其他存储器位置中的在完成I/O操作或后续相关处理时使用的信息或指令而出现。结果,该处理器能够比其他处理器更高效地执行完成该操作的处理或相关处理。
对于执行相同操作的另一处理器,在发起I/O操作的处理器向执行完成处理的处理器提供信息时,可能存在与处理器间通信相关联的效率损失。该效率损失对于在与发起中断的处理器相同的处理器组中的其他处理器而言可能较少,因为对于基于邻近度的各组中的处理器的处理器间通信可以比不同组中的处理器之间的处理期间通信更高效。此外,该效率损失可基于各组之间的邻近度。作为一示例,被物理地实现为同一半导体芯片中的核的处理器可以使用片上电路来通信,这很有可能比芯片间通信电路更快。因此,单个半导体芯片上的核可形成基于邻近度的处理器组。同样,安装在同一印刷电路板(PCB)上的芯片中的处理器可以比不同PCB上的跨总线通信的处理器更高效地通信。
基于邻近度的效率差异并非限于物理处理器的现象。在具有虚拟处理器的系统中,主存在同一物理处理器上的虚拟处理器可以比主存在不同物理处理器上的虚拟处理器更高效地执行处理期间交互。因此,多处理器计算机系统中的处理器可形成组,并且某些组中的处理器可以比其他组中的处理器更高效地执行特定操作。
发明人理解基于邻近度的分组可用于提高基于总线消息来告知中断的计算机中的效率,如发生在通过PCI总线根据MSI-X协议来操作的计算机中。这一系统中的发出中断的每一个设备都可具有有限数量的可用消息并因此在可被中断确定为目标的处理器数量方面受限。结果,设备可能不具有可用于将用于执行中断所触发的处理的最高效的处理器确定为目标的消息。然而,通过为设备适当地定义消息,可以增加设备将具有将与最高效处理器的接近邻近度内的处理器确定为目标的消息的可能性。
在以此方式定义消息的情况下,在完成操作后,设备可使用将高效处理器确定为目标的消息来向处理器发出中断。如果最高效的处理器不在为设备定义的消息的目标处理器中,则可将来自与最高效处理器相同的组或者在与包含最高效处理器的组的接近邻近度内的组中的另一处理器选为目标处理器。因此,通过为设备适当地定义供使用的消息,减少了每一中断的平均处理。
发明人理解将消息均匀地分布在基于邻近度的处理器组中的处理器上还可有助于通过避免使任何特定处理器过载来提高计算效率。例如,如果多个设备连接到计算机,则不利的(低效的)消息分配可导致各消息同时将同一处理器确定为目标。本发明减少了不平衡队列将在任一个处理器处累积的可能性。即使不平衡还没严重到导致大型队列的程度,处理器的恒定中断也可阻止其执行其他功能。因此,在某些实施例中,消息定义还可将处理负载均匀地分布在每一组中且整个计算机系统中的所有处理器上。但是在其他系统中,可通过将中断集中在一个或几个处理器中来提高效率,并且可构造将消息集中在一个或几个处理器上的实施例。
图1描绘了其中可使用本发明的各实施例的计算机系统100。系统100包括多个物理和虚拟处理器。在图1的示例中,示出了处理器1221,...,1224,1241,...,1244和1261,...,1264。每一个处理器都可以在一个或多个半导体芯片上实现,且每一个半导体芯片都支持一个或多个处理器。系统100被示为具有半导体芯片1201、1202和1203。为简明起见示出了十二个处理器和三个半导体芯片,但处理器和半导体芯片的数量在本发明中不受限制并且可以使用任何合适的数量。
可以如本领域中所已知的那样实现每一个半导体芯片。在图1的示例中,半导体芯片1201和1202是四核半导体芯片,且每一个核都可用作处理器。半导体芯片1203是单核芯片。这些半导体芯片可以从诸如英特尔公司等来源购得。
图1示出每一个处理器不必对应于单独的物理电路。这些处理器中的一个或多个可以是虚拟处理器。在图1的示例中,处理器1261...1263被实现为虚拟处理器。虚拟处理器1261...1263可以使用在计算机100的操作系统中执行的已知虚拟化软件来实现。然而,在本发明的各实施例中,半导体芯片和物理或虚拟处理器可以按任何合适的方式实现或者可从任何合适的来源获得。
芯片1201和1202安装在印刷电路板(PCB)1101上,而芯片1203安装在PCB 1102上。尽管示出了两个PCB,但PCB的数量不是本发明的限制并且可使用任何合适的数量。
不同PCB上或计算机系统100的不同部分上的组件可通过一个或多个总线来通信。处理器可通过一个总线通信,而I/O设备可通过另一总线通信。在图1的示例中,为简明起见只示出了单个总线。在这一实施例中,芯片1201上的处理器可以使用总线130来与芯片1203上的处理器通信。总线130可以是如本领域内已知的标准化总线。例如,总线130可以是PCI总线。然而,总线130的构造和协议对于本发明并非关键并且可以在本发明的各实施例中使用任何合适的一个或多个总线。
在操作中,处理器可执行诸如应用程序软件或操作系统软件等基于计算机100的所需功能来执行功能的软件。某些功能可涉及单独在处理器中执行的操作。其他功能可涉及分配给设备1401...1403的操作。图1中的处理器可以通过总线130与设备1401、1402、1403进行通信,包括将操作分配给设备1401...1403
作为与一个或多个处理器进行通信的结果,每一个设备都可处理分配给它的操作。在本发明的各实施例中,设备可执行I/O操作或任何其他合适类型的操作。这些设备可包括硬盘、声音和视频捕捉卡、网络卡、或任何其他合适的设备。为简明起见在系统100中示出了三个设备,但设备的数量不是本发明的限制并且可使用任何合适的数量。
有时,设备可发出中断以便由处理器来服务。这些中断可包括对处理器执行完成处理器的请求。在所示实施例中,设备使用总线消息来向处理器告知中断。每一个设备都具有用于向目标处理器发送中断的固定数量的可用消息。例如,设备1401具有三个消息1421、1422、1423,这三个消息可将计算机系统100中的任意三个处理器确定为目标。在本发明的各实施例中,这些消息可根据用于传送这些消息的总线的合适协议来格式化。例如,PCI设备可利用根据MSI-X协议来操作的消息。尽管图1分别将设备1401、1402和1403限于三个、两个和三个消息,但对设备可用的消息数量不是本发明的限制并且可使用任何适当的数量。
在操作中,消息1421...1423、1441、1442、1461...1463中的每一个都可由在一个或多个处理器上执行的操作系统软件来定义。然而,根据本发明的各实施例,消息可以按任何合适的方式来定义。在所示示例中,定址每一个消息以便将计算机系统100中的物理或虚拟处理器中的中断处理程序确定为目标。还格式化消息以便向该中断处理程序指示该消息所表示的中断告知特定设备已完成分配到的操作。
已定义的消息可用作包括将操作1401...1403分配给设备的操作计算机系统100的过程的一部分。例如,图2是示出现有技术多处理器计算机系统100中的输入/输出(I/O)操作的发起和完成的框图。该I/O操作过程200包括子过程210,该子过程包括处理器所采取的初始动作。即,在框212,处理器从正在执行的应用程序或其他软件接收对I/O操作的请求。在框214,该处理器将I/O操作分配给特定设备,并且然后在框216,返回到执行其他任务。
同时,在框220设备执行分配给它的I/O操作。在框230,设备通过使用消息来生成中断来通知计算机I/O操作已完成。所发送的消息可选自为该设备预定义的一组消息,诸如消息1421...1423、1441、1442、1461...1463。接收处理器(不一定是在框210发起该操作的同一处理器)然后在框240处理该中断,由此完成I/O操作。这一完成处理可以是如本领域内所已知的那样。然而,在本发明的各实施例中,可以执行任何合适的完成处理。
发明人理解可通过适当地定义用于告知分配到的操作已完成的消息来提高将操作分配给设备的效率。某些处理器可以比其他处理器更高效地为某些中断服务,并且通过定义消息以增加高效处理器是预定义消息的目标的可能性,可提高总效率。处理器之间的执行完成处理的效率变化的一个原因是在同一芯片中实现的处理器可使用片上电路来通信,该片上电路很有可能比可用于在同一PCB上的不同芯片上的处理器之间进行通信的芯片间电路更快。相反,通过连接PCB的总线的处理器间通信很有可能比同一PCB或同一芯片上的处理器之间的通信更慢。因为完成处理可能需要处理器之间的通信,所以执行处理器间通信的效率可以影响执行完成处理的总效率。
例如,如果发起处理器和完成处理器是同一个处理器或者至少彼此在接近物理邻近度内以使得处理器间通信是高效的,则可提高执行I/O操作的效率。发起操作的同一处理器可以有利地访问完成该操作所需的信息和指令。结果,该处理器可以比其他处理器更高效地执行完成处理。或者,如果相同的发起处理器对于完成不可用,则分组在发起处理器的接近物理邻近度内的处理器可以是比位于该分组之外的处理器更高效的选择。
在本发明的各实施例中,处理器可被设计成特定的基于邻近度的组的一部分以使得所有处理器都具有与它们的组中的其他处理器的接近物理邻近度,和/或具有便于在分组的处理器之间进行高效通信的邻近度。各组可包括不同的处理器集合或者可重叠并由此产生包含相同的一个或多个处理器的多个组。然后可以在建立供诸如设备1401...1403等设备用来在告知关于分配到的操作的完成处理的中断时使用的消息时使用已定义的处理器组。每一个设备的消息集的目标处理器可以按增加可高效地执行完成处理的处理器是为该设备定义的消息的目标的可能性的方式来定义。
在如图1所示的系统中,例如,本发明的一实施例可指定位于单个半导体芯片1201、1202或1203上的那些处理器形成基于邻近度的处理器组。芯片1201和1202位于印刷电路板(PCB)1101上,而芯片1203位于PCB 1102上。因为安装在同一PCB上的芯片中的处理器很有可能比不同PCB上的通过总线通信的处理器更高效地通信,所以本发明的一实施例可将PCB 1101上的处理器描述为在第一组中,而在PCB 1102上的那些处理器在第二组中。或者,一个半导体芯片中的核的彼此同它们与单独半导体芯片中的核相比在更接近的邻近度内。在图1的示例中,核1221...1224可被认为形成第一组。半导体芯片1202中的核1241...1244可被认为是第二组。半导体芯片1203中的物理和虚拟处理器可被认为是第三基于邻近度的组。此外,不存在阻止在本发明的单个实现中使用诸如以上给出的多个邻近组定义。
为了促进由于利用这些基于邻近度的处理器分组而引发的效率提升,图3所示的本发明的一示例实施例使用定义中断消息并将其分配给设备以增加设备将具有可将高效处理器确定为目标的可用消息的可能性的过程。例如,在图1中,设备1401具有三个消息1421、1422、1423,这三个消息可将计算机系统100中的任意三个处理器确定为目标。在现有技术系统中,可能将这些消息的目标确定为单个处理器或者同一芯片上的各个处理器。相反,图3中的实施例所示的过程将确保将这些消息均匀地分布在基于邻近度的处理器组上,且每一个消息都将不同芯片上的处理器确定为目标。
作为一特定示例,设备1401能够存储的这三个消息1421...1423中的每一个都可将通过使用不同的半导体芯片1201...1203来创建的各个基于邻近度的组中的不同组中的处理器确定为目标。作为一特定示例,消息1421可将核1221确定为目标,消息1422可将核1241确定为目标,而消息1423可将虚拟处理器1261确定为目标。
可供设备1403使用的三个消息1461、1462、1463中的每一个都同样可将存在于计算机系统100(图1)中的三个基于邻近度的组中的每一组中的处理器确定为目标。设备1403中的消息可将被设备1401中的消息确定为目标的相同的三个处理器确定为目标。然而,发明人理解,如果消息目标分布在所有处理器上以使得没有处理器被频繁地中断而导致该处理器不高效地执行其他操作,则也可提高计算机系统100的操作效率。因此,在某些实施例中,为设备1403创建的消息1461...1463将与为设备1401创建的消息1421...1423不同的处理器确定为目标可以是合乎需要的。例如,消息1421可将核1221确定为目标,而消息1461可将核1223确定为目标。消息1422可将核1241确定为目标,而消息1462可将核1242确定为目标。同样,消息1423可将虚拟处理器1261确定为目标,而消息1463可将虚拟处理器1263确定为目标。这种将消息分布在处理器上的模式可以在为所有设备分配消息时使用。例如,设备1402的消息1441可将核1222确定为目标,而消息1442可将虚拟处理器1262确定为目标。以此方式,为任一个设备定义的消息可以分布在基于邻近度的组上,并且为所有设备共同定义的消息可以分布在系统100中的处理器上。在其他实施例中,对于将给定的基于邻近度的组中的处理器确定为目标的所有设备而言,使其消息去往同一处理器或该组中的总处理器集的子集可以更高效。
图3示出了本发明的某些实施例中的可以实现这一分布的过程。图3的过程可由计算机的操作系统或任何其他合适的组件来执行。该过程可以在计算机开始操作时或在操作期间检测到设备时执行。具体而言,过程300可开始于框310,在那里计算机系统100发现什么设备连接到它。
框316处的处理建立系统中的基于邻近度的处理器分组的最大数量N以及组i中的处理器的最大数量Mi,其中i属于集合{1,2...N}。处理器组可基于其上执行过程300的计算机系统100的体系结构来定义。可以使用任何合适的邻近度定义来定义组。例如,在图1的实施例中,处理器基于其上实现这些处理器的特定半导体芯片来被分成各个组。在其他实施例中,组可基于其中物理地实现处理器的特定PCB来定义。在其他情况下,可使用处理器间通信所需的时间的度量来定义相同的基于邻近度的组中的处理器。在其他实施例中,可使用这些因素的组合来定义组,或者组可以嵌套以形成分层结构。例如,表示物理芯片的插槽可具有多个核,这些核中的每一个都可进而具有多个虚拟处理器。这些处理器可以在任一层分组或嵌套。虽然图3的实施例只在各组的单个层上操作,但其他实施例可迭代通过该分层结构的每一层以选择要分配的消息目标。不管组是如何定义的,框316处的处理确定组数以及每一组中的处理器的数量。
图3的过程被示为是迭代过程。该过程在将为其定义消息的每一个设备上迭代并且在将为每一个设备定义的每一个消息上迭代。在所示实施例中,在各迭代之间维护状态信息。在图3的示例中,在计数器中维护状态信息,但可使用任何合适的机制来维护状态信息。因此,过程300的开始部分涉及初始化维护状态信息的计数器。在框320,初始化计数器变量n和P1...N。变量n表示正在考虑的当前组并且其值范围可以在0到N-1。变量Pi表示组i中的正在考虑的当前处理器,其中i属于集合{1,2...N-1}而Pi的值的范围从0到Mi-1。因此,根据该实施例,n和Pi都被初始化为值0,这指示将首先考虑第一组和该组中的第一处理器。各组以及这些组中的处理器可以按任何合适的方式排序并且不是本发明的限制。
在框330,在第一次执行时,考虑第一设备,并且在框340,在第一次执行时,考虑将要分配给该设备的第一消息。在框350,在第一次执行时,将该第一消息定义为将第一组中的第一处理器确定为目标,如计数器变量n和Pi的当前状态所表示的。
为了将消息均匀地分布在各组和各组中的处理器上,框360和370递增计数器变量以使得接下来考虑下一组和该组中的第一处理器。框360和370处的递增计数器使用模算术来完成。模算术使得计数器在达到其最大值时回绕。例如,在框360,计数器Pn跟踪组n中的最近分配的处理器。计数器Pn不应等于或超过指示组n中的处理器的数量的值Mn。因此,如果框360处的递增操作将使得Pn等于值Mn,则Pn的值回到0。同样,框370处的处理作为模递增来执行。在框370处递增的值n表示正在处理的当前组。在所示实施例中,因为存在N组,所以n的值不应等于或超过N。当n的值递增为等于N时,该值回绕并且n被设为0。
如果第一设备还有需要分配给它的消息,则该过程从判定框380分叉到框340,在那里标识下一消息。该消息随后被定义为将该第二组和该组中的第一处理器确定为目标。
为第一设备的消息分配目标的过程将以此方式迭代地继续。对于将要为该第一设备创建的每一个新消息,该过程将在组间移动,在来自最后一组的处理器被指定为消息目标时返回到第一组。在每一组中,目标处理器将轮转并且将在已分配最后一个处理器时返回到组中的第一处理器。
该过程可继续直到已经为该第一设备定义了足够的消息。对于每一个剩余设备,然后从框330重复该过程(框390)。处理可以在任何合适的时刻循环返回到框330。例如,过程300可以继续循环返回到框330直到已经处理了在计算机启动时检测到的所有设备。如果在某一稍后时刻检测到新设备,则过程300可以继续框330处的处理。通过在框330处继续,该过程可以在不在框320处重新初始化计数器的情况下继续。以此方式,将消息分布在各处理器组上的迭代过程甚至对于在初始启动之后发现的设备也可继续。这一能力例如可用于配置有“即插即用”体系结构的计算机。即插即用体系结构可允许计算机检测到新添加的设备。然而,不管设备是如何发现的,过程300都可用于高效地将目标分配给每一个设备所使用的消息。
作为图3的实施例的一特定示例,过程300中的每一组中的处理器可适用于图1的计算机系统100。在这样做时,芯片1201、1202、1203可构成感兴趣的N=3组。消息1421、1422和1423可被定义为分别将处理器1221、1241和1261确定为目标。消息1441和1442可被定义为分别将处理器1222和1242确定为目标。并且,消息1461、1462和1463将被定义为分别将处理器1262、1223和1243确定为目标。以此方式,实现了这些消息在各组以及这些组中的处理器上的平衡分布。
一旦已经定义了消息,这些消息就可用作计算机中的正在进行的处理的一部分。图4示出了可使用已定义的消息的过程的一个实施例。即,根据本发明的各实施例,过程400展示处理器可以在为设备分配操作时向该设备建议消息。具体而言,在框410,处理器选择为请求服务的设备。这一请求可以是从正在执行的应用程序或其他软件接收到的任何合适的请求(诸如对I/O操作的请求)。
然而,不管请求是如何发起的,响应该请求的处理器可标识执行在完成该请求时使用的操作的设备。作为一示例,处理来自盘驱动器的信息请求的处理器可标识盘驱动器需要执行读操作以使得该处理器能够完成该请求。在该示例中,在框410处选择的设备可以是盘驱动器。
不管该设备是如何为框410处所标识的请求服务的,该过程继续至框420。处理器确定什么中断消息对所选设备可用(框420)。处理器标识为预期完成中断服务的高效处理器(框430)。这一高效处理器可以按任何合适的方式来标识并且可以取决于将要由该设备执行的操作的特性。例如,基于在框410处接收到的请求的特性,处理器可确定它将利用因对该请求的完成处理而变得可用的数据。在这种情况下,该处理器可将其自身选为最高效的处理器。在其他情况下,处理器可标识作为完成处理的结果,数据将被传递至不同的处理器。在这种情况下,将接收该数据的处理器可被标识为执行完成处理的最高效的处理器。然而,用于标识最高效的处理器的特定准则不是本发明的限制。
如果对设备可用的中断消息的列表(如在框420中所确定的)包括将所标识的高效处理器确定为目标的中断消息,则该过程从判定框440分叉到框460。在框460,向设备发送当在完成所请求的操作后发送其服务完成中断时使用将所标识的处理器确定为目标的消息的建议。关于设备应使用哪一个消息来告知它已完成分配到的操作的建议对于本发明并非关键。所建议的消息可以作为将操作分配给设备的一部分或者以任何其他合适的方式来发送。
另一方面,如果高效处理器未被在框420中标识的可用消息中的任一个确定为目标,则该过程从判定框440分叉到框450。在框450可标识下一最接近的处理器。下一最接近的处理器能够以任何合适的方式来标识。在所示实施例中,使用具有与该分组中的其他处理器的接近物理邻近度和/或具有便于在分组的处理器之间进行高效通信的邻近度的处理器的基于邻近度的分组来标识处理器的相对接近度。
不管在框450处如何标识下一最接近的处理器,该过程循环返回至判定框440。在判定框440,再次检查所标识的处理器是否是要处理操作的设备的消息的目标。如果所标识的处理器不是消息的目标,则该过程再次循环返回至框450,在那里标识下一最接近的处理器。该过程可以按此方式继续直至标识到作为对要执行操作的设备可用的消息的目标的处理器。一旦发现消息具有匹配的目标处理器,则将该消息选为处理器将建议所选设备应当用来发送其服务完成中断的消息(框460)。
发明人理解,由于确保在基于邻近度的处理器组上取得平衡并且进一步在各组中的处理器上取得平衡的消息分布的对消息的初始定义和到设备的分配(诸如图3所示的实施例),与现有技术相比,过程400很有可能提高将操作分配给设备的效率。
至此描述了本发明的至少一个实施例的若干方面,可以理解,本领域的技术人员可容易地想到各种更改、修改和改进。
这样的更改、修改和改进旨在是本发明的一部分,且旨在处于本发明的精神和范围内。因此,上述描述和附图仅用作示例。
可以用多种方式中的任一种来实现本发明的上述实施例。例如,可使用硬件、软件或其组合来实现各实施例。当使用软件实现时,该软件代码可在无论是在单个计算机中提供的还是在多个计算机之间分布的任何合适的处理器或处理器集合上执行。
此外,应当理解,计算机可以用多种形式中的任一种来具体化,如机架式计算机、台式计算机、膝上型计算机、或平板计算机。另外,计算机可以具体化在通常不被认为是计算机但具有合适的处理能力的设备中,包括个人数字助理(PDA)、智能电话、或任何其他合适的便携式或固定电子设备。
同样,计算机可以具有一个或多个输入和输出设备。这些设备主要可被用来呈现用户界面。可被用来提供用户界面的输出设备的示例包括用于可视地呈现输出的打印机或显示屏和用于可听地呈现输出的扬声器或其他声音生成设备。可被用于用户界面的输入设备的示例包括键盘和诸如鼠标、触摸板和数字化输入板等定点设备。作为另一示例,计算机可以通过语音识别或以其他可听格式来接收输入信息。
这些计算机可以通过任何合适形式的一个或多个网络来互连,包括作为局域网或广域网,如企业网络或因特网。这些网络可以基于任何合适的技术并可以根据任何合适的协议来操作,并且可以包括无线网络、有线网络或光纤网络。
而且,此处略述的各种方法或过程可被编码为可在采用各种操作系统或平台中任何一种的一个或多个处理器上执行的软件。此外,这样的软件可使用多种合适的程序设计语言和/或程序设计或脚本工具中的任何一种来编写,而且它们还可被编译为可执行机器语言代码或在框架或虚拟机上执行的中间代码。
就此,本发明可被具体化为用一个或多个程序编码的一个或多个计算机可读介质(例如,计算机存储器、一个或多个软盘、紧致盘、光盘、磁带、闪存、现场可编程门阵列或其他半导体器件中的电路配置、或其他有形计算机存储介质),当这些程序在一个或多个计算机或其他处理器上执行时,它们执行实现本发明的上述各个实施例的方法。这一个或多个计算机可读介质可以是便携的,使得其上存储的一个或多个程序可被加载到一个或多个不同的计算机或其他处理器上以便实现本发明上述的各个方面。
此处以一般的意义使用术语“程序”或“软件”来指可被用来对计算机或其他处理器编程以实现本发明上述的各个方面的任何类型的计算机代码或计算机可执行指令集。另外,应当理解,根据本实施例的一个方面,当被执行时实现本发明的方法的一个或多个计算机程序不必驻留在单个计算机或处理器上,而是可以按模块化的方式分布在多个不同的计算机或处理器之间以实现本发明的各方面。
计算机可执行指令可以具有可由一个或多个计算机或其他设备执行的各种形式,诸如程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,在各实施例中,程序模块的功能可以视需要组合或分散。
而且,数据结构能以任何合适的形式存储在计算机可读介质上。为简化说明,数据结构可被示为具有通过该数据结构中的位置而相关的字段。这些关系同样可以通过对各字段的存储分配传达各字段之间的关系的计算机可读介质中的位置来得到。然而,可以使用任何合适的机制来在数据结构的各字段中的信息之间建立关系,包括通过使用指针、标签、或在数据元素之间建立关系的其他机制。
本发明的各个方面可单独、组合或以未在前述实施例中具体讨论的各种安排来使用,从而并不将其应用限于前述描述中所述或附图中所示的组件的细节和安排。例如,可使用任何方式将一个实施例中描述的各方面与其他实施例中描述的各方面组合。
同样,本发明可被具体化为方法,其示例已经提供。作为该方法的一部分所执行的动作可以按任何合适的方式来排序。因此,可以构建各个实施例,其中各动作以与所示的次序所不同的次序执行,不同的次序可包括同时执行某些动作,即使这些动作在各说明性实施例中被示为顺序动作。
在权利要求书中使用诸如“第一”、“第二”、“第三”等序数词来修饰权利要求元素本身并不意味着一个权利要求元素较之另一个权利要求元素的优先级、先后次序或顺序、或者方法的各动作执行的时间顺序,而仅用作将具有某一名字的一个权利要求元素与(若不是使用序数词则)具有同一名字的另一元素区分开的标签以区分各权利要求元素。
同样,此处所使用的短语和术语是出于描述的目的而不应被认为是限制。此处对“包括”、“包含”、或“具有”、“含有”、“涉及”及其变型的使用旨在包括其后所列的项目及其等效物以及其他项目。

Claims (15)

1.一种操作计算机(100)的方法,所述计算机包括多个处理器(122、124、126)和适于发出中断的多个设备(140),每一个中断由所述多个处理器中的一个处理器来服务,所述处理器基于邻近度来配置在多个组中,并且所述方法为所述多个设备中的每一个建立消息,每一个消息供在中断所述多个处理器中的一个处理器时使用,所述方法包括:
为所述多个设备中的每一个创建多个消息(350),所述创建包括将目标处理器选为所述多个消息中的每一个的目标处理器,以便最大化所述多个组中被为所述多个设备中的每一个设备创建的消息确定为目标的组的数量并且最小化将所述多个组中的每一组确定为目标的消息的数量(300)。
2.如权利要求1所述的方法,其特征在于,还包括:
将为所述多个设备中的每一个创建的多个消息(142、144、146)存储在该设备中。
3.如权利要求1所述的方法,其特征在于,所述创建还包括:
将目标处理器选为所述多个组中的每一个中的目标处理器以最小化将所述多个处理器中的每一个处理器确定为目标的消息的数量(300)。
4.如权利要求1所述的方法,其特征在于,创建所述多个消息包括:
对于每一个设备,迭代地(330、340)将目标处理器分配给对于该设备的多个消息中的每一个,所述分配包括对于每一次连续迭代分配不同组中的处理器。
5.如权利要求4所述的方法,其特征在于:
所述各组处理器是定序的;并且
对于每一个设备,迭代地将目标处理器分配给所述多个消息中的每一个包括在连续迭代中根据所述各组的次序来分配连续组中的目标处理器(350)。
6.如权利要求5所述的方法,其特征在于:
所述设备是定序的;并且
对于所述次序中的第一设备后的每一个设备,迭代地将目标处理器分配给消息包括对于第一迭代分配在所述组次序中在如下的处理器组之后的组中的目标处理器:该处理器组在对于在设备次序中在该设备之前的设备的最近的先前迭代中被指定为目标处理器。
7.如权利要求6所述的方法,其特征在于:
所述处理器在每一组中是定序的;并且
将目标处理器分配给消息包括对于分配来自一组的处理器的第一动作,分配所述次序中的第一处理器,并且对于所述第一处理器之后的每一个分配动作,分配该组中最近分配的处理器之后的处理器。
8.如权利要求1所述的方法,其特征在于,还包括发现所述多个设备并且轮询每一个所发现的设备以确定所述设备可存储的消息数量。
9.如权利要求1所述的方法,其特征在于:
基于邻近度的组本质上包括具有与该分组中的其他处理器的接近物理邻近度,和/或具有便于在分组的处理器之间进行高效通信的邻近度的处理器。
10.一种计算机,包括:
多个处理器(122、124、126),所述处理器基于邻近度来配置在多个组中,所述组具有次序并且每一组中的处理器具有次序;
多个设备(140),每一个设备适于发出中断(230),每一个中断由所述多个处理器中的一个处理器来服务;
将所述多个设备和所述多个处理器互连的总线(130);以及
存储计算机可执行指令的计算机存储介质,所述指令在被执行时执行一种为所述多个设备中的每一个建立消息的方法,每一个消息被格式化以便通过所述总线传输并且每一个消息供在中断所述多个处理器中的一个处理器时使用,所述方法(300)包括:
对于多个设备中的每一个,将目标处理器分配给消息,所述分配包
括对于每一个消息,从基于所述组次序来选择的组中选择目标处理器,选
自每一组中的处理器基于所选组中的处理器的次序来选择。
11.如权利要求10所述的计算机系统,其特征在于,由所述计算机可执行指令执行的方法还包括:
在分配每一个目标处理器时,更新处理器组次序中的位置(370)以及所述组中的处理器次序中的位置(360)的记录。
12.如权利要求10所述的计算机系统,其特征在于,所述分配包括:
在将目标处理器分配给第二设备中的消息之前将目标处理器分配给第一设备的消息。
13.如权利要求12所述的计算机系统,其特征在于,所述分配包括:
在分配来自所述多个组中的任一个的第二目标处理器之前分配来自所述多个组中的每一个的一个目标处理器。
14.如权利要求10所述的计算机系统,其特征在于,所述多个处理器组中的至少一个包括物理封装中的核。
15.如权利要求10所述的计算机系统,其特征在于,所述多个处理器组中的至少一个包括在相同的物理处理器上执行的多个虚拟处理器。
CN2008801210669A 2007-12-17 2008-11-25 高效中断消息定义 Expired - Fee Related CN101896896B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/002,442 2007-12-17
US12/002,442 US7783811B2 (en) 2007-12-17 2007-12-17 Efficient interrupt message definition
PCT/US2008/084622 WO2009079172A1 (en) 2007-12-17 2008-11-25 Efficient interrupt message definition

Publications (2)

Publication Number Publication Date
CN101896896A true CN101896896A (zh) 2010-11-24
CN101896896B CN101896896B (zh) 2013-08-21

Family

ID=40754769

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008801210669A Expired - Fee Related CN101896896B (zh) 2007-12-17 2008-11-25 高效中断消息定义

Country Status (5)

Country Link
US (1) US7783811B2 (zh)
EP (1) EP2225650B1 (zh)
CN (1) CN101896896B (zh)
AT (1) ATE542180T1 (zh)
WO (1) WO2009079172A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105900063A (zh) * 2014-06-26 2016-08-24 郑基雄 多处理环境中的调度方法和装置
CN112602072A (zh) * 2018-08-24 2021-04-02 超威半导体公司 探测中断传递

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN101546276B (zh) * 2008-03-26 2012-12-19 国际商业机器公司 多核环境下实现中断调度的方法及多核处理器
US8024504B2 (en) * 2008-06-26 2011-09-20 Microsoft Corporation Processor interrupt determination
US20090327556A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Processor Interrupt Selection
US8527988B1 (en) * 2009-07-31 2013-09-03 Hewlett-Packard Development Company, L.P. Proximity mapping of virtual-machine threads to processors
US8473723B2 (en) * 2009-12-10 2013-06-25 International Business Machines Corporation Computer program product for managing processing resources
US8869171B2 (en) * 2010-12-23 2014-10-21 Mellanox Technologies Ltd. Low-latency communications
US10114662B2 (en) * 2013-02-26 2018-10-30 Red Hat Israel, Ltd. Updating processor topology information for virtual machines
US10061622B2 (en) 2013-02-26 2018-08-28 Red Hat Israel, Ltd. Updating memory topology information for virtual machines
GB2538754B (en) 2015-05-27 2018-08-29 Displaylink Uk Ltd Single-chip multi-processor communication

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0145925B1 (ko) 1995-01-27 1998-09-15 박성규 컴퓨터 분야의 인터럽트 제어 장치
US6253275B1 (en) 1998-11-25 2001-06-26 Advanced Micro Devices, Inc. Interrupt gating method for PCI bridges
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
US6738847B1 (en) * 2000-11-10 2004-05-18 Unisys Corporation Method for assigning a multiplicity of interrupt vectors in a symmetric multi-processor computing environment
US7328294B2 (en) * 2001-12-03 2008-02-05 Sun Microsystems, Inc. Methods and apparatus for distributing interrupts
US7529875B2 (en) * 2003-08-20 2009-05-05 International Business Machines Corporation Assigning interrupts for input/output (I/O) devices among nodes of a non-uniform memory access (NUMA) system
US7117285B2 (en) * 2003-08-29 2006-10-03 Sun Microsystems, Inc. Method and system for efficiently directing interrupts
US7363407B2 (en) 2003-09-29 2008-04-22 Microsoft Corporation Concurrent arbitration of multidimensional requests for interrupt resources
US7222203B2 (en) 2003-12-08 2007-05-22 Intel Corporation Interrupt redirection for virtual partitioning
US7197588B2 (en) 2004-03-31 2007-03-27 Intel Corporation Interrupt scheme for an Input/Output device
US7496706B2 (en) 2004-06-30 2009-02-24 Intel Corporation Message signaled interrupt redirection table
DE102004042170B4 (de) 2004-08-31 2009-02-19 Advanced Micro Devices, Inc., Sunnyvale Nachrichtenbasierte Interrupttabelle
US20060112208A1 (en) * 2004-11-22 2006-05-25 International Business Machines Corporation Interrupt thresholding for SMT and multi processor systems
US20060259733A1 (en) * 2005-05-13 2006-11-16 Sony Computer Entertainment Inc. Methods and apparatus for resource management in a logically partitioned processing environment
US20060294277A1 (en) 2005-06-24 2006-12-28 Tetrick Raymond S Message signaled interrupt redirection
US20070005742A1 (en) 2005-06-30 2007-01-04 Avigdor Eldar Efficient network communications via directed processor interrupts
TW200708969A (en) 2005-08-24 2007-03-01 Tyan Computer Corp ID allocating method for advanced programmable interrupt controller
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
US7769938B2 (en) * 2007-09-06 2010-08-03 Intel Corporation Processor selection for an interrupt identifying a processor cluster
US7962679B2 (en) * 2007-09-28 2011-06-14 Intel Corporation Interrupt balancing for multi-core and power

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105900063A (zh) * 2014-06-26 2016-08-24 郑基雄 多处理环境中的调度方法和装置
CN105900063B (zh) * 2014-06-26 2021-07-06 顾播网株式会社 多处理环境中的调度方法和装置
CN112602072A (zh) * 2018-08-24 2021-04-02 超威半导体公司 探测中断传递

Also Published As

Publication number Publication date
EP2225650A4 (en) 2011-01-12
EP2225650A1 (en) 2010-09-08
CN101896896B (zh) 2013-08-21
EP2225650B1 (en) 2012-01-18
US7783811B2 (en) 2010-08-24
ATE542180T1 (de) 2012-02-15
US20090157935A1 (en) 2009-06-18
WO2009079172A1 (en) 2009-06-25

Similar Documents

Publication Publication Date Title
CN101896896B (zh) 高效中断消息定义
CN105453044B (zh) 用于分布式处理任务部分指配的技术
US7500067B2 (en) System and method for allocating memory to input-output devices in a multiprocessor computer system
CN101268445B (zh) 用于向多核环境中的应用程序提供实时线程服务的方法、装置
US9798682B2 (en) Completion notification for a storage device
US10108458B2 (en) System and method for scheduling jobs in distributed datacenters
CN101615106B (zh) 用于虚拟化sas存储适配器的方法和系统
CN102855216B (zh) 改进多处理器计算机系统的性能
CN100570534C (zh) 多处理器的电源管理
CN102473106A (zh) 虚拟环境中的资源分配
US9063918B2 (en) Determining a virtual interrupt source number from a physical interrupt source number
US9767052B2 (en) Information processing apparatus, information processing method, and storage medium
Hoefler et al. An overview of process mapping techniques and algorithms in high-performance computing
US20060020701A1 (en) Thread transfer between processors
Georgiou et al. Topology-aware job mapping
US20200341793A1 (en) Virtual Machine Deployment System
US7426622B2 (en) Rapid locality selection for efficient memory allocation
US20180103089A1 (en) Methods for determining processing nodes for executed tasks and apparatuses using the same
WO2023287563A1 (en) Apparatus, articles of manufacture, and methods for managing processing units
CN115129466A (zh) 云计算资源分层调度方法、系统、设备及介质
CN103631648A (zh) 一种任务处理方法及系统
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
CN112348298A (zh) 设计师管理方法、装置、电子终端、及存储介质
CN114281516A (zh) 一种基于numa属性的资源分配方法及装置
US20230132345A1 (en) Numa node virtual machine provisioning system

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150423

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150423

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130821

Termination date: 20191125