(57)【要約】【課題】入出力データの転送時間の短縮、並びに、回路規模の縮小を行うことのできるリコンフィギュラブル回路および半導体集積回路の提供を図る。【解決手段】複数の演算器と、該複数の演算器に入力する演算入力データ，および，該複数の演算器から出力される演算出力データを保持する入出力データインタフェース部２２と、を有し、前記複数の演算器の接続をコンテキスト毎に制御するリコンフィギュラブル回路であって、前記入出力データインタフェース部２２は、複数のポートPRT0〜PRTnと、該複数のポートに接続され、深さ方向にｍ［ｍは２以上の整数］バンクを有する複数のレジスタREG00〜REGmnと、を有するように構成する。【選択図】図１３
2011154534.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算器と、該複数の演算器に入力する演算入力データ，および，該複数の演算器から出力される演算出力データを保持する入出力データインタフェース部と、を有し、前記複数の演算器の接続をコンテキスト毎に制御するリコンフィギュラブル回路であって、
前記入出力データインタフェース部は、
複数のポートと、
該複数のポートに接続され、深さ方向にｍ［ｍは２以上の整数］バンクを有する複数のレジスタと、
を有することを特徴とするリコンフィギュラブル回路。
【請求項２】
請求項１に記載のリコンフィギュラブル回路において、さらに、
前記複数の演算器を含むデータ演算部と、
前記入出力データインタフェース部の前記複数のポートと前記複数の演算器の接続を制御するデータネットワーク部と、
複数のコンテキストのコンフィギュレーションデータを、該コンテキスト毎に保持するコンフィギュレーションデータ保持部と、
前記入出力データインタフェース部の前記各レジスタを制御するレジスタ制御部と、
を有することを特徴とするリコンフィギュラブル回路。
【請求項３】
請求項２に記載のリコンフィギュラブル回路において、
前記コンテキスト毎のコンフィギュレーションは、前記データ演算部からの演算出力データを前記各ポートのどのバンクのレジスタに書き込みを行うかの該各ポートのレジスタ入力バンク選択情報を有し、
前記レジスタ制御部は、前記各ポートのレジスタ入力バンク選択情報に基づいて、該各ポートの書き込みを行う対象のバンクのレジスタに対してリコンフィギュラブル回路書き込みイネーブル信号を生成するリコンフィギュラブル回路書き込みイネーブル信号生成部を有することを特徴とするリコンフィギュラブル回路。
【請求項４】
請求項３に記載のリコンフィギュラブル回路において、
前記コンテキスト毎のコンフィギュレーションは、前記データ演算部への演算入力データを前記各ポートのどのバンクのレジスタからのデータを出力するかの該各ポートのレジスタ出力バンク選択情報を有し、
前記入出力データインタフェース部は、さらに、前記各ポートのレジスタ出力バンク選択情報に基づいて、該各ポートからデータを出力する対象のバンクを選択する第１選択部を有することを特徴とするリコンフィギュラブル回路。
【請求項５】
請求項３〜４のいずれか１項に記載のリコンフィギュラブル回路において、
前記レジスタ制御部は、さらに、
外部回路からレジスタ対象を示すアドレス情報と、該外部回路から書き込みの指示を行う書き込み制御信号を受け取って、書き込み対象のレジスタに対して外部回路書き込みイネーブル信号を出力する外部回路書き込みイネーブル信号生成部と、
前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号を受け取って、どちらかのイネーブル信号がアサートされたときに対応するレジスタにレジスタ書き込みイネーブル信号をアサートする第１論理回路と、
前記リコンフィギュラブル回路書き込みイネーブル信号がアサートされたときは前記演算出力データを選択し、前記外部回路書き込みイネーブル信号がアサートされたときは前記外部回路からの演算入力データを選択する外部／内部書き込みデータ選択信号を生成する外部／内部書き込みデータ選択信号生成回路と、
を有することを特徴とするリコンフィギュラブル回路。
【請求項６】
請求項５に記載のリコンフィギュラブル回路において、
前記入出力データインタフェース部は、さらに、前記外部／内部書き込みデータ選択信号に基づいて、前記各レジスタに保持するデータを、前記演算入力データまたは前記演算出力データから選択する第２選択部を有することを特徴とするリコンフィギュラブル回路。
【請求項７】
請求項５または６に記載のリコンフィギュラブル回路において、
前記レジスタ制御部は、さらに、
前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号が同時にアサートされたことを検出する外部回路／リコンフィギュラブル回路同時書き込み検出部と、
前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号が同時にアサートされたときに、前記外部回路からのどちらの書き込みを優先させるかを規定する外部回路／リコンフィギュラブル回路書き込み優先信号に基づいて、優先判定を行う優先判定部と、
を有することを特徴とするリコンフィギュラブル回路。
【請求項８】
請求項７に記載のリコンフィギュラブル回路において、
前記外部回路／リコンフィギュラブル回路同時書き込み検出部は、前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号が同時にアサートされたことを検出して、同時書き込み検出信号をエラー情報として前記外部回路に出力することを特徴とするリコンフィギュラブル回路。
【請求項９】
請求項５〜８のいずれか１項に記載のリコンフィギュラブル回路において、
前記レジスタ制御部は、さらに、前記外部回路からのレジスタ対象を示すアドレス情報から、そのアドレス値に対応したレジスタ出力を選択するための出力データ選択信号を生成す出力データ選択信号生成回路を有し、
前記前記入出力データインタフェース部は、さらに、前記出力データ選択信号に基づいて、レジスタ出力データを選択して外部回路に出力する第３選択部を有することを特徴とするリコンフィギュラブル回路。
【請求項１０】
請求項５〜９のいずれか１項に記載のリコンフィギュラブル回路、および、前記外部回路を有することを特徴とする半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願で言及する実施例は、リコンフィギュラブル回路および半導体集積回路に関する。
【背景技術】
【０００２】
近年、デジタルカメラ，プリンタおよび情報処理端末などの様々な電子機器に対して、内部の回路構成を電気的にプログラムすることで様々な機能を発揮させることができるリコンフィギュラブル回路(Reconfigurable Circuit)が利用されている。
【０００３】
このリコンフィギュラブル回路は、例えば、ＣＰＵなどの外部回路のアクセラレータとして使用され、ＣＰＵからのコンテキストに基づいてその回路構成を時間と共に動的に変化させるダイナミック・リコンフィギュラブル回路を含む。
【０００４】
ところで、従来、再構成可能な複数のＰＥ(Processing Element：演算器)を有し、ＰＥの接続情報を含むコンフィグレーションデータにより制御するリコンフィギュラブル回路、或いは、類似の技術思想を適用した様々な半導体集積回路が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−００３７６５号公報
【特許文献２】特開平０５−００６６５７号公報
【特許文献３】特開昭６２−１５１９５７号公報
【特許文献４】特開昭５６−０６８９７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、従来、リコンフィギュラブル回路が提案されている。しかしながら、従来のリコンフィギュラブル回路では、入出力データインタフェース部と外部回路との間の入出力データの転送時間の短縮、並びに、データネットワーク部の回路規模の縮小が十分なものとはいえなかった。
【０００７】
この出願は、入出力データの転送時間の短縮、並びに、回路規模の縮小を行うことのできるリコンフィギュラブル回路および半導体集積回路の提供を目的とする。
【課題を解決するための手段】
【０００８】
一実施形態のリコンフィギュラブル回路は、複数の演算器と、該複数の演算器に入力する演算入力データ，および，該複数の演算器から出力される演算出力データを保持する入出力データインタフェース部と、を有する。このリコンフィギュラブル回路は、前記複数の演算器の接続をコンテキスト毎に制御する。
【０００９】
前記入出力データインタフェース部は、複数のポートと、該複数のポートに接続され、深さ方向にｍ［ｍは２以上の整数］バンクを有する複数のレジスタと、を有する。
【発明の効果】
【００１０】
開示のリコンフィギュラブル回路および半導体集積回路は、入出力データの転送時間の短縮、並びに、回路規模の縮小を行うことができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】半導体集積回路の一例を示すブロック図である。
【図２】図１の半導体集積回路の動作の一例を説明するためのである。
【図３】図１の半導体集積回路の動作の他の例を説明するためのである。
【図４】図１のリコンフィギュラブル回路において、入出力データ数がレジスタ数を超えないときの動作を説明するための図である。
【図５】図１のリコンフィギュラブル回路において、入出力データ数がレジスタ数を超えるときの動作を説明するための図である。
【図６Ａ】メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その１)である。
【図６Ｂ】メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その２)である。
【図７Ａ】メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その３)である。
【図７Ｂ】メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その４)である。
【図８Ａ】メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その５)である。
【図８Ｂ】メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その６)である。
【図９Ａ】メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その７)である。
【図９Ｂ】メモリを含むリコンフィギュラブル回路の動作の一例を説明するための図(その８)である。
【図１０】半導体集積回路の一実施例を示すブロック図である。
【図１１】図１０のリコンフィギュラブル回路におけるコンフィギュレーションデータ保持部の一例を示すブロック図である。
【図１２】図１０のリコンフィギュラブル回路におけるレジスタ制御部の一例を示すブロック図である。
【図１３】図１０のリコンフィギュラブル回路における入出力データインタフェース部の一例を示すブロック図である。
【図１４】図１０の半導体集積回路の動作の一例を説明するためのである。
【図１５】図１０の半導体集積回路の動作の他の例を説明するためのである。
【図１６】図１０のリコンフィギュラブル回路において、入出力データ数がレジスタ数を超えるときの動作を説明するための図である。
【図１７】図１０のリコンフィギュラブル回路において、コンテキストで実行する演算内容の記述例を示す図である。
【図１８】図１１のコンフィギュレーションデータ保持部をより詳細に示すブロック図である。
【発明を実施するための形態】
【００１２】
まず、実施例を詳述する前に、図１〜図５、並びに、図６Ａ，図６Ｂ〜図９Ａ，図９Ｂを参照して、リコンフィギュラブル回路および半導体集積回路の一例およびその問題点を説明する。
【００１３】
図１は半導体集積回路の一例を示すブロック図である。図１において、参照符号１０１は外部回路を示し、また、１０２はリコンフィギュラブル回路を示す。ここで、外部回路１０１は、例えば、ＣＰＵであり、また、リコンフィギュラブル回路１０２は、例えば、ダイナミック・リコンフィギュラブル回路である。
【００１４】
図１に示されるように、半導体集積回路は、外部回路１０１およびリコンフィギュラブル回路１０２を含む。なお、半導体集積回路は、例えば、ＣＰＵである外部回路１０１と、そのアクセラレータとして機能するリコンフィギュラブル回路１０２を含む１つのパッケージングされたＬＳＩである。
【００１５】
リコンフィギュラブル回路１０２は、レジスタ制御部１２１，入出力データインタフェース部１２２，コンフィグレーションデータ保持部１２３，および，データネットワーク部・データ演算部１２４を含む。
【００１６】
外部回路１０１は、リコンフィギュラブル回路１０２で演算を行うための入力データIDATを入力データバスに出力する。
【００１７】
また、外部回路１０１は、レジスタ保持部１２１に対して、書き込み制御信号WCSを出力すると共に、入力データIDATを格納するためのレジスタREG0〜REG9に対応するアドレスADDを、アドレスバスを介して出力する。
【００１８】
これにより、入力データIDATは、アドレスADDにより指定された入出力データインタフェース部１２２における所定のレジスタREG0〜REG9に保持される。
【００１９】
さらに、外部回路１０１は、動的再構成を行うためのコンフィギュレーションデータCDATを入力データバスに出力する。
【００２０】
また、外部回路１０１は、レジスタ保持部１２１に対して、書き込み制御信号WCSを出力すると共に、コンフィグレーションデータCDATの保持を行うコンフィギュレーションデータ保持部１２３に対応するアドレスADDを、アドレスバスを介して出力する。
【００２１】
これにより、コンフィグレーションデータCDATは、アドレスADDにより指定されたコンフィギュレーションデータ保持部１２３における所定個所に保持される。
【００２２】
なお、コンフィギュレーションデータ保持部１２３は、レジスタ保持部１２１からのコンフィギュレーションデータ書き込みイネーブル信号CWESに基づいて書き込みを行うようになっている。
【００２３】
さらに、外部回路１０１は、入出力データインタフェース部１２２，コンフィギュレーションデータ保持部１２３およびデータネットワーク部・データ演算部１２４に対して、演算を開始するための演算開始信号OSSを出力する。
【００２４】
レジスタREG0〜REG9に格納された入力データは、データネットワーク部・データ演算部１２４の入力ポートINP0〜INP9に出力される。
【００２５】
データネットワーク部・データ演算部１２４は、データネットワーク部と、複数の演算器(ＰＥ：Processing Element)を有するデータ演算部をまとめて描いたものである。
【００２６】
データネットワーク部は、入力ポートINP0〜INP9とデータ演算部の演算器の入力端子間の経路選定、演算器の出力端子から入力端子間の経路、および、演算器の出力端子とデータネットワーク部・データ演算部１２４の出力ポートOTP0〜OTP9間の経路選定を行う。
【００２７】
コンフィギュレーションデータ保持部１２３には、動的再構成を行うためのデータネットワークのネットワーク経路選定情報や演算器の演算命令情報などが保持されている。
【００２８】
そして、コンフィギュレーションデータ保持部１２３は、コンフィギュレーションデータが格納されているメモリを制御し、データネットワーク部・データ演算部１２４に対して、各コンテキストに対応したコンフィギュレーションデータCDAT'を出力する。
【００２９】
データ演算部で演算を行った演算結果は、データネットワーク部・データ演算部１２４の出力ポートOTP0〜OTP9から出力され、各ポートOTP0〜OTP9に対応するレジスタREG0〜REG9に保持される。
【００３０】
レジスタREG0〜REG9に対する書き込みは、データネットワーク部・データ演算部１２４から出力された演算結果書き込み制御信号ORWCSに基づいてレジスタ制御部１２１が生成したレジスタ書き込みイネーブル信号RWESにより行われる。
【００３１】
セレクタSEL0〜SEL9は、外部回路１０１から供給された演算入力データIDATをレジスタREG0〜REG9に格納するか、或いは、データ演算部(１２４)によって演算を行った演算結果を格納するかを、外部／内部書き込みデータ選択信号WDSSに基づいて選択する。
【００３２】
なお、外部／内部書き込みデータ選択信号WDSSは、レジスタ制御部１２１により、外部回路１０１から入力された書き込み制御信号WCSとデータネットワーク部・データ演算部１２４から出力された演算書き込み制御信号ORWCSに基づいて生成される。
【００３３】
リコンフィギュラブル回路１０２は、演算が完了すると演算完了信号OCSを外部回路１０１に出力し、外部回路１０１は演算が完了したことを認識する。
【００３４】
外部回路１０１は、演算結果を取得するために、レジスタREG0〜REG9内で取得する演算結果が保持されたレジスタに対応するアドレスADDをアドレスバスに出力する。
【００３５】
レジスタ制御部１２１は、外部回路１０１からのアドレス値に基づいて出力データ選択信号ODSSを出力し、選択回路SELoによって選択されたレジスタREG0〜REG9の出力データ(演算結果)ODATが出力データバスを介して外部回路１０１に出力される。
【００３６】
ところで、リコンフィギュラブル回路(例えば、ダイナミック・リコンフィギュラブル回路)１０２は、コンテキストごとに構成を変化させて処理を行うことができる。ここで、例えば、動的再構成による１回目のコンテキストをコンテキストCTX0、２回目のコンテキストをコンテキストCTX1というように、ｎ回目のコンテキストをコンテキストCTXn-1とする。
【００３７】
図２は図１の半導体集積回路の動作の一例を説明するためのであり、また、図３は図１の半導体集積回路の動作の他の例を説明するためのである。図２および図３において、左側は外部回路１０１の動作フローを示し、また、右側はリコンフィギュラブル回路１０２の動作フローを示している。
【００３８】
ここで、図２は、コンテキストCTX0を実行するための入力ポートINP0の入力データと、コンテキストCTX1の入力ポートINP0の入力データが同じ場合の動作フローを示す。また、図３は、コンテキストCTX0を実行するための入力ポートINP0の入力データと、コンテキストCTX1の入力ポートINP0の入力データが異なる動作フローを示す。
【００３９】
まず、図２に示されるように、コンテキストCTX0およびCTX1を実行するための入力ポートINP0の入力データが同じ場合、外部回路１０１は、コンテキストCTX0とコンテキストCTX1で共通の値の入力データをレジスタREG0に書き込んで演算開始信号OSSを出力する。
【００４０】
演算開始信号OSSを受信したリコンフィギュラブル回路１０２は、コンテキストCTX0を実行する。さらに、コンテキストCTX0の実行が完了したら、動的再構成によるコンテキストの切り替えを行って、コンテキストCTX1を実行する。
【００４１】
リコンフィギュラブル回路１０２は、コンテキストCTX1の実行が完了したら演算完了信号OCSを出力する。演算完了信号OCSを受信した外部回路１０１は、演算が完了したことを認識し、コンテキストCTX0とコンテキストCTX1の演算結果(出力データ)をそれぞれの演算結果が保持されているレジスタから読み出す。
【００４２】
次に、図３に示されるように、コンテキストCTX0およびCTX1を実行するための入力ポートINP0の入力データが異なる場合、外部回路１０１は、まず、コンテキストCTX0の入力データをレジスタREG0に書き込み、演算開始信号OSSを出力する。
【００４３】
演算開始信号OSSを受信したリコンフィギュラブル回路１０２は、コンテキストCTX0を実行し、コンテキストCTX0の実行が完了したら演算完了信号OCSを出力する。このとき、入力データは、演算処理が完了するまでの間は保持し続ける必要があるので、コンテキストCTX1の入力データを書き込むことはできない。
【００４４】
演算完了信号OCSを受信した外部回路１０１は、演算完了信号OCSを受信した後に、コンテキストCTX1の入力データを再びレジスタREG0に書き込み、コンテキストCTX1を実行するための演算開始信号OSSを出力する。
【００４５】
演算開始信号OSSを受信したリコンフィギュラブル回路１０２は、コンテキストCTX1を実行し、コンテキストCTX1の実行が完了したら演算完了信号OCSを出力する。
【００４６】
演算完了信号OCSを受信した外部回路１０１は、演算が完了したことを認識し、コンテキストCTX0とコンテキストCTX1の演算結果をそれぞれの演算結果が保持されているレジスタから読み出す。
【００４７】
このように、各コンテキストの入力データは、そのコンテキストの演算処理が完了するまで保持する必要があるため、図３の場合はコンテキスト毎にデータを書き込むためのオーバーヘッドが発生して、処理速度が低下してしまう。
【００４８】
図３を参照して説明したように、コンテキストを実行する毎に入力ポートのデータが異なる場合には、以下のような処理を行う時間が掛かることになる。
【００４９】
すなわち、リコンフィギュラブル回路１０２がコンテキストCTX0の演算が完了してから演算完了信号OCSを出力するまでの時間、および、外部回路１０１がコンテキストCTX0の実行が完了したことを認識してレジスタREG0の値を書き換えるまでの時間が掛かる。
【００５０】
また、外部回路１０１がレジスタREG0への書き込みが完了してからコンテキストCTX1の演算開始信号OSSを出力するまでの時間が掛かることになる。さらに、リコンフィギュラブル回路１０２がコンテキストCTX1の演算開始信号OSSを認識して、コンテキストCTX1の演算を開始するまでの時間も掛かる。
【００５１】
なお、図２の場合、図３の場合に比べてコンテキストを切り替える時間が必要になるが、それは、上述した各処理に掛かる時間に比べれば、遥かに短い時間(演算が完了してから演算完了信号を出力するまでの時間とほぼ等価)で処理を行うことができる。
【００５２】
図４は図１のリコンフィギュラブル回路において、入出力データ数がレジスタ数を超えないときの動作を説明するための図であり、図５は図１のリコンフィギュラブル回路において、入出力データ数がレジスタ数を超えるときの動作を説明するための図である。
【００５３】
すなわち、図４は、入出力データ(演算結果)の数が入出力データを保持するためのレジスタの数を超えないときの動作を説明するものであり、また、図５は、演算結果の数が入出力データを保持するためのレジスタの数を超えるときの動作を説明するものである。
【００５４】
なお、図４および図５の例では、入出力データを保持するためのレジスタREGが６個(REG0〜REG5)あり、演算はコンテキストCTX0とコンテキストCTX1で実行する。
【００５５】
まず、図４(a)に示されるように、コンテキストCTX0実行前には、コンテキストCTX0の演算に必要な入力データＡ，ＢがそれぞれレジスタREG0，REG1に保持されている。また、コンテキストCTX1の演算に必要な入力データＣがレジスタREG4に保持されている。
【００５６】
また、図４(b)に示されるように、コンテキストCTX0実行後には、コンテキストCTX0で演算を行った出力データａ，ｂがそれぞれレジスタREG2，REG3に保持される。
【００５７】
そして、図４(c)に示されるように、コンテキストCTX1実行後には、コンテキストCTX1で演算を行った出力データｃがレジスタREG5に保持される。
【００５８】
このように、図４の例では、リコンフィギュラブル回路１０２で演算を行うための入出力データ数(６個)がレジスタ数(６個)を超えることがないので、次に説明を行う図５の例における問題は発生しない。
【００５９】
次に、図５を参照して、リコンフィギュラブル回路１０２で演算を行うための入力データ数(７個)とリコンフィギュラブル回路で演算を行った出力データ数(演算結果の数：５個)が入出力データを保持するためのレジスタ数(６個)を超える場合を説明する。
【００６０】
まず、図５(a)に示されるように、コンテキストCTX0実行前には、コンテキストCTX0の演算に必要な入力データＡ，Ｂ，ＣがそれぞれレジスタREG0，REG1，REG2に保持されている。
【００６１】
次に、図５(b)に示されるように、コンテキストCTX0実行後には、コンテキストCTX0で演算を行った結果(出力データ)ａ，ｂ，ｃがそれぞれレジスタREG3，REG4，REG5に保持される。
【００６２】
このように、コンテキストCTX0の入出力データを保持するために全てのレジスタREG0〜REG5が使用されることになる。すなわち、コンテキストCTX1の入力データをコンテキストCTX0実行前に予めレジスタに保持しておくことはできない。
【００６３】
そのため、図５(c)に示されるように、コンテキストCTX0実行後にコンテキストCTX0の出力データａ，ｂ，ｃを外部回路１０１(例えば、ＣＰＵのキャッシュメモリ)に待避させ、その後、空いたレジスタにコンテキストCTX1の入力データを書き込む。
【００６４】
さらに、図５(d)に示されるように、コンテキストCTX0の入力データＡ，Ｂ，ＣはコンテキストCTX0実行後は不要になるため、レジスタREG0，REG1，REG2にはコンテキストCTX1の入力データＤ，Ｅ，Ｆが上書きされる。
【００６５】
なお、待避させたコンテキストCTX0の出力データａが保持されていたレジスタREG3には、コンテキストCTX1の入力データＧが書き込まれる。なお、待避させたコンテキストCTX0の出力データｂ，ｃが保持されていたレジスタREG4，REG5は空き状態になっている。
【００６６】
そして、図５(e)に示されるように、コンテキストCTX1の出力データｄ，ｅが空き状態になっているレジスタREG4，REG5に書き込まれる。
【００６７】
このように、入出力データ数がレジスタ数を超えると、すなわち、入出力データを保持するレジスタ数が不足すると、レジスタの内容を外部に待避させるための時間が掛かって動作が遅延することになる。
【００６８】
また、入出力データ数がレジスタ数を超えないようにレジスタ数を増やすことも考えられるが、そうすると、例えば、データネットワーク部(１２４)の入力ポート数と出力ポート数も増え、データネットワークの経路選択を行う回路規模が大きくなってしまう。
【００６９】
図６Ａ，図６Ｂ〜図９Ａ，図９Ｂはメモリを含むリコンフィギュラブル回路の動作の一例を説明するための図であり、データ演算部(１２４)内にＲＡＭ(Random Access Memory)などのメモリを配置し、そのメモリを利用した場合の動作を説明するためのものである。
【００７０】
すなわち、データ演算部(１２４)内に配置したメモリに対して、リコンフィギュラブル回路１０２で演算を行うための入力データとリコンフィギュラブル回路１０２で演算を行った出力データを保持する。
【００７１】
ここで、図６Ａおよび図６Ｂ，図７Ａおよび図７Ｂ，図８Ａおよび図８Ｂ，並びに，図９Ａおよび図９Ｂは、それぞれデータ演算部(１２４)に配置されたメモリ(RAM0〜RAM5)を利用してコンテキストCTX0およびCTX1を実行したときの各メモリ状態を示す。
【００７２】
すなわち、図６Ａおよび図６Ｂは、外部回路１０１からの入力データが書き込まれたメモリ状態を示し、また、図７Ａおよび図７Ｂは、コンテキストCTX0の実行中および実行後(コンテキストCTX1実行前)のメモリ状態を示している。
【００７３】
さらに、図８Ａおよび図８Ｂは、コンテキストCTX1の実行中および実行後のメモリ状態を示し、そして、図９Ａおよび図９Ｂは、外部回路から出力データを読み出す時のメモリ状態を示している。
【００７４】
図６Ａ，図６Ｂ〜図９Ａ，図９Ｂに示す例では、入出力データを保持するためのメモリ(ＲＡＭ)が６個(RAM0〜RAM5)あり、演算はコンテキストCTX0とコンテキストCTX1で実行している。
【００７５】
まず、図６Ａおよび図６Ｂに示されるように、コンテキストCTX0実行前にコンテキストCTX0の演算に必要な入力データＡ，Ｂ，Ｃを外部回路１０１から入力し、その入力データＡ，Ｂ，ＣをそれぞれメモリRAM0，RAM1，RAM2のアドレス0に書き込む。
【００７６】
同様に、コンテキストCTX1の演算に必要な入力データＤ，Ｅ，Ｆ，Ｇを外部回路１０１から入力し、その入力データＤ，Ｅ，Ｆ，ＧをそれぞれメモリRAM0，RAM1，RAM2,RAM3のアドレス1に書き込む。
【００７７】
ここで、コンテキストCTX1の入力データＡとコンテキストCTX2の入力データＤは、同一のメモリRAM0に書き込みが行われるが、書き込みアドレスが異なるため上書きされることなく、両方の入力データを保持することができる。なお、メモリRAM1，RAM2についても同様である。
【００７８】
次に、入力データＡ〜Ｇの書き込みが完了したら、外部回路１０１は演算開始信号OSSを出力し、その演算開始信号OSSを受信したリコンフィギュラブル回路１０２は、コンテキストCTX0の実行を行う。
【００７９】
すなわち、図７Ａおよび図７Ｂに示されるように、メモリRAM0の読み出し／書き込み制御信号生成回路(Ｒ／Ｗ制御信号生成用演算器)は、メモリRAM0に対してコンテキストCTX0の演算入力データＡの読み出しを行うための制御信号を出力する。
【００８０】
また、メモリRAM0のアドレス生成回路(アドレス生成用演算器)は、コンテキストCTX0の入力データＡが保持されているアドレス値0を出力する。なお、コンテキストCTX0の入力データＢ，Ｃを出力するメモリRAM1，RAM2についても同様である。
【００８１】
さらに、コンテキストCTX0の演算出力データ(演算結果)ａ，ｂ，ｃは、それぞれメモリRAM3，RAM4，RAM5のアドレス0に書き込みが行われる。
【００８２】
このとき、コンテキストCTX1の入力データＧはメモリRAM3に保持されているが、コンテキストCTX0の演算出力データＡが書き込まれるアドレス0と異なるアドレス1に保持されているので、上書きされることはない。
【００８３】
ここで、メモリRAM3のＲ／Ｗ制御信号生成用演算器は、コンテキストCTX0の演算出力データａのメモリRAM3への入力タイミングに同期して、メモリRAM3に対して演算出力データａの書き込みを行うための制御信号を出力する。
【００８４】
また、メモリRAM3のアドレス生成用演算器は、演算出力データａをアドレス0に書き込みを行うためのアドレス値0を出力する。なお、コンテキストCTX0の演算出力データｂ，ｃの書き込みを行うメモリRAM4，RAM5についても同様である。
【００８５】
さらに、図８Ａおよび図８Ｂに示されるように、コンテキストCTX0の実行が完了したら、動的再構成によるコンテキストの切り替えを行って、コンテキストCTX1の実行を行う。
【００８６】
すなわち、メモリRAM0のＲ／Ｗ制御信号生成用演算器は、メモリRAM0に対してコンテキストCTX1の演算入力データＤの読み出しを行うための制御信号を出力する。
【００８７】
また、メモリRAM0のアドレス生成用演算器は、コンテキストCTX1の入力データＤが保持されているアドレス値1を出力する。コンテキストCTX1の入力データＥ，Ｆ，Ｇを出力するメモリRAM1，RAM2，RAM3についても同様である。
【００８８】
コンテキストCTX1の演算出力データ(演算結果)ｄ，ｅ，ｆ，ｇはそれぞれメモリRAM2，RAM3，RAM4，RAM5のアドレス1に書き込みが行われる。
【００８９】
このとき、メモリRAM2，RAM3に保持されていたコンテキストCTX1の入力データＦ，Ｇに対して上書きが行われるが、コンテキストCTX1の演算は完了しているためコンテキストCTX1の入力データは不要であり、上書きされても問題は生じない。
【００９０】
メモリRAM2のＲ／Ｗ制御信号生成用演算器は、コンテキストCTX1の演算出力データｄのメモリRAM2への入力タイミングに同期して、メモリRAM2に対して演算出力データｄの書き込みを行うための制御信号を出力する。
【００９１】
また、メモリRAM2のアドレス生成用演算器は、演算出力データｄをアドレス1に書き込みを行うためのアドレス値1を出力する。コンテキストCTX1の演算出力データｅ，ｆ，ｇの書き込みを行うメモリRAM3，RAM4，RAM5についても同様である。
【００９２】
そして、リコンフィギュラブル回路１０２は、コンテキストCTX1の実行が完了したら、外部回路１０１に対して演算完了信号OCSを出力する。
【００９３】
さらに、演算完了信号OCSを受信した外部回路１０１は、演算が完了したことを認識し、コンテキストCTX0とコンテキストCTX1の演算結果をそれぞれの演算結果が保持されているメモリRAM0〜RAM5の該当アドレスから演算結果(演算出力データ)の読み出しを行う。
【００９４】
図９Ａおよび図９Ｂに示されるように、メモリRAM3，RAM4，RAM5のアドレス0に保持されたコンテキストCTX0の演算結果ａ，ｂ，ｃ、並びに、メモリRAM2，RAM3，RAM4，RAM5のアドレス1に保持されたコンテキストCTX1の演算結果ｄ，ｅ，ｆ，ｇが読み出される。
【００９５】
このように、コンテキストCTX0の演算結果ａ，ｂ，ｃはコンテキストCTX1の実行によって上書きされることなく保持され、そのため、コンテキストCTX0の結果を外部回路１０１に待避させる必要がない。
【００９６】
しかしながら、図６Ａ，図６Ｂ〜図９Ａ，図９Ｂを参照して説明したＲＡＭなどのメモリを有するリコンフィギュラブル回路は、以下のような課題が生じることになる。
【００９７】
まず、演算入力データが格納されているメモリ(ＲＡＭ)に対して、コンテキスト単位に入力データが格納されているアドレスの読み出しを行うためのアドレス値を生成するための演算器が必要になる。さらに、データを格納するメモリに対してコンテキスト単位に出力データの書き込みを行うためのアドレス値を生成するための演算器が必要になる。
【００９８】
すなわち、多数のアドレス生成用演算器が必要になるため、本来の演算に使用するための演算器が不足する虞がある。
【００９９】
また、演算入力データが格納されているメモリと演算出力データを格納するメモリに対して、コンテキスト単位のＲ／Ｗ制御信号生成用演算器が必要になり、本来の演算に使用するための演算器が不足する虞がある。
【０１００】
さらに、データ演算部内のメモリリソースがデータ入出力のために消費されるため、データ演算を行うためのメモリ領域が不足する虞がある。
【０１０１】
また、メモリとアドレス生成用演算器間、並びに、メモリとＲ／Ｗ制御信号生成用演算器間のネットワークリソースを消費するため、完全結合ではないデータネットワークを使用した場合、他の演算器と演算器間の結線性が低下する。
【０１０２】
そして、例えば、ＲＡＭ，アドレス生成用演算器およびＲ／Ｗ制御信号生成用演算器を新たに追加した場合、ＲＡＭと演算器の入出力をデータネットワークに接続するための入出力ポート数が増加してデータネットワークの回路規模が増大する虞がある。
【０１０３】
以下、添付図面を参照して、リコンフィギュラブル回路および半導体集積回路の実施例を詳述する。
【０１０４】
図１０は半導体集積回路の一実施例を示すブロック図である。図１０において、参照符号１は外部回路、２はダイナミック・リコンフィギュラブル回路を含むリコンフィギュラブル回路を示している。
【０１０５】
図１０に示されるように、半導体集積回路は、外部回路１およびリコンフィギュラブル回路２を含む。ここで、半導体集積回路は、例えば、ＣＰＵである外部回路１とそのアクセラレータとして機能するリコンフィギュラブル回路２を含む１つのパッケージングされたＬＳＩである。
【０１０６】
リコンフィギュラブル回路２は、レジスタ制御部２１，入出力データインタフェース部２２，コンフィグレーションデータ保持部２３，データネットワーク部２４，および，データ演算部２５を含む。
【０１０７】
外部回路１は、リコンフィギュラブル回路２で演算を行うための入力データIDATを入出力データバスに出力する。
【０１０８】
また、外部回路１は、レジスタ制御部２１に対して、書き込み制御信号WCSと入力データIDATを格納するためのレジスタREG00〜REGmnに対応するアドレスADDをアドレスバスに出力する。
【０１０９】
ここで、レジスタREG00〜REGmnは、入出力データインタフェース部２２において、例えば、出力ポートOTP0〜OTPn(ポートPRT0〜PRTn)に対応するREG00〜REG0nが深さ方向にｍ個(ｍバンク)並べられたマトリクス構造(…，REGm0〜REGmn)になっている。
【０１１０】
なお、レジスタREG00〜REGmnは、フリップフロップ(ＦＦ)およびＲＡＭ等のデータを記憶することが可能なものであれば適用することが可能である。
【０１１１】
レジスタ制御部２１は、入出力データインタフェース部２２に対して、入力されたアドレス値に対応するポートとバンクのレジスタREG00〜REGmnへのレジスタ書き込みイネーブル信号RWESを出力する。
【０１１２】
さらに、レジスタ制御部２１は、入出力データインタフェース部２２に対して、外部／内部書き込みデータ選択信号WDSSを出力して外部データを選択する。これらの動作により、外部回路１からの入力データIDATをアドレスADDが示すレジスタに保持することができる。
【０１１３】
外部回路１は、コンフィグレーションデータ保持部２３に対して、動的再構成を行うためのコンフィギュレーションデータを、入出力データバスを介して出力する。
【０１１４】
また、外部回路１は、レジスタ制御部２１に対して、書き込み制御信号WCSを出力すると共に、コンフィギュレーションデータの保持を行うコンフィギュレーションデータ保持部２３に対応するアドレスADDをアドレスバスに出力する。
【０１１５】
さらに、外部回路１は、レジスタ制御部２１に対して、外部回路１またはリコンフィギュラブル回路２からのデータのどちらを優先して書き込むかを示す外部回路／リコンフィギュラブル回路書き込み優先信号WPSを出力する。
【０１１６】
レジスタ制御部２１は、コンフィギュレーションデータ保持部２３に対して、コンフィギュレーションデータ書き込みイネーブル信号CWESを出力し、外部回路１からのコンフィギュレーションデータを保持する。
【０１１７】
外部回路１は、入出力データインタフェース部２２，コンフィギュレーションデータ保持部２３およびデータ演算部２５に対して、演算を開始するための演算開始信号OSSを出力する。
【０１１８】
この演算開始信号OSSにより、入出力データインタフェース部２２のレジスタ(REG00〜REGmn)に格納された演算入力データは、データネットワーク部２４を介して、データ演算部２５(データ演算部の各演算器)に出力される。
【０１１９】
コンフィギュレーションデータ保持部２３は、各コンテキスト単位にどのバンクのレジスタをデータネットワーク部２４(データ演算部２５)に出力するかの情報をポートごとに出力する。
【０１２０】
データネットワーク部２４は、入出力データインタフェース部２２の出力ポートとデータ演算部２５の各演算器の入力端子間の経路選定、および、各演算器の出力端子と入出力データインタフェース部２２の入力ポート間の経路選定を行う。さらに、データネットワーク部２４は、各演算器の出力端子から各演算器の入力端子間の経路選定も行う。
【０１２１】
コンフィギュレーションデータ保持部２３には、動的再構成を行うためのネットワーク経路選定情報および各演算器に対する演算命令情報、並びに、入出力データインタフェース部２２におけるレジスタ(REG00〜REGmn)のバンク情報などが保持されている。
【０１２２】
また、コンフィギュレーションデータ保持部２３は、各コンテキストのコンフィギュレーションデータが格納されているメモリの制御を行って、各コンテキストに対応したコンフィギュレーションデータを出力する。
【０１２３】
データ演算部２５で行った演算結果は、データネットワーク部２４を介して出力され、入出力データインタフェース部２２の各ポートに対応するレジスタ(REG00〜REGmn)に保持される。
【０１２４】
ここで、レジスタ(REG00〜REGmn)への書き込みは、データネットワーク部２４から出力された演算結果書き込み制御信号ORWCSと、コンフィギュレーションデータ保持部２３から出力される各ポートのレジスタ入力バンク選択情報に基づいて行われる。
【０１２５】
すなわち、レジスタ制御部２１は、演算結果書き込み制御信号ORWCSおよび各ポートのレジスタ入力バンク選択情報を受け取って、対応するレジスタ書き込みイネーブル信号RWESを生成し、各レジスタに対する書き込みを制御する。
【０１２６】
さらに、レジスタ制御部２１は、入出力データインタフェース部２２に対して、外部／内部書き込みデータ選択信号WDSSを出力して内部データを選択する。これらの動作により、データネットワーク部２４を介して出力されるデータ演算部２５の演算結果をアドレスADDが示すレジスタに保持することができる。
【０１２７】
ここで、レジスタ(REG00〜REGmn)に対する書き込み処理は、外部回路１からの書き込みとリコンフィギュラブル回路２からの書き込みが同時に行われる事象が発生した場合、どちらの書き込みを優先するかの情報に基づいて行われる。
【０１２８】
すなわち、外部回路１からの書き込みとリコンフィギュラブル回路２からの書き込みが同時に発生したときの優先書き込み処理は、外部回路１からレジスタ制御部２１に供給される外部回路／リコンフィギュラブル回路書き込み優先信号WPSに基づいて行われる。
【０１２９】
なお、正常時は同時書き込みの事象が発生しないため、例えば、レジスタ制御部２１から外部回路１への同時書き込み検出信号SWDSをエラー情報として外部回路１に出力する。
【０１３０】
演算が完了すると、入出力データインタフェース部２２から外部回路１に対して演算完了信号OCSが出力され、外部回路１は演算が完了したことを認識する。
【０１３１】
そして、外部回路１は、演算結果を取得するために、演算結果が保持されたレジスタ(REG00〜REGmn)に対応するアドレスADDを、アドレスバスを介してレジスタ制御部２１に出力する。
【０１３２】
レジスタ制御部２１は、入出力データインタフェース部２２に対して、そのアドレス値に基づいた出力データ選択信号ODSSを出力し、対応するレジスタの出力データ(演算結果)ODATが入出力データバスを介して外部回路１に出力される。
【０１３３】
図１１は図１０のリコンフィギュラブル回路におけるコンフィギュレーションデータ保持部の一例を示すブロック図である。
【０１３４】
コンフィグレーションデータ保持部２３は、入出力データインタフェース部２２におけるレジスタ(REG00〜REGmn)のバンク(BK0〜BKn)を切り替えるための複数のコンフィギュレーションデータを有し、コンテキスト単位にバンク切り替えを行えるようになっている。
【０１３５】
すなわち、図１１に示されるように、コンフィグレーションデータ保持部２３には、例えば、ｎ個のコンテキストCTX0〜CTXnのコンフィギュレーションデータが保持されている。
【０１３６】
各コンフィギュレーションデータは、それぞれネットワーク経路選定情報，演算命令情報，並びに，各ポートのレジスタ出力バンク選択情報およびレジスタ入力バンク選択情報などのデータを有している。
【０１３７】
すなわち、各コンフィギュレーションデータは、例えば、ポートPRT0のレジスタ入力バンク選択情報〜ポートPRTnのレジスタ入力バンク選択情報、並びに、ポートPRT0のレジスタ出力バンク選択情報〜ポートPRTnのレジスタ出力バンク選択情報を含む。
【０１３８】
この各ポートのレジスタ入力バンク選択情報により、各コンテキストCTX0〜CTXnの各ポートPRT0〜PRTn単位に、どのバンク(BK0〜BKn)のレジスタ(REG00〜REGmn)への入力を行うかと、どのバンクのレジスタから出力するかを個別に指定できるようになっている。
【０１３９】
図１２は図１０のリコンフィギュラブル回路におけるレジスタ制御部の一例を示すブロック図である。
【０１４０】
図１２に示されるように、レジスタ制御部２１は、外部回路／リコンフィギュラブル回路同時書き込み検出部２１１，外部回路書き込みイネーブル信号生成部２１２，および，リコンフィギュラブル回路書き込みイネーブル信号生成部２１３を有する。
【０１４１】
さらに、レジスタ制御部２１は、優先判定部２１４，出力データ選択信号生成部２１５，ＯＲ回路216-00〜216-mn，および，外部／内部書き込みデータ選択信号生成回路217-00〜217-mnを有する。
【０１４２】
外部回路書き込みイネーブル信号生成部２１２は、外部回路１からのアドレスADDおよび書き込み制御信号WCSを受け取り、外部回路書き込みイネーブル信号EWEを外部回路／リコンフィギュラブル回路同時書き込み検出部２１１および優先判定部２１４に出力する。
【０１４３】
リコンフィギュラブル回路書き込みイネーブル信号生成部２１３は、データネットワーク部２４からの演算結果書き込み制御信号ORWCSおよびコンフィグレーションデータ保持部２３からの各ポートのレジスタ入力バンク選択情報を受け取る。
【０１４４】
ここで、各ポートのレジスタ入力バンク選択情報は、各(入出力)ポートPRT0〜PRTnのレジスタバンク選択信号BSS0〜BSSnに対応する。また、生成されたリコンフィギュラブル回路書き込みイネーブル信号RCWEは、外部回路／リコンフィギュラブル回路同時書き込み検出部２１１および優先判定部２１４に出力される。
【０１４５】
外部回路／リコンフィギュラブル回路同時書き込み検出部２１１は、外部回路書き込みイネーブル信号EWEとリコンフィギュラブル回路書き込みイネーブル信号RCWEを受け取り、同時書き込み検出信号SWDSを生成して外部回路１および優先判定部２１４に出力する。
【０１４６】
なお、上述したように、同時書き込み検出信号SWDSは、正常時には生じない外部回路１とリコンフィギュラブル回路２の書き込みが同時に発生したときに出力されるものであり、エラー情報として外部回路１に提供される。
【０１４７】
優先判定部２１４は、外部回路書き込みイネーブル信号EWEおよびリコンフィギュラブル回路書き込みイネーブル信号RCWEを受け取り、同時書き込み検出信号SWDSおよび外部回路／リコンフィギュラブル回路書き込み優先信号WPSに基づいて優先判定処理を行う。
【０１４８】
すなわち、外部回路１からの書き込みとリコンフィギュラブル回路２からの書き込みが同時に発生すると、優先信号WPSに基づいて優先される側のイネーブル信号EWE(EWE00〜EWEmn)またはRCWE(RCWE00〜RCWEmn)を選択して後段の回路に出力する。
【０１４９】
そして、優先判定部２１４は、外部回路１からの各バンクのレジスタに対する書き込みイネーブル信号EWE00〜EWEmn、および、リコンフィギュラブル回路２からの各バンクのレジスタに対する書き込みイネーブル信号RCWE00〜RCWEmnを出力する。
【０１５０】
すなわち、バンクBK0のポートPRT0のレジスタREG00に対する信号EWE00およびRCWE00は、ＯＲ回路216-00および外部／内部書き込みデータ選択信号生成回路217-00に供給され、それぞれ信号RWES00およびWDSS00を出力する。
【０１５１】
また、バンクBK1のポートPRT0のレジスタREG10に対する信号EWE10およびRCWE10は、ＯＲ回路216-10および外部／内部書き込みデータ選択信号生成回路217-10に供給され、それぞれ信号RWES10およびWDSS10を出力する。
【０１５２】
さらに、バンクBKmのポートPRT0のレジスタREGm0に対する信号EWEm0およびRCWEm0は、ＯＲ回路216-m0および外部／内部書き込みデータ選択信号生成回路217-m0に供給され、それぞれ信号RWESm0およびWDSSm0を出力する。
【０１５３】
そして、バンクBKmのポートPRTnのレジスタREGmnに対する信号EWEmnおよびRCWEmnは、ＯＲ回路216-mnおよび外部／内部書き込みデータ選択信号生成回路217-mnに供給され、それぞれ信号RWESmnおよびWDSSmnを出力する。
【０１５４】
なお、出力データ選択信号生成回路２１５は、外部回路１からのレジスタ対象を示すアドレス情報ADDから、そのアドレス値に対応したレジスタ出力を選択するための出力データ選択信号を生成し、後述する図１３のセレクタSELoに出力する。
【０１５５】
図１３は図１０のリコンフィギュラブル回路における入出力データインタフェース部の一例を示すブロック図である。
【０１５６】
図１３に示されるように、入出力データインタフェース部２２は、複数のレジスタREG00〜REGmn，および，セレクタSELo，SEL00〜SELmn，SELB0〜SELBnを有する。
【０１５７】
図１２および図１３に示されるように、レジスタ書き込みイネーブル信号RWES00〜RWESmn(RWES)は、それぞれ対応するレジスタREG00〜REGmnに対して書き込みイネーブル信号として供給される。
【０１５８】
すなわち、レジスタ書き込みイネーブル信号RWES00〜RWESmnがアサートされたときに、それぞれ対応するレジスタREG00〜REGmnに供給されたデータを書き込む。
【０１５９】
さらに、図１２および図１３に示されるように、生成された外部／内部書き込みデータ選択信号WDSS00〜WDSSmn(WDSS)は、それぞれ対応するセレクタSEL00〜SELmnに対する書き込みデータ選択信号として供給される。
【０１６０】
すなわち、各セレクタSEL00〜SELmnは、信号WDSS00〜WDSSmnに応じて外部回路１からの入力データIDATまたはデータネットワーク２４(演算部２５)からの演算結果入力を選択して対応するレジスタREG00〜REGmnに供給する。
【０１６１】
図１３において、レジスタREG00〜REGmnは、リコンフィギュラブル回路１で演算を行うための入力データ(IDATA)および演算を行った結果(演算結果入力)を保持する機能を有する。
【０１６２】
ここで、レジスタREG00〜REGmnは、各ポートPRT0〜ＰＲＴｎに対して複数個のデータを保持することができる。なお、ポートPRT0〜PRTnは、入出力データインタフェース部２２の入力ポートおよび出力ポート(入出力ポート)として機能する。
【０１６３】
例えば、ポートPRT0に着目したとき、レジスタREG00，REG10，REG20，…，REGm0というように、ｍ＋１個のデータを保持することができるようになっている。すなわち、各ポートに対して奥行き方向の記憶領域(バンク)BK0〜BKmを有している。
【０１６４】
前述したように、各レジスタREG00〜REGmnへのデータ書き込みは、レジスタ書き込みイネーブル信号RWES00〜RWESmnによって行われるが、外部回路１からの入力データIDATとリコンフィギュラブル回路２自体の演算結果入力を選択して保持するようになっている。
【０１６５】
セレクタSELB0〜SELBnは、各ポートPRT0〜PRTnにおいて、各ポートのレジスタ出力バンク選択情報に基づいてどのバンクBK0〜BKmに保持されているデータをデータ演算部２５で演算を行うための入力データとして出力するか選択を行う。
【０１６６】
なお、各ポートのレジスタ出力バンク選択情報(コンフィギュレーションデータ)は、コンフィギュレーションデータ保持部２３から供給される。また、バンクの切り替えは、後述するように、コンテキスト(CTX0,CTX1)単位に切り替えることができる。
【０１６７】
また、セレクタSELoは、どのレジスタREG00〜REGmnに保持されている演算結果を外部回路１に出力するかの選択を行う。ここで、レジスタREG00〜REGmnの選択は、レジスタ制御部２１からの出力データ選択信号ODSSによって行われる。なお、外部回路１は、全てのレジスタREG00〜REGmnの選択を行うことができる。
【０１６８】
さらに、セレクタSEL00〜SELmnは、レジスタREG00〜REGmnに対して、外部回路１からの入力データIDATを書きこむか、リコンフィギュラブル回路２(データ演算部２５)で演算した結果を書きこむかの選択を行う。
【０１６９】
すなわち、レジスタ書き込みイネーブル信号RWES00〜RWESmnがアサートされたレジスタREG00〜REGmnに対して、セレクタSEL00〜SELmnにより選択された側のデータが書き込まれる。
【０１７０】
なお、レジスタREG00〜REGmnは、フリップフロップやＲＡＭなどのデータを記憶できるものであればなんでもよい。また、図１３では、各ポートPRT0〜PRTnに対して全てレジスタが設けられているが、これは単なる例であり、ポートPRT0〜PRTnの一部に対してレジスタを設けないようにしてもよい。
【０１７１】
図１４は図１０の半導体集積回路の動作の一例を説明するためのであり、左側は外部回路１の動作フローを示し、また、右側はリコンフィギュラブル回路２の動作フローを示す。
【０１７２】
ここで、図１４は、コンテキストCTX0とCTX1で、ポートPRT0の入力データを換える必要がある場合、すなわち、前述した図３のケースに対して本実施例を適用した場合の動作フローを示している。
【０１７３】
まず、図１４に示されるように、外部回路１は、コンテキストCTX0の入力データをバンクBK0のポートPRT0のレジスタREG00に書き込み、コンテキストCTX1の入力データをバンクBK1のポートPRT0のレジスタREG10に書き込み、演算開始信号OSSを出力する。
【０１７４】
ここで、コンテキストCTX0のコンフィギュレーションデータに含まれるポートPRT0のレジスタ出力バンク選択情報(セレクタSELB0の制御信号)により、コンテキストCTX0の実行時にはバンクBK0(レジスタREG00)の出力が選択される。そして、このバンクBK0(レジスタREG00)の出力がコンテキストCTX0の演算入力データになる。
【０１７５】
次に、コンテキストCTX0の実行が完了したら、動的再構成によるコンテキストの切り替えを行い、コンテキストCTX1の実行を行う。
【０１７６】
このとき、コンテキストCTX1のコンフィギュレーションデータに含まれるポートPRT0のレジスタ出力バンク選択情報(セレクタSELB0の制御信号)により、コンテキストCTX1の実行時にはバンクBK1(レジスタREG10)の出力が選択され。そして、このバンクBK1(レジスタREG10)の出力がコンテキストCTX1の演算入力データになる。
【０１７７】
さらに、コンテキストCTX1の実行が完了したら外部回路１に演算完了信号OCSを出力する。演算完了信号OCSを受信した外部回路１は、演算が完了したことを認識し、コンテキストCTX0とコンテキストCTX1の演算結果をそれぞれの演算結果が保持されているレジスタから演算結果の読み出しを行う。
【０１７８】
すなわち、出力データ選択信号ODSSによりセレクタSELoを制御して、コンテキストCTX0およびCTX1の演算結果が保持されているレジスタから出力データODATを読み出す。
【０１７９】
図１５は図１０の半導体集積回路の動作の他の例を説明するためのであり、左側は外部回路１の動作フローを示し、また、右側はリコンフィギュラブル回路２の動作フローを示す。この図１５に示す動作フローは、図１４の動作フローにおいて、コンテキストCTX0およびCTX1の処理を並列的に実行するものである。
【０１８０】
図１５に示されるように、コンテキストCTX0の演算実行時間に対してコンテキストCTX1の入力データを書き込む時間が十分に小さい場合、コンテキストCTX0の演算実行と並行してコンテキストCTX1の入力データをバンクBK1のポートPRT0のレジスタREG10に書き込む。
【０１８１】
この場合、コンテキストCTX0の演算実行時間内に並行してコンテキストCTX1の入力データを書き込むため、一連の処理にかかる時間を考えると、コンテキストCTX1の入力データを書き込む時間はゼロになり、さらなる高速化の効果を得ることができる。
【０１８２】
このように、各バンクを選択する手段と、バンクの選択情報を各コンテキスト単位に持たせて動的再構成と連動してバンク選択信号を出力する手段を持つことで、コンテキスト間で実行を停止することなく各コンテキストの入力データを供給することが可能になる。
【０１８３】
図１６は図１０のリコンフィギュラブル回路において、入出力データ数がレジスタ数を超えるときの動作を説明するための図である。
【０１８４】
まず、図１６(a)に示されるように、コンテキストCTX0実行前にバンクBK0にあるレジスタREG00，REG01，REG02にコンテキストCTX0の入力データＡ，Ｂ，Ｃを書き込む。同様に、コンテキストCTX0実行前にバンクBK1にあるレジスタREG10，REG11，REG12，REG13にコンテキストCTX1の入力データＤ，Ｅ，Ｆ，Ｇを書き込む。
【０１８５】
そして、コンテキストCTX0とコンテキストCTX1の入力データの書き込みが完了したら、演算開始信号OSSを出力してコンテキストCTX0を実行する。
【０１８６】
ここで、コンテキストCTX0実行時には、コンテキストCTX0のコンフィギュレーションデータに含まれるポートPRT0〜PRT5のレジスタ出力バンク選択情報により、バンクBK0のレジスタREG00，REG01，REG02の出力が選択される。これにより、入力データＡ，Ｂ，ＣがコンテキストCTX0の演算の入力データになる。
【０１８７】
図１６(b)に示されるように、コンテキストCTX0の実行結果は、コンテキストCTX0のコンフィギュレーションデータに含まれるポートPRT0〜PRT5のレジスタ出力バンク選択情報により、バンクBK0のレジスタREG03，REG04，REG05にデータａ，ｂ，ｃが保持される。
【０１８８】
コンテキストCTX0の実行が完了したら、動的再構成によるコンテキストの切り替えを行い、コンテキストCTX1の実行を行う。
【０１８９】
図１６(c)に示されるように、コンテキストCTX1のコンフィギュレーションデータに含まれるポートPRT0〜PRT5のレジスタ出力バンク選択情報により、コンテキストCTX1実行時には、バンクBK1のレジスタREG10，REG11，REG12，REG13の出力が選択される。これにより、入力データＤ，Ｅ，Ｆ，ＧがコンテキストCTX1の演算の入力データになる。
【０１９０】
ここで、コンテキストCTX1の入力データＤ，Ｅ，Ｆ，Ｇは、コンテキストCTX0実行前に既にバンクBK1のレジスタREG10，REG11，REG12，REG13に書き込まれている。そして、動的再構成によるコンテキストの切り替えに連動して、バンクBK1にあるレジスタREG10，REG11，REG12，REG13が選択されるので、コンテキスト間で実行を停止することなく、各コンテキストの入力データを供給することが可能になる。
【０１９１】
図１６(c)に示されるように、コンテキストCTX1の実行結果ｄ，ｅ，ｆ，ｇは、コンテキストCTX1のコンフィギュレーションデータに含まれるポートPRT0〜PRT5のレジスタ出力バンク選択情報によりバンクBK1のレジスタREG12，REG13，REG14，REG15に保持される。
【０１９２】
なお、リコンフィギュラブル回路２は、コンテキストCTX1の実行が完了したら演算完了信号OCSを外部回路１に出力する。演算完了信号OCSを受信した外部回路１は、演算が完了したことを認識し、コンテキストCTX0およびCTX1の演算結果をそれぞれの演算結果が保持されているレジスタから読み出す。
【０１９３】
すなわち、出力データ選択信号ODSSにより、バンクBK0のレジスタREG03〜REG05に保持されたコンテキストCTX0の演算結果ａ，ｂ，ｃと、バンクBK1のレジスタREG12〜REG15に保持されたコンテキストCTX1の演算結果ｄ，ｅ，ｆ，ｇが読み出される。
【０１９４】
ところで、バンクがない場合(BK0しかない場合)、レジスタREG00，REG01，REG02に保持されているコンテキストCTX0の入力が不要であればコンテキストCTX1の演算結果をそのレジスタREG00，REG01，REG02に上書きしても問題はない。しかしながら、コンテキストCTX1の結果は４つ(データｄ，ｅ，ｆ，ｇ)あるのでレジスタ数が不足することになる。
【０１９５】
また、レジスタREG03，REG04，REG05にはコンテキストCTX0の演算結果が保持されており、外部回路１がコンテキストCTX0の演算結果ａ，ｂ，ｃをまだ読み出していないため、コンテキストCTX1の結果を上書きすることはできない。
【０１９６】
これに対して、本実施例によれば、上述したような問題を生じることなく、また、ポート数を増やすことなく、対応することが可能である。
【０１９７】
以上、詳述したように、本実施例によれば、演算の入出力データの格納にデータ演算部内のメモリを使用しないため、ＲＡＭアドレスの読み出しと書き込みを行うためのアドレス生成用演算器が不要になり、これに起因した演算器不足の発生をなくすことができる。
【０１９８】
また、演算の入出力データの格納にデータ演算部の内部メモリを使用しないため、ＲＡＭの読み出し／書き込み制御信号を生成するための演算器が不要になり、これに起因した演算器不足の発生をなくすことができる。これは、データ演算部の内部メモリにおけるメモリ領域の不足を生じないことにもなる。
【０１９９】
さらに、データ演算部の内部メモリだけでなく、アドレス生成用演算器およびＲ／Ｗ制御信号生成用演算器も使用しないため、これに起因した他の演算器と演算器間の結線性の低下をなくすことができる。
【０２００】
また、データ演算部内のメモリ、アドレス生成用演算器、および、読み出し/書き込み制御信号を生成するための演算器を新たに追加する必要性もない。
そのため、これらのＲＡＭおよび演算器の入出力をデータネットワークに接続するためのデータネットワークの入出力ポート数を増加する必要はなく、さらに、データネットワークの回路規模が増大することもない。
【０２０１】
［コンフィギュレーションデータの設定方法について］
次に、図１７の記述例に基づいて、コンフィギュレーションデータの設定方法を説明する。図１７は図１０のリコンフィギュラブル回路において、コンテキストで実行する演算内容の記述例を示す図であり、論理式により記述した例を示している。
【０２０２】
図１７の例では、コンテキストCTX0(#context0)において、（Ａ＋Ｂ）＊Ｃの演算を行い、その結果をＸに代入し、さらに、コンテキストCTX1(#context1)において、（Ｂ−Ｃ）＊Ｄの演算を行い、その結果をＹに代入する。
【０２０３】
そして、ソフトウェアを用いて、論理式を記述したファイルを入力とし、各コンテキストの以下の情報をコンフィギュレーションデータとして出力する。このソフトウェアを、以下の説明ではコンパイラと称する。
【０２０４】
すなわち、コンフィギュレーションデータとして出力する情報(出力情報)は、論理式と等価な演算結果を得るためのデータ演算部２５における各演算器の割り当て情報、および、その割り当てた演算器の演算命令情報を含む。
【０２０５】
また、出力情報は、割り当てた演算器間でデータの入出力を行うためのデータネットワーク部２４のネットワーク経路選定情報(経路選定情報)を含む。
【０２０６】
さらに、出力情報は、入力データＡ，Ｂ，Ｃ，Ｄをデータインタフェース部２４のどのレジスタ(ポートとバンク)に保持するかの割り当て情報、および、出力データ(演算結果)Ｘ，Ｙをデータインタフェース部のどのレジスタに保持するかの割り当て情報を含む。
【０２０７】
また、出力情報は、入出力データインタフェース部２２の入力データが保持されたレジスタおよび出力データを保持するレジスタと、割り当てた演算器間でデータの入出力を行うためのデータネットワーク部２４の経路選定情報を含む。
【０２０８】
以下、コンパイラによるこれらの出力情報(コンフィギュレーションデータとして出力する情報)の生成方法の一例を説明する。
【０２０９】
ここで、データ演算部２５に４つの演算器(OP0〜OP3)があり、それぞれ加算，減算および乗算が行えるものとする。
【０２１０】
また、入出力データインタフェース部２２は、入出力それぞれ３つのポート(入力ポートINP0〜INP2および出力ポートOTP0〜OTP2)を持ち、レジスタは、各ポートに対して２つのバンク(BK0，BK１)を持つものとする。
【０２１１】
すなわち、入力ポートINP0〜INP2と出力ポートOTP0〜OTP2は同数であり、それぞれに対してバンクBK0のレジスタREG00〜REG02およびバンクBK1のレジスタREG10〜REG12が設けられている。
【０２１２】
［演算器の割り当てと演算器の演算命令情報の生成について］
まず、コンテキストCTX0における入力データＡとＢの演算(加算)を行うために演算器OP0を割り当て、演算器OP0に加算命令を与えるためのコンフィギュレーションデータを外部回路１からコンフィギュレーションデータ保持部２３に出力する。
【０２１３】
次に、コンテキストCTX0における演算器OP0の出力と入力データＣの演算(乗算)を行うために演算器OP1を割り当て、演算器OP1に乗算命令を与えるためのコンフィギュレーションデータを外部回路１からコンフィギュレーションデータ保持部２３に出力する。
【０２１４】
さらに、コンテキストCTX1における入力データＢとＣの演算(減算)を行うために演算器OP2を割り当て、演算器OP2に減算命令を与えるためのコンフィギュレーションデータを外部回路１からコンフィギュレーションデータ保持部２３に出力する。
【０２１５】
そして、コンテキストCTX1における演算器OP2の出力と入力データＤの演算(乗算)を行うために演算器OP3を割り当て、演算器OP3に乗算命令を与えるためのコンフィギュレーションデータを外部回路１からコンフィギュレーションデータ保持部２３に出力する。以上により、演算器の割り当てと演算器の演算命令情報の生成が行われることになる。
【０２１６】
［演算器間でデータの入出力を行うための経路選定情報の生成について］
まず、コンテキストCTX0における演算器OP0の結果(Ａ＋Ｂ)を入力として演算器OP1で演算を行うために、演算器OP0の出力と演算器OP1の入力が接続されるためのコンフィギュレーションデータを外部回路１からコンフィギュレーションデータ保持部２３に出力する。
【０２１７】
また、コンテキストCTX1における演算器OP2の結果(Ｂ−Ｃ)を入力として演算器OP3で演算を行うために、演算器OP2の出力と演算器OP3の入力が接続されるためのコンフィギュレーションデータを外部回路１からコンフィギュレーションデータ保持部２３に出力する。
【０２１８】
以上により、演算器間でデータの入出力を行うための経路選定情報の生成が行われることになる。なお、［入出力データインタフェース部と演算器間の経路選定情報の生成について］は、後に詳述する。
【０２１９】
［入出力データを保持するレジスタの割り当て情報の生成について］
まず、入出力データを保持するレジスタの割り当て情報の生成について説明する。まず、コンテキストCTX0の入力データＡ，Ｂ，Ｃを入力ポートINP0〜INP2に対応するバンクBK0のレジスタREG00〜REG02に保持することを決定する。なお、入力データＢ，ＣはコンテキストCTX1の入力データとしても利用される。
【０２２０】
ここで、コンテキストCTX0の入力データＡは、コンテキストCTX0の演算が完了した後は(コンテキストCTX1の演算では)使用しない。そこで、出力データＸを上書きしても問題ないと判断し、コンテキストCTX0の出力データＸを入力ポートINP0に対応するバンクBK0のレジスタREG00に保持することを決定する。
【０２２１】
さらに、以下の（Ｊ１）〜（Ｊ４）に示す判断に基づいて、コンテキストCTX1の入力データＤを入力ポートINP0に対応するバンクBK１のレジスタREG10に保持することを決定する。
【０２２２】
（Ｊ１）まず、入力ポートINP0に対応するバンクBK0のレジスタREG00には、コンテキストCTX0の演算結果であるＸが格納されているので、外部回路１が読み出しを行うまでは上書きはできない。
【０２２３】
（Ｊ２）また、入力ポートINP1に対応するバンクBK0のレジスタREG01には、コンテキストCTX0の入力データであるＢが保持されているが、コンテキストCTX1の入力データでもあるため、上書きはできない。
【０２２４】
（Ｊ３）さらに、入力ポートINP2に対応するバンクBK0のレジスタREG02には、コンテキストCTX0の入力データであるＣが保持されているが、コンテキストCTX1の入力データでもあるため、上書きはできない。
【０２２５】
（Ｊ４）よって、入力ポートIN0〜INP2に対応するバンクBK0のレジスタREG00〜REG02は使用できないため、バンクBK1のレジスタを使用すると判断する。すなわち、コンテキストCTX1の入力データＤの保持は、入力ポートINP0に対応するバンクBK１のレジスタREG10に保持することを決定する。
【０２２６】
そして、コンテキストCTX1の演算が完了した時点ですべての入力データは使用されないので、コンテキストCTX0の入力データＢが保持されている入力ポートINP1に対応するバンクBK0のレジスタREG01に出力データＹを上書きしても問題ないと判断する。すなわち、コンテキストCTX1の出力データＹを入力ポートINP1に対応するバンクBK0のレジスタREG01に保持することを決定する。
【０２２７】
上記の決定結果から、以下の情報を出力する。まず、入出力データインタフェース部２２の各ポートPRT0〜PRTnにおいて、どのバンクBK0〜BKmに保持されているデータをリコンフィギュラブル回路２での演算に使用するかを選択するコンフィギュレーションデータを出力する。
【０２２８】
ここで、外部回路１からコンフィグレーションデータ保持部２３に出力されるコンフィギュレーションデータは、コンフィグレーションデータ保持部２３から入出力データインタフェース部２２に出力されるレジスタ出力バンク選択情報を含む。
【０２２９】
すなわち、図１３を参照して説明したように、セレクタSELB0〜SELBnを制御してバンクBK0〜BKmのレジスタに保持されたデータを選択してポートPRT0〜PRTnから出力するためのレジスタ出力バンク選択情報(コンフィギュレーションデータ)を出力する。なお、ポートPRT0〜PRTnは、入出力データインタフェース部２２の入力ポートおよび出力ポート(入出力ポート)として機能する。
【０２３０】
また、入出力データインタフェース部２２の各入力ポートにおいて、リコンフィギュラブル回路１で演算を行った結果をどのバンクに保持するかを選択するコンフィギュレーションデータを出力する。
【０２３１】
すなわち、図１２を参照して説明したように、リコンフィギュラブル回路書き込みイネーブル信号生成部２１３に入力されるポートPRT0〜PRTnのレジスタバンク選択信号BSS0〜BSSnを出力する。
【０２３２】
なお、レジスタバンク選択信号BSS0〜BSSnは、コンフィグレーションデータ保持部２３からレジスタ制御部２１に対する各ポートのレジスタ入力バンク選択情報に対応する。
【０２３３】
さらに、外部回路１に対して、入力データＡ，Ｂ，Ｃ，ＤをどのポートPRT0〜PRTnのどのバンクBK0〜BKmのレジスタREG00〜REGmnに書き込むかを指示するためのデータを出力する。
【０２３４】
また、外部回路１に対して、演算結果Ｘ，Ｙをどのポートのどのバンクのレジスタから読み出すかを指示するためのデータを出力する。
【０２３５】
例えば、外部回路１であるＣＰＵが入出力データインタフェース部２２に入力データIDATを書き込むプログラムに対して、各入力データをどのポートのどのバンクのレジスタに書き込む必要があるかをアドレス値で示したファイルをレジスタ制御部２１に出力する。
【０２３６】
或いは、上記の各入力データをどのポートのどのバンクのレジスタに書き込む必要があるかをアドレス値で示したファイルをＣＰＵのプログラムソースにインクルードすることによって実現することもできる。なお、演算結果の読み出しについても同様である。
【０２３７】
［入出力データインタフェース部と演算器間の経路選定情報の生成について］
以下、前述した［演算器の割り当てと演算器の演算命令情報の生成について］で得られた演算器の割り当て結果と、［入出力データを保持するレジスタの割り当て情報の生成について］で得られたレジスタの割り当て結果に基づいて説明を行う。
【０２３８】
すなわち、前述した例に基づいて、入出力データインタフェース部２２とデータ演算部２５(演算器)間でデータの入出力を行うためのデータネットワーク部２４における経路選定情報の生成について説明する。
【０２３９】
まず、コンテキストCTX0において、Ａ＋Ｂの演算を行うために割り当てた演算器0の入力データＡを入力する入力ポートと、入力データＡを出力する入出力データインタフェース部２２の出力ポート(OPT0)を接続するコンフィギュレーションデータを出力する。
【０２４０】
このコンフィギュレーションデータは、データネットワーク部２４に対してネットワーク経路選定情報(経路選定情報)として与えられ、上記の接続が実現される。
【０２４１】
同様に、演算器0の入力データＢを入力する入力ポートと、入力データＢが出力される入出力データインタフェース部２２の出力ポート(OTP1)を接続するデータネットワーク部２４のコンフィギュレーションデータを出力する。
【０２４２】
次に、コンテキストCTX0において、演算器0の結果（Ａ＋Ｂ）と入力データＣの演算を行うために割り当てた演算器1の入力データＣの入力ポートと、入出力データインタフェース部２２の出力ポート(OTP2)を接続するコンフィギュレーションデータを出力する。
【０２４３】
さらに、コンテキストCTX0において演算結果Ｘを出力する演算器1の出力ポートと、演算結果Ｘを保持するデータインタフェース部の入力ポートINP0を接続するコンフィギュレーションデータを出力する。
【０２４４】
また、コンテキストCTX1において、Ｂ−Ｃの演算を行うために割り当てた演算器2の入力データＢを入力する入力ポートと、入力データＢが出力されるデータインタフェース部の出力ポートOTP1を接続するコンフィギュレーションデータを出力する。
【０２４５】
同様に、演算器2の入力データＣを入力する入力ポートと、入力データＣが出力されるデータインタフェース部の出力ポートOTP2を接続するコンフィギュレーションデータを出力する。
【０２４６】
さらに、コンテキストCTX1において演算器2の結果（Ｂ−Ｃ）と入力データＤの演算を行うために割り当てた演算器3の入力データＤの入力ポートと、データインタフェース部２２の出力ポートOTP0を接続するコンフィギュレーションデータを出力する。
【０２４７】
また、コンテキストCTX1において演算結果Ｙを出力する演算器3の出力ポートと、演算結果Ｙを保持するデータインタフェース部の入力ポートINP1を接続するコンフィギュレーションデータを出力する。
【０２４８】
そして、コンパイラが出力したコンテキストごとのこれら各種コンフィギュレーション情報を、図１１を参照して説明したコンフィギュレーションデータ保持部２３にコンフィギュレーションデータとして外部回路１から書き込みを行う。
【０２４９】
なお、コンフィギュレーションデータは、コンフィギュレーションデータ保持部２３を介してデータネットワーク部２４に対して経路選定情報(ネットワーク経路選定情報)として与えられることになる。
【０２５０】
［コンフィギュレーションデータに連動してバンクが切り切り替わる仕組みついて］
図１８は図１１のコンフィギュレーションデータ保持部をより詳細に示すブロック図であり、図１１に対してプログラマブルカウンタ２３１およびコンフィギュレーションデータ選択回路２３２を追加したものに相当する。
【０２５１】
プログラマブルカウンタ２３１は、動的再構成によって実行されるコンテキストのコンフィギュレーションデータが格納されたメモリのアドレスを指定する。
【０２５２】
コンフィギュレーションデータ選択回路２３２は、プログラマブルカウンタ２３１により指定されたアドレスに保持されたデータを選択し、レジスタ出力バンク選択情報およびレジスタ入力バンク選択情報を含む各種コンフィギュレーションデータを出力する。
【０２５３】
以下、前述した［入出力データを保持するレジスタの割り当て情報の生成について］で説明した例に基づいて、コンフィギュレーションデータに連動してバンクが切り切り替わる仕組みついて説明する。
【０２５４】
まず、コンテキストCTX0のコンフィギュレーションデータの１つである各ポートのレジスタ出力バンク選択情報およびレジスタ入力バンク選択情報には、次の情報が格納されている。
【０２５５】
ポートPRT0のレジスタ出力バンク選択：0（BK0を選択）
ポートPRT1のレジスタ出力バンク選択：0（BK0を選択）
ポートPRT2のレジスタ出力バンク選択：0（BK0を選択）
ポートPRT0のレジスタ入力バンク選択：0（BK0を選択）
ポートPRT1のレジスタ入力バンク選択：使用しないのでドントケア（Don't care）
ポートPRT2のレジスタ入力バンク選択：使用しないのでドントケア（Don't care）
【０２５６】
同様に、コンテキストCTX1のコンフィギュレーションデータの１つである各ポートのレジスタ出力バンク選択情報およびレジスタ入力バンク選択情報には、次の情報が格納されている。
【０２５７】
ポートPRT0のレジスタ出力バンク選択：1（BK1を選択）
ポートPRT1のレジスタ出力バンク選択：0（BK0を選択）
ポートPRT2のレジスタ出力バンク選択：0（BK0を選択）
ポートPRT0のレジスタ入力バンク選択：使用しないのでドントケア（Don't care）
ポートPRT1のレジスタ入力バンク選択：0（BK0を選択）
ポートPRT2のレジスタ入力バンク選択：使用しないのでドントケア（Don't care）
【０２５８】
ここで、コンテキストCTX0のコンフィギュレーションデータが格納されたメモリのアドレス値を0、コンテキストCTX1のコンフィギュレーションデータが格納されたメモリのアドレス値を1とする。
【０２５９】
まず、外部回路１から演算を開始するための演算開始信号OSSを受信すると、プログラマブルカウンタ231はコンテキストCTX0のコンフィギュレーションが格納されたアドレス値(この場合は0)にリセットされる。
【０２６０】
また、コンフィギュレーションデータ選択回路２３２は、演算開始信号OSSの受信により、プログラマブルカウンタ２３１が示すアドレス値＝0に格納されたコンテキストCTX0のコンフィギュレーションデータを出力する。
【０２６１】
さらに、コンテキストCTX0のコンフィギュレーションデータに含まれる各ポートのレジスタ出力バンク選択情報は、入出力データインタフェース部２２に出力される。
【０２６２】
ここで、各ポートのレジスタ出力バンク選択情報は、前述した図１３におけるセレクタSELB0〜SELBの選択信号に対応している。これにより、入出力データインタフェース部２２のポートPRT0，PRT1，PRT2からは各ポートのバンクBK0のレジスタREG00，REG01，REG02に保持された入力データＡ，Ｂ，Ｃが出力される。
【０２６３】
コンテキストCTX0の演算結果は、データネットワーク部２４の経路選定により入出力データインタフェース部２２のポートPRT0に入力される。
【０２６４】
各ポートのレジスタ入力バンク選択情報(レジスタバンク選択信号BSS0〜BSSn)は、前述した図１２に示すレジスタ制御部２１におけるリコンフィギュラブル回路書き込みイネーブル信号生成部２１３に入力される。
【０２６５】
なお、各ポートのレジスタ入力バンク選択情報により、最終的に、レジスタ制御部２１から出力されるレジスタ書き込みイネーブル信号RWES(RWES00〜RWESSmn)等が制御されることになる。
【０２６６】
そして、レジスタ書き込みイネーブル信号RWES(RWES00〜RWESSm0)は、例えば、ポートPRT0のレジスタに演算結果が到達するタイミングでアサートされ、ポートPRT0の所定のレジスタに対する書き込みが行われる。
【０２６７】
また、プログラマブルカウンタ２３１は、コンテキストCTX0の演算が完了したことを認識し、カウンタ値をインクリメントして、コンテキストCTX1のコンフィギュレーションデータが格納されているアドレス値1を出力する。
【０２６８】
さらに、コンフィギュレーションデータ選択回路２３２は、プログラマブルカウンタ２３１が示すアドレス値＝1に格納されたコンテキストCTX1のコンフィギュレーションデータを出力する。
【０２６９】
そして、コンテキストCTX1のコンフィギュレーションデータに含まれる各ポートのレジスタ出力バンク選択情報は、入出力データインタフェース部２２に出力される。
【０２７０】
これにより、入出力データインタフェース部２２のポートPRT0，PRT1，PRT2からは、それぞれバンクBK1，BK0，BK0のレジスタに保持された入力データＤ，Ｂ，Ｃが出力されることになる。
【０２７１】
コンテキストCTX1の演算結果は、データネットワーク部２４の経路選定により入出力データインタフェース部２２のポートPRT1に入力される。
【０２７２】
各ポートのレジスタ入力バンク選択情報(レジスタバンク選択信号BSS0〜BSSn)は、レジスタ制御部２１におけるリコンフィギュラブル回路書き込みイネーブル信号生成部２１３に入力され、レジスタ書き込みイネーブル信号RWES(RWES00〜RWESSmn)等を制御する。
【０２７３】
そして、レジスタ書き込みイネーブル信号RWES(RWES01〜RWESSm1)は、例えば、ポートPRT1のレジスタに演算結果が到達するタイミングでアサートされ、ポートPRT1の所定のレジスタに対する書き込みが行われる。
【０２７４】
このように、各コンテキストのコンフィギュレーションデータに連動して各ポートのバンク(レジスタ)を切り替えることができる。
【０２７５】
以上において、リコンフィギュラブル回路は、例えば、ＣＰＵなどの外部回路のアクセラレータとして使用され、ＣＰＵからのコンテキストに基づいてその回路構成を時間と共に動的に変化させるダイナミック・リコンフィギュラブル回路を含む。
【０２７６】
また、ＣＰＵとしての外部回路と、そのＣＰＵのアクセラレータとして使用されるリコンフィギュラブル回路をワンチップＬＳＩ(Large Scale Integration)として形成することができる。もちろん、外部回路およびリコンフィギュラブル回路を別の半導体チップとして形成してもよいのはいうまでもない。
【０２７７】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
（付記１）
複数の演算器と、該複数の演算器に入力する演算入力データ，および，該複数の演算器から出力される演算出力データを保持する入出力データインタフェース部と、を有し、前記複数の演算器の接続をコンテキスト毎に制御するリコンフィギュラブル回路であって、
前記入出力データインタフェース部は、
複数のポートと、
該複数のポートに接続され、深さ方向にｍ［ｍは２以上の整数］バンクを有する複数のレジスタと、
を有することを特徴とするリコンフィギュラブル回路。
【０２７８】
（付記２）
付記１に記載のリコンフィギュラブル回路において、さらに、
前記複数の演算器を含むデータ演算部と、
前記入出力データインタフェース部の前記複数のポートと前記複数の演算器の接続を制御するデータネットワーク部と、
複数のコンテキストのコンフィギュレーションデータを、該コンテキスト毎に保持するコンフィギュレーションデータ保持部と、
前記入出力データインタフェース部の前記各レジスタを制御するレジスタ制御部と、
を有することを特徴とするリコンフィギュラブル回路。
【０２７９】
（付記３）
付記２に記載のリコンフィギュラブル回路において、
前記コンテキスト毎のコンフィギュレーションは、前記データ演算部からの演算出力データを前記各ポートのどのバンクのレジスタに書き込みを行うかの該各ポートのレジスタ入力バンク選択情報を有し、
前記レジスタ制御部は、前記各ポートのレジスタ入力バンク選択情報に基づいて、該各ポートの書き込みを行う対象のバンクのレジスタに対してリコンフィギュラブル回路書き込みイネーブル信号を生成するリコンフィギュラブル回路書き込みイネーブル信号生成部を有することを特徴とするリコンフィギュラブル回路。
【０２８０】
（付記４）
付記３に記載のリコンフィギュラブル回路において、
前記コンテキスト毎のコンフィギュレーションは、前記データ演算部への演算入力データを前記各ポートのどのバンクのレジスタからのデータを出力するかの該各ポートのレジスタ出力バンク選択情報を有し、
前記入出力データインタフェース部は、さらに、前記各ポートのレジスタ出力バンク選択情報に基づいて、該各ポートからデータを出力する対象のバンクを選択する第１選択部を有することを特徴とするリコンフィギュラブル回路。
【０２８１】
（付記５）
付記１〜４のいずれか１項に記載のリコンフィギュラブル回路において、該リコンフィギュラブル回路は、前記コンテキストに基づいてその回路構成を時間と共に動的に変化させるダイナミック・リコンフィギュラブル回路であることを特徴とするリコンフィギュラブル回路。
【０２８２】
（付記６）
付記３〜５のいずれか１項に記載のリコンフィギュラブル回路において、
前記レジスタ制御部は、さらに、
外部回路からレジスタ対象を示すアドレス情報と、該外部回路から書き込みの指示を行う書き込み制御信号を受け取って、書き込み対象のレジスタに対して外部回路書き込みイネーブル信号を出力する外部回路書き込みイネーブル信号生成部と、
前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号を受け取って、どちらかのイネーブル信号がアサートされたときに対応するレジスタにレジスタ書き込みイネーブル信号をアサートする第１論理回路と、
前記リコンフィギュラブル回路書き込みイネーブル信号がアサートされたときは前記演算出力データを選択し、前記外部回路書き込みイネーブル信号がアサートされたときは前記外部回路からの演算入力データを選択する外部／内部書き込みデータ選択信号を生成する外部／内部書き込みデータ選択信号生成回路と、
を有することを特徴とするリコンフィギュラブル回路。
【０２８３】
（付記７）
付記６に記載のリコンフィギュラブル回路において、
前記入出力データインタフェース部は、さらに、前記外部／内部書き込みデータ選択信号に基づいて、前記各レジスタに保持するデータを、前記演算入力データまたは前記演算出力データから選択する第２選択部を有することを特徴とするリコンフィギュラブル回路。
【０２８４】
（付記８）
付記６または７に記載のリコンフィギュラブル回路において、
前記レジスタ制御部は、さらに、
前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号が同時にアサートされたことを検出する外部回路／リコンフィギュラブル回路同時書き込み検出部と、
前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号が同時にアサートされたときに、前記外部回路からのどちらの書き込みを優先させるかを規定する外部回路／リコンフィギュラブル回路書き込み優先信号に基づいて、優先判定を行う優先判定部と、
を有することを特徴とするリコンフィギュラブル回路。
【０２８５】
（付記９）
付記８に記載のリコンフィギュラブル回路において、
前記外部回路／リコンフィギュラブル回路同時書き込み検出部は、前記リコンフィギュラブル回路書き込みイネーブル信号および前記外部回路書き込みイネーブル信号が同時にアサートされたことを検出して、同時書き込み検出信号をエラー情報として前記外部回路に出力することを特徴とするリコンフィギュラブル回路。
【０２８６】
（付記１０）
付記６〜９のいずれか１項に記載のリコンフィギュラブル回路において、
前記レジスタ制御部は、さらに、前記外部回路からのレジスタ対象を示すアドレス情報から、そのアドレス値に対応したレジスタ出力を選択するための出力データ選択信号を生成す出力データ選択信号生成回路を有し、
前記前記入出力データインタフェース部は、さらに、前記出力データ選択信号に基づいて、レジスタ出力データを選択して外部回路に出力する第３選択部を有することを特徴とするリコンフィギュラブル回路。
【０２８７】
（付記１１）
付記６〜１０のいずれか１項に記載のリコンフィギュラブル回路において、
前記コンフィギュレーションデータ保持部は、
前記各コンテキストのコンフィギュレーションデータが格納されたメモリと、
該メモリのアドレスを指定するプログラマブルカウンタと、
前記プログラマブルカウンタにより指定されたアドレスに保持されたデータを選択し、前記レジスタ出力バンク選択情報および前記レジスタ入力バンク選択情報を含む各種コンフィギュレーションデータを出力するコンフィギュレーションデータ選択回路と、
を有することを特徴とするリコンフィギュラブル回路。
【０２８８】
（付記１２）
付記６〜１１のいずれか１項に記載のリコンフィギュラブル回路、および、前記外部回路を有することを特徴とする半導体集積回路。
【０２８９】
（付記１３）
付記１２の半導体集積回路において、
前記外部回路はＣＰＵであり、前記リコンフィギュラブル回路は、該ＣＰＵのアクセラレータであることを特徴とする半導体集積回路。
【０２９０】
（付記１４）
付記１３の半導体集積回路において、
前記ＣＰＵおよび前記アクセラレータは、ワンチップＬＳＩとして形成されることを特徴とする半導体集積回路。
【符号の説明】
【０２９１】
１，１０１    外部回路
２，１０２    リコンフィギュラブル回路
２０，200    ＰＬＬ回路
２１，１２１    レジスタ制御部
２２，１２２    入出力データインタフェース部
２３，１２３    コンフィグレーションデータ保持部
２４    データネットワーク部
２５    データ演算部
１２４    データネットワーク部・データ演算部
２１１    外部回路／リコンフィギュラブル回路同時書き込み検出部
２１２    外部回路書き込みイネーブル信号生成部
２１３    リコンフィギュラブル回路書き込みイネーブル信号生成部
２１４    優先判定部
２１５    出力データ選択信号生成部
216-00〜216-mn    ＯＲ回路
217-00〜217-mn    外部／内部書き込みデータ選択信号生成回路
【図１】
2011154534.tif 000003
【図２】
2011154534.tif 000004
【図３】
2011154534.tif 000005
【図４】
2011154534.tif 000006
【図５】
2011154534.tif 000007
【図６Ａ】
2011154534.tif 000008
【図６Ｂ】
2011154534.tif 000009
【図７Ａ】
2011154534.tif 000010
【図７Ｂ】
2011154534.tif 000011
【図８Ａ】
2011154534.tif 000012
【図８Ｂ】
2011154534.tif 000013
【図９Ａ】
2011154534.tif 000014
【図９Ｂ】
2011154534.tif 000015
【図１０】
2011154534.tif 000016
【図１１】
2011154534.tif 000017
【図１２】
2011154534.tif 000018
【図１３】
2011154534.tif 000019
【図１４】
2011154534.tif 000020
【図１５】
2011154534.tif 000021
【図１６】
2011154534.tif 000022
【図１７】
2011154534.tif 000023
【図１８】
2011154534.tif 000024