(57)【要約】      （修正有）【課題】システム起動処理のための良好な状態のプロセッサグループ及び関連するファームフェアを決定する。【解決手段】第１プロセッサヘルスステータスを決定し、第２プロセッサヘルスステータスを決定し、前記第２プロセッサヘルスステータスを第１プロセッサに送信し、前記第１及び第２プロセッサヘルスステータスからグループヘルスステータスを決定する。前記グループヘルスステータスが前記第１プロセッサヘルスステータスに一致する場合、前記第１プロセッサによるブート処理の継続をイネーブルとし、前記グループヘルスステータスが前記第２プロセッサヘルスステータスに一致する場合、第２プロセッサによるブート処理の継続をイネーブルとし、前記第１プロセッサヘルスステータスが前記第２プロセッサヘルスステータスに等しいとき、前記第１プロセッサと前記第２プロセッサが共にブート処理の制御を共有することをイネーブルにする。【選択図】図１
2008117401.tif 000002
【特許請求の範囲】
【請求項１】
第１プロセッサヘルスステータスを決定するステップと、
第２プロセッサヘルスステータスを決定するステップと、
前記第２プロセッサヘルスステータスを第１プロセッサに送信するステップと、
前記第１及び第２プロセッサヘルスステータスからグループヘルスステータスを決定するステップと、
前記グループヘルスステータスが前記第１プロセッサヘルスステータスに一致する場合、前記第１プロセッサによるブート処理の継続をイネーブルとするステップと、
前記グループヘルスステータスが前記第２プロセッサヘルスステータスに一致する場合、第２プロセッサによるブート処理の継続をイネーブルとするステップと、
前記第１プロセッサヘルスステータスが前記第２プロセッサヘルスステータスに等しいとき、前記第１プロセッサと前記第２プロセッサが共にブート処理の制御を共有することをイネーブルにするステップと、
から構成されることを特徴とする方法。
【請求項２】
請求項１記載の方法であって、
前記第２プロセッサをイネーブルとするステップは、前記グループヘルスステータスの前記第２プロセッサへの送信を含むことを特徴とする方法。
【請求項３】
請求項２記載の方法であって、
前記第２プロセッサヘルスステータスを送信するステップは、ヘルスステータスリクエストに応答するものであることを特徴とする方法。
【請求項４】
請求項３記載の方法であって、さらに、
前記第２プロセッサによるハードウェアセマフォレジスタの読み出し前に、前記第１プロセッサにより前記ハードウェアセマフォレジスタを読み出すステップ、
を有することを特徴とする方法。
【請求項５】
請求項４記載の方法であって、
前記第１プロセッサによりハードウェアセマフォレジスタを読み出すステップは、第１値を受け取ることを含むことを特徴とする方法。
【請求項６】
第１プロセッサヘルスステータスを決定するステップと、
第２プロセッサヘルスステータスを決定するステップと、
前記第２プロセッサヘルスステータスを第１プロセッサに送信するステップと、
前記第２プロセッサによるハードウェアセマフォレジスタの読み込み前に、前記第１プロセッサによる前記ハードウェアセマフォレジスタを読み込むステップと、
前記第１プロセッサヘルスステータスと前記第２プロセッサヘルスステータスとから、グループヘルスステータスを決定するステップと、
前記グループヘルスステータスが前記第２プロセッサヘルスステータスに一致する場合、ヘルスステータスリクエストに応答して前記グループヘルススタータスを前記第２プロセッサに送信することによって、前記第２プロセッサによるブート処理の継続をイネーブルにするステップと、
を有する方法であって、
前記第１プロセッサヘルスステータスを決定するステップは、第１ファームウェアインタフェーステーブルと第２ファームウェアインタフェーステーブルとを調べるため、ジェネリックプロセッサアブストラクションレイヤを使用するステップを含むことを特徴とする方法。
【請求項７】
請求項６記載の方法であって、
前記ジェネリックプロセッサアブストラクションレイヤを使用するステップは、第１プロセッサスペシフィックプロセッサアブストラクションレイヤの第１コピーと第２コピーを調べるステップを含むことを特徴とする方法。
【請求項８】
請求項６記載の方法であって、
前記第１プロセッサヘルスステータスを決定するステップは、
前記第１プロセッサスペシフィックプロセッサアブストラクションレイヤの第１コピーが、システムアブストラクションレイヤの係る第１コピーを有するか決定するステップと、
前記第１プロセッサスペシフィックプロセッサアブストラクションレイヤの第２コピーが、システムアブストラクションレイヤの係る第２コピーを有するか決定するステップと、を含むことを特徴とする方法。
【請求項９】
請求項１記載の方法であって、
前記第２プロセッサヘルスステータスを第１プロセッサに送信するステップは、プロセッサ間割り込みを前記第１プロセッサに送信するステップを含むことを特徴とする方法。
【請求項１０】
請求項９記載の方法であって、
前記プロセッサ間割り込みを前記第１プロセッサに送信するステップは、前記第１プロセッサが割り込みイネーブル解除されている場合、前記第２プロセッサヘルスステータスを第１プロセッサ割り込みリクエストレジスタに送信するステップを含むことを特徴とする方法。
【請求項１１】
請求項１０記載の方法であって、
前記グループヘルスステータスを決定するステップは、前記第１プロセッサ割り込みリクエストから前記第２プロセッサヘルスステータスを抽出するステップを含むことを特徴とする方法。
【請求項１２】
請求項１１記載の方法であって、さらに、
前記第２プロセッサに第２プロセッサリリースメッセージを送信することにより、前記第２プロセッサによるブート処理の継続をイネーブルとするステップを有することを特徴とする方法。
【請求項１３】
請求項１２記載の方法であって、
前記第２プロセッサをイネーブルとするステップは、前記第２プロセッサリリースメッセージが前記第２プロセッサヘルスステータスに一致するグループヘルスステータスを有する場合、前記第２プロセッサをイネーブルとするステップを含むことを特徴とする方法。
【請求項１４】
第１プロセッサヘルスステータスを決定する手段と、
第２プロセッサヘルスステータスを決定する手段と、
前記第２プロセッサヘルスステータスを第１プロセッサに送信する手段と、
前記第１及び第２プロセッサヘルスステータスからグループヘルスステータスを決定する手段と、
前記グループヘルスステータスが前記第１プロセッサヘルスステータスに一致する場合、前記第１プロセッサによるブート処理の継続をイネーブルとする手段と、
前記グループヘルスステータスが前記第２プロセッサヘルスステータスに一致する場合、第２プロセッサによるブート処理の継続をイネーブルとする手段と、
前記第１プロセッサヘルスステータスが前記第２プロセッサヘルスステータスに等しいとき、前記第１プロセッサと前記第２プロセッサが共にブート処理の制御を共有することをイネーブルにする手段と、
から構成されることを特徴とする装置。
【請求項１５】
請求項１４記載の装置であって、
前記第２プロセッサをイネーブルとする手段は、前記グループヘルスステータスの前記第２プロセッサへの送信を行う手段を含むことを特徴とする装置。
【請求項１６】
請求項１５記載の装置であって、
前記第２プロセッサヘルスステータスを送信する手段は、ヘルスステータスリクエストに応答するものであることを特徴とする装置。
【請求項１７】
請求項１６記載の装置であって、さらに、
前記第２プロセッサによるハードウェアセマフォレジスタの読み出し前に、前記第１プロセッサにより前記ハードウェアセマフォレジスタを読み出す手段を有することを特徴とする装置。
【請求項１８】
請求項１７記載の装置であって、
前記第１プロセッサによりハードウェアセマフォレジスタを読み出す手段は、第１値を受け取る手段を含むことを特徴とする装置。
【請求項１９】
第１プロセッサヘルスステータスを決定する手段と、
第２プロセッサヘルスステータスを決定する手段と、
前記第２プロセッサヘルスステータスを第１プロセッサに送信する手段と、
前記第２プロセッサによるハードウェアセマフォレジスタの読み込み前に、前記第１プロセッサによる前記ハードウェアセマフォレジスタを読み込む手段と、
前記第１プロセッサヘルスステータスと前記第２プロセッサヘルスステータスとから、グループヘルスステータスを決定する手段と、
前記グループヘルスステータスが前記第２プロセッサヘルスステータスに一致する場合、ヘルスステータスリクエストに応答して前記グループヘルススタータスを前記第２プロセッサに送信することによって、前記第２プロセッサによるブート処理の継続をイネーブルにする手段と、
を有する装置であって、
前記第１プロセッサヘルスステータスを決定する手段は、第１ファームウェアインタフェーステーブルと第２ファームウェアインタフェーステーブルとを調べるため、ジェネリックプロセッサアブストラクションレイヤを使用する手段を含むことを特徴とする装置。
【請求項２０】
請求項１９記載の装置であって、
前記ジェネリックプロセッサアブストラクションレイヤを利用する手段は、第１プロセッサスペシフィックプロセッサアブストラクションレイヤの第１コピーと第２コピーを調べる手段を含むことを特徴とする装置。
【請求項２１】
請求項２０記載の装置であって、
前記第１プロセッサヘルスステータスを決定する手段は、
前記第１プロセッサスペシフィックプロセッサアブストラクションレイヤの第１コピーが、システムアブストラクションレイヤの関連する第１コピーを有するか決定する手段と、
前記第１プロセッサスペシフィックプロセッサアブストラクションレイヤの第２コピーが、システムアブストラクションレイヤの関連する第２コピーを有するか決定する手段と、を含むことを特徴とする装置。
【請求項２２】
請求項２１記載の装置であって、
前記第２プロセッサヘルスステータスを第１プロセッサに送信する手段は、プロセッサ間割り込みを前記第１プロセッサに送信する手段を含むことを特徴とする装置。
【請求項２３】
請求項２２記載の装置であって、
前記プロセッサ間割り込みを前記第１プロセッサに送信する手段は、前記第１プロセッサが割り込みイネーブル解除されている場合、前記第２プロセッサヘルスステータスを第１プロセッサ割り込みリクエストレジスタに送信する手段を含むことを特徴とする装置。
【請求項２４】
請求項２３記載の装置であって、
前記グループヘルスステータスを決定する手段は、前記第１プロセッサ割り込みリクエストから前記第２プロセッサヘルスステータスを抽出する手段を含むことを特徴とする装置。
【請求項２５】
請求項２４記載の装置であって、さらに、
前記第２プロセッサに第２プロセッサリリースメッセージを送信することにより、前記第２プロセッサによるブート処理の継続をイネーブルとする手段を有することを特徴とする装置。
【請求項２６】
請求項２５記載の装置であって、
前記第２プロセッサをイネーブルとする手段は、前記第２プロセッサリリースメッセージが前記第２プロセッサヘルスステータスに一致するグループヘルスステータスを有する場合、前記第２プロセッサをイネーブルとする手段を含むことを特徴とする装置。
【請求項２７】
マシーンによるプロセスの実行を可能にするプログラムを有するコンピュータ読み出し可能な媒体であって、
前記プロセスは、
第１プロセッサヘルスステータスを決定するステップと、
第２プロセッサヘルスステータスを決定するステップと、
前記第２プロセッサヘルスステータスを第１プロセッサに送信するステップと、
前記第１及び第２プロセッサヘルスステータスからグループヘルスステータスを決定するステップと、
前記グループヘルスステータスが前記第１プロセッサヘルスステータスに一致する場合、前記第１プロセッサによるブート処理の継続をイネーブルとするステップと、
前記グループヘルスステータスが前記第２プロセッサヘルスステータスに一致する場合、第２プロセッサによるブート処理の継続をイネーブルとするステップと、
前記第１プロセッサヘルスステータスが前記第２プロセッサヘルスステータスに等しいとき、前記第１プロセッサと前記第２プロセッサが共にブート処理の制御を共有することをイネーブルにするステップと、
から構成されることを特徴とする媒体。
【請求項２８】
請求項２７記載のコンピュータ読み出し可能な媒体であって、
前記第２プロセッサをイネーブルとするステップは、前記グループヘルスステータスを前記第２プロセッサに送信するステップを含むことを特徴とする媒体。
【請求項２９】
請求項２８記載のコンピュータ読み出し可能な媒体であって、
前記第２プロセッサヘルスステータスを送信するステップは、ヘルスステータスリクエストに応答するものであることを特徴とする媒体。
【請求項３０】
請求項２９記載のコンピュータ読み出し可能な媒体であって、前記プロセスはさらに、
前記第２プロセッサによるハードウェアセマフォレジスタの読み出し前に、前記第１プロセッサにより前記ハードウェアセマフォレジスタを読み出すステップ、
を有することを特徴とする媒体。
【請求項３１】
請求項３０記載のコンピュータ読み出し可能な媒体であって、
前記第１プロセッサによりハードウェアセマフォレジスタを読み出すステップは、第１値を受け取るステップを含むことを特徴とする媒体。
【請求項３２】
マシーンによるプロセスの実行を可能にするプログラムを有するコンピュータ読み出し可能な媒体であって、
前記プロセスは、
第１プロセッサヘルスステータスを決定するステップと、
第２プロセッサヘルスステータスを決定するステップと、
前記第２プロセッサヘルスステータスを第１プロセッサに送信するステップと、
前記第２プロセッサによるハードウェアセマフォレジスタの読み込み前に、前記第１プロセッサによる前記ハードウェアセマフォレジスタを読み込むステップと、
前記第１プロセッサヘルスステータスと前記第２プロセッサヘルスステータスとから、グループヘルスステータスを決定するステップと、
前記グループヘルスステータスが前記第２プロセッサヘルスステータスに一致する場合、ヘルスステータスリクエストに応答して前記グループヘルススタータスを前記第２プロセッサに送信することによって、前記第２プロセッサによるブート処理の継続をイネーブルにするステップと、
を有し、
前記第１プロセッサヘルスステータスを決定するステップは、第１ファームウェアインタフェーステーブルと第２ファームウェアインタフェーステーブルとを調べるため、ジェネリックプロセッサアブストラクションレイヤを使用するステップを含むことを特徴とする媒体。
【請求項３３】
請求項３２記載のコンピュータ読み出し可能な媒体であって、
前記ジェネリックプロセッサアブストラクションレイヤを使用するステップは、第１プロセッサスペシフィックプロセッサアブストラクションレイヤの第１コピーと第２コピーを調べるステップを含むことを特徴とする媒体。
【請求項３４】
請求項３３記載のコンピュータ読み出し可能な媒体であって、
前記第１プロセッサヘルスステータスを決定するステップは、
前記第１プロセッサスペシフィックプロセッサアブストラクションレイヤの第１コピーが、システムアブストラクションレイヤの関連する第１コピーを有するか決定するステップと、
前記第１プロセッサスペシフィックプロセッサアブストラクションレイヤの第２コピーが、システムアブストラクションレイヤの関連する第２コピーを有するかの決定するステップと、
を含むことを特徴とする媒体。
【請求項３５】
請求項２７記載のコンピュータ読み出し可能な媒体であって、
前記第２プロセッサヘルスステータスを第１プロセッサに送信するステップは、プロセッサ間割り込みを前記第１プロセッサに送信するステップを含むことを特徴とする媒体。
【請求項３６】
請求項３５記載のコンピュータ読み出し可能な媒体であって、
前記プロセッサ間割り込みを前記第１プロセッサに送信するステップは、前記第１プロセッサが割り込みイネーブル解除されている場合、前記第２プロセッサヘルスステータスを第１プロセッサ割り込みリクエストレジスタに送信するステップを含むことを特徴とする媒体。
【請求項３７】
請求項３６記載のコンピュータ読み出し可能な媒体であって、
前記グループヘルスステータスを決定するステップは、前記第１プロセッサ割り込みリクエストから前記第２プロセッサヘルスステータスを抽出することを含むことを特徴とする媒体。
【請求項３８】
請求項３７記載のコンピュータ読み出し可能な媒体であって、前記プロセスはさらに、
前記第２プロセッサに第２プロセッサリリースメッセージを送信することにより、前記第２プロセッサによるブート処理の継続をイネーブルとするステップを有することを特徴とする媒体。
【請求項３９】
請求項３８記載のコンピュータ読み出し可能な媒体であって、
前記第２プロセッサをイネーブルとするステップは、前記第２プロセッサリリースメッセージが前記第２プロセッサヘルスステータスに一致するグループヘルスステータスを有する場合、前記第２プロセッサをイネーブルとすることを含むことを特徴とする媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にマイクロプロセッサシステムに関し、より詳細にはフィールドアップグレード可能なファームウェアによるマルチプロセッサ処理が可能なマイクロプロセッサシステムに関する。
【背景技術】
【０００２】
マイクロプロセッサシステム内部のプロセッサは、セルフテストの実行及びリセットイベントに続く処理の起動を行うファームフェアに依存するかもしれない。マルチプロセッサシステムでは、同一の一般的なプロセッサファミリーに属するプロセッサでさえ、プロセッサスピード、ステッピングレベル、アーキテクチャ変更及び他の多くのパラメータにより互いに異なるかもしれない。このため、ファームウェアは、一般的なプロセッサファミリーに属する１つのプロセッサグループにそれぞれ固有の複数のモジュールを含んでいるかもしれない。
【０００３】
さらに、このようなファームウェアモジュールに対しフィールドアップグレードを実行する理由があるかもしれない。フラッシュメモリや他のフィールドアップグレード可能なメモリは、初期的には初期ファームウェアモジュールを有し、以降において、これらのモジュールはアップデートされたファームウェアモジュールにより上書きすることができる。しかしながら、フラッシュメモリに書き込みが行われたために、当該フラッシュメモリが損傷する可能性がある。ファームウェアのアップデートを制御するファームウェア自体が損傷すると、当該システムのフィールドリカバリーが不可能となるかもしれない。このような場合、システムは、このフラッシュメモリを損傷のないファームウェアを有する新たなフラッシュメモリモジュールと物理的に交換するため、メーカーに返却する必要があるかもしれない。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記問題点に鑑み、本発明の課題は、システム起動処理のための良好な状態のプロセッサグループ及び関連するファームフェアを決定する方法、装置及びコンピュータ可読媒体を提供することである。
【課題を解決するための手段】
【０００５】
上記課題を解決するため、本発明の一実施例は、第１プロセッサヘルスステータスを決定するステップと、第２プロセッサヘルスステータスを決定するステップと、前記第２プロセッサヘルスステータスを第１プロセッサに送信するステップと、前記第１及び第２プロセッサヘルスステータスからグループヘルスステータスを決定するステップと、前記グループヘルスステータスが前記第１プロセッサヘルスステータスに一致する場合、前記第１プロセッサによるブート処理の継続をイネーブルとするステップと、前記グループヘルスステータスが前記第２プロセッサヘルスステータスに一致する場合、第２プロセッサによるブート処理の継続をイネーブルとするステップと、前記第１プロセッサヘルスステータスが前記第２プロセッサヘルスステータスに等しいとき、前記第１プロセッサと前記第２プロセッサが共にブート処理の制御を共有することをイネーブルにするステップとから構成されることを特徴とする方法を提供する。
【０００６】
本発明の他の実施例によると、第１プロセッサヘルスステータスを決定するステップと、第２プロセッサヘルスステータスを決定するステップと、前記第２プロセッサヘルスステータスを第１プロセッサに送信するステップと、前記第２プロセッサによるハードウェアセマフォレジスタの読み込み前に、前記第１プロセッサによる前記ハードウェアセマフォレジスタを読み込むステップと、前記第１プロセッサヘルスステータスと前記第２プロセッサヘルスステータスとから、グループヘルスステータスを決定するステップと、前記グループヘルスステータスが前記第２プロセッサヘルスステータスに一致する場合、ヘルスステータスリクエストに応答して前記グループヘルススタータスを前記第２プロセッサに送信することによって、前記第２プロセッサによるブート処理の継続をイネーブルにするステップとを有する方法であって、前記第１プロセッサヘルスステータスを決定するステップは、第１ファームウェアインタフェーステーブルと第２ファームウェアインタフェーステーブルとを調べるため、ジェネリックプロセッサアブストラクションレイヤを使用するステップを含むことを特徴とする方法を提供する。
【０００７】
さらに、上記方法に対応する装置及びコンピュータ可読媒体が提供される。
【発明の効果】
【０００８】
本発明によると、システム起動処理のための良好な状態のプロセッサグループ及び関連するファームフェアを決定する方法、装置及びコンピュータ可読媒体を提供することが可能である。
【発明を実施するための最良の形態】
【０００９】
以下において、マルチプロセッサシステムにおけるプロセッサの選択及び初期化を行うための技術が説明される。以下の説明では、本発明の完全なる理解を提供するため、論理実現形態、ソフトウェアモジュール割当て、バス信号処理技術などの多くの具体的詳細と動作の詳細が与えられる。しかしながら、本発明がそのような具体的詳細なく実現可能であるということは当業者には理解可能であろう。他の点では、本発明を不明瞭にすることを回避するため、制御構造、ゲートレベルの回路及び完全なソフトウェア指示シーケンスは示されていない。与えられる説明により、当業者は、過度の実験を行うことなく適切な機能を実現することができる。本発明は、マイクロプロセッサ内部のハードウェアの形式により開示される。しかしながら、本発明は、デジタル信号プロセッサ、ミニコンあるいはメインフレームコンピュータなどの他の形式のプロセッサにより実現されてもよい。同様に、本発明は、プロセッサ間の信号処理方法として、プロセッサ間における割込みを用いて開示される。しかしながら、本発明は、他の形式の信号処理を用いて実現されてもよい。
【００１０】
一実施例では、マルチプロセッサ内の良好なプロセッサの選択及び初期化は、各プロセッサが自身の処理に必要なファームウェアをチェックすることにより開始される。その後、各プロセッサは、自らのプロセッサのヘルスステータス（ｈｅａｌｔｈ  ｓｔａｔｕｓ）を判断する。その後、ある判定方法により、すべてのプロセッサのヘルスステータスを収集する一時的なマスタプロセッサが選ばれ、利用可能なものの中で最高のプロセッサヘルスステータスを有するプロセッサグループが決定される。その後、この一時的なマスタプロセッサは、当該グループに属するプロセッサがブート処理を続けることを可能にし、実行を中断するか、あるいは当該グループに属さないプロセッサ（必要に応じて、マスタプロセッサ自身を含む）を不可とする。
【００１１】
図１を参照するに、一実施例によるシステムハードウェアコンポーネントの概略図が示される。中央演算ユニットＣＰＵ  Ａ１１０、ＣＰＵ  Ｂ１１４、ＣＰＵ  Ｃ１１８及びＣＰＵ  Ｄ１２２の複数のプロセッサが示される。他の実施例では、プロセッサは１つのみかもしれないし、２つのプロセッサ、あるいは５以上のプロセッサが存在するかもしれない。一実施例では、これらのプロセッサは、インテル（登録商標）アイテニアム（Ｉｔａｎｉｕｍ）プロセッサファミリーと互換性を有するものであってもよい。ＣＰＵ  Ａ１１０、ＣＰＵ  Ｂ１１４、ＣＰＵ  Ｃ１１８及びＣＰＵ  Ｄ１２２などのプロセッサは、それぞれ図示されるＩＲＲ１１２、１１６、１２０及び１２４などの１以上の割込み要求レジスタ（ＩＲＲ）を有するようにしてもよい。ＣＰＵ  Ａ１１０などのプロセッサに送信される典型的な割込みは、当該割込みの実行に必要とされるメモリ位置を一般的に記述するベクトルを含む値のＩＲＲ１１２への書き込みなどである。ＣＰＵ  Ａ１１０は、割込みの実行をイネーブルまたはイネーブル解除するかもしれない。割込みの実行がイネーブル解除されると、ＩＲＲ１１２は依然としてベクトルを受け付けるが、ＣＰＵ  Ａ１１０は当該割込みの実行を自動的には行わないようになる。しかしながら、ＣＰＵ  Ａ１１０は、ＩＲＲ１１２に含まれるベクトルを依然として読み出すようにしてもよい。割込み処理のイネーブル解除によるこのような動作は、しばしば「呼び出しモード（ｐｏｌｌｅｄ  ｍｏｄｅ）」と呼ばれる。さらに、各プロセッサは、ＬＩＤという一意的なＩＤを有する。このＬＩＤは、システムバス上の当該プロセッサの一意的なアドレスとして用いられる。割込みは、既知のＬＩＤを有するプロセッサに向けられる。このＬＩＤ値は、ＣＰＵ  Ａ１１０、ＣＰＵ  Ｂ１１４、ＣＰＵ  Ｃ１１８及びＣＰＵ  Ｄ１２２のそれぞれのＬＩＤレジスタ１０２、１０４、１０６及び１０８などのＬＩＤレジスタに保持されてもよい。他の実施例では、ＬＩＤ値は、レジスタ以外の他の回路要素に保持されてもよい。
【００１２】
プロセッサＣＰＵ  Ａ１１０、ＣＰＵ  Ｂ１１４、ＣＰＵ  Ｃ１１８及びＣＰＵ  Ｄ１２２は、システムバス１３０を介し互いに、そしてチップセット１３４と接続される。システムバス１３０とチップセット１３４を介した接続により、プロセッサは、システムＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３６、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）フラッシュメモリ１３８、グラフィックス１４０のためコントローラや各種プログラム記憶装置などの様々な入出力（Ｉ/Ｏ）装置へのアクセスが可能となる。このようなプログラム記憶装置には、システム固定ディスク１４４や着脱可能なメディア１４６のためのドライブが含まれるかもしれない。様々な実施例において、着脱可能なメディア１４６のドライブには、磁気テープ、着脱可能な磁気ディスク、ディスケット、光電ディスク、あるいはＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＤＶＤ−ＲＯＭ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの光ディスクなどがあげられる。Ｉ/Ｏ装置は、ＡＧＰ（Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）１４２などの専用インタフェース、あるいは、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス（図示せず）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）（図示せず）、ＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）バス１４８などの汎用インタフェースを介して、チップセット１３４に接続されてもよい。追加的なＩ/Ｏ装置としては、ローカルエリアネットワーク（ＬＡＮ）１５０やワイドエリアネットワーク（ＷＡＮ）１５２への接続が含まれるかもしれない。他の実施例では、他の多くのインタフェースが利用されてもよい。
【００１３】
コンピュータシステム１００は、そのアーキテクチャ内部の何れかにハードウェアセマフォレジスタを有する。ハードウェアセマフォレジスタは、リセットイベント後の最初の読み出しに関する値と、この最初の読み出し後に読み出される以降の読み出しに関する他の値を返すレジスタとして定義されるかもしれない。一実施例では、チップセット１３４は、ハードウェアセマフォレジスタの具体的な一例であるＢＯＦＬ（Ｂｏｏｔ  Ｆｌａｇ）レジスタ１５４を有するようにしてもよい。ＢＯＦＬレジスタ１５４は、システムの初期化中に用いられ、ＣＰＵ  Ａ１１０、ＣＰＵ  Ｂ１１４、ＣＰＵ  Ｃ１１８及びＣＰＵ  Ｄ１２２の中のどのプロセッサが一時的なマスタプロセッサとして動作するか決定する。一実施例では、ＢＯＦＬレジスタ１５４は、リセットイベント後の最初の読み出しに関する値と、以降の読み出しにおける他の値を返すかもしれない。他の実施例では、リセットイベント後にプロセッサがＢＯＦＬレジスタ１５４を読み出すたびに、異なる番号が所定のシーケンスで与えられる。すなわち、ＢＯＦＬレジスタ１５４を最初に読み出すプロセッサはゼロの値を受け取る。ＢＯＦＬレジスタ１５４の以降の読み出しは、非ゼロの値を返す。マスタプロセッサは、ＢＯＦＬレジスタ１５４から連続的にゼロの値を読み出すプロセッサである。
【００１４】
一実施例では、オペレーティングシステムがシステム固定ディスク１４４上にインストールされ、当該オペレーティングシステムのカーネルがシステムＲＡＭ１３６にロードされるようにしてもよい。他の実施例では、オペレーティングシステムは、ＬＡＮ１５０またはＷＡＮ１５２を介してロードまたは実行されてもよい。
【００１５】
図２を参照するに、一実施例によるメモリ内のソフトウェアコンポーネントを示す図が示される。一実施例では、ＢＩＯＳコンポーネントは、図１のＢＩＯＳフラッシュメモリ１３８の内部に備えられるよう図示されているが、他の実施例では、ＢＩＯＳコンポーネントは他の形態の不揮発性メモリまたは揮発性メモリに備えられていてもよい。ソフトウェアコンポーネントが不揮発性メモリに備えられるとき、それらはファームウェアと呼ばれるかもしれない。
【００１６】
ＢＩＯＳは、ＰＡＬ（Ｐｒｏｃｅｓｓｏｒ  Ａｂｓｔｒａｃｔｉｏｎ  Ｌａｙｅｒ）ファームウェアなどの一般にプロセッサに関するモジュールや、ＳＡＬ（Ｓｙｓｔｅｍ  Ａｂｓｔｒａｃｔｉｏｎ  Ｌａｙｅｒ）などの一般に非プロセッサシステムに関するモジュールを有するかもしれない。異なるプロセッサは、部分的にプロセッサの改訂レベルの違いにより、異なるＰＡＬファームウェアの改訂レベルあるいはタイプを必要とするかもしれない。システム内部のＰＡＬやＳＡＬファームウェアのバージョンをアップデートし、このアップデートされたバージョンに対応するようフラッシュメモリを修正することが効果的であるかもしれない。
【００１７】
しかしながら、フラッシュメモリ内のＢＩＯＳのアップデートを行うときには、重大な問題が発生する可能性がある。１つの単純な例として、電力がアップデート処理中に切れると、当該フラッシュメモリには、フラッシュメモリへの書き込みを制御するＢＩＯＳ部分を含むＢＩＯＳの損傷したコピーが含まれる可能性がある。この場合、正しいコードを有する新たなフラッシュメモリを接合する以外の修理方法はない。このような問題の発生頻度を下げるため、一実施例では、ＰＡＬコードとＳＡＬコードは分割されるかもしれない。ＰＡＬコードは、ＰＡＬ−Ａと呼ばれるシステム初期化に最小限必要とされるＰＡＬの一部と、ＰＡＬ−Ｂと呼ばれる残りのコードとに分割されるかもしれない。さらに、ＰＡＬ−Ａは、プロセッサに依存しない（ＰＡＬ−Ａジェネリック）ベーシックＰＡＬ−Ａと、与えられたプロセッサの改訂レベルに固有な（ＰＡＬ−Ａスペシフィック）ＰＡＬ−Ａコードにさらに分割される。ＰＡＬ−Ａジェネリックはプロセッサに依存しないため、アップデートの必要はなく、アップデート処理がイネーブル解除されているフラッシュメモリの領域に配置されていてもよい。同様に、ＳＡＬもまた、フラッシュメモリのアップデート処理を含むシステムの初期化あるいはリカバリー処理に最低限必要なＳＡＬの部分であるＳＡＬ−ＡとＳＡＬ−Ｂとに分割されてもよい。ＳＡＬ−Ａはさらに、以降においてアップデートされることのないベーシックＳＡＬ−Ａ（ＳＡＬ−Ａジェネリック）と、経時的にアップデートの必要のあるＳＡＬ−Ａ（ＳＡＬ−Ａスペシフィック）にさらに分割される。アップデート処理中の損傷から保護するため、一実施例では、ＰＡＬ−ＡジェネリックとＳＡＬ−Ａジェネリックは、フラッシュメモリの変更が許可されていないプロテクト部分に配置されてもよい。
【００１８】
システムの有用性と信頼性を向上させるため、ＰＡＬ−ＡスペシフィックとＳＡＬ−Ａスペシフィックは、複数のコピーで行われてもよい。システムが、便宜上、タイプ１プロセッサ及びタイプ２プロセッサとラベル付けされた２つの改訂レベルのプロセッサを有する場合を考える。他の実施例では、さらなる改訂レベルの追加的なプロセッサがあってもよい。図２の実施例では、ＰＡＬ−Ａジェネリック２２０は１つコピーであるが、タイプ１プロセッサのためのＰＡＬ−Ａスペシフィックは２つのコピー（プライマリＰＡＬ−Ａスペシフィックタイプ１（２３０）とセカンダリＰＡＬ−Ａスペシフィックタイプ１（２４０））が与えられている。同様に、タイプ２プロセッサのためのＰＡＬ−Ａスペシフィックは２つのコピー（プライマリＰＡＬ−Ａスペシフィック２（２３２）とセカンダリＰＡＬ−Ａスペシフィックタイプ２（２４２））が与えられている。また、ＳＡＬ−Ａジェネリック２２２は１つのコピーが与えられ、ＳＡＬ−Ａスペシフィックには２つのコピー、すなわち、プライマリＳＡＬ−Ａスペシフィック２４６とセカンダリＳＡＬ−Ａスペシフィック２６０が与えられる。他の実施例では、フラッシュメモリ内のファームウェアのさらなるコピーとタイプが与えられてもよい。一実施例では、これらのコピーは全く同一のものであってもよいし、あるいは他の実施例では、これらのコピーは同様の機能を有してはいるが、全く同じものでなくともよい。
【００１９】
例えば、タイプ１のプロセッサはリセットイベントに続いて実行を開始するとき、ＰＡＬ−Ａジェネリック２２０内のリセットベクトルと呼ばれる所定の位置から実行を開始する。ＰＡＬ−Ａジェネリック２２０を実行するプロセッサは、プライマリファームウェアインタフェーステーブル（ＦＩＴ）２２４あるいはセカンダリＦＩＴ２３４を用いて、他のコードモジュールの位置を検出する。ＰＡＬ−Ａジェネリック２２０コードは、固定された位置にあるベクトル、プライマリＦＩＴポインタ２１０とセカンダリＦＩＴポインタ２１２により、プライマリＦＩＴ２２４とセカンダリＦＩＴ２３４のエントリポイントを認識する。プロセッサ上で実行するＰＡＬ−Ａジェネリック２２０は、これらのＦＩＴポインタを用いてＦＩＴを位置決定し、その後当該ＦＩＴを用いてその他のソフトウェアモジュールを位置決定及び有効とするようにしてもよい。例えば、タイプ１プロセッサは、プライマリＦＩＴポインタ２１０を用いて、プライマリＦＩＴ２２４の位置を検出するかもしれない。その後、タイプ１プロセッサは、プライマリＦＩＴ２２４内の位置、サイズ、チェックサム（ｃｈｅｃｋｓｕｍ）及び他のパラメータを用いて、プライマリＰＡＬ−Ａスペシフィックタイプ１（２３０）を位置決定及びチェックするようにしてもよい。タイプ１プロセッサがプライマリＰＡＬ−Ａスペシフィックタイプ１（２３０）の位置決定または有効とすることができない場合、セカンダリＦＩＴポインタ２１１及びセカンダリＦＩＴ２３４を用いて、セカンダリＰＡＬ−Ａスペシフィックタイプ１（２４０）の位置決定及びチェックするようにしてもよい。
【００２０】
タイプ１プロセッサがプライマリＰＡＬ−Ａスペシフィックタイプ１（２３０）またはセカンダリＰＡＬ−Ａスペシフィックタイプ１（２４０）を位置決定及び有効とする場合、タイプ１プロセッサは、ＳＡＬ−Ａの位置決定及びチェックを行おうとするかもしれない。ＰＡＬ−Ａジェネリック２２０は、プライマリＰＡＬ−Ａスペシフィックタイプ１（２３０）とセカンダリＰＡＬ−Ａスペシフィックタイプ１（２４０）との何れかのエントリポイントを決定し、その実行を開始する。そして、プライマリＰＡＬ−Ａスペシフィックタイプ１（２３０）とセカンダリＰＡＬ−Ａスペシフィックタイプ１（２４０）の何れかが、ＳＡＬ−Ａジェネリック２２２のエントリポイントを決定し、制御を引き渡し、次にこのＳＡＬ−Ａによりそれ自身及びプライマリＳＡＬ−Ａスペシフィック２４６またはセカンダリＳＡＬ−Ａスペシフィック２６０の有効にする。一実施例では、タイプ１プロセッサは、プライマリＦＩＴポインタ２１０とプライマリＦＩＴ２２４を用いて、プライマリＳＡＬ−Ａスペシフィック２４６の位置決定及びチェックを行う。タイプ１プロセッサはプライマリＳＡＬ−Ａスペシフィック２４６の位置決定及び有効とすることができない場合、タイプ１プロセッサは、セカンダリＦＩＴポインタ２１２とセカンダリＦＩＴ２３４を用いて、セカンダリＳＡＬ−Ａスペシフィック２６０の位置決定及びチェックを行うようにしてもよい。
【００２１】
初期化あるいはリカバリーに必要とされるＰＡＬ及びＳＡＬの当該部分の位置決定及び有効化が行われた後、プロセッサ上で実行するＳＡＬ−Ａジェネリック２２２は、当該プロセッサに関するプロセッサヘルスステータスを決定するようにしてもよい。ヘルスステータスの計算は、チェックサムなどを含む各種ファームウェア有効チェックや、ＳＡＬ−Ａジェネリック２２２への制御の引き渡し中にＰＡＬ−Ａスペシフィックにより与えられるハンドオフステータスコードに基づき、ＳＡＬ−Ａジェネリック２２２により実行されてもよい。このプロセッサヘルスステータスはまた、どのファームウェアコンポーネントの組み合わせが満足いくヘルスステータスを有すると決定されるかに基づきランク付けされてもよい。一実施例では、プロセッサヘルスステータスは、プライマリＰＡＬ−ＡスペシフィックとプライマリＳＡＬ−Ａスペシフィックの１つのコピーが検出及び有効とされる場合、より上位となるよう決定されるようにしてもよい。セカンダリＰＡＬ−ＡスペシフィックとセカンダリＳＡＬ−Ａスペシフィックの１つのコピーが検出及び有効とされる場合、やや下位のプロセッサヘルスステータスが決定されるようにしてもよい。プライマリＰＡＬ−ＡスペシフィックとセカンダリＳＡＬ−Ａスペシフィックの１つのコピーのみ、あるいはセカンダリＰＡＬ−ＡスペシフィックとプライマリＳＡＬ−Ａスペシフィックが検出及び有効とされる場合、さらに低いプロセッサヘルスステータスが決定されるようにしてもよい。最後に、ＰＡＬ−ＡスペシフィックまたはＳＡＬ−Ａスペシフィックの何れのコピーも検出及び有効とすることができない場合、最下位または「致命的」プロセッサヘルスステータスが決定されるようにしてもよい。
【００２２】
図３を参照するに、本発明の一実施例によるコンポーネント間のメッセージ処理図が示される。一実施例では、各メッセージはプロセッサ間割り込み（ＩＰＩ）において搬送される。プロセッサのセルフテストを開始させるリセットイベントの後、プロセッサは割り込みをイネーブル解除する。割り込みがプロセッサによりイネーブル解除されるか、あるいはプロセッサが「呼び出し」割り込みモードにあるとき、ＩＰＩの当該プロセッサへの送信は、ベクトルの当該プロセッサのＩＲＲへの書き込みを行わせるかもしれない。この場合、プロセッサのＩＲＲ内に置かれているベクトルは、メッセージ送信者のＬＩＤ、該当するヘルス値あるいは他のデータを表すものであるかもしれない。他の実施例では、専用ハードウェアプロセッサ間信号などのメッセージを送る他の手段や、特殊信号をデータバス上に多重化する手段が利用されてもよい。図３の実施例では、ＣＰＵ  Ａ３０２、ＣＰＵ  Ｂ３０４及びＣＰＵ  Ｃ３０６の３つのプロセッサが示されているが、他の実施例では、それ以上あるいはそれ以下のプロセッサが当該プロセスに用いられてもよい。リセットイベント後、これら３つのプロセッサ、ＣＰＵ  Ａ３０２、ＣＰＵ  Ｂ３０４及びＣＰＵ  Ｃ３０６の各々がセルフテストを行う。一実施例では、このセルフテストには、図２に関して説明されたプロセッサヘルスステータスの決定が含まれていてもよい。各プロセッサにより自身のプロセッサヘルスステータスが決定されると、利用可能なものの中で最高のプロセッサヘルスステータスを有するプロセッサのみがブート処理の継続を許されることが望ましいかもしれない。他の実施例では、パフォーマンス要件により、許容可能なプロセッサヘルスステータスを有する最大グループがブート処理の継続を許されることが望ましいかもしれない。
【００２３】
図３の例では、３つすべてのプロセッサが致命的なプロセッサヘルスステータスであると判断する。各プロセッサはまず、当該プロセッサがマスタであると仮定し、自らにマスタＬＩＤを割り当てる。このステップは、チェックインベクトル通信が失われていないということを確認するのに必要とされる。その後、各プロセッサは、この決定の後にチップセット３０８のＢＯＦＬレジスタ３１０を読み出す。本例ではＣＰＵ  Ｂ３０４である、自らのプロセッサヘルスステータスを判断する第１のプロセッサは、リセットイベントの後、ＢＯＦＬレジスタ３１０から第１のＢＯＦＬレジスタの読み出し３１２を行う。これにより、ＣＰＵ  Ｂ３０４がマスタとなり、プロセッサ間通信の識別子としてマスタＬＩＤの使用を継続する。この例では、ＣＰＵ  Ａ３０２が自身のプロセッサヘルスステータスを決定する第２のプロセッサであり、第２のＢＯＦＬレジスタの読み出し３１４を行う。これにより、ＣＰＵ  Ａ３０２は、スレーブとなり、プロセッサ間通信のための識別子として一意的な非マスタＬＩＤ（スレーブ１ＬＩＤ）を使用する。最後に、本例では、ＣＰＵ  Ｃ３０６が、自身のプロセッサヘルスステータスを決定する第３のプロセッサであり、第３のＢＯＦＬレジスタの読み出し３１６を行う。これにより、ＣＰＵ  Ｃ３０６は、スレーブとなり、プロセッサ間通信のための識別子として一意的な非マスタＬＩＤ（スレーブ２ＬＩＤ）を使用する。
【００２４】
プロセッサは、自らがスレーブであると判断すると、一意的なスレーブＬＩＤを計算し、自身のＬＩＤを表すメッセージのチェックを所定のマスタＬＩＤを使用しているプロセッサに送信する。一実施例では、一意的なスレーブＬＩＤは、ＰＡＬからＳＡＬにわたされる位置的に一意的な識別子を用いることにより計算されてもよい。一実施例では、ＰＡＬは、物理的プロセッサパッケージの１以上のピンから読み出された値からこれらの識別子を判断するようにしてもよい。図３の例では、ＣＰＵ  Ａ３０２とＣＰＵ  Ｃ３０６は、それぞれメッセージ３２０と３２２における自身のチェックをＣＰＵ  Ｂ３０４に送信する。一実施例では、ＣＰＵ  Ｂ３０４は、メッセージでチェックを送信したプロセッサに対応するヘルスリクエストメッセージを有するメッセージのチェックの受信に即座に応答する。他の実施例では、ＣＰＵ  Ｂ３０４は、ヘルスリクエストメッセージによる応答前に、メッセージのすべてのチェックを受信するのに所定時間待機するようにしてもよい。図３の例では、ＣＰＵ  Ｂ３０４は、ヘルスリクエストメッセージ３３０と３３２をそれぞれＣＰＵ  Ａ３０２とＣＰＵ  Ｃ３０６に送信する。その後、ＣＰＵ  Ａ３０２とＣＰＵ  Ｃ３０６は、それぞれヘルスレスポンスメッセージ３４０と３４２により自身のプロセッサヘルスステータスのコピーをＣＰＵ  Ｂ３０４に送信する。他の実施例では、この実際のヘルスステータスが、個々のヘルスステータス値と所定の関係を有するベクトルと交換されてもよい。
【００２５】
本例ではＣＰＵ  Ｂ３０４であるマスタＬＩＤを有するプロセッサが応答したすべてのプロセッサのプロセッサヘルスステータスを受け取ると、ＣＰＵ  Ｂ３０４は、利用可能なものの中で最上位のプロセッサ経るステータスを決定する。当該グループに共通のプロセッサヘルスステータスは、グループヘルスステータスと呼ばれる。パフォーマンスが問題とされる他の実施例では、その代わりに、決定されたプロセッサのグループが、許容されるプロセッサヘルスステータスを有する最大数のプロセッサからなるグループとされてもよい。何れの実施例においても、本例ではＣＰＵ  Ｂ３０４である、マスタＬＩＤを有するプロセッサは、その後、リリースセマフォメッセージ（ｒｅｌｅａｓｅ  ｓｅｍａｐｈｏｒｅ  ｍｅｓｓａｇｅ）をすべてのスレーブプロセッサと自身に対し送信する。このリリースセマフォには、グループヘルスステータスのコピーが含まれていてもよい。他の実施例では、実際のグループヘルスステータスが、グループヘルスステータスとの所定の関係を有するベクトルと交換されてもよい。
【００２６】
図３の例では、ＣＰＵ  Ｂ３０４は、リリースセマフォ３５０をＣＰＵ  Ａ３０２に、リリースセマフォ３５２をＣＰＵ  Ｃ３０６に、リリースセマフォ３５４を自らに送信する。その後、各プロセッサは、対応するリリースセマフォにより表されるグループヘルスステータスと自らのプロセッサヘルスステータスと比較する。これが一致すると、当該プロセッサはブート処理を継続する。しかしながら、一致していない場合、当該プロセッサは停止またはアクティブ解除となり、ブート処理を継続しない。
【００２７】
図４を参照するに、本開示の一実施例によるフローチャートは、ローカルなプロセッサヘルスステータスの導出を示す。他の実施例では、ファームウェアの他のテスト、ハードウェアのテストあるいはそれらの組み合わせが、他の形態のローカルプロセッサヘルスステータスの生成のため実行されてもよい。ブロック４１０において図４のプロセスが開始されると、ＰＡＬがリセットイベント直後に制御を取得し、ブロック４１２において、ＰＡＬハンドオフステータスを計算し、ＳＡＬによる利用のためこれをレジスタに格納する。その後、ＰＡＬは、制御をＳＡＬにハンドオフする。ＰＡＬは、当該ＰＡＬが現在のプロセッサと互換的であるか、あるいはプロセッサが十分機能的であるかの決定を含むリカバリーチェックへのエントリに応じて、このハンドオフステータスを提供してもよい。その後ブロック４１４において、ＳＡＬは、以前に格納したＰＡＬハンドオフステータスをチェックする。このＰＡＬハンドオフステータスは、合成的なローカルヘルスを計算するためＳＡＬにより実行される追加的テストと共に利用される。ＰＡＬハンドオフステータスは、複数の可能なエラーに関する情報を伝達するようにしてもよい。一実施例では、このような可能なエラーは、ファームウェアのプライマリコピーを利用する通常処理、ファームウェアのセカンダリコピーを利用するフェイルオーバ（ｆａｉｌｏｖｅｒ）処理、非冗長または非重要ファームウェアコンポーネントの欠陥、及び致命的欠陥、の４つのステータスカテゴリのグループに相関関係がある。
【００２８】
その後ブロック４１８において、プライマリＦＩＴポインタとセカンダリＦＩＴポインタの境界チェックが実行されてもよい。これは、潜在的にシステムハングを引き起こす可能性のあるメモリアドレススペース内のプロテクトまたはリザーブされた領域への偶発的なアクセスを回避するのに必要であるかもしれない。ブロック４２２において、チェックサムテストがプライマリＦＩＴとセカンダリＦＩＴに対して実行される。このテストにより返されるチェックサムは、損傷したコードの実行の回避、あるいは損傷したフラッシュテーブルの検索の回避に利用されるかもしれない。その後ブロック４２６において、プライマリＦＩＴとセカンダリＦＩＴがチェックされ、対応するプライマリＳＡＬ−ＡスペシフィックとセカンダリＳＡＬ−Ａスペシフィックがそれぞれ存在するか判断される。このテストは、必要なＳＡＬ−Ａテストをサポートする適切なファームウェアの存在を確認するためのものである。その後ブロック４３０において、チェックサムテストが、ブロック４２６において検出されたＳＡＬ−Ａスペシフィックのコピーに対して実行される。これらのテストにより返されるチェックサムは、損傷したコードの実行の回避、あるいは損傷したフラッシュテーブルの検索の回避に、再び利用されてもよい。
【００２９】
ブロック４３４において、以前のブロックの結果を用いて、合成されたローカルプロセッサヘルスステータスが生成される。一実施例では、５つのレベルのプロセッサヘルスステータスが導かれる。他の実施例では、他のレベルのプロセッサヘルスステータスが導かれてもよい。有効なプライマリＰＡＬ−Ａスペシフィックと有効なプライマリＳＡＬ−Ａスペシフィックが検出される場合、最上位のプロセッサヘルスステータスが決定される。有効なセカンダリＰＡＬ−Ａスペシフィックと有効なセカンダリＳＡＬ−Ａスペシフィックのみが検出される場合、最上位から２番目のプロセッサヘルスステータスが決定される。有効なプライマリＰＡＬ−Ａスペシフィックと有効なセカンダリＳＡＬ−Ａスペシフィックのみが検出される場合、最上位から３番目のプロセッサヘルスステータスが決定される。有効なセカンダリＰＡＬ−Ａスペシフィックと有効なプライマリＳＡＬ−Ａスペシフィックのみが検出される場合、最上位から４番目のプロセッサヘルスステータスが決定される。最後に、ＰＡＬ−ＡとＳＡＬ−Ａの有効な組み合わせが検出できず、また他の重大なエラー状態を有すると判断される場合、ワーストなプロセッサヘルスステータスが決定される。
【００３０】
図５を参照するに、本開示の一実施例によるフローチャートは、良好なプロセッサの選択及び初期化を示す。システム内の各プロセッサは、図５のプロセスを実行する。ブロック５１０において、当該プロセスはリセットイベントに応じて開始される。ローカルプロセッサヘルスステータスが決定されると、プロセッサは、以降のチェックインイベントが損なわれないことを確実にするため、自らにマスタＬＩＤ値を割り当てる。その後ブロック５１４において、プロセッサはＢＯＦＬレジスタを読み出す。その後ブロック５１８の判定で、プロセッサは、ＢＯＦＬから読み出された値に基づき、自身がマスタプロセッサとなったか判断する。マスタプロセッサになっていると判断すると、当該プロセスはＹＥＳパスを介して判定ブロック５１８を抜け出し、プロセッサはタイムアウト期間でチェックを開始する。判定ブロック５２２において、プロセッサは、このタイムアウト期間が終了しているか判断する。終了していない場合、当該プロセスはＮＯパスを介し判定ブロック５２２を抜け出し、ブロック５２６において、プロセッサは存在すれば、メッセージのチェックを受け取る。プロセッサは、メッセージのチェックの送り手に対応するＬＩＤを決定する。ブロック５３０において、プロセッサは、ヘルスリクエストメッセージを対応するスレーブプロセッサに送信することにより、ブロック５２６で検出されたメッセージの任意のチェックに応答する。その後、プロセッサは、判定ブロック５２２に戻る。タイムアウト期間が終了すると、プロセスはＹＥＳパスを介し判定ブロック５２２を抜け出す。ブロック５３４において、プロセッサは、グループヘルスステータスを決定し、このグループヘルスステータスを含むメッセージを、受信したメッセージのチェックから特定されるすべてのＬＩＤに送信する。その後判定ブロック５３８において、プロセッサは、当該グループヘルスステーつが自身のプロセッサヘルスステータスに一致しているか判断する。一致する場合、当該プロセスはＹＥＳパスを介して判定ブロック５３８を抜け出し、ブロック５４０において、プロセッサはブート処理を継続する。他方、一致していない場合、当該プロセスはＮＯパスを介して判定ブロック５３８を抜け出し、ブロック５４４において、プロセッサは停止するか、あるいはアクティブ解除となる。
【００３１】
他方、判定ブロック５１８において、プロセッサが自身がスレーブプロセッサであると判断すると、ＮＯパスを介して判定ブロック５１８を抜け出す。その後、当該プロセッサは自身に一意的なスレーブＬＩＤを割り当てる。その後ブロック５５０において、プロセッサは、自らのＬＩＤ値を表すメッセージのチェックをマスタＬＩＤを有するプロセッサに送信する。その後ブロック５５４において、プロセッサは、対応するヘルスリクエストメッセージを待機及び受信する。その後ブロック５５８において、プロセッサは、ヘルスレスポンスメッセージおいて自身のプロセッサヘルスステータスを送信する。ブロック５６０において、プロセッサは、リリースセマフォメッセージを待機及び受信する。その後判定ブロック５６２において、グループヘルスステータスは自身のプロセッサヘルスステータスに一致するか判断する。一致する場合、当該プロセスはＹＥＳパスを介し判定ブロック５６２を抜け出し、ブロック５６６において、プロセッサはブート処理を継続する。他方、一致しない場合、プロセスはＮＯパスを介し判定ブロック５６２を抜け出し、ブロック５４４において、プロセッサは停止するか、あるいはアクティブ解除となる。
【００３２】
以上、特定の実施例を参照して、本発明が説明された。しかしながら、添付されたクレームに与えられるような本発明のより広範な趣旨及び範囲から逸脱することなく、様々な変形及び変更が可能であるということは明らかであろう。このため、明細書及び図面は、限定的でなく例示的なものとみなされるべきである。
【図面の簡単な説明】
【００３３】
【図１】図１は、一実施例によるシステムハードウェアコンポーネントの概略図である。
【図２】図２は、一実施例によるメモリ内のソフトウェアコンポーネントを示す図である。
【図３】図３は、本開示の一実施例によるコンポーネント間のメッセージ処理図である。
【図４】図４は、本開示の一実施例によるローカルプロセッサヘルスステータスの導出を示すフローチャートである。
【図５】図５は、本開示の一実施例による良好なプロセッサの選択及び初期化を示すフローチャートである。
【符号の説明】
【００３４】
１００  コンピュータシステム
１１０、１１４、１１８、１２２  ＣＰＵ
１１２、１１６、１２０、１２４  割り込み要求レジスタ
１３０  システムバス
【図１】
2008117401.tif 000003
【図２】
2008117401.tif 000004
【図３】
2008117401.tif 000005
【図４】
2008117401.tif 000006
【図５】
2008117401.tif 000007