(57)【要約】【課題】主記憶領域と冗長領域とを有する半導体記憶装置において、あるブロックが不良ブロックとなった場合、不良ブロックとされたブロックを再活用できるようにする。【解決手段】記憶領域と冗長領域とを有する半導体記憶装置において、メモリ部における不良ブロックを検出した場合、不良ブロックとして検出したブロックにおけるデータの格納方式を第１の格納方式から一つのメモリ素子当たりに格納するデータのビット数が少ない第２の格納方式に切り替えて、不良ブロックとして検出したブロックに格納されていたデータの内の一部のデータをそのブロックに第２の格納方式で格納し、残りのデータを冗長領域のブロックに格納するようにして、不良ブロックとして検出したブロックを破棄せずに使用する。【選択図】図１
2018073240.tif 000002
【特許請求の範囲】
【請求項１】
記憶領域と冗長領域とを有するメモリ部の制御を行う制御回路であって、
前記メモリ部における不良ブロックを検出する検出部と、
前記検出部が前記不良ブロックを検出した場合、前記不良ブロックとして検出した第１のブロックにおけるデータの格納方式を第１の格納方式から前記第１の格納方式よりも一つのメモリ素子当たりに格納するデータのビット数が少ない第２の格納方式に切り替えて、前記第１の格納方式で前記第１のブロックに格納されていたデータの内の一部のデータを前記第２の格納方式で前記第１のブロックに格納し、前記第１の格納方式で前記第１のブロックに格納されていたデータの残りを前記冗長領域の第２のブロックに格納する制御部とを有することを特徴とする制御回路。
【請求項２】
前記制御部は、前記第１の格納方式で前記第１のブロックに格納されていたすべてのデータを前記冗長領域の前記第２のブロック及び第３のブロックに書き出し、前記第１のブロックにおけるデータの格納方式を前記第１の格納方式から前記第２の格納方式に切り替えた後に、前記冗長領域の前記第３のブロックに書き出したデータを前記第２の格納方式で前記第１のブロックに書き戻すことを特徴とする請求項１記載の制御回路。
【請求項３】
前記第２の格納方式は、前記第１の格納方式よりも一つのメモリ素子当たりに格納するデータのビット数が１ビット少ない格納方式であることを特徴とする請求項１又は２記載の制御回路。
【請求項４】
前記第１の格納方式での前記冗長領域の１つのブロックの記憶容量が、前記第１の格納方式での前記記憶領域の１つのブロックの記憶容量の１／２であり、
前記制御部は、前記冗長領域のブロックには前記第１の格納方式でデータを格納することを特徴とする請求項１〜３の何れか１項に記載の制御回路。
【請求項５】
データの格納方式を前記第２の格納方式に切り替えた前記第１のブロックを前記検出部が前記不良ブロックとして検出した場合、前記制御部は、前記第１のブロックに格納されていたすべてのデータを前記冗長領域のブロックに格納し、前記第１のブロックを使用不可のブロックにすることを特徴とする請求項１〜４の何れか１項に記載の制御回路。
【請求項６】
データの格納方式を前記第２の格納方式に切り替えた前記第１のブロックを前記検出部が前記不良ブロックとして検出した場合、前記制御部は、前記第１のブロックにおけるデータの格納方式を前記第２の格納方式から前記第２の格納方式よりも一つのメモリ素子当たりに格納するデータのビット数が少ない第３の格納方式に切り替えて、前記第２の格納方式で前記第１のブロックに格納されていたデータの一部のデータを前記第３の格納方式で前記第１のブロックに格納し、前記第２の格納方式で前記第１のブロックに格納されていたデータの残りを前記冗長領域の第３のブロックに格納することを特徴とする請求項１記載の制御回路。
【請求項７】
前記第１の格納方式での前記冗長領域の１つのブロックの記憶容量が、前記第１の格納方式での前記記憶領域の１つのブロックの記憶容量の１／４であることを特徴とする請求項６記載の制御回路。
【請求項８】
記憶領域と冗長領域とを有するメモリ部と、
前記メモリ部の制御を行う制御回路とを有し、
前記制御回路は、
前記メモリ部における不良ブロックを検出する検出部と、
前記検出部が前記不良ブロックを検出した場合、前記不良ブロックとして検出した第１のブロックにおけるデータの格納方式を第１の格納方式から前記第１の格納方式よりも一つのメモリ素子当たりに格納するデータのビット数が少ない第２の格納方式に切り替えて、前記第１の格納方式で前記第１のブロックに格納されていたデータの内の一部のデータを前記第２の格納方式で前記第１のブロックに格納し、前記第１の格納方式で前記第１のブロックに格納されていたデータの残りを前記冗長領域の第２のブロックに格納する制御部とを有することを特徴とする半導体記憶装置。
【請求項９】
記憶領域と冗長領域とを有するメモリ部を備えた半導体記憶装置の制御方法であって、
前記半導体記憶装置の制御回路が、前記メモリ部における不良ブロックの検出を行い、
前記不良ブロックを検出した場合、前記制御回路が、前記不良ブロックとして検出した第１のブロックにおけるデータの格納方式を第１の格納方式から前記第１の格納方式よりも一つのメモリ素子当たりに格納するデータのビット数が少ない第２の格納方式に切り替えて、前記第１の格納方式で前記第１のブロックに格納されていたデータの内の一部のデータを前記第２の格納方式で前記第１のブロックに格納し、前記第１の格納方式で前記第１のブロックに格納されていたデータの残りを前記冗長領域の第２のブロックに格納することを特徴とする半導体記憶装置の制御方法。
【請求項１０】
前記不良ブロックを検出した場合、前記制御回路が、前記第１の格納方式で前記第１のブロックに格納されていたすべてのデータを前記冗長領域の前記第２のブロック及び第３のブロックに書き出し、
前記書き出しを行った後、前記制御回路が、前記第１のブロックにおけるデータの格納方式を前記第１の格納方式から前記第２の格納方式に切り替え、
前記データの格納方式の切り替えを行った後に、前記制御回路が、前記冗長領域の前記第３のブロックに書き出したデータを前記第２の格納方式で前記第１のブロックに書き戻すことを特徴とする請求項９記載の半導体記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御回路、半導体記憶装置、及び半導体記憶装置の制御方法に関する。
【背景技術】
【０００２】
不揮発性メモリは、サーバ装置、パーソナルコンピュータ、モバイル機器やＳＳＤ（Solid State Drive）等に代表されるストレージ機器等で使用されている。不揮発性メモリには、フラッシュメモリ、強誘電体メモリ（Ferroelectric Random Access Memory：ＦｅＲＡＭ）、磁気抵抗メモリ（Magnetoresistive Random Access Memory：ＭＲＡＭ）等があり、例えばフラッシュメモリは、ＳＳＤ内部に実装され電気的にデータの記録や読み出しを行っている。フラッシュメモリを用いたＳＳＤは、消費電力が少なく耐衝撃性に優れ、装置を小型、薄型、軽量にすることが可能であるため、ストレージシステムとして近年多くの装置で採用されている。
【０００３】
不揮発性メモリ素子の一例として、フラッシュメモリのメモリ素子の構成例を図７（Ａ）に示す。基板７０１にソース７０２及びドレイン７０３が形成され、その上方に絶縁層７０４を介してフローティングゲート７０５が形成されている。また、フローティングゲート７０５上に絶縁層７０４を介して制御ゲート７０６が形成されている。このようにフラッシュメモリのメモリ素子は、フローティングゲートを有するトランジスタにより構成され、ソース電圧Ｖｓ、ドレイン電圧Ｖｄ、及びゲート電圧Ｖｇを制御してフローティングゲート７０５に対する電子の注入若しくは引き抜きを行いトランジスタのしきい値電圧を制御することにより、データの記憶が実現される。
【０００４】
フラッシュメモリのメモリ素子におけるしきい値電圧Ｖｔｈの分布例を図７（Ｂ）に示す。図７（Ｂ）において、横軸はしきい値電圧であり、縦軸は素子数である。フラッシュメモリのメモリ素子は、データの書き込み及び消去を繰り返す毎に絶縁層７０４の破壊が進み、しきい値電圧Ｖｔｈのばらつきが大きくなる。実線７１０Ａ、７１１Ａに示すように、データの書き込み回数が少なく、絶縁層７０４がほとんど破壊されていない状態では、しきい値電圧Ｖｔｈのばらつきは小さい。
【０００５】
その後、データの書き込み及び消去が繰り返されて絶縁層７０４の破壊が進むと、破線７１０Ｂ、７１１Ｂに示すようにしきい値電圧Ｖｔｈのばらつきが大きくなる。そして、異なるデータのしきい値電圧Ｖｔｈに重なり（７１２）が生じると、正確なデータの判定ができなくなり不良となる。このようにフラッシュメモリはデータの書き込みを行う毎にメモリ素子が劣化するため、磁気ディスクと比較すると書き換え寿命が短い。そのため、ＳＳＤ等では、各メモリ素子の書き込み回数が平均分散化するように、ＳＳＤに搭載されたコントローラがウェアレベリングと呼ばれる制御を行っている。
【０００６】
また、一つのメモリ素子に２値（１ビット）のデータを格納するＳＬＣ（Single Level Cell）方式と比較して同一の素子数でより大きい記憶容量を得られるコストメリットの観点から、一つのメモリ素子に３値以上の多ビットのデータを格納するＭＬＣ（Multiple Level Cell）方式が適用されるケースが増えている。以下、本明細書においては便宜的に、一つのメモリ素子に、２値（１ビット）のデータを格納する方式をＳＬＣ方式と称し、４値（２ビット）のデータを格納する方式をＭＬＣ方式と称し、８値（３ビット）のデータを格納する方式をＴＬＣ（Triple Level Cell）方式と称する。例えば、ＴＬＣ方式を適用することで、同一の素子数でＳＬＣ方式を適用した場合と比較して４倍（情報量換算）の容量を実現することが可能となる。
【０００７】
ここで、メモリ素子が微細化され、さらに一つのメモリ素子当たりに格納するデータのビット数が増加すると、メモリ素子に対して許容される書き込み回数が少なくなる。例えば、ある１つの製造プロセスでのメモリ素子に対する書き換え許容回数は、ＳＬＣ方式が最も多く、ＭＬＣ方式、ＴＬＣ方式の順に少なくなる。また、メモリ素子に対するデータの書き込み速度は、しきい値電圧をより細かく制御するためにＴＬＣ方式ではＳＬＣ方式よりも遅い。このように、信頼性や書き込み速度の点ではＳＬＣ方式の方が優れているが、コストメリットの点ではＴＬＣ方式の方が優れているため、近年ではＴＬＣ方式が採用される場合が多い。そして、信頼性や書き込み速度を改善する方法として、前述した書き込み回数の平均分散化処理の他、ガベージコレクションや並列書き換え方式等が採用されている。また、外部からのデータをメモリ内の２値領域に書き込み、その後、メモリ内部でデータを２値領域から多値領域に転送することで外部から見た書き込み速度を改善する技術が提案されている（例えば、特許文献１参照）。
【０００８】
ＳＳＤ等では、各メモリ素子に対する書き込み回数を平均分散化する制御に加え、図８に示すように主記憶領域８０１の他に冗長領域８０２を持たせて、主記憶領域８０１のメモリ素子が寿命を迎える前に冗長領域８０２のメモリ素子と論理的に入れ替える制御を行うものもある。主記憶領域８０１のブロックＢＬＫ１〜ＢＬＫｎの各ブロックと、冗長領域８０２の冗長ブロックＲＢＬＫ１〜ＲＢＬＫ３の各ブロックとの記憶容量は同じであり、この入れ替え制御は通常はブロック単位で行われる。例えば、主記憶領域８０１のブロックＢＬＫ２において、メモリ素子に対する書き込み回数が所定の回数を超えたり、エラー発生回数が増加してきたりした場合に、冗長領域８０２の１つの冗長ブロック（この例では冗長ブロックＲＢＬＫ１）をブロックＢＬＫ２として使用するように制御する。この入れ替え制御を実施した後、主記憶領域８０１のブロックＢＬＫ２は不良ブロックとし、アクセスされることはない。
【０００９】
一つのメモリ素子にｎビットのデータの記憶を行うメモリチップの動作モードを、後天的に不良とされたブロック数が所定のしきい値を超えたときに、全体的に一つのメモリ素子にｎビットのデータを記憶する動作モードからｍビット（ｍ＜ｎ）のデータを記憶する動作モードに切り替える半導体記憶装置が提案されている（例えば、特許文献２参照）。しかし、このように動作モードを切り替えるとメモリチップにおける実記憶容量が（ｍ／ｎ）に低減してしまう。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１１−２８７９３号公報
【特許文献２】特開２００８−１２３３３０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
前述したように記憶領域として主記憶領域の他に冗長領域を有し、主記憶領域のあるブロックが不良ブロックとなった場合、冗長領域における同じサイズの冗長ブロックとの入れ替え制御が行われるが、入れ替えられた主記憶領域の不良ブロックは、入れ替え後に使用されることはない。１つの側面では、本発明の目的は、記憶領域として主記憶領域と冗長領域とを有する半導体記憶装置において、あるブロックが不良ブロックとなった場合、不良ブロックとされたブロックを再活用できるようにすることにある。
【課題を解決するための手段】
【００１２】
制御回路の一態様は、検出部と制御部とを有し、記憶領域と冗長領域とを有するメモリ部の制御を行う。検出部がメモリ部における不良ブロックを検出した場合、制御部が、不良ブロックとして検出した第１のブロックにおけるデータの格納方式を第１の格納方式から一つのメモリ素子当たりに格納するデータのビット数が少ない第２の格納方式に切り替えて、第１のブロックに格納されていたデータの内の一部のデータを第２の格納方式で第１のブロックに格納し、データの残りを冗長領域の第２のブロックに格納する。
【発明の効果】
【００１３】
発明の一態様においては、不良ブロックとして検出したブロックであっても、異なるデータの格納方式に切り替えてデータを格納することが可能となり、不良ブロックとされたブロックを破棄せずに再活用することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態における半導体記憶装置の構成例を示す図である。
【図２】本実施形態におけるコントローラＩＣの構成例を示す図である。
【図３】本実施形態における半導体記憶装置の救済方法の例を説明する図である。
【図４】本実施形態における半導体記憶装置の動作例を示すフローチャートである。
【図５】本実施形態における半導体記憶装置の救済方法の例を説明する図である。
【図６】本実施形態における半導体記憶装置の動作例を示すフローチャートである。
【図７】不揮発性メモリ素子を説明する図である。
【図８】従来の半導体記憶装置の救済方法を説明する図である。
【図９】不揮発性メモリ素子のしきい値電圧分布の例を示す図である。
【発明を実施するための形態】
【００１５】
本発明の実施形態を図面に基づいて説明する。以下では、本発明の一実施形態における半導体記憶装置として、不揮発性メモリの一つであるフラッシュメモリを用いたＳＳＤ（Solid State Drive）を例に説明するが、本発明はＳＳＤに限定されるものではなく、不揮発性メモリを用いた半導体記憶装置に適用可能である。
【００１６】
図９（Ａ）〜図９（Ｃ）は、不揮発性メモリ素子のしきい値電圧分布の例を示す図であり、横軸はしきい値電圧Ｖｔｈを示し、縦軸は素子数を示している。ＳＬＣ方式（Single Level Cell）でのしきい値電圧Ｖｔｈの分布例を図９（Ａ）に示し、ＭＬＣ方式（Multiple Level Cell）でのしきい値電圧Ｖｔｈの分布例を図９（Ｂ）に示し、ＴＬＣ（Triple Level Cell）方式でのしきい値電圧Ｖｔｈの分布例を図９（Ｃ）に示している。ＳＬＣ方式は一つのメモリ素子に２値（１ビット）のデータを格納する方式であり、ＭＬＣ方式は一つのメモリ素子に４値（２ビット）のデータを格納する方式であり、ＴＬＣ方式は一つのメモリ素子に８値（３ビット）のデータを格納する方式である。
【００１７】
図９（Ｃ）に示したＴＬＣ方式において、実線９０１Ａ、９０２Ａに示すように、メモリ素子に対するデータの書き込み回数が少ないときには、しきい値電圧Ｖｔｈのばらつきが小さく、それぞれのデータ値は判定可能である。しかし、その後にデータの書き込み及び消去が繰り返されて、点線９０１Ｂ、９０２Ｂに示すようにしきい値電圧Ｖｔｈのばらつきが大きくなると、正確にデータ値を判定することができなくなってしまう。
【００１８】
また、図９（Ｂ）に示したＭＬＣ方式において、実線９１１Ａ、９１２Ａに示すように、メモリ素子に対するデータの書き込み回数が少ないときには、しきい値電圧Ｖｔｈのばらつきが小さく、それぞれのデータ値は判定可能である。その後にデータの書き込み及び消去が繰り返されて、点線９１１Ｂ、９１２Ｂに示すように、図９（Ｃ）に示した点線９０１Ｂ、９０２Ｂと同じ程度にしきい値電圧Ｖｔｈのばらつきが大きくなっても重なることなく、ＭＬＣ方式ではそれぞれのデータ値は判定可能である。さらに、データの書き込み及び消去が繰り返されて、破線９１１Ｃ、９１２Ｃに示すようにしきい値電圧Ｖｔｈのばらつきが大きくなると、正確にデータ値を判定することができなくなってしまう。
【００１９】
また、図９（Ａ）に示したＳＬＣ方式において、実線９２１Ａ、９２２Ａに示すように、メモリ素子に対するデータの書き込み回数が少ないときには、しきい値電圧Ｖｔｈのばらつきが小さく、それぞれのデータ値は判定可能である。その後にデータの書き込み及び消去が繰り返されて、破線９２１Ｂ、９２２Ｂに示すように、図９（Ｂ）に示した破線９１１Ｃ、９１２Ｃと同じ程度にしきい値電圧Ｖｔｈのばらつきが大きくなっても重なることなく、ＳＬＣ方式ではそれぞれのデータ値は判定可能である。
【００２０】
このようにデータを格納する方式がＴＬＣ方式でデータ値が判定できなくなったとしてもＭＬＣ方式ではデータ値が判定可能な場合があり、さらにＭＬＣ方式でデータ値が判定できなくなったとしてもＳＬＣ方式ではデータ値が判定可能な場合がある。そこで本実施形態では、ＴＬＣ方式でデータを格納しているブロックが不良ブロックとなった場合、そのブロックを破棄せずにＭＬＣ方式でデータを格納するように切り替えて再活用する。また、ＭＬＣ方式でデータを格納しているブロックが不良ブロックとなった場合、そのブロックを破棄せずにＳＬＣ方式でデータを格納するように切り替えて再活用する。つまり、主記憶領域のブロックが不良ブロックとなった場合、そのブロックを破棄せずに一つのメモリ素子当たりに格納するデータのビット数を減らす制御を行うことで使用可能にする。
【００２１】
図１は、本実施形態における半導体記憶装置としてのＳＳＤの構成例を示すブロック図である。本実施形態におけるＳＳＤ１１０は、本実施形態における制御回路としてのコントローラＩＣ１１１とメモリ部１１２とを有する。コントローラＩＣ１１１は、プロセッサ１２０と、例えばＳＡＴＡ（Serial AT Attachment、シリアルＡＴＡ）、ＰＣＩｅ（Peripheral Component Interconnect Express、ＰＣＩエクスプレス）、ＮＶＭｅ（Non-Volatile Memory Express）等の接続インタフェース１３０を介して通信可能に接続されている。コントローラＩＣ１１１は、プロセッサ１２０等からの指示に応じてメモリ部１１２に対するアクセスを実行し、データの書き込み、読み出し、及び消去等を行う。
【００２２】
メモリ部１１２は、複数の不揮発性メモリ素子１１３を有する。メモリ部１１２は、それぞれ複数のブロックで構成される主記憶領域と冗長領域とを記憶領域として有する。メモリ部１１２におけるデータの消去は、ブロック単位で実行される。なお、プロセッサ１２０は、ＳＳＤ１１０に対してアクセスを行うホスト装置の一例として示したものであり、ＳＳＤ１１０が他の装置とインタフェース１３０を介して通信可能に接続されていてもよい。
【００２３】
図２は、本実施形態におけるコントローラＩＣ１１１の構成例を示すブロック図である。コントローラＩＣ１１１は、ホストインタフェース部２０１、メモリ制御部２０２、アドレス変換部２０３、信頼性管理部２０４、エラー訂正・管理部２０５、不良ブロック管理部２０６、データ格納方式管理部２０７、及びバッファメモリコントローラ部２０８を有する。
【００２４】
ホストインタフェース部２０１は、接続インタフェース１３０を介してプロセッサ１２０等のホスト装置とデータ（信号）等をやり取りするインタフェース部である。メモリ制御部２０２は、メモリ部１１２が有する不揮発性メモリ素子１１３とデータ（信号）等をやり取りし、不揮発性メモリ素子１１３に係る制御を行う。
【００２５】
アドレス変換部２０３は、ホストインタフェース部２０１を介して入力される論理アドレスを、メモリ部１１２が有する不揮発性メモリ素子１１３に割り当てた物理アドレスに変換する。つまり、アドレス変換部２０３は、プロセッサ１２０等のホスト装置が出力するアドレスをＳＳＤ１１０内の内部アドレスに変換する。信頼性管理部２０４は、メモリ部１１２に対するアクセスの履歴等に基づいて、メモリ部１１２におけるブロック毎にデータの消去回数（書き換え回数）を管理する。また、信頼性管理部２０４は、メモリ部１１２の各メモリ素子に対する書き込み回数を平均分散化するためのウェアレベリング制御等を行う。
【００２６】
エラー訂正・管理部２０５は、メモリ部１１２から読み出したデータに係るエラー訂正処理を行うとともに、データのエラーが検出されたアドレスやエラーの種類や検出回数等を管理する。なお、エラー訂正処理の内容は、特に限定するものではなく、公知のエラー検出・訂正の方法を適用すればよい。
【００２７】
不良ブロック管理部２０６は、メモリ部１１２における不良ブロックの検出処理を行うとともに、不良ブロック化したブロックを示す情報を管理する。例えば不良ブロック管理部２０６は、不良ブロックとなったブロックであるか否かを示す情報をメモリ部１１２におけるブロック毎に保持する。不良ブロック管理部２０６は、例えば、信頼性管理部２０４が管理しているブロックＢＬＫ１〜ＢＬＫｎの消去回数やエラー訂正・管理部２０５が管理しているエラーの種類や検出回数などのエラー訂正状況等に基づいて、不良ブロックの検出を行う。また、不良ブロックの検出は、これに限らず、例えば不良ブロックになるだろうと判断するための推定論理等を組み込んで行うようにしてもよい。
【００２８】
データ格納方式管理部２０７は、メモリ部１１２におけるブロック毎に、不揮発性メモリ素子１１３に対するデータの格納方式の制御や管理を行う。データ格納方式管理部２０７は、例えば不良ブロックとなったブロックについてデータ格納方式の切り替えやデータ格納方式の切り替えに伴うデータの書き出し及び書き戻しを制御する。バッファメモリコントローラ部２０８は、メモリ部１１２が有する不揮発性メモリ素子１１３に係る書き込みデータや読み出しデータを保持するための図示しないバッファメモリを制御する。
【００２９】
次に、本実施形態におけるＳＳＤ１１０での救済方法の第１の例について、図３及び図４を参照し説明する。図３は、本実施形態におけるＳＳＤ１１０での救済方法の第１の例を説明する図であり、図４は、本実施形態におけるＳＳＤ１１０での救済方法に係る動作例を示すフローチャートである。以下に説明する第１の例は、ＭＬＣ方式でデータを格納しているブロックが不良ブロックとなった場合、そのブロックのデータ格納方式をＭＬＣ方式からＳＬＣ方式に切り替えて使用する例である。
【００３０】
メモリ部１１２は、記憶領域として図３（Ａ）に示すように主記憶領域３０１及び冗長領域３０２を有する。主記憶領域３０１はブロックＢＬＫ１〜ＢＬＫｎを有し、冗長領域３０２は冗長ブロックＲＢＬＫ１〜ＲＢＬＫ６を有するものとする。初期状態において、ブロックＢＬＫ１〜ＢＬＫｎ及び冗長ブロックＲＢＬＫ１〜ＲＢＬＫ６におけるデータの格納方式はＭＬＣ方式であり、一つの不揮発性メモリ素子に４値（２ビット）のデータを格納する。冗長ブロックＲＢＬＫ１〜ＲＢＬＫ６の１つのブロックのサイズ（記憶容量）は、少なくともブロックＢＬＫ１〜ＢＬＫｎの１つのブロックのサイズの１／２以上であり、好ましくはブロックＢＬＫ１〜ＢＬＫｎの１つのブロックのサイズの１／２である。
【００３１】
本実施形態におけるＳＳＤ１１０が動作を開始すると、コントローラＩＣ１１１は、プロセッサ１２０等のホスト装置からの指示に応じてメモリ部１１２に対するアクセスを実行する。また、第１の例では、ＳＳＤ１１０の動作開始に伴って、コントローラＩＣ１１１は、図４に示す救済方法に係る動作を開始する。
【００３２】
ステップＳ４０１にて、コントローラＩＣ１１１は、メモリ部１１２の主記憶領域３０１における不良ブロックの検出の有無を判定し、不良ブロックが検出されたと判定するとステップＳ４０２へ進む。ステップＳ４０２にて、コントローラＩＣ１１１は、不良ブロックとして検出された対象ブロックのデータ格納方式を判定する。この例では、コントローラＩＣ１１１は、対象ブロックのデータ格納方式がＭＬＣ方式であるかＳＬＣ方式であるかを判定する。
【００３３】
ステップＳ４０２において対象ブロックのデータ格納方式がＭＬＣ方式であるとコントローラＩＣ１１１が判定した場合、ステップＳ４０３にて、コントローラＩＣ１１１は、冗長領域３０２の未使用ブロックに対象ブロックのすべてのデータを書き出す。すなわち、コントローラＩＣ１１１は、冗長領域３０２の未使用ブロックの内から２つの冗長ブロックを選択し、不良ブロックとして検出された主記憶領域３０１の対象ブロックに格納されている全データを、選択した冗長ブロックに書き込む。
【００３４】
次に、ステップＳ４０４にて、コントローラＩＣ１１１は、不良ブロックとして検出された対象ブロックのデータを消去し、対象ブロックにおけるデータの格納方式をＭＬＣ方式から、一つの不揮発性メモリ素子に２値（１ビット）のデータを格納するＳＬＣ方式に変更する。続いて、ステップＳ４０５にて、コントローラＩＣ１１１は、ステップＳ４０３において冗長ブロックに書き出した対象ブロックのデータの内の（１／２）のデータを対象ブロックに書き戻す。すなわち、コントローラＩＣ１１１は、ステップＳ４０３においてデータの書き込みを行った２つの冗長ブロックの内の１つの冗長ブロックから対象ブロックへデータを書き戻して、その冗長ブロックを未使用状態にする。そして、ステップＳ４０１へ戻る。
【００３５】
また、ステップＳ４０２において対象ブロックのデータ格納方式がＳＬＣ方式であるとコントローラＩＣ１１１が判定した場合、ステップＳ４０６にて、コントローラＩＣ１１１は、冗長領域３０２の未使用ブロックに対象ブロックのすべてのデータを書き出す。すなわち、コントローラＩＣ１１１は、冗長領域３０２の未使用ブロックの内から１つの冗長ブロックを選択し、主記憶領域３０１において不良ブロックとして検出された対象ブロックに格納されている全データを、選択した冗長ブロックに書き込む。次に、ステップＳ４０７にて、コントローラＩＣ１１１は、不良ブロックとして検出された主記憶領域３０１の対象ブロックを不良ブロック化して、以後の使用を不可とする。そして、ステップＳ４０１へ戻る。
【００３６】
例えば、データ格納方式がＭＬＣ方式である図３（Ａ）に示した主記憶装置３０１のブロックＢＬＫ２が不良ブロックとなったとする。このとき、図３（Ｂ）に示すようにコントローラＩＣ１１１は、主記憶装置３０１のブロックＢＬＫ２に格納されているデータを、例えば冗長領域３０２の冗長ブロックＲＢＬＫ１及びＲＢＬＫ２に書き出し、主記憶装置３０１のブロックＢＬＫ２におけるデータの格納方式をＳＬＣ方式に変更する。その後、コントローラＩＣ１１１は、冗長領域３０２の冗長ブロックＲＢＬＫ２に書き出したデータを主記憶装置３０１のブロックＢＬＫ２に書き戻す。
【００３７】
このようにＳＳＤ１１０のコントローラＩＣ１１１は、不良ブロックとなったブロックにおけるデータ格納方式をＭＬＣ方式からＳＬＣ方式に切り替えて、不良ブロックとなったブロックに格納されていたデータの内の一部のデータをそのブロックにＳＬＣ方式で格納し、残りのデータを冗長領域３０２の冗長ブロックにＭＬＣ方式で格納する。したがって、不良ブロックとして検出されたブロックであっても、ブロックを破棄せずに再活用することができ、主記憶領域のメモリ素子を有効に使用することができるとともにＳＳＤ１１０の寿命を延ばすことが可能となる。また、不良ブロックとなったブロックに格納されていたデータのうち、ＭＬＣ方式からＳＬＣ方式に切り替えることによってあふれたデータだけを冗長領域の冗長ブロックに格納すればよいので、従来と比較して救済に係る冗長領域の使用量を低減することができる。
【００３８】
次に、本実施形態におけるＳＳＤ１１０での救済方法の第２の例について、図５及び図６を参照し説明する。図５は、本実施形態におけるＳＳＤ１１０での救済方法の第２の例を説明する図であり、図６は、本実施形態におけるＳＳＤ１１０での救済方法に係る動作例を示すフローチャートである。以下に説明する第２の例は、ＴＬＣ方式でデータを格納しているブロックが不良ブロックとなった場合、そのブロックのデータ格納方式をＴＬＣ方式からＭＬＣ方式に切り替え、さらにＭＬＣ方式に切り替えたブロックが不良ブロックとなった場合、そのブロックのデータ格納方式をＭＬＣ方式からＳＬＣ方式に切り替えて使用する例である。
【００３９】
メモリ部１１２は、記憶領域として図５（Ａ）に示すように主記憶領域５０１及び冗長領域５０２を有する。主記憶領域５０１はブロックＢＬＫ１〜ＢＬＫｎを有し、冗長領域５０２は冗長ブロックＲＢＬＫ１〜ＲＢＬＫ１２を有するものとする。初期状態において、ブロックＢＬＫ１〜ＢＬＫｎ及び冗長ブロックＲＢＬＫ１〜ＲＢＬＫ１２におけるデータの格納方式はＴＬＣ方式であり、一つの不揮発性メモリ素子に８値（３ビット）のデータを格納する。冗長ブロックＲＢＬＫ１〜ＲＢＬＫ１２の１つのブロックのサイズ（記憶容量）は、少なくともブロックＢＬＫ１〜ＢＬＫｎの１つのブロックのサイズの１／４以上であり、好ましくはブロックＢＬＫ１〜ＢＬＫｎの１つのブロックのサイズの１／４である。
【００４０】
本実施形態におけるＳＳＤ１１０が動作を開始すると、コントローラＩＣ１１１は、プロセッサ１２０等のホスト装置からの指示に応じてメモリ部１１２に対するアクセスを実行する。また、第２の例では、ＳＳＤ１１０の動作開始に伴って、コントローラＩＣ１１１は、図６に示す救済方法に係る動作を開始する。
【００４１】
ステップＳ６０１にて、コントローラＩＣ１１１は、メモリ部１１２の主記憶領域５０１における不良ブロックの検出の有無を判定し、不良ブロックが検出されたと判定するとステップＳ６０２へ進む。ステップＳ６０２にて、コントローラＩＣ１１１は、不良ブロックとして検出された対象ブロックのデータ格納方式を判定する。この例では、コントローラＩＣ１１１は、対象ブロックのデータ格納方式が、ＴＬＣ方式、ＭＬＣ方式、及びＳＬＣ方式の何れであるかを判定する。
【００４２】
ステップＳ６０２において対象ブロックのデータ格納方式がＴＬＣ方式であるとコントローラＩＣ１１１が判定した場合、ステップＳ６０３にて、コントローラＩＣ１１１は、冗長領域５０２の未使用ブロックに対象ブロックのすべてのデータを書き出す。すなわち、コントローラＩＣ１１１は、冗長領域５０２の未使用ブロックの内から４つの冗長ブロックを選択し、不良ブロックとして検出された主記憶領域５０１の対象ブロックに格納されている全データを、選択した冗長ブロックに書き込む。
【００４３】
次に、ステップＳ６０４にて、コントローラＩＣ１１１は、不良ブロックとして検出された対象ブロックのデータを消去し、対象ブロックにおけるデータの格納方式をＴＬＣ方式から、一つの不揮発性メモリ素子に４値（２ビット）のデータを格納するＭＬＣ方式に変更する。続いて、ステップＳ６０５にて、コントローラＩＣ１１１は、ステップＳ６０３において冗長ブロックに書き出した対象ブロックのデータの内の（１／２）のデータを対象ブロックに書き戻す。すなわち、コントローラＩＣ１１１は、ステップＳ６０３においてデータの書き込みを行った４つの冗長ブロックの内の２つの冗長ブロックから対象ブロックへデータを書き戻して、それらの冗長ブロックを未使用状態にする。そして、ステップＳ６０１へ戻る。
【００４４】
また、ステップＳ６０２において対象ブロックのデータ格納方式がＭＬＣ方式であるとコントローラＩＣ１１１が判定した場合、ステップＳ６０６にて、コントローラＩＣ１１１は、冗長領域５０２の未使用ブロックに対象ブロックのすべてのデータを書き出す。すなわち、コントローラＩＣ１１１は、冗長領域５０２の未使用ブロックの内から２つの冗長ブロックを選択し、不良ブロックとして検出された主記憶領域５０１の対象ブロックに格納されている全データを、選択した冗長ブロックに書き込む。
【００４５】
次に、ステップＳ６０７にて、コントローラＩＣ１１１は、不良ブロックとして検出された対象ブロックのデータを消去し、対象ブロックにおけるデータの格納方式をＭＬＣ方式から、一つの不揮発性メモリ素子に２値（１ビット）のデータを格納するＳＬＣ方式に変更する。続いて、ステップＳ６０８にて、コントローラＩＣ１１１は、ステップＳ６０６において冗長ブロックに書き出した対象ブロックのデータの内の（１／２）のデータを対象ブロックに書き戻す。すなわち、コントローラＩＣ１１１は、ステップＳ６０６においてデータの書き込みを行った２つの冗長ブロックの内の１つの冗長ブロックから対象ブロックへデータを書き戻して、その冗長ブロックを未使用状態にする。そして、ステップＳ６０１へ戻る。
【００４６】
また、ステップＳ６０２において対象ブロックのデータ格納方式がＳＬＣ方式であるとコントローラＩＣ１１１が判定した場合、ステップＳ６０９にて、コントローラＩＣ１１１は、冗長領域５０２の未使用ブロックに対象ブロックのすべてのデータを書き出す。すなわち、コントローラＩＣ１１１は、冗長領域５０２の未使用ブロックの内から１つの冗長ブロックを選択し、主記憶領域５０１において不良ブロックとして検出された対象ブロックに格納されている全データを、選択した冗長ブロックに書き込む。次に、ステップＳ６１０にて、コントローラＩＣ１１１は、不良ブロックとして検出された主記憶領域５０１の対象ブロックを不良ブロック化して、以後の使用を不可とする。そして、ステップＳ６０１へ戻る。
【００４７】
例えば、データ格納方式がＴＬＣ方式である図５（Ａ）に示した主記憶装置５０１のブロックＢＬＫ２が不良ブロックとなったとする。このとき、図５（Ｂ）に示すようにコントローラＩＣ１１１は、主記憶装置５０１のブロックＢＬＫ２に格納されているデータを、例えば冗長領域５０２の冗長ブロックＲＢＬＫ１〜ＲＢＬＫ４に書き出し、主記憶装置５０１のブロックＢＬＫ２におけるデータの格納方式をＭＬＣ方式に変更する。その後、コントローラＩＣ１１１は、冗長領域５０２の冗長ブロックＲＢＬＫ３〜ＲＢＬＫ４に書き出したデータを主記憶装置５０１のブロックＢＬＫ２に書き戻す。
【００４８】
さらに、データ格納方式をＭＬＣ方式に切り替えた図５（Ｂ）に示した主記憶装置５０１のブロックＢＬＫ２が不良ブロックとなったとする。このとき、図５（Ｃ）に示すようにコントローラＩＣ１１１は、主記憶装置５０１のブロックＢＬＫ２に格納されているデータを、例えば冗長領域５０２の冗長ブロックＲＢＬＫ３及びＲＢＬＫ４に書き出し、主記憶装置５０１のブロックＢＬＫ２におけるデータの格納方式をＳＬＣ方式に変更する。その後、コントローラＩＣ１１１は、冗長領域５０２の冗長ブロックＲＢＬＫ４に書き出したデータを主記憶装置５０１のブロックＢＬＫ２に書き戻す。
【００４９】
このようにＳＳＤ１１０のコントローラＩＣ１１１は、不良ブロックとなったブロックにおけるデータ格納方式をＴＬＣ方式からＭＬＣ方式に切り替えて、不良ブロックとなったブロックに格納されていたデータの内の一部のデータをそのブロックにＭＬＣ方式で格納し、残りのデータを冗長領域５０２の冗長ブロックにＴＬＣ方式で格納する。さらに、データ格納方式をＭＬＣ方式に切り替えたブロックが不良ブロックとなると、そのブロックにおけるデータ格納方式をＭＬＣ方式からＳＬＣ方式に切り替えて、不良ブロックとなったブロックに格納されていたデータの内の一部のデータをそのブロックにＳＬＣ方式で格納し、残りのデータを冗長領域５０２の冗長ブロックにＴＬＣ方式で格納する。
【００５０】
したがって、第２の例においても、不良ブロックとして検出されたブロックであっても、ブロックを破棄せずに再活用することができ、主記憶領域のメモリ素子を有効に使用することができるとともにＳＳＤ１１０の寿命を延ばすことが可能となる。また、不良ブロックとなったブロックに格納されていたデータのうち、データの格納方式を切り替えることによってあふれたデータだけを冗長領域の冗長ブロックに格納すればよいので、従来と比較して救済に係る冗長領域の使用量を低減することができる。
【００５１】
なお、前述した実施形態では、メモリ素子にデータを格納する方式としてＳＬＣ方式、ＭＬＣ方式、ＴＬＣ方式を例に説明したが、これに限定されるものではない。例えば、一つのメモリ素子に１６値（４ビット）のデータを格納するＱＬＣ（Quadruple Level Cell）方式を採用し、データを格納する方式をＱＬＣ方式→ＴＬＣ方式→ＭＬＣ方式→ＳＬＣ方式と切り替えるようにしてもよい。また、前述した例に限らず、あるブロックが不良ブロックとなった場合に、そのブロックを破棄せずに一つのメモリ素子当たりに格納するデータのビット数を減らして再び使用するように制御を行うことで、不良ブロックとなったブロックを再活用することが可能となる。
【００５２】
また、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
【００５３】
（付記１）
記憶領域と冗長領域とを有するメモリ部の制御を行う制御回路であって、
前記メモリ部における不良ブロックを検出する検出部と、
前記検出部が前記不良ブロックを検出した場合、前記不良ブロックとして検出した第１のブロックにおけるデータの格納方式を第１の格納方式から前記第１の格納方式よりも一つのメモリ素子当たりに格納するデータのビット数が少ない第２の格納方式に切り替えて、前記第１の格納方式で前記第１のブロックに格納されていたデータの内の一部のデータを前記第２の格納方式で前記第１のブロックに格納し、前記第１の格納方式で前記第１のブロックに格納されていたデータの残りを前記冗長領域の第２のブロックに格納する制御部とを有することを特徴とする制御回路。
（付記２）
前記制御部は、前記第１の格納方式で前記第１のブロックに格納されていたすべてのデータを前記冗長領域の前記第２のブロック及び第３のブロックに書き出し、前記第１のブロックにおけるデータの格納方式を前記第１の格納方式から前記第２の格納方式に切り替えた後に、前記冗長領域の前記第３のブロックに書き出したデータを前記第２の格納方式で前記第１のブロックに書き戻すことを特徴とする付記１記載の制御回路。
（付記３）
前記第２の格納方式は、前記第１の格納方式よりも一つのメモリ素子当たりに格納するデータのビット数が１ビット少ない格納方式であることを特徴とする付記１記載の制御回路。
（付記４）
前記第１の格納方式は、一つのメモリ素子に２ビットのデータを格納する方式であり、前記第２の格納方式は、一つのメモリ素子に１ビットのデータを格納する方式であることを特徴とする付記１記載の制御回路。
（付記５）
前記第１の格納方式は、一つのメモリ素子に３ビットのデータを格納する方式であり、前記第２の格納方式は、一つのメモリ素子に２ビットのデータを格納する方式であることを特徴とする付記１記載の制御回路。
（付記６）
前記第１の格納方式での前記冗長領域の１つのブロックの記憶容量が、前記第１の格納方式での前記記憶領域の１つのブロックの記憶容量の１／２であり、
前記制御部は、前記冗長領域のブロックには前記第１の格納方式でデータを格納することを特徴とする付記１記載の制御回路。
（付記７）
前記メモリ部のメモリ素子が不揮発性メモリ素子であることを特徴とする付記１記載の制御回路。
（付記８）
データの格納方式を前記第２の格納方式に切り替えた前記第１のブロックを前記検出部が前記不良ブロックとして検出した場合、前記制御部は、前記第１のブロックに格納されていたすべてのデータを前記冗長領域のブロックに格納し、前記第１のブロックを使用不可のブロックにすることを特徴とする付記１記載の制御回路。
（付記９）
データの格納方式を前記第２の格納方式に切り替えた前記第１のブロックを前記検出部が前記不良ブロックとして検出した場合、前記制御部は、前記第１のブロックにおけるデータの格納方式を前記第２の格納方式から前記第２の格納方式よりも一つのメモリ素子当たりに格納するデータのビット数が少ない第３の格納方式に切り替えて、前記第２の格納方式で前記第１のブロックに格納されていたデータの一部のデータを前記第３の格納方式で前記第１のブロックに格納し、前記第２の格納方式で前記第１のブロックに格納されていたデータの残りを前記冗長領域の第３のブロックに格納することを特徴とする付記１記載の制御回路。
（付記１０）
前記第１の格納方式は、一つのメモリ素子に３ビットのデータを格納する方式であり、前記第２の格納方式は、一つのメモリ素子に２ビットのデータを格納する方式であり、前記第３の格納方式は、一つのメモリ素子に１ビットのデータを格納する方式であることを特徴とする付記９記載の制御回路。
（付記１１）
前記第１の格納方式での前記冗長領域の１つのブロックの記憶容量が、前記第１の格納方式での前記記憶領域の１つのブロックの記憶容量の１／４であることを特徴とする付記９記載の制御回路。
（付記１２）
データの格納方式を前記第３の格納方式に切り替えた前記第１のブロックを前記検出部が前記不良ブロックとして検出した場合、前記制御部は、前記第１のブロックに格納されていたすべてのデータを前記冗長領域のブロックに格納し、前記第１のブロックを使用不可のブロックにすることを特徴とする付記９記載の制御回路。
（付記１３）
記憶領域と冗長領域とを有するメモリ部と、
前記メモリ部の制御を行う制御回路とを有し、
前記制御回路は、
前記メモリ部における不良ブロックを検出する検出部と、
前記検出部が前記不良ブロックを検出した場合、前記不良ブロックとして検出した第１のブロックにおけるデータの格納方式を第１の格納方式から前記第１の格納方式よりも一つのメモリ素子当たりに格納するデータのビット数が少ない第２の格納方式に切り替えて、前記第１の格納方式で前記第１のブロックに格納されていたデータの内の一部のデータを前記第２の格納方式で前記第１のブロックに格納し、前記第１の格納方式で前記第１のブロックに格納されていたデータの残りを前記冗長領域の第２のブロックに格納する制御部とを有することを特徴とする半導体記憶装置。
（付記１４）
記憶領域と冗長領域とを有するメモリ部を備えた半導体記憶装置の制御方法であって、
前記半導体記憶装置の制御回路が、前記メモリ部における不良ブロックの検出を行い、
前記不良ブロックを検出した場合、前記制御回路が、前記不良ブロックとして検出した第１のブロックにおけるデータの格納方式を第１の格納方式から前記第１の格納方式よりも一つのメモリ素子当たりに格納するデータのビット数が少ない第２の格納方式に切り替えて、前記第１の格納方式で前記第１のブロックに格納されていたデータの内の一部のデータを前記第２の格納方式で前記第１のブロックに格納し、前記第１の格納方式で前記第１のブロックに格納されていたデータの残りを前記冗長領域の第２のブロックに格納することを特徴とする半導体記憶装置の制御方法。
（付記１５）
前記不良ブロックを検出した場合、前記制御回路が、前記第１の格納方式で前記第１のブロックに格納されていたすべてのデータを前記冗長領域の前記第２のブロック及び第３のブロックに書き出し、
前記書き出しを行った後、前記制御回路が、前記第１のブロックにおけるデータの格納方式を前記第１の格納方式から前記第２の格納方式に切り替え、
前記データの格納方式の切り替えを行った後に、前記制御回路が、前記冗長領域の前記第３のブロックに書き出したデータを前記第２の格納方式で前記第１のブロックに書き戻すことを特徴とする付記１４記載の半導体記憶装置の制御方法。
【符号の説明】
【００５４】
１１０  ＳＳＤ
１１１  コントローラＩＣ
１１２  メモリ部
１１３  不揮発性メモリ素子
１２０  プロセッサ
１３０  インタフェース
２０１  ホストインタフェース部
２０２  メモリ制御部
２０３  アドレス変換部
２０４  信頼性管理部
２０５  エラー訂正・管理部
２０６  不良ブロック管理部
２０７  データ格納方式管理部
２０８  バッファメモリコントローラ部
【図１】
2018073240.tif 000003
【図２】
2018073240.tif 000004
【図３】
2018073240.tif 000005
【図４】
2018073240.tif 000006
【図５】
2018073240.tif 000007
【図６】
2018073240.tif 000008
【図７】
2018073240.tif 000009
【図８】
2018073240.tif 000010
【図９】
2018073240.tif 000011