(57)【要約】【課題】内部カウンタを備えた不揮発性メモリを延命させる。【解決手段】書換回数が制限される不揮発性メモリ１３とファイルシステム２１０との間のインターフェイスとして機能するメモリドライバ２２において、プロセッサ１１に対し、書込み又は読出しのアドレスが所定値Ａ０であるか否かを判定させ、書込みアドレスがＡ０であると判定した場合には（Ｓ０、Ｓ１）、このアドレスＡ０に対応したアドレスＡ０〜Ａ３のそれぞれに格納されているカウント値のうち最小値（Ａｉ）minが格納されているアドレスに、カウント値の最大値（Ａｊ）maxを１だけインクリメントしたものを書き込ませ、読出しアドレスがＡ０であると判定した場合には、アドレスＡ０〜Ａ３のそれぞれに格納されているカウント値のうち最大値（Ａｊ）maxを読み出させる。【選択図】図１
2010140580.tif 000002
【特許請求の範囲】
【請求項１】
書換回数が制限される不揮発性メモリとオペレーティングシステムとの間のインターフェイスとして機能するメモリドライバにおいて、プロセッサに対し、
書込み又は読出しのアドレスが所定値であるか否かを判定させ、
（ａ）書込みアドレスが該所定値であると判定した場合には、該書き込みアドレスに対応した複数のアドレスのそれぞれに格納されているカウント値のうち最小値が格納されているアドレスに、該複数のカウント値の最大値をインクリメントした値を書き込ませ、
（ｂ）読出しアドレスが該所定値であると判定した場合には、該複数のアドレスのそれぞれに格納されているカウント値のうち最大値を読み出させる、
ことを特徴とする不揮発性メモリドライバ。
【請求項２】
該複数のカウント値のそれぞれは、規則的に変化するアドレスのそれぞれに格納されていることを特徴とする請求項１に記載の不揮発性メモリドライバ。
【請求項３】
該プロセッサに対し、ステップ（ａ）において、該最大値が所定値である場合、該複数のアドレスのそれぞれにカウント範囲の最小値を書き込ませる、
ことを特徴とする請求項１又は２に記載の不揮発性メモリドライバ。
【請求項４】
プロセッサと、書換回数が制限されるメモリと、請求項１乃至３のいずれか１つに記載の不揮発性メモリドライバが格納された記憶手段と、を有することを特徴とする電子機器。
【請求項５】
プロセッサに対し、書換回数が制限される不揮発性メモリを駆動させる不揮発性メモリ駆動方法において、該プロセッサに対し、
書込み又は読出しのアドレスが所定値であるか否かを判定させ、
（ａ）書込みアドレスが該所定値であると判定した場合には、該書き込みアドレスに対応した複数のアドレスのそれぞれに格納されているカウント値のうち最小値が格納されているアドレスに、該複数のカウント値の最大値をインクリメントした値を書き込ませ、
（ｂ）読出しアドレスが該所定値であると判定した場合には、該複数のアドレスのそれぞれに格納されているカウント値のうち最大値を読み出させる、
ことを特徴とする不揮発性メモリ駆動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアカウンタの処理を行う不揮発性メモリドライバ及びこれを備えた電子機器並びに不揮発性メモリ駆動方法に関する。
【背景技術】
【０００２】
フラッシュメモリのように書換え回数が制限される不揮発性メモリでは、特定領域に頻繁に書き込みを行うと、メモリ全体の寿命がこの特定領域の寿命で決定される。
【０００３】
そこで、下記特許文献１では、カウント値が巡回するＮ進カウンタを用い、ブロックへの書き込みを行う際にこのカウント値を変化させ、該カウンタ値をフラッシュメモリ内のブロックアドレスと対応させて、複数のメモリブロックを巡回的に使用することにより、フラッシュメモリ全体としての延命を図っている。
【特許文献１】特開平１１−１４４４７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、フラッシュメモリの外部にバッテリーバックアップしたメモリを、ソフトウェアカウンタとして用いていたので、このようなメモリが電子機器に備えられていない場合には、適用することができないか、或いは新たにハードウェア構成を追加しなければならないという問題点があった。
【０００５】
このカウンタをフラッシュメモリ内のソフトウェアカウンタで構成すると、このカウンタが上記特定領域となり、フラッシュメモリ全体の寿命がこのカウンタにより決定される。
【０００６】
このような問題は、例えば画像形成装置の印刷カウンタとして、フラッシュメモリ内にソフトウェアカウンタを構成する場合にも生ずる。
【０００７】
本発明の目的は、このような問題点に鑑み、内部カウンタを備えた不揮発性メモリを延命させる不揮発性メモリドライバ及びこれを備えた電子機器並びに不揮発性メモリ駆動方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明による不揮発性メモリドライバの第１態様では、書換回数が制限される不揮発性メモリとオペレーティングシステムとの間のインターフェイスとして機能するメモリドライバにおいて、プロセッサに対し、
書込み又は読出しのアドレスが所定値であるか否かを判定させ、
（ａ）書込みアドレスが該所定値であると判定した場合には、該書き込みアドレスに対応した複数のアドレスのそれぞれに格納されているカウント値のうち最小値が格納されているアドレスに、該複数のカウント値の最大値をインクリメントした値を書き込ませ、
（ｂ）読出しアドレスが該所定値であると判定した場合には、該複数のアドレスのそれぞれに格納されているカウント値のうち最大値を読み出させる。
【０００９】
本発明による不揮発性メモリドライバの第２態様では、第１態様において、該複数のカウント値のそれぞれは、規則的に変化するアドレスのそれぞれに格納されている。
【００１０】
本発明による不揮発性メモリドライバの第３態様では、第１又は２態様において、該プロセッサに対し、ステップ（ａ）において、該最大値が所定値である場合、該複数のアドレスのそれぞれにカウント範囲の最小値を書き込ませる。
【発明の効果】
【００１１】
上記第１態様の構成によれば、書込みアドレスが所定値であると判定した場合には、書き込みアドレスに対応した複数ｎのアドレスのそれぞれに格納されているカウント値のうち最小値が格納されているアドレスに、これらカウント値の最大値をインクリメントした値を書き込ませ、読出しアドレスが該所定値であると判定した場合には、これらアドレスのそれぞれに格納されているカウント値のうち最大値を読み出させるので、それぞれのアドレスに対する書込回数が、１つのアドレスを用いた従来のそれの１／ｎとなり、これにより、内部カウンタを備えた不揮発性メモリを延命させることができるという効果を奏する。
【００１２】
上記第２態様の構成によれば、アドレスを規則的に変化させてカウント値を読出させることができるので、容易迅速にカウンタ処理を行うことができるという効果を奏する。
【００１３】
上記第３態様の構成によれば、該最大値が所定値である場合、該複数のアドレスのそれぞれにカウント範囲の最小値を書き込ませるので、上記のような複数カウンタを用いても、Ｎ進カウンタを容易に構成できるという効果を奏する。
【００１４】
本発明の他の目的、構成及び効果は以下の説明から明らかになる。
【実施例１】
【００１５】
図４は、本発明が適用された電子機器１０のハードウェア構成を示す概略ブロック図である。電子機器１０は、例えば画像形成装置、電子カメラ又は携帯端末などである。
【００１６】
この電子機器１０では、ＭＰＵ１１がインターフェイス１２を介して不揮発性メモリ１３、ＲＡＭ１４、入力装置１５、表示装置１６およびＮＩＣ１７に結合されている。図１１では、簡単化のために複数種のインターフェイスを１つのブロック１２で表している。
【００１７】
不揮発性メモリ１３は、補助記憶装置として用いられ、これには、ブートローダと、オペレーティングシステム（ＯＳ）と、ＯＳの上層で動作するアプリケーションと、このＯＳと各種デバイスとの間のインターフェイスとして機能するドライバと、データとが格納されている。
【００１８】
このアプリケーションは、例えばプリンタアプリを含む。このデータは、電子機器１０の各種設定値及び状態情報を含み、この状態情報には印刷枚数を示すカウント値を含む。ドライバには、不揮発性メモリ１３自体のそれを含む。
【００１９】
ＲＡＭ１４は、主記憶装置として用いられる。また、ネットワークインターフェイス１７は、ネットワーク１８に結合されている。
【００２０】
図３は、不揮発性メモリ１３のアクセスに関係したソフトウェア構成を示すブロック図である。
【００２１】
アプリケーション２０は、オペレーティングシステム２１のファイルシステム２１０及びメモリドライバ２２を介して入力装置１５をアクセスする。このファイルシステム２１０は、ファイルアクセス関数を含んでおり、ファイルに関してはデバイス非依存のアドレスを用いて処理を行う。メモリドライバ２２は、不揮発性メモリ１３に依存した処理を行うことにより、オペレーティングシステム２１と入力装置１５との間のインターフェイスとして機能する。
【００２２】
図２(Ａ)は、不揮発性メモリ１３の一部概略メモリマップを示しており、電子機器１０の設定値及び状態は、設計段階で予め定められたアドレスに割り当てられる。
【００２３】
この状態には、上記カウント値が含まれ、このカウント値は、図２（Ｂ）に示すようなアドレス変動カウンタ３０に格納される。アドレス変動カウンタ３０は、４つの連続するワードアドレスＡ０〜Ａ０＋３で指定される一時カウンタ３１〜３４を備えている。
【００２４】
アプリケーション２０のプログラミングを容易にするために、アプリケーション２０からは、アドレス変動カウンタ３０がカウンタ３１のみで構成されている場合と同様の処理を行えるようにしている。これを実現するために、メモリドライバ２２は、アドレス変動カウンタ３０に関し、図１に示すような概略フローチャートに従った処理を行っている。以下、括弧内は図１中のステップ識別符号である。
【００２５】
（Ｓ０）命令のオペランドに一時カウンタ３１のアドレスＡ０が含まれていればステップＳ１へ進み、そうでなければ図１の処理から抜けて他の処理へ移る。
【００２６】
（Ｓ１）この命令が、カウンタ３１に値をセットするものであればステップＳ２へ進み、カウンタ３１をインクリメントするものであればステップＳ３へ進み、カウンタ３１の内容であるカウント値を読み出すものであればステップＳ５へ進む。
【００２７】
（Ｓ２）一時カウンタ３１〜３４の内容を消去した後、命令で指定された値を一時カウンタ３１〜３４のそれぞれに書き込み、図１の処理を終了する。この値が０である場合、図２（Ｃ）の左端に示す状態となる。
【００２８】
（Ｓ３）（Ａｉ）minを消去する。ここに（Ａｉ）minは、一時カウンタ３１〜３４のカウント値のうち最小値を示す。最小値が複数ある場合、（Ａｉ）minはそれらのいずれであってもよい。
【００２９】
（Ｓ４）（Ａｉ）minのカウンタに、最大値（Ａｊ）maxを１だけインクリメントしたものを代入し、図１の処理を終了する。ここに（Ａｊ）maxは、一時カウンタ３１〜３４のカウント値のうち最大値を示す。この（Ａｊ）maxが、アドレス変動カウンタ３０のカウント値である。
【００３０】
（Ｓ５）（Ａｊ）maxを読み出す。
【００３１】
図２（Ｃ）は、アドレス変動カウンタ３０の内容の変化を示し、この変化は、アドレス変動カウンタ３０をステップＳ２でゼロクリアした後、ステップＳ３でアドレス変動カウンタ３０を１だけインクリメントし、ステップＳ３０の処理を繰り返した場合に対応している。
【００３２】
上記最小値及び最大値は、一般的なアルゴリズムを用いて決定することもできるが、本実施例の場合には、次のようにして簡単に求めることができる。
【００３３】
すなわち、アドレスＡ０〜Ａ０＋３の範囲内で、アドレスＡ０から順にカウント値を読み出し、今回読み出したカウント値が前回読み出したカウント値よりも減少した場合には、今回読み出したカウント値を最小値（Ａｉ）minとみなし、前回読み出したカウント値を最大値（Ａｊ）maxとみなす。この減少がない場合、すなわち一時カウンタ３１〜３４の値が互いに等しい場合には、一時カウンタ３１のカウント値を最小値（Ａｉ）minとする。
【００３４】
本実施例１によれば、書換回数が制限される不揮発性メモリ１３とオペレーティングシステム２１との間のインターフェイスとして機能するメモリドライバ２２において、プロセッサ１１に対し、書込み又は読出しのアドレスが所定値Ａ０であるか否かを判定させ、書込みアドレスがＡ０であると判定した場合には（Ｓ０、Ｓ１）、このアドレスＡ０に対応したアドレスＡ０〜Ａ３のそれぞれに格納されているカウント値のうち最小値（Ａｉ）minが格納されているアドレスに、カウント値の最大値（Ａｊ）maxを１だけインクリメントしたものを書き込ませ、読出しアドレスがＡ０であると判定した場合には、アドレスＡ０〜Ａ３のそれぞれに格納されているカウント値のうち最大値（Ａｊ）maxを読み出させるので、特定領域（本実施例では一時カウンタ３１〜３４の任意の１ワード）に対する書き込み回数が従来の１/４となり、アドレス変動カウンタ３０により不揮発性メモリ１３の寿命が決定されるのを防止することができる。
【００３５】
また、外部バッテリーバックアップカウンタを用いる必要がないので、電子機器１０のハードウェア構成が簡単となる。
【００３６】
さらに、メモリドライバ２２で図１に示すような処理をアドレス変動カウンタ３０に対して行うので、アプリケーション２０のプログラミングが容易となる。
【実施例２】
【００３７】
図５は、図２（Ｂ）のアドレス変動カウンタ３０をＮ進カウンタとする場合の、メモリドライバ２２による処理を示すフローチャートである。図１と異なる点は、図１のステップＳ３とステップＳ４との間に、ステップＳ６とステップＳ７とを追加した点である。
【００３８】
（Ｓ６）最大値（Ａｊ）maxが、予め設定された値（Ｎ−１）に等しければ、ステップＳ７へ進み、そうでなければステップＳ４へ進む。
【００３９】
（Ｓ７）一時カウンタ３１〜３４のカウント値をゼロクリアする。すなわち、一時カウンタ３１〜３４のカウント値を消去し、消去した値が０でない場合には、一時カウンタ３１〜３４のそれぞれに０を書き込む。
【００４０】
他の点は上記実施例１と同一である。
【００４１】
なお、本発明には外にも種々の変形例が含まれる。
【００４２】
例えば、アドレス変動カウンタ３０を構成する複数の一時カウンタ３１〜３４は、連続したアドレスとする必要性はなく、図６に示すように互いに離れたアドレスＡm0、Ａm1、Ａm2及びＡm3で識別される記憶部をそれぞれ一時カウンタ３１〜３４としてもよい。この場合、これらアドレスが規則的に変化したものとすることにより、例えば、これらアドレスの下位部を同一値にして上位部を連続した値にすることにより、アドレスを規則的に変化させてカウント値を読出させることができるので、容易迅速にカウンタ処理を行うことができる。
【００４３】
また、実施例２のＮ進カウンタを用い、図７に示すように、カウント値で識別されるブロック、例えばセクタ又はページに、データを書き込み、カウント値を更新することにより、ブロックを変化させて不揮発性メモリ１３を延命させる構成であってもよい。
【００４４】
さらに、図１の処理をメモリドライバ２２に備える替わりに、アプリケーション２０に含ませる構成であってもよい。この場合、カウンタ３０のアドレスＡ０〜Ａ３が、ＯＳ２１により動的に変動する構成であってもよい。
【図面の簡単な説明】
【００４５】
【図１】本発明の実施例１に係るメモリドライバによる、アドレス変動カウンタに関する処理を示す概略フローチャートである。
【図２】（Ａ）は不揮発性メモリの一部概略メモリマップを示す説明図、（Ｂ）はアドレス変動カウンタの記憶領域を示す説明図、（Ｃ）は図１の処理によるアドレス変動カウンタの変化説明図である。
【図３】不揮発性メモリのアクセスに関するソフトウェア概略構成ブロック図である。
【図４】本発明が適用された電子機器のハードウェア構成を示す概略ブロック図である。
【図５】本発明の実施例２に係るメモリドライバによる、アドレス変動カウンタに関する処理を示すフローチャートである。
【図６】本発明の実施例の変形例として、複数の一時カウンタが散在してアドレス変動カウンタを構成する場合を示す説明図である。
【図７】本発明の実施例の他の変形例として、カウント値で識別されるメモリ上ブロックを変化させて不揮発性メモリを延命させる場合を示す説明図である。
【符号の説明】
【００４６】
１０  電子機器
１１  ＭＰＵ
１２  インターフェイス
１３  不揮発性メモリ
１４  ＲＡＭ
１５  入力装置
１６  表示装置
１７  ネットワークインターフェイス
１８  ネットワーク
２０  アプリケーション
２１  オペレーティングシステム
２１０  ファイルシステム
２２  メモリドライバ
３０  アドレス変動カウンタ
３１〜３４  一時カウンタ
【図１】
2010140580.tif 000003
【図２】
2010140580.tif 000004
【図３】
2010140580.tif 000005
【図４】
2010140580.tif 000006
【図５】
2010140580.tif 000007
【図６】
2010140580.tif 000008
【図７】
2010140580.tif 000009