(57)【要約】【課題】正確なバッファデータ残量を検出することによって、バッファアンダーラン誤検出のないデータ処理装置及びそのバッファデータの残量検出方法を提供すること。【解決手段】コンピュータ装置から転送されるデータに基づいて、光ディスクに記録するためのデータを生成して出力するデータ処理装置において、バッファ１０に所定エリア単位で格納されているデータを処理する制御コマンドを複数格納するコマンド記憶部２０を備え、コマンド記憶部２０に格納されている制御コマンドの繰り返し数フィールドの値の総和と、コンピュータ装置から転送されているが制御コマンドが生成されていないデータの数と、コマンド記憶部２０に格納されている制御コマンドのうち処理中の制御コマンドの残りの繰り返し回数とに基づいて、出力可能なデータ残量を検出する。【選択図】図１
2008146697.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ装置から転送されるデータに基づいて、記録媒体に記録するためのデータを生成して出力するデータ処理装置において、
コンピュータ装置から転送されるデータを所定エリア単位で順次格納する第１のバッファと、
前記記録媒体への記録処理内容に応じて生成されるデータを所定エリア単位で順次格納する第２のバッファと、
前記各バッファに所定エリア単位で格納されているデータを処理するために用いられ、繰り返し処理すべきデータのエリア数を示す繰り返し数フィールドを有する制御コマンドを複数格納するコマンド記憶部と、
前記コマンド記憶部に格納した制御コマンドに基づいて前記各バッファのデータに所定の処理を施して出力するデータ制御部と、を備え、
前記コマンド記憶部に格納されている制御コマンドの繰り返し数フィールドの値の総和と、前記コンピュータ装置から転送されているが制御コマンドが生成されていないデータの数と、前記コマンド記憶部に格納されている制御コマンドのうち処理中である制御コマンドの残りの繰り返し回数とに基づいて、前記第１のバッファ及び前記第２のバッファのデータ残量を検出する
ことを特徴とするデータ処理装置。
【請求項２】
前記コマンド記憶部から取り出して転送された制御コマンドの繰り返し数フィールドの値からこの制御コマンドによって処理したデータのエリア数を減算した値を格納する実行カウンタレジスタを備え、
前記実行カウンタレジスタに基づいて、前記コマンド記憶部に格納されている制御コマンドのうち処理中の制御コマンドの残りの繰り返し回数を検出する
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記コンピュータ装置から転送されるデータを所定のパケットサイズで書き込みを行うときに、前記コンピュータ装置から転送されたデータのうちパケットサイズに対する端数の値を格納する転送データカウンタレジスタを備え、
前記転送データカウンタレジスタに基づいて、前記コンピュータ装置から転送されているが制御コマンドが生成されていないデータ数を検出する
ことを特徴とする請求項１又は請求項２に記載のデータ処理装置。
【請求項４】
コンピュータ装置から転送されるデータに基づいて、記録媒体に記録するためのデータを生成して出力するデータ処理装置における出力可能なデータ残量を検出するデータ残量検出方法において、
コンピュータ装置から転送されるデータを所定エリア単位で順次第１のバッファに記憶するステップと、
前記記録媒体への記録処理内容に応じて生成されるデータを所定エリア単位で順次第２のバッファに格納するステップと、
前記各バッファに所定エリア単位で格納されているデータを処理するために用いられ、繰り返し処理すべきデータのエリア数を示す繰り返し数フィールドを有する制御コマンドを、前記コンピュータ装置から転送されるデータに応じて順次生成してコマンド記憶部に格納するステップと、
前記コマンド記憶部に格納した制御コマンドに基づいて前記各バッファのデータに所定の処理を施して出力するステップと、
前記コマンド記憶部に格納されている制御コマンドの繰り返し数フィールドの値の総和と、前記コンピュータ装置から転送されているが制御コマンドが生成されていないデータの数と、前記コマンド記憶部に格納されている制御コマンドのうち処理中の制御コマンドの残りの繰り返し回数とに基づいて、前記第１のバッファ及び前記第２のバッファのデータ残量を検出するステップと、
を有するデータ残量検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファのデータ残量検出を行うデータ処理装置及びバッファのデータ残量検出方法に関するものである。
【背景技術】
【０００２】
従来から、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disk）などの光ディスクに、データ発生源であるコンピュータ装置から転送されるデータを書き込む光ディスク記録装置が知られている。
【０００３】
このような光ディスク記録装置は、外部のコンピュータ装置（以下、「ホスト」とする。）から転送されるデータの速度と光ディスクにデータを記録する速度との相違を調整するために、その内部に、コンピュータ装置から転送されるデータを一時的に格納する記憶用バッファを設けている。
【０００４】
ところで、光ディスク記録装置において、コンピュータ装置から転送されるデータの速度が遅くなったような場合には、記憶用バッファに格納されるデータの残量が不足するバッファアンダーランという現象が生じる場合がある。
【０００５】
光ディスク記録装置は、このような現象が生じると光ディスクへの書込を中断して待機し、記憶用バッファにデータが所定量以上格納されたときに中断を解除して再度書き込みを行う、いわゆるバーンプルーフ機能が動作する（例えば、特許文献１参照。）が、このパーンプルーフ機能が動作することによって、データ記録装置のパフォーマンスが低下していた。
【０００６】
ここで、従来の光ディスク記録装置について図面を参照して具体的に説明する。
【０００７】
光ディスクに記録するデータは、ホストから転送される第１データと、ホストからは転送されず光ディスク記録装置内のＬＳＩ（Large Scale Integration）で構成されるデータ処理装置の機能により生成する第２データの２種類に分類される。これらのデータを効率よく管理するため、従来のデータ処理装置では内部のＳＤＲＡＭ（Synchronous DRAM）を所定エリア単位に分割し、各エリアにはデータ処理コマンド、データ処理後に用いられるポインタ制御コマンド、及び一定量のデータなどを収める形式を取る（図７参照）。ここで、「一定量」とは、ＣＤでは２３５２ＢｙｔｅのデータとＳｕｂｃｏｄｅのデータ、ＤＶＤではＩＤからＥＤＣまでの２０６４Ｂｙｔｅのデータである。
【０００８】
そして、データ処理装置においては、ホストから転送されるデータを格納する連続したエリアを第１のバッファであるメインリングバッファ(以下、「ＷＭＲＢ」とする。)とし、それ以外のデータを格納する連続したエリアを第２のバッファであるサブリングバッファ（以下、「ＷＳＲＢ」とする。）、リニアバッファ（以下、「ＷＬＢ」とする。）とするバッファの構成が採用される。ＷＳＲＢ、ＷＬＢには光ディスクへの書き込み前にデータ処理装置におけるファームウェア（以下、「Ｆ／Ｗ」とする。）で必要なデータを準備することになる。ここで、ＷＭＲＢ、ＷＳＲＢはリングバッファ構造、ＷＬＢはリニアバッファ構造が採用される。
【０００９】
ホストから転送されるデータを書き込む位置を示すポインタをＰＨＳＴ、コマンドに従って実際にデータ処理を行うデータの書き込み位置を示すポインタをＰＦＭＴ、ＰＦＭＴ２とすると、これらのポインタとバッファ構成との関係は図８のようになる。なお、ＰＦＭＴは常にＷＭＲＢ上のデータ処理を行っている位置を示し、ＰＦＭＴ２はＷＳＲＢ、ＷＬＢ上のデータ処理を行っている位置を示す。
【００１０】
ＷＭＲＢ上のデータの処理が行われているとき、ＰＦＭＴでデータ処理位置が判明するため、ＰＦＭＴ２は無効となる。ＷＳＲＢ、ＷＬＢ上のデータが処理されているとき、ＰＦＭＴは次にＷＭＲＢ上のデータ処理が行われる位置を示し、ＰＦＭＴ２は実際にデータ処理が行われている位置を示すことになる。
【００１１】
従来のデータ処理装置では、このようなバッファ構成において既にデータの準備が終わっているがまだ処理が行われていないエリア数（以下、「データ残量」とする。）を計算し、データ残量が規定値より少なく、バッファアンダーランとなったとき、データ処理装置のハードウェア（以下、「Ｈ／Ｗ」とする。）は割り込みのアサートや必要な処理を行い、またＦ／Ｗも割り込みを受けて各種アンダーラン対策処理などを行うようなバッファアンダーラン対策を行っていた。
【００１２】
ここで、図９に示す例では、ＰＨＳＴはエリア６、ＰＦＭＴはエリア１を指しており、この状態でＰＨＳＴが動かないとしたときに、ＰＦＭＴはエリア１〜エリア３を処理した後、ＷＬＢにジャンプしてエリア８〜エリア１２まで処理を行ってから再びＷＭＲＢに戻りエリア４、エリア５の処理を行うことになる。このことからこの時の本来のデータ残量は、リングバッファ構造を考慮した上でポインタＰＨＳＴとＰＦＭＴとの差分値（以降、ＰＨＳＴ−ＰＦＭＴ）にＷＬＢのエリア数を足したものになる。
【特許文献１】特開２００３−７７１３１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかし、上記従来のデータ処理装置では、各エリアにポインタ制御コマンドが格納されるため、Ｈ／ＷでＰＦＭＴがいつジャンプを行うか判定するにはＰＨＳＴとＰＦＭＴ間の全てのエリアのポインタ制御コマンドを事前に読まなければならなかった。このような制御コマンドの先読み処理はパフォーマンスを悪化させて処理のリアルタイム性を損なうため、バッファアンダーランのようにリアルタイム制御が必要なケースでは致命的となる。そこで、従来のデータ処理装置では第１のバッファであるＷＭＲＢのデータ残量のみを使用、つまり第２のバッファであるＷＳＲＢ、ＷＬＢのデータ残量は考慮せず単にＰＨＳＴ−ＰＦＭＴの値のみを用いてバッファアンダーランを判定していた。
【００１４】
この判定方法を用いた場合、例えば、上記図９に示す例では、本来のデータ残量は１０であるのに対して、ＰＨＳＴ−ＰＦＭＴが５であることからデータ残量を５としてバッファアンダーラン判定を行ってしまう。従って、例えば、バッファアンダーラン判定の閾値を７とした場合、本来はバッファアンダーランではないにもかかわらずバッファアンダーランと検出されることになる。
【００１５】
このようなバッファアンダーラン誤検出が生じると、Ｈ／Ｗ及びＦ／Ｗが不要なバッファアンダーラン対応処理を行ってしまい、パフォーマンスが低下する。
【００１６】
また、このような問題を避けるためにＷＳＲＢ、ＷＬＢなどの第２のバッファも考慮したデータ残量を計算しようとすると、ＰＨＳＴからＰＦＭＴまでの全てのエリアのポインタ制御コマンドを読む必要が生じる。この動作はリアルタイムで行えないため、リアルタイム性を求めるシステムでは実現不可能である。また、リアルタイム性を求めないシステムでもＳＤＲＡＭとのデータ送受信の増加を招いてしまう。
【００１７】
そこで、本発明は、正確なバッファのデータ残量を検出することによって、バッファアンダーラン誤検出のないデータ処理装置及びデータの残量検出方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記目的を達成するために、請求項１に記載の発明は、コンピュータ装置から転送されるデータに基づいて、記録媒体に記録するためのデータを生成して出力するデータ処理装置において、コンピュータ装置から転送されるデータを所定エリア単位で順次格納する第１のバッファと、前記記録媒体への記録処理内容に応じて生成されるデータを所定エリア単位で順次格納する第２のバッファと、前記各バッファに所定エリア単位で格納されているデータを処理するために用いられ、繰り返し処理すべきデータのエリア数を示す繰り返し数フィールドを有する制御コマンドを複数格納するコマンド記憶部と、前記コマンド記憶部に格納した制御コマンドに基づいて前記各バッファのデータに所定の処理を施して出力するデータ制御部とを備え、前記コマンド記憶部に格納されている制御コマンドの繰り返し数フィールドの値の総和と、前記コンピュータ装置から転送されているが制御コマンドが生成されていないデータの数と、前記コマンド記憶部に格納されている制御コマンドのうち処理中である制御コマンドの残りの繰り返し回数とに基づいて、前記第１のバッファ及び前記第２のバッファのデータ残量を検出することを特徴とする。
【００１９】
また、請求項２に記載の発明は、請求項１に記載の発明において、前記コマンド記憶部から取り出して転送された制御コマンドの繰り返し数フィールドの値からこの制御コマンドによって処理したデータのエリア数を減算した値を格納する実行カウンタレジスタを備え、前記実行カウンタレジスタに基づいて、前記コマンド記憶部に格納されている制御コマンドのうち処理中の制御コマンドの残りの繰り返し回数を検出することを特徴とする。
【００２０】
また、請求項３に記載の発明は、請求項１又は請求項２に記載の発明において、前記コンピュータ装置から転送されるデータを所定のパケットサイズで書き込みを行うときに、前記コンピュータ装置から転送されたデータのうちパケットサイズに対する端数の値を格納する転送データカウンタレジスタを備え、前記転送データカウンタレジスタに基づいて、前記コンピュータ装置から転送されているが制御コマンドが生成されていないデータ数を検出することを特徴とする。
【００２１】
また、請求項４に記載の発明は、コンピュータ装置から転送されるデータに基づいて、記録媒体に記録するためのデータを生成して出力するデータ処理装置における出力可能なデータ残量を検出するデータ残量検出方法において、コンピュータ装置から転送されるデータを所定エリア単位で順次第１のバッファに格納するステップと、前記記録媒体への記録処理内容に応じて生成されるデータを所定エリア単位で順次第２のバッファに格納するステップと、前記各バッファに所定エリア単位で格納されているデータを処理するために用いられ、繰り返し処理すべきデータのエリア数を示す繰り返し数フィールドを有する制御コマンドを、前記コンピュータ装置から転送されるデータに応じて順次生成してコマンド記憶部に格納するステップと、前記コマンド記憶部に格納した制御コマンドに基づいて前記各バッファのデータに所定の処理を施して出力するステップと、前記コマンド記憶部に格納されている制御コマンドの繰り返し数フィールドの値の総和と、前記コンピュータ装置から転送されているが制御コマンドが生成されていないデータの数と、前記コマンド記憶部に格納されている制御コマンドのうち処理中の制御コマンドの残りの繰り返し回数とに基づいて、前記第１のバッファ及び前記第２のバッファのデータ残量を検出するステップとを有することを特徴とする。
【発明の効果】
【００２２】
本発明によれば、コマンド記憶部に格納されている制御コマンドの繰り返し数フィールドの値の総和と、コンピュータ装置から転送されているが制御コマンドが生成されていないデータの数と、コマンド記憶部に格納されている制御コマンドのうち処理中である制御コマンドの残りの繰り返し回数とに基づいて、第１のバッファ及び第２のバッファのデータ残量を検出するので、正確なバッファのデータ残量を検出することができ、バッファアンダーランの誤検出を回避することができる。
【発明を実施するための最良の形態】
【００２３】
本実施形態におけるデータ処理装置は、外部のコンピュータ装置であるホストとＣＤやＤＶＤなどの光ディスク（記録媒体の一例に相当）への記録を行う光ディスク記録部との間に設けられるものであり、ホストから転送されるデータに基づいて、光ディスクに記録するためのデータを生成して光ディスク記録部へ出力する装置であり、光ディスクにデータを格納する光ディスク装置などに用いられるものである。なお、このデータ処理装置は、ＬＳＩ（半導体集積回路）などによって構成される。
【００２４】
そして、データ処理装置は、ホストから転送されるデータを所定エリア単位で順次格納する第１のバッファと、光ディスクへの記録処理内容に応じて生成されるデータを所定エリア単位で順次格納する第２のバッファと、各バッファに所定エリア単位で格納されているデータを処理するために用いられ、繰り返し処理すべきデータのエリア数を示す繰り返し数フィールドを有する制御コマンドを複数格納するコマンド記憶部と、コマンド記憶部に格納した制御コマンドに基づいて各バッファのデータに所定の処理を施して出力するデータ制御部とを備えている。
【００２５】
さらに、データ処理装置は、コマンド記憶部に格納されている制御コマンドの繰り返し数フィールドの値の総和と、ホストから転送されているが制御コマンドが生成されていないデータの数と、コマンド記憶部に格納されている制御コマンドのうち処理中である制御コマンドの残りの繰り返し回数とに基づいて、第１のバッファ及び第２のバッファのデータ残量を検出するようにしている。
【００２６】
このように構成しているため、第１バッファと第２バッファの正確なデータ残量を検出することができ、従って、バッファアンダーランの誤検出を回避することができる。
【００２７】
また、このように従来であれば、各バッファに格納していた制御コマンドをコマンド記憶部に格納するようにしているため、生成された制御コマンドで処理すべきデータのエリア数を容易に検出することができる。
【００２８】
さらに、コマンド記憶部から取り出して転送された制御コマンドの繰り返し数フィールドの値からこの制御コマンドによって処理したデータのエリア数を減算した値を格納する実行カウンタレジスタを備え、実行カウンタレジスタに基づいて、コマンド記憶部に格納されている制御コマンドのうち処理中の制御コマンドの残りの繰り返し回数を検出するので、Ｈ／Ｗによってリアルタイムで残りの繰り返し回数を検出することができる。
【００２９】
さらに、ホストから転送されるデータを所定のパケットサイズで書き込みを行うときに、ホストから転送されたデータのうちパケットサイズに対する端数の値を格納する転送データカウンタレジスタを備え、転送データカウンタレジスタに基づいて、ホストから転送されているが制御コマンドが生成されていないデータ数を検出するようにしているので、Ｈ／Ｗによってリアルタイムで制御コマンドが生成されていないデータ数を検出することができる。
【００３０】
以下、本実施形態におけるデータ処理装置について図面を参照しながら具体的に説明する。図１は本実施形態におけるデータ処理装置１のブロック図である。
【００３１】
本実施形態におけるデータ処理装置１は、ホストから転送されるデータ（以下、「受信データ」とする。）及び光ディスクへの記録内容に従って生成したデータ（以下、「生成データ」とする。）を一時的にバッファに格納した後、光ディスクへの記録内容に従ってバッファからデータを取り出し、光ディスク記録部のエンコーダに送信する装置である。
【００３２】
図１に示すように、データ処理装置１は、受信データ及び生成データを所定エリア単位で一時的に格納するデータ記憶部１０と、このデータ記憶部１０の各バッファに所定エリア単位で格納されているデータを処理するために用いられる制御コマンドを一時的に格納するコマンド記憶部２０と、データ記憶部１０とデータの送受信を行うデータアクセス部３０と、コマンド記憶部２０と制御コマンドの送受信を行うコマンドアクセス部４０と、受信データや生成データに関する制御を行うデータ制御部５０と、制御コマンドに関する制御を行うコマンド制御部６０と、データ処理装置１全体を制御するＣＰＵ７０とを有している。また、データ制御部５０は、エンコーダに出力可能なデータ残量が所定以下の場合にバッファアンダーランであると判定し、バーンプルーフ機能を動作させる。
【００３３】
データ記憶部１０は、記憶領域を所定エリア単位に分割したＳＤＲＡＭから構成されており、ホストから転送されるデータである受信データをエリア単位で順次格納するための第１のバッファであるＷＭＲＢ（メインディングバッファ）と、光ディスクへの記録処理内容に従って後述のＣＰＵ７０で生成されるデータを所定エリア単位で順次格納するための第２のバッファであるＷＳＲＢ（サブリングバッファ）及びＷＬＢ（リニアバッファ）とを有している。これらのバッファは、従来技術の欄で説明したように、ＰＨＳＴ、ＰＦＭＴ、ＰＦＭＴ２などのポインタに基づいてデータの書込み及び読み出しが行われる（図８，図９参照）。
【００３４】
なお、光ディスクへの記録処理内容に従って生成されるデータとして、リンクデータやポーズデータなどがある。また、第２のバッファは、２つに限られず、又一つであってもよい。データ記憶部１０としてＳＤＲＡＭが使用されるが、これに限られない。各エリアには、それぞれ一定容量のデータが格納可能である。
【００３５】
コマンド記憶部２０は、制御コマンドを一時的に格納する装置であり、システム要求、コスト、処理の複雑さに応じて、フリップフロップ、ＳＲＡＭ、ＳＤＲＡＭなどの記憶素子を使用することができる。
【００３６】
また、制御コマンドは、図２に示すように、繰り返し数フィールド、ポインタ制御フィールド、データ処理フィールドから構成される。
【００３７】
繰り返し数フィールドには、その制御コマンドによって同一バッファ上のデータに対する処理を繰り返す回数が設定される。このフィールドが設けられることによって、ＣＰＵ７０は、同一のデータ処理内容の制御コマンドをコマンド記憶部２０へ複数回書き込む必要がなくなり、ＣＰＵ７０の負荷低減と共にコマンド記憶部２０のメモリエリアの低減が可能となる。この繰り返し回数フィールドに指定された回数の実行が終わると次の制御コマンドがフェッチされ実行される。制御コマンドの繰り返し数フィールドに０が指定されている場合、書き込み終了を意味する。
【００３８】
この繰り返しフィールドの追加により、制御コマンドが共通なエリアに対しては１つの制御コマンドで複数のエリアの処理を行うことが可能となる。このように、従来であれば各エリアに格納されていた同一の制御コマンドを共通化でき、ＳＤＲＡＭの領域を軽減することが可能となる。
【００３９】
コマンド記憶部２０の例を図３に示す。コマンド記憶部２０は、リングコマンドバッファ（以下、「ＷＲＣＢ」とする。）とリニアコマンドバッファ（以下、「ＷＬＣＢ」とする。）の２種類から構成される。ＷＲＣＢはリングバッファ構造、ＷＬＣＢはリニアバッファ構造を取る。ＷＲＣＢはホストから転送されるデータである受信データを処理する制御コマンド（以下、「受信データ処理コマンド」とする。）を格納し、ＷＬＣＢはデータ処理装置１内部で生成するデータである生成データを処理する制御コマンド（以下、「生成データ処理コマンド」とする。）を格納するのに用いる。また、制御コマンドを格納する書き込み位置を示すポインタをＰＣＭＤと定義し、制御コマンドを取得する読み出し位置を示すポインタをＧＣＭＤと定義する。ＧＣＭＤはＷＲＣＢとＷＬＣＢ間を移動することが可能である。
【００４０】
ポインタ制御フィールドには、各バッファの次に読み出すべきデータの位置を示すリードポインタであるＰＦＭＴを制御するポインタ制御コマンドが格納される。すなわち、ポインタ制御フィールドは、ＰＦＭＴが指すエリアをデータ処理コマンドに従って処理した後、ＰＦＭＴをどのように制御するかが設定される。そして、その設定内容に従って、ＰＦＭＴをインクリメントし、又ＰＦＭＴを指定エリアに移動させる等の制御が行われる。
【００４１】
また、繰り返しフィールドにて、繰り返し回数が２以上設定されている場合、最後の繰り返し前までは、ＰＦＭＴのインクリメントを行い、最後の繰り返しのときにＰＦＭＴを指定エリアに移動させるようにポインタ制御コマンドを設定できる。
【００４２】
さらに、制御コマンドで第２のバッファ（ＷＳＲＢ、ＷＬＢ）の処理を行うときに、バッファの一つのエリアを繰り返し処理するために、ＰＦＭＴを移動させないようにポインタ制御フィールドを設定できる。
【００４３】
なお、ＷＭＲＢに関し、未使用位置の先頭位置を示すライトポインタであるＰＨＳＴがあり、このＰＨＳＴは、ＰＦＭＴと共にバッファ制御部５２で管理される。ここで、例えば、ＰＨＳＴとＰＦＭＴが図８に示す格納位置を示している場合、ＷＭＲＢのエリア１，２にデータが格納されていることになる。このＰＨＳＴとＰＦＭＴの差分がＷＭＲＢに格納されているデータのエリア数となり、図８の場合は、エリア数２となる。
【００４４】
データ処理フィールドには、データ記憶部１０に格納されている所定エリア単位の各データをどのように処理するかを示す情報が設定される。
【００４５】
この処理内容は、光ディスクのフォーマットに従ったデータ生成に関するものである。例えば、ＣＤの場合、記録時にＳＹＮＣ（同期信号）を生成する、ＨＥＡＤＥＲを生成するなどである。
【００４６】
図２で示したコマンド形態を用いてバッファ残量を計算する方法の一例を説明する。上述のように、光ディスクにデータを記録する際にはＳＤＲＡＭを所定エリア単位に分割し、そこにＷＭＲＢ、ＷＳＲＢ、ＷＬＢなどのバッファ領域を確保している。ＷＭＲＢ上のデータは外部ホストから任意のタイミングで送られ、ＷＳＲＢ，ＷＬＢ上のデータは事前にＣＰＵ７０によって準備される。ＷＭＲＢ以外のデータに関しては事前にＣＰＵ７０で必ず準備するという制約があるため、ＷＭＲＢの処理が終わりＷＭＲＢ以外の制御コマンドが処理可能になった時点で、ＷＭＲＢ以外の制御コマンドは繰り返し数に設定された回数分確実に実行できることになる。
【００４７】
ここで、ＣＤパケットライトする場合の制御コマンドを用いて正しいデータ残量を計算してみる。ＣＤのパケットライトとはホストから送られるデータをパケット単位に分け、パケット毎にリンク用のデータを生成して付加する記録方法である。パケットサイズを１６エリア、リンク用のデータを７エリア、ホストから転送されるデータ数を４８エリアとした場合、コマンド記憶部２０に格納される制御コマンドは図４のようになり、以下のフローにより処理が行われる。
１）ＷＬＢ１(Ｌｉｎｋ−Ｒｕｎｉｎ)を５エリア処理した後、ＷＭＲＢに戻る。
２）ＷＭＲＢを１６エリア処理した後、ＷＬＢにジャンプする。
３）ＷＬＢで７エリア処理した後、ＷＭＲＢに戻る。
４）ＷＭＲＢを１６エリア処理した後、ＷＬＢにジャンプする。
５）ＷＬＢを７エリア処理した後、ＷＭＲＢに戻る。
６）ＷＭＲＢを１６エリア処理した後、ＷＬＢ２にジャンプする。
７）ＷＬＢ２(Ｒｕｎｏｕｔ−Ｌｉｎｋ)を３エリア処理する。
８）処理を終了する。
【００４８】
この時、ホストからのデータ転送に従いＰＨＳＴは増加するが、フォーマット処理は起動されてないため、ＰＦＭＴが変化しない。このようなケースではＷＭＲＢ上のデータ残量「ＰＨＳＴ−ＰＦＭＴ」の値を使ってＷＬＢも考慮したデータ残量を以下のように計算することができる。
ａ）［ＰＨＳＴ−ＰＦＭＴ］＜１６  の場合
上記１）のＷＬＢへの５エリアの処理が確定するため、
データ残量＝［ＰＨＳＴ−ＰＦＭＴ］＋５
ｂ）１６≦［ＰＨＳＴ−ＰＦＭＴ］＜３２  の場合
上記２）のＷＬＢへのジャンプと７エリアの処理が確定するため、
データ残量＝［ＰＨＳＴ−ＰＦＭＴ］＋１２
ｃ）３２≦［ＰＨＳＴ−ＰＦＭＴ］＜４８  の場合
上記２）に加えて、上記４）のＷＬＢへのジャンプも確定するため、
データ残量＝［ＰＨＳＴ−ＰＦＭＴ］＋１９
ｄ）４８≦［ＰＨＳＴ−ＰＦＭＴ］  の場合
上記１）から上記７）までの全ての処理が行えることが確定するため、
データ残量＝７０
この計算方法を用いれば、ＰＨＳＴ−ＰＦＭＴの値を調べることで第１のバッファであるＷＭＲＢ以外の第２のバッファのデータも含めた正しいデータ残量を計算することができる。しかし、この計算方法が成立するのはＰＦＭＴが変化しないケースにおいてのみであり、データ処理を開始し、ＰＦＭＴが変化している状況下では、上記の計算方法を使用することができない。
【００４９】
例えば、ＰＨＳＴ−ＰＦＭＴ＝１８の場合、転送データが２つのリンクデータにまたがる場合はデータ残量が３２となるが、１つのリンクデータしかまたがらない場合は２５ということになる。つまり、データ残量は、ホストからのデータ転送の状況とデータ処理の状況によって変化する。
【００５０】
ホストからのデータ転送の状況とデータ処理の状況をリアルタイムで検出する処理をＣＰＵ７０で行うことも可能であるが、光ディスクへのデータ記録スピードが高倍速になった場合、処理が間に合わずデータをエンコーダに送れない状況が発生する可能性がある。その時、不必要な記録中断が発生してしまい、データ処理装置としてのパフォーマンス低下を招いてしまう。
【００５１】
そこで、本実施形態におけるデータ処理装置１においては、データ処理を開始し、ＰＦＭＴが変化している状況下においても、図２で示したコマンド形態を用いてバッファ残量を計算する構成をＨ／Ｗを用いて行うことができるようにしている。
【００５２】
また、第１のバッファであるＷＭＲＢを使用しないデータ記録の場合、ＣＰＵ７０が各データ内容と記録サイズを把握しているため、光ディスクへの記録前に全てのデータと制御コマンドを指定エリアに格納しておくことが可能である。そのため、高倍速記録が対象になった場合でも問題なく記録することが可能である。しかし、第１のバッファであるＷＭＲＢを使用するデータ記録の場合、ホストから転送されるデータ量が光ディスクへの記録前に分からないため、ホストからデータが転送された後に転送数をカウントして、コマンド記憶部２０に制御コマンドを格納する必要がある。つまり、リアルタイムに制御コマンドを格納しなくてはならない。
【００５３】
上述のＣＤパケットライトの場合では、ホストから転送されてくるデータ数をカウントし、パケットサイズである１６エリア分カウントした時点でコマンド記憶部２０にパケット用の制御コマンドを格納する必要がある。また、リンク用の制御コマンドについては、パケット用の制御コマンドを格納した後、ホストから１エリア分のデータが転送された時点(リンクデータが確定された時点)で格納しなくてはならない。
【００５４】
リアルタイムに制御コマンドを格納する処理をＣＰＵで行うことも可能であるが、光ディスクへのデータ記録スピードが高倍速になった場合、処理が間に合わずデータを後段のエンコーダに送れない状況が発生する可能性がある。その時、不必要な記録中断が発生してしまい、データ処理装置としてのパフォーマンス低下を招いてしまう。
【００５５】
そこで、本実施形態におけるデータ処理装置１においては、ホストからのデータ転送時に必要な制御コマンドをＨ／Ｗにより自動で格納する構成をＨ／Ｗで行うようにしている。
【００５６】
データアクセス部３０は、データ制御部５０からの命令により、データ記憶部１０へアクセスして、データ記憶部１０の各データの書き込みや読み出しを行う。ＣＰＵ７０からアクセスする際はデータ制御部５０を経由する。データアクセス部３０は、データ制御部５０から、バッファのエリア番号と、バッファへの書き込み（以下、「ライトアクセス」とする。）か、バッファからの読み込み（以下、「リードアクセス」とする。）かを示す判別信号とを受信し、受信した信号に従ってデータ記憶部１０へのアクセスを行う。また、データ記憶部１０における各エリアのデータにフィールドを設ける場合、データ制御部５０からフィールドの識別信号などを受け取り、受け取った識別信号に従ってデータ記憶部１０へのアクセスを行う。
【００５７】
コマンドアクセス部４０は、コマンド制御部６０からコマンド記憶部２０に格納された制御コマンドにアクセスする際に用いられる。ＣＰＵ７０からアクセスする際はコマンド制御部６０を経由して行われる。コマンドアクセス部４０は、コマンド制御部６０から、コマンド番号、リードアクセスかライトアクセスかの判別信号などを受け取り、受け取った信号に従って制御コマンドの送受信を行う。
【００５８】
データ制御部５０は、内部にフォーマット処理部５１及びバッファ制御部５２を有している。フォーマット処理部５１は、制御コマンドに従ってフォーマット処理を行う装置である。すなわち、フォーマット処理部５１は、データアクセス部３０を介して該当するエリアのデータを取得し、コマンド制御部６０から取得した制御コマンドに従ってフォーマット処理を行う。また、バッファ制御部５２は、データ記憶部１０におけるポインタの管理などを行う装置である。
【００５９】
コマンド制御部６０は、バッファ制御部６１を有する。このバッファ制御部６１は、コマンド記憶部２０における各ポインタの管理、バッファデータ残量の管理等を行う。図５にコマンド制御部６０が有する内部レジスタを示す。なお、これらの内部レジスタは、データ処理装置１における初期化段階でＣＰＵ７０によって初期化される。
【００６０】
図５に示すように、コマンド制御部６０は、実行コマンド転送部６２と制御コマンド転送部６３とを備えている。
【００６１】
実行コマンド転送部６２は、ホストから送られてくるデータに合わせて制御コマンドを格納する機能を有しており、内部レジスタとして、制御コマンドレジスタ８１、実行カウンタレジスタ８２などを備えている。
【００６２】
制御コマンドレジスタ８１は、コマンド記憶部２０から取得した制御コマンドが格納されるレジスタである。この制御コマンドレジスタ８１に格納されている制御コマンドが実行コマンド転送部６２によってデータ制御部５０へ転送される。
【００６３】
実行カウンタレジスタ８２は、データ制御部５０に転送した制御コマンドをあと何回(何エリア分)実行する必要があるかを示す値が格納されるレジスタである。実行カウンタレジスタ８２には、制御コマンドを取得したタイミングで制御コマンドの繰り返しフィールドの値が格納され、データ制御部５０のフォーマット処理部５１においてフォーマット処理が行われる毎に格納した値が実行コマンド転送部６２によって１ずつ減算される。すなわち、実行カウンタレジスタ８２には、コマンド記憶部２０から取り出して転送された制御コマンドの繰り返し数フィールドの値からこの制御コマンドによって処理したデータのエリア数を減算した値が格納されることになる。実行カウンタレジスタ８２の値が０になったタイミングで実行コマンド転送部６２はコマンド記憶部２０から新規の制御コマンドを取得し、データ制御部５０に転送する。
【００６４】
制御コマンド転送部６３は、データ制御部５０に通知する機能を有しており、内部レジスタとして、パケットデータ用制御コマンドレジスタ９１、リンクデータ用制御コマンドレジスタ９２、パディングデータ用制御コマンドレジスタ９３、転送終了用制御コマンドレジスタ９４、パディング先エリアレジスタ９５、転送終了先エリアレジスタ９６、パケットサイズ（格納閾値）レジスタ９７、転送データカウンタレジスタ９８などを有している。
【００６５】
パケットデータ用制御コマンドレジスタ９１は、ホストから転送されるデータを処理するための制御コマンドを格納するレジスタである。このパケットデータ用制御コマンドレジスタ９１には、初期化時にＣＰＵ７０によりホストから転送されるデータを処理するための制御コマンドが格納される。この制御コマンドにおける繰り返し数フィールドの値はパケットサイズとなり、パケットサイズ(格納閾値)レジスタ値と一致していなければならない。また、ＤＶＤの場合はＥＣＣサイズである１６を指定する必要がある。
【００６６】
リンクデータ用制御コマンドレジスタ９２は、リンクデータを処理するための制御コマンドを格納するレジスタである。このリンクデータ用制御コマンドレジスタ９２には、初期化時にＣＰＵ７０によりリンクデータを処理するための制御コマンドが格納される。この制御コマンドにおける繰り返し数フィールドの値はＣＤの規格により７でなければならない。また、ＤＶＤの場合はリンクデータが存在しないため、このレジスタは使用しない。
【００６７】
パディングデータ用制御コマンドレジスタ９３は、パディングデータを処理するための制御コマンドを格納するレジスタである。パディングデータ用制御コマンドレジスタ９３には、初期化時にＣＰＵ７０によりパディングデータを処理するための制御コマンドが格納される。この制御コマンドにおける繰り返し数フィールドの値はホストから転送されるデータ数によって変化するため、データ転送終了時（Ｓｙｎｃ Ｃａｃｈｅ発行時）に演算することとなる。
【００６８】
転送終了用制御コマンドレジスタ９４は、転送終了データ（ＣＤ：Ｒｕｎｏｕｔ−Ｌｉｎｋ）を処理するための制御コマンドを格納するレジスタである。この転送終了用制御コマンドレジスタ９４には、初期化時にＣＰＵ７０により転送終了データを処理するための制御コマンドが格納される。この制御コマンドにおける繰り返し数フィールドの値は、ＣＤの規格により３でなければならない。また、ＤＶＤの場合は終了時のデータが存在しないため、このレジスタは使用しない。
【００６９】
パディング先エリアレジスタ９５は、データ記憶部１０の内部でパディング先エリアとして確保したエリアの先頭エリア番号を格納するレジスタである。このパディング先エリアレジスタ９５は、パディング処理が必要な場合であって、制御コマンドのポインタ制御フィールドの値を変更する場合に使用されるレジスタである。
【００７０】
転送終了先エリアレジスタ９６は、データ記憶部１０の内部で転送終了エリア（ＣＤ：Ｒｕｎｏｕｔ−Ｌｉｎｋ）として確保したエリアの先頭エリア番号を格納するレジスタである。このパディング先エリアレジスタ９５は、転送終了エリアの処理を行う場合であって、制御コマンドのポインタ制御フィールドの値を変更する場合に使用する。また、ＤＶＤの場合は終了時のデータが存在しないため、このレジスタは使用しない。
【００７１】
パケットサイズ（格納閾値）レジスタ９７は、パケットデータ用制御コマンドを格納するかどうかを判定する閾値を格納するレジスタである。このレジスタ９７には、初期化時にＣＰＵ７０により上記閾値が格納される。なお、パケットサイズは書き込み前にホストからコマンドで通知される。また、ＤＶＤの場合はＥＣＣサイズである１６を指定する必要がある。
【００７２】
転送データカウンタレジスタ９８は、ホストから転送されたデータのうちパケットサイズに対する端数の値が格納されるレジスタである。パケットサイズが１６の場合、この転送データカウンタレジスタ９８の値は必ず１６以下となる。また、転送データカウンタレジスタ９８の値は、初期化時にＣＰＵで０クリアを行う必要がある。
【００７３】
ＣＰＵ７０は、Ｆ／Ｗに従って各装置の初期設定、起動、バッファアンダーラン等の割り込みに応じた処理やデータアクセス部３０を通じたデータへのアクセス、コマンドアクセス部４０を通じた制御コマンドへのアクセスなどの様々な処理を行う。
【００７４】
以上のように構成されたデータ処理装置１の動作を、コマンド制御部６０の動作を主として図６のフローチャートを参照して具体的に説明する。なお、ＰＣＭＤがＷＲＣＢ上の最終制御コマンドを指しているときにＰＣＭＤに１加算した場合は、ＰＣＭＤはＷＲＣＢの先頭制御コマンドを指すことになる（ＷＲＣＢ上をループする）。
【００７５】
まず、ＣＰＵ７０は、データ記憶部１０、コマンド記憶部２０、データ制御部５０、コマンド制御部６０などの各部の初期設定を行う（ステップＳ１）。コマンド制御部６０の内部レジスタの初期化処理やデータ記憶部１０上に準備しておく必要があるデータ（パディングデータ、Ｒｕｎｏｕｔ−Ｌｉｎｋデータ等）についてもこのタイミングで処理が行われる。
【００７６】
データ制御部５０は、その後、ホストからの転送データを受信すると、転送データを受信した旨の通知（転送通知）をコマンド制御部６０に通知する。また、ホストからのデータ転送が全て終了してＳｙｎｃ Ｃａｃｈｅコマンドをホストから受信すると、コマンド制御部６０にその旨の通知（Ｓｙｎｃ Ｃａｃｈｅ通知）を行う。
【００７７】
コマンド制御部６０は、データ制御部５０から転送通知又はＳｙｎｃ Ｃａｃｈｅ通知を受信したか否かを判定する（ステップＳ２）。
【００７８】
この処理において、コマンド制御部６０は、データ制御部５０から転送通知を受信したと判定すると（ステップＳ２：転送通知有）、転送データカウンタレジスタ９８の値を１だけインクリメントして（ステップＳ３）、処理をステップＳ４に移行する。
【００７９】
ステップＳ４において、コマンド制御部６０は、転送データカウンタレジスタ９８の値がパケットサイズ（格納閾値）レジスタ９７の値と一致しているかを判定する。
【００８０】
この処理において、転送データカウンタレジスタ９８の値がパケットサイズ（格納閾値）レジスタ９７の値と一致していないと判定すると（ステップＳ４：Ｎｏ）、コマンド制御部６０は、ステップＳ２〜Ｓ４までの処理を、転送データカウンタレジスタ９８の値とパケットサイズ（格納閾値）レジスタ９７の値とが一致するまで繰り返し行う。
【００８１】
一方、転送データカウンタレジスタ９８の値とパケットサイズ（格納閾値）レジスタ９７の値とが一致していると判定すると（ステップＳ４：Ｙｅｓ）、コマンド制御部６０は、ＰＣＭＤが示すコマンド記憶部２０の格納位置にパケットデータ用の制御コマンドを格納し（ステップＳ５）、ＰＣＭＤの値を１だけインクリメントして（ステップＳ６）、処理をステップＳ７に移行する。
【００８２】
ステップＳ７において、コマンド制御部６０は、転送データカウンタレジスタ９８の値を０にリセットする。
【００８３】
データ制御部５０は、その後、ホストからデータがホストからの転送データを受信すると、転送通知をコマンド制御部６０に通知する。この段階で７エリア分のリンクデータが確定することになる。また、Ｓｙｎｃ Ｃａｃｈｅコマンドをホストから受信すると、コマンド制御部６０にその旨の通知（Ｓｙｎｃ Ｃａｃｈｅ通知）を行う。
【００８４】
コマンド制御部６０は、ステップＳ３と同様に、データ制御部５０から転送通知又はＳｙｎｃ Ｃａｃｈｅ通知を受信したか否かを判定する（ステップＳ８）。
【００８５】
この処理において、データ制御部５０から転送通知又はＳｙｎｃ Ｃａｃｈｅ通知を受信していないと判定すると（ステップＳ８：Ｎｏ）、コマンド制御部６０は、転送通知又はＳｙｎｃ Ｃａｃｈｅ通知を受信するまで、ステップＳ８の判定を繰り返し行う。
【００８６】
一方、転送通知又はＳｙｎｃ Ｃａｃｈｅ通知を受信したと判定すると（ステップＳ８：転送通知有）、コマンド制御部６０は、転送データカウンタレジスタ９８の値を１だけインクリメントし（ステップＳ９）、ＰＣＭＤが示すコマンド記憶部２０の格納位置にリンクデータ用の制御コマンドを格納して（ステップＳ１０）、さらに、ＰＣＭＤの値を１だけインクリメントして（ステップＳ１１）、処理をステップＳ２に戻す。
【００８７】
コマンド制御部６０は、データ制御部５０においてホストからの転送データを受信している間、ステップＳ２〜Ｓ１１の処理を繰り返すことになる。
【００８８】
ステップＳ２又はステップＳ８において、データ制御部５０からＳｙｎｃ Ｃａｃｈｅ通知を受信したと判定すると（ステップＳ２，Ｓ８：Ｓｙｎｃ Ｃａｃｈｅ有）、コマンド制御部６０は、パディング処理を行うか否かを判定する。
【００８９】
パディング処理は、ホストから転送されたデータのデータ数がパケットサイズの倍数でない場合、つまり端数が存在する場合に必要になる処理である。すなわち、ホストから転送されたデータは、必ずパケット単位で終了する必要があり、ＣＤ／ＤＶＤの規格により定められている。転送データの端数は転送データカウンタレジスタ９８に格納される。この時、パディング数を演算する必要があるが、以下の処理によりで演算することが可能である。
【００９０】
すなわち、ホストからコマンドで通知されるパケットサイズ（格納閾値）の値はパケットサイズ（格納閾値）レジスタ９７に格納されており、この値から転送データカウンタレジスタ９８の値を減算して、パディングサイズ（ＰＡＤＳＩＺＥ）を算出する（ステップＳ１２）。例えば、ＣＤのパケットサイズが１６で転送データカウンタが９の場合は、パディングサイズは７となる。
【００９１】
その後、コマンド制御部６０は、最終パケットサイズが１６であるか否かを判定する（ステップＳ１３）。パケットサイズが１６であるか否かは、ステップＳ１２において算出したパディングサイズが０であるか否かで判定する。この処理において、パケットサイズが１６ではないと判定されると（ステップＳ１３：Ｙｅｓ）、コマンド制御部６０は、パディング処理が必要と判定し、ステップＳ１２において算出されたパディングサイズの値をパディングデータ用制御コマンドレジスタ９３の繰り返し数フィールドの値とし、以下のステップＳ１４〜Ｓ１７のパディング処理を開始する。
【００９２】
ステップＳ１４において、コマンド制御部６０は、パケットデータ用制御コマンドレジスタ９１からパケットデータ用の制御コマンドを取り出して、ＰＣＭＤが示すコマンド記憶部２０の格納位置にパケットデータ用の制御コマンドを格納し（ステップＳ１４）、ＰＣＭＤの値を１だけインクリメントして（ステップＳ１５）、処理をステップＳ１６に移行する。
【００９３】
ステップＳ１６において、コマンド制御部６０は、パディングデータ用の制御コマンドの繰り返し数は、ステップＳ１２において算出したパディングサイズの値として、パディングデータ用制御コマンドレジスタ９３からパディングデータ用の制御コマンドを取り出して、ＰＣＭＤが示すコマンド記憶部２０の格納位置にパディングデータ用の制御コマンドを格納し（ステップＳ１６）、ＰＣＭＤの値を１だけインクリメントして（ステップＳ１７）、処理をステップＳ１８に移行する。
【００９４】
このように、転送データが端数の場合に、コマンド記憶部２０に格納する制御コマンドとして、ホストから転送された端数分のデータを処理するパケットデータ用の制御コマンド、パディングデータを処理するパディングデータ用の制御コマンドの順番で制御コマンドを格納することによって、パディング処理を実現している。
【００９５】
ステップＳ１７の処理が終了したとき、或いはステップＳ１３においてパケットサイズが１６であると判定されたとき（ステップＳ１３：Ｎｏ）、コマンド制御部６０は、転送終了用制御コマンドレジスタ９４から転送終了用データを処理するための制御コマンドを取り出して、ＰＣＭＤが示すコマンド記憶部２０の格納位置に格納する（ステップＳ１８）。転送終了用データはＲｕｎｏｕｔ−Ｌｉｎｋのデータであり、サイズは３と規格で定められている。この処理を終了することで一連の書き込み処理を完了する。
【００９６】
次に、データ記憶部１０に格納されているデータに対してフォーマット処理を行う一連のシーケンスについて説明する。この処理は、ホストから転送されたデータをデータ記憶部１０に格納する上述の処理と並行して行われる処理である。
【００９７】
（１）まず、コマンド制御部６０は、コマンド記憶部２０のＧＣＭＤが示す位置の制御コマンドを取得し、制御コマンドレジスタ８１に格納する。同時に取得した制御コマンドの繰り返し数フィールドに格納されている繰り返し数の値を実行カウンタレジスタ８２にコピーして格納する。その後、ＧＣＭＤの値を１だけインクリメントする。
【００９８】
（２）次に、コマンド制御部６０は、コマンド記憶部２０から取得した制御コマンドをデータ制御部５０に転送する。データ制御部５０は、コマンド制御部６０から制御コマンドを受信すると、エリア単位でＰＦＭＴが示す位置のデータを取得する。
【００９９】
（３）データ制御部５０は、取得したデータに対し、コマンド制御部６０から受信した制御コマンドに従ってフォーマット処理を行う。フォーマット処理が１エリア分終了すると、データ制御部５０は、フォーマット終了済みデータをエンコーダブロックに転送する。同時にデータ処理が終了したことをコマンド制御部６０に通知する。
【０１００】
（４）コマンド制御部６０は、データ制御部５０からデータ処理が終了した通知を受けると、実行カウンタレジスタ８２の値を１だけデクリメントする。その後、コマンド制御部６０は、実行カウンタレジスタ８２の値が０になったと判定すると、処理を上記（１）に移行する。一方、実行カウンタレジスタ８２の値が０ではないと判定すると、処理を上記（３）に移行する。以上の手順でフォーマット処理が行われる。
【０１０１】
このように構成されたデータ処理装置１において、第１のバッファであるＷＭＲＢ、第２のバッファであるＷＳＲＢ，ＷＬＢのデータ残量をコマンド制御部６０によって次のように検出している。
【０１０２】
すなわち、コマンド制御部６０は、コマンド記憶部２０に格納されている制御コマンドの繰り返し数フィールドの値の総和と、コマンド制御部６０の転送データカウンタレジスタ９８の値と、コマンド制御部６０の実行カウンタレジスタ８２の値とに基づいて、それぞれコマンド記憶部２０に格納されている制御コマンドによって未処理のデータのエリア数と、ホストからデータ自体は転送されているが制御コマンドに格納していないデータのエリア数と、コマンド記憶部２０に格納されている制御コマンドのうち処理中である制御コマンドの残りの繰り返し回数とを検出し、これらを加算することで、バッファデータ残量の正確な値を算出する。
【０１０３】
このようにコマンド制御部６０によって、コマンド記憶部２０に格納されている制御コマンドの繰り返し数フィールドの値の総和と、コマンド制御部６０の転送データカウンタレジスタ９８の値と、コマンド制御部６０の実行カウンタレジスタ８２の値とを加算することにより、ホストから転送され、バッファに格納された未処理のデータのエリア数と、処理が確定しているリンクデータ数（エリア数）とを加算した結果と同じ結果を導き出すことができ、これによりバッファデータ残量の正確な値を算出することができる。
【０１０４】
なお、本実施形態においては、ＣＤパケットライトにおける例を説明したが、ＤＶＤの記録に対しても対応が可能である。ＤＶＤの記録時にはパケットサイズを１６にする必要がある。これはＥＣＣの概念でＥＣＣ＝１６となるからである。また、ＣＤのパケットライトではパケット間にリンクデータが必要となるが、ＤＶＤではＥＣＣの境界にリンクデータは必要ないため、図６におけるフローチャートにおいてリンクデータの付加に関する機能部分はＯＦＦにする必要がある。そこで、コマンド制御部６０にＣＤ／ＤＶＤ等を選択する内部レジスタを準備し、光ディスクの種類によってリンク処理に関連する機能をＯＮ／ＯＦＦで切り替えるようにする。
【０１０５】
以上のように本実施形態におけるデータ処理装置によれば、第２のバッファであるＷＳＲＢ、ＷＬＢも考慮した正しいデータ残量をパフォーマンス低下などの悪影響を少なく、もしくは悪影響を及ぼさずに計算することができる。従って、正しいデータ残量を使ってバッファアンダーラン検出を行うことができ、従来技術の問題点であったバッファアンダーラン誤検出が回避できる。バッファアンダーラン誤検出が回避できることにより、不必要なバッファアンダーラン対応処理を行わなくて済み、不要な処理によるパフォーマンスの悪化を防ぐことができる。
【０１０６】
また、従来においては同じ制御コマンドを複数回ＳＤＲＡＭ上に書く必要があったが、本実施形態におけるデータ処理装置では、ＳＤＲＡＭ中に制御コマンドを書く場合でも同じコマンドは１回だけ書けばよく、ＳＤＲＡＭの使用量が削減できる。
【０１０７】
また、従来においては制御コマンドを変更する場合、全ての対象エリアの制御コマンドを書き換える必要があり、複数のエリアの制御コマンドを書き換える場合、複数のエリアにアクセスする必要が生じるため、書き換のためのＳＤＲＡＭへのアクセスが記録パフォーマンスを低下させることがあった。本実施形態におけるデータ処理装置では、同じ制御コマンドを複数回書く必要がなくなったため、仮にＳＤＲＡＭに制御コマンドを置く場合でもＳＤＲＡＭへのアクセス量が減少する。また、制御コマンドをＳＲＡＭ、フリップフロップなどに保存する場合は制御コマンド書き換えによるＳＤＲＡＭへのアクセスは必要なくなる。ＳＤＲＡＭへのアクセスの削減によって制御コマンドを修正して記録を再開するときの処理パフォーマンスが向上する。
【０１０８】
また、従来においては、各エリアのデータを処理する場合、制御コマンド受信、データ受信、データ処理、ポインタ処理を繰り返すことで処理を行っていたが、本実施形態におけるデータ処理装置では、制御コマンドが共通なエリアに対しては制御コマンドを一旦受信した後、各エリアはデータ受信、データ処理、ポインタ処理を繰り返すことで処理を行うことができ、制御コマンド受信処理回数を削減でき記録処理のパフォーマンスが向上する。
【０１０９】
また、本実施形態におけるデータ処理装置では、ホストからの転送データをリアルタイムでカウントし、Ｈ／Ｗにより自動で制御コマンドを格納することにより、高倍速記録時においても問題なく記録が可能となる。また、ＣＰＵリソースが必要な箇所をＨ／Ｗ化することによって、低いＣＰＵリソースでも高倍速対応が可能となる。
【図面の簡単な説明】
【０１１０】
【図１】本発明の一実施形態に係るデータ処理装置のブロック図である。
【図２】図１におけるデータ処理装置の制御コマンドの構成を示す図である。
【図３】図１におけるデータ処理装置のコマンド記憶部の構成を示す図である。
【図４】図３のコマンド記憶部に格納される制御コマンドの例を示す図である。
【図５】図３のコマンド記憶部の内部レジスタを説明するための図である。
【図６】図１のデータ処理装置１の動作を説明するためのフローチャートである。
【図７】従来のデータフォーマットを示す図である。
【図８】ポインタとバッファ構成との関係を説明するための図である。
【図９】ポインタとバッファ構成との関係を説明するための図である。
【符号の説明】
【０１１１】
１  データ処理装置
１０  データ記憶部
２０  コマンド記憶部
３０  データアクセス部
４０  コマンドアクセス部
５０  データ制御部
５１  フォーマット処理部
５２  データ制御部のバッファ制御部
６０  コマンド制御部
６１  コマンド制御部のバッファ制御部
７０  ＣＰＵ
８１  制御コマンドレジスタ
８２  実行カウンタレジスタ
９１  パケットデータ用制御コマンドレジスタ
９２  リンクデータ用制御コマンドレジスタ
９３  パディングデータ用制御コマンドレジスタ
９４  転送終了用制御コマンドレジスタ
９５  パディング先エリアレジスタ
９６  転送終了先エリアレジスタ
９７  パケットサイズ（格納閾値）レジスタ
９８  転送データカウンタレジスタ
【図１】
2008146697.tif 000003
【図２】
2008146697.tif 000004
【図３】
2008146697.tif 000005
【図４】
2008146697.tif 000006
【図５】
2008146697.tif 000007
【図６】
2008146697.tif 000008
【図７】
2008146697.tif 000009
【図８】
2008146697.tif 000010
【図９】
2008146697.tif 000011