(57)【要約】  それぞれの処理スレッドに対応するプログラム命令のそれぞれのストリームを実行する複数の処理ユニット（４〜１８、３２〜３８）を備えた、データ処理装置が提供する。例外制御回路（２０、４２）は、例外トリガーイベントに応答して、処理ユニットのグループに対する例外処理を制御する。処理ユニットのそれぞれは、正常、例外中、および例外終了状態間を、所与の例外イベントに応答して、一度だけ、かつ順に移行する。処理ユニットのグループは、正常、トリガー、および完了中状態間を、例外イベントに応答して、順に移行する。例外処理に入っている処理ユニットの数を追跡し、その後、それらの例外処理を完了している処理ユニットの数を追跡するためにカウンタ値が使用される。
2013540329.tif 000002
【特許請求の範囲】
【請求項１】
各処理ユニットが、処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理ユニットと、
複数の前記処理ユニットのグループに対する例外トリガーイベントに応答して、それぞれの処理スレッドを実行する前記グループの例外処理を制御するように構成された例外制御回路と
を含むデータ処理装置。
【請求項２】
前記例外制御回路が、前記例外トリガーイベントに応答して前記グループ内の前記処理ユニットのそれぞれを、順に、プログラム命令の前記ストリームの実行を中断し、例外処理プログラム命令のストリームを実行し、さらにプログラム命令の前記ストリームの実行を再開することにより制御するように構成された、請求項１に記載のデータ処理装置。
【請求項３】
前記グループ内の前記処理ユニットのそれぞれに対する前記例外制御回路が、一連の処理ユニット例外状態の前記例外トリガーイベントに対して、トラバーサルを一度だけ制御する、請求項２に記載のデータ処理装置。
【請求項４】
前記一連の処理ユニット例外状態が、順に、
（ｉ）プログラム命令の前記ストリームの処理に対応する正常状態と、
（ｉｉ）前記例外処理プログラム命令の処理に対応する例外中状態と、
（ｉｉｉ）プログラム命令の前記ストリームの再開された処理に対応する例外終了状態と
である、請求項３に記載のデータ処理装置。
【請求項５】
前記グループ内の前記処理ユニットの全てによって例外処理が完了すると、前記例外制御回路が、前記グループ内の前記処理ユニットの全てを前記例外終了状態から前記正常状態へ移行する、請求項４に記載のデータ処理装置。
【請求項６】
処理ユニットが、前記例外中状態および前記例外終了状態のいずれかにある間、いかなるさらなる例外トリガーイベントにも非応答である、請求項４または請求項５に記載のデータ処理装置。
【請求項７】
前記処理ユニットのそれぞれが、
（ｉ）前記例外処理プログラム命令の実行後に実行が再開されるプログラム命令の前記ストリーム内の点に対応する、戻りプログラムカウンタ値と
（ｉｉ）前記処理ユニットの現在の処理ユニット例外状態と
を示す、関連する処理ユニット状態変数を有する、
請求項４〜６のいずれか１項に記載のデータ処理装置。
【請求項８】
前記処理ユニット状態変数が、それぞれの処理ユニット内に格納される、請求項７に記載のデータ処理装置。
【請求項９】
前記グループに対する前記例外制御回路が、一連のグループ例外状態の前記例外トリガーイベントに対してトラバーサルを制御する、請求項１から８のいずれか１項に記載のデータ処理装置。
【請求項１０】
一連の前記グループ例外状態が、順に、
（ｉ）前記グループ内の前記処理ユニットの全てによるプログラム命令のそれぞれのストリームの処理に対応する正常状態と、
（ｉｉ）例外トリガーイベントが生じているが、前記グループ内の前記処理ユニットの全てがまだ例外処理を開始していない状態に対応するトリガー状態と、
（ｉｉｉ）前記グループ内の前記処理ユニットの全てによる例外処理が完了しているが、前記処理ユニットの全てがまだプログラム命令の前記ストリームの処理を再開していない状態に対応する完了中状態と
である、請求項９に記載のデータ処理装置。
【請求項１１】
前記グループ内の前記処理ユニットの全てがプログラム命令の前記ストリームの処理を再開しているとき、前記例外制御回路が、前記グループを完了中状態から前記正常状態に移行する、請求項１０に記載のデータ処理装置。
【請求項１２】
前記グループが、前記トリガー状態および前記完了中状態のいずれかにある場合は、いかなるさらなる例外トリガーイベントにも非応答である、請求項１０または請求項１１に記載のデータ処理装置。
【請求項１３】
前記グループが、
（ｉ）前記グループの現在のグループ例外状態と、
（ｉｉ）前記グループ内の処理ユニットの総数と、
（ｉｉｉ）前記例外処理を開始しているが、完了していない、処理ユニットの数を示すカウンタ値と
を示す、関連するグループ状態変数を有する、
請求項１０〜１２のいずれか１項に記載のデータ処理装置。
【請求項１４】
前記グループ状態変数が、前記例外制御回路内に格納される、請求項１３に記載のデータ処理装置。
【請求項１５】
前記グループ内の各処理ユニットが、プログラム命令の前記ストリーム内のプログラム命令をスケジューリングすると、前記処理ユニットが、前記処理ユニット状態が正常状態かつ前記グループ状態がトリガー状態であるか否かを判断し、そうであれば、前記処理ユニット状態を例外中状態に変更し、前記処理ユニットに対する現在のプログラムカウンタ値を保存し、前記例外処理を開始し、そして、前記カウンタ値を増加させる、請求項４〜８、請求項１３、または請求項１４のいずれか１項に記載のデータ処理装置。
【請求項１６】
前記カウンタ値が増加すると、前記カウンタ値が前記総数と比較され、等しければ、前記グループ状態が完了中に変更される、請求項１５に記載のデータ処理装置。
【請求項１７】
処理ユニットの前記処理ユニット状態が例外中であり、かつ前記処理ユニットが例外プログラム命令からの戻りを実行すると、前記処理ユニット状態が例外終了に変更される、請求項４〜８のいずれか１項に記載のデータ処理装置。
【請求項１８】
処理ユニット状態が例外終了であり、かつ前記グループ状態が完了中の場合、前記処理ユニット状態が正常に変更され、前記カウンタ値が減少する、請求項４〜８、請求項１３、または請求項１４のいずれか１項に記載のデータ処理装置。
【請求項１９】
前記カウンタ値が減少すると、前記カウンタ値がゼロと比較され、等しければ、前記グループ状態が正常状態に変更される、請求項１８に記載のデータ処理装置。
【請求項２０】
プログラム命令を実行するための複数の処理手段であって、各処理手段が、処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理手段と、
複数の前記処理手段のグループに対する例外トリガーイベントに応答して、それぞれの処理スレッドを実行する前記グループの例外処理を制御するための例外制御手段と
を含むデータ処理装置。
【請求項２１】
各処理ユニットが処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理ユニットでプログラム命令を実行するステップと、
複数の前記処理ユニットのグループに対する例外トリガーイベントに応答して、それぞれの処理スレッドを実行する前記グループの例外処理を制御するステップと
を含むデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より詳細には、本発明は、データ処理システム内の例外処理の制御に関する。
【背景技術】
【０００２】
それぞれが、処理スレッドに対応するプログラム命令のストリームを実行する複数の処理ユニットを含むデータ処理システムを提供することが知られている。係るシステムの例は、それぞれが、グラフィック処理ユニットによって実行されている処理全体の異なる部分を実行するプログラム命令のストリームを実行する、多数のグラフィック処理コアをたいてい含む、グラフィック処理ユニットである。一例は、タイルベースのグラフィック処理が実行され、各グラフィック処理コアが、陰影付け操作などの操作を、画像全体内の異なるタイルに関して実行する場合である。複数の処理ユニットを含むシステムの別の例は、汎用処理に対して徐々に増えつつあるような、対称型マルチプロセッシングシステムである。係るシステム内では、処理の異なる部分が、異なる処理ユニット上で実行され得ることが知られており、例えば、１つのプロセッサコアが数値結果の計算専用であり得、別のプロセッサコアが、それらの数値結果を表示するためのグラフィカルデータの生成専用であり得る。
【０００３】
データ処理の分野では、プロセッサが割込み信号の影響を受け得ることも知られており、それは、実行中の現在の処理を中断して、プログラムの流れを例外処理コードの実行にリダイレクトする働きをする。係る割込みは、物理イベントを処理するためのリアルタイム処理システム内で頻繁に見られる。マルチタスクシステム内でスケジュールを制御するために割込みを使用することも可能である。
【発明の概要】
【課題を解決するための手段】
【０００４】
一態様から見ると、本発明は、
各処理ユニットが、処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理ユニットと、
複数の前記処理ユニットのグループに対する例外トリガーイベントに応答して、それぞれの処理スレッドを実行する複数の前記処理ユニットのグループの例外処理を制御するように構成された例外制御回路と
を含むデータ処理装置を提供する。
【０００５】
本技法は、それぞれが、処理スレッドに応じてプログラム命令のストリームを実行する、複数の処理ユニットを意味するシステムのコンテキスト内で、個々の処理ユニットの割込み動作を結合する必要があることを認識する。本技法は、処理ユニットのグループに対する例外トリガーイベントに応答して、処理ユニットをグループベースで制御する例外制御回路を提供する。従って、例外は、処理ユニットのグループに結合され得、例外条件の発生（例えば、物理的信号またはソフトウェア生成割込み）は、そのグループのそれぞれの処理ユニット内の例外処理をトリガーする結果になる。
【０００６】
グループの各メンバー内の例外制御回路によってトリガーされる例外処理は、プログラム命令の現在のストリームの実行の中断、例外処理プログラム命令のストリームの実行、次いで、元のプログラム命令の実行の（同じ点または異なる点での）再開である。それ故、例外処理は、例外処理プログラム命令の実行後に元の処理が再開されるので、プロセッサのリセットとは区別される。
【０００７】
グループ内の処理ユニットのそれぞれが、例外イベントがトリガーするときに異なる状態を有し得、例外処理中に異なって応答し得ることが理解されるであろう。この理由のため、例外制御回路は、処理ユニットのそれぞれによる例外処理を追跡する必要がある。これは、一連の処理ユニット例外状態の例外トリガーイベントに対して一度だけ、処理ユニットのそれぞれによりトラバーサル（ｔｒａｖｅｒｓａｌ）を制御することによって達成される。個々の処理ユニットは、従って、個別にではあるが、統一および協調的な方法で管理され得る。
【０００８】
一連の処理ユニット例外状態は、順に、プログラム命令のストリームの処理に対応する正常状態、例外処理プログラム命令の処理に対応する例外中（ｉｎ−ｅｘｃｅｐｔｉｏｎ）状態、およびプログラム命令の元のストリームの再開された処理に対応する例外終了（ｄｏｎｅ−ｅｘｃｅｐｔｉｏｎ）状態を含み得る。他の実施形態は、例えば、正常、例外中、キャッシュクリーニング、および完了中など、４つ以上の状態を有し得る。
【０００９】
グループの処理ユニットは、処理ユニットの全てが、処理ユニットが正常状態に戻るという、それらの例外処理を完了するまで、それらの個々の例外処理が完了すると、例外終了状態で止まる。
【００１０】
処理ユニットは、例外中状態および例外終了状態のいずれかの間は、いかなるさらなる例外トリガーイベントにも応答しないようにされ得る。これは、そのグループに対する入れ子になった例外の複雑さを防ぐ。
【００１１】
異なる処理ユニットの制御を便利な方法で容易にするために、処理ユニットのそれぞれは、例外処理プログラム命令の実行後に実行を再開する、プログラム命令の元のストリーム内の点（これは、同じ点または異なる点であり得る）に対応する戻りプログラムカウンタ値を示す関連する処理ユニット状態変数、および処理ユニットが現在、正常、例外中、および例外終了状態のいずれを有するかを示す現在の処理ユニット例外状態を有する。
【００１２】
これらの処理ユニット状態変数は、設計のスケーリングを容易にするため、それぞれの処理ユニット内に便宜的に格納され得るが、代替として、例外制御回路内などのように、中央に格納され得る。
【００１３】
一連のグループ例外状態の例外トリガーイベントについては、グループに対して例外制御回路がトラバーサルを制御する実施形態では、グループの例外処理の制御がさらに容易にされる。
【００１４】
これらのグループ例外状態は、グループ内の全ての処理ユニットによるプログラム命令のそれぞれのストリームの処理に対応する正常状態（例えば、その正常スレッドを実行する各処理ユニット）、例外トリガーイベントが生じているが、グループ内の全ての処理ユニットがその例外トリガーイベントに応答して例外処理をまだ開始していないトリガー状態、およびグループ内の全ての処理ユニットによる例外処理が完了しているが、処理ユニットの全てがまだそれらのプログラム命令の元のストリームの処理を再開していない完了中状態であり得る。
【００１５】
例外制御回路は、グループ内の全ての処理ユニットがプログラム命令のそれらの元のストリームの処理を再開すると、そのグループを完了状態から正常状態に移行し得る。従って、全ての処理ユニットが、例外処理プログラム命令の実行後に処理を再開している、それらの正常状態に戻るまで、グループは完了中段階に保持される。
【００１６】
グループ内の処理ユニットは、トリガー状態または完了中状態のいずれかの間は、いかなるさらなる例外トリガーイベントにも非応答であり得る。これは、係る実施形態内の入れ子になった例外を防ぐ。
【００１７】
処理ユニットのグループの制御は、現在のグループ例外状態、（ソフトウェア制御によってなど、動的に構成され得る）グループ内の処理ユニットの総数、および、例外処理が開始されているが、まだ完了していない処理ユニットを示すカウンタ数を示すグループ状態変数の格納によって容易にされ得る。これらのグループ状態変数は、例外制御回路内に便宜的に格納され得る。
【００１８】
各処理ユニットが、実行するプログラム命令のスケジューリングをしようとする、少なくともいくつかの実施形態では、処理ユニットは、現在の処理ユニット状態が正常か、また、グループ状態がトリガーであるか否かを判断する。そうであれば、処理ユニットは正常状態から例外中状態に変わり、処理ユニットに対する現在のプログラムカウンタ値を（戻りアドレスとして使用するために）保存し、例外中状態にある処理ユニットの数を示すカウンタ値を増加させるとともに、例外処理を開始する。
【００１９】
カウンタ値が増加されると、これが、グループ内の処理ユニットの総数と比較され得る。カウンタ値がグループ内の総数に達すると、この時点で、処理ユニットの全てが例外処理に入るようにトリガーされているが、まだ全てがこの例外処理を完了していないので、グループ状態がトリガーから、完了中に変更される。
【００２０】
各プロセッサが例外プログラム命令からの戻りを実行すると、その処理ユニットに対する処理状態が例外終了に変更され得る。
【００２１】
処理ユニットがその状態を例外終了として有し、グループ状態が完了中である場合、処理ユニット状態は、正常に変更され得、カウンタ値が減少され得る。
【００２２】
カウンタ値が減少されると、これがゼロの値と比較され、等しければ、グループ状態が正常に変更される。
【００２３】
従って、カウンタ値は、各処理ユニットがその例外処理を開始するようにトリガーされると、グループ内の総数まで増加され得、次いで、各処理ユニットが、全ての処理ユニット内の例外処理のトリガー後に、その例外処理が完了しているとして検出されると、ゼロに戻るまで減少され得ることが分かるであろう。
【００２４】
別の態様から見ると、本発明は、
各処理手段が、処理スレッドに対応するプログラム命令のストリームを実行する、プログラム命令を実行するための複数の処理手段と、
複数の前記処理手段のグループに対する例外トリガーイベントに応答して、それぞれの処理スレッドを実行する前記複数の処理手段の前記グループの例外処理を制御するための例外制御手段と
を含む、データ処理ユニットを提供する。
【００２５】
さらなる態様から見ると、本発明は、
各処理ユニットが処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理ユニットでプログラム命令を実行するステップと、
複数の前記処理ユニットのグループに対する例外トリガーイベントに応答して、それぞれの処理スレッドを実行する前記複数の処理ユニットの前記グループの例外処理を制御するステップと
を含むデータ処理の方法を提供する。
【００２６】
ここで、本発明の実施形態が、ほんの一例として、添付の図を参照して説明される。
【図面の簡単な説明】
【００２７】
【図１】それぞれのプログラムスレッドに対応して、プログラム命令の別個のストリームを実行するための複数の処理ユニットを含む、グラフィック処理ユニットを概略的に示す。
【図２】各処理ユニット内に保持される処理ユニット状態を概略的に示す。
【図３】複数のプロセッサコアを組み込んでいるシステムオンチップ対称型マルチプロセッシングユニットを概略的に示す。
【図４】処理ユニットの例外状態を概略的に示す。
【図５】グループの例外状態を概略的に示す。
【図６】例外制御回路内に格納されたグループ状態変数を概略的に示す。
【図７】処理ユニット内のプログラム命令のスケジューリングを概略的に示す流れ図である。
【図８】トリガー状態から完了中状態へ移行するグループ状態の制御を概略的に示す流れ図である。
【図９】例外中状態から例外終了状態へ移行する処理ユニット状態の制御を概略的に示す流れ図である。
【図１０】例外終了状態から正常へ移行する処理ユニット状態の制御を概略的に示す流れ図である。
【図１１】完了中から正常へ移行するグループ状態の制御を概略的に示す流れ図である。
【発明を実施するための形態】
【００２８】
図１は、この例では、８つのグラフィック処理コア４、６、８、１０、１２、１４、１６、１８を包含する、グラフィック処理ユニット２を概略的に示す。これらのグラフィック処理コア４〜１８は、それぞれが処理スレッドに対応するプログラム命令のそれぞれのストリームを実行する。スレッドは、高度に関連し得、実際には、プログラム命令は同一であり得る。例えば、異なる処理スレッドが、処理中の画像全体内の異なる領域に関して実行されている同じ処理命令に対応し得る。処理の作業負荷を分割し、全体的な処理スループットをさらに高めるために、並行して実行している多数のグラフィック処理コア４〜１８を有することはグラフィック処理ユニット内では標準的である。グラフィック処理ユニット２は通常、多数のさらなる回路素子を含むが、これらは、明確にするために、図１から省略されていることが理解されるであろう。
【００２９】
同様にグラフィック処理ユニット２内に含まれているのは、グラフィック処理コア４〜１８のそれぞれに結合されている例外制御回路２０である。例外制御回路２０は、割込み信号に応答し、それは、外部割込み信号ｉｒｑまたは、ソフトウェア割込みｓｗｉなどの、内部で生成された割込み信号であり得る。例外制御回路２０は、その例外トリガーイベントに結合されている処理ユニット（グラフィック処理コア）の関連するグループ内の例外処理をトリガーするため、係る例外トリガー信号ｉｒｑ、ｓｗｉに応答する。処理ユニットのグループは、どの処理スレッドが割り当てられ、グラフィック処理コア４〜１８上で処理を開始しているかに応じて構成されるか、かつ／または動的に構成されるソフトウェアであり得る。
【００３０】
一例として、処理ユニット４、８、１０および１８は全て、特定の陰影付け操作を、処理中の画像内の異なる領域について実行する同じプログラム命令を実行する。ソフトウェア割込みｓｗｉなどの割込みは、次いで、グループ内の処理ユニット４、８、１０、１８のそれぞれによる処理を迂回する意図で生じ、それらのグラフィック処理コア４、８、１０、１８のそれぞれが実行していた元の処理スレッドを再開する前に、例外処理プログラム命令を実行する。例外制御回路２０は、どのグラフィック処理コア４〜１８がどのグループ内にあるか、およびそれらのグループのグループ状態を追跡するグループ状態変数を格納するためのグループ状態ストレージ２２を含む。
【００３１】
図２は、個別の処理ユニット４を示し、現在のプログラムカウンタ２４、戻りポインタ２６（例外処理の終わりに、例外処理プログラム命令からの戻りの実行時に実行される命令の命令アドレスを示す）、および処理ユニット例外状態２８（処理ユニット４の現在の例外状態を示す）を含む、さらなる状態変数のためのストレージを含むとしてこれを示す。
【００３２】
図３は、別の実施形態例を示す。この実施形態は、スヌープ（ｓｎｏｏｐ）制御ユニット４０を介して接続され、それらのプログラム命令のそれぞれの個々のストリームに応答してそれぞれの処理スレッドを実行する、複数の汎用処理コア３２、３４、３６、３８を含む、システムオンチップ対称型マルチプロセッシング３０から成る。これらの汎用処理コア３２、３４、３６、３８のそれぞれは、同様に、現在のプログラムカウンタ値、戻り命令アドレス、および処理ユニット例外状態変数を格納する。異なる汎用処理コア３２〜３８は、生じる割込みトリガーイベント（ｉｒｑ、ｓｗｉ）が、グループの処理ユニットコア３２〜３８のそれぞれの中の例外処理をトリガーするような方法で結合されたグループに形成され得る。
【００３３】
処理ユニットコア３２〜３８のそれぞれに結合された例外制御回路４２は、例外処理を関係する処理ユニットのグループによって制御するために、例外トリガー信号に応答する。
【００３４】
図４は、図１のグラフィック処理コア４〜１８および図３の汎用処理コア３２〜３８と個々に関連する処理ユニットの例外状態を概略的に示す。個々の処理ユニットによって、図示するような順で、かつ、各割込み信号に関して一度だけ、トラバースされるこれらの状態は、正常状態、例外中状態、および例外終了状態である。処理ユニットの例外状態は、グループ状態が完了中のとき、例外終了状態から正常状態に戻る。例外中状態または例外終了状態のいずれかの場合、処理ユニットはいかなるさらなる割込みにも応答しないであろう。例外制御回路４２および個々の処理ユニット内の回路（この回路の分散は、異なる実施形態内で異なり得るが）は、例外処理イベントの発生に応答した、図４に示す状態間での処理ユニット例外状態の移行の追跡および制御に関与する。
【００３５】
図５は、処理ユニットのグループに対するグループの例外状態を示す。これらの状態は、正常状態、トリガー状態、および完了中状態を含む。グループの例外状態は、全ての処理ユニットが（増加するカウンタを使用して追跡し得るように）それらの例外処理を開始している場合、トリガーから完了中に移行する。グループ状態は、減少するカウンタによって追跡され得るように、全ての処理ユニットが、それらの正常状態に戻っている場合、完了中から正常に移行する。グループがトリガー状態または完了中状態のいずれかである場合、そのグループ内のどの処理ユニットおよびグループ自体も、さらなる割込みに応答しないであろう。
【００３６】
図６は、例外制御回路２０、４２内に格納され得、例外処理を処理ユニットのグループによって制御するために使用され得るグループ状態変数を概略的に示す。これらの状態変数は、現在のグループ例外状態４４、グループ内の処理ユニットの総数４６、およびそれらの例外処理を開始しているが、まだ完了していない処理ユニットの数を示すカウンタ値４８（関連する増加カウンタおよび減少カウンタと共に）を含む。
【００３７】
図７〜図１１は、例外制御回路２０、４２ならびに個々の処理ユニット４〜１８および３２〜３８内の回路によって実行されると以前に参照された例外処理ユニット状態およびグループ状態の制御を示す流れ図である。図７〜図１１に示す制御を実行する回路は、形状においてかなり変化することができ、物理的実装の異なる部分間で異なる方法で提供され得ることが理解されるであろう。これらの変形形態の全てが、本技法に包含される。
【００３８】
図７は、プログラム命令のスケジューリングを指示する処理ユニットを示す。ステップ５０で、処理は、スケジューリングされる次のプログラム命令が利用可能になるまで待機する（例えば、以前の命令が完了している）。ステップ５２は、次いで、処理ユニットがその正常状態にあるか否かを判断する。処理ユニットがその正常状態にない場合、次のプログラム命令が、ステップ５４での処理のためにスケジューリングされ、処理がステップ５０に戻る。処理ユニットが、ステップ５２で判断したように、正常状態にある場合、ステップ５６は、グループ状態が現在トリガーであるか否かを判断する。ステップ５２およびステップ５６で判断したように、処理ユニット状態が正常で、グループ状態がトリガーである場合、処理ユニットはその例外処理を開始すべきであることが理解される。そうでない場合、処理は再度、ステップ５４に進み、次のプログラム命令がスケジューリングされる。
【００３９】
ステップ５６で、グループ状態がトリガーであると判断された場合、ステップ５８は、処理ユニット状態を例外中に変更する。ステップ６０は、例外処理ルーチンが実行された後、例外処理からの戻りを行うことができるように、現在のプログラムカウンタ（ＰＣ）値を、戻りプログラムカウンタ（ＲＰＣ）アドレスに保存する。いくつかの実施形態では、戻りは、異なる点に対しても行われ得ることが理解されよう。ステップ６２で、別の処理ユニットが例外中状態に入っていることに留意するため、グループ追跡カウンタ値が増加される。ステップ６４で、例外処理プログラム命令の実行が開始される（例えば、例外ベクトルへの分岐）。処理は、次いで、ステップ５０に戻る。
【００４０】
図８は、完了中への移行時におけるグループ状態の制御を示す。物理的割込み信号ｉｒｑまたはソフトウェア割込みｓｗｉなどの例外が最初に検出されると、グループ状態が正常からトリガーに移行される。その後、ステップ６６が、カウンタ値に対する増分がいつ生じるかを判断する（図７のステップ６２を参照）。係る増分が生じるたびに、ステップ６８が、追跡中の例外に関連するグループ内の処理ユニットの総数にカウンタ値がもう達しているか否かを判断する。カウンタ値がこのグループの総数値に達すると、この時点で、グループ内の全ての処理ユニットが例外プログラム命令実行を開始するようにトリガーされ、その結果、少なくとも、その例外処理の完了に向かって進んでいるので、ステップ７０がグループ状態をトリガーから完了中に変更する。
【００４１】
図９は、例外中から例外終了へ移行する処理ユニット状態の制御を示す。ステップ７２は、処理ユニットがいつ例外プログラム命令からの戻りを実行するかを検出する。係るプログラム命令は、プログラムの流れを元のプログラムの流れにリダイレクトするために、例えば、保存された戻りプログラムカウンタ値を現在のプログラムカウンタに復元しようとし得る。ステップ７２で、例外プログラム命令からの戻りが検出されると、ステップ７４が、関連する処理ユニットの処理ユニット状態を例外中から例外終了に変更する。処理ユニットは、例外終了状態にある間、割込みに非応答のままであり、関連するグループを有する全ての処理ユニットが例外終了状態に入るまで、正常状態に戻らない。これは、グループ内の処理ユニットの全てが以前の例外処理を完了するまで、処理ユニットのいずれもさらなる割込みに応答しないので、割込み処理の順序を維持する役に立つ。
【００４２】
図１０は、処理ユニット状態の例外終了から正常への移行の制御を示す。処理ユニットについて、ステップ７６が、例外状態が例外終了であるか否かを判断する。ステップ７８は次いで、グループ状態が完了中であるか否かを判断する。処理ユニット状態が例外終了であり、かつ、グループ状態が完了中である場合、処理は、その処理ユニットに対する処理ユニット状態が例外終了から正常に変更されるステップ８０に進む。ステップ８２は次いで、カウンタ値を減少させる。
【００４３】
図１１は、完了中から正常へ移行するグループ状態の制御を示す。ステップ８４は、カウンタ値の減少がいつ生じたかを検出する（図１０のステップ８２を参照）。係る減少が生じた場合、ステップ８６は、カウンタ値がゼロに達したか否かを判断する。ステップ８６で判断したように、カウンタ値が実際にゼロに達すると、この時点で、グループ内の全ての処理ユニットが、例外終了から正常状態に変更され、その結果、グループが、完了中から正常に変更でき、さらなる例外信号に対してもう一度応答するようになるので、ステップ８８は、グループ状態を完了中から正常に変更する。
【００４４】
本技法は、複数の処理ユニットが、同じクロックサイクル内で状態を変更できるシステム内で使用され得る。この場合、カウンタ値４８を管理するカウンタは、いくつの処理ユニットがそのクロックサイクル内で状態を変更しているかに応じて、任意量で増加または減少され得る。代替実施形態では、カウンタ値４８は、１ビットが各処理ユニットに対応するビットの配列によって表され得る。ビットは、すべてゼロに初期化され得、次いで、対応する処理ユニットが例外中状態に入ると、１に設定される。各処理ユニットが例外終了から正常に移行すると、各処理ユニットはそれに対応するビットをクリアする。全てのビットがクリアされると、グループ状態が正常に移行する。グループ状態が正常からトリガーに移行する場合、これは、各処理ユニットを例外中状態に入るようにトリガーし、従って、対応するビットが設定されるようにする。
【符号の説明】
【００４５】
２  グラフィック処理ユニット
４  グラフィック処理コア
６  グラフィック処理コア
８  グラフィック処理コア
１０  グラフィック処理コア
１２  グラフィック処理コア
１４  グラフィック処理コア
１６  グラフィック処理コア
１８  グラフィック処理コア
２０  例外制御回路
２２  グループ状態ストレージ
２４  プログラムカウンタ
２６  戻りポインタ
２８  処理ユニット例外状態
３０  システムオンチップ対称型マルチプロセッシング
３２  汎用処理コア
３４  汎用処理コア
３６  汎用処理コア
３８  汎用処理コア
４０  スヌープ（ｓｎｏｏｐ）制御ユニット
４２  例外制御回路
４４  グループ例外状態
４８  カウンタ値
ｉｒｑ  物理的割込み信号
ｓｗｉ  ソフトウェア割込み
【図１】
2013540329.tif 000003
【図２】
2013540329.tif 000004
【図３】
2013540329.tif 000005
【図４】
2013540329.tif 000006
【図５】
2013540329.tif 000007
【図６】
2013540329.tif 000008
【図７】
2013540329.tif 000009
【図８】
2013540329.tif 000010
【図９】
2013540329.tif 000011
【図１０】
2013540329.tif 000012
【図１１】
2013540329.tif 000013
【手続補正書】
【提出日】平成24年12月7日(2012.12.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
各処理ユニットが、処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理ユニットと、
複数の前記処理ユニットの複数のグループに対する例外処理を制御し、各グループはそれぞれの処理スレッドを実行し、前記例外処理回路は、前記グループのいずれかの例外トリガーイベントに応答して前記グループによって例外処理を制御するように構成された例外制御回路と
を含み、
前記例外制御回路が、前記例外トリガーイベントに応答して前記グループ内の前記処理ユニットのそれぞれを、順に、プログラム命令の前記ストリームの実行を中断し、例外処理を行うために例外処理プログラム命令のストリームを実行し、さらにプログラム命令の前記ストリームの実行を再開することにより制御するように構成されたデータ処理装置。
【請求項２】
前記グループ内の前記処理ユニットのそれぞれに対する前記例外制御回路が、一連の処理ユニット例外状態の前記例外トリガーイベントに対して、トラバーサルを一度だけ制御する、請求項１に記載のデータ処理装置。
【請求項３】
前記一連の処理ユニット例外状態が、順に、
（ｉ）プログラム命令の前記ストリームの処理に対応する正常状態と、
（ｉｉ）前記例外処理プログラム命令の処理に対応する例外中状態と、
（ｉｉｉ）プログラム命令の前記ストリームの再開された処理に対応する例外終了状態と
である、請求項２に記載のデータ処理装置。
【請求項４】
前記グループ内の前記処理ユニットの全てによって例外処理が完了すると、前記例外制御回路が、前記グループ内の前記処理ユニットの全てを前記例外終了状態から前記正常状態へ移行する、請求項３に記載のデータ処理装置。
【請求項５】
処理ユニットが、前記例外中状態および前記例外終了状態のいずれかにある間、いかなるさらなる例外トリガーイベントにも非応答である、請求項３または請求項４に記載のデータ処理装置。
【請求項６】
前記処理ユニットのそれぞれが、
（ｉ）前記例外処理プログラム命令の実行後に実行が再開されるプログラム命令の前記ストリーム内の点に対応する、戻りプログラムカウンタ値と
（ｉｉ）前記処理ユニットの現在の処理ユニット例外状態と
を示す、関連する処理ユニット状態変数を有する、
請求項３〜５のいずれか１項に記載のデータ処理装置。
【請求項７】
前記処理ユニット状態変数が、それぞれの処理ユニット内に格納される、請求項６に記載のデータ処理装置。
【請求項８】
前記グループに対する前記例外制御回路が、一連のグループ例外状態の前記例外トリガーイベントに対してトラバーサルを制御する、請求項１から７のいずれか１項に記載のデータ処理装置。
【請求項９】
一連の前記グループ例外状態が、順に、
（ｉ）前記グループ内の前記処理ユニットの全てによるプログラム命令のそれぞれのストリームの処理に対応する正常状態と、
（ｉｉ）例外トリガーイベントが生じているが、前記グループ内の前記処理ユニットの全てがまだ例外処理を開始していない状態に対応するトリガー状態と、
（ｉｉｉ）前記グループ内の前記処理ユニットの全てによる例外処理が完了しているが、前記処理ユニットの全てがまだプログラム命令の前記ストリームの処理を再開していない状態に対応する完了中状態と
である、請求項８に記載のデータ処理装置。
【請求項１０】
前記グループ内の前記処理ユニットの全てがプログラム命令の前記ストリームの処理を再開しているとき、前記例外制御回路が、前記グループを完了中状態から前記正常状態に移行する、請求項９に記載のデータ処理装置。
【請求項１１】
前記グループが、前記トリガー状態および前記完了中状態のいずれかにある場合は、いかなるさらなる例外トリガーイベントにも非応答である、請求項９または請求項１０に記載のデータ処理装置。
【請求項１２】
前記グループが、
（ｉ）前記グループの現在のグループ例外状態と、
（ｉｉ）前記グループ内の処理ユニットの総数と、
（ｉｉｉ）前記例外処理を開始しているが、完了していない、処理ユニットの数を示すカウンタ値と
を示す、関連するグループ状態変数を有する、
請求項９〜１１のいずれか１項に記載のデータ処理装置。
【請求項１３】
前記グループ状態変数が、前記例外制御回路内に格納される、請求項１２に記載のデータ処理装置。
【請求項１４】
前記グループ内の各処理ユニットが、プログラム命令の前記ストリーム内のプログラム命令をスケジューリングすると、前記処理ユニットが、前記処理ユニット状態が正常状態かつ前記グループ状態がトリガー状態であるか否かを判断し、そうであれば、前記処理ユニット状態を例外中状態に変更し、前記処理ユニットに対する現在のプログラムカウンタ値を保存し、前記例外処理を開始し、そして、前記カウンタ値を増加させる、請求項３〜７、請求項１２、または請求項１３のいずれか１項に記載のデータ処理装置。
【請求項１５】
前記カウンタ値が増加すると、前記カウンタ値が前記総数と比較され、等しければ、前記グループ状態が完了中に変更される、請求項１４に記載のデータ処理装置。
【請求項１６】
処理ユニットの前記処理ユニット状態が例外中であり、かつ前記処理ユニットが例外プログラム命令からの戻りを実行すると、前記処理ユニット状態が例外終了に変更される、請求項３〜７のいずれか１項に記載のデータ処理装置。
【請求項１７】
処理ユニット状態が例外終了であり、かつ前記グループ状態が完了中の場合、前記処理ユニット状態が正常に変更され、前記カウンタ値が減少する、請求項３〜７、請求項１２、または請求項１３のいずれか１項に記載のデータ処理装置。
【請求項１８】
前記カウンタ値が減少すると、前記カウンタ値がゼロと比較され、等しければ、前記グループ状態が正常状態に変更される、請求項１７に記載のデータ処理装置。
【請求項１９】
プログラム命令を実行するための複数の処理手段であって、各処理手段が、処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理手段と、
複数の前記処理手段の複数のグループに対する例外制御手段であって、各グループはそれぞれの処理スレッドを実行し、前記例外制御手段は、前記グループのいずれかの例外トリガーイベントに応答して前記グループによって例外処理を制御するための例外制御手段を有し、
前記例外制御手段は、前記例外トリガーイベントに応答して前記グループ内の前記処理手段のそれぞれを、順に、プログラム命令の前記ストリームの実行を中断し、例外処理を行うために例外処理プログラム命令のストリームを実行し、さらにプログラム命令の前記ストリームの実行を再開することにより制御するように構成される例外制御手段と
を含むデータ処理装置。
【請求項２０】
各処理ユニットが処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理ユニットでプログラム命令を実行するステップと、
複数の前記処理ユニットの複数のグループの例外処理を制御し、各グループは前記グループのいずれかに対する例外を制御する例外トリガーイベントに応答して、それぞれの処理スレッドを実行し、それにより前記グループによって前記例外トリガーイベントに対応した処理を行うステップと、
前記グループ内の前記処理ユニットのそれぞれが前記例外トリガーイベントに応答して、順に、プログラム命令の前記ストリームの実行を中断し、例外処理を行うために例外処理プログラム命令のストリームを実行し、さらにプログラム命令の前記ストリームの実行を再開するステップと
を含むデータ処理方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
一態様から見ると、本発明は、
各処理ユニットが、処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理ユニットと、
複数の前記処理ユニットの複数のグループに対する例外処理を制御し、各グループはそれぞれの処理スレッドを実行し、前記例外処理回路は、前記グループのいずれかの例外トリガーイベントに応答して前記グループによって例外処理を制御するように構成された例外制御回路と
を含み、
前記例外制御回路が、前記例外トリガーイベントに応答して前記グループ内の前記処理ユニットのそれぞれを、順に、プログラム命令の前記ストリームの実行を中断し、例外処理を行うために例外処理プログラム命令のストリームを実行し、さらにプログラム命令の前記ストリームの実行を再開することにより制御するように構成されたデータ処理装置を提供する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】変更
【補正の内容】
【００２４】
別の態様から見ると、本発明は、
各処理手段が、処理スレッドに対応するプログラム命令のストリームを実行する、プログラム命令を実行するための複数の処理手段と、
前記複数の処理手段の複数のグループに対する例外制御手段であって、各グループはそれぞれの処理スレッドを実行し、前記例外制御手段は、前記グループのいずれかの例外トリガーイベントに応答して前記グループによって例外処理を制御するための例外制御手段を有し、
前記例外制御手段が、前記例外トリガーイベントに応答して前記グループ内の前記処理手段のそれぞれを、順に、プログラム命令の前記ストリームの実行を中断し、例外処理を行うために例外処理プログラム命令のストリームを実行し、さらにプログラム命令の前記ストリームの実行を再開することにより制御するように構成される例外制御手段
を含む、データ処理ユニットを提供する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２５
【補正方法】変更
【補正の内容】
【００２５】
さらなる態様から見ると、本発明は、
各処理ユニットが処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理ユニットでプログラム命令を実行するステップと、
複数の前記処理ユニットの複数のグループの例外処理を制御し、各グループは前記グループのいずれかに対する例外を制御する例外トリガーイベントに応答して、それぞれの処理スレッドを実行し、それにより前記グループによって前記例外トリガーイベントに対応した処理を行うステップと、
前記グループ内の前記処理ユニットのそれぞれが前記例外トリガーイベントに応答して、順に、プログラム命令の前記ストリームの実行を中断し、例外処理を行うために例外処理プログラム命令のストリームを実行し、さらにプログラム命令の前記ストリームの実行を再開するステップと
を含むデータ処理の方法を提供する。
【国際調査報告】
2013540329.tif 000014
2013540329.tif 000015