(57)【要約】【課題】バックアップ電源の疲弊度に合ったライトキャッシュサイズを設定可能とする。【解決手段】実施形態によれば、データバッファはホスト装置から転送されるデータを格納する。放電容量検出手段は主電源から供給される電力によって充電されるバックアップ電源の放電容量を検出する。時間算出手段は検出された放電容量に基づき、バックアップ電源からの電力供給によりライトキャッシング可能な第１の時間を算出し、且つデータバッファに格納されているメディアに未書き込みのデータをメディアにライトするのに要する第２の時間を算出する。判別手段は第１の時間と第２の時間とに基づき、第１の時間内に未書き込みデータをメディアにライト可能であるかを判別し、ライト可能なら、ホストにライト完了のレスポンスを送信する。メディアコントローラは、ライト完了のレスポンスが送信された後、データバッファ内の未書き込みデータをメディアにライトする。【選択図】      図１
2013061791.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置から送信される、不揮発性のメディアにデータをライトすることを指示するライトコマンドに応じて、前記ホスト装置から転送されるデータを格納するデータバッファと、
主電源から供給される電力によって充電されるバックアップ電源であって、前記主電源の電圧が規定電圧よりも低下した場合に前記主電源をバックアップするバックアップ電源の放電容量を検出する放電容量検出手段と、
前記検出された放電容量に基づき、前記バックアップ電源からの電力の供給によってライトキャッシングが可能な第１の時間を算出し、且つ前記データバッファに格納されていて且つ前記メディアに未書き込みのデータのサイズに基づいて、前記未書き込みデータを前記メディアにライトするのに要する第２の時間を算出する時間算出手段と、
前記第１の時間と前記第２の時間とを比較することにより、前記第１の時間内に前記未書き込みデータを前記メディアにライトすることが可能であるかを判別し、ライト可能であるならば、前記ホストにライト完了のレスポンスを送信する判別手段と、
前記ライト完了のレスポンスが送信された後、前記データバッファに格納されている前記未書き込みデータを前記メディアにライトするメディアコントローラと
を具備するストレージコントローラ。
【請求項２】
前記判別手段は、ライト不可であると判別されたならば、前記ホストに前記ライト完了のレスポンスを送信することを抑止し、
前記メディアコントローラは、前記ライト不可であると判別されたならば、前記データバッファに格納されている前記未書き込みデータを、所定のサイズを単位に前記メディアにライトし、前記所定のサイズのデータを前記メディアにライトする都度、前記データバッファに残されている未書き込みデータのサイズを前記時間算出手段に通知し、
前記時間算出手段は、前記通知されたサイズに基づいて、前記第２の時間を再度算出する
請求項１記載のストレージコントローラ。
【請求項３】
前記時間算出手段は、Ｎを自然数であるとすると、前記通知されたサイズが、前記所定のサイズのＮ倍より大きく前記所定のサイズのＮ＋１倍より小さい場合、前記残されている未書き込みデータに含まれている前記所定のサイズに満たないデータを前記所定のサイズに加工するのに必要な加工時間を算出し、前記算出された加工時間を、前記所定のサイズを単位にＮ＋１回前記メディアにデータをライトするのに要する時間に加算することにより、前記第２の時間を算出する請求項２記載のストレージコントローラ。
【請求項４】
前記メディアが書き換え可能な不揮発性メモリである請求項１記載のストレージコントローラ。
【請求項５】
前記放電容量検出手段は、前記ライト要求に応じたライト動作とは非同期に前記放電容量を検出する請求項１記載のストレージコントローラ。
【請求項６】
書き換えが可能な不揮発性のメディアと、
ホスト装置からの要求に応じて前記メディアへのアクセスを制御する、請求項１記載のストレージコントローラと
を具備するストレージ装置。
【請求項７】
ホスト装置から送信される、不揮発性のメディアにデータをライトすることを指示するライトコマンドに応じて、前記ホスト装置から転送されるデータを格納するデータバッファを備えたストレージコントローラに適用されるライトキャッシング方法であって、
主電源から供給される電力によって充電されるバックアップ電源の放電容量を検出し、
前記検出された放電容量に基づき、前記バックアップ電源からの電力の供給によってライトキャッシングが可能な第１の時間を算出し、
前記データバッファに格納されていて且つ前記メディアに未書き込みのデータのサイズに基づいて、前記未書き込みデータを前記メディアにライトするのに要する第２の時間を算出し、
前記第１の時間と前記第２の時間とを比較することにより、前記第１の時間内に前記未書き込みデータを前記メディアにライトすることが可能であるかを判別し、
ライト可能であるならば、前記ホストにライト完了のレスポンスを送信し、
前記ライト完了のレスポンスが送信された後、前記データバッファに格納されている前記未書き込みデータを前記メディアにライトする
ライトキャッシング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ライトデータをデータバッファに格納した後に、当該データバッファに格納されたデータをメディアにライトする、ストレージコントローラ、ストレージ装置及びライトキャッシング方法に関する。
【背景技術】
【０００２】
一般にストレージ装置は、メモリ或いはディスクのようなメディアと、当該メディアへのアクセスを制御するストレージコントローラとを備えている。ストレージコントローラは、メディアへ効率的にデータを書き込むために、ホスト（ホスト装置）から転送されたデータを一時的に格納するデータバッファを備えているのが一般的である。
【０００３】
ストレージコントローラは、ホストから転送されたライトデータをデータバッファに格納する。その後、ストレージコントローラはデータバッファに格納されたデータをメディアにライトする。
【０００４】
ここで、ストレージコントローラがデータバッファにデータをライトしている最中に、ストレージ装置のための電源（以下、主電源と称する）が遮断されたものとする。この場合、データバッファに格納されていて且つメディアに未書き込みのデータ（以下、データバッファ内の未書き込みデータと称する）が失われる。
【０００５】
そこで、主電源の遮断時にデータバッファ内の未書き込みデータが喪失するのを防止するため、ストレージ装置は、キャパシタのようなバックアップ電源を備えている。バックアップ電源は、主電源から供給される電力によって充電される。
【０００６】
メディアコントローラはデータバッファ内の未書き込みデータをメディアにライトする際に、当該未書き込みデータを全てメディアにライトするのに必要な時間（以下、総メディアライト時間と称する）が所定の時間を超えているかを判定する。この所定の時間は、主電源が遮断したとしても、バックアップ電源からの電力の供給によって動作の継続が保証される時間であり、データバッファ内の未書き込みデータを当該データバッファに保持可能な時間である。
【０００７】
もし、総メディアライト時間が所定の時間未満であるならば、メディアコントローラは、ライト完了をホストに通知し、しかる後にデータバッファ内の未書き込みデータを全てメディアにライトする。この一連の動作をライトキャッシングと呼ぶ、一方、総メディアライト時間が所定の時間を超えているならば、メディアコントローラは、ライト完了をホストに通知することなくデータバッファ内の未書き込みデータをメディアにライトする。このメディアライト動作が進んで、データバッファに残されている未書き込みデータのサイズが小さくなって、総メディアライト時間を確保できるようになると、メディアコントローラはライトキャッシングを実行する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平４−２８７１０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来技術では、バックアップ電源の電圧が所定電圧を超えていることをもって、前記所定時間を、主電源の遮断時における動作可能時間として保証している。しかし、バックアップ電源の電圧（例えば充電電圧）は、必ずしも動作可能時間に対応しているとは限らない。その要因は、バックアップ電源の疲弊度にある。
【００１０】
このため従来技術では、疲弊度の高いバックアップ電源に合わせて前記所定時間が設定される。この場合、主電源が遮断した際にライトキャッシングによってメディアにライトすることが可能なデータのサイズ（以下、ライトキャッシュサイズと称する）は短くなる。つまり、ライトキャッシュサイズは、バックアップ電源が疲弊している状態を基準としたサイズに制限されてしまう。
【００１１】
本発明の目的は、バックアップ電源の疲弊度に適合したライトキャッシュサイズを設定することができるストレージコントローラ、ストレージ装置及びライトキャッシング方法を提供することにある。
【課題を解決するための手段】
【００１２】
実施形態によれば、ストレージコントローラは、データバッファと、放電容量検出手段と、時間算出手段と、判別手段と、メディアコントローラとを具備する。前記データバッファは、ホスト装置から送信される、不揮発性のメディアにデータをライトすることを指示するライトコマンドに応じて、前記ホスト装置から転送されるデータを格納する。前記放電容量検出手段は、主電源から供給される電力によって充電されるバックアップ電源の放電容量を検出する。前記バックアップ電源は、前記主電源の電圧が規定電圧よりも低下した場合に前記主電源をバックアップする。前記時間算出手段は、前記検出された放電容量に基づき、前記バックアップ電源からの電力の供給によってライトキャッシングが可能な第１の時間を算出する。前記時間算出手段は更に、前記データバッファに格納されていて且つ前記メディアに未書き込みのデータのサイズに基づいて、前記未書き込みデータを前記メディアにライトするのに要する第２の時間を算出する。前記判別手段は、前記第１の時間と前記第２の時間とを比較することにより、前記第１の時間内に前記未書き込みデータを前記メディアにライトすることが可能であるかを判別する。ライト可能であるならば、前記判別手段は、前記ホストにライト完了のレスポンスを送信する。前記メディアコントローラは、前記ライト完了のレスポンスが送信された後、前記データバッファに格納されている前記未書き込みデータを前記メディアにライトする。
【図面の簡単な説明】
【００１３】
【図１】実施形態に係る電子機器の典型的な構成を示すブロック図。
【図２】同実施形態で適用されるストレージコントローラの制御によるライトキャッシングを説明するためのシーケンスチャート。
【図３】同実施形態で適用されるライトキャッシング判別処理の典型的な手順を説明するためのフローチャート。
【発明を実施するための形態】
【００１４】
以下、実施の形態につき図面を参照して説明する。  
図１は一つの実施形態に係る電子機器の典型的な構成を示すブロック図である。図１に示す電子機器は、ストレージ装置１０と、当該ストレージ装置１０を利用するホスト装置（ホスト）２０とから構成される。本実施形態において、電子機器はパーソナルコンピュータである。しかし、電子機器がパーソナルコンピュータである必要はなく、パーソナルコンピュータ以外の電子機器、例えばビデオカメラ、音楽プレーヤー、携帯端末、携帯電話機、或いはプリンタ装置であってもよい。ホスト２０はホストインタフェース２１を介してストレージ装置１０と接続されている。
【００１５】
ストレージ装置１０は、メディア１００及びストレージコントローラ１１０から構成される。メディア１００は、データを格納するのに用いられる書き換えが可能な不揮発性の記憶媒体である。本実施形態において、メディア１００はフラッシュメモリに代表される不揮発性メモリであり、ストレージ装置１０はソリッドステートドライブ（ＳＳＤ）であるものとする。しかし、メディア１００が、例えば磁気ディスクであり、ストレージ装置１０がハードディスクドライブ（ＨＤＤ）であっても構わない。
【００１６】
ストレージコントローラ１１０は、ホスト２０からの要求に応じてメディア１００へのアクセスを制御する。ストレージコントローラ１１０は、ホストインタフェースコントローラ１１１と、データバッファ１１２と、メディアコントローラ１１３と、キャパシタ１１４と、バッファコントローラ１１５とを備えている。ホストインタフェースコントローラ１１１、データバッファ１１２、メディアコントローラ１１３、キャパシタ１１４、バッファコントローラ１１５及びメディア１００は、内部バス１２０によって相互接続されている。
【００１７】
ホストインタフェースコントローラ１１１は、ホストインタフェース２１を介してホスト２０と通信する。データバッファ１１２は、ホスト２０から受け取ったデータ（ライトデータ）を一時的に格納するのに用いられる。データバッファ１１２はまた、メディア１００から読み出されたデータ（リードデータ）を一時的に格納するのにも用いられる。メディアコントローラ１１３は、バッファコントローラ１１５内の後述するライト制御部１１７からの要求に応じてメディア１００にアクセスする。
【００１８】
キャパシタ１１４は、ストレージ装置１０のための主電源の電圧が規定電圧よりも低下した場合に当該主電源をバックアップして、当該ストレージ装置１０内のデータバッファ１１２及びメディア１００を含む要素群に一時的に電源を供給するのに用いられるバックアップ電源である。前記主電源の電圧が規定電圧よりも低下する例として、前記主電源が遮断した場合が挙げられる。以下の説明では、簡略化のために、主電源の遮断を前提とする。キャパシタ１１４（つまり、バックアップ電源）は、通常状態において前記主電源から供給される電力によって充電される。前記主電源は、例えばＡＣ−ＤＣ電源である。
【００１９】
キャパシタ１１４は、例えば電気二重層キャパシタである。しかし、キャパシタ１１４が、電気二重層キャパシタである必要はない。また、キャパシタ１１４に代えて、例えばリチウムイオン電池のような二次電池を用いてもよい。つまり、バックアップ電源として、二次電池を用いてもよい。また、キャパシタ１１４がストレージコントローラ１１０の外部に設けられていてもよい。
【００２０】
バッファコントローラ１１５は、ホスト２０からのメディア１００へのアクセスの要求に応じて、データバッファ１１２を制御する。バッファコントローラ１１５は、リード制御部１１６と、ライト制御部１１７と、ライトキャッシング判別部１１８と、キャパシタ放電容量検出部１１９とを備えている。
【００２１】
リード制御部１１６は、データバッファ１１２からのデータのリードを制御する。ライト制御部１１７は、データバッファ１１２へのデータのライトを制御する。ライト制御部１１７は、データバッファ１１２にライト（格納）されたデータを周知のバッファ管理テーブル（図示せず）により管理する。バッファ管理テーブルは、ＤＲＡＭのようなメモリに保持される。バッファ管理テーブルは、データバッファ１１２に格納されたデータの、当該データバッファ１１２内の位置を示すバッファアドレスと、当該データがライトされるべき例えば論理アドレスとの対応を示す情報を保持する。またバッファ管理テーブルは、データバッファ１１２に格納されたデータが、メディア１００に未書き込みであるかを示す情報も保持する。バッファ管理テーブルは更に、データバッファ１１２に格納されていて且つメディア１００に未書き込みのデータ全体のサイズ（データサイズ）を示す情報も保持する。
【００２２】
ライトキャッシング判別部１１８は時間算出部１１８ａを備えている。時間算出部１１８ａは、キャパシタ１１４の放電容量（mAh）（より詳細には、キャパシタ１１４の放電容量及びライトキャッシングに要する単位時間当たりの電力）に基づいてキャパシタ駆動可能時間（第１の時間）TIMEdを算出する。キャパシタ駆動可能時間TIMEdは、主電源が遮断された際に、キャパシタ１１４からの電力の供給によってライトキャッシングが可能な時間を示す。つまりキャパシタ駆動可能時間TIMEdは、主電源が遮断されたとしても、データバッファ１１２に格納されていて且つメディア１００に未書き込みのデータ（つまりデータバッファ１１２内の未書き込みデータ）を当該データバッファに保持することが保証される時間である。このキャパシタ駆動可能時間TIMEd内に、データバッファ内の未書き込みデータをメディア１００にライトできるならば、主電源が遮断されたとしても、当該未書き込みデータが喪失するおそれはない。
【００２３】
時間算出部１１８ａはまた、データバッファ１１２内の未書き込みデータを全てメディア１００にライトするのに要する総メディアライト時間（第２の時間）TIMEtotalを、当該未書き込みデータのサイズSIZEtotalに基づいて算出する。なお、時間算出部１１８ａがライトキャッシング判別部１１８から独立して設けられていてもよい。
【００２４】
ライトキャッシング判別部１１８は、総メディアライト時間TIMEtotalとキャパシタ駆動可能時間TIMEdとを比較する。ライトキャッシング判別部１１８は、この比較の結果に基づき、データサイズがSIZEtotalの未書き込みデータのためのライトキャッシングを、主電源の遮断の有無に無関係に実行することが可能かを判別する。
【００２５】
キャパシタ放電容量検出部１１９は、キャパシタ１１４の放電容量を検出する。キャパシタ１１４の放電容量は、当該キャパシタ１１４の放電によって当該キャパシタ１１４から供給可能な電気量を表す。キャパシタ１１４の放電容量を検出する手法は、従来から種々知られている。本実施形態では、キャパシタ放電容量検出部１１９は、キャパシタ１１４の放電容量を次のように検出する。まずキャパシタ放電容量検出部１１９は、キャパシタ１１４をフル放電した後、当該キャパシタ１１４をフル充電する。キャパシタ放電容量検出部１１９は、キャパシタ１１４をフル充電するのに要する時間（充電時間）を測定する。キャパシタ１１４の充電時間は、当該キャパシタ１１４の放電容量に対応する。そこでキャパシタ放電容量検出部１１９は、キャパシタ１１４の充電時間毎に、当該充電時間と当該キャパシタ１１４の放電容量とを関連付けたテーブルを参照することにより、測定された充電時間に関連付けられた当該キャパシタ１１４の放電容量を検出する。
【００２６】
なお、他の周知の手法によってキャパシタ１１４の放電容量を検出することも可能である。例えば、キャパシタ１１４の最小保障電圧が定められている場合、キャパシタ放電容量検出部１１９が、当該最小保障電圧まで当該キャパシタ１１４を放電した後、当該キャパシタ１１４をフル充電し、そのフル充電に要する充電時間を測定してもよい。この場合も、キャパシタ放電容量検出部１１９は、キャパシタ１１４の充電時間毎に、当該充電時間と当該キャパシタ１１４の放電容量とを関連付けたテーブルを参照することにより、測定された充電時間に関連付けられた当該キャパシタ１１４の放電容量を検出することができる。
【００２７】
次に、本実施形態で適用されるストレージコントローラ１１０の制御によるライトキャッシングについて、図２のシーケンスチャートを参照して説明する。  
まず、ホスト２０がストレージ装置１０のストレージコントローラ１１０に対し、ホストインタフェース２１を介して、メディア１００にデータをライトすることを指示するライトコマンド（以下、ライト要求と称する）を送信したものとする（ステップ２０１）。このライト要求は、ホスト２０が要求するライトデータのサイズ（転送サイズ）を示す情報と論理アドレスとを含む。本実施形態において、ホストインタフェース２１は、ＳＳＤ或いはＨＤＤに代表される一般的なストレージ装置で採用されるシリアルＡＴＡ（ＳＡＴＡ）或いはシリアルアタッチドＳＣＳＩ（ＳＡＳ）である。ホストインタフェース２１がＳＡＴＡ或いはＳＡＳの場合、ホスト２０は上述のように、ライトデータを送信（転送）する前に、転送サイズを含むライト要求をストレージコントローラ１１０に送信する。
【００２８】
ストレージコントローラ１１０のホストインタフェースコントローラ１１１は、ホスト２０から転送されたライト要求を受信すると、バッファコントローラ１１５のライト制御部１１７に対し、受信可能なライトデータのサイズを問い合わせる（ステップ２０２）。受信可能なライトデータのサイズは、データバッファ１１２にライト可能なライトデータのサイズ（ライト可能サイズ）を表す。
【００２９】
ライト制御部１１７は、ホストインタフェースコントローラ１１１からの問い合わせに応じて、データバッファ１１２の空き領域のサイズを検出する（ステップ２０３）。ライト制御部１１７は、検出されたサイズを、ホスト２０からのライトが許可されるデータのサイズ（ライト許可サイズ）としてホストインタフェースコントローラ１１１に通知する（ステップ２０４）。するとホストインタフェースコントローラ１１１は、ホスト２０に対してライト許可を通知する（ステップ２０５）。このライト許可は、ライト許可サイズ（つまりホスト２０からの転送が許されるデータのサイズ）を示す情報を含む。
【００３０】
ホスト２０は、ホストインタフェースコントローラ１１１から通知されたライト許可を受け取ると、当該ライト許可で許可されたサイズのライトデータを、ホストインタフェース２１及びホストインタフェースコントローラ１１１を介してデータバッファ１１２に送信（転送）する（ステップ２０６）。なお、ホストインタフェース２１が本実施形態のようにＳＡＴＡ或いはＳＡＳの場合、ホスト２０は、前記許可されたサイズのライトデータを分割して送信してもよい。
【００３１】
データバッファ１１２は、ホスト２０から送信されたライトデータをデータバッファ１１２の空き領域に格納する。データバッファ１１２は、ホスト２０から前記許可されたサイズのライトデータを受信（格納）し終えると、ライト制御部１１７に対してデータ受信完了を通知する（ステップ２０７）。ライト制御部１１７は、このデータ受信完了の通知に応じて、データバッファ１１２で受信されたライトデータのサイズをデータサイズSIZEtotalとしてライトキャッシング判別部１１８に通知する（ステップ２０８）。本実施形態において、ステップ２０８で通知されるデータサイズSIZEtotalは、データバッファ１１２に格納されていて、且つメディア１００に未だ書かれていないライトデータのサイズに一致する。
【００３２】
一方、キャパシタ放電容量検出部１１９は、ホスト２０からのライト要求に応じたライト動作とは非同期に、キャパシタ１１４の放電容量を検出する。本実施形態では、キャパシタ放電容量検出部１１９は、予め定められたタイミングでキャパシタ１１４の放電容量を検出する。本実施形態では、この予め定められたタイミングは、毎日１回定時に到来する。しかし、キャパシタ放電容量検出部１１９がキャパシタ１１４の放電容量を検出するタイミングが、他のタイミングであっても構わない。キャパシタ放電容量検出部１１９は、キャパシタ１１４の放電容量を検出すると、その検出された静電容量（キャパシタ静電容量）をライトキャッシング判別部１１８に通知する（ステップ２２１）。
【００３３】
ライトキャッシング判別部１１８の時間算出部１１８ａは、キャパシタ放電容量検出部１１９から通知されたキャパシタ１１４の放電容量に基づいてキャパシタ駆動可能時間TIMEdを算出する（ステップ２２２）。キャパシタ駆動可能時間TIMEdは、主電源が遮断された際に、キャパシタ１１４からの電力の供給によってライトキャッシングが可能な時間を示す。本実施形態では、時間算出部１１８ａは、キャパシタ１１４の放電容量を、ライトキャッシングで消費される電流で除することにより、キャパシタ駆動可能時間TIMEdを算出する。
【００３４】
キャパシタ駆動可能時間TIMEdは、主電源が遮断したとしても、ライトキャッシングによってデータバッファ１１２からメディア１００にライトすることが可能なデータのサイズ、つまりライトキャッシングが可能なライトキャッシュサイズに対応する。したがって時間算出部１１８ａがキャパシタ駆動可能時間TIMEdを算出することは、ライトキャッシュサイズを算出することと等価である。
【００３５】
さて、ライトキャッシング判別部１１８の時間算出部１１８ａが最新のキャパシタ駆動可能時間TIMEdを既に算出している状態で、上述のように、ライト制御部１１７から当該ライトキャッシング判別部１１８に対して、データサイズSIZEtotalが通知されたものとする（ステップ２０８）。するとライトキャッシング判別部１１８は、通知されたデータサイズSIZEtotalのライトデータのためのライトキャッシングを、キャパシタ駆動可能時間TIMEd内に実行することが可能であるかを判別する（ステップ２０９）。つまりライトキャッシング判別部１１８は、前記データサイズSIZEtotalのライトデータを、たとえ前記主電源が遮断したとしても、キャパシタ１１４から供給される電力でデータバッファ１１２からメディア１００にライトすることが可能であるかを判別する。この判別処理（以下、ライトキャッシング判別処理と称する）の具体的な手順については後述する。
【００３６】
もし、ライトキャッシング可であるとステップ２０９において判別されたならば、ライトキャッシング判別部１１８は、ホスト２０からのライト要求に対するレスポンスとしてライト完了のレスポンスをホストインタフェースコントローラ１１１を介して当該ホスト２０に送信する。すると、メディアコントローラ１１３は、データバッファ１１２が受信（格納）したライトデータ、つまりライト制御部１１７からライトキャッシング判別部１１８に通知されたデータサイズSIZEtotalのライトデータをメディア１００にライトする。このような、ライトキャッシング可であるとステップ２０９において判別された場合の動作は、図２のシーケンスチャートでは省略されている。
【００３７】
本実施形態では、ライトキャッシング不可であるとステップ２０９において判別されたものとする。この場合、ライトキャッシング判別部１１８は、ホスト２０からのライト要求で指定されたライトデータは全てデータバッファ１１２に格納されているにも拘わらず、当該ホスト２０にライト完了のレスポンスを送信することを抑止する。その理由は、もし主電源が遮断したならば、前記通知されたデータサイズSIZEtotalのライトデータのためのライトキャッシングを、キャパシタ駆動可能時間TIMEd内に実行することは難しく、少なくとも一部のライトデータが喪失する可能性があるためである。
【００３８】
一方、ライト制御部１１７は、ライトキャッシング不可であるとステップ２０９において判別された場合、データバッファ１１２に格納されていて且つメディア１００に未書き込みのライトデータをメディア１００にライトするために、メディアコントローラ１１３に対してライト要求を発行する（ステップ２１０）。メディアコントローラ１１３は、ライト制御部１１７からのライト要求に応じ、上記未書き込みのライトデータをメディア１００にライトするための第１のメディアライト動作（ステップ２１１）を少なくとも１回実行する。この第１のメディアライト動作（ステップ２１１）は次のように実行される。
【００３９】
まずメディアコントローラ１１３は、データバッファ１１２に対して、データ転送要求を発行する（ステップ２１１ａ）。このデータ転送要求に応じて、メディア１００に固有のライト単位（メディアライト単位）のサイズSIZEunitのデータが、データバッファ１１２から当該メディア１００に転送される。メディアライト単位は、メディア１００に１回のアクセスでライト可能なデータのサイズである。つまり、メディア１００へのデータライトは、このデータサイズがSIZEunitのメディアライト単位に実行される。
【００４０】
データバッファ１１２からメディア１００に転送される、データサイズがSIZEunitのデータは、データバッファ１１２に格納されていて、且つ最も最近に通知されたデータサイズSIZEtotalのライトデータ（つまり、メディア１００に未書き込みのライトデータ）に含まれている。メディアコントローラ１１３は、このデータバッファ１１２から転送されるライトデータをメディア１００にライトする（ステップ２１１ｂ）。
【００４１】
するとメディア１００は、ライト単位のサイズのデータのライト完了を示すレスポンスをメディアコントローラ１１３に返す（ステップ２１１ｃ）。メディアコントローラ１１３は、このメディア１００からのレスポンスに応じて、データサイズSIZEtotalがメディアライト単位SIZEunitだけ減らされるように、次式
SIZEtotal = SIZEtotal - SIZEunit    (1)
に従って、当該データサイズSIZEtotalを更新する。更新されたデータサイズSIZEtotalは、最新のメディアライトが完了した時点においてデータバッファ１１２に格納されていて、且つメディア１００に未書き込みのライトデータのサイズを示す。メディアコントローラ１１３は、更新された最新のデータサイズSIZEtotalをライトキャッシング判別部１１８に通知する（ステップ２１１ｄ）。
【００４２】
するとライトキャッシング判別部１１８は、ライト制御部１１７からデータサイズSIZEtotalが通知された場合と同様に、メディアコントローラ１１３から通知された最新のデータサイズSIZEtotalに基づいてライトキャッシング可否を判別する（ステップ２０９）。つまり、ライトキャッシング判別部１１８は、メディアコントローラ１１３から通知された最新のデータサイズSIZEtotalのライトデータのためのライトキャッシングを、キャパシタ駆動可能時間TIMEd内に実行することが可能であるかを判別する。もし、ライトキャッシング不可であるならば、上述の第１のメディアライト動作（ステップ２１１）が再び実行される。このように、第１のメディアライト動作は、ライトキャッシング可が判別されるまで繰り返される。
【００４３】
やがて、ライトキャッシング可であるとステップ２０９において判別されたものとする。そこでライトキャッシング判別部１１８は、ホスト２０からのライト要求に対するレスポンスとしてライト完了のレスポンスをホストインタフェースコントローラ１１１を介して当該ホスト２０に送信する（ステップ２１２）。すると、メディアコントローラ１１３は、データバッファ１１２に格納されていて且つメディア１００に未書き込みのライトデータをメディア１００にライトするための第２のメディアライト動作（ステップ２１３）を少なくとも１回実行する。この第２のメディアライト動作（ステップ２１３）は次のように実行される。
【００４４】
まずメディアコントローラ１１３は、上記ステップ２１１ａと同様に、データバッファ１１２に対して、データ転送要求を発行する（ステップ２１３ａ）。このデータ転送要求に応じて、サイズSIZEunitのデータが、データバッファ１１２からメディア１００に転送される。このメディア１００に転送されるデータサイズがSIZEunitのデータは、データバッファ１１２に格納されていて、且つメディア１００に未書き込みのライトデータである。メディアコントローラ１１３は、このデータバッファ１１２から転送されるライトデータを、上記ステップ２１１ｂと同様に、メディア１００にライトする（ステップ２１３ｂ）。
【００４５】
するとメディア１００は、ライト単位のサイズのデータのライト完了を示すレスポンスをメディアコントローラ１１３に返す（ステップ２１３ｃ）。これにより、１回の第２のライト動作（ステップ２１３）が終了する。第２のライト動作は、データバッファ１１２に格納されていて、且つメディア１００に未書き込みのライトデータが全て当該メディア１００にライトされるまで繰り返される。この第２のライト動作が繰り返されている間に主電源が遮断したとしても、その時点でデータバッファ１１２に格納されていて、且つメディア１００に未書き込みのライトデータは、全て当該メディア１００にライトできることが保証されている。
【００４６】
やがて、データバッファ１１２に残されている最後の未書き込みデータを含むライト単位のサイズのデータがメディア１００にライトされたものとする（ステップ２１４）。するとメディア１００は、上記ステップ２１３ｃと同様に、ライト単位のサイズのデータのライト完了を示すレスポンスをメディアコントローラ１１３に返す（ステップ２１５）。このレスポンスを受けてメディアコントローラ１１３は、データバッファ１１２内の未書き込みデータが全てメディア１００にライトされたことを示すメディアライト完了をライト制御部１１７に通知する（ステップ２１６）。これにより、ホスト２０からのライト要求に対応するライト処理は完了する。
【００４７】
次に上記ステップ２０９で実行されるライトキャッシング判別処理の典型的な手順について、図３のフローチャートを参照して説明する。  
まず、ライトキャッシング判別部１１８は、ライト制御部１１７から通知されたデータサイズSIZEtotalを受け付ける（ステップ３０１）。データバッファ１１２がホスト２０から転送されたライトデータを受信（格納）したことにより、１回目のライトキャッシング判別処理が実行される場合、ステップ３０１で受け付けられるデータサイズSIZEtotalは、当該データバッファ１１２で受信されたライトデータのサイズを表す。
【００４８】
ライトキャッシング判別部１１８の時間算出部１１８ａは、データサイズSIZEtotalをメディアライト単位のデータサイズSIZEunitで除する（ステップ３０２）。即ち時間算出部１１８ａは、次式
SIZEtotal ÷ SIZEunit = N + α      (2)
で示される除算を実行する。ここでＮは自然数である。一方、αは端数であり、ゼロまたは小数（０≦α＜１）である。
【００４９】
上記除算により、時間算出部１１８ａは、データバッファ１１２に格納されていて且つメディア１００に未書き込みのデータサイズがSIZEtotalのライトデータを、全てメディア１００にライトするのに必要なメディアライト回数を算出する。ここで、メディアライト回数は、αがゼロの場合、つまり「SIZEtotal」が「SIZEunit」で割り切れる場合、Ｎとなる。これに対し、αが非ゼロの場合、つまり「SIZEtotal」が「SIZEunit」で割り切れないためにN×SIZEunit＜SIZEtotal＜(N + 1)×SIZEunitである場合、メディアライト回数はＮ＋１となる。
【００５０】
時間算出部１１８ａは、ステップ３０２における除算の結果に基づいて、αが非ゼロ（α≠０）であるかを判別する（ステップ３０３）。もし、αが非ゼロ（α≠０）であるならば（ステップ３０３のＹｅｓ）、つまりメディアライト回数がＮ＋１であるならば、ライトキャッシング判別部１１８はステップ３０４に進む。
【００５１】
ステップ３０４において時間算出部１１８ａは、メディアライト単位に満たない、サイズが「SIZEtotal - N×SIZEunit」のデータを、当該メディアライト単位のサイズに加工するのに要する時間βを算出する。ストレージ装置１０では、一般に誤り訂正符号が付されたデータがメディア１００にライトされる。このため、メディア１００にデータをライトする際には、データサイズをメディアライト単位に揃える必要がある。
【００５２】
そこで、上述のようなメディアライト単位に満たないサイズのライトデータを、例えば主電源の遮断時に強制的にメディア１００にライトする場合には、メディアライト単位に足りないサイズのデータとして、例えば予め定められたダミーデータ（例えば無効なデータ）が用いられる。このように、ダミーデータで補われたライトデータに基づいて誤り訂正符号を生成される。そして、生成された誤り訂正符号が付されたライトデータがメディア１００にライトされる。上記ステップ３０４では、このようなデータの加工（処理）に要する時間βが算出される。
【００５３】
時間算出部１１８ａは時間βを算出すると、データバッファ１１２に格納されていて且つメディア１００に未書き込みの、データサイズがSIZEtotalのデータを全てメディア１００にライトするのに要する総メディアライト時間TIMEtotalを、次式
TIMEtotal = (N + 1)×TIMEunit + β  (3)
に従って算出する（ステップ３０５）。ここで、「TIMEunit」は、メディア１００にメディアライト単位にデータをライトするのに要する時間を示す。つまり時間算出部１１８ａは、総メディアライト時間TIMEtotalを、メディアライト回数Ｎ＋１、時間TIMEunit及び時間βに基づき算出する。
【００５４】
一方、αが非ゼロ（α≠０）でないならば（ステップ３０３のＮｏ）、つまりαがゼロのためにメディアライト回数がＮであるならば、時間算出部１１８ａはステップ３０６に進む。ステップ３０６において時間算出部１１８ａは、総メディアライト時間TIMEtotalを、次式
TIMEtotal = N×TIMEunit             (4)
に従って算出する。
【００５５】
上述したように、データバッファ１１２がホスト２０から転送されたライトデータを受信したことにより、１回目のライトキャッシング判別処理が実行される場合、当該１回目のライトキャッシング判別処理で用いられるデータサイズSIZEtotalは、当該データバッファ１１２で受信されたライトデータのサイズを表している。この場合、ステップ３０５または３０６で算出される総メディアライト時間TIMEtotalは、データバッファ１１２が受信（格納）したライトデータを全てメディア１００にライトするのに要する時間を示す。また、ｎ回目（ｎは１より大きい整数）のライトキャッシング判別処理が実行される場合、当該ｎ回目のライトキャッシング判別処理で用いられるデータサイズSIZEtotalは、ステップ２１１のライト動作がｎ−１回実行された直後に、データバッファ１１２に格納されていて且つストレージコントローラ１１０に未書き込みのライトデータのサイズを示す。
【００５６】
ライトキャッシング判別部１１８は、時間算出部１１８ａによって前記総メディアライト時間TIMEtotalが算出されると（ステップ３０５または３０６）、当該総メディアライト時間TIMEtotalを、最新のキャパシタ駆動可能時間TIMEdと比較する（ステップ３０７）。このキャパシタ駆動可能時間TIMEdは、キャパシタ放電容量検出部１１９から通知された最新のキャパシタ１１４の放電容量に基づいて、上記ステップＳ２２２で算出されたものである。
【００５７】
ライトキャッシング判別部１１８は、ステップ３０７における比較の結果に基づいて、ライトキャッシングの可否を判別する（ステップ３０８）。ここでは、総メディアライト時間TIMEtotalがキャパシタ駆動可能時間TIMEd以下（TIMEtotal≦TIMEd）であるならば、ライトキャッシング判別部１１８はライトキャッシングが可であると判別する。これに対し、総メディアライト時間TIMEtotalがキャパシタ駆動可能時間TIMEdを超えている（TIMEtotal＞TIMEd）であるならば、ライトキャッシング判別部１１８は、少なくとも一部の未書き込みデータについて、ライトキャッシングが不可であると判別する。なお、総メディアライト時間TIMEtotalがキャパシタ駆動可能時間に等しい場合も、ライトキャッシング判別部１１８はライトキャッシングが不可であると判別してもよい。ステップ３０８で、ライトキャッシングの可否が判別されると、ライトキャッシング判別処理（ステップ２０９）は終了する。
【００５８】
ライトキャッシングが可であると判別された場合、前述したように、ライトキャッシングが実行される。つまり、ライトキャッシング判別部１１８からホスト２０にライト完了のレスポンスが送信され（ステップ２１２）、しかる後にデータバッファ１１２内の未書き込みデータをメディア１００にライトするための第２のメディアライト動作（ステップ２１３）が実行される。
【００５９】
本実施形態で適用されるキャパシタ駆動可能時間TIMEdは、従来技術における「所定時間」に対応する。しかし、従来技術における「所定時間」は、バックアップ電源が疲弊している状態を基準に予め設定される固定の時間である。このため、従来技術では、ストレージ装置の書き込み性能に大きく影響するライトキャッシュサイズがキャパシタ疲弊時の放電容量に制限されてしまう。
【００６０】
これに対して本実施形態では、キャパシタ放電容量検出部１１９によって検出されるキャパシタ１１４の最新の放電容量に基づき、キャパシタ駆動可能時間TIMEdが算出される。キャパシタ１１４が疲弊していない状態における当該キャパシタ１１４の放電容量は、当該キャパシタ１１４が疲弊している状態におけるそれと比べて大きい。つまりキャパシタ１１４の放電容量は、当該キャパシタ１１４の疲弊の程度に対応する。また、ライトキャッシュサイズはキャパシタ駆動可能時間TIMEdに対応し、キャパシタ駆動可能時間TIMEdが長いほど大きくなる。このように本実施形態では、キャパシタ１１４の最新の放電容量に基づき、当該キャパシタ１１４の疲弊度に適合したライトキャッシュサイズを動的に設定できる。このため本実施形態によれば、キャパシタ１１４が疲弊していない状態では、当該キャパシタ１１４が疲弊している状態に比べて、ストレージコントローラ１１０からホスト２０に対して速やかにライト完了のレスポンスをホスト２０送信でき、ストレージ装置１０の書き込み性能を向上することができる。
【００６１】
上記実施形態では、ストレージ装置１０に単一のホスト２０が接続されている場合を前提としている。しかし、ホスト２０を含む複数のホストがストレージ装置１０に接続されていても構わない。
【００６２】
以上説明した少なくとも１つの実施形態によれば、バックアップ電源の疲弊度に適合したライトキャッシュサイズを設定することができるストレージコントローラ、ストレージ装置及びライトキャッシング方法を提供することができる。」
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６３】
１０…ストレージ装置、２０…ホスト（ホスト装置）、１００…メディア、１１０…ストレージコントローラ、１１１…ホストインタフェースコントローラ、１１２…データバッファ、１１３…メディアコントローラ、１１４…キャパシタ（バックアップ電源）、１１５…バッファコントローラ、１１７…ライト制御部、１１８…ライトキャッシング判別部、１１８ａ…時間算出部、１１９…キャパシタ放電容量検出部。
【図１】
2013061791.tif 000003
【図２】
2013061791.tif 000004
【図３】
2013061791.tif 000005