(57)【要約】【課題】占有面積および消費電力を低減することができる動的再構成回路，半導体集積回路および動的再構成回路の制御方法の提供を図る。【解決手段】演算を実行する動的再構成が可能な演算器アレイ１４と、時間軸方向に分割された構成情報cfg(0)〜cfg(3)を格納する命令メモリ１３と、前記命令メモリを制御して、該命令メモリから前記時間軸方向に分割された構成情報を前記演算器アレイに入力すると共に、該時間軸方向に分割された構成情報を取り込むための制御信号を前記演算器アレイに入力するステートマシン１２と、を有する。【選択図】図５
2013254436.tif 000002
【特許請求の範囲】
【請求項１】
演算を実行する動的再構成が可能な演算器アレイと、
時間軸方向に分割された構成情報を格納する命令メモリと、
前記命令メモリを制御して、該命令メモリから前記時間軸方向に分割された構成情報を前記演算器アレイに入力すると共に、該時間軸方向に分割された構成情報を取り込むための制御信号を前記演算器アレイに入力するステートマシンと、
を有することを特徴とする動的再構成回路。
【請求項２】
前記ステートマシンは、
前記時間軸方向に分割された構成情報に対応する複数のトリガ信号を前記演算器アレイに入力する、
ことを特徴とする請求項１に記載の動的再構成回路。
【請求項３】
前記ステートマシンは、
前記トリガ信号のタイミングに従って、前記命令メモリに対するデータ読み出し制御を行う、
ことを特徴とする請求項２に記載の動的再構成回路。
【請求項４】
さらに、
前記演算器アレイに入出力するデータを格納する共有メモリを有する、
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載の動的再構成回路。
【請求項５】
前記演算器アレイは、
演算を行う複数の演算器と、
前記各演算器間の接続を制御するネットワーク回路と、
前記共有メモリに対する読み出しおよび書き込み制御を行う制御回路と、
を有することを特徴とする請求項４に記載の動的再構成回路。
【請求項６】
演算を実行する動的再構成が可能な演算器アレイと、時間軸方向に分割された構成情報を格納する命令メモリと、前記命令メモリを制御して，該命令メモリから前記時間軸方向に分割された構成情報を前記演算器アレイに入力すると共に，該時間軸方向に分割された構成情報を取り込むための制御信号を前記演算器アレイに入力するステートマシンと、を有する動的再構成回路と、
前記演算器アレイに入出力するデータを格納する共有メモリと、
前記共有メモリおよび前記命令メモリに接続されたシステムバスと、
前記システムバスに接続され、前記動的再構成回路を制御するマイクロコントローラと、
を有することを特徴とする半導体集積回路。
【請求項７】
演算を実行する動的再構成が可能な演算器アレイを有する動的再構成回路の制御方法であって、
前記演算器アレイに対して、時間軸方向に分割された構成情報、および、該時間軸方向に分割された構成情報に対応する複数のトリガ信号を入力し、
前記演算器アレイの入力となるデータ読み出しを一番早い位相のトリガ信号で実施する、
ことを特徴とする動的再構成回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で言及する実施例は、動的再構成回路，半導体集積回路および動的再構成回路の制御方法に関する。
【背景技術】
【０００２】
近年、データを処理するプロセッサ要素(例えば、演算器：ＡＬＵ(Arithmetic Logic Unit)アレイ)と、そのプロセッサ要素を接続するネットワークを有するリコンフィギュラブル回路(reconfigurable circuit)が様々な分野で利用されている。
【０００３】
このようなリコンフィギュラブル回路として、内部の演算器(ＡＬＵ)の動作および演算器間の接続を動作中に変更することで、任意の演算フローを実現する動的再構成回路(Dynamic reconfigurable circuit：以下、リコンフィグ回路とも称する)が提案されている。リコンフィグ回路は、その演算フローから、連続したデータをパイプライン形式で演算するアプリケーションに適している。
【０００４】
ところで、従来、マイクロコントローラの演算性能を向上するために、マイクロコントローラおよびハードウェアマクロを搭載した半導体集積回路が提案されている。また、従来、動的再構成回路としては、様々なものが提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−０３１１２７号公報
【特許文献２】特開２００７−１８８５２８号公報
【特許文献３】特開２００６−０１８５３９号公報
【特許文献４】特開２００９−０３７２９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、従来、マイクロコントローラの演算性能を向上するため、マイクロコントローラおよびハードウェアマクロを搭載した半導体集積回路が提案されている。
【０００７】
しかしながら、このような半導体集積回路におけるハードウェアマクロとして、ハードウェアの構成を動的に変更するリコンフィグ技術の搭載は、小型化および低消費電力の面で十分なものとは言えなかった。
【課題を解決するための手段】
【０００８】
一実施形態によれば、演算を実行する動的再構成が可能な演算器アレイと、時間軸方向に分割された構成情報を格納する命令メモリと、ステートマシンと、を有する動的再構成回路が提供される。
【０００９】
前記ステートマシンは、前記命令メモリを制御して、該命令メモリから前記時間軸方向に分割された構成情報を前記演算器アレイに入力すると共に、該時間軸方向に分割された構成情報を取り込むための制御信号を前記演算器アレイに入力する。
【発明の効果】
【００１０】
開示の動的再構成回路，半導体集積回路および動的再構成回路の制御方法は、占有面積および消費電力を低減することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、半導体集積回路の一例を示すブロック図である。
【図２】図２は、図１に示す半導体集積回路の動的再構成回路における演算器アレイの構成例を説明するためのブロック図である。
【図３】図３は、図２に示す演算器アレイの動作シーケンスの一例を説明するためのタイミング図である。
【図４】図４は、図１に示す動的再構成回路により実行する演算フローの一例に対応した演算器アレイの構成例を示す図である。
【図５】図５は、半導体集積回路の一実施例を示すブロック図である。
【図６】図６は、図５に示す半導体集積回路の動的再構成回路における命令メモリに格納されるデータを説明するための図である。
【図７】図７は、図５に示す半導体集積回路の動的再構成回路における演算器アレイの部分構成の一例を説明するためのブロック図である。
【図８】図８は、図７に示す演算器アレイの動作シーケンスの一例を説明するためのタイミング図である。
【図９】図９は、図５に示す動的再構成回路により実行する演算フローの一例を説明するための図である。
【図１０】図１０は、図９に示す演算フローに対応した演算器アレイの構成例を示す図である。
【図１１】図１１は、図１０に示す演算フローに対応した演算器アレイの動作シーケンスの一例を示すタイミング図(その１)である。
【図１２】図１２は、図１０に示す演算フローに対応した演算器アレイの動作シーケンスの一例を示すタイミング図(その２)である。
【図１３】図１３は、図１０に示す演算フローに対応した演算器アレイの動作シーケンスの他の例を示すタイミング図(その１)である。
【図１４】図１４は、図１０に示す演算フローに対応した演算器アレイの動作シーケンスの他の例を示すタイミング図(その２)である。
【発明を実施するための形態】
【００１２】
まず、動的再構成回路，半導体集積回路および動的再構成回路の制御方法の実施例を詳述する前に、図１〜図４を参照して、動的再構成回路の一例、並びに、その動的再構成回路における問題点を説明する。
【００１３】
図１は、半導体集積回路の一例を示すブロック図であり、動的再構成回路(Dynamic reconfigurable circuit：リコンフィグ回路)１０１，マイクロコントローラ(Micro-Control Unit：ＭＣＵ、マイクロプロセッサ)１０２およびシステムバス１０３を示す。
【００１４】
図１に示す半導体集積回路は、リコンフィグ回路１０１とＭＣＵ１０２を協調動作させるためには、システムバス１０３を介して通信を行うようになっている。
【００１５】
リコンフィグ回路１０１は、共有メモリ(例えば、ＳＲＡＭ(Static Random Access Memory))１１１、および、ステートマシン(シーケンサ)１１２を含む。リコンフィグ回路１０１は、さらに、命令メモリ(コンフィギュレーションＲＡＭ)１１３および演算器アレイ(ＡＬＵ(Arithmetic and Logic Unit)アレイ)１１４を含む。ここで、リコンフィグ回路１０１に対する演算入力およびその演算結果出力は、共有メモリ１１１を経由して送受信される。
【００１６】
リコンフィグ回路１０１の動作は、ＡＬＵアレイ１１４内に搭載された複数の演算器(Processing Element：ＰＥ)と演算器間のネットワーク回路の組み合わせを変更することで、任意の演算フローが実行可能となる。
【００１７】
ＡＬＵアレイ１１４の動作は、専用の命令メモリであるコンフィギュレーションＲＡＭ１１３内に保持された命令をＡＬＵアレイ１１４内の各回路に設定することで、その組み合わせを動的に変更することを実現する。
【００１８】
ＡＬＵアレイ１１４は、メモリアドレス(memory address)および読出／書込制御(read/write controll)信号を、共有メモリ１１１のアドレス(address1)端子および読出／書込制御(read/write controll)端子に入力する。
【００１９】
さらに、ＡＬＵアレイ１１４は、出力データ(data output)を共有メモリ１１１の書き込みデータ(write data4)端子に入力し、また、共有メモリ１１１は、読み出しデータ(read data4)をＡＬＵアレイ１１４のデータ入力(data input)に入力する。
【００２０】
コンフィギュレーションＲＡＭ１１３は、４つのＳＲＡＭ１１３０〜１１３３を含み、シーケンサ１１２は、これらのＳＲＡＭ１１３０〜１１３３に対して、それぞれ読み出し要求(read request0：read req0)およびアドレス(address0)を入力する。
【００２１】
また、シーケンサ１１２は、ＡＬＵアレイ１１４に対して、ストール信号stallおよびトリガ信号trigを入力する。ここで、コンフィギュレーションＲＡＭ１１３の各ＳＲＡＭ１１３０〜１１３３は、それぞれｍビット，ｎワード構成とされている。
【００２２】
図１において、ＳＲＡＭ１１３０〜１１３３は、ＡＬＵアレイ１１４に対して、シーケンサ１１２からのread request0およびaddress0に対応した読み出しデータread data0〜read data3を、構成データcfg0〜cfg3として入力する。ここで、ＳＲＡＭ１１３０〜１１３３の読み出しデータread data0〜read data3は、それぞれｍビット(例えば、１２８ビット)のデータである。
【００２３】
さらに、コンフィギュレーションＲＡＭ１１３(ＳＲＡＭ１１３０)からシーケンサ１１２に対して、ＡＬＵアレイ１１４の構成を確認するためのデータ(例えば、read data0における３２ビット分のデータ)がフィードバックされる。なお、read data0における残りのビット(例えば、９６ビット)のデータは、構成データcfg0としてＡＬＵアレイ１１４に入力される。
【００２４】
図２は、図１に示す半導体集積回路の動的再構成回路における演算器アレイの構成例を説明するためのブロック図である。図２に示されるように、演算器アレイ(ＡＬＵアレイ)１１４は、ｎ個の演算器ＰＥ1〜ＰＥn、制御回路１１４１およびネットワーク回路１１４２を含む。
【００２５】
演算器ＰＥ(ＰＥ1〜ＰＥn)は、四則演算を実行する回路であり、その演算結果は、命令データ(opecode)により決定される。個々の演算器ＰＥ1〜ＰＥnは、共有メモリ１１１からの命令データ(オペコード：opecode)を保持するフリップフロップ(ＦＦ：例えば、ＰＥ1のＦＦp11およびＰＥnのＦＦpn1)を持つことで連続したデータ入力の演算処理を行うことができる。このＦＦ(ＦＦp11，ＦＦpn1等)は、シーケンサ(ステートマシン)１１２からのトリガ信号trigにより保持する命令データが更新される。
【００２６】
すなわち、演算器ＰＥ1のフリップフロップＦＦp11は、例えば、ＳＲＡＭ１１３１の読み出しデータread data1(cfg1)における３２ビットのデータ(0〜31)をトリガ信号trigにより取り込む。そして、ＰＥ1により処理されたデータ(result)は、ストール信号stallにより制御されるフリップフロップＦＦp12を介してデータdoutとして出力される。
【００２７】
なお、ＰＥ2のＦＦp21は、例えば、read data1(cfg1)における３２ビットのデータ(32〜63)をトリガ信号trigにより取り込む。ただし、これらのビット構成は、単なる例であり、様々に変形して適用することができるのはいうまでもない。
【００２８】
制御回路１１４１は、共有メモリ１１１の読み出しおよび書き込みを制御する回路(Shared Memory Read/Write Controller)であり、共有メモリ１１１からの演算入力データの読み出し、並びに、共有メモリ１１１への演算結果データの書き込みを行う。
【００２９】
制御回路１１４１は、共有メモリ１１１に対して、読み出しおよび書き込み制御信号(read req0〜4 および write req0〜4)、並びに、メモリアドレス(memory address)を出力し、共有メモリ１１１からのデータ読み出しおよびデータ書き込みを制御する。
【００３０】
ここで、メモリアドレスは、フリップフロップＦＦc1から出力され、また、読み出しおよび書き込み制御信号は、フリップフロップＦＦc2から出力される。これらＦＦc1およびＦＦc2は、シーケンサ１１２からのストール信号stallにより取り込みタイミングが制御される。
【００３１】
なお、共有メモリ１１１のアドレス生成、並びに、読み出しおよび書き込みの制御は、構成データcfg0をトリガ信号trigで取り込むフリップフロップＦＦc3からの命令データ(opecode)により決定される。
【００３２】
ネットワーク回路１１４２は、演算器ＰＥ間の接続を変更するスイッチネットワーク回路であり、その接続方法は、命令データ(Network Configuration：ネットワーク構成)により決定される。ここで、ネットワーク回路１１４２は、フリップフロップＦＦn1を含み、このＦＦn1は、例えば、構成データcfg2をトリガ信号trigで取り込むようになっている。
【００３３】
以上において、命令データ(opecodeまたはNetwork configuration)は、シーケンサ１１２からのトリガ信号trigにより内部のフリップフロップ(ＦＦ)にその内容が保持される。そのため、再びトリガ信号trigがアサートされるまでは、ＡＬＵアレイ１１４の構成が保持されることになる。
【００３４】
これにより、上述したリコンフィグ回路１０１は、例えば、連続したデータ入力を演算処理するディジタルフィルタ等のアプリケーションに対して、性能を向上することができる。
【００３５】
図３は、図２に示す演算器アレイの動作シーケンスの一例を説明するためのタイミング図である。図３に示されるように、図１および図２を参照して説明したコンフィグ回路は、シーケンサ１１２からのトリガ信号trigにより、ＡＬＵアレイ１１４内の回路にコンフィギュレーションＲＡＭ１１３からの命令データがロードされて各回路が動作を開始する。
【００３６】
すなわち、タイミングＴ01において、トリガ信号trigがアサートされて高レベル『Ｈ』の状態で、クロックＣＬＫが低レベル『Ｌ』から『Ｈ』に立ち上がると、構成データcfg0〜cfg3としてデータｃ０〜ｃ３が並列に取り込まれる。
【００３７】
さらに、制御回路１１４１から共有メモリ１１１に対して読み出し要求(read request0：read req0)が出力されると、例えば、２クロックの後、共有メモリ１１１からネットワーク回路１１４２に対して読み出しデータ(入力データ)din(0)が出力される。
【００３８】
なお、制御回路１１４１から出力されるread req0に続く読み出し要求read req1，read req2，…に対しては、din(0)に続いて入力データdin(1)，din(2)，…がネットワーク回路１１４２に入力されることになる。ここで、図３に示す例では、トリガ信号trigによる取り込みタイミングＴ01から演算が開始するタイミングＴ02まで、クロックＣＬＫの３サイクル分だけ掛かることになる。
【００３９】
図４は、図１に示す動的再構成回路により実行する演算フローの一例に対応した演算器アレイ(ＡＬＵアレイ)の構成例を示す図である。図４に示されるように、ＡＬＵアレイ１１４は、ｎ個の演算器ＰＥ1〜ＰＥnを有し、各ＰＥ1〜ＰＥnは、それぞれ所定の機能を実現するように設定されている。
【００４０】
具体的に、図４の例において、ＰＥ1は、ネットワーク回路１１４２を介して共有メモリ１１１からの入力データｘ[]およびｙ[]を受け取って乗算を行い、ＰＥ2は、ＰＥ1の出力を右方向へ４だけシフトし、そして、ＰＥ3はＰＥ2の出力に８を加算する。
【００４１】
さらに、ＰＥ4は、ＰＥ3の出力を左方向へ１だけシフトし、ＰＥmは、ＰＥm-1の出力から２を減算し、そして、ＰＥnは、ＰＥn-1の出力に対して３を乗算し、ネットワーク回路１１４２を介して出力データｚ[]として共有メモリ１１１に出力する。ここで、図４の構成例において、レイテンシは、ｎクロックとなり、それ以降は、クロックごとにｚ[]が出力される。
【００４２】
ところで、上述したリコンフィグ回路１０１を、ＭＣＵ１０２を有する半導体集積回路に搭載する場合、回路コスト(占有面積および消費電力)を抑えることが課題となる。
【００４３】
例えば、回路コストの削減には、専用メモリの個数を減らす方法が考えられるが、これは、１サイクル内で読み出すことのできる専用の命令メモリのビット幅の縮小、並びに、リコンフィグ回路の組み合わせを変更する範囲の制限を招くことになる。
【００４４】
以下、動的再構成回路，半導体集積回路および動的再構成回路の制御方法の実施例を、添付図面を参照して詳述する。図５は、半導体集積回路の一実施例を示すブロック図であり、動的再構成回路(Dynamic reconfigurable circuit：リコンフィグ回路)１，マイクロコントローラ(ＭＣＵ)２およびシステムバス３を示す。
【００４５】
図５に示す半導体集積回路は、前述した図１の半導体集積回路と同様に、リコンフィグ回路１とＭＣＵ２を協調動作させるためには、システムバス３を介して通信を行うようになっている。
【００４６】
リコンフィグ回路１は、共有メモリ(例えば、ＳＲＡＭ)１１、および、ステートマシン(シーケンサ)１２を含む。リコンフィグ回路１は、さらに、命令メモリ(コンフィギュレーションＲＡＭ)１３および演算器アレイ(ＡＬＵアレイ)１４を含む。ここで、リコンフィグ回路１に対する演算入力およびその演算結果出力は、共有メモリ１１を経由して送受信される。
【００４７】
リコンフィグ回路１の動作は、ＡＬＵアレイ１４内に搭載された複数の演算器(ＰＥ)と演算器間のネットワーク回路の組み合わせを変更することで、任意の演算フローが実行可能となる。
【００４８】
ＡＬＵアレイ１４の動作は、専用の命令メモリであるコンフィギュレーションＲＡＭ１３(ＳＲＡＭ１３０)内に保持された命令をＡＬＵアレイ１４内の各回路に設定することで、その組み合わせを動的に変更することを実現する。
【００４９】
ＡＬＵアレイ１４は、メモリアドレス(memory address)および読出／書込制御(read/write controll)信号を、共有メモリ１１のアドレス(address1)端子および読出／書込制御(read/write controll)端子に入力する。
【００５０】
さらに、ＡＬＵアレイ１４は、出力データ(data output)を共有メモリ１１の書き込みデータ(write data4)端子に入力し、また、共有メモリ１１は、読み出しデータ(read data4)をＡＬＵアレイ１４のデータ入力(data input)に入力する。
【００５１】
コンフィギュレーションＲＡＭ１３は、１つのＳＲＡＭ１３０を含み、シーケンサ１２は、このＳＲＡＭ１３０に対して、読み出し要求(read request0：read req0)およびアドレス(address0)を入力する。
【００５２】
また、シーケンサ１２は、ＡＬＵアレイ１４に対して、２つのストール信号stall operation，stall memaccおよび４つのトリガ信号trig0〜trig3を入力する。ここで、コンフィギュレーションＲＡＭ１３のＳＲＡＭ１３０は、ｍビット，ｎ×４ワード構成とされている。
【００５３】
図６は、図５に示す半導体集積回路の動的再構成回路における命令メモリに格納されるデータを説明するための図である。図６に示されるように、命令メモリ(コンフィギュレーションＲＡＭ１３：ＳＲＡＭ１３０)は、時間軸方向に分割された構成情報を複数組(構成０のｃ０〜ｃ３乃至構成ｎのｃ０〜ｃ３を格納する。例えば、ＳＲＡＭ１３０は、ｍビット，ｎ×４ワード構成のデータを格納する。
【００５４】
なお、ＳＲＡＭ１３０に格納されたデータは、シーケンサ１２からの読み出し要求およびアドレスに従って、すなわち、read req0〜nおよびaddress0〜nに従って対応する構成０〜ｎのデータcfg(c0〜c3)をＡＬＵアレイ１４に出力する。
【００５５】
図７は、図５に示す半導体集積回路の動的再構成回路における演算器アレイの部分構成の一例を説明するためのブロック図であり、図８は、図７に示す演算器アレイの動作シーケンスの一例を説明するためのタイミング図である。図７に示されるように、演算器アレイ(ＡＬＵアレイ)１４は、ｎ個の演算器ＰＥ1〜ＰＥn、制御回路１４１およびネットワーク回路１４２を含む。
【００５６】
演算器ＰＥ(ＰＥ1〜ＰＥn)は、四則演算を実行する回路であり、その演算結果は、命令データ(opecode)により決定される。個々の演算器ＰＥ1〜ＰＥnは、共有メモリ１１からの命令データ(オペコード：opecode)を保持するフリップフロップ(ＦＦ：例えば、ＰＥ1のＦＦp11およびＰＥnのＦＦpn1)を持つことで連続したデータ入力の演算処理を行うことができる。このＦＦ(ＦＦp11，ＦＦpn1等)は、シーケンサ(ステートマシン)１２からのトリガ信号trig0〜trig3により保持する命令データが更新される。
【００５７】
ここで、図７および図８と前述した図２および図３の比較から明らかなように、本実施例のコンフィグ回路において、ＡＬＵアレイ１４は、２つのストール信号stall operation，stall memaccおよび４つのトリガ信号trig0〜trig3を使用する。
【００５８】
制御回路１４１は、共有メモリ１１の読み出しおよび書き込みを制御する回路(Shared Memory Read/Write Controller)であり、共有メモリ１１からの演算入力データの読み出し、並びに、共有メモリ１１への演算結果データの書き込みを行う。
【００５９】
制御回路１４１は、共有メモリ１１に対して、読み出しおよび書き込み制御信号(read req0〜4 および write req0〜4)、並びに、メモリアドレス(memory address)を出力し、共有メモリ１１からのデータ読み出しおよびデータ書き込みを制御する。
【００６０】
ここで、メモリアドレスmemory addressは、フリップフロップＦＦc1から出力され、また、読み出しおよび書き込み制御信号read/write controllは、フリップフロップＦＦc2から出力される。これらＦＦc1およびＦＦc2は、シーケンサ１２からのストール信号stall memaccにより取り込みタイミングが制御される。
【００６１】
なお、共有メモリ１１のアドレス生成、並びに、読み出しおよび書き込みの制御は、構成データcfg(c0)をトリガ信号trig0で取り込むフリップフロップＦＦc3からの命令データ(opecode)により決定される。
【００６２】
ネットワーク回路１４２は、演算器ＰＥ間の接続を変更するスイッチネットワーク回路であり、その接続方法は、命令データ(Network Configuration：ネットワーク構成)により決定される。ここで、ネットワーク回路１４２は、フリップフロップＦＦn1を含み、このＦＦn1は、例えば、構成データcfg(c2)をトリガ信号trig2で取り込むようになっている。
【００６３】
以上において、命令データ(opecodeまたはNetwork configuration)は、シーケンサ１２からのトリガ信号trig0〜trig3により内部のフリップフロップ(ＦＦ)にその内容が保持される。そのため、再びトリガ信号trig0〜trig3がアサートされるまでは、ＡＬＵアレイ１４の構成が保持されることになる。
【００６４】
ここで、構成データcfg(c0〜c3)を取り込む制御信号としては、上述した位相が異なるトリガ信号trig0〜trig3に限定されず、例えば、１つのトリガ信号trig0をカウンタでカウントして各構成データcfg(c0〜c3)を取り込む制御信号を生成することもできる。
【００６５】
なお、後述するように、命令ロード用のトリガ信号は、全てのトリガ信号trig0〜trig3ではなく、再構成が必要なグループのトリガ信号(trig0)だけを使用して、その設定を変更することも可能である。
【００６６】
演算器ＰＥ1のフリップフロップＦＦp11は、例えば、ＳＲＡＭ１３０の読み出しデータread data0(cfg(c0〜c3))における３２ビットのデータ(例えば、cfg(c1)の0〜31)をトリガ信号trig1により取り込む。
【００６７】
ＰＥ1により処理されたデータ(result)は、ストール信号stall operationにより制御されるフリップフロップＦＦp12を介してデータdoutとして出力される。すなわち、共有メモリ１１からの入力データが確定するまで、ＡＬＵアレイ１４内の演算器を、停止信号(stall operation)によりその動作を停止させることができる。
【００６８】
なお、ＰＥ2のＦＦp21は、例えば、cfg(c1)における３２ビットのデータ(32〜63)をトリガ信号trig1により取り込む。ただし、これらのビット構成は、単なる例であり、様々に変形して適用することができるのはいうまでもない。
【００６９】
すなわち、図５〜図８と前述した図１〜図３の比較から明らかなように、本実施例のコンフィグ回路では、専用の命令メモリ(コンフィギュレーションＲＡＭ)１３を時間軸方向に多重化して、設定情報をロードするようになっている。
【００７０】
ここで、シーケンサ１２からＡＬＵアレイ１４に入力する命令ロード用のトリガ信号trigは、設定を分割してロードするのに対応させるために、４つのトリガ信号trig0，trig1，trig2，trig3とされ、そのタイミングが時間的に異なるようになっている。
【００７１】
すなわち、図８に示されるように、タイミングＴ11において、トリガ信号tri0gが『Ｈ』の状態でクロックＣＬＫが『Ｌ』から『Ｈ』に立ち上がると、構成データcfg(c0)が取り込まれる。また、タイミングＴ12において、トリガ信号tri1gが『Ｈ』の状態でクロックＣＬＫが『Ｌ』から『Ｈ』に立ち上がると、構成データcfg(c1)が取り込まれる。
【００７２】
さらに、タイミングＴ13において、トリガ信号tri2gが『Ｈ』の状態でクロックＣＬＫが『Ｌ』から『Ｈ』に立ち上がると、構成データcfg(c2)が取り込まれる。そして、タイミングＴ14において、トリガ信号tri3gが『Ｈ』の状態でクロックＣＬＫが『Ｌ』から『Ｈ』に立ち上がると、構成データcfg(c3)が取り込まれる。
【００７３】
ここで、図８の例では、制御回路１４１から共有メモリ１１に対して読み出し要求(read request0：read req0)が出力されると、２クロックの後、共有メモリ１１からネットワーク回路１４２に対して読み出しデータ(入力データ)din(0)が出力される。
【００７４】
なお、制御回路１４１から出力されるread req0に続く読み出し要求read req1，read req2，…に対しては、din(0)に続いて入力データdin(1)，din(2)，…がネットワーク回路１４２に入力されることになる。
【００７５】
本実施例のコンフィグ回路では、例えば、図１のように、ｍビット幅のＳＲＡＭを４つ(１１３０〜１１３３)設けることなく、ｍビット幅の１つのＳＲＡＭ１３０を設けるだけでよい。そのため、コンフィギュレーションＲＡＭ１３(ＳＲＡＭ１３０)とＡＬＵアレイ１４を接続するビット幅をｍとする(ｍ×４の四分の一とする)ことができ、回路の占有面積を低減することが可能となる。
【００７６】
さらに、本実施例のコンフィグ回路によれば、前述した４つのＳＲＡＭ１１３０〜１１３３をアクセスすることなく、１つのＳＲＡＭ１３０のアクセスだけでよいため、消費電力を低減することにもなる。ここで、ＳＲＡＭ１３０を時間軸方向に多重化する数、すなわち、トリガ信号を分割する数は、『４』に限定されるものではなく、ＳＲＡＭ１３０のビット幅等に従って様々な値に設定することができる。
【００７７】
以上において、図８から明らかなように、ＡＬＵアレイ１４の入力となる共有メモリ１１からの読み出しデータ(read data4、data input: din(0))は、一番早い位相のトリガ信号(図８では、trig0)で動作を開始するようになっている。これにより、ＡＬＵアレイ１４の演算開始までに必要なサイクルを最小化することが可能となる。
【００７８】
具体的に、図８に示す例では、トリガ信号trig0による取り込みタイミングＴ11から演算が開始するタイミングＴ15まで、クロックＣＬＫの４サイクル分だけ掛かることになる。従って、図３を参照して説明したコンフィグ回路に対しては、クロックＣＬＫの１サイクル分の遅延だけでよいことになる。なお、この１サイクル分の遅延は、最初のデータdin(0)を処理するまでのレイテンシであり、それ以降は、同様の処理が可能である。
【００７９】
図９は、図５に示す動的再構成回路により実行する演算フローの一例を説明するための図であり、同じ演算フローを持つが共有メモリ１１へのアクセス方法のみ異なる演算を実行する場合を示すものである。
【００８０】
［ＡＬＵアレイの構成情報０］と［ＡＬＵアレイの構成情報１］の差異は、［ＡＬＵアレイの構成情報０］の『for  (i=0; i<1024; i+2)｛』(ｉが偶数(０を含む))が、［ＡＬＵアレイの構成情報１］では『for  (i=1; i<1024; i+2)｛』(ｉが奇数)となっている。
【００８１】
この場合、構成情報の全て(構成データcfg(c0)〜(c3))を変更(再設定)せずに、例えば、供給メモリ１１の制御に関する構成データcfg(c0)だけを変更すればよい。すなわち、共有メモリ１１へのアクセスは、一番位相の早いトリガ信号trig0でその動作が決定されるため、trig0に関する構成情報(cfg(c0))だけを書き換える。これにより、命令メモリ１３(ＳＲＡＭ１３０)のリード回数と、命令メモリ１３の容量を削減できることが分かる。
【００８２】
図１０は、図９に示す演算フローに対応した演算器アレイの構成例を示す図であり、前述した図４と同様のものを示す。図１１および図１２は、図１０に示す演算フローに対応した演算器アレイの動作シーケンスの一例を示すタイミング図である。ここで、図１１および図１２の例では、共有メモリ１１へのアクセスを規定する命令がcfg(0)に保存されているものとする。
【００８３】
まず、図１１に示されるように、［ＡＬＵアレイの構成情報０］では、『for  (i=0; i<1024; i+2)｛』となっているため、構成データcfg(c0), cfg(c1), cfg(c2), cfg(c3)をトリガ信号trig0, trig1, trig2, trig3で取り込む。
【００８４】
このとき、演算開始までのサイクルは、一番早い位相のトリガ信号trig0によるタイミングＴ21から、ＡＬＵアレイ１４の入力データ(data input: x[0], y[0])が共有メモリ１１から出力されるタイミングＴ22まで、クロックＣＬＫの４サイクル分だけ掛かる。
【００８５】
さらに、図１２に示されるように、［ＡＬＵアレイの構成情報０］を［ＡＬＵアレイの構成情報１］に変更する場合、［ＡＬＵアレイの構成情報１］では、『for  (i=1; i<1024; i+2)｛』となっているため、構成データcfg(c0)だけをトリガ信号trig0で取り込む。
【００８６】
すなわち、全ての構成データcfg(c0), cfg(c1), cfg(c2), cfg(c3)をトリガ信号trig0, trig1, trig2, trig3で取り込まずに、供給メモリ１１の制御に関する構成データcfg(c0)だけをトリガ信号trig0で取り込むだけでよいことになる。
【００８７】
このとき、演算開始までのサイクルは、トリガ信号trig0によるタイミングＴ23から、ＡＬＵアレイ１４の入力データ(data input: x[1], y[1])が共有メモリ１１から出力されるタイミングＴ24まで、クロックＣＬＫの４サイクル分だけ掛かる。
【００８８】
図１３および図１４は、図１０に示す演算フローに対応した演算器アレイの動作シーケンスの他の例を示すタイミング図である。ここで、図１３および図１４と、上述した図１１および図１２の比較から明らかなように、図１３および図１４では、構成データおよびトリガ信号が８分割されている。また、図１３および図１４の例では、共有メモリ１１へのアクセスを規定する命令がcfg(0)とcfg(1)に保存されているものとする。
【００８９】
図１３に示されるように、シーケンサ１２からＡＬＵアレイ１４に入力する命令ロード用のトリガ信号は、設定を８つの構成データcfg(c0)〜cfg(c7)に分割してロードするのに対応して、タイミングの異なる８つのトリガ信号trig0〜trig7とされている。
【００９０】
ここで、図１３および図１４に示す８分割時の例において、メモリアクセス用のストール(stall)信号stall memaccは、例えば、メモリアクセスに必要なクロックＣＬＫの３サイクル分、動作用のstall信号stall operationよりも早くネゲートする。
【００９１】
これにより、リコンフィグ回路の構成情報をロードした直後(cfg(c7)の直後に、共有メモリ１１からＡＬＵアレイ１４の入力データ(data input: x[0], y[0])を出力させて動作を開始することができる。
【００９２】
すなわち、本実施例においても、全ての構成データcfg(c0)〜cfg(c7)のロードが完了するのを待つことなく、最初の構成データcfg(c0)、換言すると、一番早い位相のトリガ信号trig0によるタイミングＴ31から所定のタイミングで動作を開始する。
【００９３】
具体的に、図１３では、構成データcfg(c5)をトリガ信号trig5で取り込む直後に、読み出し制御信号(read(0))を共有メモリ１１に出力し、それに従って出力されたＡＬＵアレイ１４の入力データ(data input: x[0], y[0])がタイミングＴ32で使用可能となる。
【００９４】
従って、演算開始までのサイクルは、トリガ信号trig0によるタイミングＴ31から、入力データ(data input: x[0], y[0])が共有メモリ１１から出力されるタイミングＴ32まで、クロックＣＬＫの８サイクル分だけ掛かることになる。
【００９５】
さらに、図１４に示されるように、［ＡＬＵアレイの構成情報０］を［ＡＬＵアレイの構成情報１］に変更する場合、構成データcfg(c0), cfg(c1)だけをトリガ信号trig0, trig1で取り込む。
【００９６】
すなわち、全ての構成データcfg(c0)〜cfg(c7)をトリガ信号trig0〜trig7で取り込まずに、供給メモリ１１の制御に関する構成データcfg(c0) , cfg(c1)だけをトリガ信号trig0, trig1で取り込むだけでよい。
【００９７】
ここで、演算開始までのサイクルは、トリガ信号trig0によるタイミングＴ33から、ＡＬＵアレイ１４の入力データ(data input: x[1], y[1])が共有メモリ１１から出力されるタイミングＴ34まで、クロックＣＬＫの５サイクル分だけ掛かることになる。なお、前述したように、ＳＲＡＭ１３０を時間軸方向に多重化する数、すなわち、トリガ信号を分割する数は、『４』および『８』に限定されるものではない。
【００９８】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【００９９】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
（付記１）
演算を実行する動的再構成が可能な演算器アレイと、
時間軸方向に分割された構成情報を格納する命令メモリと、
前記命令メモリを制御して、該命令メモリから前記時間軸方向に分割された構成情報を前記演算器アレイに入力すると共に、該時間軸方向に分割された構成情報を取り込むための制御信号を前記演算器アレイに入力するステートマシンと、
を有することを特徴とする動的再構成回路。
【０１００】
（付記２）
前記ステートマシンは、
前記時間軸方向に分割された構成情報に対応する複数のトリガ信号を前記演算器アレイに入力する、
ことを特徴とする付記１に記載の動的再構成回路。
【０１０１】
（付記３）
前記ステートマシンは、
前記トリガ信号のタイミングに従って、前記命令メモリに対するデータ読み出し制御を行う、
ことを特徴とする付記２に記載の動的再構成回路。
【０１０２】
（付記４）
前記命令メモリは、
前記時間軸方向に分割された構成情報を複数組格納する、
ことを特徴とする付記１乃至付記３のいずれか１項に記載の動的再構成回路。
【０１０３】
（付記５）
前記時間軸方向に分割された構成情報は、
前記命令メモリのビット幅に従って、分割数が規定される、
ことを特徴とする付記１乃至付記４のいずれか１項に記載の動的再構成回路。
【０１０４】
（付記６）
さらに、
前記演算器アレイに入出力するデータを格納する共有メモリを有する、
ことを特徴とする付記１乃至付記５のいずれか１項に記載の動的再構成回路。
【０１０５】
（付記７）
前記演算器アレイは、
演算を行う複数の演算器と、
前記各演算器間の接続を制御するネットワーク回路と、
前記共有メモリに対する読み出しおよび書き込み制御を行う制御回路と、
を有することを特徴とする付記６に記載の動的再構成回路。
【０１０６】
（付記８）
前記ステートマシンは、
前記複数の演算器と前記ネットワーク回路の設定情報を部分的に書き換える、
ことを特徴とする付記７に記載の動的再構成回路。
【０１０７】
（付記９）
前記ステートマシンは、
前記共有メモリからの入力データが確定するまで、前記演算器アレイにおける前記演算器の動作を停止信号により停止させる、
ことを特徴とする付記７または付記８に記載の動的再構成回路。
【０１０８】
（付記１０）
演算を実行する動的再構成が可能な演算器アレイと、時間軸方向に分割された構成情報を格納する命令メモリと、前記命令メモリを制御して，該命令メモリから前記時間軸方向に分割された構成情報を前記演算器アレイに入力すると共に，該時間軸方向に分割された構成情報を取り込むための制御信号を前記演算器アレイに入力するステートマシンと、を有する動的再構成回路と、
前記演算器アレイに入出力するデータを格納する共有メモリと、
前記共有メモリおよび前記命令メモリに接続されたシステムバスと、
前記システムバスに接続され、前記動的再構成回路を制御するマイクロコントローラと、
を有することを特徴とする半導体集積回路。
【０１０９】
（付記１１）
前記演算器アレイは、
前記共有メモリからのデータ読み出しを優先して実施することで、前記マイクロコントローラと前記共有メモリのアクセス期間中に、前記演算器アレイ内の命令をロードする、
ことを特徴とする付記１０に記載の半導体集積回路。
【０１１０】
（付記１２）
前記演算器アレイは、
前記共有メモリからのデータ読み出しを一番早い位相のトリガ信号に従って実施する、
ことを特徴とする付記１１に記載の半導体集積回路。
【０１１１】
（付記１３）
演算を実行する動的再構成が可能な演算器アレイを有する動的再構成回路の制御方法であって、
前記演算器アレイに対して、時間軸方向に分割された構成情報、および、該時間軸方向に分割された構成情報に対応する複数のトリガ信号を入力し、
前記演算器アレイの入力となるデータ読み出しを一番早い位相のトリガ信号で実施する、
ことを特徴とする動的再構成回路の制御方法。
【符号の説明】
【０１１２】
１，１０１    動的再構成回路(リコンフィグ回路)
２，１０２    マイクロコントローラ(ＭＣＵ)
３，１０３    システムバス
１１，１１１    共有メモリ（ＳＲＡＭ）
１２，１１２    ステートマシン(シーケンサ)
１３，１１３    命令メモリ(コンフィギュレーションＲＡＭ)
１４，１１４    演算器アレイ(ＡＬＵアレイ)
１３０，１１３０，１１３１，１１３２，１１３３    ＳＲＡＭ
１４１，１１４１    制御回路
１４２，１１４２    ネットワーク回路
ＰＥ1〜ＰＥn    演算器
【図１】
2013254436.tif 000003
【図２】
2013254436.tif 000004
【図３】
2013254436.tif 000005
【図４】
2013254436.tif 000006
【図５】
2013254436.tif 000007
【図６】
2013254436.tif 000008
【図７】
2013254436.tif 000009
【図８】
2013254436.tif 000010
【図９】
2013254436.tif 000011
【図１０】
2013254436.tif 000012
【図１１】
2013254436.tif 000013
【図１２】
2013254436.tif 000014
【図１３】
2013254436.tif 000015
【図１４】
2013254436.tif 000016