(57)【要約】      （修正有）【課題】サービスの品質（ＱｏＳ）基準ベースのサーバ側のバイナリトランスレーション及びアプリケーションの実行が、仮想化された実行環境又はネイティブ実行環境のいずれかの分散されたトランスレーション及び実行を利用して、複数のサーバで実行させる。【解決手段】出力表示データを生成するためにトランスレーションされたアプリケーションが実行され、出力表示データは、ビデオストリーミングに適したメディアフォーマットに符号化され、ビデオストリームは、ネットワークを介してクライアントデバイスに配信される。１以上のグラフィックプロセッサが、アプリケーション出力のレンダリングを加速化することでサーバのセントラルプロセッサを補助し、メディア符号器は、アプリケーション出力をメディアフォーマットに符号化する。【選択図】図１
2014182798.tif 000002
【特許請求の範囲】
【請求項１】
セントラルプロセッサとネットワークインタフェースとを有するサーバと、
ディスプレイと、クライアントプロセッサと、クライアントネットワークインタフェースとを有するクライアントデバイスと
を備えるシステムであって、
前記セントラルプロセッサは第１の命令セットを有し、
前記サーバは、第２の命令セットを有するバイナリを、前記第１の命令セットを有するトランスレーションされた実行可能コードにトランスレーションし、
前記トランスレーションは、サービスの品質基準（ＱｏＳ基準）を利用して実行され、
前記サーバは、前記トランスレーションされたバイナリを実行して、レンダリングされた出力のフレームを生成し、前記ネットワークインタフェースを介して前記レンダリングされた出力のフレームを送信し、
前記クライアントデバイスは、前記クライアントネットワークインタフェースを介して前記サーバから、前記レンダリングされた出力のフレームを受信し、前記クライアントプロセッサを利用して、前記ディスプレイに、前記レンダリングされた出力のフレームを表示する、バイナリトランスレーションシステム。
【請求項２】
前記ＱｏＳ基準は、優先度に基づく加速化と複数のクライアントパラメータとを含み、前記複数のクライアントパラメータは、クライアントデバイスの解像度、クライアントデバイスの位置、クライアントアプリケーションタイプ、及び、クライアント復号化機能のセットを含む、請求項１に記載のバイナリトランスレーションシステム。
【請求項３】
前記レンダリングされた出力のフレームは、前記サーバが前記レンダリングされた出力のフレームを送信する前に、メディアフォーマットに符号化される、請求項１または２に記載のバイナリトランスレーションシステム。
【請求項４】
前記サーバは、前記レンダリングされた出力のフレームを生成するためのグラフィックプロセッサを更に有する、請求項３に記載のバイナリトランスレーションシステム。
【請求項５】
前記グラフィックプロセッサは、前記レンダリングされた出力のフレームを前記メディアフォーマットに符号化する、請求項４に記載のバイナリトランスレーションシステム。
【請求項６】
前記クライアントデバイスの前記クライアントプロセッサは、前記第１の命令セットを有する、請求項１から５の何れか１項に記載のバイナリトランスレーションシステム。
【請求項７】
前記クライアントデバイスの前記クライアントプロセッサは、前記第２の命令セットを有する、請求項１から６の何れか１項に記載のバイナリトランスレーションシステム。
【請求項８】
前記サーバは、仮想マシン内で前記バイナリトランスレーションを実行する、請求項２に記載のバイナリトランスレーションシステム。
【請求項９】
前記仮想マシンは、前記クライアントデバイス用に調整される、請求項８に記載のバイナリトランスレーションシステム。
【請求項１０】
仮想マシンの実行リソースは、前記ＱｏＳ基準を介して調整される、請求項９に記載のバイナリトランスレーションシステム。
【請求項１１】
優先度に基づく加速化は、バイナリトランスレーション優先度を設定するべく、前記サーバと前記クライアントデバイスとの間のネットワークレイテンシーを要因として用いる、請求項１０に記載のバイナリトランスレーションシステム。
【請求項１２】
前記第１の命令セットは、ｘ８６命令セットであり、前記第２の命令セットは、ＡＲＭ命令セットである、請求項１１に記載のバイナリトランスレーションシステム。
【請求項１３】
サーバであって、
命令を格納する永続性のマシン可読格納媒体と、
前記命令を実行するためのプロセッサと
を備え、
前記命令は、
第２の命令セットを有するバイナリを、第１の命令セットを有するトランスレーションされたバイナリにトランスレーションする処理を実行させ、前記トランスレーションは、サービスの品質基準（ＱｏＳ基準）の適用を受け、前記バイナリをトランスレーションする前記命令は、前記プロセッサのキャッシュにおける優先度をもち、
前記命令は、前記トランスレーションされたバイナリを実行して、出力フレームをレンダリングする処理を実行させ、
前記サーバは、更に、
前記プロセッサに連結され、前記出力フレームをメディアフォーマットに符号化するメディア符号器と、
前記メディア符号器と前記プロセッサとに連結され、前記符号化された出力フレームをクライアントデバイスに送信するネットワークデバイスとを備える、サーバ。
【請求項１４】
前記バイナリをトランスレーションする処理は、仮想マシン内で実行される、請求項１３に記載のサーバ。
【請求項１５】
前記ＱｏＳ基準は、優先度に基づく加速化と複数のクライアントパラメータとを含み、前記複数のクライアントパラメータは、クライアントデバイスの解像度、クライアントデバイスの位置、クライアントアプリケーションタイプ、及び、クライアント復号化機能のセットを含む、請求項１４に記載のサーバ。
【請求項１６】
前記ＱｏＳ基準に基づいて仮想マシンの実行優先度を設定するスケジューラを更に備える、請求項１５に記載のサーバ。
【請求項１７】
前記プロセッサに連結され、前記出力フレームをレンダリングするよう前記プロセッサを補助するグラフィックアクセラレータを更に備える、請求項１６に記載のサーバ。
【請求項１８】
前記グラフィックアクセラレータは、前記出力フレームをメディアフォーマットに符号化するよう前記メディア符号器を補助する、請求項１７に記載のサーバ。
【請求項１９】
コンピュータに、
第２の命令セットを有するバイナリを、第１の命令セットを有するトランスレーションされたバイナリにトランスレーションする手順であって、前記トランスレーションは、サービスの品質基準（ＱｏＳ基準）の適用を受け、前記トランスレーションは、仮想マシン内で実行され、前記仮想マシンは、前記ＱｏＳ基準によって調整され、前記ＱｏＳ基準は、優先度に基づく加速化と複数のクライアントパラメータとを含み、前記複数のクライアントパラメータは、クライアントデバイスの解像度、クライアントデバイスの位置、クライアントアプリケーションタイプ、及び、クライアント復号化機能のセットを含む、手順と、
前記トランスレーションされたバイナリを実行して、出力フレームをレンダリングする手順であって、前記実行は、グラフィックの加速化が前記ＱｏＳ基準によって示されている場合、グラフィックプロセッサにより補助される、手順と、
前記出力フレームをメディアフォーマットに符号化する手順であって、前記メディアフォーマットが、前記クライアント復号化機能のセットによって選択される、手順と、
前記出力フレームをネットワークデバイスを介してクライアントデバイスに送信する手順と
を実行させるための、プログラム。
【請求項２０】
更に、
第１のサーバの第１の仮想マシンで第１のバイナリをトランスレーションする手順と、
第２のサーバの第２の仮想マシンで第２のバイナリをトランスレーションする手順と、
前記第１のサーバで第３のバイナリを実行する手順と
を実行させ、
前記第１のサーバは、前記第３のバイナリを前にトランスレーションしており、
前記第３のバイナリは、前記実行する手順の前に、トランスレーションしなおされる、請求項１９に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、概して、クラウドベースのアプリケーションサービスに関し、より詳しくは、サービスの品質（ＱｏＳ）基準を利用した、バイナリトランスレーション及びアプリケーションストリーミングの提供に関する。
【背景技術】
【０００２】
一般的に、プロセッサは、専用の命令セットアーキテクチャを実装するよう設計されており、一般的にはネイティブに異なる命令セットアーキテクチャのためにコンパイルされたアプリケーションを実行しない。１つの命令セットのためにコンパイルされたバイナリファイルを、異なる命令セットでネイティブに実行可能なバイナリにトランスレーションすることが、コンピューティング学会では既に試されているが、成功する程度はまちまちである。ある例では、バイナリトランスレーション器が、ある命令セットアーキテクチャから異なる命令セットアーキテクチャへと、ランタイムでバイナリをトランスレーションする場合がある。またある例では、１つの命令セットアーキテクチャをもつプロセッサが、エミュレーションソフトウェアを実行することで、該プロセッサが、異なる命令セットアーキテクチャをもつバイナリを実行することができる。いずれの例においても、バイナリトランスレーションは、アプリケーション実行中にパフォーマンスペナルティを課す。
【０００３】
加えて、非インタラクティブ型のメディアコンテンツのストリーミングがコンピューティング学会で知られており、ストリーミングビデオを様々なコンピューティングデバイスに配信することができることが知られている。分散型の処理及び記憶を利用することで、コンテンツをクラウドベースのネットワークに格納して、オンデマンドで、ネットワークに接続された複数のデバイスにストリーミングすることができる。しかしながら、インタラクティブなコンテンツをストリーミングすること、例えばアプリケーションのリアルタイムのストリーミングは、ネットワークのレイテンシーが往復でかかってしまうことから、問題を生じる。
【図面の簡単な説明】
【０００４】
以下の記載は、様々な実施形態の実装の例を例示する図面の説明を含む。図面は、限定ではなく例として理解されるべきである。ここで利用される、１以上の「実施形態」についての言及は、特定の特徴、構造、又は特性が、少なくとも１つの実装例に含まれることとして理解されたい。したがって、「１つの実施形態」又は「別の実施形態」という言い回しが利用されている場合、これらはそれぞれが、様々な実施形態及び実装例のことを示しており、必ずしも全てが同じ実施形態のことを示しているわけではない。しかし、必ずしもこれらが相互排他的であるわけでもない。
【０００５】
【図１】データセンタに備えられたサーバを利用してバイナリトランスレーションされたアプリケーションの、クラウドベースのサービス配信を提供するシステムの実施形態のブロック図である。
【０００６】
【図２】Ｘ８６ベースのサーバを利用するＡＲＭ  ＩＳＡアプリケーションのためのクラウドベースの配信システムの実施形態のシーケンス図である。
【０００７】
【図３】或る実施形態におけるターゲット命令セットへのソース命令セットのバイナリトランスレーションを示すブロック図である。
【０００８】
【図４】或る実施形態における、複数のコア、統合されたグラフィック及びメモリコントローラ、及び、トランスレーション専用論理を有するプロセッサのブロック図である。
【０００９】
【図５】Ｘ８６  ＣＰＵベースのサーバにおけるＱｏＳベースのバイナリトランスレーション及び実行ストリーミングの方法の実施形態の概略を示す。
【００１０】
【図６】ＡＲＭ  ＩＳＡバイナリトランスレーションのための、優先レベルベースの加速を利用するサーバ側の処理の実施形態のフロー図である。
【００１１】
【図７】或る実施形態における、グラフィックプロセッサ加速を利用する処理のフロー図である。
【００１２】
【図８】コンピュータアーキテクチャの例のブロック図である。
【図９】コンピュータアーキテクチャの例のブロック図である。
【図１０】コンピュータアーキテクチャの例のブロック図である。
【図１１】コンピュータアーキテクチャの例のブロック図である。
【００１３】
図面の説明を含む具体的な詳細及び実装例の説明を後述するが、図面は後述する実施形態の一部又は全て、及び、ここで提示する発明の思想の他の可能性のある実施形態又は実装例を説明している場合もある。実施形態の概略を以下に示し、その後で、より詳しい説明を図面を参照しながら行う。
【発明を実施するための形態】
【００１４】
リアルタイムアプリケーションストリーミングに、非ネイティブ命令セットアーキテクチャにコンパイルされたアプリケーションバイナリのリアルタイムアプリケーションストリーミングを組み合わせることは、ネットワークのレイテンシーと実行のオーバヘッドとによって実装が難しい。ここで説明する、アプリケーションのサービス品質（ＱｏＳ）基準ベースのサーバ側のバイナリトランスレーション実行は、分散されたトランスレーション及び実行を利用して、仮想化された実行環境又はネイティブの実行環境のいずれかで、複数のサーバに実行される。トランスレーションされたアプリケーションは、出力表示データを生成するよう実行され、出力表示データは、ビデオストリーミングに適したメディアフォーマットに符号化され、ビデオストリームは、ネットワークを介してクライアントデバイスに配信される。
【００１５】
一実施形態では、１以上のグラフィックプロセッサが、アプリケーション出力のレンダリングを加速することにより、サーバのセントラルプロセッサを補助する。或る実施形態は、ＱｏＳ基準を利用して、加速されたグラフィックレンダリングを利用するアプリケーション又はアプリケーションタイプを決定する。一実施形態では、メディア符号器、例えば、グラフィックプロセッサの固定機能メディア符号器、が、アプリケーション出力フレームの符号化を加速化する。一実施形態では、計算リソースに制約がある場合、１以上のサーバの１以上のセントラルプロセッサが、バイナリトランスレーションのための分散型計算を実行し、サーバの１以上のグラフィックプロセッサが、補助的な処理機能を提供する。
【００１６】
図１は、データセンタに備えられたサーバを利用してバイナリトランスレーションされたアプリケーションの、クラウドベースのサービス配信を提供するシステムの実施形態のブロック図である。図１では、Ｘ８６ベースのサーバを利用したＡＲＭ  ＩＳＡアプリケーション配信が示されているが、実施形態はそれに限定はされず、様々な実施形態を、アプリケーションサービスを分散型のコンピューティング環境に提供する任意のバイナリトランスレーション又はエミュレーション環境に利用することができる。一実施形態では、データセンター１００が、ＡＲＭ  ＩＳＡアプリケーションのクライアントデバイスのエンドポイント１７５（例えば、スマートフォン、タブレット、ラップトップ、パーソナルコンピュータ、及び、インテリジェントデバイス）への分散型の（例えばクラウドベースの）配信を提供する。クライアントエンドポイントのアプリケーションは、少なくとも部分的に、分散型のコンピューティング環境で実行され、アプリケーション出力が、クライアントエンドポイントにストリーミングされる。ユーザ体験の品質は、ＱｏＳ基準を利用して維持されることで、アプリケーションストリーミングの認知されるレイテンシーを最小限に抑え、クライアントデバイスに対して合意されているサービスのレベルを満たす。広範に分散された計算リソースは、並列に働き、バイナリトランスレーション及び実行を行い、アプリケーション出力を、限定された計算リソースをもつクライアントに配信する。
【００１７】
図１に示すように、実施形態は、複数のＸ８６中央処理装置（ＣＰＵ）ベースのサーバプラットフォーム１０２を、データセンタ１００内に備えている。ＡＲＭ  ＩＳＡアプリケーションバイナリＡｐｐ１−ａは、仮想マシン（ＶＭ）環境のＸ８６アプリケーションバイナリＡｐｐ１−ｂにトランスレーションされる。複数のＶＭが各サーバ（例えばＶＭ１  １０４からＶＭｎ  １０５）上で実行されて、ＡＲＭ  ＩＳＡアプリケーションバイナリをＸ８６アプリケーションバイナリにトランスレーションする。或る実施形態は、Ｘ８６サーバを利用して、トランスレーションされたアプリケーションバイナリを実行して、アプリケーション出力の各フレームについては、レンダラー１０８が、出力フレームを生成する。或る実施形態では、メディア符号器を利用して、出力フレームを符号化した後で、符号化された出力フレームをネットワークインタフェース１１２から、インターネット１５０等の相互接続されたネットワークを介して送信する。ＡＲＭ  ＩＳＡベースのクライアントデバイス等のクライアントデバイス１７５又はＸ８６ベースのクライアントデバイス１７９は、これらサービスを利用して、分散型のネットワークの処理能力を利用して、アプリケーションを実行することができる。非ネイティブのバイナリをＱｏＳ基準を利用して高速にトランスレーション又はエミュレーションすることで、遠隔アプリケーションストリーミングを、ローカル実行に合致したレイテンシーが生じるクライアントデバイスに配信することができるようになる。
【００１８】
レイテンシーを最小限にするために、アプリケーションストリーミングシステムは、優先度に基づくトランスレーションを含む様々なＱｏＳ基準を利用する。優先度に基づくトランスレーションは、トランスレーションリソースをスケジュールして、優先度に従って（in a prioritized manner）、様々なアプリケーションをトランスレーション及び実行するのに用いられる複数のＶＭに対して実行時間を提供するのに用いられる。優先度に基づくトランスレーションによって、往復レイテンシーが最小限に抑えられ、これにより、クライアントデバイスにおけるユーザ体験を維持しつつ、遠隔アプリケーション実行及びストリーミングが可能となる。優先度に基づくトランスレーションの一部として、別個のＱｏＳハードウェア属性をトランスレータコードに対して利用して、サーバプラットフォーム１０２の様々なプロセッサエレメントが、実行中にバイナリトランスレーション命令を認識して優先させるようにすることで、例えば、トランスレーション又はエミュレーションが、より高いアクセス優先度で実行されるようにする。高いアクセス優先度の命令は、システムリソースに対して、より大きなアクセス権を有する。例えば、プロセッサキャッシュではトランスレーションコードが優先され、トランスレーションのための命令及びメモリキューが、サーバで実行されている他のソフトウェアに対して高いキャッシュ優先度を有する。
【００１９】
ＱｏＳに関して更に考慮すべき点は、エミュレーションされるクライアントデバイスの表示解像度である。また別の重要なＱｏＳ基準として、ＡＲＭアプリケーション（例えばＡｐｐ１−ａ、Ａｐｐ２−ａ）をエミュレーション及びレンダリングするサーバの観点から考慮すべきクライアントエンドポイントの解像度がある。各ＶＭがレンダリングするフレームバッファの表示サイズは、ターゲットとなるクライアントエンドポイントの解像度に基づいて設定可能である。ＱｏＳ処理の一部として、データセンタ１００とクライアントデバイス１７５との間の様々なネットワークレイテンシーをクエリして、往復転送時間（round-trip transit times）を決定してよい。利用可能な実行容量及びネットワークレイテンシーに基づいて、それぞれ異なる出力解像度を、それぞれ異なる状況にあるクライアントデバイスに配信することができ、それぞれ異なるフレームバッファサイズを持つ、それぞれ異なるＶＭを利用することができる。一実施形態では、ＶＭがコンテンツを配信する際の元となる、フレームバッファサイズのセットに対して各ＶＭを設定することができる。
【００２０】
ＱｏＳに関して更に考慮すべき点は、クライアントデバイスの地理的位置である。クライアントエンドポイントとサーバとの間の距離は、サーバが実行及び符号化処理中に提供する、クライアントデバイスエンドポイントに途切れない配信を行うためのパフォーマンスのレベルに影響する。一実施形態では、複数の地理的領域にサービス提供するために複数のデータセンタを利用して、往復レイテンシーを最小限に抑える。
【００２１】
ＱｏＳに関して更に考慮すべき点は、サーバがエミュレーションするアプリケーションタイプである。サーバ１０２は、複雑なグラフィックをもつゲームアプリケーションを加速化するために、グラフィック処理リソースを利用する。グラフィックプロセッサは、各フレームのレンダリングを加速化して、フレームが、高いレベルのユーザ体験を維持し、ストリーミングフレームレートについてのサービスレベルの合意を満たすのに十分なレートで符号化され、クライアントデバイスに配信されるようにする。グラフィック集約度の低いオフィスアプリケーション又はゲーム等の他のアプリケーションは、分散型の処理環境の計算リソースを用いてレンダリングされる。加えて、コンピュータ支援設計（ＣＡＤ）アプリケーション等のアプリケーションも、幾何学的に複雑な設計をレンダリングするときにグラフィックプロセッサ加速を利用する。
【００２２】
ＱｏＳに関して更に考慮すべき点は、クライアントデバイスのメディア復号化機能セットである。様々なクライアントデバイス１７５の１つ（例えばＡＲＭ  ＩＳＡクライアントデバイス１７７、及び、Ｘ８６ＩＳＡクライアントデバイス１７９）の、符号化されたストリームを復号化する機能によって、サーバ１０２上の、エミュレーションされたＡＲＭアプリケーション出力を符号化するために利用される、サーバ側のアルゴリズムが決定される。例えば、クライアントデバイス１７５が、一定のメディアタイプ（例えばＨ．２６４）の加速化されたメディア復号化のためにメディア復号器ハードウェアを利用することができる場合には、サーバ１０２は、クライアントデバイスが受付可能なメディアタイプを利用してアプリケーション出力を符号化する。クライアントデバイス１７５が、加速化されたメディア復号化を実行できない場合には、サーバは、クライアントデバイスがクライアントデバイス１７５上でアプリケーションプロセッサを利用して復号化できるメディアフォーマットを利用してアプリケーション出力を符号化する。
【００２３】
図２は、Ｘ８６ベースのサーバを利用するＡＲＭ  ＩＳＡアプリケーションのためのクラウドベースの配信システムの実施形態のシーケンス図である。一実施形態では、クライアントデバイス２０２、例えば図１のクライアントデバイス１７５が、アプリケーションを実行せよとの要求２１２をクラウドベースのアプリケーションサービスを送信する。クライアントデバイスは、サーバにアプリケーションを提供することができ、又は、アプリケーションは、アプリケーションサービスの分散型実行環境に連結された分散型格納環境に格納することができる。要求は、サーバスケジューラ２０４に到着し、要求を処理するためのサービスレベルに関する合意（ＳＬＡ）の期限切れ日が、サーバスケジューラ２０４が、クライアントデバイス２０２に関するＱｏＳ基準を見直した後で、決定される。サーバスケジューラ２０４は、利用可能な実行リソースをもつサーバ２０６を選択し、要求をサーバ２０６にディスパッチする２１４。図２のサーバ２０６は、図１のＸ８６  ＣＰＵベースのサーバプラットフォーム１０２の一実施形態である。一実施形態では、サーバは、ネイティブ命令セット実行時間ではなく、エミュレーションされた実行時間の形で、利用可能な実行時間をサーバスケジューラに報告して、サーバスケジューラ２０４に、ＡＲＭ  ＩＳＡアプリケーションの観点からジョブをスケジュールさせる。
【００２４】
サーバ２０６が要求２１４をサーバスケジューラから受信した場合には、サーバは、受領確認２２６をサーバスケジューラ２０４に送信して、要求が受け付けられ、ＳＬＡタイムフレーム内で実行されることを示す。サーバ２０６がＳＬＡ期限切れの前に要求に応じたサービスを提供することができない場合には、サーバスケジューラは、要求を割り当て直し、又は、該サーバのために更なる計算リソースをプロビジョンすることができる。サーバ２０６は、図１の複数のＶＭ（例えばＶＭ１  １０４からＶＭｎ  １０６）のうちの１つの実施形態である、仮想マシン２０８等の仮想マシン環境を利用して、様々なアプリケーション及びクライアントデバイス（例えばクライアントデバイス２０２）のためにバイナリトランスレーションを行う。様々なＶＭは、複数のクライアントデバイスの特徴に基づいて設定することができ、実行リソースは、実行期限に間に合わせるためにＶＭ間に分散される。サーバ２０６の或る実施形態では、利用可能な仮想マシンのリストを見直し、仮想マシン２０８へのアプリケーション要求をディスパッチする２１６。
【００２５】
サーバ２０６への要求２１４が仮想マシン２０８にディスパッチされると２１６、トランスレーション処理２１８をアプリケーションに行い、トランスレーションされたアプリケーション２２８をサーバ上のメモリに生成する。一実施形態では、トランスレーションされたアプリケーションが、サーバ２０６内に備えられている、又は、データセンタ１００内の他のサーバで利用可能な、サーバ２０６が利用可能な複数のプロセッサを利用して、サーバ２０６でネイティブに実行される。一実施形態では、サーバ上の１以上のプロセッサが、アプリケーションバイナリにＩＳＡエミュレーション環境を提示する、命令セットエミュレーションソフトウェアを実行する。一実施形態では、バイナリトランスレーション及び命令セットエミュレーションの両方が利用可能であり、或る実施形態は、いずれかの方法を実行可能な仮想マシンを配備することができる。動的バイナリトランスレーションを利用して良好に実行されることが分かっているタスク又はアプリケーションは、バイナリトランスレーションを実行可能な仮想マシンに割り当てられる。エミュレーション環境で良好に実行されることが分かっているタスク又はアプリケーションは、サーバにネイティブではないバイナリのための命令セットエミュレーションを利用する仮想マシンに割り当てられる。一実施形態では、要求されたＡＲＭ  ＩＳＡアプリケーションと同じ機能を提供する、許容できるＸ８６  ＩＳＡに類似したプログラムの代替リストである。例えば、サーバ又は仮想マシンのネイティブ命令セットで利用可能なバイナリをもつユーティリティ又はライブラリが、トランスペアレントに代替される。
【００２６】
アプリケーションの各出力フレームを表示するために、仮想マシンにネイティブに又は仮想マシン内に、サーバ２０６に出力フレームをレンダリングして符号化して、出力フレームを、クライアントデバイス２０２の復号化機能に基づいて符号化する。例えば、第１の出力フレーム２３６がクライアントデバイスに送信され、復号化されて、クライアントデバイスのディスプレイに表示される。サーバ２０６は、次に、第２の出力フレーム２４６を送信し、クライアントデバイス２０２が自身のディスプレイを更新したとき、第１の出力フレーム２３６と連続して表示させる。サーバ２０６は、計算リソースをアプリケーションと仮想マシンとの間で移行させることができ、各アプリケーションフレームを適時レンダリング、符号化、及び、配信することができるＱｏＳ基準の利用によりスムーズなアプリケーション体験を提供するのに十分なレートでクライアント２０２に出力フレームを提供する。制御入力２２２は、ユーザが示すとクライアントデバイスからサーバに配信され、制御入力２２２は、サーバで実行されているアプリケーションに配信され、サーバは、出力フレームＮ２９６がクライアントデバイスに配信されると、制御入力２２２に呼応する。
【００２７】
図３は、或る実施形態におけるターゲット命令セットへのソース命令セットのバイナリトランスレーションを示すブロック図である。或る実施形態は、バイナリ変換を、ソフトウェア、ファームウェア、及び、ハードウェアの組み合わせを利用して実装し、トランスレーション及び変換専用プロセッサ命令を利用して、変換及びトランスレーションの具体的な側面を加速化する。非Ｘ８６からＸ８６へのトランスレーション及びエミュレーションが例示されているが、実施形態はこれに限定はされない。ネイティブに実行された命令については、高レベル言語３０２のプログラムが、ｘ８６コンパイラ３０４を用いてコンパイルされ、Ｘ８６命令セットを実行することができる少なくとも１つのプロセッサコア３１４をもつプロセッサがネイティブに実行可能なｘ８６バイナリコード３０６を生成する。少なくとも１つのｘ８６命令セットコア３１４をもつプロセッサは、少なくとも１つのＸ８６命令セットコアをもつインテル社製プロセッサと実質的に同じ機能を実行することができる任意のプロセッサを表している。プロセッサ３１４は、インテル社製のＸ８６命令セットコア又はアプリケーションのオブジェクトコードバージョン又はインテル社製プロセッサ上で実行することを対象としている他のソフトウェアの命令セットの実質的な部分を互換性を持って実行し、又は、処理する。
【００２８】
Ｘ８６コンパイラ３０８は、追加のリンク処理があってもなくても、少なくとも１つのｘ８６命令セットコア３１４を持つプロセッサ上で実行することができるｘ８６バイナリコード３１０（例えばオブジェクトコード）を生成することができるコンパイラを表す。同様に、高レベル言語３０２のプログラムが、代わりの命令セットコンパイラ３０４を利用してコンパイルされて、代わりの命令セットバイナリコード３０６を生成するとき、該バイナリは、プロセッサによって、該代わりの命令セット３１６を用いてネイティブに実行可能である。例えば、非Ｘ８６コアを持つプロセッサが、カリフォルニア州ＳｕｎｎｙｖａｌｅのＭＩＰＳ  Ｔｅｃｈｎｏｌｏｇｉｅｓ社のＭＩＰＳ命令セットを実行する、又は、カリフォルニア州ＳｕｎｎｙｖａｌｅのＡＲＭ  Ｈｏｌｄｉｎｇｓ社のＡＲＭ命令セットを実行する、プロセッサを含む。命令変換器３１２は、非Ｘ８６バイナリコード３０６を、Ｘ８６命令セットコア３１４等のプロセッサがネイティブに実行可能なコード、に変換する。
【００２９】
或る実施形態は、命令変換器３１２と協働して、ハードウェア３１３を利用して、命令変換加速化を行う。命令変換アクセラレータ３１３は、仮想化及びトランスレーションタスクのために、サーバチップセットとプロセッサベースの加速化とを含む。例えば、Ｘ８６  ＩＳＡ拡張及び高度化が含められることで、３２ビット及び６４ビットの実行モードを含むＸ８６プロセッサの或る実施形態のＡＲＭ  ＩＳＡトランスレーションが加速化される。Ｘ８６命令セット拡張は、ＡＲＭ  ｖ８命令セットの条件文（conditonal）を含むＡＲＭ  ＩＳＡ専用条件文（ARM ISA specific conditional）を処理する命令を含む。
【００３０】
更なる命令セット拡張は、非ネイティブ命令セットからトランスレーションされた命令を、より容易に実行するＸ８６命令の別の変形例を提供する。例えば、更なるＸ８６命令は、トランスレーションされるＡＲＭ  ＩＳＡ命令がメモリ参照を行っていること、整数演算を算術論理ユニット（ＡＬＵ）で行っていること、浮動小数点演算を浮動小数点ユニット（ＦＰＵ）で行っていること、を示すために利用可能である。ソフトウェア、ファームウェア、及び、ハードウェアの組合せにより、命令変換器３１２及び命令変換アクセラレータ３１３は、Ｘ８６命令セットプロセッサ又はコア３１４を持つプロセッサその他の電子機器に、非Ｘ８６バイナリコード３０６を実行させる。
【００３１】
図４は、或る実施形態における、複数のコア、統合されたグラフィック及びメモリコントローラ、及び、トランスレーション専用論理を有するプロセッサ４００のブロック図である。プロセッサ４００は、第１のコア４０２ＡからＮ個のコア４０２Ｎまでの複数のコアを含む。さらに、システムエージェント４１０、１以上のバスコントローラユニットのセット４１６、及び、システムエージェントユニット４１０内に１以上の統合されたグラフィック及びメモリコントローラユニットのセット４１４が存在している。加えて、専用トランスレーション専用論理４０８が、非Ｘ８６命令セットからのバイナリトランスレーション又はエミュレーションを加速化するために存在している。
【００３２】
プロセッサ４００の様々な実施形態が、リアルタイムのバイナリトランスレーション、実行、及び、ストリーミングをクライアントデバイスに提供するよう設計されたサーバ内での利用に適しており、一方で、ＱｏＳ基準を利用することで、サービス及び品質レベルについて合意された範囲でアプリケーション配信をストリーミングすることができる、汎用プロセッサコアとして設定されている。グラフィック及びメモリコントローラユニット４１４は、グラフィックを多用する演算（graphically intesive operations）であるとＱｏＳ基準が決定するもののためのレンダリングを加速化する１以上のグラフィックエンジンを含む。サーバ上のグラフィックエンジンが十分利用されていない場合、グラフィックエンジンはＧＰＧＰＵ（汎用グラフィック処理ユニット）の機能を提供して、プロセッサ４００上で命令を実行しているアプリケーション又は仮想マシンに補助的な実行リソースを提供する。一実施形態では、プロセッサ４００は、サーバで実行されている仮想マシンに大量の計算リソースを提供するべく、高いスループットの多くの集積コア（ＭＩＣ）コプロセッサ（３０個以上のコアを含む）である、又は、これを利用する。プロセッサ４００の１以上のコンポーネントは、１以上の基板の一部であってもよいし、及び／又は、例えばBiCMOS、CMOS、又はNMOS等の多くのプロセス法のいずれかを利用して１以上の基板に実装されてもよい。
【００３３】
メモリ階層は、コア内の１以上のレベルのキャッシュ、１セットの又は１以上の共用キャッシュユニット４０６、及び、統合されたグラフィック及びメモリコントローラユニットのセット４１４に連結された外部メモリ（不図示）を含む。該１セットの共用キャッシュユニット４０６は、１以上の中間レベルのキャッシュを含む（例えば、レベル２（Ｌ２）及びレベル３（Ｌ３）キャッシュ）。一実施形態では、リングベースのインターコネクトユニット４１２が、トランスレーション論理４０８、該１セットの共用キャッシュユニット４０６、及び、統合されたグラフィック及びメモリコントローラユニット４１４を含むシステムエージェントユニット４１０をインターコネクトする。一実施形態では、１以上のキャッシュユニット４０６とコア４０２−Ａ−Ｎとの間でコヒレンシーを維持する。
【００３４】
幾つかの実施形態では、コア４０２Ａ−Ｎの１以上が、マルチスレッディングを行うことが可能である。システムエージェント４１０は、コア４０２Ａ−Ｎの間の調整を行い、実行させるコンポーネントを含む。システムエージェントユニット４１０は、例えば、電力制御ユニット（ＰＣＵ）及び表示ユニットを含んでよい。ＰＣＵは、コア４０２Ａ−Ｎ及び統合されたグラフィック論理４０８の電力状態を調整するために必要な論理及びコンポーネントであってよく、又はこれらを含んでよい。表示ユニットは、１以上の外部接続されたディスプレイを駆動するためのものである。
【００３５】
コア４０２Ａ−Ｎは、アーキテクチャ命令セットの観点から均質であっても異質であってもよい、つまり、コア４０２Ａ−Ｎのうち２以上が、同じ命令セットを実行可能であってよく、他のものが、命令セットのサブセットのみ、又は異なる命令セットを実行可能であってよい。一実施形態では、１以上のコア４０２Ａ−Ｎが、標準的なＸ８６命令セットを実行し、１以上の更なるコアが、トランスレーション専用論理４０８を活用する拡張Ｘ８６命令セットを実行する。
【００３６】
図５は、Ｘ８６  ＣＰＵベースのサーバにおけるＱｏＳベースのバイナリトランスレーション及び実行ストリーミングの方法の実施形態の概略を示す。一実施形態では、クラウドベースのアプリケーションストリーミングサービスが、ブロック５０２に示すように、ネットワーク経由で、ＡＲＭ  ＩＳＡアプリケーションを実行せよとの要求を受信する。ブロック５０４で、サーバスケジューラが、ＱｏＳ基準を見直して、基準に基づいてサーバにアプリケーションを割り当てる。例えば、サーバスケジューラは、計算及びグラフィックの集約度に基づいて要求優先度にアクセスすることができ、十分な実行容量をもつサーバに要求を割り当てることができる。サーバスケジューラの或る実施形態では、可能な場合、同じサーバに同じアプリケーションのための連続した要求を割り当てて、サーバが、トランスレーションされたアプリケーションをアプリケーションキャッシュから、又は前にトランスレーションされたアプリケーションを取得することができるようにすることで、サーバは、同じアプリケーションバイナリのトランスレーションが繰り返されないようにする。或る実施形態では、さらに、要求されているＡＲＭ  ＩＳＡアプリケーションと同じ機能を提供する、許容できるＸ８６  ＩＳＡに類似したプログラムのための代替リストも維持する。許容できるＸ８６  ＩＳＡに類似したプログラムが、ネイティブに又は前に実行したトランスレーションによって、利用可能な場合には、サーバは、Ｘ８６に類似したプログラムをＡＲＭ  ＩＳＡプログラムとトランスペアレントに代替する。
【００３７】
ブロック５０６で、サーバは、サーバの仮想マシンのセットで実行されている仮想サーバのセットを見直して、タスクのＱｏＳ基準と相関性のある利用可能な仮想マシンに、トランスレーションタスクを割り当てるが、ここで利用可能な仮想マシンとは、適切なフレームバッファサイズをもつＶＭ，又は、適切な量の利用可能なグラフィックコントローラ実行リソースをもつＶＭ等である。ブロック５０８で、ＡＲＭ  ＩＳＡアプリケーションバイナリを、割り当てられた仮想マシン内でトランスレーションする。プロセッサは、トランスレーションソフトウェア及び仮想マシンが利用できるＡＲＭ  ＩＳＡトランスレーション専用の命令を提供する。実施形態は、他のコードよりも高い優先度でトランスレーション命令を実行することができ、これにより、トランスレーション命令及びデータに、トランスレーションソフトウェアを実行するために利用される様々なプロセッサで実行されている他のタスクよりも高いキャッシュ優先度を与えることができる。
【００３８】
ブロック５１０に示すように、トランスレーションされたアプリケーションは、サーバ上で実行されて、該アプリケーションのための表示出力を生成する。クライアントデバイスのユーザが提供する入力データ又は制御入力は、サーバ上で実行されているアプリケーションに配信されることで、クライアントデバイスのユーザは、実行されているアプリケーションを、あたかもアプリケーションがクライアントデバイスで実行されているかのように制御することができる。出力の各フレームは、サーバでレンダリングされ、ブロック５１２で、出力がメディアフォーマットに符号化され、ネットワークを介してクライアントデバイスに送信される（ブロック５１４に示す）。実行、符号化、及び送信は、クライアントデバイスの表示解像度、サーバとクライアントデバイスとの間のネットワークの往復レイテンシー、及び、遠隔実行されているアプリケーションタイプ等のＱｏＳ基準によって統括される。一実施形態では、サーバは、グラフィックを多用する演算についてグラフィックプロセッサ加速化を利用する。サーバ上の１以上のグラフィックプロセッサは、タイムスライスされることができ、これにより、サーバ上で実行されている各仮想マシンには、実行の優先度に基づいて特定の量のグラフィックプロセッサ実行時間が与えられる。一実施形態では、サーバは、汎用計算機能を持つグラフィックプロセッサを利用して、グラフィックプロセッサに、サーバの様々なプロセッサ及びサーバに連結された様々な分散されているプロセッサを補助するために、補助的な計算リソースを提供させることができる。
【００３９】
図６は、ＡＲＭ  ＩＳＡバイナリトランスレーションのための、優先レベルベースの加速を利用するサーバ側の処理の実施形態のフロー図である。ブロック６０２に示すように、或る実施形態は、サーバとクライアントデバイスとの間のレイテンシー、及び、アプリケーションのサービスレベルに関する合意（ＳＬＡ）期限に基づいて、アプリケーションの優先度を決定する。品質の高いサービスを維持するために、合意されたサービスのレベルは、遠隔のアプリケーション実行のためにサーバによって提供される。クライアントデバイスは、合意された期間内に、遠隔の実行要求に対して応答することを予期しており、期限までの残り時間は、トランスレーションの実行優先度に関する通知である。例えば、スケジューリングの遅延によって、アプリケーションのトランスレーションについて窓が少なくなった場合、トランスレーションタスクに高い優先度を与え、更なる計算リソースをトランスレーションタスクに与えることで、トランスレーションタスクを加速化する。
【００４０】
ブロック６０２に示すように、アプリケーションの優先度を決定することと平行して、或る実施形態では、ブロック６０４で、潜在的な仮想マシン（ＶＭ）の割り当てのリストを生成する。潜在的な割り当ては、クライアントデバイスの特徴及びアプリケーションタイプを含むＱｏＳ基準に基づいている。潜在的な割り当てのリストは、クライアントデバイスの表示解像度に準拠したフレームバッファ構成をもつＶＭ、又は、アプリケーションがグラフィックを多用するものである場合には、利用可能なグラフィックプロセッサ実行リソースを十分もつＶＭを含む。ブロック６０６で、利用可能な実行リソースに基づいて、潜在的なＶＭのリストから、仮想マシンを選択して、アプリケーションバイナリをＶＭに割り当てる。ＶＭは次に、ブロック６０８に示すように、バイナリトランスレーションを行う。
【００４１】
一実施形態では、高い優先レベルをもつ仮想マシンでバイナリトランスレーションを加速化するために優先度執行メカニズムが用いられる。例えば、あるトランスレーションプロセスの期限に近づいている場合、サーバは、より大きな実行リソースをトランスレーションＶＭに加えることによって、トランスレーションプロセスを加速化することができる。サーバハードウェアに統合されたレジスタビット、ハードウェアタイマ、及び制御論理は、ＶＭ実行を管理して、高い優先度のタスクを行うＶＭに、より大きな実行リソースを提供するために利用される。
【００４２】
図７は、或る実施形態における、グラフィックプロセッサ加速を利用する処理のフロー図である。ＱｏＳベースのバイナリトランスレーション及びアプリケーションストリーミングの実施形態は、ブロック７０２で、トランスレーションされたアプリケーションのＱｏＳ基準を見直すことから開始される。例えば、デバイス表示解像度及びアプリケーションタイプを含むＱｏＳ基準は、アプリケーションに存在するグラフィック複雑度の指標である。もしもブロック７０４で、該アプリケーションが高いグラフィック負荷をもつと決定された場合、ブロック７０６に示すように、サーバはアプリケーションを実行して、グラフィックプロセッサ加速を用いてフレーム出力をレンダリングする。例えば、ＨＤ解像度（例えば1280x720, 1920x1080など）で実行されているゲームアプリケーションは、アプリケーションの出力フレームをレンダリングするためにグラフィックプロセッサを利用する。ＱｏＳ基準が、汎用プロセッサコアを用いてＳＬＡ期間内にアプリケーションを実行できると示している場合には、ブロック７０８に示すように、１以上のＣＰＵコアを利用してアプリケーションの出力フレームの実行及びレンダリングを行う。スプレッドシート、又は、その他のオフィスアプリケーション等のユーティリティアプリケーションは、グラフィック加速化を利用せずに実行できる可能性が高い。しかし、或る実施形態では、例えば、ネットワークレイテンシーが、加速化されたレンダリングを利用しないとＳＬＡ期限に間に合わせることが難しいと示している場合に、レンダリングを加速化するためにグラフィックプロセッサを利用することができる。
【００４３】
レンダリングの後で、ブロック７１０に示すように、出力フレームをメディアフォーマットに符号化する。或る実施形態では、クライアントデバイスがハードウェア加速化された復号をサポートしているかを含むクライアントデバイスメディア復号機能のセットに基づいて、利用するメディアフォーマットを決定する。例えば、クライアントデバイスがＨ．２６４フォーマットで符号化されたメディアのハードウェア加速された復号をサポートしている場合には、サーバは、出力フレームをクライアントデバイスに送信する前に該出力フレームをＨ．２６４フォーマットに符号化することができる。一実施形態では、サーバは、クライアントデバイスに送信する前に、出力フレームを符号化するために専用のメディア符号化ハードウェアを利用する。一実施形態では、グラフィックプロセッサは、メディア符号化ハードウェアを含む。一実施形態では、プロセッサは、メディア符号化を加速化するための命令をサポートしている。
【００４４】
図８から図１１は、コンピュータアーキテクチャの例のブロック図である。ラップトップ、デスクトップ、手持ち型のＰＣ、スマートフォン、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、エンベデッドプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、グラフィックデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、セルフォン、ポータブルメディアプレーヤ、手持ち型デバイス、及び、様々なその他の電子デバイス等の分野で知られている他のシステム設計及び設定もまた適している。
【００４５】
図８は、或る実施形態におけるシステム８００のブロック図である。システム８００は、コントローラハブ８２０に連結された１以上のプロセッサ８１０、８１５を含む。一実施形態では、コントローラハブ８２０は、グラフィックメモリコントローラハブ（ＧＭＣＨ）８９０及び入出力ハブ（ＩＯＨ）８５０を含み、ＧＭＣＨ８９０は、メモリ８４０及びコプロセッサ８４５に連結されたメモリコントローラ及びグラフィックコントローラを含み、ＩＯＨ８５０は、入出力（Ｉ／Ｏ）デバイス８６０をＧＭＣＨ８９０に連結させる。あるいは、メモリコントローラ及びグラフィックコントローラの一方又は両方が、プロセッサ内に統合されていてもよく（ここで説明されるように）、メモリ８４０及びコプロセッサ８４５が、プロセッサ８１０に連結され、コントローラハブ８２０が、ＩＯＨ８５０とともに１つのチップにあってもよい。
【００４６】
更なるプロセッサ８１５の任意の性質は、図８では波線で示されている。各プロセッサ８１０及び８１５は、ここで説明されるプロセッシングコアの１以上を含み、これらはそれぞれが、プロセッサ４００のあるバージョンである。
【００４７】
一実施形態では、メモリ８４０は、ダイナミックランダムアクセスメモリ（ＲＡＭ）である。一実施形態では、８４０は相変化メモリ（ＰＣＭ）又はＰＣＭとＤＲＡＭとの組合せである。少なくとも１つの実施形態では、コントローラハブ８２０は、プロセッサ８１０、８１５と、リングインタフェース等のマルチドロップバス、フロントサイドバス（ＦＳＢ）、QuickPath Interconnect(ＱＰＩ)等のポイントツーポイントインタフェース、又は類似した接続８９５等を介して通信する。
【００４８】
一実施形態では、コプロセッサ８４５が、例えば高スループットＭＩＣプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィックプロセッサ、ＧＰＧＰＵ、エンベデッドプロセッサ等の専用プロセッサである。一実施形態では、コントローラハブ８２０が、統合されたグラフィックアクセラレータを含んでよい。一実施形態では、ここで説明するように、メモリトランスレーション又はエミュレーション加速化ハードウェアが存在している。
【００４９】
物理リソース８１０、８１５の間には、アーキテクチャ、マイクロアーキテクチャ、熱、電力消費特性等を含む、利点の測定基準の範囲（spectrum of metrics of merit）において様々な差異がある。
【００５０】
図９は、或る実施形態における、より具体的な例におけるサーバシステム９００のブロック図である。図９に示すように、マルチプロセッサシステム９００は、ポイントツーポイントインターコネクトシステムであり、ポイントツーポイントインターコネクト９５０を介して連結された第１のプロセッサ９７０と第２のプロセッサ９８０とを含む。プロセッサ９７０及び９８０のそれぞれは、プロセッサ４００の変形例である。一実施形態では、プロセッサ９７０及び９８０が、それぞれ、プロセッサ８１０及び８１５であり、コプロセッサ９３８は、コプロセッサ８４５である。別の実施形態では、プロセッサ９７０及び９８０は、それぞれ、プロセッサ８１０及びコプロセッサ８４５である。
【００５１】
プロセッサ９７０及び９８０は、それぞれ、統合されたメモリコントローラ（ＩＭＣ）ユニット９７２及び９８２である。プロセッサ９７０はさらに、そのバスコントローラユニットの一部として、ポイントツーポイント（Ｐ−Ｐ）インタフェース９７６及び９７８を含み、第２のプロセッサ９８０が、Ｐ−Ｐインタフェース９８６及び９８８を含む。プロセッサ９７０、９８０は、ポイントツーポイント（Ｐ−Ｐ）インタフェース９５０を介して、Ｐ−Ｐインタフェース回路９７８、９８８を利用して情報を交換する。図９に示すように、ＩＭＣ９７２及び９８２は、プロセッサをそれぞれ、メモリに連結し、メモリとはつまり、それぞれのプロセッサにローカルに接続されたメインメモリの一部であってよいメモリ９３２及び９３４である。
【００５２】
プロセッサ９７０、９８０はそれぞれ、ポイントツーポイントインタフェース回路９７６、９９４、９８６、９９８を利用して、個々のＰ−Ｐインタフェース９５２、９５４を介して、チップセット９９０と情報を交換する。チップセット９９０は、任意で、高パフォーマンスインタフェース９３９を介してコプロセッサ９３８と情報を交換する。一実施形態では、コプロセッサ９３８は、例えば高スループットＭＩＣプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィックプロセッサ、ＧＰＧＰＵ、エンベデッドプロセッサ、バイナリトランスレーションアクセラレータ等の専用プロセッサである。
【００５３】
共用キャッシュ（図示せず）が、いずれかのプロセッサ内に含まれていてもよいし、又は両方のプロセッサの外部に含まれいるがＰ−Ｐインターコネクトを介してこれらプロセッサと接続されていてもよく、あるプロセッサが低電力モードに置かれると、いずれか又は両方のプロセッサのローカルキャッシュ情報が共用キャッシュに格納されるようにしてよい。一実施形態では、９００の共用キャッシュが、ここで説明したトランスレーション加速化機能及び仮想化加速化機能に優先度を与えてよい。
【００５４】
チップセット９９０は、インタフェース９９６を介して第１のバス９１６に連結される。一実施形態では、第１のバス９１６が、ＰＣＩ（Peripheral Component Interconnect）バス、又はＰＣＩ  Ｅｘｐｒｅｓｓバス又は別の第３世代Ｉ／Ｏインターコネクトバス等のバスであるが、これらは限定ではない例である。
【００５５】
図９に示すように、様々なＩ／Ｏデバイス９１４は、第１のバス９１６を第２のバス９２０に連結するバスブリッジ９１８もであるが、第１のバス９１６に連結されてよい。一実施形態では、コプロセッサ、高スループットＭＩＣプロセッサ、ＧＰＧＰＵ、アクセラレータ（例えばグラフィックアクセラレータ又はデジタル信号処理（ＤＳＰ）ユニット）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、又はその他のプロセッサ等の１以上の更なるプロセッサ９１５が、第１のバス９１６に連結される。一実施形態では、第２のバス９２０が、低ピンカウント（ＬＰＣ）バスである。一実施形態では、キーボード及び／又はマウス９２２、通信デバイス９２７、及び、命令／コード及びデータ９３０を含んでよいディスクドライブ又はその他の大容量記憶装置等の記憶ユニット９２８を含む様々なデバイスを、第２のバス９２０に連結することができる。更に、オーディオＩ／Ｏ９２４を、第２のバス９２０に連結することができる。他のアーキテクチャも可能である。例えば、図９のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス、リングバス、又は他のこれらのようなアーキテクチャを実装してもよい。
【００５６】
図１０は、或る実施形態における第２のより具体的な例のシステム１０００のブロック図である。図９及び図１０において類似したエレメントには、同様の参照番号を付し、図９の一定の側面を、図１０では省くことで、図１０の他の側面を曖昧にしないようにしている。
【００５７】
図１０は、一実施形態では、プロセッサ９７０、９８０が、集積メモリとＩ／Ｏ制御論理（「ＣＬ」）９７２及び９８２をそれぞれ含む。従って、ＣＬ９７２、９８２は、統合されたメモリコントローラユニットを含み、Ｉ／Ｏ制御論理を含む。図１０は、メモリ９３２、９３４がＣＬ９７２、９８２に連結されているのみならず、Ｉ／Ｏデバイス１０１４も、制御論理９７２、９８２に連結されていると示している。レガシーＩ／Ｏデバイス１０１５がチップセット９９０に連結されている。
【００５８】
図１１は、或る実施形態におけるＳｏＣ１１００のブロック図である。図４と同様のエレメントには同様の参照番号を付している。加えて、波線のボックスは、より高度なＳｏＣの、任意の特徴である。一実施形態では、ここに記載するクライアントデバイスが、ＳｏＣ１１００の変形例を含む。図１１では、インターコネクトユニット（１又は複数）１１０２が、１以上のコア４０２Ａ−Ｎ及び共用キャッシュユニット４０６のセットを含むアプリケーションプロセッサ１１１０と、システムエージェントユニット４１０と、バスコントローラユニット（１又は複数）４１６と、集積メモリコントローラユニット（１又は複数）４１４と、バイナリトランスレーション加速化論理を含む１セット又は１以上のコプロセッサ１１２０と、統合されたグラフィック論理、画像プロセッサ、オーディオプロセッサ、及びビデオプロセッサと、スタティックランダムアクセスメモリ（ＳＲＡＭ）ユニット１１３０と、ダイレクトメモリアクセス（ＤＭＡ）ユニット１１３２と、１以上の外部ディスプレイに連結される表示ユニット１１４０とに連結されている。一実施形態では、コプロセッサ（１又は複数）１１２０が、例えばネットワーク又は通信プロセッサ、圧縮エンジン、ＧＰＧＰＵ、高スループットＭＩＣプロセッサ、エンベデッドプロセッサ等の専用プロセッサを含む。一実施形態では、ビデオプロセッサ、統合されたグラフィック論理、又はＧＰＧＰＵが、１以上のコア４０２Ｎに含まれている。
【００５９】
ここで開示するメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの実装方法の組合せで実装されてよい。実施形態は、少なくとも１つのプロセッサ、記憶システム（揮発性及び不揮発性メモリ及び／又は記憶エレメントを含む）、少なくとも１つの入力デバイス、及び、少なくとも１つの出力デバイスを含むプログラム可能なシステムで実行されるコンピュータプログラム又はプログラムコードとして実装されてよい。
【００６０】
図９に示すコード９３０等のプログラムコードは、ここで記載する機能を実行して、出力情報を生成するための命令を入力するために適用されてよい。出力情報は、既知の方法で、１以上の出力デバイスに適用されてよい。この用途のために、処理システムは、デジタル信号プロセッサ（ＤＳＰ）、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、又はマイクロプロセッサ等のプロセッサを有する任意のシステムを含む。
【００６１】
プログラムコードは、処理システムと通信するために、高レベルの手続き型又はオブジェクト指向型のプログラミング言語で実装されてよい。プログラムコードは、所望の場合、アセンブリ又は機械語で実装することもできる。実際、ここで記載するメカニズムの範囲は、いずれか特定のプログラミング言語に限定はされない。いずれの場合においても、言語は、コンパイラ型又はインタープリタ型言語であってよい。
【００６２】
少なくとも１つの実施形態の１以上の態様を、プロセッサ内の様々な論理を表すマシン可読媒体に格納される代表命令で実装してもよく、これは、マシンにより読み出されると、マシンに、ここで記載した技術を実行するための論理を作成させる。これらの「ＩＰコア」として知られている表現は、有形の永続性のマシン可読媒体に格納され、様々な顧客又は製造所に供給され、実際に論理又はプロセッサを作成する製造マシンにロードされてよい。
【００６３】
これらマシン可読格納媒体は、これらに限定はされないが、マシン又はデバイスで製造又は形成される永続性の有形の物品構成が含まれてよく、これには、ハードディスク等の記憶媒体、フロッピー（登録商標）ディスク、光学ディスク、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭｓ）、書き換え可能ＣＤ（ＣＤ−ＲＷ）、及び光磁気ディスク等の他のタイプのディスク、読み出し専用メモリ（ＲＯＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）、消去可能かつプログラム可能な読み出し専用メモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的に消去可能かつプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）、相変化メモリ（ＰＣＭ）、磁気又は光学カード等の半導体デバイス、または、電子命令を格納するのに適したその他のタイプの媒体を含んでよい。
【００６４】
従って、実施形態はさらに、ここで説明した構造、回路、装置、プロセッサ、及び／又はシステム特徴を定義するハードウェア記述言語（ＨＤＬ）等の、命令を含む、又は、設計データを含む永続性の有形のマシン可読媒体も含んでよい。これらの実施形態も、プログラムプロダクトと称されてよい。
【００６５】
ここで記載したことの他に、開示された実施形態及び実装形態には、その範囲を逸脱せずとも様々な変形例が想到されよう。従って、ここに記載した図及び例は、例として捉えられるべきであり、限定的に捉えられるべきではない。実施形態の範囲は、以下の請求項を参照することによってのみ限定されるべきである。
【図１】
2014182798.tif 000003
【図２】
2014182798.tif 000004
【図３】
2014182798.tif 000005
【図４】
2014182798.tif 000006
【図５】
2014182798.tif 000007
【図６】
2014182798.tif 000008
【図７】
2014182798.tif 000009
【図８】
2014182798.tif 000010
【図９】
2014182798.tif 000011
【図１０】
2014182798.tif 000012
【図１１】
2014182798.tif 000013
【外国語明細書】
2014182798000001.pdf