(57)【要約】【課題】データ構造としてデュアル・リングバッファ方式を採るバッファメモリにおいて、データの書き込みまたは読み出しに偏ったアクセスが行われる場合にも、記憶装置におけるパフォーマンスの悪化を回避する。【解決手段】記憶装置のＤＲＡＭ１１１にアクセス要求をキャッシュするセクターバッファ１０を設ける。セクターバッファ１０は、記録媒体に対する外部からの書き込み要求を記録媒体への処理に先立って一時的に保持する第１のリングバッファ（ＢＵＦ＿Ｗ）１２及び記録媒体に対する外部からの読み出し要求に応じてこの記録媒体から読み出されたデータを保持する第２のリングバッファ（ＢＵＦ＿Ｒ）１１を持つ。記憶装置のＭＰＵ１０９は、記録媒体への外部からのアクセスパターンに応じてＢＵＦ＿Ｒ１１またはＢＵＦ＿Ｗ１２のＢＰＡＧＥ１３を移動することにより、ＢＵＦ＿Ｒ１１及びＢＵＦ＿Ｗ１２のバッファサイズを変更する。【選択図】        図２
2004171411.tif 000002
【特許請求の範囲】
【請求項１】
磁気的にデータを記録する磁気ディスクと、
前記磁気ディスクに対して読み書きされるデータを当該磁気ディスクへの処理に先立って一時的に保持するバッファメモリとを備え、
前記バッファメモリは、記憶領域を、外部から受け付けた前記磁気ディスクへの書き込み要求を格納する第１のリングバッファと、前記磁気ディスクから読み出したデータを格納する第２のリングバッファとに分け、当該第１のリングバッファ及び当該第２のリングバッファを分ける仕切りの位置を可変とすることにより、当該第１のリングバッファ及び当該第２のリングバッファのバッファサイズを可変としたことを特徴とするデータ記憶装置。
【請求項２】
前記仕切りは、前記第１のリングバッファまたは前記第２のリングバッファのボトムページであることを特徴とする請求項１に記載のデータ記憶装置。
【請求項３】
前記バッファメモリは、前記磁気ディスクへの外部からのアクセスパターンに応じて前記仕切りを移動することを特徴とする請求項１に記載のデータ記憶装置。
【請求項４】
データを記録する記録媒体と、
前記記録媒体に対する外部からの書き込み要求を当該記録媒体への処理に先立って一時的に保持する第１のリングバッファ及び前記記録媒体に対する外部からの読み出し要求に応じて当該記録媒体から読み出されたデータを保持する第２のリングバッファを持つバッファ手段と、
前記記録媒体への外部からのアクセスパターンに応じて、前記バッファ手段における前記第１のリングバッファ及び前記第２のリングバッファのバッファサイズを変更するバッファ制御手段と
を備えることを特徴とするデータ記憶装置。
【請求項５】
前記バッファ手段は、バッファ領域を前記第１のリングバッファと前記第２のリングバッファとに分割したＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であることを特徴とする請求項４に記載のデータ記憶装置。
【請求項６】
前記バッファ制御手段は、前記ＲＡＭのバッファ領域を分割する前記第１のリングバッファのボトムページまたは前記第２のリングバッファのボトムページの位置を変更することにより、前記第１のリングバッファ及び前記第２のリングバッファのバッファサイズを変更することを特徴とする請求項４に記載のデータ記憶装置。
【請求項７】
前記バッファ制御手段は、外部から受け付けたアクセス要求の種類及び種類ごとの頻度に基づいて前記第１、第２のリングバッファのバッファサイズを変更することを特徴とする請求項４に記載のデータ記憶装置。
【請求項８】
前記バッファ制御手段は、外部から受け付けたアクセス要求にかかる書き込みデータまたは読み出しデータのサイズに基づいて前記第１、第２のリングバッファのバッファサイズを変更することを特徴とする請求項４に記載のデータ記憶装置。
【請求項９】
所定の記録媒体に対してデータの読み書きを行う際に、当該記録媒体への処理に先立って当該データを一時的に保持するバッファメモリの管理方法であって、
前記記録媒体に対する外部からのアクセス要求を解析するステップと、
前記解析の結果に基づいて、前記バッファメモリのバッファ領域に構築された書き込み要求用のリングバッファ及び読み出しデータ用のリングバッファのバッファサイズを変更するかどうかを判断するステップと、
前記判断に応じて、前記バッファメモリの前記バッファ領域を２つの前記リングバッファに分ける仕切りの位置を変更することにより、当該２つのリングバッファのバッファサイズを変更するステップと
を含むことを特徴とするバッファメモリの管理方法。
【請求項１０】
前記アクセス要求を解析するステップでは、当該アクセス要求の種類及び種類ごとの頻度を解析し、
前記バッファサイズを変更するかどうかを判断するステップでは、外部からの前記アクセス要求において書き込み要求が多い場合に前記書き込み要求用のリングバッファを拡大するようにバッファサイズを変更すると判断し、読み出し要求が多い場合に前記読み出しデータ用のリングバッファを拡大するようにバッファサイズを変更すると判断することを特徴とする請求項９に記載のバッファメモリの管理方法。
【請求項１１】
前記アクセス要求を解析するステップでは、当該アクセス要求にかかる書き込みデータまたは読み出しデータのサイズを解析し、
前記バッファサイズを変更するかどうかを判断するステップでは、外部からの前記アクセス要求において大きいサイズのデータを書き込むアクセス要求が多い場合に前記書き込み要求用のリングバッファを拡大するようにバッファサイズを変更すると判断し、大きいサイズのデータを読み出すアクセス要求が多い場合に前記読み出しデータ用のリングバッファを拡大するようにバッファサイズを変更すると判断することを特徴とする請求項９に記載のバッファメモリの管理方法。
【請求項１２】
前記バッファサイズを変更するステップでは、前記書き込み要求用のリングバッファまたは前記読み出しデータ用のリングバッファのボトムページの位置を変更することにより、２つの前記リングバッファのバッファサイズを変更することを特徴とする請求項９に記載のバッファメモリの管理方法。
【請求項１３】
磁気ディスクを記録媒体として用い、マルチメディアコンテンツの記録・再生を行うハードディスク・レコーダにおいて、
前記磁気ディスクに対する書き込み要求を当該磁気ディスクへの処理に先立って一時的に保持する第１のリングバッファ及び前記磁気ディスクに対する読み出し要求に応じて当該磁気ディスクから読み出されたデータを保持する第２のリングバッファを持つバッファ手段と、
マルチメディアコンテンツを記録する動作モードで動作している場合に前記第１のリングバッファに大きなバッファサイズを与え、マルチメディアコンテンツを再生する動作モードで動作している場合に前記第２のリングバッファに大きなバッファサイズを与えるように、前記バッファ手段の記憶領域を動的に割り振るバッファ制御手段と
を備えることを特徴とするハードディスク・レコーダ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ記憶装置に関し、特に磁気ディスク等の記録媒体に対してデータの読み書きを行う際に一時的に当該データを保持するバッファメモリの制御に関するものである。
【０００２】
【従来の技術】
磁気ディスク装置（ハードディスク・ドライブ）をはじめとするコンピュータの外部記憶装置では、データの読み書き処理のパフォーマンスを向上する手段として、セクターバッファと呼ばれるバッファメモリ（ＤＲＡＭ：Ｄｙｎａｍｉｃ  ＲａｎｄｏｍＡｃｃｅｓｓ  Ｍｅｍｏｒｙ）を用意し、ホストシステムからのデータの書き込み要求（書き込みデータを含む）や１度読み出したデータをキャッシュ（保持）することが常套的に行われている。
一般に、セクターバッファでは、リングバッファと呼ばれるデータ構造が用いられる。リングバッファとは、バッファの始端と終端を連結することで有限長のバッファを無限長として扱う手法である（例えば、特許文献１、２参照）。
【０００３】
図５は、リングバッファの構成を示す概念図である。
図５に示すように、リングバッファでは、セクターバッファの記憶領域をバッファボトムからバッファトップへ順番に使用しながら、連続的なデータとして意味のある固まりをセグメントとして管理する。そして、バッファトップまで使い切った後には、バッファボトムに戻って当該セクターバッファの使用を継続する。これにより意味的（論理的）にリングを形成している。
【０００４】
上述したリングバッファ方式は、セクターバッファを順番に使っていくため、コマンドを順番に処理していくコマンド処理形式には適している。これに対し今日では、データの読み書き処理のパフォーマンスをさらに向上させるために、コマンドのリオーダリング（Ｒｅｏｒｄｅｒｉｎｇ）などが行われるようになった。リオーダリングとは、データの書き込みまたは読み出しを実行するまでに必要な待ち時間が最短になるように、データの読み出し及び書き込みのコマンドの実行順序を並べ替えることである。リオーダリング等によってコマンドの処理順を適宜並べ替えて実行するようになると、書き込み要求と読み出しデータとが混在する形でのセクターバッファにおけるセグメント管理が複雑になってしまう。
【０００５】
【特許文献１】
特開２００２−２５９１１５号公報
【特許文献２】
特開２００２−１７０３１９号公報
【０００６】
【発明が解決しようとする課題】
上述したように、リングバッファ方式は、コマンドを順番に処理していくコマンド処理形式には適しているが、コマンドの処理順を適宜並べ替えて実行する場合には、書き込み要求と読み出しデータとが混在する形でのセクターバッファにおけるセグメント管理が複雑になる。
この問題を解消するため、セクターバッファにおいてデータの書き込み要求と読み出しデータとを別個に扱う方式が考えられる。すなわち、セクターバッファ内に書き込み要求をキャッシュするリングバッファと読み出しデータをキャッシュするリングバッファとを設定し、この２つのリングバッファにおけるそれぞれのセグメントを個別に管理する方式である（以下、この方式をデュアル・リングバッファ（Ｄｕａｌ  Ｒｉｎｇ  Ｂｕｆｆｅｒ）方式と称す）。書き込み要求と読み出しデータとを個別に管理することにより、データの読み書きに関するコマンドが適宜並べ替えて実行される場合にも、セクターバッファにおけるセグメント管理が複雑になることを回避することができる。
【０００７】
しかしこの場合、セクターバッファ内に２つのリングバッファを設定するため、書き込み要求及び読み出しデータのキャッシュに用いられる個々のバッファサイズが小さくなってしまう。すなわち、通常のリングバッファ（以下、シングル・リングバッファ方式と称す）では、キャッシュする内容が制限されないため、外部記憶装置へデータを書き込むアクセスが多ければ書き込み要求が多くキャッシュされ、データを読み出すアクセスが多ければ読み出しデータが多くキャッシュされることとなる。言い換えれば、アクセスがデータ書き込みまたはデータ読み出しに偏っている場合には、最大でセクターバッファの記憶容量分の書き込み要求または読み出しデータをキャッシュできることとなる。これに対し、デュアル・リングバッファ方式では、書き込み要求用のリングバッファと読み出しデータ用のリングバッファとが分けられているため、それぞれのリングバッファに割り当てられたバッファサイズ分しかキャッシュすることができない。
【０００８】
一般に、キャッシュシステムでは、キャッシュメモリ（バッファメモリ）の記憶容量が大きい方がパフォーマンス向上に寄与することができる。したがって、データの書き込みまたは読み出しに偏ったアクセスがある場合、セクターバッファにおいてデュアル・リングバッファ方式を採る外部記憶装置は、シングル・リングバッファ方式を採る外部記憶装置よりもパフォーマンスが悪化してしまう。コンピュータで扱うデータがマルチメディア化し、また動画や音声を磁気ディスクに記録するハードディスク・レコーダが普及しつつある今日、画像データや音声データといったサイズの大きいデータを１度に書き込みあるいは読み出すような偏ったアクセスが行われる機会も増加している。
【０００９】
そこで本発明は、バッファメモリのデータ構造としてデュアル・リングバッファ方式を採用しながら、データの書き込みまたは読み出しに偏ったアクセスが行われる場合にも、記憶装置におけるパフォーマンスの悪化を回避することを目的とする。
【００１０】
【課題を解決するための手段】
上記の目的を達成するため、本発明は、次のように構成されたデータ記憶装置として実現される。すなわち、このデータ記憶装置は、データを記録する記録媒体と、この記録媒体に対する外部からの書き込み要求を記録媒体への処理に先立って一時的に保持する第１のリングバッファ及び記録媒体に対する外部からの読み出し要求に応じて記録媒体から読み出されたデータを保持する第２のリングバッファを持つバッファ手段と、記録媒体への外部からのアクセスパターンに応じて、このバッファ手段における第１のリングバッファ及び第２のリングバッファのバッファサイズを変更するバッファ制御手段とを備えることを特徴とする。
【００１１】
より好ましくは、このバッファ手段は、バッファ領域を第１のリングバッファと第２のリングバッファとに分割したＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成される。そして、第１のリングバッファのボトムページまたは第２のリングバッファのボトムページの位置を変更することにより、各リングバッファのバッファサイズが変更される。
また、バッファサイズの変更は、外部から受け付けたアクセス要求の種類及び種類ごとの頻度に基づいて、もしくは、外部から受け付けたアクセス要求にかかる書き込みデータまたは読み出しデータのサイズに基づいて行うことができる。
【００１２】
また、本発明は、記録媒体へのデータの読み書きに先立って当該データを一時的に保持するバッファメモリの管理方法としても実現される。このバッファメモリの管理方法は、記録媒体に対する外部からのアクセス要求を解析するステップと、この解析の結果に基づいて、バッファメモリのバッファ領域に構築された書き込み要求用のリングバッファ及び読み出しデータ用のリングバッファのバッファサイズを変更するかどうかを判断するステップと、この判断に応じて、バッファメモリのバッファ領域を２つのリングバッファに分ける仕切りの位置を変更することにより、これら２つのリングバッファのバッファサイズを変更するステップとを含むことを特徴とする。
【００１３】
より詳細には、外部からの前記アクセス要求において書き込み要求が多い場合に書き込み要求用のリングバッファを拡大するようにバッファサイズを変更し、読み出し要求が多い場合に読み出しデータ用のリングバッファを拡大するようにバッファサイズを変更する。あるいは、外部からの前記アクセス要求において大きいサイズのデータを書き込むアクセス要求が多い場合に書き込み要求用のリングバッファを拡大するようにバッファサイズを変更し、大きいサイズのデータを読み出すアクセス要求が多い場合に読み出しデータ用のリングバッファを拡大するようにバッファサイズを変更する。
【００１４】
さらにまた、上記の目的を達成する本発明は、次のように構成された磁気ディスク装置として実現される。すなわち、この磁気ディスク装置は、磁気的にデータを記録する磁気ディスクと、この磁気ディスクに対して読み書きされるデータを磁気ディスクへの処理に先立って一時的に保持するバッファメモリとを備え、このバッファメモリは、記憶領域を、外部から受け付けた磁気ディスクへの書き込み要求を格納する第１のリングバッファと、磁気ディスクから読み出したデータを格納する第２のリングバッファとに分け、第１のリングバッファ及び第２のリングバッファを分ける仕切りの位置を可変とすることにより、書き込み用領域及び読み出し用領域のバッファサイズを可変としたことを特徴とする。
【００１５】
さらに本発明は、磁気ディスクを記録媒体として用い、マルチメディアコンテンツの記録・再生を行う、次のように構成されたハードディスク・レコーダとしても実現される。このハードディスク・レコーダは、磁気ディスクに対する書き込み要求をこの磁気ディスクへの処理に先立って一時的に保持する第１のリングバッファ及び磁気ディスクに対する読み出し要求に応じてこの磁気ディスクから読み出されたデータを保持する第２のリングバッファを持つバッファ手段と、マルチメディアコンテンツを記録する動作モードで動作している場合に第１のリングバッファに大きなバッファサイズを与え、マルチメディアコンテンツを再生する動作モードで動作している場合に第２のリングバッファに大きなバッファサイズを与えるように、バッファ手段の記憶領域を動的に割り振るバッファ制御手段とを備えることを特徴とする。
【００１６】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。本実施の形態では、外部記憶装置として磁気ディスクを記録媒体に用いるハードディスク装置を例にして説明する。
図１は、ハードディスク装置１００の主要部の構成を示すブロック図である。ハードディスク装置１００は、スピンドルモータ１０２によって回転駆動される磁気ディスク１０１上を磁気ヘッド１０３がシークしかつ所定のトラック（位置）に留まって磁気ディスク１０１に対してデータを書き込み、または磁気ディスク１０１に書き込まれたデータを読み出す外部記憶装置である。磁気ディスク１０１は、データを磁気情報として記録する記録媒体であり、必要に応じて単数または複数搭載されるが、図１においては、単数の例を示している。
【００１７】
磁気ディスク１０１は、ハードディスク装置１００が動作しているとき、スピンドルモータ１０２のスピンドル軸を中心にして回転駆動され、ハードディスク装置１００が非動作のとき、回転停止（静止）する。磁気ヘッド１０３は、アクチュエータ１０４の先端部に磁気ディスク１０１の表裏面に対応して２つ保持されており、磁気ディスク１０１に対してデータの書き込み及び読み出しを実行する。アクチュエータ１０４は、デジタル／アナログ変換器（ＤＡＣ）１０６及びボイス・コイル・モータ（ＶＣＭ）ドライバ１０７を介してＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０９に制御されたボイス・コイル・モータ（ＶＣＭ）１０５によって駆動される。
【００１８】
リード・ライト・チャネル１０８は、データの読み書き処理を実行する。つまり、データの書き込みでは、ＨＤＣ（ハードディスク・コントローラ）１１０を介してホストシステム（コンピュータ）から転送された書き込みデータを書き込み信号（電流）に変換して磁気ヘッド１０３に供給する。磁気ヘッド１０３は、この書き込み電流に基づいて磁気ディスク１０１に対してデータの書き込みを実行する。一方、データの読み出しでは、磁気ディスク１０１から読み取った読み取り信号（電流）をデジタル・データに変換して、ＨＤＣ１１０を介してホストシステムに出力する。
【００１９】
ＨＤＣ１１０は、ハードディスク装置１００のインターフェイスとしての機能を有している。その機能の１つとして、ホストシステムから転送された書き込みデータを受けると共にリード・ライト・チャネル１０８に転送する。また、リード・ライト・チャネル１０８から転送される読み出しデータをホストシステムに転送する。さらに、ホストシステムからの指示コマンド等を受けてＭＰＵ１０９に転送する。
【００２０】
ＭＰＵ１０９は、ハードディスク装置１００の制御を担う。
ＤＲＡＭ１１１は、ＭＰＵ１０９がハードディスク装置１００を制御するための制御プログラムを格納すると共に、データの読み書きにおけるセクターバッファ（バッファメモリ）として用いられる。したがって、ＨＤＣ１１０は、ホストシステムから転送された書き込み要求（書き込みデータを含む）を、一旦ＤＲＡＭ１１１にキャッシュし、この時点で、ホストシステムに対する当該書き込み要求に対する完了通知（コマンド・コンプリート）を発行、通知する。その後、適当なタイミングで、キャッシュされている書き込みデータをリード・ライト・チャネル１０８に転送し、書き込み要求を実行する。また、ＨＤＣ１１０は、リード・ライト・チャネル１０８から転送された読み出しデータをＤＲＡＭ１１１にキャッシュしておき、ホストシステムから同一データの読み出し要求を受け付けた場合に、ＤＲＡＭ１１１にキャッシュされている当該データをホストシステムへ返す。
【００２１】
図２は、ＤＲＡＭ１１１に設定されるセクターバッファの構成例を示す図である。
図２に示すように、本実施の形態によるセクターバッファ１０は、データ構造としてデュアル・リングバッファ方式を採用しており、セクターバッファ内部を読み取りデータ用の領域であるリングバッファ（以下、ＢＵＦ＿Ｒ）１１と、書き込み要求用の領域であるリングバッファ（以下、ＢＵＦ＿Ｗ）１２とに分けている。図示の例では、ＢＵＦ＿Ｗ１２のボトムページ（以下、ＢＰＡＧＥ）１３をＢＵＦ＿Ｒ１１とＢＵＦ＿Ｗ１２との仕切りとして用いている。すなわち、セクターバッファのバッファボトムからＢＰＡＧＥ１３までをＢＵＦ＿Ｒ１１として用い、セクターバッファのバッファトップからＢＰＡＧＥ１３までをＢＵＦ＿Ｗ１２として用いている。なお、図示の例では、ＢＵＦ＿Ｗ１２のボトムページを仕切り（ＢＰＡＧＥ１３）としているが、ＢＵＦ＿Ｒ１１がバッファトップ側にあり、ＢＵＦ＿Ｗ１２がバッファボトム側にある場合は、ＢＵＦ＿Ｒ１１のボトムページを仕切り（ＢＰＡＧＥ１３）として用いることは言うまでもない。
【００２２】
また、本実施の形態は、ＭＰＵ１０９の制御により、ＢＰＡＧＥ１３の位置を変更可能としている。すなわち、本実施の形態においてＭＰＵ１０９は、ホストシステムからハードディスク装置１００（磁気ディスク１０１）へのアクセスパターン（書き込み要求と読み出し要求の頻度や扱うデータのサイズ等のパターン）に応じて、セクターバッファ１０全体の記憶領域を、ＢＵＦ＿Ｒ１１及びＢＵＦ＿Ｗ１２に、動的かつ適切に割り振る制御手段である。
【００２３】
図３は、セクターバッファ１０の制御手段としてのＭＰＵ１０９の機能を示すブロック図である。
図３を参照すると、本実施の形態によるＭＰＵ１０９は、ホストシステムから来たアクセス要求（以下、アクセスコマンド）を受け付ける割り込み検知部（Ｉｎｔｅｒｒｕｐｔ  Ｈａｎｄｌｅｒ）２０と、セクターバッファ１０のセグメントを管理し制御するセグメント制御部（Ｓｅｇｍｅｎｔ  Ｃｏｎｔｒｏｌ  Ｒｏｕｔｉｎｅ）３０と、セクターバッファ１０の構成を変更するためのコマンドを発行するコマンド実行制御部（Ｃｏｍｍａｎｄ  Ｄｉｓｐａｔｃｈｅｒ）４０と、イベント検知部（Ｅｖｅｎｔ  Ｈａｎｄｌｅｒ）５０とを備える。また、アクセスコマンドを解析してセクターバッファ１０のＢＰＡＧＥ１３を移動するかどうかを判断するためのコマンド解析部６０と、セクターバッファ１０を用いた処理にエラーが起きた場合に、これを検知し復帰処理（リトライ）を行うためのエラー復帰部（Ｅｒｒｏｒ  Ｒｅｃｏｖｅｒｙ  Ｈａｎｄｌｅｒ）７０を備える。
これらの機能は、ＤＲＡＭ１１１に格納されたプログラム（マイクロコード）にてＭＰＵ１０９を制御することにより実現される。このプログラムは、例えば磁気ディスク１０１に書き込まれており、ハードディスク装置１００の起動時にＤＲＡＭ１１１に転送される。
【００２４】
上記構成において、割り込み検知部２０は、ＨＤＣ１１０から転送されたホストシステムからのアクセスコマンドを受け付け、要求の種類（データの書き込みまたは読み出し）に応じた処理を行う。書き込み要求を受け付けた場合、割り込み検知部２０は、書き込み要求にかかる書き込みデータをセクターバッファ１０に格納し、セグメント制御部３０を呼び出して処理を開始させる。この際、さらに次の書き込み要求が来ても受け入れられる余裕がセクターバッファ１０にある場合、セクターバッファ１０から割り込み検知部２０へ書き込み転送完了通知（Ｗｒｉｔｅ  Ｔｒａｎｓｆｅｒ  Ｃｏｍｐｌｅｔｅ）が発行される。この通知を受けた割り込み検知部２０は、ホストシステムに対して完了通知（Ｃｏｍｍａｎｄ  Ｃｏｍｐｌｅｔｅ）を返送する。また、割り込み検知部２０は、データの読み出し要求を受け付けた場合、セグメント制御部３０を呼び出して処理を開始させる。
【００２５】
セグメント制御部３０は、セクターバッファ１０に格納されているデータと割り込み検知部２０が受け付けたアクセスコマンドとの関連を調べ、当該要求に応じた処理を行う。割り込み検知部２０の受け付けたアクセスコマンドが書き込み要求である場合、例えば、当該書き込み要求にかかる書き込みデータの書き込み先と同じアドレスのデータがＢＵＦ＿Ｒ１１内に保持されているならば、このデータを破棄する処理を行う。また、割り込み検知部２０の受け付けたアクセスコマンドが読み出し要求である場合、当該読み出し要求にかかるデータがＢＵＦ＿Ｒ１１あるいはＢＵＦ＿Ｗ１２内に保持されている（ヒットした）ならば、当該データを読み出してホストシステムに送信する。当該読み出し要求にかかるデータがＢＵＦ＿Ｒ１１及びＢＵＦ＿Ｗ１２内に保持されていないならば、磁気ディスク１０１からの当該データの読み出しが必要となるので、コマンド実行制御部４０を呼び出す。
さらに、本実施の形態のセグメント制御部３０は、所定の場合にセクターバッファ１０におけるＢＰＡＧＥ１３を移動する。この処理の詳細については後述する。
【００２６】
コマンド実行制御部４０は、磁気ヘッド１０３のシークや管理テーブルの生成、データの読み出し、書き込み等の指示を、適切なタイミングで発行する。磁気ディスク１０１からデータを読み出すためにセグメント制御部３０から呼び出された場合は、直ちに当該データの読み出しの指示を発行する。
さらに、本実施の形態のコマンド実行制御部４０は、所定の場合にセクターバッファ１０におけるＢＰＡＧＥ１３を移動するために必要な処理を行う。この処理の詳細については後述する。
【００２７】
イベント検知部５０は、コマンド実行制御部４０から発行された各種の指示をイベントとして検出し、当該指示を実現して磁気ディスク１０１に対してデータの読み書きを行うための適切なルーチンを起動する。これにより、実際にデータが磁気ディスク１０１に書き込まれ、あるいは磁気ディスク１０１からデータの読み出しが行われる。
磁気ディスク１０１から読み出されたデータは、セクターバッファ１０のＢＵＦ＿Ｒ１１に格納されると共に、ホストシステムに対して送信される。
【００２８】
コマンド解析部６０は、割り込み検知部２０が受け付けたアクセスコマンドを解析して、ＢＰＡＧＥ１３を移動するかどうかを判断する。コマンド解析及び判断の方法としては、受け付けたアクセスコマンドの種類や頻度に基づいた次のような方法を採ることができる。
（１）アクセスコマンドの種類（読み出し要求か書き込み要求か）及びコマンド長（読み出しまたは書き込まれるデータのサイズ）を解析する。そして、一定以上のコマンド長の読み出し要求が一定個数以上来た場合（具体的には、６４セクタを越えるサイズのデータの読み出し要求が３つ以上来た場合等）、ＢＵＦ＿Ｒ１１を拡張するようにＢＰＡＧＥ１３を移動する（図２の例ではＢＰＡＧＥ１３をバッファトップ側へ移動する）と判断する。また、書き込み要求が来た場合にＢＵＦ＿Ｗ１２を拡張するように（元へ戻すように）ＢＰＡＧＥ１３を移動すると判断する。
【００２９】
（２）アクセスコマンドの種類（読み出し要求か書き込み要求か）を解析する。そして、書き込み要求をキャッシュしていってＢＵＦ＿Ｗ１２の空き領域が少なくなった場合にＢＵＦ＿Ｗ１２を拡張すると判断する（ＢＵＦ＿Ｗ１２の空き領域の情報はセグメント制御部３０から得ることができる）。なお、この場合、初期的にはＢＵＦ＿Ｗ１２のサイズを小さめに設定しておく。
【００３０】
（３）アクセスコマンドの種類（読み出し要求か書き込み要求か）を解析し、読み出し要求と書き込み要求とに分けて受け付けた個数をカウントする。そして、カウント値に一定以上の差が生じたならば、その差に応じて（読み出し要求が多ければＢＵＦ＿Ｒ１１を拡張し、書き込み要求が多ければＢＵＦ＿Ｗ１２を拡張するように）ＢＰＡＧＥ１３を移動すると判断する。この場合、どれだけの差が生じた場合にＢＰＡＧＥ１３をどちらに移動するかを決定する閾値を予め設定し、例えばＤＲＡＭ１１１に保持しておく。
この方法の変形として、さらにコマンド長（読み出しまたは書き込まれるデータのサイズ）をも解析し、読み出し要求及び書き込み要求の受け付け個数とそれぞれのコマンド長とを複合的に判断してＢＰＡＧＥ１３を移動すると判断することもできる。
【００３１】
（４）アクセスコマンドの種類（読み出し要求か書き込み要求か）を解析する。そして、ＢＵＦ＿Ｒ１１及びＢＵＦ＿Ｗ１２のそれぞれにキャッシュされたデータのヒット率を算出し、より効果的なバッファサイズとなるように（ヒット率の高い方に大きいサイズを割り振るように）、ＢＰＡＧＥ１３を移動すると判断する。
【００３２】
これらの他、ハードディスク装置１００が、コンピュータの外部記憶装置としてのハードディスク・ドライブではなく、動画データや音声データ等のマルチメディアコンテンツを記録・再生するためのハードディスク・レコーダである場合、マルチメディアコンテンツを記録する際と再生する際とでは、磁気ディスクへのアクセスパターンが大きく異なる。すなわち、記録する際は大きなデータの書き込み要求が多く、再生する際は大きなデータの読み出し要求が多い。そこで、ハードディスク装置１００の動作モードを監視し、記録動作の際にはＢＵＦ＿Ｗ１２が大きくなるようにＢＰＡＧＥ１３を移動し、再生動作の際にはＢＵＦ＿Ｒ１１が大きくなるようにＢＰＡＧＥ１３を移動するように制御することもできる。
【００３３】
以上のような方法で、コマンド解析部６０がＢＰＡＧＥ１３を移動するかどうかを判断した後、コマンド実行制御部４０から発行されるコマンドによってセクターバッファ１０の状態がＢＰＡＧＥ１３を移動可能な状態かどうかが調査され、移動可能であれば、セグメント制御部３０によりＢＰＡＧＥ１３の位置が変更される。ここで、ＢＰＡＧＥ１３の移動については、ＢＵＦ＿Ｒ１１とＢＵＦ＿Ｗ１２とが何段階かの所定の割合となるようにＢＰＡＧＥ１３の位置をいくつか予め設定しておき、段階的に移動させることが可能である。
【００３４】
エラー復帰部７０は、上記割り込み検知部２０乃至イベント検知部５０による一連の読み書き処理とは別に、当該読み書き処理においてエラーが発生した場合に起動し、予め用意されたエラー復帰手順（Ｅｒｒｏｒ  Ｒｅｃｏｖｅｒｙ  Ｐｒｏｃｅｄｕｒｅ）に従ってデータの書き込み処理あるいは読み出し処理を再施行する。
【００３５】
次に、ハードディスク装置１００がホストシステムからアクセスコマンドを受け取った際のセクターバッファ１０に対する制御の動作を説明する。
図４は、ＭＰＵ１０９による処理の流れを説明するフローチャートである。
図４に示すように、ハードディスク装置１００がホストシステムからのアクセスコマンドを受け取り、当該アクセスコマンドがＨＤＣ１１０からＭＰＵ１０９へ転送されると（ステップ４０１）、まずコマンド解析部６０により当該アクセスコマンドが解析される。そして、解析結果に基づいてセクターバッファ１０のＢＰＡＧＥ１３を移動するかどうかの判断がなされる（ステップ４０２）。ここで、ＢＰＡＧＥ１３を移動すると判断された場合、マイクロコードが参照するフラグであるＢＰＡＧＥ  ｃｈａｎｇｅ  ｒｅｑｕｅｓｔがオンとなる。
【００３６】
次に、セグメント制御部３０により、当該アクセスコマンドのＢＰＡＧＥ  ｃｈａｎｇｅ  ｒｅｑｕｅｓｔの状態がチェックされる。ＢＰＡＧＥ  ｃｈａｎｇｅ  ｒｅｑｕｅｓｔがオフであれば、通常通り当該アクセスコマンドが実行されて処理が終了する（ステップ４０３、４０４）。
一方、ＢＰＡＧＥ  ｃｈａｎｇｅ  ｒｅｑｕｅｓｔがオンであれば、次に、実際にＢＰＡＧＥ１３の書き換えが行われるが、この際、処理中のアクセスコマンドとセクターバッファ１０の状態とに配慮する必要がある。すなわち、ＢＰＡＧＥ１３がＢＵＦ＿Ｗ１２中のセグメントに含まれていないならばＢＰＡＧＥ１３の書き換えを行うことができるが、ＢＰＡＧＥ１３がＢＵＦ＿Ｗ１２中のセグメントに含まれている場合は、ＢＰＡＧＥ１３を書き換えることによってＢＵＦ＿Ｗ１２の当該セグメントが影響を受けるため、ＢＰＡＧＥ１３の書き換えを行うことはできない。
【００３７】
具体的な動作としては、コマンド実行制御部４０により、まずｎｕｍ＿ｐｅｎｄ  ｗｒｔという変数を調べるコマンドが発行され、このコマンドが所定のルーチンにて実行される。そして、ｎｕｍ＿ｐｅｎｄ  ｗｒｔの値に応じて、次にセグメント制御部３０により、ＢＰＡＧＥ１３が所定の書き込み要求のセグメントに含まれているかどうかが調べられる（ステップ４０５）。ここで、ｎｕｍ＿ｐｅｎｄ  ｗｒｔとは、セクターバッファ１０に保持されていながら、未だ磁気ディスク１０１への書き込みが終了していない書き込み要求の数を示す変数である。
【００３８】
ｎｕｍ＿ｐｅｎｄ  ｗｒｔの値が０であれば、未だ磁気ディスク１０１への書き込みが終了していない書き込み要求のセグメントは存在しないので、ＢＰＡＧＥ１３を含むＢＵＦ＿Ｗ１２中のセグメントを検索する必要はない。一方、ｎｕｍ＿ｐｅｎｄ  ｗｒｔが０でない場合は、ＢＰＡＧＥ１３を含むセグメントを検索する。
ＢＰＡＧＥ１３を含むセグメントを検索した結果、そのようなセグメントが存在するならば、ＢＰＡＧＥ１３を書き換えることはできないので、通常通りアクセスコマンドが実行されて処理が終了する（ステップ４０４）。
【００３９】
ＢＰＡＧＥ１３を含むセグメントが存在しない場合は、ＢＰＡＧＥ１３の書き換えが可能であるので、まずコマンド実行制御部４０からページ・ディスカード（ＰＡＧＥ  Ｄｉｓｃａｒｄ）を行うコマンドが発行され、所定のルーチンによりページ・ディスカードが実行される。（ステップ４０６）。ページ・ディスカードとは、キャッシュが不要なセグメントを該当ページから破棄する処理である。例えばＢＵＦ＿Ｗ１２に保持されている書き込み要求の内、既に磁気ディスク１０１への書き込みが終わったもの等である。
そして、セグメント制御部３０により、ＢＰＡＧＥ１３が書き換えられて位置が変更され、これに伴ってＢＵＦ＿Ｒ１１及びＢＵＦ＿Ｗ１２の管理パラメータが変更される（ステップ４０７）。その後、通常通りアクセスコマンドが実行されて処理が終了する（ステップ４０４）。
【００４０】
以上の動作は、ハードディスク装置１００がホストシステムからアクセスコマンドを受け取る度に実行される。ステップ４０５の判断に示したように、本実施の形態では、コマンド解析の結果からＢＰＡＧＥ１３を移動してＢＵＦ＿Ｒ１１及びＢＵＦ＿Ｗ１２のバッファサイズを変更した方が好ましい場合であっても、セクターバッファ１０の状態によっては、すなわち、ＢＰＡＧＥ１３を含む書き込み要求のセグメントが存在する場合は、ＢＰＡＧＥ１３の書き換えを行わず、次の機会まで（別のアクセスコマンドを受け付けてステップ４０１以降の動作サイクルを開始するまで）待つ。これは、次のアクセスコマンドを受け付けるまでの間に、ハードディスク装置１００におけるバックグラウンドでの通常の処理として、ＢＵＦ＿Ｗ１２に保持されている書き込み要求が実行され、ＢＰＡＧＥ１３を含む書き込み要求のセグメントが無くなれば、ＢＰＡＧＥ１３の書き換えが可能となるためである。
【００４１】
上述したように、本実施の形態では、セクターバッファ１０の構成を、読み出しデータをキャッシュするリングバッファであるＢＵＦ＿Ｒ１１とホストシステムからの書き込み要求をキャッシュするリングバッファであるＢＵＦ＿Ｗ１２とに分割したデュアル・リングバッファ方式とする。そして、ホストシステムからハードディスク装置１００（磁気ディスク１０１）へのアクセスパターンに応じて、書き込み要求が多い場合やそのデータサイズが大きい場合にＢＵＦ＿Ｗ１２を拡張するように、読み出し要求が多い場合やそのデータサイズが大きい場合にＢＵＦ＿Ｒ１１を拡張するように、各々のバッファサイズを変更する。セクターバッファ１０全体のバッファサイズは決まっているので、ＢＵＦ＿Ｒ１１とＢＵＦ＿Ｗ１２とを分ける仕切りである、ＢＵＦ＿Ｒ１１またはＢＵＦ＿Ｗ１２のボトムページ（ＢＰＡＧＥ１３）の位置を変更することにより、ＢＵＦ＿Ｒ１１及びＢＵＦ＿Ｗ１２のバッファサイズを変更している。
【００４２】
これにより、読み出しデータに対するキャッシュ容量を多く必要な場合にはＢＵＦ＿Ｒ１１のバッファサイズを大きくし、書き込み要求に対するキャッシュ容量を多く必要な場合にはＢＵＦ＿Ｗ１２のバッファサイズを大きくすることができるので、セクターバッファ１０のデータ構造としてデュアル・リングバッファ方式を用いていても、書き込み要求及び読み出しデータのキャッシュに用いられる個々のバッファサイズがシングル・リングバッファ方式の場合と比べて小さくなってしまうという影響を低減することができる。
【００４３】
【発明の効果】
以上説明したように、本発明によれば、バッファメモリのデータ構造としてデュアル・リングバッファ方式を採用しながら、データの書き込みまたは読み出しに偏ったアクセスが行われる場合にも、記憶装置におけるパフォーマンスの悪化を回避することが可能となる。
【図面の簡単な説明】
【図１】本実施の形態によるハードディスク装置の主要構成を示すブロック図である。
【図２】本実施の形態におけるＤＲＡＭに設定されるセクターバッファの構成例を示す図である。
【図３】本実施の形態におけるセクターバッファの制御手段としてのＭＰＵの機能を示すブロック図である。
【図４】本実施の形態におけるＭＰＵによる処理の流れを説明するフローチャートである。
【図５】リングバッファの構成を示す概念図である。
【符号の説明】
１０…セクターバッファ、１１…ＢＵＦ＿Ｒ（リングバッファ）、１２…ＢＵＦ＿Ｗ（リングバッファ）、１３…ＢＰＡＧＥ、２０…割り込み検知部（Ｉｎｔｅｒｒｕｐｔ  Ｈａｎｄｌｅｒ）、３０…セグメント制御部（Ｓｅｇｍｅｎｔ  Ｃｏｎｔｒｏｌ  Ｒｏｕｔｉｎｅ）、４０…コマンド実行制御部（Ｃｏｍｍａｎｄ  Ｄｉｓｐａｔｃｈｅｒ）、５０…イベント検知部（Ｅｖｅｎｔ  Ｈａｎｄｌｅｒ）、６０…コマンド解析部、７０…エラー復帰部（Ｅｒｒｏｒ  Ｒｅｃｏｖｅｒｙ  Ｈａｎｄｌｅｒ）、１００…ハードディスク装置、１０１…磁気ディスク、１０２…スピンドルモータ、１０３…磁気ヘッド、１０４…アクチュエータ、１０５…ボイス・コイル・モータ（ＶＣＭ）、１０６…デジタル／アナログ変換器（ＤＡＣ）、１０７…ボイス・コイル・モータドライバ、１０８…リード・ライト・チャネル、１０９…ＭＰＵ、１１０…ＨＤＣ（ハードディスク・コントローラ）、１１１…ＤＲＡＭ
【図１】
2004171411.tif 000003
【図２】
2004171411.tif 000004
【図３】
2004171411.tif 000005
【図４】
2004171411.tif 000006
【図５】
2004171411.tif 000007