IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社ソニー・コンピュータエンタテインメントの特許一覧

特許7522204計算ノードと計算ノードのアレイの中のストレージサーバとの間でのPCIエクスプレスファブリックによる高速ストレージアクセスを提供するネットワークアーキテクチャ
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-16
(45)【発行日】2024-07-24
(54)【発明の名称】計算ノードと計算ノードのアレイの中のストレージサーバとの間でのPCIエクスプレスファブリックによる高速ストレージアクセスを提供するネットワークアーキテクチャ
(51)【国際特許分類】
   G06F 13/28 20060101AFI20240717BHJP
【FI】
G06F13/28 310A
【請求項の数】 19
(21)【出願番号】P 2022549015
(86)(22)【出願日】2021-02-13
(65)【公表番号】
(43)【公表日】2023-06-12
(86)【国際出願番号】 US2021018061
(87)【国際公開番号】W WO2021163646
(87)【国際公開日】2021-08-19
【審査請求日】2023-02-21
(31)【優先権主張番号】62/977,138
(32)【優先日】2020-02-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100099324
【弁理士】
【氏名又は名称】鈴木 正剛
(72)【発明者】
【氏名】ルーロフ ロダリック コーレンブランデル
【審査官】北村 学
(56)【参考文献】
【文献】国際公開第2019/112710(WO,A1)
【文献】特開2008-152786(JP,A)
【文献】特開2006-277033(JP,A)
【文献】米国特許出願公開第2017/0091133(US,A1)
【文献】米国特許出願公開第2017/0102510(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/28
(57)【特許請求の範囲】
【請求項1】
ネットワークアーキテクチャであって、
複数の計算スレッドを含むストリーミングアレイを有し、各計算スレッドは1つまたは複数の計算ノードを有し、
前記ストリーミングアレイのネットワークストレージを有し、
前記ストリーミングアレイの複数の計算ノードから前記ネットワークストレージへの直接的なアクセスを提供するように構成された前記ストリーミングアレイのPCIeファブリックを有し、前記PCIeファブリックは、1つまたは複数のPCIeスイッチを有し、各PCIeスイッチは対応する計算スレッドの対応する計算ノードに通信可能に結合されて前記ネットワークストレージに通信可能に結合され、
前記ネットワークストレージは、前記ストリーミングアレイの前記複数の計算ノードによって共有され、
イーサネットファブリックと、
前記イーサネットファブリックを介して前記複数の計算ノードからクラスタスイッチへの通信を提供するように構成されたネットワークスイッチと、をさらに有し、
前記イーサネットファブリックは、前記ネットワークスイッチを前記ネットワークストレージ及び前記複数の計算ノードに通信可能に結合する、ネットワークアーキテクチャ。
【請求項2】
前記1つまたは複数のPCIeスイッチのそれぞれは、前記複数の計算スレッド及び対応する計算ノードのためのデータ及び管理情報をストリーミングするために、対応する計算スレッドの対応する計算ノードからの通信を提供する、請求項1に記載のネットワークアーキテクチャ。
【請求項3】
前記クラスタスイッチは、別のストリーミングアレイの別のネットワークスイッチに通信可能に結合され、
前記クラスタスイッチは、通信ネットワークに通信可能に結合されて、前記ネットワークアーキテクチャの外部にあるネットワーク通信を提供し、
前記クラスタスイッチは、複数のゲームアプリケーションを格納するように構成された分散ストレージに通信可能に結合される、請求項に記載のネットワークアーキテクチャ。
【請求項4】
1つまたは複数のストリーミングアレイを有し、各ストリーミングアレイは独立して動作可能であり、かつ、対応するネットワークストレージ、対応するPCIeファブリック、対応するイーサネットファブリック、及び対応するネットワークスイッチを含むラックアセンブリをさらに有する、請求項に記載のネットワークアーキテクチャ。
【請求項5】
前記ネットワークストレージは、
少なくとも1つのランダムアクセスメモリ(RAM)ドライブと、
少なくとも1つの不揮発性メモリエクスプレス(NVMe)ドライブと、を有する、請求項1に記載のネットワークアーキテクチャ。
【請求項6】
各計算ノードは、複数のゲームアプリケーションの1つまたは複数のインスタンスを実行するように構成される、請求項1に記載のネットワークアーキテクチャ。
【請求項7】
ネットワークアーキテクチャであって、
複数の計算スレッドを含むストリーミングアレイを有し、各計算スレッドは1つまたは複数の計算ノードを有し、
前記ストリーミングアレイのネットワークストレージを有し、
前記ストリーミングアレイの複数の計算ノードから前記ネットワークストレージへの直接的なアクセスを提供するように構成された前記ストリーミングアレイのPCIeファブリックを有し、前記PCIeファブリックは、1つまたは複数のPCIeスイッチを有し、各PCIeスイッチは対応する計算スレッドの対応する計算ノードに通信可能に結合されて前記ネットワークストレージに通信可能に結合され、
前記ネットワークストレージは、前記ストリーミングアレイの前記複数の計算ノードによって共有され、
前記複数の計算スレッドのそれぞれが、
対応する計算ノード及び対応するPCIeスイッチに通信可能に結合されたスレッドレベルのPCIeスイッチを含み、
前記スレッドレベルのPCIeスイッチは、前記対応するPCIeスイッチを介して、前記PCIeファブリックにより、前記対応する計算ノードと前記ネットワークストレージとの間の通信を提供するように構成される、ネットワークアーキテクチャ。
【請求項8】
前記複数の計算スレッドのそれぞれが、
対応するスレッドの1つまたは複数のコンポーネントを制御するように構成されたボード管理コントローラ(BMC)を含む、請求項1に記載のネットワークアーキテクチャ。
【請求項9】
ネットワークアーキテクチャであって、
複数の計算スレッドを含むストリーミングアレイを有し、各計算スレッドは1つまたは複数の計算ノードを有し、
前記ストリーミングアレイのネットワークストレージを有し、
前記ストリーミングアレイの複数の計算ノードから前記ネットワークストレージへの直接的なアクセスを提供するように構成された前記ストリーミングアレイのPCIeファブリックを有し、前記PCIeファブリックは、1つまたは複数のPCIeスイッチを有し、各PCIeスイッチは対応する計算スレッドの対応する計算ノードに通信可能に結合されて前記ネットワークストレージに通信可能に結合され、
前記ネットワークストレージは、前記ストリーミングアレイの前記複数の計算ノードによって共有され、
前記ネットワークストレージは、ゲームアプリケーションの読み取り専用ゲームコンテンツを格納し、前記複数の計算スレッドの1つまたは複数の計算ノードで前記ゲームアプリケーションを実行する計算インスタンス間で、前記読み取り専用ゲームコンテンツを共有できるようにする、ネットワークアーキテクチャ。
【請求項10】
ネットワークアーキテクチャであって、
クラスタスイッチを有し、
複数のストリーミングアレイを有し、対応するストリーミングアレイが、
複数の計算スレッドを有し、各計算スレッドは1つまたは複数の計算ノードを含み、
ネットワークストレージを有し、
前記対応するストリーミングアレイの複数の計算ノードから前記ネットワークストレージへの直接的なアクセスを提供するように構成されたPCIeファブリックを有し、前記PCIeファブリックは、少なくとも1つのPCIeスイッチを有し、各PCIeスイッチは、対応する計算スレッドの対応する計算ノードに通信可能に結合されて前記ネットワークストレージに通信可能に結合され、前記ネットワークストレージは、前記対応するストリーミングアレイの前記複数の計算ノードによって共有され、
前記複数のストリーミングアレイの計算ノードに結合された複数のネットワークスイッチを有し、各ネットワークスイッチは、前記対応するストリーミングアレイの計算ノードから前記クラスタスイッチへの通信を提供するように構成される、ネットワークアーキテクチャ。
【請求項11】
対応するストリーミングアレイの前記1つまたは複数のPCIeスイッチのそれぞれは、前記対応する計算スレッド及び対応する計算ノードのためのデータ及び管理情報をストリーミングするために、対応する計算スレッドの対応する計算ノードからの通信を提供する、請求項10に記載のネットワークアーキテクチャ。
【請求項12】
前記各ストリーミングアレイは、
イーサネットファブリックと、
前記イーサネットファブリックを介して前記複数の計算ノードからクラスタスイッチへの通信を提供するように構成されたネットワークスイッチと、を有し、
前記イーサネットファブリックは、前記ネットワークスイッチを前記ネットワークストレージ及び前記複数の計算ノードに通信可能に結合し、
前記クラスタスイッチは、別のストリーミングアレイの別のネットワークスイッチに通信可能に結合される、請求項10に記載のネットワークアーキテクチャ。
【請求項13】
1つまたは複数のストリーミングアレイを有し、各ストリーミングアレイは独立して動作可能であり、かつ対応するネットワークストレージ、対応するPCIeファブリック、対応するイーサネットファブリック、及び対応するネットワークスイッチを含むラックアセンブリをさらに含む、請求項12に記載のネットワークアーキテクチャ。
【請求項14】
前記クラスタスイッチは、通信ネットワークに通信可能に結合されて、前記ネットワークアーキテクチャの外部にあるネットワーク通信を提供し、
前記クラスタスイッチは、複数のゲームアプリケーションを格納するように構成された分散ストレージに通信可能に結合される、請求項12に記載のネットワークアーキテクチャ。
【請求項15】
前記ネットワークストレージは、
少なくとも1つのランダムアクセスメモリ(RAM)ドライブと、
少なくとも1つの不揮発性メモリエクスプレス(NVMe)ドライブと、を有する、請求項10に記載のネットワークアーキテクチャ。
【請求項16】
各計算ノードは、複数のゲームアプリケーションの1つまたは複数のインスタンスを実行するように構成される、請求項10に記載のネットワークアーキテクチャ。
【請求項17】
対応するストリーミングアレイの前記複数の計算スレッドのそれぞれが、
対応する計算ノード及び対応するPCIeスイッチに通信可能に結合されたスレッドレベルのPCIeスイッチを有し、
前記スレッドレベルのPCIeスイッチは、前記対応するPCIeスイッチを介して、前記PCIeファブリックにより、前記対応する計算ノードと前記ネットワークストレージとの間の通信を提供するように構成される、請求項10に記載のネットワークアーキテクチャ。
【請求項18】
対応するストリーミングアレイの前記複数の計算スレッドのそれぞれが、
対応するスレッドの1つまたは複数のコンポーネントを制御するように構成されたボード管理コントローラ(BMC)を有する、請求項10に記載のネットワークアーキテクチャ。
【請求項19】
対応するストリーミングアレイの前記ネットワークストレージは、前記対応するストリーミングアレイの前記複数の計算スレッドの1つまたは複数の計算ノードでゲームアプリケーションを実行する計算インスタンス間で、前記ゲームアプリケーションの読み取り専用ゲームコンテンツを共有できるように、前記読み取り専用ゲームコンテンツを格納する、請求項10に記載のネットワークアーキテクチャ。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ネットワークストレージに関し、より具体的には、PCI-エクスプレスを使用するラックアセンブリのストリーミングアレイの計算スレッドに位置付けられた計算ノードへの高速ネットワークストレージアクセスに関する。
【背景技術】
【0002】
近年、クラウドゲームサーバとネットワークを介して接続されたクライアントとの間でストリーミング形式のオンラインまたはクラウドゲームを可能にするオンラインサービスが継続的に推進されている。ストリーミング形式は、オンデマンドのゲームタイトルの利用可能性、より複雑なゲームが実行できる、マルチプレイヤーゲームのためプレイヤー間でネットワークが築ける、プレイヤー間の資産が共有できる、プレイヤー及び/または観客間のインスタントエクスペリエンスの共有できる、友人がフレンドプレイビデオゲームを見ることが可能、友人がプレイ中のゲームに別の友人を参加させることができる等の理由によって、いっそう人気が高まっている。
【0003】
残念ながら、需要は、ネットワーク接続の機能の限界にまで押し上げられてもいる。例えば、前世代のストリーミングネットワークアーキテクチャは、ギガビットイーサネット通信接続(例えば、毎秒40ギガビットのイーサネット接続)を使用してネットワークストレージを提供していた。しかし、新世代のストリーミングネットワークアーキテクチャでは、より優れた(より高速な)帯域幅パフォーマンス(ギガバイトの接続など)が必要である。
【0004】
本開示の実施形態は、このような背景の下になされたものである。
【発明の概要】
【0005】
本開示の実施形態は、計算ノードごとの毎秒4ギガバイト(GB/s)を超えるネットワークストレージ帯域幅(アクセスなど)速度を提供できる、ラックアセンブリ内などのネットワークストレージへの高速アクセスを提供することに関する。
【0006】
本開示の実施形態は、ネットワークアーキテクチャを開示する。ネットワークアーキテクチャは、複数の計算スレッドを含むストリーミングアレイを含み、各計算スレッドは1つまたは複数の計算ノードを含む。ネットワークアーキテクチャは、ストリーミングアレイのネットワークストレージを含む。ネットワークアーキテクチャは、ストリーミングアレイの複数の計算ノードからネットワークストレージへの直接的なアクセスを提供するように構成されたストリーミングアレイのPCIeファブリックを含む。PCIeファブリックは、1つまたは複数のアレイレベルのPCIeスイッチを含み、各アレイレベルのPCIeスイッチは、対応する計算スレッドの対応する計算ノードに通信可能に結合され、ネットワークストレージに通信可能に結合される。ネットワークストレージは、ストリーミングアレイの複数の計算ノードによって共有される。
【0007】
本開示の実施形態は、ネットワークアーキテクチャを開示する。ネットワークアーキテクチャは、クラスタスイッチと複数のストリーミングアレイを含む。対応するストリーミングアレイは複数の計算スレッドを含み、各計算スレッドは1つまたは複数の計算ノードを含む。対応するストリーミングアレイには、ネットワークストレージが含まれる。対応するストリーミングアレイには、対応するストリーミングアレイの複数の計算ノードからネットワークストレージへの直接的なアクセスを提供するように構成されたPCIeファブリックが含まれる。PCIeファブリックは、少なくとも1つのアレイレベルのPCIeスイッチを含み、各アレイレベルのPCIeスイッチは、対応する計算スレッドの対応する計算ノードに通信可能に結合され、ネットワークストレージに通信可能に結合される。ネットワークストレージは、対応するストリーミングアレイの複数の計算ノードによって共有される。ネットワークアーキテクチャは、複数のストリーミングアレイの計算ノードに結合された複数のネットワークスイッチを含み、各ネットワークスイッチは、対応するストリーミングアレイの計算ノードからクラスタスイッチへの通信を提供するように構成される。
【0008】
本開示の実施形態は、ネットワークアーキテクチャを開示する。ネットワークアーキテクチャには、ネットワークストレージが含まれる。ネットワークアーキテクチャは複数のストリーミングアレイを含み、各ストリーミングアレイは複数の計算スレッドを含み、各計算スレッドは1つまたは複数の計算ノードを含む。ネットワークアーキテクチャは、複数のストリーミングアレイのそれぞれの計算ノードからネットワークストレージへの直接的なアクセスを提供するように構成されたPCIエクスプレス(PCIe)ファブリックを含む。PCIeファブリックは、複数のアレイレベルのPCIeスイッチを含み、各アレイレベルのPCIeスイッチ は、対応するストリーミングアレイの計算スレッドの計算ノードに通信可能に結合され、ストレージサーバに通信可能に結合される。ネットワークストレージは、複数のストリーミングアレイによって共有される。
【0009】
本開示の実施形態は、ネットワークアーキテクチャを開示する。ネットワークアーキテクチャには、ネットワークストレージが含まれる。ネットワークアーキテクチャは、複数の計算スレッドを含み、各ストリーミングアレイは複数の計算スレッドを含み、各計算スレッドは1つまたは複数の計算ノードを含む。ネットワークアーキテクチャは、複数のストリーミングアレイのそれぞれの計算ノードからネットワークストレージへの直接アクセスを提供するように構成されたPCIエクスプレス(PCIe)ファブリックを含む。PCIeファブリックは、複数のアレイレベルのPCIeスイッチを含み、各アレイレベルのPCIeスイッチは、対応するストリーミングアレイの計算スレッドの計算ノードに通信可能に結合され、ストレージサーバに通信可能に結合される。ネットワークアーキテクチャは、計算スレッド及び計算ノード管理情報をストリーミングするために、複数のストリーミングアレイの計算スレッドの計算ノードをネットワークストレージに通信可能に結合するように構成されたイーサネットファブリックを含む。ネットワークストレージは、複数のストリーミングアレイによって共有される。
【0010】
本開示の他の態様は、本開示の原理を例として示す、添付図面を併用して以下の詳細な説明から明らかになるであろう。
【0011】
本開示は、添付図面と併せて、以下の詳細な説明を参照することにより、最も良く理解することができる。
【図面の簡単な説明】
【0012】
図1】本開示の一実施形態による、1つまたは複数のデータセンターに位置付けられた1つまたは複数の計算ノード間でネットワークを介してゲームを提供するためのゲームクラウドシステムの図である。
図2A】本開示の一実施形態による、ゲームクラウドシステムの代表的なデータセンターにおける複数の計算ノードを含む複数のラックアセンブリの図である。
図2B】本開示の一実施形態による、ゲームクラウドシステムの代表的なデータセンターに複数の計算ノードを含む複数のラックアセンブリの図であり、各ネットワークストレージは計算ノードの対応するアレイによってアクセス可能である。
図2C】本開示の一実施形態による、ゲームクラウドシステムの代表的なデータセンターにおけるラックアセンブリのクラスタの図である。
図3A】本開示の一実施形態による、PCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリの図であり、ネットワークストレージは、計算ノードの1つまたは複数のアレイによってアクセス可能である。
図3B】本開示の一実施形態による、PCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリの中に位置付けられた複数の計算ノードを含むストリーミングアレイの図である。
図4A】本開示の一実施形態による、PCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリの図であり、それにおいて各ネットワークストレージは、計算ノードの対応するアレイによってアクセス可能である。
図4B】本開示の一実施形態による、PCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリの中のPCIeネットワークを示し、それにおいて各ネットワークストレージは、計算ノードの対応するアレイによってアクセス可能である。
図4C】本開示の一実施形態による、PCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリの中に位置付けられた複数の計算ノードを含むストリーミングアレイの図であり、各ネットワークストレージは計算ノードの対応するアレイによってアクセス可能である。
図5A】本開示の一実施形態による、PCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリの中に位置付けられた複数の計算ノードを含む計算スレッドの図であり、ネットワークストレージは計算ノードの1つまたは複数のアレイによってアクセス可能である。
図5B】本開示の一実施形態による、PCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリ内に位置付けられた複数の計算ノードを含む計算スレッドの図であり、各計算ノードは、ネットワークへのアクセス用に構成されるネットワークインターフェースカード(NIC)を含む。
図5C】本開示の一実施形態による、ネットワークにアクセスするために1つ以上の計算ノードによりアクセス可能な少なくとも1つのネットワークインターフェースカード(NIC)を含むPCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリ内に位置付けられた複数の計算ノードを含む計算スレッドの図であり、各ネットワークストレージが、計算ノードの対応するアレイによってアクセス可能である。
図6】本開示の一実施形態による、PCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリの中に位置付けられたスレッドレベルPCIeスイッチの図である。
図7A】本開示の一実施形態による、複数の計算ノードとアレイのネットワークストレージとの間のデータフローの図であり、メモリアクセスは、ネットワークストレージのストレージドライブのダイレクトメモリアクセス(DMA)エンジンによって駆動される。
図7B】本開示の一実施形態による、複数の計算ノードとアレイのネットワークストレージとの間のデータフローの図であり、メモリアクセスは、ネットワークストレージのストレージドライブとは別個のDMAエンジンによって駆動される。
図8】本開示の様々な実施形態の態様を実行するために使用することができる例示的なデバイスのコンポーネントを示す。
【発明を実施するための形態】
【0013】
以下の詳細な説明は、例示の目的で多くの特定の詳細を含むが、当業者であれば、以下の詳細に対する多くの変形及び変更が本開示の範囲内にあることを理解するであろう。したがって、以下で説明される本開示の態様は、この説明に続く特許請求の範囲への一般性を失うことなく、また限定を課すことなく示される。
【0014】
一般的に言えば、本開示の実施形態は、不揮発性メモリエクスプレス(NVMe:Non-Volatile Memory express)レイテンシでの計算ノード(ラックアセンブリなど)ごとの毎秒4ギガバイト(GB/s)のネットワークストレージ帯域幅(アクセスなど)を超える提供ができる、ラックアセンブリ内などのネットワークストレージへの高速なアクセスを提供する。
【0015】
上記の様々な実施形態の全般的な理解により、これより様々な図面を参照して実施形態の例の詳細を説明する。
【0016】
本明細書全体を通して、「アプリケーション」または「ゲーム」または「ビデオゲーム」または「ゲームアプリケーション」または「ゲームタイトル」に対する言及は、入力コマンドの実行を通して指示されるいずれかのタイプのインタラクティブアプリケーションを表現することを意味する。例示のみを目的として、インタラクティブアプリケーションは、ゲーミング、文書処理、ビデオ処理、ビデオゲーム処理などのためのアプリケーションを含む。さらに、上で導入されている用語は、相互に交換可能である。
【0017】
図1は、本開示の一実施形態による、1つまたは複数のデータセンターに位置付けられた1つまたは複数の計算ノード間でネットワーク150を介してゲームを提供するためのシステム100の図である。本開示の一実施形態によれば、システムは、1つまたは複数のクラウドゲームサーバ間のネットワークを介してゲームを提供するように構成され、より具体的には、計算ノードから、ラックアセンブリ内などのネットワークストレージに高速アクセスするように構成される。クラウドゲームでは、サーバでビデオゲームを実行して、ゲームでレンダリングされたビデオフレームを生成し、次いでそれをクライアントに送信して表示する。
【0018】
クラウドゲームは、様々な実施形態(例えば、クラウドゲーム環境またはスタンドアロンシステム内)で、物理マシン(例えば、中央処理装置--CPU--及びグラフィックス処理装置--GPU)、または仮想マシン、または両方の組み合わせを使用して実行できるということも理解される。例えば、仮想マシン(例えば、インスタンス)は、複数のCPU、メモリモジュール、GPU、ネットワークインターフェース、通信コンポーネントなどのハードウェア層の1つまたは複数のコンポーネントを利用するホストハードウェア(例えば、データセンターに位置付けられている)のハイパーバイザーを使用して作成することができる。
これらの物理リソースは、CPUのラック、GPUのラック、メモリのラックなどのラックに配置でき、それにおいてラック内の物理リソースには、インスタンスに使用されるコンポーネントの組み立てとアクセスのためのファブリックを促進するトップオブラックスイッチを使用してアクセスできる(インスタンスの仮想化されたコンポーネントを構築するときなど)。通常、ハイパーバイザーは、仮想リソースで構成された複数のインスタンスの複数のゲストオペレーティングシステムを提示できる。すなわち、オペレーティングシステムのそれぞれは、1つまたは複数のハードウェアリソース(例えば、対応するデータセンターに位置付けられている)によってサポートされる仮想化されたリソースの対応するセットで構成され得る。
例えば、各オペレーティングシステムは、仮想CPU、複数の仮想GPU、仮想メモリ、仮想化された通信コンポーネントなどでサポートされる場合がある。さらに、レイテンシを短縮するようにあるデータセンターから別のデータセンターに転送される場合があるインスタンスの構成。ユーザまたはゲームに対して定義された即時使用は、ユーザのゲームセッションを保存するときに使用できる。即時使用は、ゲームセッション用のビデオフレームの高速レンダリングを最適化するために、本明細書で説明する任意の数の構成を含むことができる。一実施形態では、ゲームまたはユーザに対して定義された即時使用は、構成可能な設定としてデータセンター間で転送することができる。即時使用設定を転送できることにより、ユーザが異なる地理的な位置からゲームをプレイするために接続する場合に、データセンターからデータセンターへのゲームプレイの効率的な移行が可能になる。
【0019】
システム100は、1つまたは複数のデータセンター(例えば、データセンター1からN)を通じて実装されるゲームクラウドシステム190を含む。図示のように、ゲームクラウドシステム190のインスタンスは、管理機能を提供するデータセンターNに位置付けることができ、それにおいてゲームクラウドシステム190の管理機能は、各データセンターでゲームクラウドシステム190の複数のインスタンスを通じて分散させることができる。一部の実施態様では、ゲームクラウドシステム管理機能は、データセンターのいずれかの外部に位置付けられる場合がある。
【0020】
そのゲームクラウドシステム190は、クライアントデバイス(例えば、1~N)のそれぞれを対応するデータセンター内の対応するリソースに割り当てるように構成されたアサイナ191を含む。特に、クライアントデバイス110がゲームクラウドシステム190にログインするとき、クライアントデバイス110は、データセンターNでゲームクラウドシステム109のインスタンスと接続されてもよく、データセンターNはクライアントデバイス110に地理的に最も近くてもよい。アサイナ191は、診断テストを実行して、クライアントデバイス110への利用可能な送信及び受信帯域幅を決定することができる。テストに基づいて、アサイナ191は、リソースをクライアントデバイス110に非常に特異的に割り当てることができる。例えば、アサイナ191は、特定のデータセンターをクライアントデバイス110に割り当てることができる。
さらに、アサイナ191は、特定の計算スレッド、特定のストリーミングアレイ、特定のラックアセンブリの特定の計算ノードをクライアントデバイス110に割り当てることができる。割り当ては、計算ノードで利用可能なアセット(ゲームなど)の知識に基づいて実行され得る。以前は、クライアントデバイスは一般的にデータセンターに割り当てられており、ラックアセンブリにはそれ以上割り当てられていなかった。このようにすると、アサイナ191は、計算集約型の特定のゲームアプリケーションの実行を要求しているクライアントデバイスを、計算集約型アプリケーションを実行していない可能性のある計算ノードに割り当てることができる。さらに、クライアントによって要求された計算集約型ゲームアプリケーションの割り当ての負荷管理は、アサイナ191で実行され得る。例えば、短期間に要求されている同じ計算集約型ゲームアプリケーションは、特定の計算ノード、計算スレッド及び/またはラックアセンブリの負荷を軽減するために、1つのラックアセンブリまたは異なるラックアセンブリ内の異なる計算ノードに分散される場合がある。
【0021】
いくつかの実施形態では、割り当ては、機械学習に基づいて実行され得る。特に、リソースの需要は、特定のデータセンターとそれに対応するリソースについて予測される場合がある。例えば、データセンターが計算集約型ゲームアプリケーションを実行する多くのクライアントをすぐに処理することが予測できる場合、アサイナ191はその知識についてクライアントデバイス110を割り当て、そのリソースの全能力を現在利用していない可能性のあるリソースを割り当てることができる。別のケースでは、アサイナ191は、データセンターNでの負荷の増加を見越して、クライアントデバイス110を、データセンターNのゲームクラウドシステム190から、データセンター3で利用可能なリソースに切り替えることができる。
さらに、未来のクライアントは、リソースの負荷と需要が、ゲームクラウドシステム全体に、複数のデータセンターに亘り、複数のラックアセンブリに亘り、複数の計算スレッドに亘り、及び/または複数の計算ノードに亘り分散され得るように、分散された方法でリソースに割り当てられることができる。例えば、クライアントデバイス110は、データセンターN(例えばパス1を介して)及びデータセンター3(例えばパス2を介して)の両方のゲームクラウドシステムからリソースを割り当てられ得る。
【0022】
クライアントデバイス110が、対応するストリーミングアレイの対応する計算スレッドの特定の計算ノードに割り当てられると、クライアントデバイス110は、ネットワークを介して対応するデータセンターに接続する。すなわち、クライアントデバイス110は、データセンター3など、割り当てを実行するデータセンターとは異なるデータセンターと通信し得る。
【0023】
システム100は、ゲームクラウドシステム190を介してゲームを提供し、本開示の一実施形態によれば、ゲームは、ゲームをプレイしている対応するユーザのクライアントデバイス(例えば、シンクライアント)からリモートで実行されている。システム100は、シングルプレイヤーモードまたはマルチプレイヤーモードのいずれかで、ネットワーク150を介して、クラウドゲームネットワークまたはゲームクラウドシステム190により、1つまたは複数のゲームをプレイする1人または複数のユーザに、ゲームのコントロールをもたらすことができる。いくつかの実施形態において、クラウドゲームネットワークまたはゲームクラウドシステム190は、ホストマシンのハイパーバイザーで実行する複数の仮想マシン(VM)を含むことができ、1つ以上の仮想マシンは、ホストのハイパーバイザーに利用可能であるハードウェアリソースを利用するゲームプロセッサモジュールを実行するように構成される。ネットワーク150は、1つまたは複数の通信技術を含み得る。いくつかの実施形態では、ネットワーク150は、高度な無線通信システムを有する第5世代(5G)ネットワーク技術を含み得る。
【0024】
いくつかの実施形態では、通信は、無線技術を使用して促進され得る。そのような技術には、例えば、5G無線通信技術が含まれ得る。5Gは、セルラーネットワークテクノロジーの第5世代である。5Gネットワークはデジタルセルラーネットワークであり、プロバイダーがカバーするサービスエリアはセルと呼ばれる小さな地理的エリアに分割されている。音と画像を表すアナログ信号は、電話でデジタル化され、アナログ-デジタルコンバータによって変換され、ビットのストリームとして送信される。
セル内のすべての5Gワイヤレスデバイスは、他のセルで再利用される周波数のプールからトランシーバによって割り当てられた周波数チャネルを介して、セル内のローカルアンテナアレイ及び低電力自動トランシーバ(送信機及び受信機)と電波で通信する。ローカルアンテナは、高帯域幅光ファイバまたは無線バックホール接続によって、電話網及びインターネットに接続される。他のセルネットワークと同様に、あるセルから別のセルに移動するモバイルデバイスは、新しいセルに自動的に転送される。5Gネットワークは単なる一例のタイプの通信ネットワークであり、本開示の実施形態は、5Gに続く後の世代の有線または無線技術と同様に、前世代の無線または有線通信を利用することができることを理解されたい。
【0025】
図示のように、ゲームクラウドシステム190を含むシステム100は、複数のゲームアプリケーションへのアクセスを提供することができる。特に、クライアントデバイスのそれぞれは、クラウドゲームネットワークからの異なるゲームアプリケーションへのアクセスを要求している可能性がある。例えば、ゲームクラウドシステム190は、対応するゲームアプリケーションを実行するために1つ以上のホストで実行される1つ以上の仮想マシンとして構成され得る1つ以上のゲームサーバを提供し得る。例えば、ゲームサーバは、ユーザのゲームアプリケーションのインスタンスをインスタンス化するゲームプロセッサをサポートする仮想マシンを管理し得る。よって、複数の仮想マシンに対応付けられた1つまたは複数のゲームサーバの複数のゲームプロセッサは、複数のユーザのゲームプレイに関連付けられた1つまたは複数のゲームアプリケーションの複数のインスタンスを実行するように構成される。
そのようにして、バックエンドサーバサポートは、複数のゲームアプリケーションのゲームプレイのメディア(例えばビデオ、オーディオなど)のストリーミングを、対応する複数のユーザに提供する。つまり、ゲームクラウドシステム190のゲームサーバは、ネットワーク150を介して、データ(例えば、対応するゲームプレイのレンダリングされた画像及び/またはフレーム)を対応するクライアントデバイスにストリーミング返信するように構成される。そのようにして、クライアントデバイスによって受信されて転送されたコントローラの入力に応答して、計算の複雑なゲームアプリケーションが、バックエンドサーバで実行し続けることができる。各サーバは、画像及び/またはフレームをレンダリングし、次いでそれらを符号化(例えば圧縮)して、対応するクライアントデバイスにストリーミングして表示することが可能である。
【0026】
一実施形態では、ゲームクラウドシステム190のクラウドゲームネットワークは、分散型ゲームサーバシステム及び/またはアーキテクチャである。具体的には、ゲームロジックを実行する分散型ゲームエンジンが、対応するゲームアプリケーションの対応するインスタンスとして構成されている。一般に、分散型ゲームエンジンは、ゲームエンジンの各機能を取り込み、それらの機能を分散させて多数の処理エンティティによって実行する。個々の機能は、さらに1つ以上の処理エンティティに亘って分散させることができる。処理エンティティは、物理ハードウェア、及び/または仮想コンポーネントまたは仮想マシン、及び/または仮想コンテナなど、様々な構成で構成され得、それにおいてコンテナは、仮想化されたオペレーティングシステム上で動作するゲームアプリケーションのインスタンスを仮想化するものであるため、仮想マシンとは異なる。
処理エンティティは、クラウドゲームネットワークまたはゲームクラウドシステム190の1つ以上のサーバ(計算ノード)上のサーバ及びその基礎となるハードウェアを利用し、及び/またはそれらに依拠してもよく、サーバは1つ以上のラック上に位置付けられ得る。種々の処理エンティティに対するそれらの機能の実行の協調、割り当て、及び管理は、分散同期層によって行われる。そのようにして、それらの機能の実行が分散同期層によって制御されて、プレイヤーによるコントローラ入力に応答して、ゲームアプリケーション用のメディア(例えばビデオフレーム、オーディオなど)を生成することが可能になる。分散同期層は、重要なゲームエンジンコンポーネント/機能が、より効率的な処理のために分散されて再構築されるように、分散処理エンティティ全体で(例えば、負荷分散を介して)それらの機能を効率的に実行することが可能である。
【0027】
図2Aは、本開示の一実施形態による、ゲームクラウドシステムの代表的なデータセンター200Aにおける複数の計算ノードを含む複数のラックアセンブリ210の図である。例えば、北米、ヨーロッパ、日本など、世界中に複数のデータセンターが分散し得る。
【0028】
データセンター200は、複数のラックアセンブリ220(例えば、ラックアセンブリ220Aから220N)を含む。ラックアセンブリのそれぞれは、対応するネットワークストレージ及び複数の計算スレッドを含む。例えば、代表的なラックアセンブリ220Nは、ネットワークストレージ211A及び複数の計算スレッド230(例えば、スレッド230Aから230N)を含む。他のラックアセンブリは、変更を加えてまたは加えずに同様に構成することができる。特に、計算スレッドのそれぞれは、ハードウェアリソース(例えば、プロセッサ、CPU、GPUなど)を提供する1つまたは複数の計算ノードを含む。例えば、ラックアセンブリ220Nの複数の計算スレッド230における計算スレッド230Nは、4つの計算ノードを含むように示されているが、ラックアセンブリは1つまたは複数の計算ノードを含み得ることが理解される。各ラックアセンブリは、対応するデータセンターの管理用に構成された管理サーバとの通信を提供するように構成されたクラスタスイッチに結合される。例えば、ラックアセンブリ220Nはクラスタスイッチ240Nに結合される。クラスタスイッチは、外部通信ネットワーク(インターネットなど)への通信も提供する。
【0029】
各ラックアセンブリは、ラックアセンブリ内など、対応するネットワークストレージへの高速アクセスを提供する。この高速アクセスは、計算ノードと対応するネットワークストレージ間の直接アクセスを提供するPCIeファブリック(PCI-Express Fabric)を介して提供される。例えば、ラックアセンブリ220Nにおいて、高速アクセスは、対応する計算スレッドの特定の計算ノードと対応するネットワークストレージ(例えば、ストレージ211A)との間のデータパス201を提供するように構成される。特に、PCIeファブリックは不揮発性メモリエクスプレス(NVMe)レイテンシでの計算ノード(例えば、ラックアセンブリの)ごとの毎秒4ギガバイト(GB/s)ネットワークストレージ帯域幅(アクセスなど)を超えて提供できる。また、制御パス202は、ネットワークストレージ210と計算ノードのそれぞれとの間で制御及び/または管理情報を通信するために構成される。
【0030】
示されるように、データセンター200の管理サーバ210は、アサイナ191(図1に示される)と通信して、リソースをクライアントデバイス110に割り当てる。特に、管理サーバ210は、ゲームクラウドシステム190’のインスタンスと連携し、ゲームクラウドシステム190の最初のインスタンス(例えば、図1の)と連携して、リソースをクライアントデバイス110に割り当てることができる。実施形態では、割り当ては、どのリソースと帯域幅が必要であるかということ、及びそれがデータセンターに存在することを知るなど、アセットの認識に基づいて実行される。したがって、本開示の実施形態は、説明のために、対応するラックアセンブリ220Bの対応する計算スレッド231の特定の計算ノード232にクライアントデバイス110を割り当てるように構成される。
【0031】
ストリーミングラックアセンブリは、計算ノードの周囲に中心化され、これは、ゲームアプリケーション、ビデオゲームを実行し、及び/または1つまたは複数のクライアントへゲームセッションのオーディオ/ビデオをストリーミングする。さらに、各ラックアセンブリ内で、ネットワークストレージを提供するストレージサーバにゲームコンテンツを格納することができる。ネットワークストレージには、ネットワークファイルシステム(NFS:network file system)ベースのネットワークストレージによって多くの計算ノードにサービスを提供するために、大量のストレージと高速ネットワークが装備されている。
【0032】
図2Bは、本開示の一実施形態による、ゲームクラウドシステムの代表的なデータセンター200Bに複数の計算ノードを含む複数のラックアセンブリ221の図であり、各ネットワークストレージは計算ノードの対応するアレイによってアクセス可能である。データセンター200Bはデータセンター200Aと類似しており、同様の番号が付けられたコンポーネントは同様の機能を有する。しかし、データセンター200Bは、データセンター200Aのラックアセンブリとは異なる構成のラックアセンブリを有し、以下に説明するように、単一のストリーミングアレイの計算ノードによってネットワークストレージがアクセスされる。
【0033】
データセンター200は、複数のラックアセンブリ221(例えば、ラックアセンブリ221Aから221N)を含む。ラックアセンブリのそれぞれは、1つまたは複数のストリーミングアレイを含み、各ストリーミングアレイは、対応するネットワークストレージ及び複数の計算スレッドを含む。例えば、代表的なラックアセンブリ221Nは、ストリーミングアレイ225Aから225Nを含む。一実施形態では、ラックアセンブリ221Nは2つのストリーミングアレイを含み、各ストリーミングアレイはネットワークストレージ及び複数の計算スレッドを含む。例えば、ストリーミングアレイ225Nは、ネットワークストレージ211B-Nにアクセスする複数の計算スレッド235を含む。特に、計算スレッドのそれぞれは、ハードウェアリソース(例えば、プロセッサ、CPU、GPUなど)を備える1つまたは複数の計算ノードを含む。例えば、ストリーミングアレイ225Nの計算スレッド235Xは4つの計算ノードを含むように示されているが、ラックアセンブリは1つまたは複数の計算ノードを含むことができることが理解される。
【0034】
各ラックアセンブリは、前述のように、対応するデータセンターの管理用に構成された管理サーバとの通信を提供するように構成されたクラスタスイッチに結合される。例えば、ラックアセンブリ221Nはクラスタスイッチ240Nに結合される。クラスタスイッチはまた、他のラックアセンブリへの通信(例えば、対応するクラスタスイッチを介して)、及び外部通信ネットワーク(例えば、インターネットなど)への通信を提供する。
【0035】
対応するラックアセンブリの各ストリーミングアレイは、前述のように、対応するネットワークストレージへの高速アクセスを提供する。この高速アクセスは、計算ノードと対応するネットワークストレージ間の直接アクセスを提供するPCIeファブリックを介して提供される。計算ノードは、ゲームアプリケーションを実行し、ゲームセッションのオーディオ/動画を1つまたは複数のクライアントにストリーミングし得、それにおいて、対応するネットワークストレージ(例えば、ストレージサーバ)が、ゲームアプリケーション、ゲームデータ、及びユーザデータを保持する。例えば、ラックアセンブリ221Nのストリーミングアレイ225Nにおいて、高速アクセスは、対応する計算スレッドの特定の計算ノードと対応するネットワークストレージ(例えば、ストレージ211B-N)との間のデータ及びコントロールパス201Bを提供するように構成される。また、パス201Bは、ネットワークストレージ211B-Nとストリーミングアレイ225Nの計算ノードのそれぞれとの間の制御及び/または管理情報を通信するように構成されている。
【0036】
前述のように、データセンター200Bの管理サーバ210は、アサイナ191と通信して、ゲームクラウドシステム190’及び/または190をサポートするクライアントデバイス110にリソースを割り当てる。実施形態では、割り当ては、どのリソースと帯域幅が必要であるかということ、及びそれがデータセンターに存在していることを知るなど、アセットの認識に基づいて実行される。したがって、本開示の実施形態は、説明のために、ラックアセンブリ221Bの対応するストリーミングアレイの対応する計算スレッド231の特定の計算ノード232Bに、クライアントデバイス110を割り当てるように構成される。
【0037】
図2Cは、本開示の一実施形態による、ゲームクラウドシステムの代表的なデータセンターにおけるラックアセンブリのクラスタ255を含むシステム200Cの図である。クラスタ255のラックアセンブリの構成は、設計の選択により、異なる構成が明細書全体に亘って説明され、図2A-2B、3A、及び4A-4Bに示されている。一実施形態では、クラスタ255は、50個のラックアセンブリを含む。他の実施形態では、クラスタ255は、設計の選択に応じて、50を超えるかまたは50未満のラックアセンブリを含み得る。
説明のみを目的として、ラックアセンブリは96倍の計算ノードを含むことができ、それにおいてラックアセンブリは、図2B及び4Aで説明されているように、ストリーミングアレイにつき48倍の計算ノードを備える2つのストリーミングアレイを含む(ただし、図2A及び3Aで説明したものなど、ラックアセンブリの他の構成がサポートされる)。したがって、クラスタ255は、4800個の計算ノードを含むことができる。さらに、各計算ノードが少なくとも10人のユーザをサポートする場合、クラスタ255は少なくとも48,000人のユーザをサポートすることができる。
【0038】
クラスタ255のラックアセンブリのそれぞれは、クラスタファブリック/スイッチ260(例えば、クラスタスイッチを含む)に、チャネルまたはレーンの冗長ペア(例えば、少なくとも毎秒100ギガビットをサポートするイーサネットレーン)を介して、通信可能に結合される。すなわち、クラスタファブリック260は、1つまたは複数のクラスタのラックアセンブリ、分散ストレージ250、及び通信ネットワーク290の間の通信を提供する。クラスタファブリック/スイッチはまた、管理、ロギング、監視、イベント生成などのデータセンターサポートサービスも提供する。クラスタファブリック/スイッチ260は、ルータシステム270及び通信ネットワーク290(例えば、インターネット)を介して外部通信ネットワークへの通信を提供する。また、クラスタファブリック/スイッチ260は、以下でさらに説明する分散ストレージ250への通信を提供する(例えば、毎秒100ギガビットの8チャネル)。
【0039】
分散ストレージ250は、ラックアセンブリのクラスタ255のそれぞれの計算ノードによってアクセス可能なユーザデータ、ゲームデータ、及びゲームパッケージの集中した記憶を提供する。分散ストレージ250は、要求に応じてサーバを追加または削除できるようにスケーラブルであり、ストレージ250は再分散及び/またはそれ自体を再構成することができる。さらに、分散ストレージは負荷の分散をもたらすように構成されているため、データは複数のストレージサーバに亘って小さなチャンクで保存される。分散ストレージの管理は、ユーザインターフェースから実行できる。
【0040】
特に、分散ストレージ250は、ゲームクラウドシステム190用のゲームタイトル(例えば、ゲームアプリケーション)の完全な補足を格納するように構成することができる(例えば、ゲームアプリケーションの完全なカタログを保存するための約200テラバイト[TB]のストレージ)。分散ストレージ250は、ゲームクラウドシステム190のユーザのユーザ及びゲームデータを格納するように構成することもできる。ユーザ及びゲームのデータは、ユーザのセーブデータ、対応するゲームアプリケーションの一時停止/再開データ、ダウンロードデータ、及びその他(画像、写真など)を含み得る。説明のために、各ユーザは各ユーザにつき約50ギガバイト(GB)のストレージを必要とする場合がある。一実施形態では、分散ストレージ250は、対応するゲームタイトルに関連付けられた一時停止/再開情報(例えば、ゲームタイトルごとに8ギガバイト)を格納する。
【0041】
各ストリーミングアレイ及び/またはストリーミングアレイごとのネットワークストレージは、ユーザがラックアセンブリ内でプレイしているゲームパッケージをキャッシュし、それにおいて1つ以上のストリーミングアレイがラックアセンブリに位置付けられる。保存されたゲームパッケージは、ネットワークストレージのドライブと個々のメモリコンポーネントの負荷を分散するために、異なるストレージドライブに亘りストライピングすることができる。また、異なるドライブを使用して、異なるゲームパッケージの保存を開始することもできる。
例として、安価なディスクの冗長アレイ(RAID)ストレージ技術を使用して、データを複数のディスクに保存することができる。例えば、人気のあるタイトルは、各ストリーミングアレイ及びすべてのラックアセンブリで利用できるべきである。つまり、各ストリーミングアレイには、ゲームタイトル及び/またはゲームパッケージの完全なカタログのサブセットがある。ユーザが、対応するラックアセンブリにないゲームタイトル(例えば、「キャッシュミス」)を要求すると、ユーザをサポートする計算ノードを備えた対応するラックアセンブリは、ゲームセッションの間に、ゲームタイトルを分散ストレージ250(またはデータセンターストレージ)からラックアセンブリに転送するように要求する。
対応するストリーミングアレイのネットワークストレージにどのゲームタイトルを格納するかを決定するのは、機械学習に基づいて実行することができる。例えば、機械学習を使用して、どのゲームが人気があり、どのゲームが特定の時点であまりアクセスされていないか判断できる。このようにして、特定のストリーミングアレイでアクセスされるゲームタイトルについて、ゲームタイトルの負荷を最小限に抑えることができる。
【0042】
図3Aは、本開示の一実施形態による、PCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリ300Aの図であり、ネットワークストレージは、対応するラックアセンブリの1つまたは複数のストリーミングアレイによってアクセスされる。示されるように、図3Aの図は、ラックアセンブリ300Aの高レベルのラック設計を示す。ラックアセンブリ300Aは、図2Aの複数のラックアセンブリ220のうちの1つまたは複数を表すことができる。例えば、ラックアセンブリ300Aは、ラックアセンブリ220Nを表すことができる。
【0043】
前述のように、従来のラック設計では、ギガビットイーサネットを使用してネットワークストレージへのアクセスが提供されていた。それは、40gb/sの帯域幅のアクセスが提供されたネットワークストレージへのアクセスであり、これは、将来のゲームには適していない。特に、本開示の実施形態は、NVMeレベルのレイテンシでの計算ノードあたり毎秒約4ギガバイト(GB/s)の帯域幅を超えるネットワークストレージへのアクセスを提供する。これは、一実施形態では、PCIエクスプレススイッチング技術及びラック全体のPCIエクスプレスファブリックによって達成される。
【0044】
各ラックアセンブリ300Aは、ネットワークストレージ310を含む。ゲームコンテンツは、各ラックアセンブリ内のネットワークストレージ310に保存される。ネットワークストレージ310には、NFSベースのネットワークストレージによって多くの計算ノードにサービスを提供するために、大量のストレージと高速ネットワークが備えられている。
【0045】
さらに、各ラックアセンブリ300Aは、1つまたは複数のストリーミングアレイを含む。ラックアセンブリ300Aは4つのアレイを有するものとして示されているが、ラックアセンブリ300A内に1つまたは複数のストリーミングアレイを含めることができることを理解されたい。より具体的には、各ストリーミングアレイには、ネットワークスイッチ、アレイ管理サーバ(AMS)、及び1つまたは複数の計算スレッドが含まれる。例えば、代表的なストリーミングアレイ4には、ネットワークスイッチ341、AMS343、及び1つまたは複数の計算スレッド345が含まれる。他のストリーミングアレイ1~3も同様に構成され得る。図3Aに示されるストリーミングアレイは、例示の目的で、ストリーミングアレイごとに8つの計算スレッドを含むが、ストリーミングアレイは、各計算スレッドが1つまたは複数の計算ノードを含むように、任意の数の計算スレッドを含むことができることが理解される。
【0046】
特に、各ストリーミングアレイは、PCIeファブリック(Gen4など)の一部として構成された対応するPCIeスイッチによってサービスされ、PCIeファブリックを介して計算ノードとストレージサーバ間の直接的なアクセスを提供する。例えば、代表的なストリーミングアレイ4は、PCIeスイッチ347によってサービスされる。PCIeファブリック(すなわち、ストリーミングアレイ1~4のそれぞれにサービスを提供するPCIeスイッチを含む)は、前述のように、ネットワークストレージ310に格納されたゲームデータへの高速アクセスを可能にするデータパス301(例えば、ラックアセンブリ220Nのデータパス201)を提供する。
【0047】
さらに、各ストリーミングアレイは、制御及び/または管理情報をストリーミングアレイに通信するためなどで、制御パス302(例えば、ラックアセンブリ220Nの制御パス202)を提供するイーサネットファブリックで構成される。
【0048】
また、ラックアセンブリ300Aは、ラック管理コントローラ(図示せず)によって管理される共有電力で構成される。さらに、ラックアセンブリは、冷却を共有するように構成することもできる(図示せず)。
【0049】
ラックアセンブリ300Aは、高速ストレージアクセス(例えば、最大4~5GB/s)を各計算ノードに提供するべく、要件に合わせて設計されている。ストレージは、ネットワークストレージ310によって提供され、それは、ゲームコンテンツをRAM及びNVMeドライブに格納する(つまり、従来の単なるディスクの束--JBOD--ストレージサーバではない)。一実施形態では、ゲームコンテンツは「読み取り専用」であるため、システム間で共有することができる。個々の計算ノードは、ストリーミングアレイのそれぞれと、ネットワークストレージ310との間のPCIeファブリック(例えば、データパス301を提供する)を介して、ネットワークストレージ310でゲームコンテンツにアクセスする。
【0050】
特に、PCIeファブリック(例えば、Gen4)は、すべての計算ノードがピークパフォーマンス(4-5GB/s)を同時に必要としているわけではないと想定する場合がある。各スレッドは複数のレーン(例えば、8)のPCIeレーン(例えば、最大16GB/s)を有する。例えば、ストリーミングアレイごとに合計64レーン(8スレッドの場合)が、対応するPCIeスイッチに設けられ、マルチレーン(例えば96レーン)PCIeスイッチを有するように構成することができる。しかし、各PCIeスイッチは、設計に応じて、対応するアレイ32レーンのみをネットワークストレージ310に設けることができる。
【0051】
さらに、各ラックアセンブリ300Aは、アレイ管理サーバ(AMS)と対応する計算スレッドとの間で利用可能な第2のPCIeファブリックを含む。例えば、アレイ4は、AMS343と1つまたは複数の計算スレッド345との間の通信を提供する第2のPCIeファブリック349を含む。このファブリックはパフォーマンスが低く(スレッドごとに1レーンのPCIeなど)、低速のストレージワークロードやスレッドの管理の目的で使用できる。
【0052】
さらに、各ラックアセンブリ300Aは、制御パス302のための通信を提供するなど、従来のイーサネットネットワークを含む。例えば、各計算ノードには1×1Gbpsのイーサネット(例えば、計算ノードと対応するネットワークスイッチ間の32個の計算ノード用のイーサネットファブリック341で32×1Gbps)があり、これは「オーディオ/ビデオのストリーミング」と管理に使用される。AMS及びネットワークストレージは、より高速なネットワーキングを有する(例えば、対応するAMSとネットワークスイッチ(例えば、パス342)との間で40Gbps、ネットワークストレージ310と対応するネットワークスイッチ(例えば、パス343)との間で10Gbps、及び例えばネットワークストレージ及び管理目的のためネットワークストレージ310及びクラスタスイッチ350(パス344)間で100Gbps)を有する。
【0053】
ネットワークストレージ310(例えば、サーバ)はまた、ラックアセンブリの1つまたは複数のストリーミングアレイのAMSサーバ及び計算ノードへのネットワークストレージアクセスを提供するように構成され得る。AMSサーバへのネットワークストレージアクセスは、従来のイーサネットネットワーキング(例えば、対応するネットワークスイッチとネットワークストレージ310との間の10Gbps)を介して処理される。しかし、計算ノードへのネットワークストレージは、カスタムプロトコル及びカスタムストレージソリューションによって(すなわち、データパス301を介して)PCIエクスプレスで行われる。このカスタムストレージソリューションの背景は、PCIeスイッチングを利用する計算ノードのハードウェア及びソフトウェア設計にある。
【0054】
一実施形態では、各計算ノードは、「コマンドバッファ」ベースのプロトコルを使用して、ある場所からデータを要求することができる。ネットワークストレージ310は、データを位置付けることが期待される。特に、計算ノードはダイレクトメモリアクセス(DMA)エンジンを使用して、「読み取り動作」中に独自のメモリに移動する。ネットワークストレージ310に格納されたデータは、RAM及びNVMeに格納される。ネットワークストレージ310のソフトウェアは、NVMeからデータを取得する必要がないように、可能な場合はデータがRAMにキャッシュされることを確実にする。多くの計算ノードが同じコンテンツにアクセスすることが予想されるため、キャッシングが可能である。
【0055】
図3Bは、本開示の一実施形態による、PCIe通信を使用して計算ノードにネットワークストレージ310への高速アクセスを提供するように構成されたラックアセンブリ(図示せず)の中に位置付けられた複数の計算ノードを含むストリーミングアレイ351の図である。1人または複数のユーザにコンテンツをストリーミングするように構成されたラックアセンブリは、ネットワークストレージ310にアクセスする、図3Aのストリーミングアレイ1~4などの「ストリーミングアレイ」に分割される。特に、ストリーミングアレイは、前述の通り、ネットワークスイッチ、アレイ管理サーバ(AMS)、及び複数の計算スレッド(例えば、アレイごとに1つまたは複数の計算スレッド、1つまたは複数の計算ノードを保持する各計算スレッド)からなるラックアセンブリ(例えば、図3Aのラックアセンブリ300A)のセクションである。複数のストリーミングアレイ351がラックアセンブリ(例えば、ラックアセンブリ300A)内に構成され、ネットワークストレージ310を共有するが、それ以外は独立して動作する。
【0056】
図示のように、アレイ管理サーバ(AMS)343は、対応するストリーミングアレイ351内のサーバであり、ストリーミングアレイ内のすべての動作を管理する責任を負う。大まかに2つのクラスの動作を処理している。最初に、AMS343は「構成作業」を管理し、これは、各計算スレッド(例えば、スレッド1~8)が正常に機能していることを確認することである。これには、スレッドへの電力供給、ソフトウェアが最新であることの確認、ネットワークの構成、PCIeスイッチの構成などが含まれる。AMS343の第2の動作クラスは、クラウドゲームセッションの管理である。これには、対応する計算ノードでのクラウドゲームセッションを設定すること、1つまたは複数の計算ノードへのネットワーク/インターネットアクセスを提供すること、ストレージアクセスを提供すること、及びクラウドゲームセッションを監視することが含まれる。
【0057】
したがって、AMS343は、対応するストリーミングアレイ351内の計算ノード及び計算スレッドを管理するように構成され、各計算スレッドは1つまたは複数の計算ノードを含む。例えば、AMS343は、汎用入出力(GPIO)を電力インターポーザに使用して計算ノードへの電力供給を可能にする。一実施形態では、AMS343は、シリアルデータ(例えば、電源オン/オフ、診断、及びロギング情報)を送達する汎用非同期式送受信(UART)信号を使用して、計算ノードを制御及び監視するように構成される。AMS343は、計算ノードでファームウェアの更新を実行するように構成されている。AMS343は、計算スレッド及び対応するPCIeスイッチ347の構成を実行するように構成されている。
【0058】
ストリーミングアレイ351は、前述のように、計算ノードにPCIエクスプレスを介してストレージを提供するように構成される。例えば、PCIeファブリックは、計算スレッド上の計算ノードとPCIeスイッチ347の間のデータパス352を提供する)。実施形態において、計算ノードごとの読み取り/書き込みストレージアクセスは、最大500メガバイト/秒(MB/s)で提供される。さらに、1つの実施態様では、計算ノードごとのストレージあたり1~2ギガバイト(GB)があるが、他のサイズのストレージもサポートされている。
【0059】
図3Bに示すように、AMS343の主な機能は、各計算スレッドへのPCIエクスプレスファブリック接続である。例えば、計算スレッドの計算ノードとAMS343の間の通信を提供するPCIeファブリック352が示されている。一実施形態では、PCIエクスプレスファブリック接続は、「パッシブPCIエクスプレスアダプタ」を使用して実施される。なぜなら、各計算スレッドは、PCIエクスプレスGen4スイッチで構成することができ、AMSと計算スレッドとの間の距離は短くすべきであるからである。
【0060】
さらに、各ストリーミングアレイ351は、前述のように、計算ノードへのネットワーク/インターネットアクセスを提供する。例えば、ネットワークアクセス(例えば、ネットワークスイッチ341を介して、またイーサネットなどのパス-図示せず-を介して)は計算ノードごとに100メガビット/秒(mb/s)で提供される。
【0061】
一実施形態では、AMS343は、ランダムアクセスメモリ(RAM)を備えた中央処理装置(CPU)で構成されてもよい。PCIeファブリック用の入出力(I/O)があってもよい。イーサネット用のネットワーク接続がある場合がある)。
【0062】
AMS343は、一実施形態では、ストレージ(例えば、2×2テラバイトのNVMe)で構成され得る。さらに、パッシブPCIeファブリックアダプターの使用など、各計算スレッドへのPCIeファブリック接続が存在する場合がある。また、電力(例えば、12ボルト)を提供するバスバーもある。
【0063】
図4Aは、本開示の一実施形態による、PCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリ400Aの図であり、それにおいて各ネットワークストレージは、対応するラックアセンブリの計算ノードの対応するストリーミングアレイによってアクセス可能である。示されるように、図4Aの図は、ラックアセンブリ400Aの高レベルのラック設計を示す。ラックアセンブリ400Aは、図2Bの複数のラックアセンブリ221のうちの1つまたは複数を表すことができる。例えば、ラックアセンブリ400Aは、ラックアセンブリ221Nを表すことができる。
【0064】
図4Aに示すように、ラックアセンブリ400Aは、ストリーミングアレイ1及びストリーミングアレイ2の2つのストリーミングアレイを含むが、ラックアセンブリ400Aは、1つまたは複数のストリーミングアレイを含み得ることが理解される。より具体的には、各ストリーミングアレイは、ネットワークストレージ411及び複数の計算スレッド412を含む。各ストリーミングアレイは独立して動作可能であり、対応するネットワークストレージ、対応するPCIeファブリック、対応するイーサネットファブリック、及び対応するネットワークスイッチを含む。
【0065】
ラックアセンブリ400Aは、高速ストレージアクセス(例えば、最大4~5GB/s)を各計算ノードに提供するべく、要件に合わせて設計されている。ストレージは、対応するストリーミングアレイのネットワークストレージ411によって提供され、それは、ゲームコンテンツをRAM及びNVMeドライブに格納する(つまり、従来の単なるディスクの束--JBOD--ストレージサーバではない)。一実施形態では、ゲームコンテンツは「読み取り専用」であるため、ストリーミングアレイの中のシステム間で共有することができる。個々の計算ノードは、以下でさらに説明するように、ストリーミングアレイのそれぞれとネットワークストレージ411の間のPCIeファブリック(例えば、データ及び制御パス401を提供する)を介して、ネットワークストレージ411でゲームコンテンツにアクセスする。
【0066】
また、ラックアセンブリ300Aは、ラック管理コントローラ(図示せず)によって管理される共有電力で構成される。さらに、ラックアセンブリは、冷却を共有するように構成することもできる(図示せず)。
【0067】
例えば、ストリーミングアレイ1及び2のそれぞれは、複数の計算スレッドに位置付けられた複数の計算ノード412を含み、各計算スレッドは、1つまたは複数の計算ノードを含む。さらに、各計算ノードは、複数のゲームアプリケーションの1つまたは複数のインスタンスを実行するように構成される。説明のために、各ストリーミングアレイは12個の計算スレッドで構成され得(つまり、選択可能な数のスレッドを含むように構成可能)、各計算スレッドは1つまたは複数の計算ノードを含む。一実施態様では、各計算スレッドは4つの計算ノードを含み、各ストリーミングアレイは48の計算ノードを含む(すなわち、計算スレッド当たり4つの計算ノードで12の計算スレッド)。
【0068】
各ストリーミングアレイ1番及び2番は、ネットワークストレージ411またはストレージサーバを含む。例えば、ユーザデータ及びゲームデータ及びゲームパッケージは、ネットワークストレージ411に格納され、計算ノードによる高速ネットワーキングを介して(例えば、NFSベースのネットワークストレージを介して)アクセスされ得る。対応するストリーミングアレイの各ネットワークストレージ411は、そのストリーミングアレイの計算ノードによって共有される。特に、個々のネットワークストレージ411のそれぞれは、不揮発性メモリを含むことができ、1つまたは複数の不揮発性メモリは、不揮発性メモリエクスプレス(NVMe)ドライブとして構成される。NVMeドライブは、PCIエクスプレス(PCIe)インターフェースを使用してメモリへのアクセスを提供する(つまり、シリアルアドバンステクノロジーアタッチメント-SATA--コントローラの代わりに)。例えば、各ネットワークストレージには27テラバイト(TB)のNVMeストレージが含まれる。NVMeドライブは、ダブルデータレート4(DDR4)同期ダイナミックランダムアクセスメモリ(SDRAM)テクノロジを実装するストレージよりも経済的なゲームパッケージストレージ(ストリーミングアレイのキャッシュストレージなど)を提供する。
【0069】
本開示の実施形態は、NVMeレベルのレイテンシでの計算ノードあたり毎秒約4ギガバイト(GB/s)の帯域幅を超えるネットワークストレージへの高速のアクセスを提供する。これは、一実施形態において、PCIエクスプレススイッチング技術及びPCIエクスプレスGen4(第4世代)などのラック全体のPCIエクスプレスファブリックによって達成される。
【0070】
特に、各ストリーミングアレイは、複数の計算ノード412から対応するネットワークストレージ411への直接的なアクセスを提供するように構成された対応するPCIeファブリック425(例えば、Gen4)を含み得る。PCIeファブリック425は、1つまたは複数のアレイレベルのPCIeスイッチ407を含み、各アレイレベルのPCIeスイッチは、対応する計算スレッドの対応する計算ノードに通信可能に結合され、ネットワークストレージ411に通信可能に結合される。図4Aに示すように、48個の計算ノードにサービスを提供する3つのアレイレベルのPCIeスイッチ(407a、407b、及び407c)があり、1つまたは複数のアレイレベルのPCIeスイッチのそれぞれが、データをストリーミングするために、対応する計算スレッドの対応する計算ノードからの通信、及び複数の計算スレッドと対応する計算ノードの管理情報を提供する。
【0071】
説明のために、各アレイレベルのPCIeスイッチは52レーンをサポートし、各アレイレベルのPCIeスイッチは4つの計算スレッド間で共有される。各計算スレッドが4つの計算ノードで構成されている場合、4つの計算スレッドの各グループは、データパス426(3×32レーンを含む)で示されているように、32レーンを介して、対応するアレイレベルのPCIeスイッチにアクセスできる。すなわち、各スレッドは、PCIeの複数レーン(例えば、8レーン)を有する(例えば、毎秒最大16ギガバイト)。
例えば、ストリーミングアレイごとに合計3×32レーンが、対応するPCIeスイッチ407に設けられ、それはマルチレーン(例えば52レーン)のPCIeスイッチを有するように構成することができる。しかし、各PCIeスイッチは、設計に応じて、ネットワークストレージ411に16レーンしか提供しない場合がある。特に、3つのアレイレベルのPCIeスイッチ(407a、407b、及び407c)は、48レーン(例えば、3×16)を含むデータ及び制御パス424を介してネットワークストレージ411にアクセスし、ネットワークストレージ411にアクセスするためのレーンは、1つの計算ノードあたり約1レーン(例えば、48の計算ノードには48レーン)である。データ及び制御パス424は、前述のように、ネットワークストレージ411に格納されたゲームデータへの高速アクセスを可能にする。
【0072】
一実施形態では、ネットワークストレージ411は、制御を伝達するためなど、アレイレベル及びスレッドレベルの管理機能(すなわち、図3AのAMS機能のマージ)、及び/またはストリーミングアレイに対する管理情報を含む。
【0073】
さらに、ラックアセンブリ400Aは、計算スレッド、ネットワークストレージ、及びネットワークスイッチ間の通信(例えば、制御及びデータ転送)を提供するイーサネットファブリック402で構成される。例えば、イーサネットファブリック402は、ストリーミングアレイ1と対応するネットワークスイッチ410との間の通信をサポートする。特に、イーサネットファブリック402は、ネットワークスイッチ410を、パス422(例えば、毎秒100ギガビット)を介して、対応するストリーミングアレイのネットワークストレージ411に通信可能に結合する。さらに、イーサネットファブリック402は、ネットワークスイッチ410を、ファブリック421を介して、対応するストリーミングアレイの複数の計算ノード412に通信可能に結合する。例えば、各計算ノードは、1×1Gbpsのイーサネット(例えば、計算ノードと対応するネットワークスイッチ410間の48の計算ノード用のイーサネットファブリック421で48×1Gbps)を有し、これは「オーディオ/ビデオのストリーミング」に使用される(例えば、放送及び/またはビデオストリーミングサービスへのストリーミング)。
【0074】
さらに、ネットワークスイッチ410のそれぞれは、パス423を介してクラスタファブリックへのアクセスを提供するクラスタスイッチ450に通信可能に結合される(例えば、毎秒2×100ギガビットの冗長アップストリーム)。一実施形態では、クラスタスイッチ450は、別のストリーミングアレイの別のネットワークスイッチに通信可能に結合されて、同じラックアセンブリのストリーミングアレイ間または異なるラックアセンブリ間の通信を提供する。別の実施形態では、クラスタスイッチ450は、通信ネットワーク(例えば、インターネット)に通信可能に結合され、ネットワークアーキテクチャ(例えば、ストリーミングアレイ、ラックアセンブリ、及びネットワークストレージ)の外部にあるネットワーク通信を提供する。さらに別の実施形態では、クラスタスイッチ450は、複数のゲームアプリケーション(例えば、ゲームクラウドシステム用のゲームタイトルパッケージの完全な補完)を格納するように構成された分散ストレージ(例えば、図2Cのストレージ250)に通信可能に結合される。
【0075】
一実施形態では、各計算ノードは、「コマンドバッファ」ベースのプロトコルを使用して、ある場所からデータを要求することができる。対応するストリーミングアレイのネットワークストレージ411は、データを位置付けることが期待される。特に、計算ノードはダイレクトメモリアクセス(DMA)エンジンを使用して、「読み取り動作」中に独自のメモリに移動する。ネットワークストレージ411に格納されたデータは、RAM及びNVMeに格納される。ネットワークストレージ411のソフトウェアは、NVMeからデータを取得する必要がないように、可能な場合はデータがRAMにキャッシュされることを確実にする。多くの計算ノードが同じコンテンツにアクセスすることが予想されるため、キャッシングが可能である。DMAエンジンを使用するネットワークストレージの構成のより詳細な説明は、図7A~7Bで提供される。
【0076】
図4Bは、本開示の一実施形態による、PCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成された、対応するラックアセンブリのストリーミングアレイの中で使用されるPCIeファブリック及び/またはネットワークを含むネットワークストレージ用のストレージサーバ構成400Bを示し、各ネットワークストレージは、計算ノードの対応するアレイによってアクセス可能である。具体的には、図4Bは、図4Aで導入されたPCIeファブリック(例えば、ファブリック425、426など)の高レベルの設計を提供する。例えば、計算ノードとネットワークストレージ411との間でデュアルレベルスイッチングファブリックが使用される。
【0077】
ネットワークストレージまたはストレージサーバ構成400Bは、CPU460(例えば、1×16コアCPU)、RAM465用の8チャネルのDDR4(例えば、DDR4コントローラ461によって制御されるものとして)、及びPCIeインターフェース470またはルートコンプレックスを含む。
【0078】
PCIeインターフェース470から、PCIeスイッチングファブリックへの48レーン、ネットワークストレージ411への64レーン、計算ノードへのネットワーク/インターネットアクセス(例えば、毎秒100ギガビット)を提供するネットワークインターフェースカード(NIC:Network Interface Card)475への8レーン(例えば、毎秒100ギガビット)、及びオペレーティングシステム(OS)を実行するために必要なメモリ用であるオペレーティングシステム(OS)NVMeドライブ480A及び480Bへの8レーンを含む、様々なコンポーネントへのPCIeの128レーンがある。
【0079】
特に、ネットワークストレージ411には、16個のNVMeドライブにアクセスするための64レーン(例えば、ドライブ当たり4レーン)がある。一実施態様では、ネットワークストレージ411のアーキテクチャは、14個のアクティブなNVMeドライブと、冗長性のための2つのオプションのドライブ(例えば、故障の場合にNVMeドライブを交換する)を含む。他の実施形態は、設計及び技術に応じて、14を超えるNVMeドライブまたは14未満のNVMeドライブをサポートする。
【0080】
示されるように、ストリーミングアレイは、複数の計算ノード412を含む。計算スレッド413は、4つの計算ノードを含むことができ、4つの計算スレッドのグループ(各計算スレッドは4レーンを使用する)は、16レーンを介して、36レーンで構成された対応するサブアレイレベルのPCIeスイッチにアクセスすることができる。例えば、計算スレッド413は、16レーンを介してサブアレイレベルのPCIeスイッチ430Aにアクセスする。そのため、ストリーミングアレイの48個の計算ノードを含む12個の計算スレッドをサポートする12個のサブアレイレベルのPCIeスイッチ430A、430B、430C、430D、…、及び430L(それぞれ36レーンで構成)がある。さらに、サブアレイレベルのPCIeスイッチ430A~430Nは、3つのアレイレベルのPCIeスイッチ407a、407b、及び407cに通信可能に結合される。
特に、4つのサブアレイレベルのPCIeスイッチのグループ(それぞれが36レーンとして構成)が通信可能に接続され、及び/または対応するアレイレベルのPCIeスイッチ(例えば、52レーン)を共有し、各サブアレイレベルのPCIeスイッチは8レーンを介してアレイレベルのPCIeスイッチと通信する。例えば、サブアレイレベルのPCIeスイッチ430A、430B、430C、及び43Dを含むグループは、アレイレベルのPCIeスイッチ407aにアクセスする。アレイレベルのPCIeスイッチ407a、407b、及び407cのそれぞれは、16レーンを介してPCIeインターフェース470またはルートコンプレックスに通信可能に結合され、3つのアレイレベルのPCIeスイッチ407a、407b、及び407cが48レーンにわたりPCIeインターフェース470に通信可能に結合され、計算ノードごとにネットワークストレージ411にアクセスするためのレーンが約1つある(例えば、48の計算ノードに対して48レーン。
【0081】
図4Cは、本開示の一実施形態による、PCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリの中に位置付けられた複数の計算ノードを含むストリーミングアレイ400Cの図であり、各ネットワークストレージは計算ノードの対応するアレイによってアクセス可能である。例えば、ストリーミングアレイ400Cは、ラックアセンブリ400Aのストリーミングアレイ1またはストリーミングアレイ2であり得る。特に、ストリーミングアレイ400Cは、前述のように、複数の計算スレッド(例えば、アレイごとに1つまたは複数の計算スレッド、各計算スレッドが1つまたは複数の計算ノードを保持する)、ネットワークストレージ411、及びPCIeファブリックを含む。ラックアセンブリ(例えば、ラックアセンブリ400A)は、1つまたは複数のストリーミングアレイを含むことができるが、ネットワークストレージは、対応するストリーミングアレイの計算ノードによって1対1の関係で使用される。
【0082】
一実施形態では、ネットワークストレージ411は、ストリーミングアレイ400C内のすべての動作を管理する責任を負う。すなわち、ネットワークストレージ411は、図3AのラックアセンブリのAMSの機能を組み込んでいる。大まかに2つのクラスの動作を処理している。第1のクラスの動作には、「構成作業」が含まれる。これは、各計算スレッド(例えば、スレッド1~12)が正常に機能していることを確認することである。これには、スレッドへの電力供給、ソフトウェアが最新であることの確認、ネットワークの構成、PCIeスイッチの構成などが含まれる。第2の動作クラスは、クラウドゲームセッションの管理である。これには、対応する計算ノードでのクラウドゲームセッションを設定すること、1つまたは複数の計算ノードへのネットワーク/インターネットアクセスを提供すること、ストレージアクセスを提供すること、及びクラウドゲームセッションを監視することが、含まれる。
したがって、ネットワークストレージ411は、対応するストリーミングアレイ411の計算ノード及び計算スレッドを管理するように構成され、各計算スレッドは1つまたは複数の計算ノードを含む。例えば、管理には、電力インターポーザに電力供給すべく汎用入出力(GPIO)を使用して計算ノードへの電力供給を有効にすることが含まれる。一実施形態では、計算ノードの制御と監視は、シリアルデータ(例えば、電源のオン/オフ、診断、及びロギング情報)を送達する汎用非同期式送受信(UART)信号を使用して、実行され得る。また、ネットワークストレージ411は、計算ノードでファームウェアの更新を実行し、計算スレッド及び対応するPCIeスイッチ347の構成を実行するように構成されている。
【0083】
ストリーミングアレイ400Cは、前述のように、計算ノードにPCIエクスプレスを介してストレージを提供するように構成される。例えば、PCIeファブリック423は、計算スレッドの計算ノードとアレイレベルのPCIeスイッチ407a、407b、及び407cとの間のデータパスを提供する。一実施形態では、PCIエクスプレスファブリック接続は、「パッシブPCIエクスプレスアダプタ」を使用して実施される。なぜなら、各計算スレッドは、PCIエクスプレスGen4スイッチで構成することができ、サブアレイレベルとアレイレベルのPCIeスイッチと計算スレッドとの間の距離は短くすべきであるからである。さらに、各アレイレベルのPCIeスイッチは、フォームデータと制御パス424を組み合わせた16レーンを提供する。実施形態において、計算ノードごとの読み取り/書き込みストレージアクセスは、最大500メガバイト/秒(MB/s)で提供される。さらに、1つの実施態様では、計算ノードごとのストレージあたり1~2ギガバイト(GB)があるが、他のサイズのストレージもサポートされる。
【0084】
図5Aは、本開示の一実施形態による、PCIe(例えば、Gen4-第4世代)通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリの中に位置付けられた複数の計算ノード(例えば、ノード1~4)を含む計算スレッド500Aの図である。図5Aは、複数の計算ノード(例えば、ノード1~4)及び計算ノードの動作をサポートするための補助ハードウェアを示す。計算スレッドは、以前に図2A~2C、3A、及び4A~4Bで導入されたストリーミングアレイ及び/またはラックアセンブリのいずれかの中に実装できる。
【0085】
各計算スレッド500Aは、1つまたは複数の計算ノードを含む。図5Aは、4つの計算ノード(例えば、ノード1~4)を含む計算スレッドを示すが、1つまたは複数の計算ノードを含む計算スレッドには、任意の数の計算ノードを設けることができることが理解される。計算スレッド500Aは、(例えば、計算ノードを介して)計算リソースを提供するハードウェアプラットフォーム(例えば、回路基板)を提供することができる。各計算スレッドには、1つまたは複数の計算ノード(ノード1~4など)が含まれる。ラックアセンブリ内に位置付けられた各計算ノードは、本開示の一実施形態に従って、PCIe通信(例えば、Gen4)を使用して計算ノードにネットワークストレージ(図示せず)への高速アクセスを提供するように構成される。計算ノードには複数のI/Oインターフェースが含まれる。例えば、計算ノードには、M.2ポートと、PCIe Gen4(双方向)用の複数のレーンが含まれる場合がある。
【0086】
PCIe(例えば、Gen4)インターフェース(例えば、4レーン)を使用して、追加のデバイスでシステムを拡張できる。特に、PCIeインターフェースは、高速ストレージ用のPCIエクスプレススイッチ520Aを含むPCIeファブリックに接続するために使用される。さらに、計算ノードは、パッチパネル510Aを介したイーサネット接続(例えば、ギガビットイーサネット)を含む。また、計算ノードには、シリアルデータの送信及び/または受信用に構成された1つ以上の汎用非同期式送受信機(UART)接続が含まれる。例えば、1つまたは複数のUARTポートが存在する場合があり、これらは管理目的で使用される(例えば、計算ノードをボード管理コントローラ(BMC:Board Management Controller)/UART/GPIOコントローラ550)に接続するなど)。ポートは、「電源オン」、「電源オフ」、及び診断などのリモート制御動作に使用できる。別のUARTポートは、シリアルコンソール機能を提供する。
【0087】
図示のように、計算スレッド500Aは、アレイレベルのPCIeファブリックに8つのPCIeレーンを提供するPCIeスイッチボード520Aを含む。また、計算スレッド500Aは、前述のように、計算ノード(例えば、ノード1~4)とラックレベルネットワークスイッチ(図示せず)との間のイーサネットケーブルを接続するように構成されたイーサネットパッチパネル510Aを含む。計算スレッド500Aは、管理パネル530Aを含む。例えば、管理パネル530Aは、LEDやボタンなどのステータスを与えることができる。
【0088】
計算スレッド500Aは、1つまたは複数のバスバー接続を介して計算スレッドに電力を供給するように構成された電力インターポーザボード540Aを含む。ラック管理バスは、スレッド管理制御信号を提供するように構成することができる。各計算ノードはまた、バスバー接続を介して電力インターポーザ540Aに接続された電力入力コネクタ(例えば、設計された電力消費のための12ボルト)を含む。
【0089】
図5Bは、本開示の一実施形態による、PCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリ内に位置付けられた複数の計算ノードを含む計算スレッド500Bの図であり、各計算ノードは、ネットワークへのアクセス用に構成されるネットワークインターフェースカード(NIC)を含む。ラックアセンブリは、PCIe(Gen4-第4世代など)通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されている。計算スレッド500Bは、図2A~2C、3A、及び4A~4Bで導入されたストリーミングアレイ及び/またはラックアセンブリのいずれかの中に実装できる。計算スレッド500Bは計算スレッド500Aに似ているが、変更が加えられている。
【0090】
各計算スレッドは、4つの計算ノード(例えば、ノード104などの1つまたは複数の計算ノードを含む。計算スレッド500Aは、(例えば、計算ノードを介して計算リソースを提供するハードウェアプラットフォーム(例えば、回路基板)を提供することができる。ラックアセンブリ内に位置付けられた各計算ノードは、本開示の一実施形態に従って、PCIe通信(例えば、Gen4)を使用して計算ノードにネットワークストレージ(図示せず)への高速アクセスを提供するように構成される。計算ノードには複数のI/Oインターフェースが含まれる。例えば、計算ノードには、M.2ポートと、PCIe Gen4(双方向)用の複数のレーンが含まれる場合がある。計算ノードは、管理目的で構成された1つまたは複数のUARTポートなど、シリアルデータを送受信するように構成された1つまたは複数のUART接続を含むことができる(例えば、計算ノードをBMC545に接続する)。ポートは、「電源オン」、「電源オフ」、及び診断などのリモート制御動作に使用できる。別のUARTポートは、シリアルコンソール機能を提供する。
【0091】
特に、計算スレッド500Bはイーサネットパッチパネル510Bを含み、それは、イーサネット通信(例えば、ギガビットイーサネット)を計算ノードに提供するように構成され、前に説明したように、例えば、計算ノード(例えば、ノード1~4のそれぞれに位置付けられたNIC、ただし図示せず)とラックレベルのネットワークスイッチ(図示せず)の間をイーサネットケーブルで接続することによる。
【0092】
計算スレッド500Bは、アレイレベルのPCIeファブリックに8つのPCIeレーンを提供するPCIeスイッチ520Bを含むスレッドスイッチ525Bと、高速ストレージ用のネットワークストレージ(例えば、少なくとも毎秒16ギガバイトの双方向データ転送)とを含む。特に、PCIeスイッチ520Bは、36レーンで構成することができ、そのうち33レーンが使用される(例えば、計算ノード当たり4レーン)。計算ノードへのPCIe(例えば、Gen4)インターフェース(例えば、4レーン)を使用して、追加のデバイスでシステムを拡張できる。
【0093】
さらに、PCIeスイッチ520Bの1つのレーンは、ボード管理制御用のボード管理コントローラ(BMC)544との通信用に予約されている(例えば、PCIeファブリックへの毎秒1ギガビット)。例えば、BMC544によって提供されるボード管理には、計算ノードの制御、監視、及び管理が含まれ、各計算ノードのシリアルデータ(例えば、電源のオン/オフ、診断、及びロギング情報)を送達する汎用非同期式送受信(UART)信号を使用して、実行される。さらに、BMC544は、電磁エネルギーを制御するための電磁適合性(EMC)制御を提供し、UART信号を使用して遅延をデバッグするように構成することができる。BMC544は、電力インターポーザ540Bへの汎用入出力(GPIO)を使用して計算ノードへの電力制御/送達を可能にするように構成することができる。BMC544は管理パネル530Bに制御ステータス発光ダイオード(LED)を提供するように構成され得、それはLED及びボタンを使用してステータスを与えるようにさらに構成される。BMC544は、温度と電圧を監視するように構成されている。また、BMC544は、冷却用に構成されたファン560Bを管理するように構成されている。BMC544は、ボード管理用のイーサネット接続を管理するようにも構成されている。
【0094】
電源インターポーザボード540Bは、1つまたは複数のバスバー接続を介して計算スレッドに電力(例えば、12ボルトまたは48ボルトの直流-DC)を供給するように構成される。各計算ノードはまた、バスバー接続を介して電力インターポーザ540Bに接続された電力入力コネクタ(例えば、設計された電力消費のための12または48ボルト)を含む。
【0095】
図5Cは、本開示の一実施形態による、ネットワークにアクセスするために1つ以上の計算ノードによりアクセス可能な少なくとも1つのネットワークインターフェースカード(NIC)を含むPCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリ内に位置付けられた複数の計算ノードを含む計算スレッド500Cの図であり、各ネットワークストレージが、計算ノードの対応するアレイによってアクセス可能である。ラックアセンブリは、PCIe(Gen4-第4世代など)通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されている。計算スレッド500Bは、図2A~2C、3A、及び4A~4Bで導入されたストリーミングアレイ及び/またはラックアセンブリのいずれかの中に実装できる。計算スレッド500Bは計算スレッド500Aに似ているが、変更が加えられている。
【0096】
計算スレッド500Cは、図5Bの計算スレッド500Bと同様に構成され、同様の番号のコンポーネントを同様の機能を提供する。しかし、計算スレッド500Cは、前述のように(例えば、ネットワークスイッチを介して)、イーサネットを介してイーサネットファブリックに接続するネットワークを提供するように構成されたイーサネットNIC570の追加も少なくとも含む。特に、NIC570は、アレイレベルのPCIeスイッチに通信可能に結合され、これにより、各計算ノードがPCIスイッチにアクセスできるようになる。NIC570は、計算スレッド500Cの各計算ノード(例えば、1~4)によって提供されるNIC接続(例えば、毎秒1ギガビット)よりも高速であり得る代替的な高速のデータ転送(例えば、毎秒10ギガビット、25Gbps、さらには100Gbps)を提供する。
【0097】
イーサネットNIC570は、単一のNICコンポーネントとして、またはマルチホストNICとして構成することができる。マルチホストアダプタにより、複数のシステム(計算ノードなど)間での物理的な共有が可能になる。別の実施形態では、計算ノードごとに1つのNICを提供する4つの個別のイーサネットアダプタまたはNICが存在し得る。
【0098】
図6は、本開示の一実施形態による、PCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリの中に位置付けられたスレッドレベルPCIeスイッチ600の図である。
【0099】
スレッドPCIeスイッチ600は、2つの役割を有する対応する計算スレッド内の回路基板として構成することができる。第1に、一実施形態では、スレッドレベルのPCIeスイッチ600は、個々の計算ノード(例えば、4つの計算ノード)を、「不透明ブリッジ」(NTB)により、PCIe(例えば、Gen4)バス620を介してAMS及び対応するネットワークストレージに接続する「ファブリックの役割」を有する。第2に、スレッドレベルのPCIeスイッチ600は、UART及びGPIO信号がスレッドの管理のために設けられる「管理の役割」がある。
【0100】
特に、PCIe(Gen4など)接続は、外部ケーブルコネクタ、内部ケーブルコネクタ、及びPCIeエッジコネクタによって設けられる。例えば、8レーンのPCIe(例えば、Gen4)外部ケーブル接続620を使用して、計算スレッドをストレージワークロード用のネットワークストレージに接続することができる。第2のPCIeファブリックへの第2の外部PCIe(例えば、Gen4)接続625は、AMSに接続する。例えば、第2のPCIe接続には1つのレーンが含まれる場合がある。これは、主に管理機能に使用され、補助ストレージ機能を備えているためである。
【0101】
さらに、内部PCIe(例えば、Gen4)ケーブルコネクタ610を使用して、ケーブルを使用してスレッドPCIeスイッチ520を、対応するM.2インターフェースを介して計算ノードのそれぞれに接続することができる。他の接続手段が実装されてもよい。例えば、M.2接続インターフェースを使用する代わりに、他のコネクタ及び/またはOCuLink、Slimline SASなどのコネクタインターフェースを使用できる。
【0102】
UART及びGPIOコントローラ550の形態の管理インターフェースは、AMS(図示せず)によって使用され、個々の計算ノードと通信し、電力を管理する。AMSは、計算ノードごとに複数(例えば2つ)のUARTインターフェースを使用して、管理目的(例えば、電源のオン/オフ診断、ロギングなど)に使用する。GPIO機能は、接続630を介して電力インターポーザボードを介して各計算ノードへの電力供給を管理するために使用される。これは、前述のように、接続630を介して管理パネル(例えば、LED及びボタン用)にも接続する。
【0103】
スレッドレベルPCIeスイッチ600は、PCIe(例えば、Gen4)スイッチ520を含み得る。また、複数(例えば、4つ)の非透過(NT)ブリッジングインターフェースを含めることができる。さらに、複数(例えば、4つ)のDMA(ダイレクトメモリアクセス)エンジンを含めることができる。
【0104】
さらに、UART/GPIOコントローラ550が構成され、PCIeスイッチへのPCIeインターフェース、複数(例えば、8個)のUARTチャネル640、及び電力インターポーザ及び管理パネルへの複数(8個)のGPIO接続を含む。
【0105】
さらに、ネットワークストレージアクセス用のPCIeファブリックへのコネクタがある。例えば、一実施態様では、PCIeファブリックからネットワークストレージへの8レーンの外部PCIeコネクタ620が設けられる。
【0106】
前述のように、AMSへのアクセスを提供する第2のPCIeファブリックへの1レーンの外部PCIeコネクタ625も、スレッドレベルのPCIeスイッチボード600内に設けられる。1つ以上のPCIeエッジコネクタも設けられ得る。
【0107】
さらに、計算ノードへの4つのマルチレーン(例えば、4レーン)の内部PCIe接続610が設けられ得る。例えば、各計算ノードには4つのレーンがある。
【0108】
電力インターポーザまでGPIOコネクタ630が含まれていてもよい。例えば、計算ノードごとに1つずつ、合計4つの信号が必要である。
【0109】
管理パネルへの4つの二重/ペアのUARTコネクタがあり得る。例えば、各計算ノードには、1つの実施態様で2つのUARTインターフェースがある。他の実施態様では、各計算ノードが2つ未満のUARTインターフェース、または2つを超えるUARTインターフェースを有する場合がある。
【0110】
接続630を介してスレッドに電力を供給する電力インターポーザを含めることができる。本開示の一実施形態によれば、計算スレッドは、PCIe通信を使用して計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成されたラックアセンブリ内に位置付けられた複数の計算ノードを含むことができる。一実施形態では、電力インターポーザは、ラックの12Vバスバーから計算スレッドに電力を供給する。
他の実施形態では、48ボルトなどの他の電圧がラックコンポーネントに電力を供給するために使用される。例えば、より高い電圧(例えば48ボルト)を電力効率の目的で使用してもよい。特定の電圧(例えば、12ボルト)を必要とするコンポーネントの場合、電力インターポーザを使用して電力を変換することができる。例えば、電力インターポーザは、48ボルト(または何らかの他の電圧)を12ボルトに下げて変換するための変換ロジック(例えば、DC-DCコンバータ)を含むことができる。これは、計算ノードといずれかの補助ハードウェアに電力を供給するために使用される。計算ノードへの電力供給は、スレッドPCIeスイッチによるGPIOによって制御できる。各計算ノードには、電力を有効化/無効化する専用の信号が存在し得る。
【0111】
また、電力インターポーザボードを監視するために、ラック管理制御インターフェースが、ラック管理コントローラ(RMC)に提供される。これにより、電圧、電流、温度などの診断情報が提供される。ラック管理制御インターフェースには電圧及び/または電流情報、及び温度が含まれ得る。
【0112】
電源ステータス情報は、GPIO信号を使用して管理パネルに配信される。これには、各計算ノードの電力ステータスならびに電力インターポーザの12Vステータスが含まれる。さらに、バス(例えば、12ボルト)バーインターフェースが提供される。
【0113】
例えば、電源バスの電源が入っているときに計算スレッドの追加及び/または除去するためのホットプラグサポートがある場合がある。例えば、電力は12ボルトまたはその他のレベルで供給され得る。補助コンポーネントへの電圧はより低い場合があり(例えば、6ボルト未満)、これは電力バスの12ボルトから生成することができる。
【0114】
管理パネルは計算スレッドの前面に位置付けられたボード/パネルを含む場合があり、LEDでスレッドのステータスを示す。各計算ノードには、制御ステータス情報を提供する2つのLEDがあり得る。第1のものは、ソフトウェア制御可能なGPIO信号を使用して、スレッドPCIeスイッチから電力を供給される。第2のLEDは電力インターポーザボードからのもので、電力のステータス(電圧レベルなど)を示す。電力インターポーザボードからのグローバルな電源ステータスは、スレッドの全体的な電源のステータスを示す。
【0115】
図7Aは、本開示の一実施形態による、計算ノード710とストリーミングアレイのネットワークストレージ411との間のデータフローの図であり、メモリアクセスは、ネットワークストレージのストレージドライブのダイレクトメモリアクセス(DMA)エンジンによって駆動される。特に、図7Aに示されるデータフロー(例えば、ゲームデータフロー)は、各NVMeドライブに位置付けられたDMAエンジンがどのように計算ノードにデータを転送するかを示している。
例えば、図7Aのデータフローは、図2A~2B、3A~3B、及び4A~4Cで以前に紹介されたストリーミングアレイにおけるデータフローを表すことができる。各ストリーミングアレイ及び/またはストリーミングアレイごとのネットワークストレージは、ユーザがラックアセンブリ内でプレイしているゲームパッケージをキャッシュする。例えば、人気のタイトルはすべてのラックで利用できる。ユーザが、対応するラックアセンブリにないゲームタイトル(例えば、「キャッシュミス」)を要求すると、ラックアセンブリは、セッションの間に、ゲームタイトルを分散ストレージ(またはデータセンターストレージ)からラックアセンブリに転送するように要求する。
【0116】
前述のように、ゲームパッケージは、ネットワークストレージ411で複数のNVMeドライブに亘ってストライピングされ、負荷の分散とホットスポット(つまり、ドライブの過度の使用)の防止が行われる。特に、ネットワークストレージ411の管理は、すべてのNVMeドライブに亘って異なるデータストレージ方法(例えば、RAIDストライピング)を実装することができる。例えば、前述のように、連続して保存されるゲームタイトルは、負荷分散のために異なるNVMeドライブで開始され得る。機械学習を実装して、ゲームタイトルの現在及び予測される需要に基づいて、特定の期間にどのゲームタイトルを保持すべきで、どれを削除するかを決定することができる。さらに、ネットワークストレージ411のソフトウェアは、NVMeからデータを取得する必要がないように、可能な場合はデータがRAMにキャッシュされることを確実にする。多くの計算ノードが同じコンテンツにアクセスすることが予想されるため、キャッシングが可能である。
【0117】
特に、ステップ1で、計算ノード710は、PCIeスイッチ407を介してネットワークストレージ411からデータを要求する。ネットワークストレージ411は、NVMeドライブ(例えば、ドライブ740A~740N)からのデータ検索を処理するように構成される。具体的には、ステップ2で、ネットワークストレージ411のストレージドライバ720(例えば、RAIDドライバ)が要求を受信し、計算ノード710からのデータ要求を処理して、データが格納されている1つのNVMeドライブまたは複数のNVMeドライブを位置付ける。説明の目的で、データは、データの要求のためにNVMeドライブ740Aに位置付けられ得るが、データは複数のドライブに亘ってストライピングされ得る(例えば、ゲームアプリケーションのゲームパッケージ用)。
NVMeドライブは共有できない(SR-IOVを除く)ため、ネットワークストレージ411は各ジョブまたは要求の提出/完了キューを管理するように構成されている。図示のように、ストレージドライバ720は、対応するオフセット、サイズ、及び宛先アドレスと共に、適切なNVMeドライブ(複数可)のデータ検索のためのコマンドをキューに入れる。宛先アドレスは、計算ノードのNTB(不透明ブリッジ)マップRAMを含む、ネットワークストレージのメモリマップ内の任意のアドレスにすることができる。例えば、データに対する要求は、NVMeドライブ730Aのためにキューに入れることができる。
対応するNVMeドライブ(複数可)がデータにアクセスした後、その1つまたは複数のドライブは、完了キューに書き戻し、要求が処理されたことを示す(例えば、システムは、読み取りまたは書き込み動作が対応するNVMeドライブ(複数可)において完了したことを示す更新をもたらす割り込みを受け取る)。このようにして、要求している計算ノード710は、データの検索について通知を受けることができる。ステップ3で、対応するNVMeドライブ(複数可)(例えば、NVMeドライブ730A)のDMAエンジン740Aは、データを、PCIeスイッチ407を介して計算ノード710のメモリに直接転送する。図示のように、NVMeドライブの各々は、対応するDMAエンジンを有する(例えば、NVMeドライブ730NはDMAエンジン740Nを有する)。
例えば、要求されたデータは、計算ノード710のRAM711(例えば、MP4 RAM)に格納され得る。例えば、計算ノードは、NVMeドライブのDMAエンジンを使用して、読み取り動作などの間、データを計算ノードのメモリに格納する。このようにして、データはNVMeドライブから各計算ノードに直接転送される。
【0118】
図7Bは、本開示の一実施形態による、複数の計算ノードとアレイのネットワークストレージとの間のデータフローの図であり、メモリアクセスは、ネットワークストレージのストレージドライブとは別個のDMAエンジンによって駆動される。特に、図7Bに示されるデータフロー(例えば、ゲームデータフロー)は、PCIeスイッチ407に位置付けられたDMAエンジン741がネットワークストレージ411から対応するストリーミングアレイの計算ノードにデータを転送する方法を示す。
例えば、図7Bのデータフローは、図2A~2B、3A~3B、及び4A~4Cで以前に紹介されたストリーミングアレイにおけるデータフローを表すことができる。各ストリーミングアレイ及び/またはストリーミングアレイごとのネットワークストレージは、ユーザがラックアセンブリ内でプレイしているゲームパッケージをキャッシュする。例えば、人気のタイトルはすべてのラックで利用できる。ユーザが、対応するラックアセンブリにないゲームタイトル(例えば、「キャッシュミス」)を要求すると、ラックアセンブリは、セッションの間に、ゲームタイトルを分散ストレージ(またはデータセンターストレージ)からラックアセンブリに転送するように要求する。
【0119】
前述のように、ゲームパッケージは、ネットワークストレージ411で複数のNVMeドライブに亘ってストライピングされ、前述のように負荷の分散とホットスポット(つまり、ドライブの過度の使用)の防止が行われる。特に、ネットワークストレージ411の管理は、すべてのNVMeドライブに亘って異なるデータストレージ方法(例えば、RAIDストライピング)を実装することができる。
【0120】
図7Bに示されるように、DMAエンジン741は、NTBを含むPCIeスイッチ407に位置付けられ、対応するNVMeドライブ(複数可)は、データをネットワークストレージ411のRAM760に転送し、ネットワークストレージ411は、次いでデータをRAM760から計算ノードに転送する。特に、ステップ1で、計算ノード710は、PCIeスイッチ407を介してネットワークストレージ411からデータを要求する。ネットワークストレージ411は、NVMeドライブ(例えば、ドライブ740A~740N)からのデータ検索を処理するように構成される。具体的には、ステップ2で、ネットワークストレージ411のストレージドライバ720(例えば、RAIDドライバ)が要求を受信し、計算ノード710からのデータの要求を処理して、データが格納されているNVMeドライブまたは複数のドライブを位置付ける。説明の目的で、データは、データの要求のためにNVMeドライブ740Aに位置付けられ得るが、データは複数のドライブにわたってストライピングされ得る(例えば、ゲームアプリケーションのゲームパッケージ用)。
NVMeドライブは共有できない(SR-IOVを除く)ため、ネットワークストレージ411は各ジョブまたはリクエストの提出/完了キューを管理するように構成されている。図示のように、ストレージドライバ720は、対応するオフセット、サイズ、及び宛先アドレスと共に、適切なNVMeドライブ(複数可)のデータ検索のためのコマンドをキューに入れる。宛先アドレスは、計算ノードのNTB(不透明ブリッジ)マップRAMを含む、ネットワークストレージのメモリマップ内の任意のアドレスにすることができる。例えば、データに対する要求は、NVMeドライブ730Aのためにキューに入れることができる。対応するNVMeドライブ(複数可)がデータにアクセスした後、その1つまたは複数のドライブは、完了キューに書き戻し、要求が処理されたことを示す(例えば、システム3は、読み取りまたは書き込み動作が対応するNVMeドライブ(複数可)において完了したことを示す更新をもたらす割り込みを受け取る)。このようにして、要求している計算ノード710は、データの検索について通知を受けることができる。
【0121】
ステップ3で、NVMeドライブ730Aは、宛先アドレスとしてネットワークストレージ411のRAM760を使用する。データは最初にRAM760に格納されるため、需要の高いデータをキャッシュすることができる。例えば、ゲームタイトルがキャッシュされる場合があり、複数のユーザがそのゲームのプレイを要求している。例として、キャッシングにより、64キビバイト(kiB)要求のNVMeドライブから最適な128kiBの要求のサイズでの読み取りが可能になる。NVMeドライブ730Aからネットワークストレージ411のRAM760へのデータの転送が完了すると、ステップ4で、ネットワークストレージ411は、データを要求する計算ノード710のRAM711(例えば、MP4)へのDMA転送をスケジュールする。ステップ5で、DMAエンジン741はRAM760からデータを取得する。ステップ6で、PCIeスイッチ407のDMAエンジン741は、PCIeスイッチ407を介して計算ノード710のメモリにデータを戻す。例えば、要求されたデータは、計算ノード710のRAM711(例えば、MP4 RAM)に格納され得る。
【0122】
図8は、本開示の様々な実施形態の態様を実行するために使用することができる例示的なデバイス800のコンポーネントを示す。例えば、図8は、本開示の実施形態による、ラックアセンブリ内などの対応するストリーミングアレイの中で構成された、対応する計算スレッドの計算ノードに至るネットワークストレージへの高速アクセスを提供するのに適した例示的なハードウェアシステムを示す。このブロック図は、各々が本発明の実施形態を実施するために適した、パーソナルコンピュータ、サーバコンピュータ、ゲームコンソール、モバイルデバイス、または他のデジタルデバイスを組み込むことができる、またはそれらであり得るデバイス800を示す。デバイス800は、ソフトウェアアプリケーション及び任意選択的にオペレーティングシステムを動作させる中央処理装置(CPU)802を含む。CPU802は、1つまたは複数の同種または異種の処理コアで構成され得る。
【0123】
様々な実施形態によれば、CPU802は、1つ以上の処理コアを有する1つ以上の汎用マイクロプロセッサである。さらなる実施形態は、ゲーム実行中のグラフィック処理のために構成されたアプリケーションの、媒体及び双方向エンターテインメントアプリケーションなどのきわめて並列かつ計算集約的なアプリケーションに特に適合されたマイクロプロセッサアーキテクチャを有する1つ以上のCPUを使用し、実装することができる。
【0124】
メモリ804は、CPU802及びGPU816が使用するアプリケーション及びデータを記憶する。ストレージ806は、アプリケーション及びデータ用の不揮発性ストレージ及び他のコンピュータ可読媒体を提供し、かつ、固定ディスクドライブ、取り外し可能ディスクドライブ、フラッシュメモリデバイス、及びCD-ROM、DVD-ROM、Blu-ray(登録商標)、HD-DVD、または他の光学記憶デバイス、ならびに信号伝送及び記憶媒体を含み得る。
ユーザ入力デバイス808は、1人または複数のユーザからのユーザ入力をデバイス800に伝達し、その例は、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、スチルもしくはビデオレコーダ/カメラ、及び/またはマイクロフォンを含み得る。ネットワークインターフェース809は、デバイス800が電子通信ネットワークを介して他のコンピュータシステムと通信することを可能にし、かつ、ローカルエリアネットワーク、及びインターネットなどの広域ネットワークを介する有線または無線通信を含み得る。
オーディオプロセッサ812は、CPU802、メモリ804、及び/またはストレージ806によって提供される命令及び/またはデータから、アナログまたはデジタルのオーディオ出力を生成するように適合されている。CPU802、GPU816を含むグラフィックサブシステム、メモリ804、データストレージ806、ユーザ入力デバイス808、ネットワークインターフェース809、及びオーディオプロセッサ812を含むデバイス800のコンポーネントは、1つ以上のデータバス822を介して接続されている。
【0125】
グラフィックサブシステム814がさらに、データバス822及びデバイス800のコンポーネントと接続されている。グラフィックサブシステム814は、少なくとも1つのグラフィック処理ユニット(GPU)816及びグラフィックメモリ818を含む。グラフィックメモリ818は、出力画像の各画素の画素データを格納するために使用される表示メモリ(例えば、フレームバッファ)を含む。グラフィックメモリ818は、GPU816と同じデバイスに統合する、GPU816に別個のデバイスとして接続する、かつ/またはメモリ804内に実装することができる。画素データは、CPU802から直接グラフィックメモリ818へ提供することができる。
他の形態では、CPU802は、所望の出力画像を定義するデータ及び/または命令をGPU816に提供し、GPU816は、そこから、1つ以上の出力画像の画素データを生成する。所望の出力画像を定義するデータ及び/または命令は、メモリ804及び/またはグラフィックメモリ818に格納することができる。実施形態において、GPU816は、シーンの形状、照明、陰影、質感、動き、及び/またはカメラのパラメータを定義する命令及びデータから、出力画像の画素データを生成する3Dレンダリング機能を含む。GPU816はさらに、シェーダプログラムを実行可能な1つまたは複数のプログラム可能実行ユニットを含み得る。
【0126】
グラフィックサブシステム814は、ディスプレイデバイス810に表示されるように、または投影システム(図示せず)によって投影されるように、グラフィックメモリ818から画像用の画素データを定期的に出力する。ディスプレイデバイス810は、デバイス800からの信号に応じて視覚情報を表示可能である任意のデバイスであり得、これにはCRT、LCD、プラズマ、及びOLEDディスプレイが含まれる。デバイス800は、ディスプレイデバイス810に、例えばアナログ信号またはデジタル信号を提供することができる。
【0127】
他の実施形態では、グラフィックサブシステム814は、対応するCPU上で実行されている単一のアプリケーションのためにグラフィック処理を実行するために組み合わされる複数のGPUデバイスを含む。例えば、複数のGPUは、画像フレームのオブジェクトをレンダリングする前に、インターリーブされる可能性のある画面領域に対してジオメトリを事前にテストすることにより、アプリケーションのジオメトリの複数のGPUレンダリングを実行できる。
他の例では、複数のGPUは、フレームのレンダリングの他の形式を実行でき、この場合、GPU1は最初のフレームをレンダリングし、GPU2は2番目のフレームを連続したフレーム期間でレンダリングし、最後のGPUに到達すると、最初のGPUが次のビデオフレームをレンダリングする(例えば、GPUが2つしかない場合、GPU1は3番目のフレームをレンダリングする)。つまり、フレームをレンダリングするときにGPUが回転する。レンダリング動作は重複する可能性があり、それにおいて、GPU1が最初のフレームのレンダリングを終了する前にGPU2が2番目のフレームのレンダリングを開始できる。
他の形態では、複数のGPUデバイスに、レンダリング及び/またはグラフィックスパイプラインで異なるシェーダー動作を割り当てることができる。マスターGPUがメインのレンダリングと合成を実行している。例えば、3つのGPUを含むグループでは、マスターGPU1がメインレンダリング(例えば、最初のシェーダー動作)を実行し、スレーブGPU2とスレーブGPU3からの出力の合成を実行でき、スレーブGPU2は2番目のシェーダー(例えば、川などの流体エフェクト)動作を実行でき、スレーブGPU3は3番目のシェーダー(例えば、粒子の煙)動作を実行でき、マスターGPU1は、GPU1、GPU2、及びGPU3のそれぞれからの結果を合成する。
このようにして、様々なGPUを割り当てて、様々なシェーダー動作(フラグを振る、風、煙の発生、火など)を実行してビデオフレームをレンダリングできる。さらに別の実施形態では、3つのGPUのそれぞれを、ビデオフレームに対応するシーンの異なるオブジェクト及び/または部分に割り当てることができる。上記の実施形態及び実施態様では、これらの動作は、同じフレーム期間で(同時に並行して)、または異なるフレーム期間で(順次並列に)実行することができる。
【0128】
したがって、本開示は、ラックアセンブリ内などの、対応するストリーミングアレイ内に構成された対応する計算スレッドの計算ノードに至るネットワークストレージへの高速アクセスを提供するように構成される方法及びシステムについて説明する。
【0129】
本明細書で定められる様々な実施形態が、本明細書に開示する様々な特徴を使用し、特定の実施態様に結合され得る、または組み込まれ得ることを理解されたい。したがって、提供される例は、可能な例の一部にすぎず、様々な要素を組み合わせることでより多くの実施態様を規定することが可能な様々な実施態様に制限を加えるものではない。ある例では、ある実施態様は、開示されたまたは同等の実施態様の趣旨から逸脱することなく、より少ない要素を含んでもよい。
【0130】
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースもしくはプログラム可能な消費者向け電気製品、ミニコンピュータ、及びメインフレームコンピュータなどを含む様々なコンピュータシステム構成で実施されてよい。本開示の実施形態はまた、有線ベースネットワークまたは無線ネットワークを介してリンクされる遠隔処理デバイスによりタスクが行われる分散コンピューティング環境においても、実施することができる。
【0131】
上記の実施形態を念頭に置いて、本開示の実施形態がコンピュータシステムに格納されたデータを含む様々なコンピュータ実装の動作を使用し得ることを理解されたい。これらの動作は、物理量の物理的操作を必要とする動作である。本開示の実施形態の一部を形成する、本明細書で説明される動作のうちのいずれも、有用な機械動作である。開示の実施形態はまた、これら動作を実行するためのデバイスまたは装置に関する。装置は、必要な目的のために特別に構築することができる。または、装置は、コンピュータに記憶されたコンピュータプログラムにより選択的に起動または構成される汎用コンピュータであってもよい。詳細には、本明細書の教示にしたがって書かれたコンピュータプログラムと共に様々な汎用マシンを使用することができる。または、必要な動作を実行するためにさらに特化した装置を構築するほうがより好都合な場合もある。
【0132】
本開示はまた、コンピュータ可読媒体上のコンピュータ可読コードとしても具現化することができる。コンピュータ可読媒体は、後でコンピュータシステムにより読み出され得るデータを格納できる任意のデータストレージデバイスである。コンピュータ可読媒体の例は、ハードドライブ、ネットクワーク接続ストレージ(NAS)、読み出し専用メモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープ、並びに他の光学及び非光学データストレージデバイスを含む。コンピュータ可読媒体には、コンピュータ可読コードが分散方式で格納され実行されるように、ネットワーク接続されたコンピュータシステムにわたり分散されたコンピュータ可読有形媒体が含まれ得る。
【0133】
方法の動作を特定の順序で記載したが、オーバーレイ動作の処理が所望の方法で実行される限り、動作間に他のハウスキーピング動作が実行されてよく、または動作がわずかに異なる時間に起こるように調整されてよく、またはシステム内に動作を分散することで、処理に関連する様々な間隔で処理動作が起こることを可能にしてよいことを、理解すべきである。
【0134】
前述の開示は、理解を明確にするためにある程度詳細に説明されたが、添付の特許請求の範囲内で特定の変更及び修正を実施できることは明らかであろう。したがって、本実施形態は、限定ではなく例示としてみなされるべきであり、本開示の実施形態は、本明細書に提供される詳細に限定されるものではなく、添付の特許請求の範囲内及び均等物内で変更されてよい。
図1
図2A
図2B
図2C
図3A
図3B
図4A
図4B
図4C
図5A
図5B
図5C
図6
図7A
図7B
図8