(57)【要約】      （修正有）【課題】実行リソースを提供する技術を提供する。【解決手段】ＣＰＵとＧＰＵとの間で命令及び情報をスケジュール及び転送することにより、ワークロード、電力条件、又は利用可能なリソースに応じて、ＣＰＵとＧＰＵとがリソースを共有する。【選択図】図１
2014053033.tif 000002
【特許請求の範囲】
【請求項１】
中央処理演算装置（ＣＰＵ）と、
前記ＣＰＵに連結されたグラフィックスプロセッシングユニット（ＧＰＵ）と、
前記ＣＰＵ及び前記ＧＰＵの実行リソースを共有するためのロジックと
を備える装置。
【請求項２】
前記ＣＰＵと前記ＧＰＵとの間でページ情報を通信するためのロジックをさらに備える請求項１に記載の装置。
【請求項３】
前記ロジックは、前記ＣＰＵ及び前記ＧＰＵに共有される情報を格納する共有メモリリソースを有する請求項１に記載の装置。
【請求項４】
前記ロジックは、情報共有を促進するための、前記ＣＰＵと前記ＧＰＵとの間のダイレクトリンクを有する請求項１に記載の装置。
【請求項５】
前記ＧＰＵは、前記ＣＰＵによって使用される浮動小数点実行リソースを有する請求項２に記載の装置。
【請求項６】
前記ＣＰＵは、前記ＧＰＵによって使用される整数実行リソースを有する請求項２に記載の装置。
【請求項７】
前記ＧＰＵにスケジュールされる命令が、前記ＣＰＵに移動され、前記移動された命令の結果が、前記ＧＰＵに転送される請求項１に記載の装置。
【請求項８】
前記ＣＰＵにスケジュールされる命令が、前記ＧＰＵに移動され、前記移動された命令の結果が、前記ＣＰＵに転送される請求項１に記載の装置。
【請求項９】
中央処理演算装置（ＣＰＵ）と
前記ＣＰＵに連結されたグラフィックスプロセッシングユニット（ＧＰＵ）と、
前記ＣＰＵ及び前記ＧＰＵの実行リソースを共有するためのロジックと、
前記ＣＰＵ又は前記ＧＰＵによって使用されるシステムメモリと
を備えるシステム。
【請求項１０】
前記ＣＰＵと前記ＧＰＵとの間でページ情報を通信するためのロジックをさらに備える請求項９に記載のシステム。
【請求項１１】
前記ロジックは、前記ＣＰＵ及び前記ＧＰＵに共有される情報を格納する共有メモリリソースを有する請求項９に記載のシステム。
【請求項１２】
前記ロジックは、情報共有を促進するための、前記ＣＰＵと前記ＧＰＵとの間のダイレクトリンクを有する請求項９に記載のシステム。
【請求項１３】
前記ＧＰＵは、前記ＣＰＵによって使用される浮動小数点実行リソースを有する請求項１０に記載のシステム。
【請求項１４】
前記ＣＰＵは、前記ＧＰＵによって使用される整数実行リソースを有する請求項１０に記載のシステム。
【請求項１５】
前記ＧＰＵにスケジュールされる命令が、前記ＣＰＵに移動され、前記移動された命令の結果が、前記ＧＰＵに転送される請求項９に記載のシステム。
【請求項１６】
前記ＣＰＵにスケジュールされる命令が、前記ＧＰＵに移動され、前記移動された命令の結果が、前記ＣＰＵに転送される請求項９に記載のシステム。
【請求項１７】
中央処理演算装置（ＣＰＵ）と、
前記ＣＰＵに連結されたグラフィックスプロセッシングユニット（ＧＰＵ）と、
前記ＣＰＵ及び前記ＧＰＵの実行リソースを共有するためのロジックと、
前記ＣＰＵ及び前記ＧＰＵに連結され、命令をデコードするデコードロジックと、
前記命令を格納する命令キャッシュと、
前記命令をスケジュールするスケジューラロジックと
を備えるプロセッサ。
【請求項１８】
前記ＣＰＵと前記ＧＰＵとの間でページ情報を通信するためのロジックをさらに備える請求項１７に記載のプロセッサ。
【請求項１９】
前記ロジックは、前記ＣＰＵ及び前記ＧＰＵに共有される情報を格納する共有メモリリソースを有する請求項１７に記載のプロセッサ。
【請求項２０】
前記ロジックは、情報共有を促進するための、前記ＣＰＵと前記ＧＰＵとの間のダイレクトリンクを有する請求項１７に記載のプロセッサ。
【請求項２１】
前記ＧＰＵは、前記ＣＰＵによって使用される浮動小数点実行リソースを有する請求項１９に記載のプロセッサ。
【請求項２２】
前記ＣＰＵは、前記ＧＰＵによって使用される整数実行リソースを有する請求項１９に記載のプロセッサ。
【請求項２３】
前記ＧＰＵにスケジュールされる命令が、前記ＣＰＵに移動され、前記移動された命令の結果が、前記ＧＰＵに転送される請求項１７に記載のプロセッサ。
【請求項２４】
前記ＣＰＵにスケジュールされる命令が、前記ＧＰＵに移動され、前記移動された命令の結果が、前記ＣＰＵに転送される請求項１７に記載のプロセッサ。
【請求項２５】
前記スケジューラロジックは、整数命令をスケジュールする第１のスケジューラロジックと、浮動小数点命令をスケジュールする第２のスケジューラロジックとを有する請求項１７に記載のプロセッサ。
【請求項２６】
前記ＣＰＵと前記ＧＰＵとが、前記第２のスケジューラロジックを共有する請求項２５に記載のプロセッサ。
【請求項２７】
命令を、実行リソースの第１セットを有する第１のプロセッサにスケジュールする段階と、
前記命令を、実行リソースの第２セットを有する第２のプロセッサに移動させる段階と、
前記第２のプロセッサにおいて前記命令を実行して得られた情報を、前記第１のプロセッサに転送する段階とを備える方法。
【請求項２８】
前記第１のプロセッサは、中央演算処理装置（ＣＰＵ）であり、前記第２のプロセッサは、グラフィックスプロセッシングユニット（ＧＰＵ）である請求項２７に記載の方法。
【請求項２９】
前記第１のプロセッサは、ＧＰＵであり、前記第２のプロセッサは、ＣＰＵである請求項２７に記載の方法。
【請求項３０】
前記第１のプロセッサと前記第２のプロセッサとの間で、ページング情報を通信する段階をさらに備える請求項２７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理の分野に関し、特に、中央演算処理装置（ＣＰＵ）、グラフィックス・プロセッシング・ユニット（ＧＰＵ）又はこれらの組み合わせといったプロセッサ内の共有コンピューティングリソースの分野に関する。
【背景技術】
【０００２】
多くのアプリケーションが、マルチプロセッシングシステム及びマイクロプロセッサの並列処理（ｐａｒａｌｌｅｌ  ｐｒｏｃｅｓｓｉｎｇ）能力を利用するようになり、処理するワークの種類に応じてコンピューティングリソースを共有する要求が高まっている。例えば、並列プログラムは、ＧＰＵのような特定の処理に特化したハードウェアを利用することができ、一方、順次的に実行されるプログラムは、汎用ＣＰＵを利用することができる。現代のプログラムでは、並列及び順次オペレーションが入り交じって実行されることがあり、ＣＰＵ及びＧＰＵリソースを並行して、又は連続的に使用することにより、オペレーションの種類又は実行されるプログラムに応じて、コンピューティングリソースの最適化を図ることが考えられる。
【０００３】
本発明の実施形態は、例示の目的で示されるものであり、本発明を限定することを意図していない。また、添付の図面において、同様な構成要素には、同じ参照番号を付与している。
【図面の簡単な説明】
【０００４】
【図１】本発明の少なくとも１つの実施形態を利用することが考えられるマイクロプロセッサシステムのブロック図である。
【図２】一実施形態に係るＣＰＵ及びＧＰＵが共有するリソースを示した図である。
【図３】一実施形態に係る３Ｄグラフィックス・レンダリング・パイプラインを示した図である。
【図４】一実施形態に係る、複数のプロセッサによって共有される浮動小数点ロジックを示した図である。
【図５】一実施形態に従って実行されるオペレーションのフロー図である。
【図６】少なくとも一実施形態を使用可能な共有接続システムを示した図である。
【図７】本発明の少なくとも一実施形態を使用可能なポイント・ツー・ポイント接続コンピュータシステムを示した図である。
【発明を実施するための形態】
【０００５】
本発明の実施形態は、並列アプリケーション又は"スループット"アプリケーションを処理する、及び順次的にプログラムを実行するプロセッシングデバイス及びシステムに関する。ある実施形態は、より順次的なコードを実行するＣＰＵ及びより並列的なコードを実行するＧＰＵといった少なくとも２つのプロセッシングユニットを含む。並列的なプログラムの例としては、例えば、単一命令複数データ流（ＳＩＭＤ）若しくは"パックされた"命令又は"ベクトル"命令を使用して、並列処理を利用する３Ｄグラフィックスプログラム、科学的プログラム又は金融プログラムが挙げられる。一実施形態では、基礎となっているプロセッシングリソース（ＣＰＵ又はＧＰＵ）を考慮することなくプログラムが書かれた場合であって、いずれのプロセッシングリソースを使用すればプログラムの命令又はスレッドを最も好適に実行できるかという判断は、ハードウェア自身、ドライバ、ドライバのようなプログラム、仮想マシンマネージャ又は"ハイパーバイザ"のようなミドルウェアソフトウェアが行ってもよい。また、ある実施形態では、ＣＰＵ又はＧＰＵで実行されるスレッド又は命令グループは、スレッド又は命令によって実行されるオペレーションの複数部分について、ＣＰＵ又はＧＰＵといった他のプロセッシングリソースの処理能力を利用してもよく、この場合、共有メモリスペース又はダイレクトリンク接続を通じて、情報が共有される。
【０００６】
様々な種類のオペレーション及びプログラムが、実施形態を利用可能であり、この実施形態において、タスクはＧＰＵ及びＣＰＵの間で共有され、ＧＰＵオペレーション"パイプライン"に従ってオペレーションを実行する３Ｄグラフィックスレンダリングプログラムを含む。例えば、視錐台クリッピングは、多くの３Ｄグラフィックスアプリケーションで使用され、所与の時間に、どの多角形が視錐台に現れるかを決定する。これは、計算を主としたオペレーションであり、必ずしも、ＧＰＵの並列リソースを必要とするようなオペレーションではない。したがって、一実施形態では、視錐台クリッピングにおける一部又は全てのオペレーションを、ＧＰＵが他のオペレーションを実行している間に、利用可能な処理能力を有するＣＰＵに対して、"オフロード"することが可能である。ＣＰＵが視錐台クリッピングを実行するのに必要なデータは、ダイレクトリンクを使用してＧＰＵからＣＰＵへと直接的に送信してもよいし、ＰＣＩメモリ又は共有キャッシュ等の共有メモリスペースを通じて送信してもよい。視錐台クリッピングの結果は、共有記憶装置又はダイレクトリンクを通じて、ＣＰＵからＧＰＵへと戻され、ＧＰＵは、ＣＰＵから送信された視錐台クリッピングの結果を使用してシーン（ｓｃｅｎｅ）のレンダリングを続けることができる。一実施形態において、この種のリソース共有は、ＣＰＵ及び／又はＧＰＵ（又は、これらの外側のロジック）内のロジックにより制御され、他の実施形態においては、リソース共有は、ドライバ、ハイパーバイザ等のミドルウェアソフトウェアにより制御されるが、ユーザーソフトウェアは、リソース共有については認識していない。
【０００７】
本発明の実施形態は、ソフトウェアアプリケーションが、複数のプロセッサに対応して設けられた複数のストレージ構造にアクセスし、情報を格納するのを可能にする。例えば、単一命令複数データ流（ＳＩＭＤ）オペレーション又は複数命令複数データ流（ＭＩＭＤ）オペレーションを使用する並列命令又は並列アプリケーションを処理する場合に、このような構成が有用である。というのも、各ＳＩＭＤ又はＭＩＭＤオペレーションは、それらが位置する特定のメモリ構造を考慮することなく、共有メモリ構造から、オペランドデータ要素にアクセスできるからである。大量の情報の処理を並行して行うことができるため、特に、３Ｄグラフィックスアプリケーションや、金融アプリケーションに有効である。しかしながら、より順次的（ｓｅｑｕｅｎｔｉａｌ）な典型的なＣＰＵアプリケーションであっても、複数の異なるロケーションに格納された情報を利用できるので、有用である。
【０００８】
ある実施形態では、プログラム又はスレッドが、ＧＰＵでの処理が適している部分を含むＣＰＵで実行されることが考えられる。この場合、ＧＰＵで実行可能な命令及びスレッドは、上述したのと同様な形で、ＧＰＵで実行されてもよく、実行結果はＣＰＵに戻されて、さらなる処理を実行してもよい。典型的なＧＰＵは、非常に並列的な浮動小数点リソースを含むので、例えば、ＣＰＵにスケジュールされている浮動小数点命令を、共有メモリ又はダイレクトリンクを通じてＧＰＵに転送し、ＣＰＵが他の命令を実行している間に、ＧＰＵにて実行してもよい。そして、浮動小数点オペレーションは、結果を、共有メモリ又はダイレクトリンクを通じてＣＰＵに戻し、ＣＰＵは、これらの結果を、プログラムで実行されるべきオペレーションの残りの部分に取り込んでもよい。一実施形態において、ＣＰＵは、浮動小数点リソースを全く含まない又はほんの僅かな浮動小数点リソースを含み、例えば、ＧＰＵとＣＰＵとで浮動小数点リソースを共有するといった形で、ＣＰＵは、ＧＰＵの浮動小数点リソースに実質的に依存している。
【０００９】
ある実施形態では、メモリは、例えば、"ページ"のようなセグメントに従って編成及びアクセスされ、ページにアクセスするプロセッサ（又はメモリインターフェースロジック）は、構造（例えば、"ページテーブル"）を維持して、特定のメモリ構造のページサイズ又は組織を、プロセッサの又はメモリコントローラのページングサイズ又はスキームへと変換（ｍａｐ）してもよい。一実施形態では、例えば、プロセッサ又はメモリコントローラが、特定のメモリの物理ページを、一連の複数の仮想ページに変換してもよく、プログラムがページにアクセスするのに応答して、プロセッサ又はメモリコントローラはページの開閉をしてもよい。
【００１０】
ある実施形態では、プロセッサ又はメモリインターフェースのそれぞれは、他のメモリ構造にアクセスし、そのアクセスは他のプロセッサメモリインターフェースによって制御される又は他のプロセッサメモリインターフェースに対応することから、各プロセッサ又はメモリコントローラのページ状態（オープン／クローズ）間の一貫性を保つために、複数のプロセッサ及び複数のメモリコントローラ間で通信を行うことが望ましい。一実施形態において、ｎ幅の相互接続（"ｎ"は、チャネル／ピン／レーン／トレースの数を表す可変数であり、１以上の数）を使用して、様々なプロセッサ又はメモリコンローラ間のページ状態を通信してもよく、ある１つのプロセッサは、別のプロセッサがアクセスを必要とするようなメモリのページを閉じない。様々なプロセッサ（ＧＰＵ及びＣＰＵのような）又は１つ以上のメモリにアクセスするメモリコントローラ間のページ状態を通信することにより、不必要なページ開閉オペレーションを回避することができ、様々なプロセッサ又はメモリコントローラ間のアクセス性能を改善することができる。また、ある実施形態では、ｎ幅の相互接続は、相対的に低い帯域幅のものであってもよく、過度の数のピン、電力、又はその他のリソースを不要とすることができる。
【００１１】
本発明の実施形態によれば、データが格納されている又は格納される予定であるメモリデバイスを考慮することなく、複数のプロセッサでアプリケーションを実行することが可能となる。これは、例えば、一のグラフィックプロセッサが、ピクセルスクリーンの１／２をレンダリングし、別のグラフィックプロセッサが、残りの１／２をレンダリングするといったようなグラフィックスアプリケーションにおいて、特に有用である。このような場合では、一のプロセッサが、一のメモリから、隣接するテクセル情報（対応するプロセッサの１／２スクリーンにおけるに対応する情報）にアクセスする必要があり、別のプロセッサが、別のメモリから、隣接する情報（対応するプロセッサの１／２スクリーンにおけるに対応する情報）にアクセスする必要があることから、境界上のトライアングルは、フィルタされる場合に遅延を生じさせてしまう場合がある。この時、対応していないメモリから情報を必要としているプロセッサは、対応しているプロセッサを通じて情報を要求する必要があり、対応しているプロセッサは、要求元のプロセッサに情報を返答しなければならないため、プロセッサ間で比較的高い帯域幅のバスを必要とする帯域幅を使用してしまうことになる。このようなことを防ぐために、ソフトウェア開発者は、データの格納場所に制限を設けることを考えるが、特に、境界をまたぐようなトライアングルをレンダリングする場合などは、制限を設けることは非常に困難である。
【００１２】
一実施形態において、ページテーブルは、ソフトウェアによって提供されるアドレスを、スループットアプリケーションを実行するのに使用される２つのプロセッサに対応する２つのメモリにおけるロケーションに変換（ｍａｐ）する。特に、ページテーブルは、アドレスの複数のビットを使用して、２つのメモリ内の交互（ａｌｔｅｒｎａｔｉｎｇ)のロケーションに格納されたアドレス情報を含むテーブルのエントリ（要素）にアクセスする。したがって、ソフトウェアが情報を格納する又は情報にアクセスする時には、ページテーブルにより自動的にそのアクセスについて適切なメモリへのルートが提示されるので、要求元のソフトウェア（ＯＳ又はアプリケーション）が、情報が実際に格納されている場所を探索する又は考慮する必要がない。このようにして、いずれかのメモリから交互に、バースト速度で情報がアクセスされ、各プロセッサのメモリインターフェースの帯域幅を最大化することができ、相対的に高い帯域幅のバスを回避することができ、クロスメモリ／プロセッサアクセスをサポートすることができる。
【００１３】
ある実施形態では、コヒーレンシフィルタを使用する等の効率的な方法で要求を管理することにより、複数のプロセッサ（例えば、ＣＰＵ及びＧＰＵ）が、要求元アプリケーションにデータを提供してもよい。一実施形態では、コヒーレンシフィルタは、１つ以上のコヒーレンシテーブル、又は１つ以上のプロセッサによりアクセス可能な又は対応するその他の構造を含んでもよく、一のプロセッサで実行されているアプリケーションからのデータ要求が発生すると、別のプロセッサが現在アクセス可能なデータ（プロセッサのキャッシュ、バッファ又は他の構造における対応するデータ、又はプロセッサの対応するメモリにおいて現在オープンとなっているページにおける対応データ）のアドレスを示すテーブルに、このプロセッサがアクセスするようにしてもよい。要求されたデータの直近のバージョンが、別のプロセッサのキャッシュに存在する場合、要求を受信したプロセッサは、別のプロセッサに対して、要求されたデータを要求元アプリケーションに返答するよう信号で通知してもよいし、あるいは、要求を受信したプロセッサが、ｎ幅のプロセッサ間相互接続を通じて、別のプロセッサからデータを読み出してもよい。ある実施形態では、プロセッサは、複数のプロセッサを含んでもよく、この場合、各プロセッサは、プロセッサソケットに対応していてもよい。
【００１４】
ある実施形態では、上述した技術は、２、４、８又はそれ以上の数のプロセッサ又はコアを有するプロセッサ又はシステムに適用してもよく、同じ種類（ＣＰＵ）又は異なる種類（ＣＰＵとＧＰＵ）、若しくはその他のアクセラレータが含まれていてもよい。また、本発明の実施形態は、汎用コンピュータ、グラフィックスゲームコンソール、グラフィックスカードアプリケーションなどを含む様々なシステム、処理構成又はアプリケーションに適用可能である。一実施形態では、ここに記載される技術は、金融アプリケーション、医療アプリケーション、イメージングアプリケーションなどの３Ｄグラフィックス又は他のアプリケーションの実行する１つ以上のプロセッサに関する。他の実施形態では、ここに記載される技術は、順次的な又は典型的なワークロードを実行するため汎用ＣＰＵと共に利用される場合もある。また、他の実施形態では、ここに記載される技術は、典型的なＣＰＵ及びグラフィック専用ロジック（ＣＰＵ＋ＧＰＵ）を含むプロセッサなど、典型的なＣＰＵワークロードとスループットアプリケーションの両方を実行するよう設計されたハイブリッドプロセッサに関連して、利用されてもよい。また、一実施形態では、ここに記載される技術は、グラフィックテクスチャサンプリングロジックなど、並列アプリケーション専用ロジックと共に相互接続に連結され、ＳＩＭＤ命令を実行可能ないくつかのＣＰＵプロセッサコアを有する１以上のプロセッサに関連して、利用される。
【００１５】
図１は、本発明の少なくとも１つの実施形態を利用することが考えられるマイクロプロセッサを示す。図１には、典型的なＣＰＵアプリケーション、スループットアプリケーション（例えば、３Ｄグラフィックスアプリケーション）又は典型的なＣＰＵアプリケーションとスループットアプリケーションとの組み合わせに対して、利用可能なプロセッサが示されている。プロセッサ１００は、複数のプロセッシングコア１００−１〜１００−Ｎと、専用スループットアプリケーションハードウェア１１０（例えば、グラフィックス・テクスチャ・サンプリングハードウェア）と、メモリインターフェースロジック１２０とを含み、リング相互接続１３０に沿って配置されている。ある実施形態では、プロセッサ１００は、コア１００−１〜１００−Ｎそれぞれに位置するキャッシュ１０１−１〜１０１−Ｎからの情報を包含する１つ以上のラストレベルキャッシュ１３５を含んでもよい。一実施形態では、１つ以上のプロセッシングコア１００−１〜１００−Ｎは、ＳＩＭＤ処理を実行可能である。
【００１６】
一実施形態では、ＣＰＵはそれぞれ、ＧＰＵハードウェアにスケジュールされたオペレーションのいくつかを、共有メモリ又はダイレクトリンク（又は図１に示す実施形態における環状リンク）を通じて転送することにより、これらのオペレーションを実行することができる。反対に、グラフィックスハードウェアにスケジュールされたオペレーションを、同様のメカニズムを用いて利用可能なＣＰＵに転送することもできる。
【００１７】
ある実施形態では、グラフィックテクスチャのような情報又は比較的大量のメモリ帯域幅を必要とする他の情報に対して、アプリケーションソフトウェアが当該情報を格納するメモリを認識せず又は考慮することなく、他のプロセッサ（図示せず）に対応する他のメモリからアクセスがある場合が考えられる。また、ある実施形態では、プロセッサ１００は、図１に示されるより多くの又は少ない数のメモリコントローラを含んでもよい。また、図１のメモリコントローラは、プロセッサ１００の内部又は外部に設けられていてもよい。
【００１８】
図２は、一実施形態に係るＧＰＵ及びＣＰＵが共有するリソースを示したものである。一実施形態において、ＣＰＵ２０１は、順次的な（ｓｅｑｕｅｎｔｉａｌ）プログラムを実行するのに優先的に使用され、一方、ＧＰＵ２０５は、並列的（ｐａｒａｌｌｅｌ）なプログラムを実行するのに使用される。一実施形態において、ＣＰＵ又はＧＰＵのいずれかにスケジュールされた命令を、共有ストレージ２１０を使用してＣＰＵとＧＰＵとの間で転送又は"移動"することができる。一実施形態において、共有ストレージは、ＰＣＩ共有メモリとして数えられるメモリの領域であり、ＣＰＵ又はＧＰＵは、移動された命令に関連する情報を読み書きすることができる。例えば、グラフィックスオペレーションがＧＰＵにより実行される一実施形態において、グラフィックスオペレーションの一部は、ＣＰＵが利用可能である場合は、ＣＰＵへと転送し処理することができる。ＣＰＵが実行すべき命令及びデータを共有メモリに書き込み、また、割り込み又はＣＰＵ及びＧＰＵ間のダイレクトリンクを通じて、ＣＰＵが共有メモリリソースから情報を読み出すべきであり、そこに示された情報を実行すべきであることを指示する。一実施形態において、ＣＰＵが転送されてきたタスクを処理している間に、ＧＰＵはその他のオペレーションの処理を続けてもよい。ＣＰＵのタスクが完了すると、ＣＰＵは結果を共有メモリに書き込み、割り込み又はダイレクト通信リンクを使用して、ＧＰＵに結果が利用可能になったことを通知する、例えば、ＧＰＵが結果を読み込むことが可能であり、グラフィックス・レンダリング・パイプラインに取り込み可能であることを通知する。一実施形態において、共有メモリリソースの逆の使用方法を実行してもよく、ＣＰＵがオペレーションを実行し、そのうちの一部をＧＰＵに実行させてもよい。
【００１９】
一実施形態において、ＣＰＵ及びＧＰＵ間で転送される情報を共有する（例えば、共有メモリを使用する替わりに）及び／又は共有メモリにおいて利用可能な情報を互いに信号で伝えるのに、ダイレクトリンク（直接結合）２１５が使用される。一実施形態では、ダイレクトリンクは、ページ情報を共有するのに使用され、一のプロセッサが、他のプロセッサが必要とするかもしれないページを閉じてしまわないようにしている。一実施形態では、ＣＰＵとＧＰＵとの間でのリソースの共有は、ＣＰＵ、ＧＰＵ又はこれらの両方に位置するロジック、又はシステムのその他の位置に存在するロジックによって制御される。ある実施形態では、リソースの共有は、ミドルウェア、ドライバ、ドライバ状ソフトウェア、又は仮想マシンマネージャ、又はハイパーバイザにより制御される。利点として、アプリケーションソフトウェア又はＯＳが、リソースの共有について何も認識することなく、実施形態を利用することができるということが挙げられる。一実施形態において、グラフィックスＡＰＩの複数部分が、ＣＰＵ及びＧＰＵのリソース共有を制御してもよい。特に、基礎となるリソースを認識しているＡＰＩは、自身のグラフィックス・レンダリング・パイプラインで実行されるオペレーションに基づいて、リソースを使用してもよい。
【００２０】
図３は、一実施形態に係るグラフィックス・レンダリング・パイプラインを示したものである。一実施形態において、図３のグラフィックス・レンダリング・パイプラインは、入力アセンブラステージ３０１、頂点シェーダ（ｓｈａｄｅｒ）ステージ３０５、ジオメトリシェーダステージ３１０、ストリーム出力ステージ３１５、ラスタライザ（ｒａｓｔｅｒｉｚｅｒ）ステージ３２０、ピクセルシェーダステージ３２５及び出力合成ステージ３３０を含む。また、グラフィックス・レンダリング・パイプラインは、共有メモリリソース３３５に位置するバッファのような、共有メモリリソースを利用してもよい。
【００２１】
一実施形態において、図３に示したグラフィックス・レンダリング・パイプラインの１以上のステージ又は１以上のステージの一部を、実行されるオペレーション及びハードウェアリソースの利用可能度に応じて、ＣＰＵリソース又は別のＧＰＵリソースに転送してもよい。例えば、一実施形態では、利用可能なハードウェアリソースを持つＣＰＵにより、頂点シェーダステージを実行し、この場合、例えば、共有メモリリソースを使用して、ＡＰＩにより命令をこのＣＰＵに転送又はスケジュールする。ＣＰＵがオペレーションを完了したら、共有メモリリソースを使用して、その結果をＧＰＵに転送してもよい。一実施形態において、ＡＰＩ又はその他のソフトウェアは、実行すべき命令をＣＰＵにスケジュールし、また一部をＧＰＵにスケジュールしてもよく、この場合、ＣＰＵ及びＧＰＵはそれぞれ、独自のスケジューリングロジック又は共有スケジューリングロジック、及び浮動小数点ロジックのような共有リソースを有する。一実施形態において、整数オペレーションを、（ＣＰＵ内に位置してもよい）整数ロジックにスケジュールし、浮動小数点オペレーションを、（ＧＰＵ内に位置してもよい）浮動小数点ロジックにスケジュールしてもよい。
【００２２】
図４は、ＣＰＵ及びＧＰＵが、浮動小数点リソース及び整数リソースを共有する１つの実施形態を示したものである。図４に示すように、プロセッサ４００は、命令をフェッチするフェッチロジック４０１、命令をデコードするデコードロジック４０５、命令が使用するデータを格納するＬ１データキャッシュ４１０ａ〜ｂ、複数のエージェントによって使用される共有Ｌ２キャッシュ４１５及び共有Ｌ３キャッシュ４２０を有する。また、図４には、整数命令を実行する整数実行リソース４２５ａ〜ｈ、及び浮動小数点命令を実行する浮動小数点実行リソース４３０ａ〜ｂが示されている。また、一実施形態では、浮動小数点実行リソース及び整数実行リソースは、それぞれ自身専用のスケジューリングロジック４３５ａ〜ｂ及び４４０を有する。一実施形態では、浮動小数点リソースは、１２８ビット浮動小数点乗算累算（ＦＭＡＣ）ロジックを含む。ある実施形態では、スケジューリングリソースは、少なくとも一部共有される。
【００２３】
一実施形態では、浮動小数点リソースを必要とする命令を、浮動小数点スケジューラを使用して、浮動小数点リソースにスケジュールすることができ、整数実行リソースを必要とする命令を、整数スケジューラを使用して、整数実行ユニットにスケジュールすることができる。一実施形態では、ハイパーバイザ、ミドルウェアドライバ、又はＡＰＩは、浮動小数点リソースを必要とするプログラムの複数部分を、浮動小数点スケジューラロジックを使用して、浮動小数点リソースにスケジュールすることができ、これと並行して又は順次的に、整数命令も、整数スケジューラにより整数実行リソースにスケジュールされる。一実施形態において、図４が示す構成はＣＰＵであり、他の実施形態では、図４が示す構成はＧＰＵであり、また別の実施形態では、図４が示す構成はＣＰＵ及びＧＰＵであある。
【００２４】
図５は、一実施形態に従って実行されるオペレーションのフロー図である。５０１において、命令が、ＧＰＵ又はＣＰＵにスケジュールされる。オペレーション５０５において、ＧＰＵ又はＣＰＵにスケジュールされた命令を、共有メモリ又はダイレクトリンクを使用して情報を共有するため、情報を共有メモリ又はダイレクトリンクに書き込む。オペレーション５１０において、共有された情報を利用するユーザーは、共有メモリ又はダイレクトリンクから情報を読み出す。他の実施形態では、その他のオペレーションを実行してもよい。
【００２５】
図６は、本発明の一実施形態を使用可能な共有バスコンピュータシステム（例えば、フロントサイドバス（ＦＳＢ）コンピュータシステム）を示している。プロセッサ６０１、６０５、６１０又は６１５のいずれも、非対称コア（性能、パワー、動作電圧、クロックスピード又はＩＳＡが異なる）を含んでもよく、非対称コアは、そこに位置するローカルレベル１（Ｌ１）のキャッシュメモリ６２０、６２５、６３０、２３５、６４０、６４５、６５０、６５５からの情報にアクセスすることができる、又はプロセッサコア６２３、６２７、６３３、６３７、６４３、６４７、６５３、６５７のうちの１つと関連付けられていてもよい。また、プロセッサ６０１、６０５、６１０又は６１５は、共有レベル２（Ｌ２）キャッシュ６０３、６０７、６１３、６１７からの情報、又はシステムメモリ６６０からの情報に、チップセット６６５を通じてアクセスしてもよい。
【００２６】
本発明の実施形態は、図６に示すプロセッサ又はエージェントのいずれに存在してもよい。例えば、ロジック６１９を、プロセッサ６２３、６２７、６３３、６３７、６４３、６４７、６５３、６５７のいずれか又は全てに組み込んで、少なくとも一実施形態の側面を実行するようにしてもよい。特に、ロジック６１９を使用して、システム内の他のエージェントからの信号の検出、送信及び割り込みを行い、ページが現在、別のエージェントによってアクセスされているかに基づいて、メモリのページがオープンとなっているか、又はクローズとなっているのかを判断してもよい。他の実施形態では、ロジック６１９は、複数エージェントに分配されてもよい。また、別の実施形態では、ロジック６６０は、ソフトウェア、ハードウェア又はこれらの組み合わせを含んでもよい。
【００２７】
図６に示したＦＳＢコンピュータシステムの他に、他のシステム構成を、本発明の様々な実施形態に関連して使用してもよく、ポイント・ツー・ポイント（Ｐ２Ｐ）相互接続システム又はリング相互接続システムなどを使用してもよい。図７のＰ２Ｐシステムは、例えば、図には、２つのプロセッサ７７０、７８０しか示されていないが、それ以上の個数のプロセッサを含んでもよい。プロセッサ７７０、７８０はそれぞれ、ローカル・メモリコントローラハブ（ＭＣＨ）７７２、７８２を有し、メモリ７２、７４と接続されている。プロセッサ７７０、７８０は、ポイント・ツー・ポイント（ＰｔＰ）インターフェース回路７７８、７８８を使用して、ＰｔＰインターフェース７５０を通じたデータ交換をしてもよい。プロセッサ７７０、７８０はそれぞれ、ポイント・ツー・ポイントインターフェース回路７７６、７９４、７８６、７９８を使用して、別個のＰｔＰインターフェース７５２、７５４を通じて、チップセット７９０とデータを交換してもよい。チップセット７９０も、高性能グラフィックスインターフェース７３９を介して、高性能グラフィックス回路７３８とデータを交換してもよい。
【００２８】
本発明の実施形態は、図７に示すあらゆるプロセッサ又はエージェントに取り込んでもよい。例えば、ロジック７９９を、プロセッサ７７０、７８０のいずれか一方又は両方に組み込み、少なくとも一実施形態の側面を実行するようにしてもよい。特に、ロジック７９９を使用して、システム内の他のエージェントからの信号の検出、送信及び割り込みを行い、ページが現在、別のエージェントによってアクセスされているか否かに基づいて、メモリのページがオープンとなっているか、又はクローズとなっているのかを判断してもよい。他の実施形態では、ロジック７９９は、複数エージェントに分配されてもよい。また、別の実施形態では、ロジック７９９は、ソフトウェア、ハードウェア又はこれらの組み合わせを含んでもよい。
【００２９】
多数の異なる種類のプロセッシングデバイスが、このようなプロセス再割当技術を利用することの利益を享受できる。例えば、処理ユニット６００−１〜６００−Ｎは、汎用プロセッサ（例えば、マイクロプロセッサ）であってもよいし、又は（１つのダイ上の）複数コア・マイクロプロセッサのマイクロプロセッサコアであってもよい。あるいは、複数の並列ユニット又はコアを備えるシステムにおいて使用されるデジタル信号プロセッサ、グラフィックスプロセッサ、ネットワークプロセッサ又はあらゆる種類の特定用途プロセッサが、熱（又はパワー）に起因した、プロセッシングユニット間のプロセスシフトの恩恵を享受することができる。プロセッシングユニット又はプロセッサは、少なくとも部分的に重複をした機能を有するか、又は互いに同じであってもよい。すなわち、複数のプロセッシングユニット又はプロセッサ上で実行可能なプロセスが少なくとも（全部ではないが）複数存在するように、各プロセッシングユニットは、共通の命令セット又はコマンドセットを有する。他の実施形態では、複数のプロセッシングユニットは非対称であってもよく、パフォーマンス能力、トランジスタの個数、電力消費、熱特性、クロック周波数又はＩＳＡのいずれか又はこれらの組み合わせにおいて、異なっていてもよい。
【００３０】
迅速な処理及び要求データの返答を促進するため、少なくとも１つの実施形態において、アプリケーションにより要求されたデータを抽出読み出す最善の（例えば、最速の）方法を決定するために、コヒーレンシフィルタを採用してもよい。例えば、一実施形態において、コヒーレンシフィルタは、システムの１つ以上のプロセッサが現在アクセス可能なデータに関する情報を各エントリに含むコヒーレンシテーブルを有してもよい。一実施形態では、プロセッサのコヒーレンシテーブルは、システムの他のプロセッサのキャッシュ、バッファ又はその他のストレージ構造において利用可能なデータを示すアドレスのリストを含んでもよく、アプリケーションがデータを要求する時に、プロセッサは、最初に自身のコヒーレンシテーブルをチェックして、他のプロセッサがこのデータを現在有しているか確認することができる。他のプロセッサがデータを有する場合は、要求を受け付けたプロセッサが、プロセッサ間のｎ幅の相互接続に渡ってデータを読み出すことにより、データが読み出されてもよい。一実施形態において、テーブルは、プロセッサのキャッシュ／バッファなどにおいて利用可能なデータの一部しか示さないため（実際には、テーブルによって含まれる情報の量は様々であるが）、ｎ幅のプロセッサ間相互接続のトラフィックは、コヒーレンシテーブルの情報又はサイズにより、削減又は少なくとも制御可能である。
【００３１】
図１２は、コヒーレンシフィルタを含む本発明の一実施形態で利用可能なシステムを示す。図１２において、プロセッサ１２０５上で実行されるアプリケーション又はスレッド１２４０は、プロセッサ１２０５にアドレスを提供することによって、データを要求してもよい。そして、プロセッサ１２０５は、要求されたデータがプロセッサ１２００内のバッファ又はキャッシュ内に現在存在するかを判断するため、プロセッサがアクセス可能なメモリ又はプロセッサに格納されているコヒーレンシテーブル１２４５にアクセスしてもよい。例えば、テーブルが、要求されたデータがプロセッサ１２００において現在利用可能であることを示している場合、プロセッサ１２０５は、相互接続１２０８を介しプロセッサ１２００からデータを読み出すので、これにより、最も迅速に、プログラムにデータを提供することができる。一実施形態において、テーブルは、アプリケーション又はスレッド１２４０によりプロセッサ１２０５に提供されるアドレスの一部に関して参照される。さらに少なくとも１つの実施形態において、異なるテーブル（又は同一のテーブル）が、システムのプロセッサそれぞれに対応し、他のプロセッサにおいて検出される要求された各アドレスについてテーブル内にエントリを生成することにより、テーブルが維持される。さらに、各エントリは、データが他のプロセッサ内に検出されない場合を示す情報を有してもよく、又はエントリが一緒に削除されてもよい。様々なコヒーレンシテーブルのメンテナンススキーム及びアルゴリズムを使用して、相互接続１２０８を介して複数のプロセッサ間で共有される情報を追跡してもよい。
【００３２】
機械に読み出された場合に当該機械に上述の技術を実行させるロジックを生成させ、プロセッサ内の様々なロジックを表す機械可読媒体に格納される典型的なデータにより、少なくとも一実施形態の１以上の側面を実装してもよい。"ＩＰコア"として知られるこのような表現は、有形の機械可読媒体（テープ）に格納され、実際のロジック又はプロセッサを生成する製造装置にロードする製造者、又は様々なカスタマに供給されると考えられる。
【００３３】
以上、マイクロアーキテクチャメモリ領域アクセスに関する方法及び装置について記載した。上記説明は、例示的なものであって限定することを意図していないことが理解されるべきである。上述の説明を読み理解することで、その他多くの実施形態が可能であることは、当業者にとって明白である。したがって、本発明の範囲は、添付の特許請求の範囲、及び請求項の均等物の全範囲を参照することにより決定されるべきである。
【図１】
2014053033.tif 000003
【図２】
2014053033.tif 000004
【図３】
2014053033.tif 000005
【図４】
2014053033.tif 000006
【図５】
2014053033.tif 000007
【図６】
2014053033.tif 000008
【図７】
2014053033.tif 000009
【手続補正書】
【提出日】平成25年11月27日(2013.11.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１ＣＰＵを含む複数の中央処理演算装置（ＣＰＵ）と
ダイレクトリンクまたはリング相互接続に沿ったリングリンクにより、１つのダイ上で前記ＣＰＵに連結されたグラフィックスプロセッシングユニット（ＧＰＵ）と、
前記ＧＰＵ及び複数の前記ＣＰＵによりアクセスされる共有メモリをキャッシュする１以上のラストレベルキャッシュと、
共有メモリ、ダイレクトリンクまたはリング相互接続に沿ったリングリンクを介して１以上のオペレーションを転送することにより、前記第１ＣＰＵまたは前記ＧＰＵにスケジュールされ、前記第１ＣＰＵ及び前記ＧＰＵの他方の実行リソースにより実行される前記１以上のオペレーションのために、複数の前記ＣＰＵ及び前記ＧＰＵの間で実行リソースを共有するロジックと、
を備える装置。
【請求項２】
複数の前記ＣＰＵと前記ＧＰＵとの間でページ情報を通信するロジックを更に備える、
請求項１に記載の装置。
【請求項３】
複数の前記ＣＰＵ及び前記ＧＰＵに共有される情報を格納する共有メモリを備える、
請求項１又は２に記載の装置。
【請求項４】
前記ロジックは、情報共有を促進するための、前記第１ＣＰＵと前記ＧＰＵとの間のダイレクトリンクを有する、
請求項１から３のいずれか１項に記載の装置。
【請求項５】
前記ＧＰＵは、前記ＣＰＵによって使用される浮動小数点実行リソースを有する、
請求項１から４のいずれか１項に記載の装置。
【請求項６】
前記ＣＰＵは、前記ＧＰＵによって使用される整数実行リソースを有する請求項１から５のいずれか１項に記載の装置。
【請求項７】
前記ＧＰＵにスケジュールされる命令が、複数の前記ＣＰＵに移動され、前記移動された命令の結果が、前記ＧＰＵに転送される請求項１から６のいずれか１項に記載の装置。
【請求項８】
前記第１ＣＰＵにスケジュールされる命令が、前記ＧＰＵに移動され、前記移動された命令の結果が、前記第１ＣＰＵに転送される請求項１から６のいずれか１項に記載の装置。
【請求項９】
１以上の中央処理演算装置（ＣＰＵ）と
ダイレクトリンクまたはリング相互接続に沿ったリングリンクにより前記１以上のＣＰＵに連結されたグラフィックスプロセッシングユニット（ＧＰＵ）と、
前記ＧＰＵ及び複数の前記ＣＰＵによりアクセスされる共有メモリをキャッシュする１以上のラストレベルキャッシュと、
１以上の前記ＣＰＵの１つまたは前記ＧＰＵにスケジュールされ、１以上の前記ＣＰＵの１つ及び前記ＧＰＵの他方の実行リソースにより実行される１以上の命令のために、１以上の前記ＣＰＵ及び前記ＧＰＵの間で実行リソースを共有する仮想マシンマネージャロジックと、
前記ＣＰＵまたは前記ＧＰＵによって一部分が共有メモリとして使用されるシステムメモリと、
を備えるシステム。
【請求項１０】
１以上の前記ＣＰＵの１つと前記ＧＰＵとの間でページ情報を通信するためのロジックをさらに備える請求項９に記載のシステム。
【請求項１１】
１以上の前記ラストレベルキャッシュは、１以上の前記ＣＰＵの１つ及び前記ＧＰＵに共有される情報を格納する請求項９又は１０に記載のシステム。
【請求項１２】
前記仮想マシンマネージャロジックは、共有メモリ、ダイレクトリンク、またはリング相互接続に沿ったリングリンクを介して１以上の命令を転送することにより、１以上の前記ＣＰＵと前記ＧＰＵの間で実行リソースを共有する、
請求項９から１１のいずれか１項に記載のシステム。
【請求項１３】
前記ＧＰＵは、１以上の前記ＣＰＵによって使用される浮動小数点実行リソースを有する請求項９から１２のいずれか１項に記載のシステム。
【請求項１４】
１以上の前記ＣＰＵは、前記ＧＰＵによって使用される整数実行リソースを有する請求項９から１３のいずれか１項に記載のシステム。
【請求項１５】
前記ＧＰＵにスケジュールされる命令が、１以上の前記ＣＰＵに移動され、前記移動された命令の結果が、前記ＧＰＵに転送される請求項９から１４のいずれか１項に記載のシステム。
【請求項１６】
１以上の前記ＣＰＵにスケジュールされる命令が、前記ＧＰＵに移動され、前記移動された命令の結果が、前記ＣＰＵに転送される請求項９から１４のいずれか１項に記載のシステム。
【請求項１７】
中央処理演算装置（ＣＰＵ）と
１つのダイ上でリング相互接続に沿って前記ＣＰＵに連結されたグラフィックスプロセッシングユニット（ＧＰＵ）と、
前記ＧＰＵ及び前記ＣＰＵによりアクセスされる１以上のラストレベルキャッシュと、
１以上の命令を共有メモリを介して、または、リング相互接続に沿ったリンクにより転送することにより、前記ＣＰＵまたは前記ＧＰＵにスケジュールされ、前記ＣＰＵ及び前記ＧＰＵの他方の実行リソースにより実行される前記１以上の命令のために、前記ＣＰＵ及び前記ＧＰＵの間で実行リソースを共有するロジックと、
前記ＣＰＵ及び前記ＧＰＵに連結され、１以上の前記命令をデコードするデコードロジックと、
１以上の前記命令を格納する命令キャッシュと
１以上の前記命令をスケジュールするスケジューラロジックと、
を備えるプロセッサ。
【請求項１８】
前記ＣＰＵと前記ＧＰＵとの間でページ情報を通信するためのロジックをさらに備える請求項１７に記載のプロセッサ。
【請求項１９】
前記ロジックは、前記リング相互接続に沿って前記ＣＰＵ及び前記ＧＰＵの間にダイレクトリンクを有し、情報共有を促進する請求項１７又は１８に記載のプロセッサ。
【請求項２０】
前記１以上のラストレベルキャッシュは、前記ＣＰＵ及び前記ＧＰＵに共有される情報を格納する共有メモリリソースを有する、
請求項１７から１９のいずれか１項に記載のプロセッサ。
【請求項２１】
前記ＧＰＵは、前記ＣＰＵによって使用される浮動小数点実行リソースを有する請求項２０に記載のプロセッサ。
【請求項２２】
前記ＣＰＵは、前記ＧＰＵによって使用される整数実行リソースを有する請求項２０に記載のプロセッサ。
【請求項２３】
前記ＧＰＵにスケジュールされる命令が、前記ＣＰＵに移動され、前記移動された命令の結果が、前記ＧＰＵに転送される請求項１７から２２のいずれか１項に記載のプロセッサ。
【請求項２４】
前記ＣＰＵにスケジュールされる命令が、前記ＧＰＵに移動され、前記移動された命令の結果が、前記ＣＰＵに転送される請求項１７から２２のいずれか１項に記載のプロセッサ。
【請求項２５】
前記スケジューラロジックは、整数命令をスケジュールする第１のスケジューラロジックと、浮動小数点命令をスケジュールする第２のスケジューラロジックとを有する請求項１７から２４のいずれか１項に記載のプロセッサ。
【請求項２６】
前記ＣＰＵと前記ＧＰＵとが、前記第２のスケジューラロジックを共有する請求項２５に記載のプロセッサ。
【請求項２７】
中央処理演算装置（ＣＰＵ）であり、実行リソースの第１セットを有する第１のプロセッサに命令をスケジュールする段階と、
前記ＣＰＵと１つのダイ上に形成されたグラフィックスプロセッシングユニット（ＧＰＵ）であり、前記第１のプロセッサと非対称性の実行リソースの第２セットを有する第２のプロセッサで実行されるように、スケジュールされた前記命令を前記第１のプロセッサから移動させる段階と、
前記第２のプロセッサにおいて前記命令を実行して得られた情報を、共有メモリの仮想ページを介して、前記第１のプロセッサに転送する段階と、
を備える方法。
【請求項２８】
前記第１のプロセッサは、ＧＰＵであり、前記第２のプロセッサは、ＣＰＵである請求項２７に記載の方法。
【請求項２９】
スケジュールされた前記命令の移動は、ハードウェア、ミドルウェア、ドライバまたはドライバ状ソフトウェア、及び、仮想マシンマネージャまたはハイパーバイザを含むグループから選択されるロジックにより実行される、
請求項２７又は２８に記載の方法。
【請求項３０】
前記第１のプロセッサ及び前記第２のプロセッサの間でページ情報を通信する段階を更に備える、
請求項２７から２９のいずれか１項に記載の方法。
【請求項３１】
ユーザーソフトウェアが実行リソース共有を認識しないように、前記第２のプロセッサで命令を実行した結果の情報を、前記第１のプロセッサに転送する段階を更に備える、
請求項２７から３０のいずれか１項に記載の方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３３
【補正方法】変更
【補正の内容】
【００３３】
以上、マイクロアーキテクチャメモリ領域アクセスに関する方法及び装置について記載した。上記説明は、例示的なものであって限定することを意図していないことが理解されるべきである。上述の説明を読み理解することで、その他多くの実施形態が可能であることは、当業者にとって明白である。したがって、本発明の範囲は、添付の特許請求の範囲、及び請求項の均等物の全範囲を参照することにより決定されるべきである。ここで、本発明の実施形態の例を項目として挙げる。
［項目１］
中央処理演算装置（ＣＰＵ）と、
ＣＰＵに連結されたグラフィックスプロセッシングユニット（ＧＰＵ）と、
ＣＰＵ及びＧＰＵの実行リソースを共有するためのロジックと
を備える装置。
［項目２］
ＣＰＵとＧＰＵとの間でページ情報を通信するためのロジックをさらに備える項目１に記載の装置。
［項目３］
ロジックは、ＣＰＵ及びＧＰＵに共有される情報を格納する共有メモリリソースを有する項目１に記載の装置。
［項目４］
ロジックは、情報共有を促進するための、ＣＰＵとＧＰＵとの間のダイレクトリンクを有する項目１に記載の装置。
［項目５］
ＧＰＵは、ＣＰＵによって使用される浮動小数点実行リソースを有する項目２に記載の装置。
［項目６］
ＣＰＵは、ＧＰＵによって使用される整数実行リソースを有する項目２に記載の装置。
［項目７］
ＧＰＵにスケジュールされる命令が、ＣＰＵに移動され、移動された命令の結果が、ＧＰＵに転送される項目１に記載の装置。
［項目８］
ＣＰＵにスケジュールされる命令が、ＧＰＵに移動され、移動された命令の結果が、ＣＰＵに転送される項目１に記載の装置。
［項目９］
中央処理演算装置（ＣＰＵ）と
ＣＰＵに連結されたグラフィックスプロセッシングユニット（ＧＰＵ）と、
ＣＰＵ及びＧＰＵの実行リソースを共有するためのロジックと、
ＣＰＵまたはＧＰＵによって使用されるシステムメモリと
を備えるシステム。
［項目１０］
ＣＰＵとＧＰＵとの間でページ情報を通信するためのロジックをさらに備える項目９に記載のシステム。
［項目１１］
ロジックは、ＣＰＵ及びＧＰＵに共有される情報を格納する共有メモリリソースを有する項目９に記載のシステム。
［項目１２］
ロジックは、情報共有を促進するための、ＣＰＵとＧＰＵとの間のダイレクトリンクを有する項目９に記載のシステム。
［項目１３］
ＧＰＵは、ＣＰＵによって使用される浮動小数点実行リソースを有する項目１０に記載のシステム。
［項目１４］
ＣＰＵは、ＧＰＵによって使用される整数実行リソースを有する項目１０に記載のシステム。
［項目１５］
ＧＰＵにスケジュールされる命令が、ＣＰＵに移動され、移動された命令の結果が、ＧＰＵに転送される項目９に記載のシステム。
［項目１６］
ＣＰＵにスケジュールされる命令が、ＧＰＵに移動され、移動された命令の結果が、ＣＰＵに転送される項目９に記載のシステム。
［項目１７］
中央処理演算装置（ＣＰＵ）と、
ＣＰＵに連結されたグラフィックスプロセッシングユニット（ＧＰＵ）と、
ＣＰＵ及びＧＰＵの実行リソースを共有するためのロジックと、
ＣＰＵ及びＧＰＵに連結され、命令をデコードするデコードロジックと、
命令を格納する命令キャッシュと、
命令をスケジュールするスケジューラロジックと
を備えるプロセッサ。
［項目１８］
ＣＰＵとＧＰＵとの間でページ情報を通信するためのロジックをさらに備える項目１７に記載のプロセッサ。
［項目１９］
ロジックは、ＣＰＵ及びＧＰＵに共有される情報を格納する共有メモリリソースを有する項目１７に記載のプロセッサ。
［項目２０］
ロジックは、情報共有を促進するための、ＣＰＵとＧＰＵとの間のダイレクトリンクを有する項目１７に記載のプロセッサ。
［項目２１］
ＧＰＵは、ＣＰＵによって使用される浮動小数点実行リソースを有する項目１９に記載のプロセッサ。
［項目２２］
ＣＰＵは、ＧＰＵによって使用される整数実行リソースを有する項目１９に記載のプロセッサ。
［項目２３］
ＧＰＵにスケジュールされる命令が、ＣＰＵに移動され、移動された命令の結果が、ＧＰＵに転送される項目１７に記載のプロセッサ。
［項目２４］
ＣＰＵにスケジュールされる命令が、ＧＰＵに移動され、移動された命令の結果が、ＣＰＵに転送される項目１７に記載のプロセッサ。
［項目２５］
スケジューラロジックは、整数命令をスケジュールする第１のスケジューラロジックと、浮動小数点命令をスケジュールする第２のスケジューラロジックとを有する項目１７に記載のプロセッサ。
［項目２６］
ＣＰＵとＧＰＵとが、第２のスケジューラロジックを共有する項目２５に記載のプロセッサ。
［項目２７］
命令を、実行リソースの第１セットを有する第１のプロセッサにスケジュールする段階と、
命令を、実行リソースの第２セットを有する第２のプロセッサに移動させる段階と、
第２のプロセッサにおいて命令を実行して得られた情報を、第１のプロセッサに転送する段階とを備える方法。
［項目２８］
第１のプロセッサは、中央演算処理装置（ＣＰＵ）であり、第２のプロセッサは、グラフィックスプロセッシングユニット（ＧＰＵ）である項目２７に記載の方法。
［項目２９］
第１のプロセッサは、ＧＰＵであり、第２のプロセッサは、ＣＰＵである項目２７に記載の方法。
［項目３０］
第１のプロセッサと第２のプロセッサとの間で、ページング情報を通信する段階をさらに備える項目２７に記載の方法。
【外国語明細書】
2014053033000001.pdf