(57)【特許請求の範囲】
【請求項１】
下三角行列を含み、かつ、１以上の巡回行列または零行列からなる、ランク落ちの検査行列のうち前記下三角行列と同一行及び同一列を除いた部分検査行列に対応する生成行列を用いて準組織符号化を行う符号化器において、
前記生成行列は、１以上の巡回行列を含む巡回行列部分と、前記部分検査行列のランク落ち数と同じ行数の非巡回行列部分とを含み、
前記非巡回行列部分は、前記部分検査行列の右側部分行列の一部を対角化するために当該部分検査行列に対して行基本変形を適用することによって得られる第１の行列のうちランク落ちに対応する行ベクトルに対して前記右側部分行列の対角成分において交差する第１の列ベクトルの当該対角成分を「１」に置換することによって得られる第２の列ベクトル同士を列方向に結合して転置することによって得られる第２の行列に一致し、
前記巡回行列部分は、前記第１の行列の左側部分行列の転置行列に対して前記非巡回行列部分に含まれる行ベクトルを用いた行基本変形を適用することによって得られる第３の行列に一致する、
符号化器。
【請求項２】
前記非巡回行列部分に含まれる行ベクトルの０個以上を用いた少なくとも２つの行基本変形の中に前記巡回行列部分に含まれる任意の一行に適用すると非零要素の数を増大させるものが存在する、請求項１の符号化器。
【請求項３】
１以上の巡回行列または零行列からなるランク落ちの検査行列に対応する生成行列を用いて準組織符号化を行う符号化器において、
前記生成行列は、１以上の巡回行列を含む巡回行列部分と、前記検査行列のランク落ち数と同じ行数の非巡回行列部分とを含み、
前記非巡回行列部分は、前記検査行列の右側部分行列の一部を対角化するために当該検査行列に対して行基本変形を適用することによって得られる第１の行列のうちランク落ちに対応する行ベクトルに対して前記右側部分行列の対角成分において交差する第１の列ベクトルの当該対角成分を「１」に置換することによって得られる第２の列ベクトル同士を列方向に結合して転置することによって得られる第２の行列に一致し、
前記巡回行列部分は、前記第１の行列の左側部分行列の転置行列に対して前記非巡回行列部分に含まれる行ベクトルを用いた行基本変形を適用することによって得られる第３の行列に一致し、
前記非巡回行列部分に含まれる行ベクトルの０個以上を用いた少なくとも２つの行基本変形の中に前記巡回行列部分に含まれる任意の一行に適用すると非零要素の数を増大させるものが存在する、
符号化器。
【請求項４】
前記非巡回行列部分に含まれる行ベクトルの０個以上を用いた少なくとも２つの行基本変形の中に前記巡回行列部分に含まれる任意の一行に適用すると非零要素の数を減少させるものが存在しない、請求項２または請求項３記載の符号化器。
【請求項５】
半導体メモリ部と、
前記生成行列を用いて符号語を生成する請求項１または請求項３記載の符号化器と、前記符号語を前記半導体メモリ部に送る書き込み部とを備えるコントローラと
を具備する、記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、誤り訂正符号化に関する。
【背景技術】
【０００２】
ハードウェア実装などの簡易性から、複数の巡回行列を結合した疑似巡回行列（或いは、１つの巡回行列）を検査行列として利用する手法が注目されている。係る検査行列がフルランクであるならば、検査行列の右側部分行列の対角化を通じて、１以上の巡回行列を含む巡回行列部分を備える生成行列を導出することができる。
【０００３】
しかしながら、係る検査行列は必ずしもフルランクでなく、ランク落ち（ｒａｎｋ  ｄｅｆｉｃｉｅｎｔ）であるかもしれない。検査行列がランク落ちである場合に、検査行列の右側部分行列の一部を対角化することは可能である。しかしながら、単なる対角化を通じて導出される生成行列は巡回行列部分を備えない。係る生成行列を用いる符号化は、符号化器のハードウェア実装を複雑化するので好ましくない。
【０００４】
また、生成行列は、非零要素が疎である（即ち、非零要素の数が少ない）ことが望まれる。非零要素が疎であるほど、符号化器における符号化（即ち、情報ベクトルと生成行列との乗算）の計算複雑性が低減する。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】“Ｅｆｆｉｃｉｅｎｔ  Ｅｎｃｏｄｉｎｇ  ｏｆ  Ｑｕａｓｉ−Ｃｙｃｌｉｃ  Ｌｏｗ−Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ−Ｃｈｅｃｋ  Ｃｏｄｅｓ”  Ｚｏｎｇ  ｗａｎｇ  Ｌｉ，  Ｌｅｉ  Ｃｈｅｎ，  Ｌｉｎｇｑｉ  Ｚｅｎｇ，  Ｓｈｕ  Ｌｉｎ，  ａｎｄ  Ｗａｉ  Ｈ．  Ｆｏｎｇ  ＩＥＥＥ  ＴＲＡＮＳＡＣＴＩＯＮＳ  ＯＮ  ＣＯＭＭＵＮＩＣＡＴＩＯＮＳ，  ＶＯＬ．  ５４，  ＮＯ．  １，  ＪＡＮＵＡＲＹ  ２００６
【発明の概要】
【発明が解決しようとする課題】
【０００６】
実施形態は、ランク落ちの検査行列に対応し、かつ、巡回行列部分を含む生成行列を用いて符号化を実行することを目的とする。
【課題を解決するための手段】
【０００７】
実施形態によれば、符号化器は、下三角行列を含み、かつ、１以上の巡回行列または零行列からなるランク落ちの検査行列のうち前記下三角行列と同一行を除いた部分検査行列に対応する生成行列を用いて準組織符号化を行う。生成行列は、１以上の巡回行列を含む巡回行列部分と、部分検査行列のランク落ち数と同じ行数の非巡回行列部分とを含む。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係る符号化器を含む半導体メモリ装置を例示するブロック図。
【図２】ランク落ちの疑似巡回行列である検査行列を例示する図。
【図３】図２の検査行列の右側部分行列の一部を対角化することにより導出される行列を例示する図。
【図４】図３の行列から導出される行列を例示する図。
【図５】図４の行列に行基本変形を適用することにより導出される生成行列を例示する図。
【図６】３ランク落ちの疑似巡回行列である検査行列の右側部分行列の一部を対角化することにより導出される行列を例示する図。
【図７】図６の行列から導出される行列を例示する図。
【図８】図７の行列に行基本変形を適用することにより導出される生成行列を例示する図。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら実施形態についての説明が述べられる。尚、各実施形態の説明において、簡単化のために、シンボルは２元体上で定義される２元符号であるとする。即ち、以降の説明において、シンボルの取り得る非零要素は「１」のみであるとする。但し、各実施形態は、シンボルが多元体上で定義される多元符号にも適用可能である。
【００１０】
実施形態に係る符号化器は、例えば記憶装置などの記録再生系に組み込まれたり、送信装置などの通信系に組み込まれたりする。一般に、実施形態に係る符号化器は、誤り訂正符号化を必要とする任意の構成の機器に組み込まれてよい。例えば、実施形態に係る符号化器１０１は、図１に示される記憶装置１０３に組み込まれてもよい。
【００１１】
記憶装置１０３は、フラッシュメモリなどの不揮発性メモリである少なくとも１つの半導体メモリ部１０５と、半導体メモリ部１０５を制御するメモリコントローラ１０２とを含む。記憶装置１０３は、ホスト１０４（例えば、パーソナルコンピュータ、デジタルカメラなど）と接続し、ホスト１０４との間でデータを送受信する。例えば、ホスト１０４は、記憶装置１０３からデータを読み出したり、記憶装置１０３にデータを書き込んだりすることができる。
【００１２】
メモリコントローラ１０２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０７、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）コア１０８、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０９、ホストＩ／Ｆ（インタフェース）１１０、誤り訂正部１１１及びメモリＩ／Ｆ１１２を含む。メモリコントローラ１０２の各要素は、バス１０６によって互いに接続されている。
【００１３】
ＣＰＵコア１０８は、ホストＩ／Ｆ１１０を介してホスト１０４との間でデータを送受信したり、メモリＩ／Ｆ１１２を介して半導体メモリ部１０５との間でデータを送受信したりする。即ち、ＣＰＵコア１０８は、半導体メモリ部１０５からデータを受ける読み出し部として機能したり、半導体メモリ部１０５にデータを送る書き込み部として機能したりする。また、ＣＰＵコア１０８上で実行されるＦＷ（Ｆｉｒｍ  Ｗａｒｅ）は、書き換え回数の制限を含む半導体メモリ部１０５のアドレス管理を実現する。更に、ＦＷは、ホスト１０４からのコマンド入力に応じた記憶装置１０３全体の制御も実現する。
【００１４】
ＲＯＭ１０７には、記憶装置１０３の制御プログラムなどが記憶されている。ＲＡＭ１０９には、アドレス管理において必要となるアドレス変換テーブル、異常回路の情報などが記憶される。
【００１５】
誤り訂正部１１１は、符号化器１０１及び復号器１１３を含む。符号化器１０１には、実施形態に係る符号化器が組み込まれる。符号化器１０１は、半導体メモリ部１０５に書き込まれるデータに誤り訂正符号を付加する。具体的には、後述されるように、符号化器１０１は、ランク落ちの検査行列に対応し、かつ、巡回行列部分を含む生成行列を用いて符号化を実行する。また、典型的には、この巡回行列部分は、非零要素の数が疎となるように（少なくとも、最も密とならないように）導出される。従って、符号化器１０１は、簡易なハードウェア実装を採用できると共に、符号化の計算複雑性が小さい。一方、復号器１１３は、上記検査行列を用いて、半導体メモリ部１０５からの読み出しデータに対する誤り訂正復号を行う。この検査行列は疑似巡回行列であるので、復号器１１３は簡易なハードウェア実装を採用できる。
【００１６】
（第１の実施形態）  
以下、第１の実施形態に係る符号化器が用いる生成行列と、その導出手法とが述べられる。第１の実施形態に係る符号化器が用いる生成行列は、フルランクでない疑似巡回行列または巡回行列である検査行列に基づいて導出される。即ち、検査行列は、１以上の巡回行列からなり、ランク落ち（ｒａｎｋ  ｄｅｆｉｃｉｅｎｔ）である。この生成行列は、１以上の巡回行列を含む巡回行列部分と、検査行列のランク落ち数と同じ行数の非巡回行列部分とを含む。
【００１７】
疑似巡回行列とは、ｂ行×ｂ列の巡回行列または零行列を複数配列したものを意味する。巡回行列とは、全ての行ベクトルが夫々１つ上の行ベクトルの要素を１つだけ右方向に巡回シフトさせたものである行列を意味する。零行列とは、全ての要素が零の行列を意味する。このｂ行×ｂ列の巡回行列または零行列は、ブロックとも称される。一般に、疑似巡回行列である検査行列Ｈｑｃは、例えば下記の数式（１）で表すことができる。
【数１】
0005269936.tif 000002
【００１８】
数式（１）において、Ａｉ，ｊは１ブロックを表す（ｉは１以上ｃ以下の整数、ｊは１以上ｔ以下の整数）。検査行列Ｈｑｃによって定義される符号語の全長はｔ×ｂシンボルであり、その情報長は（ｔ−ｃ）×ｂシンボルであり、そのパリティ長はｃ×ｂシンボルである。また、符号語の全長、情報長及びパリティ長は、ブロックサイズｂによって換算されてもよい。即ち、符号語の全長はｔブロックであり、その情報長は（ｔ−ｃ）ブロックであり、そのパリティ長はｃブロックである。
【００１９】
仮に、検査行列Ｈｑｃがフルランクであるならば、行基本変形を用いて当該検査行列Ｈｑｃの右側部分行列（具体的には、第ｔ−ｃ＋１列から第ｔ列まで）を完全に対角化することによって、下記の数式（２）が得られる。フルランクとは、行列の階数（ｒａｎｋ）がその行列の行数と同じであることを意味する。即ち、フルランクとは、行列に含まれる１次独立な行ベクトルの最大個数が行数と同じであることを意味する。フルランクな行列は対角化可能である。
【数２】
0005269936.tif 000003
【００２０】
以降の説明において、Ｉは単位行列を表し、０は零行列を表す。尚、右側部分行列の対角化のための行基本変形は数式（１）における左側部分行列に含まれる各ブロックＡｉ，ｊにも影響するので、これら各ブロックＡｉ，ｊは数式（２）に示されるようにＡ’ｉ，ｊへと変形される。変形された各ブロックＡ’ｉ，ｊもまた、巡回行列または零行列である。数式（２）のうち左側部分行列（具体的には、第１列から第ｔ−ｃ列）を下記の数式（３）で表すと、検査行列Ｈｑｃに基づく生成行列Ｇは下記の数式（４）で表すことができる。尚、以降の説明において、Ｔは転置を表す。
【数３】
0005269936.tif 000004
【００２１】
【数４】
0005269936.tif 000005
【００２２】
行列Ａは前述の通り疑似巡回行列であるので、この転置行列ＡＴもまた疑似巡回行列である。即ち、検査行列Ｈｑｃがフルランクの疑似巡回行列であるならば、当該検査行列Ｈｑｃの右側部分行列の対角化によって得られる疑似巡回行列Ａの転置行列ＡＴを単位行列Ｉの右端に結合することによって、巡回行列部分（ＡＴ）を含む生成行列Ｇを導出することができる。巡回行列部分を含む生成行列を用いた符号化は、例えばシフトレジスタを用いて簡易に実装することができる。
【００２３】
情報シンボルを配列した情報ベクトルを生成行列に乗じると、符号語（ベクトル）が得られる。数式（４）の生成行列Ｇによって得られる符号語において、情報ベクトルに含まれる情報シンボルは全て維持されており、これらに後続してパリティシンボルが配列される。即ち、数式（４）の生成行列Ｇは組織符号化を実現する。
【００２４】
一方、検査行列Ｈｑｃがフルランクでない（即ち、ランク落ち）の疑似巡回行列であるならば、当該検査行列Ｈｑｃの右側部分行列を完全に対角化することはできない。ランク落ちとは、行列の階数がその行列の行数未満であることを意味する。即ち、ランク落ちとは、行列に含まれる１次独立な行ベクトルの最大個数が行数未満であることを意味する。尚、行列の行数とその行列の階数との間の差がＸである場合に、その行列はＸランク落ちの行列と称される。
【００２５】
図２に示される検査行列Ｈｑｃは、１ランク落ちの疑似巡回行列の一例である。図２の検査行列Ｈｑｃは、６行×６列の巡回行列を行方向に２個、列方向に４個配列したものである。即ち、図２の検査行列Ｈｑｃによって定義される符号語の全長は４ブロック（即ち、２４（＝４×６）シンボル）、その情報長は２（＝４−２）ブロック（即ち、１２（＝２×６）シンボル）、そのパリティ長は２ブロック（即ち、１２（＝２×６）シンボル）と見積もることができる。但し、検査行列Ｈｑｃのランク落ちの数だけ符号語の真のパリティ長は削られる。従って、図２の検査行列Ｈｑｃによって定義される符号語の真のパリティ長は１１（＝１２−１）シンボルであり、その真の情報長は１３（＝２４−１１）シンボルである。
【００２６】
前述のように、図２の検査行列Ｈｑｃの右側部分行列を完全に対角化することはできない。しかしながら、図３に示されるように、行基本変形を用いて図２の検査行列Ｈｑｃにおける右側部分行列の一部を対角化することは可能である。
【００２７】
図３の行列において、図２の検査行列Ｈｑｃのランク落ちに対応する行ベクトル２０が含まれる。ランク落ちに対応する行ベクトル２０のうち、図３の行列の右側部分行列（即ち、第１３列から第２４列まで）の対角成分（即ち、第１行第１３列の要素）に一致する要素は「０」である。以降の説明において、係る要素は便宜的に対象要素と称される。対象要素は、ランク落ちに対応する行ベクトルの各々に１つだけ含まれる。
【００２８】
前述のフルランクな検査行列Ｈｑｃの右側部分行列の対角化を通じた生成行列の導出手法によれば、対角化された行列の残部である左側部分行列（即ち、前述の数式（３）の行列Ａ）が抜き出される。同様に、図３の例についても、左側部分行列１０（便宜的に、行列Ｂと称される）が抜き出される。更に、ランク落ちに対応する行ベクトル２０に対して対象要素において交差する列ベクトル３０が抜き出される。この列ベクトル３０の対象要素が「１」に置換され、ベクトルＱが形成される。行列Ｂの右端にベクトルＱが結合され、１２行×１３列の行列［ＢＱ］が作成される。
【００２９】
尚、ランク落ちに対応する行ベクトルの総数は、検査行列Ｈｑｃのランク落ち数と一致する。即ち、行ベクトルに対して対象要素において交差する列ベクトルの総数もまた、検査行列Ｈｑｃのランク落ち数と一致する。従って、検査行列Ｈｑｃのランク落ち数が２以上であるならば、後述のように、係る列ベクトルの対象要素を「１」に置換したものを列方向に結合して行列Ｑが形成される。
【００３０】
行列［ＢＱ］は転置され、数式（３）と同様に、行列Ｂの列数と同じサイズの単位行列の右端に結合される。但し、単位行列と行列［ＢＱ］Ｔの行数を揃えるために、単位行列の下端には零ベクトル（或いは、零行列）が結合される。係る一連の操作によって、下記の数式（５）に示される行列Ｇを導出できる。
【数５】
0005269936.tif 000006
【００３１】
図３の行列に係る操作を適用すると、図４に示される行列が導出される。図４において、行列４０は行列［ＢＱ］Ｔに対応し、行列５０は行列ＢＴに対応する。  
以降の説明では、図２の疑似巡回行列の構造に対応する２×２個のブロック５１，５２，５３，５４を巡回行列に変形するための手法が述べられる。尚、図４から明らかなように、ブロック５１，５２，５３，５４はいずれも巡回行列ではない。
【００３２】
具体的には、数式（５）のベクトルＱ’（或いは、行列Ｑ’に含まれる行ベクトル）の０個以上を用いた行基本変形によって行列Ｇ’に含まれる各ブロックを巡回行列に変形することができる。行列Ｇ’において、同じ行に配列される１以上のブロックを纏めたブロックグループが形成される。図４の例であれば、ブロック５１，５２からなるブロックグループとブロック５３，５４からなるブロックグループとが形成される。
【００３３】
ブロックグループ内の任意の一行を対象行として行基本変形が適用される。そして、ブロックグループ内の各ブロックが行基本変形された対象行の部分ベクトルを含む巡回行列となるように、ブロックグループ内の他の全ての行に行基本変形が適用される。図４の例であれば、第５行を対象行として第１３行を加算する行基本変形を適用できる。そして、ブロック５１，５２が、行基本変形された第５行の部分ベクトル［１０００００］，［００１１００］を含む巡回行列となるように、ブロックグループ内の他の全ての行に行基本変形が適用される。具体的には、第１，２，３，４，６行は無変形となる（即ち、０個の行ベクトルを用いた行基本変形が適用される）。
【００３４】
係る操作によれば、数式（６）に示されるように、行列Ｇ’の右側部分行列を疑似巡回行列に変形することができる。数式（６）において、Ｇ１，１，Ｇ１，２，Ｇ２，１，Ｇ２，２は、いずれも巡回行列である。数式（５）及び数式（６）に基づいて、数式（７）に示される生成行列Ｇ’ｑｃを導出できる。
【数６】
0005269936.tif 000007
【００３５】
【数７】
0005269936.tif 000008
【００３６】
図４の行列に基づく生成行列Ｇ’ｑｃの一例が図５に示されている。図５において、行列６０は巡回行列部分を表し、行列７０は非巡回行列部分を表す。巡回行列部分６０は、前述のブロック５１，５２，５３，５４を巡回行列に変形したブロック６１，６２，６３，６４を含む。また行列８０は、単位行列部分を含むものの、その最終列（即ち、第１３列）を巡回行列部分６０及び非巡回行列部分７０と共有している。従って、係る生成行列によって得られる符号語において、第１番目から第１２番目までの情報シンボルは維持されるものの、第１３番目の情報シンボルは第１番目のパリティシンボルと混合される。即ち、数式（７）の生成行列Ｇ’ｑｃは準組織符号化を実現する。数式（７）の生成行列Ｇ’ｑｃによる準組織符号化において、検査行列のランク落ち数と同数の情報シンボルにパリティシンボルが混合される。本実施形態に係る符号化器は、数式（７）の生成行列Ｇ’ｑｃを用いて符号化を実行する。
【００３７】
ここで、ブロック５１，５２，５３，５４を巡回行列に変形するための行基本変形には任意性が存在する。例えば、第５行を対象行として、これを無変形とすることもできる。そして、ブロック５１，５２が行基本変形された第５行の部分ベクトル［０１１１１１］，［１１００１１］を含む巡回行列となるように、ブロックグループ内の他の行に基本変形が行われる。具体的には、第１，２，３，４，６行に第１３行が加算される。係る操作によっても、ブロック５１，５２を巡回行列に変形できる。
【００３８】
非巡回行列部分Ｑ’に含まれる行ベクトルの０個以上を用いて対象行に適用可能な行基本変形の組み合わせは、係る行ベクトルの総数に応じて増大する。係る行ベクトルの総数がｎであるならば、２ｎ通りの行基本変形（即ち、非巡回行列部分Ｑ’に含まれるｎ個の行ベクトルの各々を対象行に加算する／しない）が存在する。
【００３９】
そこで、本実施形態に係る符号化器が用いる生成行列Ｇ’ｑｃは、巡回行列部分に含まれる非零要素の数が疎となる（少なくなる）ように導出されるものとする。具体的には、対象行に適用可能な少なくとも２つの行基本変形のうち、行基本変形された対象行に含まれる非零要素の数が最大とならないものが適用される。換言すれば、導出された生成行列Ｇ’ｑｃにおいて、非巡回行列部分に含まれる行ベクトルの０個以上を用いた少なくとも２つの行基本変形の中に巡回行列部分に含まれる任意の１行に適用すると非零要素の数を増大させるものが少なくとも１つ存在する。
【００４０】
例えば、（Ａ）対象行に含まれる非零要素の数が最も少なくなる（即ち、最も疎になる）行基本変形を探索し、探索した行基本変形を対象行に適用してもよい。方針（Ａ）によって導出された生成行列Ｇ’ｑｃにおいて、非巡回行列部分に含まれる行ベクトルの０個以上を用いた少なくとも２つの行基本変形の中に巡回行列部分に含まれる任意の１行に適用すると非零要素の数を減少させるものが存在しない。或いは、（Ｂ）対象行について少なくも２つの行基本変形を試行し、非零の数が最大とならない（例えば、最小となる）行基本変形を選択し、選択した行基本変形を対象行に適用してもよい。或いは、（Ｃ）対象行とブロックグループ内の１または複数の他の行との中で非零要素の数を比較し、非零要素の数が最大でない（例えば、最小の）一行（対象行であってもよい）を選択する。更に、ブロックグループ内の各ブロックが選択された一行の部分ベクトルを含む巡回行列となるように、対象行に適用される行基本変形が探索されてよい。  
係る種々の方針のいずれかによって巡回行列部分を導出すれば、本実施形態に係る符号化器が実行する符号化の計算複雑性を低減できる。
【００４１】
以上説明したように、第１の実施形態に係る符号化器は、ランク落ちの検査行列に対応し、かつ、巡回行列部分を含む生成行列を用いて準組織符号化を実行する。従って、本実施形態に係る符号化器によれば、簡易なハードウェア実装を採用できる。更に、第１の実施形態に係る符号化器は、巡回行列部分に含まれる非零要素の数が最大とならないように導出された生成行列を用いて準組織符号化を実行する。従って本実施形態に係る符号化器によれば、符号化の計算複雑性を低減できる。
【００４２】
尚、図２乃至図５を用いた説明では、簡単化のために、１ランク落ちの検査行列Ｈｑｃが例示された。しかしながら、以下に説明されるように、２以上ランク落ちの検査行列Ｈｑｃから巡回行列部分を含み、かつ、当該巡回行列部分に含まれる非零要素の数が最大とならないように生成行列を導出することができる。
【００４３】
ここで、検査行列Ｈｑｃは、１０行×１０列の巡回行列を行方向に４個、列方向に５個配列した３ランク落ちの疑似巡回行列であると仮定される。即ち、検査行列Ｈｑｃによって定義される符号語の全長は５ブロック（即ち、５０（＝５×１０）シンボル）、その情報長は１（＝５−４）ブロック（即ち、１０＝（＝１×１０）シンボル）、そのパリティ長は４ブロック（即ち、４０（＝４×１０）シンボル）と見積もることができる。但し、検査行列Ｈｑｃのランク落ちの数だけ符号語の真のパリティ長は削られる。従って、検査行列Ｈｑｃによって定義される符号語の真のパリティ長は３７（＝４０−３）シンボルであり、その真の情報長は１３（＝５０−３７）シンボルである。
【００４４】
前述のように、検査行列Ｈｑｃの右側部分行列を完全に対角化することはできない。しかしながら、図６に示されるように、行基本変形を用いて検査行列Ｈｑｃにおける右側部分行列の一部を対角化することが可能である。
【００４５】
図６の行列において、検査行列Ｈｑｃのランク落ちに対応する行ベクトル２２１，２２２，２２３が含まれる。前述のように、これら行ベクトル２２１，２２２，２２３は、１つの対象要素を夫々含んでいる。
【００４６】
図６の例についても、左側部分行列２１０が前述の行列Ｂとして抜き出される。更に、ランク落ちに対応する行ベクトル２２１，２２２，２２３に対して対象要素において交差する列ベクトル２３１，２３２，２３３が抜き出される。これら列ベクトル２３１，２３２，２３３の対象要素が「１」に置換され、列方向に結合されて前述の行列Ｑが形成される。行列Ｂの右端に行列Ｑが結合され、４０行１３列の行列［ＢＱ］が作成される。
【００４７】
行列［ＢＱ］は転置され、数式（３）と同様に、行列Ｂの列数と同じサイズの単位行列の右端に結合される。但し、単位行列と行列［ＢＱ］Ｔの行数を揃えるために、単位行列の下端に零行列が結合される。係る一連の操作によって、上記の数式（６）に示される行列Ｇを導出できる。
【００４８】
図６の行列に係る操作を適用すると、図７に示される行列が導出される。図７において、行列２４０は行列［ＢＱ］Ｔに対応し、行列２５０は行列ＢＴに対応する。１×４個のブロック２５１，２５２，２５３，２５４は、巡回行列に夫々変形される。
【００４９】
具体的には、前述のように、数式（５）の行列Ｑ’に含まれる行ベクトルの０個以上を用いた行基本変形によって行列Ｇ’に含まれる各ブロックを巡回行列に変形することができる。行列Ｇ’において、同じ行に配列される１以上のブロックを纏めたブロックグループが形成される。図７の例であれば、ブロック２５１，２５２，２５３，２５４からなるブロックグループが形成される。
【００５０】
ブロックグループ内の任意の一行を対象行として行基本変形が適用される。そして、ブロックグループ内の各ブロックが行基本変形された対象行の部分ベクトルを含む巡回行列となるように、ブロックグループ内の他の全ての行に行基本変形が適用される。図７の例であれば、第１行を対象行として第１２行及び第１３行を加算する行基本変形を適用できる。そして、ブロック２５１，２５２，２５３，２５４が、行基本変形された第１行の部分ベクトル［０１０００１００００］，［１１０００１００００］，［１０００００１０１０］，［００１１００１０００］を含む巡回行列となるように、ブロックグループ内の他の全ての行に行基本変形が適用される。結果的に、図８に示される生成行列Ｇ’ｑｃが導出される。
【００５１】
図８において、行列２６０は巡回行列部分を表し、行列２７０は非巡回行列部分を表す。行列２６０は、前述のブロック２５１，２５２，２５３，２５４を巡回行列に変形したブロック２６１，２６２，２６３，２６４を含む。図８に示される生成行列Ｇ’ｑｃもまた準組織符号化を実現する。即ち、図８の生成行列Ｇ’ｑｃによって得られる符号語において、第１番目から第１０番目までのシンボルは維持されるものの、第１１番目のシンボルは第１番目のパリティシンボルと混合され、第１２番目のシンボルは第１１番目のパリティシンボルと混合され、第１３番目のシンボルは第２１番目のパリティシンボルと混合される。尚、図７の行列から導出可能な生成行列Ｇ’ｑｃは図８に示されるものに限られないが、前述の通り巡回行列部分に含まれる非零要素が最大とならないように生成行列が導出されるものとする。
【００５２】
（第２の実施形態）  
前述の第１の実施形態に係る符号化器は、ランク落ちの疑似巡回行列である検査行列に対応する生成行列を用いて符号化を実行する。第２の実施形態において、検査行列はＲ＆Ｕ（Ｒｉｃｈａｒｄｓｏｎ  ａｎｄ  Ｕｒｂａｎｋｅ）方式などの下三角行列部分を含むものである。尚、本実施形態の説明は具体化のためにＲ＆Ｕ方式を中心に展開されるものの、本実施形態は下三角行列部分を含む検査行列に広く適用可能である。
【００５３】
Ｒ＆Ｕ方式の検査行列Ｈｑｃは、下記の数式（８）で表すことができる。  
【数８】
0005269936.tif 000009
【００５４】
数式（８）において、６つの部分行列Ａ，Ｂ，Ｔ，Ｃ，Ｄ，Ｅは１つまたは複数のｂ行×ｂ列の巡回行列または零行列（即ち、ブロック）からなる。Ａはｃ２ブロック行×ｔブロック列の巡回行列または零行列からなる行列を表し、Ｂはｃ２ブロック行×ｃ１ブロック列の巡回行列または零行列からなる行列を表し、Ｔはｃ２ブロック行×ｃ２ブロック列の巡回行列または零行列からなる下三角行列である。下三角行列とは、対角要素よりも右側或いは上側の全ての要素が零の行列を意味する。また、数式（８）において、Ｃはｃ１ブロック行×ｔブロック列の行列を表し、Ｄはｃ１ブロック行×ｃ１ブロック列の行列を表し、Ｅはｃ１ブロック行×ｃ２ブロック列の行列を表す。即ち、数式（８）の検査行列Ｈｑｃによって定義される符号語の全長はｂ・（ｔ＋ｃ１＋ｃ２）シンボルであり、その情報長はｂ・ｔシンボルであり、そのパリティ長はｂ・（ｃ１＋ｃ２）シンボルである。
【００５５】
部分行列Ｔは下三角行列なので、逆行列Ｔ−１が存在する。従って、下記の数式（９）に示されるように、適切な行列を検査行列Ｈｑｃの左側から乗算することによって、部分行列Ｅを零行列に変換できる。尚、以降の説明において、行列の右上に「−１」を付したものは、当該行列の逆行列を表す。
【数９】
0005269936.tif 000010
【００５６】
数式（９）の検査行列Ｈ’ｑｃによって定義される符号語ベクトルｗに関して、Ｈ’ｑｃｗＴ＝０が成立する。この符号語ベクトルｗのうち、ｂ・ｔ個の情報シンボルからなる部分ベクトルをｍで表し、後続するｂ・ｃ１個のパリティシンボルからなる部分ベクトルをｐ１で表し、後続するｂ・ｃ２個のパリティシンボルからなる部分ベクトルをｐ２で表すと、ｗ＝［ｍｐ１ｐ２］である。数式（９）及び符号語ベクトルｗの定義によれば、部分ベクトルｐ１に関して下記の数式（１０）が成立する。また、部分ベクトルｐ２に関して下記の数式（１１）が成立する。尚、数式（１０）のφは、下記の数式（１２）によって定義される。
【数１０】
0005269936.tif 000011
【００５７】
【数１１】
0005269936.tif 000012
【００５８】
【数１２】
0005269936.tif 000013
【００５９】
数式（１０）には、行列φの逆行列φ−１が含まれている。しかしながら、本実施形態において検査行列Ｈｑｃはランク落ちなので、行列φの逆行列φ−１は存在しない。そこで、数式（９）を参照し、部分ベクトルｐ１に関する部分検査行列Ｈｑｃｐ１を下記の数式（１３）によって定義することとする。
【数１３】
0005269936.tif 000014
【００６０】
数式（１３）の部分検査行列Ｈｑｃｐ１は、ランク落ちの（疑似）巡回行列であるという点で前述の数式（１）の検査行列Ｈｑｃと共通している。従って、部分検査行列Ｈｑｃｐ１を数式（１）の検査行列Ｈｑｃとみなして前述の第１の実施形態と同様の手法を適用すれば、この部分検査行列Ｈｑｃｐ１に対応する部分生成行列を導出できる。この部分生成行列は、第１の実施形態に係る符号化器が用いる生成行列と同じく、巡回行列部分を含み、かつ、この巡回行列部分に含まれる非零の数が最大とならないように導出される。
【００６１】
一方、部分ベクトルｐ２は、上記数式（１１）によれば、部分ベクトルｍ及び部分ベクトルｐ１から導出できる。尚、検査行列ＨｑｃがＬＤＰＣ符号などを定義するものである場合には、部分行列Ａ，Ｂは非常に疎であるため、部分ベクトルｐ２を導出する演算量が小さく、符号化器の計算複雑性を低減できる。また、下三角行列である部分行列Ｔの逆行列Ｔ−１が存在することは前述の通りである。
【００６２】
以上説明したように、第２の実施形態に係る符号化器は、ランク落ちのＲ＆Ｕ方式の検査行列のうち一部のパリティに関する部分検査行列に対応し、かつ、巡回行列部分を含む部分生成行列を用いて準組織符号化を実行する。従って、本実施形態に係る符号化器によれば、簡易なハードウェア実装を採用できる。更に、第２の実施形態に係る符号化器は、巡回行列部分に含まれる非零要素の数が最大とならないように導出された部分生成行列を用いて準組織符号化を実行する。従って、本実施形態に係る符号化器によれば、符号化の計算複雑性を低減できる。
【００６３】
上記各実施形態の処理は、汎用のコンピュータを基本ハードウェアとして用いることで実現可能である。上記各実施形態の処理を実現するプログラムは、コンピュータで読み取り可能な記憶媒体に格納して提供されてもよい。プログラムは、インストール可能な形式のファイルまたは実行可能な形式のファイルとして記憶媒体に記憶される。記憶媒体としては、磁気ディスク、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等）、光磁気ディスク（ＭＯ等）、半導体メモリなど、プログラムを記憶でき、かつ、コンピュータが読み取り可能な記憶媒体であれば、何れであってもよい。また、上記各実施形態の処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ（サーバ）上に格納し、ネットワーク経由でコンピュータ（クライアント）にダウンロードさせてもよい。
【００６４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６５】
１０１・・・符号化器
１０２・・・メモリコントローラ
１０３・・・記憶装置
１０４・・・ホスト
１０５・・・半導体メモリ部
１０６・・・バス
１０７・・・ＲＯＭ
１０８・・・ＣＰＵコア
１０９・・・ＲＡＭ
１１０・・・ホストＩ／Ｆ
１１１・・・誤り訂正部
１１２・・・メモリＩ／Ｆ
１１３・・・復号器
【図１】
0005269936.tif 000015
【図２】
0005269936.tif 000016
【図３】
0005269936.tif 000017
【図４】
0005269936.tif 000018
【図５】
0005269936.tif 000019
【図６】
0005269936.tif 000020
【図７】
0005269936.tif 000021
【図８】
0005269936.tif 000022