(57)【要約】【解決手段】本開示の態様は、マスストレージを、インターフェースカードまたはホストシステムに動作可能に連結された専用ハードウェアユニットを使用して、仮想化するためのシステムと方法とに関する。さまざまな実装形態では、インターフェースデバイス及びホストシステムは、端末システムに対して透過的な方法で、別の「端末」コンピューティングシステムのマスストレージデバイスを集合的に模倣することができる。さらに、さまざまな実装形態では、マスストレージデバイスを、端末システムに対して透過的な方法で、端末のプラットフォームのハードウェアアーキテクチャまたはソフトウェアアーキテクチャに対する変更を必要とせずに、模倣することができる。【選択図】図６
2016534463.tif 000002
【特許請求の範囲】
【請求項１】
マスストレージインターフェースである第１の通信インターフェースと、
拡張インターフェースである第２の通信インターフェースと、
前記通信インターフェースに動作可能に連結された専用処理装置であって、前記第１の通信インターフェースに接続されたマスストレージデバイスコントローラと、前記第２の通信インターフェースに接続されたメモリアクセスインターフェースとを有する、専用処理装置と、
を備え、
前記マスストレージデバイスコントローラが、マスストレージデータ要求を、前記第１の通信インターフェースを通して受信するように構成され、
前記メモリアクセスインターフェースが、ホストシステムに、前記マスストレージデータ要求について、前記第２の通信インターフェースを通して通知するように構成されている、
インターフェースデバイス。
【請求項２】
メモリユニットをさらに備え、
前記専用処理装置が、前記メモリユニットに接続されたメモリコントローラを含む、
請求項１に記載のインターフェースデバイス。
【請求項３】
前記メモリアクセスインターフェースが、前記ホストシステムに、前記データ要求について、前記データ要求に関する割り込みを使用して通知するように構成されている、
請求項１に記載のインターフェースデバイス。
【請求項４】
前記メモリアクセスインターフェースが、データ移動動作を実装するように構成されたＤＭＡエンジンを含む、請求項１に記載のインターフェースデバイス。
【請求項５】
前記専用処理装置がフィールドプログラム可能ゲートアレイ（ＦＰＧＡ）である、
請求項１に記載のインターフェースデバイス。
【請求項６】
前記専用処理装置が特定用途向け集積回路（ＡＳＩＣ）である、
請求項１に記載のインターフェースデバイス。
【請求項７】
プリント基板（ＰＣＢ）、
をさらに備え、
前記第１の通信インターフェースが、前記ＰＣＢに固定された１つまたは複数のマスストレージポートを含む、
請求項１に記載のインターフェースデバイス。
【請求項８】
プリント基板（ＰＣＢ）、
をさらに備え、
前記第２の通信インターフェースが、前記ＰＣＢに固定された１つまたは複数の拡張コネクタを含む、
請求項１に記載のインターフェースデバイス。
【請求項９】
前記第１の通信インターフェースが、１つまたは複数のマスストレージポートを含み、
前記専用処理装置が、各前記マスストレージポートのためのマスストレージデバイスコントローラを有する、
請求項１に記載のインターフェースデバイス。
【請求項１０】
前記第１の通信インターフェースが、複数のマスストレージポートを含み、
前記専用処理装置が、複数のマスストレージデバイスコントローラを有し、
各前記マスストレージデバイスコントローラが、前記マスストレージポートのうちの対応する１つに接続されている、
請求項１に記載のインターフェースデバイス。
【請求項１１】
前記第１の通信インターフェースが、１つまたは複数のシリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）ポートを含み、
前記専用処理装置が、各前記ＳＡＴＡポートのためのＳＡＴＡデバイスコントローラを有する、
請求項１に記載のインターフェースデバイス。
【請求項１２】
中央演算装置と、
前記中央演算装置に動作可能に連結された第１のメモリユニットと、
前記第１のメモリユニット内に具体化され、前記中央演算装置によって実行可能な、ストレージ処理と、
マスストレージインターフェースである第１の通信インターフェースと、
前記第１の通信インターフェースに動作可能に連結された専用処理装置であって、前記第１の通信インターフェースに接続されたマスストレージデバイスコントローラとメモリアクセスインターフェースとを有する、専用処理装置と、
を備え、
前記マスストレージデバイスコントローラが、マスストレージデータ要求を、前記第１の通信インターフェースを通して受信するように構成され、
前記メモリアクセスインターフェースが、前記ストレージ処理に、前記マスストレージデータ要求について通知するように構成され、
前記ストレージ処理が、前記データ要求を、ストレージシステムにアクセスすることによって処理するように構成されている、
システム。
【請求項１３】
第２のメモリユニット、
をさらに備え、
前記専用処理装置が、前記第２のメモリユニットに接続されたメモリコントローラを有する、
請求項１２に記載のシステム。
【請求項１４】
第２のメモリユニット、
をさらに備え、
前記専用処理装置が、前記第２のメモリユニットに接続されたメモリコントローラを有し、
前記データ要求が、読み出し要求であり、
前記ストレージ処理が、前記読み出し要求に対応するデータを、前記ストレージシステムから読み出すように構成され、
前記ストレージ処理が、前記読み出されたデータを、前記第２のメモリユニット上に記憶するように構成され、
前記ストレージ処理が、前記第２のメモリユニットから読み出すように前記マスストレージデバイスコントローラをプログラムすることによって、前記読み出し要求を完了させるように前記マスストレージデバイスコントローラをプログラムするように構成されている、
請求項１２に記載のシステム。
【請求項１５】
拡張インターフェースである第２の通信インターフェース、
をさらに備え、
前記メモリアクセスインターフェースが、前記第２の通信インターフェースに接続され、
前記第２の通信インターフェースが、前記プロセッサバスに接続されている、
請求項１２に記載のシステム。
【請求項１６】
プリント基板（ＰＣＢ）と、
拡張インターフェースである第２の通信インターフェースと、
をさらに備え、
前記ＤＭＡエンジンが、前記第２の通信インターフェースに接続され、
前記第２の通信インターフェースが、前記プロセッサバスに接続され、
前記第１の通信インターフェース、前記第２の通信インターフェース、及び前記専用処理装置が、前記ＰＣＢに固定されている、
請求項１２に記載のシステム。
【請求項１７】
前記ＤＭＡエンジンが、前記プロセッサバスに直接接続されている、
請求項１２に記載のシステム。
【請求項１８】
前記メモリアクセスインターフェースが、前記ストレージ処理に、前記データ要求について、前記データ要求についての割り込みを使用して通知するように構成されている、
請求項１２に記載のシステム。
【請求項１９】
前記メモリアクセスインターフェースが、データ移動動作を実装するように構成されたＤＭＡエンジンを含む、請求項１２に記載のシステム。
【請求項２０】
前記第１の通信インターフェースが、１つまたは複数のマスストレージポートを含み、
前記専用処理装置が、各前記マスストレージポートのためのマスストレージデバイスコントローラを有する、
請求項１２に記載のシステム。
【請求項２１】
前記専用処理装置がフィールドプログラム可能ゲートアレイ（ＦＰＧＡ）である、
請求項１２に記載のシステム。
【請求項２２】
前記専用処理装置が特定用途向け集積回路（ＡＳＩＣ）である、
請求項１２に記載のシステム。
【請求項２３】
前記第１の通信インターフェースに、マスストレージコネクタを通して動作可能に連結された端末システムであって、前記マスストレージデータ要求を発行するように構成されたマスストレージホストコントローラを有する端末システム、
をさらに備える、請求項１２に記載のシステム。
【請求項２４】
複数の端末システム、
をさらに備え、
前記専用処理装置が、複数の前記マスストレージデバイスコントローラを有し、
前記第１の通信インターフェースが、複数のマスストレージポートを有し、
各前記端末システムが、前記マスストレージポートのうちの対応する１つに、マスストレージコネクタを用いて接続され、
各前記マスストレージポートが、前記マスストレージデバイスコントローラのうちの対応する１つに接続されている、
請求項１２に記載のシステム。
【請求項２５】
ａ）第１のコンピューティングデバイスから、マスストレージデータ要求を、マスストレージデバイスコントローラにおいて受信することと、
ｂ）前記マスストレージデバイスコントローラに接続されたメモリアクセスインターフェースを用いて、第２のコンピューティングデバイス内に具体化されたストレージ処理に、前記データ要求について通知することと、
ｃ）前記第２のコンピューティングデバイスの前記ストレージ処理を用いて、前記データ要求に対応するデータを有するストレージシステムにアクセスすることと、
ｄ）前記第２のコンピューティングデバイスの前記ストレージ処理を用いて、前記データ要求に対応する前記データを、第１のメモリユニットに記憶することと、
ｅ）前記データ要求を完了させるために、前記第２のコンピューティングデバイスの前記ストレージ処理を用いて、前記第１のメモリユニットからの前記データにアクセスするように前記マスストレージデバイスコントローラをプログラムすることと、
を備える、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権主張
本出願は、２０１３年１２月１９日に出願され、「ＭＡＳＳ  ＳＴＯＲＡＧＥ  ＶＩＲＴＵＡＬＩＺＡＴＩＯＮ  ＦＯＲ  ＣＬＯＵＤ  ＣＯＭＰＵＴＩＮＧ」という題名の、Ｒｏｅｌｏｆ  Ｒｏｄｅｒｉｃｋ  Ｃｏｌｅｎｂｒａｎｄｅｒに譲渡され、同時係属の、ＵＳ  Ｎｏｎ−Ｐｒｏｖｉｓｉｏｎａｌ  ａｐｐｌｉｃａｔｉｏｎ  ｎｕｍｂｅｒ  １４／１３５，２１３、（Ａｔｔｏｒｎｅｙ  Ｄｏｃｋｅｔ  Ｎｏ．ＳＣＥＡ１３０３１ＵＳ００）に対する優先権の利益を主張し、その内容全体が、参照により本明細書に組み込まれる。
【０００２】
関連出願の相互参照
本出願は、２０１３年１２月１９日に出願された、「ＶＩＤＥＯ  ＬＡＴＥＮＣＹ  ＲＥＤＵＣＴＩＯＮ」という題名の、Ｒｏｅｌｏｆ  Ｒｏｄｅｒｉｃｋ  Ｃｏｌｅｎｂｒａｎｄｅｒに譲渡され、同時係属の、ＵＳ  ａｐｐｌｉｃａｔｉｏｎ  ｎｕｍｂｅｒ  １４／１３５，３７４、（Ａｔｔｏｒｎｅｙ  Ｄｏｃｋｅｔ  Ｎｏ．ＳＣＥＡ１３０３７ＵＳ００）に関連し、その内容全体が、参照により本明細書に組み込まれる。
【０００３】
本開示の態様は、ストレージ仮想化に関する。本開示のさらなる態様は、組込みプラットフォーム用に設計されたクラウドコンピューティングアプリケーションのための、ストレージ仮想化に関する。
【背景技術】
【０００４】
遠隔通信システムの帯域幅とデータ転送速度が進歩し続け、今日のコンピューティング要求の多くは、一般に「クラウドコンピューティング」と呼ばれる、ネットワークベースの分散コンピューティングシステムにシフトしてきている。一般的に言えば、クラウドコンピューティングは、特定の計算タスクを、１つまたは複数の遠隔コンピューティング資源に任せることと、遠隔コンピューティング資源を活用してローカルデバイスにサービスを提供することとを伴う。クラウドコンピューティングは、多くの場合、クライアントサーバモデルとして実装され、遠隔サーバは、所望の計算能力をローカルクライアントデバイスに提供し、ローカルクライアントデバイスが特定の計算タスクを自ら実行する必要性をなくす。多くの場合、コンピューティング資源を、完全に、またはほぼ完全に、サーバに任せることができ、クライアントは、ほとんど、またはクラウドコンピューティングタスクのためのユーザインターフェース以上のものを提供せず、インターネットに接続されたデバイスが、特定のアプリケーションのためのクライアントとしての役割を果たすことを潜在的に可能にする。
【０００５】
クラウドコンピューティングは、多種多様な計算サービスで採用されており、それらは、遠隔データストレージソリューションと、音楽及び映像ストリーミングサービスと、多種多様な他のコンシューマソリューション及びビジネスソリューションとを含む。一般に、クラウドコンピューティングは、いくつかの良く知られた利点を提供し、それらは、共用資源を使用することによる効率の向上と、特定のデバイスに制限することのない、コンテンツへのアクセスの柔軟性の向上と、ハードウェアのアップグレードが入手可能になった時の前払いの費用の削減と、他の利点とを含む。
【０００６】
クラウドコンピューティングが広範囲に及ぶ採用をまだ達成していない一分野は、依然として人気のあるビデオゲームの分野である。パーソナルコンピュータ（ＰＣ）ゲーム、家庭用ゲーム機用ゲーム、携帯型ゲーム機用ゲームなどを含むビデオゲームは、消費者の間で人気の娯楽発信源であり続けている。多数の、ますます増加する、利用可能なビデオゲームタイトルのコレクションについて、クラウドゲームは、多くのビデオゲーム需要に対する特に魅力的な解決策を提供する。理想的には、クラウドゲームの枠組み内では、ユーザは、離れた場所に格納されているタイトルの膨大なコレクションからの任意のビデオゲームタイトルに、そのゲームを物理的にコピーする必要なしに、そのタイトルがダウンロードされるのを待つ必要なしに、そのゲームを実行するのに必要なハードウェアシステムまたは資源をローカルで所有せずに、瞬時にアクセスすることができる。残念ながら、この種のサービスを従来のクラウドコンピューティングサーバ設計内で実装することは、いくつかの技術的な課題を提示、したがって、それは、多くのビデオゲームプラットフォームのためのクラウドゲームが広範囲で採用されることを大いに妨げている。
【０００７】
１つの課題は、今日のビデオゲームの多くが、表示するのに相当な量のコンピューティング資源を必要とする高度なグラフィックスを用いて、非常にペースが速く、アクションが多いことである。特に、ゲーム演算とグラフィックス表示演算との全てを遠隔で実行する、ビデオストリーミングベースのサーバ設計では、ゲームは、制御入力に応答して、皆無か最小限の認知可能遅延で、これらの全タスクを実行し、圧縮された音声／ビデオストリームをクライアントデバイスに配信できる必要がある。さもなければ、これは、プレーヤのタイミングを邪魔し、従来の、ローカルで実行されるゲームセッションの反応性を再現することができない。
【０００８】
別の課題は、一方で、パーソナルコンピュータとノートパソコンと汎用的な性質の他のコンピューティングシステムで動くように設計されたＰＣゲームと、他方で、ビデオゲーム機として知られている専用システムで動くように設計されたゲーム機用ゲームとの間に、伝統的に違いがあるという事実から生じる。ビデオゲーム機は、通常、ビデオゲーム環境のために特に適応された固有のコンピューティングアーキテクチャを有する、組込みプラットフォームとして設計される。専用のゲーム機ハードウェアをビデオゲームプラットフォームとして使用することは、いくつかの利益をもたらし、特に、今日のビデオゲームの多くを作成するのに必要なグラフィックス表示とゲーム演算という、高いコンピューティング資源需要のためのハードウェアを最適化するとういう形態においてそうである。結果として、ＰＣゲームがある程度の人気を達成した一方、ゲーム機用ゲームは、伝統的に、ビデオゲーム市場を支配し、将来もそうであり続け得る。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、ビデオゲーム機と他の組込みプラットフォームとをクラウドストリーミングサービスに適用させることは、いくつかの課題を提示する。専用プラットフォームのハードウェアアーキテクチャまたはソフトウェアアーキテクチャの大規模な変更は、専用プラットフォームのために設計されたアプリケーションとの互換性の問題を提示し得る。結果として、伝統的なストレージサーバ技術及びストレージ仮想化技術は、これらのプラットフォームの多くのために設計されたアプリケーションのクラウドベースのストリーミングに対して、実行可能な解決策ではない。
【００１０】
このような背景において、本開示が生じる。
【課題を解決するための手段】
【００１１】
本開示の一実装形態は、第１の通信インターフェースと第２の通信インターフェースと前記通信インターフェースに動作可能に連結された専用処理装置とを有する、インターフェースデバイスを含むことができる。第１の通信インターフェースは、マスストレージインターフェースである。第２の通信インターフェースは、拡張インターフェースである。専用処理装置は、第１の通信インターフェースに接続されたマスストレージデバイスコントローラと、第２の通信インターフェースに接続された直接メモリアクセス（ＤＭＡ）エンジンとを含む。マスストレージデバイスコントローラは、マスストレージデータ要求を、第１の通信インターフェースを通して受信するように構成されている。ＤＭＡエンジンは、ホストシステムに、マスストレージデータ要求について、第２の通信インターフェースを通して通知するように構成されている。
【００１２】
本開示の別の実装形態は、中央演算装置と、中央演算装置に動作可能に連結された第１のメモリユニットと、第１のメモリユニット内に具体化され、中央演算装置（ＣＰＵ）によって実行可能なストレージ処理と、第１の通信インターフェースと、第１の通信インターフェースに動作可能に連結された専用処理装置と、を有するシステムを含むことができる。第１の通信インターフェースは、マスストレージインターフェースである。専用処理装置は、第１の通信インターフェースに接続されたマスストレージデバイスコントローラと、ＣＰＵに動作可能に連結されたメモリアクセスインターフェースとを有する。マスストレージデバイスコントローラは、マスストレージデータ要求を、第１の通信インターフェースを通して受信するように構成されている。メモリアクセスインターフェースは、ストレージ処理にマスストレージデータ要求について通知するように構成されている。ストレージ処理は、データ要求を、ストレージシステムにアクセスすることによって処理するように構成されている。
【００１３】
別の実装形態は、ａ）第１のコンピューティングデバイスから、マスストレージデータ要求を、マスストレージデバイスコントローラにおいて受信することと、ｂ）マスストレージデバイスコントローラに接続されたメモリアクセスインターフェースを用いて、第２のコンピューティングデバイス内に具体化されたストレージ処理に、データ要求について通知することと、ｃ）第２のコンピューティングデバイスのストレージ処理を用いて、データ要求に対応するデータを有するストレージシステムにアクセスすることと、ｄ）第２のコンピューティングデバイスのストレージ処理を用いて、データ要求に対応するデータを、第１のメモリユニットに記憶することと、ｅ）データ要求を満たすために、第２のコンピューティングデバイスのストレージ処理を用いて、第１のメモリユニットからのデータにアクセスするように、マスストレージデバイスコントローラをプログラムすること、とを備える方法を含むことができる。
【図面の簡単な説明】
【００１４】
本開示の教示は、以下の詳細な説明を、添付の図面と共に考察することによって容易に理解され得る。
【図１】例示的な、ネットワークを介したストリーミング技術の概略図である。
【図２】別の例示的な、ネットワークを介したストリーミング技術の概略図である。
【図３】ストレージ仮想化を端末システムに提供するためのインターフェースカードを有する、例示的なホストシステムの概略図である。
【図４Ａ−４Ｂ】端末システムに連結されたホストシステムのための、例示的なコンピュータアーキテクチャの概略図である。図４Ａは、例示的な端末システムアーキテクチャの概略図である。図４Ｂは、例示的なホストシステム及びインターフェースカードアーキテクチャである。
【図５】専用処理装置を有する例示的なインターフェースカード設計の概略図である。
【図６】マスストレージデバイスを模倣する例示的な方法の概略図である。
【発明を実施するための形態】
【００１５】
以下の詳細な説明は、説明目的の多くの具体的な詳細を含むが、多くの変形及び変更が本発明の範囲内に含まれる、ということを当業者の誰もが理解する。したがって、以下に説明する本発明の例示的な実施形態は、特許請求に係る発明に対する普遍性を失うことなく、また、特許請求に係る発明に限定を課すことなく、記載される。
【００１６】
導入
本開示の態様は、マスストレージを、ホストシステムに動作可能に連結されたインターフェースカード、または他の専用ハードウェアユニットを使用して、仮想化するためのシステムと方法とに関する。さまざまな実装形態では、インターフェースデバイス及びホストシステムは、集合的に、別の「端末」コンピューティングシステムのためのマスストレージデバイスを、端末システムにとって透過的な方法で模倣することができる。さらに、さまざまな実装形態では、マスストレージデバイスを、端末システムにとって透過的な方法で、端末プラットフォームのハードウェアアーキテクチャまたはソフトウェアアーキテクチャを変更する必要なしに、模倣することができる。
【００１７】
当業者は、ＶＭＷａｒｅ、ＶｉｒｔｕａｌＢｏｘまたはＰａｒａｌｌｅｌｓなどの「仮想マシン」ソフトウェアをよく知っているかもしれず、それは、たとえば、旧式のオペレーティングシステム（たとえば、Ｗｉｎｄｏｗｓ（登録商標）  ＸＰ）の「仮想」セッションが、より新しいオペレーティングシステム（たとえば、Ｗｉｎｄｏｗｓ  ７）のセッション内で動くことを可能にする。互換性の理由から、仮想マシンソフトウェアを使用して、ディスクドライブ、ネットワークカード、ビデオカードなどの物理的ハードウェア構成要素を、ソフトウェアでシミュレーションすることが多い。本開示の態様によると、専用のハードウェア及びソフトウェアは、ソフトウェアのみでそうすることが現実的でない状況で、マスストレージデバイスを仮想化することができる。
【００１８】
実装形態の詳細
本開示のさまざまな態様をより良く説明するために、分散コンピューティングシステム１００の第１の例示的な実施例を図１に示す。図１に示す分散システム１００は、インターネットなどのネットワーク１０６を介して接続された、複数のコンピューティングデバイス１０２、１０４を伴う。
【００１９】
例示的な分散システムでは、ストリーミングサーバ１０２は、プログラム出力のリアルタイムストリームを、遠隔で接続されたクライアントデバイス１０４に、ネットワーク１０６を通して提供するために、プログラム１０８を実行する。図１の例示の概略図では、プログラム１０４は、プログラム１０８の実行に従って、クライアントデバイス１０４から受信した制御入力を処理し、圧縮された音声ストリームとビデオストリームとをクライアントデバイス１０４に送信する、ビデオゲームプログラムであってよい。クライアント側に位置するユーザは、クライアントデバイス１０４のユーザインターフェースを通して、たとえば、クライアントデバイス１０４に接続されたディスプレイ及び／またはスピーカで、制御入力を提供し、音声ゲーム出力とビデオゲーム出力とを受信することによって、プログラムと相互作用することができる。図１の実施例では、入力を処理し、ビデオゲームグラフィックスを表示するためなどの計算負荷を、遠隔で実行するために、ストリーミングサーバ１０２に完全に任せることができる。
【００２０】
クラウドゲームを図１に示すシステム１００を使用して実装するために、ストリーミングサーバ１０２を、ゲームプログラム１０８を実行するように構成できるだけでなく、ストリーミングサーバ１０２は、サーバ１０２内に具体化された「ストリーミングサーバ処理」１１０を実装することもでき、それは、さまざまな機能を実行して、ネットワーク１０６を介したクライアントデバイス１０４とストリーミングサーバ１０２との間の通信のためのプログラム入力／出力を調整することができる。一例として、ストリーミングサーバ処理１１０を、ストリーミングサーバ１０２上でゲームソフトウェア１０８と連携して実行される、１つまたは複数のアプリケーション内に具体化することができる。ゲーム１０８を、ストリーミングサーバ処理１１０と合わせて遠隔で実行することは、クライアントデバイス１０４における入力と出力との間に皆無か最小限の遅延で実行され得、プログラム１０８がローカルで実行されていると、クライアント側のユーザに感じさせる。さらに、実行するために、遠隔で記憶されているプログラムの広範囲なコレクションにアクセスすることができる。たとえば、クラウドゲームアプリケーションでは、ユーザは、関連するビデオゲームプラットフォームのために設計されたゲームを選択することができ、遠隔サーバは、ユーザから受信した入力にしたがって、受信した入力と音声／ビデオ出力との間で認知可能な遅延なしに、そのゲームをロードし、それを実行し、その出力をクライアントデバイスにストリーミングすることができる。
【００２１】
図１に示す実施例では、これは、ストリーミングサーバ処理１１０とゲームコード１０８の両方を、同じコンピューティングデバイス、たとえば、ストリーミングサーバ１０２で実行することによって達成され得る。ストリーミングサーバは、ローカルに接続されたマスストレージデバイス、ストレージサーバ、ネットワークなどの潜在的にいかなるストレージデバイスからも、適切な接続を通して、選択されたプログラムにアクセスすることができる。クラウドゲームの実装形態及び他のクラウドコンピューティングの実装形態では、これは、サーバ１０２においてクライアント１０４のために実行されるソフトウェアアプリケーション１０８が、パーソナルコンピュータ（ＰＣ）アーキテクチャまたはストリームライナーサーバ１０２に類似の他のコンピュータアーキテクチャを動かすように設計されている場合、容易に実装され得る。限定するものではなく、一例として、ＰＣクラウドゲーム実装形態では、容易に利用可能なｘ８６ベースのサーバを使用して、ストリーミングサーバ処理１１０を実装するだけでなく、ＰＣゲームプログラム１０８を、それが一旦サーバ１０２によってアクセスされれば、実行することもできる。
【００２２】
しかしながら、図１に示す例示的な手法１００は、プログラム１０８を組込みプラットフォームと他の専門のアーキテクチャとの上で実行するように設計されている特定のアプリケーションには、適切でないことがある。たとえば、所望のプログラムが専用のゲーム機プラットフォームのために設計されたビデオゲームである場合、ゲームソフトウェアは、ある種のエミュレータなしには、サーバアーキテクチャで動くことができない可能性がある。残念ながら、遅延を最小限にすることが主な関心事であるクラウドコンピューティング環境では、ストリーミングサーバで実行されるソフトウェアエミュレータは、好ましくない解決策であることがあり、特に、実行時におけるエミュレータによるコードの解釈が認知可能な遅延を導入する、グラフィックスが多いアプリケーションではそうである。さらに、多くの場合では、クラウドサービスが望まれる各固有のアーキテクチャのために専用のサーバを作ることは、非現実的である。他の状況では、エミュレータは望ましい解決策であるかもしれないが、適切なエミュレータが利用可能でないことがある。
【００２３】
これらの課題に対処するために、プログラムを実行するために、サーバ側で追加のコンピューティングデバイスを活用することが望ましいことがあり、それによって、追加のコンピューティングデバイスが所望のプログラムを実行し、一方で、それに連結されたストリーミングサーバが、クライアントデバイスとインターフェース接続するための、その通常の機能を実行する。そのような手法を活用する分散システム２００の例示的な実施例を図２に示し、そこでは、「端末システム」２１２は、ストリーミングサーバ２０２に接続され、端末システムは、所望のアプリケーション２０８を実行する。ストリーミングサーバは、ネットワークストレージとビデオ圧縮とのための資源を提供することができ、それは、端末システムが、これらの機能のための十分な自由に使える資源を有していない場合である。
【００２４】
いくつかの実装形態では、端末システム２１２は、ビデオゲーム機などの専門アーキテクチャを有する、組込みシステムまたは他のコンピューティングシステムであることができる一方、ストリーミングサーバ２０２は、ｘ８６命令セットアーキテクチャなどの任意のコンピュータアーキテクチャに基づくことができ、そのコンピュータアーキテクチャは、ストリーミングサービスを提供するように適用され、必ずしも端末システム２１２に類似のアーキテクチャを有する必要はない。ストリーミングサーバ２０２は、ストリーミングサーバ処理２０２を実行し、通常のクラウドサービスを端末システムプログラム２０８に提供するように構成され得、サーバ側のコンピューティングデバイス、たとえば、ストリーミングサーバ２０２及び端末システム２１２は、ビデオゲームストリーミングサービスをクライアントデバイス２０４に提供するように、集合的に動作することができる。
【００２５】
図２に示す簡略図の構成は、さまざまな異なるコンピュータアーキテクチャのために設計された、さまざまな異なるソフトウェアプラットフォームに容易に適用され得る、現実的で柔軟なサーバソリューションを提供することができる。たとえば、潜在的に、いかなるストリーミングサーバ２０２も、ソフトウェアを実行する端末システムをローカルに接続することによって、さまざまな異なるコンピューティングアーキテクチャのために設計されたソフトウェアアプリケーションをストリーミングするように適用することができる。
【００２６】
しかしながら、所望のソフトウェアをサーバ側の端末システム２１２で実行することは、いくつかの課題を、クラウドコンピューティングの枠組み内で提示することがある。たとえば、端末システム２１２は、図１に示した例示的な配置に関連して上記で説明した処理と同様に、現在のストリーミングセッションのために選択されたプログラムを、さまざまな異なるプログラムの中から実行することができる。同様に、端末システム２１２で動いているプログラム２０８によって要求される、ストレージデバイスに対する他のデータ読み出し／書き込みは、端末システムによって、ローカルストレージの制約から解放され得る。ストレージデータ要求は、通常、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）接続、または他のマスストレージインターフェースなどの、端末システム２１２内のローカルなマスストレージ接続を通して達成される。端末システムのハードウェアアーキテクチャに変更を行う必要なしに、または追加のコンピューティング資源をストレージ仮想化処理で消費することなく、仮想化されたストレージソリューションを端末システムに提供することが望ましい。
【００２７】
クラウドゲーム環境を背景とした課題をより良く理解するために、以下の実施例は、図２のサーバ設定が、特定のクラウドゲーム実装形態でどのように活用されるか、を説明している。特に、クライアントデバイス２０４のユーザは、ゲームセッションのための「クラウド端末システム」２１２に指定され得る。ユーザがプレイし始めた時、ユーザの遊びたいゲーム２０８は、クラウド端末システム２１２上にあるべきである。同様に、ゲームセッションが終了し、ユーザが終えると、端末システム２１２は、異なるゲームを伴い得る、異なるユーザによる次のセッションのために、クリーンな状態に戻されるべきである。
【００２８】
残念ながら、端末システム２１２内のストレージ仮想化ソフトウェアを使用して、ゲームストレージをこの方法で仮想化することは、貴重な計算資源（たとえば、ＣＰＵ及びメモリ）を消耗し、ゲームとの互換性問題を引き起こすことがある。さらに、高度なグラフィックスタスクや他の資源集約度の高いタスクを含む、多くの最新のビデオゲームなどの重い計算負荷を伴うアプリケーションでは、端末システムからの追加の資源をストレージ仮想化のために消費することは、実行可能な解決策でない場合がある。
【００２９】
本開示のさまざまな実装形態によるストレージ仮想化手法の説明のための実施例を、図３に示す。図３の例示的な仮想化手法では、マスストレージデバイスは、専門ハードウェアを有する「ホストシステム」を使用して模倣され、マスストレージデバイスが、それに接続された端末システムのために模倣され得るようにする。図３の例示的な手法を、図２に示すものと同様なクラウドストリーミングアプリケーションで実装することができ、そこでは、端末システムは、所望のアプリケーションを実行している専門システムであり得、マスストレージデバイスを模倣するためのホストシステムは、ストリーミングサーバである。しかしながら、本明細書の原理によるストレージ仮想化を、他の背景において実装することができ、それには、ゲームストリーミング以外のクラウドコンピューティングアプリケーションと、コンピューティングデバイスのためのストレージ仮想化が望まれる場合、特に、コンピューティングデバイスに変更を行うことなくそうすることが望まれる場合の、ローカルでの実装と、が含まれる。
【００３０】
図３をより詳細に参照すると、この場合はストリーミングサーバであるインターフェースデバイスのためのホストシステム３０２に連結された、専門インターフェースデバイス３２０を使用して、仮想化ストレージを端末システム３１２に提供している。インターフェースデバイス３２０は、ホストシステム３０２に具体化されたストレージ処理３２２と共に、端末システム３１２から受信したさまざまなマスストレージデバイスデータ要求を実行することができる。
【００３１】
図３に示す実施例では、インターフェースデバイス３２０は、端末システムにとっては実際のマスストレージデバイスに見えるが、内部では、そのデータは（図示しない）ストレージサーバから来る、１つのハードウェアであることができる。一般的なマスストレージデバイスは、通常、ＳＡＴＡ接続または他の標準マスストレージインターフェースを使用する。マスストレージデバイスを模倣し、データ要求を受信するために、図３のインターフェースデバイス３２０は、同様のＳＡＴＡ接続または端末システムのマスストレージ通信インターフェースと互換性を有する他のマスストレージ通信インターフェースを、専用処理装置、メモリ、他の構成要素などの追加の構成要素と共に含むことができる。
【００３２】
さまざまな実装形態では、ストリーミングサーバなどのコンピューティングシステムまたは他の「ホスト」システムへのストレージ仮想化機能の容易な統合を促進するために、インターフェースデバイス３２０を、ホストシステムの拡張インターフェースを通してホストシステム３０２に接続され得るＰＣＩ−Ｅｘｐｒｅｓｓアドオンカードなどの、拡張カードとして実装することができる。動作中、インターフェースカードは、端末システムからのディスク読み出し要求及び／またはディスク書き込み要求を、そのマスストレージ接続（たとえば、ＳＡＴＡポート）を通して受信することができる。これらのデータアクセス要求は、ホストシステム３０２上のストレージアプリケーション３２２によって最終的に処理され、ストレージアプリケーションは、ファイル、ストレージサーバ、または別の何かからのデータにアクセスすることができる。
【００３３】
ストレージ仮想化機能には必要でないが、インターフェースデバイス３２０は、また、任意で、クラウドストリーミングという背景において特に便利であり得る他の機能を提供する、追加の構成要素を含むことができる。たとえば、ホストシステムのストリーミング機能を補助するために、インターフェースデバイス３２０は、任意で、音声及び／またはビデオデータの転送のための１つまたは複数の追加のインターフェースと、クラウドゲーム実装形態または他のクラウドコンピューティング実装形態を補助するための、ホストシステム３０２のストリーミングプロセスを介した音声／ビデオ（Ａ／Ｖ）ストリーミングを補助する対応機能とを含むことができる。インターフェースデバイス３２０の任意のＡ／Ｖインターフェースは、端末システム３１２と互換性を有することができ、ＨＤＭＩ（登録商標）、コンポジットビデオ、コンポーネントビデオ、Ｓビデオ、または他のＡ／Ｖ通信インターフェースなどの、さまざまなＡ／Ｖ規格のうちの任意のものに従って構成され得る。
【００３４】
図４Ａ及び図４Ｂは、本開示のさまざまな実装形態によるインターフェースデバイスといくつかのコンピューティングデバイスとの、例示的なハードウェアアーキテクチャ／ソフトウェアアーキテクチャのより詳細な概観を提供する。図４Ａは、本開示のさまざまな態様による、例示的な端末システムのコンピューティングアーキテクチャを示している。図４Ｂは、本開示のさまざまな実装形態による、例示的なインターフェースデバイスを有する、例示的なホストシステムのためのコンピューティングアーキテクチャを示している。いくつかの実装形態では、端末システムは、既存の組込みシステム、ビデオゲーム機、または専用アーキテクチャを有する、他のコンピューティングデバイスであることができる。いくつかの実装形態では、ホストシステムは、端末システムで動くアプリケーションを、たとえば、図２に示すクライアントデバイスにストリーミングするように構成された、ストリーミングサーバであることができる。
【００３５】
例示的な端末システム４１２は、（時には、ホストアダプタまたはホストバスアダプタとしても知られている）マスストレージホストコントローラ４２４を含むことができ、それは、たとえば、ＳＡＴＡホストコントローラ（ＡＨＣＩ）、ＵＳＢホストコントローラ、または他のマスストレージ通信インターフェース規格のためのホストコントローラであってよい。端末システム４１２は、また、ストレージデバイスインターフェースを介した通信を容易にするために、マスストレージデバイスホストコントローラ４２４と互換性を有する、対応するマスストレージデバイスドライバ４２６を含むことができる。マスストレージデバイスに接続するために、通常、ホストコントローラ４２４は、マスストレージデバイスに、（端末システムのマスストレージデバイスインターフェースによって、ＳＡＴＡケーブル、ＵＳＢケーブル、または他のコネクタなどの）対応するコネクタを使用して接続される。特に、ホストコントローラ４２４は、それが接続される特定のマスストレージデバイスの、（マスストレージデバイスが、必ずしもディスクを使用しない半導体ドライブまたは他のストレージデバイスであっても、時には、「ディスクコントローラ」としても知られている）マスストレージデバイスコントローラに接続される。図４Ａ〜図４Ｂに示した例示的なシステムでは、ホストコントローラ４２４は、代わりに、そのホストシステム４０２と共に端末システム４１２のマスストレージデバイスを模倣する、インターフェースデバイス４２０に接続される。
【００３６】
インターフェースデバイス４２０は、端末システム４１２によって使用されるストレージ通信インターフェースと互換性を有する、マスストレージデバイス接続のための通信インターフェースを含むことができる。インターフェースデバイスの通信インターフェースは、１つまたは複数のＳＡＴＡポート、ＵＳＢポート、または他の互換性を有するマスストレージインターフェースハードウェアなどの、１つまたは複数のマスストレージポート４１４を含むことができる。インターフェースデバイス４０２は、マスストレージハードウェアインターフェースに動作可能に連結された専用処理装置を、端末システム４０２からストレージコネクタを通して受信した信号に対して、マスストレージデバイスの模倣に関連する機能と任意で他の機能とを実行するように特化された論理４２８を有する専用処理装置と共に、含むことができる。論理４２８は、また、ホストシステム４０２との通信を、追加の通信インターフェースを通して補助することができ、追加の通信インターフェースは、ホストシステム内に具体化されたストレージ処理にインターフェース接続するために、ホストシステム４０２の周辺機器用バスと通信することができる。限定するものではなく、一例として、インターフェースデバイス４２０は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）、ＰＣＩ−ｅＸｔｅｎｄｅｄ（ＰＣＩ−Ｘ）、ＰＣＩ−Ｅｘｐｒｅｓｓ（ＰＣＩｅ）、または、たとえば、周辺機器用バスを介したホストシステム４０２との通信を容易にする他のインターフェースなどの、拡張インターフェースを通してホストシステム４０２プロセスバスと通信するアドオンカードであってよい。ホストシステムは、インターフェースデバイス４２０を介した信号のやり取りを補助する、インターフェースデバイスドライバ４２６を含むことができる。
【００３７】
いくつかの実装形態では、専用処理装置は、フィールドプログラム可能ゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、または本明細書で説明する原理に従って構成された専用論理ユニットを有する他の専用処理装置であってよい。専用処理装置の論理ユニット４２８は、また、ストレージ仮想化に加えて、端末システム４０２上で動いているアプリケーション４０８からの出力の音声／ビデオキャプチャなどの、クラウドストリーミングのためのさまざまな機能を補助する専用論理を含むことができ、それにより、クラウドゲームを伴う実装形態において、ホストシステム４０２によるネットワークを介したＡ／Ｖ出力のストリーミングを容易にすることができる。インターフェースカード４０２は、１つまたは複数のＨＤＭＩポートまたは他のＡ／ＶポートなどのＡ／Ｖ通信インターフェースと、端末システム上で動いているアプリケーションのＡ／Ｖ出力を対応するＡ／Ｖコネクタを通して受信する、互換性を有するＡ／Ｖレシーバ４３０とを含むことができる。
【００３８】
図４Ａ〜図４Ｂに示した実施例では、専用処理装置の論理４２８内に具体化されたマスストレージデバイスコントローラは、ホストシステム４０２のインターフェースデバイスドライバ４２６によって制御され、ホストシステム４０２内に具体化されたストレージ処理４３２、たとえば、中央演算装置４０４上で動いているソフトウェアアプリケーションは、データ伝送サービスをインターフェースデバイスドライバ４２６に提供することができる。たとえば、端末システム４１２が、データを、そのディスクドライブ、またはマスストレージコネクタを介して接続されている他のマスストレージデバイスから読み出すことを要求する場合、この要求は、マスストレージホストコントローラ４２４、論理４２８に含まれるマスストレージデバイスコントローラ、インターフェースデバイスドライバ４２６を通って、ホストシステム内に具体化されたストレージ処理４３２に到達することができる。ストレージ処理４３２は、次いで、さまざまな資源から得られるデータを読み出すことができる。たとえば、ストレージ処理４３２は、データを、ホストマシンにローカルに接続された、ディスクドライブまたは他のマスストレージデバイスから読み出すことができ、またはストレージ処理４３２は、データを、ネットワークを介して、メモリドライブまたはストレージサーバから読み出すことができる。ストレージ処理が使用する方法のどちらも、端末システム４０２にとって透過的である。
【００３９】
いくつかの実装形態では、ホストシステム４０２は、任意で、ネットワークを介して、端末システム４１２上で動いているアプリケーション４０８からの出力のストリームを送信するように適用されたストリーミングサーバであってよい。たとえば、ホストシステム４０２は、ホストシステム４０２上で動いているアプリケーションであり得るＡ／Ｖ処理４３４を含むことができる。Ａ／Ｖキャプチャ処理は、インターフェースカード４２０に接続されたＡ／Ｖコネクタを通して送信されたＡ／Ｖストリームをキャプチャするための、専用処理装置の専用論理４２８と連動することができる。ストリーミングサーバ４０２は、イーサネット（登録商標）アダプタまたは他のネットワークアダプタ４３６と、ホスト４０２のオペレーティングシステムのための対応するイーサネットドライバまたは他のネットワークドライバ４３８とを、プロトコルサポートをネットワーク通信に提供する互換性を有するネットワークライブラリ４３９と共に含むことができる。ホストシステムは、また、対応するメモリドライバ４４２（たとえば、ｔｍｐｆｓ）によって制御され、ファイルシステムライブラリ４４４によって補助される、システムメモリ４４０を含むことができる。ストリーミングサーバ処理４４６は、ホストシステム４０２上で実行されて、リアルタイムのストリーミングを（図４Ａ〜図４Ｂでは図示しない）ネットワークを介して接続されたクライアントデバイスに提供することに関連付けられた機能を、実行することができる。
【００４０】
いくつかの状況では、データストレージは、（図４Ａで透視的に示した）遠隔ストレージサーバ４４８とメモリ４４０とメモリドライバ４４２との組み合わせを使用して実装され得る。限定するものではなく、一例として、いくつかの実装形態では、データは、メモリドライバ４４２によって、ストレージサーバ４４８からのみ読み出され、メモリ４４０のみに書き込まれ得る。
【００４１】
端末システム４１２は、たとえば、既存の組込みプラットフォームのために設計されたビデオゲームソフトウェアであり得るアプリケーション４０８を補助する、さまざまな他の構成要素を含むことができる。端末システム４１２は、ストレージにアクセスするためのファイルシステム層４２７と、アプリケーション４０８のグラフィックス表示を補助するさまざまな構成要素とを含むことができる。中央演算装置（ＣＰＵ）に加えて、端末システム４１２は、グラフィックスドライバ４５２によって動かされ、グラフィックスライブラリ４５４によって補助され得る、グラフィックスプロセシングユニット（ＧＰＵ）４５０を含むことができる。ＨＤＭＩ送信機などのＡ／Ｖ送信機４５６は、アプリケーションの音声及び／またはビデオ出力を、ホストシステムのホストインターフェースデバイスに、互換性を有するＡ／Ｖコネクタを通して送信するために含まれ得る。
【００４２】
図５を参照すると、インターフェースカード４２０上に実装され得る例示的なインターフェースデバイス５２０と、その上のいくつかの構成要素と、例示的な専用処理装置５６０の内部との概略図が、本開示のさまざまな実装形態に従って示されている。限定するものではなく、一例として、インターフェースデバイス５２０は、プリント基板（ＰＣＢ）に取り付けられた構成要素を有するアドオンカードとして構成され得、インターフェースカード５２０は、ホストシステムの周辺機器用バスと、接続された時にホストシステムの周辺機器用バスとの通信を可能にする、周辺機器拡張ポートまたは他の拡張通信インターフェースなどのホストハードウェアインターフェース５６２を通して、インターフェース接続することができる。
【００４３】
例示的な専用処理装置５６０は、本開示のさまざまな態様による専用機能に特化する、さまざまな論理ブロックを含むことができる。専用処理装置を、たとえば、ＦＰＧＡ、ＡＳＩＣ、または類似の専用処理装置として実装することができる。専用処理装置５６０は、インターフェースカード５２０と（図５では図示しない）インターフェースデバイス５６０のホストシステムの周辺機器用バスとの間の、通信インターフェース用のプロトコルスタックの一部を実装する、ホストインターフェースブロック５６４を含むことができる。
【００４４】
ＰＣＩ−Ｅｘｐｒｅｓｓなどの通信バスを、いくつかの層を有するプロトコルスタックとして考えることができる。異なる通信プロトコルは、異なる層を有する。通常、一番上に「アプリケーション層」、次に、中間にいくつかのトランスポート関連層、一番下にいくつかの物理層がある。ホストインターフェースブロック５６４は、そのようなプロトコルスタックの全部の層を実装する必要はない。代わりに、ホストインターフェースブロックは、デジタル情報を通信リンクに、たとえば、電気信号または光信号を通して載せる責任を負う、物理層を引き受けることができる。ホストインターフェースブロックは、また、プロトコルスタックの「トランスポート層」のうちの一部または場合によっては全部に対して責任を負うことができるが、アプリケーション層に対しては責任を負う必要がない。
【００４５】
限定するものではなく、一例として、ホストインターフェースブロック５６４は、ＰＣＩ−Ｅｘｐｒｅｓｓ接続を通した通信のためのハードＰＣＩｅブロックであってよく、それは、ＰＣＩｅインターフェースまたはホストシステムのローカルバスにアクセスするための他のインターフェースのための、プロトコルスタックを組み込んでいる。ホストインターフェースブロック５６４を、メモリアクセスインターフェースユニット５６６に組み込むことができ、メモリアクセスインターフェースユニット５６６は、専用処理装置５６０の他の論理ユニットと共に、たとえば、ホストシステムへの要求という割り込みを使用して、ホストシステムのシステムメモリに、ホストハードウェアインターフェース５６２を通して直接アクセスすることができる。
【００４６】
いくつかの実装形態では、メモリアクセスインターフェース５６６は、メモリアクセスと割り込み機能とを提供する構成要素を含むことができる。特に、ホストインターフェースブロック５６４は、オンチップ相互接続５７２とホストハードウェアインターフェース５６２との間の接続を、任意のオンチップデバイスに、メモリにマッピングされた入力／出力（Ｉ／Ｏ）を使用して、ホストシステムからアクセス可能にするような方法で提供するように構成され得る。この機能は、ホストシステムが、マスストレージコントローラ５７０、メモリコントローラ５７６、またはＧＰＩＯ５８２などの、オンチップ相互接続５７２に接続されたデバイスをプログラムすることを可能にする。
【００４７】
メモリアクセスインターフェース５６６は、また、接続されたデバイス、たとえば、マスストレージコントローラ５７０が、イベント（たとえば、マスストレージの読み出し要求）が到達した時割り込みを生成することを可能にする、割り込み接続５６５を含むことができる。）ホストハードウェアインターフェースハードウェア５６２とインターフェース接続するデバイスが１つのみ存在できる場合には、メモリアクセスインターフェースがこの機能を提供することは望ましい。
【００４８】
メモリアクセスインターフェース５６６は、また、（任意で）直接メモリアクセス（ＤＭＡ）エンジン５６７を含むことができる。本明細書で使用される通り、また、当業者によって一般的に理解されている通り、直接メモリアクセス（ＤＭＡ）という用語は、コンピュータ内の特定のハードウェアサブシステムが、コンピュータの中央演算装置（ＣＰＵ）とは独立に、システムメモリにアクセスすることを可能にする機能のことを指す。ＤＭＡエンジン５６７は、ホストインターフェースブロック５６４とホストハードウェアインターフェース５６２との間のデータ移動動作を実装することができる。いくつかの実装形態では、メモリアクセスインターフェースユニット５６６は、ホストインターフェースブロック５６４をオンチップ相互接続５７２に接続することなどの、ホストインターフェースブロック５６４によって提供されないプロトコルスタックの部分（たとえば、ＰＣＩ  Ｅｘｐｒｅｓｓ）を実装することができる。
【００４９】
マスストレージデバイス仮想化の機能のために、インターフェースデバイス５２０は、１つまたは複数のマスストレージデバイス通信インターフェース５６８を含むことができ、マスストレージデバイス通信インターフェース５６８は、１つまたは複数のＳＡＴＡポート５６９及び／またはコネクタ、または他のマスストレージデバイス通信インターフェースの形態で実装され得、インターフェースデバイス５２０の回路基板に取り付けられ得る。限定するものではなく、一例として、インターフェースカード５２０は、２つの端末システムへの接続を容易にする２つのＳＡＴＡポートを含むことができるが、１つのインターフェースデバイス５２０が、異なる数の端末システムにサービスを提供することができるように、インターフェースデバイスが、代替的に、異なる数のマスストレージデバイスコネクタを含むことができる、ということに留意する。マスストレージデバイスコネクタ５６８の各々について、特定のマスストレージ通信インターフェース（たとえば、ＳＡＴＡ）と互換性を有する専用処理装置５６０内に具体化された、対応するマスストレージデバイスコントローラ５７０があり得る。
【００５０】
１つまたは複数のマスストレージデバイスコントローラ５７０は、専用処理装置５６０の他の論理ユニットに、オンチップ相互接続５７２を通して接続され得、オンチップ相互接続５７２は、マスストレージデバイスコントローラ５７２の各々に、ホストシステムインターフェース構成要素（たとえば、ＰＣＩ−Ｅｘｐｒｅｓｓ）へのアクセスを提供することができる。オンチップ相互接続は、専用処理装置（たとえば、ＦＰＧＡまたはＡＳＩＣ）の機能ブロックを接続するように構成された、標準的なオンチップバスアーキテクチャに構成され得る。たとえば、専用処理装置５６０がＦＰＧＡである場合、専用処理装置の構成要素は、マスタースレーブアーキテクチャ、たとえば、ＡＸＩ４またはＡＸＩ４−ＬｉｔｅなどのＡｄｖａｎｃｅｄ  Ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ  Ｂｕｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ  （ＡＭＢＡ）、または他の適切なオンチップバスアーキテクチャを使用して、相互接続され得る。ＡＸＩ４は、大量のデータ伝達のために使用され得、ＡＸＩ−Ｌｉｔｅは、低性能接続のため、または構成目的のために使用され得る。専用処理装置論理ブロックのオンチップ相互接続は、図５に示すマスタースレーブ型の構成に従って構成され得る。例示の概略図では、「Ｍ」及び対応する太線はマスター接続を表し、「Ｓ」及び対応する点線はスレーブ接続を表し、「Ｃｔｒｌ」は制御を表す。
【００５１】
インターフェースデバイス５２０は、専用処理装置５６０の論理内に提供されたメモリコントローラ５７６によって制御され得る、１つまたは複数のメモリユニット５７４を含むことができる。メモリユニットは、マスストレージインターフェース５６８を通して接続された端末システムと、ホストハードウェアインターフェース５６２を通して接続されたホストシステムとの間のデータ伝達を、端末システムによって発行されたデータ要求に従って補助することができる。たとえば、メモリユニット５７４は、本明細書で説明する原理に従って、端末システムによって発行された読み出し要求によって要求されたデータを一時的に記憶するように構成された、ＤＤＲ３  ＲＡＭなどの一時的なＲＡＭユニット、または他の揮発性メモリユニットであることができる。メモリコントローラ５７６は、オンチップバスアーキテクチャ５７２に接続されて、専用処理装置５６０の他の論理ユニットから受信した信号に従って、読み出し動作／書き込み動作を実行することができる。
【００５２】
動作中、ストレージインターフェース５６０を通して接続された（図５に図示しない）コンピューティングデバイスのマスストレージホストコントローラは、マスストレージデバイスコントローラ５７０に、読み出し動作と、書き込み動作と、他の動作とを実行するように要求することができる。そのような要求を受信すると、マスストレージデバイスコントローラ５７０は、（図５に図示しない）ホストシステム上のインターフェースデバイスドライバとストレージ処理とに、ホストハードウェアインターフェース５６２、たとえば、ＰＣＩ−Ｅｘｐｒｅｓｓを通した割り込みを使用して、要求について通知することができる。ホストシステムのソフトウェア構成要素は、次いで、要求を取り扱うことについての決定を行うことができる。
【００５３】
たとえば、端末システムからの読み出し要求の場合、（図示しない）ホストシステムのストレージアプリケーションは、このデータを、あるストレージ資源から読み出し、それをインターフェースデバイスメモリユニット５７４に、ホストハードウェアインターフェース５６２を介して記憶することができる。完了すると、ホストシステムのストレージアプリケーションは、専用処理装置５６０のマスストレージデバイスコントローラ５７０をプログラムして、読み出し要求を、インターフェースデバイスメモリ５７４から読み出すことによって完了させることができる。限定するものではなく、一例として、マスストレージホストコントローラ４２４がＳＡＴＡコントローラだと仮定する。ＳＡＴＡトランザクション（読み出し／書き込み及び他もある）について、ストリーミングサーバ４０２のマスストレージホストコントローラ４２４は、割り込みを起こす。ストリーミングサーバ４０２のマスストレージホストドライバ４２６は、マスストレージホストコントローラ４２４の状態を確認する。要求が「書き込み要求」であると判断された場合、マスストレージホストコントローラ４２４は、そのデータを、インターフェースデバイス５２０のメモリ５７４（たとえば、ＤＤＲ３メモリ）に書き込むようにプログラムされる。マスストレージホストコントローラ４２４は、この目的のための、自身の内蔵ＤＭＡエンジン５６７を有することができる。別の割り込みは、データがメモリ５７４に書き込まれた時に起こる。マスストレージホストドライバ４２６は、次いで、ＤＭＡ要求を、ＤＭＡエンジン５６７を使用して発行して、メモリ５７４からホストシステムメモリ４４０にコピーする。
【００５４】
ホストシステムメモリ４４０のバッファを、ストレージ処理と直接共有することができる。ホストシステムメモリ４４０へのＤＭＡトランザクションが完了すると、ストレージ処理は、書き込み要求について通知され、書き込みトランザクションを終わらせる。それは、データを、ディスクに、ネットワークストレージデバイスに、またはそれがデータを記憶したいと望むどんな場所にも、書き込むことができる。
【００５５】
インターフェースデバイス５２０のメモリ５７４が、読み出し動作または書き込み動作のために必要でないことがある、ということに留意する。マスホストストレージコントローラ４２４が、ホストシステムメモリ４４０に直接書き込むことは可能である。たとえば、メモリアクセスインターフェースユニット５６６は、ＰＣＩ−ＥｘｐｒｅｓｓをＡＸＩ４に、またＡＸＩ４をＰＣＩ−Ｅｘｐｒｅｓｓにマッピングすることができる。この特徴は、ＡＸＩ４マスターデバイスが、ホストシステムメモリに書き込みを行うことを可能にする。
【００５６】
インターフェースデバイスは、任意で、追加の機能をクラウドゲームストリーミングなどの端末システム上で動くストリーミングアプリケーションに提供する、さまざまな他の構成要素を含むことができる。たとえば、専用処理装置５６０は、また、１つまたは複数の端末システムからのＡ／Ｖストリームをキャプチャするための、１つまたは複数の音声及び／またはビデオキャプチャブロック５７８を含むことができる。１つまたは複数のＡ／Ｖキャプチャ論理ユニット５７８の各々は、対応するＡ／Ｖレシーバ５３０に動作可能に連結され、Ａ／Ｖレシーバ５３０の各々は、同様に、図５に示すＨＤＭＩポートまたは他のＡ／Ｖ接続ポートなどの適切なＡ／Ｖハードウェアインターフェース５８０に接続されている。端末システムからのＡ／Ｖ出力は、Ａ／Ｖレシーバ５３０に、Ａ／Ｖインターフェース５８０を通して、互換性を有するＡ／Ｖコネクタを使用して接続され得る。Ａ／Ｖキャプチャユニット５７８は、ホストシステム上のインターフェースデバイスドライバとＡ／Ｖ処理と、ホストシステムバス（たとえば、周辺機器用バス）に接続され得るホストハードウェアインターフェース５６２を通して通信することができ、ホストシステムは、次いで、Ａ／Ｖストリームをクライアントデバイスに、ネットワークを介して配信することができる。
【００５７】
インターフェースデバイス５８２は、また、追加の機能を補助する、１つまたは複数の汎用入力／出力（ＧＰＩＯ）ブロックを含むことができる。限定するものではなく、一例として、ＧＰＩＯブロックの各々は、端末システムの電力制御や他の機能などの追加の機能を提供するために、端末システムの対応する１つに接続され得る。
【００５８】
上述した通り、専用処理装置５６０は、たとえば、ＦＰＧＡ、ＡＳＩＣ、または本開示のさまざまな態様による、マスストレージデバイスコントローラ、メモリコントローラ、ＤＭＡエンジンなどの、特定の機能に専念するブロックを有する他の集積回路として実装され得る。本開示のいくつかの実装形態では、これらのユニットのうちの１つまたは複数は、当技術分野において、ＩＰブロックまたはＩＰコアと一般的に呼ばれる、再使用可能な論理ユニットまたは他のチップ設計として提供され得る。
【００５９】
図６は、本開示のさまざまな態様による、端末システム６１２のマスストレージデバイスを模倣するための例示的なフローチャートを示している。図６に示す実施例では、互いに動作可能に連結されたインターフェースデバイス６２０及びホストシステム６０２は、端末システム６１２のマスストレージデバイスを模倣するように構成されている。図６の例示の実施例は、説明の目的のために、端末システムによって発行された読み出し要求について模倣することを示すが、本開示の実装形態が、例示の構成要素を使用して、端末システムによって発行される、書き込み要求と他のマスストレージデータ要求とを完了させるように構成され得る、ということに留意する。
【００６０】
図６に示す通り、マスストレージデバイスは、（図示しない）さまざまなアプリケーションを実行するように構成された中央演算装置（ＣＰＵ）６８１とメモリユニット６８２とを有し得る、端末システム６１２または他のコンピューティングシステムのために模倣され得る。端末システム６１２は、さまざまな読み出し要求と書き込み要求と他のデータ要求とを、マスストレージデバイスコネクタを通して、マスストレージデバイスコントローラ６２４を使用して行うことができる。通常、これらの要求は、対応するデバイスコントローラを有するローカルのマスストレージデバイスによって完了される。図６の実施例では、これらのデータ要求は、ホストコンピュータシステム６０２と通信しているインターフェースデバイス６２０によって満たされてもよく、ホストコンピュータシステム６０２は、さまざまなデータ要求を扱うために、いくつかの他のストレージ資源６９９にアクセスすることができる。
【００６１】
図６の説明では、読み出し要求６８４は、端末システム６１２のマスストレージホストコントローラ６２４によって発行され、専用処理装置６６０のマスストレージデバイスコントローラ６７０で受信される。マスストレージデバイスコントローラ６７０は、ホストシステム６０２に組み込まれたストレージ処理６３２に、割り込みを使用して、たとえば、図６に示すＤＭＡエンジン６６６を介して、要求６８４について通知する。ストレージ処理は、ホストシステム６０２のシステムメモリ６４０内に具体化されたアプリケーションであることができ、アプリケーションは、ホストシステム６０２の中央演算装置６８６によって実行されて、要求６８４を扱うことを決定することができる。
【００６２】
図６に示す通り、ストレージ処理は、要求されたデータ６８７を、ストレージサーバなどのいくつかの他のストレージ資源６９９から読み出すことができる。ストレージ処理は、読み出されたデータ６８９を、インターフェースデバイスメモリユニット６７４内に、たとえば、ＰＣＩ−ｅ、またはホストシステム６０２の周辺機器用バスとの他の通信インターフェースなどの（図示しない）拡張インターフェースを通して、記憶することができる。周辺機器用バスと拡張インターフェースを通して通信する、アドオンカードまたは他の周辺機器用構成要素として実装される代わりに、いくつかの実装形態では、インターフェースデバイス６２０は、ホストシステムの周辺機器用バスに直接接続された専用処理装置６６０のように実装され、ホストシステム６０２の統合部分として提供され得る。
【００６３】
代替的な実装形態では、専用処理装置６６０、たとえば、ＦＰＧＡ、ＡＳＩＣ、または同等回路は、ストリーミングサーバ４０２のマザーボード上に直接配置され、ストリーミングサーバの周辺機器用バスに接続され得る。専用処理装置は、ＰＣＩ−Ｅｘｐｒｅｓｓを介して接続され得る。
【００６４】
ストレージ処理によって読み出されたデータがインターフェースメモリ６７４内に記憶されると、ストレージ処理は、マスストレージデバイスコントローラ６７０をプログラムして、インターフェースメモリ内に記憶されたデータ６８９にアクセスし、それを端末システム６１２に送信することによって要求を完了させることができる。
【００６５】
読み出し動作中、マスストレージデバイスコントローラ６７０は、（ＤＭＡエンジン６６６に内蔵された割り込み機能を使用して転送され得る）割り込みを、ホストシステム６０２のオペレーティングシステムのストレージドライバに対して起こすことができる。要求が読み出し要求６８４であると判断された場合、ストレージドライバは、ストレージ処理６３２に、（ストレージドライバと共有され得る）ホストメモリ６４０内に記憶されている「データを読み出す」ように依頼する。全てのデータが読み出されると、ＤＭＡエンジン６６６は、ホストメモリ６４０からのデータ６８９をインターフェースメモリ６７４に転送するようにプログラムされ得る。
【００６６】
結論
本開示の態様を、本開示のさまざまな実装形態によるマスストレージ仮想化に対する必要性が望まれ得る特定の実施例として、クラウドゲームを参照して説明したが、本開示の実装形態がそれに限定されない、ということに留意する。本開示の実装形態は、模倣用のマスストレージデバイスを、クラウドコンピューティングまたはクラウドゲームを伴わないことがある任意のコンピューティングデバイスに提供することができる。
【００６７】
本開示の実装形態が、さまざまなマスストレージ通信プロトコルのうちの任意のものを活用することができ、それには、ＳＡＴＡと、ＵＳＢと、ＩＤＥと、ＲＳ２３２と、Ｆｉｒｅｗｉｒｅ（登録商標）と、Ｔｈｕｎｄｅｒｂｏｌｔと、他のマスストレージ通信インターフェース規格とが含まれる、ということに留意する。
【００６８】
本開示の実装形態が、さまざまな音声規格及び／またはビデオ規格のうちの任意のものを活用することができ、それには、ＨＤＭＩと、Ｓビデオと、コンポーネントビデオと、コンポジットビデオと、ディスプレイポートと、ＶＧＡと、ＤＶＩと、他のＡ／Ｖ通信インターフェース規格とが含まれる、ということに留意する。
【００６９】
上記は、本発明の好適な実施形態の完全な説明であるが、さまざまな代替物と変更物と同等物とを使用することが可能である。したがって、本発明の範囲は、上記の説明を参照して判断されるべきでなく、代わりに、添付の特許請求の範囲を、その全範囲の同等物と共に参照して判断されるべきである。好適かどうかに関わらず、本明細書で説明した特徴は、好適かどうかに関わらずに、本明細書で説明した他の特徴と組み合わせることができる。以下の特許請求の範囲では、「１つ（ａ）」または「１つ（ａｎ）」という不定冠詞は、明示的に別段の定めが述べられていない限り、その冠詞の後の項目の１つまたは複数の量を指す。添付の特許請求の範囲は、ミーンズプラスファンクション限定を含むものとして解釈されるものではないが、そのような限定が、任意の請求項で、「ための手段」という表現を使用して明示的に述べられた場合はその限りではない。
【図１】
2016534463.tif 000003
【図２】
2016534463.tif 000004
【図３】
2016534463.tif 000005
【図６】
2016534463.tif 000006
【図４Ａ】
2016534463.tif 000007
【図４Ｂ】
2016534463.tif 000008
【図５】
2016534463.tif 000009
【国際調査報告】
2016534463.tif 000010