(57)【要約】【課題】パイプライン型に接続した複数のリコンフィギュラブル回路が、データを演算していない時間がより少なくなるように実行回路を構築できること。【解決手段】コントローラ１０と、後段に複数段直列に接続された演算ユニット１２とを備えた半導体装置であって、コントローラ１０は、データと再構成情報とを初段の演算ユニット１２に入力し、演算ユニット１２は、再構成情報により特定される回路情報による実行回路で構築され入力されたデータを演算する演算器１２０と、再構成情報を次の演算に必要な回路情報を特定するように更新する回路情報識別子更新部１２３と、演算器１２０による演算を繰り返すかを判断し、回数分の演算を完了したと判断した場合、データと再構成情報とを次段の演算ユニット１２に入力し、完了していないと判断した場合、データと再構成情報とを再度自身に入力するように制御する繰り返し制御部１２６と、を備えた。【選択図】        図２
2010009247.tif 000002
【特許請求の範囲】
【請求項１】
コントローラと、前記コントローラの後段に複数段直列に接続されてパイプライン動作を行う複数の動的リコンフィギュラブル回路とを備えた半導体装置であって、
（Ａ）前記コントローラは、
処理すべきデータと、
前記動的リコンフィギュラブル回路ごとに保持される複数の回路情報のうち、前記データに対して実行する演算に必要な実行回路を前記動的リコンフィギュラブル回路に構築するための回路情報を特定する特定情報と、複数の前記動的リコンフィギュラブル回路のそれぞれが実行する演算回数を示す情報とを含む再構成情報と、
を初段の前記動的リコンフィギュラブル回路に入力し、
（Ｂ）複数の前記動的リコンフィギュラブル回路のそれぞれは、
（ａ）前記再構成情報により特定される前記回路情報に従って変更された実行回路で構築され、前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記データを演算する演算手段と、
（ｂ）前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記再構成情報に含まれる特定情報を、演算された前記データに対して次に実行する演算に必要な前記回路情報を特定する特定情報へ更新する更新手段と、
（ｃ）前記演算手段による演算を繰り返し行うか否かを判断し、
前記演算手段が前記演算回数分の演算を完了したと判断した場合には、演算された前記データと更新された前記再構成情報とを次段の前記動的リコンフィギュラブル回路に入力するように制御し、
前記演算手段が前記演算回数分の演算を完了していないと判断した場合には、演算された前記データと更新された前記再構成情報とを再度自身に入力するように制御する繰り返し制御手段と、
を備えたことを特徴とする半導体装置。
【請求項２】
前記演算回数の合計は、前記動的リコンフィギュラブル回路の総数よりも多いこと、
を特徴とする請求項１に記載の半導体装置。
【請求項３】
複数の前記動的リコンフィギュラブル回路は、前記回路情報を格納する記憶手段をさらに備え、
前記再構成情報は、
前記記憶手段における前記回路情報の格納先を示すアドレスと、
前記動的リコンフィギュラブル回路ごとの前記演算回数を決定する再構成規則と、を含み、
前記演算手段は、前記アドレスで示される格納先から読み出された前記回路情報で特定された実行回路で構築されて、前記データを演算し、
前記更新手段は、入力された前記アドレスを、次に実行する演算に必要な前記回路情報が格納されているアドレスに更新すること、
を特徴とする請求項１または２に記載の半導体装置。
【請求項４】
前記更新手段は、前記アドレスに１を加算し、加算されたアドレスが次に実行する演算に必要な前記回路情報が格納されているアドレスであること、
を特徴とする請求項３に記載の半導体装置。
【請求項５】
前記再構成規則は、
前記動的リコンフィギュラブル回路を一意に特定する識別子と、
第１の演算回数と、を含み、
前記識別子により特定される前記動的リコンフィギュラブル回路の前記演算手段は、前記第１の演算回数分の演算を行い、
前記識別子により特定されない前記動的リコンフィギュラブル回路の前記演算手段は、予め定められた第２の演算回数分の演算を行うこと、
を特徴とする請求項３または４に記載の半導体装置。
【請求項６】
前記再構成規則は、
前記動的リコンフィギュラブル回路を一意に特定する識別子と、
前記識別子で特定された前記動的リコンフィギュラブル回路で最後に行われる演算に必要な実行回路を構築するための回路情報を特定する最終回路情報識別子と、を含み、
前記識別子により特定される前記動的リコンフィギュラブル回路の前記演算手段は、入力された、または、更新された前記回路情報識別子が前記最終回路情報識別子と一致するまで演算を行い、
前記識別子により特定されない前記動的リコンフィギュラブル回路の前記演算手段は、予め定められた一定回数分の演算を行うこと、
を特徴とする請求項３または４に記載の半導体装置。
【請求項７】
コントローラと、パイプライン動作を行うため、前記コントローラの後段に複数段直列に接続されてパイプライン動作を行う複数の動的リコンフィギュラブル回路とを備えた半導体装置によるデータ処理方法において、
前記コントローラが、処理すべきデータと、前記データに対して実行する演算に必要な実行回路を前記動的リコンフィギュラブル回路に構築するための回路情報を特定する特定情報と、複数の前記動的リコンフィギュラブル回路のそれぞれが実行する演算回数を示す情報とを含む再構成情報と、を初段の前記動的リコンフィギュラブル回路に入力する入力ステップと、
複数の前記動的リコンフィギュラブル回路のそれぞれが、前記再構成情報により特定される前記回路情報に従って変更された実行回路で構築され、前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記データを演算する演算ステップと、
複数の前記動的リコンフィギュラブル回路のそれぞれが、前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記再構成情報に含まれる特定情報を、演算された前記データに対して次に実行する演算に必要な前記回路情報を特定する特定情報へ更新する更新ステップと、
複数の前記動的リコンフィギュラブル回路のそれぞれが、前記演算ステップによる演算を繰り返し行うか否かを判断し、前記演算ステップで前記演算回数分の演算を完了したと判断した場合には、演算された前記データと更新された前記再構成情報とを次段の前記動的リコンフィギュラブル回路に入力するように制御し、前記演算ステップで前記演算回数分の演算を完了していないと判断した場合には、演算された前記データと更新された前記再構成情報とを再度自身に入力するように制御する制御ステップと、を含むこと、
を特徴とする半導体装置によるデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的リコンフィギュラブル回路技術を用いた半導体装置、および、半導体装置によるデータ処理方法に関するものである。
【背景技術】
【０００２】
近年、携帯機器など小面積・低消費電力が求められる機器においても、機能の複雑化、多様化が進み、このような機器にも高い性能が必要とされてきている。高性能と小面積・低消費電力を両立させるためには、専用ハードウェアの製造・開発は避けられない。しかしながら、機能の複雑化・多様化に伴い専用ハードウェアの製造・開発費は年々増大している。この製造・開発費を削減するものとして、動的リコンフィギュラブル回路技術を用いた半導体装置が注目されている。
【０００３】
動的リコンフィギュラブル回路技術を用いた半導体装置は、ＦＰＧＡのようなリコンフィギュラブル回路と、そのリコンフィギュラブル回路に実行させたい回路（以下、単に実行回路と称す）を構築するのに必要な回路情報を複数蓄えておくための記憶装置を備えており、ソフトウェアなどによりあらかじめ決められた規則に従って、動作時に必要な回路情報を読み出して実行回路を構築できる装置である。動作時に実行回路を変えられる点が、ＦＰＧＡを用いた従来の半導体装置とは異なる。
【０００４】
この半導体装置を用いると、ＦＰＧＡ同様に専用ハードウェアの開発費が低減されるだけでなく、実行回路を動的に構築することにより小さな半導体装置上に多様な機能が実現できるため、専用ハードウェアの製造費も低減されると期待されている。
【０００５】
動的リコンフィギュラブル回路技術を用いた半導体装置の例としては、ＮＥＣエレクトロニクスのＤＲＰ（Ｄｙｎａｍｉｃａｌｌｙ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ・・・非特許文献１参照）や、特許文献１が挙げられる。
【０００６】
ＮＥＣエレクトロニクスのＤＲＰは、演算を行う基本要素であるＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）が２次元アレイ状に並べられ、その中央に状態遷移コントローラが配置されるという構造を持つ。ＰＥは実行回路を構築可能な演算装置で、ＰＥ内部にある命令メモリに演算の種類やＰＥ間の接続関係といった回路情報が複数格納されている。各ＰＥは状態遷移コントローラから与えられる命令ポインタに従って命令メモリから回路情報を読み出して、動的に実行回路を構築する。
【０００７】
特許文献１では、構成変更を制御するコントローラと、演算を行う複数の演算ユニットがパイプライン型に接続されている。実行回路の変更を指示するためにコントローラから送られる再構成規則は、それぞれの演算ユニットに１サイクルずつ遅れて到達し、それぞれの演算ユニットはサイクル毎に受け取る再構成規則に従って、内部のメモリから回路情報を読み出して、動的に実行回路を構築する。
【０００８】
【非特許文献１】「リコンフィギュラブルシステム」、オーム社、ページ１８９−２０８
【特許文献１】特開２００７−２５７５４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
高性能な動的リコンフィギュラブル回路技術を用いた半導体装置を実現するためには、決められた時間のうちに演算要素で可能な限り多くの演算が行われるよう、演算要素が演算を行えない時間を短くする必要がある。
【００１０】
ところがＤＲＰでは、命令ポインタは状態遷移コントローラからすべてのＰＥに同時に与えられ、それぞれのＰＥはその命令ポインタに従って同時に実行回路を構築する。そのため、すでに演算を完了しているＰＥがあったとしても、演算を完了していないＰＥがある限りは、演算中のＰＥの実行回路が変更されないようにするために、すべてのＰＥの実行回路を変更できない。このような理由から、ＰＥが演算を行えない時間は長くなる。
【００１１】
特許文献１では、コントローラから送られる再構成規則はそれぞれの演算ユニットに１サイクルずつ遅れて到達し、それぞれの演算ユニットはサイクル毎に受け取る再構成規則に従って実行回路を構築するため、パイプライン状に接続された下段の演算ユニットが演算を完了する前に、コントローラが上段の演算ユニットに再構成規則を与えて実行回路を変更しても、その再構成規則が下段の演算ユニットに到達するまでに下段の演算ユニットが演算を完了すれば、正しい演算結果が得られる。これにより、演算要素が演算を行えない時間をＤＲＰよりも短くできる。
【００１２】
しかしながら、特許文献１では、再構成規則は常にパイプライン最上段のコントローラから下段の演算ユニットへと１サイクルずつ転送されるため、データに対して演算ユニットの段数を越える数の演算を行うような処理をするためには、最下段の演算ユニットが出力する処理の途中結果を最上段の演算ユニットに入力し、改めて最上段の演算ユニットから順に演算を行う必要がある。そのため、最上段の演算ユニットから改めて行う演算の数が、演算ユニットの数より少ない場合には、下段の演算ユニットで演算を行わない時間が生じてしまうという問題があった。
【００１３】
本発明は、上記に鑑みてなされたものであって、パイプライン型に接続した複数のリコンフィギュラブル回路のそれぞれが、データを演算していない時間がより少なくなるように実行回路を構築できる半導体装置、および、半導体装置によるデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本発明は、コントローラと、前記コントローラの後段に複数段直列に接続されてパイプライン動作を行う複数の動的リコンフィギュラブル回路とを備えた半導体装置であって、（Ａ）前記コントローラは、処理すべきデータと、前記動的リコンフィギュラブル回路ごとに保持される複数の回路情報のうち、前記データに対して実行する演算に必要な実行回路を前記動的リコンフィギュラブル回路に構築するための回路情報を特定する特定情報と、複数の前記動的リコンフィギュラブル回路のそれぞれが実行する演算回数を示す情報とを含む再構成情報と、を初段の前記動的リコンフィギュラブル回路に入力し、（Ｂ）複数の前記動的リコンフィギュラブル回路のそれぞれは、（ａ）前記再構成情報により特定される前記回路情報に従って変更された実行回路で構築され、前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記データを演算する演算手段と、（ｂ）前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記再構成情報に含まれる特定情報を、演算された前記データに対して次に実行する演算に必要な前記回路情報を特定する特定情報へ更新する更新手段と、（ｃ）前記演算手段による演算を繰り返し行うか否かを判断し、前記演算手段が前記演算回数分の演算を完了したと判断した場合には、演算された前記データと更新された前記再構成情報とを次段の前記動的リコンフィギュラブル回路に入力するように制御し、前記演算手段が前記演算回数分の演算を完了していないと判断した場合には、演算された前記データと更新された前記再構成情報とを再度自身に入力するように制御する繰り返し制御手段と、を備えたことを特徴とする。
【００１５】
また、本発明は、コントローラと、パイプライン動作を行うため、前記コントローラの後段に複数段直列に接続されてパイプライン動作を行う複数の動的リコンフィギュラブル回路とを備えた半導体装置によるデータ処理方法において、前記コントローラが、処理すべきデータと、前記データに対して実行する演算に必要な実行回路を特定する回路情報を特定するとともに、複数の前記動的リコンフィギュラブル回路のそれぞれが実行する演算回数を決定する再構成情報と、を初段の前記動的リコンフィギュラブル回路に入力する入力ステップと、複数の前記動的リコンフィギュラブル回路のそれぞれが、前記再構成情報により特定される前記回路情報に従って変更された実行回路で構築され、前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記データを演算する演算ステップと、複数の前記動的リコンフィギュラブル回路のそれぞれが、前記コントローラ、または、前段の前記動的リコンフィギュラブル回路から入力された前記再構成情報を、演算された前記データに対して次に実行する演算に必要な前記回路情報を特定するように更新する更新ステップと、複数の前記動的リコンフィギュラブル回路のそれぞれが、前記演算ステップによる演算を繰り返し行うか否かを判断し、前記演算ステップで前記演算回数分の演算を完了したと判断した場合には、演算された前記データと更新された前記再構成情報とを次段の前記動的リコンフィギュラブル回路に入力するように制御し、前記演算ステップで前記演算回数分の演算を完了していないと判断した場合には、演算された前記データと更新された前記再構成情報とを再度自身に入力するように制御する制御ステップと、を含むこと、を特徴とする。
【発明の効果】
【００１６】
本発明によれば、データに対して、動的リコンフィギュラブル回路の段数よりも多い数の演算処理を順番に実行する場合であっても、リコンフィギュラブル回路がデータに対する演算処理を実行しない時間を、より少なくすることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照して、この発明にかかる半導体装置、および、半導体装置によるデータ処理方法の最良な実施の形態を詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１８】
（半導体装置の構成）
図１は、本実施の形態にかかる半導体装置の構成を示すブロック図であり、図２は、演算ユニットの構成を示すブロック図である。半導体装置１は、プロセッサなどの外部装置２からの指示によりデータ処理を行うものであって、コントローラ１０、入出力バッファ１１、および、５つの演算ユニット１２Ａ〜１２Ｅを備えて構成されている。なお、ここでは、データ処理とは、個々の演算を行った一連の演算の総称のこととする。
【００１９】
コントローラ１０は、入出力バッファ１１と演算ユニット１２Ａに接続している。コントローラ１０は、後述するプログラムコードメモリ１０Ｃに記録されたコードに従って、サイクルごとに演算ユニット１２Ａ〜１２Ｅの再構成を指示するための再構成情報と、入出力バッファ１１へのデータ書き込みを制御するための制御情報（書き込み制御情報）とを演算ユニット１２Ａに出力する。ここでサイクルとは、同期式回路において記憶素子部の値が変化してから、次に記憶素子部の値が変化するまでの最小時間単位である。本例では、再構成情報は、各サイクルにおけるデータ処理において、データ処理に必要な回路情報が後述する回路情報記憶部１２１に格納されている位置を示す回路情報識別子と、演算ユニット１２Ａ〜１２Ｅが再構成を行う回数を示す再構成規則とから構成されている。
【００２０】
さらに、コントローラ１０は、プログラムコードメモリ１０Ｃに記録されたコードに従って、入出力バッファ１１から演算ユニット１２Ａへのデータ読み出しを制御するための制御情報（読み出し制御情報）を入出力バッファ１１へ出力する。コントローラ１０の構成については、後ほど、コントローラ１０におけるデータ処理の説明で、さらに詳しく説明する。
【００２１】
入出力バッファ１１は、コントローラ１０と演算ユニット１２Ａおよび１２Ｅに接続している。入出力バッファ１１は、半導体装置１がデータ処理の開始時に演算ユニット１２Ａに与えるデータや、半導体装置１の演算ユニット１２Ｅによるデータ処理の中間結果または最終結果を一時的に保持するものである。入出力バッファ１１には、データ処理の開始前に外部装置２により初期の入力データが書き込まれる。また、半導体装置１の演算ユニット１２Ａは、入出力バッファ１１に保持されたデータ処理の中間結果を再び入力データとして、データ処理を続けることもできる。入出力バッファ１１に保持された最終結果は、外部装置２により入出力バッファ１１から読み出される。
【００２２】
演算ユニット１２Ａ〜１２Ｅは、データ処理を実現する。演算ユニット１２Ａ〜１２Ｅは、コントローラの後段に複数段直列に、すなわち、パイプライン型に接続され、それぞれ、個々の演算を行うための実行回路を構築可能な演算器を持つユニットであり、入力される再構成情報に従って演算器に実行回路を構築しながら（演算器の回路構成を変更しながら）、入力データを演算して結果を出力するという機能を持つ。また、演算ユニット１２Ａ〜１２Ｅは、予め決められた規則に従って再構成情報を更新して出力する。従って、演算ユニット１２Ａ〜１２Ｅは、動的リコンフィギュラブル回路を構成する。なお、本実施の形態にかかる演算ユニットの数は５つであるが、これに限らず、半導体装置１に必要とされる処理能力に応じて変更してもよい。
【００２３】
ここで、演算器に構築される実行回路を特定するための情報を回路情報と呼ぶ。回路情報としては、演算器に対する入力データと出力データの対応関係を示すテーブルや、演算器の演算の種類を決定する設定信号の値など、実施例によりさまざまな情報が用いられる。演算ユニット１２Ａ〜１２Ｅは、再構成情報に従って演算器に構築する実行回路を特定する回路情報を決定することにより、実行回路を構築する（回路構成を変更する）。
【００２４】
演算ユニット１２Ａは、コントローラ１０に接続し、コントローラ１０が出力する再構成情報と、入出力バッファ１１から読み出される入力データとが入力される。演算ユニット１２Ｂ〜１２Ｅは、演算ユニット１２Ａ〜１２Ｄにそれぞれ接続し、前段の演算ユニット１２Ａ〜１２Ｄが出力する再構成情報と演算結果であるデータとを入力として、演算ユニット１２Ａと同様の処理を行う。また、演算ユニット１２Ｅの出力は、入出力バッファ１１に接続しており、演算ユニット１２Ｅの演算結果である出力データは、コントローラ１０から再構成情報と同様にして伝搬される制御情報（書き込み制御情報）に従い、入出力バッファ１１に記録される。
【００２５】
このように、コントローラ１０と演算ユニット１２Ａ〜１２Ｅはパイプライン型に接続されており、入出力バッファ１１から読み出されるデータに対して、パイプライン式に演算を行う。ただし、再構成情報が示す規則によっては、演算ユニット１２Ａ〜１２Ｅは、パイプラインの前段から入力されるデータと再構成情報とを用いる代わりに、各演算ユニット自身が前のサイクルで出力した演算結果（データ）と更新した再構成情報とを用いて演算を行うサイクルもある。演算ユニット１２の構成については、後ほど、演算ユニット１２におけるデータ処理の説明で、さらに詳しく説明する。
【００２６】
（データ処理の流れの概要）
次に、本実施の形態にかかる半導体装置１におけるデータ処理の開始から終了までの流れの概要を説明する。
【００２７】
コントローラ１０は、後述するプログラムコードメモリ１０Ｃに格納されたコードを毎サイクル解釈し、それに従って、再構成情報と書き込み制御情報とを演算ユニット１２（実際には、演算ユニット１２Ａ）へ出力する。前述したように、再構成情報は、各サイクルにおけるデータ処理において、データ処理に必要な回路情報が後述する回路情報記憶部１２１に格納されている位置を示す回路情報識別子と、演算ユニット１２Ａ〜１２Ｅが再構成を行う回数を示す再構成規則とから構成されている。
【００２８】
入出力バッファ１１は、コントローラ１０からのデータ読み出し要求（読み出し制御情報）を受け取るたびに、入出力バッファ１１からデータを読み出し、演算ユニット１２Ａに転送する。また、入出力バッファ１１は、コントローラ１０から演算ユニット１２Ａ〜１２Ｅを通ってパイプライン式に転送されたデータ書き込み要求（書き込み制御情報）を演算ユニット１２Ｅから受け取るたびに、その情報に従って演算ユニット１２Ｅから出力された演算結果（出力データ）を入出力バッファ１１に書き込む。
【００２９】
演算ユニット１２Ａ〜１２Ｅは、サイクルごとに入力される回路情報識別子に従って回路情報記憶部１２１から回路情報を読み出し、その回路情報に従って演算器に実行回路を構築しながら、入力されるデータを演算して結果を出力する。また、演算ユニット１２Ａ〜１２Ｅは、予め決められた規則に従って回路情報識別子を更新して出力する。なお、回路情報は、外部装置２によりデータ処理の開始前に回路情報記憶部１２１へ転送される。
【００３０】
具体的には、演算ユニット１２Ａは、コントローラ１０から入力される回路情報識別子に従って、入出力バッファ１１から入力されるデータに対して演算を行い、規則に従って回路情報識別子を更新する。ただし、演算ユニット１２Ａは、再構成規則により複数回の再構成を行うよう指示された場合には、再構成規則を受けとった次のサイクルから、指示された回数の再構成が完了するサイクルまでの間は、演算ユニット１２Ａが前のサイクルで演算した結果（データ）と、前のサイクルで更新した回路情報識別子とを用いて再び演算を行う。
【００３１】
また、演算ユニット１２Ｂ〜１２Ｅは、接続する前段の演算ユニット１２Ａ〜１２Ｄから入力される前段の演算ユニット１２Ａ〜１２Ｄで更新された再構成情報と演算した結果（データ）とを入力として、演算ユニット１２Ａと同様に演算を行う。ただし、演算ユニット１２Ｂ〜１２Ｅは、再構成規則により複数回の再構成を行うよう指示された場合には、再構成規則を受けとった次のサイクルから、指示された回数の再構成が完了するサイクルまでの間は、演算ユニット１２Ｂ〜１２Ｅが前のサイクルで演算した結果（データ）と、前のサイクルで更新した回路情報識別子とを用いて再び演算を行う。そして、演算ユニット１２Ｅの演算結果は、コントローラ１０から再構成情報と同時に伝搬される書き込み制御情報に従い、入出力バッファ１１に書き込まれる。
【００３２】
そして、コントローラ１０が全てのコードを解釈し終えた時点で、コントローラ１０はプロセッサなどの外部装置に処理の完了を通知し、データ処理は終了する。
【００３３】
最後に、外部装置２は、処理の完了通知を受けてから規定サイクル以上経過した後に、入出力バッファ１１に蓄えられた半導体装置１の演算結果を読み出す。この規定サイクルは、演算ユニット１２が演算する回数と、入出力バッファ１１へのデータ書き込みに要するサイクル数とを加えたサイクル数になる。
【００３４】
（演算ユニットにおけるデータ処理）
次に、図２を使用して、演算ユニット１２におけるデータ処理について詳しく説明する。演算ユニット１２Ａ〜１２Ｅは、それぞれ、演算器１２０、回路情報記憶部１２１、データレジスタ１２２、回路情報識別子更新部１２３、回路情報識別子レジスタ１２４、再構成規則レジスタ１２５、および、繰り返し制御部１２６を備えて構成されている。なお、本図では、書き込み制御情報の記載は省略している。
【００３５】
演算器１２０は、個々の演算を行うためのハードウェアの実行回路を構築可能な演算器で、回路情報記憶部１２１から読み出される回路情報に従って実行回路を構築しながら（回路構成を変更しながら）、入力データを演算してデータレジスタ１２２に書き込む。演算器１２０は、回路情報記憶部１２１、繰り返し制御部１２６のデータ出力、および、データレジスタ１２２に接続している。
【００３６】
図３は、演算器１２０の構成の一例を示す図である。演算器１２０は、８ビットのＡＬＵとシフタとをそれぞれ４個ずつ備えており、３２ビットの２入力に対して、８ビット単位で異なる演算を行うよう実行回路を構築できる。この演算結果を、３２ビットの出力の一つとする。また、演算器１２０は、クロスバーを備え、シフタからの８ビット出力４つの配置順を変更した結果を３２ビット出力の一つとする。
【００３７】
回路情報は、８ビット演算あたり、ＡＬＵの入力の一つを直値とするかどうかを決める入力モードが１ビット、直値が８ビット、ＡＬＵ設定が２ビット、シフト値が３ビット、クロスバー設定が２ビットの計１６ビットからなり、演算器１２０全体では、６４ビットの回路情報となる。
【００３８】
回路情報記憶部１２１は、回路情報を記憶しており、繰り返し制御部１２６の回路情報識別子の出力と演算器１２０に接続している。そして、繰り返し制御部１２６から出力される回路情報識別子をアドレスとして、サイクルごとに回路情報記憶部１２１から回路情報が読み出され、演算器１２０に入力される。なお、本例では、回路情報記憶部１２１は演算ユニット１２Ａ〜１２Ｅに個別に内蔵されているが、演算ユニット１２Ａ〜１２Ｅに個別に対応するように、演算ユニット１２Ａ〜１２Ｅの外部に５つ備えられ、演算ユニット１２Ａ〜１２Ｅとそれぞれ接続されていてもよい。また、演算ユニット１２Ａ〜１２Ｅで共有するように、演算ユニット１２Ａ〜１２Ｅの外部に１つだけ備えられ、演算ユニット１２Ａ〜１２Ｅと接続されていてもよい。
【００３９】
データレジスタ１２２は、演算器１２０による演算結果（データ）を一時的に記録する。データレジスタ１２２は、演算器１２０のデータ出力、自身の繰り返し制御部１２６、および、次段の演算ユニット１２の繰り返し制御部１２６に接続している。
【００４０】
回路情報識別子更新部１２３は、繰り返し制御部１２６から出力される回路情報識別子を入力として、予め決められた規則に従って、入力される回路情報識別子を更新して出力する。この規則は、入出力バッファ１１から入力されたデータが、演算ユニット１２Ａ〜１２Ｅを経由して、再び入出力バッファ１１に書き込まれるまでに行われる一連の演算において、演算に必要な実行回路の構築に用いられる回路情報を特定する回路情報識別子が、それぞれ異なるように決定されていればよい。本例では、回路情報識別子更新部１２３は、入力される回路情報識別子の値に１を加えた値を、更新後の回路情報識別子として出力するものとする。回路情報識別子更新部１２３は、繰り返し制御部１２６の回路情報識別子の出力、および、回路情報識別子レジスタ１２４に接続している。
【００４１】
回路情報識別子レジスタ１２４は、回路情報識別子更新部１２３で更新した回路情報識別子を一時的に記録する。回路情報識別子レジスタ１２４は、回路情報識別子更新部１２３の出力、自身の繰り返し制御部１２６、および、次段の演算ユニット１２の繰り返し制御部１２６に接続している。
【００４２】
再構成規則レジスタ１２５は、繰り返し制御部１２６から出力される再構成規則を一時的に記録する。繰り返し制御部１２６は、繰り返し制御部１２６の再構成規則の出力、自身の繰り返し制御部１２６、および、次段の演算ユニット１２の繰り返し制御部１２６に接続している。
【００４３】
繰り返し制御部１２６は、自身の演算ユニット１２が演算を繰り返し行うか否かを制御する。例えば、繰り返し制御部１２６は、演算ユニット１２に入力される再構成規則が示す回数が２回以上の場合に、１回目の演算は、入出力バッファ１１または前段の演算ユニット１２Ａ〜１２Ｄから入力されるデータと、コントローラ１０または前段の演算ユニット１２Ａ〜１２Ｄから入力される回路情報識別子とを用いて演算を行うように制御する。さらに、その後指定の回数を終えるまでの演算は、前のサイクルで演算ユニット１２Ａ〜１２Ｅ自身が演算した結果（データ）と前のサイクルで回路情報識別子更新部１２３自身が更新した回路情報識別子とを用いて演算を行うよう制御する。
【００４４】
具体的には、演算ユニット１２Ａの繰り返し制御部１２６は、１回目の演算の場合、入出力バッファ１１が出力するデータ、および、コントローラ１０が出力する再構成情報（回路情報識別子および再構成規則）を受け取り、演算器１２０、回路情報記憶部１２１、回路情報識別子更新部１２３、および、再構成規則レジスタ１２５に出力する。そして、演算ユニット１２Ａの繰り返し制御部１２６は、２回目の演算の場合、自身のデータレジスタ１２２が出力するデータ、自身の回路情報識別子レジスタ１２４が出力する回路情報識別子、および、自身の再構成規則レジスタ１２５が出力する再構成規則を受け取り、自身の演算器１２０、自身の回路情報記憶部１２１、自身の回路情報識別子更新部１２３、および、自身の再構成規則レジスタ１２５に再度出力する。
【００４５】
同様に、演算ユニット１２Ｂ〜１２Ｅの繰り返し制御部１２６は、１回目の演算の場合、前段の演算ユニット１２のデータレジスタ１２２が出力するデータ、前段の演算ユニット１２の回路情報識別子レジスタ１２４が出力する回路情報識別子、および、前段の演算ユニット１２の再構成規則レジスタ１２５が出力する再構成規則を受け取り、自身の演算器１２０、自身の回路情報記憶部１２１、自身の回路情報識別子更新部１２３、および、自身の再構成規則レジスタ１２５に出力する。そして、演算ユニット１２Ｂ〜１２Ｅの繰り返し制御部１２６は、２回目の演算の場合、自身のデータレジスタ１２２が出力するデータ、自身の回路情報識別子レジスタ１２４が出力する回路情報識別子、および、自身の再構成規則レジスタ１２５が出力する再構成規則を受け取り、自身の演算器１２０、自身の回路情報記憶部１２１、自身の回路情報識別子更新部１２３、および、自身の再構成規則レジスタ１２５に再度出力する。
【００４６】
なお、繰り返し制御部１２６は、演算ユニット１２に入力される再構成規則が示す回数が１回または指定の回数を終えた場合には、繰り返し制御を行わない。従って、演算ユニット１２は、１回目または指定の回数の演算が終了後、自身のデータレジスタ１２２が出力するデータ、自身の回路情報識別子レジスタ１２４が出力する回路情報識別子、および、自身の再構成規則レジスタ１２５が出力する再構成規則を、そのまま次段の演算ユニット１２（の繰り返し制御部１２６）に出力する。同様に、コントローラ１０から伝搬される書き込み制御情報もまた、繰り返し制御を行なっている間は演算ユニット１２に保持され、繰り返し制御の終了後に、次段の演算ユニット１２に出力される。
【００４７】
図４は、繰り返し制御部１２６の動作の一例を示す状態遷移図である。本例では、再構成規則は、演算ユニット１２Ａ〜１２Ｅを識別するためのタグと再構成の回数の組により表現する。
【００４８】
初期状態Ｓ１において、繰り返し制御部１２６は、再構成規則のタグ部が自身の演算ユニット１２を示し、かつ、再構成規則の再構成回数が２以上の場合には、状態Ｓ２に遷移する。そうでない場合には、繰り返し制御部１２６は、初期状態Ｓ１に遷移する。また、いずれの遷移においても、繰り返し制御部１２６は、内蔵する記憶部（図示せず）に再構成回数をセットするとともに、自身の演算ユニット１２の外部から入力されるデータ、回路情報識別子、および、再構成規則（再構成の回数およびタグ）をそのまま出力する。
【００４９】
状態Ｓ２において、繰り返し制御部１２６は、内蔵する記憶部（図示せず）にセットされている再構成回数の値が２の場合には、初期状態Ｓ１に遷移し、そうでない場合には、内蔵する記憶部（図示せず）にセットされている再構成回数の値を１減らすとともに状態Ｓ２に遷移する。また、いずれの遷移においても、繰り返し制御部１２６は、自身の演算ユニット１２が有するデータレジスタ１２２のデータ、回路情報識別子レジスタ１２４の回路情報識別子、および、再構成規則レジスタ１２５の再構成規則を再度出力する。
【００５０】
図５は、繰り返し制御部１２６の動作の他の一例を示す状態遷移図である。本例では、再構成規則は、演算ユニット１２Ａ〜１２Ｅを識別するためのタグと、タグで示された演算ユニットにおける最後の再構成において実行される演算のための回路情報を特定する回路情報識別子の組により表現する。
【００５１】
本例では、初期状態Ｓ１および状態Ｓ２における繰り返し制御部１２６の出力は、図４の場合と同じである。初期状態Ｓ１から状態Ｓ２への遷移は、再構成規則のタグ部が自身の演算ユニット１２を示し、かつ、再構成規則の回路情報識別子部が自身の演算ユニット１２に外部から入力される回路情報識別子と異なる場合に生じる。そして、初期状態Ｓ１から状態Ｓ２へ遷移する際、および、状態Ｓ２から再び状態Ｓ２に遷移する際に、回路情報識別子レジスタ１２４の回路情報識別子の値は１増える。また、状態Ｓ２から初期状態Ｓ１への遷移は、自身の演算ユニット１２の回路情報識別子レジスタ１２４から入力される回路情報識別子が、再構成規則の回路情報識別子部と等しい場合に生じる。
【００５２】
（コントローラにおけるデータ処理）
次に、コントローラ１０におけるデータ処理について詳しく説明する。図６は、コントローラ１０の構成を示すブロック図である。コントローラ１０は、制御部１０Ａ、プログラムカウンタ１０Ｂ、プログラムコードメモリ１０Ｃ、および、タイミングラッチ１０Ｄを備えて構成されている。
【００５３】
制御部１０Ａは、プログラムカウンタ１０Ｂの値をアドレスとして、プログラムコードメモリ１０Ｃからプログラムコードを読み出す。さらに、制御部１０Ａは、読み出されたプログラムコードに基づいて、入出力バッファ１１のアクセスを制御するための制御情報（書き込み制御情報および読み出し制御情報）と再構成情報（回路情報識別子および再構成規則）とを出力する。制御部１０Ａは、プログラムカウンタ１０Ｂおよびプログラムコードメモリ１０Ｃに接続する。
【００５４】
そして、入出力バッファ１１から演算ユニット１２Ａへのデータ読み出しを制御するための制御情報（読み出し制御情報）は、入出力バッファ１１に送られる。また、入出力バッファ１１へのデータ書込みを制御するための制御情報（書き込み制御情報）と、再構成情報（回路情報識別子および再構成規則）とは、入出力バッファ１１から読み出されたデータが演算ユニット１２Ａに到着するサイクルに演算ユニット１２Ａに到着するようにタイミングラッチ１０Ｄにより時間調整された後、演算ユニット１２Ａに送られる。
【００５５】
なお、プログラムコードメモリ１０Ｃには、データ処理の開始前に、外部装置２によりプログラムコードが書き込まれる。また、プログラムカウンタ１０Ｂの値は、外部装置２によりプログラムコードの先頭アドレスに更新される。
【００５６】
図７は、プログラムコードメモリ１０Ｃに格納されるプログラムコードの構造例を示した図である。本例では、プログラムコードは、入出力バッファ１１の読み出しアドレスを示す入力アドレス、入出力バッファ１１の書き込みアドレスを示す出力アドレス、回路情報識別子、再構成規則、有効フラグ、および、終端フラグからなる。なお、入力アドレスが読み出し制御情報であり、出力アドレスおよび有効フラグが書き込み制御情報である。
【００５７】
プログラムコードは、１サイクルで１アドレスずつ解釈される。プログラムカウンタ１０Ｂは、１つのアドレスの解釈を終えるたびに１つ増加する。入力アドレスは、入出力バッファ１１に転送される。そして、出力アドレス、回路情報識別子、再構成規則、および、有効フラグは、演算ユニット１２Ａ〜１２Ｅにパイプライン式に転送され、最後に、出力アドレスおよび有効フラグのみが、演算ユニット１２Ｅから演算結果（データ）とともに入出力バッファ１１に転送される。ここで、有効フラグは、入出力バッファ１１への書込みが有効であるかどうかを示すもので、有効でない場合には、演算ユニット１２Ｅの演算結果は入出力バッファ１１に書き込まれない。
【００５８】
終端フラグは、プログラムコードの終端を示すものである。制御部１０Ａは、プログラムコードの終端アドレスの解釈を終えると、データ処理の完了を外部装置２に通知する。また、制御部１０Ａは、外部装置２から新たなデータ処理の開始を通知されるまで、入出力バッファ１１への書込みを無効とする旨を意味する有効フラグを出力する。
【００５９】
（半導体装置の動作例）
次に、半導体装置１が、演算ユニット１２が受け取った再構成情報（回路情報識別子および再構成規則）に従って、演算器１２０の回路構成を変えながら、入力データに対して演算を実行する動作例を説明する。図８は、半導体装置１が演算を行う際の動作を説明する図である。ここで、説明を容易にするために、サイクル１で、コントローラ１０はプログラムコードの解釈を始めるものとし、コントローラ１０が再構成情報（回路情報識別子および再構成規則）を解釈したそのサイクルに、解釈された再構成情報（回路情報識別子および再構成規則）は演算ユニット１２Ａに到着するものとする。
【００６０】
図９は、本実施の形態で実行されるデータ処理においてコントローラ１０が解釈するプログラムコードを示した図である。本例では、再構成規則は、演算ユニット１２Ａ〜１２Ｅを識別するタグと再構成の回数の組とする。本プログラムは、入出力バッファ１１から５サイクル続けて読み出されたデータに対して６つの演算を順に行った結果を、入出力バッファ１１に５サイクル続けて書き込むという処理を、全１０サイクルで実行する。
【００６１】
サイクル１で、演算ユニット１２Ａは、再構成情報（回路情報識別子“０”および再構成規則“１２Ｅ＿２”）を受け取り、回路情報記憶部１２１から回路情報“ｃ００”を読み出して演算器１２０の回路構成を変更する。そして、演算ユニット１２Ａは、入出力バッファ１１の（入力）アドレス“０”から読み出されたデータに対して演算を行い、演算結果“ｄ０”を出力する。また、演算ユニット１２Ａは、再構成情報（更新された回路情報識別子“１”および再構成規則“１２Ｅ＿２”）を出力する。ここで、再構成規則“１２Ｅ＿２”は、識別するタグが演算ユニット１２Ｅ、繰り返し回数が２であることを示す。
【００６２】
なお、サイクル１で、演算ユニット１２Ｂ〜１２Ｅは、入力された回路情報識別子とデータに従って演算を行っているが、各演算ユニット１２での演算結果に基づいて最終的に演算ユニット１２Ｅから出力される演算結果は入出力バッファ１１に書き込まれないため、演算を行っていないものと見なすことができる。以後のサイクルにおいて、演算を行っていないものと見なせる演算ユニット１２の動作説明は省略する。
【００６３】
サイクル２で、演算ユニット１２Ａは、再構成情報（回路情報識別子“１０”および再構成規則“１２Ｄ＿２”）を受け取り、回路情報記憶部１２１から回路情報“ｃ１０”を読み出して演算器１２０の回路構成を変更する。そして、演算ユニット１２Ａは、入出力バッファ１１の（入力）アドレス“１”から読み出されたデータに対して演算を行い、演算結果“ｄ１０”を出力する。また、演算ユニット１２Ａは、再構成情報（更新された回路情報識別子“１１”および再構成規則“１２Ｄ＿２”）を出力する。ここで、再構成規則“１２Ｄ＿２”は、識別するタグが演算ユニット１２Ｄ、繰り返し回数が２であることを示す。
【００６４】
一方、サイクル２で、演算ユニット１２Ｂは、再構成情報（回路情報識別子“１”および再構成規則“１２Ｅ＿２”）を受け取り、回路情報記憶部１２１から回路情報“ｃ０１”を読み出して演算器１２０の回路構成を変更する。そして、演算ユニット１２Ｂは、演算ユニット１２Ａから受け取ったデータ“ｄ０”に対して演算を行い、演算結果“ｄ１”を出力する。また、演算ユニット１２Ｂは、再構成情報（更新された回路情報識別子“２”および再構成規則“１２Ｅ＿２”）を出力する。
【００６５】
以下同様にして、サイクル５までは、演算ユニット１２Ａは、コントローラ１０から転送される再構成情報の回路情報識別子に従って、回路情報記憶部１２１から回路情報を読み出して演算器１２０の回路構成を変更し、入出力バッファ１１から受け取ったデータに対して演算を行って、演算結果（データ）を出力する。また、演算ユニット１２Ａは、コントローラ１０から受け取った回路情報識別子に１を加えたものと、コントローラ１０から受け取る再構成規則とを再構成情報として出力する。演算ユニット１２Ｂ〜１２Ｅは、前段の演算ユニット１２Ａ〜１２Ｄから転送されるデータおよび再構成情報（回路情報識別子および再構成規則）に対して、演算ユニット１２Ａと同様の動作を行う。
【００６６】
サイクル６で、演算ユニット１２Ａ〜１２Ｅは、前のサイクルで各々出力した再構成情報の回路情報識別子“４１”、“３２”、“２３”、“１４”、および、“５”に従って、回路情報記憶部１２１から回路情報“ｃ４１、“ｃ３２”、“ｃ２３”、“ｃ１４”、および、“ｃ０５”を各々読み出して演算器１２０の回路構成を変更する。そして、演算ユニット１２Ａ〜１２Ｅは、前のサイクルで自身が出力した演算結果“ｄ４０”、“ｄ３１”、“ｄ２２”、“ｄ１３”、および、“ｄ４”に対して各々演算を行い、演算結果“ｄ４１”、“ｄ３２”、“ｄ２３”、“ｄ１４”、および、“ｄ５”を各々出力する。また、演算ユニット１２Ａ〜１２Ｅは、再構成情報（回路情報識別子“４２”、“３３”、“２４”、“１５”、“６”、および、再構成規則“１２Ａ＿２”、“１２Ｂ＿２”、“１２Ｃ＿２”、“１２Ｄ＿２”、“１２Ｅ＿２”）を各々出力する。なお、演算ユニット１２Ｅは、演算結果“ｄ５”のみを入出力バッファ１１の（出力）アドレス１００に出力し、再構成情報（回路情報識別子 “６”、および、再構成規則“１２Ｅ＿２”）は、（出力）アドレス１００には出力しない。
【００６７】
サイクル６における動作がサイクル１〜５における動作と異なるのは、サイクル５で演算ユニット１２Ａ〜１２Ｅが各々受け取った再構成情報の再構成規則において、各タグが演算ユニット１２Ａ〜１２Ｅを示し、さらに、再構成回数が２であるため、演算ユニット１２Ａ〜１２Ｅの繰り返し制御部１２６全てが、サイクル６で、初期状態Ｓ１から状態Ｓ２に遷移しているからである。
【００６８】
サイクル７では、演算ユニット１２Ａ〜１２Ｅの全ての繰り返し制御部１２６は、状態Ｓ２から初期状態Ｓ１に遷移しているため、演算ユニット１２Ａ〜１２Ｅはサイクル１〜５と同様の動作を行う。ただし、コントローラ１０は、プログラムコードの解釈を既に完了しているため、演算ユニット１２Ａは演算を行っていないものと見なせる。
【００６９】
以後サイクル７と同様にして、サイクル８では演算ユニット１２Ｃ〜１２Ｅが演算を行い、サイクル９では演算ユニット１２Ｄ〜１２Ｅが演算を行い、サイクル１０では演算ユニット１２Ｅが演算を行い、サイクル１０ですべての演算が完了する。
【００７０】
以上、説明した本実施の形態によれば、パイプライン型に接続した複数のリコンフィギュラブル回路のそれぞれに対して、前のサイクルに演算した結果を入力として再度演算を行うよう制御することが可能となった。
【００７１】
そして、このような半導体装置を提供することにより、図８に示される演算ユニット１２Ａ〜１２Ｅの動作例のように、コントローラ１０から送られる再構成規則に従って、演算ユニット１２Ａ〜１２Ｅが、同じサイクルにおいて前のサイクルで演算した結果を入力として再度演算を行うことにより、入出力バッファ１１からのデータ読み出しから入出力バッファ１１へのデータ書き込みまでに行われる演算の段数が演算ユニット１２の数よりも多いような処理であっても、演算ユニット１２が演算を行わない時間がないように処理を実現することが可能となる。
【００７２】
このように、本実施の形態にかかる半導体装置によれば、各演算ユニットが、指定された回数分の演算を完了した場合には、演算結果であるデータと更新された再構成情報とを次段の演算ユニットに入力し、指定された回数分の演算を完了していない場合には、演算結果であるデータと更新された再構成情報とを再度自身に入力し、更新された再構成情報に基づいて再度演算を行うことができるので、パイプライン型に接続した複数の演算ユニットのそれぞれに対して、前のサイクルに演算した結果を入力として再度演算を行うよう制御することでき、データに対して、演算ユニットの段数よりも多い数の演算処理を順番に実行する場合であっても、演算ユニットがデータに対する演算処理を実行しない時間を、より少なくすることが可能となる。
【産業上の利用可能性】
【００７３】
本発明は、演算処理を行う全ての半導体装置に有用である。
【図面の簡単な説明】
【００７４】
【図１】本実施の形態にかかる半導体装置の構成を示すブロック図である。
【図２】演算ユニットの構成を示すブロック図である。
【図３】演算器の構成の一例を示す図である。
【図４】繰り返し制御部の動作の一例を示す状態遷移図である。
【図５】繰り返し制御部の動作の他の一例を示す状態遷移図である。
【図６】コントローラの構成を示すブロック図である。
【図７】プログラムコードメモリに格納されるプログラムコードの構造例を示した図である。
【図８】半導体装置が演算を行う際の動作を説明する図である。
【図９】本実施の形態で実行されるデータ処理においてコントローラが解釈するプログラムコードを示した図である。
【符号の説明】
【００７５】
１  半導体装置
２  外部装置
１０  コントローラ
１０Ａ  制御部
１０Ｂ  プログラムカウンタ
１０Ｃ  プログラムコードメモリ
１０Ｄ  タイミングラッチ
１１  入出力バッファ
１２Ａ、１２Ｂ、１２Ｃ、１２Ｄ、１２Ｅ  演算ユニット
１２０  演算器
１２１  回路情報記憶部
１２２  データレジスタ
１２３  回路情報識別子更新部
１２４  回路情報識別子レジスタ
１２５  再構成規則レジスタ
１２６  繰り返し制御部
【図１】
2010009247.tif 000003
【図２】
2010009247.tif 000004
【図３】
2010009247.tif 000005
【図４】
2010009247.tif 000006
【図５】
2010009247.tif 000007
【図６】
2010009247.tif 000008
【図７】
2010009247.tif 000009
【図８】
2010009247.tif 000010
【図９】
2010009247.tif 000011