(57)【要約】【課題】ディスク記憶媒体に、ヘッドでライトデータを書き込むディスク記憶装置において、スループットを改善し、且つ不揮発性メモリの寿命を長くする。【解決手段】ディスク媒体（３）の物理セクタサイズが、論理ブロックのサイズの整数倍である書き込み処理において、制御ユニット（１４）が、物理セクタサイズ内の一部の論理ブロック単位のライトを行うライトデータが存在することを検出し、一部の論理ブロック単位のライトデータを、不揮発性メモリ（１２）に格納し、物理セクタサイズに一致する複数の論理ブロック単位のライトデータを、ディスク媒体（３）へ格納した後、ホストへ応答を報告する。このため、スループットを向上するとともに、不揮発性メモリの寿命をより長くすることができる。【選択図】図５
2010211888.tif 000002
【特許請求の範囲】
【請求項１】
回転するディスク媒体に、データをリードし、ライトするディスク機構と、
データを格納する不揮発性メモリと、
ホストから送信された論理ブロック単位のライトデータを格納するバッファメモリと、
前記バッファメモリの前記論理ブロック単位のライトデータを、前記論理ブロック単位の整数倍である物理セクタサイズで、前記ディスク媒体に書き込む制御ユニットとを有し、
前記制御ユニットは、前記ライトデータに、前記物理セクタサイズ内の一部の前記論理ブロック単位のライトを行うライトデータが存在することを検出し、前記一部の論理ブロック単位のライトデータを、前記不揮発性メモリに格納し、前記物理セクタサイズに一致する複数の前記論理ブロック単位のライトデータを、前記ディスク媒体へ格納した後、前記ホストへ応答を報告し、前記ホストからのコマンドが所定時間到来しないことを検出して、リード・モディファイ・ライト処理により、前記不揮発性メモリに格納した前記論理ブロック単位のライトデータを、前記物理セクタサイズで、前記ディスク媒体に書き込む
ことを特徴とするディスク記憶装置。
【請求項２】
前記不揮発性メモリの各書込みブロックの状態を示す管理テーブルを有し、
前記制御ユニットは、前記論理ブロック単位のライトデータを、前記不揮発性メモリに書込み後、前記管理テーブルの書き込んだブロックの状態を、有効データ有りに設定する
ことを特徴とする請求項１のディスク記憶装置。
【請求項３】
前記制御ユニットは、前記論理ブロック単位のライトデータを示す論理ブロックアドレスを、前記整数倍の整数で割り算して、前記一部の前記論理ブロック単位のライトデータが存在することを検出する
ことを特徴とする請求項１のディスク記憶装置。
【請求項４】
前記制御ユニットは、前記不揮発性メモリを、リングバッファのように、前記一部の前記論理ブロック単位のライトデータの書込みブロック位置を変更する
ことを特徴とする請求項１のディスク記憶装置。
【請求項５】
前記制御ユニットは、前記管理テーブルが前記有効データ有りを示す前記不揮発性メモリの前記書き込みブロックのデータを読み出し、前記リード・モディファイ・ライト処理により、前記一部の前記論理ブロック単位のライトデータを、前記物理セクタサイズで、前記ディスク媒体に書き込む
ことを特徴とする請求項２のディスク記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物理セクタサイズが、論理ブロックサイズの整数倍であるディスク記憶媒体への書き込み処理を行うディスク記憶装置に関する。
【背景技術】
【０００２】
ディスク装置の物理セクタサイズと、ホストの書込み単位（論理ブロック単位）である論理セクタサイズとが、一致しない場合がある。例えば、物理セクタサイズが、４ＫＢｙｔｅであり、論理セクタサイズが、５１２Ｂｙｔｅである場合には、ディスク媒体の１物理セクタは、８論理セクタのデータを格納する。
【０００３】
一方、ホストは、論理セクタ単位のライトデータを、ディスク装置に送信するため、この論理セクタを、物理セクタに合わせる必要がある。この場合、ライトデータ全体が、物理セクタサイズに一致していれば、簡単にライト処理できる。
【０００４】
しかし、ライトデータの一部が、物理セクタの一部である場合、物理セクタ全体を読み出し、その一部（論理セクタ）を、ライトデータで変更し、物理セクタサイズのデータを構築し、物理セクタサイズで、ディスク媒体に書き込む必要がある。
【０００５】
この物理セクタサイズの一部のライトデータの論理セクタを、端数セクタといい、前述の書込み処理を、リード・モディファイ・ライト処理という。このホストから送信されるライトデータの先頭と終端の端数セクタおよび交替先への書込みは、リード・モディファイ・ライト処理が必要であるため、ディスクの回転待ちが発生し、スループット低下してしまう。
【０００６】
このスループット低下を防止する方法が提案されている（例えば、特許文献１参照）。即ち、ディスクのシーク時間、回転待ち時間など、ディスク媒体への書込みが可能になるまでの間、ホストからのライトデータ全体を、不揮発性メモリに、保存しておき、ディスク媒体への書き込みが可能となると、不揮発性メモリに格納したライトデータを、ディスク媒体へ、リード・モディファイ・ライトする。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−２０９１１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
不揮発性メモリは、書込み可能回数が、制限されているものが多い。例えば、不揮発性メモリとして、代表的なフラッシュメモリは、書込み可能回数が、ＳＬＣ（Single Level Cell）で、１０万回、ＭＬＣ（Multi Level Cell）で、１万回であると、言われている。
【０００９】
従来の方法では、ライトデータ全体を、不揮発性メモリに書き込むため、短期間で、書込み可能制限回数に達してしまう。例えば、不揮発性メモリへの書込みは、１２８ＫＢｙｔｅを、１．２ｍｓで書き込めるが、１００００ｒｐｍの磁気ディスクでは、回転待ち時間は、６ｍｓであり、殆どのライトデータは、不揮発性メモリに書込まれる事になる。
【００１０】
従って、本発明の目的は、物理セクタサイズが、論理セクタサイズの整数倍であるディスク媒体への端数セクタのスループットを向上するとともに、不揮発性メモリの寿命をより長くするためのディスク記憶装置を提供することにある。
【課題を解決するための手段】
【００１１】
この目的の達成のため、ディスク記憶装置は、回転するディスク媒体に、データをリードし、ライトするディスク機構と、データを格納する不揮発性メモリと、ホストから送信された論理ブロック単位のライトデータを格納するバッファメモリと、前記バッファメモリの前記論理ブロック単位のライトデータを、前記論理ブロック単位の整数倍である物理セクタサイズで、前記ディスク媒体に書き込む制御ユニットとを有し、前記制御ユニットは、前記ライトデータに、前記物理セクタサイズ内の一部の前記論理ブロック単位のライトを行うライトデータが存在することを検出し、前記一部の論理ブロック単位のライトデータを、前記不揮発性メモリに格納し、前記物理セクタサイズに一致する複数の前記論理ブロック単位のライトデータを、前記ディスク媒体へ格納した後、前記ホストへ応答を報告し、前記ホストからのコマンドが所定時間到来しないことを検出して、リード・モディファイ・ライト処理により、前記不揮発性メモリに格納した前記論理ブロック単位のライトデータを、前記物理セクタサイズで、前記ディスク媒体に書き込む。
【発明の効果】
【００１２】
ディスク媒体の物理セクタサイズが、論理ブロックのサイズの整数倍である書き込み処理において、物理セクタサイズ内の一部の論理ブロック単位のライトを行うライトデータが存在することを検出し、一部の論理ブロック単位のライトデータを、不揮発性メモリに格納し、物理セクタサイズに一致する複数の論理ブロック単位のライトデータを、ディスク媒体へ格納した後、ホストへ応答を報告するため、スループットを向上するとともに、不揮発性メモリの寿命をより長くすることができる。
【図面の簡単な説明】
【００１３】
【図１】本発明のディスク記憶装置の一実施の形態の構成図である。
【図２】図１のディスク記憶装置の回路ブロック図である。
【図３】図２の不揮発性メモリの管理テーブルの説明図である。
【図４】図２の不揮発性メモリの物理ブロックの説明図である。
【図５】本発明の一実施の形態のライト処理の説明図である。
【図６】本発明の一実施の形態のリード／ライト処理フロー図（その１）である。
【図７】本発明の一実施の形態のリード／ライト処理フロー図（その２）である。
【図８】本発明の一実施の形態の端数セクタの検出処理フロー図である。
【図９】本発明の一実施の形態の不揮発性メモリの書込み処理の説明図である。
【図１０】本発明の一実施の形態の不揮発性メモリの読み出し処理の説明図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態を、ディスク記憶装置、リード／ライト処理、不揮発性メモリの書き込み処理、他の実施の形態の順で説明する。
【００１５】
（ディスク記憶装置）
図１は、本発明のディスク記憶装置の一実施の形態の斜視図、図２は、図１のディスク記憶装置の回路ブロック図である。図１は、ディスク記憶装置として、磁気ディスクにデータをリード／ライトする磁気ディスク装置（ＨＤＤ）を例に示す。
【００１６】
図１に示すように、磁気ディスク装置１は、ディスクエンクロージャ内に、磁気ディスク３と、磁気ディスク３を回転するスピンドルモータ４と、磁気ディスク３にデータをリード／ライトする磁気ヘッド５３と、磁気ヘッド５３を磁気ディスク３の半径方向（トラック横断方向）に移動するアクチュエータ（ＶＣＭ）５とを備える。これらにより、ディスク機構を構成する。
【００１７】
アクチュエータ５のアームには、サスペンション５２が設けられ、サスペンション５２の先端に、磁気ヘッド５３が搭載される。磁気ヘッド５３は、スライダに、リード素子と、ライト素子とを設けて、構成される。
【００１８】
図２に示すように、磁気ディスク装置１は、ホストコンピュータ６と、インターフェース（接続線）７を介し接続される。インターフェース７は、ＳＡＴＡ（Serial AT Attached）等の規格で定められたものを使用できる。
【００１９】
磁気ディスク装置１は、ＨＤＣ（Hard  Disk  Controller）１６と、ＭＰＵ１４と、バッファメモリ１８と、揮発性メモリ（ＲＡＭ）２０と、ＲＯＭ（Read Only Memory）２２と、不揮発性メモリ１２と、磁気ディスク機構（図１）３、４、５とを備える。
【００２０】
ＭＰＵ１４、バッファメモリ１８、不揮発性メモリ１２、磁気ディスク機構３、４、５は、バス２４で接続され、ＨＤＣ１６は、ＭＰＵ１４、バッファメモリ１８と内部ラインで接続され、ＭＰＵ１４は、ＲＡＭ２０、ＲＯＭ２２と、内部ラインで接続される。
【００２１】
ＨＤＣ１６は、ホストとのインターフェース制御を行い、ホストからの命令を解読し、ＭＰＵ１４に渡し、バッファメモリ１８を制御する。ＲＯＭ２２は、ファームウェアを格納し、ＲＡＭ２０は、電源投入時に、ＲＯＭ２２からファームウェアがロードされる。
【００２２】
ＭＰＵ１４は、ＲＡＭ２０にロードされたファームウェアを実行して、磁気ディスク機構３、４、５のリード／ライト制御を行うとともに、不揮発性メモリ１２の端数セクタの書込み、読み出し制御を行う。
【００２３】
バッファメモリ１８は、キャッシュメモリの役目を果たし、ホストからのコマンド、ライトデータを保存し、磁気ディスク３からのリードデータを保存する。不揮発性メモリ１２は、ここでは、フラッシュメモリで構成され、ホストから受信したライトコマンドの端数セクタのデータを一時的に格納する。
【００２４】
尚、図示しないが、磁気ディスク機構３、４、５には、スピンドルモータ４とＶＣＭ５とを駆動制御するモータ駆動制御部と、リードデータの復調を行うとともに、リードゲート、ライトゲート、リードクロック、ライトクロックの生成を行うリードチャネル回路と、ライト時は、ライトデータに従い、磁気ヘッド５３に記録電流を流し、リード時は、磁気ヘッド５３からの読取信号を増幅して、リードチャネル回路に出力するヘッドＩＣとが、設けられている。
【００２５】
図３及び図４は、不揮発性メモリ１２の物理ブロック及び管理情報の説明図である。図４に示すように、不揮発性メモリ１２の１物理ブロックは、データ領域１２−２と、メモリ管理情報１２−１と、ＥＣＣ１２−３とで構成される。ＥＣＣ１２−３は、データと管理情報を含めたＥＣＣを格納する。
【００２６】
例えば、不揮発性メモリ１２の１物理ブロックを、５２８Ｂｙｔｅとすると、データ領域１２−２に、５１２Ｂｙｔｅが割り当てられ、メモリ管理情報１２−１に、８Ｂｙｔｅ割り当てられ、ＥＣＣ１２−３に、８Ｂｙｔｅが割り当てられる。
【００２７】
このメモリ管理情報１２−１は、当該物理ブロックの状態１２０と、消去回数１２２と、対応する論理ブロックアドレス（ＬＢＡ）１２４からなる。メモリ管理情報１２−１は、書込み時と消去時に、図３で説明するメモリ管理テーブルと共に、更新される。又、このタイミングで、メモリ管理情報を更新することにより、途中で電源が落とされても、メモリ管理情報とデータが不一致になることを防止できる。
【００２８】
状態情報１２０では、値「００」で、書込み可能（ｖａｌｉｄ）を示し、値「０１」で、データ領域に無効データがあること（書き込む前に消去が必要であること）を示し、値「０２」で、データ領域に有効データがあること（ｉｎｖａｌｉｄ）を示し、値「９９」で、消去可能制限回数に達したため、使用不可であること示す。又、上記以外の値の場合には、当該物理ブロックが、不良ブロックであることを示す。尚、フラッシュメモリでは、消去（書込み）可能制限回数は、ＳＬＣで、１０万回、ＭＬＣで、１万回の保証がある。
【００２９】
消去回数１２２は、当該物理ブロックの消去実行回数を示す。論理ブロックアドレス（ＬＢＡ）１２４は、値が、「ＦＦＦＦＦＦ」では、アドレスの未割り当てを示し、それ以外の値では、アドレス割り当て済みであり、当該ＬＢＡを示す。
【００３０】
次に、図３に示す不揮発性メモリ管理テーブル１２−４は、バッファメモリ１８に構築され、不揮発性メモリ１２の書込み時と消去時に、図４のメモリ管理情報１２−１と共に、更新される。そして、不揮発性メモリ管理テーブル１２−４は、リード時のＬＢＡの検索、ライト時の旧データの削除のためのＬＢＡ検索、不揮発性メモリ１２の消去回数の平準化のため、使用される。
【００３１】
このメモリ管理テーブル１２−４の構成は、図４のメモリ管理情報１２−１と同様であり、不揮発性メモリ１２の各物理ブロックの状態１２６と、消去回数１２７と、対応する論理ブロックアドレス（ＬＢＡ）１２８からなる。オフセットアドレスは、オフセットアドレスを、６６倍した値が、不揮発性メモリ１２の物理ブロックアドレスを示す。例えば、最後にライトしたポインタＰが示す不揮発性メモリ１２の物理ブロックアドレスは、オフセットアドレス「０００００１００」の６６倍の「０ｘ００００４２００」番地である。
【００３２】
（リード／ライト処理）
図５は、本発明の一実施の形態のライトデータの書き込み処理の説明図である。ここでは、磁気ディスク３の１物理ブロック（セクタサイズ）が、８論理ブロック（論理セクタサイズ）である例で説明する。ホストから送信されたライトデータは、揮発性メモリ(バッファ)１８に受信し、格納する。
【００３３】
バッファメモリ１８へ受信したデータは、以下の２つの記憶領域に分けて保存する。ライトデータの内、端数セクタａは、リード・モディファイ・ライト処理によるディスクの回転待ちを回避する為に、磁気ディスク媒体３ではなく、不揮発性メモリ１２に保存する。ディスクの回転待ちの対象にならない中間データｂは、そのまま磁気ディスク媒体３に保存する。
【００３４】
バッファメモリ１８へ受信したデータを、磁気ディスク媒体３と不揮発性メモリ１２へ保存する順番は、先頭の端数セクタａ、中間セクタｂ、終端の端数セクタａの順である。そして、中間セクタｂのディスク媒体３への書込みの為のシーク中に、先頭の端数セクタａのデータを、不揮発性メモリ１２に書込む。
【００３５】
そして、中間セクタｂのデータのディスク媒体３への書込み完了後(交替ブロックを含む場合は不揮発性メモリの書込み完了後)、終端の端数セクタａのデータも、不揮発性メモリ１２に書込む。
【００３６】
このように、ホストから送信されるライトデータの先頭と終端の端数セクタａおよび交替先への書込みについて、直接、磁気ディスク媒体３に書込まず、一時的に不揮発性メモリ１２に記憶し、アイドル時に、不揮発性メモリ１２の記憶データを、磁気ディスク媒体３に書込む。
【００３７】
これにより、リード・モディファイ・ライト処理で発生していたディスクの回転待ちが無くなり、ライトデータの書込み速度を向上させる事が出来る。又、端数セクタのみ不揮発性メモリ１２に書き込むため、消去可能回数が制限された不揮発性メモリ１２の使用寿命を伸ばすことができ、長期に渡り、安定な書込み速度向上の機能を維持できる。
【００３８】
図６及び図７は、本発明の一実施の形態のリード／ライト処理フロー図である。
【００３９】
（Ｓ１０）装置の電源投入後、磁気ディスク３を回転起動する。この磁気ディスク３の定常回転へ達するまでの待ち時間に、ＭＰＵ１４は、不揮発性メモリ１２の全ブロックをリードし、各物理ブロックのメモリ管理情報１２−１を収集し、バッファメモリ１８に、図４で説明した不揮発性メモリ管理テーブル１２−４を作成する。
【００４０】
（Ｓ１２）ＭＰＵ１４は、ＨＤＣ１６が、コマンドキューを保持しているかを確認する。
【００４１】
（Ｓ１４）ＭＰＵ１４は、コマンドキューを保持していない（コマンドキューが空である）と判断すると、一定時間、コマンドキューが空かを判定し、コマンドキューが、一定時間空なら（ホストからのコマンド受信がなければ）、不揮発性メモリ１２に保存した端数セクタのデータを、ディスク媒体３に保存する。即ち、端数セクタの属する物理ブロック（セクタ）を、磁気ディスク３から読み出し、その物理ブロックの端数セクタ（論理セクタ）に対応する位置を、端数セクタのデータで書き換え、新たな物理ブロックのデータを作成し、磁気ディスク３の当該物理ブロックに書き込む。所謂、リード・モディファイ・ライト処理する。そして、不揮発性メモリ１２のデータを消去し、不揮発性メモリテーブル１２の該当する論理アドレスの消去回数を、カウントアップした後、その論理アドレスを「００」（書き込み可能）、「ＦＦＦＦＦＦＦＦ」（論理アドレス未割り当て）に設定する。又、この空き時間を利用して、ＭＰＵ１４は、不揮発性管理テーブル１２−４の状態情報１２６が、「０１」（無効データ有り）となっている論理アドレスのデータの消去を行う。そして、ステップＳ１２に戻る。
【００４２】
（Ｓ１６）ＭＰＵ１４は、コマンドキューを保持していると判定すると、コマンドキューの先頭にあるコマンドを実行する。先ず、コマンドが、リードコマンドであるか、ライトコマンドであるかを判定する。ＭＰＵ１４は、コマンドが、リードコマンドであると判定すると、図７のステップＳ３２に進む。
【００４３】
（Ｓ１８）一方、ＭＰＵ１４は、コマンドがライトコマンドであると判定すると、受信したライトデータの先頭に端数セクタがあるかを判定する。この判定処理は、図８で後述する。ＭＰＵ１４は、先頭に端数セクタがないと判定すると、図７のステップ２４に進む。
【００４４】
（Ｓ２０）ＭＰＵ１４は、先頭に端数セクタが有ると判定すると、バッファメモリ１８の不揮発性メモリ管理テーブル１２−４を、端数セクタのＬＢＡで参照し、これから書き込もうとしている端数セクタのＬＢＡに有効なデータが、不揮発性メモリ１２に既にあるかを判定する。ＭＰＵ１４は、端数セクタのＬＢＡのデータが、不揮発性メモリ１２に既にあると判定すると、不揮発性メモリ１２の当該アドレスのデータを消去し、不揮発性メモリ管理テーブル１２−４の対応する論理アドレスの状態を、「００」（書き込み可能）に設定する。又、余り時間があれば、ＭＰＵ１４は、不揮発性管理テーブル１２−４の状態情報１２６が、「０１」（無効データ有り）となっている論理アドレスのデータの消去を行い、不揮発性メモリ管理テーブル１２−４の状態を、「書き込み可能」に設定する。そして、ステップＳ２２に進む。
【００４５】
（Ｓ２２）ＭＰＵ１４は、不揮発性メモリ管理テーブル１２−４を参照し、前回書き込んだ物理アドレスの次のアドレス位置から、状態が「書き込み可能」であるアドレスを昇順に検索し、不揮発性メモリ１２の検索したアドレスに、バッファメモリ１８のライトデータの先頭の端数セクタのデータを、格納する。後述するように、不揮発性メモリの書込み回数を平準化するため、リングバッファのように、使用する。この書込み後、不揮発性メモリ管理テーブル１２−４の対応するアドレスの状態を、「有効データ有り」に設定する。
【００４６】
（Ｓ２４）次に、ＭＰＵ１４は、ライトデータの中間セクタのデータは、磁気ディスク媒体３に書き込む。
【００４７】
（Ｓ２６）一方、ＭＰＵ１４は、受信したライトデータの終端に端数セクタがあるかを判定する。この判定処理は、図８で後述する。ＭＰＵ１４は、終端に端数セクタがないと判定すると、ステップ３４に進む。
【００４８】
（Ｓ２８）ＭＰＵ１４は、終端に端数セクタが有ると判定すると、バッファメモリ１８の不揮発性メモリ管理テーブル１２−４を、端数セクタのＬＢＡで参照し、これから書き込もうとしている端数セクタのＬＢＡに有効なデータが、不揮発性メモリ１２に既にあるかを判定する。ＭＰＵ１４は、端数セクタのＬＢＡのデータが、不揮発性メモリ１２に既にあると判定すると、不揮発性メモリ管理テーブル１２−４の当該論理アドレスの状態を、「０１」（無効データ有り）に設定する。尚、ここでは、データの消去を行わずに、アイドル中、又は、ディスクのシーク中に、データを消去する。そして、ステップＳ３０に進む。
【００４９】
（Ｓ３０）ＭＰＵ１４は、不揮発性メモリ管理テーブル１２−４を参照し、前回書き込んだ物理アドレスの次のアドレス位置から、状態が「書き込み可能」であるアドレスを昇順に検索し、不揮発性メモリ１２の検索したアドレスに、バッファメモリ１８のライトデータの終端の端数セクタのデータを、格納する。後述するように、不揮発性メモリの書込み回数を平準化するため、リングバッファのように、使用する。この書込み後、不揮発性メモリ管理テーブル１２−４の対応するアドレスの状態を、「有効データ有り」に設定する。
【００５０】
（Ｓ３２）一方、ステップＳ１６で、ＭＰＵ１４が、コマンドがリードデータであると判定すると、ＲＡＭ２０のアドレス管理テーブルを参照し、不揮発性メモリ１２又は磁気ディスク３からデータをバッファメモリ１８に読み込む。そして、ＨＤＣ１６が、ホストにリードデータを転送する。そして、ステップＳ３４に進む。尚、アドレス管理テーブルは、論理ブロックアドレス（ＬＢＡ）を、シリンダ、ヘッド、セクタ等の物理ブロックアドレス（ＰＢＡ）に変換するためのテーブルであり、磁気ディスク３のシステム領域に格納されており、電源投入時に、磁気ディスク３からＲＡＭ２０に読み出される。
【００５１】
（Ｓ３４）ＭＰＵ１４は、コマンドの実行を完了し、ホストに報告し、図６のステップＳ１２に戻る。
【００５２】
次に、ライトデータ受信時の端数セクタの検出処理を、図８で説明する。
【００５３】
（Ｓ４０）ホストからライトデータが送信され、バッファメモリ１８に格納される。ＭＰＵ１４は、ライトデータの先頭部分のデータの論理ブロックアドレス（ＬＢＡ）を、前述のアドレス変換テーブルを用いて、物理ブロックアドレス（ＰＢＡ）に変換する。
【００５４】
（Ｓ４２）ＭＰＵ１４は、変換したＰＢＡを、１物理セクタ長（サイズ）で割り、余りが存在するかを判定する。ＬＢＡとＰＢＡは、セクタサイズが同じである。ここでは、図５のように、１物理セクタ長が、８論理ブロック長であるため、ＰＢＡを８で割り、余りがあるかを判定する。
【００５５】
（Ｓ４４）ＭＰＵ１４は、余りがあると判定すると、現在のＬＢＡから（８の倍数−１）のＬＢＡまでを、不揮発性メモリ１２に書き込むべき端数セクタ（先頭端数セクタ）であると検出する。そして、ステップＳ５４に進む。
【００５６】
（Ｓ４６）ＭＰＵ１４は、余りがないと判定すると、ライトデータの次のデータのＬＢＡを、ＰＢＡに変換し、変換したＰＢＡが、前のデータのＰＢＡと連続している（即ち、変換したＰＢＡ＝前のＰＢＡ＋１）か否かを判定する。
【００５７】
（Ｓ４８）ＭＰＵ１４は、連続していないと判定すると、このＬＢＡは、不良により交換で、ＰＢＡが連続していない（交代セクタである）ため、不揮発性メモリ１２に書き込むべき端数セクタ（中間の端数セクタ）であると検出する。そして、ステップＳ５４に進む。
【００５８】
（Ｓ５０）ＭＰＵ１４は、連続していると判定すると、１物理セクタ長分のＬＢＡを確認したかを判定する。ＭＰＵ１４は、１物理セクタ長分のＬＢＡを確認していないと判定すると、ステップＳ５４に進む。
【００５９】
（Ｓ５２）ＭＰＵ１４は、１物理セクタ長分のＬＢＡを確認したと判定すると、１物理セクタ長分のＬＢＡを変換されたＰＢＡが、連続しているため、このＬＢＡ間のデータ（中間のデータ）は、磁気ディスクへ保存すると判定する。そして、ステップＳ５４に進む。
【００６０】
（Ｓ５４）ＭＰＵ１４は、まだ、磁気ディスク３へ書き込むべきデータが、存在するかを判定する。ＭＰＵ１４は、磁気ディスクへ書き込むべきデータが、存在する場合には、ステップＳ４６に戻る。
【００６１】
（Ｓ５６）ＭＰＵ１４は、磁気ディスクへ書き込むべきデータの確認（中間のセクタの確認）が終了すると、まだ、未処理のデータがあるかを判定する。未処理のデータがないと、終了する。一方、未処理のデータがあると、現在のＬＢＡから残りの最終ＬＢＡまでを、不揮発性メモリ１２に書き込むべき端数セクタ（終端の端数セクタ）であると検出し、終了する。
【００６２】
（不揮発性メモリの書き込み処理）
次に、不揮発性メモリの消去回数の平準化のための使用方法を説明する。図９は、不揮発性メモリの書き込み処理の説明図であり、図３の不揮発性メモリ管理テーブル１２−４に示す状態での不揮発性メモリの物理イメージを説明するものである。
【００６３】
不揮発性メモリ１２は、図の１２−Ａで示すように、開始アドレスが、「0x00000000」、終端アドレスが、「0x41FFFFFF」である例を示す。例えば、不揮発性メモリ１２は、１０５６ＭＢｙｔｅであり、そのデータ領域が、１ＧＢｙｔｅ、管理情報が、１６ＭＢｙｔｅ、ＥＣＣが、１６ＭＢｙｔｅである。
【００６４】
図の四角が、１つの物理ブロックであり、四角内が、白色のブロックは、書込み可能状態、斜線のブロックは、有効データ有りの状態、網目のブロックは、無効データ有り、消去必要な状態、テ点線のブロックは、不良ブロックである。又、ブロック内の数字は、消去回数を示す。又、最後にライトしたポインタＰが示す物理ブロックアドレス（ＰＢＡ）を、「0x00004200」とする。
【００６５】
次に、ホストのライトコマンドが、ＬＢＡ指定＝0x00201045、ＬＢＡ数＝0x14である場合の書込み処理を説明する。先ず、先頭の端数セクタの書込みを説明する。
【００６６】
例えば、先頭のＬＢＡ「0x00201045」を、アドレス変換テーブルを用いて、ＰＢＡに変換した結果、ＰＢＡ＝0x00201045であったとする。このＰＢＡは、１物理セクタサイズ（８ＬＢＡ）で割り切れない為、端数セクタである。先頭の端数セクタを検出した場合である。この先頭の端数セクタの範囲は、（１物理セクタの倍数−１）のアドレスまで続く。つまり、ＬＢＡ＝「0x00201045」〜「0x00201047」の３ＬＢＡ分が、先頭の端数セクタである。
【００６７】
この先頭の端数セクタを、不揮発性メモリ１２に書込むため、重複するＬＢＡ(旧データ)を検索した結果、図の１２−Ａに示すように、ＬＢＡ＝0x00201046が重複していた事が判ったので、これを消去する。
【００６８】
次に、重複するＬＢＡは、他には無い事が確認出来たので、３ＬＢＡ分を、不揮発性メモリ１２に書込む。書込むＰＢＡは、最後にライトしたアドレス以降で、書込み可能のブロックに書込む。図の１２−Ａの例では、ＰＢＡ＝0x00004830には、有効データがある為、１つスキップして、図の１２−Ｂのように、３ＬＢＡのデータを書込む。即ち、不揮発性メモリ１２の書込み回数を平準化するため、リングバッファのように、データを書き込む。
【００６９】
次に、中間の端数セクタの書き込みを説明する。前述のＬＢＡ＝「0x00201048」〜「0x00201057」は、アドレス変換の結果、ＬＢＡ＝「0x20104C」を除き、全てＬＢＡとＰＢＡとは一致している。即ち、ＬＢＡ＝「0x20104C」のＰＢＡは、過去に不良により交替されていた。交替されたＰＢＡは、端数セクタとして扱う。
【００７０】
この場合、１物理セクタ長に一致する磁気ディスク媒体のＰＢＡ＝「0x00201048」〜「0x00201057」には、そのまま、データを書込み、ＬＢＡ＝「0x20104C」のデータは、図の１２−Ｃに示すように、不揮発性メモリ１２に書込む。
【００７１】
次に、終端の端数セクタの書込みを説明する。ＬＢＡ＝「0x00201058」は、アドレス変換の結果、ＰＢＡと同一である事が確認できたが、これ以上データが存在しない最終ＬＢＡである。７論理ブロック以下であるので、端数セクタとして扱い、図の１２−Ｄのように、不揮発性メモリ１２に書込む。
【００７２】
この後、ホストへデータの書込み完了を通知し、ライトコマンド実行完了となる。
【００７３】
図１０は、不揮発性メモリから磁気ディスクへのデータ移動処理の説明図である。
【００７４】
ある特定期間、コマンドキューが空である場合には、不揮発性メモリ１２に保存した端数セクタのデータを磁気ディスク３に書き込む。このため、図１０の１２−Ｅに示すように、不揮発性メモリ１２の最後にライトしたポインタＰの次のアドレスから、有効データ（斜線のブロック）を、リードし、且つ磁気ディスク３から対応する物理セクタを読み出し、リード・モディファイ・ライトする。
【００７５】
そして、磁気ディスク３へ書き込まれたブロックは、図の１２−Ｆのように、書込み可能（白色の）ブロックに変更される。又、最後にライトしたポインタＰは、この読み出しに伴い、磁気ディスクへ書き込み済みの最後のブロック位置に移動する。このため、書込み回数が平準化され、不揮発性メモリ１２の寿命を長くすることができる。
【００７６】
（他の実施の形態）
ディスク記憶装置を、磁気ディスク装置により、説明したが、光ディスク、光磁気ディスク等の他のディスク記憶装置に適用できる。又、不揮発性メモリを、フラッシュメモリで説明したが、他の書込み回数制限のある不揮発性メモリに適用できる。更に、１物理ブロックの論理ブロック数を８で説明したが、要するに、複数であれば、良い。
【００７７】
以下に、本発明を要約する。
【００７８】
（付記１）回転するディスク媒体に、データをリードし、ライトするディスク機構と、データを格納する不揮発性メモリと、ホストから送信された論理ブロック単位のライトデータを格納するバッファメモリと、前記バッファメモリの前記論理ブロック単位のライトデータを、前記論理ブロック単位の整数倍である物理セクタサイズで、前記ディスク媒体に書き込む制御ユニットとを有し、前記制御ユニットは、前記ライトデータに、前記物理セクタサイズ内の一部の前記論理ブロック単位のライトを行うライトデータが存在することを検出し、前記一部の論理ブロック単位のライトデータを、前記不揮発性メモリに格納し、前記物理セクタサイズに一致する複数の前記論理ブロック単位のライトデータを、前記ディスク媒体へ格納した後、前記ホストへ応答を報告し、前記ホストからのコマンドが所定時間到来しないことを検出して、リード・モディファイ・ライト処理により、前記不揮発性メモリに格納した前記論理ブロック単位のライトデータを、前記物理セクタサイズで、前記ディスク媒体に書き込むことを特徴とするディスク記憶装置。
【００７９】
（付記２）前記不揮発性メモリの各書込みブロックの状態を示す管理テーブルを有し、前記制御ユニットは、前記論理ブロック単位のライトデータを、前記不揮発性メモリに書込み後、前記管理テーブルの書き込んだブロックの状態を、有効データ有りに設定することを特徴とする付記１のディスク記憶装置。
【００８０】
（付記３）前記制御ユニットは、前記論理ブロック単位のライトデータを示す論理ブロックアドレスを、前記整数倍の整数で割り算して、前記一部の前記論理ブロック単位のライトデータが存在することを検出することを特徴とする付記１のディスク記憶装置。
【００８１】
（付記４）前記制御ユニットは、前記不揮発性メモリを、リングバッファのように、前記一部の前記論理ブロック単位のライトデータの書込みブロック位置を変更することを特徴とする付記１のディスク記憶装置。
【００８２】
（付記５）前記制御ユニットは、前記管理テーブルが前記有効データ有りを示す前記不揮発性メモリの前記書き込みブロックのデータを読み出し、前記リード・モディファイ・ライト処理により、前記一部の前記論理ブロック単位のライトデータを、前記物理セクタサイズで、前記ディスク媒体に書き込むことを特徴とする付記２のディスク記憶装置。
【００８３】
（付記６）前記制御ユニットは、前記一部の前記論理ブロック単位のライトデータの論理ブロックアドレスに対応する物理ブロックアドレスを求め、前記ディスク媒体の前記物理ブロックアドレスが属する物理セクタのデータを読み出し、前記物理セクタの対応する物理ブロックアドレスのデータを、前記論理ブロック単位のライトデータで書き換え、前記ディスク媒体の前記物理セクタに書き込むことを特徴とする付記１のディスク記憶装置。
【００８４】
（付記７）前記制御ユニットは、前記管理テーブルに書き込み可能状態に設定された書き込みブロックを検索し、前記検索した書き込みブロックに、前記論理ブロック単位にライトデータを書き込み、前記管理テーブルに、有効データ有りを設定することを特徴とする付記２のディスク記憶装置。
【００８５】
（付記８）前記制御ユニットは、前記ディスク媒体への書込み後、前記管理テーブルの対応する書き込みブロックの状態を、書き込み可能に設定することを特徴とする付記５のディスク記憶装置。
【００８６】
（付記９）前記不揮発性メモリに最後にライトしたブロック位置を示すポインタを有し、前記制御ユニットは、前記ポインタを移動して、前記管理テーブルに書き込み可能状態に設定された書き込みブロックを検索することを特徴とする付記７のディスク記憶装置。
【００８７】
（付記１０）前記制御ユニットは、前記ライトデータの論理ブロックアドレスを物理ブロックアドレスに変換し、前記物理ブロックアドレスを、前記整数倍の整数で割り算して、前記一部の前記論理ブロック単位のライトデータが存在することを検出するとともに、前記一部の論理ブロック単位のライトデータでないと検出された物理ブロックアドレスが、前記物理セクタサイズで連続していることを検出して、前記物理セクタサイズに一致する複数の前記論理ブロック単位のライトデータを抽出することを特徴とする付記１のディスク装置。
【００８８】
（付記１１）前記制御ユニットは、前記一部の論理ブロック単位のライトデータでないと検出された物理ブロックアドレスが、前記物理セクタサイズで連続していない物理ブロックアドレスを検出して、前記物理ブロックアドレスに対応する前記論理ブロックのライトデータを、前記不揮発性メモリに書き込むことを特徴とする付記１０のディスク記憶装置。
【００８９】
（付記１２）前記不揮発性メモリが、書き込み回数が制限された不揮発性メモリで構成されたことを特徴とする付記１のディスク記憶装置。
【産業上の利用可能性】
【００９０】
ディスク媒体の物理セクタサイズが、論理ブロックのサイズの整数倍である書き込み処理において、物理セクタサイズ内の一部の論理ブロック単位のライトを行うライトデータが存在することを検出し、一部の論理ブロック単位のライトデータを、不揮発性メモリに格納し、物理セクタサイズに一致する複数の論理ブロック単位のライトデータを、ディスク媒体へ格納した後、ホストへ応答を報告するため、スループットを向上するとともに、不揮発性メモリの寿命をより長くすることができる。
【符号の説明】
【００９１】
１  ディスク装置
３  磁気ディスク
４  スピンドルモータ
５  アクチュエータ
６  ホストコンピュータ
７  インターフェース
１２  不揮発性メモリ
１４  ＭＰＵ（処理ユニット）
１６  ＨＤＣ
１８  バッファメモリ
２０  揮発性メモリ（ＲＡＭ）
２２  ＲＯＭ
１２−４  不揮発性メモリ管理テーブル
５３  ヘッド（磁気ヘッド）
【図１】
2010211888.tif 000003
【図２】
2010211888.tif 000004
【図３】
2010211888.tif 000005
【図４】
2010211888.tif 000006
【図５】
2010211888.tif 000007
【図６】
2010211888.tif 000008
【図７】
2010211888.tif 000009
【図８】
2010211888.tif 000010
【図９】
2010211888.tif 000011
【図１０】
2010211888.tif 000012