(57)【要約】【課題】アクセスパタンの特徴を利用して、回転待ち時間を利用した先読みのアクセス領域を決定することにより、キャッッシュのヒット率を高める。【解決手段】ディスク装置は、リード要求データの先行データを読み出す先行データ先読み手段と、リード要求データの後続データを先読みする後続データ先読み手段と、コマンドをモニタリングしてアクセスパタンの特徴を抽出する手段とを備え、後続データ先読み手段が先読みを実行中、後続コマンドにおいてリード要求データをキャッシュメモリに転送する必要が生じた場合に、後続コマンドのリード要求データにアクセスする際に発生する回転待ち時間を予測し、予測回転待ち時間を、後続コマンドを受領する直前のコマンド群のアクセスパタンの特徴に基づき、実行中の後続データの先読み手段と後続コマンドのリード要求データの先行データの先読み手段に割り当てる。【選択図】図１
2007304691.tif 000002
【特許請求の範囲】
【請求項１】
ディスクと、
ヘッドと、
キャッシュメモリと、
リード要求データが前記キャッシュメモリに格納されていない場合に、リード要求データを前記ヘッドを通じて前記ディスクから読み出して前記キャッシュメモリに転送する手段と、
リード要求データが格納されている前記ディスクのトラックへのシークを終了後、リード要求データに前記ヘッドがアクセスするまでにかかるディスク回転待ち時間に、リード要求データより前のアドレスに格納されているデータを、前記ヘッドを通じて前記ディスクから読み出して前記キャッシュメモリに転送する先行データ先読み手段と、
リード要求データを前記キャッシュメモリに転送した後、リード要求データの直後に格納されているデータを、前記ヘッドを通じて前記ディスクから読み出して前記キャッシュメモリに転送する後続データ先読み手段と、
前記後続データ先読み手段が先読みを実行中、後続のコマンドにおいてリード要求データを前記キャッシュメモリに転送する必要が生じた場合に、後続データの先読みを中断し、後続コマンドのリード要求データにアクセスした時に発生するであろう回転待ち時間を予測する回転待ち時間予測手段と、
前記回転待ち時間予測手段が予測した回転待ち時間を、回転待ちが発生する直前のコマンド群のアクセスパタンの特徴に基づき、前記後続データ先読み手段と前記先行データ先読み手段に割り当てる手段と、
を有することを特徴とするディスク装置。
【請求項２】
請求項１記載のディスク装置であって、リードコマンドにより指定される論理ブロック・アドレス(LBA)によりアクセスの方向及びアクセス間隔を分析することにより、アクセスパタンとその特徴を抽出することを特徴とするディスク装置。
【請求項３】
請求項２記載のディスク装置であって、受領したリードコマンドのリード要求データの開始アドレス（LBA）と、直前リードコマンドのリード要求データの開始ドレス（LBA）との大小を比較し、受領したコマンドのリード要求データの開始アドレス（LBA）が直前リードコマンドのリード要求データの開始ドレス（LBA）よりも大きい場合には、LBAプラスの方向へのアクセスと判断し、また、受領したリードコマンドのリード要求データの開始アドレス（LBA）が直前リードコマンドのリード要求データの開始ドレス（LBA）よりも小さい場合には、LBAのマイナス方向のアクセスと判断し、
受領したリードコマンドのリード要求データの開始アドレス（LBA）と直前リードコマンドのリード要求データの開始ドレス（LBA）との距離を求め、アクセス間隔を分析することを特徴とするディスク装置
【請求項４】
請求項３記載のディスク装置であって、直前のコマンド群においてLBAのプラス方向となるパタンの特徴があった場合でかつ、後続コマンドにおいてLBAのプラス方向にアクセスするパタンが継続した場合には、前記回転待ち時間予測手段が予測した回転待ち時間を、前記後続データ先読み手段のみに充て、また直前のコマンド群においてLBAのマイナス方向となるパタンの特徴があった場合でかつ、後続のコマンドにおいてLBAのマイナス方向にアクセスするパタンが継続した場合には、前記回転待ち時間予測手段が予測した回転待ち時間を、前記先行データ先読み手段のみに充てることを特徴とするディスク装置。
【請求項５】
請求項４記載のディスク装置であって、コマンドごとのアクセスがLBAのプラス方向またはマイナス方向にアクセスするパタンにおけるコマンド間のアクセス距離が、回転待ち時間を利用してアクセス可能な距離以内となる場合に、後続のコマンドにおいてLBAのプラス方向にアクセスするパタンとなる場合は前記回転待ち時間予測手段が予測した回転待ち時間を前記後続データ先読み手段のみに充て、後続のコマンドにおいてLBAのマイナス方向にアクセスするパタンとなる場合は、前記回転待ち時間予測手段が予測した回転待ち時間を前記先行データ先読み手段のみに充てることを特徴とするディスク装置。
【請求項６】
請求項４記載のディスク装置であって、コマンドごとのアクセスがLBAのプラス方向またはマイナス方向にアクセスするパタンのいずれかのパタンのコマンド間のアクセス距離が、一定距離間隔となっている場合には、アクセスの方向性とコマンドのアクセス間隔から後続コマンドのアクセス領域を予測する手段を備え、
リード要求されたデータへのアクセス時間（現ヘッド位置からリード要求データにアクセスするまでの時間）が、前記予測領域へのアクセス時間よりも長い場合には、前記予測領域にアクセスし、該予測領域において先読みを実行した後、リード要求データの読み出しを行うことを特徴とするディスク装置。
【請求項７】
請求項６記載のディスク装置であって、最新Ｎ個のコマンドにおいて、アクセス方向が同一となるコマンド群を抽出し、さらに同一アクセス方向のコマンド群においてコマンド間のアクセス距離を調べ、アクセス距離が数十セクタ以内の差であるコマンド群をさらに抽出し、該コマンド群における最新コマンドを基準コマンドとして設定し、さらに数十セクタ以内の違いとなっているアクセス距離の代表値を保存して、同一アクセス方向でかつアクセス距離が近似するパタンを抽出することを特徴とするディスク装置。
【請求項８】
請求項７記載のディスク装置であって、前記アクセスパタン抽出後は、後続コマンドにおけるアクセスが基準コマンドと比較して、保存したアクセス方向と同一でかつ、保存したアクセス距離に近似する場合に前記アクセスパタンが継続すると判定することを特徴とするディスク装置。
【請求項９】
請求項１記載のディスク装置であって、前記各手段はプロセッサで実行されるマイクロプログラムで構成されることを特徴とするディスク装置。
【請求項１０】
データを保持するディスクと、
該ディスクに対してデータの記録または読み出しを行うヘッドと、
前記ディスクから読み出したデータを格納するキャッシュメモリと、
リード要求データが前記キャッシュメモリに格納されていない場合に、リード要求データを、前記ヘッドを通じて前記ディスクから読み出して前記キャッシュメモリに転送する制御装置、とを有し、前記制御装置は、
リード要求データを前記キャッシュメモリに転送した後、リード要求データの後に記録されているデータを、前記ヘッドを通じて前記ディスクから読み出して前記キャッシュメモリに転送する後続データの先読みと、
リード要求データが記録されている前記ディスクのトラックへのシークを終了後、リード要求データに前記ヘッドがアクセスするまでにかかるディスク回転待ち時間に、リード要求データより前のアドレスに記録されているデータを、前記ヘッドを通じて前記ディスクから読み出して前記キャッシュメモリに転送する先行データの先読みを実行し、
前記後続データの先読みを実行中、後続のコマンドにおいてリード要求データを前記キャッシュメモリに転送する必要が生じた場合に、後続データの先読みを中断し、後続コマンドのリード要求データにアクセスした時に発生するであろう回転待ち時間を予測し、
予測した回転待ち時間を、回転待ちが発生する直前のコマンド群のアクセスパタンの特徴に基づき、前記後続データの先読みと前記先行データの先読みに割り当てることを特徴とするディスク装置。
【請求項１１】
請求項１０記載のディスク装置であって、リードコマンドにより指定される論理ブロック・アドレス(LBA)によりアクセスの方向及びアクセス間隔を分析することにより、アクセスパタンとその特徴を抽出することを特徴とするディスク装置。
【請求項１２】
請求項１１記載のディスク装置であって、受領したリードコマンドのリード要求データの開始アドレス（LBA）と、直前リードコマンドのリード要求データの開始ドレス（LBA）との大小を比較し、受領したコマンドのリード要求データの開始アドレス（LBA）が直前リードコマンドのリード要求データの開始ドレス（LBA）よりも大きい場合には、LBAプラスの方向へのアクセスと判断し、また、受領したリードコマンドのリード要求データの開始アドレス（LBA）が直前リードコマンドのリード要求データの開始ドレス（LBA）よりも小さい場合には、LBAのマイナス方向のアクセスと判断し、
受領したリードコマンドのリード要求データの開始アドレス（LBA）と直前リードコマンドのリード要求データの開始ドレス（LBA）との距離を求め、アクセス間隔を分析することを特徴とするディスク装置
【請求項１３】
請求項１２記載のディスク装置であって、回転待ちが発生する直前のコマンド群において論理ブロック・アドレス(LBA)のプラス方向となるパタンの特徴があった場合でかつ、後続コマンドにおいてLBAのプラス方向にアクセスするパタンが継続した場合には、前記予測した回転待ち時間を前記後続データの先読みに充て、また直前のコマンド群においてLBAのマイナス方向となるパタンの特徴があった場合でかつ、後続のコマンドにおいてLBAのマイナス方向にアクセスするパタンが継続した場合には、前記予測した回転待ち時間を前記先行データの先読みに充てることを特徴とするディスク装置。
【請求項１４】
キャッシュメモリを有する回転型記憶装置の先読み制御方法であって、
リード要求データがキャッシュメモリに格納されていない場合に、リード要求データを、回転型記録媒体からヘッドを通じて読み出して前記キャッシュメモリに転送した後、リード要求データの後に記録されているデータを、前記記録媒体から読み出して前記キャッシュメモリに転送する後続データの先読み処理と、
リード要求データが記録されている前記記録媒体の領域へのシークを終了後、リード要求データに前記ヘッドがアクセスするまでにかかる回転待ち時間に、リード要求データより前のアドレスに記録されているデータを、前記ヘッドを通じて前記記録媒体から読み出して前記キャッシュメモリに転送する先行データの先読み処理を含み、
前記後続データの先読みを実行中、後続のコマンドにおいてリード要求データを前記キャッシュメモリに転送する必要が生じた場合に、後続データの先読みを中断し、後続コマンドのリード要求データにアクセスした時に発生するであろう回転待ち時間を予測し、予測した回転待ち時間を、回転待ちが発生する前のコマンド群のアクセスパタンの特徴に基づき、前記後続データの先読み処理と前記先行データの先読み処理に割り当てることを特徴とする回転型記憶装置の先読み制御方法。
【請求項１５】
請求項１４記載の回転型記憶装置の先読み制御方法であって、リードコマンドにより指定される論理ブロック・アドレス(LBA)によりアクセスの方向及びアクセス間隔を分析することにより、アクセスパタンとその特徴を抽出することを特徴とする回転型記憶装置の先読み制御方法。
【請求項１６】
請求項１５記載の回転型記憶装置の先読み制御方法であって、受領したリードコマンドのリード要求データの開始アドレス（LBA）と、直前リードコマンドのリード要求データの開始ドレス（LBA）との大小を比較し、受領したコマンドのリード要求データの開始アドレス（LBA）が直前リードコマンドのリード要求データの開始ドレス（LBA）よりも大きい場合には、LBAプラスの方向へのアクセスと判断し、また、受領したリードコマンドのリード要求データの開始アドレス（LBA）が直前リードコマンドのリード要求データの開始ドレス（LBA）よりも小さい場合には、LBAのマイナス方向のアクセスと判断し、
受領したリードコマンドのリード要求データの開始アドレス（LBA）と直前リードコマンドのリード要求データの開始ドレス（LBA）との距離を求め、アクセス間隔を分析することを特徴とする回転型記憶装置の先読み制御方法。
【請求項１７】
請求項１６記載の回転型記憶装置の先読み制御方法であって、直前のコマンド群においてLBAのプラス方向となるパタンの特徴があった場合でかつ、後続コマンドにおいてLBAのプラス方向にアクセスするパタンが継続した場合には、前記予測した回転待ち時間を、前記後続データの先読み処理に充て、また直前のコマンド群においてLBAのマイナス方向となるパタンの特徴があった場合でかつ、後続のコマンドにおいてLBAのマイナス方向にアクセスするパタンが継続した場合には、前記予測した回転待ち時間を、前記先行データの先読み処理に充てることを特徴とする回転型記憶装置の先読み制御方法。
【請求項１８】
請求項１７記載の回転型記憶装置の先読み制御方法であって、コマンドごとのアクセスがLBAのプラス方向またはマイナス方向にアクセスするパタンにおけるコマンド間のアクセス距離が、回転待ち時間を利用してアクセス可能な距離以内となる場合に、後続のコマンドにおいてLBAのプラス方向にアクセスするパタンとなる場合は前記予測した回転待ち時間を前記後続データの先読み処理に充て、後続のコマンドにおいてLBAのマイナス方向にアクセスするパタンとなる場合は、前記予測した回転待ち時間を前記先行データの先読み処理に充てることを特徴とする回転型記憶装置の先読み制御方法。
【請求項１９】
請求項１７記載の回転型記憶装置の先読み制御方法であって、コマンドごとのアクセスがLBAのプラス方向またはマイナス方向にアクセスするパタンのいずれかのパタンのコマンド間のアクセス距離が、一定距離間隔となっている場合には、アクセスの方向性とコマンドのアクセス間隔から後続コマンドのアクセス領域を予測するステップをさらに含み、
リード要求されたデータへのアクセス時間が、前記予測領域へのアクセス時間（現ヘッド位置から該予測領域にアクセスし、さらにリード要求データにアクセスするまでの時間）よりも長い場合には、前記予測領域にアクセスし、該予測領域において先読みを実行した後、リード要求データの読み出しを行うことを特徴とする回転型記憶装置の先読み制御方法。
【請求項２０】
請求項１９記載の回転型記憶装置の先読み制御方法であって、最新Ｎ個のコマンドにおいて、アクセス方向が同一となるコマンド群を抽出し、さらに同一アクセス方向のコマンド群においてコマンド間のアクセス距離を調べ、アクセス距離が数十セクタ以内の差であるコマンド群をさらに抽出し、該コマンド群における最新コマンドを基準コマンドとして設定し、さらに数十セクタ以内の違いとなっているアクセス距離の代表値を保存して、同一アクセス方向でかつアクセス距離が近似するパタンを抽出することを特徴とする回転型記憶装置の先読み制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスク上のデータを効率よくキャッシュメモリに転送し、キャッシュのヒット率を高め、データ転送速度を高めるためのデータ転送技術に関する。
【背景技術】
【０００２】
ディスク装置では、キャッシュメモリを設けディスク上のデータをキャッシュメモリに転送して管理し、キャッシュメモリからホストに直接データを転送できるようにすることで、ホストへのデータ転送効率を上げている。さらにホストのオーバヘッド時間や、回転待ち時間などを利用して、後続のコマンドで要求される可能性の高いデータをキャッシュメモリに転送しデータの転送効率を上げている。このように空き時間を利用してホスト要求データ以外のデータをキャッシュメモリに転送する制御のことを先読み制御という。
【０００３】
たとえば、回転待ち時間を利用した先読先読み制御では、先読み中に受領したリードコマンドがキャッシュミスとなった場合、はじめに後続コマンドの先行データの先読みに回転待ち時間を充て（ただし先行データの先読み量に上限を設定）、後続コマンドの先行データの先読み後も回転待ちが発生すると予測される場合には、残りの予測回転待ち時間を先行コマンドの後続データの先読みに充てるようにしている。このような制御にすることで、発生する回転待ち時間を効率よく先読みに充てることができる。このような先読み制御は、特許文献１に記載されている。
【０００４】
図１６に、特許文献1に記載されている、先読み中に受領したリードコマンドがキャッシュミスとなった場合において行われる先読み制御のフローを示す。また、図１７に回転待ち時間を利用した先読み制御の動作の例を示す。図１６において先読み中に受領したリードコマンドにおいてキャッシュミスとなったら回転待ちが発生するかを調べ（ステップ６０１）、回転待ちが発生する場合は、キャッシュミスした後続コマンドの先行データの先読みに所定時間回転待ち時間を充てる（ステップ６０２）。後続コマンドの先行データの先読みに回転待ち時間を充ててもなお、回転待ちが発生すると予測される場合には（ステップ６０３）、残りの回転待ち時間を先行コマンドの後続データの先読みに充てる（ステップ６０４）。
【０００５】
図１７では、ホストオーバーヘッドを利用したリードコマンドR１（７０１）の後続データの先読み実行中に受領したリードコマンドR2（７０２）において、キャッシュミスが発生し、その際に発生した回転待ち時間をR１（７０１）の後続データの先読みと、R2（７０２）の先行データ先読みに充てる場合を示している。図中の白抜きの矢印は、R２（７０２）がキャッシュミスとなった直後に先読み中のR１（７０１）を中断し、すぐにR2（７０２）のあるターゲットトラックにアクセスした場合に発生する回転待ち時間を示している。また、図中黒塗りの矢印は、最終的に実施された先読みのアクセス領域を示している。
【０００６】
図１７の例では、R２（７０２）がキャッシュミスした直後にシークを行った場合、ターゲットデータを超えた位置にヘッドが位置づく（７０３）。そのため、着地点７０３からトラックエンドまでの回転待ち（７０４）と、ターゲットトラックの先頭からターゲットデータまでの回転待ち（７０５）が発生することとなる。この回転待ち時間をあらかじめコントローラで求め、最初に後続コマンドの先行データの先読みに所定時間（７０６）を割り当て、所定時間割り当て後も回転待ち時間が発生すると予測される場合には、残りの回転待ち時間を先行コマンドR1（７０１）の後続データの先読みに充てていた。このようにすることで、R１（７０１）とR2（７０２）に連続したデータを、効率よく読み出すことが可能である。
【０００７】
【特許文献１】特開２００２−２４４８１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
キャッシュのヒット率を高めるためには、後続のコマンドで要求される可能性の高いデータを先読みすることが必要である。特許文献１の先読み制御では、回転待ち時間を使って行われる先読みの量が最大となるようにしているものの、必ずしも後続のリードコマンドで要求される可能性の高いデータを先読みしているとは限らなかった。そのため、近領域（回転待ち時間を利用してアクセス可能な領域：Sectors Per Track以内）に連続してアクセスするアクセスパタンであっても、ヒット率があまり向上しない場合があった。したがって回転待ち時間を利用した先読みでは、先読み量を増やすだけではなく、後続のリードコマンドで要求される可能性の高いデータを選択して読み出す工夫が必要である。
【０００９】
上記の問題点を考慮した上で、本発明の第１の課題は、アクセスパタンの特徴を利用して、回転待ち時間を利用した先読みのアクセス領域を決定することにより、キャッシュのヒット率を高めることである。
【００１０】
また、本発明の第２の課題は、コマンドアクセスのパタンをモニタすることにより、アクセスパタンの特徴を抽出することである。
【課題を解決するための手段】
【００１１】
上記第１の課題を解決するために本発明のディスク装置に代表される回転型記憶装置は、アクセスパタンの特徴に基づき、回転待ち時間を利用した先読みのアクセス領域を決定するようにした。すなわち、本発明の代表的なディスク装置は、ディスクと、ヘッドと、キャッシュメモリとを装備し、リード要求データがキャッシュメモリに格納されていない場合に、リード要求データを、ヘッドを通じてディスクから読み出してキャッシュメモリに転送するディスク装置であって、
リード要求データが格納されているトラックへのシークを終了後、リード要求データにヘッドがアクセスするまでにかかるディスク回転待ち時間に、リード要求データより前のアドレスに格納されているデータを、ヘッドを通じてディスクから読み出してキャッシュメモリに転送する先行データ先読み手段と、
リード要求データをキャッシュメモリに転送した後、リード要求データの直後に格納されているデータを、ヘッドを通じてディスクから読み出してキャッシュメモリに転送する後続データ先読み手段と、
前記後続データ先読み手段が先読みを実行中、後続のコマンドにおいてリード要求データをキャッシュメモリに転送する必要が生じた場合に、前記先行データ先読み手段に先読みを実行させた時に発生するであろう回転待ち時間を予測する回転待ち時間予測手段と、
予測回転待ち時間を、コマンドを受領する直前のコマンド群のアクセスパタンの特徴に基づき、実行中の後続データの先読み手段とコマンドのリード要求データに先行するデータの先読み手段に割り当てる手段と、を有する。
【００１２】
また、上記第２の課題を解決するために本発明のディスク装置は、リードコマンドにより指定される論理ブロック・アドレス（Logical Block Address(LBA)）を用いてアクセスの方向及びアクセス間隔を分析することにより、アクセスパタンとその特徴を抽出するようにしている。
【発明の効果】
【００１３】
本発明によれば、リードアクセスのパタンの特徴に基づき回転待ち時間を利用した先読みのアクセス領域を決定することで、キャッシュのヒット率を向上させ、データの転送速度を上げることが可能である。特に映像など、シーケンシャルに書き込まれたデータの読み出し処理（巻き戻し処理や早送り処理）を高速化することが可能である。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施例を図面により説明する。
図２は本発明の一実施例による磁気ディスク装置の構成例を示す図である。磁気ディスク装置（以下ディスク装置）は、制御プログラムを実装するプログラムROM１０１、キャッシュ内部のデータおよび、主にキャッシュ領域に関するデータを管理するテーブルを記憶するRAM１０２、ディスク装置内部の時刻を管理・設定するTimer１０３、上記、ROM１０１、RAM１０２、Timer１０３を内蔵し、ROM１０１上の制御プログラムを読み込み実行する制御プロセッサ１０４、リード要求データ/ライト要求データを一時的に書き込むキャッシュメモリ１０５、ホストとキャッシュメモリ１０５及びキャッシュメモリ１０５と磁気ディスク（以下ディスク）１０６の間のデータ転送を制御するハードディスク制御装置（以下HDC）１０７、データの読み書きをする際に指定された位置にヘッドを移動するための制御を行うサーボ制御回路１０８、サーボ制御回路１０８の指示に従って、ヘッドを移動するボイスコイルモータ（VCM）１０９、ディスクの回転を制御するモータドライバ１１０、ヘッドを通じて読み込んだ磁気信号から指定されたヘッドの信号だけを選択するセレクタ１１１、セレクタ１１１から送られたアナログデータをディジタルデータに変換する、またはHDC１０７から送られたディジタルデータをアナログデータに変換する信号処理回路１１２、リード用ゲートを開閉することにより、信号処理回路１１１より送られたリードデータをキャッシュメモリ１０５に転送し、また、ライト用ゲートを開閉することにより、キャッシュメモリ１０５より転送されるライトデータを信号処理回路１１２に転送するディスクフォーマッタ１１３、コマンドやデータをやり取りするホストインタフェース１１４よりなる。
【００１５】
図３にアクセスパタンの特徴に基づき回転待ち時間を利用した先読みを制御する処理のフローを示す。ディスク装置は、アクセスパタンを抽出し（ステップ２０１：処理内容は図１０および図１４を参照）、パタンが抽出された場合（ステップ２０２）、抽出されたアクセスパタンの特徴に応じた先読み制御を実行する（ステップ２０３：処理内容は図１および図１２を参照）。アクセスパタンが抽出できなかった場合は、従来の先読み制御を実行する（ステップ２０４：処理内容は図１６を参照）。なお、本実施例では以下に説明する処理は制御プロセッサ１０４で実行されるが、制御プロセッサ１０４以外の制御装置、例えばHDC１０７等で実行されても良い。
【００１６】
図１に、アクセスに方向性のあるパタンに対する先読み制御のフローを示す。ディスク装置は、コマンドを受領すると、アクセスに方向性のあるパタンの継続判定を行う（ステップ３０１）。アクセスの方向性は論理ブロック・アドレス（Logical Block Address(LBA)）により分析し、LBAの大小比較により、プラス方向またはマイナス方向として判断する。その継続性が確認されると（ステップ３０２）、当該コマンドにおいて、回転待ちが発生するかチェックする（ステップ３０３）。回転待ちが発生する場合はプラス方向のアクセスかどうかをチェックし（ステップ３０４）、プラス方向のアクセスであれば、先行コマンドの後続データの先読みのみを行う（ステップ３０５）。その後、最新コマンドを基準コマンドとして設定する（ステップ３０６）。なお、基準コマンドとは、アクセスパタンの継続性を判断するための基準となるコマンドのことである。ステップ３０４に戻り、アクセスの方向がプラス方向のアクセスかどうかをチェックし、プラス方向のアクセスでなかったならば、後続コマンドの先行データの先読みのみ行う（ステップ３０７）。
【００１７】
また、ステップ３０２に戻り、アクセスパタンの継続性が確認されなかった場合は、コマンドをN回検索したかチェックし（ステップ３０８）、コマンドをN回検索していた場合には処理を終了する。また、コマンドをN回検索したかチェックし（ステップ３０８）、コマンドをN回検索していなかった場合には、パタンの継続判定処理（処理３０１）に戻る。
【００１８】
図４にアクセスに方向性のあるリードアクセスの例を示す。図４の例では、リードコマンドR1〜R11が、コマンド番号順に連続して発行されている。R1〜R11はすべて、LBAのマイナス方向のアクセスであり、また、それぞれのコマンドのリード要求データは、直前に発行されたリードコマンドのリード要求データとSectors Per Track（SPT）距離以内となっている。なお距離は、直前に発行されたリードコマンドのリード要求データの開始アドレスと当該コマンドのリード要求データの開始アドレスとの距離として分析している。
【００１９】
図５に図４のアクセスパタンを従来の先読み制御で実行した場合の先読みの動作の例を示す。図５で、白抜きの矢印は、リード要求データの後続データの先読みを示し、実線の矢印は、リード要求データの先行データの先読みを示している。また、Missはキャッシュミス(Cache miss)を示し、破線の矢印はシークを示している。従来の先読み制御を適用した場合、連続してLBAのマイナス方向にリードアクセスするパタンでキャッシュミスが発生した場合に発生する回転待ち時間は、キャッシュミスが生じた後続コマンドのリード要求データに先行するデータの先読みと、先行コマンドのリード要求データに後続するデータの先読みに充てられる。発生した回転待ち時間が前後２つのコマンドの先読みに充てられるため、コマンド間のアクセス距離が、図４で示したように、SPT距離以内となるような場合であっても、連続してキャッシュミスが多発する場合があった。
【００２０】
そこで、図4のようなアクセスパタンに対しては、図１の制御フローで示したように、アクセスの方向性と同じ方向の先読み処理に回転待ち時間をすべて充てることとした。図６に、図１で説明した本実施例のディスク装置で実行する先読み制御を、図４のアクセスパタンに適用した場合の動作の例を示す。なお、図６の動作は、図４のアクセスパタン抽出後に受領したコマンドの処理動作を示している。図６で白抜きの矢印は、リード要求データの後続データの先読みを示し、実線の矢印は、リード要求データの先行データの先読みを示している。また、Missはキャッシュミス(Cache miss)を、Hitはキャッシュヒット(Cache hit)を示し、破線の矢印はシークを示している。従来の先読み制御を適用したときの図５に示した動作との違いは、発生する回転待ち時間をアクセスの方向性と同じ方向の先読みのみに充てるので、アクセスと同じ方向の先読みの量が多くなることである。そのため、LBAのマイナス方向にアクセスする後続コマンドにおいてキャッシュヒット率が増すことになる。
【００２１】
図７にアクセスに方向性のあるパタンのもう１つの例を示す。図７の例では、リードコマンドR1〜R11が、コマンド番号順に連続して発行されている。R１、R4、R７、R1０はコマンドの発行順では非連続であるが、R１、R4、R７、R1０の関係を調べるとLBAのプラス方向でのアクセスとなっている。また、R１、R4、R７、R1０においては、直前リードコマンドのリード要求データとの距離がSectors Per Track（SPT）距離以内となっている。なお距離は、直前に発行されたリードコマンドのリード要求データの開始アドレスと当該コマンドのリード要求データの開始アドレスとの距離として分析している。
【００２２】
図８に図７のアクセスパタンを従来の先読み制御で実行した場合の先読みの動作の例を示す。従来の回転待ちを利用した先読み制御では、発生する回転待ち時間は、図１６と図１７を使って説明したように、先行コマンドの後続データの先読みと後続コマンドの先行データの先読みに充てられる。従来の先読み制御では、連続してLBAのプラス方向にリードアクセスするパタンでキャッシュミスが発生した場合、発生する回転待ち時間は、キャッシュミスが生じた後続コマンドのアクセスデータの先行データの先読みと、先行コマンドの後続データの先読みに充てられる。発生した回転待ち時間が前後２つのコマンドの先読みに充てられるため、図７で示すようなアクセスパタンでは、図８に示すように、連続してキャッシュミスが多発してしまう場合があった。
【００２３】
そこで、図７で示すようなアクセスパタンに対しては、図１の制御フローで示したように、アクセスの方向性と同じ方向の先読み処理に、回転待ち時間をすべて充てることとした。図９に、図１で説明した本実施例のディスク装置で実行する先読み制御を図７のアクセスパタンに適用した場合の動作の例を示す。図９で白抜きの矢印は、リード要求データの後続データの先読みを示し、実線の矢印は、リード要求データの先行データの先読みを示している。また、Missはキャッシュミス(Cache miss)を、Hitはキャッシュヒット(Cache hit)を示し、破線の矢印はシークを示している。なお、図９の動作は、図９のアクセスパタン抽出後に受領したコマンドにおける動作を示している。従来の先読み制御を適用したときの図８に示した動作との違いは、発生する回転待ち時間をアクセスの方向と同じ方向の先読みのみに充てるので、アクセスパタンの方向の先読みの量が多くなることである。そのため、図７で示したようなLBAのプラス方向にアクセスするパタンが継続する場合、キャッシュのヒット率が増すことになる。
【００２４】
以上説明したように本実施例によれば、リードアクセスのパタンの特徴に基づき回転待ち時間を利用した先読みのアクセス領域を決定することで、キャッシュのヒット率を向上させ、データの転送速度を上げることが可能である。特に映像など、シーケンシャルに書き込まれたデータの読み出し処理（巻き戻し処理や早送り処理）を高速化することが可能である。
【００２５】
次に、図１０を用いて図４または図７で示したようなアクセスに方向性のあるパタンを抽出するための制御を説明する。なお、図１０の制御フローは、リードコマンドのみを扱うこととする。最新のN個のコマンドのアクセス情報を登録する（ステップ１２０１）。なお、アクセス情報とは、コマンドごとに設定されているLBAで示されたアクセス開始アドレス(リード要求データの開始アドレス)のことである。また、以下では、アクセスの方向性およびアクセス間隔はLBAで示されたアクセス開始アドレスにより判断されることとする。コマンドの発行順にしたがってアクセス開始アドレスのLBAが大きくなる場合はプラス方向、コマンドの発行順にしたがってアクセス開始アドレスのLBAが小さくなる場合はマイナス方向として判断する。またアクセス間隔は、各コマンドのアクセス開始アドレスの距離として求める。
【００２６】
最新Nコマンド登録後（ステップ１２０１）、新たにコマンドを受領すると、最新コマンドが過去のNコマンドとSPT距離以内にあるかを調べる（ステップ１２０２）。過去の最新Nコマンド分のアクセス開始アドレス（LBA）と比較してSPT距離以内にあれば、この最新コマンドを基準コマンドとして選択する（ステップ１２０３）。次に、その後に受領した最新コマンドが基準コマンドとSPT距離以内にあるかを調べ（ステップ１２０４）、SPT距離以内にある場合には、受領した最新コマンドが、基準コマンドと同じLBA方向にアクセスするかを調べ（ステップ１２０５）、同じ方向にある場合は、プラス方向のアクセスかを調べ（ステップ１２０６）、プラス方向のアクセスであれば、プラス方向のフラグを設定し（ステップ１２０７）、プラス方向のアクセス回数を１増やす（ステップ１２０８）。ステップ１２０６に戻り、プラス方向のアクセスかを調べ、プラス方向のアクセスでなければ、マイナス方向のフラグを設定し（ステップ１２０９）、マイナス方向のアクセス回数を１増やす（１２１０）。
【００２７】
プラスまたはマイナスのアクセス回数をカウントした後、カウントしたアクセス回数がT回を超えるか調べる（ステップ１２１１）。その結果、T回を超えた場合は最新コマンドと抽出したアクセスの方向性を保持して処理を終了する（ステップ１２１２、ステップ１２１３）。
【００２８】
ステップ１２０４に戻り、最新コマンドが基準コマンドとSPT距離以内にあるかを調べ、SPT距離以内にない場合、N回以上のコマンドを検索したかを調べ（ステップ１２１４）、N回検索していなければ、ステップ１２０４に戻る。N回以上検索したかを調べ、N回以上検索した場合は、基準コマンドの情報を破棄し（ステップ１２１５）、ステップ１２０１に戻る。ステップ１２０２に戻り、最新Nコマンド登録後、受領したコマンドが過去のNコマンドとSPT距離以内の関係にないならば、ステップ１２０１に戻る。以上の処理を実行することにより、アクセスに方向性のあるパタンを抽出することができる。
【００２９】
図１１にアクセスに方向性のあるリードアクセスのもう１つの例を示す。図１１の例では、リードコマンドR1〜R11が、コマンド番号順に連続して発行されている。R1〜R11はすべて、LBAのマイナス方向に連続してアクセスしており、また、R１とR３、R３とR５、R５とR７、R７とR９、R９とR１１のコマンドのアクセス間隔は、２つ前に発行されたリードコマンドと一定距離のアクセスとなっている。このアクセスの特徴は、連続して同一の方向にアクセスし、さらに、コマンドが一つ置きに一定距離間隔で規則的にアクセスされているという点にある。なお、一定距離とは、数十セクタの幅を持った距離を示すこととする。
【００３０】
図1２に図１１のアクセスパタンに対する制御のフローを示す。なお、図１２の制御フローは、図１１のパタン抽出後の処理である。図１１のパタンのように、アクセスの方向性とアクセス間隔に規則性がある場合は、その後のコマンドにおいてアクセスされる領域をある程度予測することが可能である。そのため、そのアクセスパタンの特徴を利用して、後続のコマンドでアクセスされる領域を予測しながら先読みを行うことが可能である。まず、図１１のアクセスパタンの継続判定を行う（ステップ１４０１：処理内容は図１５を参照）。アクセスパタンの継続を確認し（ステップ１４０２）、アクセスパタンの継続が確認されると受領したコマンドにおいて回転待ちが発生するかを調べる（ステップ１４０３）。回転待ちが発生すると判断された場合には、予測アクセス領域にアクセスした場合のアクセス時間を求める（ステップ１４０４）。なお、このアクセス時間は、現ヘッドの位置から、予測アクセス領域にアクセスし、受領したコマンドのターゲットデータにアクセスするまでにかかるアクセス時間を意味する。
【００３１】
図１３に図１１で示したアクセスパタンにおけるリードデータのディスク上のデータ配置の例を示す。図１３の例では、RN（１５０１）、R（N+1）（１５０２）のコマンドが発行されている。なお、図１１で示したアクセスパタンの特徴より、RN（１５０１）のコマンドを受領した時点で、R(N+2)（１５０３）でアクセスされる領域を予測することが可能である。そのため、R(N+1) （１５０２）のコマンドを受領した時点で、現ヘッドからR(N+2)（１５０３）のアクセス予測領域にアクセスし、さらにR(N+1) （１５０２）にアクセスするための時間（２回のシーク時間（シーク１５０４、シーク１５０５）と回転待ち時間（１５０６）の合計）も算出することが可能である。
【００３２】
図１２に戻り、発生する回転待ち時間は予測アクセス領域にアクセスした場合のアクセス時間より多いかをしらべ（ステップ１４０５）、多い場合は予測領域にアクセスして先読みした後、ターゲットデータを読み出す（ステップ１４０６）。その後、最新コマンドを基準コマンドとして設定する（１４０７）。また、発生する回転待ち時間が予測アクセス領域にアクセスした場合のアクセス時間以下の場合は従来の先読みを実施し（ステップ１４０８）、その後、最新コマンドを基準コマンドとして設定する（ステップ１４０７）。
【００３３】
ステップ１４０２に戻り、アクセスパタンが継続しているかを調べ、継続が確認できなかった場合には、コマンドをN回以上検索したか調べ（ステップ１４０９）、N回以上検索していなければ１４０１の処理に戻る。また、コマンドをN回以上検索したか調べ、N回以上検索していた場合は処理を終了する。
【００３４】
以上のとおり、リードアクセスパタンに図１１に示すような特徴がある場合、その特徴を抽出して、特徴に応じた回転待ち時間を利用した先読みのアクセス領域を決定することで、キャッシュのヒット率を向上させ、データの転送速度を上げることが可能である。
【００３５】
次に、図１４を用いて、図１１に示したアクセスパタンを抽出するための制御を説明する。なお、図１４の制御フローは、リードコマンドのみを扱うこととする。ディスク装置は、最新のN個のコマンドのアクセス情報を登録する（ステップ１６０１）。なお、アクセス情報とは、コマンドごとに設定されているLBAで示されたアクセス開始アドレスのことである。また、以下では、アクセス距離およびアクセスの方向性はLBAで示されたアクセス開始アドレスにより判断されることとする。
【００３６】
次に登録されたコマンドと同一方向にアクセスするコマンドがあるかを調べる（ステップ１６０２）。該当するコマンド群がない場合はステップ１６０１に戻る。該当するコマンド群がある場合は、コマンド群の１つを選択する（ステップ１６０３）。次に選択したコマンドを起点としてアクセス距離を測定し、その結果を登録する（ステップ１６０４）。すべてのコマンドを起点として距離を測定したかを調べ（ステップ１６０５）、すべてのコマンドを起点にして距離を測定した場合は、それぞれの距離の差が数十セクタ以内となっているコマンドを調べる（ステップ１６０６）。距離の差が数十セクタ以内となっているコマンドがある場合は、距離の差が数十セクタ以内となっているアクセスパタンがＹ回以上繰り返されているかを調べる（ステップ１６０７）。Ｙ回以上繰り返されている場合は、最新コマンドを基準コマンドとして設定する（ステップ１６０８）。なお、基準コマンドとは、対象となるアクセスパタンの継続を判定する際に基準となるコマンドのことである。次にこのアクセスパタンのアクセス距離の代表値を保存する（ステップ１６０９）。
【００３７】
ステップ１６０７に戻り、Ｙ回以上繰り返されていない場合は、ステップ１６０１以降を繰り返す。ステップ１６０６に戻り、コマンド間の距離が数十セクタ以内の差となっているコマンドがない場合は、ステップ１６０１以降を繰り返す。ステップ１６０５に戻り、すべてのコマンドを起点として距離を測定していない場合はステップ１６０３以降を繰り返す。
【００３８】
図１５に図１４の制御フローで抽出したアクセスパタンの継続判定をする制御のフローを示す。アクセスパタン抽出後に受領したコマンドが連続して同一方向にアクセスするコマンドであるかを調べ（ステップ１７０１）、同一方向にアクセスするコマンドであれば、基準コマンドとの距離が抽出したアクセスパタンのアクセス距離と数十セクタ以内の差になっているかを調べる（ステップ１７０２）。基準コマンドとの距離が抽出したアクセスパタンのアクセス距離と数十セクタ以内の差になっていれば、アクセスパタン継続と判定し（ステップ１７０３）、処理を終了する。また、基準コマンドとの距離が抽出したアクセスパタンのアクセス距離と数十セクタ以内の差になっていなければ、アクセスパタン非継続と判定し（ステップ１７０４）、処理を終了する。ステップ１７０１に戻り、連続して同一方向にアクセスするコマンドであるか調べ、同一方向にアクセスするコマンドでなければ、アクセスパタン非継続と判定し（ステップ１７０４）、処理を終了する。
【００３９】
以上の説明のとおり、本発明の実施例による、アクセスパタンの特徴に基づき回転待ちを利用した先読みのアクセス領域を決定する先読み制御は、キャッシュのヒット率を向上させ、データの転送速度を上げることが可能である。特に映像など、シーケンシャルに書き込まれたデータの読み出し処理（巻き戻し処理や早送り処理）の高速化に生かすことが可能である。
【図面の簡単な説明】
【００４０】
【図１】本発明の一実施例におけるアクセスパタン継続判定後の先読み制御を示すフローチャートである。
【図２】本発明の一実施例による磁気ディスク装置の構成例を示すブロック図である。
【図３】本発明の一実施例におけるアクセスパタンの有無により先読み制御方法を切り替える制御を示すフローチャートである。
【図４】マイナス方向のリードアクセスでかつコマンドごとのアクセス間隔がSPT距離以内となるアクセスパタンの例を示す図である。
【図５】図４のアクセスパタンを従来の先読み制御で処理した場合の動作例を示す図である。
【図６】図４のアクセスパタンを実施例による先読み制御で処理した場合の動作例を示す図である。
【図７】非連続に発行されたリードコマンドがプラス方向のアクセスでかつコマンドごとのアクセス間隔がSPT距離以内となるアクセスパタンの例を示す図である。
【図８】図７のアクセスパタンを従来の先読み制御で処理した場合の動作例を示す図である。
【図９】図７のアクセスパタンを実施例による先読み制御で処理した場合の動作例を示す図である。
【図１０】図４及び図７のアクセスパタンを抽出する処理を示すフローチャートである。
【図１１】リードコマンドのアクセスに方向性があり、非連続なコマンド間のアクセス間隔が一定距離以内となるアクセスパタンの例を示す図である。
【図１２】図１１のアクセスパタンを実施例による先読み制御で処理する場合のフローチャートである。
【図１３】図１１のアクセスパタンのディスク上の配置の一例と、実施例による先読み制御で処理した場合の動作例を示す図である。
【図１４】図１１のアクセスパタンを抽出する処理を示すフローチャートである。
【図１５】図１１のアクセスパタンの継続を判定する処理を示すフローチャートである。
【図１６】従来の回転待ちを利用した先読み制御を示すフローチャートである。
【図１７】図１６の先読み制御を適用した場合の動作例を示す図である。
【符号の説明】
【００４１】
１０１：ROM、
１０２：RAM、
１０３：Timer、
１０４：制御プロセッサ、
１０５：キャッシュメモリ、
１０６：磁気ディスク、
１０７：ハードディスク制御装置(HDC)、
１０８：サーボ制御回路、
１０９：ボイスコイルモータ(VCM)
１１０：モータドライバ、
１１１：セレクタ、
１１２：信号処理回路、
１１３：ディスクフォーマッタ、
１１４：ホストインタフェース。
【図１】
2007304691.tif 000003
【図２】
2007304691.tif 000004
【図３】
2007304691.tif 000005
【図４】
2007304691.tif 000006
【図５】
2007304691.tif 000007
【図６】
2007304691.tif 000008
【図７】
2007304691.tif 000009
【図８】
2007304691.tif 000010
【図９】
2007304691.tif 000011
【図１０】
2007304691.tif 000012
【図１１】
2007304691.tif 000013
【図１２】
2007304691.tif 000014
【図１３】
2007304691.tif 000015
【図１４】
2007304691.tif 000016
【図１５】
2007304691.tif 000017
【図１６】
2007304691.tif 000018
【図１７】
2007304691.tif 000019