(57)【要約】【課題】分岐処理を含んだ回路を構築する場合であっても、スループットの低下を最小限に留めることのできるプログラマブル論理回路装置を提供すること。【解決手段】分岐処理を含んだ回路ブロックを少なくとも１つ有した複数の回路ブロックの各々を動的に構築することができるプログラマブル論理回路１０と、その分岐処理によって得られるデータおよびそのデータの出力先となる回路ブロックの識別子とを格納する分岐処理用メモリ３１と、分岐処理用メモリ３１に格納された識別子のうちのプログラマブル論理回路１０上に現在構築されている回路ブロックを示す識別子に関連付けられたデータを優先的にその現回路ブロックに処理させる制御部２０と、を備えるプログラマブル論理回路装置１００を提供する。【選択図】        図１
2006033579.tif 000002
【特許請求の範囲】
【請求項１】
分岐処理を実行する分岐回路ブロックと、該分岐回路ブロックによって得られるデータに対して複数の処理を選択的に実行する複数の子回路ブロックと、を含む複数の回路ブロックを、動的に切り替えて動作させることが可能なプログラマブル論理回路と、
前記分岐回路ブロックによって得られるデータと該データの出力先となる子回路ブロックの識別子とを対応付けて記憶する記憶部と、
前記プログラマブル論理回路で前記子回路ブロックのいずれかが動作している場合には、前記記憶部に記憶されたデータのうち、当該子回路ブロックの識別子と同じ識別子が対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させる制御部と、
を備えるプログラマブル論理回路装置。
【請求項２】
前記記億部は、さらに、前記データの出力順を示す番号を記憶し、
前記制御部は、前記番号に基づいて、前記分岐回路ブロックによる分岐処理後に実行される他の子回路ブロックまたは他の分岐回路ブロックによる処理を経由したデータを並べ替えることを特徴とする請求項１に記載のプログラマブル論理回路装置。
【請求項３】
前記制御部は、前記記憶部に記憶された識別子のうちに、前記プログラマブル論理回路で動作している子回路ブロックの識別子がない場合に、該記憶部の所定の位置に記憶された識別子によって示される子回路ブロックを、前記プログラマブル論理回路で動作させることを特徴とする請求項１または２に記載のプログラマブル論理回路装置。
【請求項４】
前記制御部は、前記記憶部を監視し、前記データの数が所定数を超えた場合に、前記記憶部に記憶された識別子のうちの前記プログラマブル論理回路で動作している子回路ブロックの識別子に対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させることを特徴とする請求項１〜３のいずれか一つに記載のプログラマブル論理回路装置。
【請求項５】
前記制御部は、前記記憶部を監視し、前記データのうちの同一の識別子によって対応付けられたデータの数が所定数を超えた場合に、前記記憶部に記憶された識別子のうちの前記プログラマブル論理回路で動作している子回路ブロックの識別子に対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させることを特徴とする請求項１〜３のいずれか一つに記載のプログラマブル論理回路装置。
【請求項６】
分岐処理を実行する分岐回路ブロックと、該分岐回路ブロックによって得られるデータに対して複数の処理を選択的に実行する複数の子回路ブロックと、を含む複数の回路ブロックを、動的に切り替えて動作させることが可能なプログラマブル論理回路の再構築方法であって、
前記分岐回路ブロックによって得られるデータと該データの出力先となる子回路ブロックの識別子とを対応付けて記憶部に格納し、
前記プログラマブル論理回路で前記子回路ブロックのいずれかが動作している場合には、前記記憶部に格納されたデータのうち、当該子回路ブロックの識別子と同じ識別子が対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させることを特徴とするプログラマブル論理回路の再構築方法。
【請求項７】
前記データの出力順を示す番号に基づいて、前記分岐回路ブロックによる分岐処理後に実行される他の子回路ブロックまたは他の分岐回路ブロックによる処理を経由したデータを並べ替えることを特徴とする請求項６に記載のプログラマブル論理回路の再構築方法。
【請求項８】
格納された識別子のうちに、前記プログラマブル論理回路で動作している子回路ブロックの識別子がない場合に、前記記憶部の所定の位置に格納された識別子によって示される回路ブロックを、前記プログラマブル論理回路で動作させることを特徴とする請求項６または７に記載のプログラマブル論理回路の再構築方法。
【請求項９】
前記記憶部を監視し、前記データの数が所定数を超えた場合に、前記記憶部に格納された識別子のうちの前記プログラマブル論理回路で動作している子回路ブロックの識別子に対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させることを特徴とする請求項６〜８のいずれか一つに記載のプログラマブル論理回路の再構築方法。
【請求項１０】
前記記憶部を監視し、前記データのうちの同一の識別子によって対応付けられたデータの数が所定数を超えた場合に、前記記憶部に格納された識別子のうちの前記プログラマブル論理回路で動作している子回路ブロックの識別子に対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させることを特徴とする請求項６〜８のいずれか一つに記載のプログラマブル論理回路の再構築方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的に再構築可能なプログラマブル論理回路装置、およびプログラマブル論理回路の再構築方法に関するものであり、特に分岐処理を含んだ回路ブロックを構築することができるプログラマブル論理回路装置、およびプログラマブル論理回路の再構築方法に関する。
【背景技術】
【０００２】
動的に再構築可能な論理回路として、ＤＰＧＡ（Dynamically Programmable Gate Array）が知られている（特許文献１、非特許文献１，２参照）。ＤＰＧＡは、例えばマトリクス状に接続された複数の論理ブロックと複数の論理ブロック間接続部とによって構成されている。各論理ブロックは、それぞれ外部から与えられる回路ブロック情報と状態情報とに基づいて比較的単純な論理回路を提供する。
【０００３】
より詳細には、論理ブロックは、回路ブロック情報に応じた機能を提供することができるＬＵＴ（Look-Up Table）と、状態情報によって初期化されるとともにＬＵＴの出力を保持するフリップフロップとを備えている。
【０００４】
各論理ブロック間接続部は外部から与えられる接続情報に基づいて各論理ブロックの出入力間の接続を行う。すなわち、論理ブロック間接続部は、論理ブロックを組み合わせることにより、複雑な論理回路を構成する。
【０００５】
ＤＰＧＡを用いて実現しようとする回路は、その回路の処理をパイプライン処理で実現可能なように、予め複数の回路ブロックに分割される。ＤＰＧＡは、単一の回路ブロックを構成するにすぎないが、その回路ブロックを極めて短い時間で再構成することによって実質的にパイプライン処理を実行し、結果的に、実現しようとする回路の機能を提供する。
【０００６】
【特許文献１】特開２００１−２０２２３６号公報
【非特許文献１】柴田  裕一郎ほか，「ＤＲＡＭ混載ＦＰＧＡを用いたデータ駆動型仮想ハードウェア」情報処理学会論文誌，第４０巻，第５号，１９９９年５月，ｐ.１９３５−１９４５
【非特許文献２】凌  暁萍ほか、「ＷＡＳＭＩＩ：データ駆動型制御機構を持つＭＰＬＤ」電子情報通信学会論文誌  Ｄ−Ｉ、Ｖｏｌ．Ｊ７７−Ｄ−１、Ｎｏ．４、１９９４年４月、ｐｐ３０９−３１７
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来のＤＰＧＡは、単純なシーケンス処理を含んだ回路を実現する場合に適しており、頻繁に回路ブロックの切り替えが発生することによって回路全体のスループットが低下するという理由から、分岐処理を含んだ複雑な処理に対しては積極的に適応されていなかった。
【０００８】
本発明は、上記に鑑みてなされたものであって、分岐処理を含んだ回路を構築する場合であっても、スループットの低下を最小限に留めることのできるプログラマブル論理回路装置およびプログラマブル論理回路の再構築方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明にかかるプログラマブル論理回路装置は、分岐処理を実行する分岐回路ブロックと、該分岐回路ブロックによって得られるデータに対して複数の処理を選択的に実行する複数の子回路ブロックと、を含む複数の回路ブロックを、動的に切り替えて動作させることが可能なプログラマブル論理回路と、前記分岐回路ブロックによって得られるデータと該データの出力先となる子回路ブロックの識別子とを対応付けて記憶する記憶部と、前記プログラマブル論理回路で前記子回路ブロックのいずれかが動作している場合には、前記記憶部に記憶されたデータのうち、当該子回路ブロックの識別子と同じ識別子が対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させる制御部と、を備えることを特徴とする。
【００１０】
また、本発明にかかるプログラマブル論理回路装置の再構築方法は、分岐処理を実行する分岐回路ブロックと、該分岐回路ブロックによって得られるデータに対して複数の処理を選択的に実行する複数の子回路ブロックと、を含む複数の回路ブロックを、動的に切り替えて動作させることが可能なプログラマブル論理回路の再構築方法であって、前記分岐回路ブロックによって得られるデータと該データの出力先となる子回路ブロックの識別子とを対応付けて記憶部に格納し、前記プログラマブル論理回路で前記子回路ブロックのいずれかが動作している場合には、前記記憶部に格納されたデータのうち、当該子回路ブロックの識別子と同じ識別子が対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させることを特徴とする。
【発明の効果】
【００１１】
本発明にかかるプログラマブル論理回路装置によれば、分岐処理に伴う回路ブロックの切替回数を最小限に抑えることができ、プログラマブル論理回路装置全体のスループットを向上させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１２】
まず、動的に再構成可能な論理回路装置（プログラマブル論理回路装置）で、単純なパイプライン処理を行う場合の動作を説明する。図１１は、プログラマブル論理回路装置を機能的に示したブロック図である。図１１に示す例では、ＳｔｅｐＡからＳｔｅｐＤまでの４個のステップからなる単純なパイプライン処理を１つのプログラマブル論理回路装置１０００において実行する。
【００１３】
このように異なるステップからなる一連の処理は、一般的には、各ステップに対応する専用回路Ａ、Ｂ、ＣおよびＤからなる専用回路群１１００と、各専用回路の出入力を一時的に記憶するＦＩＦＯ（First-in First-out）メモリ１１１１〜１１１５との組み合わせにより容易に実現することができる。しかしながら、図１１のプログラマブル論理回路１０００では、４個の専用回路が、プログラマブル論理回路１０１０と回路情報Ａ、Ｂ、ＣおよびＤとを備えるプログラマブル論理回路装置１０００によって実現される。ここでは、説明を簡単にするためにプログラマブル論理回路１０１０が一つの場合について説明する。
【００１４】
プログラマブル論理回路１０１０は、動的に再構成可能な論理回路の一種である、ＤＰＧＡである。プログラマブル論理回路１０１０は、外部から与えられた回路情報に従って任意の論理回路を実現する。例えば、プログラマブル論理回路１０１０は回路情報Ａが与えられると回路Ａとして動作し、回路情報Ｂを与えられると回路Ｂとして動作する。
【００１５】
また、プログラマブル論理回路１０１０は回路構成を再構成可能という性質を持つ。具体的には、プログラマブル論理回路１０１０の回路情報を変更することにより、プログラマブル論理回路１０１０の回路構成を変更することができる。例えば、図１２に示すように、プログラマブル論理回路１０１０は、回路情報Ａに基づいて回路Ａとして動作することができ、回路情報Ｂが与えられると、図１３に示すように回路Ｂとして動作する。プログラマブル論理回路１０１０に回路情報ＣまたはＤを与えた場合にも、それぞれ図１４および図１５に示すように、プログラマブル論理回路１０１０を回路Ｃおよび回路Ｄとして動作させることができる。
【００１６】
換言すれば、図１２〜図１５に示したように、ある時刻ではプログラマブル論理回路１０１０を回路Ａとして動作させ、別の時刻では回路Ｂとして動作させ、また別の時刻では回路Ｃとして動作させ、さらに別の時刻では回路Ｄとして動作させることができる。従って、ある時刻では回路Ａの処理のみが行われ、その他の回路（Ｂ〜Ｄ）の処理は停止した状態になる。このように、プログラマブル論理回路１０１０で実現する回路の種類を時々刻々と変化させながらステップＡ、Ｂ、ＣおよびＤの処理を行う。
【００１７】
図１２〜図１５に示すように、プログラマブル論理回路装置１０００は、さらにＦＩＦＯ切替部１０２０を備える。プログラマブル論理回路１０１０で実現させる回路を変更する時に、ＦＩＦＯ切替部１０２０は、プログラマブル論理回路１０１０に接続するＦＩＦＯメモリを変更する。例えば、プログラマブル論理回路１０１０を回路Ｃとして動作させる時には、ＦＩＦＯ切替部１０２０はプログラマブル論理回路１０１０の入力側にＦＩＦＯ１１１３を接続し、出力側にＦＩＦＯ１１１４を接続する。プログラマブル論理回路１０１０を回路Ｄとして動作させる時には、ＦＩＦＯ切替部１０２０はプログラマブル論理回路１０１０の入力側にＦＩＦＯ１１１４を接続し、出力側にＦＩＦＯ１１１５を接続する。
【００１８】
なお、各回路Ａ、Ｂ、ＣおよびＤをプログラマブル論理回路１０１０で動作させる順番は予め決めておいても良いし、動的に決定しても構わない。
【００１９】
図１６はプログラマブル論理回路１０１０の内部構成を示すブロック図である。プログラマブル論理回路１０１０は複数の単位ブロック（回路ブロック）２０００と、単位ブロック間の接続を行う複数の単位ブロック間接続部２０１０とを備える。単位ブロック２０００は、入力されたデータに対する論理演算を行うＬＵＴ２００１と、ＬＵＴ２００１の演算結果を他の単位ブロックに出力する際の出力の同期をとるためのＤ−ＦｌｉｐＦｌｏｐ２００２とを備える。単位ブロック２０００は、複数の回路情報を記憶しておくＲＡＭ２００３と、ＬＵＴ２００１に与える回路情報を切り替える切替部２００４とを備える。単位ブロック２０００は、ＬＵＴ２００１に与える回路情報を切り替える際にＤ−ＦｌｉｐＦｌｏｐ２００２の状態情報を退避・復元するためのＲＡＭ２００５と、退避・復元する状態情報を切り替える切替部２００６とを備える。
【００２０】
単位ブロック間接続部２０１０は、単位ブロック間の接続関係に関する回路情報に基づいて単位ブロック２０００からの出力を別の単位ブロック２０００に出力する接続部２０１１と、単位ブロック間の接続関係を規定する複数の回路情報を記憶するＲＡＭ２０１２と、接続部２０１１に与える回路情報を切り替える切替部２０１３とを備える。
【００２１】
ＲＡＭ２００３は、外部から論理演算に関する回路情報を受け取り、記憶する。ＲＡＭ２０１２は、外部から単位ブロック間の接続関係に関する回路情報を受け取り、記憶する。ＲＡＭ２００５は、外部と状態情報の受け渡しを行う。切替部２００４、２００６および２０１３は、外部から制御信号を受けて切替動作を行う。
【００２２】
なお、ここではＬＵＴ２００１は論理演算を行うと説明したが、算術演算や簡単なプログラムを実行可能なものであっても構わない。
【００２３】
図１７は、プログラマブル論理回路１０１０の動作中に再構成を行う手順を示すフローチャートである。なお、ここではプログラマブル論理回路１０１０の外部にある図示しない制御部により再構成の制御が実行されるものとする。
【００２４】
制御部は、次に動作させる回路に対応する回路情報２００３−１および回路情報２０１２−２を外部からＲＡＭ２００３およびＲＡＭ２０１２に供給するとともに、次に動作させる回路に対応する状態情報２００５−２を外部からＲＡＭ２００５に供給する（ステップＳ２１０１）。
【００２５】
つぎに、制御部は、プログラマブル論理回路１０１０へのクロック信号の供給を停止して処理を停止させる（ステップＳ２１０２）。
【００２６】
つぎに、制御部は、次に動作させる回路に対応するＦＩＦＯ（図示せず）をプログラマブル論理回路１０１０に接続する（ステップＳ２１０３）。
【００２７】
つぎに、制御部は、切替部２００６に制御信号を送りＤ−ＦｌｉｐＦｌｏｐ２００２が保持する状態情報をＲＡＭ２００５に退避させる（ステップＳ２１０４）。退避させた状態情報は状態情報２００５−１としてＲＡＭ２００５に記憶される。
【００２８】
つぎに、制御部は、ＬＵＴ２００１への回路情報の書き込みとＤ−ＦｌｉｐＦｌｏｐ２００２への状態情報の書き込みを行なう（ステップＳ２１０５）。具体的には、制御部は、切替部２００４に制御信号を送る。切替部２００４は次に動作させる回路の構成に関する回路情報２００３−２をＲＡＭ２００３からＬＵＴ２００１へコピーする。また、制御部は、切替部２０１３に制御信号を送る。切替部２０１３は、次に動作させる回路の接続関係に関する回路情報２０１２−２を、ＲＡＭ２０１２から接続部２０１１へコピーする。さらに、制御部は、切替部２００６に制御信号を送る。切替部２００６は、次に動作させる回路に対応する状態情報２００５−２をＤ−ＦｌｉｐＦｌｏｐ２００２上に復元する。
【００２９】
つぎに、制御部は、クロック信号の供給を再開する（ステップＳ２１０６）。また、必要があればステップＳ２１０４でＲＡＭ２０１２に退避しておいた状態情報２００５−１を図示しない外部のメモリに保存しても良い（ステップＳ２１０７）。
【００３０】
以上の手順により論理構成の再構成が行われる。なお、ステップＳ２１０１については、既にＲＡＭ２００３、２００５および２０１２に必要なデータが記憶されている場合は省略可能である。以上が、単純なパイプライン処理を行う場合の、プログラマブル論理回路装置１０００の基本動作である。
【００３１】
以下に、本発明にかかるプログラマブル論理回路装置並びにプログラマブル論理回路の再構築方法の実施の形態を図面に基づいて詳細に説明する。
【００３２】
（実施の形態１）
実施の形態１にかかるプログラマブル論理回路装置は、プログラマブル論理回路を用いて、分岐処理を伴う目的回路を構築する装置である。より詳細には、本装置は、目的回路を分割して得られる回路ブロックをプログラマブル論理回路上で動的に切り替えることによって構築する装置であり、その基本構成および基本動作は上述したＤＰＧＡに従う。特に、本実施の形態１にかかるプログラマブル論理回路装置は、分岐先の回路ブロックへと引き渡されるデータにその回路ブロックの識別子を付与し、その識別子をキーとして、現在、プログラマブル論理回路上に構築されている回路ブロック（以下、現回路ブロックと称する）へと引き渡されるデータを優先的に処理することを特徴としている。なお、以下の説明において、目的回路とは、複数の回路ブロックによって構築される論理回路を指し示し、結果的にプログラマブル論理回路装置によって提供される機能回路である。
【００３３】
図１は、実施の形態１にかかるプログラマブル論理回路装置のブロック図である。図１において、プログラマブル論理回路装置１００は、プログラマブル論理回路１０、制御部２０、入出力データ記憶部３０、状態情報記憶部４０、および回路ブロック情報記憶部５０を備えて構成される。
【００３４】
プログラマブル論理回路１０は、ＤＰＧＡとして提供される集積回路である。回路ブロック情報記憶部５０は、プログラマブル論理回路１０上に構築する各回路ブロックの回路情報を記憶している。具体的には、プログラマブル論理回路１０内の複数の論理ブロックにそれぞれ与えられるＬＵＴ情報が回路ブロックごとに整理されて格納されている。
【００３５】
状態情報記憶部４０は、プログラマブル論理回路１０上に構築する各回路ブロックの状態情報を記憶している。具体的には、プログラマブル論理回路１０内の複数の論理ブロックにそれぞれ与えられるフリップフロップの状態が回路ブロックごとに整理されて格納されている。この状態情報記憶部４０によって、特定の状態にある回路ブロックをプログラマブル論理回路１０上に構築することができる。
【００３６】
入出力データ記憶部３０は、プログラマブル論理回路１０に入力されるデータと、プログラマブル論理回路１０から出力されたデータとを記憶している。換言すれば、入出力データ記憶部３０は、パイプライン処理において、回路ブロック間を接続するインターフェースとして機能する。特に、この入出力データ記憶部３０は、分岐処理を含まない処理(以下、シーケンス処理という)のために用いられるシーケンス処理用メモリ３２に加え、分岐処理のために用いられる分岐処理用メモリ３１を備えている。より詳しくは、シーケンス処理用メモリ３２は、シーケンス処理を実行する回路ブロックに入力されるデータまたはその回路ブロックから出力されたデータを格納し、分岐処理用メモリ３１は、分岐処理を含んだ回路ブロックから出力されたデータを格納する。また、シーケンス処理用メモリ３２には、本プログラマブル論理回路装置１００の外部から、プログラマブル論理回路１０によって実現される目的回路へと入力されるデータと、その目的回路からプログラマブル論理回路装置１００の外部へと出力されるデータも格納している。
【００３７】
制御部２０は、パイプライン処理を規定した所定のプログラムに従って、（１）プログラマブル論理回路１０の動作を停止させる、（２）状態情報記憶部４０から状態情報を取り出して状態情報記憶部４０に退避する、（３）回路ブロック情報記憶部５０および状態情報記憶部４０から次に構築すべき回路ブロックの回路ブロック情報および状態情報を取り出して新たな回路ブロックを構築する、（４）分岐処理用メモリまたはシーケンス処理メモリを切り換える、（５）プログラマブル論理回路１０の動作を再開する、といった処理を行う。
【００３８】
図２は、入出力データ記憶部３０の内部構成と、制御部２０の内部構成の一部とを示すブロック図である。分岐処理用メモリ３１は、Ｎ個のメモリエリア６０−１〜６０−Ｎによって論理的に分割されたＲＡＭ（Random Access Memory）で構成される。ここで、Ｎは、目的回路に含まれる分岐処理の数（換言すれば、分岐処理を含む回路ブロックの数）を表わす。シーケンス処理用メモリ３２は、ＦＩＦＯ（First-in First-out）メモリ７０−１〜７０−Ｍと、外部入力用のＦＩＦＯメモリ７１と、外部出力用のＦＩＦＯメモリ７２とによって構成される。ここで、Ｍは、シーケンス処理を実行する回路ブロックの数である。
【００３９】
図３は、実施の形態１にかかるプログラマブル論理回路装置において、分岐処理を含んだ目的回路のパイプライン処理の例を示す図である。図３において、プログラマブル論理回路装置１００は、パイプライン処理の第１段に位置する回路ブロックＣ１をプログラマブル論理回路１０上に構築する。この際、入力メモリ選択部２１は、回路ブロックＣ１の入力ポートに外部入力用のＦＩＦＯメモリ７１を接続し、出力メモリ選択部２３は、回路ブロックＣ１の出力ポートにシーケンス処理−Ａ用のＦＩＦＯメモリ７０−１を接続する。これにより、回路ブロックＣ１は、ＦＩＦＯメモリ７１に記憶されているデータに対して、その回路ブロックＣ１に特有のシーケンス処理を行ない、その結果をＦＩＦＯメモリ７０−１へと出力する。
【００４０】
続いて、プログラマブル論理回路装置１００は、パイプライン処理の第２段に位置する回路ブロックＣ２をプログラマブル論理回路１０上に構築する。この際、入力メモリ選択部２１は、回路ブロックＣ２の入力ポートにシーケンス処理−Ａ用のＦＩＦＯメモリ７０−１を接続し、出力メモリ選択部２３は、回路ブロックＣ２の出力ポートに分岐処理−Ａ用のＲＡＭのメモリエリア６０−１を接続する。これにより、回路ブロックＣ２は、ＦＩＦＯメモリ７０−１に記憶されているデータに対して、その回路ブロックＣ２に特有の分岐処理を行ない、その結果を、分岐先の回路ブロックを示す識別子とともに、ＲＡＭのメモリエリア６０−１へと出力する。
【００４１】
データ分岐処理データ管理部２２は、このＲＡＭのメモリエリア６０−１の先頭ポインタに位置するデータと、そのデータに関連付けて記憶された回路ブロック識別子を取得し、その識別子が示す回路ブロックをプログラマブル論理回路１０上に構築する。例えば、回路ブロック識別子が回路ブロックＣ３を示す場合には、回路ブロックＣ３がプログラマブル論理回路１０上に構築される。またこの際、出力メモリ選択部２３は、回路ブロックＣ３の出力ポートにシーケンス処理−Ｂ用のＦＩＦＯメモリ７０−２を接続し、データ分岐処理データ管理部２２は、ＲＡＭのメモリエリア６０−１の先頭ポインタに位置するデータを回路ブロックＣ３の入力ポートに適当なタイミングで送信する。回路ブロック識別子が回路ブロックＣ５を示す場合にも、同様にして回路ブロックＣ５がプログラマブル論理回路１０上に構築される。なお、分岐処理の後にその分岐処理を条件とする他の処理（シーケンス処理でも分岐処理でもよい）が実行されてもよい。図３に示す例では、回路ブロックＣ３への分岐後に、その回路ブロックＣ３の処理結果を用いた他のシーケンス処理−Ｃが実行される。
【００４２】
分岐後の少なくとも一つの一連のシーケンス処理が終了すると、プログラマブル論理回路装置１００は、つぎに実行されるべき回路ブロックＣ６をプログラマブル論理回路１０上に構築する。この際、入力メモリ選択部２１は、回路ブロックＣ６の入力ポートに分岐後の複数の一連のシーケンス処理の最終段に位置するＦＩＦＯメモリ７０−３および７０−４を接続し、出力メモリ選択部２３は、回路ブロックＣ６の出力ポートに外部出力用のＦＩＦＯメモリ７２を接続する。これにより、回路ブロックＣ６は、ＦＩＦＯメモリ７０−３および７０−４に記憶されているデータに対して、その回路ブロックＣ６に特有のシーケンス処理を行ない、その結果を、外部出力用のＦＩＦＯメモリ７２へと出力する。外部出力用のＦＩＦＯメモリ７２に格納されるデータは、プログラマブル論理回路装置１００に接続される外部装置によって所定のタイミングで取り出される。
【００４３】
このように、制御部２０は、基本的には、図３に示したようなパイプライン処理の順に従って回路ブロックを切り替える。しかしながら、プログラマブル論理回路装置１００に、外部入力として、ある量以上のデータが入力された後は、回路ブロック間における出力データ数や処理時間の違いによって、入出力データ記憶部３０に、次々とデータが蓄積されていく。換言すれば、処理待ち状態にあるデータが多く存在する状態となり、各回路ブロックのスループットが低下する。また、分岐処理の後において、単にその分岐処理の結果が出力された順に回路ブロックの切り替えを判断する場合には、頻繁にその切り替えが生じる。このような回路ブロックの切り替え回数の増加は、プログラマブル論理回路装置１００全体のスループットを低下させる。この問題は、多数の分岐先を取り得る分岐処理が存在する場合に特に顕著となる。
【００４４】
そこで、本実施の形態にかかるプログラマブル論理回路装置１００の制御部２０は、入出力データ記憶部３０を監視し、所定数以上のデータを格納しているＲＡＭのメモリエリアやＦＩＦＯメモリが優先的にプログラマブル論理回路１０に接続されるように、回路ブロックを切り替える。また、分岐処理用メモリ３１のデータの処理にあたっては、ＲＡＭのメモリエリアに格納されたデータのうち、現回路ブロックと同一のものを分岐先として設定されているデータを優先的に処理する。
【００４５】
図４は、実施の形態１にかかるプログラマブル論理回路装置１００の回路ブロック決定処理を示すフローチャートである。プログラマブル論理回路装置１００は、所定のタイミングで定期的に、分岐処理用メモリ３１のＲＡＭの各メモリエリアとシーケンス処理用メモリ３２の各ＦＩＦＯメモリを監視している（ステップＳ１０１）。監視の結果、所定の条件を満たすＲＡＭのメモリエリア、または、ＦＩＦＯメモリを決定する（ステップＳ１０２）。所定の条件を満たすＲＡＭのメモリエリアとは、例えば、（１）所定数以上のデータが格納されているメモリエリア、（２）同一の識別子が割り当てられたデータが所定数以上格納されているメモリエリア、である。また、所定の条件を満たすＦＩＦＯメモリとは、例えば、所定数以上のデータが格納されているＦＩＦＯメモリである。なお、所定の条件を満たすメモリエリアまたはＦＩＦＯメモリがない場合であっても、その条件に最も近いメモリエリアまたはＦＩＦＯメモリを決定する。
【００４６】
ステップＳ１０２においてＦＩＦＯメモリが決定された場合には（ステップＳ１０３：Ｙｅｓ）、そのＦＩＦＯメモリに入力メモリとして接続される回路ブロックを決定する（ステップＳ１０４）。決定された回路ブロックと現回路ブロックとが異なる場合には（ステップＳ１０５：Ｙｅｓ）、プログラマブル論理回路１０上に構築される回路ブロックを、ステップＳ１０４で決定された回路ブロックに切り替える（ステップＳ１０６）。決定された回路ブロックと現回路ブロックとが同じ場合には（ステップＳ１０５：Ｎｏ）、再度、分岐処理用メモリ３１のＲＡＭの各メモリエリアとシーケンス処理用メモリ３２の各ＦＩＦＯメモリを監視する（ステップＳ１０１）。ステップＳ１０２において、ＲＡＭのメモリエリアが決定された場合には（ステップＳ１０３：Ｎｏ）、分岐処理用メモリ３１に対するデータ処理を実行する（ステップＳ１１０）。
【００４７】
図５は、実施の形態１にかかるプログラマブル論理回路装置における、分岐処理用メモリに対するデータ処理を示すフローチャートである。制御部２０は、所定の条件を満たすＲＡＭのメモリエリアを決定すると（図４のステップＳ１０２）、分岐処理データ管理部２２によって、そのメモリエリア内に、現回路ブロックの識別子が存在するか否かを調べる（ステップＳ２０１）。図６−１は、メモリエリア内に格納されたデータの例を示す図である。図６−１に示すように、各メモリエリアは、ポインタによって特定されるレコードを有しており、各レコードは、回路ブロックの識別子が格納される識別子フィールドと、分岐処理によって処理されたデータが格納されるデータフィールドと、を有している。なお、図６−１において、ポインタａｄｄｒ１が先頭ポインタである。
【００４８】
識別子とデータとの対は、分岐処理を含んだ回路ブロックによって生成される。具体的には、分岐処理を含んだ回路ブロックは、分岐処理によって出力されるデータに対し、分岐処理によって決定された分岐先を示す回路ブロック識別子を割り当て、このデータと回路ブロック識別子との組を、空きレコードを有し且つ先頭ポインタに最も近いポインタのレコードに書き込む。
【００４９】
ステップＳ２０１において、メモリエリア内に現回路ブロックの識別子が存在する場合、さらに、現回路ブロックに接続された出力メモリ（出力ＦＩＦＯ）に所定量以上の空きがあるか否かを調べる（ステップＳ２０２）。所定量以上の空きがある場合には（ステップＳ２０２：Ｙｅｓ）、その識別子に対応するデータ、すなわち現回路ブロックの識別子が割り当てられたデータを、メモリエリアから、先頭ポインタに近い順に取り出し、それを現回路ブロックに供給する（ステップＳ２０３）。そして、取り出されたデータが属するレコードを削除するとともに、残りのレコードが、先頭ポインタから順に埋まるように、メインメモリを更新する（ステップＳ２０４）。図６−２は、図６−１に示すメモリエリアを更新した結果を示す図である。図６−１および図６−２に示す例では、現回路ブロックは、識別子ＳＢで特定される。
【００５０】
一方、ステップＳ２０１において、メモリエリア内に現回路ブロックの識別子が存在しない場合には、プログラマブル論理回路１０上に構築される回路ブロックを、メモリエリアの先頭ポインタに位置する識別子の回路ブロックに切り替える（ステップＳ２１１）。図６−２に示す例では、識別子ＳＥで特定される回路ブロックに切り替えられる。回路ブロックの切り替え後には、再度、ステップＳ２０２の判定を行なう。
【００５１】
ステップＳ２０２において、所定量以上の空きがない場合には（ステップＳ２０２：Ｎｏ）、プログラマブル論理回路１０上に構築される回路ブロックを、メモリエリアに格納された他の識別子の回路ブロックに切り替える（ステップＳ２１２）。他の識別子としては、例えば、メモリエリア中において、その数が最も多い識別子を選ぶことができる。この回路ブロックの切り替え後には、再度、ステップＳ２０２の判定を行なう。
【００５２】
以上に説明したように、実施の形態１にかかるプログラマブル論理回路装置によれば、分岐処理後のデータと分岐先を示す回路ブロックの識別子とを組にして分岐処理用メモリ３１に格納し、格納されたデータのうち、現回路ブロックと同一の識別子が割り当てられたデータを優先的に処理する。換言すれば、現回路ブロックの入力ポートに入力されるべきデータを優先的に処理する。これにより、分岐処理に伴う回路ブロックの切替回数を最小限に抑えることができ、プログラマブル論理回路装置１００全体のスループットを向上させることができる。
【００５３】
（実施の形態２）
実施の形態２にかかるプログラマブル論理回路装置は、分岐先の回路ブロックへと引き渡されるデータにその回路ブロックの識別子と出力順を示した番号とを付与し、その識別子および番号をキーとして、現回路ブロックへと引き渡されるデータを優先的に処理することを特徴としている。
【００５４】
実施の形態２にかかるプログラマブル論理回路装置の構成は、図１および図２に示した装置と同様である。但し、分岐処理データ管理部の処理は、実施の形態１で説明した分岐処理データ管理部２２と一部異なる。具体的には、実施の形態２にかかるプログラマブル論理回路装置の分岐処理データ管理部は、実施の形態１の分岐処理データ管理部２２の機能に加え、分岐処理用メモリ３１に、データおよび識別子が格納される際に、それらに関連付けられる、データ出力順を示す番号を格納する。なお、データ出力順を示す番号は、分岐処理データ管理部２２ではなく分岐処理を実行する回路ブロックによって付与されてもよく、単調増加するシーケンス番号でもよいし、所定の数値範囲を巡回する番号でもよい。
【００５５】
図７は、実施の形態２にかかるプログラマブル論理回路装置において、分岐処理を含んだ目的回路のパイプライン処理の例を示す図である。図７において、分岐処理−Ａ用の第１のＲＡＭのメモリエリア６０−１の内容と、回路ブロックＣ４およびＣ５から出力されたデータが分岐処理−Ａ用の第２のＲＡＭのメモリエリア６０−２に格納される点と、メモリエリア６０−２に格納されたデータがそれらデータに関連付けられた番号に基づいて並べ替えられ、その結果がＦＩＦＯメモリ７０−５に格納される点とが、図３に示したパイプライン処理と異なる。
【００５６】
すなわち、実施の形態２にかかるプログラマブル論理回路装置は、実施の形態１にかかるプログラマブル論理回路装置に対して、分岐処理後のデータの処理順序を保障することを特徴としている。
【００５７】
図８−１は、図７に示すメモリエリア６０−１内に格納されたデータの例を示す図である。図８−１に示すように、各メモリエリアは、ポインタによって特定されるレコードを有しており、各レコードは、データの出力順を示す番号フィールドと、回路ブロックの識別子が格納される識別子フィールドと、分岐処理によって処理されたデータが格納されるデータフィールドと、を有している。図８−２は、分岐後の回路ブロックＣ３で始まる一連のシーケンス処理によって処理されたデータの例を示す図であり、図８−３は、分岐後の回路ブロックＣ５で始まる一連のシーケンス処理によって処理されたデータの例を示す図である。図８−２および図８−３に示すように、各回路ブロックは、番号とデータとの対を入力し、その処理結果を同様な対の状態で出力することができる。
【００５８】
図８−２および図８−３に示したデータは、分岐処理−Ａ用の第２のＲＡＭのメモリエリア６０−２に格納され、番号順に並べ替えられる。図８−４は、その結果（ＦＩＦＯメモリ７０−５に格納される）を示す図である。
【００５９】
以上に説明したように、実施の形態２にかかるプログラマブル論理回路装置によれば、分岐処理後のデータと、データ出力順を示す番号と、分岐先を示す回路ブロックの識別子とを組にして分岐処理用メモリ３１に格納し、格納されたデータのうち、現回路ブロックと同一の識別子が割り当てられたデータを優先的に処理するともに、分岐処理後の一連のシーケンス処理の後に、それらデータを上記番号順に並べ替える。これにより、実施の形態１において説明した効果に加え、分岐処理前後においてデータの出力順を保障することができる。
【００６０】
また、分岐処理用メモリ３１内の各メモリエリアのレコードに、さらに分岐処理の階層番号が格納される階層フィールドを追加しても良い。これにより、分岐処理後の一連のシーケンス処理内において、再度分岐処理が生じる場合であっても、データ出力順を保障することができる。なお、この場合、階層番号は、分岐処理データ管理部２１によって生成される。
【００６１】
（実施の形態３）
実施の形態３にかかるプログラマブル論理回路装置は、実施の形態２にかかるプログラマブル論理回路装置の変形例であり、分岐先の回路ブロックへと引き渡されるデータとデータの出力順を示した番号とからなる組を、分岐先の回路ブロック用のＦＩＦＯメモリに一旦記憶することを特徴としている。
【００６２】
図９は、実施の形態３にかかるプログラマブル論理回路装置において、分岐処理を含んだ目的回路のパイプライン処理の例を示す図である。図９において、図７と異なる点は、分岐処理−Ａ用のＲＡＭのメモリエリア６０−１に格納されたデータのうち、分岐先として回路ブロックＣ３に関連付けられたデータ（すなわち、データとデータ出力順との組）を格納するＦＩＦＯメモリ７０−１２が、分岐後に実行される回路ブロックＣ３の入力ポートに接続され、分岐処理−Ａ用のＲＡＭのメモリエリア６０−１に格納されたデータのうち、分岐先として回路ブロックＣ５に関連付けられたデータ（すなわち、データとデータ出力順との組）を格納するＦＩＦＯメモリ７０−１４が、分岐後に実行される回路ブロックＣ５の入力ポートに接続される点である。図９中、ＦＩＦＯ７０−１３の機能は、図７に示したＦＩＦＯ７０−２と同様である。
【００６３】
よって、例えば、図９に示すメモリエリア６０−１内に、図８−１に示したデータが格納されている場合、ＦＩＦＯメモリ７０−１２には、図１０−１に示すデータが格納され、ＦＩＦＯ７０−１４には、図１０−２に示すデータが格納される。すなわち、回路ブロックＣ３は、図１０−１に示すデータを入力し、ＦＩＦＯ７０−１３を介して、回路ブロックＣ４から図８−２に示したようなデータが出力される。また、回路ブロックＣ５は、図１０−２に示すデータを入力し、図８−３に示したようなデータを出力する。これら出力されたデータは、図７と同様に、分岐処理−Ａ用の第２のＲＡＭのメモリエリア６０−２に格納され、データ出力順に並べ替えられた結果がＦＩＦＯメモリ７０−５に格納される。
【００６４】
従って、この実施の形態３においても実施の形態２と同様な効果を享受することができる。
【００６５】
本発明は、上述したような特定の実施形態に限定されるものではなく、さらなる効果や変形例は、当業者によって容易に導き出すことができる。すなわち、本発明にかかる実施の形態は、添付の特許請求の範囲およびその均等物にかかる発明の要旨を逸脱しない範囲で様々な変更が可能である。
【産業上の利用可能性】
【００６６】
以上のように、本発明にかかるプログラマブル論理回路装置およびプログラマブル論理回路の再構築方法は、多くの分岐処理を有する目的回路をプログラマブル論理回路上に動的に再構築するのに有用であり、特に、データ通信処理や画像圧縮処理を実行する回路を提供するのに適している。
【図面の簡単な説明】
【００６７】
【図１】実施の形態１にかかるプログラマブル論理回路装置のブロック図である。
【図２】実施の形態１にかかるプログラマブル論理回路装置において、入出力データ記憶部の内部構成と、制御部の内部構成の一部とを示すブロック図である。
【図３】実施の形態１にかかるプログラマブル論理回路装置において、分岐処理を含んだ目的回路のパイプライン処理の例を示す図である。
【図４】実施の形態１にかかるプログラマブル論理回路装置の回路ブロック決定処理を示すフローチャートである。
【図５】実施の形態１にかかるプログラマブル論理回路装置における、分岐処理用メモリに対するデータ処理を示すフローチャートである。
【図６−１】メモリエリア内に格納されたデータの例を示す図である。
【図６−２】図６−１のメモリエリアを更新した結果を示す図である。
【図７】実施の形態２にかかるプログラマブル論理回路装置において、分岐処理を含んだ目的回路のパイプライン処理の例を示す図である。
【図８−１】図７に示すメモリエリア内に格納されたデータの例を示す図である。
【図８−２】分岐後の回路ブロックＣ３で始まる一連のシーケンス処理によって処理されたデータの例を示す図である。
【図８−３】分岐後の回路ブロックＣ５で始まる一連のシーケンス処理によって処理されたデータの例を示す図である。
【図８−４】番号順に並べ替えられたデータの例を示す図である。
【図９】実施の形態３にかかるプログラマブル論理回路装置において、分岐処理を含んだ目的回路のパイプライン処理の例を示す図である。
【図１０−１】分岐後の回路ブロックＣ３に入力されるデータの例を示す図である。
【図１０−２】分岐後の回路ブロックＣ５に入力されるデータの例を示す図である。
【図１１】プログラマブル論理回路（ＤＰＧＡ）を機能的に示したブロック図である。
【図１２】回路Ａとして動作するプログラマブル論理回路装置を概略的に示したブロック図である。
【図１３】回路Ｂとして動作するプログラマブル論理回路装置を概略的に示したブロック図である。
【図１４】回路Ｃとして動作するプログラマブル論理回路装置を概略的に示したブロック図である。
【図１５】回路Ｄとして動作するプログラマブル論理回路装置を概略的に示したブロック図である。
【図１６】プログラマブル論理回路の内部構成を示すブロック図である。
【図１７】図１６に示したプログラマブル論理回路の動作中に再構成を行う手順を示すフローチャートである。
【符号の説明】
【００６８】
１０，１０１０  プログラマブル論理回路
２０  制御部
２１  入力メモリ選択部
２２  分岐処理データ管理部
２３  出力メモリ選択部
３０  入出力データ記憶部
３１  分岐処理用メモリ
３２  シーケンス処理用メモリ
４０  状態情報記憶部
５０  回路ブロック情報記憶部
１００，１０００  プログラマブル論理回路装置
１１００  専用回路群
１１１１〜１１１５  ＦＩＦＯメモリ
１０２０  ＦＩＦＯ切替部
２０００  単位ブロック（回路ブロック）
２０１０  単位ブロック間接続部
２００１  ＬＵＴ
２００２  Ｄ−ＦｌｉｐＦｌｏｐ
２００３，２００５  ＲＡＭ
２００４，２００６，２０１３  切替部
２０１１  接続部
２０１２  ＲＡＭ
２００３−１，２０１２−２  回路情報
２００５−１，２００５−２  状態情報
【図１】
2006033579.tif 000003
【図２】
2006033579.tif 000004
【図３】
2006033579.tif 000005
【図４】
2006033579.tif 000006
【図５】
2006033579.tif 000007
【図６−１】
2006033579.tif 000008
【図６−２】
2006033579.tif 000009
【図７】
2006033579.tif 000010
【図８−１】
2006033579.tif 000011
【図８−２】
2006033579.tif 000012
【図８−３】
2006033579.tif 000013
【図８−４】
2006033579.tif 000014
【図９】
2006033579.tif 000015
【図１０−１】
2006033579.tif 000016
【図１０−２】
2006033579.tif 000017
【図１１】
2006033579.tif 000018
【図１２】
2006033579.tif 000019
【図１３】
2006033579.tif 000020
【図１４】
2006033579.tif 000021
【図１５】
2006033579.tif 000022
【図１６】
2006033579.tif 000023
【図１７】
2006033579.tif 000024