專利名稱::用于確定一組健康的處理器和用來引導系統的關聯固件的系統和方法
技術領域:
:本發明一般地涉及微處理器系統,更具體地說涉及能夠利用現場可升級固件進行多處理器操作的微處理器系統。
背景技術:
:微處理器系統內的處理器可能會依賴于固件來執行重置事件后的自檢和啟動操作。在多處理器系統中,即使是同一通用處理器系列中的處理器,由于處理器速度、步進版本級別(steppinglevel)、某種體系結構性的修改版本(revision)以及其他許多參數,也會彼此不同。因此,固件可能包含若干模塊,這些模塊對于一個通用處理器系列內的一組處理器是專用的。另外,可能由于一些原因需要對這些固件模塊進行現場升級。閃存或其他現場可升級存儲器最初可包含初始固件模塊,在以后的日期可用更新的固件模塊對這些模塊進行重寫。然而,由于可對閃存模塊進行寫,因此它可能會被破壞。控制對固件進行更新的那個固件自身也可能會被破壞,因而不能對系統進行現場恢復。在此情形下,可能需要將系統返回給制造商,以將該閃存用包含未被破壞的固件的新閃存模塊進行物理替換。在附圖中以實施例而非限制性的方式示出了本發明,其中相同的標號表示相同的元件圖1是根據一個實施方案的系統硬件組件的示意圖。圖2根據一個實施方案示出了存儲器中的軟件組件。圖3是根據本發明的一個實施方案的組件間消息傳遞圖。圖4的流程圖根據本發明的一個實施方案,示出了本地處理器健康狀況的導出。圖5的流程圖根據本發明的一個實施方案,示出了健康處理器的選擇和初始化。具體實施例方式下面的描述說明了用于在多處理器系統中選擇并初始化處理器的技術。在下面的描述中,給出了大量的具體細節,例如邏輯實現方式、軟件模塊分配、總線信令技術以及操作細節,以更透徹地理解本發明。然而,本領域的普通技術人員將會認識到,沒有這些具體細節也可以實施本發明。在其他情形下,沒有詳細示出一些控制結構、門級電路和完整的軟件指令序列,以免混淆本發明。利用在此包含的描述,本領域的普通技術人員將能實現合適的功能而無需過多的試驗。本發明是以微處理器系統內的硬件的形式公開的。然而,本發明也可以其他形式的處理器來實施,例如數字信號處理器、微計算機或大型計算機。類似地,本發明是使用處理器間中斷作為處理器間的信令傳送方法而進行公開的。然而,本發明也可使用其他形式的信令傳送來實施。在一個實施方案中,每個處理器檢查它自己的操作所需的固件模塊,從而開始多處理器中健康處理器的選擇和初始化。然后,每個處理器確定它自己的處理器健康狀態。然后,一種確定性方法選擇一個臨時主處理器,該臨時主處理器收集所述處理器的所有健康狀態,并確定這樣一組處理器,其中的所有處理器都具有最高的可用處理器健康狀態。臨時主處理器然后使能(enable)這一組中的處理器以繼續引導操作,并對不是這一組的成員的處理器的執行進行停機或禁用它們(必要時,包括臨時主處理器自己)。現在參考圖1,根據一個實施方案,示出了系統硬件組件的示意圖。示出了若干處理器,即中央處理單元CPUA110、CPUB114、CPUC118和CPUD122。在其他實施方案中,可能只有一個處理器,或者有一對處理器或多于4個的處理器。在一個實施方案中,所述處理器可以與IntelItaniumTM處理器系列。諸如CPUA110、CPUB114、CPUC118和CPUD122等的處理器可分別包括一個或更多中斷請求寄存器(IRR),例如所示出的IRR112、116、120和124。發送到處理器例如CPUA110的典型中斷可向IRR112寫一個值,其中IRR112可包含一個向量,一般地描述了對該中斷進行服務所需的存儲器位置。CPUA110可使能或禁用中斷服務。當禁用中斷服務時,IRR112可以仍然接收所述向量,但CPUA110可能不會自動對該中斷進行服務。然而,CPUA110可以仍然讀包含在IRR112中的向量。以這種方式對被禁用的中斷服務進行操作經常被稱為“輪詢模式”。另外,每個處理器都包含稱為LID的唯一ID。LID用作為該處理器在系統總線上的唯一地址。中斷可具體地指向具有已知LID的處理器。LID值可存儲在LID寄存器中,例如CPUA110、CPUB114、CPUC118和CPUD122各自的LID寄存器102、104、106和108。在其他實施方案中,LID值可存儲在寄存器之外的其他電路元件中。處理器CPUA110、CPUB114、CPUC118和CPUD122可通過系統總線130彼此連接,并與芯片組134相連。經由系統總線130和芯片組134的連接使得處理器可訪問系統隨機訪問存儲器(RAM)136、基本輸入輸出系統(BIOS)閃存138以及各種輸入/輸出(I/O)設備,例如圖形控制器140和各種程序存儲設備。這些程序存儲設備可包括系統固定盤144和用于可拆卸介質146的驅動器。在各種實施方案中,用于可拆卸介質146的驅動器可以是磁帶、可拆卸磁盤、軟盤、電光盤或壓縮盤-只讀存儲器(CD-ROM)或數字多功能盤-只讀存儲器(DVD-ROM)之類的光盤。I/O設備可以通過專用接口(例如高級圖象端口(AGP)142)或通用接口連接到芯片組134,所述通用接口例如外圍部件互連(PCI)總線(未示出)、通用串行總線(USB)(未示出)或集成驅動電子設備(IDE)總線148。其他的I/O設備可包括到局域網(LAN)150或廣域網(WAN)152的連接。在其他實施方案中,可使用許多其他接口。計算機系統100可在其體系結構中的某處包含硬件信號量(semaphore)寄存器。硬件信號量寄存器可被定義為這樣的寄存器,其在重置事件后的首次讀時返回一個值,并在所述首次讀之后的讀時返回另一個值。在一個實施方案中,芯片組134可包括硬件信號量寄存器的一個具體實施例,引導標志(BOFL)寄存器154。BOFL寄存器154在系統初始化期間可用來確定CPUA110、CPUB114、CPUC118和CPUD122中的哪個處理器可作為臨時主處理器。在一個實施方案中,BOFL寄存器154可在重置事件后的首次讀時返回一個值,并在之后的讀時返回另一個值。在另一個實施方案中,重置事件后,處理器每一次讀BOFL寄存器154時,都按預定順序給出一個不同的數字。第一個讀BOFL寄存器154的處理器接收值0。對BOFL寄存器154的后續讀返回非零值。主處理器是成功地從BOFL讀到值0的處理器。在一個實施方案中,操作系統可被安裝在系統固定盤144上,而操作系統的內核可被裝載到系統RAM136中。在其他實施方案中,操作系統可通過LAN150或WAN152而裝載或執行。現在參考圖2,其根據一個實施方案,示出了存儲器中的軟件組件。在一個實施方案中,BIOS組件被示出為駐留在圖1的BIOS閃存138中,但在其他實施方案中,BIOS可能駐留在其他形式的非易失性存儲器中,或在其他形式的易失性存儲器中。當軟件組件駐留在非易失性存儲器中時,它們可被稱為固件。BIOS可包括一般情況下與處理器相關的模塊,例如處理器抽象層(PAL)固件,或者一般情況下非處理器相關的模塊,例如系統抽象層(SAL)。不同的處理器可能需要不同修改版本或類型的PAL固件,這部分是因為處理器修改版本中的差別。如果可更新系統內的PAL或SAL固件的版本,并修改閃存以適應更新的版本,則可能是有優勢的。然而,試圖更新閃存中的BIOS時可能會出現嚴重的問題。在一個簡單的實施例中,如果在更新時電源被中斷,則閃存可能會包含BIOS被破壞的拷貝,包括BIOS控制閃存寫的那一部分。這一情況發生時,除了焊(solder)進包含正確代碼的新閃存之外沒有其他修復辦法。為了降低這些問題的發生頻度,在一個實施方案中,可對PAL代碼和SAL進行劃分。PAL代碼可被劃分為系統初始化所需最低限度的PAL部分,稱為PAL-A;以及其余代碼,在一個實施方案中可稱為PAL-B。而且,PAL-A然后可被細分為獨立于處理器的基本PAL-A(通用PAL-A),以及給定處理器修改版本專用的PAL-A代碼(專用PAL-A)。由于通用PAL-A獨立于處理器,因此,它不需要被更新,因而可駐留在閃存中禁止進行更新的區域。類似地,可將SAL劃分為SAL-A和SAL-B,其中SAL-A是系統初始化或恢復(包括閃存更新)所需的最低限度的SAL部分。SAL-A可進一步細分為將來不再會被更新的基本SAL-A(通用SAL-A)和可能不時需要更新的SAL-A(專用SAL-A)。為了避免更新期間的破壞,在一個實施方案中,通用PAL-A和通用SAL-A可以位于閃存不能被修改的保護部分中。為了增加系統可用性和可靠性,專用PAL-A和專用SAL-A可以有多個拷貝。考慮這樣一種系統,其中可包含兩種修改版本級別的處理器,出于方便可標為類型1處理器和類型2處理器。在其他實施方案中,可能還有其他修改版本級別的其他處理器。在圖2的實施方案中,對于類型1處理器,可以有通用PAL-A的一個拷貝220,但有專用PAL-A的兩個拷貝(類型1基本專用PAL-A230和類型1輔助專用PAL-A240)。類似地,對于類型2處理器,可以有專用PAL-A的兩個拷貝(類型2基本專用PAL-A232和類型2輔助專用PAL-A242)。還可以有通用SAL-A的一個拷貝222,以及專用SAL-A的兩個拷貝,基本專用SAL-A246和輔助專用SAL-A260。在其他實施方案中,閃存中還可以有其他的固件拷貝和類型。在一個實施方案中,所述拷貝可以是精確的拷貝,但在其他實施方案中,所述拷貝可以具有類似的功能但不是精確的拷貝。當一個處理器(例如一個類型1處理器)在重置事件后開始執行時,該處理器在通用PAL-A220中的預定位置(稱為重置向量)處開始執行。執行通用PAL-A220的處理器可以使用基本固件接口表(FIT)224或輔助FIT234來發現其他代碼模塊的位置。通用PAL-A220代碼通過位于固定位置基本FIT指針210和輔助FIT指針212中的向量來得知基本FIT224和輔助FIT234的入口點。在處理器上執行的通用PAL-A220可使用這些FIT指針來定位FIT,然后使用FIT來定位并驗證其他軟件模塊。例如,類型1處理器可使用基本FIT指針210來發現基本FIT224的位置。然后,類型1處理器可使用基本FIT224內的位置、大小、校驗和以及其他參數來定位并檢查類型1基本專用PAL-A230。如果類型1處理器不能定位或驗證類型1基本專用PAL-A230,則它可以使用輔助FIT指針212和輔助FIT234來定位并檢查類型1輔助專用PAL-A240。如果類型1處理器定位并驗證了類型1基本專用PAL-A230或類型1輔助專用PAL-A240,則類型1處理器然后可嘗試定位并檢查SAL-A。通用PAL-A220定位類型1基本專用PAL-A230或類型1輔助專用PAL-A240的入口點并開始執行。然后,類型1基本專用PAL-A230或類型1輔助專用PAL-A240定位通用SAL-A222,并將控制轉交給它,通用SAL-A222然后驗證它自身和基本專用SAL-A246或輔助專用SAL-A260。在一個實施方案中,類型1處理器使用基本FIT指針210和基本FIT224來定位并檢查基本專用SAL-A246。如果類型1處理器不能定位并驗證基本專用SAL-A246,則類型1處理器可使用輔助FIT指針212和輔助FIT234來定位并檢查輔助專用SAL-A260。在定位并驗證初始化或恢復所需的這些PAL和SAL的部分后,在處理器上執行的通用SAL-A222可確定與該處理器相關的處理器健康狀態。健康狀態的計算可由通用SAL-A222基于各種固件有效性校驗(包括校驗和)來進行,在將控制轉交給通用SAL-A222時還可基于通用PAL-A提供的轉交狀態碼來進行。在確定哪種固件組件的組合具有令人滿意的健康狀態后,可對處理器健康狀態進行排名。在一個實施方案中,如果發現并驗證了基本專用PAL-A和基本專用SAL-A的拷貝,則處理器健康狀態可被確定為較高。如果發現并驗證了輔助專用PAL-A和輔助專用SAL-A的拷貝,則處理器健康狀態可被確定為稍微較低。如果只發現并驗證了基本專用PAL-A和輔助專用SAL-A、或輔助專用PAL-A和基本專用SAL-A的拷貝,則可確定甚至更低的處理器健康狀態。最后,如果未發現并驗證專用PAL-A或專用SAL-A的任何拷貝,則可確定最低或“致命性的”處理器健康狀態。現在參考圖3,根據本公開的一個實施方案,示出了組件間消息傳遞圖。在一個實施方案中,每一個所述消息都可攜帶在處理器間中斷(IPI)中。在啟動處理器的自檢的重置事件之后,處理器可禁用中斷。當處理器禁用中斷時,或當處理器處于“輪詢”中斷模式時,向該處理器發送IPI仍可將一個向量寫入到該處理器的IRR中。在此情形下,置于處理器的IRR中的向量可代表消息發送者的LID、相對健康值或其他數據。在其他實施方案中,可使用其他攜帶所述消息的方式,例如專用硬件處理器間的信號,或在數據總線上復用多個專用信號。在圖3的實施方案中,示出了CPUA302、CPUB304和CPUC306,但在其他實施方案中可有較多或較少的處理器參與到所述處理中。在重置事件后,三個處理器(CPUA302、CPUB304和CPUC306)中的每一個都執行自檢。在一個實施方案中,自檢可包括確定處理器健康狀態,如上結合圖2所述。在每個處理器確定其自身的處理器健康狀態后,可能希望只允許那些具有最佳可用處理器健康狀態的處理器繼續進行引導操作。在其他實施方案中,性能需求可能使得希望允許具有可接受的處理器健康狀態的最大一組處理器繼續引導操作。在圖3的實施例中,所有的3個處理器都確定了非致命性的處理器健康狀態。每個處理器首先都假設它是主處理器,并給自己指定了主LID。需要這一步驟來確定不會丟失登記向量通信。在這一確定之后,每個處理器都讀芯片組308的BOFL寄存器310。第一個確定其處理器健康狀態的處理器(本實施例中是CPUB304)在重置事件后作出對BOFL寄存器310的首次BOFL寄存器讀312。因此,CPUB304成為主處理器,并繼續使用主LID來作為用于處理器間通信的標識符。在此實施例中,CPUA302是第二個確定其處理器健康狀態的處理器,并作出第二次BOFL寄存器讀314。因此,CPUA302成為從處理器,并使用唯一的非主LID(從1LID)作為用于處理器間通信的標識符。最后,在此實施例中,CPUC306是第三個確定其處理器健康狀態的處理器,并作出第三次BOFL寄存器讀316。因此,CPUC306成為從處理器,并使用唯一的非主LID(從2LID)作為用于處理器間通信的標識符。當處理器確定它是從處理器時,它計算一個唯一的從LID,并向使用預定主LID的處理器發送登記消息,該消息代表了它自己的LID。在一個實施方案中,可使用從PAL傳遞到SAL的地理唯一的標識符來計算唯一的從LID。在一個實施方案中,PAL可根據從物理處理器封裝上的一個或更多引腳上讀取的值來確定這些標識符。在圖3的實施例中,CPUA302和CPUC306分別向CPUB304發送它們的登記消息320、322。在一個實施方案中,CPUB304可以向發送了登記消息的處理器發出對應的健康請求消息來立即響應所述登記消息的接收。在其他實施方案中,CPUB304在用健康請求消息進行響應之前,可等待一段預定時間以接收所有的登記消息。對于圖3的實施例,CPUB304分別向CPUA302和CPUC306發送健康請求消息330、332。然后,CPUA302和CPUC306分別以健康響應消息340、342的形式,將它們的處理器健康狀態的拷貝發送到CPUB304。在其他實施方案中,實際的健康狀態可用與具體的健康狀態值具有預定關系的向量來替換。一旦具有主LID的處理器(此實施例中是CPUB304)接收到所有響應處理器的處理器健康狀態后,它可確定排名最高的可用處理器健康狀態。這一組的共同處理器健康狀態可稱為組健康狀態。在其他實施方案中,性能可能是一個問題,所確定的處理器組可能是這樣的組,其具有最多數量的具有可接受的處理器健康狀態的處理器。在這兩類實施方案中,具有主LID的處理器(本實施例中是CPUB304)然后發送發布(release)信號量(semaphore)消息到所有從處理器以及它自身。發布信號量可包括組健康狀態的拷貝。在其他實施方案中,實際的組健康狀態可用與組健康狀態具有預定關系的向量來替換。在圖3的實施例中,CPUB304分別發送發布信號量350、352和354到CPUA302、CPUC306以及它自身。每個處理器然后將由對應的發布信號量所代表的組健康狀態與它自己的處理器健康狀態進行比較。如果存在匹配,則該處理器進行引導操作。然而,如果不存在匹配,則該處理器停機或變為不活動,不進行引導操作。現在參考圖4,根據本公開的一個實施方案示出了導出局部處理器健康狀態的流程圖。在其他實施方案中,可進行其他固件測試、硬件測試或其某種組合來獲得另一種形式的局部處理器健康狀態。當圖4的處理在方框410開始時,PAL在重置事件后立即獲得控制,并在方框412計算PAL轉交狀態,將之存在寄存器中以供SAL使用。然后,PAL將控制轉交給SAL。PAL可在進入恢復校驗時提供這一轉交狀態,所述恢復校驗可包括確定PAL是否與當前處理器兼容或處理器是否是完全可工作的。然后在方框414,SAL檢查以前存儲的PAL轉交狀態。PAL轉交狀態與SAL執行的其他測試一起被用來計算復合局部健康。PAL轉交狀態可傳輸多種可能的錯誤的信息。在一個實施方案中,所述可能的錯誤可與一組4種狀態類別相關利用基本固件拷貝的正常操作;利用輔助固件拷貝的故障恢復(failover)操作;非冗余或非關鍵固件組件中的故障;以及致命故障。然后在方框418,可進行基本FIT指針和輔助FIT指針的邊界校驗。這可能是必要的,以防止對存儲器地址空間中受保護或保留區域進行的意外訪問,這些訪問可能會導致系統掛起(hang)。在方框422,可對基本FIT和輔助FIT進行校驗和測試。這些測試所返回的校驗和可用來防止被破壞的代碼的執行,或防止對被破壞的閃存表(flashtable)的搜索。然后在方框426,可檢查基本FIT和輔助FIT,以確定是否分別存在對應的基本專用SAL-A和輔助專用SAL-A。這一測試可確保存在合適的固件以支持任何必要的SAL-A測試。然后在方框430,可對在方框426中檢測的專用SAL-A的拷貝進行校驗和測試。這些測試所返回的校驗和又可用來防止被破壞的代碼的執行,或防止對被破壞的閃存表的搜索。在方框434,前面的方框的結果可用來形成復合局部處理器健康狀態。在一個實施方案中,可導出5個級別的處理器健康狀態。在其他實施方案中,可導出其他級別的處理器健康狀態。如果發現了有效的基本專用PAL-A和有效的基本專用SAL-A,則可確定最佳處理器健康狀態。如果只發現了有效的輔助專用PAL-A和有效的輔助專用SAL-A,則可確定次佳處理器健康狀態。如果只發現了有效的基本專用PAL-A和有效的輔助專用SAL-A,則可確定第三好的處理器健康狀態。如果只發現了有效的輔助專用PAL-A和有效的基本專用SAL-A,則可確定第四好的處理器健康狀態。最后,如果未發現PAL-A和SAL-A的有效組合,則可確定最壞的處理器健康狀態,并且這一狀態還可用其他嚴重錯誤條件來確定。現在參考圖5,根據本公開的一個實施方案示出了健康處理器的選擇和初始化的流程圖。系統內的每個處理器都可執行圖5的處理。重置事件后所述處理開始于方框510。確定局部處理器健康狀態后,處理器向自身指定主LID值,以確保不會丟失后續的登記事件。處理器然后在方框514讀BOFL寄存器。然后在判斷框518,處理器基于從BOFL讀取的值來確定它是否已成為主處理器。如果是,則處理器通過“是”路徑退出判斷框518,并啟動登記超時期間。在判斷框522,處理器確定超時期間是否結束。如果未結束,則處理器通過“否”路徑退出判斷框522,并在方框526接收任何出現的登記消息(如果有的話)。處理器確定對應于登記消息的發送者的LID。在方框530,處理器通過向對應的從處理器發送健康請求消息來響應在方框526中發現的任何登記消息。然后處理器返回到判斷框522。當超時期間結束時,處理器通過“是”路徑退出判斷框522。在方框534,處理器確定組健康狀態,并向從所接收的登記消息中識別出的所有LID發送包含組健康狀態的消息。然后在判斷框538,處理器確定組健康狀態是否與它自己的處理器健康狀態匹配。如果是,則所述處理通過“是”路徑退出判斷框538,并且處理器在方框540繼續引導操作。但是,如果不匹配,則所述處理通過“否”路徑退出判斷框538,并且處理器在方框544停機或變為不活動。然而,如果在判斷框518處理器確定它是從處理器,則處理器通過“否”路徑退出判斷框518。然后處理器向自身指定一個唯一的從LID。然后處理器在方框550向具有主LID的處理器發送代表了其LID值的登記消息。處理器然后等待,并在方框554接收對應的健康請求消息。然后在方框558,處理器在健康響應消息中發送它自己的處理器健康狀態。在方框560,處理器等待并接收發布信號量消息。然后在判斷框562,處理器確定組健康狀態是否與其處理器健康狀態匹配。如果是,則所述處理通過“是”路徑退出判斷框562,并且處理器在方框566繼續引導操作。然而,如果不匹配,則所述處理通過“否”路徑退出判斷框562,并且處理器在方框544停機或變為不活動。在前面的說明書中,己參考其具體的示例性實施方案來描述了本發明。然而,很明顯可對其作出各種變體和改變而不會偏離如在所附權利要求書中表明的更寬的精神和范圍。因此,本說明書和附圖應被看作是說明性而非限制性的。權利要求1.一種系統,包括第一處理器;在所述第一處理器上執行的通用固件;以及第一處理器專用固件的第一拷貝;其中所述第一處理器利用所述第一處理器專用固件的所述第一拷貝來確定第一處理器健康狀態。2.如權利要求1所述的系統,還包括第一表,用于定位所述第一處理器專用固件的所述第一拷貝。3.如權利要求2所述的系統,還包括所述第一處理器專用固件的第二拷貝,以及用于定位所述第一處理器專用固件的所述第二拷貝的第二表。4.如權利要求3所述的系統,其中通過測試所述第一表和所述第二表來確定所述第一處理器健康狀態。5.如權利要求3所述的系統,還包括利用所述第一處理器專用固件的第二處理器。6.如權利要求5所述的系統,其中所述第二處理器利用所述第一處理器專用固件的所述第一拷貝和所述第一處理器專用固件的所述第二拷貝來確定第二處理器健康狀態。7.如權利要求6所述的系統,其中所述第一處理器利用所述第一處理器健康狀態和所述第二處理器健康狀態來確定組健康狀態。8.如權利要求7所述的系統,其中所述第一處理器發送包含所述組健康狀態的第二處理器發布消息。9.如權利要求4所述的系統,還包括第三處理器、第三處理器專用固件的第一拷貝、以及所述第三處理器專用固件的第二拷貝。10.如權利要求9所述的系統,其中所述第三處理器利用所述第三處理器專用固件的所述第一拷貝和所述第三處理器專用固件的所述第二拷貝來確定第三處理器健康狀態。11.如權利要求10所述的系統,其中所述第一處理器利用所述第一處理器健康狀態和所述第三處理器健康狀態來確定組健康狀態。12.一種系統,包括第一處理器,用于確定第一處理器健康狀態;耦合到所述第一處理器的第二處理器,用于確定第二處理器健康狀態;以及耦合到所述第一處理器和所述第二處理器的硬件信號量寄存器。13.如權利要求12所述的系統,其中當所述第一處理器在所述第二處理器之前讀所述硬件信號量寄存器時,所述第一處理器利用所述第一處理器健康狀態和所述第二處理器健康狀態來確定組健康狀態。14.如權利要求13所述的系統,其中所述第一處理器向所述第二處理器發送包含所述組健康狀態的發布消息。15.如權利要求14所述的系統,其中如果所述組健康狀態對應于所述第二處理器健康狀態,則所述第二處理器繼續引導操作。16.如權利要求14所述的系統,其中所述第一處理器從所述硬件信號量寄存器讀第一值,并且所述第二處理器從所述硬件信號量寄存器讀第二值。17.如權利要求16所述的系統,其中所述第一處理器包括第一處理器中斷請求寄存器,所述第二處理器包括第二處理器中斷請求寄存器,其中所述第二處理器發送所述第二處理器健康狀態到所述第一處理器中斷請求寄存器。18.如權利要求17所述的系統,其中所述第一處理器發送所述組健康狀態到所述第二處理器中斷請求寄存器。19.一種方法,包括確定第一處理器健康狀態;確定第二處理器健康狀態;發送所述第二處理器健康狀態到第一處理器;根據所述第一處理器健康狀態和所述第二處理器健康狀態來確定組健康狀態;以及當所述組健康狀態對應于所述第二處理器健康狀態時,使能第二處理器以繼續引導操作。20.如權利要求19所述的方法,其中所述使能所述第二處理器的步驟包括發送所述組健康狀態到所述第二處理器。21.如權利要求20所述的方法,其中響應于健康狀態請求而進行所述的發送所述第二處理器健康狀態的步驟。22.如權利要求21所述的方法,還包括在所述第二處理器讀硬件信號量寄存器之前使所述第一處理器讀該硬件信號量寄存器。23.如權利要求22所述的方法,其中所述第一處理器讀硬件信號量寄存器的步驟包括接收第一值。24.如權利要求19所述的方法,其中所述確定所述第一處理器健康狀態的步驟包括利用通用處理器抽象層檢查第一固件接口表和第二固件接口表。25.如權利要求24所述的方法,其中所述利用通用處理器抽象層包括檢查第一處理器專用處理器抽象層的第一拷貝和第一處理器專用處理器抽象層的第二拷貝。26.如權利要求24所述的方法,其中所述確定所述第一處理器健康狀態的步驟包括確定第一處理器專用處理器抽象層的所述第一拷貝是否具有相關聯的系統抽象層的第一拷貝,并且還包括確定第一處理器專用處理器抽象層的所述第二拷貝是否具有相關聯的系統抽象層的第二拷貝。27.如權利要求19所述的方法,其中所述發送所述第二處理器健康狀態到第一處理器的步驟包括發送處理器間中斷到所述第一處理器。28.如權利要求27所述的方法,其中所述發送處理器間中斷到所述第一處理器的步驟包括當所述第一處理器己禁用中斷時,發送所述第二處理器健康狀態到第一處理器中斷請求寄存器。29.如權利要求28所述的方法,其中所述確定組健康狀態的步驟包括從所述第一處理器中斷請求獲取所述第二處理器健康狀態。30.如權利要求29所述的方法,還包括通過向所述第二處理器發送第二處理器發布消息來使能所述第二處理器,以繼續引導操作。31.如權利要求30所述的方法,其中所述使能所述第二處理器包括當所述第二處理器發布消息包括與所述第二處理器健康狀態相匹配的所述組健康狀態時,使能所述第二處理器。32.一種裝置,包括用于確定第一處理器健康狀態的裝置;用于確定第二處理器健康狀態的裝置;用于發送所述第二處理器健康狀態到第一處理器的裝置;用于根據所述第一處理器健康狀態和所述第二處理器健康狀態來確定組健康狀態的裝置;以及用于當所述組健康狀態對應于所述第二處理器健康狀態時,使能第二處理器以繼續引導操作的裝置。33.如權利要求32所述的裝置,其中所述用于使能所述第二處理器的裝置包括用于發送所述組健康狀態到所述第二處理器的裝置。34.如權利要求33所述的裝置,其中所述用于發送所述第二處理器健康狀態的裝置對健康狀態請求進行響應。35.如權利要求34所述的裝置,還包括用于在所述第二處理器讀硬件信號量寄存器之前使所述第一處理器讀該硬件信號量寄存器的裝置。36.如權利要求35所述的裝置,其中所述用于使所述第一處理器讀硬件信號量寄存器的裝置包括用于接收第一值的裝置。37.如權利要求32所述的裝置,其中所述用于確定所述第一處理器健康狀態的裝置包括用于利用通用處理器抽象層檢查第一固件接口表和第二固件接口表的裝置。38.如權利要求37所述的裝置,其中所述用于利用通用處理器抽象層的裝置包括用于檢查第一處理器專用處理器抽象層的第一拷貝和第一處理器專用處理器抽象層的第二拷貝的裝置。39.如權利要求38所述的裝置,其中所述用于確定所述第一處理器健康狀態的裝置包括用于確定第一處理器專用處理器抽象層的所述第一拷貝是否具有相關聯的系統抽象層的第一拷貝的裝置,并且還包括用于確定第一處理器專用處理器抽象層的所述第二拷貝是否具有相關聯的系統抽象層的第二拷貝的裝置。40.如權利要求39所述的裝置,其中所述用于發送所述第二處理器健康狀態到第一處理器的裝置包括用于發送處理器間中斷到所述第一處理器的裝置。41.如權利要求40所述的裝置,其中所述用于發送處理器間中斷到所述第一處理器的裝置包括用于當所述第一處理器已禁用中斷時,發送所述第二處理器健康狀態到第一處理器中斷請求寄存器的裝置。42.如權利要求41所述的裝置,其中所述用于確定組健康狀態的裝置包括用于從所述第一處理器中斷請求獲取所述第二處理器健康狀態的裝置。43.如權利要求42所述的裝置,還包括用于通過向所述第二處理器發送第二處理器發布消息來使能所述第二處理器,以繼續引導操作的裝置。44.如權利要求43所述的裝置,其中所述用于使能所述第二處理器的裝置包括用于當所述第二處理器發布消息包括與所述第二處理器健康狀態相匹配的所述組健康狀態時,使能所述第二處理器的裝置。45.一種計算機可讀介質,其包含機器可執行的程序以執行包括下述步驟的處理確定第一處理器健康狀態;確定第二處理器健康狀態;發送所述第二處理器健康狀態到第一處理器;根據所述第一處理器健康狀態和所述第二處理器健康狀態來確定組健康狀態;以及當所述組健康狀態對應于所述第二處理器健康狀態時,使能第二處理器以繼續引導操作。46.如權利要求45所述的計算機可讀介質,其中所述使能所述第二處理器包括發送所述組健康狀態到所述第二處理器。47.如權利要求46所述的計算機可讀介質,其中響應于健康狀態請求而進行所述的發送所述第二處理器健康狀態。48.如權利要求47所述的計算機可讀介質,還包括在所述第二處理器讀硬件信號量寄存器之前使所述第一處理器讀該硬件信號量寄存器。49.如權利要求48所述的計算機可讀介質,其中所述第一處理器讀所述硬件信號量寄存器包括接收第一值。50.如權利要求45所述的計算機可讀介質,其中所述確定所述第一處理器健康狀態包括利用通用處理器抽象層檢查第一固件接口表和第二固件接口表。51.如權利要求50所述的計算機可讀介質,其中所述利用通用處理器抽象層包括檢查第一處理器專用處理器抽象層的第一拷貝和第一處理器專用處理器抽象層的第二拷貝。52.如權利要求51所述的計算機可讀介質,其中所述確定所述第一處理器健康狀態包括確定第一處理器專用處理器抽象層的所述第一拷貝是否具有相關聯的系統抽象層的第一拷貝,并且還包括確定第一處理器專用處理器抽象層的所述第二拷貝是否具有相關聯的系統抽象層的第二拷貝。53.如權利要求45所述的計算機可讀介質,其中所述發送所述第二處理器健康狀態到第一處理器包括發送處理器間中斷到所述第一處理器。54.如權利要求53所述的計算機可讀介質,其中所述發送處理器間中斷到所述第一處理器包括當所述第一處理器已禁用中斷時,發送所述第二處理器健康狀態到第一處理器中斷請求寄存器。55.如權利要求54所述的計算機可讀介質,其中所述確定組健康狀態包括從所述第一處理器中斷請求獲取所述第二處理器健康狀態。56.如權利要求55所述的計算機可讀介質,還包括通過向所述第二處理器發送第二處理器發布消息來使能所述第二處理器,以繼續引導操作。57.如權利要求56所述的計算機可讀介質,其中所述使能所述第二處理器包括當所述第二處理器發布消息包括與所述第二處理器健康狀態相匹配的所述組健康狀態時,使能所述第二處理器。全文摘要本發明公開了一種系統和方法,用于確定一組健康的處理器和關聯固件,以在重置事件后引導系統。對處理器專用固件的冗余拷貝的有效性進行檢查。處理器確定它們自己的健康狀態,并且一個處理器確定一組具有最佳可用健康狀態的處理器。處理器間中斷消息提供的通信機制使得可用一種算法來確定一組處理器以繼續引導該系統。文檔編號G06F15/177GK1856772SQ03818824公開日2006年11月1日申請日期2003年5月9日優先權日2002年6月11日發明者托德·謝林申請人:英特爾公司