(57)【要約】【課題】  再起動を必要とすることなく、再読込みされたプログラムに基づいて動作することが可能な情報処理デバイス及びそれの上位デバイスを提供する。【解決手段】  ＰＣＩバス２を介して入力された再書込みデータ（論理データ）１４−１がメモリ１４に格納される。ローダ回路１３はメモリ１４の再書込みデータ１４−１に基づいてＦＰＧＡ１１に論理を展開する。この際、ＦＰＧＡ１１はコンフィグレーションレジスタ１１−２及び／又はユーザ回路１１−４のレジスタ値をメモリ１４に退避させる（退避データ１４−２）。再書込みデータに基づいて論理の再書込みが完了すると、ローダ回路１３は退避データ１４−２をＦＰＧＡ１１へ再設定する。これにより、再書込み前のレジスタ値がリストアされる。【選択図】          図１
2005182410.tif 000002
【特許請求の範囲】
【請求項１】
論理の書換えが可能な集積回路と、論理を前記集積回路へ展開するローダ回路と、前記集積回路と前記ローダ回路とからアクセス可能なメモリとを有する情報処理デバイスであって、
前記集積回路はレジスタを有し、
前記ローダ回路が前記集積回路へ前記論理を展開する際、該集積回路は前記レジスタに格納されているレジスタ値を前記メモリへ退避させることを特徴とする情報処理デバイス。
【請求項２】
前記レジスタにはコントローラから割り当てられたメモリ空間へアクセスするためのアドレスが格納されていることを特徴とする請求項１記載の情報処理デバイス。
【請求項３】
前記集積回路はコントローラとの間でデータを入出力するための制御回路を有し、
前記メモリは前記制御回路を介して前記コントローラから入力された論理データを保持し、
前記ローダ回路は前記メモリで保持された前記論理データに基づいて論理を前記集積回路へ展開することを特徴とする請求項１記載の情報処理デバイス。
【請求項４】
前記集積回路は前記コントローラからの指示をトリガとして、前記ローダ回路に論理の展開を要求することを特徴とする請求項３記載の情報処理デバイス。
【請求項５】
前記集積回路はＰＣＩバスを介してデータを入出力することを特徴とする請求項２記載の情報処理デバイス。
【請求項６】
前記集積回路はＦＰＧＡであることを特徴とする請求項１記載の情報処理デバイス。
【請求項７】
論理の書換えが可能で且つレジスタを備えた集積回路と、論理を前記集積回路へ展開するローダ回路と、前記集積回路と前記ローダ回路とからアクセス可能なメモリとを有し、前記ローダ回路が前記集積回路へ前記論理を展開する際、該集積回路は前記レジスタに格納されているレジスタ値を前記メモリへ退避させる情報処理デバイスと、前記情報処理デバイスと所定のバスを介して接続され、当該前記情報処理デバイスが要求するメモリ容量に基づいてメモリ空間を割り当てるコントローラとを有する情報処理装置であって、
前記コントローラは、前記情報処理デバイスが要求するメモリ容量の合計値が全体のメモリ容量を超過した場合、前記情報処理デバイスの優先度又は状態に基づいて当該情報処理デバイスに割り当てるメモリ領域を変更し、また、変更後のメモリ領域に基づいた動作を実現するための論理データを当該情報処理デバイスへ送信することを特徴とする情報処理装置。
【請求項８】
前記コントローラはＣＰＵ，ＤＭＡコントローラ又はＰＣＩブリッジであることを特徴とする請求項７記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理デバイス及び情報処理装置に関し、特に論理の際読込みが可能な集積回路を有する情報処理デバイス及び情報処理装置に関する。
【背景技術】
【０００２】
現在、設計したい論理回路に即座に組み換えることが可能な情報処理装置としてＦＰＧＡ（Field Programmable Gate Array）が存在する。図５にＦＰＧＡ１００の概略構成を示す。
【０００３】
図５に示すように、ＦＰＧＡ１００は論理ブロック１０１とスイッチマトリクス１０２とクロスポイントスイッチ１０３とが配列された構成を有する。論理ブロック１０１はＬＵＴ（Look Up Table）と呼ばれるメモリとマルチプレクサとを含み、これらを組み合わせることによって様々な論理を実現する。従って、ＬＵＴを書き換えることで、論理ブロック１０１は種々の論理素子（例えばＡＮＤ回路やＯＲ回路やＸＯＲ回路等）として機能することができる。また、スイッチマトリクス１０２とクロスポイントスイッチ１０３とは、論理ブロック１０１間の接続を制御する。これらスイッチマトリクス１０２とクロスポイントスイッチ１０３ともメモリを含む。このメモリには、外部からロードされた接続制御情報が格納される。従って、メモリ内の接続制御情報を書き換えることで、論理ブロック１０１間の接続を種々変更することができる。尚、以下の説明では、ＬＵＴ及び接続制御情報を論理データという。更に、ＦＰＧＡには外部から論理データをロードするためのＩ／Ｏブロックも組み込まれている。
【０００４】
このようなＦＰＧＡには、通常、予め論路データが書き込まれたＲＯＭ（Read Only Memory）が接続される。ＦＰＧＡは起動後、先ずＲＯＭから論理データをダウンロードし、これに従って論理回路を展開する。従って、ＲＯＭ内部の論理データを書き換えることで、種々の論理を実現することができる。例えばシステム開発の現場では、デバッグした論理データで逐次ＲＯＭを書換えることで、正しく動作する論理回路を設計している。近年では、マスクＲＯＭ等のような書換えに手間を要するＲＯＭの代わりに、例えばＥＰＲＯＭ（Erasable Programmable ROM）やＥＥＰＲＯＭ（Electrically Erase Programmable ROM）やＦＲＯＭ（Flash ROM）等の書換え可能な不揮発性メモリを使用することで、デバッグ時の時間や作業を削減することができ、論理設計や修正に要する時間を大幅に短縮することができる。
【０００５】
図６（ａ）及び（ｂ）に、ＦＰＧＡのデバッグを行う際に使用する構成の概略図を示す。先ず図６（ａ）に示すように、ＦＰＧＡ１００はＲＯＭ１１０に接続されており、ＲＯＭ１１０から論理データをダウンロードすることで、種々の論理を実現する。このＲＯＭ１１１を書き換える場合、ユーザはＲＯＭ１１１をソケット１１０から取り外し、ＲＯＭライタ１２０などの外部機器に装着する。ＲＯＭライタ１２０にはコントローラ１３０が接続されている。このコントローラ１３０は、例えばパーソナルコンピュータ等の情報処理装置であり、自己に組み込まれたアプリケーションを用いてＦＰＧＡ１００へ組み込むための論理をユーザに設計させる。コントローラ１３０は設計された論理に基づいて、これを実現するための論理パターンを生成する。すなわち、コントローラ１３０は論理を回路へ翻訳するためのパターンジェネレータ１３１を有する。コントローラ１３０はパターンジェネレータ１３１で生成された論理パターンを実現するための論理データを生成し、これをＲＯＭライタ１２０へ入力する。ＲＯＭライタ１２０は、入力された論理データでＲＯＭ１１１を書き換える。その後、書き換えられたＲＯＭ１１１はソケット１１０へ戻される。これにより、ＦＰＧＡ１００へダウンロードされる論理データが変更される。
【０００６】
また、ソケット１１０を使用せず、ＲＯＭ１１１が基板１４０に直接設けられた場合では、図６（ｂ）に示すように、同一基板１４０にＲＯＭ書込みコネクタ１４１を設けておき、コントローラ１３０からＲＯＭ書込みコネクタ１４１を介してＲＯＭ１１１を書き換える。この際、ＩＥＥＥ１３９４．１に準ずるＪＴＡＧ（Joint Test Action Group）等のデバッグ用インタフェースを使用することで、ＦＰＧＡ１００に直接論理を展開することが可能となる。
【０００７】
上記のようなＦＰＧＡは、例えばＰＣＩ（Peripheral Components Interconnect）ボード等のような着脱可能なモジュールに実装することが可能である。図７に一般的なＰＣＩデバイス（ボード）３００の構成を示す。
【０００８】
図７に示すように、ＰＣＩデバイス３００は、ＰＣＩ専用制御回路３１０とＦＰＧＡ１００とＲＯＭ３２１，１１１とローダ回路３５０とメモリ３６０とを有する。ＰＣＩ専用回路３１０はＰＣＩインタフェースデバイスであり、ＰＣＩバス３０３を介したデータの入出力を行う。このＰＣＩ専用回路３１０は通常ＡＳＩＣ（Application Specific Integrated Circuit）で構成される。ＰＣＩ専用回路３１０はＰＣＩデバイス３００を制御するためのＩ／Ｏアドレス（これを以下、ＰＣＩアドレスという）等を格納するコンフィグレーションレジスタ３１１を有する。また、ＰＣＩ専用回路３１０にはＲＯＭ３２１等が接続される。ＲＯＭ３２１には上記コンフィグレーションレジスタ３１１のレジスタ値が格納されている。ＰＣＩ専用制御回路３１０にはＰＣＩバス３０３を介してＰＣＩブリッジ（以下、ＰＣＩバス３０３を制御するチップセットをＰＣＩブリッジという）３０２が接続される。ＰＣＩブリッジ３０２は、ＲＯＭ３２１に格納されたレジスタ値を参照することで、ＰＣＩ規則に沿った動作をＰＣＩ専用制御回路３１０に実行させる。
【０００９】
この他、ＰＣＩ専用制御回路３１０のバックエンドには、ＦＰＧＡ１００やローダ回路３５０やメモリ３６０等が直列又は並列に設けられる。ＦＰＧＡ１００には上述のようにＲＯＭ１１１が接続されており、起動時に論理データがＦＰＧＡ１００へダウンロードされ、ユーザ回路３３０が実現される。更に、メモリ３６０には種々のプログラムが格納されており、これをローダ回路３５０が読み出してＦＰＧＡ１００に入力することで、用途に応じた種々の動作が実行される。
【００１０】
また近年では、ＦＰＧＡの大規模化及び高速化が実現されつつある。これに伴い、例えばＰＣＩ専用制御回路等の機能をＦＰＧＡに組み込むことが可能となった。図８にＰＣＩ専用制御回路をＦＰＧＡに組み込んだＰＣＩデバイス４００の構成を示す。尚、図７と同様の構成には、同一の符号を付す。
【００１１】
図８に示すように、ＰＣＩデバイス４００は、ＦＰＧＡ１００とＲＯＭ４１１とローダ回路３５０とメモリ３６０とを有する。ＲＯＭ４１１には、図７に示すＲＯＭ１１１と同様の論理データの他に、ＰＣＩ制御回路４１０を実現するための論理データも格納される。更にＲＯＭ４１１には、コンフィグレーションレジスタ３１１のレジスタ値も格納される。従って、ＰＣＩブリッジ３０２は、ＲＯＭ４１１に格納されたレジスタ値を参照することで、ＰＣＩ規則に沿った動作をＰＣＩ制御回路４１０に実行させる。
【００１２】
図７に示すＰＣＩデバイス３００では、ＲＯＭ１１１に格納された論理データを書換える際、ＲＯＭ１１１をソケット１１０から取り外し、図６（ａ）に示すようなＲＯＭライタ１２０を用いて書換えを行っていた。一方、図８に示すＰＣＩデバイス４００では、ＲＯＭ４１１をソケット１１０から取り外さなくとも、ＰＣＩブリッジ３０２を介してＲＯＭ４１１内部の論理データを書き換えることが可能である。尚、ＲＯＭ内部のプログラムを書き換える方法としては、例えば以下に示す特許文献１が開示するところの技術を用いることも可能である。
【特許文献１】特開平９−２４４９０２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、ＰＣＩデバイスのような、割り当てられたＩ／Ｏアドレスに基づいて動作するモジュールに実装されたＦＰＧＡを論理変更した場合、そのまま動作を続行することが不可能となる不具合が発生する。これは、変更後の論理データをＦＰＧＡへ再読込みした際に、割り当てておいたＩ／Ｏアドレスがクリアされてしまうためである。例えばＰＣＩ制御回路が組み込まされたＦＰＧＡを実装するＰＣＩデバイスでは、当該ＦＰＧＡが要求したＰＣＩアドレス空間が他のＰＣＩデバイスに割り当てられる。ＰＣＩアドレス空間の割り当ては、ＰＣＩブリッジ（但し、正確にはオペレーティングシステム（ＯＳ）又はＢＩＯＳ：Basic Input Output System）がＰＣＩデバイス内部のコンフィグレーションレジスタに書き込むことにより行われる。しかしながら、ＦＰＧＡに論理データが再読込みされると、レジスタ内部のアドレスはクリアされてしまう。更に、ＦＰＧＡへ変更した論理データを再読込みすると、ユーザ回路のレジスタもクリアされてしまう。
【００１４】
このような理由から、従来ではＦＰＧＡが論理データを再読込みした場合、レジスタ値を再度セットし直す必要があった。しかしながら、レジスタ値をセットし直すためには、一度電源を落とし、再度立ち上げる必要があるため、デバッグ時等の効率が著しく低下してしまうという不具合が生じる。
【００１５】
また、稼動中のシステムに対してＦＰＧＡへの再読込みを行うことは、上記のような理由から非常に時間と手間とを要してしまうため、現実的に不可能であった。尚、特許文献１による技術は、ＣＰＵ（Central Processing Unit）等のようなＩ／Ｏアドレスの割り当てを必要としないデバイスを対象としているため、上記のような問題は考慮されておらず、問題の解決には至っていない。
【００１６】
そこで本発明は、上記問題に鑑みてなされたものであり、再起動を必要とすることなく、再読込みされたプログラムに基づいて動作することが可能な情報処理デバイス及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１７】
かかる目的を達成するために、本発明は、請求項１記載のように、論理の書換えが可能な集積回路と、論理を前記集積回路へ展開するローダ回路と、前記集積回路と前記ローダ回路とからアクセス可能なメモリとを有する情報処理デバイスであって、前記集積回路がレジスタを有し、前記ローダ回路が前記集積回路へ前記論理を展開する際、該集積回路が前記レジスタに格納されているレジスタ値を前記メモリへ退避させるように構成される。論理を再書込みする際に、レジスタに格納されたレジスタ値を退避させておくことで、書換え後にこれをリストアすることが可能となる。これにより、再起動を必要とすることなく、再書込みされた論理に基づいて動作することが可能となる。
【００１８】
また、上記したレジスタには、例えば請求項２記載のように、コントローラから割り当てられたメモリ空間へアクセスするためのアドレスが格納されていてもよい。ＰＣＩデバイスやＩＳＡデバイスやその他、バス等のインタフェースを介してデータの入出力を行う情報処理デバイスでは、ＣＰＵやＤＭＡやＣＰＵ等の上位デバイスであるコントローラからメモリ空間が割り当てられる。この際、コントローラは情報処理デバイスに割り当てたメモリ空間へアクセスするためのアドレスを送信する。このアドレスは集積回路におけるレジスタに格納される。そこで、論理の再書込み時にこのアドレスをメモリへ退避させておくことで、書換え後に再起動する必要が無くなる。
【００１９】
また、上記した情報処理デバイスは、例えば請求項３記載のように、前記集積回路がコントローラとの間でデータを入出力するための制御回路を有し、前記メモリが前記制御回路を介して前記コントローラから入力された論理データを保持し、前記ローダ回路が前記メモリで保持された前記論理データに基づいて論理を前記集積回路へ展開するように構成されてもよい。メモリにコントローラから入力された論理データを格納し、ローダ回路がこの論理データに基づいて集積回路に論理を展開することで、集積回路の論理をＣＰＵやＤＭＡやＣＰＵ等のコントローラから書き換えることが可能となる。
【００２０】
また、上記した集積回路は、例えば請求項４記載のように、前記コントローラからの指示をトリガとして、前記ローダ回路に論理の展開を要求するように構成することもできる。コントローラからの指示をトリガとして論理の再書込みを行うことで、コントローラが論理変更のタイミングを制御できる構成となる。
【００２１】
また、上記した集積回路は、例えば請求項５記載のように、ＰＣＩバスを介してデータを入出力するように構成されてもよい。すなわち、上記した集積回路はＰＣＩデバイスであってもよい。
【００２２】
また、上記した集積回路は、例えば請求項６記載のように、ＦＰＧＡであってもよい。
【００２３】
また、他の本発明は、請求項７記載のように、論理の書換えが可能で且つレジスタを備えた集積回路と、論理を前記集積回路へ展開するローダ回路と、前記集積回路と前記ローダ回路とからアクセス可能なメモリとを有し、前記ローダ回路が前記集積回路へ前記論理を展開する際、該集積回路は前記レジスタに格納されているレジスタ値を前記メモリへ退避させる情報処理デバイスと、前記情報処理デバイスと所定のバスを介して接続され、当該前記情報処理デバイスが要求するメモリ容量に基づいてメモリ空間を割り当てるコントローラとを有する情報処理装置であって、前記コントローラが前記情報処理デバイスが要求するメモリ容量の合計値が全体のメモリ容量を超過した場合、前記情報処理デバイスの優先度又は状態に基づいて当該情報処理デバイスに割り当てるメモリ領域を変更し、また、変更後のメモリ領域に基づいた動作を実現するための論理データを当該情報処理デバイスへ送信するように構成される。所定のバスに新たに情報処理デバイスが追加された場合や、当該バス上に存在する情報処理デバイスが必要とするメモリ容量が変更された場合などでは、全情報処理デバイスが要求するメモリ容量の合計値が実ＰＣＩメモリ空間の容量を超過してしまうことが存在する。このような場合、情報処理デバイスの上位デバイスであるコントローラが、各情報処理デバイスの優先度や状態に基づいて割り当てるメモリ容量を変更することで、メモリ割付けエラーなどの障害の発生を回避することが可能となる。この際、情報処理デバイスがレジスタに格納されたレジスタ値を退避させておくことで、論理の書換え後にこれをリストアすることが可能となる。これにより、再起動を必要とすることなく、再書込みされた論理に基づいて動作することが可能となる。
【００２４】
また、上記したコントローラは、例えば請求項８記載のように、ＣＰＵ，ＤＭＡコントローラ又はＰＣＩブリッジであってもよい。
【発明の効果】
【００２５】
本発明によれば、再起動を必要とすることなく、再読込みされたプログラムに基づいて動作することが可能な情報処理デバイス及び情報処理装置を実現することができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明を実施するための最良の形態を図面と共に詳細に説明する。
【実施例１】
【００２７】
まず、本発明による実施例１について図面を用いて詳細に説明する。以下の説明では、論理の再読込み（書換えともいう）が可能なデバイスとしてＦＰＧＡを用い、これを情報処理デバイスであるＰＣＩデバイスに搭載した場合を例に挙げて説明する。但し、ＰＣＩデバイスに限らず、例えばＩＳＡ（Industry Standard Architecture）デバイスやその他、用途に応じた情報処理を行うことが可能なデバイスであれば如何なるものを適用してもよい。
【００２８】
図１は、本実施例によるＰＣＩデバイス１の構成を示すブロック図である。図１に示すように、ＰＣＩデバイス１は、ＦＰＧＡ１１とＲＯＭ１２とローダ回路１３とメモリ１４とスリーステートバッファ１５とを有する。
【００２９】
ＦＰＧＡ１１は論理の再書込みが可能なデバイスである。ＦＰＧＡ１１にはＲＯＭ１２が接続されている。ＲＯＭ１２はＦＰＧＡ１１に展開する論理を論理データとして格納する。ＦＰＧＡ１１は起動時にＲＯＭ１２から論理データをロードすることで、起動時のような回路構成を実現する。
【００３０】
ＦＰＧＡ１１は展開された論理に従って、ＰＣＩ制御回路１１−１とユーザ回路１１−４とストア回路１１−３とを実現する。ＰＣＩ制御回路はＰＣＩインタフェースとして機能する回路であり、ＰＣＩバス２を介したデータの入出力を制御する。ＰＣＩ制御回路１１−１はコンフィグレーションレジスタ１１−２を有し、ＰＣＩブリッジ３が当該ＰＣＩデバイス１に割り当てたＰＣＩメモリ空間のベースアドレス（Ｉ／ＯアドレスやＰＣＩアドレス等）等を格納する。尚、以下の説明では、このベースアドレスを単にアドレスという。
【００３１】
システム起動時、ＰＣＩ制御回路１１−１は自己がデータの送受信等を行うために必要とするメモリ容量をＰＣＩブリッジ３に要求する。ＰＣＩブリッジ３は、要求されたメモリ容量に基づいて、ハードウェア構成として設けられたＰＣＩメモリ空間（これを実ＰＣＩメモリ空間という）の少なくとも一部をＰＣＩ制御回路１１−１に割り当てる。これは実ＰＣＩメモリ空間内のあるアドレス領域（但し、先頭アドレスのみであってもよい）をＰＣＩ制御回路１１−１に設定することで行われる。尚、システムとは、本実施例によるＰＣＩデバイス１，ＰＣＩバス２及びＰＣＩブリッジ３が組み込まれたパーソナルコンピュータ等の情報処理装置を指す。
【００３２】
ユーザ回路１１−４はＰＣＩデバイス１の用途に応じた種々の機能を実現するための構成である。本実施例では、例としてＰＣＩデバイス１の用途をビデオボードとする。このため、ユーザ回路１１−４では、動作クロックを制御するためのＰＬＬ回路１１−５と、ディスプレイ５へ表示すべきイメージを描画する画像処理部１１−６とを含む機能が実現されている。
【００３３】
ストア回路１１−３は、ＰＣＩ制御回路１１−１で受信した再書込みデータや、コンフィグレーションレジスタ１１−２に格納されたレジスタ値や、ユーザ回路１１−４内部のレジスタに格納されたレジスタ値等をメモリ１４へ入力する。尚、再書込みデータとは、ＦＰＧＡ１１へ新たに展開する論理データである。この再読込みデータは記憶装置４に格納されており、ＰＣＩブリッジ３が必要に応じてＰＣＩデバイス１へダウンロードする。ＰＣＩデバイス１へダウンロードされた再書込みデータは再書込みデータ１４−１としてメモリ１４に保持される。また、コンフィグレーションレジスタ１１−２のレジスタ値やユーザ回路１１−４のレジスタ値等のデータは、退避データ１４−２としてメモリ１４に保持される。以下の説明では、メモリ１４へ退避させるデータを退避データという。
【００３４】
ローダ回路１３は、再書込みデータ１４−１に基づいてＦＰＧＡ１１に論理を展開するため、及び論理の展開後に退避データ１４−２をＦＰＧＡ１１へリストアするための構成である。このローダ回路１３はＦＰＧＡやＡＳＩＣ等を用いて構成することが可能である。但し、用途に応じてＤＳＰ（Digital Signal Processor）やＣＰＵ（Central Processing Unit）等の装置を用いることも可能である。ローダ回路１３は、ユーザ回路１３−１と再書込み／制御回路１３−２とリストア回路１３−３とを有する。ユーザ回路１３−１は用途に応じた種々の機能を実現するための構成である。具体的には、例えばＰＣＩデバイス１へ入力された画像データに対し、圧縮・伸長（解像度変換）、色変換、各種フィルター処理などを行なう画像処理を実現させるためのものである。再書込み／制御回路１３−２はメモリ１４に格納された再読込みデータ１４−１を読み出し、これに基づいてＦＰＧＡ１１に論理を展開する。これにより、ＦＰＧＡ１１の動作論理が再読込みされる。リストア回路１３−３はメモリ１４に格納された退避データ１４−２を読み出し、これをＦＰＧＡ１１へ再設定することで、ＦＰＧＡ１１のレジスタ値（コンフィグレーションレジスタ１１−２やユーザ回路１１−４のレジスタ値）をリストアする。
【００３５】
メモリ１４はＦＰＧＡ１１とローダ回路１３との両方からアクセスすることが可能である。ＦＰＧＡ１１のストア回路１１−３から出力された再書込みデータは、スリーステートバッファ１５を介してメモリ１４の所定の領域に格納される（再読込みデータ１４−１）。同様に、ＦＰＧＡ１１のストア回路１１−３から出力された退避データは、スリーステートバッファ１５を介してメモリ１４の所定の領域に格納される。すなわち、再読込みデータ及び退避データのメモリ１４への書込みは、スリーステートバッファ１５により制御される。また、スリーステートバッファ１５は再書込み／制御回路１３−２に接続された制御線を有する。再読込み／制御回路１３−２は、制御線を介して入力された制御信号に基づいて、自己及びリストア回路１３−３がメモリ１４へアクセスすることを制御する。
【００３６】
また、ＰＣＩブリッジ３はＰＣＩデバイス１のデータ通信を制御するコントローラである。このコントローラを以下の説明において上位デバイスという。ＰＣＩブリッジ３はＰＣＩデバイス１から要求されたメモリ容量に基づいて、これに割り当てるメモリ空間を決定する。また、ＰＣＩブリッジ３は、割り当てたメモリ空間へアクセスするためのアドレスをＰＣＩデバイス１へ設定する。本実施例では、ＰＣＩブリッジ３がＰＣＩデバイス１へ当該アドレスを設定することを、ＰＣＩブリッジ３がＰＣＩデバイス１へアドレスを割り付けるという。
【００３７】
尚、本実施例ではＰＣＩブリッジ３を例に挙げたが、これを例えばＤＭＡ（Direct Memory Access）コントローラやＣＰＵ等のような、バスを介したデータの送受信を制御することが可能な上位デバイスに置き換えることも可能である。また、本実施例ではＰＣＩバス２を例に挙げたが、この他もにＩＥＥＥ１３９４やＬＶＤＳ（Low-Voltage Differential Signaling）やＵＳＢ（Universal Serial Bus）等のインタフェースを適用することが可能である。但し、適用したインタフェースに伴い、ＰＣＩブリッジ３は、このインタフェースを介したデータの送受信を司る上位デバイスに置き換えられる。
【００３８】
次に、ＰＣＩデバイス１の動作、特にＦＰＧＡ１１の動作を図面と共に説明する。以下の説明では、ユーザ回路１１−４の論理回路のみを再書込みする際の動作を例に挙げる。尚、この動作では、ＰＣＩブリッジ３がＰＣＩデバイス１に割り当てたＰＣＩアドレス領域は変更されない。
【００３９】
図２は、ユーザ回路１１−４の論理回路を再読込みする際のＦＰＧＡ１１の動作を示すフローチャートである。尚、図２に示すように、ＦＰＧＡ１１の動作はループしている。そこで、ＦＰＧＡ１１は上位デバイス（例えばＰＣＩブリッジ３）からの割込み命令に基づいて動作を終了する。
【００４０】
図２に示すように、システムが起動すると、ＦＰＧＡ１１は先ず、ＲＯＭ１２から論理データをロードし、これに基づいて論理回路をコンフィグする（ステップＳ１０１）。次にＦＰＧＡ１１は、ＰＣＩブリッジ３から割り付けられたアドレスを入力し、これをＰＣＩ制御回路１１−１におけるコンフィグレーションレジスタ１１−２に格納する（ステップＳ１０２）。その後、ＦＰＧＡ１１は展開した論理に基づいて通常の動作を実行する（ステップＳ１０３）。
【００４１】
通常動作時においてＰＣＩデバイス１の論理回路を変更する要因が発生した場合、ＰＣＩブリッジ３は、変更に対応した再書込みデータを記憶装置４から読み出し、これをＰＣＩデバイス１へ送信する。尚、論理回路変更の要因は、例えば割り当てるメモリ容量を変更する必要が生じた場合や、上位デバイス（例えば図示しないＣＰＵ等）から論理回路の変更が要求された場合などに発生する。例えば上位デバイスは、画像処理アルゴリズムを変更する場合や、周波数を２倍にしてスループットを向上させる場合などに、論理回路の変更を要求する。
【００４２】
ＦＰＧＡ１１は、ＰＣＩブリッジ３から再書込みデータを受信したか否かを常時判断する（ステップＳ１０４）。この判断を行うために、ＦＰＧＡ１１内の例えばＰＣＩ制御部１１−１には、受信したデータが再書込みデータであることを判断するための判断レジスタが設けられる。ステップＳ１０４の判断は、この判断レジスタに基づいて行われる。但し、再書込みデータを送信する前に、回路変更を要求する信号をＰＣＩブリッジ３がＦＰＧＡ１１へ入力するようにも構成することが可能である。この場合、ＦＰＧＡ１１にはＰＣＩブリッジ３から回路変更の要求を受信したか否かを判断するための判断レジスタが設けられる。但し、回路変更の要求を受信した後、ＦＰＧＡ１１はＰＣＩブリッジ３から再書込みデータを別途受信する。
【００４３】
再書込みデータを受信すると（ステップＳ１０４のＹｅｓ）、ＦＰＧＡ１１は、回路構成を変更するためのイベントを発生させ、以降の処理を実行する。この際、ＦＰＧＡ１１は、論理回路を変更するシーケンスに移行するための通知（回路変更通知）をローダ回路１３の再書込み／制御回路１３―２へ入力する（ステップＳ１０５）。再書込み／制御回路１３−２は、回路変更通知が入力されると、スリーステートバッファ１５，メモリ１４，ＲＯＭ１２及びリストア回路１３−３を制御することで、ＦＰＧＡ１１への再書込みが可能な状態とする。例えば再書込み／制御回路１３−２は、スリーステートバッファ１５をアクティブとすることで、ＦＰＧＡ１１からメモリ１４へのパスを有効にする。また、再書込み／制御回路１３−２は、ＲＯＭ１２にＥｎａｂｌｅ信号を入力することで、ＲＯＭ１２とＦＰＧＡ１１との接続を高インピーダンス（Ｈｉ−Ｚ）状態にする。更に、再書込み／制御回路１３−２は、ＦＰＧＡ１１と再書込み／制御回路１３−２との接続を有効にする。
【００４４】
再書込みが可能な状態となった後、ＦＰＧＡ１１は受信した再書込みデータをストア回路１１−３からスリーステートバッファ１５へ順次出力する（ステップＳ１０６）。スリーステートバッファ１５は、入力された再書込みデータをメモリ１４における所定の領域（再書込みデータ１４−１）に順次格納する。
【００４５】
その後、ＰＣＩブリッジ３から再書込みの実行開始を示す信号（再書込みスタートトリガ）を受信すると（ステップＳ１０７）、ＦＰＧＡ１１はユーザ回路１１−４のレジスタに格納されたレジスタ値を退避データとしてストア回路１１−３からスリーステートバッファ１５へ出力する（ステップＳ１０８）。スリーステートバッファ１５は、入力された退避データをメモリ１４における所定の領域（退避データ１４−２）に格納する。尚、コンフィグレーションレジスタ１１−２のレジスタ値もクリアされる場合、退避データにこのレジスタ値（ＰＣＩアドレス領域を含む）を含めてもよい。すなわち、コンフィグレーションレジスタ１１−２のレジスタ値をメモリ１４へ退避させてもよい。
【００４６】
このようにレジスタ値を退避させると、ＦＰＧＡ１１は次に、再書込みデータの読み出しを開始させるためのダウンロード開始トリガを再書込み／制御回路１３−２へ入力する（ステップＳ１０９）。ダウンロード開始トリガが入力された再書込み／制御回路１３−２は、メモリ１４から再書込みデータ１４−１を読み出し、これに基づいてＦＰＧＡ１１に論理を展開する。すなわち、ＦＰＧＡ１１は再書込み／制御回路１３−２により論理が再書込みされる（ステップＳ１１０）。この際、再書込み／制御回路１３−２は、スリーステートバッファ１５をインアクティブとする。すなわち、ＦＰＧＡ１１からメモリ１４へのパスを無効とし、ローダ回路１３とメモリ１４との接続を有効としておく。
【００４７】
このように論理の再読込みを完了すると、ＦＰＧＡ１１は次に、再書込みが完了したことを通知するためのダウンロード終了通知を再書込み／制御回路１３−２へ入力する（ステップＳ１１１）。ダウンロード終了通知が入力された再書込み／制御回路１３−２は、次にリストア回路１３−３を制御する。リストア回路１３−３は、再書込み／制御回路１３−２の制御の元、メモリ１４から退避データ１４−２を読み出し、これをＦＰＧＡ１１へ入力する。
【００４８】
ＦＰＧＡ１１は、退避データを受信すると（ステップＳ１１２）、この退避データ（レジスタ値）をユーザ回路１１−４のレジスタへ再設定する（ステップＳ１１３）。この際、コンフィグレーションレジスタ１１−２のレジスタ値も退避させておいた場合、ＦＰＧＡ１１はこのレジスタ値をコンフィグレーションレジスタ１１−２に再設定する。
【００４９】
このように再書込みデータの展開及びレジスタ値のリストアが完了とすると、ＦＰＧＡ１１は、このことを通知するためのダウンロード終了割込み信号をＰＣＩブリッジ３へ送信する（ステップＳ１１４）。その後、ＦＰＧＡ１１はステップＳ１０３へ帰還し、通常の動作を実行する。
【００５０】
以上のように構成及び動作することで、ＰＣＩデバイス１を再起動させることなく、再読込みされた論理に基づいて動作させることが可能となる。
【実施例２】
【００５１】
次に、本発明の実施例２について図面を用いて詳細に説明する。尚、以下の説明において、実施例１と同様の構成については、同一の符号を付し、その詳細な説明を省略する。また、特記しない構成に関しては実施例１と同様である。
【００５２】
本実施例では実施例１で説明したＰＣＩデバイス１及びＰＣＩブリッジ３と同様の構成を使用する。また、図３に、複数（図２では１ａ〜１ｃの３つ）の当該ＰＣＩデバイス１をＰＣＩバス２に接続したシステム構成を示す。
【００５３】
図３に示すように、同一のＰＣＩバス２上に複数のＰＣＩデバイスが接続されている場合、ＰＣＩブリッジは限られた実ＰＣＩメモリ空間の中から複数のＰＣＩデバイスにメモリ容量を割り当てている。この際、例えばＰＣＩバス２上に新たにＰＣＩデバイスが追加された場合や、あるＰＣＩデバイスに割り当てたメモリ容量を変更する場合、各ＰＣＩデバイス（１ａ〜１ｃを含む全てのＰＣＩデバイス）により要求されたメモリ容量の合計が実ＰＣＩメモリ空間の容量を超過してしまうことがある。
【００５４】
例えば、実ＰＣＩメモリ空間の容量が５１２Ｍ（メガ）バイトであるとする。また、ＰＣＩデバイス１ａに割り当てたメモリ容量が６４Ｍバイトであり、ＰＣＩデバイス１ｂに割り当てたメモリ容量が８Ｍバイトであり、ＰＣＩデバイス１ｃに割り当てたメモリ容量が３２Ｍバイトであり、他のＰＣＩデバイスに割り当てたメモリ容量の合計が２０８Ｍバイトであるとする。すなわち、割り当て済みのメモリ容量が３１２Ｍバイトであるとする。ここで、例えばＰＣＩデバイス１ｂのユーザ回路１１−４が２５６Ｍバイトのメモリ容量を必要とするように変更されると、各ＰＣＩデバイスから要求されるメモリ容量の合計値が５６０Ｍバイトとなり、実ＰＣＩメモリ空間の容量（５１２Ｍバイト）を超過してしまう。従って、このままシステム側（本説明ではＰＣＩブリッジ３）が各ＰＣＩデバイスへメモリ容量を割り当てると、確実にシステムエラー（メモリ割付けエラー）が発生してしまう。
【００５５】
そこで本実施例では、接続されているＰＣＩデバイスの中から優先度の低いＰＣＩデバイス、又は現在割り当てているメモリ容量よりも少ない容量でも動作が可能であるＰＣＩデイバスを１つ以上選定し、これ（これら）に割り当てるメモリ容量（アドレス）を変更する。これにより、実ＰＣＩメモリ空間超過などのメモリ割付けエラーの発生を回避することが可能となり、再起動することなく通常動作を継続することが可能となる。
【００５６】
次に、割り当て済みのメモリ容量（アドレス）を変更する際の動作を図面と共に説明する。図４は、変更時のＰＣＩブリッジ３の動作を示すフローチャートである。尚、図４に示すように、ＰＣＩブリッジ３の動作はループしている。そこで、ＰＣＩブリッジ３は上位デバイス（例えばＣＰＵ）からの割込み命令に基づいて動作を終了する。また、メモリ容量（アドレス）が変更されるＰＣＩデバイスの動作は、実施例１（特に図２）で示すフローチャートと同様であるため、以下の説明ではこれを引用して説明する。
【００５７】
図４に示すように、システムが起動すると、ＰＣＩブリッジ３は先ず、ＰＣＩバス２上に接続されているＰＣＩデバイス（１ａ〜１ｃを含む全てのＰＣＩデバイス）から、それぞれが要求するメモリ容量を取得する（ステップＳ２０１）。次にＰＣＩブリッジ３は、取得したメモリ容量に基づいてＰＣＩメモリ空間を構築した後（ステップＳ２０２）、通常の動作を実行する（ステップＳ２０３）。この際、ＰＣＩブリッジ３は、各ＰＣＩデバイスに割り付けたアドレスを各ＰＣＩデバイスに送信する。ＰＣＩデバイスは受信したアドレスを自己のコンフィグレーションレジスタ１１−２に格納する。
【００５８】
通常動作時においてＰＣＩブリッジ３は、ＰＣＩバス２上に新たにＰＣＩデバイスが追加されたか否か（ステップＳ２０４）、及びＰＣＩバス２上に存在するＰＣＩデバイスが要求するメモリ容量が変更されたか否か（ステップＳ２０５）を常時判断する。新たにＰＣＩデバイスが追加された場合（ステップＳ２０４のＹｅｓ）、若しくは要求するメモリ容量が変更された場合（ステップＳ２０５のＹｅｓ）、ＰＣＩブリッジ３は、該当するＰＣＩデバイスが要求するメモリ容量と、各ＰＣＩデバイス（但し、追加／変更されたＰＣＩデバイスは含まない）へ割り当て済みのメモリ容量とを合計し（ステップＳ２０６）、この合計値が実ＰＣＩメモリ空間の容量を超過したか否かを判断する（ステップＳ２０７）。
【００５９】
ステップＳ２０７の判断の結果、合計のメモリ容量が実ＰＣＩメモリ空間の容量を超過していない場合（ステップＳ２０７のＮｏ）、ＰＣＩブリッジ３は、要求されたメモリ容量に基づいてアドレスを設定し、これを対象のＰＣＩデバイスへ割り付ける（ステップＳ２０８）。次にＰＣＩブリッジ３は、ＰＣＩメモリ空間を再構築した後（ステップＳ２０９）、ステップＳ２０３へ移行して通常の動作を実行する。
【００６０】
一方、ステップＳ２０７の判断の結果、合計のメモリ容量が実ＰＣＩメモリ空間の容量を超過している場合（ステップＳ２０７のＹｅｓ）、ＰＣＩブリッジ３は、メモリ容量を削減するＰＣＩデバイスを１つ以上選定する（ステップＳ２１０）。これは、ＰＣＩブリッジ３が各ＰＣＩデバイスのファンクションや状態（以下、これらを単に状態という）を調査し、ＰＣＩメモリ容量を削減しても問題とならないＰＣＩデバイスを特定することで行われる。例えばＰＣＩブリッジ３は、優先度の低いＰＣＩデバイスや、現在割り当てているメモリ容量よりも少ない容量でも動作可能であるＰＣＩデイバスを選定する。
【００６１】
次にＰＣＩブリッジ３は、選定したＰＣＩデバイスに割り当てるメモリ容量を削減することで、ＰＣＩメモリ空間を最適化する（ステップＳ２１１）。その後、ＰＣＩブリッジ３は、対象のＰＣＩデバイスを削減したメモリ容量で動作させるための再書換えデータを記憶装置４から読み出し、これを対象のＰＣＩデバイスへ送信する（ステップＳ２１２）。その後、ＰＣＩブリッジ３は、対象のＰＣＩデバイスに再書込みを開始させるための再書込みスタートトリガを送信する（ステップＳ２１３）。これに対し、対象のＰＣＩデバイスは実施例１における図４のフローチャートと同様の動作を用いることで、再書換えデータをＦＰＧＡ１１に展開する。
【００６２】
再書換えデータの展開が終了すると、ＰＣＩデバイスはＰＣＩブリッジ３へダウンロード終了割込み信号を送信する。一方、ＰＣＩブリッジ３は再書込みデータを送信後、ＰＣＩデバイスからのダウンロード終了割込み信号を待機する（ステップＳ２１４）。ＰＣＩデバイスからダウンロード終了割込み信号を受信すると（ステップＳ２１４のＹｅｓ）、次にＰＣＩブリッジ３は、ＰＣＩメモリ空間を再構築した後（ステップＳ２１５）、ステップＳ２０３へ移行して通常の動作を実行する。
【００６３】
以上のように構成及び動作することで、ＰＣＩデバイス１を再起動させることなく、割り付けたアドレスを変更することが可能となる。
【００６４】
尚、上記実施例１及び実施例２は本発明を実施するための例にすぎず、本発明はこれらに限定されるものではなく、これらの実施例を種々変形することは本発明の範囲内であり、更に本発明の範囲内において、他の様々な実施例が可能であることは上記記載から自明である。
【図面の簡単な説明】
【００６５】
【図１】本発明の実施例１によるＰＣＩデバイス１の構成を示すブロック図である。
【図２】本発明の実施例１によるＦＰＧＡ１１の動作を示すフローチャートである。
【図３】本発明の実施例２による複数のＰＣＩデバイス１がＰＣＩバス２に接続されたシステム構成を示すブロック図である。
【図４】本発明の実施例２によるＰＣＩブリッジ３の動作を示すフローチャートである。
【図５】一般的なＦＰＧＡ１００の概略構成を示すブロック図である。
【図６】ＦＰＧＡのデバッグする際に使用する従来構成の概略図である。
【図７】一般的なＰＣＩデバイス（ボード）３００の構成を示すブロック図である。
【図８】ＰＣＩ専用制御回路をＦＰＧＡに組み込んだＰＣＩデバイス４００の構成を示すブロック図である。
【符号の説明】
【００６６】
１、１ａ、１ｂ、１ｃ  ＰＣＩデバイス    ２  ＰＣＩバス
３  ＰＣＩブリッジ                      ４  記憶装置
５  ディスプレイ                        １１  ＦＰＧＡ
１１−１  ＰＣＩ制御回路                １１−３  ストア回路
１１−２  コンフィグレーションレジスタ
１１−４、１３−１  ユーザ回路          １１−５  ＰＬＬ回路
１１−６  画像処理部                    １２  ＲＯＭ
１３  ローダ回路                        １３−２  再書込み／制御回路
１３−３  リストア回路                  １４  メモリ
１４−１  再書込みデータ                １４−２  退避データ
１５  スリーステートバッファ
【図１】
2005182410.tif 000003
【図２】
2005182410.tif 000004
【図３】
2005182410.tif 000005
【図４】
2005182410.tif 000006
【図５】
2005182410.tif 000007
【図６】
2005182410.tif 000008
【図７】
2005182410.tif 000009
【図８】
2005182410.tif 000010