国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于多處理器系統(tǒng)的加權(quán)處理器選擇設(shè)備和方法

      文檔序號:6411199閱讀:311來源:國知局
      專利名稱:用于多處理器系統(tǒng)的加權(quán)處理器選擇設(shè)備和方法
      技術(shù)領(lǐng)域
      本發(fā)明總體上涉及多處理器系統(tǒng),更具體而言,涉及一種用于多處理器系統(tǒng)的加權(quán)處理器選擇設(shè)備和方法。
      相關(guān)技術(shù)說明多處理器系統(tǒng)內(nèi)部的早期固件執(zhí)行(例如啟動或引導(dǎo)過程)特別有問題。在多處理器系統(tǒng)內(nèi)部的固件執(zhí)行的早期階段期間(例如,像在系統(tǒng)復(fù)位之后),在啟動或引導(dǎo)過程期間執(zhí)行的許多功能不是多處理器安全的。具體來講,在固件執(zhí)行的早期階段期間,未充分地發(fā)揮出系統(tǒng)存儲器和高速緩存的作用,由此存儲器相干性機制是不可操作的,而且無法維護存儲器相干性。其結(jié)果是,多處理器系統(tǒng)內(nèi)部的早期固件執(zhí)行可能會導(dǎo)致兩個或多個處理器同時嘗試訪問一個資源。例如,兩個或多個處理器可以同時嘗試對寄存器進行寫,這會導(dǎo)致存儲資源中的不正確數(shù)據(jù)或過時數(shù)據(jù)的存儲。
      將與多處理器系統(tǒng)內(nèi)部的固件執(zhí)行的早期階段相關(guān)聯(lián)的難度減到最低的一種常見手段就是,選擇單個處理器來起到自引導(dǎo)處理器(bootstrap processor,BSP)的作用。眾所周知,單個BSP的選擇使BSP能執(zhí)行為充分操作(例如,操作系統(tǒng)的執(zhí)行)而準(zhǔn)備多處理器系統(tǒng)的功能,這包括建立存儲器相干性模式,與此同時多處理器系統(tǒng)內(nèi)部的其它處理器保持空閑狀態(tài)。照此,單個處理器(例如,BSP)的選擇使多處理器系統(tǒng)能僅僅使用單個處理器向前推進通過尚未確立存儲器相干性的早期固件階段,并且消除把過時數(shù)據(jù)寫入到可能會由多處理器系統(tǒng)內(nèi)部的處理器共享的資源中的可能性。
      在一些例如就像Intel公司的基于IA-32的系統(tǒng)這樣的多處理器系統(tǒng)內(nèi),BSP的選擇是自動地利用前端總線(FSB)協(xié)議來執(zhí)行的。利用FSB協(xié)議,多處理器系統(tǒng)內(nèi)的每個處理器都包括連接或搭接到系統(tǒng)總線上的多個信號輸入端或管腳,以便根據(jù)FSB上處理器的物理位置來為每個處理器建立唯一的二進制碼或標(biāo)識符。當(dāng)系統(tǒng)復(fù)位時,每個處理器就對其管腳進行采樣,并且讀取且內(nèi)部地存儲其唯一標(biāo)識符。
      利用FSB協(xié)議,當(dāng)系統(tǒng)復(fù)位時,就把具有特定的預(yù)定標(biāo)識符的處理器之一指定為BSP。典型地,指定的BSP經(jīng)由處理器間中斷(IPI)來產(chǎn)生系統(tǒng)管理中斷。具體來講,BSP利用其它處理器的唯一標(biāo)識符來指揮位于這些處理器上的IPI,以便使它們強行設(shè)為已知的空閑狀態(tài)。如果其它處理器處于空閑狀態(tài),那么BSP具有對引導(dǎo)過程的完全控制,直到已經(jīng)充分地發(fā)揮了系統(tǒng)存儲器和高速緩存的作用以使多處理器能安全工作為止。
      一些微處理器體系結(jié)構(gòu),例如就像Intel ItaniumTM系列處理器所采用的體系結(jié)構(gòu),并未利用諸如上述FSB協(xié)議之類的硬件技術(shù)提供BSP的自動選擇。反而,不為BSP的選擇而提供基于硬件的機制的處理器卻通常依靠多處理器安全固件來選擇BSP。
      在操作系統(tǒng)執(zhí)行期間,多處理器系統(tǒng)通常采用諸如(例如)cmpxchg之類的原子(即,不可中斷的)讀/比較/寫指令來創(chuàng)建基于存儲器的信號量,所述信號量實現(xiàn)了從多處理器系統(tǒng)內(nèi)部的多個處理器中選擇單個處理器。令人遺憾的是,雖然在后來的固件執(zhí)行階段期間可以采用這類基于固件的處理器選擇技術(shù),但是當(dāng)相干的存儲器是不可用之時,在早期的固件執(zhí)行階段期間就不能使用那些技術(shù)。
      在易于選擇多處理器系統(tǒng)內(nèi)部的單個處理器(例如,BSP)的另一種手段當(dāng)中,同系統(tǒng)一起使用的芯片組包含當(dāng)?shù)谝淮巫x取時返回一個特定值而對于所有后續(xù)的讀取返回一個不同值的專用寄存器。照此,讀取該專用寄存器的第一處理器將根據(jù)從寄存器中檢索出的值來認(rèn)定它是BSP,而隨后讀取寄存器并檢索出不同值的其余的處理器認(rèn)定它們要保持空閑狀態(tài)。雖然這個專用寄存器提供了一種用于從多個處理器中選擇單個處理器的機制,但是這種選擇是任意的,由此不考慮多處理器系統(tǒng)內(nèi)部的可用處理器的狀況良好(health)或工作條件。
      附圖簡要說明

      圖1是使用這里所述的處理器選擇技術(shù)的多處理器系統(tǒng)示例的框圖;圖2a-c是描繪這樣一種方式的示例的流程圖,采用所述方式,可以在圖1中所示的多處理器系統(tǒng)內(nèi)使用這里所述的處理器選擇技術(shù);和圖3是描繪這樣一種方式的流程圖,采用所述方式,可以對圖1中所示的處理器進行編程以產(chǎn)生它們的加權(quán)值。
      詳細說明圖1是使用這里所述的示例性處理器選擇技術(shù)的多處理器系統(tǒng)10的示例的框圖。如圖1所示,多處理器系統(tǒng)10包括經(jīng)由互連總線或網(wǎng)絡(luò)18而彼此相耦合的多個處理器12、14和16。處理器12-16可以是任何適合的處理器、處理單元或微處理器,例如就像Intel ItaniumTM處理器、Intel X-ScaleTM處理器、Intel PentiumTM處理器、等等。
      處理器12-16還耦合于芯片組20,所述芯片組包括存儲器控制器22、輸入/輸出(I/O)控制器24和共享資源26。眾所周知,芯片組典型地提供I/O和存儲管理功能以及多個通用和/或?qū)S眉拇嫫?、定時器等等,它們可由耦合于該芯片組的一個或多個處理器訪問或使用。存儲器控制器22執(zhí)行使處理器12-16能訪問系統(tǒng)存儲器28的功能,所述系統(tǒng)存儲器可以包括任何期望類型的易失性存儲器,例如就像靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)等等。I/O控制器24執(zhí)行使處理器12-16能經(jīng)由I/O總線30而與外圍設(shè)備(未示出)相通信的功能。雖然在圖1中把存儲器控制器22和I/O控制器24描繪成了芯片組20內(nèi)的獨立功能塊,但是可以在單個半導(dǎo)體電路內(nèi)集成由這些塊所執(zhí)行的功能或者可以利用兩個或多個獨立的集成電路來實現(xiàn)由這些塊所執(zhí)行的功能。
      在圖1中所示的示例中,共享資源26是可由所有處理器12-16訪問的芯片組20內(nèi)的寄存器。盡管在圖1中把共享資源26描繪成是獨立于存儲器控制器22和I/O控制器24的,但是共享資源26也可以是存儲器控制器22或I/O控制器24內(nèi)部的寄存器。供共享資源26使用的寄存器是可讀且可寫的寄存器,在系統(tǒng)10復(fù)位之后,所述寄存器具有已知缺省值,例如零值。
      在處理器12-16是Intel TitaniumTM處理器的情況下,可以將Intel 870芯片組用作為芯片組20。正如這里更詳細描述的那樣,Intel870芯片組提供了多個暫存寄存器,其中任何一個暫存寄存器都能夠執(zhí)行共享資源26的功能。然而,應(yīng)當(dāng)認(rèn)識到的是,雖然諸如由870芯片組提供的那些寄存器之類的暫存寄存器都非常適合于用作為共享資源26,但是也可以代替使用任何其它具有可容許的副作用(side-effect)的寄存器。換言之,可以同下面結(jié)合圖2a-2c所描述的技術(shù)一起使用的、對系統(tǒng)10的操作沒有不利影響的任何寄存器,都是適合的備選方案。由此,如果處理器12-16對那個寄存器的訪問(即,從那個寄存器中讀取,和/或向那個寄存器寫入)不會致使不良的后果或副作用,則可以把任何寄存器都用作為共享資源26。例如,可以把與固定的外設(shè)部件互連(PCI)裝置相關(guān)聯(lián)的基址寄存器用作為共享資源26,當(dāng)執(zhí)行這里所述的處理器選擇技術(shù)的同時,所述外設(shè)部件互連裝置不為系統(tǒng)10所使用。
      正如同樣在圖1中描繪的那樣,處理器12-16包括各自的以已知頻率進行計數(shù)的時間間隔定時器/計數(shù)器(ITC)寄存器38-42。例如,在處理器12-16是Intel ItaniumTM處理器的情況下,ITC寄存器38-42是能被復(fù)位且繼而從零開始以每秒10億次計數(shù)速率連續(xù)向上計數(shù)的64位的寄存器。由于Intel itanium處理器內(nèi)的ITC寄存器的大尺寸(即,計數(shù)器位數(shù)),這些ITC寄存器能夠在不翻轉(zhuǎn)(rollover)的情況下連續(xù)計數(shù)達580年以上。
      另外,所述系統(tǒng)10包括存儲用于執(zhí)行這里所述的處理器選擇技術(shù)的計算機代碼(例如,軟件或固件)的非易失性存儲器32。如圖1所示,所述非易失性存儲器32可以耦合于芯片組20,由此可以由處理器12-16經(jīng)由芯片組20來加以訪問。附加地,或者備選地,非易失性存儲器32可以位于芯片組20內(nèi)部,和/或可以經(jīng)由I/O總線30而耦合于處理器12-16。在分配非易失性存儲器32(例如,存儲器32的一部分32經(jīng)由I/O總線30而耦合于如圖1所示的芯片組20,而該存儲器的另一個部分也耦合于該芯片組20)的情況下,可以在存儲器32的這些不同部分之間分配用于執(zhí)行這里所述的處理器選擇技術(shù)的計算機代碼。
      在下面圖2a-2c中所示的示例性處理器選擇技術(shù)是一種基于軟件或固件的技術(shù),該技術(shù)使諸如圖1中所示的系統(tǒng)10之類的多處理器系統(tǒng)能根據(jù)與處理器相關(guān)聯(lián)的加權(quán)值的比較從多個處理器(例如,處理器12-16)中選擇一個處理器(例如,處理器14),或者如果期望的話則能從中選擇一組處理器(例如,處理器12和和14)。更具體而言,每個加權(quán)值都對應(yīng)于其中一個處理器12-16,并且每個加權(quán)值都可表示相對應(yīng)的那個處理器的屬性或者多個屬性。例如,所述加權(quán)值可以表示多處理器系統(tǒng)內(nèi)的處理器的相對的狀況良好、條件或性能。具體來講,可以利用一個或多個處理器執(zhí)行速度、處理器殼體溫度、內(nèi)嵌的自測試結(jié)果、處理器抽象層(PAL)移交的狀態(tài)、局部快閃存儲器狀態(tài)等等來產(chǎn)生每個處理器12-16的加權(quán)值。另外,加權(quán)值還可以并入與處理器12-16的狀況良好、條件或性能無關(guān)的信息,例如像數(shù)值標(biāo)識符,每個數(shù)值標(biāo)識符都唯一地與其中一個處理器12-16相關(guān)聯(lián)。
      圖2a-c中所示的處理器選擇技術(shù)不要求使用多處理器安全資源,因此特別適用于選擇單個處理器(例如,處理器12)以便在早期的固件(即,在相干存儲器和高速緩存都可用之前)執(zhí)行期間執(zhí)行非多處理器安全的功能。例如,可以有利地在多處理器系統(tǒng)內(nèi),特別是在采用未給BSP選擇提供基于硬件的機制且由此依賴軟件或固件來執(zhí)行BSP的選擇的處理器的多處理器系統(tǒng)中,應(yīng)用圖2a-c中所示的處理器選擇技術(shù),以便選擇自引導(dǎo)處理器(BSP)。
      當(dāng)然,圖2a-c中所示的處理器選擇技術(shù)還可以用于選擇單個處理器以便在后來的固件執(zhí)行階段(例如,像在操作系統(tǒng)執(zhí)行期間)期間執(zhí)行非多處理器安全的功能。例如,要求訪問互補型金屬氧化物半導(dǎo)體(CMOS)隨機存取存儲器(RAM)的處理器操作不是多處理器安全的。因此,圖2a-c中所示的處理器選擇技術(shù)能用來從多個處理器中選擇單個處理器以執(zhí)行要求訪問CMOS RAM的操作。然而,實際上,典型地利用原子指令或基于存儲器的信號量來確保在一個給定的時間多處理器系統(tǒng)內(nèi)只有一個處理器訪問CMOS RAM。
      圖2a-c中所示的處理器選擇技術(shù)包括三個明顯不同的階段或例程。在圖2a中所示的第一階段或例程期間,通過在各自的等待循環(huán)中收集和捕獲(trapping)處理器12-16(塊58-62),然后在基本上相同的時間從處理器12-16各自的等待循環(huán)中釋放處理器12-16,來基本上使多處理器系統(tǒng)10內(nèi)的多個處理器12-16的操作同步。因為多處理器系統(tǒng)內(nèi)的處理器通常以稍微不同的速率執(zhí)行指令,多處理器系統(tǒng)內(nèi)的每個處理器開始執(zhí)行圖2a-c中所示的選擇技術(shù)的時間是可以變化的。因此,為了確保多處理器系統(tǒng)10內(nèi)的所有12-16處理器在它們的等待循環(huán)內(nèi)都被捕獲且由此基本上在正被釋放之前得以同步,第一階段或例程延遲處理器12-16中的第一個,以便其等待循環(huán)中開始執(zhí)行第一階段或例程(圖2a),至少直到多處理器系統(tǒng)10內(nèi)的所有其余的處理器都已經(jīng)開始執(zhí)行第一階段或例程(圖2a)并且進入了它們各自的等待循環(huán)(塊58-62)為止。
      在圖2b中所示的第二階段和例程期間,示例性處理器選擇技術(shù)(圖2a-c)給多處理器系統(tǒng)10內(nèi)的所有處理器12-16提供了一個時機,來把它們各自的加權(quán)值與存儲在共享資源26中的值進行比較,并且如果它們的加權(quán)值優(yōu)于當(dāng)前存儲在共享資源26中的值,則把它們的加權(quán)值寫入到共享資源26。為了確保具有最佳加權(quán)值的處理器已于第二階段或例程結(jié)束(圖2b)時、在共享資源26中存儲了它的加權(quán)值,所有處理器12-16都以基本上同步的方式(即,大約同時地)為多處理器系統(tǒng)10中的每個處理器執(zhí)行一次第二階段或例程。換言之,因為在多處理器系統(tǒng)10中存在三個處理器,所以三個處理器12-16以基本上同時的方式執(zhí)行三次第二階段或例程(圖2b)。其結(jié)果是,即使共享資源26并非多處理器安全的,最終也把最佳加權(quán)值寫入到共享資源26。例如,如果處理器12-16具有三個不同的加權(quán)值,并且第一次執(zhí)行第二例程,每個處理器12-16可以同時判定它們的加權(quán)值優(yōu)于當(dāng)前存儲在共享資源26中的值,因此所有處理器12-16都將通過嘗試把它們的加權(quán)值寫入到共享資源26中來競爭共享資源26。當(dāng)然,因為共享資源26并非多處理器安全的(即,不是作為相干存儲器來維護的),所以最終寫入到共享資源26中的值可能是與處理器12-16中任何一個相關(guān)聯(lián)的加權(quán)值,并且最終寫入到共享資源26中的值未必就是嘗試對共享資源26進行寫的處理器12-16中的最佳加權(quán)值。如果寫入共享資源26中的值是第三個最佳值(即,最壞的值),那么在下次或第二次執(zhí)行第二階段或例程(圖2b)期間,處理器12-16中只有兩個將嘗試把它們的加權(quán)值寫入到共享資源26中,因為處理器12-16中只有兩個將判定它們的加權(quán)值優(yōu)于當(dāng)前存儲在共享資源26中的值。從上文中容易領(lǐng)會到的是,如果每當(dāng)執(zhí)行第二階段或例程時,具有最壞加權(quán)值的處理器都在處理器12-16當(dāng)中贏得了對共享資源26的競爭,那么將為具有N個處理器的多處理器系統(tǒng)執(zhí)行至少N次的第二例程,以確保具有最佳加權(quán)值的處理器最終能把它的加權(quán)值寫入到共享資源中。
      在圖2c中所示的第三階段或例程期間,處理器選擇技術(shù)使多處理器系統(tǒng)10內(nèi)的每一個處理器12-16都能判斷是否已經(jīng)為執(zhí)行諸如像執(zhí)行BSP活動之類的特定任務(wù)而選擇了它。具體來講,在第二階段或例程的最后一次迭代結(jié)束時,每個處理器12-16都將它的加權(quán)值同存儲在共享資源26中的最佳加權(quán)值進行比較(圖2b)。如果處理器判定它的加權(quán)值等于存儲在共享資源26中的值,那么那個處理器就認(rèn)為是已經(jīng)從處理器12-16中被選出的。
      多處理器系統(tǒng)內(nèi)的每個處理器基本上以同步(即,近似同時)的方式來執(zhí)行上述處理器選擇技術(shù)。在下面結(jié)合圖2a-2c更詳細描述的示例中,所述技術(shù)是利用非易失性存儲器32內(nèi)存儲的固件來實現(xiàn)的。另外,應(yīng)當(dāng)認(rèn)識到的是,盡管把圖1中所示的多處理器系統(tǒng)10描繪成具有三個處理器,但是如果期望的話,則下面結(jié)合圖2a-2c所描述的技術(shù)也可以同具有兩個處理器或三個以上的處理器的多處理器系統(tǒng)一起使用。
      圖2a-2c描繪了這樣一種方式的示例,采用該方式,圖1中所示的多處理器系統(tǒng)10能夠被配置成能在初期的固件執(zhí)行期間選擇其中一個處理器12-16來起B(yǎng)SP的作用,或者執(zhí)行非多處理器安全的其它功能。圖2a描繪了通過在各個等待循環(huán)中收集和捕獲處理器12-16然后基本上同時地從它們的等待循環(huán)中釋放該處理器12-16來基本使多處理器系統(tǒng)10內(nèi)的處理器12-16同步的第一階段例程的示例。更具體而言,隨著每個處理器12-16開始執(zhí)行第一階段或例程,它們利用它們各個的ITC寄存器38-42來建立定時器(塊56)以便測量這樣一個時間,所述時間大于或等于最壞情況下處理器12-16中第一個開始執(zhí)行第一階段或例程的第一時間與處理器12-16中最后一個開始執(zhí)行第一階段或例程的稍后第二時間之間的時間差。具體來講,因為處理器12-16可以以不同的速率執(zhí)行指令,所以處理器12-16將在不同的時間建立它們的定時器。例如,在使用圖2a-c中所示的處理器選擇技術(shù)來為系統(tǒng)10選擇BSP的情況下,處理器12-16可以開始執(zhí)行第二階段或例程,由此在系統(tǒng)10復(fù)位后的不同時間建立它們的定時器(塊56)。
      正如下面結(jié)合塊58-64更詳細論述的那樣,在每個處理器12-16內(nèi)建立定時器,以便當(dāng)定時器首次到期的處理器執(zhí)行塊64所表示的活動時,使所有處理器12-16都能于基本上同時在被釋放之前、在它們各自的等待循環(huán)(塊58-62)中被收集或捕獲,所述定時器等于第一處理器開始執(zhí)行第一階段或例程的時間與最后一個的處理器開始執(zhí)行第一階段或例程的時間之間的最壞情況的延遲。
      在處理器12-16是Intel ItaniumTM處理器的情況下,處理器12-16優(yōu)選地利用其中所提供的ITC寄存器來建立它們的定時器。具體來講,處理器12-16可以通過讀取ITC寄存器的當(dāng)前值(塊56)然后稍后根據(jù)ITC寄存器的已知時鐘同步速率判斷ITC寄存器對應(yīng)于未來時間的未來計數(shù)值來建立它們的定時器,所述未來時間是最壞情況的時間延遲。當(dāng)然,其中處理器12-16建立它們的定時器的特定方式將會變化,以適合系統(tǒng)10所使用的特定硬件平臺或處理器類型。
      在建立每個處理器12-16的定時器之后,每個處理器12-16都對共享資源26進行讀(塊58),并且返回由一個數(shù)字字來表示的值,所述數(shù)字字所具有的位的數(shù)目等于用以表示與處理器12-16相關(guān)聯(lián)的加權(quán)值的最大位數(shù)。然后,每個處理器12-16判斷共享資源26所返回的值是否等于缺省值(塊60)。如上所述,優(yōu)選地,共享資源26是芯片組20內(nèi)的寄存器等,該寄存器例如具有像系統(tǒng)10復(fù)位后的零值之類的已知缺省值。然后,每個處理器12-16判斷(在塊56設(shè)定的)它的定時器是否已經(jīng)到期(塊62)。在處理器12-16是Intel itaniumTM處理器的情況下,當(dāng)?shù)竭_了所計算的未來計數(shù)值時,發(fā)生定時器到期。當(dāng)然,取決于多處理器系統(tǒng)10內(nèi)使用的特定硬件平臺(例如,處理器類型),定時器滿期可能會以不同的方式發(fā)生。在任何情況下,如果處理器12-16中的任何一個處理器判定它的定時器已經(jīng)到期,那么它就把最壞情況的加權(quán)值(該值不等于缺省值)寫入到共享資源26(塊64)中,然后將它的循環(huán)計數(shù)器初始化為零(塊66),以供由圖2b中描繪的第二階段或例程使用。否則,具有未到期定時器的處理器再次對共享資源26進行讀,并且判斷共享資源26所返回的值是否等于缺省值(塊58和60)。如果存儲在共享資源26中的值不等于缺省值,那么所有具有未到期定時器的處理器就都退出它們的等待循環(huán)并且初始化它們各自的循環(huán)計數(shù)器(塊66)。雖然這里所述的示例性實施例將最壞情況加權(quán)值寫入到共享資源(塊64)中,但是在塊64,處理器也可以替代地把它自己的加權(quán)值寫入到共享資源中,以便執(zhí)行這里所述的系統(tǒng)和方法而且能得到相同或相似的結(jié)果。
      因此,在執(zhí)行圖2a中所示的第一階段或例程期間,如果與處理器12-16中的任何一個相關(guān)聯(lián)的定時器到期,則那個處理器就把存儲在共享資源26中的值從缺省值改變?yōu)樽顗那闆r的加權(quán)值,借此從這些處理器各自的等待循環(huán)中釋放所有具有未到期定時器的處理器(即塊58-62)。照此,圖2a-c中所示的處理器選擇技術(shù)的第一階段或例程使所有處理器12-16都能基本上被同步,以便近乎同時地開始執(zhí)行圖2b中所示的第二階段或例程。
      然而,應(yīng)當(dāng)認(rèn)識到的是,處理器12-16通常在圖1中所示的第一階段或例程結(jié)束時未被極佳地同步。具體地說,與首次建立其定時器的處理器相關(guān)聯(lián)的定時器將首次到期,借此使那個處理器能先于其它處理器繼續(xù)執(zhí)行第二階段或例程。另外,具有未到期定時器的處理器將典型地必須執(zhí)行幾條附加指令以判定共享資源26中的值已被定時器首次到期的處理器改變。
      圖2b描繪了能夠由圖2a-c的處理器選擇技術(shù)使用以使具有最佳加權(quán)值的處理器能在共享資源26中存儲那個加權(quán)值的第二階段或例程的示例。在圖2a中所示的第一階段或例程的執(zhí)行之后,處理器12-16開始以基本上同步的方式來執(zhí)行第二階段或例程(即,所有處理器12-16近乎同時地開始執(zhí)行第二階段或例程)。如圖2b所示,每個處理器12-16都建立定時器以便測量預(yù)定的時間周期,所述時間周期大于或等于處理器12-16中的任何一個(即最慢慢的處理器)執(zhí)行與圖2b中所示的第二階段或例程相關(guān)聯(lián)的計算機代碼或固件所要求的最長的(即,最壞情況的)時間周期。
      然后,處理器12-16對共享資源26進行讀(塊70),并且將它們的加權(quán)值同存儲在共享資源26中的值進行比較(塊72)。圖1中所示的示例中的每個處理器12-16所使用的加權(quán)值都是用代表處理器的狀況良好或工作狀況的數(shù)值連接成的、關(guān)聯(lián)于處理器的唯一數(shù)值標(biāo)識符。
      圖3描繪了這樣一種方式,采用該方式,可以對處理器12-16進行編程以產(chǎn)生它們各自的加權(quán)值。利用圖3中所示的示例性技術(shù),每個處理器12-16都產(chǎn)生唯一的數(shù)值標(biāo)識符(塊100)。每個處理器12-16的唯一標(biāo)識符都是從處理器12-16內(nèi)的各個通用寄存器或任何其它類似的存儲裝置或存儲器中取出的。例如,在處理器12-16是IntelItaniumTM處理器的情況下,每個處理器12-16內(nèi)的處理器抽象層(PAL)為其各自的處理器提供唯一標(biāo)識符。例如,處理器12-16可以具有各自的唯一數(shù)值標(biāo)識符1、2和3。
      處理器12-16根據(jù)處理器的一個或多個屬性-諸如像處理器執(zhí)行速度、處理器殼體溫度或任何其它期望的參數(shù)或?qū)傩曰騾?shù)與屬性的組合來產(chǎn)生它們各自的狀況良好值(塊102)。例如,在一個更大的數(shù)值對應(yīng)于最佳相對狀況良好的情況下,處理器的相對狀況良好可以從1-9這個范圍變化。
      然后,每個處理器12-16都將它的唯一標(biāo)識符與它的狀況良好值連接起來(塊104),以形成那個處理器的加權(quán)值。因此,在唯一標(biāo)識符從1到3這個范圍變化、而可能的狀況良好從1到9這個范圍變化的情況下,處理器12-16的可能加權(quán)值就從11到93到變化,在其中加權(quán)值的10位置代表處理器的相對狀況良好,而1位置表示唯一處理器標(biāo)識符。然后,每個處理器12-16在寄存器等等內(nèi)本地存儲它的加權(quán)值(塊106)。
      再次參照圖2b,如果處理器的加權(quán)值(例如,與其唯一標(biāo)識符相連接的其狀況良好值)優(yōu)于(例如,數(shù)值上大于)當(dāng)前存儲在共享資源26中的值,那么該處理器就嘗試對共享資源26進行寫(塊74)。對于圖2b中所示的例程的第一次迭代而言,存儲在共享資源26的值等于預(yù)先由第一例程或階段存儲的最壞情況的加權(quán)值(塊64),所述最壞情況的加權(quán)值在上面的示例中是″11″。當(dāng)然,最壞情況的值將依可能的狀況良好值的范圍以及唯一標(biāo)識符而變。
      因為處理器12-16基本上同時地執(zhí)行圖2b中所示的第二例程或階段,一個固有的競爭條件存在于如下的處理器當(dāng)中,這些處理器確定它們比當(dāng)前存儲在共享資源內(nèi)的值具有更好的加權(quán)值但是尚未把它們的值寫入到共享資源中。其結(jié)果是,一個或多個處理器12-16可以嘗試以大致相同時間將它們的加權(quán)值寫入到共享資源26中,不過最終只有其中一個處理器12-16將會成功地完成這一操作。然而,正如下面更詳細描述的那樣,圖2b中所示的第二階段或例程的每一次連續(xù)迭代都減少了參與競爭條件的處理器的數(shù)目,以使得確保該具有最佳加權(quán)值的處理器最終能夠?qū)⑵渲祵懭氲焦蚕碣Y源26。如圖2b所示,判定它們的加權(quán)值不優(yōu)于當(dāng)前存儲在共享資源26中的值的處理器不會嘗試對共享資源26進行寫。
      在嘗試將它們的加權(quán)值寫入到共享資源26或者判定不應(yīng)該做這類嘗試之后,處理器12-16判斷它們的定時器是否已經(jīng)到期(塊76)。如果處理器判定它的定時器尚未到期,則它就繼續(xù)檢查它的定時器(塊76),并由此在一個循環(huán)中等待。因為處理器12-16已經(jīng)都用相同的值建立或設(shè)置它們的定時器(塊68)來測量如下這樣的一個時間,所述時間大于或等于處理器12-16中最慢的一個處理器執(zhí)行由塊70、72和74代表的活動所要求的時間,所以所有處理器12-16最終都將在同時處于它們各自的等待循環(huán)中(塊76)。換言之,最快的處理器將只是要比其它處理器更加長久地保持在其等待循環(huán)中。然而,所有處理器定時器都將基本上同時地到期,而且因為當(dāng)定時器到期時所有處理器都處于它們的等待循環(huán)中(塊76),所以所有處理器都將基本上同時地繼續(xù)遞增它們的循環(huán)計數(shù)器(塊78)。
      處理器12-16在遞增它們的循環(huán)計數(shù)器后,就判斷它們的循環(huán)計數(shù)器是否小于或等于處理器的數(shù)目,這一數(shù)目在圖1中所示的示例中是3。如果循環(huán)計數(shù)器小于或等于3,則處理器12-16就重建它們的定時器(塊68),并且重復(fù)與塊68-80相關(guān)聯(lián)的活動。在另一方面,如果循環(huán)計數(shù)器大于3(即,等于4),處理器12-16執(zhí)行與圖2c中所示的第三階段或例程相關(guān)聯(lián)的活動。正如能夠從上文中認(rèn)識到的是,第二階段或例程內(nèi)的等待循環(huán)(塊76)確保處理器12-16以基本上同步的方式來執(zhí)行與塊68-80相關(guān)聯(lián)的活動。此外,應(yīng)當(dāng)認(rèn)識到的是,處理器12-16可能難以交換與系統(tǒng)10內(nèi)當(dāng)前活動的(或存在的)處理器的數(shù)目有關(guān)的信息,在處理器間通信受限或無法通信時的早期的固件階段期間更是如此。因此,如果不能確實地知道將在多處理器系統(tǒng)內(nèi)使用多少處理器的話,就可以將循環(huán)計數(shù)器設(shè)置成對等于特定硬件平臺支持來執(zhí)行這里所述的處理器選擇技術(shù)的最大處理器數(shù)目的迭代次數(shù)進行計數(shù)。
      圖2c描繪了能用于使具有最佳加權(quán)值的處理器能把它自身視作為所選處理器的第三階段或例程的示例。如圖2c所示,每個處理器12-16對共享資源26進行讀(塊82),并且判斷存儲在共享資源26中的值是否等于它的加權(quán)值(塊84)。如果處理器(例如,處理器16)判定它的加權(quán)值等于存儲在共享資源26中的值,則那個處理器(例如,處理器16)就認(rèn)定它已經(jīng)被選定執(zhí)行諸如系統(tǒng)10的引導(dǎo)過程之類的活動。在另一方面,如果處理器(例如,處理器16)判定它的加權(quán)值不等于存儲在共享資源26中的值,則那個處理器(例如,處理器16)就認(rèn)定它尚未被選定(塊88),并且例如可以進入空閑狀態(tài)。
      雖然結(jié)合圖2a-2c示出并描述的示例性處理器選擇技術(shù)導(dǎo)致選擇單一處理器,但是還能修改所述技術(shù)以從多個處理器中選擇一組處理器。舉例來說,貫穿圖2a-2c中所示的示例使用的唯一標(biāo)識符的消除,就使得能選擇一組具有相同狀況良好值的處理器。具體來講,如果圖1中所示的處理器12-16具有各個狀況良好值7、7和2,那么這類選擇技術(shù)就會導(dǎo)致選擇處理器12和14,因為它們具有相同的最高狀況良好值。
      盡管依照這里已經(jīng)描述的本發(fā)明的教導(dǎo)實現(xiàn)了確定的方法和設(shè)備,但是本專利的覆蓋范圍不限于此。相反,本專利涵蓋了字面上或根據(jù)等效原則而明確落入所附權(quán)利要求的范圍內(nèi)的本發(fā)明的教導(dǎo)的所有實施例。
      權(quán)利要求
      1.一種從多處理器系統(tǒng)內(nèi)的多個處理器中選擇處理器的方法,包括將加權(quán)值與多個處理器中的每一個相關(guān)聯(lián);比較加權(quán)值;以及根據(jù)加權(quán)值的比較,從多個處理器中選擇至少其中一個處理器。
      2.如權(quán)利要求1所述的方法,其中將加權(quán)值與多個處理器相關(guān)聯(lián)包括利用可表示與每個加權(quán)值相關(guān)聯(lián)的處理器的相對狀況良好的參數(shù)來產(chǎn)生加權(quán)值。
      3.如權(quán)利要求2所述的方法,其中產(chǎn)生加權(quán)值包括使用與處理器相關(guān)聯(lián)的唯一標(biāo)識符以致每個加權(quán)值都不同于其它的加權(quán)值,并且每個加權(quán)值都唯一地只與多個處理器中的其中一個相關(guān)聯(lián)。
      4.如權(quán)利要求1所述的方法,進一步包括在比較加權(quán)值之前先基本上使多個處理器的操作同步。
      5.如權(quán)利要求4所述的方法,其中在比較加權(quán)值之前先基本上使處理器的操作同步包括讀取多處理器系統(tǒng)內(nèi)的共享資源以判斷與多個處理器相關(guān)聯(lián)的多個定時器中的任何一個是否已經(jīng)到期。
      6.如權(quán)利要求5所述的方法,其中讀取共享資源以判斷多個定時器中的任何一個是否已經(jīng)到期包括讀取非多處理器安全的寄存器,以及建立每個定時器以測量這樣一個時間,所述時間大于或等于多個處理器中的第一個建立多個定時器中的一個的第一時間與多個處理器中的最后一個建立多個定時器中的另一個的稍后的第二時間之間的時間差。
      7.如權(quán)利要求1所述的方法,其中比較加權(quán)值包括讀取多處理器系統(tǒng)內(nèi)的共享資源,以及判斷存儲在共享資源中的值是否優(yōu)于加權(quán)值。
      8.如權(quán)利要求7所述的方法,其中判斷存儲在共享資源中的值是否優(yōu)于加權(quán)值包括判斷存儲在共享資源中的值在數(shù)值上是否大于加權(quán)值。
      9.如權(quán)利要求7所述的方法,進一步包括如果至少其中一個加權(quán)值優(yōu)于存儲在共享資源中的值,則對共享資源進行寫。
      10.如權(quán)利要求7所述的方法,其中由多個處理器中的每一個重復(fù)對共享資源進行讀取以及判斷存儲在共享資源中的值是否優(yōu)于加權(quán)值多次,所述次數(shù)等于多個處理器中的處理器的數(shù)目。
      11.如權(quán)利要求10所述的方法,進一步包括設(shè)置與多個處理器相關(guān)聯(lián)的定時器,以測量大于或等于與多個處理器相關(guān)聯(lián)的最壞情況的執(zhí)行時間的時間。
      12.如權(quán)利要求11所述的方法,進一步包括利用定時器和等待循環(huán)來保持多個處理器在重復(fù)地對共享資源進行讀取以及判斷加權(quán)值是否優(yōu)于存儲在共享資源中的值上基本上同步。
      13.如權(quán)利要求1所述的方法,其中根據(jù)加權(quán)值的比較從多個處理器中選擇至少其中一個處理器包括選擇具有最佳加權(quán)值的處理器。
      14.如權(quán)利要求13所述的方法,其中選擇具有最佳加權(quán)值的處理器包括選擇具有數(shù)值最大的加權(quán)值的處理器。
      15.如權(quán)利要求1所述的方法,其中根據(jù)加權(quán)值的比較從多個處理器中選擇至少其中一個處理器包括選擇其加權(quán)值存儲在共享資源中的處理器。
      16.一種多處理器系統(tǒng),包括互連網(wǎng)絡(luò);耦合于該互連網(wǎng)絡(luò)的共享資源;和耦合于該互連網(wǎng)絡(luò)的多個處理器,其中所述處理器被編程以將加權(quán)值與多個處理器中的每一個相關(guān)聯(lián),比較加權(quán)值并且根據(jù)加權(quán)值的比較從多個處理器中選擇至少其中一個處理器。
      17.如權(quán)利要求16所述的方法,其中所述處理器被編程以利用可表示與每個加權(quán)值相關(guān)聯(lián)的處理器的相對狀況良好的參數(shù)來產(chǎn)生每個加權(quán)值。
      18.如權(quán)利要求17所述的系統(tǒng),其中所述處理器被編程以利用與處理器相關(guān)聯(lián)的唯一標(biāo)識符來產(chǎn)生加權(quán)值,以使得每個加權(quán)值都不同于其它的加權(quán)值,并且每個加權(quán)值都唯一地只與多個處理器中的其中一個相關(guān)聯(lián)。
      19.如權(quán)利要求16所述的系統(tǒng),其中所述處理器被編程以在比較加權(quán)值之前先基本上使彼此同步。
      20.如權(quán)利要求16所述的系統(tǒng),其中所述處理器被編程以通過讀取多處理器系統(tǒng)內(nèi)的共享資源來比較加權(quán)值,并判斷存儲在共享資源中的值是否優(yōu)于加權(quán)值。
      21.如權(quán)利要求16所述的系統(tǒng),其中所述處理器被編程以根據(jù)加權(quán)值的比較、通過選擇具有最佳加權(quán)值的處理器來從多個處理器中選擇至少其中一個處理器。
      22.一種處理器選擇系統(tǒng),包括計算機可讀介質(zhì);和存儲在計算機可讀介質(zhì)上的計算機代碼,其適合于被處理器執(zhí)行以便將加權(quán)值與處理器相關(guān)聯(lián);將該處理器的加權(quán)值和與其它處理器相關(guān)聯(lián)的其它加權(quán)值進行比較;以及如果該處理器的加權(quán)值優(yōu)于其它加權(quán)值,則選擇該處理器。
      23.如權(quán)利要求22所述的系統(tǒng),其中所述計算機代碼適合于被處理器執(zhí)行以便如果該處理器的加權(quán)值在數(shù)值上大于其它加權(quán)值則選擇該處理器。
      24.如權(quán)利要求22所述的系統(tǒng),其中所述計算機代碼適合于被處理器執(zhí)行以便利用可表示處理器的相對狀況良好的參數(shù)來產(chǎn)生與處理器相關(guān)聯(lián)的加權(quán)值。
      25.如權(quán)利要求24所述的系統(tǒng),其中所述計算機代碼適合于被處理器執(zhí)行以便利用與處理器相關(guān)聯(lián)的唯一標(biāo)識符來產(chǎn)生加權(quán)值。
      26.一種用于多處理器系統(tǒng)的、從多個處理器中選擇處理器的方法,包括基本上使多個處理器同步;比較與多個處理器相關(guān)聯(lián)的加權(quán)值;以及識別多個處理器中具有最佳加權(quán)值的一個。
      27.如權(quán)利要求26所述的方法,其中識別多個處理器中具有最佳加權(quán)值的一個包括識別具有數(shù)值最大的加權(quán)值的處理器。
      28.如權(quán)利要求26所述的方法,包括將多個處理器中所識別的一個指定為多處理器系統(tǒng)的自引導(dǎo)處理器。
      29.如權(quán)利要求26所述的方法,其中比較與多個處理器相關(guān)聯(lián)的加權(quán)值包括重復(fù)地讀取存儲在共享資源中的值,并且如果至少其中一個加權(quán)值在數(shù)值上大于存儲在共享資源中的值,則在共享資源中存儲這個加權(quán)值。
      30.一種多處理器系統(tǒng),包括經(jīng)由互連網(wǎng)絡(luò)而彼此耦合的多個處理器,其中所述處理器被編程以使基本上使彼此同步;比較與多個處理器相關(guān)聯(lián)的加權(quán)值;以及識別多個處理器中具有最佳加權(quán)值的一個。
      31.如權(quán)利要求30所述的多處理器系統(tǒng),其中所述處理器被編程以通過識別多個處理器中具有數(shù)值最大的加權(quán)值的一個來識別多個處理器中具有最佳加權(quán)值的一個。
      32.如權(quán)利要求30所述的多處理器系統(tǒng),其中所述處理器被編程以將多個處理器中所識別的一個選擇為多處理器系統(tǒng)的自引導(dǎo)處理器。
      33.一種用于多處理器系統(tǒng)的處理器,包括計算機可讀介質(zhì);和存儲在計算機可讀介質(zhì)上的計算機代碼,其適合于被處理器執(zhí)行以使該處理器基本上與另一個處理器同步,將與該處理器相關(guān)聯(lián)的第一加權(quán)值和與另一個處理器相關(guān)聯(lián)的第二加權(quán)值進行比較,并且如果第一加權(quán)值優(yōu)于第二加權(quán)值則選該擇處理器。
      34.如權(quán)利要求33所述的處理器,其中第一加權(quán)值和第二加權(quán)值都與每個處理器各自的狀況良好相關(guān)聯(lián)。
      35.一種引導(dǎo)具有多個處理器的系統(tǒng)的方法,包括在結(jié)束系統(tǒng)的引導(dǎo)過程之前,先基本上使處理器的操作同步;以及根據(jù)處理器的相對性能特性,將多個處理器中的一個選擇為自引導(dǎo)處理器。
      36.如權(quán)利要求35所述的方法,其中根據(jù)處理器的相對性能特性將多個處理器中的一個選擇為自引導(dǎo)處理器包括選擇多個處理器中具有最佳加權(quán)值的一個。
      37.如權(quán)利要求36所述的方法,其中選擇多個處理器中具有最佳加權(quán)值的一個包括選擇多個處理器中具有數(shù)值最大的值的一個。
      38.如權(quán)利要求35所述的方法,其中根據(jù)處理器的相對性能特性將多個處理器中的一個選擇為自引導(dǎo)處理器包括根據(jù)至少其中一個處理器指令執(zhí)行速度、處理器殼體溫度和處理器抽象層信息,將多個處理器中的一個選擇為自引導(dǎo)處理器。
      39.如權(quán)利要求35所述的方法,其中根據(jù)處理器的相對性能特性將多個處理器中的一個選擇為自引導(dǎo)處理器包括讀取非多處理器安全的共享資源中存儲的加權(quán)值。
      40.一種選擇自引導(dǎo)處理器的方法,包括將狀況良好值分配給處理器組內(nèi)的每個處理器;以及通過重復(fù)對共享資源進行讀和寫來比較引導(dǎo)操作期間的狀況良好值。
      41.如權(quán)利要求41所述的方法,其中通過重復(fù)對共享資源進行讀和寫來比較引導(dǎo)操作期間的狀況良好值包括將最佳狀況良好值寫入到共享資源中。
      42.如權(quán)利要求41所述的方法,其中將最佳狀況良好值寫入到共享資源中包括將數(shù)值最大的值寫入到共享資源中。
      42.如權(quán)利要求41所述的方法,其中所述共享資源不是多處理器安全的。
      43.一種選擇自引導(dǎo)處理器的方法,包括在復(fù)位操作之后,基本上使多個處理器同步;使處理器多次競爭共享資源;以及讀取共享資源中的數(shù)據(jù)以便選擇自引導(dǎo)處理器。
      44.如權(quán)利要求43所述的方法,其中所述共享資源不是多處理器安全的。
      45.如權(quán)利要求43所述的方法,其中讀取共享資源中的數(shù)據(jù)以便選擇自引導(dǎo)處理器包括讀取共享資源中的加權(quán)值。
      全文摘要
      一種多處理器系統(tǒng)(10),包括互連網(wǎng)絡(luò)(18)、耦合于該互連網(wǎng)絡(luò)的共享資源(26)以及彼此耦合且經(jīng)由該互連網(wǎng)絡(luò)而耦合于共享資源的多個處理器(12、14、16)。對處理器進行編程以將加權(quán)值與多個處理器中的每一個相關(guān)聯(lián),比較加權(quán)值,并且根據(jù)加權(quán)值的比較,從多個處理器中選擇至少其中一個處理器。
      文檔編號G06F15/177GK1659516SQ03813629
      公開日2005年8月24日 申請日期2003年6月13日 優(yōu)先權(quán)日2002年6月13日
      發(fā)明者T·謝林 申請人:英特爾公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1