JP2008140337A - 行列対角化装置、行列対角化方法、および復号装置 - Google Patents
行列対角化装置、行列対角化方法、および復号装置 Download PDFInfo
- Publication number
- JP2008140337A JP2008140337A JP2006328558A JP2006328558A JP2008140337A JP 2008140337 A JP2008140337 A JP 2008140337A JP 2006328558 A JP2006328558 A JP 2006328558A JP 2006328558 A JP2006328558 A JP 2006328558A JP 2008140337 A JP2008140337 A JP 2008140337A
- Authority
- JP
- Japan
- Prior art keywords
- row
- matrix
- diagonalization
- search
- column
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Complex Calculations (AREA)
- Error Detection And Correction (AREA)
Abstract
【課題】アクセス回数を削減でき、行列の対角化処理の高速化を図ることが可能な行列対角化装置、行列対角化方法、および復号装置を提供する。
【解決手段】行列対角化装置100は、行列を記憶する行列メモリ120と、行のインデックスを記憶する行インデックスメモリ110と、要探索、掃き出しを行う要探索、掃き出し回路130,160と、を含み、行インデックスメモリ110から順に行インデックスを読み出し、行インデックスが指定する行を行列メモリ120から読み出し、その行の対角化の対象となる列の要素を見て、要探索、掃き出しを行い、要探索、掃き出しを複数列並列に行う機能を有する。
【選択図】図2
【解決手段】行列対角化装置100は、行列を記憶する行列メモリ120と、行のインデックスを記憶する行インデックスメモリ110と、要探索、掃き出しを行う要探索、掃き出し回路130,160と、を含み、行インデックスメモリ110から順に行インデックスを読み出し、行インデックスが指定する行を行列メモリ120から読み出し、その行の対角化の対象となる列の要素を見て、要探索、掃き出しを行い、要探索、掃き出しを複数列並列に行う機能を有する。
【選択図】図2
Description
本発明は、行列の対角化装置、対角化方法、および復号装置に関するものである。
行列の対角化を行う方法の一つに掃き出し法が知られている。
ここでいう対角化とは、たとえばm行n列(m≦n)の行列の場合、対角化対象となるm列を含むm行m列の部分行列について、行重み1、列重み1の行列に変形することを指す。
掃き出し法は、行の基本変形を繰り返すことで実現される。
ここでいう対角化とは、たとえばm行n列(m≦n)の行列の場合、対角化対象となるm列を含むm行m列の部分行列について、行重み1、列重み1の行列に変形することを指す。
掃き出し法は、行の基本変形を繰り返すことで実現される。
図1は、0か1のみの要素を持つ行列の対角化のフローチャートである。
基本変形では、対象列を第1行から順にその要素を調べ(ST1〜ST3)、要素が零か非零かを判定し(ST4,ST6)、また、その要素を含む行が既に要行になったことがあるかも判定する(ST5,ST6)。
非零でありかつその行が未だ要行になったことがなければ、その要素を要とし、その要素を含む行を要行とする(ST7)。これを要探索という。
次に、要行を用いて他行を掃き出す。掃き出しでは、要行以外に対象列が非零となる要素を探し、その行から要行を減算する(ST8〜ST16)。
非零でありかつその行が未だ要行になったことがなければ、その要素を要とし、その要素を含む行を要行とする(ST7)。これを要探索という。
次に、要行を用いて他行を掃き出す。掃き出しでは、要行以外に対象列が非零となる要素を探し、その行から要行を減算する(ST8〜ST16)。
以下に具体例を挙げる。ここでは例として、0か1の要素しかない4行6列の行列の第1列から第4列までを対角化する場合を考察する。
<1>次の初期行列に対して対角化を開始する。
<2>まず、次のように、第1列について基本変形を行う。
第1行を要探索する。この場合、第1列は零なので要にはならない。
第1行を要探索する。この場合、第1列は零なので要にはならない。
<3>次に、第2行を要探索する。
この場合、第1列は非零であり、かつ第2行はこれまで要行になったことがないため、この行を要行とする。
この場合、第1列は非零であり、かつ第2行はこれまで要行になったことがないため、この行を要行とする。
<4>次に、第2行を使って他行を掃き出す。
この場合、第3行の第1列は非零であるため、第2行を第3行に加える。
この場合、第3行の第1列は非零であるため、第2行を第3行に加える。
<5>第4行の第1列は零であるためそのままにする。
<6>第1行の第1列は零であるためそのままにする。
<7>次に、第2列について基本変形を施す。
第1行を要探索する。この場合、第2列は零なので要にはならない。
第1行を要探索する。この場合、第2列は零なので要にはならない。
<8>第2行を要探索する。
この場合、第2列は非零であるが、第2行はすでに第1列で要行になったので、第2列で要行にはなれない。
この場合、第2列は非零であるが、第2行はすでに第1列で要行になったので、第2列で要行にはなれない。
<9>第3行を要探索する。
この場合、第2列は非零であり、かつ第3行はこれまでに要行になったことがないので、この行を要行とする。
この場合、第2列は非零であり、かつ第3行はこれまでに要行になったことがないので、この行を要行とする。
<10>第3行を使って他行を掃き出す。
この場合、第4行の第2列は零であるためそのままにする。
この場合、第4行の第2列は零であるためそのままにする。
<11>第1行の第2列は零であるためそのままにする。
<12>第2行の第2列は非零であるので第3行を第2行に加える。
<13>第3列についても同様に基本変形を行う。
<14>第4列についても同様に基本変形を行う。
以上で、対角化が完了する。なお、0と1以外の要素が存在する場合は、掃き出す時に、掃き出される行の対象要素を要行の対象要素で割った値と要行を掛け合わせて掃き出される行から減算すればよい。
対角化対象となる列の基本変形を行う場合、各列を1列毎に要探索、掃き出しを行う装置を考えると、要探索、掃き出しを行うために、多くの行アクセス、もしくは読出しが必要となる。
たとえば、1列の基本変形に対し、要探索と掃き出しを行うために、各々行数回行を読出し、これを列回繰り返すと行数×列数×2回の行アクセス、もしくは読出しが必要となる。
たとえば、1列の基本変形に対し、要探索と掃き出しを行うために、各々行数回行を読出し、これを列回繰り返すと行数×列数×2回の行アクセス、もしくは読出しが必要となる。
本発明は、アクセス回数を削減でき、行列の対角化処理の高速化を図ることが可能な行列対角化装置、行列対角化方法、および復号装置を提供することにある。
本発明の第1の観点の行列対角化装置は、対角化対象列において、順に要素が零か非零かを判定し、当該要素を含む行が既に要行になったことがあるかも判定し、非零でありかつその行が未だ要行になったことがない場合には、当該要素を要、当該要素を含む行を要行とする要探索手段と、前記要行を利用して他行を掃き出す掃き出し手段と、を有し、前記要探索手段および前記掃き出し手段は、対角化対象列を複数列同時並列的に要探索、掃き出し、当該処理を対角化対象列毎に繰り返す。
本発明の第2の観点の行列対角化装置は、行列を記憶する行列メモリと、行のインデックスを記憶する行インデックスメモリと、要探索、掃き出しを行う要探索、掃き出し回路と、を含み、前記行インデックスメモリから順に行インデックスを読み出し、当該行インデックスが指定する行を前記行列メモリから読み出し、その行の対角化の対象となる列の要素を見て、要探索、掃き出しを行い、要探索、掃き出しを複数列並列に行う機能を有する。
本発明の第3の観点に係る行列対角化方法は、対角化対象列において、順に要素が零か非零かを判定する第1ステップと、前記要素を含む行が既に要行になったことがあるかも判定する第2ステップと、判定の結果、非零でありかつその行が未だ要行になったことがない場合には、当該要素を要、当該要素を含む行を要行とする第3ステップと、前記要行を利用して他行を掃き出す掃き出し第4ステップと、を有し、前記第1ステップから前記第4ステップにおいて、対角化対象列を複数列同時並列的に要探索、掃き出し、当該処理を対角化対象列毎に繰り返す。
本発明の第4の観点に係る復号装置は、対角化されたパリティ検査行列を用いて、信頼性伝播(Belief propagation:BP)を行うことにより、値が更新され、更新された値に対して、所定の繰り返し回数、ソート、対角化、信頼性伝播(BP)を行う復号装置であって、受信語の信頼度(LLR)の大きさに応じて列インデックスのソートを行うソート部と、信頼度の低いシンボルに対応する列より順に、パリティ検査行列の対角化を行う行列対角化装置と、を含み、前記行列対角化装置は、対角化対象列において、順に要素が零か非零かを判定し、当該要素を含む行が既に要行になったことがあるかも判定し、非零でありかつその行が未だ要行になったことがない場合には、当該要素を要、当該要素を含む行を要行とする要探索手段と、前記要行を利用して他行を掃き出す掃き出し手段と、を有し、前記要探索手段および前記掃き出し手段は、対角化対象列を複数列同時並列的に要探索、掃き出し、当該処理を対角化対象列毎に繰り返す。
本発明の第5の観点の復号装置は、対角化されたパリティ検査行列を用いて、信頼性伝播(Belief propagation:BP)を行うことにより、値が更新され、更新された値に対して、所定の繰り返し回数、ソート、対角化、信頼性伝播(BP)を行う復号装置であって、受信語の信頼度(LLR)の大きさに応じて列インデックスのソートを行うソート部と、信頼度の低いシンボルに対応する列より順に、パリティ検査行列の対角化を行う行列対角化装置と、を含み、前記行列対角化装置は、行列を記憶する行列メモリと、行のインデックスを記憶する行インデックスメモリと、要探索、掃き出しを行う要探索、掃き出し回路と、を含み、前記行インデックスメモリから順に行インデックスを読み出し、当該行インデックスが指定する行を前記行列メモリから読み出し、その行の対角化の対象となる列の要素を見て、要探索、掃き出しを行い、要探索、掃き出しを複数列並列に行う機能を有する。
本発明によれば、一度の行続出しで複数列の基本変形が並列に行われる。その結果、対角化を行う処理が高速化される。
本発明によれば、行列を対角化する場合、アクセス回数を削減でき、行列の対角化処理の高速化を図ることができる。
以下、本発明の実施形態を図面に関連付けて説明する。
図2は、本発明の実施形態に係る行列対角化方法を採用した行列対角化装置の基本的な構成例を示しブロック図である。
本実施形態に係る行列対角化装置100は、図2に示すように、行のインデックスを記憶する行インデックスメモリ110と、行列を記憶する行列メモリ120と、第1要探索、掃き出し回路130と、第1行保持部140と、第1要保持部150と、第2要探索、掃き出し回路160と、第2行保持部170と、第2要保持部180とを有している。
図2の行列対角化装置100は、行インデックスメモリ110から順に行インデックスを読み出し、その行インデックスが指定する行を行列メモリ120から読み出し、その行の対角化の対象となる列の要素を見て、要探索、掃き出しを行う。
また、要探索、掃出しは一行読出すごとにパラレル(並列)に行い、要行同士の掃出しは行読出しの最後に行うことにより高速に対角化される。これにより、たとえば3列並列に基本変形を行うと行読出し回数をおよそ1/3に減らすことができる。
さらに、対象となる列を要探索、掃き出す際、行インデックスメモリ110から行インデックスを先頭アドレスから順番に読み出し、読み出した行が要行にならなかった場合、その行インデックスを行インデックスメモリ110の先頭アドレスから順に書き込み、読み出した行が要行になった場合のみ、その行インデックスを要行インデックス保持部170,180に書き込み、最後に行インデックスメモリ110の後ろのアドレスにそのインデックスを書き込む。
これにより、次の基本変形から未だ要になっていない行を優先的に読み出せるため、はじめて見つかった対象列の非零要素を要とでき、各列の基本変形に対して、各行は要探索か掃き出しのいずれかの対象となればよいので、より高速な対角化が可能となる。
以上の方法により、t列パラレルで対角化を行った場合、およそ行数×列数/t回の行読出しで対角化が可能となる。
また、要探索、掃出しは一行読出すごとにパラレル(並列)に行い、要行同士の掃出しは行読出しの最後に行うことにより高速に対角化される。これにより、たとえば3列並列に基本変形を行うと行読出し回数をおよそ1/3に減らすことができる。
さらに、対象となる列を要探索、掃き出す際、行インデックスメモリ110から行インデックスを先頭アドレスから順番に読み出し、読み出した行が要行にならなかった場合、その行インデックスを行インデックスメモリ110の先頭アドレスから順に書き込み、読み出した行が要行になった場合のみ、その行インデックスを要行インデックス保持部170,180に書き込み、最後に行インデックスメモリ110の後ろのアドレスにそのインデックスを書き込む。
これにより、次の基本変形から未だ要になっていない行を優先的に読み出せるため、はじめて見つかった対象列の非零要素を要とでき、各列の基本変形に対して、各行は要探索か掃き出しのいずれかの対象となればよいので、より高速な対角化が可能となる。
以上の方法により、t列パラレルで対角化を行った場合、およそ行数×列数/t回の行読出しで対角化が可能となる。
以下、本実施形態に係る行列対角化方法の全体の処理を図2〜図12に関連付けて説明する。図2〜図10は、行列を2列パラレルに要探索、掃き出しを行う対角化フローを表す。
図2において、初期に行インデックスメモリ110にはアドレスと同じ値が格納されている。
これを先頭アドレスから順に1、2、3、4と読出していき行列メモリ120の読出しアドレスS12とし、これを用いて行列メモリ120から行S13を読み出す。
読出した行S13に対し、2列分の要探索、掃き出しが施され、これを4列分行うと対角化は完了する。
ここでは、まず、第1列、第2列を並列に要探索、掃き出す。第1要探索、掃き出し回路130では第1列、第2要探索、掃き出し回路160では第2列を対角化の対象とする。
これを先頭アドレスから順に1、2、3、4と読出していき行列メモリ120の読出しアドレスS12とし、これを用いて行列メモリ120から行S13を読み出す。
読出した行S13に対し、2列分の要探索、掃き出しが施され、これを4列分行うと対角化は完了する。
ここでは、まず、第1列、第2列を並列に要探索、掃き出す。第1要探索、掃き出し回路130では第1列、第2要探索、掃き出し回路160では第2列を対角化の対象とする。
ここで、第1列、第2列の基本変形を開始する。
まず、図3において、行インデックスメモリ110から、読出し行インデックスS12に1が読み出される。これが行列メモリ120に与えられると第1行が読み出され、第1要探索、掃き出し回路130へ送られる。
第1要探索、掃き出し回路130においては、第1列の要素が零か非零がを調べ、今回は零であるため、要にはならず、第1行はそのまま第1行保持部140へ送信され、第1要フラグ保持部150には0が送信される。
まず、図3において、行インデックスメモリ110から、読出し行インデックスS12に1が読み出される。これが行列メモリ120に与えられると第1行が読み出され、第1要探索、掃き出し回路130へ送られる。
第1要探索、掃き出し回路130においては、第1列の要素が零か非零がを調べ、今回は零であるため、要にはならず、第1行はそのまま第1行保持部140へ送信され、第1要フラグ保持部150には0が送信される。
次に、図4において、第2要探索、掃き出し回路160には第1行が送られ、この第2列は零であるため、第2行保持部170には第1行がそのまま送られ、第2要フラグ保持部180には0が送られる。
また、行インデックスメモリ110から、読出し行インデックスS12に2が読み出され、行列メモリ120から第2行が読み出される。
読み出された行S13は第1要探索、掃き出し回路130で第1列が零か非零か調べられ、非零であるため、この行を要とし、内部に一時的に格納される。
また、第1行保持部140に第2行が、第1要フラグ保持部150には1が送られる。
また、行インデックスメモリ110から、読出し行インデックスS12に2が読み出され、行列メモリ120から第2行が読み出される。
読み出された行S13は第1要探索、掃き出し回路130で第1列が零か非零か調べられ、非零であるため、この行を要とし、内部に一時的に格納される。
また、第1行保持部140に第2行が、第1要フラグ保持部150には1が送られる。
次に、図5において、第2要探索、掃き出し回路160には、第2行が要フラグ1と共に入力され、要フラグが1であり、また、第2列の要行は未だ見つかっていないので、第2行をそのまま第2行保持部170へ送り、第2要フラグ保持部180に1を送る。
また、行列メモリ120から第3行が同様に読み出され、第1要探索、掃き出し回路130に送られる。第1要探索、掃き出し回路130は既に要行を確保しているので、第3行が掃き出しの対象となるかを判断する。
第3行第1列は非零であるので、第3行に対し確保した要行で掃き出す、具体的には第3行から要行を減算した行を新たな第3行とし第1行保持部130へ送られる。また、第1要フラグ保持部150には0が送られる。
さらに、第2行保持部160から読み出される第1行を行列メモリ120に書き込む。また、行インデックスメモリ110に到来する書込み行インデックスS11である1とともに第2要フラグ保持部180から0が到来するため、読出し行インデックス保持部111の先頭に1を書き込む。
また、行列メモリ120から第3行が同様に読み出され、第1要探索、掃き出し回路130に送られる。第1要探索、掃き出し回路130は既に要行を確保しているので、第3行が掃き出しの対象となるかを判断する。
第3行第1列は非零であるので、第3行に対し確保した要行で掃き出す、具体的には第3行から要行を減算した行を新たな第3行とし第1行保持部130へ送られる。また、第1要フラグ保持部150には0が送られる。
さらに、第2行保持部160から読み出される第1行を行列メモリ120に書き込む。また、行インデックスメモリ110に到来する書込み行インデックスS11である1とともに第2要フラグ保持部180から0が到来するため、読出し行インデックス保持部111の先頭に1を書き込む。
次に、図6において、第2要探索、掃き出し回路160には、第3行が要フラグ0と共に入力され、第2列の要行は未だ見つかっていない上、第3行第2列は非零であるため、これを要行とし、内部に第3行を確保し、またその行を第2行保持部170へ送り、第2要フラグ保持部180に1を送る。
また、行列メモリ120から第4行が同様に読み出され、第1要探索、掃き出し回路130に送られる。第1要探索、掃き出し回路130は既に要行を確保しているので、第4行を掃き出す。第4行第1列は零であるので、そのまま第4行を第1行保持部140へ送られる。また、第1要フラグ保持部150には0が送られる。
また、第2要探索、掃き出し回路160から読み出される第2行を行列メモリ120に書き込む。
行インデックスメモリ110に戻ってくる書込み行インデックスS11である2とともに第2要フラグ保持部180から1が到来するため、要行インデックス保持部112に2を書き込む。
また、行列メモリ120から第4行が同様に読み出され、第1要探索、掃き出し回路130に送られる。第1要探索、掃き出し回路130は既に要行を確保しているので、第4行を掃き出す。第4行第1列は零であるので、そのまま第4行を第1行保持部140へ送られる。また、第1要フラグ保持部150には0が送られる。
また、第2要探索、掃き出し回路160から読み出される第2行を行列メモリ120に書き込む。
行インデックスメモリ110に戻ってくる書込み行インデックスS11である2とともに第2要フラグ保持部180から1が到来するため、要行インデックス保持部112に2を書き込む。
次に、図7において、第2要探索、掃き出し回路160には、第4行が要フラグ0と共に入力され、第2列の要行は既に見つかっているので、第4行を掃き出した後、その行を第2行保持部170へ送り、また第2要フラグ保持部180に0を送る。
行列メモリ120からは何も読み出されず、第1要探索、掃き出し回路130から内部に保持した要行を第1行保持部140へ送る。また、第2要探索、掃き出し回路160から読み出される第3行を行列メモリ120に書き込む。
さらに、行インデックスメモリ110に到来する書込み行インデックスS11である3とともに第2要フラグ保持部180から1が到来するため、要行インデックス保持部112に3を書き込む。
行列メモリ120からは何も読み出されず、第1要探索、掃き出し回路130から内部に保持した要行を第1行保持部140へ送る。また、第2要探索、掃き出し回路160から読み出される第3行を行列メモリ120に書き込む。
さらに、行インデックスメモリ110に到来する書込み行インデックスS11である3とともに第2要フラグ保持部180から1が到来するため、要行インデックス保持部112に3を書き込む。
そして、図8において、第1行保持部150から到来した第2行に対して、第2要探索、掃き出し回路160において内部に確保した要行第3行で掃き出しを行う。つまり、この時に要行同士の掃き出しを行う。
掃き出された第2行は第2行保持部170へ送られる。また、第2行保持部170から読み出される第4行を行列メモリ120に書き込む。
さらに、行インデックスメモリ110に戻ってくる書込み行インデックスS11である4とともに第2要フラグ保持部180から0が到来するため、読出し行インデックス保持部111に4を書き込む。
掃き出された第2行は第2行保持部170へ送られる。また、第2行保持部170から読み出される第4行を行列メモリ120に書き込む。
さらに、行インデックスメモリ110に戻ってくる書込み行インデックスS11である4とともに第2要フラグ保持部180から0が到来するため、読出し行インデックス保持部111に4を書き込む。
さらに、図9において、第2要探索、掃き出し回路160の内部に確保した要行第3行を第2行保持部170へ送る。また、第2行保持部170から読み出される第1列要行である第2行を行列メモリ120に書き込む。
また、要行インデックス保持部112から読出し行インデックス保持部111の下位アドレスに値を移す。
まず、行インデックス2を読出し行インデックス保持部111に書き込む。この値は行列メモリ120の書き込み行インデックスS11にも用いられる。
また、要行インデックス保持部112から読出し行インデックス保持部111の下位アドレスに値を移す。
まず、行インデックス2を読出し行インデックス保持部111に書き込む。この値は行列メモリ120の書き込み行インデックスS11にも用いられる。
最後に、図10において、第2行保持部170から読み出される第2列要行である第3行を行列メモリ120に書き込む。
また、要行インデックス保持部112から読出し行インデックス保持部111の下位アドレスに値を移す。今回は、行インデックス3を読出し行インデックス保持部111に書き込む。
また、この値を行列メモリ120の書き込み行インデックスS11にも用いる。
以上で、第1列、第2列の要探索、掃き出しは完了する。
また、要行インデックス保持部112から読出し行インデックス保持部111の下位アドレスに値を移す。今回は、行インデックス3を読出し行インデックス保持部111に書き込む。
また、この値を行列メモリ120の書き込み行インデックスS11にも用いる。
以上で、第1列、第2列の要探索、掃き出しは完了する。
第3列、第4列を要探索する際は、行列メモリ120から行を読み出す際に、行インデックスメモリ110の先頭アドレスから順に行インデックスを読み出せば、未だ要になっていない行を優先的に読み出せるので、はじめて見つかった対象列の非零要素を要とできる。
また、各列の基本変形に対して、各行は要探索か掃き出しのいずれかの対象となればよいので、より高速な対角化が可能となる。第3列、第4列の要探索、掃き出しについても、同様に第1要探索、掃き出し回路が第3列、第2要探索、掃き出し回路が第4列の要探索、掃き出しを担当することにより、より高速な対角化が可能になり、これが完了すれば、図11のように、行列の対角化は完了する。
また、各列の基本変形に対して、各行は要探索か掃き出しのいずれかの対象となればよいので、より高速な対角化が可能となる。第3列、第4列の要探索、掃き出しについても、同様に第1要探索、掃き出し回路が第3列、第2要探索、掃き出し回路が第4列の要探索、掃き出しを担当することにより、より高速な対角化が可能になり、これが完了すれば、図11のように、行列の対角化は完了する。
要探索、掃き出し回路130,160は具体的には図12のようになる。図12に示す構成は、行列が0か1の要素しか持たない場合の要探索、掃き出し回路である。
図12の要探索、掃き出し回路130(160)は、セレクタ131、状態遷移保持部132、要行選択セレクタ133、要行保持部134、アンドゲート135、および掃き出し部136を主構成要素として有している。
図12の要探索、掃き出し回路130においては、まず対角化が開始したら、状態遷移保持部132において、要探索状態になる。
入力される行S31に対し、対角化対象要素を取り出すためのセレクタ131を通り対角化対象列の要素S32のみ取り出し、この対象要素が零の場合は、状態遷移保持部132は、要探索状態を維持し、要フラグS33は0、掃き出しフラグS34は0を出力する。
初めて対象要素S32が非零要素であった場合、要フラグS33は1、掃き出しフラグS34は0を出力し、要行選択セレク133によって、入力行S31が要行として要行保持部204に取り込まれる。
また、状態遷移保持部132は要探索状態から掃き出し状態へ遷移する。なお、入力要フラグS39が0の場合は上記の通り動作するが、1の場合は入力行をそのまま出力行とし、出力要フラグS33にも入力要フラグ1をそのまま出力する。状態も要探索状態のまま変わらない。
入力される行S31に対し、対角化対象要素を取り出すためのセレクタ131を通り対角化対象列の要素S32のみ取り出し、この対象要素が零の場合は、状態遷移保持部132は、要探索状態を維持し、要フラグS33は0、掃き出しフラグS34は0を出力する。
初めて対象要素S32が非零要素であった場合、要フラグS33は1、掃き出しフラグS34は0を出力し、要行選択セレク133によって、入力行S31が要行として要行保持部204に取り込まれる。
また、状態遷移保持部132は要探索状態から掃き出し状態へ遷移する。なお、入力要フラグS39が0の場合は上記の通り動作するが、1の場合は入力行をそのまま出力行とし、出力要フラグS33にも入力要フラグ1をそのまま出力する。状態も要探索状態のまま変わらない。
掃き出し状態では、要フラグS33には基本的に0を出力し、要行を要行保持部134に保持し続ける。
対象要素S32が非零の場合、掃き出しフラグS34に1を出力し、掃き出し部136で入力行と要行の排他的論理和が計算され、掃き出し部から行S38が出力され行列メモリ120に書き込まれる。
対象要素S32が零の場合は掃き出しフラグS34に0を出力し、入力行S31はそのままS38へ出力され、再び行列メモリにその行が書き込まれる。
掃き出しが完了すると、要探索状態へ戻るか、その行列の対角化が終了した場合はIDLE状態へ戻る。なお、入力要フラグS39が0の場合も1の場合も上記の通り動作するが、入力要フラグS39が1の場合のみ、出力要フラグS33にはそのまま1を出力する。
また、第1要探索、掃き出し回路130の場合は、入力要フラグに常に0を入力しておけばよい。
対象要素S32が非零の場合、掃き出しフラグS34に1を出力し、掃き出し部136で入力行と要行の排他的論理和が計算され、掃き出し部から行S38が出力され行列メモリ120に書き込まれる。
対象要素S32が零の場合は掃き出しフラグS34に0を出力し、入力行S31はそのままS38へ出力され、再び行列メモリにその行が書き込まれる。
掃き出しが完了すると、要探索状態へ戻るか、その行列の対角化が終了した場合はIDLE状態へ戻る。なお、入力要フラグS39が0の場合も1の場合も上記の通り動作するが、入力要フラグS39が1の場合のみ、出力要フラグS33にはそのまま1を出力する。
また、第1要探索、掃き出し回路130の場合は、入力要フラグに常に0を入力しておけばよい。
なお、行列が0か1以外の要素を持つ要探索、掃き出しは、要と掃き出し対象となる行の対象要素を比べ、掃き出し対象となる行の対角要素を要で割った値を、要行保持部の後段で掛け算して、掃き出すことにより実現される。
また、初期に行列メモリ120から行を読み出す際は、行インデックスメモリ110にわざわざアドレスと同じ値を書き込んでおかなくとも、直接1、2、3、4と値をインクリメントして直接行列メモリ120から行を読み出してもよい。
また、初期に行列メモリ120から行を読み出す際は、行インデックスメモリ110にわざわざアドレスと同じ値を書き込んでおかなくとも、直接1、2、3、4と値をインクリメントして直接行列メモリ120から行を読み出してもよい。
なお、この方法は、どんな行列の大きさでもパラレルに処理する対角化列数が何列でも適用が可能である。
また、この方法は、行を読み出して列毎に基本変形する場合以外に、列を読み出して行毎に基本変形をする場合にも適用できる。
また、この方法は、行を読み出して列毎に基本変形する場合以外に、列を読み出して行毎に基本変形をする場合にも適用できる。
以上説明したように、本実施形態によれば、行列対角化装置100は、行インデックスメモリ110から順に行インデックスを読み出し、その行インデックスが指定する行を行列メモリ120から読み出し、その行の対角化の対象となる列の要素を見て、要探索、掃き出しを行い、また、要探索、掃出しは一行読出すごとにパラレルに行い、要行同士の掃出しは行読出しの最後に行うことにより高速に対角化され、さらに、対象となる列を要探索、掃き出す際、行インデックスメモリ110から行インデックスを先頭アドレスから順番に読み出し、読み出した行が要行にならなかった場合、その行インデックスを行インデックスメモリ110の先頭アドレスから順に書き込み、読み出した行が要行になった場合のみ、その行インデックスを要行インデックス保持部に書き込み、最後に行インデックスメモリ110の後ろのアドレスにそのインデックスを書き込むことから、以下の効果を得ることができる。
すなわち、要探索、掃出しは一行読出すごとにパラレルに行い、要行同士の掃出しは行読出しの最後に行うことにより高速に対角化される。これにより、たとえば3列並列に基本変形を行うと行読出し回数をおよそ1/3に減らすことができる。
また、次の基本変形から未だ要になっていない行を優先的に読み出せるため、はじめて見つかった対象列の非零要素を要とでき、各列の基本変形に対して、各行は要探索か掃き出しのいずれかの対象となればよいので、より高速な対角化が可能となる。
以上の方法により、t列パラレルで対角化を行った場合、およそ行数×列数/t回の行読出しで対角化が可能となる。
また、次の基本変形から未だ要になっていない行を優先的に読み出せるため、はじめて見つかった対象列の非零要素を要とでき、各列の基本変形に対して、各行は要探索か掃き出しのいずれかの対象となればよいので、より高速な対角化が可能となる。
以上の方法により、t列パラレルで対角化を行った場合、およそ行数×列数/t回の行読出しで対角化が可能となる。
本発明の実施形態に係る行列対角化装置は、代数的手法を用いた誤り訂正符号技術を実現するための回路、たとえば適応的信頼性伝播(Adaptive Belief Propagatin:ABP)復号器に応用できる。
ABP復号は、リードソロモン(Read−Solomon:RS)符号やBCH符号、その他低密度でないパリティ検査行列を持つ線形符号に対する復号法であり、ある伝送路から符号語を受信すると、その受信語をより信頼できる値に更新する。
図13は、デジタル信号受信機、たとえばデジタルテレビなどの誤り訂正システムにABP復号器を用いた通信システムの構成例を示す図である。
本通信システム200は、RS符号化器210、インタリーバ220、は畳み込み符号器230、畳み込み符号の軟出力復号器240、デインタリーバ250、RS符号のABP繰り返し復号器260、およびチャネル270を有する。
本通信システム200では、RS符号化、畳み込み符号化された送信語に対して、畳み込み符号の軟出力復号をした後にABP復号を行っている。
ここで言う畳み込み符号の軟出力復号とは、たとえばBCJRアルゴリズムやSOVAによる復号のことである。
ABP復号器260においては、ABPによる信頼性の更新後、硬判定後限界距離復号、リスト復号、もしくは、軟値をそのまま入力として軟判定リスト復号を行う。
ここで言う畳み込み符号の軟出力復号とは、たとえばBCJRアルゴリズムやSOVAによる復号のことである。
ABP復号器260においては、ABPによる信頼性の更新後、硬判定後限界距離復号、リスト復号、もしくは、軟値をそのまま入力として軟判定リスト復号を行う。
図14は、MAP復号が後段についたABP復号器の構成例を示す図である。
この復号器300は、図14に示すように、ABP復号部310、限界距離復号(BD)復号部320、受信信頼度(LLR)保持部330、およびMAP復号部340を有している。
この復号器300は、図14に示すように、ABP復号部310、限界距離復号(BD)復号部320、受信信頼度(LLR)保持部330、およびMAP復号部340を有している。
復号器300においては、ABP復号部310による信頼性(LLR)の更新後、硬判定してBD復号部320において、限界距離復号を行い、この結果をリストに集め、最終的にMAP復号部340においてMAP(Maximum a posteriori Probabi11ty)復号を行う。
図15は、ABP復号器の復号装置の構成例を示す図である。
図15のABP復号器400は、図13のABP復号器260や図14のABP復号部310に適用可能であり、ソート入力選択部410、ソート部420、パリティ検査行列の対角化部430、信頼度(LLR)保持部440、および信頼性伝播(BP)部450を有している。
ABP復号器400においては、入力として、受信LLRS42が入力される。
列インデックスS41は、入力された受信LLRの符号語の始まりからカウンタで0、1、2、3、、とカウントアップされた値を生成し利用する。
ソート入力選択部410で、初回は、列インデックスS41とS42を選択し、繰り返し二回目以降は信頼性伝播(Belief propagation)後、更新LLRS50とその列インデックスS49を選択する。
列インデックスS41は、入力された受信LLRの符号語の始まりからカウンタで0、1、2、3、、とカウントアップされた値を生成し利用する。
ソート入力選択部410で、初回は、列インデックスS41とS42を選択し、繰り返し二回目以降は信頼性伝播(Belief propagation)後、更新LLRS50とその列インデックスS49を選択する。
図15に示すように、受信語が入力されたら、まず、ソート部420において、その信頼度(LLR)の大きさに応じて列インデックスのソートを行う。
次に、信頼度の低いシンボルに対応する列より順に、対角化部430でパリティ検査行列の対角化を行う。
最後に、対角化されたパリティ検査行列を用いて、信頼性伝播(Belief propagation)を行うことにより、値が更新される。
更新された値に対して、再びソート、対角化、信頼性伝播(BP)を行う。繰り返し数が予め決められており、その繰り返し数だけこれを繰り返す。
この復号器400の対角化部430において、本発明の実施形態に係る対角化装置100を適用することが可能である。
次に、信頼度の低いシンボルに対応する列より順に、対角化部430でパリティ検査行列の対角化を行う。
最後に、対角化されたパリティ検査行列を用いて、信頼性伝播(Belief propagation)を行うことにより、値が更新される。
更新された値に対して、再びソート、対角化、信頼性伝播(BP)を行う。繰り返し数が予め決められており、その繰り返し数だけこれを繰り返す。
この復号器400の対角化部430において、本発明の実施形態に係る対角化装置100を適用することが可能である。
なお、以上詳細に説明した行列の対角化方法は、上記手順に応じたプログラムとして形成し、CPU等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー(登録商標)ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー(登録商標)ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
100・・・行列対角化装置、110・・・行インデックスメモリ、120・・・行列メモリ、130・・・第1要探索・掃き出し回路、140・・・第1行保持部、150・・・第1要保持部、160・・・第2要探索、掃き出し回路、170・・・第2行保持部、180・・・第2要保持部、200・・・通信システム、210・・・RS符号化器、220・・・インタリーバ、230・・・畳み込み符号器、240・・・畳み込み符号の軟出力復号器、250・・・デインタリーバ、260・・・RS符号のABP繰り返し復号器、270・・・チャネル、300・・・復号器、310・・・ABP復号部、320・・・限界距離復号(BD)復号部、330・・・受信信頼度(LLR)保持部、340・・・MAP復号部、400・・・ABP復号器、410・・・ソート入力選択部、420・・・ソート部、430・・・パリティ検査行列の対角化部、440・・・信頼度(LLR)保持部、450・・・信頼性伝播(BP)部。
Claims (14)
- 対角化対象列において、順に要素が零か非零かを判定し、当該要素を含む行が既に要行になったことがあるかも判定し、非零でありかつその行が未だ要行になったことがない場合には、当該要素を要、当該要素を含む行を要行とする要探索手段と、
前記要行を利用して他行を掃き出す掃き出し手段と、を有し、
前記要探索手段および前記掃き出し手段は、
対角化対象列を複数列同時並列的に要探索、掃き出し、
当該処理を対角化対象列毎に繰り返す
行列対角化装置。 - 複数の対角化対象列を同時に要探索、掃き出した後に、前記掃き出し手段は、最後にその対象列の要行同士の掃き出しを行う
請求項1記載の行列対角化装置。 - 複数の対角化対象列を同時並列的に要探索、掃き出す際、ある対象列を要探索、掃き出している回路で対象とした行が新しく要行になったかどうかの情報を他の対象列を要探索、掃き出している回路に伝える機能を有する
請求項1記載の行列対角化装置。 - 複数の対角化対象列を同時並列的に要探索、掃き出す際、ある対象列を要探索、掃き出している回路で対象とした行が新しく要行になったかどうかの情報を他の対象列を要探索、掃き出している回路に伝える機能を有する
請求項2記載の行列対角化装置。 - 前記要探索手段は、
要探索の対象とする要素をその要素を含む行が未だ要行になっていない要素のみに限定する
請求項3記載の行列対角化装置。 - 前記要探索手段は、
要探索の対象とする要素をその要素を含む行が未だ要行になっていない要素のみに限定する
請求項4記載の行列対角化装置。 - 行列を記憶する行列メモリと、
行のインデックスを記憶する行インデックスメモリと、
要探索、掃き出しを行う要探索、掃き出し回路と、を含み、
前記行インデックスメモリから順に行インデックスを読み出し、当該行インデックスが指定する行を前記行列メモリから読み出し、その行の対角化の対象となる列の要素を見て、要探索、掃き出しを行い、要探索、掃き出しを複数列並列に行う機能を有する
行列対角化装置。 - 対象となる列を要探索、掃き出す際、前記行インデックスメモリから行インデックスを先頭アドレスから順番に読み出し、読み出した行が要行にならなかった場合、その行インデックスを前記行インデックスメモリの先頭アドレスから順に書き込み、読み出した行が要行になった場合のみ、その行インデックスを前記行インデックスメモリの最後のアドレスに書き込む機能を有する
請求項7記載の行列対角化装置。 - 前記要探索、掃き出し回路は、
要探索時は、前記行列メモリからの入力行の対象となる列が非零だった場合、かつ前段の要探索、掃き出し回路で入力行が要になっていない場合、その要探索、掃き出し回路は自動的にその行を要行として内部メモリに保持し、次以降の入力行の対象となる列が非零だった場合は、確保した要行でその行を掃き出す
請求項8記載の行列対角化装置。 - mビットnワードのメモリに行列を確保し、mビット毎に行を読み出し、さらにt列パラレルに要探索、掃き出しを行い、t列分の要行同士の掃き出しはn行読み出した後にt−1サイクルかけて行う
請求項9記載の行列対角化装置。 - 要探索、掃き出しを列毎ではなく行毎に行う
請求項1から10のいずれか一に記載の行列対角化装置。 - 対角化対象列において、順に要素が零か非零かを判定する第1ステップと、
前記要素を含む行が既に要行になったことがあるかも判定する第2ステップと、
判定の結果、非零でありかつその行が未だ要行になったことがない場合には、当該要素を要、当該要素を含む行を要行とする第3ステップと、
前記要行を利用して他行を掃き出す掃き出し第4ステップと、を有し、
前記第1ステップから前記第4ステップにおいて、
対角化対象列を複数列同時並列的に要探索、掃き出し、
当該処理を対角化対象列毎に繰り返す
行列対角化方法。 - 対角化されたパリティ検査行列を用いて、信頼性伝播(Belief propagation:BP)を行うことにより、値が更新され、更新された値に対して、所定の繰り返し回数、ソート、対角化、信頼性伝播(BP)を行う復号装置であって、
受信語の信頼度(LLR)の大きさに応じて列インデックスのソートを行うソート部と、
信頼度の低いシンボルに対応する列より順に、パリティ検査行列の対角化を行う行列対角化装置と、を含み、
前記行列対角化装置は、
対角化対象列において、順に要素が零か非零かを判定し、当該要素を含む行が既に要行になったことがあるかも判定し、非零でありかつその行が未だ要行になったことがない場合には、当該要素を要、当該要素を含む行を要行とする要探索手段と、
前記要行を利用して他行を掃き出す掃き出し手段と、を有し、
前記要探索手段および前記掃き出し手段は、
対角化対象列を複数列同時並列的に要探索、掃き出し、
当該処理を対角化対象列毎に繰り返す
復号装置。 - 対角化されたパリティ検査行列を用いて、信頼性伝播(Belief propagation:BP)を行うことにより、値が更新され、更新された値に対して、所定の繰り返し回数、ソート、対角化、信頼性伝播(BP)を行う復号装置であって、
受信語の信頼度(LLR)の大きさに応じて列インデックスのソートを行うソート部と、
信頼度の低いシンボルに対応する列より順に、パリティ検査行列の対角化を行う行列対角化装置と、を含み、
前記行列対角化装置は、
行列を記憶する行列メモリと、
行のインデックスを記憶する行インデックスメモリと、
要探索、掃き出しを行う要探索、掃き出し回路と、を含み、
前記行インデックスメモリから順に行インデックスを読み出し、当該行インデックスが指定する行を前記行列メモリから読み出し、その行の対角化の対象となる列の要素を見て、要探索、掃き出しを行い、要探索、掃き出しを複数列並列に行う機能を有する
復号装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006328558A JP2008140337A (ja) | 2006-12-05 | 2006-12-05 | 行列対角化装置、行列対角化方法、および復号装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006328558A JP2008140337A (ja) | 2006-12-05 | 2006-12-05 | 行列対角化装置、行列対角化方法、および復号装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008140337A true JP2008140337A (ja) | 2008-06-19 |
Family
ID=39601684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006328558A Pending JP2008140337A (ja) | 2006-12-05 | 2006-12-05 | 行列対角化装置、行列対角化方法、および復号装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008140337A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010130606A (ja) * | 2008-12-01 | 2010-06-10 | Fujitsu Ltd | 行列変換方法、行列変換装置および送受信システム |
-
2006
- 2006-12-05 JP JP2006328558A patent/JP2008140337A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010130606A (ja) * | 2008-12-01 | 2010-06-10 | Fujitsu Ltd | 行列変換方法、行列変換装置および送受信システム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5276173B2 (ja) | ニア・コードワードのromリスト復号 | |
JP5631977B2 (ja) | 読み取りデータ処理システムにおける動的スケーリングのシステムと方法 | |
US9419651B2 (en) | Non-polynomial processing unit for soft-decision error correction coding | |
JP2018019401A (ja) | リード・ソロモン復号器及び復号方法 | |
US8542137B2 (en) | Decoding encoded data | |
CN111384972B (zh) | 多进制ldpc解码算法的优化方法、装置及解码器 | |
US8312343B2 (en) | Systems and methods for re-using decoding parity in a detector circuit | |
KR20190019798A (ko) | 채널 편파 코드의 연속 제거 리스트 디코딩을 위한 효율적인 생존 메모리 아키텍처 | |
KR20070058430A (ko) | 블록 부호를 재귀반복적으로 복호하기 위한 방법 및 장치 | |
US20110161787A1 (en) | Power-reduced preliminary decoded bits in viterbi decoders | |
CN100433836C (zh) | 使用冗余对视/音频和语音数据进行解码的方法和系统 | |
JP2008140337A (ja) | 行列対角化装置、行列対角化方法、および復号装置 | |
JP2008140336A (ja) | 行列対角化方法、行列対角化装置、復号装置、およびプログラム | |
CN110708077B (zh) | Ldpc码大数逻辑译码方法、装置和译码器 | |
US9128888B2 (en) | Method and apparatus for turbo decoder memory collision resolution | |
JP4910708B2 (ja) | 復号装置および復号方法 | |
JP5130715B2 (ja) | データソート装置およびデータソート方法 | |
JP4862657B2 (ja) | 復号方法および復号装置、並びにプログラム | |
CN110875745A (zh) | 一种面向高速硬件电路实现的gii码译码算法 | |
US8885779B2 (en) | Channel detector implementation with postcoder | |
JP2008205546A (ja) | 復号方法および復号装置、並びにプログラム | |
CN111384973B (zh) | 多进制ldpc解码算法的优化方法、装置及解码器 | |
CN107094022B (zh) | 一种用于VLSI设计的Huffman编码系统的实现方法 | |
US8407572B2 (en) | Viterbi decoder and writing and reading method | |
JP2008167378A (ja) | 復号装置および復号方法 |