(57)【要約】【課題】命令同期を行わない他のスレッドの実行を停止させることなく命令同期を行う。【解決手段】命令発行ユニットからスレッド番号と実行部指定マップとを含む命令同期監視要求を受けると、実行完了検出部３２０における監視が開始され、命令発行ユニットは命令同期命令の属するスレッドの後続命令の発行を停止する。実行部において命令同期命令の先行命令の実行が完了すると、実行完了記録テーブル３１０の実行部指定マップ３１２における対応するビットがセットされる。命令発行ユニットからのスレッド番号に従ってセレクタ３２１により選択されたエントリにおける実行完了記録テーブル３１０の実行部指定マップ３１２と、命令発行ユニットから指定された実行部指定マップとが一致したことが比較器３２２によって検出される。これにより、論理積回路３２３を介して命令同期の成立が命令発行ユニットに通知される。【選択図】図５
2010020363.tif 000002
【特許請求の範囲】
【請求項１】
複数のスレッドに関する命令を同時に実行する複数の実行部と、
前記複数の実行部の各々に対して命令を発行する命令発行部と、
前記複数の実行部の何れかに命令同期命令が発行された場合に当該命令同期命令の属するスレッドにおける先行命令の実行完了を検出するために、前記複数の実行部のうち前記命令同期命令を発行された実行部の各々について前記命令同期命令の実行完了を監視する命令同期監視部とを具備し、
前記命令発行部は、前記命令同期命令を発行した後には前記命令同期監視部によって前記命令同期命令の属するスレッドにおける先行命令の実行完了が検出されるまで前記命令同期命令の属するスレッドにおける後続命令の発行を停止する演算処理装置。
【請求項２】
前記命令同期命令は、当該命令同期命令の属するスレッドの識別子を示すスレッド識別子フィールドと、前記複数の実行部のうち前記先行命令の実行完了を検出すべきものを指定する実行部指定フィールドとを備え、
前記命令同期監視部は、前記スレッド識別子フィールドによって示されるスレッドに属する前記先行命令が、前記複数の実行部のうち前記実行部指定フィールドによって指定された実行部において実行完了したことを検出する
請求項１記載の演算処理装置。
【請求項３】
前記命令同期監視部は、
スレッド毎に前記複数の実行部の各々における前記先行命令の実行が完了したか否かを記録する実行完了記録部と、
前記実行完了記録部における前記記録と前記実行部指定フィールドにおける前記指定とを比較することにより前記複数の実行部のうち前記実行部指定フィールドによって指定された全ての実行部において前記先行命令の実行が完了したことを検出する実行完了検出部とを備える
請求項２記載の演算処理装置。
【請求項４】
前記実行完了検出部は、
前記実行完了記録部に記録される前記先行命令の実行完了の有無を前記スレッド識別子フィールドに従って選択する選択器と、
前記選択された前記先行命令の実行完了の有無と前記実行部指定フィールドにおける前記実行部の指定とを比較する比較器と、
前記命令発行部によって前記命令同期命令が発行された場合に前記比較の結果を前記実行完了検出部の検出結果として出力する出力部とを備える
請求項３記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置に関し、特に命令の実行完了の同期を行う命令同期命令を命令セットとして有する演算処理装置、および、その処理方法に関する。
【背景技術】
【０００２】
命令を順次実行する演算処理装置において、ある時点までに演算処理装置の実行部に発行された命令の実行を完了させる必要がある場合がある。このような命令の実行完了を待つ動作を命令同期という。例えば、デバッガにおいて一命令ずつ実行していくステップ実行や、命令の実行結果が外部のメモリ等に出力されたことを確実に保証したい場合などである。この命令同期を実現するためには、命令同期を行う命令同期命令を演算処理装置の命令セットに備えておいて、命令同期が必要となったときにこの命令同期命令を演算処理装置に実行させることが考えられる。
【０００３】
従来、複数スレッドの並列実行が可能な演算処理装置において、あるスレッドの命令同期を行う方法として様々な技術が提案されている。その一つとして、例えば、全てのスレッドの命令発行を停止して、全ての実行部が実行中の命令を完了してアイドル状態になるのを待つことにより、命令同期を実現する技術が知られている（例えば、特許文献１参照。）。
【特許文献１】米国特許公開第２００４／０２３９７５号公報（図３）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述の従来技術では、全ての実行部をアイドル状態にするために全てのスレッドの命令発行を停止するため、命令同期の対象となるスレッドだけでなく、他の命令同期の対象外のスレッドも停止することになる。そのため、演算処理装置の命令実行性能が大きく低下する。
【０００５】
これに対し、演算処理装置の全ての実行部において実行中の全ての命令を監視し、実行中の各命令の発行元となるスレッドを判別することができれば、命令同期の対象となるスレッドのみの実行を停止することは可能である。しかし、その場合、演算処理装置内の全ての実行部において実行中の命令の発行元スレッドと、命令同期の対象スレッドとを比較する回路が必要になり、演算処理装置の回路規模が大きく増加してしまうため、現実的ではない。
【０００６】
本発明はこのような状況に鑑みてなされたものであり、命令同期を行わない他のスレッドの実行を停止させることなく命令同期を行うことを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記課題を解決するためになされたものであり、その第１の側面は、複数のスレッドに関する命令を同時に実行する複数の実行部と、上記複数の実行部の各々に対して命令を発行する命令発行部と、上記複数の実行部の何れかに命令同期命令が発行された場合に当該命令同期命令の属するスレッドにおける先行命令の実行完了を検出するために、上記複数の実行部のうち上記命令同期命令を発行された実行部の各々について上記命令同期命令の実行完了を監視する命令同期監視部とを具備し、上記命令発行部は、上記命令同期命令を発行した後には上記命令同期監視部によって上記命令同期命令の属するスレッドにおける先行命令の実行完了が検出されるまで上記命令同期命令の属するスレッドにおける後続命令の発行を停止する演算処理装置である。これにより、命令同期命令の属するスレッドにおける先行命令の実行完了が検出されるまで命令同期命令の属するスレッドにおける後続命令の発行を停止させるという作用をもたらす。
【０００８】
また、この第１の側面において、上記命令同期命令は、当該命令同期命令の属するスレッドの識別子を示すスレッド識別子フィールドと、上記複数の実行部のうち上記先行命令の実行完了を検出すべきものを指定する実行部指定フィールドとを備え、上記命令同期監視部は、上記スレッド識別子フィールドによって示されるスレッドに属する上記先行命令が、上記複数の実行部のうち上記実行部指定フィールドによって指定された実行部において実行完了したことを検出するようにしてもよい。これにより、実行部指定フィールドによって指定された実行部においてスレッド識別子フィールドによって示されるスレッドに属する先行命令が実行完了させるという作用をもたらす。
【０００９】
また、この場合において、上記命令同期監視部は、スレッド毎に上記複数の実行部の各々における上記先行命令の実行が完了したか否かを記録する実行完了記録部と、上記実行完了記録部における上記記録と上記実行部指定フィールドにおける上記指定とを比較することにより上記複数の実行部のうち上記実行部指定フィールドによって指定された全ての実行部において上記先行命令の実行が完了したことを検出する実行完了検出部とを備えてもよい。これにより、実行完了記録部における記録に基づいて実行完了検出部において先行命令の実行完了を検出させるという作用をもたらす。
【００１０】
また、この場合において、上記実行完了検出部は、上記実行完了記録部に記録される上記先行命令の実行完了の有無を上記スレッド識別子フィールドに従って選択する選択器と、上記選択された上記先行命令の実行完了の有無と上記実行部指定フィールドにおける上記実行部の指定とを比較する比較器と、上記命令発行部によって上記命令同期命令が発行された場合に上記比較の結果を上記実行完了検出部の検出結果として出力する出力部とを備えてもよい。これにより、選択された先行命令の実行完了の有無と実行部指定フィールドにおける実行部の指定との比較結果を実行完了検出部の検出結果として出力させるという作用をもたらす。
【発明の効果】
【００１１】
本発明によれば、命令同期を行わない他のスレッドの実行を停止させることなく命令同期を行うことができるという優れた効果を奏し得る。
【発明を実施するための最良の形態】
【００１２】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【００１３】
図１は、本発明の実施の形態における情報処理システムの全体構成の一例を示す図である。この情報処理システムは、複数のＣＰＵ１１乃至１４と、メモリ２０と、メモリキャッシュ３０と、フレームバッファ５０と、バッファキャッシュ６０と、演算処理装置１００とを備えている。
【００１４】
ＣＰＵ１１乃至１４は、互いに並列に処理を行うＣＰＵ（Central Processing Unit：中央処理装置）である。ここでは、ＣＰＵ１１乃至１４のそれぞれが異なるスレッドを実行し、必要に応じて演算処理を演算処理装置１００に指示することを想定する。
【００１５】
メモリ２０は、ＣＰＵ１１乃至１４の作業領域を保持する共有メモリである。メモリキャッシュ３０は、メモリ２０の一部の領域のコピーを保持する共有キャッシュメモリである。
【００１６】
フレームバッファ５０は、画像処理の対象となるフレームを保持するバッファである。バッファキャッシュ６０は、フレームバッファ５０一部の領域のコピーを保持するキャッシュメモリである。演算処理装置１００を動画コーデックエンジンとして用いる場合、このバッファキャッシュ６０は、フレーム間予測の際のデコード済画像を参照するためのバッファであり、読出し専用のバッファとして機能する。
【００１７】
演算処理装置１００は、ＣＰＵ１１乃至１４から共有されて、ＣＰＵ１１乃至１４からの指示に従って演算処理を行うコプロセッサである。演算処理装置１００とＣＰＵ１１乃至１４との間は、メモリ２０またはメモリキャッシュ３０のレベルでデータの同期がとられるようになっている。以下では、演算処理装置１００を動画コーデックエンジンとして用いる場合の例について説明する。
【００１８】
図２は、本発明の実施の形態における演算処理装置１００の一構成例を示す図である。この演算処理装置１００は、入力キュー１１１乃至１１４と、命令発行ユニット１２１乃至１２４と、アービタ１３０と、命令デコーダ１４０と、レジスタファイル１５０とを備えている。また、この演算処理装置１００は、ロードストアユニット１６１と、算術論理演算器１６２と、乗算器１６３と、特殊演算器Ａ乃至Ｅ（１６４乃至１６８）と、ライトバックユニット１７０と、出力キュー１８０と、命令同期監視ユニット１９０とを備えている。
【００１９】
入力キュー１１１乃至１１４は、ＣＰＵ１１乃至１４から受け取った命令を保持するＦＩＦＯ（First-In First-Out）キューである。この入力キュー１１１乃至１１４は、ＣＰＵ１１乃至１４にそれぞれ対応している。この入力キュー１１１乃至１１４は、ＣＰＵ１１乃至１４から受け取った順番により、命令発行ユニット１２１乃至１２４に命令を供給する。
【００２０】
命令発行ユニット１２１乃至１２４は、入力キュー１１１乃至１１４から供給された命令を発行するユニットである。この命令発行ユニット１２１乃至１２４は、入力キュー１１１乃至１１４にそれぞれ対応している。この命令発行ユニット１２１乃至１２４は、レジスタファイル１５０におけるデータの依存関係を制御するために、その依存関係を保持するスコアボードを備えてもよい。
【００２１】
また、この命令発行ユニット１２１乃至１２４は、命令同期命令を発行すると、その命令同期命令の属するスレッドにおける後続命令の発行を一旦停止する。その際、信号線１２９により命令同期監視ユニット１９０に対して命令同期を監視するよう要求する。そして、この命令発行ユニット１２１乃至１２４は、命令同期が完了した際には命令同期監視ユニット１９０から信号線１９９によりその旨を受信する。これにより、命令発行ユニット１２１乃至１２４は、後続命令の発行を再開する。
【００２２】
アービタ１３０は、命令発行ユニット１２１乃至１２４から発行された各命令を調停して命令デコーダ１４０に供給するものである。命令デコーダ１４０は、アービタ１３０から供給された命令をデコードして、その命令を実行する演算器等やアクセス対象となるレジスタ等を特定するものである。
【００２３】
なお、上述の入力キュー１１１乃至１１４、命令発行ユニット１２１乃至１２４、アービタ１３０および命令デコーダ１４０は、特許請求の範囲に記載の命令発行部の一例である。
【００２４】
レジスタファイル１５０は、演算処理装置１００の内部レジスタを保持するものである。このレジスタファイル１５０では、命令デコーダ１４０によるデコード結果に従って必要なオペランドが読み出され、演算器等に供給される。
【００２５】
ロードストアユニット１６１は、メモリ２０からレジスタファイル１５０へのロードおよびレジスタファイル１５０からメモリ２０へのストアを行うものである。算術論理演算器１６２は、加算や減算などの算術演算と、論理和や論理積などの論理演算を行う演算器である。乗算器１６３は、乗算を行う演算器である。特殊演算器Ａ乃至Ｅ（１６４乃至１６８）は、特殊演算を行う演算器である。ここでは、特殊演算として、動画コーデックに必要なマクロブロック演算を想定する。例えば、特殊演算器ＡおよびＢ（１６４および１６５）はＩＤＣＴ（Inverse Discrete Cosine Transform）演算を行うものとする。また、特殊演算器Ｃ（１６６）はデブロッキングフィルタ演算を行うものとする。また、特殊演算器Ｄ（１６７）はフレーム内予測処理を行うものとする。また、特殊演算器Ｅ（１６８）はフレーム間予測処理を行うものとする。なお、この例では、動画コーデックを想定しているため、各演算器等は整数演算を扱うことを想定している。
【００２６】
ここで、各処理に要する時間として、ロードストアユニット１６１では５サイクルを要するものとする。また、算術論理演算器１６２では２サイクルを要するものとする。また、乗算器１６３では４サイクルを要するものとする。また、特殊演算器ＡおよびＢ（１６４および１６５）では４サイクルを要するものとする。また、特殊演算器ＣおよびＤ（１６６および１６７）では５サイクルを要するものとする。また、特殊演算器Ｅ（１６８）ではファンクションコードに応じて２５サイクル以上を要するものとする。ファンクションコードとは、コーデック毎にフィルタ演算の種類を指定するコードである。なお、以下では、これらロードストアユニット１６１、算術論理演算器１６２、乗算器１６３、特殊演算器Ａ乃至Ｅ（１６４乃至１６８）を実行部１６０と総称する。
【００２７】
ライトバックユニット１７０は、実行部１６０において生成された結果をレジスタファイル１５０に書き戻すものである。出力キュー１８０は、ロードストアユニット１６１、算術論理演算器１６２および特殊演算器Ｅ（１６８）において生成された結果をＣＰＵ１１乃至１４に出力するものである。
【００２８】
命令同期監視ユニット１９０は、実行部１６０に命令同期命令が発行された場合に、その命令同期命令の属するスレッドにおける先行命令が実行部１６０において実行完了となったことを検出するものである。そのために、命令同期監視ユニット１９０は、命令同期命令を発行された実行部１６０の各々について命令同期命令の実行完了を監視する。この命令同期監視ユニット１９０は、信号線１２９を介して命令発行ユニット１２１乃至１２４の何れかから命令同期監視要求を受けると、特定のスレッドにおける先行命令について実行完了の監視を開始する。信号線１６９を介して実行部１６０の各々から実行完了の報告がされると、命令同期監視ユニット１９０は、その報告に従って実行完了の旨を記録する。そして、命令同期監視ユニット１９０は、実行部１６０のうち所定のものにおいて実行が完了すると、信号線１９９を介して命令発行ユニット１２１乃至１２４のうち命令同期監視要求をしたものに同期の成立通知を行う。なお、命令同期監視ユニット１９０は、特許請求の範囲に記載の命令同期監視部の一例である。
【００２９】
図３は、本発明の実施の形態におけるレジスタファイル１５０の一構成例を示す図である。このレジスタファイル１５０は、ＣＰＵ１１乃至１４のそれぞれに対して別々に設けられる。これにより、ＣＰＵ１１乃至１４間におけるデータ依存関係を考慮せずに各命令の実行を行うことができる。ここでは、１つのＣＰＵに対して３２個ずつのレジスタを設けるものとする。
【００３０】
１個のレジスタは、４×４のマトリックス構造を有し、各要素はそれぞれ１６ビットから成るものとする。すなわち、各レジスタはベクトルレジスタのように複数の要素からなり、演算などの際にも基本的にはレジスタを単位として処理が行われる。この例では、動画コーデックを想定しているため、各要素は整数を保持することを想定している。
【００３１】
図４は、本発明の実施の形態における命令同期命令の命令フォーマットの一例を示す図である。この命令フォーマットは、機能コード６１０、スレッド番号６２０、および、実行部指定マップ６３０の各フィールドを備えている。
【００３２】
機能コード６１０は、命令に割り当てられたコードを保持するフィールドである。命令同期命令は「ＩｎｓｔＳｙｎｃ」と表記され、例えば８ビット程度のコードが機能コード６１０として格納される。
【００３３】
スレッド番号６２０は、命令同期の対象となるスレッドを指定するフィールドである。すなわち、このスレッド番号６２０には、命令同期命令の属するスレッドの番号が格納される。なお、スレッド番号６２０は、特許請求の範囲に記載のスレッド識別子フィールドの一例である。
【００３４】
実行部指定マップ６３０は、命令同期の対象となる実行部を指定するフィールドである。この実行部指定マップ６３０は、実行部１６０の各々に対応して１ビットずつのビットマップを有しており、それぞれ命令同期の対象となるか否を示している。すなわち、第０番目のビットがロードストアユニット１６１に対応する。また、第１番目のビットが算術論理演算器１６２に対応する。また、第２番目のビットが乗算器１６３に対応する。また、第３番目のビットが特殊演算器Ａ（１６４）に対応する。また、第４番目のビットが特殊演算器Ｂ（１６５）に対応する。また、第５番目のビットが特殊演算器Ｃ（１６６）に対応する。また、第６番目のビットが特殊演算器Ｄ（１６７）に対応する。また、第７番目のビットが特殊演算器Ｅ（１６８）に対応する。例えば、ロードストアユニット１６１を命令同期の対象とする場合には第０番目のビットが「１」にセットされ、命令同期の対象としない場合には「０」にリセットされる。
【００３５】
図５は、本発明の実施の形態における命令同期監視ユニット１９０の一構成例を示す図である。この命令同期監視ユニット１９０は、実行完了記録テーブル３１０と、実行完了検出部３２０とを備えている。
【００３６】
実行完了記録テーブル３１０は、スレッド毎に実行部１６０の各々における命令同期命令の先行命令の実行が完了したか否かを記録するテーブルであり、スレッド番号３１１および実行部指定マップ３１２の各フィールドを備える。スレッド番号３１１は、命令同期命令の属するスレッド番号を保持するフィールドである。実行部指定マップ３１２は、命令フォーマットにおける実行部指定マップ６３０と同様のビットマップであり、実行部１６０において実行完了したことを記録するものである。実行部１６０の各々は、命令同期命令を実行した際に、それに先行する命令の実行が完了したことを命令同期監視ユニット１９０に報告する。この報告には、命令同期命令のスレッド番号が含まれる。これにより、命令同期監視ユニット１９０は、そのスレッド番号と一致するスレッド番号３１１のエントリにおいて、実行部指定マップ３１２のビットマップのうち実行完了報告を行った実行部１６０に対応するビットを、例えば「１」にセットする。この例では、実行部指定マップ３１２のビットマップにおいて「１」は実行完了を示し、「０」は実行未了を示すものとする。なお、実行完了記録テーブル３１０は、特許請求の範囲に記載の実行完了記録部の一例である。
【００３７】
実行完了検出部３２０は、実行完了記録テーブル３１０を参照することにより、実行部指定マップ６３０によって指定された全ての実行部１６０において先行命令の実行が完了したことを検出するものである。この実行完了検出部３２０は、セレクタ３２１と、比較器３２２と、論理積回路３２３とを備える。
【００３８】
セレクタ３２１は、命令同期命令のスレッド番号６２０に従って、実行完了記録テーブル３１０の実行部指定マップ３１２を選択する選択器である。比較器３２２は、セレクタ３２１によって選択された実行部指定マップ３１２と、命令同期命令の実行部指定マップ６３０とを比較する比較器である。命令同期命令の実行部指定マップ６３０において同期対象として指定された実行部の全てにおいて先行命令の実行が完了した際に、実行部指定マップ６３０の内容は実行部指定マップ３１２と一致する。その一致を検出するのがこの比較器３２２である。論理積回路３２３は、命令発行ユニット１２１乃至１２４からの命令同期監視要求の有無と比較器３２２の結果との論理積を生成するものである。すなわち、命令同期監視要求がされている際に比較器３２２において一致が検出されると、論理積回路３２３は命令同期が成立した旨を命令発行ユニット１２１乃至１２４に通知する。なお、セレクタ３２１は特許請求の範囲に記載の選択器の一例である。また、論理積回路３２３は特許請求の範囲に記載の出力部の一例である。
【００３９】
図６は、本発明の実施の形態における命令同期命令を含む命令列の一例を示す図である。あるスレッド＃Ｘ内の命令列において命令同期命令が発行されると、命令発行ユニット１２１乃至１２４は、そのスレッド＃Ｘ内の命令同期命令に後続する命令＃ｊ以降の命令の発行を停止する。そして、命令発行ユニット１２１乃至１２４は、スレッド＃Ｘ内の命令同期命令に先行する命令＃ｉ以前の命令の実行完了が検出されるまで、スレッド＃Ｘ内の命令については同期待ち状態となる。その間も、他のスレッドに属する命令の発行は継続される。命令同期監視ユニット１９０において命令＃ｉ以前の先行命令の実行完了が検出されると、命令発行ユニット１２１乃至１２４は、スレッド＃Ｘ内の命令＃ｊ以降の後続命令の発行を再開する。
【００４０】
次に本発明の実施の形態における演算処理装置１００の動作について図面を参照して説明する。
【００４１】
図７は、本発明の実施の形態における命令発行ユニット１２１乃至１２４の処理手順例を示す図である。
【００４２】
ＣＰＵ１１乃至１４から命令同期命令を受信すると（ステップＳ９１１）、命令発行ユニット１２１乃至１２４は、命令同期監視ユニット１９０に対して命令同期の監視を要求する（ステップＳ９１２）。また、命令発行ユニット１２１乃至１２４は、命令同期命令の実行部指定マップ６３０において指定された実行部１６０に対して命令同期命令を発行する（ステップＳ９１３）。そして、命令発行ユニット１２１乃至１２４は、命令同期命令の属するスレッド（スレッド番号６２０）において後続する命令の発行を停止する（ステップＳ９１４）。
【００４３】
その後、命令同期監視ユニット１９０から同期成立の通知を受信すると（ステップＳ９１５）、命令発行ユニット１２１乃至１２４は、命令同期命令の属するスレッド（スレッド番号６２０）において後続する命令の発行を再開する（ステップＳ９１６）。
【００４４】
図８は、本発明の実施の形態における実行部１６０の処理手順例を示す図である。
【００４５】
命令発行ユニット１２１乃至１２４から命令同期命令が発行されると、実行部１６０は他の命令と同様に命令同期命令を実行する。そして、命令同期命令の実行が完了すると（ステップＳ９２２）、実行部１６０は命令同期監視ユニット１９０に対してその実行部１６０において命令同期命令の先行命令が実行完了した旨の報告を行う（ステップＳ９２３）。これにより、命令同期監視ユニット１９０では、実行完了記録テーブル３１０の実行部指定マップ３１２がセットされる。
【００４６】
図９は、本発明の実施の形態における命令同期監視ユニット１９０の処理手順例を示す図である。なお、実行完了記録テーブル３１０の実行部指定マップ３１２は、全てのビットが予めリセットされていることを前提とする。
【００４７】
命令発行ユニット１２１乃至１２４から命令同期の監視要求を受信すると（ステップＳ９３１）、命令同期監視ユニット１９０は、そのスレッドについて命令同期の監視を開始する。この状態において、実行部１６０から命令同期命令の先行命令が実行完了した旨の報告を受信すると（ステップＳ９３３）、命令同期監視ユニット１９０は、実行部指定マップ３１２の対応するビットをセットする（ステップＳ９３４）。すなわち、命令同期監視ユニット１９０は、実行完了記録テーブル３１０の対応するスレッドに関する実行部指定マップ３１２において、実行完了を報告した実行部１６０に対応するビットをセットする。その結果、比較器３２２によって実行部指定マップ３１２と実行部指定マップ６３０との間の一致が検出されなければ（ステップＳ９３５）、一致するまでステップＳ９３３以降の処理が繰り返される。
【００４８】
比較器３２２によって実行部指定マップ３１２と実行部指定マップ６３０との間の一致が検出されると（ステップＳ９３５）、命令同期監視ユニット１９０は、その旨を通知する。すなわち、命令同期監視ユニット１９０は、命令発行ユニット１２１乃至１２４のうち命令同期命令を発行したものに対して命令同期が成立した旨を通知する（ステップＳ９３６）。そして、命令同期監視ユニット１９０は実行完了記録テーブル３１０の対応するスレッドに関する実行部指定マップ３１２をリセットする（ステップＳ９３７）。
【００４９】
図１０は、本発明の実施の形態における演算処理装置１００のシーケンスチャートの一例を示す図である。
【００５０】
ＣＰＵ１１乃至１４から命令同期命令を受信すると（８１１）、命令発行ユニット１２１乃至１２４は、命令同期監視ユニット１９０に対して命令同期の監視を要求する（８１２）。また、命令発行ユニット１２１乃至１２４は、命令同期命令の実行部指定マップ６３０において指定された実行部１６０に対して命令同期命令を発行する（８１３）。そして、命令発行ユニット１２１乃至１２４は、命令同期命令の属するスレッド（スレッド番号６２０）において後続する命令の発行を停止する（８１４）。
【００５１】
命令発行ユニット１２１乃至１２４から命令同期の監視要求を受信すると（８３１）、命令同期監視ユニット１９０は、そのスレッドについて命令同期の監視を開始する。
【００５２】
命令発行ユニット１２１乃至１２４から命令同期命令が発行されると（８２１）、実行部１６０は他の命令と同様に命令同期命令を実行する。そして、命令同期命令の実行が完了すると（８２２）、実行部１６０は命令同期監視ユニット１９０に対してその実行部１６０において命令同期命令の先行命令が実行完了した旨の報告を行う（８２３）。
【００５３】
実行部１６０から命令同期命令の先行命令が実行完了した旨の報告を受信すると（８３３）、命令同期監視ユニット１９０は、実行部指定マップ３１２をセットする。すなわち、命令同期監視ユニット１９０は、実行完了記録テーブル３１０の対応するスレッドに関する実行部指定マップ３１２において、実行完了を報告した実行部１６０に対応するビットをセットする（８３４）。その結果、比較器３２２によって実行部指定マップ３１２と実行部指定マップ６３０との間の一致が検出されると（８３５）、その旨を通知する。すなわち、命令同期監視ユニット１９０は、命令発行ユニット１２１乃至１２４のうち命令同期命令を発行したものに対して命令同期が成立した旨を通知する（８３６）。そして、命令同期監視ユニット１９０は実行完了記録テーブル３１０の対応するスレッドに関する実行部指定マップ３１２をリセットする（８３７）。
【００５４】
命令同期監視ユニット１９０から同期成立の通知を受信すると（８１５）、命令発行ユニット１２１乃至１２４は、命令同期命令の属するスレッド（スレッド番号６２０）において後続する命令の発行を再開する（８１６）。
【００５５】
このように、本発明の実施の形態によれば、命令同期監視ユニット１９０においてスレッド毎に命令同期命令の先行命令の実行完了を検出することにより、命令同期を行わない他のスレッドの実行を停止させることなく命令同期を行うことができる。この実施の形態によれば、実行完了記録テーブル３１０、セレクタ３２１および比較器３２２という小規模な回路の組合せにより命令同期が可能になる。そのため、命令同期の実行のために演算処理装置１００の回路規模を大きく増加することなく、所望の命令同期を実現することができる。
【００５６】
なお、上述の実施の形態では、実行完了記録テーブル３１０の実行部指定マップ３１２を予めリセットしておいて、命令同期命令の実行完了の報告を受信する度に実行部指定マップ３１２をセットし、実行部指定マップ６３０との一致を検出している。これに対して、同期監視要求を受信した際に実行部指定マップ６３０の内容を実行部指定マップ３１２にセットしておいて、命令同期命令の実行完了の報告を受信する度に実行部指定マップ３１２をリセットしてもよい。この場合、比較器３２２は、実行部指定マップ３１２がクリアされるのを検出することになる。以下、この変形例について説明する。
【００５７】
図１１は、本発明の実施の形態における命令同期監視ユニット１９０の処理手順の変形例を示す図である。
【００５８】
命令発行ユニット１２１乃至１２４から命令同期の監視要求を受信すると（ステップＳ９４１）、命令同期監視ユニット１９０は、そのスレッドについて命令同期の監視を開始する。その際、命令同期監視ユニット１９０は、実行完了記録テーブル３１０の対応するスレッドに関する実行部指定マップ３１２において、実行部指定マップ６３０の内容をセットする（ステップＳ９４２）。
【００５９】
この状態において、実行部１６０から命令同期命令の先行命令が実行完了した旨の報告を受信すると（ステップＳ９４３）、命令同期監視ユニット１９０は、実行部指定マップ３１２をリセットする（ステップＳ９４４）。すなわち、命令同期監視ユニット１９０は、実行完了記録テーブル３１０の対応するスレッドに関する実行部指定マップ３１２において、実行完了を報告した実行部１６０に対応するビットをリセットする。その結果、比較器３２２によって実行部指定マップ３１２の各ビットが全てクリアされていることが検出されなければ（ステップＳ９４５）、検出されるまでステップＳ９４３以降の処理が繰り返される。
【００６０】
比較器３２２によって実行部指定マップ３１２の各ビットが全てクリアされていることが検出されると（ステップＳ９４５）、命令同期監視ユニット１９０は、その旨を通知する。すなわち、命令同期監視ユニット１９０は、命令発行ユニット１２１乃至１２４のうち命令同期命令を発行したものに対して命令同期が成立した旨を通知する（ステップＳ９４６）。
【００６１】
なお、上述の実施の形態においては、１つの実行完了検出部３２０により命令同期の監視を行っていたが、以下のように実行完了検出部３２０を複数設けてもよい。
【００６２】
図１２は、本発明の実施の形態における命令同期監視ユニット１９０の第１の変形例を示す図である。この命令同期監視ユニット１９０の第１の変形例では、実行完了検出部３２０が複数設けられている。すなわち、ｉ個（ｉは整数）の実行完了検出部３２０−１乃至ｉが設けられ、これにより並列に別個のスレッドの命令同期を監視することができるようになっている。この例では、命令発行ユニット１２１乃至１２４からの要求に基づいて、実行完了検出部３２０−１乃至ｉの各々においてスレッド番号を指定するようになっているが、次のようにスレッド番号を固定してもよい。
【００６３】
図１３は、本発明の実施の形態における命令同期監視ユニット１９０の第２の変形例を示す図である。この命令同期監視ユニット１９０の第２の変形例では、セレクタ３２１が設けられず、実行完了記録テーブル３１０の各エントリと実行完了検出部３２０−１乃至ｎの各々とが１対１に対応している。これにより、より小規模な回路構成により、並列に別個のスレッドの命令同期を監視することができるようになっている。
【００６４】
なお、本発明の実施の形態においては、実行部１６０において８個の演算器等を想定したが、本発明はこれに限定されるものではなく、任意の数の演算器等を利用することができる。また、動画コーデックのための特殊演算器を想定して説明したが、本発明はこれに限定されるものではない。
【００６５】
また、本発明の実施の形態においては、実行完了記録テーブル３１０の実行部指定マップ３１２の形式としてビットマップ形式を想定したが、本発明はこれに限定されるものではなく、特定の形式によりエンコードされていてもよい。
【００６６】
また、本発明の実施の形態においては、実行部１６０の各演算器等と命令同期監視ユニット１９０との間を信号線１６９により接続する例について説明したが、本発明はこれに限定されるものではなく、共通バス等により接続されていてもよい。
【００６７】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、上述のように特許請求の範囲における発明特定事項とそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
【００６８】
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【図面の簡単な説明】
【００６９】
【図１】本発明の実施の形態における情報処理システムの全体構成の一例を示す図である。
【図２】本発明の実施の形態における演算処理装置１００の一構成例を示す図である。
【図３】本発明の実施の形態におけるレジスタファイル１５０の一構成例を示す図である。
【図４】本発明の実施の形態における命令同期命令の命令フォーマットの一例を示す図である。
【図５】本発明の実施の形態における命令同期監視ユニット１９０の一構成例を示す図である。
【図６】本発明の実施の形態における命令同期命令を含む命令列の一例を示す図である。
【図７】本発明の実施の形態における命令発行ユニット１２１乃至１２４の処理手順例を示す図である。
【図８】本発明の実施の形態における実行部１６０の処理手順例を示す図である。
【図９】本発明の実施の形態における命令同期監視ユニット１９０の処理手順例を示す図である。
【図１０】本発明の実施の形態における演算処理装置１００のシーケンスチャートの一例を示す図である。
【図１１】本発明の実施の形態における命令同期監視ユニット１９０の処理手順の変形例を示す図である。
【図１２】本発明の実施の形態における命令同期監視ユニット１９０の第１の変形例を示す図である。
【図１３】本発明の実施の形態における命令同期監視ユニット１９０の第２の変形例を示す図である。
【符号の説明】
【００７０】
１１〜１４  ＣＰＵ
２０  メモリ
３０  メモリキャッシュ
５０  フレームバッファ
６０  バッファキャッシュ
１００  演算処理装置
１１１〜１１４  入力キュー
１２１〜１２４  命令発行ユニット
１３０  アービタ
１４０  命令デコーダ
１５０  レジスタファイル
１６０  実行部
１６１  ロードストアユニット
１６２  算術論理演算器
１６３  乗算器
１６４〜１６８  特殊演算器
１７０  ライトバックユニット
１８０  出力キュー
１９０  命令同期監視ユニット
３１０  実行完了記録テーブル
３１１  スレッド番号
３１２  実行部指定マップ
３２０  実行完了検出部
３２１  セレクタ
３２２  比較器
３２３  論理積回路
６１０  機能コード
６２０  スレッド番号
６３０  実行部指定マップ
【図１】
2010020363.tif 000003
【図２】
2010020363.tif 000004
【図３】
2010020363.tif 000005
【図４】
2010020363.tif 000006
【図５】
2010020363.tif 000007
【図６】
2010020363.tif 000008
【図７】
2010020363.tif 000009
【図８】
2010020363.tif 000010
【図９】
2010020363.tif 000011
【図１０】
2010020363.tif 000012
【図１１】
2010020363.tif 000013
【図１２】
2010020363.tif 000014
【図１３】
2010020363.tif 000015