(57)【要約】【課題】不揮発性メモリを使用する装置によって実行されるアプリケーションから見たデータの書き込み時間を短縮する。【解決手段】現在未使用である物理ブロックＭを冗長ブロックリストから検索（ステップＳ１）し、検索した物理ブロックＭへデータを書き込む（ステップＳ２）。その後、論理物理変換テーブルのテーブルＫの指すブロックをＬからＭに更新（ステップＳ３）して、物理ブロックＬを消去待ちブロックリストに登録する（ステップＳ４）という処理を行う。【選択図】  図２
2004355559.tif 000002
【特許請求の範囲】
【請求項１】
データが既に書き込まれている所定の論理ブロックの前記データを、ＣＰＵによるアプリケーションの実行に伴って書き換えるための不揮発性メモリのデータ書き換え方法において、
未使用の物理ブロックを検索する検索工程と、
前記検索工程にて検索した未使用の物理ブロックへデータを書き込む書き込み工程と、
前記書き込み工程にてデータを書き込んだ物理ブロックを前記所定の論理ブロックに対応付けて論理物理変換テーブルに登録する登録工程と、
前記登録工程により前記所定の論理ブロックに対応付けて論理物理変換テーブルに登録された物理ブロックよりも以前に前記所定の論理ブロックに対応していた消去の対象となる物理ブロックを消去待ちブロックリストに登録する消去ブロック登録工程と
を備えることを特徴とする不揮発性メモリのデータ書き換え方法。
【請求項２】
前記消去ブロック登録工程によって前記消去待ちブロックリストに登録された消去の対象となる物理ブロックは、前記ＣＰＵによる前記アプリケーションの実行よりも優先度が低い別タスクによって消去されることを特徴とする請求項１記載の不揮発性メモリのデータ書き換え方法。
【請求項３】
前記検索工程は、未使用の物理ブロックを不良ブロックの割合に応じて設けられた冗長ブロックから検索することを特徴とする請求項１記載の不揮発性メモリのデータ書き換え方法。
【請求項４】
前記検索工程は、未使用の物理ブロックを不良ブロックの割合に無関係に設けられた冗長ブロックのリストから検索することを特徴とする請求項１記載の不揮発性メモリのデータ書き換え方法。
【請求項５】
上記冗長ブロックのリストに掲示される冗長ブロックの数は、必要とされるメモリのサイズから求めることを特徴とする請求項４記載の不揮発性メモリのデータ書き換え方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、メモリカード等の電子機器に設けられた例えばＮＡＮＤ型フラッシュメモリ等の不揮発性メモリにおいてデータ書き換えを高速化するための不揮発性メモリのデータ書き換え方法に関する。
【０００２】
【従来の技術】
近年、大量のデータを記憶するのに適した低コストのＮＡＮＤ型フラッシュメモリ等の不揮発性メモリが、家電機器、携帯電子機器、メモリカード等の電子機器に幅広く使用されている。図４は、不揮発性メモリの記憶領域に係る論理ブロックと物理ブロックとの関係を示す図である。ＮＡＮＤ型フラッシュメモリで代表される書き換え可能なフラッシュメモリの記憶領域は、ブロック単位で管理され、データの消去（通常は全ビットに対してバイナリデータ“１”を書き込む動作）、データの書き込み等のデータ処理については物理ブロック毎に実施される。
【０００３】
フラッシュメモリをアクセスする際には、例えばＣＰＵに接続されたＲＡＭ内に格納される論理変換テーブルを参照することで、図４に示されるようにデータ処理対象となっている論理ブロックの論理ブロックアドレスを物理ブロックアドレスに変換し、データの消去、書き込み  、読み出し等を実施する物理ブロックを特定する。本件出願人による、特開２００３−３６２０９公報には前記フラッシュメモリへのアクセス方法が開示されている。
【０００４】
このような論理ブロックアドレスによりアクセスする方式をとることで、欠陥のある物理ブロックが発生した場合に当該欠陥のある物理ブロックに対する処理動作を代替用の別の消去状態にある書き込み  可能な物理ブロック（以下、空きブロックと称する）に対して実施しても、アプリケーションプログラム等を実行するＣＰＵ側ではブロック代替の有無に関係なく同一の論理ブロックアドレスを用いてアクセスすることが可能となる。
【０００５】
前記、特開２００３−３６２０９公報に開示されているような、従来のフラッシュメモリに対して実行されるデータの書き換え動作について説明する。まず、所定の論理ブロックに記憶されたデータに係る書き換え動作の概略的な手順について説明する。なお、ここでは説明を簡単にするために、図４に示されるように、書き換え対象の論理ブロックのアドレスをＫ、当該論理ブロックに対して当初対応付けられていてデータ書き換えに伴って消去対象となる物理ブロック（書き込み前）のアドレスをＬ、また当該論理ブロックに対して新たに対応付けられてデータ書き換えに伴ってデータの書き込み対象となる物理ブロックのアドレスをＭとする。
【０００６】
既に書き込まれている論理ブロックＫのデータを書き換える処理について図５のフローチャートを用いて説明する。論理ブロックＫのデータは論理物理変換された物理ブロックＬに格納されている。この論理ブロックＫにデータを書き込むとき物理ブロックＬに直接書き込んでしまうと書き込み中に電源を落とされたときデータが消えてしまうことがある。そのため、実際の処理としては、現在未使用である物理ブロックをリスト化して記憶している冗長ブロックリストから、未使用である例えば物理ブロックＭを検索（ステップＳ２１）し、検索した物理ブロックＭへデータを書き込む（ステップＳ２２）。その後、物理ブロックＬに既に書き込まれていたデータを消去（ステップＳ２３）し、論理物理変換テーブルのテーブルＫの指すブロックをＬからＭに更新（ステップＳ２４）して、物理ブロックＬを冗長ブロックリストに登録する（ステップＳ２５）という処理を行う。
【０００７】
【特許文献１】
特開２００３−３６２０９
【０００８】
【発明が解決しようとする課題】
ところで、前述したような従来のデータ書き込み処理では、古い物理ブロックの削除が完了するまで書き込みが終了せず、アプリケーションはこの時間待たされることになってしまい、書き込みに時間がかかっていた。また、書き込み処理自体を別タスクで行い、データはメインメモリ上にキャッシュとしてという処理にすることも考えられるが、この処理ではメインメモリ上にキャッシュ領域を大きく取らなければならず、メモリ消費が問題となっていた。例えば、１ブロックは８ｋＢもしくは１６ｋＢであるためである。
【０００９】
本発明は、前述した実情に鑑みてなされたものであり、不揮発性メモリを使用する装置によって実行されるアプリケーションから見たデータの書き込み時間を短縮することができる不揮発性メモリのデータ書き換え方法の提供を目的とする。
【００１０】
【課題を解決するための手段】
本発明に係る請求項１の不揮発性メモリのデータ書き換え方法は、前記課題を解決するために、データが既に書き込まれている所定の論理ブロックの前記データを、ＣＰＵによるアプリケーションの実行に伴って書き換えるための不揮発性メモリのデータ書き換え方法において、未使用の物理ブロックを検索する検索工程と、前記検索工程にて検索した未使用の物理ブロックへデータを書き込む書き込み工程と、前記書き込み工程にてデータを書き込んだ物理ブロックを前記所定の論理ブロックに対応付けて論理物理変換テーブルに登録する登録工程と、前記登録工程により前記所定の論理ブロックに対応付けて論理物理変換テーブルに登録された物理ブロックよりも以前に前記所定の論理ブロックに対応していた消去の対象となる物理ブロックを消去待ちブロックリストに登録する消去ブロック登録工程とを備える。
【００１１】
書き込み工程にて未使用の物理ブロックへデータを書き込み、登録工程にて新しくデータを書き込んだ物理ブロックを所定の論理ブロックに対応付けて論理物理変換テーブルに登録した時点で、ＣＰＵにて実行されているアプリケーションに対しては書き込み終了とする。
【００１２】
本発明に係る請求項２の不揮発性メモリのデータ書き換え方法は、前記課題を解決するために、データが既に書き込まれている所定の論理ブロックの前記データを、ＣＰＵによるアプリケーションの実行に伴って書き換えるための不揮発性メモリのデータ書き換え方法において、未使用の物理ブロックを検索する検索工程と、前記検索工程にて検索した未使用の物理ブロックへデータを書き込む書き込み工程と、前記書き込み工程にてデータを書き込んだ物理ブロックを前記所定の論理ブロックに対応付けて論理物理変換テーブルに登録する登録工程と、前記登録工程により前記所定の論理ブロックに対応付けて論理物理変換テーブルに登録された物理ブロックよりも以前に前記所定の論理ブロックに対応していた消去の対象となる物理ブロックを消去待ちブロックリストに登録する消去ブロック登録工程とを備え、前記消去ブロック登録工程によって前記消去待ちブロックリストに登録された消去の対象となる物理ブロックは、前記ＣＰＵによる前記アプリケーションの実行よりも優先度が低い別タスクによって消去される。
【００１３】
書き込み工程にて未使用の物理ブロックへデータを書き込み、登録工程にて新しくデータを書き込んだ物理ブロックを所定の論理ブロックに対応付けて論理物理変換テーブルに登録した時点で、ＣＰＵにて実行されているアプリケーションに対しては書き込み終了とする。
【００１４】
そして、ＣＰＵによる前記アプリケーションの実行よりも優先度が低い別タスクによって消去待ちブロックリストに登録された消去の対象となる物理ブロックは消去される。
【００１５】
本発明に係る請求項４の不揮発性メモリのデータ書き換え方法は、前記課題を解決するために、データが既に書き込まれている所定の論理ブロックの前記データを、ＣＰＵによるアプリケーションの実行に伴って書き換えるための不揮発性メモリのデータ書き換え方法において、未使用の物理ブロックを検索する検索工程と、前記検索工程にて検索した未使用の物理ブロックへデータを書き込む書き込み工程と、前記書き込み工程にてデータを書き込んだ物理ブロックを前記所定の論理ブロックに対応付けて論理物理変換テーブルに登録する登録工程と、前記登録工程により前記所定の論理ブロックに対応付けて論理物理変換テーブルに登録された物理ブロックよりも以前に前記所定の論理ブロックに対応していた消去の対象となる物理ブロックを消去待ちブロックリストに登録する消去ブロック登録工程とを備え、前記検索工程は、未使用の物理ブロックを不良ブロックの割合に無関係に設けられた冗長ブロックリストから検索する。特に、上記冗長ブロックリストに掲示される冗長ブロックの数は、必要とされるメモリのサイズから求める。
【００１６】
このため、未使用ブロックとして使用する冗長ブロックを通常デバイスで定義されるＢＡＤブロック（不良ブロック）の総数（現行１０２４ブロック中１２ブロック）より増やすことにより多ブロックへの連続書き込みでも高速化を実現することができる。
【００１７】
また、冗長ブロックの数をＢＡＤブロックとは無関係に実際に使用するメモリサイズから求めれば、特定の論理ブロックに対してのみ頻繁にデータの書き換えを行うようなアプリケーションに対して有利である。
【００１８】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照しながら説明する。図１は本発明のデータ書き換え方法が適用できる、不揮発性メモリの記憶領域に係る論理ブロックと物理ブロックとの関係を示す図である。ＮＡＮＤ型フラッシュメモリで代表される書き換え可能なフラッシュメモリの記憶領域は、ブロック単位で管理され、データの消去（通常は全ビットに対してバイナリデータ“１”を書き込む動作）、データの書き込み等のデータ処理については物理ブロック毎に実施される。
【００１９】
図１を用いてＮＡＮＤ型フラッシュメモリで代表される書き換え可能なフラッシュメモリを使用した装置におけるブロック管理について説明する。装置のＣＰＵにおいて実行されるアプリケーションから見える論理ブロックは、例えばＣＰＵに接続されたＲＡＭ内に格納される論理物理変換テーブルを通して実際の物理ブロックに割り当てられる。また、ＮＡＮＤ型フラッシュメモリの特徴としてデバイスの中にＢＡＤブロックと呼ばれる不良ブロックがある割合で存在しており、このＢＡＤブロックの割合に相当する未使用ブロックを冗長ブロックとして残しておく必要がある。この冗長ブロックは、冗長ブロックリストに掲示されている。図１において総物理ブロック数はｎ、総冗長ブロック数はｍとしており、総論理ブロック数はｎ−ｍで計算されるサイズとなる。
【００２０】
従来のデータ書き込み方法によれば、前述したように、既にデータが書き込まれている論理ブロックＫにデータを書き込むときには、検索した未使用物理ブロックＭへデータを書き込み、その後、物理ブロックＬに既に書き込まれていたデータを消去し、論理物理変換テーブルのテーブルＫの指すブロックをＬからＭに更新して、物理ブロックＬを冗長ブロックリストに登録していた。
【００２１】
従来、この一連の処理は、順次同一のスレッドで行ってきたが、実際の書き込みは物理ブロックＭへデータを書き込むというステップ（図５のステップＳ２２）にて終わっている。
【００２２】
そこで、本発明では、図２に示す処理手順により、書き込み終了後すぐに論理変換テーブルを更新することによって終了させる。消去の対象となる物理ブロックＬは消去待ちブロックリストに登録しておく。そして、消去（イレース）以降の処理を図３に示す処理手順により、プライオリティの低い別タスク（サブスレッド）を用いてバックグランドで行う。
【００２３】
先ず、図２を用いてメインデータの書き込み処理手順を説明する。現在未使用である物理ブロックＭを冗長ブロックリストから検索（ステップＳ１）し、検索した物理ブロックＭへデータを書き込む（ステップＳ２）。
【００２４】
その後、論理物理変換テーブルのテーブルＫの指すブロックをＬからＭに更新（ステップＳ３）して、物理ブロックＬを消去待ちブロックリストに登録する（ステップＳ４）という処理を行う。
【００２５】
次に、図３を用いてサブスレッド（Ａ）により物理ブロックＬを消去する処理手順を説明する。このサブスレッド（Ａ）は、プライオリティの低い別タスクとしてバックグランドで行われる。始めに、消去待ちブロックリストが有るか否かのチェック（ステップＳ１１）により、消去待ちブロックリストが有ると判定（Ｙ）すると、消去待ちブロックリストから物理ブロックＬを検索（ステップＳ１２）する。検索した物理ブロックＬのデータを消去（ステップＳ１３）し、最後に物理ブロックＬを冗長ブロックリストに登録（ステップＳ１４）する。
【００２６】
このように、メインのデータの書き込みを終了してから、消去の対象となる物理ブロックＬを消去待ちブロックリストに登録しておき、プライオリティの低い別タスク（サブスレッド）を用いてバックグランドや、ＣＰＵの空き時間、アイドル状態時に消去するのでアプリケーションから見た処理時間を高速化することができる。また、サブスレッド（Ａ）のプライオリティはアプリケーションのプライオリティよりも低くすることによって他のスレッドをブロックすることなくＣＰＵの空き時間や、アイドル状態時に実行されるため、他のスレッドが待たされることはない。
【００２７】
また、前記説明の通り、従来、冗長ブロックリストはＢＡＤブロックが存在しうる割合を元に構成されいる。例えば、物理ブロック１０２４ブロック中、ＢＡＤブロックが１２ブロックてあれば、同じ１２ブロックを冗長ブロックリストに用意されることになる。このとき、ＢＡＤブロックが無かったと仮定した場合でも１２ブロックを超えるブロックに対して連続して書き込みを行った場合１３ブロック目より冗長ブロックがリストに登録されるのを待たなければいけないため処理速度が低下してしまう。
【００２８】
そこで、前記冗長ブロックをＢＡＤブロックの割合から決めるのではなく、実際に必要とされるメモリのサイズから求め、より多くの冗長ブロックを使用することによって多ブロックへの連続書き込みに対しても処理の高速化を維持し続けるようにしてもよい。たとえば、冗長ブロックを１００ブロック用意すれば、最大８００ｋＢ（１ブロック＝８ｋＢとして）までの書き込み時間を高速化することができる。
【００２９】
冗長ブロックが１００ブロック用意されており、多数の冗長ブロックを使用し、多ブロックへの連続書き込みを高速に行う処理を図２及び図３を用いて説明する。例えば、既にデータが書き込まれている５０個の論理ブロックのデータを、ＣＰＵによるアプリケーションの実行に伴って書き換える処理を例に挙げる。
【００３０】
図２のステップＳ１を準用し、１００の冗長ブロックをリストに掲示している冗長ブロックリストから未使用の物理ブロックを５０ブロック検索する。検索したこれら５０の物理ブロックへ前記アプリケーションにしたがったデータを書き込む（ステップＳ２を準用）。次に、アプリケーションにしたがってデータを書き込んだ５０の物理ブロックを前記５０ブロックの論理ブロックに対応付けて論理物理変換テーブルに登録する（ステップＳ３を準用）。そして、前記５０ブロックの論理ブロックに対応付けて論理物理変換テーブルに登録された５０ブロックの物理ブロックよりも以前に前記５０ブロックの論理ブロックに対応していた消去の対象となる５０ブロックの物理ブロックを消去待ちブロックリストに登録する（ステップＳ４を準用）。
【００３１】
次に、図３に示したサブスレッド（Ａ）を準用して５０ブロックの消去対象物理ブロックを消去する。このサブスレッド（Ａ）は、プライオリティの低い別タスクとしてバックグランドで行われる。始めに、消去待ちブロックリストが有るか否かのチェック（ステップＳ１１）により、消去待ちブロックリストが有ると判定（Ｙ）すると、消去待ちブロックリストから５０ブロックの消去待ち物理ブロックを検索（ステップＳ１２を準用）する。次に、検索した５０ブロックの消去待ち物理ブロックのデータを消去（ステップＳ１３を準用）し、最後にデータが消去された５０ブロックの物理ブロックを冗長ブロックリストに登録（ステップＳ１４を準用）する。
【００３２】
このように、５０ブロックの論理ブロックへのメインのデータの書き込みを終了してから、消去の対象となる５０ブロックの物理ブロックを消去待ちブロックリストに登録しておき、プライオリティの低い別タスク（サブスレッド）を用いてバックグランドや、ＣＰＵの空き時間、アイドル状態時に消去するので、多ブロックへの連続書き込みを行うアプリケーションに対しても処理の高速化を維持し続けることができ、アプリケーションから見た処理時間を高速化することができる。
【００３３】
また、アプリケーションが特定の論理ブロックに対してのみ頻繁に書き換えを行う場合、もし冗長ブロックが１２ブロックであると、冗長ブロックとその論理ブロックに対応する当該物理ブロックを足した１３のブロックが順次書き換えられることになる。フラッシュメモリのデバイスは特定の物理アドレスに対する頻繁なアクセスが生じると寿命が早く尽きてしまう。これは一般にフラッシュメモリの寿命がそのブロックに対しての書き込み回数で制限されているからである。冗長ブロックを実際に使用するメモリサイズから求め、例えば１００ブロックとした場合、アプリケーションが特定の論理ブロックに対してのみ書き換えを行ったとしても１０１ブロックを順次書き換えることになり、前述したような冗長ブロックが１２ブロックの場合よりも約８倍程寿命を長くすることができる。
【００３４】
なお、本発明の不揮発性メモリのデータ書き換え方法は、ディジタル放送から放送情報を受信する情報受信装置内にあって、ＣＰＵによって実行される放送受信のためのアプリケーションの基に、例えば番組予定情報や、放送情報に関連する関連情報を記憶する不揮発性メモリに適用されると有効である。
【００３５】
例えば、ラストチャンネル情報などをフラッシュメモリに記憶させようとすると、チャンネルを切り換える毎に、ラストチャンネル情報を書き換えることになり、特定の論理ブロックに対して頻繁に書き換えを行うことになってしまうので、前述したように、冗長ブロックの数をＢＡＤブロックとは無関係に実際に使用するメモリサイズから例えば１００ブロックのように求めるのは有効である。
【００３６】
【発明の効果】
本発明に係る不揮発性メモリのデータ書き換え方法は、書き込み工程にて未使用の物理ブロックへデータを書き込み、登録工程にて新しくデータを書き込んだ物理ブロックを所定の論理ブロックに対応付けて論理物理変換テーブルに登録した時点で、ＣＰＵにて実行されているアプリケーションに対しては書き込み終了とする。これにより、アプリケーションから見ると書き込み時間が短縮されたことになる。
【００３７】
本発明に係る不揮発性メモリのデータ書き換え方法は、書き込み工程にて未使用の物理ブロックへデータを書き込み、登録工程にて新しくデータを書き込んだ物理ブロックを所定の論理ブロックに対応付けて論理物理変換テーブルに登録した時点で、ＣＰＵにて実行されているアプリケーションに対しては書き込み終了とする。また、ＣＰＵによる前記アプリケーションの実行よりも優先度が低い別タスクによって消去待ちブロックリストに登録された消去の対象となる物理ブロックは消去される。これにより、アプリケーションから見ると書き込み時間が短縮されたことになる。
【００３８】
本発明に係る不揮発性メモリのデータ書き換え方法は、未使用ブロックとして使用する冗長ブロックを通常デバイスで定義されるＢＡＤブロック（不良ブロック）の総数より増やすことにより多ブロックへの連続書き込みでも高速化を実現することができる。
【００３９】
また、冗長ブロックの数をＢＡＤブロックとは無関係に実際に使用するメモリサイズから求めるという本発明によれば、特定の論理ブロックに対してのみ頻繁にデータの書き換えを行うようなアプリケーションに対して特に有効であり、不揮発性メモリーの寿命を長くすることができる。
【図面の簡単な説明】
【図１】本発明のデータ書き換え方法によりデータが書き換えられる不揮発性メモリの記憶領域に係る論理ブロックと物理ブロックとの関係を示す図である。
【図２】メインデータの書き込み処理手順を示すフローチャートである。
【図３】消去（イレース）以降の処理を行うサブスレッドの処理手順を示すフローチャートである。
【図４】不揮発性メモリの記憶領域に係る論理ブロックと物理ブロックとの関係を示す図である。
【図５】既に書き込まれている論理ブロックＫのデータを書き換える従来の処理手順を示すフローチャートである。
【符号の説明】
Ｓ１  検索工程、Ｓ２  書き込み工程、Ｓ３  登録工程、Ｓ４  消去ブロック登録工程、Ｓ１３  消去対象データ消去工程
【図１】
2004355559.tif 000003
【図２】
2004355559.tif 000004
【図３】
2004355559.tif 000005
【図４】
2004355559.tif 000006
【図５】
2004355559.tif 000007