(57)【要約】【課題】ホスト側で複雑な処理を行うことなく、データの読み出し、および／または、データの書き込みが可能なディスクドライブ装置を実現する。【解決手段】光ディスクドライブ１００は、光ディスク３０から読み出したファイルシステム情報を記憶するメモリ１４０と、ファイルを指定するファイル指定情報を引数とするファイルコマンドを受け付けるＡＴＡ／ＡＴＡＰＩインターフェース１１０と、メモリ１４０に記憶されたファイルシステム情報を参照して、光ピックアップ１３０に走査させる光ディスク３０上のセクタを決定する制御部１２０とを備えている。【選択図】図１
2010211880.tif 000002
【特許請求の範囲】
【請求項１】
ディスクから読み出したファイルシステム情報を記憶するメモリと、
ファイルを指定するファイル指定情報を引数とするファイルコマンドを受け付けるインターフェースと、
上記インターフェースが上記ファイルコマンドを受け付けた後、上記メモリに記憶された上記ファイルシステム情報に登録されているセクタ指定情報であって、該ファイルコマンドの引数により指定されたファイルを構成するデータが記録されているセクタを指定するセクタ指定情報に応じて、ヘッドに走査させる上記ディスク上のセクタを決定する制御手段と、を備えている、ことを特徴とするディスクドライブ装置。
【請求項２】
上記インターフェースは、セクタを指定するセクタ指定情報を引数とするセクタコマンドを受け付け、
上記制御手段は、上記インターフェースが上記セクタコマンドを受け付けた後、該セクタコマンドの引数に応じて、上記ヘッドに走査させる上記ディスク上のセクタを決定する、ことを特徴とする請求項１に記載のディスクドライブ装置。
【請求項３】
上記インターフェースが受け付けたコマンドを蓄積するコマンドバッファを備えており、
上記制御手段は、上記コマンドバッファに蓄積されたコマンドを、優先度の高いコマンドから順に実行する、ことを特徴とする請求項１または２に記載のディスクドライブ装置。
【請求項４】
上記インターフェースが受け付けた、データの書き込みを命じる書き込みコマンドを格納する書き込みコマンドバッファを備えており、
上記制御手段は、上記書き込みコマンドの実行が中断された場合、該書き込みコマンドを上記書き込みコマンドバッファから読み出して再実行する、ことを特徴とする請求項１から３までの何れか１項に記載のディスクドライブ装置。
【請求項５】
上記制御手段は、
上記インターフェースが受け付けたファイル指定情報を引数とするファイルコマンドを、上記メモリに記憶された上記ファイルシステム情報を参照してセクタ指定情報を引数とするセクタコマンドに変換する変換手段と、
上記変換手段により得られたセクタコマンドの引数に応じて、上記ヘッドに走査させる上記ディスク上のセクタを決定するデバイス制御手段とを含んでいる、ことを特徴とする請求項１から４までの何れか１項に記載のディスクドライブ装置。
【請求項６】
ディスクドライブ装置を制御する制御方法であって、
ディスクから読み出したファイルシステム情報をメモリに記憶する記憶ステップと、
ファイルを指定するファイル指定情報を引数とするファイルコマンドを受け付ける受付ステップと、
上記ファイルコマンドを受け付けた後、上記メモリに記憶された上記ファイルシステム情報に登録されているセクタ指定情報であって、該ファイルコマンドの引数により指定されたファイルを構成するデータが記録されているセクタを指定するセクタ指定情報に応じて、ヘッドに走査させる上記ディスク上のセクタを決定する決定ステップと、を含んでいる、ことを特徴とするディスクドライブ装置の制御方法。
【請求項７】
請求項６に記載の制御方法をコンピュータに実行させるためのプログラムであって、
上記制御方法が含んでいる上記各ステップをコンピュータに実行させるプログラム。
【請求項８】
請求項７に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクからデータを読み出したり、ディスクにデータを書き込んだりするディスクドライブ装置、及び、その制御方法に関する。また、その制御方法をコンピュータに実行させるプログラム、および、そのプログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
データを記録するための記録媒体として、ＢＤ（Blu-ray Disc），ＤＶＤ（Digital Versatile Disc），ＣＤ（Compact Disc）などの光ディスクが広く普及している。ＰＣ（Personal Computer），光ディスクプレイヤ，光ディスクレコーダなどのホスト装置は、ファイル単位で光ディスクからデータを読み出すために、通常、光ディスクに記録されたファイルシステム情報を利用する。
【０００３】
光ディスクに記録されたファイルシステム情報には、その光ディスクに記録されたファイルの各々について、そのファイルを指定するファイル指定情報（例えば、ファイル名）と、そのファイルを構成する一連のデータが記録されたセクタを指定するセクタ指定情報（例えば、論理ブロックアドレス、または、シリンダ番号、ヘッド番号、および、セクタ番号）とが関連付けて登録されている。光ディスクに用いられるファイルシステムとしては、ＵＤＦ（Universal Disk Format）（ＢＤ，ＤＶＤ用），ＩＳＯ−９６６０（ＣＤ−ＲＯＭ用）などが挙げられる。
【０００４】
従来の光ディスクドライブ１０に接続されたホスト装置２０が、光ディスク３０に記録された特定のファイルを構成する一連のデータを読み出す方法について、図７を参照して説明する。図７は、光ディスクドライブ１０およびホスト装置２０のブロック図である。光ディスクドライブ１０は、ＡＴＡ／ＡＴＡＰＩデバイスであり、光ディスクドライブ１０とホスト装置２０とは、ＡＴＡ／ＡＴＡＰＩインターフェースを介して接続されている。
【０００５】
特定のファイルを指定してデータを読み出すファイルリードコマンド（システムコール）がアプリケーション２１から与えられると、ホスト装置（ホストＰＣ）２０のＯＳ（Operating System）２２は、セクタを指定してデータを読み出すセクタリードコマンド（ＡＴＡ／ＡＴＡＰＩコマンド）に変換し、ＡＴＡ／ＡＴＡＰＩ（ＳＡＴＡ）インターフェース２３を介して光ディスクドライブ１０に渡す。
【０００６】
この際、ホスト装置２０のＯＳ２２は、光ディスクドライブ１０に渡すセクタリードコマンドの引数を、ファイルシステム情報を参照して決定する（ファイルシステム情報は、予め光ディスクドライブ１０から取得し、メモリ２４に記憶しておく）。具体的には、ファイルリードコマンドの引数であるファイル指定情報に関連付けて登録されたセクタ指定情報（読み出し対象ファイルを構成する一連のデータが記録されているセクタを指定するセクタ指定情報）をファイルシステム情報から読み出し、光ディスクドライブ１０に渡すセクタリードコマンドの引数を、ファイルシステム情報から読み出したセクタ指定情報に応じて決定する。
【０００７】
セクタリードコマンドがＡＴＡ／ＡＴＡＰＩ（ＳＡＴＡ）インターフェース１１を介してホスト装置２０から受け渡されると、光ディスクドライブ１０のデバイス制御部１２は、そのセクタリードコマンドの引数であるセクタ指定情報により指定されたセクタを走査し、これらのセクタに記録されたデータを読み出すように光ピックアップ１３を制御する。そして、光ディスクドライブ１０のデバイス制御部１２は、このようにして光ディスク３０から読み出されたデータを、ＡＴＡ／ＡＴＡＰＩ（ＳＡＴＡ）インターフェース１１を介してホストＰＣ２０に返す。
【０００８】
このようなシステムの一例として、特許文献１には、光ディスクに記録された実ファイルシステムをホスト装置に提供する光ディスクドライブと、光ディスクドライブから提供された実ファイルシステムを仮想ファイルシステムに変換して利用するホスト装置とからなるシステムが開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００８−１０７９６５号公報（公開日：２００８年５月８日）
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従来技術においては、ファイルを指定してデータを読み出すシステムコールから、セクタを指定してデータを読み出すＡＴＡ／ＡＰＡＰＩコマンドへの変換を、光ディスクドライブ装置を利用するホスト装置において行わなければならない。ホスト装置においてシステムコールからＡＴＡ／ＡＴＡＰＩコマンドへの変換を行うためには、光ディスクに記録されたファイルシステム情報を光ディスクドライブに読み出させて取得する機能や、取得したファイルシステム情報を参照して、システムコールの引数であるファイル指定情報を、ＡＴＡ／ＡＴＡＰＩコマンドの引数であるセクタ指定情報に変換する機能などを、ホスト装置に実装する必要がある。すなわち、ホスト装置側に複雑な機能が必要になるという問題があった。
【００１１】
特に、ＡＶファイルの読み書きを行なう場合、実時間処理を実現するためには、ホスト装置においてドライブの状態を特定して、適切なタイミングで適切なＡＴＡ／ＡＴＡＰＩコマンドを光ディスクドライブに発行することが必要となるが、ホスト装置にこのような機能を実装するのは容易ではないという問題があった。また、書き込みコマンドの実行が中断した場合のリカバー処理の実装に際しても同様の問題があった。
【００１２】
なお、ここでは、光ディスクドライブを例に従来技術における問題点を説明したが、同様な問題がハードディスクドライブその他のディスクドライブ装置一般において生じ得ることは言うまでもない。
【００１３】
本発明は、上記の課題に鑑みてなされたものであり、ホスト装置側に複雑な機能を実装することなく、データの読み出しや書き込みを行なうことが可能なディスクドライブを実現することにある。
【課題を解決するための手段】
【００１４】
上記課題を解決するために、本発明に係るディスクドライブ装置は、ディスクから読み出したファイルシステム情報を記憶するメモリと、ファイルを指定するファイル指定情報を引数とするファイルコマンドを受け付けるインターフェースと、上記インターフェースが上記ファイルコマンドを受け付けた後、上記メモリに記憶された上記ファイルシステム情報に登録されているセクタ指定情報であって、該ファイルコマンドの引数により指定されたファイルを構成するデータが記録されているセクタを指定するセクタ指定情報に応じて、ヘッドに走査させる上記ディスク上のセクタを決定する制御手段と、を備えている、ことを特徴としている。
【００１５】
また、上記課題を解決するために、本発明に係るディスクドライブ装置の制御方法は、ディスクから読み出したファイルシステム情報をメモリに記憶する記憶ステップと、ファイルを指定するファイル指定情報を引数とするファイルコマンドを受け付ける受付ステップと、上記ファイルコマンドを受け付けた後、上記メモリに記憶された上記ファイルシステム情報に登録されているセクタ指定情報であって、該ファイルコマンドの引数により指定されたファイルを構成するデータが記録されているセクタを指定するセクタ指定情報に応じて、ヘッドに走査させる上記ディスク上のセクタを決定する決定ステップと、を含んでいる、ことを特徴としている。
【００１６】
上記構成によれば、上記ディスクドライブを利用するホスト装置は、ファイルを指定するファイル指定情報を引数とするファイルコマンドを上記インターフェースを介して上記ディスクドライブ装置に与えることにより、上記ディスクライブ装置を用いて上記ディスクにデータを記録したり、上記ディスクからデータを読み出したりすることができる。
【００１７】
したがって、上記ディスクドライブを利用するホスト装置に、ファイル指定情報を引数とするファイルコマンドをセクタ指定情報を引数とするセクタコマンドに変換するという機能を実装することなく、データの読み出しや書き込みを行なうことができるディスクドライブ装置を実現することができる。
【００１８】
本発明に係るディスクドライブ装置において、上記インターフェースは、セクタを指定するセクタ指定情報を引数とするセクタコマンドを受け付け、上記制御手段は、上記インターフェースが上記セクタコマンドを受け付けた後、該セクタコマンドの引数に応じて、上記ヘッドに走査させる上記ディスク上のセクタを決定する、ことが好ましい。
【００１９】
上記構成によれば、上記ディスクドライブを利用するホスト装置は、ファイルを指定するファイル指定情報を引数とするファイルコマンドを上記インターフェースを介して上記ディスクドライブ装置に与えることによっても、セクタを指定するセクタ指定情報を引数とするセクタコマンドを与えることによって、上記ディスクライブ装置を用いて上記ディスクにデータを記録したり、上記ディスクからデータを読み出したりすることができる。
【００２０】
本発明に係るディスクドライブ装置においては、上記インターフェースが受け付けたコマンドを蓄積するコマンドバッファを備えており、上記制御手段は、上記コマンドバッファに蓄積されたコマンドを、優先度の高いコマンドから順に実行する、ことが好ましい。
【００２１】
上記構成によれば、上記ディスクドライブを利用するホスト装置に、優先度の高いものから順にコマンドを発行するという機能を実装することなく、優先度の高いものから順にコマンドを実行するという機能を実現することができる。
【００２２】
本発明に係るディスクドライブ装置においては、上記インターフェースが受け付けた、データの書き込みを命じる書き込みコマンドを格納する書き込みコマンドバッファを備えており、上記制御手段は、上記書き込みコマンドの実行が中断された場合、該書き込みコマンドを上記書き込みコマンドバッファから読み出して再実行する、ことが好ましい。
【００２３】
上記構成によれば、上記ディスクドライブを利用するホスト装置に、実行が中断された書き込みコマンドを再発行するという機能を実装することなく、実行が中断された書き込みコマンドを再実行するという機能を実現することができる。
【００２４】
また、上記制御手段は、例えば、上記インターフェースが受け付けたファイル指定情報を引数とするファイルコマンドを、上記メモリに記憶された上記ファイルシステム情報を参照してセクタ指定情報を引数とするセクタコマンドに変換する変換手段と、上記変換手段により得られたセクタコマンドの引数に応じて、上記ヘッドに走査させる上記ディスク上のセクタを決定するデバイス制御手段とを含んだ構成とすることができる。
【００２５】
また、本発明に係るディスクドライブの制御方法に含まれる各ステップをコンピュータに実行させるプログラム、および、そのようなプログラムを記録したコンピュータ読み取り可能な記録媒体も本発明の範疇に含まれる。
【発明の効果】
【００２６】
本発明に係るディスクドライブ装置は、ディスクから読み出したファイルシステム情報を記憶するメモリと、ファイルを指定するファイル指定情報を引数とするファイルコマンドを受け付けるインターフェースと、上記インターフェースが上記ファイルコマンドを受け付けた後、上記メモリに記憶された上記ファイルシステム情報に登録されているセクタ指定情報であって、該ファイルコマンドの引数により指定されたファイルを構成するデータが記録されているセクタを指定するセクタ指定情報に応じて、ヘッドに走査させる上記ディスク上のセクタを決定する制御手段と、を備えている。
【００２７】
また、本発明に係るディスクドライブ装置の制御方法は、ディスクから読み出したファイルシステム情報をメモリに記憶する記憶ステップと、ファイルを指定するファイル指定情報を引数とするファイルコマンドを受け付ける受付ステップと、上記ファイルコマンドを受け付けた後、上記メモリに記憶された上記ファイルシステム情報に登録されているセクタ指定情報であって、該ファイルコマンドの引数により指定されたファイルを構成するデータが記録されているセクタを指定するセクタ指定情報に応じて、ヘッドに走査させる上記ディスク上のセクタを決定する決定ステップと、を含んでいる。
【００２８】
したがって、上記ディスクドライブを利用するホスト装置は、ファイルを指定するファイル指定情報を引数とするファイルコマンドを上記インターフェースを介して上記ディスクドライブ装置に与えることにより、上記ディスクライブ装置を用いて上記ディスクにデータを記録したり、上記ディスクからデータを読み出したりすることができる。これにより、上記ディスクドライブを利用するホスト装置に、ファイル指定情報を引数とするコマンドを、セクタ指定情報を引数とするコマンドに変換するという機能を実装する必要がなくなる。
【図面の簡単な説明】
【００２９】
【図１】本発明の実施形態を示すものであり、光ディスクドライブおよび外部ホストのブロック図である。
【図２】本発明の実施形態を示すものであり、ＡＴＡ／ＡＴＡＰＩコマンドに追加されたファイルコマンドを示した図である。
【図３】本発明の実施形態を示すものであり、readコマンドをREAD SECTOR(S)コマンドまたはREAD DMAコマンドに変換する方法を示したフローチャートである。
【図４】本発明の実施形態を示すものであり、writeコマンドをWRITE SECTOR(S)コマンドまたはWRITE DMAコマンドに変換する方法を示したフローチャートである。
【図５】本発明の実施形態を示すものであり、コマンドバッファに蓄積されたコマンドの実行順序を決める方法を示したフローチャートである。
【図６】本発明の実施形態を示すものであり、書き込みコマンドの格納と再実行を行なう方法を示したフローチャートである。
【図７】従来技術を示すものであり、光ディスクドライブおよび外部ホストのブロック図である。
【発明を実施するための形態】
【００３０】
本実施形態に係るディスクドライブ装置について、図面に基づいて説明すれば以下のとおりである。なお、本実施形態に係るディスクドライブ装置は、光ディスクからデータを読み出したり、光ディスクにデータを書き込んだりするディスクドライブ装置であるので、以下、これを「光ディスクドライブ」と呼称する。ただし、本発明は、ハードディスクドライブその他のドライブ装置一般に適用することができるものであり、光ディスクドライブにその適用範囲が限定されるものではない。
【００３１】
（光ディスクドライブの構成）
本実施形態に係る光ディスクドライブ１００の構成について、図１を参照して説明する。図１は、光ディスクドライブ１００とホスト装置２０のブロック図である。光ディスクドライブ１００は、ＡＴＡ／ＡＴＡＰＩデバイスであり、光ディスクドライブ１００とホスト装置２０とは、ＡＴＡ／ＡＴＡＰＩインターフェースを介して接続されている。
【００３２】
図１に示したように、光ディスクドライブ１００は、ＡＴＡ／ＡＴＡＰＩ（ＳＡＴＡ）インターフェース１１０と、制御部１２０と、光ピックアップ１３０と、メモリ１４０とを備えている。
【００３３】
制御部１２０は、セクタを指定するセクタ指定情報を引数とする既存のＡＴＡ／ＡＴＡＰＩコマンド（セクタコマンドと呼称する）に加え、ファイルを指定するファイル指定情報を引数とする新規のＡＴＡ／ＡＴＡＰＩコマンド（ファイルコマンドと呼称する）に応じた光ピックアップ１３０の制御を行い得るように、セクタコマンドに応じた光ピックアップ１３０の制御を行う従来のデバイス制御部１２１の機能を拡張したものである。ここでは、ファイルコマンドを対応するセクタコマンドに変換するコマンド変換部１２２を付加することによって、従来のデバイス制御部１２１の機能を拡張している。
【００３４】
ＡＴＡ／ＡＴＡＰＩインターフェース１１０を介して入力されたファイルコマンドは、コマンド変換部１２２に渡され、対応するセクタコマンドに変換され、デバイス制御部１２１に渡される。一方、ＡＴＡ／ＡＴＡＰＩインターフェース１１０を介して入力されたセクタコマンドは、直接、デバイス制御部１２１に渡される。デバイス制御部１２１は、コマンド変換部１２２またはＡＴＡ／ＡＴＡＰＩインターフェース１１０から渡されたセクタコマンドに応じて光ピックアップ１３０を制御する。すなわち、光ピックアップ１３０に走査させる光ディスク３０上のセクタを、コマンド変換部１２２またはＡＴＡ／ＡＴＡＰＩインターフェース１１０から渡されたセクタコマンドの引数であるセクタ指定情報に応じて決定する。
【００３５】
例えば、渡されたセクタコマンドがセクタリードコマンド（セクタ指定情報を引数とする読み出しコマンド）である場合、デバイス制御部１２１は、その引数により指定されたセクタに記録されたデータを読み出すように光ピックアップ１３０を制御する。また、渡されたセクタコマンドがセクタライトコマンド（セクタ指定情報を引数とする書き込みコマンド）である場合、デバイス制御部１２１は、その引数により指定されたセクタにデータを書き込むように光ピックアップ１３０を制御する。
【００３６】
光ディスク３０に記録されたファイルシステム情報には、光ディスク３０に記録されたファイルの各々について、そのファイルを指定するファイル指定情報と、そのファイルを構成する一連のデータが格納されたセクタを指定するセクタ指定情報とが関連付けて登録されている。制御部１２０は、光ディスク３０が挿入された直後に、このファイルシステム情報を光ディスク３０から読み出し、読み出したファイルシステム情報をメモリ１４０に記憶する。また、制御部１２０は、光ディスク３０が排出される直前に、メモリ１４０に記録されたファイルシステム情報を光ディスク３０に書き込むとともに、メモリ１４０に記録されたファイルシステム情報を破棄する。
【００３７】
なお、光ディスク３０から読み出してメモリ１４０に記憶するファイルシステム情報としては、ＵＤＦのような汎用のファイルシステムに関するファイルシステム情報が想定されるが、これに限定されず、光ディスク３０に記録されたファイルの各々について、そのファイルを指定するファイル指定情報（例えば、ファイル名）と、そのファイルを構成する一連のデータが記録されたセクタを指定するセクタ指定情報（例えば、論理ブロックアドレス、または、シリンダ番号、ヘッド番号、および、セクタ番号）とが関連付けて登録されているものであれば何でもよい。
【００３８】
コマンド変換部１２２は、ファイルコマンドを対応するセクタコマンドに変換する際、メモリ１４０に記憶されたファイルシステム情報を参照することによって、デバイス制御部１２１に渡すセクタコマンドの引数（読み出し／書き込み対象セクタの先頭の論理ブロックアドレス、および、読み出し／書き込み対象セクタのセクタ数）を決定する。具体的には、ファイルコマンドの引数であるファイル指定情報と関連付けて登録されたセクタ指定情報をファイルシステム情報から読み出し、読み出したセクタ指定情報に応じてデバイス制御部１２１に渡すセクタコマンドの引数を決定する。コマンド変換部１２２によるコマンド変換の具体例については、参照する図面を代えて後述する。
【００３９】
なお、ここでは、光ピックアップ１３０に走査させる光ディスク３０上のセクタを、セクタコマンドに応じて決定する従来のデバイス制御部１２１に、ファイルコマンドを対応するセクタコマンドに変換するコマンド変換部１２２を付加することによって構成された制御部１２０について説明したが、これに限定されるわけではない。すなわち、制御部１２０は、ファイルコマンドの引数により指定されたファイルを構成するデータが記録されているセクタを指定するセクタ指定情報（メモリ１４０に記憶されたファイルシステム情報に登録されているセクタ指定情報のうち、ファイルコマンドの引数であるファイル指定情報に関連付けて登録されているセクタ指定情報）に応じて、光ピックアップ１３０に走査させる光ディスク３０上のセクタを決定するものであればよく、ファイルコマンドをセクタコマンドに変換することを要さない。
【００４０】
また、ここでは、光ディスクドライブ１０に光ディスク３０が挿入された時点で、ファイルシステム情報（の全部）を光ディスク３０から読み出してメモリ１４０に記憶する構成について説明したが、これに限定されるわけではない。例えば、カレントディレクトリが変更される度に、変更後のカレントディレクトリに関するファイルシステム情報を光ディスク３０から読み出してメモリ１４０に記憶する構成を採用してもよい。
【００４１】
（ＡＴＡ／ＡＴＡＰＩコマンドに追加されたファイルコマンド）
次に、ＡＴＡ／ＡＴＡＰＩコマンドに追加されたファイルコマンドについて、図２を参照して説明する。図２は、ＡＴＡ／ＡＴＡＰＩコマンドに追加されたファイルコマンドを列挙した図である。
【００４２】
ファイルコマンドは、ファイルに対するコマンドと、ディレクトリに対するコマンドとに大別される。
【００４３】
openコマンド，readコマンド，writeコマンド，closeコマンド，deleteコマンド，getStatコマンド，setStatコマンド，readAVコマンド，writeAVコマンドは、ファイルに対するコマンドであり、対象とするファイルを指定するファイル指定情報（例えば、ファイル名）を引数に含んでいる。一方、CreateDirコマンド，deleteDirコマンド，getFileListコマンドは、ディレクトリに対するコマンドであり、対象とするディレクトリを指定するディレクトリ指定情報（例えば、ディレクトリ名）を引数として含んでいる。
【００４４】
なお、これらのファイルコマンドにおける引数の指定は、ファイルコマンドを発行するホスト装置２０がＡＴＡ／ＡＴＡＰＩ（ＳＡＴＡ）インターフェース１１０のcommandレジスタに引数の値を設定することにより行われる。
【００４５】
（コマンド変換の具体例）
次に、コマンド変換部１２２がファイルコマンドをセクタコマンドに変換する方法について、readコマンドとwriteコマンドとを例に挙げて説明する。
【００４６】
図３は、コマンド変換部１２２がreadコマンド（ファイルリードコマンド）をREAD SECTOR(S)コマンドまたはREAD DMAコマンド（セクタリードコマンド）に変換する方法を示したフローチャートである。なお、READ SECTOR(S)コマンドおよびREAD DMAコマンドは、読み出し対象セクタの先頭の論理ブロックアドレスを表すSector Numberと、読み出し対象セクタのセクタ数を表すSector Countとを引数とする、ＡＴＡ／ＡＴＡＰＩの読み出しコマンドである。
【００４７】
ＡＴＡ／ＡＴＡＰＩインターフェース１１０を介してreadコマンドが入力されると、コマンド変換部１２２は、readコマンドの引数をＡＴＡ／ＡＴＡＰＩインターフェース１１０のcommandレジスタから読み出す（Ｓ１１）。具体的には、読み出し対象ファイルを指定するファイル指定情報と、読み出し対象データのサイズを指定するサイズ指定情報とを、ＡＴＡ／ＡＴＡＰＩインターフェース１１０のcommandレジスタから読み出す。
【００４８】
続いて、コマンド変換部１２２は、ステップＳ１１において読み出したファイル指定情報に関連付けて登録されているセクタ指定情報（読み出し対象ファイルを構成する一連のデータが記録されたセクタを指定するセクタ指定情報）を、メモリ１４０に記憶されたファイルシステム情報から読み出す（Ｓ１２）。
【００４９】
続いて、コマンド変換部１２２は、READ SECTOR(S)コマンドまたはREAD DMAコマンドの引数とするSector NumberおよびSector Countの値を、ステップＳ１２において読み出したセクタ指定情報に応じて決定する（Ｓ１３）。例えば、ステップＳ１２において読み出したセクタ指定情報により指定されたセクタ（読み出し対象ファイルを構成する一例のデータが格納されたセクタ）の先頭の論理ブロックアドレスをSector Numberとし、ステップＳ１１において読み出したサイズ指定情報により指定されたサイズ（読み出し対象データのサイズ）をセクタ数に換算したものをSector Countとする。
【００５０】
続いて、コマンド変換部１２２は、Ｓ１１において読み出したサイズ指定情報により指定されたサイズ（読み出し対象データのサイズ）を予め設定された閾値Ｔｈと比較する（Ｓ１４）。そして、読み出し対象データのサイズが予め設定された閾値Ｔｈを下回っていた場合（Ｓ１４：Ｙｅｓ）、READ SECTOR(S)コマンドをデバイス制御部１２１に渡す（Ｓ１５）。一方、読み出し対象のデータのサイズが予め設定された閾値Ｔｈを上回っていた場合（Ｓ１４：Ｎｏ）、READ DMAコマンドをデバイス制御部１２１に渡す（Ｓ１６）。
【００５１】
デバイス制御部１２１は、READ SECTOR(S)コマンドまたはREAD DMAコマンドの戻り値として、コマンドの実行に成功した場合にはtrueを、コマンドの実行に失敗した場合にはfalseを返す。コマンド変換部１２２は、デバイス制御部１２１がREAD SECTOR(S)コマンドまたはREAD DMAコマンドの実行に成功した場合（Ｓ１７：Ｙｅｓ）には、readコマンドの戻り値としてtrueをホスト装置２０に返し（Ｓ１８）、デバイス制御部１２１がREAD SECTOR(S)コマンドまたはREAD DMAコマンドの実行に失敗した場合（Ｓ１７：Ｎｏ）には、readコマンドの戻り値としてfalseをホスト装置２０に返して（Ｓ１９）、処理を終える。
【００５２】
図４は、コマンド変換部１２２がwriteコマンド（ファイルライトコマンド）をWRITE SECTOR(S)コマンドまたはWRITE DMAコマンド（セクタライトコマンド）に変換する方法を示したフローチャートである。なお、WRITE SECTOR(S)コマンドおよびWRITE DMAコマンドは、書き込み対象セクタの先頭の論理ブロックアドレスを表すSector Numberと、書き込み対象セクタのセクタ数を表すSector Countとを引数とするＡＴＡ／ＡＴＡＰＩの書き込みコマンドである。
【００５３】
ＡＴＡ／ＡＴＡＰＩインターフェース１１０を介してwriteコマンドが入力されると、コマンド変換部１２２は、writeコマンドの引数をＡＴＡ／ＡＴＡＰＩインターフェース１１０のcommandレジスタから読み出す（Ｓ２１）。具体的には、書き込み対象ファイルを指定するファイル指定情報と、書き込み対象データのサイズを指定するサイズ指定情報と、書き込み対象データとを、commandレジスタから読み出す。
【００５４】
続いて、コマンド変換部１２２は、ステップＳ２１において読み出したファイル指定情報に関連付けて登録されたセクタ指定情報（書き込み対象ファイルを構成する一連のデータが記録されたセクタを指定するセクタ指定情報）を、メモリ１４０に記憶されたファイルシステム情報から読み出す（Ｓ２２）。
【００５５】
続いて、コマンド変換部１２２は、WRITE SECTOR(S)コマンドまたはWRITE DMAコマンドの引数とするSector NumberおよびSector Countの値を、ステップＳ２２において読み出したセクタ指定情報に応じて設定する（Ｓ２３）。例えば、ステップＳ２２において読み出したセクタ指定情報により指定されたセクタ（書き込み対象ファイルを構成する一連のデータが記録されたセクタ）の先頭の論理ブロックアドレスをSector Numberとし、ステップＳ２１において読み出したサイズ指定情報により指定されたサイズ（書き込み対象データのサイズ）をセクタ数に換算したものをSector Countとする。
【００５６】
続いて、コマンド変換部１２２は、Ｓ２１において読み出したサイズ指定情報により指定された、書き込み対象データのサイズを予め設定された閾値Ｔｈと比較する（Ｓ２４）。そして、書き込み対象データのサイズが予め設定された閾値Ｔｈを下回っていた場合（Ｓ２４：Ｙｅｓ）、WRITE SECTOR(S)コマンドをデバイス制御部１２１に渡す（Ｓ２５）。一方、書き込み対象データのサイズが予め設定された閾値Ｔｈを上回っていた場合（Ｓ２４：Ｎｏ）、WRITE DMAコマンドをデバイス制御部１２１に渡す（Ｓ２６）。
【００５７】
デバイス制御部１２１は、WRITE SECTOR(S)コマンドまたはWRITE DMAコマンドの戻り値として、コマンドの実行に成功した場合にはtrueを、コマンドの実行に失敗した場合にはfalseを返す。コマンド変換部１２２は、デバイス制御部１２１がWRITE SECTOR(S)コマンドまたはWRITE DMAコマンドの実行に成功した場合（Ｓ２７：Ｙｅｓ）には、writeコマンドの戻り値としてtrueをホスト装置２０に返し、メモリ１４０に記憶されたファイルシステム情報を更新して（Ｓ２８）、処理を終える。具体的には、ステップＳ２２においてファイルシステム情報から読み出したセクタ指定情報を、ステップＳ２５またはＳ２６においてデバイス制御部１２１に渡されたWRITE SECTOR(S)コマンドまたはWRITE SECTOR(S)コマンドに応じて書き込み対象データが書き込まれたセクタを指定するセクタ指定情報に書き換える。一方、デバイス制御部１２１がWRITE SECTOR(S)コマンドまたはWRITE DMAコマンドの実行に失敗した場合（Ｓ２７：Ｎｏ）には、writeコマンドの戻り値としてfalseをホスト装置２０に返して（Ｓ２９）、処理を終える。
【００５８】
なお、図４では、書き込み対象データのサイズが書き込み対象ファイルのサイズよりも小さい場合を仮定したが、書き込み対象データのサイズが書き込み対象ファイルのサイズよりも大きい場合であっても、書き込み対象ファイルが記録されているセクタに記録しきれない分の書き込み対象データを空きセクタに記録するようにすればwriteコマンドを実行することができる。
【００５９】
なお、ここでは、readコマンドおよびwriteコマンドをセクタコマンドに変換する方法について説明したが、他のファイルコマンドも略同様の方法で対応するセクタコマンドに変換することができる。コマンド変換部１２２がファイルコマンドをセクタコマンドに変換する方法は、従来のホスト装置２０がファイルコマンド（システムコール）をセクタコマンド（ＡＴＡ／ＡＴＡＰＩコマンド）に変換する方法と略同様である。
【００６０】
（コマンドバッファ）
光ディスクドライブ１００は、図１に示した構成に加え、ＡＴＡ／ＡＴＡＰＩインターフェース１１０を介して入力されたコマンドを蓄積するコマンドバッファを備えていることが好ましい。そして、制御部１２０は、このコマンドバッファに蓄積されたコマンドを、優先度高い順に実行する構成とすることが好ましい。これにより、光ディスクドライブ１００に、コマンドの実行順序を最適化するスケジューリング機能を持たせることができる。
【００６１】
図５に、制御部１２０がこのコマンドバッファに蓄積されたコマンドの実行順序を決めるアルゴリズムの一例を示す。
【００６２】
制御部１２０は、ＡＴＡ／ＡＴＡＰＩインターフェース１１０を介して新たなコマンドが入力されると（Ｓ３１：Ｙｅｓ）、新たなコマンドをコマンドバッファに追加し（Ｓ３２）、コマンドバッファに蓄積されたコマンドを優先度の高い順に並べ替える（Ｓ３３）。そして、コマンドバッファに蓄積されたコマンドに未実行のコマンドがあるか否かを判定し（Ｓ３４）、未実行のコマンドがあれば（Ｓ３４：Ｙｅｓ）、未実行のコマンドのなかで最も優先度の高いコマンドを実行する（Ｓ３５）という処理を繰り返す。
【００６３】
このようなアルゴリズムにより、例えば、readAVコマンドを優先度の高いコマンド、その他のコマンドを優先度の低いコマンドとした場合に、readAVコマンドを他のコマンドより優先して実行することができる。これにより、実時間再生を要求されるＡＶデータの読み出しが他のコマンドの実行により阻害されることがなくなり、再生が飛んでしまうことを防止することができる。すなわち、ホスト装置２０によるＡＶデータの読み出しがよりスムーズに行なえるようになる。
【００６４】
なお、コマンドバッファに蓄積するコマンドは、ファイルコマンドのみであってもよいし、セクタコマンドとファイルコマンドとの両方であってもよい。また、光ディスクドライブ１００が備えているメモリ１４０を、ここで説明したコマンドバッファに流用してもよい。
【００６５】
（書き込みコマンドバッファ）
また、光ディスクドライブ１００は、図１に示した構成に加え、ＡＴＡ／ＡＴＡＰＩインターフェース１１０を介して入力されたコマンドのうち書き込みコマンドを格納する、不揮発性メモリにより構成された書き込みコマンドバッファを備えていることが好ましい。そして、制御部１２０は、書き込みコマンドの実行が中断された場合、書き込みコマンドバッファに格納された書き込みコマンドを再実行する構成とすることが好ましい。これにより、突然の電源断などによって書き込みコマンドの実行が中断された場合であっても、ディスク上のデータに不整合（例えば、データの書き込みを行なったのに、管理データが書きかえが行なわれていないなど）が生じることを防止することができる。
【００６６】
図６に、制御部１２０が書き込みコマンドの格納と再実行を行なうアルゴリズムの一例を示す。
【００６７】
制御部１２０は、図６（ａ）に示したように、ＡＴＡ／ＡＴＡＰＩインターフェース１１０を介して入力されたコマンドが書き込みコマンドであるか否かを判定し（Ｓ４１）、書き込みコマンドであれば書き込みコマンドバッファに格納する（Ｓ４２）。この際、書き込み対象データなど、書き込みコマンドの引数についても同時に書き込みコマンドバッファに格納する。そして、書き込みコマンドの実行が成功した時点で（Ｓ４３：Ｙｅｓ）、書き込みコマンドバッファに格納した書き込みコマンドを削除する（Ｓ４４）。この際、書き込み対象データなど、書き込みコマンドの引数についても同時に書き込みコマンドバッファから削除する。これにより、書き込みコマンドの実行が中断された場合に（Ｓ４３：Ｎｏ）、書き込みコマンドとその引数とが書き込みコマンドバッファに保存されることになる。
【００６８】
また、制御部１２０は、図６（ｂ）に示したように、制御部１２０を動作させるプログラムが再起動された時点で、書き込みコマンドバッファに書き込みコマンドが保存されているか否かを判定し（Ｓ４５）、書き込みコマンドが保存されていれば（Ｓ４５：Ｙｅｓ）、その書き込みコマンドを実行する（Ｓ４６）。これにより、実行が中断された書き込みコマンドを再実行することができる。
【００６９】
（プログラムおよび記録媒体）
最後に、光ディスクドライブ１００に含まれている制御部１２０は、ハードウェアロジックによって構成すればよい。または、次のように、ＣＰＵ（Central Processing Unit）を用いてソフトウェアによって実現してもよい。
【００７０】
すなわち、制御部１２０は、各機能を実現するプログラムの命令を実行するＭＰＵなどのＣＰＵ、このプログラムを格納したＲＯＭ（Read Only Memory）、上記プログラムを実行可能な形式に展開するＲＡＭ（Random Access Memory）、および、上記プログラムおよび各種データを格納するメモリ等の記憶装置（記録媒体）を備えている。
【００７１】
そして、本発明の目的は、制御部１２０のプログラムメモリに固定的に担持されている場合に限らず、上記プログラムのプログラムコード（実行形式プログラム、中間コードプログラム、または、ソースプログラム）を記録した記録媒体を光ディスクドライブ１００に供給し、光ディスクドライブ１００が上記記録媒体に記録されている上記プログラムコードを読み出して実行することによっても、達成可能である。
【００７２】
上記記録媒体は、特定の構造または種類のものに限定されない。すなわちこの記録媒体は、たとえば、磁気テープやカセットテープ等のテープ系、フロッピー（登録商標）ディスク／ハードディスク等の磁気ディスクやＣＤ−ＲＯＭ／ＭＯ／ＭＤ／ＤＶＤ／ＣＤ−Ｒ等の光ディスクを含むディスク系、ＩＣカード（メモリカードを含む）／光カード等のカード系、あるいはマスクＲＯＭ／ＥＰＲＯＭ／ＥＥＰＲＯＭ／フラッシュＲＯＭ等の半導体メモリ系などとすることができる。
【００７３】
また、制御部１２０（または光ディスクドライブ１００）を通信ネットワークと接続可能に構成しても、本発明の目的を達成できる。この場合、上記のプログラムコードを、通信ネットワークを介して制御部１２０に供給する。この通信ネットワークは制御部１２０にプログラムコードを供給できるものであればよく、特定の種類または形態に限定されない。たとえばインターネット、イントラネット、エキストラネット、ＬＡＮ、ＩＳＤＮ、ＶＡＮ、ＣＡＴＶ通信網、仮想専用網（Virtual Private Network）、電話回線網、移動体通信網、衛星通信網等であればよい。
【００７４】
この通信ネットワークを構成する伝送媒体も、プログラムコードを伝送可能な任意の媒体であればよく、特定の構成または種類のものに限定されない。たとえばＩＥＥＥ１３９４、ＵＳＢ、電力線搬送、ケーブルＴＶ回線、電話線、ＡＤＳＬ（Asymmetric Digital Subscriber Line）回線等の有線でも、ＩｒＤＡやリモコンのような赤外線、Ｂｌｕｅｔｏｏｔｈ（登録商標）、８０２．１１無線、ＨＤＲ、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
【００７５】
（付記事項）
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【００７６】
本発明は、セクタを指定するセクタ指定情報を引数とするコマンドに応じて動作するディスクドライブ装置に利用することができる。特に、そのようなコマンドに応じて動作する光ディスクドライブ装置に取り分け好適に利用することができる。
【符号の説明】
【００７７】
１００        光ディスクドライブ（ディスクドライブ装置）
１１０        ＡＴＡ／ＡＴＡＰＩインターフェース（インターフェース）
１２０        制御部（制御手段）
１２１        デバイス制御部（デバイス制御手段）
１２２        コマンド変換部（変換手段）
１３０        ピックアップ（ヘッド）
１４０        メモリ
【図１】
2010211880.tif 000003
【図２】
2010211880.tif 000004
【図３】
2010211880.tif 000005
【図４】
2010211880.tif 000006
【図５】
2010211880.tif 000007
【図６】
2010211880.tif 000008
【図７】
2010211880.tif 000009