(57)【要約】【課題】アウト・オブ・コア処理環境においてデータにアクセスする方法、アクセラレータ・システム、およびコンピュータ・プログラムを提供する。【解決手段】データ・アクセス・コンフィギュレーションが、複数のデータ・セットを管理するサーバ・システムから受け取られる。サーバ・システムから取り出されたデータ・セットはそのデータ・アクセス・コンフィギュレーションに基づいて局所的に格納されるべきであるという判定が行われる。所与のデータ・セットとインタラクトする要求がユーザ・クライアントから受け取られる。その所与のデータ・セットの少なくとも１つの部分がサーバ・システムから取り出される。その所与のデータ・セットのその少なくとも１つの部分は、受け取られたデータ・アクセス・コンフィギュレーションに基づいてメモリに局所的に格納される。【選択図】図１
2013531296.tif 000002
【特許請求の範囲】
【請求項１】
アクセラレータ・システムにおいて、アウト・オブ・コア処理環境にあるデータにアクセスする方法であって：
複数のデータ・セットを管理するサーバ・システムからデータ・アクセス・コンフィギュレーションを受け取るステップと；
前記データ・アクセス・コンフィギュレーションに基づいて、前記サーバ・システムから取り出されたデータ・セットが局所的に格納されるべきであると判定するステップと；
ユーザ・クライアントから、所与のデータ・セットとインタラクトする要求を受け取るステップと；
前記所与のデータ・セットの少なくとも１つの部分を前記サーバ・システムから取り出すステップと；
受け取られた前記データ・アクセス・コンフィギュレーションに基づいて前記所与のデータ・セットの前記少なくとも１つの部分を局所的にメモリに格納するステップと；
を含む方法。
【請求項２】
前記所与のデータ・セットにアクセスする要求を前記ユーザ・クライアントから受け取るステップと；
前記所与のデータ・セットの前記少なくとも１つの部分が前記アクセスする要求を満たすと判定するステップと；
前記アクセスする要求に基づいて前記所与のデータ・セットの前記少なくとも１つの部分を処理するステップと；
処理された前記所与のデータ・セットの前記少なくとも１つの部分を前記ユーザ・クライアントに伝送するステップと；
をさらに含む、請求項１に記載の方法。
【請求項３】
前記サーバ・システムから前記所与のデータ・セットの少なくとも１つの部分を取り出す前記ステップは前記所与のデータ・セットの全体を取り出すことをさらに含む、請求項１ないし請求項２のいずれかに記載の方法。
【請求項４】
前記所与のデータ・セットにアクセスする要求を前記ユーザ・クライアントから受け取るステップと；
前記所与のデータ・セットの前記部分が前記アクセスする要求を完全には満たさないと判定するステップと；
前記判定に応答して、前記所与のデータ・セットの少なくとも１つの追加部分を前記サーバ・システムから取り出すステップと；
前記アクセスする要求に基づいて前記所与のデータ・セットの前記部分および前記追加部分を処理するステップと；
処理された前記所与のデータ・セットの前記部分および前記追加部分を前記ユーザ・クライアントに伝送するステップと；
をさらに含む、請求項１ないし請求項３のいずれかに記載の方法。
【請求項５】
前記所与のデータ・セットの前記少なくとも１つの部分を局所的にメモリに格納することに応答して、前記所与のデータの前記部分と関連付けられたセキュリティ・カウンタを起動させるステップと；
前記所与のデータの前記部分に関して、前記メモリの中での所与の量の時間と前記所与のデータの前記部分へのアクセスの数とを監視するステップと；
前記メモリの中での前記所与の量の時間と前記所与のデータの前記部分へのアクセスの前記数とのうちの少なくとも１つに基づいて前記セキュリティ・カウンタをインクリメントするステップと；
をさらに含む、請求項１ないし請求項４のいずれかに記載の方法。
【請求項６】
前記セキュリティ・カウンタをインクリメントすることに応答して、前記セキュリティ・カウンタと関連付けられている値が所与のスレショルドより高いと判定するステップと；
前記所与のデータの前記部分を前記メモリから除去するステップと；
をさらに含む、請求項５に記載の方法。
【請求項７】
前記所与のデータ・セットの前記少なくとも１つの部分を局所的にメモリに格納する前記ステップは、前記所与のデータ・セットの前記少なくとも１つの部分を局所的にキャッシュ・メモリに格納する前記ステップを含む、請求項１ないし請求項６に記載の方法。
【請求項８】
アウト・オブ・コア処理環境にあるサーバ・システムにおいて、アクセラレータ・システムによるデータへのアクセスを管理する方法であって：
所与のデータ・セットへのアクセスを求めるアクセラレータ・システムからの要求を受け取るステップと；
前記所与のデータ・セットと関連付けられたアクセス・コンテキストを決定するステップと；
決定された前記アクセス・コンテキストに基づいて、前記アクセラレータ・システムを
前記所与のデータ・セットに前記サーバ・システムから直接アクセスする、
前記所与のデータ・セットの部分をメモリに局所的に格納する、および
前記所与のデータ・セットの全体を前記メモリに局所的に格納する、
のうちの１つに動的に設定するステップと；
を含む方法。
【請求項９】
前記アクセス・コンテキストを決定する前記ステップは：
前記所与のデータ・セットへのアクセスを要求しているユーザと関連付けられている属性のセット；
前記所与のデータ・セットと関連付けられているセキュリティ属性のセット；および
前記所与のデータ・セットを伝送し受け取るために使用されるべきデータ・ポートのセット；
のうちの少なくとも１つを識別することをさらに含む、請求項８に記載の方法。
【請求項１０】
前記所与のデータ・セットの前記部分または全体のうちの１つを局所的に格納するように前記アクセラレータ・システムを動的に設定することに応答して、前記所与のデータ・セットのためにセキュリティ・カウンタを維持するように前記アクセラレータ・システムに命令するステップと；
スレショルド値を前記セキュリティ・カウンタと関連付けるステップであって、前記スレショルド値は、前記アクセラレータ・システムに対して、前記所与のデータ・セットの前記部分または全体のうちの前記１つを前記メモリから何時除去するかを明示する、前記関連付けるステップと；
をさらに含む、請求項８または請求項９のいずれかに記載の方法。
【請求項１１】
前記所与のデータ・セットへのアクセスを求める前記要求と関連付けられたユーザからセキュリティ要求を受け取るステップと；
前記ユーザが完全に暗号化される通信リンクを要求していることを前記セキュリティ要求が明示していると判定するステップと；
前記所与のデータ・セットと関連付けられた情報を転送するために前記アクセラレータとの完全に暗号化される通信リンクを確立するステップと；
をさらに含む、請求項８ないし請求項１０のいずれかに記載の方法。
【請求項１２】
前記所与のデータ・セットの部分または全体のうちの１つを局所的に格納するように前記アクセラレータ・システムを動的に設定することに応答して前記所与のデータ・セットと関連付けられた情報を転送するために前記アクセラレータとの部分的に暗号化される通信リンクを確立するステップであって、前記部分的に暗号化される通信リンクは、完全に暗号化される通信リンクよりは低い暗号化強度を含む、前記確立するステップと；
部分的に暗号化される通信リンクを確立することに応答して、前記所与のデータ・セットの前記部分または全体のうちの前記１つを前記メモリから何時除去するかを明示するセキュリティ・カウンタを維持するように前記アクセラレータ・システムに命令するステップと；
をさらに含む、請求項８ないし請求項１１のいずれかに記載の方法。
【請求項１３】
前記アクセラレータ・システムと関連付けられた処理コアのタイプを決定するステップと；
前記所与のデータ・セットを、第１フォーマットから、決定された処理コアの前記タイプと関連付けられた第２フォーマットに変換するステップと；
をさらに含む、請求項８ないし請求項１２のいずれかに記載の方法。
【請求項１４】
アウト・オブ・コア処理環境にあるアクセラレータ・システムであって：
メモリと；
前記メモリに通信結合されている処理コアと；
前記メモリおよび前記処理コアに通信結合されているデータ・マネージャとを含み、前記データ・マネージャは：
複数のデータ・セットを管理するサーバ・システムからデータ・アクセス・コンフィギュレーションを受け取るための受け取りコンポーネントと；
前記データ・アクセス・コンフィギュレーションに応じて、前記サーバ・システムから取り出されたデータ・セットが局所的に格納されるべきであると判定するための判定コンポーネントと；
所与のデータ・セットとインタラクトする要求をユーザ・クライアントから受け取るようにさらに動作し得る前記受け取りコンポーネントと；
前記サーバ・システムから前記所与のデータ・セットの少なくとも１つの部分を取り出すための取り出しコンポーネントと；
受け取られた前記データ・アクセス・コンフィギュレーションに基づいて前記所与のデータ・セットの前記少なくとも１つの部分を局所的にメモリに格納するための格納コンポーネントと；
を含むアクセラレータ・システム。
【請求項１５】
アウト・オブ・コア処理環境にあるアクセラレータ・システムであって：
メモリと；
前記メモリに通信結合されている処理コアと；
前記メモリおよび前記処理コアに通信結合されているデータ・マネージャとを含み、前記データ・マネージャは：
複数のデータ・セットを管理するサーバ・システムからデータ・アクセス・コンフィギュレーションを受け取るステップと；
前記データ・アクセス・コンフィギュレーションに基づいて、前記サーバ・システムから取り出されたデータ・セットが局所的に格納されるべきであると判定するステップと；
ユーザ・クライアントから、所与のデータ・セットとインタラクトする要求を受け取るステップと；
前記所与のデータ・セットの少なくとも１つの部分を前記サーバ・システムから取り出すステップと；
受け取られた前記データ・アクセス・コンフィギュレーションに基づいて前記所与のデータ・セットの前記少なくとも１つの部分を局所的にメモリに格納するステップと；
を含む方法を実行するように設定されている、アクセラレータ・システム。
【請求項１６】
前記方法は：
前記所与のデータ・セットにアクセスする要求を前記ユーザ・クライアントから受け取るステップと；
前記所与のデータ・セットの前記少なくとも１つの部分が前記アクセスする要求を満たすと判定するステップと；
前記アクセスする要求に基づいて前記所与のデータ・セットの前記少なくとも１つの部分を処理するステップと；
処理された前記所与のデータ・セットの前記少なくとも１つの部分を前記ユーザ・クライアントに伝送するステップと；
をさらに含む、請求項１５に記載のアクセラレータ・システム。
【請求項１７】
前記方法は：
前記所与のデータ・セットにアクセスする要求を前記ユーザ・クライアントから受け取るステップと；
前記所与のデータ・セットの前記部分が前記アクセスする要求を完全には満たさないと判定するステップと；
前記判定に応答して、前記所与のデータ・セットの少なくとも１つの追加部分を前記サーバ・システムから取り出すステップと；
前記アクセスする要求に基づいて前記所与のデータ・セットの前記部分および前記追加部分を処理するステップと；
処理された前記所与のデータ・セットの前記部分および前記追加部分を前記ユーザ・クライアントに伝送するステップと；
をさらに含む、請求項１５または請求項１６のいずれかに記載のアクセラレータ・システム。
【請求項１８】
前記方法は：
前記所与のデータ・セットの前記少なくとも１つの部分を局所的にメモリに格納することに応答して、前記所与のデータの前記部分と関連付けられたセキュリティ・カウンタを起動させるステップと；
前記所与のデータの前記部分に関して、前記メモリの中での所与の量の時間と前記所与のデータの前記部分へのアクセスの数とを監視するステップと；
前記メモリの中での前記所与の量の時間と前記所与のデータの前記部分へのアクセスの前記数とのうちの少なくとも１つに基づいて前記セキュリティ・カウンタをインクリメントするステップと；
をさらに含む、請求項１５ないし請求項１７のいずれかに記載のアクセラレータ・システム。
【請求項１９】
前記方法は：
前記セキュリティ・カウンタをインクリメントすることに応答して、前記セキュリティ・カウンタと関連付けられている値が所与のスレショルドより高いと判定するステップと；
前記所与のデータの前記部分を前記メモリから除去するステップと；
をさらに含む、請求項１８に記載のアクセラレータ・システム。
【請求項２０】
アウト・オブ・コア処理環境にあるサーバ・システムであって：
メモリと；
前記メモリに通信結合されているプロセッサと；
前記メモリおよび前記プロセッサに通信結合されているデータ・マネージャとを含み、前記データ・マネージャは：
所与のデータ・セットへのアクセスを求めるアクセラレータ・システムからの要求を受け取るための受け取りコンポーネントと；
前記所与のデータ・セットと関連付けられたアクセス・コンテキストを決定するための決定コンポーネントと；
決定された前記アクセス・コンテキストに応じて
前記所与のデータ・セットに前記サーバ・システムから直接アクセスすること、
前記所与のデータ・セットの部分をメモリに局所的に格納すること、
前記所与のデータ・セットの全体を前記メモリに局所的に格納すること、
のうちの１つのために動作し得るように前記アクセラレータ・システムを動的に設定するための設定コンポーネントと；
を含む、サーバ・システム。
【請求項２１】
アウト・オブ・コア処理環境にあるサーバ・システムであって：
メモリと；
前記メモリに通信結合されているプロセッサと；
前記メモリおよび前記プロセッサに通信結合されているデータ・マネージャとを含み、前記データ・マネージャは：
所与のデータ・セットへのアクセスを求めるアクセラレータ・システムからの要求を受け取るステップと；
前記所与のデータ・セットと関連付けられたアクセス・コンテキストを決定するステップと；
決定された前記アクセス・コンテキストに基づいて、前記アクセラレータ・システムを
前記所与のデータ・セットに前記サーバ・システムから直接アクセスする、
前記所与のデータ・セットの部分をメモリに局所的に格納する、および
前記所与のデータ・セットの全体を前記メモリに局所的に格納する、
のうちの１つに動的に設定するステップと；
を含む方法を実行するように設定されている、サーバ・システム。
【請求項２２】
前記アクセス・コンテキストを決定する前記ステップは：
前記所与のデータ・セットへのアクセスを要求しているユーザと関連付けられている属性のセット；
前記所与のデータ・セットと関連付けられているセキュリティ属性のセット；および
前記所与のデータ・セットを伝送し受け取るために使用されるべきデータ・ポートのセット；
のうちの少なくとも１つを識別する前記ステップを含む、請求項２１に記載のサーバ・システム。
【請求項２３】
前記方法は：
前記所与のデータ・セットの前記部分または全体のうちの１つを局所的に格納するように前記アクセラレータ・システムを動的に設定することに応答して、前記所与のデータ・セットのためにセキュリティ・カウンタを維持するように前記アクセラレータ・システムに命令するステップと；
スレショルド値を前記セキュリティ・カウンタと関連付けるステップであって、前記スレショルド値は、前記アクセラレータ・システムに対して、前記所与のデータ・セットの前記部分または全体のうちの前記１つを前記メモリから何時除去するかを明示する、前記関連付けるステップと；
をさらに含む、請求項２１または請求項２２のいずれかに記載のサーバ・システム。
【請求項２４】
前記方法は：
前記所与のデータ・セットの部分または全体のうちの１つを局所的に格納するように前記アクセラレータ・システムを動的に設定することに応答して前記所与のデータ・セットと関連付けられた情報を転送するために前記アクセラレータとの部分的に暗号化される通信リンクを確立するステップであって、前記部分的に暗号化される通信リンクは、完全に暗号化される通信リンクよりは低い暗号化強度を含む、前記確立するステップと；
部分的に暗号化される通信リンクを確立することに応答して、前記所与のデータ・セットの前記部分または全体のうちの前記１つを前記メモリから何時除去するかを明示するセキュリティ・カウンタを維持するように前記アクセラレータ・システムに命令するステップと；
をさらに含む、請求項２１ないし請求項２３のいずれかに記載のサーバ・システム。
【請求項２５】
アウト・オブ・コア処理環境においてデータにアクセスするためのコンピュータ・プログラム製品であって：
処理回路によって読まれることができて、請求項１ないし請求項１３のいずれかに従う方法を実行するために前記処理回路によって実行されるべき命令を記憶しているコンピュータ可読記憶媒体を含む、コンピュータ・プログラム製品。
【請求項２６】
コンピュータ可読媒体に格納され、デジタル・コンピュータの前記内部メモリにロードされ得るコンピュータ・プログラムであって、前記プログラムがコンピュータ上で動作させられるときに請求項１ないし請求項１３のいずれかの前記方法を実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはアウト・オブ・コア処理に関し、特にアウト・オブ・コア処理環境にあるハイブリッド・メモリ・サーバに関する。
【背景技術】
【０００２】
アウト・オブ・コア処理環境は、一般的に、より強力な処理装置により処理されるデータを記憶装置が維持し、現在処理されつつあるデータの部分だけが処理装置上に存在する環境を指す。例えば、記憶装置はモデル・データを包含することができ、計算処理はより強力な処理装置に割り当てられる。
【０００３】
２００５年９月６日に出願された「Ｍｅｔｈｏｄ  ａｎｄ  ａｐｐａｒａｔｕｓ  ｆｏｒ  ｂａｌａｎｃｉｎｇ  ｄｉｓｔｒｉｂｕｔｅｄ  ａｐｐｌｉｃａｔｉｏｎｓ」についての特許文献１は、ケーブル・テレビジョン・ネットワークのようなクライアント／サーバ・ネットワーク内で分散しているアプリケーションを平衡させるための改良された方法および装置を教示している。発明の一側面において、種々のサーバ部分（ｓｅｒｖｅｒ  ｐｏｒｔｉｏｎ（ＤＡＳＰ））およびサーバ・マシンにおいて分散アプリケーション・クライアント部分（ｄｉｓｔｒｉｂｕｔｅｄ  ａｐｐｌｉｃａｔｉｏｎ  ｃｌｉｅｎｔ  ｐｏｒｔｉｏｎ（ＤＡＣＰ））の負荷を平衡させる方法が開示されている。サーバの利用可能なリソースおよびそれらのローディングに関する統計が１つ以上のソフトウェア・プロセスによって維持される。クライアント・デバイス・ローディングが増大あるいは変化するときに最適システム性能を維持するために新しいプロセス・スレッドもしくは分散されているアプリケーション・サーバ部分またはその両方はサーバに割り当てられる。他の１つの側面では、垂直および水平の両方のパーティションおよび“ミュータブルな”（すなわち、トランスポート可能な）オブジェクトを使用するオブジェクト指向分散アプリケーション・ソフトウェア・アーキテクチャが開示されている。ミュータブルなオブジェクトは、少なくとも１つのネットワーク・パーティションを維持すると同時に、サーバまたは分散されたアプリケーションのクライアント部分に常駐することができる。プロセス間通信のために有益な効率的メッセージ・プロトコルを含む、前述のオブジェクト指向分散アプリケーションの動作に適合させられたランタイム環境も開示されている。サーバからＤＡＣＰをダウンロードする方法、およびクライアント・デバイス・コンフィギュレーションに基づいてダウンロード時にＤＡＣＰをスケーリングする方法がさらに開示されている。
【０００４】
２００８年５月２９日に出願された「Ｍｅｔｈｏｄｓ  ａｎｄ  Ａｒｒａｎｇｅｍｅｎｔｓ  ｆｏｒ  Ｈｙｂｒｉｄ  Ｄａｔａ  Ｓｔｏｒａｇｅ」についての特許文献２は、以後一般的にハイブリッド・メモリ・デバイスまたはハイブリッド・キャッシュ・デバイスと称される２タイプ以上のメモリ・デバイスのアクセスを容易にするハイブリッド・メモリ・コントローラを含み得る実施態様を教示している。該ハイブリッド・メモリ・コントローラは、書き込み要求のデータを２つ以上の部分に分割して各部分を異なるタイプのデータ記憶装置に格納するかどうか決定する分割ロジックを含み得る。例えば、一実施態様は、データをＳＲＡＭ装置およびＤＲＡＭ装置の両方に格納するハイブリッド・メモリ・コントローラを含む。該ＳＲＡＭ装置およびＤＲＡＭ装置は、ダイ上の別個の回路、チップ内の別個のダイ、メモリ・モジュール上の別個のチップ、別個のメモリ・モジュール等を含み得る。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第６，９４１，３４１号
【特許文献２】米国特許出願公開第２００８／０１２６７１６号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
在来のアウト・オブ・コア処理環境は、一般的に、リソース利用、ユーザ・サポート、およびセキュリティに関して非能率的である。例えば、多くの在来のアウト・オブ・コア処理環境は一度に１ユーザだけをサポートできるに過ぎない。さらに、これらのシステムは、データ・セットがアクセラレータに常駐することを可能にし、これによりシステムをバルネラビリティに対して開放する。これらの在来の環境の多くはネットワーク・ファイル・システム（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ（ＮＦＳ））を利用し、これはシステム応答低下につながるブロックをページ・アウトすることができる。これらの在来の環境は、さらに、読み出し専用モードで視覚化のためのモデル・データ・レンダリングをサポートし、データ・セットに対するアップデートおよび修正／アノテーションをサポートしない。さらに、これらの在来の環境の幾つかは、全てのモデル・データをキャッシュするためにダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ、ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）を使用するだけである。これは、或るユーセージ・モデルのためには高価であり得る。従って、前述の問題に対処する必要が当該技術には存在する。
【課題を解決するための手段】
【０００７】
第１の側面から見たとき、本発明は、アクセラレータ・システムにおけるアウト・オブ・コア処理環境にあるデータにアクセスする方法を提供する。該方法は、複数のデータ・セットを管理するサーバ・システムからデータ・アクセス・コンフィグレーションを受け取るステップを含む。該サーバ・システムから取り出されたデータ・セットは該データ・アクセス・コンフィグレーションに基づいて局所的に格納されると決定される。所与のデータ・セットとインタラクトする要求がユーザ・クライアントから受け取られる。その所与のデータ・セットの少なくとも１つの部分が該サーバ・システムから取り出される。その所与のデータ・セットのその少なくとも１つの部分は、受け取られた該データ・アクセス・コンフィグレーションに基づいてメモリに局所的に格納される。
【０００８】
他の１つの実施態様では、アウト・オブ・コア処理環境にあるサーバ・システムにおいてアクセラレータ・システムによるデータへのアクセスを管理する方法が開示される。該方法は、所与のデータ・セットへのアクセスを求めるアクセラレータ・システムからの要求を受け取るステップを含む。その所与のデータ・セットと関連付けられたアクセス・コンテキストが決定される。該アクセラレータは、決定された該アクセス・コンテキストに基づいて動的に設定され、サーバ・システムから直接該所与のデータ・セットにアクセスすること、該所与のデータ・セットの一部分を局所的にメモリに格納すること、および該所与のデータ・セットの全体を該メモリに局所的に格納することのうちの１つに設定される。
【０００９】
さらなる側面から見たとき、本発明は、アウト・オブ・コア処理環境にあるデータにアクセスするためのアクセラレータ・システムを提供する。該アクセラレータ・システムは、メモリと、該メモリに通信結合された処理コアとを含む。データ・アクセス・マネージャは、該メモリおよび該処理コアに通信結合され、１つの方法を実行するように設定される。該方法は、複数のデータ・セットを管理するサーバ・システムからデータ・アクセス・コンフィグレーションを受け取るステップを含む。該サーバ・システムから取り出されたデータ・セットは該データ・アクセス・コンフィグレーションに基づいて局所的に格納されると決定される。所与のデータ・セットとインタラクトする要求がユーザ・クライアントから受け取られる。その所与のデータ・セットの少なくとも１つの部分が該サーバ・システムから取り出される。その所与のデータ・セットのその少なくとも１つの部分は、受け取られた該データ・アクセス・コンフィグレーションに基づいてメモリに局所的に格納される。
【００１０】
さらなる側面から見たとき、本発明はアクセラレータ・システムによるデータへのアクセスを管理するためのアウト・オブ・コア処理環境にあるサーバ・システムを提供する。該サーバ・システムは、メモリと、該メモリに通信結合されたプロセッサとを含む。データ・アクセス・マネージャは、該メモリおよび該プロセッサに通信結合され、１つの方法を実行するように設定される。該方法は、所与のデータ・セットへのアクセスを求めるアクセラレータ・システムからの要求を受け取るステップを含む。その所与のデータ・セットと関連付けられたアクセス・コンテキストが決定される。該アクセラレータは、決定された該アクセス・コンテキストに基づいて動的に設定され、サーバ・システムから直接該所与のデータ・セットにアクセスする、該所与のデータ・セットの一部分を局所的にメモリに格納する、および該所与のデータ・セットの全体を該メモリに局所的に格納する、のうちの１つに設定される。
【００１１】
さらなる側面から見たとき、本発明は、アウト・オブ・コア処理環境にあるデータにアクセスするためのコンピュータ・プログラム製品を提供する。該コンピュータ・プログラム製品は、処理回路により読み出し可能であって１つの方法を実行するために該処理回路により実行されるべき命令を記憶する記憶媒体を含む。該方法は、複数のデータ・セットを管理するサーバ・システムからデータ・アクセス・コンフィグレーションを受け取るステップを含む。該サーバ・システムから取り出されたデータ・セットは該データ・アクセス・コンフィグレーションに基づいて局所的に格納されると決定される。所与のデータ・セットとインタラクトする要求がユーザ・クライアントから受け取られる。その所与のデータ・セットの少なくとも１つの部分が該サーバ・システムから取り出される。その所与のデータ・セットのその少なくとも１つの部分は、受け取られた該データ・アクセス・コンフィグレーションに基づいてメモリに局所的に格納される。
【００１２】
さらなる側面から見たとき、本発明はコンピュータ・プログラムを提供し、該コンピュータ・プログラムは、コンピュータ可読媒体に格納されてデジタル・コンピュータの内部メモリにロード可能であって、前記プログラムがコンピュータ上で実行されるときに本発明のステップを実行するためのソフトウェア・コード部分を含む。
【００１３】
単なる例示を目的として、本発明は、次に、添付の図に示されている好ましい実施態様を参照して説明される。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施態様に従う動作環境の一例を示すブロック図である。
【図２】本発明の一実施態様に従うアウト・オブ・コア処理環境にあるハイブリッド・メモリ・サーバ・コンフィグレーションの一例を示すブロック図である。
【図３】本発明の一実施態様に従うアウト・オブ・コア処理環境におけるアクセラレータ・コンフィグレーションの一例を示すブロック図である。
【図４】本発明の一実施態様に従うアウト・オブ・コア処理環境におけるアクセラレータ・コンフィグレーションの他の一例を示すブロック図である。
【図５】本発明の一実施態様に従うアウト・オブ・コア処理環境におけるハイブリッド・メモリ・サーバのトンネル・プロトコル・コンフィグレーションの一例を示すブロック図である。
【図６】本発明の一実施態様に従うアウト・オブ・コア処理環境におけるアクセラレータのプリフェッチ・コンフィグレーションの一例を示すブロック図である。
【図７】本発明の一実施態様に従うアウト・オブ・コア処理環境におけるアクセラレータの仮想化されたコンフィグレーションの一例を示すブロック図である。
【図８】本発明の一実施態様に従うアウト・オブ・コア処理環境におけるサーバ・システムでのデータ前処理の一例を示す動作流れ図である。
【図９】本発明の一実施態様のデータ・アクセス・コンフィグレーションに従って設定されたアウト・オブ・コア処理環境におけるアクセラレータの一例を示す動作流れ図である。
【図１０】本発明の一実施態様に従う他の１つのデータ・アクセス・コンフィグレーションに従って設定されたアウト・オブ・コア処理環境におけるアクセラレータの一例を示す動作流れ図である。
【図１１】本発明の一実施態様に従う他の１つのデータ・アクセス・コンフィグレーションに従うデータ・アクセス・コンフィグレーションに従って設定されたアウト・オブ・コア処理環境においてアクセラレータを動的に設定することの一例を示す動作流れ図である。
【図１２】本発明の一実施態様に従う他の１つのデータ・アクセス・コンフィグレーションに従うアウト・オブ・コア処理環境においてサーバとアクセラレータとの間に保障されているリンクを動的に確立することの一例を示す動作流れ図である。
【図１３】本発明の一実施態様に従うアウト・オブ・コア処理環境においてアクセラレータによりキャッシュされたデータのためにバルネラビリティ・ウィンドウを維持することの一例を示す動作流れ図である。
【図１４】本発明の一実施態様に従うアウト・オブ・コア処理環境においてサーバでプロトコル・トンネルを利用することの一例を示す動作流れ図である。
【図１５】本発明の一実施態様に従ってデータをアクセラレータへプッシュするためにセマンティック解析を利用するアウト・オブ・コア処理環境にあるサーバの一例を示す動作流れ図である。
【図１６】本発明の一実施態様に従うサーバからデータをプリフェッチするアウト・オブ・コア処理環境にあるアクセラレータの一例を示す動作流れ図である。
【図１７】本発明の一実施態様に従うアウト・オブ・コア処理環境にあるアクセラレータを複数の仮想化されたアクセラレータに論理的にパーティショニングすることの一例を示す動作流れ図である。
【図１８】本発明の一実施態様に従う情報処理システムの詳細図を示すブロック図である。
【発明を実施するための形態】
【００１５】
要求されたとおりに、本発明の詳細な好ましい実施態様がここで開示されるけれども、その開示される実施態様は単に本発明を代表するに過ぎなくて、本発明は種々の形で具体化され得ることが理解されるべきである。従って、ここに開示される特定の構造上のおよび機能上の詳細は、限定をするものと解されるべきではなくて、単に、請求項のための基礎として、さらに実際上任意の適切な詳しい構造において本発明を様々に使用することを当業者に教えるための代表的基礎として、解されるべきである。さらに、ここで使用される用語および言い回しは、限定をするように意図されているのではなくて、発明についての理解可能な記述を提供するように意図されている。
【００１６】
ここで使用される用語“ａ”または“ａｎ”は、１つまたは２つ以上と定義される。ここで使用される複数（ｐｌｕｒａｌｉｔｙ）という用語は２つまたは３つ以上と定義される。複数形の用語および単数形の用語は、明示的に別様に述べられていなければ同じである。ここで使用される他の一つの（ａｎｏｔｈｅｒ）という用語は、少なくとも１つの第２のもしくはそれ以上と定義される。ここで使用される含む（ｉｎｃｌｕｄｉｎｇ）という用語もしくは有する（ｈａｖｉｎｇ）という用語またはその両方は、包含する（ｃｏｍｐｒｉｓｉｎｇ）であると定義される（すなわち、開放語）。ここで使用される結合される（ｃｏｕｐｌｅｄ）という用語は、必ずしも直接的にではなく、さらに必ずしも機械的にではないが、接続される（ｃｏｎｎｅｃｔｅｄ）であると定義される。ここで使用される用語プログラム（ｐｒｏｇｒａｍ）、ソフトウェア・アプリケーション（ｓｏｆｔｗａｒｅ  ａｐｐｌｉｃａｔｉｏｎ）等は、コンピュータ・システム上で実行されるように設計された命令のシーケンスであると定義される。プログラム、コンピュータ・プログラム、あるいはソフトウェア・アプリケーションは、サブルーチン、ファンクション、プロシージャ、オブジェクト・メソッド、オブジェクト・インプリメンテーション、実行可能なアプリケーション、アプレット、サーブレット、ソース・コード、オブジェクト・コード、共用ライブラリ／ダイナミック・ロード・ライブラリ、もしくはその他の、コンピュータ・システム上で実行されるように設計された命令のシーケンス、またはこれらの組み合わせを含み得る。
【００１７】
動作環境
図１は、本発明の種々の好ましい実施態様に適用し得る動作環境の一例を示す。特に、図１は、サーバ・システム１０２、複数のアクセラレータ・システム１０４、および、１つ以上のネットワーク１０８を介して通信結合された１つ以上のユーザ・クライアント１０６を示す。１つ以上のネットワーク１０８は任意のタイプの有線通信ネットワークもしくは無線通信ネットワークまたはその両方であり得る。例えば、ネットワーク１０８は、イントラネット、エクストラネット、またはインターネットのようなインターネットワーク、あるいはそれらの組み合わせであり得る。ネットワーク（１つまたは複数）１０８は無線リンク、有線リンク、もしくは光ファイバ・リンクまたはそれらの組み合わせを含み得る。
【００１８】
一実施態様では、サーバ・システム１０２は、ＩＢＭ（ＩＢＭ社の登録商標）Ｓｙｓｔｅｍ  ｚ（ＩＢＭ社の登録商標）サーバのような、ただしこれに限定はされない、任意のタイプのサーバ・システムである。サーバ・システム１０２は、アクセラレータ・システム１０４によって処理されてユーザ・クライアント１０６に伝送されるモデリング／シミュレーション・データのような、ただしこれに限定はされない、１つ以上のデータ・セット１１０を含むメモリ・サーバであり得る。アクセラレータ・システム１０４がサーバ・システム１０２上のデータ・セット１１０にアクセスするほかに、ユーザ・クライアント１０６もデータ・セット１１０にアクセスすることができる。サーバ１０２は、一実施態様では、データ・セット１１０と、それへのアクセスとを管理するデータ・アクセス・マネージャ１１８を含む。サーバ１０２は、データ・セット１１０のセキュリティを管理するセキュリティ・マネージャ１２２をも含む。セキュリティ・マネージャ１２２は、データ・アクセス・マネージャ１１８の中にまたは外に常駐することができる。データ・アクセス・マネージャ１１８およびセキュリティ・マネージャ１２２は以下でより詳しく論じられる。アクセラレータ１０４は、一実施態様では、ユーザ・クライアント１０６から受け取られた要求を管理し、それらの要求を満たすために該サーバからデータ１１０を取り出す要求マネージャ１２０を含む。アクセラレータ１０４は、一実施態様では、キャッシュされたデータに関してバルネラビリティ・ウィンドウを実装するためのセキュリティ・カウンタ１２４をも含むことができる。アクセラレータ１０４は、さらに、アクセラレータ１０４上のアプリケーションのレジリエンシーを提供するエラスティック・レジリエンス・モジュール１２６を含むことができる。要求マネージャ１２２、セキュリティ・カウンタ１２４、およびエラスティック・レジリエンス・モジュール１２６は以下でより詳しく論じられる。
【００１９】
アクセラレータ・システム１０４は、一実施態様では、ＩＢＭ（ＩＢＭ社の登録商標）Ｓｙｓｔｅｍ  ｐ（ＩＢＭ社の登録商標）またはＳｙｓｔｅｍ  ｘ（ＩＢＭ社の登録商標）サーバのような、ただしこれに限定はされない、ブレード・サーバである。アクセラレータ１０４の各々は、ＩＢＭ（ＩＢＭ社の登録商標）ＰｏｗｅｒＰＣ（ＩＢＭ社の登録商標）またはＣｅｌｌ  Ｂ／Ｅ処理コアのような、ただしこれらに限定はされない、１つ以上の処理コア１１２を含む。ＩＢＭ、Ｓｙｓｔｅｍ  ｚ、Ｓｙｓｔｅｍ  ｐ、Ｓｙｓｔｅｍ  ｘ、およびＰｏｗｅｒＰＣは、世界中の多くの法域において登録されたインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。アクセラレータ・システム１０４の各々は同じまたは異なるタイプの処理コアを含み得ることに留意するべきである。アクセラレータ・システム１０４は図１の環境１００においてデータ処理の大部分を実行し、サーバ・システム１０２は大抵はデータ・セット１１０を管理するために使用される。ユーザ・クライアント１０６は、一実施態様では、ユーザがサーバ・システム１０２もしくはアクセラレータ・システム１０４またはその両方とインタラクトすることを可能にするワークステーション、デスクトップ、ノートブック、無線通信装置、ゲーミングコンソール等のような、ただしこれらに限定されない、任意の情報処理システムである。サーバ・システム１０２およびアクセラレータ・システム１０４の結合は、様々のシステム・タイプのサーバ１０２とアクセラレータ１０４とのヘテロジニアス結合の故に、ここではハイブリッド・サーバまたはハイブリッド・メモリ・サーバ１１４と称される。ユーザ・クライアント１０６は、ユーザがサーバ・システム１０２もしくはアクセラレータ・システム１０４またはその両方とインタラクトすることを可能にする１つ以上のインターフェース１１６を含む。上で与えられたサーバ・システム１０２、アクセラレータ・システム１０４、およびユーザ・クライアント１０６の例は単に例示を目的とするに過ぎず、他のタイプのシステムも適用可能であることに留意するべきである。
【００２０】
図１の環境１００は、一実施態様では、アウト・オブ・コア処理環境である。図１のアウト・オブ・コア処理環境１００は、一般的に、データの大部分を、サーバ・システム１０２に存在しもしくはサーバ・システム１０２に通信結合され、またはサーバ・システム１０２に存在しかつサーバ・システム１０２に通信結合されている１つ以上の記憶装置において維持し、処理されつつあるデータはアクセラレータ・システム１０４において維持するだけである。例えば、サーバ１０２に存在するデータ・セット１１０がモデリング・データである実施態様では、クライアント・システム１０６のところに存在するユーザはインターフェース１１６を介してモデルとインタラクトする。ユーザ・コマンドは、クライアント・システム１０６から１つ以上のアクセラレータ・システム１０４に伝達される。その１つ以上のアクセラレータ・システム１０４は、該ユーザ・コマンドを満たすモデリング・データの部分をサーバ・システム１０２から要求する。モデリング・データのこれらの部分はアクセラレータ・システム（１つまたは複数）１０４により処理される。該アクセラレータ・システム１０４は、該ユーザの要求を満たすために必要なサーバ・システム１０２からのモデル・データの部分だけを要求し処理する。従って、モデリング・データの大部分はサーバ・システム１０２上に留まっており、モデリング・データの処理されつつある部分だけがアクセラレータ・システム１０４に存在する。該アクセラレータ・システム（１つまたは複数）１０４は、その後、その処理された（例えば、グラフィカル・レンダリング、フィルタリング、変換）モデリング・データをユーザ・クライアント・システム１０６に提供する。サーバ・システム１０２はデータ・セットの所与のセットにアクセラレータの所与のセットを割り当てることができるけれども、これは必要ではないということに留意するべきである。
【００２１】
上で論じられたように、在来のアウト・オブ・コア処理環境はリソース利用、ユーザ・サポート、およびセキュリティに関して一般的に非能率的である。例えば、多くの在来のアウト・オブ・コア処理環境は、一度に一人のユーザをサポートできるに過ぎない。さらに、これらのシステムは、データ・セットがアクセラレータに存在することを可能にし、これによりシステムをバルネラビリティに対して開放する。これらの在来の環境の多くはネットワーク・ファイル・システム（ＮＦＳ）を利用し、これはサーバ１０２におけるシステム応答の低下に到るブロックをページ・アウトすることができる。これらの在来の環境は、さらに読み出し専用モードでモデル・データ処理（レンダリング）をサポートし、データ・セットに対するアップデートおよび変更／アノテーションをサポートしない。さらに、これらの在来の環境のうちの幾つかは、全てのモデル・データをキャッシュするためにダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）を使用するだけである。これは、或るユーセージ・モデルのためには高価であり得る。
【００２２】
従って、以下でより詳しく論じられるように、本発明の種々の好ましい実施態様は、在来のアウト・オブ・コア処理環境に関して上で論じられた問題を次のように克服する。１つ以上の実施態様は、アウト・オブ・コア処理環境１００において複数のユーザがサポートされることを可能にする。例えば、これらの実施態様は、別々の物理的アクセラレータ、仮想化されたアクセラレータを利用し、もしくは同じ物理的アクセラレータで複数のユーザをサポートし、これにより同じキャッシュを共用し、または別々の物理的アクセラレータ、仮想化されたアクセラレータを利用し、かつ同じ物理的アクセラレータで複数のユーザをサポートし、これにより同じキャッシュを共用する。データ・セットがサーバ１０２においてのみキャッシュされる；データ・セットがサーバ１０２とアクセラレータ１０４とにおいてキャッシュされる；データ・セットがデマンド・ページングを用いてアクセラレータ１０４においてキャッシュされる；およびデータ・セットがシステム初期化時に該データ・セットをダウンロードすることによってアクセラレータ１０４においてキャッシュされるような種々のモードでアウト・オブ・コア処理環境１００が使用されることを種々の実施態様が可能にする。
【００２３】
１つ以上の実施態様は、在来のアウト・オブ・コア処理環境で経験される待ち時間を、（ｉ）明示プリフェッチング・プロトコルおよび（ｉｉ）待ち時間を短縮するために帯域幅を大きくするスペキュラティブ・プッシュ−プル・プロトコルを利用することによって短縮する。他の実施態様では、システム１０２のためのカスタム・メモリ・サーバ・デザインがゼロから実装され得る。あるいは、カスタム・メモリ・サーバ・デザインの要素が既存のＮＦＳサーバ・デザインに付加され得る。他の実施態様においてアウト・オブ・コア処理環境１００はデータの変更およびアノテーションをサポートする。さらに、或るユーセージ・モデルは、サーバがサーバとアクセラレータとの間で“コール−リターン”モードのみで使用されることを要求する。従って、１つ以上の実施態様は、データ集約的処理が“コール−リターン”モードで完了させられることを可能にする。さらに、１つ以上の実施態様において“モデル”、サーバ、アクセラレータ、およびユーザ・クライアント上のユーザを隔離するために安全な分散サンドボクシングが使用される。さらに、１つ以上の実施態様は、一定のデータがＤＲＡＭのような高速メモリにもフラッシュ・メモリのような低速メモリにもキャッシュされることを可能にする。
【００２４】
ヘテロジニアスなメモリを有するハイブリッド・サーバ
サーバ１０２は、一実施態様では、図２に示されているように、ヘテロジニアスなメモリ・システム２０２を含む。このヘテロジニアスなメモリ・システム２０２は、一実施態様では、ＤＲＡＭのような高速メモリ２０４と、フラッシュ・メモリもしくはディスク記憶装置２０８またはその両方のような低速メモリ２０６とを含む。高速メモリ２０４は揮発性メモリとして構成され、低速メモリ２０６は不揮発性メモリとして構成されている。サーバ１０２は、データ・アクセス・マネージャ１１８を介して、データ・セット１１０を高速メモリ２０４に、低速メモリ２０６に、あるいはその両方の組み合わせに格納することができる。例えば、サーバ１０２がアプリケーションの部分を該部分が必要とされる前に動作させているとすれば、サーバ１０２は、これらの部分により要求されるデータ・セットを低速メモリ２０６に格納する。なぜならば、該データ・セットは将来の一時点のためのものであり、従って現時点では重要でないからである。例えば、仮想世界でのシミュレーションは、将来のリソース使用および他の種々のモデリング・シナリオのための計画を立てるために現時点より先に動作することができる。従って、種々の実施態様が、フラッシュ、ＤＲＡＭ、およびディスク・メモリのような種々のメモリ・タイプを利用する。さらに、１つ以上の実施態様において、高速メモリ２０４内で入れ替えられるブロックは始めに低速メモリ２０６に移され、次にディスク記憶装置２０８に移される。低速メモリ２０６はメタデータとして使用されることができ、データ交換の単位はＮＦＳストレージ・ブロックではなくてデータ構造の基本構成要素である。
【００２５】
サーバ１０２上に存在するメモリ・システム２０２のほかに、サーバ１０２はアクセラレータ１０４上のゲーテッド・メモリ２１０にもアクセスすることができる。例えば、アクセラレータ１０４が所与のメモリ部分におけるデータ処理を終えると、アクセラレータ１０４は、このメモリ部分をサーバ１０２に解放し、サーバ１０２がこのメモリ部分を利用することを可能にする。ゲーテッド・メモリはサーバにも関連付けられる。サーバは、外部アクセラレータのアクセスを許さないことによってデータを処理して結果をメモリに格納することができる。サーバは、その後、メモリへの“ゲートを開くこと”によってアクセラレータのアクセスを許すことを選択することができる。さらに、メモリ・システム２０２は、一実施態様では、サーバ１０２自体によって管理されるメモリと、アクセラレータ１０４により管理されるメモリ（すなわち、サーバによりアクセラレータに解放されるメモリ）にパーティショニングされ得る。アクセラレータ１０４により管理されるメモリをメモリ・システム２０２の中に持つことにより、アクセラレータ１０４は、サーバ１０２に存在する処理リソースのいずれにも重い負担をかけること無くそのメモリに直接書き込むことができる。フラッシュ・メモリ・モジュールは、アクセラレータ１０４により直接アクセスされるようにサーバの入力／出力（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ（Ｉ／Ｏ））バスに配置され得る。これらのフラッシュ・メモリ・モジュールは、アクセラレータ１０４からメッセージを受け取るネットワーク・リンクを持つことができる。該フラッシュ・メモリ・モジュール上のプロセッサは、これらのメッセージを処理して該フラッシュ・メモリＩ／Ｏモジュール上のフラッシュ・メモリに値を読み／書きすることができる。フラッシュ・メモリは、ＤＲＡＭメモリと一緒にプロセッサ・システム・バスに取り付けられることもできる。リモート・アクセラレータは、システム・バスに取り付けられたフラッシュ・メモリ・モジュールに値を読み／書きするためにＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ（リモート・ダイレクト・メモリ・アクセス））コマンドを使用することができる。
【００２６】
さらに、この構成は、このメモリが複数のアクセラレータ１０４間で共有されるので、アクセラレータ１０４同士が互いにメッセージを渡すことを可能にする。これらのメッセージは、重要性のより高い通信のための高速メモリ２０４を利用して、あるいは重要性のより低い通信のための低速メモリ２０６を利用して、アクセラレータ１０４同士の間で渡され得る。さらに、データもしくはメッセージまたはその両方は低速メモリ・モジュール間でも渡され得る。例えば、アクセラレータ１０４は、低速メモリ２０６からデータを取り出してそれを他の低速メモリ２０６に書き戻すことができる。あるいは、もし低速メモリ・モジュール同士が同じＩ／Ｏバス・ライン上にあるならば、低速メモリ・モジュール同士は互いにデータ／メッセージをやり取りすることができる。サーバ１０２上の低速メモリは、信頼できる一時ストレージまたはバッファ・ストレージとして動作する。これは、アクセラレータ１０４がデータを自分たちの希少なアクセラレータ存在メモリにバッファリングする必要を無くする。各アクセラレータ１０４は、全アクセラレータがアクセスできる公開メモリ領域と共に、自分に割り当てられたサーバ１０２上の私用フラッシュ・メモリ・モジュールを持つことができる。もしデータが他のアクセラレータに転送されなければならないとすれば、そのデータは、該アクセラレータのメモリに読み返されなくても良くて、フラッシュ・メモリ・モジュール間転送を用いてサーバ１０２の領域内で転送され得る。それらの転送は、システム・バスまたはＩ／Ｏバス上で完了させられ得る。これにより、アクセラレータ１０４は、他のアクセラレータへのデータのコピーのための数個のラウンド・トリップを省くことができる。従って、アクセラレータ１０４は、交換ネットワークを用いて自分たちの間で短いメッセージを伝え、サーバ１０２上の低速メモリを用いて長い／大量のメッセージまたは遅延動作要求を伴うメッセージを交換することができる。低速メモリは、アクセラレータ１０４が関連するデータ・アイテムのための処理を完了させて、その結果をサーバ１０２または他のアクセラレータにより消費されるように変換または整理することを必要とせずにこのメモリをサーバ１０２または他のアクセラレータに“解放する”ことを可能にするので、低速メモリは有利である。これは、システムの待ち時間および総合性能を改善する。
【００２７】
下記は、上記実施態様のより詳しい例である。一例では、データ・セット１１０は、該ファイルを“ｍｍａｐ”するクライアントを有するＮＦＳシェアとして構成されたファイルである。“ｍｍａｐ”は、ランダム・アクセス・メモリ・セマンティクスを用いてファイルにアクセスするためにクライアントにより使用されるオペレーティング・システム・コールである。ＮＦＳファイル部分は、ファイル・バイトが触れられるときにＤＲＡＭ内のＮＦＳブロック・バッファ・キャッシュに格納される。しかし、或る場合には、メモリに格納されたブロックは、“エージ”ベースのあるいは使用されていない時間が最も長いものを選ぶ（ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ（ＬＲＵ））方式が実施されているならば、他のブロックと置換され得る。置換されたブロックは、ディスクへのアクセスが要求されるかもしれないので、さらなる待ち時間を招くであろう。従って、他の１つの実施態様は、ＤＲＡＭ内にランダム・アクセス・メモリ・ディスク（ｒａｎｄｏｍ−ａｃｃｅｓｓ−ｍｅｍｏｒｙ−ｄｉｓｋ（ＲＡＭｄｉｓｋ））を作って該ＲＡＭｄｉｓｋファイル・システムをＮＦＳファイル・システムにマッピングする。ＲＡＭｄｉｓｋは、さらに他の１つの例では、フラッシュ・メモリを用いて作られ、ＲＡＭｄｉｓｋファイル・システムはＮＦＳファイル・システムにマッピングされる。ＤＲＡＭ帯域幅要件を伴うアプリケーションのためには、メタデータはフラッシュ・メモリに格納され、大帯域幅データはＤＲＡＭに格納される。置換されたＤＲＡＭブロックは、それらをディスクに書き込むのではなくてフラッシュ・メモリに格納され得る。フラッシュ・メモリは“犠牲”ストレージとして役立つことができる。
【００２８】
ＮＦＳブロックは始めにアクセラレータ１０４によりアクセスされることに留意するべきである。その後、関連データがＮＦＳブロックから抽出される。本発明の１つ以上の好ましい実施態様のメモリ・デザインにおいては、データ交換のグラニュラリティはデータ構造の基本構成要素である。これは、データがサーバ１０２から直接アクセスされアクセラレータ・データ構造に直接書き込まれることを可能にする。例えば、３レベルを有するバイナリ・ツリーは基本構成要素として識別され得る。該基本構成要素は、サーバとアクセラレータとの間の転送の単位として使用され得る。
【００２９】
さらなる実施態様では、サーバ１０２は、前処理モジュール２１２を介して、メモリ・システム２０２に格納されているデータを、該データを改造することを要すること無く要求側アクセラレータ１０４の処理コア１１２によって処理され得るフォーマットにこのデータを変換するために、前処理することができる。換言すれば、サーバ１０２は、アクセラレータ１０４が該データを処理するためにさらなる動作を実行することを要求されることの無いように、このデータを事前記憶し事前構造化する。例えば、アクセラレータ１０４はＩＢＭ（ＩＢＭ社の登録商標）Ｃｅｌｌ  Ｂ／Ｅ処理コア１１２を含むことができる。従って、サーバ１０２は、アクセラレータ１０４が始めにデータを所要のフォーマットに変換することを要すること無く該データを処理できるように、データを前処理してＣｅｌｌ  Ｂ／Ｅ処理コアにより要求されるフォーマットまたはデータ構造とすることができる。データをアクセラレータ１０４により要求されるフォーマットに変換するほか、サーバ１０２はデータを所与の操作のためのフォーマットまたはデータ構造に変換することもできることに留意するべきである。例えば、所与のデータ・セットに普通はそこで分類操作を行わせるようにサーバ１０２が決定したとすれば、サーバ１０２はこのデータ・セットを分類操作に適する形に変換することができる。従って、アクセラレータ１０４が該データ・セットを受け取ると、該アクセラレータは、該データをフォーマットすることを必要とせずに該分類操作を実行することができる。
【００３０】
さらに、ユーザは、ユーザ・クライアント・システム１０６においてデータとインタラクトする間に該データ・セット１１０にアノテートすることができる。ユーザがデータ１１０にアノテートするとき、アクセラレータ１０４は、該アノテーション情報を、さらなるユーザが該アノテーションを見ることができるように、サーバ１０２に書き戻す。複数のユーザがモデルのようなデータ・セットにアクセスする実施態様では、ユーザは、始めに、アップデートされる必要のあるデータ領域への書き込みロックを得る。この書き込みロックは、データ・アクセス・マネージャ１１８によって許可されて管理される。アノテーションはロックを得ること無く行われ得るけれども、アノテーションに対する変更は書き込みロックを必要とする。クライアントによるデータ構造に対するアップデートは、エントリがキャッシュされたデータを有するクライアントにおいて無効とマークされるという結果をもたらす。これらのエントリは、その後、必要時にリフレッシュされる。
【００３１】
ハイブリッド・サーバにおけるデータのステージング
下記は、ハイブリッド・サーバ１１４においてデータをステージすることを目指す実施態様に関する詳細な議論である。上で論じられたように、ハイブリッド・サーバ１１４のサーバ・システム１０２は、アクセラレータ１０４により処理される１つ以上のデータ・セット１１０を含む。従って、アクセラレータ１０４により処理されるデータ・セット１１０の部分への安全で効率的なアクセスを提供するために、ハイブリッド・サーバ１１４において種々のデータ・ステージング・アーキテクチャが利用され得る。
【００３２】
一実施態様では、データ・アクセス・マネージャ１１８は、データがサーバ・システム１０２とアクセラレータ１０４との間でどのようにアクセスされるかを管理する。一実施態様では、データ・アクセス・マネージャ１１８は、サーバ・システム１０２、アクセラレータ１０４のうちの１つ以上、もしくはリモート・システム（図示されていない）またはこれらの組み合わせに存在する。一実施態様では、データ・アクセス・マネージャ１１８は、１セットのアクセラレータをサーバ・システムに存在する第１データ・セットに割り当て、他の１セットのアクセラレータを第２セット・データ・セットに割り当てることができる。この実施態様では、データ・セットに割り当てられたアクセラレータだけがそのデータ・セットにアクセスする。代わりに、データ・アクセス・マネージャ１１８はアクセラレータを複数のデータ・セットに割り当てることができる。
【００３３】
データ・アクセス・マネージャ１１８は、さらに、種々のデータ・アクセス・コンフィギュレーションに従ってアクセラレータ１０４を設定する。例えば、一実施態様では、データ・アクセス・マネージャ１１８は、直接サーバ・システム１０２からのデータ・セット１１０にアクセスするようにアクセラレータ１０４を設定する。別様に言えば、アクセラレータ１０４はデータ・セット１１０からのデータのどれをもキャッシュせず、データ・セット１１０はサーバ・システム１０２に格納されるだけである。この実施態様は、一般的にサーバ・システム１０２の方がアクセラレータ１０４よりも安全で信頼できるシステムを提供するので、データ・セット１１０の機密性／セキュリティおよび信頼性が重要である場合に有利である。
【００３４】
他の１つの実施態様では、図３に示されているように、データ・アクセス・マネージャ１１８は、アクセラレータ１０４を、該アクセラレータ１０４により処理されるべきデータ・セット１１０のデータの全てを取り出して自分に格納／キャッシュするように設定する。例えば、１つ以上のアクセラレータ１０４は、Ｔ１において、飛行機モデルのような所与のモデルとインタラクトする要求を受け取る。アクセラレータ（１つまたは複数）１０４に存在する要求マネージャ１２０は、Ｔ２で要求３０２を解析し、Ｔ３で、該ユーザの要求を満たすためにサーバ・システム１０２からデータ３０４の全部または実質的に全部を取り出す。次に、アクセラレータ１０４は、Ｔ４で、このデータを局所的にメモリ／キャッシュ３０６に格納する。次に、Ｔ５でユーザ・クライアント１０６からアクセス要求が受け取られると、アクセラレータ１０４は、Ｔ６で、サーバ・システム１０２から該データを要求することと比べてキャッシュされているデータ３０４に局所的にアクセスする。
【００３５】
他の１つの実施態様では、データ・アクセス・マネージャ１１８は、ユーザ・クライアントから最初の要求を受け取った後にデータ・セットを取り出して格納／キャッシュするのと比べて、システム初期化時にデータ・セットを取り出して格納／キャッシュするようにアクセラレータ１０４を設定するということに留意すべきである。アクセラレータ１０４へのデータ・セットのこのダウンロードは、アクセラレータ１０４とサーバ・システム１０２との高速接続で程よい量の時間で行われ得る。一旦メモリ３０６に格納されれば、データ・セット３０４は、上で論じられたようにアクセラレータ１０４において直接アクセスされ得る。
【００３６】
１つの代わりの実施態様では、データ・アクセス・マネージャ１１８は、図４に示されているように、ユーザの要求を満たすために必要とされるデータ・セット１１０の一部分４０４だけを取り出して格納／キャッシュするようにアクセラレータ１０４を設定し、そのデータ・セットの残りの部分はサーバ・システム１０２に留まる。例えば、１つ以上のアクセラレータ１０４は、Ｔ１で、クレジットカード不正検出モデルのような所与のモデルとインタラクトする要求４０２を受け取る。アクセラレータ１０４に存在する要求マネージャ１２０は、Ｔ２で、その要求を解析し、Ｔ３で、ユーザの要求を満たすデータ１１０を、それのメモリ４０６が許す量だけ、サーバ・システム１０２から取り出す。アクセラレータ１０４は、次にＴ４で、このデータ４０４を局所的にメモリ／キャッシュ４０６に格納する。次に、Ｔ５でアクセス要求がユーザ・クライアント１０６から受け取られると、アクセラレータ１０４は、キャッシュされているデータ４０４の部分で局所データが該ユーザの要求を満たし得るか否かにより、Ｔ６でキャッシュされているデータ４０４に局所的にアクセスするかもしくはＴ７でサーバ・システムに存在するデータ・セット１１０にアクセスし、またはＴ６でキャッシュされているデータ４０４に局所的にアクセスしかつＴ７でサーバ・システムに存在するデータ・セット１１０にアクセスする。この実施態様から分かるように、アクセラレータ１０４は必要に応じてサーバ・システム１０２上のデータにアクセスするだけである。
【００３７】
アクセラレータ１０４の設定は、データ・アクセス・マネージャ１１８によって静的にもしくは動的にまたは静的にかつ動的に行われ得る。例えば、システム・アドミニストレータは、上で論じられた実施態様のうちの１つに従ってアクセラレータを静的に設定するようにデータ・アクセス・マネージャ１１８に命令することができる。代わりに、データ・アクセス・ポリシーのセットがアクセラレータ１０４のうちの１つ以上と関連付けられ得る。これらのデータ・アクセス・ポリシーは、サーバ１０２からのデータにアクセスするためにアクセラレータ１０４をどのように設定するかを示す。この実施態様では、データ・アクセス・マネージャ１１８は、所与のアクセラレータ１０４と関連付けられたデータ・アクセス・ポリシーを識別し、そのデータ・アクセス・ポリシーにより示される上で論じられたデータ・アクセス実施態様のうちの１つに従ってそのアクセラレータ１０４を静的に設定する。
【００３８】
代わりに、データ・アクセス・マネージャ１１８は、アクセス・コンフィギュレーション、すなわち、データ・セット全体の全てを格納／キャッシュする、データ・セットの一部分を格納／キャッシュする、またはどのデータも全く格納／キャッシュしない、のうちの１つに基づいてアクセラレータ１０４の各々を動的に設定することができる。この実施態様では、データ・アクセス・マネージャ１１８は、アクセラレータ１０４をどのように動的に設定するかを決定するためにデータ・ポート、ユーザ属性、データと関連付けられたセキュリティ属性などのような種々のタイプの情報を含み得るアクセス・コンテキストを利用する。例えば、データ・アクセス・マネージャ１１８は、データがサーバ１０２からアクセラレータ１０４へ、もしくはアクセラレータ１０４からユーザ・クライアント１０６へ、またはサーバ１０２からアクセラレータ１０４へかつアクセラレータ１０４からユーザ・クライアント１０６へ転送されるポートを識別することができる。識別されたポートに基づいて、データ・アクセス・マネージャ１１８は、ポートと関連付けられたセキュリティもしくは信頼性またはその両方に依存してデータ・セット全体の全てを格納／キャッシュする、データ・セットの一部分を格納／キャッシュする、あるいはどのデータも全く格納／キャッシュしないようにアクセラレータ１０４を動的に設定することができる。データがポートの所与のセットを超えて送信されるときにどのアクセス・コンフィギュレーションが使用されるべきかを示すためにデータ・アクセス・ポリシーが使用され得る。
【００３９】
他の１つの例では、データ・アクセス・マネージャ１１８は、アクセスされるべきデータ・セット１１０に基づいてアクセラレータ１０４を動的に設定する。例えば、データ・セット１１０は異なるタイプのデータ、異なるタイプの機密性要件などを含み得る。アクセラレータ１０４をどのように動的に設定するかを決定するためにデータ・アクセス・マネージャ１１８により使用されるデータ・セット１１０と関連付けられたこの情報は、そのデータ・セット自体の中、そのデータ・セットと関連付けられたレコードの中、などに格納され得る。この情報に基づいてデータ・アクセス・マネージャ１１８は、上で論じられたアクセス・コンフィギュレーションのうちの１つに従ってアクセラレータ１０４を動的に設定する。例えば、所与のデータ・セット１１０が高度の機密性を要求するとデータ・アクセス・マネージャ１１８が判定したならば、データ・アクセス・マネージャ１１８は、データ・セット１１０を少しもキャッシュせずにサーバ１０２からのデータ・セット１１０にアクセスするだけであるようにアクセラレータ１０４を設定することができる。データ・セット１１０と関連付けられたメタデータにどのアクセス・コンフィギュレーションが基づくべきかを示すためにこの実施態様においてデータ・アクセス・ポリシーが使用され得る。
【００４０】
さらに、他の１つの例では、データ・アクセス・マネージャ１１８は、データ・セット１１０へのアクセスを要求しているユーザ・クライアント１０６に存在するユーザに基づいてアクセラレータ１０４を動的に設定する。例えば、ユーザは、自分に関連付けられた種々のアクセス権およびパーミッションを持ち得る。従って、この例では、データ・アクセス・マネージャ１１８は、アクセス権およびパーミッション、データ使用歴、要求タイプ（ユーザがそのデータで何をすることを要求しているか）、などのようなユーザと関連付けられた種々のメタデータを識別する。このユーザ・メタデータに基づいてデータ・アクセス・マネージャ１１８はアクセス・コンフィギュレーションのうちの１つに従ってアクセラレータ１０４を動的に設定する。該ユーザ・メタデータはサーバ１０２に存在するユーザ・レコード、アクセラレータ１０４、もしくはリモート・システムまたはそれらの組み合わせに格納され得ることに留意するべきである。
【００４１】
上で論じられたように、データ・アクセス・マネージャ１１８の他に、ハイブリッド・サーバ１１４はセキュリティ・マネージャ１２２も含む。セキュリティ・マネージャ１２２は、データ・アクセス・マネージャ１１８の一部であることができ、あるいはデータ・アクセス・マネージャ１１８の外側でサーバ・システム１０２、１つ以上のアクセラレータ１０４、もしくはリモート・システムまたはそれらの組み合わせの上にも存在することができる。セキュリティ・マネージャ１２２は、ハイブリッド・サーバ１１４のためにエラスティック・セキュリティを提供する。例えば、セキュリティ・マネージャ１２２は、上で論じられたアクセス・コンフィギュレーションに従ってアクセラレータ１０４の動的設定を管理することができる。さらに、セキュリティ・マネージャ１２２は、サーバ１０２と各アクセラレータ１０４との間の通信リンクに様々のレベルのセキュリティを動的に適用することができる。
【００４２】
この実施態様では、セキュリティ・マネージャ１２２は、サーバ１０２とアクセラレータ１０４との間の完全暗号化リンク、または、データの全ピースが暗号化されるわけではないので該リンク上の部分的なデータに関しての強度／暗号化はより低いけれども性能はより高い変形暗号化リンクを提供する。一実施態様では、システム・アドミニストレータまたはユーザ・クライアント１０６に存在するユーザは完全暗号化リンクまたは変形暗号化リンクを選択することができる。他の１つの実施態様では、セキュリティ・マネージャ１２２は、データ・アクセス・コンフィギュレーションに関して上で論じられたものと同様に、データが送信されもしくはデータがアクセスされまたはデータが送信されかつアクセスされるポートに基づいて完全暗号化リンクまたは変形暗号化リンクを選択する。さらに他の１つの実施態様では、セキュリティ・マネージャ１２２は、アクセラレータ１０４に適用されるアクセス・コンフィギュレーションに基づいて完全暗号化リンクまたは変形暗号化リンクを選択する。例えば、アクセラレータ１０４がサーバ１０２からのデータ・セット１１０にアクセスするだけで該データを全くキャッシュしないように設定されているとすれば、セキュリティ・マネージャ１２２はサーバ１０２とアクセラレータ１０４との間のリンクを完全に暗号化することができる。一方、アクセラレータ１０４がデータ・セット１１０をキャッシュするように設定されているとすれば、セキュリティ・マネージャ１２２はサーバ１０２とアクセラレータ１０４との間に部分的に暗号化される（暗号強度がより低い、あるいはデータが部分的に暗号化される）リンクを提供することができる。
【００４３】
データがアクセラレータ１０４においてキャッシュされる実施態様では（例えば、図３および図４）、セキュリティ・マネージャ１２２はバルネラビリティ・ウィンドウ・メカニズムも実装する。この実施態様では、セキュリティ・マネージャ１２２は、アクセラレータ１０４にキャッシュされているデータのためにカウンタ１２４を維持するようにアクセラレータ１０４に命令する。カウンタ１２４が所与の値に達すると、キャッシュ内のデータは最早アクセス不能となる。例えば、アクセラレータ１０４は、該データを削除し、該データに上書きする、などである。その所与の値は、時間間隔またはアクセスの回数のような、ただしこれらに限定はされない、デフォルト値であり得る。代わりに、セキュリティ・マネージャ１２２はその所与の値をセットして、この所与の値までカウントするようにアクセラレータ１２４に命令することができる。さらに、異なるデータ・セットあるいはデータ・セットの部分に異なる値が関連付けられ得る。例えば、アクセラレータ１０４においてキャッシュされているデータ・セット１１０の各部分が異なるカウンタおよび値と関連付けられ得る。データの全てがアクセラレータ１０４にキャッシュされて唯一のユーザがアクセスを要求するとすれば、該ユーザが該データへのアクセスを終了するとアクセラレータ１０４はバルネラビリティ・ウィンドウが終了する前に該データをキャッシュから除去することができるということに留意するべきである。しかし、複数のユーザがデータへのアクセスを要求しているとすれば、他のユーザがデータへのアクセスを要求することができるのでデータはバルネラビリティ・ウィンドウが終了するまでアクセラレータ１０４に残っていなければならない。
【００４４】
バルネラビリティ・ウィンドウ・メカニズムは、部分的に暗号化されるリンクが性能を高めると同時にアクセラレータが自分のキャッシュ内のデータを落とす／削除するように要求することによってデータのセキュリティをなお確保することを可能にするために、セキュリティ・マネージャ１２２がハイブリッド・サーバ１１４におけるセキュリティ・レベルを調整することを可能にする。システム設計者は、リンクの暗号強度とバルネラビリティ・ウィンドウの持続時間との適切なトレード・オフを行うことを選択することができる。アクセラレータ・システムのセキュリティ供給についての設計者の信頼レベルに基づいてバルネラビリティ・ウィンドウの持続時間をセットするために同様の考慮事項が用いられ得る。バルネラビリティ・ウィンドウ・メカニズムは、さらに、新しいデータがキャッシュされ得るようにデータがアクセラレータのキャッシュに長時間維持されないことも保証する。
【００４５】
セキュリティ・マネージャ１２２はサーバ１０２とアクセラレータ１０４との間の通信リンクを所与のレベルのセキュリティで設定するので、アクセラレータ１０４によりキャッシュされるデータは、或る実施態様では、暗号化される。或る場合には、２つ以上のアクセラレータ１０４が同じキャッシュされているデータ・セットにアクセスする。例えば、第１アクセラレータは第１ユーザからの要求を満たすことができ、第２アクセラレータは第２ユーザからの要求を満たすことができる。例えば、これらのユーザが同じモデルにアクセスするとすれば、第１ユーザおよび第２ユーザが同じデータへのアクセスを要求する高い確率が存在する。従って、アクセラレータのうちの１つが自分のキャッシュの中のデータを復号化するとき、該アクセラレータは、その復号化されたデータを、同じデータ・セットにアクセスしている他のアクセラレータと共有することができる。このようにして、該他のアクセラレータは、そのデータを復号化することを要求されなくて、処理リソースを節約することができる。第１アクセラレータにおいてこの復号化されたデータにバルネラビリティ・ウィンドウが適用されているとすれば、該データが第２アクセラレータと共有されているときには該復号化されたデータに対してこのバルネラビリティ・ウィンドウが適用されるということに留意するべきである。
【００４６】
上の議論から分かるように、アクセラレータ１０４は、ユーザの要求を満たすためにデータ・セットにアクセスするために様々の仕方で設定され得る。ハイブリッド・サーバ１１４は、サーバ１０２とアクセラレータ１０４との間の通信リンクに関して、さらにアクセラレータがデータをどのようにキャッシュするかに関してセキュリティ・レベルが調整され得る動的セキュリティ環境をも提供する。さらに、各アクセラレータ１０４は、エラスティック・レジリエンスを提供するように設定され得る。例えば、重要なデータが失われなくてユーザの体験が途切れずに続くようにアクセラレータ１０４におけるソフトウェア・クラッシュから回復し得ることが重要である。
【００４７】
一実施態様では、エラスティック・レジリエンスはアクセラレータにおいてエラスティック・レジリエンス・モジュール１２６により提供される。エラスティック・レジリエンス・モジュール１２６は、単一のインスタンスまたは一時点で動作しているソフトウェア・プログラムの複数のコピーを持つようにアクセラレータを動的に設定することができる。エラスティック・レジリエンス・モジュール１２６は、これらの設定をユーザの要求、アクセスされるデータの性質、必要とされる性能および利用可能なリソースに基づいて替えることができる。レジリエンスは、同時に動作している同じプログラムの少なくとも２つのコピーを持つことによって提供される。この実施態様では、各プログラムが他方が何を行っているかを常に知っているように、該ソフトウェア・プログラムは互いにチェックし合う。従って、該プログラムのうちの一方がクラッシュすると、他方のプログラムは、クラッシュしたプログラムのための処理を途切れること無く引き継ぐことができる。
【００４８】
協調スペキュラティブ・データ・プッシュ−プル
上で論じられたように、或るユーセージ・モデルはサーバ１０２がサーバ１０２とアクセラレータ１０４との間でコール−リターン・モードのみで使用されることを要求する。このタイプのコンフィギュレーションでは、アクセラレータ１０４自体はサーバ１０２へのアクセスを行うことを許されない。従って、図５に示されているように、１つ以上の実施態様において、ユーザのクライアント１０６は、要求、コマンドなどをアクセラレータ１０４に直接送ることと比べて、要求、コマンドなどをサーバ１０２に送る。これらの実施態様は、サーバ１０２を通るコール−リターン・パスを利用し、データ・スヌープを伴うプロトコル・トンネル５０２をセットアップする。コール−リターンは、ハイブリッド・サーバ１１４の安全な実装を可能にする。
【００４９】
これらの実施態様においてデータ・アクセス・マネージャ１１８は、ユーザ・クライアント１０６から直接サーバ１０２により受け取られた要求を様々な仕方で処理することができる。一例では、クライアント１０６から受け取られた要求は該サーバの入力から直接アクセラレータ１０４へトンネルされる。他の１つの例では、これらの要求はサーバ１０２で処理され、結果がユーザ・クライアント１０６に送り返される。ユーザ・クライアント１０６は、その後、このデータを処理のために１つ以上のアクセラレータへ“プッシュ”し、該アクセラレータ１０４は処理済みのデータをプロトコル・トンネル５０２に沿ってユーザ・クライアント１０６に送り返す。しかし、ユーザ・クライアント１０６がその処理自体を効率的に実行するのに充分なリソースを含むならば、ユーザ・クライアント１０６は該データをアクセラレータ１０４へプッシュする必要はない。さらに他の１つの例では、入ってきた要求はプロトコル・トンネル５０２に沿ってアクセラレータ１０４およびサーバ１０２の両方へミラーされる。例えば、サーバ１０２は実際の要求のコピーを維持し、該要求または該コピーをアクセラレータ１０４に渡す。さらに、サーバ１０２は、他の１つの例では、小さい要求に対応する結果データをユーザ・クライアント１０６へプッシュするけれども、長い／大量の結果がアクセラレータ１０２に対するユーザ・クライアントの要求によって提供されることを可能にする。例えば、長い／大量の結果をもたらす要求はアクセラレータ１０４に渡され、該アクセラレータはサーバ１０２から対応するデータを要求する。さらに、長い要求メッセージは、サーバ１０２での“代理”処理（アクセラレータ１０４に代わっての）を容易にするためにプロトコル・トンネル５０２に沿ってアクセラレータ１０４へ送られることができる。写しの要求はサーバ１０２において落とされることができる。
【００５０】
プロトコル・トンネルは、要求が１つのネットワーク・ポートで受け取られ、その後に他の１つのネットワーク・ポートを通ってアクセラレータ１０４へ送られることとなるように設定される。しかし、サーバ１０２は、図５に示されているように、データ・アクセス・マネージャの中にあるいはデータ・アクセス・マネージャの外側に存在することのできるスヌーピング・モジュール５０４を含む。スヌーピング・モジュール５０４は、要求を満たすためにアクセラレータにより必要とされるデータ・セットまたはデータ・セットの部分を識別するために、受け取られてアクセラレータに渡される要求をスヌープする。データ・アクセス・マネージャは、その後、識別されたデータ・セットまたはデータ・セットの部分をアクセラレータへプッシュすることができる。一実施態様では、サーバからアクセラレータにより受け取られたプッシュされたデータは、別個の“プッシュ”キャッシュに格納され、プルされたデータと共には格納されない。しかし、この実施態様は必要とはされない。従って、アクセラレータが要求を受け取るとき、サーバは必要とされるデータ・セットを既にアクセラレータに送り始めているのでアクセラレータはサーバから該データ・セットを取り出さなくても良い。ユーザ・クライアント１０６からの要求は、該要求のために必要とされるデータが既に途中にあることをアクセラレータに示す表示として役立つビットを付加されることができる。アクセラレータ１０４は、従って、サーバ１０２に対するデータ要求を回避することができる。このような“プッシュ−プル”プロトコルは、ユーザ・クライアント１０６がユーザの全ての可能性のある位置についての完全な知識を持っていないけれどもサーバ１０２がこの情報を持っていそうであって、異なる複数のユーザからの該データ・セットに対するアップデートが該データ・セットにおいて反映され、その後に他のユーザへ“プッシュ”され得るときに、有利である。
【００５１】
上記実施態様の１つの利点は、全てのユーザ要求が始めにサーバ１０２に向けられるのでサーバ１０２が複数のユーザ要求についての知識を有することである。例えば、在来のアウト・オブ・コア処理環境では、各アクセラレータは一般的に一度に一人のユーザをサポートできるに過ぎない。従って、これらの在来の環境は、普通は、他のユーザのユーセージ・パターンに基づく如何なるタイプのスペキュラティブ・プッシュ−プル・プロトコル操作も実行できない。しかし、本発明の１つ以上の好ましい実施態様ではユーザ・クライアント１０６からの要求は始めにサーバ１０２に送られるので、サーバ１０２はユーザ・クライアント１０６の全てがどんなデータ・セットにアクセスしているかを監視する。このことは、サーバ１０２が、過去に複数のユーザにより要求されたデータに基づいて、またはユーザにより現在要求されているデータに基づいて、所与のユーザ・クライアント（１つまたは複数）１０６のために将来どんなデータが必要とされることになるかを予測または推測することを可能にする。サーバ１０２は、その後、既に上で論じられた実施態様と同様に、このデータを適切なアクセラレータ１０４へプッシュ・アウトすることができる。
【００５２】
例えば、サーバ１０２が飛行機のモデルを含む実施態様を考察する。ユーザは、該ユーザのクライアント・マシン１０６上の実時間ディスプレイで飛行機のグラフィカル・モデルを通してナビゲートする。複数のユーザからの要求に基づいて、サーバ１０２は、ユーザの大部分が手荷物コンパートメントの第１レベルにいるときには彼らが手荷物コンパートメントの第２レベルへ移動すると判定する。このとき、受け取られた要求に基づいてユーザが手荷物コンパートメントの第１レベルにいるとサーバ１０２が判定すると、サーバ１０２は手荷物コンパートメントの第２レベルについてのデータを対応するアクセラレータ（１つまたは複数）１０４へプッシュすることができる。従って、アクセラレータ１０４は、ユーザからの第２レベルにアクセスする要求を受け取る前に手荷物コンパートメントの第２レベルについてのデータを既に持っている（さらに、場合によっては該データを既に処理してある）。この実施態様は、サーバ１０２からのこのデータにアクセスする前に第２レベルへのアクセスのための要求が受け取られるまでアクセラレータ１０４が待たなければならないコンフィギュレーションにおいてアクセラレータ１０４が通常経験する遅れを緩和する。
【００５３】
さらなる実施態様では、データ・アクセス・マネージャ１１８は、アクセラレータ１０４へプッシュするデータを決定する要求を満たすためにアクセラレータ１０４によりプルされているデータを監視する。これらの実施態様は、要求がユーザ・クライアント１０６からアクセラレータ１０４へ送られるかあるいは上で論じられたプロトコル・トンネリング実施態様を用いてユーザ・クライアント１０６からサーバ１０２へ送られる環境コンフィギュレーションに適用可能である。アクセラレータ１０４が要求を満たすためにサーバ１０２からデータをプルすると、サーバ１０２はどんな関連データをもアクセラレータ１０４へプッシュすることができるので、アクセラレータ１０４は必要時に既にこのデータを持っていて、さらなるプル操作を行わなくても良い。例えば、データ・セット１１０が階層ツリーのような階層性を持って格納されたデータを含む実施態様では、アクセラレータ１０４がツリーの頂部エレメントをプルしているとサーバ１０２が判定すると、サーバは、アクセラレータ１０４がそのプルされている頂部エレメントと関連する葉エレメントを結局は必要とするようになると予測／推測する。従って、サーバ１０２は、それらの葉エレメントをアクセラレータ１０４へプッシュする。一実施態様では、これらのプッシュ／プル操作はタンデム式に行われる、すなわち、サーバがデータをアクセラレータへプッシュ・アウトし、同時にアクセラレータは関連するデータをサーバからプルする。
【００５４】
他の１つの実施態様では、サーバ１０２は、アクセラレータ１０４へプッシュするデータを決定するために、データ・アクセス・マネージャを介して、アクセラレータ１０４によりプルされているデータのセマンティック解析を行う。換言すれば、サーバ１０２は、この実施態様では、アクセラレータ１０４により現在プルされつつあるデータに関連する全てのデータを送るだけではなくて、プルされたデータに関連のあるデータを送る。例えば、サーバ１０２に存在するデータ・セット１１０が仮想世界についてのものである例を考察する。ユーザはユーザ・クライアント１０６を介して、該ユーザが選択できる３つの異なる経路が存在するエリアへナビゲートする。これら３つの経路をユーザに対して表示するためにアクセラレータ１０４がデータをサーバ１０２からプルしているとき、サーバ１０２は、このプルされたデータをセマンティック解析し、ユーザは第２および第３の経路のための鍵を入手していないのでユーザは第１経路を選択できるだけであると判定する。従って、サーバ１０２は第１経路と関連付けられているデータをアクセラレータ１０４へプッシュするだけである。まさしくデータ・セット・ユーセージ・ローカリティに基づくデータをプッシュする強行アプローチは効率が悪そうであることが理解されるであろう。この強行アプローチは、アドレスされているデータ・アイテムに隣接しているけれどもユーザ・アプリケーションには役立たないデータ・アイテムをもたらすことがある。代わりに、本発明の１つ以上の好ましい実施態様は、データをアクセラレータ１０４へプッシュするためにユーザにより操作されるアプリケーション−レベル・オブジェクトとのローカリティおよびアフィニティが使用され得るように、要求をセマンティックに解析する。この方策は、待ち時間を減少させると共に、“プッシュ”されたデータをアプリケーション・ユーザ・コンテキストにもっと役立つようにすることによって効率向上を可能にする。
【００５５】
プッシュ／プル・データ移動は、より大きなモデルの中にネストさせられている複数のモデルの処理を著しく向上させることができるということに留意するべきである。アクセラレータ１０４がデータをサーバからプルし、そのデータが、独立のモデルが画定されているエンティティに関係するときには、サーバ１０２は該モデル・データを直接アクセラレータ１０４へプッシュすることができる。爾後のアクセスは全て、ネストさせられているモデルのローカル・コピーに向けられる。同時の読み出しおよび書き込みのための該モデルの共有は、ロッキングまたはコヒーレントなアップデートによって成し遂げられ得る。
【００５６】
プリフェッチ・パイプライニング
上述の協調スペキュラティブ・データ・プッシュ／プルの実施態様のほかに、ハイブリッド・サーバ１１４はアプリケーション・レベル・プリフェッチング、すなわち明示的プリフェッチングのためにも設定される。この実施態様では、ＮＦＳベースの読み出しの間に暗黙のプリフェッチングが行われ（ｍｍａｐされたｆｉｌｅｓｈａｒｅにおけるｆｒｅａｄまたはｒｅａｄ）、明示的プリフェッチングは、実行されているアプリケーションのセマンティクスに基づいてデータをプリフェッチするために使用される。暗黙のプリフェッチングは、空間的ローカリティの故に切れ目無く配置されているデータ・ブロックをもたらすことができるけれども、アプリケーション・ユーザ・コンテキストには有用でないかもしれない。仮想世界またはモデリング／グラフィカル環境における１つの代表的なアプリケーション・ユーザ・コンテキストは、階層および関係を有する数百ないし数千のオブジェクトから成る。明示的プリフェッチングは、ユーザ・アプリケーション・コンテキストにおけるオブジェクト・ローカリティおよびアフィニティがプリフェッチングのために使用されることを可能にする。これらのオブジェクトは必ずしもメモリにおいて切れ目無く置かれない。明示的プリフェッチングは、ユーザの動作に従うので、ユーザにとっては強行的な暗黙のプリフェッチより役に立ちそうである。一実施態様では、アプリケーションにおけるユーザの状態情報に基づいて、該アプリケーションは、アプリケーションまたはユーザが必要とするかもしれないデータのブロックを前もって要求することができる。そのようなブロックは、エージング・アルゴリズムまたは使用されていない時間が最も長いものを選ぶ（ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ（ＬＲＵ））アルゴリズムを用いる適切な置換方策でスペキュラティブ・キャッシュに格納される。このことは、スペキュラティブ・ブロックがどのような決定性のキャッシュされているデータにも取って代わらないことを可能にする。
【００５７】
一実施態様では、１つ以上のアクセラレータ１０４は、図６に示されているように、ユーザ・クライアント１０６上で動作しているアプリケーション６０４のためにデータをプリフェッチする１つ以上のプリフェッチャ６０２を含む。ユーザ・クライアント１０６上で動作するアプリケーション６０４の状態維持処理はサーバ１０２上で動作し得ることが理解されるであろう。アプリケーション処理は実際にはサーバ１０２に分散させられることができ、ユーザ・クライアントのバット・プリフェッチ（ｂｕｔ  ｐｒｅｆｅｔｃｈ）はユーザ・クライアント１０６での処理によりトリガーされ得る。しかし、該１つ以上のプリフェッチャはサーバ・システム１０２にも同様に存在し得ることにも留意するべきである。プリフェッチャ（１つまたは複数）６０２は、該アプリケーションの現在の状態と関連付けられた複数の選択肢、状況、シナリオなどと関連付けられたデータをロードするｎ−ウェイ選択プリフェッチャである。該プリフェッチャは、複数の次元に沿うプリフェッチ選択を行うためにユーザ選択肢および優先権、ユーザ・インタラクションを必要とする有望なモデル、現在のアプリケーション状態、（サーバ１０２に）入ってくる外部ストリーム状態、などを含むことのできる、サーバ１０２もしくはアクセラレータ（１つまたは複数）１０４またはその両方において、あるいはユーザ・クライアント１０６において維持されている情報のセット６０６を分析する。該ｎ−ウェイ・プリフェッチャは、入力として、１セットの種々のプリフェッチャのプリフェッチ要求を取る。各プリフェッチャは種々の選択基準に基づいて要求を行い、該ｎ−ウェイ・プリフェッチャは１つ以上のプリフェッチャの要求を出すことを選ぶことができる。
【００５８】
例えば、サーバ１０２上で動作する仮想世界のようなアプリケーションを考察する。この例では、ユーザはユーザ・クライアント１０６を介して、ユーザが２方向のうちの１つに進むことを可能にするドアへ自身をナビゲートする。ユーザが該ドアに近づくと、該アプリケーションは、ユーザがアクセラレータ１０４で取ることのできる全ての可能な方向からブロックをキャッシュすることができる。ユーザが１つの方向を選ぶことを選択すると、１つの“方向”に対応するデータは維持されることができ、他の“方向”データは落とされ得る。ユーザはメモリ可用性およびサービス品質要件に依存して将来の使用のために全ての“方向”が維持され得るように、常に自分の歩みを後戻りすることができる。プリフェッチングは、もしデータがプリフェッチされなかったならば、ユーザが通常経験することになる遅延を減少させる。
【００５９】
さらに、或る場合にはユーザは２つの方向のうちのどちらをも選択できるというわけではなくて該方向のうちの一方だけを選択できる。従って、プリフェッチャ６０２は、ユーザが選択し得る経路を特定してその経路についてのデータだけをプリフェッチするために、ユーザ選択履歴のようなプリフェッチ情報６０６を解析する。これは、上で論じられたセマンティック解析実施態様に似ている。
【００６０】
一実施態様では、アクセラレータ１０４は、ユーザ・クライアント１０６に存在するアプリケーション６０４からのプリフェッチ要求を記憶するプリフェッチ要求キュー６０８を含む。例えば、複数の取られ得る経路を伴うドアがユーザに対して表示される状態にアプリケーション６０４があるとすれば、アプリケーション６０４は、該経路の各々について１つずつ、複数のプリフェッチ要求をアクセラレータ１０４に送る。これらのプリフェッチ要求は、アクセラレータ１０４が所与の経路に関連付けられているデータをプリフェッチすることを要求している。アクセラレータ１０４は、これらのプリフェッチ要求６０８の各々をプリフェッチ要求キュー６１０に格納する。プリフェッチ要求キュー６１０は、ＤＲＡＭのような高速メモリ内の一時領域、高速メモリ内の専用部分であることができ、あるいはフラッシュ・メモリのような低速メモリ内に存在することができる。プリフェッチャ６０２は、プリフェッチ要求と関連付けられたリソース要件に基づいて該キュー内のプリフェッチ要求の各々にスコアを割り当てる。例えば、該スコアは、要求されたデータをプリフェッチするためのメモリ要件に基づくことができる。スコア割り当ては、プリフェッチングがユーザ経験をどれだけ増やすかということに基づくこともできる。例えば、スコアは、所与のデータ・セットをプリフェッチすることによって待ち時間がどれだけ減らされるかということに基づいて割り当てられることができる。
【００６１】
スコアが割り当てられると、プリフェッチャ６０２は、最高のスコアまたは所与のスレショルドより上のスコアのセットを有する、満たされるべきプリフェッチ要求のセットをプリフェッチ要求キュー６１０から選択する。アクセラレータ１０４は、必要とされるデータをプリフェッチするために該プリフェッチ要求をサーバ１０２に送る。複数のプリフェッチャ６０２が同じアクセラレータにおいてあるいは異なる複数のアクセラレータにわたって利用される実施態様では、もし同じデータがプリフェッチされるべく要求されたならば、同じデータ・セットに対するこれらの複数のプリフェッチ要求はマージされて単一の要求とされてサーバ１０２に送られることができる。
【００６２】
プリフェッチ要求はサーバ１０２によりあるいはアクセラレータ１０４により落とされ得ることに留意するべきである。例えば、大抵の場合に、プリフェッチングのために要求されるデータは将来の何時かに使用されるべきものであるので、該データはアプリケーション６０４にとっては重要ではない。従って、サーバ１０２またはアクセラレータ１０４がプリフェッチ要求を処理するための充分なリソースを含んでいなければ、該要求は落とされ／無視され得る。
【００６３】
サーバ１０２は、プリフェッチ要求を満たすためにデータを取り出し、このデータをアクセラレータ１０４に送り返す。一実施態様では、サーバ１０２は、データ・アクセス・マネージャを介して、追加のデータもプリフェッチされるべきであるかどうか判定するためにプリフェッチ・データを分析する。サーバ１０２は、プリフェッチされる現在のデータ・セットに関連する他のオブジェクトを識別し、これらの他のオブジェクトは同じアドレス空間内にまたは階層ツリーの同じノードにまたは不連続的アドレス空間にまたは該階層ツリーの異なるノード／層に存在することができる。例えば、プリフェッチされるデータ・セットが野球の試合における投手と関連付けられているとすれば、その投手キャラクタを試合に登場させるための情報を取り出すほかに、サーバは、その所与の投手キャラクタが投げることのできる直球、カーブ、スライダー、またシンカーのような投球のタイプ、および該投手キャラクタがこれらの投球を投げることのできるスピード範囲のような情報も取り出すことができる。
【００６４】
サーバ１０２は、その後、プリフェッチされたデータをアクセラレータ１０４に送る。アクセラレータ１０４は、このデータを、プリフェッチされたデータのために確保されているメモリ６１４部分６１２に格納する。例えば、ＤＲＡＭのような高速メモリにプリフェッチ処理で負担が不必要にかからないように、アクセラレータ１０４はこのデータをフラッシュのような低速メモリの部分に格納する。上で論じられたように、プリフェッチ・データは将来の何時かに使用されるべきものであるので、該データは普通はアプリケーションにとって重要ではない。しかし、プリフェッチされたデータは高速メモリにも格納され得る。一実施態様では、メモリ内でこれらのプリフェッチ・データ部分の各々は１セットのアクセラレータを横断して集合させられる。従って、これらのプリフェッチ・データ部分は、該アクセラレータを横断して単一のキャッシュとして振る舞う。これは、アクセラレータ１０４が互いを横断してデータを共有することを可能にする。
【００６５】
アクセラレータ１０４は、一実施態様では、プリフェッチを記憶するメモリが満杯にならないように、あるいは新しいプリフェッチ・データが満杯時にプリフェッチ・メモリ６１２に書き込まれ得るように、ページ置換メカニズムを利用する。この実施態様では、アクセラレータ１０４は、プリフェッチ・メモリ６１２内のデータの使用を監視する。データが使用されるたびに、その所与のデータ・セットのためにカウンタがアップデートされる。アクセラレータ１０４は、所与のデータ・セットに関連する計算の複雑さも判定する。この計算の複雑さは、プリフェッチされたデータ・セットを処理するために必要とされるリソース、処理時間などを基礎とすることができる。アクセラレータ１０４は、該カウンタ・データもしくはそれと関連する計算の複雑さまたはその両方に基づいて各々のプリフェッチされたデータ・セットにスコア／ウェイトを割り当てる。プリフェッチャは、メモリ６１２が実質的に満杯になったときに新しいデータをその中に格納できるように、メモリ６１２から除去するべきプリフェッチされたデータ・セットを識別するためにこのスコアを用いる。プリフェッチ・エージェントが、アクセラレータ１０４上のプリフェッチャ６０２の補助としてサーバ１０２上で動作することができる。該プリフェッチ・エージェントは、要求をアクセラレータ１０４に集めて互いに関係付け、要求の重複を避けるためにサーバ・メモリ階層に要求の単一のセットを与える。該プリフェッチ・エージェントは、対応する結果を高級なＤＲＡＭ、より安価なフラッシュ・メモリあるいはディスク記憶装置に保存するためにプリフェッチ要求の該“スコア”を用いることができる。
【００６６】
ハイブリッド・サーバにおいてユーザを多重化し仮想化を可能にすること
１つ以上の実施態様において、ハイブリッド・サーバ１１４は複数のユーザをサポートする。これは種々の仕方で成し遂げられる。例えば、別々の物理的アクセラレータ、プライベート・キャッシュ・クライアントを伴う仮想化されたアクセラレータ、スヌーピー・プライベート・クライアント・キャッシュを伴う仮想化されたアクセラレータ、エラスティック・プライベート・クライアント・キャッシュを伴う仮想化されたアクセラレータが使用され得る。別々の物理的アクセラレータ１０４が利用される１つの実施態様では、各ユーザに別々の物理的アクセラレータが割り当てられる。これは、共有および関連するセキュリティ問題のオーバーヘッド無しで各ユーザが１つの物理的アクセラレータに限定され得るので、有利である。図７は、仮想化されたアクセラレータが使用される１つの実施態様を示す。特に、図７は、アクセラレータ１０４のうちの１つ以上が論理的に１つ以上の仮想化されたアクセラレータ７０２、７０４にパーティショニングされ、その各々がプライベート・クライアント・キャッシュ７０６を含むことを示す。この実施態様では、各ユーザは１つの仮想化されたアクセラレータ７０２、７０４を割り当てられる。アクセラレータ１０４の物理的リソースは、仮想化されたアクセラレータ７０２、７０４間で共有される。各々の仮想化されたアクセラレータ７０２、７０４は１つのプライベート・クライアント・キャッシュ７０６を含み、該プライベート・クライアント・キャッシュは、自分がマッピングされる仮想化されたアクセラレータだけによって使用され得る。
【００６７】
仮想化されたアクセラレータ７０２、７０４を利用する他の１つの実施態様では、プライベート・キャッシュ７０６はスヌーピー・プライベート・クライアント・キャッシュである。これらのプライベート・クライアント・キャッシュは、少なくとも１つの共通モデル・アイデンティフィケーション（ＩＤ）またはデータ・セット識別子が異なるユーザ間で共有されているならば、他のクライアント・キャッシュへのトラフィックをスヌープすることができる。これらのプライベートな仮想化されたキャッシュ７０６は複数のバーチャル・アクセラレータ１０４に分散させられ得る。この実施態様では、仮想化されたアクセラレータ７０２、７０４は、同じ物理的アクセラレータ１０４上のデータをスヌープしている。物理的アクセラレータ１０４上の仮想化されたアクセラレータ７０２、７０４を管理する仮想化されたアクセラレータ・ディレクトリ・エージェント７１０は、同じデータ・セット１１０、例えばモデル・データ、を共有する他の仮想化されたアクセラレータ７０２、７０４に要求をブロードキャストする。プライベート・クライアント・キャッシュ７０６は、仮想化されたアクセラレータのうちの１つがサーバ１０２から要求したデータを該プライベート・クライアント・キャッシュが既に持っているならば、データで応答することができる。これは、仮想化されたアクセラレータ７０２、７０４間に仮想バスを生じさせる。物理的アクセラレータ１０４上の仮想化されたアクセラレータ７０２、７０４は、入力データおよび出力データを共有することができる。ユーザが同じ状態を含むとすれば、例えば、複数のユーザが仮想世界の同じエリアまたはボリュームの中に存在するとすれば、ユーザの要求およびデータをより効率良く処理するために、仮想化されたアクセラレータ７０２、７０４は結合される（すなわち、仮想アクセラレータ７０２は作業を仮想アクセラレータ７０４のためにも実行する）ことができ、あるいは論理的に分解されることができる。さらに、複数のデータ・セットが１つの仮想化されたアクセラレータ７０２、７０４上でデイジーチェーン接続されることができる。例えば、飛行機のモデルは複数のモデルから構成され得る。従って、１つの統合されているモデルと比べて、仮想化されたアクセラレータにおいてモデルの階層が作られ得る。例えば、そのモデル階層からのモデルが各仮想アクセラレータ７０２、７０４に割り当てられ得る。仮想アクセラレータ７０２、７０４は、所与の物理的アクセラレータ１０４上でインスタンス化され得る。これは、仮想アクセラレータ７０２、７０４がデータを共有することを可能にする。なぜならば、直ぐ近くの仮想アクセラレータ同士は全て同じ階層に属するデータ・セットをモデル化するので、データ・セットのアクセスはおそらく直ぐ近くの仮想アクセラレータから提供され得るからである。仮想アクセラレータ７０２、７０４は複数の物理的アクセラレータ１０４にまたがることもできる。この場合、プライベート・クライアント・キャッシュ７０６は、複数の物理的アクセラレータ１０４にまたがるメモリ・リソースから構成され得る。
【００６８】
エラスティック・プライベート・クライアント・キャッシュを伴う仮想化されたアクセラレータを利用する実施態様では、各ユーザは１つの仮想化されたアクセラレータ７０２、７０４に割り当てられる。プライベート・クライアント・キャッシュは複数の物理的アクセラレータにまたがって存在する、すなわち、メモリ・リソースは複数のアクセラレータ１０４にまたがって使用され得る。各プライベート・クライアント・キャッシュ７０６は、“公称”および“ハイ”キャッシュ・サイズを伴って作られる。キャッシュ・スペースが使用されているとき、仮想アクセラレータ７０２、７０４のキャッシュ・サイズは“ハイ”に増やされることができる。他の仮想アクセラレータ７０２、７０４が自分のキャッシュ・サイズを増やすことを選択したけれどもメモリ・リソースが利用可能でなければ、最高の優先順位を有する仮想アクセラレータ７０２、７０４が性能目的のためにより高いキャッシュ・サイズの使用を許され得る。アクセラレータのキャッシュ・サイズにおける弾力性（Ｅｌａｓｔｉｃｉｔｙ）により、ユーザ・クライアントの要求を満たすために必要なすべてのデータをキャッシュすることが可能になる。
【００６９】
当業者により認められるであろうように、本発明の側面はシステム、方法、またはコンピュータ・プログラム製品として具体化され得る。従って、本発明の側面は、完全にハードウェアの実施態様、完全にソフトウェアの実施態様（ファームウェア、常駐ソフトウェア、マイクロ−コードなどを含む）、あるいは、ここで“回路”、“モジュール”もしくは“システム”と全て一般的に称され得るソフトウェアとハードウェア側面とを結合させた実施態様の形をとることができる。さらに、本発明の側面は、コンピュータ可読プログラム・コードがその上に具体化されている１つ以上のコンピュータ可読媒体において具体化されたコンピュータ・プログラム製品の形をとることができる。
【００７０】
１つ以上のコンピュータ可読媒体の任意の組み合わせが利用され得る。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であり得る。コンピュータ可読記憶媒体は、例えば、それらに限定はされないが、電子、磁気、光学、電磁、赤外線、もしくは半導体のシステム、装置、もしくはデバイス、または前記のものの任意の適切な組み合わせであり得る。コンピュータ可読記憶媒体のより具体的な例（非網羅的なリスト）は次のもの：１つ以上のワイヤを有する電気結線、携帯可能なコンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ（ＲＯＭ））、消去可能でプログラマブルな読み出し専用メモリ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ（ＥＰＲＯＭ）もしくはフラッシュ・メモリ）、光ファイバ、携帯可能なコンパクト・ディスク読み出し専用メモリ（ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ（ＣＤ−ＲＯＭ））、光記憶装置、磁気記憶装置、または前記のものの任意の適切な組み合わせ、を含む。この文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスにより、またはこれらと関連して、使用されるプログラムを包含し、もしくは記憶することのできる任意の有形媒体であり得る。
【００７１】
コンピュータ可読信号媒体は、例えばベースバンドでまたは搬送波の一部としてその中にコンピュータ可読プログラム・コードが具体化されている伝播させられるデータ信号を含み得る。そのような伝播させられる信号は電磁、光学、もしくはそれらの任意の適切な組み合わせを含むがそれらに限定はされない種々の形のうちの任意の形を取り得る。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなくて、命令実行システム、装置、もしくはデバイスにより、またはこれらと関連して、使用されるプログラムを伝達し、伝播させ、もしくはトランスポートすることのできる任意のコンピュータ可読媒体であり得る。
【００７２】
コンピュータ可読媒体上に具体化されたプログラム・コードは、無線、ワイヤライン、光ファイバ・ケーブル、ＲＦなど、または前記のものの任意の適切な組み合わせを含むが、これらに限定はされない、任意の適切な媒体を用いて伝送され得る。
【００７３】
本発明の態様のための操作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのようなオブジェクト指向プログラミング言語と、“Ｃ”プログラミング言語もしくは類似のプログラミング言語のような在来の手続き型プログラミング言語とを含む１つ以上のプログラミング言語の任意の組み合わせで書かれることができる。該プログラム・コードは、完全にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上でかつ部分的にリモート・コンピュータ上で、または完全にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータはローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通してユーザのコンピュータに接続されることができ、あるいは接続は外部コンピュータへなされることができる（例えば、インターネット・サービス・プロバイダを用いてインターネットを通して）。
【００７４】
本発明の種々の好ましい実施態様の側面が、下で、本発明の実施態様に従う方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して記載される。該フローチャート図もしくはブロック図またはその両方の各ブロックと、該フローチャート図もしくはブロック図またはその両方のブロックの組み合わせとはコンピュータ・プログラム命令により実装され得ることが理解されるであろう。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブルなデータ処理装置のプロセッサを介して実行する該命令が該フローチャートもしくはブロック図またはその両方の１つもしくは複数のブロックにおいて明示される機能群／行為群を実行する手段を生じさせるように、汎用コンピュータ、専用コンピュータ、またはマシンを生じさせる他のプログラマブルなデータ処理装置のプロセッサに提供され得る。
【００７５】
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に格納されている命令が該フローチャート図もしくはブロック図またはその両方の１つまたは複数のブロックにおいて明示される機能群／行為群を実行する命令を含む製品を生じさせるように、特定の仕方で機能するようにコンピュータ、他のプログラマブルなデータ処理装置、または他のデバイスを指揮することのできるコンピュータ可読媒体に格納されることもできる。
【００７６】
該コンピュータ・プログラム命令は、コンピュータまたは他のプログラマブルな装置上で実行する命令が該フローチャートもしくはブロック図またはその両方の１つまたは複数のブロックにおいて明示される機能／行為を実行するためのプロセスを提供するように、コンピュータ実行プロセスを生じさせるために一連の動作ステップを該コンピュータ、他のプログラマブルな装置または他のデバイス上で実行させるべくコンピュータ、他のプログラマブルなデータ処理装置、または他のデバイスにロードされることもできる。
【００７７】
動作流れ図
ここで図８〜１７を参照すると、図中のフローチャートおよびブロック図は、本発明の種々の好ましい実施態様に従うシステム、方法、およびコンピュータ・プログラム製品の可能な実現形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の中の各ブロックは、明示された論理機能（１つまたは複数）を実行するための１つ以上の実行可能な命令を含むコードのモジュール、セグメント、または部分を表すことができる。或る代わりの実現形態では、ブロック内に記されている機能は、図に記されている順序から外れて生じ得ることにも留意するべきである。例えば、連続して示されている２つのブロックは、実際には、関係する機能に依存して、実質的に同時に実行され得、あるいは、それらのブロックは時には逆の順序で実行され得る。ブロック図もしくはフローチャート図またはその両方の各ブロック、ならびにブロック図もしくはフローチャート図またはその両方の中のブロックの組み合わせは、明示されている機能または行為を実行する専用ハードウェア・ベースのシステムにより、または専用ハードウェアおよびコンピュータ命令の組み合わせにより、実行され得ることにも留意するべきである。
【００７８】
図８は、上で論じられたアウト・オブ・コア処理環境においてサーバ・システムでデータを前処理することの一例を示す動作流れ図である。図８の動作の流れは、ステップ８０２から始まって直ぐにステップ８０４に流入する。サーバ１０２は、ステップ８０４で、アクセラレータ１０４からデータ・セット１１０を求める要求を受け取る。サーバ１０２は、ステップ８０６で、その要求されているデータ・セットと関連付けられた操作のタイプ、もしくはアクセラレータ１０４に存在する処理コア１１２のタイプ、またはその両方を判定する。サーバ１０２は、ステップ８０８で、判定された操作タイプもしくは処理コアのタイプまたはその両方に基づいて該データを第１フォーマットから第２フォーマットに変換する。代わりに、サーバ１０２は、アクセラレータ１０４により直ちに消費され得る種々の形でデータを格納することができる。サーバ１０２は、ステップ８１０で、変換されたデータ・セットをアクセラレータ１０４に送る。制御の流れは、その後、ステップ８１２から出る。
【００７９】
図９は、上で論じられた第１データ・アクセス・コンフィギュレーションに従って設定されたアウト・オブ・コア処理環境にあるアクセラレータの一例を示す動作流れ図である。図９の動作の流れはステップ９０２から始まり、直ぐにステップ９０４に流入する。アクセラレータ１０４は、ステップ９０４で、データ・セット１１０とインタラクトする要求３０２をユーザ・クライアント１０６から受け取る。アクセラレータ１０４は、ステップ９０６で、該要求３０２を解析する。アクセラレータ１０４は、ステップ９０８で、要求３０２と関連付けられたデータ・セット１１０の全てまたは実質的に全てをサーバ１０２から取り出す。アクセラレータ１０４は、ステップ９１０で、取り出されたデータ３０４を局所的にキャッシュ３０６に格納する。アクセラレータ１０４は、ステップ９１２で、データ・セット１１０にアクセスする要求をユーザ・クライアント１０６から受け取る。アクセラレータ１０４は、ステップ９１４で、その要求を満たすために、局所的に格納されたデータ３０４を処理する。アクセラレータ１０４は、ステップ９１６で、その処理されたデータをユーザ・クライアント１０６に送る。制御の流れは、その後、ステップ９１８から出る。
【００８０】
図１０は、上で論じられた第２データ・アクセス・コンフィギュレーションに従って設定されたアウト・オブ・コア処理環境にあるアクセラレータの他の１つの例を示す動作流れ図である。図１０の動作の流れはステップ１００２から始まって直ぐにステップ１００４に流入する。アクセラレータ１０４は、ステップ１００４で、データ・セット１１０とインタラクトする要求４０２をユーザ・クライアント１０６から受け取る。アクセラレータ１０４は、ステップ１００６で、該要求４０２を解析する。アクセラレータ１０４は、ステップ１００８で、該要求４０２と関連付けられているデータ・セット１１０の部分４０４をサーバ１０２から取り出す。アクセラレータ１０４は、ステップ１０１０で、取り出されたデータ部分４０４を局所的にキャッシュ４０６に格納する。アクセラレータ１０４は、ステップ１０１２で、データ・セット１１０にアクセスする要求をユーザ・クライアント１０６から受け取る。
【００８１】
アクセラレータ１０４は、ステップ１０１４で、該要求がデータ部分４０４により満たされ得るかどうか判定する。この判定の結果が否定であれば、アクセラレータ１０４は、ステップ１０１６で、追加のデータをサーバ１０２から取り出す。アクセラレータ１０４は、ステップ１１０８で、該要求を満たすためにデータ部分４０４と該追加のデータとを処理する。制御は、その後、ステップ１０２２へ流れる。もしステップ１０１４における結果が肯定であれば、アクセラレータ１０４は、ステップ１０２０で、該要求を満たすために、キャッシュされたデータ部分４０４を処理する。アクセラレータ１０４は、ステップ１０２２で、処理されたデータをユーザ・クライアント１０６に送る。制御の流れは、その後、ステップ１０２４から出る。
【００８２】
図１１は、上で論じられたデータ・アクセス・コンフィギュレーションに従って設定されたアウト・オブ・コア処理環境にあるアクセラレータを動的に設定することの一例を示す動作流れ図である。図１１の動作の流れはステップ１１０２から始まって直ぐにステップ１１０４に流入する。次に続くステップは、サーバ１０２もしくはアクセラレータ１０４またはその両方によって実行され得ることに留意するべきである。しかし、単に例示を目的として、以下の議論はサーバ１０２の観点からのものである。サーバ１０２は、ステップ１１０４で、データ・セット１１０を求める要求をアクセラレータ１０４から受け取る。サーバ１０２は、ステップ１１０６で、データを転送するためにサーバ１０２とアクセラレータ１０４との間で使用されるデータ・ポートの第１セットを識別する。
【００８３】
サーバ１０２は、ステップ１１０８で、データを転送するためにアクセラレータ１０４とユーザ・クライアント１０６との間で使用されるポートの第２セットを識別する。サーバ１０２は、ステップ１１１０で、アクセラレータ１０４により要求されているデータを識別する。サーバ１０２は、ステップ１１１２で、データ・セット１１０へのアクセスを要求しているユーザと関連付けられている属性のセットを特定する。サーバ１０２は、ステップ１１１２で、データ・ポートの該第１セット、データ・ポートの該第２セット、要求された該データ・セット、識別されているユーザと関連付けられている該属性とのうちの少なくとも１つに基づくデータ・アクセス・コンフィギュレーションに従ってアクセラレータ１０４を動的に設定する。制御の流れは、その後、ステップ１１１４から出る。
【００８４】
図１２は、上で論じられたアウト・オブ・コア処理環境においてサーバとアクセラレータとの間に保障されているリンクを動的に確立することの一例を示す動作流れ図である。図１２の動作の流れはステップ１２０２から始まり、直ぐにステップ１２０４に流入する。次に続くステップはサーバ１０２もしくはアクセラレータ１０４またはその両方により実行され得ることに留意するべきである。しかし、単に例示を目的として、以下の議論はサーバ１０２の観点からのものである。サーバ１０２は、ステップ１２０４で、ユーザが完全暗号化リンクを要求しているかどうか判定する。この判定の結果が肯定であるならば、サーバ１０２は、ステップ１２０６で、サーバ１０２とアクセラレータ１０４との間の通信リンクを完全に暗号化する。制御の流れは、その後、ステップ１２０８から出る。この判定の結果が否定であれば、サーバ１０２は、ステップ１２１０で、アクセラレータ１０４がサーバ１０２からのデータをキャッシュするように設定されているかどうか判定する。
【００８５】
この判定の結果が否定であれば、サーバ１０２は、ステップ１２１２で、サーバ１０２とアクセラレータ１０４との間の通信リンクを完全に暗号化する。制御の流れは、その後、ステップ１２１４から出る。この判定の結果が肯定であれば、サーバ１０２は、ステップ１２１６で、サーバ１０２とアクセラレータ１０４との間の通信リンクを、一部のデータを暗号化するかあるいは全てのデータをより低い強さで暗号化するように設定する。サーバ１０２は、ステップ１２１８で、部分的データ暗号化または低強度暗号化に起因するシステム信頼度の低下を埋め合わせるために、キャッシュされているデータのためにバルネラビリティ・ウィンドウ・メカニズムを利用するようにアクセラレータ１０４に命令する。制御の流れは、その後、ステップ１２２０から出る。
【００８６】
図１３は、上で論じられたアウト・オブ・コア処理環境においてアクセラレータによりキャッシュされたデータのためにバルネラビリティ・ウィンドウを維持することの一例を示す動作流れ図である。図１３の動作の流れはステップ１３０２から始まり、直ぐにステップ１３０４に流入する。サーバ１０２は、ステップ１３０４で、キャッシュされているデータのためにバルネラビリティ・ウィンドウ・メカニズムを利用するようにアクセラレータ１０４に命令する。アクセラレータ１０４は、ステップ１３０６で、キャッシュされているデータのためにセキュリティ・カウンタ１２４を維持する。アクセラレータ１０４は、ステップ１３０８で、セキュリティ・カウンタ１２４が所与のスレショルドより高いかどうか判定する。この判定の結果が否定であれば、制御の流れはステップ１３０６に戻る。この判定の結果が肯定であれば、アクセラレータ１０４は、ステップ１３１０で、データ３０４をキャッシュ３０６からパージする。制御の流れは、その後、ステップ１３１２から出る。
【００８７】
図１４は、上で論じられたアウト・オブ・コア処理環境においてサーバでプロトコル・トンネルを利用することの一例を示す動作流れ図である。図１４の動作の流れはステップ１４０２から始まり、直ぐにステップ１４０４に流入する。サーバ１０２は、ステップ１４０４で、プロトコル・トンネル５０２を確立する。サーバ１０２は、ステップ１４０６で、ユーザ・クライアント１０６からアクセス要求を受け取る。サーバ１０２は、ステップ１４０８で、該要求を解析する。サーバ１０２は、ステップ１４１０で、該アクセス要求により要求されたデータ・セットを特定する。サーバ１０２は、ステップ１４１２で、該アクセス要求をアクセラレータ１０４に渡し、識別されたデータをアクセラレータ１０４へプッシュする。結果データをプッシュすることとユーザ・クライアント要求とはアクセラレータ１０４に対してずらされ得ることに留意するべきである。アクセラレータ１０４は、ステップ１４１４で、該アクセス要求とプッシュされたデータとを受け取る。アクセラレータ１０４は、ステップ１４１６で、そのプッシュされたデータを、サーバ１０２からプルされたデータとは別に格納する。制御の流れは、その後、ステップ１４１８から出る。
【００８８】
図１５は、上で論じられたアクセラレータへデータをプッシュするためにセマンティック解析を利用するアウト・オブ・コア処理環境にあるサーバの一例を示す動作流れ図である。図１５の動作の流れはステップ１５０２から始まり、直ぐにステップ１５０４に流入する。サーバ１０２は、ステップ１５０４で、アクセラレータ１０４からプル要求を受け取る。サーバ１０２は、ステップ１５０６で、該プル要求を解析した。サーバ１０２は、ステップ１５０８で、要求されたデータが関連データと関連付けられていると特定する。サーバ１０２は、ステップ１５１０で、該データと関連付けられている現在のアプリケーション状態と関連付けられているセマンティック情報に基づいて該関連データのサブセットを選択する。サーバ１０２は、ステップ１５１２で、該プル要求により要求されたデータと関連データの該サブセットとをアクセラレータ１０４に送る。制御の流れは、その後、ステップ１５１４から出る。
【００８９】
図１６は、上で論じられたサーバからデータをプリフェッチするアウト・オブ・コア処理環境にあるアクセラレータの一例を示す動作流れ図である。図１６の動作の流れはステップ１６０２から始まり、直ぐにステップ１６０４に流入する。アクセラレータ１０４は、ステップ１６０４で、サーバ１０２およびユーザ・クライアントにおいて動作しているアプリケーション６０４からプリフェッチ要求６０８を受け取る。アクセラレータ１０４は、ステップ１６０６で、プリフェッチ要求６０８をプリフェッチ要求キュー６１０に格納する。アクセラレータ１０４は、ステップ１６０８で、少なくとも各要求６０８のリソース要件に基づいて各プリフェッチ要求６０８にスコアを割り当てる。アクセラレータ１０４は、ステップ１６１０で、所与のスレショルドより高いスコアを有するプリフェッチ要求のセットを選択する。アクセラレータ１０４は、ステップ１６１２で、そのプリフェッチ要求のセットと関連付けられたデータをサーバ１０２およびユーザ・クライアントからプリフェッチする。制御の流れは、その後、ステップ１６１４から出る。
【００９０】
図１７は、アウト・オブ・コア処理環境にあるアクセラレータを上で論じられた複数の仮想化されたアクセラレータに論理的にパーティショニングすることの一例を示す動作流れ図である。図１７の動作の流れはステップ１７０２から始まり、直ぐにステップ１７０４に流入する。次に続くステップはサーバ１０２もしくはアクセラレータ１０４またはその両方により実行され得ることに留意するべきである。サーバ１０２は、ステップ１７０４で、少なくとも１つのアクセラレータ１０４を１つ以上の仮想化されたアクセラレータ７０２、７０４に論理的にパーティショニングする。サーバ１０２は、ステップ１７０６で、各々の仮想化されたアクセラレータ７０２、７０４上にプライベート・クライアント・キャッシュ７０６を設定する。第１の仮想化されたアクセラレータ７０２は、ステップ１７０８で、第２の仮想化されたアクセラレータ７０４が同じデータ・セット１１０と関連付けられていると判定する。第１および第２の仮想化されたアクセラレータ７０２、７０４上のプライベート・キャッシュ７０６は、ステップ１７１０で、データのために互いを監視する。第１および第２の仮想化されたアクセラレータ７０２、７０４は、ステップ１７１２で、互いの間でデータを転送する。制御の流れは、その後、ステップ１７１４から出る。
【００９１】
情報処理システム
図１８は、図１に関して上で論じられた動作環境１００で利用され得る情報処理システム１８００のより詳細な図を示すブロック図である。情報処理システム１８００は、本発明の１つ以上の好ましい実施態様を実装するように適応させられた適切に設定された処理システムに基づいている。同様に、どのような適切に設定された処理システムも、本発明の好ましい実施態様によって情報処理システム１８００として使用され得る。情報処理システム１８００はサーバ・システム１０２またはアクセラレータ・システム１０４であり得ることに留意するべきである。
【００９２】
情報処理システム１８００はコンピュータ１８０２を含む。コンピュータ１８０２は、メイン・メモリ１８０６、大容量記憶装置インターフェース１８０８、およびネットワーク・アダプタ・ハードウェア１８１０に接続されているプロセッサ（１つまたは複数）１８０４を有する。システム・バス１８１２は、これらのシステム・コンポーネントを相互接続する。メイン・メモリ１８０６は、一実施態様では、データ・セット１１０、データ・アクセス・マネージャ１１８、セキュリティ・マネージャ１２２、メモリ・システム２０２、データ・プリプロセッサ２１２、スヌーピング・モジュール５０４、およびアプリケーション６０４のようなサーバ・システム１０２のコンポーネント、または、上で論じられた要求マネージャ１２０、セキュリティ・カウンタ１２４、エラスティック・レジリエンス・モジュール１２６、ゲーテッド・メモリ２１０、要求３０２、キャッシュ３０６、プリフェッチャ６０２、およびプリフェッチ要求キュー６１０のようなアクセラレータ１０４のコンポーネントを含む。
【００９３】
メイン・メモリ１８０６に同時に存在するものとして図示されているけれども、メイン・メモリ１８０６のそれぞれのコンポーネントが完全にメイン・メモリ１８０６に常時あるいは同時にさえ存在する必要はないことは明らかである。一実施態様では、情報処理システム１８００は、あたかもメイン・メモリ１８０６およびデータ記憶装置１８１６のような複数のより小型の記憶エンティティへのアクセスの代わりに、ここでコンピュータ・システム・メモリと称される大きな単一の記憶エンティティへのアクセスをプログラムが有するかのように該プログラムが振る舞うことを可能にする在来の仮想アドレス指定メカニズムを利用する。“コンピュータ・システム・メモリ”という用語は、ここでは情報処理システム１８００の仮想メモリ全体を包括的に指すように使われていることに留意されたい。
【００９４】
大容量記憶装置インターフェース１８０８は、大容量記憶装置１８１４のような大容量記憶装置を情報処理システム１８００に接続するために使用される。１つの特定のタイプのデータ記憶装置は、コンパクト・ディスク（Ｃｏｍｐａｃｔ  Ｄｉｓｃ（ＣＤ））ドライブまたはデジタル・バーサタイル・ディスク（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ（ＤＶＤ））ドライブのようなオプティカル・ドライブであり、これらは、ＣＤ／ＤＶＤ１８１６のような（ただし、これらに限定されない）コンピュータ可読媒体またはストレージ製品にデータを格納し、これらからデータを読み出すために使用され得る。他の１つのタイプのデータ記憶装置は、例えばニュー・テクノロジー・ファイル・システム（Ｎｅｗ  Ｔｅｃｈｎｏｌｏｇｙ  Ｆｉｌｅ  Ｓｙｓｔｅｍ（ＮＴＦＳ））タイプのファイル・システム操作をサポートするように設定されたデータ記憶装置である。
【００９５】
コンピュータ１８０２のために唯一の中央処理システム（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍ（ＣＰＵ））１８０４が図示されているけれども、複数のＣＰＵを有するコンピュータ・システムも同様に効果的に使用され得る。本発明の実施態様は、さらに、ＣＰＵ１８０４から処理を下ろすために使用される別々の完全にプログラムされたマイクロプロセッサを各々含むインターフェースを組み込む。メイン・メモリに含まれるオペレーティング・システム（図示されていない）は、Ｌｉｎｕｘ（Ｒ）、ＵＮＩＸ（Ｒ）、Ｍｉｃｒｏｓｏｆｔ（Ｒ）のＷｉｎｄｏｗｓ  ＸＰ、およびＭｉｃｒｏｓｏｆｔ（Ｒ）のＷｉｎｄｏｗｓ  Ｓｅｒｖｅｒ  ２００３オペレーティング・システムのような適切なマルチタスキング・オペレーティング・システムである。Ｌｉｎｕｘは、米国、他の国、またはその両方におけるライナス・トーバルズの登録商標である。ＵＮＩＸは、米国および他の国におけるジ・オープン・グループの登録商標である。Ｍｉｃｒｏｓｏｆｔ、およびＷｉｎｄｏｗｓおよびＷｉｎｄｏｗｓロゴは米国、他の国、あるいはその両方におけるマイクロソフト・コーポレーションの商標である。本発明の実施態様は、他の任意の適切なオペレーティング・システムを使用することができる。本発明の或る好ましい実施態様は、オペレーティング・システム（図示されていない）のコンポーネントの命令が情報処理システム１８００の中に置かれた任意のプロセッサ上で実行されることを可能にする、オブジェクト指向フレームワーク・メカニズムのようなアーキテクチャを利用する。ネットワーク・アダプタ・ハードウェア１８１０は、ネットワーク１０８へのインターフェースを提供するために使用される。本発明の実施態様は、今日のアナログ技術もしくはデジタル技術またはその両方を含む任意のデータ通信接続で、あるいは将来のネットワーキング・メカニズムを介して動作するように適応させられ得る。
【００９６】
本発明の代表的な好ましい実施態様が完全に機能的なコンピュータ・システムの文脈で記述されたけれども、当業者は、様々な実施態様がＣＤまたはＤＶＤ、例えばＣＤ１８１６、ＣＤランダム・アクセス・メモリ（ＲＯＭ）、もしくは他の形の記録可能媒体を介して、あるいは任意のタイプの電子伝送メカニズムを介してプログラム製品として配布され得ることを認めるであろう。
【００９７】
非限定的な例
本発明の特定の実施態様が開示されたけれども、当業者は、本発明の範囲から逸脱すること無く特定の実施態様に変更が加えられ得ることを理解するであろう。従って、本発明の範囲はそれらの特定の実施態様に限定されるべきではなくて、添付されている請求項は本発明の範囲内の全てのそのようなアプリケーション、改変、および実施態様を含むことが意図されている。
【００９８】
本発明の種々の好ましい実施態様例が完全に機能的なコンピュータ・システムの文脈で論じられたけれども、当業者は、ＣＤまたはＤＶＤ、例えば、ＣＤ、ＣＤ−ＲＯＭ、もしくは他の形の記録可能媒体を介して、あるいは任意のタイプの電子伝送メカニズムを介して代わりの実施態様に従って、またはその両方で、コンピュータ可読記憶媒体またはプログラム製品として種々の実施態様が配布され得ることを認めるであろう。
【図１】
2013531296.tif 000003
【図２】
2013531296.tif 000004
【図３】
2013531296.tif 000005
【図４】
2013531296.tif 000006
【図５】
2013531296.tif 000007
【図６】
2013531296.tif 000008
【図７】
2013531296.tif 000009
【図８】
2013531296.tif 000010
【図９】
2013531296.tif 000011
【図１０】
2013531296.tif 000012
【図１１】
2013531296.tif 000013
【図１２】
2013531296.tif 000014
【図１３】
2013531296.tif 000015
【図１４】
2013531296.tif 000016
【図１５】
2013531296.tif 000017
【図１６】
2013531296.tif 000018
【図１７】
2013531296.tif 000019
【図１８】
2013531296.tif 000020
【手続補正書】
【提出日】平成24年12月26日(2012.12.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
アクセラレータ・システムにおいて、アウト・オブ・コア処理環境にあるデータにアクセスする方法であって、
複数のデータ・セットを管理するサーバ・システムからデータ・アクセス・コンフィギュレーションを受け取るステップと、
前記データ・アクセス・コンフィギュレーションに基づいて、前記サーバ・システムから取り出されたデータ・セットが局所的に格納されるべきであると判定するステップと、
ユーザ・クライアントから、所与のデータ・セットとインタラクトする要求を受け取るステップと、
前記所与のデータ・セットの少なくとも１つの部分を前記サーバ・システムから取り出すステップと、
受け取られた前記データ・アクセス・コンフィギュレーションに基づいて前記所与のデータ・セットの前記少なくとも１つの部分を局所的にメモリに格納するステップと、
を含む方法。
【請求項２】
前記所与のデータ・セットにアクセスする要求を前記ユーザ・クライアントから受け取るステップと、
前記所与のデータ・セットの前記少なくとも１つの部分が前記アクセスする要求を満たすと判定するステップと、
前記アクセスする要求に基づいて前記所与のデータ・セットの前記少なくとも１つの部分を処理するステップと、
処理された前記所与のデータ・セットの前記少なくとも１つの部分を前記ユーザ・クライアントに伝送するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記サーバ・システムから前記所与のデータ・セットの少なくとも１つの部分を取り出す前記ステップは前記所与のデータ・セットの全体を取り出すことをさらに含む、請求項１ないし請求項２のいずれかに記載の方法。
【請求項４】
前記所与のデータ・セットにアクセスする要求を前記ユーザ・クライアントから受け取るステップと、
前記所与のデータ・セットの前記部分が前記アクセスする要求を完全には満たさないと判定するステップと、
前記判定に応答して、前記所与のデータ・セットの少なくとも１つの追加部分を前記サーバ・システムから取り出すステップと、
前記アクセスする要求に基づいて前記所与のデータ・セットの前記部分および前記追加部分を処理するステップと、
処理された前記所与のデータ・セットの前記部分および前記追加部分を前記ユーザ・クライアントに伝送するステップと、
をさらに含む、請求項１ないし請求項３のいずれかに記載の方法。
【請求項５】
前記所与のデータ・セットの前記少なくとも１つの部分を局所的にメモリに格納することに応答して、前記所与のデータの前記部分と関連付けられたセキュリティ・カウンタを起動させるステップと、
前記所与のデータの前記部分に関して、前記メモリの中での所与の量の時間と前記所与のデータの前記部分へのアクセスの数とを監視するステップと、
前記メモリの中での前記所与の量の時間と前記所与のデータの前記部分へのアクセスの前記数とのうちの少なくとも１つに基づいて前記セキュリティ・カウンタをインクリメントするステップと、
をさらに含む、請求項１ないし請求項４のいずれかに記載の方法。
【請求項６】
前記セキュリティ・カウンタをインクリメントすることに応答して、前記セキュリティ・カウンタと関連付けられている値が所与のスレショルドより高いと判定するステップと、
前記所与のデータの前記部分を前記メモリから除去するステップと、
をさらに含む、請求項５に記載の方法。
【請求項７】
前記所与のデータ・セットの前記少なくとも１つの部分を局所的にメモリに格納する前記ステップは、前記所与のデータ・セットの前記少なくとも１つの部分を局所的にキャッシュ・メモリに格納する前記ステップを含む、請求項１ないし請求項６に記載の方法。
【請求項８】
アウト・オブ・コア処理環境にあるサーバ・システムにおいて、アクセラレータ・システムによるデータへのアクセスを管理する方法であって、
所与のデータ・セットへのアクセスを求めるアクセラレータ・システムからの要求を受け取るステップと、
前記所与のデータ・セットと関連付けられたアクセス・コンテキストを決定するステップと、
決定された前記アクセス・コンテキストに基づいて、前記アクセラレータ・システムを
前記所与のデータ・セットに前記サーバ・システムから直接アクセスする、
前記所与のデータ・セットの部分をメモリに局所的に格納する、および
前記所与のデータ・セットの全体を前記メモリに局所的に格納する、
のうちの１つに動的に設定するステップと、
を含む方法。
【請求項９】
前記アクセス・コンテキストを決定する前記ステップは、
前記所与のデータ・セットへのアクセスを要求しているユーザと関連付けられている属性のセット、
前記所与のデータ・セットと関連付けられているセキュリティ属性のセット、および
前記所与のデータ・セットを伝送し受け取るために使用されるべきデータ・ポートのセット、
のうちの少なくとも１つを識別することをさらに含む、請求項８に記載の方法。
【請求項１０】
前記所与のデータ・セットの前記部分または全体のうちの１つを局所的に格納するように前記アクセラレータ・システムを動的に設定することに応答して、前記所与のデータ・セットのためにセキュリティ・カウンタを維持するように前記アクセラレータ・システムに命令するステップと、
スレショルド値を前記セキュリティ・カウンタと関連付けるステップであって、前記スレショルド値は、前記アクセラレータ・システムに対して、前記所与のデータ・セットの前記部分または全体のうちの前記１つを前記メモリから何時除去するかを明示する、前記関連付けるステップと、
をさらに含む、請求項８または請求項９のいずれかに記載の方法。
【請求項１１】
前記所与のデータ・セットへのアクセスを求める前記要求と関連付けられたユーザからセキュリティ要求を受け取るステップと、
前記ユーザが完全に暗号化される通信リンクを要求していることを前記セキュリティ要求が明示していると判定するステップと、
前記所与のデータ・セットと関連付けられた情報を転送するために前記アクセラレータとの完全に暗号化される通信リンクを確立するステップと、
をさらに含む、請求項８ないし請求項１０のいずれかに記載の方法。
【請求項１２】
前記所与のデータ・セットの部分または全体のうちの１つを局所的に格納するように前記アクセラレータ・システムを動的に設定することに応答して前記所与のデータ・セットと関連付けられた情報を転送するために前記アクセラレータとの部分的に暗号化される通信リンクを確立するステップであって、前記部分的に暗号化される通信リンクは、完全に暗号化される通信リンクよりは低い暗号化強度を含む、前記確立するステップと、
部分的に暗号化される通信リンクを確立することに応答して、前記所与のデータ・セットの前記部分または全体のうちの前記１つを前記メモリから何時除去するかを明示するセキュリティ・カウンタを維持するように前記アクセラレータ・システムに命令するステップと、
をさらに含む、請求項８ないし請求項１１のいずれかに記載の方法。
【請求項１３】
前記アクセラレータ・システムと関連付けられた処理コアのタイプを決定するステップと、
前記所与のデータ・セットを、第１フォーマットから、決定された処理コアの前記タイプと関連付けられた第２フォーマットに変換するステップと、
をさらに含む、請求項８ないし請求項１２のいずれかに記載の方法。
【請求項１４】
アウト・オブ・コア処理環境にあるアクセラレータ・システムであって、
メモリと、
前記メモリに通信結合されている処理コアと、
前記メモリおよび前記処理コアに通信結合されているデータ・マネージャとを含み、前記データ・マネージャは、
複数のデータ・セットを管理するサーバ・システムからデータ・アクセス・コンフィギュレーションを受け取るための受け取りコンポーネントと、
前記データ・アクセス・コンフィギュレーションに応じて、前記サーバ・システムから取り出されたデータ・セットが局所的に格納されるべきであると判定するための判定コンポーネントと、
所与のデータ・セットとインタラクトする要求をユーザ・クライアントから受け取るようにさらに動作し得る前記受け取りコンポーネントと、
前記サーバ・システムから前記所与のデータ・セットの少なくとも１つの部分を取り出すための取り出しコンポーネントと、
受け取られた前記データ・アクセス・コンフィギュレーションに基づいて前記所与のデータ・セットの前記少なくとも１つの部分を局所的にメモリに格納するための格納コンポーネントと、
を含むアクセラレータ・システム。
【請求項１５】
アウト・オブ・コア処理環境にあるアクセラレータ・システムであって、
メモリと、
前記メモリに通信結合されている処理コアと、
前記メモリおよび前記処理コアに通信結合されているデータ・マネージャとを含み、前記データ・マネージャは、
複数のデータ・セットを管理するサーバ・システムからデータ・アクセス・コンフィギュレーションを受け取るステップと、
前記データ・アクセス・コンフィギュレーションに基づいて、前記サーバ・システムから取り出されたデータ・セットが局所的に格納されるべきであると判定するステップと、
ユーザ・クライアントから、所与のデータ・セットとインタラクトする要求を受け取るステップと、
前記所与のデータ・セットの少なくとも１つの部分を前記サーバ・システムから取り出すステップと、
受け取られた前記データ・アクセス・コンフィギュレーションに基づいて前記所与のデータ・セットの前記少なくとも１つの部分を局所的にメモリに格納するステップと、
を含む方法を実行するように設定されている、アクセラレータ・システム。
【請求項１６】
アウト・オブ・コア処理環境にあるサーバ・システムであって、
メモリと、
前記メモリに通信結合されているプロセッサと、
前記メモリおよび前記プロセッサに通信結合されているデータ・マネージャとを含み、前記データ・マネージャは、
所与のデータ・セットへのアクセスを求めるアクセラレータ・システムからの要求を受け取るための受け取りコンポーネントと、
前記所与のデータ・セットと関連付けられたアクセス・コンテキストを決定するための決定コンポーネントと、
決定された前記アクセス・コンテキストに応じて
前記所与のデータ・セットに前記サーバ・システムから直接アクセスすること、
前記所与のデータ・セットの部分をメモリに局所的に格納すること、
前記所与のデータ・セットの全体を前記メモリに局所的に格納すること、
のうちの１つのために動作し得るように前記アクセラレータ・システムを動的に設定するための設定コンポーネントと、
を含む、サーバ・システム。
【請求項１７】
アウト・オブ・コア処理環境にあるサーバ・システムであって、
メモリと、
前記メモリに通信結合されているプロセッサと、
前記メモリおよび前記プロセッサに通信結合されているデータ・マネージャとを含み、前記データ・マネージャは、
所与のデータ・セットへのアクセスを求めるアクセラレータ・システムからの要求を受け取るステップと、
前記所与のデータ・セットと関連付けられたアクセス・コンテキストを決定するステップと、
決定された前記アクセス・コンテキストに基づいて、前記アクセラレータ・システムを
前記所与のデータ・セットに前記サーバ・システムから直接アクセスする、
前記所与のデータ・セットの部分をメモリに局所的に格納する、および
前記所与のデータ・セットの全体を前記メモリに局所的に格納する、
のうちの１つに動的に設定するステップと、
を含む方法を実行するように設定されている、サーバ・システム。
【請求項１８】
請求項１から１３に記載の方法の各ステップを実行する手段として機能する、コンピュータ・システム。
【請求項１９】
請求項１ないし請求項１３のいずれかの方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【国際調査報告】
2013531296.tif 000021
2013531296.tif 000022
2013531296.tif 000023