(58)【調査した分野】(Int.Cl.,DB名)
前記QoS基準は、優先度に基づく加速化と複数のクライアントパラメータとを含み、前記複数のクライアントパラメータは、クライアントデバイスの解像度、クライアントデバイスの位置、クライアントアプリケーションタイプ、及び、クライアント復号化機能のセットを含む、請求項12に記載のサーバ。
【発明を実施するための形態】
【0014】
リアルタイムアプリケーションストリーミングに、非ネイティブ命令セットアーキテクチャにコンパイルされたアプリケーションバイナリのリアルタイムアプリケーションストリーミングを組み合わせることは、ネットワークのレイテンシーと実行のオーバヘッドとによって実装が難しい。ここで説明する、アプリケーションのサービス品質(QoS)基準ベースのサーバ側のバイナリトランスレーション実行は、分散されたトランスレーション及び実行を利用して、仮想化された実行環境又はネイティブの実行環境のいずれかで、複数のサーバに実行される。トランスレーションされたアプリケーションは、出力表示データを生成するよう実行され、出力表示データは、ビデオストリーミングに適したメディアフォーマットに符号化され、ビデオストリームは、ネットワークを介してクライアントデバイスに配信される。
【0015】
一実施形態では、1以上のグラフィックプロセッサが、アプリケーション出力のレンダリングを加速することにより、サーバのセントラルプロセッサを補助する。或る実施形態は、QoS基準を利用して、加速されたグラフィックレンダリングを利用するアプリケーション又はアプリケーションタイプを決定する。一実施形態では、メディア符号器、例えば、グラフィックプロセッサの固定機能メディア符号器、が、アプリケーション出力フレームの符号化を加速化する。一実施形態では、計算リソースに制約がある場合、1以上のサーバの1以上のセントラルプロセッサが、バイナリトランスレーションのための分散型計算を実行し、サーバの1以上のグラフィックプロセッサが、補助的な処理機能を提供する。
【0016】
図1は、データセンタに備えられたサーバを利用してバイナリトランスレーションされたアプリケーションの、クラウドベースのサービス配信を提供するシステムの実施形態のブロック図である。
図1では、X86ベースのサーバを利用したARM ISAアプリケーション配信が示されているが、実施形態はそれに限定はされず、様々な実施形態を、アプリケーションサービスを分散型のコンピューティング環境に提供する任意のバイナリトランスレーション又はエミュレーション環境に利用することができる。一実施形態では、データセンター100が、ARM ISAアプリケーションのクライアントデバイスのエンドポイント175(例えば、スマートフォン、タブレット、ラップトップ、パーソナルコンピュータ、及び、インテリジェントデバイス)への分散型の(例えばクラウドベースの)配信を提供する。クライアントエンドポイントのアプリケーションは、少なくとも部分的に、分散型のコンピューティング環境で実行され、アプリケーション出力が、クライアントエンドポイントにストリーミングされる。ユーザ体験の品質は、QoS基準を利用して維持されることで、アプリケーションストリーミングの認知されるレイテンシーを最小限に抑え、クライアントデバイスに対して合意されているサービスのレベルを満たす。広範に分散された計算リソースは、並列に働き、バイナリトランスレーション及び実行を行い、アプリケーション出力を、限定された計算リソースをもつクライアントに配信する。
【0017】
図1に示すように、実施形態は、複数のX86中央処理装置(CPU)ベースのサーバプラットフォーム102を、データセンタ100内に備えている。ARM ISAアプリケーションバイナリApp1−aは、仮想マシン(VM)環境のX86アプリケーションバイナリApp1−bにトランスレーションされる。複数のVMが各サーバ(例えばVM1 104からVMn 105)上で実行されて、ARM ISAアプリケーションバイナリをX86アプリケーションバイナリにトランスレーションする。或る実施形態は、X86サーバを利用して、トランスレーションされたアプリケーションバイナリを実行して、アプリケーション出力の各フレームについては、レンダラー108が、出力フレームを生成する。或る実施形態では、メディア符号器を利用して、出力フレームを符号化した後で、符号化された出力フレームをネットワークインタフェース112から、インターネット150等の相互接続されたネットワークを介して送信する。ARM ISAベースのクライアントデバイス等のクライアントデバイス175又はX86ベースのクライアントデバイス179は、これらサービスを利用して、分散型のネットワークの処理能力を利用して、アプリケーションを実行することができる。非ネイティブのバイナリをQoS基準を利用して高速にトランスレーション又はエミュレーションすることで、遠隔アプリケーションストリーミングを、ローカル実行に合致したレイテンシーが生じるクライアントデバイスに配信することができるようになる。
【0018】
レイテンシーを最小限にするために、アプリケーションストリーミングシステムは、優先度に基づくトランスレーションを含む様々なQoS基準を利用する。優先度に基づくトランスレーションは、トランスレーションリソースをスケジュールして、優先度に従って(in a prioritized manner)、様々なアプリケーションをトランスレーション及び実行するのに用いられる複数のVMに対して実行時間を提供するのに用いられる。優先度に基づくトランスレーションによって、往復レイテンシーが最小限に抑えられ、これにより、クライアントデバイスにおけるユーザ体験を維持しつつ、遠隔アプリケーション実行及びストリーミングが可能となる。優先度に基づくトランスレーションの一部として、別個のQoSハードウェア属性をトランスレータコードに対して利用して、サーバプラットフォーム102の様々なプロセッサエレメントが、実行中にバイナリトランスレーション命令を認識して優先させるようにすることで、例えば、トランスレーション又はエミュレーションが、より高いアクセス優先度で実行されるようにする。高いアクセス優先度の命令は、システムリソースに対して、より大きなアクセス権を有する。例えば、プロセッサキャッシュではトランスレーションコードが優先され、トランスレーションのための命令及びメモリキューが、サーバで実行されている他のソフトウェアに対して高いキャッシュ優先度を有する。
【0019】
QoSに関して更に考慮すべき点は、エミュレーションされるクライアントデバイスの表示解像度である。また別の重要なQoS基準として、ARMアプリケーション(例えばApp1−a、App2−a)をエミュレーション及びレンダリングするサーバの観点から考慮すべきクライアントエンドポイントの解像度がある。各VMがレンダリングするフレームバッファの表示サイズは、ターゲットとなるクライアントエンドポイントの解像度に基づいて設定可能である。QoS処理の一部として、データセンタ100とクライアントデバイス175との間の様々なネットワークレイテンシーをクエリして、往復転送時間(round-trip transit times)を決定してよい。利用可能な実行容量及びネットワークレイテンシーに基づいて、それぞれ異なる出力解像度を、それぞれ異なる状況にあるクライアントデバイスに配信することができ、それぞれ異なるフレームバッファサイズを持つ、それぞれ異なるVMを利用することができる。一実施形態では、VMがコンテンツを配信する際の元となる、フレームバッファサイズのセットに対して各VMを設定することができる。
【0020】
QoSに関して更に考慮すべき点は、クライアントデバイスの地理的位置である。クライアントエンドポイントとサーバとの間の距離は、サーバが実行及び符号化処理中に提供する、クライアントデバイスエンドポイントに途切れない配信を行うためのパフォーマンスのレベルに影響する。一実施形態では、複数の地理的領域にサービス提供するために複数のデータセンタを利用して、往復レイテンシーを最小限に抑える。
【0021】
QoSに関して更に考慮すべき点は、サーバがエミュレーションするアプリケーションタイプである。サーバ102は、複雑なグラフィックをもつゲームアプリケーションを加速化するために、グラフィック処理リソースを利用する。グラフィックプロセッサは、各フレームのレンダリングを加速化して、フレームが、高いレベルのユーザ体験を維持し、ストリーミングフレームレートについてのサービスレベルの合意を満たすのに十分なレートで符号化され、クライアントデバイスに配信されるようにする。グラフィック集約度の低いオフィスアプリケーション又はゲーム等の他のアプリケーションは、分散型の処理環境の計算リソースを用いてレンダリングされる。加えて、コンピュータ支援設計(CAD)アプリケーション等のアプリケーションも、幾何学的に複雑な設計をレンダリングするときにグラフィックプロセッサ加速を利用する。
【0022】
QoSに関して更に考慮すべき点は、クライアントデバイスのメディア復号化機能セットである。様々なクライアントデバイス175の1つ(例えばARM ISAクライアントデバイス177、及び、X86ISAクライアントデバイス179)の、符号化されたストリームを復号化する機能によって、サーバ102上の、エミュレーションされたARMアプリケーション出力を符号化するために利用される、サーバ側のアルゴリズムが決定される。例えば、クライアントデバイス175が、一定のメディアタイプ(例えばH.264)の加速化されたメディア復号化のためにメディア復号器ハードウェアを利用することができる場合には、サーバ102は、クライアントデバイスが受付可能なメディアタイプを利用してアプリケーション出力を符号化する。クライアントデバイス175が、加速化されたメディア復号化を実行できない場合には、サーバは、クライアントデバイスがクライアントデバイス175上でアプリケーションプロセッサを利用して復号化できるメディアフォーマットを利用してアプリケーション出力を符号化する。
【0023】
図2は、X86ベースのサーバを利用するARM ISAアプリケーションのためのクラウドベースの配信システムの実施形態のシーケンス図である。一実施形態では、クライアントデバイス202、例えば
図1のクライアントデバイス175が、アプリケーションを実行せよとの要求212をクラウドベースのアプリケーションサービスを送信する。クライアントデバイスは、サーバにアプリケーションを提供することができ、又は、アプリケーションは、アプリケーションサービスの分散型実行環境に連結された分散型格納環境に格納することができる。要求は、サーバスケジューラ204に到着し、要求を処理するためのサービスレベルに関する合意(SLA)の期限切れ日が、サーバスケジューラ204が、クライアントデバイス202に関するQoS基準を見直した後で、決定される。サーバスケジューラ204は、利用可能な実行リソースをもつサーバ206を選択し、要求をサーバ206にディスパッチする214。
図2のサーバ206は、
図1のX86 CPUベースのサーバプラットフォーム102の一実施形態である。一実施形態では、サーバは、ネイティブ命令セット実行時間ではなく、エミュレーションされた実行時間の形で、利用可能な実行時間をサーバスケジューラに報告して、サーバスケジューラ204に、ARM ISAアプリケーションの観点からジョブをスケジュールさせる。
【0024】
サーバ206が要求214をサーバスケジューラから受信した場合には、サーバは、受領確認226をサーバスケジューラ204に送信して、要求が受け付けられ、SLAタイムフレーム内で実行されることを示す。サーバ206がSLA期限切れの前に要求に応じたサービスを提供することができない場合には、サーバスケジューラは、要求を割り当て直し、又は、該サーバのために更なる計算リソースをプロビジョンすることができる。サーバ206は、
図1の複数のVM(例えばVM1 104からVMn 106)のうちの1つの実施形態である、仮想マシン208等の仮想マシン環境を利用して、様々なアプリケーション及びクライアントデバイス(例えばクライアントデバイス202)のためにバイナリトランスレーションを行う。様々なVMは、複数のクライアントデバイスの特徴に基づいて設定することができ、実行リソースは、実行期限に間に合わせるためにVM間に分散される。サーバ206の或る実施形態では、利用可能な仮想マシンのリストを見直し、仮想マシン208へのアプリケーション要求をディスパッチする216。
【0025】
サーバ206への要求214が仮想マシン208にディスパッチされると216、トランスレーション処理218をアプリケーションに行い、トランスレーションされたアプリケーション228をサーバ上のメモリに生成する。一実施形態では、トランスレーションされたアプリケーションが、サーバ206内に備えられている、又は、データセンタ100内の他のサーバで利用可能な、サーバ206が利用可能な複数のプロセッサを利用して、サーバ206でネイティブに実行される。一実施形態では、サーバ上の1以上のプロセッサが、アプリケーションバイナリにISAエミュレーション環境を提示する、命令セットエミュレーションソフトウェアを実行する。一実施形態では、バイナリトランスレーション及び命令セットエミュレーションの両方が利用可能であり、或る実施形態は、いずれかの方法を実行可能な仮想マシンを配備することができる。動的バイナリトランスレーションを利用して良好に実行されることが分かっているタスク又はアプリケーションは、バイナリトランスレーションを実行可能な仮想マシンに割り当てられる。エミュレーション環境で良好に実行されることが分かっているタスク又はアプリケーションは、サーバにネイティブではないバイナリのための命令セットエミュレーションを利用する仮想マシンに割り当てられる。一実施形態では、要求されたARM ISAアプリケーションと同じ機能を提供する、許容できるX86 ISAに類似したプログラムの代替リストである。例えば、サーバ又は仮想マシンのネイティブ命令セットで利用可能なバイナリをもつユーティリティ又はライブラリが、トランスペアレントに代替される。
【0026】
アプリケーションの各出力フレームを表示するために、仮想マシンにネイティブに又は仮想マシン内に、サーバ206に出力フレームをレンダリングして符号化して、出力フレームを、クライアントデバイス202の復号化機能に基づいて符号化する。例えば、第1の出力フレーム236がクライアントデバイスに送信され、復号化されて、クライアントデバイスのディスプレイに表示される。サーバ206は、次に、第2の出力フレーム246を送信し、クライアントデバイス202が自身のディスプレイを更新したとき、第1の出力フレーム236と連続して表示させる。サーバ206は、計算リソースをアプリケーションと仮想マシンとの間で移行させることができ、各アプリケーションフレームを適時レンダリング、符号化、及び、配信することができるQoS基準の利用によりスムーズなアプリケーション体験を提供するのに十分なレートでクライアント202に出力フレームを提供する。制御入力222は、ユーザが示すとクライアントデバイスからサーバに配信され、制御入力222は、サーバで実行されているアプリケーションに配信され、サーバは、出力フレームN296がクライアントデバイスに配信されると、制御入力222に呼応する。
【0027】
図3は、或る実施形態におけるターゲット命令セットへのソース命令セットのバイナリトランスレーションを示すブロック図である。或る実施形態は、バイナリ変換を、ソフトウェア、ファームウェア、及び、ハードウェアの組み合わせを利用して実装し、トランスレーション及び変換専用プロセッサ命令を利用して、変換及びトランスレーションの具体的な側面を加速化する。非X86からX86へのトランスレーション及びエミュレーションが例示されているが、実施形態はこれに限定はされない。ネイティブに実行された命令については、高レベル言語302のプログラムが、x86コンパイラ304を用いてコンパイルされ、X86命令セットを実行することができる少なくとも1つのプロセッサコア314をもつプロセッサがネイティブに実行可能なx86バイナリコード306を生成する。少なくとも1つのx86命令セットコア314をもつプロセッサは、少なくとも1つのX86命令セットコアをもつインテル社製プロセッサと実質的に同じ機能を実行することができる任意のプロセッサを表している。プロセッサ314は、インテル社製のX86命令セットコア又はアプリケーションのオブジェクトコードバージョン又はインテル社製プロセッサ上で実行することを対象としている他のソフトウェアの命令セットの実質的な部分を互換性を持って実行し、又は、処理する。
【0028】
X86コンパイラ308は、追加のリンク処理があってもなくても、少なくとも1つのx86命令セットコア314を持つプロセッサ上で実行することができるx86バイナリコード310(例えばオブジェクトコード)を生成することができるコンパイラを表す。同様に、高レベル言語302のプログラムが、代わりの命令セットコンパイラ304を利用してコンパイルされて、代わりの命令セットバイナリコード306を生成するとき、該バイナリは、プロセッサによって、該代わりの命令セット316を用いてネイティブに実行可能である。例えば、非X86コアを持つプロセッサが、カリフォルニア州SunnyvaleのMIPS Technologies社のMIPS命令セットを実行する、又は、カリフォルニア州SunnyvaleのARM Holdings社のARM命令セットを実行する、プロセッサを含む。命令変換器312は、非X86バイナリコード306を、X86命令セットコア314等のプロセッサがネイティブに実行可能なコード、に変換する。
【0029】
或る実施形態は、命令変換器312と協働して、ハードウェア313を利用して、命令変換加速化を行う。命令変換アクセラレータ313は、仮想化及びトランスレーションタスクのために、サーバチップセットとプロセッサベースの加速化とを含む。例えば、X86 ISA拡張及び高度化が含められることで、32ビット及び64ビットの実行モードを含むX86プロセッサの或る実施形態のARM ISAトランスレーションが加速化される。X86命令セット拡張は、ARM v8命令セットの条件文(conditonal)を含むARM ISA専用条件文(ARM ISA specific conditional)を処理する命令を含む。
【0030】
更なる命令セット拡張は、非ネイティブ命令セットからトランスレーションされた命令を、より容易に実行するX86命令の別の変形例を提供する。例えば、更なるX86命令は、トランスレーションされるARM ISA命令がメモリ参照を行っていること、整数演算を算術論理ユニット(ALU)で行っていること、浮動小数点演算を浮動小数点ユニット(FPU)で行っていること、を示すために利用可能である。ソフトウェア、ファームウェア、及び、ハードウェアの組合せにより、命令変換器312及び命令変換アクセラレータ313は、X86命令セットプロセッサ又はコア314を持つプロセッサその他の電子機器に、非X86バイナリコード306を実行させる。
【0031】
図4は、或る実施形態における、複数のコア、統合されたグラフィック及びメモリコントローラ、及び、トランスレーション専用論理を有するプロセッサ400のブロック図である。プロセッサ400は、第1のコア402AからN個のコア402Nまでの複数のコアを含む。さらに、システムエージェント410、1以上のバスコントローラユニットのセット416、及び、システムエージェントユニット410内に1以上の統合されたグラフィック及びメモリコントローラユニットのセット414が存在している。加えて、専用トランスレーション専用論理408が、非X86命令セットからのバイナリトランスレーション又はエミュレーションを加速化するために存在している。
【0032】
プロセッサ400の様々な実施形態が、リアルタイムのバイナリトランスレーション、実行、及び、ストリーミングをクライアントデバイスに提供するよう設計されたサーバ内での利用に適しており、一方で、QoS基準を利用することで、サービス及び品質レベルについて合意された範囲でアプリケーション配信をストリーミングすることができる、汎用プロセッサコアとして設定されている。グラフィック及びメモリコントローラユニット414は、グラフィックを多用する演算(graphically intesive operations)であるとQoS基準が決定するもののためのレンダリングを加速化する1以上のグラフィックエンジンを含む。サーバ上のグラフィックエンジンが十分利用されていない場合、グラフィックエンジンはGPGPU(汎用グラフィック処理ユニット)の機能を提供して、プロセッサ400上で命令を実行しているアプリケーション又は仮想マシンに補助的な実行リソースを提供する。一実施形態では、プロセッサ400は、サーバで実行されている仮想マシンに大量の計算リソースを提供するべく、高いスループットの多くの集積コア(MIC)コプロセッサ(30個以上のコアを含む)である、又は、これを利用する。プロセッサ400の1以上のコンポーネントは、1以上の基板の一部であってもよいし、及び/又は、例えばBiCMOS、CMOS、又はNMOS等の多くのプロセス法のいずれかを利用して1以上の基板に実装されてもよい。
【0033】
メモリ階層は、コア内の1以上のレベルのキャッシュ、1セットの又は1以上の共用キャッシュユニット406、及び、統合されたグラフィック及びメモリコントローラユニットのセット414に連結された外部メモリ(不図示)を含む。該1セットの共用キャッシュユニット406は、1以上の中間レベルのキャッシュを含む(例えば、レベル2(L2)及びレベル3(L3)キャッシュ)。一実施形態では、リングベースのインターコネクトユニット412が、トランスレーション論理408、該1セットの共用キャッシュユニット406、及び、統合されたグラフィック及びメモリコントローラユニット414を含むシステムエージェントユニット410をインターコネクトする。一実施形態では、1以上のキャッシュユニット406とコア402−A−Nとの間でコヒレンシーを維持する。
【0034】
幾つかの実施形態では、コア402A−Nの1以上が、マルチスレッディングを行うことが可能である。システムエージェント410は、コア402A−Nの間の調整を行い、実行させるコンポーネントを含む。システムエージェントユニット410は、例えば、電力制御ユニット(PCU)及び表示ユニットを含んでよい。PCUは、コア402A−N及び統合されたグラフィック論理408の電力状態を調整するために必要な論理及びコンポーネントであってよく、又はこれらを含んでよい。表示ユニットは、1以上の外部接続されたディスプレイを駆動するためのものである。
【0035】
コア402A−Nは、アーキテクチャ命令セットの観点から均質であっても異質であってもよい、つまり、コア402A−Nのうち2以上が、同じ命令セットを実行可能であってよく、他のものが、命令セットのサブセットのみ、又は異なる命令セットを実行可能であってよい。一実施形態では、1以上のコア402A−Nが、標準的なX86命令セットを実行し、1以上の更なるコアが、トランスレーション専用論理408を活用する拡張X86命令セットを実行する。
【0036】
図5は、X86 CPUベースのサーバにおけるQoSベースのバイナリトランスレーション及び実行ストリーミングの方法の実施形態の概略を示す。一実施形態では、クラウドベースのアプリケーションストリーミングサービスが、ブロック502に示すように、ネットワーク経由で、ARM ISAアプリケーションを実行せよとの要求を受信する。ブロック504で、サーバスケジューラが、QoS基準を見直して、基準に基づいてサーバにアプリケーションを割り当てる。例えば、サーバスケジューラは、計算及びグラフィックの集約度に基づいて要求優先度にアクセスすることができ、十分な実行容量をもつサーバに要求を割り当てることができる。サーバスケジューラの或る実施形態では、可能な場合、同じサーバに同じアプリケーションのための連続した要求を割り当てて、サーバが、トランスレーションされたアプリケーションをアプリケーションキャッシュから、又は前にトランスレーションされたアプリケーションを取得することができるようにすることで、サーバは、同じアプリケーションバイナリのトランスレーションが繰り返されないようにする。或る実施形態では、さらに、要求されているARM ISAアプリケーションと同じ機能を提供する、許容できるX86 ISAに類似したプログラムのための代替リストも維持する。許容できるX86 ISAに類似したプログラムが、ネイティブに又は前に実行したトランスレーションによって、利用可能な場合には、サーバは、X86に類似したプログラムをARM ISAプログラムとトランスペアレントに代替する。
【0037】
ブロック506で、サーバは、サーバの仮想マシンのセットで実行されている仮想サーバのセットを見直して、タスクのQoS基準と相関性のある利用可能な仮想マシンに、トランスレーションタスクを割り当てるが、ここで利用可能な仮想マシンとは、適切なフレームバッファサイズをもつVM,又は、適切な量の利用可能なグラフィックコントローラ実行リソースをもつVM等である。ブロック508で、ARM ISAアプリケーションバイナリを、割り当てられた仮想マシン内でトランスレーションする。プロセッサは、トランスレーションソフトウェア及び仮想マシンが利用できるARM ISAトランスレーション専用の命令を提供する。実施形態は、他のコードよりも高い優先度でトランスレーション命令を実行することができ、これにより、トランスレーション命令及びデータに、トランスレーションソフトウェアを実行するために利用される様々なプロセッサで実行されている他のタスクよりも高いキャッシュ優先度を与えることができる。
【0038】
ブロック510に示すように、トランスレーションされたアプリケーションは、サーバ上で実行されて、該アプリケーションのための表示出力を生成する。クライアントデバイスのユーザが提供する入力データ又は制御入力は、サーバ上で実行されているアプリケーションに配信されることで、クライアントデバイスのユーザは、実行されているアプリケーションを、あたかもアプリケーションがクライアントデバイスで実行されているかのように制御することができる。出力の各フレームは、サーバでレンダリングされ、ブロック512で、出力がメディアフォーマットに符号化され、ネットワークを介してクライアントデバイスに送信される(ブロック514に示す)。実行、符号化、及び送信は、クライアントデバイスの表示解像度、サーバとクライアントデバイスとの間のネットワークの往復レイテンシー、及び、遠隔実行されているアプリケーションタイプ等のQoS基準によって統括される。一実施形態では、サーバは、グラフィックを多用する演算についてグラフィックプロセッサ加速化を利用する。サーバ上の1以上のグラフィックプロセッサは、タイムスライスされることができ、これにより、サーバ上で実行されている各仮想マシンには、実行の優先度に基づいて特定の量のグラフィックプロセッサ実行時間が与えられる。一実施形態では、サーバは、汎用計算機能を持つグラフィックプロセッサを利用して、グラフィックプロセッサに、サーバの様々なプロセッサ及びサーバに連結された様々な分散されているプロセッサを補助するために、補助的な計算リソースを提供させることができる。
【0039】
図6は、ARM ISAバイナリトランスレーションのための、優先レベルベースの加速を利用するサーバ側の処理の実施形態のフロー図である。ブロック602に示すように、或る実施形態は、サーバとクライアントデバイスとの間のレイテンシー、及び、アプリケーションのサービスレベルに関する合意(SLA)期限に基づいて、アプリケーションの優先度を決定する。品質の高いサービスを維持するために、合意されたサービスのレベルは、遠隔のアプリケーション実行のためにサーバによって提供される。クライアントデバイスは、合意された期間内に、遠隔の実行要求に対して応答することを予期しており、期限までの残り時間は、トランスレーションの実行優先度に関する通知である。例えば、スケジューリングの遅延によって、アプリケーションのトランスレーションについて窓が少なくなった場合、トランスレーションタスクに高い優先度を与え、更なる計算リソースをトランスレーションタスクに与えることで、トランスレーションタスクを加速化する。
【0040】
ブロック602に示すように、アプリケーションの優先度を決定することと平行して、或る実施形態では、ブロック604で、潜在的な仮想マシン(VM)の割り当てのリストを生成する。潜在的な割り当ては、クライアントデバイスの特徴及びアプリケーションタイプを含むQoS基準に基づいている。潜在的な割り当てのリストは、クライアントデバイスの表示解像度に準拠したフレームバッファ構成をもつVM、又は、アプリケーションがグラフィックを多用するものである場合には、利用可能なグラフィックプロセッサ実行リソースを十分もつVMを含む。ブロック606で、利用可能な実行リソースに基づいて、潜在的なVMのリストから、仮想マシンを選択して、アプリケーションバイナリをVMに割り当てる。VMは次に、ブロック608に示すように、バイナリトランスレーションを行う。
【0041】
一実施形態では、高い優先レベルをもつ仮想マシンでバイナリトランスレーションを加速化するために優先度執行メカニズムが用いられる。例えば、あるトランスレーションプロセスの期限に近づいている場合、サーバは、より大きな実行リソースをトランスレーションVMに加えることによって、トランスレーションプロセスを加速化することができる。サーバハードウェアに統合されたレジスタビット、ハードウェアタイマ、及び制御論理は、VM実行を管理して、高い優先度のタスクを行うVMに、より大きな実行リソースを提供するために利用される。
【0042】
図7は、或る実施形態における、グラフィックプロセッサ加速を利用する処理のフロー図である。QoSベースのバイナリトランスレーション及びアプリケーションストリーミングの実施形態は、ブロック702で、トランスレーションされたアプリケーションのQoS基準を見直すことから開始される。例えば、デバイス表示解像度及びアプリケーションタイプを含むQoS基準は、アプリケーションに存在するグラフィック複雑度の指標である。もしもブロック704で、該アプリケーションが高いグラフィック負荷をもつと決定された場合、ブロック706に示すように、サーバはアプリケーションを実行して、グラフィックプロセッサ加速を用いてフレーム出力をレンダリングする。例えば、HD解像度(例えば1280x720, 1920x1080など)で実行されているゲームアプリケーションは、アプリケーションの出力フレームをレンダリングするためにグラフィックプロセッサを利用する。QoS基準が、汎用プロセッサコアを用いてSLA期間内にアプリケーションを実行できると示している場合には、ブロック708に示すように、1以上のCPUコアを利用してアプリケーションの出力フレームの実行及びレンダリングを行う。スプレッドシート、又は、その他のオフィスアプリケーション等のユーティリティアプリケーションは、グラフィック加速化を利用せずに実行できる可能性が高い。しかし、或る実施形態では、例えば、ネットワークレイテンシーが、加速化されたレンダリングを利用しないとSLA期限に間に合わせることが難しいと示している場合に、レンダリングを加速化するためにグラフィックプロセッサを利用することができる。
【0043】
レンダリングの後で、ブロック710に示すように、出力フレームをメディアフォーマットに符号化する。或る実施形態では、クライアントデバイスがハードウェア加速化された復号をサポートしているかを含むクライアントデバイスメディア復号機能のセットに基づいて、利用するメディアフォーマットを決定する。例えば、クライアントデバイスがH.264フォーマットで符号化されたメディアのハードウェア加速された復号をサポートしている場合には、サーバは、出力フレームをクライアントデバイスに送信する前に該出力フレームをH.264フォーマットに符号化することができる。一実施形態では、サーバは、クライアントデバイスに送信する前に、出力フレームを符号化するために専用のメディア符号化ハードウェアを利用する。一実施形態では、グラフィックプロセッサは、メディア符号化ハードウェアを含む。一実施形態では、プロセッサは、メディア符号化を加速化するための命令をサポートしている。
【0044】
図8から
図11は、コンピュータアーキテクチャの例のブロック図である。ラップトップ、デスクトップ、手持ち型のPC、スマートフォン、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、エンベデッドプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、セルフォン、ポータブルメディアプレーヤ、手持ち型デバイス、及び、様々なその他の電子デバイス等の分野で知られている他のシステム設計及び設定もまた適している。
【0045】
図8は、或る実施形態におけるシステム800のブロック図である。システム800は、コントローラハブ820に連結された1以上のプロセッサ810、815を含む。一実施形態では、コントローラハブ820は、グラフィックメモリコントローラハブ(GMCH)890及び入出力ハブ(IOH)850を含み、GMCH890は、メモリ840及びコプロセッサ845に連結されたメモリコントローラ及びグラフィックコントローラを含み、IOH850は、入出力(I/O)デバイス860をGMCH890に連結させる。あるいは、メモリコントローラ及びグラフィックコントローラの一方又は両方が、プロセッサ内に統合されていてもよく(ここで説明されるように)、メモリ840及びコプロセッサ845が、プロセッサ810に連結され、コントローラハブ820が、IOH850とともに1つのチップにあってもよい。
【0046】
更なるプロセッサ815の任意の性質は、
図8では波線で示されている。各プロセッサ810及び815は、ここで説明されるプロセッシングコアの1以上を含み、これらはそれぞれが、プロセッサ400のあるバージョンである。
【0047】
一実施形態では、メモリ840は、ダイナミックランダムアクセスメモリ(RAM)である。一実施形態では、840は相変化メモリ(PCM)又はPCMとDRAMとの組合せである。少なくとも1つの実施形態では、コントローラハブ820は、プロセッサ810、815と、リングインタフェース等のマルチドロップバス、フロントサイドバス(FSB)、QuickPath Interconnect(QPI)等のポイントツーポイントインタフェース、又は類似した接続895等を介して通信する。
【0048】
一実施形態では、コプロセッサ845が、例えば高スループットMICプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィックプロセッサ、GPGPU、エンベデッドプロセッサ等の専用プロセッサである。一実施形態では、コントローラハブ820が、統合されたグラフィックアクセラレータを含んでよい。一実施形態では、ここで説明するように、メモリトランスレーション又はエミュレーション加速化ハードウェアが存在している。
【0049】
物理リソース810、815の間には、アーキテクチャ、マイクロアーキテクチャ、熱、電力消費特性等を含む、利点の測定基準の範囲(spectrum of metrics of merit)において様々な差異がある。
【0050】
図9は、或る実施形態における、より具体的な例におけるサーバシステム900のブロック図である。
図9に示すように、マルチプロセッサシステム900は、ポイントツーポイントインターコネクトシステムであり、ポイントツーポイントインターコネクト950を介して連結された第1のプロセッサ970と第2のプロセッサ980とを含む。プロセッサ970及び980のそれぞれは、プロセッサ400の変形例である。一実施形態では、プロセッサ970及び980が、それぞれ、プロセッサ810及び815であり、コプロセッサ938は、コプロセッサ845である。別の実施形態では、プロセッサ970及び980は、それぞれ、プロセッサ810及びコプロセッサ845である。
【0051】
プロセッサ970及び980は、それぞれ、統合されたメモリコントローラ(IMC)ユニット972及び982である。プロセッサ970はさらに、そのバスコントローラユニットの一部として、ポイントツーポイント(P−P)インタフェース976及び978を含み、第2のプロセッサ980が、P−Pインタフェース986及び988を含む。プロセッサ970、980は、ポイントツーポイント(P−P)インタフェース950を介して、P−Pインタフェース回路978、988を利用して情報を交換する。
図9に示すように、IMC972及び982は、プロセッサをそれぞれ、メモリに連結し、メモリとはつまり、それぞれのプロセッサにローカルに接続されたメインメモリの一部であってよいメモリ932及び934である。
【0052】
プロセッサ970、980はそれぞれ、ポイントツーポイントインタフェース回路976、994、986、998を利用して、個々のP−Pインタフェース952、954を介して、チップセット990と情報を交換する。チップセット990は、任意で、高パフォーマンスインタフェース939を介してコプロセッサ938と情報を交換する。一実施形態では、コプロセッサ938は、例えば高スループットMICプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィックプロセッサ、GPGPU、エンベデッドプロセッサ、バイナリトランスレーションアクセラレータ等の専用プロセッサである。
【0053】
共用キャッシュ(図示せず)が、いずれかのプロセッサ内に含まれていてもよいし、又は両方のプロセッサの外部に含まれいるがP−Pインターコネクトを介してこれらプロセッサと接続されていてもよく、あるプロセッサが低電力モードに置かれると、いずれか又は両方のプロセッサのローカルキャッシュ情報が共用キャッシュに格納されるようにしてよい。一実施形態では、900の共用キャッシュが、ここで説明したトランスレーション加速化機能及び仮想化加速化機能に優先度を与えてよい。
【0054】
チップセット990は、インタフェース996を介して第1のバス916に連結される。一実施形態では、第1のバス916が、PCI(Peripheral Component Interconnect)バス、又はPCI Expressバス又は別の第3世代I/Oインターコネクトバス等のバスであるが、これらは限定ではない例である。
【0055】
図9に示すように、様々なI/Oデバイス914は、第1のバス916を第2のバス920に連結するバスブリッジ918もであるが、第1のバス916に連結されてよい。一実施形態では、コプロセッサ、高スループットMICプロセッサ、GPGPU、アクセラレータ(例えばグラフィックアクセラレータ又はデジタル信号処理(DSP)ユニット)、フィールドプログラマブルゲートアレイ(FPGA)、又はその他のプロセッサ等の1以上の更なるプロセッサ915が、第1のバス916に連結される。一実施形態では、第2のバス920が、低ピンカウント(LPC)バスである。一実施形態では、キーボード及び/又はマウス922、通信デバイス927、及び、命令/コード及びデータ930を含んでよいディスクドライブ又はその他の大容量記憶装置等の記憶ユニット928を含む様々なデバイスを、第2のバス920に連結することができる。更に、オーディオI/O924を、第2のバス920に連結することができる。他のアーキテクチャも可能である。例えば、
図9のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス、リングバス、又は他のこれらのようなアーキテクチャを実装してもよい。
【0056】
図10は、或る実施形態における第2のより具体的な例のシステム1000のブロック図である。
図9及び
図10において類似したエレメントには、同様の参照番号を付し、
図9の一定の側面を、
図10では省くことで、
図10の他の側面を曖昧にしないようにしている。
【0057】
図10は、一実施形態では、プロセッサ970、980が、集積メモリとI/O制御論理(「CL」)972及び982をそれぞれ含む。従って、CL972、982は、統合されたメモリコントローラユニットを含み、I/O制御論理を含む。
図10は、メモリ932、934がCL972、982に連結されているのみならず、I/Oデバイス1014も、制御論理972、982に連結されていると示している。レガシーI/Oデバイス1015がチップセット990に連結されている。
【0058】
図11は、或る実施形態におけるSoC1100のブロック図である。
図4と同様のエレメントには同様の参照番号を付している。加えて、波線のボックスは、より高度なSoCの、任意の特徴である。一実施形態では、ここに記載するクライアントデバイスが、SoC1100の変形例を含む。
図11では、インターコネクトユニット(1又は複数)1102が、1以上のコア402A−N及び共用キャッシュユニット406のセットを含むアプリケーションプロセッサ1110と、システムエージェントユニット410と、バスコントローラユニット(1又は複数)416と、集積メモリコントローラユニット(1又は複数)414と、バイナリトランスレーション加速化論理を含む1セット又は1以上のコプロセッサ1120と、統合されたグラフィック論理、画像プロセッサ、オーディオプロセッサ、及びビデオプロセッサと、スタティックランダムアクセスメモリ(SRAM)ユニット1130と、ダイレクトメモリアクセス(DMA)ユニット1132と、1以上の外部ディスプレイに連結される表示ユニット1140とに連結されている。一実施形態では、コプロセッサ(1又は複数)1120が、例えばネットワーク又は通信プロセッサ、圧縮エンジン、GPGPU、高スループットMICプロセッサ、エンベデッドプロセッサ等の専用プロセッサを含む。一実施形態では、ビデオプロセッサ、統合されたグラフィック論理、又はGPGPUが、1以上のコア402Nに含まれている。
【0059】
ここで開示するメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの実装方法の組合せで実装されてよい。実施形態は、少なくとも1つのプロセッサ、記憶システム(揮発性及び不揮発性メモリ及び/又は記憶エレメントを含む)、少なくとも1つの入力デバイス、及び、少なくとも1つの出力デバイスを含むプログラム可能なシステムで実行されるコンピュータプログラム又はプログラムコードとして実装されてよい。
【0060】
図9に示すコード930等のプログラムコードは、ここで記載する機能を実行して、出力情報を生成するための命令を入力するために適用されてよい。出力情報は、既知の方法で、1以上の出力デバイスに適用されてよい。この用途のために、処理システムは、デジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、又はマイクロプロセッサ等のプロセッサを有する任意のシステムを含む。
【0061】
プログラムコードは、処理システムと通信するために、高レベルの手続き型又はオブジェクト指向型のプログラミング言語で実装されてよい。プログラムコードは、所望の場合、アセンブリ又は機械語で実装することもできる。実際、ここで記載するメカニズムの範囲は、いずれか特定のプログラミング言語に限定はされない。いずれの場合においても、言語は、コンパイラ型又はインタープリタ型言語であってよい。
【0062】
少なくとも1つの実施形態の1以上の態様を、プロセッサ内の様々な論理を表すマシン可読媒体に格納される代表命令で実装してもよく、これは、マシンにより読み出されると、マシンに、ここで記載した技術を実行するための論理を作成させる。これらの「IPコア」として知られている表現は、有形の永続性のマシン可読媒体に格納され、様々な顧客又は製造所に供給され、実際に論理又はプロセッサを作成する製造マシンにロードされてよい。
【0063】
これらマシン可読格納媒体は、これらに限定はされないが、マシン又はデバイスで製造又は形成される永続性の有形の物品構成が含まれてよく、これには、ハードディスク等の記憶媒体、フロッピー(登録商標)ディスク、光学ディスク、コンパクトディスク読み出し専用メモリ(CD−ROMs)、書き換え可能CD(CD−RW)、及び光磁気ディスク等の他のタイプのディスク、読み出し専用メモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)等のランダムアクセスメモリ(RAM)、消去可能かつプログラム可能な読み出し専用メモリ(EPROM)、フラッシュメモリ、電気的に消去可能かつプログラム可能な読み出し専用メモリ(EEPROM)、相変化メモリ(PCM)、磁気又は光学カード等の半導体デバイス、または、電子命令を格納するのに適したその他のタイプの媒体を含んでよい。
【0064】
従って、実施形態はさらに、ここで説明した構造、回路、装置、プロセッサ、及び/又はシステム特徴を定義するハードウェア記述言語(HDL)等の、命令を含む、又は、設計データを含む永続性の有形のマシン可読媒体も含んでよい。これらの実施形態も、プログラムプロダクトと称されてよい。
【0065】
ここで記載したことの他に、開示された実施形態及び実装形態には、その範囲を逸脱せずとも様々な変形例が想到されよう。従って、ここに記載した図及び例は、例として捉えられるべきであり、限定的に捉えられるべきではない。実施形態の範囲は、以下の請求項を参照することによってのみ限定されるべきである。
本開示に基づけば、以下の各項目もまた開示される。
(項目1)
セントラルプロセッサとネットワークインタフェースとを有するサーバと、
ディスプレイと、クライアントプロセッサと、クライアントネットワークインタフェースとを有するクライアントデバイスと
を備えるシステムであって、
前記セントラルプロセッサは第1の命令セットを有し、
前記サーバは、第2の命令セットを有するバイナリを、前記第1の命令セットを有するトランスレーションされた実行可能コードにトランスレーションし、
前記トランスレーションは、サービスの品質基準(QoS基準)を利用して実行され、
前記サーバは、前記トランスレーションされたバイナリを実行して、レンダリングされた出力のフレームを生成し、前記ネットワークインタフェースを介して前記レンダリングされた出力のフレームを送信し、
前記クライアントデバイスは、前記クライアントネットワークインタフェースを介して前記サーバから、前記レンダリングされた出力のフレームを受信し、前記クライアントプロセッサを利用して、前記ディスプレイに、前記レンダリングされた出力のフレームを表示する、バイナリトランスレーションシステム。
(項目2)
前記QoS基準は、優先度に基づく加速化と複数のクライアントパラメータとを含み、前記複数のクライアントパラメータは、クライアントデバイスの解像度、クライアントデバイスの位置、クライアントアプリケーションタイプ、及び、クライアント復号化機能のセットを含む、項目1に記載のバイナリトランスレーションシステム。
(項目3)
前記レンダリングされた出力のフレームは、前記サーバが前記レンダリングされた出力のフレームを送信する前に、メディアフォーマットに符号化される、項目1または2に記載のバイナリトランスレーションシステム。
(項目4)
前記サーバは、前記レンダリングされた出力のフレームを生成するためのグラフィックプロセッサを更に有する、項目3に記載のバイナリトランスレーションシステム。
(項目5)
前記グラフィックプロセッサは、前記レンダリングされた出力のフレームを前記メディアフォーマットに符号化する、項目4に記載のバイナリトランスレーションシステム。
(項目6)
前記クライアントデバイスの前記クライアントプロセッサは、前記第1の命令セットを有する、項目1から5の何れか1項に記載のバイナリトランスレーションシステム。
(項目7)
前記クライアントデバイスの前記クライアントプロセッサは、前記第2の命令セットを有する、項目1から6の何れか1項に記載のバイナリトランスレーションシステム。
(項目8)
前記サーバは、仮想マシン内で前記バイナリトランスレーションを実行する、項目2に記載のバイナリトランスレーションシステム。
(項目9)
前記仮想マシンは、前記クライアントデバイス用に調整される、項目8に記載のバイナリトランスレーションシステム。
(項目10)
仮想マシンの実行リソースは、前記QoS基準を介して調整される、項目9に記載のバイナリトランスレーションシステム。
(項目11)
優先度に基づく加速化は、バイナリトランスレーション優先度を設定するべく、前記サーバと前記クライアントデバイスとの間のネットワークレイテンシーを要因として用いる、項目10に記載のバイナリトランスレーションシステム。
(項目12)
前記第1の命令セットは、x86命令セットであり、前記第2の命令セットは、ARM命令セットである、項目11に記載のバイナリトランスレーションシステム。
(項目13)
サーバであって、
命令を格納する永続性のマシン可読格納媒体と、
前記命令を実行するためのプロセッサと
を備え、
前記命令は、
第2の命令セットを有するバイナリを、第1の命令セットを有するトランスレーションされたバイナリにトランスレーションする処理を実行させ、前記トランスレーションは、サービスの品質基準(QoS基準)の適用を受け、前記バイナリをトランスレーションする前記命令は、前記プロセッサのキャッシュにおける優先度をもち、
前記命令は、前記トランスレーションされたバイナリを実行して、出力フレームをレンダリングする処理を実行させ、
前記サーバは、更に、
前記プロセッサに連結され、前記出力フレームをメディアフォーマットに符号化するメディア符号器と、
前記メディア符号器と前記プロセッサとに連結され、前記符号化された出力フレームをクライアントデバイスに送信するネットワークデバイスとを備える、サーバ。
(項目14)
前記バイナリをトランスレーションする処理は、仮想マシン内で実行される、項目13に記載のサーバ。
(項目15)
前記QoS基準は、優先度に基づく加速化と複数のクライアントパラメータとを含み、前記複数のクライアントパラメータは、クライアントデバイスの解像度、クライアントデバイスの位置、クライアントアプリケーションタイプ、及び、クライアント復号化機能のセットを含む、項目14に記載のサーバ。
(項目16)
前記QoS基準に基づいて仮想マシンの実行優先度を設定するスケジューラを更に備える、項目15に記載のサーバ。
(項目17)
前記プロセッサに連結され、前記出力フレームをレンダリングするよう前記プロセッサを補助するグラフィックアクセラレータを更に備える、項目16に記載のサーバ。
(項目18)
前記グラフィックアクセラレータは、前記出力フレームをメディアフォーマットに符号化するよう前記メディア符号器を補助する、項目17に記載のサーバ。
(項目19)
コンピュータに、
第2の命令セットを有するバイナリを、第1の命令セットを有するトランスレーションされたバイナリにトランスレーションする手順であって、前記トランスレーションは、サービスの品質基準(QoS基準)の適用を受け、前記トランスレーションは、仮想マシン内で実行され、前記仮想マシンは、前記QoS基準によって調整され、前記QoS基準は、優先度に基づく加速化と複数のクライアントパラメータとを含み、前記複数のクライアントパラメータは、クライアントデバイスの解像度、クライアントデバイスの位置、クライアントアプリケーションタイプ、及び、クライアント復号化機能のセットを含む、手順と、
前記トランスレーションされたバイナリを実行して、出力フレームをレンダリングする手順であって、前記実行は、グラフィックの加速化が前記QoS基準によって示されている場合、グラフィックプロセッサにより補助される、手順と、
前記出力フレームをメディアフォーマットに符号化する手順であって、前記メディアフォーマットが、前記クライアント復号化機能のセットによって選択される、手順と、
前記出力フレームをネットワークデバイスを介してクライアントデバイスに送信する手順と
を実行させるための、プログラム。
(項目20)
更に、
第1のサーバの第1の仮想マシンで第1のバイナリをトランスレーションする手順と、
第2のサーバの第2の仮想マシンで第2のバイナリをトランスレーションする手順と、
前記第1のサーバで第3のバイナリを実行する手順と
を実行させ、
前記第1のサーバは、前記第3のバイナリを前にトランスレーションしており、
前記第3のバイナリは、前記実行する手順の前に、トランスレーションしなおされる、項目19に記載のプログラム。