(57)【特許請求の範囲】
【請求項１】
複数のプロセッサコアを含むシステムの動的ハードウェア再構成を実行するために用いられるシステム再構成用のコードおよびデータをキャッシュする段階と、
前記動的ハードウェア再構成の間、直接メモリアクセスまたは間接メモリアクセスを禁止する段階と、
前記複数のプロセッサコアのうち一のプロセッサコアまたは複数のスレッドにキャッシュされた前記システム再構成用のコードおよびデータを実行させることによって、前記動的ハードウェア再構成を実施する段階と
を備える方法。
【請求項２】
前記動的ハードウェア再構成の間は、前記複数のプロセッサコアのうち一のプロセッサコアのみに動作を許可する段階をさらに備える請求項１に記載の方法。
【請求項３】
許可された前記一のプロセッサコア以外の前記複数のプロセッサコアの全てを、外部へのメモリアクセスを行なわないようにブロックする段階をさらに備える請求項２に記載の方法。
【請求項４】
前記動的ハードウェア再構成の間は、メモリアクセスを避けるためにプリフェッチをディセーブルする段階をさらに備える請求項１に記載の方法。
【請求項５】
投機的メモリロードを避ける段階をさらに備える請求項１に記載の方法。
【請求項６】
前記動的ハードウェア再構成を実行する前に全ての実行中のトランザクションが完了するように、前記複数のプロセッサコアのうち１以上のプロセッサコアをフラッシュする段階をさらに備える請求項１に記載の方法。
【請求項７】
前記動的ハードウェア再構成の間は、アウト・オブ・バンド・デバッグ・フックを避ける段階をさらに備える請求項１に記載の方法。
【請求項８】
前記動的ハードウェア再構成を実行するために前記複数のプロセッサコアのうち前記一のプロセッサコアを選択する段階をさらに備える請求項１に記載の方法。
【請求項９】
前記動的ハードウェア再構成は、ホットアド、ホットリムーバル、ホットプラグ、ホットスワップ、プロセッサホットアド、プロセッサホットリムーバル、メモリホットアド、メモリホットリムーバル、チップセットホットアド、チップセットホットリムーバル、入出力ハブホットアド、入出力ハブホットリムーバル、メモリマイグレーション、メモリミラーリング、および／または、プロセッサマイグレーションのうち１以上を含む請求項１に記載の方法。
【請求項１０】
前記動的ハードウェア再構成は、信頼性、可用性および保守性（ＲＡＳ）を満たす特徴を含む請求項１に記載の方法。
【請求項１１】
前記動的ハードウェア再構成は、オペレーティングシステムにトランスペアレントに実行される請求項１に記載の方法。
【請求項１２】
前記動的ハードウェア再構成は、前記システムが備える１以上のハードウェアデバイスをアトミックに更新することである請求項１に記載の方法。
【請求項１３】
前記動的ハードウェア再構成は、休止処理を含む請求項１に記載の方法。
【請求項１４】
シャドーレジスタを新しい一群の構成値でプログラミングする段階をさらに備える請求項１に記載の方法。
【請求項１５】
ハードウェアレジスタに書き込みを行なうことで構成の変更を開始する段階をさらに備える請求項１に記載の方法。
【請求項１６】
前記ハードウェアレジスタは、モデル固有レジスタまたは構成空間レジスタである
請求項１５に記載の方法。
【請求項１７】
ハードウェアレジスタの値に応じて構成の変更を実行する段階をさらに備える請求項１に記載の方法。
【請求項１８】
動的ハードウェア再構成を実行するために用いられるシステム再構成用のコードおよびデータをキャッシュして格納するキャッシュと、
複数のプロセッサコアと
を備え、
前記複数のプロセッサコアのうち一のプロセッサコアが、キャッシュされた前記システム再構成用のコードおよびデータを実行して、前記動的ハードウェア再構成を実行し、
前記動的ハードウェア再構成の間、前記複数のプロセッサコアによる直接メモリアクセスまたは間接メモリアクセスを禁止する装置。
【請求項１９】
前記動的ハードウェア再構成の間は、前記複数のプロセッサコアのうち一のプロセッサコアのみに動作を許可する請求項１８に記載の装置。
【請求項２０】
許可された前記一のプロセッサコア以外の前記複数のプロセッサコアの全てを、外部へのメモリアクセスを行なわないようにブロックする請求項１９に記載の装置。
【請求項２１】
前記動的ハードウェア再構成の間は、メモリアクセスを避けるためにプリフェッチをディセーブルする請求項１８に記載の装置。
【請求項２２】
投機的メモリロードを避ける請求項１８に記載の装置。
【請求項２３】
前記動的ハードウェア再構成を実行する前に全ての実行中のトランザクションが完了するように、前記複数のプロセッサコアのうち１以上のプロセッサコアをフラッシュする請求項１８に記載の装置。
【請求項２４】
前記動的ハードウェア再構成の間は、アウト・オブ・バンド・デバッグ・フックを避ける請求項１８に記載の装置。
【請求項２５】
前記動的ハードウェア再構成は、ホットアド、ホットリムーバル、ホットプラグ、ホットスワップ、プロセッサホットアド、プロセッサホットリムーバル、メモリホットアド、メモリホットリムーバル、チップセットホットアド、チップセットホットリムーバル、入出力ハブホットアド、入出力ハブホットリムーバル、メモリマイグレーション、メモリミラーリング、および／または、プロセッサマイグレーションのうち１以上を含む請求項１８に記載の装置。
【請求項２６】
前記動的ハードウェア再構成は、信頼性、可用性および保守性（ＲＡＳ）を満たす特徴を含む請求項１８に記載の装置。
【請求項２７】
前記動的ハードウェア再構成は、オペレーティングシステムにトランスペアレントに実行される請求項１８に記載の装置。
【請求項２８】
前記動的ハードウェア再構成は、前記システムが備える１以上のハードウェアデバイスをアトミックに更新することである請求項１８に記載の装置。
【請求項２９】
前記動的ハードウェア再構成は、休止処理を含む請求項１８に記載の装置。
【請求項３０】
新しい一群の構成値でプログラミングされているシャドーレジスタをさらに備える請求項１８に記載の装置。
【請求項３１】
前記複数のプロセッサコアのうち少なくとも１つは、ハードウェアレジスタに書き込みを行なうことで構成の変更を開始する請求項１８に記載の装置。
【請求項３２】
前記ハードウェアレジスタは、モデル固有レジスタまたは構成空間レジスタである請求項３１に記載の装置。
【請求項３３】
値を格納するハードウェアレジスタをさらに備え、
前記複数のプロセッサコアのうち前記一のプロセッサコアは、前記ハードウェアレジスタに格納されている前記値に応じて、構成の変更を実行する請求項１８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概して、動的なシステムの再構成に関する。
【背景技術】
【０００２】
大規模なマルチプロセッサ（ＭＰ）システム（例えば、１２８個のソケットを持つもの）を構築する機能を持つスケーリング可能なクイック・パス・インターコネクト（Ｑｕｉｃｋ  Ｐａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ：ＱＰＩ）サーバが登場して、システムの再構成は非常に複雑となった。メモリコントローラは、各プロセッサソケットに一体化されている。また、他の構成要素（例えば、Ｉ／Ｏルートコンプレックス、Ｉ／Ｏデバイス等）は将来、１以上のプロセッサソケットに一体化される可能性がある。このためさらに、アドレスルーティングの複雑さが増してしまう。例えば、プロセッサホットプラグおよび入出力ハブ（ＩＯＨ）ホットプラグ等の信頼性、可用性および保守性（ＲＡＳ）を満たす特徴のリストには、メモリマイグレーション、ＣＰＵマイグレーション等が追加されている。このように複雑さが増している中で新しい特徴が追加されており、ハードウェアで動的なシステムの再構成を実現する方法は、開発および実証が非常に複雑で高コストである。
【０００３】
ＲＡＳ処理（特に、ランタイムにおいてシステム構成に影響を与えるＲＡＳ処理）は現在、システム管理割り込み（ＳＭＩ）を用いて実行されている。ＳＭＩでは、全てのプロセッサをまとめて、ＱＰＩエージェント（例えば、プロセッサ、ＩＯＨ等）を休止させて、システム構成（例えば、ＱＰＩルート、アドレスデコーダ等）をプログラミングし直す。しかし、ＱＰＩインターコネクトのリンクとしての本質に関わらず、全てのＱＰＩエージェント（プロセッサ、Ｉ／Ｏハブ）に対する変更は、データトラフィックルーティングの失敗を避けるためにアトミックに行なう必要がある。このため、コヒーレントメモリから実行されるＳＭＩコードでこの再構成を実行する場合には、これがＱＰＩルート変更中には許容できないので、特に問題となる。また、ＳＭＩ処理はＯＳ（オペレーティングシステム）に対してトランスペアレントであるので、システム処理の信頼性を維持するためには、ＳＭＩレイテンシを最小限（通常は、数百マイクロ秒のオーダ）に抑えることが必要となる。
【図面の簡単な説明】
【０００４】
本発明は、以下に記載する詳細な説明および本発明の一部の実施形態を示す図面によって、より完全に理解されるであろう。しかし図面は、説明した具体的な実施形態に本発明を限定するものと解釈されるべきではなく、説明および理解のために提供するに過ぎない。
【図１】本発明の一部の実施形態に係るシステムを示す図である。
【図２】本発明の一部の実施形態に係るシステムを示す図である。
【図３】本発明の一部の実施形態に係るシステムを示す図である。
【図４】本発明の一部の実施形態に係るフローを示す図である。
【図５】本発明の一部の実施形態に係るフローを示す図である。
【図６】本発明の一部の実施形態に係るフローを示す図である。
【図７】本発明の一部の実施形態に係るフローを示す図である。
【図８】本発明の一部の実施形態に係るシステムを示す図である。
【図９】本発明の一部の実施形態に係るシステムを示す図である。
【図１０】本発明の一部の実施形態に係るフローを示す図である。
【図１１】本発明の一部の実施形態に係るフローを示す図である。
【発明を実施するための形態】
【０００５】
本発明の一部の実施形態は、動的なシステムの再構成に関する。
【０００６】
図１は、一部の実施形態に係るシステム１００を示す図である。一部の実施形態によると、システム１００は、複数のプロセッサおよび／または中央演算処理装置（ＣＰＵ）を備える。例えば、ＣＰＵ０  １０２、ＣＰＵ１  １０４、ＣＰＵ２  １０６、および、ＣＰＵ３  １０８を備える。一部の実施形態によると、システム１００はさらに、複数のメモリを備える。例えば、メモリ１１２、メモリ１１４、メモリ１１６、および、メモリ１１８を備える。一部の実施形態によると、プロセッサ１０２、１０４、１０６および１０８はそれぞれ、メモリコントローラを有する。一部の実施形態によると、システム１００はさらに、１以上の入出力（Ｉ／Ｏ）ハブ（ＩＯＨ）を備える。例えば、ＩＯＨ０  １２２およびＩＯＨ１  １２４を備える。一部の実施形態によると、ＩＯＨ１  １２４は、ＰＣＩ  Ｅｘｐｒｅｓｓバス１３２および／あるいはＰＣＩ  Ｅｘｐｒｅｓｓバス１３４に結合されており、ならびに／または、ＩＯＨ０  １２２は、ＰＣＩ  Ｅｘｐｒｅｓｓバス１３６、ＰＣＩ  Ｅｘｐｒｅｓｓバス１３８および／あるいは入出力コントローラハブ（ＩＣＨ）１４０に結合されている。一部の実施形態によると、プロセッサ１０２、１０４、１０６および１０８、ならびに、ＩＯＨ１２２およびＩＯＨ１２４は、複数のリンクおよび／またはインターコネクトで互いに結合されている。一部の実施形態によると、プロセッサ１０２、１０４、１０６および１０８、ならびに、ＩＯＨ０  １２２およびＩＯＨ１  １２４を結合するリンクおよび／またはインターコネクトは、複数のコヒーレントリンクであり、例えば、一部の実施形態では、クイック・パス・インターコネクト（Ｑｕｉｃｋ  Ｐａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ））リンクおよび／または複数のコモン・システム・インターフェース（Ｃｏｍｍｏｎ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＣＳＩ））リンクである。
【０００７】
一部の実施形態によると、システム１００は、４ソケット式のＱＰＩをベースとするシステムである。一部の実施形態によると、ＱＰＩコンポーネント（例えば、プロセッサソケットおよび／またはＩ／Ｏハブ）は、Ｉｎｔｅｌ（登録商標）社のＱＰＩリンクを用いて接続され、Ｉｎｔｅｌ（登録商標）社のＱＰＩポートで制御される。一部の実施形態によると、ＱＰＩコンポーネント間の通信は、ソースアドレスデコーダ（ＳＡＤ）およびルータ（ＲＴＡ）を用いることで可能となる。ソースアドレスデコーダ（ＳＡＤ）は、特定のノードアドレスに対するインバンドアドレスアクセスをデコードする。ＱＰＩルータは、このようなＱＰＩコンポーネント間のトラフィックおよび他のＱＰＩコンポーネントへのトラフィックをルーティングする。
【０００８】
一部の実施形態によると、ＱＰＩプラットフォームは、トラフィックのルーティングのミスに対応するべく、システムが備える全てのソースアドレスデコーダおよびルータが同じようにプログラミングされていることを要件とする。ブート処理時に、オペレーティングシステム（ＯＳ）に制御がハンドオーバーされる前に、このプログラミングがベーシック入出力システム（ＢＩＯＳ）で行なわれるとしてよい。
【０００９】
一部の実施形態によると、システムがＯＳに対してブートされた後、信頼性、可用性および保守性（ＲＡＳ）イベントはシステム構成を変更することが可能となる。例えば、ＲＡＳイベントには、プロセッサ追加、プロセッサ削除、ＩＯＨ追加、ＩＯＨ削除、メモリ追加、メモリ移動、メモリマイグレーション、メモリミラーリング、メモリ節約、プロセッサホットプラグ、メモリホットプラグ、ホットプラグソケット、ホットプラグＩＯＨ（Ｉ／Ｏハブ）、ドメインパーティション化等の処理が含まれる。このようなＲＡＳイベントおよび他の種類のＲＡＳイベントでは、ＯＳ実行中にＱＰＩコンポーネントを動的にプログラミングすることを要件とする。このように、ＯＳ実行中にシステムを動的に変更する必要がある。ＳＡＤおよびルータが常に同じにプログラミングされていなければならないという要件があるので、このようなＲＡＳ処理では、ＱＰＩ構成に対する更新は「アトミックに」実行することが必要となる（つまり、ＱＰＩを再構成している間はコヒーレントトラフィックが進行中であってはならない）。また、ＯＳはこのようなＲＡＳイベント中も実行され続けるので、ＯＳタイムアウトに対応するためには、狭い時間ウィンドウで（例えば、通常は数百マイクロ秒のオーダで）再構成を完了させる必要がある。
【００１０】
高度なＲＡＳ特徴、例えば、ホットプラグソケット、ホットプラグプロセッサ、ホットプラグメモリ、ホットプラグＩ／Ｏハブ（ＩＯＨ）、メモリホットプラグ、Ｉ／Ｏチップセットホットプラグ、Ｉ／Ｏコントローラハブ（ＩＣＨ）ホットプラグ、プロセッサオンライン／オフライン、メモリオンライン／オフライン、Ｉ／Ｏチップセットオンライン／オフライン、Ｉ／Ｏコントローラハブ（ＩＣＨ）オンライン／オフライン、メモリマイグレーション、メモリミラーリング、プロセッサ（および／またはＣＰＵ）マイグレーション、ドメインパーティション化等は、高度且つミッションクリティカルなマルチプロセッササーバプラットフォームを差別化する重要な要因である。ＱＰＩ等のリンクをベースとするサーバプラットフォームおよび／またはマルチプロセッサプラットフォームは、例えば、上記のような高度なＲＡＳ特徴を可能とするように設計されている。上述したように、ＱＰＩシステムにおけるこのようなＲＡＳフローについてはいずれについても、全てのＱＰＩエージェントにおいて（例えば、全てのプロセッサおよびＩ／Ｏハブにおいて）ＱＰＩ構成をアトミックに更新すること（例えば、ＱＰＩルーティングの変更、ソースアドレスデコーダの変更、ブロードキャストリスト等）が必要であるという要件がある。
【００１１】
アトミック性に加えて、上記のような変更は、実行中のＯＳに影響を与えることなくＯＳにトランスペアレントに実行する必要がある。一部の実施形態によると、システム管理モード（ＳＭＭ）を用いて、システム管理割り込み（ＳＭＩ）を利用してルーティングの変更を行なう。従来のＳＭＩコードは、メモリから実行される。尚、メモリは、システム内の任意のＱＰＩソケットに配置することが可能である。しかし、ＱＰＩ構成変更中にメモリに対してアクセスが発生すると、パケットのルーティングのミスが発生する可能性があり、再構成中はメモリアクセスを禁止しない限りはシステムの整合性に問題が発生する。また、ＳＭＩレイテンシは、ＯＳがリアルタイムでのアクセスを期待しているので、数百マイクロ秒のオーダに制限されている。
【００１２】
一部の実施形態によると、動的なＱＰＩシステムの再構成は、アトミックに実行され（つまり、再構成実行中はメモリアクセス等のコヒーレントトラフィックは発生しない）、オペレーティングシステム／仮想メモリマネージャ（ＯＳ／ＶＭＭ）のリアルタイム応答要件を満足させる。
【００１３】
図２は、一部の実施形態に係るシステム２００を示す図である。一部の実施形態によると、システム２００は、複数のプロセッサおよび／または中央演算処理装置（ＣＰＵ）を備える。例えば、ＣＰＵ０  ２０２、ＣＰＵ１  ２０４、ＣＰＵ２  ２０６、および、ＣＰＵ３  ２０８を備える。一部の実施形態によると、システム２００はさらに、複数のメモリを備える。例えば、メモリ２１２、メモリ２１４、メモリ２１６、および、メモリ２１８を備える。一部の実施形態によると、プロセッサ２０２、２０４、２０６および２０８はそれぞれ、メモリコントローラを有する。一部の実施形態によると、システム２００はさらに、１以上の入出力（Ｉ／Ｏ）ハブ（ＩＯＨ）を備える。例えば、ＩＯＨ０  ２２２およびＩＯＨ１  ２２４を備える。一部の実施形態によると、プロセッサ２０２、２０４、２０６および２０８、ならびに、ＩＯＨ２２２およびＩＯＨ２２４は、複数のリンクおよび／またはインターコネクトで互いに結合されている。一部の実施形態によると、プロセッサ２０２、２０４、２０６および２０８、ならびに、ＩＯＨ０  ２２２およびＩＯＨ１  ２２４を結合するリンクおよび／またはインターコネクトは、複数のコヒーレントリンクであり、例えば、一部の実施形態では、クイック・パス・インターコネクト（Ｑｕｉｃｋ  Ｐａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ））リンクおよび／または複数のコモン・システム・インターフェース（Ｃｏｍｍｏｎ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＣＳＩ））リンクである。
【００１４】
図２のシステム２００では、ＣＰＵ３  ２０８（および／または図１のシステムのＣＰＵ３  １０８）がシステムをブートした際には無かったと仮定しており、ＣＰＵ３  ２０８は実行中のシステムにホットアド（ｈｏｔ  ａｄｄ）する必要がある。図２は、システムが備えるＱＰＩエージェント２０２、２０４、２０６、２０８、２２２および２２４のそれぞれについてのポート情報を図示している。他のプロセッサ２０２、２０４および２０６ならびにＩＯＨ２２２および２２４の間のリンク（例えば、ＱＰＩリンク）は、初期化されており動作中のリンクとして図示されているが、ＣＰＵ３  ２０８と他の構成要素との間のリンクは、まだ初期化されていないので、図２では点線で図示されている。ＣＰＵ３  ２０８のホットアドに対応するためには、最初に、実行中のシステムと追加されたＣＰＵ３  ２０８とをどのように接続するか決定する必要がある。一部の実施形態によると、ＣＰＵ３  ２０８および他の全てのＱＰＩコンポーネント２０２、２０４、２０６、２２２および２２４の両方において、ルータ（ＲＴＡ）およびソースアドレスデコーダ（ＳＡＤ）を、ＣＰＵ３  ２０８およびメモリ２１８が実行中のシステムに追加されるように構成（または再構成）する必要がある。
【００１５】
図３は、一部の実施形態に係るシステム３００を示す図である。一部の実施形態によると、システム３００は、複数のプロセッサおよび／または中央演算処理装置（ＣＰＵ）を備える。例えば、ＣＰＵ０  ３０２、ＣＰＵ１  ３０４、ＣＰＵ２  ３０６、および、ＣＰＵ３  ３０８を備える。一部の実施形態によると、システム３００はさらに、複数のメモリを備える。例えば、メモリ３１２、メモリ３１４、メモリ３１６、および、メモリ３１８を備える。一部の実施形態によると、プロセッサ３０２、３０４、３０６および３０８はそれぞれ、メモリコントローラを有する。一部の実施形態によると、システム３００はさらに、１以上の入出力（Ｉ／Ｏ）ハブ（ＩＯＨ）を備える。例えば、ＩＯＨ０  ３２２およびＩＯＨ１  ３２４を備える。一部の実施形態によると、プロセッサ３０２、３０４、３０６および３０８、ならびに、ＩＯＨ３２２およびＩＯＨ３２４は、複数のリンクおよび／またはインターコネクトで互いに結合されている。一部の実施形態によると、プロセッサ３０２、３０４、３０６および３０８、ならびに、ＩＯＨ０  ３２２およびＩＯＨ１  ３２４を結合するリンクおよび／またはインターコネクトは、複数のコヒーレントリンクであり、例えば、一部の実施形態では、クイック・パス・インターコネクト（Ｑｕｉｃｋ  Ｐａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ））リンクおよび／または複数のコモン・システム・インターフェース（Ｃｏｍｍｏｎ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＣＳＩ））リンクである。
【００１６】
図３のシステム３００では、ＩＯＨ１  ３２４（および／または図１のシステムのＩＯＨ１  １２４および／または図２のシステムのＩＯＨ１  ２２４）がシステムをブートした際には無かったと仮定しており、ＩＯＨ１  ３２４は実行中のシステムにホットアド（ｈｏｔ  ａｄｄ）する必要がある。図３は、システムが備えるＱＰＩエージェント３０２、３０４、３０６、３０８、３２２および３２４のそれぞれについてのポート情報を図示している。プロセッサ３０２、３０４、３０６および３０８ならびに他のＩＯＨ０  ３２２の間のリンク（例えば、ＱＰＩリンク）は、初期化されており動作中のリンクとして図示されているが、ＩＯＨ１  ３２４と他の構成要素との間のリンクは、まだ初期化されていないので、図３では点線で図示されている。ＩＯＨ１  ３２４のホットアドに対応するためには、最初に、実行中のシステムと追加されたＩＯＨ１  ３２４とをどのように接続するか決定する必要がある。一部の実施形態によると、ＩＯＨ１  ３２４および他の全てのＱＰＩコンポーネント３０２、３０４、３０６、３０８、および３２２の両方において、ルータ（ＲＴＡ）およびソースアドレスデコーダ（ＳＡＤ）を、実行中のシステムにＩＯＨ１  ３２４が追加されるように構成（または再構成）する必要がある。
【００１７】
一部の実施形態によると、システム再構成用のコードおよびデータをキャッシュして、メモリに対する直接アクセスまたは間接アクセスを禁止する。一部の実施形態によると、キャッシュから実行しながらシステム再構成を実行するので、ＱＰＩリンクのルーティングまたはソースアドレスデコーダを変更してもコードの実行には影響がない。
【００１８】
一部の実施形態によると、再構成時間ウィンドウにおいて実行が許可されるプロセッサコアは１つのみであり、他の全てのコアは外部に対してアクセスを実行しないようにブロックされる。一部の実施形態によると、再構成データは、ＳＭＩレイテンシを低減するために、休止−休止解除ウィンドウの外部で算出する。一部の実施形態によると、ＱＰＩプラットフォームの動的な再構成は、ＱＰＩ休止処理を用いるランタイムファームウェアフローを用いて実行される。
【００１９】
一部の実施形態によると、休止コードは、当該休止コードをメモリから読み出すことによって、キャッシュされる。休止データはキャッシュして、キャッシュラインを修正済み状態とするためのデータの読み書き処理を実行することによる、メモリに書き戻されるデータの修正は、禁止される。システム再構成コード実行中のメモリアクセスを回避するために、プリフェッチはディセーブルされる。メモリからの投機的ロードは、休止コードおよびデータ以外の全てのアドレス領域を避けることによって、行なわれない。非コア（ｕｎｃｏｒｅ）は、全ての実行中のトランザクションがシステム再構成処理を実行する前に確実に完了するように、フラッシュされる。他の全てのスレッドは、キャッシュから実行されることが確実になるように、コアで実行されるシステム再構成コードにおいて同期させられる。アウト・オブ・バンド（ＯＯＢ）デバッグ・フックは全て、システム再構成ウィンドウ中は停止させる。
【００２０】
一部の実施形態によると、ＱＰＩコンポーネントは、休止を除く全てのＱＰＩエージェントによる通常トラフィックが一時停止させられる休止モードをサポートしている。一部の実施形態に係る、プロセッサの休止モデル固有レジスタ（ＭＳＲ）の定義を以下に示す。このレジスタは、一部の実施形態において、プロセッサのＭＳＲを介して休止処理、休止解除処理、および、非コアフェンス処理を開始するソフトウェアについて用いられるとしてよい。
【表１】
0005392404.tif 000002
【００２１】
図４は、一部の実施形態に係るフロー４００を示す図である。一部の実施形態によると、フロー４００は休止データ生成フローである。最初に、４０２においてＲＡＳ処理が決定および／または特定される。そして、４０４において必要であれば新しいリンク（例えば、ＱＰＩリンク）が初期化される。その後、４０６において、例えば、ＳＡＤ、リンクルーティング（および／またはＱＰＩルーティング）、ブロードキャストリスト等の休止データが（例えば、必要であれば周期的ＳＭＩを利用して）算出される。４０８において、休止要求フラグが設定される。その後、４１０において休止ＳＭＩ＃を生成する。
【００２２】
一部の実施形態によると、再構成ウィンドウの間に実行が許可されるプロセッサコアは１つ（例えば、「支配」プロセッサ）のみで、他のコアは全て、外部へのアクセスをしないようブロックされる。一部の実施形態によると、再構成データは、ＳＭＩレイテンシを低減するべく、休止−休止解除ウィンドウの外部で算出される。
【００２３】
図５、図６および図７は、一部の実施形態に係るフロー５００、フロー６００およびフロー７００を示す。一部の実施形態によると、フロー５００、フロー６００およびフロー７００は、ＱＰＩプラットフォーム等のプラットフォームの動的再構成を実行するためのフローを説明している。一部の実施形態によると、フロー５００、フロー６００およびフロー７００は、ＱＰＩ休止を実現するランタイムファームウェアフローを用いる。
【００２４】
休止支配コアは、システム内の利用可能な全てのコアの中から、休止処理、システム再構成処理および休止解除処理を実行するコアとして選択される。休止コアは、複数のスレッドを持つとしてよい。休止コアのスレッドはそれぞれ、再構成処理中はメモリにアクセスしないように確認する必要がある。この処理は、図５、図６および／または図７において、例えば、支配ＡＰ（アプリケーションプロセッサ、つまり、非支配プロセッサ）スレッドとして、概略を説明している。
【００２５】
図５の５０２において、再構成中の実行が許可される一のプロセッサとして特定されている支配ＱＰＩエージェント（例えば、支配プロセッサ）でＳＭＩが実行されているか否か判断する。５０２において支配ＱＰＩエージェントでＳＭＩが実行されていない場合、５０４において、通常のＳＭＩ  ＡＰ（アプリケーションプロセッサ、つまり、非支配プロセッサ）スピンループを実行する。５０２において支配ＱＰＩエージェントでＳＭＩが実行されている場合、５０６において、休止要求フラグが設定されているか否かを判断する。５０６において休止要求フラグが設定されていない場合、５０８において通常のＳＭＩ支配コードが実行される。しかし、５０６において休止要求フラグが設定されている場合、５１０において支配ＡＰスレッドのウェイクアップが実施される（例えば、支配ＡＰスレッドがアクティブである場合）。一部の実施形態では、ＡＰスピンループを開始する前に各スレッドが休止要求フラグを確認する場合には、ウェイクアップを回避し得る。
【００２６】
５１２において、休止支配プロセッサが、外部のエージェントによるメモリまたは構成省略レジスタ（Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｓｐａｒｅ  Ｒｅｇｉｓｔｅｒ：ＣＳＲ）へのアクセスをディセーブルする。ＲＴＡおよびＳＡＤは通常、ＣＳＲとして実装されるので、再構成フェーズ中にＣＳＲに対するアクセスすると内容が正確でない可能性がある。これは、一部の実施形態では、実装毎に固有のＭＳＲを構成することによって、または、例えば、ベースバンド管理コントローラ（ＢＭＣ）、システムサービスプロセッサ（ＳＳＰ）、および／または、管理エンジン（ＭＥ）等のアウト・オブ・バンド（ＯＯＢ）デバイスを要求することによって、実現される。５１２において、メモリまたはＣＳＲに対する外部のエージェントからのアクセスのディセーブルは、一部の実施形態において、例えば、プロセッサデバッグフックをディセーブルすることによって、または、プロセッササイドバンドインターフェースを介したアクセスをディセーブルすることによって、実現され得る。５１４において、外部のエージェントのＣＳＲアクセスがディセーブルされたか否かを判断する。５１４において、ディセーブルされていなければ、このスレッドのフローはディセーブルされるまで５１４に留まる。５１４において、外部のエージェントのＣＳＲアクセスがディセーブルされたと判断されれば、５１６において、ＱＵＩＥＳＣＥ  ＣＴＬレジスタの休止ビットを設定することによって（例えば、ＱＵＩＥＳＣＥ＿ＣＴＬ  １．Ｑｕｉｅｓｃｅ＝１と設定することによって）、および、一部の実施形態では、ＭｏｎａｒｃｈＳｔａｔｕｓを「ＱＵＩＥＳＣＥ＿ＯＮ」に設定することによって、休止処理を開始する。この処理によって、全てのＱＰＩエージェントが休止状態を開始して、新しいトランザクションを開始しないことを確認する。ＭｏｎａｒｃｈＳｔａｔｕｓが「ＱＵＩＥＳＣＥ＿ＯＮ」に設定されたと判断されるまでは、支配ＡＰスレッドのフローは５２２に留まる。５１６からのフローは図６の「Ｍｏｎ１」に続き、５２２からのフローは図６の「ＭＡＰＴ１」に続く。
【００２７】
システムが休止状態となると、図６の支配スレッドフローに示すように、支配スレッドは、コードおよびデータの両方をキャッシュして、外部メモリアクセスを行なうことなくキャッシュからの実行を開始する。６０２において、支配ＡＰの状態が「再構成を行なう準備が整っている」状態であるか否かを判断する。これは、一部の実施形態では、支配ＡＰが存在する場合にのみ確認する。支配ＡＰの状態が「再構成を行なう準備が整っている」状態になると、６０４においてプリフェッチディセーブル処理を行なう。一部の実施形態によると、６０４の処理は、ＭＩＳＣ＿ＦＥＡＴＵＲＥ＿ＣＯＮＴＲＯＬを保存して、「ＭＦＥＮＣＥ」（メモリフェンス、例えば、ＭＦＥＮＣＥ命令よりもプログラム順序で前にある全てのロード命令およびストア命令は、ＭＦＥＮＣＥ命令の後にあるロード命令またはストア命令がグローバルに可視化される前に、グローバルに可視化されることを保証するシリアライズ処理）を行なって、および／または、ＭＩＳＣ＿ＦＥＡＴＵＲＥ＿ＣＯＮＴＲＯＬを０Ｆｈに設定することによって行なわれる。一部の実施形態によると、６０４の処理は、プリフェッチ制御、ＭＦＥＮＣＥ、および、プリフェッチディセーブルを保存することによって行なわれる。６０６では、休止用のコードおよびデータの領域のためのページテーブルがＷＢ（ライトバックキャッシュ属性）属性で設定され、ＣＳＲアクセスの領域のページテーブルをＵＣ（未キャッシュキャッシュ属性）属性で設定する。ページテーブルは、休止コード領域の外部では投機的ロードが行なわれないように、設定される。ページテーブルは、休止コード領域のみがＵＣとなるように設定される。この結果、休止コード領域の外部では投機的ロードが実行されないことが、間接的に確認される。６０８では、休止コード領域が読み出されて、当該コードをキャッシュする。６１０では、休止データ領域に対して読出および書込を実行する。一部の実施形態によると（図６には図示されていないが）、この後キャッシュされたコードへのジャンプ（例えば、休止支配コードへのジャンプ）を実行する。この段階において、コードは、メモリからではなくキャッシュから実行される。６１２において、非コアフェンスビットを設定する（例えば、ＱＵＩＥＳＣＥ＿ＣＴＬ１．ＵｎＣｏｒｅＦｅｎｃｅ＝１）。
【００２８】
休止支配コードは、図６において、休止用のコードおよびデータをキャッシュするために用いられる。例えば、６２２においてプリフェッチディセーブル処理を実行する。一部の実施形態によると、プリフェッチ制御を保存して、ＭＦＥＮＣＥを実行し、プリフェッチをディセーブルする。一部の実施形態によると、６２２の処理は、ＭＩＳＣ＿ＦＥＡＴＵＲＥ＿ＣＯＮＴＲＯＬを保存して、「ＭＦＥＮＣＥ」（メモリフェンス）を行なって、および／または、ＭＩＳＣ＿ＦＥＡＴＵＲＥ＿ＣＯＮＴＲＯＬを０Ｆｈに設定することによって行なわれる。６２４では、休止用のコードの領域のためのページテーブルがＷＢ属性で設定され、ＣＳＲアクセスの領域のページテーブルをＵＣ属性で設定する。ページテーブルは、休止用のコードおよびデータの領域の外部では投機的ロードが行なわれないように、設定される。ページテーブルは、休止用のコードおよびデータの領域のみがＵＣとなるように設定される。この結果、休止用のコードおよびデータの領域の外部では投機的ロードが実行されないことが、間接的に確認される。６２６では、休止コード領域が読み出されて、当該コードをキャッシュする。データを修正された状態でキャッシュするために、休止データ領域に対して読出および書込を実行する。この結果、システム再構成中の休止データアクセスはメモリアクセスを発生させないようにすることができる。６２８において、休止支配コード（および／または休止ＡＰコード）へのジャンプを実行する。この段階において、コードはキャッシュから実行される。６３０において、支配ＡＰステータスを「再構成の準備が整った」状態に設定する。６１４からのフローは図７の「Ｍｏｎ２」に続き、６３０からのフローは図７の「ＭＡＰＴ２」に続く。コア、非コア、および、ソケットから実行されている、キャッシュ犠牲トラフィックを含む全ての実行中のトランザクションを確実にドレインするために、非コアフェンスを実行する。この時点において、全てのコードおよびデータへのアクセスは、キャッシュに対するものであり、メモリアクセスは実行されない。
【００２９】
一部の実施形態によると、支配休止プロセッサは、各ソケットでＲＴＡ、ＳＡＤ等をプログラミングすることによってシステムを再構成する。当該システムは休止解除に設定され、全てのコアは過去の一時停止した位置から動作を継続することができる。プリフェッチおよび外部のエージェントのＣＳＲアクセスが復元される。これは、例えば、図７に従って実行される。７０２において、システムは（例えば、ＱＰＩルーティング、ＳＡＤ、ブロードキャストリスト等をプログラミングすることによって）再構成される。７０４において、支配ステータスが「再構成完了」に設定される。７０６において、支配ＡＰステータスが「ＡＰ＿ＤＯＮＥ」に設定されているか否かを判断する。一部の実施形態では、支配ＡＰが存在する場合に限りこれを確認する。７０６において支配ＡＰステータスが「ＡＰ＿ＤＯＮＥ」であると判断されると、７０８においてプリフェッチ制御が復元される。７１０において、「ＱＵＩＥＳＣＥ＿ＣＴＬ１．ＵｎＱｕｉｅｓｃｅ」ビットが「１」に設定され、「休止ステータス」が「ＱＵＩＥＳＣＥ＿ＯＦＦ」に設定される。その後７１２において、通常のＳＭＩ支配コードへと戻る。
【００３０】
７２２において、支配ステータスが「再構成完了」に設定されているか否か判断する。設定されていると、７２４においてプリフェッチ制御を復元する。７２６において、支配ＡＰステータスが「ＡＰ＿ＤＯＮＥ」に設定される。その後７２８において、通常のＳＭＩ  ＡＰコードへと戻る。
【００３１】
ＱＰＩ等のコヒーレントリンクと、複数のプロセッサ（ＭＰ）と、複数のメモリコントローラと、複数のチップセットとを備えるシステムは現在、設計が進み普及しつつある。高度なＲＡＳ特徴は、これらに限定されないが、プロセッサホットプラグ、プロセッサマイグレーション、メモリホットプラグ、メモリミラーリング、メモリマイグレーション、および、メモリ節約を含み、サーバ市場では一般的になるであろう。ＲＡＳ特徴は、ランタイム中にベーシック入出力システム（ＢＩＯＳ）による多くの処理を必要とする。一部の実施形態によると、システム再構成は高コストなハードウェアフックを必要とすることなく実行される。
【００３２】
クイック・パス・インターコネクト（Ｑｕｉｃｋ  Ｐａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ））（および／またはＣＳＩ）をベースとするサーバシステムによって、これらに限定されないが、プロセッサホットプラグ、メモリホットプラグ、メモリミラーリング、メモリマイグレーション、メモリ節約等を含む高度なＲＡＳ特徴が導入される。このような特徴では、オペレーティングシステム（ＯＳ）が動作している間に、システム構成を動的に変更する必要がある。この処理は現在、システム管理割り込み（ＳＭＩ）を用いて実現されている。尚、ＳＭＩでは、全てのプロセッサをまとめて、ＡＰＩエージェント（プロセッサ、ＩＯＨ等）を休止させ、システム構成（ＱＰＩルーティング、アドレスデコーダ等）をプログラミングし直す。しかし、ＳＭＩはメモリから実行される。これは、ＱＰＩルーティング変更中は許容されない。このため、一部の実施形態では、ＳＭＩハンドラコードおよびデータをキャッシュにロードして、当該キャッシュから実行する。このため、ランタイム構成フローは、キャッシュアーキテクチャに依存する度合いが非常に高い。また、コードをキャッシュして、ＳＭＩコードを実行することでＱＰＩルーティングおよびアドレスデコーダをプログラミングし直すと、多大な時間がかかってしまう。ＯＳのためにＳＭＩレイテンシには限度があるので、ＳＭＩによる休止およびＱＰＩプログラミングのコードは、レイテンシ要件を満たすべく厳しいタイミング条件を考慮しつつ慎重に書く必要がある。このような要因によって、先行技術に係る休止フローは非常に複雑なものとなり、コード化および検証が困難である。
【００３３】
一部の実施形態によると、シャドーレジスタによって、ハードウェアは、休止処理を実行して、休止中にＢＩＯＳおよび／またはＳＭＩのコードを実行することなくシステム構成を変更できるようになる。このため、システム構成を高速に変更できるようになり、ＳＭＩレイテンシを小さく抑えることができ（または、ＳＭＩレイテンシをゼロにすることができ）、プロセッサキャッシュアーキテクチャに依存しなくていいようになり、関連する複雑な処理も不要になる。
【００３４】
図８は、一部の実施形態に係るシステム８００を示す図である。一部の実施形態によると、システム８００は、複数のプロセッサおよび／または中央演算処理装置（ＣＰＵ）を備える。例えば、ＣＰＵ０  ８０２、ＣＰＵ１  ８０４、ＣＰＵ２  ８０６、および、ＣＰＵ３  ８０８を備える。一部の実施形態によると、システム８００はさらに、複数のメモリを備える。例えば、メモリ８１２、メモリ８１４、メモリ８１６、および、メモリ８１８を備える。一部の実施形態によると、プロセッサ８０２、８０４、８０６および８０８はそれぞれ、メモリコントローラを有する。一部の実施形態によると、システム８００はさらに、１以上の入出力（Ｉ／Ｏ）ハブ（ＩＯＨ）を備える。例えば、ＩＯＨ０  ８２２およびＩＯＨ１  ８２４を備える。一部の実施形態によると、プロセッサ８０２、８０４、８０６および８０８、ならびに、ＩＯＨ８２２およびＩＯＨ８２４は、複数のリンクおよび／またはインターコネクトで互いに結合されている。一部の実施形態によると、プロセッサ８０２、８０４、８０６および８０８、ならびに、ＩＯＨ０  ８２２およびＩＯＨ１  ８２４を結合するリンクおよび／またはインターコネクトは、複数のコヒーレントリンクであり、例えば、一部の実施形態では、クイック・パス・インターコネクト（Ｑｕｉｃｋ  Ｐａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ））リンクおよび／または複数のコモン・システム・インターフェース（Ｃｏｍｍｏｎ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＣＳＩ））リンクである。
【００３５】
図８のシステム８００では、システムがブートされたときにはＣＰＵ３  ８０８（および／または図１のシステムのＣＰＵ３  １０８）が存在しているが、実行中のシステムからホットリムーバルされると仮定している。他のプロセッサ８０２、８０４および８０６ならびにＩＯＨ８２２および８２４の間のリンク（例えば、コヒーレントリンクおよび／またはＱＰＩリンク）は、初期化されており動作中のリンクとして図示されているが、ＣＰＵ３  ８０８と他の構成要素との間のリンクは、ＣＰＵ３  ８０８がホットリムーバルされた後はアクティブでいる必要はないので、図８では点線で図示されている。ＣＰＵ３  ８０８のホットリムーバルに対応するためには、ＯＳが、ＣＰＵ３  ８０８およびＣＰＵ３  ８０８に結合されているメモリ８１８の利用を中止する必要がある。システムは、休止させる必要があり、ＣＰＵ３  ８０８のアドレスルーティングは全てのソケットにおいて削除する必要があり、ＣＰＵ３  ８０８に対するリンクルーティング（例えば、ＱＰＩルーティング）は全てのソケットにおいて削除する必要がある。システムはその後、ＯＳの動作を継続するために休止解除する必要がある。
【００３６】
図９は、一部の実施形態に係るシステム９００を示す図である。一部の実施形態によると、システム９００は、複数のプロセッサおよび／または中央演算処理装置（ＣＰＵ）を備える。例えば、ＣＰＵ０  ９０２、ＣＰＵ１  ９０４、ＣＰＵ２  ９０６、および、ＣＰＵ３  ９０８を備える。一部の実施形態によると、システム９００はさらに、複数のメモリを備える。例えば、メモリ９１２、メモリ９１４、メモリ９１６、および、メモリ９１８を備える。一部の実施形態によると、プロセッサ９０２、９０４、９０６および９０８はそれぞれ、メモリコントローラを有する。一部の実施形態によると、システム９００はさらに、１以上の入出力（Ｉ／Ｏ）ハブ（ＩＯＨ）を備える。例えば、ＩＯＨ０  ９２２およびＩＯＨ１  ９２４を備える。一部の実施形態によると、プロセッサ９０２、９０４、９０６および９０８、ならびに、ＩＯＨ９２２およびＩＯＨ９２４は、複数のリンクおよび／またはインターコネクトで互いに結合されている。一部の実施形態によると、プロセッサ９０２、９０４、９０６および９０８、ならびに、ＩＯＨ０  ９２２およびＩＯＨ１  ９２４を結合するリンクおよび／またはインターコネクトは、複数のコヒーレントリンクであり、例えば、一部の実施形態では、クイック・パス・インターコネクト（Ｑｕｉｃｋ  Ｐａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ））リンクおよび／または複数のコモン・システム・インターフェース（Ｃｏｍｍｏｎ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＣＳＩ））リンクである。
【００３７】
図９のシステム９００では、システムがブートされたときにはＩＯＨ１  ９２４（および／または図１のシステムのＩＯＨ１  １２４）が存在しているが、実行中のシステムからホットリムーバルされると仮定している。プロセッサ９０２、９０４、９０６および９０８ならびに他のＩＯＨ０  ９２２の間のリンク（例えば、コヒーレントリンクおよび／またはＱＰＩリンク）は、初期化されており動作中のリンクとして図示されているが、ＩＯＨ１  ９２４と他の構成要素との間のリンクは、ＩＯＨ１  ９２４がホットリムーバルされた後はアクティブでいる必要はないので、図９では点線で図示されている。ＩＯＨ１  ９２４のホットリムーバルに対応するためには、ＯＳが、ＩＯＨ１  ９２４の利用を中止する必要がある。システムは、休止させる必要があり、ＩＯＨ１  ９２４のアドレスルーティングは全てのソケットにおいて削除する必要があり、ＩＯＨ１  ９２４に対するリンクルーティング（例えば、ＱＰＩルーティング）は全てのソケットにおいて削除する必要がある。システムはその後、ＯＳの動作を継続するために休止解除する必要がある。
【００３８】
一部の実施形態では、各エージェント（例えば、各ＱＰＩエージェント）が、リンクルーティング（例えば、ＱＰＩルーティング）のための一連のシャドーレジスタ、アドレスデコーダ、ブロードキャストリスト、および、システム再構成に関わる任意のその他のレジスタを提供する。構成を変更する場合、一部の実施形態では、シャドーレジスタはソフトウェアによって新しい構成レジスタでプログラミングされて、ソフトウェアは構成の切替を実行するためのハードウェア要求を開始する。新しい構成は、構成切替が完了するとすぐに有効になる。
【００３９】
図１０は、一部の実施形態に係るフロー１０００を示す図である。一部の実施形態によると、フロー１０００は構成を変更するためのソフトウェアのフローである。フロー１０００は１００２で開始される。１００４において、シャドーレジスタは、新しい一群の構成値でプログラミングされる。１００６において、構成変更要求が、構成変更後に削除されないＱＰＩエージェント等のエージェントによって発行される。構成変更は、モデル固有レジスタ（ＭＳＲ）または構成空間レジスタ（ＣＳＲ）等のハードウェアレジスタに書込を行うことによって、開始される。１００８において、ハードウェアは構成変更処理を実行する。一部の実施形態によると、ハードウェアは１００８において、例えば、図１１に図示すると共に詳細を後述するフロー１１００と同様または同一の方法で、構成変更処理を実行する。ハードウェアは、休止処理を実行して、シャドーレジスタに基づいて新しい構成レジスタに切り替わる（例えば、一部の実施形態によると、図１１に図示すると共に後述する方法で行われる）。１０１０において、システムの構成が新しくなり、この新しい構成でシステムによる処理を続けることができる。フロー１０００は、１０１２において終了する。
【００４０】
図１１は、一部の実施形態に係るフロー１１００を示す図である。一部の実施形態によると、フロー１１００はハードウェアが構成を変更するフローを表している。フロー１１００は１１０２で開始される。１１０４において、各ＱＰＩエージェント（または、一部の実施形態ではその他の種類のエージェント）を休止させるための要求が送信される。この結果、ダイレクトメモリアクセス（ＤＭＡ）がブロックされ、休止発行エージェント以外のＱＰＩエージェントが新しいトランザクションを生成しないようにブロックされる。一部の実施形態によると、全ての実行中のトランザクションを完了させるためにポーリングが行われる。１１０６において、フロー１１００は、休止を開始して全ての実行中のトランザクションがドレインされた旨を示す確認応答を全てのＱＰＩエージェントが返すまで待機する。全てのＱＰＩエージェントがシャドーレジスタからレジスタ群（および／または新しい構成）をプログラミングし直す（および／またはレジスタ群をシャドーレジスタに切り替える）ことを求める要求が発行される。確認応答は、例えば、シャドーレジスタに設定されている情報に基づいて送り返される。一部の実施形態によると、レジスタデータは、スパニングツリーに基づいて応答する相手を含む。一部の実施形態においてこの処理をどのように行うかについて詳細な内容は、例えば、米国特許出願第１１／０１１，８０１号（米国特許出願公開広報第２００６／０１２６６５６  Ａ１、公開日：２００６年６月１５日、発明の名称：「システムレベル初期化を行うための方法、システム、および装置（Ｍｅｔｈｏｄ，  Ｓｙｓｔｅｍ，  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｓｙｓｔｅｍ  Ｌｅｖｅｌ  Ｉｎｉｔｉａｌｉｚａｔｉｏｎ）」）をさらに参照されたい。
【００４１】
１１０８において、構成変更要求がブロードキャストされる。１１１０において、全てのチャイルドスパニングツリーが完了を返答したか否かを判断する。一部の実施形態によると、システム再構成が完了した旨を示す確認応答が送信される。１１１０において全てのチャイルドスパニングツリーが完了を返答したと判断すれば、１１１２において休止解除要求を全てのＱＰＩエージェント（および／または新しいエージェント）に送る。１１１４において、全てのエージェント（および／または新しいエージェント）が確認応答を返答したか否かを判断する。１１１４において全てのエージェント（および／または新しいエージェント）が確認応答を返答したと判断すれば、１１１６において通常処理を再開する。この結果、ＤＭＡに対するブロックが解除され、（例えば、実行コードに戻ることによって）トランザクションを続けることができる。
【００４２】
一部の実施形態によると、シャドーレジスタ（および／または複製レジスタ）は、新規構成情報を保持している。一部の実施形態によると、構成変更開始は、ソフトウェアによって実現される。一部の実施形態によると、ハードウェアは、システム休止を実行してシャドー構成を現在の構成へと切り替えると共に、その後で休止解除を実行してシステムの処理を続けさせる。一部の実施形態によると、ハードウェアは、構成レジスタ切替処理を開始する前に、全てのＱＰＩエージェントが休止状態にあることを確かめるために確認を実行する。一部の実施形態によると、スパニングツリーを持つシャドーレジスタを用いて、再構成後にデータを戻す。
【００４３】
現在のサーバシステムは、休止および休止解除を実行するためにＭＳＲをベースとした機構を利用している。ＳＭＩコードは、全てのプロセッサをランデブーさせて休止を開始させる必要がある。ＳＭＩは、コードおよびデータをキャッシュする必要があり、システムを変更する前にプリフェッチおよび投機的ロードが禁止されていることを確認する必要がある（プロセッサは、投機的ロードをディセーブルする直接的な制御は行わないので、複雑な未キャッシュおよびキャッシュ済みコード設定シーケンスが必要となる）。これを怠ると、メモリアクセス、スヌープ、プリフェッチおよび投機的ロードによって、ＱＰＩルーティング変更中にＳＭＩコード／データアクセスに関する問題が発生して、システムエラーになってしまう。ＳＭＩコードおよび当該特徴を形成する際に関連するその他の設定の妥当性確認は、非常に複雑で、ＯＳがＳＭＩについて許容している制限時間よりもＳＭＩレイテンシが長くなってしまう場合がある。
【００４４】
一部の実施形態によると、ＳＭＩおよび／または休止／休止解除の時間ウィンドウの外部で算出およびプログラミングを行うことができるシャドーレジスタ群を用いる。また、シャドーレジスタ切替は、複雑なソフトウェアフローではなく、ハードウェアによって行われる。これは、ＳＭＩレイテンシを低減する役割を果たす。
【００４５】
一部の実施形態では、コードおよび／またはデータのキャッシュ処理に左右されないので、アーキテクチャに左右されない。
【００４６】
一部の実施形態によると、シャドーレジスタ切替はハードウェアで行われ、各ＱＰＩエージェントはシャドーレジスタ群を備えるので、スケーラブルな解決策が提供される。従来のＳＭＩをベースとする解決策は、ＳＭＩの全てのスレッドを必要とする。ＱＰＩエージェントおよび／またはコアの数が増えるにつれて、処理を完了するまでの時間が長くなり、ＯＳのＳＭＩレイテンシ要件を満たせなくなる。一部の実施形態に係る解決策は、ある生成から別の生成へと拡張可能であり、スケーラブルである（例えば、方向を問わずスケーラブルである）。
【００４７】
一部の実施形態によると、アウト・オブ・バンド（ＯＯＢ）ファームウェア（例えば、システムサービスプロセッサ（ＳＳＰ））は、低速のサイドバンドインターフェースを用いる場合であってもＯＳレイテンシの限界値を超えることなく、システム構成を変更することができる。ＳＳＰは、従来の方法を用いて、ランタイムシステム構成を変更することはできない。
【００４８】
現在のＱＰＩ技術（ＱＰＩプラットフォームでＲＡＳ特徴をサポートする上で鍵となる）は、キャッシュアーキテクチャに左右され、非常に複雑であり、妥当性確認が困難であり、ファームウェアハンドラはＯＳレイテンシ要件内に収まるように手動で調整する必要がある。休止の実行、および、直接接続されたフラッシュからのＱＰＩルーティングおよびアドレスデコーダの再プログラミング等の他の方法は、非常に遅いのでＳＭＩレイテンシのＯＳ要件を満たさない。このような問題は、一部の実施形態で克服される。一部の実施形態では、シャドーレジスタのプログラミングを休止期間中に行なわないので、休止のためのレイテンシが低減されると共に、休止およびシステム構成変更のフローを実行するファームウェアの複雑さが軽減される。一部の実施形態によると、キャッシュアーキテクチャに依存しなくなるので、複雑なファームウェアフローが必要なくなる。
【００４９】
一部の実施形態によると、構成の変更はハードウェアによって実行され、構成変更中にソフトウェアの介入は必要ない。このように、システム構成の変更に関連するレイテンシの合計は、従来の方法に比べてはるかに短縮され、エンドユーザに対するリアルタイムでの応答が可能となる。
【００５０】
本明細書に記載するように、これらに限定されないが、プロセッサ、メモリのホットプラグ、オンライン化／オフライン化等の高度なＲＡＳ特徴をサポートしているか否かは、高度サーバの市場のプラットフォームでは鍵となる。このようなＲＡＳフローを実現する効果的なＱＰＩ処理が必要である。現在のＲＡＳ用ＱＰＩ休止フローは、休止コードを外部メモリアクセス／スヌープ／投機的ロード等を生成することなくキャッシュから実行する必要があるので、キャッシュアーキテクチャに対する依存性のためにプロセッサによる生成に限定されている。このようなフローは、非常にコード化が複雑であり、妥当性確認が困難であるので、ＱＰＩ上でのＲＡＳのサポートが大きく制限されてしまう場合がある。一部の実施形態によると、休止を実現する方法を簡略化しており、プロセッサのキャッシュのアーキテクチャに依存していない。また、高度なＲＡＳ特徴はＱＰＩプラットフォームでサポート可能であり、より大規模なマルチプロセッサ（ＭＰ）プラットフォームにも良好にスケーリングされる。
【００５１】
一部の実施形態は、システム管理割り込み（ＳＭＩ）技術に適用可能であるとして本明細書で説明した。しかし、他の実施方法は他のランタイムインターフェースに関する。例えば、一部の実施形態では、プラットフォーム管理割り込み（ＰＭＩ）を利用する。
【００５２】
一部の実施形態は、例えば、プロセッサコアおよび／または集積化されたメモリを含むソケットとして図示されると共に本明細書で説明されている。しかし、一部の実施形態では、さらに別の構成要素をソケットに集積化する。例えば、一部の実施形態によると、例えば、プロセッサソケットにＩ／Ｏルートコンプレックスを集積化する。一部の実施形態によると、Ｉ／Ｏデバイスをプロセッサソケットに集積化する。プロセッサソケットに他の構成要素を追加して集積化する実施形態は、当該実施形態を現時点において、そして、今後実施する場合にも明らかである。
【００５３】
本明細書では一部の実施形態をＱＰＩを利用するシステムに適用可能なものとして説明したが、一部の実施形態によると、このような特定の方法での実施が必要なわけではないとしてよい。つまり、本明細書に記載した実施形態は、一部の実施形態によると、任意のコヒーレントリンクに適用可能であり、ＱＰＩに限定されない。一部の実施形態によると、ＱＰＩ以外を利用するシステムが実現される。一部の実施形態によると、ノードコントローラを利用するシステムを実現する。
【００５４】
一部の実施形態を特定の実施方法に関連付けて説明したが、一部の実施形態によると、他の実施方法も可能である。また、図面に図示し、および／または、本明細書に記載した回路素子または他のフィーチャの配置および／または順序は、図示および説明した特定の配置および／または順序である必要はない。一部の実施形態によると他にも多くの配置が可能である。
【００５５】
図示した各システムでは、各構成要素に割り当てている参照番号は、同じまたは異なる場合があるとしてよく、その構成要素が異なるか、および／または、同様である可能性を示唆している。しかし、一の構成要素については、複数の異なる実施例が認められ、図示または本明細書で説明したシステムの一部または全てで利用される程度に柔軟性があるとしてよい。図示したさまざまな構成要素は、同一であってもよいし、または、異なるとしてもよい。どの構成要素を第１の構成要素と呼び、どの構成要素を第２の構成要素と呼ぶかは任意である。
【００５６】
明細書および特許請求の範囲において、「結合」および「接続」という用語を用いる場合がある。「結合」および「接続」は同義語として用いているものではないと理解されたい。特定の実施形態では、「接続」は２以上の構成要素が物理的または電気的に直接接触していることを意味するために用いられるとしてよい。「結合」は、２以上の構成要素が物理的または電気的に直接接触していることを意味するとしてよい。しかし、「結合」はさらに、２つ以上の構成要素が直接接触していないが、協働またはやり取りは存在することを意味するとしてよい。
【００５７】
「アルゴリズム」は、本明細書において、および、一般的に、所望の結果を導き出す自己矛盾のない一連の動作または処理であると見なされている。これには、物理的な量を物理的に操作することも含まれる。必須ではないが通常は、このような物理的な量は、格納、移送、結合、比較、およびその他の操作が可能な電気信号または磁気信号として表される。時として、主に一般的な用法のために、このような信号をビット、値、要素、シンボル、文字、項、数等と呼ぶことが便利であると分かっている。しかし、このような用語および同様の用語は全て適切な物理量と対応付けられるものであり、物理量に割り当てられる便利な名称に過ぎないと理解されたい。
【００５８】
一部の実施形態は、ハードウェア、ファームウェアおよびソフトウェアのいずれか１つ、または、これらの組み合わせで実現されるとしてよい。一部の実施形態は、機械可読媒体に格納される命令として実現されるとしてもよい。当該命令は、コンピューティングプラットフォームによって読み出されて実行されると、本明細書に記載している処理を実行するとしてよい。機械可読媒体は、機械（例えば、コンピュータ）が読出可能な形式で情報を格納または送信する任意の機構を含むとしてよい。例えば、機械可読媒体は、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク格納媒体、光格納媒体、フラッシュメモリデバイス、電気信号、光信号および音響信号等の伝播信号（例えば、搬送波、赤外線信号、デジタル信号、信号を送受信するインタフェース等）等を含むとしてよい。
【００５９】
「実施形態」とは、本発明の実施方法または一例である。本明細書において「ある実施形態」、「一実施形態」、「一部の実施形態」または「その他の実施形態」と記載する場合、当該実施形態に関連付けて説明した特定の特徴、構造または特性が、本発明の必ずしも全ての実施形態ではなく少なくとも一部の実施形態に含まれることを意味する。「ある実施形態」、「一実施形態」または「一部の実施形態」という表現は何度も登場するが、全てが必ずしも同じ実施形態を指しているものではない。
【００６０】
本明細書で説明および図示した構成要素、特徴、構造、特性等は、全てを特定の実施形態に含む必要はない。例えば、明細書において、ある構成要素、特徴、構造または特性を「含むとしてもよい」、「含み得る」、「含むことができる」または「含んでよい」と記載する場合、この特定の構成要素、特徴、構造または特性を含むことは要件ではない。明細書または特許請求の範囲において構成要素について「一の」と記載する場合、この構成要素が１つのみであることを意味するわけではない。明細書または特許請求の範囲において構成要素について「一の追加の」と記載する場合、追加される構成要素が複数あるケースを除外するものではない。
【００６１】
本明細書では実施形態を説明する際にフローチャートおよび／または状態図を利用したが、本発明はそれらのフローチャートおよび／または状態図や、本明細書中の対応する記載に限定されるものではない。例えば、フローは、図示したボックスあるいは状態を全て遷移していく必要はなく、または、本明細書に記載し且つ図示したものと全く同一順序で実行する必要はない。
【００６２】
本発明は、本明細書に列挙した具体的且つ詳細な内容に限定されるものではない。実際、当業者であれば、本開示内容を参考にすることによって、上記の記載内容および図示内容から多くの他の変形例が本発明の範囲内で為され得ることに想到するであろう。したがって、本発明の範囲を定義しているのは、特許請求の範囲およびそれらの補正である。
【図１】
0005392404.tif 000003
【図２】
0005392404.tif 000004
【図３】
0005392404.tif 000005
【図４】
0005392404.tif 000006
【図５】
0005392404.tif 000007
【図６】
0005392404.tif 000008
【図７】
0005392404.tif 000009
【図８】
0005392404.tif 000010
【図９】
0005392404.tif 000011
【図１０】
0005392404.tif 000012
【図１１】
0005392404.tif 000013