(57)【要約】【課題】リードモデファイライト処理に必要な記録単位ブロック（下地データ）の読み出しができなかった場合であってもデータの書き込みを良好に行い得るようにする。【解決手段】ドライブ１０６は、ホストとしてのＣＰＵ１０１から送られてくる書き込みデータのデータサイズが光ディスク１７０の記録単位サイズ未満である場合には、リードモデファイライト処理によりデータの書き込み行う。ドライブ１０６は、書き込みデータのデータサイズが記録単位サイズ未満である場合には、キャッシュメモリ１６５に書き込みデータが格納された時点（２）でＣＰＵ１０１に成功を通知せず、下地データの読み出しを行い（３）、それが成功した時点（４）でＣＰＵ１０１に成功を通知する。ドライブ１０６は、下地データの読み出しが不成功であるとき、ＣＰＵ１０１に同期エラーを通知する。この場合、ＰＣシステムキャッシュは未だ解放されていない。【選択図】図２
2008176889.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータから送られてくる書き込み要求のあったデータを記録メディアに書き込む記録装置であって、
上記ホストコンピュータから送られてくる書き込み要求のあったデータをメモリに取り込むデータ取り込み手段と、
上記メモリに取り込まれたデータを上記記録メディアに書き込むデータ書き込み手段と、
上記メモリに取り込まれたデータのサイズを判別するデータサイズ判別手段と、
上記データサイズ判別手段で上記メモリに取り込まれたデータのサイズが上記記録メディアの記録単位サイズより小さいと判別されるとき、上記データ書き込み手段が上記記録メディアからリードモデファイライト処理に必要な記録単位ブロックの読み出し処理を行った後に、上記ホストコンピュータに対して成功または同期エラーの通知を行う通知手段と
を備えることを特徴とする記録装置。
【請求項２】
上記通知手段は、
上記データサイズ判別手段で上記メモリに取り込まれたデータのサイズが上記記録メディアの記録単位サイズの整数倍であると判別されるとき、直ちに、上記ホストコンピュータに対して成功の通知を行う
ことを特徴とする請求項１に記載の記録装置。
【請求項３】
ホストコンピュータから送られてくる書き込み要求のあったデータを記録メディアに書き込む記録方法であって、
上記ホストコンピュータから送られてくる書き込み要求のあったデータをメモリに取り込むデータ取り込みステップと、
上記メモリに取り込まれたデータを上記記録メディアに書き込むデータ書き込みステップと、
上記メモリに取り込まれたデータのサイズを判別するデータサイズ判別ステップと、
上記データサイズ判別ステップで上記メモリに取り込まれたデータのサイズが上記記録メディアの記録単位サイズより小さいと判別されるとき、上記データ書き込みステップで上記記録メディアからリードモデファイライト処理に必要な記録単位ブロックの読み出し処理を行った後に、上記ホストコンピュータに対して成功または同期エラーの通知を行う通知ステップと
を備えることを特徴とする記録方法。
【請求項４】
ホストコンピュータから送られてくる書き込み要求のあったデータをメモリに取り込むデータ取り込みステップと、
上記メモリに取り込まれたデータを上記記録メディアに書き込むデータ書き込みステップと、
上記メモリに取り込まれたデータのサイズを判別するデータサイズ判別ステップと、
上記データサイズ判別ステップで上記メモリに取り込まれたデータのサイズが上記記録メディアの記録単位サイズより小さいと判別されるとき、上記データ書き込みステップで上記記録メディアからリードモデファイライト処理に必要な記録単位ブロックの読み出し処理を行った後に、上記ホストコンピュータに対して成功または同期エラーの通知を行う通知ステップとを備える記録方法をコンピュータに実行させるためのプログラム。
【請求項５】
ホストコンピュータと光ディスクドライブとがバスを介して接続された光ディスク記録装置であって、
上記光ディスクドライブは、
上記ホストコンピュータから送られてくる書き込み要求のあったデータをメモリに取り込むデータ取り込み手段と、
上記メモリに取り込まれたデータを光ディスクに書き込むデータ書き込み手段と、
上記メモリに取り込まれたデータのサイズを判別するデータサイズ判別手段と、
上記データサイズ判別手段で上記メモリに取り込まれたデータのサイズが上記光ディスクの記録単位サイズより小さいと判別されるとき、上記データ書き込み手段が上記光ディスクからリードモデファイライト処理に必要な記録単位ブロックの読み出し処理を行った後に、上記ホストコンピュータに対して成功または同期エラーの通知を行う通知手段とを備える
ことを特徴とする光ディスク記録装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、記録装置、記録方法、プログラムおよび光ディスク記録装置に関する。詳しくは、この発明は、ホストコンピュータから送られてくる書き込み要求のあったデータのサイズが記録メディアの記録単位サイズより小さいとき、記録メディアからリードモデファイライト処理に必要な記録単位ブロックの読み出し処理を行った後にホストコンピュータに対して成功または同期エラーの通知を行うことにより、記録単位ブロックの読み出しができなかった場合であってもデータの書き込みを良好に行い得るようにした記録装置等に係るものである。
【背景技術】
【０００２】
光ディスクドライブは、装着された記録メディアとしての光ディスクの全てのアクセス可能記録領域に対して、この光ディスクの規格で定められたある単位サイズ毎にアドレスを割り当て、接続先のホストＰＣ（Personal Computer)に対してその領域へのアクセスサービスを提供する。ここで、このアドレスを割り当てられた単位の領域を「アクセス単位ブロック」、そのサイズを「アクセス単位サイズ」とする。
【０００３】
ところで、このアクセス単位サイズは、必ずしも光ディスクに記録される単位サイズと等しくない。ここで、光ディスクに記録される単位の領域を「記録単位ブロック」、そのサイズを「記録単位サイズ」とする。記録単位サイズは、光ディスク上の傷などによるエラー訂正と記録容量などを考慮したもので、例えば、６４Ｋバイトなどのサイズを持つ。これに対して、アクセス単位サイズは、主にホストＰＣ側から要求されるキャッシュページサイズ(例えば、４Ｋバイト)以下のアクセスに対応するため、例えば、２Ｋバイトなど、記録単位サイズより小さくなる。
【０００４】
このため、ホストＰＣから光ディスクドライブへ記録単位サイズ未満の書込み要求が発行される可能性がある。その場合、光ディスクドライブは、その書き込み要求による書込み処理で変更されるべきでないデータを変更しないように、一度記録単位ブロックをメモリ上に読み出し、当該記録単位ブロックに書込み要求のあったデータを部分的に上書きし、当該上書きされた記録単位ブロックを、再度、記録単位サイズで光ディスクへ書き戻すリードモデファイライト（Read Modify Write）処理を行う必要がある。例えば、特許文献１には、リードモデファイライト処理の一例が記載されている。
【０００５】
ここで、光ディスク上に、光ディスクドライブではリカバー不可能な傷が生じてしまった場合を考える。この傷が生じてしまった欠陥領域に、記録単位サイズで書き込みを行うと、光ディスクドライブは、光ディスク上の別の位置にある交替領域に、当該記録単位サイズで交替処理を行う。しかし、上述のリードモデファイライト処理が必要な記録単位サイズ未満の書きこみ要求に対しては、問題が生じる。
【０００６】
何故なら、光ディスクドライブの書き込み処理の過程で、傷により変更されるべきでない下地となるデータをメモリ上に読み出すことができないため、記録単位サイズでの交替処理を行うことができない。ここで、記録単位サイズ未満での部分的交替処理を可能とする光ディスク規格であれば問題を生じない。しかし、この発明は、記録単位サイズでの交替しかサポートしていない規格に対する発明である。
【０００７】
一方、光ディスクドライブは、例えば、ＡＴＡ、ＳＣＳＩ、ＵＳＢバスに接続されたストレージデバイスである。この光ディスクドライブでは、ホストＰＣから見たストレージデバイスの書き込み速度を高速化するため、ライトバックキャッシュング（Write-back caching）という方法が頻繁に用いられる。
【０００８】
ライトバックキャッシュングは、ホストＰＣから書きこみ要求のあったデータを、光ディスクドライブがメモリ（キャッシュメモリ）上に取り込んだ時点で、実際には光ディスクに対する書き込み処理が行われていないにも拘わらず、コマンド成功完了としてホストＰＣに通知し、見た目上書き込みを高速に完了させる方法である。このライトバックキャッシュングを用いることで、ホストＰＣ側では、書き込みプロセスが早く解放されるなど、処理の高速化を期待できる。例えば、特許文献２には、ライトバックキャッシュング処理の一例が記載されている。
【特許文献１】特開平９−２２３７５号公報
【特許文献２】特開２００２−１５４９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
光ディスクドライブ側は、キャッシュメモリが許す限りライトバックキャッシュングを行うことができる。しかし、光ディスクに対する書き込み処理はコマンド成功完了の通知に対して遅れて実行されるため、上述したように、リカバー不可能な傷が生じている記録単位ブロックに対して記録単位サイズ未満の書き込み要求が生じた場合には、交替処理を行うことができないことから、通常、遅延エラーとして、次の(別の)命令に対してホストＰＣに報告される。一方、記録単位サイズ、あるいはその整数倍の書き込み要求は、光ディスクドライブ側が交替処理を行って「成功」させることができるので、遅延エラーとなる可能性は低い。
【００１０】
このように、リカバー不可能な傷が生じている記録単位ブロックに対して記録単位サイズ未満の書き込み要求が生じた場合、当該書き込み要求は失敗してしまう。ここで、問題となるのは、リカバー不可能な傷が生じている記録単位ブロックへの記録単位サイズ未満の書き込み要求に対しても、一度コマンド成功完了の通知が返されているため、ホストＰＣ側でその書き込み要求の元データをキャッシュメモリから既に解放してしまっている可能性が生じることである。
【００１１】
書き込み要求の元データがキャッシュメモリから解放されている場合、ホストＰＣ側は再度別の領域に書き込みを行うことができず、結局、当該データの書き込み自体が失敗してしまう。
【００１２】
この発明の目的は、記録単位ブロックの読み出しができなかった場合であってもデータの書き込みを良好に行い得るようにする、ことにある。
【課題を解決するための手段】
【００１３】
この発明の概念は、
ホストコンピュータから送られてくる書き込み要求のあったデータが記録単位サイズより小さい場合、リードモデファイライト処理により、該書き込み要求のあったデータを記録メディアに書き込む記録装置であって、
上記ホストコンピュータから送られてくる書き込み要求のあったデータをメモリに取り込むデータ取り込み手段と、
上記メモリに取り込まれたデータを上記記録メディアに書き込むデータ書き込み手段と、
上記メモリに取り込まれたデータのサイズを判別するデータサイズ判別手段と、
上記データサイズ判別手段で上記メモリに取り込まれたデータのサイズが上記記録メディアの記録単位サイズより小さいと判別されるとき、上記データ書き込み手段が上記記録メディアからリードモデファイライト処理に必要な記録単位ブロックの読み出し処理を行った後に、上記ホストコンピュータに対して成功または同期エラーの通知を行う通知手段と
を備えることを特徴とする記録装置にある。
【００１４】
この発明において、ホストコンピュータから送られてくる書き込み要求のあったデータはメモリに取り込まれる。そして、このメモリに取り込まれたデータが光ディスク等の記録メディアに書き込まれる。この場合、書き込み要求のあったデータのサイズが記録単位サイズより小さいときは、リードモデファイライト処理により、当該データが記録メディアに書き込まれる。
【００１５】
メモリに取り込まれたデータのサイズが判別され、その判別結果に応じて、ホストコンピュータに対する成功または同期エラーの通知がなされる。すなわち、メモリに取り込まれたデータのサイズが記録メディアの記録単位サイズより小さいと判別されるときには、記録メディアからリードモデファイライト処理に必要な記録単位ブロックの読み出し処理が行われた後に、ホストコンピュータに対して成功または同期エラーの通知が行われる。
【００１６】
この場合、記録単位ブロックの読み出しができたときは、リードモデファイライト処理が可能であるので、ホストコンピュータに対して成功が通知される。一方、記録メディア上の傷などにより記録単位ブロックの読み出しができなかったときは、リードモデファイライト処理が不可能であるので、ホストコンピュータに対して同期エラーが通知される。このように、リードモデファイライト処理に必要な記録単位ブロックの読み出しができなかった場合には、ホストコンピュータに同期エラーが通知されるため、ホストコンピュータ側は再度別の領域に書き込みを行うことが可能となる。
【００１７】
なお、この場合、ライトバックキャッシング処理とは異なる処理を行うので、ホストコンピュータ側では、書き込みプロセスが早く解放されるというメリットは得られなくなる。しかし、オペレーションシステム（ＯＳ）は、なるべく記録単位サイズで書き込みを行おうとするため、ホストコンピュータから送られてくる書き込み要求のあったデータのサイズが記録単位サイズより小さくなる頻度はそれ程多くはない。
【００１８】
また、この発明において、例えば、メモリに取り込まれたデータのサイズが記録メディアの記録単位サイズの整数倍であると判別されるとき、直ちに、ホストコンピュータに対して成功の通知を行うようにされる。この場合、ライトバックキャッシング処理が行われるので、ホストコンピュータ側では、書き込みプロセスが早く解放されるというメリットがある。
【発明の効果】
【００１９】
この発明によれば、ホストコンピュータから送られてくる書き込み要求のあったデータのサイズが記録メディアの記録単位サイズより小さいとき、記録メディアからリードモデファイライト処理に必要な記録単位ブロックの読み出し処理を行った後にホストコンピュータに対して成功または同期エラーの通知を行うものであり、記録単位ブロックの読み出しができなかった場合であってもデータの書き込みを良好に行うことができる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照して、この発明の実施の形態について説明する。図１は、実施の形態としての光ディスク記録装置１００の構成例を示している。
【００２１】
光ディスク記録装置１００は、ＣＰＵ(Central Processing Unit)１０１と、Ｉ／Ｏ(Input/Output)ブリッジ１０２と、メインメモリ１０３と、バスインタフェース（ＢＵＳ  Ｉ／Ｆ）１０４と、内部バス（例えば、ＡＴＡバス等）１０５と、光ディスクドライブ１０６と、ハードディスクドライブ（ＨＤＤ）１０７とを有している。
【００２２】
ＣＰＵ１０１はホストコンピュータを構成している。ＣＰＵ１０１およびメインメモリ１０３はＩ／Ｏブリッジ１０２に接続されている。そして、Ｉ／Ｏブリッジ１０２は、バスインタフェース１０４を介して、内部バス１０５に接続されている。また、光ディスクドライブ１０６およびハードディスクドライブ１０７は、それぞれ、内部バス１０５に接続されている。このような構成により、ＣＰＵ１０１は、Ｉ／Ｏブリッジ１０２およびバスインタフェース１０４を利用して、内部バス１０５に接続された光ディスクドライブ１０６およびハードディスクドライブ１０７を制御可能とされている。
【００２３】
光ディスクドライブ１０６には、記録メディアとしての光ディスク１７０が装着可能とされている。この光ディスクドライブ１０６は、コントローラ１６１と、バスインタフェース（ＢＵＳ  Ｉ／Ｆ）１６２と、内部バス１６３と、メディア入出力制御部１６４と、キャッシュメモリ１６５とを有している。
【００２４】
コントローラ１６１は、ドライブ全体の動作を制御する。このコントローラ１６１は、図示しないが、ＣＰＵ、ＲＯＭ(Read Only Memory)、ＲＡＭ(Random Access Memory)等を備えた構成となっている。ＣＰＵは、ＲＯＭに格納されている制御プログラムを必要に応じて読み出し、読み出した制御プログラムをＲＡＭに転送して展開し、当該展開された制御プログラムを読み出して実行することで、各部の動作を制御する。コントローラ１６１、メディア入出力制御部１６４およびキャッシュメモリ１６５は内部バス１６３に接続され、さらに、この内部バス１６３はバスインタフェース１６２を介して上述の内部バス１０５に接続されている。
【００２５】
ＣＰＵ１０１から書き込み命令およびデータ（書き込み要求のあったデータ）が送られてきた場合における光ディスクドライブ１０６の内部動作を説明する。すなわち、ＣＰＵ１０１から内部バス１０５を介して送られてくる書き込み命令およびデータは、バスインタフェース１６２により受け取られ、一旦、キャッシュメモリ１６５に取り込まれる。その後に、キャッシュメモリ１６５に取り込まれたデータ（以下、「書き込みデータ」という）は、メディア入出力制御部１６４を利用して光ディスク１７０に書き込まれる。
【００２６】
光ディスクドライブ１０６では、キャッシュメモリ１６５に取り込まれた書き込みデータのサイズ（以下、「書き込みデータサイズ」という）が判別される。そして、書き込みデータサイズが記録単位サイズ（例えば、６４Ｋバイト）より小さいとき（記録単位サイズ未満のとき）には、当該書き込みデータはリードモデファイライト処理により光ディスク１７０に書き込まれる。つまり、光ディスク１７０から一度記録単位ブロック（下地データ）をキャッシュメモリ１６５上に読み出し、当該記録単位ブロックに書込みデータを部分的に上書きし、当該上書きされた記録単位ブロックを、再度、記録単位サイズで光ディスク１７０へ書き戻す。一方、書き込みデータサイズが記録単位サイズ未満でないとき（記録単位サイズの整数倍であるとき）には、書き込みデータは、記録単位サイズ毎に記録単位ブロックとして、光ディスク１７０に書き込まれる。
【００２７】
なお、光ディスクドライブ１０６は、記録単位サイズ未満での部分的交替処理はサポートしておらず、記録単位サイズでの交替しかサポートしていない。そのため、光ディスクドライブ１０６では、上述の書き込みデータサイズの判別結果に応じて、ＣＰＵ１０１に対する成功または同期エラーの通知がなされる。
【００２８】
書き込みデータサイズが記録単位サイズ未満であるときには、ライトバックキャッシュングとは異なる処理が行われる。つまり、光ディスク１７０からリードモデファイライト処理に必要な記録単位ブロック（下地データ）の読み出し処理が行われた後に、ＣＰＵ１０１に対して成功または同期エラーの通知が行われる。この場合、記録単位ブロックの読み出しができたときは、リードモデファイライト処理が可能であるので、ＣＰＵ１０１に対して成功が通知される。一方、光ディスク１７０上の傷などにより記録単位ブロックの読み出しができなかったときは、リードモデファイライト処理が不可能であるので、ＣＰＵ１０１に対して同期エラーが通知される。
【００２９】
一方、書き込みデータサイズが記録単位サイズ未満でないとき（記録単位サイズの整数倍であるとき）には、ライトバックキャッシング処理が行われる。つまり、キャッシュメモリ１６５に書き込みデータが取り込まれると、直ちに、ＣＰＵ１０１に対して成功の通知が行われる。
【００３０】
図２は、書き込みデータサイズが記録単位サイズ未満である場合における書き込み要求の処理モデルを示している。なお、このモデルでは、光ディスク１７０の記録単位サイズは６４Ｋバイトであるとしている。
【００３１】
（１）まず、メインメモリ（ユーザメモリ）１０３からＣＰＵ１０１内の図示しないキャッシュメモリ（ＰＣシステムキャッシュ）に書き込みデータを書き込む。この書き込みデータのサイズは４Ｋバイトである。
【００３２】
（２）次に、ＣＰＵ１０１から光ディスクドライブ１０６に、書き込み命令および書き込みデータを送る。光ディスクドライブ１０６は、この書き込み命令および書き込みデータを、キャッシュメモリ１６５に取り込む。
【００３３】
（３）次に、光ディスクドライブ１０６は、光ディスク１７０から、リードモデファイライト処理に必要な記録単位ブロック（下地データ）の読み出し処理を行う。この読み出し処理で得られる記録単位ブロックは、キャッシュメモリ１６５に取り込まれる。
【００３４】
（４）次に、光ディスク１７０から記録単位ブロックの読み出しができ、当該記録単位ブロックをキャッシュメモリ１６５に取り込んだ場合、光ディスクドライブ１０６はＣＰＵ１０１に成功を通知する。ＣＰＵ１０１は、当該成功の通知を受けることで、書き込みプロセスを解放することが可能となる。一方、傷などの影響で光ディスク１７０から記録単位ブロックの読み出しができなかった場合、光ディスクドライブ１０６はＣＰＵ１０１に同期エラーを通知する。ＣＰＵ１０１は、当該同期エラーの通知を受けることで、光ディスク１７０の別の記録領域を確保し、書き込み命令および書き込みデータを、再度光ディスクドライブ１０６に送ることが可能となる。
【００３５】
（５）次に、光ディスクドライブ１０６は、ＣＰＵ１０１に成功を通知したとき、キャッシュメモリ１６５に取り込まれた記録単位ブロック（下地データ）に書き込みデータを部分的に上書きする。
【００３６】
（６）次に、光ディスクドライブ１０６は、当該上書きして得られた記録単位ブロックを、光ディスク１７０に書き戻す。
【００３７】
図３は、書き込みデータサイズが記録単位サイズ未満である場合における書き込み要求の従来の処理モデルを比較例として示している。なお、このモデルでも、光ディスク１７０の記録単位サイズは６４Ｋバイトであるとしている。
【００３８】
（１）まず、メインメモリ（ユーザメモリ）１０３からＣＰＵ１０１内の図示しないキャッシュメモリ（ＰＣシステムキャッシュ）に書き込みデータを書き込む。この書き込みデータのサイズは４Ｋバイトである。
【００３９】
（２）次に、ＣＰＵ１０１から光ディスクドライブ１０６に、書き込み命令および書き込みデータを送る。光ディスクドライブ１０６は、この書き込み命令および書き込みデータを、キャッシュメモリ１６５に取り込む。
【００４０】
（３）次に、光ディスクドライブ１０６は、ＣＰＵ１０１に成功を通知する。ＣＰＵ１０１は、当該成功の通知を受けることで、書き込みプロセスを解放することが可能となる。
【００４１】
（４）次に、光ディスク１７０から、リードモデファイライト処理に必要な記録単位ブロック（下地データ）の読み出し処理を行う。
【００４２】
（５）次に、光ディスク１７０から記録単位ブロックの読み出しができたときは、キャッシュメモリ１６５に取り込まれた記録単位ブロック（下地データ）に書き込みデータを部分的に上書きする。
【００４３】
（６）そして、光ディスクドライブ１０６は、当該上書きして得られた記録単位ブロックを、光ディスク１７０に書き戻す。
【００４４】
なお、光ディスク１７０から記録単位ブロックの読み出しができなかったとき、光ディスクドライブ１０６は、上述の（５），（６）の処理を行うことができず、ＣＰＵ１０１からの次の（別の）命令に対して、ＣＰＵ１０１に遅延エラーとして報告する。この場合、ＣＰＵ１０１は、上述の（３）の処理で成功の通知が返されているため、書き込み要求の元データをキャッシュメモリから既に解放してしまっている可能性がある。書き込み要求の元データがキャッシュメモリから解放されている場合、ＣＰＵ１０１は再度別の領域に書き込みを行うことができなくなり、結局、当該データの書き込み自体が失敗する結果となる。
【００４５】
図４のフローチャートは、光ディスクドライブ１０６のコントローラ１６１における書き込み命令（ＷＲＩＴＥコマンド）に対するコマンド処理タスクを示している。
【００４６】
まず、コントローラ１６１は、ステップＳＴ１において、処理を開始し、その後にステップＳＴ２に移る。そして、コントローラ１６１は、ステップＳＴ２において、書き込み命令（（ＷＲＩＴＥコマンド）を受信してキャッシュメモリ１６５に取り込むと、ステップＳＴ３に移る。このステップＳＴ３において、コントローラ１６１は、遅延エラーキューが空であるか否かを判定する。
【００４７】
コントローラ１６１は、遅延エラーキューが空でないときは、ステップＳＴ４に移る。このステップＳＴ４において、コントローラ１６１は、遅延エラーキューからエラーパケット（ＥＲＲＯＲパケット）を取得する。そして、コントローラ１６１は、ステップＳＴ５において、ＣＰＵ１０１に、エラーパケットを送信してエラー通知を行い、その後に、ステップＳＴ２の処理に戻る。
【００４８】
なお、光ディスクドライブ１０６からＣＰＵ１０１への遅延エラーの通知は、ＣＰＵ１０１から光ディスクドライブ１０６に何かしらの命令（コマンド）が送られてきたときのみ行われる。したがって、上述のステップＳＴ３〜ステップＳＴ５の動作のように、ＣＰＵ１０１から光ディスクドライブ１０６に書き込み命令が送られてきた場合にも、遅延エラーキューが空でないときには、当該遅延エラーキューからエラーパケットが取得され、当該エラーパケットがＣＰＵ１０１に送信される。
【００４９】
コントローラ１６１は、ステップＳＴ３で遅延エラーキューが空であるときは、ステップＳＴ６に移る。このステップＳＴ６において、コントローラ１６１は、書き込みデータ（ＷＲＩＴＥデータ）を受信してキャッシュメモリ１６５に取り込むと、ステップＳＴ７に移る。このステップＳＴ７において、コントローラ１６１は、書き込みデータのデータサイズが、記録単位サイズ未満であるか、記録単位サイズの整数倍であるかを判定する。
【００５０】
データサイズが記録単位サイズの整数倍であるとき、コントローラ１６１は、ステップＳＴ８において、ＣＰＵ１０１に成功を通知し、その後に、ステップＳＴ９に移る。このように書き込みデータのデータサイズが記録単位サイズの整数倍であるときには、書き込みデータがキャッシュメモリ１６５に取り込まれた時点でＣＰＵ１０１に成功を通知するものであり、ライトバックキャッシング処理が行われる。
【００５１】
ステップＳＴ７でデータサイズが記録単位サイズ未満であるとき、コントローラ１６１は、直ちに、ステップＳＴ９に移る。このように書き込みデータのデータサイズが記録単位サイズ未満であるときには、書き込みデータがキャッシュメモリ１６５に取り込まれた時点でＣＰＵ１０１に成功が通知されず、ライトバックキャッシング処理とは異なる処理となる。
【００５２】
コントローラ１６１は、ステップＳＴ９において、ライトパケット（ＷＲＩＴＥパケット）をＩＯ要求キューに入れ、その後に、ステップＳＴ２の処理に戻る。そして、コントローラ１６１は、ＣＰＵ１０１から書き込み命令（ＷＲＩＴＥコマンド）を受信する都度、上述したと同様の処理を実行する。なお、ライトパケットは、書き込み命令と書き込みデータとから構成されている。
【００５３】
図５のフローチャートは、光ディスクドライブ１０６のコントローラ１６１における書き込み処理タスクを示している。
【００５４】
まず、コントローラ１６１は、ステップＳＴ１１において、処理を開始し、その後にステップＳＴ１２に移る。このステップＳＴ１２において、コントローラ１６１は、ＩＯ要求キューからライトパケットを取得する。そして、コントローラ１６１は、ステップＳＴ１３において、書き込みデータのデータサイズが記録単位サイズ未満であるか、記録単位サイズの整数倍であるかを判定する。データサイズが記録単位サイズの整数倍であるとき、コントローラ１６１は、ステップＳＴ１４に移る。一方、データサイズが記録単位サイズ未満であるとき、コントローラ１６１は、ステップＳＴ１５に移る。
【００５５】
このステップＳＴ１５において、コントローラ１６１は、メディア入出力制御部１６４を用いて、光ディスク１７０から、リードモデファイライト処理に必要な記録単位ブロック（下地データ）の読み出し処理を行う。そして、コントローラ１６１は、ステップＳＴ１６において、当該読み出しが成功したか否かを判定する。読み出しが成功しなかったとき、コントローラ１６１は、ステップＳＴ１７において、ＣＰＵ１０１に同期エラーを通知し、その後に、ステップＳＴ１２に戻る。ＣＰＵ１０１は、当該同期エラーの通知を受けることで、光ディスク１７０の別の記録領域を確保し、書き込み命令および書き込みデータを、再度光ディスクドライブ１０６に送ることが可能となる。
【００５６】
ステップＳＴ１６で読み出しが成功したとき、コントローラ１６１は、リードモデファイライト処理が可能になることから、ステップＳＴ１８において、ＣＰＵ１０１に成功を通知し、その後にステップＳＴ１９に移る。ＣＰＵ１０１は、当該成功の通知を受けることで、書き込みプロセスを解放することが可能となる。
【００５７】
コントローラ１６１は、ステップＳＴ１９において、書き込みデータ（ＷＲＩＴＥデータ）を作成し、その後に、ステップＳＴ１４に移る。ここで、書き込みデータは、上述したように、キャッシュメモリ１６５に取り込まれた記録単位ブロック（下地データ）に、ＣＰＵ１０１から送られてきた書き込みデータを部分的に上書きすることで作成される。
【００５８】
コントローラ１６１は、ステップＳＴ１４において、メディア入出力制御部１６４を用いて書き込みデータを光ディスク１７０に書き込む処理を行う。この場合、書き込みデータは、記録単位サイズ毎に、記録単位ブロックとして、光ディスク１７０に書き込まれる。そして、コントローラ１６１は、ステップＳＴ２０において、書き込みが成功したか否かを判定する。書き込みが成功したとき、コントローラ１６１は、ステップＳＴ１２の処理に戻る。
【００５９】
光ディスク１７０上の傷などが原因で書き込みが成功しなかったとき、コントローラ１６１は、ステップＳＴ２１に移る。このステップＳＴ２１において、コントローラ１６１は、記録領域の交替が可能であるか否かを判定する。交替が可能であるとき、コントローラ１６１は、ステップＳＴ２２において、交替処理を行い、その後に、ステップＳＴ１４の処理に戻り、以下上述したと同様の処理を行う。一方、交替が不可能であるとき、コントローラ１６１は、ステップＳＴ２３に移る。このステップＳＴ２３において、コントローラ１６１は、エラーパケットを遅延エラーキューに入れる。そして、コントローラ１６１は、ステップＳＴ２３の処理の後に、ステップＳＴ１２の処理に戻る。
【００６０】
なお、図４および図５に示すように、上述では書き込み命令のコマンド処理と書き込み処理とがマルチタスク構成とされているが、シングルタスク構成であってもよい。
【００６１】
図６は、光ディスクドライブ１０６からＣＰＵ１０１に同期エラーが通知されたとき（図５のステップＳＴ１７参照）、つまり同期エラー発生時の再記録の様子を示している。
【００６２】
（１）ＣＰＵ１０１から光ディスクドライブ１０６に、記録単位サイズ（６４Ｋバイト）より小さいサイズの書き込みデータ（斜線図示）が書き込み命令と共に送られてくる。
【００６３】
（２）光ディスクドライブ１０６は、書き込みデータのデータサイズが記録単位サイズ未満であるので、リードモデファイライト処理を行うために、ＣＰＵ１０１側で確保された光ディスク１７０の記録領域から記録単位ブロック（下地データ）の読み出し処理を行うが、当該記録単位ブロックの読み出しに失敗する（「×」で図示）。
【００６４】
（３）光ディスクドライブ１０６はリードモデファイライト処理に必要な記録単位ブロック（下地データ）の読み出しに失敗したため、同期エラーをＣＰＵ１０１に通知する。
【００６５】
（４）ＣＰＵ１０１では、同期エラーの通知を受けて光ディスク１７０に新たな記録領域が確保される。そして、ＣＰＵ１０１から光ディスクドライブ１０６に、再度、書き込みデータ（斜線図示）が付加された書き込み命令が送られてくる。光ディスクドライブ１０６では、ＣＰＵ１０１側で新たに確保された記録領域に、リードモデファイライト処理により書き込みデータが書き込まれる。
【００６６】
なお、光ディスクドライブ１０６は、ＣＰＵ１０１側で新たに設定された光ディスク１７０の記録領域からリードモデファイライト処理に必要な記録単位ブロック（下地データ）の読み出しに失敗する場合には、再度、同期エラーをＣＰＵ１０１に通知することになる。
【００６７】
図７のフローチャートは、ＣＰＵ１０１のファイルシステムドライバ（図示せず）の処理を示している。
【００６８】
まず、ファイルシステムドライバは、ステップＳＴ３１において、処理を開始し、ステップＳＴ３２に移る。このステップＳＴ３２において、ファイルシステムドライバは、図示しないＯＳ(Operating System)からファイル書き込み要求を取得すると、ステップＳＴ３３に移る。このステップＳＴ３３において、ファイルシステムドライバは、光ディスク１７０に記録領域を確保済みであるか否かを判定する。記録領域を確保済みであるとき、ファイルシステムドライバは、ステップＳＴ３４に移る。
【００６９】
記録領域を確保済みでないとき、ファイルシステムドライバは、ステップＳＴ３５に移る。このステップＳＴ３５において、ファイルシステムドライバは、光ディスク１７０に記録領域の確保が可能であるか否かを判定する。記録領域の確保が不可能であるとき、ファイルシステムドライバは、ステップＳＴ３６において、ＯＳにエラー通知を行う。そして、ファイルシステムドライバは、ステップＳＴ３７において、ＯＳが書き込みデータをキャッシュメモリから解放した後、ステップＳＴ３２の処理に戻る。
【００７０】
ステップＳＴ３５で記録領域の確保が可能であるとき、ファイルシステムドライバは、ステップＳＴ３８において、光ディスク１７０に記録領域を確保し、その後に、ステップＳＴ３４に移る。
【００７１】
このステップＳＴ３４において、ファイルシステムドライバは、キャッシュメモリに格納されている書き込みデータが付加された書き込み命令（ＷＲＩＴＥコマンド）を発行し、光ディスクドライブ１０６に送る。そして、ファイルシステムドライバは、ステップＳＴ３９において、書き込みが成功したか否かを判定する。この場合、ファイルシステムドライバは、光ディスクドライブ１０６から成功の通知がある場合には書き込みが成功したと判定し、光ディスクドライバ１０６から同期エラーの通知がある場合には書き込みが成功しなかったと判定する。
【００７２】
書き込みが成功したとき、ファイルシステムドライバは、ステップＳＴ４０において、ＯＳに成功を通知し、その後に、ステップＳＴ３７を経て、ステップＳＴ３２の処理に戻る。一方、書き込みが成功しなかったとき、ファイルシステムドライバは、ステップＳＴ４１に移る。
【００７３】
このステップＳＴ４１において、ファイルシステムドライバは、光ディスク１７０に新たに記録領域を確保できるか否かを判定する。記録領域を確保できるとき、ファイルシステムドライバは、ステップＳＴ４２において、記録領域を再確保し、その後にステップＳＴ３４に戻る。ファイルシステムドライバは、このステップＳＴ３４において、光ディスクドライブ１０６に、再度、キャッシュメモリに格納されている書き込みデータが付加された書き込み命令を送る。
【００７４】
また、ステップＳＴ４１で記録領域を確保できないとき、ファイルシステムドライバは、ステップＳＴ４３において、ＯＳにエラーを通知し、その後に、ステップＳＴ３７を経て、ステップＳＴ３２の処理に戻る。
【００７５】
図１に示す光ディスク記録装置１００においては、ＣＰＵ１０１から光ディスクドライブ１０６に送られる書き込みデータのデータサイズが光ディスク１７０の記録単位サイズ未満である場合、光ディスクドライブ１０６は、当該書き込みデータがキャッシュメモリ１６５に格納された時点ではＣＰＵ１０１に成功を通知せず、リードモデファイライト処理に必要な記録単位ブロック（下地データ）を光ディスク１７０から読み出すことが成功した時点でＣＰＵ１０１に成功を通知する。
【００７６】
そして、光ディスクドライブ１０６は、リードモデファイライト処理に必要な記録単位ブロック（下地データ）を光ディスク１７０から読み出すことに失敗した場合にはＣＰＵ１０１に同期エラーを通知する。そのため、ＣＰＵ１０１は、当該同期エラーの通知を受けて、光ディスク１７０に新たな記録領域を確保して、データの書き込みを行うことが可能となる。
【００７７】
したがって、ＣＰＵ１０１から光ディスクドライブ１０６に送られる書き込みデータのデータサイズが光ディスク１７０の記録単位サイズ未満である場合、光ディスクドライブ１０６ではライトバックキャッシュング処理とは異なる処理が行われることになるが、データの書き込みを良好に行うことができる。
【００７８】
なお、この場合、ライトバックキャッシング処理とは異なる処理を行うので、ＣＰＵ１０１側では、書き込みプロセスが早く解放されるというメリットは得られなくなる。しかし、オペレーションシステム（ＯＳ）は、なるべく記録単位サイズで書き込みを行おうとするため、ＣＰＵ１０１から光ディスクドライブ１０６に送られてくる書き込みデータのサイズが記録単位サイズより小さくなる頻度はそれ程多くはない。
【００７９】
また、図１に示す光ディスク記録装置１００においては、ＣＰＵ１０１から光ディスクドライブ１０６に送られる書き込みデータのデータサイズが光ディスク１７０の記録単位サイズの整数倍である場合には、光ディスクドライブ１０６は、当該書き込みデータがキャッシュメモリ１６５に格納された時点ではＣＰＵ１０１に成功を通知するものであって、ライトバックキャッシング処理が行われるので、ＣＰＵ１０１側では、書き込みプロセスが早く解放されるというメリットがある。
【００８０】
なお、上述実施の形態においては、記録メディアが光ディスク１７０である光ディスク記録装置１００を例にとって説明したが、この発明は磁気ディスク、半導体メモリ等のその他の記録メディアを用いる記録装置にも同様に適用できることは勿論である。また、上述実施の形態における記録単位サイズの数値例は一例であって、これに限定されるものではない。
【産業上の利用可能性】
【００８１】
この発明は、例えば、書き込みデータのサイズが光ディスクの記録単位サイズより小さいとき、リードモデファイライト処理によりデータの書き込みを行うようにした光ディスク記録装置等に適用できる。
【図面の簡単な説明】
【００８２】
【図１】実施の形態としての光ディスク記録装置の構成例を示すブロック図である。
【図２】書き込みデータサイズが記録単位サイズ未満である場合における書き込み要求の処理モデルを示す図である。
【図３】書き込みデータサイズが記録単位サイズ未満である場合における書き込み要求の従来の処理モデルを比較例として示す図である。
【図４】光ディスクドライブのコントローラにおける書き込み命令（ＷＲＩＴＥコマンド）に対するコマンド処理タスクを示すフローチャートである。
【図５】光ディスクドライブのコントローラにおける書き込み処理タスクを示すフローチャートである。
【図６】光ディスクドライブからＣＰＵに同期エラーが通知されたとき（同期エラー発生時）の再記録の様子を示す図である。
【図７】ＣＰＵのファイルシステムドライバの処理を示すフローチャートである。
【符号の説明】
【００８３】
１００・・・光ディスク記録装置、１０１・・・ＣＰＵ、１０２・・・Ｉ／Ｏブリッジ、１０３・・・メインメモリ、１０４・・・バスインタフェース、１０５・・・内部バス、１０６・・・光ディスクドライバ、１０７・・・ハードディスクドライブ、１６１・・・コントローラ、１６２・・・バスインタフェース、１６３・・・内部バス、１６４・・・メディア入出力制御部、１６５・・・キャッシュメモリ、１７０・・・光ディスク
【図１】
2008176889.tif 000003
【図２】
2008176889.tif 000004
【図３】
2008176889.tif 000005
【図４】
2008176889.tif 000006
【図５】
2008176889.tif 000007
【図６】
2008176889.tif 000008
【図７】
2008176889.tif 000009