(57)【要約】【課題】Out-of-order実行時においてもＷＡＷハザードを効果的に解消することが可能な並列処理機能を有するデータ処理装置を得る。【解決手段】調停回路１は実行予定書き込み命令の実行順序を示すタイムスタンプ情報決定値ＴＭＤを出力する。Ｓバッファ部５は実行予定書き込み命令の書き込み対象領域において直近に実行された書き込み命令のタイムスタンプ情報決定値を比較用タイムスタンプ情報値ＴＭＣとして格納する。タイムスタンプ比較部３は上述したタイムスタンプ情報決定値ＴＭＤ及び比較用タイムスタンプ情報値ＴＭＣを比較し、ＴＭＤ＞ＴＭＣの場合、ＷＡＷハザードは生じないと判断して書き込み許可を指示する制御信号Ｓ３を出力し、ＴＭＤ＜ＴＭＣの場合、ＷＡＷハザードが生じると判断して書き込み不許可を指示する制御信号Ｓ３を出力する。【選択図】図１
2009110235.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令から構成されるプログラムを並列に実行する機能を有するデータ処理装置であって、前記複数の命令は書き込み対象領域に対する書き込み動作を実行する少なくとも一つの書き込み命令を含み、前記少なくとも一つの書き込み命令はそれぞれ前記プログラム中における実行順序を規定したタイムスタンプ情報用ベース値が予め設定され、
各々が前記複数の命令のうち割り当てられた所定数の命令を並列に実行する複数のプロセッサエレメントを備え、前記複数のプロセッサエレメントはそれぞれ書き込み命令を実行するに際し、前記書き込み命令を実行予定書き込み命令とし、該実行予定書き込み命令に設定された前記タイムスタンプ情報用ベース値を前記実行予定書き込み命令と共に発行し、
前記実行予定書き込み命令に設定された前記タイムスタンプ情報用ベース値に基づきタイムスタンプ情報決定値を設定するタイムスタンプ情報決定値設定手段と、
前記書き込み対象領域毎に、当該書き込み対象領域において直近に実行された書き込み命令の前記タイムスタンプ情報決定値を比較用タイムスタンプ情報値として格納する比較用タイムスタンプ情報値格納手段と、
前記比較用タイムスタンプ情報値格納手段から、前記実行予定書き込み命令の前記書き込み対象領域における前記比較用タイムスタンプ情報値を読み出し、当該比較用タイムスタンプ情報値と前記実行予定書き込み命令に設定された前記タイムスタンプ情報決定値とを比較して、その比較結果に基づき、前記実行予定書き込み命令の実行について許可／不許可を制御する書き込み命令実行制御手段とをさらに備える、
データ処理装置。
【請求項２】
請求項１記載のデータ処理装置であって、
前記複数のプロセッサエレメントはそれぞれ、前記プログラムが少なくとも一部の繰り返し命令からなる繰り返し命令群を含む場合、前記繰り返し命令群における書き込み命令数を考慮してオフセット用調整値をさらに発行し、加えて、前記少なくとも一部の繰り返し命令単位に分岐実行情報を発行し、
前記タイムスタンプ情報決定値設定手段は、前記オフセット用調整値に基づき前記分岐実行情報に応答してタイムスタンプ情報オフセット値を求め、該タイムスタンプ情報オフセット値を前記タイムスタンプ情報用ベース値に加味して前記タイムスタンプ情報決定値を設定する、
データ処理装置。
【請求項３】
請求項２記載のデータ処理装置であって、
前記タイムスタンプ情報決定値設定手段は、前記繰り返し命令群の後に実行される書き込み命令は、直近の前記繰り返し命令群で最終的に算出されたタイムスタンプ情報オフセット値を前記タイムスタンプ情報用ベース値に加味して前記タイムスタンプ情報決定値を設定する、
データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、スーパースカラ等の複数のプロセッサエレメントを有する並列処理機能を有するデータ処理装置に関する。
【背景技術】
【０００２】
データ処理装置として、スーパースカラ等の複数の実行ユニットであるプロセッサエレメントを有する並列処理機能を有するものがある。スーパースカラはマルチプロセッサ・マルチコア環境において実現される。
【０００３】
このような並列処理機能を有するデータ処理装置において、Out-of-order実行する場合、ＷＡＷ(Write After Write)ハザードは、書き込み一貫性を保証する際に問題になるアクセスパターンとなる。例えば、図４に示すようなコマンドＣＭ１〜ＣＭ３からなるプログラム１０が存在する場合、変数ＸはコマンドＣＭ１により“１０”に設定され、コマンドＣＭ２内の内部コマンドＣＭ２１により“２０”に設定される。コマンドＣＭ１〜ＣＭ３の順に実行される場合は最終的にＸは“２０”になる。なお、内部コマンドＣＭ２１は必ず１回は実行されるものと仮定する。
【０００４】
しかし、Out-of-order実行では、内部コマンドＣＭ２１の方がコマンドＣＭ１より先に実行される可能性が存在する。この場合、ＷＡＷハザードが生じ、Ｘの最終決定値が“１０”になってしまう。
【０００５】
図５及び図６はＷＡＷハザードを示す説明図である。これらの図において、２つのプロセッサエレメント（ＰＥ）Ｐ１及びＰ２が並列処理を行う場合を示している。プロセッサエレメントＰ１及びＰ２が実行対象とするプログラムは命令１，命令２，命令３，命令４，命令５の順で実行され、命令１，命令３及び命令４は共に同一メモリの同一アドレス（統一の書き込み対象領域）に書き込み値Ｖ１，Ｖ３及びＶ４を書き込む命令である場合を想定している。なお、命令１〜命令５間は真の依存関係は無いものとする。
【０００６】
図５はIn-order実行する場合を示している。この場合、並列実行ステップＰＳ１においてプロセッサエレメントＰ１が書き込み命令１を実行し、プロセッサエレメントＰ２が命令実行しない（ＮＯＰ）。並列実行ステップＰＳ２において、プロセッサエレメントＰ１は命令２を実行し、プロセッサエレメントＰ２は書き込み命令３を実行する。並列実行ステップＰＳ３において、プロセッサエレメントＰ１は書き込み命令４を実行し、プロセッサエレメントＰ２は命令５を実行する。
【０００７】
その結果、並列実行ステップＰＳ１，ＰＳ２及びＰＳ３において書き込み命令である命令１，命令３及び命令４が実行されることにより、プログラム中における命令の実行順序に沿って処理され、並列実行ステップＰＳ３後において最終的に書き込み値Ｖ４が書き込まれることになる。
【０００８】
図６はOut-of-order実行する場合を示している。同図に示すように、並列実行ステップＰＳ１において、プロセッサエレメントＰ１が命令２を実行し、プロセッサエレメントＰ２が書き込み命令４を実行する。続く並列実行ステップＰＳ２において、プロセッサエレメントＰ１が命令１を実行し、プロセッサエレメントＰ２は命令実行しない。並列実行ステップＰＳ３において、プロセッサエレメントＰ１は書き込み命令３を実行し、プロセッサエレメントＰ２は命令５をする。
【０００９】
その結果、並列実行ステップＰＳ１，ＰＳ２及びＰＳ３において書き込み命令である命令４，命令１及び命令３が実行されることにより、プログラム内における実行順序とは異なる順序で書き込み命令が実行され、並列実行ステップＰＳ３後において最終的に書き込み値Ｖ３が書き込まれることになる。このように、本来は最終的に書き込まれるべき値（書き込み値Ｖ４）でない値（書き込み値Ｖ３）が書き込まれてしまうことがＷＡＷハザードである。
【００１０】
このＷＡＷハザードを回避する第１の方法として、同期方式（バリア同期など）がある。同期方式とは、全プロセッサエレメント(ＰＥ)が特定の同期ポイントにて他の全てのＰＥの処理が終了するまで待ち合わせ、全て揃ったところで実行を再開する、という方法である。この同期方式によって後続の命令が確実に同期ポイントの後で実行されることを保証することができる。
【００１１】
ＷＡＷハザードを回避する第２の方法として、リネーミング方式がある。リネーミング方式では書込みを行うたびにその対象に別名をつけ、以後の参照はその別名に対して行うようにする方式である。
【００１２】
なお、スーパースカラ・プロセッサにおける同期方式及びリネーミング方式に関する内容が例えば非特許文献１に開示されている。
【００１３】
【非特許文献１】「スーパースカラ・プロセッサ―マイクロプロセッサ設計における定量的アプローチ」 , マイク ジョンソン (著), Mike Johnson (原著), 村上 和彰 (翻訳)，日経BP社， 1994年8月15日発行
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、同期方式は本来不要であるはずの待ち合わせのためのサイクルを生じてしまい、並列処理による高速化を妨げてしまうという問題点があった。
【００１５】
一方、リネーミング方式は書き込み対象領域がレジスタのような比較的小さな領域では問題ないが、書き込み対象領域がメインメモリ空間のような比較的大きな領域では、リネーミングされた別名の記憶領域を確保すべく膨大な領域を必要としてしまい実現性に乏しいという問題点があった。
【００１６】
この発明は上記問題点を解決するためになされたもので、Out-of-order実行時においてもＷＡＷハザードを効果的に解消することが可能な並列処理機能を有するデータ処理装置を得ることを目的とする。
【課題を解決するための手段】
【００１７】
この発明の一実施の形態によれば、調停回路は実行予定書き込み命令に設定されたタイムスタンプ情報用ベース値に基づきタイムスタンプ情報決定値を設定する。一方、Ｓバッファ部は書き込み対象領域毎に、当該書き込み対象領域において直近に実行された書き込み命令のタイムスタンプ情報決定値を比較用タイムスタンプ情報値として格納する。
【００１８】
タイムスタンプ比較部は、Ｓバッファ部から実行予定書き込み命令の書き込み対象領域における比較用タイムスタンプ情報値を読み出し、当該比較用タイムスタンプ情報値と上記実行予定書き込み命令に設定された上記タイムスタンプ情報決定値とを比較して、その比較結果に基づき、上記実行予定書き込み命令の実行について許可／不許可を指示する制御信号を出力する。
【発明の効果】
【００１９】
この実施の形態によれば、タイムスタンプ比較部及び書き込み制御部よりなる書き込み命令実行制御手段によって、比較用タイムスタンプ情報値と実行予定書き込み命令に設定されたタイムスタンプ情報決定値とを比較して、その比較結果に基づき、実行予定書き込み命令の実行についての許可／不許可を制御している。したがって、書き込み命令実行制御手段は、直近に実行された書き込み命令よりも実行予定書き込み命令の実行順序が先の場合、当該実行予定書き込み命令の実行を不許可にすることができる。
【００２０】
その結果、本実施の形態であるデータ処理装置は、書き込み命令実行制御手段によりその実行を確実に阻止することにより、ＷＡＷハザードを確実に回避することができる効果を奏する。
【発明を実施するための最良の形態】
【００２１】
＜実施の形態＞
（コンパイル内容）
本発明の前提として、複数の命令から構成されるプログラムのコンパイル時において、複数の命令が少なくとも一つの書き込み命令を含む場合、少なくとも一つの書き込み命令それぞれにタイムスタンプ情報用ベース値（以下、単に「ベース値」と称す場合あり）が予め割り当てられることである。タイムスタンプ情報用ベース値とは上記プログラム中における命令の実行順序を規定した情報である。例えば、コンパイル時に実行順序によって昇順に設定されるように書き込み命令にタイムスタンプ情報用ベース値が対応づけて設定される。このように、タイムスタンプ情報用ベース値は書き込み命令の実行順序を示す通し番号となる。
【００２２】
また、複数のプロセッサエレメントはそれぞれ書き込み命令がループ命令群等の繰り返し命令群内にある場合、 オフセット用調整値が予め設定される。オフセット用調整値は、分岐命令（繰り返しを指示する命令コードに対応する命令）のデコード際に設定されるようにしても良く、予め設けられたオフセット用調整値格納用の特殊レジスタに設定するようにしても良い。このオフセット用調整値はループ命令群内における１回の処理で想定される最大書き込み回数（書き込み命令の実行回数）に設定される。すなわち、オフセット用調整値はループ命令群内における書き込み命令数に基づき決定される。
【００２３】
また、複数のプロセッサエレメントは、ループの分岐毎（既に実行されたループ命令群の最初の命令に戻るタイミング等）に分岐実行情報を出力する。したがって、分岐実行情報に応答し、オフセット用調整値を増量パラメータとして繰り返し回数毎にインクリメントすることにより、後に詳述するタイムスタンプ情報オフセット値を設定することができる。
【００２４】
（構成）
図１はこの発明の実施の形態であるデータ処理装置におけるＷＡＷハザード解消機能を有する部分を模試的に示す説明図である。同図はプロセッサエレメントＰ１〜Ｐｎによって、メインメモリに対する少なくとも一つの書き込み命令を含む複数の命令から構成されるプログラムを並列処理する場合を示している。プロセッサエレメントＰ１〜Ｐｎは上記複数の命令のからそれぞれに割り当てられた所定数の命令を並列に実行する。
【００２５】
プロセッサエレメントＰ１〜Ｐｎはそれぞれ自身が実行する命令を調停回路１に発行する。この際、当該命令が書き込み命令の場合は実行予定書き込み命令（書き込みデータＤＷ及び書き込みアドレスＡＷ、ベース値及びオフセット用調整値を含む。但し、オフセット用調整値は存在する場合のみ）を調停回路１に発行する。なお、書き込みアドレスＡＷは、書き込み命令の書き込みデータＤＷのメインメモリ４上における書き込み対象領域を規定するアドレスである。
【００２６】
調停回路１はプロセッサエレメントＰ１〜Ｐｎのうち一のプロセッサエレメントが実行を予定するする実行予定書き込み命令（書き込みアドレス、書き込みデータ，ベース値、オフセット用調整値を含む）を受ける。そして、調停回路１は、書き込みデータＤＷを書き込み制御部２に出力するとともに、ベース値及びオフセット用調整値に基づき算出したタイムスタンプ情報決定値ＴＭＤをタイムスタンプ比較部３の一方入力及びＳバッファ部５に出力する。このように、調停回路１はタイムスタンプ情報決定値ＴＭＤの設定手段として機能する。さらに、調停回路１は、書き込みアドレスＡＷを書き込み制御部２及びＳバッファ部５に出力する。
【００２７】
Ｓバッファ部５は書き込みアドレスＡＷで規定される書き込み対象領域単位に比較用タイムスタンプ情報値ＴＭＣを格納する。すなわち、Ｓバッファ部５は、書き込み対象領域において直近に実行された書き込み命令のタイムスタンプ情報決定値を比較用タイムスタンプ情報値ＴＭＣとして格納する。このように、Ｓバッファ部５は比較用タイムスタンプ情報値ＴＭＣの格納手段として機能する。
【００２８】
Ｓバッファ部５は、書き込みアドレスＡＷに応答して、書き込みアドレスＡＷに対応する比較用タイムスタンプ情報値ＴＭＣをタイムスタンプ比較部３の他方入力に出力する。なお、比較用タイムスタンプ情報値ＴＭＣは初期値は“０”に設定される。
【００２９】
タイムスタンプ比較部３はタイムスタンプ情報決定値ＴＭＤ及び比較用タイムスタンプ情報値ＴＭＣを比較し、その比較結果に基づき制御信号Ｓ３を書き込み制御部２及びＳバッファ部５に出力する。タイムスタンプ比較部３は、ＴＭＤ＞ＴＭＣの場合、ＷＡＷハザードは生じないと判断して書き込み許可を指示する制御信号Ｓ３を出力し、ＴＭＤ＜ＴＭＣの場合、ＷＡＷハザードが生じると判断して書き込み不許可を指示する制御信号Ｓ３を出力する。
【００３０】
書き込み制御部２は書き込みアドレスＡＷ及び書き込みデータＤＷを受け、制御信号Ｓ３に基づき書き込みデータＤＷのメインメモリ４の書き込みの実行／非実行を制御する。すなわち、書き込み制御部２は、制御信号Ｓ３が書き込み許可を指示するとき、書き込みデータＤＷによるメインメモリ４の書き込みアドレスＡＷへの書き込み処理を実行し、制御信号Ｓ３が書き込み不許可を指示するとき、書き込みデータＤＷによるメインメモリ４の書き込みアドレスＡＷへの書き込み処理を実行しない。このように、書き込み制御部２及びタイムスタンプ比較部３によって、実行予定書き込み命令の実行について許可／不許可を制御する書き込み命令実行制御手段として機能する。
【００３１】
Ｓバッファ部５は書き込みアドレスＡＷ、タイムスタンプ情報決定値ＴＭＤ及び制御信号Ｓ３を受け、制御信号Ｓ３が書き込み許可を指示するとき、書き込みアドレスＡＷに対応する比較用タイムスタンプ情報値ＴＭＣとしてタイムスタンプ情報決定値ＴＭＤに更新する。一方、制御信号Ｓ３が書き込み不許可を指示するとき、比較用タイムスタンプ情報値ＴＭＣをそのまま維持する。
【００３２】
このように、本願発明のデータ処理装置におけるＷＡＷハザード解消機能は、タイムスタンプ情報決定値ＴＭＤと比較用タイムスタンプ情報値ＴＭＣとを比較しながら、書き込みデータＤＷのメインメモリ４への書き込みの実行／非実行を制御している。すなわち、実行順序が逆順でプロセッサエレメントＰ１〜Ｐｎ間で書き込み命令が実行される場合、必ず、「ＴＭＤ＜ＴＭＣ」となるため、書き込み制御部２によって、ＷＡＷハザードを確実に阻止することができる。
【００３３】
（処理（その１））
図２は本実施の形態のデータ処理装置による実行処理例（その１）を示す説明図である。同図において、説明の都合上、２つのプロセッサエレメント（ＰＥ）Ｐ１及びＰ２が並列処理を行う場合を示している。プロセッサエレメントＰ１及びＰ２が実行対象とするプログラムは、図５及び図６で示した従来例と同様、命令１，命令２，命令３，命令４，命令５の順で実行され、命令１，命令３及び命令４は共に同一メモリの同一アドレス（「ＡＷ１」とする。）に書き込み値Ｖ１，Ｖ３及びＶ４を書き込む命令である場合を想定している。なお、命令１〜命令５間は真の依存関係は無いものとする。
【００３４】
また、命令１〜命令５は繰り返し命令群内の命令でないため、プロセッサエレメントＰ１〜Ｐｎはオフセット用調整値を発行することはない。また、調停回路１内のタイムスタンプ情報オフセット値は“０”で初期設定されている。
【００３５】
本実施の形態においては、上記のように命令１，命令３及び命令４の順で書き込み命令が実行される場合、命令１にベース値“１”が、命令３にベース値“２”が、命令４にベース値“３”が予め割り当てられている。
【００３６】
図２に示すように、並列実行ステップＰＳ１において、プロセッサエレメントＰ１が書き込み命令３を実行予定書き込み命令とし、プロセッサエレメントＰ２が命令５を実行予定命令としている。プロセッサエレメントＰ１による書き込み命令３による書き込み値Ｖ３がメインメモリ４のアドレスＡＷ１に実際に書き込まれるか否かは、調停回路１、書き込み制御部２、タイムスタンプ比較部３及びＳバッファ部５によるＷＡＷハザード解消機能の制御動作によって決定される。すなわち、実行予定書き込み命令である書き込み命令３の実行の許可／不許可が書き込み命令実行制御手段である書き込み制御部２及びタイムスタンプ比較部３を主要部としたＷＡＷハザード解消機能によって決定される。
【００３７】
並列実行ステップＰＳ１において、Ｓバッファ部５よりアドレスＡＷ１に対応する初期値“０”の比較用タイムスタンプ情報値ＴＭＣが読み出される。一方、調停回路１から実行予定書き込み命令（書き込み命令３）に対応する“２”（２（ベース値）＋０（オフセット値））を指示するタイムスタンプ情報決定値ＴＭＤが読み出される。
【００３８】
上述したように、命令１〜命令５は繰り返し命令群内の命令でないため、オフセット用調整値が発行されることないため、調停回路１内で設定されているオフセット値は“０”を維持する。
【００３９】
したがって、ＴＭＤ＞ＴＭＣとなり、タイムスタンプ比較部３は書き込み許可を指示する制御信号Ｓ３を書き込み制御部２に出力する。その結果、書き込み制御部２は制御信号Ｓ３に従い書き込み値Ｖ３をメインメモリ４のアドレスＡＷ１に書き込む。このように、書き込み制御部２及びタイムスタンプ比較部３よりなる書き込み命令実行制御手段によって、実行予定書き込み命令である書き込み命令３の実行は許可される。
【００４０】
そして、Ｓバッファ部５は許可を指示する制御信号Ｓ３に応答して、アドレスＡＷ１に対応する比較用タイムスタンプ情報値ＴＭＣをタイムスタンプ情報決定値ＴＭＤの指示する“２”に更新する。
【００４１】
続く並列実行ステップＰＳ２において、プロセッサエレメントＰ１が命令２を実行予定命令とし、プロセッサエレメントＰ２は書き込み命令４を実行予定書き込み命令とする。プロセッサエレメントＰ２による実行予定書き込み命令（書き込み命令４）による書き込み値Ｖ４がメインメモリ４のアドレスＡＷ１に書き込まれるか否かは、上記ＷＡＷハザード解消機能の制御動作によって決定される。
【００４２】
並列実行ステップＰＳ２において、Ｓバッファ部５よりアドレスＡＷ１に対応する、“２”の比較用タイムスタンプ情報値ＴＭＣが読み出される。一方、調停回路１から命令４に対応する“３”（３（ベース値）＋０（オフセット値））を指示するタイムスタンプ情報決定値ＴＭＤが読み出される。
【００４３】
したがって、ＴＭＤ＞ＴＭＣとなり、タイムスタンプ比較部３は書き込み許可を指示する制御信号Ｓ３を書き込み制御部２に出力する。その結果、書き込み制御部２は制御信号Ｓ３に従い書き込み値Ｖ４をメインメモリ４のアドレスＡＷ１に書き込む。そして、Ｓバッファ部５は許可を指示する制御信号Ｓ３に応答して、アドレスＡＷ１に対応する比較用タイムスタンプ情報値ＴＭＣをタイムスタンプ情報決定値ＴＭＤの指示する“３”に更新する。
【００４４】
その後、並列実行ステップＰＳ３において、プロセッサエレメントＰ１は書き込み命令１を実行予定書き込み命令とし、プロセッサエレメントＰ２は何も実行しない（ＮＯＰ）。プロセッサエレメントＰ１による書き込み命令１による書き込み値Ｖ１がメインメモリ４のアドレスＡＷ１に書き込まれるか否かは、上記ＷＡＷハザード解消機能の制御動作によって決定される。
【００４５】
並列実行ステップＰＳ３おいて、Ｓバッファ部５よりアドレスＡＷ１に対応する、“３”の比較用タイムスタンプ情報値ＴＭＣが読み出される。一方、調停回路１から命令１に対応する“１”（１（ベース値）＋０（オフセット値））を指示するタイムスタンプ情報決定値ＴＭＤが読み出される。
【００４６】
したがって、ＴＭＤ＜ＴＭＣとなり、タイムスタンプ比較部３は書き込み不許可を指示する制御信号Ｓ３を書き込み制御部２に出力する。その結果、書き込み制御部２は制御信号Ｓ３に従い書き込み値Ｖ１をメインメモリ４のアドレスＡＷ１への書き込みを実行しない。このように、書き込み制御部２及びタイムスタンプ比較部３よりなる書き込み命令実行制御手段によって、実行予定書き込み命令である書き込み命令１の実行は不許可とされ、実行予定書き込み命令（書き込み命令１）の実行が回避される。
【００４７】
そして、Ｓバッファ部５は不許可を指示する制御信号Ｓ３に応答して、アドレスＡＷ１に対応する比較用タイムスタンプ情報値ＴＭＣは“３”を維持する。
【００４８】
このように、この発明における実施の形態におけるデータ処理装置は、書き込み制御部２及びタイムスタンプ比較部３からなる書き込み命令実行制御手段によって、実行予定書き込み命令についての比較用タイムスタンプ情報値ＴＭＣとタイムスタンプ情報決定値ＴＭＤとの比較結果に基づき、実行予定書き込み命令の実行についての許可／不許可を制御している。したがって、上記書き込み命令実行制御手段は、直近に実行された書き込み命令よりも実行予定書き込み命令の実行順序が先の場合、当該実行予定書き込み命令の実行を確実に不許可にすることができる。
【００４９】
複数のプロセッサエレメントによるOut-of-order実行の並列処理が施される際、同一の書き込み対象領域における書き込み命令がプログラム中における実行順序と逆に行われ、先に実行すべき書き込み命令が後に実行すべき書き込み命令の実行後に行われようとする場合がある。例えば、図２で示した書き込み命令４と書き込み命令１とが該当し、本来、書き込み命令４よりも先に実行すべき書き込み命令１が書き込み命令４の実行後に実行されようとしている場合が該当する。
【００５０】
このような場合、実施の形態におけるデータ処理装置のＷＡＷハザード解消機能は、上記書き込み命令実行制御手段によりその実行を確実に阻止することにより、ＷＡＷハザードを確実に回避することができる効果を奏する。図２で示した例では、本来は最終的に書き込まれるべき値（書き込み値Ｖ４）でない値（書き込み値Ｖ１）が書き込まれる書き込み命令１の実行を不許可にすることができるため、Out-of-order実行時においてもＷＡＷハザードを確実に回避することができる。
【００５１】
この際、同期方式のような命令実行の待ち合わせのためサイクルが生じることはない。また、Ｓバッファ部５は一の書き込み対象領域に対応して一の記憶領域を設ける必要がある。しかし、リネーミング方式のように一の書き込み対象領域に対応して複数（リネーミングする必要がある個数）の記憶領域を設ける必要がない分、Ｓバッファ部５を比較的小さい記憶領域を確保するだけで構成することができる。
【００５２】
（処理（その２））
図３は本実施の形態のデータ処理装置による実行処理例（その２）を示す説明図である。同図において、説明の都合上、２つのプロセッサエレメント（ＰＥ）Ｐ１及びＰ２が並列処理を行う場合を示している。プロセッサエレメントＰ１及びＰ２が実行対象とするプログラムは、図２の例と同様、命令１，命令２，命令３，命令４，命令５の順で実行され、命令１，命令３及び命令４は共に同一メモリの同一アドレス（アドレスＡＷ１）に書き込み値Ｖ１，Ｖ３及びＶ４を書き込む命令である場合を想定している。なお、命令１〜命令５間は真の依存関係は無いものとする。また、調停回路１内のオフセット値は“０”に初期設定されている。
【００５３】
ただし、命令１〜命令５は２回繰り返して実行されるループ命令群（繰り返し命令群）を構成している点が図２で示した処理例と異なる。
【００５４】
本実施の形態においては、上記のように命令１，命令３及び命令４の順で書き込み命令が実行される場合、命令１にベース値“１”が、命令３にベース値“２”が、命令４にベース値“３”が予め割り当てられている。また、命令１〜命令５によるループ命令群に対応してオフセット用調整値は“３”（書き込み命令の個数（書き込み命令１，命令３及び命令４）を考慮）に設定される。
【００５５】
図３に示すように、１回目の繰り返し処理である並列実行ステップＰＳ１〜ＰＳ３が実行される。まず、並列実行ステップＰＳ１において、プロセッサエレメントＰ１が書き込み命令３を実行予定書き込み命令とし、プロセッサエレメントＰ２が命令５を実行予定命令とする。
【００５６】
また、１回目の繰り返し処理の開始時に“３”を指示するオフセット用調整値がプロセッサエレメントＰ１及びＰ２のうち少なくとも一方から調停回路１に発行され、調停回路１内に保持される。
【００５７】
プロセッサエレメントＰ１による実行予定書き込み命令（書き込み命令３）による書き込み値Ｖ３がメインメモリ４の所望アドレスに実際に書き込まれるか否かは、図２で示した例と同様、上記ＷＡＷハザード解消機能の制御動作によって決定される。
【００５８】
並列実行ステップＰＳ１において、Ｓバッファ部５よりアドレスＡＷ１に対応する、初期値“０”の比較用タイムスタンプ情報値ＴＭＣが読み出される。一方、調停回路１から命令３に対応する“２”（２（ベース値）＋０（オフセット値））を指示するタイムスタンプ情報決定値ＴＭＤが読み出される。なお、プロセッサエレメントＰ１〜Ｐｎより分岐実行情報が発行されるまでは、調停回路１はオフセット値の演算処理を行わないため、オフセット値は初期値“０”を維持している。
【００５９】
したがって、ＴＭＤ＞ＴＭＣとなり、タイムスタンプ比較部３は書き込み許可を指示する制御信号Ｓ３を書き込み制御部２に出力する。その結果、書き込み制御部２は制御信号Ｓ３に従い書き込み値Ｖ３をメインメモリ４のアドレスＡＷ１に書き込む。そして、Ｓバッファ部５は許可を指示する制御信号Ｓ３に応答して、アドレスＡＷ１に対応する比較用タイムスタンプ情報値ＴＭＣをタイムスタンプ情報決定値ＴＭＤの指示する“２”に更新する。
【００６０】
続く並列実行ステップＰＳ２において、プロセッサエレメントＰ１が命令２を実行予定命令とし、プロセッサエレメントＰ２は書き込み命令４を実行予定書き込み命令とする。プロセッサエレメントＰ２による実行予定書き込み命令（書き込み命令４）による書き込み値Ｖ４がメインメモリ４のアドレスＡＷ１に書き込まれるか否かは、上記ＷＡＷハザード解消機能の制御動作によって決定される。
【００６１】
並列実行ステップＰＳ２において、Ｓバッファ部５よりアドレスＡＷ１に対応する、“２”の比較用タイムスタンプ情報値ＴＭＣが読み出される。一方、調停回路１から命令４に対応する“３”（３（ベース値）＋０（オフセット値））を指示するタイムスタンプ情報決定値ＴＭＤが読み出される。
【００６２】
したがって、ＴＭＤ＞ＴＭＣとなり、タイムスタンプ比較部３は書き込み許可を指示する制御信号Ｓ３を書き込み制御部２に出力する。その結果、書き込み制御部２は制御信号Ｓ３に従い書き込み値Ｖ４をメインメモリ４のアドレスＡＷ１に書き込む。そして、Ｓバッファ部５は許可を指示する制御信号Ｓ３に応答して、アドレスＡＷ１に対応する比較用タイムスタンプ情報値ＴＭＣをタイムスタンプ情報決定値ＴＭＤの指示する“３”に更新する。
【００６３】
その後、並列実行ステップＰＳ３において、プロセッサエレメントＰ１は書き込み命令１を実行予定書き込み命令とし、プロセッサエレメントＰ２は何も実行しない。プロセッサエレメントＰ１による実行予定書き込み命令（書き込み命令１）による書き込み値Ｖ１がメインメモリ４のアドレスＡＷ１に書き込まれるか否かは、上記ＷＡＷハザード解消機能の制御動作によって決定される。
【００６４】
並列実行ステップＰＳ３おいて、Ｓバッファ部５よりアドレスＡＷ１に対応する、“３”の比較用タイムスタンプ情報値ＴＭＣが読み出される。一方、調停回路１から命令１に対応する“１”（１（ベース値）＋０（オフセット値））を指示するタイムスタンプ情報決定値ＴＭＤが読み出される。
【００６５】
したがって、ＴＭＤ＜ＴＭＣとなり、タイムスタンプ比較部３は書き込み不許可を指示する制御信号Ｓ３を書き込み制御部２に出力する。その結果、書き込み制御部２は制御信号Ｓ３に従い書き込み値Ｖ１をメインメモリ４のアドレスＡＷ１への書き込みを実行しない。そして、Ｓバッファ部５は不許可を指示する制御信号Ｓ３に応答して、アドレスＡＷ１に対応する比較用タイムスタンプ情報値ＴＭＣは“３”を維持する。
【００６６】
その後、並列実行ステップＰＳ１〜ＰＳ３からなるループ命令群の１回目の繰り返し処理が終了し、並列実行ステップＰＳ４〜ＰＳ６からなる２回目の繰り返し処理に移行する。この際、プロセッサエレメントＰ１及びＰ２から２回目の繰り返し処理を行うことを指示する分岐実行情報が発行される。すると、調停回路１は、上記分岐実行情報に応答して、プロセッサエレメントＰ１及びＰ２より受信したオフセット用調整値である“３”を増加量として演算することにより、オフセット値を初期値“０”から“３”に更新する。
【００６７】
なお、ループ命令群を実行する場合、通常、並列処理する全てのプロセッサエレメント（図３の例ではプロセッサエレメントＰ１及びＰ２）に対し、ループ命令群内の命令が割り当てられる。したがって、通常、２回目の繰り返し処理の実行に際して、並列処理する全てのプロセッサエレメントにおいて分岐実行情報が調停回路１に発行されることになる。
【００６８】
以下、並列実行ステップＰＳ４〜ＰＳ６の処理について説明する。まず、並列実行ステップＰＳ４において、並列実行ステップＰＳ１と同様の処理が行われる。
【００６９】
並列実行ステップＰＳ４において、プロセッサエレメントＰ１が書き込み命令３を実行予定書き込み命令とし、プロセッサエレメントＰ２が命令５を実行予定命令とする。プロセッサエレメントＰ１による実行予定書き込み命令（書き込み命令３）による書き込み値Ｖ３がメインメモリ４の所望アドレスに実際に書き込まれるか否かは、上記ＷＡＷハザード解消機能の制御動作によって決定される。
【００７０】
並列実行ステップＰＳ４において、Ｓバッファ部５よりアドレスＡＷ１に対応する、“３”の比較用タイムスタンプ情報値ＴＭＣが読み出される。一方、調停回路１から命令３に対応する“５”（２（ベース値）＋３（オフセット値））を指示するタイムスタンプ情報決定値ＴＭＤが読み出される。
【００７１】
このように、調停回路１は、ループ命令群内の実行予定書き込み命令に対し、タイムスタンプ情報用ベース値にタイムスタンプ情報用オフセット値を加えた値をタイムスタンプ情報決定値ＴＭＤして設定する。
【００７２】
したがって、ＴＭＤ＞ＴＭＣとなり、タイムスタンプ比較部３は書き込み許可を指示する制御信号Ｓ３を書き込み制御部２に出力する。その結果、書き込み制御部２は制御信号Ｓ３に従い書き込み値Ｖ３をメインメモリ４のアドレスＡＷ１に書き込む。そして、Ｓバッファ部５は許可を指示する制御信号Ｓ３に応答して、アドレスＡＷ１に対応する比較用タイムスタンプ情報値ＴＭＣをタイムスタンプ情報決定値ＴＭＤの指示する“５”に更新する。
【００７３】
続く並列実行ステップＰＳ５において、プロセッサエレメントＰ１が命令２を実行予定命令とし、プロセッサエレメントＰ２は書き込み命令４を実行予定書き込み命令とする。プロセッサエレメントＰ２による実行予定書き込み命令（書き込み命令４）による書き込み値Ｖ４がメインメモリ４のアドレスＡＷ１に書き込まれるか否かは、上記ＷＡＷハザード解消機能の制御動作によって決定される。
【００７４】
並列実行ステップＰＳ５において、Ｓバッファ部５よりアドレスＡＷ１に対応する、“５”の比較用タイムスタンプ情報値ＴＭＣが読み出される。一方、調停回路１から命令４に対応する“６”（３（ベース値）＋３（オフセット値））を指示するタイムスタンプ情報決定値ＴＭＤが読み出される。
【００７５】
したがって、ＴＭＤ＞ＴＭＣとなり、タイムスタンプ比較部３は書き込み許可を指示する制御信号Ｓ３を書き込み制御部２に出力する。その結果、書き込み制御部２は制御信号Ｓ３に従い書き込み値Ｖ４をメインメモリ４のアドレスＡＷ１に書き込む。そして、Ｓバッファ部５は許可を指示する制御信号Ｓ３に応答して、アドレスＡＷ１に対応する比較用タイムスタンプ情報値ＴＭＣをタイムスタンプ情報決定値ＴＭＤの指示する“６”に更新する。
【００７６】
その後、並列実行ステップＰＳ６において、プロセッサエレメントＰ１は書き込み命令１を実行予定書き込み命令とし、プロセッサエレメントＰ２は何も実行しない。プロセッサエレメントＰ１による実行予定書き込み命令（書き込み命令１）による書き込み値Ｖ１がメインメモリ４のアドレスＡＷ１に書き込まれるか否かは、上記ＷＡＷハザード解消機能の制御動作によって決定される。
【００７７】
並列実行ステップＰＳ６おいて、Ｓバッファ部５よりアドレスＡＷ１に対応する、“６”の比較用タイムスタンプ情報値ＴＭＣが読み出される。一方、調停回路１から命令１に対応する“４”（１（ベース値）＋３（オフセット値））を指示するタイムスタンプ情報決定値ＴＭＤが読み出される。
【００７８】
したがって、ＴＭＤ＜ＴＭＣとなり、タイムスタンプ比較部３は書き込み不許可を指示する制御信号Ｓ３を書き込み制御部２に出力する。その結果、書き込み制御部２は制御信号Ｓ３に従い書き込み値Ｖ１をメインメモリ４のアドレスＡＷ１への書き込みを実行しない。そして、Ｓバッファ部５は不許可を指示する制御信号Ｓ３に応答して、アドレスＡＷ１に対応する比較用タイムスタンプ情報値ＴＭＣは“６”を維持する。
【００７９】
このように本実施の形態のデータ処理装置における調停回路１は、タイムスタンプ情報オフセット値をタイムスタンプ情報用ベース値に加算してタイムスタンプ情報決定値ＴＭＤを設定することにより、プログラム中に繰り返し命令群を含む場合でも、ＷＡＷハザードを確実に回避することができる。上記図３で示した例では、並列実行ステップＰＳ３及びＰＳ４において、本来は最終的に書き込まれるべき値（書き込み値Ｖ４）でない値（書き込み値Ｖ１）が書き込まれることを確実に禁止することができるため、Out-of-order実行時においてもＷＡＷハザードを確実に回避することができる。
【００８０】
また、図３で示すように、上記ループ命令群（命令１〜命令５）が２回の繰り返し処理で終了した場合、最終的に設定されたオフセット値は“３”となる。調停回路１はこのオフセット値“３”を直近の繰り返し命令群で最終的に算出されたオフセット値として保持する。そして、移行のタイムスタンプ情報決定値ＴＭＤを求める際、このオフセット値を引き続き用いる。
【００８１】
したがって、図３で示した上記ループ命令群（命令１〜命令４）の処理の後に実行される書き込み命令のベース値は“４”以上に設定されているため、調停回路１は、上記オフセット値“３”を保持することにより、タイムスタンプ情報決定値ＴＭＤは必ず７以上（４＋３）となる。したがって、後続の命令がアドレスＡＷ１に対する実行予定書き込み命令である場合、ＴＭＤ＞ＴＭＣ（＝６）を満足するため、ループ命令群後に実行される書き込み命令の処理に悪影響を与えることはなく、ＷＡＷハザードを確実に回避する制御を引き続き続行することができる。
【００８２】
なお、プロセッサエレメントＰ１〜Ｐｎのうち複数のプロセッサエレメントから実行予定書き込み命令が送信された場合、調停回路１は複数の実行予定書き込み命令をシーケンシャルに上記ＷＡＷハザード解消機能の制御動作の対象とする。したがって、複数の書き込み命令が並列に処理されるようとされる場合においても、ＷＡＷハザードを確実に回避することができる。
【００８３】
なお、調停回路１が保持するオフセット値及びタイムスタンプ情報決定値ＴＭＤはオーバーフローしない十分大きな値を設定可能にしておくことが望ましい。
【図面の簡単な説明】
【００８４】
【図１】この発明の実施の形態であるデータ処理装置におけるＷＡＷハザード解消機能を有する部分を模試的に示す説明図である。
【図２】実施の形態のデータ処理装置による実行処理例（その１）を示す説明図である。
【図３】実施の形態のデータ処理装置による実行処理例（その２）を示す説明図である。
【図４】ＷＡＷハザード指摘用のプログラム例を示す説明図である。
【図５】従来のデータ処理装置によるＷＡＷハザード現象説明用の説明図である。
【図６】従来のデータ処理装置によるＷＡＷハザード現象説明用の説明図である。
【符号の説明】
【００８５】
１  調停回路、２  書き込み制御部、３  タイムスタンプ比較部、４  メインメモリ、５  Ｓバッファ部、Ｐ１〜Ｐｎ  プロセッサエレメント。
【図１】
2009110235.tif 000003
【図２】
2009110235.tif 000004
【図３】
2009110235.tif 000005
【図４】
2009110235.tif 000006
【図５】
2009110235.tif 000007
【図６】
2009110235.tif 000008