(57)【要約】【課題】複数のデータ処理の完了に合わせて後段のデータ処理を実行できるようにすることを目的とする。【解決手段】第一のＣＰＵコア１１０Ａは第一のデータ処理を実行し、第一のデータ処理が完了したときに第一のバリア同期レジスタ１１１Ａにビット値１を書き込む。第二のＣＰＵコア１１０Ｂは第二のデータ処理を実行し、第二のデータ処理が完了したときに第二のバリア同期レジスタ１１１Ｂにビット値１を書き込む。同期回路１２０は、第一のバリア同期レジスタ１１１Ａと第二のバリア同期レジスタ１１１Ｂとの両方のビット値が１になったときに、後段のバリア同期レジスタ１３１にビット値１を書き込む。ハードウェアブロック１３０は、バリア同期レジスタ１３１のビット値が１になったときに、後段のデータ処理を実行する。【選択図】図１
2015185129.tif 000002
【特許請求の範囲】
【請求項１】
前段のデータ処理が実行される前に初期値が書き込まれる前段レジスタを備え、前記前段のデータ処理を実行し、前記前段のデータ処理が完了した後に前記前段レジスタに完了値を上書きする複数の前段回路と、
前記初期値と前記完了値とのいずれかの値が書き込まれる後段レジスタを備え、前記後段レジスタに前記完了値が書き込まれた後に後段のデータ処理を実行する後段回路と、
前記複数の前段回路のそれぞれの前記前段レジスタに書き込まれた値に基づいて前記初期値と前記完了値とのいずれかの値を前記後段回路の前記後段レジスタに書き込む同期回路と
を備えることを特徴とするデータ処理装置。
【請求項２】
前記同期回路は、前記複数の前段回路のそれぞれの前記前段レジスタに書き込まれた値を用いて論理演算を行うことによって、前記初期値と前記完了値とのいずれかの値を前記後段回路の前記後段レジスタに書き込む
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記同期回路は、前記複数の前段回路のそれぞれの前記前段レジスタに書き込まれた値の論理積を前記後段レジスタに書き込む
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
前記同期回路は、
前記複数の前段回路のそれぞれの前記前段レジスタに書き込まれた値を用いて論理演算を行う複数の論理回路と、
前記複数の論理回路によって得られるいずれかの値を前記後段回路の前記後段レジスタに書き込む選択回路と
を備えることを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
前記データ処理装置は、同期制御回路を備え、
前記同期制御回路は、前記複数の論理回路のいずれかの論理回路を前記選択回路に指定し、
前記選択回路は、前記同期制御回路によって指定された前記論理回路によって得られた値を前記後段回路の前記後段レジスタに書き込む
ことを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記同期回路の回路構成を表す構成データを記憶する再構成メモリと、
前記再構成メモリに記憶された前記構成データに基づいて前記同期回路を再構成する再構成回路と
を備えることを特徴とする請求項１に記載のデータ処理装置。
【請求項７】
前記再構成メモリは、第一の回路構成を表す第一の構成データと、第二の回路構成を表す第二の構成データとを記憶し、
前記再構成回路は、前記第一の構成データに基づいて前記同期回路を前記第一の回路構成に再構成し、前記第一の回路構成に再構成された前記同期回路によって前記後段レジスタに前記完了値が書き込まれた後に前記第二の構成データに基づいて前記同期回路を前記第二の回路構成に再構成する
ことを特徴とする請求項６に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同期をとってデータ処理を行うデータ処理装置に関するものである。
【背景技術】
【０００２】
並列処理装置は、複数の処理装置が処理を分担して実行することによって、処理速度を向上させる。また、並列処理装置は、各処理装置の処理の完了を条件にして、次の処理装置に処理を移行する。これを実現するためには、処理装置間で同期を取る必要がある。同期を取る代表的な手法として、各処理装置の処理の実行状況を監視して各処理装置の処理の完了を待ち合わせるバリア同期という技術がある。
【０００３】
バリア同期を行うため、処理装置の処理の実行状態を示すレジスタが用いられる。但し、このレジスタは、一般的に、処理装置内においてＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からバスを介して遠い位置に配置される。そのため、バスアクセスがボトルネックになり、同期処理に時間を要していた。
【０００４】
この課題を解決するため、特許文献１は、ＣＰＵコアの内部にバリアライトレジスタとバリアリードレジスタとを配置することによって、バスボトルネックによる性能劣化に対処している。
しかし、バリアライトレジスタおよびバリアリードレジスタは同期対象のＣＰＵコアの個数分のビットを備える必要がある。また、同期対象のＣＰＵコアの個数が増えると、各ＣＰＵコアのバリアライトレジスタおよびバリアリードレジスタを他のＣＰＵコアに接続するための相互配線が増えて、配線領域が増えてしまう。そして、配線時に配線の引き回しが発生し、動作速度の低下を招く可能性がある。
【０００５】
特許文献２および特許文献３は、並列処理における同期方式に関する技術を開示している。しかし、いずれもソフトウェア処理によって同期処理の完了判定を行うものであり、同期処理に時間を要してしまう。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２００９／０９３６８０号
【特許文献２】特開平０９−０８１５２５号公報
【特許文献３】特開２００５−３１６６７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、複数のデータ処理の完了に合わせて後段のデータ処理を実行できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明のデータ処理装置は、
前段のデータ処理が実行される前に初期値が書き込まれる前段レジスタを備え、前記前段のデータ処理を実行し、前記前段のデータ処理が完了した後に前記前段レジスタに完了値を上書きする複数の前段回路と、
前記初期値と前記完了値とのいずれかの値が書き込まれる後段レジスタを備え、前記後段レジスタに前記完了値が書き込まれた後に後段のデータ処理を実行する後段回路と、
前記複数の前段回路のそれぞれの前記前段レジスタに書き込まれた値に基づいて前記初期値と前記完了値とのいずれかの値を前記後段回路の前記後段レジスタに書き込む同期回路と
を備える。
【発明の効果】
【０００９】
本発明によれば、複数のデータ処理の完了に合わせて後段のデータ処理を実行することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１におけるデータ処理装置２００の構成図である。
【図２】実施の形態１におけるデータ処理回路１００のデータ処理を示すフローチャートである。
【図３】実施の形態１におけるデータ処理回路１００のデータ処理を示すフローチャートである。
【図４】実施の形態１におけるデータ処理回路１００のデータ処理を示すフローチャートである。
【図５】実施の形態２におけるデータ処理装置２００の構成図である。
【図６】実施の形態２におけるデータ処理回路１００のデータ処理を示すフローチャートである。
【図７】実施の形態３におけるデータ処理装置２００の構成図である。
【図８】実施の形態３におけるデータ処理回路１００のデータ処理を示すフローチャートである。
【図９】実施の形態３における同期回路１２０の再構成の一例を示す図である。
【図１０】実施の形態４におけるデータ処理装置２００の構成図である。
【図１１】実施の形態４におけるデータ処理回路１００のデータ処理を示すフローチャートである。
【図１２】実施の形態４におけるデータ処理回路１００の動作例を示す図である。
【発明を実施するための形態】
【００１１】
実施の形態１．
複数のデータ処理の完了に合わせて後段のデータ処理を実行する形態について説明する。
【００１２】
図１は、実施の形態１におけるデータ処理装置２００の構成図である。
実施の形態１におけるデータ処理装置２００の構成について、図１に基づいて説明する。但し、データ処理装置２００の構成は、図１に示す構成と異なる構成であっても構わない。
【００１３】
データ処理装置２００は、データ処理を実行するコンピュータである。
データ処理装置２００は、データ処理回路１００を備える。
【００１４】
データ処理回路１００は、第一のデータ処理と第二のデータ処理とを実行した後に、後段のデータ処理を実行する回路である。
データ処理回路１００は、第一のＣＰＵコア１１０Ａ（前段回路の一例）と、第二のＣＰＵコア１１０Ｂ（後段回路の一例）と、同期回路１２０と、ハードウェアブロック１３０（後段回路の一例）とを備える。
但し、データ処理回路１００は３つ以上のＣＰＵコア１１０を備えても構わない。データ処理回路１００はＣＰＵコア１１０の代わりにハードウェアブロック１３０を備えても構わない。データ処理回路１００はハードウェアブロック１３０の代わりにＣＰＵコア１１０を備えても構わない。
ＣＰＵはＣｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略称である。ＣＰＵコア１１０はプロセッサまたはプロセッサコアともいう。
【００１５】
第一のＣＰＵコア１１０Ａは第一のデータ処理を実行する回路である。図中のＢＲはバリア同期レジスタを意味する。バリア同期レジスタはレジスタアクセス命令によって更新及び参照が可能である。
第一のＣＰＵコア１１０Ａは第一のバリア同期レジスタ１１１Ａ（前段レジスタの一例）を備える。
第一のＣＰＵコア１１０Ａは、第一のデータ処理を開始するとき（開始前の一例）に、第一のバリア同期レジスタ１１１Ａにビット値０（初期値の一例）を書き込む。
第一のＣＰＵコア１１０Ａは、第一のデータ処理が完了したとき（完了後の一例）に、第一のバリア同期レジスタ１１１Ａにビット値１（完了値の一例）を書き込む。
【００１６】
第二のＣＰＵコア１１０Ｂは第二のデータ処理を実行する回路である。
第二のＣＰＵコア１１０Ｂは第二のバリア同期レジスタ１１１Ｂ（前段レジスタの一例）を備える。
第二のＣＰＵコア１１０Ｂは、第一のＣＰＵコア１１０Ａと同様に、第二のデータ処理を開始する前に、第二のバリア同期レジスタ１１１Ｂにビット値０を書き込む。そして、第二のＣＰＵコア１１０Ｂは、第二のデータ処理が完了したときに、第二のバリア同期レジスタ１１１Ｂにビット値１を書き込む。
【００１７】
同期回路１２０は、第一のデータ処理の完了と第二のデータ処理の完了との同期をとる回路である。
同期回路１２０は論理積回路１２１（演算回路の一例）を備える。
論理積回路１２１は、第一のバリア同期レジスタ１１１Ａに書き込まれた値と第二のバリア同期レジスタ１１１Ｂに書き込まれた値との論理積をとった値を、ハードウェアブロック１３０のバリア同期レジスタ１３１に書き込む。以下、ハードウェアブロック１３０のバリア同期レジスタ１３１を後段のバリア同期レジスタ１３１という。
つまり、第一のバリア同期レジスタ１１１Ａと第二のバリア同期レジスタ１１１Ｂとの両方の値がビット値１である場合、論理積回路１２１は、後段のバリア同期レジスタ１３１にビット値１を書き込む。
また、論理積回路１２１は、第一のバリア同期レジスタ１１１Ａと第二のバリア同期レジスタ１１１Ｂとの少なくとも一方の値がビット値０である場合、論理積回路１２１は、後段のバリア同期レジスタ１３１にビット値０を書き込む。
【００１８】
ハードウェアブロック１３０は、後段のデータ処理を実行する回路である。
ハードウェアブロック１３０は後段のバリア同期レジスタ１３１（後段レジスタの一例）を備える。ハードウェアブロック１３０はバリア同期レジスタ１３１の状態を監視する。
ハードウェアブロック１３０は、後段のバリア同期レジスタ１３１にビット値１が書き込まれたとき（書き込まれた後の一例）に、後段のデータ処理を実行する。
【００１９】
バリア同期レジスタ１１１はＣＰＵコア１１０に備わるため、ＣＰＵコア１１０はバリア同期レジスタ１１１に高速にアクセスすることができる。また、バリア同期レジスタ１３１はハードウェアブロック１３０に備わるため、ハードウェアブロック１３０はバリア同期レジスタ１３１に高速にアクセスすることができる。
【００２０】
図２、図３および図４は、実施の形態１におけるデータ処理回路１００のデータ処理を示すフローチャートである。
実施の形態１におけるデータ処理回路１００のデータ処理について、図２から図４に基づいて説明する。但し、データ処理回路１００のデータ処理は図２から図４に示す処理と異なる処理であっても構わない。
【００２１】
Ｓ１０１（図２参照）において、第一のＣＰＵコア１１０Ａは、第一のバリア同期レジスタ１１１Ａにビット値０を書き込む。
また、第二のＣＰＵコア１１０Ｂは、第二のバリア同期レジスタ１１１Ｂにビット値０を書き込む。
３つ以上のＣＰＵコア１１０がある場合、各ＣＰＵコア１１０がバリア同期レジスタ１１１にビット値０を書き込む。
【００２２】
Ｓ１０１の後、第一のＣＰＵコア１１０ＡはＳ１１１およびＳ１１２を実行し、第二のＣＰＵコア１１０ＢはＳ１２１およびＳ１２２を実行する（図２参照）。
また、同期回路１２０はＳ２１０とＳ２１１とＳ２１２とを実行する（図３参照）。
さらに、ハードウェアブロック１３０はＳ３１０とＳ３２０とを実行する（図４参照）。
【００２３】
Ｓ１１１において、第一のＣＰＵコア１１０Ａは第一のデータ処理を実行する。例えば、ＣＰＵコア１１０Ａは第一のデータ処理が記述された第一のプログラムを実行する。例えば、第一のプログラムを含めて各プログラムはデータ処理装置２００のメモリ（図示省略）に記憶される。
Ｓ１１１の後、処理はＳ１１２に進む。
【００２４】
Ｓ１１２において、第一のＣＰＵコア１１０Ａは第一のバリア同期レジスタ１１１Ａにビット値１を書き込む。つまり、第一のＣＰＵコア１１０Ａは第一のデータ処理を完了したときに、第一のバリア同期レジスタ１１１Ａにビット値１を書き込む。
Ｓ１１２の後、第一のＣＰＵコア１１０Ａの処理は終了する。
【００２５】
Ｓ１２１およびＳ１２２（図２参照）において、第二のＣＰＵコア１１０Ｂは第一のＣＰＵコア１１０Ａと同様に動作する。
つまり、第二のＣＰＵコア１１０Ｂは第二のデータ処理を完了したときに、第二のバリア同期レジスタ１１１Ｂにビット値１を書き込む。
Ｓ１２２の後、第二のＣＰＵコア１１０Ｂの処理は終了する。
【００２６】
３つ以上のＣＰＵコア１１０がある場合、各ＣＰＵコア１１０が、第一のＣＰＵコア１１０Ａと第二のＣＰＵコア１１０Ｂと同様に、データ処理を並列に実行する。
【００２７】
Ｓ２１０（図３参照）において、同期回路１２０は、第一のデータ処理と第二のデータ処理との同期の完了を判定する。
第一のバリア同期レジスタ１１１Ａと第二のバリア同期レジスタ１１１Ｂとの両方の値がビット値１である場合、同期が完了している。つまり、第一のデータ処理と第二のデータ処理との両方が完了したときに、同期が完了する。
第一のバリア同期レジスタ１１１Ａと第二のバリア同期レジスタ１１１Ｂとの少なくとも一方の値がビット値０である場合、同期が完了していない。つまり、第一のデータ処理と第二のデータ処理との少なくとも一方が完了していない場合、同期が完了していない。
第一のデータ処理と第二のデータ処理との同期が完了した場合（ＹＥＳ）、処理はＳ２１１に進む。
第一のデータ処理と第二のデータ処理との同期が完了していない場合（ＮＯ）、処理はＳ２１２に進む。
【００２８】
３つ以上のＣＰＵコア１１０がある場合、同期回路１２０は、各ＣＰＵコア１１０が実行した各データ処理の同期の完了を判定する。
【００２９】
Ｓ２１１において、同期回路１２０は、後段のバリア同期レジスタ１３１にビット値１を書き込む。
Ｓ２１１の後、処理はＳ２１０に戻る。
【００３０】
Ｓ２１２において、同期回路１２０は、後段のバリア同期レジスタ１３１にビット値０を書き込む。
Ｓ２１２の後、処理はＳ２１０に戻る。
【００３１】
Ｓ２１０からＳ２１２は、同期回路１２０が論理積回路１２１を備えることによって、実現できる（図１参照）。
【００３２】
Ｓ３１０（図４参照）において、ハードウェアブロック１３０は、後段のバリア同期レジスタ１３１に書き込まれている値がビット値１であるか判定する。
後段のバリア同期レジスタ１３１に書き込まれている値がビット値１である場合（ＹＥＳ）、処理はＳ３２０に進む。
後段のバリア同期レジスタ１３１に書き込まれている値がビット値０である場合（ＮＯ）、処理はＳ３１０に戻る。
【００３３】
Ｓ３２０において、ハードウェアブロック１３０は後段のデータ処理を実行する。
つまり、ハードウェアブロック１３０は、後段のバリア同期レジスタ１３１にビット値１が書き込まれたときに、後段のデータ処理を実行する。したがって、ハードウェアブロック１３０は、第一のデータ処理の完了と第二のデータ処理の完了との同期がとられたときに、後段のデータ処理を実行する。
【００３４】
実施の形態１において、同期回路１２０は論理積回路１２１以外の論理回路を備えても構わない。
例えば、同期回路１２０は論理積回路１２１の代わりに論理和回路を備えても構わない。同期回路１２０は、論理和回路を備えることにより、第一のデータ処理と第二のデータ処理との少なくとも一方が完了したときに、後段のバリア同期レジスタ１３１にビット値１を書き込むことができる。この場合、ハードウェアブロック１３０は、第一のデータ処理と第二のデータ処理との少なくとも一方が完了したときに、後段のデータ処理を実行する。
【００３５】
実施の形態２．
同期回路１２０が複数の論理回路を備える形態について説明する。
以下、実施の形態１と異なる事項について主に説明する。説明を省略する事項については実施の形態１と同様である。
【００３６】
図５は、実施の形態２におけるデータ処理装置２００の構成図である。
実施の形態２におけるデータ処理装置２００の構成について、図２に基づいて説明する。但し、データ処理装置２００の構成は、図５に示す構成と異なる構成であっても構わない。
【００３７】
データ処理装置２００は、データ処理回路１００と、データ処理制御回路２１０と、同期制御回路２２０とを備える。
データ処理回路１００の同期回路１２０は、論理積回路１２１と、論理和回路１２２と、選択回路１２３とを備える。
【００３８】
データ処理制御回路２１０は、同期制御の実行を同期制御回路２２０に指示する。
データ処理制御回路２１０は、第一のデータ処理の実行を第一のＣＰＵコア１１０Ａに指示し、第二のデータ処理の実行を第二のＣＰＵコア１１０Ｂに指示する。
【００３９】
同期制御回路２２０は、論理積回路１２１と論理和回路１２２とのいずれかを選択回路１２３に指定する。
例えば、同期制御回路２２０は、スイッチまたは同期制御データに従って、選択回路１２３に同期制御信号を出力する。同期制御信号は、論理積回路１２１と論理和回路１２２とのいずれかを指定する信号である。この場合、データ処理装置２００は、論理積回路１２１と論理和回路１２２とのいずれかを指定するスイッチ、または、同期制御データが記憶されるメモリを備える。同期制御データは論理積回路１２１と論理和回路１２２とのいずれかの回路の識別子を含む。
【００４０】
論理積回路１２１は、第一のバリア同期レジスタ１１１Ａの値と第二のバリア同期レジスタ１１１Ｂの値との論理積を表す値を、選択回路１２３に出力する。つまり、論理積回路１２１は、第一のデータ処理と第二のデータ処理との両方が完了したときに、ビット値１を選択回路１２３に出力する。
論理和回路１２２は、第一のバリア同期レジスタ１１１Ａの値と第二のバリア同期レジスタ１１１Ｂの値との論理和を表す値を、選択回路１２３に出力する。つまり、論理和回路１２２は、第一のデータ処理と第二のデータ処理との少なくとも一方が完了したときに、ビット値１を選択回路１２３に出力する。
【００４１】
選択回路１２３は、論理積回路１２１と論理和回路１２２とのうちの同期制御回路２２０に指定された回路から出力された値を、後段のバリア同期レジスタ１３１に書き込む。
つまり、論理積回路１２１が指定された場合、選択回路１２３は、第一のデータ処理と第二のデータ処理との両方が完了したときに、後段のバリア同期レジスタ１３１にビット値１を書き込む。
また、論理和回路１２２が指定された場合、選択回路１２３は、第一のデータ処理と第二のデータ処理との少なくとも一方が完了したときに、後段のバリア同期レジスタ１３１にビット値１を書き込む。
【００４２】
ハードウェアブロック１３０は、後段のバリア同期レジスタ１３１にビット値１が書き込まれたときに、後段のデータ処理を実行する。
【００４３】
図６は、実施の形態２におけるデータ処理回路１００のデータ処理を示すフローチャートである。
実施の形態２におけるデータ処理回路１００のデータ処理について、図６、図３および図４に基づいて説明する。但し、データ処理回路１００のデータ処理は図６、図３および図４に示す処理と異なる処理であっても構わない。
【００４４】
Ｓ１０１において、データ処理制御回路２１０は、バリア同期レジスタ１１１の初期化を指示する初期化信号を第一のＣＰＵコア１１０Ａと第二のＣＰＵコア１１０Ｂとに出力する。
そして、第一のＣＰＵコア１１０Ａは第一のバリア同期レジスタ１１１Ａにビット値０を書き込み、第二のＣＰＵコア１１０Ｂは第二のバリア同期レジスタ１１１Ｂにビット値０を書き込む。
３つ以上のＣＰＵコア１１０がある場合、データ処理制御回路２１０は各ＣＰＵコア１１０に初期化信号を出力し、各ＣＰＵコア１１０はバリア同期レジスタ１１１にビット値０を書き込む。
Ｓ１０１の後、処理はＳ１０２に進む。
【００４５】
Ｓ１０２において、データ処理制御回路２１０は、同期制御の実行を指示する同期制御実行信号を同期制御回路２２０に出力する。
そして、同期制御回路２２０は、論理積回路１２１と論理和回路１２２とのいずれかを指定する同期制御信号を同期回路１２０の選択回路１２３に出力する。
Ｓ１０２の後、処理はＳ１０３に進む。
【００４６】
Ｓ１０３において、データ処理制御回路２１０は、第一のデータ処理の実行を指示するデータ処理実行信号を第一のＣＰＵコア１１０Ａに出力する。
また、データ処理制御回路２１０は、第二のデータ処理の実行を指示するデータ処理実行信号を第二のＣＰＵコア１１０Ｂに出力する。
データ処理制御回路２１０は、データ処理実行信号によってデータ処理の内容を指定してもよい。例えば、データ処理制御回路２１０は、データ処理が記述されたプログラムの先頭アドレスを指定するデータ処理実行信号を出力する。プログラムの先頭アドレスは、プログラムが記憶された記憶領域の先頭アドレスである。
３つ以上のＣＰＵコア１１０がある場合、データ処理制御回路２１０はデータ処理実行信号を各ＣＰＵコア１１０に出力する。
Ｓ１０３の後、処理はＳ１１１およびＳ１２１に進む。
【００４７】
Ｓ１１１、Ｓ１１２、Ｓ１２１およびＳ１２２は実施の形態１（図２参照）と同様である。
また、同期回路１２０の処理およびハードウェアブロック１３０の処理は実施の形態１（図３、図４参照）と同様である。
【００４８】
但し、Ｓ２１０（図３参照）において、同期回路１２０は以下のように同期の完了を判定する。
同期回路１２０は、同期制御回路２２０による論理回路の指定に基づいて、第一のデータ処理と第二のデータ処理との同期の完了を判定する。
論理積回路１２１が指定された場合、論理積回路１２１がビット値１を出力したときに、同期が完了する。つまり、第一のデータ処理と第二のデータ処理との両方が完了したときに、同期が完了する。
論理和回路１２２が指定された場合、論理和回路１２２がビット値１を出力したときに、同期が完了する。つまり、第一のデータ処理と第二のデータ処理との少なくとも一方が完了したときに、同期が完了する。
３つ以上のＣＰＵコア１１０がある場合、同期回路１２０は、各ＣＰＵコア１１０が実行した各データ処理の同期の完了を判定する。
【００４９】
Ｓ２１０からＳ２１２は、同期回路１２０が論理積回路１２１と論理和回路１２２と選択回路１２３とを備えることによって、実現できる（図５参照）。
【００５０】
実施の形態２において、同期回路１２０は３つ以上の論理回路を備えても構わない。この場合、同期制御回路２２０は３つ以上の論理回路から一つの論理回路を指定する。
また、同期回路１２０が備える論理回路は論理積回路１２１および論理和回路１２２以外の論理回路であっても構わない。
【００５１】
実施の形態３．
同期回路１２０を再構成する形態について説明する。
以下、実施の形態１および実施の形態２と異なる事項について主に説明する。説明を省略する事項については実施の形態１および実施の形態２と同様である。
【００５２】
図７は、実施の形態３におけるデータ処理装置２００の構成図である。
実施の形態２におけるデータ処理装置２００の構成について、図７に基づいて説明する。但し、データ処理装置２００の構成は、図７に示す構成と異なる構成であっても構わない。
【００５３】
データ処理装置２００は、実施の形態２（図５参照）で説明した構成に加えて、再構成回路２３０と、再構成メモリ２３１と、同期制御メモリ２２１とを備える。
【００５４】
再構成回路２３０は、回路構成を表す構成データに基づいて、同期回路１２０の回路構成を変更する。つまり、再構成回路２３０は同期回路１２０の回路構成を再構成する。
同期回路１２０は再構成可能な回路である。例えば、同期回路１２０はＦＰＧＡのようなプログラマブルロジックデバイス（ＰＬＤ）である。ＦＰＧＡはｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙの略称である。
再構成メモリ２３１は構成データを記憶するメモリである。
【００５５】
同期制御メモリ２２１は同期制御データを記憶するメモリである。同期制御データは、同期回路１２０に備わる選択回路と、選択回路に指定する論理回路と、を指定するデータである。
同期制御回路２２０は、同期制御データが指定する選択回路に、同期制御データが指定する論理回路を指定する。例えば、同期制御回路２２０は、選択回路１２３に論理積回路１２１（または論理和回路１２２）を指定する。
【００５６】
図８は、実施の形態３におけるデータ処理回路１００のデータ処理を示すフローチャートである。
実施の形態３におけるデータ処理回路１００のデータ処理について、図８、図３および図４に基づいて説明する。但し、データ処理回路１００のデータ処理は図８、図３および図４に示す処理と異なる処理であっても構わない。
【００５７】
Ｓ１０１において、データ処理制御回路２１０は、バリア同期レジスタ１１１の初期化を指示する初期化信号を第一のＣＰＵコア１１０Ａと第二のＣＰＵコア１１０Ｂとに出力する。
そして、第一のＣＰＵコア１１０Ａは第一のバリア同期レジスタ１１１Ａにビット値０を書き込み、第二のＣＰＵコア１１０Ｂは第二のバリア同期レジスタ１１１Ｂにビット値０を書き込む。
３つ以上のＣＰＵコア１１０がある場合、データ処理制御回路２１０は各ＣＰＵコア１１０に初期化信号を出力し、各ＣＰＵコア１１０はバリア同期レジスタ１１１にビット値０を書き込む。
Ｓ１０１の後、処理はＳ１０２−１に進む。
【００５８】
Ｓ１０２−１において、データ処理制御回路２１０は、同期回路１２０の再構成を指示する再構成信号を再構成回路２３０に出力する。
そして、再構成回路２３０は、再構成メモリ２３１に記憶されている再構成データに基づいて、同期回路１２０を再構成する。
Ｓ１０２−１の後、処理はＳ１０２−２に進む。
【００５９】
Ｓ１０２−２において、データ処理制御回路２１０は、同期制御の実行を指示する同期制御実行信号を同期制御回路２２０に出力する。
そして、同期制御回路２２０は、同期制御メモリ２２１に記憶されている同期制御データに基づいて、同期回路１２０に備わる選択回路に、同期回路１２０に備わる論理回路を指定する。例えば、同期制御回路２２０は、選択回路１２３に論理積回路１２１（または論理和回路１２２）を指定する（図７参照）。
Ｓ１０２−２の後、処理はＳ１０３に進む。
【００６０】
Ｓ１０３において、データ処理制御回路２１０は、第一のＣＰＵコア１１０Ａと第二のＣＰＵコア１１０Ｂとに、データ処理実行信号を出力する（図６のＳ１０３と同じ）。
３つ以上のＣＰＵコア１１０がある場合、データ処理制御回路２１０は各ＣＰＵコア１１０にデータ処理実行信号を出力する。
Ｓ１０３の後、処理はＳ１１１およびＳ１２１に進む。
【００６１】
Ｓ１１１、Ｓ１１２、Ｓ１２１およびＳ１２２は実施の形態１（図２参照）と同様である。
３つ以上のＣＰＵコア１１０がある場合、各ＣＰＵコア１１０が並列にデータ処理を実行する。
【００６２】
同期回路１２０の処理およびハードウェアブロック１３０の処理は実施の形態１（図３、図４参照）と同様である。
但し、Ｓ２１０（図３参照）において、同期完了の判定方法は、再構成後の同期回路１２０と、同期制御回路２２０による論理回路の指定とによって決まる。
【００６３】
図９は、実施の形態３における同期回路１２０の再構成の一例を示す図である。
例えば、第三のＣＰＵコア１１０Ｃが追加された場合、同期回路１２０は図９に示すように再構成することができる。
同期回路１２０は、論理積回路１２１と論理和回路１２２と選択回路１２３とから成る４組の論理回路を備える。また、同期回路１２０は選択回路１２４を備える。
同期制御回路２２０は、各選択回路１２３に論理積回路１２１または論理和回路１２２を指定する。さらに、同期制御回路２２０は、選択回路１２４にいずれかの選択回路１２３を指定する。
各選択回路１２３は、論理積回路１２１と論理和回路１２２とのうちの指定された回路から出力された値を、選択回路１２４に出力する。
そして、選択回路１２４は、指定された選択回路１２３から出力された値を、後段のバリア同期レジスタ１３１に書き込む。
【００６４】
実施の形態３により、ＣＰＵコア１１０の個数などに応じて同期回路１２０を再構成することができる。
【００６５】
実施の形態４．
同期回路１２０の再構成を複数回行う形態について説明する。
以下、実施の形態１から３と異なる事項について主に説明する。説明を省略する事項については実施の形態１から３と同様である。
【００６６】
図１０は、実施の形態４におけるデータ処理装置２００の構成図である。
実施の形態４におけるデータ処理装置２００の構成について、図１０に基づいて説明する。但し、データ処理装置２００の構成は、図１０に示す構成と異なる構成であっても構わない。
【００６７】
データ処理装置２００は、実施の形態３（図７参照）で説明した構成に加えて、データ処理制御メモリ２１１を備える。
【００６８】
データ処理制御メモリ２１１は、順番付けされた複数の処理制御データを記憶する。処理制御データは、各ＣＰＵコア１１０に実行させるデータ処理を指定するデータである。
【００６９】
また、同期制御メモリ２２１は順番付けされた複数の同期制御データを記憶し、再構成メモリ２３１は順番付けされた複数の再構成データを記憶する。
【００７０】
図１１は、実施の形態４におけるデータ処理回路１００のデータ処理を示すフローチャートである。
実施の形態４におけるデータ処理回路１００のデータ処理について、図１１、図３および図４に基づいて説明する。但し、データ処理回路１００のデータ処理は図１１、図３および図４に示す処理と異なる処理であっても構わない。
【００７１】
Ｓ１０１において、データ処理制御回路２１０は、各ＣＰＵコア１１０に初期化信号を出力する。
そして、各ＣＰＵコア１１０はバリア同期レジスタ１１１にビット値０を書き込む。
Ｓ１０１の後、処理はＳ１０２−１に進む。
【００７２】
Ｓ１０２−１において、データ処理制御回路２１０は、再構成回路２３０に再構成信号を出力する。
再構成回路２３０は、各再構成データの順番に従って、未選択の再構成データを再構成メモリ２３１から一つ選択する。
そして、再構成回路２３０は、選択した再構成データに基づいて、同期回路１２０を再構成する。
Ｓ１０２−１の後、処理はＳ１０２−２に進む。
【００７３】
Ｓ１０２−２において、データ処理制御回路２１０は、同期制御回路２２０に同期制御実行信号を出力する。
同期制御回路２２０は、各同期制御データの順番に従って、未選択の同期制御データを同期制御メモリ２２１から一つ選択する。
そして、同期制御回路２２０は、選択した同期制御データに基づいて、同期回路１２０に備わる選択回路に、同期回路１２０に備わる論理回路を指定する。
Ｓ１０２−２の後、処理はＳ１０３に進む。
【００７４】
Ｓ１０３において、データ処理制御回路２１０は、各処理制御データの順番に従って、未選択の処理制御データをデータ処理制御メモリ２１１から選択する。
そして、データ処理制御回路２１０は、選択した処理制御データに基づいて、各ＣＰＵコア１１０にデータ処理実行信号を出力する。
Ｓ１０３の後、処理はＳ１１１およびＳ１２１に進む。
【００７５】
Ｓ１１１、Ｓ１１２、Ｓ１２１およびＳ１２２は実施の形態１（図２参照）と同様である。
３つ以上のＣＰＵコア１１０がある場合、各ＣＰＵコア１１０が並列にデータ処理を実行する。
Ｓ１１２およびＳ１２２の後、処理はＳ１３０に進む。
【００７６】
Ｓ１３０において、データ処理制御回路２１０は、全てのＣＰＵコア１１０がデータ処理を完了するまで待機する。
つまり、データ処理制御回路２１０は、全てのバリア同期レジスタ１１１の値がビット値１になるまで、待機する。
Ｓ１３０の後、処理はＳ１３１に進む。
【００７７】
Ｓ１３１において、データ処理制御回路２１０は、Ｓ１０３で選択していない未選択の処理制御データがあるか判定する。
未選択の処理制御データがある場合（ＹＥＳ）、処理はＳ１０１に戻る。
未選択の処理制御データがない場合（ＮＯ）、データ処理制御回路２１０の処理は終了する。
【００７８】
同期回路１２０の処理およびハードウェアブロック１３０の処理は実施の形態１（図３、図４参照）と同様である。
但し、Ｓ２１０（図３参照）において、同期完了の判定方法は、再構成後の同期回路１２０と、同期制御回路２２０による論理回路の指定とによって決まる。
【００７９】
図１２は、実施の形態４におけるデータ処理回路１００の動作例を示す図である。
実施の形態４におけるデータ処理回路１００の動作例について、図１２に基づいて説明する。
【００８０】
再構成回路２３０は同期回路１２０を再構成する（Ｓ１０２−１）。
同期回路１２０の再構成の後、第一のＣＰＵコア１１０Ａは第一のデータ処理を実行する（Ｓ１１１）。そして、第一のＣＰＵコア１１０Ａは第一のデータ処理が完了したときに第一のバリア同期レジスタ１１１Ａにビット値１を書き込む（Ｓ１１２）。
また、第二のＣＰＵコア１１０Ｂは第二のデータ処理を実行する（Ｓ１２１）。そして、第二のＣＰＵコア１１０Ｂは第二のデータ処理が完了したときに第二のバリア同期レジスタ１１１Ｂにビット値１を書き込む（Ｓ１２２）。
各バリア同期レジスタ１１１にビット値１が書き込まれた後、同期回路１２０は後段のバリア同期レジスタ１３１にビット値１を書き込む（Ｓ２１１）。
また、再構成回路２３０は同期回路１２０を新たに再構成する（Ｓ１０２−１）。
後段のバリア同期レジスタ１３１にビット値１が書き込まれた後、ハードウェアブロック１３０は後段のデータ処理を実行する（Ｓ３２０）。
【００８１】
以上のように、後段のデータ処理と並列に、次の第一のデータ処理および次の第二のデータ処理が実行される。これにより、データ処理回路１００の各回路の処理をパイプライン化し、データ処理回路１００の動作を高速化することができる。
【００８２】
各実施の形態は、データ処理装置２００の形態の一例である。
つまり、データ処理装置２００は、各実施の形態で説明した構成要素の一部を備えなくても構わない。また、データ処理装置２００は、各実施の形態で説明していない構成要素を備えても構わない。さらに、データ処理装置２００は、各実施の形態の構成要素の一部または全てを組み合わせたものであっても構わない。
【００８３】
各実施の形態においてフローチャート等を用いて説明した処理手順は、各実施の形態に係る方法およびプログラムの処理手順の一例である。各実施の形態に係る方法およびプログラムは、各実施の形態で説明した処理手順と一部異なる処理手順で実現されても構わない。
【符号の説明】
【００８４】
１００  データ処理回路、１１０  ＣＰＵコア、１１１  バリア同期レジスタ、１２０  同期回路、１２１  論理積回路、１２２  論理和回路、１２３，１２４  選択回路、１３０  ハードウェアブロック、１３１  バリア同期レジスタ、２００  データ処理装置、２１０  データ処理制御回路、２１１  データ処理制御メモリ、２２０  同期制御回路、２２１  同期制御メモリ、２３０  再構成回路、２３１  再構成メモリ。
【図１】
2015185129.tif 000003
【図２】
2015185129.tif 000004
【図３】
2015185129.tif 000005
【図４】
2015185129.tif 000006
【図５】
2015185129.tif 000007
【図６】
2015185129.tif 000008
【図７】
2015185129.tif 000009
【図８】
2015185129.tif 000010
【図９】
2015185129.tif 000011
【図１０】
2015185129.tif 000012
【図１１】
2015185129.tif 000013
【図１２】
2015185129.tif 000014