(57)【要約】  記憶制御装置は、主電源損失の間、供給するためにエネルギーを蓄積するためのコンデンサパックと、コンデンサパックの温度を検出する温度センサと、その全体にわたって、コンデンサパックが動作される間隔の間、温度を受信し、その寿命の間に当該温度で動作された場合、その全体にわたって、コンデンサパックが少なくとも所定のエネルギー量を蓄積するための能力を有することになる寿命を判断し、判断された寿命に対するコンデンサパックの保証寿命の比率によって間隔を正規化し、累積された正規化された実行時間に正規化された間隔を追加することを-繰り返し行うＣＰＵとを有する。コンデンサパックの動作電圧はまた、サンプリングされ、寿命を判断するためにも使用される。所定のエネルギー量は、主電源の損失に応答して、非揮発性メモリに揮発性書込みキャッシュをバックアップするためのものであってよい。【その他】              本願に係る特許出願人の国際段階での記載住所は「アメリカ合衆国９２００８カリフォルニア州カールスバッド、ファラディ・ドライブ・２２００、スイート・１００」ですが、識別番号３０５０４９０８９を付与された国内書面に記載の住所が適正な住所表記であります。
2009503723.tif 000002
【特許請求の範囲】
【請求項１】
記憶制御装置内のコンデンサパックの累積された正規化された実行時間を監視するための方法であって、
コンデンサパックの累積された正規化された実行時間を初期化するステップ（１）と、
前記初期化するステップの後で、その全体にわたって、コンデンサパックが動作される時間間隔の間、コンデンサパックの温度を検出するステップ（２）と、
寿命の間、前記温度で動作された場合、その全体にわたって、コンデンサパックが少なくとも所定のエネルギー量を蓄積するための容量を有することになる前記寿命を判断するステップ（３）と、
前記寿命に対するコンデンサパックの保証寿命の比率によって前記時間間隔を正規化するステップ（４）と、
前記正規化された時間間隔を前記累積された正規化された実行時間に追加するステップ（５）と、
記憶制御装置の動作の間にステップ（２）から（５）を繰り返すステップ（６）とを含む、方法。
【請求項２】
前記寿命を前記判断するステップが、前記温度を使用して経験的に判断された値のデータベース内で前記寿命を調べるステップを含む、請求項１に記載の方法。
【請求項３】
前記寿命を前記判断するステップが、前記温度の所定の関数として前記寿命を計算するステップを含む、請求項１に記載の方法。
【請求項４】
前記ステップ（３）に先立って、前記時間間隔の間にコンデンサパックの電圧を検出するステップ（７）をさらに含み、
前記寿命の間、前記温度と前記電圧とで動作された場合、前記ステップ（３）が、その全体にわたって、コンデンサパックが少なくとも前記所定のエネルギー量を蓄積するための容量を有することになる前記寿命を判断するステップを含み、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）とを繰り返すステップを含む、
請求項１に記載の方法。
【請求項５】
前記寿命を前記判断するステップが、前記温度と前記電圧とを使用して経験的に判断された値のデータベース内で前記寿命を調べるステップを含む、請求項４に記載の方法。
【請求項６】
前記寿命を前記判断するステップが、前記温度と前記電圧とに応じて前記寿命を計算するステップを含む、請求項４に記載の方法。
【請求項７】
コンデンサパックの前記累積された正規化された実行時間を前記初期化するステップが、前記累積された正規化された実行時間をゼロに初期化するステップを含む、請求項１に記載の方法。
【請求項８】
コンデンサパックの前記累積された正規化された実行時間を前記初期化するステップが、前記累積された正規化された実行時間をコンデンサパックの許容仕様に基づく時間量に初期化するステップを含む、請求項１に記載の方法。
【請求項９】
コンデンサパックの前記累積された正規化された実行時間を前記初期化するステップが、前記累積された正規化された実行時間をコンデンサパックの歴年齢に基づく時間量に初期化するステップを含む、請求項１に記載の方法。
【請求項１０】
前記時間間隔が所定期間を含む、請求項１に記載の方法。
【請求項１１】
前記所定期間が、記憶制御装置が主電源によって電力供給されている間の第１の所定期間を含み、前記所定期間が、記憶制御装置がコンデンサパックによって電力供給されている間の第２の所定期間を含み、前記第２の所定期間が、前記第１の所定期間未満である、請求項１０に記載の方法。
【請求項１２】
前記保証寿命に対する前記累積された正規化された実行時間の比率に基づいて、その元の静電容量に対するコンデンサパックの静電容量低下割合を計算するステップ（７）をさらに含み、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）とを繰り返すステップを含む、
請求項１に記載の方法。
【請求項１３】
コンデンサパックの前記静電容量低下割合を記憶制御装置のユーザに表示するステップ（８）をさらに含み、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）と、（８）とを繰り返すステップを含む、
請求項１２に記載の方法。
【請求項１４】
前記ステップ（７）が、コンデンサパックの寿命末期の静電容量低下割合を前記比率で乗じるステップを含む、請求項１２に記載の方法。
【請求項１５】
コンデンサパックの前記寿命末期の静電容量低下割合が、記憶制御装置に対する主電源の損失の間、コンデンサパックが、通常の動作電圧で少なくとも記憶制御装置が書込みキャッシュを非揮発性メモリにバックアップするために十分なエネルギーを蓄積するための容量を有する、コンデンサパックの静電容量低下割合を含む、請求項１３に記載の方法。
【請求項１６】
前記所定のエネルギー量が、記憶制御装置に対する主電源の損失の間、書込みキャッシュを非揮発性メモリにバックアップするために記憶制御装置によって要求されるエネルギー量を含む、請求項１に記載の方法。
【請求項１７】
記憶制御装置に対する主電源の損失の間、コンデンサパックが、現在の動作電圧で現在のサイズを有する書込みキャッシュを非揮発性メモリにバックアップするために記憶制御装置によって要求されるエネルギー量を蓄積するための容量を有するかどうかを判断するステップ（７）と、
コンデンサパックが前記容量を有さない場合、前記書込みキャッシュの前記サイズをコンデンサパックが前記容量を有することになる新しいサイズに低減するステップ（８）とを含み、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）と、（８）とを繰り返すステップを含む、
請求項１に記載の方法。
【請求項１８】
前記累積された正規化された実行時間が、コンデンサパックの累積された歴実行時間より大きいかどうかを判断するステップ（９）と、
前記累積された正規化された実行時間が前記累積された歴実行時間より大きい場合、前記ステップ（８）の後に、コンデンサパックの前記現在の動作電圧を低減するステップ（１０）とをさらに含み、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）から（１０）と繰り返すステップを含む、
請求項１７に記載の方法。
【請求項１９】
前記ステップ（２）に先立って、コンデンサパックの前記累積された歴実行時間を初期化するステップ（１１）と、
前記時間間隔を前記累積された歴実行時間に追加するステップ（１２）とをさらに含み、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）から（１０）と、（１２）とを繰り返すステップを含む、
請求項１８に記載の方法。
【請求項２０】
前記累積された正規化された実行時間が、コンデンサパックの累積された歴実行時間より大きいかどうかを判断するステップ（７）と、
前記累積された正規化された実行時間が前記累積された歴実行時間より大きい場合、コンデンサパックの動作電圧を低減するステップ（８）とをさらに含み、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）と、（８）とを繰り返すステップを含む、
請求項１に記載の方法。
【請求項２１】
記憶制御装置に対する主電源の損失の間、前記ステップ（８）を実行することに先立って、コンデンサパックが、前記低減された動作電圧で現在の前記サイズを有する書込みキャッシュを非揮発性メモリにバックアップするために記憶制御装置によって要求されるエネルギー量を蓄積するための容量を有することになるかどうかを判断するステップ（９）と、
コンデンサパックが前記容量を有さないことになる場合、前記ステップ（８）を実行するのに先立って、前記書込みキャッシュの前記サイズをコンデンサパックが前記低減された動作電圧で前記容量を有することになる新しいサイズに低減するステップ（１０）とをさらに含み、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）から（１０）とを繰り返すステップを含む、
請求項２０に記載の方法。
【請求項２２】
前記ステップ（２）に先立って、コンデンサパックの前記累積された歴実行時間を初期化するステップ（９）と、
前記時間間隔を前記累積された歴実行時間に追加するステップ（１０）とをさらに含み、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）から（８）と、（１０）とを繰り返すステップを含む、
請求項２０に記載の方法。
【請求項２３】
前記温度が所定の閾値を超えたことを検出するステップをさらに含み、
前記累積された正規化された実行時間が、コンデンサパックの累積された歴実行時間より大きいかどうかを前記判断することが、前記温度が前記所定の閾値を超えたことを前記検出するステップに応答して実行される、
請求項２０に記載の方法。
【請求項２４】
記憶制御装置に対する主電源の損失の間、記憶制御装置に供給するためのエネルギーを蓄積するためのコンデンサパックと、
コンデンサパックの温度を検出するための、前記コンデンサパックに結合された温度センサと、
前記温度センサに結合されたＣＰＵであって、
コンデンサパックの累積された正規化された実行時間を初期化するステップ（１）と、
その全体にわたって、コンデンサパックが動作される時間間隔の間、前記センサから前記温度を受信するステップ（２）と、
寿命の間、前記温度で動作された場合、その全体にわたって、コンデンサパックが少なくとも所定のエネルギー量を蓄積するための容量を有することになる前記寿命を判断するステップ（３）と、
前記時間間隔を前記寿命に対するコンデンサパックの保証寿命の比率によって正規化するステップ（４）と、
前記正規化された時間間隔を前記累積された正規化された実行時間に追加するステップ（５）と、
記憶制御装置の動作の間にステップ（２）から（５）を繰り返すステップ（６）とを行うように構成されたＣＰＵと
を含む、記憶制御装置。
【請求項２５】
対応する複数の温度でコンデンサパックの複数の経験的に判断された寿命値のデータベースを記憶するための、前記ＣＰＵに結合されたメモリをさらに含み、
前記ＣＰＵが、前記温度を使用して前記データベース内の前記寿命を調べることによって、前記寿命を判断する、
請求項２４に記載の制御装置。
【請求項２６】
前記ＣＰＵが、前記温度の所定の関数として前記寿命を計算することによって前記寿命を判断する、請求項２４に記載の制御装置。
【請求項２７】
前記ＣＰＵが、
前記ステップ（３）に先立って、前記時間間隔の間、コンデンサパックの電圧を検出するステップ（７）を行うようにさらに構成され、
前記ステップ（３）が、前記寿命の間、前記温度と前記電圧とで動作された場合、その全体にわたって、コンデンサパックが少なくとも前記所定のエネルギー量を蓄積するための容量を有することになる前記寿命を判断するステップを含み、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）とを繰り返すステップを含む、請求項２４に記載の制御装置。
【請求項２８】
対応する複数の温度と複数の電圧とでコンデンサパックの複数の経験的に判断された寿命値のデータベースを記憶するための、前記ＣＰＵに結合されたメモリをさらに含み、
前記ＣＰＵが、前記温度と前記電圧とを使用して前記データベース内の前記寿命を調べることによって、前記寿命を判断する、
請求項２７に記載の制御装置。
【請求項２９】
前記ＣＰＵが、前記温度および前記電圧の関数として前記寿命を計算することによって、前記寿命を判断する、請求項２７に記載の制御装置。
【請求項３０】
前記ＣＰＵが、コンデンサパックの前記累積された正規化された実行時間をゼロに初期化する、請求項２４に記載の制御装置。
【請求項３１】
前記ＣＰＵが、コンデンサパックの前記累積された正規化された実行時間をコンデンサパックの許容仕様に基づく時間量に初期化する、請求項２４に記載の制御装置。
【請求項３２】
前記ＣＰＵが、コンデンサパックの前記累積された正規化された実行時間をコンデンサパックの歴年齢に基づく時間量に初期化する、請求項２４に記載の制御装置。
【請求項３３】
前記時間間隔が所定期間を含む、請求項２４に記載の制御装置。
【請求項３４】
前記所定期間が、記憶制御装置が主電源によって電力供給されている第１の所定期間を含み、前記所定期間が、記憶制御装置がコンデンサパックによって電力供給されている第２の所定期間を含み、前記第２の所定期間が前記第１の所定期間未満である、請求項３３に記載の制御装置。
【請求項３５】
前記ＣＰＵが、
前記保証寿命に対する前記累積された正規化された実行時間の比率に基づいて、その元の静電容量に対するコンデンサパックの静電容量低下割合を計算するステップ（７）を行うようにさらに構成され、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）とを繰り返すステップを含む、請求項２４に記載の制御装置。
【請求項３６】
前記ＣＰＵが、
コンデンサパックの前記静電容量低下割合を記憶制御装置のユーザに表示するステップ（８）を行うようにさらに構成され、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）と、（８）とを繰り返すステップを含む、請求項３５に記載の制御装置。
【請求項３７】
前記ステップ（７）が、コンデンサパックの寿命末期の静電容量低下割合を前記比率で乗じるステップを含む、請求項３５に記載の制御装置。
【請求項３８】
コンデンサパックの前記寿命末期の静電容量低下割合が、記憶制御装置に対する主電源の損失の間、コンデンサパックが、通常の動作電圧で少なくとも記憶制御装置が書込みキャッシュを非揮発性メモリにバックアップするために十分なエネルギーを蓄積するための容量を有する、コンデンサパックの静電容量低下割合を含む、請求項３６に記載の制御装置。
【請求項３９】
書込みキャッシュデータをキャッシュするための書込みキャッシュを含む、前記コンデンサパックに結合された揮発性メモリであって、前記書込みキャッシュがサイズを有する揮発性メモリと、
前記揮発性メモリに結合された非揮発性メモリとをさらに含み、
前記所定のエネルギー量が、記憶制御装置に対する主電源の損失の間、前記書込みキャッシュデータを前記非揮発性メモリにバックアップするために記憶制御装置によって要求されるエネルギー量を含む、
請求項２４に記載の制御装置。
【請求項４０】
書込みキャッシュデータをキャッシュするための書込みキャッシュを含む、前記コンデンサパックに結合された揮発性メモリであって、前記書込みキャッシュが前記ＣＰＵによって動的に判断されたサイズを有する揮発性メモリと、
前記揮発性メモリに結合された非揮発性メモリとをさらに含み、
前記ＣＰＵが、
記憶制御装置に対する主電源の損失の間、コンデンサパックが、現在の動作電圧で現在の前記サイズを有する前記書込みキャッシュを前記非揮発性メモリにバックアップするために記憶制御装置によって要求されるエネルギー量を蓄積するための容量を有するかどうかを判断するステップ（７）と、
コンデンサパックが前記容量を有さない場合、前記書込みキャッシュの前記サイズをコンデンサパックが前記容量を有することになる新しいサイズに低減するステップ（８）とを行うようにさらに構成され、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）から（８）とを繰り返すステップを含む、
請求項２４に記載の制御装置。
【請求項４１】
前記ＣＰＵが、
前記累積された正規化された実行時間が、コンデンサパックの累積された歴実行時間より大きいかどうかを判断するステップ（９）と、
前記累積された正規化された実行時間が前記累積された歴実行時間より大きい場合、前記ステップ（８）の後に、コンデンサパックの前記現在の動作電圧を低減するステップ（１０）とを行うようにさらに構成され、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）から（１０）とを繰り返すステップを含む、請求項４０に記載の制御装置。
【請求項４２】
前記ＣＰＵが、
前記ステップ（２）に先立って、コンデンサパックの前記累積された歴実行時間を初期化するステップ（１１）と、
前記時間間隔を前記累積された歴実行時間に追加するステップ（１２）とを行うようにさらに構成され、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）から（１０）と、（１２）とを繰り返すステップを含む、請求項４１に記載の制御装置。
【請求項４３】
前記ＣＰＵが、
前記累積された正規化された実行時間が、コンデンサパックの前記累積された歴実行時間より大きいかどうかを判断するステップ（７）と、
前記累積された正規化された実行時間が前記累積された歴実行時間より大きい場合、コンデンサパックの動作電圧を低減するステップ（８）とを行うようにさらに構成され、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）と、（８）とを繰り返すステップを含む、請求項２４に記載の制御装置。
【請求項４４】
書込みキャッシュデータをキャッシュするための書込みキャッシュを含む、前記コンデンサパックに結合された揮発性メモリであって、前記書込みキャッシュが前記ＣＰＵによって動的に判断されたサイズを有する揮発性メモリと、
前記揮発性メモリに結合された非揮発性メモリとをさらに含み、
前記ＣＰＵが、
記憶制御装置に対する主電源の損失の間、前記ステップ（８）を実行するのに先立って、コンデンサパックが、前記低減された動作電圧で現在の前記サイズを有する前記書込みキャッシュを前記非揮発性メモリにバックアップするために記憶制御装置によって要求されるエネルギー量を蓄積するための容量を有することになるかどうかを判断するステップ（９）と、
コンデンサパックが前記容量を有さないことになる場合、前記ステップ（８）を実行するのに先立って、前記書込みキャッシュの前記サイズをコンデンサパックが前記低減された動作電圧で前記容量を有することになる新しいサイズに低減するステップ（１０）とを行うようにさらに構成され、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）から（１０）とを繰り返すステップを含む、
請求項４３に記載の制御装置。
【請求項４５】
前記ＣＰＵが、
前記ステップ（２）に先立って、コンデンサパックの前記累積された歴実行時間を初期化するステップ（９）と、
前記時間間隔を前記累積された歴実行時間に追加するステップ（１０）とを行うようにさらに構成され、
前記ステップ（６）が、記憶制御装置の動作の間に前記ステップ（２）から（５）と、（７）から（８）と、（１０）とを繰り返すステップを含む、請求項４３に記載の制御装置。
【請求項４６】
前記ＣＰＵが、
前記温度が所定の閾値を超えたことを検出するステップを行うように構成され、
前記温度が前記所定の閾値を超えたことを前記検出するステップに応答して、前記ＣＰＵが、前記累積された正規化された実行時間が、コンデンサパックの累積された歴実行時間より大きいかどうかを判断する、請求項４３に記載の制御装置。
【請求項４７】
記憶制御装置に対する主電源の損失の間、記憶制御装置に供給するためにエネルギーを蓄積するためのコンデンサパックと、
対応する複数の温度と複数の動作電圧とでコンデンサパックの複数の経験的に判断された寿命値のデータベースを記憶するためのメモリと、
コンデンサパックの温度を検出するための、前記コンデンサパックに結合された温度センサと、
コンデンサパックの動作電圧を検出するための、前記コンデンサパックに結合された電圧センサと、
前記メモリと、前記温度センサと、前記電圧センサとに結合されたＣＰＵであって、
コンデンサパックの累積された正規化された実行時間を初期化するステップ（１）と、
その全体にわたって、コンデンサパックが動作される時間間隔の間、前記温度センサから前記温度と、前記電圧センサから前記電圧とを受信するステップ（２）と、
寿命の間、前記温度と前記動作電圧とで動作された場合、その全体にわたって、コンデンサパックが少なくとも所定のエネルギー量を蓄積するための容量を有することになる前記寿命を判断するステップであって、前記ＣＰＵが、前記温度と前記動作電圧とを使用して前記データベース内の前記寿命を調べることによって、前記寿命を判断するステップ（３）と、
前記時間間隔を前記寿命に対するコンデンサパックの保証寿命の比率によって正規化するステップ（４）と、
前記正規化された時間間隔を前記累積された正規化された実行時間に追加するステップ（５）と、
記憶制御装置の動作の間にステップ（２）から（５）を繰り返すステップを行うように構成されたＣＰＵと
を含む、記憶制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、参照として本明細書に組み込まれる２００５年８月４日に出願された米国仮出願第６０／７０５，９９７号の優先権を主張する。
【０００２】
本出願は、以下の米国非仮出願に関する。
【表１】
2009503723.tif 000003
【０００３】
本発明は、一般に、記憶制御装置内で再充電可能なバックアップエネルギー供給としてコンデンサパックを使用する分野に関し、より詳細には、コンデンサパックの寿命を監視することに関する。
【背景技術】
【０００４】
安価なディスクの冗長アレイ（ＲＡＩＤ）システムは、今日、大部分のコンピュータシステムにおいて大容量記憶システムの支配的形態になっており、高性能、大量の記憶、ならびに／またはトランザクション処理、銀行業務、医療用途、データベースサーバ、インターネットサーバ、メールサーバ、科学的コンピューティング、およびその他のアプリケーションのホストなど、高いデータ可用性を要求するアプリケーションで使用される。ＲＡＩＤ制御装置は、コンピュータオペレーティングシステムに単一の論理ディスクドライブ（または複数の論理ディスクドライブ）を提示するような方法で複数の物理ディスクドライブのグループを制御する。ＲＡＩＤ制御装置は、性能とデータ可用性とを高めるために、データストライピング（ｄａｔａ  ｓｔｒｉｐｉｎｇ）技術とデータ待ち時間技術とを用いる。
【０００５】
特に、トランザクション処理または大きなデータストリームのリアルタイムのデータ収集など、ある種のアプリケーションにおけるＲＡＩＤ制御装置の重要な特徴は、高速の書込み性能を提供することである。特に、コンピュータシステムの性能全体は、ＲＡＩＤ制御装置の書込み待ち時間が比較的小さい場合、大きく改善され得る。書込み待ち時間は、ＲＡＩＤ制御装置がコンピュータシステムからの書込み要求を完成するのにかかる時間である。
【０００６】
多くのＲＡＩＤ制御装置は、ディスクドライブからユーザデータをキャッシュするため比較的大きなキャッシュメモリを含む。要求されるデータがキャッシュメモリ内に存在する場合、ＲＡＩＤ制御装置はディスクドライブからのデータを読み取る長い動作を実行する必要がないため、データをキャッシュすることは、ＲＡＩＤ制御装置が迅速にデータをコンピュータシステムに戻すことを可能にする。キャッシュメモリはまた、一般にポステッドライト（ｐｏｓｔｅｄ−ｗｒｉｔｅ）動作と呼ばれるものを可能にすることによって、書込み要求待ち時間を低減するために用いられることも可能である。ポステッドライト動作では、ＲＡＩＤ制御装置は、コンピュータシステムによって指定されたデータをコンピュータシステムからＲＡＩＤ制御装置のキャッシュメモリに読み取り、次いで、ＲＡＩＤ制御装置がまだデータをディスクドライブに書き込んでいないにもかかわらず、書込み要求が完成したことをコンピュータシステムに速やかに通知する。一部の冗長なＲＡＩＤレベルでは、システム書込み要求を果たすために、ディスクドライブに対する読取り／修正／書込み（ｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ）動作が実行されなければならないため、ポステッドライトは、特にＲＡＩＤ制御装置において有用である。すなわち、指定されたシステムデータがディスクドライブに書き込まれなければならないだけでなく、ユーザデータと冗長データとがディスクに書き込まれることが可能である前に、ディスクドライブの一部も読み取られなければならない可能性があり、ポステッドライトの利点がない場合、ＲＡＩＤ制御装置の書込み待ち時間を非ＲＡＩＤ制御装置よりもより長くする可能性がある。
【０００７】
しかし、ポステッドライト動作は、電源障害が発生した場合、システムをデータ損失に対して脆弱にする。これは、キャッシュメモリは、電源が失われ、データがまだディスクドライブに書き込まれていない場合、ユーザデータを損失する揮発性メモリであるためである。
【０００８】
この問題を解決するために、一部のＲＡＩＤ制御装置は、主電源が失われた場合、キャッシュメモリに電源を供給し続けるためにバッテリを含む。バッテリはユーザデータが失われることになる可能性を大きく減らすが、バッテリ内に記憶されるエネルギーは限りあるため、主電源が回復され得る前にバッテリエネルギーが切れることになる可能性は依然として存在し、この場合、ユーザデータは失われることになる。バッテリがキャッシュメモリに電源を供給しなければならない最低期間は、ＲＡＩＤシステムのユーザの間で異なる。しかし、電源障害が週末に発生した場合、多くの消費者は少なくとも７２時間を必要とする。
【０００９】
しかし、このアプリケーションでのバッテリの使用に関して、いくつかのよく知られた制限が存在する。第１に、バッテリはＲＡＩＤ制御装置の比較的高価な構成要素である。第２に、多くの関連バッテリ技術の場合、バッテリが充電を維持する能力は、一般に、ＲＡＩＤ制御装置の期待される寿命に満たない２〜３年以内に劣化し始める。その結果、ＲＡＩＤ制御装置は、現場交換可能なユニットとして、また多くの場合、ホットプラグ可能な（ｈｏｔ−ｐｌｕｇｇａｂｌｅ）現場交換可能なユニットとして、バッテリを用いて設計されなければならない。これは、ＲＡＩＤ制御装置にさらなる費用を追加する。第３に、その範囲外で、その寿命と性能が著しく劣化するバッテリの動作温度範囲は比較的小さい。第４に、主電源の機能停止によりバッテリが使い果たされた後で、ＲＡＩＤ制御装置は、バッテリが再充電されるまで性能の低いライトスルー（ｗｒｉｔｅ−ｔｈｒｏｕｇｈ）キャッシュモードで動作しなければならず、バッテリの再充電時間は比較的長い。第５に、キャッシュメモリの容量が増えると、主電源の機能停止中にバッテリが提供しなければならないエネルギー量も増える。最新のバッテリエネルギーの密度を考えると、要求されるエネルギー量を提供するために必要なバッテリのサイズはＲＡＩＤ制御装置内の利用可能な空間を越える可能性がある。
【００１０】
この問題を解決するために、２００５年９月１４日に出願された米国特許出願第１１／２２６、８２５号は、コンデンサパックまたはバッテリと、フラッシュメモリなどの不揮発性メモリとを含む記憶制御装置について説明する。主電源が失われる場合、コンデンサパックまたはバッテリは、制御装置が書込みキャッシュデータを、不揮発性メモリにバックアップまたはフラッシュするために、その蓄積されたエネルギーから電力を供給する。したがって、コンデンサパックまたはバッテリが使い果たされ、主電源が回復されるまでもはや電力を供給できない場合でさえ、書込みキャッシュデータは不揮発性メモリ内に維持され、その結果、主電源が回復され、制御装置が再起動されると、書込みキャッシュデータは書込みキャッシュに回復されて、後にディスクドライブにフラッシュされる。
【００１１】
バックアップ電力を供給するために、再充電可能なエネルギー源としてバッテリまたはコンデンサパックを使用するかどうかにかかわらず、エネルギー源がバックアップ動作を実行するために十分なエネルギーを蓄積する容量を持ち続けることを確実にするために、エネルギー源を監視することが重要である。そうでなければ、書込みキャッシュデータは失われる可能性がある。エネルギー源が、バックアップ動作を実行するために電源を供給するためなど、その意図された機能を実行するために十分なエネルギーを蓄積するための容量をもはや持たない場合、その寿命末期に達したまたはその寿命が終了したと言われる。所与のバッテリ技術では、バッテリの典型的な寿命は比較的一定であるため、エネルギー源がバッテリである場合、バッテリの寿命を監視することは比較的簡単である。例えば、書込みキャッシュ記憶制御装置などのアプリケーションに一般に使用されるリチウムイオンバッテリの寿命は、およそ３年である。その結果、バッテリの残りの寿命は、リアルタイムクロック回路を経由してなど、バッテリが存在する実際の実時間、または暦時間を単に記録することによって監視されることが可能である。
【００１２】
バッテリと対照的に、コンデンサの寿命は主として、その温度、動作電圧、極性変化、および過剰電流引込みの非線形機能であり、寿命はこれらの要素に基づいて大いに異なる可能性がある。例えば、所与の動作電圧での所与のアプリケーションにおいて、コンデンサは、摂氏１０度の動作温度で１００万時間ほどの長い寿命を有する可能性があるが、同じコンデンサは摂氏８０度の動作温度で１０００時間ほどの短い寿命を有する可能性がある。同様に、所与の温度で、コンデンサは、１．８ボルトの動作電圧で、２．５ボルトの動作電圧での寿命のほぼ３倍の寿命を有する可能性がある。したがって、コンデンサ寿命の可変性は書込みキャッシュ記憶制御装置にとってデータ損失の容認できないクスをもたらす可能性があるため、バッテリ寿命を監視するために使用される簡単なリアルタイムのクロック技術は、多くのアプリケーションでコンデンサには不十分である。
【００１３】
コンデンサの（その静電容量はコンデンサが蓄積できるエネルギー量を判断するため、事実上のその寿命の尺度（ｍｅａｓｕｒｅ）である）静電容量を測定するためにコンデンサ製造会社によって奨励される方法は、コンデンサを放電し、次いで再充電し、電流引込みと再充電に必要な時間とを測定し、測定値から静電容量を計算することである。しかし、この方法は、主電源の損失が発生した場合、バックアップ動作を実行できないため、書込みキャッシュデータの潜在的な損失を回避するために、放電／再充電プロセスの間に書込みキャッシュがライトスルーモードに設定されることを要求することになるため、書込みキャッシュ記憶制御装置のアプリケーションにとって望ましくない。
【発明の開示】
【発明が解決しようとする課題】
【００１４】
したがって、必要とされるのは、コンデンサパックの実時間の存在を監視することまたはコンデンサパックを放電および再充電することによって静電容量を測定すること以外にコンデンサパックの寿命を判断する代替方法である。
【００１５】
さらに、バッテリと異なり、コンデンサパックは現場交換可能ではなく、記憶制御装置の製造会社は、記憶制御装置の消費者、またはユーザに、コンデンサパックの寿命を保証する場合がある。したがって、コンデンサパックの寿命の大きな可変性を考えると、必要とされるのは、コンデンサパックが記憶制御装置の製造会社がユーザに保証した寿命に達する可能性を高める方法である。
【課題を解決するための手段】
【００１６】
本発明は、動作間隔の間に記憶制御装置のコンデンサパックの温度および電圧をサンプリングし、サンプリングされた温度および電圧で、コンデンサパックの知られている寿命に対するコンデンサパックの保証寿命の比率を使用して、この間隔を正規化する。コンデンサパックが通常の動作電圧で所定のエネルギー量を蓄積するために十分な容量をもはや持たない場合、コンデンサパックはその有効期限、または寿命の末期に達している。一実施形態では、保証寿命は、主電源の損失の間、揮発性書込みキャッシュを、フラッシュメモリなどの非揮発性メモリにバックアップするために記憶制御装置に電源を供給するために要求されるエネルギー量に基づく。記憶制御装置は、記憶制御装置が動作する一連の間隔全体にわって正規化された間隔を累積する。累積された正規化された動作間隔は、保証寿命に対するコンデンサパックの年齢の有効な尺度である。コンデンサパックの静電容量低下はまた、累積された正規化された動作間隔と保証寿命とに応じても計算される。一実施形態では、知られている寿命は、サンプリングされた温度と電圧とによって指標付けされる、経験的に得られた寿命のデータベース内で調べられる。別の実施形態では、知られている寿命は、温度および電圧の経験的に得られた関数を使用して計算される。一実施形態では、電圧が固定され、温度だけが知られている寿命を得るために使用される。
【００１７】
一態様では、本発明は、記憶制御装置内のコンデンサパックの累積された正規化された実行時間を監視するための方法を提供する。方法は、コンデンサパックの累積された正規化された実行時間を初期化するステップを含む。方法は、累積された正規化された実行時間を初期化した後に、その全体にわたって、コンデンサパックが動作される時間間隔の間、コンデンサパックの温度を検出するステップも含む。方法は、寿命の間にその温度で動作される場合、その全体にわたって、コンデンサパックが少なくとも所定のエネルギー量を蓄積するための容量を有することになる寿命を判断するステップも含む。方法は、寿命に対するコンデンサパックの保証寿命の比率によって時間間隔を正規化するステップも含む。方法は、正規化された時間間隔を累積された正規化された実行時間に追加するステップも含む。方法は、記憶制御装置の動作中に、検出するステップと、判断するステップと、正規化するステップと、追加するステップとを繰り返すステップも含む。
【００１８】
別の態様では、本発明は、記憶制御装置を提供する。制御装置は、制御装置に対する主電源の損失の間に制御装置に供給するためのエネルギーを蓄積するコンデンサパックを含む。制御装置は、コンデンサパックの温度を検出する、コンデンサパックに結合された温度センサも含む。制御装置は、温度センサに結合されたＣＰＵも含む。ＣＰＵは、コンデンサパックの累積された正規化された実行時間を初期化する。ＣＰＵはまた、その全体にわたって、コンデンサパックが動作される時間間隔の間にセンサから温度を受信する。ＣＰＵはまた、その寿命の間にその温度で動作される場合、その全体にわたって、コンデンサパックが少なくとも所定のエネルギー量を蓄積するための容量を有することになる寿命を判断する。ＣＰＵはまた、寿命に対するコンデンサパックの保証寿命の比率によって時間間隔を正規化する。ＣＰＵはまた、正規化された時間間隔を累積された正規化された実行時間に追加する。ＣＰＵは、記憶制御装置の動作中に、温度を受信するステップと、寿命を判断するステップと、間隔を正規化するステップと、正規化された間隔を累積された正規化された実行時間に追加するステップとを繰り返す。
【発明を実施するための最良の形態】
【００１９】
次に図１を参照すると、本発明によるＲＡＩＤ制御装置１００を例示するブロックダイヤグラムが示される。一実施形態では、ＲＡＩＤ制御装置１００は、高いデータ可用性を提供するための１対のアクティブ／アクティブ冗長的耐障害性ＲＡＩＤ制御装置のうちの１つであってよい。本明細書で説明されるように、ポステッドライトデータを揮発性メモリから非揮発性メモリにフラッシュできないなど、１つのＲＡＩＤ制御装置１００の障害が発生した場合、システムは別のＲＡＩＤ制御装置１００にフェイルオーバ（ｆａｉｌｏｖｅｒ）できる。ＲＡＩＤ制御装置１００は、主電源の損失の間、そのメモリ制御装置が迅速かつ効果的にポステッドライトデータをキャッシュメモリから非揮発性メモリにフラッシュすることを可能にするために、ＲＡＩＤ制御装置１００回路の選択された部分に電力を供給するための１つまたは複数のコンデンサを含む。ＲＡＩＤ制御装置１００は、コンデンサの温度と電圧とを定期的にサンプリングし、各サンプリングされた温度および電圧の値の組合せに関して、経験的に収集された寿命情報に基づいてコンデンサの動作間隔を正規化できるように、寿命特徴情報を使用してコンデンサの有効年齢を適応的に計算すると有利である。さらに、ＲＡＩＤ制御装置１００は、コンデンサがユーザに保証された寿命に達することを確実にするために、コンデンサの有効年齢に基づいて、温度の上昇に応答してなど、コンデンサの動作電圧を動的に調整する。最後に、制御装置が、新たに調整された電圧でバックアップ動作を実行するために十分なエネルギーを蓄積できないことになるようにコンデンサの静電容量が低下したことを判断する場合、制御装置は書込みキャッシュサイズを、コンデンサがバックアップ動作を実行するために十分なエネルギーを蓄積するための容量を有するサイズに動的に減らす。
【００２０】
ＲＡＩＤ制御装置１００は、ホストコンピュータとインターフェースをとるホストインターフェース１１８を含む。一実施形態では、ＲＡＩＤ制御装置１００は、ＰＣＩ、ＰＣＩ−Ｘ、コンパクトＰＣＴ、ＰＣＩエクスプレス、ＰＣＩ−Ｘ２、ＥＩＳＡ、ＶＥＳＡ、ＶＭＥ（登録商標）、ＲａｐｉｄＩＯ（登録商標）、ＡＧＰ、ＩＳＡ、３ＧＩＯ、ハイパートランスポート、フューチャバス、マルチバス、またはその他のローカルバスなど、ホストコンピュータシステムのローカルＩ／Ｏバスにプラグで接続される、またはローカルＩ／Ｏバスに組み込まれる制御装置などの局所的なバスベースの制御装置である。この種類の実施形態では、ホストインターフェース１１８は、ローカルバスタイプのローカルバスインターフェースを含む。別の実施形態では、ＲＡＩＤ制御装置１００は、ＲＡＩＤ制御装置１００にＩ／Ｏ要求を発行する、ホストコンピュータと分離された筐体（ｅｎｃｌｏｓｕｒｅ）内の独立型の制御装置である。例えば、ＲＡＩＤ制御装置１００は、記憶エリアネットワーク（ＳＡＮ）の一部であってよい。この種類の実施形態では、ホストインターフェース１１８は、ファイバチャネル、イーサネット（登録商標）、インフィニバンド、ＳＣＳＩ、ＨＩＰＰＩ、トークンリング、アークネット、ＦＤＤＩ、ローカルトーク、ＥＳＣＯＮ、ＦＩＣＯＮ、ＡＴＭ、ＳＡＳ、ＳＡＴＡ、ｉＳＣＩなど、様々なインターフェースを含んでよい。
【００２１】
ＲＡＩＤ制御装置１００は、テープドライブ、固定ディスク（ＳＳＤ）、およびＣＤＲＯＭドライブまたはＤＶＤドライブなどの光記憶装置を含むがこれらに限定されない、ディスクドライブまたはその他の大容量記憶装置と接続するためのディスクインターフェース１６６も含む。ディスクドライブはユーザデータを記憶する。ディスクインターフェース１１６は、以下のインターフェースを含んでよいが、これらに限定されない：ファイバチャネル、スモールコンピュータシステムインターフェース（ＳＣＳＩ）、アドバンスドテクノロジー・アタッチメント（ＡＴＡ）、シリアルアタッチドＳＣＳＩ（ＳＡＳ）、シリアルアドバンスドテクノロジー・アタッチメント（ＳＡＴＡ）、イーサネット（登録商標）、インフィニィバンド、ＨＩＰＰＩ、ＥＳＣＯＮ、ｉＳＣＳＩ、またはＦＩＣＯＮ。ＲＡＩＤ制御装置１００は、ホストコンピュータから受信されたＩ／Ｏ要求に応答してディスクドライブからデータを読み取り、またディスクドライブにデータを書き込む。
【００２２】
ＲＡＩＤ制御装置１００は、揮発性キャッシュメモリ１０４、もしくはキャッシュメモリ１０４、または揮発性メモリ１０４も含む。揮発性キャッシュメモリ１０４は、書込みキャッシュ１５６と読取りキャッシュ１５８とを含む。揮発性キャッシュメモリ１０４は、電力が供給されていない場合、そのデータを記憶しなくなるため、揮発性である。一実施形態では、揮発性キャッシュメモリ１０４は、セルフリフレッシュモードを含むダブルデータレートシンクロナス（ｄｏｕｂｌｅ−ｄａｔａ−ｒａｔｅ  ｓｙｎｃｈｒｏｎｏｕｓ）ダイナミックランダムアクセスメモリ（ＤＤＲ  ＳＤＲＡＭ）を含む。ＳＤＲＡＭがセルフリフレッシュモードに設定される場合、ＳＤＲＡＭは、セルフリフレッシュモードで動作していない場合よりも少ない電力を消費する。別の実施形態では、揮発性キャッシュメモリ１０４は、スタティックランダムアクセスメモリ（ＳＲＡＭ）を含むがこれに限定されない、他の種類の揮発性メモリを含んでよい。揮発性キャッシュメモリ１０４の量は大きくてもよい。揮発性キャッシュメモリ１０４が、５１２ＭＢ、１ＧＢ、および２ＧＢを含む実施形態が考えられる。しかし、ＲＡＩＤ制御装置１００上に、より多くのまたはより少ない揮発性キャッシュメモリ１０４が含まれる他の実施形態が考えられる。
【００２３】
揮発性キャシュメモリ１０４は、ホストとディスクとの間で転送されるデータをバッファするためにＲＡＩＤ制御装置１００によって用いられる。ホストが、データがディスクに書き込まれることを要求する場合、ＲＡＩＤ制御装置１００は、ホストインターフェース１１８を経由してホストから揮発性キャッシュメモリ１０４の書込みキャッシュ１５６にデータを転送し、後で、ディスクインターフェース１１６を経由して書込みキャッシュ１５６からディスクにデータを転送する。逆に、ホストが、データがディスクから読み取られることを要求する場合、ＲＡＩＤ制御装置１００は、ディスクインターフェース１１６を経由してディスクから揮発性キャッシュメモリ１０４の読取りキャッシュ１５８にデータを転送し、後で、ホストインターフェース１１８を経由して読取りキャッシュ１５８からホストにデータを転送する。
【００２４】
前述のように、ホストが、データがディスクに書き込まれることを要求する場合、ＲＡＩＤ制御装置１００は、ホストインターフェース１１８を経由してホストから揮発性キャッシュメモリ１０４にデータを転送し、後で、ディスクインターフェース１１６を経由して揮発性キャッシュメモリ１０４からディスクにデータを転送する。通常、ＲＡＩＤ制御装置１００は、データが実際にディスクに書き込まれるまで、書込み要求が完了したことをホストに示さない。しかし、そのように構成される場合、ＲＡＩＤ制御装置１００は、揮発性キャッシュメモリ１０４内にデータをキャッシュし、データが実際にディスクに書き込まれる前に、書込み要求が完了したことをホストに示し、次いで、後で、ディスクにデータを書き込むこと、またはフラッシュすることが可能である。この動作は、書込みキャッシングと呼ばれ、またはポステッドライト動作と呼ばれる場合もある。ポステッドライト動作に関連するデータは、ポステッドライトデータ、または書込みキャッシュデータと呼ばれる。すなわち、ポステッドライトデータは、ディスクに書き込まれていないが、ＲＡＩＤ制御装置１００が、書込み動作が完了したことをホストに伝えていると考えられる、揮発性キャッシュメモリ１０４内に記憶されたデータである。加えて、本明細書で述べられるポステッドライトデータは、データが書き込まれなければならない論理ブロックアドレスおよびディスクドライブユニット番号を含むがこれに限定されない、データをディスクに書き込むために必要な制御情報、およびデータが、やはりディスクに書き込まれなければならないポステッドライトデータに基づいて冗長データが生成されることを要求するＲＡＩＤレベルを有するＲＡＩＤアレイの一部であるかどうかを指定する情報を参照するために使用されるメタデータを含んでよい。
【００２５】
揮発性キャッシュメモリ１０４は、データの読出しキャッシングを実行するために、すなわち、同じデータのこれまでの読取り要求のために、要求されるデータが揮発性キャッシュメモリ１０４内にすでに存在する場合、ディスクからではなく、揮発性キャッシュメモリ１０４からホストに要求されるデータを提供するためにＲＡＩＤ制御装置１００によって使用されてもよい。最後に、ＲＡＩＤ制御装置１００は、ディスクに書き込むために生成された冗長ＲＡＩＤデータをバッファリングするために揮発性キャッシュメモリ１０４を使用してもよい。
【００２６】
ＲＡＩＤ制御装置１００は、前述のように、ディスクドライブとホストの間のデータの転送を制御する目的で、プログラム命令を取り出して実行するためにＣＰＵサブシステム１１２も含む。ＣＰＵサブシステム１１２は、例えば、ｘ８６アーキテクチャプロセッサならびに、一般に、ノースブリッジすなわちメモリ制御ハブ（ＭＣＨ）、およびＩＳＡバスまたはＰＣＩファミリバスに対するインターフェースなどのＩ／Ｏバスインターフェースを含むサウスブリッジすなわちＩ／Ｏ制御ハブ（ＩＣＨ）と呼ばれるものなど、プロセッサおよびチップセットを含むがこれらに限定されない、記憶されたプログラムを実行できる任意のプロセッサを含んでよい。一実施形態では、ＣＰＵサブシステム１１２は、統合されたノースブリッジとＡＬｉ  Ｍ１５６３Ｓサウスブリッジとを含むＴｒａｎｓｍｅｔａ（登録商標）ＴＭ８８００プロセッサを含む。別の実施形態では、ＣＰＵサブシステム１１２は、Ｉｎｔｅｌ（登録商標）  Ｃｅｌｅｒｏｎ（登録商標）  Ｍプロセッサ、ＭＣＨおよびＩＣＨを含む。別の実施形態では、ＣＰＵサブシステム１１２は、統合されたノースブリッジとＡｌｉ  Ｍ１５６３Ｓサウスブリッジとを有するＡＭＤ（登録商標）  Ｍｏｂｉｌｅ  Ｓｅｍｐｒｏｎ（登録商標）プロセッサを含む。一実施形態では、ＣＰＵサブシステム１１２はまた、マイクロプロセッサによって取り出されて、実行されたプログラム命令を記憶するためのＲＡＭ、およびマイクロプロセッサによる実行のために圧縮されてプログラムＲＡＭに書き込まれるプログラム命令を非揮発性の方法で記憶するための、ＣＰＵ１１２サブシステムに結合されたフラッシュメモリ１０６も含む。一実施形態では、フラッシュメモリ１０６は、以下で説明されるように、非揮発性メモリ１０８に対するキャッシュメモリ１０４の成功裏のフラッシュを示すために（以下で説明される）非揮発性メモリ１０８に書き込まれる署名と比較するための署名などの情報も記憶する。
【００２７】
ＣＰＵサブシステム１１２は、ホストインターフェース１１８からホストコンピュータＩ／Ｏ要求を受信して、要求を処理する。要求を処理することは、様々な機能を含む可能性がある。例えば、ホストＩ／Ｏ要求は、論理ブロック番号と、冗長アレイに転送されることになる、または冗長アレイから転送されることになるデータのブロック数とを指定する。しかし、これらの論理ブロックおよびブロック数は、一般に、適切な物理ブロック番号および冗長アレイを含む物理ディスク上のブロック数に対応しない。したがって、ホストＩ／Ｏ要求内で指定された論理ブロック番号は、ＲＡＩＤ制御装置１００と冗長アレイを含むディスクとの間で１つまたは複数のデータ転送を実行する際に使用されることになる適切な物理ブロック番号、ブロック数、およびディスクに変換されなければならない。この変換機能は、ＣＰＵサブシステム１１２によって実行される。一実施形態では、ＣＰＵサブシステム１１２は、よく知られているＲＡＩＤ技術に従って変換を実行する。変換を実行した後で、ＣＰＵサブシステム１１２は、ディスクと揮発性キャッシュメモリ１０４の間でデータ転送を実行するようにディスクインターフェース１１６をプログラムする。加えて、ＣＰＵサブシステム１１２は、ホストコンピュータと揮発性キャッシュメモリ１０４の間でデータ転送を実行するようにホストインターフェース１１８をプログラムする。したがって、ホストコンピュータから冗長アレイにデータを書き込むためにホストＩ／Ｏ要求を処理する場合、ＣＰＵサブシステム１１２は、ホストコンピュータから揮発性キャッシュメモリ１０４にデータを転送するようにホストインターフェース１１８をプログラムする。データが揮発性キャッシュメモリ１０４内に受信された後で、ＣＰＵサブシステム１１２は、揮発性キャッシュメモリ１０４から冗長アレイを含むディスクの変換された適切な物理ブロック番号にデータを転送するようにディスクインターフェース１１６をプログラムする。逆に、冗長アレイからホストコンピュータにデータを読み取るためにホストＩ／Ｏ要求を処理する場合、ＣＰＵサブシステム１１２は、冗長アレイを含むディスクの変換された適切な物理ブロック番号から揮発性キャッシュメモリ１０４にデータを転送するようにディスクインターフェース１１６をプログラムする。データが揮発性キャッシュメモリ内に受信された後で、ＣＰＵサブシステム１１２は、揮発性キャッシュメモリ１０４からホストコンピュータにデータを転送するようにホストインターフェース１１８をプログラムする。ＣＰＵサブシステム１１２はまた、データ転送を実行するための揮発性キャッシュメモリ１０４の部分の割当てを管理する機能、特に、キャッシュ管理、すなわち、よく知られたキャッシング技術に従って、冗長アレイとホストコンピュータの間のＩ／Ｏ機能を改善するために、揮発性キャッシュメモリ１０４内でバッファされたデータのキャッシング部分のためのキャッシュメモリとして揮発性キャッシュメモリ１０４を管理する機能も実行する。一実施形態では、ＣＰＵサブシステム１１２は、例えば、ＲＡＩＤレベル５など、冗長データとしてパリティデータを用いる一定のＲＡＩＤレベルで要求されるデータの排他的ＯＲ動作を実行する。一実施形態では、ＣＰＵサブシステム１１２は、冗長パリティデータを生成する目的でユーザデータに関して排他的ＯＲ動作を実行するために、メモリ制御装置１０２内に含まれる専用の排他的ＯＲ回路をプログラムする。
【００２８】
ＲＡＩＤ制御装置１００は、不揮発性メモリ１０８も含む。非揮発性メモリ１０８は、電力が供給されていない場合、そのデータを記憶し続けるため、不揮発性である。一実施形態では、非揮発性メモリ１０８は、ＮＡＮＤフラッシュ装置を含むＣｏｍｐａｃｔ  Ｆｌａｓｈ（登録商標）メモリ装置と、ＡＴＡインターフェースを（以下で説明される）メモリ制御装置１０２に提示する制御装置とを含む。非揮発性メモリ１０８が２５６ＭＢ、５１２ＭＢ、および１ＧＢを含む実施形態が考えられる。しかし、ＲＡＩＤ制御装置１００内に１つまたは複数の非揮発性メモリ１０８が含まれる他の実施形態が考えられる。一実施形態では、非揮発性メモリ１０８は、マイクロディスクドライブを含む。非揮発性メモリ１０８は、主電源が戻った場合、ポステッドライトデータが非揮発性メモリ１０８から揮発性キャッシュメモリ１０４に回復され得るように、主電源の損失に応答して、揮発性キャッシュメモリ１０４のコンテンツ、特にポステッドライトデータをバックアップ、またはフラッシュするためにＲＡＩＤ制御装置１００によって使用される。一実施形態では、非揮発性メモリ１０８は、それに対してメモリ制御装置１０２が直接書き込むＮＡＮＤフラッシュメモリアレイを含む。アレイ内の各ＮＡＮＤフラッシュメモリ装置は、８ビット幅のデータ装置を含み、装置は、書込み速度を高め、それにより、フラッシュ動作時間をさらに減らすように、メモリ制御装置１０２が非揮発性メモリ１０８に対して１６ビット幅または３２ビット幅の書込みアクセスを実行するように構成されることが好ましい。ＣＰＵ１１２上で実行するソフトウェアは、非揮発性メモリ１０８内に、累積された正規化された実行時間１５２と、累積された歴実行時間１５４とを記憶する。代替実施形態では、ＣＰＵ１１２上で実行するソフトウェアは、コードフラッシュメモリ１０６内に累積された正規化された実行時間１５２と、累積された歴実行時間１５４とを記憶する。累積された正規化された実行時間１５２および累積された歴実行時間１５４の使用は、以下で詳細に説明される。
【００２９】
ＲＡＩＤ制御装置１００は、ディスクインターフェース１１６と、ホストインターフェース１１８と、キャッシュメモリ１０４と、非揮発性メモリ１０８とに結合されたメモリ制御装置１０２も含む。メモリ制御装置１０２は、ディスクインターフェース１１６、ホストインターフェース１１８、およびＣＰＵサブシステム１１２によるキャッシュメモリ１０４および非揮発性メモリ１０８に対するアクセスを制御する。一実施形態では、メモリ制御装置１０２は、揮発性キャッシュメモリ１０４バスと、非揮発性メモリ１０８バスと、ＣＰＵサブシステム１１２バスと、ホストインターフェース１１８と、ディスクインターフェース１１６バスとの間の通信を橋渡しするためのバスブリッジとしても機能する。一実施形態では、メモリ制御装置１０２は、カスタム大規模集積回路である。一実施形態では、メモリ制御装置１０２は、カスタムプログラム可能な論理装置を含む。メモリ制御装置１０２は、図２に関して、以下でより詳細に説明される。
【００３０】
通常の動作の間、ＲＡＩＤ制御装置１００は、電力供給業界でよく知られたような、商業的に供給される一般的なＡ／Ｃ電源を含むがこれに限定されない、ＲＡＩＤ制御装置１００の外付けの主電源から電力を受ける。しかし、ＲＡＩＤ制御装置１００は、以下で詳細に説明されるように、主電源の損失が発生した場合、ＲＡＩＤ制御装置１００に電力を供給するための１つまたは複数のコンデンサ１３６すなわちコンデンサパック１３６も含む。主電源の機能休止により、コンデンサ１３６上の充電もしくはエネルギー貯蔵の一部またはすべてが消耗された場合、主電源が回復されると、コンデンサ１３６は主電源から再充電される。一実施形態では、コンデンサ１３６は、活性剤として炭素エーロゲル技術を用い、単一のパッケージ内の並列コンデンサの配列として配置される。一実施形態では、コンデンサ１３６は、Ｃｏｏｐｅｒ  Ｉｎｄｕｓｔｒｉｅｓの一部門である、Ｂｏｙｎｔｏｎ  Ｂｅａｃｈ，ＦｌｏｒｉｄａのＣｏｏｐｅｒ  Ｂｕｓｓｍａｎによって製造された４つのモデルＢ１８６０−２Ｒ５１０７  ＰｏｗｅｒＳｔｏｒ  Ｂ  Ｓｅｒｉｅｓ  Ａｅｒｏｇｅｌ  Ｓｕｐｅｒｃａｐａｃｉｔｏｒｓを含む。しかし、他の実施形態が企画され、本発明は特定のコンデンサモデルまたはコンデンサ技術に限定されない。
【００３１】
ＲＡＩＤ制御装置１００は、コンデンサ１３６および主電源の両方から電力を受けるために結合された電力調整器（ｐｏｗｅｒ  ｒｅｇｕｌａｔｏｒ）１３４も含む。電力調整器１３４は、主電源が電力を供給しているかどうかを検出し、供給している場合、電力を様々なＲＡＩＤ制御装置１００回路に提供するように主電源を調整する。以下でより詳細に説明されるように、主電源が十分な電力を供給していない場合、電力調整器１３４は、ＲＡＩＤ制御装置１００回路のサブセットに電力を提供するようにコンデンサ１３６を調整する。
【００３２】
ＲＡＩＤ制御装置１００は、電力調整器１３４とメモリ制御装置１０２とに結合された電力管理装置（ｐｏｗｅｒ  ｍａｎａｇｅｒ）１３２も含む。電力管理装置１３２も、主電源が電力を供給しているかどうかを検出する。以下で詳細に説明されるように、電力管理装置１３２が主電源の損失を検出する場合、電力管理装置１３２は、キャッシュメモリ１０４から非揮発性メモリ１０８にポステッドライトデータをフラッシュするようにメモリ制御装置１０２に選択的に命令する。一実施形態では、電力管理装置１３２は、非常に低い電力を消費する、マイクロコンプレックスプログラマブル論理装置（ｍｉｃｒｏ−ｃｏｍｐｌｅｘ  ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）（ＣＰＬＤ）を含む。加えて、カスタム集積回路またはディスクリート部品など、電力管理装置１３２によって実行される、本明細書で説明される機能を実行するために、他の回路が用いられてもよい。
【００３３】
図１の実施形態では、主電源が失われた場合、コンデンサ１３６はキャッシュメモリ１０４と、非揮発性メモリ１０８と、メモリ制御装置１０２と、電力制御装置１３２と、メモリ制御装置１０２をキャッシュメモリ１０４に結合する高速メモリバスのバス端末など、これらの回路を動作可能に維持するために要求される他の回路とだけに電源を供給する。すなわち、コンデンサ１３６は、キャッシュメモリ１０４から非揮発性メモリ１０８へのポステッドライトデータのフラッシュ動作を実行するために要求される回路だけに電力を供給する。コンデンサ１３６は、フラッシュを実行するために要求されない回路、すなわちＣＰＵサブシステム１１２、ディスクインターフェース１１６、ホストインターフェース１１８、ならびにＣＰＵサブシステム１１２と、ディスクインターフェース１１６と、ホストインターフェース１１８とインターフェースを取るための部分など、メモリ制御装置１０２の不要な部分に電力を供給しないと有利である。
【００３４】
本開示では、フラッシュ動作は、主電源の損失に応答して、キャッシュメモリ１０４から非揮発性メモリ１０８にデータを複写することを指し、回復動作は、主電源が回復された後に非揮発性メモリ１０８からキャッシュメモリ１０４にデータを複写することを指す。以下で説明されるように、ＲＡＩＤ制御装置１００は、主電源が回復された場合、回復動作を選択的に実行する。
【００３５】
ＲＡＩＤ制御装置１００は、コンデンサパック１３６の周囲温度を検出し、サンプリングされた温度をＣＰＵ１１２に供給する温度センサ１４２も含む。加えて、ＲＡＩＤ制御装置１００は、コンデンサパック１３６の電圧を検出し、サンプリングされた電圧をＣＰＵ１１２に供給する電圧センサ１４４も含む。さらに、ＲＡＩＤ制御装置１００は、充電の際にコンデンサパック１３６によって引き出される電流を検出し、サンプリングされた電流をＣＰＵ１１２に供給する電流センサ１４６も含む。一実施形態では、ＣＰＵ１１２は、メモリ制御装置１０２および／または電力管理装置１３２を経由して、サンプリングされた温度、電圧、および電流の値を読み取る。一実施形態では、温度センサ１４２と、電圧センサ１４４と、電流センサ１４６とは、アナログ／デジタル変換器を含むＩ２Ｃスレーブ装置を含む。以下で詳細に説明されるように、ＣＰＵ１１２は、コンデンサパック１３６の寿命を監視および維持するために、サンプリングされた温度、電圧、および電流の値を使用する。
【００３６】
次に図２を参照すると、本発明よる図１のメモリ制御装置１０２をより詳細に例示するブロックダイヤグラムが示される。メモリ制御装置１０２は、メモリ制御装置１０２の様々な部分を制御するための制御論理２１４を含む。一実施形態では、制御論理２１４は、フラッシュ動作の間に揮発性キャッシュメモリ１０４から非揮発性メモリ１０８にデータを複写するダイレクトメモリアクセス制御装置（ＤＭＡＣ）を含む。
【００３７】
制御論理２１４は、図１の電力管理装置１３２からリセット信号２２６を受信する。電力管理装置１３２がリセット信号２２６をアサートする場合、メモリ制御装置１０２はリセットされる。電力管理装置１３２は、ＲＡＩＤ制御装置１００がリセットする場合、または主電源が回復される場合、キャッシュメモリ１０４のコンテンツが依然として有効であれば、メモリ制御装置１０２がキャッシュメモリ１０４のコンテンツを無効にしないような方法で、キャッシュメモリ１０４を選択的にリセットするように構成される。例えば、以下で説明されるように、キャッシュメモリ１０４がフラッシュ動作を実行する過程にある場合、電力管理装置１３２はメモリ制御装置１０２をリセットせず、それにより、ＣＰＵサブシステム１１２がフラッシュ動作を優雅に中断することを可能にする。
【００３８】
制御論理２１４はまた、電力管理装置１３２からｐｗｒ＿ｓｔａｔｅ信号２２２を受信する。電力管理装置１３２は、以下の表１に説明されるように、ｐｗｒ＿ｓｔａｔｅ信号２２２を経由して、動作を実行するようにメモリ制御装置１０２に命令する。特に、以下に説明されるように、主電源の損失またはフラッシュ動作の完了など、異なる事象に応答して、電力管理装置１３２は、ｐｗｒ＿ｓｔａｔｅ信号２２２の１つの値を用いて、キャッシュメモリ１０４のコンテンツを非揮発性メモリ１０８にフラッシュするようにメモリ制御装置１０２に命令し、ｐｗｒ＿ｓｔａｔｅ信号２２２の別の値を用いて、キャッシュメモリ１０４をセルフリフレッシュモードに設定するようにメモリ制御装置１０２に命令する。
【表２】
2009503723.tif 000004
【００３９】
制御論理２１４はまた、電力管理装置１３２にｆｌｕｓｈ＿ｓｔａｔｕｓ信号２２４を提供する。以下の表２で説明されるように、メモリ制御装置１０２は、ｆｌｕｓｈ＿ｓｔａｔｕｓ信号２２４を経由して、非揮発性メモリ１０８のフラッシュ状態に対する現在のキャッシュメモリ１０４を電力管理装置１３２に提供する。特に、メモリ制御装置１０２は、ｆｌｕｓｈ＿ｓｔａｔｕｓ信号２２４を経由して、フラッシュ動作が進んでいるか否か、またエラーの有無にかかわらず、フラッシュ動作が完了しているか否かを電力管理装置１３２に示す。
【表３】
2009503723.tif 000005
【００４０】
メモリ制御装置１０２はまた、メモリ制御装置１０２をディスクインターフェース１１６に接続するための（ＰＣＩ−Ｘインターフェースなどの）ローカルバスインターフェース２１６、メモリ制御装置１０２をホストインターフェース１１８に接続するための（ＰＣＩ−Ｘインターフェースなどの）別のローカルバスインターフェース２１８、メモリ制御装置１０２をキャッシュメモリ１０４に接続するための（ＤＤＲ  ＳＤＲＡＭインターフェースなどの）メモリバスインターフェース２０４、およびメモリ制御装置１０２を非揮発性メモリ１０８に接続するためのＡＴＡインターフェース２０８も含む。ローカルバスインターフェース２１６および２１８、メモリバスインターフェース２０４、ならびにＡＴＡインターフェース２０８は、すべて制御論理２１４に結合され、様々なインターフェース間でデータ転送をバッファし、それらの間に並列高速データ経路を提供する（先入れ先出し（ＦＩＦＯ）バッファなどの）バッファ２０６にも結合される。一実施形態では、ＡＴＡインターフェース２０８は、ＡＴＡ  ＰＩＯモード４と、最大毎秒１６．７ＭＢまでのデータ転送速度とをサポートする。
【００４１】
メモリ制御装置１０２は、メモリ制御装置１０２をＣＰＵサブシステム１１２に接続するための、制御論理２１４に結合された、ＰＣＩインターフェースなどのローカルバスインターフェース２１２も含む。ＣＰＵサブシステム１１２は、ＰＣＩインターフェース２１２を経由して、キャッシュメモリ１０４と、非揮発性メモリ１０８と、ディスクインターフェース１１６と、ホストインターフェース１１８とにアクセスする。
【００４２】
メモリ制御装置１０２は、ローカルバスインターフェース２１２と制御論理２１４とに結合された制御および状態レジスタ（ＣＳＲ）２０２も含む。ＣＳＲ２０２は、メモリ制御装置１０２を制御するために図１のＣＰＵサブシステム１１２によってプログラム可能であり、メモリ制御装置１０２がＣＰＵサブシステム１１２に状態を提供するためにＣＰＵサブシステム１１２によって読取り可能である。ＣＳＲ２０２の中には、主電源が失われた場合、ＣＰＵサブシステム１１２が、メモリ制御装置１０２が非揮発性メモリ１０８にフラッシュすることになる、キャッシュメモリ１０４内のポステッドライトデータなどのデータの１つまたは複数の領域の位置とサイズとを指定することを可能にする制御レジスタがある。ＣＳＲ２０２は、図３に関して、以下で詳細に説明される。
【００４３】
次に図３を参照すると、本発明による図２のＣＳＲ２０２を例示するブロックダイヤグラムが示される。以下のテキストおよび表で、様々なＣＲＳ２０２とそれらのコンテンツとが説明される。
【００４４】
ＮＶＢ＿ＦＬＵＳＨ＿ＣＴＲＬレジスタ３０２は、ｐｗｒ＿ｓｔａｔｅ信号２２２を経由してフラッシュ動作を開始するための電力管理装置１３２の能力に類似した、フラッシュ動作を開始するための能力をＣＰＵサブシステム１１２に提供し、ｆｌｕｓｈ＿ｓｔａｔｕｓ信号２２４を経由してフラッシュ動作状態を読み取るための電力管理装置１３２の能力に類似した、フラッシュ動作の状態を読み取るための能力をＣＰＵサブシステム１１２に提供する。主電源が回復され、ＣＰＵサブシステム１１２ソフトウェアが起動すると、フラッシュ動作は依然として進行中である可能性があり、キャッシュメモリ１０４のコンテンツは依然として有効である可能性がある。その結果、一実施形態では、表３で説明されるように、ＣＰＵサブシステム１１２は、（キャッシュメモリ１０４のコンテンツは依然として有効である可能性があるため）ＮＶＢ＿ＦＬＵＳＨ＿ＣＴＲＬレジスタ３０２内のＦＬＡＳＨ＿ＳＴＡＲＴビットに０を書き込むことによって、進行中のフラッシュ動作を中断するようメモリ制御装置１０２に命令することが可能である。
【表４】
2009503723.tif 000006
【００４５】
ＮＶＢ＿ＲＥＳＴＯＲＥ＿ＣＴＲＬレジスタ３０４は、非揮発性メモリ１０８からキャッシュメモリ１０４に回復動作を開始する能力をＣＰＵサブシステム１１２に提供し、回復動作の状態を読み取る能力をＣＰＵサブシステム１１２に提供する。
【表５】
2009503723.tif 000007
【００４６】
ＮＶＢ＿ＲＡＭ＿ＳＴＡＲＴ＿ＡＤＤＲ１レジスタ３０６は、それぞれ、フラッシュ動作または回復動作のソースまたはシンクである、データの第１の領域のキャッシュメモリ１０４内の開始アドレスを指定する。
【表６】
2009503723.tif 000008
【００４７】
ＮＶＢ＿ＡＴＡ＿ＳＴＡＲＴ＿ＡＤＤＲ１レジスタ３０８は、それぞれ、フラッシュ動作または回復動作のシンクまたはソースである、データの第１の領域の非揮発性メモリ１０８内の開始アドレスを指定する。一実施形態では、非揮発性メモリ１０８がセクタ分割された（ｓｅｃｔｏｒｅｄ）ＡＴＡ装置である場合、メモリ制御装置１０２は、ＮＶＢ＿ＡＴＡ＿ＳＴＡＲＴ＿ＡＤＤＲ１レジスタ３０８内で指定された非揮発性メモリ１０８アドレスをセクタ番号に変換する。
【表７】
2009503723.tif 000009
【００４８】
ＮＶＢ＿ＳＩＺＥ１レジスタ３１２は、フラッシュ動作または回復動作によって複写されることになるデータの第１の領域の全サイズ、または長さを指定する。
【表８】
2009503723.tif 000010
【００４９】
ＮＶＢ＿ＲＡＭ＿ＳＴＡＲＴ＿ＡＤＤＲ２レジスタ３１４は、それぞれ、フラッシュ動作または回復動作のソースまたはシンクである、データの第２の領域のキャッシュメモリ１０４内の開始アドレスを指定する。
【表９】
2009503723.tif 000011
【００５０】
ＮＶＢ＿ＡＴＡ＿ＳＴＡＲＴ＿ＡＤＤＲ２レジスタ３１６は、それぞれ、フラッシュ動作または回復動作のシンクまたはソースである、データの第２の領域の非揮発性メモリ１０８内の開始アドレスを指定する。一実施形態では、非揮発性メモリ１０８がセクタ分割されたＡＴＡ装置である場合、メモリ制御装置１０２は、ＮＶＢ＿ＡＴＡ＿ＳＴＡＲＴ＿ＡＤＤＲ２レジスタ３１６内で指定された非揮発性メモリ１０８アドレスをセクタ番号に変換する。
【表１０】
2009503723.tif 000012
【００５１】
ＮＶＢ＿ＳＩＺＥ２レジスタ３１８は、フラッシュ動作または回復動作によって複写されることになる、データの第２の領域の全サイズ、または長さを指定する。
【表１１】
2009503723.tif 000013
【００５２】
ＮＶＢ＿ＳＥＣＴＯＲ＿ＣＯＵＮＴレジスタ３２２は、非揮発性メモリ１０８ＡＴＡ装置に対してメモリ制御装置１０２によって発行される各書込み／読取り命令に関して使用するためのセクタの数を指定する。ＮＶＢ＿ＳＥＣＴＯＲ＿ＣＯＵＮＴレジスタ３２２は、非揮発性メモリ１０８ＡＴＡ装置に対するフラッシュ動作および非揮発性メモリ１０８ＡＴＡ装置からの回復動作の速度を最適化するために使用されてよい。ＮＶＢ＿ＳＥＣＴＯＲ＿ＣＯＵＮＴレジスタ３２２は、ＮＶＢ＿ＳＩＺＥレジスタ３１２／３１８と共に使用される。例えば、ＣＰＵサブシステム１１２は、２５６ＫＢの値を用いてＮＶＢ＿ＳＩＺＥレジスタ３１２／３１８を、また３２の値を用いてＮＶＢ＿ＳＥＣＴＯＲ＿ＣＯＵＮＴレジスタ３２２をプログラムすることが可能であり、結果として、それぞれ３２セクタ（１６ＫＢ）の１６の書込み命令として２５６ＫＢのデータが書き込まれている。ＮＶＢ＿ＳＩＺＥレジスタ３１２／３１８は、ＮＶＢ＿ＳＥＣＴＯＲ＿ＣＯＵＮＴレジスタ３２２値の倍数である値を用いてプログラムされなければならない。
【表１２】
2009503723.tif 000014
【００５３】
ＮＶＢ＿ＰＲＯＧＲＥＳＳレジスタ３２４は、それぞれ、フラッシュ動作または回復動作の間に、そこからキャッシュメモリ１０４が読み取られている、またはそこにキャッシュメモリ１０４が書き込まれている現在のアドレスを指定する。ＮＶＢ＿ＰＲＯＧＲＥＳＳレジスタ３２４は、フラッシュ動作または回復動作が進行中である場合だけ有効である。ＮＶＢ＿ＰＲＯＧＲＥＳＳレジスタ３２４は、ＣＰＵサブシステム１１２がフラッシュ動作または回復動作の進行を評価することを可能にする。フラッシュ動作または回復動作がエラーを発生させる場合、ＮＶＢ＿ＰＲＯＧＲＥＳＳレジスタ３２４値は、エラーが発生したおよそのアドレスを指定する。フラッシュ動作または回復動作が中断された場合、ＮＶＢ＿ＰＲＯＧＲＥＳＳレジスタ３２４は、中断が発生した後で、次のセクタに増分される。
【表１３】
2009503723.tif 000015
【００５４】
ＡＴＡ＿ＩＮＦ＿ＳＴＡＴＵＳレジスタ３２６は、非揮発性メモリ１０８ＡＴＡ装置が、フラッシュ動作または回復動作の間、データの１つもしくは複数のセクタの成功裏の読取り時または書込み時になど、割込みを発生させたかどうかを判断するために、またフラッシュ動作もしくは回復動作が完了したかどうかを判断するために、ＣＰＵサブシステム１１２によって読み取られることが可能である。ＡＴＡ＿ＩＮＦ＿ＳＴＡＴＵＳレジスタ３２６は、ＣＰＵサブシステム１１２が割込みソースをクリアすることも可能にする。
【表１４】
2009503723.tif 000016
【００５５】
ＡＴＡ＿ＩＮＴ＿ＥＮＡＢＬＥレジスタ３２８は、ＣＰＵサブシステム１１２がＡＴＡ＿ＩＮＴ＿ＳＴＡＴＵＳレジスタ３２６によって指定された割込みソースを動作可能または動作不能にすることを可能にする。
【表１５】
2009503723.tif 000017
【００５６】
ＮＶＢ＿ＥＲＲＯＲ＿ＣＯＤＥレジスタ３３２は、フラッシュ動作または回復動作が完了する場合にＮＶＢ＿ＦＫＵＳＨ＿ＣＴＲＬレジスタ３０２またはＮＶＢ＿ＲＥＳＴＯＲＥ＿ＣＴＲＬレジスタ３０４が失敗を示すと、エラーの種類を指定する。ＥＣＣエラーが検出される場合、動作は次のセクタ境界で終了する。その結果、エラーが発生した後、最高５１２バイトまでが転送され得る。一実施形態では、ＣＰＵサブシステム１１２は、ＥＣＣエラーを無視させる能力を有する。ＡＴＡ装置エラーのハードウェア検出は、以下で説明されるＡＴＡダイレクトアクセスレジスタ３４２内のタスクファイルレジスタであるＡＴＡ装置状態レジスタのコンテンツを検査することによって実行される。メモリ制御装置１０２は、ＡＴＡ命令を発行した後、また各セクタの転送が完了した後、ＡＴＡ装置状態レジスタを読み取る。その結果、ＡＴＡ装置エラーは検出され、エラーが発生したセクタ境界で報告される、すなわち、ＡＴＡエラーが実際に発生した後、最高５１２バイトまでが転送され得る。同様に、ＡＴＡ動作はセクタ境界でのみ終了する。
【表１６】
2009503723.tif 000018
【００５７】
ＮＶＢ＿ＣＯＮＦＩＧレジスタ３３４は、ＣＰＵサブシステム１１２がフラッシュ動作の様相（ａｓｐｅｃｔ）を構成することを可能にする。特に、ＣＰＵサブシステム１１２は、メモリ制御装置１０２がフラッシュ動作を自動的に実行することを可能にすることができ、またはメモリ制御装置１０２がフラッシュ動作を自動的に実行することを動作不能にすることができる。加えて、以下で説明されるように、ＣＰＵサブシステム１１２は、フラッシュ動作が終了した場合、メモリ制御装置１０２が、ＮＶＢ＿ＣＯＮＦＩＧレジスタ３３４を経由して、フラッシュは成功したか、もしくは中断されたか、またはエラーが発生したかどうか、フラッシュ動作の結果を指定する情報を非揮発性メモリ１０８に書き込むことを選択的に命令することが可能である。メモリ制御装置１０２は、フラッシュ結果情報を非揮発性メモリ１０８ＡＴＡ装置の所定のフラッシュ結果セクタに書き込む。一実施形態では、フラッシュ結果セクタは、非揮発性メモリ１０８の第１のセクタである。
【表１７】
2009503723.tif 000019
【００５８】
ＡＴＡ＿ＲＥＳＥＴレジスタ３３６は、ＣＰＵサブシステム１１２が非揮発性メモリ１０８ＡＴＡ装置をリセットすることを可能にする。
【表１８】
2009503723.tif 000020
【００５９】
ＡＴＡ＿ＣＲＣレジスタ３３８は、フラッシュ動作または回復動作が完了した場合、データ用の３２ビットＣＲＣを含む。オプションが動作可能にされると、ＣＲＣデータは書込み結果セクタに自動的に書き込まれる。一実施形態では、フラッシュ動作はＣＲＣ値を書込み結果セクタに書き込み、回復動作が実行される場合、フラッシュ動作または回復動作の間に、不一致によって示される、いずれかのデータ汚染が発生したかどうかを判断するために、ＣＲＣ値はＡＴＡ＿ＣＲＣレジスタ３３８値と比較される。
【表１９】
2009503723.tif 000021
【００６０】
非揮発性メモリ１０８ＡＴＡ装置のフラッシュ結果セクタに書き込まれるフラッシュ結果情報の形態は、以下の表１９で説明される。
【表２０】
2009503723.tif 000022
【００６１】
完了署名値は、コードフラッシュ１０６内でも記憶され、その結果、ＣＰＵサブシステム１１２は、フラッシュ動作が成功したかどうかを判断するために、この値を非揮発性メモリ１０８フラッシュ結果セクタ内の完了署名と比較することができる。加えて、一実施形態では、メモリ制御装置１０２は、データを非揮発性メモリ１０８にフラッシュするときにデータの実行巡回冗長コード（ＣＲＣ）を計算し、最終的なＣＲＣ値を表１９に示されるオフセットでフラッシュ結果セクタに書き込む。これは、回復動作の間、データが有効であること、すなわち、ＡＴＡ＿ＣＲＣレジスタ３８８値と比較することによって、フラッシュ動作によってデータが非揮発性メモリ１０８に正確に書き込まれていることを検証するために、データを読み取る場合、ＣＰＵサブシステム１１２がＣＲＣを発生させることを可能にする。
【００６２】
ＡＴＡダイレクトアクセスレジスタ３４２は、非揮発性メモリ１０８ＡＴＡ装置と通信するためにＣＰＵサブシステム１１２によって使用される制御および状態レジスタを含む。一実施形態では、ＡＴＡダクレクトアクセスレジスタ３４２は、ディスクドライブの技術分野でよく知られている、一般にタスクファイルとして知られている標準ＡＴＡレジスタファイルを含む。メモリ制御装置１０２は、フラッシュ動作の間のポステッドライトデータの書込みおよび回復動作の間のデータの読取りなど、非揮発性メモリ１０８ＡＴＡ装置によりＡＴＡ命令を実行するために、ＡＴＡダイレクトアクセスレジスタ３４２を読み取り、ＡＴＡダイレクトアクセスレジスタ３４２に書き込む。ＣＰＵサブシステム１１２はまた、ＡＴＡダイレクトアクセスレジスタ３４２に直接的にアクセスすることも可能である。
【００６３】
次に図４を参照すると、本発明によるフラッシュ動作を実行するための図１のＲＡＩＤ制御装置１００の動作を例示するフローチャートが示される。フローはブロック４０２で始まる。
【００６４】
ブロック４０２で、ＣＰＵサブシステム１１２は、自動的フラッシュ動作を実行するためにメモリ制御装置１０２によって必要とされる情報を用いて、図３のメモリ制御装置１０２のＣＳＲ２０２をプログラムする。ＣＰＵサブシステム１１２ソフトウェアは、起動中のその初期化シーケンスの一部としてこの機能を実行することが好ましい。しかし、本明細書で説明される動的な書込みキャッシュサイズの実施形態に関して、ＣＰＵ１１２は、ＲＡＩＤ制御装置１００の通常の動作の間、起動期間の後に、書込みキャッシュサイズ調整に応答して、更新された情報によりメモリ制御装置１０２ＣＳＲ２０２をプログラムしてもよい。特に、ＣＰＵサブシステム１１２は、フラッシュ動作を実行するために必要な情報をメモリ制御装置１０２に提供するために所望される値を用いて、ＮＶＢ＿ＦＬＵＳＨ＿ＣＴＲＬレジスタ３０２と、ＮＶＢ＿ＲＡＭ＿ＳＴＡＲＴ＿ＡＤＤＲ１レジスタ３０６と、ＮＶＢ＿ＡＴＡ＿ＳＴＡＲＴ＿ＡＤＤＲ１レジスタ３０８と、ＮＶＢ＿ＳＩＺＥ１レジスタ３１２と、ＮＶＢ＿ＲＡＭ＿ＳＴＡＲＴ＿ＡＤＤＲ２レジスタ３１４と、ＮＶＢ＿ＡＴＡ＿ＳＴＡＲＴ＿ＡＤＤＲ２レジスタ３１６と、ＮＶＢ＿ＳＩＺＥ２レジスタ３１８と、ＮＶＢ＿ＳＥＣＴＯＲ＿ＣＯＵＮＴレジスタ３２２と、ＡＴＡ＿ＩＮＴ＿ＥＮＡＢＬＥレジスタ３２８と、ＮＶＢ＿ＣＯＮＦＩＧレジスタ３３４とをプログラムする。一実施形態では、ＣＰＵサブシステム１１２は、キャッシュされたすべてのデータ、すなわち、ポステッドライトデータと読取りキャッシュされたデータとをフラッシュするようにメモリ制御装置１０２をプログラムする。しかし、別の実施形態では、ＣＰＵサブシステム１１２は、ポステッドライトデータだけを含むようにメモリ制御装置１０２をプログラムし、それにより、フラッシュ動作の実行に必要とされるエネルギー量と時間とを低減する。加えて、ＣＰＵサブシステム１１２は、ＣＰＵサブシステム１１２が、フラッシュ動作の終了時にメモリ制御装置１０２が成功裏にフラッシュ動作結果情報をフラッシュ結果セクタに書き込んだかどうかを判断するために、フラッシュ結果セクタを所定値に初期化することが可能である。例えば、一実施形態では、ＣＰＵサブシステム１１２は、セクタの各バイトに関して０ｘＦＦの値を用いて、フラッシュ結果セクタに書き込むか、または消去する。ＣＰＵサブシステム１１２は、後で、主電源がＲＡＩＤ制御装置１００に電力を供給する間に通常の動作を開始する。通常の動作は、ポステッドライト動作を実行し、ポステッドライトデータを揮発性キャッシュメモリ１０４内に記憶させることを含む。フローはブロック４０４に進む。
【００６５】
ブロック４０４で、主電源はＲＡＩＤ制御装置１００に電力を供給できない。これに応答して、コンデンサ１３６は、ＲＡＩＤ制御装置１００の所定の部分、すなわち、キャッシュメモリ１０４と、非揮発性メモリ１０８と、メモリ制御装置１０２と、電力管理装置１３２と、電力調整器１３４と、関連する回路とに電力を供給し始める。特に、コンデンサ１３６は、ＣＰＵサブシステム１１２、ディスクインターフェース１１６、またはホストインターフェース１１８に電力を供給しない。加えて、ＰＣＩ−Ｘインターフェース２１６および２１８ならびにＦＩＦＯ２０６は、ディスクインターフェース１１６とインターフェースを取るためだけに使用され、ホストインターフェース１１８はコンデンサ１３６によって電力を供給されないため、必要とされない。その結果、ＣＰＵサブシステム１１２、ディスクインターフェース１１６、ホストインターフェース１１８およびメモリ制御装置１０２の不要な部分は、フラッシュ動作の間、エネルギーを消費せず、それにより、ＲＡＩＤ制御装置１００が、通常、より安価であり、かつ／またはより少ない空間を必要とするコンデンサ１３６を意味する、より少ないエネルギーを蓄積できるコンデンサ１３６を用いることを可能にする。加えて、以下で説明されるように、ＣＰＵサブシステム１１２、ディスクインターフェース１１６、およびホストインターフェース１１８はコンデンサ１３６内に蓄積されたエネルギーを消費しないという事実は、フラッシュ動作が完了すると、コンデンサ１３６内により多くのエネルギーが蓄積された状態に残し、フラッシュが完了した後に、コンデンサ１３６がキャッシュメモリ１０４に電力を供給し続ける可能性を高め、それにより、ポステッドライトデータを変わらずに維持し、主電源が回復された場合、回復動作の必要性を緩和することが可能である。フローはブロック４０６に進む。
【００６６】
ブロック４０６で、電力管理装置１３２は、主電源の損失を検出し、ｐｗｒ＿ｓｔａｔｅ信号２２２を経由して、キャッシュメモリ１０４から非揮発性メモリ１０８にデータのフラッシュ動作を開始するようメモリ制御装置１０２に命令する。フローはブロック４０８に進む。
【００６７】
ブロック４０８で、ＮＶＢ＿ＣＯＮＦＩＧレジスタ３３４内のＡＵＴＯ＿ＦＬＵＳＨ＿ＥＮビットが設定されている場合、メモリ制御装置１０２は、ブロック４０２で予めＣＳＲ２０２内にプログラムされた情報に基づいて、フラッシュ動作を実行する。特に、メモリ制御装置１０２は、ＮＶＢ＿ＳＥＣＴＯＲ＿ＣＯＵＮＴレジスタ３２２とＡＴＡ＿ＩＮＩ＿ＥＮＡＢＬＥレジスタ３２８とによって指定される方法で、ＮＶＢ＿ＲＡＭ＿ＳＴＡＲＴ＿ＡＤＤＲ１レジスタ３０６／ＮＶＢ＿ＳＩＺＥ１レジスタ３１２と、ＮＶＢ＿ＲＡＭ＿ＳＴＡＲＴ＿ＡＤＤＲ２レジスタ３１４／ＮＶＢ＿ＳＩＺＥ２レジスタ３１８とによって指定された２つの領域内のデータを、それぞれ、ＮＶＢ＿ＡＴＡ＿ＳＴＡＲＴ＿ＡＤＤＲ１レジスタ３０８とＮＶＢ＿ＡＴＡ＿ＳＴＡＲＴ＿ＡＤＤＲ２レジスタ３１６とによって指定された非揮発性メモリ１０８内の２つの位置に複写する。一実施形態では、第１の領域は、実際のユーザデータを包括する、ポステッドライトデータの部分を含み、第２の領域は、メタデータである、ポステッドライトデータの部分を含む。別の実施形態では、第１の領域は、ポステッドライトユーザデータと、関連するメタデータとを含み、第２の領域は、読取りキャッシュされたユーザデータと、関連するメタデータとを含む。しかし、２つの領域の使用は、これらの実施形態に限定されない。さらに、ＣＳＲ２０２が２つのデータ領域より多いまたは少ないデータ領域を指定するためのレジスタを含む実施形態が考えられる。フローはブロック４１２に進む。
【００６８】
ブロック４１２で、ＮＶＢ＿ＣＯＮＦＩＧレジスタ３３４内のＷＲ＿ＦＬＵＳＨ＿ＲＥＳＵＬＴＳ＿ＥＮビットが設定される場合、メモリ制御装置１０２は、フラッシュ動作の終了時に、フラッシュ動作は成功したか、中断されたか、またはエラーにより終了されたかどうか、上の表１９で指定されたフラッシュ結果情報を非揮発性メモリ１０８のフラッシュ結果セクタに書き込む。ＣＰＵサブシステム１１２がフラッシュ（または回復）動作を中断する場合、またはメモリ制御装置１０２がフラッシュ（または回復）動作の間にＥＣＣエラーまたはＡＴＡエラーを検出する場合、メモリ制御装置１０２は、次のセクタ境界上でフラッシュ（または回復）動作を終了することになる。ＮＶＢ＿ＣＯＮＦＩＧレジスタ３３４内のＷＲ＿ＦＬＵＳＨ＿ＲＥＳＵＬＴＳ＿ＥＮビットが設定される場合、メモリ制御装置１０２は、フラッシュ結果セクタに書き込み、ブール１０をｆｌｕｓｈ＿ｓｔａｔｕｓ信号２２４上に、またＮＶＢ＿ＦＬＵＳＨ＿ＣＴＲＬレジスタ３０２のＦＬＵＳＨ＿ＳＴＡＴＵＳビット内に送る。メモリ制御装置１０２がフラッシュ動作結果をフラッシュ結果セクタ自体に書き込んでいる間に、ＣＰＵサブシステム１１２が中断を命令する場合、またはメモリ制御装置１０２がエラーを検出する場合、フラッシュ動作結果は、フラッシュ結果セクタに成功裏に書き込まれる場合も、または書き込まれない場合もあり、フラッシュ動作結果が書き込まれる場合、フラッシュ結果情報は信頼性のないものである可能性がある。フローはブロック４１４に進む。
【００６９】
ブロック４１４で、電力管理装置１３２が、フラッシュ動作を開始するようメモリ制御装置１２０に命令した後で、電力管理装置１３２はｆｌｕｓｈ＿ｓｔａｔｕｓ信号２２４を経由してフラッシュ動作の進行を監視する。フラッシュ動作が完了すると、電力管理装置１３２は、キャッシュメモリ１０４によって消費される、コンデンサ１３６内に蓄積されたエネルギー量を低減するために、ｐｗｒ＿ｓｔａｔｅ信号２２２を経由してキャッシュメモリ１０４をセルフリフレッシュモードに設定するようメモリ制御装置１０２に命令する。フローはブロック４１６に進む。
【００７０】
ブロック４１６で、メモリ制御装置１０２は、ブロック４１４で電力管理装置１３２によって実行された命令に応答して、キャッシュメモリ１０４をセルフリフレッシュモードに設定する。フローはブロック４１８に進む。
【００７１】
ブロック４１８で、電力管理装置１３２は、コンデンサ１３６にキャッシュメモリ１０４だけに電力を供給させる。すなわち、電力管理装置１３２は、主電源が回復するまで待機している間に消費される、コンデンサ１３６内に蓄積されたエネルギー量を低減するために、コンデンサ１３６に非揮発性メモリ１０８とメモリ制御装置１０２とに対してもはや電力を供給させない。フローはブロック４１８で終了する。
【００７２】
次に図５を参照すると、本発明による主電源の障害後に回復されている主電源に応答した、図１のＲＡＩＤ制御装置１００の動作を例示するフローチャートが示される。フローはブロック５０２で始まる。
【００７３】
ブロック５０２で、主電源はＲＡＩＤ制御装置１００に対する電力の供給を再開する。その結果、ＣＰＵサブシステム１１２ソフトウェアは起動し、その初期化シーケンスを開始する。フローは判断ブロック５０４に進む。
【００７４】
判断ブロック５０４で、ＣＰＵサブシステム１１２は、キャッシュメモリ１０４のコンテンツが依然として有効かどうかを判断する。一実施形態では、ＣＰＵサブシステム１１２は、メモリ制御装置１０２によって書き込まれることが可能な、電力管理装置１３２内のデータ有効インジケータを調べることによって、キャッシュメモリ１０４のコンテンツが依然として有効かどうかを判断する。電力管理装置１３２は、電力増加された（ｐｏｗｅｒｅｄ  ｕｐ）場合、データ有効インジケータが、ゼロのブール値など、所定値にリセットするように構成される。さらに、電力管理装置１３２の電力停止（ｐｏｗｅｒ−ｏｆｆ）の閾値は、少なくともキャッシュメモリ１０４がそのデータを失い始める電力閾値と同じだけの高さである。主電源が失われた場合、メモリ制御装置１０２は、電力増加リセット値とは異なる値をデータ有効インジケータ内に書き込む。したがって、コンデンサ１３６がキャッシュメモリ１０４に電力を供給できない場合（したがって、データ有効インジケータにも供給できない場合）、主電源が回復されると、ＣＰＵサブシステム１１２は、メモリ制御装置１０２によって書き込まれた値ではなく、データ有効インジケータから電力増加リセット値を読み取ることになる。その結果、ＣＰＵサブシステム１１２は、フラッシュ動作が成功した場合、キャッシュメモリ１０４が非揮発性メモリ１０８から回復されなければならないことを判断することになる。しかし、ＣＰＵサブシステム１１２がメモリ制御装置１０２によって書き込まれた値をデータ有効インジケータから読み取る場合、ＣＰＵサブシステム１１２は、キャッシュメモリ１０４の回復に先行できることを判断し、それにより、ユーザデータをより速くホストコンピュータに利用可能にすることになる。キャッシュメモリ１０４のコンテンツが依然として有効である場合、フローは判断ブロック５１６に進む。そうでない場合、フローは判断ブロック５０６に進む。
【００７５】
判断ブロック５０６で、ＣＰＵサブシステム１１２は、ＮＶＢ＿ＦＬＵＳＨ＿ＣＴＲＬレジスタ３０２のＦＬＵＳＨ＿ＳＴＡＴＵＳビットを調べることによって、図４に従って実行されたフラッシュ動作が成功裏に完了したかどうかを判断する。一実施形態では、ＣＰＵサブシステム１１２は、フラッシュ結果セクタ内の完了状態を調べることによって、フラッシュ動作が成功裏に完了したかどうかをさらに判断する。一実施形態では、ＣＰＵサブシステム１１２は、フラッシュ結果セクタ内の完了署名を、コードフラッシュ１０６内の完了署名と比較することによって、フラッシュ動作が成功裏に完了したかどうかをさらに判断する。一実施形態では、ＣＰＵサブシステム１１２は、フラッシュ結果セクタ内のＣＲＣを非揮発性メモリ１０８からデータを読み取ることによって計算されたＣＲＣと比較することによって、フラッシュ動作が成功裏に完了したかどうかをさらに判断する。フラッシュ動作が成功裏に完了した場合、フローはブロック５１２に進む。そうでない場合、フローはブロック５０８に進む。
【００７６】
ブロック５０８で、ポステッドライトデータは失われているため、ＲＡＩＤ制御装置１００はパートナ、すなわち、システム内の冗長なＲＡＩＤ制御装置１００にフェイルオーバする。一実施形態では、通常の動作の間、ホストが書込みＩ／Ｏ要求をＲＡＩＤ制御装置１００に発行する場合、ポステッドライトデータはパートナＲＡＩＤ制御装置１００にも書き込まれる。その結果、ＲＡＩＤ制御装置１００のうちの１つが失敗した場合、特に、フラッシュ動作が１つのＲＡＩＤ制御装置１００上で失敗した場合、フラッシュ動作はパートナＲＡＩＤ制御装置１００上で成功している高い可能性が存在する。そうであれば、パートナＲＡＩＤ制御装置１００は、その非揮発性メモリ１０８からキャッシュメモリ１０４に対してポステッドライトデータの回復を実行し、後で、ポステッドライトデータをディスクにフラッシュすることが可能である。フローはブロック５０８で終了する。
【００７７】
ブロック５１２で、ＣＰＵサブシステム１１２は、図４に説明されたフラッシュ動作の間にキャッシュメモリ１０４から非揮発性メモリ１０８にフラッシュされたデータを回復してキャッシュメモリ１０４に戻すための回復動作を実行するようメモリ制御装置１０２に命令する。回復動作を実行するようメモリ制御装置１０２に命令することに先立って、ＣＰＵサブシステム１１２は、回復動作を実行するために必要なメモリ制御装置１０２の様々なＣＳＲ２０２内に適切な値をプログラムする。一実施形態では、ＣＰＵサブシステム１１２は、単に非揮発性メモリ１０８からデータを読み取り、そのデータをキャッシュメモリ１０４に書き込むことによって、回復動作を実行するようにメモリ制御装置１０２に命令するのではなく、回復動作を実行する。主電源が電力を供給している間に回復動作が実行されるため、低い電力消費レベルでメモリ制御装置１０２が回復動作を実行することほど困難ではない。しかし、この実施形態には、ＣＰＵサブシステム１１２は、回復動作を完了するのにメモリ制御装置１０２よりも時間がかかるという不利点がある。フローはブロック５１４に進む。
【００７８】
ブロック５１４で、ＣＰＵサブシステム１１２は、キャッシュメモリ１０４からディスクにポステッドライトデータをフラッシュする。フローはブロック５１４で終了する。
【００７９】
判断ブロック５１６で、ＣＰＵサブシステム１１２は、ＮＶＢ＿ＦＬＵＳＨ＿ＣＴＲＬレジスタ３０２のＦＬＵＳＨ＿ＳＴＡＴＵＳビットを読み込むことによって、フラッシュ動作が進行中かどうかを判断する。フラッシュ動作が進行中である場合、フローは判断ブロック５１８に進む。そうでない場合、フローはブロック５１４に進む。
【００８０】
ブロック５１８で、ＣＰＵサブシステム１１２は、電圧レベルが最低閾値より高いかどうかを判断するためにコンデンサ１３６の電圧レベルを調べる。一実施形態では、最低電圧閾値は、ＣＰＵサブシステム１１２ソフトウェア内にプログラムされる。別の実施形態では、最低電圧閾値は、ユーザ構成プログラムを経由してユーザプログラム可能である。コンデンサ１３６の電圧レベルが最低閾値より高い場合、フローは判断ブロック５１６に戻り、フラッシュ動作が完了するまで、またはコンデンサ１３６の電圧が最低閾値に達するまで待機する。そうでない場合、フローはブロック５２２に進む。
【００８１】
ブロック５２２で、ＣＰＵサブシステム１１２は、ＮＶＢ＿ＦＬＵＳＨ＿ＣＴＲＬレジスタ３０２内のＦＬＵＳＨ＿ＳＴＡＲＴビットにブール０を書き込むことによってフラッシュ動作を中断する。フローはブロック５１４に進む。
【００８２】
フラッシュが完了するまで、またはコンデンサ１３６の電圧レベルが最低閾値に達するまで、ＲＡＩＤ制御装置１００を起動し、キャッシュメモリ１０４が依然として有効であり、フラッシュ動作が進行中である場合、通常の動作を再開するのを待つ工程は、以下の一連の事象によって例示されるような、判断ブロック５１８で追加テストの助けなしに存在する可能性がある問題を解決する。電力管理装置１３２が主電源の損失を検出し、フラッシュ動作を実行するようメモリ制御装置１０２に命令すると仮定する。コンデンサ１３６に蓄積されたエネルギーの相当量はフラッシュ動作によって消費される。フラッシュ動作が完了する前に、主電源は回復される。その結果、ＣＰＵサブシステム１１２はフラッシュ動作を中断する。ＣＰＵサブシステム１１２が起動して、別の主電源の損失が発生した場合、別のフラッシュ動作を可能にする。その後すぐに、また注目に値すべく、コンデンサ１３６が完全に再充電されないうちに、電力管理装置１３２は、主電源の別の損失を検出して、別のフラッシュ動作を実行するようメモリ制御装置１０２に命令する。第２のフラッシュ動作は、この場合もはやり、コンデンサ１３６に蓄積されたエネルギーの相当量を消費し、この消費は完全充電に満たずに始まる。このシーケンスが続くと、最終的に、コンデンサ１３６は、成功するフラッシュ動作を完了するために十分なエネルギーを持たないことになり、その結果、ユーザデータの損失の可能性をもたらす。上に説明されたシナリオは、主電源供給の定期的な一時停止によって、または場合によっては、期間がおよそフラッシュ動作時間の程度である、比較的定期的な形で、主電源が失われていることを電力管理装置１３２に検出させる、雑音のある電力供給によって引き起こされる可能性がある。しかし、有利には、判断ブロック５１８での追加的なテストがこの問題を潜在的に回避させる。代替実施形態では、コンデンサパック１３６は完全に充電されていないため、書込みキャッシュ１５６はライトスルーモードに設定され、それにより、所望されないシナリオを回避する。別の代替実施形態では、ブロック５１８で、ＣＰＵ１１２は、フラッシュ動作が完了したかどうかを判断し、完了した場合、フローはブロック５１４に進む。そうでない場合、フローはブロック５１６に戻る。
【００８３】
揮発性メモリから非揮発性メモリにポステッドライトデータフラッシュを実行するためにメモリ制御装置が用いられる実施形態が説明されているが、図６および７に例示されるように、ＣＰＵが揮発性メモリから非揮発性メモリにフラッシュを実行する実施形態が考えられる。フラッシュ動作を実行するためにＣＰＵサブシステム１１２を使用する、図６および７の実施形態は、組み合わせて以下のうちの１つまたは複数が真実である場合、実行可能な実施形態であり得る：コンデンサ１３６のエネルギー密度は、フラッシュ動作を実行するために、ＣＰＵサブシステム１１２を含めて、ＲＡＩＤ制御装置１００によって必要とされるエネルギーを蓄積するうえで十分高い；ＲＡＩＤ制御装置１００上のコンデンサ１３６に割り当てられる利用可能な空間は、十分なコンデンサ１３６を使用し、フラッシュ動作を実行するためにＣＰＵサブシステム１１２を含むＲＡＩＤ制御装置１００によって必要とされるエネルギーを蓄積するのに十分大きい；ＣＰＵサブシステム１１２は、コンデンサ１３６が、フラッシュ動作を実行するために、ＣＰＵサブシステム１１２を含めて、ＲＡＩＤ制御装置１００によって必要とされるエネルギーを蓄積できるようにほんのわずかな電力量を消費する。この実施形態は、図１から５で説明される実施形態よりも多くのエネルギーを消費するが、コンデンサ１３６が要求されるエネルギーを供給できる場合、ＲＡＩＤ制御装置１００は、本明細書で説明されるバッテリ技術に比べて、より低いコスト、より高い信頼性、より少ないメンテナンス、およびより短い再充電時間などのコンデンサ技術の利点を享受することになる。
【００８４】
次に図６を参照すると、本発明の代替実施形態によるＲＡＩＤ制御装置６００を例示するブロックダイヤグラムが示される。図６のＲＡＩＤ制御装置６００は、図１のＲＡＩＤ制御装置１００と類似する。しかし、図７に関して示され、説明されるように、メモリ制御装置１０２ではなく、フラッシュ動作に関して、ＣＰＵサブシステム１１２と通信するために電力管理装置１３２が結合される。
【００８５】
次に図７を参照すると、本発明の代替実施形態に従ってフラッシュ動作を実行するための図６のＲＡＩＤ制御装置６００の動作を例示するフローチャートが示される。フローはブロック７０４で始まる。
【００８６】
ブロック７０４で、主電源はＲＡＩＤ制御装置６００に電力を供給できない。これに応答して、コンデンサ１３６は、ＲＡＩＤ制御装置６００の所定の部分、すなわち、キャッシュメモリ１０４と、非揮発性メモリ１０８と、メモリ制御装置１０２と、電力管理装置１３２と、電力調整器１３４と、ＣＰＵサブシステム１１２と、関連する回路とに電力を供給し始める。特に、コンデンサ１３６はディスクインターフェース１１６、またはホストインターフェース１１８に電力を供給しない。加えて、ＰＣＩ−Ｘインターフェース２１６および２１８ならびにＦＩＦＯ２０６は、ディスクインターフェース１１６とインターフェースを取るためだけに使用され、ホストインターフェース１１８はコンデンサ１３６によって電力を供給されないため、必要とされない。その結果、ディスクインターフェース１１６、ホストインターフェース１１８およびメモリ制御装置１０２の不要な部分は、フラッシュ動作の間、エネルギーを消費せず、それにより、ＲＡＩＤ制御装置１００が、通常、より安価であり、かつ／またはより少ない空間を必要とするコンデンサ１３６を意味する、より少ないエネルギーを蓄積できるコンデンサ１３６を用いることを可能にする。加えて、以下で説明されるように、ディスクインターフェース１１６およびホストインターフェース１１８はコンデンサ１３６内に蓄積されたエネルギーを消費しないという事実は、フラッシュ動作が完了すると、コンデンサ１３６内により多くのエネルギーが蓄積された状態に残し、フラッシュが完了した後に、コンデンサ１３６がキャッシュメモリ１０４に電力を供給し続ける可能性を高め、それにより、ポステッドライトデータを変わらずに維持し、主電源が回復された場合、回復動作の必要性を緩和することが可能である。フローはブロック７０６に進む。
【００８７】
ブロック７０６で、電力管理装置１３２は、主電源の損失を検出し、キャッシュメモリ１０４から非揮発性メモリ１０８へのデータのフラッシュ動作が必要であることをＣＰＵサブシステム１１２に通知する。フローはブロック７０８に進む。
【００８８】
ブロック７０８で、ＣＰＵサブシステム１１２は、キャッシュメモリ１０４から非揮発性メモリ１０８にデータを複製することによって、フラッシュ動作を実行する。フローはブロック７１２で終了する。
【００８９】
ブロック７１２で、フラッシュ動作の完了時に、ＣＰＵサブシステム１１２は、フラッシュ動作は成功したか、中断されたか、またはエラーにより終了されたかどうか、上の表１９に指定されたフラッシュ結果情報を非揮発性メモリ１０８のフラッシュ結果セクタに書き込む。フローはブロック７１６に進む。
【００９０】
ブロック７１６で、ＣＰＵサブシステム１１２は、キャッシュメモリ１０４をセルフリフレッシュモードに設定する。フローはブロック７１８に進む。
【００９１】
ブロック７１８で、ＣＰＵサブシステム１１２は、コンデンサ１３６にキャッシュメモリ１０４だけに電力を供給させるよう電力管理装置１３２に命令する。すなわち、電力管理装置１３２は、主電源が回復するまで待機している間に消費される、コンデンサ１３６内に蓄積されたエネルギー量を低減するために、コンデンサ１３６にＣＰＵサブシステム１１２と、非揮発性メモリ１０８とメモリ制御装置１０２とに対してもはや電力を供給させない。フローはブロック７１８に進む。
【００９２】
次の図８を参照すると、本発明による様々な温度と電圧の組合せに関して、図１のコンデンサパックの寿命を蓄積するための表８００、またはデータベース８００を例示するブロックダイヤグラムが示される。図８に示された値は、例示目的で提供された仮定値であり、コンデンサ製造会社から取得可能な特定のコンデンサ製品の実際の知られている値を表さない。さらに、示された温度の範囲は、例示目的で選択された仮定範囲である。
【００９３】
以上に説明されたように、コンデンサパック１３６の目的は、主電源の損失に応答して、書込みキャッシュ１５６から非揮発性メモリ１０８への書込みキャッシュデータをバックアップするため、またはフラッシングするための電力を供給するためにエネルギーを蓄積することである。コンデンサパック１３６が非揮発性メモリ１０８に対して書込みキャッシュ１５６をバックアップするために十分なエネルギーを蓄積するための容量をもはや持たない場合、コンデンサパック１３６は、その寿命末期に達する、すなわち、その寿命は終了する。コンデンサパック１３６の静電容量は、ＲＡＩＤ制御装置１００の動作でコンデンサパック１３６が使用されるにつれて経時的に減少する。コンデンサパックの温度、動作電圧、過剰な電流引込み、およびコンデンサパック１３６の極性の変化を含めて、様々な要因がコンデンサパック１３６の静電容量の低以下に影響を与える。一実施形態では、以下で説明されるように、コンデンサパック１３６の電流引込みも監視され、電流引込みが所定量を超える場合、コンデンサパック１３６の寿命を時期尚早に減らすることを避けるために、コンデンサパック１３６の充電は一時的に動作不能にされる。コンデンサパック１３６の寿命を時期尚早に減らすることを避けるために、コンデンサパック１３６の極性は、ＲＡＩＤ制御装置１００の動作の間、同じに維持される。したがって、コンデンサパック１３６の静電容量、したがって、寿命に影響を与える主な要因は、温度および動作電圧である。
【００９４】
ＲＡＩＤ制御装置１００の一実施形態では、コンデンサパック１３６の保証寿命は５年である。すなわち、ＲＡＩＤ制御装置１００の製造会社は、非揮発性メモリ１０８に書込みキャッシュ１５６をバックアップするために十分なエネルギーを蓄積するために、コンデンサパック１３６は少なくとも５年間十分な静電容量を持つことを保証する。コンデンサパック１３６内の各コンデンサが蓄積できるエネルギー量は、方程式（１）によって与えられ、式中、Ｅはコンデンサによって蓄積されたエネルギーであり、Ｃはコンデンサの静電容量であり、Ｖｏｐはコンデンサの動作電圧であり、Ｖｍｉｎはコンデンサの遮断電圧である：
Ｅ＝１／２＊Ｃ＊（Ｖｏｐ２−Ｖｍｉｎ２）（１）
一実施形態では、コンデンサパック１３６は、各コンデンサが同じタイプのものである、４つの直列コンデンサとして配置される。したがって、コンデンサパック１３６によって蓄積される総エネルギーは、コンデンサパック１３６内の４つのコンデンサの各々によって蓄積されるエネルギーの合計、すなわちパック内の単一のコンデンサによって蓄積されたエネルギーのおよそ４倍である。さらに、コンデンサパック１３６の動作電圧は、コンデンサパック１３６内の４つのコンデンサの動作電圧の合計、すなわちパック内の単一のコンデンサの動作電圧のおよそ４倍である。ＲＡＩＤ制御装置１００は、コンデンサパック１３６の各コンデンサの全域で電圧が総コンデンサパック１３６電圧のおよそ４分の１になるようバランスをとるように、クアド演算増幅器（ｑｕａｄ  ｏｐｅｒａｔｉｏｎａｌ  ａｍｐｌｉｆｉｅｒ）回路を用いるアクティブバランスイコライザ（ａｃｔｉｖｅ  ｂａｌａｎｃｅ  ｅｑｕａｌｉｚｅｒ）回路を含む。一実施形態では、コンデンサパック１３６内の個々のコンデンサの各々の周囲温度および動作電圧はおよそ同じであると仮定され、その結果、個々のコンデンサの各々の寿命はおよそ同じである。コンデンサパック１３６内の個々のコンデンサの各々の寿命が、温度と個々の電圧示数に基づいて計算され、最低演算寿命を有するコンデンサの寿命がコンデンサパック１３６全体の寿命を制限する別の実施形態が考えられる。
【００９５】
一実施形態では、コンデンサパック１３６の個々のコンデンサが元の静電容量値から３０％の静電容量低下を受けた場合、コンデンサパック１３６用の寿命末期は条件として選択される。一実施形態では、３０％の静電容量低以下に達した場合、コンデンサパック１３６は、通常の動作電圧でバックアップを実行するために十分なエネルギーをもはや蓄積できない。別の実施形態では、エラーに若干の余裕を与えるために３０％の静電容量低以下の寿命値が選択される。すなわち、コンデンサパック１２６内のコンデンサは、通常の動作電圧でバックアップを実行するための十分なエネルギーをもはや蓄積できないためには、３０％を超える静電容量低下を実際に受けなければならない可能性がある。３０％の静電容量低下値は、本明細書で本発明を例示するために使用される。しかし、本発明は特定の静電容量低下値に限定されるものではなく、むしろ、本発明は、バックアップを実行するために要求されるエネルギー量と、用いられる特定のコンデンサの特徴とに応じて、他の静電容量低下値で実施され得る点を理解されたい。図８の表８００で指定された寿命値は、コンデンサパック１３６の個々のコンデンサが、その元の静電容量値から、その寿命末期の静電容量低下割合に達する前に、指定された温度および電圧で動作することが可能な時間数を示す。したがって、表８００に記憶された各寿命値は、指定された寿命の間にコンデンサパック１３６が指標付きの温度および電圧で動作された場合、その全体にわたって、コンデンサパック１３６が少なくとも所定のエネルギー量を蓄積する能力を持つことになる指定寿命として理解され得る。一実施形態では、所定のエネルギー量は、非揮発性メモリ１０８にフルサイズの書込みキャッシュ１５６をバックアップする目的で十分なエネルギーを供給するために要求される計算されたエネルギー量である。
【００９６】
一実施形態では、図８の表８００は、コードフラッシュ１０６内の２次元アレイとして記憶され、ＲＡＩＤ制御装置１００が起動された場合、ＣＰＵサブシステム１１２のプログラムＲＡＭに複写され、その結果、ＣＰＵ１１２は、サンプリングされた温度値と電圧値とを使用して表８００内の寿命を調べることができる。図８の実施形態では、ＲＡＩＤ制御装置１００は、表８００に示されるように、２つの異なる電圧、すなわち、８．２Ｖおよび７．２Ｖでコンデンサパック１３６を動作することをサポートする。表８００で、８．２Ｖの動作電圧はアレイの指標０を占有し、７．２Ｖの動作電圧はアレイの指標１を占有する。有利には、本明細書に説明されるのは、コンデンサパック１３６の寿命を高めるために、必要に応じて、コンデンサパック１３６の動作電圧をより低い電圧レベルに動的に低減する、または絞る方法である。図８の実施形態は２つの可能な動作電圧だけを例示するが、本発明は２つの動作電圧に限定されず、むしろ、多くの動作電圧を有する実施形態が考えられる。さらに、これら例示されたもの以外の動作電圧値を有する実施形態が考えられる。例示的な実施形態では、４つのコンデンサ１３６が直列で配置され、ＣＰＵ１１２によって制御されるコンデンサパック１３６の動作電圧に応じて、各コンデンサ１３６はおよそ２．０５Ｖまたは１．８Ｖで動作する。アレイ８００は、２つの電圧に対応する２つの列を含む。アレイ８００の行は、温度値によって指標付けされる。各行は異なる整数の摂氏温度に対応する。図８の実施形態の表８００は、摂氏１０度から摂氏４０度までの周囲温度値を含む。例えば、図８に示されるように、摂氏４０度と８．２Ｖ（すなわち、コンデンサ当り２．０５Ｖ）での寿命は８００時間であり、７．２Ｖ（すなわち、コンデンサ当り１．８Ｖ）では８２０時間である。一実施形態では、固定された動作電圧値を仮定すると、コンデンサパック１３６内のコンデンサの特性は、寿命値が温度の対数関数に近似するようなものである。残りの図面に関して以下で説明されるように、累積された正規化された実行時間１５２と、関連する値とを計算するために、ＣＰＵ１１２は、指定された寿命を取得するのに表８００を指標付けする目的でサンプリングされた温度値と電圧値とを使用する。
【００９７】
以上で説明されたように、一実施形態では、保証寿命は５年である。しかし、表８００の仮定値に関して説明するために、１０００時間の保証寿命を仮定する。表８００から観測され得るように、コンデンサパック１３６が８．２Ｖおよび摂氏２５度で継続的に動作される場合、このコンデンサパック１３６は保証された１０００時間の寿命を有することになる、すなわち、１０００時間の後、その寿命末期の静電容量低下割合（例えば、３０％）に達することになる。対照的に、コンデンサパック１３６が７．２Ｖおよび摂氏２８度で継続的に動作される場合、このコンデンサパック１３６は保証された１０００時間の寿命を有することになる、すなわち、１０００時間の後、その寿命末期の静電容量低以下に達することになる。したがって、コンデンサパック１３６を８．２Ｖで動作する場合の「通常」温度は２５度であり、７．２Ｖで動作する場合の「通常」温度は２８度である。すなわち、所与の動作電圧に関して、通常温度は、コンデンサパック１３６寿命が保証寿命を満たす温度であり、または余裕が所望される場合、保証寿命を超える温度である。しかし、表８００の値は、コンデンサの温度および電圧が一定値に維持される実験条件で実験的に導かれることが可能であるが、コンデンサパック１３６がコンピュータシステム内のＲＡＩＤ制御装置１００内で動作する場合、温度は通常温度とは異なる可能性がある。同様に、以下に説明されるように、保証寿命を実現することを試みるためにコンデンサパック１３６の寿命を高める目的で、コンデンサパック１３６の動作電圧は、必要に応じて、意図的に動的に調整されることが可能であると有利である。したがって、有利には、本発明は、図９に関して以下で説明されるように、ＲＡＩＤ制御装置１００が、特定の動作電圧レベルのための通常温度に対する表８００から取得された寿命値を正規化する方法を説明する。
【００９８】
一実施形態では、各コンデンサの動作電圧を２．０５Ｖ、また信頼性のあるＦＥＴゲート閾値のための最低作動電圧および低いドロップアウト調整を定義する遮断電圧を０．８Ｖと仮定すると、コンデンサパック１３６は、完全に充電された場合、完全な静電容量で、およそ３５６ジュールの利用可能なエネルギーを蓄積する直列の５０ファラドコンデンサを４つ含む。対照的に、３０％の静電容量低以下で、コンデンサパック１３６は２５０ジュールだけ蓄積することが可能である。コンデンサパック１３６は、各コンデンサの動作電圧を１．８Ｖと仮定すると、２６０ジュールの利用可能なエネルギーを蓄積することが可能である。対照的に、３０％の静電容量低以下で、コンデンサパック１３６は１８２ジュールだけ蓄積することが可能である。一実施形態では、キャッシュメモリ１０４、非揮発性メモリ１０８、メモリ制御装置１０２、電力管理装置１３２、ＤＤＲ−ＳＤＲＡＭバスインターフェース端末回路、クロッキング（ｃｌｏｃｋｉｎｇ）回路、およびフラッシュ動作の間に電力を要求するその他の種々の回路の電力消費は、およそ４ワットである。非揮発性メモリ１０８は、およそ毎秒１０ＭＢの維持速度で書き込まれていることが可能である。一実施形態では、キャッシュメモリ１０４のサイズは、フルサイズの書込みキャッシュ１５６用のおよそ５１２ＭＢを含む１ＧＢであり、非揮発性メモリのサイズは５１２ＭＢである。その結果、フラッシュ動作は、完了するのにおよそ５０秒かかり、およそ２００ジュールのエネルギーを消費する。したがって、観測され得るように、コンデンサパック１３６がより低い７．２Ｖレベルで動作している場合、コンデンサパック１３６が３０％の静電容量低下寿命末期に達する前でさえ、コンデンサパック１３６は、書込みキャッシュ１５６全体をバックアップするために十分なエネルギーを蓄積できない可能性がある。有利には、本明細書で説明されるのは、書込みキャッシュ１５６をコンデンサパック１３６がバックアップを実行するために十分なエネルギーを供給できるサイズに動的に低減する方法である。
【００９９】
保証寿命が非揮発性メモリ１０８バックアップに対して書込みキャッシュ１５６を実行するために要求される所定のエネルギー量に基づく実施形態が本明細書で説明されるが、本明細書で説明される、コンデンサパック１３６の寿命監視方法と、動的電圧スロットリング方法とはかかるアプリケーションに限定されない。むしろ、保証寿命が他の機能を実行するために要求される所定のエネルギー量に基づく他の実施形態が考えられる。例えば、ＲＡＩＤ制御装置１００が書込みキャッシュ１５６をバックアップするための非揮発性メモリ１０８を含まず、所定のエネルギー量は、主電源が回復されるまで書込みキャッシュ１５６内のデータの完全性を維持するために、主電源の損失の間、所定の時間量（例えば、３日）の間、揮発性メモリ１０４に電力を供給するために要求されるエネルギー量である実施形態が考えられる。
【０１００】
次に図９を参照すると、本発明による図１のＲＡＩＤ制御装置１００の動作を例示するフローチャートが示される。特に、図９は、ＲＡＩＤ制御装置１００が、コンデンサパック１３６の累積された正規化された実行時間１５２を計算する方法を例示する。フローチャートはブロック９０２で始まる。
【０１０１】
ブロック９０２で、ＣＰＵ１１２は累積された正規化された実行時間１５２と、累積された歴実行時間１５４とを初期化する。一実施形態では、累積された正規化された実行時間１５２と、累積された歴実行時間１５４とは、ＲＡＩＤ制御装置１００が製造されるときに初期化される。一実施形態では、累積された正規化された実行時間１５２と、累積された歴実行時間１５４とは、ゼロに初期化される。別の実施形態では、累積された正規化された実行時間１５２と、累積された歴実行時間１５４とは、コンデンサパックの製造会社によって指定されたようになど、コンデンサパックの静電容量値の許容因数に基づく時間量に初期化される。例えば、コンデンサ製造会社が１０％の許容を指定する場合、累積された正規化された実行時間１５２と、累積された歴実行時間１５４とは、寿命末期値の１０％（例えば、５年の１０％）に初期化される。別の実施形態では、累積された正規化された実行時間１５２と、累積された歴実行時間１５４とは、コンデンサパック１３６の製造時からの時間量など、歴年齢に初期化される。累積された正規化された実行時間１５２と、累積された歴実行時間１５４とが、許容値と歴年齢の組合せに基づく値に初期化される別の実施形態が考えられる。累積された正規化された実行時間１５２と、累積された歴実行時間１５４とが、エラーの所望される誤差限界に基づく値に初期化される別の実施形態が考えられる。フローはブロック９０４に進む。
【０１０２】
ブロック９０４で、ＣＰＵ１１２は、それぞれ、図１の温度センサ１４２と電圧センサ１４４とを経由して、より大きな時間間隔にわたって、コンデンサパック１３６の温度と電圧とを定期的にサンプリングし、サンプリングされた温度と電圧とを平均化する。一実施形態では、サンプル期間は１５秒であり、平均間隔は１時間である。より大きな間隔にわたってサンプリングされた値を平均化し、値がサンプリングされるごとにではなく、より大きな時間間隔ごとに１回、累積された正規化された実行時間１５２と、累積された歴実行時間１５４とを非揮発性１０８に書き込むことの利点は、消費されるＣＰＵ１１２帯域幅の量を低減し、非揮発性メモリ１０８に対して書込み周期の最大数を超えることを潜在的に回避することである。フローはブロック９０６に進む。
【０１０３】
ブロック９０６で、ＣＰＵ１１２は、平均化された温度と電圧とに関して寿命を取得するために、図８の表８００に指標付けすることによって、ブロック９０４の平均化された温度と電圧での寿命を調べる。一実施形態では、平均化された温度と電圧値とは、必要に応じて、次の最高値に切り上げられる。例えば、平均温度が３０．８度である場合、図８の表８００内への指標として使用するために値は３１度に切り上げられる。同様に、サンプリングされた平均電圧が７．８Ｖである場合、値は８．２Ｖに切り上げられ、表８００内への電圧指標は０である。代替実施形態では、寿命値が温度および電圧の関数によって表現されやすい場合、寿命値は表８００を調べるのではなく、関数から計算されてよい点に留意されたい。この実施形態の潜在的な不利点は、特に、浮動小数点計算を実行するために、表を調べる方法よりも多くの演算処理能力（ｃｏｍｐｕｔａｔｉｏｎ  ｂａｎｄｗｉｄｔｈ）をＣＰＵ１１２に要求する可能性があることである。しかし、この実施形態の潜在的な利点は、表を調べる方法よりも温度および電圧の値より細かな粒度（ｇｒａｎｕｌａｒｉｔｙ）を可能にすることができる点である。フローはブロック９０８に進む。
【０１０４】
ブロック９０８で、ＣＰＵ１１２は、間隔をブロック９０６で得られた寿命値に対する保証寿命の比率で乗じることによって間隔を正規化する。例えば、間隔が１時間であり、保証寿命が１０００時間であり、（測定された温度および／または電圧は、通常温度および電圧よりも低いため）ブロック９０６で得られた寿命が２０００時間であると仮定すると、正規化された間隔は、１時間＊（１０００／２０００）＝０．５時間となる。したがって、正規化された間隔は間隔の歴時間未満であり、それにより、事実上、１時間の歴動作間隔の間、１時間未満のコンデンサパック１３６寿命が低減されたことを示す。対照的に、（測定された温度および／または電圧は、通常温度および電圧よりも高いため）ブロック９０６で得られた寿命は単に５００時間であると仮定すると、正規化された間隔は、１時間＊（１０００／５００）＝２時間となる。したがって、正規化された間隔は間隔の歴時間を超え、それにより、事実上１時間の歴動作間隔の間、１時間を越えるコンデンサパック１３６寿命が低減されたことを示す。フローはブロック９１２に進む。
【０１０５】
ブロック９１２で、ＣＰＵ１１２は、ブロック９０４の間隔にわたって、ブロック９０４で得られた平均温度および平均電圧でのコンデンサパック１３６の動作の効果を反映する、最新の累積された正規化された実行時間１５２値を生み出すために、ブロック９０８で計算された正規化された間隔を累積された正規化された実行時間１５２に追加する。加えて、ＣＰＵ１１２は、最新の累積された歴実行時間１５４値を生み出すために、平均間隔（すなわち、正規化されていない間隔、例えば、１時間）を累積された歴実行時間１５４に追加する。フローはブロック９１４に進む。
【０１０６】
ブロック９１４で、ＣＰＵ１１２は、ブロック９１２で計算された最新の累積された正規化された実行時間１５２と、累積された歴実行時間１５４とを非揮発性メモリ１０８に書き込み、その結果、これらの値は主電源の損失全体にわたって維持され、後に、ＲＡＩＤ制御装置１００が再起動された後で、再び使用されることが可能である。フローはブロック９１６に進む。
【０１０７】
ブロック９１６で、ＣＰＵ１１２は、保証寿命に対する累積された正規化された実行時間１５２の比率として使用される正規化された保証寿命の割合を計算する。例えば、累積された正規化された実行時間１５２が２００時間であり、保証寿命が１００時間である場合、コンデンサパック１３６の使用された正規化された保証寿命の割合は２０％である。すなわち、事実上、保証寿命の２０％が消耗されており、事実上、８００時間の寿命が残っている。フローはブロック９１８に進む。
【０１０８】
ブロック９１８で、ＣＰＵ１１２は、ブロック９１６で計算された、使用された正規化された保証寿命の割合と寿命末期の静電容量低下割合の積として、コンデンサパック１３６の静電容量低下割合を計算する。例えば、寿命末期の静電容量低下割合が３０％であり、ブロック９１６で計算された、使用された正規化された保証寿命の割合が２０％である場合、コンデンサパック１３６の静電容量低下割合は６％である。フローはブロック９２２に進む。
【０１０９】
ブロック９２２で、ＣＰＵ１１２は、ブロック９１８で計算されたコンデンサパック１３６の静電容量低下割合をユーザに報告する。さらに、ユーザは、静電容量低下割合が、有効範囲にあるか、警告範囲にあるか、または失敗範囲にあるかを通知される。一実施形態では、静電容量低下割合が寿命末期の静電容量低下割合の１％以内である場合、ユーザは寿命末期が近づいていることを警告される。一実施形態では、ユーザは寿命末期が近づいていることを通知されることになる範囲を入力することが可能である。一実施形態では、ユーザはまた、静電容量低下割合と比較するために、寿命末期の静電容量低下割合も通知される。一実施形態では、ＣＰＵ１０８はまた、保証寿命から、累積された正規化された実行時間１５２を差し引いたものとして、計算された正規化された寿命時間の残りの数もユーザに報告する。一実施形態では、コンデンサパック１３６の温度および電圧ならびにコンデンサパック１３６内の各コンデンサの電圧がユーザに報告される。一実施形態では、情報はシリアルインターフェースを経由してユーザに提供される。一実施形態では、情報は、イーサネット（登録商標）インターフェース上のＴＣＰ／ＩＰ接続経由など、ウェブブラウザインターフェースを経由してユーザに提供される。フローは、別の間隔に関してコンデンサパック１３６寿命を監視するためにブロック９０４に戻る。
【０１１０】
図９から観測され得るように、ＲＡＩＤ制御装置１００は、有利には、事実上、その保証寿命に対する、コンデンサパック１３６の年齢または寿命の尺度である、累積された正規化された実行時間１５２を計算する。その全体にわたって、コンデンサパック１３６が動作される暦時間間隔の合計である、累積された歴実行時間１５４と対照的に、累積された正規化された実行時間１５２は、累積された歴実行時間１５４を構成する暦時間間隔に対応する正規化された実行時間の合計である。正規化された実行時間は、間隔の間にサンプリングされた平均動作電圧での通常温度に対する、間隔の間にサンプリングされた平均温度に関して、表８００の寿命示数を正規化することによって計算される。したがって、累積された正規化された実行時間１５２は、コンデンサパック１３６の歴年齢よりも、コンデンサパック１３６の有効年齢のより重要かつ正確な尺度を提供し、コンデンサパック１３６の静電容量測定の放電／再充電方法に関連する有害な性能影響を受けずにこれを行う。
【０１１１】
図９で説明される実施形態では、累積された正規化された実行時間１５２と、累積された歴実行時間１５４とは、ＲＡＩＤ制御装置１００の動作の間、特に、ＣＰＵ１１２の動作の間だけ更新される点に留意されたい。特に、これらの値は、ＲＡＩＤ制御装置１００全体の電力が停止された場合、および（図５の実施形態では事実ではないが）図１の実施形態で事実である、非揮発性メモリ１０８に対する書込みキャッシュ１５６のバックアップの間に、ＣＰＵ１１２の電力が停止された場合、更新されない。しかし、ＲＡＩＤ制御装置１００の電力が停止されている場合、コンデンサパック１３６上の充電は、一般に、比較的早く使い果たされ、それにより、電圧が減少することになる。また、電圧がより低いと、コンデンサパック１３６の老化は非常に遅い。したがって、電力停止時間は、およそ５年程度の保証寿命を有する実施形態に関しては深刻でない可能性が高い。しかし、保証寿命が相当少ない実施形態では、電力停止時間が考慮に入れられてよい。これは、未使用の間、エネルギーを蓄積する能力が相当低下するバッテリと対照的である。さらに、バックアップを実行するために要求される時間量は、分程度である。したがって、高温で正規化される場合であっても、バックアップ時間は、およそ５年程度の保証寿命を有する実施形態に関して深刻でない可能性が高い。しかし、保証寿命が相当少ない実施形態では、バックアップ時間が考慮に入れられてよい。
【０１１２】
次に図１０を参照すると、本発明による図１のＲＡＩＤ制御装置１００の動作を例示するフローチャートが示される。特に、図１０は、ＲＡＩＤ制御装置１００が、必要な場合、コンデンサパック１３６の累積された正規化された実行時間１５２を延長するために、コンデンサパック１３６の動作電圧を絞る方法を例示する。図１０はまた、必要に応じて、ＲＡＩＤ制御装置１００が書込みキャッシュ１５６サイズを動的に低減する方法も例示する。フローはブロック１００２で始まる。
【０１１３】
ブロック１００２で、ＣＰＵ１１２は、コンデンサパック１３６の温度が第１の所定の閾値を超えたことを検出する。一実施形態では、第１の所定の閾値は摂氏５１度である。図１０は、コンデンサパック１３６の温度が閾値を超えたことを検出したことに応答して、コンデンサパック１３６の動作電圧が絞られ、書込みキャッシュ１５６サイズが調整された実施形態を開示するが、本明細書で説明される電圧の絞り方法および書込みキャッシュ１５６サイズ調整方法とは、この実施形態に限定されない。むしろ、他の理由で、ＲＡＩＤ制御装置１００が動作電圧を絞り、書込みキャッシュ１５６サイズを調整する他の実施形態が考えられる。例えば、一実施形態では、図９の各間隔の終りに、ＣＰＵ１１２が累積された正規化された実行時間１５２と、累積された歴実行時間１５４とを計算する場合、ＣＰＵ１１２は、電圧スロットリングおよび／または書込みキャッシュ１５６サイズ調整が必要かどうかを判断するために、ブロック１００４に進む。別の例では、コンデンサパック１３６の温度は第１の閾値を超えていない可能性があるが、ＲＡＩＤ制御装置１００は、コンデンサパック１３６がその寿命末期に達したと判断し、書込みキャッシュ１５６サイズが小さいにもかかわらず、ＲＡＩＤ制御装置１００を交換する代わりに動作を継続するオプションをユーザに与えることを判断してもよい。フローはブロック１００４に進む。
【０１１４】
ブロック１００４は、ＣＰＵ１１２は、累積された正規化された実行時間１５２と、累積された歴実行時間１５４とに基づいて、コンデンサパック１３６の予測される寿命を計算する。特に、予測される寿命は、保証寿命と、累積された正規化された実行時間１５２に対する累積された歴実行時間１５４の比率の積として計算される。例えば、保証寿命が１０００時間であり、累積された歴実行時間１５４が３００時間であり、累積された正規化された実行時間１５２が２００時間である場合、予測される寿命は１０００時間＊（３００／２００）＝１５００時間である。フローは判断ブロック１００６に進む。
【０１１５】
判断ブロック１００６で、ＣＰＵ１１２は、予測される寿命が保証寿命未満であるかどうかを判断するために、ブロック１００４で計算された、コンデンサパック１３６の予測される寿命を保証寿命と比較する。そうである場合、フローは判断ブロック１００８に進む。そうでない場合、フローは判断ブロック１０２４に進む。
【０１１６】
判断ブロック１００８で、ＣＰＵ１１２は、コンデンサパック１３６がすでに現在最低電圧レベルで動作しているかどうかを判断する。２つの電圧レベル（例えば、８．２Ｖおよび７．２Ｖ）だけが提供される例では、最低電圧は７．２Ｖである。しかし、３つ以上の電圧レベルが提供される他の実施形態が考えられる。より多い電圧レベルを提供することの利点は、より細かい粒度は書込みキャッシュ１５６のより細かい粒度調整を可能にできる点であるが、不利点は、電圧調整と書込みキャッシュ１５６サイズ調整とを行うために、より複雑な電圧調整回路およびソフトウェアを潜在的に要求することである。コンデンサパック１３６がすでに現在最低電圧レベルで動作している場合、フローはブロック１０２２に進む。そうでない場合、フローはブロック１０１２に進む。
【０１１７】
ブロック１０１２で、ＣＰＵ１１２は、コンデンサパック１３６の動作電圧が減少されたに違いないことを判断し、したがって、ＣＰＵ１１２は、その累積された正規化された実行時間１５２に基づいて、次に低い動作電圧でコンデンサパック１３６が蓄積できるエネルギー量によってバックアップされ得る書込みキャッシュ１５６のサイズを計算する。例えば、フルサイズが５１２ＭＢである書込みキャッシュ１５６と、８．２Ｖ（コンデンサ当り２．０５Ｖ）および７．２Ｖ（コンデンサ当り１．８Ｖ）の２つの電圧レベルとを仮定する。コンデンサパック１３６内の個々のコンデンサの数は異なる可能性があるが、単一のコンデンサに関する静電容量低下割合の計算は、コンデンサパック１３６全体の静電容量低下割合に相当する。Ｃ０がコンデンサの元の静電容量である場合、３０％の寿命末期の静電容量低下割合後に、通常の２．０５Ｖの動作電圧でコンデンサ内に蓄積されたエネルギーは、Ｅ２．０５，３０％  ｃａｐａｃｉｔａｎｃｅ  ｄｒｏｐ＝１／２＊０．７Ｃ０＊（２．０５２−０．８２）＝１／２＊Ｃ０＊２．４９４である。０％の静電容量低以下により、より低い１．８Ｖの動作電圧でコンデンサ内に蓄積されたエネルギーは、Ｅ１．８，  ｎｏ  ｃａｐａｃｉｔａｎｃｅ  ｄｒｏｐ＝１／２＊Ｃ０＊（１．８２−０．８２）＝１／２＊Ｃ０＊２．６である。２．６は２．４９４より大きいため、コンデンサパック１３６は、フルサイズの５１２ＭＢ書込みキャッシュ１５６をバックアップするために十分なエネルギーを蓄積できる。したがって、以下のブロック１０１４で判断されることになるように、書込みキャッシュ１５６サイズ調整は不要である。しかし、すでに１０％の静電容量低下が存在する場合、蓄積されたエネルギーは、Ｅ１．８，１０％  ｃａｐａｃｉｔａｎｃｅ  ｄｒｏｐ＝１／２＊Ｃ＊２．３４である。２．３４は２．４９４未満であるため、コンデンサパック１３６は、（２．３４／２．４９４）＊５１２ＭＢ＝４８０ＭＢ書込みキャッシュ１５６だけをバックアップするために十分なエネルギーを蓄積している。同様に、すでに２０％の静電容量低下が存在する場合、蓄積されたエネルギーは、Ｅ１．８，２０％  ｃａｐａｃｉｔａｎｃｅ  ｄｒｏｐ＝１／２＊Ｃ＊２．０８である。したがって、コンデンサパック１３６は、（２．０８／２．４９４）＊５１２ＭＢ＝４２７ＭＢ書込みキャッシュ１５６だけをバックアップするために十分なエネルギーを蓄積している。一実施形態では、ＣＰＵ１１２上で実行するソフトウェアは、それぞれの可能な動作電圧レベルについて、ゼロから寿命末期の静電容量低下割合までの各静電容量低下割合に関して、書込みキャッシュ１５６サイズ値の表を維持する。表は、図９のブロック９１８で計算されたものなど、静電容量低下割合によって指標付けされる。一実施形態では、ブロック９１８で計算されている後で、静電容量低下割合も、非揮発性メモリ１０８に書き込まれる。フローは判断ブロック１０１４に進む。
【０１１８】
判断ブロック１０１４で、ＣＰＵ１１２は、ブロック１０１２で計算された書込みキャッシュ１５６サイズが現在の書込みキャッシュ１５６サイズ未満かどうかを判断する。そうである場合、フローはブロック１０１６に進む。そうでない場合、フローはブロック１０１８に進む。
【０１１９】
ブロック１０１６で、ＣＰＵ１１２は、書込みキャッシュ１５６サイズをブロック１０１２で計算されたサイズに低減する。一実施形態では、ＣＰＵ１１２は、ホストＩ／Ｏ要求の処理を一時停止するステップと、書込みキャッシュ１５６をフラッシュするステップと、書込みキャッシュを所望されるサイズに低減するステップと（また、オプションで、それに応じて、読取りキャッシュサイズを増加するステップと）、ホストＩ／Ｏ処理を再開するステップとによって、書込みキャッシュ１５６サイズを低減する。一実施形態では、ホストＩ／Ｏ要求の処理が一時停止される時間量を低減するために、ＣＰＵ１１２は、一般に、読取りキャッシュに隣接することになる部分である、書込みキャッシュ１５６から除去されることになる（また、オプションで、読取りキャッシュに加えられることになる）書込みキャッシュ１５６の部分だけをフラッシュする。一実施形態では、ＣＰＵ１１２はまた、新しい書込みキャッシュ１５６および読取りキャッシュ１５８のサイズも非揮発性メモリ１０８に書き込み、その結果、ＲＡＩＤ制御装置１００の再起動後、ＣＰＵ１１２は書込みキャッシュ１５６および読取りキャッシュ１５８のサイズを新しい値に構成することが可能である。フローはブロック１０１８に進む。
【０１２０】
ブロック１０１８で、ＣＰＵ１１２は、コンデンサパック１３６の寿命を高めるために、コンデンサパック１３６の動作電圧を次の電圧レベルに低減する。一実施形態では、ＲＡＩＤ制御装置１００は、動作電圧が低減されていることもユーザに通知する。一実施形態では、ＣＰＵ１１２は、新しい動作電圧も非揮発性メモリ１０８に書き込み、その結果、ＲＡＩＤ制御装置１００の再起動後、ＣＰＵ１１２は、動作電圧を新しい値に設定することができる。一実施形態では、電力管理装置１３２は、ＣＰＵ１１２がコンデンサパック１３６の動作電圧を調整するために書き込む制御レジスタを含む。フローは判断ブロック１０２６に進む。
【０１２１】
ブロック１０２２で、ＣＰＵ１１２は、コンデンサパック１３６の寿命を高めるために、コンデンサパック１３６の電圧は低減される必要があるが、コンデンサパック１３６はすでに最低電圧レベルで動作しており、したがって、低減されることができないと判断した。その結果、ＣＰＵ１１２は、この状態の警告メッセージをユーザに発行する。フローは判断ブロック１０２６に進む。
【０１２２】
判断ブロック１０２４で、ＣＰＵ１１２は、コンデンサパック１３６の温度が第２の所定の閾値を超えているかどうかを判断する。一実施形態では、第２の所定の閾値は摂氏５５度である。温度が第２の閾値を超える場合、ブロック１００４で計算されたコンデンサパック１３６の予測される寿命が少なくとも保証寿命と同じほど大きいという事実にもかかわらず、コンデンサパック１３６の動作電圧を低減するために、また必要に応じて、書込みキャッシュを低減するために、フローは判断ブロック１００８に進む。温度が第２の閾値を超えていない場合、フローは終了する。
【０１２３】
判断ブロック１０２６で、ＣＰＵ１１２は、コンデンサパック１３６の温度が第３の所定の閾値を超えたかどうかを判断する。一実施形態では、第３の所定の閾値は摂氏５９度である。温度が第３の所定の閾値を超えた場合、フローはブロック１０２８に進む。そうでない場合、フローは終了する。
【０１２４】
ブロック１０２８で、ＣＰＵ１１２は、コンデンサパック１３６の寿命がその保証寿命を超えて時期尚早に低減することを避けるために、コンデンサパック１３６の充電を動作不能にする。鋭い温度上昇の最も考えられる原因は、コンデンサパック１３６の過剰充電およびシステム内の冷却ファンの故障である。加えて、コンデンサパック１３６が完全に充電されておらず、したがって、非揮発性メモリ１０８に対する書込みキャッシュ１５６のバックアップに電力を供給するための十分なエネルギーが蓄積されない可能性が高いことになる場合、ＣＰＵ１１２は、書込みキャッシュ１５６をライトスルーモードに設定する。フローはブロック１０２８で終了する。一実施形態では、ＣＰＵ１１２は、所定の時間量を遅らせて、次いで、コンデンサパック１３６の充電を再開しようと試みる。
【０１２５】
図１０から観測され得るように、ＲＡＩＤ制御装置１００は、累積された正規化された実行時間１５２に基づいて、コンデンサパック１３６の保証寿命が満たされないことになる場合、その寿命を高めるためにコンデンサパック１３６の動作電圧を低減すると有利である。さらに、ＲＡＩＤ制御装置１００が、コンデンサパック１３の静電容量が、コンデンサパック１３６が書込みキャッシュ１５６のバックアップをサポートするために新しい動作電圧で十分なエネルギーを蓄積できているのを妨げる量を低下させたことを判断する場合、ＲＡＩＤ制御装置１００は、書込みキャッシュ１５６サイズを、コンデンサパック１３６がバックアップをサポートできる量に低減すると有利である。
【０１２６】
次に図１１を参照すると、本発明による図１のＲＡＩＤ制御装置１００の動作を例示するフローチャートが示される。特に、フローチャートは、適切な場合、動作電圧と書込みキャッシュ１５６サイズとを増加するＲＡＩＤ制御装置１００を例示する。フローはブロック１１０２で始まる。
【０１２７】
ブロック１１０２で、ＣＰＵ１１２は、ＲＡＩＤ制御装置１００が現在、通常サイズまたはフルサイズの書込みキャッシュ１５６サイズ未満の書込みキャッシュ１５６サイズで動作しており、書込みキャッシュ１５６サイズが低減されてから相当な時間量が経過したことを検出する。一実施形態では、非効率につながる可能性のある、書込みキャッシュ１５６サイズを頻繁に調整することを避けるために、時間量はおよそ２時間である。フローはブロック１１０４に進む。
【０１２８】
ブロック１１０４で、図１０のブロック１００４で実行されたステップ同様に、ＣＰＵ１１２は、累積された正規化された実行時間１５２と、累積された歴実行時間１５４とに基づいて、コンデンサパック１３６の予測される寿命を計算する。フローはブロック１１０６に進む。
【０１２９】
判断ブロック１１０６で、ＣＰＵ１１２は、予測される寿命が保証寿命未満であるかどうかを判断するために、ブロック１１０４で計算されたコンデンサパック１３６の予測される寿命を保証寿命と比較する。保証寿命未満でない場合、フローは終了する。そうでない場合、フローは判断ブロック１１０８に進む。一実施形態では、ＣＰＵ１１２は、書込みキャッシュ１５６サイズの調整に関してスラッシング（ｔｈｒａｓｈｉｎｇ）を引き起こすことを避けるために、厳密に保証寿命未満であるかではなく、予測される寿命が所定の割合だけ保証寿命未満であるかどうかを判断する。
【０１３０】
判断ブロック１１０８で、ＣＰＵ１１２は、コンデンサパック１３６がすでに現在最高電圧レベルで動作しているかどうかを判断する。そうである場合、フローは終了する。そうでない場合、フローはブロック１１１２に進む。
【０１３１】
ブロック１１１２で、ＣＰＵ１１２は、コンデンサパック１３６の動作電圧を次の電圧レベルに増加する。フローはブロック１１１４に進む。
【０１３２】
ブロック１１１４で、ＣＰＵ１１２は、コンデンサパック１３６が、コンデンサパック１３６の累積された正規化された実行時間１５２に基づいて、ブロック１１１２で設定された新しい動作電圧で蓄積できるエネルギーによってバックアップされ得る書込みキャッシュ１５６のサイズを計算する。フローはブロック１１１６に進む。
【０１３３】
ブロック１１１６で、ＣＰＵ１１１２は、書込みキャッシュ１５６サイズをブロック１１１４で計算された値に増加する。一実施形態では、ＣＰＵ１１２は、ホストＩ／Ｏ要求の処理を一時停止するステップと、書込みキャッシュ１５６を所望されるサイズに増加するステップと、ホストＩ／Ｏ処理を再開するステップとによって、書込みキャッシュ１５６サイズを増加する。書込みキャッシュ１５６サイズの減少と調整的に（ｃｏｏｒｄｉｎａｔｅｌｙ）読取りキャッシュ１５８サイズが増加される、図１０のブロック１０１６に関して説明された実施形態に関して、ブロック１１１６で、ＣＰＵ１１２は、ホストＩ／Ｏ要求の処理を一時停止した後に現在未解決の読取り要求のすべてを完了し、次いで、それに応じて、書込みキャッシュサイズを増加する前に、読取りキャッシュサイズを低減する。フローはブロック１１１６で終了する。
【０１３４】
図１１から観測され得るように、ＲＡＩＤ制御装置１００は、累積された正規化された実行時間に基づいて、そうすることが安全であると判断した後に、動作電圧と書込みキャッシュ１５６サイズとを増加すると有利である。
【０１３５】
次の図１２を参照すると、本発明による図１のＲＡＩＤ制御装置１００の動作を例示するフローチャートが示される。特に、図１２のフローチャートは、ＲＡＩＤ制御装置１００の起動中に、コンデンサパック１３６が時期尚早に老化するのを避けるためのＲＡＩＤ制御装置１００の動作を例示する。フローはブロック１２０２で始まる。
【０１３６】
ブロック１２０２で、主電源がＲＡＩＤ制御装置１００に加えられる。これは、コンデンサパック１３６が、完全にでなければ、少なくとも部分的に、放電されたことを意味する。フローはブロック１２０４に進む。
【０１３７】
ブロック１２０４で、電力管理装置１３２は、コンデンサパック１３６を充電し始める。フローはブロック１２０６に進む。
【０１３８】
ブロック１２０６で、コンデンサパック１３６は完全に充電されておらず、したがって、非揮発性メモリ１０８へのバックアップ動作に対して書込みキャッシュ１５６を実行するために十分なエネルギーを供給できない可能性があるため、ＣＰＵ１１２は、書込みキャッシュ１５６をライトスルーモードに設定する。フローはブロック１２０８に進む。
【０１３９】
ブロック１２０８で、ＣＰＵ１１２は、それぞれ、図１の温度センサ１４２と、電圧センサ１４４と、電流センサ１４６とを経由して、コンデンサパック１３６の温度、電圧、および電流引込みを定期的にサンプリングする。一実施形態では、そうでない場合、保証寿命超えてコンデンサパック１３６を時期尚早に老化させる可能性がある温度または電流の増加をより速やかに検出するために、サンプリング期間は、非充電サンプリング期間よりも短い、その間、コンデンサパック１３６が充電されている全時間中の３秒である。フローは判断ブロック１２１２に進む。
【０１４０】
判断ブロック１２１２で、ＣＰＵ１１２は、コンデンサパック１３６の電流引込みが所定の閾値を超えているかどうかを判断する。一実施形態では、所定の閾値は２Ａｍｐｓである。そうである場合、フローはブロック１２１４に進む。そうでない場合、フローはブロック１２１６に進む。
【０１４１】
ブロック１２１４で、その保証寿命を超えてコンデンサパック１３６が時期尚早に老化するのを避けるために、ＣＰＵ１１２は、コンデンサパック１３６に充電を停止させる。フローはブロック１２１４で終了する。一実施形態では、ＣＰＵ１１２は、所定の時間量を遅らせ、次いで、コンデンサパック１３６の充電を再開することを試み、ブロック１２０８に戻る。
【０１４２】
判断ブロック１２１６で、図１０の判断ブロック１０２６で実行されたステップ同様に、ＣＰＵ１１２は、温度が第３の所定の閾値を超えたかどうかを判断する。温度が第３の所定の閾値を超えた場合、フローはブロック１２１４に進む。そうでない場合、フローは判断ブロック１２１８に進む。
【０１４３】
判断ブロック１２１８で、ＣＰＵ１１２は、コンデンサパック１３６の電圧がその指定された動作電圧レベルに達したかどうかを判断する。一実施形態では、現在の動作電圧レベルが非揮発性メモリ１０８内に蓄積され、結果として、主電源の損失と後続の再起動とが発生した場合、ＣＰＵ１１２は、主電源の損失に先立って動作電圧を判断し、その動作電圧に復元することができる。コンデンサパック１３６の電圧がその指定された動作電圧レベルに達した場合、フローはブロック１２２２に進む。そうでない場合、フローはブロック１２０８に戻る。
【０１４４】
ブロック１２２２で、コンデンサパック１３６は完全に充電されているため、ＣＰＵ１１２は、書込みキャッシュ１５６をライトバックモードに設定する。フローはブロック１２２２で終了する。
【０１４５】
次に図１３を参照すると、本発明の代替実施形態によるＲＡＩＤ制御装置１００の動作を例示するフローチャートが示される。図１３のフローチャートは、図１０と同様に、必要に応じて、ＲＡＩＤ制御装置１００が、コンデンサパック１３６の累積された正規化された実行時間１５２を延長するために、コンデンサパック１３６の動作電圧を絞る方法と、必要に応じて、ＲＡＩＤ制御装置１００が書込みキャッシュ１５６サイズを動的に低減する方法とを例示する。しかし、図１３の実施形態は、動作電圧がスロットリングを必要とするかどうかを判断するために異なる比較を用いる。その結果、図１３のフローチャートは、図１０のフローチャートに類似する。しかし、フローはブロック１００２から、ブロック１００４ではなく、ブロック１３０４に進む。
【０１４６】
ブロック１３０４で、ＣＰＵ１１２は、寿命末期の静電容量低下割合と保証寿命に対する累積された歴実行時間１５４の比率の積として、コンデンサパック１３６の歴時間の静電容量低下割合を計算する。したがって、例えば、寿命末期の静電容量低下割合が３０％である場合、累積された歴実行時間１５４は４００時間であり、保証寿命は１０００時間であり、次いで、歴時間の静電容量低下割合は１２％である。フローは判断ブロック１３０６に進む。
【０１４７】
判断ブロック１３０６で、ＣＰＵ１１２は、静電容量低下割合が、暦時間の静電容量低下割合よりも大きいかどうかを判断するために、図９のブロック９１８で計算された静電容量低下割合を、ブロック１３０４で計算された歴時間の静電容量低下割合と比較する。そうである場合、フローは判断ブロック１００８に進む。そうでない場合、フローは、図１０でのように、判断ブロック１０２４に進む。
【０１４８】
次に図１４を参照すると、本発明の代替実施形態によるＲＡＩＤ制御装置１００の動作を例示するフローチャートが示される。図１４のフローチャートは、図１０と同様に、必要に応じて、ＲＡＩＤ制御装置１００が、コンデンサパック１３６の累積された正規化された実行時間１５２を延長するために、コンデンサパック１３６の動作電圧を絞る方法と、必要に応じて、ＲＡＩＤ制御装置１００が書込みキャッシュ１５６サイズを動的に低減する方法とを例示する。しかし、図１４の実施形態は、動作電圧がスロットリングを必要とするかどうかを判断するために異なる比較を用いる。その結果、図１４のフローチャートは、図１０のフローチャートに類似する。しかし、フローはブロック１００２から、ブロック１００４ではなく、ブロック１４０６に進む。
【０１４９】
ブロック１４０６で、ＣＰＵ１１２は、累積された正規化された実行時間１５２が累積された歴実行時間１５４より大きいかどうかを判断するために、図９のブロック９１２で計算された累積された正規化された実行時間１５２を図９のブロック９１４で計算された累積された歴実行時間１５４と比較する。そうである場合、フローは判断ブロック１００８に進む。そうでない場合、フローは、図１０でのように、判断ブロック１０２４に進む。
【０１５０】
次の図１５を参照すると、本発明の代替実施形態によるＲＡＩＤ制御装置１００の動作を例示するフローチャートが示される。図１５のフローチャートは、図１０と同様に、必要に応じて、ＲＡＩＤ制御装置１００が、コンデンサパック１３６の累積された正規化された実行時間１５２を延長するために、コンデンサパック１３６の動作電圧を絞る方法と、必要に応じて、ＲＡＩＤ制御装置１００が書込みキャッシュ１５６サイズを動的に低減する方法とを例示する。しかし、図１５の実施形態は、書込みキャッシュ１５６サイズが低減を必要とするかどうかを判断するために異なる比較を用いる。その結果、図１５のフローチャートは、図１０のフローチャートに類似する。しかし、コンデンサパック１３６が現在最低電圧レベルで動作していない場合、フローはブロック１００８から、ブロック１０１２ではなく、ブロック１５１２に進む。
【０１５１】
ブロック１５１２で、ＣＰＵ１１２は、その累積された正規化された実行時間１５２に基づいて、コンデンサパック１３６が次に低い動作電圧で蓄積できるエネルギーを計算する。特に、ＣＰＵ１１２は、上の方程式（１）に従ってエネルギーを計算する。コンデンサパック１３６内の各コンデンサに使用される静電容量値は、コンデンサの元の静電容量と、数１から図９のブロック９１８で計算された静電容量低下割合を差し引いたものの積である。フローは判断ブロック１５１４に進む。
【０１５２】
判断ブロック１５１４で、ＣＰＵ１１２は、ブロック１５１２で計算されたエネルギーが非揮発性メモリ１０８に書込みキャッシュ１５６をバックアップする電力を供給するために十分であるかどうかを判断する。そうである場合、フローはブロック１５１６に進む。そうでない場合、フローはブロック１０１８に進む。
【０１５３】
ブロック１５１６で、図１０のブロック１０１２で実行されるステップ同様に、ＣＰＵ１１２は、次に低い動作電圧でサポート可能な書込みキャッシュ１５６サイズを計算する。ＣＰＵ１１２は、次いで、書込みキャッシュ１５６サイズを計算されたサイズに低減する。フローはブロック１０１８に進む。
【０１５４】
本発明ならびにその目的、特徴および利点が詳細に本明細書で説明されているが、本発明によって他の実施形態が包括される。例えば、実施形態は、ＲＡＩＤ制御装置に関して説明されているが、コンデンサパックの寿命を監視する方法と、保証寿命を提供するためにコンデンサパックの動作電圧を動的に調整する方法と、書込みキャッシュサイズを動的に調整する方法とは、任意の種類の記憶制御装置内で有利に使用され得る。加えて、記憶制御装置が非揮発性メモリに揮発性書込みキャッシュをバックアップすると同時に、コンデンサパックが主に電力を提供するために使用される実施形態が説明されているが、本明細書で説明される方法は、コンデンサパックが再充電可能なエネルギー源として使用される任意の使用に有利に使用され得る。コンデンサパックの別の使用例は、揮発性書込みキャッシュがバックアップされ得る非揮発性メモリを含まない記憶制御装置でのように、主電源が回復されるまで、揮発性書込みキャッシュに電力を供給し続けることを含む。
【０１５５】
コンデンサパックの静電容量が全体として監視される実施形態が説明されるが、各個々のコンデンサの個々の動作電圧および温度に基づいてパック内の各個々のコンデンサの寿命が監視され、個々のコンデンサの最小寿命として、コンデンサパックの寿命が全体として判断される実施形態が考えられる。
【０１５６】
様々なエネルギー計算および静電容量計算など、本発明を規定する物理法則が説明されるが、これらの値は、本発明を実施するために直接的または完全に計算されるとは限らない点を理解されたい。すなわち、準拠物理法則（ｇｏｖｅｒｎｉｎｇ  ｐｈｙｓｉｃａｌ  ｌａｗｓ）を用いた様々な実施形態が考えられる。例えば、エネルギー、静電容量、静電容量低下、静電容量低下割合、書込みキャッシュサイズなどの値が通常の電圧および温度の値に関して事前計算され、測定された電圧および温度の示数に基づいて利用される表内に記憶される実施形態が考えられる。表を調べるのではなく、方程式に従って値が完全に計算される、その他の実施形態が考えられる。直接計算された値および事前計算された値が組み合わせて使用される、他の実施形態が考えられる。
【０１５７】
ＣＰＵ１１２が、累積された正規化された実行時間１５２の計算など、説明された様々な計算を実行する実施形態が説明されているが、電力管理装置１３２内の回路など、専用の回路が計算を実行する他の実施形態が考えられる。最後に、様々な閾値が指定される実施形態が説明されているが、本発明は他の閾値を用いて用いられることが可能である点を理解されたい。
【０１５８】
最後に、当業者は、添付の特許請求の範囲によって定義された本発明の範囲から逸脱せずに、本発明の同じ目的を実行するために他の構成を設計または修正するための基礎として、開示された構想および特定の実施形態を容易に使用できる点を理解されたい。
【図面の簡単な説明】
【０１５９】
【図１】本発明によるＲＡＩＤ制御装置を例示するブロックダイヤグラムである。
【図２】本発明による図１のメモリ制御装置をより詳細に例示するブロックダイヤグラムである。
【図３】本発明による図２のＣＳＲを例示するブロックダイヤグラムである。
【図４】本発明によるフラッシュ動作を実行するための図１のＲＡＩＤ制御装置の動作を例示するフローチャートである。
【図５】本発明による主電源の障害後に回復されている主電源に応答した、図１のＲＡＩＤ制御装置の動作を例示するフローチャートである。
【図６】本発明の代替実施形態によるＲＡＩＤ制御装置を例示するブロックダイヤグラムである。
【図７】本発明の代替実施形態によるフラッシュ動作を実行するための図６のＲＡＩＤ制御装置の動作を例示するフローチャートである。
【図８】本発明による様々な温度および電圧の組合せに関して、図１のコンデンサパックの蓄積寿命に関する表、またはデータベースを例示するブロックダイヤグラムである。
【図９】本発明による図１のＲＡＩＤ制御装置の動作を例示するフローチャートである。
【図１０】本発明による図１のＲＡＩＤ制御装置の動作を例示するフローチャートである。
【図１１】本発明による図１のＲＡＩＤ制御装置の動作を例示するフローチャートである。
【図１２】本発明による図１のＲＡＩＤ制御装置の動作を例示するフローチャートである。
【図１３】本発明の代替実施形態によるＲＡＩＤ制御装置の動作を例示するフローチャートである。
【図１４】本発明の代替実施形態によるＲＡＩＤ制御装置の動作を例示するフローチャートである。
【図１５】本発明の代替実施形態によるＲＡＩＤ制御装置の動作を例示するフローチャートである。
【図１】
2009503723.tif 000023
【図２】
2009503723.tif 000024
【図３】
2009503723.tif 000025
【図４】
2009503723.tif 000026
【図５】
2009503723.tif 000027
【図６】
2009503723.tif 000028
【図７】
2009503723.tif 000029
【図８】
2009503723.tif 000030
【図９】
2009503723.tif 000031
【図１０】
2009503723.tif 000032
【図１１】
2009503723.tif 000033
【図１２】
2009503723.tif 000034
【図１３】
2009503723.tif 000035
【図１４】
2009503723.tif 000036
【図１５】
2009503723.tif 000037
【国際調査報告】
2009503723.tif 000038
2009503723.tif 000039
2009503723.tif 000040