(57)【特許請求の範囲】
【請求項１】
第１の出力端子及び第２の出力端子を含み、演算を行う演算器群と、
第１の入力端子、第２の入力端子及びスイッチを含み、前記演算器群の出力端子及び入力端子間の接続を前記スイッチにより切り換えるネットワーク回路と、
前記演算器群及びネットワーク回路の間に接続される第１のセレクタとを有し、
前記第１のセレクタは、第１の制御信号が第１の状態のときには前記演算器群の第１の出力端子と前記ネットワーク回路の第１の入力端子とを接続しかつ前記演算器群の第２の出力端子と前記ネットワーク回路の第２の入力端子とを接続し、第１の制御信号が第２の状態のときには前記演算器群の第１の出力端子と前記ネットワーク回路の第２の入力端子とを接続しかつ前記演算器群の第２の出力端子と前記ネットワーク回路の第１の入力端子とを接続し、
前記演算器群の入力端子は、前記ネットワーク回路の出力端子に接続されることを特徴とするリコンフィグラブル回路。
【請求項２】
前記演算器群は、第３の出力端子及び第４の出力端子を有し、
前記ネットワーク回路は、第３の入力端子及び第４の入力端子を有し、
前記第１のセレクタは、第２の制御信号が第１の状態のときには前記演算器群の第３の出力端子と前記ネットワーク回路の第３の入力端子とを接続しかつ前記演算器群の第４の出力端子と前記ネットワーク回路の第４の入力端子とを接続し、第２の制御信号が第２の状態のときには前記演算器群の第３の出力端子と前記ネットワーク回路の第４の入力端子とを接続しかつ前記演算器群の第４の出力端子と前記ネットワーク回路の第３の入力端子とを接続することを特徴とする請求項１記載のリコンフィグラブル回路。
【請求項３】
さらに、ネットワーク制御信号情報を記憶するネットワークメモリと、
前記第１の制御信号の情報を記憶するレジスタとを有し、
前記ネットワーク回路は、前記ネットワークメモリに記憶されるネットワーク制御信号情報に応じて前記接続を制御し、
前記第１のセレクタは、前記レジスタに記憶される第１の制御信号の情報に応じて前記接続を行うことを特徴とする請求項１記載のリコンフィグラブル回路。
【請求項４】
第１の入力端子及び第２の入力端子を含み、演算を行う演算器群と、
第１の出力端子、第２の出力端子及びスイッチを含み、前記演算器群の出力端子及び入力端子間の接続を前記スイッチにより切り換えるネットワーク回路と、
前記演算器群及びネットワーク回路の間に接続される第１のセレクタとを有し、
前記第１のセレクタは、第１の制御信号が第１の状態のときには前記演算器群の第１の入力端子と前記ネットワーク回路の第１の出力端子とを接続しかつ前記演算器群の第２の入力端子と前記ネットワーク回路の第２の出力端子とを接続し、第１の制御信号が第２の状態のときには前記演算器群の第１の入力端子と前記ネットワーク回路の第２の出力端子とを接続しかつ前記演算器群の第２の入力端子と前記ネットワーク回路の第１の出力端子とを接続し、
前記演算器群の出力端子は、前記ネットワーク回路の入力端子に接続されることを特徴とするリコンフィグラブル回路。
【請求項５】
前記演算器群は、第３の入力端子及び第４の入力端子を有し、
前記ネットワーク回路は、第３の出力端子及び第４の出力端子を有し、
前記第１のセレクタは、第２の制御信号が第１の状態のときには前記演算器群の第３の入力端子と前記ネットワーク回路の第３の出力端子とを接続しかつ前記演算器群の第４の入力端子と前記ネットワーク回路の第４の出力端子とを接続し、第２の制御信号が第２の状態のときには前記演算器群の第３の入力端子と前記ネットワーク回路の第４の出力端子とを接続しかつ前記演算器群の第４の入力端子と前記ネットワーク回路の第３の出力端子とを接続することを特徴とする請求項４記載のリコンフィグラブル回路。
【請求項６】
さらに、ネットワーク制御信号情報を記憶するネットワークメモリと、
前記第１の制御信号の情報を記憶するレジスタとを有し、
前記ネットワーク回路は、前記ネットワークメモリに記憶されるネットワーク制御信号情報に応じて前記接続を制御し、
前記第１のセレクタは、前記レジスタに記憶される第１の制御信号の情報に応じて前記接続を行うことを特徴とする請求項４記載のリコンフィグラブル回路。
【請求項７】
第１の入力端子、第２の入力端子、第１の出力端子及び第２の出力端子を含み、演算を行う演算器群と、
第１の入力端子、第２の入力端子、第１の出力端子、第２の出力端子及びスイッチを含み、前記演算器群の出力端子及び入力端子間の接続を前記スイッチにより切り換えるネットワーク回路と、
前記演算器群及びネットワーク回路の間に接続される第１のセレクタ、
前記演算器群及びネットワーク回路の間に接続される第２のセレクタとを有し、
前記第１のセレクタは、第１の制御信号が第１の状態のときには前記演算器群の第１の出力端子と前記ネットワーク回路の第１の入力端子とを接続しかつ前記演算器群の第２の出力端子と前記ネットワーク回路の第２の入力端子とを接続し、第１の制御信号が第２の状態のときには前記演算器群の第１の出力端子と前記ネットワーク回路の第２の入力端子とを接続しかつ前記演算器群の第２の出力端子と前記ネットワーク回路の第１の入力端子とを接続し、
前記第２のセレクタは、第２の制御信号が第１の状態のときには前記演算器群の第１の入力端子と前記ネットワーク回路の第１の出力端子とを接続しかつ前記演算器群の第２の入力端子と前記ネットワーク回路の第２の出力端子とを接続し、第２の制御信号が第２の状態のときには前記演算器群の第１の入力端子と前記ネットワーク回路の第２の出力端子とを接続しかつ前記演算器群の第２の入力端子と前記ネットワーク回路の第１の出力端子とを接続することを特徴とするリコンフィグラブル回路。
【請求項８】
前記演算器群は、第３の入力端子、第４の入力端子、第３の出力端子及び第４の出力端子を有し、
前記ネットワーク回路は、第３の入力端子、第４の入力端子、第３の出力端子及び第４の出力端子を有し、
前記第１のセレクタは、第３の制御信号が第１の状態のときには前記演算器群の第３の出力端子と前記ネットワーク回路の第３の入力端子とを接続しかつ前記演算器群の第４の出力端子と前記ネットワーク回路の第４の入力端子とを接続し、第３の制御信号が第２の状態のときには前記演算器群の第３の出力端子と前記ネットワーク回路の第４の入力端子とを接続しかつ前記演算器群の第４の出力端子と前記ネットワーク回路の第３の入力端子とを接続し、
前記第２のセレクタは、第４の制御信号が第１の状態のときには前記演算器群の第３の入力端子と前記ネットワーク回路の第３の出力端子とを接続しかつ前記演算器群の第４の入力端子と前記ネットワーク回路の第４の出力端子とを接続し、第４の制御信号が第２の状態のときには前記演算器群の第３の入力端子と前記ネットワーク回路の第４の出力端子とを接続しかつ前記演算器群の第４の入力端子と前記ネットワーク回路の第３の出力端子とを接続することを特徴とする請求項７記載のリコンフィグラブル回路。
【請求項９】
さらに、ネットワーク制御信号情報を記憶するネットワークメモリと、
前記第１の制御信号の情報を記憶する第１のレジスタと、
前記第２の制御信号の情報を記憶する第２のレジスタとを有し、
前記ネットワーク回路は、前記ネットワークメモリに記憶されるネットワーク制御信号情報に応じて前記接続を制御し、
前記第１のセレクタは、前記第１のレジスタに記憶される第１の制御信号の情報に応じて前記接続を行い、
前記第２のセレクタは、前記第２のレジスタに記憶される第２の制御信号の情報に応じて前記接続を行うことを特徴とする請求項７記載のリコンフィグラブル回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リコンフィグラブル回路に関する。
【背景技術】
【０００２】
図８はコンフィグレーション０を設定したリコンフィグラブル回路の構成例を示す図であり、図９はコンフィグレーション１を設定したリコンフィグラブル回路の構成例を示す図である。リコンフィグラブル回路は、ネットワークモジュール８０１を有する。ネットワークモジュール８０１は、外部入力データ端子ＤＩのデータを入力し、外部出力データ端子ＤＯからデータを出力する。また、ネットワークモジュール８０１は、第１のＡＬＵ（算術論理演算ユニット：Arithmetic and Logic Unit）８１１、第２のＡＬＵ８１２、第３のＡＬＵ８１３、第４のＡＬＵ８１４、カウンタ８１５及びＲＡＭ８１６を有する。ＡＬＵ８１１〜８１４は、入力端子ａ及びｂからデータを入力し、演算結果を出力端子ｏから出力する。カウンタ８１５は、入力端子ａ及びｂからデータを入力し、カウンタ値を出力端子ｏから出力する。ＲＡＭ８１６は、ライト端子ｗｒｉｔｅ及びリード端子ｒｅａｄに信号を入力し、出力端子ｏからデータを出力する。
【０００３】
まず、図８のコンフィグレーション０について説明する。外部入力データ端子ＤＩは、第１のＡＬＵ８１１の入力端子ａ及びｂに接続される。第１のＡＬＵ８１１は、例えば入力端子ａ及びｂのデータの加算を行う。第１のＡＬＵ８１１の出力端子ｏは、第３のＡＬＵ８１３の入力端子ａに接続される。第３のＡＬＵ８１３は、例えば入力端子ａのデータの４ビットシフト演算を行う。第３のＡＬＵ８１３の出力端子ｏは、ＲＡＭ８１６のライト端子に接続される。ＲＡＭ８１６は、例えばライト動作を行う。
【０００４】
次に、図９のコンフィグレーション１について説明する。外部入力データ端子ＤＩは、第４のＡＬＵ８１４の入力端子ａ及びカウンタ８１５の入力端子ａに接続される。カウンタ８１５の出力端子ｏは、ＲＡＭ８１６のリード端子ｒｅａｄに接続される。ＲＡＭ８１６は、例えばリード動作を行う。ＲＡＭ８１６の出力端子ｏは、第４のＡＬＵ８１４の入力端子ｂに接続される。第４のＡＬＵ８１４は、例えば入力端子ａ及びｂのデータの乗算を行う。第４のＡＬＵ８１４の出力端子ｏは、外部出力データ端子ＤＯに接続される。
【０００５】
図１０は、ネットワークモジュール８０１の構成例を示す図である。ネットワークモジュール８０１は、４個の第１のスイッチ１００１及び４個の第２のスイッチ１００２を有し、６４ビットの制御信号ＳＥＬを基にスイッチ１００１及び１００２を制御する。スイッチ１００１及び１００２は、それぞれ、４個の入力端子及び４個の出力端子を有し、各出力端子から４個の入力端子に入力されるデータのうちの１つを選択して出力することができる。６４ビットの制御信号ＳＥＬは、８個の８ビットの制御信号からなる。８個のスイッチ１００１及び１００２は、それぞれ、その８個の８ビットの制御信号を基に制御を行う。第１のスイッチ１００１の入力端子は、上記の演算器８１１〜８１６及び外部入力データ端子ＤＩに接続される。第１のスイッチ１００１の出力端子は、第２のスイッチ１００２の入力端子に接続される。第２のスイッチ１００２の出力端子は、演算器８１１〜８１６の入力端子及び外部出力データ端子ＤＯに接続される。
【０００６】
以上のように、ネットワークモジュール８０１は、コンフィグレーション設定の制御信号ＳＥＬに応じて、演算器８１１〜８１６の機能を切り替え、その演算器８１１〜８１６間の接続を切り替えることができる。
【０００７】
下記の特許文献１には、複数のデータ入力ノードに接続される入力スイッチと、複数のデータ出力ノードに接続される出力スイッチと、前記入力スイッチと前記出力スイッチとの間に演算器及び第１データ保持回路とを有する第１データパスと、前記入力スイッチと前記出力スイッチとの間に第２データ保持回路とを有する第２データパスとを具備し、前記第１データ保持回路は、前記演算器の演算結果データを格納し、前記第２データ保持回路は、前記複数のデータ入力ノードの何れかに入力されたデータを保持することを特徴とする半導体集積回路が記載されている。
【０００８】
下記の特許文献２には、不揮発性メモリ素子を内蔵し、該メモリ素子を書換えることにより機能変更が可能な複数のプロセッサと、この複数のプロセッサ同士をプログラマブルに相互接続するための手段とが、一つの半導体基板に形成された半導体集積回路装置が記載されている。
【０００９】
【特許文献１】特開２００５−４４３２９号公報
【特許文献２】特開平６−２７４４５９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ネットワークモジュール８０１は、各演算器８１１〜８１６の出力端子から各演算器８１１〜８１６の入力端子まで、どの組み合わせについても自由に接続できることが望ましい。しかし、図１０に示すように、制御信号ＳＥＬのビット数及び回路規模削減のため、配線を共有した構成をとる。このため、場合によってはネットワークモジュール８０１内で競合が発生し、接続できない組み合わせが存在する。
【００１１】
本発明の目的は、回路規模を削減し、かつ演算器群の出力端子及び入力端子の接続可能な組み合わせ数を増やすことができるリコンフィグラブル回路を提供することである。
【課題を解決するための手段】
【００１２】
本発明の一観点によれば、第１の出力端子及び第２の出力端子を含み、演算を行う演算器群と、第１の入力端子、第２の入力端子及びスイッチを含み、前記演算器群の出力端子及び入力端子間の接続を前記スイッチにより切り換えるネットワーク回路と、前記演算器群及びネットワーク回路の間に接続される第１のセレクタとを有し、前記第１のセレクタは、第１の制御信号が第１の状態のときには前記演算器群の第１の出力端子と前記ネットワーク回路の第１の入力端子とを接続しかつ前記演算器群の第２の出力端子と前記ネットワーク回路の第２の入力端子とを接続し、第１の制御信号が第２の状態のときには前記演算器群の第１の出力端子と前記ネットワーク回路の第２の入力端子とを接続しかつ前記演算器群の第２の出力端子と前記ネットワーク回路の第１の入力端子とを接続し、前記演算器群の入力端子は、前記ネットワーク回路の出力端子に接続されることを特徴とするリコンフィグラブル回路が提供される。
【発明の効果】
【００１３】
第１のセレクタを設けることにより、回路規模を削減し、かつ演算器群の出力端子及び入力端子の接続可能な組み合わせ数を増やすことができる。
【発明を実施するための最良の形態】
【００１４】
図１１は、図１０のネットワークモジュール８０１を簡単化した構成例を示す図である。第１のスイッチ１１０１及び１１０２は、図１０の第１のスイッチ１００１を簡単化したものである。第２のスイッチ１１１１及び１１１２は、図１０の第２のスイッチ１００２を簡単化したものである。
【００１５】
スイッチ１１０１及び１１０２は、２個の入力端子及び２個の出力端子を有し、各出力端子からは２個の入力端子のデータのうちのいずれかを選択して出力することができる。スイッチ１１１１及び１１１２は、２個の入力端子及び４個の出力端子を有し、各出力端子からは２個の入力端子のデータのうちのいずれかを選択して出力することができる。
【００１６】
スイッチ１１０１の２個の入力端子は、図８の第３のＡＬＵ８１３の出力端子ＡＬＵ３ｏ及びＲＡＭ８１６の出力端子ＲＡＭｏに接続される。スイッチ１１０１の２個の出力端子は、１個がスイッチ１１１１の入力端子に接続され、他の１個がスイッチ１１１２の入力端子に接続される。
【００１７】
スイッチ１１０２の２個の入力端子は、図８の第１のＡＬＵ８１１の出力端子ＡＬＵ１ｏ及び第２のＡＬＵ８１２の出力端子ＡＬＵ２ｏに接続される。スイッチ１１０２の２個の出力端子は、１個がスイッチ１１１１の入力端子に接続され、他の１個がスイッチ１１１２の入力端子に接続される。
【００１８】
スイッチ１１１１の４個の出力端子は、図８の第１のＡＬＵ８１１の第１の入力端子ＡＬＵ１ａ、第１のＡＬＵ８１１の第２の入力端子ＡＬＵ１ｂ、第２のＡＬＵ８１２の第１の入力端子ＡＬＵ２ａ、及び第２のＡＬＵ８１２の第２の入力端子ＡＬＵ２ｂに接続される。
【００１９】
スイッチ１１１２の４個の出力端子は、図８の第３のＡＬＵ８１３の第１の入力端子ＡＬＵ３ａ、第３のＡＬＵ８１３の第２の入力端子ＡＬＵ３ｂ、ＲＡＭ８１６のライト端子ＲＡＭｗｒｉｔｅ、及びＲＡＭ８１６のリード端子ＲＡＭｒｅａｄに接続される。
【００２０】
ここで、ネットワークモジュール８０１が、出力端子ＡＬＵ３ｏと入力端子ＡＬＵ１ａとを接続し、出力端子ＲＡＭｏと入力端子ＡＬＵ２ａとを接続する場合を考える。出力端子ＡＬＵ３ｏは、スイッチ１１０１及び１１１１を介して、入力端子ＡＬＵ１ａに接続可能である。出力端子ＲＡＭｏも、スイッチ１１０１及び１１１１を介して、入力端子ＡＬＵ２ａに接続可能である。スイッチ１１０１及び１１１１を接続するパスは１個しかないため、端子ＡＬＵ３ｏ及びＡＬＵ１ａ間のパスと端子ＲＡＭｏ及びＡＬＵ２ａ間のパスとが、スイッチ１１０１の出力端子１１２０で競合してしまう。その結果、端子ＡＬＵ３ｏ及びＡＬＵ１ａ間のパスと端子ＲＡＭｏ及びＡＬＵ２ａ間のパスとを両方同時に接続することができない。
【００２１】
図１２は、図１１の回路に対して、出力端子ＲＡＭｏ及びＡＬＵ１ｏを入れ替えた回路を示す図である。ここで、上記と同様に、ネットワークモジュール８０１が、出力端子ＡＬＵ３ｏと入力端子ＡＬＵ１ａとを接続し、出力端子ＲＡＭｏと入力端子ＡＬＵ２ａとを接続する場合を考える。出力端子ＡＬＵ３ｏは、スイッチ１１０１及び１１１１を介して、入力端子ＡＬＵ１ａに接続される。出力端子ＲＡＭｏは、スイッチ１１０２及び１１１１を介して、入力端子ＡＬＵ２ａに接続される。スイッチ１１０１及び１１１１を接続するパスが１個存在し、スイッチ１１０２及び１１１１を接続するパスが１個存在するため、端子ＡＬＵ３ｏ及びＡＬＵ１ａ間のパスと端子ＲＡＭｏ及びＡＬＵ２ａ間のパスとを両方同時に接続することができる。
【００２２】
図１１の場合には、ネットワークモジュール８０１内でデータの衝突が起こる可能性がある。これを回避するためには、図１２に示すように、ネットワークモジュール８０１及び演算器間の接続を変更すればよい。しかし、演算器の出力端子は、ハードウエアで固定されているため、その位置を入れ替えることはできない。そこで、本実施形態では、演算器の出力端子ＲＡＭｏ及びＡＬＵ１ｏの信号線を入れ替え接続することにより、図１２に示すように、ネットワークモジュール８０１内のデータ衝突を回避させる。
【００２３】
図１は、本発明の実施形態によるリコンフィグラブル回路の構成例を示す図である。このリコンフィグラブル回路は、コンフィグレーションの設定により、図８の回路及び図９の回路に切り替えることができる。
【００２４】
ＣＰＵ１０１は、ＣＰＵバス１０２を介して、ＣＰＵインタフェース１０３に接続される。コンフィグレーションＲＡＭ１０４は、ネットワークメモリであり、ＣＰＵバス１０２及びＣＰＵインタフェース１０３を介してＣＰＵ１０１に接続される。また、コンフィグレーションＲＡＭ１０４は、コンフィグレーション０〜コンフィグレーション６３の６４面分のネットワーク制御信号情報（コンフィグレーションデータ）を記憶する。１面分のネットワーク制御信号情報は、Ｎビットである。ＣＰＵ１０１は、６４面分のネットワーク制御信号情報を予めコンフィグレーションＲＡＭ１０４に書き込むことができる。
【００２５】
ＣＰＵ１０１は、例えば図８のコンフィグレーション０を設定する場合には、コンフィグレーション０のアドレスをコンフィグレーションＲＡＭ１０４に出力する。すると、コンフィグレーションＲＡＭ１０４は、Ｎビットのコンフィグレーション０のネットワーク制御信号情報をネットワーク回路１０５に出力する。
【００２６】
また、ＣＰＵ１０１は、例えば図９のコンフィグレーション１を設定する場合には、コンフィグレーション１のアドレスをコンフィグレーションＲＡＭ１０４に出力する。すると、コンフィグレーションＲＡＭ１０４は、Ｎビットのコンフィグレーション１のネットワーク制御信号情報をネットワーク回路１０５に出力する。
【００２７】
以上のように、コンフィグレーションＲＡＭ１０４は、ＣＰＵ１０１から入力されるコンフィグレーションのアドレスに応じて、Ｎビットのネットワーク制御信号情報をネットワーク回路１０５に出力することで構成を動的に変更することができる。
【００２８】
演算器群は、演算を行うｎ個の演算器１１１〜１１ｎからなる。ネットワーク回路１０５は、ｎ個の演算器１１１〜１１ｎの出力端子とｎ個の演算器１１１〜１１ｎの入力端子との間の接続を制御する（動的に組み換える）。その詳細は、後に図２を参照しながら説明する。セレクタ１０６は、演算器１１１〜１１ｎの出力端子とネットワーク回路１０５の入力端子との間に接続され、演算器１１１〜１１ｎの出力端子とネットワーク回路１０５の入力端子との接続を入れ替えることができる。同様に、セレクタ１０７は、演算器１１１〜１１ｎの入力端子とネットワーク回路１０５の出力端子との間に接続され、演算器１１１〜１１ｎの入力端子とネットワーク回路１０５の出力端子との接続を入れ替えることができる。これにより、図１２に示したように、ネットワーク回路１０５内のデータ衝突を回避することができる。
【００２９】
図２は、ネットワーク回路１０５の構成例を示す図である。ネットワーク回路１０５は、第１のスイッチ２０１〜２０８、第２のスイッチ２１１〜２１８及び第３のスイッチ２２１〜２２８を有する。第１のスイッチ２０１〜２０８は、それぞれ、４個の入力端子及び４個の出力端子を有し、各出力端子からは４個の入力端子のデータのうちのいずれかを選択して出力することができる。第２のスイッチ２１１〜２１８は、それぞれ、４個の入力端子及び２個の出力端子を有し、各出力端子からは４個の入力端子のデータのうちのいずれかを選択して出力することができる。第３のスイッチ２２１〜２２８は、それぞれ、２個の入力端子及び４個の出力端子を有し、各出力端子からは２個の入力端子のデータのうちのいずれかを選択して出力することができる。
【００３０】
ネットワーク回路１０５は、３２個の入力端子ｉｎ０〜ｉｎ３１及び３２個の出力端子ｏｕｔ０〜ｏｕｔ３１を有する。３２個の入力端子ｉｎ０〜ｉｎ３１は、図１のセレクタ１０６を介して、演算器１１１〜１１ｎの出力端子に接続される。３２個の出力端子ｏｕｔ０〜ｏｕｔ３１は、図１のセレクタ１０７を介して、演算器１１１〜１１ｎの入力端子に接続される。
【００３１】
スイッチ２０１は、４個の入力端子が４個の入力端子ｉｎ０〜ｉｎ３に接続され、４個の出力端子がスイッチ２１１〜２１４の入力端子に接続される。スイッチ２０２は、４個の入力端子が４個の入力端子ｉｎ４〜ｉｎ７に接続され、４個の出力端子がスイッチ２１１〜２１４の入力端子に接続される。スイッチ２０３は、４個の入力端子が４個の入力端子ｉｎ８〜ｉｎ１１に接続され、４個の出力端子がスイッチ２１１〜２１４の入力端子に接続される。スイッチ２０４は、４個の入力端子が４個の入力端子ｉｎ１２〜ｉｎ１５に接続され、４個の出力端子がスイッチ２１１〜２１４の入力端子に接続される。
【００３２】
スイッチ２０５は、４個の入力端子が４個の入力端子ｉｎ１６〜ｉｎ１９に接続され、４個の出力端子がスイッチ２１５〜２１８の入力端子に接続される。スイッチ２０６は、４個の入力端子が４個の入力端子ｉｎ２０〜ｉｎ２３に接続され、４個の出力端子がスイッチ２１５〜２１８の入力端子に接続される。スイッチ２０７は、４個の入力端子が４個の入力端子ｉｎ２４〜ｉｎ２７に接続され、４個の出力端子がスイッチ２１５〜２１８の入力端子に接続される。スイッチ２０８は、４個の入力端子が４個の入力端子ｉｎ２８〜ｉｎ３１に接続され、４個の出力端子がスイッチ２１５〜２１８の入力端子に接続される。
【００３３】
スイッチ２１１の２個の出力端子は、スイッチ２２１及び２２５の入力端子に接続される。スイッチ２１２の２個の出力端子は、スイッチ２２２及び２２６の入力端子に接続される。スイッチ２１３の２個の出力端子は、スイッチ２２３及び２２７の入力端子に接続される。スイッチ２１４の２個の出力端子は、スイッチ２２４及び２２８の入力端子に接続される。
【００３４】
スイッチ２１５の２個の出力端子は、スイッチ２２１及び２２５の入力端子に接続される。スイッチ２１６の２個の出力端子は、スイッチ２２２及び２２６の入力端子に接続される。スイッチ２１７の２個の出力端子は、スイッチ２２３及び２２７の入力端子に接続される。スイッチ２１８の２個の出力端子は、スイッチ２２４及び２２８の入力端子に接続される。
【００３５】
スイッチ２２１の４個の出力端子は、出力端子ｏｕｔ０〜ｏｕｔ３に接続される。スイッチ２２２の４個の出力端子は、出力端子ｏｕｔ４〜ｏｕｔ７に接続される。スイッチ２２３の４個の出力端子は、出力端子ｏｕｔ８〜ｏｕｔ１１に接続される。スイッチ２２４の４個の出力端子は、出力端子ｏｕｔ１２〜ｏｕｔ１５に接続される。スイッチ２２５の４個の出力端子は、出力端子ｏｕｔ１６〜ｏｕｔ１９に接続される。スイッチ２２６の４個の出力端子は、出力端子ｏｕｔ２０〜ｏｕｔ２３に接続される。スイッチ２２７の４個の出力端子は、出力端子ｏｕｔ２４〜ｏｕｔ２７に接続される。スイッチ２２８の４個の出力端子は、出力端子ｏｕｔ２８〜ｏｕｔ３１に接続される。
【００３６】
図３は、スイッチ２０１の構成例を示す図である。スイッチ２０１は、セレクタ３０１〜３０４を有する。また、スイッチ２０１は、ネットワーク制御信号ＳＥＬ１に応じて、入力端子ｉｎ０〜ｉｎ３にデータを入力し、出力端子ｏｕｔｐｕｔ０〜ｏｕｔｐｕｔ３からデータを出力する。８ビットのネットワーク制御信号ＳＥＬ１は、４個の２ビット信号に分配され、セレクタ３０１〜３０４に出力される。
【００３７】
セレクタ３０１は、ネットワーク制御信号ＳＥＬ１のうちの２ビットの信号に応じて、４個の入力端子ｉｎ０〜ｉｎ３のデータを入力し、そのうちのいずれか１つを選択し、出力端子ｏｕｔｐｕｔ０から出力する。セレクタ３０２は、ネットワーク制御信号ＳＥＬ１のうちの２ビットの信号に応じて、４個の入力端子ｉｎ０〜ｉｎ３のデータを入力し、そのうちのいずれか１つを選択し、出力端子ｏｕｔｐｕｔ１から出力する。セレクタ３０３は、ネットワーク制御信号ＳＥＬ１のうちの２ビットの信号に応じて、４個の入力端子ｉｎ０〜ｉｎ３のデータを入力し、そのうちのいずれか１つを選択し、出力端子ｏｕｔｐｕｔ２から出力する。セレクタ３０４は、ネットワーク制御信号ＳＥＬ１のうちの２ビットの信号に応じて、４個の入力端子ｉｎ０〜ｉｎ３のデータを入力し、そのうちのいずれか１つを選択し、出力端子ｏｕｔｐｕｔ３から出力する。他のスイッチ２０２〜２０８、２１１〜２１８及び２２１〜２２８も、スイッチ２０１と同様の構成を有する。
【００３８】
図４は、図１のリコンフィグラブル回路のより具体的な構成例を示す図である。図４は、図１に対して、レジスタ４０１を追加したものである。レジスタ４０１は、フリップフロップであり、ＣＰＵバス１０２及びＣＰＵインタフェース１０３を介して、ＣＰＵ１０１に接続され、Ｍビットのセレクタ制御信号情報を記憶する。ＣＰＵ１０１は、Ｎビットのセレクタ制御信号情報をレジスタ４０１に書き込むことができる。セレクタ１０６は、レジスタ４０１に記憶されているセレクタ制御信号情報に応じて、演算器１１１〜１１ｎの出力端子とネットワーク回路１０５の入力端子との接続を入れ替えることができる。
【００３９】
図５は、図４のリコンフィグラブル回路の動作例を示すフローチャートである。まず、動作開始が指示されると、ステップＳ５０１では、ＣＰＵ１０１は、ネットワークインタフェース１０３を介して、コンフィグレーションＲＡＭ１０４にネットワーク制御信号情報を書き込み、レジスタ４０１にセレクタ制御信号情報を書き込む。この処理は、起動設定処理であり、起動時に１回行われる。セレクタ１０６は、レジスタ４０１に記憶されたセレクタ制御信号情報に応じて、演算器１１１〜１１ｎの出力端子とネットワーク回路１０５の入力端子との間の接続を行う。同様に、セレクタ１０７は、演算器１１１〜１１ｎの入力端子とネットワーク回路１０５の出力端子との間の接続を行う。
【００４０】
次に、ステップＳ５０２では、リコンフィグレーションのコア動作を行う。ＣＰＵ１０１は、コンフィグレーション設定のためのアドレスをコンフィグレーションＲＡＭ１０４に出力する。コンフィグレーションＲＡＭ１０４は、そのアドレスに応じて、設定されたコンフィグレーションのネットワーク制御信号情報をネットワーク回路１０５に出力する。ネットワーク回路１０５は、そのネットワーク制御信号情報に応じて、図２の入力端子ｉｎ０〜ｉｎ３１と出力端子ｏｕｔ０〜ｏｕｔ３１との間の接続を行う。例えば、コンフィグレーションＲＡＭ１０４は、ＣＰＵ１０１の指示により、コンフィグレーション０〜コンフィグレーションＮのネットワーク制御信号情報を順次、ネットワーク回路１０５に出力する。ネットワーク回路１０５は、コンフィグレーション０〜コンフィグレーションＮの設定に基づく接続を順次行う。これにより、リコンフィグラブル回路は、コンフィグレーション０〜コンフィグレーションＮの機能を動的に順次切り替えて動作させることができる。
【００４１】
図６は、図４のリコンフィグラブル回路のより具体的な構成例を示す図である。図６は、図４に対して、レジスタ４０２を追加したものである。セレクタ１０６は、１６個のスワップセレクタ６０１〜６１６を有する。セレクタ１０７は、１６個のスワップセレクタ６１７〜６３２を有する。
【００４２】
コンフィグレーションＲＡＭ１０４は、コンフィグレーション０〜コンフィグレーション６３の６４面分のネットワーク制御信号情報を記憶する。１面分のネットワーク制御信号情報は、１０２４ビットである。コンフィグレーションＲＡＭ１０４は、ＣＰＵ１０１から入力されるコンフィグレーションのアドレスに応じて、１０２４ビットのネットワーク制御信号情報をネットワーク回路１０５に出力する。ネットワーク回路１０５は、１２８個の入力端子、１２８個の出力端子及び１２８個のスイッチを有する。その各スイッチは、図３のように、４個の入力端子及び４個の出力端子を有するスイッチであり、８ビットの制御信号に応じて、４個の入力端子と４個の出力端子の接続を制御する。１２８個のスイッチは、１２８×８＝１０２４ビットの制御信号をコンフィグレーションＲＡＭ１０４から入力し、制御される。
【００４３】
レジスタ４０１は、フリップフロップであり、ＣＰＵバス１０２及びＣＰＵインタフェース１０３を介して、ＣＰＵ１０１に接続され、６４ビットのセレクタ制御信号情報を記憶する。ＣＰＵ１０１は、６４ビットのセレクタ制御信号情報をレジスタ４０１に書き込むことができる。セレクタ１０６は、レジスタ４０１に記憶されている６４ビットのセレクタ制御信号情報に応じて、演算器１１１〜１１ｎの出力端子とネットワーク回路１０５の入力端子との接続を入れ替えることができる。
【００４４】
レジスタ４０２は、フリップフロップであり、ＣＰＵバス１０２及びＣＰＵインタフェース１０３を介して、ＣＰＵ１０１に接続され、６４ビットのセレクタ制御信号情報を記憶する。ＣＰＵ１０１は、６４ビットのセレクタ制御信号情報をレジスタ４０２に書き込むことができる。セレクタ１０７は、レジスタ４０２に記憶されている６４ビットのセレクタ制御信号情報に応じて、演算器１１１〜１１ｎの入力端子とネットワーク回路１０５の出力端子との接続を入れ替えることができる。
【００４５】
図７は、スワップセレクタ６０１の構成例を示す図である。スワップセレクタ６０１は、８個の入力端子ｉｎ０〜ｉｎ７及び８個の出力端子ｏｕｔ０〜ｏｕｔ７を有する。入力端子ｉｎ０〜ｉｎ７は、演算器１１１〜１１ｎの出力端子に接続される。出力端子ｏｕｔ０〜ｏｕｔ７は、ネットワーク回路１０５の入力端子に接続される。スワップセレクタ６０１は、４ビットのセレクタ制御信号に応じて、８個の入力端子ｉｎ０〜ｉｎ７及び８個の出力端子ｏｕｔ０〜ｏｕｔ７の接続を入れ替える。
【００４６】
第１のビットのセレクタ制御信号が第１の状態（例えば０）であるときには、入力端子ｉｎ０及び出力端子ｏｕｔ０が接続され、入力端子ｉｎ４及び出力端子ｏｕｔ４が接続される。これに対して、第１のビットのセレクタ制御信号が第２の状態（例えば１）であるときには、入力端子ｉｎ０及び出力端子ｏｕｔ４が接続され、入力端子ｉｎ４及び出力端子ｏｕｔ０が接続される。
【００４７】
第２のビットのセレクタ制御信号が第１の状態（例えば０）であるときには、入力端子ｉｎ１及び出力端子ｏｕｔ１が接続され、入力端子ｉｎ５及び出力端子ｏｕｔ５が接続される。これに対して、第２のビットのセレクタ制御信号が第２の状態（例えば１）であるときには、入力端子ｉｎ１及び出力端子ｏｕｔ５が接続され、入力端子ｉｎ５及び出力端子ｏｕｔ１が接続される。
【００４８】
第３のビットのセレクタ制御信号が第１の状態（例えば０）であるときには、入力端子ｉｎ２及び出力端子ｏｕｔ２が接続され、入力端子ｉｎ６及び出力端子ｏｕｔ６が接続される。これに対して、第３のビットのセレクタ制御信号が第２の状態（例えば１）であるときには、入力端子ｉｎ２及び出力端子ｏｕｔ６が接続され、入力端子ｉｎ６及び出力端子ｏｕｔ２が接続される。
【００４９】
第４のビットのセレクタ制御信号が第１の状態（例えば０）であるときには、入力端子ｉｎ３及び出力端子ｏｕｔ３が接続され、入力端子ｉｎ７及び出力端子ｏｕｔ７が接続される。これに対して、第１のビットのセレクタ制御信号が第２の状態（例えば１）であるときには、入力端子ｉｎ３及び出力端子ｏｕｔ７が接続され、入力端子ｉｎ７及び出力端子ｏｕｔ３が接続される。
【００５０】
以上のように、スワップセレクタ６０１は、セレクタ制御信号が第１の状態のときには、入力端子ｉｎ０〜ｉｎ７及び出力端子ｏｕｔ０〜ｏｕｔ７の接続を入れ替えずにストレートに接続し、セレクタ制御信号が第２の状態のときには、入力端子ｉｎ０〜ｉｎ７及び出力端子ｏｕｔ０〜ｏｕｔ７の接続を入れ替えてクロスに接続する。
【００５１】
他のスワップセレクタ６０２〜６３２も、スワップセレクタ６０１と同じ構成を有する。セレクタ１０６は、１６個のスワップセレクタ６０１〜６１６を有する。各スワップセレクタ６０１〜６１６は、４ビットのセレクタ制御信号を基に制御される。したがって、セレクタ１０６内の１６個のスワップセレクタ６０１〜６１６は、１６×４＝６４ビットのセレクタ制御信号をレジスタ４０１から入力し、制御される。同様に、セレクタ１０７内の１６個のスワップセレクタ６１７〜６３２は、１６×４＝６４ビットのセレクタ制御信号をレジスタ４０２から入力し、制御される。
【００５２】
スワップセレクタ６０１〜６３２のそれぞれは、８個の入力端子ｉｎ０〜ｉｎ７及び８個の出力端子ｏｕｔ０〜ｏｕｔ７を有する。したがって、１６個のスワップセレクタ６０１〜６１６を有するセレクタ１０６は、１６×８＝１２８個の入力端子ＩＮ及び出力端子を有する。同様に、１６個のスワップセレクタ６１７〜６３２を有するセレクタ１０７は、１６×８＝１２８個の入力端子及び出力端子ＯＵＴを有する。
【００５３】
コンフィグレーションＲＡＭ１０４がネットワーク回路１０５に出力するネットワーク制御信号情報は１０２４ビットである。コンフィグレーションＲＡＭ１０４は、６４面分のネットワーク制御信号情報を記憶する場合、６４ｋビット程度の容量が必要となる。これに対して、セレクタ１０６及び１０７を制御するには、レジスタ４０１は６４個のフリップフロップで構成され、レジスタ４０２も６４個のフリップフロップで構成され、レジスタ４０１及び４０２のための２個のＣＰＵインタフェース１０３を必要とする。セレクタ１０６及び１０７を追加した場合でも回路規模は、ネットワーク回路１０５及びコンフィグレーションＲＡＭ１０４と比較して小さく抑えることができる。
【００５４】
本実施形態によれば、ネットワーク回路１０５内のデータ競合を回避するために、ハードウエア完成後でもネットワーク回路１０５と演算器１１１〜１１ｎの接続を変更するためのセレクタ１０６及び１０７を追加する。具体的には、図６に示すように、演算器１１１〜１１ｎの出力端子とネットワーク回路１０５の入力端子との間にセレクタ１０６を設け、演算器１１１〜１１ｎの入力端子とネットワーク回路１０５の出力端子との間にセレクタ１０７を設ける。
【００５５】
セレクタ１０６及び１０７のセレクタ制御信号は、コンフィグレーションＲＡＭ１０４からではなく、レジスタ４０１及び４０２から入力する。レジスタ４０１及び４０２には、ＣＰＵ１０１がＣＰＵインタフェース１０３を介して、セレクタ制御信号情報を書き込む。コンフィグレーションＲＡＭ１０４を使用しないのは、回路規模縮小のためであるとともに、演算器１１１〜１１ｎとネットワーク回路１０５の接続設定は、図５に示したように、リコンフィグラブル回路の起動設定時にのみ行うことを想定しているためである。コンフィグレーションＲＡＭ１０４は、動作中に設定を切り替えたい場合に使用するので、（設定ビット数）×（切り替え面数）の容量が必要となる。よって、動作中に設定を切り替える部分を限定し、それ以外の部分はＣＰＵ１０１からの書き込みで起動時に設定することで、回路規模を抑えながらネットワークの接続自由度を向上させることができる。
【００５６】
図１１のリコンフィグラブル回路では、演算器の出力端子及び入力端子間の接続を行う際に、ネットワークモジュール８０１と演算器との接続はハードウエア固定であり、ネットワークのルーティング制約により目的とするネットワーク接続を行うことができない場合が生じる。本実施形態は、この問題を解決するために、ネットワーク回路１０５と演算器１１１〜１１ｎとの間の接続を入れ替えるためのセレクタ制御信号情報をレジスタ４０１及び４０２に設定することができる。セレクタ１０６及び１０７は、そのセレクタ制御信号情報を基に接続を入れ替えることにより、ネットワークの接続自由度を向上させることができる。また、セレクタ１０６及び１０７の接続の入れ替え機能は、レジスタ４０１及び４０２で設定できるため、コンフィグレーションＲＡＭ１０４を使用した場合に比べて、回路規模を小さく抑えることができる。すなわち、セレクタ１０６及び１０７を設けることにより、回路規模を削減し、かつ演算器群の出力端子及び入力端子の接続可能な組み合わせ数を増やすことができる。
【００５７】
本実施形態は、セレクタ１０６及び１０７の両方を設ける場合に限定されない。セレクタ１０７を削除し、セレクタ１０６のみを設けるようにしてもよい。また、セレクタ１０６を削除し、セレクタ１０７のみを設けるようにしてもよい。
【００５８】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【００５９】
【図１】本発明の実施形態によるリコンフィグラブル回路の構成例を示す図である。
【図２】ネットワーク回路の構成例を示す図である。
【図３】スイッチの構成例を示す図である。
【図４】図１のリコンフィグラブル回路のより具体的な構成例を示す図である。
【図５】図４のリコンフィグラブル回路の動作例を示すフローチャートである。
【図６】図４のリコンフィグラブル回路のより具体的な構成例を示す図である。
【図７】スワップセレクタの構成例を示す図である。
【図８】コンフィグレーション０を設定したリコンフィグラブル回路の構成例を示す図である。
【図９】コンフィグレーション１を設定したリコンフィグラブル回路の構成例を示す図である。
【図１０】ネットワークモジュールの構成例を示す図である。
【図１１】図１０のネットワークモジュールを簡単化した構成例を示す図である。
【図１２】図１１の回路に対して、出力端子ＲＡＭｏ及びＡＬＵ１ｏを入れ替えた回路を示す図である。
【符号の説明】
【００６０】
１０１  ＣＰＵ
１０２  ＣＰＵバス
１０３  ＣＰＵインタフェース
１０４  コンフィグレーションＲＡＭ
１０５  ネットワーク回路
１０６  セレクタ
１０７  セレクタ
１１１〜１１ｎ  演算器
４０１  レジスタ
４０２  レジスタ
６０１〜６３２  スワップセレクタ
【図１】
0004782591.tif 000002
【図２】
0004782591.tif 000003
【図３】
0004782591.tif 000004
【図４】
0004782591.tif 000005
【図５】
0004782591.tif 000006
【図６】
0004782591.tif 000007
【図７】
0004782591.tif 000008
【図８】
0004782591.tif 000009
【図９】
0004782591.tif 000010
【図１０】
0004782591.tif 000011
【図１１】
0004782591.tif 000012
【図１２】
0004782591.tif 000013