(57)【要約】【課題】ゲートアレイ内部の記憶素子の数を必要最小限に抑えつつ、コンテクストデータを切り替えるための時間を大幅に短縮することができるゲートアレイ装置を提供する。【解決手段】各マクロセルに、実行中のロジック／状態データを記憶するための第１の記憶素子群の他に、第１の記憶素子群に対応する第２の記憶素子群を設ける。第２の記憶素子群を直列に接続して、第２の記憶素子群に他の回路のロジック／状態データをロードしておき、第１の記憶素子群に記憶されているロジック／状態データと、第２の記憶素子群に記憶されている他の回路のロジック／状態データとを交換するときには、第２の記憶素子群と第１の記憶素子群との間で、対応する２つの記憶素子同士を接続し、その後、交換実行信号が入力されて、第２の記憶素子群は第１の記憶素子群に記憶されているロジック／状態データを記憶し、第１の記憶素子群は第２の記憶素子群に記憶されている他の回路のロジック／状態データを記憶する。【選択図】図４
2007074262.tif 000002
【特許請求の範囲】
【請求項１】
実行中のロジック／状態データを記憶するための第１の記憶素子群と、
前記第１の記憶素子群に対応する第２の記憶素子群と、
前記第２の記憶素子群に他のロジック／状態データをロードするときには、前記第２の記憶素子群を直列に接続し、前記第１の記憶素子群に記憶されているロジック／状態データと、前記第２の記憶素子群に記憶されている他のロジック／状態データとを交換するときには、前記第２の記憶素子群と前記第１の記憶素子群との間で、対応する２つの記憶素子同士を接続する接続切替手段と、
を備え、
前記接続切替手段で前記第２の記憶素子群と前記第１の記憶素子群との間で、対応する２つの記憶素子同士が接続された後に入力された交換実行信号により、前記第２の記憶素子群は前記第１の記憶素子群に記憶されているロジック／状態データを記憶し、前記第１の記憶素子群は前記第２の記憶素子群に記憶されている他のロジック／状態データを記憶する複数のマクロセルを含み、
前記複数のマクロセルが、各マクロセルの前記第２の記憶素子群を介して直列に接続されていることを特徴とするプログラマブルゲートアレイ装置。
【請求項２】
前記他のロジック／状態データは、最初に、前記複数のマクロセルの先頭のマクロセルに入力され、
前記接続切替手段で前記第２の記憶素子群が直列に接続された後に入力されたクロック信号に従って、入力されたロジック／状態データは、各マクロセルの前記第２の記憶素子群を通って転送されて、各マクロセルの前記第２の記憶素子群にロードされることを特徴とする請求項１記載のプログラマブルゲートアレイ装置。
【請求項３】
前記第１及び第２の記憶素子群の各記憶素子は、フリップフロップ回路であり、
前記ロード時には、前記接続切替手段で、各記憶素子のデータ出力端子が、その直後の記憶素子のデータ入力端子に接続されることを特徴とする請求項１記載のプログラマブルゲートアレイ装置。
【請求項４】
前記第１及び第２の記憶素子群の各記憶素子は、フリップフロップ回路であり、
前記交換時には、前記接続切替手段で、前記第２の記憶素子群の各記憶素子のデータ出力端子が、当該記憶素子に対応する前記第１の記憶素子群の記憶素子のデータ入力端子に接続され、前記第２の記憶素子群の各記憶素子のデータ入力端子が、当該記憶素子に対応する前記第１の記憶素子群の記憶素子のデータ出力端子に接続されることを特徴とする請求項１記載のプログラマブルゲートアレイ装置。
【請求項５】
前記交換後に、各マクロセルの前記第２の記憶素子群から当該第２の記憶素子群に記憶された状態データを回収するとき、前記接続切替手段は前記第２の記憶素子群を直列に接続し、
前記接続切替手段で前記第２の記憶素子群が直列に接続された後に入力されたクロック信号に従って、前記第２の記憶素子群に記憶されている状態データが当該マクロセルから回収されることを特徴とする請求項１記載のプログラマブルゲートアレイ装置。
【請求項６】
各マクロセル内の直列に接続された前記第２の記憶素子群の最後の記憶素子のデータ出力端子と、当該マクロセルの直後のマクロセル内の直列に接続された前記第２の記憶素子群の最初の記憶素子のデータ入力端子とが接続されることにより、各マクロセルにロジック／状態データをロードするための転送ラインが形成されることを特徴とする請求項１記載のプログラマブルゲートアレイ装置。
【請求項７】
各マクロセルは、
当該マクロセルの使用の有無を示すバイパス制御情報を記憶する制御情報記憶素子と、
前記バイパス制御情報に基づき、当該マクロセル内の直列に接続された前記第２の記憶素子群の最初の記憶素子への入力端と、前記第２の記憶素子群の最後の記憶素子のデータ出力端子とのうちのいずれか一方を、当該最後の記憶素子のデータ出力端子からの出力を次のマクロセルへ出力するための出力端に接続するバイパス切替手段と、
をさらに含むことを特徴とする請求項６記載のプログラマブルゲートアレイ装置。
【請求項８】
前記バイパス切替手段は、前記バイパス制御情報が当該マクロセルを使用すると示しているときには、前記データ出力端子を前記出力端に接続し、前記バイパス制御情報が当該マクロセルを使用しないと示しているときには、前記入力端を前記出力に接続することを特徴とする請求項７記載のプログラマブルゲートアレイ装置。
【請求項９】
前記制御情報記憶素子は、
現在中のロジック／状態データで前記マクロセルが使用されているか否かを示すバイパス制御情報を記憶する第１の制御情報記憶素子と、
次に実行されるロジック／状態データで前記マクロセルが使用されるか否かを示すバイパス制御情報を記憶する第２の制御情報記憶素子とを含み、
前記第１及び第２の制御情報記憶素子は、前記交換実行信号により、前記第１の制御情報記憶素子に記憶されていたバイパス制御情報を前記第２の制御情報記憶素子が記憶し、前記第２の制御情報記憶素子に記憶されていたバイパス制御情報を前記第１の制御情報記憶素子が記憶するように接続され、
前記バイパス切替手段は、
前記第２の制御情報記憶素子に記憶されたバイパス制御情報に基づき、前記出力端への接続を切り替えることを特徴とする請求項７記載のプログラマブルゲートアレイ装置。
【請求項１０】
前記複数のマクロセルの前記第２の記憶素子群に記憶されているロジック／状態データに対応する第１の識別子を記憶する第１の記憶手段と、
前記複数のマクロセルの前記第１の記憶素子群に記憶されている実行中のロジック／状態データの次に実行すべきロジック／状態データを示す第２の識別子を記憶する第２の記憶手段と、
（ａ）前記第１の識別子と前記第２の識別子とが異なるときには、前記複数のマクロセルの前記第２の記憶素子群へ、前記第２の識別子をもつロジック／状態データをロードした後、前記交換実行信号を前記複数のマクロセルへ入力し、（ｂ）一致するときには、前記第２の記憶素子群へ前記第２の識別子をもつロジック／状態データをロードすることなく、前記交換実行信号を前記複数のマクロセルへ入力する第１の制御手段と、
をさらに具備したことを特徴とする請求項１記載のプログラマブルゲートアレイ装置。
【請求項１１】
前記複数のマクロセルの前記第１及び第２の記憶素子群のそれぞれに記憶されているロジック／状態データを含む、異なる複数のロジック／状態データを記憶するキャッシュメモリと、
実行予定のロジック／状態データが、前記キャッシュメモリに記憶されていないとき、前記キャッシュメモリに当該実行予定のロジック／状態データを記憶させる第２の制御手段と、
をさらに具備し、
前記第１の制御手段は、前記第１の識別子と前記第２の識別子とが異なるときには、前記複数のマクロセルの前記第２の記憶素子群へ前記キャッシュメモリから読み出された前記第２の識別子に対応するロジック／状態データをロードすることを特徴とする請求項１０記載のプログラマブルゲートアレイ装置。
【請求項１２】
前記第２の記憶素子に記憶されている第２の識別子に対応するロジック／状態データの次に実行すべきロジック／状態データを示す第３の識別子を記憶する第３の記憶手段をさらに含み、
前記第２の制御手段は、前記第３の識別子に対応するロジック／状態データが前記キャッシュメモリに記憶されているか否か検索する検索手段を含み、前記第３の識別子に対応するロジック／状態データが前記キャッシュメモリに記憶されていないとき、前記キャッシュメモリに当該ロジック／状態データを記憶させることを特徴とする請求項１１記載のプログラマブルゲートアレイ装置。
【請求項１３】
実行中のロジック／状態データを記憶するための第１の記憶素子群と、
前記第１の記憶素子群に対応する第２の記憶素子群と、
前記第２の記憶素子群に他のロジック／状態データをロードするときには、前記第２の記憶素子群を直列に接続し、前記第１の記憶素子群に記憶されているロジック／状態データと、前記第２の記憶素子群に記憶されている他のロジック／状態データとを交換するときには、前記第２の記憶素子群と前記第１の記憶素子群との間で、対応する２つの記憶素子同士を接続する接続切替手段と、
を備えた複数のマクロセルを含むプログラマブルゲートアレイ装置における回路切替方法であって、
各マクロセルの前記接続切替手段が、前記第２の記憶素子群を直列に接続する第１のステップと、
各マクロセルの前記第２の記憶素子群へ、前記他のロジック／状態データをロードする第２のステップと、
各マクロセルの前記接続切替手段が、前記第２の記憶素子群と前記第１の記憶素子群との間で、対応する２つの記憶素子同士を接続する第３のステップと、
各マクロセルに交換実行信号を入力する第４のステップと、
前記交換実行信号により、各マクロセルの前記第２の記憶素子群が前記第１の記憶素子群に記憶されているロジック／状態データを記憶し、各マクロセルの前記第１の記憶素子群が前記第２の記憶素子群に記憶されている前記他のロジック／状態データを記憶することにより、第１及び第２の記憶素子群の間でロジック／状態データを交換する第５のステップと、
を有する回路切替方法。
【請求項１４】
前記第２のステップは、
前記複数のマクロセルの前記第２の記憶素子群に記憶されているロジック／状態データとは異なる他のロジック／状態データを、各マクロセルの前記第２の記憶素子群へロードするために、当該第２の記憶素子群に記憶されている状態データを回収するステップと、
各マクロセルの前記第２の記憶素子群から前記状態データを回収した後、各マクロセルの前記第２の記憶素子群に前記他のロジック／状態データをロードするステップと、
を含むことを特徴とする請求項１３記載の回路切替方法。
【請求項１５】
前記複数のマクロセルの前記第１及び第２の記憶素子群のそれぞれに記憶されているロジック／状態データを含む、異なる複数のロジック／状態データを記憶するキャッシュメモリに、実行予定のロジック／状態データが記憶されていないとき、前記キャッシュメモリに当該実行予定のロジック／状態データを記憶するステップをさらに有し、
前記第２のステップは、前記複数のマクロセルの前記第２の記憶素子群に記憶されているロジック／状態データとは異なる他のロジック／状態データを前記キャッシュメモリから読み出して、各マクロセルの前記第２の記憶素子群へロードすることを特徴とする請求項１３記載の回路切替方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルゲートアレイ装置に関する。
【背景技術】
【０００２】
図１は、動的に回路の動作を決定する回路情報を、多数の回路動作を決定するルックアップテーブル（ＬＵＴ）と、その出力を記憶する記憶素子の組（以下マクロセル）、それらを接続するプログラマブルな相互結合網（マクロセル間結合網）に入力するプログラマブルゲートアレイの例である。
【０００３】
ここでは、プログラマブルゲートアレイの動作を決定するＬＵＴに記録する回路情報とその出力記憶素子の初期状態、相互結合網の接続情報を総称してコンテクストデータと呼称する。
【０００４】
コンテクストデータは、プログラマブルゲートアレイに搭載した全てのマクロセルに個別のデータをロードしなければならないため多量のデータとなる。また、マクロセルは多量に搭載されるため、それらを個々に識別するための信号線を設けることは回路規模の増大を招くため、コンテクストデータのロードは、図２のようにマクロセルを縦続接続し、マクロセル間を順送り転送するという方法がとられる。
【０００５】
一方でこの方法では、コンテクストデータをロードしている期間は比較的長時間になり、この期間にゲートアレイとして動作することを停止するとゲートアレイの実効的な動作時間が短くなり処理能力が低下する。
【０００６】
そこで、コンテクストデータを外部からロードするための記憶素子をＬＵＴとは別に設け、記憶素子にコンテクストデータが溜った後にこの記憶素子からＬＵＴに並列に転送することにより停止時間を著しく減少することができる。
【０００７】
しかしながら、プログラマブルゲートアレイ内部に直接動作とは関係のない記憶素子を持つことになるため、ゲートアレイに搭載した回路のうちが有効利用できていない部分が大きいという問題点があった。
【０００８】
また、マクロセルを縦続接続することによりコンテクストデータ配送のための配線数は減少できるが、一方で順送り伝送されるため動作に必要ないマクロセルにもデータをロードする必要があった。
【０００９】
また、プログラマブルゲートアレイを動的に回路情報（以下コンテクストデータとも言う）を入れ換えて時分割で切替えることに大規模な回路を等価的に実現することが提案されている（例えば、特許文献１参照）。
【００１０】
ただし、回路情報のデータ量が大きいため単純に回路をその都度ゲートアレイにロードしていくことは、回路切替えのためのオーバーヘッドが大きく回路全体の処理性能を落す結果になっていた。
【００１１】
また、ゲートアレイ内部に全コンテクストを持つ方法は切替え時間そのものは小さいものの、プログラマブルゲートアレイ自体の回路規模が増大してしまうという問題点があった。
【特許文献１】特開平１１−３１７６５９
【発明の開示】
【発明が解決しようとする課題】
【００１２】
以上説明したように、従来は、ゲートアレイのコンテクストデータを入れ替えて、１つのゲートアレイで異なる複数の回路を実現する場合、少ない記憶素子で、コンテクストデータを切り替えるための時間を短縮することができないという問題点があった。
【００１３】
そこで、本発明は、上記問題点に鑑み、ゲートアレイ内部の記憶素子の数を必要最小限に抑えつつ、コンテクストデータを切り替えるための時間を大幅に短縮することができるゲートアレイ装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の各マクロセルは、実行中のロジック／状態データを記憶するための第１の記憶素子群と、当該第１の記憶素子群に対応する第２の記憶素子群を備える。他のロジック／状態データをロードするときには、第２の記憶素子群を直列に接続し、直列に接続された第２の記憶素子群に、他のロジック／ステータスをロードする。第１の記憶素子群に記憶されているロジック／状態データと、第２の記憶素子群に記憶されている他の回路のロジック／状態データとを交換するときには、第２の記憶素子群と第１の記憶素子群との間で、対応する２つの記憶素子同士を接続し、その後交換実行信号が入力されて、第２の記憶素子群は第１の記憶素子群に記憶されているロジック／状態データを記憶し、第１の記憶素子群は第２の記憶素子群に記憶されている他の回路のロジック／状態データを記憶する。
【発明の効果】
【００１５】
ゲートアレイ内部の記憶素子の数を必要最小限に抑えつつ、コンテクストデータを切り替えるための時間を大幅に短縮することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施形態について図面を参照して説明する。
【００１７】
なお、以下の説明では、例えば、携帯電話やＰＤＡなどの携帯端末などの装置・システムに実装されて用いられる、ゲートアレイ部１と、その周辺の要部の構成例について説明する。ゲートアレイ部１は、異なる回路情報を入れ替えて利用することにより、複数種類の回路の動作を実現するようになっている。
【００１８】
ここで、ゲートアレイ部１が、１つの回路情報により決定される回路動作を行うために必要な情報をコンテクストデータと呼ぶ。コンテクストデータは、各マクロセルで実現する回路のロジックなどの回路情報（ロジックデータ）、当該回路情報を当該ゲートアレイ部１で実行したときの各マクロセルの回路実行状態（ステータス）や、マクロセル間結合網の接続情報などの総称である。
【００１９】
（第１の実施形態）
図３は、第１の実施形態に係る、ゲートアレイ部１と、その周辺の要部の構成例を示したものである。ゲートアレイ部１の回路情報を入れ替えることにより、ゲートアレイ部１で複数種類の回路動作を実現するようになっている。
【００２０】
ゲートアレイ部１は、設定（ロード）された回路情報により回路動作（ロジック）の決定される複数のマクロセルを直列に接続するとともに、当該複数のマクロセルのロジックに対し入出力の制御を行うプログラマブルなマクロセル間結合網３からなる。
【００２１】
ゲートアレイ部１には、当該ゲートアレイ部１を備える装置の制御部（図示せず）から、各マクロセルにロードするための回路情報と、マクロセル間結合網にロードするための接続情報と、（回路情報、ステータス及び接続情報を含む）コンテクストデータのロード／交換を指示するためのロード／交換切替信号とが入力される。その他、図３には示していなが、ゲートアレイ部１内にコンテクストデータを転送するためのクロック信号（回路情報用クロック信号（Context load clock for LUT信号）、ステータス用クロック信号（Context load clock for status信号））や、交換の実行を指示する交換実行信号（Context swap Exec.信号）などが入力される。
【００２２】
各マクロセルにロードされるステータスは、ステータス記憶部２から読み出されて、ゲートアレイ部１へ入力する。
【００２３】
ゲートアレイ部１に、複数の回路情報のうちの１つの第１の回路情報がロードされて、第１の回路情報に基づく回路動作を行い、その後、現在実行中の第１の回路情報から、別の第２の回路情報に切り替える（交換する）ときには、（必要に応じて）各マクロセルでの現在の実行状態（ステータス）を保存するために、各マクロセルから現在のステータスを回収し、これをステータス記憶部２に記憶する。その後、再び、第１の回路情報に基づく回路動作を実行する場合には、当該第１の回路情報と、（ステータス記憶部２に記憶されている）回収されたステータスを各マクロセルにロードする。すなわち、第１の回路情報に基づく回路動作を再開する場合には、第１の回路情報、ステータス記憶部２に記憶されていた当該第１の回路情報に対応するステータスを各マクロセルにロードする。なお、第１の回路情報及びステータスが待避先（後述するコンテクスト用シフトレジスタ１１）記憶されている場合には、ロードすることなく、第２の回路情報から第１の回路情報へ単に切り替える（交換する）だけでよい。
【００２４】
図４は、図１のゲートアレイ部１を構成する各マクロセルの内部構成例を概略的に示したものである。
【００２５】
図４に示すように、マクロセルは、コンテクストロード用シフトレジスタ１１、実行中コンテクスト記憶部１２、デコーダセレクタ１３、切替スイッチ１４を含む。なお、実行中コンテクスト記憶部１２及びデコーダセレクタ１３が、ＬＵＴ（Look up table）に対応する。
【００２６】
なお、図４は、説明の簡単のため、回路情報、接続情報及びステータスを、まとめてコンテクストデータとして表している。
【００２７】
コンテクストロード用シフトレジスタ１１は、複数の記憶素子を直列に接続してなり、回路情報やステータスといったコンテクストデータを各マクロセルにロードするためのものである。
【００２８】
実行中コンテクスト記憶部１２は、デコーダ・セレクタ１３の入力端子／出力端子に接続された複数の記憶素子からなり、現在実行中の回路情報やステータスを保持する。
【００２９】
ロード／交換切替スイッチ１４は、入力されたロード／交換切替信号が「ロード」を指示しているときには、各マクロセルのコンテクストロード用シフトレジスタ１１によりマクロセル間でコンテクストデータの転送を行わせる。入力されたロード／交換切替信号が「交換」を指示しているときには、コンテクストロード用シフトレジスタ１１と、実行中コンテクスト記憶部１２との間で、（現在ゲートアレイ部１で実行中の）実行中コンテクスト記憶部１２に記憶されているコンテクストデータと、コンテクストロード用シフトレジスタ１１に保持されている（ロードされた）コンテクストデータとを交換する。
【００３０】
デコーダ・セレクタ１３は、ロジック入力に対し、回路情報記憶部１２に記憶されている回路情報に従って動作し、その結果を出力する（ロジック出力）。
【００３１】
このような構成において、マクロセルがコンテクストデータを実行中に、コンテクストロード用シフトレジスタ１１を用いて、次に実行すべき別のコンテクストデータをロードし、ロードされたコンテクストデータと、実行中コンテクスト記憶部１２に記憶されている、現在実行中のコンテクストデータとの交換を行う。
【００３２】
図５は、図４に示したマクロセルの構成をより詳細に示したものである。
【００３３】
なお、図５では、図４のコンテクストロード用シフトレジスタ１１が、回路情報及び接続情報をロードするための回路情報ロード用シフトレジスタ１１１と、ステータスをロードするためのステータスロード用シフトレジスタ１１２とに分けて示している。
【００３４】
また、図４の実行中コンテクスト記憶部１２が、実行中のコンテクストの回路情報を保持する回路情報記憶部１２１と、実行中のコンテクストのステータスを保持するステータス記憶部１２２とに分けて示している。
【００３５】
回路情報記憶部１２１は、複数のフリップフロップ回路からなり、各フリップフロップ回路のデータ出力端子は、デコーダ・セレクタ１３の各入力端子に接続されている。
【００３６】
回路情報ロード用シフトレジスタ１１１は、回路情報記憶部１２１の複数のフリップフロップ回路にそれぞれ対応する複数のフリップフロップ回路からなる。回路情報ロード用シフトレジスタ１１１の一列に並べられたフリップフロップ回路群は、前段のフリップフロップ回路のデータ出力端子と、後段のフリップフロップ回路のデータ入力端子と、当該後段のフリップフロップ回路に対応する回路情報記憶部１２１のフリップフロップ回路のデータ出力端子とが、ロード／交換切替スイッチ１４を介して接続されている。
【００３７】
回路情報ロード用シフトレジスタ１１１の各フリップフロップ回路のデータ出力端子は、当該フリップフロップ回路に対応する、回路情報記憶部１２１のフリップフロップ回路のデータ入力端子にも接続されている。
【００３８】
また、回路情報ロード用シフトレジスタ１１１の最後のフリップフロップ回路のデータ出力端子と、次のマクロセル内の回路情報ロード用シフトレジスタ１１１の最初のフリップフロップ回路のデータ入力端子とが、ロード／交換切替スイッチ１４を介して接続されている。
【００３９】
回路情報をマクロセルにロードする際には、ロード／交換切替信号（Context load/swap信号）により「ロード」が指示され、ロード／交換切替スイッチ１４が、ロード側に設定される。これにより、各マクロセル内では、回路情報ロード用シフトレジスタ１１１の各フリップフロップ回路は、そのデータ入力端子及び出力端子が、前段のフリップフロップ回路のデータ出力端子及び後段のフリップフロップ回路のデータ入力端子にそれぞれ接続されて、直列に接続される。また、各マクロセルの回路情報ロード用シフトレジスタ１１１の最後のフリップフロップ回路のデータ出力端子と、次のマクロセル内の回路情報ロード用シフトレジスタ１１１の最初のフリップフロップ回路のデータ入力端子とが直結される。その結果、各マクロセル内の回路情報ロード用シフトレジスタ１１１は、回路情報記憶部１２１から切り離され、複数のマクロセル間で、それぞれの回路情報ロード用シフトレジスタ１１１が直列に接続される。このような状態のときに、ゲートアレイ部１に入力されるコンテクストデータは、回路情報ロード用シフトレジスタ１１１により、回路情報用クロック信号（Contex load clock for LUT信号）に従って、順送りに全てのマクロせるに転送される。
【００４０】
ロード／交換切替信号（Context load/swap信号）により「交換」が指示され、ロード／交換切替スイッチ１４が、交換（swap）側に設定されると、回路情報記憶部１２１の各フリップフロップ回路のデータ出力端子からの出力が、当該フリップフロップ回路に対応する回路情報ロード用シフトレジスタ１１１のフリップフロップ回路の入力端子に入力する。また、回路情報ロード用シフトレジスタ１１１の各フリップフロップ回路の出力端子は、その後段のフリップフロップ回路の入力端子から切り離され、回路情報記憶部１２１のフリップフロップ回路の入力端子に接続する。
【００４１】
このような状態において、交換実行信号（Context swap Exec.信号）が入力されると、その入力タイミングで、回路情報記憶部１２１に記憶されている現在実行中の回路情報と、回路情報ロード用シフトレジスタ１１１で保持されている回路情報とが入れ替わる。
【００４２】
このような構成により、回路情報を入れ替えるためにマクロセルをほとんど停止させることなく、（あるいは停止時間を短時間に抑え）、回路情報ロード用シフトレジスタ１１１から、ＬＵＴの回路情報記憶部１２１への新たなコンテクストデータのロードと、回路情報記憶部１２１から回路情報ロード用シフトレジスタ１１１への実行中の回路情報の待避が同時に行える。
【００４３】
その後、回路情報ロード用シフトレジスタ１１１へ退避させた回路情報を、再度実行する場合には、回路情報ロード用シフトレジスタ１１１へ回路情報をロードする手順を省略して、上記同様に、ロード／交換切替信号（Context load/swap信号）により「交換」を指示した後、交換実行信号（Context swap Exec.信号）を入力することにより、回路情報記憶部１２１に記憶されている現在実行中の回路情報と、回路情報ロード用シフトレジスタ１１１で保持されている回路情報を入れ替えれる。
【００４４】
なお、上記説明では、ＬＵＴへの入力側、すなわち、回路情報の交換について説明したが、これは、ＬＵＴからの出力側、すなわち、ステータスの交換についても同様である。
【００４５】
次に、ステータスの交換について、図５を参照して説明する。
【００４６】
ＬＵＴから出力されるステータスを記憶するためのステータス記憶部１２２は、複数のフリップフロップ回路からなり、各フリップフロップ回路のデータ入力端子は、デコーダ・セレクタ１３の各出力端子とロード／交換切替スイッチ１４を介して接続されている。
【００４７】
ステータスロード用シフトレジスタ１１２は、ステータス記憶部１２２の複数のフリップフロップ回路にそれぞれ対応する複数のフリップフロップ回路からなる。ステータスロード用シフトレジスタ１１２の一列に並べられたフリップフロップ回路群では、前段のフローチャートのデータ出力端子と、後段のフリップフロップ回路のデータ入力端子と、当該前段のフリップフロップ回路に対応するステータス記憶部１２２のフリップフロップ回路のデータ出力端子とが、ロード／交換切替スイッチ１４を介して接続されている。
【００４８】
ステータス記憶部１２２の各フリップフロップ回路のデータ入力端子は、当該フリップフロップ回路に対応するステータスロード用シフトレジスタ１１２のフリップフロップ回路のデータ出力端子と、デコーダ・セレクタ１３の出力端子とに、ロード／交換切替スイッチ１４を介して接続されている。
【００４９】
また、ステータスロード用シフトレジスタ１１２の最後のフリップフロップ回路のデータ出力端子と、次のマクロセル内のステータスロード用シフトレジスタ１１２の最初のフリップフロップ回路のデータ入力端子とが、ロード／交換切替スイッチ１４を介して接続されている。
【００５０】
ステータスをマクロセルにロードする際には、ロード／交換切替信号（Context load/swap信号）により「ロード」が指示され、ロード／交換切替スイッチ１４が、ロード側に設定される。これにより、ステータスロード用シフトレジスタ１１２の各フリップフロップ回路は、そのデータ入力端子及び出力端子が、その前段に配置されているフリップフロップ回路のデータ出力端子、及びその後段に配置されているフリップフロップ回路のデータ入力端子にそれぞれ接続されて、直列に接続される。また、各マクロセルのステータスロード用シフトレジスタ１１２の最後のフリップフロップ回路のデータ出力端子と、次のマクロセル内のステータスロード用シフトレジスタ１１２の最初のフリップフロップ回路のデータ入力端子とが直結される。その結果、回路情報ロード用シフトレジスタ１１１は、回路情報記憶部１２１から切り離され、複数のマクロセル間で、それぞれのステータスロード用シフトレジスタ１１２が直列に接続される。このような状態のときに、ゲートアレイ部１に入力されるステータスは、ステータスロード用シフトレジスタ１１２により、ステータス用クロック信号（Context load clock for status信号）に従って、順送りに全てのマクロセルに転送され。
【００５１】
ロード／交換切替信号（Context load/swap信号）により「交換」が指示され、ロード／交換切替スイッチ１４が、交換（swap）側に設定されると、ステータスロード用シフトレジスタ１１２の各フリップフロップ回路のデータ出力端子からの出力が、当該フリップフロップ回路に対応するステータス記憶部１２２のフリップフロップ回路の入力端子に入力する。また、ステータスロード用シフトレジスタ１１２の各フリップフロップ回路の入力端子は、その前段のフリップフロップ回路の出力端子から切り離され、ステータス情報記憶部１２２のフリップフロップ回路の出力端子に接続する。
【００５２】
このような状態において、交換実行信号（Context swap Exec.信号）が入力されると、そのタイミングで、ステータス記憶部１２２に記憶されている現在実行中のコンテクストのステータスと、ステータスロード用シフトレジスタ１１２で保持されている別のコンテクストのステータスとが入れ替わる。
【００５３】
このような構成により、ゲートアレイ部１へのコンテクストの入れ替えのため（回路情報・接続情報とともに、ステータスを入れ替えるため）に、マクロセルをほとんど停止させることなく、（あるいは停止時間を短時間に抑え）、ステータスロード用シフトレジスタ１１２から、ステータス記憶部１２２への新たなステータスのロードと、ステータス記憶部１２２からステータスロード用シフトレジスタ１１２への実行中のコンテクストのステータスの待避が同時に行える。
【００５４】
ロード／交換切替信号（Context load/swap信号）により「交換」が指示され、その後、交換実行信号が入力されたときに、一斉に、上述のような回路情報の交換、及びステータスの交換が行われ、コンテクストの交換が実現される。
【００５５】
コンテクスト交換後、再度、元のコンテクストを実行する場合には、上述の回路情報と同様、ステータスについても、以下のような手順で復元する。すなわち、ステータス用シフトレジスタ１１２へ退避させたステータスを復元する場合には、ステータス用シフトレジスタ１１２へステータスをロードする手順を省略して、上記同様に、ロード／交換切替信号（Context load/swap信号）により「交換」を指示した後、交換実行信号（Context swap Exec.信号）を入力することにより、ステータス記憶部１２２に記憶されている現在実行中のコンテクストのステータスと、ステータスロード用シフトレジスタ１１２で保持されている別のコンテクストのステータスを入れ替える。
【００５６】
以上のようにして、コンテクストの交換により、待避させたコンテクストが、次に実行されるコンテクストでない場合には、次に実行すべき新たなコンテクストをロードするために、ステータスロード用シフトレジスタ１１２に待避させたステータスを回収する必要がある。回収されたステータスは、ステータス記憶部２に記憶される。この場合、例えば、ロード／交換切替信号（Context load/swap信号）により「ロード」を指示した後、ステータスロード用シフトレジスタ１１２内のステータスは、ステータス用クロック信号（Context load clock for status信号）に従って、複数のマクロセル間で順送りに転送されて、ステータス記憶部２へ記憶される。
【００５７】
以上は、コンテクストの交換に伴う回路情報の交換及びステータスの交換について説明したが、当該コンテクストの交換に伴いマクロセル間結合網の接続情報を交換する場合も同様である。
【００５８】
なお、上記第１の実施形態では、回路情報やステータスをロードするために、それぞれ１本のデータ線を用いて行う場合を示した、この場合に限らず、複数のデータ線を用い、各データ線に対応する動作を並列に行うことにより、回路情報やステータスのロードに係る時間を短縮することができる。
【００５９】
以上説明したように、上記第１の実施形態によれば、実行中コンテクストデータを記憶する各記憶素子（実行中コンテクスト記憶部１２）に対応する複数の記憶素子（コンテクストロード用シフトレジスタ１１）を設け、ルックアップテーブル内の実行中コンテクスト記憶部１２に記憶されているコンテクストデータの実行中に、次に実行すべき別のコンテクストをコンテクストロード用シフトレジスタ１１を用いてゲートアレイ部１へ転送・ロードすることにより、ゲートアレイ内部の記憶素子の数を必要最小限に抑えつつ、コンテクストの切替に要する時間を大幅に削減することができる。
【００６０】
（第２の実施形態）
図６は、第２の実施形態に係る、ゲートアレイ部１と、その周辺の要部の構成例を示したものである。異なる回路情報を入れ替えて利用することにより、図３のゲートアレイ部１で複数種類の回路動作を実現するようになっている。なお、図６において、図１と同一部分には同一符号を付し、異なる部分についてのみ説明する。
【００６１】
すなわち、図６のゲートアレイ部１には、当該ゲートアレイ部１を備える装置の制御部（図示せず）から、各マクロセルにロードするための回路情報と、マクロセル間結合網にロードするための接続情報と、（回路情報、ステータス及び接続情報などの）コンテクストデータのロード／交換を指示するためのロード／交換切替信号の他、バイパス制御信号も入力される。
【００６２】
図６に示すように、ゲートアレイ部１は、各マクロセルへのコンテクストデータの転送経路が直列に接続されて構成されている。
【００６３】
ゲートアレイ部１にロードする回路情報によっては、ゲートアレイ部１が備える全てのマクロセルを使用しない場合もあり得る。
【００６４】
そこで、このような場合、第２の実施形態に係るゲートアレイ部１では、回路情報やステータスといったコンテクストデータをロードする際には、コンテクストをロードする必要のないマクロセルをバイパスする。ステータスを回収する場合も同様で、ステータスを回収する必要のないマクロセルはバイパスする。
【００６５】
図７は、第２の実施形態に係るゲートアレイ部１を構成する各マクロセルの内部構成例を概略的に示したものである。なお、図７において、図４と同一部分には同一符号を付し、異なる部分について説明する。
【００６６】
すなわち、図７では、当該マクロセルを使用するか否か（コンテクストデータをロードするか否か、ステータスを回収するか否か）を示すバイパス制御情報を記憶する記憶素子１５と、記憶素子１５に記憶されたバイパス制御情報を基に、当該マクロセルをバイパスする／しないを設定するためのスイッチ１６をさらに備えている。
【００６７】
コンテクスト毎に、使用しない不要なマクロセルがあれば、それが予め定められている。そこで、コンテクスト毎に、各マクロセルについて、当該マクロセルを使用するか否か（バイパスしない／バイパスする）を示すバイパス制御情報を記憶素子１５に記憶する。各マクロセルに対応するバイパス制御情報は、コンテクストデータと同様に、直列に接続されたマクロセル間を順送りに転送することで、各マクロセルの記憶素子１５に、当該マクロセルに対応するバイパス制御情報が記憶される。
【００６８】
各マクロセルに対応するバイパス制御情報により、当該マクロセルを使用するか否かを識別できればよいので、バイパス制御情報を記憶するための記憶素子１５のデータ容量は非常に小さい。例えば、１ｂｉｔであってもよい。
【００６９】
マクロセルの記憶素子１５に、当該マクロセルに対応するバイパス制御情報が記憶され、それが、「使用されない」すなわち、「バイパスされる」と示している場合には、当該マクロセルのスイッチ１６は、バイパス側に設定され、当該マクロセルに入力されるコンテクストデータは、そのまま（コンテクストロード用シフトレジスタ１１を通ることなく）、当該マクロセルから出力され次のマクロセルへ入力する。
【００７０】
マクロセルの記憶素子１５に、当該マクロセルに対応するバイパス制御情報が記憶され、それが、「使用する」すなわち、「バイパスされない」と示している場合には、当該マクロセルのスイッチ１６は、ロード側に設定され、当該マクロセルに入力されるコンテクストデータはコンテクストロード用シフトレジスタ１１を通り、当該マクロセルへロードされる。
【００７１】
コンテクストデータのマクロセルへのロードは以下の通りである。まず、コンテクストデータの転送に先立って、バイパス制御信号が入力する。入力されたバイパス制御信号は、各マクロセルが備えるフリップフロップ回路からなる記憶素子１５を通じて、次のマクロセルに順送りに転送され、各マクロセルの記憶素子１５に、当該マクロセルに対応するバイパス制御情報が記憶される。
【００７２】
当該マクロセルに対応するバイパス制御情報が記憶素子１５に記憶されると、当該バイパス制御情報を基に、スイッチ１６が、バイパス側あるいはロード側に設定される。次に、コンテクストデータが入力する。
【００７３】
このとき、スイッチ１６がバイパス側に設定されている場合には、当該マクロセルに入力した回路情報は、そのままスイッチ１６を介して、当該マクロセルから出力され、次のマクロセルへ転送される。また、当該マクロセルに入力したステータスは、そのままスイッチ１６を介して、当該マクロセルから出力され、次のマクロセルへ転送される。
【００７４】
スイッチ１６がロード側に設定されている場合には、前述の第１の実施形態と同様である。
【００７５】
マクロセルからステータスを回収する場合は、上述のコンテクストをロードする場合とほぼ同様である。すなわち、ステータスの回収に先立って、バイパス制御信号が入力され、当該マクロセルに対応するバイパス制御情報が記憶素子１５に記憶される。当該バイパス制御情報を基に、スイッチ１６が、バイパス側あるいはロード側に設定される。
【００７６】
スイッチ１６がバイパス側に設定されている場合には、図７に示すように、当該マクロセルは、ステータスの回収ラインから切り離されている。従って、その後、ステータスの回収のためにステータス用クロック信号（Context load clock for status信号）が入力され、ステータスの回収が開始しても、当該マクロセルからはステータスは回収されない。
【００７７】
スイッチ１６がロード側に設定されている場合には、前述の第１の実施形態と同様に、ステータスの回収のためにステータス用クロック信号（Context load clock for status信号）が入力され、ステータスの回収が開始すると、当該マクロセルから、ステータスが回収され、当該ステータスは、ステータス記憶部２に記憶される。
【００７８】
なお、コンテクストデータのロードを行うと同時に、ステータス用シフトレジスタ１１２に待避させたステータスを回収するための転送も開始される。従って、ステータス回収時に全マクロセルのパイパス制御情報を変更しなくて良い場合には（ステータスの回収時とコンテクストデータのロード時の各マクロセルのバイパス制御情報が一致する場合には）、コンテクストデータのロード時と、ステータスの回収時とに、それぞれ別個にバイパス制御信号の入力を行う必要はない。例えば、コンテクストデータのロード時に、コンテクストデータのロード時とステータスの回収時とで共通のバイパス制御信号を入力すればよい。
【００７９】
なお、マクロセル間結合網３の接続情報についても、上述同様である。
【００８０】
以上説明したように、コンテクスト毎に、各マクロセルに対し、コンテクストデータのロード時やステータスの回収時に当該マクロセルをバイパスするか否かを、当該マクロセルに対応するバイパス制御情報で制御する。
【００８１】
なお、第１の実施形態で説明したように、図７に示した構成によれば、各マクロセルで、あるコンテクストを実行中に、別のコンテクストを各マクロセルのコンテクストロード用シフトレジスタ１１にロードし、実行中コンテクスト記憶部１２に記憶されている現在実行中のコンテクストと、コンテクストロード用シフトレジスタ１１で保持されているコンテクストとを、交換実行信号（Context swap Exec.信号）により、一斉に入れ替える。
【００８２】
そこで、各マクロセルに、実行中のコンテクストに対応する第１のバイパス制御情報と、次に実行すべきコンテクストのロード時に用いる第２のバイパス制御情報との２つのバイパス制御情報を記憶素子１５に記憶する。
【００８３】
各マクロセルで、あるコンテクストを実行中に、次に実行すべきコンテクストをロードする場合、当該次に実行すべきコンテクストデータをロードする前に、各マクロセルに対し、現在実行中のコンテクストに対応する第１のバイパス制御情報と、当該実行中のコンテクストに対応する第２のバイパス制御情報をロードするためのバイパス制御信号がゲートアレイ部１に入力される。
【００８４】
なお、上記バイパス制御信号は、当該ゲートアレイ部１を備える装置の制御部から当該ゲートアレイ部１へ入力される。
【００８５】
記憶素子１５は、第１のバイパス制御情報を記憶する第１の記憶素子１５ａと、第２のバイパス制御情報を記憶する第２の記憶素子１５ｂを含む。
【００８６】
そして、交換実行信号（Context swap Exec.信号）によりコンテクストを交換する際には、記憶素子１５ａと記憶素子１５ｂとの間で、第１のバイパス制御情報と第２のバイパス制御情報とを入れ替える。
【００８７】
図８は、図７に示したマクロセルの構成をより詳細に示したもので、各マクロセルが、上記２つのバイパス制御情報を用いる場合を示している。なお、図８において、図５と同一部分には同一符号を付し、異なる部分について説明する。すなわち、図８に示すマクロセルでは、ロード／交換切替信号（Context load/swap信号）により「ロード」が指示されたとき、次に実行すべきコンテクストデータのロードに先立って、各マクロセルに現在実行中のコンテクストに対応する第１のバイパス制御情報と、当該次に実行すべきコンテクストのロード時に用いる第２のバイパス制御情報をロードするためのバイパス制御信号（Bypass input信号）を転送し、当該マクロセルに対応する第１及び第２のバイパス制御情報を保持するための記憶素子１５ａ、１５ｂを備える。この記憶素子１５ａ、１５ｂは、それぞれフリップフロップ回路からなる。
【００８８】
各マクロセルの記憶素子１５ａには、当該マクロセルに対応する第１のバイパス制御情報が記憶され、記憶素子１５ｂには、当該マクロセルに対応する第２のバイパス制御情報が記憶される。
【００８９】
また、図８では、記憶素子１５ｂに記憶されたバイパス制御情報が、「使用しない」すなわち、「バイパスする」と示している場合には、当該マクロセルをバイパスするためのスイッチ１６を備える。
【００９０】
コンテクストデータ（図８では、回路情報、ステータス）のマクロセルへのロードは以下の通りである。まず、次に実行すべきコンテクストデータの転送に先立って、バイパス制御信号が入力する。入力されたバイパス制御信号は、各マクロセルが備える２つのフリップフロップ回路からなる記憶素子１５を通じて、次のマクロセルに伝達される。当該マクロセルに対応する第１及び第２のバイパス制御情報が記憶素子１５ａ及び１５ｂに記憶されると、記憶素子１５ｂに記憶されたバイパス制御情報を基に、スイッチ１６が、バイパス側あるいはロード側に設定される。次に、コンテクストデータが入力する。
【００９１】
このとき、スイッチ１６がバイパス側に設定されている場合には、回路情報ロード用シフトレジスタ１１１は、回路情報転送ラインから切り離されて、ステータスロード用シフトレジスタ１１２は、ステータス転送ラインから切り離されている。従って、当該マクロセルに入力した回路情報は、そのままスイッチ１６を介して、当該マクロセルから出力され、次のマクロセルへ入力される。また、当該マクロセルに入力したステータスは、そのままスイッチ１６を介して、当該マクロセルから出力され、次のマクロセルへ入力される。
【００９２】
スイッチ１６がロード側に設定されている場合には、前述の第１の実施形態と同様である。
【００９３】
次に実行すべきコンテクストの回路情報及びステータスの転送が終了すると、当該次に実行すべきコンテクストに使用される各マクロセルの回路情報ロード用シフトレジスタ１１１及びステータスロード用シフトレジスタ１１２には、当該マクロセルに対応する回路情報及び当該マクロセルに対応するステータスが記憶されている。
【００９４】
この後、ロード／交換切替信号（Context load/swap信号）により「交換」が指示されると、スイッチ１４は「交換」側に設定される。さらに、交換実行信号（Context swap Exec.信号）により、回路情報記憶部１２１と回路情報ロード用シフトレジスタ１１１との間、ステータス記憶部１２２とステータスロード用シフトレジスタ１１２との間、現在実行中のコンテクスト（回路情報とステータス）と次に実行すべきコンテクスト（回路情報とステータス）とが一斉に入れ替わる。これと同時に、さらに、第１の記憶素子１５ａと第２の記憶素子１５ｂとの間においても、現在実行中のコンテクストに対応する第１のバイパス制御情報と次に実行すべき第２のバイパス制御情報とが入れ替わる。
【００９５】
この結果、第２の記憶素子１５ｂには、第１のバイパス制御情報が記憶され、第１の記憶素子１５ａには第２のバイパス制御情報が記憶される。
【００９６】
コンテクスト交換後、再度、元のコンテクストを実行する場合には、第１の実施形態と同様にして、回路情報ロード用シフトレジスタ１１１及びステータスロード用シフトレジスタ１１２に待避された回路情報やステータスを復元されるが、さらに、第１の記憶素子１５ａと第２の記憶素子１５ｂとの間においても、バイパス制御情報の入れ替えが行われる。
【００９７】
一方、コンテクスト交換後、待避された元のコンテクストのステータスを回収する場合について説明する。上述のようにコンテクストが交換されると、第２の記憶素子１５ｂには、元のコンテクストに対応する第１のバイパス制御情報が記憶される。その結果、スイッチ１６は、第１のバイパス制御情報により、バイパス側／ロード側に設定される。
【００９８】
すなわち、コンテクスト交換後は、第１のバイパス制御情報により、元のコンテクストで使用されていないマクロセルのスイッチ１６はバイパス側に設定され、当該マクロセルは、ステータスの回収ラインから切り離されている。また、元のコンテクストで使用されたマクロセルのスイッチ１６はロード側に設定される。
【００９９】
その後、元のコンテクストのステータスの回収のためにステータスロード用クロック信号（Context load clock for status信号）が入力され、ステータスの回収が開始されると、第１のバイパス制御情報によりバイパスされたマクロセルからはステータスは回収されない。元のコンテクストで使用されていたマクロセルからは、ステータスロード用クロック信号（Context load clock for status信号）に従って、ステータスが回収ラインで転送され、ステータス記憶部２に記憶される。
【０１００】
なお、コンテクストデータのロードを行うと同時に、ステータスロード用シフトレジスタ１１２に待避されたステータスを回収するための転送も開始される。従って、ステータス回収時と、コンテクストデータのロード時とで、全マクロセルのパイパス制御情報を変更しなくて良い場合には（ステータスの回収時とコンテクストデータのロード時の各マクロセルのバイパス制御情報が一致する場合には）、次に実行すべきコンテクストに対応する第２のバイパス制御情報を用いて、当該次に実行すべきコンテクストをロードする際に、ステータスロード用シフトレジスタ１１２に待避されたコンテクストのステータスを回収する。
【０１０１】
なお、マクロセル間結合網３の接続情報についても、上述同様である。
【０１０２】
また、上記第２の実施形態では、回路情報やステータスをロードするために、それぞれ１本のデータ線を用いて行う場合を示した、この場合に限らず、複数のデータ線を用い、各データ線に対応する動作を並列に行うことにより、回路情報やステータスのロードに係る時間を短縮することができる。
【０１０３】
以上説明したように、上記第２の実施形態によれば、ゲートアレイ部１でコンテクストの実行中に、次に実行すべき別のコンテクストをゲートアレイ部１へ転送・ロードし、その際、当該別のコンテクストで使用されないマクロセルはバイパスされるため、コンテクストデータの転送に要する時間を削減することができる。
【０１０４】
（第３の実施形態）
次に、第１及び第２の実施形態で説明したゲートアレイ部１にコンテクストデータを供給するための制御方法について説明する。
【０１０５】
前述したように、コンテクストデータは、ゲートアレイ部１に与える回路情報データと、当該回路情報に基づきゲートアレイ部１内に実現される回路の動作にともなって値が更新されるマクロセル内の状態保持フリップフロップ回路（ステータス記憶部１２２）に記憶されるステータスデータを含む。
【０１０６】
第３の実施形態に係るゲートアレイ部１及びその周辺の要部の構成例を図９に示す。なお、図９では、第１の実施形態で説明したゲートアレイ部１に対応する構成を示しているが、第２の実施形態で説明したゲートアレイ部１にも同様に適用可能である。また、図９では、図３と同一部分には同一符号を付している。
【０１０７】
図９では、第３の実施形態に係るコンテンツデータの供給制御方法を実現するために、コンテクスト制御部５が新たに追加され、図３のステータス記憶部２に代えて、コンテクストデータを記憶するためのＤ−ＲＡＭ等のコンテクスト記憶部６を備えている。
【０１０８】
ゲートアレイ部１を備える装置の制御部が備えるスケジューラ（図示せず）により、後に実行すべきコンテクスト識別子が与えられると、コンテクスト制御部５は、このコンテクスト識別子に対応するコンテクストデータを、コンテクストデータ記憶部６から取得し、ゲートアレイ部１に与える。また、コンテクスト制御部５は、ゲートアレイ部１で実行されたコンテクストデータを回収し、コンテクストデータ記憶部６に記憶する。
【０１０９】
ゲートアレイ部１で使用される回路情報やステータス、マクロセル間結合網にロードするための接続情報などのコンテクストデータは、コンテクスト記憶部６に記憶されている。
【０１１０】
ゲートアレイ部１のコンテクスト制御部５には、当該ゲートアレイ部１を備える装置の制御部（図示せず）から、各マクロセルにロードされるコンテクストデータの識別子（コンテクスト識別子）や、切替要求信号とが入力される。その他、図３には示していなが、ゲートアレイ部１内にコンテクストデータを転送するためのクロック信号（回路情報用クロック信号（Context load clock for LUT信号）、ステータス用クロック信号（Context load clock for status信号））などが入力される。
【０１１１】
図１０は、コンテクスト制御部５の構成例を示したものである。
【０１１２】
ゲートアレイ部１を備える装置の制御部から出力されたコンテクスト識別子は、まず、第２のコンテクスト識別子記憶部５０１に記憶され、交換実行信号（Context swap Exec.信号）により、第１のコンテクスト識別子記憶部５０２に記憶される。第１のコンテクスト識別子記憶部５０２に記憶されているコンテクスト識別子に対応するコンテクストが、現在ゲートアレイ部１で実行されているコンテクストである。
【０１１３】
また、交換実行信号（Context swap Exec.信号）により、ゲートアレイ部１内のコンテクストデータが交換される。すなわち、第１及び第２の実施形態で説明したように、ゲートアレイ部１のコンテクストロード用ソフトレジスタ１１に記憶されていたコンテクストデータが、実行中コンテクスト記憶部１２に記憶され、逆に、実行中コンテクスト記憶部１２に記憶されていたコンテクストデータが、コンテクストロード用ソフトレジスタ１１に記憶される。
【０１１４】
従って、交換実行信号（Context swap Exec.信号）により、交換が実行された後に、実行中コンテクスト記憶部１２に記憶されているコンテクストデータに対応するコンテクスト識別子が、第１のコンテクスト識別子記憶部５０２に記憶されている。また、交換実行信号（Context swap Exec.信号）により、交換が実行された後に、コンテクストロード用ソフトレジスタ１１に記憶されているコンテキストデータに対応するコンテキスト識別子が、第３のコンテクスト識別子記憶部５０３に記憶されている。さらに、第２のコンテクスト識別子記憶部５０１には、実行中コンテクスト記憶部１２に記憶されているコンテクストの次に実行すべきコンテクストの識別子が記憶されている。
【０１１５】
このような状態において、コンテクスト制御部５の処理動作について、図１１に示すフローチャートを参照して説明する。
【０１１６】
ステップＳ０：ゲートアレイ部１を備える装置の制御部が備えるスケジューラ（図示せず）から与えられた、次に実行すべきコンテクスト識別子が、交換実行信号（Context swap Exec.信号）により、第２のコンテクスト識別子記憶部５０１に記憶される。
【０１１７】
ステップＳ１：コンテクストロード判定部５０４は、第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子と、第３のコンテクスト識別子記憶部５０３に記憶されているコンテクスト識別子とを比較し、第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子に対応するコンテクストを、ゲートアレイ部１へロードすべきか否かを判定する。
【０１１８】
第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子と、第３のコンテクスト識別子記憶部５０３に記憶されているコンテクスト識別子とが一致するときには、第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子に対応するコンテクストデータは、既に、コンテクストロード用シフトレジスタ１１に記憶されている（待避させてある）ので、ゲートアレイ部１へロードしない、と判定する。この場合、コンテクストロード判定部５０４は、ゲートアレイ部１へのコンテンツデータのロードは不要である旨をコンテクスト入出力制御部５０５へ通知し、ステップＳ６へ進む。
【０１１９】
ステップＳ２：第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子と、第３のコンテクスト識別子記憶部５０３に記憶されているコンテクスト識別子とが不一致であるときには、第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子に対応するコンテクストをロードすべき、と判定する。そして、第３のコンテクスト識別子記憶部５０３に記憶されているコンテクスト識別子を、現在第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子で書き換える。また、コンテクスト入出力制御部５０５に対し、第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子に対応するコンテクストデータをゲートアレイ部１に転送するように指示を出す（コンテクストロード指示を出力する）。
【０１２０】
ステップＳ３：コンテクスト入出力制御部５０５は、コンテクストロード判別部５０４からのコンテクストロード指示を受け取ると、コンテクスト切替実行判断部５０６に、コンテクストデータのロード実行中である旨の通知を出力する。その後、第３のコンテクスト識別子記憶部５０３に記憶されているコンテクスト識別子に対応するコンテクストのステータスであって、現在ステータスロード用シフトレジスタ１１２に記憶されているステータスの回収を開始する。コンテクスト入出力制御部５０５は、回収されたステータスを、コンテクストデータ記憶部６に記憶する。
【０１２１】
ステップＳ４：その後、第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子に対応するコンテクストデータを、コンテクストデータ記憶部６から読み出し、当該コンテクストデータをゲートアレイ部１のコンテクストロード用シフトレジスタ１１へロードする。
【０１２２】
なお、ゲートアレイ部１が第１及び第２の実施形態で説明したような構成である場合、ゲートアレイ部１へのコンテンツデータのロードとステータスの回収は同時に実行可能である。
【０１２３】
ステップＳ５：コンテクスト入出力制御部５０５は、コンテクストデータのロードが終了すると、その旨の通知を、コンテクスト切替実行判断部５０６に出力する。
【０１２４】
ステップＳ６：コンテクスト切替実行判断部５０６は、当該ゲートアレイ部１を備える装置の制御部から、コンテクストの切り替えを要求する信号（切替要求信号）を受け取る。このとき、コンテクスト入出力制御部５０５がコンテクストのロードを実行している間は、コンテクストの交換を実行することができないので、実行を保留する。その後、コンテクスト入出力制御部５０５からコンテクストのロードが終了した旨の通知を受け取った時点で、コンテクストの交換を実行する。すなわち、交換実行信号（Context swap Exec.信号）をゲートアレイ部１へ出力する。なお、先に、コンテクスト入出力制御部５０５からコンテクストのロードが終了した旨の通知を受け取り、その後、切替要求信号を受け取ったときには、その時点で、コンテクストの交換を実行する。
【０１２５】
また、ステップＳ１において、コンテクストデータのロードが不要である旨を通知を受け取っている場合には、切替要求信号を受けた時点でコンテクストの交換を実行する。
【０１２６】
以上説明したように、上記第３の実施形態によれば、コンテクストデータをゲートアレイ部１内にロードする回数が削減することができる。
【０１２７】
（第４の実施形態）
図１２は、コンテクスト制御部５の他の構成例を示したものである。図１２に示すコンテクスト制御部５は、第１及び第２の実施形態で説明したゲートアレイ部１に適用可能である。また、図１２では、図１０と同一部分には同一符号を付している。
【０１２８】
ゲートアレイ部１を備える装置の制御部から出力されたコンテクスト識別子は、まず、第４のコンテクスト識別子記憶部５０９に記憶される。第４のコンテクスト識別子記憶部５０９に記憶されたコンテクス識別子に対応するコンテクストは、現在実行中のコンテクストの次の次に実行されるコンテクストを示すことになる。
【０１２９】
第２のコンテクスト識別子記憶部５０１に記憶されたコンテクスト識別子は、現在実行中のコンテクストの次に実行されるコンテクストを示し、第１のコンテクスト識別子記憶部５０２に記憶されたコンテクスト識別子は、現在実行中の（実行中コンテクスト記憶部１２に記憶されている）コンテクストを示す。第３のコンテクスト識別子記憶部５０３に記憶されたコンテクスト識別子は、コンテクストロード用シフトレジスタ１１に待避させたコンテクストを示す。
【０１３０】
交換実行信号（Context swap Exec.信号）により、第４のコンテクスト識別子記憶部５０９に記憶されたコンテクスト識別子は、第２のコンテクスト識別子記憶部５０１に記憶され、第４のコンテクスト識別子記憶部５０９は、次の新たなコンテクスト識別子が記憶される。
【０１３１】
同時に、第２のコンテクスト識別子記憶部５０１に記憶されたコンテクスト識別子は、第１のコンテクスト識別子記憶部５０２に記憶され、第１のコンテクスト識別子記憶部５０２に記憶されたコンテクスト識別子は、第３のコンテクスト識別子記憶部５０３に記憶される。
【０１３２】
また、交換実行信号（Context swap Exec.信号）により、ゲートアレイ部１内のコンテクストデータが交換される。すなわち、第１及び第２の実施形態で説明したように、ゲートアレイ部１のコンテクストロード用ソフトレジスタ１１に記憶されていたコンテクストデータが、実行中コンテクスト記憶部１２に記憶され、逆に、実行中コンテクスト記憶部１２に記憶されていたコンテクストデータが、コンテクストロード用ソフトレジスタ１１に記憶される。
【０１３３】
コンテクストキャッシュ５１０は、コンテクスキャッシュ制御部５０７が、過去にコンテクストデータ記憶部６から読み出したコンテクストデータと、その識別子を記憶するためのキャッシュメモリである。コンテクストキャッシュ５１０に記憶されている各コンテクストの識別子は、例えば、コンテクスト識別子リストとしてコンテクストキャッシュ５１０に記憶されている。
【０１３４】
ここで、図１３に示すフローチャートを参照してコンテクスト検索部５０８と、コンテクストキャッシュ制御部５０７の処理動作について説明する。
【０１３５】
ステップＳ１０１：交換実行信号（Context swap Exec.信号）により、第４のコンテクスト識別子記憶部５０９に、新たなコンテクスト識別子「Ｃ」が記憶されたとする。
【０１３６】
ステップＳ１０２：このとき、コンテクスト検索部５０８は、コンテクストキャッシュ５１０に記憶されているコンテクスト識別子リスト５１１を参照して、新たなコンテクスト識別子「Ｃ」がコンテクストキャッシュ５１０に既に記憶されているか否か検索する。
【０１３７】
コンテクスト識別子「Ｃ」のコンテクストデータがコンテクストキャッシュ５１０に、既に記憶されているときには、ステップＳ１０８へ進み、当該コンテクストデータのロードが終了している旨をコンテクスト入出力部５０５へ通知して、処理を終了する。あるいは、即、処理を終了する。
【０１３８】
ステップＳ１０３：コンテクスト識別子「Ｃ」のコンテクストデータがコンテクストキャッシュ５１０に記憶されていないときには、コンテクスト検索部５０８は、その旨の通知をコンテクストキャッシュ制御部５０７へ出力する。
【０１３９】
コンテクストキャッシュ制御部５０７は、この通知を受けて、コンテクストデータ記憶部６から、コンテクスト識別子「Ｃ」のコンテクストデータを読み出して、コンテクストキャッシュ５１０にロードする。
【０１４０】
なお、コンテクストキャッシュ５１０は、コンテクスト識別子から当該コンテクストがコンテクストキャッシュ５１０に存在しているかどうかが判別できればよく、その構造はここでは不問とする。
【０１４１】
ステップＳ１０３：コンテクストキャッシュ制御部５０７がコンテクストデータ記憶部６からコンテクストキャッシュ５１０へコンテクストデータをロードする際には、ロードを行っている旨の通知をコンテクストキャッシュ入出力制御部５０５に通知する。
【０１４２】
ステップＳ１０４、ステップＳ１０７：また、コンテクストデータのロードを行う場合に、コンテクストキャッシュ５１０に空き領域がある場合には、コンテクストキャッシュ制御部５０７は、当該空き領域に、コンテクストデータをロードする。
【０１４３】
ステップＳ１０４〜ステップＳ１０７：コンテクストキャッシュ５１０に、空き領域がない場合には、コンテクストキャッシュ制御部５０７は、コンテクストキャッシュ５１０に記憶されているコンテクストデータのなかから、コンテクストキャッシュ５１０から削除して、コンテクストデータ記憶部６に格納するコンテクストデータを選択する（ステップＳ１０５）。
【０１４４】
例えば、コンテクストキャッシュ５１０に、第１乃至第４のコンテクスト識別子記憶部５０１〜５０３、５０９のいずれにも、その識別子が記憶されていないコンテクストデータが記憶されていれば、当該コンテクストデータを選択する。あるいは、最後に使用した時点からもっとも経過時間の長いコンテクストデータを選択する、あるいは最もサイズの小さなコンテクストデータを選択する。もしくは両者を組み合わせて選択しても良い。また、選択する方法はこれらの方法だけではなくどれか１つを選択することができれば方法は限定しない。
【０１４５】
コンテクストキャッシュ制御部５０７は、このようにして選択されたコンテクストデータをコンテクストデータ記憶部６に格納した後（ステップＳ１０６）、当該コンテクストデータが記憶されていた領域に、コンテクスト識別子「Ｃ」のコンテクストデータをロードする（ステップＳ１０７）。
【０１４６】
ステップＳ１０８：コンテクストキャッシュ制御部５０７は、コンテクストデータのロードが終了すると、その旨をコンテクスト入出力制御部５０５へ通知する。
【０１４７】
以上の手順が終了した結果、コンテクストキャッシュ５１０には、第１乃至第４のコンテクスト識別子記憶部５０１〜５０３、５０９の記憶されている各コンテキスト識別子に対応するコンテンツデータが記憶されていることが望ましい。そのために、コンテクストキャッシュ５１０は、少なくとも４つのコンテクストデータを記憶するメモリ容量をもつことが望ましい。
【０１４８】
一方、コンテクストロード判定部５０４及びコンテクスト入出力制御部５０５の処理動作について、図１４に示すフローチャートを参照して説明する。なお、図１４において、図１１と同一部分には同一符号を付している。
【０１４９】
ステップＳ１：交換実行信号（Context swap Exec.信号）により、第２のコンテクスト識別子記憶部５０１と第３のコンテクスト識別子記憶部５０３に記憶されるコンテクスト識別子が書き換わる。コンテクストロード判定部５０４は、第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子と、第３のコンテクスト識別子記憶部５０３に記憶されているコンテクスト識別子とを比較し、第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子に対応するコンテクストをゲートアレイ部１へロードすべきか否かを判定する。
【０１５０】
第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子と、第３のコンテクスト識別子記憶部５０３に記憶されているコンテクスト識別子とが一致するときには、第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子に対応するコンテクストデータは、既に、コンテクストロード用シフトレジスタ１１に記憶されている（待避させてある）ので、ゲートアレイ部１へロードしない、と判定する。この場合、コンテクストロード判定部５０４は、ゲートアレイ部１へのコンテンツデータのロードは不要である旨をコンテクスト入出力制御部５０５へ通知し、ステップＳ６へ進む。
【０１５１】
ステップＳ２：第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子と、第３のコンテクスト識別子記憶部５０３に記憶されているコンテクスト識別子とが不一致であるときには、第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子に対応するコンテクストをロードすべき、と判定する。そして、第３のコンテクスト識別子記憶部５０３に記憶されているコンテクスト識別子を、現在第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子で書き換える。
【０１５２】
また、コンテクスト入出力制御部５０５に対し、第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子に対応するコンテクストデータを、コンテクストキャッシュ５１０から読み出して、ゲートアレイ部１に転送するように指示を出す（コンテクストロード指示を出力する）。
【０１５３】
ステップＳ３´：コンテクスト入出力制御部５０５は、コンテクストロード判別部５０４からのコンテクストロード指示を受け取ると、コンテクスト切替実行判断部５０６に、コンテクストデータのロード実行中である旨の通知を出力する。その後、コンテクストキャッシュ制御部５０７が、コンテンツキャッシュ５１０へのコンテクストデータのロードを行っている場合には、それが終了するまで待つ。
【０１５４】
ステップＳ３：コンテクストキャッシュ制御部５０７による、コンテンツキャッシュ５１０へのコンテクストデータのロードが終了したら、第３のコンテクスト識別子記憶部５０３に記憶されているコンテクスト識別子に対応するコンテクストデータの回収を開始する。すなわち、現在、回路情報ロード用シフトレジスタ１１１に記憶されている回路情報と、ステータスロード用シフトレジスタ１１２に記憶されているステータスの回収を開始する。コンテクスト入出力制御部５０５は、回収された回路情報及びステータスを、コンテクストキャッシュ５１０の当該回収されたコンテンツデータに対応する記憶領域に記憶する。
【０１５５】
ステップＳ４：その後、第２のコンテクスト識別子記憶部５０１に記憶されているコンテクスト識別子に対応するコンテクストデータ（回路情報及びステータスを含む）を、コンテクストキャッシュ５１０から読み出し、当該コンテクストデータをゲートアレイ部１のコンテクストロード用シフトレジスタ１１へロードする。
【０１５６】
なお、ゲートアレイ部１が第１及び第２の実施形態で説明したような構成である場合、ゲートアレイ部１へのコンテンツデータのロードとステータスの回収は同時に実行可能である。
【０１５７】
ステップＳ５：コンテクスト入出力制御部５０５は、コンテクストデータのゲートアレイ部１へのロードが終了すると、その旨の通知を、コンテクスト切替実行判断部５０６に出力する。
【０１５８】
ステップＳ６：コンテクスト切替実行判断部５０６は、当該ゲートアレイ部１を備える装置の制御部から、コンテクストの切り替えを要求する信号（切替要求信号）を受け取る。このとき、コンテクスト入出力制御部５０５が、ゲートアレイ部１へコンテクストのロードを実行している間は、コンテクストの交換を実行することができないので、実行を保留する。その後、コンテクスト入出力制御部５０５からコンテクストのロードが終了した旨の通知を受け取った時点で、コンテクストの交換を実行する。すなわち、交換実行信号（Context swap Exec.信号）をゲートアレイ部１へ出力する。なお、先に、コンテクスト入出力制御部５０５からコンテクストのロードが終了した旨の通知を受け取り、その後、切替要求信号を受け取ったときには、その時点で、コンテクストの交換を実行する。
【０１５９】
また、ステップＳ１において、コンテクストデータのロードが不要である旨を通知を受け取っている場合には、切替要求信号を受けた時点でコンテクストの交換を実行する。
【０１６０】
以上説明したように、上記第４の実施形態によれば、コンテクストデータをゲートアレイ部１内にロードする回数が削減することができ、コンテクストデータをゲートアレイ部１内にロードする場合には、キャッシュメモリ５１０からゲートアレイ部１へロードするため、コンテクストデータをゲートアレイ部１内にロードするための時間を大幅に短縮することができる。
【図面の簡単な説明】
【０１６１】
【図１】従来のプログラマブルゲートアレイの概略構成を示した図。
【図２】従来のプログラマブルゲートアレイのマクロセルの概略構成を示した図。
【図３】第１の実施形態に係るプログラマブルゲートアレイ装置の概略構成を示した図。
【図４】プログラマブルゲートアレイ装置のマクロセルの概略構成例を示した図。
【図５】マクロセルのより詳細な構成例を示した図。
【図６】第２の実施形態に係るプログラマブルゲートアレイ装置の概略構成を示した図。
【図７】プログラマブルゲートアレイ装置のマクロセルの概略構成例を示した図。
【図８】マクロセルのより詳細な構成例を示した図。
【図９】第３の実施形態に係るプログラマブルゲートアレイ装置の概略構成を示した図。
【図１０】図９のコンテクスト制御部の構成例を示した図。
【図１１】図１０のコンテクスト制御部の処理動作を説明するためのフローチャート。
【図１２】第４実施形態に係るコンテクスト制御部の構成例を示した図。
【図１３】図１２のコンテクスト制御部の処理動作を説明するためのフローチャート。
【図１４】図１２のコンテクスト制御部の処理動作を説明するためのフローチャート。
【符号の説明】
【０１６２】
１…ゲートアレイ部、２…ステータス記憶部、Ｍ…マクロセル、１１…コンテクストロード用シフトレジスタ、１２…実行中コンテクスト記憶部、１３…デコーダ・セレクタ、１４…ロード／交換切替スイッチ、１１１…回路情報ロード用シフトレジスタ、１１２…ステータスロード用シフトレジスタ、１２１…回路情報記憶部、１２２…ステータス記憶部。
【図１】
2007074262.tif 000003
【図２】
2007074262.tif 000004
【図３】
2007074262.tif 000005
【図４】
2007074262.tif 000006
【図５】
2007074262.tif 000007
【図６】
2007074262.tif 000008
【図７】
2007074262.tif 000009
【図８】
2007074262.tif 000010
【図９】
2007074262.tif 000011
【図１０】
2007074262.tif 000012
【図１１】
2007074262.tif 000013
【図１２】
2007074262.tif 000014
【図１３】
2007074262.tif 000015
【図１４】
2007074262.tif 000016