(57)【要約】【課題】回路資源を効率よく使用することが可能な並列演算装置を提供すること。【解決手段】一実施の形態によれば、並列演算装置２０は、状態管理部２０３と、複数のプロセッサエレメント２０７と、複数のプロセッサエレメント２０７のそれぞれの接続関係を決定する複数のスイッチエレメント２０８と、を備え、各プロセッサエレメント２０７は、複数のコンテキストのそれぞれに対応する複数の動作命令を記憶し、複数の動作命令のうち状態管理部２０３によって選択されたコンテキストに対応する動作命令が読み出される命令メモリ２１１と、命令メモリ２１１から読み出された動作命令に従った演算処理内容で、複数の入力データのそれぞれに並列に演算処理を施す複数の演算ユニット２１２と、を備える。【選択図】図２
2014016894.tif 000002
【特許請求の範囲】
【請求項１】
状態に応じて複数のコンテキストの何れかを選択する状態管理部と、
前記状態管理部によって選択された前記コンテキストに基づき演算処理内容を決定する複数のプロセッサエレメントと、
前記状態管理部によって選択された前記コンテキストに基づき前記複数のプロセッサエレメントのそれぞれの接続関係を決定する複数のスイッチエレメントと、を備え、
前記各プロセッサエレメントは、
前記複数のコンテキストのそれぞれに対応する複数の動作命令を記憶し、前記複数の動作命令のうち前記状態管理部によって選択された前記コンテキストに対応する動作命令が読み出される命令メモリと、
前記命令メモリから読み出された前記動作命令に従った演算処理内容で、複数の入力データのそれぞれに並列に演算処理を施す複数の演算ユニットと、を備えた並列演算装置。
【請求項２】
前記各プロセッサエレメントは、
前記複数の入力データ、前記複数の演算ユニットによる演算結果、及び、前記複数の演算ユニットによる演算処理の中間データの何れかを一時的に記憶する複数のレジスタをさらに備えた請求項１に記載の並列演算装置。
【請求項３】
前記各プロセッサエレメントでは、
単一の入力データが供給された場合、前記複数の演算ユニットのうち何れか一つの演算ユニットが、前記命令メモリから読み出された前記動作命令に従った演算処理内容で当該入力データに演算処理を施す、請求項１に記載の並列演算装置。
【請求項４】
データ処理装置と、
前記データ処理装置の出力結果に基づいて状態に応じた回路が動的に構成される請求項１に記載の並列演算装置と、を備え、
前記データ処理装置は、
動作記述に含まれるループ記述のうちイタレーション間にデータ依存が無いループ記述を展開して動作合成し、構造記述を生成する動作合成部と、
前記構造記述を論理合成した上で配置配線するレイアウト部と、を有する、データ処理システム。
【請求項５】
前記並列演算装置は、
前記ループ記述の展開部分に対応する回路を、少なくとも一つの前記プロセッサエレメントに設けられた複数の演算ユニットにより動的に構成する、請求項４に記載のデータ処理システム。
【請求項６】
前記動作合成部は、
イタレーション間にデータ依存が無い前記ループ記述を、前記各プロセッサエレメントに設けられた前記演算ユニットの数に応じたイタレーション回数の第１ループ記述と、当該第１ループ記述をループ処理する第２ループ記述と、に分割し、前記第１ループ記述を展開する、請求項４に記載のデータ処理システム。
【請求項７】
前記動作合成部は、
多重ループ記述を構成する内側ループ及び外側ループのうち前記外側ループを展開して動作合成する、請求項４に記載のデータ処理システム。
【請求項８】
前記動作合成部は、
前記ループ記述の展開部分をベクトル変数に置き換えて前記構造記述として出力する請求項４に記載のデータ処理システム。
【請求項９】
状態に応じて複数のコンテキストの何れかを選択する状態管理部と、
前記状態管理部によって選択された前記コンテキストに基づき演算処理内容を決定する複数のプロセッサエレメントと、
前記状態管理部によって選択された前記コンテキストに基づき前記複数のプロセッサエレメントのそれぞれの接続関係を決定する複数のスイッチエレメントと、を備え、
前記各プロセッサエレメントは、
前記複数のコンテキストのそれぞれに対応する複数の動作命令を記憶し、前記複数の動作命令のうち前記状態管理部によって選択された前記コンテキストに対応する動作命令が読み出される命令メモリと、
前記命令メモリから読み出された前記動作命令に従った演算処理内容で、複数の入力データのそれぞれに並列に演算処理を施す複数の演算ユニットと、を備えた並列演算装置に対して回路データを供給するデータ処理プログラムであって、
動作記述に含まれるループ記述のうちイタレーション間にデータ依存が無いループ記述を展開して動作合成し、構造記述を生成する動作合成処理と、
前記構造記述を論理合成した上で配置配線し、前記回路データを生成するレイアウト処理と、をコンピュータに実行させるデータ処理プログラム。
【請求項１０】
前記動作合成処理は、
イタレーション間にデータ依存が無い前記ループ記述を、前記各プロセッサエレメントに設けられた前記演算ユニットの数に応じたイタレーション回数の第１ループ記述と、当該第１ループ記述をループ処理する第２ループ記述と、に分割し、前記第１ループ記述を展開する、請求項９に記載のデータ処理プログラム。
【請求項１１】
前記動作合成処理は、
多重ループ記述を構成する内側ループ及び外側ループのうち前記外側ループを展開して動作合成する、請求項９に記載のデータ処理プログラム。
【請求項１２】
前記動作合成処理は、
前記ループ記述の展開部分をベクトル変数に置き換えて前記構造記述として出力する請求項９に記載のデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラムに関する。
【背景技術】
【０００２】
疎粒度の動的再構成プロセッサ（並列演算装置；アレイ型プロセッサ）は、外部から入力されたオブジェクトコードに基づいて、複数のプロセッサエレメントのそれぞれの処理内容及び接続関係を動的に切り替えて回路を構成している。それにより、動的再構成プロセッサは、回路資源を再利用することができるため、小さな回路規模で複雑な演算処理を実行することができる。動的再構成プロセッサの構成例は、例えば、特許文献１及び特許文献２に開示されている。
【０００３】
その他、特許文献３、特許文献４及び特許文献５には、一つ動作命令で複数の演算処理を並列に実行するＳＩＭＤ(Single Instruction Multiple Data)型プロセッサが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３９２１３６７号明細書
【特許文献２】特許第３８６１８９８号明細書
【特許文献３】特許第４２９２１９７号明細書
【特許文献４】特許第４６９９００２号明細書
【特許文献５】特表２０１０−５３９５８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の動的再構成プロセッサ（並列演算装置；アレイ型プロセッサ）は、複数のデータを並列処理する場合、当該複数のデータに対応する複数のプロセッサエレメントのそれぞれに処理内容に関する動作命令を与えるとともに、複数のプロセッサエレメントの接続関係を決める複数のスイッチエレメントのそれぞれに接続関係に関する動作命令を与えなければならなかった。これは、ループ記述の展開部分に対応する回路を動的に構成する場合でも同様であった。そのため、従来の動的再構成プロセッサは、複数のプロセッサエレメントのそれぞれの処理内容及び接続関係に関する非常に多くの命令をメモリに保持しなければならず、回路資源を効率よく使用することができないという問題があった。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、並列演算装置は、状態管理部と、複数のプロセッサエレメントと、前記複数のプロセッサエレメントのそれぞれの接続関係を決定する複数のスイッチエレメントと、を備え、前記各プロセッサエレメントは、複数のコンテキストのそれぞれに対応する複数の動作命令を記憶し、前記複数の動作命令のうち前記状態管理部によって選択された前記コンテキストに対応する動作命令が読み出される命令メモリと、前記命令メモリから読み出された前記動作命令に従った演算処理内容で、複数の入力データのそれぞれに並列に演算処理を施す複数の演算ユニットと、を備える。
【０００８】
また、一実施の形態によれば、データ処理プログラムは、状態管理部と、複数のプロセッサエレメントと、前記複数のプロセッサエレメントのそれぞれの接続関係を決定する複数のスイッチエレメントと、を備え、前記各プロセッサエレメントは、複数のコンテキストのそれぞれに対応する複数の動作命令を記憶し、前記複数の動作命令のうち前記状態管理部によって選択された前記コンテキストに対応する動作命令が読み出される命令メモリと、前記命令メモリから読み出された前記動作命令に従った演算処理内容で、複数の入力データのそれぞれに並列に演算処理を施す複数の演算ユニットと、を備えた並列演算装置に対して回路データを供給するデータ処理プログラムであって、動作記述に含まれるループ記述のうちイタレーション間にデータ依存が無いループ記述を展開して動作合成し、構造記述を生成する動作合成処理と、前記構造記述を論理合成した上で配置配線し、前記回路データを生成するレイアウト処理と、をコンピュータに実行させる。
【発明の効果】
【０００９】
前記一実施の形態によれば、回路資源を効率よく使用することが可能な並列演算装置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１にかかるアレイ型プロセッサの構成例を示すブロック図である。
【図２】実施の形態１にかかるプロセッサエレメント及びスイッチエレメントの構成例を示す図である。
【図３】実施の形態２にかかるデータ処理装置の論理構成の一例を示すブロック図である。
【図４】実施の形態２にかかる動作合成部を説明するための概念図である。
【図５Ａ】パイプライン化を説明するための概念図である。
【図５Ｂ】パイプライン化を説明するための概念図である。
【図５Ｃ】パイプライン化を説明するための概念図である。
【図６】データハザードを説明するための概念図である。
【図７】実施の形態２にかかるプロセッサエレメントによるＳＩＭＤ演算の処理内容を説明するための図である。
【図８】実施の形態２にかかるアレイ型プロセッサによる条件分岐の実行方法を説明するための図である。
【図９】実施の形態２にかかる動作合成部の動作を示すフローチャートである。
【図１０】実施の形態２にかかるデータ処理装置のハードウェア構成の一例を示すブロック図である。
【図１１】実施の形態２にかかるデータ処理システムの構成例を示すブロック図である。
【図１２】ループ記述の一例を示す図である。
【図１３】実施の形態４にかかる動作合成部によるＳＩＭＤ命令の割り当て方法を説明するための図である。
【図１４】実施の形態４にかかる動作合成部によるＳＩＭＤ命令の割り当て方法を説明するための図である。
【図１５】実施の形態４にかかる動作合成部によるＳＩＭＤ命令の割り当て方法を説明するための図である。
【図１６】実施の形態４にかかる動作合成部の動作を示すフローチャートである。
【図１７】実施の形態４にかかる動作合成部の動作を示すフローチャートである。
【図１８】従来のＳＩＭＤ型プロセッサによる条件分岐の実行方法を説明するための図である。
【図１９】従来の動的再構成プロセッサによる条件分岐の実行方法を説明するための図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照しつつ、実施の形態について説明する。なお、図面は簡略的なものであるから、この図面の記載を根拠として実施の形態の技術的範囲を狭く解釈してはならない。また、同一の要素には、同一の符号を付し、重複する説明は省略する。
【００１２】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１３】
さらに、以下の実施の形態において、その構成要素（動作ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等（個数、数値、量、範囲等を含む）についても同様である。
【００１４】
＜実施の形態１＞
図１は、実施の形態１にかかるアレイ型プロセッサ（並列演算装置）２０の構成例を示すブロック図である。本実施の形態にかかるアレイ型プロセッサ２０は、一つの動作命令で複数の演算処理を並列に実行すること（ＳＩＭＤ演算）が可能なプロセッサエレメントを複数備える。それにより、本実施の形態にかかるアレイ型プロセッサ２０は、従来よりも少ない命令数で並列に演算処理を行う回路（並列演算処理回路）を動的に構成することができるため、回路資源を効率よく使用することができる。以下、具体的に説明する。
【００１５】
図１に示すアレイ型プロセッサ２０は、状態に応じた回路が動的に構成されるプロセッサ（動的再構成プロセッサ）である。このアレイ型プロセッサ２０は、Ｉ／Ｆ部２０１と、コードメモリ２０２と、状態管理部２０３と、マトリクス回路部２０５と、データメモリ部２０６と、を備える。マトリクス回路部２０５には、複数のプロセッサエレメント（ＰＥ）２０７と、複数のスイッチエレメント（ＳＷＥ）２０８と、がそれぞれマトリクス状に配置されている。データメモリ部２０６は、複数のメモリユニット２１０により構成される。複数のメモリユニット２１０は、例えば、マトリクス回路部２０５を囲むように配置されている。
【００１６】
Ｉ／Ｆ部２０１には、外部からオブジェクトコード（回路データ）１５が供給される。コードメモリ２０２は、ＲＡＭ等の情報記憶媒体によって構成され、Ｉ／Ｆ部２０１に供給されたオブジェクトコード１５を記憶する。
【００１７】
なお、オブジェクトコード１５には、複数のコンテキスト（後述する複数のデータパスに対応）と、状態遷移条件（後述する状態遷移マシンに対応）と、が含まれている。各コンテキストには、複数のプロセッサエレメント２０７及び複数のスイッチエレメント２０８のそれぞれへの動作命令が設定されている。また、状態遷移条件には、状態に応じて複数のコンテキストの何れかを選択する状態管理部２０３への動作命令が設定されている。
【００１８】
状態管理部２０３は、状態遷移マシンの状態に応じて複数のコンテキストの何れかを選択し、選択したコンテキストに応じた複数の命令ポインタ（ＩＰ）をそれぞれ複数のプロセッサエレメント２０７に出力する。
【００１９】
図２は、一組のプロセッサエレメント２０７及びスイッチエレメント２０８の構成例を示す図である。プロセッサエレメント２０７は、命令メモリ２１１と、複数の演算ユニット２１２と、複数のレジスタ２１３と、を有する。スイッチエレメント２０８は、配線接続スイッチ２１４〜２１８を有する。なお、プロセッサエレメント２０７内の各要素は、図示していないが、データ配線を介してデータの受け渡しを行い、フラグ配線を介してフラグの受け渡しを行う。
【００２０】
本実施の形態では、プロセッサエレメント２０７が、１６ビット幅のデータに演算処理を施す演算ユニット２１２を８個有し、１６ビット幅のデータを保持する２１３を８個有する場合を例に説明する。それに伴って、各データ配線は１２８ビット幅（＝１６ビット幅×８個分）を有し、各フラグ配線は８ビット幅（＝１ビット幅×８個分）を有する。
【００２１】
プロセッサエレメント２０７は、データ配線を介して他のプロセッサエレメント２０７から供給されたデータに演算処理を施し、演算結果（データ）をデータ配線を介して別のプロセッサエレメント２０７に出力する。また、プロセッサエレメント２０７では、フラグ配線を介して他のプロセッサエレメント２０７からフラグが供給され、フラグ配線を介して別のプロセッサエレメント２０７にフラグが出力される。例えば、プロセッサエレメント２０７は、他のプロセッサエレメント２０７から供給されたフラグに基づいて演算処理の開始の有無を決定し、演算処理の結果に応じたフラグを別のプロセッサエレメント２０７に出力する。
【００２２】
命令メモリ２１１には、複数のコンテキストのそれぞれに対応する動作命令が記憶されている。そして、命令メモリ２１１では、状態管理部２０３からの命令ポインタ（ＩＰ）に基づいて、複数の動作命令のうち何れかの動作命令が読み出される。プロセッサエレメント２０７及びスイッチエレメント２０８は、命令メモリ２１１から読み出された動作命令に従って動作を実行する。
【００２３】
各演算ユニット２１２は、命令メモリ２１１から読み出された動作命令に従った演算処理内容で、入力されたデータに演算処理を施す。ここで、８個の演算ユニット２１２は、それぞれ、命令メモリ２１１から読み出された一つの動作命令（ＳＩＭＤ命令９に従った演算処理内容で、複数の入力データのそれぞれに並列に演算処理を施す。
【００２４】
各レジスタ２１３は、対応する演算ユニット２１２に入力されるデータ、対応する演算ユニット２１２による演算結果、対応する演算ユニット２１２による演算処理の中間データ等を一時的に記憶する。なお、各演算ユニット２１２の演算結果は、レジスタ２１３を介さずに直接プロセッサユニットの外部に出力されても良い。
【００２５】
配線接続スイッチ２１４〜２１６は、命令メモリ２１１から読み出された動作命令に従って、対応するプロセッサエレメント２０７（当該動作命令を格納している命令メモリ２１１を備えたプロセッサエレメント２０７）と、他のプロセッサエレメント２０７（例えば、隣接するプロセッサエレメント２０７）と、をデータ配線で接続する。
【００２６】
配線接続スイッチ２１６〜２１８は、命令メモリ２１１から読み出された動作命令に従って、対応するプロセッサエレメント２０７（当該動作命令を格納している命令メモリ２１１を備えたプロセッサエレメント２０７）と、他のプロセッサエレメント２０７（例えば、隣接するプロセッサエレメント２０７）と、をフラグ配線で接続する。
【００２７】
なお、配線接続スイッチ２１４〜２１６は、命令メモリ２１１から読み出された動作命令に従って、配線を接続する。また、配線接続スイッチ２１６は、データ配線やフラグ配線の交差部に配置される。
【００２８】
このように、各プロセッサエレメント２０７は、一つの動作命令で複数の演算処理を並列に実行すること（ＳＩＭＤ演算）が可能である。換言すると、本実施の形態にかかるアレイ型プロセッサ２０は、従来と異なり、一つのプロセッサエレメントを用いて複数の演算処理を並列に実行することが可能である。
【００２９】
それにより、本実施の形態にかかるアレイ型プロセッサ２０は、従来よりも少ない命令数で並列に演算処理を行う回路（並列演算処理回路）を動的に構成することができるため、回路資源を効率よく使用することができる。このアレイ型プロセッサ２０は、
【００３０】
当然ながら、各プロセッサエレメント２０７は、複数の演算ユニット２１２のうち何れか一つを活性化することにより、従来と同様に、一つの動作命令で一つの演算処理を単独で実行すること（スカラー演算）も可能である。
【００３１】
なお、従来の各プロセッサエレメントは、一つの動作命令で一つの演算処理しか実行できない。換言すると、従来のアレイ型プロセッサは、複数のプロセッサエレメントを用いなければ複数の演算処理を並列に実行することができない。それにより、従来のアレイ型プロセッサは、多数の動作命令で並列演算処理回路を動的に構成する必要があるため、回路資源を効率よく使用することができない。
【００３２】
＜実施の形態２＞
本実施の形態では、アレイ型プロセッサ２０に供給されるオブジェクトコード１５を生成するデータ処理装置１０について説明する。図３は、本実施の形態にかかるデータ処理装置１０の論理構成の一例を示すブロック図である。
【００３３】
図３に示すデータ処理装置１０は、動作合成部（動作合成装置）１００と、オブジェクトコード生成部（レイアウト部）１０９と、を備える。動作合成部１００は、ループ処理部１０８と、ＤＦＧ生成部１０１と、スケジューリング部１０２と、アロケーション部１０３と、ＦＳＭ生成部１０４と、データパス生成部１０５と、パイプライン構成生成部１０６と、ＲＴＬ記述生成部１０７と、を有する。
【００３４】
動作合成部１００は、図４の概念図にも示すように、Ｃ言語等の回路の動作に関する記述（動作記述：以下、ソースコードと称す）１１から、状態遷移マシン（ＦＳＭ；Finite State Machine）と、状態遷移マシン中の複数の状態のそれぞれに対応する複数のデータパスと、を生成し、回路の構造に関する記述（構造記述；以下、ＲＴＬ記述と称す）１４として出力する部である。
【００３５】
ループ処理部１０８は、ソースコード１１の構文を解析し、ソースコード１１に含まれる複数のループ記述のうち所定のループ記述を展開（アンロール）する。本実施の形態では、ループ処理部１０８が、ユーザーによって指定された所定のループ記述を展開（アンロール）している。なお、ループ処理部１０８は、複数のループ記述のうち所定のループ記述を自動で選択して展開する構成であっても良い。
【００３６】
例えば、ループ処理部１０８は、イタレーション間にデータ依存が無いループ記述を、展開（アンロール）する。換言すると、ループ処理部１０８は、複数のループ処理間のそれぞれにデータ依存が無いループ記述を、展開（アンロール）する。なお、この展開部分は、最終的に並列に演算処理される回路（並列演算処理回路）として動作合成される。この並列演算処理回路は、一つの動作命令で複数の演算処理を並列に実行可能なプロセッサエレメント２０７と、スイッチエレメント２０８と、を一つ又は複数組み合わせて動的に構成されることとなる。
【００３７】
ＤＦＧ生成部１０１は、ソースコード１１の解析結果及びループ処理部１０８による処理結果に基づき、演算等の各種処理機能を表す節点と、データの流れを表す枝と、からなるＤＦＧ（Data Flow Graff）を作成する。
【００３８】
スケジューリング部１０２は、合成制約１２及び回路情報１３に基づいてＤＦＧ中の複数の節点をそれぞれいつ実行させるか決定（スケジューリング）し、ＣＤＦＧ（Control Data Flow Graff）として出力する。アロケーション部１０３は、合成制約１２及び回路情報１３に基づいて、ＣＤＦＧ中の枝で表されるデータを一時記憶するためのレジスタ及びメモリユニットを決定するとともに、ＣＤＦＧ中の節点で表される演算をどの演算ユニットを用いて行うかを決定する。
【００３９】
なお、合成制約１２には、回路規模、資源量、遅延制約（タイミング制約；クロック周波数）、パイプライン化対象の情報等が設定されている。また、回路情報１３には、例えば、後述するアレイ型プロセッサ２０に設けられた各資源（演算ユニット２１２，レジスタ２１３，メモリユニット２１０等）の規模及び遅延等の情報が設定されている。
【００４０】
ここで、スケジューリング部１０２及びアロケーション部１０３は、展開対象のループ記述を除く複数のループ記述のうちパイプライン化対象のループ記述に対し、専用の合成制約及び回路情報を与えたり、フォワーディング（バイパシング）処理（後述）を施したりして、それぞれスケジューリング及びアロケーションを行う。本実施の形態では、パイプライン化対象のループ記述がユーザーにより指定されている。なお、パイプライン化対象のループ記述は、データ処理装置１０によって自動で指定されても良い。
【００４１】
以下、図５Ａ〜図５Ｃを参照して、ループ記述のパイプライン化について簡単に説明する。図５Ａは、ループ記述（状態数＝４）をパイプライン化しない場合の処理内容を示す概念図である。図５Ｂは、ループ記述の４状態を２状態に折り畳んでパイプライン化した場合の処理内容を示す概念図である。図５Ｃは、ループ記述の４状態を１状態に折り畳んでパイプライン化した場合の処理内容を示す概念図である。なお、本例では、パイプライン段数が４段、ループ回数（イタレーション回数）が１０回であるものとする。また、本例では、１ステージ（一つの処理のまとまり）を実行するために１実行サイクル（クロックサイクル）が必要であるものとする。
【００４２】
図５Ａに示すように、ループ記述（状態数＝４）をパイプライン化しない場合、まず、１回目のループ処理である４ステージＡ１，Ｂ１，Ｃ１，Ｄ１が順に実行される。その後、２回目のループ処理である４ステージＡ２，Ｂ２，Ｃ２，Ｄ２が順に実行される。このような処理が、１０回目のループ処理まで繰り返される。その結果、ループ処理を実行するために必要な実行サイクル数は、４０実行サイクルとなる。
【００４３】
図５Ｂに示すように、ループ記述の４状態を２状態に折り畳んでパイプライン化した場合、まず、１回目のループ処理である４ステージＡ１，Ｂ１，Ｃ１，Ｄ１が順に実行される。また、１回目のループ処理開始から２ステップ（２実行サイクル）遅れて、２回目のループ処理である２ステージＡ２，Ｂ２，Ｃ２，Ｄ２が順に実行される。同様にして、直前のループ処理開始から２ステップ（２実行サイクル）遅れて、３〜１０回目の各ループ処理の４ステージが順に実行される。それにより、例えば、２ステージＣ１，Ａ２や２ステージＤ１，Ｂ２がそれぞれ並列実行される。また、例えば、２ステージＣ２，Ａ３や２ステージＤ２，Ｂ３がそれぞれ並列実行される。その結果、ループ処理を実行するために必要な実行サイクル数は、１８実行サイクルに初期化（エピローグ）及び後処理（プロローグ）分を加えた実行サイクル数のみとなる。
【００４４】
図５Ｃに示すように、ループ記述の４状態を１状態に折り畳んでパイプライン化した場合、まず、１回目のループ処理である４ステージＡ１，Ｂ１，Ｃ１，Ｄ１が順に実行される。また、１回目のループ処理開始から１ステップ（１実行サイクル）遅れて、２回目のループ処理である４ステージＡ２，Ｂ２，Ｃ２，Ｄ２が順に実行される。同様にして、直前のループ処理開始から１ステップ（１実行サイクル）遅れて、３〜１０回目の各ループ処理の４ステージが順に実行される。それにより、例えば、４ステージＤ１，Ｃ２，Ｂ３，Ａ４や４ステージＤ２，Ｃ３，Ｂ４，Ａ５が並列実行される。その結果、ループ処理を実行するために必要な実行サイクル数は、７実行サイクルに初期化（エピローグ）及び後処理（プロローグ）分を加えた実行サイクル数のみとなる。なお、ループ記述の状態数が１状態に折り畳まれた場合、ループ記述の他に記述が無ければ、初期化や後処理を除いて状態遷移マシンが生成されないこととなる。
【００４５】
上記のように、ループ記述をパイプライン化すると実行サイクル数が抑制されるため、スループット（処理能力）は向上する。
【００４６】
なお、ループ記述のパイプライン化の詳細は、本発明者らによって発表された「Takao Toi, Noritsugu Nakamura, Yoshinosuke Kato, Toru Awashima, Kazutoshi Wakabayashi, "High-level Synthesis Challenges for Mapping a Complete Program on a Dynamically Reconfigurable Processor", IPSJ Transaction on System LSI Design Methodology, Feb, 2010, vol.3, pp91-104」にも開示されている。
【００４７】
ただし、ループ記述をパイプライン化する場合には、データハザードが発生するおそれがあるためそれを回避する必要がある。以下、図６を参照して、データハザードについて簡単に説明する。本例では、図５Ｃと同条件であると仮定して説明する。
【００４８】
まず、１回目のループ処理である４ステージＡ１（Ｒｅａｄ）、Ｂ１（Ｒｅａｄ）、Ｃ１（Ｗｒｉｔｅ）、Ｄ１（Ｒｅａｄ）が順に実行される。また、１回目のループ処理開始から１ステップ遅れて、２回目のループ処理である４ステージＡ２（Ｒｅａｄ）、Ｂ２（Ｒｅａｄ）、Ｃ２（Ｗｒｉｔｅ）、Ｄ２（Ｒｅａｄ）が順に実行される。ここで、ステージＡ２のデータ読み出し処理は、ステージＣ１のデータ書き込み処理よりも先に行われるため、意図しないデータを読み出してしまう可能性がある。このような問題をデータハザードと称す。
【００４９】
このデータハザードを回避するため、例えば、動作合成のスケジューリング時にフォワーディング（バイパシング）処理を施すことにより、ステージＡ２のデータ読み出し処理がステージＣ１のデータ書き込み処理よりも先に実行されないようにする。
【００５０】
図３に戻り、ＦＳＭ生成部１０４は、スケジューリング部１０２及びアロケーション部１０３の結果に基づき、状態遷移マシンを生成する。また、データパス生成部１０５は、スケジューリング部１０２及びアロケーション部１０３の結果に基づき、状態遷移マシンに含まれる複数の状態のそれぞれに対応する複数のデータパスを生成する。さらに、パイプライン構成生成部１０６は、パイプライン化対象のループ記述に含まれる複数の状態を折り畳んでパイプライン化する。
【００５１】
ＲＴＬ記述生成部１０７は、上記した状態遷移マシンと、当該状態遷移マシンに含まれる複数の状態のそれぞれに対応する複数のデータパスと、をＲＴＬ記述１４として出力する。
【００５２】
その後、オブジェクトコード生成部１０９は、ＲＴＬ記述１４を読み込んでテクノロジマッピングや配置配線等を行ってネットリストを生成し、バイナリ変換してオブジェクトコード１５として出力する。
【００５３】
このように、本実施の形態にかかる動作合成部１００は、イタレーション間にデータ依存が無いループ記述を、展開（アンロール）して並列演算処理回路として動作合成する。そして、アレイ型プロセッサ２０は、この並列演算処理回路を、一つの動作命令で複数の演算処理を並列に実行可能なプロセッサエレメント２０７と、スイッチエレメント２０８と、を一つ又は複数組み合わせて動的に構成する。それにより、アレイ型プロセッサ２０は、従来よりも少ない動作命令で当該並列演算処理回路を動的に構成することができるため、回路資源を効率よく使用することができる。
【００５４】
図７は、プロセッサエレメント２０７によるＳＩＭＤ演算の処理内容を説明するための概念図である。図７に示すように、プロセッサエレメント２０７では、８個の演算ユニット２１２が、一つの動作命令（ＳＩＭＤ命令）ＶＡＤＤに従って、１６ビット幅のデータＡ０〜Ａ７と、１６ビット幅のデータＢ０〜Ｂ７と、をそれぞれ加算して、出力データＸ０〜Ｘ７を出力している。
【００５５】
続いて、図８は、アレイ型プロセッサ２０による条件分岐の実行方法を説明するための図である。図８に示すように、条件分岐は、後述の動作合成時にマルチプレクサ（図中の▲▼）を含むデータパスとして合成される。それにより、ある一つのデータに対して条件分岐が複数存在する場合でも、それぞれの条件分岐が並列に実行された後にマルチプレクサによって何れかが選択されるため、実行サイクル数の増大は抑制される。条件分岐を含むループ記述が展開（アンロール）された場合、このような動作が、並列展開されたデータのそれぞれに対して並列に行われる。なお、マルチプレクサによる選択はフラグ等により制御される。
【００５６】
（フローチャート）
続いて、図９を参照して、データ処理装置１０内の動作合成部１００の動作について説明する。図９は、動作合成部１００の動作を示すフローチャートである。
【００５７】
まず、動作合成部１００は、ソースコード１１を受け取って構文解析を行った後（Ｓ１０１）、動作記述言語レベルの最適化を行う（Ｓ１０２）。
【００５８】
このとき、動作合成部１００は、ソースコード１１に含まれる複数のループ記述のうち所定のループ記述を展開（アンロール）する（Ｓ１０３）。
【００５９】
例えば、動作合成部１００は、イタレーション間にデータ依存が無いループ記述を、展開（アンロール）する。換言すると、動作合成部１００は、複数のループ処理間のそれぞれにデータ依存が無いループ記述を、展開（アンロール）する。なお、この展開部分は、最終的に並列に演算処理される回路（並列演算処理回路）として動作合成される。この並列演算処理回路は、一つの動作命令で複数の演算処理を並列に実行可能なプロセッサエレメント２０７と、スイッチエレメント２０８と、を複数組み合わせて動的に構成されることとなる。
【００６０】
その後、動作合成部１００は、各種処理機能を表す接点とデータの流れを表す枝とを割り当てて（Ｓ１０４）、ＤＦＧを作成する（Ｓ１０５）。
【００６１】
次に、動作合成部１００は、合成制約１２及び回路情報１３に従ってスケジューリング（Ｓ１０６）及びアロケーション（Ｓ１０７）を行う。
【００６２】
次に、動作合成部１００は、スケジューリング及びアロケーションの結果に基づき、状態遷移マシンと、当該状態遷移マシンに含まれる複数の状態のそれぞれに対応する複数のデータパスと、を生成する（Ｓ１０８，Ｓ１０９）。さらに、動作合成部１００は、パイプライン化対象のループ記述に含まれる複数の状態を折り畳んでパイプライン化する（Ｓ１１０）。その後、動作合成部１００は、状態遷移マシン及び複数のデータパスに対し、ＲＴレベルや論理レベルの最適化を行った後（Ｓ１１１）、ＲＴＬ記述１４として出力する（Ｓ１１２）。
【００６３】
このように、本実施の形態にかかる動作合成部１００は、イタレーション間にデータ依存が無いループ記述を、展開（アンロール）して並列演算処理回路として動作合成する。その後、アレイ型プロセッサ２０は、この並列演算処理回路を、一つの動作命令で複数の演算処理を並列に実行可能なプロセッサエレメント２０７と、スイッチエレメント２０８と、を一つ又は複数組み合わせて動的に構成する。それにより、アレイ型プロセッサ２０は、従来よりも少ない動作命令で当該並列演算処理回路を動的に構成することができるため、回路資源を効率よく使用することができる。
【００６４】
（データ処理装置１０のハードウェア構成例）
なお、本実施の形態にかかる動作合成部１００及びそれを備えたデータ処理装置１０は、例えば、汎用的なコンピュータシステムにより実現可能である。以下、図１０を用いて簡単に説明する。
【００６５】
図１０は、本実施の形態にかかるデータ処理装置１０のハードウェア構成の一例を示すブロック図である。コンピュータ１１０は、例えば、制御装置であるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１１と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１２と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１３と、外部とのインターフェースであるＩＦ（Ｉｎｔｅｒ  Ｆａｃｅ）１１４と、不揮発性記憶装置の一例であるＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１１５と、を備える。コンピュータ１１０は、その他図示しない構成として、キーボードやマウス等の入力装置やディスプレイ等の表示装置を備えていても良い。
【００６６】
ＨＤＤ１１５には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）（不図示）と、動作記述情報１１６と、回路情報１１７と、データ処理プログラム１１８と、が記憶されている。動作記述情報１１６は、回路の動作に関する情報であって、例えば、図３におけるソースコード（動作記述）１１に相当する。回路情報１１７は、回路の構造に関する情報であって、図３におけるオブジェクトコード１５に相当する。データ処理プログラム１１８は、本実施の形態にかかる動作合成処理が実装されたコンピュータプログラムである。
【００６７】
ＣＰＵ１１１は、コンピュータ１１０における各種処理、ＲＡＭ１１２，ＲＯＭ１１３，ＩＦ１１４及びＨＤＤ１１５へのアクセス等を制御する。コンピュータ１１０は、ＣＰＵ１１１がＨＤＤ１１５に記憶されたＯＳ及びデータ処理プログラム１１８を読み込み、実行する。これにより、コンピュータ１１０は、本実施の形態にかかる動作合成部１００及びそれを備えたデータ処理装置１０を実現する。
【００６８】
（データ処理システム１）
図１１は、データ処理装置１０及びアレイ型プロセッサ２０を備えたデータ処理システム１の構成例を示すブロック図である。
【００６９】
図１１に示すデータ処理システム１において、データ処理装置１０は、ソースコード１１、合成制約１２及び回路情報１３を読み込んでオブジェクトコード１５を生成する。アレイ型プロセッサ２０は、データ処理装置１０から出力されたオブジェクトコード１５に基づいて状態毎に動的に回路構成を切り替えながら、外部から供給される処理データに演算処理を施し結果データとして出力する。
【００７０】
＜実施の形態３＞
実施の形態３では、展開対象のループ記述の具体例について説明する。図１２は、ソースコード１１に含まれるループ記述の一例を示す図である。図１２の例では、ループ記述の一例として多重ループが記述されている。なお、以下の説明では、内側のループ記述を内側ループと称し、外側のループ記述を外側ループと称す。
【００７１】
動作合成部１００は、イタレーション間にデータ依存が有るループ記述の全部又は一部をパイプライン化して動作合成するとともに、イタレーション間にデータ依存が無いループ記述の全部又は一部を展開して動作合成する。
【００７２】
図１２の例では、内側ループは、イタレーション間にデータ依存があるため、パイプライン化に適している。一方、外側ループは、イタレーション間にデータ依存が無いため、展開して独立処理するのに適している。したがって、図１２の例では、動作合成部１００は、内側ループをパイプライン化して動作合成するとともに、外側ループを展開（アンロール）して動作合成する。
【００７３】
その結果、アレイ型プロセッサ２０は、外側ループに対応する回路をＳＩＭＤ演算により並列処理するとともに、内側ループに対応する回路をパイプライン化して並列処理することができる。そのため、アレイ型プロセッサ２０は、従来のＳＩＭＤ型プロセッサと比較してより広範な並列処理を実行することが可能である。
【００７４】
なお、多重ループでは、内側ループはイタレーション間にデータ依存が有るためパイプライン化に適しており、外側ループはイタレーション間にデータ依存が無いため展開して独立処理するのに適していることが多い。以下、その具体例を示す。
【００７５】
（第１の具体例）
ＪＰＥＧ，ＭＰＥＧの場合、外側及び内側ループのそれぞれのループ処理は、例えば、以下のようになっている。
外側ループ：８行８列や１６行１６列の複数の画素をまとめたマクロブロック単位
内側ループ：マクロブロック毎の複数の画素のＤＣＴ変換処理
【００７６】
（第２の具体例）
音声信号のＦＦＴ変換の場合、外側及び内側ループのそれぞれのループ処理は、例えば、以下のようになっている。
外側ループ：１０２４点の信号をまとめたブロック単位
内側ループ：ブロック毎の１０２４点の信号のＦＦＴ処理
【００７７】
（第３の具体例）
ＦＩＲ画像フィルタの場合、外側及び内側ループのそれぞれのループ処理は、例えば、以下のようになっている。
外側ループ：画像フレーム又は画像を領域分割したブロック単位
内側ループ：ブロック毎の画素のフィルタ処理
【００７８】
（第４の具体例）
複数の株価の移動平均を算出する場合、外側及び内側ループのそれぞれのループ処理は、例えば、以下のようになっている。
外側ループ：株の銘柄
内側ループ：銘柄毎の移動平均の算出処理
【００７９】
＜実施の形態４＞
実施の形態４では、動作合成部１００が、スカラー変数によって記述されたループ記述を展開した後、展開部分に対してＳＩＭＤ命令を自動的に割り当てる具体的方法（展開部分をベクトル変数に自動的に置き換える具体的方法）について説明する。なお、本実施の形態では、動作合成部１００が、図１２に示す多重ループのうち外側ループの一部を展開（アンロール）し、それ以外のループ記述をパイプライン化する場合を例に説明する。
【００８０】
例えば、動作合成部１００は、図１３に示すように、イタレーション回数が４００回の外側ループを、各プロセッサエレメント２０７内の演算ユニット数（８個）に対応して、イタレーション回数が８回のループ記述（第１ループ記述）Ａと、イタレーション回数が５０回のループ記述（第２ループ記述）Ｂと、に分割する。
【００８１】
次に、動作合成部１００は、図１４に示すように、８個のループ処理を有するループ記述Ａを展開（アンロール）する。具体的には、動作合成部１００は、図１４に示すように、内側ループ内の処理内容を、ループ記述Ａのイタレーション回数に対応して８個に並列展開する。
【００８２】
次に、動作合成部１００は、図１５に示すように、内側ループ内に並列展開された処理内容のうち、８個のスカラーデータを１個のベクトルデータにまとめるとともに、８個のスカラー加算命令を１個のベクトル加算命令ＶＡＤＤに置き換える（即ち、８個のスカラー加算命令に対して１個のＳＩＭＤ加算命令ＶＡＤＤを割り当てる）。
【００８３】
このようにして、動作合成部１００は、スカラー変数によって記述されたループ記述を展開した後、展開部分に対してＳＩＭＤ命令を割り当てる。
【００８４】
続いて、図１６及び図１７を参照して、動作合成部１００によるＳＩＭＤ命令の割り当て方法の具体例について説明する。図１６は、第１のＳＩＭＤ命令割り当て方法を適用した場合における動作合成部１００の動作を示すフローチャートである。図１７は、第２のＳＩＭＤ命令割り当て方法を適用した場合における動作合成部１００の動作を示すフローチャートである。
【００８５】
（第１のＳＩＭＤ命令割り当て方法）
図１６の例では、動作合成部１００は、ソースコード１１に含まれる複数のループ記述のうち所定のループ記述を展開（アンロール）した後（Ｓ１０３）、展開部分に対して上記したＳＩＭＤ命令の割り当てを行い（Ｓ１０４Ｂ）、その他のループ記述に対して従来のスカラー命令の割り当てを行う（Ｓ１０４Ａ）。
【００８６】
図１６に示す動作合成部１００のその他の動作については、図９に示す動作と同様であるため、その説明を省略する。
【００８７】
この第１のＳＩＭＤ命令割り当て方法では、スケジューリング工程での処理の複雑化が抑制されるため、動作合成のトータルの処理時間が抑制されるという利点がある。
【００８８】
（第２のＳＩＭＤ命令割り当て方法）
図１７の例では、動作合成部１００は、ソースコード１１に含まれる複数のループ記述のうち所定のループ記述を展開（アンロール）した後（Ｓ１０３）、展開部分及びその他のループ記述の何れにも従来のスカラー命令の割り当てを行う（Ｓ１０４Ａ）。
【００８９】
その後のＤＦＧ生成（Ｓ１０５）からパイプライン化（Ｓ１１０）までの工程では、データは全てスカラー量として処理される。
【００９０】
その後、動作合成部１００は、ループ記述の展開部分に対し上記したＳＩＭＤ命令の割り当てを行い（Ｓ１１０１）、ＲＴＬ最適化（Ｓ１１１）、ＲＴＬ記述出力（Ｓ１１２）を行う。
【００９１】
この第２のＳＩＭＤ命令割り当て方法は、既存の動作合成フローをほとんど変更する必要が無いという利点がある。
【００９２】
このように、本実施の形態にかかる動作合成部１００は、動作記述に含まれる所定のループ記述を展開し、展開部分に対してアレイ型プロセッサ２０向けのＳＩＭＤ命令を自動的に割り当てる。それにより、ＳＩＭＤ命令等を含む専用言語を習得する必要が無いため、設計期間を短縮することができる。
【００９３】
以上のように、上記実施の形態にかかるアレイ型プロセッサ（並列演算装置）２０は、一つの動作命令で複数の演算処理を並列に実行すること（ＳＩＭＤ演算）が可能なプロセッサエレメント２０７を複数備える。それにより、上記実施の形態にかかるアレイ型プロセッサ２０は、従来よりも少ない命令数で並列に演算処理を行う回路（並列演算処理回路）を動的に構成することができるため、回路資源を効率よく使用することができる。
【００９４】
また、上記実施の形態にかかる動作合成部（動作合成装置）１００は、イタレーション間にデータ依存が無いループ記述を展開して並列演算処理回路として動作合成する。そして、上記実施の形態にかかるアレイ型プロセッサ２０は、この並列演算処理回路を、一つの動作命令で複数の演算処理を並列に実行可能なプロセッサエレメント２０７と、スイッチエレメント２０８と、を一つ又は複数組み合わせて動的に構成する。それにより、上記実施の形態にかかるアレイ型プロセッサ２０は、従来よりも少ない動作命令で当該並列演算処理回路を動的に構成することができるため、回路資源を効率よく使用することができる。
【００９５】
また、上記実施の形態にかかる動作合成部（動作合成装置）１００は、動作記述に含まれるループ記述を展開した後、展開部分に対してＳＩＭＤ命令を自動的に割り当てる。それにより、ＳＩＭＤ命令等を含む専用言語を習得する必要が無いため、設計期間を短縮することができる。
【００９６】
また、上記実施の形態にかかるアレイ型プロセッサ２０は、ＳＩＭＤ演算による並列処理のみならず、パイプライン化による並列処理も実行することができるため、従来のＳＩＭＤ型プロセッサよりも広範な並列処理を実行することができる。なお、並列度が高くなるほど、一つの動作命令で処理できる演算量が増えるため、単位面積当たりの性能が高くなる。また、単位性能当たりでは、より低い周波数で同じ演算量を実現できるため、消費電力が抑制される。
【００９７】
上記実施の形態では、各プロセッサエレメント２０７が１６ビット幅のデータを演算処理可能な演算ユニットを８個備えた場合を例に説明したが、これに限られない。各プロセッサエレメント２０７は、２個以上の任意の数の演算ユニットを備える構成に適宜変更可能である。また、各プロセッサエレメント２０７は、１６ビット幅以外の任意のビット幅のデータを演算処理可能な演算ユニットを備える構成に適宜変更可能である。この場合、データ配線やフラグ配線等のビット幅も変更する必要がある。
【００９８】
上記実施の形態では、動作合成部１００が、多重ループを構成する内側ループ及び外側ループのうち外側ループを展開する場合を例に説明したが、これに限られない。動作合成部１００は、イタレーション間にデータ依存が無い任意のループ記述を展開する構成に適宜変更可能である。
【００９９】
また、上記実施の形態にかかる動作合成部及びそれを備えたデータ処理装置は、任意の処理を、ＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。
【０１００】
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、ＤＶＤ（Digital Versatile Disc）、ＢＤ(Blue-ray(登録商標) Disc)、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０１０１】
（従来技術との差異）
特許文献３、特許文献４及び特許文献５に開示されたＳＩＭＤ型プロセッサは、ＣＰＵ等と同様に動作命令を逐次解釈して複数の演算処理を並列に実行している。ここで、ＳＩＭＤ型プロセッサでは、条件分岐はジャンプ命令として実現されている。
【０１０２】
したがって、このＳＩＭＤ型プロセッサは、例えば、並列処理される複数のデータのうち何れか一つのデータのみに依存する条件分岐が発生した場合でも、その一つのデータのみに対して条件分岐を実行することはできない。つまり、このＳＩＭＤ型プロセッサは、例えば、並列処理される複数のデータのうち何れか一つのデータのみに依存する条件分岐が発生した場合でも、複数のデータ全てに対してその条件分岐を実行する必要がある。したがって、このＳＩＭＤ型プロセッサは、並列処理される複数のデータ全てに対して全ての条件分岐を実行しなければならないため、実行サイクル数が増大してしまうという問題がある。
【０１０３】
図１８は、ＳＩＭＤ型プロセッサによる条件分岐の実行方法を説明するための図である。図１８の例では、０〜７は並列処理される複数のデータを示し、"実"は演算処理の実行を示し、"真"は条件分岐が真であることを示し、"偽"は条件分岐が偽であることを示している。図１８に示すように、並列処理される複数のデータ０〜７に対してｉｆ，ｅｌｓｅの条件分岐が何れも実行されていることが分かる。そのため、実行サイクル数が増大してしまっている。
【０１０４】
一方、上記実施の形態にかかるアレイ型プロセッサは、一つの動作命令で複数の演算処理を並列に実行すること（ＳＩＭＤ演算）が可能なプロセッサエレメントを複数備える。それにより、上記実施の形態にかかるアレイ型プロセッサは、少ない命令数で並列に演算処理を行う回路を動的に構成することができる。つまり、上記実施の形態にかかるアレイ型プロセッサは、ＳＩＭＤ型プロセッサと同じくＳＩＭＤ演算を実行することができる。
【０１０５】
ここで、条件分岐は、ジャンプ命令として実現されるのではなく、動作合成時にマルチプレクサを含むデータパスとして合成される。そのため、上記実施の形態にかかるアレイ型プロセッサでは、ＳＩＭＤ型プロセッサと異なり、条件分岐が複数存在する場合でも、実行サイクル数の増大は抑制される。つまり、演算性能の低下が抑制される。
【０１０６】
また、従来のＳＩＭＤ型プロセッサは、Ｃ言語等による動作記述ではなく、ベクトルを変数として取り扱えるように拡張した専用言語による動作記述を用いて設計されることが多い。
【０１０７】
一方、上記実施の形態にかかる動作合成部（動作合成装置）は、Ｃ言語などによる動作記述に含まれる所定のループ記述を展開し、展開部分に対してＳＩＭＤ命令を自動的に割り当てる。そのため、専用言語を習得する必要が無く、設計期間を短縮することができる。
【０１０８】
続いて、特許文献１及び特許文献２に開示された動的再構成プロセッサは、前述のように、複数のプロセッサエレメントのそれぞれの処理内容及び接続関係を動的に切り替えて回路を構成している。それにより、動的再構成プロセッサは、回路資源を再利用することができるため、小さな回路規模で複雑な演算処理を実行することができる。ここで、図１９に示すように、条件分岐は、動作合成時にマルチプレクサ（図中の▲▼）を含むデータパスとして合成される。そのため、従来の動的再構成プロセッサでは、条件分岐が複数存在する場合でも、実行サイクル数の増大は抑制される。
【０１０９】
しかしながら、従来の動的再構成プロセッサは、前述のように、複数のプロセッサエレメントのそれぞれの処理内容及び接続関係に関する非常に多くの命令をメモリに保持しなければならず、回路資源を効率よく使用することができないという問題があった。
【０１１０】
一方、上記実施の形態にかかるアレイ型プロセッサは、一つの動作命令で複数の演算処理を並列に実行すること（ＳＩＭＤ演算）が可能なプロセッサエレメントを複数備える。それにより、上記実施の形態にかかるアレイ型プロセッサは、少ない命令数で並列に演算処理を行う回路を動的に構成することができるため、回路資源を効率よく使用することができる。
【０１１１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【０１１２】
１  データ処理システム
１０  データ処理装置
１１  ソースコード
１２  合成制約
１３  回路情報
１４  ＲＴＬ記述
１５  オブジェクトコード
２０  アレイ型プロセッサ
１０１  ＤＦＧ生成部
１０２  スケジューリング部
１０３  アロケーション部
１０４  ＦＳＭ生成部
１０５  データパス生成部
１０６  パイプライン構成生成部
１０７  ＲＴＬ記述生成部
１０８  ループ処理部
１０９  オブジェクトコード生成部
１１０  コンピュータ
１１１  ＣＰＵ
１１２  ＲＡＭ
１１３  ＲＯＭ
１１４  ＩＦ
１１５  ＨＤＤ
１１６  動作記述情報
１１７  回路情報
１１８  データ処理プログラム
２０１  ＩＦ部
２０２  コードメモリ
２０３  状態管理部
２０５  マトリクス回路部
２０６  データメモリ
２０７  プロセッサエレメント
２０８  スイッチエレメント
２１０  メモリユニット
２１１  命令メモリ
２１２  演算ユニット
２１３  レジスタ
２１４〜２１８  配線接続スイッチ
【図１】
2014016894.tif 000003
【図２】
2014016894.tif 000004
【図３】
2014016894.tif 000005
【図４】
2014016894.tif 000006
【図５Ａ】
2014016894.tif 000007
【図５Ｂ】
2014016894.tif 000008
【図５Ｃ】
2014016894.tif 000009
【図６】
2014016894.tif 000010
【図７】
2014016894.tif 000011
【図８】
2014016894.tif 000012
【図９】
2014016894.tif 000013
【図１０】
2014016894.tif 000014
【図１１】
2014016894.tif 000015
【図１２】
2014016894.tif 000016
【図１３】
2014016894.tif 000017
【図１４】
2014016894.tif 000018
【図１５】
2014016894.tif 000019
【図１６】
2014016894.tif 000020
【図１７】
2014016894.tif 000021
【図１８】
2014016894.tif 000022
【図１９】
2014016894.tif 000023