(57)【要約】【課題】本発明は、データ処理機器の中央処理装置と画像処理装置との間で通信するための改善された技術を提供する。【解決手段】該中央処理装置および該画像処理装置によってアクセスできる、共有メモリが提供され、それを介して、該中央処理装置と該画像処理装置との間で、データ構造を共有できる。また、バスが提供され、それを介して、該中央処理装置、画像処理装置、および共有メモリが通信する。該画像処理装置を制御する第１の機構に基づき、該中央処理装置は、該バスを介して、制御信号を送る。しかしながら、加えて、該中央処理装置と該画像処理装置との間にインタフェースが提供され、該画像処理装置を制御するための追加の機構に基づき、該中央処理装置は、該インタフェースを介して制御信号を提供する。【選択図】図３Ａ
2010050970.tif 000002
【特許請求の範囲】
【請求項１】
データ処理機器であって、
命令のストリームを実行するための中央処理装置と、
前記中央処理装置の代わりに、画像処理動作を実施するための画像処理装置と、
前記中央処理装置および前記画像処理装置によってアクセスでき、それを介して前記中央処理装置と前記画像処理装置との間でデータ構造を共有できる、共有メモリと、
それを介して前記中央処理装置、画像処理装置、および共有メモリが通信する、バスであって、前記中央処理装置は、前記画像処理装置を制御するための第１の機構として、前記バスを介して、制御信号を送る、バスと、
前記中央処理装置と前記画像処理装置との間のインタフェースであって、前記中央処理装置は、前記画像処理装置を制御するための追加の機構として、前記インタフェースを介して制御信号を提供するインタフェースと、を備えることを特徴とするデータ処理機器。
【請求項２】
前記第１の機構を使用して、前記画像処理装置が、前記中央処理装置によって実施される動作と疎結合される画像処理動作を実施するように制御し、
前記追加の機構を使用して、前記画像処理装置が、前記中央処理装置によって実施される動作と密結合される処理動作を実施するように制御することを特徴とする請求項１に記載のデータ処理機器。
【請求項３】
前記追加の機構を採用する際、前記インタフェースを介して提供される前記制御信号は、前記画像処理装置によって実行される１つ以上の命令を含むことを特徴とする請求項１に記載のデータ処理機器。
【請求項４】
前記１つ以上の命令は、前記命令のストリーム内に含まれ、前記画像処理装置によって取り扱われる命令として、前記中央処理装置によって認識されることを特徴とする請求項３に記載のデータ処理機器。
【請求項５】
前記インタフェースを介して前記１つ以上の命令を提供する前に、前記中央処理装置は、前記ストリーム内の後続命令が、前記画像処理装置によって取り扱われる命令として解釈されるように、前記中央処理装置によって使用される命令セットから、前記画像処理装置によって使用される命令セットに切り替えるための切り替え命令を実行することを特徴とする請求項３に記載のデータ処理装置。
【請求項６】
前記１つ以上の命令のうちの少なくとも１つが、前記共有メモリ内の１つ以上のデータ構造へポインタを提供する命令であることを特徴とする請求項３に記載のデータ処理機器。
【請求項７】
前記１つ以上の命令のうちの少なくとも１つが、実行される際に、前記中央処理装置のレジスタファイルと前記画像処理装置のレジスタファイルとの間でデータを転送するようにする命令であることを特徴とする請求項３に記載のデータ処理機器。
【請求項８】
前記１つ以上の命令のうちの少なくとも１つは、前記画像処理装置によって実施されるデータ処理動作を指定することを特徴とする請求項３に記載のデータ処理機器。
【請求項９】
前記追加の機構を採用する際、前記インタフェースを介して提供される前記制御信号が、前記中央処理装置による、少なくとも１つの命令の実行から生じることを特徴とする請求項１に記載のデータ処理機器。
【請求項１０】
前記制御信号は、前記共有メモリ内の１つ以上のデータ構造へポインタを提供し、前記画像処理装置によって実施される前記処理動作を定義することを特徴とする請求項９に記載のデータ処理機器。
【請求項１１】
前記中央処理装置および画像処理装置は、レジスタファイルを共有するように構成され、前記追加の機構を採用する際、前記インタフェースを介して提供される前記制御信号は、前記制御信号によって定義される処理動作を実施する際に前記画像処理装置によって使用される、前記共有レジスタファイルの１つ以上の前記レジスタを指定することを特徴とする請求項１に記載のデータ処理機器。
【請求項１２】
前記中央処理装置は、前記画像処理装置が、前記制御信号によって定義された前記処理動作を実施している間、これらのレジスタが前記中央処理装置によって使用されるのを防ぐために、前記画像処理装置によって使用するためのものとして前記制御信号内に指定されるこれらのレジスタを、スコアボード回路内で特定するように構成されることを特徴とする請求項１１に記載のデータ処理機器。
【請求項１３】
前記画像処理装置が、前記追加の機構に基づき、前記インタフェースを介して提供される前記制御信号によって定義される処理動作を実施している間、前記中央処理装置は、前記画像処理装置によって実施される前記処理動作の結果に依存しない命令を実行し続けることを特徴とする請求項１に記載のデータ処理機器。
【請求項１４】
前記追加の機構に基づき、前記インタフェースを介して前記制御信号が提供された後、前記中央処理装置は、前記制御信号に応答して、前記画像処理装置によって実施される前記処理動作の結果が、前記中央処理装置に利用可能になるまで、その命令の実行を中断することを特徴とする請求項１に記載のデータ処理機器。
【請求項１５】
前記画像処理装置は、マルチスレッド実行を支援し、前記画像処理装置内のスレッドをスケジューリングするためのスケジューラを備え、
前記インタフェースを介して、前記画像処理装置によって前記制御信号が受信されると、前記スケジューラは、これらの制御信号に関連付けられた前記処理動作のための少なくとも１つのスレッドをスケジュールするように構成されることを特徴とする請求項１に記載のデータ処理機器。
【請求項１６】
前記スケジューラは、前記インタフェースを介して受信される、前記制御信号に関連付けられたいずれかのスレッドに、別のスレッドに与えられる優先度よりも高い優先度を与えるように構成されることを特徴とする請求項１５に記載のデータ処理機器。
【請求項１７】
前記スケジューラは、前記インタフェースを介して受信される、前記制御信号に関連付けられたいずれかのスレッドを、前記画像処理装置のいずれかの空いている計算能力を利用しようとする方法でスケジュールするように構成されることを特徴とする請求項１５に記載のデータ処理機器。
【請求項１８】
前記第１の機構を採用する際、前記バスを介して送られる前記制御信号により、前記画像処理装置を制御するために、制御値が、前記画像処理装置のメモリにマップされた制御レジスタに書き込まれることを特徴とする請求項１に記載のデータ処理機器。
【請求項１９】
データ処理機器であって、
命令のストリームを実行するための中央処理手段と、
前記中央処理手段の代わりに、画像処理動作を実施するための画像処理手段と、
前記中央処理手段および前記画像処理手段によってアクセスできる、前記中央処理手段と前記画像処理手段との間でデータ構造を共有するための共有メモリ手段と、
前記中央処理手段と、画像処理手段と、共有メモリ手段との間の通信のためのバス手段であって、前記中央処理手段は、前記バス手段を介して、前記画像処理手段を制御するための第１の機構として、制御信号を送るためのものである、バス手段と、
前記中央処理手段と前記画像処理手段との間のインタフェース手段であって、前記中央処理手段は、前記画像処理手段を制御するための追加の機構として、前記インタフェースを介して制御信号を提供するためのものである、インタフェース手段と、を備えることを特徴とするデータ処理機器。
【請求項２０】
命令のストリームを実施するための中央処理装置と、前記中央処理装置の代わりに、画像処理動作を実行するための画像処理装置と、を備えるデータ処理機器を操作する方法であって、
前記中央処理装置と前記画像処理装置との間でデータ構造を共有するために、前記中央処理装置および前記画像処理装置によってアクセスできる、共有メモリを採用するステップと、
それを介して前記中央処理装置、画像処理装置、および共有メモリが通信する、バスを提供するステップと、
前記バスを介して、前記画像処理装置を制御するための第１の機構として、前記中央処理装置からの制御信号を送るステップと、
前記中央処理装置と前記画像処理装置との間に、インタフェースを提供するステップと、
前記画像処理装置を制御するために、追加の機構として、前記インタフェースを介して、前記中央処理装置から制御信号を提供するステップと、を含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中央処理装置と画像処理装置との間で通信するための機器および方法に関し、特に、中央処理装置が、画像処理装置のリソースをより効率的に使用できるようにする技術に関する。
【背景技術】
【０００２】
画像処理装置（ＧＰＵ）は、通常、一般的な画像処理動作、例えば、ベクトル入力の内積、外積、および行列積計算等の幾何学的処理機能の高速かつ効率的実行を促進するように設計される。ＧＰＵが、このような操作のために、典型的に最適化されているため、それらは、概して、たとえＣＰＵがＳＩＭＤ（単一命令・複数データ処理）ハードウェアを含むとしても、中央処理装置（ＣＰＵ）よりはるかに速くこれらのタスクを完了する。
【０００３】
典型的なシステムオンチップ（ＳｏＣ）環境においては、ＣＰＵおよびＧＰＵは、バスインフラストラクチャを介して互いに連結され得、共有メモリは、ＣＰＵがＧＰＵによって実施される動作のバッチをセットアップするための機構として利用される。そのような既知の構成は、ＣＰＵ１０がバスネットワーク３０を介してＧＰＵ２０と連結され、共有メモリ４０もバスネットワーク３０に連結されている、図１に示される。バスネットワーク３０は、１つ以上の別個のバスを組み込み得、共有メモリ４０は、１つ以上のレベルのキャッシュを含んでも含まなくてもよいことは理解されるであろう。
【０００４】
ＣＰＵが、ＧＰＵによる実行のための動作のバッチをセットアップできる方法は、図１の１から４の参照符号が付された矢印で図式的に示され、ステップの順は、図２のフローチャートによってより詳細に図示される。特に、矢印１によって示され、図２のステップ１００で記載されるように、ＣＰＵは、最初に、１つ以上のデータ構造を共有メモリ４０に格納する。当業者によって理解されるように、それぞれのデータ構造は、ＣＰＵおよびＧＰＵの両方によって理解される所定のフォーマットを有し、データ構造内に提供される実際のデータは、ＧＰＵが動作するデータ値を特定するだけでなく、ＧＰＵによって実施される画像処理動作を定義する命令も特定し得る。また、命令およびデータ値が、データ構造内に直接指定され得る一方、データ構造は、特定の命令および／またはデータ値が見つかり得るメモリアドレスを特定する、１つ以上のポインタを含み得ることが理解されるであろう。
【０００５】
図１の矢印２によって示され、図２のステップ１０５によって図示されるように、またＣＰＵは、一般的に、１つ以上のデータ構造を共有メモリに格納することに加えて、様々な制御情報を、ＧＰＵ２０内の１つ以上のメモリにマップされた制御レジスタ２５に書き込む。制御レジスタ２５がメモリにマップされているため、それらは、関連メモリアドレスを指定するアクセス要求を発行するＣＰＵによって、バスネットワーク３０を介して、ＣＰＵによって直接アクセスすることができる。このルートを介して、ＧＰＵの特定の基本的な制御パラメータは、ＣＰＵ１０の制御の下で設定することができる。通常、制御レジスタ２５のうちの１つは、画像処理動作のバッチ処理を開始するために、ＧＰＵによってアクセスされる共有メモリ内の少なくとも１つのデータ構造を特定する、その中に格納された値を有する。
【０００６】
一旦メモリにマップされた制御レジスタが設定され、関連データ構造が共有メモリ４０に格納されると、次いでＧＰＵは、共有メモリ４０からの関連データ構造の取り出しを開始するために、メモリにマップされた制御レジスタ内の情報を使用して、動作を開始する。図１の矢印３によって示され、図２のステップ１１０によって図示されるように、これは、ＧＰＵに、データ構造によって定義されるように、要求される画像処理動作を実施させ、通常、結果は、もとの所定のアドレスで始まる共有メモリ４０に格納される。
【０００７】
ＧＰＵ２０は、データ構造によって指定される動作のバッチの実施を完了する際、図１の矢印４によって示され、図２のステップ１１５によって図示されるように、ＩＲＱパス５０を介してＣＰＵに割り込みを発行する。割り込みが受信されると、ＣＰＵ１０は、共有メモリ４０から結果データを取り出すために、通常、割り込みサービスルーチン（ＩＳＲ）を実行し、それ以降、結果データは、ＣＰＵによる後続動作の実施の間、ＣＰＵによって使用することができる。
【０００８】
一般的な画像処理動作では、ＧＰＵ２０は、通常、これらの動作が代わりにＣＰＵ１０上で実施される場合より、はるかに多いスループットを達成することができ、したがってＧＰＵの使用は、システム全体の性能を大幅に向上することができる。しかしながら、図１および図２の上記の説明を参照すると、ＧＰＵ２０の必要なメモリにマップされた制御レジスタ２５をプログラムする必要があることに加え、共有メモリ内に作成されたデータ構造の構成を通じて通信する必要があるため、ＧＰＵによって実施される動作のセットアップに、かなりのセットアップ時間がかかることが理解されるであろう。この長い待ち時間は、ＣＰＵからＧＰＵに該仕事をオフロードすることによって達成されるスループット性能利益によって埋め合わせられる、関連する長い待ち時間に対して十分に大規模なバッチに形成することができる通常の画像動作では、一般に問題であるとは見なされない。
【０００９】
しかしながら、ＧＰＵによって効率的に実施することができる可能性がある、ＣＰＵによって現在実施されている別の動作があるが、ＧＰＵが動作を実施するようにセットアップするのに伴う長い待ち時間は、ＧＰＵの使用を不可能にする。例えば、ＣＰＵ上での画像およびゲームコードの実行中、例えば、物理ベースアニメーション、３Ｄ世界における経路探索のための人工知能コード、または人工知能構成物での可視オブジェクトの判断に見られる、プログラムコードの内部ループの部分でコードの比較的小さな断片が複数回繰り返されることは、一般的である。このようなコードの実行は、通常、タイムクリティカルである。このようなコードによって定義される動作または動作のグループは、原理上、ＧＰＵの使用によって加速することができる一方、それらは、比較的小さなコード部分（一旦コードがＧＰＵにマップされると要求されるＧＰＵ動作の数から見て）を含み、比較的小さな量のデータ（例えば１つまたは２つの行列および多数のベクトル）と関連する傾向がある。通常、これらの動作を、データ構造を共有メモリに書き出すのに伴う待ち時間を克服するために、十分に大規模なバッチで実施されるように構成し、ＧＰＵに必要な動作を実施させ、その後、割り込みを発行し、次いで関連結果を読み込むために、ＣＰＵに割り込みに応答させることは困難である。
【００１０】
特にＣＰＵは、多くの場合、そのような場合においてＧＰＵを使用することによって導入される長い待ち時間を埋め合わせることができない（オフロードされた動作または動作のグループの後のＣＰＵコードは、通常、オフロードされた動作の結果に大きく依存する）ことから、このような要因は、ＣＰＵが、上記の種類の動作のためにＧＰＵの処理能力を利用するのを妨げる傾向がある。
【００１１】
しかしながら、従来、ＧＰＵが使用される画像処理動作の種類では、ＧＰＵの使用可能なハードウェアリソースが、常に完全に利用されていないことが観察され、したがってＧＰＵは、予備の処理能力を有すると考えられる。
【００１２】
したがって、ＧＰＵが、既存の画像処理動作を実施し続けられるようにするが、待ち時間に対する許容度がより低い別の動作をＧＰＵにオフロードすることも促進される、ＣＰＵとＧＰＵとの間の通信のための改善された技術を提供することが望ましい。
【発明の概要】
【課題を解決するための手段】
【００１３】
第１の態様から見ると、本発明は、命令のストリームを実行するための中央処理装置と、中央処理装置の代わりに画像処理動作を実施するための画像処理装置と、中央処理装置および画像処理装置によってアクセスでき、それを介して、中央処理装置と画像処理装置との間でデータ構造を共有できる、共有メモリと、それを介して中央処理装置、画像処理装置、および共有メモリが通信する、バスであって、中央処理装置は、該バスを介して、画像処理装置を制御するための第１の機構として、制御信号を送る、バスと、中央処理装置と画像処理装置との間のインタフェースであって、中央処理装置は、画像処理装置を制御するための追加の機構として、該インタフェースを介して制御信号を提供するインタフェースと、を含む、データ処理機器を提供する。
【００１４】
本発明によると、ＣＰＵは、ＧＰＵを制御する２つの別個の機構が提供される。第１の機構に基づき、制御信号は、ＣＰＵ、ＧＰＵ、および共有メモリを相互接続するバスを介して送ることができるので、ＧＰＵが標準的な方法で制御できるようになる。しかしながら、さらに、ＣＰＵとＧＰＵとの間にインタフェースが提供され、制御信号は、画像処理装置を制御するための追加の機構として、インタフェースを介して直接提供され得る。２つの別個の機構を提供することによって、ＣＰＵによるＧＰＵの制御に関して、大幅に改善された柔軟性がもたらされる。セットアップ段階に伴う長い待ち時間が、ＧＰＵの使用によってもたらされる、改善されたスループットで埋め合わせられる分を上回る、大規模なバッチジョブでは、制御信号がＣＰＵとＧＰＵとの間のバスを介して送られており、かつ要求されたデータ構造が、共有メモリ内に確立されている、第１の機構が使用され得る。第１の機構の使用に関連する待ち時間が、第１の機構を利用するのを妨げる、および／またはタスク自体が、待ち時間に対する許容度が低い（例えばこれらのタスクが、ＣＰＵ上で実行しているコードのタイムクリティカルなビット内の動作に関連する場合）、より小さなタスクでは、次いでＣＰＵとＧＰＵとの間のインタフェースが、制御信号をＧＰＵに提供するための直接的機構として使用され得る。
【００１５】
したがって、本発明の追加の機構の使用によって、これは、従来、ＧＰＵにオフロードされる、これらの動作より待ち時間に対する許容度が大幅に低い動作の実施のために、ＣＰＵが、より短い待ち時間でより効率的に、ＧＰＵリソースを使用するための技術を提供する。
【００１６】
一実施形態においては、第１の機構を使用して、画像処理装置が、中央処理装置によって実施される動作に疎結合した画像処理動作を実施するように制御し、追加の機構を使用して、画像処理装置が、中央処理装置によって実施される動作に密結合した処理動作を実行するように制御する。疎結合した動作は、通常、従来では、動作の大規模なバッチとしてＧＰＵにオフロードされる、標準的な画像処理動作の場合のように、これらの動作の結果の可用性のタイミングがＣＰＵにとってタイムクリティカルではない動作とみなすことができる。対照的に、密結合した動作は、結果の可用性のタイミングがＣＰＵにとってクリティカルであり、これらの結果の可用性のいずれかの大幅な遅延が、ＣＰＵの性能に重大な影響を及ぼすものである。
【００１７】
本発明の追加の機構のインタフェースを使用して、ＣＰＵからＧＰＵにオフロードされる動作は、画像処理動作である必要はなく、代わりに、ＧＰＵのハードウェアリソースを使用して効率的に実施することができる、いずれかの動作であってよいことに注目すべきである。例には、ゲーム物理学、進路探索、粒子シミュレーション（例えば、煙、炎等）、流体シミュレーション、音響効果または信号処理の特定の種類等を含む。
【００１８】
本発明の追加の機構を採用する際、インタフェースを介して制御信号が提供され得る、多数の方法が存在する。一実施形態においては、インタフェースを介して提供される制御信号は、実際には、画像処理装置によって実行される１つ以上の命令を含む。
【００１９】
特定の一実施形態においては、そのような方法でインタフェースを介して提供される命令は、実際には、ＣＰＵによって実行される命令のストリーム内に含まれ、ＣＰＵによって、画像処理装置によって取り扱われる命令として認識される。多くの場合、また、ＧＰＵ命令の指示は、ＧＰＵ内でのＧＰＵ命令の実行中に、インタフェースを介してＣＰＵとＧＰＵとの間を通る、１つ以上のハンドシェーキング信号と共に、ＣＰＵパイプラインを通過する。
【００２０】
特定の一実施形態においては、ＣＰＵによって認識されるＧＰＵ命令は、いずれかの任意の命令が、ＣＰＵ命令またはＧＰＵ命令の両方ではなく、いずれかとして識別されるように、ＣＰＵの命令セットの使用されていない端にコーディングされてもよい。しかしながら、別の実施形態においては、命令は、ＣＰＵが、その動作のモードを変更するように、命令ストリームに含むことができ、これは、同一の命令コーディングが再使用されるが、命令コーディングは、ＣＰＵおよびＧＰＵに対して異なることを意味するようにすることができる。
【００２１】
例えば、一実施形態においては、該インタフェース上に該１つ以上の命令を提供する前に、中央処理装置は、該ストリーム内の後続命令が、画像処理装置によって取り扱われる命令として解釈されるように、中央処理装置によって使用される命令セットから、画像処理装置によって使用される命令セットに切り替えるための切り替え命令を実行する。したがって、ＣＰＵによる切り替え命令の実行は、ＣＰＵが、次の命令をＧＰＵ命令として解釈し、その結果、これらの命令をインタフェースを介してＧＰＵに提供するようにする。多くの場合、切り替え命令は、次いで特定の一連のＧＰＵ命令が実行され、その後、ＣＰＵがＣＰＵ命令の実行を継続できるようにするために、動作のモードが通常のＣＰＵモードに戻るようにする、分岐命令の特定の種類の形態を採る。
【００２２】
追加の機構を採用する際、インタフェースを介して提供される命令は、様々な形態であってもよい。例えば、一実施形態においては、これらの命令のうちの少なくとも１つは、共有メモリ内の１つ以上のデータ構造へポインタを提供し得る。したがって、このような実施形態においては、命令は、インタフェースを介して、ＣＰＵからＧＰＵに直接投入され得るが、次いで動作されるデータ値、および任意に実施される動作の識別表示は、次いで共有メモリ内の１つ以上のデータ構造によって提供される。
【００２３】
しかしながら、本発明の追加の機構を使用する際、共有メモリは、依然として利用され得るが、共有メモリを使用する必要はない。一実施形態においては、インタフェースを介して提供される命令のうちの少なくとも１つは、ＧＰＵ上で実行される際、データが、ＣＰＵのレジスタファイルとＧＰＵのレジスタファイルとの間で転送されるようにする。したがって、本実施形態においては、ＣＰＵおよびＧＰＵの両方が、別個のレジスタファイルを保持し、データは、インタフェースを介して、それぞれのレジスタファイル間で送られ得る。代替として、より詳細に後で議論するように、ＣＰＵおよびＧＰＵは、レジスタファイルをＣＰＵと共有するように構成され、ＧＰＵに、ＣＰＵの代わりにいずれかの特定の動作を実施する際にレジスタファイル内のどのレジスタがＧＰＵによって使用されるかを特定し得る。
【００２４】
さらに、一実施形態においては、追加の機構を使用する際、インタフェースを介して提供される命令のうちの少なくとも１つは、画像処理装置によって実施されるデータ処理動作を指定し得る。したがって、該実施形態においては、命令の少なくともいくつかは、ＧＰＵによって実行される実際の動作を特定し、したがって、例えば演算動作、制御フロー動作、論理動作、比較動作、マスキング動作等を特定し得る。
【００２５】
インタフェース上の経路指定命令の代替として、別の実施形態においては、追加の機構を採用する際、インタフェースを介して提供される制御信号は、ＣＰＵによる、少なくとも１つの命令の実行からもたらされ得る。
【００２６】
特定の一実施形態においては、このように提供される制御信号は、該共有メモリ内の１つ以上のデータ構造へポインタを提供し、画像処理装置によって実施される処理動作を定義し得る。したがって、このような実施形態においては、ＣＰＵ内での１つ以上の命令の実行によって、共有メモリ内の１つ以上のデータ構造を参照して、ＧＰＵ上で動作を開始するために、制御信号が、インタフェースを介してＧＰＵに直接提供されるようになり得る。
【００２７】
一実施形態においては、中央処理装置および画像処理装置は、レジスタファイルを共有するように構成され、追加の機構を採用する際、インタフェースを介して提供される該制御信号は、該制御信号によって定義される処理動作を実施する際に画像処理装置によって使用される、共有レジスタファイルの１つ以上のレジスタを指定する。これは、ＣＰＵとＧＰＵとの間でのデータの共有に特に効率的な機構を提供することができる。
【００２８】
そのような一実施形態においては、中央処理装置は、画像処理装置が、該制御信号によって定義される処理動作を実施している間、これらのレジスタが中央処理装置によって使用されるのを防ぐために、画像処理装置によって使用されるものとして制御信号内に指定されるこれらのレジスタを、スコアボード回路内で特定するように構成される。したがって、該機構によって、特定のレジスタを、画像処理装置による使用のために確保することができ、画像処理装置による関連処理動作が完了すると、次いでこれらのレジスタを、中央処理装置による再使用のために解放することができる。
【００２９】
スコアボード回路を使用することによって、ＣＰＵは、ＧＰＵによるオフロードされた動作の完了を待つ間、動作を継続することができる。しかしながら、ＣＰＵが停頓し、ＧＰＵからの結果を待つ実施形態においては、スコアボード回路は、必ずしも上述したように使用しなくてもよい。
【００３０】
一実施形態においては、画像処理装置が、追加の機構に基づき、インタフェースを介して提供される該制御信号によって定義される処理動作を実施している間、中央処理装置は、画像処理装置によって実施される該処理動作の結果に依存しない命令を実行し続ける。
【００３１】
しかしながら、追加の機構のインタフェースの使用によってＧＰＵにオフロードされる動作の種類は、多くの場合、ＣＰＵがいかなる大幅なさらなる進行をも行うことができる前に、ＣＰＵが、これらの動作の結果を必要とする動作であると想定される。したがって、一実施形態においては、追加の機構に基づき、インタフェースを介して該制御信号が提供された後、中央処理装置は、該制御信号に応答して、画像処理装置によって実施される処理動作の結果が、中央処理装置に利用可能になるまで、その命令の実行を中断する。
【００３２】
一実施形態においては、画像処理装置は、マルチスレッド実行を支援し、画像処理装置内のスレッドをスケジューリングするためのスケジューラを含む。そのような一実施形態においては、画像処理装置によって、インタフェースを介して中央処理装置から提供される、いずれかの制御信号が受信されると、スケジューラは、これらの制御信号に関連付けられた処理動作のための少なくとも１つのスレッドをスケジュールするように構成される。本発明の特定の実施形態においては、これは、単一実行スレッドを介した、ＣＰＵ上でのアプリケーションコードの実行からＧＰＵ上でのそのアプリケーションコードの実行への移行、および再び戻る移行を制御するための機構を提供することができる。
【００３３】
一実施形態においては、スケジューラは、インタフェースを介して受信される該制御信号に関連付けられたいずれかのスレッドに、別のスレッドより高い優先度を与えるように構成される。追加の機構の使用によってＧＰＵにオフロードされた動作が、ＣＰＵによって実施される動作に密結合される場合、これは、これらのオフロードされた動作が、確実にＧＰＵ内で可能な限り早く実施され、したがって待ち時間を最小化するための機構を提供する。
【００３４】
一実施形態においては、スケジューラは、画像処理装置のいずれかの空いている計算能力を利用しようとする方法で、インタフェースを介して受信される該制御信号に関連付けられた、いずれかのスレッドをスケジュールするように構成される。本実施形態によると、目的は、追加の機構を介してＧＰＵにオフロードされた動作に、ＧＰＵによって実施される大量の処理に影響を及ぼさない方法で対応することであり、依然として、第１の機構によって開始されると見込まれる。したがって、ＧＰＵは、疎結合された動作を実行するその能力を維持するが、ＧＰＵの未使用の計算能力を利用しようとする方法で、追加の機構を介して送られたいずれかの追加の動作を組み込む。多くの状況において、追加の機構の使用によって、第１の機構を使用する際のセットアップ時間に伴う長い待ち時間が回避され、したがってＧＰＵの空いている計算能力が頻繁に発生すると考えられるため、これは、依然としてＣＰＵによって要求されるタイミングを満足し、この手法は、追加の機構を介してＧＰＵにオフロードされた動作のために十分に早い応答時間を提供することができる。
【００３５】
当然のことながら、一部の実施形態においては、この手法は、追加の機構のインタフェースを介して送られる動作に、ある種のより高い優先度が与えられる手法と併用することができる。例えば、このような手法は、スケジューラが、最初に、インタフェースを介して受信される制御信号に関連付けられたいずれかのスレッドに、ＧＰＵの空いている計算リソースを割り当てようとするが、所定の時間の後、それが可能とならない場合は、その後、できるだけ早く、確実にそれがスケジュールされるようにするために、次いでスレッドにより高い優先度が与えられるようにすることを可能にし得る。
【００３６】
一実施形態においては、第１の機構が採用される際、バスを介して送られる制御信号により、画像処理装置を制御するために、制御値が画像処理装置のメモリにマップされた制御レジスタに書き込まれる。したがって、このような実施形態においては、ＣＰＵとＧＰＵとの間のインタフェースが、ＣＰＵからＧＰＵに制御信号を直接供給できるようにする、本発明の追加の機構とは対照的に、第１の機構は、制御信号のアドレスに基づく経路指定に依存する。
【００３７】
第２の態様から見ると、本発明は、命令のストリームを実行するための中央処理手段と、中央処理手段の代わりに画像処理動作を実施するための画像処理手段と、中央処理手段と画像処理手段との間でデータ構造を共有するために、中央処理手段および画像処理手段によってアクセスできる共有メモリ手段と、中央処理手段と、画像処理手段と、共有メモリ手段との間の通信のためのバス手段であって、中央処理手段は、バス手段を介して、画像処理手段を制御するための第１の機構として、制御信号を送るためのものである、バス手段と、中央処理手段と画像処理手段との間のインタフェース手段であって、中央処理手段は、画像処理手段を制御するための追加の機構として、インタフェース手段を介して制御信号を提供するためのものである、インタフェース手段と、を含む、データ処理機器を提供する。
【００３８】
第３の態様から見ると、本発明は、命令のストリームを実行するための中央処理装置と、中央処理装置の代わりに画像処理動作を実施するための画像処理装置と、を含むデータ処理機器を操作する方法であって、中央処理装置と画像処理装置との間でデータ構造を共有するために、中央処理装置および画像処理装置によってアクセスできる共有メモリを採用するステップと、それを介して、中央処理装置、画像処理装置、および共有メモリが通信する、バスを提供するステップと、画像処理装置を制御するための第１の機構として、バスを介して中央処理装置から制御信号を送るステップと、中央処理装置と画像処理装置との間にインタフェースを提供するステップと、画像処理装置を制御するための追加の機構として、インタフェースを介して、中央処理装置から制御信号を提供するステップと、を含む、方法を提供する。
【００３９】
本発明は、例としてのみ以下の添付の図面に図示される、その実施形態を参照して、さらに説明される。
【図面の簡単な説明】
【００４０】
【図１】既知の構成に従う、ＣＰＵおよびＧＰＵの連結を図式的に示すダイアグラムである。
【図２】図１に示される機器の動作を示すフローチャートである。
【図３Ａ】本発明の一実施形態に従う、データ処理機器を図式的に示すダイアグラムである。
【図３Ｂ】本発明の別の実施形態に従う、データ処理機器を図式的に示すダイアグラムである。
【図４】本発明の一実施形態に従う、図３Ａまたは図３ＢのＧＰＵの実行パイプライン内に提供される構成要素を図示する、ブロック図である。
【図５Ａ】本発明の一実施形態に従う、図４のスケジューラの動作を図示する、フローチャートである。
【図５Ｂ】本発明の別の実施形態に従う、図４のスケジューラの動作を図示する、フローチャートである。
【図６】本発明の実施形態のＣＰＵ／ＧＰＵインタフェースを介してＧＰＵを制御するために使用され得る、３つの異なる機構を示す図である。
【図７】本発明の実施形態のＣＰＵ／ＧＰＵインタフェースを介してＧＰＵを制御するために使用され得る、３つの異なる機構を示す図である。
【図８】本発明の実施形態のＣＰＵ／ＧＰＵインタフェースを介してＧＰＵを制御するために使用され得る、３つの異なる機構を示す図である。
【発明を実施するための形態】
【００４１】
図３Ａは、本発明の一実施形態に従う、データ処理機器を図式的に図示する、ブロック図である。特定の一実施形態においては、データ処理機器は、システムオンチップ（ＳｏＣ）の形態を採る。図１の従来技術に類似する方法においては、ＣＰＵ２１０およびＧＰＵ２２０は、バスネットワーク２３０に連結され、共有メモリ２４０もバスネットワークに連結される。バスネットワーク２３０は、１つ以上の別個のバスを組み込み得、共有メモリ２４０は、１つ以上のレベルのキャッシュを含んでも含まなくてもよい。
【００４２】
ＧＰＵを制御するための第１の機構により、ＣＰＵ２１０は、１つ以上のデータ構造を共有メモリ２４０内に格納し得、ＧＰＵによる一連の画像処理動作の実施を開始するために、様々な制御値をＧＰＵに書き込むように、バス２３０を介して、ＧＰＵ内の１つ以上のメモリにマップされた制御レジスタにさらにアクセスし得る。図１の前述の従来技術の実施例と同様に、該機構が使用される際、ＧＰＵによって要求されたタスクが完了すると、パス２５０を介して、ＧＰＵからＣＰＵに割り込みが発行され得る。
【００４３】
しかしながら、図３Ａに示される本発明の実施形態によると、ＧＰＵを制御するための代替の直接的機構を提供するために、インタフェース２１５は、ＣＰＵ２１０とＧＰＵ２２０との間にも提供される。この代替の機構が採用される際、ＣＰＵ２１０は、インタフェース内の制御パス２１５を介して、１つ以上の制御信号を発行し、これは、ＧＰＵによって受信されると、ＧＰＵに、前述の第１の機構の使用の結果として既にスケジュールされているいずれかの動作に加えて、ＧＰＵ内で実行する１つ以上の処理動作をスケジュールさせる。
【００４４】
ＧＰＵを制御するためのこれらの２つの異なる、かつ別個の機構を提供することによって、大幅に柔軟性が改善される。特に、セットアップ段階（ＧＰＵの要求される制御レジスタをプログラムし、要求されるデータ構造を共有メモリに格納する）に伴う長い待ち時間が、ＧＰＵの使用によってもたらされる、改善されたスループットで埋め合わせられる分を上回る、大規模なバッチジョブでは、従来の第１の機構が使用される。しかしながら、第１の機構の使用に関連する待ち時間が、その機構を使用するのを妨げる、および／またはタスク自体が、待ち時間に対する許容度が低い、より小さなタスクでは、ＧＰＵに制御信号を提供するための直接的機構として、次いでＣＰＵ２１０とＧＰＵ２２０との間のインタフェース２１５が使用され得る。
【００４５】
本発明の実施形態のインタフェース２１５を使用する際、ＧＰＵによる要求された動作の実施中のＣＰＵとＧＰＵとの間でのデータの転送を管理するために使用され得る、数多くの技術が存在する。ある場合には、データをＣＰＵとＧＰＵとの間で転送するために、共有メモリ２４０、および特に、共有メモリ内に格納された１つ以上のデータ構造を使用することが依然として適切である場合があるが、ＧＰＵによって処理される、要求されたデータ値は、代わりに、インタフェース２１５を介して、ＣＰＵとＧＰＵとの間で直接転送し得る。図３Ａに示された実施形態においては、ＣＰＵ２１０およびＧＰＵ２２０の両方が、それぞれ、それら自体のそれぞれのレジスタファイル２１２、２２２を有し得、データは、インタフェース２１５の制御パスを介してＣＰＵからＧＰＵに送信された制御信号に応答して、ＧＰＵ２２０上での関連データ処理動作の実施中に、要求に応じて、および要求される際に、パス２１７を介して、ＣＰＵレジスタファイル２１２からＧＰＵレジスタファイル２２２に移動され得る。同様に、ＧＰＵによって生成される結果データは、ＣＰＵ２１０による後続参照のために、パス２１７を介して、ＧＰＵレジスタファイル２２２から、もとのＣＰＵレジスタファイル２１２に格納され得る。
【００４６】
図３Ｂは、本発明の別の実施形態を図示する。該実施形態は、図３Ａを参照した前述されたものと類似するが、図３Ｂの実施形態においては、共有レジスタファイル２１６がＣＰＵ２１０内に提供され、ＧＰＵ２２０は、それ自体の別個のレジスタファイルを有しない。本実施形態により、インタフェース２１５の制御パスを介して、ＣＰＵ２１０からＧＰＵ２２０に発行される制御信号は、インタフェース２１５を介して、ＣＰＵによって開始される、要求された動作を実施する際にＧＰＵ２２０によって使用される、共有レジスタファイル２１６の１つ以上のレジスタを指定するように構成することができる。次いでＧＰＵ２２０は、パス２１９を介して、これらの特定のレジスタにアクセスすることができ、特に、共有レジスタファイル２１６は、要求された動作の実行中、ＧＰＵ２２０のデータパス実行パイプラインにアクセスできるようになる。
【００４７】
一実施形態においては、ＣＰＵ２１０が、ＧＰＵ２２０上で特定のタスクを開始するためにインタフェース機構を使用する際、次いでＣＰＵ２１０は停頓し、ＧＰＵから結果が戻るのを待つ。しかしながら、別の実施形態においては、ＣＰＵ２１０は、ＧＰＵによって生成される結果に依存しない、いずれかの命令の実行を継続するように構成され得る。その場合においては、任意のスコアボード回路２１８が提供され得、ＧＰＵが、これらのレジスタへのアクセスを要求する動作を実施中に、これらのレジスタが、ＣＰＵによって使用されるのを防ぐために、これを使用して、ＧＰＵによる使用のために指定されている、これらのレジスタを特定する。次いでレジスタは、ＧＰＵが要求された動作が完了したことを示す際にＣＰＵによる使用のために解放される。
【００４８】
ＧＰＵは、通常、特定の画像処理動作を実施するために最適化された、１つ以上のパイプラインで繋がれた実行装置を含む。そのような一実行装置が、図４に示されている。特に、図４は、共有メモリから得られた三角形データからピクセル値を生成するための実行装置２７０を構成するために使用され得、ＧＰＵ２２０の構成要素を図示する。実行装置２７０は、メモリインタフェース２８０を介した共有メモリ２４０へアクセスでき、前述の第１の機構を使用する、ＣＰＵ２１０によるＧＰＵ２２０のセットアップの後、以下の一連の動作を実施するように構成され得る。
【００４９】
最初に、タイルリストリーダ３００は、それぞれの画面タイルの三角形データを示す、１つ以上のデータ構造を読み取るために、メモリインタフェース２８０を介して共有メモリ２４０にアクセスするように構成される。次いで三角形セットアップエンジン３０５は、これらのデータ構造を、ラスタデータに変換される（すなわち、ピクセルに変えられる）三角形のリストに変換するために、データ構造を処理する。次いでラスタライザ回路３１０は、それぞれの三角形を形成するために計算する必要があるすべてのピクセルを判断する。その後、計算する必要があるこれらのピクセルは、スケジューラ待ち行列３１５（一実施形態においては、ＦＩＦＯ待ち行列として構成され得る）内に置かれる。
【００５０】
次いでスケジューラ回路３２０が、通常、マルチスレッドパイプラインとして構成される、シェーダパイプライン３２５を制御するために使用される。特に、スケジューラは、スケジューラ待ち行列内のピクセルのそれぞれに必要なピクセル計算を実施するために、ピクセルシェーダプログラムをスケジューリングおよび再スケジューリングすることによって、シェーダパイプラインを制御する。スケジューラ待ち行列から取り出された特定のピクセルにピクセルシェーダプログラムがスケジュールされると、次いで該ピクセルシェーダプログラムは、シェーダパイプライン３２５内で実行され、シェーダパイプラインを１回以上通過した後には、該プログラムは、次いで関連するピクセルのピクセルカラーを計算しているであろう。
【００５１】
次いで合成回路３３０が使用され、計算されたピクセルが既存のものと混合され、その後、画面タイルのために計算されたピクセルを回収するために使用される、タイルバッファ３３５にアウトプットが転送される。通常、ＧＰＵの上記の動作は、ＣＰＵによって従来の第１の機構を使用してセットアップされ、ＣＰＵは、共有メモリに格納された１つ以上のデータ構造を介して、処理のための大量の三角形データを提供する。バス２３０を介して、要求されたデータ構造を共有メモリに格納し、ＧＰＵ２２０の関連メモリにマップされた制御レジスタに書き込むのに伴う大規模なセットアップ時間は、上記の動作を実施する際にＧＰＵ２２０によって達成される高スループットで埋め合わせられる分を上回る。
【００５２】
しかしながら、本発明の実施形態により、そのような大規模なバッチジョブ処理を実施する際にも、ＧＰＵのハードウェアリソースの一部が未使用状態である時間が依然として存在し、これは、効率的にアクセスすることができる場合、別の目的でＣＰＵによって有益に使用できることが認識された。例えば、これらのリソースが、ＣＰＵによって最小待ち時間でアクセスすることができる場合、特定の動作を実施するために、ＣＰＵによって使用することができる処理リソースが、シェーダパイプライン３２５内に存在し得る。
【００５３】
本発明の実施形態によると、ＣＰＵ２１０は、そのような動作をＧＰＵ２２０にオフロードできるようにするために、インタフェース２１５によって提供される追加の制御機構を使用するように構成される。したがって、シェーダパイプライン３２５の実施例を考慮し、スケジューラ３２０は、インタフェース２１５を介してＣＰＵからＧＰＵに送られる制御信号を受信するように構成することができ、実際に、特定の制御信号も、処理されるデータを特定する、いずれかの要求されるデータ信号と共に、シェーダパイプラインに送ることができる。同様に、シェーダパイプラインは、図４に示されるように、インタフェース２１５を介してデータおよび関連する信号をＣＰＵに出力して戻し得る。
【００５４】
図５Ａは、スケジューラ３２０を、インタフェース２１５を介して受信されるいかなる制御信号でも考慮して動作するように構成することができる、一方法を図示する、フローチャートである。図５Ａに図示されるプロセスは、通常、スケジューラが、シェーダパイプラインにスケジュールされる次のジョブに関する決定を行う必要がある度に実行され、したがって、例えばプロセスは、クロック周期毎に１度実施されてもよい。ステップ４００では、スケジューラは、シェーダパイプライン内に再スケジュールする必要のあるプログラムが存在するかを判定し、例としては、特定のピクセルカラーを判定するために、プログラムが、２回以上シェーダパイプラインを通過する必要がある場合であり得る。そのようなプログラムがシェーダパイプラインの終端に到達し、再度スケジュールする必要がある場合、次いでこれは、ステップ４００で再スケジュールされ、そしてそのプログラムはステップ４２０で判定される。
【００５５】
しかしながら、再スケジュールする必要のあるプログラムがないと見なされると、次いでプロセスは、インタフェース２１５を介して、ＣＰＵからいずれかの制御信号が受信されたかを判定する、ステップ４０５に進む。該制御信号は、以下、ＣＰＵ要求を示すと見なされる。それぞれのＣＰＵ要求は、ＧＰＵによって実施される１つ以上の処理動作を特定し得る。一実施形態においては、前述のとおり、そのような動作は、通常、ＣＰＵによって実施される動作に密結合され、したがって、機構の長い待ち時間のため、従来の第１の機構を介してＧＰＵにオフロードすることができない。図５Ａのプロセスにより、スケジューラは、インタフェースを介して受信されるいかなるこのようなＣＰＵ要求も、優先度が高いものとして扱い、したがって、いずれかのこのようなＣＰＵ要求のあるところでは、プロセスは、ＣＰＵ要求を実行するためにプログラムをスケジュールする、ステップ４１０に分岐する。ステップ４０５でＣＰＵ要求が検出されない場合、次いでプロセスは、スケジューラ３２０がスケジューラ待ち行列３１５から次のジョブを取り出し、そのジョブに対応するためにプログラムをスケジュールする、ステップ４１５に進む。
【００５６】
上述の機構が、インタフェース２１５を介して受信されるＣＰＵ要求が確実にＧＰＵによって迅速に対処されるようにする一方、多くの実施形態においては、そのようなＣＰＵ要求を、ＧＰＵの通常動作に対してそれ程侵入的に対処する必要がなく、代わりに、スケジューラは、シェーダパイプライン内でリソースが利用可能である限り、これらのＣＰＵ要求を割り当てるようにすることができる。図５Ｂは、そのようなスキームに組み込むために、スケジューラ３２０によって実施され得る、別の一連の動作を図示する。図５Ａと同様に、図５Ｂのフローチャートによって図示されるプロセスは、スケジューラが、プログラムをシェーダパイプラインにスケジュールする必要がある度に繰り返され、したがって、一実施形態においては、クロック周期毎に繰り返され得る。
【００５７】
ステップ４５０では、スケジューラ３２０は、再スケジュールする必要のあるプログラムが存在するかを判定し、そうであれば、次いでプログラムは、ステップ４６０で再スケジュールされる。したがって、ステップ４５０および４６０は、図５Ａを参照して前述のステップ４００および４２０と類似することが理解されるであろう。
【００５８】
プログラムを再スケジュールする必要がない場合、次いでプロセスは、スケジューラ待ち行列３１５から次のジョブが取り出され、シェーダパイプライン３２５にスケジュールされる、ステップ４５５に進む。その後、またはプログラムが再スケジュールされるステップ４６０の後、スケジューラ３２０は、ステップ４６５で、ＣＰＵからいずれかの制御信号が受信されたか、すなわち、保留となっているＣＰＵ要求があるかを判定する。ない場合には、さらなる動作は要求されない。しかしながら、ＣＰＵ要求が保留となっている場合、次いでプロセスは、スケジューラが、ＣＰＵ要求を取り扱うのに利用することができる、シェーダパイプライン内の任意の予備リソースがあるかを判定する、ステップ４７０に進む。そうである場合には、次いでステップ４７５で、これらのリソースは、ＣＰＵ要求を実行するために、スケジュールされ、一方、予備リソースがない場合には、この時点で動作は行われない。
【００５９】
図５Ｂのフローチャートは、インタフェースを介して受信されるＣＰＵ要求を、それらが利用可能になり次第、および利用可能になる際、シェーダパイプラインのリソースにスケジュールできるようにすることが理解されるであろう。シェーダパイプライン内のリソースが、短時間内に利用可能になる可能性が高いと見なされると、ＧＰＵによって実施されている主要なバッチジョブに影響が全くないわけではないが、ほとんどないため、次いでこのような手法は、インタフェース２１５を介して受信されるＣＰＵ要求が、迅速かつ非常に効率的な方法で取り扱われるようにすることができる。インタフェースを介して、ＣＰＵ要求を直接ＧＰＵに投入することにより、第１の機構の長いセットアップ待ち時間が回避されることから、ＧＰＵは、より侵入的な図５Ａの手法というよりはむしろ図５Ｂのフローにしたがってスケジュールされる際にも、ＣＰＵのタイミング要求を満たすのに十分迅速に、ＣＰＵ要求を取り扱うことができると考えられる。
【００６０】
図６から図８は、本発明の実施形態のインタフェースを介してＧＰＵを制御するための３つの別の機構を図示する。図６に図式的に示される手法により、ＣＰＵ２１０は、共有命令のストリーム５００内に提供される、一連の命令を実行するように構成される。命令のストリーム内に現れ、ＣＰＵ２１０によって実行される通常のＣＰＵ命令に加えて、コーディングがＣＰＵ命令セットと重複せず、したがって、最初の復号段階中に、ＣＰＵによってＧＰＵ命令として認識することができる、複数のＧＰＵ命令が存在する。一旦ＧＰＵ命令として認識されると、これらの命令は、ＧＰＵによる実行のために、インタフェース２１５を介してＧＰＵ２２０に転送される。多くの場合、ＧＰＵ命令の指示も、ＧＰＵ内でＧＰＵ命令を実行中、インタフェース２１５を介して、ＣＰＵとＧＰＵとの間を転送する、１つ以上のハンドシェーキング信号と共に、ＣＰＵパイプラインを通過する。
【００６１】
図６の手法の特定の一実施形態においては、ＣＰＵ２１０が、ＧＰＵを制御するためにインタフェース２１５を使用する際、ＧＰＵが制御される方法は、ＡＲＭのＮｅｏｎ  ＳＩＭＤ処理回路が、ＡＲＭプロセッサコアによって制御される方法と類似すると見なすことができ、ＡＲＭのＮｅｏｎ  ＳＩＭＤ処理回路の一般的説明は、共同所有の米国特許第７，１４５，４８０号明細書に記載されているが、その全内容は引用により本明細書に組み込まれている。
【００６２】
図７は、共有命令のストリーム５１０が、この場合もやはりＣＰＵ２１０によって実行されるが、ＣＰＵおよびＧＰＵ命令が完全に独自のコーディングを有しない、別の手法を図示する。代わりに、ＣＰＵ２１０は、ＣＰＵ標準モードの動作からＧＰＵモードの動作に切り替えるための切り替え命令を実行するように構成することができる。切り替え命令の後、ＧＰＵモードの動作と見なして、後続命令が復号される。図７に示される実施例においては、この切り替え命令は、「ＢＸＬ」命令と称され、これは、動作のモードを変更することに加えて、一連のＧＰＵ命令が存在するコードストリームの一部に分岐を生じさせる。連続する命令の１つ以上が、依然としてＣＰＵによって実行される必要があり得る場合がある一方、切り替え後の命令の大部分は、ＧＰＵによる実行が意図され、したがって実行のために、インタフェース２１５を介してＧＰＵ２２０に送られると想定される。要求される一連のＧＰＵ命令が実行される際、プロセスは、通常のＣＰＵモードが再開される、ＢＸＬ命令の後のＣＰＵ命令に分岐して戻り、後続命令は、ＣＰＵ命令として復号され、実行される。
【００６３】
通常のＣＰＵモードに戻る複数の方法を提供することができる。例えば、一実施形態においては、ＧＰＵ命令のうちの１つは、ＧＰＵが実行内容を再びＣＰＵに変更させ得る。これは、明示的ＢＸ型命令、または非ＧＰＵアドレスに戻るようにする命令のいずれかであってよい。代替として、ＧＰＵスレッドを抹消し、ＣＰＵが、もとのＢＸＬ命令の後の次の命令から継続できるようにする、特別命令であってもよい。
【００６４】
図６の手法が使用されるか図７の手法が使用されるかに関わらず、インタフェースを介してＧＰＵに転送される命令は、様々な形態を取り得る。一実施形態においては、命令のうちの少なくとも１つは、共有メモリ内の１つ以上のデータ構造へのポインタを提供してもよい。したがって、このような実施形態においては、命令は、インタフェースを介して、ＣＰＵからＧＰＵに直接投入され得るが、次いで動作されるデータ値、および任意に実施される動作の識別は、共有メモリ内の１つ以上のデータ構造によって提供される。
【００６５】
しかしながら、共有メモリを使用する必要はなく、代わりに、インタフェースを介して提供される命令の１つ以上が、実施例が図３Ａを参照して上述されるように、ＧＰＵ上で実行される際、データはＣＰＵのレジスタファイルとＧＰＵのレジスタファイルとの間で転送され得る。代替として、図３Ｂを参照して上述されるように、共有レジスタファイルが提供され得、インタフェースを介して送られる１つ以上の命令は、要求される動作を実施する際にＧＰＵによって使用される、共有レジスタファイルのレジスタを特定し得る。
【００６６】
さらに、１つ以上の命令は、画像処理装置によって実施される実際のデータ処理動作、例えば演算動作、制御フロー動作、論理動作、比較動作、マスキング動作等を指定し得る。
【００６７】
図８は、命令のストリーム５２０は共有されず、代わりに、ＣＰＵ２１０によって実行される命令のみを含む際に使用され得る、別の機構を図示する。しかしながら、ＣＰＵによって実行される、少なくとも１つの命令は、ＧＰＵ上で１つ以上の動作を開始するために、インタフェースを介して、１つ以上の制御信号をＧＰＵ２２０に送信し得る。図８の実施例においては、この種類の命令はＢＸＧＰＵ命令と称され、実行される際、ＣＰＵに、ＧＰＵ２２０に転送するための１つ以上の制御信号を生成させ、その後、ＣＰＵの実行は停頓する。制御信号は、一実施形態においては、共有メモリ内の１つ以上のデータ構造へポインタを提供し得、また、実施される動作のためにＧＰＵを構成するのに必要な様々な状態情報を提供し得る。これらの制御信号が受信されると、ＧＰＵは、例えば図５Ａまたは図５Ｂの前述の機構を使用して、要求されたタスクをスケジュールし、完了すると、パス２５０を介して割り込み信号を発行する。次いでＣＰＵは、ＧＰＵから結果データ（例えば、共有メモリに格納され得るか、またはインタフェースを介してＣＰＵレジスタファイルに直接格納され得る）を取り出すために、割り込みサービスルーチンを実行することによって、割り込みに応答する。次いでＣＰＵは、一連の命令５２０の実行を再開し、ＢＸＧＰＵ命令の直後の命令から開始する。
【００６８】
本発明の実施形態の上記の説明から、このような実施形態のインタフェース２１５を使用することによって、ＣＰＵ中心のコードが、ＧＰＵにオフロードされた、より従来の動作に関連するセットアップオーバーヘッドを生じることなく、特定のタスクのためにＧＰＵハードウェアを利用することができるように、システムオンチップ環境内のＣＰＵおよびＧＰＵを密接に連結するための技術が提供されることが理解されるであろう。一実施形態においては、ＣＰＵおよびＧＰＵの両方は、ＣＰＵによって管理される、一般的な命令のストリームから実行し、通信機構は、タスク切り替えもしくは通信オーバーヘッドまたはペナルティを最小化するようにすることができる。
【００６９】
本発明の実施形態は、加速し、単一実行スレッドから潜在するＧＰＵ計算能力に容易に吸収することができる、クリティカルコード部分の再標的化を可能にする能力を提供し、共有メモリ対話によって到達できる域を超えて、ＧＰＵ／ＣＰＵ構成要素の全体の能力を向上する。
【００７０】
本発明の一実施形態においては、インタフェース機構が使用される際、ＣＰＵとＧＰＵとの間の通信に共有メモリを使用することは、回避、または少なくとも大幅に低減することができる。一実施形態においては、データは、ＣＰＵのレジスタファイルとＧＰＵのレジスタファイルとの間のインタフェースを介して直接転送することができ、または代替として、共有レジスタファイルを使用することができる。共有レジスタバンクが使用される特定の一実施形態を考慮すると、次いでＣＰＵ２１０が、前述の米国特許第７，１４５，４８０号明細書に記載されるもの等のＮｅｏｎアーキテクチャを採用する場合、Ｎｅｏｎレジスタバンクの数、幅、および本質的構成は、レジスタバンクが、ＧＰＵが動作する必要のあるデータを含む可能性をより高くするので、次いでＮｅｏｎ機能用に提供されたＳＩＭＩレジスタバンクは、ＧＰＵと共有されるレジスタバンクとして割り振られ得る。例えば、ゲームエンジン人工知能および物理コードならびにデータ表現は、Ｎｅｏｎに役立ち、本発明のインタフェース機構を使用して、特定の機能をＧＰＵにオフロードする能力により、これは、処理能力における大幅な改善をもたらすことが可能である。該実施形態においては、ＧＰＵ内の動作レジスタが、中間結果および一時的値に使用することができる一方、ＣＰＵ側のＮｅｏｎレジスタは、初期入力および最終出力レジスタに使用することができる。該手法は、マイクロアーキテクチャの複雑性を低減するのに役立つであろう。
【００７１】
本明細書において、特定の実施形態を説明したが、本発明は、それに制限されず、本発明の範囲内において、多くの修正および追加が行われ得ることが理解されるであろう。例えば、本発明の範囲から逸脱することなく、添付の特許請求の範囲における、独立請求項の特徴と従属請求項の特徴との様々な組み合わせを行い得る。
【符号の説明】
【００７２】
２１０  ＣＰＵ
２１２、２２２  レジスタファイル
２１５  インタフェース
２１７、２５０  パス
２２０  ＧＰＵ
２３０  バスネットワーク
２４０  共有メモリ
【図１】
2010050970.tif 000003
【図２】
2010050970.tif 000004
【図３Ａ】
2010050970.tif 000005
【図３Ｂ】
2010050970.tif 000006
【図４】
2010050970.tif 000007
【図５Ａ】
2010050970.tif 000008
【図５Ｂ】
2010050970.tif 000009
【図６】
2010050970.tif 000010
【図７】
2010050970.tif 000011
【図８】
2010050970.tif 000012
【外国語明細書】
2010050970.tif 000013
2010050970.tif 000014
2010050970.tif 000015
2010050970.tif 000016
2010050970.tif 000017
2010050970.tif 000018
2010050970.tif 000019
2010050970.tif 000020
2010050970.tif 000021
2010050970.tif 000022
2010050970.tif 000023
2010050970.tif 000024
2010050970.tif 000025
2010050970.tif 000026
2010050970.tif 000027
2010050970.tif 000028
2010050970.tif 000029
2010050970.tif 000030
2010050970.tif 000031
2010050970.tif 000032
2010050970.tif 000033
2010050970.tif 000034
2010050970.tif 000035
2010050970.tif 000036
2010050970.tif 000037
2010050970.tif 000038
2010050970.tif 000039
2010050970.tif 000040
2010050970.tif 000041
2010050970.tif 000042
2010050970.tif 000043
2010050970.tif 000044
2010050970.tif 000045
2010050970.tif 000046
2010050970.tif 000047
2010050970.tif 000048