(57)【要約】【課題】ＲＬＡ（１０８）と、ＲＬＡをサイクルごとに再プログラミングするためのプログラマ（１１２）とを含む、再構成可能な論理アレイ（ＲＬＡ）システム１０４を提供すること。【解決手段】ＲＬＡに含まれる量よりも多くの論理を必要とする機能（Ｆ）は、複数の機能ブロック（ＦＢ１、ＦＢ２、ＦＢ３）に区分される。プログラマは、ＲＬＡを、２つのストレージ領域ＳＲ１とＳＲ２の間に配置された機能領域ＦＲに区分するソフトウェア（１４４）を含む。その後プログラマは、機能ブロックがストレージ領域間で交互の方向に処理するように、機能の機能ブロックを順番に使用して機能領域をプログラミングする。プログラマが次の機能ブロックを使用して機能領域を再構成し、次の機能ブロックの出力を受信するためにストレージ領域のうちの１つを再構成している間、現在の機能ブロックから次の機能ブロックへ渡されるデータは、他方のストレージ領域内に保持される。【選択図】図７
2007510325.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）第１のストレージ領域と、
（ｂ）第２のストレージ領域と、
（ｃ）前記第１および第２のストレージ領域外部に配置された機能領域が画定された、再構成可能な論理アレイと、
（ｄ）前記再構成可能な論理アレイと通信し、複数の機能ブロックのうちの連続するいくつかの出力が、前記第１および第２のストレージ領域に交互に格納されるように、サイクルごとに複数の機能ブロックのうちのいくつかを使用して、前記機能領域をプログラミングするために動作可能に構成された、プログラマと、
を備える、それぞれが出力データを有する複数の機能ブロックを備えた論理機能を処理するためのシステム。
【請求項２】
前記第１および第２のストレージ領域が前記再構成可能な論理アレイ内に配置され、前記プログラマが前記第１および第２のストレージ領域をプログラミングするために動作可能に構成された、請求項１に記載のシステム。
【請求項３】
前記機能領域が、第１の縁部と、前記第１の縁部から離れて配置された第２の縁部とを含み、前記第１のストレージ領域は前記第１の縁部に隣接して配置され、前記第２のストレージ領域は前記第２の縁部に隣接して配置された、請求項２に記載のシステム。
【請求項４】
第１の固定メモリと第２の固定メモリとをさらに備え、前記第１のストレージ領域が前記第１の固定メモリ内に配置され、前記第２のストレージ領域が前記第２の固定メモリ内に配置された、請求項１に記載のシステム。
【請求項５】
前記プログラマが、前記複数の機能ブロックのうちの連続するいくつかが、第１の方向と、前記第１の方向とほぼ反対の第２の方向とで、交互に処理するように、前記複数の機能ブロックのうちのいくつかを使用して前記機能領域をプログラミングするために動作可能に構成された、請求項１に記載のシステム。
【請求項６】
前記機能領域が、前記第１および第２の方向で対称的に処理する複数のプログラマブル論理要素を含む、請求項５に記載のシステム。
【請求項７】
前記システムが互いに同時に複数の機能を処理し、前記複数の機能それぞれが複数の機能ブロックを有し、前記プログラマが、前記複数の機能それぞれの機能ブロックを互いに同時に使用して、前記再構成可能な論理アレイをプログラミングするために動作可能に構成された、請求項１に記載のシステム。
【請求項８】
前記プログラマが、前記複数の機能のうちの第１の機能の第１の機能ブロックと、前記複数の機能のうちの第２の機能の第２の機能ブロックとを使用して、前記第１および第２の機能ブロックが反対の方向に処理するように、前記機能領域をプログラミングする、請求項７に記載のシステム。
【請求項９】
前記第１および第２の機能ブロックが第１および第２のストレージ領域を共有する、請求項８に記載のシステム。
【請求項１０】
前記再構成可能な論理アレイが、それぞれが前記複数の機能のうちの対応する機能に対応する複数の機能領域を含む、請求項７に記載のシステム。
【請求項１１】
前記複数の機能領域それぞれが第１の縁部および第２の縁部を有し、前記再構成可能な論理アレイが、それぞれが前記第１および第２の縁部のうちの対応する１つに隣接して配置された複数のストレージ領域を含む、請求項１０に記載のシステム。
【請求項１２】
前記再構成可能な論理アレイが第１の機能領域および第２の機能領域を含み、前記プログラマが、互いに対して交互に前記第１および第２の機能領域をプログラミングするために動作可能に構成された、請求項１に記載のシステム。
【請求項１３】
複数のプログラマブル論理要素であって、前記プログラマブル論理要素のうちの少なくとも一部が、機能のＭ番目の機能ブロックを使用して構成され、前記Ｍ番目の機能ブロックが出力データおよび第１の縁部を有する、複数のプログラマブル論理要素と、
前記第１の縁部に隣接して配置され、前記出力データを含む、第１のストレージ領域と、
を備える、機能を処理するための再構成可能な論理アレイ。
【請求項１４】
前記Ｍ番目の機能ブロックが、前記第１の縁部から離れて配置された第２の縁部を有し、前記再構成可能な論理アレイが、「Ｍ−１」機能ブロックの出力データを含む第２のストレージ領域をさらに備える、請求項１３に記載の再構成可能な論理アレイ。
【請求項１５】
前記複数のプログラマブル論理要素の第１の部分が第１の機能の第１の機能ブロックで構成され、前記複数のプログラマブル論理要素の第２の部分が第２の機能の第２の機能ブロックで構成される、請求項１３に記載の再構成可能な論理アレイ。
【請求項１６】
前記第１の機能ブロックが第１の方向で処理するように構成され、前記第２の機能ブロックが前記第１の方向とは反対の第２の方向で処理するように構成される、請求項１５に記載の再構成可能な論理アレイ。
【請求項１７】
前記再構成可能な論理アレイが、前記第１および第２の機能それぞれに対応する第１のストレージ領域をさらに備える、請求項１５に記載の再構成可能な論理アレイ。
【請求項１８】
前記第１および第２の機能が前記第１のストレージ領域を共有する、請求項１５に記載の再構成可能な論理アレイ。
【請求項１９】
前記複数のプログラマブル論理要素の第１の部分が、前記機能のＭ番目の機能ブロックで構成され、前記複数のプログラマブル論理要素の第２の部分が、前記機能の「Ｍ＋１」機能ブロックで構成される、請求項１３に記載の再構成可能な論理アレイ。
【請求項２０】
（ａ）複数の機能ブロックのうちの第１のブロックが第１の方向で処理するように、複数の機能ブロックのうちの第１のブロックを使用して再構成可能な論理アレイをプログラミングするステップと、
（ｂ）前記複数の機能ブロックのうちの前記第１のブロックを前記第１の方向で処理するステップと、
（ｃ）前記複数の機能ブロックのうちの第２のブロックが、前記第１の方向とほぼ反対の第２の方向で処理するように、前記複数の機能ブロックのうちの第２のブロックを使用して前記再構成可能な論理アレイをプログラミングするステップと、
（ｄ）前記複数の機能ブロックのうちの前記第２のブロックを前記第２の方向で処理するステップと、
を有する、複数の機能ブロックに区分された機能を処理する方法。
【請求項２１】
前記再構成可能な論理アレイが機能領域を含み、ステップ（ａ）が前記機能領域をプログラミングするステップを含み、ステップ（ｃ）が前記機能領域を再プログラミングするステップを含む、請求項２０に記載の方法。
【請求項２２】
前記再構成可能な論理アレイが第１の機能領域および第２の機能領域を含み、ステップ（ａ）が前記第１の機能領域をプログラミングするステップを含み、ステップ（ｃ）が前記第２の機能領域をプログラミングするステップを含む、請求項２０に記載の方法。
【請求項２３】
前記複数の機能ブロックのうちの前記第１の機能ブロックが出力データを有し、前記方法が、ステップ（ｂ）に先立って、前記再構成可能な論理アレイ内の第１のストレージ領域をプログラミングするステップをさらに有し、前記第１のストレージ領域が前記出力データを含むためのものである、請求項２０に記載の方法。
【請求項２４】
前記複数の機能ブロックのうちの前記第２のブロックが出力データを有し、前記方法が、ステップ（ｄ）に先立って、前記複数の機能ブロックのうちの前記第２のブロックの前記出力データを含むために、前記再構成可能な論理アレイ内の第２のストレージ領域をプログラミングするステップをさらに有する、請求項２３に記載の方法。
【請求項２５】
ステップ（ｂ）および（ｃ）が互いに同時に実行される、請求項２０に記載の方法。
【請求項２６】
（ｉ）再構成可能な論理アレイと、
（ｉｉ）複数の機能ブロックのうちの第１のブロックが第１の方向で処理するように、複数の機能ブロックのうちの第１のブロックを使用して再構成可能な論理アレイをプログラミングするため、および、複数の機能ブロックのうちの第２のブロックが、前記第１の方向とほぼ反対の第２の方向で処理するように、前記複数の機能ブロックのうちの第２のブロックを使用して前記再構成可能な論理アレイをプログラミングするために、動作可能に構成されたプログラマと、
を備える、
（ａ）複数の機能ブロックに区分された機能を処理するためのシステム、
を備える、集積回路チップ。
【請求項２７】
前記複数の機能ブロックのうちの前記第１のブロックが第１の出力データを有し、前記複数の機能ブロックのうちの前記第２のブロックが第２の出力データを有し、前記プログラマが、前記第１の出力データを格納するために第１のストレージ領域を使用して前記再構成可能な論理アレイをプログラミングするため、および前記第２の出力データを格納するために第２のストレージ領域を使用して前記再構成可能な論理アレイをプログラミングするために、動作可能に構成される、請求項２６に記載の集積回路チップ。
【請求項２８】
前記再構成可能な論理アレイが複数のプログラマブル論理要素を含み、そのうちの少なくとも一部が前記第１および第２の方向で機能的に対称である、請求項２６に記載の集積回路チップ。
【請求項２９】
前記再構成可能な論理アレイが機能領域を含み、前記プログラマが、前記複数の機能ブロックのうちのいくつかを互いに連続して使用して、前記機能領域をプログラミングするために動作可能に構成される、請求項２６に記載の集積回路チップ。
【請求項３０】
隣接する機能ブロックの連続する各ペアが、前記再構成可能な論理アレイに対して反対の方向で処理する、請求項２９に記載の集積回路チップ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、論理装置の分野に関する。とりわけ、本発明は、プログラマブル論理アレイにおいて機能を動的に実行するためのシステムおよび方法を対象とする。
【背景技術】
【０００２】
近年、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などのプログラマブル論理装置は、各サイクル中に論理機能またはその一部を実行するために、サイクルごとに動的に再構成可能な装置に発展してきた。こうした再構成可能なＦＰＧＡ（ＲＦＰＧＡ）の速度上昇に伴い、今やＲＦＰＧＡは、特定用途向け集積回路（ＡＳＩＣ）および他の集積回路（ＩＣ）での使用に好適なコンポーネントとみなされている。たとえば、所望の出力を生成するためにある種のデータを反復的に操作する必要がある用途向けのＩＣは、ＲＦＰＧＡの利用によって恩恵が受けられるＩＣである。こうした用途の例には、とりわけ、通信プロトコル処理およびイメージ処理が含まれる。
【０００３】
そうでなければ固定論理によって実行されることになる１つまたは複数の機能を実行するためにＲＦＰＧＡを使用することの利点は、しばしば、これら機能を実行するのに必要なチップ面積の減少である。たとえばある機能を、１つのブロックの出力が次のブロックの入力となっていくようにまとめて連鎖された、１０の機能ブロックに区分することができる。従来の固定論理を使用すると、通常はこれら１０の機能ブロックすべてが、適切なデータ・フロー・シーケンスでチップ上に互いに隣接して配置されることになる。しかしながら、ＲＦＰＧＡソリューションを使用すると、これら１０の機能ブロックを、この１０の機能ブロックそれぞれを適切なシーケンスで処理するように周期的に再構成された単一のＲＦＰＧＡに置き換えることができる。
【０００４】
一般に、１０の機能ブロックの処理機能は、以下のように進行する。ＲＦＰＧＡは第１の機能ブロック用に構成され、この機能の入力データがＲＦＰＧＡ、すなわち第１の機能ブロックに入る。次に、第１の機能ブロックの出力がブロックを出て、ＲＦＰＧＡ内に作成されたあるストレージ要素に格納される。これらのストレージ要素は、機能の第２の機能ブロックへの入力として使用するために、ストレージ要素以外のＲＦＰＧＡの部分を再構成することによって作成される第１の機能ブロックの出力を格納する。ＲＦＰＧＡの部分が第２の機能ブロック用に再構成されるのと同時に、ＲＦＰＧＡの他の部分が、第３の機能ブロック用の入力でもある第２の機能ブロックの出力を格納するためのストレージ要素として再構成される。このプロセスは、第３から第９の機能ブロックまで繰り返される。最後の第１０機能ブロック用のプロセスはやや異なり、第１０機能ブロックの出力がＲＦＰＧＡの外部Ｉ／Ｏ要素に渡され、この出力がＩＣの他の部分に渡される。
【０００５】
ＲＦＰＧＡを使用して複数の機能ブロックを連続して処理することは概念上容易であるが、従来のＲＦＰＧＡ再構成技法では、所与の機能を実行するために必要なＲＦＰＧＡの様々な構成をそれぞれ最適化することが困難である。しかしながら、ＩＣ設計の最適化は重要である。ＲＦＰＧＡの再構成を最適化する際のこうした困難さは、従来の技法が、１つの論理構成、すなわち機能ブロックから、次の論理構成へと渡されるデータを処理する方法に大きく起因する。
【０００６】
図１は、３つまたはそれ以上の機能ブロックからなる機能の、Ｍ番目の機能ブロック用に構成された、ＲＦＰＧＡ  ２０のそれぞれの構成を示す。従来と同様に、現在の機能ブロック、すなわち所与の時間にＲＦＰＧＡ  ２０で構成された機能ブロックは、Ｍ番目の機能ブロックと呼ばれることになる。したがって、Ｍ番目の機能ブロックが第２の機能ブロックである場合、第１の機能ブロックは「Ｍ−１」番目の機能ブロックと呼ばれ、第３の機能ブロックは「Ｍ＋１」番目の機能ブロックと呼ばれ、第４の機能ブロックは「Ｍ＋２」番目の機能と呼ばれる、という具合である。第１および最後の機能ブロック以外の各機能ブロックは、「Ｍ−１」の機能要素すなわち、Ｍ番目の機能ブロックへの入力である「Ｍ−１」の機能ブロックの出力と、Ｍ番目の機能ブロックの出力を含む「Ｍ」のストレージ要素とに関連付けられることになる。第１の機能ブロックへの入力がＲＦＰＧＡ  ２０の外部に配置された回路（図示せず）からのものであるため、第１の機能ブロックはいかなる「Ｍ−１」ストレージ要素も必要とせず、最後の機能ブロックの出力がＲＦＰＧＡから出るものであるため、最後の機能ブロックはいかなる「Ｍ」ストレージ要素も必要としない。同じ命名法が、再構成および処理の進行に従って順番に機能ブロックの循環にも適用される。たとえば、基準サイクルが「Ｍ」サイクルと表された場合、直前のサイクルは「Ｍ−１」サイクルであり、次のサイクルは「Ｍ＋１」サイクルである。
【０００７】
ＲＦＰＧＡ  ２０は、一般に、相互接続リソース３２を介して互いに相互接続された構成可能論理ブロック（ＣＬＢ）  ２８、または他の（再）プログラマブル論理要素のアレイを含む。ＣＬＢ  ２８は、所望の機能の各機能ブロックの論理をインプリメントするために使用される、たとえば論理ゲートなどの再構成可能機能要素と、１つの機能ブロックから次の機能ブロックへと渡されるデータを格納するために必要なストレージ要素である。機能要素としてプログラミングされた各ＣＬＢ  ２８は「Ｆ」を含む四角形として示され、対応する「Ｍ−１」ストレージ要素としてプログラミングされた各ＣＬＢは「Ｍ−１」を含む四角形として示され、対応する「Ｍ」ストレージ要素としてプログラミングされた各ＣＬＢは「Ｍ」を含む四角形として示される。ＲＦＰＧＡ  ２０は、ＲＦＰＧＡとたとえばメモリ、プロセッサ、通信、または他の回路などの他の回路（図示せず）との間の通信を提供するＩ／Ｏセル２４と、電気的に通信している。
【０００８】
図１に示されるように、従来のＲＦＰＧＡプログラミング技法は、結果として第１の機能ブロックのストレージ要素Ｍ−１、Ｍを、機能要素を介してローカルに論理パスを最適化する場所でＣＬＢ  ２８のアレイを横切って分散させることになる。しかしながらこの方式に伴う問題点は、機能ブロックおよびストレージ要素の各セットを備えたＲＦＰＧＡ  ２０の再構成（プログラミング）の責務を負うプログラマ３６が、第２の（および後続の）機能ブロックおよび対応するストレージ要素を備えたＲＦＰＧＡの再プログラミングへと進んだ場合に出現し始める。ＲＦＰＧＡ  ２０を再プログラミングする場合、プログラマ３６は、次の機能ブロックへの入力である格納されたデータに干渉しないように、分散されたストレージ要素Ｍの場所を考慮に入れなければならない。機能ブロックおよびそのストレージ要素を最適化するプロセスは、以前の機能ブロックからのストレージ要素の分散性によって妨げられる。
【０００９】
ストレージ要素Ｍ−１、Ｍの分散性は、ＲＦＰＧＡ  ２０によって処理される機能の全体性能およびサイクル時間も低下させる。ストレージ要素から最悪の場合の次の機能ブロックへのエントリ・ポイントまでの遅延長さが、ＲＦＰＧＡ  ２０のサイクル時間における制限要因となる。さらに１サイクルあたりのパス遅延に応じて、サイクルによってサイクル時間が異なることにもなる。これにより、最悪のサイクル周波数が機能全体の処理速度を決定してしまう可能性がある。この問題は、機能のオペレーティング周波数を決定するためのストレージ要素の配置に直接左右される。
【００１０】
プログラマが高速サイクル時間を容易にするために適切な場所にストレージ要素を配置できる能力は、現在の機能ブロック構成要件のみではなく、すべての後続の機能ブロック構成要件にも左右されることになる。すなわち、現在の機能ブロック構成に関するストレージ要素の配置が次の機能ブロック構成に関するストレージ要素の配置に影響を与え、これがその次の機能ブロック構成に関するストレージ要素の配置に影響を与える、と言う具合である。これにより、プログラマが各サイクルの最大サイクル時間および全体のサイクル時間を見つけなければならないという、可能性のあるオプションの組み合わせ的爆発を生み出す。複雑な機能ブロックの場合、従来のＲＦＰＧＡプログラマは、数時間をかけて１つの機能ブロック構成またはサイクルに実行可能なソリューションを生成することになる可能性がある。複数の機能ブロック構成に実行可能なソリューションを達成するには法外な時間が必要になることは、容易にわかるであろう。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
したがって、効率の良い方法で機能ブロックを構成することが求められている。
【課題を解決するための手段】
【００１２】
一態様では、本発明は、それぞれが出力データを有する複数の機能ブロックを備えた論理機能を処理するためのシステムを対象とする。このシステムは、第１のストレージ領域、第２のストレージ領域、ならびに、第１および第２のストレージ領域外部に配置された機能領域を画定している再構成可能な論理アレイを備える。プログラマは、再構成可能な論理アレイと通信しており、複数の機能ブロックのうちの連続するいくつかの出力が、第１および第２のストレージ領域内に交互に格納されるように、サイクルごとに複数の機能ブロックのうちのいくつかを使用して機能領域をプログラミングするために動作可能に構成される。
【００１３】
他の態様では、本発明は、複数の機能ブロックに区分された機能を処理する方法を対象とする。この方法は、複数の機能ブロックのうちの第１のブロックを使用して、複数の機能ブロックのうちの第１のブロックが第１の方向で処理するように、再構成可能な論理アレイをプログラミングするステップを有する。その後、複数の機能ブロックのうちの第１のブロックは第１の方向で処理される。再構成可能な論理アレイは、複数の機能ブロックのうちの第２のブロックを使用して、複数の機能ブロックのうちの第２のブロックが、第１の方向とほぼ反対の第２の方向で処理するようにプログラミングされる。複数の機能ブロックのうちの第２のブロックは、第２の方向で処理される。
【００１４】
本発明を例示するために、図面には現時点で好ましい本発明の形が示されている。しかしながら、本発明が、図面に示された精密な配置構成および手段に限定されるものでないことを理解されたい。
【発明を実施するための最良の形態】
【００１５】
次に図面を参照すると、図２は、本発明に従った全体として数字１００で識別される集積回路（ＩＣ）チップを示す図である。チップ１００は、とりわけ論理チップ、特定用途向けＩＣ（ＡＳＩＣ）チップ、またはマイクロプロセッサ・チップなどの、任意のタイプのＩＣチップとすることができる。チップ１００は、ＲＬＡ  １０８とＲＬＡの論理構造を再構成するためのプログラマ１１２とを含む、少なくとも１つの再構成可能な論理アレイ（ＲＬＡ）システム１０４を含む。ＲＬＡ  １０８は、ＲＬＡによって収容可能なサイズを有する任意の論理コーン（ｃｏｎｅ）をインプリメントするように周期的に再構成可能な、たとえばフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などの任意の好適な論理アレイとすることができる。図には示されていないが、ＲＬＡ  １０８は、図１に示された従来技術のＲＦＰＧＡ  ２０のＣＬＢ  ２８と同じかまたは全体として同様である可能性のある、複数の再プログラマブル論理要素（ＲＬＥ）を含むことができる。当分野で周知であるように、ＲＬＥは一般に、ＲＬＡの細分性に応じて様々な論理ゲートまたは論理ブロックとして機能するように再構成可能な、ＲＬＡ  １０８の要素である。プログラマ１１２は、構成回路１１６を介してＲＬＥと電気的に通信する。以下で詳細に説明するように、プログラマ１１２の機能は、１つまたは複数の特定の論理機能、またはその部分、および必要であれば対応するストレージ要素を含むようにＲＬＡ  １０８を構成するために、定期的にＲＬＥを再構成するものである。
【００１６】
前述の背景の項で論じたように、特定のＲＬＡが単一の構成サイクルで処理できるサイズよりも大きい論理機能は、それぞれがＲＬＡの１サイクルで十分処理できるようなサイズの小さいいくつかの機能ブロックに区分することができる。たとえば図１のプログラマ３６などの、論理アレイ全体にストレージ要素を分散させる従来のプログラマとは対照的に、以下で詳細に論じるように本発明のプログラム１１２は、本来（ＲＬＥ中の）ＲＬＡ  １０８内に少なくとも機能領域と、通常は機能ブロックの最後のブロックを除いて、機能領域からの出力を格納および保持するための対応するストレージ領域とを構成する。
【００１７】
図３を参照しながら、３つの機能ブロックＦＢ１、ＦＢ２、ＦＢ３に区分された機能Ｆを考えてみる。もちろん当業者であれば、機能ブロックの数が機能のサイズおよび機能論理に専念するＲＬＡの領域のサイズに依存すること、ならびに、機能ブロックの数を１より大きい任意の整数とすることができることを理解されよう。しかしながら話を簡単にするために、ここでは３つの機能ブロックＦＢ１、ＦＢ２、ＦＢ３に限定して説明する。当業者であれば、任意の他の数の機能ブロックをインプリメントするためにはどのような変更が必要であるかを容易に理解されよう。
【００１８】
図４に示されるように、第１の構成サイクル、すなわちサイクルＭ中に、プログラマ１１２は機能ブロックＦＢ１を使用して機能領域ＦＲと、ＦＢ１の出力を受信するための対応するストレージ領域ＳＲ１とを構成し、ＲＬＡ  １０８の領域Ｒを機能の外部に残し、ストレージ領域を、次の構成サイクルであるサイクルＭ＋１でストレージ領域ＳＲ２（図５）として構成されるように（論理またはストレージ構成に関して）未構成のままとする。（他の実施形態では、所望であれば、図５のストレージ領域ＳＲ２をサイクルＭ中に構成可能であることに留意されたい。）矢印１２０で表される入力データは、その後ＲＬＡ  １０８に渡され、機能ブロックＦＢ１によって処理される。矢印１２４で表される機能ブロックＦＢ１の出力データは、機能ブロックＦＢ１からストレージ領域ＳＲ１内のストレージ要素（図示せず）に渡される。
【００１９】
第２の構成サイクル（図５）であるサイクルＭ＋１では、プログラマ１１２は、機能ブロックＦＢ２を使用して機能領域ＦＲを再構成し、機能ブロックＦＢ２の出力を受信するためにストレージ領域ＳＲ２を構成する。プログラマ１１２は本来、内部のストレージ・セルと機能ブロックＦＢ２との間に適切な接続を形成することを除いて、機能ブロックＦＢ２用の入力データである機能ブロックＦＢ１の出力データを妨げないように、ストレージ領域ＳＲ１を残しておく。プログラマ１１２が機能領域ＦＲおよびストレージ領域ＳＲ２を構成すると、ＲＬＡ  １０８は処理サイクルに入り、その間にストレージ領域ＳＲ１に格納されたデータが機能ブロックＦＢ２に渡され（矢印１２８）、矢印１３２で表される対応する出力データが機能ブロックＦＢ２からストレージ領域ＳＲ２内のストレージ要素（図示せず）に渡される。
【００２０】
第３の構成サイクル（図６）であるサイクルＭ＋２では、プログラマ１１２は、機能ブロックＦＢ３を使用して機能領域ＦＲと、以前のサイクルのＦＢ２の出力データがＦＢ３に入力できるようにストレージ領域ＳＲ２内のストレージ要素との任意の必要な接続とを再構成する。考慮の対象である機能Ｆには３つの機能ブロックＦＢ１、ＦＢ２、ＦＢ３しかないため、機能ブロックＦＢ３の出力をＲＬＡ  １０８の外部に直接渡すことができることから、プログラマ１１２はストレージ領域ＳＲ１内にストレージ要素を再構成する必要がない。プログラマ１１２が機能領域ＦＲを再構成すると、ＦＬＡ  １０８は実行サイクルに入り、ここでストレージ領域ＳＲ２に格納されたデータが機能ブロックＦＢ３に渡され（矢印１３６）、矢印１４０で表された対応する出力データが機能ブロックＦＢ３からＲＬＡの外部へと渡される。
【００２１】
プログラマ１１２が機能ブロックＦＢ１、ＦＢ２、ＦＢ３を使用して機能領域ＦＲを構成できる速度を最高にするために、機能領域の各構成、すなわち機能ブロックＦＢ１用の構成、機能ブロックＦＢ２用の構成、および機能ブロックＦＢ３用の構成を「プリコンパイル」して、メモリ（図示せず）内に格納することができる。この方法では、プログラマ１１２は、各サイクル中に適切なプリコンパイルされた構成を機能領域に「ロード」するだけである。別の方法として、各サイクル中に機能領域ＦＲに必要な構成を決定するように、プログラマ１１２を構成することもできる。これら代替形態のいずれが特定の設計により適切であるかを決定する際に考慮される要因には、サイクル時間、機能アレイＦＲのサイズ、およびプリコンパイルされた構成を格納するために使用可能なメモリ容量が含まれる。もちろんプログラマ１１２にとっては、何度も繰り返し使用されたある論理セグメントはプリコンパイルされるが、プログラマは各サイクル中に各機能ブロックＦＢ１、ＦＢ２、ＦＢ３用に全体の構成を決定するという、これら代替形式の混成をインプリメントすることも望ましい場合がある。
【００２２】
当業者であれば、上記で説明した複数サイクルの再構成および処理方法を、任意数の機能ブロックを有する機能に一般化する方法を、容易に理解されよう。３つを超える機能ブロックを有する機能の場合、明らかにより多くの構成および処理サイクルが存在することになり、その間に追加の機能ブロックが構成され、その追加の機能ブロックを介してデータが処理される。図４〜図６に示された機能領域ＦＲおよびストレージ領域ＳＲ１、ＳＲ２の構成では、奇数番号の機能ブロック、たとえば機能ブロックＦＢ１およびＦＢ３は左から右へと実行されるが、偶数番号の機能ブロック、たとえばＦＢ２は右から左へと実行されることになる。機能領域ＦＲ内で所与の機能の様々な機能ブロックを構成および実行し、必要に応じてストレージ領域ＳＲ１、ＳＲ２を指定、使用、および再使用する、この規則正しいプロセスにより、機能Ｆの処理を容易に最適化することができる。
【００２３】
これまで、たとえば機能ブロックＦＢ１、ＦＢ２、ＦＢ３などの機能ブロックの構成および実行について、左から右、右から左への実行に関連して説明してきたが、ストレージ領域ＳＲ１、ＳＲ２は、機能領域ＦＲに対してどこにでも配置することができる。たとえば、ストレージ領域ＳＲ１、ＳＲ２を逆にして、機能ブロックの実行を右から左へ、次に左から右へというように進行させることが可能であり、あるいは、ストレージ領域ＳＲ１、ＳＲ２を機能領域ＦＲの上と下に配置して、機能ブロックの処理を上から下、下から上、または下から上、上から下の、いずれかで進行させることが可能である。左から上、上から左などの他の処理構成も可能であるが、対応する機能ブロックを介した論理パスが長くなり、許容不可能な遅延が発生することから、望ましくない場合がある。機能ブロックの処理方向は、一般に、利用される特定のＲＬＡの設計に依存することになる。従来のＲＬＥは、通常、処理効率に関して相対的に非対称であり、すなわち、一方向での処理速度が反対方向での処理速度よりもかなり速い。しかしながらＲＬＥは、たとえば左から右、右から左、または上から下、下から上、あるいはそれらの両方などの、２つまたは４つの方向で、処理が対称となるように設計することができる。
【００２４】
プログラマ１１２は、たとえば機能ブロックＦＢ１、ＦＢ２、ＦＢ３などの機能ブロックを使用して機能領域ＦＲを定期的に構成するのに好適な、任意のソフトウェア１４４を実行することができる。ソフトウェア１４４は、既存のソフトウェア・モジュール／ルーチンを利用して、機能領域ＦＲおよびストレージ領域ＳＲ１、ＳＲ２を構成するのに必要な低レベルのタスクを実行することができる。こうしたモジュール／ルーチンは、当分野で周知である。より高いレベルでは、本発明の機能処理方式をインプリメントするために、ソフトウェア１４４用の新しいソフトウェア・モジュール／ルーチンを作成しなければならず、これによって、必要に応じて定期的な構成サイクル中に、独特な整合性のある機能領域ＦＲおよびストレージ領域ＳＲ１、ＳＲ２が指定および再構成される。当業者であれば、これらの高レベル・ルーチンを生成するためのガイドとして本開示を使用することで、本明細書に記載された機能を提供するためにプログラマ１１２にとって必要なソフトウェア１４４が容易に作成できるであろう。
【００２５】
ＲＬＡシステム１０４の特定の設計を最適化するためには、ストレージ領域ＳＲ１、ＳＲ２をＲＬＡ１０８の対応する縁部近くに配置すること、および、機能領域ＦＲのサイズを最大に、ストレージ領域のサイズを最小にすることが、望ましい場合がしばしばある。これが実行されると、機能がＸの処理論理要素を含み、ＲＬＡがＹのプログラマブル論理要素を含む場合、機能領域ＦＲおよびストレージ領域ＳＲ１、ＳＲ２のサイズ（ＲＬＥに関して）を決定する方法を以下のように進めることができる。第１に、ＲＬＡ  １０８のＹ論理要素から、ストレージ領域ＳＲ１、ＳＲ２に必要な最大数のストレージ要素ＳＥを引いて、１サイクルあたりのインプリメント可能な論理要素の最大数Ｚが算出される。（最大数のストレージ要素は、最大数のデータ・パスによって概算または決定することができる。）
【００２６】
次に、機能ＦのＸ論理要素をＺ機能論理要素で割って、機能を区分することになる機能ブロックの数Ｗ（機能を構成および処理するためのサイクル数にも等しい）を決定することができる。もちろん、Ｗは整数でなければならず、余りがあればすべて次に高位の整数になるように切り上げなければならない。各サイクルについて、入力および出力が定義される。その後、Ｗサイクルすべてに関する最大数の出力を、プログラマブル論理要素の数Ｚを決定するために使用されるストレージ要素の数ＳＥと比較することができる。これは、必要なストレージ要素の最大数をより小さくするために、より小さなＺ値とトレードオフすることが可能な反復プロセスとすることができる。その後、ＷサイクルそれぞれでのＺ論理要素の構成を、図４〜図６に関して上記で説明した交互方向のデータ・フロー用に最適化および構成することができる。機能Ｆの区分化およびサイクルごとの最適化、配置、および配線を完了するための処理時間は、従来の複数サイクルのＲＬＡ処理に関して上記の背景の項で説明した組み合わせ的爆発ではなく、Ｍサイクルとなる。
【００２７】
図７と図３〜図６を参照すると、図７は、複数のタイミング・セグメントＴ１〜Ｔ７を含む、機能Ｆの３サイクル処理に関するタイミング図２００を示す。タイミング・セグメントＴ１で、プログラマ１１２は、機能ブロックＦＢ１を使用してＲＬＡ  １０８の機能領域を、ストレージ要素を使用してストレージ領域ＳＲ１をプログラミングする。プログラマ１１２が必要に応じてＲＬＡ  １０８をプログラミングすると、タイミング・セグメントＴ２で、データを処理のために機能ブロックＦＢ１にランチすることができる。タイミング・セグメントＴ３で、機能ブロックＦＢ１はランチされたデータを処理し、データをストレージ領域ＳＲ１に出力する。タイミング・セグメントＴ１からＴ３は、機能ブロックＦＢ１に関するすべてのプログラミングおよび処理がこれらのタイミング・セグメント中に実行されることから、機能Ｆの処理に関してＲＬＡ  １０８のサイクル１とみなすことができる。
【００２８】
タイミング・セグメントＴ４で、プログラマ１１２は、機能ブロックＦＢ２を使用して機能領域ＦＲをプログラミングし、必要なストレージ要素を使用してストレージ領域ＳＲ２をプログラミングする。さらにタイミング・セグメントＴ４では、プログラマ１１２が機能領域ＦＲおよびストレージ領域ＳＲ２をプログラミングする間、機能ブロックＦＢ１から出力されたストレージ領域ＳＲ１内のデータがストレージ領域ＳＲ１内に保持される。タイミング・セグメントＴ５では、ＳＲ１からのデータが機能ブロックＦＢ２によって処理され、機能ブロックＦＢ２からの出力はＳＲ２に格納される。機能ブロックＦＢ２に関するプログラミングおよび処理がタイミング・セグメントＴ４およびＴ５中に実行されることから、これら２つのタイミング・セグメントは機能Ｆの処理に関してサイクル２を形成するものとみなすことができる。
【００２９】
タイミング・セグメントＴ６で、プログラマ１１２は機能ブロックＦＢ３を使用して機能領域ＦＲをプログラミングする。さらにタイミング・セグメントＴ６では、プログラマ１１２が機能領域ＦＲをプログラミングする間、機能ブロックＦＢ２から出力されたストレージ領域ＳＲ２内のデータがストレージ領域ＳＲ２内に保持される。タイミング・セグメントＴ７では、ＳＲ２からのデータが機能ブロックＦＢ３によって処理され、機能ブロックＦＢ３からの出力はＲＬＡ  １０８の外に出される。機能ブロックＦＢ３に関するプログラミングおよび処理がタイミング・セグメントＴ６およびＴ７中に実行されることから、これら２つのタイミング・セグメントは機能Ｆの処理に関してサイクル３を形成するものとみなすことができる。この例も、３つの機能ブロックＦＢ１、ＦＢ２、ＦＢ３を有し、その結果３つのサイクル１、２、３を必要とする機能Ｆに限定されているが、当業者であれば、本発明が任意数の機能ブロックおよび対応するサイクルを有する機能を取り扱うように修正可能であることを容易に理解されよう。
【００３０】
図３から図７に関して上記で論じた本発明のＲＬＡシステム１０４は、一般にストレージ領域ＳＲ１、ＳＲ２をＲＬＡ  １０８の縁部近くに配置されるものとして図示および説明されているが、この限りではない。図８は本発明のＲＬＡシステム３００を示す図であるが、ストレージ領域ＳＲ１ｎ、ＳＲ２ｎのうちの一部はＲＬＡ  ３０４の縁部に隣接して配置されていない。この例では、プログラマ３０８は、それぞれがたとえば機能Ｆ１、Ｆ２、Ｆ３（図示せず）などの異なる機能に対応すると同時に、互いに対応する、複数の機能ブロックを処理するように、ＲＬＡ  ３０４をプログラミングすることができる。図３から図７に関して上記で論じた機能Ｆと同様に、各機能Ｆ１、Ｆ２、Ｆ３は、図３から図７に関する機能領域ＦＲおよびストレージ領域ＳＲ１、ＳＲ２に関して上記で説明した構造および機能と同様の構造および機能を有する可能性のある、対応する機能領域ＦＲｎおよび対応するストレージ領域ＳＲ１ｎ、ＳＲ２ｎに関連付けることができる。したがって、各サイクル中にプログラマ３０８は、それぞれ機能Ｆ１、Ｆ２、Ｆ３の対応する機能ブロックを使用して、機能領域ＦＲ１、ＦＲ２、ＦＲ３それぞれをプログラミングすることになり、これらの機能ブロックは処理され、それらからのデータは対応する適切なストレージ領域ＳＲ１ｎ、ＳＲ２ｎに格納されるか、または場合によってはＲＬＡ  ３０４から出されることになる。
【００３１】
ＲＬＡ  ３０４の性能を最適化するためには、ＲＬＡが左から右および右から左へ、ならびに上から下および下から上へ、対称的に処理されるように設計することが有利であろう。もちろんＲＬＡ  ３０４は、図示された４方向構成以外の構成でプログラミングすることも可能である。たとえば、ＲＬＡ  ３０４が上から下および対称的な下から上への処理用に設計された場合、３つの機能Ｆ１、Ｆ２、Ｆ３のすべてが垂直に処理されることが望ましい場合がある。同様に、ＲＬＡ  ３０４およびそのＲＬＥが左から右および対称的な右から左への処理用に設計された場合、３つの機能Ｆ１、Ｆ２、Ｆ３のすべてが水平に処理されることが望ましい場合がある。もちろん、たとえＲＬＡ  ３０４が処理効率に関していずれの方向にも対称でない場合であっても、機能Ｆ１、Ｆ２、Ｆ３の機能ブロックは同時に互いに循環することが可能であるが、おそらく効率的でない方向での遅い処理によって遅延が生じるであろう。
【００３２】
図９は、ＲＬＡ  ４０４が、たとえば機能ＯＬＥ＿ＬＩＮＫ２３Ｆ１、Ｆ２  ＯＬＥ＿ＬＩＮＫ２３などの２つの機能を互いに同時に、しかし反対の方向で処理する、本発明の他のＲＬＡシステム４００を示す。ＲＬＡシステム４００の設計は、図４〜図６のＲＬＡ  １０８などのＲＬＡが１つの機能のみを処理する場合、１つの機能ブロックＭから次の機能ブロックＭ＋１に「渡される」データが一方のまたは他方のストレージ領域ＳＲ１、ＳＲ２（図５）に保持されなければならない、という事実を認識する。したがって、機能ブロックＭから機能ブロックＭ＋１への機能領域ＦＲの再構成中にデータを保持するために使用されているＲＬＥは、機能ブロックＭ＋１の処理中には使用できない。一般に、図９のＲＬＡシステム４００は、図３〜図８に関して上記で論じたあらゆる他の処理サイクルとは対照的に、２つの異なる方向で同時に２つの機能Ｆ１、Ｆ２を処理することによって、各処理サイクル中にこれらのＲＬＥを利用する。したがって、各処理サイクル中に、ストレージ領域ＳＲ１’、ＳＲ２’のストレージ要素（図示せず）は、各処理サイクルの新しいデータで刻時されることになる。この双方向処理は、通常、各処理サイクルについて最適化されず、むしろ、たとえばサイクルＭ、Ｍ＋１などの２つの連続するサイクルを横切って最適化する必要がある。
【００３３】
図１０は、本発明の他のＲＬＡシステム５００を示す図であり、プログラマ５０４は、機能ブロックＭからＭ＋ｎなどの複数の機能ブロックを有する機能の連続する機能ブロックを処理するために、２つの機能領域ＦＲ１’、ＦＲ２’を含むようにＲＬＡ  ５０８を構成する。再度、図７のタイミング図２００を参照すると、サイクル１、２、および３のそれぞれが、それぞれタイミング・セグメントＴ１、Ｔ４、およびＴ６のプログラミング・ステップと、それに続くそれぞれタイミング・セグメントＴ３、Ｔ５、およびＴ７の処理ステップとを含むことがわかる。したがって、これらそれぞれのタイミング・セグメントまたはサイクル中に、図４〜図６のＲＬＡシステム１０４はプログラミング状態または処理状態のいずれかである。しかしながら、ＲＬＡシステム５００の２つの機能領域ＦＲ１’、ＦＲ２’を使用して、機能領域のうちの１つをプログラミングし、他方の領域は対応する機能ブロックを処理するように、プログラマ５０４を構成することができる。
【００３４】
プログラマ５０４は、ストレージ領域ＳＲ１”、ＳＲ２”をセットアップおよび再プログラミングするようにも構成される。データをストレージ領域ＳＲ１”、ＳＲ２”のうちの１つに保持する必要なしに、それぞれ機能ブロック内へ直接および機能ブロック外へ直接渡すことが可能な、最初と最後以外の機能ブロックの場合、それぞれのストレージ領域ＳＲ１”、ＳＲ２”のストレージ要素（図示せず）の第１の部分Ｐ１１、Ｐ２２は、機能領域ＦＲ１、ＦＲ２のうちの１つで現在の機能ブロックＭによって生成されたデータを保持しなければならず、それぞれのストレージ領域のストレージ要素の第２の部分Ｐ２１、Ｐ１２は、機能ブロックＭ＋２からデータを受信するように再構成される。
【００３５】
図１１は、図１０のＲＬＡシステム５００に関するタイミング図６００を示す。いくつかの機能ブロックを有する機能（図示せず）の処理の始めに、タイミング・セグメントＴ１’で機能の処理を開始することが可能であり、ここでプログラマ５０４は、機能ブロックＭを使用して機能領域ＦＲ１’をプログラミングし、それぞれ機能ブロックＭおよび機能ブロックＭ＋２用のストレージ要素を使用してストレージ領域ＳＲ１”の部分Ｐ１１、Ｐ２１をプログラミングする。タイミング・セグメントＴ２’では、データが機能ブロックＭにランチされる。機能ブロックＭは、タイミング・セグメントＴ３’で処理される。同時にプログラム５０４は、機能ブロックＭ＋１を使用して機能領域ＦＲ２”をプログラミングし、機能ブロックＭ＋１および機能ブロックＭ＋３用のストレージ要素を使用して、それぞれストレージ領域ＳＲ２”の部分Ｐ１２、Ｐ２２をプログラミングする。タイミング・セグメントＴ４’では、機能ブロックＭ＋１の出力がストレージ領域ＳＲ２”の部分Ｐ１２に格納されるように、機能ブロックＭ＋１が処理される。機能ブロックＭ＋１の処理と同時に、プログラマ５０４は、機能ブロックＭ＋２を使用して機能領域ＦＲ１’を再構成し、機能ブロックＭ＋４用のストレージ要素を使用してストレージ領域ＳＲ１”の部分Ｐ１１を再構成する。続くタイミング・セグメントＴ５’では、機能ブロックＭ＋２の出力がストレージ領域ＳＲ１”の部分Ｐ２１に格納されるように、機能ブロックＭ＋２が処理される。機能ブロックＭ＋２の処理と同時に、プログラマ５０４は、機能ブロックＭ＋３を使用して機能領域ＦＲ２’を再構成し、機能ブロックＭ＋５用のストレージ要素を使用してストレージ領域ＳＲ２”の部分Ｐ１２を再構成する。この連続する機能ブロックを使用する機能領域ＦＲ１’、ＦＲ２’の交互のプログラミングと、対応する２ブロック先の機能ブロック用のストレージ要素のプログラミングは、機能ブロックＭ＋ｎ−２に達するまで続行される。その時点で、所望であれば、機能ブロックＭ＋ｎの出力をＲＬＡ  ５０８の外に直接出すことが可能であるため、機能ブロックＭ＋２用のストレージ要素をプログラミングする必要がなくなる。しかしながら、依然として機能ブロックＭ＋ｎ−１およびＭ＋ｎは、後続の実行のために機能領域ＳＲ１”、ＳＲ２”にプログラミングしなければならない。当業者であれば、タイミング図６００以外のタイミング図も可能であることを理解されよう。
【００３６】
図１２は、本発明の他のＲＬＡシステム９００を示す。図３〜図１１に関して上記で論じたＲＬＡシステム１０４、３００、４００、５００と同様に、ＲＬＡシステム９００は、ＲＬＡ  ９０４と、サイクルごとにＲＬＡを再構成するためのプログラマ９０８とを含む。しかしながら、プログラマ９０８が、たとえば図４〜図６のストレージ領域ＳＲ１、ＳＲ２などの様々なストレージ領域を含むようにＲＬＡ  ９０４をプログラミングする代わりに、ＲＬＡシステム９００は、ＲＬＡに隣接して配置された固定メモリＦＭ１およびＦＭ２を利用する。一般に、ＲＬＡ  ９０４は、図３〜図１１に関して上記で論じたＲＬＡシステム１０４、３００、４００、５００に非常に類似した方法で機能するようにプログラミング可能であり、主要な相違点は、固定メモリがＲＬＥを含まず、むしろ固定ストレージ要素を含むため、プログラマ９０８は他のＲＬＡシステムに関して論じた方法で固定メモリＦＭ１、ＦＭ２を構成しないことである。固定メモリＦＭ１、ＦＭ２は、とりわけＳＲＡＭ、レジスタ・アレイ、またはフリップ・フロップなどの、任意の好適なタイプとすることができる。当業者であれば、固定メモリＦＭ１、ＦＭ２をＲＬＡ  ９０４とインターフェースさせる方法を容易に理解されるため、本明細書では当業者に対してＲＬＡシステム９００をインプリメントするための詳細な説明を行う必要はない。
【００３７】
以上、本発明について好ましい実施形態に関して説明してきたが、これに限定されるものでないことを理解されよう。むしろ、上記および添付の特許請求の範囲で定義された本発明の趣旨および範囲内に含まれる、すべての代替形態、修正形態、および等価形態をカバーすることを意図するものである。
【図面の簡単な説明】
【００３８】
【図１】複数の機能ブロックを有する機能の１つの機能ブロックに関する、従来技術に従って構成された再構成可能なフィールド・プログラマブル・ゲート・アレイ（ＲＦＰＧＡ）を示す概略図である。
【図２】本発明の再構成可能な論理アレイ（ＲＬＡ）システムを含む、集積回路チップを示す概略図である。
【図３】図２のＲＬＡシステムによって処理することが可能な区分機能を示す、高水準概略図である。
【図４】図３に示された機能の第１の機能ブロックを処理するようにＲＬＡが構成された、図２のＲＬＡシステムを示す高水準概略図である。
【図５】図３に示された機能の第２の機能ブロックを処理するようにＲＬＡが構成された、図２のＲＬＡシステムを示す高水準概略図である。
【図６】図３に示された機能の第３の機能ブロックを処理するようにＲＬＡが構成された、図２のＲＬＡシステムを示す高水準概略図である。
【図７】図３の機能を処理するための図４〜図６のＲＬＡの循環プログラミングを示す、タイミング図である。
【図８】ストレージ領域の一部がＲＬＡの縁部に配置されておらず、複数の機能の機能ブロックが互いに同時にプログラミングおよび処理される、本発明のＲＬＡシステムを示す高水準概略図である。
【図９】２つの機能が同じストレージ領域を共有し、互いに反対の方向で同時に処理される、本発明のＲＬＡシステムを示す高水準概略図である。
【図１０】一方の機能領域がプログラム可能であり、他方の機能領域が処理中であるように、ＲＬＡが２つの機能領域を含む、本発明のＲＬＡシステムを示す高水準概略図である。
【図１１】図１０の二重機能領域構造を使用して機能を処理するためのタイミング図である。
【図１２】ストレージ要素が固定メモリである、本発明のＲＬＡシステムを示す高水準概略図である。
【図１】
2007510325.tif 000003
【図２】
2007510325.tif 000004
【図３】
2007510325.tif 000005
【図４】
2007510325.tif 000006
【図５】
2007510325.tif 000007
【図６】
2007510325.tif 000008
【図７】
2007510325.tif 000009
【図８】
2007510325.tif 000010
【図９】
2007510325.tif 000011
【図１０】
2007510325.tif 000012
【図１１】
2007510325.tif 000013
【図１２】
2007510325.tif 000014
【国際調査報告】
2007510325.tif 000015