(57)【特許請求の範囲】
【請求項１】
ディスクドライブでリードエラーが発生した場合のリードリトライ方法において、リードエラーが解消するまでディスク回転数を下げる減速段階と、これによるリードエラー解消後にデータリードを継続しつつ徐々にディスク回転数を上げていく加速段階と、を実行するようにし、
前記加速段階で、リードエラー解消後に所定の区間連続してリードに成功するとディスク回転数を上げ、
前記リードエラーのエラー要因に応じてリード成功を判断する区間を調整することを特徴とするリードリトライ方法。
【請求項２】
ＥＣＣエラーとサーボエラーとでリード成功を判断する区間を変える請求項１記載のリードリトライ方法。
【請求項３】
減速段階で、ディスク回転数を段階的に下げていく請求項１または２のいずれか１項に記載のリードリトライ方法。
【請求項４】
加速段階を実行中に再びリードエラーが発生すると減速段階から再実行する請求項１〜３のいずれか１項に記載のリードリトライ方法。
【請求項５】
リードエラー発生時のディスク回転数を維持したままでエラー箇所のリードを規定回数繰り返すリカバリー段階を実行してもリードエラーが解消しない場合に、減速段階を実行する請求項１〜３のいずれか１項に記載のリードリトライ方法。
【請求項６】
加速段階を実行中に再びリードエラーが発生するとリカバリー段階から再実行する請求項５記載のリードリトライ方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＣＤ−ＲＯＭドライブに代表されるディスクドライブに関する。
【０００２】
【従来の技術】
最近のパーソナルコンピュータやワークステーションで用いるＣＤ−ＲＯＭドライブは、８倍速や１２倍速などの高速でアクセスするためにリードエラーが起こりやすくなっている。
【０００３】
これらの高速ディスクドライブでは、リードエラーが発生した場合に繰り返しリードを試みるリードリトライ処理を実行するようにしてあるが、これには次の３方式がある。すなわち、（１）ディスク回転数を維持したまま所定回数リトライする通常方式、（２）通常方式でエラー解消しないとディスク回転数を落とし、リードに成功すると直ちに元の回転数に戻す一時減速方式、（３）通常方式でエラー解消しないとディスク回転数を落とし、リードに成功した低回転数を維持して以降のリードを続行する減速方式、である。
【０００４】
【発明が解決しようとする課題】
上記従来の各リードリトライ方式には一長一短があり、それぞれに改善点を抱えている。まず、（１）の方式では、ディスク回転数を維持したままなのでエラー訂正能力が低い。また（２）の方式では、エラー訂正能力に優れるものの、リードエラー発生でディスク回転数を急減速させた後にエラー解消すると一気に元の回転数へ戻す急加速を行うことから、スピンドルモータの急な回転制御が頻繁になり負荷が大きい。さらに、エラー解消で直ちに元の回転数へ戻すため、ディスクの傷によるエラーなどの場合はまたすぐに傷の箇所でリードエラー発生となり、エラー発生頻度を低くすることはできない。そして（３）の方式では、エラー発生後はリードに成功した低速回転数のままになるためデータの転送レートが落ち、ドライブ本来の性能を発揮できなくなる。
【０００５】
そこで本発明では、エラー訂正能力に優れるとともにリードエラーの発生頻度を低めることができ、さらに転送レートも極力高く維持できるようなリードリトライ方法を提供する。
【０００６】
【課題を解決するための手段】
本発明によれば、ディスクドライブでリードエラーが発生した場合のリードリトライ方法において、リードエラーが解消するまでディスク回転数を下げる減速段階と、これによるリードエラー解消後にデータリードを継続しつつ徐々にディスク回転数を上げていく加速段階と、を実行することを特徴とする。すなわち、ディスク回転数を下げることでエラー訂正率を上げ、且つエラー解消後には、従来の（２）の方式のように一気に元の回転数へ戻すのではなく、データリードしながら徐々に、つまりある程度の時間をかけて所定の勾配（段階的加速も含む）で回転数を上げることで、あまり回転数の上がらないうちに早めに次のエラーを検知することができ、無駄なリトライ時間をかけずに済み、エラー発生頻度も抑えることができてスピンドルモータの急激な回転数制御も避けられる。
【０００７】
加速段階では、リードエラー解消後に所定の区間連続してリードに成功するとディスク回転数を上げていく。リードエラーのエラー要因によってリード成功を判断する区間の調整を行い、エラー要因とは、具体的にはＥＣＣエラーとサーボエラーとである。ＥＣＣエラーの場合は、短い区間の傷、汚れを想定して調整しており、この区間以後は通常の高い転送レートで転送を行える。サーボエラーの場合は、面振れを想定しており、面振れディスクはＣＬＶ時に外周での回転数が低いため、外周側では高い転送レートでのリード可能な場合が多く、この場合も高い転送レートで転送を行える。
【０００８】
このようなリトライ方法ではさらに、減速段階で、ディスク回転数を段階的（ステップ状）に下げていくようにすれば、可能な限り高い転送レートを維持してエラー解消を行えることになり、好ましい。
【０００９】
また、加速段階を実行中にリードエラーが再び発生すると減速段階から再実行する。このために早めにエラー発生を検知して無駄なリトライを行わずに済む。
【００１０】
あるいは減速段階は、リードエラー発生時のディスク回転数を維持したままでエラー箇所のリードを規定回数繰り返すリカバリー段階を実行してもリードエラーが解消しない場合に実行し、加速段階を実行中に再びリードエラーが発生するとリカバリー段階から再実行する。リカバリー段階により可能な限り高い転送レートが保たれ、減速段階によりエラー訂正能力が向上する。この組合せにより高い転送レートと高いエラー訂正能力が発揮される。
【００１１】
【発明の実施の形態】
本発明の実施形態について図面を参照して説明する。
【００１２】
図１は本例のリードリトライ方法のフローチャートである。フローチャート内でｎはリカバリーのリトライ規定回数、ｍはｎより小さい数字で例えば１〜５のいずれかの数字、Ａは傷、汚れを想定した場合の区間（時間）に相当するブロック数、ＢはＣＬＶ時の回転数より想定したブロック数である。また最大リトライ回数の初期値はｎとする。
【００１３】
ステップ１０でリードエラーが起きると、ステップ２０及びステップ３０でエラー要因を特定する。ステップ２０でエラーがＥＣＣエラーと判断されるとステップ２５で連続ブロック数を”Ａ”に設定し、ステップ３０でエラーがサーボ異常、特に面振れであると判断されるとステップ３５で連続ブロック数を”Ｂ”に設定する。ステップ２５又はステップ３５で連続ブロック数を設定すると、ステップ４０でブロックカウントを０にする。
【００１４】
その後、ステップ５０でリトライ回数をチェックし、設定されている最大リトライ回数に達しないうちはステップ１０に戻って上記（１）方式のリトライ（リカバリー）を実行する。一方、最大リトライ回数になると、ステップ６０に進んでスピンドルモータの回転数を１遅くする。そして、ステップ７０で最大リトライ回数を”０”に設定し、ステップ８０で、ステップ６０で設定したスピンドルモータの回転数が最低回転数に達したかどうか判断し、これ以上減速できない場合はリードエラーとして処理する。一方、まだ回転数を下げられる場合はステップ１０に戻ってステップ６０で下げた回転数でリードリトライを行う。
【００１５】
このステップ１０〜８０の一連の動作により、リードエラーがあったときにまずリカバリー段階でｎ回リトライした後、スピンドルモータの回転数を段階的に減速しながらリードリトライを実行する減速段階が実行される。そして、スピンドルモータを最も遅い速度にしてもリードできなかった場合はリードエラーとして処理を行い、リードできた場合は引き続きリードを行う。このときに、スピンドルモータの減速を段階的に行うために、ディスクの傷や汚れ、面振れの程度によって、それらの異常があってもリード可能な最速の回転数でリードを行うことができる。
【００１６】
以上のステップによりリードエラーが解消するとステップ９０以降の処理が実行される。
【００１７】
最初にステップ９０でブロックカウントを１加算し、ステップ１００でそのブロックカウントとステップ２５、３５による連続ブロック数とを比較し、ブロックカウントが連続ブロック数以上の時はステップ１１０に進み、未満の時はステップ１２０に進む。このステップ１００によるブロックカウント数と連続ブロック数との比較で、リードエラー解消後にリード成功する区間の長さがエラー要因に応じてチェックされ、エラー要因別に設定された連続ブロック数以上連続してリード成功すると、エラーが連続して発生する可能性が減ったとしてステップ１１０に進む。
【００１８】
ステップ１１０に進むと、スピンドルモータの回転数を徐々に加速してステップ１２０へ進む。ステップ１２０では、現在のスピンドルモータの回転数が最高速かどうかを判断し、最高速の場合はステップ１４０で最大リトライ回数をｎ回に設定し、最高速に達しないうちはステップ１３０で最大リトライ回数をｍ回に設定して、引き続きリード動作を行う。ステップ１３０で最大リトライ回数をｍ回に設定するのは、加速段階で再びエラーが発生した場合は同じ要因による可能性が高いので、回転数を維持して行うリカバリー段階のリトライ回数は少なくして減速段階へ移行し、処理を早めるためである。
【００１９】
ステップ９０〜１４０によって、エラー後に順当にリードが行われているとスピンドルモータの回転数を徐々に速くし、エラーが再発生する場合は素早くエラー解消した回転数へ落として処理することを可能としつつ、最高速にまで戻して動作させることが可能となる。
【００２０】
以上のような方法で、リードエラー発生時のスピンドルモータの回転数を制御すると、図２に示すような回転数の変化になる。図２の分図Ａは従来の（２）、（３）の方式で回転数を制御したときの回転数の変化で、分図Ｂは本発明の実施形態による方法で回転数を制御したときの回転数の変化である。
【００２１】
分図Ａに示すように、▲１▼〜▲５▼の場所でリードエラーが発生したとすると、従来の実線で示す（２）方式では、エラー発生のたびに頻繁に２４倍速と８倍速との間を回転数が一気に行き来し、また点線で示す（３）方式では、最初のエラーで２４倍速から８倍速になって以後ずっと８倍速のままでリードを行っている。
【００２２】
これに対して分図Ｂは、▲１▼のエラー発生時には２４倍速から１６倍速に回転数を落とすだけでリード可能となり、その後リードが安定して行えるようになると２４倍速に回転数を徐々に上げている。▲２▼及び▲３▼のエラー発生時には、▲２▼のエラーにより１６倍速に回転数が落ち、リードが安定して回転数を徐々に上げる途中で▲３▼のエラーによって再び１６倍速に回転数を落としている。▲４▼、▲５▼、▲６▼のエラー発生時には、段階的に回転数を落としており、▲４▼のエラーをリードするために１６倍速に一旦回転数を落とし、▲５▼のエラーのリードのために１２倍速に落とし、▲６▼のエラーをリードするためにさらに８倍速にまで回転数を落としている。以上の動作で安定してリードが行えるかどうかの判断基準は、連続ブロック数Ａ及びＢの値で決まっている。
【００２３】
以上のようなスピンドルモータの回転数の変化を比較すると、従来の（２）の方法が速度的には早くなるが、回転数の増減が激しく、安定してリードが行えない。これに対して本発明の（Ｂ）の方式では、回転数の増減を極力抑えるようにしているので安定してリードを行うことができ、エラー発生時に同じ回転数で何度もリトライしてリードすることを考えると本発明の（Ｂ）の方式の方が高速な転送レートを維持できる。また、従来の（３）の方法では、最初のエラー以後ずっと８倍速でリードを行うために安定してリードを行えるが、高速でのデータ転送は望めず、この点で（Ｂ）の方が優れている。
【００２４】
【発明の効果】
本発明のリードリトライ方法により、頻繁にスピンドル回転制御の必要がないためにエラー発生頻度を減少することができ、段階的にスピンドルモータの減速を行うために可能な限り高い転送レートでリードが可能となる。またスピンドルモータの加速も徐々に行うために早めにエラー発生を検知でき、無駄なリトライを減らすために総合的な転送レートを向上させることができる。
【図面の簡単な説明】
【図１】本発明のリードリトライ方法のフローチャート。
【図２】分図Ａは、従来のエラー発生時のスピンドルモータ回転数、分図Ｂは本発明のエラー発生時のスピンドルモータ回転数を表す図。
【図１】
0003669839.tif 000002
【図２】
0003669839.tif 000003