☆ECCブロック構造体と2種のパリティデータ

DVDに書き込まれる際のデータはECC(Error Collection Code)という単位のブロック構造を持っており、
その名の通り強力なエラー訂正機能を備えています。
ECCブロックは横方向に182バイト、縦方向に208バイトの2次元の構造体です。
一行に182バイトのデータが入り、その行が208個集まって1つのブロックになっています。


さて、この行のことをROWと呼ぶことにします。
208本あるROWの一つを取り出してみましょう。

本来は182マスある筈なんですが、画面に入りきらなくなるのでここではかなり縮めてあります。
1本のROWには172バイトのデータが記録されていて、残りの10バイトはパリティデータになっています。
このROWに付加されているパリティのことを
PI(Parity Inner)と呼び、DVDに記録されたデータは、
読み出しの際、まずこのPIにより1回目のエラー検出・補正作業が行われます。
ここでの整合にエラーが出たものをPIE(PI Error)と呼び、
ここでの訂正作業で修復ができなかったものをPIF(PI Falure)と呼びます。

※はて、パリティデータとは何ぞや?
解りやすく言うと、パリティっていうのはデータの整合性をチェックしてエラーを検出する機能です。
例えば、8個の数字が入る箱と、7個の数を用意してみます。

7 1 8 6 4 5 8

さて、これをメールでB君の家へ送りました。
しかし、転送中のエラーで数字の一部がおかしくなってしまいました。

7 1 8 4 4 5 8

これではB君に間違った数字が伝わってしまいます。
これを防ぐのがパリティデータです。
例えば、8個目の空いている領域に、左の七つの数字を足した合計の1の位の数を入れてみます。
7+1+8+6+4+5+8=39

7 1 8 6 4 5 8 9

で、同じように転送エラーでデータが壊れたとしましょう。

7 1 8 4 4 5 8 9

さて、ここで左の7つの数を足してみましょう。
7+1+8+4+4+5+8=3
7
おや、1の位の数が7ですね。これを一番右の数9と照合すると、合いません。
従って、このデータは壊れていると判断されるわけです。


さて、このROWが208本集まってできているのがECCブロックなわけですが、
上の図を見ると下のほうのROWはなんか色が変わってますね。
後ろから16本のROWは
PO(Parity Outer)と呼ばれ、ROWそのものがまるごとパリティになってます。
これによって、PIで修復が行えなかったエラーを今度は縦方向に修復します。
ここでも修復のできなかったエラーはPOF(PO Falure)となり、これが発生するとデータは読み出せません。


このデジタル構築された2次元のエラー訂正機構により、DVDの規格は超高速の読み出しにも拘らず
高い信頼性を得ているわけです。