(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022153623
(43)【公開日】2022-10-12
(54)【発明の名称】超高速かつ低遅延なネットワークストレージ
(51)【国際特許分類】
G06F 13/14 20060101AFI20221004BHJP
G06F 3/06 20060101ALI20221004BHJP
【FI】
G06F13/14 310E
G06F3/06 304E
【審査請求】有
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2022123889
(22)【出願日】2022-08-03
(62)【分割の表示】P 2020548859の分割
【原出願日】2018-10-31
(31)【優先権主張番号】15/832,497
(32)【優先日】2017-12-05
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】518187455
【氏名又は名称】ソニー・インタラクティブエンタテインメント エルエルシー
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】コーレンブランデル、ロエロフ
(72)【発明者】
【氏名】パジャロ、クリフ
(72)【発明者】
【氏名】ロー、キム‐フェイ
(57)【要約】 (修正有)
【課題】不揮発性メモリオーバーファブリック(NVMe-oF)を使用して、ソリッドステートストレージドライブ(SSD)によるネットワークストレージから、クライアントデバイスへ、映像及びコンピュータゲームなどをストリーミングするコンピュータ実装サーバスタック、デバイス及びコンピュータ実装方法を提供する。
【解決手段】サーバ400において、冗長性を提供するためにコンピュータゲームまたは映像ファイルなどの単一のコンテンツの多数のコピーを、多数のSSDに格納し、コンテンツに対するクライアント要求に基づいて、ブロックレベルのストレージをアドレス指定する情報を提供するために、データ構造を、各コンテンツと、コンテンツを格納しているSSD及び関連ブロック番号とに相互に関連付ける。コンテンツがストリーミングされているコンテンツの供給源は、負荷分散又はSSD損失に備えるために、SSD間で動的に切り替えられる。
【選択図】
図4
【特許請求の範囲】
【請求項1】
データ構造にアクセスできる少なくとも1つの管理サーバと、
それぞれが複数のコンピュータマザーボードを備える複数の計算サーバと、
少なくとも第1の不揮発性メモリ(NVMe)対応ソリッドステートドライブ(SSD)及び第2のNVMe対応SSDを備える少なくとも1つのストレージサーバと、
を備えるコンピュータ実装サーバスタックであって、
少なくとも第1の計算サーバは、
少なくとも1つの処理ユニットを備える少なくとも第1のコンピュータマザーボードと、
少なくとも1つの処理ユニットを備える少なくとも第2のコンピュータマザーボードと、
前記第1のコンピュータマザーボード及び前記第2のコンピュータマザーボードを前記第1のNVMe対応SSD及び前記第2のNVMe対応SSDに接続する少なくとも1つのNVMeオーバーファブリック(NVMe-oF)通信経路と、
を備え、
前記NVMe-oF通信経路が、マザーボードの一部ではない、NVMeインターフェースを実装した単一の共通ファブリックアダプタを有することにより、前記第1の計算サーバがただ1つのファブリックアダプタとなり、
前記コンピュータ実装サーバスタックは、命令により、
クライアントコンピュータから1つのコンテンツの要求を受信することと、
前記1つのコンテンツを、計算サーバのプロセッシングユニットを経由することなく前記NVMe-oF通信経路を介して直接前記クライアントコンピュータに提供させることと、
を実行するようにプログラムされる、
コンピュータ実装サーバスタック。
【請求項2】
前記データ構造はさらに、前記1つのコンテンツが少なくとも前記第2のNVMe対応SSDに格納されていることと、前記第2のNVMe対応SSDのブロックが前記1つのコンテンツを格納していることとを、相互に関連付け、
前記コンピュータ実装サーバスタックは、命令により、
前記第1のNVMe対応SSDに障害が生じたという判定に応じて、前記第2のNVMe対応SSDに切り替えて、前記1つのコンテンツを前記クライアントコンピュータに提供すること
を実行するようにプログラムされる、請求項1に記載のコンピュータ実装サーバスタック。
【請求項3】
前記データ構造はさらに、前記1つのコンテンツが少なくとも前記第2のNVMe対応SSDに格納されていることと、前記第2のNVMe対応SSDのどのブロックが前記1つのコンテンツを格納していることとを、相互に関連付け、
前記コンピュータ実装サーバスタックは、命令により、
依然として作動可能な前記第1のNVMe対応SSDで負荷分散条件が満たされるという判定に応じて、前記第2のNVMe対応SSDに切り替えて、前記1つのコンテンツを前記クライアントコンピュータに提供すること
を実行するようにプログラムされる、請求項1に記載のコンピュータ実装サーバスタック。
【請求項4】
前記1つのコンテンツは、前記第1のNVMe対応SSD及び前記第2のNVMe対応SSDにわたりストライピングされる、請求項1に記載のコンピュータ実装サーバスタック。
【請求項5】
前記1つのコンテンツは、前記第1のNVMe対応SSD及び前記第2のNVMe対応SSDのそれぞれに、完全に記録される、請求項1に記載のコンピュータ実装サーバスタック。
【請求項6】
前記1つのコンテンツは、映像である、請求項1に記載のコンピュータ実装サーバスタック。
【請求項7】
前記1つのコンテンツは、コンピュータゲームである、請求項1に記載のコンピュータ実装サーバスタック。
【請求項8】
前記管理サーバは、前記ストレージサーバ、または前記計算サーバのいずれでもない、請求項1に記載のコンピュータ実装サーバスタック。
【請求項9】
前記管理サーバは、前記計算サーバのうちの少なくとも1つにより実装される、請求項1に記載のコンピュータ実装サーバスタック。
【請求項10】
前記管理サーバは、前記ストレージサーバにより実装される、請求項1に記載のコンピュータ実装サーバスタック。
【請求項11】
一時的信号ではなく、かつ命令を含む少なくとも1つのコンピュータメモリを備えるデバイスであって、
少なくとも1つのコンテンツを格納する第1の不揮発性メモリ(NVMe)対応ソリッドステートドライブ(SSD)及び第2のNVMe対応SSDを備える少なくとも1つのストレージサーバと、
計算サーバとを備え、
前記計算サーバは、
少なくとも1つの処理ユニットを備える少なくとも第1のコンピュータマザーボードと、
少なくとも1つの処理ユニットを備える少なくとも第2のコンピュータマザーボードと、
少なくとも1つのNVMeオーバーファブリック(NVMe-oF)通信経路と、
を備え、
前記NVMe-oF通信経路は、ドーターボードによって実装された少なくとも1つのファブリックアダプタを含み、
それぞれの前記処理ユニットは、それぞれの周辺機器相互接続エクスプレス(PCI(e))スイッチに接続され、前記PCI(e)スイッチを通してそれぞれの前記処理ユニットは複数のPCI(e)レーンを介してそれぞれのサウスブリッジに接続され、それぞれの前記PCI(e)スイッチはまた、それぞれの前記処理ユニットをそれぞれの前記ドーターボードに接続する、
デバイス。
【請求項12】
前記1つのコンテンツは、映像である、請求項11に記載のデバイス
【請求項13】
前記1つのコンテンツは、コンピュータゲームである、請求項11に記載のデバイス
【請求項14】
前記デバイスは、
前記第1のNVMe対応SSDに障害が生じたという判定に応じて、前記第2のNVMe対応SSDに切り替えて、前記1つのコンテンツをクライアントコンピュータに提供すること
を実行可能である、請求項11に記載のデバイス。
【請求項15】
前記デバイスは、
依然として作動可能な前記第1のNVMe対応SSDで負荷分散条件が満たされるという判定に応じて、前記第2のNVMe対応SSDに切り替えて、前記1つのコンテンツをクライアントコンピュータに提供すること
を実行可能である、請求項11に記載のデバイス。
【請求項16】
前記1つのコンテンツは、前記第1のNVMe対応SSD及び前記第2のNVMe対応SSDにわたりストライピングされる、請求項11に記載のデバイス。
【請求項17】
前記1つのコンテンツは、前記第1のNVMe対応SSD及び前記第2のNVMe対応SSDのそれぞれに、完全に記録される、請求項11に記載のデバイス。
【請求項18】
不揮発性メモリオーバーファブリック(NVMe-oF)ネットワークストレージシステムを提供することを含み、
前記NVMe-oFネットワークストレージシステムは、
周辺機器相互接続エクスプレス(PCI(e))プロトコルを用いてそれぞれのサウスブリッジに通信可能に接続されたそれぞれのプロセッサを含む複数のマザーボードを有する少なくとも1つのサーバを含み、
それぞれの前記プロセッサはまた、それぞれのコネクタを通してそれぞれのファブリックアダプタに通信可能に接続され、
前記ファブリックアダプタの少なくとも1つは、マザーボードの一部である、NVMeインターフェースを実装するドーターボードによって実装され、
それぞれの前記マザーボードは、それぞれの前記ファブリックアダプタを通して前記サーバの他のマザーボードに接続され、また、それぞれの前記ファブリックアダプタを通して、前記NVMe-oFネットワークストレージシステムの少なくとも1つのストレージサーバに接続される、コンピュータ実装方法。
【請求項19】
いくつかのコンテンツと、各コンテンツが格納されている前記NVMe-oFネットワークストレージシステム内のソリッドステートドライブ(SSD)及び各SSD内のブロックとを相互に関連付ける、前記NVMe-oFネットワークストレージシステムのデータ構造を確立することを含み、
前記サーバのマーザボードは協働して、前記SSDに格納されているコンピュータシミュレーションをリモートクライアントにストリーミングする、または、前記サーバのマーザボードは協働して、前記SSDに格納されている映画またはテレビ番組をリモートクライアントにストリーミングする、請求項18に記載のコンピュータ実装方法。
【請求項20】
前記デバイスは、
少なくとも第1の不揮発性メモリ(NVMe)対応ソリッドステートドライブ(SSD)及び第2のNVMe対応SSD上で、1つのコンテンツの複数の完全コピーを特定することであって、データ構造は、前記1つのコンテンツの識別と、前記1つのコンテンツが格納されている前記第1のSSD及び前記第2のSSD並びに各SSDの関連ブロックの識別とを、相互に関連付ける、前記特定することと、
クライアントコンピュータからの前記1つのコンテンツに対する要求に応じて、前記データ構造にアクセスして、前記第1のNVMe対応SSD及び前記第2のNVMe対応SSD上のどこに前記1つのコンテンツが格納されているかを決定することと、
前記第1のNVMe対応SSD及び前記第2のNVMe対応SSD上のどこに前記1つのコンテンツが格納されているかを特定したことに応じて、周辺機器相互接続エクスプレス(PCI(e))プロトコルを使用する少なくとも1つのNVMeオーバーファブリック(NVMe-oF)通信経路を用いて、前記1つのコンテンツにアクセスして少なくとも前記第1のSSDから前記クライアントコンピュータに前記1つのコンテンツを送信することと、
を実行可能である、請求項11に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、概して高速かつ低遅延なネットワークストレージに関し、特にネットワークコンピュータゲーム、映像放送、コンテンツ配信ネットワーク、仮想マシン、及び機械学習アプリケーションで使用するこのようなシステムに関する。
【背景技術】
【0002】
ソリッドステートドライブ(SSD)として知られるデータストレージデバイスは、古く由緒あるハードディスクドライブ(HDD)の代替として導入されている。SSD技術は、ディスクベースのストレージではなくソリッドステートストレージを使用し、ストレージのバイトあたりのコストはより高いが(現在)、HDD技術よりもはるかに速いデータ転送速度を現在有する。
【0003】
SSD、すなわち不揮発性メモリエクスプレス(NVMe)に関連した通信規格が登場し、この通信規格ではSSDは、シリアルATアタッチメント(SATA)プロトコルを使用してではなく、より高速なNVMeプロトコルを使用して通信する。NVMeに関連した通信プロトコルはファブリックを介しており(NVMe-oF)、これは、NVMeメッセージベースコマンドが、ホストコンピュータと標的のソリッドステートストレージデバイスまたはシステム(本質的にSSDストレージシステム)との間で、「ファブリック」を介してデータを転送できるように設計された技術仕様であり、「ファブリック」とは、Ethernet(登録商標)、Fibre Channel、及びInfiniBandなどのネットワークを意味する口語表現である。NVMe-oFは、メッセージベースモデルを使用して、ホストと対象ストレージデバイスとの間で、周辺機器相互接続エクスプレス(PCI(e))プロトコルにより通信を行い、PCI(e)プロトコルは、より古いSATAプロトコルよりも転送機構が高速であることから、データ転送速度に貢献する。
【発明の概要】
【0004】
ここで理解されるように、NVMe-oFのプロトコルは、若干必要最低限であり、設計者は、いくつかの課題、特にアプリケーション特有であり得る課題を解決する必要がある。これらの未対処の課題の中には、データ冗長性と、ホストがファイルシステムのないNVMe対応SSD内でデータの場所をブロックベースで特定する必要があることと、負荷分散とがある。
【0005】
従って、コンピュータ実装サーバスタックには、マッピングデータ構造にアクセスできる少なくとも1つの管理サーバと、それぞれが複数のコンピュータマザーボードを含む複数の計算サーバと、少なくとも第1の不揮発性メモリ(NVMe)対応ソリッドステートドライブ(SSD)及び第2のNVMe対応SSDを含む少なくとも1つのストレージサーバとが含まれる。この第1の態様では、計算サーバは、少なくとも1つの処理ユニットを有する少なくとも第1のコンピュータマザーボードと、少なくとも1つの処理ユニットを有する少なくとも第2のコンピュータマザーボードとを含む。計算サーバはさらに、マザーボードをストレージサーバのNVMe対応SSDに接続する少なくとも1つのNVMeオーバーファブリック(NVMe-oF)通信経路を含む。サーバスタックは、クライアントコンピュータから1つのコンテンツの要求を受信するように、命令でプログラムされる。また命令は、サーバスタックが、当該1つのコンテンツの識別を使用してマッピングデータ構造にアクセスして、当該1つのコンテンツが少なくとも第1のNVMe対応SSDに格納されていることを特定し、第1のNVMe対応SSDのどのブロックが当該1つのコンテンツを格納しているかを特定するように、構成する。サーバスタックはさらに、当該1つのコンテンツを格納している第1のNVMe対応SSD及び第1のNVMe対応SSDのブロックを特定したことに基づいて、当該1つのコンテンツを、計算サーバを経由することなくNVMe-oF経路を介して直接クライアントデバイスにストリーミングさせるように、命令でプログラムされる。
【0006】
実施形態では、SSDは回転ディスクを含まない。
【0007】
データ構造はさらに、当該1つのコンテンツが第2のNVMe対応SSDに格納されていることと、第2のNVMe対応SSDのブロックが当該1つのコンテンツを格納していることとを、相互に関連付け得る。この場合、サーバスタックは、第1のNVMe対応SSDに障害が生じたという判定に応じて、第2のNVMe対応SSDに切り替えて当該1つのコンテンツをクライアントコンピュータに提供し、これによりデータ冗長性を提供するように、命令でプログラムされ得る。クライアントはドライブの障害をある他のシステムに、例えば管理サーバに報告することができるため、他のシステムからも障害が報告される場合、ドライブはブロックマッピングから除外され得る。これにより、ある他のシステムは、コンテンツの追加のコピーのダウンロードを別のドライブに加えることになり得る。さらに、障害が生じたドライブを交換するように運用チームに警告する。
【0008】
また、サーバスタックは、依然として作動可能な第1のNVMe対応SSDで負荷分散条件が満たされるという判定に応じて、第2のNVMe対応SSDに切り替えて当該1つのコンテンツをクライアントコンピュータに提供し、これにより負荷分散を提供するように、命令でプログラムされ得る。
【0009】
必要に応じて、当該1つのコンテンツは、NVMe対応SSDにわたりストライピングされ得る。付加的または代替的に、1つのコンテンツは全て、NVMe対応SSDのそれぞれに記録され得る。
【0010】
当該1つのコンテンツは、例えば、完全な映画または完全なテレビ番組などの映像であってよく、またはコンピュータゲームであってもよい。
【0011】
いくつかの実施形態では、管理サーバは、ストレージサーバ、または計算サーバのいずれでもない。別の実施形態では、管理サーバは、計算サーバのうちの少なくとも1つにより実施される。別の実施形態では、管理サーバは、ストレージサーバにより実施される。
【0012】
別の態様では、デバイスは、一時的信号ではない少なくとも1つのコンピュータメモリを含み、次に少なくとも1つのコンピュータメモリは命令を含み、命令は、少なくとも1つのプロセッサにより、少なくとも第1の不揮発性メモリ(NVMe)対応ソリッドステートドライブ(SSD)及び第2のNVMe対応SSD上で、1つのコンテンツの複数の完全なコピーを特定することを、実行可能である。データ構造は、当該1つのコンテンツの識別と、当該1つのコンテンツが格納されている第1のSSD及び第2のSSD並びに各SSDの関連ブロックの識別とを、相互に関連付ける。命令はさらに、クライアントコンピュータからの当該1つのコンテンツに対する要求に応じて、データ構造にアクセスして、第1のSSD及び第2のSSD上のどこに当該1つのコンテンツが格納されているかを特定することを、実行可能である。命令は、第1のSSD及び第2のSSD上のどこに当該1つのコンテンツが格納されているかを特定したことに応じて、周辺機器相互接続エクスプレス(PCI(e))プロトコルを使用する少なくとも1つのNVMeオーバーファブリック(NVMe-oF)通信経路を用いて、当該1つのコンテンツにアクセスして少なくとも第1のSSDからクライアントコンピュータに当該1つのコンテンツを送信することを、実行可能である。
【0013】
別の態様では、方法は、不揮発性メモリオーバーファブリック(NVMe-oF)ネットワークストレージシステムを提供することを含む。方法はまた、NVMe-oFネットワークストレージシステムでデータ冗長性を提供すること、及びNVMe-oFネットワークストレージシステムで負荷分散を提供することを含む。
【0014】
本出願の詳細は、その構造及び動作の両方に関して、添付の図面を参照することで最もよく理解することができ、図面では、同様の参照番号は、同様の部分を指す。
【図面の簡単な説明】
【0015】
【
図1】本発明の原理による、例を含む例示的なシステムのブロック図である。
【
図2】クラウドベースゲームシステムの概略図である。
【
図4】単一サーバの第1の例示的なアーキテクチャのブロック図である。
【
図4A】ストレージサーバの例示的なアーキテクチャのブロック図である。
【
図5】単一サーバの第2の例示的なアーキテクチャのブロック図である。
【
図6】単一サーバの第3の例示的なアーキテクチャのブロック図である。
【
図7】本明細書で「ドーターボード」とも称されるNVMeネットワークカードの例示的なアーキテクチャのブロック図である。
【
図8】例示的なストレージロジックのフローチャートである。
【
図9】コンピュータゲーム、及び映像ファイルなどのコンテンツと、コンテンツが格納されているそれぞれのストレージデバイス及びこれらのストレージデバイス上のブロックとを、相互に関連付ける例示的なデータ構造の概略図である。
【
図10】コンピュータゲームアプリケーションのコンテキストでの例示的なストリーミングロジックのフローチャートである。
【発明を実施するための形態】
【0016】
本開示は、概して、分散型コンピュータゲームネットワーク、映像放送、コンテンツ配信ネットワーク、仮想マシン、及び機械学習アプリケーションなどのこれらに限定されない一般消費者向け電子製品(CE)デバイスネットワークの態様を含むコンピュータエコシステムに関する。本明細書のシステムは、クライアントコンポーネントとサーバコンポーネントとの間でデータが交換され得るように、ネットワークを介して接続されたサーバコンポーネント及びクライアントコンポーネントを含み得る。クライアントコンポーネントは、1つ以上のコンピューティングデバイスを含み得、これには、Sony PlayStation(登録商標)などのゲームコンソール及び関連マザーボード、ポータブルテレビ(例えばスマートTV、インターネット対応TV)、ラップトップ及びタブレットコンピュータなどのポータブルコンピュータ、並びにスマートフォン及び下記に論じられる追加例を含む他のモバイルデバイスが含まれる。これらのクライアントデバイスは、様々な動作環境で作動し得る。例えば、クライアントコンピュータのうちのいくつかは、例を挙げると、OrbisもしくはLinux(登録商標)オペレーティングシステム、Microsoft社のオペレーティングシステム、またはUnix(登録商標)オペレーティングシステム、またはApple Computer製もしくはGoogle製のオペレーティングシステムを採用し得る。これらの動作環境を使用して、MicrosoftもしくはGoogle製のブラウザ、または下記に論じられるインターネットサーバによりホストされるウェブサイトにアクセスできるMozillaもしくは他のブラウザプログラムなど、1つ以上のブラウジングプログラムが実行され得る。また、本発明の原理による動作環境を使用して、1つ以上のコンピュータゲームプログラムが実行され得る。
【0017】
サーバ及び/またはゲートウェイは、1つ以上のプロセッサを含み得、1つ以上のプロセッサは、インターネットなどのネットワークを介してデータを送受信するようにサーバを構成する命令を実行する。あるいは、クライアントとサーバは、ローカルイントラネットまたは仮想プライベートネットワークを介して接続することができる。サーバまたはコントローラは、Sony PlayStation(登録商標)といったゲームコンソール及び/またはその1つ以上のマザーボード、パーソナルコンピュータなどにより、インスタンス化され得る。
【0018】
クライアントとサーバとの間でネットワークを介して情報が交換され得る。このために、及びセキュリティのために、サーバ及び/またはクライアントは、ファイアウォール、ロードバランサ、テンポラリストレージ、及びプロキシ、並びに信頼性及びセキュリティのための他のネットワークインフラストラクチャを含み得る。1つ以上のサーバは、オンラインソーシャルウェブサイトなどの安全なコミュニティを、ネットワークメンバーに提供する方法を実施する装置を形成し得る。
【0019】
本明細書で使用される命令は、システムにおいて情報を処理するためのコンピュータ実施ステップを指す。命令は、ソフトウェア、ファームウェア、またはハードウェアにおいて実施することができ、システムのコンポーネントにより実行される任意の種類のプログラム化されたステップを含み得る。
【0020】
プロセッサは、アドレスライン、データライン、及び制御ラインなどの様々なライン、並びにレジスタ及びシフトレジスタを用いてロジックを実行することができる任意の従来の汎用単一チッププロセッサまたは汎用マルチチッププロセッサであり得る。
【0021】
本明細書において、フローチャートを介して説明されるソフトウェアモジュール、及びユーザインターフェースは、様々なサブルーチン、プロシージャなどを含み得る。本開示を限定することなく、特定のモジュールにより実行されると述べられるロジックは、他のソフトウェアモジュールに再配分されてもよく、及び/または単一モジュールにおいて一緒に組み合わされてもよく、及び/または共有可能なライブラリにおいて利用可能な状態にされてもよい。
【0022】
本明細書で述べられる本発明の原理は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせとして実装され得、ゆえに、例示的なコンポーネント、ブロック、モジュール、回路、及びステップは、これらの機能の観点から説明される。
【0023】
上記で示唆されたことに加えて、後述されるロジックブロック、モジュール、及び回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、または他のプログラマブルロジックデバイス、例えば特定用途向け集積回路(ASIC)、個別ゲートもしくはトランジスタロジック、個別ハードウェアコンポーネント、あるいは本明細書で説明される機能を実行するように設計されたこれらの任意の組み合わせにより、実装または実行され得る。プロセッサは、コントローラまたはステートマシンまたはコンピューティングデバイスの組み合わせにより、実施され得る。
【0024】
下記で説明される機能及び方法は、ソフトウェアで実施される場合、Java(登録商標)、C#、またはC++などのこれに限定されない好適な言語で記述され得、コンピュータ可読記憶媒体により記憶またはコンピュータ可読記憶媒体を介して送信され得、コンピュータ可読記憶媒体の例には、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、コンパクトディスク読み出し専用メモリ(CD-ROM)、またはデジタル多用途ディスク(DVD)などの他の光学ディスクストレージ、磁気ディスクストレージ、またはリムーバブルサムドライブを含む他の磁気ストレージデバイスなどが挙げられる。接続により、コンピュータ可読媒体が確立され得る。このような接続には、例として、光ファイバ及び同軸ワイヤを含むハードワイヤケーブル、並びにデジタル加入者線(DSL)及びツイストペア線が含まれ得る。このような接続には、赤外線及びラジオを含む無線通信接続が含まれてもよい。
【0025】
一実施形態に含まれる構成要素は、他の実施形態において、任意の好適な組み合わせで使用することができる。例えば、本明細書で説明され及び/または図に描かれる様々な構成要素のいずれも、組み合わされてもよく、交換されてもよく、または他の実施形態から除外されてもよい。
【0026】
「A、B、及びCのうちの少なくとも1つを有するシステム」(同様に「A、B、またはCのうちの少なくとも1つを有するシステム」及び「A、B、Cのうちの少なくとも1つを有するシステム」)には、Aのみ、Bのみ、Cのみ、AとBを一緒に、AとCを一緒に、BとCを一緒に、及び/またはAとBとCを一緒に、などを有するシステムが含まれる。
【0027】
ここで具体的に
図1を参照すると、本発明の原理による、上記で言及され下記でさらに説明される例示的なデバイスのうちの1つ以上を含み得る例示的なシステム10が示される。システム10に含まれる例示的なデバイスのうち初めに、TVチューナー(同等にTVを制御するセットトップボックス)を備えたインターネット対応TVなどのこれに限定されないオーディオビデオデバイス(AVD)12といった一般消費者向け電子製品(CE)デバイスが存在する。しかしながら、代替的に、AVD12は、例えばインターネット対応コンピュータ化冷蔵庫、洗濯機、または乾燥機などの電化製品または家庭用品であってもよい。また、代替的に、AVD12は、インターネット対応コンピュータ化(「スマート」)電話、タブレットコンピュータ、ノートブックコンピュータ、例えばインターネット対応コンピュータ化腕時計、インターネット対応コンピュータ化ブレスレット、他のインターネット対応コンピュータ化デバイスなどの装着可能コンピュータ化デバイス、インターネット対応コンピュータ化音楽プレーヤ、インターネット対応コンピュータ化ヘッドホン、埋め込み型皮膚デバイスなどのインターネット対応コンピュータ化埋め込み型デバイスなどであってもよい。いずれにせよ、AVD12は、本発明の原理を実施する(例えば、本発明の原理を実施するために他のCEデバイスと通信し、本明細書に説明されるロジックを実行し、本明細書に説明される任意の他の機能及び/または動作を実行する)ように構成されることを理解されたい。
【0028】
従って、このような原理を実施するために、
図1に示されるコンポーネントのうちのいくつかまたは全てにより、AVD12は確立され得る。例えば、AVD12は、1つ以上のディスプレイ14を含み得、これは、高解像度または超高解像度「4K」以上のフラットスクリーンが実装され得、ディスプレイ上のタッチを介してユーザ入力信号を受信するタッチ対応であり得る。AVD12は、本発明の原理に従って音声を出力するための1つ以上のスピーカ16と、例えばAVD12を制御するためにAVD12に音声コマンドを入力する、例えば音声受信器/マイクロホンなどの少なくとも1つの追加入力デバイス18と、を含み得る。例示的なAVD12はまた、1つ以上のプロセッサ24の制御下で、インターネット、WAN、LANなどの少なくとも1つのネットワーク22を介して通信するための1つ以上のネットワークインターフェース20を含み得る。従って、インターフェース20は、非限定的にメッシュネットワーク送受信器など、無線コンピュータネットワークインターフェースの例であるWi-Fi送受信器であり得るが、これに限定されない。プロセッサ24は、AVD12を制御して本発明の原理を実施し、これには、例えばディスプレイ14を制御してディスプレイ14上に画像を提示し、ディスプレイ14から入力を受信するなど、本明細書に説明されるAVD12の他の要素が含まれることを理解されたい。さらに、ネットワークインターフェース20は、例えば有線または無線のモデムまたはルータであり得る、あるいは、例えば無線電話送受信器、または前述のWi-Fi送受信器などの他の好適なインターフェースであり得ることに、留意されたい。
【0029】
上記に加えて、AVD12はまた、別のCEデバイスに(例えば有線接続を用いて)物理的に接続するための、例えば高解像度マルチメディアインターフェース(HDMI(登録商標))ポートまたはUSBポートなどの1つ以上の入力ポート26、及び/または、ヘッドホンをAVD12に接続して、AVD12からの音声をヘッドホンを介してユーザに提供するためのヘッドホンポートを含み得る。例えば、入力ポート26は、オーディオビデオコンテンツのケーブルソースまたは衛星ソース26aに、有線または無線を介して接続され得る。従って、ソース26aは、例えば、別個のまたは統合されたセットトップボックスまたは衛星受信器であり得る。あるいは、ソース26aは、下記でさらに説明されるチャネル割り当て目的でユーザがお気に入りとみなし得るコンテンツを含むゲームコンソールまたはディスクプレーヤであってもよい。ソース26aは、ゲームコンソールとして実装される場合、CEデバイス44に関連して下記で説明されるコンポーネントのうちのいくつかまたは全てを含み得る。
【0030】
AVD12はさらに、一時的信号ではないディスクベースストレージまたはソリッドステートストレージなどの1つ以上のコンピュータメモリ28を含み得、これらは、いくつかの事例では、AVDのシャシー内にスタンドアロンデバイスとして、またはAVプログラムを再生するためにAVDのシャシーの内部もしくは外部のパーソナルビデオレコーディングデバイス(PVR)もしくはビデオディスクプレーヤとして、またはリムーバブルメモリ媒体として、具現化されている。また、いくつかの実施形態では、AVD12は、位置受信器すなわち所在地受信器を含み得、これは、携帯電話受信器、GPS受信器、及び/または高度計30などであるがこれらに限定されず、例えば少なくとも1つの衛星または携帯電話中継塔から地理的位置情報を受信し、情報をプロセッサ24に提供し、及び/またはプロセッサ24と連動して、AVD12が配置されている高度を特定するように構成される。しかしながら、例えば、AVD12の所在地を、例えば全3次元で特定するために、携帯電話受信器、GPS受信器、及び/または高度計以外の別の好適な位置受信器が、本発明の原理に従って使用されてもよいことを、理解されたい。
【0031】
AVD12の説明を続けると、いくつかの実施形態では、AVD12は、1つ以上のカメラ32を含み得、これは、例えば熱画像カメラ、ウェブカメラなどのデジタルカメラ、及び/またはAVD12に統合されたカメラであり得、本発明の原理に従って写真/画像及び/または映像を収集するようにプロセッサ24により制御可能であり得る。また、AVD12は、ブルートゥース(登録商標)送受信器34と他の近距離無線通信(NFC)要素36とを含み得、これらは、ブルートゥース(登録商標)及び/またはNFC技術をそれぞれ使用して、他のデバイスと通信する。例示的なNFC要素は、無線周波数識別(RFID)要素であり得る。
【0032】
さらにまた、AVD12は、プロセッサ24に入力を提供する1つ以上の補助センサ37を含み得る(例えば、加速度計、ジャイロスコープ、サイクロメータ、または磁気センサなどのモーションセンサ、赤外線(IR)センサ、光学センサ、速度及び/またはケイデンスセンサ、ジェスチャセンサ(例えばジェスチャコマンドを感知する)など)。AVD12は、地上波(OTA)TV放送を受信し、プロセッサ24に入力を提供するOTA TV放送ポート38を含み得る。前述に加えて、AVD12はまた、赤外線データ関連付け(IRDA)デバイスなどの赤外線(IR)送信器及び/またはIR受信器及び/またはIR送受信器42を含み得ることに留意されたい。AVD12に電力供給を行うために、バッテリ(図示せず)が提供され得る。
【0033】
さらに
図1を参照すると、AVD12に加えて、システム10は、1つ以上の他のCEデバイスタイプを含み得る。一例では、後述のサーバを通して送信されるコマンドを介してディスプレイを制御するように第1のCEデバイス44は使用され得、一方第2のCEデバイス46は、第1のCEデバイス44と同様のコンポーネントを含み得るため、詳細に説明しない。示される例では、2つのCEデバイス44、46のみが図示されるが、より少ないまたはより多いデバイスが使用されてもよいことが理解されよう。上記で示唆されたように、CEデバイス44/46及び/またはソース26aは、ゲームコンソールにより実施され得る。あるいは、CEデバイス44/46のうちの1つ以上は、Google Chromecast、Roku、Amazon FireTVの商標で販売されるデバイスにより、実施され得る。
【0034】
示される例では、本発明の原理を例示するために、3つのデバイス12、44、46は全て、例えば自宅内のエンターテインメントネットワークのメンバーである、または少なくとも家屋などの場所で互いに近接して存在すると、想定される。しかしながら、本発明の原理は、明確に別段の主張がない限り、破線48で示される特定の場所に限定されない。
【0035】
非限定的な例示の第1のCEデバイス44は、前述のデバイスのうちのいずれか1つ、例えば、ポータブル無線ラップトップコンピュータもしくはノートブックコンピュータ、またはゲームコントローラ(「コンソール」とも称される)により確立され得、従って、後述されるコンポーネントのうちの1つ以上を有し得る。第2のCEデバイス46は、ブルーレイプレーヤ、及びゲームコンソールなどのビデオディスクプレーヤにより確立され得るが、これらに限定されない。第1のCEデバイス44は、例えば、AV再生及び一時停止コマンドをAVD12に発令するためのリモートコントロール(RC)であり得る、または第1のCEデバイス44は、タブレットコンピュータ、有線または無線リンクを介して第2のCEデバイス46により実施されるゲームコンソールと通信し、AVD12上のビデオゲームの提示を制御するゲームコントローラ、パーソナルコンピュータ、無線電話などのより洗練されたデバイスであり得る。
【0036】
従って、第1のCEデバイス44は、ディスプレイ上のタッチを介してユーザ入力信号を受信するタッチ対応であり得る1つ以上のディスプレイ50を含み得る。第1のCEデバイス44は、本発明の原理に従って音声を出力するための1つ以上のスピーカ52と、例えば第1のCEデバイス44を制御するために第1のCEデバイス44に音声コマンドを入力する、例えば音声受信器/マイクロホンなどの少なくとも1つの追加入力デバイス54と、を含み得る。例示的な第1のCEデバイス44はまた、1つ以上のCEデバイスプロセッサ58の制御下で、ネットワーク22を介して通信するための1つ以上のネットワークインターフェース56を含み得る。従って、インターフェース56は、メッシュネットワークインターフェースを含む、無線コンピュータネットワークインターフェースの例であるWi-Fi送受信器であり得るが、これに限定されない。プロセッサ58は、第1のCEデバイス44を制御して本発明の原理を実施し、これには、例えばディスプレイ50を制御してディスプレイ50上に画像を提示し、ディスプレイ50から入力を受信するなど、本明細書に説明される第1のCEデバイス44の他の要素が含まれることを理解されたい。さらに、ネットワークインターフェース56は、例えば有線または無線のモデムまたはルータであり得る、あるいは、例えば無線電話送受信器、または前述のWi-Fi送受信器などの他の好適なインターフェースであり得ることに、留意されたい。
【0037】
上記に加えて、第1のCEデバイス44はまた、別のCEデバイスに(例えば有線接続を用いて)物理的に接続するための、例えばHDMI(登録商標)ポートまたはUSBポートなどの1つ以上の入力ポート60、及び/または、ヘッドホンを第1のCEデバイス44に接続して、第1のCEデバイス44からの音声をヘッドホンを介してユーザに提供するためのヘッドホンポートを含み得る。第1のCEデバイス44はさらに、ディスクベースストレージまたはソリッドステートストレージなどの1つ以上の有形コンピュータ可読記憶媒体62を含み得る。また、いくつかの実施形態では、第1のCEデバイス44は、位置受信器すなわち所在地受信器を含み得、これは、携帯電話及び/またはGPS受信器及び/または高度計64などであるがこれらに限定されず、例えば、三角測量を使用して、少なくとも1つの衛星及び/または携帯電話中継塔から地理的位置情報を受信し、情報をCEデバイスプロセッサ58に提供し、及び/またはCEデバイスプロセッサ58と連動して、第1のCEデバイス44が配置されている高度を特定するように構成される。しかしながら、例えば、第1のCEデバイス44の所在地を、例えば全3次元で特定するために、携帯電話及び/またはGPS受信器及び/または高度計以外の別の好適な位置受信器が、本発明の原理に従って使用されてもよいことを、理解されたい。
【0038】
第1のCEデバイス44の説明を続けると、いくつかの実施形態では、第1のCEデバイス44は、1つ以上のカメラ66を含み得、これは、例えば熱画像カメラ、ウェブカメラなどのデジタルカメラ、及び/または第1のCEデバイス44に統合されたカメラであり得、本発明の原理に従って写真/画像及び/または映像を収集するようにCEデバイスプロセッサ58により制御可能であり得る。また、第1のCEデバイス44は、ブルートゥース(登録商標)送受信器68と他の近距離無線通信(NFC)要素70を含み得、これらは、ブルートゥース(登録商標)及び/またはNFC技術をそれぞれ使用して、他のデバイスと通信する。例示的なNFC要素は、無線周波数識別(RFID)要素であり得る。
【0039】
さらにまた、第1のCEデバイス44は、CEデバイスプロセッサ58に入力を提供する1つ以上の補助センサ72を含み得る(例えば、加速度計、ジャイロスコープ、サイクロメータ、または磁気センサなどのモーションセンサ、赤外線(IR)センサ、光学センサ、速度及び/またはケイデンスセンサ、ジェスチャセンサ(例えばジェスチャコマンドを感知する)など)。第1のCEデバイス44はさらに、例えば、1つ以上の気候センサ74(例えば気圧計、湿度センサ、風センサ、光センサ、温度センサなど)及び/または1つ以上の生体センサ76などの他のセンサを含み得、これらは、CEデバイスプロセッサ58に入力を提供する。前述に加えて、いくつかの実施形態では、第1のCEデバイス44はまた、赤外線データ関連付け(IRDA)デバイスなどの赤外線(IR)送信器及び/またはIR受信器及び/またはIR送受信器78を含み得ることに留意されたい。第1のCEデバイス44に電力供給を行うために、バッテリ(図示せず)が提供され得る。CEデバイス44は、前述の通信モード及び関連コンポーネントのうちのいずれかを介して、AVD12と通信し得る。
【0040】
第2のCEデバイス46は、CEデバイス44に関して示されるコンポーネントのうちのいくつかまたは全てを含み得る。一方または両方のCEデバイスが、1つ以上のバッテリにより電力供給され得る。
【0041】
ここで、前述の少なくとも1つのサーバ80を参照すると、これは、少なくとも1つのサーバプロセッサ82と、ディスクベースストレージまたはソリッドステートストレージなどの少なくとも1つの有形コンピュータ可読記憶媒体84とを含む。一実施態様では、媒体84は、1つ以上のSSDを含む。サーバはまた、少なくとも1つのネットワークインターフェース86を含み、これにより、ネットワーク22を介して
図1の他のデバイスとの通信が可能となり、実際に、本発明の原理に従ってサーバとクライアントデバイスとの間の通信が促進され得る。ネットワークインターフェース86は、例えば、有線もしくは無線のモデムもしくはルータ、Wi-Fi送受信器、または例えば無線電話送受信器などの他の好適なインターフェースであり得ることに、留意されたい。ネットワークインターフェース86は、サーバプロセッサ82を通ることなく、いわゆる「ファブリック」などのネットワークに媒体84を直接接続するリモートダイレクトメモリアクセス(RDMA)インターフェースであり得る。ネットワークには、Ethernet(登録商標)ネットワーク、及び/またはFibre Channelネットワーク、及び/またはInfiniBandネットワークが含まれ得る。通常、サーバ80は、物理サーバ「スタック」に配置され得る「ブレード」と称される多数のコンピュータに多数のプロセッサを含む。
【0042】
従って、いくつかの実施形態では、サーバ80は、インターネットサーバまたは「サーバファーム」全体であり得、例えばネットワークゲームアプリケーションなどの例示的な実施形態で、システム10のデバイスがサーバ80を介して「クラウド」環境にアクセスし得るように、「クラウド」機能を含み実行し得る。あるいは、サーバ80は、
図1に示される他のデバイスと同じ部屋または近くに存在する1つ以上のゲームコンソールまたは他のコンピュータにより、実施され得る。
【0043】
本明細書の方法は、プロセッサにより実行されるソフトウェア命令、好適に構成された特定用途向け集積回路(ASIC)もしくはフィールドプログラマブルゲートアレイ(FPGA)モジュール、または当業者に自明の任意の他の便利な方法で、実施され得る。ソフトウェア命令が採用される場合、ソフトウェア命令は、CD ROM、またはフラッシュドライブなどの非一時的デバイス内で具現化され得る。あるいは、ソフトウェアコード命令は、ラジオ信号もしくは光信号などの一時的構成で、またはインターネットを介したダウンロードにより、具現化されてもよい。
【0044】
図2は、Sony Playstations(登録商標)、Microsoft Xboxes(登録商標)などの1つ以上のクライアントゲームコンソール200(「ゲームシステム」、「ゲームデバイス」とも称される)が、有線及び/または無線リンクを介して、クラウドベースゲーム管理サーバ202、通常インターネットサーバと通信するクラウドコンピュータゲーム環境の形態での例示的な適用を示す。次に、管理サーバ202は、1つ以上のソリッドステートメモリ206を含む第1のゲームサーバ204(多数のサーバ「ブレード」により具現化され得る)と通信し、1つ以上のソリッドステートメモリ206は、例えば、フラッシュまたは3D Xpointなどのこれらに限定されないソリッドステートメモリを使用するNVMe対応SSDを含むランダムアクセスメモリ(RAM)などが挙げられる。管理サーバ202は、最大「N」個のこのようなサーバと通信し、これには、1つ以上のソリッドステートメモリ214を含むN番目のゲームサーバ212が含まれる。
【0045】
図3は、単一のスタック筐体に含まれ得る例示的なサーバスタック300を示し、サーバファームは通常、このようなサーバスタックを多数含む。サーバスタック300は、高速ファブリック304を通してサーバスタックに接続されたクライアントのために計算を実行する複数の計算サーバ302を含む。スタック内の各サーバは、ファブリックに接続され得る。図示されるように、管理サーバ306もスタックに含まれ得、1つ以上のNVMe対応ストレージサーバ308がスタックに含まれ得る。ファブリックソリューションを使用することにより、計算サーバは高速で相互通信できるようになり、これにより、重い計算作業に対する「計算ノードのバンドリング」が可能となり得ることに留意されたい。
【0046】
ストレージサーバ308は、NVMe対応の1つ以上(通常は複数)のSSD310を含み得、これは、ファブリック304を介してスタック内の他のサーバに直接アクセス可能である。ストレージサーバ308はまた通常、1つ以上のプロセッサ312と、1つ以上のキャッシュ型ランダムアクセスメモリ(RAM)314とを含む。CPU312を通ることなく、SSD310にアクセスし、そこからコンテンツをストリーミングすることができる。
【0047】
管理サーバ306は、スタックの管理タスクを実行し、このうちのいくつかは下記でさらに論述され、一方、ストレージサーバは、スタックのストレージ機能を実行する。実施形態では、管理サーバ306は、図示されるように、計算サーバ及びストレージサーバとは分離した別個のサーバであり得る、または管理サーバ306は、計算サーバ及び/またはストレージサーバにより実施され得る。管理サーバ306は、サーバのマザーボードの後述のドーターボードのうちの1つにより実施され得る。
【0048】
図4~6は、スタック300内のサーバの例示的なアーキテクチャ、特に計算サーバ302を実施するために使用され得るアーキテクチャを示す。図示されるように、サーバ400は複数のマザーボード402を含み得、マザーボード402は、互いに実質的に同一であり、よって明確化のため、単一のマザーボードのみの詳細が示される。図示される例では、各サーバ400は、4つのマザーボードを含むが、これより多いまたは少ないマザーボードが使用されてもよい。各マザーボードは、例えば、あるいはコンピュータゲームコンソールに対応付けられたマザーボードであり得る。いくつかの例では、サーバのマザーボードの大部分は互いに同一であり得、サーバの1つ以上のマザーボードが他と異なり得、例えば、3つのマザーボードはコンピュータゲームコンソールのマザーボードであり得、1つはパーソナルコンピュータのマザーボードであり得る。
【0049】
図4に図示される例では、マザーボード402は、プロセッサ404を含む。プロセッサ404は、中央処理装置(CPU)及びグラフィック処理装置(GPU)として機能する単一のダイ上の処理チップである加速処理装置(APU)であり得る。プロセッサ404は、PCI(e)を使用して、図示される非限定的な例では4つのPCI(e)レーンを使用して、サウスブリッジ406と通信し得る。
【0050】
また、プロセッサ404は、例えば4つのPCI(e)レーンを介し、コネクタ410を通してファブリックアダプタ408に接続され得る。コネクタ410は、OculinkまたはM2コネクタなどのケーブルコネクタであり得る。
【0051】
例では、ファブリックアダプタ408は、「ドーターボード」、すなわちマザーボード402の一部である回路基板として実装され得、リモートダイレクトメモリアクセス(RDMA)(Infiniband、仮想インターフェースアーキテクチャ、RDMAオーバーコンバージドEthernet(登録商標)(RoCE)、及びインターネット広域RDMAプロトコル(iWARP)を含む)などのNVMeインターフェースを実施し得る。あるいは、ファブリックアダプタ408は、NVMeオーバーFibre Channelなどの別の種類のNVMeインターフェースであり得る。いずれの事例でも、図示されるように、マザーボード402は、ファブリックアダプタ408を通してサーバ400の他のマザーボード402に接続され、また、ファブリックアダプタを通して、
図3に示されるストレージサーバ308のSSDに、またネットワークに、そこからリモートクライアントに、接続される。
【0052】
クラウドベースのゲームアプリケーションでは、サーバ400のマザーボード402は協働して、ストレージサーバ308のSSD310に格納されているコンピュータゲームを、コンピュータゲームコンソールなどのリモートクライアントにストリーミングし得る。あるいは、映像ストリーミングアプリケーションでは、サーバ400のマザーボード402は協働して、ストレージサーバ308に格納されている映画またはテレビ番組を、映像再生デバイスなどのリモートクライアントにストリーミングし得る。
【0053】
例では、各コンテンツ、つまり各コンピュータゲームまたは各完全映像プログラム、例えば映画、テレビ番組、または他の映像プログラムが、複数のSSDに格納されている。各コンテンツはその全体が、複数のSSDのそれぞれに格納され得る。付加的または代替的に、各コンテンツは、複数のSSDにわたりストライピングされ得る。いずれの事例でも、NVMe-oF技術により提供される速度のおかげで、多数のマザーボード402(及び実際には多数の計算サーバ)を使用して、多数のSSDに格納されている単一のコンテンツが、クライアントにストリーミングされ得る。また、単一のコンテンツは、下記でさらに説明されるデータ冗長性及び負荷分散のためにそのコンテンツを格納しているSSD間をシームレスに切り替わることにより、ストリーミングされ得る。
【0054】
追加のサーバアーキテクチャを説明する前に、ストレージサーバに特に適したアーキテクチャを示す
図4Aを簡単に参照する。サーバ400Aは、ファブリックにアクセスするための多数のネットワークアダプタ406Aを含む通常は単一のマザーボード404A上に、APU402Aなどの少なくとも1つ、好ましくは複数(帯域幅の理由で)のプロセッサを有し得る。1つ以上のNVMe対応SSD408Aは、プロセッサと通信する。マザーボード404Aは、複数の「ソケット」を含み得、各ソケットは、APUまたはCPUなどのプロセッサで埋められ得る。図示されるように、各ソケットは、自身のRAMも含むことができ、異なるCPUは、互いのRAMにアクセスすることができる。
【0055】
図5は、サーバ500の代替的なアーキテクチャを示し、これは、本明細書で開示される他のアーキテクチャと同様に、本明細書の任意のサーバにより使用され得る。
図5のサーバ500は、各マザーボード502がそれぞれ自身のファブリックアダプタを有する代わりに、
図5のマザーボード502は単一の共通ファブリックアダプタ504を共有して、ネットワークファブリック506と通信し、そこからストレージサーバ、及びエンドユーザゲームコンソールまたは映像プレーヤなどのリモートクライアントデバイス508を含む他のコンポーネントと通信することを除いて、全ての本質的な点で
図4に示されるサーバ400と同一である。
【0056】
図6は、サーバ600の代替的なアーキテクチャを示し、これは、本明細書で開示される他のアーキテクチャと同様に、本明細書の任意のサーバにより使用され得る。
図6のサーバ600は、
図6に示される各マザーボード604のAPU602がそれぞれのPCI(e)スイッチ606に接続され、そこから8つのPCI(e)レーンを介してサウスブリッジ608に接続されていることを除いて、全ての本質的な点で
図4に示されるサーバ400と同一である。スイッチ606は次に、ファブリックアダプタ612に接続されたOculinkまたはM2コネクタなどのコネクタ610に、上記のコンポーネントを接続する。
図6の技法は、接続されたデバイス間に8つのPCI(e)レーンを提供し、同時に、他のチップがあまり帯域幅を使用していない場合、より高いデータスループットを得られるように負荷分散を提供する。
図6のアーキテクチャは、
図5の共有ファブリックアダプタ技法を採用してもよいことを理解されたい。
【0057】
図7は、非限定的な例としてRDMAを使用するドーターボード700として実装される、上記で開示されたファブリックアダプタの例を示す。ドーターボード700は、少なくとも1つのAPUを含まなくてもよいが、いくつかの例では、APUを含み得る。
図7に示される例示的なドーターボード700は、SSDなどの少なくとも1つのNVMe対応ストレージ704を含み、これは、RDMAインターフェースなどのファブリックインターフェース706に接続され、そこからネットワークファブリック708に接続され、次にネットワークファブリック708は、スタック内の他のサーバ及びリモートエンドユーザクライアントデバイス710に接続され得る。
【0058】
図8は、例示的なストレージロジックを示す。ブロック800から開始し、完全なコンピュータゲームまたは完全な映像プログラムなどの各コンテンツは、「N」個のNVMeストレージデバイスに「N」回格納され、「N」は1より大きい整数である。ブロック802にて、各コンテンツのIDが、そのコンテンツを格納しているストレージデバイスのID、及びそのコンテンツを格納している各ストレージデバイスのブロック番号と、相互に関連付けられるマッピングデータ構造が確立される。
【0059】
図9は、コンピュータゲーム、及び映像プログラムなどの複数のコンテンツ902と、そのコンテンツを格納しているSSDの識別子904、及び902で示されるコンテンツを格納しているデバイスID904で識別される各SSDのブロックの識別906とを、相互に関連付ける結果マッピングデータ構造900を示す。従って、示される例では、各コンテンツは、複数のデバイスに格納されている。例えば、ゲームAは、SSD1及びSSD3に格納され、SSD1のブロック100~200、及びSSD3のブロック400~500に格納されている。示される例では、ゲームBは、SSD1及びSSD2に格納され、SSD1のブロック350~450、及びSSD2のブロック1~100に格納されている。
図9のブロック番号は連続しているが、ブロック番号は連続している必要はなく、マッピングデータ構造にリストされているSSD上で、多数のグループのブロック番号が、特定の1つのコンテンツを格納していることを、理解されたい。デフラグを実行して、ブロック内の非隣接性を最小限に抑えることができる。
【0060】
図10は、上記に示されたサーバアーキテクチャのうちのいずれかを使用した例示的なコンテンツストリーミングロジックを示す。ロジックは、サーバスタックのプロセッサ間で分散され得る、またはスタック内のプロセッサのうちの選択された1つにより実施され得る。なお、使用する特定のファイルシステムまたは暗号化は、特定のアプリケーションにより定義することができ、コンテンツが暗号化されている場合には、計算サーバは復号化を実行することができる。暗号化されたコンテンツの事例では、暗号化キーは、「ブロックマッピング」に沿って、計算サーバに提供し戻され得る。例では、管理サーバ及び計算サーバ(複数可)は、ハンドシェイクを実行して、ブロックマッピング及び暗号化キーを取得し得る。管理サーバがブロックマッピング及び暗号化キーを計算サーバ(複数可)に返すための前提条件と同様に、計算サーバの認証が実施され得る。そのため、計算サーバは、ユーザまたはトークンの認証情報を共有し得る。
【0061】
ブロック1000から開始し、エンドユーザデバイスがサーバスタックに対応付けられたコンテンツのクラウドソースと通信を確立すると、スタック内の管理サーバは、通常、特定の初期化機能を実行し、例えば、コンテンツに対する要求のデジタル著作権管理(DRM)態様を検証し、クライアント要求に1つ以上の計算サーバを割り当て、次いでブロック1002にて、マッピングデータ構造にアクセスしてコンテンツが格納されている場所を確認する。従って、ブロック1002では、
図9に示される例などのマッピングデータ構造により、要求されたコンテンツが格納されているSSD、及び要求されたコンテンツを格納しているこれらのSSDのブロック番号が特定され、要求を実行するために、要求に割り当てられた計算サーバ(複数可)に提供される。次に計算サーバは、コンテンツが格納されている場所に関する情報を使用して、コンテンツにアクセスし、要求元のクライアントにストリーミングする。必要に応じて、マッピングデータ構造からの格納場所情報は、要求元クライアントに提供され、要求元クライアントがコンテンツに直接アクセスすることを可能にし得る。
【0062】
より具体的には、ブロック1004にて、割り当てられた計算サーバは、複数のSSDのうち、要求されたコンテンツを格納しておりコンテンツのストリーミング元となるものとして管理サーバにより特定されたSSDを選択する。これは、SSDのうち、コンテンツを格納しているSSDを最初に疑似ランダム的に選択することにより行われ得る、または、後述の非限定的で例示的な負荷分散技法のうちのいずれかを使用して行われ得る。次に、コンテンツは、ブロック1006にて、クライアントにストリーミングされる。最初の疑似ランダム選択プロセスの後に、良好であるとわかっている選択デバイスは、キャッシュされ、将来デフォルトで使用され得ることに、留意されたい。さらに、アイドリング中、計算サーバは、定期的に(例えば30分ごとに)デフォルトのデバイスにpingを送って、今でも作動可能であることを検出し得る、あるいは前もって良好なデバイスを選択し得る。これにより、計算サーバは、自動的に作動不可能なデバイスを検出し、他の良好なデバイスに切り替えるため、障害が生じたデバイスを新たなデバイスにホットスワップすることが促進され得る。
【0063】
判定菱形1008は、割り当てられた計算サーバが、コンテンツのストリーミングを第1のSSDから第2のSSDへシームレスに切り替える負荷分散条件が存在するか否かを判定し得ることを示す。例として、現在ストリーミングを行っているSSDとクライアントとの間のネットワーク輻輳またはレイテンシが閾値を満たす場合、負荷分散条件が存在するとみなされ得る。このような輻輳またはレイテンシの判定は、非限定的な例では、クライアントからのパケットの再送信要求数が閾値を超えるか否か、クライアントから過度の遅延に関する直接レポートが受信されたか否かを、判定することにより決定され得る、またはサーバスタックからクライアントへ送信され戻ってきたテストトーンの測定往復時間が、閾値時間を超えるか否かに基づき得る。さらにまた、特定のSSDに対する入力/出力要求の数が閾値を超える場合、負荷分散条件が存在するとみなされ得る。これらは、負荷分散条件が存在するか否かを判定するための非限定的で例示的な技法を示すに過ぎない。
【0064】
また、判定菱形1010は、例えば、SSDの対応付けられたNVMe-oFインターフェースを通してSSDから送信されているデータが少ししかない、または全くないことを観測することにより示されるように、現在ストリーミングを行っているSSDが作動不可能になったか否かの判定が行われ得ることを示す。現在ストリーミングを行っているデバイスが作動不可能である場合、または判定菱形1008にて負荷分散条件が存在する場合、ロジックは、ブロック1012に進み、マッピングデータ構造により示されるコンテンツを格納している別のドライブに、コンテンツのストリーミングを切り替える。このようにすることで、第1のSSDからクライアントにストリーミングされたコンテンツのブロック数が記録され得、次いで、第2のSSDは、第2のSSD上でコンテンツが格納されている対応する「次」のブロックにアクセスされ得る。例えば、
図9の例示的なマッピングデータ構造を使用すると、SSD#1がクライアントデバイスに対しSSD#1のブロック50までのコンテンツをストリーミングし、その後、負荷分散条件が生じたまたはSSD#1に障害が生じた場合、コンテンツは、SSD#3からストリーミングされるように動的に切り替えられ、SSD#3のブロック450から開始する。
【0065】
このようにして、現在使用しているNVMe対応SSDに障害が生じたという判定に応じて、ストリーミングが第2のNVMe対応SSDに切り替えられて、当該1つのコンテンツはクライアントコンピュータに提供され得、これによりデータ冗長性が提供される。前述の説明から、データの別のコピーがストレージサーバに(及びブロックマッピングに)配置され得るように、SSDの作動不可能状態が、管理サーバなどのこれに限定されないサーバに通知され得ることを、思い出されたい。障害の生じたSSDを交換するように、技術担当者も通知され得る。
【0066】
あるいは、依然として作動可能な第1のNVMe対応SSDで負荷分散条件が満たされるという判定に応じて、それでもなお、ストリーミングが第2のNVMe対応SSDに切り替えられて、当該1つのコンテンツはクライアントコンピュータに提供され得る。
【0067】
非常にレイテンシの影響を受けやすい転送では、輻輳が生じる可能性がある場合、次のような本明細書のアーキテクチャを使用して、負荷分散/冗長性が強化され得ることに留意されたい。計算サーバが、2つのNVMe対応SSDのそれぞれに格納されているコンテンツブロック1~100にアクセスしようとしていると想定する。最初の「N」個のブロック(例えば10個、この例ではブロック1~10)が、第1のNVMe対応SSDからフェッチされ得、コンテンツの次のいくつかのブロック(この例ではブロック11~20)が、第2のNVMe対応SSDからフェッチされ得る。次に、コンテンツブロックの残り(この例では21~100)が、その最初のブロックを要求元の計算サーバに最速で返したSSDから、独占的にフェッチされ得る。拡大解釈すると、NVMe対応SSDのうちの1つが、最初に要求されたブロックをいずれも返さない場合、不足しているブロック並びに残りのブロックは、最初に要求されたブロックを返したSSDからフェッチされる。これにより、アクセスしようとしている最初のSSDのうちの1つが誤作動している場合の一往復分のレイテンシが除去される。
【0068】
単一コンテンツといったコンテンツは、それぞれ複数のサーバスタックの複数のストレージサーバに格納され得、この場合、前述のマッピングデータ構造は、サーバIDと各コンテンツとを相互に関連付け得る。また、計算サーバは、物理SSDと直接通信する代わりに、柔軟性のためにストレージサーバ内でプロセッサが実施する「仮想ドライブ」と通信し得、「仮想ドライブ」が物理SSDからデータを取得する。SSDストレージでは、クライアントへの供給が求められる全てのコンテンツを格納するのに不十分である場合、最も人気のある(最も要求される)コンテンツがストレージサーバのSSDに格納され得、人気の低いコンテンツに対するクライアント呼び出しは、例えば計算サーバまたは管理サーバまたはストレージサーバのプロセッサにより傍受され、人気の低いコンテンツを格納しているマスタストレージ設備に送信され、人気の低いコンテンツはマスタストレージ設備から供給される。
【0069】
本発明の原理は、いくつかの例示的な実施形態を参照して説明されたが、これらは限定を意図するものではなく、本明細書で請求される主題を実施するために、様々な代替的構成が使用されてもよいことが、理解されよう。