(57)【特許請求の範囲】
【請求項１】
記憶領域が複数のセグメントに分割され、各セグメントに上位のホストコンピュータと記録媒体との間で転送されるデータを一時格納するセグメントキャッシュ方式のキャッシュメモリと、
前記キャッシュメモリに対するデータの読み書き制御、このキャッシュメモリに格納されたデータの管理及び検索を行うキャッシュメモリ管理手段とを備え、記録媒体に対して情報の記録再生を行う情報記録再生装置であって、
前記キャッシュメモリは、前記キャッシュメモリ管理手段の動作プログラム及び管理データ格納用メモリの条件に応じて決定される最適なセグメント数に基づき、該キャッシュメモリの記憶領域を分割するセグメント数を設定すると共に、このセグメント数が得られるよう該キャッシュメモリの記憶容量に対応させて各セグメントの大きさを設定してなることを特徴とする情報記録再生装置。
【請求項２】
前記キャッシュメモリのセグメント数は、前記キャッシュメモリ管理手段の管理データ格納用メモリの容量に応じて設定可能な最大のセグメント数に設定することを特徴とする請求項１に記載の情報記録再生装置。
【請求項３】
前記キャッシュメモリは、前記セグメント数を有するよう複数のセグメントに分割され、該キャッシュメモリの記憶容量の大小に対応して各セグメントの大きさを増減して設定することを特徴とする請求項１に記載の情報記録再生装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、上位のホストコンピュータと記録媒体との間で転送されるデータを高速アクセス可能なキャッシュメモリに一時格納し、記録処理や再生処理の高速化を図る情報記録再生装置に関する。
【０００２】
【従来の技術】
一般に光ディスク装置などの情報記録再生装置は、情報処理装置におけるホストコンピュータの外部記録装置として用いられているが、記録媒体に対するデータの書き込み処理及び読み出し処理はホストコンピュータとの間でのデータ転送処理速度よりも遅いため、近年では中間にキャッシュメモリを設け、このキャッシュメモリを介してデータ転送を行うことにより、データの記録処理や再生処理の高速化を図ったものが用いられてきている。特に、光ディスクを記録媒体として用いる光ディスク装置では、記録媒体への書き込み処理に多くの時間がかかるため、記録データや再生データを一時格納するディスクキャッシュメモリを設けたものが一般的である。
【０００３】
このようなキャッシュメモリを備えた装置として、例えば特開平２−１２２３４５号公報に開示されている記憶制御装置では、データの読み出し要求があった場合に、ホストコンピュータから要求されたデータと共に、さらに先のブロックのデータをあらかじめ先読みするようにした、いわゆるリードアヘッド方式のキャッシュメモリ装置が提案されている。この構成によれば、ホストコンピュータから要求されたデータにおいて、キャッシュメモリに格納されているデータについては記録媒体から読み出さずにキャッシュメモリよりホストコンピュータに転送することによって、読み出し処理時のアクセスタイムを短縮でき、さらに、先読み処理によって読み出し時のキャッシュメモリのヒット率を向上させることが可能である。
【０００４】
また、書き込み処理時のアクセスタイムを向上させるため、データをキャッシュメモリに一旦書き込んだ後、ＣＰＵの処理の空き時間に記録媒体にデータを書き込むライトバック方式のキャッシュメモリを備えた装置が提案されている。
【０００５】
このような情報記録再生装置では、一般にキャッシュメモリには記憶領域を連続的に繰り返して使用するリングバッファ方式のものを用いているため、書き込み処理時及び読み出し処理時においてキャッシュメモリに格納されているデータの検索を行うことができない。従って、場合によってはキャッシュの効果を十分発揮できないという問題点があった。
【０００６】
そこで、特開平３−１７６７２６号公報等において、キャッシュメモリの記憶領域を複数のセグメントに分割して使用するセグメントキャッシュ方式のキャッシュメモリを備えた装置が提案されている。このようなセグメントキャッシュ方式のキャッシュメモリを用いることにより、例えば読み出し処理時において以前の書き込み処理時にキャッシュメモリに格納したデータを検索することができ、該当するデータが存在する場合にキャッシュメモリから読み出してホストコンピュータへ転送することによって処理速度を向上できる。
【０００７】
【発明が解決しようとする課題】
従来のセグメントキャッシュ方式のキャッシュメモリでは、分割するセグメント数や各セグメントの大きさなどについてあまり考慮されておらず、ランダムなライトコマンドを連続して受信した場合など、場合によっては十分なパフォーマンスが得られないという問題点があった。また、コントローラの動作プログラムに共通のファームウェアを用いて装置のコストダウンを図る場合などに、各セグメントの大きさを固定してしまうとキャッシュメモリの容量によってはセグメント数が小さくなってしまい、十分なキャッシュメモリの効果が得られないという問題点がある。
【０００８】
本発明は、これらの事情に鑑みてなされたもので、セグメントキャッシュ方式のキャッシュメモリを用いる場合に、キャッシュメモリの管理手段の条件に応じて最適なセグメント数のセグメントキャッシュ領域を設定してキャッシュメモリの十分なパフォーマンスを得ることができ、リード時及びライト時の処理速度を向上させることが可能な情報記録再生装置を提供することを目的としている。
【０００９】
【課題を解決するための手段】
本発明による情報記録再生装置は、記憶領域が複数のセグメントに分割され、各セグメントに上位のホストコンピュータと記録媒体との間で転送されるデータを一時格納するセグメントキャッシュ方式のキャッシュメモリと、前記キャッシュメモリに対するデータの読み書き制御、このキャッシュメモリに格納されたデータの管理及び検索を行うキャッシュメモリ管理手段とを備え、記録媒体に対して情報の記録再生を行う情報記録再生装置であって、
前記キャッシュメモリは、前記キャッシュメモリ管理手段の動作プログラム及び管理データ格納用メモリの条件に応じて決定される最適なセグメント数に基づき、該キャッシュメモリの記憶領域を分割するセグメント数を設定すると共に、このセグメント数が得られるよう該キャッシュメモリの記憶容量に対応させて各セグメントの大きさを設定してなるものである。
【００１０】
この構成により、キャッシュメモリは最適なセグメント数で複数のセグメントに分割され、リード時及びライト時にキャッシュメモリの十分なパフォーマンスが発揮される。
【００１１】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
図１ないし図８は本発明の一実施形態に係り、図１は情報記録再生装置の構成を示すブロック図、図２はキャッシュメモリの内部構成を示す機能ブロック図、図３はタグの構成及びタグテーブルを示す機能ブロック図、図４はセグメント情報となる各フラグの構成を示す機能ブロック図、図５はセグメント情報テーブルを示す機能ブロック図、図６はリードコマンドに対する動作を示すフローチャート、図７はライトコマンドに対する動作を示すフローチャート、図８は本実施形態におけるセグメントの分割方法を示す作用説明図である。
【００１２】
本実施形態では、情報記録再生装置の一例として光磁気ディスクを用いて記録再生を行う光磁気ディスクドライブ装置の構成例を示す。情報記録再生装置は、ホストコンピュータとインターフェースケーブルを介して接続されＳＣＳＩによるコマンドやデータのやり取りを制御（プロトコル制御）するＳＣＳＩ制御部２と、ＳＣＳＩ制御部２に接続され、記録媒体としてのディスク９に対するデータのやり取りを制御するディスク制御部３と、ディスク９に対して読み書きを行うデータを一時格納するキャッシュメモリ４と、装置各部の動作を制御するＣＰＵ５と、ＣＰＵ５の動作プログラムを格納するファームウェアプログラム格納部６と、ＣＰＵ５の動作時のデータ等を格納する作業エリアとなるメインメモリ７と、ディスク９に対するデータの記録／再生を行う記録再生ヘッドを制御するリード／ライト制御部８と、を有して構成されている。
【００１３】
キャッシュメモリ４は、図１の右下に示すように、ディフェクトデータ（ディスク管理情報）が格納されるディスク管理領域４ａ、ディフェクトデータ読み込み用のバッファとなるディフェクトバッファ領域４ｂ、複数のセグメントに分割されてディスク９に対して読み書きを行うデータが一時格納されるセグメントキャッシュ方式のキャッシュメモリ領域であるセグメントキャッシュ領域４ｃ、記憶領域を連続的に繰り返して使用するリングバッファ方式のキャッシュメモリ領域であるリングバッファ領域４ｄの各領域が設けられて構成されている。
【００１４】
メインメモリ７は、ＣＰＵ５の動作プログラム実行時の各変数（スタック領域，グローバル変数等）が格納されるドライブ管理データ領域７ａ、セグメントキャッシュ領域４ｃの管理データ（タグテーブル，セグメント情報等）が格納されるセグメントキャッシュ管理データ領域７ｂ、リード／ライトコマンドに関するリード／ライトパラメータキューが格納されるリード／ライト管理データ領域７ｃの各領域が設けられて構成されている。
【００１５】
上記構成において、ホストコンピュータから転送されてくるコマンド及びデータは、ＳＣＳＩ制御部２を介してディスク制御部３へ送られる。例えばコマンドがライトコマンドである場合、書き込みデータがキャッシュメモリ４のセグメントキャッシュ領域４ｃに格納され、この書き込みデータに関する管理データがメインメモリ７のセグメントキャッシュ管理データ領域７ｂに格納される。また、ライトコマンドに関する管理データがメインメモリ７のリード／ライト管理データ領域７ｃに格納される。ＣＰＵ５は、全てのデータを受け取るとディスク制御部３，ＳＣＳＩ制御部２を介してホストコンピュータへライトコマンド処理の完了を返送すると共に、前記各管理データに基づいてリード／ライト制御部８に指示を送り、処理の空き時間にキャッシュメモリ４からデータを読み出してディスク９に対してデータの書き込みを行う。すなわち、本実施形態の情報記録再生装置は、主にセグメントキャッシュ方式のキャッシュメモリを使用する構成となっている。
【００１６】
前記キャッシュメモリ４内のセグメントキャッシュ領域４ｃの構造を図２に示す。セグメントキャッシュ領域４ｃは、キャッシュメモリとしてのデータ領域全体が大きさの等しい複数の部屋（セグメント）に分割されており、各セグメントに０〜ｎ−１（ｎはセグメントの個数）の番号が付されている。本実施形態では、セグメントキャッシュ領域４ｃの容量（例えば５１２ｋＢ，２ＭＢなど、以下、バッファサイズとも称する）に関わらず、セグメントの個数を最適な値で一定（例えばｎ＝８０〜１００）とし、バッファサイズの大小に対応して１セグメントの大きさを増減して設定し、前記セグメント数を有するよう複数のセグメントに分割するような構造となっている。ここでは、キャッシュメモリ上のデータを格納する最小単位をブロック（例えば１ブロック＝１セクタ＝５１２バイト）とし、１セグメント＝８ブロックの場合を示している。
【００１７】
これに対し、リングバッファ領域４ｄは、最低限２ブロック分の容量が必要であり、通常は２ブロックだけ設けられている。
【００１８】
次に、図３ないし図５を参照してセグメントキャッシュ管理データの構造を説明する。ライトコマンドやリードコマンドは、ＬＢＡ（論理ブロックアドレス）とレングス（データの長さ）を有しており、これらによってコマンドに対応するデータの媒体上の書き込み位置が表されており、キャッシュメモリ４に格納する際には前記ＬＢＡをセグメントＬＢＡに変換してキャッシュメモリ４上の格納位置を設定する。セグメントＬＢＡは、例えば１セグメント＝８ブロックの場合、８の倍数となっている。
【００１９】
前記セグメントＬＢＡとこれに対応するセグメント番号の組をタグと呼び、図３に示すように、これらのタグをセグメントＬＢＡの順にソートして配列したタグテーブルがメインメモリ７のセグメントキャッシュ管理データ領域７ｂに設けられている。このタグテーブルに格納された情報により、ＬＢＡからセグメント番号を求めることができる。なお、タグテーブルにはテーブル上にあるタグのエントリー数が格納されている。
【００２０】
また、セグメントキャッシュ管理データ領域７ｂには、図４に示すようにダーティフラグ、アクティブフラグ、有効データフラグ、バッファアドレスからなるセグメント情報を図５に示すようにセグメント番号の順に配列したセグメント情報テーブルが設けられている。
【００２１】
ダーティフラグは、未書き込みのデータが存在する場合にセットされるものである。アクティブフラグは、データが媒体への書き込み中又は媒体からの読み込み中である場合にセットされるものである。有効データフラグは、有効なデータが存在する場合にセットされるものである。これらのフラグは、各セグメントのブロック数分（例えば１セグメント＝８ブロックの場合０〜７の８ビット分）設けられる。バッファアドレスは、各セグメントが対応するバッファ（セグメントキャッシュ領域）上の先頭アドレスを示したものである。これらのセグメント情報は、セグメント番号の順に配列されて図５に示すセグメント情報テーブルとしてセグメントキャッシュ管理データ領域７ｂに格納される。
【００２２】
なお、セグメントキャッシュ管理データ領域７ｂには、データ転送に関する転送パラメータキューも格納されるようになっている。
【００２３】
図６のフローチャートを基にリードコマンド受信時の動作を説明する。ＣＰＵ５は、リードコマンドを受信するとまずステップＳ１で、読み出すべきデータの残りブロック（未リードのブロック）があるか否か、すなわちリードコマンドに対するデータの読み出し処理が完了したかを判断し、残りブロックがある場合はステップＳ２以降の処理を実行する。
【００２４】
ステップＳ２では、キャッシュメモリ４のセグメントキャッシュ領域４ｃにおいてリードコマンドのＬＢＡに該当するデータを格納したセグメントがあるか否か、すなわちリード要求されたデータがキャッシュメモリ内に存在しキャッシュヒットしたか否かを判断し、該当するセグメントがある場合は、ステップＳ３に進んでキャッシュメモリ４から該当するデータを読み出してホストコンピュータへ転送する。このキャッシュヒットの判断は、メインメモリ７のセグメントキャッシュ管理データ領域７ｂに格納されたタグテーブルを検索することによって容易に実行できる。そしてステップＳ４で、残りブロック数と次に処理するＬＢＡの更新を行い、ステップＳ１からの処理を繰り返す。
【００２５】
このように、セグメントキャッシュ領域４ｃを使用することにより、リード要求されたデータが以前の書き込み処理などで書き込まれてキャッシュメモリ４上に存在するか否かを容易に検索することができ、キャッシュヒットした場合はキャッシュメモリ４から読み出してホストコンピュータへ転送することで処理速度を向上できる。
【００２６】
一方、ステップＳ２で該当するセグメントがない場合は、ステップＳ５でディスク９から読み出さなければならないブロック数を求めた後、ステップＳ６において前記求めたブロック数よりキャッシュメモリ４への読み込みが一度に可能か否かを判断し、可能である場合はステップＳ７でリードアヘッド（先読み）するブロック数を求める。そしてステップＳ８で、ディスク９からキャッシュメモリ４のセグメントキャッシュ領域４ｃへ目的のデータを読み出すと共に、キャッシュメモリ４からホストコンピュータへこのデータを転送する。その後、ステップＳ４の処理を実行してステップＳ１からの処理を繰り返す。
【００２７】
ステップＳ６でキャッシュメモリ４への読み込みが一度にできない場合は、ステップＳ９に進み、キャッシュメモリ４内のリングバッファ領域４ｄを使用してリングバッファ方式により、ディスク９から目的のデータを読み出すと共に、このデータをホストコンピュータへ転送する。その後、ステップＳ４の処理を実行してステップＳ１からの処理を繰り返す。
【００２８】
このように、リード時にセグメントキャッシュ領域４ｃにデータを一度に読み込めない場合は、リングバッファ領域４ｄに読み出したデータを格納することにより、一度のシーク動作で目的のデータを全てキャッシュメモリ４に読み出してホストコンピュータへ転送することができ、処理速度の向上が図れる。
【００２９】
前記処理ループを何度か実行してステップＳ１でリードコマンドの残りブロックが無くなると、データの読み出し処理が終了する。
【００３０】
次いで、図７のフローチャートを基にライトコマンド受信時の動作を説明する。ＣＰＵ５は、ライトコマンドを受信するとまずステップＳ１１で、書き込むべきデータの残りブロック（未ライトのブロック）があるか否か、すなわちライトコマンドに対するデータの書き込み処理が完了したかを判断し、残りブロックがある場合はステップＳ１２以降の処理を実行する。
【００３１】
ステップＳ１２では、キャッシュメモリ４においてライトコマンドのＬＢＡに該当するデータを格納したセグメントがあるか否か、すなわち以前のライトコマンド処理において同一のＬＢＡの書き込みデータを格納したセグメントがキャッシュメモリ内に存在するか否かを判断し、該当するセグメントがない場合は、ステップＳ１３に進んでデータを格納するセグメントを確保する。例えば、空きセグメントの中からセグメント番号の小さい順に確保していく。そしてステップＳ１４で、セグメントの確保が成功したか否かを判断し、セグメントが確保できない場合はステップＳ１５でセグメントに空きができるまで待ち、ステップＳ１１からの処理を繰り返す。セグメントの空きがない場合は、例えばＬＢＡの大きい順やセグメント番号の小さい順などで使用済みのセグメントのタグを解放する。
【００３２】
ステップＳ１４でデータを格納するセグメントが確保できると、ステップＳ１６に進み、ホストコンピュータからの書き込みデータをキャッシュメモリ４に受信し、前記確保したセグメントへ格納する。また、ステップＳ１２で該当するセグメントがある場合は、直接ステップＳ１６に進んで書き込みデータをキャッシュメモリ４に受信し、該当するセグメントへ上書きして格納する。
【００３３】
このように、同一のＬＢＡに対するライトコマンドを受信した場合は、同じセグメントに書き込みデータを格納することにより、キャッシュメモリの使用効率を向上させることができる。
【００３４】
書き込みデータをキャッシュメモリ４に格納した後、ステップＳ１７で、格納したデータに応じてタグテーブルのソート及びセグメント情報テーブルの書換えを行ってセグメント情報を更新する。そしてステップＳ１８で、残りブロック数と次に処理するＬＢＡの更新を行い、ステップＳ１１からの処理を繰り返す。
【００３５】
前記処理ループを何度か実行してステップＳ１１でライトコマンドの残りブロックが無くなると、書き込みデータの受信処理が終了する。そして、ＣＰＵ５はホストコンピュータへライトコマンド処理の完了を返送すると共に、処理の空き時間にキャッシュメモリ４からデータを読み出してディスク９に対してデータの書き込みを行う。
【００３６】
ここで、本実施形態におけるキャッシュメモリ４内のセグメントキャッシュ領域４ｃの分割方法について説明する。ここでは、セグメント数を８０で一定として考える。本実施形態では、セグメントキャッシュ領域の容量（バッファサイズ）が異なる複数種のメモリを使用して装置を構成する場合であって、コストダウンのために共通のファームウェアのプログラムによってドライブ装置の制御を行う場合において、メインメモリのセグメントキャッシュ管理データ領域の容量などキャッシュメモリを管理する手段の条件に応じて決定される必要十分な最適の値にセグメント数を設定して一定とし、異なるキャッシュメモリの容量に対応させて各セグメントの大きさ（ブロック数）を変化させる。
【００３７】
バッファサイズが５１２ｋＢでセグメント数が８０の場合に図８のＡに示すように１セグメント当たり８ブロックに分割されているとすると、バッファサイズが２ＭＢ（２０４８ｋＢ）でセグメント数が８０の場合には図８のＢに示すように１セグメント当たり３２ブロックとなる。
【００３８】
ホストコンピュータから４つのランダムのライトコマンド（ＬＢＡ＝０，５００，２５０，１００）を受信した場合、図８に示す同じ３２ブロック分のセグメントにおいて、これらのコマンドに対応する書き込みデータＷＤ１〜ＷＤ４を図８のＡの場合は全て格納することができるが、図８のＢの場合は１つのコマンドに対応する書き込みデータＷＤ１しか格納することができない。ただし、本実施形態のようにセグメントキャッシュ領域全体でセグメント数を同じにしておけば、例えば４０回ランダムのライトコマンドが連続発行された場合においても、セグメント数が８０であれば一度に書き込みデータを格納することができる。
【００３９】
すなわち、同じ容量のセグメントキャッシュ領域において、セグメント数を多くとればそれだけ多数のライトコマンドに対応して書き込みデータを格納することができる。セグメントキャッシュ領域の総セグメント数は、セグメントキャッシュ管理データ領域の容量によって制限され、またセグメント数をあまりにも大きくとりすぎるとキャッシュメモリ内のデータの検索に手間がかかってしまう。よって、前記セグメントキャッシュ管理データ領域の容量の制限の範囲内でキャッシュメモリのパフォーマンスが十分得られるようにセグメント数を設定すれば良い。例えば、装置条件で設定可能な最大のセグメント数に設定する。
【００４０】
逆に、１セグメント当たりのブロック数を一定（例えば３２ブロック）としてセグメント数を変化させると、バッファサイズが小さい場合はセグメント数が少なくなり、一度に格納できるライトコマンドの数が少なくなる。バッファサイズが２ＭＢで１セグメント当たり３２ブロックの場合にセグメント数が８０であるとすると、バッファサイズが５１２ｋＢで１セグメント当たり３２ブロックの場合にはセグメント数が２０となり、例えば４０回ランダムのライトコマンドが連続発行されるとバッファサイズが５１２ｋＢの場合は一度に書き込みデータを格納できず、一旦キャッシュメモリに空きができるのを待たなければならない。よって、ランダムのライトコマンドに対するパフォーマンスが低下してしまうおそれがある。
【００４１】
一方、本実施形態の構成では、セグメントキャッシュ管理データ領域の容量などキャッシュメモリを管理する手段の条件に応じてセグメント数を必要十分な最適の数に設定して一定とすることにより、バッファサイズが異なるキャッシュメモリを用いて構成した場合でもランダムのライトコマンドに対するパフォーマンスを等しくすると共に、リード時及びライト時の処理速度を向上させることができる。また、コストダウンのために共通のファームウェアのプログラムによって動作する制御部を用いてバッファサイズが異なるキャッシュメモリを使用する場合において、バッファサイズに関わらず最適なセグメント数に分割されたセグメントキャッシュ方式のキャッシュメモリを構成することができ、キャッシュメモリにおいて十分なパフォーマンスを得ることができる。
【００４２】
【発明の効果】
以上説明したように本発明によれば、セグメントキャッシュ方式のキャッシュメモリを用いる場合に、キャッシュメモリの管理手段の条件に応じて最適なセグメント数のセグメントキャッシュ領域を設定してキャッシュメモリの十分なパフォーマンスを得ることができ、リード時及びライト時の処理速度を向上させることが可能となる効果がある。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る情報記録再生装置の構成を示すブロック図
【図２】本実施形態におけるキャッシュメモリの内部構成を示す機能ブロック図
【図３】タグの構成及びタグテーブルを示す機能ブロック図
【図４】セグメント情報となる各フラグの構成を示す機能ブロック図
【図５】セグメント情報テーブルを示す機能ブロック図
【図６】リードコマンドに対する動作を示すフローチャート
【図７】ライトコマンドに対する動作を示すフローチャート
【図８】本実施形態におけるセグメントの分割方法を示す作用説明図
【符号の説明】
２…ＳＣＳＩ制御部
３…ディスク制御部
４…キャッシュメモリ
５…ＣＰＵ
６…ファームウェアプログラム格納部
７…メインメモリ
８…リード／ライト制御部
９…ディスク
４ａ…ディスク管理領域
４ｃ…セグメントキャッシュ領域
４ｄ…リングバッファ領域
７ｂ…セグメントキャッシュ管理データ領域
【図１】
0003898782.tif 000002
【図２】
0003898782.tif 000003
【図３】
0003898782.tif 000004
【図４】
0003898782.tif 000005
【図５】
0003898782.tif 000006
【図６】
0003898782.tif 000007
【図７】
0003898782.tif 000008
【図８】
0003898782.tif 000009