(57)【特許請求の範囲】
【請求項１】
複数のブロックを有し、
前記ブロックは複数のページを有し、
前記ページはデータを書き込むデータ領域と冗長領域とを有し、
前記ブロックの最初の前記ページの前記冗長領域は、そのブロックに書き込まれた前記データが無効か否かを示すブロックデータ無効化フラグを有し、
前記ブロックの最後の前記ページの前記冗長領域は、そのブロックに書き込まれた前記データが有効か否かを示すブロックデータ有効化フラグを有する、
不揮発性メモリの制御方法であって、
１つの消去済みブロックを確保するステップと、
前記確保されたブロックにおいて、前記複数のページから順次１つのページを特定するステップと、
前記特定されたページの前記データ領域にデータを書き込むデータ書き込みステップと、
前記特定されたページが前記最初のページの場合には、前記最初のページの前記冗長領域の前記ブロックデータ無効化フラグを、前記確保されたブロックに書き込まれた前記データが無効でないことを示すようにするステップと、
前記特定されたページが前記最後のページの場合には、前記最後のページの前記冗長領域の前記ブロックデータ有効化フラグを、前記確保されたブロックに書き込まれた前記データが有効であることを示すようにする有効化ステップと、
を有することを特徴とする不揮発性メモリの制御方法。
【請求項２】
前記確保されたブロックに書き込まれるデータの正当性を確認するか否かを判断するステップと、
前記データの正当性を確認すると判断された場合に、前記データ書き込みステップ後データ正当性チェックを行い前記有効化ステップを実行するステップと、
を更に有することを特徴とする請求項１に記載の不揮発性メモリの制御方法。
【請求項３】
前記不揮発性メモリは複数のフラッシュメモリチップで構成され、
元のデータを新たなデータに更新する場合に、前記新たなデータが書き込まれる１つのブロックを、前記元のデータが書き込まれているブロックが配置されている前記フラッシュメモリチップとは異なる前記フラッシュメモリチップから選択し、
前記新たなデータが書き込まれた前記ブロックについて行う有効化ステップと、前記元のデータが書き込まれた前記ブロックの前記ブロックデータ無効化フラグを前記元のデータが無効であることを示すようにする無効化ステップとを、同時に実行することを特徴とする請求項１に記載の不揮発性メモリの制御方法。
【請求項４】
前記冗長領域は論理アドレスと、前記ブロックに書き込まれた前記データの新旧を明確にする履歴情報とを更に有し、同一の前記論理アドレスを有する複数のブロックがある場合には、前記履歴情報に基づいてどのブロックのデータが現在有効であるかを判断する判断ステップを更に有することを特徴とする請求項１に記載の不揮発性メモリの制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、不揮発性半導体メモリ及び不揮発性半導体メモリの制御方法に関する。
【０００２】
【従来の技術】
近年、音楽や映像データを扱う携帯機器の記憶装置として、フラッシュメモリ等の不揮発性メモリを用いた記憶装置が注目されている。
フラッシュメモリの構造について、５１２ＭビットＮＡＮＤ型フラッシュの場合を例に取り説明する。
図２は、５１２Ｍビットフラッシュメモリの物理ブロック構成例である。１フラッシュメモリは４０９６個のブロックにより構成されている。このブロックは消去の基本単位になっている。１ブロックはさらに３２ページに分割され、１ページは読み出し、書き込みの基本単位となる。１ページの容量は５２８バイトであり、そのうち５１２バイトはデータ領域、残り１６バイトは冗長領域である。データ領域はユーザが使用する領域であり、冗長領域は不揮発性メモリ記憶装置のシステム制御部が使用する領域である。
実施例のフラッシュメモリの各データは、消去状態(消去済みで未記憶)において１である。従ってフラッシュメモリに１を書き込むことを何も書かないことに置き換えてもよい。
【０００３】
図３は、従来のフラッシュメモリの物理ブロック内の構成図例である。１物理ブロックの冗長領域に書かれている主なデータを表わしている。最初のページの冗長領域に、書き込み済みフラグ１０１、論理アドレス１０２、ブロックデータ無効化フラグであるフラグ１  １０３の３つが配置されている。これらの各データについては後で説明する。
【０００４】
図４は、論理アドレスと物理アドレスの関係を表す図である。フラッシュメモリを用いた不揮発性メモリ記憶装置においては、外部から指定される論理アドレスと、フラッシュメモリ内に配置される物理アドレスは一般的に一致しない。一致させると、フラッシュメモリ内で不良が発生したブロックのアドレスが使用できず、アプリケーションに負担がかかったり、あるいは特定アドレスに書き込みが頻発するシステムでは、そのアドレスに該当するブロックが短期間で書き換え保証回数を上回り短寿命になってしまう、という不都合が生じるからである。
従って図３のように、物理ブロックは自分がどの論理アドレスに割り当てられているか冗長エリアの中に記憶している。一般的に不揮発性メモリ記憶装置のシステム制御部は、電源投入時に全フラッシュメモリの冗長領域に書かれている論理アドレス情報を読み出し、図５のような論理アドレスと物理アドレスを変換する論理物理アドレス変換テーブルをＲＡＭ上に作成する。システム制御部は、コマンド処理時に、外部から指定される論理アドレスに対し、その論理物理アドレス変換テーブルで物理アドレスを特定し、その物理アドレスに対しアクセスを行う。
【０００５】
図６から図８を用いて、従来の一般的な書き込み手順について説明する。図６は、１ブロック書き込み処理概要フローチャートである。図７は、図６のステップ６０３における新データ書き込み処理部の詳細フローチャートである。図８は、図７のステップ７０６における冗長領域データ作成処理部の詳細フローチャートである。
【０００６】
図６において、ステップ６０１でエントリテーブルより消去済みブロックを検索する。エントリテーブルは消去済みで未書き込みのブロックの一覧表で、前記論理物理アドレス変換テーブルと同様に、電源投入時に全フラッシュメモリの冗長領域に書かれている書き込み済みフラグを読み出しＲＡＭ上に作成されるテーブルである。ステップ６０２でエントリテーブルを更新し、消去済みブロックを確保する。ステップ６０３で確保したブロックにデータを書き込む(詳細は図７、８)。ステップ６０４で旧ブロックが存在するか否か論理物理アドレス変換テーブルより判断する。存在する場合は、ステップ６０５に進む。ステップ６０５で旧ブロックの先頭ページの冗長領域にあるフラグ１に０(無効)をオーバーライトし、旧ブロックを無効化する。存在しない場合は、ステップ６０５をスキップしてステップ６０６に進む。ステップ６０６で論理物理アドレス変換テーブルの旧ブロックの物理アドレスを新ブロックの物理アドレスに書き換え、このフローチャートを終了する。
【０００７】
なお、旧データの消去においては、物理的に消去する方法と、データが無効であることを表わすフラグにマーキングすることで見かけ上消去し別タイミングで物理消去を行う方法がある。後者の方が一般的に行われており、前記図６のフローチャートもこの方式で説明した。これはフラッシュメモリが物理的消去よりもフラグのオーバーライトの方が早いためであり、また複数のフラッシュメモリチップより構成された不揮発性メモリ記憶装置においては、他フラッシュメモリチップの書き込みを行っている間に、無効マーキングされたブロックを同時に物理消去すれば、その書き込みと消去を同時に行っている時間分だけ、全体として書き込み速度が高速になるからである。
【０００８】
図７において、ステップ７０１でＲＡＭ上に設けられたページカウンタを初期値(１)に設定する。ステップ７０２でホストから与えられたデータを書くページか否か判断する。ホストから与えられたデータを書くページであれば、ステップ７０３に進みホストからデータを１ページ入力する。ホストから与えられたデータを書くページでなければ、ステップ７０４に進み旧ブロックからデータを１ページ読み出す。ステップ７０５でデータ領域にデータをセットし、ステップ７０６で冗長領域にデータをセットする(詳細は図８)。ステップ７０７で１ページ書き込む。ステップ７０８でページカウンタを１加算する。ステップ７０９でページカウンタが３３以上か否か判断する。ページカウンタが３３未満の間はステップ７０２からステップ７０９を繰り返す。ページカウンタが３３になればこのフローチャートを終了する。
【０００９】
前記図７のステップ７０２からステップ７０４は、書き込み単位がページであり、消去単位がブロックであるため発生する処理で、巻き込み処理と呼ばれている。つまり外部から書き込みデータがページ単位で渡された時、それ以外のページに関しては、従来データをそのまま保持する必要があるため、変更する旧ブロックから読み出し、そのデータを合成して１ブロック分の書き込みを行っている。書き込み開始ページ、終了ページにより、前半巻き込み処理と後半の巻き込み処理がある。
【００１０】
図８において、ステップ８０１で先頭ページか否か判断する。先頭ページの場合はステップ８０２に進み書き込み済みフラグ１０１に０(書き込み済み)をセットする。ステップ８０３でホストから指示された論理アドレス１０２をセットする。ステップ８０４でフラグ１  １０３に１(無効でない)をセットし、このフローチャートを終了する。ステップ８０１で先頭ページでない場合はこのフローチャートを終了する。
【００１１】
このようなシステムにおいて、ブロックを上書きしている途中に、記憶装置の電源遮断や記憶装置へのリセット命令等で強制的な中断が発生した場合、同一論理アドレスに２つの物理アドレスが存在することになる。この現象は前述の手順のうち、新ブロックデータの書き込み(ステップ６０３)の途中、もしくは新ブロックデータの書き込み(ステップ６０３)が完了し旧ブロックデータの無効化(ステップ６０４)が行われる前に中断した場合に発生する。
【００１２】
この現象が発生した後の初期時の論理物理アドレス変換テーブル作成時、どちらか一方のブロックの物理アドレスを論理物理アドレス変換テーブルに登録し、他方のブロックデータと論理アドレスとが書き込まれたブロックを放置した場合、登録したブロックを消去して電源を再投入した時、新たにＲＡＭ上に生成される論理物理アドレス変換テーブルにおいて、消去したはずの論理アドレスに他のブロックの物理アドレスが登録される。結果として消去したはずのアドレスが消去されていないといった現象が発生する。
また、古いブロックデータが書き込まれたブロックと、新しいブロックデータが書き込まれたブロックとに、同一の論理アドレスを書き込んだ状態で中断し、次に電源を再投入した場合、古いブロックデータが書き込まれたブロックの物理アドレスが論理物理アドレス変換テーブルに登録される可能性がある。この場合新しいブロックデータが消失したことになる。いずれにせよシステムとして致命的な現象が発生する。
【００１３】
従来は、初期時の論理物理変換テーブルの作成時、同一論理アドレスに物理アドレスの重複が発見された場合、一方のブロックを無効化して重複を解消する処理が行われてきた。両ブロックの選択方法は、両ブロックのデータ読み出しを行い、ページ毎に設けられたエラー訂正符号を確認してエラーの無いブロックを選択する、あるいは最終ページまで書き込まれたブロックを選択する、といった方法が取られてきた。
【００１４】
【発明が解決しようとする課題】
近年のフラッシュメモリ及び不揮発性メモリ記憶装置の大容量化に伴い、論理物理アドレス変換テーブル作成処理を高速に行う必要性がでてきたが、前記アドレス重複解消処理が高速化の大きな障害となっている。ハードウェアによる論理物理アドレス変換テーブル作成が一般的だが、アドレス重複情報をソフトウェアに引継いで処理を行う方法は論理物理アドレス変換テーブル作成の速度を大きく低下させる。ハードウェアで全て処理するとしても、アドレス重複解消に従来の複雑な判断処理を行うと、その処理に伴うハードウェア面積が増大し、価格の上昇につながってしまう。
【００１５】
さらに、重複した両方のブロックが、物理的に最終ページまで正しく書き込まれた状態でも、データ領域の内容により正しいブロックを選択しなければならない場合がある。例えば、上書き処理において、新データの書き込みが行われた後、そのデータの中に含まれるエラー訂正符号を確認したり、あるいはそのデータの値を異常値かどうか判定し、正当性を確認して初めて旧データを無効化する、といった処理が必要なデータの場合である。このような場合、例えば単純に書き込み時期の新しい方のデータを選択するといった方法では解決できず、データ個々の事情に応じてデータ領域まで走査し、正しいブロックを判断、選択する処理を行う必要があるが、全てハードウェアで実現するのは困難である。
本発明は、このような問題点に鑑みてなされたものであり、簡単な構造の追加で、信頼性を確保しつつ、論理物理アドレス変換テーブルが高速に作成可能な記憶装置を提供することを目的とする。
【００１６】
【課題を解決するための手段】
上記課題を解決するため、本発明は下記の構成を有する。
請求項１に記載の発明は、複数のブロックを有し、前記ブロックは複数のページを有し、  前記ページはデータを書き込むデータ領域と冗長領域とを有し、前記ブロックの最初の前記ページの前記冗長領域は、そのブロックに書き込まれた前記データが無効か否かを示すブロックデータ無効化フラグを有し、前記ブロックの最後の前記ページの前記冗長領域は、そのブロックに書き込まれた前記データが有効か否かを示すブロックデータ有効化フラグを有する、不揮発性メモリの制御方法であって、１つの消去済みブロックを確保するステップと、前記確保されたブロックにおいて、前記複数のページから順次１つのページを特定するステップと、前記特定されたページの前記データ領域にデータを書き込むデータ書き込みステップと、前記特定されたページが前記最初のページの場合には、前記最初のページの前記冗長領域の前記ブロックデータ無効化フラグを、前記確保されたブロックに書き込まれた前記データが無効でないことを示すようにするステップと、前記特定されたページが前記最後のページの場合には、前記最後のページの前記冗長領域の前記ブロックデータ有効化フラグを、前記確保されたブロックに書き込まれた前記データが有効であることを示すようにする有効化ステップと、を有することを特徴とする不揮発性メモリの制御方法である。
【００１７】
請求項２に記載の発明は、前記確保されたブロックに書き込まれるデータの正当性を確認するか否かを判断するステップと、前記データの正当性を確認すると判断された場合に、前記データ書き込みステップ後データ正当性チェックを行い前記有効化ステップを実行するステップと、を更に有することを特徴とする請求項１に記載の不揮発性メモリの制御方法である。
【００１８】
請求項３に記載の発明は、前記不揮発性メモリは複数のフラッシュメモリチップで構成され、元のデータを新たなデータに更新する場合に、前記新たなデータが書き込まれる１つのブロックを、前記元のデータが書き込まれているブロックが配置されている前記フラッシュメモリチップとは異なる前記フラッシュメモリチップから選択し、前記新たなデータが書き込まれた前記ブロックについて行う有効化ステップと、前記元のデータが書き込まれた前記ブロックの前記ブロックデータ無効化フラグを前記元のデータが無効であることを示すようにする無効化ステップとを、同時に実行することを特徴とする請求項１に記載の不揮発性メモリの制御方法である。
【００１９】
請求項４に記載の発明は、前記冗長領域は論理アドレスと、前記ブロックに書き込まれた前記データの新旧を明確にする履歴情報とを更に有し、同一の前記論理アドレスを有する複数のブロックがある場合には、前記履歴情報に基づいてどのブロックのデータが現在有効であるかを判断する判断ステップを更に有することを特徴とする請求項１に記載の不揮発性メモリの制御方法である。
【００２２】
【発明の実施の形態】
以下、本発明の実施をするための最良の形態を具体的に示した実施例について、図面とともに記載する。
【００２３】
《実施例１》
図１、６、７、９を用いて、本発明の実施例１の記憶装置を説明する。
図１は、本発明の実施例１のフラッシュメモリの物理ブロック内の構成図例である。１物理ブロックの冗長領域に書かれている主なデータを表わしている。最初のページの冗長領域に、書き込み済みフラグ１０１、論理アドレス１０２、ブロックデータ無効化フラグであるフラグ１  １０３の３つが配置されている。最後のページの冗長領域に、ブロックデータ有効化フラグであるフラグ２  １０４が配置されている。従来例(図３)との違いは、フラグ２  １０４が追加された点である。
【００２４】
書き込み済みフラグ１０１は、このブロックに書き込みがあったことを表わすフラグである。書き込み済みフラグ１０１は、１の時そのブロックが未書き込みであることを表し、０を書き込んだ時そのブロックが書き込み済みであることを表す。先頭ページに書き込む際に、合わせて書き込み済みフラグ１０１に固定値０を書き込めばそのブロックを書き込み済みにできる。１ブロックデータの書き込み中に中断することを考えると、書き込み済みフラグ１０１は先頭ページにあることが必要条件である。
【００２５】
論理アドレス１０２は、その物理ブロックが現在割り当てられている論理アドレスを示す。これはかならずしも先頭ページに配置する必要は無いが、論理アドレス１０２が前述の書き込み済みフラグ１０１を兼用すれば、先頭ページに配置することが必要となる。例えば１６ビットで論理アドレスを表現する場合では、論理アドレス１０２の値が消去状態の０ｘｆｆｆｆの時を未書き込みと割り付け、論理アドレス１０２の値が０ｘｆｆｆｆ以外の値であれば書き込み済みと判断する。実際の論理アドレスではその数値以外の値を取るように規則を決めれば、論理アドレス１０２が書き込み済みフラグを兼用することが可能である。
【００２６】
フラグ１  １０３は、ブロックデータ無効化フラグである。フラグ１  １０３は、１の時その物理ブロックが無効でないことを表し、０を書き込んだ時その物理ブロックが無効であることを表わす。新データを書き込む時は１のままとし、そのデータに上書きが発生した場合(そのブロックに書かれたデータが古いデータになった場合)、このフラグのみをオーバーライトにより０にすることで後から無効化できる。フラッシュメモリのオーバーライトとは、データを消去せず、そのまま上書きを行うことである。
フラグ２  １０４は、ブロックデータ有効化フラグである。フラグ２  １０４は、１の時その物理ブロックが有効でないことを表し、０を書き込んだ時その物理ブロックが有効であることを表わす。最終ページに書き込む際に、合わせてフラグ２  １０４に０を書き込めばそのブロックを有効化できる。１ブロックデータの書き込み中に中断することを考えると、フラグ２  １０４は最終ページにあることが必要条件である。
【００２７】
前述のように、書き込み済みフラグを先頭ページ、フラグ２を最終ページに割り当てる必要があるため、論理アドレス、及びフラグ１も、そのいずれかに割り当てる方が効率が良い。即ち、初期の論理物理アドレス変換テーブル作成においては、走査するページが少ない方が読み出す時間が短くなるためテーブル作成時間を短縮できるからである。
【００２８】
図６、７、９を用いて、本発明の実施例１のメモリシステムの書き込み手順について説明する。図６は、本発明の実施例１の１ブロック書き込み処理の概要フローチャートである。図７は、本発明の実施例１の図６のステップ６０３における新データ書き込み処理部の詳細フローチャートである。図９は、本発明の実施例１の図７のステップ７０６における冗長領域データ作成処理部の詳細フローチャートである。
【００２９】
図６において、ステップ６０１でエントリテーブルより消去済みブロックを検索する。ステップ６０２でエントリテーブルを更新し、消去済みブロックを確保する。ステップ６０３で確保したブロックにデータを書き込む(詳細は図７、９)。ステップ６０４で旧ブロックが存在するか否か論理物理アドレス変換テーブルより判断する。存在する場合は、ステップ６０５に進む。ステップ６０５で旧ブロックの先頭ページの冗長領域にあるフラグ１に０(無効)をオーバーライトし、旧ブロックを無効化する。存在しない場合は、ステップ６０５をスキップしてステップ６０６に進む。ステップ６０６で論理物理アドレス変換テーブルの旧ブロックの物理アドレスを新ブロックの物理アドレスに書き換え、このフローチャートを終了する。
【００３０】
なお、旧データの消去においては、物理的に消去する方法と、データが無効であることを表わすフラグにマーキングすることで見かけ上消去し別タイミングで物理消去を行う方法がある。後者の方が一般的に行われており、図６のフローチャートもこの方式で説明した。これはフラッシュメモリが物理的消去よりもフラグのオーバーライトの方が早いためであり、また複数のフラッシュメモリチップより構成された不揮発性メモリ記憶装置においては、他フラッシュメモリチップの書き込みを行っている間に、無効マーキングされたブロックを同時に物理消去すれば、その書き込みと消去を同時に行っている時間分だけ、全体として書き込み速度が高速になるからである。
【００３１】
図７において、ステップ７０１でＲＡＭ上に設けられたページカウンタを初期値(１)に設定する。ステップ７０２でホストから与えられたデータを書くページか否か判断する。ホストから与えられたデータを書くページであれば、ステップ７０３に進みホストからデータを１ページ入力する。ホストから与えられたデータを書くページでなければ、ステップ７０４に進み旧ブロックからデータを１ページ読み出す。ステップ７０５でデータ領域にデータをセットし、ステップ７０６で冗長領域にデータをセットする(詳細は図９)。ステップ７０７で１ページ書き込む。ステップ７０８でページカウンタを１加算する。ステップ７０９でページカウンタが３３以上か否か判断する。ページカウンタが３３未満の間はステップ７０２からステップ７０９を繰り返す。ページカウンタが３３になればこのフローチャートを終了する。
【００３２】
書き込み単位がページであり、消去単位がブロックであるため、ブロックに満たないデータの書き込みにおいては、巻き込みと呼ばれる処理が発生する。つまり外部から書き込みデータがページ単位で渡された時、それ以外のページに関しては、従来データをそのまま保持する必要があるため、変更する旧ブロックから読み出し、そのデータを合成して１ブロック分の書き込みを行っている。書き込み開始ページ、終了ページにより、前半巻き込み処理と後半の巻き込み処理がある。
【００３３】
図９において、ステップ９０１で先頭ページか否か判断する。先頭ページの場合はステップ９０２に進み書き込み済みフラグ１０１に０(書き込み済み)をセットする。ステップ９０３でホストから指示された論理アドレス１０２をセットする。ステップ９０４でフラグ１  １０３に１(無効でない)をセットし、このフローチャートを終了する。ステップ９０１で先頭ページでない場合は、ステップ９０５に進み最終ページか否か判断する。最終ページの場合は、ステップ９０６に進みフラグ２  １０４に０(有効)をセットし、このフローチャートを終了する。最終ページでない場合はこのフローチャートを終了する。
【００３４】
なお本説明では前述のフラグ、論理アドレスデータだけで説明しているが、実際のシステムにおいてはデータ誤り検出訂正符号等、他にもデータを書き込むことが一般的に行われている。ただしこれらのデータは本発明と関係しないので省略する。
従来例である図６から図８との違いは、図９で示したように冗長領域のデータ作成においてフラグ２に０(有効)を書き込む処理が追加された点である。データ作成時間は若干異なるがフラッシュメモリへの物理的な書き込みに要する時間は同じである。
【００３５】
次にフラグ１、２を使ったブロックデータの判定方法について説明する。従来はフラグ１だけであったが、フラグ１、２の組み合わせにより、以下のように判断を行うことができる。
そのブロックが書き込み済みとした場合、まずフラグ１＝１(無効でない)かつフラグ２＝０(有効)の時のみが有効ブロックであると判断する。
【００３６】
フラグ１＝１(無効でない)かつフラグ２＝１(有効でない)のケースは、書き込み途中で中断し、最終ページまで書き込みできなかった無効ブロックとみなす。この場合に、前記の手順でいえば旧ブロックの無効化を行う前のため、電源再投入した場合には旧ブロックが選択され、新データの書き込み自体が無かったことになる。
フラグ１＝０（無効）かつフラグ２＝０（有効）のケースは、上書きにより無効化されたブロックを表わす。
フラグ１＝０（無効）かつフラグ２＝１（有効でない）のケースは、正常な手順ではありえないが無効ブロックとみなす。
以上のように、書き込み時の中断が発生しても、２つのフラグによりそのブロックデータの有効、無効を判断することができる。
【００３７】
図１０を用いて、本発明の実施例１の電源投入時のテーブル作成手順について説明する。図１０は、論理物理アドレス変換テーブル作成処理のフローチャートである。
図１０において、まずはじめにテーブル作成のためテーブル領域を初期化する。ステップ１００１で論理物理アドレス変換テーブルを初期化する。論理物理アドレス変換デーブル上で、全論理ブロックを未割り付け状態に設定する。ステップ１００２でエントリテーブルを初期化する。エントリテーブル上で全物理ブロックを消去済み状態に設定する。ステップ１００３で無効テーブルを初期化する。無効デーブル上で全物理ブロックを無効に設定する。無効テーブルは、書き込まれたデータが無効であって未消去のブロックを表すＲＡＭ上に設けられたテーブルである。
【００３８】
ステップ１００４でＲＡＭ上に設けられたブロックカウンタを初期化する(ブロックカウンタ＝０)。ステップ１００５で書き込み済みフラグ１０１＝１(未書き込み)か否か判断する。書き込み済みフラグ１０１＝１(未書き込み)の場合は、エントリテーブルの該当ビットを消去済みにする。本フローチャートにおいてははじめにエントリテーブルを全て初期化(消去済み)としているため、この処理は不要である。ステップ１０１０に進み無効テーブルの該当ビットを有効にする。当ブロックの処理を終了し、ステップ１０１１に進む。ステップ１００５の判断において書き込み済みフラグを論理アドレスデータで兼用している場合も同様である。なお、未書き込みの場合は最終ページを読み出す必要は無い。
ステップ１００５で書き込み済みフラグ＝０(書き込み済み)の場合は、ステップ１００６に進みエントリテーブルの該当ビットを使用済みにする。
【００３９】
ステップ１００７でフラグ１＝１(無効でない)か否か判断する。フラグ１＝０(無効)の場合は、当ブロックの処理を終了しステップ１０１１に進む。フラグ１＝１(無効でない)の場合は、ステップ１００８に進みフラグ２＝０(有効)か否か判断する。フラグ２＝１(有効でない)の場合は、当ブロックの処理を終了しステップ１０１１に進む。フラグ２＝０(有効)の場合は、そのブロックを有効とみなし、ステップ１００９に進み論理物理アドレス変換テーブルに登録する。ステップ１０１０で無効テーブルの該当ビットを有効にする。ステップ１０１１でブロックカウンタに１を加算する。ステップ１０１２で最終ブロックか否か判断する。最終ブロックでない場合は、ステップ１００５に戻り次のブロックの処理を行う。最終ブロックの場合は、このフローチャートを終了する。
【００４０】
このように図１０の処理は、物理アドレスに従って順々に最終ブロックまで先頭ページと最終ページの冗長領域を読み出し、論理物理アドレス変換テーブル、エントリテーブル及び無効テーブルを作成する処理であり、ステップ１００８の判断が従来の処理に追加されただけの構造となっている。
なお実際の制御においては、本フローチャートのように、書き込み済みで無効であるブロックを記憶しておくテーブル(無効テーブル)を用意するシステムが一般的である。これは消去すべきブロックのリストというべきもので、上書きした場合に物理的に消去せず、前述のフラグ１により無効化マーキングするシステムにおいては、他のブロックの書き込み処理の時間を利用して並列に無効化されたブロックの消去処理を行う必要がある。この場合に、消去すべきブロックを検索する場合に使用される。従って、初期時だけではなく上書き時にも、旧ブロックの無効化に合わせて、このテーブル上のデータも更新されている。
【００４１】
以上のように、従来の書き込み手順、論理物理アドレス変換テーブル作成手順から大きな変更、追加を行うことなく、上書き途中の中断による同一論理アドレスに対する物理アドレスの重複の危険性を大きく低減させることができる。
【００４２】
《実施例２》
図７、１１、１２を用いて、本発明の実施例２のメモリシステムの書き込み手順について説明する。図１１は、本発明の実施例２の１ブロック書き込み処理の概要フローチャートである。実施例１(図６)との違いは、データ種別の判定(ステップ１１０３からステップ１１０５)と新ブロックの有効化(ステップ１１０７からステップ１１１０)を追加した点である。図１２は、本発明の実施例２の図７のステップ７０６における冗長領域データ作成処理部の詳細フローチャートである。実施例１(図９)との違いは、有効確認フラグによりフラグ２を設定する点(ステップ１２０６からステップ１２０７)である。
【００４３】
図１１において、ステップ１１０１でエントリテーブルより消去済みブロックを検索する。ステップ１１０２でエントリテーブルを更新し、消去済みブロックを確保する。ステップ１１０３で書き込みを行った後に正当性の確認が必要か否かデータの種類を判断する。必要な場合は、ステップ１１０４に進みＲＡＭ上に設けた有効確認フラグを１に設定する。不要な場合は、ステップ１１０５に進み有効確認フラグを０に設定する。有効確認フラグは、プログラム実行上仮に設定したフラグであって当該フラグはフラッシュメモリ上に書き込まれるわけではない。ステップ１１０６で確保したブロックにデータを書き込む(詳細は図７、１２)。
【００４４】
ステップ１１０７で有効確認フラグが１(必要)か否か判断する。有効確認フラグ＝１(必要)の場合、ステップ１１０８に進みホストから受け取ったデータの正当性チェックをする。例えば、データの訂正符号、取り得るべき値かどうかをチェックする。ステップ１１０９でそのデータの正当性チェックに従い分岐する。データが有効な場合は、ステップ１１１０に進み新ブロックの最終ページのフラグ２に０(有効)をオーバーライトし、新ブロックを有効化する。ステップ１１０７で有効確認フラグ＝０(不要)の場合、ステップ１１０６でデータ書き込み時に新ブロックの有効化を行っているため(後述する図１２の説明参照)、ステップ１１１１に進む。ステップ１１１１からステップ１１１３は図６のステップ６０４からステップ６０６と同じであるため説明を省略する。ステップ１１０９でデータが有効でない場合は、このフローチャートを終了する。
【００４５】
ステップ１１０６(図１１)において、図７に示す処理を行う。図７においては実施例１と同じであるため説明を省略する。
実施例２のステップ７０６(図７)において、図１２に示す処理を行う。図１２において、ステップ１２０１からステップ１２０５は実施例１(図９)のステップ９０１からステップ９０５と同様であるため説明を省略する。ステップ１２０５で最終ページの場合は、ステップ１２０６に進み有効確認フラグが１(必要)か否か判断する。有効確認フラグ＝１(必要)の場合は、ステップ１２０７に進みフラグ２に１(有効でない)をセットし、このフローチャートを終了する。有効確認フラグ＝０(不要)の場合は、ステップ１２０８に進みフラグ２に０(有効)をセットし、このフローチャートを終了する。
【００４６】
実施例２は、実施例１と比較するとデータの判別処理、確認処理、フラグ２のオーバーライト分だけ書き込み処理が多く発生する。これにより、実施例２は書き込み処理全体から見れば速度が低下する。速度を優先するか、確実性を優先するか、データの種類により選択が必要である。
以上のように、正当性を判断した後に有効化する必要があるデータも、実施例１の方法を応用することで、簡単な操作で対応することが可能である。
【００４７】
《実施例３》
本発明の実施例３の記憶装置を説明する。実施例３は新データを書き込みしたブロックの有効化と旧データの格納されているブロックの無効化に関するものである。
本発明の実施例２において、図１１のステップ１１１０で新ブロックの有効化を行い、ステップ１１１２で旧ブロックの無効化を行っている。この時、厳密に言えば両ブロックとも有効になる時間が一瞬存在する。万一ステップ１１１０を実行し終わり、ステップ１１１２を実行する直前で書き込みが中断した場合、新旧ブロックとも有効になってしまうため、新旧ブロックを同時に書き込みを行うシステム制御方法を提案する。
【００４８】
つまり、不揮発性メモリ記憶装置は複数のフラッシュメモリチップで構成されている場合が多いが、同一論理アドレスにおける上書きにおいて、新ブロックを旧ブロックと別チップを選択する規則を設け、新ブロックの有効化と同時に旧ブロックの無効化を実施する。複数フラッシュメモリチップ構成で、さらに複数フラッシュメモリチップへの処理が同時に行えることが前提であるが、近年の高速、大容量化処理に伴い、並列処理は一般的な構造になっている。
この処理により同一論理アドレスに新旧ブロックが割り当てられる危険性をさらに低減させることができる。
【００４９】
《実施例４》
本発明の実施例４の記憶装置を説明する。本発明の実施例１から３は、同一論理アドレスに物理アドレスが重複する危険性を簡単な仕組みで大きく低減させることを目的としていたが、実施例４はそれでも重複した場合の保護処理に関するものである。
図１３を用いて、本発明の実施例４の記憶装置を説明する。
図１３は、本発明の実施例４のフラッシュメモリの物理ブロック内の構成図例である。１物理ブロックの冗長領域に書かれている主なデータを表わしている。最初のページの冗長領域に、書き込み済みフラグ１０１、論理アドレス１０２、ブロックデータ無効化フラグであるフラグ１  １０３の３つが配置されている。最後のページの冗長領域に、ブロックデータ有効化フラグであるフラグ２  １０４、新旧判定用のカウンタ１０５が配置されている。従来例である図３との違いは、フラグ２  １０４、カウンタ１０５が追加された点である。本説明は８ビットカウンタとして説明する。
【００５０】
まず新ブロックを書き込む際、旧ブロックの冗長領域からカウンタ値を読み出す。そして新データに書き込みを行う際、そのカウンタ値に１を加算した値を書き込む。例えば、旧ブロックのカウンタ値が４の時、新ブロックのカウンタ値は５となる。従って、もしも重複した新旧ブロックが、両方ともフラグ１０１、１０３、１０４が有効状態でかつデータの正当性が確認できたら、このカウンタ値により新旧が明確になり、データの用途に応じてどちらかのブロックを選択する判定材料とすることができる。一般的には新しいデータが書き込み完了できていれば、旧データを消去する直前に書き込みが中断されたものと判断して新しいデータを選択する。
【００５１】
なお、当然カウンタのオーバーフロー時の対応処理は行うものとする。前述の例でいえば、カウンタ値が大きい方のブロックを有効とするが、カウンタ値が０ｘｆｆという値と０ｘ００という値の時は、０ｘ００のブロックを選択する。
また、このカウンタ値は新しいブロックのカウンタ値が１を加算した値を書き込むよう説明しているが、これは一例であって１を減算してもよい。又、カウンタ値の代わりに日時を書き込んでもよいし、新旧が明確になればどんな数値の割付けでも応用可能である。
【００５２】
以上説明したように、実施例１から３の発明により、同一論理アドレスに割り付けられる物理ブロックが重複する危険性を大幅に低減できるが、それでも重複した場合、実施例４の保護処理で対応できる。初期のテーブル作成処理をハードウェアで実現し、アドレス重複を検出した場合はソフトウェアが処理を行う。このような分担を行えば、信頼性を確保しつつ高速動作可能な、実現性のあるシステムを構築可能である。
また本発明は前述の実施例に限られない。発明の主旨を逸脱しない範囲で変更が可能である。
【００５３】
上記実施例では、フラグを１ビットで１もしくは０で表わしたが、極性はフラッシュの消去レベルにより変更可能であるし、複数ビットを使用し、多数決処理を行って判定するといった手段も可能である。
またデータの書き込み単位をブロックとして説明しているが、複数ブロックを１つの書き込み単位として扱う場合も応用可能である。さらにフラッシュへの書き込みを１ページ毎に行っている例で記述したが、フラッシュメモリによっては複数ページ同時書き込みが可能であり、複数フラッシュメモリチップへの同時書き込みも有り得るため、そのマルチページ書き込み方式においても、最初に書き込むページのいずれか、と最後に書き込むページのいずれかと置換えることが可能である。
また、データに関する有効化フラグ、無効化フラグという説明を行っているが、データのみに限らない。冗長領域にある本来のユーザデータとは異なる、システムが使用する別のデータに関しても、上書きを行うことで新データの有効化と旧データの無効化を行う必要があるものには応用可能である。
【００５４】
【発明の効果】
本発明によれば、従来の書き込み手順、論理物理アドレス変換テーブル作成手順から大きな変更、追加をすることなく、上書き途中の中断による同一論理アドレスに対する物理アドレスの重複の危険性を大きく低減させ、信頼性を確保しつつ高速動作可能なシステムを構築することができる。
【図面の簡単な説明】
【図１】本発明の実施例１のフラッシュメモリ物理ブロック内の構成図例
【図２】従来のフラッシュメモリ物理ブロック構成例
【図３】従来のフラッシュメモリ物理ブロック内の構成図例
【図４】論理アドレスと物理アドレスの関係を表す図
【図５】論理物理アドレス変換テーブルの例
【図６】１ブロック書き込み処理概略フローチャート
【図７】図６における新データ書き込み処理部の詳細フローチャート
【図８】従来の図７における冗長領域データ作成処理部の詳細フローチャート
【図９】本発明の実施例１の図７における冗長領域データ作成処理部の詳細フローチャート
【図１０】本発明の実施例１の電源投入時の論理物理アドレス変換テーブル作成処理概略フローチャート
【図１１】本発明の実施例２の１ブロック書き込み処理概略フローチャート
【図１２】本発明の実施例２の図７における冗長領域データ作成処理部の詳細フローチャート
【図１３】本発明の実施例４のフラッシュメモリ物理ブロック内の構成図例
【符号の説明】
１０１    書き込み済みフラグ
１０２    論理アドレス
１０３    フラグ１(ブロックデータ無効化フラグ)
１０４    フラグ２(ブロックデータ有効化フラグ)
１０５    新旧判定用カウンタ
【図１】
0003692313.tif 000002
【図２】
0003692313.tif 000003
【図３】
0003692313.tif 000004
【図４】
0003692313.tif 000005
【図５】
0003692313.tif 000006
【図６】
0003692313.tif 000007
【図７】
0003692313.tif 000008
【図８】
0003692313.tif 000009
【図９】
0003692313.tif 000010
【図１０】
0003692313.tif 000011
【図１１】
0003692313.tif 000012
【図１２】
0003692313.tif 000013
【図１３】
0003692313.tif 000014