(57)【要約】【課題】データに誤り訂正能力を超える誤りがある場合に、さらなる誤りを付加することを防止することが可能な誤り訂正装置を提供することを目的とする。【解決手段】不揮発性メモリから読み出されたデータに、誤り訂正能力を超える誤りがあるか否かを判定する判定手段を備え、当該判定手段は、誤り位置多項式を算出して誤り個数を計算する第１の誤り個数計算手段と、誤り無し領域と訂正対象領域とで構成されるデータのうち、訂正対象領域をチェン探索して誤り個数を計算する第２の誤り個数計算手段と、第１の誤り個数計算手段で計算された誤り個数と第２の誤り個数計算手段で計算された誤り個数とが一致しない場合に誤り訂正能力を超えていると判定する比較手段と、を含み、比較手段で誤り訂正能力を超える誤りがあると判定された場合に、誤り訂正を行わない。【選択図】  図５
2011119019.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリから読み出されたデータに含まれる誤りデータを訂正する誤り訂正機能を備えた誤り訂正装置において、
前記不揮発性メモリから読み出されたデータに、誤り訂正能力を超える誤りがあるか否かを判定する判定手段を備え、
前記判定手段は、
誤り位置多項式を算出して誤り個数を計算する第１の誤り個数計算手段と、
誤り無し領域と訂正対象領域とで構成されるデータのうち、前記訂正対象領域をチェン探索して誤り個数を計算する第２の誤り個数計算手段と、
前記第１の誤り個数計算手段で計算された誤り個数と前記第２の誤り個数計算手段で計算された誤り個数とが一致しない場合に前記誤り訂正能力を超えていると判定する比較手段と、を含み、
前記比較手段で誤り訂正能力を超える誤りがあると判定された場合に、誤り訂正を行わないことを特徴とする誤り訂正装置。 
【請求項２】
前記誤り無し領域は、パディング領域および／または誤り検出手段で誤り無しと判定された領域であることを特徴とする請求項１に記載の誤り訂正装置。 
【請求項３】
前記不揮発性メモリは、ＮＡＮＤ型フラッシュメモリであることを特徴とする請求項１または請求項２に記載の誤り訂正装置。 
【請求項４】
不揮発性メモリから読み出されたデータに含まれる誤りデータを誤り訂正する誤り訂正方法において、
前記不揮発性メモリから読み出されたデータに、誤り訂正能力を超える誤りがあるか否かを判定する判定工程を備え、
前記判定工程は、
誤り位置多項式を算出して誤り個数を計算する第１の誤り個数計算工程と、
誤り無し領域と訂正対象領域とで構成されるデータのうち、前記訂正対象領域をチェン探索して誤り個数を計算する第２の誤り個数計算工程と、
前記第１の誤り個数計算工程で計算された誤り個数と前記第２の誤り個数計算工程で計算された誤り個数とが一致しない場合に前記誤り訂正能力を超えていると判定する比較工程と、を含み、
前記比較工程で誤り訂正能力を超える誤りがあると判定された場合に、誤り訂正を行わないことを特徴とする誤り訂正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、誤り訂正装置および誤り訂正方法に関する。
【背景技術】
【０００２】
近年、保持された電荷量に応じて情報を記憶するフラッシュメモリなどの半導体素子が広く知られている。また、電荷量の閾値を複数設定することにより２ビット以上の情報を記憶する多値メモリ技術も開発されている。 
【０００３】
このような半導体メモリ素子では、時間経過の増大とともに電荷が放電されていくため、閾値を超えて電荷が放電されると情報の読み出し時に誤りが発生する。特に、多値型のメモリ素子では一般に閾値の間隔が狭いため、誤りが発生する可能性が高くなる。 
【０００４】
上記のような半導体メモリ素子を用いた記憶装置では、誤った情報を正しく復元するための誤り訂正機構が設けられていることがある（例えば、特許文献１参照）。 
【０００５】
しかしながら、かかる誤り訂正機構において、誤り訂正能力を超える誤りが発生した場合には、正しく誤り訂正を行なうことができない。このため、誤り訂正能力を超えた誤りがあると認識せずに訂正処理を行なうと更なる誤りを付加することになるという問題がある。 
【０００６】
【特許文献１】特開２００７−８７４６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、上記課題に鑑みてなされたものであり、データに誤り訂正能力を超える誤りがある場合に、さらなる誤りを付加することを防止することが可能な誤り訂正装置および誤り訂正方法を提供することを目的とする。 
【課題を解決するための手段】
【０００８】
実施の形態によれば、不揮発性メモリから読み出されたデータに含まれる誤りデータを訂正する誤り訂正機能を備えた誤り訂正装置において、前記不揮発性メモリから読み出されたデータに、誤り訂正能力を超える誤りがあるか否かを判定する判定手段を備え、前記判定手段は、誤り位置多項式を算出して誤り個数を計算する第１の誤り個数計算手段と、誤り無し領域と訂正対象領域とで構成されるデータのうち、前記訂正対象領域をチェン探索して誤り個数を計算する第２の誤り個数計算手段と、前記第１の誤り個数計算手段で計算された誤り個数と前記第２の誤り個数計算手段で計算された誤り個数とが一致しない場合に前記誤り訂正能力を超えていると判定する比較手段と、を含み、前記比較手段で誤り訂正能力を超える誤りがあると判定された場合に、誤り訂正を行わない誤り訂正装置を提供する。 
【図面の簡単な説明】
【０００９】
【図１】ＳＳＤ（Solid State Drive）の構成例を示すブロック図である。
【図２】ＮＡＮＤメモリチップに含まれる１個のブロックの構成例を示す回路図である。
【図３】ＮＡＮＤメモリに書き込まれるデータ構成例を示す図である。
【図４−１】図３の第１の誤り訂正結果の一例を示す図である。
【図４−２】第１の誤り訂正処理結果の一例を示す図である。
【図５】第２の誤り訂正復号部の構成例を示す図である。
【図６】シンドローム計算器の回路構成例を示す図である。
【図７−１】第２の誤り訂正処理のデータの構成図である。
【図７−２】図７−１の具体例を示す図である。
【図８】誤りロケータ計算＆誤り訂正器のチェンサーチ回路と誤り訂正部の構成例を示す図である。
【図９−１】×α回路（α倍する回路）の構成図である。
【図９−２】×α＾３２回路（α＾３２倍する回路）の構成図である。
【図９−３】×α＾１１１回路（α＾１１１倍する回路）の構成図である。
【図９−４】×α＾２回路（α＾２倍する回路）の構成図である。
【図９−５】×α＾６４回路（α＾６４倍する回路）の構成図である。
【図９−６】×α＾２２２回路（α＾２２２倍する回路）の構成図である。
【図１０】回路選択部の構成例を示す図である。
【図１１】回路選択部の動作を説明するための図である。
【図１２】実施の形態２に係る第２の誤り訂正復号部の構成例を示す図である。
【図１３】誤りロケータ計算＆誤り訂正器のチェンサーチ回路と誤り訂正部の構成例を示す図である。
【図１４】訂正不可能判定器の構成例を示す図である。
【図１５】訂正不可能判定器の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、この発明の実施の形態につき図面を参照しつつ詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。また、下記実施の形態における構成要素には、当業者が容易に想定できるものまたは実質的に同一のものが含まれる。 
【００１１】
（実施の形態１）
［ＳＳＤの構成］
図１は、本実施の形態にかかるＳＳＤ１を概略的に示すブロック図である。図１は、ＳＳＤ（Solid State Drive）１の構成例を示すブロック図である。ＳＳＤ１は、Ｉ／Ｆを介してホスト装置（ホスト）４と接続され、ホスト装置４の外部メモリとして機能する。      
【００１２】
ＳＳＤ１は、不揮発性メモリとしてのＮＡＮＤフラッシュメモリ（以下、ＮＡＮＤメモリと略す）２と、ホスト装置４の指示に応じて、ＮＡＮＤメモリ２に対してデータのリード／ライトを行うＮＡＮＤコントローラ３とを備えている。本実施の形態では、不揮発性メモリとしてＮＡＮＤメモリを使用しているが、不揮発性メモリは、情報を不揮発に記憶し、時間の経過に伴って記憶されているデータに変化が生じ得る特徴を有すれば、どのような記憶装置であっても構わない。 
【００１３】
ＮＡＮＤメモリ２は、データ消去の単位である複数のメモリブロックＢＬＫから構成されている。メモリブロックＢＬＫの構成について、図２を用いて説明する。図２は、いずれかのメモリブロックＢＬＫの構成を示す等価回路図である。 
【００１４】
メモリブロックＢＬＫは、Ｘ方向に沿って配置されたｍ（ｍは、１以上の整数）個のＮ
ＡＮＤストリングを備えている。各ＮＡＮＤストリングは、選択トランジスタＳＴ１、Ｓ
Ｔ２、およびｎ（ｎは、１以上の整数）個のメモリセルトランジスタＭＴを備えている。ｍ個のＮＡＮＤストリングにそれぞれ含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ１〜ＢＬｍに接続され、ゲートが選択ゲート線ＳＧＤに共通接続されている。また、選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートが選択ゲート線ＳＧＳに共通接続されている。 
【００１５】
各メモリセルトランジスタＭＴは、半導体基板上にゲート絶縁膜を介在して形成された
積層ゲート構造を備えたＭＯＳＦＥＴ（Metal oxide semiconductor field effect transistor）である。積層ゲート構造は、ゲート絶縁膜上に形成された電荷蓄積層（浮遊ゲート電極）と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極とを含んでいる。各ＮＡＮＤストリングにおいて、ｎ個のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。すなわち、ｎ個のメモリセルトランジスタＭＴを、隣接するもの同士でソース領域若しくはドレイン領域を共有するような形でＹ方向に直列接続させる。 
【００１６】
そして、最もドレイン側に位置するメモリセルトランジスタＭＴから順に、制御ゲート
電極がワード線ＷＬ０〜ＷＬｎにそれぞれ接続されている。従って、ワード線ＷＬ１に接
続されたメモリセルトランジスタＭＴのドレインは選択トランジスタＳＴ１のソースに接
続され、ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴのソースは選択トラン
ジスタＳＴ２のドレインに接続されている。 
【００１７】
ワード線ＷＬ０〜ＷＬｎは、メモリブロックＢＬＫ内のＮＡＮＤストリング間で、メモ
リセルトランジスタＭＴの制御ゲート電極を共通に接続している。つまり、メモリブロッ
クＢＬＫ内において同一行にあるメモリセルトランジスタＭＴの制御ゲート電極は、同一
のワード線ＷＬに接続される。この同一のワード線ＷＬに接続される複数のメモリセルは
１ページとして取り扱われ、このページごとにデータの書き込みおよびデータの読み出しが行われる。 
【００１８】
また、ビット線ＢＬ１〜ＢＬｎは、メモリブロックＢＬＫ間で、選択トランジスタＳＴ
１のドレインを共通に接続している。つまり、複数のメモリブロックＢＬＫ内において同
一列にあるＮＡＮＤストリングは、同一のビット線ＢＬに接続される。 
【００１９】
メモリセルトランジスタＭＴは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電
圧が変化し、この閾値電圧の違いに応じた情報を記憶する。メモリセルトランジスタＭＴ
は、１ビットの情報を記憶するように構成されていてもよいし、複数ビット（多値）の情報を記憶するように構成されていてもよい。本発明による実施例では、特に閾値の間隔が狭い多値のメモリセルトランジスタＭＴに対して有効である。そして、ＮＡＮＤメモリ２内のセンスアンプ、および電位発生回路等を含む制御回路（図示せず）は、ＮＡＮＤメモリ２に供給されたデータをメモリセルトランジスタＭＴに書き込み、メモリセルトランジスタＭＴに記憶されているデータをＮＡＮＤメモリ２の外部に出力することが可能な構成を有している。 
【００２０】
図１において、ＮＡＮＤコントローラ３は、ホスト装置４とのインタフェース処理を行うホストＩ／Ｆ１０、ＮＡＮＤメモリ２とのインタフェース処理を行い、データのリード／ライトを制御するＮＡＮＤ  Ｉ／Ｆ２０と、ＮＡＮＤメモリ２に書き込むデータに対して、誤り訂正符号を生成する誤り訂正符号部３０と、ＮＡＮＤメモリ２から読み出されたデータに対して、誤り検出および誤り訂正を行う誤り訂正復号部４０とを備えている。 
【００２１】
誤り訂正符号部３０は、第１の誤り訂正符号生成部３１と、第２の誤り訂正符号生成部３２とを備えている。第１の誤り訂正符号生成部３１は、書き込みデータに対して、所定のブロックＢＫ単位で、その誤り訂正を行うための第１の誤り訂正符号を生成する。ここで、第１の誤り訂正符号としては、１ビットあるいは複数ビットの誤りを訂正できる誤り訂正符号を用いることができ、本実施の形態では、３２ビットのデータ構成されるブロックＢＫ単位で１ビットの訂正能力がある６ビットのハミング符号（第１の誤り訂正符号）を生成する。 
【００２２】
第２の誤り訂正符号生成部３２は、ＮＡＮＤメモリ２の書き込みデータに対して、複数個のブロック単位で、その誤り訂正を行うための第２の誤り訂正符号を生成する。第２の誤り訂正符号としては、複数ビットの誤りを訂正できる誤り訂正符号を用いることができ、例えば、ＢＣＨ符号（Bosechaudhurihocquenghem code）やＲＳ符号を使用することができ、本実施の形態では、４個のブロック（１２８ビット）単位で、２ビットの訂正能力がある１６ビットのＢＣＨ符号を生成する。 
【００２３】
図３は、ＮＡＮＤメモリ２に書き込まれるデータ構成例を示す図である。同図に示すように、３２ビットのデータ構成されるブロックＢＫ単位で１ビットの訂正能力がある６ビットのハミング符号（第１の誤り訂正符号）が付加され、さらに、４個のブロックＢＫ（１２８ビット）単位で２ビットの訂正能力がある１６ビットのＢＣＨ符号（第２の誤り訂正符号）が付加されている。 
【００２４】
誤り訂正復号部４０は、第１の誤り訂正復号部４２と、第２の誤り訂正復号部４１とを備えている。第１の誤り訂正復号部４２は、ＮＡＮＤメモリ２からの読み出しデータに対して、ブロックＢＫ単位で、そのハミング符号を用いて第１の誤り訂正を行う。また、第１の誤り訂正後のデータに対して、誤り検出を行い、誤り訂正結果を第２の誤り訂正復号部４１に出力する。第２の誤り訂正復号部４１は、第１の誤り訂正後のデータに対して、誤り訂正結果を参照し、４つのブロックＢＫ単位でＢＣＨ符号を使用して第２の誤り訂正を行う。 
【００２５】
上記構成のＳＳＤ１の動作の概略を説明する。ホスト装置４からＳＳＤ１に書き込みを要求するデータ（書き込みデータ）が供給されると、ホストＩ／Ｆ１０は、受信した書き込みデータを誤り訂正符号部３０に供給する。誤り訂正符号部３０では、書き込みデータに対して、第１および第２の誤り訂正符号を生成する。ＮＡＮＤ  Ｉ／Ｆ２０は、第１および第２の誤り訂正符号を付加した書き込みデータをＮＡＮＤメモリ２に書き込む。 
【００２６】
また、ＳＳＤ１は、ホスト装置４からデータの読み出し要求が入力されると、ＮＡＮＤ  Ｉ／Ｆ２０は、読み出しを要求されているデータ（読み出しデータ）とこれに付加された第１および第２の誤り訂正符号を読み出して、誤り訂正復号部４０に供給する。誤り訂正復号部４０は、読み出しデータに対して第１および第２の誤り訂正を行う。誤り訂正後のデータは、ホストＩ／Ｆ１０によりホスト装置４に転送される。 
【００２７】
［第２の誤り訂正復号部］
図４〜図１１を参照して、第２の誤り訂正復号部４１の構成および動作を詳細に説明する。図４−１は、第１の誤り訂正後のデータ構成例、図４−２は、第１の誤り訂正処理結果の一例を示す図である。図５は、第２の誤り訂正復号部の構成例を示す図である。図６はシンドローム計算器の回路構成例を示す図である。 
【００２８】
第２の誤り訂正復号部４１は、図５に示すように、第１の誤り訂正済みの読み出しデータのシンドローム値を計算するシンドローム計算器５１と、データを一時記憶するためのメモリ５２と、シンドローム値に基づいて誤り位置多項式を生成する誤り位置多項式計算器５３と、誤り位置多項式の根を算出して誤り位置を特定して誤り位置のデータを訂正するとともに、データの訂正対象領域の誤り個数を計算する誤りロケータ計算＆誤り訂正器５４と、誤り位置多項式計算器５３で計算された誤り個数と、誤りロケータ計算＆誤り訂正器５４で計算された誤り個数とを比較する比較器５５と、および誤りロケータ計算＆誤り訂正器５４による誤り訂正後のデータと、メモリ５２に蓄えられている誤り訂正前のデータを選択する選択器５６で構成される。 
【００２９】
本実施の形態では、誤り訂正能力の範囲内のデータの誤りがある場合には、誤りロケータ計算＆誤り訂正器５４の誤り位置は正しい誤り位置を示し、誤り訂正能力を超えた誤りがある場合には、誤った誤り位置を示す確率が高いという点に着目して、訂正対象領域の誤りの個数と誤り位置多項式の計算で求まった誤り個数と比較し、一致しなければ誤り訂正能力を超えている判断して、誤り訂正不可と判定し、誤り訂正を行わないことにしている。 
【００３０】
誤り位置多項式計算器５３は、シンドローム多項式を用いて、誤り位置多項式を計算し、誤り位置多項式の係数を誤りロケータ計算＆誤り訂正器５４に出力する。また、誤り位置多項式計算器５３は、誤り位置多項式から誤り個数を算出して、比較器５５に出力する。 
【００３１】
ここで、データに含まれる誤り個数が誤り訂正能力（ｎビット）を超えていた場合は、実際の誤り個数とは異なる個数が計算される。例えば、１０ビットの誤り訂正能力を持つＢＣＨ符号が用いられている場合に３０ビットの誤りがある時に、１０ビットの誤りと計算される場合がある。 
【００３２】
誤りロケータ計算＆誤り訂正器５４は、誤り位置多項式計算部５３から受け取った誤り位置多項式の係数を用いて、チェンサーチを行って訂正対象領域の誤り位置を計算すると共にその誤り個数をカウントし、メモリ５２に格納した訂正前のデータを読み出して誤り訂正を行う。誤りロケータ計算＆誤り訂正器５４は、誤り訂正後のデータを選択器５６に出力するとともに、カウントした訂正対象領域の誤り個数を比較器５５に出力する。 
【００３３】
比較器５５は、誤り位置多項式計算器５３から受け取った誤り個数と、誤りロケータ計算＆誤り訂正器５４から受け取った対象領域の誤り個数とを比較し、一致している場合は、誤り訂正の結果が正しい旨を示す正常情報（例えば、「１」）を選択器５６に出力する一方、一致していない場合は、誤り訂正能力を超えた誤りがあると判断して、誤り訂正の結果が異常である旨を示す異常情報（例えば、「０」）を選択器５６に出力する。 
【００３４】
選択器５６は、比較器５５から正常信号が入力された場合には、誤りロケータ計算＆誤り訂正器５４から入力される誤り訂正後のデータをホスト装置４に転送する一方、比較器５５から異常信号が入力された場合には、メモリ５２に格納した訂正前のデータをホストと装置４に転送する。 
【００３５】
以下、第１および第２誤り訂正復号部４２，４１での誤り訂正復号動作を詳細に説明する。ホスト装置４よりＮＡＮＤメモリ２への読み出し要求が発生すると、ＮＡＮＤ  ＩＦ２０はＮＡＮＤメモリ２から要求されたデータを読み出し、第１の誤り訂正復号部４２に出力する。 
【００３６】
第１の誤り訂正復号部４２は、ＮＡＮＤメモリ２から読み出したデータ（データブロック、ハミング符号、ＢＣＨ符号）が入力され、各ブロックＢＫ毎に、ハミング符号を使用して第１の誤り訂正を行う。本実施の形態では、ハミング符号は１ビットの誤り訂正能力を持つため、２ビット以上の誤りは訂正できない。第１の誤り訂正復号部４２では、第１の誤り訂正処理により、ブロックＢＫの誤り訂正ができたか否か検出する。具体的には、例えば、第１の誤り訂正後のブロックＢＫについてシンドローム計算を行って、その計算結果（「０」＝誤り無し）から誤り訂正ができたか否かを判断することができる。また、ブロックＢＫ毎に誤り検出符号を付加して、誤り検出符号を使用して第１の誤り訂正後のデータにエラーが無いかを検出することにしてもよい。 
【００３７】
第１の誤り訂正復号部４２は、ハミング符号を廃棄して、第１の誤り訂正処理後のデータブロックＢＫ、ＢＣＨ符号、および各データブロックＢＫの第１の誤り訂正処理結果（第１の誤り訂正復号結果）を第２の誤り訂正復号部４１に出力する。以下の説明では、図４−１に示すように、第１の誤り訂正後の読み出しデータのうち、ＢＫ０，ＢＫ２に誤りがあるものとして説明する。図４−２は、図４−１の第１の誤り処理の結果（１ビット）を示す図である。同図において、「０」＝誤り無し、「１」＝誤りありを示している。 
【００３８】
第２の誤り訂正復号部４１では、第１の誤り訂正処理後のブロックＢＫ、ＢＣＨ符号、および各ブロックＢＫの第１の誤り訂正結果（１ビット）がメモリ５２に格納されると共に、第１の誤り訂正処理後のブロックＢＫ、ＢＣＨ符号がシンドローム計算器５１に入力される。なお、以下の説明では、第２の誤り訂正符号生成部３２でＢＣＨ符号化を行う場合に、下記式（１）に示す原始多項式Ｇ（Ｘ）を用いたものとして説明する。原始多項式Ｇ（Ｘ）＝ｘ＾８＋ｘ＾４＋ｘ＾３＋ｘ＾２＋１・・・（１） 
【００３９】
シンドローム計算器５１では、図６に示すように、ＢＫ０，１，２，３およびＢＣＨ符号のｄａｔａ［０］〜ｄａｔａ［１４３］の順に１ビットづつ入力されて、シンドローム計算を行い、シンドローム計算結果Ｓ０［７：０］〜Ｓ３［７：０］を誤り位置多項式計算器５３に出力する。 
【００４０】
図５において、誤り位置多項式計算器５３は、シンドローム計算結果Ｓ０［７：０］〜Ｓ３［７：０］を使用して、誤り位置多項式σ（Ｚ）＝１＋σ０Ｚ＋σ１Ｚ＾２の係数σ１およびσ２を算出する。ここでは、ピーターソン法を用いて説明する。他にバーレーカンプ・マッシイ法（ＢＭ法）、ユークリッド互除法等を使用することができる。ピータソン法では、シンドローム計算値Ｓ０〜Ｓ３を用いて、下記式（２）の行列式を演算して、誤り位置多項式の係数σ０およびσ１を算出する。誤り位置多項式計算器５３で算出された誤り位置多項式の係数σ０［７：０］およびσ１［７：０］は、誤りロケータ計算＆誤り訂正器５４に出力される。 
【００４１】
【数１】
2011119019.tif 000003
【００４２】
誤りロケータ計算＆誤り訂正器５４は、誤り位置多項式計算器５３から受け取った誤り位置多項式の係数σ０［７：０］およびσ１［７：０］に基づいて、チェンサーチを行って誤り位置を特定し、メモリ５２に格納されている第１の誤り訂正済みのデータに対して、第２の誤り訂正を行う。 
【００４３】
誤りロケータ計算＆誤り訂正器５４は、図７−１に示すように、符号長を２＾Ｎ−１（ここではＮ＝８）＝２５５ビット（固定長）とするために、処理対象のデータに対して、先頭の１１１ビットを０パディングして処理を行なう。この場合、上記図４−１の場合は、誤り無し領域は、図７−２に示すように、パディング領域と誤り無しと検出されたブロックＢＫ１，３となる。本実施の形態では、誤りロケータ計算＆誤り訂正器５４は、先頭から誤り無し領域（パディング領域、第１の誤り訂正後に誤り無しと判断された領域）の処理は飛ばしてそれ以外の領域に対してのみ、誤りの個数をカウントすることで、高速に誤り個数をカウントしている。 
【００４４】
図８は、誤りロケータ計算＆誤り訂正器５４のチェンサーチ回路６１と誤り訂正部６２の構成例を示す図である。図９−１は、チェンサーチ回路６１の×α回路（α倍する回路（乗算回路））の構成図である。図９−２は、チェンサーチ回路６１の×α＾３２回路（α＾３２倍する回路）の構成図である。図９−３は、チェンサーチ回路６１の×α＾１１１回路（α＾１１１倍する回路）の構成図である。図９−４は、チェンサーチ回路６１の×α＾２回路（α＾２倍する回路）の構成図である。図９−５は、チェンサーチ回路６１の×α＾６４回路（α＾６４倍する回路）の構成図である。図９−６は、チェンサーチ回路６１の×α＾２２２回路（α＾２２２倍する回路）の構成図である。図１０は、チェンサーチ回路の回路選択部の構成を示す図である。 
【００４５】
チェンサーチアルゴリズムとは、σ（ｚ）にアルゴリズムαのべきαｉ（ｉ＝０，１，…，ｎ−１）を逐次代入し、σ（αｉ）が０かどうかを調べる方法で、この方法による根の検索がチェンサーチ（Ｃｈｉｅｎ  Ｓｅａｒｃｈ）と呼ばれる。 
【００４６】
チェンサーチ回路６１は、図８に示すように、セレクタＳＥＬ０，１に切替信号を出力する回路選択部７１と、×α回路７６、×α＾３２回路７５、および×α＾１１１回路７４の出力を択一的に選択して出力するセレクタＳＥＬ０と、×α＾２回路７９、×α＾６４回路７８、および×α＾２２２回路７７の出力を択一的に選択して出力するセレクタＳＥＬ１と、レジスタ０，１と、ＥＸＯＲ演算回路８０と、ＥＸＯＲ演算回路８０の出力が「１」となる回数をカウントして、そのカウント値を誤り個数として、比較器５５（図５参照）に出力する誤り数カウント部８１とを備えている。 
【００４７】
また、チェンサーチ回路６１は、レジスタ出力をレジスタ入力に帰還する乗算器として、１ビット処理部（×α回路７６、×α＾２回路７９）と、３２ビット処理部（×α＾３２回路７５および×α＾６４回路７８）と、１１１ビット処理部（×α＾１１１回路７４，×α＾２２２回路７７）とを備えている。 
【００４８】
本実施の形態のチェンサーチ回路６１は、１ビット処理部（×α回路７６および×α＾２回路７９）に加えて、３２ビット処理部（×α＾３２回路７５，×α＾６４回路７８）、１１１ビット処理部（×α＾１１１回路７４、×α＾２２２回路７７）を備えることでチェンサーチを高速化している。 
【００４９】
１ビット処理部（×α回路７６およびα＾２回路７９）は、誤り訂正対象領域のブロックを１ビット単位で処理するときに使用する。３２ビット処理部（×α＾３２回路７５および×α＾６４回路７８）は、誤り訂正対象外領域のうち誤り検出で誤り無しと判定されたブロック（３２ビット）を処理するときに使用し、３２ビットデータを１サイクル（１度）で処理することができる。１１１ビット処理部（×α＾１１１回路７４および×α＾２２２回路７７）は、誤り訂正対象外領域のうち０でパディングされたパディング領域（１１１ビット）を処理するときに使用し、１１１ビットデータを１サイクル（１度）で処理することができる。 
【００５０】
誤り訂正部６２は、データを反転出力する反転器８２と、ＥＸＯＲ演算結果が「１」の場合は、入力データの反転値を出力し、ＥＸＯＲ演算結果が１以外の値の場合は入力データをそのまま出力するセレクタ８３とを備えている。 
【００５１】
チェンサーチ回路６１の処理フローについて説明する。まず、誤り位置多項式計算で計算された係数σ０［７：０］およびσ１［７：０］をレジスタ０およびレジスタ１に取り込む。 
【００５２】
（１）先頭の０パディング領域の処理に移る。この部分は誤りがないことが判明しているので、回路選択部７１は、×α＾１１１回路、×α＾２２２回路を選択させる選択信号をＳＥＬ０，１に出力する。セレクタＳＥＬ０，１は、×α＾１１１回路７４の出力（ｄ０［７：０］）および×α＾２２２回路７７の出力（ｄ１［７：０］）をそれぞれ選択し、レジスタ０およびレジスタ１に各々取り込む。これにより、０パディング領域（１１１ビット）の処理を１サイクルで（一度に）行うことができ、０パディング領域（１１１ビット）の処理を高速化することが可能となる。 
【００５３】
（２）ブロックＢＫ０の処理を行なう。ブロックＢＫ０は誤り対象ブロックＢＫである。まず、誤り訂正部６２は、メモリ５３からブロックＢＫ０の先頭データＢＫ０［０］を取り出す。次に、×α回路７６の出力（ｂ０［７：０］）およびα＾２回路７９の出力（ｂ１［７：０］）を選択し、レジスタ０およびレジスタ１に取り込む。誤り訂正部６２のセレクタ８３は、レジスタ０とレジスタ１のＥＸＯＲ演算部８０のＥＸＯＲ演算結果が「１」ならば、ＢＫ０［０］の値の反転値を出力する。ＥＸＯＲ演算結果が１以外の値であればＢＫ０［０］の値をそのまま出力する。次に、誤り訂正部６２はメモリ５３からブロックＢＫ０の２番目のデータＢＫ０［１］を取り出す。×α回路７６の出力（ｂ０［７：０］）および×α＾２回路７９の出力（ｂ１［７：０］）を選択し、レジスタ０およびレジスタ１に取り込む。レジスタ０とレジスタ１のＥＸＯＲ演算結果が１ならば、ＢＫ０［１］の値の反転値を出力する。ＥＸＯＲ演算結果が１以外の値であればＢＫ０［１］の値をそのまま出力する。以下、同様にブロックＢＫ０の最後のデータＢＫ０［３１］まで繰り返す。このようにして、ＢＫ０については１ビット単位の処理が行われる。 
【００５４】
（３）ブロックＢＫ１の処理を行なう。ブロックＢＫ１は誤り訂正対象外ブロックなので、×α＾３２回路７５の出力（ｃ０［７：０］）および×α＾６４回路７８の出力（ｃ１［７：０］）をレジスタ０およびレジスタ１に取り込む。これにより、誤り訂正対象外ブロック（３２ビット）の処理を一度に行うことができ、誤り訂正対象外ブロック（３２ビット）の処理を高速化することができる。 
【００５５】
（４）ブロックＢＫ２の処理を行なう。ブロックＢＫ２は誤り訂正対象ブロックである。３）と同様に、メモリ５３からブロックＢＫ２の先頭データＢＫ２［０］から最後のデータＢＫ２［３１］までを取り出して処理を行なう。 
【００５６】
（５）ブロックＢＫ３の処理を行なう。ブロックＢＫ３は誤り訂正対象外ブロックである。×α＾３２回路７５の出力（ｃ０［７：０］）および×α＾６４回路７８の出力（ｃ１［７：０］）をレジスタ０およびレジスタ１に取り込む。 
【００５７】
図１０は、回路選択部７１の構成例を示す図である。回路選択部７１は、第１の誤り訂正復号結果記憶部９１と、セレクタ９２と、ブロックカウント部９３と、ビットカウント部９５と、ビット比較部９７と、判定部９８とを備えている。 
【００５８】
第１の誤り訂正復号結果記憶部９１は、各ブロックＢＫ０〜３毎の第１の誤り訂正復号結果を保存する。「０」は誤り訂正できたＢＫ（第２誤り訂正復号の対象外ブロック）を示す。「１」は誤り訂正できなかったＢＫ（第２誤り訂正復号の対象ブロック）を示す。      
【００５９】
ビットカウント部９５は、１ブロックＢＫ中の現在の処理位置であるビットカウンタ値をカウントしてビット比較部９７に出力する（ビットカウンタ値＝０〜３１）。ブロックカウント部９３は、４ブロックＢＫ中の現在の処理ブロックであるブロックカウンタ値をカウントして、セレクタ９２に出力する（ブロックカウンタ値＝０〜３）。ビット比較部９７は、ビットカウンタ値がブロックサイズに等しいか否かを判断して、ビットカウンタ値がブロックサイズに等しい場合には、ブロックカウント部９３に、ブロックカウンタ値をインクリメントさせる。 
【００６０】
セレクタ９２は、ブロックカウンタ値が示すブロックの第１の誤り訂正復号結果記憶部１１１に格納されている第１の誤り訂正復号結果を判定部９８に出力する。判定部９８は、セレクタ９２から出力される現在の処理ブロックの第１の誤り訂正復号結果に基づいて、１ビット処理回路（×α回路７６および×α＾２回路７９）、３２ビット処理回路（×α＾３２回路７５，×α＾６４回路７８）、１１１ビット処理回路（×α＾１１１回路７４、×α＾２２２回路７７）のいずれかを選択して、選択信号をセレクタＳＥＬ０、１に出力する。判定部９８は、処理開始直後は、パディング領域を処理するために１１１ビット処理部（×α＾１１１回路７４、×α＾２２２回路７７）を選択する。また、判定部９８は、現在の処理ブロックが誤り訂正対象外ブロックの場合は、３２ビット処理部（×α＾３２回路７５，×α＾６４回路７８）を選択する。また、判定部９８は、現在の処理ブロックが誤り訂正対象ブロックの場合は、１ビット処理部（×α回路７６および×α＾２回路７９）を選択する。 
【００６１】
図１１は、回路選択部７１の動作を説明するためのフローチャートである。図１１において、まず、判定部９８は、１１１ビット処理部（×α＾１１１回路７４、×α＾２２２回路７７）を選択する（ステップＳ１１）。つぎに、判定部９８は、ブロックカウンタ値が示す第１の誤り訂正復号結果記憶部９１の値が「１」であるか否かを判定し（ステップＳ１２）、「１」である場合には（ステップＳ１２の「Ｙｅｓ」）、１ビット処理部（×α回路７６、×α＾２回路７９）を選択する（ステップＳ１６）。そして、ビットカウント部９５はビットカウンタ値をインクリメントし（ステップＳ１７）、ビット比較部９７は、ビットカウント値がブロックサイズ「３２」に等しいか否かを判断する（ステップＳ１８）。ビットカウンタ値がブロックサイズに等しい場合には（ステップＳ１８の「Ｙｅｓ」）、ステップＳ１４に移行する一方、ビットカウンタ値がブロックサイズに等しくない場合には（ステップＳ１８の「Ｎｏ」）、ステップＳ１７に戻る。 
【００６２】
上記ステップＳ１２で、判定部９８は、ブロックカウンタ値が示す第１の誤り訂正復号結果記憶部９１の値が「１」でない場合には（ステップＳ１２の「Ｎｏ」）、３２ビット処理部（×α＾３２回路７５，×α＾６４回路７８）を選択する（ステップＳ１３）。そして、ブロックカウント部９５はブロックカウンタをインクリメントする（ステップＳ１４）。そして、ブロックカウンタ値が「４」である場合には（ステップＳ１５の「Ｙｅｓ」）、当該フローを終了する一方、ブロックカウンタ値が「４」でない場合には（ステップＳ１５の「Ｎｏ」）、ステップＳ１２に戻る。 
【００６３】
以上説明したように、本実施の形態によれば、第２の誤り訂正の訂正能力を超えた誤りがあるか否かを判断し、第２の誤り訂正能力を超えた誤りがあると判断した場合には、第２の誤り訂正を行わないこととしたので、誤り訂正能力を超えた誤りがある場合に、さらなる誤りを付加することを避けることが可能となる。 
【００６４】
また、本実施の形態によれば、比較器５５は、誤り位置多項式計算器５３から受け取った誤り個数と、誤りロケータ計算＆誤り訂正器５４から受け取った対象領域の誤り個数とを比較し、一致していない場合は、誤り訂正能力を超えた誤りがあると判断することとしたので、簡単かつ低コストな方法で誤り訂正能力を超えた誤りがあるかを判断することが可能となる。 
【００６５】
また、誤りロケータ計算＆誤り訂正器５４は、誤り無し領域については、誤り個数をカウントしないで、それ以外の領域に対してのみ、誤りの個数（誤り訂正した個数）をカウントすることとしたので、高速に誤り個数をカウントすることが可能となる。 
【００６６】
（実施の形態２）
図１２〜図１５を参照して、実施の形態２にかかる第２の誤り訂正復号部４１について説明する。実施の形態２では、誤り訂正能力の範囲内のデータの誤りがある場合には、誤りロケータ計算＆誤り訂正器１０１の誤り位置は正しい誤り位置を示し、誤り訂正能力を超えた誤りがある場合には、誤った誤り位置を示す確率が高いという点に着目して、上記図７−２において、誤りロケータ計算＆誤り訂正器１０１では、先頭から誤り位置を検出し、誤り位置が誤り無しの領域（訂正対象外の領域）で発見された時点で、誤り訂正能力を超えていると判断して、誤り訂正不可を判定し、以降の誤り位置の検出を行わない構成である。 
【００６７】
図１２は、実施の形態２にかかる第２の誤り訂正復号部４１の構成を示す図である。実施の形態２にかかる第２の誤り訂正復号部４１は、シンドローム計算を行うシンドローム計算器５１と、データを一時記憶するためのメモリ５２と、誤り位置多項式計算器５３と、誤りロケータ計算＆誤り訂正器１０１と、訂正不可能判定器１０２と、第２の誤り訂正後のデータと、メモリ５２に蓄えられている第２の誤り訂正前のデータを選択する選択器５６で構成される。 
【００６８】
シンドローム計算器５１は、シンドローム多項式の計算を行い、計算したシンドローム多項式を誤り位置多項式計算器５３に出力する。誤り位置多項式計算器５３は、シンドローム多項式を用いて、誤り位置多項式を計算して、誤り位置多項式の係数を誤りロケータ計算＆誤り訂正器１０１に出力する。 
【００６９】
誤りロケータ計算＆誤り訂正器１０１は、誤り位置多項式計算器５３から入力される誤り位置多項式の係数を用いて、チェンサーチを行って誤り位置を計算し、メモリ５２に格納した訂正前のデータを読み出して誤り訂正を行い、誤り訂正後のデータを選択器５６に出力する。また、誤りロケータ計算＆誤り訂正器１０１は、誤りを検出した場合に、誤り検出信号を訂正不可能判定器１０２に出力する。 
【００７０】
訂正不可能判定器１０２は、第１の誤り訂正復号部４２から入力される第１の誤り訂正結果と、誤りロケータ＆誤り訂正器１０１から入力される誤り検出信号とに基づいて、誤りが検出された領域が、誤り無し領域（パディング領域および誤り検出で誤り無しと判定された領域）である場合には、誤り訂正不能（誤り訂正能力を超えている）と判断して処理を終了すると共に、選択器５６に、誤り訂正不能である旨を示す異常信号を出力する。
【００７１】
選択器５６は、誤りロケータ計算＆誤り訂正器１０１から入力される誤り訂正後のデータをホスト装置４に転送する一方、訂正不可能判定器１０２から異常信号が入力された場合には、メモリ５２に格納している誤り訂正前のデータをホスト装置４に転送する。 
【００７２】
誤りロケータ計算＆誤り訂正器１０１は、図７−１に示すように、符号長を２＾Ｎ−１（ここではＮ＝８）＝２５５ビット（固定長）とするために、処理対象のデータに対して、先頭の１１１ビットを０パディングして処理を行なう。この場合、上記図４−１の場合は、誤り無しの領域は、図７−２に示すように、パディング領域と誤り無しと検出されたブロックＢＫ１，３となる。 
【００７３】
図１３は、誤りロケータ計算＆誤り訂正器１０１のチェンサーチ回路６１と誤り訂正部６２の構成例を示す図である。図１３において、図８と同等機能を有する部位には、同一符号を付し、共通する部分の説明は省略する。図１３に示すチェンサーチ回路６１は、標準的な回路構成となっており、図８の３２ビット処理部および１１１ビット処理部は設けられておらず、上記図７−２に示す誤り無し領域（パディング領域、第１の誤り訂正後に誤り無しと判断された領域）も他の領域と同様に処理される。ＥＸＯＲ演算部８０の出力は誤り検出信号（「１」＝誤りあり、「０」＝誤り無し）として、訂正不可能判定器１０２に出力される。 
【００７４】
図１４は、訂正不可能判定器１０２の構成例を示す図である。訂正不可能判定器１０２は、図１４に示すように、第１の誤り訂正復号結果記憶部１１１と、選択部１１２と、パティングカウント部１１５と、ビットカウント部１１９と、ブロックカウント部１１３と、制御部１１６とを備えている。 
【００７５】
第１の誤り訂正復号結果記憶部１１１は、第１の誤り訂正復号部４２から入力される第１の誤り訂正復号結果を記憶する。パティングカウント部１１５は、パディング領域の現在の処理位置を示すパディングカウンタ値をカウントして制御部１１６に出力する。ビットカウント部１１９は、ブロックＢＫ中の現在の処理位置を示すビットカウンタ値をカウントして制御部１１６および選択部１１２に出力する。ブロックカウント部１１３は、４ブロックのうちの現在の処理ブロック位置を示すブロックカウンタ値をカウントして制御部１１６に出力する。選択部１１２は、ブロックカウンタ値が示すブロックの第１の誤り訂正復号結果記憶部１１１に格納されている第１の誤り訂正復号結果を制御部１１６に出力する。制御部１１６は、パティングカウント部１１５、ブロックカウント部１１３、およびビットカウント部１１９の出力から現在の処理位置を判定し、第１誤り訂正復号結果記憶部１１１に格納される第１の誤り訂正復号結果に基づいて、現在の処理位置が誤り無し領域か否かを判定する。さらに、制御部１１６は、誤りロケータ＆誤り訂正器１０１からの誤り検出信号（「１」）が入力された場合に、現在処理している領域が誤り無し領域である場合には、誤り訂正不能と判断して、処理を終了し、選択部５６に、誤り訂正不能である旨を示す異常信号を出力する。 
【００７６】
図１５は、訂正不可能判定器１０２の動作を説明するためのフローチャートである。図１５において、まず、制御部１１６は、誤り検出信号が「１」であるか否かを判定する（ステップＳ２０）。誤り検出信号が「１」である場合には（ステップＳ２０の「Ｙｅｓ」）、メモリ５２からの訂正前データを選択して、ホスト装置４に出力する（ステップＳ２３）。他方、誤り検出信号が「１」でない場合には（ステップＳ２０の「Ｎｏ」）、パティングカウント部１１５はパディングカウンタ値を「１」インクリメントし（ステップＳ２４）、パディングカウンタ値がパディング長と等しいか否かを判定する（ステップＳ２５）。パディングカウンタ値がパディング長と等しくない場合には（ステップＳ２５の「Ｎｏ」）、ステップＳ２０に戻る一方、パディングカウンタ値がパディング長と等しい場合には（ステップＳ２５の「Ｙｅｓ」）、次の誤り検出信号は「１」であるか否かを判定する（ステップＳ２１）。 
【００７７】
次の誤り検出信号が「１」でない場合には（ステップＳ２１の「Ｎｏ」）、ステップＳ２６に移行する一方、次の誤り検出信号が「１」である場合には（ステップＳ２１の「Ｙｅｓ」）、ブロックカウンタ値が示すブロックは、訂正対象外か否かを判定する（ステップＳ２２）。 
【００７８】
ブロックカウンタ値が示すブロックが訂正対象外である場合には（ステップＳ２２の「Ｎｏ」）、メモリ５２から訂正前データを選択して、ホスト装置４に出力する（ステップＳ２３）。他方、ブロックカウンタ値が示すブロックが訂正対象外でない場合には（ステップＳ２２の「Ｙｅｓ」）、ステップＳ２６に移行する。 
【００７９】
ステップＳ２６では、ビットカウント部１１９はビットカウンタ値を「１」インクリメントし、ビットカウンタ値がブロックサイズと一致するか否かを判定する（ステップＳ２７）。ビットカウンタ値がブロックサイズと一致しない場合には（ステップＳ２７の「Ｎｏ」）、ステップＳ２１に戻る一方、ビットカウンタ値がブロックサイズと一致する場合には（ステップＳ２７の「Ｙｅｓ」）、ブロックカウント部１１３は、ブロックカウンタ値をインクリメントし（ステップＳ２８）、ブロックカウンタ値が「４」であるか否かを判定する（ステップＳ２９）。ブロックカウンタ値が「４」でない場合には（ステップＳ２９の「Ｎｏ」）、ステップＳ２１に戻る一方、ブロックカウンタ値が「４」である場合には（ステップＳ２９の「Ｙｅｓ」）、誤りロケータ計算＆誤り訂正器１０１で誤り訂正されたデータをホスト装置４に転送する（ステップＳ２０）。 
【００８０】
以上説明したように、実施の形態２によれば、訂正不可能判定器１０２は、第１の誤り訂正復号部４２から入力される第１の誤り訂正結果と、誤りロケータ＆誤り訂正器１０１から入力される誤り検出信号とに基づいて、誤りが検出された領域が、誤り無し領域（パディング領域および誤り検出で誤り無しと判定された領域）である場合には、誤り訂正能力を超えていると判断することとしたので、簡単な構成で誤り訂正能力を超えているか否かを判断することが可能となる。 
【００８１】
なお、上記した実施の形態では、ブロックのサイズを３２ビット、ＢＣＨ符号を２ビットの訂正能力がある１６ビットサイズ、パディング領域を１１１ビットとしたが、本発明はこれに限られるものではなく、ブロックのサイズ、ＢＣＨ符号の訂正能力およびサイズ、パディング領域のサイズは如何なる値としてもよい。 
【００８２】
また、上記実施の形態では、本発明をＮＡＮＤメモリを有するＳＳＤに適用するようにしたが、ＮＯＲ型などの他のフラッシュＥＥＰＲＯＭを有するＳＳＤに本発明を適用するようにしてもよい。 
【００８３】
また、本発明の各実施形態における各機能ブロックは、ハードウェア、コンピュータソ
フトウェア、のいずれか、または両者の組み合わせとして実現することができる。このため、各ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれるものである。 
【符号の説明】
【００８４】
１  ＳＳＤ（Solid State Drive）
２  ＮＡＮＤメモリ
３  ＮＡＮＤコントローラ
４  ホスト装置
１０  ホストＩ／Ｆ
２０  ＮＡＮＤ  Ｉ／Ｆ
３０  誤り訂正符号部
３１  第１の誤り訂正符号生成部
３２  第２の誤り訂正符号生成部
４０  誤り訂正復号部  
４１  第２の誤り訂正復号部
４２  第１の誤り訂正復号部
５０  シンドローム計算器
５１  誤り位置多項式計算器
５２  誤りロケータ計算＆誤り訂正器
５３  メモリ
６２  誤り訂正部
７１  回路選択部
７２，７３  セレクタ
７４  ×α＾１１１回路
７５  ×α＾３２回路
７６  ×α回路
７７  ×α＾２２２回路
７８  ×α＾６４回路
７９  ×α＾２回路
８０  ＥＸＯＲ演算回路
８１  反転器
８２  セレクタ
９１  第１の誤り訂正復号結果記憶部
９２  セレクタ
９３  ブロックカウント部
９４  ビットカウント部
９７  ビット比較部
９８  判定部
１０２  訂正不可能判定器
【図１】
2011119019.tif 000004
【図２】
2011119019.tif 000005
【図３】
2011119019.tif 000006
【図４−１】
2011119019.tif 000007
【図４−２】
2011119019.tif 000008
【図５】
2011119019.tif 000009
【図６】
2011119019.tif 000010
【図７−１】
2011119019.tif 000011
【図７−２】
2011119019.tif 000012
【図８】
2011119019.tif 000013
【図９−１】
2011119019.tif 000014
【図９−２】
2011119019.tif 000015
【図９−３】
2011119019.tif 000016
【図９−４】
2011119019.tif 000017
【図９−５】
2011119019.tif 000018
【図９−６】
2011119019.tif 000019
【図１０】
2011119019.tif 000020
【図１１】
2011119019.tif 000021
【図１２】
2011119019.tif 000022
【図１３】
2011119019.tif 000023
【図１４】
2011119019.tif 000024
【図１５】
2011119019.tif 000025