(57)【要約】【解決手段】不揮発性メモリオーバーファブリック（ＮＶＭｅ−ｏＦ）を使用して、ソリッドステートストレージドライブ（ＳＳＤ）（２０４、２１２）により具現化されたネットワークストレージから、クライアントデバイスへ、映像、及びコンピュータゲームなどがストリーミングされる。冗長性を提供するために、例えばコンピュータゲームまたは映像ファイルなどの単一のコンテンツの多数のコピーが、多数のＳＳＤに格納される（８００）。コンテンツに対するクライアント要求に基づいて、ブロックレベルのストレージをアドレス指定する情報を提供するために、データ構造は、各コンテンツと、コンテンツを格納しているＳＳＤ及び関連ブロック番号とを、相互に関連付ける（８０２）。コンテンツがストリーミングされているコンテンツの供給源は、負荷分散またはＳＳＤ損失に備えるために、ＳＳＤ間で動的に切り替えられ得る（１０１２）。【選択図】図１
2021506038.tif 000002
【特許請求の範囲】
【請求項１】
マッピングデータ構造にアクセスできる少なくとも１つの管理サーバと、
それぞれが複数のコンピュータマザーボードを備える複数の計算サーバと、
少なくとも第１の不揮発性メモリ（ＮＶＭｅ）対応ソリッドステートドライブ（ＳＳＤ）及び第２のＮＶＭｅ対応ＳＳＤを備える少なくとも１つのストレージサーバと、
を備えるコンピュータ実装サーバスタックであって、
少なくとも第１の計算サーバは、
少なくとも１つの処理ユニットを備える少なくとも第１のコンピュータマザーボードと、
少なくとも１つの処理ユニットを備える少なくとも第２のコンピュータマザーボードと、
前記マザーボードを前記第１のＮＶＭｅ対応ＳＳＤ及び前記第２のＮＶＭｅ対応ＳＳＤに接続する少なくとも１つのＮＶＭｅオーバーファブリック（ＮＶＭｅ−ｏＦ）通信経路と、
を備え、
前記サーバスタックは、命令により、
クライアントコンピュータから１つのコンテンツの要求を受信することと、
前記１つのコンテンツの識別を使用して前記マッピングデータ構造にアクセスして、前記１つのコンテンツが少なくとも前記第１のＮＶＭｅ対応ＳＳＤに格納されていることを特定し、前記第１のＮＶＭｅ対応ＳＳＤのどのブロックが前記１つのコンテンツを格納しているかを特定することと、
前記１つのコンテンツを格納している前記第１のＮＶＭｅ対応ＳＳＤ及び前記第１のＮＶＭｅ対応ＳＳＤの前記ブロックを特定したことに基づいて、前記１つのコンテンツを、計算サーバを経由することなく前記ＮＶＭｅ−ｏＦ経路を介して直接前記クライアントコンピュータにストリーミングさせることと、
を実行するようにプログラムされる、
コンピュータ実装サーバスタック。
【請求項２】
前記データ構造はさらに、前記１つのコンテンツが少なくとも前記第２のＮＶＭｅ対応ＳＳＤに格納されていることと、前記第２のＮＶＭｅ対応ＳＳＤのブロックが前記１つのコンテンツを格納していることとを、相互に関連付け、
前記サーバスタックは、命令により、
前記第１のＮＶＭｅ対応ＳＳＤに障害が生じたという判定に応じて、前記第２のＮＶＭｅ対応ＳＳＤに切り替えて、前記１つのコンテンツを前記クライアントコンピュータに提供すること
を実行するようにプログラムされる、請求項１に記載のコンピュータ実装サーバスタック。
【請求項３】
前記データ構造はさらに、前記１つのコンテンツが少なくとも前記第２のＮＶＭｅ対応ＳＳＤに格納されていることと、前記第２のＮＶＭｅ対応ＳＳＤのどのブロックが前記１つのコンテンツを格納していることとを、相互に関連付け、
前記サーバスタックは、命令により、
依然として作動可能な前記第１のＮＶＭｅ対応ＳＳＤで負荷分散条件が満たされるという判定に応じて、前記第２のＮＶＭｅ対応ＳＳＤに切り替えて、前記１つのコンテンツを前記クライアントコンピュータに提供すること
を実行するようにプログラムされる、請求項１に記載のコンピュータ実装サーバスタック。
【請求項４】
前記１つのコンテンツは、前記第１のＮＶＭｅ対応ＳＳＤ及び前記第２のＮＶＭｅ対応ＳＳＤにわたりストライピングされる、請求項１に記載のコンピュータ実装サーバスタック。
【請求項５】
前記１つのコンテンツは、前記第１のＮＶＭｅ対応ＳＳＤ及び前記第２のＮＶＭｅ対応ＳＳＤのそれぞれに、完全に記録される、請求項１に記載のコンピュータ実装サーバスタック。
【請求項６】
前記１つのコンテンツは、映像である、請求項１に記載のコンピュータ実装サーバスタック。
【請求項７】
前記１つのコンテンツは、コンピュータゲームである、請求項１に記載のコンピュータ実装サーバスタック。
【請求項８】
前記管理サーバは、前記ストレージサーバ、または前記計算サーバのいずれでもない、請求項１に記載のコンピュータ実装サーバスタック。
【請求項９】
前記管理サーバは、前記計算サーバのうちの少なくとも１つにより実施される、請求項１に記載のコンピュータ実装サーバスタック。
【請求項１０】
前記管理サーバは、前記ストレージサーバにより実施される、請求項１に記載のコンピュータ実装サーバスタック。
【請求項１１】
一時的信号ではなく、かつ命令を含む少なくとも１つのコンピュータメモリを備えるデバイスであって、
前記命令は、少なくとも１つのプロセッサにより、
少なくとも第１の不揮発性メモリ（ＮＶＭｅ）対応ソリッドステートドライブ（ＳＳＤ）及び第２のＮＶＭｅ対応ＳＳＤ上で、１つのコンテンツの複数の完全コピーを特定することであって、データ構造は、前記１つのコンテンツの識別と、前記１つのコンテンツが格納されている前記第１のＳＳＤ及び前記第２のＳＳＤ並びに各ＳＳＤの関連ブロックの識別とを、相互に関連付ける、前記特定することと、
クライアントコンピュータからの前記１つのコンテンツに対する要求に応じて、前記データ構造にアクセスして、前記第１のＳＳＤ及び前記第２のＳＳＤ上のどこに前記１つのコンテンツが格納されているかを特定することと、
前記第１のＳＳＤ及び前記第２のＳＳＤ上のどこに前記１つのコンテンツが格納されているかを特定したことに応じて、周辺機器相互接続エクスプレス（ＰＣＩ（ｅ））プロトコルを使用する少なくとも１つのＮＶＭｅオーバーファブリック（ＮＶＭｅ−ｏＦ）通信経路を用いて、前記１つのコンテンツにアクセスして少なくとも前記第１のＳＳＤから前記クライアントコンピュータに前記１つのコンテンツを送信することと、
を実行可能である、デバイス。
【請求項１２】
前記少なくとも１つのコンピュータメモリに接続された前記少なくとも１つのプロセッサを備える、請求項１１に記載のデバイス。
【請求項１３】
前記１つのコンテンツは、映像である、請求項１１に記載のデバイス
【請求項１４】
前記１つのコンテンツは、コンピュータゲームである、請求項１１に記載のデバイス
【請求項１５】
前記命令は、
前記第１のＳＳＤに障害が生じたという判定に応じて、前記第２のＳＳＤに切り替えて、前記１つのコンテンツを前記クライアントコンピュータに提供すること
を実行可能である、請求項１１に記載のデバイス。
【請求項１６】
前記命令は、
依然として作動可能な前記第１のＳＳＤで負荷分散条件が満たされるという判定に応じて、前記第２のＳＳＤに切り替えて、前記１つのコンテンツを前記クライアントコンピュータに提供すること
を実行可能である、請求項１１に記載のデバイス。
【請求項１７】
前記１つのコンテンツは、前記第１のＳＳＤ及び前記第２のＳＳＤにわたりストライピングされる、請求項１１に記載のデバイス。
【請求項１８】
前記１つのコンテンツは、前記第１のＳＳＤ及び前記第２のＳＳＤのそれぞれに、完全に記録される、請求項１１に記載のデバイス。
【請求項１９】
不揮発性メモリオーバーファブリック（ＮＶＭｅ−ｏＦ）ネットワークストレージシステムを提供することと、
前記ＮＶＭｅ−ｏＦネットワークストレージシステムでデータ冗長性を提供することと、
前記ＮＶＭｅ−ｏＦネットワークストレージシステムで負荷分散を提供することと、
を含む方法。
【請求項２０】
いくつかのコンテンツと、各コンテンツが格納されている前記ＮＶＭｅ−ｏＦネットワークストレージシステム内のソリッドステートドライブ（ＳＳＤ）及び各ＳＳＤ内のブロックとを相互に関連付ける、前記ＮＶＭｅ−ｏＦネットワークストレージシステムのデータ構造を確立することを含む、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、概して高速かつ低遅延なネットワークストレージに関し、特にネットワークコンピュータゲーム、映像放送、コンテンツ配信ネットワーク、仮想マシン、及び機械学習アプリケーションで使用するこのようなシステムに関する。
【背景技術】
【０００２】
ソリッドステートドライブ（ＳＳＤ）として知られるデータストレージデバイスは、古く由緒あるハードディスクドライブ（ＨＤＤ）の代替として導入されている。ＳＳＤ技術は、ディスクベースのストレージではなくソリッドステートストレージを使用し、ストレージのバイトあたりのコストはより高いが（現在）、ＨＤＤ技術よりもはるかに速いデータ転送速度を現在有する。
【０００３】
ＳＳＤ、すなわち不揮発性メモリエクスプレス（ＮＶＭｅ）に関連した通信規格が登場し、この通信規格ではＳＳＤは、シリアルＡＴアタッチメント（ＳＡＴＡ）プロトコルを使用してではなく、より高速なＮＶＭｅプロトコルを使用して通信する。ＮＶＭｅに関連した通信プロトコルはファブリックを介しており（ＮＶＭｅ−ｏＦ）、これは、ＮＶＭｅメッセージベースコマンドが、ホストコンピュータと標的のソリッドステートストレージデバイスまたはシステム（本質的にＳＳＤストレージシステム）との間で、「ファブリック」を介してデータを転送できるように設計された技術仕様であり、「ファブリック」とは、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ、及びＩｎｆｉｎｉＢａｎｄなどのネットワークを意味する口語表現である。ＮＶＭｅ−ｏＦは、メッセージベースモデルを使用して、ホストと対象ストレージデバイスとの間で、周辺機器相互接続エクスプレス（ＰＣＩ（ｅ））プロトコルにより通信を行い、ＰＣＩ（ｅ）プロトコルは、より古いＳＡＴＡプロトコルよりも転送機構が高速であることから、データ転送速度に貢献する。
【発明の概要】
【０００４】
ここで理解されるように、ＮＶＭｅ−ｏＦのプロトコルは、若干必要最低限であり、設計者は、いくつかの課題、特にアプリケーション特有であり得る課題を解決する必要がある。これらの未対処の課題の中には、データ冗長性と、ホストがファイルシステムのないＮＶＭｅ対応ＳＳＤ内でデータの場所をブロックベースで特定する必要があることと、負荷分散とがある。
【０００５】
従って、コンピュータ実装サーバスタックには、マッピングデータ構造にアクセスできる少なくとも１つの管理サーバと、それぞれが複数のコンピュータマザーボードを含む複数の計算サーバと、少なくとも第１の不揮発性メモリ（ＮＶＭｅ）対応ソリッドステートドライブ（ＳＳＤ）及び第２のＮＶＭｅ対応ＳＳＤを含む少なくとも１つのストレージサーバとが含まれる。この第１の態様では、計算サーバは、少なくとも１つの処理ユニットを有する少なくとも第１のコンピュータマザーボードと、少なくとも１つの処理ユニットを有する少なくとも第２のコンピュータマザーボードとを含む。計算サーバはさらに、マザーボードをストレージサーバのＮＶＭｅ対応ＳＳＤに接続する少なくとも１つのＮＶＭｅオーバーファブリック（ＮＶＭｅ−ｏＦ）通信経路を含む。サーバスタックは、クライアントコンピュータから１つのコンテンツの要求を受信するように、命令でプログラムされる。また命令は、サーバスタックが、当該１つのコンテンツの識別を使用してマッピングデータ構造にアクセスして、当該１つのコンテンツが少なくとも第１のＮＶＭｅ対応ＳＳＤに格納されていることを特定し、第１のＮＶＭｅ対応ＳＳＤのどのブロックが当該１つのコンテンツを格納しているかを特定するように、構成する。サーバスタックはさらに、当該１つのコンテンツを格納している第１のＮＶＭｅ対応ＳＳＤ及び第１のＮＶＭｅ対応ＳＳＤのブロックを特定したことに基づいて、当該１つのコンテンツを、計算サーバを経由することなくＮＶＭｅ−ｏＦ経路を介して直接クライアントデバイスにストリーミングさせるように、命令でプログラムされる。
【０００６】
実施形態では、ＳＳＤは回転ディスクを含まない。
【０００７】
データ構造はさらに、当該１つのコンテンツが第２のＮＶＭｅ対応ＳＳＤに格納されていることと、第２のＮＶＭｅ対応ＳＳＤのブロックが当該１つのコンテンツを格納していることとを、相互に関連付け得る。この場合、サーバスタックは、第１のＮＶＭｅ対応ＳＳＤに障害が生じたという判定に応じて、第２のＮＶＭｅ対応ＳＳＤに切り替えて当該１つのコンテンツをクライアントコンピュータに提供し、これによりデータ冗長性を提供するように、命令でプログラムされ得る。クライアントはドライブの障害をある他のシステムに、例えば管理サーバに報告することができるため、他のシステムからも障害が報告される場合、ドライブはブロックマッピングから除外され得る。これにより、ある他のシステムは、コンテンツの追加のコピーのダウンロードを別のドライブに加えることになり得る。さらに、障害が生じたドライブを交換するように運用チームに警告する。
【０００８】
また、サーバスタックは、依然として作動可能な第１のＮＶＭｅ対応ＳＳＤで負荷分散条件が満たされるという判定に応じて、第２のＮＶＭｅ対応ＳＳＤに切り替えて当該１つのコンテンツをクライアントコンピュータに提供し、これにより負荷分散を提供するように、命令でプログラムされ得る。
【０００９】
必要に応じて、当該１つのコンテンツは、ＮＶＭｅ対応ＳＳＤにわたりストライピングされ得る。付加的または代替的に、１つのコンテンツは全て、ＮＶＭｅ対応ＳＳＤのそれぞれに記録され得る。
【００１０】
当該１つのコンテンツは、例えば、完全な映画または完全なテレビ番組などの映像であってよく、またはコンピュータゲームであってもよい。
【００１１】
いくつかの実施形態では、管理サーバは、ストレージサーバ、または計算サーバのいずれでもない。別の実施形態では、管理サーバは、計算サーバのうちの少なくとも１つにより実施される。別の実施形態では、管理サーバは、ストレージサーバにより実施される。
【００１２】
別の態様では、デバイスは、一時的信号ではない少なくとも１つのコンピュータメモリを含み、次に少なくとも１つのコンピュータメモリは命令を含み、命令は、少なくとも１つのプロセッサにより、少なくとも第１の不揮発性メモリ（ＮＶＭｅ）対応ソリッドステートドライブ（ＳＳＤ）及び第２のＮＶＭｅ対応ＳＳＤ上で、１つのコンテンツの複数の完全なコピーを特定することを、実行可能である。データ構造は、当該１つのコンテンツの識別と、当該１つのコンテンツが格納されている第１のＳＳＤ及び第２のＳＳＤ並びに各ＳＳＤの関連ブロックの識別とを、相互に関連付ける。命令はさらに、クライアントコンピュータからの当該１つのコンテンツに対する要求に応じて、データ構造にアクセスして、第１のＳＳＤ及び第２のＳＳＤ上のどこに当該１つのコンテンツが格納されているかを特定することを、実行可能である。命令は、第１のＳＳＤ及び第２のＳＳＤ上のどこに当該１つのコンテンツが格納されているかを特定したことに応じて、周辺機器相互接続エクスプレス（ＰＣＩ（ｅ））プロトコルを使用する少なくとも１つのＮＶＭｅオーバーファブリック（ＮＶＭｅ−ｏＦ）通信経路を用いて、当該１つのコンテンツにアクセスして少なくとも第１のＳＳＤからクライアントコンピュータに当該１つのコンテンツを送信することを、実行可能である。
【００１３】
別の態様では、方法は、不揮発性メモリオーバーファブリック（ＮＶＭｅ−ｏＦ）ネットワークストレージシステムを提供することを含む。方法はまた、ＮＶＭｅ−ｏＦネットワークストレージシステムでデータ冗長性を提供すること、及びＮＶＭｅ−ｏＦネットワークストレージシステムで負荷分散を提供することを含む。
【００１４】
本出願の詳細は、その構造及び動作の両方に関して、添付の図面を参照することで最もよく理解することができ、図面では、同様の参照番号は、同様の部分を指す。
【図面の簡単な説明】
【００１５】
【図１】本発明の原理による、例を含む例示的なシステムのブロック図である。
【図２】クラウドベースゲームシステムの概略図である。
【図３】例示的なサーバスタックの概略図である。
【図４】単一サーバの第１の例示的なアーキテクチャのブロック図である。
【図４Ａ】ストレージサーバの例示的なアーキテクチャのブロック図である。
【図５】単一サーバの第２の例示的なアーキテクチャのブロック図である。
【図６】単一サーバの第３の例示的なアーキテクチャのブロック図である。
【図７】本明細書で「ドーターボード」とも称されるＮＶＭｅネットワークカードの例示的なアーキテクチャのブロック図である。
【図８】例示的なストレージロジックのフローチャートである。
【図９】コンピュータゲーム、及び映像ファイルなどのコンテンツと、コンテンツが格納されているそれぞれのストレージデバイス及びこれらのストレージデバイス上のブロックとを、相互に関連付ける例示的なデータ構造の概略図である。
【図１０】コンピュータゲームアプリケーションのコンテキストでの例示的なストリーミングロジックのフローチャートである。
【発明を実施するための形態】
【００１６】
本開示は、概して、分散型コンピュータゲームネットワーク、映像放送、コンテンツ配信ネットワーク、仮想マシン、及び機械学習アプリケーションなどのこれらに限定されない一般消費者向け電子製品（ＣＥ）デバイスネットワークの態様を含むコンピュータエコシステムに関する。本明細書のシステムは、クライアントコンポーネントとサーバコンポーネントとの間でデータが交換され得るように、ネットワークを介して接続されたサーバコンポーネント及びクライアントコンポーネントを含み得る。クライアントコンポーネントは、１つ以上のコンピューティングデバイスを含み得、これには、Ｓｏｎｙ  ＰｌａｙＳｔａｔｉｏｎ（登録商標）などのゲームコンソール及び関連マザーボード、ポータブルテレビ（例えばスマートＴＶ、インターネット対応ＴＶ）、ラップトップ及びタブレットコンピュータなどのポータブルコンピュータ、並びにスマートフォン及び下記に論じられる追加例を含む他のモバイルデバイスが含まれる。これらのクライアントデバイスは、様々な動作環境で作動し得る。例えば、クライアントコンピュータのうちのいくつかは、例を挙げると、ＯｒｂｉｓもしくはＬｉｎｕｘ（登録商標）オペレーティングシステム、Ｍｉｃｒｏｓｏｆｔ社のオペレーティングシステム、またはＵｎｉｘ（登録商標）オペレーティングシステム、またはＡｐｐｌｅ  Ｃｏｍｐｕｔｅｒ製もしくはＧｏｏｇｌｅ製のオペレーティングシステムを採用し得る。これらの動作環境を使用して、ＭｉｃｒｏｓｏｆｔもしくはＧｏｏｇｌｅ製のブラウザ、または下記に論じられるインターネットサーバによりホストされるウェブサイトにアクセスできるＭｏｚｉｌｌａもしくは他のブラウザプログラムなど、１つ以上のブラウジングプログラムが実行され得る。また、本発明の原理による動作環境を使用して、１つ以上のコンピュータゲームプログラムが実行され得る。
【００１７】
サーバ及び／またはゲートウェイは、１つ以上のプロセッサを含み得、１つ以上のプロセッサは、インターネットなどのネットワークを介してデータを送受信するようにサーバを構成する命令を実行する。あるいは、クライアントとサーバは、ローカルイントラネットまたは仮想プライベートネットワークを介して接続することができる。サーバまたはコントローラは、Ｓｏｎｙ  ＰｌａｙＳｔａｔｉｏｎ（登録商標）といったゲームコンソール及び／またはその１つ以上のマザーボード、パーソナルコンピュータなどにより、インスタンス化され得る。
【００１８】
クライアントとサーバとの間でネットワークを介して情報が交換され得る。このために、及びセキュリティのために、サーバ及び／またはクライアントは、ファイアウォール、ロードバランサ、テンポラリストレージ、及びプロキシ、並びに信頼性及びセキュリティのための他のネットワークインフラストラクチャを含み得る。１つ以上のサーバは、オンラインソーシャルウェブサイトなどの安全なコミュニティを、ネットワークメンバーに提供する方法を実施する装置を形成し得る。
【００１９】
本明細書で使用される命令は、システムにおいて情報を処理するためのコンピュータ実施ステップを指す。命令は、ソフトウェア、ファームウェア、またはハードウェアにおいて実施することができ、システムのコンポーネントにより実行される任意の種類のプログラム化されたステップを含み得る。
【００２０】
プロセッサは、アドレスライン、データライン、及び制御ラインなどの様々なライン、並びにレジスタ及びシフトレジスタを用いてロジックを実行することができる任意の従来の汎用単一チッププロセッサまたは汎用マルチチッププロセッサであり得る。
【００２１】
本明細書において、フローチャートを介して説明されるソフトウェアモジュール、及びユーザインターフェースは、様々なサブルーチン、プロシージャなどを含み得る。本開示を限定することなく、特定のモジュールにより実行されると述べられるロジックは、他のソフトウェアモジュールに再配分されてもよく、及び／または単一モジュールにおいて一緒に組み合わされてもよく、及び／または共有可能なライブラリにおいて利用可能な状態にされてもよい。
【００２２】
本明細書で述べられる本発明の原理は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせとして実装され得、ゆえに、例示的なコンポーネント、ブロック、モジュール、回路、及びステップは、これらの機能の観点から説明される。
【００２３】
上記で示唆されたことに加えて、後述されるロジックブロック、モジュール、及び回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または他のプログラマブルロジックデバイス、例えば特定用途向け集積回路（ＡＳＩＣ）、個別ゲートもしくはトランジスタロジック、個別ハードウェアコンポーネント、あるいは本明細書で説明される機能を実行するように設計されたこれらの任意の組み合わせにより、実装または実行され得る。プロセッサは、コントローラまたはステートマシンまたはコンピューティングデバイスの組み合わせにより、実施され得る。
【００２４】
下記で説明される機能及び方法は、ソフトウェアで実施される場合、Ｊａｖａ（登録商標）、Ｃ＃、またはＣ＋＋などのこれに限定されない好適な言語で記述され得、コンピュータ可読記憶媒体により記憶またはコンピュータ可読記憶媒体を介して送信され得、コンピュータ可読記憶媒体の例には、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、またはデジタル多用途ディスク（ＤＶＤ）などの他の光学ディスクストレージ、磁気ディスクストレージ、またはリムーバブルサムドライブを含む他の磁気ストレージデバイスなどが挙げられる。接続により、コンピュータ可読媒体が確立され得る。このような接続には、例として、光ファイバ及び同軸ワイヤを含むハードワイヤケーブル、並びにデジタル加入者線（ＤＳＬ）及びツイストペア線が含まれ得る。このような接続には、赤外線及びラジオを含む無線通信接続が含まれてもよい。
【００２５】
一実施形態に含まれる構成要素は、他の実施形態において、任意の好適な組み合わせで使用することができる。例えば、本明細書で説明され及び／または図に描かれる様々な構成要素のいずれも、組み合わされてもよく、交換されてもよく、または他の実施形態から除外されてもよい。
【００２６】
「Ａ、Ｂ、及びＣのうちの少なくとも１つを有するシステム」（同様に「Ａ、Ｂ、またはＣのうちの少なくとも１つを有するシステム」及び「Ａ、Ｂ、Ｃのうちの少なくとも１つを有するシステム」）には、Ａのみ、Ｂのみ、Ｃのみ、ＡとＢを一緒に、ＡとＣを一緒に、ＢとＣを一緒に、及び／またはＡとＢとＣを一緒に、などを有するシステムが含まれる。
【００２７】
ここで具体的に図１を参照すると、本発明の原理による、上記で言及され下記でさらに説明される例示的なデバイスのうちの１つ以上を含み得る例示的なシステム１０が示される。システム１０に含まれる例示的なデバイスのうち初めに、ＴＶチューナー（同等にＴＶを制御するセットトップボックス）を備えたインターネット対応ＴＶなどのこれに限定されないオーディオビデオデバイス（ＡＶＤ）１２といった一般消費者向け電子製品（ＣＥ）デバイスが存在する。しかしながら、代替的に、ＡＶＤ１２は、例えばインターネット対応コンピュータ化冷蔵庫、洗濯機、または乾燥機などの電化製品または家庭用品であってもよい。また、代替的に、ＡＶＤ１２は、インターネット対応コンピュータ化（「スマート」）電話、タブレットコンピュータ、ノートブックコンピュータ、例えばインターネット対応コンピュータ化腕時計、インターネット対応コンピュータ化ブレスレット、他のインターネット対応コンピュータ化デバイスなどの装着可能コンピュータ化デバイス、インターネット対応コンピュータ化音楽プレーヤ、インターネット対応コンピュータ化ヘッドホン、埋め込み型皮膚デバイスなどのインターネット対応コンピュータ化埋め込み型デバイスなどであってもよい。いずれにせよ、ＡＶＤ１２は、本発明の原理を実施する（例えば、本発明の原理を実施するために他のＣＥデバイスと通信し、本明細書に説明されるロジックを実行し、本明細書に説明される任意の他の機能及び／または動作を実行する）ように構成されることを理解されたい。
【００２８】
従って、このような原理を実施するために、図１に示されるコンポーネントのうちのいくつかまたは全てにより、ＡＶＤ１２は確立され得る。例えば、ＡＶＤ１２は、１つ以上のディスプレイ１４を含み得、これは、高解像度または超高解像度「４Ｋ」以上のフラットスクリーンが実装され得、ディスプレイ上のタッチを介してユーザ入力信号を受信するタッチ対応であり得る。ＡＶＤ１２は、本発明の原理に従って音声を出力するための１つ以上のスピーカ１６と、例えばＡＶＤ１２を制御するためにＡＶＤ１２に音声コマンドを入力する、例えば音声受信器／マイクロホンなどの少なくとも１つの追加入力デバイス１８と、を含み得る。例示的なＡＶＤ１２はまた、１つ以上のプロセッサ２４の制御下で、インターネット、ＷＡＮ、ＬＡＮなどの少なくとも１つのネットワーク２２を介して通信するための１つ以上のネットワークインターフェース２０を含み得る。従って、インターフェース２０は、非限定的にメッシュネットワーク送受信器など、無線コンピュータネットワークインターフェースの例であるＷｉ−Ｆｉ送受信器であり得るが、これに限定されない。プロセッサ２４は、ＡＶＤ１２を制御して本発明の原理を実施し、これには、例えばディスプレイ１４を制御してディスプレイ１４上に画像を提示し、ディスプレイ１４から入力を受信するなど、本明細書に説明されるＡＶＤ１２の他の要素が含まれることを理解されたい。さらに、ネットワークインターフェース２０は、例えば有線または無線のモデムまたはルータであり得る、あるいは、例えば無線電話送受信器、または前述のＷｉ−Ｆｉ送受信器などの他の好適なインターフェースであり得ることに、留意されたい。
【００２９】
上記に加えて、ＡＶＤ１２はまた、別のＣＥデバイスに（例えば有線接続を用いて）物理的に接続するための、例えば高解像度マルチメディアインターフェース（ＨＤＭＩ（登録商標））ポートまたはＵＳＢポートなどの１つ以上の入力ポート２６、及び／または、ヘッドホンをＡＶＤ１２に接続して、ＡＶＤ１２からの音声をヘッドホンを介してユーザに提供するためのヘッドホンポートを含み得る。例えば、入力ポート２６は、オーディオビデオコンテンツのケーブルソースまたは衛星ソース２６ａに、有線または無線を介して接続され得る。従って、ソース２６ａは、例えば、別個のまたは統合されたセットトップボックスまたは衛星受信器であり得る。あるいは、ソース２６ａは、下記でさらに説明されるチャネル割り当て目的でユーザがお気に入りとみなし得るコンテンツを含むゲームコンソールまたはディスクプレーヤであってもよい。ソース２６ａは、ゲームコンソールとして実装される場合、ＣＥデバイス４４に関連して下記で説明されるコンポーネントのうちのいくつかまたは全てを含み得る。
【００３０】
ＡＶＤ１２はさらに、一時的信号ではないディスクベースストレージまたはソリッドステートストレージなどの１つ以上のコンピュータメモリ２８を含み得、これらは、いくつかの事例では、ＡＶＤのシャシー内にスタンドアロンデバイスとして、またはＡＶプログラムを再生するためにＡＶＤのシャシーの内部もしくは外部のパーソナルビデオレコーディングデバイス（ＰＶＲ）もしくはビデオディスクプレーヤとして、またはリムーバブルメモリ媒体として、具現化されている。また、いくつかの実施形態では、ＡＶＤ１２は、位置受信器すなわち所在地受信器を含み得、これは、携帯電話受信器、ＧＰＳ受信器、及び／または高度計３０などであるがこれらに限定されず、例えば少なくとも１つの衛星または携帯電話中継塔から地理的位置情報を受信し、情報をプロセッサ２４に提供し、及び／またはプロセッサ２４と連動して、ＡＶＤ１２が配置されている高度を特定するように構成される。しかしながら、例えば、ＡＶＤ１２の所在地を、例えば全３次元で特定するために、携帯電話受信器、ＧＰＳ受信器、及び／または高度計以外の別の好適な位置受信器が、本発明の原理に従って使用されてもよいことを、理解されたい。
【００３１】
ＡＶＤ１２の説明を続けると、いくつかの実施形態では、ＡＶＤ１２は、１つ以上のカメラ３２を含み得、これは、例えば熱画像カメラ、ウェブカメラなどのデジタルカメラ、及び／またはＡＶＤ１２に統合されたカメラであり得、本発明の原理に従って写真／画像及び／または映像を収集するようにプロセッサ２４により制御可能であり得る。また、ＡＶＤ１２は、ブルートゥース（登録商標）送受信器３４と他の近距離無線通信（ＮＦＣ）要素３６とを含み得、これらは、ブルートゥース（登録商標）及び／またはＮＦＣ技術をそれぞれ使用して、他のデバイスと通信する。例示的なＮＦＣ要素は、無線周波数識別（ＲＦＩＤ）要素であり得る。
【００３２】
さらにまた、ＡＶＤ１２は、プロセッサ２４に入力を提供する１つ以上の補助センサ３７を含み得る（例えば、加速度計、ジャイロスコープ、サイクロメータ、または磁気センサなどのモーションセンサ、赤外線（ＩＲ）センサ、光学センサ、速度及び／またはケイデンスセンサ、ジェスチャセンサ（例えばジェスチャコマンドを感知する）など）。ＡＶＤ１２は、地上波（ＯＴＡ）ＴＶ放送を受信し、プロセッサ２４に入力を提供するＯＴＡ  ＴＶ放送ポート３８を含み得る。前述に加えて、ＡＶＤ１２はまた、赤外線データ関連付け（ＩＲＤＡ）デバイスなどの赤外線（ＩＲ）送信器及び／またはＩＲ受信器及び／またはＩＲ送受信器４２を含み得ることに留意されたい。ＡＶＤ１２に電力供給を行うために、バッテリ（図示せず）が提供され得る。
【００３３】
さらに図１を参照すると、ＡＶＤ１２に加えて、システム１０は、１つ以上の他のＣＥデバイスタイプを含み得る。一例では、後述のサーバを通して送信されるコマンドを介してディスプレイを制御するように第１のＣＥデバイス４４は使用され得、一方第２のＣＥデバイス４６は、第１のＣＥデバイス４４と同様のコンポーネントを含み得るため、詳細に説明しない。示される例では、２つのＣＥデバイス４４、４６のみが図示されるが、より少ないまたはより多いデバイスが使用されてもよいことが理解されよう。上記で示唆されたように、ＣＥデバイス４４／４６及び／またはソース２６ａは、ゲームコンソールにより実施され得る。あるいは、ＣＥデバイス４４／４６のうちの１つ以上は、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅｃａｓｔ、Ｒｏｋｕ、Ａｍａｚｏｎ  ＦｉｒｅＴＶの商標で販売されるデバイスにより、実施され得る。
【００３４】
示される例では、本発明の原理を例示するために、３つのデバイス１２、４４、４６は全て、例えば自宅内のエンターテインメントネットワークのメンバーである、または少なくとも家屋などの場所で互いに近接して存在すると、想定される。しかしながら、本発明の原理は、明確に別段の主張がない限り、破線４８で示される特定の場所に限定されない。
【００３５】
非限定的な例示の第１のＣＥデバイス４４は、前述のデバイスのうちのいずれか１つ、例えば、ポータブル無線ラップトップコンピュータもしくはノートブックコンピュータ、またはゲームコントローラ（「コンソール」とも称される）により確立され得、従って、後述されるコンポーネントのうちの１つ以上を有し得る。第２のＣＥデバイス４６は、ブルーレイプレーヤ、及びゲームコンソールなどのビデオディスクプレーヤにより確立され得るが、これらに限定されない。第１のＣＥデバイス４４は、例えば、ＡＶ再生及び一時停止コマンドをＡＶＤ１２に発令するためのリモートコントロール（ＲＣ）であり得る、または第１のＣＥデバイス４４は、タブレットコンピュータ、有線または無線リンクを介して第２のＣＥデバイス４６により実施されるゲームコンソールと通信し、ＡＶＤ１２上のビデオゲームの提示を制御するゲームコントローラ、パーソナルコンピュータ、無線電話などのより洗練されたデバイスであり得る。
【００３６】
従って、第１のＣＥデバイス４４は、ディスプレイ上のタッチを介してユーザ入力信号を受信するタッチ対応であり得る１つ以上のディスプレイ５０を含み得る。第１のＣＥデバイス４４は、本発明の原理に従って音声を出力するための１つ以上のスピーカ５２と、例えば第１のＣＥデバイス４４を制御するために第１のＣＥデバイス４４に音声コマンドを入力する、例えば音声受信器／マイクロホンなどの少なくとも１つの追加入力デバイス５４と、を含み得る。例示的な第１のＣＥデバイス４４はまた、１つ以上のＣＥデバイスプロセッサ５８の制御下で、ネットワーク２２を介して通信するための１つ以上のネットワークインターフェース５６を含み得る。従って、インターフェース５６は、メッシュネットワークインターフェースを含む、無線コンピュータネットワークインターフェースの例であるＷｉ−Ｆｉ送受信器であり得るが、これに限定されない。プロセッサ５８は、第１のＣＥデバイス４４を制御して本発明の原理を実施し、これには、例えばディスプレイ５０を制御してディスプレイ５０上に画像を提示し、ディスプレイ５０から入力を受信するなど、本明細書に説明される第１のＣＥデバイス４４の他の要素が含まれることを理解されたい。さらに、ネットワークインターフェース５６は、例えば有線または無線のモデムまたはルータであり得る、あるいは、例えば無線電話送受信器、または前述のＷｉ−Ｆｉ送受信器などの他の好適なインターフェースであり得ることに、留意されたい。
【００３７】
上記に加えて、第１のＣＥデバイス４４はまた、別のＣＥデバイスに（例えば有線接続を用いて）物理的に接続するための、例えばＨＤＭＩ（登録商標）ポートまたはＵＳＢポートなどの１つ以上の入力ポート６０、及び／または、ヘッドホンを第１のＣＥデバイス４４に接続して、第１のＣＥデバイス４４からの音声をヘッドホンを介してユーザに提供するためのヘッドホンポートを含み得る。第１のＣＥデバイス４４はさらに、ディスクベースストレージまたはソリッドステートストレージなどの１つ以上の有形コンピュータ可読記憶媒体６２を含み得る。また、いくつかの実施形態では、第１のＣＥデバイス４４は、位置受信器すなわち所在地受信器を含み得、これは、携帯電話及び／またはＧＰＳ受信器及び／または高度計６４などであるがこれらに限定されず、例えば、三角測量を使用して、少なくとも１つの衛星及び／または携帯電話中継塔から地理的位置情報を受信し、情報をＣＥデバイスプロセッサ５８に提供し、及び／またはＣＥデバイスプロセッサ５８と連動して、第１のＣＥデバイス４４が配置されている高度を特定するように構成される。しかしながら、例えば、第１のＣＥデバイス４４の所在地を、例えば全３次元で特定するために、携帯電話及び／またはＧＰＳ受信器及び／または高度計以外の別の好適な位置受信器が、本発明の原理に従って使用されてもよいことを、理解されたい。
【００３８】
第１のＣＥデバイス４４の説明を続けると、いくつかの実施形態では、第１のＣＥデバイス４４は、１つ以上のカメラ６６を含み得、これは、例えば熱画像カメラ、ウェブカメラなどのデジタルカメラ、及び／または第１のＣＥデバイス４４に統合されたカメラであり得、本発明の原理に従って写真／画像及び／または映像を収集するようにＣＥデバイスプロセッサ５８により制御可能であり得る。また、第１のＣＥデバイス４４は、ブルートゥース（登録商標）送受信器６８と他の近距離無線通信（ＮＦＣ）要素７０を含み得、これらは、ブルートゥース（登録商標）及び／またはＮＦＣ技術をそれぞれ使用して、他のデバイスと通信する。例示的なＮＦＣ要素は、無線周波数識別（ＲＦＩＤ）要素であり得る。
【００３９】
さらにまた、第１のＣＥデバイス４４は、ＣＥデバイスプロセッサ５８に入力を提供する１つ以上の補助センサ７２を含み得る（例えば、加速度計、ジャイロスコープ、サイクロメータ、または磁気センサなどのモーションセンサ、赤外線（ＩＲ）センサ、光学センサ、速度及び／またはケイデンスセンサ、ジェスチャセンサ（例えばジェスチャコマンドを感知する）など）。第１のＣＥデバイス４４はさらに、例えば、１つ以上の気候センサ７４（例えば気圧計、湿度センサ、風センサ、光センサ、温度センサなど）及び／または１つ以上の生体センサ７６などの他のセンサを含み得、これらは、ＣＥデバイスプロセッサ５８に入力を提供する。前述に加えて、いくつかの実施形態では、第１のＣＥデバイス４４はまた、赤外線データ関連付け（ＩＲＤＡ）デバイスなどの赤外線（ＩＲ）送信器及び／またはＩＲ受信器及び／またはＩＲ送受信器７８を含み得ることに留意されたい。第１のＣＥデバイス４４に電力供給を行うために、バッテリ（図示せず）が提供され得る。ＣＥデバイス４４は、前述の通信モード及び関連コンポーネントのうちのいずれかを介して、ＡＶＤ１２と通信し得る。
【００４０】
第２のＣＥデバイス４６は、ＣＥデバイス４４に関して示されるコンポーネントのうちのいくつかまたは全てを含み得る。一方または両方のＣＥデバイスが、１つ以上のバッテリにより電力供給され得る。
【００４１】
ここで、前述の少なくとも１つのサーバ８０を参照すると、これは、少なくとも１つのサーバプロセッサ８２と、ディスクベースストレージまたはソリッドステートストレージなどの少なくとも１つの有形コンピュータ可読記憶媒体８４とを含む。一実施態様では、媒体８４は、１つ以上のＳＳＤを含む。サーバはまた、少なくとも１つのネットワークインターフェース８６を含み、これにより、ネットワーク２２を介して図１の他のデバイスとの通信が可能となり、実際に、本発明の原理に従ってサーバとクライアントデバイスとの間の通信が促進され得る。ネットワークインターフェース８６は、例えば、有線もしくは無線のモデムもしくはルータ、Ｗｉ−Ｆｉ送受信器、または例えば無線電話送受信器などの他の好適なインターフェースであり得ることに、留意されたい。ネットワークインターフェース８６は、サーバプロセッサ８２を通ることなく、いわゆる「ファブリック」などのネットワークに媒体８４を直接接続するリモートダイレクトメモリアクセス（ＲＤＭＡ）インターフェースであり得る。ネットワークには、Ｅｔｈｅｒｎｅｔ（登録商標）ネットワーク、及び／またはＦｉｂｒｅ  Ｃｈａｎｎｅｌネットワーク、及び／またはＩｎｆｉｎｉＢａｎｄネットワークが含まれ得る。通常、サーバ８０は、物理サーバ「スタック」に配置され得る「ブレード」と称される多数のコンピュータに多数のプロセッサを含む。
【００４２】
従って、いくつかの実施形態では、サーバ８０は、インターネットサーバまたは「サーバファーム」全体であり得、例えばネットワークゲームアプリケーションなどの例示的な実施形態で、システム１０のデバイスがサーバ８０を介して「クラウド」環境にアクセスし得るように、「クラウド」機能を含み実行し得る。あるいは、サーバ８０は、図１に示される他のデバイスと同じ部屋または近くに存在する１つ以上のゲームコンソールまたは他のコンピュータにより、実施され得る。
【００４３】
本明細書の方法は、プロセッサにより実行されるソフトウェア命令、好適に構成された特定用途向け集積回路（ＡＳＩＣ）もしくはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）モジュール、または当業者に自明の任意の他の便利な方法で、実施され得る。ソフトウェア命令が採用される場合、ソフトウェア命令は、ＣＤ  ＲＯＭ、またはフラッシュドライブなどの非一時的デバイス内で具現化され得る。あるいは、ソフトウェアコード命令は、ラジオ信号もしくは光信号などの一時的構成で、またはインターネットを介したダウンロードにより、具現化されてもよい。
【００４４】
図２は、Ｓｏｎｙ  Ｐｌａｙｓｔａｔｉｏｎｓ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  Ｘｂｏｘｅｓ（登録商標）などの１つ以上のクライアントゲームコンソール２００（「ゲームシステム」、「ゲームデバイス」とも称される）が、有線及び／または無線リンクを介して、クラウドベースゲーム管理サーバ２０２、通常インターネットサーバと通信するクラウドコンピュータゲーム環境の形態での例示的な適用を示す。次に、管理サーバ２０２は、１つ以上のソリッドステートメモリ２０６を含む第１のゲームサーバ２０４（多数のサーバ「ブレード」により具現化され得る）と通信し、１つ以上のソリッドステートメモリ２０６は、例えば、フラッシュまたは３Ｄ  Ｘｐｏｉｎｔなどのこれらに限定されないソリッドステートメモリを使用するＮＶＭｅ対応ＳＳＤを含むランダムアクセスメモリ（ＲＡＭ）などが挙げられる。管理サーバ２０２は、最大「Ｎ」個のこのようなサーバと通信し、これには、１つ以上のソリッドステートメモリ２１４を含むＮ番目のゲームサーバ２１２が含まれる。
【００４５】
図３は、単一のスタック筐体に含まれ得る例示的なサーバスタック３００を示し、サーバファームは通常、このようなサーバスタックを多数含む。サーバスタック３００は、高速ファブリック３０４を通してサーバスタックに接続されたクライアントのために計算を実行する複数の計算サーバ３０２を含む。スタック内の各サーバは、ファブリックに接続され得る。図示されるように、管理サーバ３０６もスタックに含まれ得、１つ以上のＮＶＭｅ対応ストレージサーバ３０８がスタックに含まれ得る。ファブリックソリューションを使用することにより、計算サーバは高速で相互通信できるようになり、これにより、重い計算作業に対する「計算ノードのバンドリング」が可能となり得ることに留意されたい。
【００４６】
ストレージサーバ３０８は、ＮＶＭｅ対応の１つ以上（通常は複数）のＳＳＤ３１０を含み得、これは、ファブリック３０４を介してスタック内の他のサーバに直接アクセス可能である。ストレージサーバ３０８はまた通常、１つ以上のプロセッサ３１２と、１つ以上のキャッシュ型ランダムアクセスメモリ（ＲＡＭ）３１４とを含む。ＣＰＵ３１２を通ることなく、ＳＳＤ３１０にアクセスし、そこからコンテンツをストリーミングすることができる。
【００４７】
管理サーバ３０６は、スタックの管理タスクを実行し、このうちのいくつかは下記でさらに論述され、一方、ストレージサーバは、スタックのストレージ機能を実行する。実施形態では、管理サーバ３０６は、図示されるように、計算サーバ及びストレージサーバとは分離した別個のサーバであり得る、または管理サーバ３０６は、計算サーバ及び／またはストレージサーバにより実施され得る。管理サーバ３０６は、サーバのマザーボードの後述のドーターボードのうちの１つにより実施され得る。
【００４８】
図４〜６は、スタック３００内のサーバの例示的なアーキテクチャ、特に計算サーバ３０２を実施するために使用され得るアーキテクチャを示す。図示されるように、サーバ４００は複数のマザーボード４０２を含み得、マザーボード４０２は、互いに実質的に同一であり、よって明確化のため、単一のマザーボードのみの詳細が示される。図示される例では、各サーバ４００は、４つのマザーボードを含むが、これより多いまたは少ないマザーボードが使用されてもよい。各マザーボードは、例えば、あるいはコンピュータゲームコンソールに対応付けられたマザーボードであり得る。いくつかの例では、サーバのマザーボードの大部分は互いに同一であり得、サーバの１つ以上のマザーボードが他と異なり得、例えば、３つのマザーボードはコンピュータゲームコンソールのマザーボードであり得、１つはパーソナルコンピュータのマザーボードであり得る。
【００４９】
図４に図示される例では、マザーボード４０２は、プロセッサ４０４を含む。プロセッサ４０４は、中央処理装置（ＣＰＵ）及びグラフィック処理装置（ＧＰＵ）として機能する単一のダイ上の処理チップである加速処理装置（ＡＰＵ）であり得る。プロセッサ４０４は、ＰＣＩ（ｅ）を使用して、図示される非限定的な例では４つのＰＣＩ（ｅ）レーンを使用して、サウスブリッジ４０６と通信し得る。
【００５０】
また、プロセッサ４０４は、例えば４つのＰＣＩ（ｅ）レーンを介し、コネクタ４１０を通してファブリックアダプタ４０８に接続され得る。コネクタ４１０は、ＯｃｕｌｉｎｋまたはＭ２コネクタなどのケーブルコネクタであり得る。
【００５１】
例では、ファブリックアダプタ４０８は、「ドーターボード」、すなわちマザーボード４０２の一部である回路基板として実装され得、リモートダイレクトメモリアクセス（ＲＤＭＡ）（Ｉｎｆｉｎｉｂａｎｄ、仮想インターフェースアーキテクチャ、ＲＤＭＡオーバーコンバージドＥｔｈｅｒｎｅｔ（登録商標）（ＲｏＣＥ）、及びインターネット広域ＲＤＭＡプロトコル（ｉＷＡＲＰ）を含む）などのＮＶＭｅインターフェースを実施し得る。あるいは、ファブリックアダプタ４０８は、ＮＶＭｅオーバーＦｉｂｒｅ  Ｃｈａｎｎｅｌなどの別の種類のＮＶＭｅインターフェースであり得る。いずれの事例でも、図示されるように、マザーボード４０２は、ファブリックアダプタ４０８を通してサーバ４００の他のマザーボード４０２に接続され、また、ファブリックアダプタを通して、図３に示されるストレージサーバ３０８のＳＳＤに、またネットワークに、そこからリモートクライアントに、接続される。
【００５２】
クラウドベースのゲームアプリケーションでは、サーバ４００のマザーボード４０２は協働して、ストレージサーバ３０８のＳＳＤ３１０に格納されているコンピュータゲームを、コンピュータゲームコンソールなどのリモートクライアントにストリーミングし得る。あるいは、映像ストリーミングアプリケーションでは、サーバ４００のマザーボード４０２は協働して、ストレージサーバ３０８に格納されている映画またはテレビ番組を、映像再生デバイスなどのリモートクライアントにストリーミングし得る。
【００５３】
例では、各コンテンツ、つまり各コンピュータゲームまたは各完全映像プログラム、例えば映画、テレビ番組、または他の映像プログラムが、複数のＳＳＤに格納されている。各コンテンツはその全体が、複数のＳＳＤのそれぞれに格納され得る。付加的または代替的に、各コンテンツは、複数のＳＳＤにわたりストライピングされ得る。いずれの事例でも、ＮＶＭｅ−ｏＦ技術により提供される速度のおかげで、多数のマザーボード４０２（及び実際には多数の計算サーバ）を使用して、多数のＳＳＤに格納されている単一のコンテンツが、クライアントにストリーミングされ得る。また、単一のコンテンツは、下記でさらに説明されるデータ冗長性及び負荷分散のためにそのコンテンツを格納しているＳＳＤ間をシームレスに切り替わることにより、ストリーミングされ得る。
【００５４】
追加のサーバアーキテクチャを説明する前に、ストレージサーバに特に適したアーキテクチャを示す図４Ａを簡単に参照する。サーバ４００Ａは、ファブリックにアクセスするための多数のネットワークアダプタ４０６Ａを含む通常は単一のマザーボード４０４Ａ上に、ＡＰＵ４０２Ａなどの少なくとも１つ、好ましくは複数（帯域幅の理由で）のプロセッサを有し得る。１つ以上のＮＶＭｅ対応ＳＳＤ４０８Ａは、プロセッサと通信する。マザーボード４０４Ａは、複数の「ソケット」を含み得、各ソケットは、ＡＰＵまたはＣＰＵなどのプロセッサで埋められ得る。図示されるように、各ソケットは、自身のＲＡＭも含むことができ、異なるＣＰＵは、互いのＲＡＭにアクセスすることができる。
【００５５】
図５は、サーバ５００の代替的なアーキテクチャを示し、これは、本明細書で開示される他のアーキテクチャと同様に、本明細書の任意のサーバにより使用され得る。図５のサーバ５００は、各マザーボード５０２がそれぞれ自身のファブリックアダプタを有する代わりに、図５のマザーボード５０２は単一の共通ファブリックアダプタ５０４を共有して、ネットワークファブリック５０６と通信し、そこからストレージサーバ、及びエンドユーザゲームコンソールまたは映像プレーヤなどのリモートクライアントデバイス５０８を含む他のコンポーネントと通信することを除いて、全ての本質的な点で図４に示されるサーバ４００と同一である。
【００５６】
図６は、サーバ６００の代替的なアーキテクチャを示し、これは、本明細書で開示される他のアーキテクチャと同様に、本明細書の任意のサーバにより使用され得る。図６のサーバ６００は、図６に示される各マザーボード６０４のＡＰＵ６０２がそれぞれのＰＣＩ（ｅ）スイッチ６０６に接続され、そこから８つのＰＣＩ（ｅ）レーンを介してサウスブリッジ６０８に接続されていることを除いて、全ての本質的な点で図４に示されるサーバ４００と同一である。スイッチ６０６は次に、ファブリックアダプタ６１２に接続されたＯｃｕｌｉｎｋまたはＭ２コネクタなどのコネクタ６１０に、上記のコンポーネントを接続する。図６の技法は、接続されたデバイス間に８つのＰＣＩ（ｅ）レーンを提供し、同時に、他のチップがあまり帯域幅を使用していない場合、より高いデータスループットを得られるように負荷分散を提供する。図６のアーキテクチャは、図５の共有ファブリックアダプタ技法を採用してもよいことを理解されたい。
【００５７】
図７は、非限定的な例としてＲＤＭＡを使用するドーターボード７００として実装される、上記で開示されたファブリックアダプタの例を示す。ドーターボード７００は、少なくとも１つのＡＰＵを含まなくてもよいが、いくつかの例では、ＡＰＵを含み得る。図７に示される例示的なドーターボード７００は、ＳＳＤなどの少なくとも１つのＮＶＭｅ対応ストレージ７０４を含み、これは、ＲＤＭＡインターフェースなどのファブリックインターフェース７０６に接続され、そこからネットワークファブリック７０８に接続され、次にネットワークファブリック７０８は、スタック内の他のサーバ及びリモートエンドユーザクライアントデバイス７１０に接続され得る。
【００５８】
図８は、例示的なストレージロジックを示す。ブロック８００から開始し、完全なコンピュータゲームまたは完全な映像プログラムなどの各コンテンツは、「Ｎ」個のＮＶＭｅストレージデバイスに「Ｎ」回格納され、「Ｎ」は１より大きい整数である。ブロック８０２にて、各コンテンツのＩＤが、そのコンテンツを格納しているストレージデバイスのＩＤ、及びそのコンテンツを格納している各ストレージデバイスのブロック番号と、相互に関連付けられるマッピングデータ構造が確立される。
【００５９】
図９は、コンピュータゲーム、及び映像プログラムなどの複数のコンテンツ９０２と、そのコンテンツを格納しているＳＳＤの識別子９０４、及び９０２で示されるコンテンツを格納しているデバイスＩＤ９０４で識別される各ＳＳＤのブロックの識別９０６とを、相互に関連付ける結果マッピングデータ構造９００を示す。従って、示される例では、各コンテンツは、複数のデバイスに格納されている。例えば、ゲームＡは、ＳＳＤ１及びＳＳＤ３に格納され、ＳＳＤ１のブロック１００〜２００、及びＳＳＤ３のブロック４００〜５００に格納されている。示される例では、ゲームＢは、ＳＳＤ１及びＳＳＤ２に格納され、ＳＳＤ１のブロック３５０〜４５０、及びＳＳＤ２のブロック１〜１００に格納されている。図９のブロック番号は連続しているが、ブロック番号は連続している必要はなく、マッピングデータ構造にリストされているＳＳＤ上で、多数のグループのブロック番号が、特定の１つのコンテンツを格納していることを、理解されたい。デフラグを実行して、ブロック内の非隣接性を最小限に抑えることができる。
【００６０】
図１０は、上記に示されたサーバアーキテクチャのうちのいずれかを使用した例示的なコンテンツストリーミングロジックを示す。ロジックは、サーバスタックのプロセッサ間で分散され得る、またはスタック内のプロセッサのうちの選択された１つにより実施され得る。なお、使用する特定のファイルシステムまたは暗号化は、特定のアプリケーションにより定義することができ、コンテンツが暗号化されている場合には、計算サーバは復号化を実行することができる。暗号化されたコンテンツの事例では、暗号化キーは、「ブロックマッピング」に沿って、計算サーバに提供し戻され得る。例では、管理サーバ及び計算サーバ（複数可）は、ハンドシェイクを実行して、ブロックマッピング及び暗号化キーを取得し得る。管理サーバがブロックマッピング及び暗号化キーを計算サーバ（複数可）に返すための前提条件と同様に、計算サーバの認証が実施され得る。そのため、計算サーバは、ユーザまたはトークンの認証情報を共有し得る。
【００６１】
ブロック１０００から開始し、エンドユーザデバイスがサーバスタックに対応付けられたコンテンツのクラウドソースと通信を確立すると、スタック内の管理サーバは、通常、特定の初期化機能を実行し、例えば、コンテンツに対する要求のデジタル著作権管理（ＤＲＭ）態様を検証し、クライアント要求に１つ以上の計算サーバを割り当て、次いでブロック１００２にて、マッピングデータ構造にアクセスしてコンテンツが格納されている場所を確認する。従って、ブロック１００２では、図９に示される例などのマッピングデータ構造により、要求されたコンテンツが格納されているＳＳＤ、及び要求されたコンテンツを格納しているこれらのＳＳＤのブロック番号が特定され、要求を実行するために、要求に割り当てられた計算サーバ（複数可）に提供される。次に計算サーバは、コンテンツが格納されている場所に関する情報を使用して、コンテンツにアクセスし、要求元のクライアントにストリーミングする。必要に応じて、マッピングデータ構造からの格納場所情報は、要求元クライアントに提供され、要求元クライアントがコンテンツに直接アクセスすることを可能にし得る。
【００６２】
より具体的には、ブロック１００４にて、割り当てられた計算サーバは、複数のＳＳＤのうち、要求されたコンテンツを格納しておりコンテンツのストリーミング元となるものとして管理サーバにより特定されたＳＳＤを選択する。これは、ＳＳＤのうち、コンテンツを格納しているＳＳＤを最初に疑似ランダム的に選択することにより行われ得る、または、後述の非限定的で例示的な負荷分散技法のうちのいずれかを使用して行われ得る。次に、コンテンツは、ブロック１００６にて、クライアントにストリーミングされる。最初の疑似ランダム選択プロセスの後に、良好であるとわかっている選択デバイスは、キャッシュされ、将来デフォルトで使用され得ることに、留意されたい。さらに、アイドリング中、計算サーバは、定期的に（例えば３０分ごとに）デフォルトのデバイスにｐｉｎｇを送って、今でも作動可能であることを検出し得る、あるいは前もって良好なデバイスを選択し得る。これにより、計算サーバは、自動的に作動不可能なデバイスを検出し、他の良好なデバイスに切り替えるため、障害が生じたデバイスを新たなデバイスにホットスワップすることが促進され得る。
【００６３】
判定菱形１００８は、割り当てられた計算サーバが、コンテンツのストリーミングを第１のＳＳＤから第２のＳＳＤへシームレスに切り替える負荷分散条件が存在するか否かを判定し得ることを示す。例として、現在ストリーミングを行っているＳＳＤとクライアントとの間のネットワーク輻輳またはレイテンシが閾値を満たす場合、負荷分散条件が存在するとみなされ得る。このような輻輳またはレイテンシの判定は、非限定的な例では、クライアントからのパケットの再送信要求数が閾値を超えるか否か、クライアントから過度の遅延に関する直接レポートが受信されたか否かを、判定することにより決定され得る、またはサーバスタックからクライアントへ送信され戻ってきたテストトーンの測定往復時間が、閾値時間を超えるか否かに基づき得る。さらにまた、特定のＳＳＤに対する入力／出力要求の数が閾値を超える場合、負荷分散条件が存在するとみなされ得る。これらは、負荷分散条件が存在するか否かを判定するための非限定的で例示的な技法を示すに過ぎない。
【００６４】
また、判定菱形１０１０は、例えば、ＳＳＤの対応付けられたＮＶＭｅ−ｏＦインターフェースを通してＳＳＤから送信されているデータが少ししかない、または全くないことを観測することにより示されるように、現在ストリーミングを行っているＳＳＤが作動不可能になったか否かの判定が行われ得ることを示す。現在ストリーミングを行っているデバイスが作動不可能である場合、または判定菱形１００８にて負荷分散条件が存在する場合、ロジックは、ブロック１０１２に進み、マッピングデータ構造により示されるコンテンツを格納している別のドライブに、コンテンツのストリーミングを切り替える。このようにすることで、第１のＳＳＤからクライアントにストリーミングされたコンテンツのブロック数が記録され得、次いで、第２のＳＳＤは、第２のＳＳＤ上でコンテンツが格納されている対応する「次」のブロックにアクセスされ得る。例えば、図９の例示的なマッピングデータ構造を使用すると、ＳＳＤ＃１がクライアントデバイスに対しＳＳＤ＃１のブロック５０までのコンテンツをストリーミングし、その後、負荷分散条件が生じたまたはＳＳＤ＃１に障害が生じた場合、コンテンツは、ＳＳＤ＃３からストリーミングされるように動的に切り替えられ、ＳＳＤ＃３のブロック４５０から開始する。
【００６５】
このようにして、現在使用しているＮＶＭｅ対応ＳＳＤに障害が生じたという判定に応じて、ストリーミングが第２のＮＶＭｅ対応ＳＳＤに切り替えられて、当該１つのコンテンツはクライアントコンピュータに提供され得、これによりデータ冗長性が提供される。前述の説明から、データの別のコピーがストレージサーバに（及びブロックマッピングに）配置され得るように、ＳＳＤの作動不可能状態が、管理サーバなどのこれに限定されないサーバに通知され得ることを、思い出されたい。障害の生じたＳＳＤを交換するように、技術担当者も通知され得る。
【００６６】
あるいは、依然として作動可能な第１のＮＶＭｅ対応ＳＳＤで負荷分散条件が満たされるという判定に応じて、それでもなお、ストリーミングが第２のＮＶＭｅ対応ＳＳＤに切り替えられて、当該１つのコンテンツはクライアントコンピュータに提供され得る。
【００６７】
非常にレイテンシの影響を受けやすい転送では、輻輳が生じる可能性がある場合、次のような本明細書のアーキテクチャを使用して、負荷分散／冗長性が強化され得ることに留意されたい。計算サーバが、２つのＮＶＭｅ対応ＳＳＤのそれぞれに格納されているコンテンツブロック１〜１００にアクセスしようとしていると想定する。最初の「Ｎ」個のブロック（例えば１０個、この例ではブロック１〜１０）が、第１のＮＶＭｅ対応ＳＳＤからフェッチされ得、コンテンツの次のいくつかのブロック（この例ではブロック１１〜２０）が、第２のＮＶＭｅ対応ＳＳＤからフェッチされ得る。次に、コンテンツブロックの残り（この例では２１〜１００）が、その最初のブロックを要求元の計算サーバに最速で返したＳＳＤから、独占的にフェッチされ得る。拡大解釈すると、ＮＶＭｅ対応ＳＳＤのうちの１つが、最初に要求されたブロックをいずれも返さない場合、不足しているブロック並びに残りのブロックは、最初に要求されたブロックを返したＳＳＤからフェッチされる。これにより、アクセスしようとしている最初のＳＳＤのうちの１つが誤作動している場合の一往復分のレイテンシが除去される。
【００６８】
単一コンテンツといったコンテンツは、それぞれ複数のサーバスタックの複数のストレージサーバに格納され得、この場合、前述のマッピングデータ構造は、サーバＩＤと各コンテンツとを相互に関連付け得る。また、計算サーバは、物理ＳＳＤと直接通信する代わりに、柔軟性のためにストレージサーバ内でプロセッサが実施する「仮想ドライブ」と通信し得、「仮想ドライブ」が物理ＳＳＤからデータを取得する。ＳＳＤストレージでは、クライアントへの供給が求められる全てのコンテンツを格納するのに不十分である場合、最も人気のある（最も要求される）コンテンツがストレージサーバのＳＳＤに格納され得、人気の低いコンテンツに対するクライアント呼び出しは、例えば計算サーバまたは管理サーバまたはストレージサーバのプロセッサにより傍受され、人気の低いコンテンツを格納しているマスタストレージ設備に送信され、人気の低いコンテンツはマスタストレージ設備から供給される。
【００６９】
本発明の原理は、いくつかの例示的な実施形態を参照して説明されたが、これらは限定を意図するものではなく、本明細書で請求される主題を実施するために、様々な代替的構成が使用されてもよいことが、理解されよう。
【図１】
2021506038.tif 000003
【図２】
2021506038.tif 000004
【図３】
2021506038.tif 000005
【図４】
2021506038.tif 000006
【図４Ａ】
2021506038.tif 000007
【図５】
2021506038.tif 000008
【図６】
2021506038.tif 000009
【図７】
2021506038.tif 000010
【図８】
2021506038.tif 000011
【図９】
2021506038.tif 000012
【図１０】
2021506038.tif 000013
【国際調査報告】
2021506038.tif 000014