(57)【要約】【課題】回路構成を再構成可能であるとともに、同時に複数のアプリケーションを実行することを可能にする半導体装置を提供する。【解決手段】コンフィグレーションデータの保持用及び演算処理の結果の保持用に同じバンク数のレジスタバンクを設け、バンク切り替え信号によりレジスタバンクのバンクを同期して切り替えるようにして、アプリケーションの切り替えに応じて、コンフィグレーションデータ及び処理に用いるデータを同期して切り替えて処理を実行可能にし、同時に複数のアプリケーションを実行できるようにする。【選択図】図２
2010278917.tif 000002
【特許請求の範囲】
【請求項１】
外部プログラムのデコード結果に応じて、回路構成を再構成可能な複数の処理部を備え、
前記処理部には、回路構成情報に応じた演算処理を行う第１の処理部を含み、
前記第１の処理部は、
前記回路構成情報を保持する第１のレジスタバンクと、
前記回路構成情報に応じた演算処理を行う演算処理部と、
前記演算処理部の出力を保持する第２のレジスタバンクとを備え、
前記第１のレジスタバンクと前記第２のレジスタバンクとが同じ数の複数のレジスタを有し、切り替え信号により前記第１のレジスタバンクのレジスタと前記第２のレジスタバンクのレジスタとを同期して切り替えることを特徴とする半導体装置。
【請求項２】
前記切り替え信号を生成する切り替え信号生成部を備え、
前記切り替え信号生成部は、前記処理部にて回路構成を再構成する単位期間毎に前記切り替え信号を生成することを特徴とする請求項１記載の半導体装置。
【請求項３】
前記切り替え信号生成部は、
初期値レジスタと、
最大値レジスタと、
カウンタ制御レジスタと、
前記初期値レジスタ、前記最大値レジスタ、及び前記カウンタ制御レジスタの情報に応じて前記単位期間に従い動作するカウンタとを有し、
前記カウンタの出力値に基づいて前記切り替え信号を生成することを特徴とする請求項２記載の半導体装置。
【請求項４】
前記切り替え信号生成部は、
切り替えパターンを選択する情報が設定される切り替えパターン選択レジスタと、
前記切り替えパターン選択レジスタの情報に応じて選択した前記切り替えパターンで前記カウンタの出力値を変換処理し前記切り替え信号を生成する第１の変換部とを有することを特徴とする請求項３記載の半導体装置。
【請求項５】
前記処理部には、ネットワークを介して入出力されるデータを記憶する第２の処理部を含み、
前記第２の処理部は、
前記データを記憶する記憶部を備え、
前記記憶部の記憶領域を複数に分割し、前記切り替え信号に応じて使用する前記記憶領域を切り替えることを特徴とする請求項１〜４の何れか１項に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路構成を再構成可能な半導体装置に関する。
【背景技術】
【０００２】
従来、ＬＳＩ（Large Scale Integration）等の半導体装置は、一般に要求仕様として決められた処理を実行するようにＡＮＤゲートやＯＲゲート等の配置及びそれらに係る配線を設計工程で決定し、要求仕様に応じた処理を実行可能な半導体装置を製造している。つまり、従来の半導体装置において所望の機能を実現しようとする場合には、回路構成（論理構成）についての設計がゲート単位（ゲートレベル）で行われ、その機能を実現する半導体装置が製造されている。
【０００３】
しかし、前述のような半導体装置は、回路構成が設計工程にて固定されるため、仕様変更等により異なる要求仕様に応じた処理を実行しようとすると、その都度設計及び製造のすべてを行う必要がある。したがって、前述のような半導体装置は、設計や製造に多大な労力及び時間を要するとともに、開発コストも高い。
【０００４】
この問題を解決する１つの方法として、製造後であっても、論理を再構成し実行する処理を変更可能にしたリコンフィギャラブルＬＳＩと呼ばれる動的に再構成可能な半導体装置がある（例えば、特許文献１〜３参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２１９７２８号公報
【特許文献２】特開２００６−３０２１３２号公報
【特許文献３】特開２００８−２７８３２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来、複数のアプリケーションに係る処理をリコンフィギャラブルＬＳＩで実行しようとした場合には、リコンフィギャラブルＬＳＩは、ある１つのアプリケーションに係る処理を完了してから、次の１つのアプリケーションに係る処理を実行する（例えば、特許文献１参照。）。すなわち、リコンフィギャラブルＬＳＩは、あるアプリケーションについての一連の処理が完了した後、次のアプリケーションについてのコンフィグレーション設定を行って処理を実行するというように、複数のアプリケーションをシリアルに実行する。そのため、リコンフィギャラブルＬＳＩは、通常のＭＰＵ（Micro Processing Unit）のように、あるアプリケーションを実行中に割り込みで他の処理（他のアプリケーション）を実行させるような動作には適していなかった。
【課題を解決するための手段】
【０００７】
本発明の一観点によれば、外部プログラムのデコード結果に応じて、回路構成を再構成可能な複数の処理部を備え、前記処理部には、回路構成情報に応じた演算処理を行う第１の処理部を含み、前記第１の処理部は、前記回路構成情報を保持する第１のレジスタバンクと、前記回路構成情報に応じた演算処理を行う演算処理部と、前記演算処理部の出力を保持する第２のレジスタバンクとを備え、前記第１のレジスタバンクと前記第２のレジスタバンクとが同じ数の複数のレジスタを有し、切り替え信号により前記第１のレジスタバンクのレジスタと前記第２のレジスタバンクのレジスタとを同期して切り替える半導体装置が提供される。
【発明の効果】
【０００８】
開示の半導体装置は、切り替え信号に応じて、回路構成情報を保持する第１のレジスタバンクのレジスタと、演算処理部の出力を保持する第２のレジスタバンクのレジスタとを同期して切り替えることで、回路構成情報及び処理に用いる情報を同期して切り替え処理を行うことができ、複数のアプリケーションを同時に実行する効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態における半導体装置の構成例を示す図である。
【図２】本実施形態における処理部の構成例を示す図である。
【図３】本実施形態における切り替え信号生成部の構成例を示す図である。
【図４】本実施形態における半導体装置の動作例を示す図である。
【図５】本実施形態における切り替え信号生成部の他の構成例を示す図である。
【図６】図５に示した切り替え信号生成部での切り替えパターンの一例を示す図である。
【図７】図５に示した切り替え信号生成部の動作例を示す図である。
【図８】半導体装置での複数のアプリケーションの実行例を示す図である。
【図９】本実施形態における処理部（ＲＡＭ）の構成例を示す図である。
【図１０】本実施形態における処理部（ＲＡＭ）の他の構成例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態を図面に基づいて説明する。
【００１１】
図１は、本発明の一実施形態における半導体装置の構成例を示す図である。本実施形態における半導体装置は、製造後でも論理を再構成して実行する処理を変更可能にしたリコンフィギャラブルＬＳＩであり、プログラムのデコード結果等に応じて動的に回路構成が再構成可能である。
【００１２】
図１において、ＣＰＵ（Central Processing Unit、中央処理装置）１は、図示しないＲＯＭ（Read Only Memory）等の記憶装置から供給されるプログラム（外部プログラム）を実行し、半導体装置内の各構成部を総括的に制御する。例えば、ＣＰＵ１は、リコンフィギャラブル回路部７内のプロセッシングエレメント（ＰＥ：Processing Element）８やセレクタ９を制御して回路構成を制御するためのコンフィグレーションデータをリコンフィギャラブル回路部７に対して供給させる。コンフィグレーションデータは、回路構成に係る情報であり、例えばネットワーク接続に係る設定情報やＰＥの設定情報等である。
【００１３】
ＲＡＭ（Random Access Memory）２は、例えばＣＰＵ１の主メモリ又はワークエリア等として機能するメモリである。リコンフィグインタフェース部３は、リコンフィギャラブル回路部７に対するデータの入出力を行う。例えば、リコンフィグインタフェース部３は、ＣＰＵ１の要求に応じて、ＲＡＭ２に保存されているコンフィグレーションデータをリコンフィギャラブル回路部７に供給する。
【００１４】
切り替え信号生成部４は、リコンフィギャラブル回路部７にて実行されるアプリケーションの切り替えを行うためのバンク切り替え信号を生成し出力する。本実施形態における半導体装置は、切り替え信号生成部４から出力されるバンク切り替え信号により処理部１１内のレジスタバンクのバンクを切り替えることで、複数のアプリケーションを時分割で同時に実行することができる。
【００１５】
ＣＰＵ１、ＲＡＭ２、リコンフィグインタフェース部３、及び切り替え信号生成部４は、アドレスバス５及びデータバス６に接続され、互いに通信可能に構成されている。
【００１６】
リコンフィギャラブル回路部７は、回路構成を再構成可能な複数の処理部１１を有し、各処理部１１は、ＣＰＵ１からのコンフィグレーションデータに応じた処理を実行するＰＥ８及びセレクタ９を有する。また、リコンフィギャラブル回路部７は、データを入出力するためのネットワーク１０を有しており、任意のＰＥ８からのデータや外部からのデータを各ＰＥ８に対して入力可能である。
【００１７】
ＰＥ８及びセレクタ９は、供給されるコンフィグレーションデータによって制御される。ＰＥ８は、コンフィグレーションデータに応じて、例えばＡＬＵ（算術論理演算装置）、ＲＡＭ（メモリ）、ディレイ回路（遅延回路）、カウンタ等の機能を実現する。
【００１８】
また、セレクタ９は、コンフィグレーションデータに応じて、ネットワーク１０を介して供給される各ＰＥ等からのデータの中から、対応するＰＥ８に入力するデータを選択する。言い換えれば、セレクタ９は、コンフィグレーションデータに応じて、対応するＰＥ８に接続するネットワークを選択する。
【００１９】
図２は、本実施形態における処理部１１の構成例を示す図である。
処理部１１は、ＰＥ８、セレクタ９、及びレジスタバンク（レジスタ群）２４を有する。また、ＰＥ８は、レジスタバンク（レジスタ群）２１、ＡＬＵ（算術論理演算装置）２２、及びレジスタバンク（レジスタ群）２３を有する。
【００２０】
レジスタバンク２１は、４つのコンフィグレーションレジスタ（ＲＥＧＩＡ、ＲＥＧＩＢ、ＲＥＧＩＣ、ＲＥＧＩＤ）３１−０〜３１−３を有する。コンフィグレーションレジスタ３１−０〜３１−３の各々は、ＡＬＵ２２に実施させる命令（ＡＬＵ用命令）を示すコンフィグレーションデータＣＤＴを保持する。
【００２１】
ＡＬＵ２２は、レジスタバンク２１のレジスタ３１−０〜３１−３に保持されているコンフィグレーションデータＣＤＴに応じた演算処理を実施する。
【００２２】
レジスタバンク２３は、４つのデータレジスタ（ＲＥＧＤＡ、ＲＥＧＤＢ、ＲＥＧＤＣ、ＲＥＧＤＤ）３３−０〜３３−３を有する。データレジスタ３３−０〜３３−３の各々は、ＡＬＵ２２で実施された演算処理の結果（ＡＬＵ２２の出力）を一時保持する。データレジスタ３３−０〜３３−３に保持されたデータは、ネットワーク１０を介して他のＰＥ等に供給される。
【００２３】
レジスタバンク２４は、４つのコンフィグレーションレジスタ（ＲＥＧＳＡ、ＲＥＧＳＢ、ＲＥＧＳＣ、ＲＥＧＳＤ）３４−０〜３４−３を有する。コンフィグレーションレジスタ３４−０〜３４−３の各々は、ネットワーク１０を介して供給されるデータの中からＡＬＵ２２に入力するデータを対応するセレクタ９に選択させるコンフィグレーションデータＣＤＴを保持する。すなわち、コンフィグレーションレジスタ３４−０〜３４−３は、ＰＥ８に接続するネットワークをセレクタ９に選択させるコンフィグレーションデータＣＤＴを保持する。
【００２４】
本実施形態において、レジスタバンク２１、２３、２４のバンク数、すなわちレジスタバンク２１、２３、２４の各々が有するレジスタの数は同じである。また、同一の制御信号であるバンク切り替え信号ＳＢＣによりレジスタバンク２１、２３、２４のバンクが同期して切り替えられる。
【００２５】
このように、同じバンク数のレジスタバンクをコンフィグレーションデータの保持用及び演算処理の結果の保持用にそれぞれ設け、実行するアプリケーションの切り替えに合わせてレジスタバンクのバンクをバンク切り替え信号ＳＢＣにより同期して切り替える。これにより、アプリケーションの切り替えに対応したレジスタバンクのバンク切り替えにより、コンフィグレーションデータ及び処理に用いるデータを同期して切り替えて処理を行うことができ、スムーズかつ速やかなアプリケーションの切り替えが可能となる。
【００２６】
図３は、バンク切り替え信号ＳＢＣを生成する切り替え信号生成部４の構成例を示す図である。
切り替え信号生成部４は、スタートフラグ（start flag）レジスタ４１、初期値（initial value）レジスタ４２、最大値（max value）レジスタ４３、及びカウンタ４４を有する。
【００２７】
スタートフラグレジスタ４１は、カウンタ４４の動作制御に係るレジスタであり、カウンタ４４によるカウント動作を行うか否かを示す、言い換えればカウンタ４４の動作の開始（又は停止）を示すフラグが設定される。初期値レジスタ４２は、カウンタ４４の初期値が設定され、最大値レジスタ４３は、カウンタ４４の最大値が設定される。スタートフラグレジスタ４１、初期値レジスタ４２、及び最大値レジスタ４３は、ＣＰＵ１からアクセス可能なレジスタであり、ＣＰＵ１によって値等が設定される。
【００２８】
カウンタ４４は、スタートフラグレジスタ４１の値に応じてカウント動作を行う。また、カウンタ４４は、カウント値をバンク切り替え信号ＳＢＣとして出力する。本実施形態では、一例としてカウンタ４４は、スタートフラグレジスタ４１の値が“１”であるときカウント動作を行い、スタートフラグレジスタ４１の値が“０”であるときカウント動作を停止するものとする。
【００２９】
カウンタ４４は、スタートフラグレジスタ４１の値が“１”の場合には、初期値レジスタ４２に設定された値（初期値）からサイクル（回路構成が再構成される単位期間）毎に値を１ずつカウントアップ（インクリメント）する。そして、カウンタ４４は、カウント値が最大値レジスタ４３に設定された値（最大値）になると、次のサイクルでカウント値を初期値に戻してカウント動作を続ける。このカウンタ４４のカウント値が、バンク切り替え信号ＳＢＣとしてレジスタバンク２１、２３、２４に出力される。
【００３０】
例えば、初期値レジスタ４２に値“０”が設定され、最大値レジスタ４３に値“３”が設定された場合、本実施形態における半導体装置では図４に示すように実行するアプリケーションの切り替えが行われる。図４は、本実施形態における半導体装置の動作例を示す図である。
【００３１】
なお、図４に示す例では、カウンタ４４によるカウント動作の開始前においては、カウント値が“０”であり、バンク切り替え信号ＳＢＣの信号値も“０”であるとする。
【００３２】
時刻ｔ１０においてスタートフラグレジスタ４１の値が“１”に設定されると、１サイクル後の時刻ｔ１１においてカウンタ４４のカウント値が“１”になり、さらにその１サイクル後の時刻ｔ１２においてカウンタ４４のカウント値が“２”になる。時刻ｔ１２から１サイクル後の時刻ｔ１３においてカウンタ４４のカウント値が最大値である“３”になり、その１サイクル後の時刻ｔ１４においてカウンタ４４のカウント値が“０”に戻る。以降、スタートフラグレジスタ４１の値が“１”である間は、１サイクル毎にカウンタ４４のカウント値を１ずつ増加させ、カウント値は０、１、２、３、０、１、…と変化する。
【００３３】
また、バンク切り替え信号ＳＢＣの信号値は、カウンタ４４によるカウント動作が行われるとカウント値に応じて０、１、２、３、０、１、…と変化する。
【００３４】
バンク切り替え信号ＳＢＣが“０”である時刻ｔ１１までの期間、及び時刻ｔ１４〜ｔ１５の期間には、処理部１１内のレジスタバンク２１、２３、２４において、レジスタ（ＲＥＧＩＡ）３１−０、レジスタ（ＲＥＧＤＡ）３３−０、レジスタ（ＲＥＧＳＡ）３４−０がそれぞれ選択されてアプリケーションＡに係る処理が実行される。また、バンク切り替え信号ＳＢＣが“１”である時刻ｔ１１〜ｔ１２及びｔ１５〜ｔ１６の期間には、処理部１１内のレジスタバンク２１、２３、２４において、レジスタ（ＲＥＧＩＢ）３１−１、レジスタ（ＲＥＧＤＢ）３３−１、レジスタ（ＲＥＧＳＢ）３４−１がそれぞれ選択されてアプリケーションＢに係る処理が実行される。
【００３５】
同様に、バンク切り替え信号ＳＢＣが“２”である時刻ｔ１２〜ｔ１３及びｔ１６〜ｔ１７の期間には、処理部１１内のレジスタバンク２１、２３、２４において、レジスタ（ＲＥＧＩＣ）３１−２、レジスタ（ＲＥＧＤＣ）３３−２、レジスタ（ＲＥＧＳＣ）３４−２がそれぞれ選択されてアプリケーションＣに係る処理が実行される。バンク切り替え信号ＳＢＣが“３”である時刻ｔ１３〜ｔ１４及びｔ１７〜ｔ１８の期間には、処理部１１内のレジスタバンク２１、２３、２４において、レジスタ（ＲＥＧＩＤ）３１−３、レジスタ（ＲＥＧＤＤ）３３−３、レジスタ（ＲＥＧＳＤ）３４−３がそれぞれ選択されてアプリケーションＤに係る処理が実行される。
【００３６】
このように、バンク切り替え信号ＳＢＣに応じて、レジスタバンク２１、２３、２４のバンクを同期して切り替えることにより、アプリケーションＡ〜Ｄを時分割で同時に実行することができる。また、バンク切り替え信号ＳＢＣをサイクル単位で切り替えることにより、サイクル単位でのアプリケーションＡ〜Ｄの切り替えが可能となる。
【００３７】
図５は、本実施形態における切り替え信号生成部の他の構成例を示す図である。
前述した図３に示した切り替え信号生成部４では、カウンタ４４のカウント値がバンク切り替え信号ＳＢＣとして出力されるため、アプリケーションの切り替えパターン（実行順序や実行サイクル数など）は固定されたものとなる。図５に示す切り替え信号生成部４Ａは、任意の切り替えパターンでアプリケーションの切り替えを可能にするものである。図５において、図３に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。
【００３８】
図５に示すように切り替え信号生成部４Ａは、スタートフラグレジスタ４１、初期値レジスタ４２、最大値レジスタ４３、カウンタ４４、切り替えパターン選択レジスタ４５、及び変換部４６を有する。
【００３９】
切り替えパターン選択レジスタ４５は、ＣＰＵ１からアクセス可能なレジスタであり、ＣＰＵ１によって切り替えパターンを選択するための情報（値等）が設定される。切り替えパターン選択レジスタ４５は、設定された情報に応じてパターン選択信号ＰＳＥＬを出力する。
【００４０】
変換部４６は、アプリケーションの切り替えパターンが予め設定され、切り替えパターン選択レジスタ４５からのパターン選択信号ＰＳＥＬ及びカウンタ４４からのカウント値ＣＮＴに基づいてバンク切り替え信号ＳＢＣを出力する。変換部４６は、パターン選択信号ＰＳＥＬに応じて切り替えパターンを選択し、選択した切り替えパターンに従ってカウント値ＣＮＴを変換処理してバンク切り替え信号ＳＢＣとして出力する。変換部４６は、例えばＲＡＭであり、切り替えパターン選択レジスタ４５からのパターン選択信号ＰＳＥＬにより選択する切り替えパターンに対応するベースアドレスを指定することで複数の切り替えパターンを選択的に切り替えることが可能となる。
【００４１】
図６は、図５に示した切り替え信号生成部４Ａでの切り替えパターンの一例を示す図である。図６（Ａ）〜図６（Ｃ）に示すような切り替えパターンが、例えばルックアップテーブルとして変換部４６に格納されている。
【００４２】
図６（Ａ）に示す切り替えパターンは、パターン選択信号ＰＳＥＬの信号値が“０”である場合に選択され、カウント値ＣＮＴをバンク切り替え信号ＳＢＣとして出力する。
【００４３】
図６（Ｂ）に示す切り替えパターンは、パターン選択信号ＰＳＥＬの信号値が“１”である場合に選択される。変換部４６は、カウント値ＣＮＴが“０”又は“１”の場合にはバンク切り替え信号ＳＢＣとして信号値“０”を出力し、カウント値ＣＮＴが“２”又は“３”の場合にはバンク切り替え信号ＳＢＣとして信号値“１”を出力する。
【００４４】
また、図６（Ｃ）に示す切り替えパターンは、パターン選択信号ＰＳＥＬの信号値が“２”である場合に選択される。変換部４６は、カウント値ＣＮＴが“０”の場合にはバンク切り替え信号ＳＢＣとして信号値“０”を出力し、カウント値ＣＮＴが“１”の場合にはバンク切り替え信号ＳＢＣとして信号値“１”を出力し、カウント値ＣＮＴが“２”又は“３”の場合にはバンク切り替え信号ＳＢＣとして信号値“２”を出力する。
【００４５】
このようなアプリケーションの切り替えパターンを予め設定しておくことで、設定した切り替えパターンでのアプリケーションの切り替えが可能になり、アプリケーションの実行順序や実行サイクル数などを容易に制御することができる。
【００４６】
例えば、図６（Ａ）に示した切り替えパターンを適用することで、図７（Ａ）に示すようにカウンタ４４のカウント値ＣＮＴが０、１、２、３、０、１、…と変化すると、バンク切り替え信号ＳＢＣの信号値が０、１、２、３、０、１、…と変化する。これにより、アプリケーションに係る処理が、Ａ、Ｂ、Ｃ、Ｄ、Ａ、Ｂ、…とサイクル毎に切り替えて実行される。
【００４７】
図７（Ａ）に示す例では、バンク切り替え信号ＳＢＣが“０”である時刻ｔ２０〜ｔ２１、ｔ２４〜ｔ２５、及びｔ２８〜ｔ２９の期間には、レジスタ３１−０、３３−０、及び３４−０が選択されてアプリケーションＡに係る処理が実行される。また、バンク切り替え信号ＳＢＣが“１”である時刻ｔ２１〜ｔ２２及びｔ２５〜ｔ２６の期間には、レジスタ３１−１、３３−１、及び３４−１が選択されてアプリケーションＢに係る処理が実行される。バンク切り替え信号ＳＢＣが“２”である時刻ｔ２２〜ｔ２３及びｔ２６〜ｔ２７の期間には、レジスタ３１−２、３３−２、及び３４−２が選択されてアプリケーションＣに係る処理が実行される。バンク切り替え信号ＳＢＣが“３”である時刻ｔ２３〜ｔ２４及びｔ２７〜ｔ２８の期間には、レジスタ３１−３、３３−３、及び３４−３がそれぞれ選択されてアプリケーションＤに係る処理が実行される。
【００４８】
また、例えば、図６（Ｂ）に示した切り替えパターンを適用することで、図７（Ｂ）に示すようにカウンタ４４のカウント値ＣＮＴが０、１、２、３、０、１、…と変化すると、バンク切り替え信号ＳＢＣの信号値が０、０、１、１、０、０、…と変化する。これにより、アプリケーションＡに係る処理及びアプリケーションＢに係る処理が２サイクル毎に切り替えて実行される。
【００４９】
図７（Ｂ）に示す例では、バンク切り替え信号ＳＢＣが“０”である時刻ｔ３０〜ｔ３２、ｔ３４〜ｔ３６、及びｔ３８〜ｔ３９の期間には、レジスタ３１−０、３３−０、及び３４−０が選択されてアプリケーションＡに係る処理が実行される。また、バンク切り替え信号ＳＢＣが“１”である時刻ｔ３２〜ｔ３４及びｔ３６〜ｔ３８の期間には、レジスタ３１−１、３３−１、及び３４−１が選択されてアプリケーションＢに係る処理が実行される。
【００５０】
また、例えば、図６（Ｃ）に示した切り替えパターンを適用することで、図７（Ｃ）に示すようにカウンタ４４のカウント値ＣＮＴが０、１、２、３、０、１、…と変化すると、バンク切り替え信号ＳＢＣの信号値が０、１、２、２、０、１、…と変化する。これにより、１サイクルのアプリケーションＡに係る処理、１サイクルのアプリケーションＢに係る処理、及び２サイクルのアプリケーションＣに係る処理が、この順で繰り返し実行される。
【００５１】
図７（Ｃ）に示す例では、バンク切り替え信号ＳＢＣが“０”である時刻ｔ４０〜ｔ４１、ｔ４４〜ｔ４５、及びｔ４８〜ｔ４９の期間には、レジスタ３１−０、３３−０、及び３４−０が選択されてアプリケーションＡに係る処理が実行される。また、バンク切り替え信号ＳＢＣが“１”である時刻ｔ４１〜ｔ４２及びｔ４５〜ｔ４６の期間には、レジスタ３１−１、３３−１、及び３４−１が選択されてアプリケーションＢに係る処理が実行される。バンク切り替え信号ＳＢＣが“２”である時刻ｔ４２〜ｔ４４及びｔ４６〜ｔ４８の期間には、レジスタ３１−２、３３−２、及び３４−２が選択されてアプリケーションＣに係る処理が実行される。
【００５２】
本実施形態によれば、コンフィグレーションデータの保持用及び演算処理の結果の保持用に同じバンク数のレジスタバンクを設け、アプリケーションの切り替えに合わせてバンク切り替え信号ＳＢＣによりレジスタバンクのバンクを同期して切り替える。これにより、アプリケーションの切り替えに応じて、コンフィグレーションデータ及び処理に用いるデータを同期して切り替えてアプリケーションの処理を行うことができる。したがって、複数のアプリケーションを時分割で同時に実行することができるとともに、複数のアプリケーションを実行する場合に切り替えロスがなく効率良く複数のアプリケーションを実行することができる。
【００５３】
例えば、図８（Ａ）に示すように、時間ＴＡ１を要する第１のアプリケーション（ＡＰＰ１）の処理を実行中に、時間ＴＡ２が必要な第２のアプリケーション（ＡＰＰ２）の処理要求が発生したとする。
【００５４】
このとき、一般的なリコンフィギャラブルＬＳＩでは、例えば図８（Ｃ）に示すように、第１のアプリケーション（ＡＰＰ１）の処理を実行して終了した後に、第２のアプリケーション（ＡＰＰ２）の処理を実行する。すなわち、第１のアプリケーション（ＡＰＰ１）及び第２のアプリケーション（ＡＰＰ２）がシリアルに実行される。しかしながら、第２のアプリケーション（ＡＰＰ２）に係る処理が、リアルタイム性が要求される処理であったり、優先度が高い処理であったりした場合には、図８（Ｃ）に示すようにアプリケーションをシリアルに実行することは好ましくない。
【００５５】
そこで、例えば図８（Ｄ）に示すように、第２のアプリケーション（ＡＰＰ２）の処理要求が発生した場合に、直ちに第２のアプリケーション（ＡＰＰ２）を割り込ませて実行することが考えられる。しかし、一般的なリコンフィギャラブルＬＳＩでは、速やかにアプリケーションの実行途中のデータ等を一時的に退避させることができない。したがって、第１のアプリケーション（ＡＰＰ１）の処理をキャンセルして第２のアプリケーション（ＡＰＰ２）の処理を実行し、その後、第１のアプリケーション（ＡＰＰ１）の処理を再び最初から実行することとなり、処理時間が増大してしまう。
【００５６】
それに対して、本実施形態における半導体装置によれば、図８（Ｂ）に示すように第１のアプリケーション（ＡＰＰ１）の処理を実行中に、レジスタバンクのバンクを切り替えることで第２のアプリケーション（ＡＰＰ２）の処理を速やかに実行することができる。また、第２のアプリケーション（ＡＰＰ２）の処理が終了した後、レジスタバンクのバンクを切り替えることで第１のアプリケーション（ＡＰＰ１）の処理を継続して実行することができ、アプリケーション切り替えのロスなく複数のアプリケーションを実行することが可能となる。
【００５７】
例えば、図８（Ｂ）に示すような動作は、図５に示した切り替え信号生成部４Ａを用いることで実現することができる。
まず、処理を実行する前にＣＰＵ１によって、初期値レジスタ４２に値“０”を設定し、最大値レジスタ４３に値“１”を設定する。すなわち、カウンタ４４が動作した場合に、カウント値ＣＮＴが０、１、０、１、０、１、…と変化するように設定する。また、変換部４６は、切り替えパターンが設定されたＲＡＭを有する。切り替えパターンが設定されたＲＡＭは、０番地から３番地までのアドレス（例えば、１本の信号線で２値信号が伝送されるアドレス信号線２本）を持ち、上位の信号が切り替えパターン選択レジスタ４５からのパターン選択信号ＰＳＥＬとし、下位の信号がカウンタ４４からのカウント値ＣＮＴとする。また、ＲＡＭには、切り替えパターンとして０番地及び１番地に値“０”を設定し、２番地及び３番地に値“１”を設定する。
【００５８】
ここで、処理部１１内のレジスタバンク２１、２３において、バンク０に対応するレジスタ（ＲＥＧＩＡ）３１−０及びレジスタ（ＲＥＧＤＡ）３３−０にはアプリケーション（ＡＰＰ１）のコンフィグレーションデータが設定されているものとする。また、処理部１１内のレジスタバンク２４において、バンク０に対応するレジスタ（ＲＥＧＳＡ）３４−０はアプリケーション（ＡＰＰ１）の演算処理の結果を保持するものとする。同様に、処理部１１内のレジスタバンク２１、２３において、バンク１に対応するレジスタ（ＲＥＧＩＢ）３１−１及びレジスタ（ＲＥＧＤＢ）３３−１にはアプリケーション（ＡＰＰ２）のコンフィグレーションデータが設定されているものとする。また、処理部１１内のレジスタバンク２４において、バンク１に対応するレジスタ（ＲＥＧＳＢ）３４−１はアプリケーション（ＡＰＰ２）の演算処理の結果を保持するものとする。
【００５９】
前述のような設定を行った後、切り替えパターン選択レジスタに値“０”を設定するとともに、スタートフラグレジスタ４１に値“１”を設定して動作を開始する。このとき、切り替えパターン選択レジスタ４５からのパターン選択信号ＰＳＥＬは信号値が“０”であり、カウンタ４４からのカウント値ＣＮＴは０、１、０、１、０、１、…と変化する。したがって、変換部４６内のＲＡＭにおける０番地及び１番地が交互に参照されてバンク切り替え信号ＳＢＣとして出力されることとなる。すなわち、バンク切り替え信号ＳＢＣとして“０”が出力され、アプリケーション（ＡＰＰ１）が実行される。
【００６０】
その後、アプリケーション（ＡＰＰ２）の処理要求が発生すると、ＣＰＵ１によって切り替えパターン選択レジスタに値“１”を設定する。これにより、切り替えパターン選択レジスタ４５からのパターン選択信号ＰＳＥＬは信号値が“１”に変化する。したがって、変換部４６内のＲＡＭにおける２番地及び３番地が交互に参照されてバンク切り替え信号ＳＢＣとして出力されることとなる。すなわち、バンク切り替え信号ＳＢＣとして“１”が出力され、アプリケーション（ＡＰＰ２）が実行される。
【００６１】
そして、アプリケーション（ＡＰＰ２）の処理が完了すると、ＣＰＵ１によって切り替えパターン選択レジスタに値“０”を設定する。これにより、バンク切り替え信号ＳＢＣとして“０”が出力され、アプリケーション（ＡＰＰ１）の実行が再開される。
【００６２】
なお、本実施形態における半導体装置において、時分割で同時に実行できるアプリケーションの数は、レジスタバンクが有するバンク数（レジスタの数）に依存する。例えば、図２に示した処理部１１では、レジスタバンク２１、２３、２４の各々は４つのレジスタを有する。したがって、レジスタバンクのバンク（レジスタ）の各々に対して、それぞれ１つのアプリケーションを割り付けることで、４つのアプリケーションを時分割で同時に実行することができる。
【００６３】
ここで、本実施形態における半導体装置において、ＰＥには、ＡＬＵ−ＰＥだけでなく、ＲＡＭ（メモリ）−ＰＥもある。複数のアプリケーションを実行する場合には、複数のアプリケーションで同一のＲＡＭ−ＰＥ内のメモリ空間を同時に使用することはできないため、事前に使用するＲＡＭ−ＰＥを決めておけば良い。あるいは、ＲＡＭ−ＰＥのサイズに余裕がある場合には、図９や図１０に示すように構成して複数のアプリケーションでＲＡＭ−ＰＥを共有し使用するようにしても良い。
【００６４】
図９は、本実施形態における処理部（ＲＡＭ）の構成例を示す図である。
図９（Ａ）に示すように、処理部（ＲＡＭ）１１は、ＲＡＭ（メモリ）５１、レジスタバンク（レジスタ群）５２、レジスタバンク（レジスタ群）５３、及びセレクタ９を有する。
【００６５】
ＲＡＭ（メモリ）５１は、ネットワーク１０を介して他のＰＥ等から入力されるデータを記憶する。
【００６６】
レジスタバンク５２は、４つのデータレジスタ（ＲＥＧＤＡ、ＲＥＧＤＢ、ＲＥＧＤＣ、ＲＥＧＤＤ）６２−０〜６２−３を有する。データレジスタ６２−０〜６２−３の各々は、ＲＡＭ５１から読み出されたデータ（ＲＡＭ５１の出力）を一時保持する。データレジスタ６２−０〜６２−３に保持されたデータは、ネットワーク１０を介して他のＰＥ等に供給される。
【００６７】
レジスタバンク５３は、４つのコンフィグレーションレジスタ（ＲＥＧＳＡ、ＲＥＧＳＢ、ＲＥＧＳＣ、ＲＥＧＳＤ）６３−０〜６３−３を有する。コンフィグレーションレジスタ６３−０〜６３−３の各々は、ネットワーク１０を介して供給される情報の中からＲＡＭ５１に入力するアドレスＭＡＤ及びデータＭＤＴを対応するセレクタ９に選択させるコンフィグレーションデータＣＤＴを保持する。すなわち、コンフィグレーションレジスタ６３−０〜６３−３は、ＲＡＭ５１に接続するネットワークをセレクタ９に選択させるコンフィグレーションデータＣＤＴを保持する。
【００６８】
ここで、レジスタバンク５２、５３のバンク数、すなわちレジスタバンク５２、５３の各々が有するレジスタの数は同じであり、バンク切り替え信号ＳＢＣによりレジスタバンク５２、５３のバンクが同期して切り替えられる。
【００６９】
また、バンク切り替え信号ＳＢＣの信号値を上位側アドレス値、セレクタ９を介して入力されるアドレスＭＡＤを下位側アドレス値として連結し、メモリアドレスとする。これにより、図９（Ｂ）にメモリマップを示すようにバンク切り替え信号ＳＢＣの信号値に対応させてＲＡＭ５１のメモリ空間を分割し、バンク切り替え信号ＳＢＣの信号値に応じてアプリケーションが使用する領域を切り替えることができる。したがって、複数のアプリケーションを実行しても、アプリケーション間でデータの干渉を起こすことなくＲＡＭ−ＰＥを共有して使用することが可能となる。
【００７０】
ここで、例えば複数のアプリケーションで使用されるルックアップテーブルや共有データ等をアプリケーション毎にそれぞれＲＡＭ５１に記憶すると必要とされる記憶容量が増大してしまう。ルックアップテーブルや共有データ等を複数のアプリケーションで共有し使用する場合には、図１０（Ａ）に示すように変換部５４を設け、バンク切り替え信号ＳＢＣを変換処理し、変換後の値ＣＡＤをメモリアドレスの上位側アドレス値として出力するようにすれば良い。図１０（Ａ）に示すように構成し、複数のアプリケーションで共有し使用するデータ等をＲＡＭ５１内のある１つの領域に記憶しておき、変換後の値ＣＡＤがその領域に対応する値となるようにバンク切り替え信号ＳＢＣを変換処理する。例えば、バンク切り替え信号ＳＢＣの信号値にかかわらず、変換後の値ＣＡＤとして同じ値を出力するようにする。これにより、バンク切り替え信号ＳＢＣの信号値が異なっても、すなわちアプリケーションが異なっても、ＲＡＭ５１内の同じ領域にアクセスすることができ、任意のアプリケーション間でのデータ等の共有が可能となる。
【００７１】
図１０（Ａ）に示す変換部５４は、回路にて構成するようにしても良いし、ＲＡＭ（ルックアップテーブル）で構成するようにしても良い。例えば、変換部５４をＲＡＭで構成した場合には、容易に実現できるとともに、ＣＰＵ１からアクセス可能とすることで自由に領域の共有に係る設定を行うことができる。
【００７２】
また、図１０（Ｂ）に示すように、変換パターン選択レジスタ５５を設け、その設定された情報に応じて出力されるパターン選択信号ＰＳＥＬＡによりバンク切り替え信号ＳＢＣを値ＣＡＤに変換する変換パターンを切り替え可能なようにしても良い。変換パターン選択レジスタ５５は、ＣＰＵ１からアクセス可能なレジスタであり、ＣＰＵ１によって変換パターンを選択するための情報が設定される。複数の変換パターンを予め変換部５４に設定しておき、変換パターン選択レジスタ５５に設定された情報に応じて変換パターンを選択することで、複数の変換パターンを選択的に切り替えることが可能となる。
【００７３】
なお、前述した説明では、レジスタバンクのバンク数は４としているがこれに限定されるものではなく、レジスタバンクのバンク数が同じであれば良く、バンク数は任意である。
また、例えばレジスタバンクのバンク数（レジスタの数）を４つとした場合、同時に４つのアプリケーションを時分割で実行することができ、また１つのアプリケーションが終了した場合に別なアプリケーションを実行することも可能である。
【００７４】
また、実行するアプリケーションの数で時分割処理が行われるようにバンク切り替え信号ＳＢＣを生成するようにしても良い。例えば、１つのアプリケーションを実行している場合には時分割での実行は行わず、新たに追加で実行するアプリケーションが発生した時点で時分割で２つのアプリケーションを実行するようにしても良い。このようにすることで、実行するアプリケーションの数に応じた効率的な処理が可能となる。また、アプリケーションに優先順位をつけて、優先順位に応じてアプリケーションを時分割で実行するようにしても良い。
【００７５】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
【００７６】
（付記１）外部プログラムのデコード結果に応じて、回路構成を再構成可能な複数の処理部を備え、
前記処理部には、回路構成情報に応じた演算処理を行う第１の処理部を含み、
前記第１の処理部は、
前記回路構成情報を保持する第１のレジスタバンクと、
前記回路構成情報に応じた演算処理を行う演算処理部と、
前記演算処理部の出力を保持する第２のレジスタバンクとを備え、
前記第１のレジスタバンクと前記第２のレジスタバンクとが同じ数の複数のレジスタを有し、切り替え信号により前記第１のレジスタバンクのレジスタと前記第２のレジスタバンクのレジスタとを同期して切り替えることを特徴とする半導体装置。
（付記２）前記切り替え信号を生成する切り替え信号生成部を備え、
前記切り替え信号生成部は、前記処理部にて回路構成を再構成する単位期間毎に前記切り替え信号を生成することを特徴とする付記１記載の半導体装置。
（付記３）前記切り替え信号生成部は、
初期値レジスタと、
最大値レジスタと、
カウンタ制御レジスタと、
前記初期値レジスタ、前記最大値レジスタ、及び前記カウンタ制御レジスタの情報に応じて前記単位期間に従い動作するカウンタとを有し、
前記カウンタの出力値に基づいて前記切り替え信号を生成することを特徴とする付記２記載の半導体装置。
（付記４）前記切り替え信号生成部は、
切り替えパターンを選択する情報が設定される切り替えパターン選択レジスタと、
前記切り替えパターン選択レジスタの情報に応じて選択した前記切り替えパターンで前記カウンタの出力値を変換処理し前記切り替え信号を生成する第１の変換部とを有することを特徴とする付記３記載の半導体装置。
（付記５）前記処理部には、ネットワークを介して入出力されるデータを記憶する第２の処理部を含み、
前記第２の処理部は、
前記データを記憶する記憶部を備え、
前記記憶部の記憶領域を複数に分割し、前記切り替え信号に応じて使用する前記記憶領域を切り替えることを特徴とする付記１〜４の何れか１項に記載の半導体装置。
（付記６）前記第２の処理部は、
前記切り替え信号に基づいて、使用する前記記憶領域の切り替えを制御する第２の変換部を備えることを特徴とする付記５記載の半導体装置。
（付記７）前記第２の処理部は、
変換パターンを選択する情報が設定される変換パターン選択レジスタを備え、
前記第２の変換部は、前記変換パターン選択レジスタの情報に応じて選択した前記変換パターンに従って前記切り替え信号に応じて使用する前記記憶領域の切り替えを制御することを特徴とする付記６記載の半導体装置。
（付記８）前記第２の処理部は、
前記回路構成情報を保持する第１のレジスタバンクと、
前記記憶部からの出力を保持する第２のレジスタバンクとを備え、
前記第１のレジスタバンクと前記第２のレジスタバンクとが同じ数の複数のレジスタを有し、前記切り替え信号により前記第１のレジスタバンクのレジスタと前記第２のレジスタバンクのレジスタとを同期して切り替えることを特徴とする付記５〜７の何れか１項に記載の半導体装置。
【符号の説明】
【００７７】
１  ＣＰＵ
２  ＲＡＭ
３  リコンフィグインタフェース部
４  切り替え信号生成部
５  アドレスバス
６  データバス
７  リコンフィギャラブル回路部
８  プロセッシングエレメント
９  セレクタ
１０  ネットワーク
２１、２３、２４  レジスタバンク
２２  ＡＬＵ
５１  ＲＡＭ
５２、５３  レジスタバンク
【図１】
2010278917.tif 000003
【図２】
2010278917.tif 000004
【図３】
2010278917.tif 000005
【図４】
2010278917.tif 000006
【図５】
2010278917.tif 000007
【図６】
2010278917.tif 000008
【図７】
2010278917.tif 000009
【図８】
2010278917.tif 000010
【図９】
2010278917.tif 000011
【図１０】
2010278917.tif 000012