(57)【特許請求の範囲】
【請求項１】
データ及び前記データの管理情報をブロック単位で記憶するためのデータ領域と前記データ領域を代替する代替領域と前記データ領域内の不良ブロックのアドレス及び前記不良ブロックを代替する前記代替領域内の代替ブロックのアドレスを格納するための不良登録領域とを有する記憶媒体への、前記データの書き込み及び読み出しを制御するためのメモリ制御装置において、
前記データ領域は、前記データと前記管理情報を同一ブロック内に記憶し、
前記管理情報は、前記ブロックの良／不良を識別するためのブロック判断情報と、当該管理情報のエラーを訂正するためのエラー訂正情報とを含み、
前記管理情報内の前記エラー訂正情報を用いて前記管理情報のエラーを検出し、その管理情報のエラーの検出結果に応じて前記エラー訂正情報を用いて前記管理情報のエラーを訂正する手段と、
前記管理情報内の前記ブロック判断情報を用いて、前記ブロックの良／不良を判断する手段と、
前記ブロックの良／不良の判断結果に応じて、前記記憶媒体内の前記データ領域のブロックをアクセスするか又は前記不良登録領域をアクセスするかを判断し、そのアクセス先の判断結果に応じて、前記データ領域のブロックをアクセスするか又は前記不良登録領域をアクセスする手段とを備えたメモリ制御装置。
【請求項２】
データ及び前記データの管理情報をブロック単位で記憶するためのデータ領域と前記データ領域を代替する代替領域と前記データ領域内の不良ブロックのアドレス及び前記不良ブロックを代替する前記代替領域内の代替ブロックのアドレスを格納するための不良登録領域とを有する記憶媒体と、前記記憶媒体への前記データの書き込み及び読み出しを制御するためのコントローラとを備えた記憶装置において、
前記データ領域は、前記データと前記管理情報を同一ブロック内に記憶し、
前記管理情報は、前記ブロックの良／不良を識別するためのブロック判断情報と、当該管理情報のエラーを訂正するためのエラー訂正情報とを含み、
前記コントローラは、前記エラー訂正情報を用いて前記管理情報のエラーを検出し、その管理情報のエラーの検出結果に応じて前記エラー訂正情報を用いて前記管理情報のエラーを訂正し、前記ブロック判断情報を用いて前記ブロックの良／不良を判断し、前記ブロックの良／不良の判断結果に応じて、前記記憶媒体内の前記データ領域のブロックをアクセスするか又は前記不良登録領域をアクセスするかを判断し、そのアクセス先の判断結果に応じて、前記データ領域のブロックをアクセスするか又は前記不良登録領域をアクセスする記憶装置。
【請求項３】
前記管理情報は、当該管理情報のブロックに対応する前記代替ブロックのアドレスを含む請求項２に記載の記憶装置。
【請求項４】
データ及び前記データの管理情報をブロック単位で記憶するためのデータ領域と前記データ領域を代替する代替領域と前記データ領域内の不良ブロックのアドレス及び前記不良ブロックを代替する前記代替領域内の代替ブロックのアドレスを格納するための不良登録領域とを有する記憶媒体への、前記データの書き込み及び読み出しを制御するためのメモリ制御方法は、
前記データ領域は、前記データと前記管理情報を同一ブロック内に記憶し、
前記管理情報は、前記ブロックの良／不良を識別するためのブロック判断情報と、当該管理情報のエラーを訂正するためのエラー訂正情報とを含み、
前記管理情報内の前記エラー訂正情報を用いて前記管理情報のエラーを検出し、
その管理情報のエラーの検出結果に応じて前記エラー訂正情報を用いて前記管理情報のエラーを訂正し、
前記管理情報内の前記ブロック判断情報を用いて、前記ブロックの良／不良を判断し、
前記ブロックの良／不良の判断結果に応じて、前記記憶媒体内の前記データ領域のブロックをアクセスするか又は前記不良登録領域をアクセスするかを判断し、
そのアクセス先の判断結果に応じて、前記データ領域のブロックをアクセスするか又は前記不良登録領域をアクセスするメモリ制御方法。
【発明の詳細な説明】
技術分野
本発明は電気的に書き換え可能な不揮発性半導体メモリを記憶媒体とする半導体記憶装置にかかり、特に部分的に不良を含み、かつ書き換えを頻繁に行うと不良になる半導体メモリを使用する半導体記憶装置に関する。
背景技術
電気的に書き換え可能な不揮発性メモリは、低電力、振動衝撃に対する耐性、高速など、情報機器の記憶装置として他の記憶装置、例えば磁気記憶装置、光ディスク装置等より有利な特徴を持っている。しかしその半面、製造プロセスが複雑であり、また原理上半導体に対して不可逆的な作用を繰り返すことになるため、不良部分の発生や使用上の劣化が著しいという問題がある。そのため製造歩留まりが悪く、高価になり、使用中の信頼性も問題となる。
これを解決するために、メモリの不良部分を使用しないようにあらかじめ登録し、また各データブロックの使用回数を記録して、これが大きくなったら他の領域と入れ替えることにより、使用回数の増大を抑えることにより、寿命を延ばす技術が開発されている。この技術は、例えば特開平６−124596号公報に開示されている。
この開示技術によれば、論理アドレスと物理アドレスの対比、すなわち、ホストから指定された論理アドレスとメモリ上の物理アドレスの対応を示すアドレス変換テーブルを記録するメモリを備えている。これにより不良領域の物理アドレスはアドレス変換テーブルに不良であることを示すように登録し、ホスト指定の論理アドレスが割り当てられないようにすることにより、不良部分の使用を防ぐ。
また、消去回数管理を行い、消去回数が一定の値に達したら、他の領域とデータを入れ替え、同時にアドレス変換テーブル上のアドレス値を書き換えることにより、論理アドレスと物理アドレスの対応を登録し直し、正しい対応が取れるようにする。上記アドレス変換テーブルは使用されている全ての論理アドレス値を登録する。そしてその記憶媒体としてDRAMやSRAMなどの高速揮発性メモリを使用している。
高速揮発性メモリを使用する理由は、アドレス変換を高速に行えること、またアドレスの入れ替えが起きたときに、登録を部分的に高速に書き換えることができること、大容量のデータの記憶を比較的安価なメモリで実現できること、などである。
上記従来技術では、アドレス変換の登録を全ての論理アドレスについて行っているため、大容量の記憶装置となったときには、アドレス変換テーブルの大きさが膨大となり、大容量の登録用メモリが必要となる。また、揮発性メモリであることから、電源を切断するとデータが消えてしまい、電源投入時に全登録値を他の不揮発性メモリから書き込む必要があり、起動時間が長くなるという課題があった
また、外部の登録用メモリが大容量になるため、部分点数が増加し、装置の小型化や低価格化の妨げになるという課題があった。
また、上記登録用メモリを不揮発性メモリにすると、不揮発性メモリのアクセス時間が一般的に長いため、記憶装置自体のアクセス時間が長くなるという課題があった。
また、揮発性の登録用メモリを電源バックアップするとさらに部品点数が増加し、装置の小型化や低価格化の妨げになるという課題があった。
本発明の目的は、上記課題を解決した、小型化、低価格化が可能で、起動時間、アクセス時間が短い大容量の半導体記憶装置を提供することである。
具体的な本発明の目的は、外部登録用メモリ容量を削減し、あるいは外部登録用メモリをなくし、起動時間、アクセス時間が短い大容量の半導体記憶装置を提供することである。
具体的な本発明の目的は、外部登録用メモリ容量を削減した、あるいは外部登録用メモリをなくした大容量の半導体記憶装置において、起動時間、アクセス時間の短いアクセス方法を提供することである。
本発明の他の目的は、外部登録用メモリ容量を削減した、あるいは外部登録用メモリをなくした大容量の半導体記憶装置において、短い起動時間、アクセス時間を実現するコントローラを提供することである。
発明の開示
データの記憶機能に欠陥がある記憶セルを部分的に持つ半導体メモリを記憶媒体として使用し、データの保持、あるいは保持データの読み出しに際して、複数のデータからなるブロック単位で行う半導体記憶装置において、記憶機能に欠陥のある記憶セルを含む不良領域のアドレス値を上記ブロック単位でアドレス値の大小による昇べき順あるいは降べき順に登録する不良場所登録手段と、不良領域のアドレス値をブロック単位で書き換えるための記憶領域である代替記憶領域と、不良場所登録手段に登録されている不良領域のアドレス値を代替領域と置き換えた際の置き換えアドレス値を登録する代替場所登録手段と、データの保持あるいは読み出しが行われる領域のアドレス値が不良領域のアドレス値に該当するか否かを判断するために不良場所登録手段を検索する不良登録検索手段と、データの保持あるいは読み出しが行われる領域のアドレス値が不良場所登録手段に登録されている場合には代替場所登録手段を参照して代替領域をアクセスするよう制御するアクセス制御手段と、新たに不良が発生した際には前記不良場所登録手段の昇べき順あるいは降べき順の規則に従った書き換えと代替場所の決定と前記代替場所登録手段の更新を行う登録更新手段を備える。
また、半導体記憶装置の不良場所登録手段の不良登録検索手段は、最初に不良場所登録手段の領域を半分に分けて、どちらに存在するかを推測し、次に存在すると推測される側を半分に分けて、どちらに存在するかを推測し、この作業を続けることにより最終的に該不良場所登録手段内に登録されているか否かを判別して検索することにより検索を高速化する。
さらに、データの記憶機能に欠陥がある記憶セルを部分的に持つ半導体メモリを記憶媒体とし、データの保持、あるいは保持データの読み出しに際して、連続的に転送する一定量のデータをデータ管理単位として扱い、このデータ管理単位毎に管理情報を格納する管理情報格納領域を前記半導体メモリ内部に備え、また前記データ管理単位の使用頻度を監視する使用頻度管理手段を備えた半導体記憶装置において、複数の記憶セルを管理記憶単位として管理するための管理情報記憶領域を備え、ブロックの使用頻度を監視する使用頻度管理手段を備え、全てのブロックの管理情報記憶領域に、管理するために便宜上定めた論理的なアドレスである管理アドレスを登録し、該管理アドレスは基本的に半導体メモリの物理的なアドレス値である物理アドレスに一致したアドレスとすることにより、管理アドレスにより指定されるブロックに格納されているデータのアクセスにおいては、管理アドレスに等しい物理アドレスをアクセスすることにより、所望のアクセスを行うが、使用頻度管理手段によブロックの格納データを使用頻度の異なる他のブロックと交換すべきであると判断された際には、２つのブロックの格納データを交換し、その際に管理情報記憶領域には格納されているデータの管理アドレスを登録し、それ以降の該管理アドレスで指定されるブロックのアクセスにおいては、該管理アドレスに等しい物理アドレスの管理情報記憶領域に登録されている管理アドレスを参照し、登録されている該管理アドレス値に等しい物理アドレスをアクセスすることにより所望のブロックの格納データを得る。
そして、すでに入れ替えが行われて前記管理アドレスと前記物理アドレスが一致していないブロックが使用頻度管理手段により、さらに入れ替えが必要と判断された際には、前回入れ替えが起きたときに対象となった管理記憶単位と格納データの互換を再入れ替えによって解除してから、別の領域との入れ替えを行う。
また別の手段として、半導体メモリ内部に、データの記憶領域全体の代替アドレス登録領域、および代替領域を備え、前記代替アドレス登録領域はメモリ上のデータ格納の物理的な順序に従った登録順序とし、代替アドレスの検索においては、被代替領域の物理的な位置より、一意に登録箇所が判明するようにする。
そしてデータ管理単位毎に管理情報領域を備え、該管理情報領域には格納データのアドレス情報、および不良ではないことを示す特定のコード、そしてこれらの管理情報の誤り訂正符号を少なくとも格納し、外部よりアクセス要求があった場合には、該当する領域の誤り訂正符号による誤り検出、訂正と、不良ではないことを示す特定コードの比較を行い、ともに正常であった場合に使用可能領域と判断してアクセス処理を実行し、どちらか一方が正常でなかった場合には使用不可能領域として処理を行う。
さらに、前記データ管理単位のデータを一時的に格納する記憶領域を２単位分備え、外部とのデータ転送と前記半導体メモリとのデータ転送を交互に行うことにより同時に転送を可能とし、かつ、前記欠陥がある記憶セルを回避してアクセスするための制御を外部とのデータ転送と平行して処理する。
不良でない領域のアドレス値は登録せず、不良の領域のアドレス値だけ登録するため、登録データは少なくて済み、登録用のメモリの容量を小さくすることができる。また不良アドレスを昇べき順あるいは降べき順に登録することにより、あるアドレス値を検索する場合に、登録メモリ内の任意の場所を参照すれば、それより小さいアドレス値の側に登録されているか、大きいアドレス値側に登録されているかが即断でき、多数の登録値からでも、登録されているか否か、あるいは何処に登録されているかが比較的高速に判断できる。
また、記憶媒体のメモリの各ブロックに管理情報を記憶する領域を備えている場合には、ここに論理アドレス値を登録することができ、書き換えが頻繁に行われたことなどにより、物理的な場所を入れ替える必要が生じたときに、管理情報内の論理アドレス値を書き換えることにより簡単に対応できる。しかも外部のメモリにテーブルとして登録する必要がないため、他の揮発性メモリを備える必要がなく、電源立ち上げ時にテーブルを再構築する必要はない。
そして、この論理アドレス値の登録において、一度入れ替えを行ったブロックにさらに入れ替えの必要性が発生したときに、以前の入れ替えを元に戻してから入れ替えを行うことにより、論理アドレス値の把握のための管理情報領域の参照が多くても一回ですみ、たらい回しになる状態を回避することができる。
また別の手段として全アドレス分の不良登録領域を備えることによれば、アクセスが不良箇所に当たってしまっても、その物理位置から代替アドレスの登録箇所が一意に決定できるため、検索時間を大幅に短縮することが可能である。また、不良の判断を誤り訂正符号と不良でない領域を示す特定コードの２つにより行うことにより、良不良の判断を誤る確率を非常に小さくすることができる。
また、転送データを一時的に格納する記憶領域を２単位分備えることにより一方を外部とのデータ転送に、もう一方をメモリとのデータ転送に用いる事を交互に切り替えて行うことにより、両転送を同時に行うことが可能である。しかも、メモリとの転送速度が外部との転送より速い場合には、アクセス領域の良不良の判断や代替アドレスの検索などのオーバーヘッド時間が外部との転送のバックグランドで行えるため、見かけ上の転送性能を向上させる。
また、本発明は、部分的に不良を持つ半導体メモリを記憶媒体の一部または全部に使用し、該記憶媒体へデータを書き込み、保持し、あるいは読み出す際に、一定量のデータをデータ管理単位とする半導体記憶装置において、半導体メモリ内部に、データ管理単位のデータを格納する格納領域と、その代替領域と、代替領域のアドレス登録領域とを備え、代替領域を示すアドレス値は、代替アドレス登録領域中の、格納領域のアドレス値に従ったアドレスに記憶させることを特徴とするものである。
さらに、格納領域は、それぞれ管理情報を備え、該管理情報として該格納領域が不良であるかどうかを判断する不良判断情報を格納し、該格納領域に対するアクセス要求があった場合には、該格納領域の不良判断情報を用いて使用可能領域かどうかを判断し、使用可能領域であればアクセス処理を実行し、使用不可能領域であれば、代替アドレス登録領域をアクセスしてアドレスを取得し、代替領域をアクセスすることを特徴とするものである。
また、本発明は、部分的に不良を持つ半導体メモリを記憶媒体の一部または全部に使用し、該記憶媒体へデータを書き込み、保持し、あるいは読み出す際に、一定量のデータをデータ管理単位とする半導体記憶装置において、半導体メモリ内部に、データ管理単位のデータを格納する格納領域と、その代替領域と、代替領域のアドレス登録領域とを備え、格納領域は、それぞれ管理情報を備え、該管理情報として、該格納領域へ格納されたデータの誤り検出と訂正とを行う訂正情報と格納領域が不良であるかどうかの検出を行う検出情報とからなる不良判断情報とを格納し、格納領域に対するアクセス要求があった場合には、該格納領域に対応する不良判断情報を用いて使用可能領域かどうかを判断し、使用可能領域であればアクセス処理を実行することを特徴とするものである。
さらに、代替アドレス登録情報において、不良ではない領域の登録箇所には、代替アドレス値とは異なるデータを登録することにより、不良登録されているか否かが判別できるようにしたことを特徴とするものである。
さらに、異なるデータは、該データのビットが総て１または総て０のいずれかであることを特徴とするものである。
さらに、格納領域に対するアクセス要求があった場合には、訂正情報を用いて誤り検出、訂正を行い、訂正不可能な誤りが検出された場合には使用不可能領域と判断し、誤りなしの場合または訂正可能な誤りを訂正した場合は、検出情報を用いて不良であるか否かを検出し、不良でなければ使用可能領域と判断してアクセス処理を実行し、不良であった場合には使用不可能領域として処理を行うことを特徴とするものである。
また、本発明は、部分的に不良を持つ半導体メモリを記憶媒体の一部または全部に使用し、該記憶媒体へデータを書き込み、保持し、あるいは読み出す際に、一定量のデータをデータ管理単位とする半導体記憶装置において、データ格納要求に伴う転送データに対し、転送データを格納した格納領域が、格納後に不良になったかどうかを判断する不良判断情報を生成して付加する手段を備え、該格納データの読み出し要求に際しては、不良判断情報を用いて不良判断処理を実行し、不良であると判断された該格納領域は、不良領域として扱い、当該領域に格納されたデータを訂正した後代替領域に移動することを特徴とするものである。
さらに、データ管理単位の格納データを一時的に格納する記憶領域を記憶媒体外に２単位分備え、不良判断情報を用いたアクセス処理を、外部とのデータ転送と平行して処理することを特徴とするものである。
また、本発明は、部分的に不良を持つ半導体メモリを記憶媒体の一部または全部に使用する半導体記憶装置へのアクセス方法であって、半導体メモリ内部の、データを格納する格納領域にアクセスして、当該格納領域の良／不良を判定し、不良でなければ、そのままアクセスし、不良であれば、代替領域のアドレス登録領域にアクセスして代替領域のアドレスを取得し、該アドレスに基づいて、代替領域をアクセスすることを特徴とするものである。
また、本発明は、部分的に不良を持つ半導体メモリを記憶媒体の一部または全部に使用する半導体記憶装置において、半導体メモリ内部に、データ管理単位のデータを格納する格納領域と、その代替領域と、代替領域のアドレス登録領域とを備え、半導体メモリに格納されたデータをアクセスする際に、データ格納領域が代替領域へ代替されていない場合の半導体メモリへのアクセス時間は、代替されている場合のアクセス時間より短いことを特徴とするものである。
また、本発明は、部分的に不良を持つ半導体メモリを記憶媒体の一部または全部に使用する半導体記憶装置において、半導体メモリ内部に、データ管理単位のデータを格納する格納領域と、その代替領域と、代替領域のアドレス登録領域とを備え、半導体メモリに格納されたデータをアクセスする際に、データ格納領域が代替領域へ代替されていない場合の半導体メモリへのアクセス回数は、代替されている場合のアクセス回数より少ないことを特徴とするものである。
また、本発明は、部分的に不良を持ち、データ管理単位のデータを格納する格納領域と、その代替領域と、代替領域のアドレス登録領域とを備えた半導体メモリ記憶媒体へのデータを書き込み、読み出しを制御する半導体メモリ制御装置であって、格納領域に対するアクセス要求があった場合には、該格納領域が備える、該格納領域へ格納されたデータが不良であるかどうかを示す不良判断情報を用いて使用可能領域かどうかを判断し、使用可能領域であればアクセス処理を実行することを特徴とするものである。
さらに、本発明は、格納領域に対するアクセス要求があった場合には、格納領域が備える、該格納領域へ格納されたデータの訂正情報を用いて誤り検出、訂正を行い、訂正不可能な誤りが検出された場合には使用不可能領域と判断し、誤りなしの場合または訂正可能な誤りを訂正した場合は、格納領域が備える、格納領域が不良であるかどうかの検出を行う検出情報を用いて不良であるか否かを検出し、不良でなければ使用可能領域と判断してアクセス処理を実行し、不良であった場合には使用可能領域として処理を行うことを特徴とするものである。
【図面の簡単な説明】
第１図は、本発明の第１の実施例の半導体記憶装置の全体構成図であり、第２図は、記憶媒体のメモリマップであり、第３図は、ブロック入れ替えの説明図であり、第４図は、アクセス要求に対するアドレス検索処理のフローであり、第５図は、書き込みアクセスにおけるアドレス入れ替え処理のフローであり、第６図は、本発明の第２の実施例の半導体記憶装置の全体構成図であり、第７図は、管理情報領域の領域データ例であり、第８図は、アクセス箇所の決定をおこなうフローチャートであり、第９図は、不良登録領域を含むメモリアドレスマップであり、第10図は、アクセスブロックの良不良判定フローである。
発明を実施するための最良の形態
本発明の実施例について、以下に図を用いて説明する。
第１図は本発明の全体構成図であり、１は本発明の半導体記憶装置の記憶媒体である電気的に書き換え可能な不揮発性メモリチップであり、フラッシュメモリがこれに最も適したメモリであると考えられる。このメモリチップ１は、不良となる領域が定められた上限をもつ割合で含まれているものとする。また、メモリチップに格納するデータは複数のデータを単位とするブロックに分割して管理され、各ブロック毎に管理情報領域が備えられているものとする。
これらの記憶容量としては、例えば日立製32Mビット（4Mバイト）フラッシュメモリチップでは、１ブロックが512バイト、管理情報領域が各ブロックに16バイト備えられている。従って一つのチップには8192ブロックが存在し、管理情報領域として、128Kバイトが備わっている。メモリチップ１としてこのようなものを最適なメモリの一例として挙げることができる。ただし全体の記憶容量や１ブロックのバイト数、管理情報領域のデータ量は上記に限定されるものではない。
２は本発明の半導体記憶装置の制御回路であり、外部からのアクセス要求に対応し、あるいは、メモリチップ１のアクセスを行い、また不良領域や書き換え回数の管理など、装置内の処理、制御を行うものである。３は不良登録のためのメモリ素子であり、書き換えが可能で、高速アクセスを可能とするためDRAMあるいはSRAMが最適である。ただしバイト単位で電気的に書き換え可能なROMも、書き換えに時間がかかりやや高価であるが使用可能である。電源立ち上げ時においてはデータをロードする必要がない分使い勝手は良くなる。
４は本発明の半導体記憶装置である。５は本半導体記憶装置４にアクセスの要求をするシステムバスである。このバス５はパーソナルコンピュータなどの情報機器の周辺バスであることが一般的である。６および７は不良登録メモリ３内の格納データの例を示したものであり、６が不良領域であるアドレス値、７は不良領域の置き換え先の置き換えアドレス値である。隣り合ったアドレス値が対応しており、例えば不良領域アドレス8Hの領域は、置き換えアドレス0Hの領域に置き換えられていることを示す。なお本例では不良領域アドレスの登録は昇べきの順に並べられているものとする。
以下に本構成図における動作を説明する。システムバス５は接続している情報機器からのアクセス要求を制御回路２に伝える。制御回路２はアクセス要求の内容を解読し、またアクセス要求と共に伝えられるデータのアドレスを計算する。求めたアドレス値は管理アドレスとして認識する。
次に制御回路２は不良登録メモリ３の不良登録してある領域を２つに分けて、どちらに格納されている可能性があるか判断する。例えば不良登録の個数が1024個あれば512番目の登録アドレスをアクセスし、そのアドレスが先に求めた管理アドレスより小さければその管理アドレスはそれより下に格納されている可能性があり、逆であればそれより上格納されている可能性がある。次に格納されている可能性がある側をさらに２つに分けてどちらに登録されている可能性があるかを判別する。
同様に256番目あるいは768番目の登録アドレスを読み出し、管理アドレスと比較する。こうして比較するデータを半分ずつ減じていき、最終的に登録されているか、もし登録されていれば置き換えアドレス値はいくつかを求める。もちろん半分づつ登録データを減じていく際に、管理アドレスと等しいデータに出くわした場合はその時点で検索を中止できる。
この方法によれば例えば1024個の登録データから検索する場合、単純に検索した場合は最大1024回の検索が必要であり、平均512回の検索が必要であるが、本方法で最大９回の検索で確実に管理データの有無とその場所を突き止めることができる。もし管理アドレス値が登録されていなければ、この管理アドレス値のデータは不良領域に該当しないため、正常なブロックのデータとしてアクセスすることができる。もし不良登録されていれば、置き換えアドレス値の領域をアクセスすることにより、所望のアクセスを実行できる。なお置き換え領域は、データ記憶領域の最後の領域を使用すると、アクセスの実行が容易になる。
この場合の記憶領域の使用マップを第２図に示した。11は全記憶領域であり正常記憶領域、不良ブロックおよび置き換え領域全てを含んでいる。12は通常データ領域であり、正常ブロックと不良ブロックからなる。13は置き換え領域で全記憶領域の最下の領域を占めている。14は通常データ領域内の不良ブロックである。15は置き換え領域内の不良ブロックである。通常データ領域内の不良ブロックは置き換え領域内の不良ブロックでないブロックと対応して置き換えられることを示している。
さらに使用例の説明を加えれば、先ほど例に上げた日立製の32Mビットフラッシュメモリを使用し、20チップの半導体記憶装置を構築した場合、ブロック数は163840ブロックとなる。このアドレス値は18ビットであるため、不良アドレス登録は１つの登録に18ビットが必要になる。一方不良数の上限が全体の５％であるとすると、最大8192ブロックの不良が存在する。これは14ビットで表せる。
従って一つの不良登録に不良アドレス値と置き換えアドレス値で合計32ビットのデータが必要になり、8192ブロック分で256Kビットのメモリが必要になる。しかし現在ではこの程度の容量のメモリは非常に安価である。この例では通常データ領域は163840−8192＝155648ブロックが全記憶容量である。ただし不良登録メモリが不揮発製メモリである場合には、不良登録データを不揮発性メモリに格納するため、さらに64ブロックが使用される。
第３図は不揮発性メモリ１内の管理情報領域の使用方法を説明した図である。図中、21は本発明の記憶装置の記憶媒体である不揮発性メモリのデータ格納内容を図で示したもの、22は不揮発性メモリの物理アドレスで１（０から始まるものとする）の記憶ブロック、23は物理アドレス２のブロック、ただしこのブロックは不良ブロックであるものとする。24は物理アドレス４のブロック、25は物理アドレス７のブロックである。
30は物理アドレス１のブロックに格納されている管理アドレス１のデータ、31は物理アドレス４のブロックに格納されている管理アドレス７のデータ、32は物理アドレス７のブロックに格納されている管理アドレス４のデータである。すなわち管理アドレス４と７のデータは入れ替えられている。これは管理アドレス７のデータが書き換えが頻繁に行われる特性を有したデータであったため、物理アドレス７のブロックの劣化の進行を抑えるために、物理アドレス４のデータと入れ替えたためである。
26、27、28、29はそれぞれの物理アドレスのブロックに対応する管理情報領域であり、そのブロックが格納しているデータの管理アドレスが登録されている。本半導体記憶装置の制御回路２は、管理アドレス１のアクセスが要求されたら、物理アドレス１の管理情報領域26をアクセスし、そこに登録されている管理アドレス値が１であれば、そのブロックのデータをアクセスすることにより、所望のアクセスが実行できる。もしこの例の状態で管理アドレス４をアクセスする場合には、物理アドレス４の管理情報領域28をアクセスし、そこに登録されている管理アドレス値７から、物理アドレス７をアクセスすることにより、所望の管理アドレス４のアクセスが実行できることがわかる。
さて、この状態の次に、管理アドレス７がさらに書き換えを頻繁に行われたために物理アドレス４のブロックも劣化の進行を抑えるべきと判断された場合には、まず、管理アドレス４のデータを物理アドレス４に移し、元に戻してから次に入れ替えの対象となるブロックと入れ替えを行う。本例では管理アドレス１がその対象に選ばれている。入れ替え後の状態を第３図（ｂ）に示している。
もしこの作業を行わないと、管理アドレス１と４と７で三つ巴の入れ替えが起きたことになり、例えば管理アドレス１をアクセスしようとしても、まず物理アドレス１の管理情報領域26をアクセスして管理アドレス７を得、次に物理アドレス７をの管理情報領域29をアクセスして管理アドレス値４を得て所望のアクセスを行うことができる。もしさらに入れ替えが起き続ければ、所望のアクセスを行うために管理情報領域のアクセスのたらい回しが起き、アクセス処理性能を著しく低下させてしまうこととなる。
第４図及び第５図は本発明の半導体記憶装置の動作フローを示している。第４図ではアクセス要求があった際に、アクセス要求のアドレスのデータが物理的に何処に格納されているかを知るための物理アドレスの把握を行うためのフローである。まず不良アドレス登録メモリを２等分割する。例えば64Kバイトのメモリであれば32Kバイトに分割する。
次に下位側の先頭アドレスをアクセスする。64Kバイトのメモリではそのときのアドレス値は8000Hである。そしてメモリ上のこのアドレスをアクセスしたときのデータ（格納データのビットで数は、不良登録アドレス総数による。）とアクセス要求のアドレスとを比較し、要求アドレスより大きければ要求のアドレスは２分割のうち小さいアドレスが格納されている側に存在する可能性があり、小さければその逆である。
なぜなら、不良登録メモリ内のアドレス値は昇べき順あるいは降べき順に並んでいるからである。また、このとき２つのアドレス値が一致することもありえる。この場合は不良登録されていることが判明したため、代替アドレスを読み出し、これを求める物理アドレスとしてアクセスすることができる。さて次に存在が推定される側の領域を２等分割し、同様にアクセス要求のアドレスと比較し、どちら側にあるかを推測する。
２分割した領域のどちらにあるかが推測できたらさらにその領域を２等分割するが、最終的には領域が２分割できなくなる。分割不可になっても要求アドレスに一致しなかった場合は、不良登録されていないアドレスということで、その物理アドレスの管理領域をアクセスして管理アドレスを取得し、もし物理アドレスと管理アドレスが一致すればその領域がアクセス要求された領域であり、一致しなければ取得した管理アドレス値に等しい物理アドレスの領域がアクセス要求された領域である。
このフローの処理はリードにおいてもライトにおいても行われる。リードにおいてはこの処理によってえられた物理アドレスをアクセスし、データを送り出せばアクセス処理は完了するが、ライトにおいては更に第５図の処理が必要となる。まず、得られた物理アドレス（１）に格納されているデータは既に新しいデータが存在するので不必要となり消去される。
このとき当物理アドレス（１）が書き換えが頻繁に行われたことによる、アドレス入れ替えの必要性があるかがチェックされる。その方法の一例としては、書き換え回数を記録しておき一定の回数に達したら入れ替えの必要性ありと判断する。もし入れ替えの必要がなければそのまま与えられたデータを当物理アドレス（１）に書き込めばアクセスは完了する。
もし入れ替えの必要があると判断されたら、次に入れ替え対象の物理アドレス（２）を選定する。選定方法の一例としては先ほどの書き換え回数の記録を検索し、回数の少ない領域を選び出すというものが考えられる。選定が終了したら、次に書き込み対象となっていた物理アドレス（１）の管理アドレス値（１）を物理アドレス値（１）と比較し、一致すればそのセクタは入れ替えが行われた状態のセクタでないため、そのまま入れ替え対象の物理アドレス（２）に格納されているデータを消去済みの物理アドレス（１）に書き込み、そして物理アドレス（２）を消去して与えられた管理アドレス（１）のデータをそこに書き込めばアクセスは終了である。
もし物理アドレス値（１）と管理アドレス値（１）が一致していなければ、入れ替えが行われている領域であるため、まずその入れ替えをキャンセルしなければならない。管理アドレス値（１）は入れ替え対象になった物理アドレス値（３）を示しているため、ここに格納されているデータを消去済みの物理アドレス（１）に転送し、入れ替えをキャンセルする。
次に物理アドレス（３）を消去して新たな入れ替え対象である物理アドレス（２）のデータを書き込む。そして最後に物理アドレス（２）を消去して与えられた新しい管理アドレス（１）のデータを書き込んで書き込みは完了する。以上が書き込みの際の処理である。
以上により、本発明の記憶装置の実施例の動作説明を終了する。本実施例によれば、現状の磁気ディスク記憶装置と互換性のある半導体記憶装置が容易に実現できる効果がある。
次に他の実施例を第６図ないし第10図を用いて説明する。各図において、既出の番号は前出と同様のものを指す。
第６図は本発明を適用したフラッシュメモリカードの構成図である。第６図において、50は、上記フラッシュメモリカード、51は本発明を適用するコントローラ、52は記憶媒体であるところの電気的に書換可能な不揮発性メモリ（以下、メモリという）で、メモリ52内部は所定の大きさを持つ領域（以下、本実施例ではブロックという）ごとに分割されているが、各ブロックはホストからの格納データを記憶する格納データ領域53と、該格納データ領域53を管理する管理情報を記憶する管理情報領域54とからなる。
格納データ領域53と管理情報領域54を併せてブロックという。本実施例ではメモリ52として格納データ領域53が512byte、管理情報領域54が16byteの構成となっているメモリを用いるものとして説明を行うが、これに限定される必要はない。55は格納データ領域53内データの一部、または全部のエラー訂正コードを生成し、また、生成したエラー訂正コードを用いて、転送あるいは記憶において発生した誤りを検出、訂正する格納データ領域53用ECC（Error Cor−recting Code＝誤り訂正コード）回路（以下、データECC回路という）であり、56は同じく管理情報領域54用ECC回路（以下、管理ECC回路という）である。なお、ECCとは、訂正対象データそのものを含む場合もあるが、本実施例においては、訂正対象データと別に扱う。
57は、パーソナルコンピュータ等、図示していないホストからのアクセスに応じて、ホストとのデータ授受をシステムバス５を通じて行うI/F制御回路である。システムバス５とは、たとえばPC Card Stan−dard、AT Attachment Interfaceなど、標準規格インタフェースを指す。58は、ホスト、メモリ52、データECC回路55/管理ECC回路56、後述するバッファ間のデータ転送を制御するデータ転送制御回路である。
59は、格納データ53の転送に際して一時的にデータを保持するデータ用バッファであり、60は同じく管理情報領域54用バッファであり、さらにそれぞれのバッファ59、60をA,B2組備えている。61はそれぞれ２組のバッファ59、60を切り替えるホスト側バッファ切り替え回路で、62は同じくメモリ側バッファ切り替え回路であり、63は、これら全体を制御するCPUである。
第７図は、管理情報領域54の内容の一例であって、66はデータECC回路55が生成した、格納データ領域53への格納データ用エラー訂正コード（以下、データ用ECCという）、67は、本管理情報領域54に対応する格納データ領域53に格納されているデータの種類、たとえば構成情報データであるとかドライブ情報のデータであるとか通常ファイルのデータであるなどの識別を示す識別コードや劣化平均化のための入れ替えアドレスを記録する格納ブロックコード、68は、当該ブロックの劣化の度合を決められた数値で記録する劣化記録で、例えば当該ブロックの消去回数などが適当である。
69は、各ブロックに予め決めたコードを格納し、読み出し時に調べることにより、不良になっていないかどうかを識別するための良ブロックコード、70はこの管理情報領域54に対するエラー訂正コード（以下、管理用ECCという）である。ただし、管理用ECC70は管理情報領域54内すべてのデータに対応する必要はなく、例えば、データ用ECC66はそれ自体が誤り訂正の対象になっているため、管理用ECC70の対象にする必要はない。また、良ブロックコード69は、エラー検出能力に優れていることが望ましく、訂正能力を持たなくてもよい。
第６図の構成における動作の概要を説明する。
最初に、図示していないホストがシステムバス５を通して、指定アドレスへの書き込みコマンドと書き込みデータを転送してくる。本実施例では、フラッシュメモリカード50はハードディスクと互換性を持たせることとしており、書き込みは、ハードディスクと同様の、シリンダ、ヘッド、セクタ番号等で指示することができるものとする。データ転送制御回路58は書き込みデータを、データバッファ59に一時的に格納する。書き込みデータの受け入れと同時にCPU63は、書き込みコマンドとホストが予め設定した設置値とを解析して、アドレス計算を行い、後述する方法よりメモリ52内の該当するブロックを探し出す。
メモリ52として、ここで消去処理が必要なものを使っている場合は、消去処理を行う。
次にCPU63の制御によりデータ転送制御回路58はデータバッファ59内の格納データを上記該当ブロックの格納データ領域53へ書き込む。さらに、データECC回路55によりデータ用ECC66を生成すると共に、書き込みブロックを探すときに管理情報領域54から読み込んだ管理情報内の劣化記録68等を新たな格納に従って変更して、対応する管理用ECC70を管理用ECC回路56により生成する。データ転送制御回路58はこれらの管理情報を格納データの書き込みに続いて同じブロックの管理情報領域54に格納する。格納データと管理情報は１つのブロックとしてまとめてメモリ52へ書き込まれる。
なお、ホスト側バッファ切り替え回路61と、メモリ側バッファ切り替え回路62を用いて、ホストから送られてきた格納データとメモリ52から読み込んだ管理情報とを、それぞれ異なる組のバッファに格納するように制御すれば、平行処理により時間を短縮することができる。
ホストが格納データの読み出しを要求してきた際には、格納の時と同様にCPU63とデータ転送制御回路58は読み出しコマンドに従って該当するブロックをメモリ52内より探し、メモリ52から格納データを読み出し、バッファ59に格納する。次にデータ用ECC66を用いて格納データ領域53のデータの誤り検出を行い、誤りがなければそのままホストに転送する。誤りが検出されれば訂正してホストに転送して、それと共にCPU63は当該ブロックを不良ブロックとして扱い代替処理を行う。もし訂正不可能な誤りが検出された場合にはエラー発生をホストに報告する。
複数のブロックがアクセスされた場合には、２組のデータバッファＡ、Ｂを交互に使用することにより、メモリ52から読み出すと同時に、平行してホストへデータ転送を行う。
ホストが書き込みを要求してきた際に、消去が必要であれば、上記と同様に該当ブロックを探し、消去を行う。その際、劣化記録68を調べ、入れ替えが必要であったら、公知の方法で入れ替えブロックを選んでその内容を読み込み、格納ブロックコード67を書き換え、格納データ領域53と管理情報領域５の内容を、劣化記録68を除いて入れ替える。消去を行った場合は、所定の方法に基づき必要であれば劣化記録68を更新する。
さらにメモリ52からのデータ転送がホストとの転送より速い場合には、余った時間で次にアクセスするブロックについて、２つのデータバッファを用いて後述する不良チェックや代替アドレスの検索などが可能となり、高性能化に寄与する。
次に、本発明の特徴である、ホストからのアクセス要求に対するブロックの検索の方法を第８図、第９図を用いて詳細に説明する。
第８図はホストからアクセス要求がきた際に、CPU63がアクセスコマンドからメモリ52上の物理的なアドレス値を割り出すまでの処理を示したものである。
通常ホストはアクセスに際して、メモリ上のデータ格納位置を意識せずにアクセスする。本実施例では、メモリカードはハードディスク置き換えを想定しているため、ホストは上述の通りハードディスクと同様のアクセスコマンドを発行する。
CPU63は、I/F制御回路57から上記コマンドを受け取りメモリ上のデータ格納の配置に対応する論理アドレス値を算出する（ステップ801）。次に算出した論理アドレス値でメモリ52の該当アドレスをアクセスし（ステップ802）、管理情報領域54に格納されていた管理情報を読み込む。なお、メモリ52内部では、アドレスに従って１ブロックの内容が全てメモり52内のバッファに読み出され、そのバッファから管理情報または格納データのみがコントローラ51へ送られるものとする。この管理情報から、当該ブロックが使用可能な良ブロックか否かを判別する（ステップ803）。この判別方法については第９図を用いて後ほど説明する。
次に判別結果により以下のような処理に分岐する。まず良ブロックであると判別した場合（ECCによる訂正を行ってもよい）には、CPU63は、バッファ60に読み込んだ当該管理情報領域54内の格納ブロックコード67を取得する（ステップ804）。格納ブロックコード67に格納された入れ替えアドレス値を本ブロックをアクセスするに至った論理アドレス値と比較し（ステップ805）、一致すれば入れ替えが発生していないブロックであるため、そのまま当該ブロックがアクセスブロックであると判断してアクセスする（ステップ806）。読み込みアクセスでは、上記メモリ52内のバッファから格納データを読み込む。書き込みアクセスでは、すでにバッファ59に設定されている格納データに対応した管理情報を生成して書き込む。
一致しなければ入れ替えが発生しており、格納ブロックコード67内の入れ替えアドレス値に該当するブロックがアクセスブロックであると判断できるため、格納ブロックコード67が示す物理アドレス値のブロックを新たにアクセスする（ステップ807）。入れ替えられたブロックをアクセスする際に、更に良ブロックチェックを行ってもよい。
一方、ステップ803で不良ブロックであると判定した場合には、後述する不良登録領域を新たにアクセスする（ステップ808）。不良登録領域に登録されていれば（ステップ809）、その登録値すなわち代替アドレスを取得し、該当する物理アドレス値のブロックをアクセスする（ステップ810）。
もしここで不良登録されていない場合には、新たに発生した不良ブロックであり（ステップ811）、当該ブロックのアクセスは不可能である。読み出しアクセスの場合は、CPU63は、ホストにアクセスエラーを報告する。書き込みアクセスの場合は、データは書き換えられるためエラーをホストに報告する必要はなく、代替ブロックを割り当てて、そちらにデータを格納する。同時に、CPU63は、不良登録領域84内の不良ブロックに対応する領域に、代替ブロックアドレスを書き込む。
上記不良ブロック情報を外部のメモリではなく内部に持つ場合、先に不良ブロック情報をサーチすると次のような問題点があった。すなわち、不揮発性メモリのアクセス時間が長いため、サーチに時間がかかる。さらに、フラッシュメモリのアクセスはブロック単位なので、個々の不良登録情報を得るには、不良登録情報をまとめて読み込み、そのなかをシーケンシャルアクセスすることになる。そのため、不良登録領域の最後の方の情報はアクセスに時間がかかる。
上記方法はこれを解決するもので、まず、不良登録領域をサーチするのではなく、論理アドレスを用いて該当するブロックをアクセスする。そして、本発明はその管理情報領域から得られる情報で、そのブロックが不良であると判断した場合に、初めて不良登録領域をアクセスする方法である。したがって、良ブロックに格納されたデータを得るまでのメモリ52へのアクセス回数が少なくなり、ホストからみたアクセス時間が短くなる。
さらに、本発明は該当ブロックが不良ではなく、書き換え回数平均化などの目的でブロックを入れ替えられている場合は、格納ブロックコード67内のアドレス情報に従ってアクセスを行う方法である。
さらに、メモリ52の該当ブロックが不良である場合は上記管理情報領域54内の情報にも信頼性がないので、本発明は、代替ブロック情報を格納ブロックコード67などには置かず、別に設けた不良登録領域に置く方法である。不良登録領域のアクセスでは、上述のようなシーケンシャルアクセスの影響が出るが、不良発生率が低いので、問題にならない。
次に、上述の不良登録の方法について、詳細に説明をする。
第９図はメモリ52内部のメモリマップ例と不良登録領域中の１ブロックの格納データ領域53に登録された内容を示している。図中、81は記憶領域全体あるいは記憶領域の一部、すなわちメモリの１チップなどのメモリマップ、82はその中で論理アドレス値に対応してデータを格納する一般格納ブロック群、83は一般格納ブロック中に存在あるいは発生した不良ブロックを代替してデータ格納を行う代替ブロック群、84は代替を行った場合の代替アドレスを登録する不良登録領域である。不良登録領域84では、格納データ領域53の部分に代替アドレスを登録する。
不良登録領域84は、一般格納ブロック群82の全ブロック分の登録領域が確保されており、また、一般格納ブロック群82の各ブロックと不良登録領域84中の対応する登録領域は対応付けられている。本実施例では、一般格納ブロックのアドレス順に不良登録領域に割り当てられているものとするが、これには限定されない。
本実施例では、第９図に示したように不良登録は１ブロックにつき２バイトが割り当てられており、85は、一般格納ブロック82の該当ブロック（アドレス0000）が不良ではない場合を示しており、一例としてFFFFが登録されている。不良でないことを示す値としては、代替ブロックアドレスになり得ない値であればよいが、前述の第８図ステップ809における不良登録されているか否かの判断を簡単にするために、全ビットを１あるいは０にすることが望ましい。86は、一般格納ブロックアドレス0003のブロックが不良登録されており、代替ブロックアドレス0003のブロックと代替が行われていることを示している。さらに、一般格納ブロックアドレス0006、0007は、代替ブロックアドレス0004、0005と代替されていることを示している。
代替アドレスは代替ブロック群83内部のアドレス割り当てで充分であるため、少ないバイト数で登録が可能である。登録値がFFFFかそれ以外のアドレス値が格納されているかにより、不良登録されているか否かが判別できる。なお、不良登録領域84にもECCを生成し、信頼性を向上させることが望ましい。一般格納ブロックと同様の手順でECC回路を応用すればよい。
次にアクセスされたブロックが不良か否かを判定する処理について説明する。
第10図は、ブロックの良／不良判定フローチャートであり、第８図の全体フローチャートの中の良ブロックチェック（ステップ803）を詳細に説明するものである。
まず、CPU63は、求めた論理アドレスにより、該当ブロックをアクセスし、管理情報領域54内の管理情報を読み込む（ステップ1001）。読み込んだ管理情報の管理用ECC70を用いて、取得した管理情報の誤り検出を行う（ステップ1002）。ここで誤りなし、訂正可能な誤り検出、訂正不可能な誤り検出の３状態に分岐する。訂正不可能な誤り検出の場合は不良ブロックと判断し、不良登録領域84の検索に移行する（ステップ808）。訂正可能な誤り検出の場合は訂正処理を実行する（ステップ1003）。誤りなしの場合、または訂正実行後の場合は、読み込んだ良ブロックコード69をチェックする（ステップ1004）。
良ブロックコード69は第７図でも説明したとおり、全ブロック共通の特定コードを格納しておき、一致不一致を確認するものである。もし、管理用ECC70によるチェックでエラーが検出されなかったのに、良ブロックコード69が一致しなかった場合には、誤検出が発生したと判断する。すなわち、誤りの発生が偶然、誤りなしのコードと一致してしまった場合に起る現象である。
また、同様にエラー訂正処理を行ったにも係わらず良ブロックコード69が不一致であった場合には、誤りの発生が偶然にして訂正可能なコードと一致してしまい誤訂正が行われた、と考えて不良ブロックと見なし、不良登録領域84の検索処理に移行する。それ以外では誤りなしか、訂正済みの良ブロックと判断する。
なお、誤検出あるいは誤訂正後に良ブロックコードが偶然にして一致してしまうケースも当然考えられる。しかしながら、誤検出、誤訂正自体の発生確率は非常に低く、さらに良ブロックコードが一致してしまうような確率は現実的に起りえないと判断できる。また、このような判断は、誤検出率、誤訂正率が大きくないECC方式を採用し、良ブロックコードのビット数も多くすることにより行えるものである。
以上述べたように、本実施例に依れば、
1.不良ブロックの情報はメモり52内の不良登録領域84に登録しているので、外部登録メモリが不要である。
2.先に、論理アドレスに対応するブロックの管理情報を見て、良／不良を判定しているので、先に不良登録情報をサーチする方法に比べ、コントローラ51からメモリ52へのアクセス回数が少なくなり、したがって、目的のデータを得るまでのホスト側からみた場合のアクセス時間が早くなる。
という効果がある。
従って、不良ブロックの判別において処理速度と信頼性の向上が可能で、記憶装置自体の高速化、高性能化、高信頼化が実現できる。また、外部メモリを使わないため、低価格化にも効果がある。
なお、上記実施例のコントローラ51とメモリ52を一つのチップに集積することにより、メモリ52内のバッファとコントローラ51内のバッファ59、60をまとめることができて、回路規模を削減することができるという効果が得られる。さらに、コントローラ51とメモリ52間の信号線も不要になるため、より端子数の少ないパッケージを用いることができるという効果もある。
産業上の利用可能性
本発明によれば、部分的に不良を含むメモリチップを使用する半導体記憶装置において、アドレスの入れ替えや代替を行ったことによる変換アドレス登録に用いるメモリを容量削減あるいは削除することができ、さらに不良の検索が高速に行える。したがって、アクセスの高速化と、低価格化が可能になる。
また、書き換え回数に制限のある不揮発性メモリを使用し、アドレスを入れ替えても、高速にアドレス検索が可能で、アクセス性能を向上することができる。
【図１】
0003614173.tif 000002
【図２】
0003614173.tif 000003
【図７】
0003614173.tif 000004
【図３】
0003614173.tif 000005
【図４】
0003614173.tif 000006
【図５】
0003614173.tif 000007
【図６】
0003614173.tif 000008
【図８】
0003614173.tif 000009
【図９】
0003614173.tif 000010
【図１０】
0003614173.tif 000011