(57)【特許請求の範囲】
【請求項１】
リード・ソロモン符号のような線形符号によって生成されたＥＣＣ符号ＰＯ部ｑ１を有するＥＣＣブロックＦ１を構成する複数のデータセクタのうち一部のデータセクタのデータｆ１をデータｆ２で更新して更新後のＥＣＣブロックＦ２のＥＣＣ符号ＰＯ部ｑ２を求める方法であって、
更新前のＥＣＣブロックＦ１と更新後のＥＣＣブロックＦ２のソースデータ部のＸＯＲ演算を表すＥＣＣブロックＦ１＋Ｆ２（以下「＋」は、ＸＯＲ演算を意味する。）を想定するステップであって、更新される上記一部のデータセクタのデータは、データｆ１とデータｆ２とのＸＯＲ演算ｆ１＋ｆ２により与えられ、更新されないデータセクタのデータは０とする、ＥＣＣブロックＦ１＋Ｆ２を想定するステップと、
上記ＥＣＣブロックＦ１＋Ｆ２について符号化することにより、ｑ１＋ｑ２と等価なＰＯ部を得るステップと、
上記ＥＣＣブロックＦ１＋Ｆ２のＰＯ部ｑ１＋ｑ２と上記ＥＣＣブロックＦ１のＰＯ部ｑ１とのＸＯＲ演算を行うことにより、上記ＥＣＣブロックＦ２のＰＯ部ｑ２を得るステップと、
とからなる更新後のＥＣＣブロックＦ２のＰＯ部を得る方法。
【請求項２】
リード・ソロモン符号のような線形符号によって生成されたＥＣＣ符号ＰＯ部ｑ１を有するＥＣＣブロックＦ１を構成する複数のデータセクタのうち一部のデータセクタのデータｆ１をデータｆ２で更新する際に、更新後のＥＣＣブロックＦ２のＰＯ部ｑ２を効率的に符号化する方法において、
上記更新前のＥＣＣブロックＦ１と上記更新後のＦ２のソースデータ部のＸＯＲを表すＥＣＣブロックＦ１＋Ｆ２を想定するステップであって、更新される上記一部のデータセクタのデータは、データｆ１とデータｆ２とのＸＯＲ演算ｆ１＋ｆ２により与えられ、更新されないデータセクタのデータは０とする、ＥＣＣブロックＦ１＋Ｆ２を想定するステップと、
更新された上記一部のデータセクタのデータのｆ１＋ｆ２に対してはバイトごとに符号化器で符号化するステップと、更新されない上記データセクタのデータ０に対しては、複数バイトごとに符号化器で符号化するステップとを含む、上記ＥＣＣブロックＦ１＋Ｆ２のＰＯ部ｑ１＋ｑ２を得るステップと、
上記ＥＣＣブロックＦ１＋Ｆ２のＰＯ部ｑ１＋ｑ２に対して、更新前のＥＣＣブロックＦ１のＰＯ部ｑ１のＸＯＲ演算により、更新後のＥＣＣブロックＦ２のＰＯ部ｑ２を得るステップと、
を備える更新後のＥＣＣブロックのＰＯ部の符号化方法。
【請求項３】
上記ＥＣＣブロックは１６のデータセクタで構成され、１または２のデータセクタを書換えることを特徴とする請求項２の方法。
【請求項４】
上記複数バイトは、ワード又はダブルワードであり、更新されないデータセクタに対しては符号化器でデータ０を内部発生して符号化することを特徴とする請求項２の方法。
【請求項５】
上記データセクタは１２バイト行×１７２バイト列からなり、上記ＥＣＣブロックのソースデータは１９２バイト行×１７２バイト列であり、各バイト列に対して１６ＢのＰＯ部を有する請求項３の方法。
【請求項６】
上記更新後のＥＣＣブロックＦ２のＰＯ部ｑ２を得るステップは、ＰＯ部ｑ１＋ｑ２に対して、バイト行ごとにＰＯ部ｑ１のＸＯＲ演算を行うことによりＰＯ部ｑ２のバイト行を確保し、
更に上記ＰＯ部ｑ２の１バイト行が得られるたびに、該ＰＯ部ｑ２の１バイト行と上記ＥＣＣブロックＦ２のソースデータ部の所定数のバイト行とをインターリーブするステップを含む請求項２の方法。
【請求項７】
上記ＰＯ部ｑ１＋ｑ２を得るステップでは、上記符号化器の入力をバイトごと又は複数バイトごとになるように切り換えることを特徴とする請求項２又は請求項６の方法。
【請求項８】
上記ＰＯ部ｑ１＋ｑ２を得るステップでは、上記更新された上記一部のデータセクタのデータのｆ１＋ｆ２に対してバイトごとに符号化器で符号化するステップは、２つの符号化器を用い、上記更新されない上記データセクタのデータ０に対して複数バイトごとに符号化器で符号化するステップは、上記２つの符号化器でデータ０を内部発生して、上記ＥＣＣブロックＦ１＋Ｆ２の２バイト列の符号化を並列して行うことを特徴とする請求項７の方法。
【請求項９】
第１のバッファ、第２のバッファ、及びリード・ソロモン符号を生成する符号化器を有するシステムにおいて、ディスク側からリード・ソロモン符号によって生成されたＥＣＣ符号ＰＯ部を有するＥＣＣブロックが上記第１のバッファ上に読み込まれ、上記ＥＣＣブロックを構成する複数のデータセクタのうち一部のデータセクタに対して書換えを行う際に、効率的にＥＣＣブロックのＰＯ部を符号化する方法であって、
（ａ）新データを第１のバッファに転送するステップと、
（ｂ）上記第１バッファから上記一部のデータセクタの元データと上記新データを読み出して両データのＸＯＲの演算結果を第２のバッファに確保し、更新されないデータセクタについてＸＯＲ演算結果を０とみなし、書換え前後のＥＣＣブロックのソースデータ部のＸＯＲ演算結果を準備するステップと、
（ｃ）書換え前後の上記ＥＣＣブロックのソースデータ部のＸＯＲ演算結果をバイト列方向ごとに上記符号器に送り、上記ソースデータ部の演算結果に対するＰＯ部を確保するステップと、
（ｄ）上記ステップ（ｃ）で確保されたＰＯ部の演算結果に対して、更新前の上記ＥＣＣブロックのＰＯ部のＸＯＲ演算を行い、更新後の上記ＥＣＣブロックのＰＯ部を生成するステップとを備え、
上記ステップ（ｃ）は、書換え前後のＥＣＣブロックのソースデータ部のＸＯＲ演算結果のうち更新される上記データセクタに関しては上記第２のバッファから上記ＸＯＲ演算結果を列方向にバイトごとに符号化器に送り、書換え前後のＥＣＣブロックのソースデータ部のＸＯＲ演算結果のうち更新されない上記データセクタに関しては０とみなし、複数バイト単位で符号化を行うことを特徴とする、
ＥＣＣブロックのリード・ソロモン符号を符号化する方法。
【請求項１０】
上記ステップ（ｄ）でＰＯ部の１バイト行が生成されるごとに、更新後の上記ＥＣＣブロックのソースデータ部の選択された部分と上記ＰＯ部の１バイト行とをインターリーブしてディスク側への書込みを順次行う書込みステップを含むことを特徴とする請求項９の方法。
【請求項１１】
第１のバッファ、第２のバッファ、及びリード・ソロモン符号を生成する符号化器を有するシステムにおいて、ディスク側からリード・ソロモン符号によって生成されたＥＣＣ符号ＰＯ部を有するＥＣＣブロックが上記第１のバッファ上に読み込まれ、上記ＥＣＣブロックを構成する複数のデータセクタのうち一部のデータセクタに対して書換えを行う際に、効率的にＥＣＣブロックのＰＯ部を符号化するシステムであって、
（ａ）新データを第１のバッファに転送する手段と、
（ｂ）上記第１バッファから上記一部のデータセクタの元データと上記新データを読み出して両データのＸＯＲの演算結果を第２のバッファに確保し、更新されないデータセクタについてＸＯＲ演算結果を０とみなし、書換え前後のＥＣＣブロックのソースデータ部のＸＯＲ演算結果を準備する手段と、
（ｃ）書換え前後の上記ＥＣＣブロックのソースデータ部のＸＯＲ演算結果をバイト列方向ごとに上記符号器に送り、上記ソースデータ部の演算結果に対するＰＯ部を確保する手段と、
（ｄ）上記手段（ｃ）で確保されたＰＯ部の演算結果に対して、更新前の上記ＥＣＣブロックのＰＯ部のＸＯＲ演算を行い、更新後の上記ＥＣＣブロックのＰＯ部を生成する手段とを備え、
上記手段（ｃ）は、書換え前後のＥＣＣブロックのソースデータ部のＸＯＲ演算結果のうち更新される上記データセクタに関しては上記第２のバッファから上記ＸＯＲ演算結果を列方向にバイトごとに符号化器に送り、書換え前後のＥＣＣブロックのソースデータ部のＸＯＲ演算結果うち更新されない上記データセクタに関しては０とみなし、複数バイト単位で符号化を行うことを特徴とする、
ＥＣＣブロックのリード・ソロモン符号を符号化するシステム。
【請求項１２】
上記手段（ｄ）でＰＯ部の１バイト行が生成されるごとに、更新後の上記ＥＣＣブロックのソースデータ部の選択された部分と上記ＰＯ部の１バイト行とをインターリーブしてディスク側への書込みを順次行う書込み手段を含むことを特徴とする請求項１１のシステム。
【請求項１３】
ＤＶＤに記録されたデータを書換え可能なＤＶＤ再生システムであって、
上記ＤＶＤを回転させるモータと、
上記ＤＶＤに記録されたデータを光で読み取り、またデータを光で書き込む、光学式ピックアップと、
上記モータ及びピックアップを動作させる、ドライブ手段と、
上記読取りデータを有するＥＣＣブロックの誤りを復号により訂正する復号器と、更新された上記ＥＣＣブロックのリード・ソロモン符号を生成する符号化器とを含む、符号化・復号手段と
上記読取りデータを上記符号化・復号手段へ送信し、上記符号化・復号手段から書き込みデータを受信し、上記読取り又は書込み動作に基づき上記ドライブ手段へサーボ動作指令を発する、ＤＶＤ制御手段とを具備しており、
上記符号化・復号手段は、更に、更新されるＥＣＣブロックのＰＯ部を生成するために使用する第１のバッファと第２のバッファとを具備し、
（ａ）新データを上記第１のバッファに転送する手段と、
（ｂ）上記第１バッファから１部のデータセクタの元データと上記新データを読み出して両データのＸＯＲの演算結果を第２のバッファに確保し、残りのデータセクタについてＸＯＲ演算結果を０とみなし、書換え前後のＥＣＣブロックのソースデータ部のＸＯＲ演算結果を準備する手段と、
（ｃ）書換え前後の上記ＥＣＣブロックのソースデータ部のＸＯＲ演算結果をバイト列方向ごとに上記符号器に送り、上記ソースデータ部の演算結果に対するＰＯ部を確保する手段と、
（ｄ）上記手段（ｃ）で確保されたＰＯ部の演算結果に対して、更新前の上記ＥＣＣブロックのＰＯ部のＸＯＲ演算を行い、更新後の上記ＥＣＣブロックのＰＯ部を生成する手段とを備え、
上記手段（ｃ）は、書換え前後のＥＣＣブロックのソースデータ部のＸＯＲ演算結果のうち更新される上記データセクタに関しては上記第２のバッファから上記ＸＯＲ演算結果を列方向にバイトごとに符号化器に送り、書換え前後のＥＣＣブロックのソースデータ部のＸＯＲ演算結果うち更新されない上記データセクタに関しては０とみなし、複数バイト単位で符号化を行うことを特徴とする、
書換え可能なＤＶＤ再生システム。
【請求項１４】
上記手段（ｄ）でＰＯ部の１バイト行が生成されるごとに、上記更新後のＥＣＣブロックのソースデータ部の選択された部分と上記ＰＯ部の１バイト行とをインターリーブしてディスク側への書込みを行う書込み手段を含むことを特徴とする請求項１３の書換え可能なＤＶＤ再生システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、記憶装置のデータの書込みの際の効率的な符号化方法及びシステムに関し、特にリード・ソロモン符号のような線形符号によって生成されたＥＣＣ符号を有するＥＣＣブロック構造を有するＤＶＤなどの技術分野における効率的なソースデータの符号化（エンコード）に関する発明である。より具体的にはデータセクタ単位で書き込む場合に、リード・ソロモン符号のような線形符号の線形性を用い、更新されるデータセクタのみを考慮してＥＣＣブロック全体の符号化を高速化し、ＤＶＤなどの記憶装置への書込みの効率を高める方法及びシステムに関する発明である。
【０００２】
【従来の技術】
マルチメディアの技術分野では、動画である映像、文字音声などの大容量の情報を提供するのに適する記憶装置が要求される。このマルチメディア関連の技術ニーズに応えるため、記憶装置としてＤＶＤ（例えば、ＤＶＤ−ＲＯＭは片面１層で４．７ＧＢ、ＤＶＤ−ＲＡＭは２．６ＧＢ）が提供されている。ＤＶＤのデータ構造は、大容量のデータを転送できるように図１の右側に示すＥＣＣブロック構造を採用している。ＥＣＣブロック構造には、大きさ２０６４Ｂのデータセクタの１６個分を含む。各データセクタの構造は、図２に示される。ホスト例えばＰＣなどから書き込まれたソースデータは２ＫＢ単位に分けられて、そのおのおのにＩＤの４Ｂ, ＩＥＤ (ＩＤのエラー検出符号）の２Ｂ, ＲＳＶ（リザーブ）の６Ｂ, ＥＤＣ (エラー検出符号）の４Ｂ、合計で１６Ｂが付加され、２０４８＋１６= ２０６４Ｂ = １７２Ｂ×１２行のデータ構造が形成される。
【０００３】
ＤＶＤなどの記憶装置では、ディスクへの直接の書き込みは、１６のデータセクタを一つの固まりとして行われる。従って、エラー訂正符号（ＥＣＣ）の計算は、３２ＫＢ(１６×２ＫＢ）単位で行われる。エラー訂正符号としては、リード・ソロモン符号のような線形符号を用いた積符号が採用される。リード・ソロモン符号を用いた積符号は、データに対して冗長度は約１３％であり、大きな欠陥でもデータのエラーを訂正することが可能である。リード・ソロモン符号を用いた積符号化は、周知であるので、簡単に説明すると、ＥＣＣブロックの積符号化のしかたは、まず縦方向（列方向）のバイト列ごとに符号化を行い、得られた１６ＢのＥＣＣ符号を関連する列の後につけ、そのＥＣＣ符号をＰＯ（Ｐａｒｉｔｙ  ｏｆ  Ｏｕｔｅｒ：外符号）部と呼ぶ。次に、ＥＣＣブロックの横方向（行方向）に対してバイト行ごとに符号化を行い、得られた１０ＢのＥＣＣ符号を関連する行の後につけ、そのＥＣＣ符号をＰＩ（Ｐａｒｉｔｙ  ｏｆ  Ｉｎｎｅｒ：内符号）部と呼ぶ。なお、列方向の符号化と行方向の符号化の順番を逆にしてもその結果は同じである。
【０００４】
ＥＣＣブロックをディスクに書き込むときは、周知のように１つのＥＣＣブロックを１６の物理セクタに変換する。図３に示すように、ＥＣＣブロックをデータセクタの部分及びＰＩ部からなる１２行とＰＯ部の１行とを抜き出し組合せた（図３の＋の印）サブブロックが、１つの物理セクタのベースとなる。ここでＥＣＣブロックの１２行＋１行を組合せ、サブブロック(すなわち物理セクタ)を形成することをインターリーブするという。インターリーブによって得られたサブブロックを２６等分し、頭に２バイト分のシンクコード（ＳＹ）を付加することによって２４１８Ｂの物理セクタが得られる。そして、このようにして得られる物理セクタに必要な変調処理を行ったものを１６回順次ディスクに書込むことによって、３２ＫＢの大きさのＥＣＣブロックの書込みが行われる。
【０００５】
ＨＤＤ、相変化型光ディスク（例えばＰＤ）、ＭＯのような記憶装置にはこのような積符号化されて拘束長が長いＥＣＣブロック構造は、採用されていない。そのためＰＣ側からソースデータを書き込んだとしても、そのまま符号化するかあるいは幾つかに分割して符号化するので、符号化にかかる手間は小さい。しかし、ＤＶＤでは特有の問題が生じる。次にこれについて説明する。
【０００６】
図５を参照して、ＥＣＣブロック構造を採用するＤＶＤなどのディスク記憶装置において、ＥＣＣブロックの１つのデータセクタの２ＫＢデータを書換える場合の従来の書込みシーケンス（１）〜（６）を説明する。
（１）符号化・復号ブロック２０は、ホストから送られた２ＫＢのデータを、第１のバッファ２１に格納する。同時に、ディスク側からこの２ＫＢデータが書き込まれるべきＥＣＣブロックを読取り、第１のバッファ２１に格納する。
（２）読み出したＥＣＣブロックにエラーがあれば、復号器２４によりエラー訂正を行う。
（３）第１のバッファ２１において、ホストからの２ＫＢのデータにより第１のバッファ２１に格納されたＥＣＣブロックの対応するデータセクタが書換えられる。書換えられたＥＣＣブロックを、第２のバッファ２２に転送する。
（４）第２のバッファ２２から変更されたＥＣＣブロックのソースデータを順次符号化器２３に送り、そのＥＣＣブロックのＰＯ部の計算を行う。
（５）ＰＯ部の計算結果を第１のバッファ２１に送ってＰＯ部を書換え、更新された完全なＥＣＣブロックを第１のバッファ２１に格納する。
（６）このＥＣＣブロックをディスク側に書き込む。
なお、実際には、（１）ではディスクから物理セクタのデータが読取られ、第１のバッファ２１でＥＣＣブロックデータに変換され、（６）ではＥＣＣブロックデータが物理セクタデータに変換されてディスクに書込まれる。
【０００７】
この様な従来の書込みシーケンスでは、（４）で列の全バイトを逐一符号化器２３に転送しなけらばならない。（５）で全列についてＰＯ部を計算し、全てのＰＯ部の値を得ないと書込みに入れない。つまり、ＤＶＤではＥＣＣブロック構造を採用している関係上、ＰＣ側から１データセクタ分の２ＫＢのソースデータの書き込みを行う場合でも、３２ＫＢの大きさのＥＣＣブロック全体に関してリード・ソロモン符号を用いたＥＣＣ符号を計算しなおさなければならない。そのため、２ＫＢのデータの書き込みにもかかわらず、ＥＣＣブロックの符号化に長い時間がかかり、書き込み効率が低下する。１つのＥＣＣブロックの読取り後、ディスクが１回転してディスク上の同じＥＣＣブロックの先頭に戻るまでの時間内にＰＯ部の計算処理が終了しない場合は、更にもう１回転するのを待たなければならないといった事態が生じ得る。特にディスク半径が小さいにトラックでは、ＣＬＶ（Ｃｏｎｓｔａｎｔ  Ｌｉｎｅａｒ  Ｖｅｌｏｃｉｔｙ）方式（例えば２倍速の場合、ＤＶＤでは１周するのに１２．５ｍｓ（内周）〜２９．６ｍｓ（外周）の時間がかかる）の場合に、書込みまたは更新性能の低下はかなり大きい。
【０００８】
【発明が解決しようとする課題】
したがって、本発明の目的は、ＥＣＣブロック構造を採用する記憶装置への書込みの性能を高めるために、ＥＣＣブロックの符号化を効率的に行う方法、そのシステム及びその方法を適用した書換え可能ＤＶＤシステムを提供することである。
本発明の他の目的は、リード・ソロモン符号のような線形符号の線形性を利用して、ＥＣＣに関わる処理が完了する前にディスクに書き出せる新しい方法を実現し書き込み時の性能の向上を図ることである。
【０００９】
【課題を解決するための手段】
本発明は、リード・ソロモン符号のような線形符号の線形性を利用することにより、データ書込み時の処理を大幅に効率化できるということを見出したものである。上記ステップ（４）においてＥＣＣブロックの全データ（１７２列）を符号化してＥＣＣのＰＯ部を生成することはしない。実質的に更新された１または複数のデータセクタのみを考慮してＰＯ部の生成を実行する。
【００１０】
本発明は、リード・ソロモン符号のような線形符号によって生成されたＥＣＣ符号ＰＯ部ｑ１を有するＥＣＣブロックＦ１を構成する複数のデータセクタのうち一部のデータセクタのデータｆ１をデータｆ２で更新する際に、更新後のＥＣＣブロックＦ２のＰＯ部ｑ２を効率的に符号化する方法である。この方法は、上記更新前のＥＣＣブロックＦ１と上記更新後のＦ２のソースデータ部のＸＯＲを表すＥＣＣブロックＦ１＋Ｆ２（以下「＋」は、ＸＯＲ演算を意味する。）を想定するステップであって、更新される上記一部のデータセクタのデータは、データｆ１とデータｆ２とのＸＯＲ演算ｆ１＋ｆ２により与えられ、更新されないデータセクタのデータは０とする、ＥＣＣブロックＦ１＋Ｆ２を想定するステップと、更新された上記一部のデータセクタのデータのｆ１＋ｆ２に対してはバイトごとに符号化器で符号化するステップと、更新されない上記データセクタのデータ０に対しては、複数バイトごとに符号化器で符号化するステップとを含む上記ＥＣＣブロックＦ１＋Ｆ２のＰＯ部ｑ１＋ｑ２を得るステップと、上記ＥＣＣブロックＦ１＋Ｆ２のＰＯ部ｑ１＋ｑ２に対して、更新前のＥＣＣブロックＦ１のＰＯ部ｑ１のＸＯＲ演算により、更新後のＥＣＣブロックＦ２のＰＯ部ｑ２を得るステップとを備える更新後のＥＣＣブロックのＰＯ部の符号化方法である。本発明は、さらにこの方法を適用したシステム、及びこの方法を書換え可能ＤＶＤシステムに応用したものでもある。
【００１１】
【発明の実施の形態】
図６は、本発明を適用するＤＶＤ記録再生システムの構成を示す。ディスク１０はドライブ回路１２に接続されたモータ１４により回転し、ディスク１０中に記録されたデータは、光学式ピックアップ１６により読み取られる。また、ドライブ回路１２は、ＤＶＤ制御ブロック１７からの指令で動作する。ピックアップ１６によりディスクから読み取られた信号は、ＤＶＤ制御ブロック１７に入力され、信号読取回路１８で増幅され、必要な変換がされ、符号化・復号ブロック２０へ送られる。ＤＶＤ制御ブロック１７は、ディスク中に記録されたサーボデータに基づいてドライブ回路１２を制御するためのサーボ回路１９を含んでいる。
【００１２】
符号化・復号ブロック２０はホストＰＣに接続され、新たなデータがホストＰＣから送り込まれる。映像データはＡＴＡＰＩインタフェース（ＡＴＡ  パケット・インターフェース）２９を介し、音声データはＤＡＣ（デジタルアナログ・コンバータ）２５を介し、それぞれホストＰＣから符号化・復号ブロック２０に送られる。ディスクから読み取られたデータは、第１のバッファ２１に格納され、復号器２４によりリアルタイムで誤り訂正される。復号器２４は、第１のバッファ２１に格納された読取データのＥＣＣブロックのエラー検出を、ＰＯ部を含むバイト列ごとに行い、正しいデータを生成する。一方、ホストＰＣから送られたデータは、第１のバッファ２１にロードされる。符号化器２３は、バッファ２１に送られたデータを含むＥＣＣブロックの符号化を、バイト列ごとに行いＰＯ部を生成する。本発明の典型的な実施例として、ホストＰＣから１データセクタの２ＫＢのソースデータの書き込みを行うものとする。これは単なる例であり、２以上のデータセクタ分のデータを書き込むことも本発明に含まれる。
【００１３】
本発明は、ＥＣＣブロック構造を採用するＤＶＤなどの記憶装置において、ソースデータが１個分のデータセクタを書換える際に、ＥＣＣ（例えばＰＯ部）の生成におけるリード・ソロモン符号の線形性を利用する。具体的には、リード・ソロモン符号の線形性を用いて、ＰＣ側から書き込まれた２ＫＢのデータセクタのみを考慮してＥＣＣブロックのＰＯ部の全体の符号化を効率的に行う。
【００１４】
図７は、リード・ソロモン符号の線形性を利用して、１つのデータセクタが書換えられた（更新された）ＥＣＣブロックの新しいＰＯ部を得るデータフローを示している。そこでの定義は以下の通りである。
＋        ：ＸＯＲ（排他的論理和）演算
Ｆ１      ：更新前のＥＣＣブロック
Ｆ２      ：更新後のＥＣＣブロック
ｆ１      ：更新前の１つのデータセクタのデータ
ｆ２      ：更新後の１つのデータセクタのデータ
ｑ１      ：更新前のＰＯ部のデータ
ｑ２      ：更新後のＰＯ部のデータ
ｆ１＋ｆ２：更新前後の1つのデータセクタのデータのＸＯＲ演算
ｑ１＋ｑ２：更新前後のＰＯ部のデータのＸＯＲ演算
Ｆ１＋Ｆ２：ｆ１＋ｆ２のＸＯＲ演算後のＥＣＣブロック
ただし、図７は、説明の簡略化のために、ＥＣＣブロック構造（図１）のリード・ソロモン積符号のうちＰＩ部は省略して示す。
【００１５】
更新前のＥＣＣブロックＦ１は、リード・ソロモン符号を用いて既に符号化処理されている。この符号化処理は次のように行われる。すなわち、ＥＣＣブロックＦ１のソースデータからバイト列（１９２行の各々から１バイトをとった１９２バイトの列）を読取り、この１９２Ｂのデータを符号化器２３に送り、所定の符号化処理をすることにより、そのバイト列のＰＯ部の１６Ｂを得る。バイト列の符号化処理を、１７２バイト列の全てについて行うことにより、１６行のＰＯ部の全てが計算され、ＥＣＣブロックＦ１のＰＯ部のｑ１を得る（図７の４０）。ＥＣＣブロックＦ１の選択されたデータセクタのデータｆ１を新しいデータｆ２で書換える場合、従来は、更新されたＥＣＣブロックＦ２を用意し、ＥＣＣブロックＦ２のソースデータの全バイト列について上述の符号化処理をしてＰＯ部のｑ２を求めていた。
【００１６】
本発明は、更新前のＥＣＣブロックＦ１のソースデータと更新後のＥＣＣブロックＦ２のソースデータとのＸＯＲ演算をとり、得られた結果について上述のリード・ソロモン符号化処理をしてＰＯ部を求めると、そのＰＯ部にはｑ１＋ｑ２に相当するデータが得られる（図７の５０）という知見に基づくものである。ｑ１＋ｑ２が得られたならば、ｑ１＋ｑ２とｑ１とのＸＯＲ演算をとることにより（図７の７０）ｑ２を求めることができる（図７の６０）。ＸＯＲ演算は、対応するデータ単位（この例ではバイト）ごとに行われる。
【００１７】
図７の５０は、本発明の処理によって得られる結果を表している。このＥＣＣブロックは、更新された１データセクタについてＸＯＲ演算ｆ１＋ｆ２を有する。データｆ１＋ｆ２は、バイト単位では全てが０とは限らない。一方、ＥＣＣブロックＦ１＋Ｆ２の残りの１５データセクタについては、対応するデータは変化しないので、全て０である。また、このＥＣＣブロックＦ１＋Ｆ２のソースデータ部のバイト列について上述のリード・ソロモン符号化処理を施すと、ＰＯ部にはｑ１＋ｑ２に対応するデータが得られる。図７の５０と６０のＰＯ部どうしを結ぶ点線７０に示すように、ＥＣＣブロックＦ１＋Ｆ２のＰＯ部ｑ１＋ｑ２に対して既知の値ｑ１のＸＯＲ演算を施すことにより、更新後のＥＣＣブロックＦ２のＰＯ部ｑ２を確保できる。このようにＥＣＣブロックＦ１＋Ｆ２のソースデータを符号化処理すると得られるＰＯ部が、ＥＣＣブロックＦ１とＦ２のＰＯ部のｑ１及びｑ２のＸＯＲ演算となることを、リード・ソロモン符号の線形性と呼ぶことにする。
【００１８】
本発明の処理の特徴は、早いタイミングで更新後のＥＣＣブロックの書込みを開始できることである。これは、主として、次の組合せの作用に基づく。１つは、ｑ１＋ｑ２が求められた段階で書込みに入ることができ、すべてのｑ２が求められるまで書込みを遅延させる必要はないことである。すなわち、ｑ１＋ｑ２が求められたならば、（ｑ１＋ｑ２）ＸＯＲ（ｑ１）の演算によりＰＯ部のバイト行ごとにｑ２を順次求め、１バイト行のｑ２が求められるたびに上記のインターリーブにより１データセクタの書込みを行うことができる。第２には、更新されないデータセクタのＸＯＲ演算はすべてゼロであるから、これらのデータセクタについては実際にＸＯＲ演算を行う必要はなく、符号化器２３においてゼロを内部発生させることによりリード・ソロモン符号化処理を効率的に行うことができることである。したがって、ｑ１＋ｑ２を早く求めることができ、書込み開始可能時間を早くすることができる。
【００１９】
次に図６および図８を参照して、本発明の処理を詳細に説明する。第１のバッファ２１はＤＲＡＭからなり、第２のバッファ２３は符号化器２３または復号器２４との間でデータ転送を高速に行うためにＳＲＡＭからなる。図８に示されるように、本発明において第２のバッファ２２は、ＳＲＡＭの２つのバンク２６と２７とから構成される。符号化器２３は、１バイト列の１９２バイトのデータを順次入力することにより１６バイトのＰＯ部を生成し出力する。この１バイト列の符号化の際、符号化器２３への入力データの単位を、バイトまたは複数バイトとすることができる。
【００２０】
次に、この例では、バイト入力モードとワード（２バイト）入力モードとの間で切り換えることができる符号化器２３を採用することを説明する。  図９と図１０のそれぞれは、符号化器２３がバイト（８ビット）入力モードの場合とワード（１６ビット）入力モードの場合の符号化回路を示している。バイト入力符号化回路では、入力を８ビットを単位として１バイト列の１９２Ｂを順次入力する。入力されたバイト列は、順次１６個の乗算器の各々において図に示す各係数ｇ0〜ｇ15と掛け合わされ、リード・ソロモン符号の生成多項式の演算を実行する。そして、１９２Ｂ全ての入力が終了した時点で、１６個の８ビットレジスタにＰＯ部の１６Ｂが生成される。ワード入力符号化回路では、入力を１６ビット(列方向の２バイト）を単位として１バイト列の１９２Ｂを順次入力する。入力されたワード列は、順次８個の乗算／和算器の各々において図に示す各種係数と掛け合わされ、リード・ソロモン符号の生成多項式の演算を実行する。そして、１９２Ｂ全ての入力が終了した時点で、８個の１６ビットレジスタにＰＯ部の１６Ｂ（８×２Ｂ）が生成される。なお、バイト入力符号化回路とワード入力符号化回路は独立に設けてもよくまたは、８ビットレジスタを８個の１６ビットレジスタに内部的に再構成して、共通して使用してもよい。
【００２１】
ＥＣＣブロックの１のデータセクタを更新する際は、先ず、ホストから更新用のデータセクタが第１のバッファ２１に送られた、またディスクからこのデータセクタを含む１６データセクタからなるＥＣＣブロックを第１のバッファ２１に読み出す。
【００２２】
次に、本発明の符号化処理が、ＸＯＲ演算ｆ１＋ｆ２を確保に関して、次のように行われる。
［１］ＥＣＣブロックの書換えられる１データセクタの新しいデータｆ２と元のデータｆ１については、ＸＯＲ演算ｆ１＋ｆ２を、以下の手順により第２のバッファ２２に確保する。
（ａ）第１のバッファ２１に格納されている書換えられる１のデータセクタの元のデータｆ１の１２バイト行をバンク２７に送る。
（ｂ）第１のバッファ２１に格納されている新しいデータｆ２の１２バイト行を第２のバッファ２２に送り、同時にバンク２７に格納されている元のデータｆ１の１２バイト行を読む。
（ｃ）双方のデータのＸＯＲ演算をＭＰＵ（図示せず）で行い、その結果ｆ１＋ｆ２をバンク２６に確保する。
［２］バンク２６のデータを符号化する場合、符号化器２３はバイト入力モードにセットされる。そして、バンク２６から１つのバイト行の１バイトを取出し、そのバイトを符号化器２３のバイト入力とする（図９）。
［３］ＥＣＣブロックＦ１＋Ｆ２の残りの１５データセクタについては、データの変更はないため、１８０バイト行の全てについて０である。このデータセクタ部の１８０バイト行に関しては、［１］（ａ）〜（ｃ）の処理をする必要はない。この場合符号化器２３の入力モードを、［２］のバイト入力からワード入力に切り替え、その入力のワードデータを０と見なして符号化器２３内でオールゼロのデータを発生し、符号化をワード単位（即ち、列方向の２バイト）で行う（図１０の２バイト入力Ｃu、Ｃd)。符号化をワード単位で処理できるのはオールゼロデータを内部発生できるからである。ＳＲＡＭであるバンク２６はアドレス方式の制限のため、列方向の複数バイトを同時的にアクセスすることはできず、したがってバンク２６の更新されるデータセクタはバイト入力モードで符号化される必要がある。
［４］処理［２］と［３］を全バイト列に行うことにより、ＥＣＣブロックＦ１＋Ｆ２のＰＯ部は、更新前ＥＣＣブロックＦ１のＰＯ部ｑ１と更新後ＥＣＣブロックＦ２のＰＯ部ｑ２のＸＯＲ演算ｑ１＋ｑ２として与えられる。このＰＯ部ｑ１＋ｑ２の１２バイト行を、第１のバッファ２１に確保する。
［５］ＥＣＣブロックＦ１＋Ｆ２のＰＯ部のＸＯＲ演算ｑ１＋ｑ２の１バイト行の１７２Ｂに対して、図７の点線のように更新前ＥＣＣブロックＦ１のＰＯ部ｑ１のＸＯＲ演算を行うと、リード・ソロモン符号の線形性により、データｆ２で書換えられたＥＣＣブロックＦ２の真のＰＯ部ｑ２の１行が得られる。図７の点線の処理を、ＰＯ部の１６バイト行全てに順次に行うことにより、データｆ２で書換えられたＥＣＣブロックＦ２のＰＯ部ｑ２の全て（１６バイト行）が確保される。更新後ＥＣＣブロックＦ２の真のＰＯ部ｑ２の１バイト行が得られた段階で、そのＥＣＣブロックのソースデータの１２バイト行とＰＯ部の１バイト行とを組合せて順次インターリーブして、ディスク側に送ることができる。
【００２３】
本発明の符号化方法では、処理［３］では符号化器２３への入力を０とみなせる部分では、外からのデータ転送スピードに依存しない。符号化器２３への入力を０とみなした部分は、実際には符号化器２３への入力を行わず、ワード単位で符号化を行う。この符号化方法では、符号化器２３をバイト入力からワード入力に変更することによって、実質的に符号化器２３の計算速度を上げることができる。従って、ＥＣＣブロックの１６データセクタのバイト列方向の１９２バイト全てに対してバイト毎に符号化する従来のものに比べて、ＰＯ部の１バイト行の確保を早くできる有利な効果を有する。図３に示すＥＣＣブロックのソースデータの１２バイト行とＰＯ部の１バイト行とを組合せてインターリーブを早期に行い、ディスク側の書込み性能が向上する。なお、この例では、入力を０とみなせる部分をワード（２バイト）単位で処理するものとして説明したが、ワードより大きい単位で処理することにより、一層ＥＣＣブロックの符号化の計算速度を高めることができる。また、符号化器２３は、複数のバイト列を並列して符号化できるように、同じものを複数個設けることもできる。
【００２４】
【実施例】
実際にかかる処理時間は、ＤＶＤ−ＲＡＭのオプティカル・ディスク・コントローラのデータフロー・アーキテクチャで使用される値にもとづいて、上記の処理[1]〜［５］について表１のように計算される（表１）。
0003896206.tif 000002
［１］では、ＥＣＣブロックの更新される１データセクタの元データｆ１を、第１のバッファー２１（ＤＲＡＭ）から第２のバッファー２２（ＳＲＡＭ）のバンク２７へ転送する時間は、ＤＲＡＭバスサイクルを１．３４μＳとして、そのサイクル中で符号化のために３２Ｂ転送（１Ｂ当たり１／３２サイクルを占める）すると、１２×１７２×１／３２［サイクル／Ｂ］×１．３４＝８６．４μＳとなる。ホストから第１のバッファ２１に送られた新データｆ２を読み出し、第２のバッファー２２のバンク２７から読み出したデータｆ１とＸＯＲ演算を行いながら、第２のバッファー２２のバンク２６へ転送する時間も同様に、ＤＲＡＭバスサイクルを１．３４μＳとし、そのサイクル中で符号化のために３２Ｂ転送（１Ｂ当たり１／３２サイクルを占める）すると、１２×１７２×１／３２［サイクル／Ｂ］×１．３４＝８６．４μＳとなる。表１の［１］は、両者の合計時間を示している。
［２］は、第２のバッファー２２（ＳＲＡＭ）へのアクセスタイムを５０ｎＳとした場合、第２のバッファー（バンク２６）の１２バイト行分のデータを１アクセスで１Ｂを読み出して、バイト入力符号化器２３に転送する時間を示している。
［３］は、符号化器２３の動作クロックを５０ｎＳとした場合、更新されなかったデータ１８０Ｂをゼロと見なし、そのオール０に対して符号化器２３をバイト入力からワード入力（２バイト入力）に切り替え、内部的に符号化する時間を示している。
［２］と［３］の処理により、１のデータセクタｆ１＋ｆ２を含むＥＣＣブロックＦ１＋Ｆ２に対してのＰＯ部の計算が終了し、ｑ１＋ｑ２が確保される。ＰＯ部ｑ１＋ｑ２に対して、第１のバッファー２１にある元ＰＯ部ｑ１とのＸＯＲ演算を行い、第１のバッファー２１に書き戻すことができるので、［３］の処理までで実質的に１７２バイト列のＰＯ部ｑ２の準備が完了したものと見なすことができる。
［４］は、ＭＰＵが符号化器２３の出力からＰＯ部ｑ１＋ｑ２の１バイト列の１６Ｂをワーキングエリアに読み出す時間を１．５μＳとした場合、全１７２バイト列のＰＯ部を読み出す時間を示している。
［５］は、ＭＰＵが元のＥＣＣブロックＦ１のＰＯ部ｑ１を第１のバッファー２１（ＤＲＡＭ）からワーキングエリアに読み出し、データｆ１＋ｆ２を含むＥＣＣブロックＦ１＋Ｆ２のＰＯ部ｑ１＋ｑ２とＸＯＲ演算を行い、真のＰＯ部ｑ２（図７の点線７０の処理）を第１のバッファ２１に書き戻す時間の合計を示している。この計算において、ＤＲＡＭバスサイクルを０．８４μＳ（処理［１］のＤＲＡＭバスサイクル１．３４μＳに比べて小さいのは、ＭＰＵは処理［５］ではＥＣＣブロックのソースデータを第２のバッファ２２（ＳＲＡＭ）に転送が不要なためその分、バスサイクルを早くできるからである）として、ＭＰＵはそのサイクル中で２Ｂ単位で（１Ｂ当たり１／２サイクルを占める）読み出しまたは書込みできるとしている。真のＰＯ部ｑ２は、バイト行ごとに生成され、最終的に１６バイト行全てが確保される。この１バイト行１７２ＢのＰＯ部を第１のバッファ２１のＤＲＡＭ格納し、ソースデータ部の１２バイト行とを組合せて図３のようにインターリーブする。
【００２５】
図４に示すように、１ＥＣＣブロックを読み取ってから、更新されたＥＣＣブロックＦ２のＰＯ部の計算終了時までに要する時間は、ＤＲＡＭバスサイクルなどの条件を上記計算と同じにした場合に、従来の符号化方法においては約４５０１μＳであった。これに対して、本発明の符号化方法の実施例の処理［１］〜［５］の時間合計は３２３１μＳであり、従来の方法と比べて一見大きな差が無い様にみえる。しかしながら、本発明の符号化方法では、書き込みをスタートできるタイミングが速いことから本発明の方が有利である。なぜなら本発明では［４］の処理が終わった時点で既に全てのＥＣＣのＰＯ部ｑ１＋ｑ２の計算が終了していて転送をスタートすることができるからである。［４］の処理において与えられたＥＣＣブロックＦ１＋Ｆ２のＰＯ部ｑ１＋ｑ２の１バイト行に対して、［５］の処理を介して更新前ＥＣＣブロックＦ１のＰＯ部ｑ１のバイト行のＸＯＲ演算を行うと、更新後ＥＣＣブロックＦ２のＰＯ部ｑ２の１バイト行を得る。このＰＯ部ｑ２の１バイト行が得られた時点で、それとソースデータの１２バイト行とをインターリーブして（図３を参照）ディスク側に送ることが可能となる。具体的に、本発明の方法のＥＣＣブロックの書き込み開始可能時間は、ＥＣＣブロックの読取り後（ＰＯ部の処理を開始してから）約９１９μＳ（［１］〜［４］の処理時間の合計）である。従来の方法では、ＰＯ部の１６バイト行全てがそろう４５０１μＳを経ないと、更新後のＥＣＣブロックの書込みを開始できないのと比べて本発明の方法は書込み性能が向上している。
【００２６】
ＣＬＶ（Ｃｏｎｓｔａｎｔ  Ｌｉｎｅａｒ  Ｖｅｌｏｃｉｔｙ）方式の２倍速の場合のＤＶＤ技術では、ディスク半径が小さくなる程回転速度だ増加する（１周するのに２９．６ｍｓ（外周）〜１２．５ｍｓ（内周）の時間がかかる）。そのため、ディスクの内側に行くほど、更新時間に使用できる時間が短くなる。トラックの半径が臨界半径、すなわち、ディスクが一回転しＥＣＣブロックの先頭に再び戻るまでの時間内に所要の更新処理を完了して書込み可能状態に入ることができるような最小半径より小さくなると、ディスクが１回転する間に更新処理を完了できず、ディスクがさらに１回転するのを待たなければならなくなる。図４の外側のトラックは、従来の方法における臨界半径を示している。本発明の場合、ＰＯ部の準備に要する９１９μＳの後に早いタイミングで書込みを開始できるので、図４の内側のトラックで示されるように、臨界半径を減少させることができる。従来の方法を用いて内側のトラックのＥＣＣブロックを書換える場合、書込み可能になるのは、ＥＣＣブロックに入ってからであり、もう１回転するのを待たなければならない。
【００２７】
本発明の場合に、データセクタの更新によるＥＣＣブロックの書込みによる周回遅れの生ずる半径は、以下の計算によりＣＬＶ方式において相対的に１６％減らすことができる。本発明では、従来のＰＯ部の処理時間４５０１μｓから、本発明の書込みの開始時間（［１］〜［４］）９１９μｓを差し引くことにより、これまでに比べて約３．５８ｍｓ速く書き込みを実行できることになる。インターリーブすることができる時間が早くなったことにより、一周遅れなしに書き込みができる半径領域は、全半径に対して
３．５８ｍｓ／（２９．６ｍｓ−１２．５ｍｓ)＝約２１％
増大することになる。
実施例はリード・ソロモン符号を用いたＥＣＣブロックに関して説明されたが、本発明は同様の線形性を有する他の線形符号、例えば、ハミング符号、ＢＨＣ符号、ファイア符号を用いたＥＣＣブロックにも適用可能である。
【００２８】
【発明の効果】
本発明は、ＥＣＣブロックを有する記憶装置などにおいて、リード・ソロモン符号のような線形符号の線形性を用いてＥＣＣに関わる処理が完了する前にディスクに書き出せる新しい符号化の処理方法を実現し書き込み時の性能の向上を図ることができる。
【図面の簡単な説明】
【図１】ＤＶＤで使用するＥＣＣブロックの構造を示す図である。
【図２】ＤＶＤで使用するデータセクタの構造を示す図である。
【図３】ＥＣＣブロックをインターリーブして与えられた物理セクタの構造を示す図である。
【図４】ＣＬＶ方式のディスク上のＥＣＣブロックの書込み開始可能時間と、従来の方法に比べて本発明の方法が、ディスクの１回転でＥＣＣブロックを書込み開始可能となる半径が減少すること、を示す図である。
【図５】ＥＣＣブロックの書換える流れを、図６の構成要素の１つの符号・復号化ブロック２０で示した図である。
【図６】本発明の符号化方法に適用した書換え可能なＤＶＤ記録再生システムの構成を示す図である。
【図７】リード・ソロモン符号の線形性を用いた本発明の符号化方法の処理手順を示す図である。
【図８】第２のバッファを構成する２つのバンクを利用して、更新されるデータセクタの元データと新データとのＸＯＲ演算結果を確保する処理手順を示し図である。
【図９】符号化回路２３がバイト入力モードの場合のバイト入力符号化回路を示す。
【図１０】符号化回路２３がワード入力モードの場合のバイト入力符号化回路を示す。
【符号の説明】
１０        デジタルビデオ・ディスク
１２        ドライブ回路
１４        モータ
１６        ピックアップ
１７        ＤＶＤ制御ブロック
１８        信号読取回路
１９        サーボ回路
２０        符号化・復号ブロック
２１        第１のバッファ
２２        第２のバッファ
２３        符号化器
２４        復号器
２５        デジタル・アナログ・コンバータ（ＤＡＣ）
２６        バンク１
２７        バンク２
２９        ＡＴＡＰＩインタフェース
【図１】
0003896206.tif 000003
【図２】
0003896206.tif 000004
【図３】
0003896206.tif 000005
【図４】
0003896206.tif 000006
【図５】
0003896206.tif 000007
【図６】
0003896206.tif 000008
【図７】
0003896206.tif 000009
【図８】
0003896206.tif 000010
【図９】
0003896206.tif 000011
【図１０】
0003896206.tif 000012