(57)【要約】  信頼性を高め、かつ、１つの階層でＳＳＤを効率的に制御する。  本発明に係る半導体記憶装置は、プライマリメモリ３と、プライマリメモリ３に格納されるデータに対応するデータが格納されるミラーメモリ４と、バッファメモリ５とのうちの少なくとも１つのメモリと、少なくとも１つのメモリを制御して、少なくとも１つのメモリにデータを格納し、少なくとも１つのメモリからデータを読み出す制御装置２とを備える。
2014083811.tif 000002
【特許請求の範囲】
【請求項１】
プライマリメモリと、前記プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、バッファメモリとのうちの少なくとも１つのメモリと、
前記少なくとも１つのメモリを制御して、前記少なくとも１つのメモリにデータを格納し、前記少なくとも１つのメモリからデータを読み出す制御装置と
を備える半導体記憶装置。
【請求項２】
請求項１に記載の半導体記憶装置において、前記制御装置は、
ホスト装置から受け取ったデータをエラー訂正符号化するエラー訂正符号化部と、
ページ単位のデータが前記エラー訂正符号化部に書き込まれる度に、ビット線方向のパリティビットを算出して前記バッファメモリに格納するページＲＡＩＤ部と、
前記ページＲＡＩＤ部から受け取ったデータを前記プライマリメモリおよび前記ミラーメモリに格納する逆ミラー部であって、
前記プライマリメモリには受け取った前記データをそのまま格納し、
前記ミラーメモリには、受け取った前記データの順番を変更して格納する逆ミラー部と、
前記プライマリメモリおよび前記ミラーメモリからデータを読み出すエラー低減部であって、
前記プライマリメモリからデータを読み出して第１のデータとし、
前記ミラーメモリから、前記第１のデータに対応するデータを読み出して第２のデータとし、
前記第１のデータと前記第２のデータとが一致する場合は、前記第１のデータを出力し、
前記第１のデータと前記第２のデータとが一致しない場合は、前記第１のデータと前記第２のデータのいずれかで、支配的な方向のビットエラーが発生したものと推定して得られるデータを出力するエラー低減部と、
前記エラー低減部から受け取ったデータをエラー訂正復号するエラー訂正復号部と、
前記エラー訂正復号部から、エラー訂正復号の際に取得されたエラー位置情報を受け取るエラーマスキング部であって、
前記エラー位置情報を、前記バッファメモリ、前記プライマリメモリまたは前記ミラーメモリに格納し、
前記エラー訂正復号部がデータをエラー訂正復号する際に、前記バッファメモリ、前記プライマリメモリまたは前記ミラーメモリから前記エラー位置情報を読み出して、前記エラー訂正復号部に提供するエラーマスキング部と
を備える半導体記憶装置。
【請求項３】
プライマリメモリと、
前記プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、
受け取ったデータを前記プライマリメモリおよび前記ミラーメモリに格納する制御装置であって、
前記プライマリメモリには受け取った前記データをそのまま格納し、
前記ミラーメモリには、受け取った前記データを格納するページを所定の規則に基づいて制御して、前記データを格納する制御装置と
を備える半導体記憶装置。
【請求項４】
プライマリメモリと、
前記プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、
受け取ったデータを前記プライマリメモリおよび前記ミラーメモリに格納する逆ミラー部であって、
前記プライマリメモリには受け取った前記データをそのまま格納し、
前記ミラーメモリには、受け取った前記データの順番を変更して格納する逆ミラー部と
を備える半導体記憶装置。
【請求項５】
プライマリメモリと、
前記プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、
受け取ったデータを前記プライマリメモリおよび前記ミラーメモリに格納するシフトミラー部であって、
前記プライマリメモリには受け取った前記データをそのまま格納し、
前記ミラーメモリには、受け取った前記データを格納するページをシフトさせて格納するシフトミラー部と
を備える半導体記憶装置。
【請求項６】
プライマリメモリと、
前記プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、
前記プライマリメモリおよび前記ミラーメモリからデータを読み出すエラー低減部であって、
前記プライマリメモリからデータを読み出して第１のデータとし、
前記ミラーメモリから、前記第１のデータに対応するデータを読み出して第２のデータとし、
前記第１のデータと前記第２のデータとが一致する場合は、前記第１のデータを出力し、
前記第１のデータと前記第２のデータとが一致しない場合は、前記第１のデータと前記第２のデータのいずれかで、支配的な方向のビットエラーが発生したものと推定して得られるデータを出力するエラー低減部と
を備える半導体記憶装置。
【請求項７】
バッファメモリと、
ホスト装置から受け取ったデータをエラー訂正符号化するエラー訂正符号化部と、
ページ単位のデータが前記エラー訂正符号化部に書き込まれる度に、ビット線方向のパリティビットを算出して前記バッファメモリに格納するページＲＡＩＤ部と
を備える半導体記憶装置。
【請求項８】
受け取ったデータをエラー訂正復号するエラー訂正復号部と、
前記エラー訂正復号部から、エラー訂正復号の際に取得されたエラー位置情報を受け取るエラーマスキング部であって、
前記エラー位置情報をメモリに格納し、
前記エラー訂正復号部がデータをエラー訂正復号する際に、前記メモリから以前の前記エラー位置情報を読み出して、前記エラー訂正復号部に提供するエラーマスキング部とを備える半導体記憶装置。
【請求項９】
プライマリメモリと、当該プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、バッファメモリとのうちの少なくとも１つのメモリを備える半導体記憶装置の制御方法であって、
前記少なくとも１つのメモリを制御して、前記少なくとも１つのメモリにデータを格納する格納ステップと、
前記少なくとも１つのメモリを制御して、前記少なくとも１つのメモリからデータを読み出す読み出しステップと
を含む半導体記憶装置の制御方法。
【発明の詳細な説明】
【関連出願へのクロスリファレンス】
【０００１】
本出願は、日本国特許出願２０１２−２６３０３３号（２０１２年１１月３０日出願）の優先権を主張するものであり、当該出願の開示全体を、ここに参照のために取り込む。
【技術分野】
【０００２】
本発明は、半導体記憶装置およびその制御方法に関し、特に、不揮発性メモリを備える半導体記憶装置およびその制御方法に関するものである。
【背景技術】
【０００３】
近年、ビッグデータを取り扱う企業などにおいて、高速、低消費電力という特徴を有するＳＳＤ（Solid State Drive）をストレージシステムに採用することの需要が高まっている。【０００４】
従来のストレージシステムは、図３２に示す例のように、サーバ、ディスクアレイ、ＳＳＤおよびＮＡＮＤフラッシュメモリなど、多くの階層を有する構成となっており、それぞれの階層で、データに冗長性を持たせ、また、エラー訂正を行うことにより、信頼性を向上させていた。【０００５】
また、複数の記憶装置を組み合わせて信頼性を向上させる技術として、様々な種類のＲＡＩＤ（Redundant Arrays of Independent Disks）が提案されている（例えば、非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Mike Ault, "Oracle and RAID Usage", [online], [平成２４年１１月２２日検索], インターネット<URL: http://www.dba-oracle.com/oracle_tips_raid_usage.htm>
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ビッグデータを取り扱うストレージシステムにおいては、階層を超えてデータをコピーすることが多い。しかしながら、従来のストレージシステムは多くの階層を有し、各階層に存在するコントローラが独立して、データの冗長性やエラー訂正を最適化していたため、重複している部分が多く効率の悪いシステムとなっているものが多かった。【０００８】
したがって、かかる点に鑑みてなされた本発明の目的は、信頼性が高く、かつ、１つの階層でＳＳＤを効率的に制御することができる半導体記憶装置およびその制御方法を提供することにある。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明に係る半導体記憶装置は、プライマリメモリと、前記プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、バッファメモリとのうちの少なくとも１つのメモリと、前記少なくとも１つのメモリを制御して、前記少なくとも１つのメモリにデータを格納し、前記少なくとも１つのメモリからデータを読み出す制御装置とを備える。【００１０】
また、本発明に係る半導体記憶装置において、前記制御装置は、ホスト装置から受け取ったデータをエラー訂正符号化するエラー訂正符号化部と、ページ単位のデータが前記エラー訂正符号化部に書き込まれる度に、ビット線方向のパリティビットを算出して前記バッファメモリに格納するページＲＡＩＤ部と、前記ページＲＡＩＤ部から受け取ったデータを前記プライマリメモリおよび前記ミラーメモリに格納する逆ミラー部であって、前記プライマリメモリには受け取った前記データをそのまま格納し、前記ミラーメモリには、受け取った前記データの順番を変更して格納する逆ミラー部と、前記プライマリメモリおよび前記ミラーメモリからデータを読み出すエラー低減部であって、前記プライマリメモリからデータを読み出して第１のデータとし、前記ミラーメモリから、前記第１のデータに対応するデータを読み出して第２のデータとし、前記第１のデータと前記第２のデータとが一致する場合は、前記第１のデータを出力し、前記第１のデータと前記第２のデータとが一致しない場合は、前記第１のデータと前記第２のデータのいずれかで、支配的な方向のビットエラーが発生したものと推定して得られるデータを出力するエラー低減部と、前記エラー低減部から受け取ったデータをエラー訂正復号するエラー訂正復号部と、前記エラー訂正復号部から、エラー訂正復号の際に取得されたエラー位置情報を受け取るエラーマスキング部であって、前記エラー位置情報を前記バッファメモリ、前記プライマリメモリまたは前記ミラーメモリに格納し、前記エラー訂正復号部がデータをエラー訂正復号する際に、前記バッファメモリ、前記プライマリメモリまたは前記ミラーメモリから前記エラー位置情報を読み出して、前記エラー訂正復号部に提供するエラーマスキング部とを備えることが好ましい。【００１１】
また、上記課題を解決するため、本発明に係る半導体記憶装置は、プライマリメモリと、前記プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、受け取ったデータを前記プライマリメモリおよび前記ミラーメモリに格納する制御装置であって、前記プライマリメモリには受け取った前記データをそのまま格納し、前記ミラーメモリには、受け取った前記データを格納するページを所定の規則に基づいて制御して、前記データを格納する制御装置とを備える。【００１２】
また、上記課題を解決するため、本発明に係る半導体記憶装置は、プライマリメモリと、前記プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、受け取ったデータを前記プライマリメモリおよび前記ミラーメモリに格納する逆ミラー部であって、前記プライマリメモリには受け取った前記データをそのまま格納し、前記ミラーメモリには、受け取った前記データの順番を変更してデータを格納する逆ミラー部とを備える。【００１３】
また、上記課題を解決するため、本発明に係る半導体記憶装置は、プライマリメモリと、前記プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、受け取ったデータを前記プライマリメモリおよび前記ミラーメモリに格納するシフトミラー部であって、前記プライマリメモリには受け取った前記データをそのまま格納し、前記ミラーメモリには、受け取った前記データを格納するページをシフトさせて格納するシフトミラー部とを備える。【００１４】
また、上記課題を解決するため、本発明に係る半導体記憶装置は、プライマリメモリと、前記プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、前記プライマリメモリおよび前記ミラーメモリからデータを読み出すエラー低減部であって、前記プライマリメモリからデータを読み出して第１のデータとし、前記ミラーメモリから、前記第１のデータに対応するデータを読み出して第２のデータとし、前記第１のデータと前記第２のデータとが一致する場合は、前記第１のデータを出力し、前記第１のデータと前記第２のデータとが一致しない場合は、前記第１のデータと前記第２のデータのいずれかで、支配的な方向のビットエラーが発生したものと推定して得られるデータを出力するエラー低減部とを備える。【００１５】
また、上記課題を解決するため、本発明に係る半導体記憶装置は、バッファメモリと、ホスト装置から受け取ったデータをエラー訂正符号化するエラー訂正符号化部と、ページ単位のデータが前記エラー訂正符号化部に書き込まれる度に、ビット線方向のパリティビットを算出して前記バッファメモリに格納するＲＡＩＤ部とを備える。【００１６】
また、上記課題を解決するため、本発明に係る半導体記憶装置は、受け取ったデータをエラー訂正復号するエラー訂正復号部と、前記エラー訂正復号部から、エラー訂正復号の際に取得されたエラー位置情報を受け取るエラーマスキング部であって、前記エラー位置情報を前記メモリに格納し、前記エラー訂正復号部がデータをエラー訂正復号する際に、前記メモリから以前の前記エラー位置情報を読み出して、前記エラー訂正復号部に提供するエラーマスキング部とを備える。【００１７】
また、上記課題を解決するため、本発明に係る半導体記憶装置の制御方法は、プライマリメモリと、当該プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、バッファメモリとのうちの少なくとも１つのメモリを備える半導体記憶装置の制御方法であって、前記少なくとも１つのメモリを制御して、前記少なくとも１つのメモリにデータを格納する格納ステップと、前記少なくとも１つのメモリを制御して、前記少なくとも１つのメモリからデータを読み出す読み出しステップとを含む。
【発明の効果】
【００１８】
本発明によれば、信頼性が高く、かつ、１つの階層でＳＳＤを効率的に制御することができる半導体記憶装置およびその制御方法を提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態に係る半導体記憶装置の概略構成を示す図である。
【図２】本発明の一実施形態に係る逆ミラー部の概略構成を示す図である。
【図３】ＮＡＮＤフラッシュメモリの構成の一例を示す図である。
【図４】書き込みＢＥＲの上位ページ／下位ページへの依存性を示すグラフである。
【図５】データ保持ＢＥＲのページ番号への依存性を示すグラフである。
【図６】プライマリメモリおよびミラーメモリにデータを格納する様子の一例を示す図である。
【図７Ａ】書き込みエラー主因条件におけるデータの読み出し方法の一例である。
【図７Ｂ】データ保持エラー主因条件におけるデータの読み出し方法の一例である。
【図８Ａ】書き込みエラー主因条件において、逆ミラーリングを適用した場合にＢＥＲが改善する様子を示すグラフである。
【図８Ｂ】データ保持エラー主因条件において、逆ミラーリングを適用した場合にＢＥＲが改善する様子を示すグラフである。
【図９】本発明の一実施形態に係るエラー低減部の概略構成を示す図である。
【図１０】ＮＡＮＤフラッシュメモリの書き込みＢＥＲにおけるエラー方向の非対称性を示す図である。
【図１１】本発明の一実施形態に係るエラー低減部の処理を示すフローチャートである。
【図１２】本発明の一実施形態に係るエラー低減部が出力を判定する様子の例を示す図である。
【図１３】逆ミラーリングおよびエラー低減を適用した場合にＢＥＲが改善する様子を示すグラフである。
【図１４Ａ】書き込みＢＥＲの書き換え回数への依存性を比較したグラフである。
【図１４Ｂ】書き込みＢＥＲの書き換え回数への依存性を比較したグラフである。
【図１５Ａ】データ保持ＢＥＲの書き換え回数への依存性を比較したグラフである。
【図１５Ｂ】データ保持ＢＥＲの書き換え回数への依存性を比較したグラフである。
【図１６】本発明の他の実施形態に係る半導体記憶装置の概略構成を示す図である。
【図１７】図１６のシフトミラー部の概略構成を示す図である。
【図１８】シフトミラーリングによりプライマリメモリおよびミラーメモリにデータを格納する様子の一例を示す図である。
【図１９】シフトミラーリングによりプライマリメモリおよびミラーメモリにデータを格納する処理の一例を示す図である。
【図２０Ａ】書き込みＢＥＲのワーストのシフト数への依存性を示す図である。
【図２０Ｂ】データ保持ＢＥＲのワーストのシフト数への依存性を示す図である。
【図２１Ａ】シフトミラーリングを適用した場合に書き込みＢＥＲが改善する様子を示すグラフである。
【図２１Ｂ】シフトミラーリングを適用した場合にデータ保持ＢＥＲが改善する様子を示すグラフである。
【図２２】本発明の一実施形態に係るページＲＡＩＤ部がビット線方向にパリティビットを生成する様子を示す図である。
【図２３Ａ】ユーザメモリに対して必要なバッファ比のバッファメモリの許容書き換え回数への依存性を示す図である。
【図２３Ｂ】エラー訂正後のＢＥＲのエラー訂正前のＢＥＲへの依存性を比較したグラフである。
【図２４】ＮＡＮＤフラッシュメモリにおけるデータ保持エラーの発生の様子の一例を示す図である。
【図２５】本発明の一実施形態に係る制御装置の書き込みシーケンスのフローチャートである。
【図２６】本発明の一実施形態に係る制御装置のエラーマスキングシーケンスのフローチャートである。
【図２７】本発明の一実施形態に係るエラーマスキング部がエラー位置情報を圧縮する様子の一例を示す図である。
【図２８】ＢＥＲのデータ保持時間への依存性を比較したグラフである。
【図２９】データ保持ＢＥＲのデータ保持時間への依存性を示すグラフである。
【図３０】書き込みＢＥＲの書き換え回数への依存性を示すグラフである。
【図３１】本発明による効果をまとめた表である。
【図３２】従来のストレージシステムの構成の一例である。
【発明を実施するための形態】
【００２０】
以下、本発明に係る実施形態について、図面を参照して説明する。
【００２１】
［全体構成］
図１は、本発明の一実施形態に係る半導体記憶装置の概略構成を示す図である。図１に示すように、半導体記憶装置は、ホスト装置１、制御装置２、プライマリメモリ３、ミラーメモリ４およびバッファメモリ５を備える。
【００２２】
なお、図１においては、プライマリメモリ３、ミラーメモリ４およびバッファメモリ５について簡略化し、それぞれ１つずつ示したが、これは簡略化した図であり、プライマリメモリ３、ミラーメモリ４およびバッファメモリ５は、それぞれ複数個であってよい。
【００２３】
図１に示すように、本発明の一実施形態に係る半導体記憶装置においては、プライマリメモリ３、ミラーメモリ４およびバッファメモリ５は階層構造を持たない。そのため、制御装置２は、同一の機能を重複させることなく、プライマリメモリ３、ミラーメモリ４およびバッファメモリ５を一括して制御することができる。
【００２４】
データ書き込み時においては、制御装置２は、ホスト装置１から受け取ったデータに対してエラー訂正符号化などの処理を行い、プライマリメモリ３に格納する。また、制御装置２は、データを冗長に格納するため、プライマリメモリ３に格納するデータに対応するデータをミラーメモリ４に格納する。制御装置２が行うエラー訂正符号化以外の処理については後述する。
【００２５】
データ読み出し時においては、制御装置２は、プライマリメモリ３およびミラーメモリ４からデータを読み出す。制御装置２は、受け取ったデータに対して、エラー訂正復号などの処理を行い、ホスト装置１にエラー訂正復号などの処理をしたデータを提供する。制御装置２が行うエラー訂正復号以外の処理については後述する。
【００２６】
プライマリメモリ３およびミラーメモリ４は、不揮発性のメモリであり、例えばＮＡＮＤフラッシュメモリである。信頼性を高めるため、プライマリメモリ３とミラーメモリ４の両方に対応するデータが格納される。
【００２７】
バッファメモリ５は、一時的にデータを格納する際に用いられるメモリである。バッファメモリ５は、制御装置２によってデータの書き込み／読み出しが頻繁に行われる。したがって、バッファメモリ５には、書き込み／読み出し時間が短く、書き換え可能回数が多いという特性を有する抵抗変化型メモリ（ＲｅＲＡＭ：Resistance Random Access Memory）などを用いることが好ましい。しかしながら、ＲｅＲＡＭであることは必須ではなく、バッファメモリ５としては、ＮＡＮＤフラッシュメモリ、ＤＲＡＭ（Dynamic Random Access Memory）、磁気抵抗メモリ（ＭＲＡＭ：Magnetoresistive Random Access Memory）、相変化メモリ（ＰＣＲＡＭ：Phase Change Random Access Memory）、強誘電体メモリ（ＦｅＲＡＭ：Ferroelectric Random Access Memory）など、様々なメモリを用いることができる。
【００２８】
また、この実施形態では、バッファメモリ５として、プライマリメモリ３およびミラーメモリ４とは別のメモリを用いているが、プライマリメモリ３、および／または、ミラーメモリ４内の一部の領域をバッファメモリとして使用することも可能である。
【００２９】
制御装置２は、エラー訂正符号化部１０、ページＲＡＩＤ部２０、逆ミラー部３０、エラー低減部４０、エラー訂正復号部５０およびエラーマスキング部６０を備える。
【００３０】
データ書き込み時においては、エラー訂正符号化部１０は、ホスト装置１から受け取ったデータをエラー訂正符号化する。続いて、ページＲＡＩＤ部２０は、排他的論理和（ＸＯＲ）の演算によってパリティビットを生成する。逆ミラー部３０は、データを逆ミラーリングして、元のデータと逆ミラーリングしたデータとを、それぞれ、プライマリメモリ３とミラーメモリ４とに格納する。「逆ミラーリング」の技術的意味については後述する。なお、ページＲＡＩＤ部２０が、排他的論理和の演算によってパリティビットを生成するのは一例であり、その他の演算方法によってパリティビットを生成してもよい。
【００３１】
データ読み出し時においては、エラー低減部４０は、プライマリメモリ３およびミラーメモリ４からデータを読み出す。続いて、エラー訂正復号部５０は、エラー訂正復号を実行する。また、エラー訂正復号部５０は、エラー訂正復号時に取得したエラー位置情報をエラーマスキング部６０に提供する。また、エラー訂正復号部５０は、エラーマスキング部６０から、以前の読み出し時におけるエラー位置情報を受け取り、エラー位置におけるデータを訂正する。
【００３２】
制御装置２内の各ブロックの機能の詳細について、以下に詳述する。
【００３３】
［逆ミラーリング］
図２は、本発明の一実施形態に係る逆ミラー部３０の概略構成を示す図である。図２に示すように、逆ミラー部３０は、入力部３１、プライマリ出力部３２、変換部３３およびミラー出力部３４を備える。
【００３４】
入力部３１は、データを受け取ると、プライマリ出力部３２およびバッファメモリ５にデータを提供する。プライマリ出力部３２は、受け取ったデータをそのままプライマリメモリ３に格納する。
【００３５】
変換部３３は、バッファメモリ５からデータの順番を逆にして読み出してミラー出力部３４へデータを提供する。ミラー出力部３４は、逆の順番となったデータをミラーメモリ４へ格納する。なお、変換部３３が、バッファメモリ５を介して入力部３１からデータを受け取るものとして説明したが、バッファメモリ５は必須ではなく、変換部３３は、入力部３１から直接データを受け取りデータの順番を逆にしてもよい。
【００３６】
以下、変換部３３がデータの順番を逆にすることにより、プライマリメモリ３とミラーメモリ４に格納されるデータの順番が逆になることの技術的意味を説明する。
【００３７】
図３は、１メモリセルあたり２ビットのＭＬＣ（Multiple Level Cell）のＮＡＮＤフラッシュメモリの構成の一例を示す図である。図３に示すように、１メモリセルあたり２ビットのＭＬＣのＮＡＮＤフラッシュメモリは、各メモリセルが下位ページと上位ページを有し２ビット分のデータを格納する。図３に示す例では、ビット線方向に１２８個のメモリセルがあるため、その２倍の２５６個のページがあり、２５６ビットのデータを格納する。以下、特に断らない限り、プライマリメモリ３およびミラーメモリ４は、１メモリセルあたり２ビットのＭＬＣのＮＡＮＤフラッシュメモリであり、０から２５５までのページ番号を有するものとして説明する。
【００３８】
図４は、ページ番号を横軸、データを所定の回数だけ書き換えた後に書き込んだデータのＢＥＲ（Bit Error Rate）（以下、「書き込みＢＥＲ」と称する）を縦軸としたグラフである。図４は、書き換え回数が１０ｋ回（１０ラ１０３回）の場合のＢＥＲの測定結果である。
【００３９】
図４に示すように、ＮＡＮＤフラッシュメモリにおいては、上位ページに書き込まれたデータの書き込みＢＥＲの方が下位ページに書き込まれたデータの書き込みＢＥＲよりも小さい。したがって、全てのデータが上位ページから読み出せることが好ましい。
【００４０】
図５は、ページ番号を横軸、データを所定の回数だけ書き換えた後に高温で所定の時間を経過した時点のＢＥＲ（以下、「データ保持ＢＥＲ」と称する）を縦軸としたグラフである。図５は、１０ｋ回書き換えた後に８５℃で１０時間経過した時点のＢＥＲの測定結果である。
【００４１】
図５に示すように、ＮＡＮＤフラッシュメモリにおいては、ページ番号が大きくなるにつれてデータ保持ＢＥＲが劣化する傾向がある。したがって、全てのデータがページ番号の小さい側のページから読み出せることが好ましい。
【００４２】
図６に、プライマリメモリ３とはデータの順番を逆にして、データをミラーメモリ４に格納する様子を示す。図６に示すように、データ０からデータ２５５は、ミラーメモリ４においては、データ２５５からデータ０の順でページ０からページ２５５に格納される。これにより、プライマリメモリ３では下位ページに記載されていたデータをミラーメモリ４では上位ページに格納することができる。例えば、データ０は、プライマリメモリ３では下位ページ（ページ０）に格納されるが、ミラーメモリ４では上位ページ（ページ２５５）に格納される。
【００４３】
また、プライマリメモリ３ではページ番号の大きいページに記載されていたデータをミラーメモリ４ではページ番号の小さいページに格納することができる。例えば、データ２５５は、プライマリメモリ３ではページ２５５に格納されるが、ミラーメモリ４ではページ０に格納される。
【００４４】
図７Ａに、書き込みエラーが主因となる条件（以下、「書き込みエラー主因条件」と称する）において、ワーストＢＥＲを改善させる読み出し方法の例を示す。ここで、ワーストＢＥＲとは、全てのページ番号の中で最も大きいＢＥＲのことである。図７Ａに示すように、奇数番号のデータ（データ１、データ３・・・）はプライマリメモリ３から読み出し、偶数番号のデータ（データ０、データ２・・・）はミラーメモリ４から読み出すことにより、全てのデータを上位ページから読み出すことができワーストＢＥＲが改善する。
【００４５】
図７Ｂに、データ保持エラーが主因となる条件（以下、「データ保持エラー主因条件」と称する）において、ワーストＢＥＲを改善させる読み出し方法の例を示す。図７Ｂに示すように、データ０から１２７はプライマリメモリ３から読み出し、データ１２８から２５５はミラーメモリ４から読み出すことにより、全てのデータをページ番号の小さい側のページから読み出すことができワーストＢＥＲが改善する。
【００４６】
図８Ａに、書き込みエラー主因条件において、書き込みＢＥＲを、従来の場合と、逆ミラーリングを適用した場合とで比較したグラフを示す。黒四角が従来の測定結果を示し、白四角が逆ミラーリングを適用した測定結果を示す。図８Ａに示すように、逆ミラーリングを適用することにより、ワーストＢＥＲが６９％改善した。
【００４７】
図８Ｂに、データ保持エラー主因条件において、データ保持ＢＥＲを、従来の場合と、逆ミラーリングを適用した場合とで比較したグラフを示す。黒四角が従来の測定結果を示し、白四角が逆ミラーリングを適用した測定結果を示す。図８Ｂに示すように、逆ミラーリングを適用することにより、ワーストＢＥＲが４１％改善した。
【００４８】
このように逆ミラーリングを適用し、全てのデータを上位ページから読み出す、または、ページ番号の小さい側から読み出すことによって、ワーストＢＥＲを改善させることができる。どちらの読み出し方を選択するかは、書き込みエラーまたはデータ保持エラーのいずれを改善させるかに応じて決定することができる。
【００４９】
なお、上記で説明した、ミラーメモリ４にデータの順番を逆にして格納する方法は、あくまで例示であって、これに限るものではない。最適なデータの格納方法は、プライマリメモリ３およびミラーメモリ４の特性によって変わり得る。逆ミラー部３０は、プライマリメモリ３およびミラーメモリ４の特性に応じて、最適な順番になるようにデータの順番を変更し、ミラーメモリ４にデータを格納する。
【００５０】
また、上記で説明した、上位ページのみからデータを読み出す方法、および、ページ番号の小さい側のみからデータを読み出す方法は、あくまで例示であって、これに限るものではない。最適なデータの読み出し方法は、プライマリメモリ３およびミラーメモリ４の特性によって変わり得る。例えば、プライマリメモリ３およびミラーメモリ４が、ページ番号が大きい方でＢＥＲが小さいという特性を有する場合は、ページ番号の大きい側からデータを読み出すことが好ましい場合もあり得る。
【００５１】
また、本実施形態では、変換部３３は、後述するエラー低減部４０と協働して、ワーストＢＥＲを低減する場合は、データの順番を逆にするだけでなく、さらにビットを反転させてデータをミラーメモリ４に格納する。ここで、ビットを反転とは、”０”のデータを”１”とし、”１”のデータを”０”とすることを意味する。変換部３３がビットを反転させることの技術的意味については、エラー低減部４０の説明において詳述する。
【００５２】
［エラー低減］
図９は、本発明の一実施形態に係るエラー低減部４０の概略構成を示す図である。図９に示すように、エラー低減部４０は、プライマリ入力部４１、ミラー入力部４２、ビット再反転部４３および判定部４４を備える。
【００５３】
プライマリ入力部４１は、プライマリメモリ３からデータを読み出して判定部４４にデータを提供する。
【００５４】
ミラー入力部４２は、ミラーメモリ４からデータを読み出してビット再反転部４３にデータを提供する。
【００５５】
ビット再反転部４３は、ミラー入力部４２から受け取ったデータのビットを反転させ、反転させたデータを判定部４４に提供する。ここで、ビット再反転部４３がビットを反転させるのは、逆ミラー部３０が、ビットを反転させてミラーメモリ４に格納したデータを、再反転させて元のデータに戻すためである。エラー低減部４０が逆ミラー部３０と協働してＢＥＲを低減する際に、逆ミラー部３０がビットを反転してミラーメモリ４に格納し、エラー低減部４０がミラーメモリ４から読み出したデータのビットを再反転して元に戻すことの技術的意味については後述する。
【００５６】
判定部４４は、プライマリ入力部４１およびビット再反転部４３から受け取ったデータを比較して正しいと推定されるデータを判定し、推定したデータを出力する。判定部４４が、どのようにして正しいと推定されるデータを判定するかについては、図１１のフローチャートの説明において詳述する。
【００５７】
以下、逆ミラー部３０によるビット反転、および、エラー低減部４０によるビット再反転の技術的意味を説明する。
【００５８】
図１０は、ＮＡＮＤフラッシュメモリの書き込みＢＥＲにおけるエラー方向の非対称性を示す図である。図１０に示すように、下位ページでは、”１”が”０”となるエラー方向が支配的であり、上位ページでは、”０”が”１”となるエラー方向が支配的である。
【００５９】
逆ミラー部３０は、プライマリメモリ３とミラーメモリ４とで上位ページと下位ページがペアになるようにデータを格納する。したがって、プライマリメモリ３で下位ページ（上位ページ）に格納されているデータは、ミラーメモリ４では上位ページ（下位ページ）に格納されている。
【００６０】
そうすると、逆ミラー部３０がビット反転せずにミラーメモリ４にデータを格納した場合、例えば、プライマリメモリ３で下位ページに格納されたデータと、ミラーメモリ４で上位ページに格納されたデータとでは、支配的なエラー方向が反対となる。この場合、プライマリメモリ３とミラーメモリ４から読み出したデータが一致しない場合に、正しいデータが”０”と”１”のどちらであるかが推定できない。
【００６１】
そこで、逆ミラー部３０がミラーメモリ４に格納するデータをビット反転させることにより、プライマリメモリ３とミラーメモリ４とで支配的なエラー方向が一致する。これにより、プライマリメモリ３とミラーメモリ４から読み出したデータが一致しない場合に、プライマリメモリ３とミラーメモリ４のいずれかで、支配的な方向のエラーが発生したと推定することにより、正しいデータが”０”と”１”のどちらであるかを推定できるようになる。
【００６２】
この場合、逆ミラー部３０がビットを反転させてミラーメモリ４にデータを格納するため、エラー低減部４０はビットを再反転させてデータを元に戻す。
【００６３】
上記のように、ＮＡＮＤフラッシュメモリの書き込みＢＥＲにおけるエラー方向に強い非対称性があることから、エラー低減部４０は、プライマリメモリ３とミラーメモリ４から読み出したデータが一致しない場合に、正しいデータを推定することができる。図１１のフローチャートに従って、エラー低減部４０が正しいデータを推定する手順を示す。
【００６４】
プライマリ入力部４１は、プライマリメモリ３からデータを読み出す（ステップＳ１０１）。ミラー入力部４２は、対応するデータをミラーメモリ４から読み出す（ステップＳ１０２）。なお、ステップＳ１０１とＳ１０２とは、逆の順番であっても構わないし、同時であっても構わない。
【００６５】
ビット再反転部４３は、ミラー入力部４２から受け取ったデータのビットを再反転させて判定部４４に提供する（ステップＳ１０３）。
【００６６】
判定部４４は、プライマリ入力部４１から受け取ったデータとビット再反転部４３から受け取ったデータが一致しているか否かを判定する（ステップＳ１０４）。
【００６７】
ステップＳ１０４にて、データが一致していると判定した場合は、判定部４４は、プライマリメモリ３とミラーメモリ４のいずれにおいてもエラーが発生しなかったものと推定し、プライマリメモリ３に格納されていたデータを出力する（ステップＳ１０５）。
【００６８】
ステップＳ１０４にて、データが一致していないと判定した場合は、判定部４４は、さらに、プライマリメモリ３から読み出したデータが、下位ページと上位ページのいずれから読み出したデータであるかを判定する（ステップＳ１０６）。
【００６９】
ステップＳ１０６にて、プライマリメモリ３の下位ページから読み出したデータであると判定した場合は、判定部４４は、”１”が正しいデータであると推定して、データ”１”を出力する（ステップＳ１０７）。
【００７０】
ステップＳ１０６にて、プライマリメモリ３の上位ページから読み出したデータであると判定した場合は、判定部４４は、”０”が正しいデータであると推定して、データ”０”を出力する（ステップＳ１０８）。
【００７１】
図１２は、エラー低減部４０の処理のいくつかの具体例を示す表である。図１２は、プライマリメモリ３の下位ページ、および、ミラーメモリ４の上位ページからデータを読み出した場合の例である。
【００７２】
ケース１は、プライマリメモリ３の下位ページデータが”１”で、ミラーメモリ４の上位ページデータ（ビット再反転後のデータ、以下同様）が”１”である場合である。この場合、データが一致しているので、エラー低減部４０は、”１”が正しいデータであると推定し”１”を出力する。
【００７３】
ケース２は、プライマリメモリ３の下位ページデータが”１”で、ミラーメモリ４の上位ページデータが”１”から”０”へのエラー（ビット再反転前は、”０”から”１”へのエラー）を起こした場合を示す。この場合、データが一致しておらず、プライマリメモリ３のデータは下位ページから読み出したデータであるので、エラー低減部４０は、”１”が正しいデータであると推定し”１”を出力する。この推定は正しい。
【００７４】
ケース３は、プライマリメモリ３の下位ページデータが”１”から”０”へのエラーを起こし、ミラーメモリ４の上位ページデータが”１”である場合を示す。この場合、データが一致しておらず、プライマリメモリ３のデータは下位ページから読み出したデータであるので、エラー低減部４０は、”１”が正しいデータであると推定し”１”を出力する。この推定は正しい。
【００７５】
ケース４は、プライマリメモリ３の下位ページデータが”１”から”０”へのエラーを起こし、ミラーメモリ４の上位ページデータも”１”から”０”へのエラー（ビット再反転前は、”０”から”１”へのエラー）を起こした場合を示す。この場合、データが一致しているので、エラー低減部４０は、”０”が正しいデータであると推定し”０”を出力する。この推定は正しくない。このように、プライマリメモリ３とミラーメモリ４の両方でエラーが発生した場合は、エラー低減部４０は正しい値を推定することができない。しかしながら、プライマリメモリ３とミラーメモリ４の両方で同時にエラーが発生する確率は非常に小さいため、この場合に正しく推定できないことの影響は小さい。
【００７６】
ケース５は、プライマリメモリ３の下位ページデータが”０”で、ミラーメモリ４の上位ページデータが”０”である場合を示す。この場合、データが一致しているので、エラー低減部４０は、”０”が正しいデータであると推定し”０”を出力する。
【００７７】
なお、上記説明においては、逆ミラー部３０とエラー低減部４０とで協働してＢＥＲを低減する場合を例に挙げて説明したが、エラー低減部４０のみを独立して採用してもよい。逆ミラーリングを採用しない場合は、エラー低減部４０におけるビット再反転は実行しない。また、逆ミラーリングを採用しない場合は、逆ミラー部３０は、バッファメモリ５を必要としない。
【００７８】
また、上記説明においては、支配的なエラー方向が図１０に示す方向である場合を例に挙げて説明したが、これはあくまで一例である。例えば、支配的なエラー方向が図１０に示す方向と逆の場合であっても、同様の考え方で正しいデータを推定することにより、本願発明は適用可能である。
【００７９】
[逆ミラーリングおよびエラー低減の効果]
図１３に、書き込みエラー主因条件において、書き込みＢＥＲを、通常のミラーリングを採用する従来技術の場合と、上記の逆ミラーリングおよびエラー低減を適用した場合とで比較したグラフを示す。黒四角が従来の測定結果を示し、白四角が逆ミラーリングおよびエラー低減を適用した測定結果を示す。図１３に示すように、逆ミラーリングおよびエラー低減を適用することにより、ワーストＢＥＲが９１％改善した。
【００８０】
図１４Ａ、１４Ｂ、１５Ａおよび１５Ｂに、通常のミラーリングを採用する従来技術の場合と、上記の逆ミラーリングを適用した場合と、上記の逆ミラーリングおよびエラー低減を適用した場合とを比較する測定結果を示す。黒四角が従来の測定結果、白三角が逆ミラーリングを適用した場合の測定結果、白四角が逆ミラーリングおよびエラー低減を適用した場合の測定結果を示す。
【００８１】
図１４Ａおよび１４Ｂは、横軸が書き換え回数、縦軸がブロック内のワースト書き込みＢＥＲである。図１４Ａは、サイズが２Ｘｎｍのメモリセルに対する測定結果である。図１４Ｂは、サイズが１Ｘｎｍのメモリセルに対する測定結果である。ここで、サイズが２Ｘｎｍとはサイズが２０〜３０ｎｍ程度であることを意味する。また、サイズが１Ｘｎｍとはサイズが１０〜２０ｎｍ程度であることを意味する。以下の説明においても同様である。
【００８２】
図１４Ａに示されるように、書き換え回数が１０ｋ回の場合、従来技術に対して逆ミラーリングを適用することでＢＥＲが６９％改善し、逆ミラーリングにさらにエラー低減を適用することで、従来技術に対してＢＥＲが９１％改善した。
【００８３】
また、図１４Ｂに示されるように、書き換え回数が６ｋ回の場合、従来技術に対して逆ミラーリングを適用することでＢＥＲが４５％改善し、逆ミラーリングにさらにエラー低減を適用することで、従来技術に対してＢＥＲが８５％改善した。
【００８４】
図１５Ａおよび１５Ｂは、横軸が書き換え回数、縦軸がブロック内のワーストデータ保持ＢＥＲである。図１５Ａは、サイズが２Ｘｎｍのメモリセルに対して、横軸で指定する書き換え回数だけ書き換えた後に、８５℃で５０６時間経過させた後の測定結果である。図１５Ｂは、サイズが１Ｘｎｍのメモリセルに対して、横軸で指定する書き換え回数だけ書き換えた後に、８５℃で１９４時間経過させた後の測定結果である。
【００８５】
図１５Ａに示されるように、書き換え回数が１０ｋ回の場合、従来技術に対して逆ミラーリングを適用することでＢＥＲが４１％改善し、逆ミラーリングにさらにエラー低減を適用することで、従来技術に対してＢＥＲが５６％改善した。
【００８６】
また、図１５Ｂに示されるように、書き換え回数が６ｋ回の場合、従来技術に対して逆ミラーリングを適用することでＢＥＲが１４％改善し、逆ミラーリングにさらにエラー低減を適用することで、従来技術に対してＢＥＲが３０％改善した。
【００８７】
［シフトミラーリング］
上述した「逆ミラーリング」の代わりに、「シフトミラーリング」を採用する実施形態を以下に説明する。図１６は、シフトミラーリングを採用した実施形態に係る半導体記憶装置の概略構成を示す図である。図１に示した「逆ミラーリング」を採用する半導体記憶装置とは、制御装置２が逆ミラー部３０の代わりにシフトミラー部７０を備える点、および、シフトミラー部７０がバッファメモリ５に接続されていない点で異なる。
【００８８】
図１７は、本発明の一実施形態に係るシフトミラー部７０の概略構成を示す図である。図１７に示すように、シフトミラー部７０は、入力部７１、プライマリ出力部７２およびシフト出力部７３を備える。
【００８９】
入力部７１は、データを受け取ると、プライマリ出力部７２およびシフト出力部７３にデータを提供する。プライマリ出力部７２は、受け取ったデータをそのままプライマリメモリ３に格納する。
【００９０】
シフト出力部７３は、データを格納するページを、プライマリ出力部７２がプライマリメモリ３に格納するページから、シフト数ｉ（ｉは整数）だけシフトさせて、受け取ったデータをミラーメモリ４に格納する。
【００９１】
以下、シフト出力部７３が、データを格納するページを、シフト数ｉだけシフトさせることについて詳細に説明する。
【００９２】
図１８に、ミラーメモリ４にデータを格納するページを、プライマリメモリ３にデータを格納するページから、所定のシフト数だけシフトさせる様子の一例を示す。以下、図１８に示すようなビット線方向の１２８個のメモリセルからなる単位を「ブロック」と称することとする。図１８に示すように、プライマリメモリ３のブロックｎ（ｎ番目のブロック）においては、ページ０からページ２５５に、データｎ＿０からデータｎ＿２５５が格納されている。一方、ミラーメモリ４のブロックｎにおいては、対応するデータが、所定のシフト数だけシフトさせたページに格納されている。例えば、データｎ＿０からデータｎ＿１２８が、ページ１２７からページ２５５に格納されている。また、データｎ＿１２９からデータｎ＿２５５は、図示していないミラーメモリ４のブロックｎ＋１に格納されている。また、ミラーメモリ４のブロックｎにおける、ページ０からページ１２６には、プライマリメモリ３のブロックｎ−１において、ページ１２９からページ２５５に格納されているデータｎ−１＿１２９からデータｎ−１＿２５５が格納されている。
【００９３】
図１９に、ミラーメモリ４にデータを格納するページを、プライマリメモリ３にデータを格納するページからシフトさせて格納する処理の一例を示す。プライマリメモリ３のブロック０において、データ０＿０をページ０に格納する際、ミラーメモリ４においては、ブロック０のページ２５５−ｉにデータ０＿０を格納する。また、プライマリメモリ３のブロック０において、データ０＿ｉをページｉに格納する際、ミラーメモリ４においては、ブロック０のページ２５５にデータ０＿ｉを格納する。また、プライマリメモリ３のブロック０において、データ０＿ｉ＋１をページｉ＋１に格納する際、ミラーメモリ４においては、ブロック１のページ０にデータ０＿ｉ＋１を格納する。また、プライマリメモリ３のブロック０において、データ０＿２５５をページ２５５に格納する際、ミラーメモリ４においては、ブロック１のページ２５４−ｉにデータ０＿２５５を格納する。
【００９４】
図１９に示すように、シフトミラー部７０は、同一のデータをプライマリメモリ３とミラーメモリ４に同時に書き込むことが可能であるため、バッファメモリ５が不要である。
【００９５】
シフト数ｉは任意の値に設定可能であり、プライマリメモリ３およびミラーメモリ４の特性に応じて適切な値を設定することができる。
【００９６】
図２０Ａに、書き込みＢＥＲのワーストを、従来の場合と、逆ミラーリングを適用した場合と、シフトミラーリングを適用した場合とで比較したグラフを示す。横軸はシフト数であり、シフトミラーリングを適用した場合の書き込みＢＥＲのワーストは、シフト数に依存して周期的に変化している。シフトミラーリングを適用した場合、シフト数として、書き込みＢＥＲのワーストが低くなる値を選択することにより、書き込みＢＥＲのワーストが逆ミラーリングを適用した場合と同等の程度まで改善させることができる。
【００９７】
図２０Ｂに、データ保持ＢＥＲのワーストを、従来の場合と、逆ミラーリングを適用した場合と、シフトミラーリングを適用した場合とで比較したグラフを示す。横軸はシフト数であり、シフトミラーリングを適用した場合のデータ保持ＢＥＲのワーストは、シフト数に依存して変化している。図２０Ｂに示すように、シフトミラーリングを適用した場合、シフト数が１１０〜１４４程度の範囲において、データ保持ＢＥＲのワーストが逆ミラーリングを適用した場合と同等の程度まで改善した。
【００９８】
図２１Ａに、書き込みＢＥＲを、従来の場合と、シフトミラーリングを適用した場合とで比較したグラフを示す。黒四角が従来の測定結果を示し、白四角がシフトミラーリングを適用した測定結果を示す。図２１Ａに示すように、シフトミラーリングを適用することにより、ワーストＢＥＲが５７％改善した。
【００９９】
図２１Ｂに、データ保持ＢＥＲを、従来の場合と、シフトミラーリングを適用した場合とで比較したグラフを示す。黒四角が従来の測定結果を示し、白四角がシフトミラーリングを適用した測定結果を示す。図２１Ｂに示すように、シフトミラーリングを適用することにより、ワーストＢＥＲが４１％改善した。
【０１００】
このようにシフトミラーリングを適用し、ミラーメモリ４にデータを格納するページを、プライマリメモリ３にデータを格納するページから、適切なシフト数ｉだけシフトさせることによって、バッファメモリ５を用いることなくワーストＢＥＲを改善させることができる。
【０１０１】
なお、ミラーメモリ４にデータを格納するページを、プライマリメモリ３にデータを格納するページからシフトする際は、必ずしも一律にページをシフトさせなくてもよい。最適なデータの格納方法は、プライマリメモリ３およびミラーメモリ４の特性によって変わり得るからである。例えば、最適にデータを格納するため、ミラーメモリ４にデータを格納するページを、一律にシフトさせたものから一部順番を変更させてもよい。
【０１０２】
［ページＲＡＩＤ］
図２２に、ページＲＡＩＤ部２０により、ビット線（ＢＬ：Bit Line）方向にパリティビットを付加する様子を示す。
【０１０３】
図２２に示すように、ページＲＡＩＤ部２０は、従来のワード線（ＷＬ：Word Line）方向のエラー訂正符号に加えて、ビット線方向についても、各メモリセルのデータについて排他的論理和を演算することにより、パリティビットを算出する。ページＲＡＩＤ部２０は、算出したパリティビットをバッファメモリ５に格納する。
【０１０４】
ページＲＡＩＤ部２０は、ユーザデータがページ単位でエラー訂正符号化部１０に書き込まれる度に、ビット線方向のパリティビットを算出し、算出したパリティビットをバッファメモリ５に格納する。バッファメモリ５は、少なくとも１ページ分の容量を有し、１ページ分のパリティビットを更新して格納する。バッファメモリ５には、書き換え可能回数が多いＲｅＲＡＭを用いることが好ましい。
【０１０５】
ページＲＡＩＤ部２０は、ユーザデータの書き込みが完了すると、バッファメモリ５に格納しているパリティビットを書き込みが完了したユーザデータの後のページに書き込む。パリティビットは、最後のページ（一番ページ番号の大きいページ）に書き込まれる場合もあるが、最後のページに限るものではなく、最後から２番目のページやその他のページに書き込まれる場合もある。また、パリティビットの書き込みは１ページに限るものではなく、複数のページにパリティビットを書き込んでもよい。
【０１０６】
ページＲＡＩＤ部２０は、ユーザデータの書き込みを完了するまでに、バッファメモリ５を、最大で（ページ数−１）回更新する。ここで、ページ数とは、ブロック内におけるページの数である。図２２に示す例においては、１つのビット線にメモリセルが１２８個あり、それぞれのメモリセルが２ページずつのページを有するため、ページ数は２５６である。
【０１０７】
ＮＡＮＤブロックが４ｋ回書き換え可能である場合、バッファメモリ５は、４ｋラ２５５≒１０６回程度の書き換えが可能であることを要求されるが、バッファメモリ５にＲｅＲＡＭを採用すれば、ＲｅＲＡＭは書き換え可能回数が多いため対応可能である。
【０１０８】
また、ページＲＡＩＤ部２０は、頻繁にバッファメモリ５への書き込みをするため、書き込みアクセス時間の観点から、書き込み速度が速いことが好ましい。この点からも、バッファメモリ５にＲｅＲＡＭを採用することが好ましい。
【０１０９】
図２３Ａは、横軸をバッファメモリ５の許容書き換え回数、縦軸をユーザメモリに対して必要とされるバッファメモリ５の比としたグラフである。図２３Ａに示すように、ＲｅＲＡＭは、ＳＬＣ  ＮＡＮＤに比べて、書き換え可能回数が約１００倍であるので、必要とされるバッファ比が約１００分の１である。また、バッファメモリ５にＲｅＲＡＭを採用した場合、ユーザメモリに対して必要とされる容量は０．１％以下である。
【０１１０】
図２３Ｂは、横軸をエラー訂正前のＢＥＲ、縦軸をエラー訂正後のＢＥＲとしたグラフである。図２３Ｂに示すように、エラー訂正後のＢＥＲとして市場で要求されるレベルは、１０−１５である。１ｋバイトあたり４０ビットを訂正するという前提で検討すると、ページＲＡＩＤを適用することにより、許容できるＢＥＲが４５％増大する。ここで、許容できるＢＥＲとは、エラー訂正後に１０−１５のＢＥＲを達成可能なエラー訂正前のＢＥＲである。
【０１１１】
［エラーマスキング］
図２４に、ＮＡＮＤフラッシュメモリにおいてデータ保持エラーが発生する様子を示す。データ保持エラーは、フローティングゲートから電子が漏れ出すことなどにより発生する。図２４に示す例においては、データの書き込みから１００日経過すると、左から３番目および右から３番目のメモリセルにおいて、もともと”０”であったデータが”１”になるというエラーが発生している。一旦エラーが発生した位置においては、エラーが回復することはないため、２００日経過後においても左から３番目のメモリセルと右から３番目のメモリセルは、エラーが発生した状態のままである。図２４に示す例においては、２００日経過後に、さらに、右から２番目のデータも”０”であったデータが”１”になるというエラーが発生している。
【０１１２】
制御装置２は、ＮＡＮＤフラッシュメモリの上記のようなデータ保持エラーの特性を鑑みて、エラー訂正復号を効率的に実行する。エラーマスキングにおいては、制御装置２は、エラー書き込みシーケンスとエラーマスキングシーケンスの２つのシーケンスを実行する。それぞれのシーケンスについて、以下に説明する。
【０１１３】
図２５は、エラー書き込みシーケンスのフローチャートである。
【０１１４】
エラー訂正復号部５０は、エラー訂正符号化されたデータを読み出す（ステップＳ２０１）。エラー訂正復号部５０は、読み出したデータに対しエラー訂正復号を実行し、エラー訂正復号後のデータを出力する。この際、エラー訂正復号部５０は、どの位置のメモリセルでエラーが起こったかの情報（以下、「エラー位置情報」と称する）を取得する（ステップＳ２０２）。
【０１１５】
エラーマスキング部６０は、エラー訂正復号部５０からエラー位置情報を取得し、取得したエラー位置情報を圧縮する（ステップＳ２０３）。エラーマスキング部６０が実行する圧縮方法の一例については後述する。なお、エラーマスキング部６０は、他の方法でエラー位置情報を取得することもできる。例えば、エラーマスキング部６０は、信頼性の高いメモリ（例えば、バッファメモリ５）に、別途、書き込んだデータと、プライマリメモリ３またはミラーメモリ４などから読み出したデータとを比較することによりエラー位置情報を取得することもできる。
【０１１６】
エラーマスキング部６０は、圧縮したエラー位置情報をバッファメモリ５に格納する（ステップＳ２０４）。
【０１１７】
図２６は、エラーマスキングシーケンスのフローチャートである。
【０１１８】
エラーマスキング部６０は、バッファメモリ５から圧縮された以前のエラー位置情報を読み出す（ステップＳ３０１）。エラーマスキング部６０は、圧縮されているエラー位置情報を解凍する（ステップＳ３０２）。
【０１１９】
エラー訂正復号部５０は、エラー位置情報をエラーマスキング部６０から取得し、データ内のエラーを削除する（ステップＳ３０３）。エラー訂正復号部５０は、エラー訂正復号を実行する（ステップＳ３０４）。エラー訂正復号部５０は、エラー訂正復号したデータを出力する（ステップＳ３０５）。
【０１２０】
制御装置２は、エラー書き込みシーケンスとエラーマスキングシーケンスとを適切なタイミングで実行することにより、エラーマスキングを効果的に実行することができる。例えば、データ書き込み後、所定の時間までのデータ読み出し時においては、エラー書き込みシーケンスを実行し、所定の時間後のデータ読み出し時においては、エラーマスキングシーケンスを実行することとしてもよい。また、制御装置２は、所定の時間後のデータ読み出し時においては、エラー書き込みシーケンスとエラーマスキングシーケンスを両方実行することとしてもよい。
【０１２１】
図２７に、エラーマスキング部６０がエラー位置情報を圧縮する一例を示す。通常、メモリセルにおいてエラーが発生する確率は小さいため、エラーマスキング部６０は、これを利用して効率的にエラー位置情報を圧縮することができる。エラー位置情報は、例えば、エラーのない位置を”０”、エラーの発生している位置を”１”とするテーブルであるが、通常、エラーの発生率は低いため、エラー位置情報は、ほとんどの位置で”０”となり、稀に、”１”となる。
【０１２２】
エラーマスキング部６０は、このように特定の情報が連続して続くようなエラー位置情報を、例えばランレングス圧縮（Run Length Encoding）により圧縮することで効率的に圧縮することができる。例えば、ＢＥＲが１％の場合、ランレングス圧縮によりデータ量を１６％に低減することができる。なお、ランレングス圧縮は一例であり、他の圧縮方法を用いてもよい。
【０１２３】
図２８に、ＢＥＲについて、エラーマスキングを適用した場合と、エラーマスキングを適用しない場合とを比較したグラフを示す。図２８に示すように、エラーマスキングシーケンスにおいて、エラーマスキングを適用することにより、８５℃にしてから２００時間経過後の比較でＢＥＲが６７％改善し、８５℃にしてから３５０時間経過後の比較でＢＥＲが５５％改善した。
【０１２４】
なお、エラーマスキング部６０は、エラー位置情報を圧縮するものとして説明したが、これは必須ではない。エラーマスキング部６０は、エラー位置情報を圧縮せずにバッファメモリ５に格納してもよい。
【０１２５】
また、上記説明においては、エラー位置情報がバッファメモリ５に格納されるものとして説明したが、これは一例である。エラー位置情報は、プライマリメモリ３やミラーメモリ４など他のメモリに格納してもよい。
【０１２６】
［測定結果］
本願で説明した逆ミラーリング、エラー低減、ページＲＡＩＤおよびエラーマスキングを適用すると、データ保持ＢＥＲにおいて、許容できるＢＥＲ（ＡＢＥＲ：Acceptable BER）が６．２倍になる。図２９に示すように、これは、許容できる書き換え回数が２倍になったこと、および、許容できるデータ保持時間が３４倍になったことに相当する。
【０１２７】
また、本願で説明した逆ミラーリング、エラー低減、ページＲＡＩＤおよびエラーマスキングを適用すると、書き込みＢＥＲにおいて、許容できるＢＥＲが３２倍になる。図３０に示すように、これは、許容できる書き換え回数が４．２倍になったことに相当する。
【０１２８】
図３１に、図２９および３０で説明した数値を表にまとめて示す。
【０１２９】
上述したように、本発明に係る半導体記憶装置は、許容できるＢＥＲを改善することにより、信頼性を高め、かつ、１つの階層でＳＳＤを効率的に制御し信頼性を向上させることができる。
【０１３０】
また、本発明に係る半導体記憶装置は、逆ミラーリングを適用し、プライマリメモリ３とミラーメモリ４のうちの、ＢＥＲが小さいメモリからデータを読み出すことにより、ワーストＢＥＲを改善することができる。
【０１３１】
また、本発明に係る半導体記憶装置は、エラー低減を適用し、プライマリメモリ３とミラーメモリ４から読み出したデータが一致しない場合は、ＮＡＮＤフラッシュメモリにおけるエラー方向の非対称性を利用して正しいデータを推定することにより、ワーストＢＥＲを改善することができる。
【０１３２】
また、本発明に係る半導体記憶装置は、ページＲＡＩＤを適用し、ビット線方向にもパリティビットを付加することにより、誤り訂正能力を向上させることができる。
【０１３３】
また、本発明に係る半導体記憶装置は、エラーマスキングを適用し、以前にデータを読み出した際のエラー位置情報を利用することにより、ワーストＢＥＲを改善することができる。
【０１３４】
本発明を諸図面や実施例に基づき説明してきたが、当業者であれば本開示に基づき種々の変形や修正を行うことが容易であることに注意されたい。従って、これらの変形や修正は本発明の範囲に含まれることに留意されたい。
【０１３５】
例えば、本発明の実施形態はＮＡＮＤフラッシュメモリを例に挙げて説明したが、本発明はこれに限るものではなく、同様の特性を示すメモリであれば他のメモリであってもよい。
【０１３６】
また、ＮＡＮＤフラッシュメモリとして、１メモリセルあたり２ビットのＭＬＣでページ番号が０から２５５のＮＡＮＤフラッシュメモリを例に挙げて説明したが、本発明はこれに限るものではなく、他の構成のＮＡＮＤフラッシュメモリであってもよい。
【０１３７】
また、逆ミラーリング、エラー低減、ページＲＡＩＤおよびエラーマスキング全てを適用可能な装置構成とし、全てを適用した場合を例として説明してきたが、本発明は、いずれか１つまたは２つ以上を適用可能な装置構成とし、いずれか１つまたは２つ以上を適用する制御としてもよい。この場合、当業者であれば技術常識にしたがって不要なブロックを省略することができる。例えば、ページＲＡＩＤのみを適用する場合は、ミラーリングは必須ではないため、ミラーメモリ４は省略することができる。また、エラーマスキングのみを適用する場合も同様に、ミラーリングは必須ではないため、ミラーメモリ４は省略することができる。
【０１３８】
また、本発明は、１つの階層でＳＳＤを制御することができるが、複数の階層で構成される構成に対しても適用可能である。
【符号の説明】
【０１３９】
１  ホスト装置
２  制御装置
３  プライマリメモリ
４  ミラーメモリ
５  バッファメモリ
１０  エラー訂正符号化部
２０  ページＲＡＩＤ部
３０  逆ミラー部
３１  入力部
３２  プライマリ出力部
３３  変換部
３４  ミラー出力部
４０  エラー低減部
４１  プライマリ入力部
４２  ミラー入力部
４３  ビット再反転部
４４  判定部
５０  エラー訂正復号部
６０  エラーマスキング部
７０  シフトミラー部
７１  入力部
７２  プライマリ出力部
７３  シフト出力部
【図１】
2014083811.tif 000003
【図２】
2014083811.tif 000004
【図３】
2014083811.tif 000005
【図４】
2014083811.tif 000006
【図５】
2014083811.tif 000007
【図６】
2014083811.tif 000008
【図７Ａ】
2014083811.tif 000009
【図７Ｂ】
2014083811.tif 000010
【図８Ａ】
2014083811.tif 000011
【図８Ｂ】
2014083811.tif 000012
【図９】
2014083811.tif 000013
【図１０】
2014083811.tif 000014
【図１１】
2014083811.tif 000015
【図１２】
2014083811.tif 000016
【図１３】
2014083811.tif 000017
【図１４Ａ】
2014083811.tif 000018
【図１４Ｂ】
2014083811.tif 000019
【図１５Ａ】
2014083811.tif 000020
【図１５Ｂ】
2014083811.tif 000021
【図１６】
2014083811.tif 000022
【図１７】
2014083811.tif 000023
【図１８】
2014083811.tif 000024
【図１９】
2014083811.tif 000025
【図２０Ａ】
2014083811.tif 000026
【図２０Ｂ】
2014083811.tif 000027
【図２１Ａ】
2014083811.tif 000028
【図２１Ｂ】
2014083811.tif 000029
【図２２】
2014083811.tif 000030
【図２３Ａ】
2014083811.tif 000031
【図２３Ｂ】
2014083811.tif 000032
【図２４】
2014083811.tif 000033
【図２５】
2014083811.tif 000034
【図２６】
2014083811.tif 000035
【図２７】
2014083811.tif 000036
【図２８】
2014083811.tif 000037
【図２９】
2014083811.tif 000038
【図３０】
2014083811.tif 000039
【図３１】
2014083811.tif 000040
【図３２】
2014083811.tif 000041
【手続補正書】
【提出日】平成27年2月24日(2015.2.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プライマリメモリと、前記プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、バッファメモリとのうちの少なくとも１つのメモリと、
前記少なくとも１つのメモリを制御して、前記少なくとも１つのメモリにデータを格納し、前記少なくとも１つのメモリからデータを読み出す制御装置と
を備える半導体記憶装置。
【請求項２】
請求項１に記載の半導体記憶装置において、前記制御装置は、
受け取ったデータを前記プライマリメモリおよび前記ミラーメモリに格納する逆ミラー部であって、
前記プライマリメモリには受け取った前記データをそのまま格納し、
前記ミラーメモリには、受け取った前記データの順番を変更し、ビットを反転させて格納する逆ミラー部と、
前記プライマリメモリおよび前記ミラーメモリからデータを読み出すエラー低減部であって、
前記プライマリメモリからデータを読み出して第１のデータとし、
前記ミラーメモリから、前記第１のデータに対応するデータを読み出し、ビットを反転させて第２のデータとし、
前記第１のデータと前記第２のデータとが一致する場合は、前記第１のデータを出力し、
前記第１のデータと前記第２のデータとが一致しない場合は、前記第１のデータと前記第２のデータのいずれかで、支配的な方向のビットエラーが発生したものと推定して、前記第１のデータを前記プライマリメモリのどの位置から読み出したかに基づいて正しいデータを推定し、正しいと推定したデータを出力するエラー低減部と、
を備える半導体記憶装置。
【請求項３】
プライマリメモリと、
前記プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、
受け取ったデータを前記プライマリメモリおよび前記ミラーメモリに格納する制御装置であって、
前記プライマリメモリには受け取った前記データをそのまま格納し、
前記ミラーメモリには、受け取った前記データを格納するページを所定の規則に基づいて制御して、前記データを格納する制御装置と
を備える半導体記憶装置。
【請求項４】
プライマリメモリと、
前記プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、
受け取ったデータを前記プライマリメモリおよび前記ミラーメモリに格納する逆ミラー部であって、
前記プライマリメモリには受け取った前記データをそのまま格納し、
前記ミラーメモリには、受け取った前記データの順番を変更して格納する逆ミラー部と
を備える半導体記憶装置。
【請求項５】
プライマリメモリと、
前記プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、
受け取ったデータを前記プライマリメモリおよび前記ミラーメモリに格納するシフトミラー部であって、
前記プライマリメモリには受け取った前記データをそのまま格納し、
前記ミラーメモリには、受け取った前記データを格納するページをシフトさせて格納するシフトミラー部と
を備える半導体記憶装置。
【請求項６】
プライマリメモリと、
前記プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、
前記プライマリメモリおよび前記ミラーメモリからデータを読み出すエラー低減部であって、
前記プライマリメモリからデータを読み出して第１のデータとし、
前記ミラーメモリから、前記第１のデータに対応するデータを読み出して第２のデータとし、
前記第１のデータと前記第２のデータとが一致する場合は、前記第１のデータを出力し、
前記第１のデータと前記第２のデータとが一致しない場合は、前記第１のデータと前記第２のデータのいずれかで、支配的な方向のビットエラーが発生したものと推定して得られるデータを出力するエラー低減部と
を備える半導体記憶装置。
【請求項７】
バッファメモリと、
ホスト装置から受け取ったデータをエラー訂正符号化するエラー訂正符号化部と、
ページ単位のデータが前記エラー訂正符号化部に書き込まれる度に、ビット線方向のパリティビットを算出して前記バッファメモリに格納するページＲＡＩＤ部と
を備える半導体記憶装置。
【請求項８】
受け取ったデータをエラー訂正復号するエラー訂正復号部と、
前記エラー訂正復号部から、エラー訂正復号の際に取得されたエラー位置情報を受け取るエラーマスキング部であって、
前記エラー位置情報をメモリに格納し、
前記エラー訂正復号部がデータをエラー訂正復号する際に、前記メモリから以前の前記エラー位置情報を読み出して、前記エラー訂正復号部に提供するエラーマスキング部とを備える半導体記憶装置。
【請求項９】
プライマリメモリと、当該プライマリメモリに格納されるデータに対応するデータが格納されるミラーメモリと、バッファメモリとのうちの少なくとも１つのメモリを備える半導体記憶装置の制御方法であって、
前記少なくとも１つのメモリを制御して、前記少なくとも１つのメモリにデータを格納する格納ステップと、
前記少なくとも１つのメモリを制御して、前記少なくとも１つのメモリからデータを読み出す読み出しステップと
を含む半導体記憶装置の制御方法。
【請求項１０】
請求項１に記載の半導体記憶装置において、前記制御装置は、
ホスト装置から受け取ったデータをエラー訂正符号化するエラー訂正符号化部と、
ページ単位のデータが前記エラー訂正符号化部に書き込まれる度に、ビット線方向のパリティビットを算出して前記バッファメモリに格納するページＲＡＩＤ部と、
前記ページＲＡＩＤ部から受け取ったデータを前記プライマリメモリおよび前記ミラーメモリに格納する逆ミラー部であって、
前記プライマリメモリには受け取った前記データをそのまま格納し、
前記ミラーメモリには、受け取った前記データの順番を変更して格納する逆ミラー部と、
前記プライマリメモリおよび前記ミラーメモリからデータを読み出すエラー低減部であって、
前記プライマリメモリからデータを読み出して第１のデータとし、
前記ミラーメモリから、前記第１のデータに対応するデータを読み出して第２のデータとし、
前記第１のデータと前記第２のデータとが一致する場合は、前記第１のデータを出力し、
前記第１のデータと前記第２のデータとが一致しない場合は、前記第１のデータと前記第２のデータのいずれかで、支配的な方向のビットエラーが発生したものと推定して得られるデータを出力するエラー低減部と、
前記エラー低減部から受け取ったデータをエラー訂正復号するエラー訂正復号部と、
前記エラー訂正復号部から、エラー訂正復号の際に取得されたエラー位置情報を受け取るエラーマスキング部であって、
前記エラー位置情報を、前記バッファメモリ、前記プライマリメモリまたは前記ミラーメモリに格納し、
前記エラー訂正復号部がデータをエラー訂正復号する際に、前記バッファメモリ、前記プライマリメモリまたは前記ミラーメモリから前記エラー位置情報を読み出して、前記エラー訂正復号部に提供するエラーマスキング部と
を備え、
前記プライマリメモリおよび前記ミラーメモリは、多値のフラッシュメモリである半導体記憶装置。
【請求項１１】
請求項１に記載の半導体記憶装置において、前記プライマリメモリおよび前記ミラーメモリは、多値のフラッシュメモリである半導体記憶装置。
【請求項１２】
請求項２に記載の半導体記憶装置において、前記制御装置は、さらに、
ホスト装置から受け取ったデータをエラー訂正符号化するエラー訂正符号化部と、
ページ単位のデータが前記エラー訂正符号化部に書き込まれる度に、ビット線方向のパリティビットを算出して前記バッファメモリに格納するページＲＡＩＤ部と、
前記エラー低減部から受け取ったデータをエラー訂正復号するエラー訂正復号部と、
前記エラー訂正復号部から、エラー訂正復号の際に取得されたエラー位置情報を受け取るエラーマスキング部であって、
前記エラー位置情報を、前記バッファメモリ、前記プライマリメモリまたは前記ミラーメモリに格納し、
前記エラー訂正復号部がデータをエラー訂正復号する際に、前記バッファメモリ、前記プライマリメモリまたは前記ミラーメモリから前記エラー位置情報を読み出して、前記エラー訂正復号部に提供するエラーマスキング部と
を備える半導体記憶装置。
【国際調査報告】
2014083811.tif 000042
2014083811.tif 000043
2014083811.tif 000044
2014083811.tif 000045