JP6412708B2 - プロセッシングシステムおよびマルチプロセッシングシステム - Google Patents

プロセッシングシステムおよびマルチプロセッシングシステム Download PDF

Info

Publication number
JP6412708B2
JP6412708B2 JP2014075605A JP2014075605A JP6412708B2 JP 6412708 B2 JP6412708 B2 JP 6412708B2 JP 2014075605 A JP2014075605 A JP 2014075605A JP 2014075605 A JP2014075605 A JP 2014075605A JP 6412708 B2 JP6412708 B2 JP 6412708B2
Authority
JP
Japan
Prior art keywords
data
gpu
processing system
memory
input
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
JP2014075605A
Other languages
English (en)
Other versions
JP2015197805A (ja
JP2015197805A5 (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
Priority to JP2014075605A priority Critical patent/JP6412708B2/ja
Priority to US14/663,656 priority patent/US10579571B2/en
Publication of JP2015197805A publication Critical patent/JP2015197805A/ja
Publication of JP2015197805A5 publication Critical patent/JP2015197805A5/ja
Application granted granted Critical
Publication of JP6412708B2 publication Critical patent/JP6412708B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Description

本発明は、プロセッシングシステムおよびマルチプロセッシングシステムに関する。
近年、インターネットをはじめとするネットワークの通信技術が急速に発達し、ユーザがネットワークを経由して様々なアプリケーションの提供を受ける、いわゆるクラウドサービスが提供されるようになってきた。このようなクラウドサービスの中には、ゲームアプリケーションをクラウドサーバ上で実行し、実行結果をネットワークを介してクライアント装置にストリーミング配信するクラウドゲーミングサービスも実現されている。
一方、近年のプロセッサ技術の進歩は著しく、汎用の演算処理を担うCPU(Central Processing Unit)のみならず、画像処理を主に担当するGPU(Graphics Processing Unit)の性能も向上してきている。これらプロセッサの性能向上に応じて、ゲームアプリケーションが提供する映像を生成するために要する演算量も増加している。
クラウドゲーミングサービスを実現するためには、複数のユーザそれぞれに対して異なるアプリケーションを提供するために、複数のゲーム提供サーバが必要となる。当然ながら、ゲームアプリケーションを実行するためのプロセッシングシステムも複数存在することになる。
本願の発明者は、複数のプロセッシングシステムを備えるサーバにおいて、ひとつのアプリケーションを複数のプロセッシングシステムで協働で実行させることにより、アプリケーションを1つのプロセッシングシステムで実行させる場合と比較して、高画質のサービスを提供することができる可能性について認識した。このとき、複数のプロセッシングシステムでの協働作業を効率化するために、プロセッシングシステム間でのデータ転送のレイテンシを低減する必要性について認識するに至った。
本発明はこうした課題に鑑みてなされたものであり、その目的は、複数のプロセッシングシステムでアプリケーションを協働で実行させるときに、プロセッシングシステム間のデータ転送のレイテンシを低減する技術を提供することにある。
上記課題を解決するために、本発明のある態様のプロセッシングシステムは、映像を生成するGPUと、データを格納するメモリと、GPUとメモリとを接続するデータバスと、データバスと接続するDMA(Direct Memory Access)コントローラと、データバスと接続するとともに、プロセッシングシステムと協働する外部のプロセッシングシステムとの間でデータの送受信をするための外部バスとも接続する入出力ブリッジと、GPUとの間でメモリが格納するデータを共有するCPUとを備える。GPUは、CPUを介さずに、DMAコントローラに対してメモリが格納するデータのデータ転送命令を発行し、DMAコントローラは、データ転送命令を受信すると、入出力ブリッジに、外部のプロセッシングシステムへメモリが格納するデータを転送させる。
なお、以上の構成要素の任意の組合せ、本発明の少なくとも一部の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。コンピュータプログラムは、画像プロセッサを実現するハードウェア資源の基本的な制御を行なうために機器に組み込まれるファームウェアの一部として提供されてもよい。このファームウェアは、たとえば、機器内のROM(Read Only Memory)やフラッシュメモリなどの半導体メモリに格納される。このファームウェアを提供するため、あるいはファームウェアの一部をアップデートするために、このプログラムを記録したコンピュータ読み取り可能な記録媒体が提供されてもよく、また、このプログラムが通信回線で伝送されてもよい。
本発明によれば、複数のプロセッシングシステムでアプリケーションを協働で実行させるときに、プロセッシングシステム間のデータ転送のレイテンシを低減する技術を提供する技術を提供することができる。
実施の形態に係るアプリケーション提供システムの全体構成を模式的に示す図である。 実施の形態に係るブレードサーバの内部構成を模式的に示す図である。 実施の形態に係るプロセッシングシステムの回路構成を模式的に示す図である。 異なるプロセッシングシステム間のデータ転送を説明するための図である。 図5(a)−(c)は、ひとつのブレードにおける各プロセッシングシステム間の接続トポロジを模式的に示す図である。 複数のブレードをまたがったプロセッシングシステム間の接続トポロジを模式的に示す図である。 4つのプロセッシングシステムの協働時におけるメモリのメモリマップと処理の依存関係とを説明するための図である。 図8(a)−(e)は、4つのプロセッシングシステムの協働時におけるメモリマップの更新の流れの一例を示す図である。 実施の形態に係る割当サーバが実行するプロセッシングシステムの割当数の変更処理の流れを示すフローチャートである。
図1は、実施の形態に係るアプリケーション提供システム10の全体構成を模式的に示す図である。図1においては、クライアント装置500と総称する複数のクライアント装置500のうち、クライアント装置500aと500bとが図示されている。クライアント装置500は、インターネット等のネットワーク400を介してログインサーバ300と接続している。
ログインサーバ300は、ネットワーク400を介して接続するクライアント装置500を利用するユーザのアカウントを管理する。ログインサーバ300は、アプリケーション提供システム10に登録しているユーザのユーザ名やパスワード等を格納する図示しないデータベースを参照し、ユーザのログイン処理およびログオフ処理を担当する。
図1においては、ブレードサーバ200と総称する複数のブレードサーバ200のうち、ブレードサーバ200aと200bとが図示されている。ブレードサーバ200は、クライアント装置500に提供するためのアプリケーションを実行するサーバである。割当サーバ100は、複数のブレードサーバ200の中から、クライアント装置500に提供するためのアプリケーションを実行するブレードサーバ200を割当て、アプリケーションプログラムを実行させる。なお、割当サーバ100における割当処理の詳細は後述する。
クライアント装置500は、ほとんどの場合CPU等の計算リソースを持っており、アプリケーションプログラムの少なくとも一部をクライアント装置500のローカルな環境で実行することも可能である。しかしながら、クライアント装置500を利用するユーザにとっては、アプリケーションがローカルな計算リソースで実行されるか、あるいはネットワーク上のアプリケーション提供システム10の計算リソースで実行されるかは重要な問題ではなく、サービスを利用できるという点では同じである。クライアント装置500は、例えば、PC(Personal Computer)、据え置き型のゲームコンソール、携帯ゲーム機、スマートフォン、タブレットPC、ファブレット、電子書籍端末、電子辞書、携帯音楽プレイヤ、携帯型ワンセグテレビ等を用いて実現できる。
図1は、ネットワーク400を介してクライアント装置500とログインサーバ300とが接続している様子を図示しており、現実のシステム構成を模式的に図示するものである。しかしながら、クライアント装置500を利用するユーザは、ネットワーク400を含め、ログインサーバ300、割当サーバ100等のシステム構成を認識することはあまりない。アプリケーション提供システム10を利用するユーザの立場から見ると、サービスの提供を受ける上でアプリケーション提供システム10の物理構成やソフトウェア構成等を理解する必要はなく、あたかもネットワークの雲(Cloud;クラウド)の中から出てきたサービスを利用するかのような印象を受ける。図1に示すアプリケーション提供システム10は、クラウドゲーミングシステムを構成する。
以下、実施の形態に係るアプリケーション提供システム10において、ブレードサーバ200は、専用のハードウェアであるゲームコンソール上で実行されることを前提として開発されたゲームコンテンツを実行する場合について説明する。この意味で、ブレードサーバ200はゲーム提供サーバとして機能する。しかしながら、ブレードサーバ200が実行するコンテンツはゲームに限られず、例えばSNS(Social Networking Service)、動画閲覧サービス等、ゲーム以外のジャンルのコンテンツを実行する場合も本実施の形態に含まれる。
図2は、実施の形態に係るブレードサーバ200の内部構成を模式的に示す図である。図2に示すように、ひとつのブレードサーバ200は、筐体内に16個のブレード(Blade)600を搭載することができる。実施の形態に係るブレードサーバ200は16個のブレード600を備える。図2においては、16個のブレード600は、ブレード600a〜600pとして図示されている。以下、特に区別をする場合を除き、複数のブレード600を単に「ブレード600」と総称する。ブレード600は、単体でアプリケーション提供サーバを構成し、アプリケーションプログラムの実行に16個のブレード600を必ずしも必要としない。また、実施の形態に係るブレードサーバ200が備えるブレード600の数は16個に限られず、複数のブレード600を備えていればよい。
図2に示すように、1つのブレード600は、4つのプロセッシングシステム700a〜700d(以下、特に区別する場合を除き、単に「プロセッシングシステム700」と総称する。)の他、電源ポート610、入出力ポート620、および通信ポート630を同一基板上に備える。
上述したように、実施の形態に係るブレードサーバ200は、専用のハードウェアであるゲームコンソールで実行されることを前提として開発されたゲームコンテンツを実行する。ブレード600を構成する基板上に配置された4つのプロセッシングシステム700a〜700dは、それぞれ単体でゲームコンソールが備えるプロセッシングシステムと同等の性能をもつプロセッシングシステムである。
一般に、専用のゲームコンソール向けに開発されるゲームタイトルは、プロセッサやメモリ等のハードウェアリソースに対して、高度に最適化されている。このため、ひとつのプロセッサはひとつのゲームタイトルを実行するために占有され、プロセッサが単体で複数のゲームタイトルを同時に実行するのは困難である。実施の形態に係るプロセッシングシステム700も、単体で最大ひとつのゲームアプリケーションを実行可能なゲームプロセッシングシステムである。実施の形態に係るブレード600は、このようなプロセッシングシステム700を複数有し、マルチプロセッシングシステムを構成する。
電源ポート610は、ブレード600が有するプロセッシングシステム700に電力を供給する。入出力ポート620は、他のブレード600とデータを送受信するためのポートであり、例えばPCI Express等の既知の入出力インタフェースを用いて実現できる。通信ポート630は、割当サーバ100から、ゲームアプリケーションを実行するプロセッシングシステム700の割当指示を受信するポートである。通信ポート630は、例えばイーサネット(登録商標)等の既知のLAN(Local Area Network)規格に則ったLANポートを用いて実現できる。
図3は、実施の形態に係るプロセッシングシステム700の回路構成を模式的に示す図である。実施の形態に係るプロセッシングシステム700は、CPU710、GPU724、メモリ726、メモリ制御部714、ブリッジ712、DMAコントローラ716、入出力ブリッジ722、GPUバス718、およびCPUバス720を備える。
GPU724は、クライアント装置500に提供するゲームアプリケーションの映像を生成する。GPU724は、GPUバス718を介してメモリ726に接続している。メモリ726は、GPU724が出力したデータを格納する。
CPU710は、CPUバス720を介してメモリ726と接続している。CPU710はまた、GPUバス718を介してGPU724とも接続している。CPU710は、これらのバスとはブリッジ12を介して接続する。また、メモリ726はGPUバス718とCPUバス720とに接続する。このため、メモリ726におけるCPU710またはGPU724との間でのデータのやりとりは、メモリ制御部714を介して実行する。CPU710とGPU724とはメモリ726を共有し、メモリ726を介してデータを共有する。GPUバス718とCPUバス720とはともに、データ交換に用いられるデータバスとして機能する。
DMAコントローラ716は、GPUバス718と接続する。入出力ブリッジ722はGPUバス718と接続し、外部のプロセッシングシステム700との間でデータの送受信をするためのインタフェースとなる。DMAコントローラ716はGPUバス718と接続しており、CPU710を介さず、GPU724の制御の下、メモリ726に格納されているデータを外部のプロセッシングシステム700に転送することができる。
図4は、異なるプロセッシングシステム700間のデータ転送を説明するための図である。図4に示す例では、2つの異なるプロセッシングシステム700aおよび700bが、入出力ブリッジ722aおよび722bを介して接続している。より具体的に、プロセッシングシステム700aが備える入出力ブリッジ722aは、他のプロセッシングシステム700との間でデータを送受信するための複数の入出力ポート730a、731a、732a、および733aを備える。同様にプロセッシングシステム700bが備える入出力ブリッジ722bも、複数の入出力ポート730b、731b、732b、および733bを備える。プロセッシングシステム700aおよび700bは、入出力ポート730aおよび入出力ポート730bを介して接続している。
図4において、プロセッシングシステム700aはプロセッシングシステム700bの他、入出力ポート732aを介してプロセッシングシステム700cと接続し、入出力ポート733aを介してプロセッシングシステム700dとも接続している。また、プロセッシングシステム700bは、プロセッシングシステム700aの他、入出力ポート731b、732、および733bを介して、それぞれプロセッシングシステム700c、700d、および700eとも接続している。このように、入出力ポートを介して異なるプロセッシングシステム700間を接続するバスが、それらのプロセッシングシステム700間でデータを送受信するための外部バスとして機能する。
なお、入出力ブリッジ722は、DMAコントローラ716を経由したアクセスだけでなく、特定範囲の物理メモリに各入出力ポートをマッピングして、GPUバス718に流れるコマンドをリモートノード(他のプロセッシングシステム700)のGPUバス718に流すこともできる。入出力ブリッジ722は、GPUバス718に接続され、物理メモリにマップされる。このため、CPU710やGPU724それぞれが、リモートノードのメモリ726に直接アクセスすることもできる。
以下、プロセッシングシステム700aとプロセッシングシステム700bとが、ひとつのゲームアプリケーションプログラムを協働して実行する場合を例に説明する。
実施の形態に係るプロセッシングシステム700において、GPU724は、CPU710の制御によらず、DMAコントローラ716に対してメモリ726が格納するデータのデータ転送命令を発行することができる。例えばGPU724aが、DMAコントローラ716aに対してメモリ726aが格納するデータを、プロセッシングシステム700bに転送することを指示するデータ転送命令を発行したとする。データ転送命令を発行する契機としては、GPU724aが自発的にデータ転送命令を発行する場合もある。あるいは、プロセッシングシステム700bがブロードキャストしたデータ読み出し命令に応答して、データ転送命令を発行する場合もある。いずれにしても、DMAコントローラ716aは、データ転送命令を受信すると、入出力ブリッジ722に、プロセッシングシステム700bへメモリ726が格納するデータを転送させる。
プロセッシングシステム700b内のDMAコントローラ716bは、入出力ブリッジ722bを介して、プロセッシングシステム700aから転送されたデータを受信する。続いてDMAコントローラ716bは、受信したデータを、プロセッシングシステム700b内のメモリ726bに書き込む。
なお、プロセッシングシステム700b内のGPU724bが、プロセッシングシステム700a内のメモリ726aが格納するデータを取得する場合、まず、GPU724bが、CPU710bを介さずに、DMAコントローラ716bに対してデータ取得命令を発行する。DMAコントローラ716bは、データ取得命令を受信すると、入出力ブリッジ722bにデータの読み出し命令を発行する。入出力ブリッジ722bは、DMAコントローラ716bが発行したデータの読み出し命令を外部バスにブロードキャストする。プロセッシングシステム700aがこの命令に応答した後の動作は、上述と同様である。
このように、GPU724は、メモリ726に格納されているデータを外部のプロセッシングシステム700に送信したり、外部のプロセッシングシステム700のデータを受信してメモリ726に格納したりすることができる。なお、複数のプロセッシングシステム700間でデータを共有しつつ処理することについて、詳細を後述する。
図5(a)−(c)は、ひとつのブレード600におけるプロセッシングシステム700の接続トポロジを模式的に示す図である。上述したように、ブレード600を構成する基板上に、同一の性能を持つプロセッシングシステム700a〜700dが実装されている。ここで、各プロセッシングシステム700内の入出力ブリッジ722a〜722dは、既知のPCI Expressを用いて実装されていることとする。
図示はしないが、ブレード600には、PCI Expressの動作を制御するシステムコントローラが実装されている。このシステムコントローラは、通信ポート630を介して割当サーバ100から接続関係を指示する命令を受信して、入出力ブリッジ722の接続を制御する。より具体的には、システムコントローラは、受信した命令に基づいて、PCI ExpressにおけるRoot ComplexおよびEndpointを設定した後、リセットをかけることで接続が確立する。接続が確立したプロセッシングシステム700同士はそれぞれメモリに格納したデータも共有し、同じゲームアプリケーションを協働して実行することが可能となる。
図5(a)は、2つのプロセッシングシステム700aおよび700bが接続している場合を示す図であり、図5(b)は、3つのプロセッシングシステム700a、700b、および700cが接続している場合を示す図である。また図5(c)は、4つのプロセッシングシステム700a、700b、700c、および700dが接続している場合を示す図である。各プロセッシングシステム700において入出力ブリッジ722は複数の入出力ポート(730、731、732、および733)備えるため、いずれの場合にしても、プロセッシングシステム700同士はポイント・ツー・ポイント(point-to-point)で接続する。これにより、プロセッシングシステム700はそれぞれ、1対1で通信可能となる。
図6は、複数のブレード600をまたがったプロセッシングシステム700間の接続トポロジを模式的に示す図である。図6は、4つのブレード600a、600b、600c、および600dが接続している場合の例を示している。各ブレード600内の4つのプロセッシングシステム700は、図5(c)に示す場合と同様に、互いにポイント・ツー・ポイントで接続している。
4つのブレード600a、600b、600c、および600dはそれぞれ、各ブレードにおけるいずれかのプロセッシングシステム700が備える入出力ブリッジ722を介して、1対1で通信可能に接続される。例えば、ブレード600aとブレード600dとは、ブレード600a内のプロセッシングシステム700dの入出力ブリッジ722と、ブレード600d内のプロセッシングシステム700の入出力ブリッジ722とを介して、互いにポイント・ツー・ポイントで接続する。プロセッシングシステム700dは、ブレード600a内においてプロセッシングシステム700a、700b、および700cとも接続するが、入出力ブリッジ722は4つの入出力ポート730、731、732、および733備えるため、4つの異なるプロセッシングシステム700と同時に接続することができる。
16個のプロセッシングシステム700a〜700pを、図6に示す構成で接続する場合、任意の異なるプロセッシングシステム700同士は、最大でも3ホップ(hop)、すなわち、相手に到達するまでの間に経由するプロセッシングシステム700の数は最大でも3つとなる。これにより、16個のプロセッシングシステム700a〜700pが協働してひとつのゲームアプリケーションを実行する場合において、データの共有時におけるデータ転送の際のレイテンシを抑えることができる。
一般に、複数のGPUを協働して動作させる場合、GPUの描画処理をフレーム単位や領域単位に分割し、それぞれの描画タスクを複数のGPUに分散する。分散された複数の描画タスクをそれぞれのGPUが処理し、描画結果を1つのGPUに書き戻すのが主流である。これは、GPU間における描画結果の伝送に制約があるからである。
例えば描画結果の伝送に専用バスが用いられる場合、専用バスは画像の伝送に最適化されたディスプレイインタフェースのようなものであるため、帯域保証はされる。しかしながら、バンド幅はある解像度以下の画像を伝送するのに必要な帯域に制限されうる。一方、描画結果の伝送にPCI Expressが用いられることもある。この場合、帯域が大きく専用インタフェースも必要ないが、その他のデータの伝送と混在するために帯域保証が困難となる。
近年のGPUは、グラフィックス描画だけでなく従来CPUが担っていた物理演算やシミュレーションの一部をCPUに代わって並列処理することができるようになってきている。そのため、ゲームなどのリアルタイムアプリケーションでは、物理演算等をCPUとGPUとのそれぞれに適した処理に分割し、並列実行した後でその結果を描画処理に反映させるといったことが可能になってきている。しかしながら、例えばユーザによる入力を物理演算および描画に反映させる場合、フレーム単位での分散処理はレイテンシを増加させる要因になるため適さない。
また1フレームの中で物理演算と描画を完了させる場合、CPUおよびGPUのインタラクションが1フレームの間に複数回発生する。例えば、1フレームを縦2、横2の4分割し、それぞれの領域を4つのGPUが描画する場合を考える。このとき、あるGPUが処理する領域に存在する移動物体の影が、その領域のみならず、別のGPUが処理する領域に映り込むこともありうる。この場合、移動物体の運動をCPUが処理し、その移動物体に起因する影を異なる2つのGPUが描画することになり、CPUおよびGPUのインタラクションが1フレームの間に複数回発生する。
実施の形態に係るプロセッシングシステム700は、CPU710およびGPU724が1チップに統合されたシステムである。さらに、CPU710およびGPU724はメモリ726を共有する。このため、CPU710およびGPU724間が共通のデータを参照する際にメモリコピーが発生せず、レイテンシが短くなる。また、DMAコントローラ716はGPUバス718に接続され、GPU724の制御でデータ転送を実行できるため、入出力ポート732を介して接続される他のプロセッシングシステム700とともに分散処理する場合にも、通信と同期によるレイテンシが抑制できる。これにより、1フレーム内で複数回にわたって異なるGPU724やCPU710間でデータをやりとりする、リアルタイムによる分散処理が実現できる。
図7は、4つのプロセッシングシステム700a、700b、700c、および700dの協働時におけるメモリ726のメモリマップと処理の依存関係とを説明するための図である。図7において、記号「a」は、プロセッシングシステム700aのメモリ726のメモリマップであることを示す。記号Aで示すメモリ領域(以下、「領域A」という。)は、プロセッシングシステム700aのCPU710が、図示しないストレージから読み出したデータを格納する領域を示す。
記号Bで示すメモリ領域(以下、「領域B」という。)は、領域Aのデータを使って、GPU724が演算処理した結果を格納するメモリ領域を示す。記号Cで示す領域(以下、「領域C」という。)は、領域Aのデータと領域Bのデータとの両方を用いて、GPU724が演算処理した結果を格納するメモリ領域を示す。記号Dで示す領域(以下、「領域D」という。)は、領域Cのデータが完全に揃った後に、そのデータを使ってCPU710が演算処理した結果を格納するメモリ領域である。記号FBで示す領域(以下、「領域FB」という。)は、領域Aのデータ、領域のデータ、および領域Dのデータを使って描画した結果を格納するフレームバッファ(Frame Buffer)を示す。
図8(a)−(e)は、4つのプロセッシングシステム700a、700b、700c、および700dの協働時におけるメモリマップの更新の流れの一例を示す図である。図8(a)から図8(e)の順に、メモリマップが更新される。
図8(a)−(e)において、記号「a」、「b」、「c」、および「d」は、それぞれプロセッシングシステム700a、700b、700c、および700dのメモリ726のメモリマップであることを示す。記号「A」、「B」、「C」、「D」、および「FB」で示すメモリ領域は、上述と同様である。
図8は、4つのプロセッシングシステム700a、700b、700c、および700dで分散処理された結果が、プロセッシングシステム700dにまとめられる場合の例を示している。分散処理を実行するゲームプログラムおよびデータは、全てのプロセッシングシステム700からアクセス可能な共有ストレージ(図示せず)に格納されている。プログラムの実行は、それぞれのプロセッシングシステム700が共有ストレージから読み出して実行されるが、巨大なデータはプロセッシングシステム700d読み出した後は、入出力ブリッジ722dを介して他のすべてのプロセッシングシステム700にブロードキャストされる。共有されるデータは、全てのプロセッシングシステム700が同じアドレスにデータを共有するために、あらかじめ確保された領域Aが使われる。
プロセッシングシステム700dは、テクスチャやプリミティブなどプログラムの実行に必要な全てのデータを共有ストレージから読み出す。プロセッシングシステム700dは、読み出したデータを領域Aに格納する。プロセッシングシステム700dは、共有ストレージからのデータの読み出しを継続するとともに、領域Aの内容を低プライオリティーの非圧縮データとして他のプロセッシングシステム700a、700b、および700cにブロードキャストする。これにより、図8(a)に示すように、4つのプロセッシングシステム700a、700b、700c、および700dは、それぞれの領域Aに共通のデータを格納する。
4つのプロセッシングシステム700a、700b、700c、および700dが、それぞれの領域Aに共通のデータを格納すると、プロセッシングシステム700dのCPU710は、プログラム実行開始を伝えるためのメッセージを他のプロセッシングシステム700a、700b、および700cに高プライオリティーで書き込む。プロセッシングシステム700a、700b、および700cではすでにGPU724が実行すべきタスクが実行されており、各GPU724はメッセージ領域(図示せず)をポーリング(Polling)している。
各GPU724がメッセージを検出すると、それぞれのメモリ726中の領域Aに格納されたデータを使い、各メモリ726中の領域Bに結果を出力する。図8(a)は、4つのプロセッシングシステム700a、700b、700c、および700dのそれぞれが、演算結果をそれぞれの領域Bに格納したことを示す。
各GPU724が領域Bに結果を出力する時点で、各GPU724にはすでに次のコマンドが投入されている。GPU724に投入された次のコマンドは、領域Bの内容を他のプロセッシングシステム700におけるメモリ726中の領域Bにブロードキャストするための命令である。各DMAコントローラ716は、GPU724によって発行されたDMA命令にしたがって、領域Bの内容は、他のプロセッシングシステム700にブロードキャストする。これにより、各プロセッシングシステム700は、他のプロセッシングシステム700との間で、自身が処理した領域Bのデータを共有することができる。図8(b)は、各プロセッシングシステム700が領域Bのデータを共有した後、その時点で未処理であったデータをさらに処理した結果を示している。
ここで実施の形態に係るDMAコントローラ716は、メモリ726が格納するデータの圧縮、入出力ブリッジ722が外部のプロセッシングシステム700から転送されたデータから受信したデータの伸張、およびGPU724またはCPU710が発行した命令の優先順位の制御を実行する。より具体的には、DMAコントローラ716は、受信した書き込み命令に圧縮オプションが設定された場合、メモリ726から読み出したデータを図示しない圧縮エンジンに転送する。圧縮エンジンで発生するレイテンシを隠ぺいするため、DMAコントローラ716は、他のコマンドインタフェースに入力されたリクエストを並列で処理する。
DMAコントローラ716は、入出力ブリッジ722から圧縮データを受信すると、受信したデータを図示しない伸張エンジンに転送する。伸張エンジンは、伸張後のデータをメモリ726に書き込む。DMAコントローラ716は、入出力ブリッジ722から受け取った読み込み/書き込み命令の宛先がローカルノードの場合、コマンドをGPUバス718に流す。宛先がローカルノードではない場合、DMAコントローラ716は、その命令をエラーとして処理するか、宛先ノードに接続される入出力ポートにルーティング(Routing)する。
このように、異なるプロセッシングシステム700間でのデータ転送時にデータを圧縮することで、転送効率を高めることができる。
図8の説明に戻る。上述したとおり、領域Cは、領域Aのデータと領域Bのデータとの両方を用いて、GPU724が演算処理した結果を格納するメモリ領域である。領域Cに格納するデータを生成するGPUタスクは、領域Bに格納されたデータをポーリングしており、演算に必要なデータがそろうまで待機する。図8(b)は、領域Cに格納するデータを生成するためのデータがそろったため、各プロセッシングシステム700において領域Cのデータが生成され、格納されていることを示す。図8(c)は、各プロセッシングシステム700において生成された領域Cのデータが互いにブロードキャストされ、全てのプロセッシングシステム700が領域Cのデータを共有した場合を示している。
ここで、他のプロセッシングシステム700から領域Bに書き込まれるデータは、DMAコントローラ716からGPUバス718を経由して書き込まれる。一方、領域Cに書き込むデータは、CPUバス720を経由して書き込まれる。また、他のプロセッシングシステム700にデータを書き込む場合もCPUバス720を経由してメモリに書き込むように、DMAコントローラ716に命令を発行してもよい。
プロセッシングシステム700dのCPU710は領域Cの書き込み完了割り込みを受け取ると、図8(c)に示すように、領域Cのデータを使って領域Dに格納するデータを生成する。なお、領域Cの書き込みはCPUバス720を経由して行われるため、CPU710は領域Cの内容をキャッシュしている場合でも、外部からの書き込みによってキャッシュの内容が更新される。プロセッシングシステム700dのCPU710は、領域Dにデータを格納すると、そのデータを他のプロセッシングシステム700にブロードキャストする。図8(d)は、全てのプロセッシングシステム700で領域Dのデータを共有した場合を示している。
各プロセッシングシステム700におけるGPU724が処理する描画タスクは、領域Cおよび領域Dの書き込み完了をポーリングしており、データがそろった時点で、フレーム生成処理を開始する。各GPU724の描画結果は、それぞれの領域FBに書き込まれる。図8(d)は、各GPU724の描画結果は、それぞれの領域FBに書き込まれた場合を示している。各GPU724の描画結果は、プロセッシングシステム700dの領域FBにブロードキャストされ、図8(e)で示すように、プロセッシングシステム700dの領域FB中にコピーされる。領域FBのデータがそろうと、プロセッシングシステム700dはディスプレイ出力を実行する。
このように、実施の形態に係るブレードサーバ200は、単体で最大ひとつのゲームアプリケーションを実行可能なプロセッシングシステム700を複数有し、複数のプロセッシングシステム700を協働してひとつのゲームアプリケーションを実行することができる。この際、各プロセッシングシステム700中のGPU724は、最終処理結果のみならず、中間データも互いに密にやりとりすることができる。これにより、ゲームアプリケーションをひとつのプロセッシングシステム700で実行する場合よりも、より演算量の多い処理を実行でき、より緻密で高精細な画像を提供することができる。
入出力ブリッジ722としてPCE Express 4.0(Gen4)を採用する場合において、16レーンを4ポートに分割して4[lane/port]としたとする。このとき、1ポートあたりのバンド幅は8GB/秒となり、実効バンド幅は、約5GB/秒となる。4ポートからから同時にデータをやり取りする場合のピーク実効バンド幅は、TX/RXそれぞれ20GB/秒となる。非可逆圧縮を組み合わせた場合、内部バンド幅はその数倍となる。
ここで、5GB/秒のバンド幅で1ミリ秒の間に送ることができるデータ量は、5MBである。32ビットの頂点データに換算すると、1ミリ秒あたり125万頂点となる。ゆえに、32bit/pixelのテクスチャデータが約1/10に圧縮される場合、1ミリ秒あたり50MB、すなわち縦1024ピクセル、横1024ピクセルの画像のテクスチャ12.5枚分のデータが転送できる。
以上説明したように、実施の形態に係るブレードサーバ200によれば、各プロセッシングシステム700がポイント・ツー・ポイントで接続され、DMAコントローラ716内で処理命令のプライオリティー制御と、内部バスであるGPUバス718による帯域保証によって、システム全体として帯域保証することが可能とある。例えばファイルシステムから読み出した巨大なデータがバックグラウンドでコピーされている間に、各GPU724が決められたサイズのリアルタイムデータを処理することによって、1フレーム内で完了させなければならない処理が遅延することを抑制できる。
各プロセッシングシステム700において、CPU710およびGPU724は、それぞれDMAコントローラ716を介したメモリコピーが実施できる等により、プロセッシングシステム700間でのデータ転送のレイテンシを低減できる。これにより、従来では困難であった1フレーム内で複数回にわたってデータをやりとりしながら、CPU710およびGPU724による処理が混在した分散処理が可能となる。
以上、複数のプロセッシングシステム700が協働してひとつのゲームアプリケーションを実行する場合について説明した。次に、ひとつのゲームアプリケーションの実行を担当するプロセッシングシステムの割当処理について説明する。
クラウドゲーミングシステムにおいて、高クオリティーかつ高負荷のゲームを提供する場合、ひとつのプロセッシングシステムで複数のゲームを動かすことは難しい。このため、図1に示すアプリケーション提供システム10のように、複数のプロセッシングシステム700を備えるブレードサーバ200をさらに複数用意する。しかしながら、システムにかかる負荷が最も多いピーク時に対応できるようにプロセッシングシステム700を用意すると、時間帯によっては負荷が減少し、稼働しないプロセッシングシステム700が増える。アプリケーション提供システム10をゲーム提供システムとして運用する場合、レイテンシを低く抑える必要があり、時間帯の異なる複数の地域での負荷分散を実現することは難しい
そこで実施の形態に係る割当サーバ100は、ゲーム提供サーバであるブレードサーバ200の負荷をもとに、ひとつのゲームアプリケーションを実行するために割り当てるプロセッシングシステム700の数を設定する。より具体的に、割当サーバ100は、ブレードサーバ200の負荷が大きい場合は、小さい場合と比較して、ひとつのゲームアプリケーションを実行するために割り当てるプロセッシングシステム700の数を小さく設定する。
割当サーバ100はまた、ブレードサーバ200の負荷が小さい場合は、大きい場合と比較して、ゲームアプリケーションを実行するために割り当てたプロセッシングシステム700におけるGPU724およびCPU710の動作クロックを大きくしてもよい。割当サーバ100は、ブレードサーバ200の負荷に応じて、例えば以下のようにプロセッシングシステム700の稼働状態を切り換える。
状態0:スタンバイ
状態1:1つのプロセッシングシステム700を通常クロックで使用
状態2:1つのプロセッシングシステム700をクロックアップして使用
状態3:4つのプロセッシングシステム700をクロックアップして使用
状態4:16のプロセッシングシステム700をクロックアップして使用
割当サーバ100は、ブレードサーバ200の負荷が小さい場合はプロセッシングシステム700の稼働状態を状態4とし、負荷が増大するにつれて、状態3、状態2、状態1へと稼働状態を変化させる。これにより、ブレードサーバ200の負荷が小さいときは、緻密で高精細な画像で、クライアント装置500にゲームを提供することができる。ブレードサーバ200の負荷が増えても、専用のハードウェアであるゲームコンソール上で実行された場合と同等の画質を維持して、クライアント装置500にゲームを提供することができる。なお、上記の状態は一例であり、この他にも、プロセッシングシステム700数とクロックとの異なる組み合わせの状態を定義することもできる。
ここで、「ブレードサーバ200の負荷」とは、割当サーバ100がひとつのゲームアプリケーションを実行させるプロセッシングシステム700の数を決定するために利用する、プロセッシングシステム700の割り当て指標である。具体的には、ブレードサーバ200の消費電力、ブレードサーバ200の排熱量、およびブレードサーバ200がゲームアプリケーションを提供中のクライアント装置500またはユーザの数の、少なくともいずれかひとつである。ブレードサーバ200の消費電力や排熱量は、図示しない電力計や温度センサを用いて取得することができる。割当サーバ100は、ブレードサーバ200の消費電力が大きい場合、排熱量が多い場合、あるいはゲームアプリケーションを提供中のクライアント装置500またはユーザの数が多い場合は、そうでない場合と比較して、ブレードサーバ200の負荷が大きいと判断する。
割当サーバ100がプロセッシングシステム700の稼働状態をある状態としている際に、例えばユーザがゲームを終了したり、負荷の軽いアプリケーションに切り換えたりすることにより、ブレードサーバ200の負荷が変動することも起こりうる。そこで割当サーバ100は、複数のクライアント装置500にゲームアプリケーションを提供中に、ブレードサーバ200の負荷が増加または減少した場合、提供を継続中のゲームアプリケーションにおいてシーンが切り替わることを契機として、そのゲームアプリケーションを実行するために割り当てるプロセッシングシステム700の数を変更してもよい。
ここで「ゲームアプリケーションにおけるシーンの切り替わり」とは、例えばゲームの進行によってステージが切り替わったり、ゲームの映像を構成するための仮想の視点の位置を変更したりすることで、フレーム全体を再描画するタイミングを意味する。割当サーバ100がプロセッシングシステム700の稼働状態を変更すると、提供するゲームアプリケーションの画質も変更される。しかしながら、シーンの切り替わり時に稼働状態を変更することで、画質の変更に伴ってユーザが感じる違和感を抑制しつつ、アプリケーション提供システム10のリソースを有効活用することが可能となる。
上述したとおり、1つのプロセッシングシステム700を通常クロックで使用する状態1でゲームアプリケーションを提供する場合であっても、専用のハードウェアであるゲームコンソール上で実行する場合と同等の画質をクライアント装置500に提供することができる。したがって、その他の稼働状態でゲームアプリケーションを提供する場合は、専用のハードウェアであるゲームコンソール上で実行する場合と比較して、高い画質でゲームアプリケーションを提供することができる。
そこで割当サーバ100は、クライアント装置500に提供中のゲームアプリケーションを実行するために複数のプロセッシングシステム700を割り当てている場合、そのクライアント装置500に対し、ゲームアプリケーションを高品質で提供していることを通知してもよい。これは例えばクライアント装置500に提供する映像の一部に「高画質モード」を示すメッセージを表示したり、あるいはゲームの提供開始時に音声で伝えたりすることで実現できる。これにより、ユーザは自宅のゲームコンソールで実行する場合よりも高い画質でゲームをプレイしていることが認識できるため、アプリケーション提供システム10を利用するためのインセンティブとなり得る。
図9は、実施の形態に係る割当サーバ100が実行するプロセッシングシステム700の割当数の変更処理の流れを示すフローチャートである。
割当サーバ100は、アプリケーション提供システム10におけるブレードサーバ200の負荷を確認する(S2)。ブレードサーバ200の負荷が増加している場合(S4のY)、割当サーバ100は、ひとつのゲームアプリケーションの実行に割り当てるプロセッシングシステム700の割当数の設定を減少する(S6)。
ブレードサーバ200の負荷が増加しておらず(S4のN)、ブレードサーバ200の負荷が減少している場合)(S8のY)、割当サーバ100は、ひとつのゲームアプリケーションの実行に割り当てるプロセッシングシステム700の割当数の設定を増加する(S10)。割当サーバ100がプロセッシングシステム700の割当数の設定を変更した後、実行中のゲームアプリケーションにおいてシーンチェンジがあった場合(S12のY)、割当サーバ100は割当数の設定を反映させる(S14)。実行中のゲームアプリケーションにおいてシーンチェンジがない間は(S12のN)、割当サーバ100はシーンチェンジがあるまで割当数の設定反映を待機する。
割当サーバ100が当数の設定反映をするか、ブレードサーバ200の負荷が増加も減少もしない場合(S8のN)、本フローチャートにおける処理は終了する。
以上説明したように、実施の形態に係る割当サーバ100によれば、ゲーム提供サーバであるブレードサーバ200の負荷に応じて、アプリケーション提供システム10のリソースを適応的に割り当てることができる。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
[変形例]
上記の説明では、割当サーバ100は、ブレードサーバ200の負荷に応じてひとつのゲームアプリケーションの実行のために割り当てるプロセッシングシステム700の割当数を変更したり、プロセッシングシステム700の動作クロックを変更したりする場合について説明した。割当サーバ100は、ブレードサーバ200の負荷に替えて、あるいはこれに加えて、ゲームアプリケーションを提供するクライアント装置500に応じて割当数やクロック数を変更してもよい。
例えば、実施の形態に係るアプリケーション提供システム10を利用するために、ユーザはアプリケーション提供システム10にユーザ登録をする場合において、ユーザはアプリケーション提供システム10の利用態様に応じた料金を支払う場合を考える。例えば、ユーザは、より高い料金を支払うことにより、通常のユーザよりも優先的にプロセッシングシステム700が割り当てられる「プレミアムユーザ」としてユーザ登録できる。割当サーバ100は、あるクライアント装置500を利用するユーザがプレミアムユーザである場合、ブレードサーバ200の負荷が大きいときであっても、そのクライアント装置500にゲームアプリケーションを提供するときは、状態2またはそれよりもよい稼働状態を割り当てる。これにより、特定のユーザには、常に専用のハードウェアであるゲームコンソール上で実行する場合よりもよい画質でゲームアプリケーションを提供することができる。
なお、本実施の形態に係る発明は、以下に記載する項目によって特定されてもよい。
[項目1−1]
プロセッシングシステムであって、
映像を生成するGPU(Graphics Processing Unit)と、
データを格納するメモリと、
前記GPUと前記メモリとを接続するデータバスと、
前記データバスと接続するDMA(Direct Memory Access)コントローラと、
前記データバスと接続するとともに、前記プロセッシングシステムと協働する外部のプロセッシングシステムとの間でデータの送受信をするための外部バスとも接続する入出力ブリッジと、
前記GPUとの間で前記メモリが格納するデータを共有するCPU(Central Processing Unit)とを備え、
前記GPUは、前記CPUを介さずに、前記DMAコントローラに対して前記メモリが格納するデータのデータ転送命令を発行し、
前記DMAコントローラは、前記データ転送命令を受信すると、前記入出力ブリッジに、前記外部のプロセッシングシステムへ前記メモリが格納するデータを転送させることを特徴とするプロセッシングシステム。
[項目1−2]
前記GPUは、前記CPUを介さずに、前記DMAコントローラに対してデータ取得命令を発行し、
前記DMAコントローラは、前記データ取得命令を受信すると、前記入出力ブリッジにデータの読み出し命令を発行し、
前記入出力ブリッジは、前記DMAコントローラが発行したデータの読み出し命令を前記外部バスにブロードキャストするとともに、前記読み出し命令に応答した前記外部のプロセッシングシステムから転送されたデータを受信し、
前記DMAコントローラは、前記入出力ブリッジが受信したデータを前記メモリに書き込むことを特徴とする項目1−1に記載のプロセッシングシステム。
[項目1−3]
前記DMAコントローラは、前記メモリが格納するデータの圧縮、前記入出力ブリッジが前記外部のプロセッシングシステムから転送されたデータから受信したデータの伸張の制御を実行することを特徴とする項目1−2に記載のプロセッシングシステム。
[項目1−4]
項目1−1から項目1−3のいずれかに記載のプロセッシングシステムを2以上備えるマルチプロセッシングシステムであって、
各プロセッシングシステムにおける入出力ブリッジはそれぞれ、他のプロセッシングシステムとの間でデータを送受信するための2以上の入出力ポートを有し、
前記プロセッシングシステムはそれぞれ、各ゲームプロセッシングシステム中の入出力ブリッジが有する入出力ポートを介して、1対1で通信可能に接続されていることを特徴とするマルチプロセッシングシステム。
[項目1−5]
各プロセッシングシステムにおけるGPUまたはCPUが処理してそれぞれのメモリにデータを格納すると、当該データを処理したGPUまたはCPUは、DMAコントローラに対してデータ転送命令を発行し、
前記データ転送命令を取得したDMAコントローラは、前記メモリに格納されたデータを、入出力ブリッジを介して各プロセッシングシステムにブロードキャストすることを特徴とする項目1−4に記載のマルチプロセッシングシステム。
[項目1−6]
項目1−1から項目1−3のいずれかに記載のプロセッシングシステムを同一基板上に複数個配置したブレードをさらに複数備え、
各ブレードにおける複数のゲームプロセッシングシステムはそれぞれ、入出力ブリッジが有する入出力ポートを介して1対1で通信可能に接続されており、
前記複数のブレードはそれぞれ、各ブレードにおけるいずれかのゲームプロセッシングシステムが備える入出力ブリッジの入出力ポートを介して、1対1で通信可能に接続されていることを特徴とする項目1−4または項目1−5に記載のマルチプロセッシングシステム。
[項目2−1]
ネットワークを介して複数のクライアント装置と接続する割当サーバと、
前記割当サーバによって割り当てられたクライアント装置に提供するゲームアプリケーションを実行するゲーム提供サーバとを備え、
前記ゲーム提供サーバは、単体で最大ひとつのゲームアプリケーションを実行可能なゲームプロセッシングシステムを複数有するマルチプロセッシングシステムであり、
前記割当サーバは、前記ゲーム提供サーバの負荷をもとに、前記ゲーム提供サーバにおいてひとつのゲームアプリケーションを実行するために割り当てるゲームプロセッシングシステムの数を設定することを特徴とするゲーム提供システム。
[項目2−2]
前記割当サーバは、前記ゲーム提供サーバの負荷が大きい場合は、小さい場合と比較して、前記ゲーム提供サーバにおいてひとつのゲームアプリケーションを実行するために割り当てるゲームプロセッシングシステムの数を小さく設定することを特徴とする項目2−1に記載のゲーム提供システム。
[項目2−3]
前記ゲーム提供サーバにおけるゲームプロセッシングシステムはそれぞれ、
前記ゲームアプリケーションの映像を生成するGPUと、
前記GPUが生成したデータを格納するメモリと、
前記GPUとの間で前記メモリが格納するデータを共有するCPUと、
他のゲームプロセッシングシステムとの間で前記メモリが格納するデータを送受信するDMAコントローラ(Direct Memory Access System)とを備え、
前記割当サーバは、前記ゲーム提供サーバの負荷が小さい場合は、大きい場合と比較して、前記GPUおよび前記CPUの動作クロックを大きくすることを特徴とする項目2−1または項目2−2に記載のゲーム提供システム。
[項目2−4]
前記ゲーム提供サーバの負荷は、前記ゲーム提供サーバの消費電力、前記ゲーム提供サーバの排熱量、および前記ゲーム提供サーバがゲームアプリケーションを提供中のクライアント装置の数の、少なくともいずれかひとつであることを特徴とする項目2−1から項目2−3のいずれかに記載のゲーム提供システム。
[項目2−5]
前記割当サーバは、複数のクライアント装置にゲームアプリケーションを提供中に前記ゲーム提供サーバの負荷が増加または減少した場合、提供を継続中のゲームアプリケーションにおいてシーンが切り替わることを契機として、当該ゲームアプリケーションを実行するために割り当てるゲームプロセッシングシステムの数を増加または減少させることを特徴とする項目2−1から項目2−4のいずれかに記載のゲーム提供システム。
[項目2−6]
前記割当サーバは、クライアント装置に提供中のゲームアプリケーションを実行するために複数のゲームプロセッシングシステムを割り当てている場合、当該クライアント装置に対し、ゲームアプリケーションを高品質で提供していることを通知することを特徴とする項目2−1から項目2−5のいずれかに記載のゲーム提供システム。
10 アプリケーション提供システム、 12 ブリッジ、 50 テクスチャ、 100 割当サーバ、 200 ブレードサーバ、 300 ログインサーバ、 400 ネットワーク、 500 クライアント装置、 600 ブレード、 610 電源ポート、 620 入出力ポート、 630 通信ポート、 700 プロセッシングシステム、 710 CPU、 712 ブリッジ、 714 メモリ制御部、 716 DMAコントローラ、 718 GPUバス、 720 CPUバス、 722 入出力ブリッジ、 724 GPU、 726 メモリ、 730,732 入出力ポート。

Claims (6)

  1. プロセッシングシステムであって、
    映像を生成するGPU(Graphics Processing Unit)と、
    データを格納するメモリと、
    前記GPUと前記メモリとを接続するGPUデータバスと、
    前記GPUデータバスを介して前記GPUと接続され、前記GPUとの間で前記メモリが格納するデータを共有するCPU(Central Processing Unit)と、
    前記CPUと前記メモリとを接続するCPUデータバスと、
    前記GPUデータバスと接続するDMA(Direct Memory Access)コントローラと、
    前記GPUデータバスと接続するとともに、前記プロセッシングシステムと協働する外部のプロセッシングシステムとの間でデータの送受信をするための外部バスとも接続する入出力ブリッジとを備え、
    前記GPUは、前記CPUを介さずに、前記DMAコントローラに対して前記メモリが格納する前記GPUによる処理の結果であるGPUデータのデータ転送命令を発行し、
    前記DMAコントローラは、前記GPUデータのデータ転送命令を受信すると、前記入出力ブリッジに、前記外部のプロセッシングシステムへ前記メモリが格納する前記GPUデータを前記GPUデータバスを経由して転送させ、
    前記CPUは、前記DMAコントローラに対して前記メモリが格納する前記CPUによる処理の結果であるCPUデータのデータ転送命令を発行し、
    前記DMAコントローラは、前記CPUデータのデータ転送命令を受信すると、前記入出力ブリッジに、前記外部のプロセッシングシステムへ前記メモリが格納する前記CPUデータを転送させることを特徴とするプロセッシングシステム。
  2. 前記GPUは、前記CPUを介さずに、前記DMAコントローラに対してデータ取得命令を発行し、
    前記DMAコントローラは、前記データ取得命令を受信すると、前記入出力ブリッジにデータの読み出し命令を発行し、
    前記入出力ブリッジは、前記DMAコントローラが発行したデータの読み出し命令を前記外部バスにブロードキャストするとともに、前記読み出し命令に応答した前記外部のプロセッシングシステムから転送されたデータを受信し、
    前記DMAコントローラは、前記入出力ブリッジが受信したデータを前記メモリに書き込むことを特徴とする請求項1に記載のプロセッシングシステム。
  3. 前記DMAコントローラは、前記メモリが格納するデータの圧縮、前記入出力ブリッジが前記外部のプロセッシングシステムから転送されたデータから受信したデータの伸張の制御を実行することを特徴とする請求項2に記載のプロセッシングシステム。
  4. 請求項1から3のいずれかに記載のプロセッシングシステムを2以上備えるマルチプロセッシングシステムであって、
    各プロセッシングシステムにおける入出力ブリッジはそれぞれ、他のプロセッシングシステムとの間でデータを送受信するための2以上の入出力ポートを有し、
    前記プロセッシングシステムはそれぞれ、各ゲームプロセッシングシステム中の入出力ブリッジが有する入出力ポートを介して、1対1で通信可能に接続されていることを特徴とするマルチプロセッシングシステム。
  5. 各プロセッシングシステムにおけるGPUまたはCPUが処理してそれぞれのメモリにデータを格納すると、当該データを処理したGPUまたはCPUは、DMAコントローラに対してデータ転送命令を発行し、
    前記データ転送命令を取得したDMAコントローラは、前記メモリに格納されたデータを、入出力ブリッジを介して各プロセッシングシステムにブロードキャストすることを特徴とする請求項4に記載のマルチプロセッシングシステム。
  6. 請求項1から3のいずれかに記載のプロセッシングシステムを同一基板上に複数個配置したブレードをさらに複数備え、
    各ブレードにおける複数のゲームプロセッシングシステムはそれぞれ、入出力ブリッジが有する入出力ポートを介して1対1で通信可能に接続されており、
    前記複数のブレードはそれぞれ、各ブレードにおけるいずれかのゲームプロセッシングシステムが備える入出力ブリッジの入出力ポートを介して、1対1で通信可能に接続されていることを特徴とする請求項4または5に記載のマルチプロセッシングシステム。
JP2014075605A 2014-04-01 2014-04-01 プロセッシングシステムおよびマルチプロセッシングシステム Active JP6412708B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014075605A JP6412708B2 (ja) 2014-04-01 2014-04-01 プロセッシングシステムおよびマルチプロセッシングシステム
US14/663,656 US10579571B2 (en) 2014-04-01 2015-03-20 Processing system and multiprocessing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014075605A JP6412708B2 (ja) 2014-04-01 2014-04-01 プロセッシングシステムおよびマルチプロセッシングシステム

Publications (3)

Publication Number Publication Date
JP2015197805A JP2015197805A (ja) 2015-11-09
JP2015197805A5 JP2015197805A5 (ja) 2017-03-16
JP6412708B2 true JP6412708B2 (ja) 2018-10-24

Family

ID=54190595

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014075605A Active JP6412708B2 (ja) 2014-04-01 2014-04-01 プロセッシングシステムおよびマルチプロセッシングシステム

Country Status (2)

Country Link
US (1) US10579571B2 (ja)
JP (1) JP6412708B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10449448B2 (en) * 2015-10-15 2019-10-22 Sony Interactive Entertainment America Llc Method for improving game streaming performance in the cloud
US10462008B2 (en) * 2016-04-29 2019-10-29 Microsoft Technology Licensing, Llc Cart mode provisioning of shared computing devices
KR101897704B1 (ko) * 2017-09-25 2018-10-29 넷마블 주식회사 게임 서비스 제공 장치 및 방법
CN108287806B (zh) * 2018-01-25 2021-04-06 曙光云计算集团有限公司 一种云服务器系统
JP6913312B2 (ja) * 2018-02-28 2021-08-04 日本電信電話株式会社 データ処理装置及びデータ転送方法
US11890538B2 (en) 2019-01-30 2024-02-06 Sony Interactive Entertainment LLC Scalable game console CPU / GPU design for home console and cloud gaming
US11074666B2 (en) * 2019-01-30 2021-07-27 Sony Interactive Entertainment LLC Scalable game console CPU/GPU design for home console and cloud gaming
US11321259B2 (en) * 2020-02-14 2022-05-03 Sony Interactive Entertainment Inc. Network architecture providing high speed storage access through a PCI express fabric between a compute node and a storage server
WO2021200492A1 (ja) * 2020-03-31 2021-10-07 株式会社ソニー・インタラクティブエンタテインメント 送信装置、送信方法及びプログラム

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892932A (en) * 1995-11-21 1999-04-06 Fore Systems, Inc. Reprogrammable switching apparatus and method
KR100307878B1 (ko) 1995-12-01 2001-10-19 이리마지리 쇼우이치로 화상처리장치
US6015348A (en) 1996-10-18 2000-01-18 Starwave Corporation Scalable game server architecture
JP2000042247A (ja) 1998-07-30 2000-02-15 Namco Ltd ゲームシステム、ゲームデータ配信装置、ゲーム装置、リアルタイム画像表示システムおよび情報記録媒体
US8165155B2 (en) * 2004-07-01 2012-04-24 Broadcom Corporation Method and system for a thin client and blade architecture
US20020026321A1 (en) 1999-02-26 2002-02-28 Sadeg M. Faris Internet-based system and method for fairly and securely enabling timed-constrained competition using globally time-sychronized client subsystems and information servers having microsecond client-event resolution
US7916147B2 (en) 2002-03-01 2011-03-29 T5 Labs Ltd. Centralised interactive graphical application server
GB0302926D0 (en) 2003-02-08 2003-03-12 Grex Games Ltd System architecture and engine for massively multi-user operation
US7813562B2 (en) 2004-09-27 2010-10-12 Intel Corporation Low-latency remote display rendering using tile-based rendering systems
US20070004501A1 (en) 2005-06-29 2007-01-04 Christopher Brewer Multi-core processing in a wagering game machine
US8172684B2 (en) 2005-12-23 2012-05-08 Wms Gaming Inc. Networks for use in gaming
US8968077B2 (en) 2006-04-13 2015-03-03 Idt Methods and systems for interfacing with a third-party application
KR100829561B1 (ko) 2006-08-24 2008-05-15 삼성전자주식회사 3차원 그래픽 데이터 렌더링 방법 및 장치
US8838674B2 (en) * 2006-10-26 2014-09-16 International Business Machines Corporation Plug-in accelerator
JP5072774B2 (ja) 2008-08-25 2012-11-14 キヤノン株式会社 画像処理装置、方法、及び、プログラム
JP2010061283A (ja) 2008-09-02 2010-03-18 Fujitsu Ltd ロードバランサ設定プログラム,ロードバランサ設定方法及びロードバランサ設定装置
US8073990B1 (en) * 2008-09-23 2011-12-06 Teradici Corporation System and method for transferring updates from virtual frame buffers
KR101127598B1 (ko) * 2008-12-10 2012-03-23 한국전자통신연구원 센서네트워크에서 다중 안테나 정합과 dma 기반 데이터 전달 방법 및 이를 위한 싱크노드
US8151199B2 (en) 2009-02-09 2012-04-03 AltEgo, LLC Computational delivery system for avatar and background game content
WO2010134482A1 (ja) 2009-05-22 2010-11-25 株式会社メガチップス 動画像再生システムおよび動画像再生方法
US8208937B2 (en) 2009-06-12 2012-06-26 Futurewei Technologies, Inc. System and method for uplink inter cell interference coordination in a wireless access system
WO2011041516A1 (en) 2009-09-30 2011-04-07 Zynga Game Network Inc. Apparatuses, methods and systems for an online game manager
JP5137932B2 (ja) * 2009-11-17 2013-02-06 株式会社ソニー・コンピュータエンタテインメント 通信システム、端末装置、通信処理方法、通信処理プログラム、通信処理プログラムが記憶された記憶媒体、拡張機器
US20120028712A1 (en) * 2010-07-30 2012-02-02 Britesmart Llc Distributed cloud gaming method and system where interactivity and resources are securely shared among multiple users and networks
US8435121B1 (en) 2010-11-05 2013-05-07 Amazon Technologies, Inc. Providing remote access to games designed for a single-machine experience
US8830245B2 (en) 2010-12-14 2014-09-09 Amazon Technologies, Inc. Load balancing between general purpose processors and graphics processors
JP5117611B2 (ja) 2011-03-18 2013-01-16 株式会社コナミデジタルエンタテインメント ゲーム装置、ゲーム制御方法、プログラム及びゲーム管理装置
US9959008B2 (en) * 2011-04-13 2018-05-01 Razer (Asia-Pacific) Pte Ltd. Computer peripheral display and communication device providing an adjunct 3D user interface
CN102232218B (zh) * 2011-06-24 2013-04-24 华为技术有限公司 计算机子系统和计算机系统
US10086292B2 (en) 2011-08-02 2018-10-02 Zynga Inc. Low-friction response in a social game
JP5331192B2 (ja) 2011-11-07 2013-10-30 株式会社スクウェア・エニックス・ホールディングス 描画サーバ、センタサーバ、符号化装置、制御方法、符号化方法、プログラム、及び記録媒体
JP5624074B2 (ja) 2012-03-30 2014-11-12 株式会社コナミデジタルエンタテインメント ゲームシステム、ならびに、プログラム
US9729614B2 (en) 2012-10-01 2017-08-08 Datacastle Corporation Resilient data node for improving distributed data management and bandwidth utilization
US9071609B2 (en) 2012-10-08 2015-06-30 Google Technology Holdings LLC Methods and apparatus for performing dynamic load balancing of processing resources
US9245496B2 (en) * 2012-12-21 2016-01-26 Qualcomm Incorporated Multi-mode memory access techniques for performing graphics processing unit-based memory transfer operations
US9734598B2 (en) * 2013-01-15 2017-08-15 Microsoft Technology Licensing, Llc Engine for streaming virtual textures
US9478000B2 (en) * 2013-09-27 2016-10-25 Intel Corporation Sharing non-page aligned memory
US9336134B2 (en) * 2013-11-12 2016-05-10 Skyera, Llc Apparatus and method for accessing a non-volatile memory blade using multiple controllers in a non-volatile memory based storage device
US9348742B1 (en) 2013-12-18 2016-05-24 Amazon Technologies, Inc. Detecting code alteration based on memory allocation
KR20150085376A (ko) 2014-01-15 2015-07-23 한국전자통신연구원 클라우드 게이밍 환경에서 렌더링 서비스를 위한 부하 분산 시스템 및 이의 부하 분산 방법

Also Published As

Publication number Publication date
US10579571B2 (en) 2020-03-03
JP2015197805A (ja) 2015-11-09
US20150278145A1 (en) 2015-10-01

Similar Documents

Publication Publication Date Title
JP6412708B2 (ja) プロセッシングシステムおよびマルチプロセッシングシステム
CN107690622B9 (zh) 实现硬件加速处理的方法、设备和系统
JP6373620B2 (ja) ゲーム提供システム
JP5088366B2 (ja) 仮想計算機制御プログラム、仮想計算機制御システムおよび仮想計算機移動方法
US20160364906A1 (en) Adaptive load balancing in software emulation of gpu hardware
US9244881B2 (en) Facilitating, at least in part, by circuitry, accessing of at least one controller command interface
US20120149464A1 (en) Load balancing between general purpose processors and graphics processors
JP2002189629A (ja) 機能拡張型メモリコントローラを備えるグラフィックス処理システム
JP4443474B2 (ja) コマンド転送制御装置およびコマンド転送制御方法
JP2007316859A (ja) マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法
TW201145172A (en) Sharing resources between a CPU and GPU
CN109729106A (zh) 处理计算任务的方法、系统和计算机程序产品
JP2015195977A (ja) ゲーム提供サーバ
CN106201259A (zh) 一种虚拟现实系统中分享全景影像的方法和装置
JP6539278B2 (ja) マルチモード・ゲーミング・サーバー
CN110442389A (zh) 一种多桌面环境共享使用gpu的方法
CN117058288A (zh) 图形处理器及方法、多核图形处理系统、电子装置及设备
CN104750614B (zh) 用于管理存储器的方法和装置
JP3688618B2 (ja) データ処理システム及びデータ処理方法、コンピュータプログラム、記録媒体
JP4011082B2 (ja) 情報処理装置、グラフィックプロセッサ、制御用プロセッサおよび情報処理方法
CN116383127B (zh) 节点间通信方法、装置、电子设备及存储介质
WO2021187476A1 (ja) クライアント、i/oサーバ、方法、および記録媒体
JP4905255B2 (ja) Ioアダプタとそのデータ転送方法
CN115335851A (zh) 多租户图形处理单元的动态透明重新配置
WO2006038350A1 (ja) 情報処理装置、データ伝送方法および電子機器

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170210

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180313

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180703

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180828

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: 20180911

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181001

R150 Certificate of patent or registration of utility model

Ref document number: 6412708

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250