トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 不揮発性半導体メモリを使用した2次記憶装置
【発明者】 【氏名】宇野 弘晃

【氏名】南▲艸▼ 恭紹

【氏名】小野寺 貴志

【氏名】宮下 秀昭

【氏名】桑子 健一

【要約】 【課題】不揮発性半導体メモリを使用した2次記憶装置に関し、不揮発性半導体メモリを構成する各ブロック領域を、使用できなくなる限度まで使い切ることを課題とする。

【解決手段】第2のブロック領域における消去回数が所定基準値に達したときには、探索手段16が現用ブロック領域から交代用ブロック領域を探す。第2の書込手段17は、交代用ブロック領域に記憶されていた情報Aを第2のブロック領域に書き込む。そして第2の対応関係変更手段18が、物理ブロック番号4を論理ブロック番号0と対応づけて、論理物理対応記憶手段11に記憶させる。第2の消去手段19が交代用ブロック領域に記憶されていた情報Aを消去し、物理ブロック番号1のブロック領域を予備のブロック領域とする。
【特許請求の範囲】
【請求項1】 ブロック領域毎に書き換えが可能であると共に、予備のブロック領域を備えた不揮発性半導体メモリを使用した2次記憶装置において、記憶すべき各情報の識別を示す論理ブロック番号と、不揮発性半導体メモリを構成する各ブロック領域の識別を示す物理ブロック番号との対応関係を記憶する論理物理対応記憶手段と、論理ブロック番号を添えて情報の書き込みを要求されたときに、当該書き込み要求された情報を予備の第1のブロック領域に書き込む第1の書込手段と、前記論理物理対応記憶手段を参照して、前記書き込み要求された情報に添えられた論理ブロック番号に対応する物理ブロック番号を読み出す物理ブロック番号読出手段と、前記物理ブロック番号読出手段で読み出された物理ブロック番号を持つ第2のブロック領域に記憶されていた情報を消去し、当該第2のブロック領域を予備のブロック領域とする第1の消去手段と、前記第1のブロック領域の物理ブロック番号を、前記書き込み要求された情報に添えられた論理ブロック番号と対応づけて、前記論理物理対応記憶手段に記憶させる第1の対応関係変更手段と、前記第2のブロック領域における消去回数が所定基準値に達したときに、前記不揮発性半導体メモリにおける予備のブロック領域を除く全ブロック領域から、交代用ブロック領域を探す探索手段と、前記探索手段により見つけられた交代用ブロック領域に記憶されていた情報を、前記第2のブロック領域に書き込む第2の書込手段と、前記第2のブロック領域の物理ブロック番号を、前記交代用ブロック領域に記憶されていた情報の論理ブロック番号と対応づけて、前記論理物理対応記憶手段に記憶させる第2の対応関係変更手段と、前記交代用ブロック領域に記憶されていた情報を消去し、当該ブロック領域を予備のブロック領域とする第2の消去手段と、を有することを特徴とする不揮発性半導体メモリを使用した2次記憶装置。
【請求項2】 前記第1の書込手段は、前記不揮発性半導体メモリにおける予備の全ブロック領域の中から、消去回数が最低値のブロック領域を選択して前記第1のブロック領域に決定する決定手段を含むことを特徴とする請求項1記載の不揮発性半導体メモリを使用した2次記憶装置。
【請求項3】 前記探索手段は、前記第2のブロック領域における消去回数が所定基準値に達したときに、当該所定基準値を、より大きな値に更新する更新手段を含むことを特徴とする請求項1記載の不揮発性半導体メモリを使用した2次記憶装置。
【請求項4】 前記所定基準値はブロック領域毎に個別に設定されることを特徴とする請求項1記載の不揮発性半導体メモリを使用した2次記憶装置。
【請求項5】 前記所定基準値は予め定められた複数の値であり、前記探索手段は、前記第2のブロック領域における消去回数が前記複数の所定基準値のいずれに一致したときにも、交代用ブロック領域を探すことを特徴とする請求項1記載の不揮発性半導体メモリを使用した2次記憶装置。
【請求項6】 前記探索手段は、前記不揮発性半導体メモリにおける予備のブロック領域を除く全ブロック領域の中から、消去回数が前記第2のブロック領域の消去回数より少なく、かつ論理ブロック書き込み回数が最低値であるブロック領域を選択して、前記交代用ブロック領域に決定する決定手段を含むことを特徴とする請求項1記載の不揮発性半導体メモリを使用した2次記憶装置。
【請求項7】 前記第1の書込手段、前記第1の消去手段、前記第2の書込手段、または前記第2の消去手段による書込処理または消去処理が正常に行われた否かを監視する監視手段と、前記監視手段による監視の結果、正常に行われていないことが検出されたときに、処理対象のブロック領域の使用を禁止する禁止手段と、をさらに有することを特徴とする請求項1記載の不揮発性半導体メモリを使用した2次記憶装置。
【請求項8】 前記禁止手段によって使用が禁止されたブロック領域以外のブロック領域の中で、使用が禁止されていない予備のブロック領域が存在するか否かを調べる調査手段と、前記調査手段によって予備のブロック領域が存在しないと判定されたときに、前記不揮発性半導体メモリの使用不可を通知する通知手段と、をさらに有することを特徴とする請求項7記載の不揮発性半導体メモリを使用した2次記憶装置。
【請求項9】 前記禁止手段によって使用が禁止されたブロック領域以外のブロック領域の中で、使用が禁止されていない予備のブロック領域が存在するか否かを調べる調査手段と、前記調査手段によって予備のブロック領域が所定数存在すると判定されたときに、前記不揮発性半導体メモリの使用不可が間近であることを通知する通知手段と、をさらに有することを特徴とする請求項7記載の不揮発性半導体メモリを使用した2次記憶装置。
【請求項10】 各情報の書き込みを要求されたときに、情報毎に分けて、書き込み要求された情報を一時的に記憶する一時記憶手段と、前記一時記憶手段が各情報を記憶したときに情報の記憶開始時からの経過時間をそれぞれ計測する計測手段と、前記計測手段が前記所定時間の経過を検出したときに、対応の情報を読み出して前記第1の書込手段へ送る読出手段と、をさらに有することを特徴とする請求項1記載の不揮発性半導体メモリを使用した2次記憶装置。
【請求項11】 情報の書き込みを要求されたときに、当該書き込み要求された情報が、前記一時記憶手段に既に記憶されている情報の更新情報であるか否かを判定する判定手段と、前記判定手段による判定の結果、更新情報である場合には、対応の元情報を前記一時記憶手段から削除すると共に、当該元情報の記憶開始時に前記計測手段によって計測開始された前記経過時間を0に戻すリセット手段と、をさらに有することを特徴とする請求項10記載の不揮発性半導体メモリを使用した2次記憶装置。
【請求項12】 前記一時記憶手段はキャッシュメモリであることを特徴とする請求項10記載の不揮発性半導体メモリを使用した2次記憶装置。
【請求項13】 前記不揮発性半導体メモリを、同一構成からなる現用及び予備の少なくとも2つのメモリから構成し、前記論理物理対応記憶手段、前記第1の書込手段、前記物理ブロック番号読出手段、前記第1の消去手段、前記第1の対応関係変更手段、前記探索手段、前記第2の書込手段、前記第2の対応関係変更手段、及び前記第2の消去手段を、少なくとも2組備え、各情報の書き込みを要求されたときに、情報毎に分けて、書き込み要求された情報を一時的に記憶する一時記憶手段と、前記一時記憶手段が各情報を記憶したときに情報の記憶開始時からの第1の経過時間をそれぞれ計測する第1の計測手段と、前記一時記憶手段が各情報を記憶したときに情報の記憶開始時から、前記第1の経過時間よりも長い第2の経過時間をそれぞれ計測する第2の計測手段と、前記第1の計測手段が前記第1の所定時間の経過を検出したときに、対応の情報を読み出して前記現用不揮発性半導体メモリの第1の書込手段へ送る第1の読出手段と、前記第2の計測手段が前記第2の所定時間の経過を検出したときに、対応の情報を読み出して前記予備不揮発性半導体メモリの第1の書込手段へ送る第2の読出手段と、をさらに有することを特徴とする請求項1記載の不揮発性半導体メモリを使用した2次記憶装置。
【請求項14】 情報の書き込みを要求されたときに、当該書き込み要求された情報が、前記一時記憶手段に既に記憶されている情報の更新情報であるか否かを判定する判定手段と、前記判定手段による判定の結果、更新情報である場合には、対応の元情報を前記一時記憶手段から削除すると共に、当該元情報の記憶開始時に前記第1及び第2の計測手段によって計測開始された前記第1及び第2の経過時間を0に戻すリセット手段と、をさらに有することを特徴とする請求項13記載の不揮発性半導体メモリを使用した2次記憶装置。
【請求項15】 前記一時記憶手段はキャッシュメモリであることを特徴とする請求項13記載の不揮発性半導体メモリを使用した2次記憶装置。
【請求項16】 前記不揮発性半導体メモリはフラッシュメモリであることを特徴とする請求項1記載の不揮発性半導体メモリを使用した2次記憶装置。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、不揮発性半導体メモリを使用した2次記憶装置に関し、特に、ブロック領域毎に書き換えが可能であると共に、予備のブロック領域を備えたフラッシュメモリを使用した2次記憶装置に関する。
【0002】現在の小型コンピュータは、2次記憶装置としてハードディスク装置を使用している場合が多いが、ハードディスク装置は機械的部分を有するために寿命が短く、またメンテナンスが必要であることや、適用可能となる環境(温度、湿度、振動)が半導体に比べて狭い。そこで、ハードディスク装置に代わりにフラッシュメモリを使用した2次記憶装置に期待が集まっている。
【0003】
【従来の技術】通常、2次記憶装置のハードディスクの代わりに使用されたフラッシュメモリでは、記憶領域が複数のブロック領域(数10Kバイト)に分けられ、書き込みは1バイト単位や1ワード単位で行えるが、消去はブロック単位で行う。書き込みと消去を繰り返すと、いずれ消去または書き込みができなくなり、このときこのブロックは寿命となる。
【0004】従来、フラッシュメモリは消去回数に制限(寿命)があるので、2次記憶装置としての寿命を延ばすためにフラッシュメモリに倍以上の予備のブロックを用意し、書換え寿命が来た現用のブロックに代わって予備のブロックを使用できるようにしている。
【0005】図18は、従来のフラッシュメモリのブロック構成を示す図であり、(A),(B),(C)はブロック領域の時間変化をこの順に示している。フラッシュメモリは、例えば物理番号1〜(n+m)を付された(n+m)個のブロック領域から構成され、そのうちの物理番号1〜nを付されたn個のブロック領域が現用のブロック領域であり、残りのm個のブロック領域が予備のブロック領域である。現用のブロック領域には論理番号1〜nを付された各情報が格納される(A)。
【0006】ここで、例えば論理番号2を付された情報が更新されることになった場合、論理番号2を付された情報が今まで格納されていた物理番号2のブロック領域の消去回数がチェックされる。その結果、制限回数(例えば10万回)を越えていなければ物理番号2のブロック領域に更新情報が書き込まれる。しかし、制限回数を越えている場合には、物理番号2のブロック領域は使用が不可能と見なして、論理番号2を付された情報の格納ブロックとして物理番号(n+1)のブロック領域を新たに割り当て、そこへ論理番号2を付された情報の更新情報を書き込む(B)。
【0007】このような書き込みを繰り返し、その結果、予備のブロック領域が無くなると(C)、フラッシュメモリの装置寿命と判断する。
【0008】
【発明が解決しようとする課題】しかし、従来の装置では、例えば論理番号1を付された情報が格納後に殆ど変更されない性質の情報である場合、物理番号1のブロック領域の消去回数が数回であることが十分あり得、その場合、寿命となる制限回数までには相当の余裕がある。それにも拘わらず、予備のブロックが無くなってしまえばフラッシュメモリの装置寿命と見なされてしまうという問題があった。
【0009】また、フラッシュメモリの消去回数には、制限回数として最低値と平均値とがあり、両者の間に通常1桁の差がある。最低値は各ブロック領域を確実に使用できる保証限度回数であり、平均値は各ブロック領域が使用できなくなったときの消去回数に関する実データの平均値である。通常、最低値が10万回に対して平均値が約100万回程度である。
【0010】従来、制限回数として最低値を適用しているので、消去回数が制限回数の10万回に達したからと言っても、必ずしも、そのブロック領域がすぐ使用できなくなってしまう訳ではない。平均的にはまだ、約90万回の使用が可能であるにも拘わらず、そのブロック領域の使用を止めてしまっているという問題がある。
【0011】本発明はこのような点に鑑みてなされたものであり、不揮発性半導体メモリを構成する各ブロック領域を、使用できなくなる限度まで使い切るようにした不揮発性半導体メモリを使用した2次記憶装置を提供することを目的とする。
【0012】
【課題を解決するための手段】本発明では上記目的を達成するために、図1に示すように、記憶すべき各情報の識別を示す論理ブロック番号と、不揮発性半導体メモリ20aを構成する各ブロック領域の識別を示す物理ブロック番号との対応関係を記憶する論理物理対応記憶手段11と、論理ブロック番号を添えて情報の書き込みを要求されたときに、当該書き込み要求された情報を予備の第1のブロック領域に書き込む第1の書込手段12と、論理物理対応記憶手段11を参照して、書き込み要求された情報に添えられた論理ブロック番号に対応する物理ブロック番号を読み出す物理ブロック番号読出手段13と、物理ブロック番号読出手段13で読み出された物理ブロック番号を持つ第2のブロック領域に記憶されていた情報を消去し、第2のブロック領域を予備のブロック領域とする第1の消去手段14と、第1のブロック領域の物理ブロック番号を、書き込み要求された情報に添えられた論理ブロック番号と対応づけて、論理物理対応記憶手段11に記憶させる第1の対応関係変更手段15と、第2のブロック領域における消去回数が所定基準値に達したときに、不揮発性半導体メモリ20aにおける予備のブロック領域を除く全ブロック領域から、交代用ブロック領域を探す探索手段16と、探索手段16により見つけられた交代用ブロック領域に記憶されていた情報を、第2のブロック領域に書き込む第2の書込手段17と、第2のブロック領域の物理ブロック番号を、交代用ブロック領域に記憶されていた情報の論理ブロック番号と対応づけて、論理物理対応記憶手段11に記憶させる第2の対応関係変更手段18と、交代用ブロック領域に記憶されていた情報を消去し、当該ブロック領域を予備のブロック領域とする第2の消去手段19とを有することを特徴とする不揮発性半導体メモリ20aを使用した2次記憶装置が提供される。
【0013】以上のような構成において、まず不揮発性半導体メモリ20aにブロック領域が多数設けられ、それらに物理ブロック番号1,2,3,4,・・が付されているとする。そして例えば、物理ブロック番号1のブロック領域には論理ブロック番号0を付された情報Aが格納され、物理ブロック番号3のブロック領域には論理ブロック番号2を付された情報Cが格納され、物理ブロック番号4のブロック領域には論理ブロック番号25を付された情報Z98が格納されているとする。なお、物理ブロック番号2のブロック領域には情報が格納されておらず、このブロック領域は予備のブロック領域である。
【0014】ここで、不揮発性半導体メモリ20aが、例えば論理ブロック番号25を添えて情報Z99の書き込みを要求されたとする。情報Z99は情報Z98の更新情報である。この要求に応じて、第1の書込手段12が不揮発性半導体メモリ20aにおいて予備のブロック領域を探し、例えば予備の第1のブロック領域、すなわち物理ブロック番号2のブロック領域を見つけたとする。第1の書込手段12は、書き込み要求された情報Z99をこの物理ブロック番号2のブロック領域に書き込む。それと共に、物理ブロック番号読出手段13が、論理物理対応記憶手段11を参照して、書き込み要求された情報Z99に添えられた論理ブロック番号25に対応する物理ブロック番号4を読み出す。論理物理対応記憶手段11は論理ブロック番号と物理ブロック番号との対応関係を記憶しており、ここでは例えば、論理ブロック番号25に対応して物理ブロック番号4を記憶している。
【0015】第1の消去手段14は、物理ブロック番号読出手段13で読み出された物理ブロック番号4を持つ第2のブロック領域に記憶されていた情報Z98を消去し、第2のブロック領域を予備のブロック領域とする。そして、第1の対応関係変更手段15が、情報Z99が格納された第1のブロック領域の物理ブロック番号2を、情報Z99に添えられた論理ブロック番号25と対応づけて、論理物理対応記憶手段11に記憶させる。
【0016】次に探索手段16が、第1の消去手段14によって消去が行われた物理ブロック番号4の第2のブロック領域における消去回数を調べ、消去回数が所定基準値に達したときには、不揮発性半導体メモリ20aにおける予備のブロック領域を除く現用ブロック領域から、交代用ブロック領域を探す。交代用ブロック領域は、消去回数が第2のブロック領域の消去回数より少なく、かつ論理ブロック書き込み回数が最低値であるブロック領域を選択する。例えば物理ブロック番号1のブロック領域が交代用ブロック領域として見つけられたとする。
【0017】第2の書込手段17は、探索手段16により見つけられた物理ブロック番号1の交代用ブロック領域に記憶されていた情報Aを、物理ブロック番号4の第2のブロック領域に書き込む。そして第2の対応関係変更手段18が、第2のブロック領域の物理ブロック番号4を、交代用ブロック領域に記憶されていた情報Aの論理ブロック番号0と対応づけて、論理物理対応記憶手段11に記憶させる。さらに、第2の消去手段19が物理ブロック番号1の交代用ブロック領域に記憶されていた情報Aを消去し、物理ブロック番号1のブロック領域を予備のブロック領域とする。
【0018】以上のように、更新情報の書き込みを要求されたときに、その更新情報を予備のブロック領域に書き込むと共に、それまで対応の元情報が格納されていたブロック領域を予備のブロック領域に回す。これによって、各ブロック領域の消去回数が平均的に増加する。しかし、更新頻度が低い情報を格納したブロック領域は予備のブロック領域に回される確率が低い。そこで、そうした更新頻度が低い情報を格納したブロック領域を探し出して予備のブロック領域に回すようにした。さらには、そうした更新頻度が低い情報を、消去回数が所定基準値に達したブロック領域に格納するようにした。
【0019】こうすることにより、ブロック領域間の消去回数のバラツキが解消し、したがって、全部のブロック領域を使用限度ギリギリまで使用することが可能となる。しかも、ブロック領域毎に消去や書き込みの異常をチェックするようにすれば、使用限度を前述の最低値に設定する必要はなく、ブロック領域の各々における実際の使用限度まで使用することが可能となる。
【0020】
【発明の実施の形態】以下、本発明の実施の形態を、図面を参照して説明する。まず、第1の実施の形態に係る原理構成を、図1を参照して説明する。第1の実施の形態は、記憶すべき各情報の識別を示す論理ブロック番号と、不揮発性半導体メモリ20aを構成する各ブロック領域の識別を示す物理ブロック番号との対応関係を記憶する論理物理対応記憶手段11と、論理ブロック番号を添えて情報の書き込みを要求されたときに、当該書き込み要求された情報を予備の第1のブロック領域に書き込む第1の書込手段12と、論理物理対応記憶手段11を参照して、書き込み要求された情報に添えられた論理ブロック番号に対応する物理ブロック番号を読み出す物理ブロック番号読出手段13と、物理ブロック番号読出手段13で読み出された物理ブロック番号を持つ第2のブロック領域に記憶されていた情報を消去し、第2のブロック領域を予備のブロック領域とする第1の消去手段14と、第1のブロック領域の物理ブロック番号を、書き込み要求された情報に添えられた論理ブロック番号と対応づけて、論理物理対応記憶手段11に記憶させる第1の対応関係変更手段15と、第2のブロック領域における消去回数が所定基準値に達したときに、不揮発性半導体メモリ20aにおける予備のブロック領域を除く全ブロック領域から、交代用ブロック領域を探す探索手段16と、探索手段16により見つけられた交代用ブロック領域に記憶されていた情報を、第2のブロック領域に書き込む第2の書込手段17と、第2のブロック領域の物理ブロック番号を、交代用ブロック領域に記憶されていた情報の論理ブロック番号と対応づけて、論理物理対応記憶手段11に記憶させる第2の対応関係変更手段18と、交代用ブロック領域に記憶されていた情報を消去し、当該ブロック領域を予備のブロック領域とする第2の消去手段19とから構成される。
【0021】以上のような構成において、まず不揮発性半導体メモリ20aにブロック領域が多数設けられ、それらに物理ブロック番号1,2,3,4,・・が付されているとする。そして例えば、物理ブロック番号1のブロック領域には論理ブロック番号0を付された情報Aが格納され、物理ブロック番号3のブロック領域には論理ブロック番号2を付された情報Cが格納され、物理ブロック番号4のブロック領域には論理ブロック番号25を付された情報Z98が格納されているとする。なお、物理ブロック番号2のブロック領域には情報が格納されておらず、このブロック領域は予備のブロック領域である。
【0022】ここで、不揮発性半導体メモリ20aが、例えば論理ブロック番号25を添えて情報Z99の書き込みを要求されたとする。情報Z99は情報Z98の更新情報である。この要求に応じて、第1の書込手段12が不揮発性半導体メモリ20aにおいて予備のブロック領域を探し、例えば予備の第1のブロック領域、すなわち物理ブロック番号2のブロック領域を見つけたとする。第1の書込手段12は、書き込み要求された情報Z99をこの物理ブロック番号2のブロック領域に書き込む。それと共に、物理ブロック番号読出手段13が、論理物理対応記憶手段11を参照して、書き込み要求された情報Z99に添えられた論理ブロック番号25に対応する物理ブロック番号4を読み出す。論理物理対応記憶手段11は、論理ブロック番号と物理ブロック番号との対応関係を記憶しており、ここでは例えば、論理ブロック番号25に対応して物理ブロック番号4を記憶している。
【0023】第1の消去手段14は、物理ブロック番号読出手段13で読み出された物理ブロック番号4を持つ第2のブロック領域に記憶されていた情報Z98を消去し、第2のブロック領域を予備のブロック領域とする。そして、第1の対応関係変更手段15が、情報Z99が格納された第1のブロック領域の物理ブロック番号2を、情報Z99に添えられた論理ブロック番号25と対応づけて、論理物理対応記憶手段11に記憶させる。
【0024】次に探索手段16が、第1の消去手段14によって消去が行われた物理ブロック番号4の第2のブロック領域における消去回数を調べ、消去回数が所定基準値に達したときには、不揮発性半導体メモリ20aにおける予備のブロック領域を除く現用ブロック領域から、交代用ブロック領域を探す。交代用ブロック領域は、消去回数が第2のブロック領域の消去回数より少なく、かつ論理ブロック書き込み回数が最低値であるブロック領域を選択する。例えば物理ブロック番号1のブロック領域が交代用ブロック領域として見つけられたとする。
【0025】第2の書込手段17は、探索手段16により見つけられた物理ブロック番号1の交代用ブロック領域に記憶されていた情報Aを、物理ブロック番号4の第2のブロック領域に書き込む。そして第2の対応関係変更手段18が、第2のブロック領域の物理ブロック番号4を、交代用ブロック領域に記憶されていた情報Aの論理ブロック番号0と対応づけて、論理物理対応記憶手段11に記憶させる。さらに、第2の消去手段19が物理ブロック番号1の交代用ブロック領域に記憶されていた情報Aを消去し、物理ブロック番号1のブロック領域を予備のブロック領域とする。
【0026】以上のように、更新情報の書き込みを要求されたときに、その更新情報を予備のブロック領域に書き込むと共に、それまで対応の元情報が格納されていたブロック領域を予備のブロック領域に回す。これによって、各ブロック領域の消去回数が平均的に増加する。しかし、更新頻度が低い情報を格納したブロック領域は予備のブロック領域に回される確率が低い。そこで、そうした更新頻度が低い情報を格納したブロック領域を探し出して予備のブロック領域に回すようにした。さらには、そうした更新頻度が低い情報を、消去回数が所定基準値に達したブロック領域に格納するようにした。
【0027】こうすることにより、ブロック領域間の消去回数のバラツキが解消し、したがって、全部のブロック領域を使用限度ギリギリまで使用することが可能となる。しかも、ブロック領域毎に消去や書き込みの異常をチェックするようにすれば、使用限度を前述の最低値に設定する必要はなく、ブロック領域の各々における実際の使用限度まで使用することが可能となる。
【0028】次に、第1の実施の形態を詳しく説明する。なお、以下に説明する第1の実施の形態では、図1に示す不揮発性半導体メモリ20aはフラッシュメモリ20に対応する。
【0029】図2は、第1の実施の形態に係る2次記憶装置を含んだパソコンなどの小型コンピュータ100の構成を示す図である。小型コンピュータ100は、通常の小型コンピュータの構成と同じように、CPU10、プログラム格納メモリ(ROM)40、RAM30を備え、それらがCPU−BUS60によって接続される。すなわち、プログラム格納メモリ40に記憶されたプログラムに従いCPU10が作動して、CPU10はRAM30に一時的なデータの記憶を行いながら所定の処理を実行する。
【0030】フラッシュメモリ20は2次記憶装置として作動し、電源断で消えてはいけないデータを記憶する。このデータの記憶処理をCPU10が行い、図1で示した第1の書込手段12、物理ブロック番号読出手段13、第1の消去手段14、第1の対応関係変更手段15、探索手段16、第2の書込手段17、第2の対応関係変更手段18、及び第2の消去手段19は、CPU10の記憶処理によって実現される機能である。
【0031】RAM30のメモリ領域にはライトキャッシュ領域が設けられ、ライトキャッシュ領域は、書き込み時のデータをフラッシュメモリ20に書く前に一時的に溜めておく。ライトキャッシュ領域以外のRAM領域には、電源断で消えてしまっても構わないデータのうち、その書き込み場所(セクタ番号で指定)があらかじめ決まっているデータが格納される。
【0032】寿命表示ランプ70は、フラッシュメモリ20が寿命に至り使用不可能となったときに点灯される。ライトキャッシュランプ71は、RAM30のライトキャッシュ領域に書き込みデータが溜まっているときに点灯される。ライトキャッシュランプ71の点灯は、消してはならないデータがまだフラッシュメモリ20に書き込まれずライトキャッシュに溜まっていることを保守者に知らせ、保守者が電源断を不用意に行うことを防ぐ。
【0033】図3はフラッシュメモリ20の各ブロック領域を示す図である。フラッシュメモリ20は1024個のブロック領域から構成され、物理ブロック番号0〜1023が付与されている。1ブロック領域は64KB(1KB=1024バイト)の容量を持つ。物理ブロック番号0のブロック領域は、フォーマット情報やフラッシュメモリの種類、寿命フラグを記憶するために使用される。物理ブロック番号1〜1023の各ブロック領域がディスクデータを記憶する部分である。ディスクデータは、従来ならばハードディスク装置に記憶されるべきデータという意味である。論理ブロック数は960であり、したがって、予備ブロック数が63となる。
【0034】1セクタを512バイト(SCSIで通常使用される値)に設定すると、1ブロックには128セクタ(=64×1024/512)を収容できる。1セクタ分を、制御情報を格納する情報エリアに使用して、残り127セクタ分を、ディスクデータを格納するデータ領域とする。
【0035】図4は、ブロックの中の構成を示す図である。情報エリアは、論理番号欄l、消去回数欄c、論理ブロック書き込み回数欄w、交代基準値欄n、及びチェックサム欄sの各欄からなる。論理番号欄lには、データ領域に格納されているディスクデータの論理ブロック番号が記載される。論理ブロック番号は、ディスクデータの識別番号である。なお、自分のブロックが予備ブロックとなっているときは、予備であることを示す符号(例えばFFFFFFFFH)が論理番号欄lに記載される。消去回数欄cには、自ブロックを消去した回数が記載される。ブロックの消去処理を行うごとに、1増やした値が書き込まれる。寿命が近いかどうかの目安になる。論理ブロック書き込み回数欄wには、データ領域に格納されているディスクデータに対して更新書き込みが行われた回数が記載される。交代基準値欄nには、自ブロックで行われた消去処理の回数に対する比較基準値が記載される。自ブロックでの消去回数がこの交代基準値に達すると、自ブロックに対して後述の交代処理が実行される。チェックサム欄sには、ブロック内のデータの合計値が記載され、データが正しく伝送されたかどうかのチェックに使用される。
【0036】データ領域には、ディスクデータとしての実際のデータが格納される。交代基準値としては、フラッシュメモリ20の消去回数(書き込み回数)の制限回数が、例えば最小10万回、平均100万回であるので、最小値10万回の10分の1程度である値8192(=213)が設定される。
【0037】次に、RAM30またはフラッシュメモリ20に対してCPU10によって行われるデータ書込処理及び読出処理を説明する。図5は、RAM30またはフラッシュメモリ20に対するCPU10によるデータ書込処理及び読出処理の手順を示すフローチャートである。以下、図5中のステップ番号(S)を適宜引用しながら説明する。
【0038】書込処理または読出処理の対象となるデータにセクタ番号が示されているか、かつ示されたセクタ番号がRAM領域に相当するか否かを判別する(S1)。判別結果が肯定、つまり、書込処理または読出処理の対象となるデータが、電源断で消えても構わないデータであり、かつ書き込みや読み出しの位置が予め分かっているRAM領域に関わるデータであるならば、セクタ番号からRAM30内のアドレスを計算する(S2)。1セクタは512バイトなので、そのセクタ番号からRAM領域の先頭セクタ番号を引いて512を掛け、オフセットアドレスを足せば、所望のアドレスが得られる。書き込みのときは、得られたアドレスのRAM領域に書き込みデータを転送し、読み出しのときは、得られたアドレスのRAM領域に格納されていたデータの内容を読み出して転送する(S3)。
【0039】ステップS1の判別答が否定、つまりフラッシュメモリ20に関わるデータであるならば、フラッシュメモリアクセス処理を行う(S4)。図6は、図5のステップS4で行われるフラッシュメモリアクセス処理の内容を示すフローチャートである。
【0040】まず、フラッシュメモリ20が装置寿命になっているか否かを判別する(S11)。この判別はフラッシュメモリ20の物理ブロック番号0に格納されている寿命フラグを参照する。フラッシュメモリ20が装置寿命になっている場合には寿命表示ランプ70を点灯して、フラッシュメモリ20に寿命がきて使用できないことを操作者に知らせる(S12)。
【0041】フラッシュメモリ20にまだ寿命がきていなければ、セクタ番号を論理ブロック番号に変換する(S13)。すなわち、1ブロックに127セクタ入るので、セクタ番号を127で割って商と余りを求め、商を論理ブロック番号に、余りをブロック内のオフセット位置とする。127で割る処理は実際に計算するか、あるいはテーブルを利用する。
【0042】そして、書込(write)が求められているならば書き込み処理を行う(S14,S15)。この処理の詳しい内容については、図7を参照して後述する。読み出し(read)が求められているならば、読み出し指示されたデータがRAM30のライトキャッシュ領域にあるか否かを判別する(S16)。ライトキャッシュ領域にある場合は、ライトキャッシュ領域にあるデータを読み出して転送する(S19)。ライトキャッシュ領域にない場合は、論理物理変換テーブルを参照して論理ブロック番号から物理ブロック番号に変換し(S17)、得られた物理ブロック番号からデータが格納されているアドレスを計算する(S18)。この変換は、後述の書き込み処理で使われる論理物理変換テーブルを使用する。そして、得られたアドレスを基に、フラッシュメモリ20からデータを読み出して転送する(S19)。
【0043】図7(A)は、図6のステップS15の内容を示すフローチャートであり、図7(B)は、図7(A)の処理で動作させられたタイマが所定時間を計測完了したときに実行される処理を示すフローチャートである。
【0044】書き込み処理の対象となるデータが過去に入力されたデータの更新データであり、しかもRAM30のライトキャッシュ領域にその元のデータが存在するか否かを判別する(S21)。存在するならば元のデータをライトキャッシュ領域から破棄し(S22)、その元のデータをライトキャッシュ領域に書き込んだときに計測を開始したタイマの当該データ用の経過時間値を0にリセットする(S23)。
【0045】そして、更新データをライトキャッシュ領域に書き込み(S24)、この書き込み時点からの経過時間をタイマに計測させる(S25)。タイマは、データ毎に書き込み時点からの経過時間を計測する。ステップS21で元のデータが存在しなければ、ステップS24へ進む。
【0046】そして、経過時間が所定時間(例えば2秒)に達すると、ライトキャッシュ領域に書き込まれていたデータはフラッシュメモリ20へ書き込まれ、ライトキャッシュ領域の当該データは消去される(S26)。
【0047】以上のように、図7(A)及び図7(B)で示される処理により、フラッシュメモリ20に書き込まれるべきデータが一時的にRAM30のライトキャッシュ領域に書き込まれる。そして、書き込み時点から所定時間が経過すると、そのデータはフラッシュメモリ20に移される。もし、所定時間の経過前に当該データの更新データが再度書き込まれることがあれば、ライトキャッシュ領域において更新が行われ、したがって、フラッシュメモリ20での書き込み処理や消去処理が不要となり、フラッシュメモリ20の寿命を延ばすことができる。
【0048】なお、ライトキャッシュ領域にデータが格納されている間はライトキャッシュランプ71を点灯し、消去されると消灯する。次に、図7(B)に示すステップS26で実行される処理の詳しい内容を、図8及び図9を参照して説明する。
【0049】図8及び図9は、フラッシュメモリ20への書き込み処理の手順を示すフローチャートであり、図8はその前半を、図9は後半を示す。ここで、論理ブロック番号Lが付された更新データをフラッシュメモリ20へ書き込むように指示されたとする。
【0050】フラッシュメモリ20に含まれる各予備ブロックの内、消去回数欄cの値が最低値の予備ブロックを選び、それをブロックYとする(S31)。また、論理物理変換テーブルを参照して論理ブロック番号Lに対応する物理ブロック番号を検出し、検出された物理ブロック番号を持つブロック領域をブロックPとする(S32)。
【0051】論理物理変換テーブルにおいて、ブロックYの物理ブロック番号を論理ブロック番号Lに対応づけて記憶し(S33)、論理ブロック番号Lが付された更新データをブロックYに書き込む。
【0052】フラッシュメモリ20から出力されるステータスコードを見て、更新データのブロックYへの書き込みが正常に行われたか否かを確認する(S35)。正常に書き込まれなかったならば、ブロックYは寿命になったと見なす(S36)。フラッシュメモリ20に予備ブロックがまだ存在すればステップS31へ戻り(S37)、別の予備ブロックを探す。もう予備ブロックが無ければフラッシュメモリ20を寿命とすると共に、寿命表示ランプ70を点灯する(S40)。
【0053】ステップS35での確認の結果、書き込みが正常であれば、ブロックYの論理番号欄lに論理ブロック番号Lを書き込み、また、ブロックYの論理ブロック書き込み回数欄wに、ブロックPの論理ブロック書き込み回数欄wの値に1を加えたものを書き込む(S38)。
【0054】ブロックPの情報エリア及びデータ領域に格納されていた情報を消去する(S39)。ただし消去する前に、消去回数欄c及び交代基準値欄nに記載されていた値を覚えておく。
【0055】フラッシュメモリ20から出力されるステータスコードを見て、ブロックPでの消去処理が正常に行われたか否かを確認する(S41)。消去処理が正常に行われなかったならばブロックPは寿命になったと見なす(S42)。そして、フラッシュメモリ20に予備ブロックがまだ存在するならば、この書き込み処理を終了する(S43)。予備ブロックが無ければフラッシュメモリ20を装置寿命とすると共に、寿命表示ランプ70を点灯する(S40)。
【0056】ステップS41で消去処理が正常に行われたと確認されたならば、覚えておいたブロックPの消去回数欄cに記載されていた値に1を加えたものをブロックPの消去回数欄cに書き込み、また覚えておいたブロックPの交代基準値欄nに記載されていた値をそのままブロックPの交代基準値欄nに書き込む(S44)。
【0057】以上の処理を、具体的な例によって説明する。図10は、書き込み処理が行われたフラッシュメモリ20の各ブロック領域の具体的な例を示す図であり、(A)が書き込み処理前のフラッシュメモリ20を示し、(B)が書き込み処理後のフラッシュメモリ20を示す。図中、図9における論理ブロック番号Lが論理ブロック番号1であり、図9におけるブロックPが物理ブロック番号2のブロック領域であり、図9におけるブロックYが物理ブロック番号961のブロック領域である。
【0058】図9に戻って、予備ブロックになったブロックPに対して交代処理が必要か否かを判別する(S45)。すなわち、新たに書き込まれたブロックPの消去回数欄cの値と交代基準値欄nの値とを比較し、前者が後者に達していれば、交代処理が必要と判断する。交代処理に先だって、ブロックPの交代基準値欄nの値を更新する(S46)。更新は、それまでの値に値8192を加えることによって行う。
【0059】そして、ブロックPの交代処理を行う(S47)。交代処理の内容については図11を参照して後述する。ステップS45での判別で交代処理が不必要とされたときには、ブロックPを予備ブロックとする(S48)。
【0060】図11は、図9で示したステップS47の交代処理の手順を詳しく示すフローチャートである。例えばブロックPが交代処理の対象となったとする。
【0061】まず、フラッシュメモリ20における全部のブロック領域の中で予備ブロック以外の現用ブロック、つまり、論理ブロック番号が割り当てられ、データ領域にデータが格納されている各ブロックの内、消去回数欄cの値が、ブロックPの消去回数欄cの値より小さいブロック全部を探し出す。該当するブロックが無ければ交代処理を終了する。そして、それらのブロックの中で、論理ブロック書き込み回数欄wの値が最も小さいブロックを検出し、それをブロックKとする(S51)。最も小さいブロックが複数検出された場合、物理ブロック番号の一番若いブロックをブロックKとする。
【0062】このブロックKに割り当てられている論理ブロック番号を読み出す。これを論理ブロック番号Mとする(S52)。ブロックPのデータ領域に、ブロックKのデータ領域に格納されていたデータを書き込む。また、ブロックPの論理番号欄lに、ブロックKの論理番号欄lに格納されていた値を書き込み、ブロックPの論理ブロック書き込み回数欄wに、ブロックKの論理ブロック書き込み回数欄wに格納されていた値を書き込む(S53)。
【0063】フラッシュメモリ20から出力されたステータスコードを見て、ブロックPへの書き込みが正常に行われたか否かを判別する(S54)。正常に行われていなければブロックPは寿命になったとし(S55)、フラッシュメモリ20に予備ブロックがまだあれば(S56)この交代処理を終了する。もう予備ブロックが無ければフラッシュメモリ20が装置寿命であるとし、寿命表示ランプ70を点灯する(S57)。
【0064】ステップS54で書き込みが正常に行われたならば、論理物理変換テーブルにおいて、ブロックPの物理ブロック番号を論理ブロック番号Mに対応づけて記憶する(S58)。そして、ブロックKの情報エリア及びデータ領域に格納されていた情報を消去する(S59)。ただし消去する前に、消去回数欄c及び交代基準値欄nに記載されていた値を覚えておく。
【0065】フラッシュメモリ20から出力されたステータスコードを見て、消去処理が正常に行われたか否かを確認する(S60)。正常に行われなったならばブロックKは寿命になったと見なし(S61)、フラッシュメモリ20に予備ブロックがまだあれば(S56)、交代処理を終了する。予備ブロックが無ければフラッシュメモリ20は装置寿命であるとし、寿命表示ランプ70を点灯する(S57)。
【0066】ステップS60で消去処理が正常に行われたと確認されれば、覚えておいたブロックKの消去回数欄cに記載されていた値に1を加えたものをブロックKの消去回数欄cに書き込み、また覚えておいたブロックKの交代基準値欄nに記載されていた値をそのままブロックKの交代基準値欄nに書き込む(S62)。そしてブロックKを予備ブロックとする(S63)。
【0067】以上の処理を、具体的な例によって説明する。図12は、書き込み処理に引き続き交代処理が行われたフラッシュメモリ20の各ブロック領域の具体的な例を示す図であり、(A)が書き込み処理前のフラッシュメモリ20を示し、(B)が書き込み処理後、交代処理前のフラッシュメモリ20を示し、(C)が交代処理後のフラッシュメモリ20を示す。図中、図11における論理ブロック番号Mが論理ブロック番号0であり、図11におけるブロックPが物理ブロック番号4のブロック領域であり、図11におけるブロックKが物理ブロック番号1のブロック領域である。
【0068】以上説明した交代処理により、あるブロックに対して消去処理をした段階において、現用のブロックの中に、消去回数及び論理ブロック書き込み回数が共に少ないブロックがある場合、そのブロックと、消去処理をしたブロックとを入れ替えるようにする。これにより、消去回数がブロック間で均等化される。つまり、消去回数及び論理ブロック書き込み回数が共に少ない現用ブロックは、今後も書き込みが行われる確率が低く、そのため、放っておくと消去回数が低いまま、フラッシュメモリ20が装置寿命となってしまう可能性がある。そこで、こうしたブロックを抽出して予備ブロック化して消去回数を増やすようにする。これによって、フラッシュメモリ20が寿命と見なされたときに、各ブロックの消去回数が均等に平均値100万回前後に達することが期待できる。
【0069】なお、上記第1の実施の形態では、論理物理変換テーブルを使用するようにしているが、こうしたテーブルを備えず、ブロック領域の情報エリアにおける論理番号欄lを検索し、検出された論理番号欄lに対応する物理ブロック番号を得るようにしてもよい。
【0070】次に、第2の実施の形態を説明する。第2の実施の形態は、基本的に第1の実施の形態と同じ構成となっている。ただし第1の実施の形態では、図4に示すようにブロック毎に交代基準値欄nを設け、また図9のステップS46で示すように、ブロックPの交代基準値欄nの値を更新するようにしている。これに対して、第2の実施の形態ではブロック毎に交代基準値欄nを設けず、また交代基準値欄nの値の更新を行わない。
【0071】すなわち、交代基準値を予め、例えば8192及びその整数倍の複数の値と決めておき、図9のステップS45においてブロックの消去回数がこれらの値のいずれかと一致したときに交代処理が必要と判断する。
【0072】これにより、ブロックの情報エリアに交代基準値欄nが不要となり、また、図9のステップS46で行っていた交代基準値のフラッシュメモリ20への書き込み処理を省略できる。
【0073】次に、第3の実施の形態を説明する。図13は、第3の実施の形態に係る2次記憶装置を含んだ小型コンピュータの構成を示す図である。第3の実施の形態は、基本的に第1の実施の形態と同じ構成となっている。そこで、第1の実施の形態と同一構成部分には同一の参照符号を付してその説明を省略する。
【0074】第3の実施の形態では、寿命間近ランプ72が新たに設けられる。寿命間近ランプ72は、フラッシュメモリ20の装置寿命が近づいたときに、寿命表示ランプ70の点灯に先立って点灯されるものであり、フラッシュメモリ20の使用ができなくなる少し前に操作者に警告を与える役目を果たす。
【0075】図14は、寿命間近ランプ72の点灯処理に関わる部分を示す図である。すなわち、第1の実施の形態における図8のステップS37からステップS31への途中、図9のステップS43から処理終了への途中、及び図11のステップS56から処理終了への途中に、図14のステップS71,S72を挿入する。
【0076】すなわち、フラッシュメモリ20に残っている予備ブロックの数がm個になったときに(S71)、寿命間近ランプ72を点灯するようにする(S72)。個数mを適当に設定することにより、第3の実施の形態では、フラッシュメモリ20の使用ができなくなる少し前に、その旨を操作者に警告することが可能となる。
【0077】次に、第4の実施の形態を説明する。図15は、第4の実施の形態に係る2次記憶装置を含んだ小型コンピュータの構成を示す図である。第4の実施の形態は、基本的に第1の実施の形態と同じ構成となっている。そこで、第1の実施の形態と同一構成部分には同一の参照符号を付してその説明を省略する。
【0078】第4の実施の形態では、図2に示す第1の実施の形態におけるフラッシュメモリ20の代わりに、0系フラッシュメモリ21と1系フラッシュメモリ22とがCPU−BUS60に接続される。0系フラッシュメモリ21と1系フラッシュメモリ22とは同一構成となっており、第1の実施の形態におけるフラッシュメモリ20の構成と同一である。0系フラッシュメモリ21が現用系フラッシュメモリとして働き、1系フラッシュメモリ22が予備系フラッシュメモリとして働く。
【0079】第4の実施の形態では、図7に示す第1の実施の形態におけるステップS25のタイマに、書き込み時点からの2つの異なる経過時間を計測させる。すなわち、RAM30のライトキャッシュ領域にデータが書き込まれると、タイマによる経過時間の計測が開始され、書き込み待ち時間2秒及び5秒の経過が検出される。2秒経過後にそのデータが読み出されて0系フラッシュメモリ21に書き込まれ、5秒経過後にそのデータが読み出されて1系フラッシュメモリ22に書き込まれる。
【0080】なお、0系フラッシュメモリ21と1系フラッシュメモリ22とに同じデータが書き込まれ、読み出しは0系フラッシュメモリ21から行われる。図16は、RAM30のライトキャッシュ領域に書き込まれたデータが読み出されて0系フラッシュメモリ21に書き込まれるタイミングを示す図である。また、図17は、RAM30のライトキャッシュ領域に書き込まれたデータが読み出され、1系フラッシュメモリ22に書き込まれるタイミングを示す図である。両図において、データ1〜7は、同一論理ブロック番号を有したデータであり、大きい番号のデータが小さい番号の更新データである。
【0081】すなわち、データ入力時点から2秒以内に更新データがRAM30に入力された場合には、図16及び図17の両方とも、RAM30でデータの上書きが行われるだけで、フラッシュメモリ21,22への読み出しは行われない。
【0082】一方、データ入力時点から5秒以上経過した場合には、図16及び図17の両方とも、RAM30からデータが読み出され、フラッシュメモリ21,22へ書き込まれる。
【0083】データ入力時点から2秒を越え5秒未満の間に更新データがRAM30に入力された場合には、図16に示す現用系ではRAM30からデータが読み出され、フラッシュメモリ21へ書き込まれる。一方、図17に示す予備系ではRAM30からデータが読み出されず、フラッシュメモリ21への書き込みは行われない。
【0084】このように、異なる2つの書き込み待ち時間を設け、長い方の書き込み待ち時間を予備系のフラッシュメモリ22に割り当てているので、予備系のフラッシュメモリ22への書き込み回数が、現用系のフラッシュメモリ21への書き込み回数より少なくすることができ、予備系のフラッシュメモリ22の装置寿命を長くすることができる。また、異なる2つの書き込み待ち時間を設けることで、両系が同時期に装置寿命に到達することを防止している。
【0085】
【発明の効果】以上説明したように本発明では、更新情報の書き込みを要求されたときに、その更新情報を予備のブロック領域に書き込むと共に、それまで対応の元情報が格納されていたブロック領域を予備のブロック領域に回す。これによって、各ブロック領域の消去回数が平均的に増加する。しかし、更新頻度が低い情報を格納したブロック領域は予備のブロック領域に回される確率が低い。そこで、そうした更新頻度が低い情報を格納したブロック領域を探し出して予備のブロック領域に回すようにした。さらには、そうした更新頻度が低い情報を、消去回数が所定基準値に達したブロック領域に格納するようにした。
【0086】こうすることにより、ブロック領域間の消去回数のバラツキが解消し、したがって、全部のブロック領域を使用限度ギリギリまで使用することが可能となる。また、ブロック領域毎に消去や書き込みの異常をチェックするようにし、異常があって初めて、ブロックの使用が不可能と判定するようにする。これにより、使用限度を消去回数の最低限度値に設定する必要がなくなり、ブロック領域の各々における実際の使用限度まで使用することが可能となる。
【0087】また、交代基準値として予め複数の値を設定しておき、ブロックの消去回数がこれらの値のいずれかと一致したときに交代処理を実施するようにする。これにより、ブロックの情報エリアに交代基準値欄を設けることが不要となり、また、交代基準値のフラッシュメモリへの書き込み処理を省略できる。
【0088】また、フラッシュメモリに残っている予備ブロックの数が所定数になったときに、寿命間近ランプを点灯するようにする。これにより、フラッシュメモリの使用ができなくなる少し前に、その旨を操作者に警告することが可能となる。
【0089】さらに、フラッシュメモリに冗長構成を持たせるとともに、異なる2つの書き込み待ち時間を設け、RAMのライトキャッシュ領域からデータを読み出すタイミングを変えている。
【0090】そのため、予備系のフラッシュメモリへの書き込み回数が、現用系のフラッシュメモリへの書き込み回数より少なくすることができ、予備系のフラッシュメモリの装置寿命を長くすることができる。また、異なる2つの書き込み待ち時間を設けることで、両系が同時期に装置寿命に到達することを防止している。
【出願人】 【識別番号】000005223
【氏名又は名称】富士通株式会社
【出願日】 平成10年(1998)5月11日
【代理人】 【弁理士】
【氏名又は名称】服部 毅巖
【公開番号】 特開平11−328043
【公開日】 平成11年(1999)11月30日
【出願番号】 特願平10−127251