(57)【要約】【課題】再起動時の充電容量診断の診断精度を向上させる。【解決手段】ＢＢＵ１は、バッテリ１２と、電源が切断された電源切断時点の時刻を示す切断時刻を記憶する不揮発記憶部１６と、電源が再起動された際、不揮発記憶部１６に記憶された切断時刻と再起動時の時刻とから得られる電源切断期間、電源切断状態での前記バッテリ１２の温度およびバッテリ１２の劣化度に基づいて、再起動時のバッテリ１２の充電容量を診断するＭＣＵ１７と、を備える。【選択図】図２
2015052477.tif 000002
【特許請求の範囲】
【請求項１】
バッテリと、
電源が切断された電源切断時点の時刻を示す切断時刻を記憶する記憶部と、
電源が再起動された際、前記記憶部に記憶された切断時刻と再起動時の時刻とから得られる電源切断期間、電源切断状態での前記バッテリの温度および前記バッテリの劣化度に基づいて、再起動時の前記バッテリの充電容量を診断する診断部と、
を備えることを特徴とするバッテリ制御装置。
【請求項２】
前記診断部は、
前記電源切断期間および電源切断状態での前記バッテリの温度に基づいて、再起動時の前記バッテリの充電容量を算出する算出部と、
前記バッテリの抵抗値を測定し、測定した抵抗値に基づいて、前記算出部によって算出されたバッテリの充電容量を補正する補正部と
を備えることを特徴とする請求項１に記載のバッテリ制御装置。
【請求項３】
前記記憶部は、さらに、所定期間毎のバッテリの温度を温度の履歴として記憶し、
前記算出部は、前記記憶部に記憶された温度の履歴から、電源切断状態での前記バッテリの温度を推定し、前記電源切断期間および該推定した温度に基づいて、再起動時の前記バッテリの充電容量を算出する
ことを特徴とする請求項２に記載のバッテリ制御装置。
【請求項４】
前記算出部は、前記電源切断期間に応じて、電源切断状態での前記バッテリの温度に対応する、バッテリの自己放電特性から推定される前記バッテリの充電容量を算出する
ことを特徴とする請求項２または請求項３に記載のバッテリ制御装置。
【請求項５】
バッテリ制御装置が、
電源が切断された電源切断時点の時刻を示す切断時刻を記憶部に記憶し、
電源が再起動された際、前記記憶する処理によって前記記憶部に記憶された切断時刻と再起動時の時刻とから得られる電源切断期間、電源切断状態でのバッテリの温度および前記バッテリの劣化度に基づいて、再起動時の前記バッテリの充電容量を診断する
処理を実行することを特徴とするバッテリ充電容量診断方法。
【請求項６】
コンピュータに、
電源が切断された電源切断時点の時刻を示す切断時刻を記憶部に記憶し、
電源が再起動された際、前記記憶する処理によって前記記憶部に記憶された切断時刻と再起動時の時刻とから得られる電源切断期間、電源切断状態でのバッテリの温度および前記バッテリの劣化度に基づいて、再起動時の前記バッテリの充電容量を診断する
処理を実行させることを特徴とするバッテリ充電容量診断プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッテリ制御装置などに関する。
【背景技術】
【０００２】
ＲＡＩＤ（Redundant  Array  of  Inexpensive  Disks）装置では、外部電源の停電が発生した場合、キャッシュメモリ上のデータを喪失しないように、バックアップ用のバッテリ電源を利用してキャッシュメモリからディスクドライブに書き戻す。
【０００３】
しかし、停電発生時にバッテリ電源の充電容量が不足していると、ＲＡＩＤ装置は、キャッシュメモリ上のデータのバックアップに失敗し、データ消失を招く。これを防止するために、ＲＡＩＤ装置を制御するＲＡＩＤコントローラは、常時、監視機構経由でバッテリ電源の充電容量を監視し、キャッシュメモリ上のデータを全て書き戻すために必要な充電容量が確保されているか否かを判定する。
【０００４】
バッテリ電源の充電容量がキャッシュメモリのバックアップに必要な容量以上ある場合、ＲＡＩＤ装置は、ライトバック（Ｗｒｉｔｅ  Ｂａｃｋ）モードで動作する。ライトバックモードとは、ＲＡＩＤ装置がホストからＷｒｉｔｅコマンドを受信した場合、受信データがキャッシュメモリ上に到達した時点で、ホストに対してＷｒｉｔｅコマンドの完了を報告する動作モードである。一方、バッテリ電源の充電容量がキャッシュメモリのバックアップに必要な容量以上ない場合、ＲＡＩＤ装置は、ライトスルー（Ｗｒｉｔｅ  Ｔｈｒｏｕｇｈ）モードで動作する。ライトスルーモードとは、受信データがキャッシュメモリからディスクドライブに書き戻されるまで、ホストに対してＷｒｉｔｅコマンドの完了を報告しない動作モードである。このため、ＲＡＩＤ装置がライトスルーモードで動作すると、Ｗｒｉｔｅコマンドのホストに対する完了応答の性能が著しく低下する。
【０００５】
バッテリ電源は、何らかの原因で放電され、バックアップに必要な容量未満となると、ＲＡＩＤ装置は、ライトスルーモードに移行し、性能低下が発生する。この後、再びバッテリ電源は、充電され、バックアップに必要な容量を満たせば、ＲＡＩＤ装置は、ライトバックモードに戻る。したがって、バッテリ電源の容量を正確に把握できれば、ＲＡＩＤ装置の性能を向上させる。
【０００６】
バッテリ電源が放電される原因には、停電によるバックアップが実行された場合と、ＲＡＩＤ装置の電源切断などによりバッテリの充電が停止する際の自己放電の場合がある。停電によるバックアップが実行された場合、監視機構がバッテリ電源の放電電力と放電時間を監視できるので、放電容量が容易に特定でき、ＲＡＩＤ装置は、放電後の充電容量を把握できる。一方、自己放電の場合、電源切断時には監視機構も休止するため、ＲＡＩＤ装置は、自己放電後の充電容量を把握できない。
【０００７】
そこで、従来では、例えば、システム起動時のバッテリ電圧から求めた充電率初期値と、前回起動終了時に記憶させておいた充電率初期値などとを、バッテリ停止時間に基づいて選択し、システム起動時の充電容量を把握する技術が開示されている（例えば、特許文献１〜４を参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−１４５３４９号公報
【特許文献２】特開２００９−１３９１８４号公報
【特許文献３】特開２００１−５６３６２号公報
【特許文献４】特開平７−１６０４３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、再起動時の充電容量診断の診断精度が悪いという問題がある。例えば、システム起動時のバッテリ電圧が同値であっても、電源切断前のバッテリ充電状態や電源切断時の状態（時間、温度）などにより実際の充電容量は異なるものである。ところが、再起動時の充電容量診断は、システム起動時のバッテリ電圧に対して最も厳しい条件を当てはめた場合の充電容量を算出する。これは、ＲＡＩＤ装置が、停電時に、データのバックアップに失敗し、データ消失を招くことを回避するためである。したがって、再起動時の充電容量診断によって算出された充電容量と実際の充電容量に、乖離が発生することになる。すなわち、再起動時の充電容量診断では、診断精度が悪いことになる。
【００１０】
かかる問題を、図７を参照して説明する。図７は、再起動時の充電容量について説明する図である。ここでは、バッテリ電源は、電源切断時に１００％の充電容量であったとする。図７に示すように、バッテリ電源は、電源切断により放電される。ところが、電源が投入され、バッテリ電源が再起動された時に、実際の充電容量が６０％（Ｃ２）であったとしても、充電容量診断は、システム起動時のバッテリ電圧に対して最も厳しい条件を当てはめるので、２０％（Ｃ１）を算出する。この結果、再起動時から、引き続き行われる充電容量診断によってＣ２の充電容量に到達されるまでの期間、時間を要してしまう。仮に充電容量Ｃ２がライトバックモード可能な境界であるとすると、ＲＡＩＤ装置は、この期間ライトスルーモードで稼動することとなり、性能劣化を招いてしまう。
【００１１】
なお、上記課題は、ＲＡＩＤ装置だけでなく、バッテリ電源全般に同様に生じる課題である。
【００１２】
１つの側面では、本発明は、再起動時の充電容量診断の診断精度を向上させることを目的とする。
【課題を解決するための手段】
【００１３】
本願の開示するバッテリ制御装置は、１つの態様において、バッテリと、電源が切断された電源切断時点の時刻を示す切断時刻を記憶する記憶部と、電源が再起動された際、前記記憶部に記憶された切断時刻と再起動時の時刻とから得られる電源切断期間、電源切断状態での前記バッテリの温度および前記バッテリの劣化度に基づいて、再起動時の前記バッテリの充電容量を診断する診断部と、を備える。
【発明の効果】
【００１４】
本願の開示するバッテリ制御装置の１つの態様によれば、再起動時の充電容量診断の診断精度を向上させる。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施例１に係るＲＡＩＤ装置のハードウェア構成を示す図である。
【図２】図２は、実施例１に係るＢＢＵのハードウェア構成を示す図である。
【図３】図３は、バッテリ自己放電曲線の一例を示す図である。
【図４】図４は、再起動時における充電容量診断処理のフローチャートを示す図である。
【図５】図５は、実施例２に係るＲＡＩＤ装置のハードウェア構成を示す図である。
【図６】図６は、実施例２に係るＢＢＵのハードウェア構成を示す図である。
【図７】図７は、再起動時の充電容量について説明する図である。
【発明を実施するための形態】
【００１６】
以下に、本願の開示するバッテリ制御装置、バッテリ充電容量診断方法およびバッテリ充電容量診断プログラムの実施例を図面に基づいて詳細に説明する。本実施例では、バッテリ制御装置を備えるＲＡＩＤ装置に適用するものとする。なお、本実施例によりこの発明が限定されるものではない。
【実施例１】
【００１７】
［実施例１に係るＲＡＩＤ装置のハードウェア構成］
図１は、実施例１に係るＲＡＩＤ装置のハードウェア構成を示す図である。図１に示すように、ＲＡＩＤ装置９は、ＰＳＵ（Power  Supply  Unit）３およびホストサーバ４とそれぞれ接続する。ＰＳＵ３は、外部からＲＡＩＤ装置９に電源を供給する電源供給装置である。ホストサーバ４は、ＲＡＩＤ装置９に対してデータを書き戻すＷｒｉｔｅコマンドを発行する。ホストサーバ４は、データを読み出すＲｅａｄコマンドを発行する。そして、ホストサーバ４は、ＷｒｉｔｅコマンドまたはＲｅａｄコマンドの発行に対する応答をＲＡＩＤ装置９から受け取る。なお、以降では、ホストサーバ４からＷｒｉｔｅコマンドが発行された場合について説明する。
【００１８】
また、ＲＡＩＤ装置９は、ＢＢＵ（Battery  Backup  Unit）１およびＲＡＩＤ制御部２を有する。
【００１９】
ＢＢＵ１は、ＰＳＵ３から電源が供給されない場合に、予め貯蓄された電気を後述するＲＡＩＤ制御部２に供給する二次電池である。ＰＳＵ３から電源が供給されない場合とは、例えば、電源切断された場合や停電の場合がある。以降では、ＰＳＵ３から電源が供給されない場合を、電源切断された場合として説明する。なお、ＢＢＵ３の詳細な構成は、後述する。
【００２０】
ＲＡＩＤ制御部２は、ＲＡＩＤ装置９を制御する。ＲＡＩＤ制御部２は、ホストインターフェース２１、ディスクドライブ２２、キャッシュメモリ２３、ＲＡＩＤコントローラ２４および監視機構２５を有する。
【００２１】
ホストインターフェース２１は、ホストサーバ４との間のインターフェースである。
【００２２】
ディスクドライブ２２は、例えば、ＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）などの不揮発性メモリである。ディスクドライブ２２は、データを記憶する。
【００２３】
キャッシュメモリ２３は、例えば、ＤＩＭＭ（Dual  Inline  Memory  Module）やＤＤＲ  ＳＤＲＡＭ（Double  Date  Rate  Synchronous  DRAM）などの揮発性メモリである。キャッシュメモリ２３は、ディスクドライブ２２に書き戻すデータを一時的に記憶する。
【００２４】
ＲＡＩＤコントローラ２４は、Ｗｒｉｔｅコマンドに対するデータをディスクドライブ２２に書き戻す。例えば、ＲＡＩＤコントローラ２４は、ホストサーバ４からＷｒｉｔｅコマンドを受け取ると、受け取ったＷｒｉｔｅコマンドに対するデータをキャッシュメモリ２３に書き込む。そして、ＲＡＩＤコントローラ２４は、監視機構２５からＢＢＵ１に備えられたバッテリの充電容量を取得し、取得したバッテリの充電容量がキャッシュメモリ２３上のデータを書き戻すために必要な容量であるか否かを判定する。
【００２５】
また、ＲＡＩＤコントローラ２４は、取得したバッテリの充電容量がキャッシュメモリ２３上のデータを書き戻すために必要な容量である場合、データがキャッシュメモリ２３に到達した時点で、ホストサーバ４にＷｒｉｔｅコマンドの完了報告を応答する。そして、ＲＡＩＤコントローラ２４は、完了報告を応答した後、キャッシュメモリ２３上のデータをディスクドライブ２２に書き戻す。すなわち、ＲＡＩＤコントローラ２４は、受信データをライトバックモードで処理する。
【００２６】
また、ＲＡＩＤコントローラ２４は、取得したバッテリの充電容量がキャッシュメモリ２３上のデータを書き戻すために必要な容量でない場合、キャッシュメモリ２３からディスクドライブ２２に書き戻す。そして、ＲＡＩＤコントローラ２４は、ディスクドライブ２２に書き戻した後、ホストサーバ４にＷｒｉｔｅコマンドの完了報告を応答する。すなわち、ＲＡＩＤコントローラ２４は、受信データをライトスルーモードで処理する。
【００２７】
監視機構２５は、ＢＢＵ１に備えられたバッテリの充電容量を監視する。また、監視機構２５は、ＰＳＵ３が切断された時（以降、「電源切断時」という）に、ＢＢＵ１に備えられたバッテリの充電容量をＲＡＩＤコントローラ２４に通知しない。監視機構２５は、電源切断時に休止しているからである。
【００２８】
［ＢＢＵのハードウェア構成］
図２は、実施例１に係るＢＢＵのハードウェア構成を示す図である。図２に示すように、ＢＢＵ１は、充放電回路１１、バッテリ１２、ＲＴＣ（Real  Time  Clock）１３およびＲＴＣバックアップ用小型バッテリ１４を有する。また、ＢＢＵ１は、温度センサ１５、不揮発記億部１６およびＭＣＵ（Micro  Controller  Unit）１７を有する。
【００２９】
充放電回路１１は、電源切断時でない場合、電源ラインを介してＰＳＵ３から電源を供給し、供給した電源をバッテリ１２に充電する。また、充放電回路１１は、電源切断時の場合、電源ラインを介してＰＳＵ３から電源を供給しないので、バッテリ１２に充電しない。
【００３０】
バッテリ１２は、電源切断時でない場合、充放電回路１１を介してＰＳＵ３から充電する。また、バッテリ１２は、電源切断時の場合、充放電回路１１を介してＰＳＵ３から電源を供給しないので、グラウンドに放電する。また、バッテリ１２は、再起動時の場合、バッテリ１２の解放電圧の値を後述するＭＣＵ１７に通知する。ここでいう解放電圧とは、充放電回路１１とバッテリ１２との間のライン上の電流が流れていない状態の電圧のことをいう。
【００３１】
ＲＴＣ１３は、計時専用のチップである。ＲＴＣ１３は、電源切断時でない場合、ＰＳＵ３から電源の供給を受けて、計時動作を行う。ＲＴＣ１３は、電源切断時の場合、後述するＲＴＣバックアップ用小型バッテリ１４から電源の供給を受けて、計時動作を行う。ＲＴＣ１３は、時刻情報をＭＣＵ１７に通知する。
【００３２】
ＲＴＣバックアップ用小型バッテリ１４は、ＲＴＣ１３がＰＳＵ３から電源の供給を受けられない場合、例えば電源切断時に、ＲＴＣ１３に対して電源を供給する。
【００３３】
温度センサ１５は、バッテリ１２の温度を測定するために用いられるセンサである。温度センサ１５は、バッテリ１２の近傍に搭載される。温度センサ１５は、温度情報をＭＣＵ１７に通知する。
【００３４】
不揮発記憶部１６は、例えばフラッシュメモリ（Flash  Memory）やＦＲＡＭ（登録商標）（Ferroelectric  Random  Access  Memory）などの不揮発性の半導体メモリ素子などの記憶装置に対応する。さらに、不揮発記憶部１６は、電源切断時刻情報１６１、電源切断時点充電容量１６２、電源切断時点温度１６３および温度履歴情報１６４をそれぞれ記憶する。電源切断時刻情報１６１は、電源切断時点の時刻情報を記憶する。電源切断時点充電容量１６２は、電源切断時点のバッテリ１２の充電容量を記憶する。電源切断時点温度１６３は、電源切断時点のバッテリ１２の温度を記憶する。温度履歴情報１６４は、バッテリ１２の温度の履歴を記憶する。温度履歴情報１６４には、所定時間間隔のバッテリ１２の温度が記憶される。所定時間間隔は、一例として、１時間であるが、これに限定されない。
【００３５】
ＭＣＵ１７は、再起動時に、バッテリ１２の充電容量を診断する。
【００３６】
例えば、ＭＣＵ１７は、ＰＳＵ３の電源切断を検出すると、電源切断の検出時にＲＴＣ１３から取得した時刻情報を電源切断時刻情報１６１に保持する。また、ＭＣＵ１７は、電源切断時点のバッテリ１２の充電容量を電源切断時点充電容量１６２に保持する。また、ＭＣＵ１７は、電源切断の検出時に温度センサ１５から通知された温度情報を電源切断時点温度１６３に保持する。また、ＭＣＵ１７は、温度センサ１５から通知される温度情報を所定時間間隔で温度履歴情報１６４に保持する。
【００３７】
また、ＭＣＵ１７は、ＰＳＵ３の再起動を検出すると、検出時のバッテリ１２の解放電圧の値からバッテリ１２の充電容量を算出する。かかる場合、ＭＣＵ１７は、バッテリ１２の解放電圧値に対して最も厳しい条件を当てはめた場合の充電容量を算出する。これは、ＲＡＩＤ装置９が、その後の停電時に、データのバックアップに失敗し、データ消失を招くことを回避するためである。そして、ＭＣＵ１７は、算出した再起動時のバッテリ１２の充電容量を第１の候補として、不揮発記憶部１６に保持する。なお、ＭＣＵ１７は、ＰＳＵ３の再起動を検出した場合にバッテリ１２の充電容量を算出する場合を説明したが、これに限定されず、監視機構２５からの指示によりバッテリ１２の充電容量を算出するようにしても良い。
【００３８】
また、ＭＣＵ１７は、ＰＳＵ３の再起動の検出時にＲＴＣ１３から取得した時刻情報と電源切断時刻情報１６１とから、電源切断時間を算出する。そして、ＭＣＵ１７は、算出した電源切断時間が所定の時間より短い場合、電源切断時点充電容量１６２を再起動時の充電容量とする。所定の時間とは、バッテリ１２が自己放電なしと判断できる時間を示す。一例として、第１の時間は、１時間であるが、これに限定されるものではない。
【００３９】
さらに、ＭＣＵ１７は、算出した電源切断時間が所定の時間より長い場合、当該電源切断時間に応じて、電源切断状態でのバッテリ１２の温度から推定されるバッテリ１２の充電容量を算出する。一例として、ＭＣＵ１７は、電源切断状態での温度を算出する。電源切断状態での温度は、例えば、温度履歴情報１６４から推定される。そして、ＭＣＵ１７は、例えば、バッテリ１２の温度に対する自己放電特性曲線を利用して、電源切断状態での温度で、バッテリ１２を電源切断時間放置した際の充電容量を算出する。そして、ＭＣＵ１７は、算出した再起動時のバッテリ１２の充電容量を第２の候補として、不揮発記憶部１６に保持する。
【００４０】
また、ＭＣＵ１７は、第２の候補として保持された充電容量が第１の候補として保持された充電容量より大きい場合、第２の候補として保持された充電容量を再起動時の充電容量とする。すなわち、ＭＣＵ１７は、第２の候補として保持された、バッテリ１２の温度を考慮した充電容量を再起動時の充電容量に適用する。また、ＭＣＵ１７は、第２の候補として保持された充電容量が第１の候補として保持された充電容量以下である場合、第１の候補として保持された充電容量を再起動時の充電容量とする。すなわち、ＭＣＵ１７は、バッテリ１２の解放電圧値に対して最も厳しい条件を当てはめた場合の充電容量を再起動時の充電容量に適用する。
【００４１】
なお、ＭＣＵ１７は、算出した電源切断時間が、バッテリ１２の充電容量が温度に依存しない程長い場合や電源切断時間が算出できない場合、第１の候補として保持された充電容量を再起動時の充電容量とする。すなわち、かかる場合、ＭＣＵ１７は、電源切断による自己放電の推定を適用せず、バッテリ１２の解放電圧値に対して最も厳しい条件を当てはめた場合の充電容量を再起動時の充電容量に適用する。
【００４２】
また、ＭＣＵ１７は、算出した再起動時の充電容量を、バッテリ１２の内部抵抗値に基づいて補正する。例えば、ＭＣＵ１７は、前回充電時に測定したバッテリ１２の内部抵抗値から、寿命状態に劣化するまでの劣化前後の放電容量の差分を算出する。そして、ＭＣＵ１７は、算出した放電容量の差分を用いて、適用された再起動時の充電容量を補正する。
【００４３】
ここで、バッテリ１２の温度に対する自己放電特性曲線の一例について、図３を参照して説明する。図３は、バッテリ自己放電曲線の一例を示す図である。図３に示すように、Ｘ軸は放置期間（月）であり、Ｙ軸は充電容量の容量保存率（％）である。バッテリ自己放電特性曲線は、バッテリ１２の温度に応じた曲線であり、放置期間に対する容量保存率を示す曲線である。図３の例では、バッテリ１２の温度が高くなる程、放置期間に対する容量保存率が低くなる。かかるバッテリ自己放電特性曲線を用いて、ＭＣＵ１７は、バッテリ１２の温度で、電源切断時間に対応する容量保存率を算出する。例えば、ＭＣＵ１７は、電源切断時点充電容量１６２に対応する容量保存率を算出する。そして、ＭＣＵ１７は、バッテリ自己放電特性曲線を用いて、算出した容量保存率に対応する放置期間を求める。そして、ＭＣＵ１７は、バッテリ自己放電特性曲線を用いて、求めた放置期間から電源切断時間経過した場合の容量保存率を求める。そして、ＭＣＵ１７は、求めた容量保存率に対応する充電容量を求めれば良い。
【００４４】
［充電容量診断処理のフローチャート］
次に、ＢＢＵ１の再起動時における充電容量診断処理のフローチャートを、図４を参照して説明する。図４は、再起動時における充電容量診断処理のフローチャートを示す図である。なお、前回充電時に測定したバッテリ１２の内部抵抗値が、不揮発記憶部１６に記憶されているとする。
【００４５】
ＢＢＵ１のＭＣＵ１７は、ＰＳＵ３の再起動を検出したか否かを判定する（ステップＳ１０）。ＰＳＵ３の再起動を検出していないと判定した場合（ステップＳ１０；Ｎｏ）、ＭＣＵ１７は、判定処理を繰り返す。
【００４６】
一方、ＰＳＵ３の再起動を検出したと判定した場合（ステップＳ１０；Ｙｅｓ）、ＭＣＵ１７は、検出時のバッテリ１２の解放電圧の値から充電容量（Ｃ１）を算出する（ステップＳ１１）。例えば、ＭＣＵ１７は、検出時のバッテリ１２の解放電圧を検出し、検出した解放電圧および電源切断時点充電容量１６２に保持された充電容量で定まるおおまかな充電容量を算出する。すなわち、ＭＣＵ１７は、バッテリ１２の解放電圧値に対して最も厳しい条件を当てはめた場合の充電容量を算出する。なお、Ｃ１は、前述した第１の候補に対応する。
【００４７】
そして、ＭＣＵ１７は、電源切断前後のＲＴＣ１３の時刻情報から電源切断時間（Ｔ）を算出する（ステップＳ１２）。例えば、ＭＣＵ１７は、再起動の検出時の時刻情報をＲＴＣ１３から取得し、取得した時刻情報と電源切断時刻情報１６１に保持された時刻情報とから、電源切断時間を算出する。
【００４８】
続いて、ＭＣＵ１７は、電源切断時間（Ｔ）が算出できたか否かを判定する（ステップＳ１３）。電源切断時間（Ｔ）が算出できないと判定した場合（ステップＳ１３；Ｎｏ）、ＭＣＵ１７は、おおまかな充電容量を適用すべく、ステップＳ２３に移行する。
【００４９】
一方、電源切断時間（Ｔ）が算出できたと判定した場合（ステップＳ１３；Ｙｅｓ）、ＭＣＵ１７は、電源切断時間（Ｔ）が第１の時間（Ｔａ）より短いか否かを判定する（ステップＳ１４）。ここでいう第１の時間（Ｔａ）とは、バッテリ１２が自己放電なしと判断できる時間を意味する。電源切断時間（Ｔ）が第１の時間（Ｔａ）より短いと判定した場合（ステップＳ１４；Ｙｅｓ）、ＭＣＵ１７は、バッテリ１２の自己放電がないと判断し、電源切断時点充電容量１６２に保持された電源切断前の充電容量を充電容量Ｃ２とする（ステップＳ１５）。そして、ＭＣＵ１７は、ステップＳ２２に移行する。
【００５０】
一方、電源切断時間（Ｔ）が第１の時間（Ｔａ）より短くないと判定した場合（ステップＳ１４；Ｎｏ）、ＭＣＵ１７は、電源切断時間（Ｔ）が第１の時間（Ｔａ）以上且つ第２の時間（Ｔｂ）未満であるか否かを判定する（ステップＳ１６）。ここでいう第２の時間（Ｔｂ）とは、電源切断状態でのバッテリ１２の温度を切断時点の温度と再起動時点の温度の平均と判断できる時間を意味する。電源切断時間（Ｔ）が第１の時間（Ｔａ）以上且つ第２の時間（Ｔｂ）未満であると判定した場合（ステップＳ１６；Ｙｅｓ）、ＭＣＵ１７は、バッテリ１２について、電源切断時点温度１６３に保持された電源切断前の温度と再起動時の温度との平均を電源切断状態での温度ＴＨとする（ステップＳ１７）。そして、ＭＣＵ１７は、充電容量を算出すべく、ステップＳ２０に移行する。
【００５１】
一方、電源切断時間（Ｔ）が第２の時間（Ｔｂ）より大きいと判定した場合（ステップＳ１６；Ｎｏ）、ＭＣＵ１７は、電源切断時間（Ｔ）が第２の時間（Ｔｂ）以上且つ第３の時間（Ｔｃ）未満であるか否かを判定する（ステップＳ１８）。ここでいう第３の時間（Ｔｃ）とは、電源切断状態でのバッテリ１２の温度を切断前後の温度履歴から推定できる時間を意味する。電源切断時間（Ｔ）が第３の時間（Ｔｃ）以上であると判定した場合（ステップＳ１８；Ｎｏ）、ＭＣＵ１７は、おおまかな充電容量を適用すべく、ステップＳ２３に移行する。
【００５２】
一方、電源切断時間（Ｔ）が第２の時間（Ｔｂ）以上且つ第３の時間（Ｔｃ）未満であると判定した場合（ステップＳ１８；Ｙｅｓ）、ＭＣＵ１７は、以下の処理を行う。すなわち、ＭＣＵ１７は、バッテリ１２について、温度履歴情報１６４に保持された電源切断前後の温度情報から電源切断状態での温度ＴＨを推定する（ステップＳ１９）。例えば、ＭＣＵ１７は、温度履歴情報１６４に記憶された温度履歴を用いて、電源切断前所定時間と再起動時の温度との平均を電源切断状態での温度ＴＨとする。そして、ＭＣＵ１７は、充電容量を算出すべく、ステップＳ２０に移行する。
【００５３】
ステップＳ２０では、ＭＣＵ１７は、電源切断状態での温度ＴＨで、バッテリ１２を電源切断時間（Ｔ）放置した際の充電容量Ｃ２を算出する（ステップＳ２０）。例えば、ＭＣＵ１７は、電源切断状態での温度ＴＨに対応する自己放電特性曲線を利用して、バッテリ１２を電源切断時間（Ｔ）放置した際のバッテリ１２の充電容量Ｃ２を算出する。
【００５４】
そして、ＭＣＵ１７は、充電容量Ｃ２が充電容量Ｃ１より大きいか否かを判定する（ステップＳ２１）。すなわち、ＭＣＵ１７は、電源切断時点充電容量１６２に保持された電源切断前の充電容量を充電容量（Ｃ２）が解放電圧の値から算出されたおおまかな充電容量（Ｃ１）より大きいかを判定する。充電容量Ｃ２が充電容量Ｃ１より大きいと判定した場合（ステップＳ２１；Ｙｅｓ）、ＭＣＵ１７は、ステップＳ２２に移行する。
【００５５】
ステップＳ２２では、ＭＣＵ１７は、ステップＳ１５またはステップＳ２０で求めた充電容量Ｃ２を再起動時のバッテリ１２の充電容量Ｃ´とする（ステップＳ２２）。そして、ＭＣＵ１７は、バッテリ１２の充電容量を補正すべく、ステップＳ２４に移行する。
【００５６】
ステップＳ２３では、ＭＣＵ１７は、ステップＳ１１で求めた充電容量Ｃ１を再起動時のバッテリ１２の充電容量Ｃ´とする（ステップＳ２３）。そして、ＭＣＵ１７は、バッテリ１２の充電容量を補正すべく、ステップＳ２４に移行する。
【００５７】
ステップＳ２４では、ＭＣＵ１７は、バッテリ１２の充電容量Ｃ´をバッテリ１２の劣化度に基づいて補正する（ステップＳ２４）。例えば、ＭＣＵ１７は、不揮発記憶部１６に記憶されたバッテリ１２の内部抵抗値から、寿命状態に劣化するまでの劣化前後の放電容量の差分を算出する。そして、ＭＣＵ１７は、算出した放電容量の差分を用いて、再起動時の充電容量Ｃ´をＣ（＝Ｃ´＋α）に補正する。ここでいう「α」は、バッテリ劣化度による補正量である。そして、ＭＣＵ１７は、再起動時における充電容量診断処理を終了する。
【００５８】
その後、ＭＣＵ１７は、算出した再起動時の充電容量Ｃを起点に、充電時間分の充電容量を積算し、充電時間に対応する充電容量を把握する。この結果、ＭＣＵ１７からバッテリ１２の充電容量が通知されたＲＡＩＤ制御部９では、ＲＡＩＤコントローラ２４が、監視機構２５からバッテリ１２の充電容量を取得する。そして、ＲＡＩＤコントローラ２４は、取得したバッテリ１２の充電容量がキャッシュメモリ２３上のデータを書き戻すために必要な容量であるか否かを判定する。そして、ＲＡＩＤコントローラ２４は、取得したバッテリの充電容量がキャッシュメモリ２３上のデータを書き戻すために必要な容量である場合、データがキャッシュメモリ２３に到達した時点で、ホストサーバ４にＷｒｉｔｅコマンドの完了報告を応答する。すなわち、ＲＡＩＤコントローラ２４は、受信データをライトバックモードで処理することになる。一方、ＲＡＩＤコントローラ２４は、取得したバッテリの充電容量がキャッシュメモリ２３上のデータを書き戻すために必要な容量でない場合、ディスクドライブ２２に書き戻した後、ホストサーバ４にＷｒｉｔｅコマンドの完了報告を応答する。すなわち、ＲＡＩＤコントローラ２４は、受信データをライトスルーモードで処理することになる。
【００５９】
［実施例１の効果］
上記実施例１によれば、ＢＢＵ１は、電源が切断された電源切断時点の時刻を示す切断時刻を記憶する。そして、ＢＢＵ１は、電源が再起動された際、記憶された切断時刻と再起動時の時刻とから得られる電源切断期間、電源切断状態でのバッテリ１２の温度およびバッテリ１２の劣化度に基づいて、再起動時のバッテリ１２の充電容量を診断する。かかる構成によれば、ＢＢＵ１は、電源切断状態でのバッテリ１２の温度およびバッテリ１２の劣化度を考慮して、再起動時のバッテリ１２の充電容量を診断するので、診断精度を向上させることができる。
【００６０】
また、上記実施例１によれば、ＢＢＵ１は、電源が再起動された際、記憶された切断時刻と再起動時の時刻とから得られる電源切断時間および電源切断状態でのバッテリ１２の温度に基づいて、再起動時のバッテリ１２の充電容量を算出する。そして、ＢＢＵ１は、バッテリ１２の内部抵抗値に基づいて、算出されたバッテリ１２の充電容量を補正する。かかる構成によれば、ＢＢＵ１は、バッテリの寿命診断に用いられるバッテリ１２の内部抵抗値に基づいてバッテリ１２の充電容量を補正することで、バッテリ１２の寿命劣化を加味した充電容量を算出できる。この結果、ＢＢＵ１は、バッテリ１２の充電容量の診断精度を向上させることができる。
【００６１】
また、上記実施例１によれば、ＢＢＵ１は、電源切断期間および電源切断状態でのバッテリ１２の温度に基づいて、再起動時のバッテリ１２の充電容量を算出する。そして、ＢＢＵ１は、バッテリ１２の抵抗値を測定し、測定した抵抗値に基づいて、算出したバッテリ１２の充電容量を補正する。かかる構成によれば、ＢＢＵ１は、バッテリの寿命診断に用いられるバッテリ１２の内部抵抗値に基づいて、充電容量を補正することで、バッテリ１２の寿命劣化を加味した充電容量を算出できる。この結果、ＢＢＵ１は、バッテリ１２の充電容量の診断精度を向上させることができる。
【００６２】
また、上記実施例１によれば、ＢＢＵ１は、さらに、バッテリの温度を所定期間毎に温度の履歴として記憶する。そして、ＢＢＵ１は、記憶された温度の履歴から、電源切断状態でのバッテリ１２の温度を推定し、電源切断期間および該推定した温度に基づいて、再起動時のバッテリ１２の充電容量を算出する。かかる構成によれば、ＢＢＵ１は、再起動時のバッテリ１２の充電容量の算出に、温度の履歴から推定されるバッテリ１２の温度および電源切断期間を用いることで、温度および電源切断期間によって変化するバッテリ１２の充電容量を精度良く推定できる。
【００６３】
また、上記実施例１によれば、ＢＢＵ１は、電源切断期間に応じて、電源切断状態でのバッテリ１２の温度に対応する、バッテリ１２の自己放電特性から推定されるバッテリ１２の充電容量を算出する。かかる構成によれば、ＢＢＵ１は、バッテリ１２の充電容量の算出に、バッテリ１２の温度に対応する自己放電特性を用いることで、バッテリ１２の充電容量を精度良く推定できる。
【実施例２】
【００６４】
ところで、実施例１では、ＲＡＩＤ装置９では、ＢＢＵ１が、ＲＴＣ１３およびＲＴＣバックアップ用小型バッテリ１４を内蔵した場合を説明した。しかしながら、ＲＡＩＤ装置９は、これに限定されず、ＲＡＩＤ制御部２が、ＲＴＣ１３およびＲＴＣバックアップ用小型バッテリ１４を内蔵するようにしても良い。
【００６５】
そこで、実施例２では、ＲＡＩＤ制御部２が、ＲＴＣ１３およびＲＴＣバックアップ用小型バッテリ１４を内蔵する場合について説明する。
【００６６】
［実施例２に係るＲＡＩＤ装置のハードウェア構成］
図５は、実施例２に係るＲＡＩＤ装置のハードウェア構成を示す図である。なお、図１に示すＲＡＩＤ装置９と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例１と実施例２とが異なるところは、ＲＡＩＤ制御部２の監視機構２５にＲＴＣ２５１およびＲＴＣバックアップ用小型バッテリ２５２を追加した点にある。
【００６７】
［実施例２に係るＢＢＵのハードウェア構成］
図６は、実施例２に係るＢＢＵのハードウェア構成を示す図である。なお、図２に示すＢＢＵ１と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例１と実施例２とが異なるところは、ＢＢＵ１からＲＴＣ１３およびＲＴＣバックアップ用小型バッテリ１４を削除した点にある。
【００６８】
ＭＣＵ１７は、時刻情報をＲＡＩＤ制御部２の監視機構２５にあるＲＴＣ２５１から取得する。例えば、ＭＣＵ１７は、ＰＳＵ３の電源切断を検出すると、電源切断の検出時にＲＴＣ２５１から取得した時刻情報を電源切断時刻情報１６１に保持する。また、ＭＣＵ１７は、ＰＳＵ３の再起動を検出すると、ＲＴＣ２５１から取得した時刻情報と電源切断時刻情報１６１とから、電源切断時間を算出する。
【００６９】
そして、ＭＣＵ１７は、算出した電源切断時間および電源切断状態でのバッテリ１２の温度に基づいて、再起動時のバッテリ１２の充電容量を算出する。さらに、ＭＣＵ１７は、バッテリ１２の抵抗値を測定し、測定した抵抗値に基づいて、算出したバッテリ１２の充電容量を補正する。
【００７０】
［実施例２の効果］
上記実施例２によれば、ＲＴＣ２５１およびＲＴＣバックアップ用小型バッテリ２５２は、ＢＢＵ１内に代えてＢＢＵ１外に搭載されるようにした。ＢＢＵ１は、ＲＴＣ２５１から取得される、電源切断時点の時刻を示す切断時刻を記憶する。そして、ＢＢＵ１は、電源が再起動された際、以下の処理を行う。すなわち、ＢＢＵ１は、記憶された切断時刻とＲＴＣ２５１から取得される再起動時の時刻とから得られる電源切断期間、電源切断状態でのバッテリ１２の温度およびバッテリ１２の劣化度に基づいて、再起動時のバッテリ１２の充電容量を診断する。かかる構成によれば、ＲＴＣ２５１およびＲＴＣバックアップ用小型バッテリ２５２をＢＢＵ１外に備えるようにしても、ＢＢＵ１は、電源切断状態でのバッテリ１２の温度およびバッテリ１２の劣化度を考慮して、再起動時のバッテリ１２の充電容量を診断できる。したがって、ＢＢＵ１は、診断精度を向上させることができる。
【００７１】
［その他］
なお、図示したＢＢＵ１は、ＲＡＩＤ装置９に内蔵する場合を説明した。しかしながら、ＢＢＵ１は、これに限定されず、ＲＡＩＤ装置９の外部装置としてＲＡＩＤ装置９と接続される場合であっても良い。また、ＢＢＵ１は、ＲＡＩＤ装置９以外の装置であって、自装置を内蔵可能な別の装置に内蔵される場合であっても良いし、別の装置と接続される場合であっても良い。
【００７２】
また、図示したＲＡＩＤ装置９の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、ＲＡＩＤ装置９の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、ＲＴＣ１３とＲＴＣバックアップ用小型バッテリ１４とを１個の部に統合しても良い。ＭＣＵ１７による処理を、電源切断を検知した場合の処理を実行する処理部と、電源の再起動を検知した場合の処理を実行する処理部とに分散しても良い。
【００７３】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００７４】
（付記１）バッテリと、
電源が切断された電源切断時点の時刻を示す切断時刻を記憶する記憶部と、
電源が再起動された際、前記記憶部に記憶された切断時刻と再起動時の時刻とから得られる電源切断期間、電源切断状態での前記バッテリの温度および前記バッテリの劣化度に基づいて、再起動時の前記バッテリの充電容量を診断する診断部と、
を備えることを特徴とするバッテリ制御装置。
【００７５】
（付記２）前記診断部は、
前記電源切断期間および電源切断状態での前記バッテリの温度に基づいて、再起動時の前記バッテリの充電容量を算出する算出部と、
前記バッテリの抵抗値を測定し、測定した抵抗値に基づいて、前記算出部によって算出されたバッテリの充電容量を補正する補正部と
を備えることを特徴とする付記１に記載のバッテリ制御装置。
【００７６】
（付記３）前記記憶部は、さらに、所定期間毎のバッテリの温度を温度の履歴として記憶し、
前記算出部は、前記記憶部に記憶された温度の履歴から、電源切断状態での前記バッテリの温度を推定し、前記電源切断期間および該推定した温度に基づいて、再起動時の前記バッテリの充電容量を算出する
ことを特徴とする付記２に記載のバッテリ制御装置。
【００７７】
（付記４）前記算出部は、前記電源切断期間に応じて、電源切断状態での前記バッテリの温度に対応する、バッテリの自己放電特性から推定される前記バッテリの充電容量を算出する
ことを特徴とする付記２または付記３に記載のバッテリ制御装置。
【００７８】
（付記５）バッテリ制御装置が、
電源が切断された電源切断時点の時刻を示す切断時刻を記憶部に記憶し、
電源が再起動された際、前記記憶する処理によって前記記憶部に記憶された切断時刻と再起動時の時刻とから得られる電源切断期間、電源切断状態でのバッテリの温度および前記バッテリの劣化度に基づいて、再起動時の前記バッテリの充電容量を診断する
処理を実行することを特徴とするバッテリ充電容量診断方法。
【００７９】
（付記６）コンピュータに、
電源が切断された電源切断時点の時刻を示す切断時刻を記憶部に記憶し、
電源が再起動された際、前記記憶する処理によって前記記憶部に記憶された切断時刻と再起動時の時刻とから得られる電源切断期間、電源切断状態でのバッテリの温度および前記バッテリの劣化度に基づいて、再起動時の前記バッテリの充電容量を診断する
処理を実行させることを特徴とするバッテリ充電容量診断プログラム。
【００８０】
（付記７）データを記憶するストレージと、
前記ストレージに対する予備の電源であるバッテリを制御するバッテリ制御装置と、を備え、
前記バッテリ制御装置は、
前記バッテリと、
電源が切断された電源切断時点の時刻を示す切断時刻を記憶する記憶部と、
電源が再起動された際、前記記憶部に記憶された切断時刻と再起動時の時刻とから得られる電源切断期間、電源切断状態での前記バッテリの温度および前記バッテリの劣化度に基づいて、再起動時の前記バッテリの充電容量を診断する診断部と、
を備えることを特徴とするストレージ装置。
【符号の説明】
【００８１】
１  ＢＢＵ
１１  充放電回路
１２  バッテリ
１３  ＲＴＣ
１４  ＲＴＣバックアップ用小型バッテリ
１５  温度センサ
１６  不揮発記憶部
１６１  電源切断時刻情報
１６２  電源切断時点充電容量
１６３  電源切断時点温度
１６４  温度履歴情報
１７  ＭＣＵ
２  ＲＡＩＤ制御部
２１  ホストインターフェース
２２  ディスクドライブ
２３  キャッシュメモリ
２４  ＲＡＩＤコントローラ
２５  監視機構
２５１  ＲＴＣ
２５２  ＲＴＣバックアップ用小型バッテリ
３  ＰＳＵ
４  ホストサーバ
９  ＲＡＩＤ装置
【図１】
2015052477.tif 000003
【図２】
2015052477.tif 000004
【図３】
2015052477.tif 000005
【図４】
2015052477.tif 000006
【図５】
2015052477.tif 000007
【図６】
2015052477.tif 000008
【図７】
2015052477.tif 000009