專(zhuān)利名稱(chēng):高效中斷消息定義的制作方法
高效中斷消息定義背景計(jì)算機(jī)系統(tǒng)包括一個(gè)或多個(gè)處理器,每一個(gè)處理器都執(zhí)行一機(jī)器指令集。處理器 可以是用半導(dǎo)體芯片實(shí)現(xiàn)的物理組件,或者可以是虛擬的、通過(guò)對(duì)一個(gè)或多個(gè)物理處理器 的操作來(lái)實(shí)現(xiàn)。由處理器執(zhí)行的某些指令可以完全在該處理器中執(zhí)行。但是,其他指令可能需要 處理器和計(jì)算機(jī)系統(tǒng)的其他組件之間的交互。通常,計(jì)算機(jī)系統(tǒng)將包含處理器將在計(jì)算機(jī) 操作時(shí)與其交互的單獨(dú)設(shè)備。例如,存儲(chǔ)器操作可能需要與硬盤(pán)交互而網(wǎng)絡(luò)通信操作可能 需要與網(wǎng)絡(luò)接口卡交互。為了方便這些交互,計(jì)算機(jī)系統(tǒng)可具有支持處理器和其他設(shè)備之間的通信的總 線(xiàn)。一種常見(jiàn)類(lèi)型的總線(xiàn)被稱(chēng)為PCI(外圍部件互連)總線(xiàn)。除了允許交換數(shù)據(jù)之外,某些 總線(xiàn)還支持可告知中斷的消息。設(shè)備可使用這一消息來(lái)向處理器告知它已完成該處理器所 請(qǐng)求的操作或者它已經(jīng)以其他方式執(zhí)行某一動(dòng)作或檢測(cè)到需要來(lái)自處理器的服務(wù)的情況。 以此方式,處理器可將一操作分配給設(shè)備并在該設(shè)備執(zhí)行該操作的同時(shí)執(zhí)行其他功能。一旦該設(shè)備完成該操作,處理器就通過(guò)中斷得到通知并且可執(zhí)行對(duì)該操作的完成 處理。完成處理的特性可基于設(shè)備或所執(zhí)行的操作而變化。然而,完成處理的示例包括從 設(shè)備讀取數(shù)據(jù)或者將檢索到的數(shù)據(jù)傳遞給請(qǐng)求該數(shù)據(jù)的應(yīng)用程序。根據(jù)PCI、PCI-X、或PCI Express標(biāo)準(zhǔn)來(lái)實(shí)現(xiàn)的總線(xiàn)支持消息告知中斷(MSI)和 消息告知中斷擴(kuò)展(MSI-X)協(xié)議。使用這些協(xié)議的設(shè)備可通過(guò)使用PCI存儲(chǔ)器寫(xiě)事務(wù)來(lái)向 系統(tǒng)指定地址寫(xiě)入系統(tǒng)指定數(shù)據(jù)值來(lái)請(qǐng)求服務(wù)。系統(tǒng)軟件在設(shè)備配置期間初始化消息地址 和消息數(shù)據(jù)。消息地址編碼關(guān)于目標(biāo)處理器和傳遞模式的信息。設(shè)備執(zhí)行對(duì)于預(yù)先配置的 MSI消息的存儲(chǔ)器寫(xiě)入以中斷處理器。發(fā)明概述可通過(guò)適當(dāng)?shù)囟x和選擇供設(shè)備用來(lái)中斷多處理器系統(tǒng)中的處理器的消息來(lái)改 進(jìn)中斷服務(wù)和總體計(jì)算機(jī)系統(tǒng)操作。這些消息可使用處理器組基于每一組中的處理器的鄰 近度來(lái)定義。各組可以是不同的處理器集合或者可重疊或者可被包含在其他組中。用于中 斷服務(wù)的合乎需要的方法可通過(guò)為每一個(gè)設(shè)備定義消息以使得該設(shè)備具有將分布在各處 理器組中的處理器確定為目標(biāo)的消息來(lái)實(shí)現(xiàn)。如果最高效的處理器不是設(shè)備的消息的目 標(biāo),則可選擇將與最高效處理器相同的組中的處理器或者與包含最高效處理器的組的接近 鄰近度內(nèi)的組中的處理器確定為目標(biāo)的消息。通過(guò)用分布在基于鄰近度的各組中的處理器 來(lái)定義消息,增加設(shè)備將具有將最高效的處理器或與該最高效的處理器的接近鄰近度內(nèi)的 處理器確定為目標(biāo)的消息的可能性。對(duì)消息的適當(dāng)定義還可提高計(jì)算機(jī)系統(tǒng)操作的總效率。通過(guò)定義包含分布在每一 組中的處理器中的目標(biāo)處理器的消息,更高效地分布處理負(fù)載。因此,在一方面,本發(fā)明涉及一種操作計(jì)算機(jī)以便為設(shè)備定義供在發(fā)出中斷時(shí)使 用的消息的方法。該方法可導(dǎo)致最大化被為多個(gè)設(shè)備中的每一個(gè)設(shè)備創(chuàng)建的消息確定為目 標(biāo)的多個(gè)基于鄰近度的處理器組中的組數(shù)。該方法可最小化將每一組確定為目標(biāo)的消息數(shù)。在另一方面,本發(fā)明涉及具有通過(guò)總線(xiàn)耦合到多個(gè)設(shè)備的多個(gè)處理器的計(jì)算機(jī)。 該計(jì)算機(jī)可被編程為基于處理器組和組中的處理器的排序來(lái)定義總線(xiàn)消息。使用該排序, 可以實(shí)現(xiàn)消息在處理器和處理器組上的所需分布。在又一方面,本發(fā)明涉及一種方法,該方法操作計(jì)算機(jī)以將消息存儲(chǔ)在每一個(gè)設(shè) 備中以供在中斷目標(biāo)處理器時(shí)使用,向設(shè)備發(fā)送請(qǐng)求以執(zhí)行功能,并且建議設(shè)備應(yīng)在完成 該功能后使用哪一個(gè)中斷消息。所建議的消息通過(guò)標(biāo)識(shí)為特定設(shè)備中斷服務(wù)的高效處理器 并且然后將其選為基于與該高效處理器的鄰近度來(lái)將處理器確定為目標(biāo)的所建議的消息 一來(lái)選擇。以上概述是對(duì)由所附權(quán)利要求定義的本發(fā)明的非限定性的概述。附圖簡(jiǎn)述附圖不旨在按比例繪制。在附圖中,各個(gè)附圖中示出的每一完全相同或近乎完全 相同的組件由同樣的標(biāo)號(hào)來(lái)表示。出于簡(jiǎn)明的目的,不是每個(gè)組件在每張附圖中均被標(biāo)號(hào)。 在附圖中
圖1是示出現(xiàn)有技術(shù)多處理器計(jì)算機(jī)系統(tǒng)的高級(jí)概覽的略圖;圖2是示出現(xiàn)有技術(shù)多處理器計(jì)算機(jī)系統(tǒng)中的輸入/輸出(I/O)操作的處理的框 圖;圖3是根據(jù)本發(fā)明的各實(shí)施例的定義中斷消息并將其分配給設(shè)備的過(guò)程的流程 圖;以及圖4是根據(jù)本發(fā)明的各實(shí)施例的將操作分配給設(shè)備的過(guò)程的流程圖。詳細(xì)描述發(fā)明人理解對(duì)于多處理器計(jì)算機(jī)中的某些中斷,諸如告知分配給設(shè)備的輸入/輸 出(I/O)操作完成的那些中斷,處理該中斷的效率可隨處理器變化。此外,每一個(gè)處理器執(zhí) 行操作的效率可以是基于鄰近度的。因此,在本發(fā)明的各實(shí)施例中,可出于定義中斷消息的 目的基于鄰近度來(lái)對(duì)處理器分組?;卩徑鹊姆纸M可包括具有與該分組中的其他處理器 的接近物理鄰近度和/或具有便于在分組的處理器之間進(jìn)行高效通信的鄰近度的處理器。例如,在I/O操作之后執(zhí)行的完成處理中,發(fā)起I/O操作的處理器能夠更高效地訪(fǎng) 問(wèn)完成該處理所必需的信息或指令。這種情況可能由于發(fā)起操作的處理器可具有存儲(chǔ)在該 處理器可優(yōu)先訪(fǎng)問(wèn)的本地高速緩存或其他存儲(chǔ)器位置中的在完成I/O操作或后續(xù)相關(guān)處 理時(shí)使用的信息或指令而出現(xiàn)。結(jié)果,該處理器能夠比其他處理器更高效地執(zhí)行完成該操 作的處理或相關(guān)處理。對(duì)于執(zhí)行相同操作的另一處理器,在發(fā)起I/O操作的處理器向執(zhí)行完成處理的處 理器提供信息時(shí),可能存在與處理器間通信相關(guān)聯(lián)的效率損失。該效率損失對(duì)于在與發(fā)起 中斷的處理器相同的處理器組中的其他處理器而言可能較少,因?yàn)閷?duì)于基于鄰近度的各組 中的處理器的處理器間通信可以比不同組中的處理器之間的處理期間通信更高效。此外, 該效率損失可基于各組之間的鄰近度。作為一示例,被物理地實(shí)現(xiàn)為同一半導(dǎo)體芯片中的 核的處理器可以使用片上電路來(lái)通信,這很有可能比芯片間通信電路更快。因此,單個(gè)半導(dǎo) 體芯片上的核可形成基于鄰近度的處理器組。同樣,安裝在同一印刷電路板(PCB)上的芯 片中的處理器可以比不同PCB上的跨總線(xiàn)通信的處理器更高效地通信。
基于鄰近度的效率差異并非限于物理處理器的現(xiàn)象。在具有虛擬處理器的系統(tǒng) 中,主存在同一物理處理器上的虛擬處理器可以比主存在不同物理處理器上的虛擬處理器 更高效地執(zhí)行處理期間交互。因此,多處理器計(jì)算機(jī)系統(tǒng)中的處理器可形成組,并且某些組 中的處理器可以比其他組中的處理器更高效地執(zhí)行特定操作。發(fā)明人理解基于鄰近度的分組可用于提高基于總線(xiàn)消息來(lái)告知中斷的計(jì)算機(jī)中 的效率,如發(fā)生在通過(guò)PCI總線(xiàn)根據(jù)MSI-X協(xié)議來(lái)操作的計(jì)算機(jī)中。這一系統(tǒng)中的發(fā)出中 斷的每一個(gè)設(shè)備都可具有有限數(shù)量的可用消息并因此在可被中斷確定為目標(biāo)的處理器數(shù) 量方面受限。結(jié)果,設(shè)備可能不具有可用于將用于執(zhí)行中斷所觸發(fā)的處理的最高效的處理 器確定為目標(biāo)的消息。然而,通過(guò)為設(shè)備適當(dāng)?shù)囟x消息,可以增加設(shè)備將具有將與最高效 處理器的接近鄰近度內(nèi)的處理器確定為目標(biāo)的消息的可能性。在以此方式定義消息的情況下,在完成操作后,設(shè)備可使用將高效處理器確定為 目標(biāo)的消息來(lái)向處理器發(fā)出中斷。如果最高效的處理器不在為設(shè)備定義的消息的目標(biāo)處理 器中,則可將來(lái)自與最高效處理器相同的組或者在與包含最高效處理器的組的接近鄰近度 內(nèi)的組中的另一處理器選為目標(biāo)處理器。因此,通過(guò)為設(shè)備適當(dāng)?shù)囟x供使用的消息,減少 了每一中斷的平均處理。發(fā)明人理解將消息均勻地分布在基于鄰近度的處理器組中的處理器上還可有助 于通過(guò)避免使任何特定處理器過(guò)載來(lái)提高計(jì)算效率。例如,如果多個(gè)設(shè)備連接到計(jì)算機(jī), 則不利的(低效的)消息分配可導(dǎo)致各消息同時(shí)將同一處理器確定為目標(biāo)。本發(fā)明減少 了不平衡隊(duì)列將在任一個(gè)處理器處累積的可能性。即使不平衡還沒(méi)嚴(yán)重到導(dǎo)致大型隊(duì)列的 程度,處理器的恒定中斷也可阻止其執(zhí)行其他功能。因此,在某些實(shí)施例中,消息定義還可 將處理負(fù)載均勻地分布在每一組中且整個(gè)計(jì)算機(jī)系統(tǒng)中的所有處理器上。但是在其他系統(tǒng) 中,可通過(guò)將中斷集中在一個(gè)或幾個(gè)處理器中來(lái)提高效率,并且可構(gòu)造將消息集中在一個(gè) 或幾個(gè)處理器上的實(shí)施例。圖1描繪了其中可使用本發(fā)明的各實(shí)施例的計(jì)算機(jī)系統(tǒng)100。系統(tǒng)100包括多 個(gè)物理和虛擬處理器。在圖1的示例中,示出了處理器1221; ...,1224,1241; . . .,1244和 1261; ...,1264。每一個(gè)處理器都可以在一個(gè)或多個(gè)半導(dǎo)體芯片上實(shí)現(xiàn),且每一個(gè)半導(dǎo)體芯 片都支持一個(gè)或多個(gè)處理器。系統(tǒng)100被示為具有半導(dǎo)體芯片UO1UZO2和1203。為簡(jiǎn)明 起見(jiàn)示出了十二個(gè)處理器和三個(gè)半導(dǎo)體芯片,但處理器和半導(dǎo)體芯片的數(shù)量在本發(fā)明中不 受限制并且可以使用任何合適的數(shù)量??梢匀绫绢I(lǐng)域中所已知的那樣實(shí)現(xiàn)每一個(gè)半導(dǎo)體芯片。在圖1的示例中,半導(dǎo)體 芯片12(^和1202是四核半導(dǎo)體芯片,且每一個(gè)核都可用作處理器。半導(dǎo)體芯片1203是單 核芯片。這些半導(dǎo)體芯片可以從諸如英特爾公司等來(lái)源購(gòu)得。圖1示出每一個(gè)處理器不必對(duì)應(yīng)于單獨(dú)的物理電路。這些處理器中的一個(gè)或多個(gè) 可以是虛擬處理器。在圖1的示例中,處理器126” . . 1263被實(shí)現(xiàn)為虛擬處理器。虛擬處理 器126” . . 1263可以使用在計(jì)算機(jī)100的操作系統(tǒng)中執(zhí)行的已知虛擬化軟件來(lái)實(shí)現(xiàn)。然而, 在本發(fā)明的各實(shí)施例中,半導(dǎo)體芯片和物理或虛擬處理器可以按任何合適的方式實(shí)現(xiàn)或者 可從任何合適的來(lái)源獲得。芯片12(^和1202安裝在印刷電路板(PCB)IlO1上,而芯片1203安裝在PCB IlO2 上。盡管示出了兩個(gè)PCB JfiPCB的數(shù)量不是本發(fā)明的限制并且可使用任何合適的數(shù)量。
不同PCB上或計(jì)算機(jī)系統(tǒng)100的不同部分上的組件可通過(guò)一個(gè)或多個(gè)總線(xiàn)來(lái)通 信。處理器可通過(guò)一個(gè)總線(xiàn)通信,而I/O設(shè)備可通過(guò)另一總線(xiàn)通信。在圖1的示例中,為簡(jiǎn) 明起見(jiàn)只示出了單個(gè)總線(xiàn)。在這一實(shí)施例中,芯片120i上的處理器可以使用總線(xiàn)130來(lái)與 芯片1203上的處理器通信。總線(xiàn)130可以是如本領(lǐng)域內(nèi)已知的標(biāo)準(zhǔn)化總線(xiàn)。例如,總線(xiàn)130 可以是PCI總線(xiàn)。然而,總線(xiàn)130的構(gòu)造和協(xié)議對(duì)于本發(fā)明并非關(guān)鍵并且可以在本發(fā)明的 各實(shí)施例中使用任何合適的一個(gè)或多個(gè)總線(xiàn)。在操作中,處理器可執(zhí)行諸如應(yīng)用程序軟件或操作系統(tǒng)軟件等基于計(jì)算機(jī)100的 所需功能來(lái)執(zhí)行功能的軟件。某些功能可涉及單獨(dú)在處理器中執(zhí)行的操作。其他功能可涉 及分配給設(shè)備HO1. . . 1403的操作。圖1中的處理器可以通過(guò)總線(xiàn)130與設(shè)備14(^140^ 1403進(jìn)行通信,包括將操作分配給設(shè)備HO1. . . 1403。作為與一個(gè)或多個(gè)處理器進(jìn)行通信的結(jié)果,每一個(gè)設(shè)備都可處理分配給它的操 作。在本發(fā)明的各實(shí)施例中,設(shè)備可執(zhí)行I/O操作或任何其他合適類(lèi)型的操作。這些設(shè)備 可包括硬盤(pán)、聲音和視頻捕捉卡、網(wǎng)絡(luò)卡、或任何其他合適的設(shè)備。為簡(jiǎn)明起見(jiàn)在系統(tǒng)100 中示出了三個(gè)設(shè)備,但設(shè)備的數(shù)量不是本發(fā)明的限制并且可使用任何合適的數(shù)量。有時(shí),設(shè)備可發(fā)出中斷以便由處理器來(lái)服務(wù)。這些中斷可包括對(duì)處理器執(zhí)行完成 處理器的請(qǐng)求。在所示實(shí)施例中,設(shè)備使用總線(xiàn)消息來(lái)向處理器告知中斷。每一個(gè)設(shè)備都具 有用于向目標(biāo)處理器發(fā)送中斷的固定數(shù)量的可用消息。例如,設(shè)備HO1具有三個(gè)消息142p 1422、1423,這三個(gè)消息可將計(jì)算機(jī)系統(tǒng)100中的任意三個(gè)處理器確定為目標(biāo)。在本發(fā)明的 各實(shí)施例中,這些消息可根據(jù)用于傳送這些消息的總線(xiàn)的合適協(xié)議來(lái)格式化。例如,PCI設(shè) 備可利用根據(jù)MSI-X協(xié)議來(lái)操作的消息。盡管圖1分別將設(shè)備HCVHO2和1403限于三 個(gè)、兩個(gè)和三個(gè)消息,但對(duì)設(shè)備可用的消息數(shù)量不是本發(fā)明的限制并且可使用任何適當(dāng)?shù)?數(shù)量。在操作中,消息142” . . 1423> 144^1442,146!. . . 1463中的每一個(gè)都可由在一個(gè)或 多個(gè)處理器上執(zhí)行的操作系統(tǒng)軟件來(lái)定義。然而,根據(jù)本發(fā)明的各實(shí)施例,消息可以按任何 合適的方式來(lái)定義。在所示示例中,定址每一個(gè)消息以便將計(jì)算機(jī)系統(tǒng)100中的物理或虛 擬處理器中的中斷處理程序確定為目標(biāo)。還格式化消息以便向該中斷處理程序指示該消息 所表示的中斷告知特定設(shè)備已完成分配到的操作。已定義的消息可用作包括將操作HO1. . . 1403分配給設(shè)備的操作計(jì)算機(jī)系統(tǒng)100 的過(guò)程的一部分。例如,圖2是示出現(xiàn)有技術(shù)多處理器計(jì)算機(jī)系統(tǒng)100中的輸入/輸出(I/ 0)操作的發(fā)起和完成的框圖。該I/O操作過(guò)程200包括子過(guò)程210,該子過(guò)程包括處理器 所采取的初始動(dòng)作。即,在框212,處理器從正在執(zhí)行的應(yīng)用程序或其他軟件接收對(duì)I/O操 作的請(qǐng)求。在框214,該處理器將I/O操作分配給特定設(shè)備,并且然后在框216,返回到執(zhí)行 其他任務(wù)。同時(shí),在框220設(shè)備執(zhí)行分配給它的I/O操作。在框230,設(shè)備通過(guò)使用消息來(lái)生 成中斷來(lái)通知計(jì)算機(jī)I/O操作已完成。所發(fā)送的消息可選自為該設(shè)備預(yù)定義的一組消息, 諸如消息142” · · 1423>1441U442U461. · · 1463。接收處理器(不一定是在框210發(fā)起該操 作的同一處理器)然后在框240處理該中斷,由此完成I/O操作。這一完成處理可以是如 本領(lǐng)域內(nèi)所已知的那樣。然而,在本發(fā)明的各實(shí)施例中,可以執(zhí)行任何合適的完成處理。發(fā)明人理解可通過(guò)適當(dāng)?shù)囟x用于告知分配到的操作已完成的消息來(lái)提高將操作分配給設(shè)備的效率。某些處理器可以比其他處理器更高效地為某些中斷服務(wù),并且通過(guò) 定義消息以增加高效處理器是預(yù)定義消息的目標(biāo)的可能性,可提高總效率。處理器之間的 執(zhí)行完成處理的效率變化的一個(gè)原因是在同一芯片中實(shí)現(xiàn)的處理器可使用片上電路來(lái)通 信,該片上電路很有可能比可用于在同一 PCB上的不同芯片上的處理器之間進(jìn)行通信的芯 片間電路更快。相反,通過(guò)連接PCB的總線(xiàn)的處理器間通信很有可能比同一 PCB或同一芯 片上的處理器之間的通信更慢。因?yàn)橥瓿商幚砜赡苄枰幚砥髦g的通信,所以執(zhí)行處理 器間通信的效率可以影響執(zhí)行完成處理的總效率。例如,如果發(fā)起處理器和完成處理器是同一個(gè)處理器或者至少彼此在接近物理鄰 近度內(nèi)以使得處理器間通信是高效的,則可提高執(zhí)行I/O操作的效率。發(fā)起操作的同一處 理器可以有利地訪(fǎng)問(wèn)完成該操作所需的信息和指令。結(jié)果,該處理器可以比其他處理器更 高效地執(zhí)行完成處理?;蛘撸绻嗤陌l(fā)起處理器對(duì)于完成不可用,則分組在發(fā)起處理器 的接近物理鄰近度內(nèi)的處理器可以是比位于該分組之外的處理器更高效的選擇。在本發(fā)明的各實(shí)施例中,處理器可被設(shè)計(jì)成特定的基于鄰近度的組的一部分以使 得所有處理器都具有與它們的組中的其他處理器的接近物理鄰近度,和/或具有便于在分 組的處理器之間進(jìn)行高效通信的鄰近度。各組可包括不同的處理器集合或者可重疊并由此 產(chǎn)生包含相同的一個(gè)或多個(gè)處理器的多個(gè)組。然后可以在建立供諸如設(shè)備HO1. . . 1403等 設(shè)備用來(lái)在告知關(guān)于分配到的操作的完成處理的中斷時(shí)使用的消息時(shí)使用已定義的處理 器組。每一個(gè)設(shè)備的消息集的目標(biāo)處理器可以按增加可高效地執(zhí)行完成處理的處理器是為 該設(shè)備定義的消息的目標(biāo)的可能性的方式來(lái)定義。在如圖1所示的系統(tǒng)中,例如,本發(fā)明的一實(shí)施例可指定位于單個(gè)半導(dǎo)體芯片 12(ν 202或1203上的那些處理器形成基于鄰近度的處理器組。芯片UO1和1202位于印 刷電路板(PCB) IlO1上,而芯片1203位于PCB IlO2上。因?yàn)榘惭b在同一 PCB上的芯片中的 處理器很有可能比不同PCB上的通過(guò)總線(xiàn)通信的處理器更高效地通信,所以本發(fā)明的一實(shí) 施例可將PCB IlO1I的處理器描述為在第一組中,而在PCB IlO2上的那些處理器在第二組 中?;蛘撸粋€(gè)半導(dǎo)體芯片中的核的彼此同它們與單獨(dú)半導(dǎo)體芯片中的核相比在更接近的 鄰近度內(nèi)。在圖1的示例中,核口?”…口^可被認(rèn)為形成第一組。半導(dǎo)體芯片1202中的 核124” . . 1244可被認(rèn)為是第二組。半導(dǎo)體芯片1203中的物理和虛擬處理器可被認(rèn)為是第 三基于鄰近度的組。此外,不存在阻止在本發(fā)明的單個(gè)實(shí)現(xiàn)中使用諸如以上給出的多個(gè)鄰 近組定義。為了促進(jìn)由于利用這些基于鄰近度的處理器分組而引發(fā)的效率提升,圖3所示的 本發(fā)明的一示例實(shí)施例使用定義中斷消息并將其分配給設(shè)備以增加設(shè)備將具有可將高效 處理器確定為目標(biāo)的可用消息的可能性的過(guò)程。例如,在圖1中,設(shè)備HO1具有三個(gè)消息 HZrHLHZ3,這三個(gè)消息可將計(jì)算機(jī)系統(tǒng)100中的任意三個(gè)處理器確定為目標(biāo)。在現(xiàn) 有技術(shù)系統(tǒng)中,可能將這些消息的目標(biāo)確定為單個(gè)處理器或者同一芯片上的各個(gè)處理器。 相反,圖3中的實(shí)施例所示的過(guò)程將確保將這些消息均勻地分布在基于鄰近度的處理器組 上,且每一個(gè)消息都將不同芯片上的處理器確定為目標(biāo)。作為一特定示例,設(shè)備HO1能夠存儲(chǔ)的這三個(gè)消息142” . . 1423中的每一個(gè)都可 將通過(guò)使用不同的半導(dǎo)體芯片120” . . 1203來(lái)創(chuàng)建的各個(gè)基于鄰近度的組中的不同組中的 處理器確定為目標(biāo)。作為一特定示例,消息142i可將核122i確定為目標(biāo),消息1422可將核12^確定為目標(biāo),而消息1423可將虛擬處理器126i確定為目標(biāo)。可供設(shè)備1403使用的三個(gè)消息146^146^1463中的每一個(gè)都同樣可將存在于計(jì)算 機(jī)系統(tǒng)100(圖1)中的三個(gè)基于鄰近度的組中的每一組中的處理器確定為目標(biāo)。設(shè)備1403 中的消息可將被設(shè)備HO1中的消息確定為目標(biāo)的相同的三個(gè)處理器確定為目標(biāo)。然而,發(fā) 明人理解,如果消息目標(biāo)分布在所有處理器上以使得沒(méi)有處理器被頻繁地中斷而導(dǎo)致該處 理器不高效地執(zhí)行其他操作,則也可提高計(jì)算機(jī)系統(tǒng)100的操作效率。因此,在某些實(shí)施例 中,為設(shè)備1403創(chuàng)建的消息146” · · 1463將與為設(shè)備HO1創(chuàng)建的消息142” · · 1423不同的處 理器確定為目標(biāo)可以是合乎需要的。例如,消息142i可將核122i確定為目標(biāo),而消息Hei 可將核1223確定為目標(biāo)。消息1422可將核121確定為目標(biāo),而消息1462可將核1242確 定為目標(biāo)。同樣,消息1423可將虛擬處理器126i確定為目標(biāo),而消息1463可將虛擬處理器 1263確定為目標(biāo)。這種將消息分布在處理器上的模式可以在為所有設(shè)備分配消息時(shí)使用。 例如,設(shè)備1402的消息144!可將核1222確定為目標(biāo),而消息1442可將虛擬處理器1262確 定為目標(biāo)。以此方式,為任一個(gè)設(shè)備定義的消息可以分布在基于鄰近度的組上,并且為所有 設(shè)備共同定義的消息可以分布在系統(tǒng)100中的處理器上。在其他實(shí)施例中,對(duì)于將給定的 基于鄰近度的組中的處理器確定為目標(biāo)的所有設(shè)備而言,使其消息去往同一處理器或該組 中的總處理器集的子集可以更高效。圖3示出了本發(fā)明的某些實(shí)施例中的可以實(shí)現(xiàn)這一分布的過(guò)程。圖3的過(guò)程可由 計(jì)算機(jī)的操作系統(tǒng)或任何其他合適的組件來(lái)執(zhí)行。該過(guò)程可以在計(jì)算機(jī)開(kāi)始操作時(shí)或在操 作期間檢測(cè)到設(shè)備時(shí)執(zhí)行。具體而言,過(guò)程300可開(kāi)始于框310,在那里計(jì)算機(jī)系統(tǒng)100發(fā) 現(xiàn)什么設(shè)備連接到它???16處的處理建立系統(tǒng)中的基于鄰近度的處理器分組的最大數(shù)量N以及組i中 的處理器的最大數(shù)量Mi,其中i屬于集合{1,2. . . N}。處理器組可基于其上執(zhí)行過(guò)程300的 計(jì)算機(jī)系統(tǒng)100的體系結(jié)構(gòu)來(lái)定義??梢允褂萌魏魏线m的鄰近度定義來(lái)定義組。例如,在 圖1的實(shí)施例中,處理器基于其上實(shí)現(xiàn)這些處理器的特定半導(dǎo)體芯片來(lái)被分成各個(gè)組。在 其他實(shí)施例中,組可基于其中物理地實(shí)現(xiàn)處理器的特定PCB來(lái)定義。在其他情況下,可使用 處理器間通信所需的時(shí)間的度量來(lái)定義相同的基于鄰近度的組中的處理器。在其他實(shí)施例 中,可使用這些因素的組合來(lái)定義組,或者組可以嵌套以形成分層結(jié)構(gòu)。例如,表示物理芯 片的插槽可具有多個(gè)核,這些核中的每一個(gè)都可進(jìn)而具有多個(gè)虛擬處理器。這些處理器可 以在任一層分組或嵌套。雖然圖3的實(shí)施例只在各組的單個(gè)層上操作,但其他實(shí)施例可迭 代通過(guò)該分層結(jié)構(gòu)的每一層以選擇要分配的消息目標(biāo)。不管組是如何定義的,框316處的 處理確定組數(shù)以及每一組中的處理器的數(shù)量。圖3的過(guò)程被示為是迭代過(guò)程。該過(guò)程在將為其定義消息的每一個(gè)設(shè)備上迭代并 且在將為每一個(gè)設(shè)備定義的每一個(gè)消息上迭代。在所示實(shí)施例中,在各迭代之間維護(hù)狀態(tài) 信息。在圖3的示例中,在計(jì)數(shù)器中維護(hù)狀態(tài)信息,但可使用任何合適的機(jī)制來(lái)維護(hù)狀態(tài)信 息。因此,過(guò)程300的開(kāi)始部分涉及初始化維護(hù)狀態(tài)信息的計(jì)數(shù)器。在框320,初始化計(jì)數(shù) 器變量11和&...,。變量η表示正在考慮的當(dāng)前組并且其值范圍可以在0到N-1。變量?1表 示組i中的正在考慮的當(dāng)前處理器,其中i屬于集合{1,2. . . N-1}而Pi的值的范圍從0到 Mi-I。因此,根據(jù)該實(shí)施例,η和Pi都被初始化為值0,這指示將首先考慮第一組和該組中的 第一處理器。各組以及這些組中的處理器可以按任何合適的方式排序并且不是本發(fā)明的限制。在框330,在第一次執(zhí)行時(shí),考慮第一設(shè)備,并且在框340,在第一次執(zhí)行時(shí),考慮 將要分配給該設(shè)備的第一消息。在框350,在第一次執(zhí)行時(shí),將該第一消息定義為將第一組 中的第一處理器確定為目標(biāo),如計(jì)數(shù)器變量η和Pi的當(dāng)前狀態(tài)所表示的。為了將消息均勻地分布在各組和各組中的處理器上,框360和370遞增計(jì)數(shù)器變 量以使得接下來(lái)考慮下一組和該組中的第一處理器。框360和370處的遞增計(jì)數(shù)器使用模 算術(shù)來(lái)完成。模算術(shù)使得計(jì)數(shù)器在達(dá)到其最大值時(shí)回繞。例如,在框360,計(jì)數(shù)器Pn跟蹤組 η中的最近分配的處理器。計(jì)數(shù)器PnF應(yīng)等于或超過(guò)指示組η中的處理器的數(shù)量的值Μη。 因此,如果框360處的遞增操作將使得Pn等于值Μη,則Pn的值回到0。同樣,框370處的處 理作為模遞增來(lái)執(zhí)行。在框370處遞增的值η表示正在處理的當(dāng)前組。在所示實(shí)施例中, 因?yàn)榇嬖贜組,所以η的值不應(yīng)等于或超過(guò)N。當(dāng)η的值遞增為等于N時(shí),該值回繞并且η 被設(shè)為0。如果第一設(shè)備還有需要分配給它的消息,則該過(guò)程從判定框380分叉到框340,在 那里標(biāo)識(shí)下一消息。該消息隨后被定義為將該第二組和該組中的第一處理器確定為目標(biāo)。為第一設(shè)備的消息分配目標(biāo)的過(guò)程將以此方式迭代地繼續(xù)。對(duì)于將要為該第一設(shè) 備創(chuàng)建的每一個(gè)新消息,該過(guò)程將在組間移動(dòng),在來(lái)自最后一組的處理器被指定為消息目 標(biāo)時(shí)返回到第一組。在每一組中,目標(biāo)處理器將輪轉(zhuǎn)并且將在已分配最后一個(gè)處理器時(shí)返 回到組中的第一處理器。該過(guò)程可繼續(xù)直到已經(jīng)為該第一設(shè)備定義了足夠的消息。對(duì)于每一個(gè)剩余設(shè)備, 然后從框330重復(fù)該過(guò)程(框390)。處理可以在任何合適的時(shí)刻循環(huán)返回到框330。例 如,過(guò)程300可以繼續(xù)循環(huán)返回到框330直到已經(jīng)處理了在計(jì)算機(jī)啟動(dòng)時(shí)檢測(cè)到的所有設(shè) 備。如果在某一稍后時(shí)刻檢測(cè)到新設(shè)備,則過(guò)程300可以繼續(xù)框330處的處理。通過(guò)在框 330處繼續(xù),該過(guò)程可以在不在框320處重新初始化計(jì)數(shù)器的情況下繼續(xù)。以此方式,將消 息分布在各處理器組上的迭代過(guò)程甚至對(duì)于在初始啟動(dòng)之后發(fā)現(xiàn)的設(shè)備也可繼續(xù)。這一能 力例如可用于配置有“即插即用”體系結(jié)構(gòu)的計(jì)算機(jī)。即插即用體系結(jié)構(gòu)可允許計(jì)算機(jī)檢 測(cè)到新添加的設(shè)備。然而,不管設(shè)備是如何發(fā)現(xiàn)的,過(guò)程300都可用于高效地將目標(biāo)分配給 每一個(gè)設(shè)備所使用的消息。作為圖3的實(shí)施例的一特定示例,過(guò)程300中的每一組中的處理器可適用于圖1 的計(jì)算機(jī)系統(tǒng)100。在這樣做時(shí),芯片^(^、^(^、^(^可構(gòu)成感興趣的N =3組。消息142” 1422和1423可被定義為分別將處理器122^124!和126工確定為目標(biāo)。消息14+和1442可 被定義為分別將處理器1222和1242確定為目標(biāo)。并且,消息146^144和1463將被定義為 分別將處理器1262、1223和1243確定為目標(biāo)。以此方式,實(shí)現(xiàn)了這些消息在各組以及這些 組中的處理器上的平衡分布。一旦已經(jīng)定義了消息,這些消息就可用作計(jì)算機(jī)中的正在進(jìn)行的處理的一部分。 圖4示出了可使用已定義的消息的過(guò)程的一個(gè)實(shí)施例。即,根據(jù)本發(fā)明的各實(shí)施例,過(guò)程 400展示處理器可以在為設(shè)備分配操作時(shí)向該設(shè)備建議消息。具體而言,在框410,處理器 選擇為請(qǐng)求服務(wù)的設(shè)備。這一請(qǐng)求可以是從正在執(zhí)行的應(yīng)用程序或其他軟件接收到的任何 合適的請(qǐng)求(諸如對(duì)I/O操作的請(qǐng)求)。然而,不管請(qǐng)求是如何發(fā)起的,響應(yīng)該請(qǐng)求的處理器可標(biāo)識(shí)執(zhí)行在完成該請(qǐng)求時(shí)使用的操作的設(shè)備。作為一示例,處理來(lái)自盤(pán)驅(qū)動(dòng)器的信息請(qǐng)求的處理器可標(biāo)識(shí)盤(pán)驅(qū)動(dòng)器 需要執(zhí)行讀操作以使得該處理器能夠完成該請(qǐng)求。在該示例中,在框410處選擇的設(shè)備可 以是盤(pán)驅(qū)動(dòng)器。不管該設(shè)備是如何為框410處所標(biāo)識(shí)的請(qǐng)求服務(wù)的,該過(guò)程繼續(xù)至框420。處理器 確定什么中斷消息對(duì)所選設(shè)備可用(框420)。處理器標(biāo)識(shí)為預(yù)期完成中斷服務(wù)的高效處理 器(框430)。這一高效處理器可以按任何合適的方式來(lái)標(biāo)識(shí)并且可以取決于將要由該設(shè) 備執(zhí)行的操作的特性。例如,基于在框410處接收到的請(qǐng)求的特性,處理器可確定它將利用 因?qū)υ撜?qǐng)求的完成處理而變得可用的數(shù)據(jù)。在這種情況下,該處理器可將其自身選為最高 效的處理器。在其他情況下,處理器可標(biāo)識(shí)作為完成處理的結(jié)果,數(shù)據(jù)將被傳遞至不同的處 理器。在這種情況下,將接收該數(shù)據(jù)的處理器可被標(biāo)識(shí)為執(zhí)行完成處理的最高效的處理器。 然而,用于標(biāo)識(shí)最高效的處理器的特定準(zhǔn)則不是本發(fā)明的限制。如果對(duì)設(shè)備可用的中斷消息的列表(如在框420中所確定的)包括將所標(biāo)識(shí)的高 效處理器確定為目標(biāo)的中斷消息,則該過(guò)程從判定框440分叉到框460。在框460,向設(shè)備 發(fā)送當(dāng)在完成所請(qǐng)求的操作后發(fā)送其服務(wù)完成中斷時(shí)使用將所標(biāo)識(shí)的處理器確定為目標(biāo) 的消息的建議。關(guān)于設(shè)備應(yīng)使用哪一個(gè)消息來(lái)告知它已完成分配到的操作的建議對(duì)于本發(fā) 明并非關(guān)鍵。所建議的消息可以作為將操作分配給設(shè)備的一部分或者以任何其他合適的方 式來(lái)發(fā)送。另一方面,如果高效處理器未被在框420中標(biāo)識(shí)的可用消息中的任一個(gè)確定為目 標(biāo),則該過(guò)程從判定框440分叉到框450。在框450可標(biāo)識(shí)下一最接近的處理器。下一最接 近的處理器能夠以任何合適的方式來(lái)標(biāo)識(shí)。在所示實(shí)施例中,使用具有與該分組中的其他 處理器的接近物理鄰近度和/或具有便于在分組的處理器之間進(jìn)行高效通信的鄰近度的 處理器的基于鄰近度的分組來(lái)標(biāo)識(shí)處理器的相對(duì)接近度。不管在框450處如何標(biāo)識(shí)下一最接近的處理器,該過(guò)程循環(huán)返回至判定框440。在 判定框440,再次檢查所標(biāo)識(shí)的處理器是否是要處理操作的設(shè)備的消息的目標(biāo)。如果所標(biāo)識(shí) 的處理器不是消息的目標(biāo),則該過(guò)程再次循環(huán)返回至框450,在那里標(biāo)識(shí)下一最接近的處理 器。該過(guò)程可以按此方式繼續(xù)直至標(biāo)識(shí)到作為對(duì)要執(zhí)行操作的設(shè)備可用的消息的目標(biāo)的處 理器。一旦發(fā)現(xiàn)消息具有匹配的目標(biāo)處理器,則將該消息選為處理器將建議所選設(shè)備應(yīng)當(dāng) 用來(lái)發(fā)送其服務(wù)完成中斷的消息(框460)。發(fā)明人理解,由于確保在基于鄰近度的處理器組上取得平衡并且進(jìn)一步在各組中 的處理器上取得平衡的消息分布的對(duì)消息的初始定義和到設(shè)備的分配(諸如圖3所示的實(shí) 施例),與現(xiàn)有技術(shù)相比,過(guò)程400很有可能提高將操作分配給設(shè)備的效率。至此描述了本發(fā)明的至少一個(gè)實(shí)施例的若干方面,可以理解,本領(lǐng)域的技術(shù)人員 可容易地想到各種更改、修改和改進(jìn)。這樣的更改、修改和改進(jìn)旨在是本發(fā)明的一部分,且旨在處于本發(fā)明的精神和范 圍內(nèi)。因此,上述描述和附圖僅用作示例??梢杂枚喾N方式中的任一種來(lái)實(shí)現(xiàn)本發(fā)明的上述實(shí)施例。例如,可使用硬件、軟件 或其組合來(lái)實(shí)現(xiàn)各實(shí)施例。當(dāng)使用軟件實(shí)現(xiàn)時(shí),該軟件代碼可在無(wú)論是在單個(gè)計(jì)算機(jī)中提 供的還是在多個(gè)計(jì)算機(jī)之間分布的任何合適的處理器或處理器集合上執(zhí)行。此外,應(yīng)當(dāng)理解,計(jì)算機(jī)可以用多種形式中的任一種來(lái)具體化,如機(jī)架式計(jì)算機(jī)、
11臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、或平板計(jì)算機(jī)。另外,計(jì)算機(jī)可以具體化在通常不被認(rèn)為是計(jì) 算機(jī)但具有合適的處理能力的設(shè)備中,包括個(gè)人數(shù)字助理(PDA)、智能電話(huà)、或任何其他合 適的便攜式或固定電子設(shè)備。同樣,計(jì)算機(jī)可以具有一個(gè)或多個(gè)輸入和輸出設(shè)備。這些設(shè)備主要可被用來(lái)呈現(xiàn) 用戶(hù)界面??杀挥脕?lái)提供用戶(hù)界面的輸出設(shè)備的示例包括用于可視地呈現(xiàn)輸出的打印機(jī)或 顯示屏和用于可聽(tīng)地呈現(xiàn)輸出的揚(yáng)聲器或其他聲音生成設(shè)備??杀挥糜谟脩?hù)界面的輸入設(shè) 備的示例包括鍵盤(pán)和諸如鼠標(biāo)、觸摸板和數(shù)字化輸入板等定點(diǎn)設(shè)備。作為另一示例,計(jì)算機(jī) 可以通過(guò)語(yǔ)音識(shí)別或以其他可聽(tīng)格式來(lái)接收輸入信息。這些計(jì)算機(jī)可以通過(guò)任何合適形式的一個(gè)或多個(gè)網(wǎng)絡(luò)來(lái)互連,包括作為局域網(wǎng)或 廣域網(wǎng),如企業(yè)網(wǎng)絡(luò)或因特網(wǎng)。這些網(wǎng)絡(luò)可以基于任何合適的技術(shù)并可以根據(jù)任何合適的 協(xié)議來(lái)操作,并且可以包括無(wú)線(xiàn)網(wǎng)絡(luò)、有線(xiàn)網(wǎng)絡(luò)或光纖網(wǎng)絡(luò)。而且,此處略述的各種方法或過(guò)程可被編碼為可在采用各種操作系統(tǒng)或平臺(tái)中任 何一種的一個(gè)或多個(gè)處理器上執(zhí)行的軟件。此外,這樣的軟件可使用多種合適的程序設(shè)計(jì) 語(yǔ)言和/或程序設(shè)計(jì)或腳本工具中的任何一種來(lái)編寫(xiě),而且它們還可被編譯為可執(zhí)行機(jī)器 語(yǔ)言代碼或在框架或虛擬機(jī)上執(zhí)行的中間代碼。就此,本發(fā)明可被具體化為用一個(gè)或多個(gè)程序編碼的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì) (例如,計(jì)算機(jī)存儲(chǔ)器、一個(gè)或多個(gè)軟盤(pán)、緊致盤(pán)、光盤(pán)、磁帶、閃存、現(xiàn)場(chǎng)可編程門(mén)陣列或其 他半導(dǎo)體器件中的電路配置、或其他有形計(jì)算機(jī)存儲(chǔ)介質(zhì)),當(dāng)這些程序在一個(gè)或多個(gè)計(jì)算 機(jī)或其他處理器上執(zhí)行時(shí),它們執(zhí)行實(shí)現(xiàn)本發(fā)明的上述各個(gè)實(shí)施例的方法。這一個(gè)或多個(gè) 計(jì)算機(jī)可讀介質(zhì)可以是便攜的,使得其上存儲(chǔ)的一個(gè)或多個(gè)程序可被加載到一個(gè)或多個(gè)不 同的計(jì)算機(jī)或其他處理器上以便實(shí)現(xiàn)本發(fā)明上述的各個(gè)方面。此處以一般的意義使用術(shù)語(yǔ)“程序”或“軟件”來(lái)指可被用來(lái)對(duì)計(jì)算機(jī)或其他處理 器編程以實(shí)現(xiàn)本發(fā)明上述的各個(gè)方面的任何類(lèi)型的計(jì)算機(jī)代碼或計(jì)算機(jī)可執(zhí)行指令集。另 外,應(yīng)當(dāng)理解,根據(jù)本實(shí)施例的一個(gè)方面,當(dāng)被執(zhí)行時(shí)實(shí)現(xiàn)本發(fā)明的方法的一個(gè)或多個(gè)計(jì)算 機(jī)程序不必駐留在單個(gè)計(jì)算機(jī)或處理器上,而是可以按模塊化的方式分布在多個(gè)不同的計(jì) 算機(jī)或處理器之間以實(shí)現(xiàn)本發(fā)明的各方面。計(jì)算機(jī)可執(zhí)行指令可以具有可由一個(gè)或多個(gè)計(jì)算機(jī)或其他設(shè)備執(zhí)行的各種形式, 諸如程序模塊。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類(lèi)型的例程、程 序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。通常,在各實(shí)施例中,程序模塊的功能可以視需要組合或分散。而且,數(shù)據(jù)結(jié)構(gòu)能以任何合適的形式存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上。為簡(jiǎn)化說(shuō)明,數(shù)據(jù) 結(jié)構(gòu)可被示為具有通過(guò)該數(shù)據(jù)結(jié)構(gòu)中的位置而相關(guān)的字段。這些關(guān)系同樣可以通過(guò)對(duì)各字 段的存儲(chǔ)分配傳達(dá)各字段之間的關(guān)系的計(jì)算機(jī)可讀介質(zhì)中的位置來(lái)得到。然而,可以使用 任何合適的機(jī)制來(lái)在數(shù)據(jù)結(jié)構(gòu)的各字段中的信息之間建立關(guān)系,包括通過(guò)使用指針、標(biāo)簽、 或在數(shù)據(jù)元素之間建立關(guān)系的其他機(jī)制。本發(fā)明的各個(gè)方面可單獨(dú)、組合或以未在前述實(shí)施例中具體討論的各種安排來(lái)使 用,從而并不將其應(yīng)用限于前述描述中所述或附圖中所示的組件的細(xì)節(jié)和安排。例如,可使 用任何方式將一個(gè)實(shí)施例中描述的各方面與其他實(shí)施例中描述的各方面組合。同樣,本發(fā)明可被具體化為方法,其示例已經(jīng)提供。作為該方法的一部分所執(zhí)行的 動(dòng)作可以按任何合適的方式來(lái)排序。因此,可以構(gòu)建各個(gè)實(shí)施例,其中各動(dòng)作以與所示的次序所不同的次序執(zhí)行,不同的次序可包括同時(shí)執(zhí)行某些動(dòng)作,即使這些動(dòng)作在各說(shuō)明性實(shí) 施例中被示為順序動(dòng)作。在權(quán)利要求書(shū)中使用諸如“第一”、“第二”、“第三”等序數(shù)詞來(lái)修飾權(quán)利要求元素 本身并不意味著一個(gè)權(quán)利要求元素較之另一個(gè)權(quán)利要求元素的優(yōu)先級(jí)、先后次序或順序、 或者方法的各動(dòng)作執(zhí)行的時(shí)間順序,而僅用作將具有某一名字的一個(gè)權(quán)利要求元素與(若 不是使用序數(shù)詞則)具有同一名字的另一元素區(qū)分開(kāi)的標(biāo)簽以區(qū)分各權(quán)利要求元素。同樣,此處所使用的短語(yǔ)和術(shù)語(yǔ)是出于描述的目的而不應(yīng)被認(rèn)為是限制。此處對(duì) “包括”、“包含”、或“具有”、“含有”、“涉及”及其變型的使用旨在包括其后所列的項(xiàng)目及其 等效物以及其他項(xiàng)目。
權(quán)利要求
一種操作計(jì)算機(jī)(100)的方法,所述計(jì)算機(jī)包括多個(gè)處理器(122、124、126)和適于發(fā)出中斷的多個(gè)設(shè)備(140),每一個(gè)中斷由所述多個(gè)處理器中的一個(gè)處理器來(lái)服務(wù),所述處理器基于鄰近度來(lái)配置在多個(gè)組中,并且所述方法為所述多個(gè)設(shè)備中的每一個(gè)建立消息,每一個(gè)消息供在中斷所述多個(gè)處理器中的一個(gè)處理器時(shí)使用,所述方法包括為所述多個(gè)設(shè)備中的每一個(gè)創(chuàng)建多個(gè)消息(350),所述創(chuàng)建包括將目標(biāo)處理器選為所述多個(gè)消息中的每一個(gè)的目標(biāo)處理器,以便最大化所述多個(gè)組中被為所述多個(gè)設(shè)備中的每一個(gè)設(shè)備創(chuàng)建的消息確定為目標(biāo)的組的數(shù)量并且最小化將所述多個(gè)組中的每一組確定為目標(biāo)的消息的數(shù)量(300)。
2.如權(quán)利要求1所述的方法,其特征在于,還包括將為所述多個(gè)設(shè)備中的每一個(gè)創(chuàng)建的多個(gè)消息(142、144、146)存儲(chǔ)在該設(shè)備中。
3.如權(quán)利要求1所述的方法,其特征在于,所述創(chuàng)建還包括將目標(biāo)處理器選為所述多個(gè)組中的每一個(gè)中的目標(biāo)處理器以最小化將所述多個(gè)處理 器中的每一個(gè)處理器確定為目標(biāo)的消息的數(shù)量(300)。
4.如權(quán)利要求1所述的方法,其特征在于,創(chuàng)建所述多個(gè)消息包括對(duì)于每一個(gè)設(shè)備,迭代地(330、340)將目標(biāo)處理器分配給對(duì)于該設(shè)備的多個(gè)消息中的 每一個(gè),所述分配包括對(duì)于每一次連續(xù)迭代分配不同組中的處理器。
5.如權(quán)利要求4所述的方法,其特征在于所述各組處理器是定序的;并且對(duì)于每一個(gè)設(shè)備,迭代地將目標(biāo)處理器分配給所述多個(gè)消息中的每一個(gè)包括在連續(xù)迭 代中根據(jù)所述各組的次序來(lái)分配連續(xù)組中的目標(biāo)處理器(350)。
6.如權(quán)利要求5所述的方法,其特征在于所述設(shè)備是定序的;并且對(duì)于所述次序中的第一設(shè)備后的每一個(gè)設(shè)備,迭代地將目標(biāo)處理器分配給消息包括對(duì) 于第一迭代分配在所述組次序中在如下的處理器組之后的組中的目標(biāo)處理器該處理器組 在對(duì)于在設(shè)備次序中在該設(shè)備之前的設(shè)備的最近的先前迭代中被指定為目標(biāo)處理器。
7.如權(quán)利要求6所述的方法,其特征在于所述處理器在每一組中是定序的;并且將目標(biāo)處理器分配給消息包括對(duì)于分配來(lái)自一組的處理器的第一動(dòng)作,分配所述次序 中的第一處理器,并且對(duì)于所述第一處理器之后的每一個(gè)分配動(dòng)作,分配該組中最近分配 的處理器之后的處理器。
8.如權(quán)利要求1所述的方法,其特征在于,還包括發(fā)現(xiàn)所述多個(gè)設(shè)備并且輪詢(xún)每一個(gè) 所發(fā)現(xiàn)的設(shè)備以確定所述設(shè)備可存儲(chǔ)的消息數(shù)量。
9.如權(quán)利要求1所述的方法,其特征在于基于鄰近度的組本質(zhì)上包括具有與該分組中的其他處理器的接近物理鄰近度,和/或 具有便于在分組的處理器之間進(jìn)行高效通信的鄰近度的處理器。
10.一種計(jì)算機(jī),包括多個(gè)處理器(122、124、126),所述處理器基于鄰近度來(lái)配置在多個(gè)組中,所述組具有次 序并且每一組中的處理器具有次序;多個(gè)設(shè)備(140),每一個(gè)設(shè)備適于發(fā)出中斷(230),每一個(gè)中斷由所述多個(gè)處理器中的一個(gè)處理器來(lái)服務(wù);將所述多個(gè)設(shè)備和所述多個(gè)處理器互連的總線(xiàn)(130);以及存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)存儲(chǔ)介質(zhì),所述指令在被執(zhí)行時(shí)執(zhí)行一種為所述多個(gè) 設(shè)備中的每一個(gè)建立消息的方法,每一個(gè)消息被格式化以便通過(guò)所述總線(xiàn)傳輸并且每一個(gè) 消息供在中斷所述多個(gè)處理器中的一個(gè)處理器時(shí)使用,所述方法(300)包括對(duì)于多個(gè)設(shè)備中的每一個(gè),將目標(biāo)處理器分配給消息,所述分配包括對(duì)于每一個(gè)消息,從基于所述組次序來(lái)選擇的組中選擇目標(biāo)處理器,選自每一組中的處理器基于所選組中的處理器的次序來(lái)選擇。
11.如權(quán)利要求10所述的計(jì)算機(jī)系統(tǒng),其特征在于,由所述計(jì)算機(jī)可執(zhí)行指令執(zhí)行的 方法還包括在分配每一個(gè)目標(biāo)處理器時(shí),更新處理器組次序中的位置(370)以及所述組中的處理 器次序中的位置(360)的記錄。
12.如權(quán)利要求10所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述分配包括在將目標(biāo)處理器分配給第二設(shè)備中的消息之前將目標(biāo)處理器分配給第一設(shè)備的消息。
13.如權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述分配包括在分配來(lái)自所述多個(gè)組中的任一個(gè)的第二目標(biāo)處理器之前分配來(lái)自所述多個(gè)組中的 每一個(gè)的一個(gè)目標(biāo)處理器。
14.如權(quán)利要求10所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述多個(gè)處理器組中的至少一個(gè) 包括物理封裝中的核。
15.如權(quán)利要求10所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述多個(gè)處理器組中的至少一個(gè) 包括在相同的物理處理器上執(zhí)行的多個(gè)虛擬處理器。全文摘要
一種用于多處理器計(jì)算機(jī)的高效中斷系統(tǒng)。設(shè)備使用通過(guò)PCI、PCI-X或PCI Express總線(xiàn)用存儲(chǔ)器寫(xiě)事務(wù)傳遞的預(yù)定義的消息地址和數(shù)據(jù)凈荷來(lái)中斷處理器或處理器組。設(shè)備配置有各自將一處理器確定為目標(biāo)的消息。在接收到執(zhí)行操作的命令后,該設(shè)備可接收要用來(lái)在完成該操作后中斷處理器的優(yōu)選消息的指示。通過(guò)為計(jì)算機(jī)中的各設(shè)備定義消息以使得每一個(gè)設(shè)備都包含將分布在各組處理器(每一組都表示接近鄰近度內(nèi)的處理器)中的處理器確定為目標(biāo)的消息來(lái)提高處理每一個(gè)中斷的效率以及計(jì)算機(jī)操作的總效率。在為消息選擇目標(biāo)處理器時(shí),選擇處理器以便將處理分布在各處理器組以及每一組中的處理器上。
文檔編號(hào)G06F13/14GK101896896SQ200880121066
公開(kāi)日2010年11月24日 申請(qǐng)日期2008年11月25日 優(yōu)先權(quán)日2007年12月17日
發(fā)明者B·沃辛頓, B·雷林, V·馬穆塔尼 申請(qǐng)人:微軟公司