(57)【要約】【課題】複雑な読み出し処理や書き込み処理でも容易かつ高速に処理することができるようにする。【解決手段】外部ホスト３０１よりホストインタフェース２１１にリード指示が供給されると、MPU２０１は、リード動作に必要な指示の集合体として形成される、複数の処理を制御するリードコマンドを生成し、リードコマンドバッファ２１２に格納し、リードコマンド制御ブロック２１３、FIFO２１４、物理アドレス処理部２１５、論理アドレス処理部２１６、データ処理部２１７、リードデータバッファ２１８等の各部を制御し、そのリードコマンドを順次実行させる。本発明は、例えば、光ディスク記録再生装置に適用することができる。【選択図】図２
2010027114.tif 000002
【特許請求の範囲】
【請求項１】
外部より受け付けられた、記録媒体より情報を読み出すリード指示に基づいて、前記情報を読み出すためのリード動作に必要な指示の集合体として形成される、複数の処理を制御する制御コマンドであるリードコマンドを生成する生成手段と、
前記生成手段により生成された前記リードコマンドを解析し、前記リードコマンドに含まれる指示を抽出する解析手段と、
前記解析手段により解析されて抽出された前記指示の実行タイミングを調整する調整手段と、
前記調整手段により調整された所定のタイミングで前記指示を実行し、前記情報を前記記録媒体より読み出す実行手段と
を備える情報処理装置。
【請求項２】
前記生成手段により生成された前記リードコマンドを一時的に保持するリードコマンド保持手段をさらに備え、
前記解析手段は、前記リードコマンド保持手段により保持されている前記リードコマンドを１つずつ読み出して解析する
請求項１に記載の情報処理装置。
【請求項３】
前記調整手段は、前記解析手段により前記リードコマンドより抽出された各指示を一時的に保持するバッファを有する
請求項１に記載の情報処理装置。
【請求項４】
前記実行手段は、
前記記録媒体の物理アドレスに基づいてリード位置を制御する物理アドレス処理手段と、
前記情報に含まれる論理アドレスに基づいてリード位置を制御する論理アドレス処理手段と、
前記記録媒体より読み出された前記情報を処理するとともに、前記情報のバッファへの格納先を制御するデータ処理手段と
を備える請求項１に記載の情報処理装置。
【請求項５】
前記リードコマンドは、リード位置を指定する前記記録媒体の物理アドレス、リード位置を指定する前記情報に含まれる論理アドレス、前記記録媒体より読み出された前記情報の、バッファの格納先領域を示すバッファエリア、および、リードする範囲をセクタ数で指定するリード長を指定する
請求項１に記載の情報処理装置。
【請求項６】
前記リードコマンドは、前記記録媒体より読み出された前記情報を前記バッファに格納せずに破棄するか否かを、さらに指定する
請求項５に記載の情報処理装置。
【請求項７】
前記リードコマンドは、リードの終了位置をさらに指定する
請求項５に記載の情報処理装置。
【請求項８】
情報処理装置の情報処理方法において、
前記情報処理装置は、
生成手段と、
解析手段と、
調整手段と、
実行手段と
を備え、
前記生成手段は、外部より受け付けられた、記録媒体より情報を読み出すリード指示に基づいて、前記情報を読み出すためのリード動作に必要な指示の集合体として形成される、複数の処理を制御する制御コマンドであるリードコマンドを生成し、
前記解析手段は、生成された前記リードコマンドを解析し、前記リードコマンドに含まれる指示を抽出し、
前記調整手段は、解析されて抽出された前記指示の実行タイミングを調整し、
前記実行手段は、調整された所定のタイミングで前記指示を実行し、前記情報を前記記録媒体より読み出す
情報処理方法。
【請求項９】
コンピュータを、
外部より受け付けられた、記録媒体より情報を読み出すリード指示に基づいて、前記情報を読み出すためのリード動作に必要な指示の集合体として形成される、複数の処理を制御する制御コマンドであるリードコマンドを生成する生成手段と、
前記生成手段により生成された前記リードコマンドを解析し、前記リードコマンドに含まれる指示を抽出する解析手段と、
前記解析手段により解析されて抽出された前記指示の実行タイミングを調整する調整手段と、
前記調整手段により調整された所定のタイミングで前記指示を実行し、前記情報を前記記録媒体より読み出す実行手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、並びにプログラムに関し、特に、記録媒体へのアクセス処理を高効率化し、複雑な読み出し処理や書き込み処理でも容易かつ高速に処理することができるようにした情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
記録媒体であるディスク（例えば光ディスク）から情報を読み出すためには、ウォブルやプリピットとしてディスクに刻まれた物理アドレス、RF再生信号中に埋め込まれている論理アドレス、ディスクから読み出された情報であるリードデータの格納先バッファ領域を指定する情報等が必要になる。
【０００３】
従来、ディスクに対して情報の読み出しや書き込みを行うディスク記録再生装置は、それらの情報を個々のレジスタに予め設定し、１回のリード動作（ディスクから情報を読み出す動作）として、各値を用いた情報の読み出しに関する各処理を連続的に実行していた（例えば、特許文献１参照）。
【０００４】
特許文献１には、シーク動作ならびにリードライト動作を一括して指示する特定コマンドを発行することにより、回転待ち時間にもシークコマンド処理を可能にしたディスク装置が記載されている。
【０００５】
【特許文献１】特開平０２−２８５５５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の方法では、例えば、リードするセクタを飛ばしたり、リードしたデータを並び替えてバッファに書き込んだり等、複雑なリード動作を行うことが困難になる恐れがあった。例えば、特許文献１に記載のコマンドを適用しても、単純にシーク動作ならびにリードライト動作を決められた順に行うのみであり、例えば上述したような複雑なリード動作を実行することは困難であった。複雑なリード動作を行うためには、リード動作を一旦停止して、これらの各設定レジスタを、処理タイミングを注意深く確認しながら変更し、処理を再開することが必要であった。その結果、待機時間の増大等により、パフォーマンスが低下したり、タイミング的に高精度なファームウェア処理が必要になったりし、現実的には、処理の高速化を実現することが困難であった。
【０００７】
本発明はこのような問題を解決するためのものであり、記録媒体へのアクセス処理を高効率化し、複雑な読み出し処理や書き込み処理でも容易かつ高速に処理することができるようにするものである。
【課題を解決するための手段】
【０００８】
本発明の一側面は、外部より受け付けられた、記録媒体より情報を読み出すリード指示に基づいて、前記情報を読み出すためのリード動作に必要な指示の集合体として形成される、複数の処理を制御する制御コマンドであるリードコマンドを生成する生成手段と、前記生成手段により生成された前記リードコマンドを解析し、前記リードコマンドに含まれる指示を抽出する解析手段と、前記解析手段により解析されて抽出された前記指示の実行タイミングを調整する調整手段と、前記調整手段により調整された所定のタイミングで前記指示を実行し、前記情報を前記記録媒体より読み出す実行手段とを備える情報処理装置である。
【０００９】
前記生成手段により生成された前記リードコマンドを一時的に保持するリードコマンド保持手段をさらに備え、前記解析手段は、前記リードコマンド保持手段により保持されている前記リードコマンドを１つずつ読み出して解析することができる。
【００１０】
前記調整手段は、前記解析手段により前記リードコマンドより抽出された各指示を一時的に保持するバッファを有することができる。
【００１１】
前記実行手段は、前記記録媒体の物理アドレスに基づいてリード位置を制御する物理アドレス処理手段と、前記情報に含まれる論理アドレスに基づいてリード位置を制御する論理アドレス処理手段と、前記記録媒体より読み出された前記情報を処理するとともに、前記情報のバッファへの格納先を制御するデータ処理手段とを備えることができる。
【００１２】
前記リードコマンドは、リード位置を指定する前記記録媒体の物理アドレス、リード位置を指定する前記情報に含まれる論理アドレス、前記記録媒体より読み出された前記情報の、バッファの格納先領域を示すバッファエリア、および、リードする範囲をセクタ数で指定するリード長を指定することができる。
【００１３】
前記リードコマンドは、前記記録媒体より読み出された前記情報を前記バッファに格納せずに破棄するか否かを、さらに指定することができる。
【００１４】
前記リードコマンドは、リードの終了位置をさらに指定することができる。
【００１５】
本発明の一側面はまた、情報処理装置の情報処理方法において、前記情報処理装置は、生成手段と、解析手段と、調整手段と、実行手段とを備え、前記生成手段は、外部より受け付けられた、記録媒体より情報を読み出すリード指示に基づいて、前記情報を読み出すためのリード動作に必要な指示の集合体として形成される、複数の処理を制御する制御コマンドであるリードコマンドを生成し、前記解析手段は、生成された前記リードコマンドを解析し、前記リードコマンドに含まれる指示を抽出し、前記調整手段は、解析されて抽出された前記指示の実行タイミングを調整し、前記実行手段は、調整された所定のタイミングで前記指示を実行し、前記情報を前記記録媒体より読み出す情報処理方法である。
【００１６】
本発明の一側面はさらに、コンピュータを、外部より受け付けられた、記録媒体より情報を読み出すリード指示に基づいて、前記情報を読み出すためのリード動作に必要な指示の集合体として形成される、複数の処理を制御する制御コマンドであるリードコマンドを生成する生成手段と、前記生成手段により生成された前記リードコマンドを解析し、前記リードコマンドに含まれる指示を抽出する解析手段と、前記解析手段により解析されて抽出された前記指示の実行タイミングを調整する調整手段と、前記調整手段により調整された所定のタイミングで前記指示を実行し、前記情報を前記記録媒体より読み出す実行手段として機能させるためのプログラムである。
【００１７】
本発明の一側面においては、外部より受け付けられた、記録媒体より情報を読み出すリード指示に基づいて、前記情報を読み出すためのリード動作に必要な指示の集合体として形成される、複数の処理を制御する制御コマンドであるリードコマンドが生成され、生成された前記リードコマンドが解析され、前記リードコマンドに含まれる指示が抽出され、解析されて抽出された前記指示の実行タイミングが調整され、調整された所定のタイミングで前記指示が実行されて、前記情報が前記記録媒体より読み出される。
【発明の効果】
【００１８】
本発明によれば、記録媒体への情報の読み出しや書き込みを行うことができる。特に、記録媒体へのアクセス処理を高効率化し、複雑な読み出し処理や書き込み処理でも容易かつ高速に処理することができる。
【発明を実施するための最良の形態】
【００１９】
図１は、本発明を適用した光ディスクドライブの主な構成例を示すブロック図である。
【００２０】
図１に示される光ディスクドライブ１００は、所定の位置に装着された光ディスク１２１に対して、レーザ光を照射することにより情報の読み出しや書き込みを行う装置である。光ディスク１２１は、少なくとも読み出し可能な光ディスクである。もちろん、書き込み（追記または書き換え）可能な光ディスクであってもよい。光ディスク１２１の例として、例えば、CD-ROM（Compact Disc - Read Only Memory）、CD-R（Compact Disc - Recordable）、CD-RW（Compact Disc - Rewritable）がある。また、例えば、DVD-ROM（Digital Versatile Disc - Read Only Memory）、DVD±R（Digital Versatile Disc ± Recordable）、または、DVD±RW（Digital Versatile Disc ± Rewritable）がある。さらに、例えば、DVD-RAM（Digital Versatile Disc - Random Access Memory）、BD-ROM（Blu-ray Disc - Read Only Memory）、BD-R（Blu-ray Disc - Recordable）、または、BD-RE（Blu-ray Disc - Rewritable）がある。光ディスクドライブ１００が対応しているのであれば、これらの規格以外の光ディスク（記録媒体）であってももちろんよい。
【００２１】
光ディスクドライブ１００は、システムコントローラ１１１、スピンドルモータ駆動回路１１２、スピンドルモータ１１３、サーボ制御部１１４、データプロセッサ１１５、および光学ヘッド部１１６を有している。
【００２２】
システムコントローラ１１１は、光ディスクドライブ１００内の各部の動作を制御する制御部である。システムコントローラ１１１は、CPU（Central Processing Unit）１３１、ROM（Read Only Memory）１３２、およびRAM（Random Access Memory）１３３を有する。CPU１３１が、ROM１３２に記憶されているプログラム、またはRAM１３３にロードされたプログラムに従って各種の処理を実行することにより、システムコントローラ１１１として機能する。RAM１３３にはまた、CPU１３１が各種の処理を実行する上において必要なデータなども適宜記憶される。以下において説明するシステムコントローラ１１１の動作は、いずれも、CPU１３１が上述したようにROM１３２やRAM１３３等を用いて行う動作に相当する。
【００２３】
スピンドルモータ駆動回路１１２は、システムコントローラ１１１に制御されて、光ディスク１２１を回転させるためのスピンドルモータ１１３の回転駆動を制御する。サーボ制御部１１４は、システムコントローラ１１１に制御されて、光ピックアップ（光学ヘッド部１１６）の位置制御を行う。データプロセッサ１１５は、システムコントローラ１１１に制御されて、光ディスク１２１より読み出された情報や光ディスク１２１に書き込む情報を処理対象とする情報処理を行う。光学ヘッド部１１６は、システムコントローラ１１１に制御されて、光ディスク１２１に対してレーザ光を照射し、情報を読み出したり書き込んだりする。
【００２４】
例えば、光学ヘッド部１１６は、データプロセッサ１１５より取得した、デジタルデータを電気信号から光信号（レーザ光）に変換し、そのレーザ光の光出力レベルを、光ディスクに情報を書き込むときの発光パワーであるピークパワー（ピーク光出力レベル）、光ディスク表面を急速に冷却するときの発光パワーであるクールパワー（クール光出力レベル）、並びに光ディスクに記録されている情報を消去するときの発光パワーであるイレースパワー（イレース光出力レベル）のいずれかに切り替えながら光ディスク１２１に照射することにより、そのデジタルデータを光ディスク１２１に書き込む。また、光学ヘッド部１１６は、光ディスク１２１にレーザ光を、光ディスクに記録されている情報を読み出すときの発光パワーであるリードパワー（リード光出力レベル）で照射することにより、光ディスク１２１に記録されているデジタルデータを光信号として抽出し、それを電気信号に変換してデータプロセッサ１１５に供給する。
【００２５】
このような光ディスクドライブ１００において、光ディスク１２１に記録されている情報の読み出し（リード）や、光ディスク１２１への情報の書き込み（ライト）が行われるが、その制御は、システムコントローラ１１１が行う。このような読み出しや書き込みを含む光ディスク１２１へのアクセス処理は、システムコントローラ１１１が、光ディスクドライブ１００の外部（例えばホストコンピュータ等）からの要求に基づいて行う。
【００２６】
このとき、システムコントローラ１１１は、ウォブルやプリピット等のセクタ毎の物理アドレス、RF再生信号に含まれる論理アドレス、リードデータの格納先バッファ領域指定アドレス、リード長、リード終了情報等の各種指示情報の集合体であるリードコマンドを生成する。そして、システムコントローラ１１１は、そのリードコマンドを用いてリード動作に関する各種処理を制御する。
【００２７】
図２は、システムコントローラ１１１が有するリード動作に関する機能ブロックの構成例を模式的に示す図である。
【００２８】
図２に示されるように、システムコントローラ１１１は、MPU（Micro Processing Unit）２０１、ホストインタフェース（ホストI/F）２１１、リードコマンドバッファ（SDRAM（Read Command））２１２、リードコマンド制御ブロック（Read Command Control Block）２１３、FIFO（First-In First-Out）２１４、物理アドレス処理部（Wobble Addres Decode & Read Timing Control Block）２１５、論理アドレス処理部（RF Address Decode & Read Timing Control Block）２１６、データ処理部（Data Decode & Error Correction & EDC Check & Scramble Decode Block）２１７、およびリードデータバッファ（SDRAM（Read Data Buffer））２１８を有する。
【００２９】
MPU２０１は、ファームウェアを実行することにより、ホストインタフェース２１１乃至リードデータバッファ２１８の各部を制御し、リード動作に関する処理を実行させる。例えば、MPU２０１は、ホストインタフェース２１１を介して外部のホストコンピュータ（外部ホスト）３０１からのリード動作実行指示を取得すると、その指示に基づいて、要求された情報を読み出すためのリードコマンドを生成し、リードコマンドバッファ２１２に格納する。
【００３０】
このリードコマンドの詳細については後述するが、リードコマンドは、例えば以下のようなリード動作に必要な指示の集合体として形成される、複数の処理を制御する制御コマンドである。
【００３１】
（１）リードを開始する物理アドレスPID(例えばウォブルアドレス)。データ長は、例えば３バイトまたは４バイト。
（２）リードを開始する論理アドレスID(例えばRFアドレス)。データ長は、例えば３バイトまたは４バイト。
（３）リードデータを格納するリードデータバッファの領域BUFARA。データ長は、例えば２バイト。
（４）リードの最終セクタであることを示すフラグ情報LSTSEC。データ長は、例えば１ビット。
（５）リードデータをリードデータバッファに格納せずに破棄する（読み捨てる）ことを示すフラグ情報NOT STORE。データ長は、例えば１ビット。
【００３２】
なお、リードコマンドを構成する情報は、各種条件に応じて適宜変更可能であり、上述した情報以外の情報を含むようにしてもよいし、上述した情報の一部を省略するようにしてもよい。
【００３３】
例えば、PID(ウォブルアドレス/プリピットアドレス)は、DVD-RAM、BD-R、およびBD-REに対してのみ指定が必要である。例えば、CD-ROM、CD-R、CD-RE、DVD-ROM、DVD±R、DVD±RW、およびBD-ROMの各メディアのリードについては、ウォブル/プリピットアドレスに基づくPIDは使用されない。これらのメディアでは、ID(RFデータとしてマーク記録されたアドレス)が指定される。
【００３４】
リードコマンドバッファ２１２に格納されたリードコマンドは、MPU２０１に制御されたリードコマンド制御ブロック２１３により１つずつ読み出される。リードコマンド制御ブロック２１３は、MPU２０１に制御され、読み出したリードコマンド（RDCMD）２４０を解析し、そのリードコマンド２４０に含まれる各指示を抽出する（リードコマンドを実行する）。リードコマンド制御ブロック２１３は、PIDカウンタ（PID Counter）２３１、IDカウンタ（ID Counter）２３２、BUFARAカウンタ（BUFARA Counter）２３３、ノットストアレジスタ（NOT Store Register）２３４、およびLSTSECレジスタ（LSTSEC Register）２３５を有する。
【００３５】
PIDカウンタ２３１は、リードを行う、ウォブルアドレスやプリピットアドレスなどの物理アドレス（PID）を管理する。PIDカウンタ２３１は、リードコマンド２４０により初期値が与えられると、リードコマンドに含まれるリード長（Length）の分だけ、その値を「＋１」インクリメントしながらカウントする。PIDカウンタ２３１は、そのカウント値を、FIFO２１４に出力する。
【００３６】
IDカウンタ２３２は、PIDカウンタ２３１が物理アドレスを管理するのと同様に、リードを行う、RFアドレスなどの論理アドレス（ID）を管理する。IDカウンタ２３２は、リードコマンド２４０により初期値が与えられると、リードコマンドに含まれるリード長（Length）の分だけ、その値を「＋１」インクリメントしながらカウントし、そのカウント値をFIFO２１４に出力する。
【００３７】
なお、このPIDおよびIDに関し、DVDやBDの場合、単純に２進数でカウントアップされるが、CD については、CDフォーマット(いわゆる RED BOOK の内容)に従って、BCDのMIN:SEC:FRM 形式でカウントアップする。また、99:59:74の次に、A0:00:00とするか、00:00:00に戻るかを選択可能であり、リードインエリア（Lead-in Area）からプログラムエリア（Program Area）に移る際には、カウント値が00:00:00に戻るように設定する。
【００３８】
BUFARAカウンタ２３３は、PIDカウンタ２３１やIDカウンタ２３２の場合と同様に、リードデータを格納するリードデータバッファ２１８の領域（BUFARA）を管理する。BUFARAカウンタ２３３は、リードコマンド２４０により初期値が与えられると、リードコマンドに含まれるリード長（Length）の分だけ、その値を「＋１」インクリメントしながらカウントし、そのカウント値をFIFO２１４に出力する。
【００３９】
ノットストアレジスタ２３４は、リードコマンド２４０が、光ディスク１２１より読み出されたリードデータをリードデータバッファ２１８に格納せずに捨てる（以下、読み捨てるとも称する）ことを指示する場合、そのことを示すフラグ情報を一時的に格納するレジスタである。ノットストアレジスタ２３４は、この読み捨てを指示するフラグの値を制御指示としてFIFO２１４に出力する。
【００４０】
LSTSECレジスタ２３５は、リード対象範囲の最終セクタであることを示すフラグ情報を一時的に格納するレジスタである。LSTSECレジスタ２３５は、この最終フラグを示すフラグの値を制御指示としてFIFO２１４に出力する。なおこのLSTSEC情報は、リードコマンドの中で明示されていなくてもよい。その場合、例えば、最後のリードコマンドに含まれるリード長（Length）に基づいて、自動的に付加することができる。
【００４１】
FIFO２１４は、リードコマンド制御ブロック２１３より供給されるこれらのカウント値や制御指示を一時的に保持するバッファである。FIFO２１４は、PIDを保持するバッファ２１４Ａ、IDを保持するバッファ２１４Ｂ、およびリードデータの格納先アドレス等を保持するバッファ２１４Ｃを有している。FIFO２１４は、バッファ２１４Ａに保持されているPIDを物理アドレス処理部２１５に供給し、バッファ２１４Ｂに保持されているIDを論理アドレス処理部２１６に供給し、バッファ２１４Ｃに保持されている格納先アドレス等のデータをデータ処理部２１７に供給する。
【００４２】
FIFO２１４は、所定のタイミング、または、物理アドレス処理部２１５乃至データ処理部２１７からのACKを受信することによりこれらの制御指示を供給する。
【００４３】
駆動部２２１は、例えば図１のスピンドルモータ駆動回路１１２、サーボ制御部１１４、データプロセッサ１１５、および光学ヘッド部１１６を含む、リード動作に関して駆動する処理部であり、光ディスク１２１より読み出したアドレス情報やリードデータを処理し、物理アドレス処理部２１５乃至データ処理部２１７に供給する。
【００４４】
物理アドレス処理部２１５は、MPU２０１に制御され、FIFO２１４より取得した制御指示（PID）を復号し、その制御指示により指定されるタイミングでリードタイミングを制御する。DVD-RAM(CAPA) や BD-R/RE(ATIP) のリードでは、このブロックがリードタイミングを司る。
【００４５】
論理アドレス処理部２１６は、MPU２０１に制御され、ディスクに記録されたRF信号の中に埋め込まれているアドレスを読んでデコードし、リードタイミングを制御する。CD-Stamp(MSF)、DVD-Stamp/R/RE(PSN) や BD-Stamp(AUN) のリードでは、このブロックがリードタイミングを司る。
【００４６】
データ処理部２１７は、MPU２０１に制御され、FIFO２１４より取得した各種制御指示を復号し、その制御指示に基づいて、光ディスク１２１より読み出されたリードデータを復号したり、エラー訂正（ECC（Error Correction Code））やエラー検出（EDC（Error Detection Code））を行ったり、スクランブルを解除したりし、さらに処理後のリードデータを、リードデータバッファ２１８の、制御指示により指定されるアドレスに格納する。
【００４７】
リードデータバッファ２１８に格納されたリードデータは、ユーザデータ（UserData）として、セクタ情報（Sec.Info）や識別情報（ID）によってセクタ毎に管理され、必要に応じてMPU２０１により制御されたホストI/F２１１により読みだされる。ホストI/F２１１は、MPU２０１に制御され、リードデータバッファ２１８より読み出したリードデータを外部ホスト３０１に供給する。なお、リードコマンドバッファ２１２およびリードデータバッファ２１８は１つのSDRAMを共用するようにしてもよい。
【００４８】
物理アドレス処理部２１５乃至データ処理部２１７の各ブロックへは、その処理の進捗に応じて、リードコマンド制御ブロック２１３において生成されたPID、ID、およびBUFARAの値が伝達される。ただし、物理アドレス処理部２１５乃至データ処理部２１７の各ブロックは、処理の位相が異なるため、同じデータを伝達するにも、時間差を設ける必要がある。
【００４９】
一般に、ウォブル/プリピットアドレスアドレス処理を行う物理アドレス処理部２１５が最も早く、次いで論理アドレス処理部２１６、ディスク上の１ECCブロックのデータをトレースしてからの処理となるデータ処理部２１７のECC処理は、物理アドレス処理部２１５や論理アドレス処理部２１６よりも大きく遅れる。
【００５０】
この時間差を吸収するための１つの手段として、例えば、FIFO２１４が設けられる。このブロックは、リードコマンド制御ブロック２１３からのデータを受け取り、FIFO２１４に蓄積し、物理アドレス処理部２１５乃至データ処理部２１７の各ブロックからの処理の完了＋次の数値の受け取りが可能であることを示すACK信号を受け取ると、FIFO２１４の中から、１つ、新しい値を取り出して送出する。
【００５１】
ただし、ここで、メディアによっては、PID/IDなどが、セクタ単位ではなく、複数セクタで、１ブロックを構成するようなものもある。その場合には、メディアに応じて、このFIFO２１４で複数セクタをまとめて送出する処理を行う。この時間差を吸収するための他の構成例として、計算後の数値FIFOを複数持つのではなく、カウンタ自体を複数持ち、それらを、時間差を持たせてカウントさせることも可能である。
【００５２】
図３は、リードコマンドの例について説明するための模式図である。
【００５３】
リードの最小単位である１RUBを１６セクタとし、図３Ａに示されるように、PIDが９９乃至１６２（IDが１００乃至１６３）の、ディスクのトレース方向に連続する４RUB分のデータをリードし、そのリードデータをリード順に順次リードデータバッファ２１８に格納する場合について考える。
【００５４】
図３Ａに示されるように、このような４RUB分のリード動作が、最初の１RUBのリード動作、次の１RUBのリード動作、およびその次の２RUBのリード動作の連続する３つのリード動作により構成されるとする。これに対して、MPU２０１は、図３Ｂに示されるように、３つのリードコマンド（RDCMD）２４１乃至リードコマンド（RDCMD）２４３を生成する。
【００５５】
図３Ｂに示されるように、リードコマンド２４１乃至リードコマンド２４３は、制御内容を示す制御命令（CMD）、PID、ID、BUFARA（ARA）、およびリードするセクタ長を示すリード長（Length）により構成される。もちろんリードコマンドにこれ以外のパラメータが含まれるようにしてもよいし、図３Ｂに示されるパラメータの一部が省略されるようにしてもよい。
【００５６】
図３Ｂに示されるように、リードコマンド２４１乃至リードコマンド２４３は、リードコマンド２４１、リードコマンド２４２、リードコマンド２４３の順に実行される。なお、リードするセクタ長を示すLengthについては、最短で１セクタ刻みに設定可能であるが、例えば図４の例に示されるように、３２セクタのリード動作を、その３２セクタ全部をリードする１つのリードコマンドにより実現させても、それぞれ１０セクタ、１０セクタ、１０セクタ、２セクタリードする４つのリードコマンドにより実現させても結果的に等価である。PID/ID/BUFARA等のパラメータの値が互いに連続する限り、コマンドを分割することに意味はない（後述する読み飛ばしや、BUFARA内をランダムに使用する場合には、その動作に応じて、Lengthを分割し、他の設定値を変更する必要がある）。また、リードデータバッファ２１８は、リードデータの格納先アドレスが、リードデータバッファ２１８として予め定められた領域の上限に到達したら、格納先アドレスを領域の下限に戻す。
【００５７】
光ディスク１２１より読み出されたリードデータは、図３Ｃに示されるように、リードデータバッファ２１８の、リードコマンドにより指定されたアドレス（ARA）に格納される。リードデータバッファ２１８は、例えば、SDRAMバッファ上の一部の領域を割り当て、リードコマンドバッファ２１２と共有する形で設定することで、リードコマンド専用メモリ素子の設置を省略することができ、回路規模を小さくし、製造コストを低減させることができる。
【００５８】
また、図５に示されるように、リードコマンドを格納するリードコマンドバッファ２１２の領域下限(先頭)位置(RDCMDHDARA)、領域上限(最終)位置(RDCMDLSTARA)が設定され、その間の領域にファームウェアを実行するMPU２０１がリードコマンドを格納する。その領域にはさらに、リードコマンド制御ブロック２１３がリードコマンドを処理(実行)する位置を示す実行位置ポインタ(RDCMDARA)、並びに、有効リードコマンドが格納されている領域の上限位置を示すポインタ(VRDCMDARA)が設定される。ファームウェアを実行したMPU２０１は、リードコマンド（RDCMD）を格納すると、それとセットでポインタ(VRDCMDARA)を設定する。
【００５９】
なお、リードデータバッファ２１８においては、図５に示されるように、予め定められたリードデータバッファ領域設定の上限（RDCMDLSTARA）に到達したら、自動的に下限（RDCMDHDARA）に戻す処理を伴う。なお、このリードデータバッファ領域に、格納されているデータが有効とされる領域と無効とされる領域の境界（VRDCMDARA）を定めるようにしてもよい。この場合、下限（RDCMDHDARA）と有効領域の限界（VRDCMDARA）との間の領域が実行可能領域（RDCMDARA）となる。
【００６０】
図６は、リードコマンド制御ブロック２１３の処理の詳細を示した模式図である。
【００６１】
コントローラ４１０は、リードコマンド（RDCMD）２４０をリードコマンドバッファ２１２（SDRAM）から読み出すためのコントローラである。この中には、リードコマンド２４０を読み出すためのポインタカウンタを備えており、１つリードコマンド２４０を読み出す度に、１つインクリメントする。
【００６２】
残量カウンタ（Remain Length Counter）４１５は、処理すべきセクタ数の残量をカウントする。新たなリードコマンド２４０を読み出すと、残量カウンタ４１５は、そのリードコマンドの中のLengthフィールドの値をロードし、１セクタ分の処理を済ませるごとに１つずつデクリメントする。このカウンタの値が、リードコマンドの初期値と同じときが リード開始タイミング（START）であり、PIDカウンタ４２１、IDカウンタ４２２、およびBUFARAカウンタ４２３に、リードコマンドで指定された初期値をロードする。そして、このカウンタの値が０になるまでの間が、リード動作が継続するRUN状態であり、PIDカウンタ４２１、IDカウンタ４２２、およびBUFARAカウンタ４２３は、＋１のインクリメント処理を行う。セレクタ４１１乃至セレクタ４１３は、開始（START）状態のときに初期値、RUN状態のときにインクリメント値やデクリメント値をそれぞれ選択する。
【００６３】
これらの値は、FIFO２１４に送られ、各処理ブロックの処理位相に合わせて出力される。また、リードコマンド制御ブロック２１３は１セクタ毎の処理を行うが、メディアの種類によっては、１ECCブロック単位で処理を行うブロックも存在するため、この FIFO２１４からは、必要に応じて、セクタデータを１６セクタ分や３２セクタ分まとめて、各ブロックに伝達する。具体的には、光ディスク１２１がCDやDVDの場合、ATG/DEM/ECCの各処理ブロック（物理アドレス処理部２１５乃至データ処理部２１７）とも、セクタ単位の処理であるが、BDでは、ATG（物理アドレス処理部２１５）やDEM（論理アドレス処理部２１６）はブロック単位、ECC（データ処理部２１７）はセクタ単位の処理となるので、その変換をこのFIFO２１４において行う。
【００６４】
図７は、BD-RやBD-REにおけるリードコマンド制御ブロック２１３より後段のFIFO２１４の制御タイミングを示したものである。ATG/DEM処理ブロック（つまり、物理アドレス処理部２１５および論理アドレス処理部２１６）は、ディスクトレースと同じ位相で処理されるのに対し、ECC 処理ブロック（データ処理部２１７）は、１ECCブロック分のトレース処理が終了した後に、行われる様子を示している。また、ATG/DEMはブロック単位、ECCはセクタ単位で処理としている。
【００６５】
次に、ファームウェアを実行するMPU２０１によるリード制御処理の流れの例を、図８のフローチャートを参照して説明する。図８に示されるように、リード制御は、ホストI/F、データパス、リードコマンド（RDCMD）、およびサーボ制御・信号処理の４つのフェーズにより構成される。
【００６６】
電源投入後に、必要な初期設定と、ディスクの種別判定が済ませられると、ステップＳ１０１において、MPU２０１は、ホストI/Fフェーズとして、ホストインタフェース２１１を制御し、外部ホスト３０１よりリードコマンドを受信させる。
【００６７】
またMPU２０１は、ステップＳ１０２において、データパスフェーズで前回の動作が正しく終了し、各ブロックが動作不可能なBUSY状態でないことを確認する。BUSY状態のブロックが存在する場合、MPU２０１は、ステップＳ１０３においてそのブロックにリセットをかける。
【００６８】
ステップＳ１０４において、MPU２０１は、各処理ブロックに対し、リード処理に必要な初期設定を行う。
【００６９】
MPU２０１は、リードコマンド（RDCMD）フェーズとして、ステップＳ１０５において、リードコマンド（RDCMD）をリードコマンドバッファ２１２にセットし、ステップＳ１０６において、リードコマンド制御ブロック２１３を制御して、そのリードコマンドの実行を開始させる。MPU２０１は、ステップＳ１０７において、リードコマンドに従ったリード処理の準備が整い、各処理ブロックに対し、必要な情報提示が出来たことを確認する。リードコマンドの解析が終了していない場合、MPU２０１は、準備が整うまで待機する。
【００７０】
また、サーボ制御・信号処理フェーズとして、MPU２０１は、ステップＳ１０８においてスピンドルモータ駆動回路１１２やサーボ制御部１１４等のサーボ系に対し、ディスクの回転と、目標アドレスへのシークを指示し、ステップＳ１０９においてシークを開始させる。ステップＳ１１０において、MPU２０１は、読み出し位置の移動が終了したことを確認する。シークやディスクの回転制御が終了していない場合、MPU２０１は、準備が整うまで待機する。
【００７１】
リードコマンド（RDCMD）フェーズ、および、サーボ制御・信号処理フェーズの両方の準備が整うと、MPU２０１は、データパスフェーズに移り、ステップＳ１１１において、準備が整ったことを確認し、ステップＳ１１２において、タイミング調整処理を開始させる。目標のアドレスに到達すると、MPU２０１は、ステップＳ１１３において、リード処理を開始させ、RW_START割り込みを発生させる。また、１ECCブロックのデコードとECC処理が完了する毎にDTRDY割り込みが発生するので、MPU２０１は、ステップＳ１１４においてそのDTRDY割り込みの発生を確認し、誤り訂正が正しく出来ていれば、ホストI/Fフェーズに移り、ステップＳ１１５において、ホストインタフェース２１１を制御し、そのリードデータを外部ホスト３０１に転送させる。
【００７２】
ステップＳ１１６において、ホストインタフェース２１１が外部ホスト３０１から次のリードを指示するコマンドが受信すると、MPU２０１は、リードコマンドフェーズに移り、ステップＳ１１７においてリードコマンド（RDCMD）を追加（セット）する。このとき、MPU２０１は、データパスフェーズに移り、ステップＳ１１８において、リードコマンド追加によるリード長（Length）の更新を行う。
【００７３】
全てのリードコマンド処理が終了するか、何らかのエラーが発生すると、MPU２０１は、ステップＳ１１９において、RW_END割り込みを発生し、リード動作を停止する。ステップＳ１２０において、MPU２０１は、エラーが発生していないかどうかを確認し、エラーが発生していない場合は、さらにステップＳ１２１において、追加設定も含めて、指定したリードコマンドが全て処理されているかどうかを確認する。エラーが発生した、若しくは、全てのリードコマンドが処理されていない場合、つまり、正しく終了できていない場合、MPU２０１は、ステップＳ１２２において、どこから処理をやり直せばよいかを確認して、処理をステップＳ１０２に戻し、必要なところから処理をやり直す。
【００７４】
リードコマンドが全て処理されたと判定した場合、MPU２０１は、ホストI/Fフェーズに移り、ステップＳ１２３において、ホストインタフェース２１１を制御し、そのリードデータを外部ホスト３０１に転送させる。そして、MPU２０１は、ステップＳ１２４において、ホストインタフェース２１１に、外部ホスト３０１から次のリードを指示するコマンドを受信させる。
【００７５】
図９は、リードコマンド処理の動作状態遷移を示したものである。リードコマンドは、コマンドを積載して、有効ポインタおよび実行（開始）ポインタを設定した上で、RDCMDSTTレジスタを読み出すことで、実行を開始する。そして、ディスクドライブユニット内で何らかのエラーが発生して動作を停止するか、実行ポインタ＝有効ポインタとなり、全ての RDCMD の実行を終えたところで、終了する。
【００７６】
以上のようなリードコマンドを用いたリード制御により、MPU２０１は、記録媒体へのアクセス処理を高効率化し、複雑な読み出し処理や書き込み処理でも容易かつ高速に処理することができる。
【００７７】
以下に、具体例について説明する。
【００７８】
複数のリードコマンドを積載して実行させる中で、スタートアドレス（Start Address）とリード長（セクタ長）（Length）の指定によっては、リード対象となるアドレス、すなわち、ターゲットアドレス（Target Address）が非連続なアドレス列になることもある。例えば、１つ目のリードコマンド（RDCMD）が、スタートアドレス＝Ｌ番地、かつ、リード長＝Ｍセクタであって、２つ目のリードコマンドがスタートアドレス＝Ｎ番地(Ｌ＋Ｍ＜Ｎ)、リード長＝Ｍセクタであるとしたら、Ｌ番地からＬ＋Ｍ番地までリードし、Ｌ＋Ｍ＋１番地からＮ−１番地までを読み飛ばし、Ｎ番地からＮ＋Ｍ番地までを再びリードさせるような動作を意味する。
【００７９】
このような読み飛ばしは、主に、DVD-RAM、BD-R、BD-REの欠陥交替処理（difect回避）で使用する。DVD-RAM、BD-R、またはBD-REの場合、ECCブロック単位で交替処理が行われる。この場合、PIDやIDについては、ECCブロック単位で、非連続な値が指定される。DVD-RAMの場合、Primary DFL登録がある場合、セクタ単位でのスリッピング（Slipping）による交替処理が行われる。このときは、セクタ単位で、非連続な値を指定する。
【００８０】
図１０は、その例を示したものである。この例では、図１０Ａに示されるように、PID＝１２３番地が欠陥（Defect）としてPDL(Primary Defect List)に登録されており、MPU２０１は、このセクタを読み飛ばすようにリード制御する必要がある。そこで、MPU２０１は、図１０Ｂに示されるように、３つのリードコマンド（リードコマンド２４１乃至リードコマンド２４３）を積載して実行させる。１つ目のリードコマンド２４１によって、MPU２０１は、PID＝９９、ID＝１００、BUFARA＝０、Length＝１６として、１つ目のECCブロックをリードさせる。
【００８１】
２つ目のリードコマンド２４２により、MPU２０１は、PID＝１１５、ID＝１１６、BUFARA＝１６、Length＝８として、２つ目のECCブロックのPID＝１２２番地(Defectセクタの手前)までをリードさせる。３つ目のリードコマンド２４３により、MPU２０１は、PID＝１２４、ID＝１２４、BUFARA＝２４、Length＝８として、２つ目のECCブロックのPID＝１２４番地（欠陥（Defect）セクタの直後）からリードさせる。以上のようにリードされた各リードデータを、MPU２０１は、図１０Ｃに示されるように、リードデータバッファ２１８の連続する領域に格納させることができる。つまり、MPU２０１は、欠陥（Defect）セクタのみを読み飛ばす（リードしないようにする）ことができる。
【００８２】
なお、この例の、１つ目のリードコマンドと２つ目のリードコマンドは、Length＝１６＋８＝２４として、１つのリードコマンドにまとめるようにしてもよい。その場合も結果は、上述した２つのコマンドにより実現する場合と同様である。
【００８３】
仮に上述したようなリードコマンドを用いずに、このような読み飛ばし処理を行う場合、ファームウェアを実行するMPUは、個々の領域に対するスタートアドレス（Start Address）とリード長（Length）を１回ずつ指定し、複数回に分割(停止＆再開)してリードする必要がある。そのため、それらの複数回のリードの間には、トラックジャンプや、ディスクの回転待ちも必要となるため、不要な待機時間等が増大し、パフォーマンスが低減する恐れがある。上述したように、リードコマンドを用いて読み飛ばしを行うことにより、少量のセクタの読み飛ばしであれば、トラックジャンプや、ディスクの回転待ちを必要とせずにリード動作を継続させることができるので、大幅なパフォーマンスの向上を期待することができる。なお、一般的に、読み飛ばすセクタの数が多く、かつ、それぞれの読み飛ばす範囲が小さい程（すなわち、不連続なより多数のセクタを読み飛ばすとき程）、リードコマンドを用いる場合と用いない場合とで、そのパフォーマンスの差は大きくなる。
【００８４】
また、例えば、図１１に示される例のように、BUFARAの値を非連続な値にすることも可能である。図１１の例においては、MPU２０１が、光ディスク１２１から順番に読み出したリードデータを、リードデータバッファ２１８のランダムな領域に格納させる様子を示している。リードコマンドにおいてBUFARAの設定をランダムに指定することにより、このような動作を実現することができる。すなわち、MPU２０１は、上述したリードコマンドを用いることにより、BUFARAを任意に指定することができるので、リードしたデータをセクタ単位で、リードデータバッファ２１８のどの領域に格納するかを指定することが可能である。これにより、MPU２０１は、リードデータバッファ２１８を単純なリングバッファとして使用するだけではなく、パフォーマンスの向上を狙って、高度なリードキャッシュ制御を行うように使用することができる。
【００８５】
もし、仮に上述したリードコマンドを用いずに、光ディスク１２１より読み出した複数のリードデータをリードデータバッファ２１８の非連続なバッファ領域に格納させる場合、MPU２０１は、リードデータバッファ２１８の格納先の設定をその都度、変更しながら、リード処理を複数回に分割して実行する必要があり、読み飛ばしの場合と同様に、パフォーマンスが低減する恐れがあった。上述したリードコマンドを用いることにより、MPU２０１は、リードデータバッファ２１８の格納先を変えながらリードする際にも、リード動作を分割(停止＆再開)させる必要がなく、大幅なパフォーマンスの向上を期待することができる。
【００８６】
ところで、「Not Store bit」は、リードしたデータをバッファ領域には格納せず、そのまま読み捨てることを指示するフラグ情報であるが、これは例えば、以下のような場合に使用される。
【００８７】
例えば、光ディスク１２１のライト済み領域においてデータが正しく書き込まれたかどうかを確認するために、ECC/EDCのOK/NGを判定するだけのVerify動作をさせるにあたっては、リードデータそのものは不要であるため、MPU２０１は、SDRAM上にはリードデータバッファ領域を確保せず、読み捨てながら、ECC/EDCのチェックを行う。このようなとき、MPU２０１は、リードを行う全領域に対し、「Not Store bit」を設定する。
【００８８】
また、例えば、読み出したリードデータの一部を更新して書き戻すリードモディファイライト処理（Read Modify Write）を行う場合、MPU２０１は、まず、外部ホスト３０１から転送された１ECCブロック未満のデータをライトデータバッファ（Write Buffer）上の各セクタ領域に格納する。そして、MPU２０１は、光ディスク１２１からデータをリードさせ、ECCブロック単位のリードデータのうち、外部ホスト３０１から転送がなかったセクタだけを選択的にライトデータバッファに格納させることによって、ライトデータバッファ上に、ECCブロックのライトデータ（書き込み用データ）のイメージ（Write Data Image）を生成する。このとき、MPU２０１は、既に外部ホスト３０１から取得されたライトデータが格納されたライトデータバッファのセクタ領域について「Not-Store Bit」（ノットストアフラグ）を立てて、リード処理を行う。
【００８９】
図１２は、このようなリードモディファイライト処理（Read Modify Write）の例を示したものである。図１２Ａに示されるように、ここでは、２ECCブロックにまたがる１２セクタのデータ（データ５０１およびデータ５０２）の一部（データ５０３）を書き換える様子の例を示している。
【００９０】
MPU２０１は、まず、外部ホスト３０１からライトデータを取得させ、これを、図１２Ｃに示されるように、ライトデータバッファ上の１０番地乃至２１番地の領域に格納させる。次に、MPU２０１は、図１２Ｂに示されるようにリードコマンド５１１乃至リードコマンド５１４を生成する。リードコマンド５１１およびリードコマンド５１２は、光ディスク１２１のPID＝２００かつID＝１００の位置から２ECC分（１６セクタ＋１６セクタ）のデータをリードし、そのリードデータを、ライトデータバッファの０番地乃至３１番地の領域に格納させる。
【００９１】
このとき、リードコマンド５１２は、先に外部ホスト３０１から供給され、ライトデータバッファに格納されているライトデータ（上述した１０番地乃至２１番地のデータ）を上書きしないように、この部分の領域をマスクするマスク処理（MSK）を実行させる。つまり、リードコマンド５１２の制御指示部分には、ノットストア（読み捨て）を指示するMSK(Not-Store)が設定される。同様に、ライトデータバッファに格納されているライトデータ（上述した１０番地乃至２１番地のデータ）を消去しないように、リードコマンド５１３においても、制御指示としてMSK(Not-Store)が設定される。
【００９２】
リードコマンド５１４の場合、リードデータは、BUFARA２２番地以降に格納されるので、つまり、リードコマンド５１４の指示により、ライトデータ（上述した１０番地乃至２１番地のデータ）には上書きされないので、MSKは設定されない。
【００９３】
なお、リードコマンド５１２およびリードコマンド５１３は、１つのリードコマンドにまとめるようにしてもよい（同様の結果を得ることができる）。
【００９４】
このような修正処理の流れの例を図１３のフローチャートを参照して説明する。修正処理（リードモディファイライト処理）が開始されると、MPU２０１は、ステップＳ２０１において、外部ホストよりライトコマンドを受信する。ステップＳ２０２において、MPU２０１は、ライトコマンドを解析し、ステップＳ２０３において外部ホスト３０１より書き込みデータ（ライトデータ）を受信し、書き込み用バッファであるライトデータバッファの所定の領域ににそのライトデータを格納する。
【００９５】
MPU２０１は、ステップＳ２０４において、書き込み対象セクタがECCブロック区切りと一致するか否かを判定し、一致しないと判定した場合、処理をステップＳ２０５に進める。ステップＳ２０５において、MPU２０１は、上述したようにMASK設定を伴うリードコマンドを設定し、ステップＳ２０６において、書き込み対象セクタを含むECCブロックを読み出させ、ライトデータバッファの所定の位置に格納し、修正データ（Write Data Image）を作成させる。修正データを作成させると、MPU２０１は、その修正データを光ディスク１２１に書き込み修正処理を終了する。
【００９６】
また、ステップＳ２０４において、書き込み対象セクタがECCブロック区切りと一致すると判定した場合、MPU２０１は、ステップＳ２０５乃至ステップＳ２０７の各処理を省略し、修正処理を終了し、通常の書き込み処理を行う。
【００９７】
以上のように、リードコマンドを用いてリードモディファイライト処理を実行することにより、MPU２０１は、効率よくデータを修正して再書き込みすることができる。つまり、MPU２０１は、リード動作を分割(停止＆再開)させることなく、リードモディファイライト処理を実行することができ、大幅なパフォーマンスの向上を期待することができる。
【００９８】
以上のように、リードコマンドを用いることにより、MPU２０１は、複雑な読み出し処理や書き込み処理でも容易かつ高速に処理させることができる。
【００９９】
図１４は、外部ホスト３０１からのデータ転送のタイミング、リードコマンド生成のタイミング、およびリードコマンド実行のタイミングの関係を示したものである。基本的には、ホストインタフェース２１１が、外部ホスト３０１からリード指示またはそれに順ずる指示のコマンドを受け取ったら、MPU２０１は、そのコマンドに対応したリードコマンドを生成し、リードコマンドバッファ２１２に格納（積載）し、あるいは追加積載して実行させる。ECC処理まで完了すると、DTRDY 割り込みが出る。MPU２０１は、こうしてリード出来た分を、順次外部ホスト３０１に転送させる。実際には、ライトコマンドにより指定されるよりも先に、リードデータバッファ２１８の容量に余裕がある範囲で、光ディスク１２１よりデータを先読みさせることが一般的である。
【０１００】
もしも、外部ホスト３０１からホストインタフェース２１１へのコマンドの供給が間に合わず、大きな待機時間が生じると、リードコマンドの追加が間に合わず、一旦、リード処理を終了しなければならない場合もありえる(RW_END割り込みが出て終了してしまう)。その場合、MPU２０１は、実行されなかった続きの分を処理するために、従来のリード処理と同様に、新たなリードコマンドを設定し実行させればよい。
【０１０１】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、例えば、図１５に示されるようなパーソナルコンピュータとして構成されるようにしてもよい。
【０１０２】
図１５において、パーソナルコンピュータ７００のCPU７０１は、ROM７０２に記憶されているプログラム、または記憶部７１３からRAM７０３にロードされたプログラムに従って各種の処理を実行する。RAM７０３にはまた、CPU７０１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０１０３】
CPU７０１、ROM７０２、およびRAM７０３は、バス７０４を介して相互に接続されている。このバス７０４にはまた、入出力インタフェース７１０も接続されている。
【０１０４】
入出力インタフェース７１０には、キーボード、マウスなどよりなる入力部７１１、CRT（Cathode Ray Tube）やLCD（Liquid Crystal Display）などよりなるディスプレイ、並びにスピーカなどよりなる出力部７１２、ハードディスクなどより構成される記憶部７１３、モデムなどより構成される通信部７１４が接続されている。通信部７１４は、インターネットを含むネットワークを介しての通信処理を行う。
【０１０５】
入出力インタフェース７１０にはまた、必要に応じてドライブ７１５が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア７２１が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部７１３にインストールされる。
【０１０６】
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
【０１０７】
この記録媒体は、例えば、図１５に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM（Compact Disc - Read Only Memory）,DVD（Digital Versatile Disc）を含む）、光磁気ディスク（MD（Mini Disc）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア７２１により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM７０２や、記憶部７１３に含まれるハードディスクなどで構成される。
【０１０８】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１０９】
なお、以上において、１つの装置として説明した構成を分割し、複数の装置として構成するようにしてもよい。逆に、以上において複数の装置として説明した構成をまとめて１つの装置として構成されるようにしてもよい。また、各装置の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置の構成の一部を他の装置の構成に含めるようにしてもよい。つまり、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１１０】
【図１】本発明を適用した光ディスクドライブの構成例を示すブロック図である。
【図２】システムコントローラのリード処理に関する機能の構成例を示すブロック図である。
【図３】リードコマンドの構成例を示す模式図である。
【図４】Lengthの扱いを説明する模式図である。
【図５】リードコマンドバッファの構成例を示す模式図である。
【図６】リードコマンド制御ブロックの詳細な構成例を示す模式図である。
【図７】リードコマンド制御ブロック制御タイミングの例を示す模式図である。
【図８】制御処理の流れの例を説明するフローチャートである。
【図９】リードコマンド処理の状態遷移図である。
【図１０】スリッピングの例を説明する模式図である。
【図１１】バッファ領域のランダム指定の例を説明する模式図である。
【図１２】リードモディファイライト処理の例を説明する模式図である。
【図１３】修正処理の流れの例を説明するフローチャートである。
【図１４】各処理のタイミングの関係を説明する模式図である。
【図１５】本発明を適用したパーソナルコンピュータの構成例を示すブロック図である。
【符号の説明】
【０１１１】
１００  光ディスクドライブ，  １１１  システムコントローラ，  １１２  スピンドルモータ駆動回路，  １１３  スピンドルモータ，  １１４  サーボ制御部，  １１５  データプロセッサ，  １１６  光学ヘッド部，  １２１  光ディスク，  １３１  CPU，  １３２  ROM，  １３３  RAM
【図１】
2010027114.tif 000003
【図２】
2010027114.tif 000004
【図３】
2010027114.tif 000005
【図４】
2010027114.tif 000006
【図５】
2010027114.tif 000007
【図６】
2010027114.tif 000008
【図７】
2010027114.tif 000009
【図８】
2010027114.tif 000010
【図９】
2010027114.tif 000011
【図１０】
2010027114.tif 000012
【図１１】
2010027114.tif 000013
【図１２】
2010027114.tif 000014
【図１３】
2010027114.tif 000015
【図１４】
2010027114.tif 000016
【図１５】
2010027114.tif 000017