(57)【特許請求の範囲】
【請求項１】
メモリのうち書き換え可能な領域に格納され、アップデート可能な回路データである第１の設定情報により処理回路に論理構成を設定する回路データ設定部と、
前記第１の設定情報による設定が完了したか否かを判定する回路状況監視部と、
前記設定により前記処理回路とホストコンピュータとの通信が確立されたか否かを判定する通信状況監視部と、
を備え、
前記回路データ設定部は、前記設定が完了しなかったと判定された場合と、前記通信が確立されなかったと判定された場合に、前記メモリのうち書き換え禁止の領域に格納され、正常動作が保証されている回路データである、前記第１の設定情報と異なる第２の設定情報をメモリより読み出し、それに基づき前記処理回路に論理構成を設定し直すことを特徴とするプログラマブルデバイス。
【請求項２】
前記通信状況監視部は、前記第１の設定情報による設定が完了したと判定された場合に、前記通信が確立されたか否かを判定することを特徴とする請求項１に記載のプログラマブルデバイス。
【請求項３】
前記第１の設定情報を前記ホストコンピュータを介して接続した外部のコンピュータから更新するインターフェースをさらに備えたことを特徴とする請求項１または２に記載のプログラマブルデバイス。
【請求項４】
前記回路データ設定部および前記通信状況監視部の少なくとも一方は、前記通信が確立されなかったと判定された場合に、前記外部のコンピュータからアクセス可能なメモリにその旨を記録することを特徴とする請求項３に記載のプログラマブルデバイス。
【請求項５】
メモリのうち書き換え可能な領域に格納され、アップデート可能な回路データである第１の設定情報により処理回路に論理構成を設定する回路データ設定部を備えたプログラマブルデバイスと、
前記第１の設定情報による設定が完了したか否かを判定する回路状況監視部と、
前記設定により前記処理回路とホストコンピュータとの通信が確立されたか否かを判定する通信状況監視部と、
を備え、
前記回路状況監視部は前記設定が完了しなかったと判定した場合にその旨を前記回路データ設定部に通知し、
前記通信状況監視部は前記通信が確立されなかったと判定した場合にその旨を前記回路データ設定部に通知し、
前記回路データ設定部は、前記通知の少なくともいずれかがなされた場合に、前記メモリのうち書き換え禁止の領域に格納され、正常動作が保証されている回路データである、前記第１の設定情報と異なる第２の設定情報をメモリより読み出し、それに基づき前記処理回路に論理構成を設定し直すことを特徴とする情報処理装置。
【請求項６】
メモリのうち書き換え可能な領域に格納され、アップデート可能な回路データである第１の設定情報により処理回路に論理構成を設定するステップと、
前記第１の設定情報による設定が完了したか否かを判定するステップと、
前記設定により前記処理回路とホストコンピュータとの通信が確立されたか否かを判定するステップと、
前記設定が完了しなかったと判定された場合と、前記通信が確立されなかったと判定された場合に、前記メモリのうち書き換え禁止の領域に格納され、正常動作が保証されている回路データである、前記第１の設定情報と異なる第２の設定情報をメモリより読み出し、それに基づき前記処理回路に論理構成を設定し直すステップと、
を含むことを特徴とするプログラマブルデバイスにおける処理回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルデバイスにおける回路構成の制御技術に関する。
【背景技術】
【０００２】
近年、ＦＰＧＡ（Field Programmable Gate Array）やＣＰＬＤ（Complex Programmable Logic Device）などユーザが回路の構成を定義できる、プログラマブルロジックデバイス（ＰＬＤ：Programmable Logic Device）が幅広い分野で用いられるようになっている。これらのデバイスは出荷時のみならず装置の運用開始後にも回路の論理構成を変更できるため、動作が固定化されている従来のデバイスと比較し汎用性に優れているとともに開発費を含むコストの削減にも効果をもたらす。
【０００３】
ＰＬＤには、動作不良が生じても回路を適切に再構成することによりそれを克服できる可能性がある、という特性がある。そのため、動作不良の有無を自己診断し必要に応じて該当回路の構成を書き換える技術、例えば回路に冗長性を持たせることにより、不具合のある処理回路を正常動作中の処理回路と同一の状態に書き換える技術が提案されている（例えば特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−２１６０２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながらＰＬＤを搭載した装置の動作に不具合が生じた場合、その原因がＰＬＤの何に起因しているのかが不明確な場合もある。この場合、上記のような自動的な書き換えでは対応できず、最終的には装置の管理者などが回路自体を確認したり回路構成を定義するデータを解析、修正したりする必要が生じる。一方で、上記のようなＰＬＤの特性を活かし、運用中の装置におけるＰＬＤの回路構成をアップデートなどの目的で更新する状況は往々にして起こり得る。この更新を契機に不具合が生じてしまうと、管理者などが設置場所へ出向いて基板を取り出し修正するなどの作業が必要となり、多大な労力を要する場合がある。
【０００６】
本発明はこうした課題に鑑みてなされたものであり、その目的は、プログラマブルデバイスを搭載した装置に生じた不具合の修正を容易に行うことができる技術を提供することにある。
【課題を解決するための手段】
【０００７】
本発明のある態様はプログラマブルデバイスに関する。このプログラマブルデバイスは、メモリから読み出した第１の設定情報により処理回路に論理構成を設定する回路データ設定部と、回路データ設定部による設定により処理回路とホストコンピュータとの通信が確立されたか否かを判定する通信状況監視部と、を備え、回路データ設定部は、通信が確立されなかったと判定された場合に、第１の設定情報と異なる第２の設定情報をメモリより読み出し、それに基づき処理回路に論理構成を設定し直すことを特徴とする。
【０００８】
本発明の別の態様は情報処理装置に関する。この情報処理装置は、メモリから読み出した第１の設定情報により処理回路に論理構成を設定する回路データ設定部を備えたプログラマブルデバイスと、回路データ設定部による設定により処理回路とホストコンピュータとの通信が確立されたか否かを判定する通信状況監視部と、を備え、通信状況監視部は通信が確立されなかったと判定した場合にその旨を回路データ設定部に通知し、回路データ設定部は、通知がなされた場合に、第１の設定情報と異なる第２の設定情報をメモリより読み出し、それに基づき処理回路に論理構成を設定し直すことを特徴とする。
【０００９】
本発明のさらに別の態様はプログラマブルデバイスにおける処理回路の制御方法に関する。このプログラマブルデバイスの制御方法は、メモリから読み出した第１の設定情報により処理回路に論理構成を設定するステップと、設定により処理回路とホストコンピュータとの通信が確立されたか否かを判定するステップと、通信が確立されなかったと判定された場合に、第１の設定情報と異なる第２の設定情報をメモリより読み出し、それに基づき処理回路に論理構成を設定し直すステップと、を含むことを特徴とする。
【００１０】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、コンピュータプログラムを記録した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１１】
本発明によると、プログラマブルデバイスを搭載した装置に生じた不具合を容易に修正することができる。
【図面の簡単な説明】
【００１２】
【図１】ＰＬＤを用いた一般的な情報処理システムの構成例を示す図である。
【図２】本実施の形態を適用した情報処理システムの構成例を示す図である。
【図３】本実施の形態におけるＦＰＧＡの機能ブロックの構成およびメモリに格納されるデータの構成を示す図である。
【図４】本実施の形態の予備処理装置の起動からの処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１３】
まず本実施の形態の特徴を明らかにするため、従来技術におけるＰＬＤの運用形態について説明する。図１はＰＬＤを用いた一般的な情報処理システムの構成例を示している。以後、ＰＬＤとしてＦＰＧＡを例に説明するが、本実施の形態をそれに限定する主旨ではない。情報処理システム１１０は、ホストコンピュータ１１２と補助処理装置１１４を含む。
【００１４】
補助処理装置１１４は基本的に、ホストコンピュータ１１２の要求に従った何らかの処理を行い、その結果をホストコンピュータ１１２に返す。例えば複数の情報処理システム１１０を組み合わせてクラウドサービスなどを提供するデータセンターのサーバとし、補助処理装置１１４がホストコンピュータ１１２に要求されたデータの検索を行う。この場合、補助処理装置１１４にはさらに、検索対象のデータを格納する外部記憶装置が接続される。ただし補助処理装置１１４が実施可能な処理はこれに限らずデータの暗号化や画像認識など多岐にわたるため、それらの実行に必要な外部の装置については図示を省略している。
【００１５】
つまり補助処理装置１１４は、ホストコンピュータ１１２のアクセラレータとして機能するが、具体的な処理内容は実用化されているいかなるものでもよい。補助処理装置１１４は、ＦＰＧＡ１１６、メモリ１１８、およびＩＣＥ（In-Circuit Emulator）回路１２０を含む。メモリ１１８はＲＯＭ（Read Only Memory）やフラッシュメモリなどの不揮発性メモリであり、ＦＰＧＡ１１６に所望の回路構成を設定するための設定情報（以下、「回路データ」と呼ぶ）が格納されている。補助処理装置１１４に電源が投入されると、メモリ１１８から転送された回路データが読み出され、ＦＰＧＡ１１６に書き込まれることにより、ＦＰＧＡ１１６に論理回路が構築される。以後、この処理を「コンフィギュレーション」と呼ぶ。
【００１６】
全ての回路データの書き込みが完了しコンフィギュレーションに成功すると、ＦＰＧＡ１１６は設定に従いホストコンピュータ１１２と通信を確立し、その要求に応じた動作を開始する。一方、回路データの書き込みが完全でないなどコンフィギュレーションに失敗した場合、当然ながらそのままではＦＰＧＡ１１６は正常に機能しない。このような場合に備えＦＰＧＡ１１６には、そのような状態を検知したら、メモリ１１８に格納しておいた予備の回路データを読み出しコンフィギュレーションし直すことで最低限の機能を確保する構成があらかじめ設定されている。
【００１７】
予備の回路データは、ＦＰＧＡ１１６の出荷時などにメモリ１１８の上書き禁止の領域に格納しておく基本的な情報であり、多くの場合、ユーザが本来の目的に応じて設定する回路データとは異なる。したがって情報処理システム１１０における補助処理装置１１４の本来の目的を達成するためには、コンフィギュレーションを失敗したユーザ設定の回路データを修正する必要がある。予備の回路データによりＦＰＧＡ１１６とホストコンピュータ１１２との通信が確立していれば、図示しない外部のコンピュータからホストコンピュータ１１２を介してメモリ１１８へアクセスすることにより回路データを修正できる。
【００１８】
このようなシステムにおいてＦＰＧＡ１１６を用いる利点の一つが、状況などに応じて回路構成を任意に更新できる点にある。すなわちメモリ１１８におけるユーザ設定の回路データをアップデートすることにより、周囲の接続環境やホストコンピュータ１１２が実行するプログラムのバージョンアップなどに応じて回路構成を最適化できる。アップデートは、ホストコンピュータ１１２とＦＰＧＡ１１６との通信を利用して、外部のコンピュータからメモリ１１８へアクセスするなどして実施することができる。しかしながらこのようにして更新された回路データが適切でない場合、次回の電源投入時などにそれに基づきコンフィギュレーションを行った結果、ＦＰＧＡ１１６が正しく機能しなくなる恐れがある。
【００１９】
ここで、上述のようにコンフィギュレーションに失敗した場合は、予備の回路データを用いてコンフィギュレーションすることにより最低限の機能を確保できる。一方、コンフィギュレーションによりＦＰＧＡ１１６の回路は構築されたものの、ホストコンピュータ１１２との通信が何らかの要因で確立できないことが考えられる。この原因として、回路データのうち通信のためのデータ自体に不具合がある場合のほか、通信とは直接関係しないデータを更新したものの通信に対し想定外に影響が生じた場合などが考えられる。
【００２０】
場合によっては、装置間の相性、ケーブルの状態、設置環境などに起因して、通信の可否がホストコンピュータ１１２に依存することもあり得る。このようにＦＰＧＡ１１６自体は動作可能であっても、ホストコンピュータ１１２との通信が確立されなければ、補助処理装置１１４は本来の役割を果たすことができず、さらにＦＰＧＡ１１６の回路データを外部からのアクセスにより修正することもできない。このような場合、管理者が補助処理装置１１４の設置場所へ赴き、ＩＣＥ回路１２０経由で図示しないコンピュータをＦＰＧＡ１１６と接続するなどして、動作を解析したりメモリ１１８に格納された回路データを修正したりする必要がある。
【００２１】
アップデートの機会や設置場所の数が増えるほど、上述のような微妙な問題でこのような作業が発生する可能性が高くなる。本発明者はこの点に着目し、不具合の状態によらず容易にそれを克服できる手法に想到した。以下、その実施形態について説明する。図２は本実施の形態を適用した情報処理システムの構成例を示している。本実施の形態の情報処理システム１０は、ホストコンピュータ１２と補助処理装置１４を含む。ホストコンピュータ１２および補助処理装置１４の基本的な機能は、図１で示した一般的な情報処理システム１１０のホストコンピュータ１１２および補助処理装置１１４と同様である。
【００２２】
つまり補助処理装置１４はホストコンピュータ１２の要求に従った何らかの処理を行い、その結果をホストコンピュータ１２に返すものであり、システムの全体的な用途は特に限定されない。またホストコンピュータ１２はネットワーク８に接続され、図示しない外部のコンピュータとの接続を可能とする。本実施の形態では、回路データに不具合があった場合は基本的に、当該外部のコンピュータからネットワーク８、ホストコンピュータ１２を介して補助処理装置１４にアクセスすることにより回路データを修正できるようにする。
【００２３】
したがって補助処理装置１４には図１の補助処理装置１１４と同様、ＦＰＧＡ１６およびメモリ１８が備えられる一方、ＦＰＧＡ１６に直接アクセスするためのＩＣＥ回路はなくてもよい。ただし補助処理装置１４の構成をそれらのみに限る主旨ではなく、補助処理装置１４の用途やＦＰＧＡ１６に与える機能などに応じて内部の回路構成は様々に変形してよい。また上述のとおり補助処理装置１４にはさらに外部の記憶装置などを接続してもよい。
【００２４】
図３は本実施の形態におけるＦＰＧＡ１６の機能ブロックの構成およびメモリ１８に格納されるデータの構成を示している。ＦＰＧＡ１６は回路データ設定部２０、情報処理部２２、回路状況監視部２４、通信部２５、通信状況監視部２６を含む。メモリ１８は通常回路データ２８および予備回路データ３０を格納する。回路データ設定部２０は、メモリ１８にアクセスし、通常回路データ２８または予備回路データ３０を読み出してコンフィギュレーションを行うことにより、ＦＰＧＡ１６内に論理回路を構築する。回路データ設定部２０はさらに、ホストコンピュータ１２から、あるいは外部のコンピュータからホストコンピュータ１２を介して、メモリ１８へアクセスするためのインターフェースを提供する。
【００２５】
情報処理部２２は、回路データ設定部２０が読み出した通常回路データ２８または予備回路データ３０に基づくコンフィギュレーションにより論理構成が設定される処理回路で構成され、各回路データの内容に従いホストコンピュータ１２からの要求に応じた処理を行う。回路状況監視部２４は、コンフィギュレーションにより論理回路の構築が完了したか否かを監視する。論理回路の構築が完了したか否かは、例えばＦＰＧＡ１６に設けた巡回冗長検査（ＣＲＣ：Cyclic Redundancy Check）回路により算出されたＣＲＣ値と正しいＣＲＣ値が一致するか否かを確認するなど一般的な手法により判定する。
【００２６】
ただしこのような一般的な手法で検出できる、「論理回路の構築が完了した」状態とは、通常回路データ２８に含まれる設定内容が全て、情報処理部２２を構成する回路に反映された状態を意味し、必ずしも本来意図した動作が可能となっているとは限らないことに留意する。論理回路が正常に構築されなければ、回路状況監視部２４は回路データ設定部２０にその旨を通知する。
【００２７】
通信部２５は、ＰＣＩやＰＣＩ  Ｅｘｐｒｅｓｓなど所定のプロトコルによりホストコンピュータ１２と通信を確立するインターフェースである。通信状況監視部２６は、ホストコンピュータ１２との通信が正常に確立されたか否かを監視し、確立されなければ回路データ設定部２０にその旨を通知する。通信の確立がなされたか否かは通信プロトコルに応じた手法で判定する。例えば補助処理装置１４に電源が投入されて所定時間内に、通信が確立された旨の信号が送信されたか否か、通信エラーメッセージが送信されたか否か、あるいは、当該所定時間内にホストコンピュータ１２からアクセスがなされたか否か、などによって判定することができる。
【００２８】
メモリ１８に格納された通常回路データ２８は、補助処理装置１４に所望の機能を発揮させるためにＦＰＧＡ１６に設定する回路データである。通常回路データ２８はシステム構築時などに作成され、さらに状況に応じて運用開始後にアップデートされる可能性のあるデータであり、メモリ１８の書き換え可能な領域に格納される。予備回路データ３０は通常回路データ２８に不具合があったときなどに読み出されるデータであり、少なくとも通信の確立を含む正常動作が保証されている回路データである。予備回路データ３０は基本的に、メモリ１８の書き換え禁止の領域に格納しておく。
【００２９】
次に上記構成によって実現される補助処理装置１４の動作について説明する。図４は本実施の形態において補助処理装置１４を起動させた際の処理手順を示すフローチャートである。まず補助処理装置１４に電源が投入されると（Ｓ１０）、回路データ設定部２０はメモリ１８から通常回路データ２８を読み出しコンフィギュレーションを行う（Ｓ１２）。このとき、詳細には内部メモリの初期化、同期、対象回路の確認、通常回路データ２８の読み込みといった処理を一般的なコンフィギュレーション手順と同様に実施する。続いて回路状況監視部２４は、論理回路の構築が完了したか否かを確認する（Ｓ１４）。
【００３０】
論理回路の構築が不完全であることを検知したら（Ｓ１４のＮ）、回路状況監視部２４はエラー信号を生成し回路データ設定部２０に送信する。これにより回路データ設定部２０は、エラーの状況として論理回路の構築が不完全であったことを所定の記憶領域に記録したうえ（Ｓ１７）、メモリ１８から予備回路データ３０を読み出しコンフィギュレーションを行う（Ｓ１８）。エラーの状況の記録先は、予備回路データ３０によるコンフィギュレーション後に外部のコンピュータからアクセス可能なメモリであれば、メモリ１８に限らず、補助処理装置１４内部の別のメモリや外部のメモリでもよい。またエラー状況の記録は回路状況監視部２４が行ってもよい。一方、Ｓ１４において論理回路の構築が完了したことが確認された場合（Ｓ１４のＹ）、通信状況監視部２６は、ホストコンピュータ１２と正常に通信が確立されたか否かを確認する（Ｓ１６）。
【００３１】
通信が正常に確立されていないことを検知したら（Ｓ１６のＮ）、通信状況監視部２６がエラー信号を生成し回路データ設定部２０に送信する。これにより回路データ設定部２０は、エラーの状況として通信が正常に確立されなかったことを上記のような所定の記憶領域に記録したうえ（Ｓ１７）、メモリ１８から予備回路データ３０を読み出しコンフィギュレーションを行う（Ｓ１８）。ただしエラー状況の記録は通信状況監視部２６が行ってもよい。なお同図のフローチャートでは、Ｓ１４において回路の構築完了が確認された場合に限りＳ１６の通信確立確認を行っているが、実際には通信状況監視部２６は、回路状況監視部２４による監視とは独立に通信の確立を監視してよい。いずれにしろ、回路の構築と通信の確立という２つの箇所を２重に確認し、少なくともいずれかにエラーが発生した場合に、予備回路データ３０によってコンフィギュレーションをし直す。
【００３２】
通常回路データ２８によるコンフィギュレーションで何らエラーが確認されなかった場合（Ｓ１６のＹ）、情報処理部２２は通常回路データ２８で設定されている本来の処理を遂行できるため、通信部２５を介してホストコンピュータ１２からの要求を取得し、適宜処理する（Ｓ２０）。一方、いずれかのエラーにより予備回路データ３０によるコンフィギュレーションを行った場合（Ｓ１８）、管理者などは、必要に応じて外部のコンピュータからホストコンピュータ１２、通信部２５、回路データ設定部２０を経由してメモリ１８内の通常回路データ２８を修正する（Ｓ２２）。このとき、Ｓ１７で記録したエラーの状況を参照することにより修正作業を効率化できる。なお外部のコンピュータからメモリ１８へのアクセスは、インターフェースの構成によってはＦＰＧＡ１６を介さなくてもよい。
【００３３】
通信状況監視部２６は、情報処理部２２と同様、通常回路データ２８に基づくコンフィギュレーションにより生成されてもよいし、ＦＰＧＡ内に別途、回路を形成しておいてもよい。前者の場合、回路の構築が完了した場合に限り通信の確立を確認することになる。あるいは通信状況監視部２６を、補助処理装置１４内のＦＰＧＡ１６以外の回路として設けてもよい。またこれまでの説明では主に、ＰＬＤとしてＦＰＧＡを例にとったが、ＣＰＬＤなど用いるデバイスの種類によっては、回路状況監視部２４の機能ブロックがなくてもよい。このような場合、予備回路データ３０は通信が確立されていない場合に用いられるため、通信を正常に確立するのに特化した設定内容でもよい。
【００３４】
以上述べた本実施の形態によれば、回路データに基づきＰＬＤの論理回路を構築する際、通信が正常に確立したか否かを監視し、確立できなければ予備回路データにより少なくとも通信を確立できるようにする。これにより、本来意図した論理回路が構築されたか否かに関わらず通信の確立を保障できるため、常時、外部のコンピュータからのアクセスが可能となる。また、回路の構築と通信の確立という２つの観点で監視するため、どちらでエラーが発生したかを記録でき、後の不具合の修正時に原因の絞り込みを効率化できる。
【００３５】
結果として、管理者が設置場所に赴いて基板を外し対処するなどの作業をせずとも、遠隔作業により不具合の解析や回路データの修正を容易に行える。このことは、アップデートを高頻度に行ったり、データセンターなどで多数の装置を導入したり接続したりする環境においては特に有効である。またＰＬＤに直接アクセスするためのＩＣＥ回路を基板ごとに設ける必要がなくなるため、装置全体の製造コストや基板面積の軽減にも寄与する。
【００３６】
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【符号の説明】
【００３７】
８  ネットワーク、  １０  情報処理システム、  １２  ホストコンピュータ、  １４  補助処理装置、  １６  ＦＰＧＡ、  １８  メモリ、  ２０  回路データ設定部、  ２２  情報処理部、  ２４  回路状況監視部、  ２５  通信部、  ２６  通信状況監視部、  ２８  通常回路データ、  ３０  予備回路データ。
【図１】
0006745586.tif 000002
【図２】
0006745586.tif 000003
【図３】
0006745586.tif 000004
【図４】
0006745586.tif 000005