(57)【要約】【課題】本発明の一実施例では、データの書き込み時にヘッドが書き込み開始予定位置のあるトラック上に移動したらデータを書き込み始める記憶装置を提供することを目的とする。【解決手段】上記課題を解決するため、記憶装置は、複数のトラックを有する記憶媒体と、該記憶媒体にデータを書き込むヘッドと、データを記憶可能な補助記憶部と、データの書き込み時に、データの書き込み開始予定位置を定め、該データの書き込み対象となるトラックに該ヘッドを移動させ、該ヘッドが該データの書き込み対象となる該トラックに到達したら該トラックに沿ってデータを書き始めると共に、書き込み予定データのうち、該書込み開始予定位置からデータの書き始めの位置の間に書き込みを予定したデータについては、該補助記憶部に記憶する制御部とを有する。【選択図】図２
2010118112.tif 000002
【特許請求の範囲】
【請求項１】
複数のトラックを有する記憶媒体と、
該記憶媒体にデータを書き込むヘッドと、
データを記憶可能な補助記憶部と、
データの書き込み時に、データの書込み開始予定位置を定め、該データの書き込み対象となるトラックに該ヘッドを移動させ、該ヘッドが該データの書き込み対象となる該トラックに到達したら該トラックに沿ってデータを書き始めると共に、書込み予定データのうち、該書込み開始予定位置からデータの書き始めの位置の間に書き込みを予定したデータについては、該補助記憶部に記憶する制御部と
を有することを特徴とする記憶装置。
【請求項２】
該制御部は、該補助記憶部に書き込んだ該データを該記憶媒体に移動することを特徴とする、請求項１に記載の記憶装置。
【請求項３】
該制御部は、該ヘッドがデータを書込むためのトラックに移動した場合の該記憶媒体上の書き始めの位置を予測し、該書き込み開始予定位置から予測した該書き始めの位置の間に書き込みを予定したデータを該補助記憶部に記憶することを特徴とする、請求項１に記載の記憶装置。
【請求項４】
複数のトラックを有する記憶媒体と、該記憶媒体にデータを書き込むヘッドと、データを記憶可能な補助記憶部とを有する記憶装置の制御方法であって、
データの書き込み時に、データの書込み開始予定位置を定め、
該データの書き込み対象となるトラックに該ヘッドを移動させ、
該ヘッドが該データの書き込み対象となる該トラックに到達したら該トラックに沿ってデータを書き始めると共に、書込み予定データのうち、該書込み開始予定位置からデータの書き始めの位置の間に書き込みを予定したデータについては、該補助記憶部に記憶することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータを記憶する記憶装置に関する。
【背景技術】
【０００２】
大容量のデータを記憶する記憶装置が多様な用途で利用されている。この種の記憶装置として典型的なものは磁気ディスク装置や光ディスク装置、光磁気ディスク装置などである。これらの記憶装置はデータを記憶する記憶媒体を有する。記憶媒体は複数のトラックを有する。
【０００３】
記憶装置はセントラルプロセッシングユニット（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＣＰＵ）などの上位装置からの書き込み指令によりデータの書き込みを行う。
【０００４】
記憶装置は書き込み命令に基づいてデータの情報を記憶媒体上のどの位置に書き込むかを計算する。記憶装置は計算した書込み開始予定位置があるトラックにヘッドが移動するようにヘッド駆動部を制御する。ヘッドがデータの書き込み対象となるトラックに移動したとき、記憶媒体上のヘッド位置と記憶媒体上のデータの書込み開始予定位置の先頭が異なる場合がある。記憶装置はデータの先頭から情報を記憶媒体に書き込むため、ヘッドが記憶媒体上のデータの書込み開始予定位置に達するまでデータを記憶媒体に書き込むことが出来なかった。
【０００５】
特許文献１にはハイブリッド記憶装置へのデータの書き込みに関する技術が開示されている。
【特許文献１】特開２００７−３４５３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の一実施例では、データの書き込み時にヘッドが書き込み開始予定位置のあるトラック上に移動したらデータを書き込み始める記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、記憶装置は、複数のトラックを有する記憶媒体と、該記憶媒体にデータを書き込むヘッドと、データを記憶可能な補助記憶部と、データの書き込み時に、データの書き込み開始予定位置を定め、該データの書き込み対象となるトラックに該ヘッドを移動させ、該ヘッドが該データの書き込み対象となる該トラックに到達したら該トラックに沿ってデータを書き始めると共に、書き込み予定データのうち、該書込み開始予定位置からデータの書き始めの位置の間に書き込みを予定したデータについては、該補助記憶部に記憶する制御部とを有する。
【発明の効果】
【０００８】
実施形態によれば、記憶装置においてヘッドのトラックの移動位置の関係に係らずデータの記憶を行うことが出来る。すなわちデータの書き込み時にヘッドが書込み開始予定位置のあるトラック上に移動したらデータを記憶装置に書き込み始めることが出来る。
【発明を実施するための最良の形態】
【０００９】
以下、本実施の形態について説明する。本実施の形態は記憶媒体としてハードディスクを用いて説明しているが、本発明はこのハードディスクを備えた実施形態に限定されるものではない。
【００１０】
[ハードディスク装置]
図１は本実施の形態に係る記憶装置１００の構成の一例を示すブロック図である。記憶装置１００はホストインターフェース（Ｉｎｔｅｒｆａｃｅ：ＩＦ）制御部１０２、データバッファ制御部１０３、データバッファ１０４、フォーマット制御部１０５、ヘッドインテグレイティッドサーキット（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＩＣ）１０７、制御部１０８、メモリ制御部１０９、不揮発メモリ１１０、ディスク１１５、ヴォイスコイルモータ（Ｖｏｉｃｅ  Ｃｏｉｌ  Ｍｏｔｏｒ：ＶＣＭ）１１２、位置検出部１１１、ヘッド１１４、コモンバス１１６を有する。
【００１１】
ホストＩＦ制御部１０２はパーソナルコンピュータ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ：ＰＣ）などの上位装置２０と記憶装置１００とのデータのやり取りを制御する。データバッファ制御部１０３はデータバッファ１０４へのデータの書き込みやデータバッファ１０４からのデータの読み出しを制御する。データバッファ１０４は上位装置２０から送信された書き込み命令や書き込みデータなどを一時的に記憶する。
【００１２】
フォーマット制御部１０５はデータバッファ１０４に一時記憶された書き込み命令に基づいてデータをディスク１１５に書き込む。
【００１３】
ヘッドＩＣ１０７はフォーマット制御部１０５から出力される書き込みデータをコード変調しヘッド１１４を用いてディスク１１５にデータを書き込む。
【００１４】
制御部１０８は記憶装置１００の動作を統括的に制御する。制御部１０８は例えばマイクロプロセッシングユニット（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＭＰＵ）により実現される。不揮発メモリ１１０は記憶装置１００の電源供給を切っても記憶したデータを保持する補助記憶部である。また、不揮発メモリ１１０の替わりにスタティックＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄａｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＳＲＡＭ）などの揮発メモリを用い、電源遮断時に小型のバッテリーでデータを保持するようにしても良い。また不揮発メモリ１１０はメモリデータ管理テーブル３００、空き領域管理テーブル４００、制御部１０８で実行するプログラムなどを記憶している。メモリデータ管理テーブル３００および空き領域管理テーブル４００についての詳細は後述する。
【００１５】
ディスク１１５はデータ内の情報を記憶する記憶媒体である。ディスク１１５は同心円状に複数のトラックを有する。各トラックは複数のセクタを有する。セクタ内にはデータ内の情報が記憶されている。ＶＣＭ１１２は制御部１０８による制御命令に従ってヘッド１１４を所定の位置に移動させるヘッド駆動部として機能する。ヘッド１１４はディスク１１５上のセクタにデータを書き込む。
【００１６】
ディスク１１５上のセクタ内には、データ内の情報および各セクタに固有の位置情報が記憶されている。ヘッド１１４はディスク１１５からデータ内の情報および位置情報を読み取る。位置検出部１１１はヘッド１１４が読み取ったデータ内の情報および位置情報からディスク１１５に対するヘッド１１４の現在の位置に対応する位置情報を検出し出力する。コモンバス１１６はホストＩＦ制御部１０２、データバッファ制御部１０３、フォーマット制御部１０５、制御部１０８、メモリ制御部１０９、ＶＣＭ１１２を接続するバスである。各部はコモンバス１１６を介してデータをやり取りできる。
【００１７】
上位装置２０はデータの書き込み開始アドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ：ＬＢＡ）を記述した書き込み命令、および書き込み命令に対応する書き込みデータを記憶装置１００に送信する。上位装置２０から受信した書き込み命令および書き込みデータはデータバッファ制御部１０３によりデータバッファ１０４に保持される。制御部１０８は位置検出部１１１により現在のヘッド１１４の位置を検出する。制御部１０８はデータ内の情報に対してディスク１１５上の書込み開始予定位置を定める。すなわち制御部１０８は書き込み命令に記述されたＬＢＡから記憶装置１００におけるデータの書き込み開始予定セクタ番号、トラック番号、ヘッド番号等を計算する。制御部１０８は現在のヘッド１１４の位置情報と計算した書き込み開始予定セクタ番号に基づいてヘッドの移動距離が最小になるように書き込み命令を並べ替える。この並べ替えにより制御部１０８はデータの書き込み時における時間的損失を小さくすることができる。このような書き込み命令の並べ替えをリオーダリングといい、並べ替えられた書き込み命令の実行順序をシークスケジュールという。
【００１８】
制御部１０８はシークスケジュールに従って書き込み命令を実行する。制御部１０８はデータの書き込み対象となるトラックにヘッド１１４が移動するようにヘッド駆動部であるＶＣＭ１１２を制御する。ヘッド１１４がデータを書き込むためのトラックに移動した場合のディスク１１５上のヘッド位置とデータの書き込み開始予定位置である書き込み開始予定セクタが一致する場合、制御部１０８はデータを書き込み開始予定セクタから書き込む。
【００１９】
ヘッド１１４がデータを書き込むためのトラックに移動した場合のディスク１１５上のヘッド位置がデータ内の途中の情報に対応するセクタである場合、制御部１０８は書き込み開始予定セクタからデータを書き込むことが出来ない。この場合制御部１０８はヘッド１１４がデータの書き込み対象となるトラックに到達したらトラックに沿ってデータを書き始める。また制御部１０８は書込み予定データのうち、書込み開始予定位置からデータの書き始めの位置の間に書き込みを予定したデータについては、補助記憶部である不揮発メモリ１１０に記憶する。以上の実施形態によれば、データバッファ１０４においてディスク１１５に書き込まれなかったデータが残存しない。これにより制御部１０８は記憶装置の書き込み効率を向上させることが出来る。また、書き込み開始予定セクタに対するヘッドの移動位置が異なる場合の書き込み待ち時間がない。よって制御部１０８はヘッド１１４が書き込み開始予定位置を有するトラック上に移動したらデータを記憶装置１００に書き込み始めることが出来る。
【００２０】
ヘッド１１４がデータを書き込むためのトラックに移動した場合のディスク１１５上のヘッド位置がデータ内の途中の情報に対応するセクタでない場合、制御部１０８はディスク１１５へデータを書き込むことが出来ない。この場合制御部１０８はヘッド１１４が書き込み開始予定セクタに到達するまで待つ。ヘッド１１４が書き込み開始予定セクタに到達すると、制御部１０８はディスク１１５へのデータの書き込みを開始する。
【００２１】
［ヘッドの移動］
図２はトラック間のヘッドの移動とデータの書き込みとの関係を図示したものである。トラックＹはセクタ１から７を有する。トラックＸはセクタ８から１４を有する。ディスク１１５は矢印２０２の方向に回転している。制御部１０８はシークスケジュールに従ってヘッド１１４をトラックＹからトラックＸへ移動し、トラックＸのセクタ１２から１４へデータを書き込む。ヘッド１１４の移動速度やトラック間の距離から計算される論理値によると、ヘッド１１４は矢印２００の通り時間内にトラックＸのセクタ１１に到達する。
【００２２】
しかし実動作において、ヘッド１１４は矢印２０１の通りトラックＸのセクタ１２に到達したとする。この場合、データをセクタ１２から書き込むことが出来ないため、制御部１０８はセクタ１３からディスク１１５にデータを書き込む。また制御部１０８はディスク１１５に書き込めなかったセクタ１２に対応する書き込み不可データをデータバッファ１０４から不揮発メモリ１１０へ移動する。以上の動作により、制御部１０８はデータバッファに書き込み不可データが残存しないようにし、記憶装置へデータを書き続けることが出来る。また、制御部１０８はヘッド１１４が書き込み開始予定位置を有するトラック上に移動したらデータを記憶装置１００に書き込み始めることが出来る。
【００２３】
［メモリデータ管理テーブル］
図３は不揮発メモリ１１０に書き込まれた書き込み不可データを管理するためのメモリデータ管理テーブル３００を図示したものである。メモリデータ管理テーブル３００は図１の不揮発メモリ１１０に記憶されている。メモリデータ管理テーブル３００は列３０１、３０２、３０３を有する。列３０１は書き込み不可データをディスク１１５にデータを書き込んだ場合の開始ＬＢＡを示す。列３０２は書き込み不可データをディスク１１５に書き込んだ場合の全セクタ数を示す。列３０３は書き込み不可データを記憶した不揮発メモリ１１０におけるメモリアドレスを示す。
【００２４】
メモリデータ管理テーブル３００を参照することにより、制御部１０８はデータを読み込む際にディスク１１５に書き込まれたデータと不揮発メモリ１１０に書き込まれたデータとを関連付けることが出来る。例えば制御部１０８は行３０４を参照することにより、ディスク１１５の開始ＬＢＡ１０００ｈからセクタ数１００ｈのセクタまでに書き込まれるはずであったデータは、不揮発メモリ１１０のメモリアドレス１０００００ｈから始まる領域に書き込まれていることが分かる。
【００２５】
制御部１０８はメモリデータ管理テーブル３００を参照することにより、書き込み命令の空き時間を利用して、不揮発メモリ１１０に移動したデータをディスク１１５に移動することも出来る。上述の通り制御部１０８は行３０４を参照することによりメモリアドレス１０００００ｈのデータはディスク１１５のＬＢＡ１０００ｈに書き込むべきデータであることが分かる。よって制御部１０８は上位装置２０からの書き込み命令がデータバッファ１０４に無い場合にメモリアドレス１０００００ｈのデータをディスク１１５のＬＢＡ１０００ｈに移動することが出来る。制御部１０８は他の行のデータについても同様にデータを移動することが出来る。上位装置２０から書き込み命令がない場合に不揮発メモリ１１０のデータをディスク１１５へ移動することにより、制御部１０８は不揮発メモリ１１０の書き込み可能領域が無くなるのを防止することが出来る。不揮発メモリ１１０の書き込み不可領域が無くなるのを防止することにより、制御部１０８はデータバッファ１０４の書き込み不可データが不揮発メモリ１１０に移動できなくなるのを防止することが出来る。これにより記憶装置１００の書き込み効率を向上させることが出来る。
【００２６】
［空き領域管理テーブル］
図４は不揮発メモリ１１０のデータ記憶領域をブロック単位で管理した場合のブロックごとの空き状況を管理するための空き領域管理テーブル４００を図示したものである。空き領域管理テーブル４００は図１の不揮発メモリ１１０に記憶されている。空き領域管理テーブル４００は列４０１、４０２、４０３を有する。列４０１は不揮発メモリ１１０のデータ記憶領域をブロック単位で管理した場合に各ブロックに割り当てたブロック番号である。列４０２は各ブロック番号に割り当てられた不揮発メモリ１１０のアドレス空間である。本実施形態において、１つのブロックは０ＦＦＦｈバイトのアドレス空間を有する。列４０３は各ブロック番号の空き状況を示すフラグである。列４０３においてフラグが“１”のときはそのブロックは使用中であることを示し、フラグが“０”のときはそのブロックは空いていることを示す。また行４０４から４１０は各ブロック番号に対するアドレス空間と、そのブロックの空き情報を表す。
【００２７】
例えば３７００ｈバイトの書き込み不可データを不揮発メモリ１１０に移動する必要が生じたとする。この場合、制御部１０８は列４０３を参照し、フラグが４つ連続して“０”になっている行が無いか探す。本実施形態において、行４０７から４１０におけるフラグが“０”である。よって制御部１０８はブロック番号３から６に連続した４０００ｈバイトの空き領域があると認識することが出来る。以上の通り空き領域管理テーブル４００を用いることにより制御部１０８は不揮発メモリ１１０のメモリ空き領域の検索を少ない処理で行うことが出来る。
【００２８】
［制御部の書き込み制御フロー］
図５は上位装置２０から記憶装置１００へのデータの書き込み時における制御部１０８の書き込み制御フロー図である。
【００２９】
制御部１０８はデータバッファ１０４に一時記憶されリオーダリングされた書き込み命令をデータバッファ１０４に記憶されている順番に選択し実行する（Ｓ１０）。制御部１０８は書き込み命令に記述されているＬＢＡに基づいて、データの書込み開始予定位置である書き込み開始予定セクタ番号、書き込み開始予定セクタのあるシリンダ番号、およびトラック番号を計算する（Ｓ１１）。
【００３０】
制御部１０８はヘッドシークを開始し、計算したシリンダ番号およびトラック番号に該当するトラックまでヘッドを移動するようにヘッド駆動部であるＶＣＭ１１２を制御する（Ｓ１２）。制御部１０８は位置検出部１１１から出力されたトラック番号が計算したトラック番号に等しくなるまでヘッドを移動し続ける（Ｓ１３、ＮＯ）、位置検出部１１１から出力されるトラック番号と計算したトラック番号とが等しくなり、シークが終了すると（Ｓ１３、ＹＥＳ）、制御部１０８は位置検出部１１１により現在ヘッド１１４があるセクタ番号を取得する（Ｓ１４）。
【００３１】
制御部１０８は位置検出部１１１から出力されたセクタ番号とＬＢＡに基づいて計算した書き込み開始予定セクタ番号とを比較する。ディスク１１５のセクタ番号は小さい順または大きい順に設定されている。よって位置検出部１１１から出力されたセクタ番号と計算したセクタ番号との大小関係を比較することにより、ヘッドが書き込み開始予定セクタを通り過ぎたか否かを判別することが出来る。
【００３２】
計算した結果ヘッド１１４が書き込み開始予定セクタと一致している場合（Ｓ１５、ＹＥＳ）、制御部１０８は書き込み命令に対応するデータの先頭からディスク１１５に書き込む（Ｓ１６）。
【００３３】
ディスク１１５の回転方向に対しヘッド１１４が書き込み開始予定セクタとずれている場合（Ｓ１５、ＮＯ）、制御部１０８は位置検出部１１１から出力されたセクタ番号に基づいて書き込み開始予定セクタとヘッド１１４とのずれに対応するセクタ数を計算する（Ｓ１７）。制御部１０８は、ずれたセクタ数に基づいて、現在のヘッド位置に対応するデータ内の情報を計算する。制御部１０８は計算したデータ内の情報からディスク１１５に書き込み始める（Ｓ１８）。ヘッド１１４の位置がディスク１１５の回転方向に対してデータの先頭位置である書き込み開始予定セクタより前にある場合であっても、現在のヘッド位置に対応するデータ内の情報がある場合は、現在のヘッド位置に対応するデータ内の情報からディスク１１５へ書き込む。ヘッド位置に対応するデータ内の情報がない場合、制御部１０８はヘッド１１４が書き込み開始予定セクタに到達するのを待つ。
【００３４】
書き込み開始予定セクタからずれたセクタ数に対応するデータ内の情報はディスク１１５に書き込まれずにデータバッファ１０４に残る。制御部１０８はディスク１１５に書き込まれずにデータバッファ１０４に残ったデータ内の情報を不揮発メモリ１１０のデータ記憶可能な領域に移動する（Ｓ１９）。
【００３５】
以上の動作により、制御部１０８はディスク１１５に書き込まれないデータ内の情報がデータバッファ１０４に残存しないようにし、記憶装置の書き込み効率を向上させることが出来る。また、書き込み開始予定セクタへのヘッドの移動が間に合わない場合の書き込み待ち時間がないため、ヘッドがデータの書き込み対象となるトラックに移動したとき、記憶媒体上のヘッド位置と計算したデータの先頭位置とが異なる場合でもデータを記憶装置に書き込むことが出来る。
【００３６】
［制御部のデータ書き込み動作］
図６は制御部１０８によるデータの書き込み動作を図示したものである。データバッファ１０４にはデータ６１０が一時記憶されている。データ６１０のアドレスＡに対応するセクタはディスク１１５のトラック６００におけるセクタＫであり、アドレスＣに対応するセクタはセクタＭである。制御部１０８は書き込み命令に記述されたＬＢＡに基づいて、データ６１０のアドレスＡに対応するディスク１１５の書込み開始予定セクタＫを計算する。
【００３７】
データバッファ１０４に記憶されたデータ６１０をディスク１１５に書き込むため、制御部１０８はヘッド駆動部であるＶＣＭ１１２を制御し、ヘッド１１４をデータ６１０の書き込み対象となるセクタＫのあるトラック６００へ移動する。ヘッド１１４がトラック６００に移動したときのデータの書き始めの位置がセクタＬであったとする。このときセクタＬに対応するデータ６１０の情報はアドレスＢにある。制御部１０８はデータバッファ１０４に記憶されたデータ６１０のアドレスＢからＣまでの情報６０２をデータの書き始めの位置であるセクタＬからディスク１１５に書き込む。
【００３８】
書き込み予定データであるデータ６１０のうち、書込み開始予定セクタＫからデータの書き始めの位置であるセクタＬまでに書き込まれる予定であった情報６０１は、ディスク１１５に書き込まれずにデータバッファ１０４に残っている。制御部１０８はデータバッファ１０４に残っている情報６０１を補助記憶部である不揮発メモリ１１０へ書き込む。以上より、ヘッドがトラック上に移動したらデータを記憶装置に書き込み始めることが出来る。
【００３９】
［不揮発メモリへのデータ移動制御フロー］
図７は図５のステップＳ１９における不揮発メモリ１１０へのデータ移動処理をより詳細に示した制御フローである。制御部１０８は空き領域管理テーブル４００を参照し、ステップＳ１８で計算したセクタ数を記録できる空き領域が不揮発メモリ１１０にあるか検索する（Ｓ３０）。不揮発メモリ１１０に空き領域がある場合（Ｓ３１、ＹＥＳ）、制御部１０８は検索した空き領域に対しデータバッファ１０４にある書き込み不可データを不揮発メモリ１１０へ移動する（Ｓ３２）。制御部１０８はメモリデータ管理テーブル３００に不揮発メモリ１１０へ移動したデータの開始ＬＢＡ、セクタ数、およびメモリアドレスを書き込むと共に、空き領域管理テーブル４００におけるデータを書き込んだブロックのフラグを“１”に書き換える。
【００４０】
不揮発メモリ１１０に空き領域が無い場合（Ｓ３１、ＮＯ）、制御部１０８はディスク１１５が回転し、書き込み開始予定セクタが再びヘッド１１４の位置に到達するのを待つ。その後、制御部１０８はディスク１１５の書き込み開始予定セクタからデータを書き込む。これにより不揮発メモリ１１０に空き領域が無くても制御部１０８はデータの書き込み処理を続けることが出来る。
【００４１】
［制御部の書き込み制御フローの変形例］
図８は制御部１０８のデータ書き込み制御フローの変形例である。ディスク１１５への書き込み速度に対し不揮発メモリ１１０への書き込み速度は非常に遅い。ある書き込み命令に対する書き込みデータに対し、不揮発メモリ１１０への書き込み不可データのデータ移動量が多い場合、不揮発メモリ１１０へのデータ移動により記憶装置全体の書き込み速度が遅くなる可能性がある。このような場合、以下の書き込み制御フローが有効となる。
【００４２】
制御部１０８はデータバッファ１０４に一時記憶されリオーダリングされた書き込み命令をデータバッファ１０４に記憶されている順番に選択し実行する（Ｓ５０）。制御部１０８は書き込み命令に記述されているＬＢＡに基づいて、データの書込み開始予定位置である書き込み開始予定セクタ番号、書き込み開始予定セクタのあるシリンダ番号、およびトラック番号を計算する（Ｓ５１）。制御部１０８はヘッドシークを開始し、計算したシリンダ番号およびトラック番号に該当するトラックまでヘッドを移動させる（Ｓ５２）。
【００４３】
制御部１０８はヘッド１１４がデータを書き込むためのトラックに移動した場合のデータの書き始めの位置を予測する（Ｓ５３）。制御部１０８はデータの書き込み開始予定位置から予測した書き始めの位置の間に書き込みを予定したデータを不揮発メモリ１１０に書き込む（Ｓ５４）。データの書き始めの位置の予測方法については後述する。制御部１０８は位置検出部１１１から送られてくるトラック番号が計算したトラック番号に等しくなるまでヘッドを移動し続ける（Ｓ５５、ＮＯ）、位置検出部１１１から送られてくるトラック番号と計算したトラック番号とが等しくなり、シークが終了すると（Ｓ５５、ＹＥＳ）制御部１０８は位置検出部１１１により現在ヘッド１１４があるセクタ番号を取得する（Ｓ５６）。制御部１０８は位置検出部１１１により取得したセクタ番号と計算した書き込み開始予定セクタ番号とを比較する。取得したセクタ番号が書き込み開始予定セクタ番号と一致する場合（Ｓ５７、ＹＥＳ）、制御部１０８は不揮発メモリ１１０に書き込んだデータを消去する（Ｓ５８）。同時に制御部１０８は選択した書き込み命令に対応するデータをディスク１１５へ書き込む（Ｓ５９）。
【００４４】
取得したセクタ番号が書き込み開始予定セクタ番号と一致しない場合（Ｓ５７、ＮＯ）、制御部１０８はヘッド１１４が到達しているセクタに対応した書き込みデータの情報からディスク１１５へ書き込む（Ｓ６０）。同時に制御部１０８はメモリデータ管理テーブル３００に不揮発メモリ１１０へ書き込んだ情報の開始ＬＢＡ、セクタ数、およびメモリアドレスを書き込むと共に、空き領域管理テーブル４００における情報を書き込んだブロックのフラグを“１”に書き換える（Ｓ６１）。以上、ヘッド１１４の到達位置と書き込み開始予定位置がずれると予測されるデータの情報をあらかじめ不揮発メモリ１１０に書き込んでおくことにより、ある書き込み命令に対する書き込みデータに対し、不揮発メモリ１１０へのデータの情報の移動量が多い場合であっても、不揮発メモリ１１０への情報の書き込みによる記憶装置全体の書き込み速度の遅延を防止することが出来る。
【００４５】
［書き込み開始予定位置からずれるセクタ数の予測］
図９はシーク距離とそれに対応するヘッド１１４のシーク時間との関係を表すグラフ５００である。シーク距離とは現在ヘッド１１４があるトラックから移動先のトラックまでの間のトラック数である。またシーク時間とはシーク距離をヘッドが移動するのに要する時間である。グラフ５００において、曲線５０１はヘッドの移動速度やトラック間の距離から計算される理論値である。点５０３は実際に記憶装置を動作させて測定した場合の実測値である。点５０３の通り実際のシーク時間は理論値に対してばらつきを有するため、理論値に基づいてシークスケジュールを立てると、データの書込み開始予定セクタとヘッド１１４の到達位置がずれる場合がある。
【００４６】
曲線５０２はシーク時間のばらつきを考慮してシーク距離とシーク時間との関係をグラフ化したものである。あるシーク距離における曲線５０１と５０２とのシーク時間の差分値とディスク１１５の回転速度から、ヘッド１１４の到達位置と書き込み開始予定セクタとのずれに対応するセクタ数を予測することが出来る。このセクタ数を不揮発メモリ１１０の空き領域等に記憶しておき、図８の制御フローにおいて読み出すことにより、制御部１０８はヘッド１１４のシークがずれる予測されるセクタ数分のデータを不揮発メモリ１１０に書き込むことが出来る。
【００４７】
［データの読み出し制御フロー］
図１０は記憶装置１００からデータを読み出す場合の制御部１０８の読み出し制御フロー図である。かかる制御フローにより、制御部１０８はディスク１１５および不揮発メモリ１１０に分散したデータを読み出すことが出来る。
【００４８】
制御部１０８はメモリデータ管理テーブル３００を参照し、データ読み出し命令に対応するデータが不揮発メモリ１１０に記憶されていないか検索する（Ｓ４０）。データが不揮発メモリ１１０に記憶されていない場合（Ｓ４１、ＮＯ）、制御部１０８は読み出し命令に記述されたＬＢＡに基づいて、データの記憶位置であるディスク番号、トラック番号、および先頭セクタ番号を計算する（Ｓ４２）。データタが不揮発メモリ１１０に記憶されている場合（Ｓ４１、ＹＥＳ）、制御部１０８はそのデータを不揮発メモリ１１０から読み出す（Ｓ４４）。同時に制御部１０８は読み出し命令に記述されたＬＢＡに基づいて、データの記憶位置であるディスク番号、トラック番号、および先頭セクタ番号を計算し、不揮発メモリ１１０に記憶されたデータのセクタ数を加算することにより、残りのデータが記憶されたディスク１１５の位置を計算する（Ｓ４２）。制御部１０８は計算したセクタ番号等にしたがってディスク１１５からデータを読み出す（Ｓ４３）。すべてのデータ読み出し命令を実行していない場合（Ｓ４５、ＮＯ）、制御部１０８は再びステップＳ４０からの処理を繰り返す。すべてのデータ読み出し命令を実行している場合（Ｓ４５、ＹＥＳ）、制御部１０８は読み出し処理を終了する。
【図面の簡単な説明】
【００４９】
【図１】ハードディスク装置のブロック図
【図２】トラック間のヘッドの移動とデータ書き込みとの関係図
【図３】メモリデータ管理テーブル
【図４】メモリの空き領域管理テーブル
【図５】データの書き込み制御フロー図
【図６】制御部のデータ書き込み動作説明図
【図７】不揮発メモリへのデータ書き込み制御フロー図
【図８】データの書き込み制御フロー図
【図９】シーク距離とシーク時間との関係図
【図１０】データの読み出し制御フロー図
【符号の説明】
【００５０】
２０  上位装置
１００  記憶装置
１０２  ホストＩＦ制御部
１０３  データバッファ制御部
１０４  データバッファ
１０５  フォーマット制御部
１０７  ヘッドＩＣ
１０８  制御部
１０９  メモリ制御部
１１０  不揮発メモリ
１１１  位置検出部
１１２  ＶＣＭ
１１４  ヘッド
１１５  ディスク
１１６  コモンバス
３００  メモリデータ管理テーブル
４００  空き領域管理テーブル
５００  グラフ
６００  トラック
６１０  データ
【図１】
2010118112.tif 000003
【図２】
2010118112.tif 000004
【図３】
2010118112.tif 000005
【図４】
2010118112.tif 000006
【図５】
2010118112.tif 000007
【図６】
2010118112.tif 000008
【図７】
2010118112.tif 000009
【図８】
2010118112.tif 000010
【図９】
2010118112.tif 000011
【図１０】
2010118112.tif 000012