(57)【要約】【課題】アクセス回数を削減でき、行列の対角化処理の高速化を図ることが可能な行列対角化装置、行列対角化方法、および復号装置を提供する。【解決手段】行列対角化装置１００は、行列を記憶する行列メモリ１２０と、行のインデックスを記憶する行インデックスメモリ１１０と、要探索、掃き出しを行う要探索、掃き出し回路１３０，１６０と、を含み、行インデックスメモリ１１０から順に行インデックスを読み出し、行インデックスが指定する行を行列メモリ１２０から読み出し、その行の対角化の対象となる列の要素を見て、要探索、掃き出しを行い、要探索、掃き出しを複数列並列に行う機能を有する。【選択図】図２
2008140337.tif 000002
【特許請求の範囲】
【請求項１】
対角化対象列において、順に要素が零か非零かを判定し、当該要素を含む行が既に要行になったことがあるかも判定し、非零でありかつその行が未だ要行になったことがない場合には、当該要素を要、当該要素を含む行を要行とする要探索手段と、
前記要行を利用して他行を掃き出す掃き出し手段と、を有し、
前記要探索手段および前記掃き出し手段は、
対角化対象列を複数列同時並列的に要探索、掃き出し、
当該処理を対角化対象列毎に繰り返す
行列対角化装置。
【請求項２】
複数の対角化対象列を同時に要探索、掃き出した後に、前記掃き出し手段は、最後にその対象列の要行同士の掃き出しを行う
請求項１記載の行列対角化装置。
【請求項３】
複数の対角化対象列を同時並列的に要探索、掃き出す際、ある対象列を要探索、掃き出している回路で対象とした行が新しく要行になったかどうかの情報を他の対象列を要探索、掃き出している回路に伝える機能を有する
請求項１記載の行列対角化装置。
【請求項４】
複数の対角化対象列を同時並列的に要探索、掃き出す際、ある対象列を要探索、掃き出している回路で対象とした行が新しく要行になったかどうかの情報を他の対象列を要探索、掃き出している回路に伝える機能を有する
請求項２記載の行列対角化装置。
【請求項５】
前記要探索手段は、
要探索の対象とする要素をその要素を含む行が未だ要行になっていない要素のみに限定する
請求項３記載の行列対角化装置。
【請求項６】
前記要探索手段は、
要探索の対象とする要素をその要素を含む行が未だ要行になっていない要素のみに限定する
請求項４記載の行列対角化装置。
【請求項７】
行列を記憶する行列メモリと、
行のインデックスを記憶する行インデックスメモリと、
要探索、掃き出しを行う要探索、掃き出し回路と、を含み、
前記行インデックスメモリから順に行インデックスを読み出し、当該行インデックスが指定する行を前記行列メモリから読み出し、その行の対角化の対象となる列の要素を見て、要探索、掃き出しを行い、要探索、掃き出しを複数列並列に行う機能を有する
行列対角化装置。
【請求項８】
対象となる列を要探索、掃き出す際、前記行インデックスメモリから行インデックスを先頭アドレスから順番に読み出し、読み出した行が要行にならなかった場合、その行インデックスを前記行インデックスメモリの先頭アドレスから順に書き込み、読み出した行が要行になった場合のみ、その行インデックスを前記行インデックスメモリの最後のアドレスに書き込む機能を有する
請求項７記載の行列対角化装置。
【請求項９】
前記要探索、掃き出し回路は、
要探索時は、前記行列メモリからの入力行の対象となる列が非零だった場合、かつ前段の要探索、掃き出し回路で入力行が要になっていない場合、その要探索、掃き出し回路は自動的にその行を要行として内部メモリに保持し、次以降の入力行の対象となる列が非零だった場合は、確保した要行でその行を掃き出す
請求項８記載の行列対角化装置。
【請求項１０】
ｍビットｎワードのメモリに行列を確保し、ｍビット毎に行を読み出し、さらにｔ列パラレルに要探索、掃き出しを行い、ｔ列分の要行同士の掃き出しはｎ行読み出した後にｔ−１サイクルかけて行う
請求項９記載の行列対角化装置。
【請求項１１】
要探索、掃き出しを列毎ではなく行毎に行う
請求項１から１０のいずれか一に記載の行列対角化装置。
【請求項１２】
対角化対象列において、順に要素が零か非零かを判定する第１ステップと、
前記要素を含む行が既に要行になったことがあるかも判定する第２ステップと、
判定の結果、非零でありかつその行が未だ要行になったことがない場合には、当該要素を要、当該要素を含む行を要行とする第３ステップと、
前記要行を利用して他行を掃き出す掃き出し第４ステップと、を有し、
前記第１ステップから前記第４ステップにおいて、
対角化対象列を複数列同時並列的に要探索、掃き出し、
当該処理を対角化対象列毎に繰り返す
行列対角化方法。
【請求項１３】
対角化されたパリティ検査行列を用いて、信頼性伝播（Ｂｅｌｉｅｆ  ｐｒｏｐａｇａｔｉｏｎ：ＢＰ）を行うことにより、値が更新され、更新された値に対して、所定の繰り返し回数、ソート、対角化、信頼性伝播（ＢＰ）を行う復号装置であって、
受信語の信頼度（ＬＬＲ）の大きさに応じて列インデックスのソートを行うソート部と、
信頼度の低いシンボルに対応する列より順に、パリティ検査行列の対角化を行う行列対角化装置と、を含み、
前記行列対角化装置は、
対角化対象列において、順に要素が零か非零かを判定し、当該要素を含む行が既に要行になったことがあるかも判定し、非零でありかつその行が未だ要行になったことがない場合には、当該要素を要、当該要素を含む行を要行とする要探索手段と、
前記要行を利用して他行を掃き出す掃き出し手段と、を有し、
前記要探索手段および前記掃き出し手段は、
対角化対象列を複数列同時並列的に要探索、掃き出し、
当該処理を対角化対象列毎に繰り返す
復号装置。
【請求項１４】
対角化されたパリティ検査行列を用いて、信頼性伝播（Ｂｅｌｉｅｆ  ｐｒｏｐａｇａｔｉｏｎ：ＢＰ）を行うことにより、値が更新され、更新された値に対して、所定の繰り返し回数、ソート、対角化、信頼性伝播（ＢＰ）を行う復号装置であって、
受信語の信頼度（ＬＬＲ）の大きさに応じて列インデックスのソートを行うソート部と、
信頼度の低いシンボルに対応する列より順に、パリティ検査行列の対角化を行う行列対角化装置と、を含み、
前記行列対角化装置は、
行列を記憶する行列メモリと、
行のインデックスを記憶する行インデックスメモリと、
要探索、掃き出しを行う要探索、掃き出し回路と、を含み、
前記行インデックスメモリから順に行インデックスを読み出し、当該行インデックスが指定する行を前記行列メモリから読み出し、その行の対角化の対象となる列の要素を見て、要探索、掃き出しを行い、要探索、掃き出しを複数列並列に行う機能を有する
復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、行列の対角化装置、対角化方法、および復号装置に関するものである。
【背景技術】
【０００２】
行列の対角化を行う方法の一つに掃き出し法が知られている。
ここでいう対角化とは、たとえばｍ行ｎ列（ｍ≦ｎ）の行列の場合、対角化対象となるｍ列を含むｍ行ｍ列の部分行列について、行重み１、列重み１の行列に変形することを指す。
掃き出し法は、行の基本変形を繰り返すことで実現される。
【０００３】
図１は、０か１のみの要素を持つ行列の対角化のフローチャートである。
【０００４】
基本変形では、対象列を第１行から順にその要素を調べ（ＳＴ１〜ＳＴ３）、要素が零か非零かを判定し（ＳＴ４，ＳＴ６）、また、その要素を含む行が既に要行になったことがあるかも判定する（ＳＴ５，ＳＴ６）。
非零でありかつその行が未だ要行になったことがなければ、その要素を要とし、その要素を含む行を要行とする（ＳＴ７）。これを要探索という。
次に、要行を用いて他行を掃き出す。掃き出しでは、要行以外に対象列が非零となる要素を探し、その行から要行を減算する（ＳＴ８〜ＳＴ１６）。
【０００５】
以下に具体例を挙げる。ここでは例として、０か１の要素しかない４行６列の行列の第１列から第４列までを対角化する場合を考察する。
【０００６】
＜１＞次の初期行列に対して対角化を開始する。
【０００７】
【数１】
2008140337.tif 000003
【０００８】
＜２＞まず、次のように、第１列について基本変形を行う。
第１行を要探索する。この場合、第１列は零なので要にはならない。
【０００９】
【数２】
2008140337.tif 000004
【００１０】
＜３＞次に、第２行を要探索する。
この場合、第１列は非零であり、かつ第２行はこれまで要行になったことがないため、この行を要行とする。
【００１１】
【数３】
2008140337.tif 000005
【００１２】
＜４＞次に、第２行を使って他行を掃き出す。
この場合、第３行の第１列は非零であるため、第２行を第３行に加える。
【００１３】
【数４】
2008140337.tif 000006
【００１４】
＜５＞第４行の第１列は零であるためそのままにする。
【００１５】
【数５】
2008140337.tif 000007
【００１６】
＜６＞第１行の第１列は零であるためそのままにする。
【００１７】
【数６】
2008140337.tif 000008
【００１８】
＜７＞次に、第２列について基本変形を施す。
第１行を要探索する。この場合、第２列は零なので要にはならない。
【００１９】
【数７】
2008140337.tif 000009
【００２０】
＜８＞第２行を要探索する。
この場合、第２列は非零であるが、第２行はすでに第１列で要行になったので、第２列で要行にはなれない。
【００２１】
【数８】
2008140337.tif 000010
【００２２】
＜９＞第３行を要探索する。
この場合、第２列は非零であり、かつ第３行はこれまでに要行になったことがないので、この行を要行とする。
【００２３】
【数９】
2008140337.tif 000011
【００２４】
＜１０＞第３行を使って他行を掃き出す。
この場合、第４行の第２列は零であるためそのままにする。
【００２５】
【数１０】
2008140337.tif 000012
【００２６】
＜１１＞第１行の第２列は零であるためそのままにする。
【００２７】
【数１１】
2008140337.tif 000013
【００２８】
＜１２＞第２行の第２列は非零であるので第３行を第２行に加える。
【００２９】
【数１２】
2008140337.tif 000014
【００３０】
＜１３＞第３列についても同様に基本変形を行う。
【００３１】
【数１３】
2008140337.tif 000015
【００３２】
＜１４＞第４列についても同様に基本変形を行う。
【００３３】
【数１４】
2008140337.tif 000016
【００３４】
以上で、対角化が完了する。なお、０と１以外の要素が存在する場合は、掃き出す時に、掃き出される行の対象要素を要行の対象要素で割った値と要行を掛け合わせて掃き出される行から減算すればよい。
【発明の開示】
【発明が解決しようとする課題】
【００３５】
対角化対象となる列の基本変形を行う場合、各列を１列毎に要探索、掃き出しを行う装置を考えると、要探索、掃き出しを行うために、多くの行アクセス、もしくは読出しが必要となる。
たとえば、１列の基本変形に対し、要探索と掃き出しを行うために、各々行数回行を読出し、これを列回繰り返すと行数×列数×２回の行アクセス、もしくは読出しが必要となる。
【００３６】
本発明は、アクセス回数を削減でき、行列の対角化処理の高速化を図ることが可能な行列対角化装置、行列対角化方法、および復号装置を提供することにある。
【課題を解決するための手段】
【００３７】
本発明の第１の観点の行列対角化装置は、対角化対象列において、順に要素が零か非零かを判定し、当該要素を含む行が既に要行になったことがあるかも判定し、非零でありかつその行が未だ要行になったことがない場合には、当該要素を要、当該要素を含む行を要行とする要探索手段と、前記要行を利用して他行を掃き出す掃き出し手段と、を有し、前記要探索手段および前記掃き出し手段は、対角化対象列を複数列同時並列的に要探索、掃き出し、当該処理を対角化対象列毎に繰り返す。
【００３８】
本発明の第２の観点の行列対角化装置は、行列を記憶する行列メモリと、行のインデックスを記憶する行インデックスメモリと、要探索、掃き出しを行う要探索、掃き出し回路と、を含み、前記行インデックスメモリから順に行インデックスを読み出し、当該行インデックスが指定する行を前記行列メモリから読み出し、その行の対角化の対象となる列の要素を見て、要探索、掃き出しを行い、要探索、掃き出しを複数列並列に行う機能を有する。
【００３９】
本発明の第３の観点に係る行列対角化方法は、対角化対象列において、順に要素が零か非零かを判定する第１ステップと、前記要素を含む行が既に要行になったことがあるかも判定する第２ステップと、判定の結果、非零でありかつその行が未だ要行になったことがない場合には、当該要素を要、当該要素を含む行を要行とする第３ステップと、前記要行を利用して他行を掃き出す掃き出し第４ステップと、を有し、前記第１ステップから前記第４ステップにおいて、対角化対象列を複数列同時並列的に要探索、掃き出し、当該処理を対角化対象列毎に繰り返す。
【００４０】
本発明の第４の観点に係る復号装置は、対角化されたパリティ検査行列を用いて、信頼性伝播（Ｂｅｌｉｅｆ  ｐｒｏｐａｇａｔｉｏｎ：ＢＰ）を行うことにより、値が更新され、更新された値に対して、所定の繰り返し回数、ソート、対角化、信頼性伝播（ＢＰ）を行う復号装置であって、受信語の信頼度（ＬＬＲ）の大きさに応じて列インデックスのソートを行うソート部と、信頼度の低いシンボルに対応する列より順に、パリティ検査行列の対角化を行う行列対角化装置と、を含み、前記行列対角化装置は、対角化対象列において、順に要素が零か非零かを判定し、当該要素を含む行が既に要行になったことがあるかも判定し、非零でありかつその行が未だ要行になったことがない場合には、当該要素を要、当該要素を含む行を要行とする要探索手段と、前記要行を利用して他行を掃き出す掃き出し手段と、を有し、前記要探索手段および前記掃き出し手段は、対角化対象列を複数列同時並列的に要探索、掃き出し、当該処理を対角化対象列毎に繰り返す。
【００４１】
本発明の第５の観点の復号装置は、対角化されたパリティ検査行列を用いて、信頼性伝播（Ｂｅｌｉｅｆ  ｐｒｏｐａｇａｔｉｏｎ：ＢＰ）を行うことにより、値が更新され、更新された値に対して、所定の繰り返し回数、ソート、対角化、信頼性伝播（ＢＰ）を行う復号装置であって、受信語の信頼度（ＬＬＲ）の大きさに応じて列インデックスのソートを行うソート部と、信頼度の低いシンボルに対応する列より順に、パリティ検査行列の対角化を行う行列対角化装置と、を含み、前記行列対角化装置は、行列を記憶する行列メモリと、行のインデックスを記憶する行インデックスメモリと、要探索、掃き出しを行う要探索、掃き出し回路と、を含み、前記行インデックスメモリから順に行インデックスを読み出し、当該行インデックスが指定する行を前記行列メモリから読み出し、その行の対角化の対象となる列の要素を見て、要探索、掃き出しを行い、要探索、掃き出しを複数列並列に行う機能を有する。
【００４２】
本発明によれば、一度の行続出しで複数列の基本変形が並列に行われる。その結果、対角化を行う処理が高速化される。
【発明の効果】
【００４３】
本発明によれば、行列を対角化する場合、アクセス回数を削減でき、行列の対角化処理の高速化を図ることができる。
【発明を実施するための最良の形態】
【００４４】
以下、本発明の実施形態を図面に関連付けて説明する。
【００４５】
図２は、本発明の実施形態に係る行列対角化方法を採用した行列対角化装置の基本的な構成例を示しブロック図である。
【００４６】
本実施形態に係る行列対角化装置１００は、図２に示すように、行のインデックスを記憶する行インデックスメモリ１１０と、行列を記憶する行列メモリ１２０と、第１要探索、掃き出し回路１３０と、第１行保持部１４０と、第１要保持部１５０と、第２要探索、掃き出し回路１６０と、第２行保持部１７０と、第２要保持部１８０とを有している。
【００４７】
図２の行列対角化装置１００は、行インデックスメモリ１１０から順に行インデックスを読み出し、その行インデックスが指定する行を行列メモリ１２０から読み出し、その行の対角化の対象となる列の要素を見て、要探索、掃き出しを行う。
また、要探索、掃出しは一行読出すごとにパラレル（並列）に行い、要行同士の掃出しは行読出しの最後に行うことにより高速に対角化される。これにより、たとえば３列並列に基本変形を行うと行読出し回数をおよそ１／３に減らすことができる。
さらに、対象となる列を要探索、掃き出す際、行インデックスメモリ１１０から行インデックスを先頭アドレスから順番に読み出し、読み出した行が要行にならなかった場合、その行インデックスを行インデックスメモリ１１０の先頭アドレスから順に書き込み、読み出した行が要行になった場合のみ、その行インデックスを要行インデックス保持部１７０，１８０に書き込み、最後に行インデックスメモリ１１０の後ろのアドレスにそのインデックスを書き込む。
これにより、次の基本変形から未だ要になっていない行を優先的に読み出せるため、はじめて見つかった対象列の非零要素を要とでき、各列の基本変形に対して、各行は要探索か掃き出しのいずれかの対象となればよいので、より高速な対角化が可能となる。
以上の方法により、ｔ列パラレルで対角化を行った場合、およそ行数×列数／ｔ回の行読出しで対角化が可能となる。
【００４８】
以下、本実施形態に係る行列対角化方法の全体の処理を図２〜図１２に関連付けて説明する。図２〜図１０は、行列を２列パラレルに要探索、掃き出しを行う対角化フローを表す。
【００４９】
図２において、初期に行インデックスメモリ１１０にはアドレスと同じ値が格納されている。
これを先頭アドレスから順に１、２、３、４と読出していき行列メモリ１２０の読出しアドレスＳ１２とし、これを用いて行列メモリ１２０から行Ｓ１３を読み出す。
読出した行Ｓ１３に対し、２列分の要探索、掃き出しが施され、これを４列分行うと対角化は完了する。
ここでは、まず、第１列、第２列を並列に要探索、掃き出す。第１要探索、掃き出し回路１３０では第１列、第２要探索、掃き出し回路１６０では第２列を対角化の対象とする。
【００５０】
ここで、第１列、第２列の基本変形を開始する。
まず、図３において、行インデックスメモリ１１０から、読出し行インデックスＳ１２に１が読み出される。これが行列メモリ１２０に与えられると第１行が読み出され、第１要探索、掃き出し回路１３０へ送られる。
第１要探索、掃き出し回路１３０においては、第１列の要素が零か非零がを調べ、今回は零であるため、要にはならず、第１行はそのまま第１行保持部１４０へ送信され、第１要フラグ保持部１５０には０が送信される。
【００５１】
次に、図４において、第２要探索、掃き出し回路１６０には第１行が送られ、この第２列は零であるため、第２行保持部１７０には第１行がそのまま送られ、第２要フラグ保持部１８０には０が送られる。
また、行インデックスメモリ１１０から、読出し行インデックスＳ１２に２が読み出され、行列メモリ１２０から第２行が読み出される。
読み出された行Ｓ１３は第１要探索、掃き出し回路１３０で第１列が零か非零か調べられ、非零であるため、この行を要とし、内部に一時的に格納される。
また、第１行保持部１４０に第２行が、第１要フラグ保持部１５０には１が送られる。
【００５２】
次に、図５において、第２要探索、掃き出し回路１６０には、第２行が要フラグ１と共に入力され、要フラグが１であり、また、第２列の要行は未だ見つかっていないので、第２行をそのまま第２行保持部１７０へ送り、第２要フラグ保持部１８０に１を送る。
また、行列メモリ１２０から第３行が同様に読み出され、第１要探索、掃き出し回路１３０に送られる。第１要探索、掃き出し回路１３０は既に要行を確保しているので、第３行が掃き出しの対象となるかを判断する。
第３行第１列は非零であるので、第３行に対し確保した要行で掃き出す、具体的には第３行から要行を減算した行を新たな第３行とし第１行保持部１３０へ送られる。また、第１要フラグ保持部１５０には０が送られる。
さらに、第２行保持部１６０から読み出される第１行を行列メモリ１２０に書き込む。また、行インデックスメモリ１１０に到来する書込み行インデックスＳ１１である１とともに第２要フラグ保持部１８０から０が到来するため、読出し行インデックス保持部１１１の先頭に１を書き込む。
【００５３】
次に、図６において、第２要探索、掃き出し回路１６０には、第３行が要フラグ０と共に入力され、第２列の要行は未だ見つかっていない上、第３行第２列は非零であるため、これを要行とし、内部に第３行を確保し、またその行を第２行保持部１７０へ送り、第２要フラグ保持部１８０に１を送る。
また、行列メモリ１２０から第４行が同様に読み出され、第１要探索、掃き出し回路１３０に送られる。第１要探索、掃き出し回路１３０は既に要行を確保しているので、第４行を掃き出す。第４行第１列は零であるので、そのまま第４行を第１行保持部１４０へ送られる。また、第１要フラグ保持部１５０には０が送られる。
また、第２要探索、掃き出し回路１６０から読み出される第２行を行列メモリ１２０に書き込む。
行インデックスメモリ１１０に戻ってくる書込み行インデックスＳ１１である２とともに第２要フラグ保持部１８０から１が到来するため、要行インデックス保持部１１２に２を書き込む。
【００５４】
次に、図７において、第２要探索、掃き出し回路１６０には、第４行が要フラグ０と共に入力され、第２列の要行は既に見つかっているので、第４行を掃き出した後、その行を第２行保持部１７０へ送り、また第２要フラグ保持部１８０に０を送る。
行列メモリ１２０からは何も読み出されず、第１要探索、掃き出し回路１３０から内部に保持した要行を第１行保持部１４０へ送る。また、第２要探索、掃き出し回路１６０から読み出される第３行を行列メモリ１２０に書き込む。
さらに、行インデックスメモリ１１０に到来する書込み行インデックスＳ１１である３とともに第２要フラグ保持部１８０から１が到来するため、要行インデックス保持部１１２に３を書き込む。
【００５５】
そして、図８において、第１行保持部１５０から到来した第２行に対して、第２要探索、掃き出し回路１６０において内部に確保した要行第３行で掃き出しを行う。つまり、この時に要行同士の掃き出しを行う。
掃き出された第２行は第２行保持部１７０へ送られる。また、第２行保持部１７０から読み出される第４行を行列メモリ１２０に書き込む。
さらに、行インデックスメモリ１１０に戻ってくる書込み行インデックスＳ１１である４とともに第２要フラグ保持部１８０から０が到来するため、読出し行インデックス保持部１１１に４を書き込む。
【００５６】
さらに、図９において、第２要探索、掃き出し回路１６０の内部に確保した要行第３行を第２行保持部１７０へ送る。また、第２行保持部１７０から読み出される第１列要行である第２行を行列メモリ１２０に書き込む。
また、要行インデックス保持部１１２から読出し行インデックス保持部１１１の下位アドレスに値を移す。
まず、行インデックス２を読出し行インデックス保持部１１１に書き込む。この値は行列メモリ１２０の書き込み行インデックスＳ１１にも用いられる。
【００５７】
最後に、図１０において、第２行保持部１７０から読み出される第２列要行である第３行を行列メモリ１２０に書き込む。
また、要行インデックス保持部１１２から読出し行インデックス保持部１１１の下位アドレスに値を移す。今回は、行インデックス３を読出し行インデックス保持部１１１に書き込む。
また、この値を行列メモリ１２０の書き込み行インデックスＳ１１にも用いる。
以上で、第１列、第２列の要探索、掃き出しは完了する。
【００５８】
第３列、第４列を要探索する際は、行列メモリ１２０から行を読み出す際に、行インデックスメモリ１１０の先頭アドレスから順に行インデックスを読み出せば、未だ要になっていない行を優先的に読み出せるので、はじめて見つかった対象列の非零要素を要とできる。
また、各列の基本変形に対して、各行は要探索か掃き出しのいずれかの対象となればよいので、より高速な対角化が可能となる。第３列、第４列の要探索、掃き出しについても、同様に第１要探索、掃き出し回路が第３列、第２要探索、掃き出し回路が第４列の要探索、掃き出しを担当することにより、より高速な対角化が可能になり、これが完了すれば、図１１のように、行列の対角化は完了する。
【００５９】
要探索、掃き出し回路１３０，１６０は具体的には図１２のようになる。図１２に示す構成は、行列が０か１の要素しか持たない場合の要探索、掃き出し回路である。
【００６０】
図１２の要探索、掃き出し回路１３０（１６０）は、セレクタ１３１、状態遷移保持部１３２、要行選択セレクタ１３３、要行保持部１３４、アンドゲート１３５、および掃き出し部１３６を主構成要素として有している。
【００６１】
図１２の要探索、掃き出し回路１３０においては、まず対角化が開始したら、状態遷移保持部１３２において、要探索状態になる。
入力される行Ｓ３１に対し、対角化対象要素を取り出すためのセレクタ１３１を通り対角化対象列の要素Ｓ３２のみ取り出し、この対象要素が零の場合は、状態遷移保持部１３２は、要探索状態を維持し、要フラグＳ３３は０、掃き出しフラグＳ３４は０を出力する。
初めて対象要素Ｓ３２が非零要素であった場合、要フラグＳ３３は１、掃き出しフラグＳ３４は０を出力し、要行選択セレク１３３によって、入力行Ｓ３１が要行として要行保持部２０４に取り込まれる。
また、状態遷移保持部１３２は要探索状態から掃き出し状態へ遷移する。なお、入力要フラグＳ３９が０の場合は上記の通り動作するが、１の場合は入力行をそのまま出力行とし、出力要フラグＳ３３にも入力要フラグ１をそのまま出力する。状態も要探索状態のまま変わらない。
【００６２】
掃き出し状態では、要フラグＳ３３には基本的に０を出力し、要行を要行保持部１３４に保持し続ける。
対象要素Ｓ３２が非零の場合、掃き出しフラグＳ３４に１を出力し、掃き出し部１３６で入力行と要行の排他的論理和が計算され、掃き出し部から行Ｓ３８が出力され行列メモリ１２０に書き込まれる。
対象要素Ｓ３２が零の場合は掃き出しフラグＳ３４に０を出力し、入力行Ｓ３１はそのままＳ３８へ出力され、再び行列メモリにその行が書き込まれる。
掃き出しが完了すると、要探索状態へ戻るか、その行列の対角化が終了した場合はＩＤＬＥ状態へ戻る。なお、入力要フラグＳ３９が０の場合も１の場合も上記の通り動作するが、入力要フラグＳ３９が１の場合のみ、出力要フラグＳ３３にはそのまま１を出力する。
また、第１要探索、掃き出し回路１３０の場合は、入力要フラグに常に０を入力しておけばよい。
【００６３】
なお、行列が０か１以外の要素を持つ要探索、掃き出しは、要と掃き出し対象となる行の対象要素を比べ、掃き出し対象となる行の対角要素を要で割った値を、要行保持部の後段で掛け算して、掃き出すことにより実現される。
また、初期に行列メモリ１２０から行を読み出す際は、行インデックスメモリ１１０にわざわざアドレスと同じ値を書き込んでおかなくとも、直接１、２、３、４と値をインクリメントして直接行列メモリ１２０から行を読み出してもよい。
【００６４】
なお、この方法は、どんな行列の大きさでもパラレルに処理する対角化列数が何列でも適用が可能である。
また、この方法は、行を読み出して列毎に基本変形する場合以外に、列を読み出して行毎に基本変形をする場合にも適用できる。
【００６５】
以上説明したように、本実施形態によれば、行列対角化装置１００は、行インデックスメモリ１１０から順に行インデックスを読み出し、その行インデックスが指定する行を行列メモリ１２０から読み出し、その行の対角化の対象となる列の要素を見て、要探索、掃き出しを行い、また、要探索、掃出しは一行読出すごとにパラレルに行い、要行同士の掃出しは行読出しの最後に行うことにより高速に対角化され、さらに、対象となる列を要探索、掃き出す際、行インデックスメモリ１１０から行インデックスを先頭アドレスから順番に読み出し、読み出した行が要行にならなかった場合、その行インデックスを行インデックスメモリ１１０の先頭アドレスから順に書き込み、読み出した行が要行になった場合のみ、その行インデックスを要行インデックス保持部に書き込み、最後に行インデックスメモリ１１０の後ろのアドレスにそのインデックスを書き込むことから、以下の効果を得ることができる。
【００６６】
すなわち、要探索、掃出しは一行読出すごとにパラレルに行い、要行同士の掃出しは行読出しの最後に行うことにより高速に対角化される。これにより、たとえば３列並列に基本変形を行うと行読出し回数をおよそ１／３に減らすことができる。
また、次の基本変形から未だ要になっていない行を優先的に読み出せるため、はじめて見つかった対象列の非零要素を要とでき、各列の基本変形に対して、各行は要探索か掃き出しのいずれかの対象となればよいので、より高速な対角化が可能となる。
以上の方法により、ｔ列パラレルで対角化を行った場合、およそ行数×列数／ｔ回の行読出しで対角化が可能となる。
【００６７】
本発明の実施形態に係る行列対角化装置は、代数的手法を用いた誤り訂正符号技術を実現するための回路、たとえば適応的信頼性伝播（Ａｄａｐｔｉｖｅ  Ｂｅｌｉｅｆ  Ｐｒｏｐａｇａｔｉｎ：ＡＢＰ）復号器に応用できる。
【００６８】
ＡＢＰ復号は、リードソロモン（Ｒｅａｄ−Ｓｏｌｏｍｏｎ：ＲＳ）符号やＢＣＨ符号、その他低密度でないパリティ検査行列を持つ線形符号に対する復号法であり、ある伝送路から符号語を受信すると、その受信語をより信頼できる値に更新する。
【００６９】
図１３は、デジタル信号受信機、たとえばデジタルテレビなどの誤り訂正システムにＡＢＰ復号器を用いた通信システムの構成例を示す図である。
【００７０】
本通信システム２００は、ＲＳ符号化器２１０、インタリーバ２２０、は畳み込み符号器２３０、畳み込み符号の軟出力復号器２４０、デインタリーバ２５０、ＲＳ符号のＡＢＰ繰り返し復号器２６０、およびチャネル２７０を有する。
【００７１】
本通信システム２００では、ＲＳ符号化、畳み込み符号化された送信語に対して、畳み込み符号の軟出力復号をした後にＡＢＰ復号を行っている。
ここで言う畳み込み符号の軟出力復号とは、たとえばＢＣＪＲアルゴリズムやＳＯＶＡによる復号のことである。
ＡＢＰ復号器２６０においては、ＡＢＰによる信頼性の更新後、硬判定後限界距離復号、リスト復号、もしくは、軟値をそのまま入力として軟判定リスト復号を行う。
【００７２】
図１４は、ＭＡＰ復号が後段についたＡＢＰ復号器の構成例を示す図である。
この復号器３００は、図１４に示すように、ＡＢＰ復号部３１０、限界距離復号（ＢＤ）復号部３２０、受信信頼度（ＬＬＲ）保持部３３０、およびＭＡＰ復号部３４０を有している。
【００７３】
復号器３００においては、ＡＢＰ復号部３１０による信頼性（ＬＬＲ）の更新後、硬判定してＢＤ復号部３２０において、限界距離復号を行い、この結果をリストに集め、最終的にＭＡＰ復号部３４０においてＭＡＰ（Ｍａｘｉｍｕｍ  ａ  ｐｏｓｔｅｒｉｏｒｉ  Ｐｒｏｂａｂｉ１１ｔｙ）復号を行う。
【００７４】
図１５は、ＡＢＰ復号器の復号装置の構成例を示す図である。
【００７５】
図１５のＡＢＰ復号器４００は、図１３のＡＢＰ復号器２６０や図１４のＡＢＰ復号部３１０に適用可能であり、ソート入力選択部４１０、ソート部４２０、パリティ検査行列の対角化部４３０、信頼度（ＬＬＲ）保持部４４０、および信頼性伝播（ＢＰ）部４５０を有している。
【００７６】
ＡＢＰ復号器４００においては、入力として、受信ＬＬＲＳ４２が入力される。
列インデックスＳ４１は、入力された受信ＬＬＲの符号語の始まりからカウンタで０、１、２、３、、とカウントアップされた値を生成し利用する。
ソート入力選択部４１０で、初回は、列インデックスＳ４１とＳ４２を選択し、繰り返し二回目以降は信頼性伝播（Ｂｅｌｉｅｆ  ｐｒｏｐａｇａｔｉｏｎ）後、更新ＬＬＲＳ５０とその列インデックスＳ４９を選択する。
【００７７】
図１５に示すように、受信語が入力されたら、まず、ソート部４２０において、その信頼度（ＬＬＲ）の大きさに応じて列インデックスのソートを行う。
次に、信頼度の低いシンボルに対応する列より順に、対角化部４３０でパリティ検査行列の対角化を行う。
最後に、対角化されたパリティ検査行列を用いて、信頼性伝播（Ｂｅｌｉｅｆ  ｐｒｏｐａｇａｔｉｏｎ）を行うことにより、値が更新される。
更新された値に対して、再びソート、対角化、信頼性伝播（ＢＰ）を行う。繰り返し数が予め決められており、その繰り返し数だけこれを繰り返す。
この復号器４００の対角化部４３０において、本発明の実施形態に係る対角化装置１００を適用することが可能である。
【００７８】
なお、以上詳細に説明した行列の対角化方法は、上記手順に応じたプログラムとして形成し、ＣＰＵ等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー（登録商標）ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
【図面の簡単な説明】
【００７９】
【図１】一般的な０か１のみの要素を持つ行列の対角化のフローチャートである。
【図２】本発明の実施形態に係る行列対角化方法を採用した行列対角化装置の基本的な構成例を示しブロック図であって、第１列、第２列の基本変形１を示す図である。
【図３】第１列、第２列の基本変形２を示す図である。
【図４】第１列、第２列の基本変形３を示す図である。
【図５】第１列、第２列の基本変形４を示す図である。
【図６】第１列、第２列の基本変形５を示す図である。
【図７】第１列、第２列の基本変形６を示す図である。
【図８】第１列、第２列の基本変形７を示す図である。
【図９】第１列、第２列の基本変形８を示す図である。
【図１０】第１列、第２列の基本変形９を示す図である。
【図１１】第１列、第２列の基本変形１０を示す図である。
【図１２】本実施系形態に係る要探索、掃き出し回路の構成例を示す図である。
【図１３】本実施形態に係るＡＢＰ復号器を採用した通信システムの構成例を示す図である。
【図１４】ＭＡＰ復号が後段についたＡＢＰ復号器の構成例を示す図である。
【図１５】本実施形態に係る対角化装置を適用可能なＡＢＰ復号器の復号装置の構成例を示す図である。
【符号の説明】
【００８０】
１００・・・行列対角化装置、１１０・・・行インデックスメモリ、１２０・・・行列メモリ、１３０・・・第１要探索・掃き出し回路、１４０・・・第１行保持部、１５０・・・第１要保持部、１６０・・・第２要探索、掃き出し回路、１７０・・・第２行保持部、１８０・・・第２要保持部、２００・・・通信システム、２１０・・・ＲＳ符号化器、２２０・・・インタリーバ、２３０・・・畳み込み符号器、２４０・・・畳み込み符号の軟出力復号器、２５０・・・デインタリーバ、２６０・・・ＲＳ符号のＡＢＰ繰り返し復号器、２７０・・・チャネル、３００・・・復号器、３１０・・・ＡＢＰ復号部、３２０・・・限界距離復号（ＢＤ）復号部、３３０・・・受信信頼度（ＬＬＲ）保持部、３４０・・・ＭＡＰ復号部、４００・・・ＡＢＰ復号器、４１０・・・ソート入力選択部、４２０・・・ソート部、４３０・・・パリティ検査行列の対角化部、４４０・・・信頼度（ＬＬＲ）保持部、４５０・・・信頼性伝播（ＢＰ）部。
【図１】
2008140337.tif 000017
【図２】
2008140337.tif 000018
【図３】
2008140337.tif 000019
【図４】
2008140337.tif 000020
【図５】
2008140337.tif 000021
【図６】
2008140337.tif 000022
【図７】
2008140337.tif 000023
【図８】
2008140337.tif 000024
【図９】
2008140337.tif 000025
【図１０】
2008140337.tif 000026
【図１１】
2008140337.tif 000027
【図１２】
2008140337.tif 000028
【図１３】
2008140337.tif 000029
【図１４】
2008140337.tif 000030
【図１５】
2008140337.tif 000031