(57)【特許請求の範囲】
【請求項１】
システムメモリ（１４）と、
前記システムメモリに結合された複数のプロセッサコア（１５Ａ，１５Ｂ）と、所定のプロセッサコアは、当該所定のプロセッサコア内で発生する内部システム管理割り込み（ＳＭＩ）を検出すると、前記システムメモリ内のシステム管理モード（ＳＭＭ）セーブステートに、前記内部ＳＭＩの発生源に対応する情報を保存するように構成され、
前記プロセッサコアのそれぞれと通信するように構成された入出力（Ｉ／Ｏ）ハブ（１３Ａ）と、を有し、
前記所定のプロセッサコアは、前記内部ＳＭＩを検出すると、前記Ｉ／Ｏハブ内の所定のポートアドレスへのＩ／Ｏトランザクションを開始するように更に構成されており、
前記Ｉ／Ｏハブは、前記Ｉ／Ｏトランザクションを受信すると、前記複数のプロセッサコアのそれぞれにＳＭＩメッセージをブロードキャストするように構成され、
前記プロセッサコアのそれぞれは、前記ブロードキャストされたＳＭＩメッセージを受信すると、前記システムメモリ内の個々のＳＭＭセーブステートに、個々の内部ＳＭＩ源情報を保存するように更に構成され、
前記複数のプロセッサコアのうち選択された１つのプロセッサコアは、前記内部ＳＭＩが発生したプロセッサコアを決定するために、前記システムメモリから、すべての前記プロセッサコアの前記ＳＭＭセーブステートを読み出すように構成されている、
コンピュータシステム（１０）。
【請求項２】
前記選択されたプロセッサコア内のＳＭＩハンドラが、前記内部ＳＭＩが発生した前記プロセッサコアの前記内部ＳＭＩを処理するように構成されている、請求項１に記載のコンピュータシステム。
【請求項３】
ＢＩＯＳによるブートアッププロセス中に、前記プロセッサコアのそれぞれのモデル固有レジスタ（１６Ａ）に前記所定のポートアドレスがプログラムされる、請求項１に記載のコンピュータシステム。
【請求項４】
前記内部ＳＭＩの発生源に対応する前記情報は複数のビットを含むビットベクトル（１７Ａ）を有し、その各ビットが内部ＳＭＩの発生源のそれぞれに対応している請求項１に記載のコンピュータシステム。
【請求項５】
複数のプロセッサコアのプロセッサコア（１５Ａ，１５Ｂ）が、当該プロセッサコア内で発生する内部システム管理割り込み（ＳＭＩ）を検出するステップと、
前記プロセッサコアが、前記内部ＳＭＩの前記発生を検出すると、システムメモリ（１４）内のシステム管理モード（ＳＭＭ）セーブステートに、前記内部ＳＭＩの発生源に対応する情報を保存するステップと、
前記プロセッサコアが、前記内部ＳＭＩを検出すると、前記複数のプロセッサコアのそれぞれと通信しているＩ／Ｏハブ（１３Ａ）内の所定のポートアドレスへのＩ／Ｏトランザクションを開始するステップと、
前記Ｉ／Ｏハブが、前記Ｉ／Ｏトランザクションを受信すると、前記複数のプロセッサコアのそれぞれにＳＭＩメッセージをブロードキャストするステップと、
前記複数のプロセッサコアのそれぞれが前記ブロードキャストされたＳＭＩメッセージを受信すると、前記複数のプロセッサコアのそれぞれは、前記システムメモリ内の個々のＳＭＭセーブステートに、個々の内部ＳＭＩ源情報を保存するステップと、
前記複数のプロセッサコアのうち選択された１つのプロセッサコアが、前記システムメモリから、すべての前記プロセッサコアの前記ＳＭＭセーブステートを読み出すステップと、前記内部ＳＭＩが発生したプロセッサコアを決定するステップとを含む、
方法。
【請求項６】
前記選択されたプロセッサコア内のＳＭＩハンドラが、前記内部ＳＭＩが発生した前記プロセッサコアの前記内部ＳＭＩを処理するステップを更に含む、請求項５に記載の方法。
【請求項７】
ＢＩＯＳが、ブートアッププロセス中に、前記プロセッサコアのそれぞれのモデル固有レジスタ（１６Ａ，１６Ｂ）に前記所定のポートアドレスをプログラムするステップを更に含む、請求項５に記載の方法。
【請求項８】
前記内部ＳＭＩの発生源に対応する前記情報は複数のビットを含むビットベクトル（１７Ａ，１７Ｂ）を有し、その各ビットが内部ＳＭＩの発生源のそれぞれに対応している、請求項５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチプロセッサコンピュータシステムに関し、より詳細には、システム管理割り込みの処理に関する。
【背景技術】
【０００２】
多くのプロセッサは、例えば、システムリソース、エネルギーの使用状況（energy
use）をモニタして管理し、特定のシステムレベルコードを実行するために使用可能な別の環境でプロセッサを動作させることができるシステム管理モード（ＳＭＭ）を備える。一般に、ＳＭＭへの移行は、システム管理割り込み（ＳＭＩ）を介して行われる。ＳＭＭは、この割り込みを処理するためのＳＭＩハンドラを備えうる。多くの従来のプロセッサは物理ＳＭＩパッケージピンを備えており、このピンに適切な電圧を印加して、プロセッサを強制的にＳＭＭに移行させることができる。また、例えば、プロセッサの発熱の通知など、プロセッサをＳＭＭに移行させる内部ＳＭＩ発生源も多く存在する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
一般に、プロセッサがＳＭＭに移行すると、現在のプロセッサ状態が、「システム管理ランダムアクセスメモリ（ＳＭＲＡＭ）」と一般に呼ばれている特定のメモリ領域に保存されうる。ＳＭＩハンドラが割り込みの処理（service）を完了すると、ＳＭＩハンドラは、通常、保存した状態を再ロードするリジューム（ＲＳＭ）命令を呼び出し、ＳＭＭから退出する。この構成はシングルプロセッサシステムでは問題なく動作する。しかし、マルチプロセッサシステム構成では、あるプロセッサがＳＭＭに移行したときに、そのプロセッサの制御下にあるとみなされるシステムリソースが存在するが、実際には、システム内の他のプロセッサがそのシステムリソースにまだアクセスしており、当該システムリソースを変更することがある。このような状況は、マルチプロセッシング環境において問題を引き起こしかねない。
【課題を解決するための手段】
【０００４】
コンピュータシステムにおいて他のプロセッサにシステム管理割り込み情報をブロードキャストするためのメカニズムの各種実施形態が開示される。一実施形態では、前記コンピュータシステムは、システムメモリと、前記システムメモリに結合された複数のプロセッサコアと、前記プロセッサコアのそれぞれと通信しうる入出力（Ｉ／Ｏ）ハブとを有する。前記プロセッサコアのそれぞれは、内部システム管理割り込み（ＳＭＩ）の発生を検出すると、前記システムメモリ内のシステム管理モード（ＳＭＭ）セーブステートに、前記内部ＳＭＩの発生源に対応する情報（例えば、ビットベクトルなど）を保存しうる。各プロセッサコアは、前記内部ＳＭＩを検出すると、前記Ｉ／Ｏハブ内の所定のポートアドレスへのＩ／Ｏサイクルを更に開始しうる。前記Ｉ／Ｏハブは、前記Ｉ／Ｏサイクルを受信すると、前記複数のプロセッサコアのそれぞれにＳＭＩメッセージをブロードキャストしうる。前記プロセッサコアのそれぞれは、前記ブロードキャストされたＳＭＩメッセージを受信すると、前記システムメモリ内の前記ＳＭＭセーブステートに、個々の内部ＳＭＩ源情報を更に保存しうる。
【０００５】
特定の一実施形態では、前記複数のプロセッサコアのうちの選択された１つのプロセッサコアが、前記内部ＳＭＩが発生したプロセッサコアを決定するために、前記システムメモリから、全ての前記プロセッサコアの前記ＳＭＭセーブステートを読み出しうる。また、前記選択されたプロセッサコア内のＳＭＩハンドラが、前記内部ＳＭＩが発生した前記プロセッサコアの前記内部ＳＭＩを処理しうる。
【図面の簡単な説明】
【０００６】
【図１】マルチコア処理ノードと、システム管理割り込みをブロードキャストするためのメカニズムとを備えたコンピュータシステムの一実施形態のブロック図。
【図２】図１のコンピュータシステムの実施形態の動作を示すフローチャート。
【図３】システム管理割り込みをブロードキャストするためのメカニズムを備えたコンピュータシステムの別の実施形態のブロック図。
【発明を実施するための形態】
【０００７】
本発明は、さまざまに変形されたり代替形態を取りうるが、その特定の実施形態が、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面およびその詳細な説明は、開示の形態に本発明を限定することを意図するものではなく、逆に、本発明が、添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれる全ての変形例、均等物および代替例を含むことを意図することが理解されるべきである。本願にわたり、「しうる」、「してもよい」との文言は、許容を示す意味（すなわち、可能性がある、可能であること）で用いられており、義務的な意味（すなわち必須）ではない点に留意されたい。
【０００８】
図１を参照すると、コンピュータシステム１０の一実施形態のブロック図が示される。図に示した実施形態では、コンピュータシステム１０は、メモリ１４と、入出力（Ｉ／Ｏ）ハブ１３Ａ，１３Ｂとに結合された処理ノード１２を有する。ノード１２は、ノードコントローラ２０に結合されたプロセッサコア１５Ａ，１５Ｂを有し、ノードコントローラ２０は、メモリコントローラ２２、複数のＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）（ＨＴ）インタフェース回路２４Ａ〜２４Ｃ、および共有の３次（Ｌ３）キャッシュメモリ６０に接続されている。ＨＴ回路２４ＣはＩ／Ｏハブ１６Ａに結合されており、Ｉ／Ｏハブ１６Ａはデイジーチェーン構成で（この実施形態では、ＨＴインタフェースを使用して）Ｉ／Ｏハブ１６Ｂに結合されている。ほかのＨＴ回路２４Ａ〜Ｂも、別のＨＴインタフェース（図１に図示せず）を介して、ほかの同様の処理ノード（図１に図示せず）に接続されてもよい。メモリコントローラ２２は、メモリ１４に結合されている。一実施形態では、ノード１２は、図１に示す回路を含む１つの集積回路チップでもよい。すなわち、ノード１２は、チップマルチプロセッサ（ＣＭＰ）でもよい。任意のレベルの集積化が使用されても、または別個のコンポーネントが使用されてもよい。処理ノード１２が、説明を簡略にするために省略した他の各種回路を備えてもよい点に留意されたい。
【０００９】
各種実施形態では、ノードコントローラ２０は、プロセッサコア１５Ａ，１５Ｂを、相互に、ほかのノードに、およびメモリに相互接続するための各種の相互接続回路（図示せず）も備えうる。また、ノードコントローラ２０は、ノードの最大動作周波数と最小動作周波数、ノードの最大電源電圧と最小電源電圧などの、各種のノード特性を選択および制御するための機能も有しうる。ノードコントローラ２０は、一般に、通信種別、通信（communication）内のアドレスなどに応じて、プロセッサコア１５Ａ，１５Ｂと、メモリコントローラ２２と、ＨＴ回路２４Ａ〜２４Ｃとの間の通信をルーティングするように構成されうる。一実施形態では、ノードコントローラ２０は、ノードコントローラ２０が受信した通信文を書き込むシステム要求キュー（ＳＲＱ）（図示せず）を備えうる。ノードコントローラ２０は、プロセッサコア１５Ａ，１５Ｂ、ＨＴ回路２４Ａ〜２４Ｃ、およびメモリコントローラ２２のうちの１つ以上の宛先にルーティングするために、ＳＲＱにある通信をスケジュールしうる。
【００１０】
一般に、プロセッサコア１５Ａ〜１５Ｂは、ノードコントローラ２０へのインタフェースを使用して、コンピュータシステム１０の他の構成要素（例えばＩ／Ｏハブ１６Ａ〜１６Ｂ、他のプロセッサコア（図示せず）、メモリコントローラ２２など）と通信しうる。このインタフェースは、好ましい方式であればどのような方式で設計されてもよい。一部の実施形態では、このインタフェース用にキャッシュコヒーレントな通信が規定されてもよい。一実施形態では、ノードコントローラ２０とプロセッサコア１５Ａ，１５Ｂ間のインタフェースにおける通信は、ＨＴインタフェースで使用されるものと同様のパケット形式で行われうる。別の実施形態では、好適であれば、どのような通信を使用してもよい（例えばバスインタフェースでのトランザクション、異なる形式のパケットなど）。別の実施形態では、プロセッサコア１５Ａ，１５Ｂは、ノードコントローラ２０とインタフェースを共有してもよい（例えば共有バスインタフェースなど）。一般に、プロセッサコア１５Ａ，１５Ｂからの通信には、（メモリロケーションまたはプロセッサコアの外部のレジスタを読み出すための）リードオペレーション、（メモリロケーションまたは外部レジスタに書き込むための）ライトオペレーション、（キャッシュコヒーレントな実施形態のための）プローブへの応答、割り込みの肯定応答、およびシステム管理メッセージなどの要求が含まれうる。
【００１１】
ＨＴ回路２４Ａ〜２４Ｃは、ＨＴリンクからパケットを受信し、ＨＴリンクにパケットを送信するための各種のバッファと制御回路とを備えうる。ＨＴインタフェースは、パケットを送信するための一方向リンクを２本有する。各ＨＴ回路２４Ａ〜２４Ｃは、２本のこのようなリンク（送信用に１本、受信用に１本）に結合されうる。あるＨＴインタフェースは、（例えば処理ノード間では）キャッシュコヒーレントな方式で動作され、（例えばＩ／Ｏハブ１６Ａ〜１６Ｂとの間では）非コヒーレントな方式で動作されうる。図に示した実施形態では、ＨＴ回路２４Ａ〜２４Ｂは使用されておらず、ＨＴ回路２４Ｃが非コヒーレントなリンク３３を介してＩ／Ｏハブ１６Ａに結合されている。同様に、Ｉ／Ｏハブ１６Ａは、非コヒーレントなリンク３４を介してＩ／Ｏハブ１６Ｂに結合されている。
【００１２】
Ｉ／Ｏハブ１６Ａ〜１６Ｂには、どのようなタイプのブリッジおよび／または周辺機器が含まれてもよい。例えば、Ｉ／Ｏハブ１６Ａ〜１６Ｂは、ＨＴパケットを次のＩ／Ｏハブに送るだけのＩ／Ｏトンネルとして実装されうる。また、Ｉ／Ｏハブには、他のタイプのバスおよび／または他の周辺機器へのブリッジインタフェースが含まれてもよい。例えば、図に示した実施形態では、Ｉ／Ｏハブ１６Ａはトンネルとして機能する一方、Ｉ／Ｏハブ１６Ｂは、ブリッジとして機能し、例えば、ＬＰＣバスなどのバス３２を介して基本入出力システム（ＢＩＯＳ）に結合されている。更に、一部の実施形態では、Ｉ／Ｏハブ１６Ａ〜１６Ｂは、別のコンピュータシステムと通信するためのデバイス（例えば、ネットワークインタフェースカード、コンピュータシステムのメイン回路基板に搭載されているネットワークインタフェースカードと同様の回路、あるいはモデム）を有し、そのデバイスがその別のコンピュータシステムに結合されうる。また、Ｉ／Ｏハブ１６Ａ〜１６Ｂは、ビデオアクセラレータ、オーディオカード、ハードディスクドライブもしくはフロッピーディスクドライブまたはドライブコントローラ、ＳＣＳＩ（Small Computer Systems Interface）アダプタ、テレフォニーカード、サウンドカード、およびＧＰＩＢインタフェースカードまたはフィールドバスインタフェースカードなどの様々なデータ収集カードを含んでいてもよい。「周辺機器」との用語は、入出力（Ｉ／Ｏ）デバイスを含むことを意図している点に注意されたい。
【００１３】
一般に、プロセッサコア１５Ａ，１５Ｂは、所定の命令セットアーキテクチャに規定されている命令を実行するように設計された回路を有しうる。すなわち、プロセッサコア回路は、命令セットアーキテクチャに規定されている命令のフェッチ、デコード、実行、およびその結果のストアを行うように構成されうる。例えば、一実施形態では、プロセッサコア１５Ａ，１５Ｂは、ｘ８６アーキテクチャを実装しうる。プロセッサコア１５Ａ〜１５Ｂは、スーパーパイプライン処理、スーパースカラーまたはその組み合わせを含む任意の所望の構成を有しうる。ほかの構成としては、スカラー、パイプライン処理、非パイプライン処理などがある。実施形態によって、アウトオブオーダーの投機的な実行が使用されても、オンオーダーの実行が使用されてもよい。プロセッサコアは、上記の構造のいずれかと組み合わせて、１つ以上の命令または他の機能のためのマイクロコードを有してもよい。各種実施形態では、キャッシュ、変換ルックアサイドバッファ（ＴＬＢ）などのほかの各種の設計機能を実装してもよい。したがって、図に示した実施形態では、プロセッサコア１５Ａ，１５Ｂは、マシンまたはモデル固有レジスタ（ＭＳＲ）１６Ｂ，１６Ａをそれぞれ有する。ＭＳＲ１６Ａ，１６Ｂは、ブートアップ中にプログラムされうる。一実施形態では、ＭＳＲ１６Ａ，１６Ｂには、ポートアドレス値がプログラムされうる。下で詳細に後述するように、あるプロセッサコア１５が内部システム管理割り込み（ＳＭＩ）を検出すると、そのプロセッサコア１５は、ＭＳＲ１６に指定されているポートアドレスにおいて、Ｉ／Ｏハブ１３ＡへのＩ／Ｏサイクル（実装によりリードまたはライト）を開始しうる。
【００１４】
図に示した実施形態では、プロセッサコア１５Ａ，１５Ｂは、それぞれ符号１７Ａ，１７Ｂで示すＳＭＩ源ビットベクトルをそれぞれ有する。各ＳＭＩ源ビットベクトル１７は、数ビットで構成されており、それぞれのビットが内部ＳＭＩ源に対応している。一実施形態では、ＳＭＩ源ビットベクトルはソフトウェア構造として実装することができる。別の実施形態では、ＳＭＩ源ビットベクトルはハードウェアレジスタ、またはこれらの任意の組み合わせとして実装することができる。下で詳細に後述するように、あるプロセッサコア１５が内部システム管理割り込み（ＳＭＩ）を検出すると、このプロセッサコア１５は、ＳＭＩの発生源に対応するビットをアサートしうる。
【００１５】
本実施形態は、ノード間、ならびにノードと周辺機器間の通信にＨＴインタフェースを使用するが、ほかの実施形態は、このいずれかの通信に任意の所望の１つ以上のインタフェースを使用してもよい点に留意されたい。例えば、ほかのパケットベースのインタフェースが使用されても、バスインタフェースが使用されても、各種の標準的な周辺機器インタフェース（例えば、周辺装置相互接続（ＰＣＩ）、ＰＣＩエクスプレスなど）が使用されてもよい。
【００１６】
上で説明したように、メモリ１４は、任意の適したメモリデバイスを有しうる。例えば、メモリ１４は、１つ以上のランダムアクセスメモリ（ＲＡＭ）を有し、これには、ダイナミックＲＡＭ（ＤＲＡＭ）に属するＲＡＭＢＵＳ  ＤＲＡＭ（ＲＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＳＤＲＡＭなどがある。別の実施形態では、メモリ１４が、スタティックＲＡＭなどを使用して実装されてもよい。メモリコントローラ２２は、メモリ１４にインタフェースするための制御回路を有しうる。更に、メモリコントローラ２２は、メモリ要求をキューイングするための要求キューなどを備えていてもよい。下で詳細に後述するように、メモリコントローラ２２は、プロセッサコア（例えば、１５Ａ）からの要求に応えて、メモリ１４からデータを要求するように構成されうる。また、メモリ１４は、要求されたデータブロック以外にも、要求されていないほかのデータブロックも提供して、このような要求に応えてもよい。したがって、メモリコントローラ２２は、Ｌ３キャッシュ６０内に追加のデータブロックを選択的に記憶しうる。
【００１７】
なお、図１に示したコンピュータシステム１０の処理ノード１２は１つであるが、別の実施形態では、図３に示す実施形態など、実装される処理ノードの数がいくつであってもよい。同様に、実施形態ごとに、ノード１２などの処理ノードに含まれるプロセッサコアの数はいくつでもよい。コンピュータシステム１０のさまざまな実施形態では、ノード１２当たりのＨＴインタフェースの数、ノードに結合されている周辺機器１６の数などが変わってもよい。
【００１８】
図２は、図１に示した実施形態の動作を示すフローチャートである。図１と図２を併せて参照すると、電源投入リセットまたは初期システムブート中に、プロセッサコアの１つにおいて、ＢＩＯＳコードの実行が開始される。通常、ＢＩＯＳによって、コアの１つがブートストラッププロセッサ（ＢＳＰ）に指定されている。一実施形態では、ＢＩＯＳコードは、Ｉ／Ｏハブ１６Ａの所定のポートアドレスをＭＳＲ１６Ａ，１６Ｂにプログラムする（ブロック２０５）。
【００１９】
システムの動作中に、例えばプロセッサコア１５Ａなどのプロセッサコアが、内部ＳＭＩを検出すると（ブロック２１０）、そのプロセッサコアは、ＳＭＩ源ビットベクトル１７Ａ内の対応するビットをセットする（ブロック２１５）。プロセッサコア１５Ａは、Ｉ／Ｏハブ１３ＡのＭＳＲ１６Ａに指定されているポートアドレスへのＩ／Ｏサイクルを開始する（ブロック２２０）。一実装では、このＩ／Ｏサイクルはライトトランザクションであってもよい。別の実装では、このＩ／Ｏサイクルはリードトランザクションであってもよい。いずれの場合も、Ｉ／Ｏハブ１３Ａは、そのポートアドレスへのこのＩ／Ｏサイクルを、プロセッサコアの１つからのＳＭＩメッセージとして認識する。
【００２０】
Ｉ／Ｏハブ１３Ａは、そのポートアドレス上にトランザクションを受け取ると、システムの全てのプロセッサコアにＳＭＩメッセージをブロードキャストする（ブロック２２５）。図に示した実施形態では、プロセッサコア１５Ａ，１５Ｂがブロードキャストされたメッセージを受信しうる。各プロセッサコア１５がブロードキャストされたメッセージを受信すると、当該コアはシステム管理モード（ＳＭＭ）に移行する。一実施形態では、各プロセッサコア１５は、メモリ１４内のＳＭＭセーブステート内の所定の位置に、ＳＭＩ源ビットベクトル１７を、ほかのＳＭＭセーブステート情報と共に記憶する（ブロック２３０）。例えば、最初にプロセッサコア１５Ｂが、ＳＭＩブロードキャストメッセージを受信し、メモリ１４にＳＭＭセーブステートを記憶し、その後、プロセッサコア１５Ａが、メモリ１４に自身のＳＭＭセーブステートを記憶しうる。一実施形態では、プロセッサコアがＳＭＭに移行すると、そのプロセッサコアは自身がＳＭＭに移行したことを示すフラグを、メモリ１４内にセットしうる。
【００２１】
一般に、ｘ８６アーキテクチャを実装するプロセッサコアは、ＳＭＩハンドラを備える。一実施形態では、ＢＳＰ（本例では、プロセッサコア１５ＢがＢＳＰ）ＳＭＩハンドラは、メモリ１４へのリードトランザクションを実行して、システム内の各プロセッサコアのＳＭＭセーブステート情報を読み出す（ブロック２３５）。ＢＳＰ  ＳＭＩハンドラは、ＳＭＩ源ビットベクトル１７を読み出して、ＳＭＩを有していたプロセッサコアと、ＳＭＩの発生源とを決定する。別のプロセッサコアでＳＭＩが発生した場合でも、ＳＭＩハンドラはＳＭＩを処理する（ブロック２４０）。ＳＭＩハンドラがＳＭＩの処理を完了すると、ＳＭＩハンドラは完了フラグをアサートする（ブロック２４５）。一実施形態では、ＳＭＩ完了フラグは、ＳＭＭ中に各プロセッサコアがモニタする所定のメモリ位置であってもよい。各プロセッサコア１５（本例ではプロセッサコア１５Ａ）は、現在、フラグが、ＳＭＩハンドラが完了したことを示していると判定すると、一実施形態では、プロセッサコア１５Ａはリジューム（ＲＳＭ）命令を発行してＳＭＭから退出する（ブロック２５０）。
【００２２】
上記の実施形態はシングルマルチコアプロセッサノードを含む。図３に、複数の処理ノードを含むコンピュータシステム３００の別の実施形態が示される。図３を参照すると、コンピュータシステム３００は、３１２Ａ，３１２Ｂ，３１２Ｃ，３１２Ｄで示すいくつかの処理ノードを有し、これらが互いに結合されている。各処理ノードは、処理ノード３１２Ａ〜３１２Ｄにそれぞれ設けられているメモリコントローラ３２２Ａ〜３２２Ｄを介して各々のメモリ３１４Ａ〜３１４Ｄに結合されている。また、処理ノード３１２ＤはＩ／Ｏハブ３１３Ａに結合され、Ｉ／Ｏハブ３１３Ａは、Ｉ／Ｏハブ３１３Ｂに結合され、Ｉ／Ｏハブ３１３ＢはＢＩＯＳ３３１に結合されている。
【００２３】
図に示すように、処理ノード３１２Ａ〜３１２Ｄは、処理ノード３１２Ａ〜３１２Ｄ間の通信に使用するインタフェースロジックを備える。例えば、処理ノード３１２Ａは、処理ノード３１２Ｂと通信するためのインタフェースロジック３１８Ａと、処理ノード３１２Ｃと通信するためのインタフェースロジック３１８Ｂと、更に別の処理ノード（図示せず）と通信するための第３のインタフェースロジック３１８Ｃとを備える。同様に、処理ノード３１２Ｂは、インタフェースロジック３１８Ｄ，３１８Ｅ，３１８Ｆを備え、処理ノード３１２Ｃは、インタフェースロジック３１８Ｇ，３１８Ｈ，３１８Ｉを備え、処理ノード３１２Ｄは、インタフェースロジック３１８Ｊ，３１８Ｋ，３１８Ｌを備える。処理ノード３１２Ｄは、インタフェースロジック３１８Ｌを介して複数の入出力デバイス（例えばデイジーチェーン構成のハブ３１３Ａ〜３１３Ｂ）と通信するように結合される。なお、一部の実施形態では、インタフェースロジック３１８Ｌは、Ｉ／Ｏハブ３１３Ａに結合されているため「ホストブリッジ」とも呼ばれることがある。その他の処理ノードも、同様にほかのＩ／Ｏデバイスと通信してもよい。
【００２４】
図１の処理ノード１２と同様に、処理ノード３１２Ａ〜３１２Ｄは、処理ノード間通信のためにパケットベースのリンクを複数実装してもよい。本実施形態では、各リンクが、一方向のラインの組として実施されてもよい（例えば、ライン３２４Ａは、処理ノード３１２Ａから処理ノード３１２Ｂにパケットを送信するために使用され、ライン３２４Ｂは、処理ノード３１２Ｂから処理ノード３１２Ａにパケットを送信するために使用される）。ラインのその他の組３２４Ｃ〜３２４Ｈは、図６に示すように、ほかの処理ノード間でパケットを送信するために使用される。一般に、ラインの各組３２４は、１本以上のデータラインと、このデータラインに対応する１本以上のクロックラインと、伝達するパケットの種類を示す１本以上の制御ラインとを含み得る。一実施形態では、リンクは、処理ノード間の通信では、キャッシュコヒーレントな方式で動作されうる。また、処理ノード３１２は、処理ノードとＩ／Ｏデバイス間の通信（あるいは、バスブリッジから、周辺機器相互接続（Peripheral Component Interconnect：ＰＣＩ）バスまたは業界標準アーキテクチャ（Industry Standard Architecture：ＩＳＡ）バスなどの従来の構成のＩ／Ｏバスへの通信）では、非コヒーレントな方法で動作させうる。更に、１本以上のリンクが、Ｉ／Ｏデバイス間ではデイジーチェーン構成を使用して、非コヒーレントな方法で動作してもよい。例えば、ラインの組３３３Ａ，３３３Ｂを含むリンク３３と、ラインの組３３４Ａ，３３Ｂを含むリンク３３４は、非コヒーレントな方式で動作しうる。１つの処理ノードから別の処理ノードに送信されるパケットが、１つ以上の中間ノードを通過しうる点に留意されたい。例えば、図３に示すように、処理ノード３１２Ａによって処理ノード３１２Ｄに送信されるパケットは、処理ノード３１２Ｂか処理ノード３１２Ｃのいずれかを通過しうる。適したルーティングアルゴリズムであれば、どのようなものでも使用することができる。コンピュータシステム３００の別の実施形態では、処理ノードの数が、図３に示した実施形態よりも増減してもよい。
【００２５】
一般に、パケットは、ノード間のライン３２４を伝わる１つ以上のビットタイミング（bit time）として送信されうる。ビットタイミングは、対応するクロックラインを伝わるクロック信号の立ち上がりまたは立ち下がりであり得る。パケットには、トランザクションを開始するためのコマンドパケット、キャッシュコヒーレンシを維持するためのプローブパケット、プローブおよびコマンドに応答する応答パケットなどがあり得る。
【００２６】
処理ノード３１２Ａ〜３１２Ｄは、メモリコントローラおよびインタフェースロジックに加えて、１つ以上のプロセッサコアを有していてもよい。概して、処理ノードは、少なくとも１つのプロセッサコアを備えており、必要に応じてメモリおよびほかの論理回路と通信するためのメモリコントローラを任意選択で備えていてもよい。より詳細には、各処理ノード３１２Ａ〜３１２Ｄは、図１に示すようなプロセッサノード１２のコピーを１つ以上備えていてもよい。１つ以上のプロセッサが、処理ノード内にまたは処理ノードを形成するチップマルチプロセッシング（ＣＭＰ）またはチップマルチスレッド（ＣＭＴ）対応の集積回路を備えても、あるいは、処理ノードが、ほかの任意の望ましい内部構造を備えてもよい。
【００２７】
メモリ３１４Ａ〜３１４Ｄは任意の適したメモリデバイスを備えうる。例えば、メモリ３１４Ａ〜３１４Ｄは、１つ以上のラムバスＤＲＡＭ（ＲＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ＤＤＲ  ＳＤＲＡＭ、スタティックＲＡＭなどを備えてもよい。コンピュータシステム３００のアドレス空間は、メモリ３１４Ａ〜３１４Ｄに分割されている。各処理ノード３１２Ａ〜３１２Ｄは、アドレスとメモリ３１４Ａ〜３１４Ｄとのマッピング、すなわち、特定のアドレスに対するメモリ要求を転送すべき処理ノード３１４Ａ〜３１４Ｄの決定に用いるメモリマップを備えていてもよい。一実施形態では、コンピュータシステム３００内のアドレスのコヒーレンシポイント（coherency point）は、そのアドレスに対応しているバイトを記憶しているメモリに結合されたメモリコントローラ３１６Ａ〜３１６Ｄである。換言すれば、メモリコントローラ３１６Ａ〜３１６Ｄは、対応するメモリ３１４Ａ〜３１４Ｄへのあらゆるメモリアクセスが、キャッシュコヒーレントな方法で行われることを保証する責任を負っている。メモリコントローラ３１６Ａ〜３１６Ｄは、メモリ３１４Ａ〜３１４Ｄとインタフェースするための制御回路を備えうる。更に、メモリコントローラ３１６Ａ〜３１６Ｄは、メモリ要求をキューイングするための要求キューを備えていてもよい。
【００２８】
一般に、インタフェースロジック３１８Ａ〜３１８Ｌは、リンクからパケットを受信すると共に、リンクに送信するパケットをバッファするための各種バッファを備えうる。コンピュータシステム３００は、パケットを送信するための任意の適切なフロー制御メカニズムを使用することができる。例えば、一実施形態では、各インタフェースロジック３１８は、そのインタフェースロジックに接続されているリンクの反対側にある受信装置内の各タイプのバッファの数のカウントを記憶している。インタフェースロジックは、パケットを記憶するための空きバッファが受信側のインタフェースロジックになければ、パケットを送信しない。パケットを前方にルーティングしたことで受信側のバッファに空きが生ずると、受信側のインタフェースロジックは、バッファに空きが生じたことを知らせるメッセージを、送信側のインタフェースロジックに送信する。このようなメカニズムは、「クーポンベースの」システムと呼ぶことができる。
【００２９】
Ｉ／Ｏハブ３１３Ａ〜３１３Ｂは、適したＩ／Ｏデバイスであれば、どのようなものであってもよい。例えば、Ｉ／Ｏハブ３１３Ａ〜３１３Ｂは、別のコンピュータシステムに結合され、そのコンピュータシステムと通信するためのデバイス（ネットワークインタフェースカードやモデムなど）を備えうる。また、Ｉ／Ｏハブ３１３Ａ〜３１３Ｂは、ビデオアクセラレータ、オーディオカード、ハードディスクドライブもしくはフロッピーディスクドライブまたはドライブコントローラ、ＳＣＳＩ（Small Computer Systems Interface）アダプタ、テレフォニーカード、サウンドカード、およびＧＰＩＢインタフェースカードまたはフィールドバスインタフェースカードなどの様々なデータ収集カードを含んでいてもよい。更に、カードとして実装される任意のＩ／Ｏデバイスが、システム３００のメイン回路基板上の回路および／または処理ノードで実行されるソフトウェアとして実装されてもよい。本明細書において「Ｉ／Ｏデバイス」との用語と「周辺機器」との用語は同義であるとされる点に留意されたい。
【００３０】
図３の処理ノード３１２Ａ〜３１２Ｄのそれぞれが、図１の処理ノード１２の機能を備えうる点に留意されたい。このように、あるプロセッサコア内の内部ＳＭＩに応答して、そのプロセッサコアは、図１に示すプロセッサコアと同様の機能を実行してもよい。同様に、図３のＩ／Ｏハブ３１３Ａは、図１のＩ／Ｏハブ１３Ａの機能を有しうる。したがって、Ｉ／Ｏハブ３１３Ａは、上で説明したように所定のポートアドレスを介してＩ／Ｏサイクルを受信すると、コンピュータシステム３００内の全処理ノードの全プロセッサコアにＳＭＩメッセージをブロードキャストしうる。
【００３１】
上の実施形態についてかなり詳細に記載したが、上記の開示を完全に理解できれば、数多くの変形例および変更例が当業者にとって明らかであろう。下記の特許請求の範囲は、このような変形例および変更例を全て包含するものと解釈されることが意図される。
【産業上の利用可能性】
【００３２】
本発明は、一般にマイクロプロセッサに利用可能である。
【図１】
0005385272.tif 000002
【図２】
0005385272.tif 000003
【図３】
0005385272.tif 000004