JP3967737B2 - プログラマブル論理回路装置およびプログラマブル論理回路の再構築方法 - Google Patents

プログラマブル論理回路装置およびプログラマブル論理回路の再構築方法 Download PDF

Info

Publication number
JP3967737B2
JP3967737B2 JP2004211480A JP2004211480A JP3967737B2 JP 3967737 B2 JP3967737 B2 JP 3967737B2 JP 2004211480 A JP2004211480 A JP 2004211480A JP 2004211480 A JP2004211480 A JP 2004211480A JP 3967737 B2 JP3967737 B2 JP 3967737B2
Authority
JP
Japan
Prior art keywords
programmable logic
circuit
logic circuit
data
circuit block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004211480A
Other languages
English (en)
Other versions
JP2006033579A (ja
Inventor
伸一 菅野
昌也 樽家
拓 大根田
陸 小川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2004211480A priority Critical patent/JP3967737B2/ja
Priority to US11/081,589 priority patent/US7173451B2/en
Priority to CN200510066820.1A priority patent/CN1725642A/zh
Publication of JP2006033579A publication Critical patent/JP2006033579A/ja
Application granted granted Critical
Publication of JP3967737B2 publication Critical patent/JP3967737B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17752Structural details of configuration resources for hot reconfiguration

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Logic Circuits (AREA)
  • Stored Programmes (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

本発明は、動的に再構築可能なプログラマブル論理回路装置、およびプログラマブル論理回路の再構築方法に関するものであり、特に分岐処理を含んだ回路ブロックを構築することができるプログラマブル論理回路装置、およびプログラマブル論理回路の再構築方法に関する。
動的に再構築可能な論理回路として、DPGA(Dynamically Programmable Gate Array)が知られている(特許文献1、非特許文献1,2参照)。DPGAは、例えばマトリクス状に接続された複数の論理ブロックと複数の論理ブロック間接続部とによって構成されている。各論理ブロックは、それぞれ外部から与えられる回路ブロック情報と状態情報とに基づいて比較的単純な論理回路を提供する。
より詳細には、論理ブロックは、回路ブロック情報に応じた機能を提供することができるLUT(Look-Up Table)と、状態情報によって初期化されるとともにLUTの出力を保持するフリップフロップとを備えている。
各論理ブロック間接続部は外部から与えられる接続情報に基づいて各論理ブロックの出入力間の接続を行う。すなわち、論理ブロック間接続部は、論理ブロックを組み合わせることにより、複雑な論理回路を構成する。
DPGAを用いて実現しようとする回路は、その回路の処理をパイプライン処理で実現可能なように、予め複数の回路ブロックに分割される。DPGAは、単一の回路ブロックを構成するにすぎないが、その回路ブロックを極めて短い時間で再構成することによって実質的にパイプライン処理を実行し、結果的に、実現しようとする回路の機能を提供する。
特開2001−202236号公報 柴田 裕一郎ほか,「DRAM混載FPGAを用いたデータ駆動型仮想ハードウェア」情報処理学会論文誌,第40巻,第5号,1999年5月,p.1935−1945 凌 暁萍ほか、「WASMII:データ駆動型制御機構を持つMPLD」電子情報通信学会論文誌 D−I、Vol.J77−D−1、No.4、1994年4月、pp309−317
しかしながら、従来のDPGAは、単純なシーケンス処理を含んだ回路を実現する場合に適しており、頻繁に回路ブロックの切り替えが発生することによって回路全体のスループットが低下するという理由から、分岐処理を含んだ複雑な処理に対しては積極的に適応されていなかった。
本発明は、上記に鑑みてなされたものであって、分岐処理を含んだ回路を構築する場合であっても、スループットの低下を最小限に留めることのできるプログラマブル論理回路装置およびプログラマブル論理回路の再構築方法を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明にかかるプログラマブル論理回路装置は、分岐処理を実行する分岐回路ブロックと、該分岐回路ブロックによって得られるデータに対して複数の処理を選択的に実行する複数の子回路ブロックと、を含む複数の回路ブロックを、動的に切り替えて動作させることが可能なプログラマブル論理回路と、前記分岐回路ブロックによって得られるデータと該データの出力先となる子回路ブロックの識別子とを対応付けて記憶する記憶部と、前記プログラマブル論理回路で前記子回路ブロックのいずれかが動作している場合には、前記記憶部に記憶されたデータのうち、当該子回路ブロックの識別子と同じ識別子が対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させる制御部と、を備えることを特徴とする。
また、本発明にかかるプログラマブル論理回路装置の再構築方法は、分岐処理を実行する分岐回路ブロックと、該分岐回路ブロックによって得られるデータに対して複数の処理を選択的に実行する複数の子回路ブロックと、を含む複数の回路ブロックを、動的に切り替えて動作させることが可能なプログラマブル論理回路の再構築方法であって、前記分岐回路ブロックによって得られるデータと該データの出力先となる子回路ブロックの識別子とを対応付けて記憶部に格納し、前記プログラマブル論理回路で前記子回路ブロックのいずれかが動作している場合には、前記記憶部に格納されたデータのうち、当該子回路ブロックの識別子と同じ識別子が対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させることを特徴とする。
本発明にかかるプログラマブル論理回路装置によれば、分岐処理に伴う回路ブロックの切替回数を最小限に抑えることができ、プログラマブル論理回路装置全体のスループットを向上させることができるという効果を奏する。
まず、動的に再構成可能な論理回路装置(プログラマブル論理回路装置)で、単純なパイプライン処理を行う場合の動作を説明する。図11は、プログラマブル論理回路装置を機能的に示したブロック図である。図11に示す例では、StepAからStepDまでの4個のステップからなる単純なパイプライン処理を1つのプログラマブル論理回路装置1000において実行する。
このように異なるステップからなる一連の処理は、一般的には、各ステップに対応する専用回路A、B、CおよびDからなる専用回路群1100と、各専用回路の出入力を一時的に記憶するFIFO(First-in First-out)メモリ1111〜1115との組み合わせにより容易に実現することができる。しかしながら、図11のプログラマブル論理回路1000では、4個の専用回路が、プログラマブル論理回路1010と回路情報A、B、CおよびDとを備えるプログラマブル論理回路装置1000によって実現される。ここでは、説明を簡単にするためにプログラマブル論理回路1010が一つの場合について説明する。
プログラマブル論理回路1010は、動的に再構成可能な論理回路の一種である、DPGAである。プログラマブル論理回路1010は、外部から与えられた回路情報に従って任意の論理回路を実現する。例えば、プログラマブル論理回路1010は回路情報Aが与えられると回路Aとして動作し、回路情報Bを与えられると回路Bとして動作する。
また、プログラマブル論理回路1010は回路構成を再構成可能という性質を持つ。具体的には、プログラマブル論理回路1010の回路情報を変更することにより、プログラマブル論理回路1010の回路構成を変更することができる。例えば、図12に示すように、プログラマブル論理回路1010は、回路情報Aに基づいて回路Aとして動作することができ、回路情報Bが与えられると、図13に示すように回路Bとして動作する。プログラマブル論理回路1010に回路情報CまたはDを与えた場合にも、それぞれ図14および図15に示すように、プログラマブル論理回路1010を回路Cおよび回路Dとして動作させることができる。
換言すれば、図12〜図15に示したように、ある時刻ではプログラマブル論理回路1010を回路Aとして動作させ、別の時刻では回路Bとして動作させ、また別の時刻では回路Cとして動作させ、さらに別の時刻では回路Dとして動作させることができる。従って、ある時刻では回路Aの処理のみが行われ、その他の回路(B〜D)の処理は停止した状態になる。このように、プログラマブル論理回路1010で実現する回路の種類を時々刻々と変化させながらステップA、B、CおよびDの処理を行う。
図12〜図15に示すように、プログラマブル論理回路装置1000は、さらにFIFO切替部1020を備える。プログラマブル論理回路1010で実現させる回路を変更する時に、FIFO切替部1020は、プログラマブル論理回路1010に接続するFIFOメモリを変更する。例えば、プログラマブル論理回路1010を回路Cとして動作させる時には、FIFO切替部1020はプログラマブル論理回路1010の入力側にFIFO1113を接続し、出力側にFIFO1114を接続する。プログラマブル論理回路1010を回路Dとして動作させる時には、FIFO切替部1020はプログラマブル論理回路1010の入力側にFIFO1114を接続し、出力側にFIFO1115を接続する。
なお、各回路A、B、CおよびDをプログラマブル論理回路1010で動作させる順番は予め決めておいても良いし、動的に決定しても構わない。
図16はプログラマブル論理回路1010の内部構成を示すブロック図である。プログラマブル論理回路1010は複数の単位ブロック(回路ブロック)2000と、単位ブロック間の接続を行う複数の単位ブロック間接続部2010とを備える。単位ブロック2000は、入力されたデータに対する論理演算を行うLUT2001と、LUT2001の演算結果を他の単位ブロックに出力する際の出力の同期をとるためのD−FlipFlop2002とを備える。単位ブロック2000は、複数の回路情報を記憶しておくRAM2003と、LUT2001に与える回路情報を切り替える切替部2004とを備える。単位ブロック2000は、LUT2001に与える回路情報を切り替える際にD−FlipFlop2002の状態情報を退避・復元するためのRAM2005と、退避・復元する状態情報を切り替える切替部2006とを備える。
単位ブロック間接続部2010は、単位ブロック間の接続関係に関する回路情報に基づいて単位ブロック2000からの出力を別の単位ブロック2000に出力する接続部2011と、単位ブロック間の接続関係を規定する複数の回路情報を記憶するRAM2012と、接続部2011に与える回路情報を切り替える切替部2013とを備える。
RAM2003は、外部から論理演算に関する回路情報を受け取り、記憶する。RAM2012は、外部から単位ブロック間の接続関係に関する回路情報を受け取り、記憶する。RAM2005は、外部と状態情報の受け渡しを行う。切替部2004、2006および2013は、外部から制御信号を受けて切替動作を行う。
なお、ここではLUT2001は論理演算を行うと説明したが、算術演算や簡単なプログラムを実行可能なものであっても構わない。
図17は、プログラマブル論理回路1010の動作中に再構成を行う手順を示すフローチャートである。なお、ここではプログラマブル論理回路1010の外部にある図示しない制御部により再構成の制御が実行されるものとする。
制御部は、次に動作させる回路に対応する回路情報2003−1および回路情報2012−2を外部からRAM2003およびRAM2012に供給するとともに、次に動作させる回路に対応する状態情報2005−2を外部からRAM2005に供給する(ステップS2101)。
つぎに、制御部は、プログラマブル論理回路1010へのクロック信号の供給を停止して処理を停止させる(ステップS2102)。
つぎに、制御部は、次に動作させる回路に対応するFIFO(図示せず)をプログラマブル論理回路1010に接続する(ステップS2103)。
つぎに、制御部は、切替部2006に制御信号を送りD−FlipFlop2002が保持する状態情報をRAM2005に退避させる(ステップS2104)。退避させた状態情報は状態情報2005−1としてRAM2005に記憶される。
つぎに、制御部は、LUT2001への回路情報の書き込みとD−FlipFlop2002への状態情報の書き込みを行なう(ステップS2105)。具体的には、制御部は、切替部2004に制御信号を送る。切替部2004は次に動作させる回路の構成に関する回路情報2003−2をRAM2003からLUT2001へコピーする。また、制御部は、切替部2013に制御信号を送る。切替部2013は、次に動作させる回路の接続関係に関する回路情報2012−2を、RAM2012から接続部2011へコピーする。さらに、制御部は、切替部2006に制御信号を送る。切替部2006は、次に動作させる回路に対応する状態情報2005−2をD−FlipFlop2002上に復元する。
つぎに、制御部は、クロック信号の供給を再開する(ステップS2106)。また、必要があればステップS2104でRAM2012に退避しておいた状態情報2005−1を図示しない外部のメモリに保存しても良い(ステップS2107)。
以上の手順により論理構成の再構成が行われる。なお、ステップS2101については、既にRAM2003、2005および2012に必要なデータが記憶されている場合は省略可能である。以上が、単純なパイプライン処理を行う場合の、プログラマブル論理回路装置1000の基本動作である。
以下に、本発明にかかるプログラマブル論理回路装置並びにプログラマブル論理回路の再構築方法の実施の形態を図面に基づいて詳細に説明する。
(実施の形態1)
実施の形態1にかかるプログラマブル論理回路装置は、プログラマブル論理回路を用いて、分岐処理を伴う目的回路を構築する装置である。より詳細には、本装置は、目的回路を分割して得られる回路ブロックをプログラマブル論理回路上で動的に切り替えることによって構築する装置であり、その基本構成および基本動作は上述したDPGAに従う。特に、本実施の形態1にかかるプログラマブル論理回路装置は、分岐先の回路ブロックへと引き渡されるデータにその回路ブロックの識別子を付与し、その識別子をキーとして、現在、プログラマブル論理回路上に構築されている回路ブロック(以下、現回路ブロックと称する)へと引き渡されるデータを優先的に処理することを特徴としている。なお、以下の説明において、目的回路とは、複数の回路ブロックによって構築される論理回路を指し示し、結果的にプログラマブル論理回路装置によって提供される機能回路である。
図1は、実施の形態1にかかるプログラマブル論理回路装置のブロック図である。図1において、プログラマブル論理回路装置100は、プログラマブル論理回路10、制御部20、入出力データ記憶部30、状態情報記憶部40、および回路ブロック情報記憶部50を備えて構成される。
プログラマブル論理回路10は、DPGAとして提供される集積回路である。回路ブロック情報記憶部50は、プログラマブル論理回路10上に構築する各回路ブロックの回路情報を記憶している。具体的には、プログラマブル論理回路10内の複数の論理ブロックにそれぞれ与えられるLUT情報が回路ブロックごとに整理されて格納されている。
状態情報記憶部40は、プログラマブル論理回路10上に構築する各回路ブロックの状態情報を記憶している。具体的には、プログラマブル論理回路10内の複数の論理ブロックにそれぞれ与えられるフリップフロップの状態が回路ブロックごとに整理されて格納されている。この状態情報記憶部40によって、特定の状態にある回路ブロックをプログラマブル論理回路10上に構築することができる。
入出力データ記憶部30は、プログラマブル論理回路10に入力されるデータと、プログラマブル論理回路10から出力されたデータとを記憶している。換言すれば、入出力データ記憶部30は、パイプライン処理において、回路ブロック間を接続するインターフェースとして機能する。特に、この入出力データ記憶部30は、分岐処理を含まない処理(以下、シーケンス処理という)のために用いられるシーケンス処理用メモリ32に加え、分岐処理のために用いられる分岐処理用メモリ31を備えている。より詳しくは、シーケンス処理用メモリ32は、シーケンス処理を実行する回路ブロックに入力されるデータまたはその回路ブロックから出力されたデータを格納し、分岐処理用メモリ31は、分岐処理を含んだ回路ブロックから出力されたデータを格納する。また、シーケンス処理用メモリ32には、本プログラマブル論理回路装置100の外部から、プログラマブル論理回路10によって実現される目的回路へと入力されるデータと、その目的回路からプログラマブル論理回路装置100の外部へと出力されるデータも格納している。
制御部20は、パイプライン処理を規定した所定のプログラムに従って、(1)プログラマブル論理回路10の動作を停止させる、(2)状態情報記憶部40から状態情報を取り出して状態情報記憶部40に退避する、(3)回路ブロック情報記憶部50および状態情報記憶部40から次に構築すべき回路ブロックの回路ブロック情報および状態情報を取り出して新たな回路ブロックを構築する、(4)分岐処理用メモリまたはシーケンス処理メモリを切り換える、(5)プログラマブル論理回路10の動作を再開する、といった処理を行う。
図2は、入出力データ記憶部30の内部構成と、制御部20の内部構成の一部とを示すブロック図である。分岐処理用メモリ31は、N個のメモリエリア60−1〜60−Nによって論理的に分割されたRAM(Random Access Memory)で構成される。ここで、Nは、目的回路に含まれる分岐処理の数(換言すれば、分岐処理を含む回路ブロックの数)を表わす。シーケンス処理用メモリ32は、FIFO(First-in First-out)メモリ70−1〜70−Mと、外部入力用のFIFOメモリ71と、外部出力用のFIFOメモリ72とによって構成される。ここで、Mは、シーケンス処理を実行する回路ブロックの数である。
図3は、実施の形態1にかかるプログラマブル論理回路装置において、分岐処理を含んだ目的回路のパイプライン処理の例を示す図である。図3において、プログラマブル論理回路装置100は、パイプライン処理の第1段に位置する回路ブロックC1をプログラマブル論理回路10上に構築する。この際、入力メモリ選択部21は、回路ブロックC1の入力ポートに外部入力用のFIFOメモリ71を接続し、出力メモリ選択部23は、回路ブロックC1の出力ポートにシーケンス処理−A用のFIFOメモリ70−1を接続する。これにより、回路ブロックC1は、FIFOメモリ71に記憶されているデータに対して、その回路ブロックC1に特有のシーケンス処理を行ない、その結果をFIFOメモリ70−1へと出力する。
続いて、プログラマブル論理回路装置100は、パイプライン処理の第2段に位置する回路ブロックC2をプログラマブル論理回路10上に構築する。この際、入力メモリ選択部21は、回路ブロックC2の入力ポートにシーケンス処理−A用のFIFOメモリ70−1を接続し、出力メモリ選択部23は、回路ブロックC2の出力ポートに分岐処理−A用のRAMのメモリエリア60−1を接続する。これにより、回路ブロックC2は、FIFOメモリ70−1に記憶されているデータに対して、その回路ブロックC2に特有の分岐処理を行ない、その結果を、分岐先の回路ブロックを示す識別子とともに、RAMのメモリエリア60−1へと出力する。
データ分岐処理データ管理部22は、このRAMのメモリエリア60−1の先頭ポインタに位置するデータと、そのデータに関連付けて記憶された回路ブロック識別子を取得し、その識別子が示す回路ブロックをプログラマブル論理回路10上に構築する。例えば、回路ブロック識別子が回路ブロックC3を示す場合には、回路ブロックC3がプログラマブル論理回路10上に構築される。またこの際、出力メモリ選択部23は、回路ブロックC3の出力ポートにシーケンス処理−B用のFIFOメモリ70−2を接続し、データ分岐処理データ管理部22は、RAMのメモリエリア60−1の先頭ポインタに位置するデータを回路ブロックC3の入力ポートに適当なタイミングで送信する。回路ブロック識別子が回路ブロックC5を示す場合にも、同様にして回路ブロックC5がプログラマブル論理回路10上に構築される。なお、分岐処理の後にその分岐処理を条件とする他の処理(シーケンス処理でも分岐処理でもよい)が実行されてもよい。図3に示す例では、回路ブロックC3への分岐後に、その回路ブロックC3の処理結果を用いた他のシーケンス処理−Cが実行される。
分岐後の少なくとも一つの一連のシーケンス処理が終了すると、プログラマブル論理回路装置100は、つぎに実行されるべき回路ブロックC6をプログラマブル論理回路10上に構築する。この際、入力メモリ選択部21は、回路ブロックC6の入力ポートに分岐後の複数の一連のシーケンス処理の最終段に位置するFIFOメモリ70−3および70−4を接続し、出力メモリ選択部23は、回路ブロックC6の出力ポートに外部出力用のFIFOメモリ72を接続する。これにより、回路ブロックC6は、FIFOメモリ70−3および70−4に記憶されているデータに対して、その回路ブロックC6に特有のシーケンス処理を行ない、その結果を、外部出力用のFIFOメモリ72へと出力する。外部出力用のFIFOメモリ72に格納されるデータは、プログラマブル論理回路装置100に接続される外部装置によって所定のタイミングで取り出される。
このように、制御部20は、基本的には、図3に示したようなパイプライン処理の順に従って回路ブロックを切り替える。しかしながら、プログラマブル論理回路装置100に、外部入力として、ある量以上のデータが入力された後は、回路ブロック間における出力データ数や処理時間の違いによって、入出力データ記憶部30に、次々とデータが蓄積されていく。換言すれば、処理待ち状態にあるデータが多く存在する状態となり、各回路ブロックのスループットが低下する。また、分岐処理の後において、単にその分岐処理の結果が出力された順に回路ブロックの切り替えを判断する場合には、頻繁にその切り替えが生じる。このような回路ブロックの切り替え回数の増加は、プログラマブル論理回路装置100全体のスループットを低下させる。この問題は、多数の分岐先を取り得る分岐処理が存在する場合に特に顕著となる。
そこで、本実施の形態にかかるプログラマブル論理回路装置100の制御部20は、入出力データ記憶部30を監視し、所定数以上のデータを格納しているRAMのメモリエリアやFIFOメモリが優先的にプログラマブル論理回路10に接続されるように、回路ブロックを切り替える。また、分岐処理用メモリ31のデータの処理にあたっては、RAMのメモリエリアに格納されたデータのうち、現回路ブロックと同一のものを分岐先として設定されているデータを優先的に処理する。
図4は、実施の形態1にかかるプログラマブル論理回路装置100の回路ブロック決定処理を示すフローチャートである。プログラマブル論理回路装置100は、所定のタイミングで定期的に、分岐処理用メモリ31のRAMの各メモリエリアとシーケンス処理用メモリ32の各FIFOメモリを監視している(ステップS101)。監視の結果、所定の条件を満たすRAMのメモリエリア、または、FIFOメモリを決定する(ステップS102)。所定の条件を満たすRAMのメモリエリアとは、例えば、(1)所定数以上のデータが格納されているメモリエリア、(2)同一の識別子が割り当てられたデータが所定数以上格納されているメモリエリア、である。また、所定の条件を満たすFIFOメモリとは、例えば、所定数以上のデータが格納されているFIFOメモリである。なお、所定の条件を満たすメモリエリアまたはFIFOメモリがない場合であっても、その条件に最も近いメモリエリアまたはFIFOメモリを決定する。
ステップS102においてFIFOメモリが決定された場合には(ステップS103:Yes)、そのFIFOメモリに入力メモリとして接続される回路ブロックを決定する(ステップS104)。決定された回路ブロックと現回路ブロックとが異なる場合には(ステップS105:Yes)、プログラマブル論理回路10上に構築される回路ブロックを、ステップS104で決定された回路ブロックに切り替える(ステップS106)。決定された回路ブロックと現回路ブロックとが同じ場合には(ステップS105:No)、再度、分岐処理用メモリ31のRAMの各メモリエリアとシーケンス処理用メモリ32の各FIFOメモリを監視する(ステップS101)。ステップS102において、RAMのメモリエリアが決定された場合には(ステップS103:No)、分岐処理用メモリ31に対するデータ処理を実行する(ステップS110)。
図5は、実施の形態1にかかるプログラマブル論理回路装置における、分岐処理用メモリに対するデータ処理を示すフローチャートである。制御部20は、所定の条件を満たすRAMのメモリエリアを決定すると(図4のステップS102)、分岐処理データ管理部22によって、そのメモリエリア内に、現回路ブロックの識別子が存在するか否かを調べる(ステップS201)。図6−1は、メモリエリア内に格納されたデータの例を示す図である。図6−1に示すように、各メモリエリアは、ポインタによって特定されるレコードを有しており、各レコードは、回路ブロックの識別子が格納される識別子フィールドと、分岐処理によって処理されたデータが格納されるデータフィールドと、を有している。なお、図6−1において、ポインタaddr1が先頭ポインタである。
識別子とデータとの対は、分岐処理を含んだ回路ブロックによって生成される。具体的には、分岐処理を含んだ回路ブロックは、分岐処理によって出力されるデータに対し、分岐処理によって決定された分岐先を示す回路ブロック識別子を割り当て、このデータと回路ブロック識別子との組を、空きレコードを有し且つ先頭ポインタに最も近いポインタのレコードに書き込む。
ステップS201において、メモリエリア内に現回路ブロックの識別子が存在する場合、さらに、現回路ブロックに接続された出力メモリ(出力FIFO)に所定量以上の空きがあるか否かを調べる(ステップS202)。所定量以上の空きがある場合には(ステップS202:Yes)、その識別子に対応するデータ、すなわち現回路ブロックの識別子が割り当てられたデータを、メモリエリアから、先頭ポインタに近い順に取り出し、それを現回路ブロックに供給する(ステップS203)。そして、取り出されたデータが属するレコードを削除するとともに、残りのレコードが、先頭ポインタから順に埋まるように、メインメモリを更新する(ステップS204)。図6−2は、図6−1に示すメモリエリアを更新した結果を示す図である。図6−1および図6−2に示す例では、現回路ブロックは、識別子SBで特定される。
一方、ステップS201において、メモリエリア内に現回路ブロックの識別子が存在しない場合には、プログラマブル論理回路10上に構築される回路ブロックを、メモリエリアの先頭ポインタに位置する識別子の回路ブロックに切り替える(ステップS211)。図6−2に示す例では、識別子SEで特定される回路ブロックに切り替えられる。回路ブロックの切り替え後には、再度、ステップS202の判定を行なう。
ステップS202において、所定量以上の空きがない場合には(ステップS202:No)、プログラマブル論理回路10上に構築される回路ブロックを、メモリエリアに格納された他の識別子の回路ブロックに切り替える(ステップS212)。他の識別子としては、例えば、メモリエリア中において、その数が最も多い識別子を選ぶことができる。この回路ブロックの切り替え後には、再度、ステップS202の判定を行なう。
以上に説明したように、実施の形態1にかかるプログラマブル論理回路装置によれば、分岐処理後のデータと分岐先を示す回路ブロックの識別子とを組にして分岐処理用メモリ31に格納し、格納されたデータのうち、現回路ブロックと同一の識別子が割り当てられたデータを優先的に処理する。換言すれば、現回路ブロックの入力ポートに入力されるべきデータを優先的に処理する。これにより、分岐処理に伴う回路ブロックの切替回数を最小限に抑えることができ、プログラマブル論理回路装置100全体のスループットを向上させることができる。
(実施の形態2)
実施の形態2にかかるプログラマブル論理回路装置は、分岐先の回路ブロックへと引き渡されるデータにその回路ブロックの識別子と出力順を示した番号とを付与し、その識別子および番号をキーとして、現回路ブロックへと引き渡されるデータを優先的に処理することを特徴としている。
実施の形態2にかかるプログラマブル論理回路装置の構成は、図1および図2に示した装置と同様である。但し、分岐処理データ管理部の処理は、実施の形態1で説明した分岐処理データ管理部22と一部異なる。具体的には、実施の形態2にかかるプログラマブル論理回路装置の分岐処理データ管理部は、実施の形態1の分岐処理データ管理部22の機能に加え、分岐処理用メモリ31に、データおよび識別子が格納される際に、それらに関連付けられる、データ出力順を示す番号を格納する。なお、データ出力順を示す番号は、分岐処理データ管理部22ではなく分岐処理を実行する回路ブロックによって付与されてもよく、単調増加するシーケンス番号でもよいし、所定の数値範囲を巡回する番号でもよい。
図7は、実施の形態2にかかるプログラマブル論理回路装置において、分岐処理を含んだ目的回路のパイプライン処理の例を示す図である。図7において、分岐処理−A用の第1のRAMのメモリエリア60−1の内容と、回路ブロックC4およびC5から出力されたデータが分岐処理−A用の第2のRAMのメモリエリア60−2に格納される点と、メモリエリア60−2に格納されたデータがそれらデータに関連付けられた番号に基づいて並べ替えられ、その結果がFIFOメモリ70−5に格納される点とが、図3に示したパイプライン処理と異なる。
すなわち、実施の形態2にかかるプログラマブル論理回路装置は、実施の形態1にかかるプログラマブル論理回路装置に対して、分岐処理後のデータの処理順序を保障することを特徴としている。
図8−1は、図7に示すメモリエリア60−1内に格納されたデータの例を示す図である。図8−1に示すように、各メモリエリアは、ポインタによって特定されるレコードを有しており、各レコードは、データの出力順を示す番号フィールドと、回路ブロックの識別子が格納される識別子フィールドと、分岐処理によって処理されたデータが格納されるデータフィールドと、を有している。図8−2は、分岐後の回路ブロックC3で始まる一連のシーケンス処理によって処理されたデータの例を示す図であり、図8−3は、分岐後の回路ブロックC5で始まる一連のシーケンス処理によって処理されたデータの例を示す図である。図8−2および図8−3に示すように、各回路ブロックは、番号とデータとの対を入力し、その処理結果を同様な対の状態で出力することができる。
図8−2および図8−3に示したデータは、分岐処理−A用の第2のRAMのメモリエリア60−2に格納され、番号順に並べ替えられる。図8−4は、その結果(FIFOメモリ70−5に格納される)を示す図である。
以上に説明したように、実施の形態2にかかるプログラマブル論理回路装置によれば、分岐処理後のデータと、データ出力順を示す番号と、分岐先を示す回路ブロックの識別子とを組にして分岐処理用メモリ31に格納し、格納されたデータのうち、現回路ブロックと同一の識別子が割り当てられたデータを優先的に処理するともに、分岐処理後の一連のシーケンス処理の後に、それらデータを上記番号順に並べ替える。これにより、実施の形態1において説明した効果に加え、分岐処理前後においてデータの出力順を保障することができる。
また、分岐処理用メモリ31内の各メモリエリアのレコードに、さらに分岐処理の階層番号が格納される階層フィールドを追加しても良い。これにより、分岐処理後の一連のシーケンス処理内において、再度分岐処理が生じる場合であっても、データ出力順を保障することができる。なお、この場合、階層番号は、分岐処理データ管理部21によって生成される。
(実施の形態3)
実施の形態3にかかるプログラマブル論理回路装置は、実施の形態2にかかるプログラマブル論理回路装置の変形例であり、分岐先の回路ブロックへと引き渡されるデータとデータの出力順を示した番号とからなる組を、分岐先の回路ブロック用のFIFOメモリに一旦記憶することを特徴としている。
図9は、実施の形態3にかかるプログラマブル論理回路装置において、分岐処理を含んだ目的回路のパイプライン処理の例を示す図である。図9において、図7と異なる点は、分岐処理−A用のRAMのメモリエリア60−1に格納されたデータのうち、分岐先として回路ブロックC3に関連付けられたデータ(すなわち、データとデータ出力順との組)を格納するFIFOメモリ70−12が、分岐後に実行される回路ブロックC3の入力ポートに接続され、分岐処理−A用のRAMのメモリエリア60−1に格納されたデータのうち、分岐先として回路ブロックC5に関連付けられたデータ(すなわち、データとデータ出力順との組)を格納するFIFOメモリ70−14が、分岐後に実行される回路ブロックC5の入力ポートに接続される点である。図9中、FIFO70−13の機能は、図7に示したFIFO70−2と同様である。
よって、例えば、図9に示すメモリエリア60−1内に、図8−1に示したデータが格納されている場合、FIFOメモリ70−12には、図10−1に示すデータが格納され、FIFO70−14には、図10−2に示すデータが格納される。すなわち、回路ブロックC3は、図10−1に示すデータを入力し、FIFO70−13を介して、回路ブロックC4から図8−2に示したようなデータが出力される。また、回路ブロックC5は、図10−2に示すデータを入力し、図8−3に示したようなデータを出力する。これら出力されたデータは、図7と同様に、分岐処理−A用の第2のRAMのメモリエリア60−2に格納され、データ出力順に並べ替えられた結果がFIFOメモリ70−5に格納される。
従って、この実施の形態3においても実施の形態2と同様な効果を享受することができる。
本発明は、上述したような特定の実施形態に限定されるものではなく、さらなる効果や変形例は、当業者によって容易に導き出すことができる。すなわち、本発明にかかる実施の形態は、添付の特許請求の範囲およびその均等物にかかる発明の要旨を逸脱しない範囲で様々な変更が可能である。
以上のように、本発明にかかるプログラマブル論理回路装置およびプログラマブル論理回路の再構築方法は、多くの分岐処理を有する目的回路をプログラマブル論理回路上に動的に再構築するのに有用であり、特に、データ通信処理や画像圧縮処理を実行する回路を提供するのに適している。
実施の形態1にかかるプログラマブル論理回路装置のブロック図である。 実施の形態1にかかるプログラマブル論理回路装置において、入出力データ記憶部の内部構成と、制御部の内部構成の一部とを示すブロック図である。 実施の形態1にかかるプログラマブル論理回路装置において、分岐処理を含んだ目的回路のパイプライン処理の例を示す図である。 実施の形態1にかかるプログラマブル論理回路装置の回路ブロック決定処理を示すフローチャートである。 実施の形態1にかかるプログラマブル論理回路装置における、分岐処理用メモリに対するデータ処理を示すフローチャートである。 メモリエリア内に格納されたデータの例を示す図である。 図6−1のメモリエリアを更新した結果を示す図である。 実施の形態2にかかるプログラマブル論理回路装置において、分岐処理を含んだ目的回路のパイプライン処理の例を示す図である。 図7に示すメモリエリア内に格納されたデータの例を示す図である。 分岐後の回路ブロックC3で始まる一連のシーケンス処理によって処理されたデータの例を示す図である。 分岐後の回路ブロックC5で始まる一連のシーケンス処理によって処理されたデータの例を示す図である。 番号順に並べ替えられたデータの例を示す図である。 実施の形態3にかかるプログラマブル論理回路装置において、分岐処理を含んだ目的回路のパイプライン処理の例を示す図である。 分岐後の回路ブロックC3に入力されるデータの例を示す図である。 分岐後の回路ブロックC5に入力されるデータの例を示す図である。 プログラマブル論理回路(DPGA)を機能的に示したブロック図である。 回路Aとして動作するプログラマブル論理回路装置を概略的に示したブロック図である。 回路Bとして動作するプログラマブル論理回路装置を概略的に示したブロック図である。 回路Cとして動作するプログラマブル論理回路装置を概略的に示したブロック図である。 回路Dとして動作するプログラマブル論理回路装置を概略的に示したブロック図である。 プログラマブル論理回路の内部構成を示すブロック図である。 図16に示したプログラマブル論理回路の動作中に再構成を行う手順を示すフローチャートである。
符号の説明
10,1010 プログラマブル論理回路
20 制御部
21 入力メモリ選択部
22 分岐処理データ管理部
23 出力メモリ選択部
30 入出力データ記憶部
31 分岐処理用メモリ
32 シーケンス処理用メモリ
40 状態情報記憶部
50 回路ブロック情報記憶部
100,1000 プログラマブル論理回路装置
1100 専用回路群
1111〜1115 FIFOメモリ
1020 FIFO切替部
2000 単位ブロック(回路ブロック)
2010 単位ブロック間接続部
2001 LUT
2002 D−FlipFlop
2003,2005 RAM
2004,2006,2013 切替部
2011 接続部
2012 RAM
2003−1,2012−2 回路情報
2005−1,2005−2 状態情報

Claims (10)

  1. 分岐処理を実行する分岐回路ブロックと、該分岐回路ブロックによって得られるデータに対して複数の処理を選択的に実行する複数の子回路ブロックと、を含む複数の回路ブロックを、動的に切り替えて動作させることが可能なプログラマブル論理回路と、
    前記分岐回路ブロックによって得られるデータと該データの出力先となる子回路ブロックの識別子とを対応付けて記憶する記憶部と、
    前記プログラマブル論理回路で前記子回路ブロックのいずれかが動作している場合には、前記記憶部に記憶されたデータのうち、当該子回路ブロックの識別子と同じ識別子が対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させる制御部と、
    を備えるプログラマブル論理回路装置。
  2. 前記記億部は、さらに、前記データの出力順を示す番号を記憶し、
    前記制御部は、前記番号に基づいて、前記分岐回路ブロックによる分岐処理後に実行される他の子回路ブロックまたは他の分岐回路ブロックによる処理を経由したデータを並べ替えることを特徴とする請求項1に記載のプログラマブル論理回路装置。
  3. 前記制御部は、前記記憶部に記憶された識別子のうちに、前記プログラマブル論理回路で動作している子回路ブロックの識別子がない場合に、該記憶部の所定の位置に記憶された識別子によって示される子回路ブロックを、前記プログラマブル論理回路で動作させることを特徴とする請求項1または2に記載のプログラマブル論理回路装置。
  4. 前記制御部は、前記記憶部を監視し、前記データの数が所定数を超えた場合に、前記記憶部に記憶された識別子のうちの前記プログラマブル論理回路で動作している子回路ブロックの識別子に対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させることを特徴とする請求項1〜3のいずれか一つに記載のプログラマブル論理回路装置。
  5. 前記制御部は、前記記憶部を監視し、前記データのうちの同一の識別子によって対応付けられたデータの数が所定数を超えた場合に、前記記憶部に記憶された識別子のうちの前記プログラマブル論理回路で動作している子回路ブロックの識別子に対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させることを特徴とする請求項1〜3のいずれか一つに記載のプログラマブル論理回路装置。
  6. 分岐処理を実行する分岐回路ブロックと、該分岐回路ブロックによって得られるデータに対して複数の処理を選択的に実行する複数の子回路ブロックと、を含む複数の回路ブロックを、動的に切り替えて動作させることが可能なプログラマブル論理回路の再構築方法であって、
    前記分岐回路ブロックによって得られるデータと該データの出力先となる子回路ブロックの識別子とを対応付けて記憶部に格納し、
    前記プログラマブル論理回路で前記子回路ブロックのいずれかが動作している場合には、前記記憶部に格納されたデータのうち、当該子回路ブロックの識別子と同じ識別子が対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させることを特徴とするプログラマブル論理回路の再構築方法。
  7. 前記データの出力順を示す番号に基づいて、前記分岐回路ブロックによる分岐処理後に実行される他の子回路ブロックまたは他の分岐回路ブロックによる処理を経由したデータを並べ替えることを特徴とする請求項6に記載のプログラマブル論理回路の再構築方法。
  8. 格納された識別子のうちに、前記プログラマブル論理回路で動作している子回路ブロックの識別子がない場合に、前記記憶部の所定の位置に格納された識別子によって示される回路ブロックを、前記プログラマブル論理回路で動作させることを特徴とする請求項6または7に記載のプログラマブル論理回路の再構築方法。
  9. 前記記憶部を監視し、前記データの数が所定数を超えた場合に、前記記憶部に格納された識別子のうちの前記プログラマブル論理回路で動作している子回路ブロックの識別子に対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させることを特徴とする請求項6〜8のいずれか一つに記載のプログラマブル論理回路の再構築方法。
  10. 前記記憶部を監視し、前記データのうちの同一の識別子によって対応付けられたデータの数が所定数を超えた場合に、前記記憶部に格納された識別子のうちの前記プログラマブル論理回路で動作している子回路ブロックの識別子に対応付けられたデータを、他の子回路ブロックの識別子が対応付けられたデータよりも優先して前記プログラマブル論理回路に処理させることを特徴とする請求項6〜8のいずれか一つに記載のプログラマブル論理回路の再構築方法。
JP2004211480A 2004-07-20 2004-07-20 プログラマブル論理回路装置およびプログラマブル論理回路の再構築方法 Expired - Fee Related JP3967737B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004211480A JP3967737B2 (ja) 2004-07-20 2004-07-20 プログラマブル論理回路装置およびプログラマブル論理回路の再構築方法
US11/081,589 US7173451B2 (en) 2004-07-20 2005-03-17 Programmable logic circuit apparatus and programmable logic circuit reconfiguration method
CN200510066820.1A CN1725642A (zh) 2004-07-20 2005-04-26 可编程逻辑电路装置和可编程逻辑电路重配置方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004211480A JP3967737B2 (ja) 2004-07-20 2004-07-20 プログラマブル論理回路装置およびプログラマブル論理回路の再構築方法

Publications (2)

Publication Number Publication Date
JP2006033579A JP2006033579A (ja) 2006-02-02
JP3967737B2 true JP3967737B2 (ja) 2007-08-29

Family

ID=35656462

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004211480A Expired - Fee Related JP3967737B2 (ja) 2004-07-20 2004-07-20 プログラマブル論理回路装置およびプログラマブル論理回路の再構築方法

Country Status (3)

Country Link
US (1) US7173451B2 (ja)
JP (1) JP3967737B2 (ja)
CN (1) CN1725642A (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060256428A1 (en) * 2005-05-16 2006-11-16 Lake Shore Cryotronics, Inc. Long wave pass infrared filter based on porous semiconductor material and the method of manufacturing the same
JP4372068B2 (ja) * 2005-09-06 2009-11-25 株式会社東芝 プログラマブルゲートアレイ装置及び回路切替方法
JP4997821B2 (ja) * 2006-05-10 2012-08-08 富士ゼロックス株式会社 データ処理装置及びそのプログラム
JP4853185B2 (ja) * 2006-08-29 2012-01-11 富士ゼロックス株式会社 情報処理システム
US7589520B2 (en) * 2006-12-05 2009-09-15 Delta Design, Inc. Soak profiling
US8407633B2 (en) 2009-10-26 2013-03-26 International Business Machines Corporation Dynamically reconfigurable self-monitoring circuit
CN104617944B (zh) * 2010-06-24 2018-03-16 太阳诱电株式会社 半导体装置
KR20130006942A (ko) * 2011-06-27 2013-01-18 삼성전자주식회사 재구성 가능한 논리 장치
CN104737450B (zh) 2012-10-28 2018-01-19 太阳诱电株式会社 可再构成的半导体装置
JP6598432B2 (ja) * 2014-06-24 2019-10-30 キヤノン株式会社 画像処理装置、その制御方法およびプログラム
JP6183980B1 (ja) * 2016-12-02 2017-08-23 国立大学法人東京工業大学 ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6034538A (en) 1998-01-21 2000-03-07 Lucent Technologies Inc. Virtual logic system for reconfigurable hardware
JP2001202236A (ja) 2000-01-20 2001-07-27 Fuji Xerox Co Ltd プログラマブル論理回路装置によるデータ処理方法、プログラマブル論理回路装置、情報処理システム、プログラマブル論理回路装置への回路再構成方法
US6924663B2 (en) * 2001-12-28 2005-08-02 Fujitsu Limited Programmable logic device with ferroelectric configuration memories
US7581081B2 (en) * 2003-03-31 2009-08-25 Stretch, Inc. Systems and methods for software extensible multi-processing

Also Published As

Publication number Publication date
US20060017459A1 (en) 2006-01-26
JP2006033579A (ja) 2006-02-02
CN1725642A (zh) 2006-01-25
US7173451B2 (en) 2007-02-06

Similar Documents

Publication Publication Date Title
US7173451B2 (en) Programmable logic circuit apparatus and programmable logic circuit reconfiguration method
JP3444216B2 (ja) プログラマブルデバイス
US8799623B2 (en) Hierarchical reconfigurable computer architecture
US7482836B2 (en) High bandwidth reconfigurable on-chip network for reconfigurable systems
US7199608B1 (en) Programmable logic device and method of configuration
KR100960518B1 (ko) 데이터 처리 시스템 및 그 제어방법
JPH086796A (ja) ダウンロード方法、そのネットワークシステム、及びデータファイル更新方法
CN103581008A (zh) 路由器及其软件升级方法
JPH09212371A (ja) レジスタ退避及び復元システム
US20160321075A1 (en) Central Processing Unit With DSP Engine And Enhanced Context Switch Capabilities
JP2005165961A (ja) 動的再構成論理回路装置、割込制御方法、及び、半導体集積回路
Gericota et al. Run-time management of logic resources on reconfigurable systems
WO2007114059A1 (ja) データ処理装置
JP4978006B2 (ja) データ処理装置及びデータ処理方法
JP4213044B2 (ja) Lutベースのリコンフィギュラブル・ロジック・アーキテクチャのためのコンフィギュレーション・メモリの実装
JP2007522571A5 (ja)
JPH11312120A (ja) 記憶装置
JP2007522571A (ja) 任意のアルゴリズムを並列計算するための再構成可能なスイッチング装置
US7432735B2 (en) Programmable gate array apparatus and method for switching circuits
KR20070094843A (ko) 프로세서
JP2010205108A (ja) 情報処理装置および情報処理プログラム
JP2008152409A (ja) 半導体集積回路
JP6111680B2 (ja) 信号処理装置およびプログラマブルロジックデバイスの構成方法
CN108984602A (zh) 一种数据库控制方法和数据库系统
JPH1139171A (ja) マルチタスク処理装置、マルチタスク処理制御方法及び制御プログラム記憶媒体

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070521

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070529

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100608

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100608

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110608

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees