Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7760075B2 - ブートコントローラを使用したコンテキストスイッチングのための計算ノードのスレッドレベルブート管理制御 - Google Patents
[go: Go Back, main page]

JP7760075B2 - ブートコントローラを使用したコンテキストスイッチングのための計算ノードのスレッドレベルブート管理制御 - Google Patents

ブートコントローラを使用したコンテキストスイッチングのための計算ノードのスレッドレベルブート管理制御

Info

Publication number
JP7760075B2
JP7760075B2 JP2024554891A JP2024554891A JP7760075B2 JP 7760075 B2 JP7760075 B2 JP 7760075B2 JP 2024554891 A JP2024554891 A JP 2024554891A JP 2024554891 A JP2024554891 A JP 2024554891A JP 7760075 B2 JP7760075 B2 JP 7760075B2
Authority
JP
Japan
Prior art keywords
compute node
compute
bmc
operating system
boot
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.)
Active
Application number
JP2024554891A
Other languages
English (en)
Other versions
JP2025509628A (ja
Inventor
ロダリック コーレンブランデル ルーロフ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Interactive Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Publication of JP2025509628A publication Critical patent/JP2025509628A/ja
Application granted granted Critical
Publication of JP7760075B2 publication Critical patent/JP7760075B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details 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
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing 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
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/0816Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Small-Scale Networks (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Description

本開示は、ラックアセンブリのストリーミングアレイの計算スレッドの計算ノードなど、計算ノードのリモートブート制御、及びデータセンタのラックアセンブリのネットワーク再構成を含む、コンピューティングリソースのリモート起動に関する。
近年、クラウドゲームサーバとネットワークを介して接続されたクライアントとの間でストリーミング形式のオンラインまたはクラウドゲームを可能にするオンラインサービスが継続的に推進されている。オンデマンドでゲームタイトルが利用できること、より複雑なゲームが実行できること、マルチプレイヤーゲームの場合にプレイヤー同士をネットワークで繋ぐことができること、プレイヤー間で資産を共有できること、プレイヤー及び/または観戦者の間で即時体験を共有できること、友人がビデオゲームをプレイする様子を友人が観戦できること、友人の進行中のゲームプレイに友人が参加できることなどの理由から、ストリーミング形式はますます人気が高まってきている。
データセンタは、オンラインまたはクラウドのゲームをサポートするための複数のコンピューティングリソースで構成され得る。例えば、各コンピューティングリソースは、ゲームアプリケーションのゲームプレイのためのゲームアプリケーションを実行するように構成可能であり、その後、それがユーザにストリーミングされ得る。コンピューティングリソースの需要は、需要の期間、需要の地理的領域、求められているゲームの種類などを含む1つまたは複数のパラメータに応じて変動し得る。オンラインゲーム向けのコンピューティングリソースの需要が限られているため、計算リソースがアイドル状態になる期間が発生し得る。
オンラインゲーム専用のデータセンタは、ゲームとは異なる他の様々なコンピューティングサービスを処理するために、コンピューティングリソースへの短期間の変更を加えることが制限される場合がある。すなわち、コンピューティングリソースはゲーム用に構成されるので、それらのコンピューティングリソースは、異なるコンピューティングリソースプラットフォームを必要とするアプリケーションを必要とする他のタイプのサービスを提供するように構成されることはない。コンピューティングリソースが静的に構成されているときは、これらのコンピューティングリソースの構成を変更して、これらの他のサービスをサポートすることは不可能であり得る。これらのコンピューティングリソースの構成を変更することは、任意の構成変更が実施される前にコンピューティングリソースでローカルに構成パラメータを変更する必要がある場合、困難であることが判明する場合もある。
本開示の実施形態は、このような背景の下になされたものである。
本開示の実施形態は、ラックアセンブリのストリーミングアレイの計算スレッドの計算ノードなど、計算ノードのリモートブート制御、及びデータセンタのラックアセンブリのネットワーク再構成を含む、コンピューティングリソースのリモートブートを提供することに関する。
本開示の実施形態は、システムの起動を実行するための方法を開示する。方法は、ボード管理コントローラ(BMC)でオペレーティングシステムを使用して計算ノードをブートするための起動構成命令を受信することを含み、計算ノードは複数の計算ノードを含むスレッド上に配置され、BMCは複数の計算ノードへの通信を提供する複数の通信インターフェースを管理するように構成される。方法は、計算ノードの外部に格納されている基本入出力システム(BIOS)ファームウェアを実行するために、BMCから計算ノードのブートコントローラに通信インターフェースを介してブート命令を送信することを含む。方法は、計算ノードにより実行されるオペレーティングシステムのロードを開始するため、計算ノード上でBIOSファームウェアの実行を行うことを含む。
本開示の別の実施形態は、方法を開示する。方法は、複数のラックアセンブリを含むデータセンタによってサポートされる第1優先のサービスに対する需要が減少することをクラウド管理コントローラで検出することを含み、複数のラックアセンブリのそれぞれは、第1優先のサービスを促進する第1の構成で構成され、クラウド管理コントローラは複数のラックアセンブリの構成を管理し、第1優先のサービスは第1の複数のアプリケーションによって実装される。方法は、クラウド管理コントローラからラックアセンブリのラックコントローラに再構成メッセージを送信して、第1の構成から第2の構成にラックアセンブリを再構成することを含み、第2の構成は、第2優先のサービスを促進し、第2優先のサービスは、第1優先のサービスよりも低い優先度を有し、第2の複数のサービスは、第2の複数のアプリケーションによって実装される。方法は、ラックアセンブリを第2の構成で構成することを含む。複数のラックアセンブリのそれぞれのラックアセンブリは、1つまたは複数のネットワークストレージと1つまたは複数のストリーミングアレイとを含み、それぞれのストリーミングアレイは1つまたは複数の計算スレッドを含み、それぞれの計算スレッドは1つまたは複数の計算ノードを含む。
本開示の他の実施形態は、システム起動を実行するためのコンピュータプログラムを格納する非一時的コンピュータ可読媒体を開示する。非一時的コンピュータ可読媒体は、ボード管理コントローラ(BMC)で、オペレーティングシステムを使用して計算ノードをブートするための起動構成命令を受信するためのプログラム命令を含み、計算ノードは複数の計算ノードを含むスレッド上に配置されており、BMCは複数の計算ノードへの通信を提供する複数の通信インターフェースを管理するように構成されている。非一時的コンピュータ可読媒体は、計算ノードの外部に格納されている基本入出力システム(BIOS)ファームウェアを実行するために、BMCから計算ノードのブートコントローラに通信インターフェースを介してブート命令を送信するプログラム命令のためのプログラム命令を含む。非一時的コンピュータ可読媒体は、計算ノード上でBIOSファームウェアの実行を行い、計算ノードにより実行されるオペレーティングシステムのロードを開始するためのプログラム命令のためのプログラム命令を含む。
本開示の他の態様は、本開示の原理の例として示される添付図面と併せて、下記の発明を実施するための形態から明らかになる。
本開示は、添付図面と併せて、以下の詳細な説明を参照することにより、最も良く理解することができる。
本開示の一実施形態による、1つまたは複数のデータセンタに配置された1つまたは複数の計算ノード間でネットワークを介してゲームを提供するためのゲームクラウドシステムの図である。 本開示の一実施形態による、ゲームクラウドシステムの代表的なデータセンタにおける複数の計算ノードを含む複数のラックアセンブリの図である。 本開示の一実施形態による、ゲームクラウドシステムの代表的なデータセンタにおける複数の計算ノードを含む複数のラックアセンブリの図であり、それぞれのネットワークストレージは計算ノードの対応するアレイによってアクセス可能である。 本開示の一実施形態による、ボード管理コントローラを使用して計算ノードのリモートブート制御のために構成されたラックアセンブリ内に配置された複数の計算ノードを含む計算スレッドの図である。 本開示の一実施形態による、ボード管理コントローラを用いて計算ノードのリモートブートを実行するための方法におけるステップを示すフロー図である。 本開示の一実施形態による、データセンタのラックアセンブリの再構成方法におけるステップを示すフロー図である。 本開示の様々な実施形態の態様を実行するために使用することができる例示的なデバイスのコンポーネントを示す。
以下の詳細な説明には、説明の目的上、多くの特定の詳細が含まれているが、当業者であれば分かるように、以下の詳細に対する多くの変形及び修正も本開示の範囲内である。したがって、以下に説明する本開示の態様は、この説明に続く特許請求の範囲に対する一般性を何ら失うことなく、また特許請求の範囲に限定を課すことなく、述べられている。
一般的に言えば、本開示の実施形態は、ラックアセンブリのストリーミングアレイの計算スレッドの計算ノード(compute node:コンピュートノード)など、計算ノードのリモートブート制御を提供する。特に、外部ハードウェアは、計算ノードのブートプロセスで使用されるため、ストレージは必要とされず、これにより、外部ブートにどのソフトウェアが使用されるかについて柔軟性を持たせることができる。また、本開示の実施形態は、データセンタのラックアセンブリのネットワーク再構成を提供する。特に、データセンタのコンピューティングリソースのダークタイム利用は、ネットワークインターフェースを介してラックアセンブリ内で計算ノード間の通信を提供するための内部ネットワーキングの再構成など、ラックアセンブリのネットワーキングの再構成を通じて達成される。
種々の実施形態の前述した全般的な理解に基づき、次に実施形態の例示的な詳細について、種々の図面を参照して説明する。
明細書の全体を通して、「アプリケーション」または「ゲーム」または「ビデオゲーム」または「ゲームアプリケーション」または「ゲームタイトル」に対する言及は、入力コマンドの実行を通して指示されるいずれかのタイプのインタラクティブアプリケーションを表すことを意味する。例示のみを目的として、インタラクティブアプリケーションには、ゲーム、文書処理、ビデオ処理、ビデオゲーム処理などに対するアプリケーションが含まれる。さらに、上記で紹介された用語は交換可能である。
図1は、本開示の一実施形態による、1つまたは複数のデータセンタに配置された1つまたは複数の計算ノード間でネットワーク150を介してゲームを提供するためのシステム100の図である。本システムは、本開示の実施形態によれば、1つまたは複数のクラウドゲームサーバ間でネットワークを介してゲームを提供するように構成され、より具体的には、ラックアセンブリのストリーミングアレイの計算スレッドの計算ノードなど、計算ノードのリモートブート制御のために構成され、及び、データセンタにおけるコンピューティングリソース(例えば、複数の目的)の、より良好な利用を提供するためのデータセンタのラックアセンブリのネットワーク再構成のために構成される。クラウドゲームには、サーバにおいてビデオゲームを実行して、ゲームレンダリングされたビデオフレームを生成することが含まれ、これは次に、クライアントに送られて表示される。
クラウドゲーム及び/または他のサービスは、様々な実施形態(例えば、クラウドゲーム環境またはスタンドアロンシステム内)で、物理マシン(例えば、中央処理装置(CPU)及びグラフィックス処理装置(GPU))、または仮想マシン、または両方の組み合わせを使用して実行できるということも理解される。例えば、仮想マシン(例えば、インスタンス)は、複数のCPU、メモリモジュール、GPU、ネットワークインターフェース、通信コンポーネントなどのようなハードウェア層の1つまたは複数のコンポーネントを利用するホストハードウェア(例えば、データセンタに配置されている)のハイパーバイザを使用して作成することができる。これらの物理リソースは、CPUのラック、GPUのラック、メモリのラックなどのラックに配置でき、ラックの物理リソースは、インスタンスに使用されるコンポーネントの組み立てとアクセスのためのファブリックを促進するトップオブラック型スイッチを使用してアクセスできる(例えば、インスタンスの仮想化されたコンポーネントを構築するとき)。一般に、ハイパーバイザは、仮想リソースによって構成される複数のインスタンスの複数のゲストオペレーティングシステムを提示することができる。
すなわち、各オペレーティングシステムは、1つまたは複数のハードウェアリソース(例えば、対応するデータセンタに配置されている)によってサポートされる仮想化リソースの対応するセットで構成され得る。例えば、各オペレーティングシステムは、仮想CPU、複数の仮想GPU、仮想メモリ、仮想化された通信コンポーネントなどでサポートされる場合がある。さらに、待ち時間を削減するために、インスタンスの構成を、あるデータセンタから別のデータセンタに転送し得る。ユーザまたはゲームに対して定義された即時使用は、ユーザのゲームセッションを保存するときに使用できる。即時使用は、ゲームセッション用のビデオフレームの高速レンダリングを最適化するために、本明細書で説明する任意の数の構成を含むことができる。一実施形態では、ゲームまたはユーザに対して定義された即時使用は、構成可能な設定としてデータセンタ間で転送することができる。即時使用設定を転送できることにより、ユーザが異なる地理的な位置からゲームをプレイするために接続する場合に、データセンタからデータセンタへのゲームプレイの効率的な移行が可能になる。
システム100は、1つまたは複数のデータセンタ(例えば、データセンタ1からN)を通じて実装されるゲームクラウドシステム190を含む。図示されているように、ゲームクラウドシステム190のインスタンスは、管理機能を提供するデータセンタNに位置付けることができ、ゲームクラウドシステム190の管理機能は、各データセンタでゲームクラウドシステム190の複数のインスタンスを通じて分散させることができる。一部の実施態様では、ゲームクラウドシステム管理機能は、データセンタのいずれかの外部に位置付けられる場合がある。
そのゲームクラウドシステム190は、クライアントデバイス(例えば、1~N)のそれぞれを対応するデータセンタ内の対応するリソースに割り当てるように構成されたアサイナ191を含む。特に、クライアントデバイス110がゲームクラウドシステム190にログインするとき、クライアントデバイス110は、データセンタNでゲームクラウドシステム109のインスタンスと接続されてもよく、データセンタNはクライアントデバイス110に地理的に最も近くてもよい。アサイナ191は、診断テストを実行して、クライアントデバイス110への利用可能な送信及び受信帯域幅を決定することができる。また、診断テストは、対応するデータセンタとクライアントデバイス110との間の待ち時間及び/またはラウンドトリップ時間を決定することを含む。テストに基づいて、アサイナ191は、クライアントデバイス110に対して非常に具体的にリソースを割り当てることができる。例えば、アサイナ191は、特定のデータセンタをクライアントデバイス110に割り当てることができる。さらに、アサイナ191は、特定の計算スレッドの、特定のストリーミングアレイの、特定のラックアセンブリの、特定の計算ノードをクライアントデバイス110に割り当てることができる。
割り当ては、計算ノードで利用可能なアセット(例えば、ゲーム)の知識に基づいて実行され得る。以前は、クライアントデバイスは、ラックアセンブリにさらに割り当てられることなく、データセンタに一般に割り当てられていた。このようにして、アサイナ191は、計算集約型の特定のゲームアプリケーションの実行を要求しているクライアントデバイスを、計算集約型のアプリケーションを実行していない可能性のある計算ノードに割り当てることができる。さらに、クライアントによって要求された計算集約型のゲームアプリケーションの割り当ての負荷管理は、アサイナ191で実行され得る。例えば、短期間に要求されている同じ計算集約型のゲームアプリケーションは、特定の計算ノード、計算スレッド及び/またはラックアセンブリの負荷を軽減するために、1つのラックアセンブリまたは異なるラックアセンブリ内の異なる計算スレッドの異なる計算ノードに分散される場合がある。
一部の実施形態では、割り当ては、機械学習に基づいて実行され得る。特に、リソースの需要は、特定のデータセンタとそれに対応するリソースについて予測される場合がある。例えば、データセンタが間もなく計算集約型のゲームアプリケーションを実行する多くのクライアントを処理することを予測できる場合、アサイナ191はその情報を基にクライアントデバイス110を割り当て、現在そのすべてのリソース能力を利用していない可能性のあるリソースを割り当てることができる。
別のケースでは、アサイナ191は、データセンタNでの負荷の増加を見越して、クライアントデバイス110を、データセンタNのゲームクラウドシステム190から、データセンタ3で利用可能なリソースに切り替えることができる。さらに、未来のクライアントは、リソースの負荷と需要が、ゲームクラウドシステム全体に、複数のデータセンタにわたり、複数のラックアセンブリにわたり、複数の計算スレッドにわたり、及び/または複数の計算ノードにわたり分散され得るように、分散的にリソースに割り当てられることができる。例えば、クライアントデバイス110は、データセンタN(例えば、パス1を介して)及びデータセンタ3(例えば、パス2を介して)の両方のゲームクラウドシステムからリソースを割り当てられ得る。
クライアントデバイス110が、対応するストリーミングアレイの、対応する計算スレッドの、特定の計算ノードに割り当てられると、クライアントデバイス110は、ネットワークを介して対応するデータセンタに接続する。すなわち、クライアントデバイス110は、データセンタ3など、割り当てを実行するデータセンタとは異なるデータセンタと通信し得る。
システム100は、ゲームクラウドシステム190を介してゲームを提供し、本開示の一実施形態によれば、ゲームは、ゲームをプレイしている対応するユーザのクライアントデバイス(例えば、シンクライアント)からリモートで実行されている。システム100は、シングルプレイヤーモードまたはマルチプレイヤーモードのいずれかで、ネットワーク150を介し、クラウドゲームネットワークまたはゲームクラウドシステム190を通して1つまたは複数のゲームをプレイする1人または複数のユーザにゲームのコントロールを提供し得る。
一部の実施形態において、クラウドゲームネットワークまたはゲームクラウドシステム190は、ホストマシンのハイパーバイザで実行する複数の仮想マシン(VM)を含むことができ、1つまたは複数の仮想マシンは、ホストのハイパーバイザに利用可能であるハードウェアリソースを利用するゲームプロセッサモジュールを実行するように構成される。ネットワーク150は、1つまたは複数の通信技術を含み得る。一部の実施形態では、ネットワーク150は、高度な無線通信システムを有する第5世代(5G)ネットワーク技術を含み得る。
一部の実施形態では、通信は、無線技術を使用して促進され得る。このような技術には、例えば、5G無線通信技術が含まれ得る。5Gは、第5世代のセルラーネットワーク技術である。5Gネットワークは、デジタルセルラーネットワークであり、デジタルセルラーネットワークでは、プロバイダが対象とするサービスエリアは、セルと呼ばれる小さな地理的領域に分割される。音及び画像を表すアナログ信号は、電話機内でデジタル化され、アナログ-デジタルコンバータによって変換され、ビットストリームとして伝送される。セル内のすべての5Gワイヤレスデバイスは、他のセルで再利用される周波数プールからトランシーバによって割り当てられた周波数チャネルを介して、セル内のローカルアンテナアレイ及び低電力自動トランシーバ(送信機及び受信機)と電磁波で通信する。ローカルアンテナは、高帯域幅光ファイバまたは無線バックホール接続によって、電話網及びインターネットに接続される。他のセルネットワークと同様に、あるセルから別のセルに移動するモバイルデバイスは、新しいセルに自動的に転送される。5Gネットワークは単なる一例のタイプの通信ネットワークであり、本開示の実施形態は、5Gに続く後世代の有線または無線技術と同様に、前世代の無線または有線通信を利用することができることを理解されたい。
図示のように、ゲームクラウドシステム190を含むシステム100は、複数のゲームアプリケーションへのアクセスを提供することができる。特に、各クライアントデバイスは、クラウドゲームネットワークからの異なるゲームアプリケーションへのアクセスを要求している可能性がある。例えば、ゲームクラウドシステム190は、対応するゲームアプリケーションを実行するために1つまたは複数のホスト上で実行される1つまたは複数の仮想マシンとして構成され得る1つまたは複数のゲームサーバを提供し得る。例えば、ゲームサーバは、ユーザのゲームアプリケーションのインスタンスをインスタンス化するゲームプロセッサをサポートする仮想マシンを管理し得る。よって、複数の仮想マシンに関連付けられた1つまたは複数のゲームサーバの複数のゲームプロセッサは、複数のユーザのゲームプレイに関連付けられた1つまたは複数のゲームアプリケーションの複数のインスタンスを実行するように構成される。
このように、バックエンドサーバサポートは、複数のゲームアプリケーションのゲームプレイの媒体(例えば、ビデオ、オーディオなど)のストリーミングを、複数の対応するユーザに提供する。すなわち、ゲームクラウドシステム190のゲームサーバは、ネットワーク150を介して、データ(例えば、対応するゲームプレイのレンダリングされた画像及び/またはフレーム)を対応するクライアントデバイスにストリーミング返信するように構成される。そのようにして、クライアントデバイスによって受信されて転送されたコントローラの入力に応答して、計算の複雑なゲームアプリケーションが、バックエンドサーバで実行し続けることができる。各サーバは画像及び/またはフレームをレンダリングすることができ、これらは次に、エンコード(例えば、圧縮)され、対応するクライアントデバイスにストリーミングされて表示される。
実施形態では、各仮想マシンは、オペレーティングシステムをサポートできるリソース環境を定義し、その上でゲームアプリケーションを実行することができる。一実施形態では、仮想マシンは、ゲームコンソールのハードウェアリソース環境をエミュレートするように構成することができ、ゲームコンソールに関連するオペレーティングシステムは、仮想マシン上で実行されて、そのゲームコンソール用に開発されたゲームタイトルの実行をサポートする。別の実施形態では、オペレーティングシステムは、ゲームコンソールのネイティブオペレーティングシステム環境をエミュレートするように構成することができるが、基礎となる仮想マシンは、ゲームコンソールのハードウェアをエミュレートするように構成されても、構成されなくてもよい。別の実施形態では、エミュレータアプリケーションは、仮想マシンのオペレーティングシステム上で実行され、エミュレータは、ゲームコンソールのネイティブオペレーティングシステム環境をエミュレートするように構成され、そのゲームコンソール用に設計されたゲームアプリケーション及び/またはビデオゲームをサポートする。様々な現行及び従来のゲームコンソールをクラウドベースのゲームシステムでエミュレートすることができることを認識されたい。このようにして、ユーザは、クラウドゲームシステムを介して、様々なゲームコンソールからゲームタイトルにアクセスすることができる。
一実施形態では、クラウドゲームネットワークまたはゲームクラウドシステム190は、分散型ゲームサーバシステム及び/またはアーキテクチャである。特に、ゲームロジックを実行する分散型ゲームエンジンが、対応するゲームアプリケーションの対応するインスタンスとして構成されている。一般に、分散型ゲームエンジンは、ゲームエンジンの各機能を取り込み、それらの機能を分散させて多数の処理エンティティによって実行する。個々の機能は、さらに1つまたは複数の処理エンティティにわたって分散させることができる。処理エンティティは、物理ハードウェア、及び/または仮想コンポーネントまたは仮想マシン、及び/または仮想コンテナなど、様々な構成で構成され、コンテナは、仮想化されたオペレーティングシステム上で動作するゲームアプリケーションのインスタンスを仮想化するものであるため、仮想マシンとは異なる。
処理エンティティは、クラウドゲームネットワークまたはゲームクラウドシステム190の1つまたは複数のサーバ(計算ノード)上のサーバ及びその基礎となるハードウェアを利用し、及び/またはそれらに依拠してもよく、サーバは1つまたは複数のラック上に配置され得る。種々の処理エンティティに対するそれらの機能の実行の協調、割り当て、及び管理は、分散同期層によって行われる。そのようにして、それらの機能の実行が分散同期層によって制御されて、プレイヤーによるコントローラ入力に応答して、ゲームアプリケーション用の媒体(例えば、ビデオフレーム、オーディオなど)を生成することが可能になる。分散同期層は、重要なゲームエンジンコンポーネント/機能が、より効率的な処理のために分散されて再構築されるように、分散処理エンティティ全体で(例えば、負荷バランシングを介して)それらの機能を効率的に実行することが可能である。
図2Aは、本開示の一実施形態による、ゲームクラウドシステムの代表的なデータセンタ200Aにおける複数の計算ノードを含む複数のラックアセンブリ210の図である。例えば、北米、ヨーロッパ、日本など、世界中に複数のデータセンタが分散し得る。
データセンタ200は、複数のラックアセンブリ220(例えば、ラックアセンブリ220Aから220N)を含む。各ラックアセンブリは、対応するネットワークストレージ及び複数の計算スレッドを含む。例えば、代表的なラックアセンブリ220Nは、ネットワークストレージ211及び複数の計算スレッド230(例えば、スレッド230A~230N)、ならびにラックアセンブリ220Nのコンポーネントの内部及び外部ネットワーク構成用に構成されたラックコントローラ250を含む。他のラックアセンブリは、変更を加えてまたは加えずに同様に構成することができる。特に、各計算スレッドは、ハードウェアリソース(例えば、プロセッサ、CPU、GPUなど)を提供する1つまたは複数の計算ノードを含む。例えば、ラックアセンブリ220Nの複数の計算スレッド230における計算スレッド230Nは、4つの計算ノードを含むように示されているが、ラックアセンブリは1つまたは複数の計算ノードを含み得ることが理解される。各ラックアセンブリは、対応するデータセンタの管理用に構成された管理サーバとの通信を提供するように構成されたクラスタスイッチに結合される。例えば、ラックアセンブリ220Nはクラスタスイッチ240Nに結合される。クラスタスイッチは、外部通信ネットワーク(例えば、インターネットなど)への通信も提供する。
特に、クラスタファブリック(例えば、クラスタスイッチなど)は、1つまたは複数のクラスタのラックアセンブリ、分散ストレージ270、及び通信ネットワークの間の通信を提供する。さらに、クラスタファブリック/スイッチはまた、管理、ロギング、監視、イベント生成、ブート管理情報追跡などのデータセンタサポートサービスも提供する。クラスタファブリック/スイッチは、ルータシステム及び通信ネットワーク(例えば、インターネット)を介して外部通信ネットワークへの通信を提供し得る。また、クラスタファブリック/スイッチは、ストレージ270に通信を提供する。ゲームクラウドシステムの代表的なデータセンタにおけるラックアセンブリのクラスタは、設計上の選択により1つまたは複数のラックアセンブリを含み得る。一実施形態では、クラスタは、50個のラックアセンブリを含む。他の実施形態では、クラスタは、50を超えるかまたは50未満のラックアセンブリを含み得る。
1つのネットワーク構成において、各ラックアセンブリは、ラックアセンブリ内など、対応するネットワークストレージへの高速アクセスを提供する。一実施形態では、この高速アクセスは、計算ノードと対応するネットワークストレージ間の直接アクセスを提供するPCIeファブリックを介して提供される。他の実施形態では、高速アクセスは、イーサネット、インフィニバンド、集約型イーサネット(RoCE)を介したリモートダイレクトメモリアクセス(RDMA)などを含む他のネットワークファブリックトポロジ及び/またはネットワーキングプロトコルを介して提供される。例えば、ラックアセンブリ220Nにおいて、高速アクセスは、対応するネットワークストレージ(例えば、ストレージ211)に対応する計算スレッドの特定の計算ノード間にデータパス201を提供するように構成される。特に、ネットワークファブリック(例えば、PCIeファブリック)は、不揮発性メモリエクスプレス(NVMe)レイテンシでの計算ノード(ラックアセンブリなど)当たり毎秒4ギガバイト(GB/s)を超えるネットワークストレージ帯域幅(例えば、アクセスなど)を提供可能である。また、制御パス202は、ネットワークストレージ210と各計算ノードとの間で制御及び/または管理情報を通信するために構成される。
別のネットワーク構成(図示せず)では、各ラックアセンブリは、計算ノード間の高速アクセスを提供する。例えば、ラックアセンブリ内のPCIeファブリックの再構成は、スーパーコンピュータを形成するとき、または人工知能(AI)コンピュータを形成するときなどに、ラックアセンブリ内の内部にある計算ノード間の高速通信を可能にするために実行される。
図示されるように、データセンタ200のクラウド管理コントローラ210及び/または対応するラックコントローラ(例えば、ラックコントローラ220B)は、アサイナ191(図1に示される)と通信して、リソースをクライアントデバイス110に割り当てる。特に、クラウド管理コントローラ210及び/またはデータセンタ200の対応するラックコントローラ(例えば、ラックコントローラ220B)は、ゲームクラウドシステム190’のインスタンスと連携し、ゲームクラウドシステム190の最初のインスタンス(例えば、図1の)と共に、リソースをクライアントデバイス110に割り当てることができる。すなわち、アサイナ191は、クラウド管理コントローラ210及び/または対応するラックコントローラと連携して、ユーザをリソースに割り当てることができる。一実施形態では、対応するラックコントローラは、内部及び外部ネットワークの構成、対応するラックコントローラ内に配置された計算スレッド及び/または計算ノードの電源投入などを含めて、ラックアセンブリを動作可能にすることに主に関与する。
対応するラックコントローラは、割り当てに利用可能な作業スレッドの数、割り当てに利用可能な計算ノードの数などのステータス情報をクラウド管理コントローラ210に伝達する。この情報は、アサイナがその情報を使用してユーザをリソース(例えば、計算ノードなど)に割り当てることができるように、クラウド管理コントローラ210及び/または対応するラックコントローラによってアサイナ191に伝達され得る。一部の実施形態では、対応するラックコントローラ及びネットワークストレージのペアは、同じサーバ(例えば、ネットワークストレージ)上で構成されるが、他の実施形態では、対応するラックコントローラ及びネットワークストレージは、別個のサーバ上で構成される。実施形態では、割り当ては、必要とされるリソース及び帯域幅、及びそれがデータセンタに存在することを把握するなど、アセットの認識に基づいて実行される。したがって、本開示の実施形態は、説明のために、対応するラックアセンブリ220Bの対応する計算スレッド231の特定の計算ノード232にクライアントデバイス110を割り当てるように構成される。
一実施形態では、クラウド管理コントローラ210は、対応するラックコントローラと協調して、対応するラックアセンブリ内の対応するストリーキングアレイの対応する計算スレッドの計算ノードなどのコンピューティングリソースのリモートブート制御を管理するように構成される。別の実施形態では、クラウド管理コントローラ210は、ラックアセンブリのストリーミングアレイ内に配置されたスレッドサーバの計算ノードなど、コンピューティングリソースのリモートブート制御を直接管理するように構成される。すなわち、クラウド管理コントローラ210及び/または対応するラックコントローラは、コンピューティングリソースのリモートブート制御を管理するように構成される。
例えば、クラウド管理コントローラ210及び/または対応するラックコントローラは、リモートストレージ260のストレージアドレス265A~Nに位置し得る計算ノードの起動及び/またはブート操作に使用されるブートファイル(例えば、BIOSファームウェア)を管理する。さらに、クラウド管理コントローラ210及び/または対応するラックコントローラは、データセンタ内の計算ノードのブートイメージ(例えば、オペレーティングシステムイメージ)を含む、データセンタ内の各コンピューティングリソースのブート管理情報270を制御してよい。そのようにして、データセンタの計算リソース(例えば、ラックアセンブリ、計算スレッド、計算ノードなど)は、これらのリソースの利用目的(例えば、ピークユーザ需要中のゲーム用途、オフ時間中の二次使用(例えば、システムメンテナンスの実行、AIモデリングの実行、スーパーコンピュータによるアプリケーションの実行など)に応じて動的に再構成されてよい。
ストリーミングラックアセンブリは、計算ノードを中心に構成され、ゲームアプリケーション、ビデオゲームを実行し、及び/または1つまたは複数のクライアントへゲームセッションのオーディオ/ビデオをストリーミングする。さらに、各ラックアセンブリ内で、ネットワークストレージを提供するストレージサーバにゲームコンテンツを格納することができる。ネットワークストレージには、多くの計算ノードにサービスを提供するために、大量のストレージと高速ネットワークが備えられている。特に、ストレージプロトコル(例えば、ネットワークファイルシステムなど)は、ネットワークストレージにアクセスするために使用されるネットワークファブリックトポロジ経由で実装される。データは、実装されている基礎となるストレージプロトコルに部分的に基づいて、ファイルストレージ、ブロックストレージ、またはオブジェクトストレージの技術を使用してネットワークストレージに格納され得る。例えば、PCIeファブリックストレージプロトコルは、ネットワークストレージからブロックストレージデータにアクセスし得る。
図2Bは、本開示の一実施形態による、ゲームクラウドシステムの代表的なデータセンタ200Bに複数の計算ノードを含む複数のラックアセンブリ221の図であり、各ネットワークストレージは計算ノードの対応するアレイによってアクセス可能である。データセンタ200Bはデータセンタ200Aと類似しており、同様の番号が付けられたコンポーネントは同様の機能を有する。しかし、データセンタ200Bは、データセンタ200Aのラックアセンブリとは異なる構成のラックアセンブリを有し、以下に説明するように、単一のストリーミングアレイの計算ノードによってネットワークストレージがアクセスされる。
データセンタ200Bは、複数のラックアセンブリ221(例えば、ラックアセンブリ221Aから221N)を含む。各ラックアセンブリは、1つまたは複数のストリーミングアレイを含み、各ストリーミングアレイは、対応するネットワークストレージ及び複数の計算スレッドを含む。例えば、代表的なラックアセンブリ221Nは、ストリーミングアレイ225Aから225Nを含む。一実施形態では、ラックアセンブリ221Nは2つのストリーミングアレイを含み、各ストリーミングアレイはネットワークストレージ、対応するラックコントローラ、及び複数の計算スレッドを含む。
例えば、ストリーミングアレイ225Nは、ネットワークストレージ211Nにアクセスする複数の計算スレッド235を含む。特に、各ストリーミングアレイは、対応するラックコントローラ及びネットワークストレージを含む。例えば、代表的なラックアセンブリ221Nでは、ストリーミングアレイ225Aは、ラックコントローラ250A及びネットワークストレージ211Aを含み、ストリーミングアレイ225Nは、ラックコントローラ250N及びネットワークストレージ211Nを含む。
一部の実施形態では、対応するストリーミングアレイの対応するラックコントローラ及びネットワークストレージのペアは、同じサーバ(例えば、ネットワークストレージ)上で構成されるが、他の実施形態では、対応するラックコントローラ及びネットワークストレージは、別個のサーバ上で構成される。さらに他の実施形態では、ラックアセンブリは、それぞれが対応するネットワークストレージを備えた複数のストリーミングアレイを含み、ラックアセンブリの単一のラックコントローラが、ストリーミングアレイ全体にわたってコンピューティングリソースのブート制御(例えば、リモートブート制御、制御ブート管理情報など)を管理する。さらに他の実施形態では、ラックアセンブリは、単一のネットワークストレージにアクセスする複数のストリーミングアレイを含み、ラックアセンブリの単一のラックコントローラが、ストリーミングアレイ全体にわたってコンピューティングリソースのブート制御(例えば、リモートブート制御、制御ブート管理情報など)を管理する。示されるように、各計算スレッドは、ハードウェアリソース(例えば、プロセッサ、CPU、GPUなど)を提供する1つまたは複数の計算ノードを含む。例えば、ストリーミングアレイ225Nの計算スレッド235Xは4つの計算ノードを含むように示されているが、ラックアセンブリは1つまたは複数の計算ノードを含むことができることが理解される。
各ラックアセンブリは、前述のように、対応するラックコントローラを介して、対応するデータセンタの管理用に構成されたクラウド管理コントローラ210との通信を提供するように構成されたクラスタスイッチに結合される。対応するラックコントローラは対応するラックアセンブリのリソースの内部管理を提供し、これは対応するラックアセンブリにおけるリソースの内部の詳細を処理することを含み、計算ノード、計算スレッド、ストリーミングアレイなどの管理を実行することによって、それらのリソースが正常に起動し、稼働状態を維持することを確実にすることを含む。例えば、ラックアセンブリ221Nはクラスタスイッチ240Nに結合されている。クラスタスイッチはまた、他のラックアセンブリへの通信(例えば、対応するクラスタスイッチを介して)、及び外部通信ネットワーク(例えば、インターネットなど)への通信を提供する。
1つのネットワーク構成において、対応するラックアセンブリの各ストリーミングアレイは、前述のように、対応するネットワークストレージへの高速アクセスを提供する。一実施形態では、この高速アクセスは、計算ノードと対応するネットワークストレージ間の直接アクセスを提供するPCIeファブリックを介して提供される。他の実施形態では、高速アクセスは、イーサネット、インフィニバンド、RoCEを介したリモートRDMAなどを含む他のネットワークファブリックトポロジ及び/またはネットワーキングプロトコルを介して提供される。計算ノードは、ゲームアプリケーションを実行可能で、ゲームセッションのオーディオ/ビデオを1つまたは複数のクライアントにストリーミングすることが可能で、対応するネットワークストレージ(例えば、ストレージサーバ)が、ゲームアプリケーション、ゲームデータ、及びユーザデータを保持する。例えば、ラックアセンブリ221Nのストリーミングアレイ225Aにおいて、高速アクセスは、対応する計算スレッドの特定の計算ノードと対応するネットワークストレージ(例えば、ストレージ211A)との間のデータ及び制御パス201Aを提供するように構成される。また、パス201Nは、ネットワークストレージ211Nとストリーミングアレイ225Nの各計算ノードとの間の制御及び/または管理情報を通信するように構成されている。
別のネットワーク構成(図示せず)では、各ラックアセンブリは、計算ノード間の高速アクセスを提供する。例えば、ラックアセンブリ内のPCIeファブリックの再構成は、スーパーコンピュータを形成するとき、または人工知能(AI)コンピュータを形成するときなどに、ラックアセンブリ内の内部にある計算ノード間の高速通信を可能にするために実行される。
前述のように、データセンタ200Bのクラウド管理コントローラ210は、対応するラックアセンブリのラックコントローラと連携し、アサイナ191と通信して、ゲームクラウドシステム190’及び/または190をサポートするためにクライアントデバイス110にリソースを割り当てる。実施形態では、割り当ては、必要とされるリソース及び帯域幅、及びそれがデータセンタに存在することを把握するなど、アセットの認識に基づいて実行される。したがって、本開示の実施形態は、説明のために、ラックアセンブリ221Bの対応するストリーミングアレイの対応する計算スレッド231Bの特定の計算ノード232Bに、クライアントデバイス110を割り当てるように構成される。
図3は、本開示の一実施形態による、ボード管理コントローラを使用して(例えば、対応するラックコントローラからの管理制御を介して)計算ノードのリモートブート制御のために、及び/または、計算ノードレベルでの対応するラックアセンブリのネットワーク再構成のために構成されたラックアセンブリ内に配置された複数の計算ノードを含む計算スレッド300の図である。
各計算スレッド300には、対応するラックアセンブリ内に配置された1つまたは複数の計算ノード(例えば、ノード1~4)が含まれる。図3は、4つの計算ノードを含む計算スレッドを示すが、1つまたは複数の計算ノードを含む計算スレッドに任意の数の計算ノードを提供できることが理解される。計算スレッド300は、(例えば、計算ノードを介して)計算リソースを提供するハードウェアプラットフォーム(例えば、回路基板)を提供することができる。例えば、計算スレッド300は、複数の計算ノード(例えば、ノード1~4)と、計算ノードの動作をサポートする補助ハードウェアを示している。計算スレッド300は、図2A~2Bで前述された任意のストリーミングアレイ、及び/またはラックアセンブリ、または他の任意のラックアセンブリ、ストリーミングアレイ、及び/またはデータセンタ構成内に実装されてもよい。
スレッドスイッチ/管理パネル315Aは、PCIeスイッチボード320Aによって提供されるスイッチング機能と、ボード管理コントローラ(BMC)350を通じて部分的に提供されるスレッド管理機能を統合する。例えば、PCIeスイッチボード320Aは、NTポートなどを介して、計算ノードとの通信を提供する。また、BMC350は、PCIeスイッチボード320Aに直接接続され得る(例えば、1xチャネルを介してなど)。示されるように、パネル315Aは、一実施形態では複数の機能を統合するが、他の実施形態では、それらの機能は、独立したコントローラで別々に実装されてもよい。
あるネットワーク構成では、計算スレッド300は、本開示の一実施形態によれば、PCIe(例えば、Gen4-第4世代)通信を使用して計算ノードにネットワークストレージへの高速アクセスを提供する。他のネットワーク構成では、計算スレッド300は、ラックアセンブリ内の計算スレッドの計算ノード間、及び異なるラックアセンブリ間の計算ノードとの高速通信を提供するように構成される。一実施態様では、計算ノードには複数のI/Oインターフェースが含まれる。例えば、計算ノードには、M.2ポートと、チャネル及び/または接続335を介してPCIe Gen4(双方向)用の複数のレーンが含まれ得る。特に、計算スレッド300は、PCIeケーブル305(例えば、クワッドフォームファクタ、倍密度(QSFP-DD)など)を介してなど、8つのPCIeレーンをアレイレベルのPCIeファブリックに提供するPCIeスイッチボード320Aを含む。PCIe(例えば、Gen4)インターフェース(例えば、4レーン)を使用して、追加のデバイスでシステムを拡張できる。特に、PCIeインターフェースは、高速ストレージ用のPCIエクスプレススイッチ320Aを含むPCIeファブリックに接続するために使用される。
さらに、各計算ノードは、イーサネットパッチパネル310Aを介してイーサネット接続311(例えば、ギガビットイーサネット)のために構成され、イーサネットパッチパネル310Aは、計算ノード(例えば、ノード1~4)とラックレベルネットワークスイッチ(図示せず)との間でイーサネットケーブルを接続するように構成される。
また、ボード管理コントローラ(BMC)350は、部分的に、1つまたは複数の通信インターフェース(例えば、PCIe、USB、UART、GPIO、I2C、I3Cなど)を管理するように構成され、各通信インターフェースは、対応する通信チャネル(例えば、330)を介して計算スレッド300上の計算ノードとの通信に使用され得る。すなわち、BMC350は、計算スレッド300上の複数の計算ノード(例えば、計算ノード1~4)に通信を提供する複数の通信インターフェースを管理するように構成される。例えば、対応する計算ノードには、シリアルデータの送信及び/または受信用に構成された1つまたは複数の汎用非同期式送受信機(UART)接続が含まれる。特に、1つまたは複数のUARTポートが存在する場合があるが、これは管理目的で使用される(例えば、計算ノードをBMC350に接続するなど)。また、ポートは、「電源オン」、「電源オフ」、及び診断などのリモート制御動作に使用できる。さらに、別のUARTポートは、シリアルコンソール機能を提供し得る。
計算スレッド300内のリソースのスレッド管理は、対応するラックアセンブリの対応するラックコントローラによって利用される管理インターフェースを実装する1つまたは複数の通信チャネルを介して促進され得る。管理インターフェースは、対応するラックコントローラからなど、計算スレッド300内の様々な異なるデバイスへのデータパケットの送信を可能にする。管理インターフェースは、ラックコントローラによって提供されるようなラック管理を(例えば、ソフトウェアの実行を通じて)実装してもよく、ラック管理ソフトウェアは、ラックコントローラ上で実行されてよい、またはネットワークストレージを介して実装されてよい。ラック管理ソフトウェアは、管理インターフェースを介しラックの動作を管理するように実行され、これは計算スレッド300(例えば、BMC350、PCIeスイッチ320A、ファン390、電源インターポーザボード340A、計算ノード1~4、計算ノード上のブートコントローラなど)のシステム及びリソースの電源のオン/オフ、ファームウェア更新の実行、スレッドステータス(例えば、温度、電圧、ファン速度など)の取得、個々の計算ノード及び/またはBMC350のUARTインターフェースへのアクセス提供(各計算ノード及び/またはBMCは、I2C、I3Cなどを含むUARTまたは他のインターフェース/ポートを有してもよい)を含む。
特に、管理制御は、主要な実施態様として、対応するラックコントローラから管理インターフェースを介してイーサネット接続335を介して、及び/またはPCIeケーブル305を介して提供され得る。例えば、管理インターフェース327は、PCIeケーブル305内の独立したワイヤ(例えば、送信及び受信のための2本の独立したワイヤ)として実装され、I2C、I3C、UART、または何らかの他のインターフェースを介して使用されるか、またはさらに伝送され得る。特に、イーサネット接続に加えて、管理インターフェースは、計算スレッド300内のデバイスに制御パケットを送信するために、I2C、I3、UART、または他の通信インターフェースのいずれかを使用して実現される低速インターフェース(例えば、BMC350によって実装される)を介して提供されてもよい。そのようにして、管理インターフェースに対する管理制御は、イーサネット経由(すなわち、第1オプション)で提供されてもよく、及び/またはPCIe経由(すなわち、第2オプション)で管理インターフェース327及び/またはI2C、I3、UART、または他の通信インターフェースを介して提供されてもよい。
一実施形態では、管理インターフェースは、管理インターフェース327を介してPCIeケーブル305からボード管理制御信号を受信するときなどに、BMC350によってまたはBMC350を介して直接的に提供可能であり、通信インターフェース330(例えば、I2C、I3C、UARTなど)を通して計算ノードに送達され得る。例えば、1つのPCIeレーンは、ボード管理制御のためにBMC350との通信に予約され得る。前述のように、BMC350は、計算ノードのリモートブートを提供する目的で通信インターフェースを管理するように構成される。
特に、BMC350は、計算ノードのリモートブート制御を実行する目的で、計算スレッド300上の対応する計算ノードと通信するように構成される。例えば、外部ハードウェアは、BMC350と対応する計算ノードとの間の通信によって処理される計算ノードのブートプロセスで使用されるため、計算ノード上にブート構成ファイルを格納するためにストレージが必要とされない。これにより、計算ノードの外部ブートにどのソフトウェアを使用するかについて、柔軟性を持たせることができる。すなわち、計算ノードは、第1優先のサービス(例えば、一次サービス)に該当するサービスを提供する1つのオペレーティングシステムで構成されてよく、その後に、第2優先のサービス(例えば、二次サービス)に該当するサービスを提供する第2のオペレーティングシステムで再構成されてもよい。
別の実施形態では、管理インターフェースは、管理インターフェースを介した通信を管理する(すなわち、データパケットの送信を管理する)複合プログラマブルロジックデバイス(CPLD)325などの別のヘルパーチップによってまたはそれを介して提供され得る。CPLD325を介した送信は、計算スレッド300全体にボード管理制御信号を送達するための堅牢なバックアップメカニズムを提供する。例えば、バックアップ機構は、イーサネット通信が何らかの理由で失敗した場合、またはPCIeスイッチ320Aに障害が発生した、またはBMC350がクラッシュした(例えば、そのファームウェアが破損した)ときに実装され得る。そのような状況下では、管理インターフェース327は、ボード管理制御信号を送達するためのバックアップメカニズムを実装するように構成される。
特に、管理インターフェース327は、第1のCPLD325を接続し、CPLD325はまた、BMC350に、または直接、I2C、I3、UART、もしくは他の通信インターフェースに(例えば、チャネル330を介して)接続される。すなわち、バックアップ機構は、BMC350をバイパスすることを可能にし、その結果、ラックコントローラからのボード管理制御信号は、CPLD325を通じて転送されチャネル330を介して送達される。バックアップメカニズムは非常に堅牢で信頼性が高いが(すなわち、CPLD325は専用ハードウェアで実装されるため障害の影響を受けない)、関連するパフォーマンスは範囲及び/または速度が制限される場合がある。しかしながら、バックアップ機構は、電源制御、リセット操作、及びいくつかの限定された診断の収集を含む、少なくとも低レベルの操作(すなわち、CPLD325を介してプログラムされた操作)の実施態様を提供する。
BMC350は、ボードまたはスレッド管理機能を提供し得る。さらに、実施形態では、BMC350によって提供されるボード管理は計算ノードの制御、監視、及び管理を含み、これは、接続330を介して各計算ノードのシリアルデータ(例えば、電源のオン/オフ、診断、及びロギング情報)を送達する汎用非同期式送受信(UART)、I2C、I3Cなどの信号を使用して実行される。他の実施形態では、ボード管理は、(例えば、ラックコントローラと直接通信する)イーサネットなどの他のインターフェースを介して提供されてよい。さらに、BMC350は、電磁エネルギーを制御するための電磁適合性(EMC)制御を提供し、UART信号を使用して遅延をデバッグするように構成することができる。BMC350は、制御ステータス発光ダイオード(LED)を介してなど、管理パネル330Aに制御ステータス情報を提供するように構成可能であり、それはLED及びボタンを使用してステータスを表示するようにさらに構成される。BMC350は、温度と電圧を監視するように構成されている。また、BMC350は、冷却用に構成されたファンを管理するように構成されている。BMC350は、ボード管理用のイーサネット接続を管理するようにも構成されている。
計算スレッド300は、1つまたは複数のバスバー接続を介して対応する計算スレッドに電力を供給するように構成された電力インターポーザボード340Aを含む。すなわち、BMC350は、汎用入力/出力(GPIO)、及び/またはI2C、及び/または電力インターポーザ340Aへ(例えば、12ボルト以上のバスバーから各計算ノードへ)の何らかの他の通信インターフェースを使用して、ラック管理バス360を介して計算ノードへの電力制御/送達を可能にするように構成され得る。特に、電力管理機能は、接続を介した電力インターポーザボード340Aを介して各計算ノードへの電力供給を管理及び/または監視するために使用される。例えば、ラック管理バス360は、スレッド管理制御信号を提供するように構成することができる。電力監視(例えば、計算ノードへの電力接続を通じて電流、電圧、及び他の状態を測定するためにI2Cチャネルを介して接続されたセンサ)は、BMC350などに対してラック管理バス360を介して実行及び通信されてよい。
BMC350は、対応するラックコントローラと協調して、個々のコンポーネント(例えば、計算ノードなど)に対して、または計算スレッド全体に対して、特定の条件下で電源をオフにすることを決定してよく、これは例えば、電圧が高すぎることを検出した場合、温度が高すぎることを検出した場合、計算スレッド300上のファン390が動作不能であるこことを検出した場合、及び他の悪条件を検出した場合を含む。特に、BMC350は、対応するラックコントローラに管理情報(例えば、電力条件など)を提供して、スレッド管理命令を提供する。BMC350は、ある特定の極端な条件下ではラックコントローラとは独立して作動することができるが、一般にスレッド管理のためにラックコントローラと協調して動作する。例えば、スレッド管理は、外部で(例えば、ラックコントローラを介して)実行され、ラック管理バス360を介して内部的に通信される。これには、例えば、ラックアセンブリの予定保守中、データセンタ内の火災による対応するデータセンタでの停電時、またはバックアップ電源の実装時など、様々な条件下でスレッドを無効にする場合が含まれる。各計算ノードはまた、対応するバスバー370の接続を介して電力インターポーザ340Aに接続された電力入力コネクタ(例えば、設計された消費電力用の12ボルト)も含む。
図4は、本開示の一実施形態による、コンピューティングリソースのリモートブート及び/またはリモート起動を実行するための方法におけるステップを示すフロー図400である。例えば、フロー図400は、計算スレッドのボード管理コントローラ(BMC)及び計算ノードの対応するブートコントローラ(例えば、図3の計算スレッド300における計算ノード1のブートコントローラ320-1、計算ノード2のブートコントローラ320-2、計算ノード3のブートコントローラ320-3、または計算ノード4のブートコントローラ320-4)を使用して、1つまたは複数の計算ノードを含む計算スレッドの計算ノードのリモートブートを実行するために実装され得る。
特に、一実施形態では、外部ハードウェアは、計算ノードのブートプロセスで使用されるため、OSをブートするするのにストレージは必要とされず、これにより、外部ブートにどのソフトウェアが使用されるかについて柔軟性を持たせることができる。他の実施形態では、OSをブートするために部分的に構成された計算ノード上にストレージがあってよい。フロー図400は、図2A~図2Bのデータセンタなどのデータセンタのラックアセンブリのクラスタ内に位置するラックアセンブリのストリーミングアレイ内に構成される計算スレッドの計算ノードのリモートブートに関連して説明されるが、フロー図400で説明される動作は、ブートファイル(例えば、BIOS、オペレーティングシステム構成ファイルなど)を格納するための外部ハードウェアを使用して任意のコンピューティングリソースのリモートブートする場合に一般的に適用され得ることが理解される。
従来、システムのスタートアップは、ハードウェアを初期化し、コンピュータシステムによってアプリケーションを実行するために使用されるオペレーティングシステムをロードするために、1つまたは複数のプロセスを実行し得る。一般に、コンピュータシステムは通常、システム起動時にコンピュータシステムのハードウェアを初期化するために、コンピュータシステム上にある読み取り専用の不揮発性メモリ(例えば、電気的消去可能プログラム可能読み取り専用メモリ(EEPROM)、フラッシュメモリなど)から基本入出力システム(BIOS)ファームウェアをロードし実行する。
ハードウェアが初期化されると、BIOSファームウェアが使用されて、ハードドライブまたはソリッドステートドライブ(SSD)などのローカルストレージデバイスからオペレーティングシステムがブートされる。これは、BIOSファームウェアによって指示された1つまたは複数のブートローダプログラムを実行する場合などである。オペレーティングシステムをロードするために使用されるBIOSファームウェアは読み取り専用メモリに配置されているため、オペレーティングシステムを変更するには、ローカルシステムでBIOSファームウェアを変更する、及び/またはローカル揮発性メモリ(バッテリ電源で構成される場合がある)に記憶されている可能性のある設定を変更する必要があるが、これはクライアント及び/またはユーザのリアルタイムの要求を満たすのに十分な時間内で達成するのが困難である。
本開示の実施形態は、プラットフォーム(計算ノード)でのブートに使用される内蔵ストレージがなく、BIOSもない計算スレッド(例えば、ゲームコンソール)の計算ノードのリモートブートを提供する。一部の実施形態では、任意選択で、ブートコントローラ用の最小限のストレージ(ブートコントローラの内部、またはブートコントローラの外部に位置する)があり得るが、他の実施形態では、ブートコントローラ用のストレージは存在しない。すなわち、リモートブートは、BIOS実装をスワップすること、及びそれに対応してOS実装をスワップすることを含む。例えば、計算ノードは、クラウドゲームシステムのバックエンドストリーミングサーバを使用してゲームをするように構成されてよく、計算ノードは、複数の計算スレッドを含むストリーミングアレイの計算スレッド上に配置される。ストリーミングアレイは、複数のクラスタリングされたラックアセンブリを含むデータセンタのラックアセンブリに配置され、各ラックアセンブリは、1つまたは複数のネットワークストレージと1つまたは複数のストリーミングアレイとを含む。
外部ハードウェアがブートプロセスで使用されることで、BIOSファームウェア及び/または他のブート構成ファイルを格納するための不揮発性メモリなどのストレージが不要になる(例えば、ハードウェアが少なくなることで各計算ノードのコストが削減される)。計算ノードは、計算ノードの動作中に(例えば、オペレーティングシステム、アプリケーションなどを実行するために)使用されるランダムアクセスメモリ(RAM)などの揮発性メモリで構成されてよい。このようにして、計算ノードのリモートブートは、外部でどのソフトウェア(例えば、複数のBIOSファームウェアの中から選択)をブートするかについて柔軟性を提供し、それによって、計算ノード上でアプリケーションを実行するために使用する所望のオペレーティングシステムの柔軟なロードを提供する。例えば、計算ノードがゲーム用に構成される場合、ゲームに適したオペレーティングシステムがロードされ、計算ノード上でゲームアプリケーションを実行する(例えば、BIOSを使用しない場合がある)。
一方、計算ノードは、異なるオペレーティングシステムを必要とするゲーム以外のサービス用に構成されてよい。その場合、計算ノードは、計算ノードでそれらのゲーム以外のサービスを提供する他のアプリケーションを実行するために、リモートブートプロセスを使用して新しいオペレーティングシステムをロードするように構成されてよい。ゲームと非ゲームのユースケースで必要とされる必須BIOSファームウェアは、大きく異なる。非ゲームのユースケースは、計算ノード及び/またはシステムを、典型的なまたは標準的なOSを実行するパーソナルコンピュータ(PC)により近いものへと変換する。この場合、BIOSは、不揮発性メモリ(例えば、SSDなど)にローカルに格納され得る。一方、ゲームのユースケースはより特殊であり、必ずしも従来のBIOSファームウェアを必要としない。例えば、BIOSファームウェアに関連する一部の機能(例えば、PCにOSを実装するためにBIOSによって通常実行される機能)は、ゲームのユースケースでは不要であり、ゲームコンソールを実装するためのBIOS機能は、専用のBIOSファームウェアを使用せずに、ロード中にゲームOS自体によって実行されてよい。
特に、410において、方法は、計算スレッドのボード管理コントローラ(例えば、図3の計算スレッド300のBMC350)で、計算ノードをオペレーティングシステムでブートするための(クラウド管理コントローラからの)起動構成命令を受信することを含む。命令は、対応するラックコントローラを介してクラウド管理コントローラによってBMCに送達され得る。クラウド管理コントローラは、対応するラックコントローラと協調してデータセンタ内の計算ノードのリモートブートを管理するように、及び各計算ノードのブートイメージを格納するなど、計算ノードのブートに関連する情報を収集するように構成されてよい。より具体的には、対応する計算スレッドのBMCは、複数の計算ノードとの通信を提供する複数の通信インターフェースを管理するように構成される。例えば、通信インターフェースは、集積回路間(I2C)バスインターフェース(例えば、PCI、PCIeなどを使用して通信を提供する)、I3C、またはPCI、またはPCIe、またはUART、またはUSBなどを含み得る。
特に、BMCは、これらの通信インターフェースのうちの1つまたは複数を使用して、計算ノード内のブートコントローラと通信する。一実施態様では、BMCは、システムオンチップ(SoC)上に構成され得、SoCは、中央処理装置(CPU)及び他のコンポーネントを含む。BMCは、SoCの集積回路上に位置する不揮発性メモリ(例えば、フラッシュ、ROMなど)からロードされ得る対応するOS及び/またはファームウェアを実行する。BMCのOSは管理及び/または更新を必要とする。BMCは、管理及び更新機能を提供することができるが、BMCの管理は、図3に関連して前述された管理インターフェースを使用するなど、サイドチャネルを介して提供され得る。したがって、管理インターフェースは、OS及び/またはファームウェアを管理及び更新するために使用可能であり、また、電源オン/オフ、電源リセットなどを実行することを含む、前述のBMC上で他の操作を実行し得る。
また、計算ノード上のブートコントローラは、機能するためにファームウェアを必要とする場合があり、ファームウェアは、ハードウェア設計に応じて様々な方法を介してロードされる場合がある。例えば、一実施形態では、ブートコントローラは、対応する計算ノードのマザーボード上に配置された小型のROMにそのファームウェアが統合されている場合がある。別の実施形態では、ブートコントローラファームウェアは、対応する計算スレッドでBMCを介してリモートでロードされてよく、BMCは、チャネル330(例えば、I2C、UART、シリアルペリフェラルインターフェース(SPI)など)を介して、低レベルインターフェースを通じブートコントローラファームウェアをプッシュする。
このブートコントローラは、ブート命令に従って、計算ノードのメインCPU(例えば、CPUによって使用されるRAMまたはシステムメモリ)上にBIOSファームウェアをロードするように構成されてよい。より具体的には、本開示の実施形態では、BMCは、1つまたは複数のリモートロケーションからBIOS及びオペレーティングシステムをロードする命令をブートコントローラに提供するように構成され、命令は、PCIe、USB、UART、または別のインターフェースを介して提供され、BIOSファームウェアはPCIeファブリックを介してアクセスされる場合がある。ブートプロセスをトリガすることに加えて、BMCは、計算ノードのマザーボード及び/またはブートコントローラに関する情報を返すことを可能にする他の操作を実行してよい。例えば、ボード情報は、ボードタイプ、ボードバージョン、シリアル番号を含み得る。ボード情報は、また、モデル番号、シリアル番号、ハードウェア暗号化キー、及び他の情報を含む、計算ノードのCPU情報を含み得る。このボード情報を使用して、対応する計算ノード上でブートするBIOSまたはオペレーティングシステム間の互換性を検証することができる。別の実施態様では、BIOSまたはオペレーティングシステムが(例えば、暗号化によって)特定の計算ノードシステムにロックされ得る。
特に、420において、方法は、選択された通信インターフェースを介して、BMCから計算ノードのブートコントローラにブート命令を送信し、計算ノードからリモートに(あるいは計算ノードの外部に)格納されているBIOSファームウェアを実行することを含む。すなわち、BIOSファームウェアは、外部ハードウェア(すなわち、計算ノードの外部)に格納される。例えば、BIOSファームウェアは、BMCのメモリ(BMCチップ上のメモリ)に格納される場合もあれば、対応するラックアセンブリのリモートストレージに格納される場合もある、または対応するラックアセンブリの外部にあるストレージ(例えば、図2A~図2Bのストレージアドレス260A~Nなど、データセンタの1つまたは複数のラックアセンブリによってアクセス可能なリモートストレージ)に格納される場合もある。
一実施形態では、計算ノードの外部に位置するBIOSファームウェアにアクセスするためにプル方式が実装される。特に、プル方法は、BMCで、BIOSファームウェアを格納するストレージアドレスにアクセスする要求を計算ノードから受信することを含む。すなわち、BIOSファームウェアのストレージアドレスは、対応するラックコントローラに既知であり、さらに、ストレージアドレスは、ラックコントローラによってBMCに提供される起動構成命令に含まれ、ストレージアドレスは、BMCから計算ノードへ送達されるブート命令内に含まれる。プル方法は、計算ノードがBIOSファームウェアを取得するためにストレージアドレスへのアクセスを促進することをさらに含む。すなわち、BMCは、BIOSファームウェアへのアクセス及び送達を計算ノードへ提供するために、適切なネットワークを介して要求を転送する。対応するラックコントローラが対応する計算ノードのリモートブート制御に必要な内部の詳細を認識している一方で、上位のクラウド管理コントローラは、スレッド及び/またはラックアセンブリをある動作モードから別の動作モードに移動させるなどの高レベルの命令を提供してよい。そのようにして、特定の計算ノード管理は、ラックアセンブリレベルで実行されてよい。
別の実施形態では、計算ノードの外部に位置するBIOSファームウェアにアクセスするためにプッシュ方式が実装される。特に、プッシュ方法は、BMCが計算ノード外部のストレージアドレスにあるBIOSファームウェアにアクセスすることを含む。すなわち、BIOSファームウェアのストレージアドレスは、対応するラックコントローラに既知であり、さらに、ストレージアドレスは、ラックコントローラによってBMCに提供される起動構成命令に含まれる。そのようにして、BIOSファームウェアは、BMCによってストレージアドレスからアクセス可能である。プッシュ方法は、計算ノードによるBIOSファームウェアを実行するためのブート命令に関連して、BMCから計算ノードにBIOSファームウェアを送信することをさらに含む。例えば、BIOSファームウェアは、ブート命令に含まれてよい。そのようにして、計算ノードは、BIOSファームウェアにアクセスするために追加のステップを必要としない。
一実施形態では、通信インターフェースは、BIOSファームウェアの実行を通して初期化及びロードされるオペレーティングシステムに基づいて選択される。例えば、各オペレーティングシステムは、対応する通信インターフェースに関連付けられてよい。各オペレーティングシステムの制御信号は、対応する通信インターフェースを介して計算ノードに送達される。例として、第1のオペレーティングシステムの制御信号は第1の通信インターフェース(I2C)を介して送達され、第2のオペレーティングシステムの制御信号は第2の通信インターフェース(例えば、UART)を介して送達され、第3のオペレーティングシステムの制御信号は、第3の通信インターフェース(例えば、USB)などを介して送達される。
そのようにして、オペレーティングシステムに基づいて、BMCから計算ノードのブートコントローラに送達されるブート命令は、そのオペレーティングシステムの制御信号を通信するためにBMCによって管理される対応する通信インターフェースを介して送達される。したがって、BMCは、BMCによって管理される複数の通信インターフェースから選択された対応する通信インターフェースを介して、計算ノードによってロード可能な複数のオペレーティングシステムのそれぞれのための制御信号を送達するスイッチとして構成されてよい。すなわち、BMCスレッドスイッチボードは、PCI、PCIe、I2C、UART、USBなど、計算ノードへの通信インターフェースを提供する。
430において、方法は、計算ノードにより実行されるオペレーティングシステムのロードを開始するため、計算ノード(CPU)上でBIOSファームウェアの実行を行うことを含む。前述のように、BIOSファームウェア(例えば、第一ステージのブートローダ)の実行は、計算ノードによる使用のためオペレーティングシステムのロードを終了するために、他の関連するファームウェア及び/またはソフトウェアまたはプログラム(例えば、第二ステージのブートローダ(複数可))の実行を含む場合がある。すなわち、ある場合には、BIOSファームウェアは完全であり、オペレーティングシステムのロードを終了するためにいずれの追加のファームウェア及び/またはソフトウェアまたはプログラムも必要としない場合があり、他の場合には、BIOSファームウェアは、他のファームウェア及び/またはソフトウェアまたはプログラムを呼び出す及び/または実行するために使用され得る。
説明のみを目的として、BIOSファームウェアの実行は、システムハードウェアの初期化及びオペレーティングシステムのロードを含み得る。特に、システムハードウェア(例えば、ビデオカード及び他のハードウェアデバイス)を初期化するためにBIOSファームウェアは、電源投入時自己診断テスト(POST)プロセスを実行してもよく、メモリテストを実行してメモリ及びドライブのパラメータを設定してもよく、プラグアンドプレイデバイスを設定し、オペレーティングシステム(例えば、オペレーティングシステム構成ファイル)をロードするために実行される後続のブートローダ(例えば、第二ステージなど)をロードするための任意のブートデバイスを識別してもよい。
さらに、方法は、ストレージアドレスから計算ノードのシステムメモリ(例えば、RAM)にオペレーティングシステムの少なくとも一部をロードすることを含み、ストレージアドレスは1つまたは複数のオペレーティングシステム構成ファイルを含む。一実施態様では、オペレーティングシステム全体をシステムメモリにロードしてよい。ただし、一部のオペレーティングシステムは非常に大きい場合があり、オペレーティングシステムの一部をシステムメモリにロードし、残りの部分を必要に応じて使用及び/またはロードできるようにする方が効率的である。例えば、オペレーティングシステムの第1の部分は、計算ノードのシステムメモリにロードされて実行される。また、オペレーティングシステムの第2の部分は、計算ノードによるオペレーティングシステムの実行中に計算ノードが(例えば、PCIeファブリックを介して)アクセスできるように、対応するネットワークストレージに格納されてもよい。例えば、第二部分のデータ及び/またはファイルは、必要に応じてアクセスされてシステムメモリにロードされてもよく、またはオペレーティングシステムの実行中にリモートでアクセスされてもよい。
別の実施形態では、クラウド管理コントローラは、対応するラックコントローラと協調して、計算ノード上で実行されるオペレーティングシステムの1つまたは複数のイメージを管理するように構成される。すなわち、データセンタのクラウド管理コントローラ及び/または対応するラックコントローラは、各計算ノードのソフトウェアイメージ(例えば、オペレーティングシステムイメージ)を管理するように構成される。そのようにして、クラウド管理コントローラ及び/または対応するラックコントローラは、データセンタ内で利用可能な様々な計算ノード及びラックアセンブリ上で実行されるオペレーティングシステムを管理する。例えば、管理情報は、図2Aまたは図2Bのストレージ260に格納されてもよい。
一実施形態では、計算ノードのオペレーティングシステムの切り替え中、切り替え前に計算ノード上で実行している1つのジョブまたは複数のジョブは、継続した実行のために一時停止(あるいはポーズ)及び/または転送されてよい。例えば、ジョブは、リモートブートを介してロードされる新しいオペレーティングシステムとは異なる第1のオペレーティングシステムを使用してアプリケーションを実行する計算ノードによって実行されてもよい。説明のために、ジョブはゲームアプリケーションに関連している場合があり、ゲームアプリケーションは、後で開始されるように一時停止されるか、またはシームレスな転送及び実行のために別の計算ノードに転送されてよい。
例えば、ジョブの実行中の計算ノードの状態(例えば、構成)がキャプチャされ、格納される。状態は、同じ計算スレッド上、または同じストリーミングアレイ上、または同じラックアセンブリ上、または同じデータセンタ内の異なるラックアセンブリの計算ノード上、または異なるデータセンタの計算ノード上などの、別の計算ノードに転送される。状態は他の計算ノードで初期化され、その後、転送された状態を使用して新しい計算ノード上でアプリケーションが実行され、ジョブが再開される。一実施態様では、一時停止されているジョブは、ゲームアプリケーションのレベルの終了など、所定の一時停止ポイントではない選択された一時停止ポイントまたはサスペンドポイントで一時停止される。
計算ノードのダークタイム利用中に計算ノード上で実行されている代替ジョブ(例えば、リモートブートを通じて有効化されたもの)は、一時停止される及び/または、利用率の低いデータセンタや、同じデータセンタ内の利用率の低い部分に転送されるなど、他のデータセンタに転送されて継続実行され得る。例えば、これらの代替ジョブには、機械学習ワークロード、または何らかの他のタイプのCPU/GPUワークロード、またはビデオエンコードワークロードなどが含まれ得る。
様々な実施態様では、これらの代替ジョブを一時停止及び/または転送するかどうかの決定は、これらの代替ワークロードに対してどのようなビジネスモデルが実装または選択されるかに依存し得る。顧客が購入した一部の費用効果が高いジョブは、一定の量の計算時間を購入することで実施されてよく(すなわち、いずれの転送も含まない)、異なるダークタイム期間に実行されてもよい。他の顧客は、ある期間(例えば、ダークタイム期間、ダークタイム期間を超える期間)の間に完了すべき一定数のジョブに対して支払いを行い、一時停止及び1つのリソースから別のリソースへの転送を必要とする場合がある。別のシナリオでは、より高額なジョブが処理を必要とする場合に、ジョブを転送せずに一時停止するなどの場合も考えられる。そのようにして、本開示の実施形態は、様々なシナリオの下でのジョブの一時停止及び転送を支援する。
ゲームのユースケースとダークタイム利用のケース(すなわち、代替ジョブを実行すること)の大きな違いは、そのスケールである。特に、ゲームのワークロードは通常、単一の計算ノードを占有する単一のユーザを含み、複数の計算ノードは、1対1の関係で複数のユーザをサポートする。ダークタイム利用のユースケースでは、単一ユーザは例えば組織であってもよく、その場合、場合によっては、データセンタ全体ではなくても、多くのサーバラックまたはラックアセンブリの使用が必要となる。セキュリティ上の理由から、ダークタイム利用のユースケースにおける組織ユーザ向けのリソースは、ラックアセンブリ上でラックアセンブリ(例えば、ラックコントローラ及びネットワークストレージ)ごとに割り当てられ、その組織のためのダークタイム利用に割り当てられたリソースが他の顧客から分離されるようにする。これには、それらのリソースの再構成が必要な、異なるファイアウォールルールなどを有する異なるネットワークにそれらのリソースを配置することも含まれる場合がある。これにはまた、例えばデータにアクセスするために、顧客や要求元の組織、または別の組織の異なるコンピュータネットワークへのアクセスなど追加のネットワークアクセスをリソースに提供することも含まれる場合がある。
純粋に例示のみを目的として、一時停止されたジョブは、ゲーム、またはビデオゲームまたはゲームアプリケーションに関連付けられてよい。特に、進行中のゲームは、ゲーム内の任意の時点で一時停止され、ゲームは、未来のある時点で(例えば、転送直後に、または後で)ゲームの同じ時点で再開される。ゲームのゲーム状態と、ゲームの実行中の計算ノードの構成パラメータとがキャプチャされ、保存される。すなわち、一時停止したゲーム状態は、ゲームを再開したときにゲームの状態を再構築するのに十分なデータと共にセーブされる。そのようにゲームが一時停止している間、ゲーム状態が収集され、ストレージに保存され、これにより、クラウドゲームシステムは、ハードウェアのアクティブメモリまたはレジスタに状態を記憶する必要がない。
これにより、システムを他のゲームプレイのために解放すること、または計算ノードに他のサービス(例えば、計算ノードのダークタイム利用)を提供することが可能になり、いつでもゲームプレイを再開でき、任意のリモート計算ノード(例えば、クライアント)を形成することが可能になる。ゲームを再開すると、ゲーム状態は、ゲームを再開するタスクを課された新しい計算ノード(例えば、同じまたは異なる計算ノード)にロードされる。ゲームの状態のロードには、複数の保存されたファイルやデータ構造からゲーム状態を生成することが含まれ、再構築されたゲーム状態は、計算ノードをゲームが一時停止された時と同じ、またはほぼ同じ状態にすることができる。
例えば、クラウドゲームシステムは、クラウド管理コントローラ、ラックコントローラ、ストレージ、及びクラウドゲームシステムによって管理され、ネットワークを介して結合された複数の計算ノードを含み得る。ゲームコンソールとして構成された各計算ノードは、ハードウェア層、オペレーティングシステム層、及びアプリケーション層を含み得る。オペレーティングシステム層は、ハードウェア層と相互作用するように構成され、オペレーティングシステム層は状態マネージャを含む。アプリケーション層は、オペレーティングシステムの少なくとも一部分及びハードウェア層の一部分で命令するように構成される。アプリケーション層はゲームを含み、状態マネージャは、計算ノードのゲーム状態データをキャプチャし、ゲームが一時停止しているときにキャプチャされたゲーム状態データを格納するように構成される。状態マネージャはまた、ゲームが一時停止された時点でゲームを再開するために、同じまたは異なる計算ノードにゲーム状態データを適用するように構成される。
図5は、本開示の一実施形態による、データセンタのラックアセンブリの再構成方法におけるステップを示すフロー図500である。フロー図500は、図2A~2Bに示すデータストレージシステム内に実装されてよい。特に、フロー図は、任意の適切な時点でラックアセンブリの再構成を提供するために実装されてよい。
例えば、ラックアセンブリの再構成は、主にゲーム用に構成されたクラウドゲームシステムのダークタイム中のコンピューティングリソースの利用を可能にするために実行されてよい。すなわち、地域のデータセンタによってサービスを提供される特定の地理的領域で、仕事や学校のある時間、大規模な社会的集まり(例えば、地域のフットボール試合)、またはユーザがクラウドゲームシステムでゲームをプレイしていない深夜や早朝(例えば、睡眠時間)など、コンピューティングリソースが十分に利用されない低活動または非活動の期間(すなわち、ダークタイム)が存在する。本開示の実施形態は、それらのダークタイムまたは期間の間のコンピューティングリソースの利用を提供する。そのようにして、それらのダークタイム中のコンピューティングリソースの収益化は、コスト上の理由から(すなわち、24時間の期間内で各コンピューティングリソースの純利益を向上させるために)重要である。
したがって、データセンタの1つまたは複数のラックアセンブリは、ダークタイム中におけるゲーム以外の異なるワークロードを処理するために別の用途で使用されてよい。一般に、対応するラックアセンブリのすべての計算ノードを同様のタスク、例えばダークタイム中に実行されるタスクを実行するように変換する方が効率的であり、それらのタスクを達成するためにラックアセンブリのネットワーク再構成が必要となる場合がある。すべての計算ノードは、ダークタイムに実行される新しいタスクを処理するように新たに構成されてよいので、ラックアセンブリの再構成は、そのラックアセンブリの以前のネットワーク構成の下でタスク(ゲームなど)を実行し得るいずれの計算ノードにも悪影響を与えない。すなわち、ゲームを処理する計算ノードは、前述のように、同じデータセンタまたは異なるデータセンタの他のラックアセンブリに転送されてよい。
510において、方法は、クラウド管理コントローラからラックアセンブリのラックコントローラに再構成メッセージを送信して、ラックアセンブリを第1の構成から第2の構成に再構成することを含む。データセンタ内の他のリソースもまた、クラウドゲームラックアセンブリの外部のリソースを含めて、再構成されてよい。特に、一部のユースケースでは、サードパーティのクラウドホスティング会社(例えば、AWSクラウドコンピューティング)の他のネットワーク、または他のネットワークへのネットワーク/インターネット接続が必要となる場合がある。この接続性は、ネットワーク構成の一部として確立され得る。他の場合では、有害なワークロード(例えば、ハッカー、またはサービスを要求する外部企業、または信頼されていない顧客から)を分離する及び/またはそれがデータセンタ(例えば、主にクラウドゲームサービスを提供する)の全体的な機能及び整合性に何らかの方法で悪影響を与えることを防止するために、セキュリティ目的でデータセンタ内のリソースの再構成が実行されてもよい。
例として、再構成は、外部パーティまたは信頼されていない顧客によって、1つまたは複数のデータセンタの一部が分散型サービス拒否(DDOS)またはハッキングを受けた際に対抗するために利用され得る。第1の構成では、ラックアセンブリは、第1の複数のアプリケーション(例えば、ゲーム)によって実装される第1優先のサービスを促進するように構成される。第2の構成では、ラックアセンブリは、第2の複数のアプリケーション(例えば、人工知能またはAIサービスを実行する)によって実装される第2優先のサービスを促進するように構成される。第2優先のサービス(例えば、AI)は、第1優先のサービス(ゲーム)よりも低い優先度を持ってもよく、それにより、ラックアセンブリは主にゲームをサポートするが、ゲームの需要が減少するとき(すなわち、ダークタイム)、ラックアセンブリは、第2優先のサービスを処理することにより、24時間の期間全体を通してコンピューティングリソースをより多く利用できるように構成されてよい。
一実施態様では、ラックアセンブリは、図2A~図2Bで前述したように、1つまたは複数のネットワークストレージと1つまたは複数のストリーミングアレイとを含む。各ストリーミングアレイは、1つまたは複数の計算スレッドを含み、各計算スレッドは1つまたは複数の計算ノードを含む。
ラックアセンブリは、別の構成に切り替えることが適切であるとみなされる場合、再構成メッセージを送信されてよい。例えば、1つまたは複数のラックアセンブリの再構成は、特定の規定の時間(例えば、ダークタイムの開始を示す午前2時以降)に行われる場合や、またはデータセンタのコンピューティングリソースの予測使用量に基づき、ダークタイムがいつ発生するかを予測して行われる場合などがある。一実施態様では、ダークタイムはメトリクスを通じて測定され、クラウド管理コントローラは、複数のラックアセンブリを含むデータセンタによってサポートされる第1優先のサービスに対する需要の減少を検出するように構成される。例えば、複数のラックアセンブリのそれぞれは、第1優先のサービス(例えば、ゲーム)を促進する第1の構成で構成される。
一般に、ラックアセンブリの異なる構成への切り替えは、ダークタイム中に行われることがある。しかしながら、ラックアセンブリの再構成を実行することが有益であり得るダークタイム外の期間がある場合がある。例えば、第2優先のサービス(例えば、非ゲームワークロード)が、第1優先のサービス(例えば、ゲーム)よりも多くの利益を生み出す場合、優先度の逆転が発生する可能性があり、その場合、第2優先のサービスは第1優先のサービス(例えば、ゲーム)よりも優先される。すなわち、データセンタは第1優先のサービス(例えば、ゲーム)の優先度を下げてもよい。
一実施態様では、クラウド管理コントローラは、複数のラックアセンブリのネットワーク構成を管理する。例えば、クラウド管理コントローラは、特定の地理的領域内などにおいて、ラックアセンブリの数と、ゲーム用に構成された、またはゲームに利用可能な計算ノードの数(例えば、第1優先のサービス)のインベントリを保持していてよい。そのようにして、特定の期間にわたってゲームの需要が減少し、ダークタイムの開始が示されると、クラウド管理コントローラは、データセンタのユーザによる現在のゲームの需要及び予測されるゲームの需要をサポートする十分な数のラックアセンブリを維持しながら、ゲームよりも第2優先のサービスをサポートするように1つまたは複数のラックアセンブリを再構成してよい。
520において、方法は、ラックアセンブリを第2の構成で構成することを含む。そのようにして、ラックアセンブリは、第2優先のサービス(例えば、AI)をサポートするアプリケーションを実行することができ、それによって、通常であればアイドル状態になる計算ノードを利用する。
一実施形態では、ラックアセンブリの再構成は、ラックアセンブリの計算ノードを異なるオペレーティングシステムでリブートすることを含み得る。一般に、ラックアセンブリの計算ノードが同じオペレーティングシステムを実行し、さらに同じオペレーティングシステムの同じバージョンを実行することが有益である場合がある。例えば、異なるオペレーティングシステムは、第2優先のサービス(例えば、ダークタイム中のアプリケーションの実行)のサポートに適した構成となっている場合がある。計算ノードのリブートは、図4で先に説明した動作を含み、新しいオペレーティングシステムで計算ノードをブートするための起動構成命令をBMCで受信することを含み得る。計算ノードは、1つまたは複数の計算ノードを含むスレッド上に配置され、BMCは、計算ノードに通信を提供する複数の通信インターフェースを管理するように構成される。リブートプロセスは、通信インターフェースを介してBMCから計算ノードのブートコントローラにブート命令を送信して、基本入出力システム(BIOS)ファームウェアを実行することを含み得る。リブートプロセスは、計算ノード上でBIOSファームウェアを実行して、計算ノードにより実行されるオペレーティングシステムをロードすることを含み得る。
一実施形態では、ラックアセンブリの計算ノードを異なるオペレーティングシステムにリブートすることを含むラックアセンブリの再構成は、新しいオペレーティングシステムソフトウェアまたは他のソフトウェアコンポーネントをラックアセンブリの対応するネットワークストレージに、またはクラウド管理コントローラあるいはクラウド管理コントローラによってアクセス可能な他のストレージにロードすることを含み得る。
一実施形態では、ラックアセンブリの再構成は、ラックアセンブリのネットワーク構成を変更することを含み得る。すなわち、ラックアセンブリとリモートラックアセンブリとの間の通信を提供するためにラックアセンブリのネットワーク構成の再構成が必要であり、ネットワーク構成は、ラックアセンブリと別のラックアセンブリとの間の通信経路を定義する。例えば、仮想ローカルエリアネットワークを使用した計算ノードの外部アクセスは再構成される必要がある場合があり、それに対応して、ファイアウォールは、他のリモートラックアセンブリ(例えば、リモートラックアセンブリ上に位置する計算ノード)に適切なアクセスを提供するように再構成される必要がある場合がある。
前述のように、データセンタ内のリソースは、サードパーティのクラウドホスティング会社(例えば、AWSクラウドコンピューティング)の他のネットワークや、その他のネットワークへのネットワーク/インターネット接続を提供するなど、クラウドゲームラックアセンブリの外部のリソースへのアクセスを含むように、ネットワーク構成中に再構成されてよい。また、リソースの再構成は、有害なワークロード(例えば、DDOS、ハッキングワークロード、またはサービスを要求する信頼されていない外部企業、または信頼されていない顧客)を分離する及び/またはそれがデータセンタ(例えば、主にクラウドゲームサービスを提供する)の全体的な機能及び整合性に何らかの方法で悪影響を与えることを防止するときするなど、セキュリティ目的で実行されてよい。
一実施形態では、ラックアセンブリの再構成は、ブートストレージアーキテクチャを変更することを含み得る。例えば、ネットワーク再構成は、対応するオペレーティングシステムのブート及び/または実行中に使用するためのブートファイルまたはオペレーティングシステムファイルへの高速アクセスを提供することができる。
一実施形態では、ラックアセンブリの再構成は、計算ノード間の高速通信を可能にして、計算ノード間の高速通信が要求される「スーパーコンピュータ」またはAIコンピュータを形成するPCIeファブリック(または同等の)ファブリックの再構成を含み得る。例えば、ラックアセンブリは、ゲーム中の実装などのために、複数の計算ノードとラックアセンブリの少なくとも1つのネットワークストレージとの間の直接アクセスのために最初に構成されてよい。ただし、ダークタイム中は、ラックアセンブリは第2の構成で再構成されてよい。
例えば、第2の構成は、ネットワークストレージへの直接アクセスを提供する代わりに(例えば、第1の構成において)、ラックアセンブリ内の複数の計算ノード間の直接通信のためにPCIeファブリックを構成してよい。このようにして、第2の構成では、PCIeファブリックは、ラックアセンブリ内の第1の計算ノードと第2の計算ノードとの間の直接通信を促進する。さらに、ラック再構成を実行して、ラックアセンブリ間に特別なネットワーク構成を確立してよい。通常、クラウドゲームラックアセンブリは互いに独立して動作するが、一部のユースケースでは、再構成を通じて2つ以上のラックアセンブリを相互接続し、連携して動作させることができる。通常、再構成なしでは、ファイアウォール及び/またはクラスタレベルスイッチなどのネットワーク設定によりそのような連携は阻止される。
図6は、本開示の様々な実施形態の態様を実行するために使用することができる例示的なデバイス600のコンポーネントを示す。例えば、図6は、本開示の実施形態による、ラックアセンブリのストリーミングアレイの計算スレッドの計算ノードなど、計算ノードのリモートブート制御、及びデータセンタのラックアセンブリのネットワーク再構成を提供するのに適した例示的なハードウェアシステムを示す。このブロック図は、パーソナルコンピュータ、サーバコンピュータ、ゲーム機、モバイルデバイス、または他のデジタルデバイスを組み込むことができるか、またはそれらのいずれかであるデバイス600を示しており、それぞれが本発明の実施形態を実践するのに適している。デバイス600は、ソフトウェアアプリケーション及び任意選択でオペレーティングシステムを実行するための中央処理装置(CPU)602を含む。CPU602は、1つまたは複数の同種または異種の処理コアで構成されてもよい。
様々な実施形態によれば、CPU602は、1つまたは複数の処理コアを有する1つまたは複数の汎用マイクロプロセッサである。さらなる実施形態を、ゲームの実行中にグラフィックス処理を行うように構成されたアプリケーションの高並列で計算集約型のアプリケーション(例えば、媒体及びインタラクティブエンターテインメントアプリケーション)に特に適応されたマイクロプロセッサアーキテクチャを伴う1つまたは複数のCPUを用いて実施することができる。
メモリ604は、CPU602及びGPU616が使用するアプリケーション及びデータを記憶する。ストレージ606は、アプリケーション及びデータのための不揮発性ストレージ及びその他のコンピュータ可読媒体を提供し、固定ディスクドライブ、リムーバブルディスクドライブ、フラッシュメモリデバイス、及びCD-ROM、DVD-ROM、Blu-ray(登録商標)、HD-DVD、またはその他の光学ストレージデバイス、ならびに信号伝送及びストレージ媒体を含んでもよい。ユーザ入力デバイス608は、1人以上のユーザからのユーザ入力をデバイス600に伝達するものであり、その例としては、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、スチルまたはビデオレコーダ/カメラ、及び/またはマイクロフォンがあり得る。
ネットワークインターフェース609は、電子通信ネットワークを介してデバイス600が他のコンピュータシステムと通信することを可能にするものであり、ローカルエリアネットワーク及びインターネットなどのワイドエリアネットワークを介した有線または無線の通信を含み得る。オーディオプロセッサ612は、CPU602、メモリ604、及び/またはストレージ606によって提供される命令及び/またはデータから、アナログまたはデジタルのオーディオ出力を生成するように適応されている。CPU602、GPU616を含むグラフィックスサブシステム、メモリ604、データストレージ606、ユーザ入力デバイス608、ネットワークインターフェース609、及びオーディオプロセッサ612を含むデバイス600のコンポーネントは、1つまたは複数のデータバス622を介して接続されている。
グラフィックスサブシステム614は、データバス622及びデバイス600のコンポーネントとさらに接続されている。グラフィックスサブシステム614は、少なくとも1つのグラフィックスプロセシングユニット(GPU)616とグラフィックスメモリ618とを含む。グラフィックスメモリ618は、出力画像の各ピクセルに対するピクセルデータを記憶するために用いるディスプレイメモリ(例えば、フレームバッファ)を含む。グラフィックスメモリ618は、GPU616と同じデバイスに統合されてもよく、GPU616と別個のデバイスとして接続されてもよく、及び/またはメモリ604内に組み込まれてもよい。ピクセルデータは、CPU602から直接グラフィックスメモリ618に提供することができる。あるいは、CPU602は、所望の出力画像を定義するデータ及び/または命令をGPU616に提供し、そこからGPU616が1つまたは複数の出力画像のピクセルデータを生成する。所望の出力画像を定義するデータ及び/または命令は、メモリ604及び/またはグラフィックスメモリ618に格納することができる。実施形態では、GPU616は、シーンのジオメトリ、ライティング、シェーディング、テクスチャリング、モーション、及び/またはカメラパラメータを定義する命令及びデータから、出力画像用のピクセルデータを生成するための3Dレンダリング機能を含む。GPU616は、シェーダプログラムを実行することができる1つまたは複数のプログラマブル実行ユニットをさらに含むことができる。
グラフィックスサブシステム614は、ディスプレイデバイス610に表示されるように、または投影システム(図示せず)によって投影されるように、グラフィックスメモリ618から画像用のピクセルデータを定期的に出力する。ディスプレイデバイス610はCRT、LCD、プラズマ、及びOLEDディスプレイを含む、デバイス600からの信号に応答して視覚情報を表示することができる任意のデバイスであり得る。デバイス600は、例えば、アナログ信号またはデジタル信号をディスプレイデバイス610に提供することができる。
他の実施形態では、グラフィックスサブシステム614は複数のGPUデバイスを含み、これらは、対応するCPU上で実行されている単一アプリケーションに対するグラフィックス処理を実行するために結合される。例えば、複数のGPUは、画像フレームに対するオブジェクトをレンダリングする前にスクリーン領域(交互配置され得る)に対してジオメトリを事前テストすることによって、アプリケーションに対するジオメトリのマルチGPUレンダリングを実行することができる。他の例では、複数のGPUは交互形式のフレームレンダリングを実行することができる。ここでは、GPU1が第1のフレームをレンダリングし、GPU2が第2のフレームをレンダリングして、これを連続的なフレーム周期で行うことなどを、最後のGPUに達するまで続ける。
その上で、最初のGPUが次のビデオフレームをレンダリングする(例えば、2つのGPUのみが存在する場合には、GPU1が第3のフレームをレンダリングする)。すなわち、GPUはフレームをレンダリングするときに回転処理を行う。レンダリング操作は重複する可能性があり、GPU1が第1のフレームのレンダリングを終了する前に、GPU2が第2のフレームのレンダリングを開始し得る。別の実施態様では、レンダリング及び/またはグラフィックスパイプラインでの異なるシェーダ操作を複数のGPUデバイスに割り当てることができる。マスタGPUが主なレンダリング及び合成を行っている。
例えば、3つのGPUを含むグループでは、マスタGPU1は、メインレンダリング(例えば、第1のシェーダ操作)と、スレーブGPU2及びスレーブGPU3からの出力の合成とを実行することができ、スレーブGPU2は、第2のシェーダ(例えば、川などの流体効果)操作を実行することができ、スレーブGPU3は、第3のシェーダ(例えば、粒子状の煙)操作を実行することができ、マスタGPU1は、GPU1、GPU2、及びGPU3のそれぞれからの結果を合成する。そのようにして、様々なGPUを割り当てて、様々なシェーダ操作(例えば、旗のはためき、風、煙の生成、火など)を実行して、ビデオフレームをレンダリングすることができる。さらに別の実施形態では、3つのGPUのそれぞれを、ビデオフレームに対応するシーンの異なるオブジェクト及び/または部分に割り当てることができる。前述の実施形態及び実施態様では、これらの動作を同じフレーム周期(同時に並列)でまたは異なるフレーム周期(順次に並列)で行うことができる。
したがって、本開示では、ラックアセンブリのストリーミングアレイの計算スレッドの計算ノードなど、計算ノードのリモートブート制御及びデータセンタのラックアセンブリのネットワーク再構成を提供するように構成された方法及びシステムについて説明する。
本明細書で定義される様々な実施形態は、本明細書で開示される様々な特徴を使用する特定の実施態様に組み合わされてもよく、または組み立てられてもよいことを理解されたい。したがって、提供される例は、可能な例の一部にすぎず、様々な要素を組み合わせて、より多くの実施態様を規定することによって可能である様々な実施態様に制限を加えるものではない。一部の例では、一部の実施態様は、開示されたまたは同等の実施態様の趣旨から逸脱することなく、より少ない要素を含み得る。
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースもしくはプログラム可能家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む様々なコンピュータシステム構成で実践されてよい。本開示の実施形態はまた、有線ベースネットワークまたは無線ネットワークを介してリンクされるリモート処理デバイスによりタスクが行われる分散コンピューティング環境においても実施することができる。
前述の実施形態を念頭におくと、本開示の実施形態は、コンピュータシステムに格納されたデータを伴う様々なコンピュータ実装の動作を採用できることが理解されるべきである。これらの動作は、物理量の物理的操作を必要とする動作である。本開示の実施形態の一部を形成する、本明細書で説明される動作のうちのいずれも、有用な機械動作である。また本開示の実施形態は、これらの動作を行うためのデバイスまたは装置に関する。装置は必要な目的に対して特別に構成することもできるし、または装置を、コンピュータに格納されたコンピュータプログラムによって選択的に作動または構成される汎用コンピュータとすることもできる。特に、本明細書の教示にしたがって書かれたコンピュータプログラムと共に様々な汎用マシンを使用することができる。または、必要な動作を実行するためにさらに特化した装置を構築する方がより好都合な場合もある。
また本開示を、コンピュータ可読媒体上のコンピュータ可読コードとして具現化することができる。コンピュータ可読媒体は、データを格納できる任意のデータストレージデバイスであり、データは後でコンピュータシステムによって読み取ることができる。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ(NAS)、読み取り専用メモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープ、及び他の光学及び非光学データストレージデバイスが含まれる。コンピュータ可読媒体には、コンピュータ可読コードが分散方式で格納され実行されるように、ネットワーク接続されたコンピュータシステムにわたり分散されたコンピュータ可読有形媒体が含まれ得る。
方法動作が特定の順序で説明されたが、他のハウスキーピング操作が動作の間に実行されてもよく、または動作が、わずかに異なる時刻に生じるように調整されてもよく、もしくはオーバーレイ動作の処理が所望の手法で実行される限り、処理に関連する様々な間隔で処理動作の発生を可能にするシステム内に分散され得ることが理解されるべきである。
前述の開示は、理解を明確にするためにある程度詳細に説明されたが、添付の特許請求の範囲内で特定の変更及び修正を実施できることは明らかであろう。したがって、本実施形態は、限定ではなく例示としてみなされるべきであり、本開示の実施形態は、本明細書に提供される詳細に限定されるものではなく、添付の特許請求の範囲内及び均等物内で変更され得る。

Claims (16)

  1. システムの起動を実行する方法であって、
    ボード管理コントローラ(BMC)で、オペレーティングシステムで計算ノードをブートするための起動構成命令を受信し、
    前記計算ノードは複数の計算ノードを含むスレッドに配置され、
    前記BMCは前記複数の計算ノードへの通信を提供する複数の通信インターフェースを管理するように構成されており、
    前記計算ノードの外部に格納されている基本入出力システム(BIOS)ファームウェアを実行するために、前記BMCから前記計算ノードのブートコントローラへ、前記複数の通信インターフェースのうち第1通信インターフェースを介してブート命令の送信を行い、
    前記計算ノードによって実行される前記オペレーティングシステムのロードを開始するために、前記計算ノード上で前記BIOSファームウェアを実行し、
    前記オペレーティングシステムに基づいて前記第1通信インターフェースを選択し、
    前記BMCは、前記複数の通信インターフェースから選択された対応する通信インターフェースを介して、複数のオペレーティングシステムのそれぞれに制御信号を送達するスイッチとして構成され、
    前記オペレーティングシステムの制御信号は、前記第1通信インターフェースを介して前記計算ノードに送達され
    実行のためにロードされている前記オペレーティングシステムとは異なる第1のオペレーティングシステムを使用した前記計算ノードによるアプリケーションの実行中に、前記計算ノードによって実行されているジョブを一時停止し、
    前記計算ノードの状態をキャプチャして前記状態を格納し、
    前記計算ノードの前記状態を別の計算ノードに転送し、
    前記ジョブを再開するために、前記別の計算ノードで前記アプリケーションを実行するためのプログラム命令と、をさらに含み、
    前記ジョブは、所定の一時停止点ではない選択された一時停止点で一時停止される、
    方法。
  2. 前記計算ノードから、前記BIOSファームウェアを格納するストレージアドレスにアクセスする要求を前記BMCで受信し、
    前記BIOSファームウェアを取得するために、前記計算ノードによる前記ストレージアドレスへのアクセスを促進し、
    前記ストレージアドレスが前記BMCからの前記ブート命令に含まれる、
    請求項1に記載の方法。
  3. 前記ブート命令の前記送信では、
    前記BMCによってストレージアドレスにある前記BIOSファームウェアにアクセスし、
    前記ストレージアドレスが前記BMCからの前記起動構成命令に含まれ、
    前記計算ノードによる前記BIOSファームウェアの前記実行のための前記ブート命令に関連して、前記BMCから前記計算ノードに前記BIOSファームウェアを送信する、
    請求項1に記載の方法。
  4. 前記BIOSファームウェアの前記実行では、
    ストレージアドレスから前記計算ノードのシステムメモリへと前記オペレーティングシステムの少なくとも一部のロードを実行する、
    請求項1に記載の方法。
  5. ストレージアドレスから前記計算ノードのシステムメモリへと前記オペレーティングシステムの前記少なくとも一部のロードでは、
    実行のために前記計算ノードの前記システムメモリに前記オペレーティングシステムの第1の部分をロードし、
    前記計算ノードによる前記オペレーティングシステムの前記実行中に、前記計算ノードがPCIeファブリックを介してアクセスするために、前記オペレーティングシステムの第2の部分をネットワークストレージにロードする、
    請求項4に記載の方法。
  6. 前記スレッドは、ストリーミングアレイの複数のスレッドのうちの1つであり、
    複数のラックアセンブリの各ラックアセンブリは、1つまたは複数のネットワークストレージ及び1つまたは複数のストリーミングアレイを含み、
    前記1つまたは複数のストリーミングアレイのそれぞれは、1つまたは複数のスレッドを含み、
    前記1つまたは複数のスレッド内の各計算スレッドは1つ以上の計算ノードを含む、
    請求項1に記載の方法。
  7. データセンタのクラウド管理コントローラで、前記計算ノード上の前記オペレーティングシステムの1つまたは複数のイメージを管理することをさらに含む、
    請求項1に記載の方法。
  8. ラックアセンブリを第1の構成から第2の構成に再構成するために、クラウド管理コントローラから前記ラックアセンブリのラックコントローラに再構成メッセージを送信し、
    前記第1の構成内の前記ラックアセンブリは第1の複数のアプリケーションによって実装される第1優先のサービスを促進するように構成され、
    前記第2の構成は第2の複数のアプリケーションによって実装される第2優先のサービスを促進するように構成され、
    前記第2優先のサービスは前記第1優先のサービスよりも低い優先度を有し、
    前記第2の構成での前記ラックアセンブリの構成を行い、
    前記ラックアセンブリは1つまたは複数のネットワークストレージ及び1つまたは複数のストリーミングアレイを含み、
    前記1つまたは複数のストリーミングアレイのそれぞれは、1つまたは複数の計算スレッドを含み、
    前記1つまたは複数の計算スレッドのそれぞれは1つ以上の計算ノードを含み、
    前記第2の構成内の前記ラックアセンブリの前記構成では、
    PCIeファブリックが前記ラックアセンブリ内の第1の計算ノードと第2の計算ノードとの間の直接通信を促進するように、前記PCIeファブリックを前記ラックアセンブリ内の複数の計算ノード間の直接通信のために前記第2の構成で再構成し、
    前記第1の構成において、前記PCIeファブリックは前記複数の計算ノードと前記ラックアセンブリの少なくとも1つのネットワークストレージとの間の直接アクセスのために構成される、方法。
  9. 前記クラウド管理コントローラで、複数のラックアセンブリを含むデータセンタによってサポートされる前記第1優先のサービスに対する需要の減少を検出することをさらに含み、
    前記複数のラックアセンブリのそれぞれが、前記第1優先のサービスを促進する前記第1の構成で構成され、
    前記クラウド管理コントローラが前記複数のラックアセンブリの構成を管理する、
    請求項8に記載の方法。
  10. 前記第2の構成での前記ラックアセンブリの前記構成では、
    前記第2優先のサービスの実行をサポートするように構成されたオペレーティングシステムを実行するために、前記ラックアセンブリの前記複数の計算ノードのそれぞれをリブートし、
    計算ノードのリブートは、
    ボード管理コントローラ(BMC)で、前記オペレーティングシステムで前記計算ノードをブートするための起動構成命令を受信し、
    前記計算ノードは第2の複数の計算ノードを含む計算スレッドに配置され、
    前記BMCは前記第2の複数の計算ノードへの通信を提供する複数の通信インターフェースを管理するように構成されており、
    基本入出力システム(BIOS)ファームウェアを実行するために、前記BMCから前記計算ノードのブートコントローラに前記複数の通信インターフェースのうち第1通信インターフェースを介してブート命令を送信し、
    前記計算ノードにより実行される前記オペレーティングシステムをロードするために、前記計算ノード上で前記BIOSファームウェアを実行する、
    請求項8に記載の方法。
  11. 前記第2の構成での前記ラックアセンブリの前記構成では、
    前記ラックアセンブリと別のラックアセンブリとの間のネットワーク構成を変更し、
    前記ネットワーク構成は、前記ラックアセンブリと前記別のラックアセンブリとの間の通信経路を定義する、
    請求項8に記載の方法。
  12. システムの起動を実行するコンピュータプログラムを格納するコンピュータ可読媒体であって、
    ボード管理コントローラ(BMC)で、オペレーティングシステムで計算ノードをブートするための起動構成命令を受信するためのプログラム命令であって、
    前記計算ノードは複数の計算ノードを含むスレッドに配置され、
    前記BMCは前記複数の計算ノードへの通信を提供する複数の通信インターフェースを管理するように構成されており、
    前記計算ノードの外部に格納されている基本入出力システム(BIOS)ファームウェアを実行するために、前記BMCから前記計算ノードのブートコントローラへ、前記複数の通信インターフェースのうち第1通信インターフェースを介してブート命令の送信を行い、
    前記計算ノードにより実行される前記オペレーティングシステムのロードを開始するために、前記計算ノード上で前記BIOSファームウェアを実行するためのプログラム命令と、を含み、
    前記オペレーティングシステムに基づいて前記第1通信インターフェースを選択するためのプログラム命令をさらに含み、
    前記BMCは、前記複数の通信インターフェースから選択された対応する通信インターフェースを介して、複数のオペレーティングシステムのそれぞれに制御信号を送達するスイッチとして構成され、
    前記オペレーティングシステムの制御信号は、前記通信インターフェースを介して前記計算ノードに送達され
    実行のためにロードされている前記オペレーティングシステムとは異なる第1のオペレーティングシステムを使用した前記計算ノードによるアプリケーションの実行中に、前記計算ノードによって実行されているジョブを一時停止するためのプログラム命令と、
    前記計算ノードの状態をキャプチャし、前記状態を格納するためのプログラム命令と、
    前記計算ノードの前記状態を別の計算ノードに転送し、
    前記ジョブを再開するために、前記別の計算ノードで前記アプリケーションを実行するためのプログラム命令と、をさらに含み、
    前記ジョブは、所定の一時停止点ではない選択された一時停止点で一時停止される、
    コンピュータ可読媒体。
  13. 前記計算ノードから、前記BIOSファームウェアを格納するストレージアドレスにアクセスするための要求を前記BMCで受信するためのプログラム命令と、
    前記計算ノードが前記BIOSファームウェアを取得するために、前記ストレージアドレスへのアクセスを促進するためのプログラム命令と、をさらに含み、
    前記ストレージアドレスが前記BMCからの前記ブート命令に含まれる、
    請求項12に記載のコンピュータ可読媒体。
  14. 前記ブート命令を送信するための前記プログラム命令は、
    前記BMCによって、ストレージアドレスにある前記BIOSファームウェアにアクセスし、
    前記ストレージアドレスが前記BMCからの前記起動構成命令に含まれ、
    前記計算ノードによる前記BIOSファームウェアの前記実行のための前記ブート命令と関連して、前記BMCから前記計算ノードに前記BIOSファームウェアを送信するためのプログラム命令を含む、
    請求項12に記載のコンピュータ可読媒体。
  15. 前記BIOSファームウェアを実行するための前記プログラム命令は、
    ストレージアドレスから前記計算ノードのシステムメモリへと前記オペレーティングシステムの少なくとも一部をロードするためのプログラム命令を含む、
    請求項12に記載のコンピュータ可読媒体。
  16. システムの起動を実行する方法であって、
    ボード管理コントローラ(BMC)で、オペレーティングシステムで計算ノードをブートするための起動構成命令を受信し、
    前記計算ノードは複数の計算ノードを含むスレッドに配置され、
    前記BMCは前記複数の計算ノードへの通信を提供する複数の通信インターフェースを管理するように構成されており、
    前記計算ノードの外部に格納されている基本入出力システム(BIOS)ファームウェアを実行するために、前記BMCから前記計算ノードのブートコントローラへ、前記複数の通信インターフェースのうち第1通信インターフェースを介してブート命令の送信を行い、
    前記計算ノードによって実行される前記オペレーティングシステムのロードを開始するために、前記計算ノード上で前記BIOSファームウェアを実行し、
    実行のためにロードされている前記オペレーティングシステムとは異なる第1のオペレーティングシステムを使用した前記計算ノードによるアプリケーションの実行中に、前記計算ノードによって実行されているジョブを一時停止し、
    前記計算ノードの状態をキャプチャして前記状態を格納し、
    前記計算ノードの前記状態を別の計算ノードに転送し、
    前記ジョブを再開するために、前記別の計算ノードで前記アプリケーションを実行するためのプログラム命令と、をさらに含み、
    前記ジョブは、所定の一時停止点ではない選択された一時停止点で一時停止される、方法。
JP2024554891A 2022-03-14 2023-02-23 ブートコントローラを使用したコンテキストスイッチングのための計算ノードのスレッドレベルブート管理制御 Active JP7760075B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/694,023 US12045627B2 (en) 2022-03-14 2022-03-14 Sled level boot management control of compute nodes for context switching using boot controllers
US17/694,023 2022-03-14
PCT/US2023/063170 WO2023177965A1 (en) 2022-03-14 2023-02-23 Sled level boot management control of compute nodes for context switching using boot controllers

Publications (2)

Publication Number Publication Date
JP2025509628A JP2025509628A (ja) 2025-04-11
JP7760075B2 true JP7760075B2 (ja) 2025-10-24

Family

ID=85776216

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2024554891A Active JP7760075B2 (ja) 2022-03-14 2023-02-23 ブートコントローラを使用したコンテキストスイッチングのための計算ノードのスレッドレベルブート管理制御

Country Status (5)

Country Link
US (2) US12045627B2 (ja)
EP (1) EP4494000A1 (ja)
JP (1) JP7760075B2 (ja)
CN (1) CN119137577A (ja)
WO (1) WO2023177965A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10137361B2 (en) * 2013-06-07 2018-11-27 Sony Interactive Entertainment America Llc Systems and methods for using reduced hops to generate an augmented virtual reality scene within a head mounted system
CN114007383B (zh) * 2021-10-27 2023-08-18 广州小鸡快跑网络科技有限公司 一种游戏手柄及其冷却方法
US20250094177A1 (en) * 2023-09-15 2025-03-20 Microsoft Technology Licensing, Llc Firmware access agent for computing device

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013069136A1 (ja) 2011-11-10 2013-05-16 富士通株式会社 情報処理装置、情報処理方法、情報処理プログラム、および同プログラムを記録した記録媒体
JP2015512535A (ja) 2012-03-31 2015-04-27 インテル・コーポレーション システム変更後におけるコンピューティング装置の適切な動作を確認するための方法及びシステム
US20150263743A1 (en) 2012-10-19 2015-09-17 Asahi Kasei Microdevices Corporation D/a converter
US20190020540A1 (en) 2017-07-14 2019-01-17 Quanta Cloud Technology Inc. Mechanism for hardware configuration and software deployment
US20190196907A1 (en) 2019-03-05 2019-06-27 Intel Corporation Compression techniques for distributed data
US20210255979A1 (en) 2020-02-14 2021-08-19 Sony Interactive Entertainment Inc. 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

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3794151B2 (ja) * 1998-02-16 2006-07-05 株式会社日立製作所 クロスバースイッチを有する情報処理装置およびクロスバースイッチ制御方法
GB2508895A (en) * 2012-12-14 2014-06-18 Ibm Bootloader for booting a computer into a second operating system that is hidden from a first host operating system
JP2015171128A (ja) * 2014-03-11 2015-09-28 富士通株式会社 パケットの取得方法、パケット取得装置、及び、パケット取得プログラム
WO2015176262A1 (zh) * 2014-05-22 2015-11-26 华为技术有限公司 一种节点互连装置、资源控制节点和服务器系统
WO2016018293A1 (en) 2014-07-30 2016-02-04 Hewlett-Packard Development Company, L.P. Configuring managed server
US9795879B2 (en) * 2014-12-31 2017-10-24 Sony Interactive Entertainment America Llc Game state save, transfer and resume for cloud gaming
US10333772B2 (en) * 2016-06-07 2019-06-25 Quanta Computer Inc. Remote keyboard-video-mouse technologies
US11461085B2 (en) * 2019-03-06 2022-10-04 Quanta Computer Inc. Firmware upgrade method in multiple node storage system
US10981059B2 (en) * 2019-07-03 2021-04-20 Sony Interactive Entertainment LLC Asset aware computing architecture for graphics processing
TWI713325B (zh) * 2019-09-17 2020-12-11 宜鼎國際股份有限公司 可遠端控制電子設備的系統及方法
US11360783B2 (en) * 2019-12-27 2022-06-14 Quanta Computer Inc. Method and system for booting from a split BIOS image
US12189468B2 (en) * 2021-05-27 2025-01-07 Intel Corporation Cloud scale server reliability management
US11927999B2 (en) * 2021-10-14 2024-03-12 Hewlett Packard Enterprise Development Lp Server network interface card-located baseboard management controllers
US12405831B2 (en) * 2021-11-19 2025-09-02 Microsoft Technology Licensing, Llc Mapping an application signature to designated cloud resources

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013069136A1 (ja) 2011-11-10 2013-05-16 富士通株式会社 情報処理装置、情報処理方法、情報処理プログラム、および同プログラムを記録した記録媒体
JP2015512535A (ja) 2012-03-31 2015-04-27 インテル・コーポレーション システム変更後におけるコンピューティング装置の適切な動作を確認するための方法及びシステム
US20150263743A1 (en) 2012-10-19 2015-09-17 Asahi Kasei Microdevices Corporation D/a converter
US20190020540A1 (en) 2017-07-14 2019-01-17 Quanta Cloud Technology Inc. Mechanism for hardware configuration and software deployment
US20190196907A1 (en) 2019-03-05 2019-06-27 Intel Corporation Compression techniques for distributed data
US20210255979A1 (en) 2020-02-14 2021-08-19 Sony Interactive Entertainment Inc. 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

Also Published As

Publication number Publication date
WO2023177965A1 (en) 2023-09-21
US20240378061A1 (en) 2024-11-14
US12045627B2 (en) 2024-07-23
US20230289194A1 (en) 2023-09-14
EP4494000A1 (en) 2025-01-22
JP2025509628A (ja) 2025-04-11
CN119137577A (zh) 2024-12-13

Similar Documents

Publication Publication Date Title
JP7724046B2 (ja) ラックアセンブリ及びネットワークアーキテクチャ
JP7760075B2 (ja) ブートコントローラを使用したコンテキストスイッチングのための計算ノードのスレッドレベルブート管理制御
US10585702B2 (en) System and method for supporting metered clients with manycore
CN107231815B (zh) 用于图形渲染的系统和方法
CN113312142B (zh) 虚拟化处理系统、方法、装置及设备
CN111420397A (zh) 用于云游戏的游戏状态保存、传输和恢复
US10967274B1 (en) Dynamic management of processes executing on computing instances
JP7646949B2 (ja) 人工知能に基づくネットワークストレージゲームの割り当て
US20230199062A1 (en) Data center wide network storage load balancing
US20250209013A1 (en) Dynamic server rebalancing
US20190050256A1 (en) Systems and methods for distributed management of computing resources
US11991242B1 (en) Efficient distributed computing using edge computing devices
US11956163B1 (en) Dynamically allocating network resources according to workload prioritization based on engagement and resource requirements
US20230342324A1 (en) Smart network interface controller serial communication redirection
WO2025170846A1 (en) Methods for integrating a game console card to interface with a host system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20241113

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20241113

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20241113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20250422

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20250509

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20250515

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250620

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20250916

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20251014

R150 Certificate of patent or registration of utility model

Ref document number: 7760075

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150