PCIe 6.0の誤り訂正 続き

前回のnote

において、$${GF(1024)}$$の原始元から作るBCH符号で、最大16ビットのパリティで8誤り訂正する能力を持つものがあるか気になった。結論から言うと無理である。次のように証明できる。

t誤り訂正をするには、符号間最小距離(ハミング距離で)が2t+1以上なければならない。そして、符号間最小距離は生成多項式の連続根よりは大きいことが証明されている。BCH符号の選定では、符号間最小距離を設計距離として設定し、その大きさの連続根を持つ生成多項式を選ぶわけである。

したがって8誤り訂正を可能にするなら、16個以上の連続根を持つ生成多項式の符号としなければならない。根を16以上持つのだから次数は16以上でないといけない。一方で前回のnoteにあるようにPCIe 6.0のFLITにある符号語はたかだか16ビットのパリティを持つ。パリティとは生成多項式の次数に等しい。すなわち、生成多項式の次数は16でないといけないわけである。

ここでそうした生成多項式の根は連続根であるから、$${\alpha^i,\alpha^{i+1},\cdots\alpha^{i+15}}$$とおける。$${\alpha^i}$$がある最小多項式の根ならば$${\alpha^{2i}}$$も同じ最小多項式の根である。したがって、$${\alpha^{2i},\alpha^{2i+2},\cdots\alpha^{2i+30}}$$もまた生成多項式の根、つまり、集合としては$${\alpha^i,\alpha^{i+1},\cdots\alpha^{i+15}}$$と$${\alpha^{2i},\alpha^{2i+2},\cdots\alpha^{2i+30}}$$は等しくなる。
しかし$${\alpha^{2i},\alpha^{2i+2},\cdots\alpha^{2i+30}}$$は明らかに連続根ではなく飛び飛びになっており、矛盾している。したがって、このような生成多項式は持てない。

以上、前回のnoteの答えは、これが可能なBCH符号は存在しないとなる。おそらくPCI 6.0はリードソロモン符号を使っているのであろう。


いいなと思ったら応援しよう!