各処理ユニットが、処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理ユニットと、複数の前記処理ユニットのグループに対する例外トリガーイベントに応答して、それぞれの処理スレッドを実行する前記グループの例外処理を制御するように構成された例外制御回路とを含むデータ処理装置。前記例外制御回路が、前記例外トリガーイベントに応答して前記グループ内の前記処理ユニットのそれぞれを、順に、プログラム命令の前記ストリームの実行を中断し、例外処理プログラム命令のストリームを実行し、さらにプログラム命令の前記ストリームの実行を再開することにより制御するように構成された、請求項1に記載のデータ処理装置。前記グループ内の前記処理ユニットのそれぞれに対する前記例外制御回路が、一連の処理ユニット例外状態の前記例外トリガーイベントに対して、トラバーサルを一度だけ制御する、請求項2に記載のデータ処理装置。前記一連の処理ユニット例外状態が、順に、iプログラム命令の前記ストリームの処理に対応する正常状態と、ii前記例外処理プログラム命令の処理に対応する例外中状態と、iiiプログラム命令の前記ストリームの再開された処理に対応する例外終了状態とである、請求項3に記載のデータ処理装置。前記グループ内の前記処理ユニットの全てによって例外処理が完了すると、前記例外制御回路が、前記グループ内の前記処理ユニットの全てを前記例外終了状態から前記正常状態へ移行する、請求項4に記載のデータ処理装置。処理ユニットが、前記例外中状態および前記例外終了状態のいずれかにある間、いかなるさらなる例外トリガーイベントにも非応答である、請求項4または請求項5に記載のデータ処理装置。前記処理ユニットのそれぞれが、i前記例外処理プログラム命令の実行後に実行が再開されるプログラム命令の前記ストリーム内の点に対応する、戻りプログラムカウンタ値とii前記処理ユニットの現在の処理ユニット例外状態とを示す、関連する処理ユニット状態変数を有する、請求項4~6のいずれか1項に記載のデータ処理装置。前記処理ユニット状態変数が、それぞれの処理ユニット内に格納される、請求項7に記載のデータ処理装置。前記グループに対する前記例外制御回路が、一連のグループ例外状態の前記例外トリガーイベントに対してトラバーサルを制御する、請求項1から8のいずれか1項に記載のデータ処理装置。一連の前記グループ例外状態が、順に、i前記グループ内の前記処理ユニットの全てによるプログラム命令のそれぞれのストリームの処理に対応する正常状態と、ii例外トリガーイベントが生じているが、前記グループ内の前記処理ユニットの全てがまだ例外処理を開始していない状態に対応するトリガー状態と、iii前記グループ内の前記処理ユニットの全てによる例外処理が完了しているが、前記処理ユニットの全てがまだプログラム命令の前記ストリームの処理を再開していない状態に対応する完了中状態とである、請求項9に記載のデータ処理装置。前記グループ内の前記処理ユニットの全てがプログラム命令の前記ストリームの処理を再開しているとき、前記例外制御回路が、前記グループを完了中状態から前記正常状態に移行する、請求項10に記載のデータ処理装置。前記グループが、前記トリガー状態および前記完了中状態のいずれかにある場合は、いかなるさらなる例外トリガーイベントにも非応答である、請求項10または請求項11に記載のデータ処理装置。前記グループが、i前記グループの現在のグループ例外状態と、ii前記グループ内の処理ユニットの総数と、iii前記例外処理を開始しているが、完了していない、処理ユニットの数を示すカウンタ値とを示す、関連するグループ状態変数を有する、請求項10~12のいずれか1項に記載のデータ処理装置。前記グループ状態変数が、前記例外制御回路内に格納される、請求項13に記載のデータ処理装置。前記グループ内の各処理ユニットが、プログラム命令の前記ストリーム内のプログラム命令をスケジューリングすると、前記処理ユニットが、前記処理ユニット状態が正常状態かつ前記グループ状態がトリガー状態であるか否かを判断し、そうであれば、前記処理ユニット状態を例外中状態に変更し、前記処理ユニットに対する現在のプログラムカウンタ値を保存し、前記例外処理を開始し、そして、前記カウンタ値を増加させる、請求項4~8、請求項13、または請求項14のいずれか1項に記載のデータ処理装置。前記カウンタ値が増加すると、前記カウンタ値が前記総数と比較され、等しければ、前記グループ状態が完了中に変更される、請求項15に記載のデータ処理装置。処理ユニットの前記処理ユニット状態が例外中であり、かつ前記処理ユニットが例外プログラム命令からの戻りを実行すると、前記処理ユニット状態が例外終了に変更される、請求項4~8のいずれか1項に記載のデータ処理装置。処理ユニット状態が例外終了であり、かつ前記グループ状態が完了中の場合、前記処理ユニット状態が正常に変更され、前記カウンタ値が減少する、請求項4~8、請求項13、または請求項14のいずれか1項に記載のデータ処理装置。前記カウンタ値が減少すると、前記カウンタ値がゼロと比較され、等しければ、前記グループ状態が正常状態に変更される、請求項18に記載のデータ処理装置。プログラム命令を実行するための複数の処理手段であって、各処理手段が、処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理手段と、複数の前記処理手段のグループに対する例外トリガーイベントに応答して、それぞれの処理スレッドを実行する前記グループの例外処理を制御するための例外制御手段とを含むデータ処理装置。各処理ユニットが処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理ユニットでプログラム命令を実行するステップと、複数の前記処理ユニットのグループに対する例外トリガーイベントに応答して、それぞれの処理スレッドを実行する前記グループの例外処理を制御するステップとを含むデータ処理方法。一態様から見ると、本発明は、各処理ユニットが、処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理ユニットと、複数の前記処理ユニットのグループに対する例外トリガーイベントに応答して、それぞれの処理スレッドを実行する複数の前記処理ユニットのグループの例外処理を制御するように構成された例外制御回路とを含むデータ処理装置を提供する。本技法は、それぞれが、処理スレッドに応じてプログラム命令のストリームを実行する、複数の処理ユニットを意味するシステムのコンテキスト内で、個々の処理ユニットの割込み動作を結合する必要があることを認識する。本技法は、処理ユニットのグループに対する例外トリガーイベントに応答して、処理ユニットをグループベースで制御する例外制御回路を提供する。従って、例外は、処理ユニットのグループに結合され得、例外条件の発生例えば、物理的信号またはソフトウェア生成割込みは、そのグループのそれぞれの処理ユニット内の例外処理をトリガーする結果になる。グループの各メンバー内の例外制御回路によってトリガーされる例外処理は、プログラム命令の現在のストリームの実行の中断、例外処理プログラム命令のストリームの実行、次いで、元のプログラム命令の実行の同じ点または異なる点での再開である。それ故、例外処理は、例外処理プログラム命令の実行後に元の処理が再開されるので、プロセッサのリセットとは区別される。グループ内の処理ユニットのそれぞれが、例外イベントがトリガーするときに異なる状態を有し得、例外処理中に異なって応答し得ることが理解されるであろう。この理由のため、例外制御回路は、処理ユニットのそれぞれによる例外処理を追跡する必要がある。これは、一連の処理ユニット例外状態の例外トリガーイベントに対して一度だけ、処理ユニットのそれぞれによりトラバーサルtraversalを制御することによって達成される。個々の処理ユニットは、従って、個別にではあるが、統一および協調的な方法で管理され得る。一連の処理ユニット例外状態は、順に、プログラム命令のストリームの処理に対応する正常状態、例外処理プログラム命令の処理に対応する例外中in-exception状態、およびプログラム命令の元のストリームの再開された処理に対応する例外終了done-exception状態を含み得る。他の実施形態は、例えば、正常、例外中、キャッシュクリーニング、および完了中など、4つ以上の状態を有し得る。グループの処理ユニットは、処理ユニットの全てが、処理ユニットが正常状態に戻るという、それらの例外処理を完了するまで、それらの個々の例外処理が完了すると、例外終了状態で止まる。処理ユニットは、例外中状態および例外終了状態のいずれかの間は、いかなるさらなる例外トリガーイベントにも応答しないようにされ得る。これは、そのグループに対する入れ子になった例外の複雑さを防ぐ。異なる処理ユニットの制御を便利な方法で容易にするために、処理ユニットのそれぞれは、例外処理プログラム命令の実行後に実行を再開する、プログラム命令の元のストリーム内の点これは、同じ点または異なる点であり得るに対応する戻りプログラムカウンタ値を示す関連する処理ユニット状態変数、および処理ユニットが現在、正常、例外中、および例外終了状態のいずれを有するかを示す現在の処理ユニット例外状態を有する。これらの処理ユニット状態変数は、設計のスケーリングを容易にするため、それぞれの処理ユニット内に便宜的に格納され得るが、代替として、例外制御回路内などのように、中央に格納され得る。一連のグループ例外状態の例外トリガーイベントについては、グループに対して例外制御回路がトラバーサルを制御する実施形態では、グループの例外処理の制御がさらに容易にされる。これらのグループ例外状態は、グループ内の全ての処理ユニットによるプログラム命令のそれぞれのストリームの処理に対応する正常状態例えば、その正常スレッドを実行する各処理ユニット、例外トリガーイベントが生じているが、グループ内の全ての処理ユニットがその例外トリガーイベントに応答して例外処理をまだ開始していないトリガー状態、およびグループ内の全ての処理ユニットによる例外処理が完了しているが、処理ユニットの全てがまだそれらのプログラム命令の元のストリームの処理を再開していない完了中状態であり得る。例外制御回路は、グループ内の全ての処理ユニットがプログラム命令のそれらの元のストリームの処理を再開すると、そのグループを完了状態から正常状態に移行し得る。従って、全ての処理ユニットが、例外処理プログラム命令の実行後に処理を再開している、それらの正常状態に戻るまで、グループは完了中段階に保持される。グループ内の処理ユニットは、トリガー状態または完了中状態のいずれかの間は、いかなるさらなる例外トリガーイベントにも非応答であり得る。これは、係る実施形態内の入れ子になった例外を防ぐ。処理ユニットのグループの制御は、現在のグループ例外状態、ソフトウェア制御によってなど、動的に構成され得るグループ内の処理ユニットの総数、および、例外処理が開始されているが、まだ完了していない処理ユニットを示すカウンタ数を示すグループ状態変数の格納によって容易にされ得る。これらのグループ状態変数は、例外制御回路内に便宜的に格納され得る。各処理ユニットが、実行するプログラム命令のスケジューリングをしようとする、少なくともいくつかの実施形態では、処理ユニットは、現在の処理ユニット状態が正常か、また、グループ状態がトリガーであるか否かを判断する。そうであれば、処理ユニットは正常状態から例外中状態に変わり、処理ユニットに対する現在のプログラムカウンタ値を戻りアドレスとして使用するために保存し、例外中状態にある処理ユニットの数を示すカウンタ値を増加させるとともに、例外処理を開始する。カウンタ値が増加されると、これが、グループ内の処理ユニットの総数と比較され得る。カウンタ値がグループ内の総数に達すると、この時点で、処理ユニットの全てが例外処理に入るようにトリガーされているが、まだ全てがこの例外処理を完了していないので、グループ状態がトリガーから、完了中に変更される。各プロセッサが例外プログラム命令からの戻りを実行すると、その処理ユニットに対する処理状態が例外終了に変更され得る。処理ユニットがその状態を例外終了として有し、グループ状態が完了中である場合、処理ユニット状態は、正常に変更され得、カウンタ値が減少され得る。カウンタ値が減少されると、これがゼロの値と比較され、等しければ、グループ状態が正常に変更される。従って、カウンタ値は、各処理ユニットがその例外処理を開始するようにトリガーされると、グループ内の総数まで増加され得、次いで、各処理ユニットが、全ての処理ユニット内の例外処理のトリガー後に、その例外処理が完了しているとして検出されると、ゼロに戻るまで減少され得ることが分かるであろう。別の態様から見ると、本発明は、各処理手段が、処理スレッドに対応するプログラム命令のストリームを実行する、プログラム命令を実行するための複数の処理手段と、複数の前記処理手段のグループに対する例外トリガーイベントに応答して、それぞれの処理スレッドを実行する前記複数の処理手段の前記グループの例外処理を制御するための例外制御手段とを含む、データ処理ユニットを提供する。さらなる態様から見ると、本発明は、各処理ユニットが処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理ユニットでプログラム命令を実行するステップと、複数の前記処理ユニットのグループに対する例外トリガーイベントに応答して、それぞれの処理スレッドを実行する前記複数の処理ユニットの前記グループの例外処理を制御するステップとを含むデータ処理の方法を提供する。ここで、本発明の実施形態が、ほんの一例として、添付の図を参照して説明される。図1は、この例では、8つのグラフィック処理コア4、6、8、10、12、14、16、18を包含する、グラフィック処理ユニット2を概略的に示す。これらのグラフィック処理コア4~18は、それぞれが処理スレッドに対応するプログラム命令のそれぞれのストリームを実行する。スレッドは、高度に関連し得、実際には、プログラム命令は同一であり得る。例えば、異なる処理スレッドが、処理中の画像全体内の異なる領域に関して実行されている同じ処理命令に対応し得る。処理の作業負荷を分割し、全体的な処理スループットをさらに高めるために、並行して実行している多数のグラフィック処理コア4~18を有することはグラフィック処理ユニット内では標準的である。グラフィック処理ユニット2は通常、多数のさらなる回路素子を含むが、これらは、明確にするために、図1から省略されていることが理解されるであろう。同様にグラフィック処理ユニット2内に含まれているのは、グラフィック処理コア4~18のそれぞれに結合されている例外制御回路20である。例外制御回路20は、割込み信号に応答し、それは、外部割込み信号irqまたは、ソフトウェア割込みswiなどの、内部で生成された割込み信号であり得る。例外制御回路20は、その例外トリガーイベントに結合されている処理ユニットグラフィック処理コアの関連するグループ内の例外処理をトリガーするため、係る例外トリガー信号irq、swiに応答する。処理ユニットのグループは、どの処理スレッドが割り当てられ、グラフィック処理コア4~18上で処理を開始しているかに応じて構成されるか、かつ/または動的に構成されるソフトウェアであり得る。一例として、処理ユニット4、8、10および18は全て、特定の陰影付け操作を、処理中の画像内の異なる領域について実行する同じプログラム命令を実行する。ソフトウェア割込みswiなどの割込みは、次いで、グループ内の処理ユニット4、8、10、18のそれぞれによる処理を迂回する意図で生じ、それらのグラフィック処理コア4、8、10、18のそれぞれが実行していた元の処理スレッドを再開する前に、例外処理プログラム命令を実行する。例外制御回路20は、どのグラフィック処理コア4~18がどのグループ内にあるか、およびそれらのグループのグループ状態を追跡するグループ状態変数を格納するためのグループ状態ストレージ22を含む。図2は、個別の処理ユニット4を示し、現在のプログラムカウンタ24、戻りポインタ26例外処理の終わりに、例外処理プログラム命令からの戻りの実行時に実行される命令の命令アドレスを示す、および処理ユニット例外状態28処理ユニット4の現在の例外状態を示すを含む、さらなる状態変数のためのストレージを含むとしてこれを示す。図3は、別の実施形態例を示す。この実施形態は、スヌープsnoop制御ユニット40を介して接続され、それらのプログラム命令のそれぞれの個々のストリームに応答してそれぞれの処理スレッドを実行する、複数の汎用処理コア32、34、36、38を含む、システムオンチップ対称型マルチプロセッシング30から成る。これらの汎用処理コア32、34、36、38のそれぞれは、同様に、現在のプログラムカウンタ値、戻り命令アドレス、および処理ユニット例外状態変数を格納する。異なる汎用処理コア32~38は、生じる割込みトリガーイベントirq、swiが、グループの処理ユニットコア32~38のそれぞれの中の例外処理をトリガーするような方法で結合されたグループに形成され得る。処理ユニットコア32~38のそれぞれに結合された例外制御回路42は、例外処理を関係する処理ユニットのグループによって制御するために、例外トリガー信号に応答する。図4は、図1のグラフィック処理コア4~18および図3の汎用処理コア32~38と個々に関連する処理ユニットの例外状態を概略的に示す。個々の処理ユニットによって、図示するような順で、かつ、各割込み信号に関して一度だけ、トラバースされるこれらの状態は、正常状態、例外中状態、および例外終了状態である。処理ユニットの例外状態は、グループ状態が完了中のとき、例外終了状態から正常状態に戻る。例外中状態または例外終了状態のいずれかの場合、処理ユニットはいかなるさらなる割込みにも応答しないであろう。例外制御回路42および個々の処理ユニット内の回路この回路の分散は、異なる実施形態内で異なり得るがは、例外処理イベントの発生に応答した、図4に示す状態間での処理ユニット例外状態の移行の追跡および制御に関与する。図5は、処理ユニットのグループに対するグループの例外状態を示す。これらの状態は、正常状態、トリガー状態、および完了中状態を含む。グループの例外状態は、全ての処理ユニットが増加するカウンタを使用して追跡し得るようにそれらの例外処理を開始している場合、トリガーから完了中に移行する。グループ状態は、減少するカウンタによって追跡され得るように、全ての処理ユニットが、それらの正常状態に戻っている場合、完了中から正常に移行する。グループがトリガー状態または完了中状態のいずれかである場合、そのグループ内のどの処理ユニットおよびグループ自体も、さらなる割込みに応答しないであろう。図6は、例外制御回路20、42内に格納され得、例外処理を処理ユニットのグループによって制御するために使用され得るグループ状態変数を概略的に示す。これらの状態変数は、現在のグループ例外状態44、グループ内の処理ユニットの総数46、およびそれらの例外処理を開始しているが、まだ完了していない処理ユニットの数を示すカウンタ値48関連する増加カウンタおよび減少カウンタと共にを含む。図7~図11は、例外制御回路20、42ならびに個々の処理ユニット4~18および32~38内の回路によって実行されると以前に参照された例外処理ユニット状態およびグループ状態の制御を示す流れ図である。図7~図11に示す制御を実行する回路は、形状においてかなり変化することができ、物理的実装の異なる部分間で異なる方法で提供され得ることが理解されるであろう。これらの変形形態の全てが、本技法に包含される。図7は、プログラム命令のスケジューリングを指示する処理ユニットを示す。ステップ50で、処理は、スケジューリングされる次のプログラム命令が利用可能になるまで待機する例えば、以前の命令が完了している。ステップ52は、次いで、処理ユニットがその正常状態にあるか否かを判断する。処理ユニットがその正常状態にない場合、次のプログラム命令が、ステップ54での処理のためにスケジューリングされ、処理がステップ50に戻る。処理ユニットが、ステップ52で判断したように、正常状態にある場合、ステップ56は、グループ状態が現在トリガーであるか否かを判断する。ステップ52およびステップ56で判断したように、処理ユニット状態が正常で、グループ状態がトリガーである場合、処理ユニットはその例外処理を開始すべきであることが理解される。そうでない場合、処理は再度、ステップ54に進み、次のプログラム命令がスケジューリングされる。ステップ56で、グループ状態がトリガーであると判断された場合、ステップ58は、処理ユニット状態を例外中に変更する。ステップ60は、例外処理ルーチンが実行された後、例外処理からの戻りを行うことができるように、現在のプログラムカウンタPC値を、戻りプログラムカウンタRPCアドレスに保存する。いくつかの実施形態では、戻りは、異なる点に対しても行われ得ることが理解されよう。ステップ62で、別の処理ユニットが例外中状態に入っていることに留意するため、グループ追跡カウンタ値が増加される。ステップ64で、例外処理プログラム命令の実行が開始される例えば、例外ベクトルへの分岐。処理は、次いで、ステップ50に戻る。図8は、完了中への移行時におけるグループ状態の制御を示す。物理的割込み信号irqまたはソフトウェア割込みswiなどの例外が最初に検出されると、グループ状態が正常からトリガーに移行される。その後、ステップ66が、カウンタ値に対する増分がいつ生じるかを判断する図7のステップ62を参照。係る増分が生じるたびに、ステップ68が、追跡中の例外に関連するグループ内の処理ユニットの総数にカウンタ値がもう達しているか否かを判断する。カウンタ値がこのグループの総数値に達すると、この時点で、グループ内の全ての処理ユニットが例外プログラム命令実行を開始するようにトリガーされ、その結果、少なくとも、その例外処理の完了に向かって進んでいるので、ステップ70がグループ状態をトリガーから完了中に変更する。図9は、例外中から例外終了へ移行する処理ユニット状態の制御を示す。ステップ72は、処理ユニットがいつ例外プログラム命令からの戻りを実行するかを検出する。係るプログラム命令は、プログラムの流れを元のプログラムの流れにリダイレクトするために、例えば、保存された戻りプログラムカウンタ値を現在のプログラムカウンタに復元しようとし得る。ステップ72で、例外プログラム命令からの戻りが検出されると、ステップ74が、関連する処理ユニットの処理ユニット状態を例外中から例外終了に変更する。処理ユニットは、例外終了状態にある間、割込みに非応答のままであり、関連するグループを有する全ての処理ユニットが例外終了状態に入るまで、正常状態に戻らない。これは、グループ内の処理ユニットの全てが以前の例外処理を完了するまで、処理ユニットのいずれもさらなる割込みに応答しないので、割込み処理の順序を維持する役に立つ。図10は、処理ユニット状態の例外終了から正常への移行の制御を示す。処理ユニットについて、ステップ76が、例外状態が例外終了であるか否かを判断する。ステップ78は次いで、グループ状態が完了中であるか否かを判断する。処理ユニット状態が例外終了であり、かつ、グループ状態が完了中である場合、処理は、その処理ユニットに対する処理ユニット状態が例外終了から正常に変更されるステップ80に進む。ステップ82は次いで、カウンタ値を減少させる。図11は、完了中から正常へ移行するグループ状態の制御を示す。ステップ84は、カウンタ値の減少がいつ生じたかを検出する図10のステップ82を参照。係る減少が生じた場合、ステップ86は、カウンタ値がゼロに達したか否かを判断する。ステップ86で判断したように、カウンタ値が実際にゼロに達すると、この時点で、グループ内の全ての処理ユニットが、例外終了から正常状態に変更され、その結果、グループが、完了中から正常に変更でき、さらなる例外信号に対してもう一度応答するようになるので、ステップ88は、グループ状態を完了中から正常に変更する。本技法は、複数の処理ユニットが、同じクロックサイクル内で状態を変更できるシステム内で使用され得る。この場合、カウンタ値48を管理するカウンタは、いくつの処理ユニットがそのクロックサイクル内で状態を変更しているかに応じて、任意量で増加または減少され得る。代替実施形態では、カウンタ値48は、1ビットが各処理ユニットに対応するビットの配列によって表され得る。ビットは、すべてゼロに初期化され得、次いで、対応する処理ユニットが例外中状態に入ると、1に設定される。各処理ユニットが例外終了から正常に移行すると、各処理ユニットはそれに対応するビットをクリアする。全てのビットがクリアされると、グループ状態が正常に移行する。グループ状態が正常からトリガーに移行する場合、これは、各処理ユニットを例外中状態に入るようにトリガーし、従って、対応するビットが設定されるようにする。