(57)【要約】【課題】バッファ制御方法及び記憶装置において、シーケンシャルアクセス時の記憶装置の性能低下を抑制することを目的とする。【解決手段】記録媒体の論理アドレス上連続してアクセス動作を行うよう指示するシーケンシャルアクセスコマンドに基づいて、記録媒体にライトするべきデータ又は記録媒体からリードされたデータをバッファの記憶領域内の連続したアドレスに格納し、バッファの記憶領域内の未使用領域又は使用済領域に応じてバッファの記憶領域のサイズを可変設定し、バッファをバッファ・リングとして使用する。【選択図】図２
2009288988.tif 000002
【特許請求の範囲】
【請求項１】
記録媒体の論理アドレス上連続してアクセス動作を行うよう指示するシーケンシャルアクセスコマンドに基づいて、前記記録媒体にライトするべきデータ又は前記記録媒体からリードされたデータをバッファの記憶領域内の連続したアドレスに格納する格納ステップと、
前記バッファの記憶領域内の未使用領域又は使用済領域に応じて前記バッファの前記記憶領域のサイズを可変設定する可変設定ステップを有し、
前記バッファをバッファ・リングとして使用する、バッファ制御方法。
【請求項２】
記録媒体と、
バッファと、
前記記録媒体の論理アドレス上連続してアクセス動作を行うよう指示するシーケンシャルアクセスコマンドに基づいて、前記記録媒体にライトするべきデータ又は前記記録媒体からリードされたデータを前記バッファの記憶領域内の連続したアドレスに格納するコントローラを備え、
前記コントローラは、前記バッファの記憶領域内の未使用領域又は使用済領域に応じて前記バッファの前記記憶領域のサイズを可変設定し、
前記バッファをバッファ・リングとして使用する、記憶装置。
【請求項３】
前記コントローラは、
前記バッファの状態がデータを格納するための前記記憶領域内の未使用領域が不足している第１状態又は読み出すべきデータが前記記憶領域内の使用済領域に格納されていない第２状態の一方であるか否かを判定するデータバッファ制御部と、
前記データバッファ制御部が前記第１又は第２の状態を判定すると、前記シーケンシャルアクセスコマンドを発行するホスト装置のデータ処理速度及び前記記録媒体のデータ転送速度を算出するコマンド制御部を有し、
前記データバッファ制御部は、前記コマンド制御部の算出結果に基づいて前記バッファの前記記憶領域のサイズを再設定する、請求項２記載の記憶装置。
【請求項４】
前記データバッファ制御部は、前記記録媒体及び前記バッファを有する記憶装置の状態に起因する前記ホスト装置のデータ処理速度の低下に伴い前記バッファの前記記憶領域のサイズを増加させる、請求項３記載の記憶装置。
【請求項５】
前記データバッファ制御部は、前記シーケンシャルアクセスコマンドがシーケンシャルライトコマンドの場合は前記ホスト装置のデータ処理速度に基づいて前記バッファの前記記憶領域のサイズを再設定し、前記シーケンシャルアクセスコマンドがシーケンシャルリードコマンドの場合は前記記録媒体のデータ転送速度に基づいて前記バッファの前記記憶領域のサイズを再設定する、請求項３又は４記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファ制御方法及び記憶装置に係り、特にシーケンシャルアクセスで用いられるバッファを制御するバッファ制御方法及び記憶装置に関する。
【背景技術】
【０００２】
ホスト装置から磁気ディスク装置等の記憶装置に対して、磁気ディスクの論理アドレス上連続してライト動作を行うよう指示するシーケンシャルライトコマンドが発行された場合、磁気ディスク装置はライトデータをバッファの連続したアドレスに格納する。ライトデータをバッファの連続したアドレスに格納することにより、バッファに格納したライトデータを磁気ディスクの回転待ち無く連続的に磁気ディスクにライトすることが可能となる。バッファの連続した記憶領域を一定量使用した際、次にデータを格納するアドレスをシーケンシャルライトコマンドに応答してデータを格納し始めたアドレスに戻すことにより、バッファをバッファ・リング（Buffer Ring）として使用し続けることができる。
【０００３】
又、ホスト装置から磁気ディスク等の記憶装置に対して、磁気ディスクの論理アドレス上連続してリード動作を行うよう指示するシーケンシャルリードコマンドが発行された場合も、シーケンシャルライトの場合と同様に、磁気ディスク装置は磁気ディスクの連続した論理アドレスからリードされたリードデータをバッファの連続したアドレスに格納する。バッファの連続した記憶領域を一定量使用した際、次にデータを格納するアドレスをシーケンシャルリードコマンドに応答してデータを格納し始めたアドレスに戻すことにより、バッファをバッファ・リング（Buffer Ring）として使用し続けることができるのも、シーケンシャルライト時の場合と同様である。しかし、シーケンシャルリードの場合、磁気ディスク装置は、ホスト装置へのリードデータの転送終了後も磁気ディスクからデータをリードし続け、コマンドの発行を伴わなくとも、連続した論理アドレスのデータをバッファに格納し続ける動作を行う。
【０００４】
従来、シーケンシャルライト、シーケンシャルリード等のシーケンシャルアクセスで用いられるバッファの記憶領域のサイズは固定である。このため、ホスト装置と磁気ディスク装置との間でシーケンシャルアクセスに伴うデータ転送が行われる時、ホスト装置のデータ処理速度や磁気ディスク装置のデータ転送速度によっては、リード時のバッファフル（Buffer Full）状態やライト時のバッファエンプティ（Buffer Empty）状態の発生により磁気ディスクの回転待ちが発生する。バッファフル状態とは、バッファに格納するべきデータ（例えば、磁気ディスクからリードしたリードデータ）があるもののバッファの未使用記憶領域が不足している（或いは、未使用記憶領域が無い）状態を指し、バッファエンプティ状態とは、バッファから読み出すべきデータ（例えば、磁気ディスクにライトするべきライトデータ）がバッファに格納されていない状態を指す。
【０００５】
更に、磁気ディスクの回転待ち中にリード時のバッファエンプティ状態又はライト時のバッファフル状態が発生すると、磁気ディスク装置はホスト装置に対してコマンド終了応答を行うことができなくなり、磁気ディスク装置の性能が低下する。このような磁気ディスク装置の性能低下を避けるためにシーケンシャルアクセスで用いられるバッファの記憶領域を大きくすると、キャッシュデータを保持しているバッファのキャッシュデータ領域に上書きをすることになる。この場合、キャッシュデータ領域に保持可能なキャッシュデータ量が少なくなり、キャッシュデータへのヒット率が低下して、結果的に磁気ディスク装置の性能が低下してしまう。
【０００６】
従来のバッファ制御方法としては、例えば特許文献１乃至４にて提案されている如きバッファ制御方法がある。
【特許文献１】特開２０００−１０８９８号公報
【特許文献２】特開２００６−２８５８０９号公報
【特許文献３】特開２００１−５７２４号公報
【特許文献４】特開２００６−１３９４５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来、シーケンシャルアクセス時のバッファ制御に伴い記憶装置の性能が低下してしまうという問題があった。
【０００８】
そこで、本発明は、シーケンシャルアクセス時に記憶装置の性能低下を抑制可能なバッファ制御方法及び記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一観点によれば、記録媒体の論理アドレス上連続してアクセス動作を行うよう指示するシーケンシャルアクセスコマンドに基づいて、前記記録媒体にライトするべきデータ又は前記記録媒体からリードされたデータをバッファの記憶領域内の連続したアドレスに格納する格納ステップと、前記バッファの記憶領域内の未使用領域又は使用済領域に応じて前記バッファの前記記憶領域のサイズを可変設定する可変設定ステップを有し、前記バッファをバッファ・リングとして使用するバッファ制御方法が提供される。
【００１０】
本発明の一観点によれば、記録媒体と、バッファと、前記記録媒体の論理アドレス上連続してアクセス動作を行うよう指示するシーケンシャルアクセスコマンドに基づいて、前記記録媒体にライトするべきデータ又は前記記録媒体からリードされたデータを前記バッファの記憶領域内の連続したアドレスに格納するコントローラを備え、前記コントローラは、前記バッファの記憶領域内の未使用領域又は使用済領域に応じて前記バッファの前記記憶領域のサイズを可変設定し、前記バッファをバッファ・リングとして使用する記憶装置が提供される。
【発明の効果】
【００１１】
開示のバッファ制御方法及び記憶装置によれば、シーケンシャルアクセス時の記憶装置の性能低下を抑制することが可能である。
【発明を実施するための最良の形態】
【００１２】
開示のバッファ制御方法及び記憶装置では、シーケンシャルアクセスで用いられるバッファの記憶領域のサイズを、バッファの記憶領域の使用状態に応じて可変設定して、バッファをバッファ・リングとして使用する。これにより、バッファの記憶領域を、バッファエンプティ状態及びバッファフル状態が発生しない最適な記憶領域を設定することができる。
【００１３】
ホスト装置のデータ処理速度又は記憶装置のデータ処理速度に応じてバッファの記憶領域のサイズを決定すれば、従来手法と比べてバッファの記憶領域をホスト装置により適合したサイズに設定することができる。これにより、データを保持しているバッファのキャッシュデータ領域への上書きを抑制すると共に、バッファフル状態及びバッファエンプティ状態の発生を抑制することができ、記憶装置の性能低下を抑制可能である。又、ユーザが記憶装置及びホスト装置を有するシステムを使用する使用環境に応じてバッファの記憶領域のサイズをチューニングする必要はなく、その分記憶装置内のデータ処理量の増大も抑制可能となる。
【００１４】
以下に、本発明のバッファ制御方法及び記憶装置の各実施例を、図面と共に説明する。
【実施例】
【００１５】
図１は、本発明の一実施例におけるシステムを示す図である。図１に示すシステム１では、ホスト装置１１及び記憶装置１２が有線及び／又は無線のインタフェース１３を介して接続されている。システム１は、例えばデータ処理システム、ストレージシステム等である。
【００１６】
ホスト装置１１は、例えば周知の構成を有する汎用コンピュータである。本実施例では、ホスト装置１１は、ＣＰＵ等のプロセッサや記憶部を含む本体部１１１、表示部１１２及びキーボード１１３を有する。
【００１７】
記憶装置１２は、本実施例では周知の構成を有する磁気ディスク装置である。記憶装置１２は、図１に示す如く接続されたハードディスクコントローラ（ＨＤＣ：Hard Disk Controller）２１、データバッファ２２、リード／ライト制御部２３、アクチュエータ２４、磁気ディスク２５等を有する。ＨＤＣ２１は、コマンド制御部３１及びデータバッファ制御部３２を有する。アクチュエータ２４は、磁気ディスク２５にデータを書き込み、磁気ディスク２５からデータを再生する磁気ヘッド４１を有する。
【００１８】
尚、記憶装置１２は磁気ディスク装置に限定されるものではなく、記憶装置１２が用いる記録媒体も磁気ディスク２５等の磁気記録媒体に限定されるものではない。記録媒体には、例えば光ディスク等の光記録媒体、光磁気ディスク等の光磁気記録媒体等を用いても良い。
【００１９】
コマンド制御部３１は、ホスト装置１１からのコマンド受領処理、キャッシュ制御等を行う。データバッファ制御部３２は、ホスト装置１１及び磁気ディスク２５から転送されたデータをデータバッファ２２に格納し、データバッファ２２からホスト装置１１及び磁気ディスク２５に転送する制御を行う。リード／ライト制御部２３は、リード／ライトチャネル等を有し、磁気ディスク２５やアクチュエータ２４を制御する。
【００２０】
図２は、本実施例の動作を説明するフローチャートである。図２に示す処理の各ステップ（又は、手順）は、本実施例におけるバッファ制御方法の各ステップに相当する。図２に示すステップＳ１，Ｓ２，Ｓ４〜Ｓ６はＨＤＣ２１により実行され、ステップＳ４，Ｓ７はリード／ライト制御部２３により実行される。
【００２１】
図２において、ステップＳ１では、コマンド制御部３１がホスト装置１１が発行したシーケンシャルアクセスコマンドを受領する。ステップＳ２では、データバッファ制御部３２が、シーケンシャルアクセスコマンドに基づいて、データバッファ２２の記憶領域を最大サイズと比較して小さいサイズに初期設定する。
【００２２】
図３は、ステップＳ２におけるデータバッファ２２の記憶領域のサイズの初期設定を説明する図である。図３において、ＳＢはデータバッファ２２のシーケンシャルバッファとして用いられる記憶領域を示し、ＢＲは他のデータData1, ..., Data6等が格納される他の記憶領域を示し、ＭＡＸはデータバッファ２２の記憶領域の最大サイズを示す。記憶領域ＳＢはバッファ・リングとして使用される。CMD1, ..., CMD5は、記憶領域ＳＢに格納されるか、或いは、記憶領域ＳＢから読み出されるデータを示す。図３及び後述する図４乃至図６では、左下がりのハッチングは、シーケンシャルアクセスコマンドがシーケンシャルライトコマンドの場合は記憶領域ＳＢを経由して既に磁気ディスク２５にライトされたライトデータを示し、シーケンシャルアクセスコマンドがシーケンシャルリードコマンドの場合は記憶領域ＳＢを経由して既にホスト装置１１に転送済みのリードデータを示す。又、右下がりのハッチングは、シーケンシャルアクセスコマンドがシーケンシャルライトコマンドの場合は記憶領域ＳＢを経由して未だ磁気ディスク２５にライトされていないライトデータを示し、シーケンシャルアクセスコマンドがシーケンシャルリードコマンドの場合は記憶領域ＳＢを経由して未だホスト装置１１に転送していないリードデータを示す。図３乃至図６中、（ａ）はデータバッファの記憶領域を示し、（ｂ）はデータバッファがバッファ・リングとして使用される様子を示す。
【００２３】
図２において、ステップＳ３では、リード／ライト制御部２３がシーケンシャルアクセスコマンドに応じたアクセス処理を実行する。シーケンシャルアクセスコマンドがシーケンシャルライトコマンドの場合、リード／ライト制御部２３は、ホスト装置１１から転送されてきたライトデータをデータバッファ２２の記憶領域ＳＢに格納し、記憶領域ＳＢに格納されたライトデータを磁気ヘッド４１により磁気ディスク２５にライトする。一方、シーケンシャルアクセスコマンドがシーケンシャルリードコマンドの場合、リード／ライト制御部２３は、磁気ヘッド４１により磁気ディスク２５からリードされたリードデータをデータバッファ２２の記憶領域ＳＢに格納し、記憶領域ＳＢに格納されたリードデータをホスト装置１１へ転送する。
【００２４】
記憶領域ＳＢのサイズの初期設定では、シーケンシャルアクセスコマンドに基づいて、記憶領域ＳＢをデータバッファ２２の記憶領域の最大サイズＭＡＸと比較して小さいサイズにされる。このため、データバッファ２２においてバッファフル状態又はバッファエンプティ状態が発生すると、記憶装置１２では磁気ディスク２５の回転待ちが発生する。磁気ディスク２５の回転待ちが発生すると、データバッファ２２の記憶領域ＳＢを経由したデータの転送単位での処理が可能となるまで、磁気ディスク２５の回転は維持されるが記憶装置１２は待ち状態となる。バッファフル状態とは、データバッファ２２に格納するべきデータ（例えば、磁気ディスク２５からリードしたリードデータ）があるもののデータバッファ２２の未使用の記憶領域ＳＢが不足している（或いは、未使用の記憶領域ＳＢが無い）状態を指し、バッファエンプティ状態とは、データバッファ２２から読み出すべきデータ（例えば、磁気ディスク２５にライトするべきライトデータ）がデータバッファ２２の記憶領域ＳＢに格納されていない状態を指す。
【００２５】
図４は、記憶装置１２において磁気ディスク２５の回転待ちが発生した状態を説明する図である。図４中、図３と同一部分には同一符号を付し、その説明は省略する。図４（ｂ）において、シーケンシャルアクセスコマンドがシーケンシャルライトコマンドの場合、記憶領域ＳＢを経由して磁気ディスク２５にライトするべきライトデータが記憶領域ＳＢに格納されていないので、この場合はバッファエンプティ状態となる。一方、シーケンシャルアクセスコマンドがシーケンシャルリードコマンドの場合、磁気ディスク２５からリードされ記憶領域ＳＢを経由してホスト装置１１に転送するべきリードデータを記憶領域ＳＢに格納できないので（リードデータを格納するのに十分なサイズの記憶領域ＳＢが確保できないので）、この場合はバッファフル状態となる。
【００２６】
図２において、ステップＳ４では、データバッファ制御部３２がデータバッファ２２でバッファフル状態又はバッファエンプティ状態が発生しているか否かを判定する。データバッファ２２の記憶領域ＳＢのサイズと、データバッファ２２を介して磁気ディスク２５又はホスト装置１１へ転送するデータの転送単位は予めわかっているので、ステップＳ４では周知の方法でバッファフル状態又はバッファエンプティ状態の発生の有無を判定可能である。ステップＳ４の判定結果がＹＥＳであると処理はステップＳ５へ進み、判定結果がＮＯであると処理は後述するステップＳ７へ進む。
【００２７】
図２において、ステップＳ５では、コマンド制御部３１が磁気ディスク２５の回転待ち中にホスト装置１１が発行するシーケンシャルアクセスコマンドが要求する磁気ディスク２５のセクタ数及びデータ転送速度、コマンドの発行間隔及び記憶装置１２内でのホスト装置１１からのコマンド受領からデータ転送開始までの内部処理時間を周知の方法で計測する。データ転送開始は、例えばライトデータのデータバッファ２２から磁気ディスク２５への転送の開始、或いは、リードデータの磁気ディスク２５からデータバッファ２２への転送の開始である。又、ステップＳ５では、計測結果に基づいてホスト装置１１のデータ処理速度と、記憶装置１２内の磁気ディスク２５のデータ転送速度を算出する。磁気ディスク２５のデータ転送速度とは、磁気ディスク２５とデータバッファ２２との間のデータ転送速度を指す。ホスト装置１１のデータ処理速度と磁気ディスク２５のデータ転送速度は、例えば次のような式に基づいて算出可能である。ここで、ＷＢＳはシーケンシャルライト処理を実行する時点でのデータバッファ２２の記憶領域ＳＢのサイズ、ＲＢＳはシーケンシャルリード処理を実行する時点でのデータバッファ２２の記憶領域ＳＢのサイズ、ＤＰＳはホスト装置１１のデータ処理速度、ＤＴＳは磁気ディスク２５のデータ転送速度、ＤＲＴは磁気ディスク２５の１回転に要する時間（以下、１回転時間と言う）を示す。
【００２８】
ＷＢＳ＝ＤＰＳ＊ＤＲＴ
ＲＢＳ＝ＤＴＳ＊ＤＲＴ
図２において、ステップＳ６では、データバッファ制御部３２がステップＳ５で算出された結果を用いて、記憶装置１２のデータバッファ２２の記憶領域ＳＢのサイズを回転待ち中のバッファフル状態又はエンプティ状態が起こらない限界サイズまで拡大、或いは、縮小することで、記憶領域ＳＢのサイズを再設定する。
【００２９】
図５は、ステップＳ６によるデータバッファ２２の記憶領域ＳＢのサイズの再設定を説明する図である。図５中、図３と同一部分には同一符号を付し、その説明は省略する。
図４（ｂ）において、シーケンシャルアクセスコマンドがシーケンシャルライトコマンドの場合、記憶領域ＳＢを経由して磁気ディスク２５にライトするべきライトデータが記憶領域ＳＢに格納されていないので、この場合はバッファエンプティ状態となる。一方、シーケンシャルアクセスコマンドがシーケンシャルリードコマンドの場合、磁気ディスク２５からリードされ記憶領域ＳＢを経由してホスト装置１１に転送するべきリードデータを記憶領域ＳＢに格納できないので（即ち、リードデータを格納するのに十分なサイズの記憶領域ＳＢが確保できないので）、この場合はバッファフル状態となる。
【００３０】
ステップＳ６の後、処理はステップＳ４へ戻り、ステップＳ４〜Ｓ６の処理は、ステップＳ４の判定結果がＮＯになるまで繰り返される。このような処理は、記憶装置１２において磁気ディスク２５の回転待ち中に、バッファフル状態又はバッファエンプティ状態が発生するまでの期間で行うため、記憶装置１２は、ホスト装置１１からのコマンドに対してコマンド終了応答ができない状態になることは少なく、初期設定でデータバッファ２２の記憶領域ＳＢを小さく設定して磁気ディスク２５の回転待ちを発生させるデメリットも少ない。
【００３１】
ステップＳ４の判定結果がＮＯになると、ステップＳ７では、リード／ライト制御部２３がシーケンシャルアクセスコマンドに応じたアクセス処理、即ち、シーケンシャルライト処理又はシーケンシャルリード処理を終了する。
【００３２】
次に、シーケンシャルライトコマンドの実行時の具体例を説明する。例えば、１コマンドのセクタ数が６４セクタ、データ転送速度が１３０ＭＢ／ｓ、コマンドの発行間隔が０．０００３ｓ、コマンド受領からデータ転送開始までの内部処理時間が０．０００２ｓの場合、ホスト装置１１の処理速度は、４３．５ＭＢ／ｓとなる。又、説明の便宜上、磁気ディスク２５の１回転時間は０．０１１１ｓであり、磁気ディスク２４のデータ転送速度は５０ＭＢ／ｓであるものとする。
【００３３】
従来手法を用いた場合、図６で示すようにデータバッファの記憶領域ＳＢｃのサイズは例えば０．４ＭＢに固定される。図６は、従来手法を用いた場合に記憶装置において磁気ディスクの回転待ちが発生した状態を説明する図である。この場合、約０．０６２ｓに一度バッファエンプティ状態が発生し、記憶装置では回転待ちが発生する。回転待ち中に０．４ＭＢのデータバッファにホスト装置のデータ処理速度でデータを受領すると、０．００９２ｓでバッファフル状態が発生し、記憶装置が磁気ディスクへのデータライトを実行できるようになるまでの０．００１９ｓ（＝０．０１１１ｓ−０．００９２ｓ）の間、記憶装置はホスト装置へコマンド終了応答をすることができなくなり、記憶装置の性能が低下する。
【００３４】
これに対し、本実施例の手法を用いた場合、図３に示すように、先ずはデータバッファ２２の小さい範囲を記憶領域（シーケンシャルバッファの領域）ＳＢとして確保する。現在の磁気ディスク２５のデータ転送速度５０ＭＢ／ｓに対して、ホスト装置１１の最大データ転送速度は磁気ディスク２５のデータ転送速度を確実に上回るため、データバッファ２２の状態による記憶装置１２の回転待ちが発生しないことから、記憶領域ＳＢのサイズ（又は、シーケンシャルバッファサイズ）は制御し得る最小サイズに設定しても何ら支障がなく、この例では０．２ＭＢに設定する。ホスト装置１１が上記データ処理速度を有する場合、０．０３１ｓに一度バッファエンプティ状態が発生する。記憶装置１２の回転待ち中に、記憶装置１２はホスト装置１１のデータ処理速度が４３．５ＭＢ／ｓであると計測し、図５と共に説明したように、データバッファ２２の記憶領域ＳＢのサイズを０．２ＭＢから０．４８３ＭＢ （＝４３．５ＭＢ／ｓ＊０．０１１１ｓ）まで拡大する。このようにデータバッファ２２の記憶領域ＳＢを拡大することにより、バッファフル状態が発生せずに記憶装置１２の性能低下を防ぐことが可能となる。
【００３５】
又、従来手法を用いた場合に比べ、本実施例の手法を用いるとデータバッファ２２の記憶領域ＳＢのサイズを０．０８３ＭＢ増加させるだけで、記憶装置１２の性能低下を防ぐことが可能であり、有用なキャッシュデータを最大限保持することも可能となる。
【００３６】
尚、ステップＳ５での計測タイミングは記憶装置１２の回転待ち中に限らず、リード処理又はライト処理中に計測を行うことも可能である。更に、リード処理の場合も上記ライト処理の場合と同様に、バッファフル状態又はバッファエンプティ状態の違いのみで、ホスト装置１１が発行するシーケンシャルアクセスコマンドが要求する磁気ディスク２５のセクタ数及びデータ転送速度、コマンドの発行間隔及び記憶装置１２内でのホスト装置１１からのコマンド受領からデータ転送開始までの内部処理時間を計測することが可能である。
【００３７】
上記実施例では、ホスト装置のデータ処理速度を監視してデータバッファの記憶領域ＳＢのサイズ（又は、シーケンシャルバッファサイズ）を決定するため、従来手法と比べるとホスト装置の性能等に適合したシーケンシャルバッファサイズを設定することができる。これにより、データバッファに格納済みデータの保持と、バッファフル状態又はバッファエンプティ状態の発生の低減を両立でき、無駄なく記憶装置の性能を向上することができる。又、ユーザがホスト装置及び記憶装置を有するシステムを使用する使用環境におけるシーケンシャルバッファサイズのチューニングの必要がなく、その分記憶装置内のデータ処理量の増大も抑制可能となる。
【００３８】
尚、本発明は、以下に付記する発明をも包含するものである。
（付記１）
記録媒体の論理アドレス上連続してアクセス動作を行うよう指示するシーケンシャルアクセスコマンドに基づいて、前記記録媒体にライトするべきデータ又は前記記録媒体からリードされたデータをバッファの記憶領域内の連続したアドレスに格納する格納ステップと、
前記バッファの記憶領域内の未使用領域又は使用済領域に応じて前記バッファの前記記憶領域のサイズを可変設定する可変設定ステップを有し、
前記バッファをバッファ・リングとして使用する、バッファ制御方法。
（付記２）
前記可変設定ステップは、
前記バッファの状態がデータを格納するための前記記憶領域内の未使用領域が不足している第１状態又は読み出すべきデータが前記記憶領域内の使用済領域に格納されていない第２状態の一方であるか否かを判定する判定ステップと、
前記判定ステップが前記第１又は第２の状態を判定すると、前記シーケンシャルアクセスコマンドを発行するホスト装置のデータ処理速度及び前記記録媒体のデータ転送速度を算出する算出ステップと、
前記算出ステップの算出結果に基づいて前記バッファの前記記憶領域のサイズを再設定する再設定ステップを有する、付記１記載のバッファ制御方法。
（付記３）
前記再設定ステップは、前記記録媒体及び前記バッファを有する記憶装置の状態に起因する前記ホスト装置のデータ処理速度の低下に伴い前記バッファの前記記憶領域のサイズを増加させる、付記２記載のバッファ制御方法。
（付記４）
前記再設定ステップは、前記シーケンシャルアクセスコマンドがシーケンシャルライトコマンドの場合は前記ホスト装置のデータ処理速度に基づいて前記バッファの前記記憶領域のサイズを再設定し、前記シーケンシャルアクセスコマンドがシーケンシャルリードコマンドの場合は前記記録媒体のデータ転送速度に基づいて前記バッファの前記記憶領域のサイズを再設定する、付記２又は３記載のバッファ制御方法。
（付記５）
前記シーケンシャルアクセスコマンドに基づいて、前記バッファの前記記憶領域を最大サイズと比較して小さいサイズに初期設定するサイズ設定ステップを更に有する、付記２乃至４のいずれか１項記載のバッファ制御方法。
（付記６）
記録媒体と、
バッファと、
前記記録媒体の論理アドレス上連続してアクセス動作を行うよう指示するシーケンシャルアクセスコマンドに基づいて、前記記録媒体にライトするべきデータ又は前記記録媒体からリードされたデータを前記バッファの記憶領域内の連続したアドレスに格納するコントローラを備え、
前記コントローラは、前記バッファの記憶領域内の未使用領域又は使用済領域に応じて前記バッファの前記記憶領域のサイズを可変設定し、
前記バッファをバッファ・リングとして使用する、記憶装置。
（付記７）
前記コントローラは、
前記バッファの状態がデータを格納するための前記記憶領域内の未使用領域が不足している第１状態又は読み出すべきデータが前記記憶領域内の使用済領域に格納されていない第２状態の一方であるか否かを判定するデータバッファ制御部と、
前記データバッファ制御部が前記第１又は第２の状態を判定すると、前記シーケンシャルアクセスコマンドを発行するホスト装置のデータ処理速度及び前記記録媒体のデータ転送速度を算出するコマンド制御部を有し、
前記データバッファ制御部は、前記コマンド制御部の算出結果に基づいて前記バッファの前記記憶領域のサイズを再設定する、付記６記載の記憶装置。
（付記８）
前記データバッファ制御部は、前記記録媒体及び前記バッファを有する記憶装置の状態に起因する前記ホスト装置のデータ処理速度の低下に伴い前記バッファの前記記憶領域のサイズを増加させる、付記７記載の記憶装置。
（付記９）
前記データバッファ制御部は、前記シーケンシャルアクセスコマンドがシーケンシャルライトコマンドの場合は前記ホスト装置のデータ処理速度に基づいて前記バッファの前記記憶領域のサイズを再設定し、前記シーケンシャルアクセスコマンドがシーケンシャルリードコマンドの場合は前記記録媒体のデータ転送速度に基づいて前記バッファの前記記憶領域のサイズを再設定する、付記７又は８記載の記憶装置。
（付記１０）
前記データバッファ制御部は、前記シーケンシャルアクセスコマンドに基づいて、前記バッファの前記記憶領域を最大サイズと比較して小さいサイズに初期設定する、付記７乃至９のいずれか１項記載の記憶装置。
（付記１１）
前記コマンド制御部は、前記シーケンシャルアクセスコマンドがシーケンシャルライトコマンドの場合には前記バッファの状態が前記第１の状態であるか否かを判定し、前記シーケンシャルアクセスコマンドがシーケンシャルリードコマンドの場合には前記バッファの状態が前記第２の状態であるか否かを判定する、付記７乃至１０のいずれか１項記載の記憶装置。
（付記１２）
前記記録媒体はディスクであり、
前記第１又は第２の状態では、前記ディスクの回転待ちが発生する、付記６乃至１１のいずれか１項記載の記憶装置。
【００３９】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【図面の簡単な説明】
【００４０】
【図１】本発明の一実施例におけるシステムを示す図である。
【図２】実施例の動作を説明するフローチャートである。
【図３】データバッファの記憶領域のサイズの初期設定を説明する図である。
【図４】記憶装置において磁気ディスクの回転待ちが発生した状態を説明する図である。
【図５】データバッファの記憶領域のサイズの再設定を説明する図である。
【図６】従来手法を用いた場合に記憶装置において磁気ディスクの回転待ちが発生した状態を説明する図である。
【符号の説明】
【００４１】
１      システム
１１      ホスト装置
１２      記憶装置
１３      インタフェース
２１      ＨＤＣ
２２      データバッファ
２３      リード／ライト制御部
２４      アクチュエータ
２５      磁気ディスク
３１      コマンド制御部
３２      データバッファ制御部
４１      磁気ヘッド
【図１】
2009288988.tif 000003
【図２】
2009288988.tif 000004
【図３】
2009288988.tif 000005
【図４】
2009288988.tif 000006
【図５】
2009288988.tif 000007
【図６】
2009288988.tif 000008