(57)【要約】【課題】光ディスク装置に接続されたホスト計算機に応じて、適切なコマンド処理の限界時間を動的に設定する。【解決手段】上位装置からの処理コマンドに従って、装着された光ディスク媒体からデータを読み出す光ディスク装置であって、上位装置からの処理コマンド、及び、前記上位装置が前記処理コマンドの処理についてタイムアウトを判定した場合に送信されるリセットコマンドの受信を判定し、前記処理コマンドを受信してから前記リセットコマンドを受信するまでに、前記受信した処理コマンドの処理が終了しない場合、前記処理コマンドを受信してから前記リセットコマンドを受信するまでの時間を測定し、前記測定された時間より短い処理限界時間を決定することを特徴とする。【選択図】図３
2010244611.tif 000002
【特許請求の範囲】
【請求項１】
上位装置からの処理コマンドに従って、装着された光ディスク媒体からデータを読み出す光ディスク装置であって、
上位装置からの処理コマンド、及び、前記上位装置が前記処理コマンドの処理についてタイムアウトを判定した場合に送信されるリセットコマンドの受信を判定し、
前記処理コマンドを受信してから前記リセットコマンドを受信するまでに、前記受信した処理コマンドの処理が終了しない場合、前記処理コマンドを受信してから前記リセットコマンドを受信するまでの時間を測定し、
前記測定された時間より短い処理限界時間を決定し、
前記処理コマンドを受信した後に前記決定された処理限界時間を経過するまでに、前記受信した処理コマンドの処理が終了しない場合、前記処理コマンドの処理を停止し、前記処理コマンドの処理を停止した旨を前記上位装置に送信することを特徴とする光ディスク装置。
【請求項２】
前記処理コマンドの処理を停止した旨とは、前記処理コマンドの処理を異常終了した旨であることを特徴とする請求項１に記載の光ディスク装置。
【請求項３】
所定の条件を満たした場合、前記処理限界時間を現在の値より長い時間に決定することを特徴とする請求項１又は２に記載の光ディスク装置。
【請求項４】
前記処理コマンドの処理を所定回数実行した場合、前記処理限界時間を現在の値より長い時間に決定することを特徴とする請求項３に記載の光ディスク装置。
【請求項５】
前記上位装置が前記処理コマンドを送信してから前記リセットコマンドを送信するまでの時間より長い時間を、前記処理限界時間の初期値に設定することを特徴とする請求項１から４のいずれか一つに記載の光ディスク装置。
【請求項６】
不揮発性記憶領域を含む記憶装置を備え、
前記決定された処理限界時間を前記不揮発性記憶領域に保持することを特徴とする請求項１から５のいずれか一つに記載の光ディスク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光ディスク装置に関し、特に、ホスト計算機のタイムアウトによるリセットを抑制できる光ディスク装置に関する。
【背景技術】
【０００２】
従来から、光ディスク装置では、ホスト計算機のタイムアウトによるリセットを防止するために、コマンド処理の限界時間を設け、コマンド処理の限界時間を超えた場合に、ホストにエラーを報告していた（例えば、特許文献１参照。）。このコマンド処理の限界時間は、想定される複数のタイムアウト時間の最小値に基づいて、固定値が設定されていた。
【０００３】
また、ディスクアレイ装置においては、異なるタイムアウト時間を持った複数のホスト装置が同時に接続される場合において、ホスト装置ごとに応答保証時間を設定することが提案されている（例えば、特許文献２参照。）。
【０００４】
また、ディスク処理装置においては、データ転送を開始してからＳＣＳＩバスリセットを受信するまでの時間に基づいて、タイム時間保持部に保持されているホストコンピュータ８−ｎのタイムアウト時間を更新することが提案されている（例えば、特許文献３参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−３５７６１９号公報
【特許文献２】特開２００６−１１９８８６号公報
【特許文献３】特開２００１−１４２２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
光ディスク装置は、読み出しや書き込みのコマンドの実行時に、内部エラーが発生した場合、そのコマンドの処理を再度実行するリトライ処理によってその内部エラーを回復しようと試みる。コマンド処理限界時間に大きな値を設定した場合、その分リトライ処理に使用可能な時間を大きくすることができ、内部エラーを回復できる可能性が高くなるが、ホスト計算機が光ディスク装置にリセットコマンドを送信する可能性が高くなる。ホスト計算機が光ディスク装置にリセットコマンドを送信した場合、光ディスク装置がホスト計算機から切り離され、ホスト計算機及び光ディスク装置を再起動しないと光ディスク装置を使用できない場合がある。
【０００７】
また、特許文献２に記載されるように、前述したディスクアレイ装置においては、接続されるホスト装置、及び各ホスト装置のタイムアウト時間が分かっている。このため、管理端末からディスクアレイ装置に、各ホスト装置のタイムアウト時間を予め設定することができる。しかし、本発明が対象とする光ディスク装置は、どのホスト計算機に接続されるか分からない。すなわち、オペレーティングシステム（ＯＳ）によってタイムアウト時間が異なるところ、光ディスク装置にアクセスするホスト計算機上で動作するＯＳが不明であり、ホスト計算機がタイムアウトと判断する時間が分からない。また、ホスト計算機で動作するアプリケーションプログラムによっても、タイムアウト時間が異なるので、光ディスク装置が同じホスト計算機に接続されていても、アクセスによってタイムアウト時間が異なる場合がある。
【０００８】
また、特許文献３に記載されるように、前述したディスク処理装置においては、データの転送処理時にタイムアウトが発生した場合には、ディスク処理装置側でバスフリーフェーズに移行することによってＳＣＳＩバスを解放している。しかし、通信途中でいきなりバスフリーフェーズに移行することはプロトコル異常であるため、ホスト装置がディスク処理装置をリセットすることが考えられる。ディスク処理装置はリセットされると再起動となり、処理時間が増大する可能性がある。また、プロトコル異常により、ホスト装置はディスク処理装置をバスから切り離してしまい、それ以降、ホスト装置からディスク処理装置を使えない状態になる可能性もある。
【０００９】
このため、光ディスク装置に接続されたホスト計算機（ＯＳ、アプリケーションプログラム）に応じて、適切なコマンド処理の限界時間を動的に設定することが望まれている。
【課題を解決するための手段】
【００１０】
本発明の代表的な一例を示せば以下の通りである。すなわち、上位装置からの処理コマンドに従って、装着された光ディスク媒体からデータを読み出す光ディスク装置であって、上位装置からの処理コマンド、及び、前記上位装置が前記処理コマンドの処理についてタイムアウトを判定した場合に送信されるリセットコマンドの受信を判定し、前記処理コマンドを受信してから前記リセットコマンドを受信するまでに、前記受信した処理コマンドの処理が終了しない場合、前記処理コマンドを受信してから前記リセットコマンドを受信するまでの時間を測定し、前記測定された時間より短い処理限界時間を決定することを特徴とする。
【発明の効果】
【００１１】
本発明の実施の形態によると、光ディスク装置に接続されたホスト計算機に応じて適切なコマンド処理の限界時間を設定することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態の光ディスク装置の構成を示すブロック図である。
【図２】本発明の実施の形態の光ディスク装置における処理を示すフローチャートで    ある。
【図３】本発明の実施の形態の光ディスク装置とホスト計算機との間のシーケンス図    である。
【発明を実施するための形態】
【００１３】
図１は、本発明の実施の形態の光ディスク装置１００の構成を示すブロック図である。
【００１４】
本実施の形態の光ディスク装置１００は、光学ヘッド１０２、ＲＦアンプ１０３、デコーダ１０４、外部インタフェース１０５、バッファメモリ１０６、システムコントローラ１０７、メモリ１０８、エンコーダ１０９、レーザ駆動回路１１０及びスピンドルモータ１１１を備える。
【００１５】
光ディスク装置１００は、外部インタフェース１０５を介してホスト計算機２００と接続され、ホスト計算機２００から入力されるデータを書き込み可能な光ディスク１０１（例えば、ＣＤ−Ｒ）に記録し、光ディスク１０１から再生したデータをホスト計算機２００へ出力する。スピンドルモータ１１１は光ディスク１０１を回転駆動する。
【００１６】
光学ヘッド１０２は、光ディスク１０１からデータを再生する時には、弱いレーザ光を光ディスク１０１に照射し、そのレーザ光の反射光により、光ディスク１０１に記録されているデータを再生し、反射光に対応するＲＦ信号を出力する。また、光学ヘッド１０２は、光ディスク１０１にデータを記録する時には、再生時より強いレーザ光を光ディスク１０１に照射する。光ディスク１０１は、レーザ光が照射された部分の熱による相変化によって記録層に記録ピットを形成し、記録層の反射率を変化させてデータを記録する。
【００１７】
ＲＦアンプ１０３は、光学ヘッド１０２によって出力されるＲＦ信号を増幅し、増幅されたＲＦ信号をデジタルデータとして出力する。デコーダ１０４は、ＲＦアンプ１０３から出力されたデジタルデータを光ディスクの種類毎に定められたフォーマットに従って復調し、エラー検出及びエラー訂正を行った後、復調されたデータをバッファメモリ１０６に一時的に格納する。
【００１８】
外部インタフェース１０５は、光ディスク装置１００と接続されるホスト計算機２００との間のデータの送受信を制御する。バッファメモリ１０６は、ホスト計算機２００から外部インタフェース１０５を介して入力され、光ディスク１０１へ記録されるデータを一時的に記憶する。
【００１９】
エンコーダ１０９は、ホスト計算機２００から入力され、バッファメモリ１０６に一時的に記憶されたデータを、光ディスクの種類毎に定められたフォーマットに従って変調する。レーザ駆動回路１１０は、光学ヘッド１０２のレーザ光源を駆動するための駆動信号を出力する。
【００２０】
システムコントローラ１０７は、光ディスク装置１００の動作を制御するマイクロプロセッサであり、デコーダ１０４、エンコーダ１０９及び外部インタフェース１０５の動作を制御する。また、システムコントローラ１０７は、バッファメモリ１０６に一時的に記憶されたデータの読み出し、及びバッファメモリ１０６へのデータの書き込みを制御する。また、システムコントローラ１０７は、ホスト計算機２００から受信したコマンドを解釈し、解析されたコマンドに従った処理を行い、後述するコマンド処理限界時間を設定する処理（図２）を実行する。
【００２１】
メモリ１０８は、システムコントローラ１０７が処理を実行するために必要なデータ、及び、処理によって生成されたデータ（例えば、測定されたタイムアウト時間、設定されたコマンド処理限界時間）を格納する。メモリ１０８は、その記憶領域の少なくとも一部に不揮発性記憶領域を含む。この不揮発性記憶領域には、後述する処理限界時間を格納するとよい。設定されたコマンド処理限界時間を不揮発性記憶領域に格納することによって、光ディスク装置１００の電源を遮断しても設定されたコマンド処理限界時間が保持され、電源の再投入時にも既に設定されているコマンド処理限界時間を使用することができる。
【００２２】
なお、処理限界時間を揮発性の記憶領域に格納した場合、光ディスク装置１００の電源を投入する毎にコマンド処理限界時間が設定されるので、適切なコマンド処理限界時間を設定することができる。
【００２３】
図２は、本発明の実施の形態の光ディスク装置１００における処理を示すフローチャートである。この処理は、システムコントローラ１０７（マイクロプロセッサ）によって実行される。
【００２４】
本発明の実施の形態の光ディスク装置１００は、ホスト計算機２００から処理コマンドを受信してから、ホスト計算機２００からリセットコマンドを受信するまでの時間を測定することによって、ホスト計算機２００のタイムアウト時間を測定する。
【００２５】
まず、光ディスク装置１００の電源が投入されると、光ディスク装置１００のシステムコントローラ１０７は、光ディスク装置１００の各種パラメータを初期化する。この初期化処理において、コマンド処理限界時間は初期値に設定される。この初期値は、エラー発生時にホスト計算機がコマンドの処理がタイムアウトしたと判定する時間より十分に長い時間（例えば１分〜無限大）が設定されるとよい。
【００２６】
次に、光ディスク装置１００のシステムコントローラ１０７は、ホスト計算機２００から処理コマンドを受信すると、ホスト計算機２００のタイムアウト時間を測定するためのタイマを起動する（ステップ２０１）。そして、受信したコマンドに従った処理を実行する（ステップ２０２）。例えば、再生コマンドを受信すると、光ディスク１０１に記録されたデータを再生する。
【００２７】
この処理コマンドに従った処理の実行中、システムコントローラ１０７は、ホスト計算機２００からのリセットコマンドを監視し、リセットコマンドを受信したか否かを判定する（ステップ２０３）。
【００２８】
その結果、リセットコマンドを受信した場合、ホスト計算機２００がタイムアウトと判定したので、ステップ２０１で起動したタイマに基づいて、ホスト計算機２００から処理コマンドを受信してからリセットコマンドを受信するまでの経過時間を測定する。そして、測定された経過時間をホスト計算機２００のタイムアウト時間であると推定する（ステップ２０８）。
【００２９】
次に、システムコントローラ１０７は、推定されたホスト計算機２００のタイムアウト時間に基づいて、コマンド処理限界時間を決定する（ステップ２０９）。このコマンド処理限界時間は、推定されたタイムアウト時間よりも短く設定する。これは、ホスト計算機２００がタイムアウトになる（リセットコマンドを送信する）前に、コマンド処理の終了をホスト計算機２００に確実に送信できるようにするため、光ディスク装置１００内部処理のオーバーヘッド時間（ステップ２０５〜２０７の処理に必要な時間）及びホスト計算機２００との通信に必要な時間だけ、推定されたタイムアウト時間よりも短く設定する。ここで決定されたコマンド処理限界時間は、次回以降に受信するコマンド処理に使用される。
【００３０】
次に、ステップ２１０に進み、受信したリセットコマンドに従って、リセット処理を実行し、該リセット処理の終了をホスト計算機２００に送信して（ステップ２１１）、このリセット処理を終了する。このリセット処理によって、光ディスク装置１００は初期状態となる。
【００３１】
このようにして、光ディスク装置１００は、ホスト計算機２００のタイムアウト時間を測定し、コマンド処理限界時間を決定する。
【００３２】
なお、電源投入時の初期化後の最初の処理コマンドを受信した場合に、受信したコマンドに対する処理を実行せず（又は、処理を遅延させ）、ホスト計算機２００がタイムアウトと判定するようにして、ステップ２０８〜２１１の処理を実行して、コマンド処理限界時間を設定してもよい。
【００３３】
また、ホスト計算機２００は、起動後に、光ディスク装置１００にダミーのコマンド（例えば、プログラムの処理に必要のないデータを読み出すコマンド等）を送信し、光ディスク装置１００にタイムアウト時間を測定させ、コマンド処理限界時間を適切な初期値に設定してもよい。
【００３４】
次に、コマンド処理限界時間を使ったコマンド処理の制御について説明する。
【００３５】
ステップ２０３において、ホスト計算機２００からリセットコマンドを受信していない場合、コマンド処理が正常に終了したか否かを判定する（ステップ２０４）。コマンド処理が正常に終了した場合、コマンド処理の完了をホスト計算機２００に送信する（ステップ２０７）。一方、ステップ２０４において、コマンド処理が正常に終了していないと判定された場合、すなわち、コマンド処理が異常終了した場合、又は、コマンド処理がまだ終わっていない場合、ステップ２０５へ進む。
【００３６】
ステップ２０５では、ステップ２０１で起動したタイマに基づいて、ホスト計算機２００から処理コマンドを受信してからの経過時間のタイムアウトを判定する。すなわち、コマンド処理のために経過した時間と、ステップ２０９で決定されたコマンド処理限界時間とを比較する。そして、経過時間がコマンド処理限界時間に達していない場合はステップ２０２に戻り、コマンド処理を継続する。なお、コマンド処理が未だ終了していない場合、現在行われているコマンド処理を継続し、コマンド処理が一度エラーで終了している場合、コマンド処理を再度実行する。
【００３７】
一方、コマンド処理経過時間がコマンド処理限界時間に到達している（又は、コマンド処理限界時間を越えている）場合、ステップ２１２に進む。
【００３８】
ステップ２１２では、所定の条件を満たした場合、コマンド処理限界時間を再設定する。具体的には、コマンド処理の回数を計数するカウンタを設け、このカウンタが所定値（例えば、１０回）となった場合に、コマンド処理限界時間を所定時間（例えば、５秒）延長する。コマンド処理限界時間が長くなることによって、ステップ２０３でＹＥＳと判定され、コマンド処理限界時間が再設定される機会が増える。このため、ホスト計算機２００が変わった場合、また、光ディスク装置１００にアクセスするプログラム（アプリケーションプログラム又はＯＳ）が変わった場合でも、コマンド処理限界時間が適切な時間に再設定される。
【００３９】
なお、コマンド処理の回数ではなく、コマンド処理限界時間を設定した時刻から所定の時間が経過したことによって、コマンド処理限界時間を長い時間に再設定してもよい。
【００４０】
また、光ディスク装置１００に装着される光ディスク（媒体）の種類によって（その媒体を使用するアプリケーションプログラムによって）、タイムアウト時間が変わることがある。このため、媒体が装着されたときに（ディスクトレーが開閉されたとき）、コマンド処理限界時間を長い時間に再設定してもよい。
【００４１】
その後、コマンド処理の実行を停止し（ステップ２０６）、コマンド処理の異常終了をホスト計算機２００に送信する（ステップ２０７）。
【００４２】
このようにして、本実施の形態の光ディスク装置１００は、ホスト計算機２００のタイムアウト時間に応じて、コマンド処理の実行に費やすことができる時間を最大化することができる。
【００４３】
なお、装着された光ディスクに記録された管理情報から、装着された光ディスクの種類、及び／又は、装着された光ディスクに記録された内容を判定し（すなわち、光ディスクに記録されたデータが、ストリームデータであるかファイルデータであるかを判定し）、その判定結果に基づいて、異なる処理限界時間を設定してもよい。例えば、コピープロテクションが設定されている光ディスクであれば、光ディスクに記録されたデータはストリームデータである可能性が高いので、コマンド処理限界時間を短い値に設定してもよい。
【００４４】
図３は、本発明の実施の形態の光ディスク装置１００とホスト計算機２００との間のコマンドのやり取りを示すシーケンス図である。
【００４５】
ホスト計算機２００は、光ディスク装置１００に、処理コマンド（例えば、リードコマンド、ライトコマンド）３０１を発行する。ホスト計算機２００は、処理コマンドを送信してから所定のタイムアウト時間３１１が経過しても光ディスク装置１００から応答がない場合、タイムアウトであると判定し、リセットコマンド３０４を発行する。これは、前述したように、タイムアウトであると判定された場合、光ディスク装置１００が故障している可能性があるので、ホスト計算機２００は、先に発行した処理コマンドによる処理を強制的に中止し、さらに同じ処理（又は、次の処理）を行うための処理コマンドを発行するためである。
【００４６】
光ディスク装置１００は、ホスト計算機２００から処理コマンド３０１を受信すると、タイムアウト時間３１２を測定するためにタイマを起動する。そして、光ディスク装置１００が、ホスト計算機２００からリセットコマンド３０４を受信すると、起動したタイマによってタイムアウト時間３１２を測定する。そして、タイムアウト時間３１２より短い処理限界時間３１３を設定する。処理限界時間３１３は、光ディスク装置１００が、コマンドの処理時間が処理限界時間３１３を超えたかを判定し、コマンドの処理時間が処理限界時間３１３を超えた場合に、コマンドに対する応答３０３を送信するために必要な時間である。
【００４７】
なお、処理限界時間３１３の初期値は、ホスト計算機２００が処理コマンド３０１を送信してからリセットコマンド３０４を送信するまでの時間より長い時間（例えば、１分）を設定するとよい。すなわち、ホスト計算機２００のプログラムによって判定される最大のタイムアウト時間以上の時間を設定するとよい。このように処理限界時間３１３の初期値を設定すると、ホスト計算機２００で動作するプログラムによらず、初回のタイムアウト時にタイムアウト時間を測定することができる。
【００４８】
光ディスク装置１００は、処理限界時間３１３が設定された後、ホスト計算機２００から処理コマンド３０１を受信すると、受信したコマンド３０１の処理が処理限界時間３１３内に終了するか否かを判定する（３０２）。光ディスク装置１００は、処理限界時間３１３内にコマンドの処理が終了しない場合、コマンドの処理が完了しなかった旨の応答３０３を送信する。ホスト計算機２００は、コマンドの処理が完了しなかった旨の応答３０３を受信すると、リセットコマンド３０４を送信することなく、さらに同じ処理（又は、次の処理）を行うためのコマンドを発行する。
【００４９】
このため、本発明の実施の形態では、ホスト計算機２００がリセットコマンドを発行することなく、光ディスク装置１００の動作が初期化されることがない。これにより、ホスト計算機２００が、光ディスク装置１００を故障だと判定する機会が減少する。
【００５０】
以上説明したように、本発明の実施の形態によると、ホスト計算機２００がホスト計算機２００からのリセットコマンド３０４によって、ホスト計算機２００（ホスト計算機２００上で動作するプログラム）のタイムアウト時間３１２を測定し、測定されたタイムアウト時間３１２より短い処理限界時間３１３を設定する。そして、光ディスク装置１００は、受信したコマンド３０１の処理が処理限界時間３１３内に終了しない場合、コマンドの処理が完了しなかった旨の応答３０３を送信する。このため、光ディスク装置１００は、コマンド処理限界時間を動的に設定することができる。従って、未知のタイムアウト時間を持ったホスト計算機が接続された場合でも、適切なコマンド処理の限界時間を設定することができる。
【００５１】
これによって、ホスト計算機２００（ホスト計算機２００上で動作するプログラム）に応じた適切なコマンドの処理時間を確保することができ、コマンドの処理のための許容時間を大きくすることができる。よって、光ディスク装置１００において、コマンドが正常に実行される機会を増加することができ、エラー発生の少ない安定した動作を実現することができる。
【００５２】
また、ホスト計算機２００が、タイムアウトと判定する機会が減るので、リセットコマンド３０４を発行することがなくなる。さらに、リセットコマンドが繰り返し発行されることによって、ホスト計算機２００が、光ディスク装置１００を故障と判断することがなくなり、光ディスク装置１００が切り離されることがなくなる。
【００５３】
さらに、処理限界時間が徐々に増加するので、ホスト計算機２００のタイムアウト時間３１２が繰り返し測定され、光ディスク装置１００に接続されるホスト計算機が変更された場合でも、新たに処理限界時間を設定することができる。特に、ホスト計算機で動作するＯＳが変わった場合（例えば、ホスト計算機がデュアルブートであり、起動されるＯＳが変わった場合）、ホスト側の実行環境が変わった場合（例えば、ホスト計算機上で動作するアプリケーションプログラムが変更された場合）でも、適切な処理限界時間が設定される。
【符号の説明】
【００５４】
１００  光ディスク装置
１０１  光ディスク
１０２  光学ヘッド
１０３  ＲＦアンプ
１０４  デコーダ
１０５  外部インタフェース
１０６  バッファメモリ
１０７  システムコントローラ
１０９  エンコーダ
１１０  レーザ駆動回路
１１１  スピンドルモータ
２００  ホスト計算機
【図１】
2010244611.tif 000003
【図２】
2010244611.tif 000004
【図３】
2010244611.tif 000005