(57)【要約】【課題】ライトデータ用とリードデータ用を兼用するバッファメモリを備える光ディスク装置において、ライトコマンドが続いた後のリードコマンドを確実に実行する。【解決手段】外部のホスト装置からライトコマンドを受信した場合、システムコントローラ３２は付随するライトデータをバッファメモリ３８に格納した後に光ピックアップ１６にライトデータを供給する。複数のライトコマンドの後にリードコマンドを受信した場合、ライトコマンドの実行を中断し、光ディスク１０から読み出したリードデータをバッファメモリ３８の記録済み領域に格納して転送する。また、ライトデータの一部を記録し、そのバッファ領域に光ディスク１０の先読みデータを格納してヒット率を向上させる。【選択図】図１
2006164439.tif 000002
【特許請求の範囲】
【請求項１】
光ディスクに記録すべきデータを格納するとともに、光ディスクから読み出したデータを格納するバッファメモリを有する光ディスク装置であって、
外部装置からライトコマンドに従い、前記バッファメモリに論理アドレスが連続するライトデータを満状態まで受信した後に前記外部装置からリードコマンドを受信した場合であって、前記バッファメモリに格納されているデータのうち、前記リードコマンドが要求するデータ量に応える、少なくとも記録済データ領域を含む空きデータ領域が存在するか否かを所定のデータ量単位で判定する判定手段と、
前記判定手段で前記リードコマンドが要求するデータ量に応える空きデータ領域が存在すると判定された場合に、前記ライトデータを前記光ディスクの物理アドレス順に記録する処理の間に前記記録処理を中断して前記リードコマンドに応じて前記光ディスクからデータを読み出し、読み出したデータを前記空きデータ領域に格納する制御手段と、
を有することを特徴とする光ディスク装置。
【請求項２】
請求項１記載の装置において、
前記制御手段は、前記光ディスクへの記録が完了していないデータ領域のうちの一部のデータについて前記光ディスクへの記録を実行することで空きデータ領域を増大し、増大した空きデータ領域に前記リードコマンドに応じて前記光ディスクから読み出したデータ及びこれに続く先読みデータを格納する
ことを特徴とする光ディスク装置。
【請求項３】
光ディスクに記録すべきデータを格納するとともに、光ディスクから読み出したデータを格納するバッファメモリを有する光ディスク装置であって、
前記バッファメモリには、前記光ディスクから読み出したデータを格納するリードデータ専用領域が設けられ、
外部装置からライトコマンドに従い、前記バッファメモリに論理アドレスが連続するライトデータを満状態まで受信した後に前記外部装置からリードコマンドを受信した場合であって、前記ライトデータを前記光ディスクの物理アドレス順に記録する処理の間に前記記録処理を中断して前記リードコマンドに応じて前記光ディスクからデータを読み出し、読み出したデータとこれに続く先読みデータを、前記リードデータ専用領域と少なくとも記録済データ領域を含む空きデータ領域に格納する制御手段と、
を有することを特徴とする光ディスク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は光ディスク装置、特に記録すべきデータ及び再生すべきデータを格納するバッファメモリの管理技術に関する。
【背景技術】
【０００２】
コンピュータの補助記憶装置として広く使われているディスク装置のうち、可撓性磁気ディスク装置（ＦＤＤ）を除く固定磁気ディスク装置（ＨＤＤ）や光ディスク装置は、高速かつ大容量のデータ記録再生を実現するべく、マイコンが内蔵されている。
【０００３】
光ディスク装置はＨＤＤと比べると光ヘッド及びヘッドキャリッジが重いので、ランダムアクセスの応答性能はどうしても劣ってしまう。このため、光ディスク装置においてデータを記録する際には、上位装置から発せられるデータ記録命令（以下「ライトコマンド」）に伴うデータをバッファメモリで受け止め、受信を完了したら即座に記録完了を上位装置へ報告することで、上記装置から見た見かけ上のデータ記録速度を改善している。通常のライトコマンドに伴うデータは、バッファメモリ内に空き領域がなくなって受信できなくなったときか、あるいは直近のライトコマンドから一定時間経過後に始めて実際の光ディスクへ書き込みを行うように構成されている。これは一般に「遅延書き込み」と呼ばれ周知である。遅延書き込みはマイコンのファームウェアによって実現され、その処理方法によってホストから見たディスク装置のパフォーマンス（応答性能）は大きく変わる。
【０００４】
なお、上位装置から発せられるライトコマンドには、通常のライトコマンドと「ＦＵＡ  ｂｉｔ」が付されたライトコマンドとが存在する。「Ｆｏｒｃｅ  Ｕｎｉｔ  Ａｃｃｅｓｓ」の略であるこのビットが付されたライトコマンドに伴うデータは、遅延書き込みの対象外となり、受信したデータはバッファメモリへの蓄積が完了され次第直ちに記録が行われる。このコマンドは、主に、ＯＳのファイルシステムのディレクトリ情報等、記録を失敗すると被害が大きいデータに対して付されることが多い。
【０００５】
ＤＶＤ−ＲＡＭ等、セクタフォーマットされている光ディスク装置のデータ記録の際は、上記装置（ホスト）から来るライトコマンドに伴って来るライトデータをバッファメモリにて受け取り、実際には光ディスクに記録せず、バッファメモリへの受信を完了するとホストにコマンドの完遂を報告する。すなわち、上記の遅延書き込みを行っている。バッファメモリに蓄積された未記録データは、以下のタイミングにて光ディスクへ実際の記録を開始する。
【０００６】
（１）シーケンシャルライト
ホストから連続して来るライトコマンドに伴うライトデータの論理アドレス（ＬＢＡ）が連続している場合は、光ピックアップのシーク動作を伴わずに連続した記録が行われるものと判断し、バッファフル（満状態）になるまで受信し続ける。バッファフルになった時点か、あるいは直近のライトコマンドから一定時間ホストから何らかのコマンドが来なかった時点で光ディスクへの記録（以下「実記録」）を開始する。
【０００７】
（２）ランダムライト
ホストから連続して来るライトコマンドに伴うライトデータの論理アドレス（ＬＢＡ）が不連続である場合は、光ピックアップのシーク動作を必要とする、光ディスク上の物理アドレスが不連続な記録動作になると判断し、論理アドレスが不連続なデータの数を示すカウンタを＋１インクリメントする。不連続なライトデータが来る度毎にカウンタをインクリメントし、カウンタが所定値、例えば１０になった時点で、バッファフルでなくても実記録を開始する（擬似的にバッファサイズを小さくする）。これは、シーク動作は非常に時間が掛かる処理であり、ホストを待たせる状態を生じやすく、ともするとホストからタイムアウトエラーが出力される可能性があるからである。もちろん、シーケンシャルライトと同様、カウンタが所定値に満たなくても直近のコマンドから所定時間が経過すれば実記録を開始する。
【０００８】
なお、下記に示す特許文献１には、バッファメモリの利用方法が開示されている。
【０００９】
【特許文献１】特開２０００−３３９８５６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
従来、上記（１）、（２）のいずれの場合においても、一旦ディスクへの実記録が発生すると、バッファメモリ内未記録データを全て記録し終える迄は、ホストからリード／ライトコマンドが来ても即応することができなかった。
【００１１】
上記のように、ランダムライトの場合は、不連続カウンタによる制限を設けてバッファメモリのサイズを擬似的に小さくすることで、ホストに対するタイムアウトを防ぐことができる。しかし、シーケンシャルライトの場合はバッファメモリのサイズを最大限使うので、本来なら高速な書き込みが期待できるのだが、交替処理が発生すると途端に記録実行時間が増大し、応答性能が急激に悪化する。この応答性能の悪化はバッファメモリのサイズに比例し、最悪の場合、ホストがタイムアウトと判断し、ホストからバスリセットされてしまう。折角応答性能向上のためにバッファメモリのサイズを大きくしても、交替処理の発生によってこれが逆効果となってしまう。バスリセットの発生はホストから記録が中断されたことを意味し、ユーザの光ディスク装置に対する信頼性が損なわれるおそれがある。
【００１２】
本発明の目的は、バッファメモリを増やしてもホストからタイムアウトを受けるおそれのない、信頼性の高い光ディスク装置を提供することにある。
【課題を解決するための手段】
【００１３】
上記課題を解決するための基本的な技術思想として、バッファメモリ内に未記録データが残っていても、上記装置からリードコマンドが来たら、適切なタイミングにてライト動作を中断でき、リードコマンドの処理を行えるように構成した。ここで、ライト動作中の中断とは、レンズキックあるいはスレッドシーク等の、光ディスクの物理アドレスに対する光ピックアップの離散的移動を生じるタイミングで、バッファメモリにリードコマンドが要求する容量以上の空き領域（再生データ格納可能領域）が生じた時に、次のライトを行うためのシーク動作を中止し、リードコマンドの処理を行うことを意味する。
【００１４】
ここで、ライト中断とこれに伴うリード処理をより効率的に行うために、予め最小限のリードが可能な領域をバッファメモリ内に確保しておけば、シーク動作の中止後直ちにリード処理を実行できる。
【００１５】
さらに、ライト中断の時点でリードコマンドの処理に必要な容量を超える空き容量（再生データ格納可能領域）が得られる場合は、リードコマンドによって指定されたアドレスを超えて先読みを行うことにより、上位装置への即応性が期待できる。
【発明の効果】
【００１６】
本発明によれば、シーケンシャルライトの場合であってライトコマンドに続いてリードコマンドが来てもこのリードコマンドに即応して光ディスクからデータを読み出すことができ、上位装置にタイムアウトと判断される事態を防ぐことができる。
【発明を実施するための最良の形態】
【００１７】
以下、図面に基づき本発明の実施形態について説明する。
【００１８】
図１には、本実施形態に係る光ディスク装置の全体構成図が示されている。ＤＶＤ−ＲＡＭ等の書き換え可能な光ディスク１０はスピンドルモータ（ＳＰＭ）１２により回転駆動される。スピンドルモータＳＰＭ１２は、ドライバ１４で駆動され、ドライバ１４はサーボプロセッサ３０により所望の回転速度となるようにサーボ制御される。
【００１９】
光ピックアップ１６は、レーザ光を光ディスク１０に照射するためのレーザダイオード（ＬＤ）や光ディスク１０からの反射光を受光して電気信号に変換するフォトディテクタ（ＰＤ）を含み、光ディスク１０に対向配置される。光ピックアップ１６はスレッドモータ１８により光ディスク１０の半径方向に駆動され、スレッドモータ１８はドライバ２０で駆動される。ドライバ２０は、ドライバ１４と同様にサーボプロセッサ３０によりサーボ制御される。また、光ピックアップ１６のＬＤはドライバ２２により駆動され、ドライバ２２はオートパワーコントロール回路（ＡＰＣ）２４により駆動電流が所望の値となるように制御される。ＡＰＣ２４は、光ディスク１０のテストエリア（ＰＣＡ）において実行されたＯＰＣ（Optimum Power Control）により選択された最適記録パワーとなるようにドライバ２２の駆動電流を制御する。ＯＰＣは、光ディスク１０のＰＣＡに記録パワーを複数段に変化させてテストデータを記録し、該テストデータを再生してその信号品質を評価し、所望の信号品質が得られる記録パワーを選択する処理である。信号品質には、β値やγ値、変調度、ジッタ等が用いられる。
【００２０】
光ディスク１０に記録されたデータを再生する際には、光ピックアップ１６のＬＤから再生パワーのレーザ光が照射され、その反射光がＰＤで電気信号に変換されて出力される。光ピックアップ１６からの再生信号はＲＦ回路２６に供給される。ＲＦ回路２６は、再生信号からフォーカスエラー信号やトラッキングエラー信号を生成し、サーボプロセッサ３０に供給する。サーボプロセッサ３０は、これらのエラー信号に基づいて光ピックアップ１６をサーボ制御し、光ピックアップ１６をオンフォーカス状態及びオントラック状態に維持する。また、ＲＦ回路２６は、再生信号に含まれるアドレス信号をアドレスデコード回路２８に供給する。アドレスデコード回路２８はアドレス信号から光ディスク１０のアドレスデータを復調し、サーボプロセッサ３０やシステムコントローラ３２に供給する。ＤＶＤ−ＲＡＭの場合にはＣＡＰＡ（Complimentary Allocated Pit Adressing）方式でアドレスデータを得ることができ、セクタ内に記録されたヘッダ部に存在するアドレスデータを再生する。また、ＲＦ回路２６は、再生ＲＦ信号を２値化回路３４に供給する。２値化回路３４は、再生信号を２値化し、得られた８−１６変調信号をエンコード／デコード回路３６に供給する。エンコード／デコード回路３６では、２値化信号を８−１６復調及びエラー訂正して再生データを得、当該再生データをインタフェースＩ／Ｆ４０を介してパーソナルコンピュータなどのホスト装置に出力する。なお、再生データをホスト装置に出力する際には、エンコード／デコード回路３６はバッファメモリ３８に再生データを一旦蓄積した後に出力する。
【００２１】
光ディスク１０にデータを記録する際には、ホスト装置からの記録すべきデータはインターフェースＩ／Ｆ４０を介してエンコード／デコード回路３６に供給される。エンコード／デコード回路３６は、記録すべきデータをバッファメモリ３８に格納し、当該記録すべきデータをエンコードして８−１６変調データとしてライトストラテジ回路４２に供給する。ライトストラテジ回路４２は、ＥＦＭデータを所定の記録ストラテジに従ってマルチパルス（パルストレーン）に変換し、記録データとしてドライバ２２に供給する。記録ストラテジは、例えばマルチパルスにおける先頭パルスのパルス幅や後続パルスのパルス幅、パルスデューティから構成される。記録ストラテジは記録品質に影響することから、通常はある最適ストラテジに固定される。ＯＰＣ時に記録ストラテジを併せて設定してもよい。記録データによりパワー変調されたレーザ光は光ピックアップ１６のＬＤから照射されて光ディスク１０にデータが記録される。データを記録した後、光ピックアップ１６は再生パワーのレーザ光を照射して当該記録データを再生し、ＲＦ回路２６に供給する。ＲＦ回路２６は再生信号を２値化回路３４に供給し、２値化された８−１６変調データはエンコード／デコード回路３６に供給される。エンコード／デコード回路３６は、８−１６変調データをデコードし、正常にデコードできない場合は交替処理を行う。具体的には、バッファメモリ３８に記憶されている記録済みデータを交替領域へ記録する。
【００２２】
なお、ＤＶＤ−ＲＡＭ等はセクタフォーマットであって１ＥＣＣブロック（１６セクタ）単位でデータを記録するため、バッファメモリ３８には１６セクタ分の記録データが格納されていなければならない。したがって、データを記録する場合であって、１ＥＣＣブロックに満たないときには、何らかの方法でこれを満たして１ＥＣＣブロック分のデータとする必要がある。１ＥＣＣブロック分のデータとする方法はいくつかあるが、第１の方法は、バッファメモリの１ＥＣＣブロック分に満たない空き領域のアドレスに相当する光ディスク１０のアドレスにアクセスし、該当アドレスに存在するデータを読み出してバッファメモリを埋める方法である。第２の方法は、バッファメモリ内の格納済みデータの終端論理アドレスと直後に外部装置から供給される予定のデータの始端論理アドレスが連続しているシーケンシャルライトの場合に、空き容量分だけのデータをホスト装置に要求し、該要求に応じてホスト装置から供給されたデータを空き領域に格納することで終端の空き領域を埋めるものである（始端の空き領域は第１の方法と同様）。いずれの方法を用いてもよい。
【００２３】
本実施形態に係る光ディスク装置１は、バッファメモリ３８をシステムコントローラ３２が制御して、光ディスク１０に対し、周知の遅延書き込みを行う。また、光ディスク１０から読み出したデータを適宜保持しておき、ディスクに対するランダムアクセス回数の減少に役立てている。本実施形態の光ディスク装置１は、従来の光ディスク装置１と比べてバッファメモリ３８の容量が大きく（例えば４ＭＢ）、ＬＢＡが連続する大容量のシーケンシャルライトデータを効率良く受け入れることができる。しかし、周知のように光ディスクは埃や汚れ等に弱く、常に安定した品質でデータ記録が完遂できるとは限らない。このため、ＤＶＤ−ＲＡＭはディスク内周側及び外周側に交替領域を設けている。光ディスク１０に対するデータ記録処理を行っている最中に、記録中の領域の特定箇所でライトエラーが生じると、これを補填するために交替処理を行わなければならないので、記録に失敗した領域のデータを交替領域へ記録する。この時、光ピックアップ１６はそれまで記録を行っていたトラックから交替領域へのシークを伴う。シークを伴うことにより、データ記録に要する時間は極端に増大する。すなわち、バッファメモリ３８の容量を増やすと、ホストからライトコマンドを受け入れた後、シーケンシャルライトの最中に交替処理が発生すると、ホストからリードコマンドが発行されても即座に実行できず、タイムアウトによるバスリセットを受けてしまう可能性が大きい。
【００２４】
そこで、システムコントローラ３２は、バッファメモリ３８内に蓄積されているライトデータを実際に光ディスク１０へ記録している最中にホストからリードコマンドを受けると、リードコマンドが来たことを示すフラグを設定する。現在実行中のライト処理が終了したら、フラグが設定されているか否かを判断し、フラグが設定されていれば次に実行を予定しているライト処理を一旦中断し、バッファメモリ３８内の使用状態を調べる。バッファメモリ３８内に存在するライトデータの内、既に光ディスク１０への記録が完了しているデータ（記録済データ）と、未だ記録が完了していないためバッファメモリ３８に格納しておく必要があるデータ（未記録データ）を判別し、バッファメモリ３８に残っている記録済データの領域でリードコマンドを実行できるか否かを判定する。なお、光ディスク１０への記録は上記のように１ＥＣＣブロック単位で実行されるため、記録済データも１ＥＣＣブロック単位で判別する。判別処理の結果、リードコマンドで指定された容量以上の記録済データ領域が存在すると判明した場合は、この記録済データ領域をリードデータの格納領域に転用することを決定する。そして、受信したリードコマンドに従って所定の再生動作を実行する。このように、記録済データ領域をリードデータの格納領域に転用し、実行中のデータ記録動作をランダムアクセスの発生する時点で中断することで、迅速なリードコマンドの実行を可能にし、タイムアウトを防止する。
【００２５】
なお、リードコマンドを受信した時点で、リードコマンドで指定された容量以上の記録済データ領域が存在しないときは、次に実行するライト処理を完遂し、再びバッファメモリ３８を検証してリードコマンドで指定された容量以上の記録済データ領域が生じるまでライト処理を実行する。所定容量以上の記録済データ領域を確保できたら、次に実行を予定しているライト処理に先立ち、リード処理を実行する。
【００２６】
リード処理を完遂すると、所定時間が経過する迄ホストから次のコマンドを待つ。リードコマンドが連続してきても、バッファメモリ３８に存在する記録済データ領域の容量が許す限り、ホストからコマンドを受け入れ、実行する。所定時間を経過してもコマンドがこなかった場合は、中断していたデータ記録動作を再開する。
【００２７】
図２及び図３には、本実施形態の処理フローチャートが示されている。システムコントローラ３２は、ホスト装置から受信したコマンドがライトコマンドか否かを判定する（Ｓ１０１）。ライトコマンドである場合、ライトコマンドに付随するライトデータを受信してバッファメモリ３８に格納する（Ｓ１０２）。バッファメモリ３８への格納は、バッファメモリ３８が満状態（ＦＵＬＬ）となるまで実行する（Ｓ１０３）。ここに、バッファメモリ３８のＦＵＬＬ状態とは、ホスト装置からのライトデータを全て格納するだけの空き領域が存在しない状態をいう。システムコントローラ３２は、ライトデータの始端論理アドレスと終端論理アドレスより記録すべきデータの総容量を算出し、その容量がバッファメモリ３８の空き領域に収まるか否かを検証することでＦＵＬＬか否かを判定する。なお、このライトデータ格納処理は、連続してくるライトデータの論理アドレスが連続していればバッファメモリ３８の空き領域を全て満たす（使い切る）まで実行するが、連続してくるライトデータの論理アドレスが連続していない場合は、不連続データを計数するカウンタをインクリメントし、その数が一定値を超えると、バッファメモリ３８の空き領域が全て満たされなくても（使い切らなくても）受信を打ち切る。これはスレッドシークに伴うアクセス速度の低下により、ホスト装置を必要以上に待たせてしまい、タイムアウトを引き起こさないために行う制限処理である。
【００２８】
バッファメモリ３８がＦＵＬＬ状態と判定された場合、バッファメモリ３８に格納されたライトデータ（未記録データ）の論理アドレスを、光ディスク１０上の物理アドレスに変換する処理を行う（Ｓ１０４）。これは、光ディスク装置１の光ディスク１０への記録動作は、最終的には光ディスク１０の物理アドレスが連続している区間に対して１回のライト処理を行うように構成されていることに起因する。すなわち、１回のライト処理はそれ単体で完結する、中断できない処理である。よって、論理アドレスにおいて連続しているデータであっても、物理アドレスに変換すると交替処理等で不連続になることがある。そこで、ライト処理に先立ち論理物理アドレス変換処理を行い、その後バッファ内未記録データに対し、物理アドレス順にライト処理の順番を決定する。次に、この未記録データを光ディスク１０に記録するライト動作を起動する（Ｓ１０５）。ライト動作には、上記のように１ＥＣＣブロックに満たない空き領域が存在する場合にこれを埋める処理が含まれる。１ＥＣＣブロック単位で物理アドレスが連続しているライトデータを構成した後、これらを順次バッファメモリ３８から読み出してエンコードし、光ピックアップ１６に供給して光ディスク１０にデータを記録していく。データの記録（ライト動作）を完了すると、通常再生時よりもやや厳しい再生条件を設定した上で、再び同じ物理アドレスを再生し、信号品質を検証する（ベリファイ）。読みとりエラーが発生して正常にデコードできない等の場合には、交替領域にデータを交替記録する。
【００２９】
システムコントローラ３２は、ライト動作実行中にホスト装置からリードコマンドを受信したか否かを割込判定する（Ｓ１０６）。リードコマンドを受信していない場合には、ライト動作を続行し、バッファメモリ３８に格納されているライトデータを全て光ディスク１０に記録するまで繰り返す（Ｓ１０８、Ｓ１１０）。一方、リードコマンドを受信した場合には、リードコマンドがきた旨を示すフラグをセットして（Ｓ１０７）、現在のライト動作が中断できるタイミングにて（Ｓ１０８）、フラグがセットされているか否かを検証する（Ｓ１０９）。フラグがセットされていれば、受信したリードコマンドを実行してタイムアウトを防止すべく以下の処理に移行する。
【００３０】
図３には、リードコマンドを受信し、ライト動作を中断した場合の処理が示されている。まず、システムコントローラ３２は、バッファメモリ３８に、リードコマンドの要求に応えられる空き領域（記録済データの領域）が存在するか否かを判定する（Ｓ２０２）。バッファメモリ３８の大半が未記録データ（記録の完了とは、単に光ディスク１０に記録したのみならずそのベリファイも完了したことを意味するものとする）で占められ、リードコマンドの要求に応えられるだけの空き領域がない場合には、リードコマンドを実行できないので、Ｓ１１０に戻り、再びＳ１０５移行のライト処理を続行して空き領域を作成する。なお、ここで空き領域とは、装置起動直後でバッファメモリ３８に未記録データが存在しない領域か、あるいは光ディスク１０への記録が完了してバッファメモリ３８に積極的に格納しておく必要がない記録済データの領域を意味する。
【００３１】
一方、バッファメモリ３８にリードコマンドの要求に応えられる空き領域が存在する場合には、光ディスク１０から読み出したリードデータを格納し得る状態にある。そこで、システムコントローラ３２は、リードコマンドで要求されたデータが既にバッファメモリ３８に存在するか否かを確認し（Ｓ２０３）、当該データが既に読み出されバッファメモリ３８に存在する場合や、バッファメモリ３８に滞留している未記録データがそれに該当する場合（データヒットあるいはキャッシュヒット）には当該データをホスト装置にそのまま転送する（Ｓ２０８）。これにより、リードコマンドの処理が完了するので、セットされているフラグを解除する（Ｓ２０９）。データヒットしない場合には、光ディスク１０から読み出す必要があるが、単にリードコマンドで要求されたアドレスのみを読み出すのではなく、連続してリードコマンドがホスト装置から発行されることが予想されるから、要求されたデータに続くアドレスのデータも予め先読みしておくことで、次回のリードコマンドにおけるキャッシュヒット率を向上させることができる。また、リードコマンドが続くのであれば、いつまでも未記録データをバッファメモリ３８に滞留させ続けておくことは好ましくなく、できるだけ早い時期に未記録データを処分し、ホスト装置から連続してくるであろうリードコマンドに最大限対応できるようにバッファメモリ３８を空けておきたい。そこで、未記録データの記録処理を１つずつ完了させて、未記録データ領域の処理を進め、記録済データ領域（空きデータ領域）を更に確保する。なお、Ｓ２０４における記録処理は、物理アドレスで連続したライト処理であるとともに、ベリファイの直前で中断した場合は、他のライト処理よりも未完のベリファイ処理を優先して行う。次に、未記録データがまだ存在するか否かを判定する（Ｓ２０５）。未記録データがもはや存在しない場合にはバッファメモリ３８の全ての領域をリードデータ格納領域として使用できることになり、未記録データが存在している場合には、バッファメモリ３８のうちのリードデータ格納可能なバッファ領域を検索した上で（Ｓ２０６）、光ディスク１０からデータ（要求されたデータ＋先読みデータ）を読み出し、検索した領域に格納する（Ｓ２０７）。リードデータをバッファメモリ３８に格納した後、バッファメモリ３８からホスト装置に転送し（Ｓ２０８）、フラグを解除して（Ｓ２０９）、リード処理を完了する。なお、リードデータ格納領域も記録済データ領域と同様、新たなリードデータを格納する領域に転用可能である。つまり、リードコマンドがきた際にＳ２０３でデータヒットしなかった場合には、リードデータ格納領域も記録済データ領域とともにリード処理と先読み処理に用いる。
【００３２】
以上のようにして連続するライト動作を中断してリードコマンドを実行した後、再びライトコマンドの実行に戻る。そして、残存ライトデータの記録を全て完了すると、処理を終了する（Ｓ１０９、Ｓ１１０）。
【００３３】
図４〜図７には、以上説明した処理の各段階におけるバッファメモリ３８の状態が模式的に示されている。なお、バッファメモリ３８の容量は任意であるが、図では説明の都合上、６ＥＣＣブロック分のデータを格納できる容量としている。
【００３４】
図４は、ホスト装置から供給された、論理アドレスが連続したライトデータを格納した後、ＦＵＬＬと判定された状態であり、図２のＳ１０３でＹＥＳと判定された状態である。上から第１データ領域〜第６データ領域（それぞれのデータ領域は１ＥＣＣブロック分の容量）とすると、全てのデータ領域にライトデータが格納され、未だ光ディスク１０に対する記録が完了していないため「未記録」の状態にある。図５は、図４の状態から論理／物理アドレス変換処理を施し、未記録データを物理アドレス単位で区分し、物理アドレスに従って記録処理の順番を付した状態を示している。図５では、上から２ＥＣＣブロック分の物理アドレスが連続するデータよりなる「未記録１」、１ＥＣＣブロック分の物理アドレスが連続するデータよりなる「未記録３」、１ＥＣＣブロック分の物理アドレスが連続するデータよりなる「未記録２」、２ＥＣＣブロック分の物理アドレスが連続するデータよりなる「未記録４」が格納されている。未記録１から物理アドレスが近い順に、未記録２、未記録３、未記録４の順番で記録処理を行う。図５にて例示するように、光ディスク１０に対する実際のデータの記録処理は、交替処理が発生すると、論理アドレスでは連続していても物理アドレスでは不連続となり、物理アドレスを基準に見ると記録の順番が変わることもある。
【００３５】
図６は、光ディスク１０に対して物理アドレスで連続するＥＣＣブロック単位でデータの記録が順次実行され、バッファメモリ３８のうちの「未記録１」、「未記録２」が既に記録済となった状態である。この時点では図２のＳ１０５が２回実行された状態である。未記録データが格納されていた「未記録１」、「未記録２」が記録済（光ディスク１０に記録され、かつ、ベリファイが完了した）であって、「記録済１」、「記録済２」の状態にある。記録済のデータ領域は、積極的にデータを格納する必要がなく、上書きが可能な状態、すなわち空きの状態である。
【００３６】
図７は、ホスト装置からリードコマンドが発行され（Ｓ１０６）、フラグをセットし（Ｓ１０７）、ライト処理を中断して（Ｓ１０８，Ｓ１０９）リードコマンドの処理を実行する際に先立ち、できるだけ未記録データを処理するとともに先読みデータ領域を確保すべく未記録データの一部の記録処理を実行した状態であり、図３のＳ２０４を実行した後の状態である。図６に示された状態においてもリードコマンドの要求に応える空き容量（「記録済１」、「記録済２」）が存在するが、リードコマンドで要求されたデータのみを例えば「記録済１」に格納したのでは、リードコマンドが連続した場合にその都度光ディスク１０から読み出す必要があるため効率が低下する。また、リードコマンドが連続した場合に、いつまでも未記録データを滞留させ続けることもリード処理の効率にとって良くないだけでなく、電源断等の不慮の事故が発生する際に致命的なデータ破壊を招きかねない。未記録データはできるだけ速やかに処理しなければならないものである。そこで、図７に示されるように、「未記録３」の未記録データを光ディスク１０に記録してしまい、「記録済３」として空き領域を確保する。これにより、リードコマンドで要求されたデータのみならず、それに続くデータも先読みして「記録済２」、「記録済３」に格納することが可能になり、データヒットによる読み出し速度向上が期待できる。また、リードコマンドが連続してきて、バッファメモリ３８内にデータヒットしない時（図３のＳ２０３）は、リードコマンドの処理に先立ち、徐々に未記録データを記録する（Ｓ２０４）ことで、できるだけ早い段階で未記録データを処理できる。なお、図７では「未記録３」が「記録済３」へと状態が変化したことで、偶然にも、「記録済１」、「記録済２」、「記録済３」と、４ＥＣＣブロック分の連続した記録済領域が存在するが、バッファメモリ３８内における記録済領域の利用は必ずしも連続したアドレス配置になっている必要はないことに注意されたい。
【００３７】
図８は、未記録データの一部のライト動作を実行して空き領域をさらに確保した後に、光ディスク１０から読み出したデータをバッファメモリ３８に格納した状態であり、図３のＳ２０７を実行した後の状態である。「記録済１」にはリードコマンドで要求されたデータが２ＥＣＣブロック分格納され、「記録済２」と「記録済３」には先読みしたデータが２ＥＣＣブロック分格納されている。「記録済１」に格納されたデータは、その後ホスト装置に転送される（図３のＳ２０８）。ホスト装置から再びライトコマンドが発行されると、残る「未記録４」の記録を完了して、バッファメモリ３８に未記録データが全くない状態から（Ｓ１１０）、再びデータの受信を始める（Ｓ１０１，Ｓ１０２）。
【００３８】
以上、本発明の実施形態について説明したが、本発明はこれに限定されるものではなく種々の変更が可能である。
【００３９】
例えば、本実施形態では、システムコントローラ３２がバッファメモリ３８への書き込み及び読み出しを制御しているが、システムコントローラ３２とは別のメモリコントローラで制御してもよいのはいうまでもない。
【００４０】
また、本実施形態では、データヒット（キャッシュヒット）の確率を向上させるべく、リードコマンドを実行する前に残存ライトデータの一部を光ディスク１０に記録して先読みデータを格納するための領域を確保しているが、Ｓ２０４の処理を実行することなくデータリード処理を行ってもよい。この場合、既に存在する空き領域の容量を確認し、リードコマンドで要求されたデータ量がこの空き容量よりも小さい場合に、その差に相当する分のデータのみを先読みしてバッファメモリ３８に格納する。
【００４１】
さらに、本実施形態では、基本的にバッファメモリ３８をライトデータを格納する領域と光ディスク１０から読み出したリードデータを格納する領域とに論理的に分割していないが、従来技術と同様にバッファメモリ３８の一部をリードデータの専用領域に割り当てることもできる。この場合、常にリードデータの格納領域が存在することになるので、Ｓ２０２においてバッファに空きがあるか否かを判定する必要はない。
【図面の簡単な説明】
【００４２】
【図１】実施形態に係る光ディスク装置の全体構成図である。
【図２】実施形態の処理フローチャート（その１）である。
【図３】実施形態の処理フローチャート（その２）である。
【図４】バッファメモリの状態説明図である。
【図５】バッファメモリの他の状態説明図である。
【図６】バッファメモリのさらに他の状態説明図である。
【図７】バッファメモリのさらに他の状態説明図である。
【図８】バッファメモリのさらに他の状態説明図である。
【符号の説明】
【００４３】
１０  光ディスク、１６  光ピックアップ、３２  システムコントローラ、３８  バッファメモリ。
【図１】
2006164439.tif 000003
【図２】
2006164439.tif 000004
【図３】
2006164439.tif 000005
【図４】
2006164439.tif 000006
【図５】
2006164439.tif 000007
【図６】
2006164439.tif 000008
【図７】
2006164439.tif 000009
【図８】
2006164439.tif 000010