(57)【特許請求の範囲】
【請求項１】
複数の特定用途向けスーパーコンピュータを仮想化するためのハイパーバイザ・システムであって、前記システムは、
（ａ）ソフトウェアアプリケーション及び前記ソフトウェアアプリケーションをアクセラレートする特定用途向け仮想スーパーコンピュータで構成される少なくとも１つのソフトウェア−仮想ハードウェアの対であって、
ｉ．前記特定用途向け仮想スーパーコンピュータが、１つの又は１つより多い仮想タイルを有し、
ｉｉ．前記ソフトウェアアプリケーション及び前記仮想タイルが、それら自身の間で複数のメッセージで通信する、
ソフトウェア−仮想ハードウェアの対と、
（ｂ）１つの又は１つより多い再構成可能な物理タイルであって、前記仮想タイルの機能を実行するように前記再構成可能な物理タイルを構成することによって、各特定用途向け仮想スーパーコンピュータの各仮想タイルが少なくとも１つの再構成可能な物理タイル上で実装されることが可能である、再構成可能な物理タイルと、
（ｃ）前記再構成可能な物理タイルから独立し、実質的にハードウェア内に実装され、前記再構成可能な物理タイル上の前記仮想タイルの並列のプリエンプティブスケジューリングを実行するスケジューラと
を備えるハイパーバイザ・システム。
【請求項２】
複数の特定用途向けスーパーコンピュータを仮想化するためのハイパーバイザ・システムであって、前記システムは、
（ａ）ソフトウェアアプリケーション及び前記ソフトウェアアプリケーションをアクセラレートする特定用途向け仮想スーパーコンピュータで構成される少なくとも１つのソフトウェア−仮想ハードウェアの対であって、
ｉ．前記特定用途向け仮想スーパーコンピュータが、１つの又は１つより多い仮想タイルを有し、
ｉｉ．前記ソフトウェアアプリケーション及び前記仮想タイルが、それら自身の間で複数のメッセージで通信する、
ソフトウェア−仮想ハードウェアの対と、
（ｂ）１つの又は１つより多い再構成可能な物理タイルであって、前記仮想タイルの機能を実行するように前記再構成可能な物理タイルを構成することによって、各特定用途向け仮想スーパーコンピュータの各仮想タイルが少なくとも１つの再構成可能な物理タイル上で実装されることが可能である、再構成可能な物理タイルと、
（ｃ）実質的にハードウェア内に実装され、前記再構成可能な物理タイル上の前記仮想タイルの並列のプリエンプティブスケジューリングのためのスケジューラと、
（ｄ）各仮想タイルを対応する再構成可能な物理タイルにマッピングするために使用されるデータを格納するテーブルであって、前記テーブルのエントリが、仮想タイルについて、
ｉ．現在において前記仮想タイルがどの再構成可能な物理タイルにも含まれていない場合は、ＮＵＬＬ、又は
ｉｉ．他の場合は、現在において前記仮想タイルが含まれている再構成可能な物理タイルを示すデータ
を格納する、テーブルと、
（ｅ）再構成可能な各物理タイルに対して予約された、前記テーブルの１次キャッシュと
を更に備え、
前記１次キャッシュは、
メッセージの送信元の再構成可能な物理タイルｐ０に含まれるメッセージの送信元の仮想タイルｖ０から、メッセージの宛先の再構成可能な物理タイルｐに含まれるメッセージの宛先の仮想タイルｖにメッセージを送信する場合に、
●前記メッセージの送信元の仮想タイルｖ０を含む前記メッセージの送信元の再構成可能な物理タイルｐ０
が、メッセージを、
●前記メッセージの宛先の仮想タイルｖを含む前記メッセージの宛先の再構成可能な物理タイルｐ
に、
前記メッセージの送信元の再構成可能な物理タイルｐ０に対して予約された前記１次キャッシュ内に、ｖをｐにマッピングするために使用されるデータが格納されている場合は必ず、
○前記メッセージがｐ０に含まれる前記送信元の仮想タイルｖ０を離れる場合に、ｐを含むフィールドを前記メッセージに追加し、
○スケーラブルなネットワークを通じて、ｐに含まれる前記宛先の仮想タイルｖに向けて前記メッセージをルーティングするために、前記ｐのフィールドを使用し、
○前記宛先の仮想タイルに到達する場合に、前記メッセージを、ｐ０に含まれる前記送信元の仮想タイルｖ０を離れる場合においてｐを含む前記フィールドが追加される前の形式に戻す
●ことによって、
直接かつ効率的に送信することができるよう、メッセージの宛先の複数の仮想タイルをメッセージの宛先の複数の再構成可能な物理タイルにマッピングする、
ハイパーバイザ・システム。
【請求項３】
（ｆ）モニタユニットであって、
ｉ．前記複数の再構成可能な物理タイルから、前記複数の再構成可能な物理タイルのアクティビティの統計情報を収集し、
ｉｉ．前記統計情報を解析し、
ｉｉｉ．再構成可能な物理タイルを置換する任意の要求が前記モニタユニットに到達した場合に、タイル置換ポリシー及び前記統計情報の解析結果に基づいて、置換する最適な再構成可能な物理タイルで応答することによって、
前記タイル置換ポリシーを実装するモニタユニット
を更に備える、請求項２に記載のハイパーバイザ・システム。
【請求項４】
（ｇ）それぞれ（ｄ）の前記テーブルの一部分の検索を担う複数の所有者ユニット
を更に備え、
メッセージの送信元の再構成可能な物理タイルｐ０が、ｐ０に対して予約された１次キャッシュ内でメッセージの宛先の仮想タイルｖを発見できなかった場合に、ｖに対する責任を有する所有者ユニットｏ０が、前記１次キャッシュのミスを解決するために前記テーブルのｏ０の部分の中で、
ｉ．前記所有者ユニットｏ０が、前記テーブルのｏ０の部分の中で、再構成可能な物理タイルｐに仮想タイルｖをマッピングするために使用されるデータを発見した場合、
１．前記メッセージの送信元の再構成可能な物理タイルｐ０に対して予約された前記１次キャッシュが、（ｖからｐへ）マッピングするために使用されるデータを含むように更新され、
２．前記メッセージが、前記メッセージの送信元の再構成可能な物理タイルｐ０から、前記メッセージの宛先の仮想タイルｖを含む前記メッセージの宛先の再構成可能な物理タイルｐに、直接送達され、
ｉｉ．そうでなく、前記所有者ユニットｏ０が、前記テーブルのｏ０の部分の中で、再構成可能な物理タイルｐに仮想タイルｖをマッピングするために使用されるデータを発見できなかった場合、
１．前記所有者ユニットｏ０が、置換する再構成可能な物理タイルを（ｆ）の前記モニタユニットに要求し、
２．前記モニタユニットによって供給された再構成可能な物理タイルｐが既に他の仮想タイルｖ'によって占められている場合、前記所有者ユニットｏ０が、ｖ'に対して責任を有する所有者ユニットｏ１に、
ａ．（ｖ'からｐへ）マッピングするために使用されるデータを含む、前記ハイパーバイザ・システム内の全ての１次キャッシュの複数のエントリを無効化し、
ｂ．前記再構成可能な物理タイルｐを停止して、ｐに含まれる前記仮想タイルｖ'の状態を保存し、
ｃ．前記テーブルのｏ１の一部分から前記（ｖ'からｐへ）マッピングするために使用されるデータを削除する
よう要求し、
３．前記所有者ユニットｏ０が、前記テーブルのｏ０の部分に、（ｖからｐへ）マッピングするために使用されるデータを挿入し、
４．前記所有者ユニットｏ０が、最後の保存された前記仮想タイルｖの状態を前記再構成可能な物理タイルｐに書き込み、ｖを停止したところから再開させ、
５．前記メッセージの送信元の再構成可能な物理タイルｐ０に対して予約された前記１次キャッシュが、前記（ｖからｐへ）マッピングするために使用されるデータを含むように更新され、
６．メッセージが、前記メッセージの送信元の再構成可能な物理タイルｐ０から、前記メッセージの宛先の仮想タイルｖを含む前記メッセージの宛先の再構成可能な物理タイルｐに、直接送達される
ことによりｖを検索するよう、複数の前記一部分は、重複せず、合わせて前記テーブルの全体を構成する
請求項３に記載のハイパーバイザ・システム。
【請求項５】
（ｈ）所与の任意の２つの仮想タイルｖ１及びｖ２について、前記仮想タイルｖ１から前記仮想タイルｖ２への複数のメッセージが、並列オペレーション中に並べ替えられないことを保証する手段
を更に備える、請求項４に記載のハイパーバイザ・システム。
【請求項６】
（ｉ）複数のメッセージが失われないことを保証する手段であって、所与の２つの仮想タイルｖ１及び仮想タイルｖ２について、前記仮想タイルｖ１から前記仮想タイルｖ２にメッセージが送信される場合は必ず、並列オペレーション中に前記メッセージが常に前記仮想タイルｖ２に送達される、手段
を更に備える、請求項４又は５に記載のハイパーバイザ・システム。
【請求項７】
（ｊ）仮想タイルｖを含む複数の再構成可能な物理タイルｐのそれぞれについて、（ｖからｐへ）マッピングするために使用されるデータを含んでいる（ｅ）の１次キャッシュのセットを維持し、前記仮想タイルｖが前記再構成可能な物理タイルｐからプリエンプトされた場合に（ｅ）の当該１次キャッシュのセットに無効化メッセージを送信することにより、（ｄ）の前記テーブル及び（ｅ）の複数の前記１次キャッシュの間のコヒーレンスを、低減された数の無効化メッセージを用いて達成する手段
を更に備える、請求項４から６のいずれか１項に記載のハイパーバイザ・システム。
【請求項８】
（ｋ）（ｆ）の前記モニタユニットに対してサービス水準合意（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔｓ）に準拠したタイル置換ポリシーを実装する手段
を更に備える、請求項４から７のいずれか１項に記載のハイパーバイザ・システム。
【請求項９】
（ｌ）ＡＳＩＣ技術で実装された再構成可能な物理タイルとして定められ、前記再構成可能な物理タイルに提供された複数の構成パラメータに基づいて特定用途向け仮想スーパーコンピュータの複数の前記仮想タイルのいずれか１つを実現できる少なくとも１つのＡＳＩＣの再構成可能な物理タイル
を更に備える、請求項１から８のいずれか１項に記載のハイパーバイザ・システム。
【請求項１０】
ソフトウェアアプリケーション及び特定用途向け仮想スーパーコンピュータで構成されるソフトウェア−仮想ハードウェアの対は、外部ネットワーク接続性を有し、ハードウェア・アクセラレートされた仮想オペレーティングシステムを、
（ｍ）前記ソフトウェア−仮想ハードウェアの対の前記特定用途向け仮想スーパーコンピュータ内の１つの仮想タイルが、再構成可能な物理タイルに割り当てられた場合に、前記ハードウェア・アクセラレートされた仮想オペレーティングシステムを実行する汎用マイクロプロセッサを含み、
（ｎ）前記ソフトウェア−仮想ハードウェアの対の前記特定用途向け仮想スーパーコンピュータの残りの複数の前記仮想タイルが、複数の再構成可能な物理タイルに割り当てられた場合に、前記ハードウェア・アクセラレートされた仮想オペレーティングシステム内の複数のカーネルコード及び複数のユーザアプリケーションコードのハードウェア・アクセラレートを実現し、
（ｏ）前記ソフトウェア−仮想ハードウェアの対の前記ソフトウェアアプリケーションの部分は、前記汎用マイクロプロセッサを含む前記仮想タイル、及び必要に応じて前記特定用途向け仮想スーパーコンピュータの他の複数の仮想タイルを外部ネットワークに接続するネットワークゲートウェイによって置換される
ように実現するために変更される、
請求項１から９のいずれか１項に記載のハイパーバイザ・システム。
【請求項１１】
（ｐ）ソフトウェアアプリケーション及び特定用途向け仮想スーパーコンピュータで構成される新しいソフトウェア−仮想ハードウェアの対を前記ハイパーバイザ・システムに追加する、又は前記ハイパーバイザ・システムからそのような対を削除する手段
を更に備える、請求項１から１０のいずれか１項に記載のハイパーバイザ・システム。
【請求項１２】
少なくとも１つの再構成可能な物理タイルは、等しくない大きさであり得る複数の再構成可能な物理サブタイルを持ち、
前記ハイパーバイザ・システムは、
複数の再構成可能な物理タイルの利用向上のための、
（ｑ）スケジューリング時に、仮想タイルを、前記仮想タイルを収容する十分な大きさである再構成可能な物理サブタイルに割り当てる
手段を更に備える、請求項１から１１のいずれか１項に記載のハイパーバイザ・システム。
【請求項１３】
（ｒ）前記ハイパーバイザ・システム内のソフトウェア−仮想ハードウェアの複数の対の相互の分離を達成するために、ソフトウェアアプリケーション及び特定用途向け仮想スーパーコンピュータで構成されるソフトウェア−仮想ハードウェアの対の中の各仮想タイルが、同じ特定用途向け仮想スーパーコンピュータの他の複数の仮想タイル及び前記ソフトウェア−仮想ハードウェアの対の前記ソフトウェアアプリケーションとだけ通信するよう制限する手段
を更に備える、請求項１から１２のいずれか１項に記載のハイパーバイザ・システム。
【請求項１４】
複数の特定用途向けスーパーコンピュータを仮想化するためのハイパーバイザ・システムに組み込まれる、ソフトウェアアプリケーション及び特定用途向け仮想スーパーコンピュータで構成されるソフトウェア−仮想ハードウェアの対に、シングルスレッドのソフトウェアアプリケーションを自動的に変換するための方法であって、前記方法は、
（ａ）前記シングルスレッドのソフトウェアアプリケーションからのコードフラグメントを、カスタム化された非仮想スーパーコンピュータのハードウェアであり、そのハードウェアの動作が前記コードフラグメントのソフトウェア実行と機能的に等価なハードウェアに、自動的に変換する段階と、
（ｂ）ハードウェア及び前記シングルスレッドのソフトウェアアプリケーションの複数のソフトウェア部分上の複数のインタフェースを生成する段階であって、前記複数のインタフェースが、実行時に、
ｉ．前記コードフラグメントに入る場合に、ソフトウェアからハードウェアへのプログラム状態の転送を実行し、
ｉｉ．前記コードフラグメントから出る場合に、ハードウェアからソフトウェアへのプログラム状態の転送を実行し、
ｉｉｉ．前記シングルスレッドのソフトウェアアプリケーションの、ソフトウェア及びハードウェアの複数のメモリ間のメモリ・コヒーレンシを維持する、
複数のインタフェースを生成する段階と、
（ｃ）段階（ａ）及び（ｂ）で得られた前記カスタム化された非仮想スーパーコンピュータのハードウェア設計を、複数のモジュールに分割する段階と、
（ｄ）ユニオンモジュールを生成する段階であって、前記ユニオンモジュールに提供された複数の構成パラメータに依存して、段階（ｃ）で生成された前記複数のモジュールのいずれかを実現できるユニオンモジュールを生成する段階と、
（ｅ）ソフトウェアアプリケーション及び特定用途向け仮想スーパーコンピュータで構成されるソフトウェア−仮想ハードウェアの対を生成する段階であって、
ｉ．前記ソフトウェア−仮想ハードウェアの対の前記ソフトウェアアプリケーションの部分が、段階（ｂ）で変更された前記シングルスレッドのソフトウェアアプリケーションであり、
ｉｉ．前記ソフトウェア−仮想ハードウェアの対の前記特定用途向け仮想スーパーコンピュータの部分が、それぞれが段階（ｃ）で得られたモジュールである複数の仮想タイルで構成される、
段階と、
（ｆ）段階（ｅ）の前記複数の仮想タイルの中のいずれかを実現できる再構成可能な物理タイルを生成するために、段階（ｄ）の前記ユニオンモジュールの、内部状態の読み出し、内部状態の書き込み、停止及び開始のための機能を追加する段階と、
（ｇ）前記ハイパーバイザ・システム内の前記ソフトウェアアプリケーション及び前記特定用途向け仮想スーパーコンピュータで構成される前記ソフトウェア−仮想ハードウェアの対を実現するために、前記ハイパーバイザ・システムに、段階（ｆ）で得られた前記再構成可能な物理タイルの少なくとも１つのコピーを追加する段階と
を備え、
前記ハイパーバイザ・システムは、
（ｈ）ソフトウェアアプリケーション及び前記ソフトウェアアプリケーションをアクセラレートする特定用途向け仮想スーパーコンピュータで構成される少なくとも１つのソフトウェア−仮想ハードウェアの対であって、
ｉ．前記特定用途向け仮想スーパーコンピュータが、１つの又は１つより多い仮想タイルを有し、
ｉｉ．前記ソフトウェアアプリケーション及び前記仮想タイルが、それら自身の間で複数のメッセージで通信する、
ソフトウェア−仮想ハードウェアの対と、
（ｉ）１つの又は１つより多い再構成可能な物理タイルであって、前記仮想タイルの機能を実行するように前記再構成可能な物理タイルを構成することによって、各特定用途向け仮想スーパーコンピュータの各仮想タイルが少なくとも１つの再構成可能な物理タイル上で実装されることが可能である、再構成可能な物理タイルと、
（ｊ）実質的にハードウェア内に実装され、前記再構成可能な物理タイル上の前記仮想タイルの並列のプリエンプティブスケジューリングのためのスケジューラと
を備える、方法。
【請求項１５】
前記特定用途向け仮想スーパーコンピュータの複数の仮想タイルを実現する複数の再構成可能な物理タイルの信頼性を高めるために、ソフトウェア−仮想ハードウェアの対のソフトウェアアプリケーションから仮想スーパーコンピュータを生成する間、ソフトエラーを検出してソフトエラーから回復するための投機／再試行モデルを実装する追加のハードウェアを生成する段階
を更に備える、請求項１４に記載の方法。
【請求項１６】
複数の特定用途向けスーパーコンピュータを仮想化するためのハイパーバイザ・システムにおけるＡＳＩＣの再構成可能な複数の物理タイルに複数のリソースを割り当てるための適応的な方法であって、前記方法は、
（ａ）予め定められた時間間隔にわたって、ハイパーバイザ・システム内のソフトウェアアプリケーション及び特定用途向け仮想スーパーコンピュータで構成されるソフトウェア−仮想ハードウェアの各対の使用頻度を決定する段階と、
（ｂ）前記ハイパーバイザ・システム内のソフトウェアアプリケーション及び特定用途向け仮想スーパーコンピュータで構成されるソフトウェア−仮想ハードウェアの対を探す段階であって、
ｉ．前記ソフトウェア−仮想ハードウェアの対がＡＳＩＣの再構成可能な物理タイルにまだマッピングされておらず、
ｉｉ．前記ソフトウェア−仮想ハードウェアの対の前記使用頻度が閾値を超えており、かつ、
前記ソフトウェア−仮想ハードウェアの対が、段階（ａ）で決定された最大の使用頻度を持つ、
段階と、
（ｃ）段階（ｂ）で前記ハイパーバイザ・システム内にそのようなソフトウェア−仮想ハードウェアの対を見つけることができた場合、当該ソフトウェア−仮想ハードウェアの対のための新しいＡＳＩＣの再構成可能な物理タイルを生成する段階と、
（ｄ）前記ハイパーバイザ・システム内のＡＳＩＣの再構成可能な各物理タイルについて、
ｉ．このＡＳＩＣの再構成可能な物理タイルによって実装された、ソフトウェアアプリケーション及び特定用途向け仮想スーパーコンピュータで構成されるソフトウェア−仮想ハードウェアの対の平均の使用頻度に、割り当てられる複数のリソースを比例させるために、このＡＳＩＣの再構成可能な物理タイルに割り当てる前記複数のリソースを増加又は減少させる段階と、
（ｅ）上記の複数の前記段階（ａ）−（ｄ）の全てを定期的に繰り返す段階と
を備え、
前記ハイパーバイザ・システムは、
（ｆ）ソフトウェアアプリケーション及び前記ソフトウェアアプリケーションをアクセラレートする特定用途向け仮想スーパーコンピュータで構成される少なくとも１つのソフトウェア−仮想ハードウェアの対であって、
ｉ．前記特定用途向け仮想スーパーコンピュータが、１つの又は１つより多い仮想タイルを有し、
ｉｉ．前記ソフトウェアアプリケーション及び前記仮想タイルが、それら自身の間で複数のメッセージで通信する、
ソフトウェア−仮想ハードウェアの対と、
（ｇ）１つの又は１つより多い再構成可能な物理タイルであって、前記仮想タイルの機能を実行するように前記再構成可能な物理タイルを構成することによって、各特定用途向け仮想スーパーコンピュータの各仮想タイルが少なくとも１つの再構成可能な物理タイル上で実装されることが可能である、再構成可能な物理タイルと、
（ｈ）実質的にハードウェア内に実装され、前記再構成可能な物理タイル上の前記仮想タイルの並列のプリエンプティブスケジューリングのためのスケジューラと
を備え、
前記ハイパーバイザ・システムの少なくとも１つの再構成可能な物理タイルは、前記再構成可能な物理タイルに提供された複数の構成パラメータに基づいて特定用途向け仮想スーパーコンピュータの複数の前記仮想タイルのいずれか１つを実現できる、ＡＳＩＣ技術で実装された再構成可能な物理タイルで定められる、ＡＳＩＣの再構成可能な物理タイルである、方法。
【請求項１７】
複数の特定用途向けスーパーコンピュータを仮想化するためのハイパーバイザ・システムであって、前記システムは、
（ａ）ソフトウェアアプリケーション及び前記ソフトウェアアプリケーションをアクセラレートする特定用途向け仮想スーパーコンピュータで構成される少なくとも１つのソフトウェア−仮想ハードウェアの対であって、
ｉ．前記特定用途向け仮想スーパーコンピュータが、１つの又は１つより多い仮想タイルを有し、
ｉｉ．前記ソフトウェアアプリケーション及び前記仮想タイルが、それら自身の間で複数のメッセージで通信する、
ソフトウェア−仮想ハードウェアの対と、
（ｂ）１つの又は１つより多い再構成可能な物理タイルであって、前記仮想タイルの機能を実行するように前記再構成可能な物理タイルを構成することによって、各特定用途向け仮想スーパーコンピュータの各仮想タイルが少なくとも１つの再構成可能な物理タイル上で実装されることが可能である、再構成可能な物理タイルと、
（ｃ）前記再構成可能な物理タイル上の複数の前記仮想タイルの並列のプリエンプティブスケジューリングのための手段であって、スケジューラが前記再構成可能な物理タイルとは独立し、実質的にハードウェア内に実装される、手段と
を備える、ハイパーバイザ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特定用途向けスーパーコンピュータを仮想化するための並列ハードウェアハイパーバイザ・システムに関する。
【背景技術】
【０００２】
参考文献
関連する同時継続、共同所有の米国特許出願
【表１】
0005958559.tif 000002
米国特許
【表２】
0005958559.tif 000003
他の刊行物
［１］Ｒ．  Ｊ．Ｃｒｅａｓｙ，"Ｔｈｅ  ｏｒｉｇｉｎ  ｏｆ  ｔｈｅ  ＶＭ／３７０  ｔｉｍｅ−ｓｈａｒｉｎｇ  ｓｙｓｔｅｍ"，ＩＢＭ  Ｊｏｕｒｎａｌ  ｏｆ  Ｒｅｓｅａｒｃｈ  ＆  Ｄｅｖｅｌｏｐｍｅｎｔ，  Ｖｏｌ．  ２５，  Ｎｏ．  ５  （１９８１年９月），ｐｐ．  ４８３-９０．ｈｔｔｐ：／／ｗｗｗ．ｒｅｓｅａｒｃｈ．ｉｂｍ．ｃｏｍ／ｊｏｕｒｎａｌ／ｒｄ／２５５／ｉｂｍｒｄ２５０５Ｍ．ｐｄｆ
［２］Ｇｅｏｆｆｒｅｙ  Ｂｌａｋｅ，Ｒｏｎａｌｄ  Ｇ．Ｄｒｅｓｌｉｎｓｋｉ，Ｋｒｉｓｚｔｉａｎ  Ｆｌａｕｔｎｅｒ，Ｔｒｅｖｏｒ  Ｍｕｄｇｅ，  Ｅｖｏｌｕｔｉｏｎ  ｏｆ  ｔｈｒｅａｄ−ｌｅｖｅｌ  ｐａｒａｌｌｅｌｉｓｍ  ｉｎ  ｄｅｓｋｔｏｐ  ａｐｐｌｉｃａｔｉｏｎｓ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ３７ｔｈ  Ａｎｎｕａｌ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ，  Ｓｔ．Ｍａｌｏ，  Ｆｒａｎｃｅ，  ＡＣＭ  Ｐｒｅｓｓ．２０１０年６月
［３］Ｗｉｋｉｐｅｄｉａ  ａｒｔｉｃｌｅ．  Ｃｌｏｕｄ  Ｃｏｍｐｕｔｉｎｇ．  ｈｔｔｐ：／／ｅｎ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｃｌｏｕｄ＿ｃｏｍｐｕｔｉｎｇ．  Ｒｅｔｒｉｅｖｅｄ  ２０１１年１１月
［４］ＶｍＷａｒｅ．Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  Ｏｖｅｒｖｉｅｗ  Ｗｈｉｔｅ  Ｐａｐｅｒ  ２００６年  ｈｔｔｐ：／／ｗｗｗ．ｖｍｗａｒｅ．ｃｏｍ／ｐｄｆ／ｖｉｒｔｕａｌｉｚａｔｉｏｎ．ｐｄｆ
［５］Ｊ．Ｈｅｌｄ，Ｊ．Ｂａｕｔｉｓｔａ，Ｓｅａｎ  Ｋｏｅｈｌ，"Ｆｒｏｍ  ａ  Ｆｅｗ  Ｃｏｒｅｓ  ｔｏ  Ｍａｎｙ：  Ａ  Ｔｅｒａ−ｓｃａｌｅ  Ｃｏｍｐｕｔｉｎｇ  Ｒｅｓｅａｒｃｈ  Ｒｅｖｉｅｗ"，  Ｉｎｔｅｌ  Ｗｈｉｔｅ  Ｐａｐｅｒ，２００６年，  ｈｔｔｐ：／／ｄｏｗｎｌｏａｄ．ｉｎｔｅｌ．ｃｏｍ／ｒｅｓｅａｒｃｈ／ｐｌａｔｆｏｒｍ／ｔｅｒａｓｃａｌｅ／ｔｅｒａｓｃａｌｅ＿ｏｖｅｒｖｉｅｗ＿ｐａｐｅｒ．ｐｄｆ
［６］Ｐ．Ｎ．Ｇｌａｓｋｏｗｓｋｙ，"ＮＶＤＩＡ'ｓ  Ｆｅｒｍｉ：  Ｔｈｅ  Ｆｉｒｓｔ  Ｃｏｍｐｌｅｔｅ  ＧＰＵ  Ｃｏｍｐｕｔｉｎｇ  Ａｒｃｈｉｔｅｃｔｕｒｅ"，  ＮＶＤＩＡ  Ｗｈｉｔｅ  Ｐａｐｅｒ，２００９年  ｈｔｔｐ：／／ｗｗｗ．ｎｖｉｄｉａ．ｃｏｍ／ｃｏｎｔｅｎｔ／ＰＤＦ／ｆｅｒｍｉ＿ｗｈｉｔｅ＿ｐａｐｅｒｓ／Ｐ．Ｇｌａｓｋｏｗｓｋｙ＿ＮＶＩＤＩＡ'ｓ＿Ｆｅｒｍｉ−Ｔｈｅ＿Ｆｉｒｓｔ＿Ｃｏｍｐｌｅｔｅ＿ＧＰＵ＿Ａｒｃｈｉｔｅｃｔｕｒｅ．ｐｄｆ
［７］Ｔｈｅ  Ｃｏｎｖｅｙ  ＨＣ−１  Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｏｖｅｒｖｉｅｗ，  Ｃｏｎｖｅｙ  Ｗｈｉｔｅ  Ｐａｐｅｒ，２００８年，  ｈｔｔｐ：／／ｗｗｗ．ｃｏｎｖｅｙｃｏｍｐｕｔｅｒ．ｃｏｍ／Ｒｅｓｏｕｒｃｅｓ／ＣｏｎｖｅｙＡｒｃｈｉｔｅｃｔｕｒｅＷｈｉｔｅＰ．ｐｄｆ
［８］ＳＧＩ−ＲＡＳＣ  ＲＣ１００  Ｂｌａｄｅ，  ＳＧＩ  Ｄａｔａ  Ｓｈｅｅｔ，２００６年
［９］Ｐａｒｔｉａｌ  Ｒｅｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｕｓｅｒ  Ｇｕｉｄｅ，  Ｘｉｌｉｎｘ，２０１１年  ｈｔｔｐ：／／ｗｗｗ．ｘｉｌｉｎｘ．ｃｏｍ／ｓｕｐｐｏｒｔ／ｄｏｃｕｍｅｎｔａｔｉｏｎ／ｓｗ＿ｍａｎｕａｌｓ／ｘｉｌｉｎｘ１３＿１／ｕｇ７０２．ｐｄｆ
［１０］Ｍ．Ｌｉｕ，Ｗ．Ｋｕｅｈｎ，Ｚ．Ｌｕ，Ａ．Ｊａｎｔｓｃｈ，"Ｒｕｎ−ｔｉｍｅ  Ｐａｒｔｉａｌ  Ｒｅｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｓｐｅｅｄ  Ｉｎｖｅｓｔｉｇａｔｉｏｎ  ａｎｄ  Ａｒｃｈｉｔｅｃｔｕｒａｌ  Ｄｅｓｉｇｎ  Ｓｐａｃｅ  Ｅｘｐｌｏｒａｔｉｏｎ，"  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  ａｎｄ  Ａｐｐｌｉｃａｔｉｏｎｓ，２００９年
［１１］Ｆ．Ｆｅｒｒａｎｄｉ，Ｍ．Ｄ．Ｓａｎｔａｍｂｒｏｇｉｏ，Ｄ．Ｓｃｉｕｔｏ，"Ａ  Ｄｅｓｉｇｎ  Ｍｅｔｈｏｄｏｌｏｇｙ  ｆｏｒ  Ｄｙｎａｍｉｃ  Ｒｅｃｏｎｆｉｇｕｒａｔｉｏｎ：  ｔｈｅ  Ｃａｒｏｎｔｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ"，Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｐａｒａｌｌｅｌ  ａｎｄ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｍｐｏｓｉｕｍ，ｐ．４，２００５年
［１２］Ｍ．Ｍａｊｅｒ，Ｊ．Ｔｅｉｃｈ，Ａ．Ａｈｍａｄｉｎｉａ，Ｃｈｒｉｓｔｏｐｈｅ  Ｂｏｂｄａ，"Ｔｈｅ  Ｅｒｌａｎｇｅｎ  Ｓｌｏｔ  Ｍａｃｈｉｎｅ：  Ａ  Ｄｙｎａｍｉｃａｌｌｙ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  ＦＰＧＡ−Ｂａｓｅｄ  Ｃｏｍｐｕｔｅｒ"，  Ｊｏｕｒｎａｌ  ｏｆ  ＶＬＳＩ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ  ４７，１５−３１，２００７年
［１３］Ｈ．Ｓｉｍｍｌｅｒ，Ｌ．Ｌｅｖｉｎｓｏｎ，Ｒ．Ｍａｎｎｅｒ，"Ｍｕｌｔｉｔａｓｋｉｎｇ  ｏｎ  ＦＰＧＡ  Ｃｏｐｒｏｃｅｓｓｏｒｓ"，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，  ｖｏｌ．１８９６年  ｐｐ．  １２１−１３０，２０００年
［１４］Ｃ．−Ｈ．Ｈｕａｎｇ，Ｐ．−Ａ．Ｈｓｉｕｎｇ，"Ｓｏｆｔｗａｒｅ−Ｃｏｎｔｒｏｌｌｅｄ  Ｄｙｎａｍｉｃａｌｌｙ  Ｓｗａｐｐａｂｌｅ  Ｈａｒｄｗａｒｅ  Ｄｅｓｉｇｎ  ｉｎ  Ｐａｒｔｉａｌｌｙ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｓｙｓｔｅｍｓ，"  ＥＵＲＡＳＩＰ  Ｊｏｕｒｎａｌ  ｏｎ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍｓ，  ｖｏｌ．２００８，  ｐｐ．１−１１，２００８年
［１５］Ｖ．Ｒａｎａ，Ｍ．  Ｓａｎｔａｍｂｒｏｇｉｏ，Ｄ．Ｓｃｉｕｔｏ，Ｂ．Ｋｅｔｔｅｌｈｏｉｔ，Ｍ．Ｋｏｅｓｔｅｒ，Ｍ．Ｐｏｒｒｍａｎｎ，Ｕ．Ｒuｃｋｅｒｔ，"Ｐａｒｔｉａｌ  Ｄｙｎａｍｉｃ  Ｒｅｃｏｎｆｉｇｕｒａｔｉｏｎ  ｉｎ  ａ  Ｍｕｌｔｉ−ＦＰＧＡ  Ｃｌｕｓｔｅｒｅｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｂａｓｅｄ  ｏｎ  Ｌｉｎｕｘ（登録商標），"  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｐａｒａｌｌｅｌ  ａｎｄ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｍｐｏｓｉｕｍ，２００７年
［１６］Ｋｌａｕｓ  Ｄａｎｎｅ，  Ｍａｒｃｏ  Ｐｌａｔｚｎｅｒ，  Ｐｅｒｉｏｄｉｃ  ｒｅａｌ−ｔｉｍｅ  ｓｃｈｅｄｕｌｉｎｇ  ｆｏｒ  ＦＰＧＡ  ｃｏｍｐｕｔｅｒｓ，  Ｔｈｉｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｉｎｔｅｌｌｉｇｅｎｔ  Ｓｏｌｕｔｉｏｎｓ  ｉｎ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍｓ，  ２００５年  ｈｔｔｐ：／／ｄｘ．ｄｏｉ．ｏｒｇ／１０．１１０９／ＷＩＳＥＳ．２００５．１４３８７２０
［１７］Ｈ．Ｓｉｍｍｌｅｒ，Ｌ．Ｌｅｖｉｎｓｏｎ，Ｒ．Ｍaｎｎｅｒ，  Ｍｕｌｔｉｔａｓｋｉｎｇ  ｏｎ  ＦＰＧＡ  Ｃｏｐｒｏｃｅｓｓｏｒｓ，  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １０ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙｓ  （ＦＰＬ），  ｐｐ．１２１−１３０．２０００年  Ｓｐｒｉｎｇｅｒ
［１８］Ｍ．Ｖｕｌｅｔｉｃ，Ｌ．Ｐｏｚｚｉ，Ｐ．Ｉｅｎｎｅ，"Ｓｅａｍｌｅｓｓ  Ｈａｒｄｗａｒｅ−Ｓｏｆｔｗａｒｅ  Ｉｎｔｅｇｒａｔｉｏｎ  ｉｎ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｃｏｍｐｕｔｉｎｇ  Ｓｙｓｔｅｍｓ"，  ＩＥＥＥ  Ｄｅｓｉｇｎ  ａｎｄ  Ｔｅｓｔ  ｏｆ  Ｃｏｍｐｕｔｅｒｓ，  ｖｏｌ．２２，  ｎｏ．２，  ｐｐ．１０２−１１３，２００５年
［１９］Ｈ．Ｋ．−Ｈ．Ｓｏ，Ａ．Ｔｋａｃｈｅｎｋｏ，Ｒ．Ｂｒｏｄｅｒｓｅｎ，"Ａ  Ｕｎｉｆｉｅｄ  Ｈａｒｄｗａｒｅ／Ｓｏｆｔｗａｒｅ  Ｒｕｎｔｉｍｅ  Ｅｎｖｉｒｏｎｍｅｎｔ  ｆｏｒ  ＦＰＧＡ−Ｂａｓｅｄ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｃｏｍｐｕｔｅｒｓ  Ｕｓｉｎｇ  ＢＯＲＰＨ，"  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｈａｒｄｗａｒｅ−Ｓｏｆｔｗａｒｅ  Ｃｏｄｅｓｉｇｎ  ａｎｄ  Ｓｙｓｔｅｍ  Ｓｙｎｔｈｅｓｉｓ，  ｐｐ．２５９−２６４，２００６年
［２０］Ｊ．Ｄｕａｔｏ，Ｓ．Ｙａｌａｍａｎｃｈｉｌｉ，Ｌ．Ｍ．Ｎｉ．Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  Ｎｅｔｗｏｒｋｓ：  Ａｎ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ａｐｐｒｏａｃｈ，  ＩＥＥＥ  Ｐｒｅｓｓ，１９９７年
［２１］Ｌｙｎｎ  Ｃｏｎｗａｙ，  Ｔｈｅ  Ｍ．Ｉ．Ｔ．  １９７８  ＶＬＳＩ  Ｓｙｓｔｅｍ  Ｄｅｓｉｇｎ  Ｃｏｕｒｓｅ，  ｈｔｔｐ：／／ａｉ．ｅｅｃｓ．ｕｍｉｃｈ．ｅｄｕ／ｐｅｏｐｌｅ／ｃｏｎｗａｙ／ＶＬＳＩ／ＭＩＴ７８／ＭＩＴ７８．ｐｄｆ
［２２］Ｗｉｋｉｐｅｄｉａ  ａｒｔｉｃｌｅ，  Ｍｕｌｔｉ−ｐｒｏｊｅｃｔ  ｗａｆｅｒ  ｓｅｒｖｉｃｅ，  ｈｔｔｐ：／／ｅｎ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｍｕｌｔｉ−ｐｒｏｊｅｃｔ＿ｗａｆｅｒ＿ｓｅｒｖｉｃｅ
［２３］Ｉｌｉｊａ  Ｈａｄｚｉｃ，Ｓａｎｊａｙ  Ｕｄａｎｉ，Ｊｏｎａｔｈａｎ  Ｍ．Ｓｍｉｔｈ，  ＦＰＧＡ  Ｖｉｒｕｓｅｓ．  Ｉｎ  ９ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  ａｎｄ  Ａｐｐｌｉｃａｔｉｏｎｓ，１９９９年，  ｐｐ．２９１-３００，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  ｈｔｔｐ：／／ｃｉｔｅｓｅｅｒｘ．ｉｓｔ．ｐｓｕ．ｅｄｕ／ｖｉｅｗｄｏｃ／ｓｕｍｍａｒｙ？ｄｏｉ＝１０．１．１．４３．９１３５
【０００３】
プロセッサ・アーキテクチャ研究の成熟：汎用プロセッサ・アーキテクチャの研究分野は、（ｉ）周波数、（ｉｉ）電力、（ｉｉｉ）設計の複雑さ、及び、（ｉｖ）メモリ壁の障壁に現在直面している汎用プロセッサの性能を更に向上させようと努めつつ成熟した。しかし、性能向上及び省電力の必要性が存在し続けている。
【０００４】
並列プログラミングの困難性：非常に便利で使い易いシーケンシャルプログラミングモデルを放棄し、並列プロセッサ用に明示的にプログラミングすることは、性能を向上させるための一つの方法となる。ＶＬＳＩ密度を高めることで可能になった最近のマルチコアプロセッサ・アーキテクチャ［５］は、確かにこのアプローチを促進する。しかし、並列マルチコアプロセッサ・システムのプログラミングは、例えば、追跡が困難な非決定的なバグ、競合状態、及びデッドロックに起因して、自然かつ簡単な作業ではない。汎用プロセッサ内の並列性が高まることは、実際にそれらの使用及びプログラミングの困難性を高めている［２］。
ハイパーバイザ及びオペレーティングシステムの非効率性：異なる独立アプリケーションと仮想マシンとの間でコンピューティングリソースを共有することは、少なくとも初期のメインフレームの時代から、強調されている［１］。このリソース共有に関する強調は現代まで続いている。最近では、クラウドコンピューティング［３］及び仮想化［４］が、リソース共有を伴うコンピューティング及びアプリケーションサービスを提供する好ましい方法として浮上している。伝統的な組織内ＩＴショップのアプローチの境界を破壊することによって、クラウドコンピューティングは、集中型の高性能コンピューティングリソース、規模の経済性、及び根本的により高い効率度を提供する。例えば、組織内ＩＴショップのセキュリティ特性を維持しながら、大規模なクラウドコンピューティング・データセンターは、高速かつ信頼性のある暗号化ネットワークとともに、安価なクライアントデバイスの性能を著しく増大できる。
【０００５】
しかし、現在のクラウドコンピューティングは、ソフトウェアで設計されスケーラビリティを欠くハイパーバイザ又はオペレーティングシステムに依存している。例えば、割り込みのコストは、現在のオペレーティングシステムにおいてかなりのオーバーヘッド（例えば、一万個の命令）を含み得る。また、特権レベル間の遷移は、（割り込み又はシステムコールのように）汎用プロセッサにおいて全体的なシリアル化／パイプラインフラッシュを必要とする。ハイパーバイザ及びオペレーティングシステム内のスケジューラは一様に、超並列システムを処理するために、アルゴリズム的に並列スケーラブルな手法で設計されていない。将来的に必要となる最高の性能レベルでは、そのようなシリアル化のオーバーヘッドが重要になる。アムダールの法則による厳しい性能減速の帰結を軽減するために、ＯＳ及びハイパーバイザの両方に起因する減速効果が低減されなければならない。
【０００６】
主な解決策：現在のコンピュータ業界のフォーカスエリアは、２つの主なアプローチ、すなわち、エネルギー効率の高いマルチコアプロセッサ［５］、及び、ハイブリッドコンピューティング・アーキテクチャ［６］を含み、それらは、上記の重大な問題（すなわち、並列プログラミングの困難性、並びに、ＯＳ及びハイパーバイザの非効率性）を直接的に解決しないとはいえ、性能を向上させ電力を削減する見込みがある。我々はハイブリッドコンピューティング・アーキテクチャについて概説する。それらは、本明細書の主題である特定用途向けスーパーコンピュータに最も関連するからである。
【０００７】
汎用ハイブリッドコンピューティング・アーキテクチャでは、アクセラレーションユニットは、独自の特殊な命令セットアーキテクチャを持つグラフィックスプロセッシングユニット（ＧＰＵ）で構成される［６］。アプリケーションの適切な部分が、明示的な並列性を顕在化させ、専用プロセッサの超並列アーキテクチャを利用するために再コード化されれば、これらのアクセラレーションユニットは、グラフィックスアプリケーション及び追加の高性能コンピューティングアプリケーションの領域をアクセラレートすることができる。
【０００８】
対照的に、再構成可能ハイブリッドコンピューティング・アーキテクチャ（再構成可能コンピュータ）は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）をアクセラレーションユニットとして配して、より高い柔軟性を提供する。通常、１つの又は１つより多いＦＰＧＡの集合は、各汎用ホストプロセッサに対してコプロセッサとして機能する［７］［８］。現在のツールを用いて任意のコードがＦＰＧＡを利用することは一般的にはできないが、適切なコードフラグメントが、再度、明示的な並列性を顕在化するために再コード化され、その後にＦＰＧＡ上で実行するための高レベルなツールを用いてコンパイルされ得る。
【０００９】
ＦＰＧＡを用いた商用システムは、従来のサーバよりも少ない電力でアプリケーションの性能を高める大きな見込みがあるにもかかわらず、それらはいくつかの弱点を持つ：
●スケーラブルなプリエンプティブスケジューリングの欠如：現在の多くの再構成可能コンピュータシステムは、アクセラレータのプリエンプティブスケジューリングを実装していない。それらは代わりに、ハードウェア・アクセラレータが、動作している限りハードウェアリソースの共有を維持することを許容する。結果として、アクセラレータがアイドルの場合、例えば入力を待っている場合でも、それが終了するまでハードウェアリソースを占有する。これは、潜在的にシステムの不十分な利用につながる。プリエンプティブハードウェアタスクスケジューリングが実際に行われていると［１５］［１６］［１７］、それはソフトウェアの関与で非スケーラブルな方法で行われる。既存のプリエンプティブスケジューラはまた、タスク間通信に制限を課し得る。例えば、タスク依存性はＤＡＧ（有向非巡回グラフ）の形式であり得る［米国特許第６０３４５３８号］。
●ハードウェア・アクセラレートされたアプリケーションのスケーラビリティの欠如：現在のソフトウェア及びハードウェアデザインツールは、特定用途向けのカスタムハードウェア・アクセラレータを、スーパーコンピュータのスケールで仮想化しない。
●プログラマの低い生産性：現在では、前述した並列プログラミングの一般的な困難性、及び、現在のツールを用いたハードウェアデザインの一般的な困難性によって、再構成可能ハードウェアプラットフォームを使用するのは複雑である。
●準再構成可能（ｓｅｍｉ−ｒｅｃｏｎｆｉｇｕｒａｂｌｅ）なＡＳＩＣの欠如：ＦＰＧＡはレジスタ転送レベルで指定された任意回路のインタプリタであり、そのため非常に柔軟で一般的である。一方、与えられたＲＴＬ回路のＡＳＩＣ実装は、実際には当該回路のコンパイルされたバージョンであり、これは対応するＦＰＧＡ実装に対して性能及び電力の利点を有している。再構成可能システム内のＡＳＩＣの低電力及び高性能の利益を得るためには、アプリケーションの高速化にＡＳＩＣを利用するための（特定種類のＡＳＩＣに一つだけ機能を実装するという解決策を超えた）体系的な解決策が望まれる。既存の再構成可能コンピュータシステムは、ハードウェア・アクセラレーションの源として、ＦＰＧＡに加えて特定用途向け集積回路（ＡＳＩＣ）を体系的にサポートしていない。
【発明の概要】
【００１０】
我々のアプローチ：本明細書のシステムは、上記の二つの重大な問題（並列プログラミングの困難性、ＯＳ及びハイパーバイザの非効率性）に対処する。それはまた、引用された技術とは少なくとも下記の手段において相違する。
●スケーラブルなプリエンプティブスケジューリング：本明細書のシステムは、スケーラブルな並列ハードウェアハイパーバイザ・システムを導入し、ここで、制限のないタスク間通信でのハードウェア・スーパーコンピューティング・タスクの割り当て、非割り当て及びリロケーションに関連したハイパーバイザ機能が、ハードウェア内に実装された並列アルゴリズムで達成される。特定用途向け仮想スーパーコンピュータに割り当てられたリソースは、仮想タイル単位で、オンデマンドで増加又は減少し得る。そのようなハイパーバイザ機能の並列実装は、本明細書で扱われてきたいくつかの競合状態を引き起こす難しい問題である。
●ハードウェア・アクセラレートされたアプリケーションのスケーラビリティ：本明細書のシステムは、特定用途向けのカスタムハードウェア・アクセラレータをスーパーコンピュータのスケールで仮想化する。
●プログラマの生産性：本明細書のシステムは、元のシングルスレッドのソフトウェアアプリケーションと、そこから生成された仮想スーパーコンピュータとの間で１００％の互換性を実現する、ハードウェア・アクセラレーション・プログラミングモデル及び自動コンパイル方法を確立する。これは、より高いプログラマ生産性を可能にするモデルである。
●準再構成可能なＡＳＩＣ：本明細書のシステムは、より低電力かつ高性能というＡＳＩＣの利点を保持しながら、同じＡＳＩＣモジュールが複数の機能を実現することを可能にする、準再構成可能なＡＳＩＣモジュールを作成するための、体系的な方法を確立する。
【００１１】
我々は、複数の特定用途向けスーパーコンピュータを仮想化するための並列ハイパーバイザ・システムを説明する。システムは、
●ソフトウェアアプリケーション及びソフトウェアアプリケーションをアクセラレートする特定用途向け仮想スーパーコンピュータで構成される少なくとも１つのソフトウェア−仮想ハードウェアの対であって、
○仮想スーパーコンピュータが、１つの又は１つより多い仮想タイルを有し、
○ソフトウェアアプリケーション及び前記仮想タイルが、それら自身の間で複数のメッセージにて通信する、
ソフトウェア−仮想ハードウェアの対と、
●１つの又は１つより多い再構成可能な物理タイルであって、仮想タイルの機能を実行するように物理タイルを構成することによって、各仮想スーパーコンピュータの各仮想タイルが少なくとも１つの物理タイル上で実装されることが可能である、物理タイルと、
●実質的にハードウェア内に実装され、物理タイル上の仮想タイルの並列のプリエンプティブスケジューリングのためのスケジューラと
を備える。
【００１２】
仮想又は物理タイルは、任意のデジタル回路を含む。ハイパーバイザ・システムは、特定用途向け仮想スーパーコンピュータによってアクセラレートされたソフトウェアアプリケーションでクラウドコンピューティングを実現するために使用され得る。物理ハードウェアリソースは、各アプリケーションについてオンデマンドで、物理タイル単位で漸増又は漸減させることができる。ハイパーバイザ・システムの特徴は、下記を含む：
●各物理タイルの近傍にローカルにキャッシュされた、仮想タイルから物理タイルへのグローバルにコヒーレントなマップであって、メッセージの送信元の物理タイルの近傍における仮想タイルから物理タイルへのローカルなキャッシュ内でヒットがあった場合は必ず、
○メッセージの送信元の仮想タイルを含むメッセージの送信元の物理タイル
が、
○メッセージの宛先の仮想タイルを含むメッセージの宛先の物理タイル
に、メッセージを直接かつ効率的に送信することを可能にする。
●メッセージの超並列伝送を可能にする、スケーラブルなオンチップ及びクロスチップネットワーク。
●ハイパーバイザ・システム内で使用するために、シーケンシャルなソフトウェアアプリケーションからの任意のコードフラグメントを、特定用途向け仮想スーパーコンピュータに自動的に変換することができる、コンパイラ技術。
●有限数の仮想タイルのうち１つをリソース共有で実現するよう設計された準再構成可能なＡＳＩＣモジュール。
仮想タイルの身元は、再構成可能なシステム内でのＡＳＩＣの利点を提供するユニオン物理タイルの構成メモリの内容によって決定される。
●異なる顧客に属するハードウェア・アクセラレートされたアプリケーション間の保証された分離。
【００１３】
ハイパーバイザの設計は、下記の鍵となるハードウェアユニットを用いることによって、上記したローカル仮想タイル対物理タイルキャッシュ内のキャッシュミス及びコヒーレンス動作の並列処理を通じて、システム全体のシリアル化ポイントを回避する。
【００１４】
複数の所有者（ｏｗｎｅｒ）ユニット：システム内の全仮想タイルのセットが分割されており、１つの所有者ユニットが各パーティションに割り当てられる。所有者ユニットは、パーティション内の各仮想タイルから、物理タイル（仮想タイルがマッピングされている場合）又はＮＵＬＬ（仮想タイルがマッピングされていない場合）へのマップを維持する。複数の所有者ユニットを使用して、並列な、独立した検索及びタイルプリエンプションの動作を同時に可能にする。
モニタユニットは、連続的に、システム内のアクティビティに関する統計情報を取得する。それはその後、統計情報を解析して、タイル置換ポリシーに従って、各所有者ユニットにプリエンプトする新たな物理タイルを提案するために、並列的に、要求している所有者ユニットに応答を提供する。
【図面の簡単な説明】
【００１５】
【図１】仮想スーパーコンピュータによってそれぞれアクセラレートされるソフトウェアアプリケーションの組を示す（小規模な説明用の例）。
【図２】ハイパーバイザの動作例を示す。ステップ１／８。
【図３】ハイパーバイザの動作例を示す。ステップ２／８。
【図４】ハイパーバイザの動作例を示す。ステップ３／８。
【図５】ハイパーバイザの動作例を示す。ステップ４／８。
【図６】ハイパーバイザの動作例を示す。ステップ５／８。
【図７】ハイパーバイザの動作例を示す。ステップ６／８。
【図８】ハイパーバイザの動作例を示す。ステップ７／８。
【図９】ハイパーバイザの動作例を示す。ステップ８／８。
【図１０】本明細書のハードウェア概略図で使用される記号の凡例を提供する。
【図１１】フラットな分割されていないハイパーバイザのハードウェアデザインを示す。
【図１２】分割及びチップユニオン化（ｃｈｉｐ  ｕｎｉｏｎｉｎｇ）（クラウドビルディングブロック・チップ）後のハイパーバイザのハードウェアデザインを示す。
【図１３】物理タイルハーネスの内部構成を示す。
【図１４】所有者ユニットの内部構成を示す。
【図１５】モニタユニットの内部構成を示す。
【発明を実施するための形態】
【００１６】
我々は特定用途向けスーパーコンピュータを仮想化するための並列ハイパーバイザ・システムの詳細を説明する。ここで、システムは、
●ソフトウェアアプリケーション及びソフトウェアアプリケーションをアクセラレートする特定用途向け仮想スーパーコンピュータで構成される少なくとも１つのソフトウェア−仮想ハードウェアの対であって、
○仮想スーパーコンピュータが、１つの又は１つより多い仮想タイルを有し、
○ソフトウェアアプリケーション及び前記仮想タイルが、それら自身の間で複数のメッセージにて通信する、
ソフトウェア−仮想ハードウェアの対と、
●１つの又は１つより多い再構成可能な物理タイルであって、仮想タイルの機能を実行するように物理タイルを構成することによって、各仮想スーパーコンピュータの各仮想タイルが少なくとも１つの物理タイル上で実装されることが可能である、物理タイルと、
●実質的にハードウェア内に実装され、物理タイル上の仮想タイルの並列のプリエンプティブスケジューリングのためのスケジューラと
を備える。
【００１７】
ハイパーバイザの好ましい実施形態は、以下の主要な部分で構成される：
●ハイパーバイザ・システムの全体的なハードウェア構成
○１つ又は１つ以上の物理タイル、オンチップネットワーク、所有者ユニット及びモニタコンポーネントを含むＦＰＧＡ又はＡＳＩＣチップ、
○１９インチラックモジュール
○それぞれ複数のラックモジュールを含む１９インチラック
○複数のラックを含む再構成可能システム全体
●ハイパーバイザの動作を説明する例
●ハイパーバイザの基本のハードウェアビルディングブロック
●ハイパーバイザの基本的なハードウェアコンポーネント
○再構成可能な物理タイル
○メッセージの発信及び着信のルーティングを仮想化するための各物理タイルに結びつけられた物理タイルハーネスユニット
○仮想タイルを物理タイルにマッピングするテーブルの並列検索及び並列プリエンプションを実現するための所有者ユニット
○システムに関する統計情報を収集し、プリエンプトする物理タイルを提案するモニタユニット
○ハイパーバイザ・システムの潜在的な競合状態及びその解決策のディスカッション
これが基本的な再構成可能システム及びハイパーバイザの動作の記載を完成させる。
●最適化：我々はその後、ハイパーバイザ・システムの他の用途及び様々な最適化を説明する。
【００１８】
我々は最初に、ハイパーバイザ・システムの好ましい実施形態の全体的なハードウェア構成について説明する。ハイパーバイザ・システムは、非仮想（実）スーパーコンピュータと非常によく似て階層的な筐体で構成されている。それは、階層の葉から始まり根に向かって下記を含む：
●Ｉ／Ｏピンと共に、いくつかの物理タイル、所有者ユニット、場合によってはモニタユニット、及びいくつかの内部オンチップネットワークを含む、ＦＰＧＡ又はＡＳＩＣチップ（クラウドビルディングブロック・チップと呼ばれる）
ここでＩ／Ｏピンは、
○接続されたホストプロセッサシステムと通信する、オプションのＰＣＩ  Ｅｘｐｒｅｓｓインタフェース
○同一ラックモジュール上のＤＲＡＭユニットに対するＤＤＲｎインタフェース（例えば、デュアルインラインメモリモジュールとして構成）
○銅又は光高速シリアル通信ケーブルで実装されたいくつかの不完全ハイパーキューブリンク、及び、
○同一ラックモジュール上の隣接するＦＰＧＡ／ＡＳＩＣチップに接続されたワイド高速バス
を含む。
●いくつかのクラウドビルディングブロック・チップ及びＤＲＡＭモジュールを含むラックモジュール
●それぞれいくつかのラックモジュールを含む１９インチラック
●いくつかの１９インチラックを含むハイパーバイザ・システム全体。
【００１９】
「不完全ハイパーキューブ」は、システム内のチップの合計数が２の冪乗である必要がないという意味で使用される。システム内のチップの合計数は、１より大きい又は１に等しい任意の数であり得る。我々は本明細書で不完全ハイパーキューブトポロジーに専念するが、非常に多数のチップを持つシステムでは、（通信しているチップのグループが、単一のハイパーキューブノードを提供し、したがって各ノードのハイパーキューブリンクの数を効果的に増やす）キューブ連結サイクルトポロジが使用され得る。
ハイパーバイザの動作を示す例
【００２０】
ハイパーバイザ・システムの以下のハードウェアの詳細な説明の動機にするために、我々は小規模な例におけるハイパーバイザ・システムの動作を説明することから始める。図１は、特定用途向け仮想スーパーコンピュータによりアクセラレートされ、従来の商品のホスト・マイクロプロセッサシステム上で実行されている２つのソフトウェアアプリケーションを示している（小規模な説明のための例が示されている。典型的な仮想スーパーコンピュータはより多数の仮想タイルを持つだろう）。各仮想スーパーコンピュータは、１つの又は１つより多い仮想タイルを含み、仮想タイルはそれらの間で及びソフトウェアアプリケーションと、メッセージで通信する。ハイパーバイザ・システムの目的は、各仮想タイルが、同じ仮想スーパーコンピュータの他の仮想タイルと、それらが全て非仮想スーパーコンピュータの部分であるかのように、通信していると信じさせることである。しかし実際には、ある時間にわたってアイドルのままの仮想タイルは、アクティブになる他の仮想タイルにプリエンプトされる可能性があるだろう。
【００２１】
我々は、以下のテキスト内で「キャッシュ」と言う場合、データキャッシュ又は命令キャッシュを意味していない。ハイパーバイザ・システムのキャッシュは、仮想タイルから物理タイルへのマッピングを実装し、それらはデータを含まない。これらのキャッシュは、仮想スーパーコンピュータ内のメッセージの送信を高速化するのを促進する。
【００２２】
仮想スーパーコンピュータ内のメッセージの送信を高速化するための鍵は、各物理タイルの直ぐ隣に存在するキャッシュがあるように、仮想タイルを物理タイルにマッピングする、全体的にコヒーレントな１次（ｆｉｒｓｔ  ｌｅｖｅｌ）キャッシュのセットである。このようなローカルのキャッシュは、
●メッセージの送信元の仮想タイルｖ１を含む、メッセージの送信元の物理タイルｐ１が、
●メッセージの宛先の仮想タイルｖ２を含む、メッセージの宛先の物理タイルｐ２に、
物理タイルｐ１の近傍でローカル１次キャッシュ内にマッピング（ｖ２→ｐ２）が見つかるたびに、ごく少数のサイクルを待ち時間に追加することによって、ローカル１次キャッシュアクセスを用いて非常に効率的にメッセージを直接送信することを可能にする。宛先の物理タイル番号「ｐ２」は、メッセージに、それが物理タイルｐ１を離れる時に追加され、スケーラブルなオンチップ及びクロスチップネットワーク内で物理タイルｐ１から物理タイルｐ２にメッセージを導く。ｐ２は、実際には、ネットワークの宛先ポート番号であり、例えば各ネットワークステージが宛先ポート番号の次のビットに基づいてルーティング決定を行うバタフライネットワークにおいて、ルーティングを単純にする。メッセージが物理タイルｐ２に到達したとき、宛先の物理タイル番号「ｐ２」がメッセージから削除され、ｖ１から発せられた元のメッセージが回収される。このように、物理タイルｐ２に含まれる仮想タイルｖ２は、物理タイルを全く認識しない状態のままであり、メッセージが仮想タイルｖ１から来たと信じる。（仮想タイル→物理タイル）のマッピングを含むローカル１次キャッシュは、全体的にコヒーレント且つ相互に一貫性があるように保たれている。
【００２３】
−１の番号が付けられた仮想タイルは、各仮想スーパーコンピュータ内で特別である。それは、ＰＣＩ  Ｅｘｐｒｅｓｓ接続を通じて到達される、ホストプロセッサシステム上で実行している対応するソフトウェアアプリケーションへのメッセージ交換ゲートウェイとして、用いられる。この仮想タイル番号−１は、メッセージルーティングを簡略化するために、アプリケーションの存続期間中に物理タイルに永続的に固定される。
【００２４】
ハイパーバイザ・システムにおける各（アプリケーション、仮想スーパーコンピュータ）の対には、一意のアプリケーションＩＤ番号が割り当てられる（例えば、０ｘ００＝アプリケーションＡのインスタンス０、０ｘ０１＝アプリケーションＢのインスタンス１、０ｘ１１＝アプリケーションＢのインスタンス１...）。
【００２５】
−１、０、...、与えられた仮想スーパーコンピュータ内で最大の仮想タイル番号、の範囲内の整数であるローカル仮想タイル番号とは対照的に、グローバル仮想タイルは、ハイパーバイザ・システム内の任意の仮想スーパーコンピュータ内の任意の仮想タイルを一意に特定し、（アプリケーションＩＤ、このアプリケーション内のローカル仮想タイル番号）の対である。以下の文章では、（「ローカル仮想タイル」又は「グローバル仮想タイル」として明示的に指定されていない場合）仮想タイルはグローバル仮想タイルを意味するだろう。
【００２６】
図２、図３、図４、図５、図６、図７、図８、図９は、仮想スーパーコンピュータの小規模な例の仮想タイルが相互にメッセージを送信する場合のハイパーバイザの個々のステップを説明する。
【００２７】
図２は、全てのメッセージが送信される前のシステムの初期状態を示している。各仮想スーパーコンピュータ内で−１が番号付けされたローカル仮想タイルのみが、ＰＣＩ  Ｅｘｐｒｅｓｓ接続を通じて対応するソフトウェアアプリケーションとメッセージを交換できる物理タイルに、マッピングされている。物理タイルの近傍の全てのローカル１次キャッシュは、最初は空である。この例では、仮想タイルは２つのグループに分割されており、これらのグループには所有者ユニット０（Ｏｗｎｅｒ０）及び１（Ｏｗｎｅｒ１）が割り当てられている。複数の所有者ユニットは、異なるパーティション内の仮想タイル上の検索及びプリエンプションオペレーションが独立及び並列に進められるように使用される。所有者ユニットは、各仮想タイルを、仮想タイルを含む物理タイル（仮想タイルが現在マッピングされている場合）に又はＮＵＬＬ（仮想タイルが現在マップされていない場合）にマッピングするテーブルのパーティションの管理を担う。物理タイルｐにマッピングされている各仮想タイルｖに対して、所有者ユニットはまた、共有者のリスト、すなわち、マッピング（ｖ→ｐ）をローカルにキャッシュした物理タイル（ｐ以外）のリストを保持する。
【００２８】
仮想タイルについての所有者ユニットは、仮想タイルの単純なハッシュ関数を計算することによって見つけられる。
【００２９】
図３は、物理タイルＰ０に含まれる仮想タイルＡ−１が、どの物理タイルにもまだ含まれていない仮想タイルＡ０にメッセージを送信する場合の結果を示している。メッセージがＰ０から出発した後、その宛先の仮想タイルＡ０が、Ｐ０の近傍のローカル１次キャッシュ内で検索される。しかし、このキャッシュは空であるので、ローカル１次キャッシュのミスが生じる。キャッシュミスは、仮想タイルＡ０に対して責任を持つことが分かっているｏｗｎｅｒ０によって、処理される。モニタユニットは、各物理タイルから統計情報を収集し、この例では最長未使用時間（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）タイル置換ポリシーの実行を担うハードウェアユニットである。ｏｗｎｅｒ０は、Ａ０を割り当てるための最良の物理タイルを提供するよう、モニタユニットに要求する。モニタユニットは、空のタイルであるＰ２で応答する。Ａ０はその後、ｏｗｎｅｒ０によって、Ｐ２に割り当てられる。すなわち、ｏｗｎｅｒ０は、ハイパーバイザストレージから仮想タイルＡ０の構成及び状態を読み出し、仮想タイルＡ０を実現するために空き物理タイルＰ２を再構成する。マッピング（Ａ０→Ｐ２）は、Ｐ０内にローカルにキャッシュされる。Ｐ０はまた、ｏｗｎｅｒ０ユニット内の（Ａ０→Ｐ２）マッピングの共有者リストに追加される。ここで、キャッシュミスが生じなくなり、Ｐ０からのメッセージの送信が、止められていたところから続けることができる。宛先の物理タイルＰ２が、仮想タイルＡ−１から仮想タイルＡ０への元のメッセージに追加される。宛先の物理タイルフィールドが存在することで、メッセージは、全ての物理タイルを接続するスケーラブルな通信ネットワーク（例えば、バタフライネットワーク）を介するＰ０からＰ２への進路を見つけることができる。メッセージは、物理タイルＰ２に到達すると、メッセージ内の余分なフィールドが削除され、物理タイルＰ２に含まれる仮想タイルＡ０は、仮想タイルＡ−１によって送信されたときの元のメッセージを受信する。仮想タイルＡ−１及びＡ０は、どの物理タイルも認識しておらず、仮想タイルが実際のネットワークで接続された実際のハードウェアタイルであるかのように振る舞うことに注意すること。これら全てのスケジューリング動作は、ソフトウェアオペレーティングシステム又はソフトウェアハイパーバイザの支援を必要とすることなく、スケーラブルな並列ハードウェアを通じて完全に行われ、段落［００３９］から説明される。
【００３０】
図４は、物理タイルＰ２に含まれる仮想タイルＡ０が物理タイルＰ０に含まれる仮想タイルＡ−１にメッセージを送信する場合の動作を示している。Ｐ２のローカル１次キャッシュが空なので、キャッシュミスが生じる。キャッシュミスは、Ａ−１に対して責任を持つことが分かっているｏｗｎｅｒ０によって、処理される。この場合、宛先の仮想タイルＡ−１は、ｏｗｎｅｒ０内で既にマッピングされているので、ｏｗｎｅｒ０による再構成動作は必要ない。マッピング（Ａ−１→Ｐ０）が、物理タイルＰ２の近傍にローカルにキャッシュされる。また、Ｐ２は、ｏｗｎｅｒ０内に（Ａ−１→Ｐ０）マッピングの共有者として記録される。その後、Ａ０からＡ−１へのメッセージが送達される。
【００３１】
図５は、物理タイルＰ０に含まれる仮想タイルＡ−１が、物理タイルＰ２に含まれる仮想タイルＡ０にメッセージを送信する場合の動作を示している。この場合、マッピング（Ａ０→Ｐ２）がＰ０のローカル１次キャッシュ内に既にあるため、キャッシュヒットがある。したがって、メッセージは速やかに宛先の物理タイルＰ２に送信され、その後、Ｐ２に含まれる仮想タイルＡ０に、その元の形式で転送される。このステップではマッピングの変更はない。これはローカル１次キャッシュにおいてヒットすることの利点を示すことを意図したものである。
【００３２】
この時点で、仮想タイルＡ１は、使用されておらず、物理タイルに割り当てられていないことに注意すること。もし、アプリケーションＡのための仮想スーパーコンピュータが携わっている計算の現在の入力によって仮想タイルＡ１が必要とされない（すなわち、現在の入力についてアプリケーションＡをアクセラレートするのにＡ０で十分である）なら、Ａ１にはメッセージは送信されず、Ａ１には物理タイルは割り当てられない。したがって、本ハイパーバイザ・システムは、物理タイルの割り当てを（もし必要になれば）実際に必要になるまで遅らせて、任意の仮想スーパーコンピュータ用のハードウェアリソースをオンデマンドで増加することを可能にする。同様に、アイドルのままの物理タイルがプリエンプトされ、任意の仮想スーパーコンピュータのためのリソースが漸減することになるのが分かるだろう。  リソースの漸増及び漸減は通常のソフトウェア・クラウドコンピューティングの基本的要件である。このハードウェアハイパーバイザ・システムは、この機能を、アプリケーションに対して、ハードウェア・アクセラレーションリソースを増分プロビジョニングするために提供する。
【００３３】
図６は、物理タイルＰ２に含まれる仮想タイルＡ０が最終的に、どの物理タイルにもまだ含まれていない仮想タイルＡ１にメッセージを送信する場合の動作を示している。Ｐ２内のローカル１次キャッシュミスは、Ａ１に対して責任を持つことが分かっているｏｗｎｅｒ１によって処理される。ｏｗｎｅｒ１は、Ａ１を割り当てる最適な物理タイルを、モニタユニットに要求する。応答は、空の物理タイルＰ３である。Ａ１はその後、ｏｗｎｅｒ１によってＰ３に割り当てられる。すなわち、ｏｗｎｅｒ１は、ハイパーバイザストレージから仮想タイルＡ１の初期状態を読み出し、Ａ１を実現するために空のタイルＰ３を再構成し、Ｐ３を実行させる。マッピング（Ａ１→Ｐ３）は、Ｐ２内でローカルにキャッシュされる。また、Ｐ２は、それぞれｏｗｎｅｒ１内で（Ａ１→Ｐ３）マッピングの共有者として記録されている。その後、Ａ０からＡ１へのメッセージが配信される。
【００３４】
図７は、物理タイルＰ３に含まれる仮想タイルＡ１が、物理タイルＰ２に含まれる仮想タイルＡ０にメッセージを送信する場合の動作を示す。キャッシュミスがｏｗｎｅｒ０によって処理される。Ａ０は既にＰ２に割り当てられているので、再構成動作は必要ない。マッピング（Ａ０→Ｐ２）が、Ｐ３内でローカルにキャッシュされる。また、Ｐ３は、ｏｗｎｅｒ０内で（Ａ０→Ｐ２）マッピングの共有者として記録される。その後、Ａ１からＡ０へのメッセージが配信される。
【００３５】
図８は、物理タイルＰ１に含まれる仮想タイルＢ−１が、どの物理タイルにもまだ含まれていない仮想タイルＢ０にメッセージを送信する場合の動作を示す。仮想タイルＢ０に対するローカル１次キャッシュミスは、Ｂ０に対して責任を持つｏｗｎｅｒ０によって処理される。ｏｗｎｅｒ０はＢ０を割り当てる最適な物理タイルを、モニタユニットに要求する。モニタユニットは、最長未使用時間タイル置換ポリシーに基づいて、仮想タイルＡ１を現在含んでいる物理タイルＰ３で応答する（Ｐ３はしばらくの間アイドルであったと仮定する）。ｏｗｎｅｒ１が仮想タイルＡ１に対して責任を持つものであるので、ｏｗｎｅｒ０は、（Ａ１→Ｐ３）のマッピングを取り消すよう、ｏｗｎｅｒ１に要求する。これが、共有者リストが役立つようになるところである。任意の仮想タイルｖの所有者が、物理タイルｐに対するマッピング（ｖ→ｐ）の非割り当て／取り消しをするために、次のステップが続く。
１．ｖの所有者は、ローカルにキャッシュされた（ｖ→ｐ）のマッピングを持つ各共有者の物理タイルのローカル１次キャッシュ内の（ｖ→ｐ）マッピングを無効化して、最終的に自身の（ｖ→ｐ）のマッピングを削除する。
２．ｖの所有者は、次の正確な割り込みポイントで物理タイルｐを停止し、ｖの状態／構成をハイパーバイザストレージに保存する。
図８の例に戻る。
●Ｐ２は、ｏｗｎｅｒ１内の（Ａ１→Ｐ３）マッピングの共有者である。したがって、上記のステップ１の結果、物理タイルＰ２における（Ａ１→Ｐ３）のローカル１次キャッシュエントリは、ｏｗｎｅｒ１によって削除される。（Ａ１→Ｐ３）のマッピング及びその共有者も、ｏｗｎｅｒ１内で削除される。
●上記のステップ２の結果、ｏｗｎｅｒ１によって、Ｐ３が停止され、Ｐ３内の仮想タイルＡ１の状態がハイパーバイザストレージに保存される。
最終的に、
●仮想タイルＡ１がｏｗｎｅｒ１内でマップされていないようになり、
●物理タイルＰ３が空になる。
ここで、未使用の空の物理タイルＰ３を、仮想タイルＢ０を割り当てるのに利用できる。
【００３６】
図９は引き続き、物理タイルＰ１に含まれる仮想タイルＢ−１が、どの物理タイルにもまだ含まれていない仮想タイルＢ０にメッセージを送信する場合の動作を示す。仮想タイルＢ０は、ｏｗｎｅｒ０によって空のタイルＰ３に割り当てられる。すなわち、ｏｗｎｅｒ０は、仮想タイルのＢ０の状態及び構成をストレージから読み出し、仮想タイルＢ０を実現するために物理タイルＰ３を再構成して、Ｐ３を開始させる。マッピング（Ｂ０→Ｐ３）が、Ｐ１内にローカルにキャッシュされる。また、Ｐ１は、ｏｗｎｅｒ０内で（Ｂ０→Ｐ３）のマッピングの共有者として記録される。その後、Ｂ−１からＢ０へのメッセージが配信される。
【００３７】
マッピング（Ａ０→Ｐ２）は、Ｐ３のローカルキャッシュ内に存続することに注意すること。もしそれが未使用のままだと、それはこのローカルキャッシュから最終的に退去させられることになる。
【００３８】
上記の例示的な小規模な例について、我々は、各メッセージがメッセージ送信に関するグローバルな順序に従って送信されたかのように、ハイパーバイザ・システム上のメッセージ送信の効果を説明した。実際には、２つのメッセージが独立している場合、複数の所有者ユニットによって、それらは任意の順序で又は並列に送信され、また、タイルプリエンプション及びキャッシュコヒーレンス動作が並列に生じるだろう。我々は、下記のセクションで、ハイパーバイザ・システムの高度に並列なハードウェア実装について詳細に説明し、また、競合状態エラーをどのように回避するかを示す。
ハイパーバイザの基本のハードウェアビルディングブロック
【００３９】
ここで我々は、「Ｍｅｔｈｏｄ  ａｎｄ  ｓｙｓｔｅｍ  ｆｏｒ  ｃｏｎｖｅｒｔｉｎｇ  ａ  ｓｉｎｇｌｅ−ｔｈｒｅａｄｅｄ  ｓｏｆｔｗａｒｅ  ｐｒｏｇｒａｍ  ｉｎｔｏ  ａｎ  ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｓｕｐｅｒｃｏｍｐｕｔｅｒ」の名称の、同時係属及び共同所有の米国非仮特許出願第１３／２９６，２３２を、参照により組み込む。この特許出願は、以後［スーパーコンピュータ］と呼ばれる。
【００４０】
［スーパーコンピュータ］は非仮想（実）スーパーコンピュータを作成すための方法及びシステムを述べているが、本明細書は、仮想スーパーコンピュータを含むハイパーバイザ・システムを述べる。したがって、本明細書の主題は異なる。しかし、［スーパーコンピュータ］を参照することは、（ｉ）本ハイパーバイザ・システムの基本的なハードウェアの記載を明確にしかつ減らし、また、（ｉｉ）好ましい実施形態の重要な性質を提供する。
【００４１】
本ハイパーバイザ・システムは、任意の物理タイル、仮想タイル及び仮想スーパーコンピュータとともに動作するだろう。ここで、
●各仮想タイルは、仮想タイルを実現するよう現在構成された物理タイルの、指定された前通信Ｉ／Ｏピンを通じて、取り決められたメッセージインタフェース及びメッセージ形式で通信する。
●各仮想スーパーコンピュータは、ネットワーク遅延に関係なく、正常に動作する。
○ハイパーバイザは、仮想タイルｖ１及びｖ２の任意の対に対して、ｖ１からｖ２へのメッセージが並べ替えられないことを保証する。また、ｖ１からｖ２に送信される各メッセージが、最終的にｖ２で受信されることを保証する。メッセージは失われない。しかし、ｖ１からｖ２へのメッセージの送達は、ハイパーバイザ環境におけるウォールクロック時間に関連して任意の長さがかかる場合がある。したがって、各仮想スーパーコンピュータは、ハイパーバイザに導入される前に、ランダムなネットワーク遅延を人工的に導入することにより、最初に実環境で単体テストされることが望ましい。
●物理タイルの指定された制御Ｉ／Ｏピンを通じた、各物理タイル及び仮想タイルの支援
○仮想タイルによって部分的にしか送信されない又は部分的にしか受信されていないメッセージがない正確なメッセージ境界点で、物理タイルによって現在実現されている仮想タイルを停止させること
○停止された仮想タイルの状態を読み出すこと
○第２仮想タイルの保存された状態を、物理タイルに書き込むこと、及び
○中断したところから第２仮想タイルを再開すること
【００４２】
しかし、［スーパーコンピュータ］に記載された技術を本ハイパーバイザと組み合わせた場合、我々は以下のような特殊な物理タイル、仮想タイル及び仮想スーパーコンピュータの重要な性質を得る。
●［スーパーコンピュータ］における、コンパイラが生成した特定用途向けスーパーコンピュータの各デザインパーティションは、ハイパーバイザ内の仮想タイルになり、
●［スーパーコンピュータ］におけるデザインパーティションのためのユニオンチップは、ハイパーバイザ内の物理タイルになる。したがって、本ハイパーバイザ・システム及び［スーパーコンピュータ］の技術の組み合わせは、各ソフトウェアアプリケーションが、当該ソフトウェアアプリケーションから自動的に得られた特定用途向け仮想スーパーコンピュータによってアクセラレートされる、新たなクラウドコンピューティングシステムを生み出す。［スーパーコンピュータ］によって生成されたユニオンチップを物理タイルとして利用する更なる詳細が、最適化セクションにおける最適化１で提供される。
【００４３】
本明細書をより自己完結的にするために、ここで我々は、本ハイパーバイザ・システムで再利用される［スーパーコンピュータ］からの特徴を簡潔に要約する。これらの機能は、本ハイパーバイザのコンポーネントを低ハードウェアレベルで実装するのに特に有用である。しかし、経験豊富なハードウェア設計者は、その実装と同じようにうまく動作する他の技術を選択し得る。
●本明細書のハードウェアハイパーバイザ・システムは、［スーパーコンピュータ］の段落［００３７］−［００６６］、［００８１］−［００８７］、［０１４８］−［０１５４］、［０１５５］−［０１６７］及び付録Ａに少なくとも説明されているような、ソフトウェア−ハードウェア・通信プロトコルを含む、同じ（非仮想）ハードウェアビルディングブロック及び同じＩ／Ｏ信号インタフェース規則を使用できる。これらは、以下を含む。
○送信ＦＩＦＯの要求出力信号（送信ＦＩＦＯが空でないことを意味する）及び受信ＦＩＦＯのアクノリッジ出力信号（受信ＦＩＦＯが満杯でないことを意味する）が共に１である場合且つその場合に限り、送信ＦＩＦＯの前からのワードの除去、及び、次の立ち上がりクロックエッジで受信ＦＩＦＯの後ろに当該ワードの追加をもたらす、ＦＩＦＯインタフェース・ハンドシェイク仕様
○最終ワードを示すデータ終了ビットを含む、可変長マルチワードメッセージ
○（要求を送信する）送信ＦＩＦＯインタフェース及び（応答を受信する）受信ＦＩＦＯインタフェースで構成されるハードウェアコンポーネントのマスタポート
○（要求を受信する）受信ＦＩＦＯインタフェース及び（応答を送信する）送信ＦＩＦＯインタフェースで構成される、ハードウェアコンポーネントのスレーブポート
○メッセージが、サブネットワーク入力から、メッセージの最初のワード内の宛先ポートフィールドで指定されたサブネットワーク出力に送られる、オンチップのカスタム化されたｎ入力ｍ出力の不完全なバタフライサブネットワーク（バタフライサブネットワークは、入力及び出力の数が２の冪乗である必要はないという意味で、不完全である）
○不完全サブネットワークの対から形成された、ｎ個のマスタポート及びｍ個のスレーブポートに接続されているオンチップのカスタム化されたネットワーク
●マスタポートの送信ＦＩＦＯインタフェースからスレーブポートの受信ＦＩＦＯインタフェースに要求を送信するための順方向サブネットワーク、及び
●スレーブポートの送信ＦＩＦＯインタフェースからマスタポートの受信ＦＩＦＯインタフェースに応答を送信するための逆方向サブネットワーク
○コンポーネント、ネットワーク及び外部通信デバイスから構築された、チップ及びハードウェアモジュール
●１つの又は１つより多いＦＩＦＯインタフェースを持つ有限状態機械（ＦＳＭ）を含むコンポーネント
●外部通信デバイスは、ＰＣＩ  Ｅｘｐｒｅｓｓへのインタフェース、高速シリアル通信ケーブルへのインタフェース、ラックモジュール上のチップ間の差動信号でのワイドバスへのインタフェース、及びチップ外のＤＤＲｎ  ＤＲＡＭユニットへのインタフェースを含む
■本明細書及び［スーパーコンピュータ］の規約では、コンポーネントは、他のコンポーネントと通信するために、常にネットワークを経由する必要がある。しかし、ポイントツーポイントネットワークが、後でストレートスルーワイヤとして最適化され得る。
○メッセージの最初のワード内の（応答するコンポーネントを特定する）宛先ポートフィールドに基づく順方向サブネットワーク内の要求ルーティング
○メッセージの最初のワードにおける（要求するコンポーネントを特定する）送信元ポートフィールドに基づく逆方向サブネットワーク内の応答ルーティング
○別のＦＩＦＯインタフェースが遅延しているが、１つのＦＩＦＯインタフェースが速やかにデータを送信するケースを正確に処理する、有限状態機械における単一の状態で複数のＦＩＦＯインタフェースに同時にアクセスする技術
○（（ｉ）タグ１を持つ要求１を送信し、（ｉｉ）タグ２を持つ要求２を送信し、（ｉｉｉ）タグ２を持つ応答２が戻り、（ｉｖ）タグ１を持つ応答１が戻るという、ハードウェアコンポーネントのメッセージ送信のシーケンスによって例示されるように、）到来する応答を未処理の要求に一致させるためのタグフィールドを用いることによって、パイプライン方式で複数の未処理の要求を発行し、順不同で応答を受信するための技術
○ソフトウェアアプリケーションとそれをアクセラレートすることを目的とするスーパーコンピュータとの間の低レベルメッセージ通信のためのソフトウェアＡＰＩルーチン
○不完全ハイパーキューブ・クロスチップネットワーク（「不完全」は、ノード数が２の冪乗である必要がないハイパーキューブネットワークを意味する）
○フラットで非分割の特定用途向けスーパーコンピュータの設計を複数のチップ又はモジュールに分割する方法
○ユニオンチップに提供された構成パラメータに基づいてパーティションのいずれかを実現することが可能なユニオンチップを作成する方法。
【００４４】
以下に詳細に説明されるハイパーバイザのフラットな非分割デザインから始めて、少なくとも段落［０１６９］−［０１９０］及び［スーパーコンピュータ］の付録Ｋに記載されたデザイン分割及びチップユニオン化技術も、ハードウェアハイパーバイザデザインの「ユニオンチップ」、すなわち、分割化されたハイパーバイザデザインの任意のパーティションを実現することが可能なチップを作成するために用いられる。このユニオンチップは、クラウドビルディングブロック・チップと呼ぶ。全体のクラウドデータセンターは、階層的な筐体（例えばラックモジュール及びラックなど）内のクラウドビルディングブロック・チップのコピーで構成でき、クラウドビルディングブロック・チップのコピーは、それに含まれている物理タイルの種類のみが異なってよい。
【００４５】
デザイン分割及びチップユニオン化の例は、スケーラブルなハイパーバイザを生成することに関連するので、段落［００５０］−［００５２］で示される。
ハイパーバイザの基本のハードウェアコンポーネント
ネットワーク及びコンポーネント
【００４６】
［スーパーコンピュータ］の基本的なハードウェアビルディングブロックを携えて、我々はここでハードウェアハイパーバイザ・システムについて詳細に説明する。図１０は、本明細書内のハードウェア概略図に現れる記号の凡例を提供する。図１１の上層レベルのハイパーバイザ・システムの概略図を参照すると、フラットな、非分割のハイパーバイザ・システム内の特定のネットワークが、下記に形式として列挙される。
●ネットワーク名：（ネットワークのマスタポートを持つコンポーネントタイプ）から（ネットワークのスレーブポートを持つコンポーネントタイプ）へ
●割り当て／非割り当て（ｄｅａｌｌｏｃａｔｉｏｎ）：所有者ユニットから所有者ユニットへ。物理タイルｐをプリエンプトするために、第１の所有者は、物理タイルｐに既に割り当てられている仮想タイルｖを非割り当てするよう第２の所有者に命令する。また、同じネットワークを用いて、所有者は、仮想タイルｖを空き物理タイルｐに割り当てるよう自分自身に命令する。更に、所有者は、ｖが異なる物理タイル上で動作し始めた場合にｖからのメッセージがネットワークで並べ替えられないことを保証するために、同じネットワークを使用して、割り当てられていた最後の物理タイルｖから発せられる全ての未送達のメッセージを排出（ｄｒａｉｎ）する（送達を保証する）よう、自分自身に命令する。
●制御：所有者ユニットから物理タイルハーネス。このネットワークを使用して、所有者ユニットは、物理タイルを停止してその状態を読み出す、又は、物理タイルの新たな状態を書き込んで起動する。所有者ユニットは、仮想タイルから発する全ての現在未送達のメッセージを排出（送達を保証）しようとすることもできる。
●ルックアップ：物理タイルハーネスから所有者ユニット。物理タイルハーネスは、仮想タイルに対応する物理タイルを、後の再利用のためにマッピングをローカルにキャッシュできるように、その所有者ユニットに要求する。同じネットワークを使用して、物理タイルハーネスはまた、ローカルにキャッシュされたマッピング（ｖ→ｐ）を破棄／削除しようとしていることを、仮想タイルｖの所有者に通知する。ここでｐは物理タイルである。
●通信：物理タイルハーネスから物理タイルハーネス。これは仮想スーパーコンピュータ自身内のアプリケーションレベルの通信メッセージのためのものである。各物理タイルハーネスは、通信ネットワークに配された１つのマスタポート及び１つのスレーブポートを有する。
○物理タイルハーネスは、物理タイルからのアウトバウンドメッセージを受け取り、それを通信ネットワークのそのマスタポートの送信ＦＩＦＯ上で送出する。それは、同じマスタポートの受信ＦＩＦＯから、（メッセージがその宛先の物理タイルハーネスに到達したことを確認する）アクノリッジを受信する。パイプライン形式で、アウトバウンドメッセージが送信されアクノリッジが返る。物理タイルハーネスは、２番目のアウトバウンドメッセージを送信する前に、最初のアウトバウンドメッセージに対するアクノリッジを待たない。
○物理タイルハーネスは、通信ネットワークのそのスレーブポートの受信ＦＩＦＯから、インバウンドアプリケーションメッセージを受信する。このメッセージは、結びつけられた物理タイルへのインバウンドメッセージとして送達される。物理タイルハーネスはまた、同じスレーブポートの送信ＦＩＦＯを用い、送信する物理タイルハーネスにアクノリッジを送信する。アプリケーションの仮想タイルは、キャッシュヒットがある場合のハイパーバイザの通常動作中には使用されないアクノリッジには気づかない。これらのアクノリッジは、物理タイル内に含まれる仮想タイルがその物理タイルから非割り当て／プリエンプトされて別の物理タイルに後に再割り当てされる前に、特定の物理タイルに関係し未処理の未送達のインバウンド及びアウトバウンドメッセージのそれぞれがその宛先に送達されることを保証するために、ハイパーバイザによって単独で使用される。この機構は、メッセージの損失又は並べ替えを妨げるために必要とされる。
●置換タイルの選択：所有者ユニットからモニタ。所有者ユニットは、プリエンプトする物理タイルをモニタに要求する。モニタは、ＬＲＵ置換ポリシーを実施していると仮定すると、典型的には最長未使用時間の物理タイルで応答する。また、所有者は、物理タイルが完全に再構成されたことを、このネットワークを通じてモニタに通知する。
●統計情報：物理タイルからモニタ。各物理タイルは、そのアクティビティ（例えば、アイドルであったか、又は、最新の時間間隔内で動作していたか）について定期的な信号を、モニタユニットに提供する。
●アウトバウンド前通信ｎ：（ポイントツーポイント）各物理タイルｎについて。物理タイルから、結びつけられている物理タイルハーネス。
●インバウンド前通信ｎ：（ポイントツーポイント）各物理タイルｎについて。物理タイルハーネスから、結びつけられている物理タイル。これらのネットワークは、物理タイル上で実行されていることを仮想タイルが分からないようにし、物理タイル内に配置された仮想タイル用のアプリケーションレベルのメッセージを運ぶ。前通信ネットワークは、物理タイルによって受信されるアプリケーションメッセージのための一方向性のインバウンドチャネルと、物理タイルによって送信されるアプリケーションメッセージのための一方向性のアウトバウンドチャネルとから構成される。
●各物理タイルｎについて、前コントロールｎ（ポイントツーポイント）：物理タイルハーネスから、結びつけられている物理タイル。タイルをシャットダウンし、その状態を読み出し、また、タイルの状態を書き込んでタイルを開始するためのコマンドを渡すのに用いられる。
【００４７】
図１１を再び参照して、ハイパーバイザ・システムの上層レベルのコンポーネントタイプが、以下に下記形式で列挙される。
●コンポーネントタイプ名
○タイプｙの他のコンポーネントに対向し、このコンポーネントに接続されたネットワークｘ（このポートタイプによって本コンポーネントがネットワークｘに接続される）。
○...
●物理タイルハーネスｎ、ここでｎ＝０，１，...，Ｎ−１：
（図１１でＰＨ０...  ＰＨＮ−１で示される）
○所有者ユニット（マスタ）に対向するルックアップネットワーク、
○他の物理タイルハーネス（マスタ及びスレーブ）に対向する通信ネットワーク、
○所有者ユニット（スレーブ）に対向する制御ネットワーク、
○結びつけられた物理タイル（マスタ）に対向する前制御ネットワーク、
○結びつけられた物理タイルに対向するインバウンド前通信（一方向性マスタ）及びアウトバウンド前通信（一方向性スレーブ）ネットワーク。これらは、ポイントツーポイントネットワークである。
●所有者ユニットｍ、ここでｍ＝０，１，...，Ｍ−１
○物理タイルハーネスに対向するルックアップネットワーク（スレーブ）
○モニタに対向する置換タイル選択ネットワーク（マスタ）
○所有者に対向する割り当て／非割り当てネットワーク（１つのマスタポート及び当該ネットワークへの１つのスレーブポート）
○物理タイルハーネスに対向する制御ネットワーク（マスタ）
●モニタユニット
○所有者に対向する置換タイル選択ネットワーク（スレーブ）
○物理タイルに対向する統計情報ネットワーク（一方向性スレーブ）
●物理タイルｎ、ここでｎ＝０，１、...、Ｎ−１：
（図１１に、Ｐ０...ＰＮ−１として示される）
○結びつけられた物理タイルハーネスに対向する、アウトバウンド前通信（一方向性マスタ）及びインバウンド前通信（一方向性スレーブ）ポイントツーポイントネットワーク（これらのネットワークは送信及び受信チャネルの対である）
○物理タイルハーネスに対向する前制御ネットワーク（スレーブ）
○モニタユニットに対向する統計情報ネットワーク（一方向性マスタ）
●アプリケーション・プレースホルダタイル：
○これらは、ソフトウェアアプリケーションとメッセージ交換を実行しさえすればよいことを除いて、まさに物理タイルのように振る舞う。それらはＰＣＩ  Ｅｘｐｒｅｓｓ  Ｉ／Ｏピンのセットを通じてホストプロセッサ上の特定のソフトウェアアプリケーションとメッセージを交換する。
【００４８】
もちろん、上記及び図１１で説明したフラットな設計は、単一チップの範囲を超える可能性があり、複数のチップに分割されなければならない。（その構成メモリ内の値に基づいて）設計の任意の分割を実現できるクラウドビルディングブロック・チップは、パーティション化されたフラットな設計に、チップユニオン化する［スーパーコンピュータ］を適用することによって得られ、図１２に示される。この例では、ユニオンチップは、最大４個の物理タイル、最大１個の所有者、最大１個のＰＣＩｅ接続、最大１個のモニタ、及び、最大２ｎ個のクラウドビルディングブロック・チップを持つハイパーバイザ・システム内で用いるためのｎ個のハイパーキューブリンクを含む。
【００４９】
図１２におけるクラウドビルディングブロック・チップのようなユニオンチップは、各パーティション内の各タイプの最大数のコンポーネントを含む。例えば、（図１１のフラットな設計においてただ１つのコピーがある）モニタユニットが、複数のパーティションを持つハイパーバイザ・システム内のパーティション０に配置された場合、モニタユニットは、ユニオンチップのすべてのコピーの中に存在できるが、ユニオンチップがパーティション０を実現するために（その構成メモリを通じて）構成されている場合にだけ接続されるだろう。ユニオンチップが０以外の任意のパーティションを実現するように構成された場合、モニタユニットは切断され、リークする電力を低減するために止められる。各個別パーティションはユニオンチップよりも小さい面積しか必要ないものの、可能な場合に１つの単一ユニオンチップを作成することは、ＡＳＩＣ実装をリリースする場合のチップのテスト費用だけでなく、マスク費用を削減できる。
【００５０】
［スーパーコンピュータ］のデザイン分割とチップユニオン化手法の概要を示し、ユニオンチップの集合が、クラウドコンピューティングデータセンターのフラットな非分割設計の機能をどのように実現するかを例示する。我々は例を目的として、１４個の物理タイル（ＰＣＩｅ接続の２個のアプリケーション・プレースホルダタイルを含む）、３個の所有者、及び１個のモニタを持つ、元の小規模なデータセンターのフラットな設計が与えられると仮定する。デザイン分割及びチップユニオン化をした後、各チップには少数のコンポーネントしか適合しないので、このフラットな設計は、それぞれ下記を持つ、４個のクラウドビルディングブロック・チップ０、１、２及び３を導くと仮定する。
●チップあたり最大４個の物理タイル：
○１４個の物理タイルが、次のように分散される。チップ０、１のそれぞれの中の４個の物理タイル、及び、チップ２、３のそれぞれの中の３個の物理タイル。
●チップあたり最大１個の所有者：
○３個の所有者がそれぞれチップ０、１、２内にある。
●最大チップ当たり１モニタ：
○唯一のモニタがチップ０内にある。
●チップ当たり最大１個のＰＣＩｅ接続
○２個のＰＣＩｅ接続が、それぞれチップ０及び２内にある。
【００５１】
クラウドビルディングブロック・チップを用いたメッセージルーティングの一例として、チップ２内の所有者ユニット２が、置換タイル選択ネットワークを通じてｔｉｌｅ＿ｒｅｑｕｅｓｔ（「プリエンプトする物理タイルを下さい」）メッセージをチップ０内のモニタユニットに送信する方法を、以下に示す。決定論的なハイパーキューブルーティングの目的でグレイコードがより便利であるため、チップ番号０、１、２及び３のグレイコードのバージョンが用いられ（０＝グレイ００  １＝グレイ０１  ２＝グレイ１１  ３＝グレイ１０）、スケーラブルなハイパーキューブネットワークが、クラウドビルディングブロック・チップを接続する。
●チップ２（グレイコード１１）内の所有者ユニットは、ローカルの置換タイル選択部分ネットワークを通じて、チップ２のローカルＩ／Ｏコントローラに要求メッセージを送信する。要求メッセージは、メッセージの各区間上のルーティングテーブルによって、正しくルーティングされる。ルーティングテーブルは、各ユニオンチップの構成パラメータの一部である。
●チップ２（グレイコード１１）のＩ／Ｏコントローラにおいて、タイル要求は、チップ０（グレイコード００）に導く決定論的貪欲ハイパーキューブ・ルーティングパス上における次のチップ（チップ３、グレイコード１０）に、送信される。１１から００への、決定論的貪欲ハイパーキューブ・ルーティングパスは、グレイコードの番号を使用して、１１→１０→００である。
●（グレイコード１０を持つ）チップ３内のＩ／Ｏコントローラは、メッセージを受信し、メッセージが宛先のチップ０にまだ達していないことを認識し、その後、最終的な宛先のチップ０（グレイコード００）である、ルーティングパス上の次のチップに、メッセージを送信する。
●チップ０（グレイコード００）のＩ／Ｏコントローラは、メッセージを受信し、メッセージが最終的な宛先のチップに到達したことを認識し、ローカルの置換タイル選択部分ネットワークを通じて、ｔｉｌｅ＿ｒｅｑｕｅｓｔメッセージをチップ０内のモニタユニットにルーティングする。このように、メッセージは、チップ２内の所有者ユニット２からチップ０内のモニタユニットに、正常に送られる。
【００５２】
上述したように、最終的な結果は、４個のクラウドビルディングブロック・チップの集合が、１４個の物理タイル、３個の所有者、１個のモニタ及び２個のＰＣＩ  Ｅｘｐｒｅｓｓ接続を持つ元となるフラットな設計と同一の振る舞いを呈することである。デザイン分割及びチップユニオン化アルゴリズムのより詳細は、［スーパーコンピュータ］内に説明されている。
【００５３】
仮想タイルの保存された状態を保持するための「ハイパーバイザストレージ」は、オフチップＤＲＡＭユニットによって実現される。タイル状態を保存及び復元するためには、各所有者ユニットが、所有者ユニットを含むチップに最も近いローカルＤＲＡＭユニットにアクセスすることで十分である。我々は、図面を単純化するため、ＤＲＡＭ  ＤＤＲｎコントローラを図中に含めていない。しかし各クラウドビルディングブロック・チップは、そのようなコントローラを少なくとも一つ有することができる。各チップ内ＤＤＲｎコントローラは、内部にパッケージ化されたＤＲＡＭユニット、例えばボード上のＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅｓ）に、接続されている。仮想スーパーコンピュータを実現する物理タイルは、ボード上の同じローカルＤＲＡＭリソースの異なる領域を共有してもよい。
【００５４】
我々は、この設計において、ソフトウェア設計における手法のように、「問題の分離（ｓｅｐａｒａｔｉｏｎ  ｏｆ  ｃｏｎｃｅｒｎｓ）」の単純化として、異なる機能のために多くの異なるネットワークを用いている。もちろん、ネットワークの数は、例えば（［スーパーコンピュータ］の第１４５頁から始まる最適化５）を繰り返し使用することによって、又は、別個の入力及び出力ＦＩＦＯをそれぞれ持つ仮想ネットワークを生成することによって、リソース共有により減らすことができる。ここで、仮想ネットワークは、ハードウェアコンポーネントを接続するバス又は単一の共通の物理ネットワーク上に実装される。ハイパーバイザ・システム内のメッセージ形式
【００５５】
このセクションでは、ハイパーバイザ・システムで用いられるメッセージ形式を説明する。我々は、メッセージの例から始める。
●要求送信（ルックアップネットワーク）：Ｓｏｕｒｃｅ＝（要求する物理タイル＝ｍｅ）  Ｔａｇ＝（ｔ１＝新たなタグ）  Ｄｅｓｔ＝（ｖの所有者＝ｚ）  Ｏｐｃｏｄｅ＝ａｃｃｅｓｓ＿ｒｅｑｕｅｓｔ  Ｖｔｉｌｅ＝（ルックアップする仮想タイル＝ｖ）
【００５６】
メッセージ形式は、最初に、メッセージが送信されるか、又は、現在のハードウェアユニットによって受信されるか、及び、メッセージが要求であるか応答であるか、を示し、更に、メッセージが送信又は受信されたネットワークを識別する。メッセージの残りの部分は、メッセージフィールドを生成するため又はメッセージの値を期待値に対してチェックするために変数の値が用いられる場合、フィールド＝（説明＝変数）の形式の、若しくは、メッセージフィールド（この場合は既に値を持つ）が変数に割り当てられる場合、フィールド＝（変数＝説明）の形式の、フィールド記述のシーケンスである。メッセージ内に現れる「ｍｅ」は、メッセージを送信又は受信している、現在のハードウェアユニットの番号を識別する。他に指定されていない限り、変数名は、そのメッセージ交換記述内でローカルスコープを持つ。また、フィールド＝（説明）の形式が、変数が必要とされない場合に使用される。我々は、下記においてメッセージフィールドについて説明する。
●Ｓｏｕｒｃｅ＝（要求者ユニット）
○要求を送信して応答を受信する、指定されたネットワーク上のハードウェアユニットを識別する番号、すなわち、要求ユニット番号。要求及び対応する応答で構成されるメッセージ対において、応答メッセージの送信元フィールドは、要求メッセージの送信元フィールドと同じであることに注意すること。すなわち、送信元（Ｓｏｕｒｃｅ）フィールドは、常に要求者を指す。要求者に応答者から応答が送信されるなら、送信元フィールドは、応答メッセージの「宛先」である。
●Ｔａｇ＝（未処理の要求ＩＤタグ）
●複数の未処理の要求が存在するようにし、かつ、順不同で応答が返ることができるようにソフトウェアパイプライン処理を行った場合に、それがどの未処理の要求であるかを識別するための、固有のタグ。
未処理の要求が１度に１つしかない場合、又は、応答が常に順番に返ってくる場合は、タグフィールドは必要ではない。要求及び対応する応答で構成されるメッセージ対において、応答のタグフィールドは、要求内のものと常に同じであることに注意すること。送信される要求メッセージの一部であるタグフィールドに現れる「新たなタグ」は、他の未処理の要求によって現在用いられていないタグを意味する。
●Ｄｅｓｔ＝（応答者ユニット）
○要求を受信し、応答を送信する、ネットワーク上の応答者ユニットの数。宛先フィールドは、要求メッセージ内にだけ存在する。
●Ｏｐｃｏｄｅ＝オペレーションコード
○要求又は応答メッセージによって実行すべき動作を表す定数
●Ｐａｒａｍ１＝（１番目のパラメータ）
●Ｐａｒａｍ２＝（２番目のパラメータ）
●...
○Ｐａｒａｍ１、Ｐａｒａｍ２、...は、メッセージのオプションのパラメータを構成する。
【００５７】
ｃｅｉｌ（ｌｏｇ２（フィールドの可能な値の数））ビットは、本明細書で記載されるメッセージとの関連で、メッセージ内のフィールドをエンコードするのに必要であることに注意すること。特に、フィールドに対して可能な値が１つしかない場合、フィールドをエンコードするために必要となるのは０ビットであるので、このようなフィールドはメッセージ内には物理的に現れないだろう。例えば、単一のオペレーションコードのケースにおけるＯｐｃｏｄｅフィールドは、メッセージ内に物理的に存在しないであろう。この場合、Ｏｐｃｏｄｅは読者の便宜のために提供される。
【００５８】
［スーパーコンピュータ］のように、長いメッセージは、データ終了ビット＝０を持ち、データ終了ビット＝１であるワードで終わる単語のシーケンスに分割される。この可変長符号化は、メッセージの意味を変更しない。メッセージ内のフィールドの順序、及び定数フィールドを表す特定のバイナリ値は、設計全体にわたってメッセージ形式の正確な規約に従っている限り、重要ではない。
再構成可能な物理タイル
【００５９】
物理タイルは、ハイパーバイザ・システム内の１つの又は１つより多い仮想スーパーコンピュータの１つ以上の仮想タイルを実装するために再構成可能なハードウェアコンポーネントである。
【００６０】
図１１（物理タイルがＰ０、Ｐ１、...、ＰＮ−１と標識付けられいる）を参照すると、各物理タイルは次のポートを有する。
●結びつけられた物理タイルハーネスに対向するアウトバウンド前通信ネットワークのマスタポート。
この一方向性マスタポートは、要求のみを送信し、応答を受信しない。
●結びつけられた物理タイルハーネスに対向するインバウンド前通信ネットワークのスレーブポート。この一方向性スレーブポートは、要求（他の物理タイルから元々発せられる）のみを受信し、応答を送信しない。
●結びつけられた物理タイルハーネスに対向する前制御ネットワークの（双方向）スレーブポート。
●モニタに対向する統計情報ネットワークのマスタポート。この一方向性マスタポートは、要求のみを送信し、応答を受信しない。
【００６１】
物理タイルの内部動作は主に、実装するように現在構成されている仮想タイルによって、定義される。ハイパーバイザ・システムは、段落［００４１］に記載の要件に仮想タイルが適合している限り、現在実装されている仮想タイルの内部動作を理解する必要はない。このセクションでは、我々はハイパーバイザ・システムの動作に関連する物理タイルの下記の基本的な振る舞いを述べる。
●実装可能な仮想タイルのいずれか１つを物理タイルに実装させるために、物理タイルの停止、物理タイルの状態の読み出し、物理タイルの状態の書き込み、及び、物理タイルの再開を、物理タイルの制御Ｉ／Ｏピンを通じて行うためのＩ／Ｏインタフェース
及び
●メッセージ形式及びメッセージＩ／Ｏインタフェース。これらによって仮想タイルが、囲んでいる物理タイルのアウトバウンド前通信Ｉ／Ｏピンを通じてメッセージを送信し、囲んでいる物理タイルのインバウンド前通信Ｉ／Ｏピンを通じてメッセージを受信する。
結びつけられている物理タイルハーネスに対向する前制御ネットワークのスレーブポート
【００６２】
物理タイルにおける物理タイルハーネスに対向する前制御ネットワークのスレーブポートは、以下の要求を受け入れて、以下の応答を返信する。
●要求受信（前制御）：Ｏｐｃｏｄｅ＝ｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅ
●応答送信（前制御）：Ｏｐｃｏｄｅ＝ｒｅａｄ＿ｓｔａｔｅ＿ｒｅｓｐｏｎｓｅ  Ｔｉｌｅｓｔａｔｅ＝（状態データ）
○ｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅ要求を受信すると、物理タイルは、囲まれた仮想タイルが、インバウンド前通信の入力を仮想タイルが求めているが入力キューが空の状態になるまで待つ（例えば、入力メッセージを頻繁に読み出す仮想タイルに対して、インバウンド前通信の入力ＦＩＦＯが空であるときだけ、物理タイルがｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅ要求の存在をチェックするなら、これが達成できる）。その後、必要であれば、物理タイルは、囲まれた仮想タイルによって送信される送出メッセージがなくなるサイクルに達するまで更に待って、（例えば、仮想タイルのグローバルクロックを単純に停止することにより、又は、取り決められたハンドシェイクプロトコルを通じて仮想タイル全体を特殊な再構成状態にすることによって）囲まれた仮想タイルを停止する。
○その後、物理タイルに含まれる仮想タイルの全体の状態（例えば、レジスタ及びメモリの実行状態、並びに現在の仮想タイルの身元を示す構成ＳＲＡＭのビットの両方）が、読み出され（例えば、グローバルクロックが停止している間に１つの又は１つより多いスキャンチェーンを通じてシフトアウトされる、又は、特別な再構成状態になった仮想タイルから受信される）、ｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅ要求に対する応答として返される。
●要求受信（前制御）：Ｏｐｃｏｄｅ＝ｗｒｉｔｅ＿ｓｔａｔｅ  Ｔｉｌｅｓｔａｔｅ＝（状態データ）
●応答送信（前制御）：Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ
○この要求を受信したとき、物理タイルは停止状態にあることが望ましい。
○この要求は、実行状態（レジスタ及びメモリ）と仮想タイルの身元を示す構成ＳＲＡＭとの両方の書き込みを「状態データ」から行うことによって、（例えば、グローバルクロックが停止している間に１つの又は１つより多いスキャンチェーンを使用することによって、又は、現在特別な再構成状態にある仮想タイルに状態データを送信することによって）処理される。その後、全体の状態が書き込まれると、（グローバルクロックを開始する、又は、再構成状態を終了させることにより）囲まれた仮想タイルを開始する。そして、物理タイルは、停止状態を終了して実行を開始し、復元されたばかりの新たな仮想タイルについて実行及びメッセージ交換を継続する。
【００６３】
システムのリセット時には、各物理タイルは、それぞれのソフトウェアアプリケーションと任意のメッセージ交換の準備ができており実行中であるアプリケーション・プレースホルダタイル（段落［００７０］を中心に説明される）を除いて、停止した状態にある。
【００６４】
ｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅの事前条件：ｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅ要求が、仮想タイルｖを現在実行している物理タイルｐによって受信される場合、ハイパーバイザ・システム内の物理タイルハーネスにおける、現在の物理タイルｐを指す全てのローカル１次キャッシュエントリ（ｖ→ｐ）は、既に無効化されていることが望ましく、残りのどの到来メッセージも、現在の物理タイルに結びつけられた物理タイルハーネスによって受信されていることが望ましい。下記の所有者ユニットのセクションでわかるように、ローカルキャッシュエントリ（ｖ→ｐ）が無効化されると、場合によっては新たな物理タイルにｖを再割り当てするべく、ｖの所有者ユニットが（ｖ→ｐ）の非割り当てを完了してｖに対するａｃｃｅｓｓ＿ｒｅｑｕｅｓｔコマンドを待つ処理を開始するまで、仮想タイルｖへの更なるメッセージがブロックされることに注意すること。
【００６５】
ｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅの事後条件：ｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅ要求を処理した後は、物理タイルｐ上の仮想タイルｖへの全ての未処理の到来メッセージは消滅させられ（到来メッセージはネットワーク内に残らない）、ｖへの更なる到来メッセージはｖの所有者内でブロックされることに注意すること。しかし、物理タイルｐ上の仮想タイルｖから送信された送出メッセージが宛先に未送達のままになる場合がある。これらの送出メッセージは、任意の時間にわたってネットワーク内に存在し得る。仮想タイルｖから送出されるメッセージの並べ替えを妨げるために、仮想タイルｖが異なる物理タイルｐ'≠ｐに再割り当てされる前に、これらの送出メッセージは、その宛先の仮想タイルに送達されることが望ましい。好ましい実施形態のネットワークは、決定論的ルーティングを使用し、１つの任意の入力ポートから１つの任意の出力ポートへのメッセージは、ネットワーク内で並べ替えられることがないことを保証するが、異なる入力ポートからのメッセージの送達順序については保証されないことに注意すること。したがって、仮想タイルが新たな物理タイルに移行される場合、その前の物理タイルに割り当てられている間に、同じ仮想タイルから発した未処理の未送達メッセージの送達を保証するために、ドレインコマンドが必要である。
【００６６】
我々は既に、仮想タイルの通常のインバウンド前通信の入力ＦＩＦＯが空である場合のみ、単純にシャットダウン要求を受け入れることによって、入力を頻繁に読み出す（現在は物理タイルｐ上の）仮想タイルｖをシャットダウンする方法を、上で示した。滅多に入力を読まない（現在は物理タイルｐ上の）仮想タイルｖをシャットダウンするために、我々は別の方法を提案する。
●インバウンド前通信ネットワークと仮想タイルの実際の入力ＦＩＦＯインタフェースとの間に、追加の「入力バッファＦＩＦＯ」が内部的に導入される。インバウンド前通信の入力ＦＩＦＯが空の場合に、ｐに送信されたｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅ要求が、ここでも尊重され得る。しかしこの場合、待ち状態の未処理の入力メッセージは、シャットダウン要求が受け入れられた瞬間に、入力バッファＦＩＦＯに存在できる。入力バッファＦＩＦＯは、仮想タイルｖの状態の一部として、保存され復元される。その後、新しいメッセージが到達した後に仮想タイルがウェイク／再起動した場合、正規のインバウンド前通信ネットワークの入力ＦＩＦＯより先に、「入力バッファＦＩＦＯ」内の待ち状態の未処理のメッセージが読み出される。長期間にわたって空でない「入力バッファＦＩＦＯ」の状態で、仮想タイルをウェイクアップするためにメッセージが到達しない場合、入力バッファＦＩＦＯ内で待っている任意の未処理のメッセージが最終的に処理されることを保証するべく、仮想タイルをウェイクアップするために形だけのダミーメッセージがこの仮想タイルに送信されてよい。
モニタに対向する統計情報ネットワークのマスタポート
【００６７】
物理タイルにおけるモニタに対向する統計情報ネットワークの一方向性マスタポートは、定期的に、下記の要求を発行する。
●要求送信（統計情報）：Ｏｐｃｏｄｅ＝ｓｔａｔｕｓ＿ｕｐｄａｔｅ  Ｐｔｉｌｅ＝（自分の物理タイル）ステータス＝（自分は動作している｜自分は動作していない）
○各物理タイルは、ステータス更新要求をモニタユニットに定期的に送信する。モニタユニットは、これらの統計情報を全ての物理タイルから収集し、プリエンプトする特定のタイルを決定する。統計情報ネットワークのハードウェア効率のよいトークンリング実装については、モニタユニットの記載を参照すること。
●応答は不必要。統計情報は、一方向性ネットワークである。
結びつけられた物理タイルハーネスに対向するアウトバウンド前通信ネットワークのマスタポート、
結びつけられた物理タイルハーネスに対向するインバウンド前通信ネットワークのスレーブポート
【００６８】
物理タイルにおけるアウトバウンド前通信ネットワークの一方向性マスタポート及びインバウンド前通信ネットワークの一方向性スレーブポートは、特定用途向け仮想スーパーコンピュータ内の仮想タイル間通信を達成する。ここで両方のネットワークは、結びつけられた物理タイルに対向する。送出及び到来メッセージの両方は、下記の同一のメッセージ形式を持つ。
●要求送信（アウトバウンド前通信）：Ｏｐｃｏｄｅ＝ｃｏｍｍｕｎｉｃａｔｅ  Ｖｄｅｓｔ＝（宛先の仮想タイル）  Ｖｓｏｕｒｃｅ＝（送信元の仮想タイル）  Ｐａｙｌｏａｄ＝（アプリケーションメッセージ・ペイロード）
●要求受信（インバウンド前通信）：Ｏｐｃｏｄｅ＝ｃｏｍｍｕｎｉｃａｔｅ  Ｖｄｅｓｔ＝（宛先の仮想タイル）  Ｖｓｏｕｒｃｅ＝（送信元の仮想タイル）  Ｐａｙｌｏａｄ＝（アプリケーションメッセージ・ペイロード）
【００６９】
再構成可能な物理タイル上に実装された各仮想タイルは（ハイパーバイザ・インフラストラクチャの支援によって）、まるでスーパーコンピュータがネイティブな非仮想ハードウェアで実装されているかのように、同一の仮想スーパーコンピュータの他の仮想タイルとネイティブに通信していると思わせられる。実際には仮想タイルは、物理タイルにオンデマンドで割り当てられ、その後、例えば仮想タイルが十分に長い時間アイドル状態のままであった後、おそらくはプリエンプト（物理タイルから非割り当て）される。このようなメッセージ内の宛先の仮想タイルは、対応する宛先の物理タイル番号を探索するために、必要とされる。このようなメッセージ内の送信元の仮想タイルも、この送信元の仮想タイルから発する任意の未送達のメッセージを追跡するために、必要とされる。したがって、仮想タイル間通信のための前通信ネットワークメッセージは、以下の前通信メッセージ形式の要件：
●宛先の仮想タイルが、メッセージにおいて固定の取り決められたビット位置に配置される、かつ
●送信元の仮想タイルが、メッセージにおいて固定の取り決められたビット位置に配置される
を、全ての仮想スーパーコンピュータについて一様に満たすことが望ましい。これで再構成可能な物理タイルの説明を完了する。
アプリケーション・プレースホルダ物理タイル
【００７０】
実際のハードウェア機能を実行する任意の仮想スーパーコンピュータのローカル仮想タイルが０、１、２、...、ｎ−１に番号付けされると仮定すると、その唯一の仕事がこの仮想スーパーコンピュータがアクセラレートするソフトウェアアプリケーションへの及びソフトウェアアプリケーションからのメッセージを中継することであり、−１に番号付けされた、同じ仮想スーパーコンピュータの新たなローカル仮想タイルを生成するのが便利である。このように、ローカル仮想タイルとソフトウェアアプリケーションとの間で交換されるメッセージは、メッセージのルーティングについて、特殊なケースとして扱われる必要はない。仮想スーパーコンピュータによってアクセラレートされるソフトウェアアプリケーションをそれぞれ実行しているｍ個の汎用品のホストプロセッサを使用して、ｍ個の（ソフトウェアアプリケーション、仮想スーパーコンピュータ）の対を実装するハイパーバイザ・システムを考えると、我々は、ｍ個のアプリケーション・プレースホルダ仮想タイルを作成して、それらを、非割り当てされることがない、ハイパーバイザ内で固定のアプリケーション・プレースホルダ物理タイルに、恒久的にマッピングできる。各アプリケーション・プレースホルダ物理タイルは、対応するソフトウェアアプリケーションを実行する正しいホストプロセッサに繋がるＰＣＩ  Ｅｘｐｒｅｓｓの外部通信装置と、ポイントツーポイント通信できる。したがって、ホストアプリケーションがその仮想スーパーコンピュータのローカル仮想タイルにメッセージを送信すると、このメッセージは、ハイパーバイザ・システムに、このホストプロセッサに接続されたアプリケーション・プレースホルダ物理タイル及び専用のＰＣＩ  Ｅｘｐｒｅｓｓ接続にて入力される。ソフトウェアアプリケーションによって送信されたメッセージは、ローカル仮想タイル−１から来ているように見える。仮想スーパーコンピュータにおける０、１...と番号付けされたローカル仮想タイルが、そのソフトウェアアプリケーションにメッセージを送信したい場合、そのアプリケーション・プレースホルダのローカル仮想タイル−１にメッセージを送信し、次にそれがＰＣＩ  Ｅｘｐｒｅｓｓ接続を通じてソフトウェアアプリケーションにメッセージを転送するだろう。
物理タイルハーネスユニット
【００７１】
図１３内の概略図を参照して、本セクションで、我々は、内部有限状態機械を含む、物理タイルハーネスユニットを説明する。
【００７２】
内部メモリの状態：内部メモリ及び物理タイルハーネスのレジスタは、以下のとおりである。
●マッピング（ｖ→ｐ）を含む、Ｌ１と呼ばれるローカル１次キャッシュ。ここで、ｖは仮想タイルであり、ｐは仮想タイルを現在実装する物理タイルである。すなわち、キャッシュＬ１は仮想タイルｖでアドレッシングされ、物理タイルＬ１［ｖ］がデータとして返される。仮想タイルｖがＬ１に存在しない場合、Ｌ１［ｖ］はＮＵＬＬに定められる。
○高速なプリエンプション動作及びネットワーク競合は、１つより多いアプリケーションの仮想スーパーコンピュータからのメッセージを、物理タイルハーネスのＦＩＦＯキュー内に、残すことができる。その送信元の仮想タイルが既に非割り当て／プリエンプトされたメッセージも、システム内に存在できる。したがって、キャッシュコヒーレンシの設計を簡素化し、競合状態を低減するために、物理タイルハーネスのローカル１次キャッシュは、ハイパーバイザ・システム内の任意の仮想スーパーコンピュータのグローバル仮想タイルでアドレッシングされるように設計されている（段落［００２５］で既に説明したように、グローバル仮想タイルｖは、（アプリケーションＩＤ、仮想スーパーコンピュータ内のローカル仮想タイル番号）の対である）。仮想スーパーコンピュータを相互に分離することは、最適化のセクション、最適化６で、別個に対処されている。
○他の実装も可能であるが、このキャッシュには、高い連想性を持つセットアソシアティブキャッシュの設計が適している。
●ｌｏｃｋｅｄＳｏｕｒｃｅと呼ばれる仮想タイルのセット：メッセージ（元々は、アウトバウンド前通信ネットワークを通じて、送信元の仮想タイルをあることを含む物理タイルから来る）の送信元の仮想タイルは、当該メッセージが物理タイルハーネスの「アウトバウンド通信要求ＦＳＭ」に入ったが、そこからまだ抜け出していない場合且つその場合に限り、ｌｏｃｋｅｄＳｏｕｒｃｅ内にある。このＦＳＭがソフトウェアパイプライン化されていない場合においては、ｌｏｃｋｅｄＳｏｕｒｃｅのセットが最大１つの要素を持つよう、セットが満杯の場合にはロックされた仮想タイルを含み、セットが空の場合にはＮＵＬＬを含む単純なレジスタが、このセットを実装するために十分である。そうでない場合においては、ハードウェア内にセットを実装するための任意の技術を用いることができる。
●ｌｏｃｋｅｄＤｅｓｔと呼ばれる仮想タイルのセット：宛先の仮想タイルは、（アウトバウンド前通信ネットワークから）当該宛先の仮想タイルに行くメッセージが物理タイルハーネスの「アウトバウンド通信要求ＦＳＭ」に入ったが、そこからまだ抜け出ていない場合且つその場合に限り、ｌｏｃｋｅｄＤｅｓｔ内にある。このＦＳＭがソフトウェアパイプライン化されていない場合においては、そのセットが最大１つの要素を持つよう、このセットを実装するためには単純なレジスタで十分である。そうでない場合においては、ハードウェア内にセットを実装するための任意の技術を用いることができる。
●ｏｕｔｓｔａｎｄｉｎｇＢｙＤｅｓｔと呼ばれる、仮想タイルからカウンタへのマップ：宛先の仮想タイルｖ１を考えると、このマップは、現在の物理タイルハーネスから宛先の仮想タイルｖ１に送出されたが、ｖ１を含む対応する物理タイルハーネスにまだ到達していない、現在のアプリケーション通信メッセージの数を返す。宛先の仮想タイルｖ１を持つアプリケーション通信メッセージが送出される毎に、ｏｕｔｓｔａｎｄｉｎｇＢｙＤｅｓｔ［ｖ１］がインクリメントされる。宛先の仮想タイルｖ１を持つアプリケーション通信メッセージの受信を確認するアクノリッジが戻ってくる毎に、ｏｕｔｓｔａｎｄｉｎｇＢｙＤｅｓｔ［ｖ１］がデクリメントされる。ゼロ値のカウンタエントリは、マップに格納されない（マップ内にエントリが無いことは、エントリがゼロであることを表す）。カウンタエントリがゼロにデクリメントされる場合、それはマップから削除される。すなわちマップは自己消去される。
●ｏｕｔｓｔａｎｄｉｎｇＢｙＳｏｕｒｃｅと呼ばれる、仮想タイルからカウンタへのマップ：送信元の仮想タイルｖ１を考えると、このマップは、送信元の仮想タイルｖ１から送出されたが、メッセージの宛先の仮想タイルを含む対応する物理タイルハーネスにまだ到達していない、現在のアプリケーション通信メッセージの数を返す。送信元の仮想タイルｖ１を持つアプリケーション通信メッセージが送信される毎に、ｏｕｔｓｔａｎｄｉｎｇＢｙＳｏｕｒｃｅ［Ｖ１］がインクリメントされる。送信元の仮想タイルｖ１を持つアプリケーション通信メッセージの受信を確認するアクノリッジが到達する毎に、ｏｕｔｓｔａｎｄｉｎｇＢｙＳｏｕｒｃｅ［ｖ１］がデクリメントされる。
○未処理のメッセージカウンタを操作することが、ハイパーバイザの通常動作中に仮想タイル間でメッセージを送信するためのクリティカルパス上にないので、これらのマップは、ＳＲＡＭを用いて、マルチポート化及び／又はバンクインターリーブ化された深いパイプラインキャッシュとして実装され得る。キャッシュは、インプレースのインクリメント及びデクリメント演算を行えることが望ましい。同じ仮想タイルに対するインクリメント及びデクリメント要求の両方が同じサイクルで到達した場合、２つの要求は、ノーオペレーションとして最適化され得る。キャッシュエントリは、ゼロにデクリメントされた場合には、無効にされることが望ましい。メッセージが送信される必要があるが、アドレスカウンタキャッシュセット内に空きカウンタがない場合には、メッセージは、セット内のカウンタがゼロにデクリメントされて空きになるまで待つ。（未処理のメッセージが多過ぎることによって）アドレスカウンタが最大カウンタ値を超えそうになった場合、送出メッセージも、同じ仮想タイルが関与している前のメッセージから十分な数のアクノリッジが戻ってくるまで待つ。
【００７３】
後述されるように、物理タイルハーネスのアウトバウンド通信要求ＦＳＭ及び制御ＦＳＭは両方とも、（ｉ）Ｌ１と呼ぶ、ローカル仮想タイルから物理タイルへのキャッシュ（ｉｉ）仮想タイルのｌｏｃｋｅｄＤｅｓｔ及びｌｏｃｋｅｄＳｏｕｒｃｅのセットを共有する。アウトバウンド通信要求ＦＳＭ、アウトバウンド通信応答ＦＳＭ、及び制御ＦＳＭは、ｏｕｔｓｔａｎｄｉｎｇＢｙＤｅｓｔ及びｏｕｔｓｔａｎｄｉｎｇＢｙＳｏｕｒｃｅカウンタアレイを共有する。これらの共有データ構造へのアクセスは、アトミックになるようになされなければならず、これは調停のためのネットワーク及び／又はマルチポート設計によって達成できる。
【００７４】
物理タイルハーネスは、それぞれ別個に説明される、以下の内部有限状態機械（ＦＳＭ）を含む。
アウトバウンド通信要求ＦＳＭ：
アウトバウンド通信応答ＦＳＭ：
【００７５】
アウトバウンド通信要求ＦＳＭは、次のＦＩＦＯインタフェースを持つ。
●他の物理タイルハーネスに対向する通信ネットワークのマスタポートの送信ＦＩＦＯインタフェース：このＦＩＦＯインタフェースは、他の物理タイルハーネスユニットにアプリケーション通信メッセージを送信するために使用される。
○アウトバウンド通信要求ＦＳＭは、通信ネットワークのマスタポートの送信ＦＩＦＯに接続され、アウトバウンド通信応答ＦＳＭが同じマスタポートの受信ＦＩＦＯに接続されていることに注意すること。したがって、各ＦＳＭは、通信ネットワークのマスタポートの半分を担う（図１３に１／２Ｍとして示される）。
●結びつけられた物理タイルに対向するアウトバウンド前通信ネットワークのスレーブポートの受信ＦＩＦＯインタフェース。この一方向性スレーブポートは、要求のみを受信し、応答を返さない。
●所有者ユニット（要求のための送信ＦＩＦＯインタフェース、及び、応答のための受信ＦＩＦＯインタフェースで構成される）に対向するルックアップネットワークの双方向性マスタポート：このマスタポートは、現在の物理タイルハーネスのローカル１次キャッシュ内に存在しない、宛先の仮想タイルに対応する宛先の物理タイルを検索するためのａｃｃｅｓｓ＿ｒｅｑｕｅｓｔコマンドを送信するために使用される。このネットワークは、現在の物理タイルハーネスによってローカル１次キャッシュＬ１のエントリ（ｖ→ｐ）が削除／破棄されようとしていることを、仮想タイルｖの所有者ユニットに通知する破棄（ａｂａｎｄｏｎ）要求のためにも使用される。
【００７６】
アウトバウンド通信応答ＦＳＭは、次のＦＩＦＯインタフェースを持つ。
●通信ネットワークに対するマスタポートの受信ＦＩＦＯインタフェース。これは、メッセージがその宛先の物理タイルハーネスに到達したことを示すアクノリッジメッセージを受信するために用られる。
【００７７】
「アウトバウンド通信要求ＦＳＭ」は、永久ループで下記のステップを繰り返し実行する。
●ＦＳＭは、物理タイルに対向するアウトバウンド前通信ネットワークの一方向性スレーブポートの受信ＦＩＦＯへの入力メッセージを待つ。入力メッセージは下記の形式を持つことができる。
○要求受信（アウトバウンド前通信）：Ｏｐｃｏｄｅ＝ｃｏｍｍｕｎｉｃａｔｅ  Ｖｄｅｓｔ＝（ｖ＝宛先の仮想タイル）  Ｖｓｏｕｒｃｅ＝（ｖ＿ｓｒｃ＝送信元の仮想タイル）  Ｐａｙｌｏａｄ＝（ｍ＝アプリケーションメッセージ・ペイロード）
●送信元の仮想タイルｖ＿ｓｒｃ及び宛先の仮想タイルｖは、ロックされている。宛先の仮想タイルｖはまた、仮想タイルを物理タイルにマッピングする、ローカル１次キャッシュＬ１内で探索される。
○アトミックに次を行う：ｐ＝Ｌ１［ｖ］；  ＬｏｃｋｅｄＤｅｓｔにｖを追加；及び、ＬｏｃｋｅｄＳｏｕｒｃｅにｖ＿ｓｒｃを追加。宛先の仮想タイルｖをロックすることは、到来するｖの無効化要求の実行を妨げる。送信元の仮想タイルｖ＿ｓｒｃをロックすることは、ｖ＿ｓｒｃからの未送信メッセージが少なくとも一つあることを、メッセージを排出するためのロジックに伝える。
●ローカルキャッシュ内にｖが存在しない場合（ｐ＝＝ＮＵＬＬ）
○宛先の仮想タイルｖを担う固有所有者ユニットｚの数は、ハッシュアルゴリズムで計算される。メッセージ
●要求送信（ルックアップ）：Ｓｏｕｒｃｅ＝（要求している物理タイルハーネス＝ｍｅ）  Ｔａｇ＝（ｔ１＝新しいタグ）  Ｄｅｓｔ＝（ｖの所有者＝ｚ）  Ｏｐｃｏｄｅ＝ａｃｃｅｓｓ＿ｒｅｑｕｅｓｔ  Ｖｔｉｌｅ＝（ルックアップする仮想タイル＝ｖ）
が、所有者ユニットに対向するルックアップネットワークのマスタポートを通じて所有者ユニットｚに送信される。
○その後、応答：
●応答受信（ルックアップ）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｍｅ）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ１）  Ｏｐｃｏｄｅ＝ａｃｃｅｓｓ＿ｒｅｓｐｏｎｓｅ  Ｐｔｉｌｅ＝（ｐ＝ｖが現在マッピングされている物理タイル）
が、再び同じマスタポートからルックアップネットワークを通じて、ｖの所有者ユニットから受信される。ここでｐは、仮想タイルｖのための宛先の物理タイルである。ｖがｐにマッピングされた状態になるように、所有者ユニットはまさに物理タイルｐをプリエンプトし、必要に応じて再構成していることに注意すること。又は代替として、ｖは既に、ｖの所有者ユニット内においてｐにマッピングされていてよい。
○最後に、マッピング（ｖ→ｐ）が、現在の物理タイルハーネスのローカル１次キャッシュＬ１に追加される。
●アトミックに次を実行する：Ｌ１［ｖ］＝ｐ
●この時点で、もしローカル１次キャッシュ内でキャッシュミスが生じたとすると、それは既に処理されている。ｐ、すなわち仮想タイルｖが配置されている物理タイルは、現在分かっている。
●宛先の仮想タイルｖへのメッセージは、ここで明確に出て行くことができるので、ｏｕｔｓｔａｎｄｉｎｇＢｙＤｅｓｔ［ｖ］がインクリメントされる。ｏｕｔｓｔａｎｄｉｎｇＢｙＳｏｕｒｃｅ［ｖ＿ｓｒｃ］もまた、インクリメントされる。ここで、ｖ＿ｓｒｃは、現在のアウトバウンドアプリケーション通信メッセージの送信元の仮想タイルである。宛先の仮想タイルｖ及び送信元の仮想タイルｖ＿ｓｒｃは、その後にロック解除され（ｖがｌｏｃｋｅｄＤｅｓｔから削除され、ｖ＿ｓｒｃがｌｏｃｋｅｄＳｏｕｒｃｅから削除される）、現在のメッセージの処理が完了したことを示す。これらのデータ構造のアクセスの全てが、アトミックに行われる。メッセージは、他の物理タイルハーネスに対向する通信ネットワークのマスタポートの送信ＦＩＦＯから、次のように送出される：
●要求送信（通信）：Ｓｏｕｒｃｅ＝（要求している物理タイルハーネス＝ｍｅ）  Ｄｅｓｔ＝（宛先の物理タイルハーネス＝ｐ）  Ｏｐｃｏｄｅ＝ｃｏｍｍｕｎｉｃａｔｅ  Ｖｄｅｓｔ＝（宛先の仮想タイル＝ｖ）  Ｖｓｏｕｒｃｅ＝（送信元の仮想タイル＝ｖ＿ｓｒｃ）  Ｐａｙｌｏａｄ＝（アプリケーションメッセージ・ペイロード＝ｍ）
Ｏアウトバウンド通信メッセージ要求を送信した後の任意の遅延、別個のアウトバウンド通信応答ＦＳＭによって、アクノリッジが通信ネットワークのマスタポートの受信ＦＩＦＯを通じて受信される
●応答受信（通信）：Ｓｏｕｒｃｅ＝（要求している物理タイルハーネス＝ｍｅ）  Ｏｐｃｏｄｅ＝ｃｏｍｍｕｎｉｃａｔｉｏｎ＿ａｃｋｎｏｗｌｅｄｇｅ  Ｖｄｅｓｔ＝（宛先の仮想タイル＝ｖ）  Ｖｓｏｕｒｃｅ＝（送信元の仮想タイル＝ｖ＿ｓｒｃ）通信アクノリッジは、順不同で戻ることができ、これは通信アクノリッジ・サブネットワークを設計する自由度を提供する。そのような通信アクノリッジは、仮想スーパーコンピュータには見えず、出て行く通信要求の数が入ってくる通信アクノリッジの数と等しいかどうかをチェックするためだけに用いられるので、ハイパーバイザのメッセージの順序付け要件が破られない。
○個別のアウトバウンド通信応答ＦＳＭの唯一の動作は、ｏｕｔｓｔａｎｄｉｎｇＢｙＳｏｕｒｃｅ［ｖ＿ｓｒｃ］及びｏｕｔｓｔａｎｄｉｎｇＢｙＤｅｓｔ［ｖ］のカウンタをアトミックにデクリメントすることである。入ってくるアクノリッジメッセージは破棄される。
●ローカル１次キャッシュＬ１内でｖを検索している間にキャッシュミスが生じ、選択されたキャッシュセットがほぼ満杯であった場合、このキャッシュセット内にスペースを作るために破棄トランザクションが下記のように試行される：
○次のテスト及びエントリ選択がアトミックに行われる：アドレスされたキャッシュセットが依然ほぼ満杯である場合、ｖ'への未送達のメッセージがなくなる（ｏｕｔｓｔａｎｄｉｎｇＢｙＤｅｓｔ［ｖ'］がゼロ）ように、セットの中にエントリ（ｖ'→ｐ'）（ここでｖ'≠ｖ）が、もしそのようなエントリが存在すれば、選択される。
○キャッシュセットがほぼ満杯で、エントリ（ｖ'→ｐ'）が選択できた場合
●次の要求がｖ'の所有者ユニットに送信される：
■要求送信（ルックアップ）：Ｓｏｕｒｃｅ＝（要求している物理タイルハーネス＝ｍｅ）  Ｔａｇ＝（ｔ２＝新しいタグ）  Ｄｅｓｔ＝（ｖ'の所有者）  Ｏｐｃｏｄｅ＝ａｂａｎｄｏｎ  Ｖｔｉｌｅ＝（破棄する仮想タイル＝ｖ'）  Ｐｔｉｌｅ＝（ｖ'がマッピングされている現在の物理タイル＝ｐ'）
●ｖ'の所有者内にマッピング（ｖ'→ｐ'）が存在し、現在の物理タイル（所有者に送信された破棄（ａｂａｎｄｏｎ）要求のＳｏｕｒｃｅフィールドで渡される）が、ｖ'の所有者内で（ｖ'→ｐ'）マップエントリの共有者である場合は、所有者から（肯定の）アクノリッジが現在の物理タイルハーネスに返送される。
■応答受信（ルックアップ）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｍｅ）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ２）  Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ
このケースでは、破棄の試行が成功している。（ｖ'→ｐ'）が、現在の物理タイルハーネス内のローカルキャッシュＬ１から（アトミックに）削除される。
●それ以外の場合は、否定のアクノリッジが、ｖ'の所有者から現在の物理タイルハーネスに返送される。
■応答受信（ルックアップ）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｍｅ）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ２）  Ｏｐｃｏｄｅ＝ｎｅｇａｔｉｖｅ＿ａｃｋｎｏｗｌｅｄｇｅ
このケースでは、破棄の試みが失敗している。物理タイルハーネス内では何も行われない。破棄の試行はノーオペレーションとなり、副次的影響は生じない。未処理の送出メッセージが原因で、破棄するエントリを選択できなかった場合、又は、破棄の試行が成功しなかった場合、キャッシュセットがもはやほぼ満杯でなくなるまで、又は、破棄要求が肯定のアクノリッジを取得するまで、破棄の試行が再試行される。各再試行の前には、待ち時間が与えられる。
【００７８】
破棄要求が進行している間、並行する無効化要求がＬ１キャッシュを自動的に小さくすることができ、従って、エントリを破棄する必要性はそれ自身で無くなる場合があることに注意すること。
【００７９】
（ｖ'→ｐ'）に対する破棄メッセージが現在の物理タイルからｖ'の所有者に転送中である間、ネットワーク競合に依存して、ｖ'に関する所有者内には多くの追加のトランザクション（例えば、ｖ'をｐ'から非割り当てする、異なる物理タイルｐ'にｖ'を割り当てる）がある可能性があるので、上記した破棄のトランザクション的な実装が必要である。
【００８０】
ここにシーケンシャルコードで記述された「アウトバウンド通信要求ＦＳＭ」は、適切に依存性を考慮することによって、「ソフトウェアパイプライン化」（すなわち、イタレーションｎ＋１、ｎ＋２、...がイタレーションｎの終了前に開始可能）できる。例えば、同じ仮想タイルについて２つの連続するａｃｃｅｓｓ＿ｒｅｑｕｅｓｔコマンドがあるが、１番目のものがローカル１次キャッシュでミスした場合、２番目の要求は、ローカル１次キャッシュを更新するために、１番目のものを待たなければならない。しかし、異なる仮想タイルに対する２つの連続するａｃｃｅｓｓ＿ｒｅｑｕｅｓｔコマンドは、並列／パイプライン方式で進めることができる。仮想タイルの対の間でメッセージを並べ替えないことは、全ての仮想スーパーコンピュータに対してハイパーバイザが保証することなので、任意の１つの仮想タイルから別の仮想タイルへのメッセージが並べ替えられるべきではない。
【００８１】
ｏｕｔｓｔａｎｄｉｎｇＢｙＳｏｕｒｃｅ及びｏｕｔｓｔａｎｄｉｎｇＢｙＤｅｓｔのデータ構造の深くパイプライン化された実装を利用できるよう、「アウトバウンド通信応答ＦＳＭ」もまた、ソフトウェアパイプライン化されてよい。
インバウンド通信ＦＳＭ：
【００８２】
このＦＳＭは、下記のＦＩＦＯインタフェースを持つ。
●他の物理タイルハーネスに対向する通信ネットワークのスレーブポート：この双方向ポートは、仮想スーパーコンピュータの内部のアプリケーションメッセージを受信し、メッセージがその宛先に到達したことを確認するために、アクノリッジ応答を返送するのに使用される。
●結びつけられた物理タイルに対向するインバウンド前通信ネットワークに対するマスタポートの送信ＦＩＦＯインタフェース。この一方向性マスタポートは、要求のみを送信し、応答を受信しない。
【００８３】
インバウンド通信ＦＳＭは、永久ループで下記のステップを実行する。
●ＦＳＭは、他の物理タイルハーネスに対向する通信ネットワークのスレーブポートの受信ＦＩＦＯからの、下記の形式の到来メッセージを待つ。
○要求受信（通信）：Ｓｏｕｒｃｅ＝（ｐ０＝送信する物理タイルハーネス）  Ｄｅｓｔ＝（受信する物理タイルハーネス＝ｍｅ）  Ｏｐｃｏｄｅ＝ｃｏｍｍｕｎｉｃａｔｅ  Ｖｄｅｓｔ＝（ｖ＝宛先の仮想タイル）  Ｖｓｏｕｒｃｅ＝（ｖ＿ｓｒｃ＝送信元の仮想タイル）  Ｐａｙｌｏａｄ＝（ｍ＝アプリケーションメッセージ・ペイロード）
●物理タイルのルーティング情報は、インバウンド通信メッセージから削除される。下記のように、この結果として生じるメッセージはその後、結びつけられている物理タイルへのインバウンド前通信ネットワークのマスタポートの送信ＦＩＦＯを通じて送信される。
○要求送信（インバウンド前通信）：Ｏｐｃｏｄｅ＝ｃｏｍｍｕｎｉｃａｔｅ  Ｖｄｅｓｔ＝（宛先の仮想タイル＝ｖ）  Ｖｓｏｕｒｃｅ＝（送信元の仮想タイル＝ｖ＿ｓｒｃ）  Ｐａｙｌｏａｄ＝（アプリケーションメッセージ・ペイロード＝ｍ）
●また、アクノリッジ応答が通信ネットワークのスレーブポートの送信ＦＩＦＯから返送される。
○応答送信（通信）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｐ０）  Ｏｐｃｏｄｅ＝ｃｏｍｍｕｎｉｃａｔｉｏｎ＿ａｃｋｎｏｗｌｅｄｇｅ  Ｖｄｅｓｔ＝（宛先の仮想タイル＝ｖ）  Ｖｓｏｕｒｃｅ＝（送信元の仮想タイル＝ｖ＿ｓｒｃ）
シーケンシャルコードでここに記述されたインバウンド通信ＦＳＭは、適切に依存性を考慮することによって、ソフトウェアパイプライン化することができる。
制御ＦＳＭ
【００８４】
このＦＳＭは、下記のポートを持つ。
●所有者ユニットに対向する制御ネットワークのスレーブポート：所有者は、ｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅ要求又はｗｒｉｔｅ＿ｓｔａｔｅ要求を現在の物理タイルハーネスに送信するため；現在の物理タイルハーネスのローカル１次キャッシュ（Ｌ１と呼ばれる）内のマッピング（仮想タイル→物理タイル）を無効化するため；また、特定の送信元の仮想タイル及び現在の物理タイルハーネスからも発するメッセージを排出するために、このポートを使用できる。
●結びつけられた物理タイルに対向する前制御ネットワークのマスタポート：このポートは、制御ネットワークを通じて所有者ユニットから現在の物理タイルハーネスに来るｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅ及びｗｒｉｔｅ＿ｓｔａｔｅメッセージを、結びつけられた物理タイルにリレーする。
【００８５】
制御ＦＳＭは、永久ループで下記のステップを実行する。
●ＦＳＭは所有者に対向する制御ネットワークのスレーブポートから入る要求メッセージを待る。
●メッセージが下記の形式である場合
●要求受信（制御）：Ｓｏｕｒｃｅ＝（ｏ０＝要求する所有者ユニット）  Ｔａｇ＝（ｔ０＝タグ）  Ｄｅｓｔ＝ｍｅ  Ｏｐｃｏｄｅ＝  ｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅ
この要求は、次のように、結びつけられた物理タイルに対向する前制御ネットワークのマスタポートに渡される。
●要求送信（前制御）：Ｏｐｃｏｄｅ＝  ｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅ
○未処理の要求を識別するＳｏｕｒｃｅ（所有者ユニット番号）及びＴａｇフィールドは、それぞれ変数ｏ０及びｔ０に保存される。結びつけられた物理タイルに対向する前制御ネットワークのマスタポートの受信ＦＩＦＯから、恐らく下記の形式の応答（状態データ）が受信された場合、
●応答受信（前制御）：Ｏｐｃｏｄｅ＝ｒｅａｄ＿ｓｔａｔｅ＿ｒｅｓｐｏｎｓｅ  Ｔｉｌｅｓｔａｔｅ＝（ｓｔ＝状態データ）
その後、この応答は、次のように応答ルーティング情報フィールドが追加された後、所有者ユニットに対向する制御ネットワークのスレーブポートに転送される。
●応答送信（制御）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元（送信する所有者）ユニット＝ｏ０）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ０）  Ｏｐｃｏｄｅ＝ｒｅａｄ＿ｓｔａｔｅ＿ｒｅｓｐｏｎｓｅ  Ｔｉｌｅｓｔａｔｅ＝（状態データ＝ｓｔ）
前制御ネットワークから制御ネットワークへのタイル状態の転送は、多くの状態のためパイプライン方式で実装されることが望ましい。
●そうでなく、メッセージが下記の形式である場合：
●要求受信（制御）：Ｓｏｕｒｃｅ＝（ｏ０＝要求する所有者ユニット）  Ｔａｇ＝（ｔ０＝タグ）  Ｄｅｓｔ＝ｍｅ  Ｏｐｃｏｄｅ＝ｗｒｉｔｅ＿ｓｔａｔｅ  Ｔｉｌｅｓｔａｔｅ＝（ｓｔ＝状態データ）
メッセージは次のように、ルーティングフィールドが削除された後、結びつけられた物理タイルに対向する前制御ネットワークのマスタポートに渡される
●要求送信（前制御）：Ｏｐｃｏｄｅ＝ｗｒｉｔｅ＿ｓｔａｔｅ  Ｔｉｌｅｓｔａｔｅ＝（状態データ＝ｓｔ）
制御ネットワークから前制御ネットワークへのタイル状態の転送は、多くの状態のためにパイプライン方式で実装することが望ましい。
○要求の送信元（要求する所有者）及び未処理の要求タグは、変数ｏ０及びｔ０内にローカルに保存される。物理タイルが対向する前制御ネットワークのマスタポートから来る応答（アクノリッジ）
●応答受信（前制御）：Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ
が、下記のように物理タイルルーティング情報が追加された後、所有者ユニットに対向する制御ネットワークのスレーブポートに転送される。
●応答送信（制御）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｏ０）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ０）  Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ
●そうでなく、メッセージが下記の形式の場合
●要求受信（制御）：Ｓｏｕｒｃｅ＝（ｏ０＝要求している所有者）  Ｔａｇ＝（ｔ０＝タグ）  Ｄｅｓｔ＝ｍｅ  Ｏｐｃｏｄｅ＝ｉｎｖａｌｉｄａｔｅ  Ｖｔｉｌｅ＝（ｖ＝無効にする仮想タイル）
○ｖが宛先の仮想タイルとしてロックされている場合（すなわち、ｖがｌｏｃｋｅｄＤｅｓｔのメンバーである。このことはローカルキャッシュＬ１内にｖを配置しようとしている進行中のａｃｃｅｓｓ＿ｒｅｑｕｅｓｔトランザクションがあることを意味する）
●否定のアクノリッジが返送され、無効化トランザクションは直ちに終了する。
■応答送信（制御）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｏ０）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ０）  Ｏｐｃｏｄｅ＝ｎｅｇａｔｉｖｅ＿ａｃｋｎｏｗｌｅｄｇｅ
要求する所有者はその後、無効化要求を再試行するだろう。
○そうでない場合
●要求された仮想タイルのエントリは、ローカル１次キャッシュからアトミックに削除される。
●ＦＳＭは、ｖへの全ての未処理のメッセージが送達される（ｏｕｔｓｔａｎｄｉｎｇＢｙＤｅｓｔ［Ｖ］がゼロ）まで待つ。
●以下のように、肯定のアクノリッジ応答は、所有者ユニットに対向する制御ネットワークのスレーブポートを通じて、依頼者に返送される。
■応答送信（制御）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元所有者＝ｏ０）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ０）  Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ
●そうでなく、メッセージが下記の形式である場合
●要求受信（制御）：Ｓｏｕｒｃｅ＝（ｏ０＝要求している所有者）  Ｔａｇ＝（ｔ０＝タグ）  Ｄｅｓｔ＝ｍｅ  Ｏｐｃｏｄｅ＝ｄｒａｉｏｎ  Ｖｔｉｌｅ＝（ｖ＿ｓｒｃ＝ドレインする送信元の仮想タイル）
○制御ＦＳＭは、データ構造にアクセスする場合にアトミックなアクセスを用いて、次のいずれか１つが真になるまで待つ。
●ｏｕｔｓｔａｎｄｉｎｇＢｙＳｏｕｒｃｅ［ｖ＿ｓｒｃ］がゼロであり（仮想タイルｖ＿ｓｒｃ及び現在の物理タイルハーネスを送信元とする未処理のメッセージが存在しない）、結びつけられた物理タイルに対向するアウトバウンド前通信ネットワークのスレーブポートの受信ＦＩＦＯが空であり、ｖ＿ｓｒｃが送信元の仮想タイルとしてロックされていない（ｖ＿ｓｒｃがｌｏｃｋｅｄＳｏｕｒｃｅ内にない）、
又は
●制限時間を超えている。
この目的は、送信元の仮想タイルｖ＿ｓｒｃから発する全てのメッセージが送達されるか、確度が高いデッドロックが検出されるまで待つことである。
○時間制限を最初に超えた場合、排出が失敗し、否定のアクノリッジが返信される。
●送信応答（制御）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｏ０）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ０）  Ｏｐｃｏｄｅ＝ｎｅｇａｔｉｖｅ＿ａｃｋｎｏｗｌｅｄｇｅ
○それ以外の場合、排出が成功し、肯定のアクノリッジが返送される。
●送信応答（制御）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｏ０）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ０）  Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ
【００８６】
他の種類の制御要求はない。
【００８７】
物理タイルの構成動作は容易にはソフトウェアパイプライン化できないので、制御ＦＳＭは、物理タイルハーネス内でソフトウェアパイプライン化されないだろう。  しかし、依存性が許すなら、所有者ユニットは、異なる物理タイルハーネスへの制御ネットワーク要求をオーバーラップすることができる。
所有者ユニット
【００８８】
図１４の概略図を参照して、このセクションで我々は、所有者ユニットについて、その内部ＦＳＭを含めて説明する。全ての仮想タイルのセットは、単純なハッシュアルゴリズムを使用して、ほぼ等しいサイズの部分に分割され、各パーティションは、自身のパーティション内の仮想タイルを管理する責任を負う、分離した所有者ユニットに割り当てられている。
【００８９】
内部メモリの状態：
●ｐｔｉｌｅ：所有者ユニットは、それが所有している各仮想タイルからのマップｐｔｉｌｅであって、この対が物理タイルに現在マッピングされている場合には物理タイルへのマップ、この仮想タイルが現在マップされていない場合はＮＵＬＬへのマップ、を維持することを担う。
●共有者：所有者ユニットはまた、物理タイルｐにマッピングされている各仮想タイルｖについて、（ｖ→ｐ）マッピングをローカルにキャッシュしている物理タイルハーネスｐ'（≠ｐ）のセットを保持する。物理タイルハーネスのセットは、ｖの共有者と呼ばれる。このセットを維持することは、物理タイルがプリエンプトされた場合、すなわち、１つの仮想タイルの実行を停止し、他の仮想タイルの実行を開始した場合に無効にされるべき、物理タイルハーネス内のローカル１次キャッシュのエントリを特定するために必要である。共有者マップの各セットは、ビット列として表すことができる。ビット列表現が実用的でないほど物理タイル数が大きい場合には、既知のディレクトリエントリの圧縮技術の１つを使用できる。
●ｐｒｉｏｒＰｔｉｌｅ：更に、各所有者は、各仮想タイルからの、その仮想タイルが割り当てられていた以前の物理タイル（もし存在するなら）へのマップを保持する。最初は、このマップｐｒｉｏｒＰｔｉｌｅは空である（全てのエントリがＮＵＬＬ）。仮想タイルｖが非割り当てされる毎に、その最後の物理タイルがｐｒｉｏｒＰｔｉｌｅ［ｖ］に書き込まれる。仮想タイルによって扱われるマルチレベルキャッシュ階層（その最下位レベルは、現在の所有者ユニット近傍のローカルのオフチップＤＲＡＭにある）、ｐｔｉｌｅ、共有者及びｐｒｉｏｒＰｔｉｌｅの一体とした実装に適している。これらのデータ構造は、所有者ユニット内の割り当て／非割り当てＦＳＭ及びルックアップＦＳＭの両方によって共有される。これらのデータ構造へのアクセスは、アトミックになるようにする必要があり、これは調停のための２対１ネットワーク及び／又はマルチポート設計によって達成できる。
●ｔｉｌｅＳｔａｔｅ：更に、各所有者は、仮想タイルから、ｔｉｌｅＳｔａｔｅと呼ばれるタイル状態へのマップを持つ。仮想タイルの状態は、このマップに保存される。本明細書で前述した「ハイパーバイザストレージ」は、各所有者のｔｉｌｅＳｔａｔｅマップとして実装されている。  仮想タイルの状態が大きいと仮定すると、任意のオンチップキャッシュを用いることなく、ｔｉｌｅＳｔａｔｅマップのデータ部分及びタグの両方を、現在の所有者ユニットに近いオフチップＤＲＡＭ内に実装するのが好適である。  ｔｉｌｅＳｔａｔｅデータ構造は、所有者ユニットの割り当て／非割り当てＦＳＭによってのみアクセスされ、したがって、所有者ユニット内のｔｉｌｅＳｔａｔｅへのアトミックなアクセスは必要ない。
【００９０】
所有者ユニットは、下記の内部ＦＳＭを持つ。
ルックアップＦＳＭ
【００９１】
ルックアップＦＳＭは、下記のポートを持つ。
●物理タイルハーネスに対向するルックアップネットワークのスレーブポート：このポートは、指定した仮想タイルに対応する物理タイルを検索するため、及び、その物理タイルで要求者に応答するためのａｃｃｅｓｓ＿ｒｅｑｕｅｓｔの受信に用いられる。このポートは、特定の物理タイルハーネスが、そのローカルキャッシュ内の（ｖ→ｐ）マッピングの共有の停止を望むことを示す破棄要求の受信にも用いられる。ここで、仮想タイルｖは現在の所有者の責任範囲内である。
●モニタに対向する置換タイル選択ネットワークのマスタポート：このマスタポートは、予め決定されたタイル置換アルゴリズムを使用してプリエンプトする物理タイルで応答するモニタに、ｔｉｌｅ＿ｒｅｑｕｅｓｔを送信するために用いられる。またそれは、その物理タイルで非割り当て／割り当て動作が完了したことをモニタユニットに通知するｔｉｌｅ＿ｕｎｌｏｃｋ要求を物理タイルがモニタユニットに送信するために用いられる。
●所有者に対向する割り当て／非割り当てネットワーク、特に、現在の所有者のローカル割り当て／非割り当てＦＳＭのマスタポート。このマスタポートは、物理タイルに仮想タイルを割り当てるため、又は、物理タイルから仮想タイルを非割り当てするために用いられる。任意の仮想タイルから発した残りの未処理のメッセージを通信ネットワークから排出する要求も、このネットワークを渡って送信される。
【００９２】
ルックアップＦＳＭは、下記のステップを永久ループで実行する。
【００９３】
ルックアップＦＳＭは、物理タイルハーネスに対向するルックアップネットワークのスレーブポートからの要求を待つ。
アクセス要求
【００９４】
到来メッセージが、下記の形式のアクセス要求である場合：
○要求受信（ルックアップ）：Ｓｏｕｒｃｅ＝（ｐ０＝要求する物理タイルハーネス）  Ｔａｇ＝（ｔ０＝タグ）Ｄｅｓｔ＝ｍｅ  Ｏｐｃｏｄｅ＝ａｃｃｅｓｓ＿ｒｅｑｕｅｓｔ  Ｖｔｉｌｅ＝（ｖ＝仮想タイル）
●アトミックに次を実行：読み出しｐ＝ｐｔｉｌｅ  ［ｖ］；  ｉｆ（ｐ！＝ＮＵＬＬ）ｐ０をｓｈａｒｅｒｓ［ｖ］に追加；  ｐ'＝ｐｒｉｏｒＰｔｉｌｅ［ｖ］。
●その物理タイルが要求された仮想タイルｖが、現在の所有者内の物理タイルにマッピングされていない場合（ｐ＝＝ＮＵＬＬ）
○ｖがマッピングされていた前の物理タイルｐ'があった場合（ｐ！＝ＮＵＬＬ）
●ｖがｐ'上にあったときのｖからの全てのメッセージがその宛先に届くことを、自身の割り当て／非割り当てＦＳＭに排出要求を送信することによって保証する試み：
■要求送信（割り当て／非割り当て）：Ｓｏｕｒｃｅ＝（要求する所有者＝ｍｅ）  Ｔａｇ＝（ｔ１＝新しいタグ）  Ｄｅｓｔ＝ｍｅ  Ｏｐｃｏｄｅ＝ｄｒａｉｎ  Ｖｔｉｌｅ＝（仮想タイル＝ｖ）  Ｐｔｉｌｅ＝（ｖの最後の物理タイル＝ｐ'）
ここで排出操作は、成功か、現在の所有者に肯定のアクノリッジを返すかのいずれかである。
■応答受信（割り当て／非割り当て）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｍｅ）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ１）  Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ      又は、（例えば、高い競合状態におけるデッドロックによって）排出操作が失敗し、タイムアウト後に否定のアクノリッジを返す。
■応答受信（割り当て／非割り当て）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｍｅ）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ１）  Ｏｐｃｏｄｅ＝ｎｅｇａｔｉｖｅ＿ａｃｋｎｏｗｌｅｄｇｅ  Ｏｖに割り当てられていた前の物理タイルｐ'がある場合（ｐ'！＝ＮＵＬＬ）、及び、ｐ'上のｖからメッセージを排出する試みが失敗した場合：
●モニタユニットに送信されることになる要求された物理タイルのパラメータ（Ｒｅｑｕｉｒｅｄ＿ｐｔｉｌｅ）ｐ''が、ｐ'に設定される。そうすることは、モニタによって返される物理タイルは、旧物理タイルｐ'と同一になることを強いる。
そうでなければ、
●モニタユニットが任意の新たな物理タイルを自由に返すことができるよう、要求された物理タイルのパラメータ（Ｒｅｑｕｉｒｅｄ＿ｐｔｉｌｅ）ｐ''がＮＵＬＬに設定される。
○ルックアップＦＳＭは、その後、要求
●要求受信（置換タイル選択）：Ｓｏｕｒｃｅ＝（要求する所有者＝ｍｅ）  Ｔａｇ＝（ｔ２＝新しいタグ）  Ｄｅｓｔ＝Ｍｏｎｉｔｏｒ  Ｏｐｃｏｄｅ＝ｔｉｌｅ＿ｒｅｑｕｅｓｔ  Ｖｔｉｌｅ＝（仮想タイル＝ｖ）  Ｒｅｑｕｉｒｅｄ＿ｐｔｉｌｅ＝ｐ''、
を、置換タイル選択ネットワークのマスタポートを通じてモニタユニットに送信し、その後、
●要求受信（置換タイル選択）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｍｅ）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ２）  Ｏｐｃｏｄｅ＝ｔｉｌｅ＿ｒｅｓｐｏｎｓｅ  Ｖｔｉｌｅ＝（ｖ'＝ｐに割り当てられた前の仮想タイル）  Ｐｔｉｌｅ＝（ｐ＝プリエンプトする物理タイル）
の形式の応答を、置換タイル選択ネットワークの同じマスタポートから受信する。全ての適格な物理タイルがロック（すなわち、現在再構成中）されている場合、モニタも、ｔｉｌｅ＿ｒｅｑｕｅｓｔにｎｅｇａｔｉｖｅ＿ａｃｋｎｏｗｌｅｄｇｅで応答できる。この場合、有効な物理タイルが受信されるまで、ｔｉｌｅ＿ｒｅｑｕｅｓｔが、現在の所有者によって遅延時間の後に再送信される。ここで、ｖ'は、選択された物理タイルｐに現在マッピングされている、プリエンプトされることになる仮想タイルである。モニタは、各物理タイルから、（もし存在するなら）それが含む仮想タイルへの、正確なマップを保持する。物理タイルｐに現在何もマッピングされていない場合、モニタによってｖ'＝ＮＵＬＬが返される。
○ｖ'がＮＵＬＬでない場合（ｐ上に占有者である仮想タイルｖ'がある）
●ルックアップＦＳＭは、
■要求送信（割り当て／非割り当て）：Ｓｏｕｒｃｅ＝（要求する所有者＝ｍｅ）  Ｔａｇ＝（ｔ３＝新しいタグ）  Ｄｅｓｔ＝（ｏ３＝ｖ'の所有者）  Ｏｐｃｏｄｅ＝ｄｅａｌｌｏｃａｔｅ  Ｖｔｉｌｅ＝（非割り当てする仮想タイル＝ｖ'）  Ｐｔｉｌｅ＝（ｖ'が現在マッピングされている物理タイル＝ｐ）
を、割り当て／非割り当てネットワークのマスタポートを通じて、（ｖ'のハッシュ関数を計算することによって決定される）ｖ'の所有者ｏ３に送信する。ｖ'の所有者は、現在の所有者と異ってよく、又は、現在の所有者と同じであり得ることに注意すること。
●ルックアップＦＳＭは、同じマスタポートから、ｏ３からのアクノリッジ応答を待つ。
■応答受信（割り当て／非割り当て）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｍｅ）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ３）  Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ
○この時点で、ｐは空き物理タイルである。ルックアップＦＳＭは、
●要求送信（割り当て／非割り当て）：Ｓｏｕｒｃｅ＝（要求する所有者＝ｍｅ）  Ｔａｇ＝（ｔ４＝新しいタグ）  Ｄｅｓｔ＝ｍｅ  Ｏｐｃｏｄｅ＝ａｌｌｏｃａｔｅ  Ｖｔｉｌｅ＝（仮想タイル＝ｖ）  Ｐｔｉｌｅ＝（物理タイル＝ｐ）  Ｓｈａｒｅ＝（共有者の物理タイル＝ｐ０）
を、割り当て／非割り当てネットワークのマスタポートを通じて、自身の割り当て／非割り当てＦＳＭに送信する（その要求は、ｖがｐに割り当てられ、ｐ０を（ｖ→ｐ）マッピングの共有者にさせることを要求する）。
○ルックアップＦＳＭは、同じマスタポートからのアクノリッジを待つ
●応答受信（割り当て／非割り当て）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｍｅ）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ４）  Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ
●この時点で、要求されたマッピングｖ→ｐは現在の所有者ユニットのマップ内に既にあり、ｐが知られており、要求者の物理タイルｐ０がｖについての共有者リストに既に追加されている。
●その後、ルックアップＦＳＭは、ルックアップネットワークのスレーブポートを通じて、要求している物理タイルハーネスｐ０に対する応答として、物理タイルｐを返す：
○応答送信（ルックアップ）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｐ０）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ０）  Ｏｐｃｏｄｅ＝  ａｃｃｅｓｓ＿ｒｅｓｐｏｎｓｅ  Ｐｔｉｌｅ＝（物理タイル＝ｐ）
●最終的に、プリエンプトされる物理タイルｐは、下記の要求の送信及びそのアクノリッジの受信によって、ｐ上の割り当て／非割り当て動作が完了したことを知らせるために、モニタ内でロック解除される。
○要求送信（置換タイル選択）：Ｓｏｕｒｃｅ＝ｍｅ  Ｔａｇ＝（ｔ５＝新しいタグ）  Ｄｅｓｔ＝モニタ  Ｏｐｃｏｄｅ＝  ｕｎｌｏｃｋ＿ｔｉｌｅ  Ｐｔｉｌｅ（物理タイル＝ｐ）
○応答受信（置換タイル選択）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｍｅ）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ５）  Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ
破棄要求
【００９５】
要求が下記形式の破棄要求である場合：
○要求受信（ルックアップ）：Ｓｏｕｒｅｃｅ（ｐ０＝送信元の物理タイルハーネス）  Ｔａｇ＝（ｔ０＝タグ）  Ｏｐｃｏｄｅ＝ａｂａｎｄｏｎ  Ｖｔｉｌｅ＝（ｖ＝仮想タイル）  Ｐｔｉｌｅ＝（ｐ＝物理タイル）
●アトミックに下記を実行する：
○ｖがｐにマッピングされ（ｐｔｉｌｅ［ｖ］＝＝ｐ）、ｐ０がこのマッピングの共有者である（ｐ０がｓｈａｒｅｒｓ［ｖ］中に入っている）場合：
●仮想タイルｖの共有者リスト（ｓｈａｒｅｒｓ［ｖ］）から物理タイルｐ０を削除する
○そうでなければ、
●何もしない
●共有者ｐ０が削除された場合
○応答を返信する：
●応答送信（ルックアップ）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｐ０）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ０）  Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ
●そうでなければ、
○否定のアクノリッジ応答を返信する
●応答送信（ルックアップ）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｐ０）  Ｔａｇ＝（要求のもの同じタグ＝ｔ０）  Ｏｐｃｏｄｅ＝ｎｅｇａｔｉｖｅ＿ａｃｋｎｏｗｌｅｄｇｅ
【００９６】
ルックアップＦＳＭは、通常の逐次実行の制約下でソフトウェアパイプライン化され得る。例えば、仮想タイルへの最初のａｃｃｅｓｓ＿ｒｅｑｕｅｓｔがｐｔｉｌｅマップ内でミスになった場合、同じ仮想タイルへの２番目のａｃｃｅｓｓ＿ｒｅｑｕｅｓｔは、最初の要求が処理されて、ｐｔｉｌｅデータ構造が更新されるまで、待たなければならない。しかし、異なる仮想タイルへの２番目の要求は、最初の要求から独立して進めることができる。
割り当て／非割り当てＦＳＭ
【００９７】
割り当て／非割り当てＦＳＭは、下記のポートを持つ。
●物理タイルハーネスに対向する制御ネットワークのマスタポート：このポートは、物理タイルハーネスにｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅ及びｗｒｉｔｅ＿ｓｔａｔｅ要求を送信し、物理タイルハーネス内のローカル１次キャッシュエントリを無効化し、また、特定の仮想タイル及び特定の物理タイルから発せられる未処理のメッセージを排出するために用いられる。
●（現在の所有者ユニットを含む）所有者ユニットに対向する割り当て／非割り当てネットワークのスレーブポート。物理タイルに仮想タイルを割り当てる、物理タイルから仮想タイルを非割り当てする、又は、特定の仮想タイルから発せられた未処理のメッセージを排出する要求は、このポートで供給される。ここで、仮想タイルは現在の所有者ユニットによって所有されている。
【００９８】
割り当て／非割り当てＦＳＭは、ｐｔｉｌｅ、ｐｒｉｏｒＰｔｉｌｅ及びｓｈａｒｅｒｓのデータ構造を、ルックアップＦＳＭと共有する。これらのデータ構造へのアクセスはアトミックであることが望ましい。
【００９９】
割り当て／非割り当てＦＳＭは、永久ループにおいて下記のステップを実行する。
非割り当て要求
【０１００】
下記形式の非割り当て要求があった場合：
●要求受信（割り当て／非割り当て）：Ｓｏｕｒｃｅ＝（ｏ０＝要求する所有者）  Ｔａｇ＝（ｔ０＝タグ）  Ｄｅｓｔ＝ｍｅ  Ｏｐｃｏｄｅ＝ｄｅａｌｌｏｃａｔｅ  Ｖｔｉｌｅ＝（ｖ'＝非割り当てする仮想タイル）  Ｐｔｉｌｅ＝（ｐ＝ｖ'が現在割り当てられている物理タイル）
○アトミックに次を実行する。マッピング（ｖ'→ｐ）が現在の所有者ユニット内に存在することが望ましい（すなわち、ｐｔｉｌｅ［ｖ'］＝＝ｐ）。ｖ'の共有者リストｓ＝ｓｈａｒｅｒｓ［ｖ'］を保存する。ｐｒｉｏｒＰｔｉｌｅ［ｖ'］＝ｐｔｉｌｅ［ｖ'］の設定をすることで、ｖ'の古いマッピングを記憶する。マップエントリｐｔｉｌｅ［ｖ'］及びｓｈａｒｅｒｓ［ｖ'］を削除する。
○マッピング（ｖ'→ｐ）の保存された共有者リストｓ内の各ｐ'について、
●制御ネットワークのマスタポートを通じて、ｖ'の無効化要求を物理タイルハーネスｐ'に送信し、同じマスタポートを通じてアクノリッジを受信する。
■要求送信（制御）：Ｓｏｕｒｃｅ＝（要求する所有者＝ｍｅ）  Ｔａｇ＝（ｔ１＝新しいタグ）  Ｄｅｓｔ＝（物理タイルハーネス＝ｐ'）  Ｏｐｃｏｄｅ＝  ｉｎｖａｌｉｄａｔｅ  Ｖｔｉｌｅ＝（無効化する仮想タイル＝ｖ'）
■応答（制御）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｍｅ）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ１）  Ｏｐｃｏｄｅ＝（ｗ＝ｉｎｖａｌｉｄａｔｅ  ｒｅｓｐｏｎｓｅ）
●応答がｎｅｇａｔｉｖｅ＿ａｃｋｎｏｗｌｅｄｇｅである（すなわち、ｐ'内のｖ'に対する継続的なアクセス要求がある）間、（肯定の）アクノリッジ応答が戻ってくるまで、無効化要求を再試行する。無効化要求のためのこの最後のｆｏｒループの繰り返しは並列に実行できる。複数の共有者に送信された無効化要求はオーバーラップされ得る。
●物理タイルハーネスに対向する制御ネットワークのマスタポートを通じて、ｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅ要求を物理タイルハーネスｐに送信する。
○要求送信（制御）：Ｓｏｕｒｃｅ＝（要求する所有者＝ｍｅ）  Ｔａｇ＝（ｔ２＝新しいタグ）  Ｄｅｓｔ＝（物理タイルハーネス＝ｐ）  Ｏｐｃｏｄｅ＝ｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅ
●タイル状態データを応答として受信する。
○応答受信（制御）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｍｅ）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ２）  Ｏｐｃｏｄｅ＝ｒｅａｄ＿ｓｔａｔｅ＿ｒｅｓｐｏｎｓｅ  Ｔｉｌｅｓｔａｔｅ＝（ｓｔ＝状態データ）
●そして、この所有者のローカルのｔｉｌｅＳｔａｔｅマップに、タイル状態データを書き込む。
○ｔｉｌｅＳｔａｔｅ［ｖ］＝ｓｔ
タイル状態データの受信及び書き込みは、大きな状態のために、パイプライン化されることが望ましい。
●最後に、非割り当て要求に対する応答として、アクノリッジ
○応答送信（割り当て／非割り当て）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｏ０）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ０）  Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ
を、要求する所有者ユニットに、割り当て／非割り当てネットワークのスレーブポートを通じて送信する。
要求の割り当て
【０１０１】
そうでなく、下記形式の割り当て要求があった場合：
○要求受信（割り当て／非／割り当て）：Ｓｏｕｒｃｅ＝（ｏ０＝要求する所有者）  Ｔａｇ＝（ｔ０＝タグ）  Ｄｅｓｔ＝ｍｅ  Ｏｐｃｏｄｅ＝ａｌｌｏｃａｔｅ  Ｖｔｉｌｅ＝（ｖ＝仮想タイル）  Ｐｔｉｌｅ＝（ｐ＝物理タイル）  Ｓｈａｒｅｒ＝（ｐ０＝共有者の物理タイル）
●アトミックに下記を実行：
／／ｐｔｉｌｅ［Ｖ］がＮＵＬＬでなければならない
○ｐｔｉｌｅ［ｖ］＝ｐの設定をする。ｓｈａｒｅｒｓ［ｖ］＝｛ｐ０｝
●この所有者のローカルストレージから仮想タイルの状態データを読み出す
○ｓｔ＝ｔｉｌｅＳｔａｔｅ［ｖ］
●物理タイルｐの新たな状態を、
○要求送信（制御）：Ｓｏｕｒｃｅ＝（要求する所有者＝ｍｅ）  Ｔａｇ＝（ｔ１＝新しいタグ）  Ｄｅｓｔ＝（再構成する物理タイル＝ｐ）  Ｏｐｃｏｄｅ＝ｗｒｉｔｅ＿ｓｔａｔｅ  Ｔｉｌｅｓｔａｔｅ＝（状態データ＝ｓｔ）
を制御ネットワークのマスタポートを通じて物理タイルハーネスｐに送信することによって、書き込む。タイル状態の読み出し及び書き込みは、大きな状態のためにパイプライン化されることが望ましい。
●ｗｒｉｔｅ＿ｓｔａｔｅ＿ｍｅｓｓａｇｅに対するアクノリッジ応答を待つ
○応答受信（制御）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｍｅ）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ１）  Ｏｐｃｏｄｅ＝  ａｃｋｎｏｗｌｅｄｇｅ
この応答を受信した後、仮想タイルｖはｐ上で動作している必要がある。
●応答
○応答送信（割り当て−非割当て）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｏ０）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ０）  Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ
を、割り当て／非割り当てネットワークのスレーブポートを通じて返信する。
排出要求
【０１０２】
下記形式の排出要求があった場合：
○要求受信（割り当て／非割り当て）：Ｓｏｕｒｃｅ＝（ｏ０＝要求する所有者）  Ｔａｇ＝（ｔ０＝タグ）  Ｄｅｓｔ＝ｍｅ  Ｏｐｃｏｄｅ＝ｄｒａｉｎ  Ｖｔｉｌｅ＝（ｖ＿ｓｒｃ＝送信元の仮想タイル）  Ｐｔｉｌｅ＝（ｐ＝物理タイル）
●メッセージ
○要求送信（制御）：Ｓｏｕｒｃｅ＝（要求する所有者＝ｍｅ）  Ｔａｇ＝（ｔ１＝新しいタグ）  Ｄｅｓｔ＝（排出する物理タイル＝ｐ）  Ｏｐｃｏｄｅ＝ｄｒａｉｎ  Ｖｔｉｌｅ＝（送信元の仮想タイル＝ｖ＿ｓｒｃ）
を、制御ネットワークのマスタポートを通じて、物理タイルハーネスｐに送信する。
●排出メッセージに対する応答を待つ
○応答受信（制御）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｍｅ）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ１）  Ｏｐｃｏｄｅ＝（ｗ＝応答オペコード）
ここで、応答オペコードｗは、ａｃｋｎｏｗｌｅｄｇｅ及びｎｅｇａｔｉｖｅ＿ａｃｋｎｏｗｌｅｄｇｅのいずれかである。
●応答
○応答送信（割り当て−非割り当て）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｏ０）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ０）  Ｏｐｃｏｄｅ＝ｗ
を、割り当て／非割り当てネットワークのスレーブポートを通じて返信する。
【０１０３】
割り当て／非割り当てＦＳＭは、逐次依存に従ってソフトウェアパイプライン化され得る。
モニタユニット
【０１０４】
図１５の概略図を参照して、このセクションでは我々は、モニタユニットの内部組織化について、その内部ＦＳＭも含めて説明する。
【０１０５】
モニタユニットは、物理タイルのそれぞれの中の動作状態を検出し、その動作状態を解析し、プリエンプトする新たな物理タイルを要求する所有者に対して、プリエンプトする最適な物理タイルを提案するために、用いられる。各物理タイルは、モニタユニットにその状態を定期的に送信する。Ｎ個の物理タイルを持つシステムでは、これは、［スーパーコンピュータ］で説明したような、通常どおりにチップを横断することも可能な普通のＮ対１不完全バタフライサブネットワークによって行うことができる。しかし、Ｎ対１の一方向性通信を実現する特化したパイプライン化トークンリングネットワークを生み出すことは、より少ないハードウェアしか必要にならない。特化したパイプライン化トークンリングネットワークは、モニタユニットも通過する１次元トーラス（又はリング）ネットワークによって実装され得る。システムリセット時の直後に、システム内の各物理タイルｐに対して、ｐによって所有及び更新されることになるパケットは、リング内に注入され、このタイルｐが動作していないことを最初に示す（すなわち、アイドル）。通常は、各物理タイルは、リング内の次のノードに各入力パケットを転送する。しかし、物理タイルの自身のパケット（ｉｄフィールドが現在の物理タイルに等しいパケット）が通過する場合、パケットは、リング内の次のノードに転送される前に、現在の物理タイルの現在の状態で更新される。モニタは、リング内の最初の物理タイルと最後の物理タイルとの間に配置される。モニタユニットは、最後の物理タイルからパケットを取得し、各物理タイルからのパケットが通過するときにデータ構造を更新し、最初の物理タイルにパケットを転送する。プリエンプトするタイルが要求された場合、モニタユニットは、全ての物理タイルからのデータを解析し、その置換アルゴリズムに従って、プリエンプトする最適なタイルを返す。
【０１０６】
最長未使用時間ポリシーの単純なスケーラブル実装：我々はタイルの真のＬＲＵ置換のためのスケーラブルな基本的なアルゴリズムから始める。我々は、物理タイルの自身のパケットが物理タイルを通過した時点から、その自身のパケットが再び物理タイルを通過した時点までの時間を、物理タイルの時間間隔と呼ぶことにする。少なくとも１サイクルの間物理タイルがアクティブであった各時間間隔が、物理タイルによって「参照」とみなされる（仮想メモリシステム内のデータページを参照したかのように）と仮定すると、最長未使用時間アルゴリズムは、下記のコードに示されるように、二重連結リスト内のＬＲＵ挿入のための下記ソフトウェアアルゴリズムを模倣することによって、シンプルに実装され得る。「ｂａｃｋ」及び「ｆｒｏｎｔ」と呼ばれる２つの番兵（ｓｅｎｔｉｎｅｌ）リストの要素は、二重連結リストの後及び前に配置されている。物理タイルｉについての「参照」は、現在の場所からのノードｉの削除（ｆｌｉｎｋ  ［ｉ］及びｂｌｉｎｋ［ｉ］から読み出して、ｆｌｉｎｋ［ｂｌｉｎｋ［ｉ］］及びｂｌｉｎｋ［ｆｌｉｎｋ［ｉ］］に格納する）、及び、ｆｒｏｎｔのセンチネル要素の直前への物理タイルｉの再挿入（ｆｌｉｎｋ［ｂｌｉｎｋ［ｆｒｏｎｔ］］及びｆｌｉｎｋ［ｉ］及びｂｌｉｎｋ［ｉ］内に格納される。ここで、ｂｌｉｎｋ［ｆｒｏｎｔ］はレジスタ内にキャッシュされる）で構成される。次のように読み出し／格納の数は、次のとおりである：ｆｌｉｎｋ配列からの読み出しを１回、ｂｌｉｎｋ配列からの読み出しを１回、ｂｌｉｎｋ配列への格納を２回、及びｆｌｉｎｋ配列への格納を３回。メモリポート・リソースが許すならば、２回の読み出しをステップ１で並列に行うことができ、その後、５回の格納をステップ２で並列に行うことができる。利用可能なメモリアレイ内のポート数及びタイルの総数に応じて、全体の「参照」操作はわずか数サイクルしか要しないだろう。メモリアレイのポート数は、知られた方法によって、例えばバンクインターリーブによって、及び／又はマルチポート化アレイを用いることによって、増大させることができる。
【表３】
0005958559.tif 000004
内部データ構造
【０１０７】
モニタユニットの内部データ構造は、下記のようである
●上述したようなＬＲＵの二重連結リストを実装するためのｆｌｉｎｋ及びｂｌｉｎｋ配列
●ｖｔｉｌｅ：各物理タイルを、それが含む仮想タイルに、又はこの物理タイルが仮想タイルを含んでいない場合はＮＵＬＬに、マッピングする配列
●ｗｏｒｋｉｎｇ：各物理タイルを、物理タイルが最後の時間間隔でまだ動作していた（アイドルでなかった）ことを示すブール値にマッピングする配列。
物理タイルのｗｏｒｋｉｎｇ属性は、物理タイルがロックされていない場合のみ、統計情報ネットワークからの到来メッセージで更新される。
●ｉｓｆｒｅｅ：各物理タイルをブール値にマッピングする配列。ここで、ｐが現在ロックされてない場合及びその場合にのみ（すなわち、現在構成されていない）、ｉｓｆｒｅｅ［ｐ］はｔｒｕｅである。
【０１０８】
初期化時：ＬＲＵの二重結合リストは、デフォルトの順序に、例えば上記のように物理タイルの順番に、初期化される。全ての物理タイルｐについて、ｖｔｉｌｅ［ｐ］はＮＵＬＬに設定され、ｗｏｒｋｉｎｇ［ｐ］はｆａｌｓｅに設定され、ｉｓｆｒｅｅ［ｐ］はｔｒｕｅに設定される。しかし、アプリケーション・プレースホルダタイルを表す固定された物理タイルｐについては（ｐがプリエンプトされないよう）、ｖｔｉｌｅ［ｐ］はそれぞれのアプリケーションの仮想タイル−１に設定され、ｗｏｒｋｉｎｇ［ｐ］はｔｒｕｅに設定され、ｉｓｆｒｅｅ［ｐ］はｆａｌｓｅに設定される。
モニタＦＳＭ
【０１０９】
モニタＦＳＭは、下記のポートを持つ。
●所有者ユニットに対向するタイル置換ネットワークのスレーブポート。
●物理タイルに対向する上記の統計情報ネットワークのスレーブポート。
この一方向性スレーブポートは、要求のみを受け入れ、応答を返送しない。
【０１１０】
モニタＦＳＭは、永久ループで下記を繰り返し実行する。
●置換タイル選択ネットワークのスレーブポートに下記形式のｔｉｌｅ＿ｒｅｑｕｅｓｔが存在する場合：
●要求受信（置換タイル選択）：Ｓｏｕｒｃｅ＝（ｏ０＝要求している所有者）  Ｔａｇ＝（ｔ０＝タグ）  Ｄｅｓｔ＝ｍｅ  Ｏｐｃｏｄｅ＝ｔｉｌｅ＿ｒｅｑｕｅｓｔ  Ｖｔｉｌｅ＝（ｖ＝所有者がマッピングしようとしている仮想タイル）  Ｒｅｑｕｉｒｅｄ＿ｐｔｉｌｅ＝（ｐ'＝要求された物理タイル）
○要求された物理タイルｐ'がＮＵＬＬでない場合
●ｅｌｉｇｉｂｌｅ＝｛ｐ'｝の設定  ／／モニタはｐ'で応答しなければならない。
○それ以外の場合
●ｅｌｉｇｉｂｌｅ＝プレースホルダのタイルを除く全ての物理タイルのセットの設定
○ＬＲＵ要素（ｆｌｉｎｋ［ｂａｃｋ］）から開始して、（ｉｓｆｒｅｅ［ｐ］  ａｎｄ  ｅｌｉｇｉｂｌｅ［ｐ］）を満足する物理タイルｐが発見されるまで（存在すれば）、順リンク方向にリンクリストを追跡する。
●必要に応じて、複数の空きかつ適格な候補の中からｐを選択するための追加の経験則を適用する。
○そのようなタイルｐが発見されなかった場合（全ての適格な物理タイルがロックされている）
●応答を返信する
■応答送信（置換タイル選択）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｏ０）  Ｔａｇ＝（要求内のものと同じタグ情報＝ｔ０）  Ｏｐｃｏｄｅ＝ｎｅｇａｔｉｖｅ＿ａｃｋｎｏｗｌｅｄｇｅ
○それ以外の場合  ／／ｐは、望ましい特性を満たす物理タイルである
●発見された物理タイルｐを用いてて、応答を返信する
■応答送信（置換タイル選択）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｏ０）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ０）  Ｏｐｃｏｄｅ＝ｔｉｌｅ＿ｒｅｓｐｏｎｓｅ  Ｖｔｉｌｅ＝（ｐにマッピングされた前の仮想タイル＝ｖｔｉｌｅ［ｐ］）  Ｐｉｌｅ＝（所有者に返す物理タイルｐ）
●ｐ上の現在の新たな仮想タイルｖを記憶するためにｖｔｉｌｅ［ｐ］＝ｖの設定。ｗｏｒｋｉｎｇ＝［ｐ］＝ｔｒｕｅの設定。ｉｓｆｒｅｅ［ｐ］＝ｆａｌｓｅの設定（タイルをロック）。
●それがＬＲＵリストの前（最近使用）の位置に移動するようなｐへの参照をシミュレート
●そうでなく、置換タイル選択ネットワークのスレーブポート内に要求がある場合：
●要求受信（置換タイル選択）：Ｓｏｕｒｃｅ＝（ｏ０＝要求する所有者）  Ｔａｇ＝（ｔ０＝タグ）  Ｄｅｓｔ＝ｍｅ  Ｏｐｃｏｄｅ＝ｔｉｌｅ＿ｕｎｌｏｃｋ  Ｐｔｉｌｅ＝（ｐ＝ロック解除する物理タイル）
○ｉｓｆｒｅｅ［ｐ］＝ｔｒｕｅの設定（タイルｐをロック解除）
○アクノリッジ応答を返信する
■応答送信（置換タイル選択）：Ｓｏｕｒｃｅ＝（要求内のものと同じ送信元＝ｏ０）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ０）  Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ
●そうでなく、統計情報ネットワークのスレーブポート内に要求がある場合：
●要求受信（統計情報ネットワーク）：Ｄｅｓｔ＝ｍｅ  Ｏｐｃｏｄｅ＝ｓｔａｔｕｓ＿ｕｐｄａｔｅ  Ｐｔｉｌｅ＝（ｐ＝送信する物理タイル）  Ｗｏｒｋｉｎｇ＝（ｂ＝ブール値）
○物理タイルｐがロックされていない場合（ｉｓｆｒｅｅ［ｐ］がｔｒｕｅ）
●ｗｏｒｋｉｎｇ［ｐ］＝ｂの設定
●ｂがｔｒｕｅである（物理タイルがその時間間隔でアイドルでなかった）場合、ｐを参照してＬＲＵデータ構造（ｆｌｉｎｋ、ｂｌｉｎｋ）を更新。
○統計情報要求に対する応答は必要ない。
●それ以外の場合
○このループの繰り返しにおいて何もしない。
【０１１１】
モニタは、ハイパーバイザ・システムの全体におけるタイル置換率より十分に早く要求に返答することが望ましい。そうでなければ、モニタはハイパーバイザ・システム内のボトルネックになるだろう。段落［０１４３］から始まって説明される最適化は、このスケーラビリティ要件を達成するための方法を記述する。
競合状態の解決法
【０１１２】
本セクションでは我々は、ハイパーバイザの高度な並列実装での５つの重要な潜在的競合状態エラーの概要を示し、本設計によってこれらのエラーが除去される方法を示す。これらの競合状態はまた、好ましい本実施形態でなされる設計上の選択肢を説明するのに役立つだろう。無効化が続くアクセス要求は、無効化が失われる
●イベントの望ましい論理的シーケンス
○最初は、物理タイルｐ１のローカルキャッシュは、仮想タイルｖを含んでいない。
○最初は、仮想タイルｖは、ｖの所有者ｏ１内の物理タイルｐにマッピングされている。物理タイルｐ１は、このマッピングの共有者ではない。
○物理タイルｐ１は、ｖに対するａｃｃｅｓｓ＿ｒｅｑｕｅｓｔをｏ１に送信し、ｐ個の返答を取得する。ｐ１が、ｏ１内の（ｖ→ｐ）マッピングの共有者として定められる。エントリ（ｖ→ｐ）は、ｐ１のローカルキャッシュに追加される。
○ｏ１はその後、ｐ１に「ｖの無効化」を送信し、ｐ１においてローカルキャッシュエントリ（ｖ→ｐ）の削除を引き起こす。
●競合状態エラーを伴う実際のイベントシーケンスを下記に示す
○ｐ１が「ｖのａｃｃｅｓｓ＿ｒｅｑｕｅｓｔ」をｏ１に送信する
○ｏ１が「ｖのａｃｃｅｓｓ＿ｒｅｑｕｅｓｔ」をｐ１から受信する
○ｏ１が「ａｃｃｅｓｓ＿ｒｅｓｐｏｎｓｅ  ｐ」をｐ１に送信する
○ｏ１が「ｖの無効化」要求をｐ１に送信する（ｏ１はｐからｖを非割り当てしている）
○ｐ１が「ｖの無効化」要求をｏ１から受信する（これは不正であり、ｖはｐ１のローカルキャッシュ内に存在しない）。ネットワークは異なる遅延時間を有する場合があり、「ａｃｃｅｓｓ＿ｒｅｓｐｏｎｓｅ  ｐ」のメッセージが遅延する原因となることに注意すること。
○ｐ１が「ａｃｃｅｓｓ＿ｒｅｓｐｏｎｓｅ  ｐ」をｏ１から受信し、そのローカルキャッシュ内に（ｖ→ｐ）を配置する（これは不正であり、最終的には、ｐ１のローカルキャッシュ内にｖがあるべきではない）。
【０１１３】
解決策：ｏ１からｐ１への「ｖの無効化」要求は、（無効化要求によってチェックされる物理タイルハーネスのｌｏｃｋｅｄＤｅｓｔデータ構造によって）ｐ１内でロックされたｖを発見する。ｏ１は、無効化要求のための否定のアクノリッジを取得する。失敗した無効化要求は、その後、ｏ１によって再試行される。
不必要な破棄
【０１１４】
ローカルキャッシュは、ネットワーク遅延によって、所有者のデータ構造の変更後に瞬時に更新されないため、破棄メッセージが通過する時間の間に、（ｖ→ｐ）マッピングがｖの所有者で既に削除され、ｐ１がこのマッピングの共有者として削除され、ｖのために更なる変更が所有者で行われたにもかかわらず、（ｖ→ｐ）に対する破棄要求が、ｐ１によって潜在的に送出されることがあり、その後にネットワーク内で多くの時間を過ごし得る。不正な競合状態を示すイベントシーケンスを、以下に示す：
●最初：（ｖ→ｐ）がｐ１のローカルキャッシュ内に存在している
●最初：ｏ１は、ｖの所有者であり、（ｖ→ｐ）マッピングを持つ
●ｐ１が「ｖの破棄」をｏ１に送信する
●ｏ１が「ｖの無効化」をｐ１に送信する。ｏ１はｐ内のｖを非割り当てし、ｖはｏ１のマップから削除され、ｐ１がｖの共有者ではなくなる。
●ｏ１がｐ'内にｖを割り当て、（ｖ→ｐ'）がｏ１のマップに追加される
●ｏ１は「ｖの破棄」を受信する（これは不正であり、ｐ１からの「ｖの破棄」は、もはや古い要求である）
【０１１５】
解決策：破棄はトランザクション的になされ、それはコミット又はアボートのいずれかである。ｐにマッピングされているｖをｏ１がまだ持っている場合、又は、ｐ１が（ｖ→ｐ）マッピングの共有者でない場合、ｖの破棄は否定のアクノリッジを取得し、破棄要求はノーオペレーションとなるだろう。（場合によっては異なる仮想タイルに対する）別の破棄は、ｐ１のローカルキャッシュにスペースを作る必要がある場合は、ｐ１によって再試行され得る。ｖが非割り当てされた後、仮想タイルｖ宛ての到来メッセージは遅れて到達する。
【０１１６】
明らかに我々は、仮想タイルｖに行くメッセージが、宛先の仮想タイルｖがｐから非割り当てされた後に、物理タイルｐに到達するのは望まない。  これは、ｐでｖに行く全ての未処理のメッセージが、ｖがｐから非割り当てされる前にｐでｖに到達することを、追加の静穏（ｑｕｉｅｓｃｅｎｃｅ）検出ハードウェア（ｏｕｔｓｔａｎｄｉｎｇＢｙＤｅｓｔの未処理メッセージ・カウンタアレイ、及び、アクノリッジが通常の通信メッセージとは逆方向に流れる追加の逆方向サブネットワーク）を用いて保証することによって、解決される。
仮想タイルの移動による、不正なメッセージの並べ替え
【０１１７】
不正なメッセージの並べ替えを表すイベントシーケンスを、以下に示す。
●最初は、仮想タイルｖ１が物理タイルｐ１にあり、仮想タイルｖ２は、物理タイルｐ２上にある
●ｐ１上のｖ１が、ｐ２上のｖ２にメッセージ番号１を送信する
●メッセージ１は、ネットワーク内で遅延する
●ｖ１がｐ１から非割り当てされる
●ｖ１がｐ３に割り当てられる
●ｐ３上のｖ１がｐ２上のｖ２にメッセージ番号２を送信する
●メッセージ２が、メッセージ１より前にｖ２に到達（ｖ１からｖ２へのメッセージが並べ替えられているので、不正である）
【０１１８】
解決策：追加の静穏検知ハードウェア（ｏｕｔｓｔａｎｄｉｎｇＢｙＳｏｕｒｃｅカウンタ、通信ネットワーク内のアクノリッジ・パス）を用いて、ｐ１上のｖ１からのメッセージがネットワークから排出される。すなわち、ｖ１が異なる物理タイルに再割り当てされる前に、メッセージをそれらの宛先に到達させる。（例えば循環待ち／デッドロック状態のために）ｐ１上のｖ１からメッセージを排出することが不可能である場合、その古い未処理のメッセージを排出せずに、ｖ１が旧物理タイルｐ１に再び割り当てられ、その場合、メッセージの並べ替えは生じない。
【０１１９】
例えば、ｖ１が現在どの物理タイルにも割り当てられていない状態で、ｖ１からのメッセージについてのｎｏ．２のアクセス要求が、同一の所有者の入力ＦＩＦＯ内でｖ１へのメッセージについてのｎｏ．１のアクセス要求を待っている等、メッセージを排出しようとした場合に、循環待ち／デッドロック状態が生じ得る。我々は、このデッドロック問題を解決する単純な現在の方法（その未処理の送出メッセージを排出できない場合、その旧物理タイルにｖ１を再割り当てする）を選択した。所有者アクセス要求キュー内でアクセス要求の並べ替えは、この種のデッドロックを回避する別の方法であってよい。
論理的に先のプリエンプションが行われている間に物理タイルが再度プリエンプトされる
【０１２０】
プリエンプションの競合状態を表すイベントシーケンスを以下に示す。
●所有者ユニットｏ１が、プリエンプトし、仮想タイルｖ１を配置するタイルを、モニタに要求する。
●モニタが、空き物理タイルｐ１をｏ１に返す。
●所有者ユニットｏ２が、プリエンプトし、仮想タイルｖ２を配置する物理タイルを、モニタに要求する。
●モニタが、再び物理タイルｐ１（モニタによってｖ１を含むと現在推定されている）を、ｏ２に返す
●ｏ２は先ず、ｐ１からｖ１を非割り当てするようｏ１に要求することによって、ｐ１にｖ２を割り当てようとする（これは不正であり、ｏ１は、ｐ１にｖ１をまだ割り当てていない）。
【０１２１】
解決策：物理タイルｐ１は、モニタによって物理タイルｐ１がｏ１に返された時点で、ロックされる。それは、ｏ１が全ての再構成動作を終えて、この物理タイルｐ１に対する「ｔｉｌｅ＿ｕｎｌｏｃｋ」要求をモニタに送信した場合のみ、アンロックされる。全ての適格なタイルがロックされている場合、モニタはタイル要求に対して否定のアクノリッジを返すので、要求は再試行される。
【０１２２】
ロックしないと、モニタによって同じ物理タイルが繰り返し選択されることは、例えばタイル要求を満たす適格な物理タイルの数が少ない場合に、非常に有り得る。
最適化
【０１２３】
上記の基本的なハイパーバイザとは別に、ハイパーバイザの多様な最適化が可能である。我々は、これらの最適化及び下記の追加機能を列記する。
１．シングルスレッドのソフトウェアアプリケーションから自動的に仮想スーパーコンピュータを取得する
【０１２４】
シングルスレッドのソフトウェアアプリケーションから非仮想（実）スーパーコンピュータを得る方法が、既に参照により組み込まれた同時係属中の、共同所有の米国特許出願［スーパーコンピュータ］内の段落［００３９］のあたりで既に記載されているので、この最適化は容易である。ここで我々は、［スーパーコンピュータ］に対する機能強化を下記のように提供する：
●シングルスレッドのソフトウェアアプリケーションから、実スーパーコンピュータに代えて仮想スーパーコンピュータを生成する、及び、
●本ハイパーバイザ・システム環境内で、得られた（ソフトウェアアプリケーション、仮想スーパーコンピュータ）の対を実行する。
【０１２５】
［スーパーコンピュータ］の概念と本ハイパーバイザ・システムの概念との間で一対一対応が確立されれば、［スーパーコンピュータ］に記載された技術の多くを、本ハイパーバイザ・システムでそのまま使用できる。要求される一対一対応を以下に示す。
●［スーパーコンピュータ］に記載のシングルスレッドのソフトウェアアプリケーション／プログラム（それから（非仮想）スーパーコンピュータが得られる）は、以下に対応する：
○本ハイパーバイザ・システムにおける（ソフトウェアアプリケーション、仮想スーパーコンピュータ）の対のソフトウェアアプリケーション部分
●［スーパーコンピュータ］におけるソフトウェアアプリケーションのプログラム片から得られる（非仮想）スーパーコンピュータは、以下に対応する：
○本ハイパーバイザ・システムにおける（ソフトウェアアプリケーション、仮想スーパーコンピュータ）の対における仮想スーパーコンピュータ
●最後のデザイン分割によって得られた［スーパーコンピュータ］における（非仮想）スーパーコンピュータの各パーティションは、以下に対応する：
○本ハイパーバイザ・システムにおける（ソフトウェアアプリケーション、仮想スーパーコンピュータ）の対における仮想スーパーコンピュータの仮想タイル
●［スーパーコンピュータ］における（非仮想）スーパーコンピュータの各パーティションを実現できるユニオンチップは、以下に対応する：
○本ハイパーバイザ・システムにおける（ソフトウェアアプリケーション、仮想スーパーコンピュータ）の対における仮想スーパーコンピュータの仮想タイルのいずれかを実現できる物理タイル
【０１２６】
［スーパーコンピュータ］の方法により製造されたユニオンチップハードウェアは、下記のように、若干の変更を加えて、本ハイパーバイザ・システムの物理タイルとしての使用に適合される。
【０１２７】
物理タイルを構築するために、［スーパーコンピュータ］の段落［０１６９］−［０１９０］及びＡｐｐｅｎｄｉｘ  Ｋで説明されたチップユニオン化技術が使用される。［スーパーコンピュータ］のユニオンチップは、各チップ内の構成メモリを初期化することによって、システム初期化時に一度構成される。構成メモリは、ユニオンチップによって実現される特定のパーティションを識別する。しかし、ハイパーバイザ・システムでは、各物理タイル（［スーパーコンピュータ］のユニオンチップ）は、オンデマンドで複数回再構成されるだろう。したがって、構成メモリだけでなく、物理タイルのレジスタ及び通常（実行状態）メモリも、読み出し及び書き込みされる必要がある。仮想タイルを停止するためにクロックを停止する単純な方法を用いると仮定すると、物理タイルの再構成は、通常の実行メモリ及び構成メモリ並びにレジスタの、１つ又はそれより多くのスキャンチェーンを通じた書き込みで構成されるだろう。クロックを停止し、レジスタ及びメモリ（構成メモリを含む）を読み出し、レジスタ及びメモリ（構成メモリを含む）に書き込み、最後にクロックを再開するために回路が追加され得る。
【０１２８】
ｎ個のハイパーキューブのリンクを持つ［スーパーコンピュータ］のユニオンチップは、（２ｎ−１）＋１から２ｎ個のチップを持つ実スーパーコンピュータシステムをサポートし、また、その中に、不完全ハイパーキューブの決定論的なルータを含み得る。しかし、ハイパーバイザの物理タイルのために、物理タイル間の分離された通信ネットワークは、既にそのような不完全ハイパーキューブの決定論的なルーティングを持つだろう。従って、ｎ個のリンクを持つ必要はなく、また、物理タイル内で内部ハイパーキューブルーティングを行う必要もない。したがって、物理タイルは簡略化され、その内部Ｉ／Ｏコントローラは、まるでただ１つのキューブの一部であるかのように、唯一の外部通信Ｉ／Ｏリンク（送信ＦＩＦＯインタフェース（アウトバウンド前通信）及び受信ＦＩＦＯインタフェース（インバウンド前通信））を持ち得る。
【０１２９】
［スーパーコンピュータ］の明細書及び特許請求の範囲、並びに本セクションで詳細に説明された技術に基づき、これから、任意のシングルスレッドのソフトウェアアプリケーションを、ハイパーバイザ・システム内に統合され配され得る（上記アプリケーションの変更バージョン、上記アプリケーションをアクセラレートする仮想スーパーコンピュータ）の対に自動的に変換する方法のステップを下に示す。下記の最初の４つのステップは、［スーパーコンピュータ］から直接得られる。下記の方法では、［スーパーコンピュータ］で用いられる用語「ユニオンチップ」は、以下では「ユニオンモジュール」に変更されている。ここではそれ単独でチップではないからであり、代わりに、より大規模なチップ（クラウドビルディングブロック）の一部である物理タイルになっている。
ａ）シングルスレッドソフトウェアアプリケーションからの任意のコードフラグメントを、その実行がそのコードフラグメントのソフトウェア実行と機能的に等価な、カスタム化された非仮想スーパーコンピュータのハードウェアに変換
ｂ）ハードウェア及びアプリケーションのソフトウェア部分上で、
ｉ．コードフラグメントの入口で、ソフトウェアからハードウェアへのプログラム状態転送を実行し、
ｉｉ．コードフラグメントの出口で、ハードウェアからソフトウェアへのプログラム状態転送を実行し、
ｉｉｉ．ソフトウェア及びハードウェアのメモリ間のメモリ・コヒーレンシを維持する
インタフェースを生成する。
ｃ）ステップａ）及びｂ）で得られた非仮想スーパーコンピュータを、複数のモジュールに分割
ｄ）ユニオンモジュールに提供された構成パラメータに依存して、ステップｃ）で生成されたモジュールのいずれかを実現できるユニオンモジュールを生成する。
ｅ）（アプリケーション、仮想スーパーコンピュータ）の対を生成する。ここで、
ｉ．上記対のアプリケーション部分は、ステップｂ）で変更されたシングルスレッドのソフトウェアアプリケーションであり、
ｉｉ．上記対の仮想スーパーコンピュータ部分は、それぞれがステップｃ）で得られたモジュールである複数の仮想タイルで構成される。
ｆ）ステップｅ）の仮想タイルのセット内のいずれかを実現できる物理タイルを生成するために、ステップｄ）のユニオンモジュールの内部状態の書き込み、内部状態の読み出し、停止及び開始のための機能を追加する。
ｇ）ハイパーバイザ内の上記（アプリケーション、仮想スーパーコンピュータ）の対を実現するために、ハイパーバイザ・システム内で、ステップｆ）で得られた物理タイルの少なくとも１つのコピーを統合する。
２．準再構成可能なＡＳＩＣの物理タイル
【０１３０】
我々のハイパーバイザ・システムの好ましい実施形態では、それぞれ重要な顧客アプリケーション用にカスタマイズされた物理タイルの変形版を、ＡＳＩＣ技術で作成できる。また、ＡＳＩＣ技術における別の物理タイルの変形版は、（［スーパーコンピュータ］の第１４４頁から始まる最適化５、段落［００２７４］−［００２７５］並びに図面の６０及び６１において少なくとも説明されているように）「コンパイラで扱いやすい（ｃｏｍｐｉｌｅｒ−ｆｒｉｅｎｄｌｙ）汎用スーパーコンピュータ」の仮想タイルを実現できる。そして、顧客アプリケーションによる計算リソース使用量の予想される割合に基づいて、物理タイルをデータセンター内で分散させることができる。例えば、使用頻度の低い任意のアプリケーションＡの物理タイルを含むクラウドビルディングブロック・チップは、１つだけのラックモジュールに割り当てることができるが、より頻繁に使用されるアプリケーションＢの物理タイルを含むクラウドビルディングブロック・チップはラック全体に配置することができる。残りのラックモジュールは、「コンパイラで扱いやすい汎用スーパーコンピュータのユニオンチップ」を実装する物理タイルで構成される［スーパーコンピュータ］。ＦＰＧＡ技術から構築される物理タイルは、新たな仮想スーパーコンピュータの開発のために（物理タイルのＡＳＩＣ版がリリースされる前に）、データセンター内に含めることもできる。「コンパイラで扱いやすい汎用スーパーコンピュータのユニオンチップ」［スーパーコンピュータ］の物理タイル又はＦＰＧＡの物理タイルのいずれかは、まだＡＳＩＣの物理タイルがないアプリケーション、又はＡＳＩＣの物理タイルの開発が許可されないアプリケーションに使用できる。
【０１３１】
特定アプリケーションについて十分な顧客デマンドが蓄積された場合、マルチプロジェクトウエハ（ＭＰＷ）サービス［２２］が、これらのアプリケーション用の仮想スーパーコンピュータを実現するための新たなＡＳＩＣの物理タイルの少量生産のコストを削減するために使用できる。すなわち、ＭＰＷサービスの各周期実行時に、前回の時間周期で収集し解析した新しい人気の顧客アプリケーションを、実施に組み込むことができる。
【０１３２】
下記の利用可能性
（ｉ）本明細書及び［スーパーコンピュータ］で説明したような、シングルスレッドのアプリケーションをデータセンターのリソースを共有できる仮想スーパーコンピュータに変換するための自動プロセス、及び
（ｉｉ）妥当なコストでＡＳＩＣの物理タイルを少量生産するための少なくとも一つの手段、
（ｉｉｉ）自動化されたＡＳＩＣ設計のためのＲＴＬからＧＤＳ−ＩＩへの変換技術における最近の進歩
は一緒に、ＡＳＩＣの物理タイルに基づいて、エネルギー効率的で高性能なデータセンターを生成するための新しい可能性をもたらす。この一連の考察に続いて、特定用途向けハードウェアにスペースを割り当てるために、適応型特定用途向けハードウェアの寿命管理ポリシーが作成できる。ここでそのポリシーは下記のステップを含む：
ａ）最近の時間間隔にわたって、各（アプリケーション、仮想スーパーコンピュータ）の対の使用頻度を決定する。
ｂ）ステップａ）で決定された最大の使用頻度を持つ（アプリケーション、仮想スーパーコンピュータ）の対を、
○その対がＡＳＩＣの物理タイルにまだマッピングされておらず、
○その対の使用頻度が閾値を超えている
ように探す。
ｃ）ステップｂ）でそのような対を見つけることができた場合、その対のための新たなＡＳＩＣの物理タイルを生成する。
ｄ）ハイパーバイザ・システム内の各ＡＳＩＣの物理タイルについて、
○このＡＳＩＣの物理タイルによって実装された（アプリケーション、仮想スーパーコンピュータ）の平均の使用頻度に、割り当てられるリソースを比例させるために、このＡＳＩＣの物理タイルに割り当てるリソースを増加又は減少させる。
ｅ）上記のステップの全てを定期的に繰り返す。
【０１３３】
（アプリケーション、仮想スーパーコンピュータ）の対の使用頻度は、例えば、最後の期間内において全アプリケーションに費やされた累積時間で、上記対の仮想タイルに費やされた累積時間を割った比率として、測定できる。データセンターに導入されたＡＳＩＣの物理タイルの数は、ＡＳＩＣの物理タイルの平均の使用頻度に比例することが望ましい。しかし、重要なアプリケーションについては、ピーク需要にも対応するために、物理タイルの数は平均のワーキングセットより少し高くすることが望ましい。
【０１３４】
もちろん、データセンターは、新たなハードウェアで永遠に拡大し続けることはできない。時を通じて、アプリケーションの使用頻度は変わるだろう。異なる種類のアプリケーションへのデータセンターのスペースの割り当てを再調整するために、上記のポリシーに従って、より少ない頻度で使用されるＡＳＩＣの物理タイルは、より頻繁に使用されるＡＳＩＣの物理タイルで定期的に置換されてよい。
【０１３５】
「フィールド置換ユニット」を、特別の特定用途向け物理タイルのコピーを同様に持つクラウドビルディングブロック・チップを含むラックモジュールにすることが、より実用的である。データセンター内において使用されなくなった旧式の特定用途向けラックモジュールは従って、新たな顧客アプリケーションのための特定用途向けラックモジュールによって、徐々に置き換えられるだろう。
【０１３６】
リリースされるＡＳＩＣチップ数を減少させるがチップサイズを増加させる物理タイルを配置する別の方法は、シングルチップの種類、すなわち、より大規模なクラウドビルディングブロック・チップ、例えばＡを実装するいくつかの物理タイル、Ｂを実装するいくつかの他の物理タイル、ＦＰＧＡ技術を実現するいくつかの物理タイル、及び「コンパイラが扱いやすい汎用スーパーコンピュータのユニオンチップ」［スーパーコンピュータ］を実現する残りの物理タイルを持つチップを作成することである。この場合、この大きなクラウドビルディングブロック・チップ上のスペースを、チップの何世代にもわたって同様の特定用途向けハードウェアの寿命管理ポリシーを用いてアプリケーションに割り当てることができる。クラウドビルディングブロックの各世代はしたがって、クラウドビルディングブロック・チップの古い世代が旧式になるように、対象の顧客コミュニティにとって現在重要である考えられる用途のために調整される。
３．オペレーティングシステムの仮想化
【０１３７】
単にスーパーコンピュータによってアクセラレートされるユーザアプリケーションとは対照的に、スーパーコンピュータによってアクセラレートされる全体のオペレーティングシステム（ＯＳ）を仮想化するために、基本的なハイパーバイザ・システムにいくつかの変更を加えるだけで十分である。
●ＯＳのための仮想スーパーコンピュータ内のローカル仮想タイル０が予約されるだろう。それは、ＯＳを実行する汎用商品のマイクロプロセッサを含むだろう。ローカル仮想タイル０のマイクロプロセッサは、システム内の他のハードウェアユニットと、ＤＲＡＭユニットへのアクセスパスを共有してよい、又は、独自のメモリを有してよい。ローカル仮想タイル０は、本明細書のハイパーバイザ・システムに以前に記載された標準の仮想タイル間メッセージだけで、その環境と通信する。したがって、ＯＳは、高速ネットワークアクセスだけを使用して、簡略化されたＩ／Ｏシステムを実現し得る。
●アプリケーション・プレースホルダのローカル仮想タイル１（元々はホストプロセッサシステムへのＰＣＩ  Ｅｘｐｒｅｓｓ接続を持つ）は、インターネットへの高速イーサネット（登録商標）接続を持ち、同じく−１の番号が振られたＯＳのプレースホルダのローカル仮想タイルに置換される。ＯＳのプレースホルダの仮想タイルは、最初にイーサネット（登録商標）接続を持つ適切な物理タイルに割り当てられ、システムリセット時にその物理タイルに固定される。それは非割り当てされないだろう。
○イーサネット（登録商標）接続は、特定のオペレーティングシステム・インスタンスのために予約されているメインＩＰアドレスに応答し、ローカル仮想タイル０で実行されているＯＳとメッセージ交換するために使用されるだろう。
○イーサネット（登録商標）接続は、レガシーＯＳソフトウェアレイヤを介さずにハードウェア・アクセラレートされた高速なインターネット通信を実現するために、ローカル仮想タイル０以外の仮想スーパーコンピュータの選択された仮想タイルとメッセージを交換するために予約されたセカンダリＩＰアドレスに応答もするだろう。この直接のインターネットアクセス能力は、例えばＷｅｂサービスのための、高速なパイプライン化されたカスタマイズされたハードウェアエンジンを作成するために重要である。
●一つは、標準のＰＣＩ  Ｅｘｐｒｅｓｓ接続を維持し、ＰＣＩ  Ｅｘｐｒｅｓｓに接続されたホストコンピュータ上のソフトウェアアプリケーションに、プライマリ及びセカンダリ・インターネット接続をシミュレートさせることができる。これは、仮想ハードウェア・アクセラレートされたＯＳを、商品ホストコンピュータ及び商品ＯＳ内に埋め込まれた普通のソフトウェアアプリケーションに見えるようにするだろう。
【０１３８】
ここでは、仮想ハードウェア・アクセラレートされたＯＳの動作のいくつかの例を示す。ＯＳのプレースホルダタイルのイーサネット（登録商標）接続では、メインＩＰアドレス宛のインバウンドＩＰパケットは、ローカル仮想タイル１からローカル仮想タイル０への標準の仮想タイル間メッセージに変換される。ローカル仮想タイル０からローカル仮想タイル−１に送信された標準メッセージのペイロードは、メインＩＰアドレスを用いて、ＯＳのプレースホルダタイルによってアウトバウンドＩＰパケットとして送出される。０とは異なる指定されたローカル仮想タイルはまた、ローカル仮想タイル１とメッセージを交換することにより、インターネットと直接通信できる。ローカル仮想タイル１は、イーサネット（登録商標）接続のセカンダリＩＰアドレスを用いて、０とは異なる指定されたローカル仮想タイルに、受信したインバウンドメッセージを転送するだろう。また、０とは異なる指定されたローカル仮想タイルから到来するアウトバウンドメッセージは、イーサネット（登録商標）接続のセカンダリＩＰアドレスを用いて、ローカル仮想タイル−１によってインターネットに送信されるだろう。
【０１３９】
システム初期化時には、ローカル仮想タイル０の保存された初期状態は、リモートのメインコンソールからの入力を待つ、まさにブートアップされたＯＳを表すことができる。そして、他の全ての仮想タイルの保存された初期状態は、開始するためにＯＳソフトウェアからのメッセージを待つ、アイドル状態になることができる。ＯＳを実行しているローカル仮想タイル０のマイクロプロセッサが、ユーザアプリケーション又はカーネルコード内のいずれかにおいて、アクセラレートされたコードフラグメントに到達すると、仮想タイル０は他の仮想タイル（例えば、仮想タイル１）とメッセージを交換し、こうして実際のハードウェア・アクセラレーションを開始する。
【０１４０】
そのシステムを用いる例として、性能重要部のＷｅｂサービス（例えば株価サービス等）が、この方法でアクセラレートされ得る。アクセラレートされたＷｅｂサービスは、仮想ＯＳ内のユーザプログラムのように現れるだろう。ここでユーザプログラムは、セカンダリ・インターネット接続の排他的な使用権を持ち、したがって、ネットワークアクセスのためのＯＳの全てのレガシーソフトウェアのオーバーヘッドは、全体として、完全なＷｅｂサービスのアクセラレーションを務める並列パイプライン化されたハードウェアによって置換され、バイパスされるだろう。ユーザ／カーネルモードの切り換えによる頻繁なシリアライゼーションは除去されるだろう。Ｗｅｂサービスを実装する仮想スーパーコンピュータのハードウェアリソースは、仮想タイル単位で時間と共に少しずつ増加又は減少され得る。こうしてクラウドコンピューティング要件を満たす。
【０１４１】
このアプローチは、仮想スーパーコンピュータを用い、重大なカーネル及びアプリケーションコードフラグメントのハードウェア・アクセラレーションを通じて、性能を高めることができる。
【０１４２】
オペレーティングシステムの特定用途向けハードウェア・アクセラレーションの関連するいくつかの困難性（例えば、ページフォールト、外部及びタイマ割り込み、特権カーネルコードを含む正確な例外（ｐｒｅｃｉｓｅ  ｅｘｃｅｐｔｉｏｎｓ））は、［スーパーコンピュータ］の第１６１頁から始まる最適化１２及び第１６６頁から始まる最適化１３で対処されている。すなわち、ハードウェア・アクセラレーションを実現し、しかも元のＯＳソフトウェア商品とのバイナリ互換性を保持できる。
４．モニタユニットのための代替の物理タイル置換アルゴリズム
【０１４３】
基本的なバージョンのモニタユニットは、比較的に単純な物理タイル置換アルゴリズム（最長未使用時間アルゴリズム）を実行する。より高度な物理タイル置換アルゴリズムを導入した場合、モニタユニットはシステム性能を高めることができる。
【０１４４】
より一般的な置換ポリシーとして、各物理タイルには、物理タイルの属性、物理タイルに割り当てられる仮想タイルの属性及び他のいくつかのシステム属性の数の加重和であるヒューリスティック評価が割り当てられ得る。最高のヒューリスティック評価を得た物理タイルは、置換する最良の物理タイルであると定められる。
【０１４５】
監視アルゴリズムの例を以下に示す。置換タイルに対する要求に応じて、
●各物理タイルについてのヒューリスティック評価は、リソースが許す限り並列に計算される。
●監視された最高評価の物理タイルのインデックスが計算される。これは「最大要素のインデックス」ツリー回路で、Ｎ個の物理タイルに対してＯ（ｌｏｇ２（Ｎ））ステージ内で行える。ここで、各ツリーノードは関数ｆ：ｆ（（ｉ１，ｖａｌ１），（ｉ２，ｖａｌ２））＝（ｖａｌ１＜ｖａｌ２？  （ｉ２，ｖａｌ２）：（ｉ１，ｖａｌ１））を計算する。ツリー計算は最後の対（ｉ、ｖａｌ）を生じるだろう。ここで、ｉは、ｖａｌに等しい最高のヒューリスティック評価を持つ物理タイルのインデックスである。
●前のステップで最高のヒューリスティック評価を与えた物理タイルのインデックスが、プリエンプション／置換されるタイルとして返される。
【０１４６】
並列実装を高速化するためのいくつかの選択肢が存在する。例えば、
●非常に頻繁に生じるタイルのプリエンプト要求を処理するために、ヒューリスティック値の計算は、ｋ個の連続する要求で共有され得る。最初の要求は、非監視対象の物理タイルのインデックスが、それらのヒューリスティック評価でソートされることをもたらす。ｋ個の要求のうち最初の要求は、最高評価のタイルを返し、次の要求は、次に最高のものを返す、等をすることができる。ｋ個の要求が受信された後、又は時間間隔が経過した後、いずれか早い方において、ヒューリスティック評価が再計算され、次のｋ個の要求のセットが、同様にサービスされる。
●モニタユニットに到達するネットワーク遅延を削減するために、モニタユニットの複数の冗長コピーをシステム内で分散させることができる。
●例えばＡＳＩＣを要求しているもの等の、特定の仮想タイルとともに、仮想タイルｖが与えられると、物理タイルのサブセットだけがそれを受け入れるのに適切である。この場合、ヒューリスティック評価は、適格な物理タイルだけに制限する必要がある。
●物理タイルは分割でき、異なるモニタユニットは、物理タイルの１パーティション中だけから物理タイルを選択するように制限できる。これは、各パーティションのモニタユニットが独立かつ並列に動作することを可能にする。
【０１４７】
潜在的な各置換タイルのヒューリスティック評価は、下記を代表的な機能とする数値測定値の加重和に基づくことができる。
【０１４８】
ハードウェア・アクセラレートされたアプリケーションの仮想タイルの間の通信遅延の削減：全ての（アプリケーション、仮想スーパーコンピュータ）の対は、１つの又は１つより多い仮想タイルのワーキングセットを持つ。ワーキングセット内の仮想タイルの間の通信遅延を低減するために、以下のルールが適用されることが望ましい。（ｉ）最初の仮想タイルの割り当て：可能ならば、およそワーキングセットのサイズ（同じアプリケーションの以前の実行をプロファイリングすることによって得られる）の、互いに近接した物理タイルのセットが、この（アプリケーション、仮想スーパーコンピュータ）の対のために予約される。最初の仮想タイルは、好ましくは、予約されたセット内の物理タイルに割り当てられる。（ｉｉ）通常動作中における仮想タイルの割り当て：仮想タイルは、好ましくは、同じ仮想スーパーコンピュータに現在属している物理タイルに近い、予約されたセット内の物理タイルに割り当てられる。
【０１４９】
より高度な置換ポリシーの実装：物理タイルからのステータス更新メッセージに基づき、モニタユニットは、真性のＬＲＵ置換ポリシーを、それがうまく機能する場合は、使用し続けることが望ましい。モニタユニットはまた、専用ハードウェアのサポートによって、最小頻度使用（Ｌｅａｓｔ  Ｆｒｅｑｕｅｎｔｌｙ  Ｕｓｅｄ）等の代替の置換ポリシーを用いることができ、タイルスラッシング／低再利用（ｌｏｗ  ｒｅｕｓｅ）が検出されたときに、低再利用に強い防御的な交換ポリシーに切り替えることができる。
【０１５０】
物理タイルの再利用：物理タイルの再構成のオーバーヘッドを回避できる。仮想タイルの状態は、（仮想タイルの機能を指定する）構成状態及び（レジスタ及びＳＲＡＭを含む現在の実行状態である）メモリ状態で構成される。新たな仮想タイルを割り当てる必要があるときはいつも、モニタユニットは、新たな仮想タイルの構成状態で既に構成された物理タイルを選択することが望ましい。
【０１５１】
サービス水準合意（ＳＬＡ）を優先：モニタは、サービス水準合意に基づき、ハードウェア・アクセラレートされたアプリケーションを区別できる。「ゴールドカスタマー」ＳＬＡを持つアプリケーションの仮想タイルに割り当てられている物理タイルは、「シルバーカスタマー」又は「ブロンズカスタマー」ＳＬＡを持つアプリケーションの仮想タイルによって使用されていたものと比較すると、非割り当てされる確率が小さいことが望ましい。より複雑なＳＬＡルール、例えば様々なレベルの性能低下に対する課徴金を含むものはまた、データセンターのオペレータの損失の最小化を試みるために、ヒューリスティック評価の計算に織り込まれ得る。
【０１５２】
他の最適化、例えば
●エネルギー割当量を超えた物理タイルを停止し、仮想タイルを再び実行する対象になる前に冷ますことを可能にすること、
●競合を減らすために仮想スーパーコンピュータの全体を停止し、後に競合が収まったときに再開すること等、
更に、いくつかの他のオペレーティングシステム又はハイパーバイザ・スケジューリング技術が、モニタユニット及び所有者ユニット内の適切な設計変更と共に、並列ハードウェアで実現できる。
５．仮想タイル移行中のデータコピーの回避
【０１５３】
［スーパーコンピュータ］内の非仮想スーパーコンピュータの設計に従って、仮想タイル（すなわち、元の非仮想スーパーコンピュータのデザインパーティション）によって行われるＤＲＡＭメモリアクセスが、常にその仮想タイルの近くのローカルのＤＲＡＭユニットに送られることに注意すること。仮想スーパーコンピュータは、このように仮想タイル中で独自の低レベルのＤＲＡＭデータ共有、例えばメモリコヒーレンスを、仮想タイル間で送信されるアプリケーション通信メッセージを通じて、処理する。保存される仮想タイル状態が、仮想タイルの現在の実行状態を定める、仮想タイルのＳＲＡＭ及びレジスタと、仮想タイルの機能を定める構成メモリとを含むことは明らかである。仮想タイルの実行状態はまた、仮想タイルのローカルのＤＲＡＭユニット内のデータ構造を含む。ローカルのデータ構造は、ハイパーバイザストレージ内の仮想タイルが保存されている旧物理タイルの近くのローカルのＤＲＡＭ内の領域から読むことができ、後にハイパーバイザストレージから、新たな物理タイルの近傍のローカルのＤＲＡＭ内の領域に、復元され得る。仮想スーパーコンピュータの互いの適切なメモリ保護（例えばメモリ領域範囲チェック等）が行われる必要がある。このアプローチは、元の非仮想スーパーコンピュータの動作を、ハイパーバイザ・システム上で正確に再現する。タイルの移動が頻繁に生じる場合、物理タイルはアクセスする必要があるＤＲＡＭユニットの近くに常にとどまっているので、この状態をコピーするアプローチは単純であり、そのうえ高い性能を持つ。
【０１５４】
しかし、状態の保存及び復元がＤＲＡＭ内のデータ構造にとって遅すぎる場合、ハイパーバイザ・システム内のＤＲＡＭリソースは、単一のシステム全体のバンクインターリーブ・共有メモリとして統合できる。この場合に、仮想タイルｖ１は、ＤＲＡＭにアクセスするとき、（好ましくは、ｖ１が割り当てられた最初の物理タイル近くのＤＲＡＭユニット内の）「ｖ１のローカルのＤＲＡＭ」のために予約された全体のハイパーバイザ・システム内の固定されたメモリ領域にアクセスするだろう。ｖ１が物理タイルから非割り当てされ、後に異なる物理タイルに割り当てられた場合、最初の物理タイルによって変更された「ｖ１のローカルＤＲＡＭ」メモリの状態は、ｖ１が移動する２番目の物理タイルが利用できるようにしなければならないが、ＤＲＡＭの状態がコピーされる必要はない。仮想タイルは、その新たな物理タイルから、同じＤＲＡＭメモリ領域をアクセスし続けるだろう。この場合、物理タイルと、それがアクセスする必要があるＤＲＡＭユニットとの間の距離を減少させることは、モニタによって使用される発見的手法の一つであろう。
６．異なる（アプリケーション、仮想スーパーコンピュータ）対の間の隔離
【０１５５】
本明細書の主な設計では、我々は常に、全ての仮想スーパーコンピュータからのメッセージが統一的な方法でルーティングされ得るよう、（このアプリケーションの仮想スーパーコンピュータ内のアプリケーションＩＤ、ローカル仮想タイル番号）の対として、仮想タイルを扱った。セキュリティを高めるために、仮想タイルを形成する対のアプリケーションＩＤ部分は、仮想スーパーコンピュータによって読み出される又は書き込まれるべきでは全くない。仮想スーパーコンピュータは、同じ仮想スーパーコンピュータの仮想タイルとだけ通信する必要がある。これは、前通信メッセージによることを除いて仮想タイルがアクセスできない、物理タイル内の仮想タイルの周りの内部物理タイルハーネスと呼ばれるラッパモジュールを生成することによって、行うことができる。内部物理タイルハーネスは、アプリケーションＩＤレジスタを含む。リセット時、通常の物理タイルのアプリケーションＩＤレジスタは、ＮＵＬＬに設定される。ｗｒｉｔｅ＿ｓｔａｔｅ要求が物理タイルに到達した場合、アプリケーションＩＤレジスタは、書き込まれる状態データ内の「アプリケーションＩＤ」部分から書き込まれる。インバウンド前通信メッセージが物理タイルに到達すると、各グローバル仮想タイルフィールドのアプリケーションＩＤ部分は、アプリケーションＩＤレジスタに等しいことが検査され、その後にローカル仮想タイル番号のみを残して除去される。アウトバウンド前通信メッセージについて、アプリケーションＩＤは、仮想タイルから出ていくメッセージのローカル仮想タイル番号フィールドのそれぞれに予め付加される。
【０１５６】
実際には、内部物理タイルハーネスを実装するためには、仮想スーパーコンピュータ内のローカル仮想タイル番号から、全ての仮想スーパーコンピュータの全ての仮想タイルを含むグローバル仮想タイル番号へのマップと、その逆マップのみで十分である。
【０１５７】
例えば、代替的に、仮想スーパーコンピュータのローカル仮想タイルが、異なる仮想スーパーコンピュータの領域が重複しないグローバル仮想タイル空間の連続領域にマッピングされると仮定すると、アプリケーションＩＤレジスタの代わりに、独自の仮想タイルベースレジスタを使用することができる。ここで、インバウンド前通信メッセージを受信する場合に、仮想タイルベースは、対応するローカル仮想タイルを得るためにグローバル仮想タイルから取り去られ、アウトバウンド前通信メッセージを送信する場合に、仮想タイルベースは、グローバル仮想タイルを得るためにローカル仮想タイルに追加される。仮想タイルベースレジスタは、各ｗｒｉｔｅ＿ｓｔａｔｅの要求時に書き換えられるだろう。
【０１５８】
ホストマシン上で実行されている各ユーザレベルのソフトウェアアプリケーションが、自身の仮想スーパーコンピュータのローカル仮想タイルとだけメッセージを交換するために、そのＯＳによってどのように制約され得るかについては、次のセクションもまた参照すること。
７．仮想スーパーコンピュータの実行の終了及び開始
【０１５９】
我々が（ソフトウェアアプリケーション、仮想スーパーコンピュータ）の対をハイパーバイザ・システムに挿入する方法、又は、（ソフトウェアアプリケーション、仮想スーパーコンピュータ）の対をハイパーバイザ・システムから削除する方法に言及しなかったことに注意すること。したがって、これまでに説明したシステムは、「承認済み」（アプリケーション、仮想スーパーコンピュータ）の対の固定されたセットで連続実行するクラウドコンピューティングシステムに適している。
【０１６０】
ここで、ハイパーバイザ・システム内における新たな（アプリケーション、仮想スーパーコンピュータ）の対の生成、及び、そのような対の消滅のための方法を説明する。
【０１６１】
ハードウェアデザインにおいてセキュリティリスクを低減するために（例えば［２３］を参照すること）、我々は、認証されたツールを使って生成された仮想タイルの、暗号法的に署名された初期状態を生成し、それらが使用される前に、全ての仮想スーパーコンピュータの全ての仮想タイルの初期状態を登録することを勧める。仮想タイルを登録することは、仮想タイルの初期状態の署名の有効性をチェックして、その初期状態をハイパーバイザストレージに移動することを意味する。
【０１６２】
ここで、特徴的なアプリケーション及びその仮想スーパーコンピュータ（スーパーバイザと呼ばれる）が採用されるだろう。  スーパーバイザのアプリケーションは特権的である：スーパーバイザのアプリケーションは、仮想スーパーコンピュータ内に仮想タイル−１以外の仮想タイルを持っていないが、任意の仮想スーパーコンピュータの任意の仮想タイルとメッセージを交換できる。内部タイルハーネスの保護は、スーパーバイザのためにディセーブルされる。新たな仮想スーパーコンピュータの登録は、セキュアホストコンピュータへの専用のＰＣＩ  Ｅｘｐｒｅｓｓ接続、又は信頼されたリモートサーバへの暗号化されたインターネット接続を用いて行われる。登録は、アウトバウンド前通信ネットワークを通じて、スーパーバイザの仮想スーパーコンピュータのタイル−１から下記のメッセージを送信することによって、ハイパーバイザストレージ内に新たに導入された各仮想スーパーコンピュータの各仮想タイルｖのクリーンな初期状態を挿入することで、構成されている。
●要求送信（アウトバウンド前通信）：Ｏｐｃｏｄｅ＝ｃｏｍｍｕｎｉｃａｔｅ  Ｖｄｅｓｔ＝（宛先の仮想タイル＝ｖ）  Ｖｓｏｕｒｃｅ＝（スーパーバイザの仮想タイル−１）  Ｐａｙｌｏａｄ＝（Ｏｐｃｏｄｅ＝ｒｅｇｉｓｔｅｒ  Ｔｉｌｅｓｔａｔｅ＝（仮想タイルｖ'の初期内容））
【０１６３】
システム初期化時には、物理タイル内に固定され、信頼されるサーバとのメッセージ交換ゲートウェイとして機能するスーパーバイザのスーパーコンピュータの仮想タイル−１は、アプリケーションの仮想タイルｖにメッセージを送信しようとするだろう。宛先の仮想タイルは初期には物理タイルに割り当てられていないため、ローカル１次キャッシュミスが、スーパーバイザの仮想タイル−１の物理タイルハーネス内で生じるだろう。この場合、スーパーバイザの仮想タイル−１の物理タイルハーネスは、（ｉ）それがスーパーバイザを実行しており、（ｉｉ）「ｒｅｇｉｓｔｅｒ」のオペコードがメッセージペイロードに存在することを認識し、ルックアップネットワークを通じて、全体の「ｒｅｇｉｓｔｅｒ」メッセージを仮想タイルｖの正しい所有者に、次のように転送するだろう。
●要求送信（ルックアップ）：Ｓｏｕｒｃｅ＝（ｐ０＝スーパーバイザの仮想タイル−１の物理タイル）  Ｔａｇ＝（ｔ０＝新しいタグ）  Ｄｅｓｔ＝（仮想タイルｖの所有者）  Ｏｐｃｏｄｅ＝ｒｅｇｉｓｔｅｒ  Ｔｉｌｅｓｔａｔｅ＝（仮想タイルｖの初期状態）
【０１６４】
仮想タイルｖの所有者ユニットは、登録（ｒｅｇｉｓｔｅｒ）要求に対して、下記によって応答するだろう。
●仮想タイルの初期状態のクリーンな読み出し専用のコピーとして、与えられた仮想タイルのコンテンツを（同じ所有者ユニット内の割り当て／非割り当てＦＳＭを用いて）ストレージに書き込み、
●スーパーバイザの仮想タイル−１の物理タイルハーネスに、アクノリッジ
○応答送信（ルックアップ）：Ｓｏｕｒｃｅ＝（要求内のものと同じソース＝ｐ０）  Ｔａｇ＝（要求内のものと同じタグ＝ｔ０）  Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ
を返信し、更なるアクションはない。
【０１６５】
ｖの所有者からアクノリッジを受信すると、スーパーバイザの物理タイルハーネスは、登録動作を完了しているであろう。その後、アクノリッジメッセージは、その物理タイルハーネスからスーパーバイザの仮想タイル−１を含む物理タイルに、下記のようにループバックされる。
●要求送信（インバウンド前通信）：Ｏｐｃｏｄｅ＝ｃｏｍｍｕｎｉｃａｔｅ  Ｖｄｅｓｔ＝（スーパーバイザの仮想タイル−１）  Ｖｓｏｕｒｃｅ＝（スーパーバイザの仮想タイル−１）  Ｐａｙｌｏａｄ＝（Ｏｐｃｏｄｅ＝ａｃｋｎｏｗｌｅｄｇｅ）
【０１６６】
スーパーバイザは、各登録要求に対してアクノリッジを受信したならそのときは、その登録が完了とみなすことができる。登録の結果、任意の（アプリケーション、仮想スーパーコンピュータ）の対が最初に開始された場合に、仮想タイルの初期状態のクリーンな読み出し専用のコピーがハイパーバイザストレージ内に既に存在することになる。ユニオンチップのＡＳＩＣの物理タイルを通じて実装された仮想タイルの初期コンテンツは、物理タイルの構成メモリのコンテンツとなり得る。物理タイルがＦＰＧＡで実装される場合、初期状態は、ＦＰＧＡの構成ビットストリームになり得る。
【０１６７】
任意の時間にハイパーバイザ・システムで実行しているアプリケーションの複数のインスタンスがあっても、任意のアプリケーションの仮想タイルの初期状態の１つのコピーのみを保存することは意味を成す。この目的のため、同じアプリケーションの任意のインスタンスｎのアプリケーションＩＤが与えられると、任意のアプリケーションのインスタンス０についてのアプリケーションＩＤを抽出する単純な関数を作成すれば十分である。例えば、インスタンスＩＤはアプリケーションＩＤの下位ビットにしてよく、したがって、インスタンス０の場合は下位ビットが０になりる。アプリケーションコードは、アプリケーションＩＤフィールドを直接に読み出す又は書き込む権限を持たないことが望ましく、ローカルに番号付けされた仮想タイルだけとメッセージを交換する必要がある。この制限を安全に実装するために、アプリケーションのアプリケーションＩＤは、自動的に、結びつけられたハイパーバイザ・システムとのメッセージ交換のための軽量システムコールによって、アプリケーションからハイパーバイザ・システムに行く各メッセージの先頭に付加される。このようにして、アプリケーションのインスタンスは、自身の仮想スーパーコンピュータの仮想タイルとだけメッセージを交換するように制限され、自身のアプリケーションＩＤを知る又は変更することができないだろう。
【０１６８】
与えられた（アプリケーション、仮想スーパーコンピュータ）の仮想タイルが物理タイルに最初に割り当てられた時、仮想タイルの書き込み可能状態が失われる。この場合、所有者ユニット内の割り当て／非割り当てＦＳＭは、同じアプリケーションのインスタンス０についてのこの仮想タイルのクリーンな読み出し専用の状態から設定情報をコピーすることによって、アプリケーションのこのインスタンスのこの仮想タイルについての書き込み可能な初期状態を生成し、仮想タイル状態の書き込み可能な部分（レジスタ、メモリ）をデフォルトの初期値に設定するだろう。そのため、（アプリケーション、仮想スーパーコンピュータ）の対が開始した場合に、仮想タイルを初期化するために特別な動作は必要ない。
【０１６９】
しかし、（アプリケーション、仮想スーパーコンピュータ）の対が終了すると、それに割り当てられたハイパーバイザのリソース（依然として実行されている物理タイル、ハイパーバイザストレージ内に保存された仮想タイルの書き込み可能な状態）が開放されなければならない。これは、仮想スーパーコンピュータの各仮想タイルｖについて、ソフトウェアアプリケーションから、ソフトウェアアプリケーションが終了する直前に、同じアプリケーションの仮想タイル−１からの下記の（ユーザレベルの非特権の）メッセージを発行することで達成できる：
●要求送信（アウトバウンド前通信）：Ｏｐｃｏｄｅ＝ｃｏｍｍｕｎｉｃａｔｅ  Ｖｄｅｓｔ＝（仮想タイル＝ｖ）  Ｖｓｏｕｒｃｅ＝（アプリケーションの仮想タイル−１）  Ｐａｙｌｏａｄ＝（Ｏｐｃｏｄｅ＝ｔｅｒｍｉｎａｔｅ）
【０１７０】
（例えば、ＵＮＩＸ（登録商標）系システムにおけるａｔｅｘｉｔコールを用いて、これらのメッセージがソフトウェアアプリケーション内でトリガされ得る）。
【０１７１】
アプリケーションについてのアプリケーション・プレースホルダタイルの物理タイルハーネスは、メッセージが終了（ｔｅｒｍｉｎａｔｅ）要求を含むことを理解し、仮想タイルｖの物理タイルへのマッピング、ルックアップネットワークを通じたインスタンス及び現在のアプリケーションの仮想タイルｖの所有者への終了（ｔｅｒｍｉｎａｔｅ）メッセージの転送のため、ローカル１次キャッシュミスが生じたかのように動作する。次に所有者は、割り当て／非割り当てＦＳＭに終了要求を転送し、次に割り当て／非割り当てＦＳＭは、仮想タイルｖが物理タイルｐに割り当てられているかチェックしてその場合はｓｈｕｔｄｏｗｎ＿ａｎｄ＿ｒｅａｄ＿ｓｔａｔｅコマンドを物理タイルｐに発行し、状態を破棄する。仮想タイルｖが割り当てられているか否かに関係なく、割り当て／非割り当てＦＳＭはまた、仮想タイルｖについての書き込み可能な状態を、そのような書き込み可能な状態のレコードが存在する場合には、ハイパーバイザストレージから削除する。その結果、この仮想スーパーコンピュータの全ての仮想タイルが非割り当てされ、この仮想スーパーコンピュータの全ての書き込み可能なタイル状態が、ハイパーバイザストレージから削除されることになる。こうして仮想スーパーコンピュータの終了を実現する。
【０１７２】
ローカル仮想タイル１の物理タイルハーネスは最終的に、ソフトウェアアプリケーションが、仮想スーパーコンピュータの動作の完了を、そのプロセスが終了する前に確認できることを保証するために、終了（ｔｅｒｍｉｎａｔｅ）メッセージに対応する、アプリケーションに戻るアクノリッジメッセージを返信する。
８．異種の物理タイル
【０１７３】
アプリケーション・プレースホルダの物理タイルのアイデアは、Ｍ＞ＮのアプリケーションをサポートするＮ個のＰＣＩ  Ｅｘｐｒｅｓｓ接続に、容易に一般化することができる。例えば、一対のアプリケーションＡのインスタンスとアプリケーションＢのインスタンスとの両方が、同じホストプロセッサ上で実行しており、同じＰＣＩ  Ｅｘｐｒｅｓｓ接続を用い、それらの３つのそれぞれの仮想スーパーコンピュータと通信している場合、アプリケーションＡの２つのインスタンスのためのアプリケーション・プレースホルダの仮想タイル−１も、アプリケーションＢのためのアプリケーション・プレースホルダの仮想タイル−１も、この単一のＰＣＩ  Ｅｘｐｒｅｓｓ接続に結びつけられた単一の物理タイル上に実装されてよい。システムは、１つの単一の物理タイル内に３個のアプリケーション・プレースホルダのサブタイルが実装されているかのように動作する。
【０１７４】
より一般的には、１つより多い仮想タイルが、単一の物理タイル内のサブタイル内に割り当てられ得る。
【０１７５】
サブタイルを含むハイパーバイザ・システムでは、下記の変更が必要になる。
【０１７６】
物理タイルハーネス内におけるローカルキャッシュ、及び、物理タイルに仮想タイルをマッピングするための所有者のデータ構造は、仮想タイルから（物理タイル、サブタイル）の対へのマッピングになることとなる。モニタは、プリエンプトする（物理タイル、サブタイル）の対を提供することになる。メッセージ内の物理タイルの送信元及び宛先フィールドも、（物理タイル、サブタイル）の形式の対に変更されることになる。しかし、物理タイルハーネスからのルーティング及び物理タイルハーネスへのルーティング（例えば、通信、制御及びルックアップネットワーク内）は、依然として（物理タイル、サブタイル）対の物理タイル部分に基づいて行われることになる。（物理タイル、サブタイル）に行くインバウンドメッセージが物理タイルハーネスに一旦入り、その後インバウンド前通信チャネル、又は前制御チャネルに到達すると、宛先のサブタイル部分は、物理タイル内の指定された宛先サブタイルに到達するまで、物理タイル内の内部ルーティングの目的のためにメッセージ内に保持されなければならない。アプリケーションＩＤレジスタを仮想タイルから隠すための内部タイルハーネスは、セキュリティのために各サブタイルに対して依然として必要であるが、ここでは内部サブタイルハーネスと呼ばれるだろう。
【０１７７】
例えば、１つの又は１つより多い連続した最小サイズのハードウェアブロックでサブタイルが構成されている場合、サブタイルのアドレッシングは、ハードウェアリソースへの仮想タイルの柔軟な割り当てを可能にする。例えば、物理タイルが８個の最小サイズのブロックと、十分な再構成機能を有していると仮定すると、（ブロック０，１，２，３，４，５，６，７で始まる）１ブロック毎の８個のサブタイル、（ブロック０，２，４，６で始まる）２ブロック毎の４個のサブタイル、（ブロック０及び４で始まる）４ブロック毎の２個のサブタイル、（ブロック０で始まる）８ブロックの１個のサブタイルは、メモリブロックの動的割り当てに似たアルゴリズムを用いて物理タイル内に実装できる実現可能ないくつかの事柄である。
【０１７８】
プラットフォームに異種の物理サブタイルを持たせることは、他の可能な基準で評価される前に整合フィルタ（ｍａｔｃｈｉｎｇ  ｆｉｌｔｅｒ）を全ての物理サブタイルに適用するようにモニタユニットが変更されることを必要とする。つまり、整合フィルタは、仮想タイルを含むために必要なリソースを持っている場合及びその場合にのみ、物理サブタイルを実現可能としてマークするものとする。その後モニタユニットは、物理サブタイル置換アルゴリズムにおいて実現可能な物理サブタイルだけを用いるものとする。
９．高信頼性
【０１７９】
ハードウェアの信頼性は、粒子誘起型のソフトエラー及び経年効果及び電圧低下による断続的なタイミング障害に対する脆弱性の増大のために、ますます重要な課題となっている。同様に、製造誤差及び損耗によるハードエラーがもたらす永続的なタイミング障害がますます一般的になっている。特定用途向けスーパーコンピュータを仮想化するための提案されたアプローチは、改善された障害検出及び障害回復のための多くの機会を提供する。
【０１８０】
ハイパーバイザ・システム自身は、コンポーネント（大部分はＦＳＭ）及び（バタフライ及びハイパーキューブネットワークのような）ネットワークで構成される、概してマニュアル・ハードウェアデザインである。物理タイルは、単純なＦＳＭではなく、実際にはハイパーバイザの最も複雑なコンポーネントである。次に各物理タイルは、内部コンポーネント及びネットワークを含む。しかし、物理タイルは通常、コンパイラによってシーケンシャルコードから生成される［スーパーコンピュータ］。コンパイラ生成及びマニュアルのハードウェアデザインの両方において、信頼性を達成するための技術は類似する。我々はここで、シーケンシャルコードからハードウェアを生成するためのコンパイラアルゴリズムにおけるこれら信頼性技術のそれぞれの統合化もまた明確になるよう、信頼性を達成するためのいくつかの技術を十分なレベルの詳細で概説する。
【０１８１】
最初に、ソフトエラーの検出及びソフトエラーからの回復を達成するために、潜在的なソフトエラーがコードフラグメントにおいて検出された場合に、コードフラグメントのハードウェア実行を再試行できるよう、チェックポイント−再開メカニズムを持つことが望ましい。これはメモリＭＥＭ及びレジスタｘを読み出し、その後同じメモリＭＥＭ及びレジスタｘに書き込むオペレーション（ｘ，ＭＥＭ）＝ｆ（ｘ，ＭＥＭ）（ここで、ｆは、単純な演算、複雑な関数呼び出し、又はプログラムの領域階層内の内部ループネストのいずれかである）のための投機／再試行モデルである。ｆを再試行可能にするため、我々は最初に、ソフトエラーが検出されて再試行が生じたときにｆへの元のメモリ及びレジスタ入力がクロッバーされないよう、そのようなメモリ及びレジスタの新たなバージョンだけが書き込みされることを保証するために、ｆ（この場合、レジスタｘ及びメモリＭＥＭ）の呼び出しの始めでの再試行ポイントで存在するメモリ及びレジスタを特定し、ｆを改変してｆ＿ｓｐｅｃｕｌａｔｉｖｅにする必要がある。ソフトエラーが検出された場合（例えば、ｆ＿ｓｐｅｃｕｌａｔｉｖｅの二重モジュール冗長の実行中に不一致が検出される、又は、回復不能なＥＣＣエラーがｆ＿ｓｐｅｃｕｌａｔｉｖｅ中に生じる）、ｆ＿ｓｐｅｃｕｌａｔｉｖｅ呼び出しは速やかに偽である状態コードｃｃを返し、それ以外の場合は、真である状態コードｃｃを、ＭＥＭ'及びｘ'内の結果とともに返す。何らかのエラー（ｃｃが偽）がある場合、投機的コードフラグメントが再試行される必要があり、そうでない場合、投機的コードフラグメントの結果は、それらを整合性／ＥＣＣエラーについてチェックしながら、コミットされる必要がある。
【表４】
0005958559.tif 000005
【０１８２】
［スーパーコンピュータ］内のソフトウェアアプリケーションの基本的なハードウェア・アクセラレーションは既に、非常に粗い粒度で、上記の投機／再試行モデルのように動作する。ここで、関数ｆは全体のアクセラレートされたコードフラグメントである。特定用途向けスーパーコンピュータは、最終レベルキャッシュとして機能する大きなＤＲＡＭメモリを持っている（アプリケーションのアドレス空間は、メモリ階層の底である）。この最終レベルキャッシュの変更されたラインは、アクセラレータによって「全ダーティラインのフラッシュ」要求が発行される、アクセラレートされたプログラムフラグメントの最後の時点まで、ソフトウェアアプリケーションメモリに書き戻されない。最終レベルキャッシュ内にＥＣＣ及び二重モジュール冗長を持つアクセラレータについて、最終レベルキャッシュ内のダーティラインのフラッシュポイントに到達する前に比較不整合又は回復不能なＥＣＣエラーが検出された場合、単に、アクセラレータの状態を破棄して、全体のアクセラレーション・コードフラグメントを最初から再開することによって、潜在的なソフトエラーから回復することが可能である。最終的なコミットオペレーションは、（内部にないが別のチェック・ハーネスであるため）三重モジュール冗長で実施できる。アプリケーションのメモリアドレス空間にコミットされる結果のＥＣＣはチェックされることができ、可能であれば、データが補正されることができる。回復不能なＥＣＣエラーが結果の最終コミット中に生じた場合、又は、不成功の再試行が多すぎる場合、結果は、ソフトウェアのみの実行に戻るべき（元のソフトウェアコードはまだ周りにあるだろう）、ソフトウェアアプリケーションに仮想スーパーコンピュータから報告されるべき決定的エラーであろう。しかし、問題を起こす物理タイルや問題を起こすＤＲＡＭのリソースは、将来の実行において避けられることが望ましい。
【０１８３】
アクセラレートされたコードフラグメントを長時間実行している間にソフトエラーが生じる可能性が高い場合、上記のソフトエラーのための投機／再試行モデルのレシピに従うことによって、プログラム領域の階層構造におけるアクセラレートされたコードフラグメント全体より小さいサブ領域が、投機的に実行され得る。
【０１８４】
障害検出のための従来のアプローチは、ハードウェアを複製して、その結果を比較すること（二重モジュール冗長）である。このアプローチは、ＦＳＭを作成する場合にＦＳＭに冗長性を構築することによって実現できる。レジスタ−レジスタ演算（ｒｅｇｉｓｔｅｒ−ｔｏ−ｒｅｇｉｓｔｅｒ  ｏｐｅｒａｔｉｏｎｓ）が重複して実行されるが、入力オペランドのそれぞれの２つのコピーが同じであることが検査されることが望ましい。ＦＳＭの状態遷移ロジックは、同様に複製されることが望ましく、各サイクル／状態の開始時に、状態コード及び状態レジスタの２つのコピーが同じであることが検査されることが望ましい。ＥＣＣ又はパリティが生成され、メモリオペレーション中にチェックされることが望ましい。チェックサム又は他の冗長技術は、ネットワークメッセージの送信中に使用できる。
【０１８５】
より安価な代替技術は、完全な二重モジュール冗長に替えて、個々のオペレーションをチェックするための（小さなＮについての）モジューロＮ算術を使用することである。ソフトエラーシミュレーションからのプロファイリングデータが利用可能な場合、チェックロジックは、信頼性のために予約された領域割当を超えるまで最もソフトエラーしやすいＦＳＭの状態遷移、機能ユニット及びレジスタについて実装され得る。
【０１８６】
仮想化ハードウェアは通常、シーケンシャルコードのような高レベルの仕様から自動的に生成されるので、チェックロジックを減らすための更なる最適化も可能である。ハードウェアの簡略化バージョンは、物理タイルのオペレーションの特定の不変特性をチェックするためにインスタンス化され得る。これらの不変量は、プログラマによって元のコード内で明示的に提供され得る（プログラマのアサーションは多くの場合、結果についての独立した検査を提供する）、又は、例えばシンボリック実行によって自動的に生成されたアサーションの中からいくつかを選択することによって、シーケンシャルコードから推測され得る［スーパーコンピュータ］。例えば、上記の投機／再試行モデルの例において、ｆの計算はソートアルゴリズム（二重モジュール冗長なし）であり得、その検査の計算は、配列のランダム部分列（ｓｕｂｓｅｑｕｅｎｃｅ）がオーダーされたことのチェックであり得る。この単純なチェックが失敗した場合、並べ替えルーチンが再試行されるが、それが成功すると、並べ替えルーチンによって生成された状態変化がコミットされる。
【０１８７】
システム全体にわたる障害の確率も、（ソフトエラーに対する）従来の回路レベルの耐性及び（経年誘起の一過性及び永久障害に対する）ウェアレベリングによって、最小化され得る。
【０１８８】
エンドツーエンドのチェックサムは多くの場合、ネットワークのためのハードウェア効率的な技術である。誤ったチェックサムを持つメッセージが任意のＦＳＭに到達すると、投機エラーのアクションが実行されてよい。
【０１８９】
ネットワーク内の永久障害も、検出され、障害ノードを無効にし、そのようなノードを回避するためにパケットルーティングロジックを再構成することによって、訂正され得る。これは、経路の冗長性（すなわち、各送信元から各宛先への１つを超える可能な経路）を提供するネットワークトポロジでのみ可能である。
【０１９０】
特定の好ましい実施形態を参照してこの発明が提示及び説明された。しかしながら、この発明はその特定の実施形態に限定されないことが理解されるべきであり、この発明の精神及び範囲から逸脱することなく、多様な修正、追加及び変更が当業者によりこの発明になされ得る。
［項目１］
複数の特定用途向けスーパーコンピュータを仮想化するためのハイパーバイザ・システムであって、前記システムは、
ａ．ソフトウェアアプリケーション及び前記ソフトウェアアプリケーションをアクセラレートする特定用途向け仮想スーパーコンピュータで構成される少なくとも１つのソフトウェア−仮想ハードウェアの対であって、
ｉ．前記仮想スーパーコンピュータが、１つの又は１つより多い仮想タイルを有し、
ｉｉ．前記ソフトウェアアプリケーション及び前記仮想タイルが、それら自身の間で複数のメッセージで通信する、
ソフトウェア−仮想ハードウェアの対と、
ｂ．１つの又は１つより多い再構成可能な物理タイルであって、前記仮想タイルの機能を実行するように前記物理タイルを構成することによって、各仮想スーパーコンピュータの各仮想タイルが少なくとも１つの物理タイル上で実装されることが可能である、物理タイルと、
ｃ．実質的にハードウェア内に実装され、前記物理タイル上の前記仮想タイルの並列のプリエンプティブスケジューリングのためのスケジューラと
を備えるハイパーバイザ・システム。
［項目２］
シングルスレッドのソフトウェアアプリケーションを、項目１に記載の前記ハイパーバイザ・システムに組み込まれる（アプリケーション、仮想スーパーコンピュータ）の対に自動的に変換するための方法であって、前記方法は、
ａ）前記シングルスレッドのソフトウェアアプリケーションからの任意のコードフラグメントを、カスタム化された非仮想スーパーコンピュータのハードウェアであり、その実行が前記コードフラグメントのソフトウェア実行と機能的に等価なハードウェアに、変換する段階と、
ｂ）前記ハードウェア及び前記アプリケーションの複数のソフトウェア部分上の複数のインタフェースを生成する段階であって、
ｉ．前記コードフラグメントの複数の入口で、ソフトウェアからハードウェアへのプログラム状態の転送を実行し、
ｉｉ．前記コードフラグメントの複数の出口で、ハードウェアからソフトウェアへのプログラム状態の転送を実行し、
ｉｉｉ．前記ソフトウェア及びハードウェアの複数のメモリ間のメモリ・コヒーレンシを維持する、
複数のインタフェースを生成する段階と、
ｃ）段階ａ）及びｂ）で得られた前記非仮想スーパーコンピュータを、複数のモジュールに分割する段階と、
ｄ）ユニオンモジュールを生成する段階であって、前記ユニオンモジュールに提供された複数の構成パラメータに依存して、段階ｃ）で生成された前記複数のモジュールのいずれかを実現できるユニオンモジュールを生成する段階と、
ｅ）（アプリケーション、仮想スーパーコンピュータ）の対を生成する段階であって、
ｉ．前記対の前記アプリケーションの部分が、段階ｂ）で変更された前記シングルスレッドのソフトウェアアプリケーションであり、
ｉｉ．前記対の前記仮想スーパーコンピュータの部分が、それぞれが段階ｃ）で得られたモジュールである複数の仮想タイルで構成される、
段階と、
ｆ）段階ｅ）の前記複数の仮想タイルのセット中のいずれかを実現できる前記物理タイルを生成するために、段階ｄ）の前記ユニオンモジュールの内部状態の読み出し、前記内部状態の書き込み、停止及び開始のための機能を追加する段階と、
ｇ）前記ハイパーバイザ内の前記（アプリケーション、仮想スーパーコンピュータ）の対を実現するために、項目１に記載の前記ハイパーバイザ・システム内で、段階ｆ）で得られた前記物理タイルの少なくとも１つのコピーを統合する段階と
を備える方法。
［項目３］
前記システムは、
ａ．各仮想タイルを、
ｉ．現在において前記仮想タイルがどの物理タイルにも含まれていない場合は、ＮＵＬＬに、
ｉｉ．他の場合は、現在において前記仮想タイルが含まれている前記物理タイルに
マッピングするテーブルと、
ｂ．各物理タイルの近傍の前記テーブルの１次キャッシュと
を更に備え、
前記１次キャッシュは、
メッセージの送信元の物理タイルｐ０に含まれるメッセージの送信元の仮想タイルｖ０から、メッセージの宛先の物理タイルｐに含まれるメッセージの宛先の仮想タイルｖにメッセージを送信する場合に、
●前記メッセージの送信元の仮想タイルｖ０を含む前記メッセージの送信元の物理タイルｐ０
が、メッセージを、
●前記メッセージの宛先の仮想タイルｖを含む前記メッセージの宛先の物理タイルｐ
に、
前記メッセージの送信元の物理タイルｐ０の近傍の前記１次キャッシュ内において、ｖがｐにマッピングされていることが発見された場合は必ず、
○前記メッセージがｐ０に含まれる前記送信元の仮想タイルｖ０を離れる場合に、ｐを含むフィールドを前記メッセージに追加し、
○スケーラブルなネットワークを通じて、ｐに含まれる前記宛先の仮想タイルｖに向けて前記メッセージをルーティングするために、前記ｐのフィールドを使用し、
○前記宛先の仮想タイルに到達する場合に前記メッセージをその元の形式に戻す
ことによって、
直接かつ効率的に送信することができるよう、メッセージの宛先の複数の仮想タイルをメッセージの宛先の複数の物理タイルにマッピングする、
項目１に記載のハイパーバイザ・システム。
［項目４］
ａ．モニタユニットであって、
ｉ．複数の物理タイルから統計情報を収集し、
ｉｉ．前記統計情報を解析し、
ｉｉｉ．物理タイルを置換する任意の要求が前記モニタユニットに到達した場合に、タイル置換ポリシーに基づいて、置換する最適な物理タイルで応答することによって、
前記タイル置換ポリシーを実装するモニタユニット
を更に備える、項目３に記載のハイパーバイザ・システム。
［項目５］
ａ．それぞれ前記テーブルの一部分の検索を担う複数の所有者ユニット
を更に備え、
前記メッセージの送信元の物理タイルｐ０が、ｐ０の近傍の前記１次キャッシュ内で前記メッセージの宛先の仮想タイルｖを発見できなかった場合に、ｖに対する責任を有する所有者ユニットｏ０が、前記１次キャッシュのミスを解決するために前記テーブルの自分の一部分の中で、
ｉ．前記所有者ユニットｏ０が、前記テーブルの自分の一部分の中で、物理タイルｐにマッピングされる仮想タイルｖを発見した場合、
１．前記メッセージの送信元の物理タイルｐ０の近傍の前記１次キャッシュが、（ｖからｐへ）のマッピングを含むように更新され、
２．前記メッセージが、前記メッセージの送信元の物理タイルｐ０から、前記メッセージの宛先の仮想タイルｖを含む前記メッセージの宛先の物理タイルｐに、直接送達され、
ｉｉ．そうでなく、前記所有者ユニットｏ０が、前記テーブルの自分の一部分の中で仮想タイルｖを発見できなかった場合、
１．前記所有者ユニットｏ０が、置換する物理タイルを前記モニタユニットに要求し、
２．前記モニタユニットによって供給された前記物理タイルｐが既に他の仮想タイルｖ'によって占められている場合、前記所有者ユニットｏ０が、ｖ'に対して責任を有する所有者ユニットｏ１に、
ａ．（ｖ'からｐへ）のマッピングを含む、前記システム内の全ての１次キャッシュの複数のエントリを無効化し、
ｂ．前記物理タイルｐを停止して、ｐに含まれる前記仮想タイルｖ'の状態を保存し、
ｃ．前記テーブルのｏ１の一部分から前記（ｖ'からｐへ）のマッピングを削除する
よう要求し、
３．前記所有者ユニットｏ０が、前記テーブルのｏ０の一部分に前記（ｖからｐへ）のマッピングを挿入し、
４．前記所有者ユニットｏ０が、最後の保存された前記仮想タイルｖの前記状態を前記物理タイルｐに書き込み、ｖを停止したところから再開させ、
５．前記メッセージの送信元の物理タイルｐ０の近傍の前記１次キャッシュが、前記（ｖからｐへ）のマッピングを含むように更新され、
６．前記メッセージが、前記メッセージの送信元の物理タイルｐ０から、前記メッセージの宛先の仮想タイルｖを含む前記メッセージの宛先の物理タイルｐに、直接送達される、
ことによりｖを検索するよう、複数の前記一部分は、重複せず、合わせて前記テーブルの全体を構成する
項目４に記載のハイパーバイザ・システム。
［項目６］
所与の任意の２つの仮想タイルｖ１及びｖ２について、ｖ１からｖ２への複数の前記メッセージが、並列オペレーション中に並べ替えられないことを保証する手段
を更に備える、項目５に記載のハイパーバイザ・システム。
［項目７］
複数のメッセージが失われないことを保証する手段であって、所与の２つの仮想タイルｖ１及び仮想タイルｖ２について、仮想タイルｖ１から仮想タイルｖ２にメッセージが送信される場合は必ず、並列オペレーション中に前記メッセージが常に前記仮想タイルｖ２に送達される、手段
を更に備える、項目５に記載のハイパーバイザ・システム。
［項目８］
コヒーレンスメッセージングオーバーヘッドが低減されるよう、前記テーブル及び前記複数の物理タイルの近傍の複数の前記１次キャッシュの間のコヒーレンスは、ディレクトリベースのキャッシュコヒーレンスを用いて達成される
項目５から７のいずれか１項に記載のハイパーバイザ・システム。
［項目９］
前記モニタは、サービス水準合意（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔｓ）に準拠した置換ポリシーを実装する
項目５から８のいずれか１項に記載のハイパーバイザ・システム。
［項目１０］
少なくとも１つの物理タイルは、ＡＳＩＣ技術で実装され、前記物理タイルに提供された複数の構成パラメータに基づいて、仮想スーパーコンピュータの複数の前記仮想タイルのいずれか１つを実現できる
項目１、３から９のいずれか１項に記載のハイパーバイザ・システム。
［項目１１］
複数のＡＳＩＣの物理タイルに複数のリソースを割り当てるための適応的な手法を更に備え、前記手法は、
ａ）最近の時間間隔にわたって、各（アプリケーション、仮想スーパーコンピュータ）の対の使用頻度を決定する段階と、
ｂ）段階ａ）で決定された最大の使用頻度を持つ（アプリケーション、仮想スーパーコンピュータ）の対を、
ｉ．前記対がＡＳＩＣの物理タイルにまだマッピングされておらず、
ｉｉ．前記対の前記使用頻度が閾値を超えている
ように探す段階と、
ｃ）段階ｂ）でそのような対を見つけることができた場合、その対のための新しいＡＳＩＣの物理タイルを生成する段階と、
ｄ）前記ハイパーバイザ・システム内の各ＡＳＩＣの物理タイルについて、
ｉ．このＡＳＩＣの物理タイルによって実装された前記（アプリケーション、仮想スーパーコンピュータ）の平均の前記使用頻度に、割り当てられる前記複数のリソースを比例させるために、このＡＳＩＣの物理タイルに割り当てる前記複数のリソースを増加又は減少させる段階と、
ｅ）上記の複数の前記段階の全てを定期的に繰り返す段階と
を有する、項目１０に記載のハイパーバイザ・システム。
［項目１２］
少なくとも１つの（アプリケーション、仮想スーパーコンピュータ）の対は、外部ネットワーク接続性を有し、ハードウェア・アクセラレートされた仮想オペレーティングシステムを、
ａ．前記対の前記仮想スーパーコンピュータ内の１つの仮想タイルが、前記オペレーティングシステムを実行するための汎用マイクロプロセッサを含み、
ｂ．前記対の前記仮想スーパーコンピュータの残りの複数の前記仮想タイルが、前記オペレーティングシステム内の複数のカーネルコード及び複数のユーザアプリケーションコードの前記ハードウェア・アクセラレートを実現し、
ｃ．前記対の前記アプリケーションの部分は、前記汎用マイクロプロセッサを含む前記仮想タイル、及び必要に応じて前記仮想スーパーコンピュータの他の複数の仮想タイルを外部ネットワークに接続するネットワークゲートウェイによって置換される
ように実現するために変更される、
項目１、３から１１のいずれか１項に記載のハイパーバイザ・システム。
［項目１３］
新しい（アプリケーション、仮想スーパーコンピュータ）の対を前記システムに追加する、又は前記システムからそのような対を削除する機能
を更に備える、項目１、３から１２のいずれか１項に記載のハイパーバイザ・システム。
［項目１４］
複数の物理タイルの利用向上のための、
ａ．少なくとも１つの物理タイルを、等しくない大きさであり得る複数の物理サブタイルに分割し、
ｂ．スケジューリング時に、仮想タイルを、前記仮想タイルを収容する十分な大きさである物理サブタイルに割り当てる
機能を更に備える、項目１、３から１３のいずれか１項に記載のハイパーバイザ・システム。
［項目１５］
前記ハイパーバイザ内の（アプリケーション、仮想スーパーコンピュータ）の複数の対の相互の分離を達成するために、（ソフトウェアアプリケーション、仮想スーパーコンピュータ）の対の中の各仮想タイルが、同じ仮想スーパーコンピュータの他の複数の仮想タイル及び前記対の前記ソフトウェアアプリケーションとだけ通信するよう制限する機能
を更に備える、項目１、３から１４のいずれか１項に記載のハイパーバイザ・システム。
［項目１６］
前記仮想スーパーコンピュータの前記複数の仮想タイルを実現する複数の前記物理タイルの信頼性が高まるよう、前記対の前記ソフトウェアアプリケーションから前記仮想スーパーコンピュータを生成する間、複数のカスタム冗長検査回路を合成する段階
を更に備える、項目２に記載の方法。
［項目１７］
複数の特定用途向けスーパーコンピュータを仮想化するためのハイパーバイザ・システムであって、前記システムは、
ａ．ソフトウェアアプリケーション及び前記ソフトウェアアプリケーションをアクセラレートする特定用途向け仮想スーパーコンピュータで構成される少なくとも１つのソフトウェア−仮想ハードウェアの対であって、
ｉ．前記仮想スーパーコンピュータが、１つの又は１つより多い仮想タイルを有し、
ｉｉ．前記ソフトウェアアプリケーション及び前記仮想タイルが、それら自身の間で複数のメッセージで通信する、
ソフトウェア−仮想ハードウェアの対と、
ｂ．１つの又は１つより多い再構成可能な物理タイルであって、前記仮想タイルの機能を実行するように前記物理タイルを構成することによって、各仮想スーパーコンピュータの各仮想タイルが少なくとも１つの物理タイル上で実装されることが可能である、物理タイルと、
ｃ．複数の前記物理タイル上の複数の前記仮想タイルの並列のプリエンプティブスケジューリングのための手段であって、スケジューラが実質的にハードウェア内に実装される、手段と
を備える、ハイパーバイザ・システム。
【図１】
0005958559.tif 000006
【図２】
0005958559.tif 000007
【図３】
0005958559.tif 000008
【図４】
0005958559.tif 000009
【図５】
0005958559.tif 000010
【図６】
0005958559.tif 000011
【図７】
0005958559.tif 000012
【図８】
0005958559.tif 000013
【図９】
0005958559.tif 000014
【図１０】
0005958559.tif 000015
【図１１】
0005958559.tif 000016
【図１２】
0005958559.tif 000017
【図１３】
0005958559.tif 000018
【図１４】
0005958559.tif 000019
【図１５】
0005958559.tif 000020