(57)【要約】【課題】本発明は、小型化、低価格化が可能で、起動時間、アクセス時間が短い大容量の半導体記憶装置を提供することを目的とする。【解決手段】不揮発性半導体メモリに格納されるデータの誤り検出・訂正を行う誤り訂正回路と、複数のバッファを備え、誤り訂正回路による誤り検出・訂正後のデータの複数のバッファのうち、一つからホストへのインターフェイス制御回路を通じた転送と、誤り訂正回路による誤り検出・訂正のための他のデータの前記不揮発性半導体メモリから前記複数のバッファのうちの他の一つへの転送とを平行に行う。【選択図】図１
2010192002.tif 000002
【特許請求の範囲】
【請求項１】
コントローラと不揮発性メモリとを有し、
前記不揮発性メモリは複数のブロックを有し、夫々のブロックは外部に接続されるホストから供給されるデータを格納する領域と当該データに関する管理情報を格納する領域とを有し、
前記管理情報は、当該管理情報を有するブロックの有効性を示す情報と、当該ブロックに格納されるデータのエラー検出・訂正情報と、当該ブロックの劣化の程度を示す情報と、当該管理情報のエラー検出・訂正情報とを有し、
前記コントローラは、前記当該ブロックの有効性を示す情報に応じて当該ブロックに格納されているデータへのアクセス可否を判断し、当該ブロックに格納されているデータのエラーの有無を前記データのエラー検出・訂正情報を用いて判別し、前記データのエラーを検出した場合は前記当該ブロックの有効性を示す情報を更新し、前記当該ブロックの劣化の程度を示す情報に応じて当該ブロックを継続して使用するか別のブロックに代替するかを判別し、前記管理情報のエラー検出・訂正情報に応じて当該ブロックに格納されている管理情報のエラーの有無を判別することを特徴とする不揮発性半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は電気的に書き換え可能な不揮発性半導体メモリを記憶媒体とする半導体記憶装置にかかり、特に部分的に不良を含み、かつ書き換えを頻繁に行うと不良になる半導体メモリを使用する半導体記憶装置に関する。
【背景技術】
【０００２】
電気的に書き換え可能な不揮発性メモリは、低電力、振動衝撃に対する耐性、高速など、情報機器の記憶装置として他の記憶装置、例えば磁気記憶装置、光ディスク装置等より有利な特徴を持っている。しかしその半面、製造プロセスが複雑であり、また原理上半導体に対して不可逆的な作用を繰り返すことになるため、不良部分の発生や使用上の劣化が著しいという問題がある。そのため製造歩留まりが悪く、高価になり、使用中の信頼性も問題となる。
【０００３】
これを解決するために、メモリの不良部分を使用しないようにあらかじめ登録し、また各データブロックの使用回数を記録して、これが大きくなったら他の領域と入れ替えることにより、使用回数の増大を抑えることにより、寿命を延ばす技術が開発されている。この技術は、例えば特開平６−１２４５９６号公報に開示されている。
【０００４】
この開示技術によれば、論理アドレスと物理アドレスの対比、すなわち、ホストから指定された論理アドレスとメモリ上の物理アドレスの対応を示すアドレス変換テーブルを記録するメモリを備えている。これにより不良領域の物理アドレスはアドレス変換テーブルに不良であることを示すように登録し、ホスト指定の論理アドレスが割り当てられないようにすることにより、不良部分の使用を防ぐ。また、消去回数管理を行い、消去回数が一定の値に達したら、他の領域とデータを入れ替え、同時にアドレス変換テーブル上のアドレス値を書き換えることにより、論理アドレスと物理アドレスの対応を登録し直し、正しい対応が取れるようにする。上記アドレス変換テーブルは使用されている全ての論理アドレス値を登録する。そしてその記憶媒体としてＤＲＡＭやＳＲＡＭなどの高速揮発性メモリを使用している。
【０００５】
高速揮発性メモリを使用する理由は、アドレス変換を高速に行えること、またアドレスの入れ替えが起きたときに、登録を部分的に高速に書き換えることができること、大容量のデータの記憶を比較的安価なメモリで実現できること、などである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平６−１２４５９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記従来技術では、アドレス変換の登録を全ての論理アドレスについて行っているため、大容量の記憶装置となったときには、アドレス変換テーブルの大きさが膨大となり、大容量の登録用メモリが必要となる。また、揮発性メモリであることから、電源を切断するとデータが消えてしまい、電源投入時に全登録値を他の不揮発性メモリから書き込む必要があり、起動時間が長くなるという課題があった。
【０００８】
また、外部の登録用メモリが大容量になるため、部品点数が増加し、装置の小型化や低価格化の妨げになるという課題があった。
【０００９】
また、上記登録用メモリを不揮発性メモリにすると、不揮発性メモリのアクセス時間が一般的に長いため、記憶装置自体のアクセス時間が長くなるという課題があった。
【００１０】
また、揮発性の登録用メモリを電源バックアップするとさらに部品点数が増加し、装置の小型化や低価格化の妨げになるという課題があった。
【００１１】
本発明の目的は、上記課題を解決した、小型化、低価格化が可能で、起動時間、アクセス時間が短い大容量の半導体記憶装置を提供することである。
【００１２】
具体的な本発明の目的は、外部登録用メモリ容量を削減し、あるいは外部登録用メモリをなくし、起動時間、アクセス時間が短い大容量の半導体記憶装置を提供することである。
【００１３】
具体的な本発明の目的は、外部登録用メモリ容量を削減した、あるいは外部登録用メモリをなくした大容量の半導体記憶装置において、起動時間、アクセス時間の短いアクセス方法を提供することである。
【００１４】
本発明の他の目的は、外部登録用メモリ容量を削減した、あるいは外部登録用メモリをなくした大容量の半導体記憶装置において、短い起動時間、アクセス時間を実現するコントローラを提供することである。
【課題を解決するための手段】
【００１５】
本発明に関わる半導体記憶装置は、コントローラと不揮発性メモリとを有し、不揮発性メモリは複数のブロックを有し、夫々のブロックは外部に接続されるホストから供給されるデータを格納する領域と当該データに関する管理情報とを格納する領域とを有し、管理情報は、当該管理情報を有するブロックの有効性を示す情報と、当該ブロックに格納されるデータのエラー検出・訂正情報と、当該ブロックの劣化の程度を示す情報と、当該管理情報のエラー検出・訂正情報とを有し、このコントローラは、当該ブロックの有効性を示す情報に応じて当該ブロックに格納されているデータへのアクセス可否を判断し、当該ブロックに格納されているデータのエラーの有無をデータのエラー検出・訂正情報を用いて判別し、データのエラーを検出した場合は当該ブロックの有効性を示す情報を更新し、当該ブロックの劣化の程度を示す情報に応じて当該ブロックを継続して使用するか別のブロックに代替するかを判別し、管理情報のエラー検出・訂正情報に応じて当該ブロックに格納されている管理情報のエラーの有無を判別することを特徴とする。
【００１６】
また、本発明に関わる別の半導体記憶装置は、コントローラと不揮発性メモリとを有し、不揮発性メモリは複数のブロックを有し、夫々のブロックはデータ格納領域と管理情報格納領域とを有し、コントローラは管理情報として、データのエラー検出・訂正情報と、管理情報自体のエラー検出・訂正情報とを格納可能とすることを特徴とする。
【００１７】
更に、本発明に関わる別の半導体記憶装置は、コントローラと不揮発性メモリとを有し、不揮発性メモリは複数のブロックを有し、夫々のブロックはデータ格納領域と管理情報格納領域とを有し、コントローラは前記データ格納領域に格納されたデータのエラー検出・訂正処理と、管理情報格納領域に格納された管理情報のエラー検出・訂正処理とを行うことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、部分的に不良を含むメモリチップを使用する半導体記憶装置において、アドレスの入れ替えや代替を行ったことによる変換アドレス登録に用いるメモリを容量削減あるいは削除することができ、さらに不良の検索が高速に行える。したがって、アクセスの高速化と、低価格化が可能になる。
【００１９】
また、書き換え回数に制限のある不揮発性メモリを使用し、アドレスを入れ替えても、高速にアドレス検索が可能で、アクセス性能を向上することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施例の半導体記憶装置の全体構成図。
【図２】記憶媒体のメモリマップ。
【図３】ブロック入れ替えの説明図。
【図４】アクセス要求に対するアドレス検索処理のフロー。
【図５】書き込みアクセスにおけるアドレス入れ替え処理のフロー。
【図６】本発明の第２の実施例の半導体記憶装置の全体構成図。
【図７】管理情報領域の格納データ例。
【図８】アクセス箇所の決定をおこなうフローチャート。
【図９】不良登録領域を含むメモリアドレスマップ。
【図１０】アクセスブロックの良不良判定フロー。
【発明を実施するための最良の形態】
【００２１】
本発明の実施例について、以下に図を用いて説明する。
【００２２】
図１は本発明の全体構成図であり、１は本発明の半導体記憶装置の記憶媒体である電気的に書き換え可能な不揮発性メモリチップであり、フラッシュメモリがこれに最も適したメモリであると考えられる。このメモリチップ１は、不良となる領域が定められた上限をもつ割合で含まれているものとする。また、メモリチップに格納するデータは複数のデータを単位とするブロックに分割して管理され、各ブロックに管理情報領域が備えられているものとする。
【００２３】
これらの記憶容量としては、例えば日立製３２Ｍビット（４Ｍバイト）フラッシュメモリチップでは、１ブロックが５１２バイト、管理情報領域が各ブロックに１６バイト備えられている。従って一つのチップには８１９２ブロックが存在し、管理情報領域として、１２８Ｋバイトが備わっている。メモリチップ１としてこのようなものを最適なメモリの一例として挙げることができる。ただし全体の記憶容量や１ブロックのバイト数、管理情報領域のデータ量は上記に限定されるものではない。
【００２４】
２は本発明の半導体記憶装置の制御回路であり、外部からのアクセス要求に対応し、あるいは、メモリチップ１のアクセスを行い、また不良領域や書き換え回数の管理など、装置内の処理、制御を行うものである。
【００２５】
３は不良登録のためのメモリ素子であり、書き換えが可能で、高速アクセスを可能とするためＤＲＡＭあるいはＳＲＡＭが最適である。ただしバイト単位で電気的に書き換え可能なＲＯＭも、書き換えに時間がかかりやや高価であるが使用可能である。電源立ち上げ時においてはデータをロードする必要がない分使い勝手は良くなる。
【００２６】
４は本発明の半導体記憶装置である。５は本半導体記憶装置４にアクセスの要求をするシステムバスである。このバス５はパーソナルコンピュータなどの情報機器の周辺バスであることが一般的である。６および７は不良登録メモリ３内の格納データの例を示したものであり、６が不良領域であるアドレス値、７は不良領域の置き換え先の置き換えアドレス値である。隣り合ったアドレス値が対応しており、例えば不良領域アドレス８Ｈの領域は、置き換えアドレス０Ｈの領域に置き換えられていることを示す。なお本例では不良領域アドレスの登録は昇べきの順に並べられているものとする。
【００２７】
以下に本構成図における動作を説明する。システムバス５は接続している情報機器からのアクセス要求を制御回路２に伝える。制御回路２はアクセス要求の内容を解読し、またアクセス要求と共に伝えられるデータのアドレスを計算する。求めたアドレス値は管理アドレスとして認識する。
【００２８】
次に制御回路２は不良登録メモリ３の不良登録してある領域を２つに分けて、どちらに格納されている可能性があるか判断する。例えば不良登録の個数が１０２４個あれば５１２番目の登録アドレスをアクセスし、そのアドレスが先に求めた管理アドレスより小さければその管理アドレスはそれより下に格納されている可能性があり、逆であればそれより上格納されている可能性がある。次に格納されている可能性がある側をさらに２つに分けてどちらに登録されている可能性があるかを判別する。
【００２９】
同様に２５６番目あるいは７６８番目の登録アドレスを読み出し、管理アドレスと比較する。こうして比較するデータを半分ずつ減じていき、最終的に登録されているか、もし登録されていれば置き換えアドレス値はいくつかを求める。もちろん半分ずつ登録データを減じていく際に、管理アドレスと等しいデータに出くわした場合はその時点で検索を中止できる。
【００３０】
この方法によれば例えば１０２４個の登録データから検索する場合、単純に検索した場合は最大１０２４回の検索が必要であり、平均５１２回の検索が必要であるが、本方法で最大９回の検索で確実に管理データの有無とその場所を突き止めることができる。もし管理アドレス値が登録されていなければ、この管理アドレス値のデータは不良領域に該当しないため、正常なブロックのデータとしてアクセスすることができる。もし不良登録されていれば、置き換えアドレス値の領域をアクセスすることにより、所望のアクセスを実行できる。なお置き換え領域は、データ記憶領域の最後の領域を使用すると、アクセスの実行が容易になる。
【００３１】
この場合の記憶領域の使用マップを第２図に示した。１１は全記憶領域であり正常記憶領域、不良ブロックおよび置き換え領域全てを含んでいる。１２は通常データ領域であり、正常ブロックと不良ブロックからなる。１３は置き換え領域で全記憶領域の最下の領域を占めている。１４は通常データ領域内の不良ブロックである。１５は置き換え領域内の不良ブロックである。通常データ領域内の不良ブロックは置き換え領域内の不良ブロックでないブロックと対応して置き換えられることを示している。
【００３２】
さらに使用例の説明を加えれば、先ほど例に上げた日立製の３２Ｍビットフラッシュメモリを使用し、２０チップの半導体記憶装置を構築した場合、ブロック数は１６３８４０ブロックとなる。このアドレス値は１８ビットであるため、不良アドレス登録は１つの登録に１８ビットが必要になる。一方不良数の上限が全体の５％であるとすると、最大８１９２ブロックの不艮が存在する。これは１４ビットで表せる。
【００３３】
従って一つの不良登録に不良アドレス値と置き換えアドレス値で合計３２ビットのデータが必要になり、８１９２ブロック分で２５６Ｋビットのメモリが必要になる。しかし現在ではこの程度の容量のメモリは非常に安価である。この例では通常データ領域は１６３８４０−８１９２＝１５５６４８ブロックが全記憶容量である。ただし不良登録メモリが不揮発製メモリである場合には、不良登録データを不揮発性メモリに格納するため、さらに６４ブロックが使用される。
【００３４】
図３は不揮発性メモリ１内の管理情報領域の使用方法を説明した図である。図中、２１は本発明の記憶装置の記憶媒体である不揮発性メモリのデータ格納内容を図で示したもの、２２は不揮発性メモリの物理アドレスで１（０から始まるものとする）の記憶ブロック、２３は物理アドレス２のブロック、ただしこのブロックは不良ブロックであるものとする。２４は物理アドレス４のブロック、２５は物理アドレス７のブロックである。３０は物理アドレス１のブロックに格納されている管理アドレス１のデータ、３１は物理アドレス４のブロックに格納されている管理アドレス７のデータ、３２は物理アドレス７のブロックに格納されている管理アドレス４のデータである。すなわち管理アドレス４と７のデータは入れ替えられている。これは管理アドレス７のデータが書き換えが頻繁に行われる特性を有したデータであったため、物理アドレス７のブロックの劣化の進行を抑えるために、物理アドレス４のデータと入れ替えたためである。
【００３５】
２６、２７、２８、２９はそれぞれの物理アドレスのブロックに対応する管理情報領域であり、そのブロックが格納しているデータの管理アドレスが登録されている。本半導体記憶装置の制御回路２は、管理アドレス１のアクセスが要求されたら、物理アドレス１の管理情報領域２６をアクセスし、そこに登録されている管理アドレス値が１であれば、そのブロックのデータをアクセスすることにより、所望のアクセスが実行できる。もしこの例の状態で管理アドレス４をアクセスする場合には、物理アドレス４の管理情報領域２８をアクセスし、そこに登録されている管理アドレス値７から、物理アドレス７をアクセスすることにより、所望の管理アドレス４のアクセスが実行できることがわかる。
【００３６】
さて、この状態の次に、管理アドレス７がさらに書き換えを頻繁に行われたために物理アドレス４のブロックも劣化の進行を抑えるべきと判断された場合には、まず、管理アドレス４のデータを物理アドレス４に移し、元に戻してから次に入れ替えの対象となるブロックと入れ替えを行う。本例では管理アドレス１がその対象に選ばれている。入れ替え後の状態を図３（ｂ）に示している。
【００３７】
もしこの作業を行わないと、管理アドレス１と４と７で三つ巴の入れ替えが起きたことになり、例えば管理アドレス１をアクセスしようとしても、まず物理アドレス１の管理情報領域２６をアクセスして管理アドレス７を得、次に物理アドレス７の管理情報領域２９をアクセスして管理アドレス値４を得て所望のアクセスを行うことができる。もしさらに入れ替えが起き続ければ、所望のアクセスを行うために管理情報領域のアクセスのたらい回しが起き、アクセス処理性能を著しく低下させてしまうこととなる。
【００３８】
図４及び図５は本発明の半導体記憶装置の動作フローを示している。図４ではアクセス要求があった際に、アクセス要求のアドレスのデータが物理的に何処に格納されているかを知るための物理アドレスの把握を行うためのフローである。まず不良アドレス登録メモリを２等分割する。例えば６４Ｋバイトのメモリであれば３２Ｋバイトに分割する。
【００３９】
次に下位側の先頭アドレスをアクセスする。６４Ｋバイトのメモリではそのときのアドレス値は８０００Ｈである。そしてメモリ上のこのアドレスをアクセスしたときのデータ（格納データのビットで数は、不良登録アドレス総数による）とアクセス要求のアドレスとを比較し、要求アドレスより大きければ要求のアドレスは２分割のうち小さいアドレスが格納されている側に存在する可能性があり、小さければその逆である。
【００４０】
なぜなら、不良登録メモリ内のアドレス値は昇べき順あるいは降べき順に並んでいるからである。また、このとき２つのアドレス値が一致することもありえる。この場合は不良登録されていることが判明したため、代替アドレスを読み出し、これを求める物理アドレスとしてアクセスすることができる。さて次に存在が推定される側の領域を２等分割し、同様にアクセス要求のアドレスと比較し、どちら側にあるかを推測する。
【００４１】
２分割した領域のどちらにあるかが推測できたらさらにその領域を２等分割するが、最終的には領域が２分割できなくなる。分割不可になっても要求アドレスに一致しなかった場合は、不良登録されていないアドレスということで、その物理アドレスの管理領域をアクセスして管理アドレスを取得し、もし物理アドレスと管理アドレスが一致すればその領域がアクセス要求された領域であり、一致しなければ取得した管理アドレス値に等しい物理アドレスの領域がアクセス要求された領域である。
【００４２】
このフローの処理はリードにおいてもライトにおいても行われる。リードにおいてはこの処理によってえられた物理アドレスをアクセスし、データを送り出せばアクセス処理は完了するが、ライトにおいては更に第５図の処理が必要となる。まず、得られた物理アドレス（１）に格納されているデータは既に新しいデータが存在するので不必要となり消去される。
【００４３】
このとき当物理アドレス（１）の書き換えが頻繁に行われたことによる、アドレス入れ替えの必要性があるかがチェックされる。その方法の一例としては、書き換え回数を記録しておき一定の回数に達したら入れ替えの必要性ありと判断する。もし入れ替えの必要がなければそのまま与えられたデータを当物理アドレス（１）に書き込めばアクセスは完了する。
【００４４】
もし入れ替えの必要があると判断されたら、次に入れ替え対象の物理アドレス（２）を選定する。選定方法の一例としては先ほどの書き換え回数の記録を検索し、回数の少ない領域を選び出すというものが考えられる。選定が終了したら、次に書き込み対象となっていた物理アドレス（１）の管理アドレス値（１）を物理アドレス値（１）と比較し、一致すればそのセクタは入れ替えが行われた状態のセクタでないため、そのまま入れ替え対象の物理アドレス（２）に格納されているデータを消去済みの物理アドレス（１）に書き込み、そして物理アドレス（２）を消去して与えられた管理アドレス（１）のデータをそこに書き込めばアクセスは終了である。
【００４５】
もし物理アドレス値（１）と管理アドレス値（１）が一致していなければ、入れ替えが行われている領域であるため、まずその入れ替えをキャンセルしなければならない。管理アドレス値（１）は入れ替え対象になった物理アドレス値（３）を示しているため、ここに格納されているデータを消去済みの物理アドレス（１）に転送し、入れ替えをキャンセルする。
【００４６】
次に物理アドレス（３）を消去して新たな入れ替え対象である物理アドレス（２）のデータを書き込む。そして最後に物理アドレス（２）を消去して与えられた新しい管理アドレス（１）のデータを書き込んで書き込みは完了する。以上が書き込みの際の処理である。
【００４７】
以上により、本発明の記憶装置の実施例の動作説明を終了する。本実施例によれば、現状の磁気ディスク記憶装置と互換性のある半導体記憶装置が容易に実現できる効果がある。次に他の実施例を図６ないし図１０を用いて説明する。各図において、既出の番号は前出と同様のものを指す。
【００４８】
図６は本発明を適用したフラッシュメモリカードの構成図である。図６において、５０は、上記フラッシュメモリカード、５１は本発明を適用するコントローラ、５２は記憶媒体であるところの電気的に書換可能な不揮発性メモリ（以下、メモリという）で、メモリ５２内部は所定の大きさを持つ領域（以下、本実施例ではブロックという）ごとに分割されているが、各ブロックはホストからの格納データを記憶する格納データ領域５３と、該格納データ領域５３を管理する管理情報を記憶する管理情報領域５４とからなる。
【００４９】
格納データ領域５３と管理情報領域５４を併せてブロックという。本実施例ではメモリ５２として格納データ領域５３が５１２ｂｙｔｅ、管理情報領域５４が１６ｂｙｔｅの構成となっているメモリを用いるものとして説明を行うが、これに限定される必要はない。５５は格納データ領域５３内データの一部、または全部のエラー訂正コードを生成し、また、生成したエラー訂正コードを用いて、転送あるいは記憶において発生した誤りを検出、訂正する格納データ領域５３用ＥＣＣ（Ｅｒｒｏｒ Ｃｏｒｒｅｃｔｉｎｇ Ｃｏｄｅ＝誤り訂正コード）回路（以下、データＥＣＣ回路という）であり、５６は同じく管理情報領域５４用ＥＣＣ回路（以下、管理ＥＣＣ回路という）である。なお、ＥＣＣとは、訂正対象データそのものを含む場合もあるが、本実施例においては、訂正対象データと別に扱う。
【００５０】
５７は、パーソナルコンピュータ等、図示していないホストからのアクセスに応じて、ホストとのデータ授受をシステムバス５を通じて行うＩ／Ｆ制御回路である。システムバス５とは、たとえばＰＣ Ｃａｒｄ Ｓｔａｎｄａｒｄ、ＡＴ Ａｔｔａｃｈｍｅｎｔ Ｉｎｔｅｒｆａｃｅなど、標準規格インタフェースを指す。５８は、ホスト、メモリ５２、データＥＣＣ回路５５／管理ＥＣＣ回路５６、後述するバッファ間のデータ転送を制御するデータ転送制御回路である。
【００５１】
５９は、格納データ５３の転送に際して一時的にデータを保持するデータ用バッファであり、６０は同じく管理情報領域５４用バッファであり、さらにそれぞれのバッファ５９、６０をＡ，Ｂ２組備えている。６１はそれぞれ２組のバッファ５９、６０を切り替えるホスト側バッファ切り替え回路で、６２は同じくメモリ側バッファ切り替え回路であり、６３は、これら全体を制御するＣＰＵである。
【００５２】
図７は、管理情報領域５４の内容の一例であって、６６はデータＥＣＣ回路５５が生成した、格納データ領域５３への格納データ用エラー訂正コード（以下、データ用ＥＣＣという）、６７は、本管理情報領域５４に対応する格納データ領域５３に格納されているデータの種類、たとえば構成情報データであるとかドライブ情報のデータであるとか通常ファイルのデータであるなどの識別を示す識別コードや劣化平均化のための入れ替えアドレスを記録する格納ブロックコード、６８は、当該ブロックの劣化の度合を決められた数値で記録する劣化記録で、例えば当該ブロックの消去回数などが適当である。
【００５３】
６９は、各ブロックに予め決めたコードを格納し、読み出し時に調べることにより、不良になっていないかどうかを識別するための良ブロックコード、７０はこの管理情報領域５４に対するエラー訂正コード（以下、管理用ＥＣＣという）である。ただし、管理用ＥＣＣ７０は管理情報領域５４内すべてのデータに対応する必要はなく、例えば、データ用ＥＣＣ６６はそれ自体が誤り訂正の対象になっているため、管理用ＥＣＣ７０の対象にする必要はない。また、良ブロックコード６９は、エラー検出能力に優れていることが望ましく、訂正能力を持たなくてもよい。
【００５４】
図６の構成における動作の概要を説明する。
【００５５】
最初に、図示していないホストがシステムバス５を通して、指定アドレスへの書き込みコマンドと書き込みデータを転送してくる。本実施例では、フラッシュメモリカード５０はハードディスクと互換性を持たせることとしており、書き込みは、ハードディスクと同様の、シリンダ、ヘッド、セクタ番号等で指示することができるものとする。データ転送制御回路５８は書き込みデータを、データバッファ５９に一時的に格納する。書き込みデータの受け入れと同時にＣＰＵ６３は、書き込みコマンドとホストが予め設定した設定値とを解析して、アドレス計算を行い、後述する方法によりメモリ５２内の該当するブロックを探し出す。
【００５６】
メモリ５２として、ここで消去処理が必要なものを使っている場合は、消去処理を行う。
【００５７】
次にＣＰＵ６３の制御によりデータ転送制御回路５８はデータバッファ５９内の格納データを上記該当ブロックの格納データ領域５３へ書き込む。さらに、データＥＣＣ回路５５によりデータ用ＥＣＣ６６を生成すると共に、書き込みブロックを探すときに管理情報領域５４から読み込んだ管理情報内の劣化記録６８等を新たな格納に従って変更して、対応する管理用ＥＣＣ７０を管理ＥＣＣ回路５６により生成する。データ転送制御回路５８はこれらの管理情報を格納データの書き込みに続いて同じブロックの管理情報領域５４に格納する。格納データと管理情報は１つのブロックとしてまとめてメモリ５２へ書き込まれる。
【００５８】
なお、ホスト側バッファ切り替え回路６１と、メモリ側バッファ切り替え回路６２を用いて、ホストから送られてきた格納データとメモリ５２から読み込んだ管理情報とを、それぞれ異なる組のバッファに格納するように制御すれば、平行処理により時間を短縮することができる。
【００５９】
ホストが格納データの読み出しを要求してきた際には、格納の時と同様にＣＰＵ６３とデータ転送制御回路５８は読み出しコマンドに従って該当するブロックをメモリ５２内より探し、メモリ５２から格納データを読み出し、バッファ５９に格納する。次にデータ用ＥＣＣ６６を用いて格納データ領域５３のデータの誤り検出を行い、誤りがなければそのままホストに転送する。誤りが検出されれば訂正してホストに転送して、それと共にＣＰＵ６３は当該ブロックを不良ブロックとして扱い代替処理を行う。もし訂正不可能な誤りが検出された場合にはエラー発生をホストに報告する。
【００６０】
複数のブロックがアクセスされた場合には、２組のデータバッファＡ、Ｂを交互に使用することにより、メモリ５２から読み出すと同時に、平行してホストヘデータ転送を行う。
【００６１】
ホストが書き込みを要求してきた際に、消去が必要であれば、上記と同様に該当ブロックを探し、消去を行う。その際、劣化記録６８を調べ、入れ替えが必要であったら、公知の方法で入れ替えブロックを選んでその内容を読み込み、格納ブロックコード６７を書き換え、格納データ領域５３と管理情報領域５４の内容を、劣化記録６８を除いて入れ替える。消去を行った場合は、所定の方法に基づき必要であれば劣化記録６８を更新する。
【００６２】
さらにメモリ５２からのデータ転送がホストとの転送より速い場合には、余った時間で次にアクセスするブロックについて、２つのデータバッファを用いて後述する不良チェックや代替アドレスの検索などが可能となり、高性能化に寄与する。
【００６３】
次に、本発明の特徴である、ホストからのアクセス要求に対するブロックの検索の方法を図８、図９を用いて詳細に説明する。
【００６４】
図８はホストからアクセス要求がきた際に、ＣＰＵ６３がアクセスコマンドからメモリ５２上の物理的なアドレス値を割り出すまでの処理を示したものである。
【００６５】
通常ホストはアクセスに際して、メモリ上のデータ格納位置を意識せずにアクセスする。本実施例では、メモリカードはハードディスク置き換えを想定しているため、ホストは上述の通りハードディスクと同様のアクセスコマンドを発行する。
【００６６】
ＣＰＵ６３は、Ｉ／Ｆ制御回路５７から上記コマンドを受け取りメモリ上のデータ格納の配置に対応する論理アドレス値を算出する（ステップ８０１）。次に算出した論理アドレス値でメモリ５２の該当アドレスをアクセスし（ステップ８０２）、管理情報領域５４に格納されていた管理情報を読み込む。なお、メモリ５２内部では、アドレスに従って１ブロックの内容が全てメモリ５２内のバッファに読み出され、そのバッファから管理情報または格納データのみがコントローラ５１へ送られるものとする。この管理情報から、当該ブロックが使用可能な良ブロックか否かを判別する（ステップ８０３）。この判別方法については第９図を用いて後ほど説明する。
【００６７】
次に判別結果により以下のような処理に分岐する。まず良ブロックであると判別した場合（ＥＣＣによる訂正を行ってもよい）には、ＣＰＵ６３は、バッファ６０に読み込んだ当該管理情報領域５４内の格納ブロックコード６７を取得する（ステップ８０４）。格納ブロックコード６７に格納された入れ替えアドレス値を本ブロックをアクセスするに至った論理アドレス値と比較し（ステップ８０５）、一致すれば入れ替えが発生していないブロックであるため、そのまま当該ブロックがアクセスブロックであると判断してアクセスする（ステップ８０６）。読み込みアクセスでは、上記メモリ５２内のバッファから格納データを読み込む。書き込みアクセスでは、すでにバッファ５９に設定されている格納データに対応した管理情報を生成して書き込む。
【００６８】
一致しなければ入れ替えが発生しており、格納ブロックコード６７内の入れ替えアドレス値に該当するブロックがアクセスブロックであると判断できるため、格納ブロックコード６７が示す物理アドレス値のブロックを新たにアクセスする（ステップ８０７）。入れ替えられたブロックをアクセスする際に、更に良ブロックチェックを行ってもよい。
【００６９】
一方、ステップ８０３で不良ブロックであると判定した場合には、後述する不良登録領域を新たにアクセスする（ステップ８０８）。不良登録領域に登録されていれば（ステップ８０９）、その登録値すなわち代替アドレスを取得し、該当する物理アドレス値のブロックをアクセスする（ステップ８１０）。
【００７０】
もしここで不良登録されていない場合には、新たに発生した不良ブロックであり（ステップ８１１）、当該ブロックのアクセスは不可能である。読み出しアクセスの場合は、ＣＰＵ６３は、ホストにアクセスエラーを報告する。書き込みアクセスの場合は、データは書き換えられるためエラーをホストに報告する必要はなく、代替ブロックを割り当てて、そちらにデータを格納する。同時に、ＣＰＵ６３は、不良登録領域８４内の不良ブロックに対応する領域に、代替ブロックアドレスを書き込む。
【００７１】
上記不良ブロック情報を外部のメモリではなく内部に持つ場合、先に不良ブロック情報をサーチすると次のような問題点があった。すなわち、不揮発性メモリのアクセス時間が長いため、サーチに時間がかかる。さらに、フラッシュメモリのアクセスはブロック単位なので、個々の不良登録情報を得るには、不良登録情報をまとめて読み込み、そのなかをシーケンシャルアクセスすることになる。そのため、不良登録領域の最後の方の情報はアクセスに時間がかかる。
【００７２】
上記方法はこれを解決するもので、まず、不良登録領域をサーチするのではなく、論理アドレスを用いて該当するブロックをアクセスする。そして、本発明はその管理情報領域から得られる情報で、そのブロックが不良であると判断した場合に、初めて不良登録領域をアクセスする方法である。したがって、良ブロックに格納されたデータを得るまでのメモリ５２へのアクセス回数が少なくなり、ホストからみたアクセス時間が短くなる。
【００７３】
さらに、本発明は該当ブロックが不良ではなく、書き換え回数平均化などの目的でブロックを入れ替えられている場合は、格納ブロックコード６７内のアドレス情報に従ってアクセスを行う方法である。
【００７４】
さらに、メモリ５２の該当ブロックが不良である場合は上記管理情報領域５４内の情報にも信頼性がないので、本発明は、代替ブロック情報を格納ブロックコード６７などには置かず、別に設けた不良登録領域に置く方法である。不良登録領域のアクセスでは、上述のようなシーケンシャルアクセスの影響が出るが、不良発生率が低いので、問題にならない。
【００７５】
次に、上述の不良登録の方法について、詳細に説明をする。
【００７６】
図９はメモリ５２内部のメモリマップ例と不良登録領域中の１ブロックの格納データ領域５３に登録された内容を示している。図中、８１は記憶領域全体あるいは記憶領域の一部、すなわちメモリの１チップなどのメモリマップ、８２はその中で論理アドレス値に対応してデータを格納する一般格納ブロック群、８３は一般格納ブロック中に存在あるいは発生した不良ブロックを代替してデータ格納を行う代替ブロック群、８４は代替を行った場合の代替アドレスを登録する不良登録領域である。不良登録領域８４では、格納データ領域５３の部分に代替アドレスを登録する。
【００７７】
不良登録領域８４は、一般格納ブロック群８２の全ブロック分の登録領域が確保されており、また、一般格納ブロック群８２の各ブロックと不良登録領域８４中の対応する登録領域は対応付けられている。本実施例では、一般格納ブロックのアドレス順に不良登録領域に割り当てられているものとするが、これには限定されない。
【００７８】
本実施例では、図９に示したように不良登録は１ブロックにつき２バイトが割り当てられており、８５は、一般格納ブロック８２の該当ブロック（アドレス００００）が不良ではない場合を示しており、一例としてＦＦＦＦが登録されている。不良でないことを示す値としては、代替ブロックアドレスになり得ない値であればよいが、前述の図８ステップ８０９における不良登録されているか否かの判断を簡単にするために、全ビットを１あるいは０にすることが望ましい。８６は、一般格納ブロックアドレス０００３のブロックが不良登録されており、代替ブロックアドレス０００３のブロックと代替が行われていることを示している。さらに、一般格納ブロックアドレス０００６、０００７は、代替ブロックアドレス０００４、０００５と代替されていることを示している。
【００７９】
代替アドレスは代替ブロック群８３内部のアドレス割り当てで充分であるため、少ないバイト数で登録が可能である。登録値がＦＦＦＦかそれ以外のアドレス値が格納されているかにより、不良登録されているか否かが判別できる。なお、不良登録領域８４にもＥＣＣを生成し、信頼性を向上させることが望ましい。一般格納ブロックと同様の手順でＥＣＣ回路を応用すればよい。
【００８０】
次にアクセスされたブロックが不良か否かを判定する処理について説明する。
【００８１】
図１０は、ブロックの良／不良判定フローチャートであり、図８の全体フローチャートの中の良ブロックチェック（ステップ８０３）を詳細に説明するものである。
【００８２】
まず、ＣＰＵ６３は、求めた論理アドレスにより、該当ブロックをアクセスし、管理情報領域５４内の管理情報を読み込む（ステップ１００１）。読み込んだ管理情報の管理用ＥＣＣ７０を用いて、取得した管理情報の誤り検出を行う（ステップ１００２）。ここで誤りなし、訂正可能な誤り検出、訂正不可能な誤り検出の３状態に分岐する。訂正不可能な誤り検出の場合は不良ブロックと判断し、不良登録領域８４の検索に移行する（ステップ８０８）。訂正可能な誤り検出の場合は訂正処理を実行する（ステップ１００３）。誤りなしの場合、または訂正実行後の場合は、読み込んだ良ブロックコード６９をチェックする（ステップ１００４）。
【００８３】
良ブロックコード６９は第７図でも説明したとおり、全ブロック共通の特定コードを格納しておき、一致不一致を確認するものである。もし、管理用ＥＣＣ７０によるチェックでエラーが検出されなかったのに、良ブロックコード６９が一致しなかった場合には、誤検出が発生したと判断する。すなわち、誤りの発生が偶然、誤りなしのコードと一致してしまった場合に起る現象である。
【００８４】
また、同様にエラー訂正処理を行ったにも係わらず良ブロックコード６９が不一致であった場合には、誤りの発生が偶然にして訂正可能なコードと一致してしまい誤訂正が行われた、と考えて不良ブロックと見なし、不良登録領域８４の検索処理に移行する。それ以外では誤りなしか、訂正済みの良ブロックと判断する。
【００８５】
なお、誤検出あるいは誤訂正後に良ブロックコードが偶然にして一致してしまうケースも当然考えられる。しかしながら、誤検出、誤訂正自体の発生確率は非常に低く、さらに良ブロックコードが一致してしまうような確率は現実的に起りえないと判断できる。また、このような判断は、誤検出率、誤訂正率が大きくないＥＣＣ方式を採用し、良ブロックコードのビット数も多くすることにより行えるものである。
【００８６】
以上述べたように、本実施例に依れば、不良ブロックの情報はメモリ５２内の不良登録領域８４に登録しているので、外部登録メモリが不要である。先に、論理アドレスに対応するブロックの管理情報を見て、良／不良を判定しているので、先に不良登録情報をサーチする方法に比べ、コントローラ５１からメモリ５２へのアクセス回数が少なくなり、したがって、目的のデータを得るまでのホスト側からみた場合のアクセス時間が早くなる。という効果がある。
【００８７】
従って、不良ブロックの判別において処理速度と信頼性の向上が可能で、記憶装置自体の高速化、高性能化、高信頼化が実現できる。また、外部メモリを使わないため、低価格化にも効果がある。
【００８８】
なお、上記実施例のコントローラ５１とメモリ５２を一つのチップに集積することにより、メモリ５２内のバッファとコントローラ５１内のバッファ５９、６０をまとめることができて、回路規模を削減することができるという効果が得られる。さらに、コントローラ５１とメモリ５２間の信号線も不要になるため、より端子数の少ないパッケージを用いることができるという効果もある。
【００８９】
以下に、本発明の実施態様を列挙する。
【００９０】
１．コントローラと不揮発性メモリとを有し、
前記不揮発性メモリは複数のブロックを有し、夫々のブロックは外部に接続されるホストから供給されるデータを格納する領域と当該データに関する管理情報を格納する領域とを有し、
前記管理情報は、当該管理情報を有するブロックの有効性を示す情報と、当該ブロックに格納されるデータのエラー検出・訂正情報と、当該ブロックの劣化の程度を示す情報と、当該管理情報のエラー検出・訂正情報とを有し、
前記コントローラは、前記当該ブロックの有効性を示す情報に応じて当該ブロックに格納されているデータへのアクセス可否を判断し、当該ブロックに格納されているデータのエラーの有無を前記データのエラー検出・訂正情報を用いて判別し、前記データのエラーを検出した場合は前記当該ブロックの有効性を示す情報を更新し、前記当該ブロックの劣化の程度を示す情報に応じて当該ブロックを継続して使用するか別のブロックに代替するかを判別し、前記管理情報のエラー検出・訂正情報に応じて当該ブロックに格納されている管理情報のエラーの有無を判別することを特徴とする不揮発性半導体記憶装置。
【００９１】
２．コントローラと不揮発性メモリとを有し、
前記不揮発性メモリは複数のブロックを有し、夫々の前記ブロックはデータ格納領域と管    理情報格納領域とを有し、
前記コントローラは前記管理情報として、データのエラー検出・訂正情報と、管理情報自体のエラー検出・訂正情報とを格納可能とすることを特徴とする不揮発性半導体記憶装置。
【００９２】
３．コントローラと不揮発性メモリとを有し、
前記不揮発性メモリは複数のブロックを有し、夫々の前記ブロックはデータ格納領域と管理情報格納領域とを有し、
前記コントローラは前記データ格納領域に格納されたデータのエラー検出・訂正処理と、前記管理情報格納領域に格納された管理情報のエラー検出・訂正処理とを行うことを特徴とする不揮発性半導体記憶装置。
【図１】
2010192002.tif 000003
【図２】
2010192002.tif 000004
【図３】
2010192002.tif 000005
【図４】
2010192002.tif 000006
【図５】
2010192002.tif 000007
【図６】
2010192002.tif 000008
【図７】
2010192002.tif 000009
【図８】
2010192002.tif 000010
【図９】
2010192002.tif 000011
【図１０】
2010192002.tif 000012
【手続補正書】
【提出日】平成22年6月8日(2010.6.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コントローラと不揮発性メモリとを有し、
前記不揮発性メモリは複数のブロックを有し、夫々の前記ブロックはデータ格納領域と管理情報格納領域とを有し、
前記コントローラは前記管理情報として、データのエラー検出・訂正情報と、管理情報自体のエラー検出・訂正情報とを格納可能とすることを特徴とする不揮発性半導体記憶装置。