JP2023532484A - クラウドゲーム用高速セーブデータストレージ - Google Patents
クラウドゲーム用高速セーブデータストレージ Download PDFInfo
- Publication number
- JP2023532484A JP2023532484A JP2022580453A JP2022580453A JP2023532484A JP 2023532484 A JP2023532484 A JP 2023532484A JP 2022580453 A JP2022580453 A JP 2022580453A JP 2022580453 A JP2022580453 A JP 2022580453A JP 2023532484 A JP2023532484 A JP 2023532484A
- Authority
- JP
- Japan
- Prior art keywords
- data
- cloud
- server
- storage
- game
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 139
- 238000007726 management method Methods 0.000 claims abstract description 242
- 238000000034 method Methods 0.000 claims description 58
- 238000004891 communication Methods 0.000 claims description 29
- 230000005540 biological transmission Effects 0.000 claims description 6
- 230000009365 direct transmission Effects 0.000 claims description 5
- 230000002093 peripheral effect Effects 0.000 claims description 3
- 239000007787 solid Substances 0.000 claims description 3
- 239000000872 buffer Substances 0.000 description 28
- 238000012545 processing Methods 0.000 description 22
- 239000008186 active pharmaceutical agent Substances 0.000 description 16
- 238000012546 transfer Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000003993 interaction Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000000875 corresponding effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 239000004744 fabric Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000014616 translation Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000002567 autonomic effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/355—Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/20—Input arrangements for video game devices
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/352—Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/358—Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/45—Controlling the progress of the video game
- A63F13/49—Saving the game status; Pausing or ending the game
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/77—Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/79—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- General Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Pinball Game Machines (AREA)
Abstract
ビデオゲームは、ユーザによるプレイのためにクラウドゲームサーバ上で実行される。ユーザのユーザデータは、クラウドストレージサーバ内に格納される。ビデオゲームによって発行されたデータアクセス要求は、管理サーバによって受信される。データアクセス要求は、クラウドストレージサーバ内に格納されている要求されたユーザデータを識別する。要求されたユーザデータは、クラウドストレージサーバ内の低性能データストレージデバイスから管理サーバ内の高速データストレージデバイスにコピーされる。高速データストレージデバイスは、クラウドストレージサーバ内のデータストレージデバイスよりも速いデータ速度及び低いレイテンシで動作する。管理サーバ内の高速データストレージデバイスは、データアクセス要求を満たすためにクラウドストレージサーバ内の低性能データストレージデバイスを使用する代わりに、ビデオゲームによるデータアクセス要求を満たすために使用される。【選択図】図3
Description
ビデオゲーム業界は、長年にわたり多くの変化を遂げてきた。計算能力の増大に伴い、ビデオゲームの開発者もまた、この向上した計算能力を利用するゲームソフトウェアを開発してきた。そのために、ビデオゲーム開発者は、高度な演算及び数学を取り入れて、非常に現実的なゲーム体験を生み出しているゲームをコーディングしてきた。
ゲーム開発者は、計算能力の拡大に対応するだけでなく、ユーザとゲームシステムとの間のインタラクションあるいは対話を強化するオンラインゲームも開発している。インタラクティブオンラインゲーム、あるいは対話型オンラインゲームは、ユーザがインターネット上でインタラクティブに他のユーザと対戦するか、または一緒にプレイし、そのようなインララクションあるいは対話をキャプチャする機能を提供する。さらに、クラウドベースの計算の傾向が強まる中、ゲーム開発者は、計算能力の向上とユーザのインタラクティビティの向上を利用することによって既存のレガシーゲームをプレイするため及び新しいゲームを開発するため新しい方法を開発している。クラウドベースの計算システムは、ゲームアプリケーションを実行し、ゲームプレーヤからの入力を受け取り、ゲームプレーヤが見るためディスプレイ上に映像を描画するように構成され得る、ゲームプレーヤの場所に存在するリモートクライアントシステムと通信するクラウドベースの処理サーバを含むことができる。本発明は、このような背景の下になされたものである。
1つの例示的な実施形態では、クラウドゲームシステムが開示される。クラウドゲームシステムは、ユーザのコントローラデバイスから受信した入力に従ってビデオゲームを実行するように構成されたクラウドゲームサーバを含む。クラウドゲームサーバは、ユーザによるビデオゲームのプレイをユーザのローカル計算システムに反映するビデオストリームの伝送を指示するように構成される。クラウドゲームシステムには、クラウドストレージサーバも含まれる。クラウドストレージサーバは、ユーザのユーザデータを格納するためのデータストレージデバイスを含む。ユーザデータには、ユーザによるビデオゲームのプレイを記録あるいはメモリアライズ(memorialize)するデータが含まれる。クラウドゲームシステムは、クラウドゲームサーバおよびクラウドストレージサーバの両方とデータ通信する管理サーバも含む。管理サーバには、クラウドストレージサーバ内のデータストレージデバイスよりも速いデータ速度と低いレイテンシで動作する高速データストレージデバイスが含まれる。管理サーバは、クラウドゲームサーバ上で実行されているビデオゲームによって発行されたデータアクセス要求を受信するようにプログラムされている。データアクセス要求は、クラウドストレージサーバ内のデータストレージデバイスに格納された要求されたデータを識別する。管理サーバは、要求されたデータをクラウドストレージサーバ内のデータストレージデバイスから高速データストレージデバイスにコピーするようにプログラムされている。管理サーバは、クラウドストレージサーバがデータアクセス要求に応答する代わりに、高速データストレージデバイスを使用してデータアクセス要求に応答するようにプログラムされている。
例示的な実施形態では、クラウドゲームシステムを操作するための方法が開示される。方法は、ユーザのコントローラデバイスから受信した入力に従って、クラウドゲームサーバ上でビデオゲームを実行することを含む。方法は、ユーザによるビデオゲームのプレイをユーザのローカル計算システムに反映するビデオストリームの伝送を指示するようにクラウドゲームサーバを操作することを含む。方法は、ユーザのユーザデータをクラウドストレージサーバに格納することも含む。ユーザデータには、ユーザによるビデオゲームのプレイを記録するデータが含まれる。方法は、管理サーバでデータアクセス要求を受信することも含む。データアクセス要求は、クラウドゲームサーバ上で実行されているビデオゲームによって発行される。データアクセス要求は、クラウドストレージサーバ内のデータストレージデバイスに格納された要求されたデータを識別する。方法は、要求されたデータをクラウドストレージサーバ内のデータストレージデバイスから管理サーバ内の高速データストレージデバイスにコピーすることも含む。高速データストレージデバイスは、クラウドストレージサーバ内のデータストレージデバイスよりも速いデータ速度及び低いレイテンシで動作する。方法はまた、クラウドストレージサーバがデータアクセス要求に応答する代わりに、管理サーバ内の高速データストレージデバイスを使用してデータアクセス要求に応答することを含む。
以下の発明を実施するための形態では、本開示の完全な理解をもたらすために、いくつかの具体的な詳細が示されている。しかしながら、本開示の実施形態は、これらの具体的な詳細の一部または全てがなくとも実践できることは、当業者には明らかであろう。他の例では、周知のプロセス動作は、本開示を不必要に不明瞭にしないために、詳細に説明されていない。
次世代のビデオゲーム機には、NVMe(Non-Volatile Memory Express)SSD(ソリッドステートドライブ)などの非常に高速なデータストレージソリューションがあり、HDD(ハードディスクドライブ)などの現在利用可能なデータストレージソリューションよりもはるかに高速である。次世代ビデオゲーム機の非常に高速なデータストレージソリューションは、ゲームの保存などのだけでなく、ゲームデータならびにユーザデータの格納も共有ストレージサーバに依存するクラウドゲームに課題をもたらす。従来のクラウドゲームシステムでは、ユーザデータは通常、コストを抑えるためにHDDレベルのデータストレージ性能で動作するクラウドストレージサーバなどのクラウドストレージソリューション内に格納される。しかし、次世代のビデオゲーム機では、ゲーム機タイトル(ビデオゲーム)のデータアクセスの期待を満たすために、少なくともNVMeレベルのデータストレージ性能が必要とされる。
オンラインビデオゲームの実行のためNVMeレベルのデータストレージ性能を提供すると同時に、オンラインビデオゲームのプレイに関連するユーザデータを格納するための費用対効果の高いHDD技術を引き続き使用するという課題に対応するためのシステムおよび方法が本明細書に開示される。本明細書で使用されるオンラインビデオゲームという用語は、クライアント計算デバイス上でユーザがプレイするためにクラウド計算システムによってクライアント計算デバイスに提供されるビデオゲームを指すことを理解されたい。本明細書で言及されるオンラインビデオゲームは、シングルプレーヤビデオゲームまたはマルチプレーヤビデオゲームであり得る。本明細書で開示されるシステムおよび方法の原理は、オンラインビデオゲームを実行するクラウドゲームサーバと、実行中のオンラインビデオゲームによって現在必要とされるデータが管理サーバ内の高速データストレージ/システムに格納されるクラウドデータストレージソリューションとの間の緊密なデータ通信を提供することであり、一方、実行中のオンラインビデオゲームで緊急に必要とされないセーブデータ及びその他のゲーム関連データは、より低速で費用対効果の高いクラウドストレージサーバに格納される。
図1は、いくつかの実施形態によるクラウドゲームシステム100を示す。クラウドゲームシステム100は、複数(N)のクラウドゲームサーバ103-1~103-Nを含むクラウドゲームサーバラック101を含む。いくつかの実施形態では、クラウドゲームサーバ103-1~103-Nの数(N)は、最大100、またはそれ以上であり得る。クラウドゲームサーバラック101はまた、複数(X)の管理サーバ105-1~105-Xおよび1つまたは複数のストレージサーバ107を含む。ストレージサーバ107は、HDD及び/またはSSDなどの多数のデータストレージデバイス107Aを含む。ストレージサーバ107は、クラウドゲームシステム100でのプレイに利用可能なすべてのビデオゲームを格納する。各管理サーバ105-1~105-Xは、クラウドゲームセッションを管理する責任を負う。また、所定の管理サーバ105-1~105-Xは、複数のクラウドゲームセッションを同時に管理する責任を負うことができる。いくつかの実施形態では、各管理サーバ105-1~105-Xは、必要に応じて1つまたは複数のクラウドゲームサーバ103-1~103-Nの電源を入れ、要求されたビデオゲームをストレージサーバ107から、クラウドゲームサーバ103-1~103-Nのうちの所定の1つにロードし、クラウドゲームサーバ103-1~103-Nの所定のサーバ上で要求されたビデオゲームの実行を開始し、クラウドゲームサーバ103-1~103-Nの所定の1つにユーザをログインさせ、他の操作の中でも、クラウドストレージサーバ109からログインユーザにユーザデータ111をマウントする。
いくつかの実施形態では、ストレージサーバ107を、HDD及び/またはSSDを、ネットワークインターフェースカード(NIC)及び小型の中央処理装置(CPU)を搭載することにより、ミニサーバに変えるストレージ構成によって置き換えることができる。このようなストレージ構成の例として、組み込みSSD(ESSD)がある。例えば、一部のESSDでは、フリップチップパッケージプロセスでボールグリッドアレイ(BGA)形式を使用して、メモリコントローラ集積回路(IC)チップが、単一のパッケージ内のSSDと組み合わされている。いくつかの実施形態では、ICチップおよびSSDを含む単一のパッケージは、モジュールコネクタを使用せずにプリント回路基板(マザーボード)に直接取り付けることができる。もちろん、様々な実施形態においてストレージサーバ107の代わりに使用できるESSDの多くの可能な構成があることを理解されたい。
ストレージサーバ107の代わりにESSDを使用する1つの動機は、ストレージデータ通信がネットワークデータ通信より速くなったため、従来のストレージサーバがうまくスケーリングできなくなったことである。いくつかの実施形態では、ストレージサーバ107の代わりにESSDストレージ構成が使用される場合、ゲームは複数のESSDにわたってストライピングすることができる。これらの実施形態では、クラウドゲームサーバ103-1~103-Nは、ゲームの異なる部分のために異なるドライブ(異なるESSD)に到達する必要がある。また、いくつかの実施形態では、ESSDの使用をクラウドストレージサーバ109に拡張することができる。そのような実施形態では、クラウドゲームサーバ103-1~103-NからESSDベースのクラウドストレージサーバ109の実装の詳細を隠すように機能する管理サーバ105-1~105-Xと共に、多くのESSDのクラスターを有することが必要となる。
ストレージサーバ107の代わりにESSDを使用する1つの動機は、ストレージデータ通信がネットワークデータ通信より速くなったため、従来のストレージサーバがうまくスケーリングできなくなったことである。いくつかの実施形態では、ストレージサーバ107の代わりにESSDストレージ構成が使用される場合、ゲームは複数のESSDにわたってストライピングすることができる。これらの実施形態では、クラウドゲームサーバ103-1~103-Nは、ゲームの異なる部分のために異なるドライブ(異なるESSD)に到達する必要がある。また、いくつかの実施形態では、ESSDの使用をクラウドストレージサーバ109に拡張することができる。そのような実施形態では、クラウドゲームサーバ103-1~103-NからESSDベースのクラウドストレージサーバ109の実装の詳細を隠すように機能する管理サーバ105-1~105-Xと共に、多くのESSDのクラスターを有することが必要となる。
クラウドゲーム(またはオンラインゲーム)では、ユーザ(ゲームプレーヤ)121は、ローカル計算システム120を操作して、インターネットなどのネットワーク123上のクラウドゲームシステム100にログインし、クラウドゲームサーバ103-1~103-Nのうちの1つまたは複数上でリモートで実行されるオンラインビデオゲームをプレイする。いくつかの実施形態では、ユーザ121は、管理サーバ105-1~105-Xのうちの1つを介してクラウドゲームシステム100にログインする。しかし、ユーザ121のログインに関連する様々なクラウドサービスがあることを理解されたい。例えば、ユーザ121を認証すること、ユーザ121が十分な品質のインターネット接続を有することを確実にすること、およびユーザ121がログインできるユーザ121の近くにある利用可能なサーバを見つけることに関わるクラウドサービスがある。
いくつかの実施形態では、ローカル計算システム120は、ゲームコントローラ125と、テレビまたはモニタなどのディスプレイデバイス126とを含む。いくつかの実施形態では、ローカル計算システム120は、ディスプレイデバイス126に接続されたドングル128を含み、ドングル128は、ディスプレイデバイス126のネットワークインターフェースコントローラ(NIC)が、ゲームコントローラ125からネットワーク123に信号を伝送するために使用することができるように、ゲームコントローラ125とディスプレイデバイス126との間のデータ通信を可能にするように構成されている。いくつかの実施形態では、ローカル計算システム120は、ローカルゲーム機127も含む。これらの実施形態では、ゲームコントローラ125によって生成された信号は、ローカルゲーム機127のNICを使用して、ローカルゲーム機127を介してネットワーク123に伝送することができる。
また、いくつかの実施形態では、ゲームコントローラ125は、WIFIネットワークなどのローカルエリアネットワークを通じてネットワーク123に信号を直接伝達することができる。また、いくつかの実施形態では、ユーザ121は、ローカル計算システム120以外のローカル計算デバイスでオンラインビデオゲームをプレイすることができる。例えば、いくつかの実施形態では、ユーザ121は、中でも、携帯電話、タブレット、ラップトップ、スマートカーシステムなどのモバイル計算デバイスでオンラインビデオゲームをプレイすることができる。また、いくつかの実施形態では、ユーザ121は、デスクトップ計算システム上でオンラインビデオゲームをプレイすることができる。説明を簡単にするために、ここでのローカル計算システム120への言及は、ユーザ121がオンラインビデオゲームをプレイできる任意の他の計算デバイスへの言及も伝える。
いくつかの実施形態では、ローカル計算システム120は、ゲームコントローラ125と、テレビまたはモニタなどのディスプレイデバイス126とを含む。いくつかの実施形態では、ローカル計算システム120は、ディスプレイデバイス126に接続されたドングル128を含み、ドングル128は、ディスプレイデバイス126のネットワークインターフェースコントローラ(NIC)が、ゲームコントローラ125からネットワーク123に信号を伝送するために使用することができるように、ゲームコントローラ125とディスプレイデバイス126との間のデータ通信を可能にするように構成されている。いくつかの実施形態では、ローカル計算システム120は、ローカルゲーム機127も含む。これらの実施形態では、ゲームコントローラ125によって生成された信号は、ローカルゲーム機127のNICを使用して、ローカルゲーム機127を介してネットワーク123に伝送することができる。
また、いくつかの実施形態では、ゲームコントローラ125は、WIFIネットワークなどのローカルエリアネットワークを通じてネットワーク123に信号を直接伝達することができる。また、いくつかの実施形態では、ユーザ121は、ローカル計算システム120以外のローカル計算デバイスでオンラインビデオゲームをプレイすることができる。例えば、いくつかの実施形態では、ユーザ121は、中でも、携帯電話、タブレット、ラップトップ、スマートカーシステムなどのモバイル計算デバイスでオンラインビデオゲームをプレイすることができる。また、いくつかの実施形態では、ユーザ121は、デスクトップ計算システム上でオンラインビデオゲームをプレイすることができる。説明を簡単にするために、ここでのローカル計算システム120への言及は、ユーザ121がオンラインビデオゲームをプレイできる任意の他の計算デバイスへの言及も伝える。
さらに、様々な実施形態では、データ(ビデオストリームデータまたはオーディオデータまたは触覚フィードバックデータなど)は、ネットワーク123を介してクラウドゲームシステム100からローカル計算システム120に伝達される。いくつかの実施形態では、データは、ネットワーク123を介してクラウドゲームシステム100からディスプレイデバイス126に伝達される。いくつかの実施形態では、データは、ネットワーク123を介してクラウドゲームシステム100からローカルゲーム機127に、そして、ローカルゲーム機127からディスプレイデバイス126に伝達される。また、いくつかの実施形態では、データは、ネットワーク123を介してクラウドゲームシステム100からゲームコントローラ125に伝達される。
ゲームプレイ中、ユーザ121は、ネットワーク123を介してクラウドゲームサーバ103-1~103-Nに伝送されるゲームコマンドを生成する。いくつかの実施形態では、ユーザ121は、ゲームコントローラ125を使用してゲームコマンドを生成し、ゲームコマンドは、ゲームコントローラ125からネットワーク123へ、そしてクラウドゲームサーバ103-1~103-Nへ信号形式で伝送される。いくつかの実施形態では、ゲームコマンドは、ゲームコントローラ125からローカルゲーム機127またはディスプレイデバイス126に信号形式で伝送され、そこからゲームコマンドはネットワーク123を介してクラウドゲームサーバ103-1~103-Nに伝送される。
様々な実施形態では、ゲームコントローラ125からネットワーク123への信号形式のゲームコマンドの伝送は、有線ネットワーク接続もしくは無線ネットワーク接続、またはそれらの組み合わせを介して行うことができる。クラウドゲームサーバ103-1~103-Nは、ユーザ121から受信したゲームコマンドに従ってビデオゲームを実行し、ビデオゲームのユーザプレイを反映するビデオストリームを生成する。ビデオストリームは、ディスプレイデバイス126上に表示するために、ネットワーク123を介してクラウドゲームサーバ103-1~103-Nからユーザ121のローカル計算システム120に伝送される。
様々な実施形態では、ゲームコントローラ125からネットワーク123への信号形式のゲームコマンドの伝送は、有線ネットワーク接続もしくは無線ネットワーク接続、またはそれらの組み合わせを介して行うことができる。クラウドゲームサーバ103-1~103-Nは、ユーザ121から受信したゲームコマンドに従ってビデオゲームを実行し、ビデオゲームのユーザプレイを反映するビデオストリームを生成する。ビデオストリームは、ディスプレイデバイス126上に表示するために、ネットワーク123を介してクラウドゲームサーバ103-1~103-Nからユーザ121のローカル計算システム120に伝送される。
クラウドゲームサーバ103-1~103-Nは、ネットワークストレージプロトコル117を使用して、ストレージサーバ107からゲームデータ113およびゲーム実行可能ファイル115のすべてをロードする。いくつかの実施形態では、ネットワークストレージプロトコル117は、とりわけiSCSI(内部小型コンピュータシステムインターフェース)などのブロックストレージを利用する。いくつかの実施形態では、ネットワークストレージプロトコルは、とりわけ、NFS(ネットワークファイルシステム)またはCIFS(共通インターネットファイルシステム)などのファイルストレージを利用する。いくつかの実施形態では、クラウドゲームサーバ103-1~103-Nは、サポートされるネットワークストレージプロトコル117において制限され得る。例えば、いくつかの実施形態では、ソフトウェアドライバがないため、クラウドゲームサーバ103-1~103-Nは、サポートされるネットワークストレージプロトコル117において制限され得る。または、いくつかの実施形態では、一部のネットワークストレージプロトコルが、CPU使用率及び/またはメモリ使用量などのリソースを過剰に使用することにより、クラウドゲームサーバ103-1~103-Nは、サポートされるネットワークストレージプロトコル117において制限され得る。
いくつかの実施形態では、クラウドゲームサーバ103-1~103-Nは、サポートされるネットワークストレージプロトコル117において制限され得るため、クラウドゲームサーバ103-1~103-Nによるユーザデータ111へのアクセスは、プロキシとして機能する管理サーバ105-1~105-Xを用いて、管理サーバ105-1~105-Xを介して行われ得る。これらの実施形態では、管理サーバ105-1~105-Xは、クラウドストレージサーバ109からユーザデータ111をマウントし、クラウドゲームサーバ103-1~103-Nによってサポートされるデータストレージプロトコルを使用して、ユーザデータ111をクラウドゲームサーバ103-1~103-Nに公開する。
いくつかの実施形態では、クラウドゲームサーバ103-1~103-Nは、サポートされるネットワークストレージプロトコル117において制限され得るため、クラウドゲームサーバ103-1~103-Nによるユーザデータ111へのアクセスは、プロキシとして機能する管理サーバ105-1~105-Xを用いて、管理サーバ105-1~105-Xを介して行われ得る。これらの実施形態では、管理サーバ105-1~105-Xは、クラウドストレージサーバ109からユーザデータ111をマウントし、クラウドゲームサーバ103-1~103-Nによってサポートされるデータストレージプロトコルを使用して、ユーザデータ111をクラウドゲームサーバ103-1~103-Nに公開する。
様々な実施形態では、クラウドストレージサーバ109は、オブジェクトストレージ、ファイルストレージ、ブロックストレージ、または他のデータストレージプロトコルなど、様々なデータストレージプロトコルによってデータストレージを公開する。管理サーバ105-1~105-Xは、オブジェクトストレージ、ファイルストレージ、もしくはブロックストレージ、または他のデータストレージプロトコルであるかどうかにかかわらず、クラウドストレージサーバ109によって使用されるあらゆるデータストレージプロトコルとインターフェースするように装備される。管理サーバ105-1~105-Xはまた、オブジェクトストレージ、ファイルストレージ、もしくはブロックストレージ、または他のデータストレージプロトコルなどの様々なデータストレージプロトコルによって、それ自体のデータストレージを公開するように構成されている。
また、管理サーバ105-1~105-Xが自身のデータストレージを公開するデータストレージプロトコルは、クラウドストレージサーバ109が自身のデータストレージを公開するデータストレージプロトコルと同じであっても異なっていてもよい。例えば、いくつかの実施形態では、管理サーバ105-1~105-Xは、クラウドストレージシステム109からのオブジェクトストレージをファイルシステムとしてマウントし、次にマウントされたファイルシステムをクラウドゲームサーバ103-1~103-NのNFSプロトコルに提示するようにプログラムされる。同様に、別の例示的な実施形態では、管理サーバ105-1~105-Xは、クラウドストレージシステム109からのブロックストレージをファイルシステムとしてマウントし、次にマウントされたファイルシステムをクラウドゲームサーバ103ー1~103-Nに提示するようにプログラムされる。いくつかの実施形態では、ブロックストレージは、Ceph RBD(RADOS(Reliable Autonomic Distributed Object Store)ブロックデバイス)に基づく。しかし、他の実施形態では、ブロックストレージは、任意の種類のブロックデータストレージプロトコルに基づくことができる。
また、管理サーバ105-1~105-Xが自身のデータストレージを公開するデータストレージプロトコルは、クラウドストレージサーバ109が自身のデータストレージを公開するデータストレージプロトコルと同じであっても異なっていてもよい。例えば、いくつかの実施形態では、管理サーバ105-1~105-Xは、クラウドストレージシステム109からのオブジェクトストレージをファイルシステムとしてマウントし、次にマウントされたファイルシステムをクラウドゲームサーバ103-1~103-NのNFSプロトコルに提示するようにプログラムされる。同様に、別の例示的な実施形態では、管理サーバ105-1~105-Xは、クラウドストレージシステム109からのブロックストレージをファイルシステムとしてマウントし、次にマウントされたファイルシステムをクラウドゲームサーバ103ー1~103-Nに提示するようにプログラムされる。いくつかの実施形態では、ブロックストレージは、Ceph RBD(RADOS(Reliable Autonomic Distributed Object Store)ブロックデバイス)に基づく。しかし、他の実施形態では、ブロックストレージは、任意の種類のブロックデータストレージプロトコルに基づくことができる。
管理サーバ105-1~105-Xをクラウドゲームサーバ103-1~103-Nとクラウドストレージサーバ109との間のデータパスにおいてプロキシとして機能させることは、クラウドゲームサーバ103-1~103-Nによって発行されたデータアクセス要求を満たす際に、ある程度のレイテンシが追加される可能性がある。しかしながら、管理サーバ105-1~105-Xをクラウドゲームサーバ103-1~103-Nとクラウドストレージサーバ109との間のデータパスにおいてプロキシとして機能させることは、クラウドストレージサーバ109とクラウドゲームサーバ103-1~103-Nとの間でデータ転送がどのように管理されるかについてより多くの柔軟性を提供する。例えば、いくつかの実施形態では、管理サーバ105-1~105-Xは、必要に応じて、クラウドゲームサーバ103-1~103-Nが発行するデータ入力/出力要求をバッファリングする及び/またはデータをキャッシュするように動作することができる。例えば、クラウドストレージサーバ109がビジーであるか、または何らかの理由ですぐに利用できない場合、管理サーバ105-1~105-Xは、クラウドゲームサーバ103-1~103-Nによって発行されたデータ入力/出力要求をバッファリングすることによってクラウドストレージサーバ109の可用性の欠如を吸収することができる。
従来、クラウドゲームサーバ103-1~103-Nと管理サーバ105-1~105-X/クラウドストレージサーバ109との間のインタラクションは、ある程度分離されている。例えば、クラウドゲームサーバ103-1~103-Nにはネットワークファイルシステムが提供され、一部のネットワークストレージソフトウェアは、クラウドゲームサーバ103-1~103-Nのデータ読み取りおよび書き込み操作を管理する。この状況では、管理サーバ105-1~105-Xは、クラウドストレージサーバ109からのデータのマウントに単に関与しているが、クラウドゲームサーバ103-1~103-N上で実行中のビデオゲームによってどのデータが読み書きされているか、またはどのデータをビデオゲームがアクセスしているかについての知識はない。
次世代のゲーム機は、毎秒4~5ギガバイト(GB/s)のデータ速度で動作する高速NVMeデータストレージドライブを使用する。比較のために、クラウドストレージシステム109で現在使用されている2.5インチHDDは、毎秒100メガバイト(MB/s)のデータ速度でピークに達する。また、HDDのレイテンシは、NVMeデータストレージドライブよりもはるかに高い。例えば、通常のHDDレイテンシは約10ミリ秒から約20ミリ秒の範囲内であるが、通常のNVMeデータストレージドライブのレイテンシは約0.1ミリ秒未満である。ストレージ性能が向上するにつれて、どれだけ速くビデオゲームがデータストレージにアクセスできるかに関するビデオゲームのプログラミングへの期待も高まる。ビデオゲームでは、多くの場合、データストレージの性能について仮定が行われる。実際のデータストレージ性能が、ビデオゲームで想定されているデータストレージ性能と大きく異なる場合、ビデオゲームがクラッシュするか、ビデオゲーム内でその他の未定義の動作が発生する可能性がある。
いくつかの実施形態では、ローカルゲーム機127上で使用/実行される同じビデオゲームが、多くの場合変更なしに、ストレージサーバ107内に格納され、クラウドゲーム内でクラウドゲームサーバ103-1~103-Nによって実行される。これらのビデオゲームは、特にデータの読み取りおよび書き込み操作に関して、より高速なストレージソリューションを備えたローカルゲーム機127上で実行されるビデオゲームに基づく性能仮定を使用して開発される。したがって、同じビデオゲームがクラウドゲームサーバ103-1~103-N実行される場合、クラウドゲームサーバ103-1~103-Nに実装されたデータストレージソリューションの性能は、ローカルゲーム機127上で利用可能なローカルデータストレージソリューションの性能と実質的に一致するか、またはそれを超える。
クラウドゲームシステム100に実装されたデータストレージソリューションは、次世代のローカルゲーム機127に実装された非常に高速なデータストレージソリューションによって設定されるように、次世代ビデオゲームの期待されるデータ読み取りおよび書き込み性能に追いつくために更新される必要がある。いくつかの実施形態では、既存のクラウドストレージサーバ109を更新して、高速NVMeストレージソリューションを使用することができる。ただし、このアプローチは非常に高価である。したがって、バランスの取れた解決策の目的は、クラウドストレージサーバ109内の性能が制限されたHDDに格納されたデータを保持して費用を削減すると同時に、ビデオゲームで現在必要とされているデータを管理サーバ105-1~105-X内の高速ストレージを通じて確実に利用できるようにすることである。
この目的は、クラウドゲームサーバ103-1~103-Nとクラウドストレージソリューションとの間の密接な協力によって達成されることができ、それは、本質的にクラウドゲームサーバ103-1~103-Nと管理サーバ105-1~105-X/クラウドストレージサーバ109との間のインタラクションを切り離しあるいはデカップリングを行うという従来技術とは逆のものである。いくつかの実施形態では、クラウドゲームサーバ103-1~103-Nとクラウドストレージソリューションとの間の密接な協力は、ビデオゲームが現在アクセスしているデータ、ビデオゲームが次に/まもなくアクセスできるデータ、及びビデオゲームが特定のデータを使用して終了する時に関する情報を取得するために、クラウドゲームサーバ103-1~103-N上で実行中のビデオゲームによって呼び出されるファイルシステムAPI(アプリケーションプログラミングインターフェース)へのフッキングFを伴う。
この目的は、クラウドゲームサーバ103-1~103-Nとクラウドストレージソリューションとの間の密接な協力によって達成されることができ、それは、本質的にクラウドゲームサーバ103-1~103-Nと管理サーバ105-1~105-X/クラウドストレージサーバ109との間のインタラクションを切り離しあるいはデカップリングを行うという従来技術とは逆のものである。いくつかの実施形態では、クラウドゲームサーバ103-1~103-Nとクラウドストレージソリューションとの間の密接な協力は、ビデオゲームが現在アクセスしているデータ、ビデオゲームが次に/まもなくアクセスできるデータ、及びビデオゲームが特定のデータを使用して終了する時に関する情報を取得するために、クラウドゲームサーバ103-1~103-N上で実行中のビデオゲームによって呼び出されるファイルシステムAPI(アプリケーションプログラミングインターフェース)へのフッキングFを伴う。
ファイルシステムアクセスAPIは、特定の理由で特定の時間に発生するデータアクセスをトリガする。様々なオペレーティングシステムが、ファイルシステムアクセスを含む多くのオペレーティングシステムの概念に関するAPIを定義するPOSIX(Portable Operating System Interface)標準に準拠する。ファイルシステムアクセス用の最も一般的な4つのPOSIX APIは、「オープン(open)」、「クローズ(close)」、「リード(read)」、および「ライト(write)」である。「オープン」APIは、ファイルを開くために使用される。「クローズ」APIは、ファイルを閉じるために使用され、データがまだデータストレージデバイスに書き戻されていない場合に、データストレージデバイスへのデータの書き戻しをトリガする。「リード」APIは、データの読み取りに使用される。「ライト」APIは、データの書き込みに使用される。「オープン」および「クローズ」APIは、ファイルへのアクセスを取得するか、または権限を変更するために使用されるAPIである制御パスAPIと見なされる。「リード」および「ライト」APIは、データへのアクセスまたはデータの変更に使用されるAPIであるデータパスAPIと見なされる。
いくつかの実施形態では、ビデオゲーム機APIは、POSIX APIを活用するが、いくつかの追加がある。通常のパーソナルコンピュータまたはサーバコンピュータには、通常、HDDやSSDなどの単一のデータストレージデバイスがあり、1つまたは複数のパーティションがあり、各パーティションにはファイルシステムが構成されている。ビデオゲーム機のストレージシステムは、パーソナルコンピュータまたはサーバコンピュータと同様の方法で構成される。ただし、ビデオゲーム機では、セキュリティ及びユーザ分離の理由から、セーブデータ及びその他のユーザデータは、セーブデータディスクイメージに格納されることが多く、各セーブデータディスクイメージはビデオゲームの個々のセーブスロットに対応している。各セーブデータディスクイメージには独自のファイルシステムがあり、使用前にマウントし、使用後にアンマウントする必要がある。「マウント」操作及び「アンマウント」操作は、制御パスAPIと見なされるそれぞれのAPIによって実行される。したがって、ビデオゲーム機でのデータアクセスフローの例は、1)(任意選択で、必要に応じて)セーブデータディスクイメージを作成、2)セーブデータディスクイメージをマウント、3)ファイルを開く、4)ファイルから読み込み及び/またはファイルにデータを書き込み、5)ファイルを閉じる、及び6)セーブデータディスクイメージをアンマウント、である。
ビデオゲームにおけるデータアクセスフローの性能の重要な部分は、「リード」および「ライト」APIを使用するデータパス内にある。データ「リード」操作の場合、ビデオゲームは、ビデオゲームの継続的な正しい実行をサポートするために、一定時間内にデータが返されることを期待する場合がある。同様に、データ「ライト」操作の場合、ビデオゲームは、ビデオゲームの継続的な正しい実行をサポートするために、データが一定時間内に書き込まれることを期待する場合がある。ストレージソリューションがデータの「リード」及び/または「ライト」を必要な時間内に実行できない場合、ビデオゲームの実行中に悪い事象が起きる可能性がある。発生する可能性のあるこれらの悪い事象の正確な種類は、ビデオゲームの設計とビデオゲームコードの記述方法によって異なる。発生する可能性のあるこれらの悪い事象のいくつかの例としては、ビデオゲームのクラッシュ、ビデオゲーム内での未定義の動作、及び/または、とりわけ、ビデオゲーム内での音の途切れが含まれる。
ビデオゲームがデータの「リード」APIまたはデータの「ライト」APIを呼び出すと、ビデオゲームは呼び出されたAPIに1つまたは複数のフラグを渡す。これらのフラグを設定して、呼び出されたAPIの実行方法を制御できる。ビデオゲーム内でのデータ読み取りとデータ書き込みの両方の動作は、ビデオゲームが呼び出されたAPIに渡すフラグと、ビデオゲームの構造に依存する。例えば、一部のビデオゲームでは、データ読み取り操作とデータ書き込み操作に同期としてフラグを立てることができ、これは、データの「リード」APIとデータの「ライト」APIが、データ読み取り操作とデータ書き込み操作が完了するまで、ビデオゲームの実行の継続を妨害することを意味する。ビデオゲームが、ゲームレンダリングを実行するコードからの同期データ読み取りまたはデータ書き込みを呼び出すように記述されている場合、ストレージデバイスの速度が遅いために読み取りまたは書き込み操作の完了に時間がかかるときにはいつも、ビデオゲームの速度低下、または途切れがある。しかし、ビデオゲームが、データ書き込み操作に、通常はデータ書き込み操作に対して行われる、非同期としてフラグを立てた場合、ビデオゲームは書き込まれるデータをオペレーティングシステムに渡し、書き込まれるデータを待機せずにビデオゲームの実行を継続する。ビデオゲームにおけるデータ読み取りおよびデータ書き込み操作の場所、およびデータ読み取りおよびデータ書き込み操作に関連付けられたフラグは、ビデオゲームの設計によって異なる。適切に書き込まれたビデオゲームは、ビデオゲームの滑らかな実行を妨げないように、少なくともビデオゲームコードのスマートな領域でデータ読み取り操作とデータ書き込み操作を実行しようとする。
「マウント」、「オープン」、「クローズ」、「アンマウント」などの制御パスAPIも重要であるが、ビデオゲームの継続的な実行を、それが完了するまで妨害することを予測されることがよくある。したがって、制御パスAPIをタイムリーに実行することは、通常、ビデオゲームの性能にとってそれほど重要ではない。例えば、ビデオゲームは、「マウント」および「オープン」API呼び出しが完了するまで、データストレージに対して何も実行できず、ビデオゲームの設計者はこれを認識している。制御パスAPIは、本明細書で開示されるシステムおよび方法で使用されて、クラウドストレージサーバ109内の性能が制限されたHDDにデータを格納し続けて費用を削減するバランスの取れたストレージソリューションを有するという目的を実現すると同時に、データがビデオゲームが現在必要としているデータは、管理サーバ105-1~105-X内のストレージデバイスから迅速に利用可能になる。
最新のビデオゲームでは、大量のユーザデータが生成される。ビデオゲーム及びビデオゲームプラットフォーム(ビデオゲーム機)に応じて、所定のユーザのビデオゲーム用に生成される様々な種類のユーザデータが存在する可能性がある。例えば、いくつかの実施形態では、ユーザデータは、ユーザの他の種類のデータの中でも、ユーザのためのセーブデータ、ユーザのためのダウンロードデータ、ユーザのための記録データ(バッファ内の、または最近プレイされた時間量に対するユーザのゲームプレイの記録)、ユーザのトロフィーデータ、ユーザのプロファイルデータ、ユーザのビデオデータ、ユーザのオーディオデータ、ユーザの一時停止および再開データ(特定の時間においてオンラインゲームシステムの全体的な状態をキャプチャする)を含む。セーブデータはユーザデータの一部であり、通常、特定のセーブ時間におけるゲームの状態とゲーム内のユーザの状態に関するすべてのデータを含むビデオゲームのデータイメージである。ユーザがビデオゲームをプレイすると、ユーザのために作成された多くのセーブデータイメージが存在する可能性がある。例えば、いくつかの実施形態では、セーブデータの生成がトリガされる多くの他の時間/例の中でも、あるレベルから別のレベルに移行するとき、またはあるシーンから別のシーンに変わるときなど、ゲームプレイ中の特定の時点で、ユーザのセーブデータが生成される。また、いくつかの実施形態では、セーブデータの生成は、ユーザによるメニュー選択によってトリガされる。ユーザのセーブデータディスクイメージのサイズは、数メガバイト(MB)である。
いくつかの実施形態では、異なる種類のユーザデータは、例えば、異なる種類のデータアクセス性能要件など、異なる種類の入力/出力(I/O)要件を有してもよい。したがって、いくつかの実施形態では、異なる種類のユーザデータを、異なる種類のI/O要件を満たす異なるクラウドストレージシステムまたは異なるクラウドストレージサーバに格納することができる。また、いくつかの実施形態では、特定のデータの信頼性は、他のデータの信頼性ほど重要ではない。この意味でのデータの信頼性とは、データの保護と可用性の確保を指す。例えば、ユーザにとってセーブデータの信頼性は非常に重要である。ただし、サイズが非常に大きいサスペンドおよびレジュームデータの信頼性はそこまでクリティカルではない場合もある。したがって、サスペンドデータとレジュームデータを失うことは、ユーザのセーブデータを失うことほどにはユーザに損害を与えない可能性がある。また、いくつかの実施形態では、いくつかの種類のユーザデータは、それらに関連付けられた制限された寿命を有する。例えば、システムの更新またはビデオゲームの更新により、一部の種類のユーザデータが、ユーザのビデオゲームのプレイとの互換性や関連性がもはやない可能性がある。また、いくつかの実施形態では、異なる種類のデータは、異なるロードタイム要件を有する可能性がある。例えば、ユーザがシステムにログインするとすぐに、システムデータ及び/またはユーザプロファイルデータをクラウドストレージサーバ109から管理サーバ105-1~105-Xにロードする必要がある場合がある。また、特定のゲームが開始されると、他のデータがクラウドストレージサーバ109から管理サーバ105-1~105-Xにロードされてもよい。様々な種類のユーザデータ及びシステムデータの中で、I/O要件、信頼性、有効期間、およびロードタイミングにおいて可能な変形を考えると、ユーザデータ及びシステムデータが格納されるクラウドストレージサーバの様々なパフォーマンス層と様々な信頼性層が存在する可能性がある。
制御パスAPIは、ビデオゲームがアクセスしようとしているデータに関する情報を提供する。例えば、ビデオゲームが特定のセーブデータディスクイメージ内の特定のファイルからデータを読み取ろうとしている場合、ビデオゲームはまず「マウント」API呼び出しを使用して特定のセーブデータディスクイメージをマウントし、「オープン」API呼び出しを使用して、マウントされたセーブデータディスクイメージ内の特定のファイルを次に開く必要がある。この場合、ビデオゲームによる「マウント」API及び/または「オープン」API呼び出しは、ビデオゲームが特定のセーブデータディスクイメージ内のデータにアクセスしようとしているという情報を提供する。いくつかの実施形態では、クラウドゲームサーバ103-1~103-N上で実行されているビデオゲームによって行われた制御パスAPI呼び出しから取得された情報は、低速のHDDベースのクラウドストレージサーバ109からの制御パスAPI呼び出しに関連付けられたデータの事前取得をトリガし、取得されたデータを管理サーバ105-1~105-X内の高速メモリに格納するために使用される。その後、取得されたデータに向けられたビデオゲームによって行われる任意の後続のデータパスAPI呼び出しは、管理サーバ105-1~105-X内の高速メモリ内のデータにアクセスすることによって高速で完了する。そして、管理サーバ105-1~105-X内の高速メモリのデータを用いてビデオゲームを行うと、例えば「アンマウント」制御パスAPI呼び出しが行われると、管理サーバ105-1~105-X内の高速メモリ内のデータは、低速のHDDベースのクラウドストレージサーバ109にフラッシュバックされるが、フラッシュされるとは、管理サーバ105-1~105-X内の高速メモリ内のデータが低速のHDDベースのクラウドストレージサーバ109にコピーされ、その後、管理サーバ105-1~105-X内の高速メモリから除去されることを意味する。実装形態によっては、「ライト」API呼び出しによって、すでにデータがクラウドストレージサーバ109に書き戻されている場合がある。これは、実行中のビデオゲームに対して透過的な方法で、オペレーティングシステムを介して発生する可能性がある。「アンマウント」API呼び出しは、クラウドストレージサーバ109にアンマウントされるデータのフラッシュを常に強制する。しかし、通常の動作過程として「ライト」API呼び出しによってデータがクラウドストレージサーバ109にすでに書き戻されている場合、データはすでにクラウドストレージサーバ109に書き戻されているため、「アンマウント」API呼び出しが行われるときにデータフラッシュを行う必要はない。
図2は、いくつかの実施形態による、転送されたデータにアクセスするためクラウドゲームサーバ103-1によるデータパスAPI呼び出しの前にクラウドゲームサーバ103-1による制御パスAPI呼び出しを使用して、クラウドストレージサーバ109内の低速データストレージデバイスから管理サーバ105-1内の高速データストレージ119へのデータ転送をトリガする方法のプロセス図を示す。第1のステップでは、クラウドゲームサーバ103-1は、特定のセーブデータディスクイメージ(図2の例ではセーブデータ2)をマウントするため制御パスAPI呼び出しを発行する。これに応答して、管理サーバ105-1は、特定のセーブディスクイメージをマウントする。第2のステップでは、クラウドゲームサーバ103-1~103-Nがマウントされるように要求した特定のセーブディスクイメージ(例えば、セーブデータ2)が、クラウドストレージサーバ109から管理サーバ105-1内の高速データストレージ119にコピーされる。いくつかの実施形態では、高速データストレージ119は、RAMまたはストレージクラスメモリなどのコンピュータメモリデバイス、あるいはRAM及び/またはストレージクラスメモリと実質的に等価な別の種類のコンピュータメモリである。いくつかの実施形態では、高速データストレージ119は、SSDなどのNVMeレベルのストレージである。第3のステップでは、クラウドゲームサーバ103-1は、1つまたは複数のデータパスAPI呼び出しを発行して、特定のセーブディスクイメージとの間でデータの読み取り及び/または書き込みを行う。しかしながら、クラウドストレージサーバ109にクラウドゲームサーバ103-1からのデータパスAPI呼び出しを提供させるのではなく、データパスAPI呼び出しは、代わりに、その高速データストレージ119内の特定のセーブディスクイメージを現在有する管理サーバ105-1によって提供される。
第4のステップでは、クラウドゲームサーバ103-1は、制御パスAPI呼び出しを発行して、特定のセーブデータディスクイメージをアンマウントする。アンマウントAPI呼び出しに応答して、ストレージシステムは、管理サーバ105-1が現在高速データストレージ119にある特定のセーブディスクイメージのデータをクラウドストレージサーバ109にコピーして戻すように動作する第5のステップを実行する。いくつかの実施形態では、高速データストレージ119内の特定のセーブディスクイメージに書き込まれたデータが、通常の動作過程中にクラウドストレージサーバ109にコピーして戻される場合(例えば、高速データストレージ119に書き込まれるとき)、クラウドゲームサーバ103-1によるアンマウントAPI呼び出しの発行時に、クラウドストレージサーバ109にコピーして戻す必要があるデータが存在しない可能性がある。クラウドゲームサーバ103-1によるアンマウントAPI呼び出しに応答して、管理サーバ105-1は、特定のセーブディスクイメージの現在のデータが、アンマウントAPI呼び出し発行時の管理サーバ105-1の高速データストレージ119に格納されるように、クラウドストレージサーバ109にも確実に格納されるように動作することを理解されたい。特定のセーブディスクイメージの現在のデータのすべてがクラウドストレージサーバ109内に適切に格納されていることを管理サーバ105-1が確認すると、管理サーバ105-1は、アンマウントAPI呼び出しに従って特定の保存ディスクイメージをアンマウントするように動作する。
いくつかの実施形態では、ユーザがビデオゲームをプレイしている間、ユーザのゲームデータは管理サーバ105-1~105-Xに維持される。管理サーバ105-1~105-Xは、ユーザによるビデオゲームのプレイ中、ストレージの必要性を取り扱うために十分なストレージ容量を有するべきである。いくつかの実施形態では、管理サーバ105-1~105-Xは、アクティブユーザごとに一定量のストレージを取っておくように動作する。管理サーバ105-1~105-Xに対するストレージ圧力/過負荷の場合、1つのオプションとして、管理サーバ105-1~105-Xは、管理サーバ105-1~105-Xによってではなく、クラウドストレージサーバ109によって取り扱われるようにストレージアクセスAPI呼び出しに指示することができる。別の選択肢として、管理サーバ105-1~105-Xは、一部のデータをクラウドストレージサーバ109にフラッシュバックして、管理サーバ105-1~105-Xに対するストレージ圧力/過負荷を緩和することができる。この場合、管理サーバ105-1~105-Xは、すべてのデータまたはデータの一部のいずれかをクラウドストレージサーバ109にフラッシュバックする。いくつかの実施形態では、管理サーバ105-1~105-Xに対するストレージ圧力/過負荷を緩和するために管理サーバ105-1~105-Xのデータをクラウドストレージサーバ109にフラッシュバックする動作は、管理サーバ105-1~105-Xに現在データを格納しているすべてのユーザの現在のストレージ必要性および使用パターンの分析に基づく。いくつかの実施形態では、管理サーバ105-1~105-Xがデータをクラウドストレージサーバ109にフラッシュバックしてストレージ圧力/過負荷を緩和する場合、管理サーバ105-1~105-Xは、管理サーバ105-1~105-Xによって提供される1つまたは複数のクラウドゲームサーバ103-1~103-N上で実行される1つまたは複数のビデオゲームによって必要とされることを期待して、クラウドストレージサーバ109から一部のデータをコピーして戻す。いくつかの実施形態では、ビデオゲームがデータを管理サーバ105-1~105-Xに書き込むとき、そのデータが将来クラウドストレージサーバ109にコピーされるとしても、ビデオゲームによるアクセスのために管理サーバ105-1~105-Xに維持される。いくつかの実施形態では、管理サーバ105-1~105-Xに対して圧力/過負荷が存在する場合、クラウドストレージサーバ109へのデータのフラッシュバックを優先するために、所与の時間に管理サーバ105-1~105-Xに格納されるデータを分類するために実装される様々なアルゴリズムがある。また、いくつかの実施形態では、管理サーバ105-1~105-Xに対するストレージ圧力/過負荷の場合、別の選択肢として、管理サーバ105-1~105-Xは、クラウドゲームサーバ103-1~103-N及び/または、またはビデオゲームにストレージ圧力/過負荷状況を通知することができ、クラウドゲームサーバ103-1~103-N及び/または、またはビデオゲームに、ストレージ圧力/過負荷状況を緩和するためにクラウドストレージサーバ109にデータのフラッシュバックをトリガさせる。このオプションは、データの損失を防ぐように使用することが可能であり、この場合、管理サーバ105-1~105-Xがデータをクラウドストレージサーバ109にフラッシュバックするように動作するときに、クラウドゲームサーバ103-1~103-N及び/または、または、ビデオゲームが任意のデータ更新を実行することを妨害することで、データの損失を防ぐ。
いくつかの実施形態では、図2のプロセスは、ユーザによるオンラインゲームセッションの開始時に特に有益であり得る。ユーザがオンラインビデオゲームを開始すると、クラウドゲームサーバ103-1~103-Nは、ストレージサーバ107からオンラインビデオゲームの実行可能コードをロードする必要がある。また、クラウドゲームサーバ103-1~103-Nは、ビデオゲームを開始するため、とりわけ、オーディオデータ及び/または、テクスチャデーなどのデータなどの他のデータをロードする必要がある場合がある。クラウドゲームサーバ103-1~103-Nがこのデータをロードし、ビデオゲームをゲームメニュー表示状態に実行するのに、約5秒程度の時間がかかる。この時間は、ユーザのユーザデータをクラウドストレージサーバ109から管理サーバ105-1~105-Xにロードするために使用され得る。例えば、この時間は、ビデオゲームの起動時に、ビデオゲームにおけるユーザの最後のセーブポイントに対応するユーザのユーザデータをクラウドストレージサーバ109から管理サーバ105-1~105-Xにロードするために使用することができる。次に、ビデオゲームが新しいゲームまたはロードゲームなどのゲームメニューオプションを提示するとき、ビデオゲームでのユーザの最後のセーブポイントのユーザデータは、管理サーバ105-1~105ーNの高速データストレージ119にすでに格納されていて、ユーザが最後のセーブポイントからビデオゲームのプレイを続行することを選択した場合に、クラウドゲームサーバ103-1~103-Nによる即時かつ高速なアクセスの準備が整っている。次に、ユーザが以前に保存されたゲームをロードすることを選択すると、オープンAPI呼び出しがクラウドゲームサーバ103-1~103-N上で実行されているビデオゲームに、以前のセーブデータディスクイメージ内のユーザのセーブデータファイルを開かせる。このオープンAPI呼び出しは、管理サーバ105-1~105-Xによって処理され、要求されたセーブデータファイルは、低速クラウドストレージサーバ109からではなく、管理サーバ105-1~105-X内の高速データストレージ119から読み取られる。管理サーバ105-1~105-X内の高速データストレージ119からユーザのセーブデータファイルを読み取ることによって、ユーザのビデオゲームのプレイをより速く開始できることを理解されたい。クラウドゲームサーバ103-1~103-N上でのビデオゲームの実行中に、ビデオゲームは、クラウドストレージサーバ109から管理サーバ105-1~105-X内の高速データストレージ119への追加データのコピーをトリガする追加のデータストレージアクセスAPI呼び出しを発行することができ、これにより、管理サーバ105-1~105-X内の高速データストレージ119からビデオゲームが要求するデータに高速でアクセスすることができる。
いくつかの実施形態では、クラウドゲームサーバ103-1~103-Nは、ユーザデータがクラウドストレージサーバ109に格納される場所のデータベースを維持する。いくつかの実施形態では、管理サーバ105-1~105-Xは、クラウドストレージサーバ109からクラウドゲームサーバ103-1~103-Nを遮蔽し、それにより、クラウドゲームシステム103-1~103-Nは、データがクラウドストレージサーバ109のどこに格納されているかを追跡し続ける必要がない。いくつかの実施形態では、管理サーバ105-1~105-Xは、クラウドストレージサーバ109内のどこに様々なデータが格納されているかを示す情報を含むストレージ追跡データベースを維持する。管理サーバ105-1~105-Xがクラウドゲームサーバ103-1~103-Nから特定の種類のユーザデータの要求を取得すると、データストレージアクセスAPI呼び出しによって、管理サーバ105-1~105-Xは、要求されたデータが位置するクラウドストレージサーバ109の識別情報、および要求されたデータが識別されたクラウドストレージサーバ109のどこに位置するかを判断するために、ストレージ追跡データベースに問い合わせるように動作する。次に、管理サーバ105-1~105-Xは、識別されたクラウドストレージサーバ109にデータの要求を送信する。いくつかの実施形態では、ストレージ追跡データベースはクラウドストレージサーバ109に格納され、ストレージ追跡データベースがアクセスされ問い合わせされる管理サーバ105-1~105-Xの高速データストレージ119にロードされる。
いくつかの実施形態では、管理サーバ105-1~105-X上のストレージ追跡データベースは、ユーザが旅行中である、及び/または、データのバックアップ目的で、ならびに/あるいは他の理由で、複数のデータセンタにおけるユーザデータの現在の冗長性および同期を維持するために、他のデータセンタにおいてどのユーザデータファイルを更新する必要があるかを判定するために問い合わせされる。また、いくつかの実施形態では、ユーザは、クラウドゲームサーバ103-1~103-N上ではなく、ローカルゲーム機127上でビデオゲームをプレイする。これらの実施形態では、管理システム105-1~105-X上のストレージ追跡データベースは、ローカルゲーム機127が、管理サーバ105-1~105を介してクラウドストレージサーバ109上に格納されたデータにアクセスする必要があるときに使用される。また、いくつかの実施形態では、管理サーバ105-1~105-X上のストレージ追跡データベースを使用して、ローカルゲーム機127上のユーザによるビデオゲームのローカルプレイとクラウドゲームサーバ103-1~103-N上でのユーザによるビデオゲームのクラウドゲームプレイとの同期を可能にする。
いくつかの実施形態では、ローカルゲーム機127は、データを書き込むことによって消耗するSSDを備える。これを知っているビデオゲームの開発者は、SSD内のメモリユニットが耐えることができる限られた数のプログラム/書き込みサイクルに対応する、限られたSSDの寿命を考慮して、ストレージ動作を指示するようにビデオゲームをプログラムする。また、ビデオゲームの開発者は、SSDへの少量のデータの書き込みが特に問題になることを考慮して、ビデオゲームをプログラムする。したがって、多くのビデオゲームでは、SSDを装備したローカルゲーム機127のフラッシュメモリは、データの小さなブロックをSSDに書き込むことが許可されておらず、代わりに、より大きなブロックのデータをSSDに書き込むために十分なデータが蓄積されるまで、データを保持する必要がある。SSDへの書き込み/プログラムサイクルの量を低減するため、ビデオゲームは、ストレージアクセスのため「トランザクション」を使用するようにプログラムされる。ストレージアクセスにトランザクションを使用することは、とりわけ、データ破損のリスクを軽減する利点もある。ストレージアクセスにトランザクションを使用する背後にある考え方は、ビデオゲームは、引き続き読み取り、書き込みなどのPOSIX API呼び出しを使用するが、ビデオゲームが、「コミット」APIを呼び出して、RAMに格納されているデータをSSDにフラッシュすることをトリガする時に、書き込まれたデータはトランザクションが完了するまで、RAMにのみ格納されるというものである。アンマウントAPIは「暗黙のコミット」である。したがって、ストレージアクセスにトランザクションを使用するSSDを装備したローカルゲーム機127におけるデータアクセスフローは、1)(必要に応じて、任意選択で)セーブデータディスクイメージを作成する、2)トランザクションリソースを作成する、3)セーブデータディスクイメージをマウントする、4)ファイルを開く、5)ファイルとの間でデータを読み取る及び/または書き込む(RAMへの書き込みのみ)、6)ファイルを閉じる、7)データをコミットする、8)トランザクションリソースを削除する、9)セーブデータディスクイメージをアンマウントする、である。クラウドゲームシステムが、SSDを備えたローカルゲーム機127上で実行されるものと同じビデオゲームを実行することができると考えると、クラウドゲームサーバ103-1~103-N、管理サーバ105-1~105-X、およびクラウドストレージサーバ109は、ストレージアクセスのためトランザクションの使用を取り扱うように集合的に構成される。
いくつかの実施形態では、ビデオゲームまたはクラウドゲームシステム103-1~103-Nのいずれかによってトランザクションデータバッファを提供することができる。いくつかの実施形態では、トランザクションデータバッファはRAMにある。いくつかの実施形態では、クラウドゲームシステム103-1~103-Nは、トランザクションバッファのサイズが小さいため、ビデオゲームにトランザクションバッファを提供させる。また、ビデオゲームにトランザクションバッファを提供させることにより、ビデオゲームはトランザクションバッファの限られた容量を認識する。いくつかの実施形態では、ビデオゲームが標準データパス「ライトAPI」を使用してあまりにも多くのデータを書き込むと、書き込み操作は、書き込み動作を完了するのに十分なスペースがないというエラーで失敗する。
いくつかの実施形態では、クラウドゲームサーバ103-1~103-NがコミットAPIを呼び出すと、クラウドゲームサーバ103-1~103-Nは、管理サーバ105-1~105-Xがクラウドストレージサーバ109へ戻すそのバッファ変更をコミットすることも可能にする。いくつかの実施形態では、コミットAPI呼び出しがブロッキングAPI呼び出しである場合(デフォルトまたはフラグの設定による)、コミットAPI呼び出しは、管理サーバ105-1~105-Xがデータのクラウドストレージサーバ109へのフラッシュバックを完了するまでビデオゲームを待機させる。そうしないと、管理サーバ105-1~105-Xがクラッシュした場合にデータ破損が発生する可能性がある。
いくつかの実施形態では、データ破損を防ぐために、コミット/アンマウント動作中に停電またはその他のエラー状態が発生した場合に備えて、コミット/アンマウント操作を実行する前に存在していたデータ状態に戻すメカニズムがある。例えば、いくつかの実施形態では、データをコミットする前に、システムは、更新されると予想されるデータのいずれかを読み取り、そうして、読み取りデータがコミット操作で問題が発生した場合に回復できるようにする。いくつかの実施形態では、管理サーバ105-1~105-Xは、コミットAPI動作を実行する前に、更新されると予想されるデータのいずれかを読み取るようにプログラムされる。管理サーバ105-1~105-Xは、どのデータの変更が要求され、どのようにそのデータを変更するように要求されたかを追跡するようにプログラムされている。
また、いくつかの実施形態では、クラウドストレージサーバ109はトランザクションをサポートするように構成されている。これらの実施形態では、管理サーバ105-1~105-Xによるマウント時に、クラウドストレージサーバ109がデータ変更を追跡する。次に、コミット/アンマウントAPI呼び出しは、データ変更のフラッシュをトリガする。管理サーバ105-1~105-Xからクラウドストレージサーバ109へのデータ変更のフラッシュが失敗した場合、クラウドストレージサーバ109を使用してデータ変更を元に戻すことができる。
また、いくつかの実施形態では、クラウドストレージサーバ109はトランザクションをサポートするように構成されている。これらの実施形態では、管理サーバ105-1~105-Xによるマウント時に、クラウドストレージサーバ109がデータ変更を追跡する。次に、コミット/アンマウントAPI呼び出しは、データ変更のフラッシュをトリガする。管理サーバ105-1~105-Xからクラウドストレージサーバ109へのデータ変更のフラッシュが失敗した場合、クラウドストレージサーバ109を使用してデータ変更を元に戻すことができる。
図3は、いくつかの実施形態による、クラウドゲームサーバ103-1および管理サーバ105-1のいくつかの内部構成要素の例示的な図を示す。クラウドゲームサーバ103-1のルートコンプレックス311は、PCIeリンク309を介してPCIeスイッチ305のPCIeポート315に接続されたPCIe(peripheral component interconnect express)ポート313を有する。また、管理サーバ105-1のルートコンプレックス317は、PCIeリンク307を介してPCIeスイッチ305のPCIeポート319に接続されたPCIeポート316を有する。
PCIeスイッチ305は、管理サーバ105-1とクラウドゲームサーバ103-1のメモリアドレス空間をブリッジするロジックを含む。例えば、管理サーバ105-1とクラウドゲームサーバ103-1のメモリアドレス空間をブリッジするためのロジックには、管理サーバ105-1及びクラウドゲームサーバ103-1の両方と通信し、必要なメモリアドレス変換を処理する、非透過ブリッジ(NTB)または特別なダイレクトメモリアクセス(DMA)エンジンを含めることができる。いくつかの実施形態では、DMAエンジンをPCIeスイッチ305内に実装することができる。クラウドゲームサーバ103-1のルートコンプレックス311及び管理サーバ105-1のルートコンプレックス317の両方が、PCIeインターフェース、または、例として、Gen-Zコンソーシアムによって開発されたGen-Z通信/インターコネクト仕様、またはPCIeインターフェースもしくはGen-Zインターフェースのいずれかと本質的に同等であるその他の将来開発されるインターフェースに従って定義されたGen-Zインターフェースなどの同等のインターフェースを含むことを理解されたい。
PCIeスイッチ305は、管理サーバ105-1とクラウドゲームサーバ103-1のメモリアドレス空間をブリッジするロジックを含む。例えば、管理サーバ105-1とクラウドゲームサーバ103-1のメモリアドレス空間をブリッジするためのロジックには、管理サーバ105-1及びクラウドゲームサーバ103-1の両方と通信し、必要なメモリアドレス変換を処理する、非透過ブリッジ(NTB)または特別なダイレクトメモリアクセス(DMA)エンジンを含めることができる。いくつかの実施形態では、DMAエンジンをPCIeスイッチ305内に実装することができる。クラウドゲームサーバ103-1のルートコンプレックス311及び管理サーバ105-1のルートコンプレックス317の両方が、PCIeインターフェース、または、例として、Gen-Zコンソーシアムによって開発されたGen-Z通信/インターコネクト仕様、またはPCIeインターフェースもしくはGen-Zインターフェースのいずれかと本質的に同等であるその他の将来開発されるインターフェースに従って定義されたGen-Zインターフェースなどの同等のインターフェースを含むことを理解されたい。
例えば、いくつかの実施形態では、PCIeスイッチ305は任意選択でNTB321を含む。PCIeスイッチ305がNTB321を含み、NTBモードにある場合、NTB321は、クラウドゲームサーバ103-1によってデータI/O(入力/出力)コマンドバッファに書き込まれたメモリアクセスコマンド内の物理メモリアドレスを管理サーバ105-1のコンピュータメモリ323内で管理サーバ105-1が取得可能なメモリアドレスに変換するように機能する。NTB321は、トランザクション層パケット(TLP)が組み立ておよび分解されるPCIeトランザクション層でメモリアドレスを変更するように機能的に動作する。いくつかの実施形態では、NTB321は、リクエスタ識別子を変更するようにも動作する。
クラウドゲームサーバ103-1がストレージCPU331などを介してコマンドバッファを生成する場合、コマンドバッファは最終的にルートコンプレックス311によってTLPにラップされる。ストレージCPU331は、ストレージCPU331によって生成されたコマンドバッファ内の任意のメモリアドレスの正確性を保証するように動作する。また、ストレージCPU331は、管理サーバ105-1がデータをクラウドゲームサーバ103-1に書き戻す必要がある場合に、コマンドバッファ内のメモリアドレスが変換されたアドレスであることを保証するように動作する。NTB321は、クラウドゲームサーバ103-1がコマンドバッファを管理サーバ105-1内のメモリアドレスに書き込むときにプレイするようになる。この場合、コマンドバッファが書き込まれるメモリアドレスは、NTB321によって、及び/または、管理サーバ105-1のコンピュータメモリ323内の出力メモリ管理ユニット(IOMMU)381によって変換される。IOMMU381は、デバイスから見える仮想メモリアドレスを物理メモリアドレスにマッピングする。また、この場合、コマンドバッファ自体の内容は、NTB321またはIOMMU381によって変更されない。
クラウドゲームサーバ103-1がストレージCPU331などを介してコマンドバッファを生成する場合、コマンドバッファは最終的にルートコンプレックス311によってTLPにラップされる。ストレージCPU331は、ストレージCPU331によって生成されたコマンドバッファ内の任意のメモリアドレスの正確性を保証するように動作する。また、ストレージCPU331は、管理サーバ105-1がデータをクラウドゲームサーバ103-1に書き戻す必要がある場合に、コマンドバッファ内のメモリアドレスが変換されたアドレスであることを保証するように動作する。NTB321は、クラウドゲームサーバ103-1がコマンドバッファを管理サーバ105-1内のメモリアドレスに書き込むときにプレイするようになる。この場合、コマンドバッファが書き込まれるメモリアドレスは、NTB321によって、及び/または、管理サーバ105-1のコンピュータメモリ323内の出力メモリ管理ユニット(IOMMU)381によって変換される。IOMMU381は、デバイスから見える仮想メモリアドレスを物理メモリアドレスにマッピングする。また、この場合、コマンドバッファ自体の内容は、NTB321またはIOMMU381によって変更されない。
NTBモードにより、複数のルートコンプレックスが互いに通信できるようになる、すなわち、互いにデータを交換できる。いくつかの実施形態では、PCIeスイッチ305が、NTBデバイスのみが接続されているセカンダリPCIeスイッチに接続されている場合、セカンダリPCIeスイッチは、トランザクション層パケット(TLP)を転送するだけなので、NTBを使用する必要はない。コンピュータメモリ323は、図2に関して言及された高速データストレージ119を表す。様々な実施形態において、コンピュータメモリ323は、RAMまたはストレージクラスメモリ、あるいはRAM及び/またはストレージクラスメモリと実質的に同等の別の種類のコンピュータメモリであり得る。NTB321は、データI/Oコマンドバッファ内のメモリアドレスの変換を取り扱い、変換されたメモリアドレスを管理サーバ105-1に提供する。
PCIeスイッチ305がNTB321を使用しない場合、データI/Oコマンドバッファに書き込まれたメモリアクセスコマンドは、データI/Oコマンドバッファ内のメモリアドレスがマッピングされる必要がある管理サーバ105-1のコンピュータメモリ323内のメモリアドレスを決定するために使用することができる、ホスト識別子または他の種類のメタデータなどの他のメタデータを含むように生成され得る。PCIeスイッチ305がNTB321を使用しないいくつかの実施形態では、DMAエンジンを使用して、PCIeスイッチ305を横切ってパケットを正しい宛先に送信することができる。また、いくつかの実施形態では、PCIeスイッチ305がNTB321を使用せず、二次PCIeスイッチに接続されている場合、二次PCIeスイッチは、パケットを正しい宛先に転送するように動作する。
PCIeスイッチ305がNTB321を使用しない場合、データI/Oコマンドバッファに書き込まれたメモリアクセスコマンドは、データI/Oコマンドバッファ内のメモリアドレスがマッピングされる必要がある管理サーバ105-1のコンピュータメモリ323内のメモリアドレスを決定するために使用することができる、ホスト識別子または他の種類のメタデータなどの他のメタデータを含むように生成され得る。PCIeスイッチ305がNTB321を使用しないいくつかの実施形態では、DMAエンジンを使用して、PCIeスイッチ305を横切ってパケットを正しい宛先に送信することができる。また、いくつかの実施形態では、PCIeスイッチ305がNTB321を使用せず、二次PCIeスイッチに接続されている場合、二次PCIeスイッチは、パケットを正しい宛先に転送するように動作する。
クラウドゲームサーバ103-1は、内部データバス327に接続された少なくとも1つのCPU325を含む。様々な実施形態では、クラウドゲームサーバ103-1は、内部データバス327に接続されたGPU329のうちの1つまたは複数、ならびに/あるいは内部データバス327に接続されたストレージCPU331の1つ又は複数、ならびに/あるいは内部データバス327に接続された復号/暗号化エンジン333の1つ又は複数、ならびに/あるいは内部データバス327に接続された解凍/圧縮エンジン335の1つ又は複数を含むこともできる。内部データバス327は、クラウドゲームサーバ103-1のルートコンプレックス311に接続される。様々な実施形態では、GPU329は、電子ディスプレイスクリーン上に表示するための画像、アニメーション、およびビデオをレンダリングするため並列動作を実行するように構成されたプロセッサである。また、いくつかの実施形態では、GPU329の並列処理能力は、反復計算を必要とする非グラフィックアプリケーションにおけるベクトル処理に使用することができる。
様々な実施形態では、ストレージCPU331は、ストレージコマンドの要求を取り扱い、特定の種類のストレージメディアにストレージを割り当てるように構成される。様々な実施形態では、ストレージCPU331およびメインCPU325は、同じまたは異なるアーキテクチャを有することができる。例えば、いくつかの実施形態では、ストレージCPU331は、メインCPU325がx86プロセッサであるアドバンストRISC(縮小命令セットコンピュータ)マシン(ARM)プロセッサまたはMIPSプロセッサであり得る。様々な実施形態では、ストレージCPU331は本質的に任意の種類の適切なコンピュータプロセッサであってよく、メインCPU325は本質的に任意の種類の適切なコンピュータプロセッサであってよいことが理解されるべきである。また、いくつかの実施形態では、メインCPU325及びストレージCPU331の両方を有することに代えて、クラウドゲームサーバ103-1~103-Nは、メインCPU325のみを有する。この場合、両方のCPUを有する場合にストレージCPU331によって実行される筈であった動作はメインCPU325により実行される。しかしながら、本明細書における説明のために、クラウドゲームサーバ103-1~103-Nは、メインCPU325及びストレージCPU331の両方を含むと考えられる。ストレージCPU331がストレージ用にデータを割り当てる特定の種類のストレージメディアは、実行能力、例えば、ストレージメディアの及び/または、例えば、データが、ファイルベースのデータストレージ、フォルダベースのデータストレージ、又はバイトベースのデータストレージなどのストレージメディアに格納される形態のデータ読み取り速度及び/またはデータ書き込み速度に応じて変化し得る。いくつかの実施形態では、ストレージCPU331は、ストレージテーブルに基づいて、追跡および更新されるコンピュータメモリ337内の様々な記憶場所を有するクラウドゲームサーバ103-1のコンピュータメモリ337内のそれぞれの場所に配置するために、データを複数のデータチャンクに分割するように動作する。様々な実施形態では、コンピュータメモリ337は、RAMまたはストレージクラスメモリ、あるいはRAM及び/またはストレージクラスメモリと実質的に同等の別の種類のコンピュータメモリであり得る。ストレージCPU331はまた、入力/出力毎秒(IOPS)に基づいてストレージを最適化するように機能することができる。いくつかの実施形態では、IOPSに基づくストレージ最適化は、回転ストレージメディア、ソリッドステートストレージメディア、及び/またはハイブリッドストレージメディアを含み得る、利用可能なストレージメディアのアクセス速度に相関され得る。様々な実施形態では、復号/暗号化エンジン333は、暗号化されたデータを解読し、暗号化されていないデータを暗号化するための暗号アルゴリズムを適用するように構成され、暗号アルゴリズムを適用する専用のプロセッサである。様々な実施形態では、解凍/圧縮エンジン335は、圧縮データを解凍し、非圧縮データを圧縮するためのアルゴリズムを適用するように構成され、かつ、そのアルゴリズム専用となるように構成されている。
いくつかの実施形態では、クラウドゲームサーバ103-1のコンピュータメモリ337は、ルートコンプレックス311に接続される。いくつかの実施形態では、クラウドゲームサーバ103-1は、ルートコンプレックス311に接続されたDMAコントローラ339も含む。いくつかの実施形態では、コンピュータメモリ337及び/またはDMAコントローラ339は、線361および363それぞれによって示されるように、内部データバス327に接続することができる。また、いくつかの実施形態では、クラウドゲームサーバ103-1は、PCIeリンク343を介してルートコンプレックス311のPCIeポート345に接続されたNVMe SSD341のうちの1つまたは複数を含むことができる。また、いくつかの実施形態では、クラウドゲームサーバ103-1は、PCIeリンク349を介してルートコンプレックス311のPCIeポート351に接続されたSATAコントローラ347のうちの1つまたは複数を含むことができる。SATAコントローラ347は、HDD353及びPCIeファブリックのうちの1つまたは複数との間のブリッジとして機能することができる。また、様々な実施形態では、1つまたは複数の他のPCIe対応コンポーネントデバイス(複数可)355を、それぞれのPCIeリンク359を介してルートコンプレックス311のそれぞれのPCIeポート(複数可)357に接続することができる。様々な実施形態では、他のPCIe対応コンポーネントデバイス(複数可)355は、他のデバイスの中でも、1つまたは複数のGPU、1つまたは複数のフィールドプログラマブルゲートアレイ(FPGA)、1つまたは複数のネットワークアダプタ、1つまたは複数のSSD、1つまたは複数のSATA/HHDを含むことができる。図3に示されているクラウドゲームサーバ103-1のアーキテクチャは、例として提供されていることを理解されたい。様々な実施形態では、クラウドゲームサーバ103-1は、図3の例に示されているものよりも多いまたは少ない構成要素を含むことができる。
管理サーバ105-1は、内部データバス367に接続された少なくとも1つのCPU365を含む。様々な実施形態では、管理サーバ105-1は、内部データバス367に接続されたGPU369のうちの1つまたは複数、及び/または、内部データバス367に接続されたネットワークインターフェースカード(NIC)373の1つまたは複数も含むことができる。内部データバス367は、管理サーバ105-1のルートコンプレックス317に接続されている。管理サーバ105-1はまた、ルートコンプレックス317に接続されたNVMe SSD371のうちの1つまたは複数を含むことができる。また、いくつかの実施形態では、GPU369並びに/或いはNIC373、及び/または他のデバイスは、PCIeを使用するように構成でき、内部データバス367ではなくルートコンプレックス317に直接接続できる。
本明細書で開示されるシステムおよび方法は、クラウドゲームサーバ103-1をクラウド管理サーバ105-1に接続するPCIeファブリックを活用して、CPU325並びに/あるいはストレージCPU331及び/またはクラウドゲームサーバ103-1上のDMAコントローラ339(及び/または他のデバイス)が、管理サーバ105-1のコンピュータメモリ323とクラウドゲームサーバ103-1のコンピュータメモリ337との間でメッセージの送信及びデータのコピーをできるようにするが、その逆も可能である。PCIeファブリックを使用してクラウドゲームサーバ103-1と管理サーバ105-1とを接続した結果、及びPCIeスイッチ305を構成した後は、クラウドゲームサーバ103-1と管理サーバ105にわたる「共有メモリ」機構である。クラウドゲームサーバ103-1は、非常にわずかな費用、例えば、矢印379によって示された、管理サーバ105-1のCPU365のバイパス化を有する、管理サーバ105-1内のコンピュータメモリ323の特定の部分377に直接アクセスできる。
クラウドゲームサーバ103-1によるサーバ管理サーバ105-1内のコンピュータメモリ323の直接アクセスは、データストレージ要求を管理でき、ルートコンプレックス311を介してCPU325及び/またはストレージCPU331及び/またはDMAコントローラ339などのPCIeスイッチ305に接続されるクラウドゲームサーバ103-1内の任意の装置によって指示され得る。しかしながら、それは、データストレージ要求を管理するためクラウドゲームサーバ103-1のCPU325の最も効率的な使用でなくてもよいことを理解されたい。したがって、ストレージCPU331及び/またはDMAコントローラ339は、主に、管理サーバ105-1のコンピュータメモリ323内のデータI/Oコマンドバッファに書き込まれるメモリアクセスコマンドを生成することにより、クラウドゲームサーバ103-1のデータストレージ要求を管理するために使用され得る。
クラウドゲームサーバ103-1によるサーバ管理サーバ105-1内のコンピュータメモリ323の直接アクセスは、データストレージ要求を管理でき、ルートコンプレックス311を介してCPU325及び/またはストレージCPU331及び/またはDMAコントローラ339などのPCIeスイッチ305に接続されるクラウドゲームサーバ103-1内の任意の装置によって指示され得る。しかしながら、それは、データストレージ要求を管理するためクラウドゲームサーバ103-1のCPU325の最も効率的な使用でなくてもよいことを理解されたい。したがって、ストレージCPU331及び/またはDMAコントローラ339は、主に、管理サーバ105-1のコンピュータメモリ323内のデータI/Oコマンドバッファに書き込まれるメモリアクセスコマンドを生成することにより、クラウドゲームサーバ103-1のデータストレージ要求を管理するために使用され得る。
「共有メモリ」メカニズムを提供することに加えて、PCIeスイッチ305を介したクラウドゲームサーバ103-1の管理サーバ105-1への接続は、メッセージをクラウドゲームサーバ103-1のコンピュータメモリ337に、または管理サーバ105-1のコンピュータメモリ323に、またはPCIeスイッチ305内の何らかのメモリに直接書き込むことによって、クラウドゲームサーバ103-1から管理サーバ105-1に「メッセージ」の送信を提供し、その逆も同様である。クラウドゲームサーバ103-1と管理サーバ105-1との間のメッセージの送信を使用して、データI/Oコマンドバッファに書き込まれるメモリアクセスコマンドの実行を容易にすることができる。
例えば、クラウドゲームサーバ103-1は、管理サーバ105-1が、データストレージデバイスから取得され、クラウドゲームサーバ103-1と管理サーバ105-1との間に存在する共有メモリ内のどこかに格納された一部の要求されたデータをもたらす、何らかのメモリアクセスコマンドを実行することを期待する場合、管理サーバ105-1によって、クラウドゲームサーバ103-1によって監視されるメモリ位置にメッセージが書き込まれて、要求されたデータが、管理サーバ105-1によって使用可能になる時及び場所をクラウドゲームサーバ103-1に通知することができる。
例えば、クラウドゲームサーバ103-1は、管理サーバ105-1が、データストレージデバイスから取得され、クラウドゲームサーバ103-1と管理サーバ105-1との間に存在する共有メモリ内のどこかに格納された一部の要求されたデータをもたらす、何らかのメモリアクセスコマンドを実行することを期待する場合、管理サーバ105-1によって、クラウドゲームサーバ103-1によって監視されるメモリ位置にメッセージが書き込まれて、要求されたデータが、管理サーバ105-1によって使用可能になる時及び場所をクラウドゲームサーバ103-1に通知することができる。
いくつかの実施形態では、メッセージは、クラウドゲームサーバ103-1または管理サーバ105-1のいずれかによって、PCIeスイッチ305を介して公開される1つまたは複数のドアベルレジスタ(複数可)375に送信され得る。いくつかの実施形態では、クラウドゲームサーバ103-1によるドアベルレジスタ375への書き込みにより、管理サーバ105-1上で割り込みが発生し、これにより、管理サーバ105-1が割り込みを処理する。いくつかの実施形態では、管理サーバ105-1による割り込みの処理により、管理サーバ105-1は、クラウドゲームサーバ103-1と管理サーバ105-1との間に存在する共有メモリ内の特定の場所からメッセージ(何らかのデータ)を読み取る。同様に、管理サーバ105-1によるドアベルレジスタ375への書き込みにより、クラウドゲームサーバ103-1上で割り込みが発生し、これにより、クラウドゲームサーバ103-1が割り込みを処理する。いくつかの実施形態では、クラウドゲームサーバ103-1による割り込みの処理により、クラウドゲームサーバ103-1は、クラウドゲームサーバ103-1と管理サーバ105-1との間に存在する共有メモリ内の特定の場所からメッセージ(何らかのデータ)を読み取る。
メッセージの内容はユースケースによって異なる。いくつかのユースケースでは、メッセージは、ストレージデバイスから一定量のデータを読み取り、読み取ったデータをクラウドゲームサーバ103-1と管理サーバ105-1の間に存在する共有メモリに格納する要求を伝えることができる。次に、メッセージ内の要求が完了した後、別のメッセージを送信して完了を通知できる。例えば、クラウドゲームサーバ103-1が管理サーバ105-1にデータストレージから特定のデータを読み取るように要求する第1のメッセージを送信する場合、管理サーバ105-1は第1のメッセージで要求を実行し、クラウドゲームサーバ103-1に第1のメッセージ要求の完了を通知する第2のメッセージが送信され、特定の要求されたデータがクラウドゲームサーバ103-1と管理サーバ105-1との間に存在する共有メモリに格納される。
クラウドゲームサーバ103-1および管理サーバ105-1は、それぞれが独自のメモリマップを有する独立したシステムである。メモリマップは、システム内のコンピュータメモリおよびその他のデバイスのメモリアドレスを保持する。PCIeスイッチ305は、クラウドゲームサーバ103-1および管理サーバ105-1の各メモリマップ内のメモリアドレス空間のユーザ構成可能領域を占有する。様々な実施形態では、PCIeスイッチ305の構成に応じて、クラウドゲームサーバ103-1のコンピュータメモリ337の物理メモリアドレスは、管理サーバ105-1のコンピュータメモリ323内の同じまたは異なる物理メモリアドレスにマッピングすることができる。
いくつかの実施形態では、セキュリティ及び/または他の理由で、クラウド管理サーバ105-1は、デバイス可視仮想メモリアドレスを物理メモリアドレスにマッピングするIOMMU381を実装することなどによって、その現実物理メモリアドレスを隠すように構成することができる。IOMMU381は、デバイスメモリアドレスを物理メモリアドレスにマッピングするように構成され、通常のメモリ管理ユニット(MMU)は、仮想メモリアドレスを物理メモリアドレスにマッピングするように構成される。通常のMMUの場合、仮想メモリアドレスは連続しているため、アプリケーションは、例えば、64MBのメモリのブロックなどのメモリのブロックを認識し、メモリのブロックを操作できるが、実際には、MMUは連続した仮想メモリアドレスを複数の分離された物理メモリアドレスにマッピングし、アプリケーションからメモリマッピングを隠す。
通常のMMUと同様に、IOMMU381は、クラウドゲームサーバ103-1に見える仮想メモリアドレスをコンピュータメモリ323内の複数の分離された物理メモリアドレスにマッピングし、管理サーバ105-1からメモリマッピングを隠す。このように、IOMMU381を使用することにより、クラウドゲームサーバ103-1は、仮想メモリアドレスの連続ブロックが実際にどのように管理サーバ105-1のコンピュータメモリ323を横切って異なる物理メモリアドレスへマッピングされるかという複雑さを隠しながら、管理サーバ105-1上に存在する仮想メモリアドレスの連続ブロックを見ることができる。いくつかの実施形態では、IOMMU381は、管理サーバ105-1のルートコンプレックス317に含まれる。いくつかの実施形態では、クラウドゲームサーバ103-1のルートコンプレックス311は、IOMMU383も含むことができる。
通常のMMUと同様に、IOMMU381は、クラウドゲームサーバ103-1に見える仮想メモリアドレスをコンピュータメモリ323内の複数の分離された物理メモリアドレスにマッピングし、管理サーバ105-1からメモリマッピングを隠す。このように、IOMMU381を使用することにより、クラウドゲームサーバ103-1は、仮想メモリアドレスの連続ブロックが実際にどのように管理サーバ105-1のコンピュータメモリ323を横切って異なる物理メモリアドレスへマッピングされるかという複雑さを隠しながら、管理サーバ105-1上に存在する仮想メモリアドレスの連続ブロックを見ることができる。いくつかの実施形態では、IOMMU381は、管理サーバ105-1のルートコンプレックス317に含まれる。いくつかの実施形態では、クラウドゲームサーバ103-1のルートコンプレックス311は、IOMMU383も含むことができる。
図3の構成では、IOMMU381は、クラウドゲームサーバ103-1が、特定のメモリアドレス(デバイスアドレス)を、管理サーバ105-1のコンピュータメモリ323内の特定の物理メモリアドレスと1対1の通信を有するものとして見ることを可能にすることができる。しかし、実際には、IOMMU381は、クラウドゲームサーバ103-1から見た特定のメモリアドレスを、管理サーバ105-1のコンピュータメモリ323内の異なる物理メモリアドレスに再マッピングすることができる。また、いくつかの実施形態では、IOMMU381を使用して、クラウドゲームサーバ103-1によるアクセスが許可されていない管理サーバ105-1のコンピュータメモリ323内の1つまたは複数の指定された物理メモリ領域へのアクセスをブロックすることができる。また、IOMMU381は、管理サーバ105-1のコンピュータメモリ323内のメモリ断片化をクラウドゲームサーバ103-1から効果的に隠すので、IOMMU381の使用は、クラウドゲームサーバ103-1内のDMA転送操作を簡素化することができる。
例えば、IOMMU381が、コンピュータメモリ323内の断片化された物理メモリアドレスをメモリアドレスの連続仮想ブロックとしてクラウドゲームサーバ103-1に提示するために使用されなかった場合、クラウドゲームサーバ103-1は、複数のDMA転送操作を実行するか、または、コンピュータメモリ323内の断片化された物理メモリアドレスにわたってデータを読み取るトランザクションを分散/収集する必要がある。しかし、IOMMU381を使用して、コンピュータメモリ323内の断片化された物理メモリアドレスを、メモリアドレスの連続仮想ブロックとしてクラウドゲームサーバ103-1に提示することで、クラウドゲームサーバ103-1は単一のDMA転送操作を実行して、コンピュータメモリ323内の断片化された物理メモリアドレスにわたってデータを読み取ることができる。
例えば、IOMMU381が、コンピュータメモリ323内の断片化された物理メモリアドレスをメモリアドレスの連続仮想ブロックとしてクラウドゲームサーバ103-1に提示するために使用されなかった場合、クラウドゲームサーバ103-1は、複数のDMA転送操作を実行するか、または、コンピュータメモリ323内の断片化された物理メモリアドレスにわたってデータを読み取るトランザクションを分散/収集する必要がある。しかし、IOMMU381を使用して、コンピュータメモリ323内の断片化された物理メモリアドレスを、メモリアドレスの連続仮想ブロックとしてクラウドゲームサーバ103-1に提示することで、クラウドゲームサーバ103-1は単一のDMA転送操作を実行して、コンピュータメモリ323内の断片化された物理メモリアドレスにわたってデータを読み取ることができる。
いくつかの実施形態では、管理サーバ105-1は、接続部392によって示されるように、NIC373を介してクラウドストレージシステム390に接続される。クラウドストレージシステム390は、1つまたは複数のクラウドストレージサーバ109-1~109-Yを含む。各クラウドストレージサーバ109-1~109-Yは、それぞれのNIC387-1~387-Yを含む。また、各クラウドストレージサーバ109-1~109-Yは、それぞれ1つまたは複数のHDD389-1~389-Yを含む。また、いくつかの実施形態では、クラウドストレージサーバ109-1~109-Yのいくつかは、1つまたは複数のNVMe SSDまたは他の種類のデータストレージデバイスを含む。いくつかの実施形態では、クラウドストレージシステム390は、複数の物理記憶媒体(HDD)の間でデータストレージを分散し、データ重複排除方法を利用して複数の物理記憶媒体の使用を最適化するように構成および操作される。
クラウドストレージシステム390によってアクセス可能/制御される複数の物理記憶媒体は、高速相互接続および高速スイッチによって相互接続される複数の異なるストレージボックスに位置することができる。いくつかの実施形態では、クラウドストレージシステム390によりアクセス可能/制御される複数の物理記憶媒体を含む複数の異なるストレージボックスは、データセンタ内の別々の場所に、または地理的に分散された複数のデータセンタの間に設置することができる。いくつかの実施形態では、キャッシングシステムを使用して複数のデータセンタ間でデータストレージを管理することができるため、特定の要求エンティティ、例えば、ユーザがクラウドゲームアプリケーションをプレイするために使用する特定のリモートクライアントデバイスのために利用または必要とされるデータを、要求エンティティに最も近い、または要求エンティティに許容可能なサービス品質を提供する特定のデータセンタに移動することができる。いくつかの実施形態では、キャッシングシステムは、ユーザデータ及び/またはゲームデータを特定のデータセンタに移行するように定義された移行アルゴリズムを利用することができる。
クラウドストレージシステム390によってアクセス可能/制御される複数の物理記憶媒体は、高速相互接続および高速スイッチによって相互接続される複数の異なるストレージボックスに位置することができる。いくつかの実施形態では、クラウドストレージシステム390によりアクセス可能/制御される複数の物理記憶媒体を含む複数の異なるストレージボックスは、データセンタ内の別々の場所に、または地理的に分散された複数のデータセンタの間に設置することができる。いくつかの実施形態では、キャッシングシステムを使用して複数のデータセンタ間でデータストレージを管理することができるため、特定の要求エンティティ、例えば、ユーザがクラウドゲームアプリケーションをプレイするために使用する特定のリモートクライアントデバイスのために利用または必要とされるデータを、要求エンティティに最も近い、または要求エンティティに許容可能なサービス品質を提供する特定のデータセンタに移動することができる。いくつかの実施形態では、キャッシングシステムは、ユーザデータ及び/またはゲームデータを特定のデータセンタに移行するように定義された移行アルゴリズムを利用することができる。
通常、ゲームデータへのアクセスは読み取り専用である。しかし、セーブデータへのアクセスには、読み取り操作と書き込み動作の両方が含まれる。ユーザデータへのアクセスは、管理サーバ105-1~105-Xによって管理され得る。管理サーバ105-1~105-Xは、要求されたセーブデータディスクイメージをクラウドストレージサーバ109-1~109-Yからマウントし、クラウドストレージサーバ109-1~109-Yとのデータ通信に必要なプロトコルを実装する。様々な実施形態では、管理サーバ105-1~105-Xとクラウドストレージサーバ109-1~109-Yとの間の様々なデータ通信のために、TCPベースのデータ通信プロトコル、例えば、Ceph、NFS、Amazon S3(httpベース)など、またはいくつかのその他の種類のオブジェクト、ファイル、もしくはブロックストレージプロトコルなどを使用することができる。前述のように、いくつかの実施形態では、クラウドゲームサーバ103-1~103-Nは、PCI Expressを使用して管理サーバ105-1~105-Xとデータ通信する。いくつかの実施形態では、クラウドゲームサーバ103-1~103-Nは、接続部394によって示されるように、NIC373に接続されたNIC393を介して、ネットワーク上で管理サーバ105-1~105-Xとデータ通信する。クラウドゲームサーバ103-1~103-Nと管理サーバ105-1~105-Xとの間のデータ通信は、中でも、Ethernet(TCP/IP)、RDMA、InfiniBandなどの様々なデータ通信プロトコルのうちの1つまたは複数に従って行われる。
セーブデータ(およびその他のユーザデータ)がたどるデータ通信経路は、ゲームデータに幾分似ている。どちらの場合も、クラウドゲームサーバ103-1~103-NのCPU325は、異なる制御パスAPIとデータパスAPIに対応するコマンドバッファを生成する。コマンドバッファは、クラウドゲームサーバ103-1~103-NのストレージCPU331によって処理される。ストレージCPU331は、コマンドバッファの送信を管理サーバ105-1~105-Xに指示し、管理サーバ105-1~105-Xは、クラウドストレージサーバ109-1~109-Yのうちの1つまたは複数からマウントされたクラウドストレージを有する。いくつかの実施形態では、制御パスAPIは、とりわけ、Ethernet、RDMA、InfiniBandなどのネットワーク接続上で伝送することができる。しかしながら、データパスAPIを含むコマンドバッファなどの性能が重要なコマンドバッファは、高速データ接続上で、PCIeファブリック上などで管理サーバ105-1~105-Xに伝送される。
管理サーバ105-1~105-Xは、CPU365を操作して、クラウドゲームサーバ103-1~103-Nから受信するコマンドバッファを受け取って処理するようにプログラムされている。クラウドゲームサーバ103-1~103-Nから受信したコマンドバッファに従って、管理サーバ105-1~105-Xは、中でも、Ethernet、Ceph、NFS、S3などのネットワークプロトコルを使用して、必要に応じてクラウドストレージシステム390からデータを取得するように動作する。例えば、いくつかの実施形態では、「mountSaveDiskImage」制御パスAPIは、所与のクラウドストレージサーバ109-1~109-Y内のHDD389-1~389-Yから管理サーバ105-1~105-X内のRAM323またはNVMeSSD371へデータの転送をトリガする。いくつかの実施形態では、読み取り/書き込みデータパスAPIは、管理サーバ105-1~105-XのRAM323内のデータにアクセスまたは修正する。データがクラウドストレージシステム390に書き戻されるプロセスは、トランザクションが使用されるかどうかに依存する。トランザクションを使用しないと、ライト/クローズ/アンマウントAPIは、管理サーバ105-1~105-Xからデータをクラウドストレージシステム390にフラッシュバックする。トランザクションを使用して、コミットAPIは、管理サーバ105-1~105-Xからクラウドストレージシステム390にデータのいずれの変更もフラッシュバックする。
管理サーバ105-1~105-Xは、CPU365を操作して、クラウドゲームサーバ103-1~103-Nから受信するコマンドバッファを受け取って処理するようにプログラムされている。クラウドゲームサーバ103-1~103-Nから受信したコマンドバッファに従って、管理サーバ105-1~105-Xは、中でも、Ethernet、Ceph、NFS、S3などのネットワークプロトコルを使用して、必要に応じてクラウドストレージシステム390からデータを取得するように動作する。例えば、いくつかの実施形態では、「mountSaveDiskImage」制御パスAPIは、所与のクラウドストレージサーバ109-1~109-Y内のHDD389-1~389-Yから管理サーバ105-1~105-X内のRAM323またはNVMeSSD371へデータの転送をトリガする。いくつかの実施形態では、読み取り/書き込みデータパスAPIは、管理サーバ105-1~105-XのRAM323内のデータにアクセスまたは修正する。データがクラウドストレージシステム390に書き戻されるプロセスは、トランザクションが使用されるかどうかに依存する。トランザクションを使用しないと、ライト/クローズ/アンマウントAPIは、管理サーバ105-1~105-Xからデータをクラウドストレージシステム390にフラッシュバックする。トランザクションを使用して、コミットAPIは、管理サーバ105-1~105-Xからクラウドストレージシステム390にデータのいずれの変更もフラッシュバックする。
クラウドゲームサーバ100の様々な実施形態は、クラウドゲームサーバ103(クラウドゲームサーバ103はクラウドゲームサーバ103-1~103-Nのいずれかである)、クラウドストレージサーバ109(クラウドストレージサーバ109は、クラウドストレージサーバ109-1~109-Yのいずれかである)、および管理サーバ105(管理サーバ105は、管理サーバ105-1~105-Xのいずれかである)を含むことが本明細書に開示される。クラウドゲームサーバ103は、ユーザ121のコントローラデバイス125から受信した入力に従ってビデオゲームを実行するように構成される。クラウドゲームサーバ103は、ユーザ121によるビデオゲームのプレイをユーザ121のローカル計算システム120に反映するビデオストリームの伝送を指示するように構成される。クラウドストレージサーバ109は、クラウドゲームサーバ103とデータ通信している。クラウドストレージサーバ109は、ユーザ121のユーザデータを格納するためのデータストレージデバイス389を含む(データストレージデバイス389は、対応するクラウドストレージサーバ109-1~109-Y内のデータストレージデバイス389-1~389-Yである)。
ユーザデータには、ユーザ121によるビデオゲームのプレイを記録するデータが含まれる。管理サーバ105は、クラウドゲームサーバ103およびクラウドストレージサーバ109の両方とデータ通信する。管理サーバ105には、クラウドストレージサーバ109内のデータストレージデバイスよりも速いデータ速度及び低いレイテンシで動作する、NVMe SSD371などの高速データストレージデバイスが含まれる。いくつかの実施形態では、クラウドストレージサーバ109内のデータストレージデバイスはHDDであり、高速ストレージデバイスはNVMe SSDである。管理サーバ105は、クラウドゲームサーバ103上で実行されているビデオゲームによって発行されたデータアクセス要求を受信するようにプログラムされている。データアクセス要求は、クラウドストレージサーバ109内のデータストレージデバイス389に格納された要求されたデータを識別する。管理サーバ105は、要求されたデータをクラウドストレージサーバ109内のデータストレージデバイス389から管理サーバ105内の高速データストレージデバイス371にコピーするようにプログラムされている。管理サーバ105は、クラウドストレージサーバ109がデータアクセス要求に応答する代わりに、高速データストレージデバイス371を使用してデータアクセス要求に応答するようにもプログラムされている。
ユーザデータには、ユーザ121によるビデオゲームのプレイを記録するデータが含まれる。管理サーバ105は、クラウドゲームサーバ103およびクラウドストレージサーバ109の両方とデータ通信する。管理サーバ105には、クラウドストレージサーバ109内のデータストレージデバイスよりも速いデータ速度及び低いレイテンシで動作する、NVMe SSD371などの高速データストレージデバイスが含まれる。いくつかの実施形態では、クラウドストレージサーバ109内のデータストレージデバイスはHDDであり、高速ストレージデバイスはNVMe SSDである。管理サーバ105は、クラウドゲームサーバ103上で実行されているビデオゲームによって発行されたデータアクセス要求を受信するようにプログラムされている。データアクセス要求は、クラウドストレージサーバ109内のデータストレージデバイス389に格納された要求されたデータを識別する。管理サーバ105は、要求されたデータをクラウドストレージサーバ109内のデータストレージデバイス389から管理サーバ105内の高速データストレージデバイス371にコピーするようにプログラムされている。管理サーバ105は、クラウドストレージサーバ109がデータアクセス要求に応答する代わりに、高速データストレージデバイス371を使用してデータアクセス要求に応答するようにもプログラムされている。
管理サーバ105-1~105-Xとクラウドストレージサーバ109との間でストレージ性能に差があり、管理サーバ105-1~105-XのNVMe SSDが、クラウドストレージサーバ109のHDDよりもはるかに高速であるクラウドゲームサーバ103-1~103-Nにデータを提供するように動作することを理解されたい。また、管理サーバ105-1~105-Xとクラウドストレージサーバ109の間のネットワーク性能にも差があり、管理サーバ105-1~105-Xは、クラウドストレージサーバ109と比較して、クラウドゲームサーバ103-1~103-Nとの間でより高速のネットワークデータ伝送速度(より高速のネットワーク帯域幅)を提供する。管理サーバ105-1~105-Xをデータキャッシュとして利用することで、クラウドストレージサーバ109とのネットワーク通信におけるデータ負荷を制限することができる。管理サーバ105-1~105-Xをデータキャッシュとして使用することにより、クラウドストレージサーバ109からの読み取り動作を非常に高速性能で実行できることが保証される。いくつかの実施形態では、管理サーバ105-1~105-Xにキャッシュを提供させることなく、クラウドストレージサーバ109との有効なデータ通信帯域幅が大幅に低下する可能性がある。
いくつかの実施形態では、クラウドストレージサーバ109は、クラウドゲームサーバ103-1~103-Nとは異なる場所にある。いくつかの実施形態では、多数のクラウドゲームサーバ103-1~103-Nがインターネットサービスプロバイダ(ISP)に配置される。これは、ISPが電力とインターネット接続を無料で提供するため、運用上の理由から安価である。そのような実施形態では、ISPのデータセンタとクラウドゲームデータセンタとの間のネットワーク帯域幅は良好であるべきであるが、クラウドゲームサーバ103-1~103-Nがクラウドストレージサーバ109内のNVMe SSDドライブに直接データを書き込むのに必ずしも十分であるとは限らない。したがって、これらの実施形態では、たとえクラウドストレージサーバ109がHDDよりも高速なNVMe SSDドライブを実装しても、管理サーバ105-1~105-Xによって提供されるデータキャッシング機能は依然として有益である。
いくつかの実施形態では、管理サーバ105は、第1のネットワークストレージプロトコルを使用してクラウドストレージサーバ109と双方向データ通信を行うようにプログラムされ、管理サーバ105は、第1のネットワークストレージプロトコルとは異なる第2のネットワークストレージプロトコルを使用して、クラウドゲームサーバ103と双方向データ通信を行うようにプログラムされる。いくつかの実施形態では、第2のネットワークストレージプロトコルはPCIeである。
いくつかの実施形態では、クラウドゲームサーバ103上で実行中のビデオゲームによって発行されるデータアクセス要求は、データの特定のグループをマウントする要求である。管理サーバ105は、クラウドストレージサーバ109に後続のデータアクセス要求に応答させる代わりに、高速ストレージデバイス371を使用することによって、クラウドゲームサーバ103上で実行中のビデオゲームによって発行されるデータの特定のグループへの後続のデータアクセス要求に応答するようにプログラムされている。いくつかの実施形態では、データの特定のグループは、データオブジェクト、データファイル、またはデータブロックである。いくつかの実施形態では、データの特定のグループは、ビデオゲームのユーザのプレイのためのセーブデータを含む、ビデオゲームのためのセーブデータディスクイメージである。
いくつかの実施形態では、クラウドゲームサーバ103上で実行中のビデオゲームによって発行される後続のデータアクセス要求は、読み取りAPI呼び出しまたは書き込みAPI呼び出しまたはアンマウントAPI呼び出しまたはコミットAPI呼び出しのいずれかである。いくつかの実施形態では、管理サーバ105は、管理サーバ105内の高速ストレージデバイス371内のデータの特定のグループにデータを書き込むことによって、書き込みAPI呼び出しに応答するようにプログラムされる。いくつかの実施形態では、管理サーバ105は、管理サーバ105内の高速ストレージデバイス371内のデータの特定のグループと、クラウドストレージサーバ109内のデータストレージデバイス389内のデータの特定のグループとの両方にデータを書き込むことによって書き込みAPI呼び出しに応答するようにプログラムされる。いくつかの実施形態では、管理サーバ105は、管理サーバ105内の高速ストレージデバイス371内のデータの特定のグループにデータを読み込むことによって、読み込みAPI呼び出しに応答するようにプログラムされる。いくつかの実施形態では、管理サーバ105は、管理サーバ105内の高速ストレージデバイス371内のデータの特定の分類内の現在のすべてのデータが、クラウドストレージサーバ109内のデータストレージデバイス389内のデータの特定の分類内にも現在存在することを保証することによって、アンマウントおよびコミットAPI呼び出しに応答するようにプログラムされる。
図4は、いくつかの実施形態による、クラウドゲームシステム100を操作するための方法のフローチャートを示す。方法は、ユーザ121のコントローラデバイス125から受信した入力に従って、クラウドゲームサーバ103上でビデオゲームを実行するための操作401を含む。方法は、ユーザ121によるビデオゲームのプレイをユーザ121のローカル計算システム120に反映するビデオストリームの伝送を指示するようにクラウドゲームサーバ103を操作するための操作403も含む。方法はまた、ユーザ121のユーザデータをクラウドストレージサーバ109に格納させるための操作405を含む。ユーザデータには、ユーザ121によるビデオゲームのプレイを記録するデータが含まれる。
方法はまた、管理サーバ105でデータアクセス要求を受信するための操作407を含む。データアクセス要求は、クラウドゲームサーバ103上で実行されているビデオゲームによって発行される。データアクセス要求は、クラウドストレージサーバ109内のデータストレージデバイス389に格納された要求されたデータを識別する。方法は、要求されたデータをクラウドストレージサーバ109内のデータストレージデバイス389から管理サーバ105内の高速データストレージデバイス371にコピーするための操作409も含む。高速データストレージデバイス371は、クラウドストレージサーバ109内のデータストレージデバイス389よりも速いデータ速度及び低いレイテンシで動作する。いくつかの実施形態では、クラウドストレージサーバ109内のデータストレージデバイス389はHDDであり、管理サーバ105内の高速ストレージデバイス371はNVMe SSDである。方法は、クラウドストレージサーバ109がデータアクセス要求に応答する代わりに、管理サーバ105内の高速データストレージデバイス371を使用してデータアクセス要求に応答するための操作411をさらに含む。
方法はまた、管理サーバ105でデータアクセス要求を受信するための操作407を含む。データアクセス要求は、クラウドゲームサーバ103上で実行されているビデオゲームによって発行される。データアクセス要求は、クラウドストレージサーバ109内のデータストレージデバイス389に格納された要求されたデータを識別する。方法は、要求されたデータをクラウドストレージサーバ109内のデータストレージデバイス389から管理サーバ105内の高速データストレージデバイス371にコピーするための操作409も含む。高速データストレージデバイス371は、クラウドストレージサーバ109内のデータストレージデバイス389よりも速いデータ速度及び低いレイテンシで動作する。いくつかの実施形態では、クラウドストレージサーバ109内のデータストレージデバイス389はHDDであり、管理サーバ105内の高速ストレージデバイス371はNVMe SSDである。方法は、クラウドストレージサーバ109がデータアクセス要求に応答する代わりに、管理サーバ105内の高速データストレージデバイス371を使用してデータアクセス要求に応答するための操作411をさらに含む。
いくつかの実施形態では、方法は、管理サーバ105とクラウドストレージサーバ109との間の双方向データ通信のために第1のネットワークストレージプロトコルを使用すること、および管理サーバ105とクラウドゲームサーバ103との間の双方向データ通信のために第2のネットワークストレージプロトコルを使用することを含み、第2のネットワークストレージプロトコルは、第1のネットワークストレージプロトコルとは異なる。いくつかの実施形態では、第2のネットワークストレージプロトコルはPCIeである。
いくつかの実施形態では、データアクセス要求は、データの特定の分類をマウントする要求である。いくつかの実施形態では、データの特定のグループは、データオブジェクト、データファイル、またはデータブロックである。いくつかの実施形態では、データの特定のグループは、ビデオゲームのユーザのプレイのためのセーブデータを含む、ビデオゲームのためのセーブデータディスクイメージである。方法はまた、管理サーバ105で後続のデータアクセス要求を受信することを含み、後続のデータアクセス要求は、クラウドゲームサーバ103上で実行中のビデオゲームによって発行され、後続のデータアクセス要求は、データの特定の分類に向けられる。方法はまた、クラウドストレージサーバ109が後続のデータアクセス要求に応答する代わりに、管理サーバ105内の高速データストレージデバイス371を使用して後続のデータアクセス要求に応答することを含む。
いくつかの実施形態では、後続のデータアクセス要求は、読み取りAPI呼び出しまたは書き込みAPI呼び出しまたはアンマウントAPI呼び出しまたはコミットAPI呼び出しのいずれかである。いくつかの実施形態では、方法は、管理サーバ105内の高速ストレージデバイス371内のデータの特定の分類にデータを書き込むことによって、書き込みAPI呼び出しに応答する管理サーバ105を操作することを含む。いくつかの実施形態では、方法は、管理サーバ105内の高速ストレージデバイス371内のデータの特定の分類と、クラウドストレージサーバ109内のデータストレージデバイス389内のデータの特定の分類との両方にデータを書き込むことによって書き込みAPI呼び出しに応答するように管理サーバ105を操作することを含む。
いくつかの実施形態では、方法は、管理サーバ105内の高速ストレージデバイス371内のデータの特定の分類からデータを読み取ることによって、読み取りAPI呼び出しに応答するように管理サーバ105を操作することを含む。いくつかの実施形態では、方法は、管理サーバ105内の高速ストレージデバイス371内のデータの特定の分類に現在あるすべてのデータが、クラウドストレージサーバ109内のデータストレージデバイス389内のデータの特定の分類にも現在存在することを保証することによって、アンマウントおよびコミットAPI呼び出しに応答するように管理サーバ105を操作することを含む。
いくつかの実施形態では、方法は、管理サーバ105内の高速ストレージデバイス371内のデータの特定の分類からデータを読み取ることによって、読み取りAPI呼び出しに応答するように管理サーバ105を操作することを含む。いくつかの実施形態では、方法は、管理サーバ105内の高速ストレージデバイス371内のデータの特定の分類に現在あるすべてのデータが、クラウドストレージサーバ109内のデータストレージデバイス389内のデータの特定の分類にも現在存在することを保証することによって、アンマウントおよびコミットAPI呼び出しに応答するように管理サーバ105を操作することを含む。
いくつかの実施形態では、管理サーバ105-1~105-XのCPU365は、図4の方法に関連付けられたいずれかの任意選択及び/または補助的操作を含む、図4の方法を実装するように構成される。いくつかの実施形態では、図4の方法の操作を実行するためのコンピュータ実行可能プログラム命令が、管理サーバ105-1~105-Xのコンピュータメモリ323に格納される。
本明細書で説明するように、クラウドゲームシステム100内でオンラインビデオゲームをプレイするためのアクセスがユーザに提供される。クラウドゲームシステム100へのアクセスは、広い地理的領域にわたって提供することができる。クラウド計算とは、動的にスケーラブルで多くの場合仮想化されたリソースがインターネットを介したサービスとして提供される計算様式である。ユーザは、ユーザをサポートする計算「クラウド」の技術的インフラストラクチャのエキスパートである必要はない。クラウド計算は、サービスとしてのインフラストラクチャ(IaaS)、サービスとしてのプラットフォーム(PaaS)、サービスとしてのソフトウェア(SaaS)などの異なるサービスに分類することができる。クラウド計算サービスは、多くの場合、ウェブブラウザからアクセスするビデオゲームなどの共通のオンラインアプリケーションを提供するが、ソフトウェア及びデータは、クラウド内のサーバ計算システムに格納される。クラウドという用語は、コンピュータネットワーク図におけるインターネットの描かれ方に基づいたインターネットのメタファーとして使用され、複雑なインフラストラクチャを隠し持つことの抽象的概念である。
他の実施形態では、オンラインビデオゲームは、分散型ゲームエンジンによって実行されてよい。これらの実施形態では、分散型ゲームエンジンは、クラウドゲームサーバ103-1~103-Nなどの複数の処理エンティティ上で実行されてよく、その結果、各処理エンティティは、ビデオゲームが実行されるオンライン上で所与のゲームエンジンの機能セグメントを実行する。各処理エンティティは、ゲームエンジンからは単なる計算ノードと見なされる。ゲームエンジンは通常、機能的に多様な一連の操作を行って、ユーザが体験する追加のサービスとともにビデオゲームアプリケーションを実行する。例えば、ゲームエンジンは、ゲームロジックを実装し、ゲーム計算、物理的過程、ジオメトリ変換、レンダリング、照明、シェーディング、オーディオ、及び追加のゲーム内またはゲーム関連サービスを実行する。ゲームエンジンによって実行される追加のサービスには、例えば、メッセージング、ソーシャルユーティリティ、オーディオ通信、ゲームプレイ再生機能、ヘルプ機能などが含まれてよい。
ゲームエンジンは、特定のサーバのハイパーバイザによって仮想化されたオペレーティングシステム上で実行されてよいが、他の実施形態では、ゲームエンジン自体が複数の処理エンティティに分散され、各エンティティはデータセンタの異なるサーバユニットに常駐してよい。いくつかの実施形態では、複数の処理エンティティは、各ゲームエンジンセグメントの必要に応じて、他の種類の処理エンティティの中でも、サーバユニット、仮想マシン、およびコンテナのうちの1つまたは複数を含む。例えば、ゲームエンジンセグメントがカメラの変換を担当する場合、比較的単純な数学演算(例えば、行列変換)を多数行うことになるので、その特定のゲームエンジンセグメントは、グラフィック処理ユニット(GPU)に関連付けられた仮想マシンと共にプロビジョニングされてよい。また、例として、より少ないがより複雑な操作を必要とする他のゲームエンジンセグメントは、1つまたは複数のより高出力の中央処理装置(CPU)に関連付けられた処理エンティティと共にプロビジョニングされてよい。
いくつかの実施形態では、単一のクラウドゲームサーバ103-1が、異なるユーザのために複数の軽量ゲーム(重みは計算リソース消費に関するものである)をホストすることができる。これらの実施形態では、ストレージCPU331および他の構成要素を含むクラウドゲームサーバ103-1が共有される。ネットワーク/PCIe接続が共有され、各ユーザは公正な量の時間を得る必要があるとき、クラウドゲームサーバ103-1のこの共有により、ストレージ要求及び/またはロードバランシングの優先度が異なるレベルになる可能性がある。いくつかの実施形態では、単一のクラウドゲームサーバ103-1は、軽量ゲームとより重いゲームとの両方をホストすることができる(重みは計算リソース消費に関するものである)。
ゲームエンジンは、特定のサーバのハイパーバイザによって仮想化されたオペレーティングシステム上で実行されてよいが、他の実施形態では、ゲームエンジン自体が複数の処理エンティティに分散され、各エンティティはデータセンタの異なるサーバユニットに常駐してよい。いくつかの実施形態では、複数の処理エンティティは、各ゲームエンジンセグメントの必要に応じて、他の種類の処理エンティティの中でも、サーバユニット、仮想マシン、およびコンテナのうちの1つまたは複数を含む。例えば、ゲームエンジンセグメントがカメラの変換を担当する場合、比較的単純な数学演算(例えば、行列変換)を多数行うことになるので、その特定のゲームエンジンセグメントは、グラフィック処理ユニット(GPU)に関連付けられた仮想マシンと共にプロビジョニングされてよい。また、例として、より少ないがより複雑な操作を必要とする他のゲームエンジンセグメントは、1つまたは複数のより高出力の中央処理装置(CPU)に関連付けられた処理エンティティと共にプロビジョニングされてよい。
いくつかの実施形態では、単一のクラウドゲームサーバ103-1が、異なるユーザのために複数の軽量ゲーム(重みは計算リソース消費に関するものである)をホストすることができる。これらの実施形態では、ストレージCPU331および他の構成要素を含むクラウドゲームサーバ103-1が共有される。ネットワーク/PCIe接続が共有され、各ユーザは公正な量の時間を得る必要があるとき、クラウドゲームサーバ103-1のこの共有により、ストレージ要求及び/またはロードバランシングの優先度が異なるレベルになる可能性がある。いくつかの実施形態では、単一のクラウドゲームサーバ103-1は、軽量ゲームとより重いゲームとの両方をホストすることができる(重みは計算リソース消費に関するものである)。
ゲームエンジンを分散することにより、ゲームエンジンは、物理サーバユニットの能力に拘束されない弾力性のある計算特性を備える。代わりに、ゲームエンジンは、必要に応じて、オンラインビデオゲームの要求を満たすためにより多いまたは少ない計算ノードと共にプロビジョニングされる。オンラインビデオゲーム及びビデオゲームプレーヤの観点からは、複数の計算ノードに分散されているゲームエンジンは、ゲームエンジンマネージャまたはスーパーバイザがワークロードを分散し、結果をシームレスに統合して、プレーヤにオンラインビデオゲーム出力構成要素を提供するので、単一の処理エンティティで実行される非分散ゲームエンジンと区別できない。
いくつかの実施形態では、ユーザ/プレーヤは、プロセッサ、ディスプレイ、および入力/出力(I/O)デバイスを含む、ローカル計算システム120などのクライアントデバイスを介して、クラウドゲームシステム100によって提供されるリモートサービスにアクセスする。様々な実施形態では、クライアントデバイスは、パーソナルコンピュータ、携帯電話、ネットブックコンピュータ、タブレットコンピュータ、携帯情報端末装置、または別の種類の計算デバイスであり得る。いくつかの実施形態では、クラウドゲームサーバ103-1~103-N上で実行されるNICは、クライアントによって使用されているクライアントデバイスの種類を認識し、必要に応じてクラウドゲームサーバ103-1~103-Nとクライアントデバイスとの間のデータ通信方法を調整する。いくつかの実施形態では、クライアントデバイスは、HTML(ハイパーテキストマークアップ言語)またはTCP/IP(トランスミッションコントロールプロトコル/インターネットプロトコル)またはWebRTC(Web Real-Time Communication)などの標準通信方法を使用して、インターネット上でクラウドゲームサーバ103-1~103-Nにアクセスする。
所与のオンラインビデオゲームまたはゲームアプリケーションは、特定のプラットフォーム及び特定の関連コントローラデバイス用に開発され得ることを、理解されたい。しかし、このようなオンラインビデオゲームが、本明細書に記載されるようなクラウドゲームシステム100を介して利用可能となる場合、ユーザは、別のコントローラデバイスでオンラインビデオゲームにアクセスすることができる。例えば、あるビデオゲームは、ゲーム機及びその関連コントローラ用に開発された可能性があるが、ユーザは、キーボード及びマウスを利用して、パーソナルコンピュータからビデオゲームのクラウドベース版のゲームにアクセスすることができる。このようなシナリオでは、入力パラメータ構成により、ユーザが利用可能なコントローラデバイス(この事例ではキーボード及びマウス)により生成され得る入力から、ビデオゲームのクラウドベース版の実行で受け入れ可能な入力へ、マッピングが定義され得る。
別の例では、ユーザは、タブレット計算デバイス、タッチスクリーンスマートフォン、または他のタッチスクリーン駆動デバイスを介して、クラウドゲームシステム100にアクセスし得る。この例では、クライアントデバイス及びコントローラデバイスは、同じデバイス内に一緒に統合され、検出されたタッチスクリーン入力/ジェスチャにより入力が提供される。このようなデバイスでは、入力パラメータ構成により、ビデオゲームのゲーム入力に対応する特定のタッチスクリーン入力が定義され得る。たとえば、ボタン、指向性パッド、及び/または他の種類の入力素子が、オンラインビデオゲームの実行中に表示され、またはオーバーレイされ、ユーザがゲーム入力を生成するためにタッチすることが可能であるタッチスクリーン上の位置を示すことができる。また、特定の方向のスワイプまたは特定のタッチ動作などのジェスチャも、ゲーム入力として検出され得る。一実施形態では、タッチスクリーン上での制御操作にユーザを慣れさせるために、例えばオンラインビデオゲームのゲームプレイを始める前に、タッチスクリーンを介してゲームプレイに入力する方法を示すチュートリアルが、ユーザに提供され得る。
いくつかの実施形態では、クライアントデバイスは、コントローラデバイスの接続ポイントとして機能する。より具体的には、コントローラデバイスは、無線接続または有線接続を介してクライアントデバイスと通信し、コントローラデバイスからクライアントデバイスへ入力を伝送する。次に、クライアントデバイスは、これらの入力を処理して、その後入力データを、ルータなどのローカルネットワークデバイスを介してアクセスされ得るネットワーク123を介して、クラウドゲームサーバ103-1~103-Nへ伝送し得る。
しかし、別の実施形態では、コントローラ自体が、このような入力をまずクライアントデバイスを通して通信する必要なく、ネットワーク123を介して入力を直接クラウドゲームサーバ103-1~103-Nに通信する能力を有するネットワーク化されたデバイスであり得る。例えば、コントローラは、ローカルネットワークデバイス(前述のルータなど)に接続して、クラウドゲームサーバ103-1~103-Nとの間でデータを送受信し得る。したがって、クライアントデバイスは、クラウドベースのビデオゲームからビデオ出力を受信し、それをローカルディスプレイ上にレンダリングすることを必要とされたままであり得ながら、入力レイテンシは、クライアントデバイスをバイパスするため、コントローラがクラウドゲームサーバ103-1~103-Nへネットワーク上で直接入力を送信することを可能にすることにより減少されることが可能である。
しかし、別の実施形態では、コントローラ自体が、このような入力をまずクライアントデバイスを通して通信する必要なく、ネットワーク123を介して入力を直接クラウドゲームサーバ103-1~103-Nに通信する能力を有するネットワーク化されたデバイスであり得る。例えば、コントローラは、ローカルネットワークデバイス(前述のルータなど)に接続して、クラウドゲームサーバ103-1~103-Nとの間でデータを送受信し得る。したがって、クライアントデバイスは、クラウドベースのビデオゲームからビデオ出力を受信し、それをローカルディスプレイ上にレンダリングすることを必要とされたままであり得ながら、入力レイテンシは、クライアントデバイスをバイパスするため、コントローラがクラウドゲームサーバ103-1~103-Nへネットワーク上で直接入力を送信することを可能にすることにより減少されることが可能である。
いくつかの実施形態では、ネットワーク化されたコントローラ及びクライアントデバイスは、特定の種類の入力をコントローラからクラウドゲームサーバ103-1~103-Nへ直接に、また他の種類の入力を、クライアントデバイスを介してクラウドゲームサーバ103-1~103-Nに送信するように構成され得る。例えば、コントローラ自体は別として、検出が任意の追加のハードウェアまたは処理に依存しない入力は、クライアントデバイスをバイパスするため、ネットワーク123を介して直接コントローラからクラウドゲームサーバ103-1~103-Nへ送信することができる。このような入力には、他の種類の入力の中でも、ボタン入力、ジョイスティック入力、埋め込みモーション検出入力(例えば、加速度計、磁力計、及び/またはジャイロスコープにおける入力)が含まれ得る。
しかし、追加のハードウェアを利用するか、クライアントデバイスによる処理を必要とする入力は、コントローラからクライアントデバイスに送信され、次にクライアントデバイスからクラウドゲームサーバ103-1~103-Nに送信される可能性がある。これらの入力は、クラウドゲームサーバ103-1~103-Nへ伝送される前にクライアントデバイスにより処理されることを必要とし得る、ゲーム環境からキャプチャされたビデオまたはキャプチャされたオーディオを含み得る。さらに、コントローラの動作検出ハードウェアからの入力は、キャプチャされたビデオと併せてクライアントデバイスにより処理されて、コントローラの位置及び動作が検出され得、これは次いでクライアントデバイスによりクラウドゲームサーバ103-1~103-Nへ伝達される。様々な実施形態によるコントローラデバイスはまた、クライアントデバイスから、または直接クラウドゲームサーバ103-1~103-Nから、データ(例えばフィードバックデータ)を受信し得ることを理解されたい。
しかし、追加のハードウェアを利用するか、クライアントデバイスによる処理を必要とする入力は、コントローラからクライアントデバイスに送信され、次にクライアントデバイスからクラウドゲームサーバ103-1~103-Nに送信される可能性がある。これらの入力は、クラウドゲームサーバ103-1~103-Nへ伝送される前にクライアントデバイスにより処理されることを必要とし得る、ゲーム環境からキャプチャされたビデオまたはキャプチャされたオーディオを含み得る。さらに、コントローラの動作検出ハードウェアからの入力は、キャプチャされたビデオと併せてクライアントデバイスにより処理されて、コントローラの位置及び動作が検出され得、これは次いでクライアントデバイスによりクラウドゲームサーバ103-1~103-Nへ伝達される。様々な実施形態によるコントローラデバイスはまた、クライアントデバイスから、または直接クラウドゲームサーバ103-1~103-Nから、データ(例えばフィードバックデータ)を受信し得ることを理解されたい。
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブル民生用エレクトロニクス、ミニコンピュータ、メインフレームコンピュータなどを含む種々のコンピュータシステム構成によって実施してもよい。本開示の実施形態はまた、有線ベースまたは無線ネットワークを介してリンクされる遠隔処理デバイスによりタスクが行われる分散計算環境においても、実施することができる。
いくつかの方法の動作を特定の順序で記載したが、方法動作の処理が方法の成功した実装を提供する限り、方法動作の間に他のハウスキーピング動作が実行されてよく、及び/または方法動作がわずかに異なる時間に起こる、または処理に関連する様々な間隔で処理動作が起こることが可能なシステムに分散され得るように調整されてもよいことを、理解すべきである。
本明細書に開示されるいくつかの実施形態は、コンピュータ可読媒体上のコンピュータ可読コードとして作ることもできる。コンピュータ可読媒体は、データを記憶できる任意のデータストレージデバイスであり、データは後にコンピュータシステムにより読み出すことができる。コンピュータ可読媒体の例には、ハードドライブ、ネットクワーク接続ストレージ(NAS)、読み出し専用メモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープ、並びに他の光学及び非光学データストレージデバイスが含まれる。いくつかの実施形態では、コンピュータ可読媒体としては、コンピュータ可読コードが分散的に記憶及び実行されるようにネットワーク結合コンピュータシステム上に分散されたコンピュータ可読有形媒体を挙げることができる。
実施形態の前述の説明は、例示および説明の目的で提供されたものであり、網羅的または限定的であることは意図されていない。特定の実施形態の個々の要素または特徴は、一般に、その特定の実施形態に限定されないが、適用可能な場合、交換可能であり、特に図示または説明されていなくても、選択された実施形態で使用することができる。このように、本明細書に開示された1つまたは複数の実施形態からの1つまたは複数の特徴を、本明細書に開示された1つまたは複数の他の実施形態からの1つまたは複数の特徴と組み合わせて、本明細書に明示的に開示されていないが、本明細書に暗示的に開示されている別の実施形態を形成することができる。この他の実施形態も、多くの方法で変更することができる。そのような実施形態の変形は、本明細書の開示からの逸脱と見なされるべきではなく、そのような実施形態の変形および修正はすべて、本明細書に提供される開示の範囲内に含まれることが意図される。
前述の実施形態は、理解を明確にするためにある程度詳細に説明されたが、添付の特許請求の範囲内で特定の変更及び修正を実施できることは明らかであろう。従って、本明細書に開示される実施形態は、限定ではなく例示としてみなされるべきであり、本実施形態は、本明細書に記載される詳細に限定されるべきではなく、添付の請求項の範囲及び均等物の中で変更されてよい。
Claims (25)
- ユーザのコントローラデバイスから受信した入力に従ってビデオゲームを実行するように構成されたクラウドゲームサーバを有し、前記クラウドゲームサーバは、前記ユーザによる前記ビデオゲームのプレイを前記ユーザのローカル計算システムに反映するビデオストリームの伝送を指示するように構成されており、
前記ユーザのためのユーザデータを格納するためのデータストレージデバイスを含むクラウドストレージサーバを有し、前記ユーザデータは、前記ユーザによる前記ビデオゲームの前記プレイを記録するデータを含み、
前記クラウドゲームサーバ及び前記クラウドストレージサーバの両方とデータ通信する管理サーバを有し、前記管理サーバは、前記クラウドストレージサーバ内の前記データストレージデバイスよりも速いデータ速度及び低いレイテンシで動作する高速データストレージデバイスを含み、前記管理サーバは、前記クラウドゲームサーバ上で実行している前記ビデオゲームによって発行されたデータアクセス要求を受信するようにプログラムされ、前記データアクセス要求は、前記クラウドストレージサーバ内の前記データストレージデバイスに格納された要求されたデータを識別し、前記管理サーバは、前記クラウドストレージサーバ内の前記データストレージデバイスから前記高速データストレージデバイスへ前記要求されたデータをコピーするようにプログラムされ、前記管理サーバは、前記クラウドストレージサーバに前記データアクセス要求に応答させる代わりに、前記高速データストレージデバイスを使用して前記データアクセス要求に前記管理サーバが応答するようにプログラムされる、クラウドゲームシステム。 - 前記データアクセス要求は、データの特定の分類をマウントする要求であり、前記管理サーバは、前記クラウドストレージサーバに後続のデータアクセス要求に応答させる代わりに、前記高速データストレージデバイスを使用して前記クラウドゲームサーバ上で実行している前記ビデオゲームによって発行される、前記データの特定の分類への前記後続のデータアクセス要求に前記管理サーバが応答するようにプログラムされる、請求項1に記載のクラウドゲームシステム。
- 前記データの特定の分類は、データオブジェクト、データファイル、またはデータブロックである、請求項2に記載のクラウドゲームシステム。
- 前記データの特定の分類は、前記ビデオゲームの前記ユーザのプレイのためのセーブデータを含む前記ビデオゲームのためのセーブデータディスクイメージである、請求項2に記載のクラウドゲームシステム。
- 後続のデータアクセス要求は、読み取りアプリケーションプログラミングインターフェース呼び出し、または書き込みアプリケーションプログラミングインターフェース呼び出し、またはアンマウントアプリケーションプログラミングインターフェース呼び出し、またはコミットアプリケーションプログラミングインターフェース呼び出しのいずれかである、請求項2に記載のクラウドゲームシステム。
- 前記管理サーバは、高速データストレージデバイス内の前記データの特定の分類にデータを書き込むことによって前記書き込みアプリケーションプログラミングインターフェース呼び出しに応答するようにプログラムされる、請求項5に記載のクラウドゲームシステム。
- 前記管理サーバは、高速データストレージデバイス内の前記データの特定の分類及び前記クラウドストレージサーバ内の前記データストレージデバイス内の前記データの特定の分類の両方にデータを書き込むことによって前記書き込みアプリケーションプログラミングインターフェース呼び出しに応答するようにプログラムされる、請求項5に記載のクラウドゲームシステム。
- 前記管理サーバは、高速データストレージデバイス内の前記データの特定の分類からデータを読み取ることによって、前記読み取りアプリケーションプログラミングインターフェース呼び出しに応答するようにプログラムされる、請求項5に記載のクラウドゲームシステム。
- 前記管理サーバは、高速データストレージデバイス内の前記データの特定の分類内の現在のすべてのデータが、前記クラウドストレージサーバ内の前記データストレージデバイス内の前記データの特定の分類にも現在存在することを保証することによって、前記アンマウントアプリケーションプログラミングインターフェース呼び出し及び前記コミットアプリケーションプログラミングインターフェース呼び出しに応答するようにプログラムされる、請求項5に記載のクラウドゲームシステム。
- 前記クラウドストレージサーバ内の前記データストレージデバイスはハードディスクドライブであり、前記高速データストレージデバイスは不揮発性メモリエクスプレスソリッドステートドライブである、請求項1に記載のクラウドゲームシステム。
- 前記管理サーバは、第1のネットワークストレージプロトコルを使用して前記クラウドストレージサーバと双方向データ通信を有するようにプログラムされ、前記管理サーバがまた、前記第1のネットワークストレージプロトコルとは異なる第2のネットワークストレージプロトコルを使用して、前記クラウドゲームサーバと双方向データ通信を有するようにプログラムされる、請求項1に記載のクラウドゲームシステム。
- 前記第2のネットワークストレージプロトコルは、周辺コンポーネント相互接続エクスプレスである、請求項11に記載のクラウドゲームシステム。
- ユーザのコントローラデバイスから受信した入力に従って、クラウドゲームサーバ上でビデオゲームを実行し、
前記ユーザによる前記ビデオゲームのプレイを前記ユーザのローカル計算システムに反映するビデオストリームの伝送を指示するように前記クラウドゲームサーバを操作し、
前記ユーザによる前記ビデオゲームの前記プレイを記録するデータが含まれる、前記ユーザのユーザデータをクラウドストレージサーバに格納させ、
データアクセス要求を管理サーバで受信し、前記データアクセス要求は前記クラウドゲームサーバ上で実行している前記ビデオゲームによって発行され、前記データアクセス要求は前記クラウドストレージサーバ内のデータストレージデバイスに格納された要求されたデータを識別し、
前記要求されたデータを前記クラウドストレージサーバ内の前記データストレージデバイスから前記管理サーバ内の高速データストレージデバイスにコピーし、前記高速データストレージデバイスは、前記クラウドストレージサーバ内の前記データストレージデバイスより速いデータ速度及び低いレイテンシで動作し、
前記クラウドストレージサーバに前記データアクセス要求に応答させる代わりに、前記管理サーバ内の前記高速データストレージデバイスを使用して前記データアクセス要求に応答する、クラウドゲームシステムを操作するための方法。 - 前記データアクセス要求は、データの特定の分類をマウントする要求である、請求項13に記載の方法。
- 前記データの特定の分類は、データオブジェクト、データファイル、またはデータブロックである、請求項14に記載の方法。
- 前記データの特定の分類は、前記ビデオゲームの前記ユーザのプレイのためのセーブデータを含む前記ビデオゲームのためのセーブデータディスクイメージである、請求項14に記載の方法。
- さらに、前記管理サーバで後続のデータアクセス要求を受信し、前記後続のデータアクセス要求は、前記クラウドゲームサーバ上で実行している前記ビデオゲームによって発行され、後続のデータアクセス要求は、前記データの特定の分類に向けられ、
前記クラウドストレージサーバに前記後続のデータアクセス要求に応答させる代わりに、前記管理サーバ内の前記高速データストレージデバイスを使用して前記後続のデータアクセス要求に応答する、請求項14に記載の方法。 - 後続のデータアクセス要求は、読み取りアプリケーションプログラミングインターフェース呼び出しまたは書き込みアプリケーションプログラミングインターフェース呼び出しまたはアンマウントアプリケーションプログラミングインターフェース呼び出しまたはコミットアプリケーションプログラミングインターフェース呼び出しのいずれかである、請求項17に記載の方法。
- さらに、前記管理サーバを操作して、高速データストレージデバイス内の前記データの特定の分類にデータを書き込むことによって、前記書き込みアプリケーションプログラミングインターフェース呼び出しに応答する、請求項18に記載の方法。
- さらに、前記管理サーバを操作して、高速データストレージデバイス内の前記データの特定の分類及び前記クラウドストレージサーバ内の前記データストレージデバイス内の前記データの特定の分類の両方にデータを書き込むことによって、前記書き込みアプリケーションプログラミングインターフェース呼び出しに応答する、請求項18に記載の方法。
- 前記管理サーバを操作して、高速データストレージデバイス内の前記データの特定の分類からデータを読み取ることによって、前記読み取りアプリケーションプログラミングインターフェース呼び出しに応答することをさらに含む、請求項18に記載の方法。
- さらに、前記管理サーバを操作して、高速データストレージデバイス内の前記データの特定の分類内の現在のすべてのデータが、前記クラウドストレージサーバ内の前記データストレージデバイス内の前記データの特定の分類にも現在存在することを保証することによって、前記アンマウントアプリケーションプログラミングインターフェース呼び出し及び前記コミットアプリケーションプログラミングインターフェース呼び出しに応答する、請求項18に記載の方法。
- 前記クラウドストレージサーバ内の前記データストレージデバイスはハードディスクドライブであり、前記高速データストレージデバイスは不揮発性メモリエクスプレスソリッドステートドライブである、請求項13に記載の方法。
- さらに、前記管理サーバと前記クラウドストレージサーバとの間の双方向データ通信のために第1のネットワークストレージプロトコルを使用し、
前記管理サーバと前記クラウドゲームサーバとの間の双方向データ通信のために第2のネットワークストレージプロトコルを使用し、前記第2のネットワークストレージプロトコルは、前記第1のネットワークストレージプロトコルとは異なる、請求項13に記載の方法。 - 前記第2のネットワークストレージプロトコルは周辺コンポーネント相互接続エクスプレスである、請求項24に記載の方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063047183P | 2020-07-01 | 2020-07-01 | |
US63/047,183 | 2020-07-01 | ||
US17/107,329 | 2020-11-30 | ||
US17/107,329 US11623140B2 (en) | 2020-07-01 | 2020-11-30 | High-speed save data storage for cloud gaming |
PCT/US2021/038783 WO2022005856A1 (en) | 2020-07-01 | 2021-06-23 | High-speed save data storage for cloud gaming |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023532484A true JP2023532484A (ja) | 2023-07-28 |
Family
ID=79166538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022580453A Pending JP2023532484A (ja) | 2020-07-01 | 2021-06-23 | クラウドゲーム用高速セーブデータストレージ |
Country Status (6)
Country | Link |
---|---|
US (2) | US11623140B2 (ja) |
EP (1) | EP4175727A1 (ja) |
JP (1) | JP2023532484A (ja) |
CN (1) | CN115867366A (ja) |
TW (1) | TWI793654B (ja) |
WO (1) | WO2022005856A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210308576A1 (en) * | 2020-04-07 | 2021-10-07 | CEO Vision, Inc (dba Croquet Studios) | Systems and methods for an object movement engine in a gaming environment |
US11573718B2 (en) * | 2021-02-12 | 2023-02-07 | Western Digital Technologies, Inc. | Disaggregation of control path and data path |
US20210203704A1 (en) * | 2021-03-15 | 2021-07-01 | Intel Corporation | Cloud gaming gpu with integrated nic and shared frame buffer access for lower latency |
US11748291B2 (en) * | 2021-06-08 | 2023-09-05 | Dell Products, Lp | System and method for fabricating and executing a wireless gaming keyboard and mouse adapter system |
US11836356B2 (en) * | 2022-01-14 | 2023-12-05 | Dell Products L.P. | Snapshots with smart network interface controller |
CN114745271B (zh) * | 2022-04-22 | 2023-09-08 | 苏州浪潮智能科技有限公司 | 一种云游戏服务器优化方法、服务器及存储介质 |
CN116233520B (zh) * | 2023-05-06 | 2023-07-25 | 海马云(天津)信息技术有限公司 | 传递和获取视频数据的方法及装置、服务器设备和存储介质 |
CN117744118B (zh) * | 2023-12-21 | 2024-05-28 | 北京星驰致远科技有限公司 | 一种基于fpga的高速加密存储装置和方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120209839A1 (en) * | 2011-02-15 | 2012-08-16 | Microsoft Corporation | Providing applications with personalized and contextually relevant content |
US9313569B2 (en) * | 2013-10-22 | 2016-04-12 | Voyetra Turtle Beach, Inc. | Networked gaming headset |
US11083963B2 (en) * | 2014-07-22 | 2021-08-10 | Sony Interactive Entertainment LLC | Save game load time reduction for cloud gaming |
US10709988B2 (en) * | 2015-03-06 | 2020-07-14 | Sony Interactive Entertainment America Llc | Predictive instant play for an application over the cloud |
US10742767B2 (en) * | 2016-02-02 | 2020-08-11 | Sony Interactive Entertainment LLC | Systems and methods for downloading and updating save data to a data center |
US11080245B2 (en) | 2017-02-10 | 2021-08-03 | DaStratum, Inc. | Multi-tier cloud file system |
US11461470B2 (en) * | 2020-06-26 | 2022-10-04 | Bank Of America Corporation | System and method for providing an application programming interface (API) based on performance and security |
-
2020
- 2020-11-30 US US17/107,329 patent/US11623140B2/en active Active
-
2021
- 2021-06-23 WO PCT/US2021/038783 patent/WO2022005856A1/en unknown
- 2021-06-23 EP EP21742639.4A patent/EP4175727A1/en active Pending
- 2021-06-23 JP JP2022580453A patent/JP2023532484A/ja active Pending
- 2021-06-23 CN CN202180050253.8A patent/CN115867366A/zh active Pending
- 2021-06-28 TW TW110123542A patent/TWI793654B/zh active
-
2023
- 2023-04-11 US US18/298,570 patent/US20230241494A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022005856A1 (en) | 2022-01-06 |
US20220001279A1 (en) | 2022-01-06 |
US11623140B2 (en) | 2023-04-11 |
EP4175727A1 (en) | 2023-05-10 |
TW202203214A (zh) | 2022-01-16 |
TWI793654B (zh) | 2023-02-21 |
US20230241494A1 (en) | 2023-08-03 |
TW202320062A (zh) | 2023-05-16 |
CN115867366A (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI845935B (zh) | 實施用於雲端遊戲資料儲存及擷取之高速資料通信組構之系統及方法 | |
US11623140B2 (en) | High-speed save data storage for cloud gaming | |
CA3027756C (en) | Systems and methods for efficient distribution of stored data objects | |
KR101993915B1 (ko) | 원격으로 액세스되는 데이터의 효율적인 라이브-이송 | |
US11645218B2 (en) | Network architecture providing high speed storage access through a PCI express fabric between a compute node and a storage server within an array of compute nodes | |
US9720714B2 (en) | Accelerator functionality management in a coherent computing system | |
US9032164B2 (en) | Apparatus for performing storage virtualization | |
CN111420397A (zh) | 用于云游戏的游戏状态保存、传输和恢复 | |
US20070038749A1 (en) | Combined local and network storage interface | |
CN115129625A (zh) | 外围设备中的增强的存储协议仿真 | |
US8074003B1 (en) | Host-based storage controller providing block devices in geographically distributed storage | |
Markussen et al. | Smartio: Zero-overhead device sharing through pcie networking | |
TWI855519B (zh) | 雲端遊戲系統及操作雲端遊戲系統之方法 | |
US11726702B2 (en) | Methods and systems for processing read and write requests | |
TW202205106A (zh) | 內容提供商系統及用於內容提供商系統的方法 | |
Noronha | Designing High-Performance And Scalable Clustered Network Attached Storage With Infiniband | |
Tingstrom | Cheetah: An Economical Distributed RAM Drive |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240326 |