JP5738999B2 - マルチプロセッサシステムにおける例外制御 - Google Patents

マルチプロセッサシステムにおける例外制御 Download PDF

Info

Publication number
JP5738999B2
JP5738999B2 JP2013534378A JP2013534378A JP5738999B2 JP 5738999 B2 JP5738999 B2 JP 5738999B2 JP 2013534378 A JP2013534378 A JP 2013534378A JP 2013534378 A JP2013534378 A JP 2013534378A JP 5738999 B2 JP5738999 B2 JP 5738999B2
Authority
JP
Japan
Prior art keywords
exception
processing
group
state
stream
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013534378A
Other languages
English (en)
Other versions
JP2013540329A (ja
Inventor
サイモン・ジョーンズ
ジョー・ドミニク・マイケル・タプリー
Original Assignee
アーム・リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2013540329A publication Critical patent/JP2013540329A/ja
Application granted granted Critical
Publication of JP5738999B2 publication Critical patent/JP5738999B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、データ処理システムの分野に関する。より詳細には、本発明は、データ処理システム内の例外処理の制御に関する。
それぞれが、処理スレッドに対応するプログラム命令のストリームを実行する複数の処理ユニットを含むデータ処理システムを提供することが知られている。係るシステムの例は、それぞれが、グラフィック処理ユニットによって実行されている処理全体の異なる部分を実行するプログラム命令のストリームを実行する、多数のグラフィック処理コアをたいてい含む、グラフィック処理ユニットである。一例は、タイルベースのグラフィック処理が実行され、各グラフィック処理コアが、陰影付け操作などの操作を、画像全体内の異なるタイルに関して実行する場合である。複数の処理ユニットを含むシステムの別の例は、汎用処理に対して徐々に増えつつあるような、対称型マルチプロセッシングシステムである。係るシステム内では、処理の異なる部分が、異なる処理ユニット上で実行され得ることが知られており、例えば、1つのプロセッサコアが数値結果の計算専用であり得、別のプロセッサコアが、それらの数値結果を表示するためのグラフィカルデータの生成専用であり得る。
データ処理の分野では、プロセッサが割込み信号の影響を受け得ることも知られており、それは、実行中の現在の処理を中断して、プログラムの流れを例外処理コードの実行にリダイレクトする働きをする。係る割込みは、物理イベントを処理するためのリアルタイム処理システム内で頻繁に見られる。マルチタスクシステム内でスケジュールを制御するために割込みを使用することも可能である。
一態様から見ると、本発明は、
各処理ユニットが、処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理ユニットと、
複数の前記処理ユニットの複数のグループに対する例外処理を制御し、各グループはそれぞれの処理スレッドを実行し、前記例外処理回路は、前記グループのいずれかの例外トリガーイベントに応答して前記グループによって例外処理を制御するように構成された例外制御回路と
を含み、
前記例外制御回路が、前記例外トリガーイベントに応答して前記グループ内の前記処理ユニットのそれぞれを、順に、プログラム命令の前記ストリームの実行を中断し、例外処理を行うために例外処理プログラム命令のストリームを実行し、さらにプログラム命令の前記ストリームの実行を再開することにより制御するように構成されたデータ処理装置を提供する。
本技法は、それぞれが、処理スレッドに応じてプログラム命令のストリームを実行する、複数の処理ユニットを意味するシステムのコンテキスト内で、個々の処理ユニットの割込み動作を結合する必要があることを認識する。本技法は、処理ユニットのグループに対する例外トリガーイベントに応答して、処理ユニットをグループベースで制御する例外制御回路を提供する。従って、例外は、処理ユニットのグループに結合され得、例外条件の発生(例えば、物理的信号またはソフトウェア生成割込み)は、そのグループのそれぞれの処理ユニット内の例外処理をトリガーする結果になる。
グループの各メンバー内の例外制御回路によってトリガーされる例外処理は、プログラム命令の現在のストリームの実行の中断、例外処理プログラム命令のストリームの実行、次いで、元のプログラム命令の実行の(同じ点または異なる点での)再開である。それ故、例外処理は、例外処理プログラム命令の実行後に元の処理が再開されるので、プロセッサのリセットとは区別される。
グループ内の処理ユニットのそれぞれが、例外イベントがトリガーするときに異なる状態を有し得、例外処理中に異なって応答し得ることが理解されるであろう。この理由のため、例外制御回路は、処理ユニットのそれぞれによる例外処理を追跡する必要がある。これは、一連の処理ユニット例外状態の例外トリガーイベントに対して一度だけ、処理ユニットのそれぞれによりトラバーサル(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に設定される。各処理ユニットが例外終了から正常に移行すると、各処理ユニットはそれに対応するビットをクリアする。全てのビットがクリアされると、グループ状態が正常に移行する。グループ状態が正常からトリガーに移行する場合、これは、各処理ユニットを例外中状態に入るようにトリガーし、従って、対応するビットが設定されるようにする。
2 グラフィック処理ユニット
4 グラフィック処理コア
6 グラフィック処理コア
8 グラフィック処理コア
10 グラフィック処理コア
12 グラフィック処理コア
14 グラフィック処理コア
16 グラフィック処理コア
18 グラフィック処理コア
20 例外制御回路
22 グループ状態ストレージ
24 プログラムカウンタ
26 戻りポインタ
28 処理ユニット例外状態
30 システムオンチップ対称型マルチプロセッシング
32 汎用処理コア
34 汎用処理コア
36 汎用処理コア
38 汎用処理コア
40 スヌープ(snoop)制御ユニット
42 例外制御回路
44 グループ例外状態
48 カウンタ値
irq 物理的割込み信号
swi ソフトウェア割込み

Claims (13)

  1. 各処理ユニットが、処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理ユニットと、
    例外制御回路であって、前記例外制御回路は、複数の前記処理ユニットの複数のグループにおける例外処理を制御し、各グループはそれぞれの処理スレッドを実行し、前記例外制御回路は、いずれかの前記グループのための例外トリガーイベントに応答して前記グループによる例外処理を制御するように構成された例外制御回路と
    を含み、
    前記例外制御回路が、前記例外トリガーイベントに応答して前記グループ内の前記処理ユニットのそれぞれ、順に、プログラム命令の前記ストリームの実行を中断し、例外処理を行うために例外処理プログラム命令のストリームを実行し、さらにプログラム命令の前記ストリームの実行を再開するように、制御するものであり、
    前記例外制御回路が、前記グループ内の前記処理ユニットのそれぞれのために、前記例外トリガーイベントに対して、一連の処理ユニット例外状態のトラバーサルを一度だけ制御し、
    前記一連の処理ユニット例外状態が、順に、
    (i)プログラム命令の前記ストリームの処理に対応する正常状態と、
    (ii)前記例外処理プログラム命令の処理に対応する例外中状態と、
    (iii)プログラム命令の前記ストリームの再開された処理に対応する例外終了状態とであり、
    前記例外制御回路が、前記グループのために、前記例外トリガーイベントに対して一連のグループ例外状態のトラバーサルを制御し、
    前記一連のグループ例外状態が、順に、
    (i)前記グループ内の前記処理ユニットの全てによるプログラム命令のそれぞれのストリームの処理に対応する正常状態と、
    (ii)例外トリガーイベントが生じているが、前記グループ内の前記処理ユニットのうちのいずれかがまだ例外処理を開始していない状態に対応するトリガー状態と、
    (iii)前記グループ内の前記処理ユニットの全てが例外処理を開始したが、前記グループ内の前記処理ユニットのうちのいずれかがまだ前記プログラム命令の前記ストリームの処理を再開していない状態に対応する完了中状態と
    であり、
    前記グループが、
    (i)前記グループの現在のグループ例外状態と、
    (ii)前記グループ内の処理ユニットの総数と、
    (iii)前記例外処理を開始しているが、完了していない、処理ユニットの数を示すカウンタ値と
    を示す、関連するグループ状態変数を有し、
    処理ユニット例外状態が例外終了状態であり、かつ前記グループ例外状態が完了中状態の場合、前記処理ユニット例外状態が正常状態に変更され、前記カウンタ値が減少する、データ処理装置。
  2. 処理ユニットが、前記例外中状態および前記例外終了状態のいずれかにある間、いかなるさらなる例外トリガーイベントにも非応答である、請求項に記載のデータ処理装置。
  3. 前記処理ユニットのそれぞれが、
    (i)前記例外処理プログラム命令の実行後に実行が再開されるプログラム命令の前記ストリーム内の点に対応する、戻りプログラムカウンタ値と
    (ii)前記処理ユニットの現在の処理ユニット例外状態と
    を示す、関連する処理ユニット状態変数を有する、
    請求項1または2に記載のデータ処理装置。
  4. 前記処理ユニット状態変数が、それぞれの処理ユニット内に格納される、請求項に記載のデータ処理装置。
  5. 前記グループ内の前記処理ユニットの全てがプログラム命令の前記ストリームの処理を再開しているとき、前記例外制御回路が、前記グループを完了中状態から前記正常状態に移行する、請求項に記載のデータ処理装置。
  6. 前記グループが、前記トリガー状態および前記完了中状態のいずれかにある場合は、いかなるさらなる例外トリガーイベントにも非応答である、請求項1または5に記載のデータ処理装置。
  7. 前記グループ状態変数が、前記例外制御回路内に格納される、請求項に記載のデータ処理装置。
  8. 前記グループ内の各処理ユニットが、プログラム命令の前記ストリーム内のプログラム命令をスケジューリングすると、前記処理ユニットが、前記処理ユニット例外状態が正常状態かつ前記グループ例外状態がトリガー状態であるか否かを判断し、そうであれば、前記処理ユニット例外状態を例外中状態に変更し、前記処理ユニットに対する現在のプログラムカウンタ値を保存し、前記例外処理を開始し、そして、前記カウンタ値を増加させる、請求項1または7に記載のデータ処理装置。
  9. 前記カウンタ値が増加すると、前記カウンタ値が前記総数と比較され、等しければ、前記グループ例外状態が完了中状態に変更される、請求項に記載のデータ処理装置。
  10. 処理ユニットの前記処理ユニット例外状態が例外中状態であり、かつ前記処理ユニットが例外処理プログラム命令からの戻りを実行すると、前記処理ユニット例外状態が例外終了状態に変更される、請求項1〜4のいずれか1項に記載のデータ処理装置。
  11. 前記カウンタ値が減少すると、前記カウンタ値がゼロと比較され、等しければ、前記グループ例外状態が正常状態に変更される、請求項に記載のデータ処理装置。
  12. プログラム命令を実行するための複数の処理手段であって、各処理手段が、処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理手段と、
    例外制御手段であって、前記例外制御手段は、複数の前記処理手段の複数のグループにおける例外処理を制御し、各グループはそれぞれの処理スレッドを実行し、前記例外制御手段は、いずれかの前記グループのための例外トリガーイベントに応答して前記グループによる例外処理を制御するように構成された例外制御手段を有し、
    前記例外制御手段は、前記例外トリガーイベントに応答して前記グループ内の前記処理手段のそれぞれ、順に、プログラム命令の前記ストリームの実行を中断し、例外処理を行うために例外処理プログラム命令のストリームを実行し、さらにプログラム命令の前記ストリームの実行を再開するように、制御するものであり、
    前記例外制御手段が、前記グループ内の前記処理手段のそれぞれのために、前記例外トリガーイベントに対して、一連の処理ユニット例外状態のトラバーサルを一度だけ制御し、
    前記一連の処理ユニット例外状態が、順に、
    (i)プログラム命令の前記ストリームの処理に対応する正常状態と、
    (ii)前記例外処理プログラム命令の処理に対応する例外中状態と、
    (iii)プログラム命令の前記ストリームの再開された処理に対応する例外終了状態とであり、
    前記例外制御手段が、前記グループのために、前記例外トリガーイベントに対して一連のグループ例外状態のトラバーサルを制御し、
    前記一連のグループ例外状態が、順に、
    (i)前記グループ内の前記処理手段の全てによるプログラム命令のそれぞれのストリームの処理に対応する正常状態と、
    (ii)例外トリガーイベントが生じているが、前記グループ内の前記処理手段のうちのいずれかがまだ例外処理を開始していない状態に対応するトリガー状態と、
    (iii)前記グループ内の前記処理手段の全てが例外処理を開始したが、前記グループ内の前記処理手段のうちのいずれかがまだ前記プログラム命令の前記ストリームの処理を再開していない状態に対応する完了中状態と
    であり、
    前記グループが、
    (i)前記グループの現在のグループ例外状態と、
    (ii)前記グループ内の処理手段の総数と、
    (iii)前記例外処理を開始しているが、完了していない、処理手段の数を示すカウンタ値と
    を示す、関連するグループ状態変数を有し、
    処理ユニット例外状態が例外終了状態であり、かつ前記グループ例外状態が完了中状態の場合、前記処理ユニット例外状態が正常状態に変更され、前記カウンタ値が減少する、データ処理装置。
  13. 各処理ユニットが処理スレッドに対応するプログラム命令のストリームを実行する、複数の処理ユニットでプログラム命令を実行するステップと、
    複数の前記処理ユニットの複数のグループにおける例外処理を制御するステップであって、各グループはそれぞれの処理スレッドを実行するものであり、前記制御するステップにおいて、いずれかの前記グループのための例外トリガーイベントに応答して前記グループによる前記例外処理を制御するものである、前記制御するステップと、
    前記グループ内の前記処理ユニットのそれぞれが前記例外トリガーイベントに応答して、順に、プログラム命令の前記ストリームの実行を中断し、例外処理を行うために例外処理プログラム命令のストリームを実行し、さらにプログラム命令の前記ストリームの実行を再開するステップと
    を含み、
    前記例外処理を制御するステップが、前記グループ内の前記処理ユニットのそれぞれのために、前記例外トリガーイベントに対して、一連の処理ユニット例外状態のトラバーサルを一度だけ制御することを含み、
    前記一連の処理ユニット例外状態が、順に、
    (i)プログラム命令の前記ストリームの処理に対応する正常状態と、
    (ii)前記例外処理プログラム命令の処理に対応する例外中状態と、
    (iii)プログラム命令の前記ストリームの再開された処理に対応する例外終了状態とであり、
    前記例外処理を制御するステップが、前記グループのために、前記例外トリガーイベントに対して一連のグループ例外状態のトラバーサルを制御することを含み、
    前記一連のグループ例外状態が、順に、
    (i)前記グループ内の前記処理ユニットの全てによるプログラム命令のそれぞれのストリームの処理に対応する正常状態と、
    (ii)例外トリガーイベントが生じているが、前記グループ内の前記処理ユニットのうちのいずれかがまだ例外処理を開始していない状態に対応するトリガー状態と、
    (iii)前記グループ内の前記処理ユニットの全てが例外処理を開始したが、前記グループ内の前記処理ユニットのうちのいずれかがまだ前記プログラム命令の前記ストリームの処理を再開していない状態に対応する完了中状態と
    であり、
    前記グループが、
    (i)前記グループの現在のグループ例外状態と、
    (ii)前記グループ内の処理ユニットの総数と、
    (iii)前記例外処理を開始しているが、完了していない、処理ユニットの数を示すカウンタ値と
    を示す、関連するグループ状態変数を有し、
    処理ユニット例外状態が例外終了状態であり、かつ前記グループ例外状態が完了中状態の場合、前記処理ユニット例外状態が正常状態に変更され、前記カウンタ値が減少する、データ処理方法。
JP2013534378A 2010-10-22 2011-08-24 マルチプロセッサシステムにおける例外制御 Active JP5738999B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1017853.1 2010-10-22
GB1017853.1A GB2484729A (en) 2010-10-22 2010-10-22 Exception control in a multiprocessor system
PCT/GB2011/051593 WO2012052733A1 (en) 2010-10-22 2011-08-24 Exception control in a multiprocessor system

Publications (2)

Publication Number Publication Date
JP2013540329A JP2013540329A (ja) 2013-10-31
JP5738999B2 true JP5738999B2 (ja) 2015-06-24

Family

ID=43334229

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013534378A Active JP5738999B2 (ja) 2010-10-22 2011-08-24 マルチプロセッサシステムにおける例外制御

Country Status (10)

Country Link
US (1) US9430419B2 (ja)
EP (1) EP2630577B1 (ja)
JP (1) JP5738999B2 (ja)
KR (1) KR101838474B1 (ja)
CN (1) CN103154919B (ja)
GB (1) GB2484729A (ja)
IL (1) IL225073A (ja)
MY (1) MY164770A (ja)
TW (1) TWI511042B (ja)
WO (1) WO2012052733A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2524085B (en) * 2014-03-14 2021-01-20 Advanced Risc Mach Ltd Exception handling in microprocessor systems
US10606679B2 (en) * 2017-12-04 2020-03-31 Arm Limited Debug apparatus and method
US11782602B2 (en) 2021-06-24 2023-10-10 Western Digital Technologies, Inc. Providing priority indicators for NVMe data communication streams
US11960730B2 (en) 2021-06-28 2024-04-16 Western Digital Technologies, Inc. Distributed exception handling in solid state drives

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT998437B (it) * 1973-08-22 1976-01-20 Honeywell Inf Systems Sistema di accesso a scansione ciclica variabile delle richieste di interruzione
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5193187A (en) * 1989-12-29 1993-03-09 Supercomputer Systems Limited Partnership Fast interrupt mechanism for interrupting processors in parallel in a multiprocessor system wherein processors are assigned process ID numbers
JPH05508046A (ja) * 1990-06-11 1993-11-11 クレイ、リサーチ、インコーポレーテッド 多重プロセッサシステムのための高速割込み機構
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
US5805470A (en) * 1996-10-10 1998-09-08 Hewlett-Packard Company Verification of instruction and data fetch resources in a functional model of a speculative out-of order computer system
US6691223B1 (en) * 1999-07-30 2004-02-10 Intel Corporation Processing full exceptions using partial exceptions
US6775728B2 (en) * 2001-11-15 2004-08-10 Intel Corporation Method and system for concurrent handler execution in an SMI and PMI-based dispatch-execution framework
IL151251A0 (en) * 2002-08-14 2003-04-10 Elta Systems Ltd Parallel processing platform with synchronous system halt-resume
US20060020852A1 (en) * 2004-03-30 2006-01-26 Bernick David L Method and system of servicing asynchronous interrupts in multiple processors executing a user program
US7188052B2 (en) * 2005-04-12 2007-03-06 International Business Machines Corporation Using highly skewed clocks for application based tracing and application based normalization of processor clocks in an SMP environment
US7461275B2 (en) 2005-09-30 2008-12-02 Intel Corporation Dynamic core swapping
US7433985B2 (en) 2005-12-28 2008-10-07 Intel Corporation Conditional and vectored system management interrupts
US20080034193A1 (en) * 2006-08-04 2008-02-07 Day Michael N System and Method for Providing a Mediated External Exception Extension for a Microprocessor
US20080082710A1 (en) * 2006-09-29 2008-04-03 Dell Products L.P. System and method for managing system management interrupts in a multiprocessor computer system
GB2448523B (en) * 2007-04-19 2009-06-17 Transitive Ltd Apparatus and method for handling exception signals in a computing system
US20090172229A1 (en) * 2007-12-28 2009-07-02 Krystof Zmudzinski Methods for selecting cores to execute system management interrupts
US7802042B2 (en) * 2007-12-28 2010-09-21 Intel Corporation Method and system for handling a management interrupt event in a multi-processor computing device
US7991933B2 (en) * 2008-06-25 2011-08-02 Dell Products L.P. Synchronizing processors when entering system management mode
JP2010015364A (ja) * 2008-07-03 2010-01-21 Renesas Technology Corp マルチプロセッサシステム及び情報処理装置
US20100115236A1 (en) * 2008-10-31 2010-05-06 Cray Inc. Hierarchical shared semaphore registers

Also Published As

Publication number Publication date
EP2630577A1 (en) 2013-08-28
KR101838474B1 (ko) 2018-04-26
TWI511042B (zh) 2015-12-01
CN103154919B (zh) 2016-02-17
GB2484729A (en) 2012-04-25
MY164770A (en) 2018-01-30
KR20140001887A (ko) 2014-01-07
IL225073A (en) 2017-05-29
TW201229896A (en) 2012-07-16
US20120102303A1 (en) 2012-04-26
US9430419B2 (en) 2016-08-30
GB201017853D0 (en) 2010-12-01
EP2630577B1 (en) 2015-04-15
JP2013540329A (ja) 2013-10-31
CN103154919A (zh) 2013-06-12
WO2012052733A1 (en) 2012-04-26

Similar Documents

Publication Publication Date Title
EP1839146B1 (en) Mechanism to schedule threads on os-sequestered without operating system intervention
US8539485B2 (en) Polling using reservation mechanism
US8799929B2 (en) Method and apparatus for bandwidth allocation mode switching based on relative priorities of the bandwidth allocation modes
TWI512448B (zh) 用以啟用處理器等待狀態之指令
JP5173714B2 (ja) マルチスレッドプロセッサ及びその割り込み処理方法
US20080301700A1 (en) Filtering of performance monitoring information
US10013290B2 (en) System and method for synchronizing threads in a divergent region of code
JP5738999B2 (ja) マルチプロセッサシステムにおける例外制御
US7987345B2 (en) Performance monitors in a multithreaded processor architecture
US10949243B2 (en) Reducing IPI overhead with CPU overcommit support via IPI broadcast
RU2005129301A (ru) Способ организации многопроцессорной эвм
JP2005050208A (ja) マルチタスクシステムにおけるメモリ管理方式およびタスク制御装置
US8214574B2 (en) Event handling for architectural events at high privilege levels
US7831979B2 (en) Processor with instruction-based interrupt handling
US20110173422A1 (en) Pause processor hardware thread until pin
US7434039B2 (en) Computer processor capable of responding with comparable efficiency to both software-state-independent and state-dependent events
US8171270B2 (en) Asynchronous control transfer
JP2006146641A (ja) マルチスレッドプロセッサ及びマルチスレッドプロセッサの割込み方法

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20130417

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141104

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150304

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150323

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150422

R150 Certificate of patent or registration of utility model

Ref document number: 5738999

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250