(57)【要約】【課題】ＲＭＷ処理を効率よく実行し、効率的な記憶処理を実行する。【解決手段】ホストから入力されるコマンドの書き込みデータのサイズが、磁気ディスクの物理セクタよりも小さいか否かを判断し（ステップＳ１０）、小さい場合にそのコマンドの優先順位を下げておく（ステップＳ１２）。また、優先順位が下げられたコマンドが複数入力され、かつその物理セクタが近い場合（Ｎセクタ内である場合）に、それらコマンドを結合する（ステップＳ１８）。これにより、リード処理を、優先順位が下げられた各データに対応する物理セクタについて一括して行うことができるので、リード処理におけるトータルのシーク動作（回数）を減らすことができ、ＲＭＷ処理を効率よく実行することが可能となる。【選択図】図３
2010080021.tif 000002
【特許請求の範囲】
【請求項１】
ホストから入力されるコマンドで指定された書き込みデータのサイズが、媒体の物理セクタよりも小さいか否かを判断する判断工程と、
前記媒体の物理セクタよりもサイズが小さい書き込みデータのコマンドの優先順位を下げる順位変更工程と、
前記優先順位が下げられた書き込みデータのコマンドが複数入力された段階で、当該コマンドで指定された各物理セクタについてのリード処理を一括して行うとともに、当該リード処理結果に基づいて、モディファイ・ライト処理を実行する処理工程と、を含む記録制御方法。
【請求項２】
前記ホストから入力されるコマンドで指定された書き込みデータのサイズが、前記媒体の物理セクタよりも大きい場合に、前記書き込みデータを前記物理セクタと同一長の第１データと、それ以外の第２データとに分割するとともに、前記コマンドを前記第１データに対応する第１コマンドと前記第２データに対応する第２コマンドとに分割する分割工程を更に含み、
前記判断工程では、前記第２データのサイズが前記媒体の物理セクタよりも小さいか否かを判断することを特徴とする請求項１に記載の記録制御方法。
【請求項３】
前記順位変更工程にて優先順位が下げられたデータをバッファの連続した専用領域に移動する移動工程を更に含む請求項１又は２に記載の記録制御方法。
【請求項４】
前記処理工程では、前記リード処理を、前記各物理アドレスのうちデータが書き込まれない部分のみについて一括して実行し、
前記モディファイ・ライト処理のうちのライト処理を、前記リード処理のときとは実行順を並び替えて一括して実行することを特徴とする請求項１〜３のいずれか一項に記載の記録制御方法。
【請求項５】
前記ホストから入力されるコマンドがNative Command Queuingコマンドである場合に、
前記リード処理及びモディファイ・ライト処理が不要なデータの、前記ホストに対する転送要求を優先的に行い、前記リード処理及びモディファイ・ライト処理が必要なデータの転送要求をまとめて行う要求工程を更に含む請求項１〜４のいずれか一項に記載の記録制御方法。
【請求項６】
ホストから入力されるコマンドで指定された書き込みデータのサイズが、媒体の物理セクタよりも小さいか否かを判断する判断部と、
前記判断部による判断の結果、前記媒体の物理セクタよりもサイズが小さいと判断された書き込みデータのコマンドの優先順位を下げる順位変更部と、
前記優先順位が下げられた書き込みデータのコマンドが複数入力された段階で、当該コマンドで指定された各物理セクタについてのリード処理を一括して行うとともに、当該リード処理結果に基づいて、モディファイ・ライト処理を実行する処理部と、を備える記録制御部。
【請求項７】
前記ホストから入力されるコマンドで指定された書き込みデータのサイズが、前記媒体の物理セクタよりも大きい場合に、前記書き込みデータを前記物理セクタと同一長の第１データと、それ以外の第２データとに分割するとともに、前記コマンドを前記第１データに対応する第１コマンドと前記第２データに対応する第２コマンドとに分割する分割部を更に備え、
前記判断部は、前記第２データの書き込みサイズが、前記媒体の物理セクタよりも小さいか否かを判断することを特徴とする請求項６に記載の記録制御部。
【請求項８】
前記処理部は、前記リード処理を、前記各物理アドレスのうちデータが書き込まれない部分のみについて一括して実行し、
前記モディファイ・ライト処理のライト処理では、前記リード処理のときとは実行順を並び替えて一括して実行することを特徴とする請求項６又は７に記載の記録制御部。
【請求項９】
前記ホストから入力されるコマンドがNative Command Queuingコマンドである場合に、
前記リード処理及びモディファイ・ライト処理が不要なデータの、前記ホストに対する転送要求を優先的に行い、前記リード処理及びモディファイ・ライト処理が必要なデータの転送要求をまとめて行う要求部を更に備える請求項６〜８のいずれか一項に記載の記録制御部。
【請求項１０】
ホストから入力されるデータをリード処理及びモディファイ・ライト処理する請求項６〜９のいずれか一項に記載の記録制御部と、
前記記録制御部で処理されたデータを媒体に記録する記録部と、を備える記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記録制御方法、記録制御部及び記憶装置に関し、特に、ホストから入力された書き込みデータの記録制御方法及び記録制御部、並びに当該記録制御部を具備する記憶装置に関する。
【背景技術】
【０００２】
近年、磁気ディスク装置においては大容量化が進んでおり、当該大容量を確保するための一手段として、Large Sectorと呼ばれるフォーマット効率の高いディスクフォーマット形式が提案されている。
【０００３】
このLarge Sectorは、磁気ディスク装置の１セクタとして、従来の５１２バイトより大きなサイズ（例えば１０２４バイトや４０９６バイトなどのサイズ）を採用している。このようなLarge Sectorを採用する場合、上位ホスト側が当該セクタサイズに対応していない場合がある。これに対応するためには、５１２バイト単位でライト要求されたデータに対して、ＲＭＷ（Read Modify Write）を用いたエミュレーション動作を実行する必要がある（例えば、特許文献１参照）。
【０００４】
【特許文献１】特開２００２−１５５０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記ＲＭＷを用いたエミュレーション動作では、データを記録するセクタをバッファにリードし、ホストが要求した５１２バイト単位のセクタを上書き（モディファイ）し、当該上書きしたデータを媒体に書き戻す処理を行う必要がある。このため、コマンドごとにリード及びモディファイ分の処理時間が必要となるため、磁気ディスク装置の性能低下（書き込み速度の低下）が生じるおそれがある。
【０００６】
そこで本発明は上記の課題に鑑みてなされたものであり、リード処理及びモディファイ・ライト処理を効率よく実行し、効率的な記録制御を行うことが可能な記録制御方法、記録制御装置を提供することを目的とする。また、本発明は、効率的な記録が可能な記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本明細書に記載の記録制御方法は、ホストから入力されるコマンドで指定された書き込みデータのサイズが、媒体の物理セクタよりも小さいか否かを判断する判断工程と、前記媒体の物理セクタよりもサイズが小さい書き込みデータのコマンドの優先順位を下げる順位変更工程と、前記優先順位が下げられた書き込みデータのコマンドが複数入力された段階で、当該コマンドで指定された各物理セクタについてのリード処理を一括して行うとともに、当該リード処理結果に基づいて、モディファイ・ライト処理を実行する処理工程と、を含んでいる。
【０００８】
これによれば、ホストから入力されるコマンドで指定された書き込みデータのサイズが、媒体の物理セクタよりも小さい場合にそのコマンドの優先順位を下げておき、優先順位が下げられた書き込みデータのコマンドが複数入力された段階で、当該コマンドで指定された物理セクタについてのリード処理を一括して行うので、リード処理におけるトータルのシーク動作（回数）を減らすことができる。これにより、リード処理及びモディファイ・ライト処理を効率良く行うことができ、ひいては効率的な記録制御を行うことが可能となる。
【０００９】
本明細書に記載の記録制御部は、ホストから入力されるコマンドで指定された書き込みデータのサイズが、媒体の物理セクタよりも小さいか否かを判断する判断部と、前記判断部による判断の結果、前記媒体の物理セクタよりもサイズが小さいと判断された書き込みデータのコマンドの優先順位を下げる順位変更部と、前記優先順位が下げられた書き込みデータのコマンドが複数入力された段階で、当該コマンドで指定された各物理セクタについてのリード処理を一括して行うとともに、当該リード処理結果に基づいて、モディファイ・ライト処理を実行する処理部と、を備えている。
【００１０】
これによれば、ホストから入力されるコマンドで指定された書き込みデータのサイズが、媒体の物理セクタよりも小さい場合にそのコマンドの優先順位を下げておき、優先順位が下げられた書き込みデータのコマンドが複数入力された段階で、処理部が、当該コマンドで指定された物理セクタについてのリード処理を一括して行うので、リード処理におけるトータルのシーク動作（回数）を減らすことができる。これにより、リード処理及びモディファイ・ライト処理を効率良く行うことができ、ひいては効率的な記録制御を行うことが可能となる。
【００１１】
本明細書に記載の記憶装置は、ホストから入力されるデータをリード処理及びモディファイ・ライト処理する上記記録制御部と、前記記録制御部で処理されたデータを媒体に記録する記録部と、を備えている。
【００１２】
これによれば、効率的な記録制御を行うことが可能な記録制御部を備えているので、媒体に対する効率的な記録を行うことが可能となる。
【発明の効果】
【００１３】
本明細書に記載の記録制御方法及び記録制御装置は、リード処理及びモディファイ・ライト処理を効率よく実行し、効率的な記録制御を行うことができるという効果を奏する。また、本明細書に記載の記憶装置は、効率的な記録ができるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
≪第１の実施形態≫
以下、本発明の記憶装置の第１の実施形態に係る磁気ディスク装置１００について、図１〜図４に基づいて詳細に説明する。
【００１５】
図１は、磁気ディスク装置１００を示すブロック図である。図１において、ＨＤＤ１００は、ディスクエンクロージャ８０と、制御ボード９０と、を有している。
【００１６】
ディスクエンクロージャ８０は、スピンドルモータ（ＳＰＭ）１４、ボイスコイルモータ（ＶＣＭ）５０、ヘッド１６、ヘッドＩＣ５２等を含む。スピンドルモータ１４は、磁気ディスク１２を、例えば４２００〜１５０００ｒｐｍなどの高速度で回転駆動する。なお、磁気ディスク１２としては、大容量を確保するため、Large Sectorと呼ばれるフォーマット効率の高いディスクフォーマット形式が採用されている。具体的には、磁気ディスクの物理セクタが、従来の５１２バイトより大きなサイズ（例えば４０９６バイト）に設定されている。ボイスコイルモータ５０は、ヘッド１６を保持する不図示のヘッドスタックアッセンブリ（ＨＳＡ）を駆動して、ヘッド１６と磁気ディスク１２との相対位置関係を変更する。ヘッド１６は、セラミックなどから成る本体内に、記録コイル及び記録コアを含む記録素子と、記録コアに隣接配置された再生素子と、を有している。再生素子としては、ＧＭＲ素子（Giant Magneto Resistance素子）やＴＭＲ素子（Tunneling Magneto Resistance素子）が用いられる。ヘッドＩＣ５２は、上位装置となるホスト８２からのライトコマンドまたはリードコマンドに基づくヘッドセレクト信号で１つのヘッドを選択して書き込みまたは読み出しを行う。またヘッドＩＣ５２には、ライト系についてはライトアンプが設けられ、リード系についてはプリアンプが設けられている。
【００１７】
制御ボード９０は、ＭＰＵ８４と、メモリ８６と、サーボ制御部９２と、ホストインタフェース制御部９４と、バッファメモリ制御部９６と、バッファメモリ９８と、ハードディスクコントローラ１０２と、リードチャネル１０４と、を含む。これら各部は、バス２８に接続されている。
【００１８】
メモリ８６は、例えば、揮発メモリ及び不揮発メモリを含んで構成され、揮発メモリには各種パラメータを格納するテーブルなどが格納され、不揮発メモリには、初期データなどが格納されている。サーボ制御部９２は、ボイスコイルモータ５０及びスピンドルモータ１４の駆動を制御するものである。
【００１９】
バッファメモリ制御部９６は、バッファメモリ９８に対するデータの格納等を制御するものである。このバッファメモリ制御部９６は、図２に示すように、判断部７２と、順位変更部７４と、処理部７６と、格納部７８と、を備えている。
【００２０】
判断部７２は、ホストから入力され、バッファメモリ９８に格納された書き込みデータのサイズが磁気ディスク１２の物理セクタ（４０９６バイト）よりも小さいか否か等の様々な判断を行う。順位変更部７４は、判断部７２の判断の結果、磁気ディスク１２の物理セクタよりもサイズが小さいと判断されたデータの優先順位を下げる（実際には、コマンドの優先順位を下げる）。処理部７６は、リード・モディファイ・ライトを用いたエミュレーション動作（以下、単に「ＲＭＷ処理」と呼ぶ）を実行する。格納部７８は、ホストから入力されたデータをバッファメモリ９８に格納したり、バッファメモリ９８からデータを読み出したりする。
【００２１】
図１に戻り、リードチャネル１０４は、ライト変調部及びリード復調部として機能する。
【００２２】
次に、上記のように構成される磁気ディスク装置１００の具体的な処理シーケンスについて図３、図４に基づいて説明する。この処理は、主に、バッファメモリ制御部９６により実行されるものである。
【００２３】
なお、ホスト８２から磁気ディスク装置１００に対してライト要求（コマンド）が発行されると、ホストインタフェース制御部９４が、受領したライト要求（コマンド）を管理するコマンド管理テーブルを作成し、バッファメモリ９８（又はメモリ９４）に登録する。また、バッファメモリ制御部９６は、コマンド管理テーブルを確認するとともに、バッファメモリ９８に空き領域があるかを確認した後、ホストに書き込みデータを要求する。そして、当該書き込みデータをバッファメモリ制御部９６（格納部７８）が受領してバッファメモリ９８に格納する。この段階で、図３の処理が開始される。なお、書き込みデータがバッファメモリ９８に格納されたときには、ホストインタフェース制御部９４が、バッファメモリ９８上のデータに対応するキャッシュ情報をメモリ８６又はバッファメモリ９８に登録する。なお、上記書き込みデータの格納や情報の登録には、ＭＰＵ８４が介在しても良い。
【００２４】
まず、図３のステップＳ１０では、バッファメモリ制御部９６の判断部７２が、バッファメモリ９８に格納された書き込みデータのサイズと物理セクタのサイズとを比較し、端数があるか否か、すなわち、ホストから入力されるデータのサイズが磁気ディスク１２の物理セクタ（４０９６バイト）よりも小さいか否かを判断する。例えば、図４（ａ）に示すように、磁気ディスク１２の物理セクタＰＬＢＡ０（４０９６バイト）よりも、ホストから入力されたデータ（ＬＢＡ０〜３（２０４８バイト））が小さい場合に、ここでの判断は肯定される。
【００２５】
上記のようにステップＳ１０の判断が肯定された場合、ステップＳ１２に移行し、順位変更部７４が、ホストから入力されたデータ（当該データに対応するコマンド）の優先順位を低く設定（変更）する。
【００２６】
次いで、ステップＳ１４では、判断部７８が、バッファメモリ９８内に他に優先順位の低いコマンドがあるか否かを判断する。例えば、図４（ｂ）に示すように優先順位の低いデータ（端数があるデータ）（ＬＢＡ８〜１１）のコマンドが存在するような場合には、ここでの判断は肯定される。
【００２７】
上記のようにステップＳ１４における判断が肯定された場合、図３のステップＳ１６に移行する。このステップＳ１６では、判断部７２が、優先順位の低い各コマンドにおいて指定された物理セクタ（ＰＬＢＡ０とＰＬＢＡ１）それぞれが、Ｎセクタ（Ｎは予め定められた自然数）の範囲内にあるか否かを、判断する。ここで、Ｎセクタの範囲内とは、物理セクタ同士がある程度近い範囲にあるかどうかを判断するための指標を意味し、数値Ｎは、設計段階において予め定められているものである。このステップＳ１６の判断が肯定された場合には、ステップＳ１８に移行し、処理部７６が、ＲＭＷ処理のうちのリード処理を一括して実行するように、両コマンドを結合する。
【００２８】
一方、ステップＳ１６の判断が否定された場合（物理セクタ同士が比較的遠い位置に有る場合）には、コマンドを結合することなくステップＳ１４に戻る。
【００２９】
その後は、優先順位が低く設定されたデータ（コマンド）が存在する間、ステップＳ１６の判断（及びステップＳ１８の処理）を繰り返し、全ての優先順位の低いデータ（コマンド）についての判断・処理が終了した段階で、ステップＳ１４の判断が否定されて、ステップＳ２０に移行する。なお、優先順位が低いデータがＮセクタの範囲内に３以上あった場合には、３以上のコマンドが結合されることになる。本第１の実施形態では、図４（ｂ）に示すように、データ（ＬＢＡ０〜３）と、データ（ＬＢＡ８〜１１）がＮセクタ範囲内の物理セクタに記録されるものとし、それら２つのコマンドのみが結合されたものとして説明する。
【００３０】
次いで、ステップＳ２０では、処理部７６が、ステップＳ１８を経て結合されたコマンドが存在しているか否かを判断する。ここでの判断が否定された場合には、本シーケンスを終了するが、判断が肯定された場合には、ステップＳ２２に移行する。
【００３１】
ステップＳ２２では、処理部７６が、連結されたコマンドで指定された各物理セクタ（図４（ｂ）の下段参照）を、リードチャネル１０４、ヘッドＩＣ５２、ヘッド１６等を用いて一括して読み出し、当該読み出したデータをバッファに格納する。この処理が、ＲＭＷ処理のうちのリード処理である。
【００３２】
次いで、ステップＳ２４では、処理部７６が、物理セクタから読み出したデータの一部分を、図４（ｃ）に示すように、バッファに格納されているデータで書き換える。この処理が、ＲＭＷ処理のうちのモディファイ処理である。
【００３３】
次いで、ステップＳ２６では、処理部７６が、モディファイ処理により得られたデータ（４０９６バイトのデータ）を、図４（ｄ）に示すように、リードチャネル１０４、ヘッドＩＣ５２、ヘッド１６等を用いて磁気ディスク１２上に書き込む。この処理が、ＲＭＷ処理のうちのライト処理である。
【００３４】
なお、ステップＳ１０において、データに端数が無い場合、すなわち、ホストから入力されるデータのサイズが磁気ディスク１２の物理セクタ（４０９６バイト）と同一の場合には、ここでの判断は否定され、ステップＳ２８に移行する。この場合、ＲＭＷ処理を行う必要が無いので、ステップＳ２８では、リードチャネル１０４、ヘッドＩＣ５２、ヘッド１６等を用いて磁気ディスク１２上にデータが書き込まれる。
【００３５】
以上、詳細に説明したように、本第１の実施形態によると、ホスト８２から入力されるコマンドの書き込みデータのサイズが、磁気ディスク１２の物理セクタよりも小さい場合にそのコマンドの優先順位を下げておき、優先順位が下げられたコマンドが複数入力され、かつその物理セクタが近い場合（Ｎセクタ内である場合）に、当該優先順位が下げられた各データを書き込む物理セクタについてのリード処理（ＲＭＷ処理の一部の処理）を一括して行うのでトータルのシーク動作（回数）を減らすことができる。この作用（効果）について、図５、図６の比較例と比較しつつ更に詳述する。ここで、図５には、比較例としての、従来におけるＲＭＷ処理に関するフローチャートが示され、図６には、従来の処理を説明するための図が簡略的に示されている。
【００３６】
これらの図に示すように、従来は、ホストから入力された書き込みデータに端数があった場合には（ステップＳ１０１０）、そのデータ（コマンド）ごとに、リード処理（ステップＳ１０１２、図６（ａ）参照）、モディファイ処理（ステップＳ１０１４、図６（ｂ）参照）、ライト処理（ステップＳ１０１６、図６（ｃ）参照）を実行していた。このため、リード処理は、ＲＭＷ処理を行うコマンド数と同一回数だけ行う必要があった。しかしながら、本第１の実施形態では、上記のように一括してリード処理を行うので（ステップＳ２２）、ＲＭＷ処理を効率良く行うことができ、ひいては効率的な記録制御を行うことが可能である。
【００３７】
なお、上記第１の実施形態では、優先順位の低いデータが書き込まれる物理セクタがＮセクタの範囲内にある場合にコマンドを結合して、当該結合されたコマンドに基づいてＲＭＷ処理のリード処理を一括して行う場合について説明したが、これに限られるものではない。例えば、Ｎセクタの範囲でなくとも、コマンドを結合してＲＭＷ処理のリード処理を一括して行うこととしても良い。
【００３８】
また、セクタ数によって一括処理を行うか否かを判断する場合に限らず、例えば、同一トラックの範囲内の場合や、同一又は隣接トラックの範囲内の場合に一括処理するなど、種々の判断基準を採用することが可能である。
【００３９】
≪第２の実施形態≫
次に、本発明の第２の実施形態について図７〜図９に基づいて説明する。
【００４０】
図７には、本第２の実施形態におけるバッファメモリ制御部９６の機能ブロック図が示されている。この図７に示すように、バッファメモリ制御部９６は、第１の実施形態の構成に加えて、分割部７３を有している。
【００４１】
以下、このバッファメモリ制御部９６を中心とする、磁気ディスク１２への書き込みデータの記録処理について、図８、図９のフローチャート及び図１０に基づいて説明する。
【００４２】
まず、バッファメモリ９８に格納された書き込みデータのキューイング方法について図８に基づいて説明する。この図８の処理の前提として、ホスト８２からホストインタフェース制御部９４に対してライト要求（コマンド）が入力されるとともに、ホスト８２から書き込みデータが転送され、当該書き込みデータがバッファメモリ９８に格納されているものとする。
【００４３】
まず、図８のステップＳ１０２では、バッファメモリ制御部９６の判断部７２が、バッファメモリ９８に格納された書き込みデータのサイズと物理セクタのサイズとを比較し、書き込みデータのサイズが磁気ディスク１２の物理セクタ（４０９６バイト）よりも大きいか否かを判断する。例えば、図１０（ａ）に示すように、書き込みデータＷ１のサイズ（５１２０バイト）が、磁気ディスク１２の物理セクタＰＬＢＡｎ（４０９６バイト）よりも大きい場合には、ここでの判断は肯定される。
【００４４】
次いで、ステップＳ１０４では、分割部７３が書き込みデータＷ１を、物理セクタのサイズを超過した部分（超過部分（端数部分））Ｗ１−ｅと、物理セクタと同一サイズの部分Ｗ１−ｎｅとに分割する。このうち、超過部分Ｗ１−ｅは、ＲＭＷ処理が必要な部分であり、それ以外の部分Ｗ１−ｎｅは、ＲＭＷ処理が不要な部分である。また、データ部分Ｗ１−ｎｅ、及びデータ部分Ｗ１−ｅに対応して、コマンドも２つに分割する。
【００４５】
次いで、ステップＳ１０６では、分割部７３が、両部分Ｗ１−ｅ、Ｗ１−ｎｅのそれぞれのコマンドをキューイングする。このキューイングにおいては、分割部７３は、部分Ｗ１−ｅのコマンドの優先順位を下げる。
【００４６】
一方、ステップＳ１０２の判断が否定された場合には、ステップＳ１０８において、判断部７２が、書き込みデータに端数があるか否か、すなわち、書き込みデータのサイズが、物理セクタのサイズよりも小さいか否かを判断する。ここでの判断が肯定された場合には、ステップＳ１１０に移行して、当該書き込みデータ（コマンド）の優先順位を下げ、ステップＳ１１２にて、キューイング（キューへの登録）を行う。一方、ステップＳ１０８の判断が否定された場合には、ステップＳ１１２に直接移行して、優先順位を下げることなく、書き込みデータをキューイングする。
【００４７】
更に、本実施形態では、上記のようにしてキューイングが行われているのと並行して、図９に示す書き込み処理を実行する。この図９の処理では、まず、ステップＳ１２０において、判断部７２が、キューイングされているコマンドのうちの最初のコマンドを参照し、そのコマンドが、優先順位が低く設定されたコマンドであるか否かを判断する。ここでの判断が肯定された場合には、ステップＳ１４〜ステップＳ２６を、上記第１の実施形態と同様の手順で実行する。この処理では、ＲＭＷ処理を必要とする部分が複数あった場合（Ｎセクタ範囲にあった場合）に、物理セクタのリード処理が一括して行われることから、効率的なＲＭＷ処理を実現できる。
【００４８】
一方、ステップＳ１２０の判断が否定された場合には、ステップＳ２８において、第１実施形態と同様に、物理セクタに対してそのままデータを書き込む処理を実行する。
【００４９】
以上詳細に説明したように、本第２の実施形態によると、第１の実施形態と同様、効率的なＲＭＷ処理を実現することができるとともに、物理セクタよりもサイズの大きい連続した書き込みデータがホストから入力された場合にも、ＲＭＷ処理が必要なデータ部分（これに対応するコマンド）のみ優先順位を下げることで、効率的なデータ記録を実現可能である。
【００５０】
≪第３の実施形態≫
次に、本発明の第３の実施形態について、図１１〜図１３に基づいて説明する。この第３の実施形態は、バッファメモリ９８の領域を有効に活用するための処理を実行する点に特徴を有している。
【００５１】
本実施形態では、バッファメモリ制御部９６として、図１１に示すように、第１の実施形態で説明した図３の構成に加えて、移動部７５が設けられている点に特徴を有している。また、本実施形態では、第１の実施形態と同様の処理又は第２の実施形態と同様の処理を行うとともに、バッファメモリ制御部９６（主に移動部７４）にて、図１２に示す処理を適宜実行する。
【００５２】
図１２のフローチャートでは、ステップＳ２０２において、格納部７８が、ＲＭＷ処理の必要なデータがバッファメモリ９６上に存在しているか否かを調査（スキャン）する。この調査において、図１３（ａ）に示すように、ＲＭＷ処理が必要なデータ（Ｗ１−ｅ、Ｗ２−ｅ、Ｗ３−ｅ）が存在していた場合には、ステップＳ２０４における判断が肯定される。
【００５３】
次いで、ステップＳ２０６では、移動部７５が、ＲＭＷ処理が必要なデータ（Ｗ１−ｅ、Ｗ２−ｅ、Ｗ３−ｅ）を、ＲＭＷ専用領域に移動する。ここで、ＲＭＷ専用領域とは、図１３（ｂ）に示すように、予め、バッファメモリ９８の一部に設定された連続した領域である。
【００５４】
次いで、ステップＳ２０８では、上記ステップＳ２０６においてデータを専用領域に移動したことに関連して、格納部７８又は図１のＭＰＵ８４が、コマンドキューのバッファアドレスを変更する。
【００５５】
一方、ステップＳ２０２の調査においてＲＭＷ処理が必要なデータが存在していないことが判明し、ステップＳ２０４における判断が否定された場合には、そのまま、図１２の全処理を終了する。
【００５６】
以上説明したように、本第３の実施形態によると、移動部７５が、ＲＭＷ処理を必要とするデータをバッファの連続した専用領域に移動することから、図１３（ａ）のように、ＲＭＷ処理を必要とするデータが点々と存在することが無い。このため、後から入力されるデータを格納する領域を、図１３（ｂ）に示すように、連続した状態で確保することが可能である。これにより、バッファメモリ９８を効率的に使用することが可能である。
【００５７】
≪第４の実施形態≫
次に、本発明の第４の実施形態について、図１４に基づいて説明する。本第４の実施形態は、図３、図９の処理のステップＳ２０〜Ｓ２６に代えて、図１４の処理を実行する点に特徴を有している。
【００５８】
図３、図９のステップＳ１４において、他に優先順位の低く設定されたデータが無いと判断されると、ステップＳ３０２に移行する。このステップＳ３０２では、判断部７２が、ＲＭＷ処理を必要とするデータが複数あるか否かを判断する。ここでの判断が肯定された場合には、ステップＳ３０４に移行して、格納部７８が、ＲＭＷ処理を必要とするデータに対応する物理セクタの端数セクタ部分のアドレスを基準に、コマンドキューを並び替える。ここで、端数セクタ部分とは、物理セクタのうち、書き込みデータが書き込まれないセクタ部分のみを意味する。
【００５９】
次いで、ステップＳ３０６では、処理部７６が、コマンドキューに基づいて、ＲＭＷ処理のうちのリード処理を実行する。この場合、上記第１〜第３の実施形態と異なり、リード処理では、物理セクタ全体ではなく、物理セクタの端数セクタ部分のみをリードするものとする。
【００６０】
次いで、ステップＳ３０８では、処理部７６が、モディファイ処理を実行する。また、処理部７６は、次のステップＳ３１０において、書き込むデータ（書き込みデータと端数セクタ部分とを組み合わせたデータ）の先頭アドレスを基準に、コマンドキューを並び替え、ステップＳ３１２において、ステップＳ３１０で並び替えたコマンドキューに基づいてライト処理を実行する。
【００６１】
以上のように、本第４の実施形態では、リード処理の前にコマンドキューを端数セクタ部分のアドレスを基準に並び替えるととともに、ライト処理の前には書き込むデータのアドレスを基準にコマンドキューを並び替えることとしている。これにより、端数セクタ部分が物理セクタのうちの先頭部分にあるのか、最後尾部分にあるのかにかかわらず、最短の移動距離（シーク距離）となるように、リード処理及びライト処理を実行することができる。したがって、高効率なＲＭＷ処理を実現することが可能である。
【００６２】
なお、上記第４の実施形態では、端数セクタ部分のみリードする場合について説明したが、これに限られるものではなく、対象セクタの前後のセクタをリードしても構わない。この前後のセクタは、キャッシュデータとして使用することができる。
【００６３】
≪第５の実施形態≫
次に、本発明の第５の実施形態について、図１５〜図１８に基づいて説明する。
【００６４】
本第５の実施形態では、バッファメモリ制御部９６が、図１５に示すように、上記第１の実施形態の構成（図３参照）に加えて、要求部７７を備えている点に特徴を有している。
【００６５】
図１６には、本第５の実施形態におけるコマンドキューイングのフローチャートが示されている。この図１６のステップＳ４０２では、判断部７２が、ホストから受領したコマンドがＮＣＱ（Native Command Queuing）コマンドであるか否かを判断する。ここでの判断が肯定された場合には、次のステップＳ４０４に移行し、判断部７２が、書き込みデータのサイズが物理セクタのサイズを超えているか否かを判断する。ここでの判断が肯定された場合には、ステップＳ４０６に移行し、超過部分（端数部分）をＷｘ−ｅ（ｘは自然数）として、そのコマンドをキューに追加する。また、次のステップＳ４０８では、超過部分（端数部分）以外をＷｘ−ｎｅ（ｘは自然数）として、そのコマンドをキューに追加する。
【００６６】
これに対し、ステップＳ４０４における判断が否定された場合には、ステップＳ４１０に移行し、書き込みデータのサイズが物理セクタのサイズよりも小さいか否かを判断する。ここでの判断が肯定された場合には、ステップＳ４０８において書き込みデータをＷｘ−ｅとして、そのコマンドをキューに追加する。一方、ステップＳ４１０の判断が否定された場合には、ステップＳ４１２に移行し、書き込みデータをＷｘ−ｎｅとして、そのコマンドをキューに追加する。
【００６７】
なお、ステップＳ４０２における判断が否定された場合にも、ステップＳ４１２において、書き込みデータをＷｘ−ｎｅとして、そのコマンドをキューに追加する。このように、ＮＣＱコマンド以外のコマンドであったときに、書き込みデータをＷｘ−ｎｅとするのは、ＮＣＱコマンド以外のコマンドでは、データを分割して受領することができないため、ＮＣＱコマンドと同様の扱いをすることができないからである。
【００６８】
このような処理を経ることにより、コマンドキューには、図１７に示すように、コマンドが配列されるようになっている。なお、図１７におけるＷ１−ｎｅ、Ｗ２−ｎｅは、ステップＳ４０６を経てキューイングされたコマンドであり、Ｗ１−ｅ、Ｗ２−ｅは、ステップＳ４０８を経てキューイングされたコマンドである。また、Ｗ３−ｎｅは、ステップＳ４１２を経てキューイングされたコマンドである。
【００６９】
次に、バッファメモリ制御部９６がホストに対して書き込みデータの要求をする際の処理シーケンスについて、図１８に基づいて説明する。
【００７０】
図１８のステップＳ４２０では、コマンドキューにデータＷｘ−ｅのコマンドが存在するか否かを判断する。ここでの判断が肯定された場合には、ステップＳ４２２に移行し、データＷｘ−ｎｅのコマンドが存在するか否かを判断する。このステップＳ４２２の判断が肯定された場合には、ステップＳ４２４に移行し、データＷｘ−ｎｅに関するコマンドをキュー先頭に移動する。すなわち、データＷｘ−ｅ、Ｗｘ−ｎｅのコマンドのいずれもが存在する場合には、ＲＭＷ処理を実行しないデータＷｘ−ｎｅのコマンドを優先的に処理するように、そのコマンドをキュー先頭に移動させる。そして、ステップＳ４２６では、先頭のコマンドに基づいて、ホストに対してデータの転送を要求する。
【００７１】
これに対し、ステップＳ４２０、ステップＳ４２２のいずれかが否定された場合には、コマンドキューの並べ替えを行わずに、先頭のコマンドに基づいてホストに対してデータの転送を要求する。具体的には、ＲＭＷ処理の必要が無いデータＷｘ−ｎｅのコマンドのみである場合、及びＲＭＷ処理の必要があるデータＷｘ−ｅのコマンドのみである場合に、コマンドキューの並べ替えを行わずに、データの転送を要求する。
【００７２】
以上説明したように、本第５の実施形態によると、ＲＭＷ処理が不要なデータの転送要求を優先的に行うことにより、ＲＭＷ処理が不要なデータを優先的に磁気ディスク１２に書き込み、かつ、ＲＭＷ処理が必要なデータの転送要求を後でまとめて行う。これにより、バッファメモリ９８に同時に格納されるデータ量を小さくすることができるので、バッファメモリを効率的に使用することが可能である。
【００７３】
上述した各実施形態は、本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【図面の簡単な説明】
【００７４】
【図１】第１の実施形態に係る磁気ディスク装置の構成を示すブロック図である。
【図２】図１のバッファメモリ制御部の機能ブロック図である。
【図３】第１の実施形態における処理を示すフローチャートである。
【図４】ＲＭＷ処理の具体的内容を示す図である。
【図５】比較例を示す図（その１）である。
【図６】比較例を示す図（その２）である。
【図７】第２の実施形態のバッファメモリ制御部の機能ブロック図である。
【図８】第２の実施形態に係るコマンドキューへのキューイング処理を示すフローチャートである。
【図９】第２の実施形態に係る書き込み処理を示すフローチャートである。
【図１０】第２の実施形態の処理を示す概念図である。
【図１１】第３の実施形態のバッファメモリ制御部の機能ブロック図である。
【図１２】第３の実施形態の処理を示すフローチャートである。
【図１３】第３の実施形態の処理を示す概念図である。
【図１４】第４の実施形態の処理を示すフローチャートである。
【図１５】第５の実施形態のバッファメモリ制御部の機能ブロック図である。
【図１６】第５の実施形態に係るコマンドキューへのキューイング処理を示すフローチャートである。
【図１７】図１６の処理の結果得られるコマンドキューを示す図である。
【図１８】第５の実施形態に係るコマンドキューを用いた書き込みデータの転送要求処理を示すフローチャートである。
【符号の説明】
【００７５】
７２  判断部
７３  分割部
７４  順位変更部
７５  移動部
７６  処理部
７７  要求部
７８  格納部
８２  ホスト
９６  バッファメモリ制御部（記憶制御部）
９８  バッファメモリ
【図１】
2010080021.tif 000003
【図２】
2010080021.tif 000004
【図３】
2010080021.tif 000005
【図４】
2010080021.tif 000006
【図５】
2010080021.tif 000007
【図６】
2010080021.tif 000008
【図７】
2010080021.tif 000009
【図８】
2010080021.tif 000010
【図９】
2010080021.tif 000011
【図１０】
2010080021.tif 000012
【図１１】
2010080021.tif 000013
【図１２】
2010080021.tif 000014
【図１３】
2010080021.tif 000015
【図１４】
2010080021.tif 000016
【図１５】
2010080021.tif 000017
【図１６】
2010080021.tif 000018
【図１７】
2010080021.tif 000019
【図１８】
2010080021.tif 000020