(57)【要約】【課題】本発明は短時間にライトフラッシュ処理が可能な磁気ディスク装置の提供。【解決手段】磁気ディスク（９）と、フラッシュメモリ（３０）と、ホストシステムから供給されたライトコマンドとデータを記憶するバッファメモリ（４）と、バッファメモリ（４）に記憶されたライトコマンドを磁気ディスク（９）への書込み処理時間に基づいて第１コマンド群と第２コマンド群とに分類し、第１コマンド群のライトコマンドに係るデータを磁気ディスク（９）に書込み、第２コマンド群のライトコマンドとデータをフラッシュメモリ（３０）に書込むフラッシュ手段とを具備する。【選択図】      図１
2008165881.tif 000002
【特許請求の範囲】
【請求項１】
データを記録する磁気ディスクと、
データを記憶する不揮発性メモリと、
ホストシステムから供給されたライトコマンドとデータを記憶する揮発性メモリと、
前記揮発性メモリに記憶されたライトコマンドを前記磁気ディスクへの書込み処理時間に基づいて第１コマンド群と第２コマンド群とに分類し、第１コマンド群のライトコマンドに係るデータを前記磁気ディスクに書込み、第２コマンド群のライトコマンドとデータを前記不揮発性メモリに書込むフラッシュ手段と、
を具備する磁気ディスク装置。
【請求項２】
前記フラッシュ手段は前記揮発性メモリに記憶されたライトコマンドを磁気ディスクに最も効率よく書込むことができる順番に並べ替え、１番から所定の順番までのコマンドを第１コマンド群とし、他を第２コマンド群として分類する請求項１記載の磁気ディスク装置。
【請求項３】
前記フラッシュ手段は前記揮発性メモリに各コマンド毎の磁気ディスクへの書込み時間と１番から順番にコマンドを実行した場合の書込み時間の累計時間と、各コマンド毎の不揮発性メモリへの書込み時間と最後から逆順にコマンドを実行した場合の書込み時間の累計時間とを書込み、磁気ディスクへの書込み時間の累計時間が不揮発性メモリへの書込み時間の累計時間より大きいコマンドは第２コマンド群とする請求項２に記載の磁気ディスク装置。
【請求項４】
前記フラッシュ手段により前記不揮発性メモリに記憶された第２コマンド群のライトコマンドを読み出し、読み出したライトコマンドに係るデータを前記磁気ディスクに書込む第２フラッシュ手段をさらに具備する請求項１記載の磁気ディスク装置。
【請求項５】
データを記録する磁気ディスクと、
データを記憶する不揮発性メモリと、
ホストシステムから供給されたライトコマンドとデータを記憶する揮発性メモリとを具備する磁気ディスクの制御方法において、
前記揮発性メモリに記憶されたライトコマンドを前記磁気ディスクへの書込み処理時間に基づいて第１コマンド群と第２コマンド群とに分類するステップと、
第１コマンド群のライトコマンドに係るデータを前記磁気ディスクに書込み、第２コマンド群のライトコマンドとデータを前記不揮発性メモリに書込むステップと、
を具備する制御方法。
【請求項６】
前記分類ステップは前記揮発性メモリに記憶されたライトコマンドを磁気ディスクに最も効率よく書込むことができる順番に並べ替え、１番から所定の順番までのコマンドを第１コマンド群とし、他を第２コマンド群として分類する請求項５記載の制御方法。
【請求項７】
前記分類ステップは前記揮発性メモリに各コマンド毎の磁気ディスクへの書込み時間と１番から順番にコマンドを実行した場合の書込み時間の累計時間と、各コマンド毎の不揮発性メモリへの書込み時間と最後から逆順にコマンドを実行した場合の書込み時間の累計時間とを書込むステップと、
磁気ディスクへの書込み時間の累計時間が不揮発性メモリへの書込み時間の累計時間より大きいコマンドは第２コマンド群とするステップとを具備する請求項６に記載の制御方法。
【請求項８】
前記書込みステップにより前記不揮発性メモリに記憶された第２コマンド群のライトコマンドを読み出し、読み出したライトコマンドに係るデータを前記磁気ディスクに書込むステップをさらに具備する請求項５記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はライトコマンドをキャッシュするキャッシュメモリを具備する磁気ディスク装置およびその制御方法に関する。
【背景技術】
【０００２】
近年、アクセス速度の高速化のために、キャッシュメモリを備えた磁気ディスク装置が種々開発されている。キャッシュメモリは、ホストコンピュータと磁気ディスク装置間で入出力されるデータを一時的に保持するための高速バッファ記憶であり、磁気ディスク上のデータの写しの一部が格納される。このキャッシュメモリとしては、通常、ＳＲＡＭやＤＲＡＭ等の高速半導体メモリが使用される。
【０００３】
キャッシュメモリを備えた磁気ディスク装置においては、ホストコンピュータからディスク装置へのライトアクセス要求が発行されると、キャッシュメモリにライトコマンドとデータが一旦書き込まれる（ライトキャッシュ）。キャッシュメモリには多数のコマンドが登録（キューイング）可能であるが、登録数は有限であるので、キャッシュメモリのライトコマンドを磁気ディスクに書き戻す（ライトフラッシュ）必要がある。一般的には、ホストコンピュータからライトフラッシュ要求が発行されると、データがディスクに書き戻される。あるいは、ライトフラッシュ要求が発行されなくても、磁気ディスク装置側で処理の込み具合を判断して、処理が空いている時間にキャッシュメモリの内容をディスクに書き戻してもよい。
【０００４】
このように、キャッシュメモリを使用した場合には、磁気ディスク装置をアクセスするために必要な機械的な駆動動作の実行回数が少なくなり、磁気ディスク装置のアクセス速度を見掛け上大幅に高速にすることができる。しかしながら、ライトフラッシュのためには機械的な駆動動作が必要であり、磁気ディスク装置のアクセス速度の大幅な短縮は不可能であった。１つのライトコマンドのライトフラッシュには数１０ミリ秒単位の時間が係る。
【特許文献１】特開平６−３０９２３４号公報（段落０００２乃至段落０００５）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このように従来の磁気ディスク装置には、ライトフラッシュ処理に時間が係るという欠点がある。
【０００６】
本発明の目的は短時間にライトフラッシュ処理が可能な磁気ディスク装置およびその制御方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、磁気ディスク装置はデータを記録する磁気ディスクと、データを記憶する不揮発性メモリと、ホストシステムから供給されたライトコマンドとデータを記憶する揮発性メモリと、前記揮発性メモリに記憶されたライトコマンドを前記磁気ディスクへの書込み処理時間に基づいて第１コマンド群と第２コマンド群とに分類し、第１コマンド群のライトコマンドに係るデータを前記磁気ディスクに書込み、第２コマンド群のライトコマンドとデータを前記不揮発性メモリに書込むフラッシュ手段とを具備する。
【０００８】
本発明の他の態様によれば、データを記録する磁気ディスクと、データを記憶する不揮発性メモリと、ホストシステムから供給されたライトコマンドとデータを記憶する揮発性メモリとを具備する磁気ディスクの制御方法は、前記揮発性メモリに記憶されたライトコマンドを前記磁気ディスクへの書込み処理時間に基づいて第１コマンド群と第２コマンド群とに分類するステップと、第１コマンド群のライトコマンドに係るデータを前記磁気ディスクに書込み、第２コマンド群のライトコマンドとデータを前記不揮発性メモリに書込むステップとを具備する。
【発明の効果】
【０００９】
以上説明したように本発明によれば、揮発性メモリにキャッシュされたライトコマンドを磁気ディスクと不揮発性メモリの両方を用いてフラッシュ処理することにより、短時間にライトフラッシュ処理が可能となる。さらに、短時間にライトフラッシュ処理が行われるので、ライトフラッシュ処理中に衝撃等によりデータが破壊される可能性が低い。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して本発明による磁気ディスク装置およびその制御方法の実施の形態を説明する。
【００１１】
第１の実施の形態
図１は本発明の第１の実施の形態に係るハードディスク装置の構成を示すブロック図である。図１において、ハードディスク装置は汎用バス、例えばＡＴＡ（ＩＤＥ）バス１８を介してホストシステム１７に接続される。ハードディスク装置はホストシステム１７としてのパーソナルコンピュータの筐体内に配置される内蔵型でもよいし、筐体外に配置される外付け型のいずれでもよい。
【００１２】
ＣＰＵ１は装置全体の制御およびモータドライバ６の制御を時分割で行う。磁気ディスク９の例えば上側の表面はデータが磁気記録される記録面をなしている。磁気ディスク９の記録面に対応して磁気ヘッド１３が配置されている。磁気ヘッド１３は、磁気ディスク９へのデータ書き込み（データ記録）及びディスクからのデータ読み出し（データ再生）に用いられる。なお、図示は省略するが、磁気ディスク９の下側の表面も記録面をなし、その記録面に対応してヘッド１３と同様のヘッドが配置されているものとする。図１の構成では、単一のディスク９を備えたハードディスク装置を想定している。しかし、ディスク９が複数枚積層配置されたハードディスク装置であっても構わない。
【００１３】
モータドライバ６はＣＰＵ１からの制御により磁気ディスク９を定常回転させるためのスピンドルモータ（ＳＰＭ）８、および磁気ヘッド１３を目的のトラック位置に移動させるためのボイスコイルモータ（ＶＣＭ）７を駆動するための電流をスピンドルモータ８およびボイスコイルモータ７に流す。
【００１４】
ＣＰＵ１は、図示しないが、フラッシュメモリ、ＲＡＭを含む。フラッシュメモリは、ＣＰＵ１により実行される制御プログラムが予め格納された書き換え可能な不揮発性メモリである。ＲＡＭの記憶領域の一部は、ＣＰＵ１のワーク領域として用いられる。
【００１５】
ＣＰＵ１に接続されるＣＰＵバス１２にはＣＰＵ１が実行すべきプログラムが記録されているＲＯＭ１１、変数等の格納に使用するためのＲＡＭ１０、ディスクコントローラ（ＨＤＣ）３、制御に必要な諸信号の生成を行うゲートアレイ２、およびフラッシュメモリ３０が接続されている。
【００１６】
フラッシュメモリ３０は例えば電気的に書き換えが可能なＮＡＮＤ型ＥＥＰＯＲＭである。フラッシュメモリ３０は電源の供給がなくても記憶データを維持できる。このため、フラッシュメモリ３０はＣＰＵ１のＲＡＭ、あるいはＲＡＭ１０と違いデータを長時間記憶させておくのに適している。本実施形態では、フラッシュメモリ３０はディスク９とは別のデータを記憶するのに用いられる。また、フラッシュメモリ３０はアクセス速度の向上のために、ＲＡＭ１０と同様にディスク９上に存在するデータの一部を記憶するのにも使用される。
【００１７】
ハードディスクコントローラ（ＨＤＣ）３およびゲートアレイ２の制御用レジスタはそれぞれＣＰＵ１のメモリ空間の一部に割り当てられており、ＣＰＵ１がこの領域に対して読み出しおよび書き込みを行うことでハードディスクコントローラ３およびゲートアレイ２の制御を行う。
【００１８】
リード・ライトＩＣ５は主として磁気ヘッド１３の位置決め処理に必要な信号処理を行うサーボブロック２１と、データの読み出し・書き込みのための信号処理を行うリード・ライトブロック２２に大別される。
【００１９】
磁気ディスク９には、位置決めのためのサーボデータ信号が記録されている領域（サーボ領域）、およびホストシステムから転送されるデータを記録するための領域（データ領域）が交互にかつ等間隔に配置されている。磁気ヘッド１３の位置決め処理の実施時に、磁気ヘッド１３から読み出され、ヘッドＩＣ１６で増幅されたアナログ信号はリード・ライトＩＣ５に送られ、同ＩＣ５のサーボブロック２１によりサーボデータが抽出され、サーボデータはゲートアレイ２に供給され、処理される。ＣＰＵ１はゲートアレイ２の処理結果をもとにモータドライバ６を制御し、磁気ヘッド１３の位置決めのための電流をボイスコイルモータ７に流す。
【００２０】
ハードディスクコントローラ３はＣＰＵバス１２に接続される以外にも、ゲートアレイ２、バッファＲＡＭ４、リード／ライトＩＣ５に接続されている。ハードディスクコントローラ３はさらに機能ごとにホストシステム１７とのインタフェース制御を行うホストブロック２３、バッファＲＡＭ４の制御を行うバッファブロック２５、リード・ライトＩＣ５およびゲートアレイ２と接続され、読み出し・書き込み処理を行うリード・ライトブロック２４などに分かれる。
【００２１】
次に、このハードディスク装置の動作を説明する。
【００２２】
読み出し時には、磁気ヘッド１３によって磁気ディスク９からアナログ信号が読み出され、ヘッドＩＣ１６により増幅される。増幅されたアナログ信号はリード／ライトＩＣ５によって復号化される。ハードディスクコントローラ３は復号信号をゲートアレイ２からの制御用の各信号にしたがって処理することによりホストシステム１７に転送すべきデータを生成する。このデータは一旦バッファＲＡＭ４に格納されてからホストシステム１７に転送される。
【００２３】
書き込み時には、ホストシステム１７からハードディスクコントローラ３に転送されたデータはバッファＲＡＭ４に一旦格納された後、ゲートアレイ２からの制御用の各信号にしたがってハードディスクコントローラ３からリード／ライトＩＣ５へ送られ、リード／ライトＩＣ５によって符号化された書き込みデータはヘッドＩＣ１６を経由して磁気ヘッド１３によって磁気ディスク９に書き込まれる。
【００２４】
ホストシステム１７は、SetFeatureコマンド等により、ライトキャッシュのオン（有効）／オフ（無効）を指定することが出来る。ライトキャッシュが有効な場合、ホストシステム１７から発行されたライトコマンドはバッファＲＡＭ４内のコマンドキューイングテーブルに登録される。ライトコマンドはアドレス、転送ブロック数、バッファポインタ、物理アドレス等からなる。コマンドに係るデータは同じくバッファＲＡＭ４内のデータテーブルに登録される。
【００２５】
バッファＲＡＭ４は電源がオフになるとデータが消失してしまうので、電源遮断などが発生する前に、データテーブルに登録されたデータをコマンドキューイングテーブルに登録されたライトコマンドに従って磁気ディスク９へ確実に書き戻す処理（ライトフラッシュ）が必要になる。これらを保障するために、Standbyコマンド、Flush Cacheコマンド等がホストシステム１７に用意されている。これらのコマンドが発行されると、以下のようなライトフラッシュ処理が行われる。
【００２６】
キューイングテーブルに登録された複数のライトコマンドを効率良く実行するために、コマンドの並び替え（リオーダリング）を行いつつ、効率良くアクセス可能なコマンドを検索（選択）し、最適なコマンドの順序でデータテーブルに登録されているデータを磁気ディスク９に記録する（ライトフラッシュ）。本発明では、磁気ディスク９のみならずフラッシュメモリ３０も用いてライトフラッシュ処理を実施できるので、どのコマンドをいずれのメディア（磁気ディスク９あるいはフラッシュメモリ３０）に対してライトフラッシュするかを決める必要がある。この処理をコマンド分散処理と称する。なお、フラッシュメモリ３０に書き戻されたライトコマンドに係るデータはいずれは磁気ディスク９に書き戻す必要があるので、フラッシュメモリ３０にはコマンドキューイングテーブルに登録されているライトコマンドのみならずデータテーブルに登録されているデータも書込まれる。
【００２７】
図２にコマンドキューイングテーブルの遷移状況を示す。図２（ａ）に示すように、コマンドキューイングテーブルは多数個のコマンドが登録可能であり、現在、コマンドＡ、コマンドＢ、コマンドＣ、…コマンドＪまでの１０個のコマンドが登録されていると仮定する。
【００２８】
コマンドキューイングテーブルに登録されている１０個のコマンドについて、先ず、磁気ディスク９のみに書き戻すことを想定して、最も短時間に処理可能なコマンドの順番に並び替えを行う。並び替える方法の一例として、例えば、現在のヘッド位置を考慮してヘッドの移動が最も少なく「高速に処理可能なコマンド」を常に検索する。検索条件は種々あるが、ここでは一例としてシーク時間、回転待ち時間、メディアアクセス時間などを合算した総時間に基づいて現在のヘッドの位置から一番早く処理できるコマンドを「高速に処理可能なコマンド」と規定する。
【００２９】
この結果、図２（ｂ）に示すように、コマンドＥ→コマンドＩ→…→コマンドＣ→コマンドＤという順番に並び替えられる。この順番が１０個のライトコマンドを磁気ディスクに書き戻す際の最も短時間で処理が実行できる順番であり、ディスク処理順番Ｍ_indexと称する。すなわち、一番最初に実行されるコマンドＥのディスク処理順番Ｍ_indexが０で、以下順次Ｍ_indexが１つづつ増加する。なお、コマンドの左側の数字は登録時の初期順番である。同時に、それぞれのコマンドの処理時間をシーク時間、回転待ち時間等を考慮して転送ブロックから計算し、登録する。更には、一番最初に処理するコマンド（ここではコマンドＥ）からの処理の累積時間も登録していく。
【００３０】
本発明では磁気ディスク９以外にフラッシュメモリ３０も選択的に用いてライトフラッシュ動作を行うが、磁気ディスク９へのライト動作はシーク時間、回転待ち時間が必要となるためにフラッシュメモリ３０へのライト動作よりも低速であると考えられるため、図２（ｂ）のディスク処理順番Ｍ_indexが小さいものは磁気ディスク９にライトフラッシュし、大きいものはフラッシュメモリ３０にライトフラッシュすることが、処理時間を短縮する上で効率的であると考えられる。
【００３１】
そこで、図２（ｂ）のテーブルのどの処理順番Ｍ_indexのコマンドまでを磁気ディスク９にライトフラッシュするかを決めるために、フラッシュメモリ３０の処理時間も登録する。コマンドキューイングテーブルに登録されている１０個のコマンドについて、フラッシュメモリ３０への書込み時間を転送ブロックから計算し、登録する。フラッシュメモリ３０への書込みはシーク時間、回転待ち時間が含まれないため、要求データをライトする実行時間のみである。更には、ディスク処理順番Ｍ_indexが一番最後（ここでは９）のコマンド（ここではコマンドＤ）の処理時間からの累積時間も登録していく。これを図２（ｃ）に示す。ここでは、説明の便宜上メモリ処理順番Ｆ_indexはディスク処理順番Ｍ_indexと同じとする。
【００３２】
次に、磁気ディスク９への書込みの累積時間と、フラッシュメモリ３０への書込みの累積時間との大小比較を行う（図２（ｄ）参照）。磁気ディスク９への書込み累積時間は順番Ｍ_indexの小さい方から、フラッシュメモリ３０への書込み累積時間は順番Ｆ_indexの大きい方から検索する。磁気ディスク９への書込み順番Ｍ_indexの大きいコマンドは、磁気ディスク９へのライトフラッシュは高速に処理できないコマンド群である。従って、シーク時間、回転待ち時間を必要としないフラッシュメモリ３０へのライトフラッシュ処理として割り当てた方が処理時間が短縮できるので検索方法もこの様な手順で実施する。
【００３３】
各コマンドを実施するまでの累積時間の短いメディアを用いてライトフラッシュする。図２（ｄ）の例では、書込み順番Ｍ_indexが０から２までのコマンドＥ、Ｉ、Ｈは磁気ディスク９に、９〜３までのコマンドＤ、Ｃ、Ｆ、Ｇ、Ｊ、Ａ、Ｂはフラッシュメモリ３０にライトフラッシュする。処理時間を最短化するためには、コマンドＥ、Ｉ、Ｈはこの順番にライトフラッシュする必要があるが、フラッシュメモリへライトフラッシュするコマンドＤ、Ｃ、Ｆ、Ｇ、Ｊ、Ａ、Ｂはどのような順番でライトフラッシュしても処理時間に違いはない。
【００３４】
磁気ディスク９へのライトフラッシュ、フラッシュメモリ３０へのライトフラッシュは同時に並行して処理可能であるので、磁気ディスク９のみにライトフラッシュすると４３ミリ秒要するが、ライトフラッシュに要する時間が１１ミリ秒で済む。同時並行して処理する２つのメディアへのライトフラッシュ動作が同じ時間であれば、全体のライトフラッシュ処理時間は半分で済む。短時間にライトフラッシュ処理が完了するので、ライトフラッシュ時に衝撃、あるいは電源遮断等によりデータが破壊されることが防止される。
【００３５】
図３は、図２に示したキューイングテーブルの作成方法を示すフローチャートである。
【００３６】
ステップＳ１２で磁気ディスク処理順番Ｍ_indexの初期値を０とする。
【００３７】
ステップＳ１４で現在キューイングテーブルに登録されているコマンド（ここでは、１０個）の中から、現在のヘッド位置を考慮して最も高速に処理可能なコマンドを１つ選ぶ。
【００３８】
ステップＳ１６でキューイングテーブル（実際には初期のテーブルはコピーしておく）のＭ_index番目ＣＭＤ［Ｍ_index］にステップＳ１４で選択されたコマンドを登録する。
【００３９】
ステップＳ１８でキューイングテーブルのＭ_index番目にステップＳ１４で選択されたコマンドの処理時間Ｍ_Time［Ｍ_index］を登録する。
【００４０】
ステップＳ２０でキューイングテーブルのＭ_index番目の累積時間Ｍ_Total Time［Ｍ_index］をステップＳ１４で選択されたコマンドの処理時間を加算して更新する。
【００４１】
ステップＳ２２でキューイングテーブルに登録されている全てのコマンドを検索したか否かを判定する。ノーの場合は、ステップＳ２４でディスク処理順番Ｍ_indexをインクリメントして、ステップＳ１４に戻り、次に最速でアクセス可能なコマンドを選択する。
【００４２】
ステップＳ２２で全てのコマンドが検索されたことが確認されると、ステップＳ２６でメモリ処理順番Ｆ_indexの初期値を９とする。すなわち、フラッシュメモリへの書込みは磁気ディスクへの書込み順番とは逆方向から処理する。
【００４３】
ステップＳ２８でキューイングテーブルのＦ_index番目のコマンドの処理時間Ｆ_Time［Ｆ_index］を計算し、登録する。
【００４４】
ステップＳ３０でキューイングテーブルのＦ_index番目の累積時間Ｆ_Total Time［Ｆ_index］を処理時間を加算して更新する。
【００４５】
ステップＳ３２でキューイングテーブルに登録されている全てのコマンドを検索したか否かを判定する。ノーの場合は、ステップＳ３４でメモリ処理順番Ｆ_indexをデクリメントして、ステップＳ２８に戻り、次のコマンドの処理時間を登録する。
【００４６】
ステップＳ３２で全てのコマンドが検索されたことが確認されると、終了する。
【００４７】
図４は、図３で決定されたテーブルを用いてコマンドの分散処理を示すフローチャートである。キューイングテーブルに登録されているコマンド数を１０個と仮定する。
【００４８】
ステップＳ４２でディスク処理順番Ｍ_indexの初期値を０、メモリ処理順番Ｆ_indexの初期値を９とする。
【００４９】
ステップＳ４４でＭ_index番目のディスク処理累積時間Ｍ_Total Time［Ｍ_index］とＦ_index番目のメモリ処理累積時間Ｆ_Total Time［Ｆ_index］との大小関係を判定する。ディスク処理累積時間Ｍ_Total Time［Ｍ_index］がメモリ処理累積時間Ｆ_Total Time［Ｆ_index］より大きい場合は、ステップＳ５２でＦ_index番目のライトコマンドのフラッシュ処理をフラッシュメモリ３０に割当て、ステップＳ５４でＦ_indexが０になったか否かを判定する。Ｆ_indexが０になった場合は、全てのコマンドのフラッシュ処理のメディアの割当てが終了したので、処理を終了する。Ｆ_indexが０になっていない場合は、ステップＳ５６でＦ_indexをデクリメントし、ステップＳ５０に進む。
【００５０】
ステップＳ４４でディスク処理累積時間Ｍ_Total Time［Ｍ_index］がメモリ処理累積時間Ｆ_Total Time［Ｆ_index］以上ではない場合は、ステップＳ４６でＭ_index番目のライトコマンドのフラッシュ処理を磁気ディスク９に割当て、ステップＳ４８でＭ_indexをインクリメントし、ステップＳ５０に進む。
【００５１】
ステップＳ５０でＭ_indexがＦ_index以上でない場合はステップＳ４４に戻り、ディスク処理累積時間Ｍ_Total Time［Ｍ_index］とメモリ処理累積時間Ｆ_Total Time［Ｆ_index］との比較を行う。
【００５２】
以上により、図２（ｄ）に示すように、ライトコマンドをフラッシュするメディア割当てが終了する。
【００５３】
図５は以上説明したコマンド分散処理を模式的に示す図である。図２（ｄ）に示すように、磁気ディスク９のみに書き戻す前提で最も短時間に処理可能なコマンドの順番に並び替えたコマンドキューイングテーブルにおいて、上位の順番のコマンド群は磁気ディスクに対して高速に処理が可能なコマンド群であり、下位の順番のコマンド群は磁気ディスクに対して高速に処理が不可能なコマンド群であり、フラッシュメモリ３０に書き戻すことにより、コマンドキューイングテーブルに登録されたコマンドを短時間にフラッシュ処理することができる。図５に示すように、コマンドキューイングテーブルには、コマンドの論理ブロックアドレスＬＢＡ、転送ブロック数ＢＬＫ等も登録されている。
【００５４】
フラッシュメモリ３０に書き戻されたライトコマンドを磁気ディスク９に書き戻す場合は、通常のライトフラッシュ処理と同様にフラッシュメモリ３０内のライトコマンドをバッファＲＡＭ４内の（ホストシステム１７からFlush CacheコマンドあるいはStandbyコマンドを受けたときに通常使用する）キューイングテーブルに登録する。そして、キューイングテーブルに登録されているコマンドに係り、フラッシュメモリ３０に記憶されているデータを磁気ディスクに書戻す。なお、この書き戻しの順番は最も短時間に処理可能なコマンドの順番に限られず、ランダムでもよい。このとき、キャッシュコマンドはフラッシュメモリ（不揮発性メモリ）３０に記憶されているので、電源遮断が発生してもデータが消滅することはなくなるため、制御プログラム上で書き戻し処理が必要となった場合に実施することが可能である。
【００５５】
以上説明したように、第１の実施の形態によれば、ホストシステム１７から発行されたライトコマンドはバッファＲＡＭ４内のコマンドキューイングテーブルに登録され、コマンドに係るデータは同じくバッファＲＡＭ４内のデータテーブルに登録される。データテーブルに登録されたデータをコマンドキューイングテーブルに登録されたライトコマンドに従って磁気ディスク９あるいはフラッシュメモリ３０へ書き戻す処理（ライトフラッシュ）が行われる。現在のヘッド位置を考慮してヘッドの移動が最も少なく「高速に処理可能なコマンド」群は磁気ディスク９にライトフラッシュし、それ以外のコマンドはフラッシュメモリ３０にライトフラッシュする。このように、磁気ディスク９へのライトフラッシュとフラッシュメモリ３０へのライトフラッシュは同時に並行して処理可能であるので処理時間が短縮できる。もしも、同時並行して処理する２つのメディアへのライトフラッシュ動作が同じ時間であれば、全体のライトフラッシュ処理時間は半分になる。
【００５６】
変形例
本発明は上述した実施の形態に限定されず、種々変形して実施可能である。例えば、上述の説明では、磁気ディスクへライトフラッシュする場合の処理時間の累積時間と、フラッシュメモリへライトフラッシュする場合の処理時間の累積時間との大小関係に基づいて、磁気ディスクを用いるかフラッシュメモリを用いるかを決めたが、この決め方に限らない。高速で処理可能なコマンド群とそれ以外のコマンド群は他のアルゴリズムにより求めても良い。
【００５７】
また、キャッシュされたライトコマンドを２つのコマンド群に分けて、コマンド群毎にライトフラッシュ先のメディアを磁気ディスクとフラッシュメモリとから選択しているが、使用者の使用目的に応じて、（１）従来通りの磁気ディスク９のみへのフラッシュ動作と、（２）フラッシュメモリ３０のみへフラッシュ動作の２つのモードもサポートするように、制御プログラム（ファームウェア）を変更する。モードの選択条件としては、フラッシュメモリ３０の異常を検知した場合、あるいは書き込み速度は気にせず、確実にデータを保存したい場合は磁気ディスク９のみへのフラッシュ動作が選択され、瞬時に電源がオフされる危険性があり、すばやくデータを保存したい場合、あるいはアクセスするエリアが限られており、常に高速な処理が必要な場合はフラッシュメモリ３０のみへのフラッシュ動作が選択される。
【００５８】
なお、この発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【００５９】
【図１】本発明の一実施の形態による磁気ディスク装置の構成を示す図。
【図２】コマンドキューイングテーブルの作成手順を示す概略図。
【図３】コマンドキューイングテーブルの作成手順を示すフローチャート。
【図４】コマンドキューイングテーブルを用いてライトフラッシュの書き戻し先のメディアを選択する手順を示すフローチャート。
【図５】ライトフラッシュの概略を説明するための図。
【符号の説明】
【００６０】
３…ハードディスクコントローラ、４…バッファＲＡＭ、９…磁気ディスク、１７…ホストシステム、３０…フラッシュメモリ。
【図１】
2008165881.tif 000003
【図２】
2008165881.tif 000004
【図３】
2008165881.tif 000005
【図４】
2008165881.tif 000006
【図５】
2008165881.tif 000007