(57)【要約】【課題】  ＰＬＤ上のメモリ内の情報に従って構築される論理回路を備えた装置において、そのメモリでソフトエラーが発生した場合に、その装置のスループットの劣化を抑えた制御を行えるようにする。【解決手段】  ストレージシステム１００が、他の装置（１）とメディアドライブ１５０との間でのデータ転送を制御するＰＬＤ（２１７）と、プロセッサ（２１５）とを備える。ＰＬＤ（２１７）が、ＰＬＤの外に存在する情報源（１５）から入力された情報を記憶するメモリ（２１３）と、複数の回路要素から成る回路要素群（３）と、メモリ内の情報に従って回路要素群上で構築された論理回路（２）とを備える。プロセッサが、メモリでソフトエラーが発生したことを検出し、論理回路でエラーが生じたか否かを検出し、双方の検出の結果に応じた制御を行う。【選択図】図３
2007058419.tif 000002
【特許請求の範囲】
【請求項１】
他の装置との間でデータを送受信することができるストレージシステムにおいて、
送受信されるデータを記憶することができるメディアドライブと、
前記他の装置と前記メディアドライブとの間のデータ転送を制御するＰＬＤ（Programmable Logic Device）と、
プロセッサと
を備え、
前記ＰＬＤは、
前記ＰＬＤの外に存在する情報源から入力された、論理回路の構成を表した回路構成情報を記憶するメモリと、
複数の回路要素から成る回路要素群と、
前記メモリ内の回路構成情報に従って前記回路要素群上で構築された、前記データ転送を制御する論理回路と
を備え、
前記プロセッサが、
前記メモリでソフトエラーが発生したことを検出し、
前記論理回路でエラーが生じたか否かを検出し、
双方の検出の結果に応じた制御を行う、
ストレージシステム。
【請求項２】
前記プロセッサは、
前記ソフトエラー又は前記論理回路でエラーが生じたことを検出した場合に、前記論理回路を介して行われるデータの転送を停止させ、
少なくとも前記ソフトエラーを検出した場合に、前記論理回路を再び構築させ、
前記論理回路を再構築させてから一定時間経っても、前記ソフトエラーが検出されないならば、前記データの転送を再開させる、
請求項１記載のストレージシステム。
【請求項３】
前記プロセッサは、前記論理回路を再構築させてから一定時間内に、前記メモリでソフトエラーが発生したことが検出されたならば、前記ＰＬＤ又はそれを備えた回路基板の交換を命じる、
請求項２記載のストレージシステム。
【請求項４】
前記プロセッサは、
前記ソフトエラー又は前記論理回路でエラーが生じたことを検出した場合に、前記論理回路を介して行われるデータの転送を停止させ、
少なくとも前記論理回路でエラーが生じたことを検出した場合に、前記ソフトエラーを検出する所定時間前から前記ソフトエラーを検出するまでに送受信された特定のデータを無効化するための無効化処理を実行する、
請求項１記載のストレージシステム。
【請求項５】
前記プロセッサは、前記ソフトエラーを検出したが前記論理回路でエラーが生じたことをしなかった場合に、前記ソフトエラーが発生したことを所定の記憶域に書き込む、
請求項１記載のストレージシステム。
【請求項６】
前記ＰＬＤ及び前記プロセッサを備えたデータ転送系が多重化されており、
或るデータ転送系において、プロセッサが、前記ソフトエラー又は前記論理回路でエラーが生じたことを検出した場合に、前記論理回路を介して行われるデータの転送を停止させ、
前記或るデータ転送系においてデータの転送が停止されても、他のデータ転送系が、該他のデータ転送系における論理回路を介したデータ転送を行う、
請求項１記載のストレージシステム。
【請求項７】
ＰＬＤの外に存在する情報源から入力された情報を記憶するメモリと、複数の回路要素から成る回路要素群と、前記メモリ内の情報に従って前記回路要素群上で構築された論理回路とを備えるＰＬＤを有する装置の制御方法であって、
前記メモリでソフトエラーが発生したことを検出し、
前記論理回路でエラーが生じたか否かを検出し、
双方の検出の結果に応じた制御を行う、
制御方法。
【請求項８】
ＰＬＤの外に存在する情報源から入力された情報を記憶するメモリと、複数の回路要素から成る回路要素群と、前記メモリ内の情報に従って前記回路要素群上で構築された論理回路とを備えるＰＬＤを有するコンピュータに実行させるためのコンピュータプログラムであって、
前記メモリでソフトエラーが発生したことを検出し、
前記論理回路でエラーが生じたか否かを検出し、
双方の検出の結果に応じた制御を行う、
ことを前記プロセッサに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＬＤ（Programmable Logic Device）上のメモリ内の情報に従って構築される論理回路を備えた装置を制御するための技術に関する。
【背景技術】
【０００２】
従来、α線や中性子線がメモリに照射される等の原因によって、メモリ内の情報が化けてしまう（例えば「１」というビットが「０」に変わってしまう）こと、つまりソフトエラーが発生してしまうことが知られている（例えば、特開平８−１３７７６４号公報）。
【０００３】
【特許文献１】特開平８−１３７７６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、メモリ内の回路構成情報（論理回路の構成を表す情報）が表す構成の論理回路を構築することができるタイプのＰＬＤが知られている。そのようなＰＬＤの一種として、ＦＰＧＡ（Field Programmable Gate Array）がある。ＦＰＧＡは、例えば、複数の回路要素から成る回路要素群と、その回路要素群上で論理回路を構成するためのメモリ（以下、コンフィギュレーションメモリ）とを備えている。回路要素群上には、コンフィギュレーションメモリ内の回路構成情報が表す構成の論理回路が構築される。コンフィギュレーションメモリでソフトエラーが発生してしまうと、ソフトエラーの回路構成情報が初期のものと違ってしまい、故に、ＦＰＧＡ内の論理回路が意図しない構成の回路に書き変わってしまう可能性がある。
【０００５】
近年、ＦＰＧＡは、微細化と大容量化が進んでおり、それに伴って、コンフィギュレーションメモリも微細化され得る。このため、コンフィギュレーションメモリ内の情報が、放射線の影響を受け易くなり、ソフトエラーの発生率が高くなる可能性が出る。故に、ソフトエラーの発生が無視できなくなりつつある。
【０００６】
ＦＰＧＡには、コンフィギュレーションメモリでソフトエラーが発生したか否かをチェックするエラー監視機能が搭載されているものがある。このエラー監視機能により、ソフトエラーが発生した場合には、ソフトエラーの発生が報告される。
【０００７】
発生したソフトエラーには、構築された論理回路に実際に影響するものとしないものとがある。しかし、それにも関わらず、ＦＰＧＡに搭載されているエラー監視機能では、ソフトエラーが発生すれば、ソフトエラーの発生が報告される。このため、発生したソフトエラーが、構築された論理回路に実際に影響するものか否かに応じた制御を行うことができない。例えば、ソフトエラーから回復させるための方法として、当該ＦＰＧＡが搭載されている装置の主電源を一旦切断して、再び当該装置の主電源を投入する方法があるが、ソフトエラーが生じる度に主電源を切断するのでは、装置の使い勝手が良くない。特に、この方法は、ＦＰＧＡを搭載した装置が、動作を長期間停止することが許されない装置（いわゆる無停止装置）、具体的には、例えば、２４時間稼動することが求められるストレージシステムである場合には、好ましくない。
【０００８】
従って、本発明の一つの目的は、ＰＬＤ上のメモリ内の情報に従って構築される論理回路を備えた装置において、そのメモリでソフトエラーが発生した場合に、その装置のスループットの劣化を抑えた制御を行えるようにすることにある。
【０００９】
本発明の他の目的は、後述の説明から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本発明に従うストレージシステムは、他の装置との間でデータを送受信されるデータを記憶することができるメディアドライブと、前記他の装置と前記メディアドライブとの間のデータ転送を制御するＰＬＤと、プロセッサ（例えばマイクロプロセッサ）とを備える。前記ＰＬＤは、前記ＰＬＤの外に存在する情報源から入力された、論理回路の構成を表した回路構成情報を記憶することができるメモリであるメモリと、複数の回路要素から成る回路要素群と、前記メモリ内の回路構成情報に従って前記回路要素群上で構築された、前記データ転送を制御する論理回路とを備える。前記プロセッサは、前記メモリでソフトエラーが発生したことを検出し、前記論理回路でエラーが生じたか否かを検出し、双方の検出の結果に応じた制御を行う。別の言い方をすれば、プロセッサに代えて、ストレージシステムは、前記メモリでソフトエラーが発生したことを検出する第一の検出手段と、前記論理回路でエラーが生じたか否かを検出する第二の検出手段と、双方の検出の結果に応じた制御を行う制御手段とを備えることができる。
【００１１】
他の装置は、例えば、ホスト装置であっても良いし、別のストレージシステムであっても良い。
【００１２】
また、前記情報源は、前記メモリよりも放射線の影響を受けにくいものであればどのようなものでも採用し得る。例えば、前記メモリとは別のメモリであっても良いし、前記ストレージシステムと通信可能に接続されたコンピュータマシンであっても良い。
【００１３】
メモリでソフトエラーが発生したことは、例えば、メモリからの割込み信号により、検出することができる。その割込み信号は、例えば、メモリでソフトエラーが発生したか否かをチェックするエラー監視機能により発行することができる。
【００１４】
前記論理回路でエラーが生じたか否かは、論理回路からエラー報告が出力されたか否かにより、検出することができる。この場合、論理回路は、例えば、論理回路でエラーが発生したか否かをチェックしエラーを検出した場合にエラー報告を出力するエラーチェック回路を備えることができる。
【００１５】
本発明に従うストレージシステムは、複数のメディアドライブを備えるシステムであっても良いし、サーバマシンであっても良い。このストレージシステムは、いわゆる無停止装置であっても良い。
【００１６】
本発明の第一の態様では、前記プロセッサ（又は前記制御手段）は、前記ソフトエラー又は前記エラー報告が出力されたことを検出した場合に、前記論理回路を介して行われるデータの転送を停止させることができる。また、前記プロセッサ（又は前記制御手段）は、少なくとも前記ソフトエラーを検出した場合に、前記メモリ内の回路構成情報を前記メモリに読み込ませて、前記メモリに読み込まれた回路構成情報に従って前記論理回路を再び構築させることができる。この場合、前記プロセッサ（又は前記制御手段）は、前記論理回路を再構築させてから一定時間経っても、前記ソフトエラーが検出されないならば、前記データの転送を再開させることができる。また、前記プロセッサ（又は前記制御手段）は、前記論理回路を再構築（reconfiguration）させてから一定時間内に、前記メモリでソフトエラーが発生したことが検出されたならば、前記ＰＬＤ又はそれを備えた回路基板の交換を命じることができる。ここで、回路基板とは、例えば、ＰＬＤを備えたインターフェース制御基板（例えば後述のＣＨＡ或いはＤＫＡ）とすることができる。また、回路基板の交換の命令は、例えば、ストレージシステムに通信可能に接続された装置が備えるディスプレイ画面に交換することを表示する、ことにより行うことができる。
【００１７】
本発明の第二の態様では、前記プロセッサ（又は前記制御手段）は、前記ソフトエラー又は前記エラー報告が出力されたことを検出した場合に、前記論理回路を介して行われるデータの転送を停止させることができる。また、前記プロセッサ（又は前記制御手段）は、少なくとも前記エラー報告が出力されたことを検出した場合に、前記ソフトエラーを検出する所定時間前から前記ソフトエラーを検出するまでに送受信された特定のデータを無効化するための無効化処理を実行することができる。ここで、「無効化処理」とは、例えば、特定のデータが何であるかを他の装置に通知し、その他の装置に、当該特定のデータをストレージシステムに再送してもらう、或いは、当該特定のデータを他の装置から消去してもらうことである。或いは、「無効化処理」とは、例えば、他の装置から受信してメディアドライブに書かれたデータのうち、特定のデータを、メディアドライブから消去することである。
【００１８】
本発明の第三の態様では、前記プロセッサ（又は前記制御手段）は、前記ソフトエラーを検出したが前記論理回路でエラーが生じたことをしなかった場合に、前記ソフトエラーが発生したことを所定の記憶域に書き込むことができる。
【００１９】
本発明の第四の態様では、前記ＰＬＤ及び前記プロセッサを備えたデータ転送系が多重化されていてもよい。或るデータ転送系において、プロセッサが、前記ソフトエラーが検出された場合に、前記論理回路を介して行われるデータの転送を停止させてもよい。前記或るデータ転送系においてデータの転送が停止されても、他のデータ転送系が、該他のデータ転送系における論理回路を介したデータ転送を行うことができる。
【００２０】
本発明に従う制御方法は、ＰＬＤの外に存在する情報源から入力された情報を記憶するメモリと、複数の回路要素から成る回路要素群と、前記メモリ内の情報に従って前記回路要素群上で構築された論理回路とを備えるＰＬＤを有する装置の制御方法である。この制御方法では、前記メモリでソフトエラーが発生したことを検出し、前記論理回路でエラーが生じたか否かを検出し、双方の検出の結果に応じた制御を行うことが行われる。
【００２１】
この制御方法は、例えば、コンピュータプログラムがコンピュータに読み込まれて実行されることによって行うことができる。そのコンピュータプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録されてもよい。この場合、コンピュータが、この記録媒体から上記コンピュータプログラムを読み込みインストールすることができる。また、そのコンピュータプログラムは、インターネットなどの通信ネットワークを介してコンピュータにダウンロードされても良い。また、コンピュータは、ＣＰＵ等のプロセッサであっても良いし、ＣＰＵやメモリ等を備えた情報処理装置（例えば、パーソナルコンピュータ、サーバマシン或いはワークステーション）であっても良い。
【発明の効果】
【００２２】
本発明によれば、ＰＬＤ上のメモリ内の情報に従って構築される論理回路を備えた装置において、そのメモリでソフトエラーが発生した場合に、その装置のスループットの劣化を抑えた制御を行うことができる。
【発明を実施するための最良の形態】
【００２３】
図１は、本発明の一実施形態に係るストレージシステムの概要を示すブロック図である。
【００２４】
ストレージシステム１００は、通信ネットワーク（例えばＳＡＮ（Storage Area Network））３２を介して、複数台（一台でも良い）のホスト装置１、１、…と通信可能に接続されている。
【００２５】
ストレージシステム１００は、例えばRAID（Redundant Array of Independent Disks）のようなディスクアレイ装置とすることができる。ストレージシステム１００は、例えば、ストレージシステム１００が行う処理を制御する制御部１０１と、RAIDグループ２１０と、サービスプロセッサ（SVP）２８１とを備える。制御部１０１は、例えば、一又は複数のディスクアダプタ（以下、ＤＫＡ）１２０と、一又は複数のチャネルアダプタ（以下、ＣＨＡ）１１０と、キャッシュメモリ１３０と、共有メモリ１４０と、スイッチング制御部２７０とを備える。
【００２６】
RAIDグループ２１０は、複数のＨＤＤ（ハードディスクドライブ）１５０を含んでおり、例えば、RAID１やRAID５等のRAIDに基づく冗長記憶を提供する。各ＨＤＤ１５０が提供する物理的な記憶領域上には、論理的な記憶領域である論理デバイス（以下、ＬＤＥＶ）６を少なくとも一つ以上設定可能である。ＬＤＥＶ６は、ホスト装置１によって読み書きされるデータを記憶することができる。
【００２７】
各ＤＫＡ１２０は、各ＨＤＤ１５０との間のデータ授受を制御するものである。各ＤＫＡ１２０は、例えば、マイクロプロセッサ（以下、ＭＰ）、ROM、RAM等を含んだマイクロコンピュータシステムとして構成される。
【００２８】
各ＣＨＡ１１０は、通信ネットワーク３２に接続することができる少なくとも一つのポートを有し、ホスト装置１からデータを受信することができる。各ＣＨＡ１１０は、ＤＫＡ１２０と同様に、ＭＰや、ROM、RAM等を含んだマイクロコンピュータシステムとして構成可能である。
【００２９】
キャッシュメモリ１３０は、例えば、揮発（volatile）または不揮発（nonvolatile）の半導体メモリから構成することができる。キャッシュメモリ１３０は、ホスト装置１からのデータや、ＬＤＥＶ６から読み出されたデータを記憶することができる。
【００３０】
共有メモリ１４０は、例えば、不揮発または揮発の半導体メモリから構成することができる。共有メモリ１４０は、例えば、ホスト装置１から受信した各種コマンドや、ストレージシステム１００の制御に使用する制御情報等を記憶する。コマンドや制御情報等は、複数の共有メモリ１４０によって、冗長記憶されてもよい。なお、キャッシュメモリ１３０と共有メモリ１４０とは、それぞれ別々のメモリとして構成することもできるし、あるいは、メモリの一部をキャッシュメモリ領域として使用し、同一のメモリの別の一部を共有メモリ領域として使用することもできる。
【００３１】
スイッチング制御部２７０は、各ＤＫＡ１２０と、各ＣＨＡ１１０と、キャッシュメモリ１３０と、共有メモリ１４０とを、それぞれ相互に接続するものである。スイッチング制御部２７０は、例えば、超高速クロスバスイッチ等から構成することができる。
【００３２】
ＳＶＰ２８１は、入力装置や出力装置（例えばディスプレイ画面）を備えた装置（例えばノート型のパーソナルコンピュータ）であり、例えば内部ネットワーク（例えばＬＡＮ）２８２Ａを介して、ストレージシステム１００内の所定の記憶域（例えば共有メモリ１４０）に、所定の制御情報を記憶させることができる。
【００３３】
次に、ストレージシステム１００が行う処理の一例について説明する。ＣＨＡ１１０は、通信ネットワーク３２を介して、ホスト装置１から書込み要求及び書込み対象データを受信する。受信された書込み要求は共有メモリ１４０に記憶され、受信された書込み対象データはキャッシュメモリ１３０に記憶される。ＤＫＡ１２０は、共有メモリ１４０を随時参照している。ＤＫＡ１２０は、共有メモリ１４０に記憶されている未処理の書込み要求を発見すると、この書込み要求に従って、キャッシュメモリ１３０から書込み対象データを読み出し、アドレス変換等を行う。ＤＫＡ１２０は、書込み要求によって指定されたＬＤＥＶ６を有するＨＤＤ１５０に、書込み対象データを書き込む。
【００３４】
ホスト装置１からの読出し要求を処理する場合を説明する。ＣＨＡ１１０は、ホスト装置１から読出し要求を受信すると、この読出し要求を共有メモリ１４０に記憶させる。ＤＫＡ１２０は、共有メモリ１４０内で未処理の読出し要求を発見すると、この読出し要求によって指定されたＬＤＥＶ６を有するＨＤＤ１５０からデータを読み出す。ＤＫＡ１２０は、読み出したデータをキャッシュメモリ１３０に記憶させる。また、ＤＫＡ１２０は、要求されたデータの読出しが完了した旨を、共有メモリ１４０を介して、ＣＨＡ１１０に通知する。ＣＨＡ１１０は、キャッシュメモリ１３０からデータを読み込み、ホスト装置１に送信する。
【００３５】
以上が、本実施形態におけるシステム全体のハードウェア構成例である。
【００３６】
ところで、この実施形態に係るストレージシステム１００では、特に、インターフェース制御基板であるＣＨＡ１１０及び／又はＤＫＡ１２０において行われる制御に特徴がある。ＣＨＡ１１０とＤＫＡ１２０は、実質的に同じ制御を行うことができるので、以下、ＣＨＡ１１０を代表的に例に採り、特徴となる制御について説明する。
【００３７】
図２は、ＣＨＡ１１０のハードウェア構成例を示す。
【００３８】
ＣＨＡ１１０には、二重化されたデータ転送系２２０Ａ、２２０Ｂが設けられている。同時期に、これらのデータ転送系２２０Ａ、２２０Ｂは、ホスト装置１とＨＤＤ１５０との間でやり取りされるデータの転送を制御することができる。
【００３９】
データ転送系２２０Ａ、２２０Ｂは、実質的に同じ構成をしているので、データ転送系２２０Ａを代表的に例に採って説明すると、一つのデータ転送系２２０Ａには、プロトコルチップ２１１と、ＦＰＧＡ（Field Programmable Gate Array）２１７と、ローカルメモリ２１３と、ＣＰＵ２１５と、リセット回路２１９とが備えられている。プロトコルチップ２１３は、ホスト装置１との間でデータを送受信する際にプロトコル変換を行うＬＳＩ（Large Scale Integration）である。ＦＰＧＡ２１７は、データの転送を行うＬＳＩである。ローカルメモリ２１３は、種々の情報、例えば、ＣＰＵ２１５に所定の制御を実行させるための制御プログラム２１４を記憶することができる。ＣＰＵ２１５は、ローカルメモリ２１３から制御プログラム２１４を読み込んで実行することができる。リセット回路２１９は、ＦＰＧＡ２１９からの信号に応じて、プロトコルチップ２１１を介したデータの入出力を行うこと及びそれの停止を制御することができる。
【００４０】
図３は、データ転送系２２０Ａにおける構成例をより詳細に示すブロック図である。
【００４１】
一つのデータ転送系２２０Ａには、一種のＰＬＤであるＡＳＩＣ（Application Specific Integrated Circuit）（以下、ＰＬＤ／ＡＳＩＣ）１７と、コンフィギュレーションＲＯＭ１５とが備えられており、それぞれが、ＦＰＧＡ２１７に接続されている。
【００４２】
ＰＬＤ／ＡＳＩＣ１７には、例えば、ＦＰＧＡ２１７から出力された後述のエラー報告が蓄積される第一フリップフロップ回路（以下、ＦＦ）と、ＣＰＵ２１５からＣＰＵバスを介して入力された再コンフィギュレーション指示が蓄積される第二ＦＦ２１とが備えられる。
【００４３】
コンフィギュレーションＲＯＭ１５は、論理回路の構成を表す回路構成情報の情報源となるメモリ（このメモリとしては、不揮発性のメモリであれば、どのような種類のメモリでも採用し得る）であり、回路構成情報を記憶している。コンフィギュレーションＲＯＭ１５は、ＦＰＧＡ２１７に搭載されているコンフィギュレーションＲＡＭ２１３よりも、放射線の影響が受けにくいようになっている。
【００４４】
ＦＰＧＡ２１７には、コンフィギュレーションＲＡＭ２１３と、多数の回路要素（例えば、プリントされた配線、半導体スイッチ（例えばトランジスタ）など）から成る回路要素群３とが備えられる。
【００４５】
コンフィギュレーションＲＡＭ２１３には、コンフィギュレーションＲＯＭ１５から回路構成情報が読み出され記憶される。
【００４６】
回路要素群３上には、コンフィギュレーションＲＡＭ２１３に記憶された回路情報要素が表す構成通りの論理回路２が構築される。構築された論理回路２には、ＯＲ回路１１と、ホスト装置１側との間で入出力されるデータのプロトコル制御を行う第一のプロトコルインターフェース回路（以下、プロトコルＩ／Ｆ）５と、ＨＤＤ１５０側との間で入出力されるデータのプロトコル制御を行う第二のプロトコルＩ／Ｆ９と、第一プロトコルＩ／Ｆ５と第二プロトコルＩ／Ｆ７との間でやり取りされるデータを記憶するメモリ７といったサブ回路が備えられる。そして、サブ回路５、７及び９には、自分のサブ回路５、７又は９でエラーが発生したか否かをチェックするエラーチェック回路４、６及び８が備えられる。各エラーチェック回路４、６及び８は、ＯＲ回路１１に接続されており、エラーが発生したことが検出された場合に、エラー報告（例えば「１」という信号）をＯＲ回路１１に入力する。ＯＲ回路１１は、ＰＬＤ／ＡＳＩＣ１７の第一ＦＦ１９に接続され、少なくともエラーチェック回路４、６又は８からエラー報告が入力された場合に、エラー報告（例えば「１」という信号）を第一ＦＦ１９に出力する。これにより、第一ＦＦ１９に、エラー報告が格納される（例えば、エラーの有無を表すフラグが立つ）。
【００４７】
図４は、論理回路２の構成例をより詳細に示したものである。
【００４８】
例えば、コンフィギュレーションＲＡＭ２１３に記憶された回路構成情報に従って、回路要素群３上で、多数のロジックセル（logic cell）３１が構築される。ロジックセル３１とは、論理回路２の一要素であり、論理回路２が行う種々の処理のうちの少なくとも一つの処理を行うものである。少なくとも一つのロジックセル３１の集合により、上述したサブ回路５、７及び９が構成される。ロジックセル３１の構成例を図５に示す。この図５の例示によれば、回路構成情報に従って、ロジックセル３１内のルックアップテーブル（look up table）３３や、ＦＦ３７や、ＦＦ３７に入力される信号値などが制御されたロジックセル３１が構築される。
【００４９】
再び図４を参照する。コンフィギュレーションＲＡＭ２１３に記憶された回路構成情報に従って、回路要素群３上で、どのロジックセル３１とどのロジックセル３１とを電気的に接続するか否かも制御される。具体的には、各ロジックセル３１と他のロジックセル３１との間には、ロジックセル３１同士を電気的に接続するか否かを制御するための半導体スイッチ（例えばトランジスタ）４１が設けられている。コンフィギュレーションＲＡＭ２１３内の回路構成情報において、半導体スイッチ４１に対応する値が何であるかにより（例えば「１」であるか「０」であるかにより）、その半導体スイッチ４１がオンになるかオフになるかが制御される。
【００５０】
以上のようにして、図３に例示したような論理回路２が構築される。
【００５１】
ところで、ＦＰＧＡ２１７には、コンフィギュレーションＲＡＭ２１３でソフトエラーが発生したか否か（つまり、回路構成情報を構成する少なくとも一つのビットが化けたか否か）をチェックするためのエラー監視機能が搭載されている。このエラー監視機能は、不定期的に又は定期的に（例えば１００ミリ秒に一回の割合で）、コンフィギュレーションＲＡＭ２１３でソフトエラーが発生したか否かのチェックを行う。このエラー監視機能により、コンフィギュレーションＲＡＭ２１３でソフトエラーが発生したことが検出された場合には、コンフィギュレーションＲＡＭ２１３からＣＰＵ２１５に割り込み信号が入力される。
【００５２】
また、前述したように、論理回路２の複数のサブ回路５、７及び９の各々には、自分のサブ回路５、７又は９でエラーが生じたか否かをチェックするためのエラーチェック回路４、６又は８が構築されている。エラーチェック回路４、６又は８は、ハードウェア的なエラー（例えば、半導体スイッチ４１のオンとオフが勝手に切り替わってしまったというエラー）を検出することができる。以下、エラーチェック回路４、６又は８で検出されたエラーを、ソフトエラー（soft error）と区別するために「ハードエラー（hard error）」と称する。検出されたハードエラーは、サブ回路５、７又は９でのエラー、換言すれば、ホスト装置１とＨＤＤ１５との間でのデータ転送に影響する可能性の高いエラーである。少なくとも一つのエラーチェック回路４、６又は８が、ハードエラーが検出し場合には、ＯＲ回路１１にエラー報告を入力する。これにより、ＯＲ回路１１から第一ＦＦ１９にエラー報告が蓄積される。ＣＰＵ２１５は、不定期的に又は定期的に、ハードエラーが発生したか否か、具体的には、第一ＦＦ１９にエラー報告が蓄積されたか否かを監視する。
【００５３】
以上の通りであるから、ＣＰＵ２１５は、エラー報告が蓄積されていることを検出するよりも先に割り込み信号が入力された場合には、ハードエラーよりも先にソフトエラーを検出することになる。逆に、ＣＰＵ２１５は、割込み信号が入力されるよりも先にエラー報告が蓄積されていることを検出した場合には、ソフトエラーよりも先にハードエラーを検出することになる。ＣＰＵ２１５は、どちらのエラーを先に検出したかによって、行う処理を違える。
【００５４】
図６は、ハードエラーよりも先にソフトエラーが検出される場合に行われる処理の流れの一例を示す。なお、以下に説明するＣＰＵ２１５が行う動作は、例えば、ＣＰＵ２１５が制御プログラム２１４を実行することにより、行うことができる。
【００５５】
ＣＨＡ１１０が稼動している最中に（ステップＳ１）、一方のデータ転送系２２０Ａに存在するＣＰＵ２１５が、ハードエラーよりも先にソフトエラーを検出した場合、データ転送を停止させる（Ｓ２）。具体的には、例えば、ＣＰＵ２１５は、ＣＨＡ１１０における図示しないポートの設定値を所定値に変更することにより、データ転送を停止させる。これにより、そのＣＰＵ２１５が存在するデータ転送系２２０Ａでは、データ転送が行われなくなり、他方のデータ転送系２２０Ｂのみで、データ転送が行われる（いわゆる縮退運転が行われる）。換言すれば、そのデータ転送系２２０Ａを介するアクセスパス（例えば、ポート番号とＬＤＥＶ番号とで構成される論理パス）は閉塞するが、他方のデータ転送系２２０Ｂを介するアクセスパスは閉塞されない。
【００５６】
次に、ＣＰＵ２１５は、論理回路２でハードエラーが発生したか否かを検出する（Ｓ３）。具体的には、例えば、ＣＰＵ２１５は、ＣＰＵバスを介して第一ＦＦ１９にアクセスし、第一ＦＦ１９にエラー報告が蓄積されたか否かをチェックする。
【００５７】
Ｓ３の結果、ハードエラーの発生が検出された場合には（Ｓ３でＹＥＳ）、ＣＰＵ２１５は、転送してしまったデータを無効化するための無効化処理を実行する（Ｓ４）。無効化の対象となるデータは、少なくとも、ソフトエラーの発生を検出する一定時間前からそのソフトエラーの発生を検出するまでに転送されたデータである。一定時間前とは、例えば、ソフトエラーの発生を検出する直前回にハードエラー無しが検出された時である。ＣＰＵ２１５は、各時点毎に（例えば１００ミリ秒毎に）、どの範囲を指定したデータを転送したか（例えば、時刻とアクセス範囲情報（例えば、論理ブロックアドレス及びＬＤＥＶ番号）とのセット）を、ローカルメモリ２１３等の所定の記憶域に記録し、その記憶域を参照することにより、ソフトエラーの発生を検出する一定時間前の時点とそのソフトエラーの発生を検出した時点との間に転送されたデータ、つまり、無効化の対象となるデータを特定することができる。ＣＰＵ２１５は、Ｓ２でデータ転送停止が行われるまで通信相手であったホスト装置１に、特定されたデータが何であるかを、能動的に又はホスト装置１からの問い合わせに応答して、通知することができる。それにより、ホスト装置１から無効化対象のデータが再送されること、或いは、ホスト装置１に読み出された無効化対象のデータがホスト装置１から削除されることが行われ得る。また、ＣＰＵ２１５は、無効化対象のデータが或るＨＤＤ１５０に格納されたことを特定した場合には、そのデータをその或るＨＤＤ１５０から削除するようにすることができる。
【００５８】
Ｓ４の無効化処理を行う場合、ＣＰＵ２１５は、無効化処理を行ったことを示すログを取ることができる（Ｓ５）。具体的には、例えば、ＣＰＵ２１５は、無効化処理を行ったことを、ローカルメモリ２１３に存在するログファイル４４６に書き込むことができる。
【００５９】
その後、ＣＰＵ２１５は、ＦＰＧＡ２１７を再コンフィギュレーションさせる（Ｓ７）。換言すれば、ＣＰＵ２１５は、ＦＰＧＡ２１７をリブートする。具体的には、例えば、ＣＰＵ２１５は、第二ＦＦ２１（図３参照）に、再コンフィギュレーション指示を設定する（例えば、所定のフラグを立てる）。これにより、例えば、その設定がコンフィギュレーションＲＡＭ２１３で検出される。この場合、例えば、コンフィギュレーションＲＡＭ２１３から、コンフィギュレーションＲＡＭ２１３からリセット回路２１９に対してリセット信号が出力され、リセット回路２１９により、プロトコルチップ２１１でアクセス要求の受付が不能にされる。そして、その間に、コンフィギュレーションＲＯＭ１５からコンフィギュレーションＲＡＭ２１３に、回路構成情報が読み込まれ、コンフィギュレーションＲＡＭ２１３に読み込まれた回路構成情報に従って、回路要素群３上に、論理回路２が再構築される。その後、コンフィギュレーションＲＡＭ２１３からリセット回路２１９に対してリセット解除信号が出力され、リセット回路２１９により、プロトコルチップ２１１でアクセス要求の受付が可能にされる。
【００６０】
Ｓ７を行ってもなお、ソフトエラーが発生するようであれば（Ｓ８でＹＥＳ）、ＣＰＵ２１７は、自分を搭載するＣＨＡ１１０の基板を交換することの指示をＳＶＰ２８１に出す（Ｓ９）。これにより、例えば、ＳＶＰ２８１のディスプレイ画面に、そのＣＨＡ１１０の基板を交換することの指示メッセージが表示され、保守員が、その指示メッセージに従って、そのＣＨＡ１１０の交換を行うことができる。
【００６１】
Ｓ７を行ったことにより、ソフトエラーが再発生しなければ（Ｓ８でＮＯ）、ＣＰＵ２１７は、通常運転を再開させる。具体的には、例えば、Ｓ７が完了してから一定時間経過しても割込み信号が入力されなければ、ＣＰＵ２１７は、Ｓ２でのデータ転送停止を解除する（例えば、ポートの設定値を元の値に戻す）（Ｓ１０）。これにより、データ転送系２２０Ａでは、通常運転が再開される（Ｓ１）。
【００６２】
上記のＳ３の結果、ハードエラーの発生が検出されなかった場合には（Ｓ３でＮＯ）、ＣＰＵ２１５は、ソフトエラーが発生したことを示すログを取る（Ｓ６）。具体的には、例えば、ＣＰＵ２１５は、ソフトエラーが発生したことを、ローカルメモリ２１３に存在するログファイル４４６に書き込むことができる。以後、ＣＰＵ２１５は、上述したＳ７を行う。
【００６３】
図７は、ソフトエラーよりも先にハードエラーが検出される場合に行われる処理の流れの一例を示す。
【００６４】
ＣＨＡ１１０が稼動している最中に（Ｓ１１）、ＣＰＵ２１５が、ソフトエラーよりも先にハードエラーを検出した場合、データ転送を停止させる（Ｓ１２）。
【００６５】
そして、ＣＰＵ２１５は、コンフィギュレーションＲＡＭ２１３でソフトエラーが発生したか否かを検出する（Ｓ１３）。具体的には、例えば、ＣＰＵ２１５は、Ｓ１２の後、所定時間、割込み信号の入力を待つ。
【００６６】
ＣＰＵ２１５は、ソフトエラーの発生を検出した場合には（Ｓ１３でＹＥＳ）、上記Ｓ４、Ｓ５、Ｓ７、Ｓ８及びＳ９と同様の処理を行うことができる（Ｓ１４−Ｓ１８）。
【００６７】
一方、ＣＰＵ２１５は、ソフトエラーの発生を検出しなかった場合には（Ｓ１３でＮＯ）、上記Ｓ９と同様の処理を行う（Ｓ１８）。
【００６８】
図８は、図６のＳ９又は図７のＳ１８による基板交換指示によってＳＶＰ２８１に表示される画面の一例を示す。
【００６９】
図８の画面は、ログファイル４４６に記録されたハードエラー及びソフトエラーも一緒に表示された例である。図８において、「ＰＫ」はパッケージの略であり、具体的には、ＣＨＡ１１０及びＤＫＡ１２０を示す。より具体的には、ＰＫ＃１−ＰＫ＃４は、ＣＨＡ１１０を表し、ＰＫ＃５−ＰＫ＃８は、ＤＫＡ１２０を示す。故に、例えば、この図８によれば、ＰＫ＃７（ＤＫＡ１２０）が交換必要であることがわかる。また、ＰＫ＃１（ＣＨＡ１１０）のＣＰＵ＃０で、ハードエラーは検出されなかったがソフトエラーが検出されたことがわかる。また、ＰＫ＃６（ＤＫＡ１２０）のＣＰＵ＃１により、Ｓ４の無効化処理が行われたことがわかる。
【００７０】
以上が、本実施形態についての説明である。
【００７１】
上述した実施形態によれば、ＦＰＧＡ２１７のコンフィギュレーションＲＡＭ２１３にロードされる回路構成情報には、データ転送を行う論理回路２でハードウェア的なエラーが発生したか否かをチェックするエラーチェック回路を構築するための情報が含まれており、その情報に従って、当該エラーチェック回路が構築される。コンフィギュレーションＲＡＭ２１３でソフトエラーが発生したことが検出された場合、論理回路２のエラーチェック回路でハードエラーが検出されたか否かが検出され、その検出結果に応じて、異なる制御が行われる。例えば、ソフトエラーのみが検出された場合には、データの無効化処理を行うことなくＦＰＧＡ２１７のリブートが行われ、それによってソフトエラーの発生が検出されなくなった場合には、そのＦＰＧＡ２１７を備える基板（ＣＨＡ１１０、ＤＫＡ１２０）の交換は行われることなく、通常運転が再開される。これにより、ソフトエラーの発生が検出される都度に基板交換によりソフトエラーからの回復が行われる方法に比べて、ストレージシステム１００において縮退運転が行われる時間長を抑えることができる。
【００７２】
以上、本発明の好適な幾つかの実施形態を説明したが、本発明は、それらの実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００７３】
例えば、図６において、ソフトエラーの発生が検出された場合、一回目のチェックで、ハードエラーの発生が検出されなかった場合、例えば、所定回数、或いは、ソフトエラーの発生を検出してから所定時間以内で何回でも、ハードエラーが発生したか否かのチェックが行われても良い。
【００７４】
また、例えば、図６において、ソフトエラーの発生が検出された場合、ＣＰＵ２１５は、ハードエラーの発生も検出した場合にのみ、ＦＰＧＡ２１７のリブートを行って、ハードエラーの発生を検出しなかった場合には、少なくとも今回の（つまり同一の）ループの中では、ＦＰＧＡ２１７のリブートを行わなくても良い。
【００７５】
また、例えば、ＳＶＰ２８１が、定期的に又は不定期的に、各ＣＨＡ１１０やＤＫＡ１２０からログファイル４４６を収集し、ＳＶＰ２８１が有する記憶資源（例えばメモリ又はハードディスク）に、収集されたログファイル４４６を蓄積してもよい。
【００７６】
また、例えば、コンフィギュレーションＲＯＭ１５には、複数種類の回路構成情報が含まれていて、それら複数種類の回路構成情報から一種類の回路構成情報（例えば、ＳＶＰ２８１或いはホスト装置１から選択された回路構成情報）が、コンフィギュレーションＲＡＭ２１３にロードされても良い。また、読み出された回路構成情報の種類を示すデータ（例えば回路構成情報の番号）が、例えば、ＦＰＧＡ２１７の所定の記憶域で記憶されていて、ＦＰＧＡ２１７のリブートの際には、その記憶域で記憶されているデータが示す種類の回路構成情報がコンフィギュレーションＲＯＭ１５から選択されて、コンフィギュレーションＲＡＭ２１３にロードされても良い。
【図面の簡単な説明】
【００７７】
【図１】図１は、本発明の一実施形態に係るストレージシステムの概要を示すブロック図である。
【図２】図２は、ＣＨＡ１１０のハードウェア構成例を示す。
【図３】図３は、データ転送系２２０Ａにおける構成例をより詳細に示すブロック図である。
【図４】図４は、論理回路２の構成例をより詳細に示したものである。
【図５】図５は、ロジックセル３１の構成例を示す。
【図６】図６は、ハードエラーよりも先にソフトエラーが検出される場合に行われる処理の流れの一例を示す。
【図７】図７は、ソフトエラーよりも先にハードエラーが検出される場合に行われる処理の流れの一例を示す。
【図８】図８は、ＳＶＰ２８１に表示される画面の一例を示す。
【符号の説明】
【００７８】
１…ホスト装置  ２…論理回路  ３…回路要素群  １６…論理デバイス（ＬＤＥＶ）  １５…ＲＯＭ  １７…ＰＬＤ／ＡＳＩＣ（Application Specific Integrated Circuit）  １９、２１…フリップフロップ  ３２…通信ネットワーク  １００…ストレージシステム  １１０…チャネルアダプタ（ＣＨＡ）  １２０…ディスクアダプタ（ＤＫＡ）  ２１３…コンフィギュレーションＲＡＭ  ２１５…ＣＰＵ  ２１７…ＦＰＧＡ
【図１】
2007058419.tif 000003
【図２】
2007058419.tif 000004
【図３】
2007058419.tif 000005
【図４】
2007058419.tif 000006
【図５】
2007058419.tif 000007
【図６】
2007058419.tif 000008
【図７】
2007058419.tif 000009
【図８】
2007058419.tif 000010