(57)【特許請求の範囲】
【請求項１】
複数のブロックで構成された所定データ長からなるパケットを記録単位とし、前記パケットと次のパケットとの間に書込の不連続点であるリンクブロックが形成されるようにデータが記録された光ディスクからデータを連続的に読み出すデータ読出手段と、
このデータ読出手段によって前記光ディスクから読み出されたデータをデコードすると共に前記各ブロック毎にエラー検出／訂正の処理を実行するデコード手段と、
このデコード手段でデコード及びエラー検出／訂正されたブロックを順次格納するデータバッファと、
このデータバッファに格納されたブロックに訂正不能なエラーが発生した場合、エラーの発生したブロックが前記リンクブロックである場合には前記データ読出手段の読出動作を継続し、エラーの発生したブロックが前記リンクブロックでない場合にはそのブロックを無効にして前記データ読出手段の読出動作を停止する制御手段と
を備えたことを特徴とする光ディスク読出装置。
【請求項２】
前記データバッファに格納された訂正不能なエラーが発生したブロックの格納位置を管理するリードエラー管理テーブルを更に備えたことを特徴とする請求項１記載の光ディスク読出装置。
【請求項３】
前記制御手段は、外部からデータ読み出し要求があったとき、前記リードエラー管理テーブルを参照して前記データバッファに格納された訂正不能なエラーの発生したブロックの読み出しを禁止するものであることを特徴とする請求項２記載の光ディスク読出装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＣＤ−Ｒ（Compact Disc-Recordable）、ＤＶＤ（Digital Video Disc-Recordable）のようにデータがパケット単位で記録された光ディスクからデータを読み出す光ディスク読出装置に関し、特にデータの先読みにより読み出し性能を向上させるようにした光ディスク読出装置に関する。
【０００２】
【従来の技術】
ＣＤ−Ｒディスクに対するデータの記録方式としては、１回の記録動作でディスク１枚分のデータを連続して記録するディスクアットワンスや、１枚のディスクに複数のセッションを追記の形式で許容するトラックアットワンス等があるが、これらはいずれも１回の記録データ量が多く、しかも１回の記録で１０〜２０Ｍバイトの管理用領域を消費するため、少量のデータを何度も追記する用途には不向きである。これに対し、少量のデータをパケット単位でディスクに書き込むパケットライトは、従来のハードディスクのような感覚で必要なファイルを必要なときに追記できるという利点があるため、ＣＤ−Ｒをコンピュータの外部記憶装置として利用する用途などで最近注目されている。
【０００３】
図５は、このようなパケットライトの記録フォーマットを示す図である。
１つのトラックは、先頭の管理領域であるプリギャップと、これに続く複数のパケットから構成される。データはパケット単位で書き込まれるので、新たに書き込むパケットは、既に書き込まれたパケットに続く形でディスクに記録される。このため、トラックの先頭のプリギャップには、トラックディスクリプタが設けられ、ここに記録された最終書込パケットの位置情報を参照して新たなパケットの記録位置を決定する。また、パケットを追記する場合、既に記録されているパケットと新たに記録されるパケットとを物理的に連続させることは不可能であるため、パケットとパケットの間にはリンクブロック（Link）と呼ばれる実際には読めないブロックが形成される。従って、記録フォーマット上、これらのパケットを連続させるため、パケットとパケットの継ぎ足しの期間には、スプライスとよばれる書き継ぎのため情報が形成される。このスプライスは、パケットの末尾に形成されるランアウト（Run-out）×２ブロックと、パケットの先頭に形成される上述したLink×１ブロック及びランイン（Run-in）×４ブロックの計７ブロックから構成される。
【０００４】
パケットの長さは、外部のホストコンピュータによって決定される。パケットは複数のブロック（セクタ）から構成され、通常、１ブロックが２Ｋバイト程度であるから、理論的には２Ｋバイト単位でパケット長を決定することができるが、スプライスに１４Ｋバイトを消費するため、パケットの長さがあまり短すぎると記録領域の有効利用率が低下する。このため、一般には、記録領域の有効利用率が８割以上となるように、パケットの長さは、６４Ｋバイト、１２８Ｋバイトのような長さに設定される。
【０００５】
【発明が解決しようとする課題】
ところで、ホストコンピュータがＣＤからデータを読み出す場合、ＣＤからデータを連続的に読み出すことが多い。このため、ＣＤ−ＲＯＭドライブのような光ディスク読出装置では、指定された範囲のデータを読み出す際に、その範囲のデータが読み出された後も読み出し動作を続行し、続くデータの部分を内部のデータバッファに先読みしておくことにより、次のホストコンピュータからのアクセスに対する読み出し性能を向上させるようにしている。
【０００６】
しかしながら、上述したように、パケットライトされたデータを先読みのために連続的に読み出すと、パケットとパケットとの間の書き込みの不連続点であるリンクブロックLinkで訂正不能なエラーが発生する。この場合、その部分でシークリトライが何度が繰り返され、結局、リード不能となるために、先読み動作が停止することになり、読出性能が低下するという問題があった。
【０００７】
この発明は、このような問題点に鑑みなされたもので、パケットライトされたデータの先読み動作中にパケットとパケットの間のリンクブロックでエラーが発生した場合でも読出性能が低下することがない光ディスク読出装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
この発明は、複数のブロックで構成された所定データ長からなるパケットを記録単位とし、前記パケットと次のパケットとの間に書込の不連続点であるリンクブロックが形成されるようにデータが記録された光ディスクからデータを連続的に読み出すデータ読出手段と、このデータ読出手段によって前記光ディスクから読み出されたデータをデコードすると共に前記各ブロック毎にエラー検出／訂正の処理を実行するデコード手段と、このデコード手段でデコード及びエラー検出／訂正されたブロックを順次格納するデータバッファと、このデータバッファに格納されたブロックに訂正不能なエラーが発生した場合、エラーの発生したブロックが前記リンクブロックである場合には前記データ読出手段の読出動作を継続し、エラーの発生したブロックが前記リンクブロックでない場合にはそのブロックを無効にして前記データ読出手段の読出動作を停止する制御手段とを備えたことを特徴とする。
【０００９】
この発明は、より好ましくは、前記データバッファに格納された訂正不能なエラーが発生したブロックの格納位置を管理するリードエラー管理テーブルを更に備える。
この発明は、更に前記制御手段が、外部からデータ読み出し要求があったとき、前記リードエラー管理テーブルを参照して前記データバッファに格納された訂正不能なエラーの発生したブロックの読み出しを禁止するものであることが望ましい。
【００１０】
この発明によれば、データバッファへの先読み動作中に訂正不能なエラーが発生した場合でも、そのブロックがパケットとパケットとの間のリンクブロックである場合には、先読み動作は継続されるので、読み出し性能が低下することがない。この場合、データバッファ内には、不正なブロックのデータが格納されてしまうが、外部のホストコンピュータは、通常の処理では、パケットとパケットとの間のデータはリードしないので、不正なデータが外部に読み出されることはない。
【００１１】
なお、リードエラー管理テーブルを設けて、データバッファ内に格納されたエラーブロックの格納位置を管理するようにすれば、万一、エラーブロックに対する例外的なリード要求があった場合でも、リードを禁止することでホストコンピュータに不正なデータが読み出されるのを確実に防止することができる。
【００１２】
【発明の実施の形態】
以下、図面を参照して、この発明の好ましい実施の形態について説明する。
図１は、この発明の実施例に係るＣＤ−Ｒドライブ装置の構成を示すブロック図である。
ホストコンピュータ（以下、ホストという）からパケット単位で供給される記録すべきファイルのデータは、インタフェース１を介して複数パケット分の記憶容量を持つライトバッファ（データバッファ）２に格納され、システムコントローラ３の制御のもとでライトバッファ２から読み出される。ライトバッファ２に格納されるパケットの前後には、パケットの開始と終了とを示す識別子が付加されており、パケット数カウンタ４は、この識別子を識別してライトバッファ２にパケットが１つ格納される毎にパケット数ＰＣをカウントアップし、ライトバッファ２からパケットが１つ読み出される毎にパケット数ＰＣをカウントダウンする。従って、パケット数カウンタ４には、常にライトバッファ２に現在格納されているパケット数ＰＣが保持される。
【００１３】
システムコントローラ３は、パケット数ＰＣやホストからの各種コマンドに基づいてライトバッファの入出力を制御する。ライトバッファ２から読み出されたデータは、エンコーダ５に供給される。エンコーダ５は、入力されたデータをパケット単位で記録フォーマットに変換する。具体的には、供給されたデータにブロック（セクタ）単位でＥＣＣ（Error Corection Code）／ＥＤＣ（Error Detection Code）を付加し、必要に応じてセクタインタリーブをかけ、システムコントローラ３から与えられるLink，Run-in，Run-out等のスプライスを付加し、ＥＦＭ（Eight to Fourteen Modulation）変調して、ライトデータを生成する。
【００１４】
エンコーダ５から出力されるライトデータは、アンプ６を介して光ヘッド７に供給される。光ヘッド７は、供給されたライトデータによってレーザ光のパワーを変調して光ディスク８に記録ピットを形成する。サーボコントローラ９は、システムコントローラ３からの指令に従って、アンプ６によるレーザパワーの制御、光ヘッド７のシーク制御、光ディスク８を回転駆動するスピンドルモータ１０の回転制御を実行する。
【００１５】
一方、光ディスク８から光ヘッド７を介して読み出されたリードデータは、アンプ１１を介してデコーダ１２に入力される。デコーダ１２は、入力されたリードデータをＥＦＭ復調し、必要に応じてデインタリーブ処理を行い、ブロック単位でＥＣＣ／ＥＤＣによるエラーチェック／エラー訂正を行ったのち、リードバッファ１３に格納する。システムコントローラ３は、エラーブロックが発生した場合、基本的にはそれを無効として読み出し動作を停止するが、エラーブロックがリンク部のブロックである場合には、そのままリードバッファ１３への読み出し動作を続行し、リードエラー管理テーブル１４にそのブロックがエラーブロックであることを登録する。リードバッファ１３に格納されたリードデータは、ホスト側からのリード要求に応じてインタフェース１を介してホスト側に読み出される。
【００１６】
次に、このように構成されたＣＤ−Ｒドライブにおける連続リード動作について説明する。
図２は、この実施例に係る連続リード時のシステムコントローラ３の動作フローチャートである。
まず、指定された範囲で１ブロックずつデータをリードする（Ｓ１）。リードされたブロックに対してエンコーダ１２でＥＣＣ／ＥＤＣに基づくエラー検出／訂正処理を実行した結果、そのブロックがエラーブロックでない場合には、次のブロックをリードするが（Ｓ２，Ｓ６）、リードされたブロックが訂正不能なエラーであった場合には、そのエラーブロックがリンクブロックLinkであるかどうかを判定する（Ｓ３）。リンクブロックであるかどうかは、例えばパケットサイズ毎に現れるリンクブロックのアドレスを予測することにより、又はブロックのヘッダフィールド等を参照することにより判定することができる。もし、エラーブロックがリンクブロックである場合には、リードエラー管理テーブル１４にそのブロックを登録し（Ｓ４）、次のブロックのリードを続行する（Ｓ６，Ｓ１）。また、エラーブロックがリンクブロックでない場合には、リードしたブロックを無効にしてリード動作を停止する（Ｓ５）。
【００１７】
このような一連の連続リードにより、リードエラー管理テーブル１４には、図３に示すように、リードバッファ１３に格納されたブロックのデータのうち、エラーブロックとなったリンクブロックの格納位置を示すポインタが格納されることになる。
図４は、ホストからリードコマンドを受信したときのシステムコントローラの処理を示すフローチャートである。
まず、ホストからリードコマンドを受信すると、システムコントローラ３は、リードバッファ１３内に要求されたデータが存在するかどうか調べるが（Ｓ１）、最初はリードバッファ１３がエンプティ状態であるため、システムコントローラ３は、シーク動作を実行し（Ｓ１４）、前述した連続リード動作により、リードバッファ１３にそのデータが格納されるまで待つ（Ｓ１５）。そして、リードバッファ１３に目的のデータが格納されたら、それがエラーでない限り（Ｓ１２）、リードバッファ１３内のデータをホストに送る（Ｓ１６）。
【００１８】
要求されたデータがホストに送られた後も、リードバッファ１３がバッファフルの状態になるまでリードデータの読み出しは続行される。これはホストから引き続きリード要求があったときに備えるための先読み処理である。この先読み処理も含めて前述した連続リード処理が実行される。先読みされた後に、ホストからリードコマンドが供給されると、システムコントローラ３は、リードバッファ１３に要求されたデータが格納されているかどうかを調べ（Ｓ１１）、既にリードバッファ１３内に要求されたデータが格納されている場合には、リードエラー管理テーブル１４を参照して、そのデータがエラー登録されているかどうかを調べ（Ｓ１２）、エラー登録されていない場合には、リードバッファ１３内から要求されたデータを読み出してインタフェース１を介してホストにデータを送る（Ｓ１６）。
【００１９】
一方、上述した先読み動作でリードバッファ１３には、エラーブロックであるリンクブロックが一定の間隔で格納されることになるが、通常、ホストはパケットの開始から終了までを把握しているので、リンクブロックのデータはリードしない。このため、ホストに不正なデータが読み出されることはない。
しかしながら、ホストのＯＳ（Operation System）レベルの先読み処理や光ディスクの検査等のためのリード等で、そのようなエラーブロックに対するダイレクトなリード要求が発生することも考えられる。そこで、ホストからこのようなエラーブロックに対してリード要求がなされた場合、即ち、要求されたデータがリードエラー管理テーブル１４に登録されている場合（Ｓ１２）には、シークリトライ動作を繰り返し（Ｓ１４）、予め定めた回数だけシークリトライした段階で処理を終了する（Ｓ１３）。これにより、不正なデータの読み出しが防止される。なお、シークリトライするのは、１回のエラーブロックの判定では、判定結果がたまたま誤りであることも予想されるからである。
【００２０】
【発明の効果】
以上述べたように、この発明によれば、データバッファへの先読み動作中に訂正不能なエラーが発生した場合でも、そのブロックがパケットとパケットとの間のリンクブロックである場合には、先読み動作は継続されるので、読み出し性能が低下することがなく、しかも外部のホストコンピュータは、通常の処理では、パケットとパケットとの間のデータはリードしないので、不正なデータが外部に読み出されることはないという効果を奏する。
【図面の簡単な説明】
【図１】  この発明の一実施例に係るＣＤ−Ｒドライブ装置の構成を示すブロック図である。
【図２】  同装置における連続リード時のシステムコントローラの動作フローチャートである。
【図３】  同装置におけるリードバッファとリードエラー管理テーブルとの関係を示す図である。
【図４】  同装置におけるホストからリード要求があった場合の処理を示すフローチャートである。
【図５】  ＣＤ−Ｒにおけるパケットライトの記録フォーマットを示す図である。
【符号の説明】
１…インタフェース、２…ライトバッファ、３…システムコントローラ、４…パケット数カウンタ、５…エンコーダ、６，１１…アンプ、７…光ヘッド、８…光ディスク、９…サーボコントローラ、１０…スピンドルモータ、１２…デコーダ、１３…リードバッファ、１４…リードエラー管理テーブル。
【図１】
0003796858.tif 000002
【図２】
0003796858.tif 000003
【図３】
0003796858.tif 000004
【図４】
0003796858.tif 000005
【図５】
0003796858.tif 000006