(57)【要約】二部グラフによる表示が可能である低密度パリティ検査（ＬＤＰＣ）符号を使用してデータを符号化するための新規の装置及び方法が提供されている。データを符号化するために、複数の低い次数の変数ノードの累積チェインが生成されることができる。累積チェインは、そのとき、ループを二回形成するために閉じられることができ、なお一回は、低い次数の変数ノードを使用し、また一回は、低い次数の変数ノードよりも高い次数の変数ノードを使用しており、より高い次数の変数ノードは、ノンループクロージングエッジを備えている。一実施形態において、複数の低い次数の変数ノードは、各エッジ上で同じ置換を有することができる。
2010521128.tif 000002
【特許請求の範囲】
【請求項１】
二部グラフによる表示が可能である低密度パリティ検査（ＬＤＰＣ）符号を使用してデータを符号化するための方法であって、前記方法は、
複数の低い次数の変数ノードの累積チェインを生成することと；
ループを二回形成するために前記累積チェインを閉じることと、なお、一回は、低い次数の変数ノードを使用し、一回は、前記の低い次数の変数ノードよりも高い次数の変数ノードを使用しており、前記のより高い次数の変数ノードは、ノンループクロージングエッジを備えている；
を備えている、方法。
【請求項２】
前記複数の低い次数の変数ノードは、各エッジ上で同じ置換を有する、請求項１に記載の方法。
【請求項３】
前記複数の低い次数の変数ノードは、複数のコア次数２の変数ノードを備えており、
前記のより高い次数の変数ノードは、コア次数３の変数ノードを備えており、
ループクロージングの低い次数の変数ノードは、ループクロージングのコア次数２の変数ノードを備えている、請求項１に記載の方法。
【請求項４】
前記累積チェインの複数の順序変更された複製、前記ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及び前記のループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用すること、をさらに備えている請求項１に記載の方法。
【請求項５】
前記ループクロージングの低い次数の変数ノードの前記複数の順序変更された複製は、ｎ−３ ０ビット数Ａ及びＡ＋Ｃ−１ ｍｏｄ２ｎによるループクロージングの低い次数の置換を備えており、ただし２ｎは、最大のリフティングサイズであり、Ｃはまたｎ−３ ０ビット数である、請求項４に記載の方法。
【請求項６】
前記のループクロージングのより高い次数の変数ノードの前記複数の順序変更された複製の、複数の順序変更されたノンループクロージングエッジは、ｎ−３ ０ビット数Ｂ及びＢ＋Ｃ−１ ｍｏｄ ２ｎによるノンループクロージング置換を備えており、ただし、Ｃは、ｎ−３ ０ビット数であり、また基本グラフにおいては、前記のＢ＋Ｃ−１置換は、数字Ａによる置換を有する前記ループクロージングの低い次数の変数ノード上の前記エッジと同じ制約ノードに接続されたエッジに関連づけられている、請求項５に記載の方法。
【請求項７】
前記のより高い次数の変数ノードの前記ノンループクロージングエッジ上の置換は０である、請求項１に記載の方法。
【請求項８】
巡回リフトされた低密度パリティ検査（ＬＤＰＣ）符号を使用すること、をさらに備えており、いくつかの基本変数ノードについては、前記のリフトされた変数ノードの半分は、情報ノードであり、半分がパリティノードである、請求項６に記載の方法。
【請求項９】
前記ＬＤＰＣ符号の基本グラフの構造は、さらなる次数２の変数ノードを備えた基本符号化構造Ａを有しており、前記さらなる次数２の変数ノードは、構造Ａの前記累積チェインの前記ループを閉じるループクロージングの次数２の変数ノードを備えている、請求項８に記載の方法。
【請求項１０】
リフトされたループクロージングの次数２の変数ノードのほかのすべてのリフトされたノードは、それらのそれぞれの基本ノードに応じるパリティノードあるいは情報ノードのいずれかである、請求項９に記載の方法。
【請求項１１】
前記ループクロージングのコア次数２の変数ノードは、置換Ｘ及びＸ＋Ｃ−１モジュローＺを有しており、ただし、Ｃは、ｎ−３ ０ビット数である、請求項３に記載の方法。
【請求項１２】
Ｃは０である、請求項１１に記載の方法。
【請求項１３】
前記のより高い次数の変数ノードのループクロージングエッジは、リフティング置換Ｙ及びＹ＋Ｃ−１モジュローＺを関連づけている、請求項１に記載の方法。
【請求項１４】
置換Ｘで前記エッジ上の前記のループクロージングの次数２の変数ノードに取り付けられている前記制約ノードは、置換Ｙ＋Ｃ−１で前記のより高い次数の変数ノードに接続する、請求項９に記載の方法
【請求項１５】
前記基本グラフの構造が２つのうちの１つの要因によって拡張され、前記リフティングサイズは、前記基本グラフへと前記のリフティングからビットを移動させることによって２つのうちの１つの要因により減らさせられるとき、そのときには、結果として生じる符号化構造は、識別情報を備えたあるいは識別情報なしの、リフトされた符号化構造Ａである、請求項９に記載の方法。
【請求項１６】
コア次数３の符号化ノードのノンループクロージングエッジ上でノンループクロージングエッジ置換を使用することと、ただし、前記のノンループクロージングエッジ置換は０である；
前記ループに関係しているコア次数２の変数ノードの前記のエッジ上で、すべての他の置換のために使用することと、なお、その値は、０あるいは−１ｍｏｄ２ｎである；
請求項１に記載の方法。
【請求項１７】
二部グラフによる表示が可能である低密度パリティ検査（ＬＤＰＣ）符号を使用してデータを符号化するための装置であって、そのデバイスは、
前記の符号化されたデータを保存するためのメモリデバイスと、
制御モジュールと、
前記メモリデバイスと前記制御モジュールとの間で結合されたプロセッシング回路と、
を備えており、
前記プロセッシング回路は、
複数の低い次数の変数ノードの累積チェインを生成するように、
ループを二回形成するために前記累積チェインを閉じるように、なお、一回は、低い次数の変数ノードを使用し、一回は、前記低い次数の変数ノードよりも高い次数の変数ノードを使用しており、前記のより高い次数の変数ノードは、ノンループクロージングエッジを備えている、
装置。
【請求項１８】
前記複数の低い次数の変数ノードは、各エッジ上で、同じ置換を有する、請求項１７に記載の装置。
【請求項１９】
前記複数の低い次数の変数ノードは、複数のコア次数２の変数ノードを備えており、
前記のより高い次数の変数ノードは、コア次数３の変数ノードを備えており、
ループクロージングの低い次数の変数ノードは、ループクロージングのコア次数２の変数ノードを備えている、請求項１７に記載の装置。
【請求項２０】
前記プロセッシング回路は、前記累積チェインの複数の順序変更された複製、前記ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及び前記のループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用するようにさらに構成されている、請求項１７に記載の装置。
【請求項２１】
前記ループクロージングの低い次数の変数ノードの前記複数の順序変更された複製は、ｎ−３ ０ビット数Ａ及びＡ＋Ｃ−１ ｍｏｄ２ｎによるループクロージングで低い次数の置換を備えており、ただし２ｎは、最大リフティングサイズであり、Ｃはまた、ｎ−３ ０ビット数である、請求項２０に記載の装置。
【請求項２２】
前記のループクロージングのより高い次数の変数ノードの前記複数の順序変更された複製の、複数の順序変更されたノンループクロージングエッジは、ｎ−３ ０ビット数Ｂ及びＢ＋Ｃ−１ ｍｏｄ２ｎによるノンループクロージング置換を備えており、Ｃは、ｎ−３ ０ビット数であり、基本グラフにおいては、前記Ｂ＋Ｃ−1置換は、数字Ａによる置換を有する前記ループクロージングの低い次数の変数ノード上で前記エッジとして同じ制約ノードに接続されるエッジに関連づけられている、請求項２１に記載の装置。
【請求項２３】
前記プロセッシング回路は、巡回リフトされた低密度パリティ検査（ＬＤＰＣ）符号を使用するようにさらに構成されており、いくつかの基本変数ノードについては、前記のリフトされた変数ノードの半分は情報ノードで、半分はパリティノードである、請求項１７に記載の装置。
【請求項２４】
前記ＬＤＰＣ符号の基本グラフの構造は、さらなる次数２の変数ノードを備えた基本符号化構造ベースＡを有しており、前記さらなる次数２の変数ノードは、構造Ａの前記累積チェインの前記ループを閉じるループクロージングの次数２の変数ノードを備えている、請求項２３に記載の装置。
【請求項２５】
リフトされたループクロージングの次数２の変数ノードのほかのすべてのリフトされたノードは、それらのそれぞれの基本ノードに応答するパリティノードあるいは情報ノードのいずれかである、請求項２４に記載の装置。
【請求項２６】
二部グラフによる表示が可能である低密度パリティ検査（ＬＤＰＣ）符号を使用してデータを符号化するための装置であって、そのデバイスは、
複数の低次変数ノードの累積チェインを生成するための手段と、
ループを二回形成するために前記累積チェインを閉じるための手段と、なお、一回は、低い次数の変数ノードを使用し、一回は、前記低い次数の変数ノードよりも高い次数の変数ノードを使用しており、前記のより高い次数の変数ノードは、ノンループクロージングエッジを備えている、
装置。
【請求項２７】
前記複数の低い次数の変数ノードは、各エッジ上で同じ置換を有する、請求項２６に記載の装置。
【請求項２８】
前記複数の低い次数の変数ノードは、複数のコア次数２の変数ノードを備えており、
前記のより高い次数の変数ノードは、コア次数３の変数ノードを備えており、
ループクロージングの低い次数の変数ノードは、ループクロージングのコア次数２の変数ノードを備えている、請求項２６に記載の装置。
【請求項２９】
前記累積チェインの複数の順序変更された複製、前記ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及び前記のループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用するための手段、をさらに備えている請求項２６に記載の装置。
【請求項３０】
前記ループクロージングの低い次数の変数ノードの前記複数の順序変更された複製は、ｎ−３ ０ビット数Ａ及びＡ＋Ｃ−１ ｍｏｄ ２ｎによるループクロージングで低い次数の置換を備えており、ただし、２ｎは、最大のリフティングサイズであり、Ｃはまたｎ−３ ０ビット数である、請求項２９に記載の装置。
【請求項３１】
前記のループクロージングのより高い次数の変数ノードの前記複数の順序変更された複製の、複数の順序変更されたノンループクロージングエッジは、ｎ−３ ０ビット数Ｂ及びＢ＋Ｃ−１ ｍｏｄ２ｎによるノンループクロージング置換を備えており、ただし、Ｃはｎ−３ ０ビット数であり、また、基本グラフにおいては、前記Ｂ＋Ｃ−１置換は、数字Ａによる置換を有する前記ループクロージングの低い次数の変数ノード上で前記エッジと同じ制約ノードに接続されたエッジに関連づけられている、請求項３０に記載の装置。
【請求項３２】
プロセッサ可読メディアであって、プロセッサによって実行されるときに、前記プロセッサに、
複数の低い次数の変数ノードの累積チェインを生成させ；
ループを二回形成するために前記累積チェインを閉じさせる、なお、一回は、低い次数の変数ノードを使用し、一回は、前記低い次数の変数ノードよりも高い次数の変数ノードを使用しており、前記のより高い次数の変数ノードは、ノンループクロージングエッジを備えている；
二部グラフによる表示が可能である低密度パリティ検査（ＬＤＰＣ）符号を使用してデータを符号化することを達成するための、エンコーダ上で動作可能な１つまたは複数の命令、
を有する、プロセッサ可読メディア。
【請求項３３】
前記複数の低い次数の変数ノードは、各エッジ上で同じ置換を有する、請求項３２に記載のプロセッサ可読メディア。
【請求項３４】
前記複数の低い次数の変数ノードは、複数のコア次数２の変数ノードを備えており、
前記のより高い次数の変数ノードは、コア次数３の変数ノードを備えており、
前記ループクロージングの低い次数の変数ノードは、ループクロージングのコア次数２の変数ノードを備えている、請求項３２に記載のプロセッサ可読メディア。
【請求項３５】
プロセッサによって実行されるときに、前記プロセッサに、
前記累積チェインの複数の順序変更された複製、前記ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及び前記のループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用させる、
１つまたは複数の命令、
をさらに有する、請求項３２に記載のプロセッサ可読メディア。
【請求項３６】
前記ループクロージングの低い次数の変数ノードの前記複数の順序変更された複製は、ｎ−３ ０ビット数 Ａ及びＡ＋Ｃ−１ ｍｏｄ２ｎによるループクロージングの低い次数の置換を備えており、ただし、２ｎは、最大のリフティングサイズであり、Ｃはまたｎ−３ ０ビット数である、請求項３５に記載のプロセッサ可読メディア。
【請求項３７】
前記のループクロージングのより高い次数の変数ノードの前記複数の順序変更された複製の、複数の順序変更されたノンループクロージングエッジは、ｎ−３ ０ビット数 B 及びＢ＋Ｃ−１ ｍｏｄ ２ｎによるノンループクロージング置換を備えており、ただし、Ｃは、ｎ−３ ０ビット数であり、また基本グラフにおいて、前記Ｂ＋Ｃ−１の置換は、数字Ａによる置換を有する前記ループクロージングの低い次数の変数ノード上の前記エッジと同じ制約ノードに接続されたエッジに関連づけられている、請求項３６に記載のプロセッサ可読メディア。
【請求項３８】
複数の低い次数の変数ノードの累積チェインを生成することと；
ループを二回形成するために前記累積チェインを閉じることと、なお、一回は、低い次数の変数ノードを使用し、一回は、前記低い次数の変数ノードよりも高い次数の変数ノードを使用しており、前記のより高い次数の変数ノードは、ノンループクロージングエッジを備えている；
を達成するためにファンクションを実行するように構成されたプロセッシング回路、
を備えているプロセッサ。
【請求項３９】
前記複数の低い次数の変数ノードは、各エッジ上で同じ置換を有する、請求項３８に記載のプロセッサ。
【請求項４０】
前記複数の低い次数の変数ノードは、複数のコア次数２の変数ノードを備えており、
前記のより高い次数の変数ノードは、コア次数３の変数ノードを備えており、
前記ループクロージングの低い次数の変数ノードは、ループクロージングのコア次数２の変数ノードを備えている、請求項３８に記載のプロセッサ。
【請求項４１】
前記プロセッシング回路は、前記累積チェインの複数の順序変更された複製、前記ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及び前記のループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用するようにさらに構成されている、請求項３８に記載のプロセッサ。
【発明の詳細な説明】
【背景】
【０００１】
（米国特許法第１１９条の下の優先権主張）
この特許出願は、ここでの譲受人に譲渡され、ここにおいて参照することによりここに明示的に組み込まれて、２００７年３月９日に出願された「ＬＤＰＣ符号を符号化し、復号するための方法及び装置(Methods and Apparatus for Encoding and Decoding ＬＤＰＣ codes)」と題された米国仮特許出願番号６０／８９４，１８３号の優先権を主張する。
【０００２】
（分野）
本願は、例えば低密度パリティ検査(low density parity check)（ＬＤＰＣ）符号のようなパリティ検査符号の使用を通じて、バイナリデータにおける誤りを検出するために及び／または訂正するために、データを符号化あるいは復号するための方法及び装置を対象としている。
【０００３】
（背景）
誤り訂正符号(error correcting codes)は、通信及びデータストレージのシステムにおいてユビキタスである。近年では、かなりの関心度が、低密度パリティ検査（ＬＤＰＣ）符号として知られる符号の部類において、増してきた。
【０００４】
ＬＤＰＣ符号は、しばしばＴａｎｎｅｒグラフと呼ばれる二部グラフ(bipartite graph)によって表示されており、そこにおいては、１セットのノードである、変数ノード(variable nodes)は、コードワードのビットに対応しており、他のセットのノードで、ときどきチェックノード(check nodes)と呼ばれる制約ノード(constraint nodes)は、符号を定義する１セットのパリティ検査制約に対応している。グラフにおけるエッジ(edges)は、変数ノードを制約ノードに接続する。変数ノードと制約ノードは、グラフにおけるエッジによって接続される場合には、隣接している(neighbours)といえる。簡略化のために、１ペアのノードは、多くても１つのエッジ(at most one edge)によって接続されているということが一般に仮定される。
【０００５】
各制約ノードについて、制約に隣接しているビット（変数ノードとの関連を介している）は合計すると、０モジュロー２(zero modulo two)になる、すなわちそれらは偶数のものを備えている、場合に及び場合にのみ、変数ノードを備えた、１対１で関連づけられたビットシーケンス(bit sequence associated one-to-one)は、符号のコードワードである。
【０００６】
いくつかのケースにおいて、コードワードは、パンクチュアリングされる(punctured)ことができる。このことは、コードワードからあるビットを取り除くことあるいはパンクチュアリング(puncturing)する動作を指しており、それらを実際に送信することは指していない。しかしながら、ＬＤＰＣ符号を符号化するとき、パンクチュアリングされる予定であるビットは、まだ決定されている(still determined)。したがって、パンクチュアリングは、符号化プロセスに、少しの影響をうけるあるいはまったく影響をうけない。この理由に関しては、パンクチュアリングする可能性は、本願の残り(remainder)において考慮されないであろう。
【０００７】
ＬＤＰＣコードワードを復号するために使用されたデコーダ及び復号アルゴリズムは、エッジに沿ってグラフ内でメッセージを交換することと、入ってくるメッセージ(incoming messages)に基づいたノードにおける計算(computation)を実行することによりこれらのメッセージを更新することとによって、動作する。そのようなアルゴリズムは、一般に、メッセージパッシングアルゴリズム(message passing algorithms)と呼ばれる。グラフにおける各変数ノードは、例えば通信チャネルからの観察によって決定されるように、関連づけられたビットの値の推定値(an estimate of the associated bit’s value)を表示する受信された値と呼ばれた、ソフトビットを最初に提供される。符号化プロセスはまた、グラフのエッジに沿って部分的に動作するが、接続はあまり正確ではない。
【０００８】
ノード、すなわち変数ノードあるいは制約ノード、に対して取り付けられたエッジの数は、ノードの次数(degree)と呼ばれる。レギュラーグラフあるいはレギュラー符号は、すべての変数ノードが同じ次数であるｊを有し、すべての制約ノードが同じ次数ｋを有するものである。このケースにおいては、符号は、（ｊ，ｋ）レギュラー符号である。これらの符号は、ギャラガー（１９６１）によって、初めに発明された。「レギュラー(regular)」符号と対照に、イレギュラー符号は、異なる次数の、制約ノード及び／または変数ノードを有している。例えば、いくつかの変数ノードは、次数４、その他は次数３、またさらにその他は次数２であってもよい。
【０００９】
イレギュラー符号は、表し、及び／またはインプリメントする(implement)ことがより複雑となりうるが、レギュラーＬＤＰＣ符号と比較したときに、イレギュラーＬＤＰＣ符号は、優れた誤り訂正／検出(superior error correction/detection)のパフォーマンスを提供することができるということが示されてきた。
【００１０】
符号化効率及び高いデータレートは、符号化システム及び／または復号システムが広範囲のデバイス、例えば消費者デバイス、の使用に実践的であるように重要であるが、エンコーダ及び／またはデコーダがリーズナブルなコストにおいてインプリメントされることができるということが重要である。したがって、誤り訂正及び／または検出の目的のために使用された符号化／復号スキームを、例えばハードウェアのコストの点において、効率的にインプリメントする必要がある。
【発明の概要】
【００１１】
１つの特徴は、データを符号化するための装置及び方法を提供する。特に、二部グラフによる表示が可能である低密度パリティ検査（ＬＤＰＣ）符号を使用してデータを符号化するための方法が、提供されている。データを符号化するために、複数の低い次数の変数ノード(a plurality of low degree variable nodes)の累積チェイン(accumulate chain)が生成されることができる。累積チェインは、そのとき、ループを二回形成するために閉じられることができ、一回は、低い次数の変数ノード（a low degree variable nodes）を使用し、一回は、低い次数の変数ノードよりも高い次数の変数ノード(a higher degree variable node)を使用しており、より高い次数の変数ノードは、ノンループクロージングエッジ(non-loop-closing edge)を備えている。一実施形態において、複数の低い次数の変数ノードは、各エッジ上で同じ置換（permutation）を有することができる。
【００１２】
該方法においては、複数の低い次数の変数ノードは、複数のコア次数２の変数ノード(a plurality of core degree two variable nodes)を備えることができ、より高い次数の変数ノードは、コア次数３の変数ノード(a core degree three variable node)を備えることができ、ループクロージングの低い次数の変数ノード(loop-closing low degree variable node)は、ループクロージングのコア次数２の変数ノード(a loop-closing core degree two variable node)を備えることができる。
【００１３】
方法は、累積チェインの複数の順序変更された複製(a plurality of permuted copies of the accumulate chain)、ループクロージングの低い次数の変数ノードの複数の順序変更された複製(a plurality of permuted copies of the loop-closing low degree variable node)、及びループクロージングのより高い次数の変数ノードの複数の順序変更された複製(a plurality of permuted copies of the loop-closing higher degree variable node)、を備えているリフトされたグラフ(a lifted graph)を使用すること、をさらに備えることができる。
【００１４】
方法は、巡回リフトされた低密度パリティ検査（ＬＤＰＣ）符号(a cyclic lifted low density parity check (LDPC) code)を使用すること、をさらに備えており、いくつかの基本変数ノード(base variable nodes)については、リフトされた変数ノードの半分(half of the lifted variable nodes)が情報ノード(information nodes)であり、半分がパリティノード(parity nodes)であってもよい。
【００１５】
方法は、コア次数３の符号化ノードのノンループクロージングエッジ上でノンループクロージングエッジ置換を使用することと(using a non-loop-closing edge permutation on a non-loop-closing edge of a core degree three encoding node)、ただし、ノンループクロージングエッジ置換は０であってもよい；そして、ループに関係しているコア次数２の変数ノードのエッジ上で、すべての他の置換を使用することと(using for all other permutations, on the edges of core degree two variable nodes participating in the loop)、なお、その値は、０あるいは−１ｍｏｄ２ｎ(negative one mod 2n)である；をさらに備えることができる。
【００１６】
同様に、通信インタフェース(communication interface)及びプロセッサ(processor)を備えている装置(apparatus)が提供されている。通信インタフェースは、データを受信し、送信するように構成されることができる。プロセッサは、（ａ）複数の低い次数の変数ノードの累積チェインを生成し；（ｂ）ループを二回形成するために累積チェインを閉じる、なお一回は、低い次数の変数ノードを使用し、一回は、低い次数の変数ノードよりも高い次数の変数ノードを使用しており、より高い次数の変数ノードは、ノンループクロージングエッジを備える；ように構成されることができる。
【００１７】
装置は、累積チェインの複数の順序変更された複製、ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及びループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用すること、をさらに備えることができる。
【００１８】
装置は、巡回リフトされた低密度パリティ検査（ＬＤＰＣ）符号を使用すること、をさらに備えており、いくつかの基本変数ノードについては、リフトされた変数ノードの半分が情報ノードであり、半分がパリティノードであってもよい。
【００１９】
装置は、コア次数３の符号化ノードのノンループクロージングエッジ上でノンループクロージングエッジ置換を使用することと、なお、ノンループクロージングエッジ置換は０であってもよい；そして、ループに関係しているコア次数２の変数ノードのエッジ上ですべての他の置換を使用することと、なお、その値は、０あるいは−１mod２ｎである；をさらに備えることができる。
【００２０】
したがって、（ａ）複数の低い次数の変数ノードの累積チェインを生成するための手段と；（ｂ）ループを二回形成するために累積チェインを閉じるための手段と、なお、一回は、低い次数の変数ノードを使用し、一回は、低い次数の変数ノードよりも高い次数の変数ノードを使用し、より高い次数の変数ノードは、ノンループクロージングエッジを備える；を備えている装置が提供されている。
【００２１】
装置は、累積チェインの複数の順序変更された複製、ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及びループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用するための手段、をさらに備えることができる。
【００２２】
装置は、巡回リフトされた低密度パリティ検査（ＬＤＰＣ）符号を使用するための手段、をさらに備えることができ、いくつかの基本変数ノードについては、リフトされた変数ノードの半分が情報ノードであり、半分がパリティノードであってもよい。
【００２３】
装置は、コア次数３の符号化ノードのノンループクロージングエッジ上でノンループクロージングエッジ置換を使用するための手段と、なお、ノンループクロージングエッジ置換は０であってもよい；そして、ループに関係しているコア次数２の変数ノードのエッジ上で、すべての他の置換を使用するための手段と、値は、０あるいは−１ｍｏｄ ２ｎである；をさらに備えることができる。
【００２４】
同様に、二部グラフによる表示が可能である低密度パリティ検査（ＬＤＰＣ)符号を使用してデータを符号化することを達成するために、エンコーダ上で動作可能な１つまたは複数の命令(instructions)を有しているプロセッサ可読メディア(processor readable medium)が提供されており、命令は、プロセッサによって実行されるときに、プロセッサに、（ａ）複数の低い次数の変数ノードの累積チェインを生成させ、（ｂ）ループを二回形成するために累積チェインを閉じさせる、なお、一回は、低い次数の変数ノードを使用し、一回は、低い次数の変数ノードよりも高い次数の変数ノードを使用しており、より高い次数の変数ノードは、ノンループクロージングエッジを備えている。
【００２５】
同様に、(a)複数の低い次数の変数ノードの累積チェインを生成することと；(b)ループを二回形成するために累積チェインを閉じることと、一回は、低い次数の変数ノードを使用し、一回は、低い次数の変数ノードよりも高い次数の変数ノードを使用しており、より高い次数の変数ノードは、ノンループクロージングエッジを備えている；を達成するファンクションを実行するように構成されたプロセッシング回路(processing circuit)を有するプロセッサが提供されている。
【図面の簡単な説明】
【００２６】
【図１】図１は、長さ１０のレギュラーＬＤＰＣ符号の小さい二部グラフの表示を図示する。
【図２】図２は、図１においてグラフで図示された符号の行列表示(a matrix representation)である。
【図３】図３は、小さいＬＤＰＣ符号のグラフ表示である。
【図４】図４は、図３においてグラフで図示された小さいＬＤＰＣ符号のパリティ検査行列表示を図示する。
【図５】図５は、図３において図示されたＬＤＰＣ符号を符号化するためのプレプレプロセッシング(pre-preprocessing)の一例を図示する。
【図６】図６は、プレ計算された行列(pre-computed matrices)を使用して情報ブロックを符号化するためのプロセスを図示する。
【図７】図７は、図３において示されるＬＤＰＣ符号に対応する、２つの単純な命令／操作(two simple instructions/operations)のシーケンスとして符号化プロセスを図示する。
【図８】図８は、一般的なＬＤＰＣエンコーダを図示する。
【図９】図９は、長さ１０のレギュラーＬＤＰＣ符号の大きい二部グラフ表示を図示する。
【図１０】図１０は、図９において図示されたＬＤＰＣグラフのパリティ検査行列表示を図示する。
【図１１】図１１は、巡回置換行列(cyclic permutation matrices)で、図９で示された３ｘ３識別情報行列(3x3 identity matrices)を置き換える効果を図示する。
【図１２】図１２は、どのように図１１で示された符号のエッジが変数ノード側から順番に削除されることができるか、及び、どのように同じエッジが巡回置換を必要とされた後で(after being subject to a cyclic permutation)、制約ノード側から現れるであろうか、を図示する。
【図１３】図１３は、図１１において図示されたＬＤＰＣ符号を符号化するための、可能なプレプロセッシングステップを図示する。
【図１４】図１４は、図１１で図示されたＬＤＰＣ符号の例についてプレ計算された行列を与えられ、情報ブロックを符号化するためのプロセスを図示する。
【図１５】図１５は、操作のシーケンスとしてＬＤＰＣ符号化プロセスを図示する。
【図１６】図１６は、図７のエンコーダをベクトル化するＬＤＰＣエンコーダを図示する。
【図１７】図１７は、基本グラフ(base graph)のパリティ検査行列を図示する。
【図１８】図１８は、基本符号化構造ベースのＴａｎｎｅｒグラフを図示する。
【図１９】図１９は、図１７のグラフの、より多くの完全な基本グラフのパリティ検査行列表示を図示する。
【図２０】図２０は、次数１の変数ノード及び関連エッジを取り除いたより完全な基本グラフのパリティ検査行列表示(a parity check matrix representation of more complete base graph stripped of degree one variable nodes and associated edges)を図示する。
【図２１】図２１は、ループを形成するために、アキュムレータチェイン(accumulator chain)を閉じるさらなる次数２の変数ノードを備えた基本符号化構造の拡張(extension)を図示する。
【図２２】図２２は、図２１の拡張された基本符号化構造のＺ＝８のリフティングを図示する。
【図２３】図２３は、図２２のグラフの拡張を図示する。
【図２４】図２４は、低密度パリティ検査（ＬＤＰＣ）符号を使用しているデータを符号化するためのエンコーダを図示するブロック図である。
【図２５】図２５は、エンコーダ上で動作可能な例示的な方法を図示する。
【詳細な説明】
【００２７】
特徴、本質、及び本特徴の利点は、同様の参照文字が全体を通して相応じて識別する図面と併せて、下記で記載された詳細な説明からより明らかとなるであろう。
【００２８】
次の説明において、具体的な説明が、実施形態の完全な理解を提供するように、与えられている。しかしながら、実施形態がこれらの具体的な詳細なしに実行されることができるということを当業者によって理解されるであろう。例えば、回路は、不必要な詳細で(in unnecessary detail)、実施形態を不明確にしないために、ブロック図で示されることができる。他の例においては、既知の回路、構造、及び技術は、実施形態を不明確にしないために詳細に示されることができる。
【００２９】
また、実施形態は、フローチャート、フロー図、構造図、あるいはブロック図として図示されるプロセスとして説明されることができるということに注意してください。フローチャートは、シーケンシャルプロセス(sequential process)として操作を説明することができるが、操作の多くは、並列に(in parallel)あるいは同時に(concurrently)実行されることができる。さらに、操作の順序は、再配置されることができる(re-arranged)。プロセスは、その操作が完了したときに、終了する(terminated)。プロセスは、方法、ファンクション(function)、プロシージャ(procedure)、サブルーチン(subroutine)、サブプログラム、等に対応することができる。プロセスが関数に対応するとき、その終了は、コーリングファンクション(calling function)あるいはメインファンクション(main function)へのファンクションの戻り(a return of the function)に対応する。
【００３０】
さらに、ストレージメディア(storage medium)は、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスクストレージメディア、光学ストレージメディア、フラッシュメモリデバイス、及び／または情報を保存するための他のマシン可読メディア、を含んでいるデータを保存するための１つまたは複数のデバイスを表すことができる。用語「マシン可読媒体(machine readable medium)」は、ポータブルあるいは固定されたストレージデバイスに限定されていないが、光学ストレージデバイス、無線チャネル、及び、命令（単数または複数）及び／またはデータを保存し、含み、あるいは搬送することができる様々な他のメディア、を含む。
【００３１】
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード(microcode)、あるいはそれらのいずれの組み合わせによってインプリメントされることができる。ソフトウェア、ファームウェア、ミドルウェア、あるいはマイクロコードにおいてインプリメントされるとき、必要なタスクを実行するプログラム符号あるいは符号セグメントは、ストレージメディアあるいは他のストレージ（単数または複数）のようなマシン可読媒体において保存されることができる。プロセッサは、必要なタスクを実行することができる。符号セグメントは、プロシージャ、ファンクション、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ(software package)、クラス(class)、あるいは、命令、データ構造、あるいはプログラムステートメントのいずれの組み合わせ(any combination of instructions, data structures, or program statements)、を表すことができる。符号セグメントは、情報、データ、アーギュメント(arguments)、パラメータ、あるいはメモリコンテンツを受け渡すこと及び／または受信することによって、別の符号セグメントあるいはハードウェア回路に、結合されることができる。情報、アーギュメント、パラメータ、データ等は、メモリの共有(memory sharing)、メッセージの受け渡し(message passing)、トークンの受け渡し(token passing)、ネットワーク送信、等を含んでいるいずれの適切な手段を介して、受け渡され、転送され、あるいは送信されることができる。
【００３２】
ここに開示された例に関連して説明された様々な説明のための論理ブロック、モジュール、回路、エレメント及び／またはコンポーネントは、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）あるいは他のプログラマブル論理デバイス、ディスクリートゲートあるいはトランジスタロジック、ディスクリートハードウェアコンポーネント、あるいはここに説明されたファンクションを実行するように設計されたそれらの任意の組み合わせで、インプリメントあるいは実行されることができる。汎用プロセッサは、マイクロプロセッサであってもよいが、代替的には、プロセッサは、いずれの従来のプロセッサ、コントローラ、マイクロコントローラ、あるいはステートマシン(state machine)であってもよい。プロセッサはまた、コンピューティングデバイス(computing devices)の組み合わせ、例えば、ＤＳＰとマイクロプロセッサとの組み合わせ、多数のマイクロプロセッサ、ＤＳＰコアと併用しての１つ以上のマイクロプロセッサ、あるいは任意の他のそのような構成のもの、としてインプリメントされることができる。
【００３３】
ここにおいて開示された例に関連して説明された方法あるいはアルゴリズムは、プロセッシングユニット、プログラミング命令あるいは他の命令の形式で、ハードウェアにおいて、プロセッサによって実行されたソフトウェアモジュールにおいて、あるいはこれら２つの組み合わせにおいて、直接的に具現化されることができ、そして、単一のデバイスにおいて含まれてもよく、あるいはマルチプルデバイスにわたって分配されてもよい。ソフトウェアモジュールは、ＲＡＭメモリフラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭあるいは当技術分野において知られているストレージメディアの任意の他の形態において存在する(reside)ことができる。ストレージメディアは、プロセッサがストレージメディアから情報を読み取ることができ、またストレージメディアに情報を書き込むことができるように、プロセッサに結合されてもよい。あるいは、ストレージメディアは、プロセッサと一体化していてもよい。
【００３４】
ＬＤＰＣ符号(LDPC codes)
図１は、長さ１０及びレート１／２の（３,６）レギュラーＬＤＰＣ符号を決定する、二部グラフ１００の一例を図示する。長さ１０は、１０の変数ノードＶ１−Ｖ１０ １０２があるということを示しており、それぞれは、１ビットのコードワードＸ１−Ｘ１０で識別されている。レート１／２は、変数ノード同様に半分のチェックノードがあり、すなわち、５つのチェックノードＣ１−Ｃ５ １０６がある、ということを示す。レート１／２は、下記で説明されているように５つの制約が線形的に独立(linearly independent)であるということをさらに示すことができる。
【００３５】
図１は、長さ１０の符号に関連づけられたグラフを図示しており、長さ１０００のコードワードについてのグラフを表すことは１００倍複雑となるであろうということが理解されることができる。
【００３６】
図２は、パリティ検査行列表示を図示しており、図１で示されたＬＤＰＣ符号の、Ｔａｎｎｅｒグラフ(あるいは二部グラフ)の表示の代替であってもよい。パリティ検査行列は、送信されたビット上で、１セットの線形制約(linear constraints)から成る。この符号の表示において、パリティ検査行列と一般に呼ばれる行列Ｈ２０２は、関連性のあるエッジ接続、すなわち変数ノード及び制約ノード情報を含むことができる。行列Ｈ２０２において、各列(column)は、変数ノードのうちの１つに対応することができるが、各行(row)は、制約ノードのうちの１つに対応することができる。符号の例において、１０の変数ノードと５つの制約ノードがあるので、行列Ｈは、１０列と５行を含んでいる。特定の変数ノード及び特定の制約ノードに対応する行列のエントリ(entry)は、エッジがグラフにおいて存在する場合には、すなわち２つのノードが隣接している場合には、１に設定されることができ、もしそうでない場合には、０に設定されることができる。例えば、変数ノードＶ１はエッジによって制約ノードＣ１に接続されるので、１つは、行列Ｈ２０２の一番上の左の端において配置されている。しかしながら、変数ノードＶ５は、対応する変数ノードと制約ノードが接続されていないということを示している行列Ｈ２０２の第１行の５番目の位置において０が配置されるように、制約ノードＣ１に接続されていない。制約は、行列Ｈ２０２の行がＧＦ[２](ガロア体の順序２(a Galois field of order 2))にわたって線形依存ベクトルである場合には、線形的に依存していてもよい。
【００３７】
行列表示のケースにおいて、送信される予定であるコードワードＸは、処理される予定であるコードワードのビットＸ１−Ｘｎを含むベクトル２０６として表わされることができる。ビットシーケンスＸ１−Ｘｎは、行列２０６及び２０２の積が０に等しい、すなわちＨｘ＝０である、場合に及び場合にのみ、コードワードであってもよい。
【００３８】
ＬＤＰＣ符号を符号化する(Encoding LDPC codes)
ＬＤＰＣ符号についての符号化プロセスは、入力情報ビットからＬＤＰＣコードワードへのマッピング(mapping)であることができる。このマッピングが取ることができる多くの可能な形態があってもよい。
【００３９】
符号化ＬＤＰＣ符号に対する汎用なアプローチは、２００1年２月、ＩＥＥＥ Ｔｒａｎｓ．ｏｎ Ｉｎｆｏｒｍａｔｉｏｎ Ｔｈｅｏｒｙの４７巻２号の頁６３８−６５６で発行された「低密度パリティ検査符号の効率的な符号化("Efficient Encoding of Low Density Parity Check Codes")」と題された、トーマスＪ.リチャードソンとルーディガーＬ．アーバンキによる論文において、詳細に説明されている。
【００４０】
本願の符号化プロセスは、米国特許出願シリアル番号０９／９７５，３３１（現在の米国特許番号６，６３３，８５６）において開示されたデコーダによってサポートされることができるＬＤＰＣ符号のクラスの早い並列符号化を可能にする汎用目的の符号化デバイスを用いて使用されることができる。‘８５６特許において、ＬＤＰＣ符号のある構成されたクラスは、考慮され、そして、デコーダアーキテクチャは、それらのために提案される。本願において、デコーダアーキテクチャのある特徴は、エンコーダ構造の一部として再現されることができる。
【００４１】
本願の符号化プロセスにおいて、ｍｘｎパリティ検査行列は、ｍ＜ｎ、ランクｍを有していてもよく、すなわち、行は、線形的に独立していてもよい。ｍ＞ｎであるとき、冗長性のある行は、符号を変更することなく、取り除かれることができる。
【００４２】
第１に、エンコーダを設計するプロセスの一部である、ある操作が説明されるであろう。下記で説明されるプレプロセッシングの計算(pre-processing computation)は、コード設計の一部としてソフトウェアにおいて実行されることができ、エンコーダの実際のインプリメンテーションの一部でなくてもよい。
【００４３】
エンコーダの設計における第１ステップは、おおよそ下三角の形(approximate lower triangular form)に行列Ｈをおくために、行及び列を再配置することであってもよい。
【数１】
2010521128.tif 000003
【００４４】
ただし、Ａは、（ｍ−ｇ）×（ｎ−ｍ）であり、Ｂは（ｍ−ｇ）×ｇであり、Ｔは（ｍ−ｇ）×（ｍ−ｇ）であり、Ｃはｇ×（ｎ−ｍ）であり、Ｄは、ｇ×ｇであり、そして、Ｅはｇ×（ｍ−ｇ）である。行列Ｔは、１に等しいすべての対角エントリを備えた下三角であることができる。左から行列Ｈを
【数２】
2010521128.tif 000004
【００４５】
で乗算することは、
【数３】
2010521128.tif 000005
【００４６】
を結果としてもたらす。次にφは、φ＝（-ＥＴ−１Ｂ＋Ｄ）で、単一ではないものとして、定義されることができる。行列φ−１は、そのあと、計算され、保存されることができる。φが可逆(invertible)でなくてもよいケースにおいて、Ｈの行は線形依存と考慮されることができ、φが可逆であるということを確実にするためにサブ行列
【数４】
2010521128.tif 000006
【００４７】
の中で、列は置換されることができる。Ｈの行が線形依存ではない場合には、そのときには、Ｈの行のうちいくつかは、符号の定義を変更することなく、残りの行が線形依存することができるように、取り除かれることができる。上記計算のすべては、符号化される予定であるデータに依存していてもよく、また、符号化プロセスの一部でなくてもよいということに注意されるべきである。これらのステップは、エンコーダ設計の一部として、一度通常実行されることができ、そして、エンコーダの使用の間に繰り返されてもよいし、あるいは、繰り返されなくてもよい。
【００４８】
データをコードワードに符号化する(Encoding Data into a Codeword)
コードワードは、ｘ＝（ｓ，ｐ１，ｐ２）として示されることができ、ｓは、システマチックな部分を示すことができ、結合されたｐ１及びｐ２は、パリティ部分を示すことができ、ｐ１は、長さｇを有し、ｐ２は長さ（ｍ−ｇ）を有することができる。符号化問題は、ｐ１及びｐ２の与えられたｓを見つけることである。定義式ＨｘＴ＝０Ｔは、次の２つの式
【数５】
2010521128.tif 000007
【００４９】
に自然に分割されることができる。
【００５０】
上記式から、
【数６】
2010521128.tif 000008
【００５１】
ということを結論づけられることができる。（-ＥＴ−１Ａ＋Ｃ）ｓＴは、すべての行列がスパース(sparse)であるので効率的に計算されることができ、ＡｓＴが与えられると、Ｔ−１ＡｓＴは、zバック置き換え(z back substitution)を使用して、Ｔｚ＝ＡｓＴを解くことによって効率的に見つけられることができる。行列φ−１は、一般に高密であるが、ｇは、設計によって小さく作られてもよく、また、この行列は、プレ計算される(precomputed)ことができる。したがって、
【数７】
2010521128.tif 000009
【００５２】
は、効率的に得られることができる。
【数８】
2010521128.tif 000010
【００５３】
は、
【数９】
2010521128.tif 000011
【００５４】
を解くことによって、簡単に且つ効率的に決定されることができる（図６及び７を参照）
上記の説明は、いずれのＬＤＰＣ符号を符号化するための方法を提供している。ＬＤＰＣ符号の多くの構造(constructions)が他の自然符号化メカニズム、例えばＲＡ符号、に対する高まり(rise)を与えることができるということが理解されるであろう。
【００５５】
本願は、上記で説明されたような、バイナリコードについての符号化方法を使用することができ、パリティ検査行列に沿ってそれらを「ベクトル化された(vectorized)」ＬＤＰＣ符号についての並列符号化エンジンへと「リフトする(lift)」ことができる、並列化されたエンコーダを提供する。リフティングは、小さいパリティ検査行列、例えばサイズ（ｎ０，ｋ０）、である、小さい「ベース符号(base code)」のいくつかの複製(copies)から、大きいＬＤＰＣ符号を生成する技術である。大きい符号についての説明の複雑さを減らすことと同様に、並列符号化及び復号アルゴリズムのインプリメンテーションをイネーブルすることができる。
【００５６】
「ＬＤＰＣ符号を復号するための方法及び装置("Methods and Apparatus for Decoding LDPC codes")」と題された米国特許出願シリアル番号０９／９７５，３３１で、今では２００３年１０月１４日に発行された米国特許番号６，６３３，８５６において、ＬＤＰＣグラフの構成された「ベクトル化された」クラスが説明され、動機付けられている。‘８５６特許において、動機は、高い効率のデコーダアーキテクチャを提供することである。本願は、‘８５６特許におけるような同じクラスの符号を符号化することに適切でありうる、対応するアーキテクチャを対象としている。しかしながら、本願は、‘８５６特許と異なり、効率的に且つ並列に実行されることができる符号化操作を含むことができるので、アーキテクチャが特定のＬＤＰＣ符号の明細書がプログラマブルであることを可能とすることができる。
【００５７】
小さいＬＤＰＣグラフ(Small LDPC graph)
図３は、単純なイレギュラーＬＤＰＣ(a simple irregular ＬＤＰＣ)のグラフ３００を図示する。符号は、５つの変数ノードＶ１〜Ｖ５ ３０２によって図示されているように、長さ５であることができる。４つのチェックノードＣ１〜Ｃ４ ３０６は、トータル１２エッジ ３０４による変数ノード３０２に結合されることができる。
【００５８】
図４は、行列４０２、４０４を使用しているパリティ検査行列の形式において、図３で示されたＬＤＰＣ符号を図示する。エッジは、１’ｓを使用している置換行列Ｈ４０２において表されることができる。ビットｘｉは、変数ノードＶｉに関連づけられることができる。
【００５９】
図５及び６は、図３で示されるＬＤＰＣ符号についての符号化プロセスを図示する。上記で説明されているように、符号化プレプロセッシングステップは、図４で示されたパリティ検査行列Ｈ４０４の行及び列を、下三角の形式に再配置することを含むことができる。図５は、図４の行列の再配置の一例を図示する。行列は、行２及び列４をスワップすること(swapping)によって再配置されることができる。
【００６０】
図５において、行列Ｈ５０１は、再配置後の異なるコンポーネント(components)を示す。注釈として、サブ行列（ｒ１，ｒ２；ｃ１，ｃ２）は、オリジナル行列において、［ｒ１，ｒ２］における行インデクスと［ｃ１，ｃ２］における列インデクスで、すべてのエントリを備えている行列であるように定義づけられることができる。行列Ａ５０２は、行列Ｈ５０１のサブ行列（１，３；１，１）として定義されることができる。行列Ｂ５０３は、行列Ｈのサブ行列（１，３；２，２）として、定義されることができる。行列Ｔ５０４は、行列Ｈのサブ行列（１，３；３，５）として定義されることができ、そしてそれは、下三角の形式である。行列Ｃ５０５は、行列Ｈのサブ行列（４，４；１，１）として定義されることができる。行列Ｄ５０６は、行列Ｈのサブ行列（４，４；２，２）として定義されることができる。行列Ｅ５０７は、行列Ｈのサブ行列（４，４；３，５）として定義されることができる。ガウス削除によるφ＝（-ＥＴ−１Ｂ＋Ｄ）の派生(derivation)は、φ５０９及びその逆数(inverse)φ−１５１０が得られることができる５０８において図示されている。
【００６１】
図６は、実際の符号化プロセスの与えられた情報ブロックｓ＝［１］６０１と、図５で示されたプレ計算された行列と、を図示する。行列によるベクトルの標準乗算は、Ａｓ ６０２、Ｔ−１Ａｓ ６０３、ＥＴ−１Ａｓ ６０４、ＥＴ−１Ａｓ＋Ｃｓ ６０５、ｐ１＝φ−１（ＥＴ−１Ａｓ＋Ｃｓ） ６０６、Ｂｐ１ ６０７、Ｂｐ１＋Ａｓ ６０８、及びｐ２＝Ｔ−１（Ｂｐ１＋Ａｓ） ６０９の計算を可能にすることができる。Ｔ−１による乗算は、バック置き換え(back substitution)を使用して実行されることができるということに注意されるべきである。最終結果において、符号化されたビットｘ＝［ｐ１,ｐ2,s］は、ベクトル６１０において示されることができる。
【００６２】
バイナリ行列によるバイナリベクトルの乗算は、単純な操作のシーケンスに分解されることができる。例えば、ハードウェアプロセッサにおいて、バイナリベクトルｖ（ｎｘ１）でバイナリ行列Ｕ（ｍｘｎ）を乗算することを考えてください。乗算の前に、ベクトルｖは、インデクスｓで開始して、いくつかの物理ロケーション、例えばメモリ、において利用可能であることができるということが仮定されることができ、その結果は、インデクスｔで開始するロケーションにおいて保存されることができる。さらに、行列Ｕの行
【数１０】
2010521128.tif 000012
【００６３】
は、非ゼロエントリ(nonzero entries)を有しているということが仮定されることができ、すなわち、
【数１１】
2010521128.tif 000013
【００６４】
としてインデクス化された列において、１’ｓである。２つの命令（１）（０ ａ ｂ）及び（２）（１ ａ ｂ）は、次のように定義されることができ、（０ ａ ｂ）は、プロセッサがロケーションｂにおいて値を読み取り、ロケーションａにそれを書き込むように命令することができ、（１ ａ ｂ）は、ロケーションｂにおいて値を読み取り、それを加えるように命令することができ、すなわちロケーションａにおいて現在の値で排他的論理和をとる。言い換えると、第２の操作は、ロケーションａにおいて値を累積する(accumulate)ことができ、第１は、上書きする(overwrites)。Ｕによるベクトルｖの乗算は、それら２つの単純な操作の以下のシーケンス：
【数１２】
2010521128.tif 000014
【００６５】
、に分解されることができる。命令のトータル数は、行列における非ゼロエントリの数と同じであってもよい。
【００６６】
図７は、図３において示されるＬＤＰＣ符号に対応している２つの単純な命令／操作のシーケンスとして、符号化プロセスを図示する。メモリデバイス７０２は、情報ビット、符号化されたビット、及び中間変数を保存することができる。メモリ７０２のロケーション０は、単一の情報ビット７１０を保存するように割り当てられることができ、ロケーション１は、パリティビットｐ１７１２を保存するように割り当てられることができ、ロケーション２−４は、パリティビットｐ２７１４を保存するように割り当てられることができる。追加メモリスペースは、中間値を保つために提供されることができる。メモリ９０２の例は、Ａｓ７１６の値を、そのあとで、Ｂｐ１＋Ａｓの値を保存するためにロケーション５−７を提供することができ、Ｔ−１Ａｓ７１８を保存するためにロケーション８−１０を提供することができ、そして、ＥＴ−１Ａｓ７２０を保存するためにロケーション１１を提供することができる。
【００６７】
メモリ７０２の上記割り付けに関して、図６で図示された符号化プロセスは、ベクトルとの行列乗算として、表７０４においてリストされた操作のシーケンス（０ ａ ｂ）及び（１ ａ ｂ）に分解されることができる。明らかにするために、表７０４は、１行ごとに、それらのそれぞれの行列の乗算のカウンターパート(counterparts)と一緒に、命令のシーケンスを示している。例えば乗算Ａｓは、２つの命令：（０ ７ ０）が続く（０ ５ ０）へと分解されることができる。表７０６は、実行されることができる表７０４上の対応する行において命令が示される時間において、メモリロケーション０から１１のコンテンツを示す。表７０４に関する命令を実行する結果は、表７０６の次の行において示されることができる。例えば、同じ情報ビットは、表７０６の第１行において図示されるように、ロケーション０へとｓ＝［１］を保存することによって、図５のように符号化されることができる。命令（０ ７ ０）が続く命令（０ ５ ０）を実行する操作は、ブロック７０６の行３において示されるように、ロケーション５から７へと、結果Ａｓ＝（１ ０ １）を与えることができる。このことは、図５におけるそのカウンターパートと同じ結果であってもよい。表７０６は、メモリロケーション０〜１１のコンテンツの点において、完全な符号化プロセスは、表７０４においてエレメンタリー命令のシーケンス(sequence of elementary instructions)として、実行されるということを図示する。
【００６８】
表７０４のシーケンス命令は、ハードウェアインプリメンテーションへと容易に解釈されることができる。直接の修正(straightforward modifications)は、例えば、使用されたハードウェアのメモリ操作制約に応ずる(comply)ために、ハードインプリメンテーションの間に行われることができる。
【００６９】
一般的なＬＤＰＣエンコーダ（General LDPC Encoder）
図８は、一般的なＬＤＰＣエンコーダ８００を図示する。ユニット操作プロセッサ(unit operation processor)８０８は、受信された命令によって示された３つの可能な操作のうちの１つを実行することができる。ユニット操作プロセッサ８０８は、ｓｕｍビット(a sum bit)をクリアするか、メモリからのビット読み取りでｓｕｍビットの排他的論理和をとるか、あるいは、符号化メモリ(encoding memory)８０６にｓｕｍビットを出力するか、いずれかを行なうことができる。実行される予定である操作は、エンコーダ制御モジュール８００において、操作制御モジュール８１０に関する操作によって選択され、１つまたは複数の命令の形でユニット操作プロセッサ８０８に指定されることができる。読み取り／書き込みの制御モジュール８０４、エンコーダ制御モジュール８００は、符号化メモリ８０６がアクセスされる順序を指定することができる。操作制御モジュール８１０及び読み取り／書き込み制御モジュール８０６の両方の形のタイミングは、エンコーダ制御モジュール８００において、エンコーダタイミング制御モジュール８０２によって制御されることができ、タイミング制御信号を通じてエンコーダのデータフローを決定する。符号化メモリ８０６は、ＳＩＭＤ読み取りあるいは書き込み命令を独立して使用して、書き込まれることができる、あるいは読み取られることができる、デュアルポートメモリブロック(dual port memory block)であってもよい。
【００７０】
符号化プロセスのベクトル化(Vectorization of Encoding Process)
ベクトル化されたＬＤＰＣグラフを与えられると、本願の符号化プロセスは、次のようにベクトル化されることができる。エンコーダは、同時にあるいは並列に、プロジェクトされたＬＤＰＣ符号(projected LDPC code)の符号Ｚ複製であるかのように、動作することができる。符号化プロセスの制御は、プロジェクトされたＬＤＰＣグラフに対応することができ、そして、Ｚ複製にわたって共有されることができる。したがって、エンコーダは、ビットベクトル上で動作するものとして説明されることができ、各ベクトルは、Ｚエレメントを有する。Ｚプロジェクトされたグラフの純粋にディスジョイントパラレル符号化(purely disjoint parallel encoding of the Z projected graphs)からの１つの派生は、ビットが符号化プロセスの間にビットベクトル内で再び順序づけられる(reordered)というものであってもよい。この再び順序づける操作(reordering operation)は、回転(rotation)と呼ばれることができる。回転は、Ψによる置換操作をインプリメントすることができ、ここにおいてΨは、置換を定義するグループを表わすことができる。回転のおかげで、プロジェクトされたグラフのＺ複製の処理パスは、ミックスすることができ、それによって、単一の大きいグラフを形成するためにそれらをリンクする。回転を指定する制御情報は、プロジェクトされたグラフについての制御情報に加えて、得られることができる。幸いにも、回転制御情報は、比較的小さいメモリを使用して指定されることができる。
【００７１】
様々な置換が回転のために使用されることができる一方で、巡回置換(cyclic permutations)の使用は、そのような置換がインプリメントされることができることが容易なため、特に興味深い。簡略のために、Ψは、巡回置換のグループを備えるということが仮定されることができる。このケースにおいて、大きなＬＤＰＣグラフは、準巡回構造(quasi-cyclic structure)を有するように、制約されることができる。この例のために、Ｎは、グラフにおける変数ノードの数であってもよく、Ｍは、グラフによる制約ノードの数であってもよい。両方のＮ及びＭは、Ｚ、Ｎ＝ｎＺ、及びＭ＝ｍＺの倍数(multiples)であるということが仮定され、ただしＺは、サイクルの順序を示すことができる。
【００７２】
ノードは、ダブルインデクス(double index)の使用を通じて識別されることができる。したがって、変数ノードｖｉｊは、プロジェクトされたグラフのｉ番目の複製の、ｊ番目の変数ノードであってもよい。Ψは、巡回置換のグループであるので、変数ノードｖｉｊは、変数ノードｖｉ＋ｋｍｏｄＺ，ｊがｋ＝１，…，Ｚについて制約ノードｃａ＋ｋｍｏｄＺ，ｂに接続される場合に及び場合のみに、制約ノードｃａ，ｂに接続されることができる。
【００７３】
大きいＬＤＰＣグラフ(Large LDPC graph)
より小さいグラフ表示及び回転情報を使用している大きいグラフを表示するための本願の技術は、図３のグラフ３００のベクトル化に関する、図９−１６を参照してさらに説明されることができる。これらの数字を参照して説明された本願の技術は、より大きいＬＤＰＣグラフに適用されることができる。
【００７４】
より大きなグラフは、図３で示された小さいグラフの、マルチプル複製(multiple copies)を複製すること(replicating)によって、すなわちインプリメントすることによって、そして、そのあとで、複製されたグラフの様々な複製を相互接続する回転操作を実行することによって、生成されることができる。説明(discussion)の目的のために、大きなグラフ構造内の小さいグラフは、下記で、プロジェクトされたグラフ(projected graph)と呼ばれるであろう。
【００７５】
図９は、図３で図示された小さいグラフの３つの並列複製(3 parallel copies)を行なうことが結果として生じる大きいグラフ９００を図示する。変数ノード９０２’、９０２’’及び９０２’’’は、それぞれ、第１から第３のグラフに対応しており、図３のグラフの３つの複製を行なうことが結果として生じる。さらに、チェックノード９０６’、９０６’’、及び９０６’’’は、それぞれ、第１から第３のグラフに対応し、３つの複製を行なうことが結果として生じる。３つのグラフのうちの別の１つのノードに対して、３つのグラフのうちの１つのノードを接続しているエッジがないということが注意されるべきである。したがって、３の要因(a factor of 3)によって基本グラフを「リフトする(lifts)」この複製するプロセス(copying process)は、３つのディスジョイント同一グラフ(disjoint identical graphs)を結果としてもたらす。
【００７６】
図１０は、行列１００２及び１００４を使用して上記で説明される複製するプロセスの結果を図示する。オリジナル図３のグラフの３つの複製を作るために、図４の行列４０２における各非ゼロエレメントは、３ｘ３識別情報行列と置き換えられるということに注目されるべきである。したがって、行列４０２におけるそれぞれ１つは、対角に沿っている１’ｓと、行列１００２を作るためにどこにでも存在する０’ｓと、を有している３×３行列で置き換えられる。行列１００２は、図４の行列４０２の３倍のエッジの数を有しており、つまり、図３で示される基本グラフの３つの複製のそれぞれ１つについて１２エッジを有する。ここで、変数ｘｉｊは、変数ノードＶｉｊに対応することができる。
【００７７】
エンコーダの修正(Modification of Encoder)
図８のエンコーダ８００は、上記で説明された（Ｚ＝３）パラレルグラフ((Z=3) parallel graphs)を符号化するために修正されることができる。ユニット操作プロセッサ１００８は、並列で、同時に３つの同一の操作を処理することができるベクトルユニット操作プロセッサが作られることができる。ユニット操作プロセッサ１００８からのすべての出力は、ベクトル化されることができ、それによって、以前に搬送されたデータの３倍を搬送する。単一のＳＩＭＤ命令の指示(direction)で使用して並列で３ビットを書き込むあるいは読み取ることができる、符号化メモリ１００６は、３倍幅広く作られることができる。これらのメモリからの出力は、３ビット幅ベクトル(3-bit wide vectors)であってもよい。しかしながら、ユニット操作制御１０１０、オーダリング(ordering)（読み取り／書き込み）制御１００４及びエンコーダタイミング制御モジュール１００２は、図８の同様に名づけられたエレメントと同じあるいは同様となる。
【００７８】
回転(rotation）
回転は、図１１で示されるような３ｘ３巡回置換行列と、図１０で示された３×３識別情報行列のそれぞれを置き換えることによって導入されることができる。図１１で使用される巡回置換行列について３つの可能性がありうるということに、注意されるべきである。置換行列が置換行列の第１行における第１の位置、第２の位置、あるいは第３の位置において配置された「１」を有しているかどうかを示すことによって、識別情報行列と置き換えられる予定である特定の置換行列を示すことが可能でありうる。例えば、行列１１０２のケースにおいて、一番上の左から始まり、下の右の端へと続行して、回転は、シーケンス（２，２，３，３，１，１，１，３，２，１，２，３）によって指定されることができる。
【００７９】
図１２は、制約ノードの側上で巡回置換（回転）を実行する効果を図示している。置換は、制約ノード側から実行されることができるので、変数ノード側からの、エッジ間の関係、例えばオーダリングは、列１２０２’、１２０２’’、及び１２０２’’’において示されるように変わらないままである。しかしながら、制約側から、置換は、列内のエッジ、例えば指定ベクトルエッジ内のエッジ、をもたらし、列１２０４’、１２０４’’、１２０４’’’で示されているように、再び順序づけられる。このことは、プロジェクトされたグラフの異なる複製に対応するノード間の相互接続を作ることができる。
【００８０】
ベクトルエッジ置換、すなわち操作、の結果として、制約ノードＣ１，１は、エッジ（１，１）に対してエッジ（２，１）に接続されてもよく、制約ノードＣ２，１は、エッジ（２，１）に対してエッジ（３，１）に結合されてもよく、制約ノードＣ３，１は、エッジ（３，１）に対して、エッジ（１，１）に結合されてもよいということに注目されるべきである。
【００８１】
回転を実行するために、スイッチをメッセージパス(message paths)に導入することによって、ＬＤＰＣ符号は、図１１において定義されるように符号化されることができる。
【００８２】
ベクトル符号化プロセスは、上記で説明された一般のＬＤＰＣ符号化プロシージャを適用することによってさらに理解されることができる。バイナリデータに取り組む代わりに、エンコーダは、Ｚビットのベクトル、すなわちプロジェクトされたグラフにおける対応するＺ並列複製のビット、に取り組む。パリティ検査行列Ｈ１１０２は、ＺｘＺすべてのゼロ行列あるいは
【数１３】
2010521128.tif 000015
【００８３】
によって表されるＺｘＺ巡回置換行列のエントリを備えることができる。Ｚ−ビットバイナリベクトルとの巡回行列σｋの乗算は、ｋビットごとにベクトルを右シフトすることと等しくてもよい。ＧＦ（２ｚ）のフィールドにおいて、符号化プロセスは、バイナリデータケースと同じに扱われることができ、可逆(invertability)φをテストするときに行列がバイナリ表示へと最初に戻されることができるという例外を備えている。
【００８４】
符号化プロセスの例(Example of Encoding Process)
図１３及び１４は、図１１で示されたＬＤＰＣ符号のための符号化プロセスの一例を図示する。符号化プレプロセッシングのステップは、より下三角の形へとパリティ検査行列Ｈの行及び列を再配置することができる。再配置Ｈ’１３０１の一例は、図１３において図示されている。Ｈ’１３０１は、オリジナル行列Ｈ’１１０２の行２及び４を置換することによって得られることができる。
【００８５】
エンコーダを構成することにおいて、プレプロセッシングは、ある情報を抽出し、保存することができる。行列Ａ１３０２は、行列Ｈ’１３０１のサブ行列（１，３；１，１）であってもよい。行列Ｂ１３０３は、サブ行列（１，３；２，２）であってもよい。行列Ｔ１３０４は、サブ行列（１，３；３，５）であってもよく、下三角の形である。行列Ｃ１３０５は、サブ行列（４，４；１，１）であってもよい。行列Ｄ１３０６は、サブ行列（４，４；２，２）であってもよい。行列Ｅ１３０７は、サブ行列（４，４；３，５）であってもよい。ガウス削除による、φ＝（−ＥＴ−１Ｂ＋Ｄ）の派生は、１３０８及び１３０９で図示されており、その逆数φ-１１３１０は、そのあと計算される。
【００８６】
オフラインでプレ計算された行列が与えられると、図１４は、情報ブロックｓ＝［１００］１４０１の一例について、実際の符号化プロセスを図示する。ベクトルとの行列乗算は、ベクトルＣｓ１４０２、Ａｓ１４０４、Ｔ−１Ａｓ１４０５、ＥＴ−１Ａｓ１４０６、ＥＴ−１Ａｓ＋Ｃｓ１４０７、ｐ１＝φ−１（ＥＴ−１Ａｓ＋Ｃｓ）１４０８、Ｂｐ１１４０９、Ｂｐ１＋Ａｓ１４１０、及びｐ２＝Ｔ−１（Ｂｐ１＋Ａｓ）１４１１を計算する。結果として生じたコードワードは、図１４１２において示されている。
【００８７】
上記で説明された、及び図７で図示された、バイナリ行列乗算の分解と類似して、ＧＦ（２ｚ）のフィールドにおける上記の行列操作は、回転、すなわち巡回シフト(cyclic shifts)、を組み込むときに単純な操作のシーケンスに分解されることができる。２つの命令―（０ ａ ｒ ｂ）及び（１ ａ ｒ ｂ）―は、次のように定義されることができ、（０ ａ ｒ ｂ）は、プロセッサにロケーションｂにおいて値を読み取り、ｒごとにそれを左巡回シフトし、そしてロケーションａに対して結果を書き込むように命令し、（１ ａ ｒ ｂ）は、プロセッサに、ロケーションｂにおいて値を読み取り、ｒごとに左巡回シフトし、ロケーションａにおける値に対する結果を加えるように命令する。
【００８８】
乗算行列の分解(Decomposition of a Multiplication Matrix)
Ｚ−ビットデータのベクトルｖ（ｎｘ１）で、ＺｘＺ巡回行列あるいは０行列のエントリを備えている行列Ｕ（ｍｘｎ）、の乗算を分解するときには、乗算の前に、ソースデータは、Ｚ−ビットデータ幅のいくつかのメモリにおいて、ロケーションｓ，ｓ＋１，…，ｓ＋ｎ−１において保持されることができるということが仮定されることができ、結果のデータは、同じメモリにおいてロケーションｔ，…，ｔ＋ｍ−１において保存される予定である。行列Ｕの列
【数１４】
2010521128.tif 000016
【００８９】
は、巡回シフト値
【数１５】
2010521128.tif 000017
【００９０】
で、列
【数１６】
2010521128.tif 000018
【００９１】
において、非ゼロエントリ、すなわち
【数１７】
2010521128.tif 000019
【００９２】
、を有しているということがさらに仮定されることができる。これらの仮定が与えられると、ｖとのＵの乗算は、次のシーケンスの操作：
【数１８】
2010521128.tif 000020
【００９３】
と等しい。命令のトータル数は、行列における非ゼロエントリの数と同じである。
【００９４】
符号化プロセス(Encoding Process)
１５は、図１１で示されたベクトルＬＤＰＣ符号についての操作のシーケンス（０ ａ ｒ ｂ）及び（１ ａ ｒ ｂ）として符号化プロセスを図示する。メモリ１５０２は、情報ビット、符号化されたビット、及び中間変数を保存することができる。メモリ１５０２は、情報ビット、符号化されたビット、及び中間変数を保存することができる。メモリロケーション０’〜１１’のそれぞれのコンテンツは、上記の対応するメモリロケーションの行１５０３で示されている。メモリは、Ｚ−ビットデータ幅であってもよく、すなわち、単純なＳＩＭＤ命令によるアクセッシングユニットは、Ｚ−ビットベクトルであり、各メモリのロケーション０’〜１１’は、Ｚビットを保持する。メモリ１５０２のロケーション０’は、単一の情報ベクトルを保存するために割り当てられることができ、ロケーション１’は、パリティベクトルｐ１を保存するために割り当てられることができ、ロケーション２’から４’は、パリティベクトルｐ’２を保存するために割り当てられることができる。追加メモリのスペースが、中間値を保持するために提供されることができる。メモリ１５０２は、ロケーション５’から７’に、Ａｓの値を、そのあとで、Ｂｐ１＋Ａｓのそれを保存するために提供することができ、Ｔ−１Ａｓを保存するためにロケーション９’から１１’に提供することができ、ＥＴ−１Ａｓを保存するためにロケーション１２’に提供することができる。
【００９５】
上記のメモリ１５０２の割り付けに関して、ベクトルとの行列乗算として図１４で図示された符号化プロセスは、表１５０４でリストされた操作のシーケンス（０ ａ ｒ ｂ）あるいは（１ ａ ｒ ｂ）へと分解される。明らかにするために、表１５０４は、それらのそれぞれの行列乗算カウンターパートと一緒に、命令のシーケンスを示す。例えば、乗算Ａｓは、２つの命令、（０ ７ ０ ０）が続く（０ ５ １ ０）に分解されることができる。図１４においてのように同じ情報ビットは、表７０６の第１行において図示されるように、ロケーション０へと、ｓ＝［１００］を保存することによって、符号化されることができる。命令（０ ５ １ ０）及び（０ ７ ０ ０）を実行する操作は、図１４におけるそのカウンターパートと同じ、ロケーション５’から７’まで結果Ａｓ＝（００１，０００，１００）を与えることができる。表１５０６は、命令のシーケンスが実行されているとき、メモリ１５０２のコンテンツの点において、完全な符号化プロセスを図示する。
【００９６】
表１５０４においてリストされる命令は、ハードウェアインプリメンテーションへと容易に解釈されることができる。命令セットの非常に多くの変更は、命令セットにおける冗長性を取り除くこと、メモリを初期化することを回避するために命令セットにおける命令を加えること、あるいは、メモリ操作の特性に合わせるために命令セットを最適化すること、を含んで、可能でありうる。そのような変更は、本願の範囲内で考慮されうる。
【００９７】
エンコーダ(Encoder)
図１６は、エンコーダ１６００を図示する。エンコーダ１６００は、エンコーダ８００を、回転を用いて、十分にベクトル化することができる。エンコーダ１６００とエンコーダ８００との間の類似点は、明らかでありうる。特に、エンコーダ制御モジュール１６１２及び操作制御モジュール１６１０は、エンコーダ８００のそれらのそれぞれのカウンターパート８０２及び８１２と同じ方法であるいは同様な方法で、機能することができる。例えば、図１２及び１３において定義されるＬＤＰＣ符号を符号化するために、これらのコンポーネントの操作は、図３の符号３００の例を符号化するとき、エンコーダ８００におけるそれらのカウンターパートとまさに同じであろう。符号化メモリ１６０６は、エンコーダ８００のそのカウンターパート８０６のベクトル化されたバージョンであってもよい。であるがゆえに、エンコーダ８００において、単一ビット保存されたメモリ、すなわちエンコーダ１６００の対応するメモリは、セット、すなわちＺ−ビットベクトル、を保存することができる。これらのベクトルは、ＳＩＭＤ命令を使用している単一ユニットとして書き込まれ、読み取られることができる。したがって、オーダリング（読み取り／書き込み）制御１６０４、すなわちメモリインデクスから、メモリに対して送信されるメッセージ識別子は、エンコーダ８００におけるそれらと等しいあるいは同様であってもよい。読み取り／書き込み制御モジュール１６０４のオーダリングは、エンコーダ８００のそのカウンターパート８０４のそれを超えて、置換、例えば回転、の情報を保存し、提供するさらなる役割を有している。
【００９８】
符号化の例３００において、エンコーダ８００は、単一ステップのシーケンス(sequence of single steps)をそのオーダリングモジュール１００４において保存され、そしてそれは、行列乗算の一連(a series of matrix multiplications)を一緒に実行する。図１１の符号を符号化するために、エンコーダ１６００を使用することを考慮してください。オーダリングモジュール１６０４は、符号化の間にＺ−ビットベクトルにアクセスするために、同じ上記シーケンスを保存することができ、また、Ｚ-ビットベクトルの同じシーケンスに関連づけられた回転を記載するシーケンスを保存することができる。このシーケンスは、スイッチ１６１６がベクトルを回転するために、オーダリングモジュール１６０４によって使用されるｒｏｔ信号(rot signal)を生成する基礎(basis)として役立つ。ベクトルユニット操作プロセッサ１６０８は、単一ビットの代わりにＺ−ビットベクトル上で、動作している（クリアリングして(clearing)、蓄積して(accumulating)）、あるいは出力している）ほかに、エンコーダ８００のそのカウンターパート８０８と同じである。
【００９９】
上記で説明された符号化方法及び装置に関するいくつかの変更は、いくつかのインプリメンテーションのケースにおいて減らされた複雑性を結果としてもたらす。下記は、上記で説明された制御メモリ１６０４及び符号化メモリ１６０６の両方のためのメモリの必要要件を減らすことができるいくつかの変更である。インプリメンテーションは、下記で説明された１つまたは複数の変更を組み込むことができる。
【０１００】
第１に、命令表示は、単純化されることができる、上記で説明したように、符号化命令セットは、様々な実施形態において、２つの基本命令（０ ａ ｒ ｂ）及び（１ ａ ｒ ｂ）の順序づけられたシーケンスであり、そしてそれは、実行されるときに、実際の符号化を作る。そのような命令シーケンスは、基本命令のシーケンスへと、あるベクトルとのいくつかの行列の乗算を連続的に分解することによって、生成されることができる。分解のいくつかの例は、圧倒的な割合の次のパターンのサブシーケンス（０ ａ ｒ０ ｂ０），（１ ａ ｒ１ ｂ１），…，（１ ａ ｒｋ ｂｋ）を含んでいる。このサブシーケンスにおけるａの繰り返しは、冗長であってもよい。この冗長性は、基本命令を修正することによって、容易に取り除かれることができる。したがって、２つの新しい命令、-（０ ０ ａ）及び（１ ｒ ａ）-は、次のように定義されることができ、（１ ｒ ａ）は、プロセッサにロケーションａにおいて値を読み取らせ、それをｒごとに左巡回シフトし、アキュムレータにおいて現在の値に対して値の排他的論理和をとるように命令することができ、（０ ０ ａ）は、プロセッサに、ロケーションａにアキュムレータにおいて現在の値を書き込み、アキュムレータにおける値を０にリセットするように命令することができる。古い命令から新しい命令への変換は、次の通りであり、（０ ａ ｒ ｂ）は、（１ ｒ ｂ）、（０ ０ ａ）に変換されることができ、（１ ａ ｒ ｂ）は、（１ ０ ａ）、（１ ｒ ｂ）、（０ ０ ａ）に変換されることができる。このルールにしたがうと、例示的なシーケンス（０ ａ ｒ0 ｂ0），（１ ａ ｒ1 ｂ1），…，（１ ａ ｒk ｂk）は、（１ ｒ0 ｂ0），（１ ｒ１ ｂ１），…，（１ ｒｋ ｂｋ）、及び（０ ０ ａ）に変換されてもよく、したがって、冗長性を取り除く。この方法で命令セットを変換することは、符号化メモリ１６０６をインプリメントするために必要とされるメモリの量を減らすことができる。
【０１０１】
次に、命令セットの濃度(cardinality)は、減少させられることができ、ＬＤＰＣ符号化を行列及びベクトル乗算のシーケンス(a sequence of matrices and vectors multiplications)１６００として扱うとき、符号化プロセスは、３つのステージにざっと分けられることができる。第１のステージにおいては、Ｔ−１ＡｓＴは、はじめにＡｓＴを解き、そのあとでＴｚ＝ＡｓＴを解くことによって得られることができ、第２のステージにおいては、
【数１９】
2010521128.tif 000021
【０１０２】
は得られることができ、最後のステージにおいては、与えられた
【数２０】
2010521128.tif 000022
【０１０３】
は、
【数２１】
2010521128.tif 000023
【０１０４】
を解くことによって得られることができ、そしてそれは、バック-置き換え(back-substitution)を効率的に使用して行われることができる。オリジナルの形において、各ステージにおける行列及びベクトルの乗算は、命令サブセットに分解されることができる。それらの３つのサブセットのシーケンシャル連鎖(sequential concatenation)は、完全な命令セットであってもよく、命令セットの終わりは、符号化プロセスの終了を意味する。しかしながら、第１のステージと最後のステージとの間の命令サブセットを共有することは、可能であってもよく、したがって、命令セットの濃度を減らす可能性がある。
【０１０５】
Ｔ−１ＡｓＴは、もし
【数２２】
2010521128.tif 000024
【０１０６】
が０に初期化される場合に
【数２３】
2010521128.tif 000025
【０１０７】
を解くことによって得られることができるということに注目されることができる。次に、命令のシーケンスは、最後のステージのために及び第２ステージのために命令サブセットの連結となるように、定義されることができる。符号化は、１）
【数２４】
2010521128.tif 000026
【０１０８】
が０となるように初期化すること、２）最後のステージのために命令サブセットを実行すること（Ｔ−１ＡｓＴを得る）、３）第２のステージのために命令サブセットを実行すること（
【数２５】
2010521128.tif 000027
【０１０９】
を得る）、４）最後のステージのために、命令サブセットを再び実行すること（
【数２６】
2010521128.tif 000028
【０１１０】
を得る）を備えることができる。
【０１１１】
この命令セットの共有は、エンコーダ制御デバイス１６１２におけるメモリを減らすことができ、Ｔ−１ＡｓＴが
【数２７】
2010521128.tif 000029
【０１１２】
についてのロケーションにおいてセーブされることができるように、符号化メモリ１６０６を減らすこともでき、そしてそれは、セーブすることに必要がない可能性がある。
【０１１３】
基本符号化構造ベース(Base Encoding Structure)
図１７は、パリティ検査行列１７００（グラフィック記号を含んでいるボックスは１を示しており、グラフィック記号を含まず、あるいは空であるボックスは０を示す）を図示し、図１８は、Ｔａｎｎｅｒグラフを図示しており、基本符号化構造ベースＡの両方の表示は、下記で説明される。図１８のグラフがリフトされるとき、四角としてここでは図示され、行列の各エントリは、置換行列あるいはゼロ行列となりうる。ゼロ行列は、空のボックスに対応し、置換行列は、グラフィックシンボルを有するボックスに対応する。巡回リフティングのケースにおいては、置換行列は、巡回置換行列であってもよい。パリティ検査行列として構造の表示において、行及び列は、置換されるように表されることができるということが理解されるべきである。同様に、Ｔａｎｎｅｒグラフは、順序変更された方法で表されることができる。さらに、行列及びグラフは、より大きい構造のサブ行列及びサブグラフであってもよい。
【０１１４】
プロジェクトされたグラフはまた、基本グラフとして知られうる。完全なグラフは、リフトされたグラフとして知られうる。リフトされたグラフは、基本グラフのＺ複製を作り、複製の中で同様なエッジを置換することによって、得られることができる。簡略化のために、巡回置換に焦点をあてている。
【０１１５】
基本グラフで有するための便利な符号化構造は、単一の次数３の変数ノードと一緒の次数２の変数ノードの累積チェインであってもよい。構造は、次数３の変数ノードＶ１と累積チェインにおけるすべての次数２の変数ノードＶ２−Ｖ９を通じて受け渡される単独のループ１８００から主に成る。次数３の変数ノード上の２つのエッジ（１８０２，１８０４）は、ループに関係する。次数３の変数ノードＶ１上の第３エッジ１８０６は、関連づけられたパリティ検査行列を可逆のままにして、ループからの恣意的チェックノード(an arbitrary check node)に起こりやすい。（図１８において、チェックノードは、Ｃ１−Ｃ９を含むことができる。）この符号化構造は、基本符号化構造ベースＡと呼ばれることができ、図１８において示されている。いくつかの実施形態において、次数３ノードＶ1は、累積チェインにおけるすべての次数ノードを含むループを形成しなくてもよい。この符号化構造は、基本符号化構造ベースＢと呼ばれることができる。したがって、基本符号化構造ベースＡは、基本符号化構造ベースＢの特別なケースであってもよい。
【０１１６】
基本グラフのコアは、上述されたループに関係している制約ノードに接続することができるさらなる変数ノードと一緒に上記の説明された構造から成ることができる。図１９で示されているように、基本グラフ１９００のコアに属している変数ノードから形成されるさらなるパリティ検査ビットがあってもよい。
【０１１７】
次数１の変数ノードの符号化は、いったんすべての他のビットが決定されると、非常に単純でありうる。したがって、符号化のために、第１の焦点は、これらのノードを取り除かれた(stripped of)構造にあってもよい。図２０は、取り除かれたノード(stripped nodes)なしに、図１９に対応する、例２０００を与える。結果として生じる構造は、コアとよばれてもよい。コアがサブ構造として、図１９の例におけるように、サブ構造として、基本符号化構造ベースＡを含み、その後で、基本符号化構造ベースＡを使用することは、情報ノードとして他の変数ノードを設定することを含み、システマチックノード(systematic nodes)とも呼ばれることができる。これらのノードに関連づけられたビットの値は、情報ビットから割り当てられている。基本符号化構造ベースＡに関連づけられたビットは、そのあとで、符号化を完了するために、計算されることができる。いったん基本符号化構造ベースＡの次数３の変数ノードの値が決定されると、そのあとで、累積チェインのビットは、単純な畳み込みのようなプロセス(simple convolution-like process)によって決定される。ＧＦ［２］にわたるコアの基本グラフにおけるすべての制約が加えられる場合、すなわち、制約から変数ノードまでの偶数のエッジが、符号化においては、０エッジと、等しいということ、及び制約から変数ノードまでの奇数のエッジは、１エッジに等しいかもしれないことに注意して、そのときには、基本符号化構造ベースＡにおける次数−３ノードは、コアの基本グラフの奇数次数の情報変数ノードの単純なパリティとして書き込まれることができるということが観察されることができる。
【０１１８】
グラフがリフトされるときに、累積チェインにおける次数２の変数ノードに関連したエッジの各ペアが同じリフティング値を与えられうる場合、そのときには、コアの基本グラフについて上記で説明されたキープロパティ(key property)は、コアでリフトされたグラフ(core lifted graph)について保存されることができる。とくに、リフトされたパリティ置換行列を加えることは、ブロックワイズ方式である以外は基本グラフの制約を加えることと類似しており、累積チェインにおける次数２ノードに関連したエッジは、情報リフトされたノードのパリティとして次数３のリフトされた変数ノードを残して、互いを効率的にキャンセルする(cancel)。次数３の変数ノードに関連づけられた結果として生じる行列は、Φ行列である。
【０１１９】
リフティング基本符号化構造ベースＢの一実施形態において、次数３ノード（degree three node）に関連づけられたエッジのうち２つに関する回転値は、第３エッジが任意の異なる値をとるけれども、形ｓ及びｓ＋Ｌ／４をとることができる。ここで、ｓは、任意の整数であり、Ｌは、リフティングサイズである。このケースにおいては、行列Φ−１は、多くて９つの置換行列の和だとわかるかもしれない、すなわちΦ−１による乗算は、多くて９倍のベクトルを置換することと、多くて９つの複製を加えることと、を含んでいる。この符号化構造は、リフトされた符号化構造Ｂと呼ばれることができる。
【０１２０】
リフティング基本符号化構造ベースＢの別の実施形態において、次数３ノードに関連づけられたループエッジのうち２つに関する回転値は、第３エッジが任意の異なる値をとるけれども、形ｓ及びｓ＋Ｌ／２をとることができる。このケースにおいては、行列Φ−１は、多くて３つの置換行列の和であるかもしれない、すなわちΦ−１による乗算は、多くて３倍のベクトルを置換することと、多くて３つの複製を加えることと、を含んでいる。この符号化構造は、リフトされた符号化構造Ｃと呼ばれることができる。
【０１２１】
リフティング基本符号化構造ベースＢの別の実施形態において、次数３ノードに関連づけられたエッジの２つに関する回転値は、第３のエッジが任意の異なる値をとるけれども、値を取ることができる。このケースにおいては、行列Φ−１は、単一置換行列であること、すなわちΦ−１による乗算は単純な置換のみを含む、が判明するかもしれない。この符号化構造は、リフトされた符号化構造Ｄと呼ばれることができる。
【０１２２】
リフトされた符号化構造Ｂ、Ｃ、及びＤは、すべて基本符号化構造ベースＢのリフティングであってもよいということが注意されるべきである。いくつかの実施形態において、次数３ノードの２つの指定されたエッジは、基本符号化構造ベースＡにおける次数３ノードの２つのループエッジであってもよい。リフトされた符号化構造Ｂ、Ｃ、及びＤの中で、Ｂが最大の複雑さを有し、Ｃは、それらの間のどこかに存在しうるが、Ｄは、少なくとも複雑さを有しうる。対照的に、Ｂの利点は、リフトされたグラフにおいて、次数２ノードを通じてのループパッシング(the loop passing through the degree-2 nodes)は、また、４つの次数−３ノードを通じて受け渡すことができ、そしてそれは、グラフのパフォーマンスを、特に高い信号対雑音比において、改善することができる。対照的に、構造Ｃにおいて、次数−２チェインからのループは、２つの次数３ノードのみを通じて、受け渡すことができる、その一方で構造Ａにおいては、１つの次数３ノードのみを通じて受け渡すことができる。したがって、符号化構造Ｂ、Ｃ、及びＡは、パフォーマンスと複雑さとの間で異なるトレードオフ(trade-offs)を提供することができる。
【０１２３】
符号化構造Ｂの最もリフトされたバージョンの場合、置換に関する上述された制約は累積チェインに関連づけられており、Φマトリクスは３つの置換行列の和であろう。次数３ノードのエッジのうち２つが同じ置換を有する場合、そのときには、Φ行列は、置換行列であってもよい。これは、リフトされた符号化構造Ｄについてのケースであってもよい。リフトされた符号化構造Ｄは、基本符号化構造ベースＡのリフティングである場合、同じ置換を備えたエッジは、次数３ベースノードからの２つのリフトされたループエッジであり、そのあと、構造は、リフトされた符号化構造Ａと呼ばれることができる。残りのキャンセルされなかったエッジに関連づけられた回転が０である場合、あるいは、Φが識別情報行列である場合、そのときには、構造は、識別を備えたリフトされた符号化構造Ａと呼ばれることができる。
【０１２４】
デコーダのパラレリズムの大きな次数の場合には、リフティングサイズＺの大きな値を有することに対して利益的でありうる。対応して、小さい基本グラフを有することは望ましい可能性がある。このことは、上記で説明された符号化構造を使用することにおいて、困難さを作ることができる。具体的には、基本グラフが小さい場合には、累積チェインは、かなり短い可能性がある。構造リフトされた符号化構造Ａを使用するときに、長さが基本グラフの累積チェインである、リフトされた次数３の変数ノードのうちの１つの複製と、次数２ノードのチェインと、から成るＺループが作られることができる。したがって、この符号化ループはかなり短く、そして、このことは、符号の悪いパフォーマンスを結果としてもたらすことができる。
【０１２５】
ここで提示された構造は、小さい基本グラフを保持する一方で、符号化ループＬから２Ｌ＋１までにおける累積チェインの効率的な増加を可能にすることができる。符号化構造Ａは、２倍のサイズの基本グラフ及びリフティングサイズＺ／２を備えたものとして、リフティングサイズＺを備えた基本グラフを拡張した後で、表されることができる。この拡張は、グラフを変更せず、基本グラフ及びリフティングとしての解釈のみである。
【０１２６】
拡張(Expansion)
１セットの整数｛０，…，Ｚ−１｝は、セット｛０，２，…，Ｚ−２｝及びセット｛１，３，…，Ｚ−１｝のインターリービング(interleaving)である。｛０，…，Ｚ−１｝に関する巡回置換は、Ｓごとに右に巡回的にシフトされる(cyclically shifting)ことによって、実行されることができ、そして、偶数エレメント｛０，２，…，Ｚ−２｝及び奇数エレメント｛１，３，…，Ｚ−１｝の巡回置換、及び２つのリインターリービング(reinterleaving)として均等に表されることができる。シーケンスのリインターリービングは、Ｓが偶数である場合には偶数のサブセットで始まり、Ｓが奇数である場合には奇数のサブセットで始まる。偶数シーケンスの巡回シフトは、ほとんどのＳ／２において(at most S/2)最大の整数であるＫであってもよく、奇数シーケンスの巡回シフトはＳ−Ｋであろう。
【０１２７】
基本グラフのサイズＺのリフティングであるグラフで始まり、各基本グラフは、複製されることができ、１つは偶数ノードであり、他は、奇数ノードであり、Ｚ／２にまでリフティングサイズを減らし、上記で説明された表示を使用して、オリジナルサイズの２倍のサイズＺ／２の基本グラフのリフティングとまったく同じグラフを再現する。オリジナルグラフにおいてリフトされた変数ノードが置換Ｓでリフトされたチェックノードに接続される場合、そのときにはノードを複製した後で、変数ノードの偶数複製はチェックノードの偶数複製に接続され、変数ノードの奇数複製は、チェックノードの奇数複製に接続されることができ、Ｓが偶数である場合及びＳが奇数である場合、そのときには、偶数変数ノードは、奇数チェックノードに接続されることができ、奇数変数ノードは、偶数チェックノードに接続されることができる。これら２つのエッジに関連づけられたリフティングは、Ｋ及びＳ−Ｋであってもよい。
【０１２８】
この２倍の基本グラフのＺ／２−リフトされた構造において表れるリフトされた符号化構造Ａを有することが目標である。したがって、符号構造は、オリジナルＺ−リフトされたより小さい基本グラフの構造において、黙示(implicit)であるべきである。
【０１２９】
このことが生じるために、累積チェインのループを閉じるさらなる次数２ノードが基本符号化構造ベースＡに加えられることができる。基本グラフにおいて、このノードは、次数３ノードからのそれらのうちの２つを並列しているそのエッジを有する。リフティングを実行するときに、このノード上のエッジは、整数値Ａ、およびＡ−１をとることができ、すべての値は、モジュローＺとして解釈される。この方法で、基本グラフのＺ複製において表されるであろう次数２ノードを通じたＺループは、単一ループＺ倍長くなるであろう。符号化構造における次数３の変数ノードのループエッジ上のこの巡回置換に加えて、整数Ｂ−１とＢモジュローＺがあり、ただし、基本グラフにおいて、Ｂ−１置換は、リフティング値Ａを有するループ次数２の変数ノード上のエッジと同じ制約ノードに接続されたエッジに関連づけられることができる。この構造が与えられると、基本グラフは、上述で説明されるように拡張されることができ、リフティングサイズは、結果として生じるグラフは、リフトされた符号化構造Ａを含むように、半分にされてもよい、ただし、さらなる次数２の変数ノードの１つの複製は、符号化構造に関係している一方でその他は関係しておらず、また次数３の変数ノードの２つの複製のうちの１つは関係するがその他はしない。
【０１３０】
いくつかの生成が、ここで可能であり得る。第１に、リフティングＺは２乗であると一時的に仮定すると、基本グラフを拡張するときに、リフティング値ＳのＬＳＢは、基本グラフへと動かされることができる。異なるビットが使用されうる。ｋ番目のビットが使用される場合には、そのときには上記のＡ−１及びＢ−１の代わりに、Ａ−２ｋ及びＢ−２ｋが結果として生じるであろう。このケースにおいて、リフトされた蓄積構造は、単一の大きなループを形成しないかもしれないが、いくつかのループを形成する。第２に、この焦点はＺについて２乗であるにもかかわらず、他の値が使用されうる。一般に、ＦがＺの要因である限り、要因Ｆによるこの方法は、基本グラフを増大させることができる。
【０１３１】
いくつかの符号設計において望ましい追加プロパティは、リフティングのスケーラビリティであり、すなわち、同じ基本グラフは、異なるリフティングサイズＺで使用されることができる。さらに、異なるサイズのリフティングは、単独のリフティングからしばしば派生する。特に、焦点は、１６から最高５１２あるいは１０２４である２の二乗であるＺ値をサポートしていることに当てることができる。追加目的は、上記で説明されたスケーリング下で保存されたものとして、符号化構造を有することであってもよい。これは、スケーリングパラメータを妨げる(constrains)。最大のリフティングサイズのリフティングが定義され、より小さいものは、リフティング値からＬＳＢｓの適切な数を取り除くことによって派生されるスケーリングのルール(scaling rule)が提供されることができる。このスケーリング法(scaling law)は、次のように一般に表されることができる。もしＳがリフティングサイズＺｍａｘに関連するリフティングである場合には、そのときには、リフティングサイズＺ１に関連するリフティングは、大きくて、Ｓ＊Ｚ１／Ｚｍａｘで、最大整数であることができる。スケーリングの下で保存される符号化構造を有することが望ましい。このタイプのスケーリングの下でいつも保持されるすなわち０及び−１ ｍｏｄ ２ｎである、２つの特別なリフティング値の数字がある。したがって、符号化構造がこれらの２つの値のみを使用する場合には、そのときには、スケーリングの下で保存されるであろう。
【０１３２】
したがって、１つのオプションは、次数−３ノードのループエッジ上でリフティング値０及び−１を、ノンループエッジ上で任意の値を、有することである。この基本グラフが２ずつ拡張されるとき、符号化構造Ａをリフトする。この構造は、値０及び−１はそのようなスケーリングの下で保存されているので、すべて２の二乗によって(by all powers of two)スケーリングの下で保存されることができる。また、リフトされた符号化構造Ａは、使用されることができ、Φ−１は、拡張されたグラフの置換行列であるということを意味する。
【０１３３】
別の可能な望ましい特徴は、識別情報を備えたリフトされた符号化構造Ａを有し、０となるように次数３符号化ノードのノンループエッジ上で置換を有することである。このことは、０あるいは−１の値を有する符号化構造においてすべての他の巡回置換を有することと、また、グラフにおける低い次数の変数ノードの短いループを同時に回避することと、で矛盾する(conflicts with)。
【０１３４】
しかしながら、符号化構造の保存がいくつかの最低リフティングサイズで例えば２、１６に下げている場合には、そのときには、０及び−１以外の値が使用されうる。
【０１３５】
次数２のリフトされたループ構造及び次数３の符号化の列の主な特徴は、リフティング置換はいくつかの整数Ｋについて値Ｋ及びＫ−１を取る。Ｋ＝０のみ、サイズ２に下げて、すべてのリフティングについて、このことを保存することができる。しかしながら、このプロパティが、リフティングをサイズ１６に下げて保存される予定である場合には、そのときには、Ｋについての異なる値が選択されることができる。Ｋが、ｎが４よりも大きいあるいは等しいＺ＝２ｎに対応するｎビットの長さである場合、そのときには、他は任意であるが、Ｋのｎ−３ ＬＳＢｓが０となるように、選択されることができる。Ｋ−１ ｍｏｄ２ｎのｎ−３ ＬＳＢｓは１であるということが続く。このケースにおいて、１ごとに異なっているリフティング値の主な特徴は保存される。例えば、もしＫがｎビット数であり、Ｊが、Ｋの、第１のｍビットとして与えられたｍ−ビット数、言い換えるとｍＭＳＢｓ、であり、ｍが４あるいはそれよりも大きい場合、そのときには、Ｊ−１モジュロー２ｍは、Ｋ−１モジュロー２ｎのｍ ＭＳＢｓに等しい。言い換えれば、Ｋ及びＫ−１のｎ−ｍ ＬＳＢｓがドロップされる場合には、そのときには、結果は、Ｊ及びＪ−１モジュロ２ｍのバイナリ表示である。このことは、符号化構造における次数３のノンループエッジ上で置換を設定するために使用されることができるので、拡張された符号化構造において、リフトされた符号化構造Ａに関与する、符号化次数３の変数ノードの複製は置換値０でリフトされたそのノンループエッジを有する。したがっ7て、拡張された符号化構造は、識別情報を備えた符号化構造Ａをリフトされる。最後のｎ−３ビットが０であるｎビット数は、ｎ−３ ０ビット数と呼ばれる。
【０１３６】
図２１は、基本符号化構造ベースＡの拡張を図示しており、変数ノードＶ１−Ｖ４と、制約ノードＣ１−Ｃ４を有しており、さらなる次数２の変数ノードＶｘは、ループ２１０２を形成するためにアキュムレータチェインを閉じる。
【０１３７】
図２２は、図２１の拡張された基本符号化構造ベースＡ２１００のリフティングＺ＝８を図示する。グラフィックシンボルが、奇数及び複数の複製を区別するために使用される。この図において、０のシフトまたは−１のシフトが使用されている。次数３ノードのノンループエッジは、取り付けられて示されておらず、その置換は与えられていない。リフトされた次数３ノードのループエッジ上の置換の選択により、このことは、リフトされた符号化構造Ａを表さない。変数ノードＶｘ，ｚは、ｘがグラフの数でありｚがリフティングサイズである、第１から第８のグラフに対応することができる。制約ノードＣｘ，ｚは、ｘがグラフの数でありｚがリフティングサイズである、第１から第８のグラフに対応することができる。
【０１３８】
図２３は、サイズ４のリフティング及び２倍の基本グラフとして、図２２で示されたグラフの拡張を図示する。グラフは、図２２のアキュムレートループを閉じた奇数の次数３ｓ及び次数２の半分を使用して、リフトされた符号化構造Ａを含むことができるということに注意してください。
【０１３９】
パリティ検査行列(Parity Check Matrices)
上記の説明されたアプリケーションは、第３世代パートナーシッププロジェクト２（３ＧＰＰ２）の無線通信システムにおいて使用されることができる。そのようなシステムは、同時係属している米国仮特許出願シリアル番号６０／８６２，７３０においてある程度で説明されており、ここによって、参照によって組み込まれ、本願の一部分を形成する。さらに、これらの例についての明記された符号化(stipulated encoding)は、符号化のための基本として、リフトされた符号化構造Ａを使用するためであってもよい。言い換えると、拡張されたグラフにおいて現れたリフトされた符号化構造Ａは、コアのパリティビットを表している。例における列あるいは変数ノードを再び順序づけすること(reordering)は、重要な方法で例を変更しないということが理解されるべきである。同様に行あるいは制約ノードを再び順序づけすることは、例を変更しない。同様に、列におけるすべてのリフティング値に対して一定数を加えることは、重要な方法で例を変更しない。
【０１４０】
図２４は、低密度パリティ検査（ＬＤＰＣ）符号を使用してデータを符号化するためのエンコーダ２４００を図示しているブロック図である。エンコーダは、二部グラフを備えた符号化されたデータの表示が可能とすることができる。エンコーダ２４００は、データを受信し送信することができる通信インタフェース２７０４に結合されたプロセッシング回路２４０２（例、プロセッサ、プロセッシングモジュール）と、符号化されたデータを保存するメモリデバイス２４０６と、を含むことができる。プロセッシング回路２４０２は、１つまたは複数の命令をプロセッシング回路２４０２に提供するために制御モジュール２４０８に結合されることができる。命令は、限定されてはいないが、メモリデバイス２４０６がアクセスされる順序とデータフローのタイミングとを含むことができる。プロセッシング回路２４０２は、以下を達成するファンクションを実行することができる：（ａ）複数の低い次数の変数ノードの累積チェインを生成すること、（ｂ）ループを２回形成するために累積チェインを閉じること、なお１回は、低い次数の変数ノードを使用し、１回は、低い次数の変数ノードよりも高い次数の変数ノードを使用しており、より高い次数の変数ノードは、ノンループクロージングエッジを備えている。
【０１４１】
図２５は、低密度パリティ検査（ＬＤＰＣ）符号を使用してデータを符号化するためのエンコーダ上で動作可能な例示的な方法を図示する。エンコーダは、２部グラフで符号化されたデータを表示することができる。エンコーダが符号化２５０２について低密度パリティ検査（ＬＤＰＣ）符号を受信するときの例示的な方法の操作。次にエンコーダは、低い次数の変数ノードの累積チェインを生成することができる２５０４。一構成において、複数の低い次数の変数ノードは、各エッジ上で同じ置換(permutation)を有することができる。次に、二回ループを形成するために累積チェインは閉じられることができ２５０６、一回は、低い次数の変数ノードを使用して、一回は、低い次数の変数ノードよりも高い次数の変数ノードを使用しており、ただしより高い次数の変数ノードは、ノンループクロージングエッジを備えることができる ２５０８。
【０１４２】
別の構成にしたがって、エンコーダの回路は、二部グラフによる表示が可能である低密度パリティ検査（ＬＤＰＣ）符号を使用してデータを符号化するために適合されることができる。同じ回路、異なる回路、あるいは同じあるいは異なる回路の第２セクションは、各エッジ上で同じ置換を有する複数の低い次数の変数ノードのループを作っている累積チェインを生成するために適用されることができる。さらに、同じ回路、異なる回路、あるいは同じあるいは異なる回路の第３セクションは、低い次数の変数ノード及び低い次数の変数ノードよりもより高い次数の変数ノードを使用してループを閉じるために適用されることができ、ただし、より高い次数の変数ノードは、ノンループクロージングエッジを備えている。同様に、同じ回路、異なる回路、第４セクションは、前記累積チェインの複数の順序変更された複製、ループの低い次数の変数ノードの複数の順序変更された複製、及びより高い次数の変数ノードの複数の順序変更された複製を備えている、リフトされたグラフ、を使用するために適用されることができる。当業者は、一般的に、本開示において説明されるプロセッシングのほとんどは、同様な方法でインプリメントされることができるということを理解するであろう。回路（単数または複数）あるいは回路セクションのいずれかは、１つまたは複数のプロセッサを備えた集積回路の一部として、単独で、あるいは、組み合わせで、インプリメントされることができる。１つまたは複数の回路は、集積回路、アドバンスＲＩＳＣマシン(an Advance RISC Machine)（ＡＲＭ）プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、汎用プロセッサ等、上でインプリメントされることができる。
【０１４３】
概要(summary)において、本願は、限定されないが、基本グラフに関して、以下の１つまたは複数を含む多くの利益を供給することができる。
【０１４４】
１．すべての次数２の変数ノードを備えた累積チェインは、各エッジ上で同じ置換を有することができる。
【０１４５】
２．さらなる次数２の変数ノード、ループ次数２のノードはループを閉じ、次数３の変数ノードは、またループを閉じる。次数３の変数ノードの第３エッジは、ノンループエッジであってもよい。またリフティングに関して：
３．ループ次数２の変数ノードのエッジ上の置換は、ｎ−３ ０ビット数Ａ及びＡ−１ ｍｏｄ ２ｎであり、ただし２ｎは最大のリフティングサイズである。
【０１４６】
４．次数３の変数ノードのループエッジ上の置換は、ｎ−３ ０ビット数Ｂ及びＢ−１ ｍｏｄ ２ｎであり、ただし、基本グラフにおいて、Ｂ−１置換は、リフティング値Ａを有するループ次数２の変数ノードに関するエッジと同じ制約ノードに接続されたエッジと関連づけられる。
【０１４７】
５．次数３の変数ノードのノンループエッジ上の置換はＣである。
【０１４８】
さらに、特別なケースは、Ｃ＝０を含むことができる。構造が拡張されるときに、拡張されたグラフは、リフトされた符号化構造Ａを含み、そしてそれは、識別情報を備えたリフトされた符号化構造Ａを含むことができ、ただし、リフトされた符号化構造Ａは、すべてのアキュムレート次数２の変数ノードから成り、ループの次数２の変数ノードの半分は、拡張された基本グラフにおいて表れる、２つの複製のループ次数２ノードのうちの１つに対応しており、次数３の変数ノードの半分は、拡張された基本グラフにおいて表れる、２つの複製の次数３ノードのうちの１つに対応している。
【０１４９】
開示された実施形態は、次の技術：符号分割多元接続（ＣＤＭＡ）システム、多重キャリアＣＤＭＡ(Multiple-Carrier CDMA)（ＭＣ―ＣＤＭＡ）、広帯域ＣＤＭＡ（Ｗ−ＣＤＭＡ）、高速ダウンリンクパケット接続（ＨＳＰＤＡ）、時分割多元接続（ＴＤＭＡ）システム、周波数分割多元接続（ＦＤＭＡ）システム、および直交周波数分割多元接続（ＯＦＤＭＡ）システム、のうちいずれか１つあるいは組み合わせたものに適用されることができる。
【０１５０】
ここにおいて説明されるシグナリング送信技術は、様々な手段によってインプリメントされることができる。例えば、これらの技術は、ハードウェア、ソフトウェア、あるいはそれらの組み合わせにおいて、インプリメントされることができる。ハードウェアインプリメンテーションの場合は、シグナリングを処理する（例、圧縮し、符号化する）ために使用されたプロセッシングユニットは、１つ以上の特定用途向け集積回路（ＡＳＩＣｓ）、デジタル信号プロセッサ（ＤＳＰｓ）、デジタル信号処理デバイス（ＤＳＰＤｓ）、プログラマブルロジックデバイス（ＰＬＤｓ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡｓ）、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、ここに説明されたファンクションを実行するように設計された他の電子ユニット、あるいはそれらの組み合わせ、の中でインプリメントされることができる。シグナリングを復号し、解凍する(decompress)ために使用されるプロセッシングユニットはまた、１つ以上のＡＳＩＣｓ、ＤＳＰｓなどを使って、インプリメントされることもできる。
【０１５１】
ソフトウェアインプリメンテーションの場合は、シグナリング送信技術は、ここにおいて説明されるファンクションを実行するモジュール（例、プロシージャ、ファンクション、等）でインプリメントされることができ、例えばコンパクトコンピュータディスのようなマシン可読メディア上で保存されることができる。ソフトウェア符号は、メモリユニットにおいて保存され、プロセッサによって実行されることができる。メモリユニットは、プロセッサ内で、あるいはプロセッサの外でインプリメントされることができる。
【０１５２】
図８、１６、２４、及び２５において図示されるコンポーネント、ステップ、及び／またはファンクションのうち１つまたは複数は、単一のコンポーネント、ステップ、あるいはファンクションに再配置され及び／または組み合わされることができ、あるいはいくつかのコンポーネント、ステップ、あるいはファンクションにおいて具現化されることができる。さらなるエレメント、コンポーネント、ステップ、及び／またはファンクションはまた、範囲から逸脱することなく加えられることができる。図８、１６、及び／または２４で図示された、装置、デバイス、及び／またはコンポーネントは、上記で説明される方法、特徴、あるいはステップの１つまたは複数を実行するように構成されることができる。ここにおいて説明される新規アルゴリズムは、ソフトウェア及び／または埋め込まれたハードウェアにおいて効率的にインプリメントされることができる。
【０１５３】
当業者は、様々な説明のための論理ブロック、モジュール、回路、および、ここに開示された実施形態に関連して説明されたアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェアあるいは両方の組合せとしてインプリメントされることができる、ということをさらに理解するであろう。ハードウェアとソフトウェアのこの互換性(interchangeability)を明瞭に説明するために、様々な説明のためのコンポーネント、ブロック、モジュール、回路およびステップが、一般に、それらの機能性という観点から、上記で説明されてきた。そのような機能性が、ハードウェアあるいはソフトウェアとしてインプリメントされるかどうかは、特定のアプリケーションと全体のシステムに課された設計制約(design constraints)に依存する。
【０１５４】
ここにおいて説明された本願の様々な特徴は、範囲から逸脱することなく異なるシステムにおいてインプリメントされることができる。例えば、本願のいくつかのインプリメンテーションは、コンピュータ、パーソナルアシスタントデバイス(personal assistant devices)、デジタルオーガナイザ(digital organizers)等、上で実行されることができる。
【０１５５】
前述の実施形態は、単なる例であって、範囲を限定するものとして解釈されるべきではないということに注意されるべきである。本実施形態の説明は、説明のためのものであって、特許請求項の範囲を制限するものとして意図されていない。そのため、本教示は、他のタイプの装置に容易に適用されることができ、そして、多くの代替(alternatives)、修正(modifications)、及び変更(variations)が、当業者にとって明らかであろう。
【図１】
2010521128.tif 000030
【図２】
2010521128.tif 000031
【図３】
2010521128.tif 000032
【図４】
2010521128.tif 000033
【図５】
2010521128.tif 000034
【図６】
2010521128.tif 000035
【図７】
2010521128.tif 000036
【図８】
2010521128.tif 000037
【図９】
2010521128.tif 000038
【図１０】
2010521128.tif 000039
【図１１】
2010521128.tif 000040
【図１２】
2010521128.tif 000041
【図１３】
2010521128.tif 000042
【図１４】
2010521128.tif 000043
【図１５】
2010521128.tif 000044
【図１６】
2010521128.tif 000045
【図１７】
2010521128.tif 000046
【図１８】
2010521128.tif 000047
【図１９】
2010521128.tif 000048
【図２０】
2010521128.tif 000049
【図２１】
2010521128.tif 000050
【図２２】
2010521128.tif 000051
【図２３】
2010521128.tif 000052
【図２４】
2010521128.tif 000053
【図２５】
2010521128.tif 000054
【手続補正書】
【提出日】平成21年12月9日(2009.12.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
二部グラフによる表示が可能である低密度パリティ検査（ＬＤＰＣ）符号を使用してデータを符号化するための方法であって、前記方法は、
複数の低い次数の変数ノードの累積チェインを生成することと；
ループを二回形成するために前記累積チェインを閉じることと、なお、一回は、低い次数の変数ノードを使用し、一回は、前記の低い次数の変数ノードよりも高い次数の変数ノードを使用しており、前記のより高い次数の変数ノードは、ノンループクロージングエッジを備えている；
を備えている、方法。
【請求項２】
前記複数の低い次数の変数ノードは、各エッジ上で同じ置換を有する、請求項１に記載の方法。
【請求項３】
前記複数の低い次数の変数ノードは、複数のコア次数２の変数ノードを備えており、
前記のより高い次数の変数ノードは、コア次数３の変数ノードを備えており、
ループクロージングの低い次数の変数ノードは、ループクロージングのコア次数２の変数ノードを備えている、請求項１に記載の方法。
【請求項４】
前記累積チェインの複数の順序変更された複製、前記ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及び前記のループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用すること、をさらに備えている請求項１に記載の方法。
【請求項５】
前記ループクロージングの低い次数の変数ノードの前記複数の順序変更された複製は、ｎ−３ ０ビット数Ａ及びＡ＋Ｃ−１ ｍｏｄ２ｎによるループクロージングの低い次数の置換を備えており、ただし２ｎは、最大のリフティングサイズであり、Ｃはまたｎ−３ ０ビット数である、請求項４に記載の方法。
【請求項６】
前記のループクロージングのより高い次数の変数ノードの前記複数の順序変更された複製の、複数の順序変更されたノンループクロージングエッジは、ｎ−３ ０ビット数Ｂ及びＢ＋Ｃ−１ ｍｏｄ ２ｎによるノンループクロージング置換を備えており、ただし、Ｃは、ｎ−３ ０ビット数であり、また基本グラフにおいては、前記のＢ＋Ｃ−１置換は、数字Ａによる置換を有する前記ループクロージングの低い次数の変数ノード上の前記エッジと同じ制約ノードに接続されたエッジに関連づけられている、請求項５に記載の方法。
【請求項７】
前記のより高い次数の変数ノードの前記ノンループクロージングエッジ上の置換は０である、請求項１に記載の方法。
【請求項８】
巡回リフトされた低密度パリティ検査（ＬＤＰＣ）符号を使用すること、をさらに備えており、いくつかの基本変数ノードについては、前記のリフトされた変数ノードの半分は、情報ノードであり、半分がパリティノードである、請求項６に記載の方法。
【請求項９】
前記ＬＤＰＣ符号の基本グラフの構造は、さらなる次数２の変数ノードを備えた基本符号化構造Ａを有しており、前記さらなる次数２の変数ノードは、構造Ａの前記累積チェインの前記ループを閉じるループクロージングの次数２の変数ノードを備えている、請求項８に記載の方法。
【請求項１０】
リフトされたループクロージングの次数２の変数ノードのほかのすべてのリフトされたノードは、それらのそれぞれの基本ノードに応じるパリティノードあるいは情報ノードのいずれかである、請求項９に記載の方法。
【請求項１１】
前記ループクロージングのコア次数２の変数ノードは、置換Ｘ及びＸ＋Ｃ−１モジュローＺを有しており、ただし、Ｃは、ｎ−３ ０ビット数である、請求項３に記載の方法。
【請求項１２】
Ｃは０である、請求項１１に記載の方法。
【請求項１３】
前記のより高い次数の変数ノードのループクロージングエッジは、リフティング置換Ｙ及びＹ＋Ｃ−１モジュローＺを関連づけている、請求項１に記載の方法。
【請求項１４】
置換Ｘで前記エッジ上の前記のループクロージングの次数２の変数ノードに取り付けられている前記制約ノードは、置換Ｙ＋Ｃ−１で前記のより高い次数の変数ノードに接続する、請求項９に記載の方法
【請求項１５】
前記基本グラフの構造が２つのうちの１つの要因によって拡張され、前記リフティングサイズは、前記基本グラフへと前記のリフティングからビットを移動させることによって２つのうちの１つの要因により減らさせられるとき、そのときには、結果として生じる符号化構造は、識別情報を備えたあるいは識別情報なしの、リフトされた符号化構造Ａである、請求項９に記載の方法。
【請求項１６】
コア次数３の符号化ノードのノンループクロージングエッジ上でノンループクロージングエッジ置換を使用することと、ただし、前記のノンループクロージングエッジ置換は０である；
前記ループに関係しているコア次数２の変数ノードの前記のエッジ上で、すべての他の置換のために使用することと、なお、その値は、０あるいは−１ｍｏｄ２ｎである；
をさらに備えている請求項１に記載の方法。
【請求項１７】
二部グラフによる表示が可能である低密度パリティ検査（ＬＤＰＣ）符号を使用してデータを符号化するための装置であって、前記装置は、
前記の符号化されたデータを保存するためのメモリデバイスと、
制御モジュールと、
前記メモリデバイスと前記制御モジュールとの間で結合されたプロセッシング回路と、
を備えており、
前記プロセッシング回路は、
複数の低い次数の変数ノードの累積チェインを生成するように、
ループを二回形成するために前記累積チェインを閉じるように、なお、一回は、低い次数の変数ノードを使用し、一回は、前記低い次数の変数ノードよりも高い次数の変数ノードを使用しており、前記のより高い次数の変数ノードは、ノンループクロージングエッジを備えている、
装置。
【請求項１８】
前記複数の低い次数の変数ノードは、各エッジ上で、同じ置換を有する、請求項１７に記載の装置。
【請求項１９】
前記複数の低い次数の変数ノードは、複数のコア次数２の変数ノードを備えており、
前記のより高い次数の変数ノードは、コア次数３の変数ノードを備えており、
ループクロージングの低い次数の変数ノードは、ループクロージングのコア次数２の変数ノードを備えている、請求項１７に記載の装置。
【請求項２０】
前記プロセッシング回路は、前記累積チェインの複数の順序変更された複製、前記ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及び前記のループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用するようにさらに構成されている、請求項１７に記載の装置。
【請求項２１】
前記ループクロージングの低い次数の変数ノードの前記複数の順序変更された複製は、ｎ−３ ０ビット数Ａ及びＡ＋Ｃ−１ ｍｏｄ２ｎによるループクロージングで低い次数の置換を備えており、ただし２ｎは、最大リフティングサイズであり、Ｃはまた、ｎ−３ ０ビット数である、請求項２０に記載の装置。
【請求項２２】
前記のループクロージングのより高い次数の変数ノードの前記複数の順序変更された複製の、複数の順序変更されたノンループクロージングエッジは、ｎ−３ ０ビット数Ｂ及びＢ＋Ｃ−１ ｍｏｄ２ｎによるノンループクロージング置換を備えており、Ｃは、ｎ−３ ０ビット数であり、基本グラフにおいては、前記Ｂ＋Ｃ−1置換は、数字Ａによる置換を有する前記ループクロージングの低い次数の変数ノード上で前記エッジとして同じ制約ノードに接続されるエッジに関連づけられている、請求項２１に記載の装置。
【請求項２３】
前記プロセッシング回路は、巡回リフトされた低密度パリティ検査（ＬＤＰＣ）符号を使用するようにさらに構成されており、いくつかの基本変数ノードについては、前記のリフトされた変数ノードの半分は情報ノードで、半分はパリティノードである、請求項１７に記載の装置。
【請求項２４】
前記ＬＤＰＣ符号の基本グラフの構造は、さらなる次数２の変数ノードを備えた基本符号化構造ベースＡを有しており、前記さらなる次数２の変数ノードは、構造Ａの前記累積チェインの前記ループを閉じるループクロージングの次数２の変数ノードを備えている、請求項２３に記載の装置。
【請求項２５】
リフトされたループクロージングの次数２の変数ノードのほかのすべてのリフトされたノードは、それらのそれぞれの基本ノードに応答するパリティノードあるいは情報ノードのいずれかである、請求項２４に記載の装置。
【請求項２６】
二部グラフによる表示が可能である低密度パリティ検査（ＬＤＰＣ）符号を使用してデータを符号化するための装置であって、前記装置は、
複数の低次変数ノードの累積チェインを生成するための手段と、
ループを二回形成するために前記累積チェインを閉じるための手段と、なお、一回は、低い次数の変数ノードを使用し、一回は、前記低い次数の変数ノードよりも高い次数の変数ノードを使用しており、前記のより高い次数の変数ノードは、ノンループクロージングエッジを備えている、
装置。
【請求項２７】
前記複数の低い次数の変数ノードは、各エッジ上で同じ置換を有する、請求項２６に記載の装置。
【請求項２８】
前記複数の低い次数の変数ノードは、複数のコア次数２の変数ノードを備えており、
前記のより高い次数の変数ノードは、コア次数３の変数ノードを備えており、
ループクロージングの低い次数の変数ノードは、ループクロージングのコア次数２の変数ノードを備えている、請求項２６に記載の装置。
【請求項２９】
前記累積チェインの複数の順序変更された複製、前記ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及び前記のループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用するための手段、をさらに備えている請求項２６に記載の装置。
【請求項３０】
前記ループクロージングの低い次数の変数ノードの前記複数の順序変更された複製は、ｎ−３ ０ビット数Ａ及びＡ＋Ｃ−１ ｍｏｄ ２ｎによるループクロージングで低い次数の置換を備えており、ただし、２ｎは、最大のリフティングサイズであり、Ｃはまたｎ−３ ０ビット数である、請求項２９に記載の装置。
【請求項３１】
前記のループクロージングのより高い次数の変数ノードの前記複数の順序変更された複製の、複数の順序変更されたノンループクロージングエッジは、ｎ−３ ０ビット数Ｂ及びＢ＋Ｃ−１ ｍｏｄ２ｎによるノンループクロージング置換を備えており、ただし、Ｃはｎ−３ ０ビット数であり、また、基本グラフにおいては、前記Ｂ＋Ｃ−１置換は、数字Ａによる置換を有する前記ループクロージングの低い次数の変数ノード上で前記エッジと同じ制約ノードに接続されたエッジに関連づけられている、請求項３０に記載の装置。
【請求項３２】
プロセッサ可読メディアであって、プロセッサによって実行されるときに、前記プロセッサに、
複数の低い次数の変数ノードの累積チェインを生成させ；
ループを二回形成するために前記累積チェインを閉じさせる、なお、一回は、低い次数の変数ノードを使用し、一回は、前記低い次数の変数ノードよりも高い次数の変数ノードを使用しており、前記のより高い次数の変数ノードは、ノンループクロージングエッジを備えている；
二部グラフによる表示が可能である低密度パリティ検査（ＬＤＰＣ）符号を使用してデータを符号化することを達成するための、エンコーダ上で動作可能な１つまたは複数の命令、
を有する、プロセッサ可読メディア。
【請求項３３】
前記複数の低い次数の変数ノードは、各エッジ上で同じ置換を有する、請求項３２に記載のプロセッサ可読メディア。
【請求項３４】
前記複数の低い次数の変数ノードは、複数のコア次数２の変数ノードを備えており、
前記のより高い次数の変数ノードは、コア次数３の変数ノードを備えており、
前記ループクロージングの低い次数の変数ノードは、ループクロージングのコア次数２の変数ノードを備えている、請求項３２に記載のプロセッサ可読メディア。
【請求項３５】
プロセッサによって実行されるときに、前記プロセッサに、
前記累積チェインの複数の順序変更された複製、前記ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及び前記のループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用させる、
１つまたは複数の命令、
をさらに有する、請求項３２に記載のプロセッサ可読メディア。
【請求項３６】
前記ループクロージングの低い次数の変数ノードの前記複数の順序変更された複製は、ｎ−３ ０ビット数 Ａ及びＡ＋Ｃ−１ ｍｏｄ２ｎによるループクロージングの低い次数の置換を備えており、ただし、２ｎは、最大のリフティングサイズであり、Ｃはまたｎ−３ ０ビット数である、請求項３５に記載のプロセッサ可読メディア。
【請求項３７】
前記のループクロージングのより高い次数の変数ノードの前記複数の順序変更された複製の、複数の順序変更されたノンループクロージングエッジは、ｎ−３ ０ビット数 B 及びＢ＋Ｃ−１ ｍｏｄ ２ｎによるノンループクロージング置換を備えており、ただし、Ｃは、ｎ−３ ０ビット数であり、また基本グラフにおいて、前記Ｂ＋Ｃ−１の置換は、数字Ａによる置換を有する前記ループクロージングの低い次数の変数ノード上の前記エッジと同じ制約ノードに接続されたエッジに関連づけられている、請求項３６に記載のプロセッサ可読メディア。
【請求項３８】
複数の低い次数の変数ノードの累積チェインを生成することと；
ループを二回形成するために前記累積チェインを閉じることと、なお、一回は、低い次数の変数ノードを使用し、一回は、前記低い次数の変数ノードよりも高い次数の変数ノードを使用しており、前記のより高い次数の変数ノードは、ノンループクロージングエッジを備えている；
を達成するためにファンクションを実行するように構成されたプロセッシング回路、
を備えているプロセッサ。
【請求項３９】
前記複数の低い次数の変数ノードは、各エッジ上で同じ置換を有する、請求項３８に記載のプロセッサ。
【請求項４０】
前記複数の低い次数の変数ノードは、複数のコア次数２の変数ノードを備えており、
前記のより高い次数の変数ノードは、コア次数３の変数ノードを備えており、
前記ループクロージングの低い次数の変数ノードは、ループクロージングのコア次数２の変数ノードを備えている、請求項３８に記載のプロセッサ。
【請求項４１】
前記プロセッシング回路は、前記累積チェインの複数の順序変更された複製、前記ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及び前記のループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用するようにさらに構成されている、請求項３８に記載のプロセッサ。
【国際調査報告】
2010521128.tif 000055
2010521128.tif 000056
2010521128.tif 000057