(57)【特許請求の範囲】
【請求項１】
上位装置にインタフェースを介して接続され、ディスクに記録されているデータを再生する再生部と、再生されたデータを記憶するバッファメモリと、前記上位装置からのデータ読み出し信号に含まれるアドレスに応じて前記再生部に再生を実行させ、一旦前記バッファメモリに蓄えた後に前記上位装置に転送する制御部とを備えるディスク装置において、
前記上位装置からのデータ読み出しコマンドに基づくデータ読み出し信号に含まれるアドレスの次のアドレス以降のアドレスのデータを順次読み出して前記バッファメモリに格納させる先読み処理を行う先読み処理部と、
前記先読み処理中のエラーの発生を検出するエラー発生検出部と、
エラー発生を検出した際に、エラーが発生したアドレスからの前記先読み処理を中断すると共に、このエラー発生を前記上位装置に報告するエラー発生報告部と、
エラー発生を前記上位装置に報告した後に、前記上位装置からの先読みの再開コマンドを受信した時に、前記先読み処理部に先読み処理を中断したアドレスからの先読み処理を再開させる先読み処理再開指示部と、
を設けたことを特徴とするディスク装置。
【請求項２】
請求項１に記載のディスク装置において、
前記エラー発生検出部が再度同じアドレスで先読み処理中のエラー発生を検出した際には、前記先読み処理再開指示部が前記エラー発生報告部に先読み処理の中断を行わせることなく、前記先読み処理部に前記エラー発生アドレスの次のアドレスからの先読み処理を再開させると共に、再開にて先読み処理したデータを展開するバッファメモリの領域を、エラー発生時の領域とは異なる領域に変更することを特徴とするディスク装置。
【請求項３】
請求項１に記載のディスク装置であって、更に、ディスクにデータを書き込む書込部を備えるものにおいて、
前記先読み処理部の先読み処理中に前記上位装置からデータの書き込みコマンドが発行された場合は、前記先読み処理部は先読み処理を中断し、前記書込部によるデータの書込が終了した後に、中断したアドレスから先読み処理を継続することを特徴とするディスク装置。
【請求項４】
請求項１に記載のディスク装置において、
前記先読み処理部の先読み処理中に前記上位装置から、予め定められたファイルシステム情報記憶領域のアドレスに対するデータ読み出しコマンドが発行された場合は、前記先読み処理部は一旦先読み処理を中断するが、その特定のアドレスに対する先読み処理は行わず、先読み処理を中断したアドレスから再開することを特徴とするディスク装置。
【請求項５】
請求項１に記載のディスク装置において、
前記先読み処理部の先読み処理中に前記上位装置から所定のリセットコマンドが発行された場合は、前記先読み処理部は先読み処理を中断し、前記リセットコマンドによるリセットが終了した後に、中断したアドレスから先読み処理を継続することを特徴とするディスク装置。
【請求項６】
請求項１に記載のディスク装置において、
前記先読み処理部の先読み処理中に、先読み処理するアドレスが予め定められたファイルシステム情報記憶領域のアドレスにさしかかったら、前記先読み処理部は一旦先読み処理を中断し、この特定のアドレスを飛ばしたアドレスから先読み処理を再開すると共に、先読み処理したデータを展開するバッファメモリの内容を変更することを特徴とするディスク装置。
【請求項７】
請求項１に記載のディスク装置であって、更に、装置内に不揮発性メモリを備えるものにおいて、
前記ディスクが前記装置にロードされる毎に前記ディスクに記録されたＩＤ番号を確認するＩＤ確認部と、
前記ディスクが前記装置にロードされた後に最初に前記上位装置から受信した初回読み出しアドレスを、前記ＩＤ番号に関連付けて前記不揮発性メモリに記憶する初回読み出しアドレス記憶部と、
前記ディスクが前記装置にロードされた後に、前記初回読み出しアドレス記憶部に対して前記ディスクのＩＤ番号とこれに関連する初回読み出しアドレスの有無を照会し、これらが存在する場合には前記先読み処理部にこの初回読み出しアドレスから先読み処理を実行させる先行先読み処理部と、
を備えることを特徴とするディスク装置。
【請求項８】
請求項１に記載のディスク装置であって、更に、装置内に不揮発性メモリを備えるものにおいて、
前記ディスクが前記装置にロードされる毎に前記ディスクに記録されたＩＤ番号を確認するＩＤ確認部と、
前記ディスクが前記装置にロードされた後に最初に前記上位装置から受信した初回読み出しアドレスを、前記ＩＤ番号に関連付けて前記不揮発性メモリに記憶する初回読み出しアドレス記憶部と、
この初回読み出しアドレス記憶部に記憶された初回読み出しアドレスの記憶回数の頻度を前記ＩＤ番号毎に計算する初回読み出しアドレス記憶頻度計算部と、
前記ディスクが前記装置にロードされた後に、前記初回読み出しアドレス記憶部に対して前記ディスクのＩＤ番号とこれに関連する初回読み出しアドレスの有無を照会し、これらが存在する場合には前記先読み処理部に前記初回読み出しアドレス記憶頻度計算部が計算した頻度の最も高い初回読み出しアドレスから先読みを実行させる先行先読み処理部と、
を備えることを特徴とするディスク装置。
【請求項９】
上位装置にインタフェースを介して接続され、ディスクに記録されているデータを再生する再生部と、再生されたデータを記憶するバッファメモリと、前記上位装置からのデータ読み出し信号に含まれるアドレスに応じて前記再生部に再生を実行させ、一旦前記バッファメモリに蓄えた後に前記上位装置に転送する制御部とを備えるディスク装置において、
前記上位装置からのデータ読み出しコマンドに基づくデータ読み出し信号に含まれるアドレスの次のアドレス以降のアドレスのデータを順次読み出して前記バッファメモリに格納させる先読み処理を行う先読み処理部と、
前記先読み処理中のエラー発生を検出するエラー発生検出部と、
エラー発生を検出した際に、エラーが発生したアドレスからの前記先読み処理を再度実行するリトライを行うリトライ部とを設け、
前記リトライ部が、前記リトライを所定回数、或いは所定時間だけ継続して実行し、
前記リトライを継続して実行した回数、或いは時間が所定値を越えたら、前記リトライ部は前記エラーが発生したアドレスの次のアドレスから先読み処理を再開すると共に、再開にて先読みしたデータを展開するバッファメモリの領域をエラー発生時の領域とは異なる領域に変更することを特徴とするディスク装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はディスク装置に関し、特に、光ディスクのように、指定された範囲のデータの読み出し後に、この範囲に続く範囲のデータを予め読み込んでデータバッファに記憶しておく先読み処理を行うディスク装置に関する。
【０００２】
【従来の技術】
従来、ＣＤ−Ｒ (Compact Disk-Recordable)やＭＯ (Magneto-Optical disk)のような光ディスクを使用したディスク装置は、上位装置であるホストコンピュータに所定のインタフェース、例えば、ＳＣＳＩインタフェースを介して接続されて使用されることが多い。このような使用状況において、ディスク装置からデータをホストコンピュータに転送する速度の方が、光ディスクからデータを読み出す速度よりも速い。また、ホストコンピュータが光ディスクからデータを読み出す場合、光ディスクの連続したアドレスからデータを連続して読み出すことが多い。
【０００３】
このため、ＣＤ−ＲＯＭ装置やＭＯ装置のような光ディスク読出装置では、ホストコンピュータから光ディスクのある特定のアドレスのデータの読み出し指令がディスク装置側に入力されると、ディスク装置側ではこの指定のアドレスのデータを読み出してデータバッファに格納すると共に、この指定のアドレスに続くアドレスのデータを継続して光ディスクから読み出してデータバッファに格納しておく、所謂、先読み処理を行うのが一般的である。
【０００４】
このように、指定された光ディスクのアドレスのデータを読み出した後に、これに続くアドレスのデータを先読みし、読み出したデータをデータバッファに格納しておけば、次のホストコンピュータからの読み出し指示アドレスが前回の読み出し指示アドレスに連続するアドレスであった場合に、光ディスクから読み出しを行うことなくデータバッファに格納されているデータをホストコンピュータに対して転送することができるので、ホストコンピュータからのアクセスに対する読み出し性能を向上させることができる。
【０００５】
このようなディスク装置におけるデータの先読み処理については、例えば、特開平７−７３６５４号公報に開示がある。
【０００６】
【発明が解決しようとする課題】
しかしながら、ディスク装置における先読み処理においては、先読み処理中にエラー等の割り込みが発生すると、先読み処理を再度そのアドレスから実行するリトライが行われずに先読み処理が停止されるので、ホストコンピュータの動作が停止してしまうという問題点があった。
【０００７】
そこで、本発明の第１の目的は、ディスクからのデータの先読み処理中にエラー等の割り込みが発生した場合でも、上位装置の読み出し制御機能を利用することによって、上位装置側で先読み処理の中断を回避するようにし、システム全体の性能が落ちないようなディスク装置を提供することである。
【０００８】
また、本発明の第２の目的は、ディスクからのデータの先読み処理中にエラー等の割り込みが発生した場合でも、ディスク装置側の先読み処理の制御機能を改善することにより、ディスク装置側で先読み処理の中断を回避することができるディスク装置を提供することである。
【０００９】
【課題を解決するための手段】
前記目的を達成する本発明の第１の形態によれば、上位装置にインタフェースを介して接続され、ディスクに記録されているデータを再生する再生部と、再生されたデータを記憶するバッファメモリと、上位装置からのデータ読み出し信号に含まれるアドレスに応じて再生部に再生を実行させ、一旦バッファメモリに蓄えた後に上位装置に転送する制御部とを備えるディスク装置であって、上位装置からのデータ読み出しコマンドに基づくデータ読み出し信号に含まれるアドレスの次のアドレス以降のアドレスのデータを順次読み出してバッファメモリに格納させる先読み処理を行う先読み処理部と、先読み処理中のエラーの発生を検出するエラー発生検出部と、エラー発生を検出した際に、エラーが発生したアドレスからの先読み処理を中断すると共に、このエラー発生を上位装置に報告するエラー発生報告部と、エラー発生を上位装置に報告した後に、上位装置からの先読みの再開コマンドを受信した時に、先読み処理部に先読み処理を中断したアドレスからの先読み処理を再開させる先読み処理再開指示部とを設けたディスク装置が提供される。
【００１０】
本発明の第２の形態によれば、第１の形態において、エラー発生検出部が再度同じアドレスで先読み処理中のエラー発生を検出した際には、先読み処理再開指示部がエラー発生報告部に先読み処理の中断を行わせることなく、先読み処理部にエラー発生アドレスの次のアドレスからの先読み処理を再開させると共に、再開にて先読み処理したデータを展開するバッファメモリの領域を、エラー発生時の領域とは異なる領域に変更するディスク装置が提供される。
【００１１】
第１と第２の形態によれば、ディスクからのデータの先読み処理中にエラー等の割り込みが発生した場合でも、上位装置の読み出し制御機能によって上位装置側で先読み処理の中断を回避するようになるので、システム全体の性能が落ちないようになる。
【００１２】
本発明の第３の形態によれば、第１の形態のディスク装置であって、更に、ディスクにデータを書き込む書込部を備えるものにおいて、先読み処理部の先読み処理中に上位装置からデータの書き込みコマンドが発行された場合は、先読み処理部により先読み処理が中断され、書込部によるデータの書込が終了した後に、中断したアドレスから先読み処理が継続される。
【００１３】
本発明の第４の形態によれば、第１の形態のディスク装置において、先読み部の先読み処理中に上位装置から、予め定められた特定のアドレスに対するデータ読み出しコマンドが発行された場合は、先読み処理部により、一旦先読み処理が中断されるが、その特定のアドレスに対する先読み処理は行われず、先読み処理を中断したアドレスから先読みが再開される。
【００１４】
本発明の第５の形態によれば、第１の形態のディスク装置において、先読み処理部の先読み処理中に上位装置から所定のリセットコマンドが発行された場合は、先読み処理部により先読み処理が中断され、リセットコマンドによるリセットが終了した後に、中断したアドレスから先読み処理が継続される。
【００１５】
第３から第５の形態では、先読み処理中に書込指令があったり、特定のアドレスの読み出し指令があったり、リセット指令があった場合でも、これらの処理が終了した時点で先読み処理が再開されるので、先読み処理が中断されない。
【００１６】
本発明の第６の形態によれば、第１の形態のディスク装置において、先読み部の先読み処理中に、先読みするアドレスが予め定められた特定のアドレスにさしかかったら、先読み処理部により一旦先読み処理が中断され、この特定のアドレスを飛ばしたアドレスから先読み処理が再開されると共に、先読み処理したデータを展開するバッファメモリの内容が変更される。
【００１７】
第６の形態では、先読み処理中に予め定められた先読み処理不要のアドレスにさしかかったら、先読み処理不要のアドレスの先読みがカットされ、続きのアドレスのデータが先読み処理されて別のテーブルに読み出されるので、無駄な先読み処理を無くすことができる。
【００１８】
本発明の第７の形態によれば、第１の形態であって、更に、装置内に不揮発性メモリを備えるディスク装置において、ディスクが装置にロードされる毎にディスクに記録されたＩＤ番号を確認するＩＤ確認部と、ディスクが装置にロードされた後に最初に上位装置から受信した初回読み出しアドレスを、ＩＤ番号に関連付けて不揮発性メモリに記憶する初回読み出しアドレス記憶部と、ディスクが装置にロードされた後に、初回読み出しアドレス記憶部に対してディスクのＩＤ番号とこれに関連する初回読み出しアドレスの有無を照会し、これらが存在する場合には先読み処理部にこの初回読み出しアドレスから先読み処理を実行させる先行先読み処理部とが備えられる。
【００１９】
本発明の第８の形態によれば、第１の形態のディスク装置において、更に、装置内に不揮発性メモリを備えるディスク装置において、ディスクが装置にロードされる毎にディスクに記録されたＩＤ番号を確認するＩＤ確認部と、ディスクが装置にロードされた後に最初に上位装置から受信した初回読み出しアドレスを、ＩＤ番号に関連付けて不揮発性メモリに記憶する初回読み出しアドレス記憶部と、この初回読み出しアドレス記憶部に記憶された初回読み出しアドレスの記憶回数の頻度をＩＤ番号毎に計算する初回読み出しアドレス記憶頻度計算部と、ディスクが装置にロードされた後に、初回読み出しアドレス記憶部に対してディスクのＩＤ番号とこれに関連する初回読み出しアドレスの有無を照会し、これらが存在する場合には先読み部に初回読み出しアドレス記憶頻度計算部が計算した頻度の最も高い初回読み出しアドレスから先読み処理を実行させる先行先読み処理部とが備えられる。
【００２０】
第７と第８の形態では、ディスク装置にディスクがロードされる時にＩＤを照合することにより、過去に同じディスクがロードされた時に最初に読み出し指示されたアドレスの頻度、又は前回と同じアドレスに基づいて先読み処理が行われるので、同じアドレスからの読み出し指示が最初に来た場合に処理時間の短縮を図ることができる。
【００２１】
本発明の第９の形態によれば、上位装置にインタフェースを介して接続され、ディスクに記録されているデータを再生する再生部と、再生されたデータを記憶するバッファメモリと、上位装置からのデータ読み出し信号に含まれるアドレスに応じて再生部に再生を実行させ、一旦バッファメモリに蓄えた後に上位装置に転送する制御部とを備えるディスク装置において、上位装置からのデータ読み出しコマンドに基づくデータ読み出し信号に含まれるアドレスの次のアドレス以降のアドレスのデータを順次読み出してバッファメモリに格納させる先読み処理を行う先読み処理部と、先読み処理中のエラー発生を検出するエラー発生検出部と、エラー発生を検出した際に、エラーが発生したアドレスからの記先読み処理を再度実行するリトライを行うリトライ部とを設け、リトライ部が、リトライを所定回数、或いは所定時間だけ継続して実行し、リトライを継続して実行した回数、或いは時間が所定値を越えたら、リトライ部はエラーが発生したアドレスの次のアドレスから先読み処理を再開すると共に、再開にて先読みしたデータを展開するバッファメモリの領域をエラー発生時の領域とは異なる領域に変更することを特徴とする設けたディスク装置が提供される。
【００２２】
【発明の実施の形態】
本発明の上記および他の目的、特徴、利点等を以下に添付図面に示す実施例に従って詳細に説明する。
【００２３】
図１は本発明の光磁気ディスク装置（以後単に光ディスク装置という）１の構成、及び、この光ディスク装置１がホストインタフェース２を介してホストコンピュータのような上位装置（以後ホストコンピュータという）３に接続されたシステムを示すものである。ホストコンピュータ３は、下位装置である光ディスク装置１に対してデータの読み込み、又は、データの書込の命令を行う。ホストインタフェース２には、例えば、ＳＣＳＩ（Small Computer System Interface:小型コンピュータシステムのインタフェース) が採用されており、上位装置であるホストコンピュータ３と下位装置である光ディスク装置１を接続する情報伝達路である。
【００２４】
光ディスク装置１には、媒体として光磁気ディスク（以後単に光ディスクという）１６が設けられている。なお、この図には光ディスク１６の駆動機構の図示は省略してある。光ディスク１６には、少なくとも、データ記録領域２６と、媒体識別番号を記録する領域３６がある。光ディスク１６にはヘッド１４からのビームが対物レンズ１５を介して照射され、ビームに含まれるデータが光ディスク１６に書き込まれたり、光ディスク１６上のデータがビームによって読み出される。１２はヘッド１４に接続する読出回路であり、光ディスク１６から読み出したデータを増幅する処理を行う。また、ヘッド１４には書込回路１３が接続しており、光ディスク１６に書き込むデータが書き込めるように信号を増幅する処理を行う。読出回路１２と書込回路１３にはデータバッファ１１が接続している。データバッファ１１は、光ディスク１６から読み出したデータ、或いは、光ディスク１６に書き込むデータを一時的に保存するものである。このデータバッファ１１は光ディスク装置１の外部のホストインタフェース２に接続されている。データバッファ１１に記憶された内容は、光ディスク１６が光ディスク装置１から抜かれると消失する。
【００２５】
また、光ディスク装置１の中にはＭＰＵ（マイクロプロセッサユニット）１０がある。ＭＰＵ１０はホストインタフェース２を使用してホストコンピュータ３と通信したり、データバッファ１１の制御を行う。また、ＭＰＵ１０の中には、光ディスクの制御処理機能（ＯＤＣ：Optical Disk controller)や、光ディスクの駆動機能 (ＯＤＤ：Optical Disk Drive) がある。ＯＤＣは、光ディスク駆動装置の制御を行うＯＤＤよりも上流側の制御を行う。従って、ＭＰＵ１０は、先読み処理がエラーによって中断した時のエラー通知制御、或いは、エラー回復のためのリトライ処理を行うことができる。このＭＰＵ１０にはタイマ１７が接続されている。タイマ１７は時間測定を行い、予めＭＰＵ１０によって設定された時間が経過すると、ＭＰＵ１０に割り込み処理を行わせるための信号を発生する。
【００２６】
なお、この実施例では、光ディスクの制御を行う制御部として、ＭＰＵ１０が設けられた光ディスク装置１を説明したが、本発明が対象とする光ディスク装置には、このようなＭＰＵはなくても、前述のＯＤＣやＯＤＤの制御機能と同等の制御機能を備えた制御部があれば良い。よって、本発明が対象とする光ディスク装置の構成は、図１に示した構成に限定されるものではなく、種々の変形が可能である。
【００２７】
更に、この実施例ではＭＰＵ１０に不揮発性メモリ１８が接続されている。不揮発性メモリ１８には光ディスク１６の媒体識別番号を記憶する領域と、媒体識別番号に対応して頻度の高い読出アドレスを記憶するアドレス記憶領域がある。光ディスク装置１に光ディスク１６が挿入されると、ＭＰＵ１０はホストコンピュータ３からコマンドが入力される前に、光ディスク１６の媒体識別番号を読み、この媒体識別番号が不揮発性メモリ１８の媒体識別番号を記憶する領域にあるか否を検索する。そして、今回光ディスク装置１に挿入された光ディスク１６の媒体識別番号が不揮発性メモリ１８の媒体識別番号を記憶する領域にある場合には、その媒体識別番号に対応したアドレス記憶領域から頻度の高い光ディスク１６の読出アドレスを読み出し、予めその頻度の高いアドレスのデータを読み出してデータバッファ１１に格納しておくことができる。
【００２８】
図２は、光ディスク１６からデータを先読みする先読み処理にエラーがない時の光ディスク装置１におけるＭＰＵ１０の先読み処理を説明するタイムチャートである。光ディスク１６が光ディスク装置１に挿入された後に、光ディスク１６からデータが読み出される場合は、ホストコンピュータ３（図にはホストと記載）からデータＡの読み出し指示がＳＣＳＩ２を介して光ディスク装置１に入力される。すると、光ディスク装置１のＭＰＵ１０の制御により、光ディスク１６（図にはディスクと記載）からデータＡが読み出され、このデータＡがデータバッファ１１（図にはバッファと記載）に格納される。データＡはデータバッファ１１に一旦格納された後に、ＭＰＵ１０の制御によってＳＣＳＩ２を介してホストコンピュータ３に転送される。
【００２９】
一方、光ディスク装置１のＭＰＵ１０は、ホストコンピュータ３からデータＡの読み出し指示が来て、光ディスク１６からデータＡが読み出されると、ホストコンピュータ３から次の読み出し指示が来ていない状態で、引続いて光ディスク１６の次のアドレスにあるデータＢを読み出す処理を行い、読み出したデータＢをバッファＢに格納する、所謂、先読み処理を実行する。ＭＰＵ１０はこの先読み処理を引続き行うので、光ディスク装置１のデータバッファ１１には、この後も光ディスク１６の連続するアドレスからデータＣ、データＤのように、データが読み出されてはデータバッファ１１に格納され続ける。
【００３０】
そして、データＡの光ディスク装置１からホストコンピュータ３への転送が終了した所定時間後に、ホストコンピュータ３から光ディスク１６上の隣接アドレスのデータＢの読み出し要求が来ると、ＭＰＵ１０はデータバッファ１１に既に格納してあるデータＢをＳＣＳＩ２を介してホストコンピュータ３に転送する。この結果、ホストコンピュータ３からのデータ読み出し要求に対して、すばやい応答でデータバッファ１１内に既に格納されているデータＢを転送することが可能になる。この先読み処理の効果は、ＭＰＵ１０によって光ディスク１６から先読みされてデータバッファ１１に格納したデータと、ホストコンピュータ３から読み出し指示されたデータとが一致する場合に生じ続ける。
【００３１】
図３Ａは先読み処理にエラーがある時のこれまでの光ディスク装置における、ＭＰＵ１０の先読み処理を説明するタイムチャートである。この場合も、光ディスク１６が光ディスク装置１に挿入された後に、光ディスク１６からデータが読み出される。ホストコンピュータ３からデータＡの読み出し指示がＳＣＳＩ２を介して光ディスク装置１に入力されると、光ディスク装置１のＭＰＵ１０の制御により、光ディスク１６からデータＡが読み出され、このデータＡがデータバッファ１１に格納される。データＡはデータバッファ１１に一旦格納された後に、ＭＰＵ１０の制御によってＳＣＳＩ２を介してホストコンピュータ３に転送される。
【００３２】
一方、光ディスク装置１のＭＰＵ１０は、ホストコンピュータ３からデータＡの読み出し指示が来て、光ディスク１６からデータＡが読み出されると、ホストコンピュータ３から次の読み出し指示が来ていない状態で、引続いて光ディスク１６の次のアドレスにあるデータＢを読み出す処理を行い、読み出したデータＢをデータバッファ１１に格納する、所謂、先読み処理を実行する。ＭＰＵ１０はこの先読み処理を引続き行うので、光ディスク装置１のデータバッファ１１には、この後も光ディスク１６の連続するアドレスからデータＣ、データＤのように、データが読み出されては格納され続ける。
【００３３】
ところが、光ディスク１６のデータＥの先読み処理中に読み出しエラーが生じると、従来の先読み処理ではリトライすることなく、先読み処理がこの時点で停止されていた。この結果、データバッファ１１にはデータＢ、データＣ、及びデータＤしか格納されないことになる。従って、この後にホストコンピュータ３から光ディスク１６上の隣接アドレスのデータＢ、データＣ、及びデータＤの読み出し要求が来た場合には対応できるが、次のデータＥの読み出し指示には対応できず、データ不足によってホストコンピュータ３の動作が停止してしまうという不測の事態が発生してしまっていた。
【００３４】
図３Ｂは先読み処理にエラーがある時の本発明の光ディスク装置１における、ＭＰＵ１０の基本的な先読み処理を説明するタイムチャートである。この場合も、光ディスク１６が光ディスク装置１に挿入された後に、光ディスク１６からデータが読み出される。ホストコンピュータ３からデータＡの読み出し指示がＳＣＳＩ２を介して光ディスク装置１に入力されると、光ディスク装置１のＭＰＵ１０の制御により、光ディスク１６からデータＡが読み出され、このデータＡがデータバッファ１１に格納される。データＡはデータバッファ１１に一旦格納された後に、ＭＰＵ１０の制御によってＳＣＳＩ２を介してホストコンピュータ３に転送される。
【００３５】
一方、光ディスク装置１のＭＰＵ１０は、ホストコンピュータ３からデータＡの読み出し指示が来て、光ディスク１６からデータＡが読み出されると、ホストコンピュータ３から次の読み出し指示が来ていない状態で、引続いて光ディスク１６の次のアドレスにあるデータＢを読み出す処理を行い、読み出したデータＢを、データバッファ１１に格納する、所謂、先読み処理を実行する。ＭＰＵ１０はこの先読み処理を引続き行うので、光ディスク装置１のデータバッファ１１には、この後も光ディスク１６の連続するアドレスからデータＣ、データＤのように、データが読み出されては格納され続ける。これまでの制御は従来の光ディスク装置と同じである。
【００３６】
ところが、光ディスク１６のデータＥの先読み処理中に読み出しエラーが生じると、従来の先読み処理ではリトライすることなく、先読み処理がこの時点で停止されていた。一方、本発明では、データＥの先読み処理にエラーが発生したことが分かると、この後のホストコンピュータ３からのデータＣの読み出し指示に対する応答時に、データバッファ１１内のデータＣを転送すると共に、データＥの先読み処理にエラーが発生した情報をホストコンピュータ３に転送する。
【００３７】
すると、ホストコンピュータ３からその後にデータＥからの先読み処理の再開指示が光ディスク装置１に入力され、光ディスク１６のデータＥからの先読み処理が再開される。この先読み処理ではエラーが生じなかったとすると、データバッファ１１にはデータＥ、データＦ、データＧが順次先読み処理されては格納されることになる。従って、ホストコンピュータ３からの先読み処理の再開指示が光ディスク装置１に入力された後に、ホストコンピュータ３から光ディスク１６上の隣接アドレスのデータＤ、及びそれ以降のデータの読み出し要求が来た場合でも、本発明の光ディスク装置１ではその読み出し要求に対して遅滞なく対応することができる。よって、本発明ではホストコンピュータ３の動作が停止してしまうという不測の事態が発生する可能性が低くなる。
【００３８】
図３Ｂは本発明の光ディスク装置１におけるＭＰＵ１０の先読み処理の基本的な処理手順を説明したものであるが、以後この処理手順のホストコンピュータ側の詳細な処理手順の実施例、及び、光ディスク装置側のＭＰＵ１０の詳細な処理手順の実施例について、以下にフローチャートを用いて説明する。
【００３９】
図４は先読み処理にエラーがある時の本発明におけるホストコンピュータ３側の処理手順の一例を示すフローチャートである。
【００４０】
ステップ４０１ではホストコンピュータ３が光ディスク装置１に対してデータの読み出し指示を行う。続くステップ４０２では光ディスク装置１からのデータ転送があるか否を判定し、データ転送がない場合はこのルーチンを終了するが、データ転送がある場合はステップ４０３に進む。ステップ４０３では光ディスク装置１からの転送されたデータ中に先読み処理エラー報告があるか否かを判定する。
【００４１】
光ディスク装置１からの転送されたデータ中に先読み処理エラー報告がない場合はステップ４０４に進み、光ディスク装置１から転送されてきたデータの処理を行ってこのルーチンを終了する。一方、光ディスク装置１からの転送されたデータ中に先読み処理エラー報告がある場合はステップ４０５に進み、光ディスク装置１に対して、先読み処理エラーで読み取りを中断したアドレスからのデータの先読み処理の再開を指示してこのルーチンを終了する。
【００４２】
このように、本発明ではホストコンピュータ３は光ディスク装置１から先読み処理中にリードエラーがあった場合には、光ディスク装置１に対してリードエラーのあったアドレスからのデータの先読み処理の再開を指示して先読み処理をリトライさせるので、光ディスク装置１側における先読み処理の中断が回避できる可能性が高くなり、システム全体の性能が落ちないようになる。
【００４３】
図５は、先読み処理にエラーがある時の本発明におけるディスク装置１側の、ＭＰＵ１０による処理手順の第１の実施例を示すフローチャートである。図５の処理手順は、所定時間毎に行われるものとする。なお、以後、先読み処理を単に先読みと記載する。
【００４４】
まず、先読み中にエラーが発生しない場合の手順について説明する。この場合は、ステップ５０１においてホストコンピュータ３からのデータの読み出し指示があるか否かを判定し、読み出し指示がない場合はステップ５０２に進み、読み出し指示がある場合はステップ５０３に進む。ステップ５０２では既にホストコンピュータ３からのデータの読み出し指示があったか否かを判定し、既に読み出し指示がない場合にはこのルーチンを終了する。ステップ５０２で既に読み出し指示があったと判定した場合の処理については後述する。一方、ホストコンピュータ３からのデータの読み出し指示がある場合に進むステップ５０３では、ホストコンピュータ３から読み出し指示されたアドレスがデータバッファ１１内にあるか否かを判定する。データバッファ１１内に指示アドレスがない場合、例えば、ホストコンピュータ３からの読み出し指示が最初の指示等の場合、にはステップ５０４に進み、光ディスク１６の指示アドレスからデータを読み出す。
【００４５】
続くステップ５０５ではこの指示アドレスのデータの読み出し中にエラーが生じたか否かを判定する。エラーが生じない場合にはステップ５０６に進み、読み出したデータをホストコンピュータ３に転送する。そして、次のステップ５１１において今回読み出したアドレスの続きのアドレスのデータを先読みする。ここでもステップ５１２において先読み中にエラーが発生したか否かを判定し、エラーが発生していない場合にステップ５１３に進んで先読みしたデータをデータバッファ１１内に格納してこのルーチンを終了する。
【００４６】
所定時間後にステップ５０１が実行された時に、未だホストコンピュータ３からの読み出し指示がない場合にはステップ５０２に進む。既にホストコンピュータ３からの読み出し指示があったので、ステップ５０２の判定はＹＥＳとなり、ステップ５１１に進み、前述のステップ５１１からステップ５１３のデータの先読みが繰り返されてこのルーチンを終了する。
【００４７】
また、所定時間後にステップ５０１が実行された時に、ホストコンピュータ３からの読み出し指示があってステップ５０３に進んだ場合で、この時のホストコンピュータ３からの読み出し指示アドレスがデータバッファ１１内にあった場合は、ステップ５０３からステップ５０７に進む。ステップ５０７ではエラー履歴があったか否かを判定し、エラー履歴がない場合にはステップ５１０に進む。ステップ５１０ではデータバッファ１１内のデータがホストコンピュータ３に転送される。この後、前述のステップ５１１からステップ５１３のデータの先読みが繰り返されてこのルーチンを終了する。
【００４８】
以上が光ディスク１６内のデータの読み出し中にエラーが発生しない時の制御手順である。次に、光ディスク１６内のデータの読み出し中にエラーが発生した場合の制御手順を説明する。エラーが発生する状況には、(1) 最初の読み出し指示のアドレスの読み出し中にエラーが発生した場合と、(2) 先読み中にエラーが発生した場合の２通りがあるので、それぞれの場合について説明する。
【００４９】
(1) 最初の読み出し指示のアドレスの読み出し中にエラーが発生した場合
このケースは、ステップ５０１からステップ５０４の処理が実行され、指示アドレスからデータを読み出している時にエラーが発生したケースである。このケースではステップ５０５においてエラーが発生したと判定されてステップ５１５に進む。ステップ５１５ではエラー発生アドレスをホストコンピュータ３に報告してこのルーチンを終了する。
【００５０】
この場合にはホストコンピュータ３から再度同じ指示アドレスに対する読み出し指示が来るので、ステップ５０１からステップ５０４の処理が実行される。
【００５１】
(2) 先読み中にエラーが発生した場合
このケースは、前述のステップ５０１からステップ５１０までの処理が終了し、ステップ５１１において続きのアドレスを先読みしている時にエラーが発生したケースである。このケースではステップ５１２においてエラーが発生したと判定されてステップ５１４に進む。ステップ５１４では先読みを中止し、エラー発生をデータバッファ１１内に記憶する。このケースでは、所定時間後にステップ５０１、５０３の処理が終了してステップ５０７に進んできた時に、エラー履歴が有ると判定され、ステップ５０８に進む。
【００５２】
ステップ５０８では先読み再開指示か否かを判定するが、先読み中にエラーが発生した直後はホストコンピュータ３にはエラー報告が送られておらず、ホストコンピュータ３はエラー発生を認識していないので、ホストコンピュータ３からは先読み再開指示は来ない。従って、この場合はステップ５１５に進み、エラー発生アドレスをホストコンピュータ３に報告してこのルーチンを終了する。このように、一度ステップ５１５の処理でエラー発生アドレスがホストコンピュータ３に報告されると、ホストコンピュータ３からは図４のステップ４０５で説明したように、先読みの再開指示を出す。よって、次にステップ５０８に進んで来た時には、先読み再開指示があると判定され、ステップ５０９に進む。ステップ５０９では先読み再開アドレス以降のアドレスの先読みが実行される。
【００５３】
そして、ステップ５０９で先読みが再開された後は、前述のステップ５１２からステップ５１４の処理が行われ、先読み中エラーの発生を監視しつつ、先読みしたデータがデータバッファ１１に格納され続ける。
【００５４】
このように、本発明では光ディスク装置１における先読み中にリードエラーがあった場合には、ホストコンピュータ３から光ディスク装置１に対してリードエラーのあったアドレスからのデータの先読みの再開が指示され、先読みのリトライが行われるので、光ディスク装置１側における先読みの中断が回避できる可能性が高くなり、システム全体の性能が落ちないようになる。
【００５５】
図６は先読み中にリードエラーがある時の本発明におけるディスク装置１側の処理手順の第２の実施例を示すフローチャートである。従って、図６には図５のステップ５０７以降の処理手順が示してあり、図５の処理手順と同じ処理手順には同じステップ番号が付してある。
【００５６】
図５において説明した第１の実施例では、先読み中にエラーが発生し、ホストコンピュータ３からの先読み再開指示が来た場合には、ステップ５０９において先読み再開アドレス以降のアドレスの先読みを行い、続くステップ５１２においてその先読み時にエラーが発生したか否かを判定し、ステップ５１２でエラーが発生したと判定した場合に、ステップ５１４に進んで先読みを中止するだけであった。一方、図６に示す第２の実施例では、コンピュータ３からの先読み再開指示が来た後の先読み時に、再度ステップ５１２でエラー発生と判定された場合に、ステップ５１４の処理を行う前にステップ６０１の処理を行う点が異なる。ステップ６０１の処理は、先読み再開後に再度ステップ５１２でエラー発生と判定された場合に、前回と同じアドレスでエラーが発生したか否かを判定するものである。
【００５７】
そして、第２の実施例では、ステップ６０１で同じアドレスでエラーが発生していないと判定した場合には第１の実施例と同様にステップ５１４の処理を行うが、同じアドレスでエラーが発生したと判定した場合にはステップ６０２からステップ６０４の処理を行う。ステップ６０２の処理は、同じアドレスで再度リードエラーが発生した場合には、そのアドレスを飛ばして先読みをするというものである。即ち、ステップ６０２では、ホストコンピュータ３から指示された先読み再開アドレスの次のアドレス以降のアドレスを先読みする処理を行う。
【００５８】
続くステップ６０３は先読み再開アドレスの次のアドレス以降のアドレスの先読み時にエラーが発生したか否かを判定するものである。ここでも先読み中にリードエラーが発生した場合にはステップ５１４に進み、先読みを中止してエラー発生を記録する。一方、先読み再開アドレスの次のアドレス以降のアドレスの先読み時にエラーがない場合には、ステップ６０４に進み、先読みしたデータは前と同じテーブルには展開せず、別のテーブルに展開してこのルーチンを終了する。
【００５９】
このように第２の実施例では、同じアドレスのデータが続けてリードエラーを起こした時には、そのアドレスのデータの読み出しをカットし、エラーのあったアドレスの次のアドレスのデータを先読みするので、無駄な先読み中断を無くすことができる。
【００６０】
図７は先読みにエラーがある時の本発明におけるディスク装置１側の処理手順の第３の実施例を示すフローチャートである。先読みにエラーがない時のディスク装置１側の処理は第１、第２の実施例と同じである。従って、図５、図６の処理手順と同じ処理手順には同じステップ番号が付してある。
【００６１】
図５、図６において説明した第１、第２の実施例では、ホストコンピュータ３からの指示アドレスのデータの読み出し中、或いは、先読み中にエラーが発生した場合には、エラーをその都度ホストコンピュータ３側に報告していた。一方、第３の実施例では、ホストコンピュータ３からの指示アドレスのデータの読み出し中、或いは、先読み中にエラーが発生した場合には、光ディスク装置１側でエラー発生アドレスのデータの読み出しのリトライを行う。この点が第３の実施例が第１、第２の実施例と異なる点である。
【００６２】
よって、第３の実施例においても、(1) 最初の読み出し指示のアドレスの読み出し中にエラーが発生した場合と、(2) 先読み中にエラーが発生した場合、のそれぞれの場合について処理手順を説明する。
【００６３】
(1) 最初の読み出し指示のアドレスの読み出し中にエラーが発生した場合
このケースは、ステップ５０１からステップ５０４の処理が実行され、指示アドレスからデータを読み出している時にエラーが発生したケースである。このケースではステップ５０５においてエラーが発生したと判定されてステップ７０１に進む。ステップ７０１ではエラー発生アドレスから再度データを読み出すリトライ処理を行う。そして、次のステップ７０２においてこのリトライによってデータが読めたか否かを判定し、読めた場合にはステップ５０６に戻って通常の処理を行う。
【００６４】
一方、ステップ７０１におけるリトライ処理によっても光ディスク１６のエラー発生アドレスからデータが読めない場合は、ステップ７０２からステップ７０３に進む。ステップ７０３はエラー発生アドレスからデータを読み出すリトライ処理が所定回数、例えば、１０回継続したか否かを判定するものである。ステップ７０３におけるリトライ回数の判定が１０回未満の場合はステップ７０１に戻ってリトライを継続するが、１０回リトライを行ったと判定した場合はステップ７０７に進む。ステップ７０７では読み出しを中止し、エラーが発生したことをホストコンピュータ３に報告してホストコンピュータ３からの指示を待つ状態でこのルーチンを終了する。
【００６５】
(2) 先読み中にエラーが発生した場合
このケースは、前述のステップ５０１からステップ５１０までの処理が終了し、ステップ５１１において続きのアドレスを先読みしている時にエラーが発生したケースである。このケースではステップ５１２においてエラーが発生したと判定されてステップ７０４に進む。ステップ７０４ではエラー発生アドレスから再度データを読み出すリトライ処理を行う。そして、次のステップ７０５においてこのリトライによってデータが読めたか否かを判定し、読めた場合にはステップ５１３に戻って通常の処理を行う。
【００６６】
一方、ステップ７０４におけるリトライ処理によっても光ディスク１６のエラー発生アドレスからデータが読めない場合は、ステップ７０５からステップ７０６に進む。ステップ７０６はエラー発生アドレスからデータを読み出すリトライ処理が所定回数、例えば、１０回継続したか否かを判定するものである。ステップ７０６におけるリトライ回数の判定が１０回未満の場合はステップ７０４に戻ってリトライを継続するが、１０回リトライを行ったと判定した場合はステップ７０７に進む。ステップ７０７では読み出しを中止し、エラーが発生したことをホストコンピュータ３に報告してホストコンピュータ３からの指示を待つ状態でこのルーチンを終了する。
【００６７】
このように、第３の実施例では光ディスク装置１における先読み中にリードエラーがあった場合には、ホストコンピュータ３に光ディスク装置１に対してリードエラーのあったことを報告する前に、リードエラーのあったアドレスからのデータの読み出しのリトライが所定回数だけ実行されるので、ホストコンピュータ３からリトライ指示を待つまでもなく、リードエラーを回避できる可能性が高くなり、システム全体の性能が向上する。
【００６８】
図８は先読みにエラーがある時の本発明におけるディスク装置１側の処理手順の第４の実施例を示すフローチャートである。第４の実施例は第３の実施例と同様に、ホストコンピュータ３からの指示アドレスのデータの読み出し中、或いは、先読み中にエラーが発生した場合には、光ディスク装置１側でエラー発生アドレスのデータの読み出しのリトライを行うものである。第４の実施例が第３の実施例と異なる点は、第３の実施例がこのリトライを回数で制限していたのに対して、第４の実施例がこのリトライを時間で制限している点のみである。よって、第４の実施例においても、これまでの実施例と同じ処理手順を示すステップには同じステップ番号が付してある。
【００６９】
第４の実施例においても、(1) 最初の読み出し指示のアドレスの読み出し中にエラーが発生した場合と、(2) 先読み中にエラーが発生した場合、のそれぞれの場合について処理手順を説明する。
【００７０】
(1) 最初の読み出し指示のアドレスの読み出し中にエラーが発生した場合
このケースは、ステップ５０１からステップ５０４の処理が実行され、指示アドレスからデータを読み出している時にエラーが発生したケースである。このケースではステップ５０５においてエラーが発生したと判定されてステップ８０１に進む。ステップ８０１では時間を計数するタイマを作動させてステップ８０２に進む。ステップ８０２ではエラー発生アドレスから再度データを読み出すリトライ処理を行う。そして、次のステップ８０３においてこのリトライによってデータが読めたか否かを判定し、読めた場合にはステップ５０６に戻って通常の処理を行う。
【００７１】
一方、ステップ８０２におけるリトライ処理によっても光ディスク１６のエラー発生アドレスからデータが読めない場合は、ステップ８０３からステップ８０４に進む。ステップ８０４はエラー発生アドレスからデータを読み出すリトライ処理が所定時間を経過したか否かを、ステップ８０１で動作させたタイマの計数時間によって判定するものである。ステップ８０４におけるリトライ時間が所定時間内の場合はステップ８０２に戻ってリトライを継続するが、所定時間を超過したと判定した場合はステップ８０９に進む。ステップ８０９では読み出しを中止し、エラーが発生したことをホストコンピュータ３に報告してホストコンピュータ３からの指示を待つ状態でこのルーチンを終了する。
【００７２】
(2) 先読み中にエラーが発生した場合
このケースは、前述のステップ５０１からステップ５１０までの処理が終了し、ステップ５１１において続きのアドレスを先読みしている時にエラーが発生したケースである。このケースではステップ５１２においてエラーが発生したと判定されてステップ８０５に進む。ステップ８０５では時間を計数するタイマを作動させてステップ８０６に進む。ステップ８０６ではエラー発生アドレスから再度データを読み出すリトライ処理を行う。そして、次のステップ８０７においてこのリトライによってデータが読めたか否かを判定し、読めた場合にはステップ５１３に戻って通常の処理を行う。
【００７３】
一方、ステップ８０６におけるリトライ処理によっても光ディスク１６のエラー発生アドレスからデータが読めない場合は、ステップ８０７からステップ８０８に進む。ステップ８０８はエラー発生アドレスからデータを読み出すリトライ処理が所定時間を経過したか否かを、ステップ８０５で動作させたタイマの計数時間によって判定するものである。ステップ８０８におけるリトライ時間が所定時間内の場合はステップ８０６に戻ってリトライを継続するが、所定時間を超過したと判定した場合はステップ８０９に進む。ステップ８０９では読み出しを中止し、エラーが発生したことをホストコンピュータ３に報告してホストコンピュータ３からの指示を待つ状態でこのルーチンを終了する。
【００７４】
このように、第４の実施例では光ディスク装置１における先読み中にリードエラーがあった場合には、ホストコンピュータ３に光ディスク装置１に対してリードエラーのあったことを報告する前に、リードエラーのあったアドレスからのデータの読み出しのリトライが所定時間だけ実行されるので、ホストコンピュータ３からリトライ指示を待つまでもなく、リードエラーを回避できる可能性が高くなり、システム全体の性能が向上する。
【００７５】
なお、第３の実施例では１０回リトライを行ったと判定した場合、第４の実施例ではリトライを行った時間が所定時間が経過した場合に、読み出しを中止してエラーが発生したことをホストコンピュータ３に報告してホストコンピュータ３からの指示を待つ状態でこのルーチンを終了していた。一方、このような第３、第４の実施例に第２の実施例を組み合わせた実施例として、第３の実施例では１０回リトライを行ったと判定した場合、或いは、第４の実施例ではリトライを行った時間が所定時間が経過した場合に、第２の実施例のステップ６０２から６０４の処理を行い、アラーが発生したアドレスの次のアドレスから先読みを継続すると共に、読み出したデータを新たに別のテーブルに展開するようにしても良いものである。
【００７６】
以上、本発明の光ディスク装置１の先読みにエラーがある時のホストコンピュータ３側の処理手順の一例、及び、ディスク装置１側の処理手順の第１から第４の実施例を説明したが、次に、本発明の光ディスク装置１において先読み中にホストコンピュータ３からデータの書込指示が来た場合等のように、本発明の先読み手順中に起こる種々の状況に対する実施例を説明する。
【００７７】
図９は本発明の光ディスク装置１が先読みを実行している最中にホストコンピュータ３からデータの書込指示が合った場合の、先読み手順の第１の実施例を示すフローチャートである。このルーチンは所定時間毎に実行される。
【００７８】
ステップ９０１ではまず、先読み中にホストコンピュータ３からデータの書込指示があったか否かを判定する。書込指示がない場合はステップ９０２に進み、先読みを継続してこのルーチンを終了する。一方、先読み中にホストコンピュータ３からデータの書込指示があった場合は、ステップ９０１からステップ９０３に進み、先読みを中断する。そして、次のステップ９０４において先読みを中断したアドレスを記憶し、ステップ９０５でホストコンピュータ３から転送されて来た書込データを受信してデータバッファ１１に格納する。
【００７９】
次のステップ９０６ではデータバッファ１１に格納した書込データの光ディスク（媒体）１６への書込処理を実行する。そして、ステップ９０７で書込処理が終了したか否かを判定し、書込処理が終了していなければステップ９０５に戻り、ホストコンピュータ３からの書込データの受信と光ディスク１６への書込処理を繰り返す。一方、ステップ９０７で書込処理が終了したと判定した場合はステップ９０８に進み、ステップ９０４で記憶した先読みの中断アドレスを読み出す。そして、続くステップ９０９において、中断されたアドレスからの先読みを継続してこのルーチンを終了する。
【００８０】
図１０は本発明の先読み手順の第２の実施例を示すフローチャートである。第２の実施例は、光ディスク装置１の先読み中にホストコンピュータ３から、予め定められた特定のアドレスに対するデータ読み出しコマンドが発行された場合に、光ディスク装置１が一旦先読みを中断するが、その特定のアドレスに対する先読みは行わず、先読みを中断したアドレスから再開するものである。
【００８１】
ステップ１００１ではまず、先読み中にホストコンピュータ３からデータの読み出し指示があったか否かを判定する。読み出し指示がない場合はステップ１００２に進み、先読みを継続してこのルーチンを終了する。一方、先読み中にホストコンピュータ３からデータの読み出し指示があった場合は、ステップ１００１からステップ１００３に進み、先読みを中断する。そして、次のステップ１００４ではこの読み出し指示がファイルシステム情報の読み出しか否かを判定する。
【００８２】
ホストコンピュータ３からの読み出し指示がファイルシステム情報の読み出しであった場合は、ステップ１００５で中断アドレスを記憶した後にステップ１００６に進み、ファイルシステム情報記憶領域の指示されたアドレスからデータを読み出して転送する。このとき、ファイルシステム情報記憶領域の次のアドレスに対する先読みは行わない。そして、ステップ１０１１においてステップ１００３で記憶した先読みの中断アドレスを読み出し、続くステップ１０１２においては中断されたアドレスからの先読みを継続してこのルーチンを終了する。
【００８３】
一方、ホストコンピュータ３からの読み出し指示がファイルシステム情報の読み出しでなかった場合は、ステップ１００７で中断アドレスを記憶した後にステップ１００８に進み、読み出し指示アドレスを受信する。そして、ステップ１００９において、ホストコンピュータ３から受信した読み出し指示アドレスがデータバッファ１１内にあるか否かを判定する。
【００８４】
ホストコンピュータ３から受信した読み出し指示アドレスがデータバッファ１１内にある場合はステップ１０１０に進み、データバッファ１１内の当該アドレスからデータを読み出してホストコンピュータ３に転送する。そして、ステップ１０１１においてステップ１００７で記憶した先読みの中断アドレスを読み出し、続くステップ１０１２において、中断されたアドレスからの先読みを継続してこのルーチンを終了する。一方、ホストコンピュータ３から受信した読み出し指示アドレスがデータバッファ１１内にない場合はステップ１０１３に進み、光ディスク１６の指定アドレスからデータを読み出してホストコンピュータ３に転送する。そして、ステップ１０１４においてこの指定アドレスの次の光ディスク１６のアドレスから先読みを実行してこのルーチンを終了する。
【００８５】
このように、先読みの第２の実施例では、ファイルシステム情報のように、予め定められた特定のアドレスに対するデータ読み出し指示がホストコンピュータ３から入力された場合には、光ディスク装置１が一旦先読みを中断するが、その特定のアドレスに対する先読みは行わず、先読みを中断したアドレスから先読みを再開する。
【００８６】
図１１は本発明の先読み手順の第３の実施例を示すフローチャートである。第３の実施例は、ディスク装置１の先読み中にホストコンピュータ３から所定のリセットコマンドが発行された場合に、光ディスク装置１が先読みを中断し、リセットコマンドによるリセットが終了した後に、中断したアドレスから先読みを継続するものである。
【００８７】
ステップ１１０１ではまず、先読み中にホストコンピュータ３からコマンドの入力があったか否かを判定する。コマンド入力がない場合はステップ１１０２に進み、先読みを継続してこのルーチンを終了する。一方、先読み中にホストコンピュータ３からコマンド入力があった場合は、ステップ１１０１からステップ１１０３に進み、先読みを中断する。そして、次のステップ１１０４ではこのコマンドがＳＩＳＩのリセットコマンド、又はバス・デバイスのリセットコマンドか否かを判定する。
【００８８】
ホストコンピュータ３から入力されたコマンドが、ＳＩＳＩのリセットコマンド、又はバス・デバイスのリセットコマンドでなかった場合はステップ１１０４からステップ１１０９に進み、中断されたアドレスからの先読みを継続してこのルーチンを終了する。
【００８９】
一方、ホストコンピュータ３から入力されたコマンドが、ＳＩＳＩのリセットコマンド、又はバス・デバイスのリセットコマンドであった場合はステップ１１０５で中断アドレスを記憶した後にステップ１１０６に進む。ステップ１１０６では、入力されたコマンドに応じてＳＩＳＩのリセット処理、或いは、バス・デバイスのリセット処理を行う。ステップ１１０７はこのＳＩＳＩのリセット処理、或いは、バス・デバイスのリセット処理が終了したか否かを判定し、処理が終了していない場合はステップ１１０６に戻ってＳＩＳＩのリセット処理、或いは、バス・デバイスのリセット処理を実行する。また、ステップ１１０７でＳＩＳＩのリセット処理、或いは、バス・デバイスのリセット処理が終了したと判定した場合はステップ１１０８に進み、ステップ１１０５で記憶した先読みの中断アドレスを読み出し、続くステップ１１０９において、中断されたアドレスからの先読みを継続してこのルーチンを終了する。
【００９０】
このように、先読みの第３の実施例では、ディスク装置１の先読み中にホストコンピュータ３から、ＳＩＳＩのリセットコマンド、又はバス・デバイスのリセットコマンドのような所定のリセットコマンドが入力された場合には、光ディスク装置１の先読みを中断させ、リセットコマンドによるリセット処理を優先処理し、この処理が終了した後に、中断したアドレスから先読みを継続する。
【００９１】
図１２は本発明の先読み手順の第４の実施例を示すフローチャートである。第４の実施例は、光ディスク装置１の先読み中に、先読みするアドレスが予め定められた特定のアドレスにさしかかったら、光ディスク装置１は一旦先読みを中断し、この特定のアドレスを飛ばしたアドレスから先読みを再開すると共に、先読みしたデータを展開するテーブルを変更するものである。
【００９２】
ステップ１２０１ではまず、先読み中に次の先読みデータのアドレスを確認する。次に、この確認した次の先読みデータのアドレスが特定のアドレス、例えば、ＦＡＴ部のアドレスか否かをステップ１２０２で確認する。そして、次の先読みデータのアドレスが特定のアドレスでない場合はステップ１２０３に進み、先読みを継続してこのルーチンを終了する。
【００９３】
一方、次の先読みデータのアドレスが特定のアドレスであった場合は、ステップ１２０２からステップ１２０４に進み、先読みを中断する。そして、次のステップ１２０５ではこの特定のアドレスの先読みをすることなく、このアドレスのデータの読み出しを飛ばし、次の先読みデータのアドレスを確認する。ステップ１２０６では再びこの確認した次の先読みデータのアドレスが特定のアドレス、例えば、ＦＡＴ部のアドレスか否かを確認し、次の先読みデータのアドレスが特定のアドレスであった場合はステップ１２０５に戻る。また、次の先読みデータのアドレスが特定のアドレスでない場合はステップ１２０７に進み、データバッファ１１の別の記憶領域に新たにテーブルを用意する。次のステップ１２０８では次のアドレスから先読みを実行し、ステップ１２０７で用意した新たなテーブルに先読みしたデータを記憶してこのルーチンを終了する。
【００９４】
このように、先読みの第４の実施例では、ディスク装置１の先読み中に、先読みするアドレスがＦＡＴ部のような予め定められた特定のアドレスにさしかかったら、光ディスク装置１は一旦先読みを中断し、この特定のアドレスを飛ばしたアドレスから先読みを再開すると共に、先読み中断後は先読みしたデータを展開するテーブルを変更する。
【００９５】
以上、本発明の光ディスク装置１における先読み中に起こる種々の状況に対する第１から第４の実施例を説明したが、次に、本発明の光ディスク装置１において光ディスク１６が光ディスク装置１にロードされた時のＭＰＵ１０の先読みについて説明する。
【００９６】
図１３は本発明の光ディスク装置１における光ディスク１６のロード時の処理手順の第１の実施例を示すフローチャートである。図１３のルーチンは所定時間毎に実行される。
【００９７】
ステップ１３０１では光ディスク装置１に光ディスク（媒体）１６がロードされたか否かを判定し、ロードされていない時はこのままこのルーチンを終了し、ロードされた時はステップ１３０２に進む。ステップ１３０２ではロードされた光ディスク１６から媒体ＩＤを読み出す。次のステップ１３０３では読み出した媒体ＩＤが光ディスク装置１の不揮発性メモリ１８内にあるか否かを検索する。まず、光ディスク１６から読み出した媒体ＩＤが光ディスク装置１の不揮発性メモリ１８内にない時の処理について説明する。
【００９８】
光ディスク１６から読み出した媒体ＩＤが光ディスク装置１の不揮発性メモリ１８内にない時はステップ１３０４に進み、この読み出した媒体ＩＤを不揮発性メモリ１８に記憶してステップ１３０５に進む。ステップ１３０５ではホストコンピュータ３からの読み出し指示があるか否かを判定し、ホストコンピュータ３からの読み出し指示がない時はこのままこのルーチンを終了する。一方、ホストコンピュータ３からの読み出し指示がある時はステップ１３０６に進み、今回の読み出し指示アドレスを、媒体ＩＤに関連付けて不揮発性メモリ１８に記憶する。
【００９９】
次のステップ１３０７では、ホストコンピュータ３から最初に読み出し指示されたアドレスが前回と同じアドレスか否かを判定する。不揮発性メモリ１８内に媒体ＩＤがないとステップ１３０３で判定された後にステップ１３０７に進んできた時には、ホストコンピュータ３から最初に読み出し指示されたアドレスが前回と同じアドレスではない。従って、この時にはステップ１３１０に進み、ホストコンピュータ３から指示された光ディスク１６のアドレスのデータを読み出してホストコンピュータ３に転送する。そして、次のステップ１３１１では、今回のホストコンピュータ３からの指示アドレスの次のアドレスから先読みを行ってこのルーチンを終了する。
【０１００】
一方、ステップ１３０３で不揮発性メモリに媒体ＩＤがあった場合はステップ１３１２に進む。ステップ１３１２では、ホストコンピュータ３から読み出し指示がなくとも、前回最初にホストコンピュータ３から読み出し指示されたアドレスから先読みを開始する。そして、次のステップ１３１３においてホストコンピュータ３からの読み出し指示があったか否かを判定し、読み出し指示がない場合はステップ１３１４に進んで先読みを継続する。また、ステップ１３１３においてホストコンピュータ３からの読み出し指示があったと判定した時はステップ１３０７に進む。
【０１０１】
ステップ１３０７では、ホストコンピュータ３から最初に読み出し指示されたアドレスが前回と同じアドレスか否かを判定する。今回最初に読み出し指示されたアドレスが前回と同じでない場合にはステップ１３１０に進み、ホストコンピュータ３から指示された光ディスク１６のアドレスのデータを読み出してホストコンピュータ３に転送する。そして、次のステップ１３１１では、今回のホストコンピュータ３からの指示アドレスの次のアドレスから先読みを行ってこのルーチンを終了する。
【０１０２】
一方、ステップ１３０７において、今回最初に読み出し指示されたアドレスが前回と同じであると判定した場合にはステップ１３０８に進む。今回最初に読み出し指示されたアドレスが前回と同じであると判定した場合には、ステップ１３１２において既に前回最初に読み出し指示されたアドレスのデータは先読みされてデータバッファ１１に記憶されている。従って、ステップ１３０８ではデータバッファ１１から今回最初に読み出し指示されたアドレスに対応するデータを読み出してホストコンピュータ３に転送する。この後、ステップ１３０９に進んでステップ１３１２で開始した先読みを継続してこのルーチンを終了する。
【０１０３】
このように、光ディスク装置１における光ディスク１６のロード時の処理手順の第２の実施例では、光ディスク１６が光ディスク装置１にロードされた後に、不揮発性メモリ１８内を検索して、光ディスク１６の媒体ＩＤ番号とこれに関連する初回読み出しアドレスの有無を照会し、これらが存在する場合には前回の初回読み出しアドレスから先読みを実行する。この結果、今回と前回の初回読み出しアドレスが一致した時に光ディスク装置１のホストコンピュータ３に対する応答速度が早くなる。
【０１０４】
図１４は本発明の光ディスク装置１における光ディスク１６のロード時の処理手順の第２の実施例を示すフローチャートである。図１４のルーチンも所定時間毎に実行される。
【０１０５】
前述のように、光ディスク装置１における光ディスク１６のロード時の処理手順の第１の実施例では、光ディスク１６が光ディスク装置１にロードされた後に不揮発性メモリ１８内を検索し、光ディスク１６の媒体ＩＤ番号とこれに関連する初回読み出しアドレスの有無を照会し、これらが存在する場合には前回の初回読み出しアドレスから先読みを実行していた。これに対して、第２の実施例では、ロードされた光ディスク１６の媒体ＩＤが不揮発性メモリ１８内に存在する場合に、過去に読み出し指示されたアドレスの頻度が最も高いアドレスから先読みを行う点のみが異なる。よって、第１の実施例と同じステップには同じステップ番号を付し、その処理の説明を簡略化する。
【０１０６】
まず、光ディスク１６から読み出した媒体ＩＤが光ディスク装置１の不揮発性メモリ１８内にない時の処理について説明する。この時の処理は第１の実施例とほぼ同じである。従って、ステップ１３０１で光ディスク装置１に光ディスク（媒体）１６がロードされたか否かを判定し、ステップ１３０２でロードされた光ディスク１６から媒体ＩＤを読み出し、ステップ１３０３では読み出した媒体ＩＤが光ディスク装置１の不揮発性メモリ１８内にないと判定されるので、ステップ１３０４で読み出した媒体ＩＤを不揮発性メモリ１８に記憶する。そして、ステップ１３０５でホストコンピュータ３からの読み出し指示がないと判定した時はこのままこのルーチンを終了し、読み出し指示がある時はステップ１４０３に進む。
【０１０７】
ステップ１４０３の処理は第２の実施例ではデータバッファ１１内に指示アドレスがあるか否かの判定であるが、光ディスク１６から読み出した媒体ＩＤが光ディスク装置１の不揮発性メモリ１８内にない時は先読みを行っていないので、この判定はＮＯとなり、第１の実施例と同様にステップ１３１０においてホストコンピュータ３から指示された光ディスク１６のアドレスのデータを読み出してホストコンピュータ３に転送し、ステップ１３１１で今回のホストコンピュータ３からの指示アドレスの次のアドレスから先読みを行ってこのルーチンを終了する。
【０１０８】
次に、光ディスク１６から読み出した媒体ＩＤが光ディスク装置１の不揮発性メモリ１８内にある時の処理について説明する。この時はステップ１３０３の判定がＹＥＳとなってステップ１４０１に進む。ステップ１４０１では、今回の媒体ＩＤを持つ光ディスク１６に対して、過去に最初に読み出し指示されたアドレスの内の最大頻度のアドレスから先読みを開始する。この処理が第２の実施例が第１の実施例と異なる点である。次のステップ１３１３の処理は第１の実施例と同じであり、ホストコンピュータ３からの読み出し指示があったか否かを判定し、読み出し指示がない場合はステップ１３１４に進んで、先読みを継続してこのルーチンを終了する。
【０１０９】
一方、ステップ１３１３においてホストコンピュータ３からの読み出し指示があったと判定した時はステップ１４０２に進む。ステップ１４０２ではホストコンピュータ３から最初に読み出し指示されたアドレスを不揮発性メモリ１８に記憶し、同じ媒体ＩＤの中で、最初に読み出し指示されたアドレスの読み出し頻度の統計を計算して記憶し、ステップ１４０３に進む。このステップ１４０２の処理が第１の実施例にはない第２の実施例の特徴である。
【０１１０】
ステップ１４０３ではデータバッファ１１内にホストコンピュータ３から読み出し指示されたアドレスがあるか否かを判定する。データバッファ１１内にホストコンピュータ３から読み出し指示されたアドレスがある場合にはステップ１３０８に進み、データバッファ１１から読み出し指示されたアドレスに対応するデータを読み出してホストコンピュータ３に転送する。この後、ステップ１３０９に進んでステップ１３１２で開始した先読みを継続してこのルーチンを終了する。一方、データバッファ１１内にホストコンピュータ３から読み出し指示されたアドレスがない場合にはステップ１３１０に進み、ホストコンピュータ３から指示された光ディスク１６のアドレスのデータを読み出してホストコンピュータ３に転送する。そして、次のステップ１３１１では、今回のホストコンピュータ３からの指示アドレスの次のアドレスから先読みを行ってこのルーチンを終了する。
【０１１１】
このように、光ディスク装置１における光ディスク１６のロード時の処理手順の第１の実施例では、光ディスク１６が光ディスク装置１にロードされた後に、不揮発性メモリ１８内を検索して、光ディスク１６の媒体ＩＤ番号とこれに関連する初回読み出しアドレスの有無を照会し、これらが存在する場合にはこれまでに計算されている頻度の最も高い初回読み出しアドレスから先読みを実行する。この結果、特定の媒体ＩＤを持つデータバッファ１１に対して初回の読み出しアドレスが一致する確率が高くなり、光ディスク装置１のホストコンピュータ３に対する応答速度が早くなる。
【０１１２】
なお、以上説明した実施例では、ディスク装置として光磁気ディスク装置の例を説明したが、本発明のディスク装置は光磁気ディスク装置に特に限定されるものではなく、ＣＤ等の他の光ディスク装置についても本発明を有効に適用することができる。
【０１１３】
〔産業上の利用可能性〕
本発明に示される、データの先読み処理を行う光ディスク装置の構成によれば、ホストコンピュータが先読み処理再開通知機能を備える場合は、ホストコンピュータに対して先読み処理時のエラー発生を報告することによって、ホストコンピュータの先読み処理再開通知機能を使用して、先読み処理を継続して行うことができるようになる。このため、光ディスク装置からの読み出し速度の向上が可能となる。
【図面の簡単な説明】
【図１】  本発明のディスク装置がインタフェースを介して上位装置に接続されたシステム図である。
【図２】  先読み処理にエラーがない時のディスク装置における先読み処理を説明するタイムチャートである。
【図３Ａ】  先読み処理にエラーがある時のこれまでのディスク装置における先読み処理を説明するタイムチャートである。
【図３Ｂ】  先読み処理にエラーがある時の本発明のディスク装置における先読み処理を説明するタイムチャートである。
【図４】  先読み処理にエラーがある時の本発明におけるホストコンピュータ側の処理手順の一例を示すフローチャートである。
【図５】  先読み処理にエラーがある時の本発明におけるディスク装置側の処理手順の第１の実施例を示すフローチャートである。
【図６】  先読み処理にエラーがある時の本発明におけるディスク装置側の処理手順の第２の実施例を示すフローチャートである。
【図７】  先読み処理にエラーがある時の本発明におけるディスク装置側の処理手順の第３の実施例を示すフローチャートである。
【図８】  先読み処理にエラーがある時の本発明におけるディスク装置側の処理手順の第４の実施例を示すフローチャートである。
【図９】  本発明の先読み処理手順の第１の実施例を示すフローチャートである。
【図１０】  本発明の先読み処理手順の第２の実施例を示すフローチャートである。
【図１１】  本発明の先読み処理手順の第３の実施例を示すフローチャートである。
【図１２】  本発明の先読み処理手順の第４の実施例を示すフローチャートである。
【図１３】  本発明のディスク装置における媒体ロード時の処理手順の第１の実施例を示すフローチャートである。
【図１４】  本発明のディスク装置における媒体ロード時の処理手順の第２の実施例を示すフローチャートである。
【図１】
0003865586.tif 000002
【図２】
0003865586.tif 000003
【図３Ａ】
0003865586.tif 000004
【図３Ｂ】
0003865586.tif 000005
【図４】
0003865586.tif 000006
【図５】
0003865586.tif 000007
【図６】
0003865586.tif 000008
【図７】
0003865586.tif 000009
【図８】
0003865586.tif 000010
【図９】
0003865586.tif 000011
【図１０】
0003865586.tif 000012
【図１１】
0003865586.tif 000013
【図１２】
0003865586.tif 000014
【図１３】
0003865586.tif 000015
【図１４】
0003865586.tif 000016