(57)【特許請求の範囲】
【請求項１】
処理装置と、周辺デバイスと、記憶装置と、メモリとを備える情報処理装置であって、
電源装置からの電力供給の停止を検知する停電検知部と、
前記電源装置からの電力供給が停止した場合に、前記処理装置と前記メモリと前記記憶装置とに予備電力を供給する予備電力供給部と、
前記処理装置と前記周辺デバイスとの通信を遮断する遮断部と、
前記周辺デバイスにおける異常発生を示すデバイス異常発生通知を受信するデバイス異常発生通知受信部と、
前記デバイス異常発生通知受信部が前記デバイス異常発生通知を受信すると、前記電源装置からの電力供給が停止しているかを確認する停電確認部と、
前記電源装置からの電力供給が停止している場合に、前記周辺デバイスにおいて異常が発生した場合に前記処理装置によって実行されるデバイス異常処理の実行を抑止する第１抑止部とを備え、
前記停電検知部が前記電源装置からの電力供給の停止を検知すると、前記遮断部が前記処理装置と前記周辺デバイスとの通信を遮断し、前記処理装置が、前記メモリのデータを読み出して前記記憶装置に格納するメモリバックアップ処理を実行することを特徴とする、情報処理装置。
【請求項２】
前記停電検知部が前記電源装置からの電力供給の停止を検知すると、周辺デバイスに対するアクセス要求を無効化する、無効化処理部を備えることを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記無効化処理部が、前記周辺デバイスに対する前記アクセス要求としてデータリード要求が発行された場合に、当該データリード要求を破棄するとともに、当該データリード要求の発行元プロセスに対してデバイスエラーの発生を意味するダミー信号を応答することで前記アクセス要求を無効化することを特徴とする、請求項２記載の情報処理装置。
【請求項４】
前記無効化処理部が、前記周辺デバイスに対する前記アクセス要求としてデータライト要求が発行された場合に、当該データライト要求を破棄することで前記アクセス要求を無効化することを特徴とする、請求項２又は３記載の情報処理装置。
【請求項５】
前記処理装置が前記メモリバックアップ処理を実行している間は、前記処理装置において、当該メモリバックアップ処理以外の処理の実行を抑止する第２抑止部を備えることを特徴とする、請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
処理装置と、周辺デバイスと、記憶装置と、メモリとを備える情報処理装置における処理方法であって、
電源装置からの電力供給の停止を検知する処理と、
前記処理装置と前記メモリと前記記憶装置とに予備電力を供給する処理と、
前記処理装置と前記周辺デバイスとの通信を遮断する処理と、
前記メモリのデータを読み出して前記記憶装置に格納するメモリバックアップ処理を実行する処理と、
前記周辺デバイスにおける異常発生を検知する処理と、
前記電源装置からの電力供給が停止しているかを確認する処理と、
前記電源装置からの電力供給が停止している場合に、前記周辺デバイスにおいて異常が発生した場合に前記処理装置によって実行されるデバイス異常処理の実行を抑止する処理と、
を備えることを特徴とする、処理方法。
【請求項７】
処理装置と、周辺デバイスと、記憶装置と、メモリと、電源装置からの電力供給の停止を検知する停電検知部と、前記電源装置からの電力供給が停止した場合に、前記処理装置と前記メモリと前記記憶装置とに予備電力を供給する予備電力供給部とを備える情報処理
装置において、
前記処理装置と前記周辺デバイスとの通信を遮断し、
前記メモリのデータを読み出して前記記憶装置に格納するメモリバックアップ処理を実行し、
前記周辺デバイスにおける異常発生を示すデバイス異常発生通知を受信し、
前記デバイス異常発生通知を受信すると、前記電源装置からの電力供給が停止しているかを確認し、
前記電源装置からの電力供給が停止している場合に、前記周辺デバイスにおいて異常が発生した場合に実行されるデバイス異常処理の実行を抑止する
処理を前記処理装置に実行させることを特徴とする、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置，処理方法及びプログラムに関する。
【背景技術】
【０００２】
デジタル回路の回路設計を電気的に変更可能なデバイスとして、ＦＰＧＡ（Field Programmable Gate Array）が知られている。ＦＰＧＡは、多数の論理ゲートを有するＬＳＩ（Large Scale Integration circuit）である。ＦＰＧＡは、論理ゲート間の論理関係と接続関係とを記述したコンフィギュレーションデータをＦＰＧＡが備えるコンフィギュレーションＲＡＭに書き込むことで、所定の論理回路として機能する。
【０００３】
種々の電子機器の回路部品にＦＰＧＡを用いることにより、設計に従って回路部品を製造する場合より短期間で回路設計を実装することができる。また、コンフィギュレーションデータを変更することでハードウェアを変更することなく容易に回路設計を変更できる。
【０００４】
ＦＰＧＡは電子機器を始めとして様々な製品で利用されている。例えば、サーバコンピュータに搭載される停電処理システムにＦＰＧＡを搭載し、このＦＰＧＡによりＤＩＭＭ（Dual Inline Memory Module）データのバックアップを実現する手法が知られている。
図９はコンピュータにおける従来の停電処理システムの構成を模式的に示す図である。
【０００５】
この図９に示す従来の停電処理システム５００は、ＣＰＵ（Central Processing Unit）５０１，周辺デバイス５０２，メモリコントローラ５０３，監視ＦＰＧＡ５０４，ＤＩＭＭ５０５，記憶装置５０６及び停電ＦＰＧＡ５０７を備える。
【０００６】
ＣＰＵ５０１は、種々の制御や演算を行なう処理装置であり、ＯＳ（Operating System）やプログラムを実行することにより、種々の機能を実現する。
【０００７】
周辺デバイス５０２は、ディスプレイデバイスや入出力コントローラ，インタフェースデバイス等のハードウェアデバイスであり、ＣＰＵ５０１とＰＣＩｅ（Peripheral Component Interconnect Express）等のインタフェースを介して通信可能に接続されている。
【０００８】
記憶装置５０６は、ハードディスクドライブ（Hard disk drive：ＨＤＤ）、ＳＳＤ（Solid State Drive）等の記憶装置であって、種々のデータを格納するものである。
【０００９】
ＤＩＭＭ５０５は、種々のデータやプログラムを格納する記憶領域であって、ＣＰＵ５０１がプログラムを実行する際に、データやプログラムを格納・展開して用いる。停電時においては、このＤＩＭＭ５０５に格納されたデータの複写が、記憶装置５０６に格納（バックアップ）される。
メモリコントローラ５０３は、ＤＩＭＭ５０５のデータの読み出しや書き出し等、ＤＩＭＭ５０５でのデータアクセスを管理する。
【００１０】
監視ＦＰＧＡ５０４は、停電検知を行なうとともに、停電検知時にＣＰＵ５０１及び周辺デバイス５０２への電力供給を停止させる制御を行なう。停電時においては、メモリコントローラ５０３，監視ＦＰＧＡ５０４，ＤＩＭＭ５０５，記憶装置５０６及び停電ＦＰＧＡ５０７には、スーパーキャパシタ等の図示しない予備電源から電力供給が行なわれる。
【００１１】
停電ＦＰＧＡ５０７は、停電時において、メモリコントローラ５０３を介してＤＭＡ（Direct Memory Access）によりＤＩＭＭ５０５のデータを記憶装置５０６にバックアップする制御を行なう。
【００１２】
図９に示す従来の停電処理システム５００において、停電時においては、予備電源により、メモリコントローラ５０３，監視ＦＰＧＡ５０４，ＤＩＭＭ５０５，記憶装置５０６及び停電ＦＰＧＡ５０７への電力供給は継続して行なう。
【００１３】
そして、停電ＦＰＧＡ５０７は、メモリコントローラ５０３を介して、ＤＭＡによりＤＩＭＭ５０５のデータを記憶装置５０６にバックアップする。すなわち、停電時には、停電ＦＰＧＡ５０７が、予備電源により電力供給をされた状態で、ＣＰＵ５０１を一切介することなくＤＩＭＭ５０５のデータのバックアップを行なう。以下、停電時にＤＩＭＭ５０５のデータを記憶装置５０６にバックアップすることを停電バックアップという場合がある。
また、その一方で、停電時においては、予備電源の電力消費を低減すべく、ＣＰＵ５０１及び周辺デバイスキー５０２への電力供給は停止される。
【００１４】
上述の如き停電処理システム５００の製造コストを低減するために、停電処理システム５００の構成から比較的高価であるＦＰＧＡを省除することが考えられる。
【００１５】
このように停電ＦＰＧＡ５０７を省除する場合には、予備電源からＣＰＵ５０１に対しても電力供給を行ない、上述した停電バックアップとしての機能を実現するためのファームウェアをこのＣＰＵ５０１によって実行する。
【００１６】
なお、このように停電時においてＣＰＵ５０１への電力供給を行なう場合であっても、予備電源の電力消費を低減すべく、消費電力が比較的大きい周辺デバイス５０２への電力供給は停止することが望ましい。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２０１１−２３２９８６号公報
【特許文献２】特開２０１２−２３４５３９号公報
【特許文献３】特開２０１３−３３４７２号公報
【特許文献４】特開２００９−９３２９５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかしながら、上述の如き停電ＦＰＧＡ５０７を省除した従来の停電処理システム５００において、例えば、停電発生のタイミングで周辺デバイス５０２で実行中の処理があった場合には、停電時のメモリバックアップの実行中に周辺デバイス５０２へのアクセスが発生する場合がある。このような周辺デバイス５０２へのアクセスは、例えば、ＣＰＵ５０１が周辺デバイス５０２用のデバイスドライバを実行することで発生する。
【００１９】
このように、周辺デバイス５０２に電源供給がされない状態で、この周辺デバイス５０２へのアクセスが発生すると、システムに致命的なエラーが発生し、ＣＰＵ５０１にはＮＭＩ（NonMaskable Interrupt）が通知され、停電バックアップ処理を実施できなくなるおそれがある。
１つの側面では、本発明は、停電時におけるメモリバックアップ処理を確実に実施できるようにすることを目的とする。
【課題を解決するための手段】
【００２０】
このため、この情報処理装置は、処理装置と、周辺デバイスと、記憶装置と、メモリとを備える情報処理装置であって、電源装置からの電力供給の停止を検知する停電検知部と、前記電源装置からの電力供給が停止した場合に、前記処理装置と前記メモリと前記記憶装置とに予備電力を供給する予備電力供給部と、前記処理装置と前記周辺デバイスとの通信を遮断する遮断部と、前記周辺デバイスにおける異常発生を示すデバイス異常発生通知を受信するデバイス異常発生通知受信部と、前記デバイス異常発生通知受信部が前記デバイス異常発生通知を受信すると、前記電源装置からの電力供給が停止しているかを確認する停電確認部と、前記電源装置からの電力供給が停止している場合に、前記周辺デバイスにおいて異常が発生した場合に前記処理装置によって実行されるデバイス異常処理の実行を抑止する第１抑止部とを備え、前記停電検知部が前記電源装置からの電力供給の停止を検知すると、前記遮断部が前記処理装置と前記周辺デバイスとの通信を遮断し、前記処理装置が、前記メモリのデータを読み出して前記記憶装置に格納するメモリバックアップ処理を実行する。
【発明の効果】
【００２１】
一実施形態によれば、停電時におけるメモリバックアップ処理を確実に実施できる。
【図面の簡単な説明】
【００２２】
【図１】実施形態の一例としてのストレージシステムのハードウェア構成を示す図である。
【図２】実施形態の一例としてのストレージシステムの機能構成図である。
【図３】実施形態の一例としてのストレージシステムにおけるＡＰＩ無効化処理部の処理を説明するための図である。
【図４】実施形態の一例としてのストレージシステムにおけるＡＰＩ無効化処理部の処理の具体例を示す図である。
【図５】実施形態の一例としてのストレージシステムにおける停電発生時の処理を説明するためのシーケンス図である。
【図６】実施形態の一例としてのストレージシステムにおける停電発生時の処理を説明するためのシーケンス図である。
【図７】実施形態の変形例としてのストレージシステムにおける停電発生時の処理を説明するためのシーケンス図である。
【図８】実施形態の他の変形例としてのストレージシステムにおける停電発生時の処理を説明するためのシーケンス図である。
【図９】従来の停電処理システムの構成を模式的に示す図である。
【発明を実施するための形態】
【００２３】
以下、図面を参照して本情報処理装置，処理方法及びプログラムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形（実施形態及び各変形例を組み合わせる等）して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【００２４】
（Ａ）構成
図１は実施形態の一例としてのストレージシステム１のハードウェア構成を示す図、図２はその機能構成図である。
【００２５】
本実施形態のストレージシステム１は、図１に示すように、ストレージ装置（情報処理装置）１００と１以上（図１に示す例では１つ）のホスト装置２とを備え、このホスト装置２に対して記憶領域を提供する。ホスト装置２は、例えば、サーバ機能をそなえたコンピュータ（ホストコンピュータ）であり、ＬＡＮ（Local Area Network）等のネットワークを介して、ストレージ装置１００と通信可能に接続される。
【００２６】
ストレージ装置１００は、図１に示すように、ＣＭ（Controller Module）１０１，ＢＰＳＵ（Backup Power Supply Unit）４０及び１以上（図１に示す例では３つ）の記憶装置３を備える。
【００２７】
記憶装置３は、ハードディスクドライブ（Hard Disk Drive：ＨＤＤ）やＳＳＤ（Solid State Drive）等のデータを読み書き可能に格納する記憶装置であり、ホスト装置２から受信したデータを記憶可能な記憶部として機能する。本実施形態においては、記憶装置３としてＨＤＤを用いる例について示す。以下、記憶装置３をＨＤＤ３と表す場合もある。
【００２８】
なお、図１中においては、便宜上、ストレージ装置１００に３つのＨＤＤ３を示しているが、これに限定されるものではなく、２つ以下もしくは４つ以上のＨＤＤ３を備えてもよい。そして、ストレージ装置１００は、これらの複数のＨＤＤ３を組み合わせて、冗長化された１つのストレージとして管理する、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）装置であってもよい。本実施形態においては、ストレージ装置１００が、これらの複数のＨＤＤ３を用いてＲＡＩＤを形成するＲＡＩＤ装置である例について説明する。
【００２９】
ＢＰＳＵ４０は、ストレージ装置１００において、図示しない電源装置からの電力供給が停止した場合に、ＣＭ１０１の少なくとも一部の部位に電力を供給する電力供給装置である。なお、電源装置からの電力供給が停止した状態を単に停電という場合がある。
【００３０】
ＢＰＳＵ４０は、ストレージ装置１００の停電時に、例えば、ＣＭ１０１の、ＣＰＵ１０，メモリ２０，メモリコントローラ２２，監視ＦＰＧＡ７０及びバックアップ用記憶装置３０に対して電力を供給する。
【００３１】
このＢＰＳＵ４０は、図１に示すように、バッテリ４１を備える。バッテリ４１は、例えば、鉛蓄電池やニッケル水素電池（Ni-H），リチウムイオン（Li-ION）電池等の二次電池である。なお、バッテリ４１に代えて、電気二重層コンデンサ（電気二重層キャパシタ）等のキャパシタを備えてもよい。
【００３２】
ＣＭ１０１は、ストレージ装置１００内の動作を制御するコントローラ（制御装置，コンピュータ）であり、例えば、ホスト装置２からのリード／ライト等のコマンドを受け取り、種々の制御を行なう。ＣＭ１０１はフロントエンド５１を介してネットワーク（図示省略）に接続される。そして、このＣＭ１０１は、ホスト装置２から受信するリード／ライト等のディスクアクセスコマンドに従ってＨＤＤ３のデータアクセス制御を行なう。
【００３３】
ＣＭ１０１は、図１に示すように、フロントエンド５１，バックエンド５２，ＣＰＵ１０，メモリ２０，メモリコントローラ２２，バックアップ用記憶装置３０，周辺デバイス６０及び監視ＦＰＧＡ７０を備える。
【００３４】
これらのフロントエンド５１，バックエンド５２，ＣＰＵ１０，メモリ２０，メモリコントローラ２２，バックアップ用記憶装置３０，周辺デバイス６０及び監視ＦＰＧＡ７０は、バス５３を介して通信可能に接続されている。
【００３５】
フロントエンド５１は、ホスト装置２等と通信可能に接続するインタフェースコントローラ（通信アダプタ）であり、例えば、ＣＡ（Channel Adapter）である。フロントエンド５１は、ホスト装置２等から送信されたデータを受信し、又、ＣＭ１０１から出力するデータをホスト装置２等に送信する。すなわち、フロントエンド５１は、ホスト装置２等の外部装置との間でのデータの入出力（Ｉ／Ｏ）を制御する。
【００３６】
バックエンド５２は、ＨＤＤ３と通信可能に接続するインタフェースコントローラ（通信アダプタ）であり、例えば、ＤＡ（Device Adapter）である。バックエンド５２は、ＨＤＤ３に書き込むデータをＨＤＤ３に送信し、又、ＨＤＤ３から読み出されたデータを受信する。すなわち、バックエンド５２は、ＨＤＤ３との間でのデータの入出力（Ｉ／Ｏ）を制御する。
【００３７】
メモリ２０は、Read Only Memory（ＲＯＭ）及びRandom Access Memory（ＲＡＭ）を含む記憶装置である。メモリ２０のＲＯＭには、本ストレージ装置１００における各種制御に係るソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。すなわち、ＲＯＭには、本ストレージ装置１００における停電発生時に実行される停電処理制御に係るプログラム等も書き込まれている。
【００３８】
メモリ２０上のプログラムは、ＣＰＵ１０に適宜読み込まれて実行される。又、メモリ２０のＲＡＭは、一次記憶メモリあるいはワーキングメモリとして利用される。
メモリ２０のＲＡＭは、例えば、ＲＡＩＤキャッシュ（キャッシュメモリ）として機能する。
【００３９】
ＲＡＩＤキャッシュは、ホスト装置２から受信したデータや、ＨＤＤ３から読み出したデータを格納する。ホスト装置２から受信し、ＨＤＤ３に書き込まれるデータ（ライトデータ，ライトキャッシュデータ）は、このＲＡＩＤキャッシュにおける所定の領域（ユーザ領域）に格納された後、ＨＤＤ３に転送される。
【００４０】
本ストレージ装置１００においては、例えば、このＲＡＩＤキャッシュにおけるライトデータを格納するための所定の領域をバックアップ対象領域とし、このバックアップ対象領域に格納されているデータの複写を、後述するバックアップ用記憶装置３０に格納する（メモリバックアップ）。
【００４１】
また、ＨＤＤ３から読み出されたデータ（リードデータ）は、ＲＡＩＤキャッシュにおけるリードデータを格納するための領域に格納された後、ホスト装置２に送信される。
【００４２】
バックアップ用記憶装置３０は、電力を供給しなくても記憶を保持する不揮発性の記憶装置であり、例えば、ＨＤＤやＳＳＤが用いられる。ただし、バックアップ用記憶装置３０は、これに限定されるものではなく、例えば、磁気抵抗ＲＡＭやＰＲＡＭ（Phase change RAM），強誘電体メモリを用いてもよく、種々変形して実施することができる。
【００４３】
そして、このバックアップ用記憶装置３０には、ストレージ装置１００の停電時に、メモリ２０のＲＡＩＤキャッシュ２１等のバックアップ対象領域のデータが格納される。すなわち、バックアップ用記憶部３０は、バックアップ対象領域のデータが格納されるバックアップ先の記憶装置として機能する。
【００４４】
周辺デバイス６０は、ＣＰＵ１０とバス５３を介して通信可能に接続されたハードウェアデバイスであり、例えば、ネットワークインタフェースや入出力コントローラ，インタフェースデバイスである。
【００４５】
監視ＦＰＧＡ７０は、本ストレージ装置１００において発生する異常の監視を行なう機能を備えるＦＰＧＡである。例えば、監視ＦＰＧＡ７０は、図２に示すように、停電検知部７１及びデバイス監視部７２としての機能を備える。
【００４６】
停電検知部７１は、本ストレージ装置１００における停電検知を行なう。なお、停電検知は、既知の種々の手法を用いて実現することができる。例えば、図示しない電源装置から供給される電力の電圧値を所定の基準値と比較することで停電を検知してもよく、又、電源装置等の他の装置から停電が生じた旨の通知を受け取ることにより停電を検知してもよい。
また、停電検知部７１は、停電発生を検知すると、周辺デバイス６０への電力供給を停止させる制御を行なう。
【００４７】
さらに停電検知部７１は、停電を検知すると、ＢＰＳＵ４０に対して電力供給指示を行なう。これにより、図示しない電力供給装置からの電力が遮断された場合においても、ＣＭ１０１の各部にＢＰＳＵ４０からの電力が供給される。
【００４８】
前述の如く、本ストレージ装置１００においては、停電時に、ＣＰＵ１０，メモリ２０，メモリコントローラ２２，バックアップ用記憶装置３０，監視ＦＰＧＡ７０には、ＢＰＳＵ４０のバッテリ４１から電力供給が行なわれる。
【００４９】
また、停電検知部７１は、停電の発生を検知すると、ＣＰＵ１０に対してＮＭＩ（Non-Maskable Interrupt）によって停電発生を通知する（停電発生検知通知）。
【００５０】
さらに、停電検知部７１は、後述するＣＰＵ１０（停電確認部１４）から停電が発生しているかを確認する問い合わせを受信すると、停電が発生中である場合には、停電状態である旨を応答する。この応答は、例えば、レジスタ等の所定の領域にフラグ“１”を設定することにより行ない、ＣＰＵ１０がこのフラグの値を確認してもよく、また、停電状態である旨を示す信号を送信してもよく、種々変形して実施することができる。
【００５１】
また、監視ＦＰＧＡ７０は、デバイス監視部７２としての機能を備える。デバイス監視部７２は、周辺デバイス６０に関する異常発生を監視する。例えば、電力供給が停止された状態の周辺デバイス６０に対してアクセスが発生した場合や、存在しない周辺デバイス６０へのアクセスが発生した場合に、監視ＦＰＧＡ７０は、デバイス異常が発生したと判断する。なお、このデバイス異常の発生の判断は、既知の種々の手法を用いて実現することができ、その詳細な説明は省略する。
デバイス監視部７２は、デバイス異常が発生したと判断すると、ＣＰＵ１０に対してＮＭＩによってデバイス異常の発生を通知する（デバイス異常発生通知）。
【００５２】
ＣＰＵ１０は、種々の制御や演算を行なう処理装置であり、メモリ２０に格納されたＯＳやプログラム（アプリケーション）を実行することにより、種々の機能を実現する。
【００５３】
例えば、ＣＰＵ１０は、ＲＡＩＤシステムにおけるシステム制御部としての機能を備え、ストレージ装置１００における、ＲＡＩＤの実現や、アラーム監視機能，経路制御機能等の種々の機能を実現する。
【００５４】
また、ＣＰＵ１０は、図２に示すように、第１停電処理部２０１，第２停電処理部２０２及び第３停電処理部２０３としての機能を備える。本ストレージ装置１００に停電が発生した場合に、これらの第１停電処理部２０１，第２停電処理部２０２及び第３停電処理部２０３の各機能により、停電処理制御が実現される。
第３電源処理部２０３は、バックアップ処理部１１としての機能を備える。
【００５５】
バックアップ処理部１１は、メモリ２０のＲＡＭの所定の領域（バックアップ対象領域）のデータ（バックアップデータ）をバックアップ用記憶装置３０の所定の領域にコピーする。以下、メモリ２０のバックアップデータをバックアップ用記憶装置３０にコピーすることをメモリバックアップ処理という場合がある。このメモリバックアップ処理は、本ストレージ装置１００に停電が発生した場合に実行される停電処理である。以下、この停電処理であるメモリバックアップ処理を停電処理タスクという場合がある。
バックアップ処理部１１は、監視ＦＰＧＡ７０（停電検知部７１）から停電発生検知通知を受信すると、メモリバックアップ処理を実行する。
【００５６】
第１停電処理部２０１は、遮断処理部１２，通知受信部１７，デバイス異常処理部１３，停電確認部１４，抑止制御部１５及びＡＰＩ（Application Programming Interface）無効化処理部１６としての機能を備える。
遮断処理部１２は、ＣＰＵ１０と周辺デバイス６０との通信を遮断することで、ＣＰＵ１０から周辺デバイス６０へアクセス不可の状態にする制御を行なう。
【００５７】
例えば、周辺デバイス６０がＰＣＩｅの規格によって構成されるＰＣＩｅデバイスである場合には、遮断処理部１２は、ＰＣＩｅのリンク・ディセーブル機能を用いてＣＰＵ１０と周辺デバイス６０とを接続するパスをリンク・ディセーブル状態にする。
【００５８】
具体的には、遮断処理部１２は、例えば、Linux（登録商標）のＰＣＩデバイスドライバインタフェースにおいては、「void pci_disable_device()関数」を用いることで、ＰＣＩデバイスとしての動作を停止させることができる。
これにより、ＣＰＵ１０と周辺デバイス６０との通信が遮断され、周辺デバイス（ＰＣＩｅデバイス）６０が無効化される。
この遮断処理部１２は、監視ＦＰＧＡ７０から停電発生検知通知を受信すると、ＣＰＵ１０と周辺デバイス６０との通信を遮断する。
【００５９】
通知受信部１７は、監視ＦＰＧＡ７０から通知される各種割り込み通知を受信する。例えば、通知受信部１７は、監視ＦＰＧＡ７０からＮＭＩとして入力される停電発生検知通知及びデバイス異常発生通知をそれぞれ受信する。
これにより、通知受信部１７は、周辺デバイス６０における異常発生を示すデバイス異常発生通知を受信するデバイス異常発生通知受信部として機能する。
また、通知受信部１７は、監視ＦＰＧＡ７０等から入力されるＳＭＩ（System Management Interrupt）も受信する。
【００６０】
デバイス異常処理部１３は、監視ＦＰＧＡ７０（デバイス監視部７２）からデバイス異常発生通知（ＮＭＩ）が入力されると、検知された周辺デバイス６０の異常に関する処理を行なう。例えば、デバイス異常処理部１３は、検知された異常に関して、異常発生箇所や範囲を特定するための処理を実行する。この周辺デバイス６０に関する異常発生箇所や範囲を特定するための処理は、周辺デバイス６０において異常が発生した場合に実行されるデバイス異常処理である。以下、周辺デバイス６０の異常に関する処理をデバイス異常処理という場合がある。
【００６１】
なお、このデバイス異常処理としては、異常発生箇所や範囲を特定するための処理に限定されるものではなく、種々変形して実施することができる。例えば、デバイス異常処理として、周辺デバイス６０における異常の発生をオペレータ等に通知してもよい。
【００６２】
停電確認部１４は、監視ＦＰＧＡ７０（デバイス監視部７２）からデバイス異常発生通知（ＮＭＩ）が入力されると、停電が発生しているか否かの確認を行なう。
具体的には、停電確認部１４は、監視ＦＰＧＡ７０に対して、停電が発生しているかを確認する問い合わせを行なう。
【００６３】
これに応じて、監視ＦＰＧＡ７０は、停電状態であるか否かを示す情報（停電状態情報）を応答する。停電中である場合には、監視ＦＰＧＡ７０（停電検知部７１）から停電状態情報として、停電状態である旨を表す信号が応答されたり、レジスタ等の所定の記憶領域に停電状態である旨を表すフラグが設定される。
【００６４】
このように、停電確認部１４は、前記デバイス異常発生通知受信部が前記デバイス異常発生通知を受信すると、前記電源供給装置からの電力供給が停止しているかを確認する。
【００６５】
抑止制御部１５は、監視ＦＰＧＡ７０（デバイス監視部７２）によってデバイス異常が検知され、デバイス異常発生通知が出力された場合において、停電確認部１４によって停電状態であることが確認された場合に、デバイス異常処理部１３によるデバイス異常処理の実行を抑止する制御を行なう。
【００６６】
すなわち、抑止制御部１５は、停電確認部１４が図示しない電源装置からの電力供給が停止していることを確認すると、周辺デバイス６０において異常が発生した場合に実行されるデバイス異常処理の実行を抑止する第１抑止部として機能する。
【００６７】
また、以下においては、監視ＦＰＧＡ７０からＮＭＩによるデバイス異常発生通知が入力された場合に、停電確認部１４が監視ＦＰＧＡ７０に対して停電が発生しているかを確認する問い合わせを行ない、抑止制御部１５がデバイス異常処理部１３によるデバイス異常処理の実行を抑止することを、カーネル２００におけるＮＭＩレベルでのカーネルデバイス異常処理という場合がある。
ＡＰＩ無効化処理部１６は、カーネル２００が提供する周辺デバイスアクセスＡＰＩ２１０（ＡＰＩ２１０：図３参照）を無効化させる。
図３は実施形態の一例としてのストレージ装置１００におけるＡＰＩ無効化処理部１６の処理を説明するための図、図４はその具体例を示す図である。
【００６８】
周辺デバイスアクセスＡＰＩ２１０は、デバイスドライバ１２０とのインタフェースとして機能するプログラムであり、例えばＯＳのカーネル２００の一機能として実装される。
【００６９】
デバイスドライバ１２０は、周辺デバイス６０を制御し、アプリケーションプログラム（図示省略）に対してインタフェースを提供するためのソフトウェアであり、周辺デバイス６０毎に備えられる。
カーネル２００は、周辺デバイスアクセスＡＰＩ２１０を介して、各デバイスドライバ１２０と各種通信を行なう。
【００７０】
ＡＰＩ無効化処理部１６は、例えばＣＰＵ１０によって実行される所定のアプリケーションのプロセスから、周辺デバイス６０（デバイスドライバ１２０）に対するアクセス要求が発行された場合に、周辺デバイスアクセスＡＰＩ２１０からデバイスドライバ１２０（周辺デバイス６０）に対するアクセスを無効化する。すなわち、ＡＰＩ無効化処理部１６は、周辺デバイス６０に対するアクセス要求を無効化する。
【００７１】
図４に示す例においては、周辺デバイスアクセスＡＰＩ２１０ｂ，２１０ｃ，デバイスアクセス無効化ＡＰＩ２１０ａ（devDisable()）及び内部処理モジュール２０４が示されている。
【００７２】
周辺デバイスアクセスＡＰＩ２１０ｂは、周辺デバイス６０に対してリードアクセスを実現するためのＡＰＩ“dev Read()”であり、周辺デバイスアクセスＡＰＩ２１０ｃは、周辺デバイス６０に対してライトアクセスを実現するためのＡＰＩ“dev Write()”である。これらの周辺デバイスアクセスＡＰＩ２１０ｂ，２１０ｃにおいては、アドレス（addr）が入力され、データ（data）が出力される。
【００７３】
内部処理モジュール２０４は、デバイスドライバ１２０を介して周辺デバイス６０に対するアクセス処理を行なう機能モジュール“devRWCore()”であり、アドレス（addr）やデータ（data），リードもしくはライトの方向（direction）が入力され、データ（data）が出力される。
【００７４】
周辺デバイスアクセスＡＰＩ２１０ｂ，２１０ｃは、この内部処理モジュール２０４を介して周辺デバイス６０に対するアクセスを行なう。
また、内部処理モジュール２０４は、アクセス可否判断部２０５としての機能を備える。アクセス可否判断部２０５は、周辺デバイス６０に対するアクセスの可否を判断するものであり、アクセス可否情報２０５１を備える。
【００７５】
アクセス可否情報２０５１は、各周辺デバイス６０が、アクセスが可能な状態（Enabled）であるかアクセス不可な状態（Disabled）であるかを管理する情報である。図４に示す例においては、アクセス可否情報２０５１は、各周辺デバイス６０を特定するための識別情報（＃１〜＃ｎ）に対して、EnabledもしくはDisabledが関連付けられている。
【００７６】
このアクセス可否情報２０５１において、Enabledが設定されている周辺デバイス６０にはアクセス可能であり、Disabledが設定されている周辺デバイス６０にはアクセスすることができないことを示す。
【００７７】
アクセス可否情報２０５１へのDisabledの設定は、デバイスアクセス無効化ＡＰＩ２１０ａが行なう。
【００７８】
デバイスアクセス無効化ＡＰＩ２１０ａは、周辺デバイス６０に対するアクセスを無効化するためのＡＰＩ“dev Disable()”であり、アドレス（addr）が入力される。デバイスアクセス無効化ＡＰＩ２１０ａは、アクセスを無効化する周辺デバイス６０について、アクセス可否情報２０５１にDisabledを設定する。なお、このデバイスアクセス無効化ＡＰＩ２１０ａがアクセス可否情報２０５１にDisabledを設定することが、アクセス無効化指示に相当する。
【００７９】
内部処理モジュール２０４は、周辺デバイスアクセスＡＰＩ２１０ｂ，２１０ｃから周辺デバイス６０へのアクセス要求（リードアクセス要求／ライトアクセス要求）が行なわれると、アクセス対象の周辺デバイス６０について、アクセス可否情報２０５１を参照する。そして、内部処理モジュール２０４は、アクセス可否情報２０５１にEnabledが設定されている周辺デバイス６０に対してのみ、リードアクセスやライトアクセスを実行する。
【００８０】
すなわち、内部処理モジュール２０４は、アクセス可否情報２０５１にDisabledが設定されている周辺デバイス６０に対するリードアクセスやライトアクセスの実行を抑止する。
【００８１】
このように、図４に示す例においては、デバイスアクセス無効化ＡＰＩ２１０ａ及び内部処理モジュール２０４がＡＰＩ無効化処理部１６としての機能を実現する。
例えば、図４に示す例においては、アクセス可否情報２０５１において、識別情報が＃２の周辺デバイス６０にDisabledが設定されており、これにより、識別情報が＃２の周辺デバイス６０へのアクセスが無効化されている。
【００８２】
そして、例えばＣＰＵ１０によって実行される所定のアプリケーションのプロセスから、周辺デバイス６０に対してデータのリード要求が発行されると、周辺デバイスアクセスＡＰＩ２１０ｂから、内部処理モジュール２０４に対してリード要求が行なわれる。
【００８３】
内部処理モジュール２０４（ＡＰＩ無効化処理部１６）は、アクセス可否情報２０５１において対象の周辺デバイス６０にDisabledが設定されている場合に、このリード要求を破棄する。
【００８４】
これにより、デバイスドライバ１２０が電源断状態の周辺デバイス６０に対するリード要求が実行されることがなく、電源断状態の周辺デバイス６０に対するリード要求を原因とするシステムエラーの発生を防止することができる。
【００８５】
また、内部処理モジュール２０４（ＡＰＩ無効化処理部１６）は、上述した周辺デバイス６０（デバイスドライバ１２０）に対するデータのリード要求を破棄するとともに、このリード要求の発行元のプロセスに対してデバイスエラーの発生を意味する所定の信号（ダミー信号）を応答する。なお、以下、ＡＰＩ無効化処理部１６（内部処理モジュール２０４）がリード要求の発行元に対してダミー信号を応答することをダミー応答という場合がある。
【００８６】
このように、ＡＰＩ無効化処理部１６がダミー応答を行なうことにより、電源断状態の周辺デバイス６０に対してリード要求の発行元のプロセスにおいて、周辺デバイス６０からの未応答を原因とするシステムエラーの発生を防止することができる。
【００８７】
なお、ダミー信号としては、例えば“fff・・・f”のように全てが“f”である所定のビット数で構成されるビット列を用いる等、ＯＳやシステムの仕様等に応じて適宜変更して実施することができる。
【００８８】
また、ＣＰＵ１０によって実行される所定のアプリケーションのプロセスから、周辺デバイス６０に対してデータのライト要求が発行されると、周辺デバイスアクセスＡＰＩ２１０ｃから、内部処理モジュール２０４に対してライト要求が行なわれる。
内部処理モジュール２０４（ＡＰＩ無効化処理部１６）は、アクセス可否情報２０５１において対象の周辺デバイス６０にDisabledが設定されている場合に、このライト要求を実行することなく破棄する。
【００８９】
これにより、デバイスドライバ１２０が電源断状態の周辺デバイス６０に対するライト要求を実行することがなく、電源断状態の周辺デバイス６０に対するライト要求を原因とするシステムエラーの発生を防止することができる。
第２停電処理部２０２は、機能制御部１８としての機能を備える。
【００９０】
機能制御部１８は、本ストレージ装置１００においてアプリケーションレベルで実行される各種機能を制御する。例えば、機能制御部１８は、ＯＳ上で実行される各種のプログラム（スレッド）を起動させたり、また、これらのスレッドの実行を抑止する制御を行なう。
例えば、機能制御部１８は、所定の関数（停電処理関数）をコールすることで、第３停電処理部２０３のバックアップ処理部１１を実行させる。
【００９１】
また、機能制御部１８は、バックアップ処理部１１によるメモリバックアップ処理の実行中には、アプリケーションレベルにおいて、バックアップ処理部１１以外の処理（スレッド）の実行を抑止する制御を行なう。
【００９２】
これにより、メモリバックアップ処理中に、周辺デバイス６０への無用なアクセスの発生を阻止し、電源断状態の周辺デバイス６０に対するアクセスを原因とするシステムエラーの発生を防止することができる。
【００９３】
なお、機能制御部１８は、例えば、第１停電処理部２０１から発行されるトラップにより起動される。この第１停電処理部２０１から第２停電処理部２０２に発行されるトラップは、プロセッサ間割り込み（ＩＰＩ：Inter-processor interrupt）であり、通常レベルのカーネル２００へ移行するために発行される。なお、このＩＰＩをカーネル停電処理呼び出しという場合がある。
【００９４】
そして、上述した、第１停電処理部２０１及び第２停電処理部２０２としての機能は、例えば、ＣＰＵ１０がＯＳのカーネル２００を実行することにより実現される。特に、第１停電処理部２０１はカーネル２００のＮＭＩレベルで実行され、第２停電処理部２０２はカーネル２００の通常レベルで実行される。
また、第３停電処理部２０３としての機能は、例えば、ＣＰＵ１０がファームウェアを実行することにより実現される。
【００９５】
なお、これらの第１停電処理部２０１，第２停電処理部２０２及び第３停電処理部２０３としての機能を実現するためのプログラム（ファームウェアやＯＳ（カーネル２００））は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００９６】
第１停電処理部２０１，第２停電処理部２０２及び第３停電処理部２０３としての機能を実現する際には、内部記憶装置（本実施形態ではメモリ２０）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ１０）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
【００９７】
（Ｂ）動作
上述の如く構成された実施形態の一例としてのストレージ装置１００における停電発生時の処理を、図５及び図６に示すシーケンス図に従って説明する。なお、図６は図５に示す処理に後続する処理を示す。
先ず、事前準備として、停電処理用スレッドを作成し待ち受け状態にしておく（図５の符号Ａ０参照）。
【００９８】
本ストレージ装置１００において電源装置からの電力供給が停止し停電が発生すると、監視ＦＰＧＡ７０の停電検知部７１が停電発生を検知する（図５の符号Ａ１参照）。停電が発生すると周辺デバイス６０に対する電力供給は即時遮断される（図５の符号Ａ２参照）。
【００９９】
監視ＦＰＧＡ７０の停電検知部７１は、ＣＰＵ１０に対してＮＭＩにより停電発生検知通知を行なう（図５の符号Ａ３参照）。なお、この時点では、周辺デバイス６０への電力供給は停止しているので、ＣＰＵ１０等から周辺デバイス６０へのアクセスは不可である。
【０１００】
ＣＰＵ１０にＮＭＩによる停電発生検知通知が入力されると、カーネル２００におけるＮＭＩレベルでの停電処理が開始される（図５の符号Ａ４参照）。先ず、遮断処理部１２が、ＣＰＵ１０と周辺デバイス６０との通信を遮断する（図５の符号Ａ５参照）。具体的には、ＰＣＩｅのリンク・ディセーブル機能を用いて、ＣＰＵ１０と周辺デバイス６０とを接続するパスをリンク・ディセーブル状態にする。
また、ＡＰＩ無効化処理部１６が、周辺デバイスアクセスＡＰＩ２１０を無効化させる（図５の符号Ａ６参照）。
【０１０１】
さらに、第１停電処理部２０１が第２停電処理部２０２に対してトラップ（ＩＰＩ）を発行することで、第２停電処理部２０２（機能制御部１８）にカーネル停電処理の開始を指示する（カーネル停電処理呼び出し：図５の符号Ａ７参照）。カーネル２００におけるＮＭＩレベルでの停電処理は終了し（図５の符号Ａ８参照）、カーネル２００における通常レベルに戻る（移行する）。
【０１０２】
周辺デバイス６０のデバイスドライバ１２０で仕掛かり中の処理がある状態で停電が発生した場合には、このタイミングでデバイスドライバ１２０が動作を再開する。周辺デバイス６０への電力供給が停止された状態で、この周辺デバイス６０へのアクセスが生じるとデバイス異常が発生する。
【０１０３】
このように周辺デバイス６０においてデバイス異常が発生すると、監視ＦＰＧＡ７０のデバイス監視部７２がこの周辺デバイス６０の異常を検知し（図５の符号Ａ９参照）、ＣＰＵ１０に対してＮＭＩによりデバイス異常発生通知を行なう（図５の符号Ａ１０参照）。
【０１０４】
ＣＰＵ１０にＮＭＩによるデバイス異常発生通知が入力されると、カーネル２００におけるＮＭＩレベルでのカーネルデバイス異常処理が開始される（図５の符号Ａ１１参照）。
【０１０５】
先ず、停電確認部１４が、監視ＦＰＧＡ７０に対して、停電が発生しているかを確認し（図５の符号Ａ１２参照）、監視ＦＰＧＡ７０が、この問い合わせに応じて、停電確認部１４に対して停電状態情報を応答する（図５の符号Ａ１３参照）。
【０１０６】
確認の結果、停電中である場合には、第１停電処理部２０１において、抑止制御部１５が、デバイス異常処理部１３によるデバイス異常処理の実行を抑止する制御を行なう。すなわち、停電発生の場合には、デバイス異常処理部１３によるデバイス異常処理のハンドリングは行なわれずに終了する（図５の符号Ａ１４参照）。カーネル２００におけるＮＭＩレベルでのカーネル停電処理は終了し（図５の符号Ａ１５参照）、カーネル２００における通常レベルに戻る（移行する）。このように、周辺デバイス６０においてデバイス異常が検知された場合であっても、抑止制御部１５が、デバイス異常処理部１３によるデバイス異常処理の実行を抑止する制御を行なうことで、システムエラーの発生を防止することができるのである。
【０１０７】
第１停電処理部２０１からカーネル停電処理呼び出しの割り込み（ＩＰＩ）が入力された第２停電処理部２０２においては、カーネル２００における通常レベルでのカーネル停電処理が開始される（図５の符号Ａ１６参照）。なお、割り込みはマスクされた状態で動作する。
【０１０８】
機能制御部１８は、停電処理関数をコールする（図６の符号Ａ１７参照）。これにより、ファームウェアの停電処理の実行が開始される（図６の符号Ａ１８参照）。
【０１０９】
また、アプリケーションレベルにおいては、周辺デバイス６０のデバイスドライバ１２０に対して停止指示が発行される（図６の符号Ａ１９）。この停止指示においては、論理的な指示と物理的な指示の両方が実施される。
【０１１０】
この時点においては、前述の如くＡＰＩ無効化処理部１６が、周辺デバイスアクセスＡＰＩ２１０を無効化させているので（図５の符号Ａ６参照）、周辺デバイス６０へのアクセスが発生した場合であっても、システムエラーが発生することはない。
【０１１１】
その後、第３停電処理部２０３は、実行中のスレッドを停止させる処理を行ない（図６の符号Ａ２０参照）、これを受けて、第２停電処理部２０２の機能制御部１８が停電処理スレッド以外のスレッドをサスペンド状態にする（図６の符号Ａ２１参照）。これにより、パトロール等のシステム制御やBasicのスレッドが停止され、アクセス不可な状態となっている周辺デバイス６０へのアクセスの発生を阻止することができ、停電中のストレージ装置１００を安定して運用することができる。
【０１１２】
次に、アプリケーションレベルにおいて、停電処理タスクの開始が指示される（図６の符号Ａ２２参照）。なお、この時点においても、周辺デバイス６０へのアクセスが生じ、デバイス異常が発生するおそれがあるが、前述の如く、抑止制御部１５が、デバイス異常処理部１３によるデバイス異常処理の実行を抑止する制御を行なうことで、システムエラーの発生を防止することができる。
【０１１３】
停電処理タスクの開始指示に応じて、バックアップ処理部１１による停電処理タスク、すなわち、メモリバックアップ処理が開始される（図６の符号Ａ２３参照）。バックアップ処理部１１が、メモリ２０におけるバックアップ範囲の取得要求を行なうと（図６の符号Ａ２４参照）、これに対して、カーネル２００（通常レベル）が、メモリ２０におけるバックアップ対象領域をバックアップ範囲として応答する（図６の符号Ａ２５参照）。バックアップ処理部１１は、応答されたバックアップ範囲のデータを、バックアップ用記憶装置３０にバックアップさせるよう、バックアップ用記憶装置３０のデバイスドライバ１２０に対して指示を行なう（図６の符号Ａ２６参照）。
【０１１４】
バックアップ指示を受けたデバイスドライバ１２０は、バックアップ用記憶装置３０へのバックアップを開始する（図６の符号Ａ２７参照）。すなわち、メモリコントローラ２２を介してメモリ２０におけるバックアップ対象領域のデータを読み出し、バックアップ用記憶装置３０に格納する。
【０１１５】
メモリ２０におけるバックアップ対象領域の全てのデータのバックアップが完了すると（図６の符号Ａ２８参照）、バックアップ用記憶装置３０のデバイスドライバ１２０は、バックアップ処理部１１に完了通知を行なう。
【０１１６】
バックアップの完了通知を受信したバックアップ処理部１１は、ホルト（halt）関数のコールを行ない（図６の符号Ａ２９）、カーネル２００は通常レベルにおいてＣＰＵを停止させ、CPU haltの状態に移行する（図６の符号Ａ３０）。これにより、ＣＰＵ１０における処理が停止する。
（Ｃ）効果
【０１１７】
このように、実施形態の一例としてのストレージ装置１００によれば、遮断処理部１２が、監視ＦＰＧＡ７０から停電発生検知通知を受信すると、ＣＰＵ１０と周辺デバイス６０との通信を遮断する。
【０１１８】
これにより、ＣＰＵ１０と周辺デバイス６０との通信が遮断され、周辺デバイス（ＰＣＩｅデバイス）６０が無効化される。これにより、停電発生時において、バックアップ処理部１１がメモリバックアップ処理を実行中に、電力供給が遮断された状態の周辺デバイス６０へのアクセスが阻止される。従って、電源断状態の周辺デバイス６０に対するデータアクセスを原因とするシステムエラーの発生を防止することができる。
【０１１９】
抑止制御部１５が、監視ＦＰＧＡ７０によってデバイス異常が検知され、デバイス異常発生通知が出力された場合において、停電確認部１４によって停電状態であることが確認された場合に、デバイス異常処理部１３によるデバイス異常処理の実行を抑止する制御を行なう。
【０１２０】
周辺デバイス６０においてデバイス異常が検知された場合であっても、抑止制御部１５が、デバイス異常処理部１３によるデバイス異常処理の実行を抑止する制御を行なうことで、システムエラーの発生を防止することができる。
ＡＰＩ無効化処理部１６が、カーネル２００が提供する周辺デバイスアクセスＡＰＩ２１０を無効化させる。
【０１２１】
これにより、デバイスドライバ１２０が電源断状態の周辺デバイス６０に対するリード要求が実行されることがなく、電源断状態の周辺デバイス６０に対するリード要求を原因とするシステムエラーの発生を防止することができる。
【０１２２】
停電時において、メモリ２０のデータをバックアップ用記憶装置３０にバックアップさせるためのＦＰＧＡ（停電ＦＰＧＡ）が不要となり、システムの製造コストを低減することができる。
【０１２３】
（Ｄ）変形例
（Ｄ−１）第１変形例
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
【０１２４】
例えば、上述した実施形態においては、監視ＦＰＧＡ７０（停電検知部７１）が、停電の発生を検知すると、ＣＰＵ１０に対してＮＭＩによって停電発生を通知（停電発生検知通知）し、ＣＰＵ１０が第１停電処理部２０１，第２停電処理部２０２及び第３停電処理部２０３により、停電処理制御を実行しているが、これに限定されるものではない。
【０１２５】
本第１変形例においては、ＣＰＵ１０はＢＩＯＳ（Basic Input Output System）のプロセスとして停電処理制御を実行する。すなわち、ＢＩＯＳが、上述した実施形態のバックアップ処理部１１としての機能を実行するためのモジュールを備える。また、ＢＩＯＳには、バックアップ用記憶装置３０のデバイスドライバ１２０としての機能を実行させるためのモジュールも備える。
【０１２６】
さらに、ＢＩＯＳに備えられた特定のプロセスを選択的に実行させるために、監視ＦＰＧＡ７０（停電検知部７１）は、停電の発生を検知すると、ＣＰＵ１０に対してＳＭＩによって停電発生を通知する機能を備える。
上述の如く構成された実施形態の変形例としてのストレージ装置１００における停電発生時の処理を、図７に示すシーケンス図に従って説明する。
【０１２７】
本ストレージ装置１００において電源装置からの電力供給が停止し停電が発生すると、監視ＦＰＧＡ７０の停電検知部７１が停電発生を検知する（符号Ｂ１参照）。停電が発生すると周辺デバイス６０に対する電力供給は即時遮断される（符号Ｂ２参照）。
【０１２８】
監視ＦＰＧＡ７０の停電検知部７１は、ＣＰＵ１０に対してＳＭＩにより停電発生検知通知を行なう（符号Ｂ３参照）。なお、この時点では、周辺デバイス６０への電力供給は停止しているので、ＣＰＵ１０等から周辺デバイス６０へのアクセスは不可である。
ＣＰＵ１０にＳＭＩによる停電発生検知通知が入力されると、ＢＩＯＳによる停電処理が開始される（符号Ｂ４参照）。
【０１２９】
先ず、ＢＩＯＳのバックアップ用記憶装置３０のデバイスドライバ１２０としての機能から、バックアップ処理部１１としての機能が起動され、メモリバックアップ処理が起動される（符号Ｂ５参照）。
【０１３０】
ＢＩＯＳにおいて、バックアップ処理部１１としての機能により、バックアップ用記憶装置３０へのバックアップが開始される（符号Ｂ６参照）。すなわち、ＢＩＯＳが、メモリコントローラ２２を介してメモリ２０におけるバックアップ対象領域のデータを読み出し、バックアップ用記憶装置３０に格納する。
【０１３１】
メモリ２０におけるバックアップ対象領域の全てのデータのバックアップが完了すると（符号Ｂ７参照）、ＢＩＯＳは、ホルトに移行する（符号Ｂ８参照）、これにより、ＣＰＵ１０における処理が停止する。
【０１３２】
本第１変形例において、停電時においては周辺デバイス６０のデバイスドライバ１２０は無効となっているため、周辺デバイス６０へのアクセスは発生しない。従って、停電発生時において、ＢＩＯＳによるメモリバックアップ処理を実行中に、電源断状態の周辺デバイス６０に対するデータアクセスを原因とするシステムエラーの発生を防止することができる。
【０１３３】
また、停電時において、メモリ２０のデータをバックアップ用記憶装置３０にバックアップさせるためのＦＰＧＡ（停電ＦＰＧＡ）が不要となり、システムの製造コストを低減することができる。
【０１３４】
（Ｄ−２）第２変形例
上述した第１変形例においては、監視ＦＰＧＡ７０（停電検知部７１）が、停電の発生を検知すると、ＣＰＵ１０に対してＳＭＩによって停電発生検知通知を行なっているが、これに限定されるものではない。
【０１３５】
本第２変形例においては、監視ＦＰＧＡ７０（停電検知部７１）が、停電の発生を検知すると、ＣＰＵ１０に対してＮＭＩによって停電発生を通知（停電発生検知通知）する。
【０１３６】
一方、ＣＰＵ１０においては、カーネル２００のＮＭＩレベルにおいて、前述した通知受信部１７としての機能を備え、監視ＦＰＧＡ７０からＮＭＩとして入力される停電発生検知通知を受信する。
【０１３７】
また、ＣＰＵ１０は、監視ＦＰＧＡ７０からＮＭＩとして入力される停電発生検知通知を受信すると、カーネル２００のＮＭＩレベルにおいて、カーネル停電処理として本ストレージ装置１００をスリープ状態に移行させる。すなわち、メモリ２０には電力供給を行なって、その記憶領域のデータを保持した状態で、メモリ２０以外への給電を停止させる。
【０１３８】
スリープ状態は、例えば、ＡＣＰＩ（Advanced Configuration and Power Interface）の規格におけるＳ３のスリーピングモード（S3 DC-OFF/ON）に移行することによって実現される。なお、ＡＣＰＩのＳ３のスリーピングモードへの移行は、既知の種々の手法を用いて実現することができ、その詳細な説明は省略する。また、本ストレージ装置１００をスリープ状態に移行させる手法は、これに限定されるものでなく、既知の種々の手法を用いて実現してもよい。
カーネル２００のＮＭＩレベルにおいてＳ３のスリーピングモードに移行した後、ＢＩＯＳが起動される。
【０１３９】
また、本第２変形例においては、ＢＩＯＳは、起動後に、監視ＦＰＧＡ７０に対して、停電が発生しているかを確認する問い合わせを行なう。そして、監視ＦＰＧＡ７０（停電検知部７１）から停電状態情報として、停電状態である旨を表す信号が応答されると、ＢＩＯＳは、上述した実施形態のバックアップ処理部１１としての機能を実行する。
上述の如く構成された実施形態の他の変形例としてのストレージ装置１００における停電発生時の処理を、図８に示すシーケンス図に従って説明する。
【０１４０】
本ストレージ装置１００において電源装置からの電力供給が停止し停電が発生すると、監視ＦＰＧＡ７０の停電検知部７１が停電発生を検知する（符号Ｃ１参照）。停電が発生すると周辺デバイス６０に対する電力供給は即時遮断される（符号Ｃ２参照）。
【０１４１】
監視ＦＰＧＡ７０の停電検知部７１は、ＣＰＵ１０に対してＮＭＩにより停電発生検知通知を行なう（符号Ｃ３参照）。なお、この時点では、周辺デバイス６０への電力供給は停止しているので、ＣＰＵ１０から周辺デバイス６０へのアクセスは不可である。
【０１４２】
ＣＰＵ１０にＮＭＩによる停電発生検知通知が入力されると、カーネル２００におけるＮＭＩレベルでの停電処理が開始される（符号Ｃ４参照）。具体的には、メモリ２０の記憶領域のデータを保持した状態で、Ｓ３  ＤＣ−ＯＦＦ／ＯＮが起動される（符号Ｃ５参照）。
カーネル２００のＭＩレベルにおいてＳ３  ＤＣ−ＯＦＦ／ＯＮが起動されると、ＢＩＯＳが起動される（符号Ｃ６参照）。
【０１４３】
ＢＩＯＳは、先ず、停電の発生を確認する（符号Ｃ７参照）。すなわち、ＢＩＯＳは、監視ＦＰＧＡ７０に対して、停電が発生しているかを確認する問い合わせを行ない、監視ＦＰＧＡ７０が、この問い合わせに応じて、停電状態情報を応答する（符号Ｃ８参照）。
【０１４４】
確認の結果、停電中である場合に、ＢＩＯＳによる停電処理が開始される（符号Ｃ９参照）。すなわち、ＢＩＯＳのバックアップ用記憶装置３０のデバイスドライバ１２０としての機能から、バックアップ処理部１１としての機能が起動され、メモリバックアップ処理が起動される。
【０１４５】
ＢＩＯＳにおいて、バックアップ処理部１１としての機能により、全メモリ２０のバックアップ用記憶装置３０へのバックアップを実施する（符号Ｃ１０参照）。すなわち、バックアップ処理が開始され（符号Ｃ１１参照）、ＢＩＯＳが、メモリコントローラ２２を介してメモリ２０におけるバックアップ対象領域のデータを読み出し、バックアップ用記憶装置３０に格納する。
【０１４６】
メモリ２０におけるバックアップ対象領域の全てのデータのバックアップが完了すると（符号Ｃ１２参照）、ＢＩＯＳは、ホルトに移行する（符号Ｃ１３参照）、これにより、ＣＰＵ１０における処理が停止する。
【０１４７】
本第２変形例においても、停電時においては周辺デバイス６０のデバイスドライバ１２０は無効となっているため、周辺デバイス６０へのアクセスは発生しない。従って、停電発生時において、ＢＩＯＳによるメモリバックアップ処理を実行中に、電源断状態の周辺デバイス６０に対するデータアクセスを原因とするシステムエラーの発生を防止することができる。
【０１４８】
また、停電時において、メモリ２０のデータをバックアップ用記憶装置３０にバックアップさせるためのＦＰＧＡ（停電ＦＰＧＡ）が不要となり、システムの製造コストを低減することができる。
【０１４９】
（Ｅ）その他
上述した実施形態においては、ＲＡＩＤキャッシュにおけるライトデータを格納するための所定の領域をバックアップ対象領域とし、このバックアップ対象領域に格納されているデータの複写をバックアップ用メモリ３０に格納する例について示しているが、これに限定されるものではない。
【０１５０】
例えば、メモリ２０にメモリログ域として形成された所定の領域をバックアップ対象領域としてもよい。メモリログ域には、ＣＭ１０１において行なわれた各種処理に関するログ（管理情報）が格納される。このログには、障害情報のログも含まれる。ログとしては、例えば、エラーログ，イベントログ，デグレードログ，デグレードファクターログ等の種々の種類のログがあり、例えば、ＣＭ１０１のＣＰＵ１０がエラー検出機能を実行することにより生成される。
【０１５１】
また、上述した実施形態においては、遮断処理部１２として機能するＣＰＵ１０が、ＰＣＩｅのディセーブル機能を用いて周辺デバイス（ＰＣＩｅデバイス）６０を無効化することでＣＰＵ１０と周辺デバイス６０との通信を遮断する例を示しているが、これに限定されるものではない。例えば、ＣＰＵ１０と周辺デバイス６０とを接続するバス上に通信を遮断可能なスイッチ等の回路部品を備え、遮断処理部１２がこのスイッチに切断指示を通知することよりＣＰＵ１０と周辺デバイス６０との通信を遮断してもよい。
【０１５２】
また、監視ＦＰＧＡ７０から出力される停電発生検知通知を切断指示としてスイッチに入力することで、ＣＰＵ１０と周辺デバイス６０との通信を遮断してもよい。このように監視ＦＰＧＡ７０に遮断処理部１２として機能させてもよい。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【０１５３】
（Ｆ）付記
（付記１）
処理装置と、周辺デバイスと、記憶装置と、メモリとを備える情報処理装置であって、
電源装置からの電力供給の停止を検知する停電検知部と、
前記電源装置からの電力供給が停止した場合に、前記処理装置と前記メモリと前記記憶装置とに予備電力を供給する予備電力供給部と、
前記処理装置と前記周辺デバイスとの通信を遮断する遮断部とを備え、
前記停電検知部が前記電源装置からの電力供給の停止を検知すると、前記遮断部が前記処理装置と前記周辺デバイスとの通信を遮断し、前記処理装置が、前記メモリのデータを読み出して前記記憶装置に格納するメモリバックアップ処理を実行することを特徴とする、情報処理装置。
【０１５４】
（付記２）
前記周辺デバイスにおける異常発生を示すデバイス異常発生通知を受信するデバイス異常発生通知受信部と、
前記デバイス異常発生通知受信部が前記デバイス異常発生通知を受信すると、前記電源装置からの電力供給が停止しているかを確認する停電確認部と、
前記電源装置からの電力供給が停止している場合に、前記周辺デバイスにおいて異常が発生した場合に前記処理装置によって実行されるデバイス異常処理の実
行を抑止する第１抑止部と
を備えることを特徴とする、付記１記載の情報処理装置。
【０１５５】
（付記３）
前記停電検知部が前記電源装置からの電力供給の停止を検知すると、周辺デバイスに対するアクセス要求を無効化する、無効化処理部を備えることを特徴とする、付記１又は２記載の情報処理装置。
【０１５６】
（付記４）
前記無効化処理部が、前記周辺デバイスに対する前記アクセス要求としてデータリード要求が発行された場合に、当該データリード要求を破棄するとともに、当該データリード要求の発行元プロセスに対してデバイスエラーの発生を意味するダミー信号を応答することで前記アクセス要求を無効化することを特徴とする、付記３記載の情報処理装置。
【０１５７】
（付記５）
前記無効化処理部が、前記周辺デバイスに対する前記アクセス要求としてデータライト要求が発行された場合に、当該データライト要求を破棄することで前記アクセス要求を無効化することを特徴とする、付記３又は４記載の情報処理装置。
【０１５８】
（付記６）
前記処理装置が前記メモリバックアップ処理を実行している間は、前記処理装置において、当該メモリバックアップ処理以外の処理の実行を抑止する第２抑止部を備えることを特徴とする、付記１〜５のいずれか１項に記載の情報処理装置。
【０１５９】
（付記７）
処理装置と、周辺デバイスと、記憶装置と、メモリとを備える情報処理装置であって、
電源装置からの電力供給の停止を検知する停電検知部と、
前記電源装置からの電力供給が停止した場合に、前記処理装置と前記メモリと前記記憶装置とに予備電力を供給する予備電力供給部と
を備え、
当該情報処理装置の起動処理を前記処理装置に実行させるための起動処理プログラムが、前記メモリのデータを読み出して前記記憶装置に格納するメモリバックアップ処理を前記処理装置に実行させるモジュールを有し、
前記停電検知部が、前記電源装置からの電力供給の停止を検知すると、前記処理装置に第１の割り込み通知を入力し、
前記停電検知部から前記第１の割り込み通知が入力された前記処理装置が、前記起動処理プログラムの前記モジュールを実行することで前記メモリバックアップ処理を実行することを特徴とする、情報処理装置。
【０１６０】
（付記８）
処理装置と、周辺デバイスと、記憶装置と、メモリとを備える情報処理装置であって、
電源装置からの電力供給の停止を検知する停電検知部と、
前記電源装置からの電力供給が停止した場合に、前記処理装置と前記メモリと前記記憶装置とに予備電力を供給する予備電力供給部と
を備え、
当該情報処理装置の起動処理を前記処理装置に実行させるための起動処理プログラムが、前記メモリのデータを読み出して前記記憶装置に格納するメモリバックアップ処理を前記処理装置に実行させるモジュールを有し、
前記停電検知部が、前記電源装置からの電力供給の停止を検知すると、前記処理装置に第２の割り込み通知を入力し、
前記停電検知部から前記第２の割り込み通知が入力された前記処理装置が、前記メモリへの給電を維持した状態で、当該情報処理装置への電力供給を停止させるスリープ状態に移行させた後に、前記起動処理プログラムを起動し、
前記起動処理プログラムが、前記電源装置からの電力供給が停止しているかを確認し、前記電源装置からの電力供給が停止している場合に、前記モジュールを実行することで前記メモリバックアップ処理を実行することを特徴とする、情報処理装置。
【０１６１】
（付記９）
処理装置と、周辺デバイスと、記憶装置と、メモリとを備える情報処理装置における処理方法であって、
電源装置からの電力供給の停止を検知する処理と、
前記処理装置と前記メモリと前記記憶装置とに予備電力を供給する処理と、
前記処理装置と前記周辺デバイスとの通信を遮断する処理と、
前記メモリのデータを読み出して前記記憶装置に格納するメモリバックアップ処理を実行する処理と
を備えることを特徴とする、処理方法。
【０１６２】
（付記１０）
前記周辺デバイスにおける異常発生を検知する処理と、
前記電源装置からの電力供給が停止しているかを確認する処理と、
前記電源装置からの電力供給が停止している場合に、前記周辺デバイスにおいて異常が発生した場合に前記処理装置によって実行されるデバイス異常処理の実行を抑止する処理と、
を備えることを特徴とする、付記９記載の処理方法。
【０１６３】
（付記１１）
前記電源装置からの電力供給の停止を検知すると、周辺デバイスに対するアクセス要求を無効化する処理を備えることを特徴とする、付記９又は１０記載の処理方法。
【０１６４】
（付記１２）
前記周辺デバイスに対する前記アクセス要求としてデータリード要求が発行された場合に、当該データリード要求を破棄するとともに、当該データリード要求の発行元プロセスに対してデバイスエラーの発生を意味するダミー信号を応答することで前記アクセス要求を無効化することを特徴とする、付記１１記載の処理方法。
【０１６５】
（付記１３）
前記周辺デバイスに対する前記アクセス要求としてデータライト要求が発行された場合に、当該データライト要求を破棄することで前記アクセス要求を無効化することを特徴とする、付記１１又は１２記載の処理方法。
【０１６６】
（付記１４）
前記処理装置が前記メモリバックアップ処理を実行している間は、前記処理装置において、当該メモリバックアップ処理以外の処理の実行を抑止する処理を備えることを特徴とする、付記９〜１３のいずれか１項に記載の処理方法。
【０１６７】
（付記１５）
処理装置と、周辺デバイスと、記憶装置と、メモリとを備える情報処理装置における処理方法であって、
電源装置からの電力供給の停止を検知する処理と、
前記電源装置からの電力供給が停止した場合に、前記処理装置と前記メモリと前記記憶装置とに予備電力を供給する処理と、
前記電源装置からの電力供給の停止を検知すると、前記処理装置に第１の割り込み通知を入力する処理と、
前記第１の割り込み通知が入力された前記処理装置が、当該情報処理装置の起動処理を前記処理装置に実行させるための起動処理プログラムに備えられる、前記メモリのデータを読み出して前記記憶装置に格納するメモリバックアップ処理を前記処理装置に実行させるモジュールを実行することで前記メモリバックアップ処理を実行することを特徴とする、処理方法。
【０１６８】
（付記１６）
処理装置と、周辺デバイスと、記憶装置と、メモリとを備える情報処理装置における処理方法であって、
電源装置からの電力供給の停止を検知する処理と、
前記電源装置からの電力供給が停止した場合に、前記処理装置と前記メモリと前記記憶装置とに予備電力を供給する処理と、
前記電源装置からの電力供給の停止を検知すると、前記処理装置に第２の割り込み通知を入力する処理と、
前記第２の割り込み通知が入力された前記処理装置が、前記メモリへの給電を維持した状態で、当該情報処理装置への電力供給を停止させるスリープ状態に移行させた後に、当該情報処理装置の起動処理を前記処理装置に実行させるための起動処理プログラムを起動する処理と、
前記起動処理プログラムが、前記電源装置からの電力供給が停止しているかを確認し、前記電源装置からの電力供給が停止している場合に、前記起動処理プログラムに備えられ、前記メモリのデータを読み出して前記記憶装置に格納するメモリバックアップ処理を前記処理装置に実行させるモジュールを実行することで前記メモリバックアップ処理を実行する処理とを備えることを特徴とする、処理方法。
【０１６９】
（付記１７）
処理装置と、周辺デバイスと、記憶装置と、メモリと、電源装置からの電力供給の停止を検知する停電検知部と、前記電源装置からの電力供給が停止した場合に、前記処理装置と前記メモリと前記記憶装置とに予備電力を供給する予備電力供給部とを備える情報処理装置において、
前記処理装置と前記周辺デバイスとの通信を遮断し、
前記メモリのデータを読み出して前記記憶装置に格納するメモリバックアップ処理を実行する
処理を前記処理装置に実行させることを特徴とする、プログラム。
【０１７０】
（付記１８）
前記周辺デバイスにおける異常発生を示すデバイス異常発生通知を受信し、
前記デバイス異常発生通知を受信すると、前記電源装置からの電力供給が停止しているかを確認し、
前記電源装置からの電力供給が停止している場合に、前記周辺デバイスにおいて異常が発生した場合に実行されるデバイス異常処理の実行を抑止する
処理を、前記処理装置に実行させることを特徴とする、付記１７記載のプログラム。
【０１７１】
（付記１９）
処理装置と、周辺デバイスと、記憶装置と、メモリと、電源装置からの電力供給の停止を検知すると、前記処理装置に第１の割り込み通知を入力する停電検知部と、前記電源装置からの電力供給が停止した場合に、前記処理装置と前記メモリと前記記憶装置とに予備電力を供給する予備電力供給部とを備える情報処理装置において、
前記停電検知部から前記第１の割り込み通知が入力されると、前記メモリのデータを読み出して前記記憶装置に格納するメモリバックアップ処理を前記処理装置に実行させることを特徴とする、プログラム。
【０１７２】
（付記２０）
処理装置と、周辺デバイスと、記憶装置と、メモリと、電源装置からの電力供給の停止を検知すると、前記電源装置からの電力供給の停止を検知すると、前記処理装置に第２の割り込み通知を入力する停電検知部と、前記電源装置からの電力供給が停止した場合に、前記処理装置と前記メモリと前記記憶装置とに予備電力を供給する予備電力供給部とを備える情報処理装置において、
前記停電検知部から前記第２の割り込み通知が入力されると、前記メモリへの給電を維持した状態で、当該情報処理装置への電力供給を停止させるスリープ状態に移行させ、
前記電源装置からの電力供給が停止しているかを確認し、
前記電源装置からの電力供給が停止している場合に、前記メモリのデータを読み出して前記記憶装置に格納するメモリバックアップ処理を前記処理装置に実行させることを特徴とする、プログラム。
【符号の説明】
【０１７３】
１    ストレージシステム
２    ホスト装置
３    記憶装置
１０    ＣＰＵ（処理装置）
１１    バックアップ処理部
１２    遮断処理部
１３    デバイス異常処理部
１４    停電確認部
１５    抑止制御部
１６    ＡＰＩ無効化処理部
１７    通知受信部
１８    機能制御部
２０    メモリ
２２    メモリコントローラ
３０    バックアップ用記憶装置
４０    ＢＰＳＵ
４１    バッテリ
５１    フロントエンド
５２    バックエンド
６０    周辺デバイス
７０    監視ＦＰＧＡ
７１    停電検知部
７２    デバイス監視部
１００    ストレージ装置
１０１    ＣＭ
１２０    デバイスドライバ
２００    カーネル
２０１    第１停電処理部
２０２    第２停電処理部
２０３    第３停電処理部
２０４    内部処理モジュール
２０５    アクセス可否判断部
２０５１    アクセス可否情報
２１０，２１０ｂ，２１０ｃ    周辺デバイスアクセスＡＰＩ
２１０ａ    デバイスアクセス無効化ＡＰＩ
【図１】
0006455132.tif 000002
【図２】
0006455132.tif 000003
【図３】
0006455132.tif 000004
【図４】
0006455132.tif 000005
【図５】
0006455132.tif 000006
【図６】
0006455132.tif 000007
【図７】
0006455132.tif 000008
【図８】
0006455132.tif 000009
【図９】
0006455132.tif 000010