(57)【特許請求の範囲】
【請求項１】
更新データに応じてカウントアップされるカウントデータ領域と、
前記カウントデータ領域がフルカウントされた回数を管理する第１回数管理領域と、
前記第１回数管理領域がフルカウントされた回数を管理する第２回数管理領域と、
をメモリ領域内に有し、
前記カウントデータ領域，前記第１回数管理領域及び前記第２回数管理領域は、それぞれ更新データの書き換え最小単位となるブロック単位で構成されることを特徴とする不揮発性メモリ。
【請求項２】
前記第２回数管理領域は、予め定められた個数のビットからなるビット列を有し、
前記ビット列のうちのいずれかのビットが１にセットされ、他のビットが全て０にセットされることによって、前記第１回数管理領域がフルカウントされた回数を管理することを特徴とする請求項１記載の不揮発性メモリ。
【請求項３】
不揮発性メモリと、
前記不揮発性メモリに対してデータの読み書きを行うデータ処理手段と、を有する電子機器装置において、
前記不揮発性メモリは、更新データに応じてカウントアップされるカウントデータ領域と、前記カウントデータ領域がフルカウントされた回数を管理する第１回数管理領域と、前記第１回数管理領域がフルカウントされた回数を管理する第２回数管理領域と、を有し、それぞれが更新データの書き換え最小単位となるブロック単位で構成されるとともに、
前記第２回数管理領域は、前記データ処理手段の処理内容に基づいて、前記電子機器装置における構成部品の使用回数を管理することを特徴とする電子機器装置。
【請求項４】
前記第２回数管理領域は、予め定められた個数のビットからなるビット列を有し、
前記データ処理手段が、前記ビット列のうちのいずれかのビットを１にセットし、他のビットを全て０にセットすることによって、前記電子機器装置における構成部品の使用回数を管理することを特徴とする請求項３記載の電子機器装置。
【請求項５】
前記第２回数管理領域は、前記電子機器装置における複数の構成部品の使用回数に対応して前記ビット列を複数有するとともに、
前記データ処理手段は、複数の前記ビット列におけるビットパターンを参照することによって、前記電子機器装置における構成部品の寿命を検出することを特徴とする請求項４記載の電子機器装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＥＥＰＲＯＭ等の不揮発性メモリ及びそれを用いた電子機器装置に関する。
【背景技術】
【０００２】
従来より、給電が遮断されても記憶内容を保持することができるとともに、電気的に内容を書き換えることが可能なメモリとして、不揮発性メモリ（例えばＥＥＰＲＯＭやフラッシュメモリなど）が利用されている。この不揮発性メモリには、書き換え最小単位（例えば２バイト）ごとに書き換え回数に限界があり、その書き換え回数を考慮しつつ、メモリの寿命をできるだけ延ばそうとする様々なメモリ技術の開発が進んでいる。
【０００３】
このようなメモリ技術の中には、書き換え最小単位ごとの書き換え回数を、不揮発性メモリの中にメモリ管理データとして保持し、このメモリ管理データに基づいて更新データを書き換えるメモリ技術がある。
【０００４】
例えば、上述したメモリ管理データに基づき、更新データをどのメモリ領域に記録するかを予め判断して、適切なメモリ領域にデータを書き込むようにする。これにより、メモリ全領域の書き換え回数を均一化してメモリの寿命を延ばすことができる。また、とりあえず一定のメモリ領域でデータ書き換えを継続し、上述したメモリ管理データに基づいて制限回数に到達したら、そこに記録していたデータを別のメモリ領域に切り替えて記録するようにする。これにより、書き換え限界数以上のデータ更新をすることができる（例えば特許文献１参照）。
【０００５】
ところで、不揮発性メモリを、ある事象の発生回数を計数するカウンタとして用いる場合には、上述した２つのメモリ技術のうち後者が利用される。しかし、その事象が発生する（カウントする）度にメモリ管理データを更新する（インクリメントする）となると、結局、メモリ管理データ（書き換え回数）が、ある事象の発生回数たるカウント値そのものになってしまう。そのため、かかる場合には、カウント値そのものをメモリ管理の判断材料として、データを書き込むメモリ領域を切り替えるようにしている。
【０００６】
より具体的に説明すると、カウンタ更新回数が書き換え上限回数に達したら、別のメモリ領域で再びゼロからカウントを始めるようにする。そして、カウンタの総計値を取得するときには、これまでカウンタとして使用してきた全メモリ領域の総和を求めればよい。
【０００７】
【特許文献１】特開平８−２８７６９７号公報（段落番号［０００２］）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、不揮発性メモリをカウンタとして用いた場合において、上述したメモリ技術を採用すると、空白桁（データがゼロの桁）のメモリ領域において、空白を繰り返し書き換える処理がなされるので、カウンタ機能として未使用であっても寿命は尽きることになり、効率的にメモリを使用することができない。
【０００９】
例えば、書き換え最小単位（１ブロック）が１ワード（２ｂｙｔｅ）であって、かつ、各ブロックにおける書き換え上限回数が１００万回である不揮発性メモリを使って、１６００万回までカウントアップしようとした場合には、以下のような手順となる。
【００１０】
まず、この不揮発性メモリにおける１ブロックでは、６５，５３６（＝２１６）回までカウントアップ可能である。すなわち、１ブロックだけでは、書き換え上限回数の１００万回までカウントアップすることができない。書き換え上限回数の１００万回までカウントアップするためには、１ブロック（２ｂｙｔｅ）に加えて、４ｂiｔのメモリ領域が必要になる（２ｂｙｔｅ＋４ｂiｔにより、２２０回＝１，０４８，５７６回カウントアップすることが可能である）。
【００１１】
ところが、上述したように、不揮発性メモリの書き換え最小単位を１ブロック（２ｂｙｔｅ）として考えていることから、結果的には、２ブロックのメモリ領域を確保することが必要となる。
【００１２】
従って、２ブロックのメモリ領域への書き込み（１００万回までのカウントアップ）が終了すると、次の２ブロックのメモリ領域でゼロから書き込みを始める、といったような方法で、１６００万回までカウントアップしようとすると、２ブロック×１６＝３２ブロックのメモリ領域を確保することが必要であるが、実際は、各２ブロックにおいて、最上位１ｂｙｔｅと上位３ｂｙｔｅ目の上位１ｎｉｂｂｌｅ（１ｎｉｂｂｌｅ＝４ｂｉｔ）は、カウンタ値のデータが書き込まれることなく、単に消去書き換えが行われ、カウンタ機能としては未使用のまま残される（図１０参照）。これでは、メモリを十分かつ有効に使い切っておらず、効率的にメモリを使用しているとはいえない。
【００１３】
本発明は、以上の点に鑑みてなされたものであり、その目的は、カウンタ機能を不揮発性メモリにより実現させる上で、カウンタ値のデータが更新されないまま消去書き換えが行われるメモリ領域をできるだけ減らし、無駄が少なく効率的に使用することが可能な不揮発性メモリ及びそれを用いた電子機器装置を提供することにある。
【課題を解決するための手段】
【００１４】
以上のような課題を解決するために、本発明は、不揮発性メモリのメモリ領域内に、カウントデータ領域と、そのカウントデータ領域がフルカウントされた回数を管理する回数管理領域と、を設けたことを特徴とする。
【００１５】
より詳細には、本発明は、以下のものを提供する。
【００１６】
（１）  更新データに応じてカウントアップされるカウントデータ領域と、
前記カウントデータ領域がフルカウントされた回数を管理する第１回数管理領域と、前記第１回数管理領域がフルカウントされた回数を管理する第２回数管理領域と、をメモリ領域内に有し、前記カウントデータ領域，前記第１回数管理領域及び前記第２回数管理領域は、それぞれ更新データの書き換え最小単位となるブロック単位で構成されることを特徴とする不揮発性メモリ。
【００１７】
本発明によれば、不揮発性メモリにおけるメモリ領域内に、例えばカードリーダにおけるシャッタの開閉回数などの更新データに応じてカウントアップされるカウントデータ領域と、そのカウントデータ領域がフルカウントされた回数を管理する第１回数管理領域と、を設けることとしたので、カウンタ値のデータが更新されないまま消去書き換えが行われるメモリ領域を減らすことができ、ひいてはメモリ領域の無駄をなくし、これを効率的に使用することができる。
【００１８】
ここで、「フルカウント」には、カウントデータ領域におけるカウント回数が所定の制限回数に達したことは勿論のこと、このカウント回数が所定の制限回数近傍に近づいたことも含まれる。例えば、ブロック（＝２ｂｙｔｅ）毎に構成されたカウントデータ領域において、各ブロックで０〜０ｘＦＦＦＦまでカウントすることができると考えた場合、第１回数管理領域（２ｂｙｔｅ）の各ｎｉｂｂｌｅは、対応する各ブロックが０ｘＦＦＦＦまでフルカウントされた回数を管理することとしてもよいし、対応するブロックが０ｘＦＦＦＦ近傍までフルカウントされた回数（ほぼフルカウントされた回数）を管理することとしてもよい。
【００２０】
本発明によれば、不揮発性メモリにおけるメモリ領域内に、第１回数管理領域がフルカウントされた回数を管理する第２回数管理領域を設け、上述したカウントデータ領域，第１回数管理領域，及び第２回数管理領域は、それぞれ更新データの書き換え最小単位となるブロック単位で構成されることとしたので、一部がカウンタ機能として未使用のまま残されていた書き換え最小単位（１ブロック）のメモリ領域は、ブロック単位で構成された回数管理領域の中で効率的に管理されることとなり、その結果、メモリ領域の無駄を少なくして、これを効率的に使用することができる。
【００２１】
（２）  前記第２回数管理領域は、予め定められた個数のビットからなるビット列を有し、前記ビット列のうちのいずれかのビットが１にセットされ、他のビットが全て０にセットされることによって、前記第１回数管理領域がフルカウントされた回数を管理することを特徴とする不揮発性メモリ。
【００２２】
本発明によれば、上述した第２回数管理領域は、予め定められた個数のビットからなるビット列を有しており、このビット列のうちのいずれかのビットが１にセットされ、他のビットが全て０にセットされることによって（例えば、ビット列が４ｂｉｔであれば"０００１"，"００１０"，"０１００"，"１０００"など）、第１回数管理領域がフルカウントされた回数を管理することとしたので、データ処理の効率化を図ることができる。
【００２３】
すなわち、第２回数管理領域が、第１回数管理領域がフルカウントされた回数を管理するにあたって、"０００１"が１回，"００１０"が２回，"００１１"が３回，"０１００"が４回といったような管理をした場合には、第２回数管理領域のデータ内容を認識する際、第２回数管理領域のデータを読み出した後、このデータをソフトウェアによって数値として認識する必要がある。そのため、第２回数管理領域のデータ内容を認識するまでに多少の時間が掛かり、データ処理の効率化に関して改善の余地があった。しかし、本発明によれば、第２回数管理領域が、第１回数管理領域がフルカウントされた回数を管理するにあたって、"０００１"が１回，"００１０"が２回，"０１００"が３回，"１０００"が４回といったように、ビット列のうちのいずれか一のビットのみが１にセットされるような管理をするので、第２回数管理領域のデータ内容を認識する際、第２回数管理領域のデータを読み出した後、必要なビットをＡＮＤ処理で抽出すればよい（マスク処理を施せばよい）。従って、読み出したデータをソフトウェアによって数値として認識する処理が不要となり、短時間で、第２回数管理領域のデータ内容を認識することができ、ひいてはデータ処理の効率化を図ることができる。
【００２４】
（３）  不揮発性メモリと、前記不揮発性メモリに対してデータの読み書きを行うデータ処理手段と、を有する電子機器装置において、前記不揮発性メモリは、更新データに応じてカウントアップされるカウントデータ領域と、前記カウントデータ領域がフルカウントされた回数を管理する第１回数管理領域と、前記第１回数管理領域がフルカウントされた回数を管理する第２回数管理領域と、を有し、それぞれが更新データの書き換え最小単位となるブロック単位で構成されるとともに、前記第２回数管理領域は、前記データ処理手段の処理内容に基づいて、前記電子機器装置における構成部品の使用回数を管理することを特徴とする電子機器装置。
【００２５】
本発明によれば、不揮発性メモリと、これに対してデータの読み書きを行うデータ処理手段（例えばＣＰＵやメモリ制御回路など）と、を有する電子機器装置（例えばカードリーダなど）において、不揮発性メモリのメモリ領域内に、上述したカウントデータ領域，第１回数管理領域，第２回数管理領域を設け、それぞれが更新データの書き換え最小単位となるブロック単位で構成されるとともに、第２回数管理領域は、データ処理手段の処理内容に基づいて、電子機器装置における構成部品（例えばシャッタ，駆動ローラ，磁気ヘッドなど）の使用回数を管理することとしたので、メモリ領域の無駄をなくし、メモリ資源を有効かつ効率的に使用した電子機器装置を提供することができる。
【００２６】
（４）  前記第２回数管理領域は、予め定められた個数のビットからなるビット列を有し、前記データ処理手段が、前記ビット列のうちのいずれかのビットを１にセットし、他のビットを全て０にセットすることによって、前記電子機器装置における構成部品の使用回数を管理することを特徴とする電子機器装置。
【００２７】
本発明によれば、上述した第２回数管理領域が、電子機器装置における構成部品の使用回数を管理するに当たって、前記データ処理手段が、予め定められた個数のビットからなるビット列のうちのいずれかのビットを１にセットし、他のビットを全て０にセットすることとしたので、上述したように、第２回数管理領域のデータを読み出した後、必要なビットをＡＮＤ処理で抽出するだけで（マスク処理を施すだけで）、第２回数管理領域のデータ内容を認識することができる。
【００２８】
特に、第２回数管理領域は、電子機器装置における構成部品（例えばシャッタ，駆動ローラ，磁気ヘッドなど）の使用回数を管理することとしているので、短時間で第２回数管理領域のデータ内容を認識可能になれば、構成部品の寿命検出を高速化することができる。
【００２９】
このように、本発明は、メモリ領域の無駄をなくすことによるメモリ資源の有効化及び効率化と、電子機器装置における構成部品の寿命検出の高速化と、の双方のメリットを併有することができる。
【００３０】
（５）  前記第２回数管理領域は、前記電子機器装置における複数の構成部品の使用回数に対応して前記ビット列を複数有するとともに、前記データ処理手段は、複数の前記ビット列におけるビットパターンを参照することによって、前記電子機器装置における構成部品の寿命を検出することを特徴とする電子機器装置。
【００３１】
本発明によれば、上述した第２回数管理領域は、電子機器装置における複数の構成部品の使用回数に対応してビット列を複数有するとともに、上述したデータ処理手段によって、複数のビット列におけるビットパターンが参照され、電子機器装置における構成部品の寿命が検出されることとしたので、複数の機能をもつ電子機器装置の総合的な寿命検出を高速化することができる。
【００３２】
すなわち、例えば、電子機器装置がカードリーダである場合には、カードが磁気ヘッド上を往復した回数をカウントするビット列，シャッタ開閉回数をカウントするビット列，ＩＣ接点セット回数をカウントするビット列，カード排出回数をカウントするビット列における各ビットパターンを参照して、いずれか１個でも予め定める所定のビットパターンになっている場合（ビット列のうち予め定めるビットが１になっている場合）には、磁気ヘッド，シャッタ，ＩＣ接点，カード排出機構のいずれかの構成部品が寿命になったことを高速に検出することができる。また、所定のビット列におけるビットパターンを参照することによって、どの構成部品が寿命になったかも高速に検出することができる。
【００３３】
なお、ここでいう「ビットパターン」とは、例えば"０００１"，"００１０"，"０１００"，"１０００"など、ビット列におけるビットの配列態様をいう。
【発明の効果】
【００３４】
本発明に係る不揮発性メモリ及びそれを用いた電子機器装置によれば、従来カウンタ値のデータが更新されないまま消去書き換えが行われていた不揮発性メモリのメモリ領域を効果的に減らすことができ、ひいてはメモリ資源を有効かつ効率的に使用することができる。また、第２回数管理領域に設けられた複数のビット列におけるビットパターンを参照することで、例えばカードリーダなどの電子機器装置における構成部品の寿命検出を高速化することができる。
【発明を実施するための最良の形態】
【００３５】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。なお、本実施形態においては、１ブロックが１ワード（２ｂｙｔｅ）で、書き換え上限回数が１００万回の不揮発性メモリを使って、約１６００万回（１６，７７７，２１５回）までカウントアップすることを考えるが、本発明は、これらのパラメータ以外のパラメータを採用することも、勿論可能である。
【００３６】
［概要］
図１は、本発明の実施の形態に係る不揮発性メモリをカウンタとして用いた場合の概要を説明するための説明図である。特に、図１（ａ）は、従来の不揮発性メモリを使って約１６００万回カウントする概要を説明するための図であって、図１（ｂ）は、本実施形態に係る不揮発性メモリを使って約１６００万回カウントする概要を説明するための図である。なお、以下では、本発明の実施の形態に係る不揮発性メモリは、カードリーダに搭載されるものとして説明する。
【００３７】
図１（ａ）において、本実施形態では、不揮発性メモリの書き換え上限回数を１００万回と考えているので、２ブロック（４ｂｙｔｅ）のメモリ領域を使用して、まずは１００万回までカウントアップする。そして、１００万回に到達したら、次のメモリ領域（図１（ａ）における１つ上の２ブロック）に切り替えて、ゼロから再びカウントアップする。このようにして、図１（ａ）における下方から順々に、１６００万回までカウントアップしていく。これより、最終的には計３２ブロックのメモリ領域を確保しなければならない。
【００３８】
ところが、使用されたメモリ領域は、図１（ａ）中に示す斜線部であるので、各２ブロックにおいて、最上位１ｂｙｔｅと上位３ｂｙｔｅ目の上位ｎｉｂｂｌｅは、カウンタ値のデータが更新されないまま消去書き換えのみが行われることになる（図１（ａ）中に示す空白部分）。
【００３９】
一方で、図１（ｂ）において、本発明の実施の形態に係る不揮発性メモリでは、まず、２ブロック（４ｂｙｔｅ）のメモリ領域を、上位２ｂｙｔｅと下位２ｂｙｔｅとに分けて考える。そして、下位２ｂｙｔｅ（１ブロック）が１６個集まってできるメモリ領域を、カウントデータ領域１００として、不揮発性メモリ内に設ける（図１（ｂ）参照）。
【００４０】
また、このカウントデータ領域１００における各ブロックでフルカウントされた回数を管理するメモリ領域として、１ブロックで構成されるフルカウント回数管理領域２００（第１回数管理領域の一例として機能）を不揮発性メモリ内に設ける（図１（ｂ）参照）。
【００４１】
さらに、フルカウント回数管理領域２００が０ｘＦＦＦＦに達した回数を管理するメモリ領域として、１ブロックで構成されるトランザクション完了回数管理領域３００（第２回数管理領域の一例として機能）を不揮発性メモリ内に設ける（図１（ｂ）参照）。なお、トランザクション完了回数管理領域３００は、シャッタ７やモータ９の使用回数，カードと磁気ヘッドの摺動回数など、カードリーダにおける構成部品の使用回数を管理するものである。また、トランザクション完了回数管理領域３００は、フルカウント回数管理領域２００がフルカウントされた回数を管理するメモリ領域であることから、カードリーダにおける構成部品の使用回数が所定回数になるまでは（フルカウント回数管理領域２００が所定回数カウント、つまりフルカウントされるまでは）、カウントアップされない。
【００４２】
本実施形態に係る不揮発性メモリは、計１６ブロックから構成されるカウントデータ領域１００と、１ブロックで構成されるフルカウント回数管理領域２００と、１ブロックで構成されるトランザクション完了回数管理領域３００と、を上手く利用して、１６００万回までカウントアップするものである。詳細については、［メモリ管理］において説明する。
【００４３】
このように、本実施形態に係る不揮発性メモリによれば、フルカウント回数管理領域２００が必要である一方で、図１（ａ）においては必要であった、上位２ｂｙｔｅ（１ブロック）が１６個集まってできるメモリ領域（図１（ｂ）ではメモリ領域１０１に相当する）が不要になる（図１（ｂ）参照）。すなわち、１６００万回までカウントアップするために確保しなければならない全ブロック数は、図１（ａ）では３２ブロックであったのに対し、図１（ｂ）では１８（＝１６＋１＋１）ブロックになる。従って、１６００万回までカウントアップした場合、メモリ使用領域は従来の約６０％で足りることになり、ひいてはメモリを効率的に使用することができる。
【００４４】
［電気的構成］
図２は、本発明の実施の形態に係る不揮発性メモリを含むカードリーダの電気的構成を示すブロック図である。なお、ここでは、不揮発性メモリとしてＥＥＰＲＯＭ１を用いている。
【００４５】
図２において、総合的な電気的制御を司るＣＰＵ２には、磁気カードと磁気データの送受信を行う磁気ヘッド３が、復調回路４を介して接続されている。また、ＣＰＵ２には、ワーキングエリアとして機能するＲＡＭ５が接続されている。また、駆動ローラを回転駆動するモータ７が、モータ制御回路（例えばＰＷＭ駆動制御回路）を介して接続されており、カードの出入りを規制するシャッタ９が、アクチュエータ８を介して接続されている。さらに、現在のカード位置を把握するための複数のフォトセンサ１０が接続されている。なお、ＣＰＵ２には、カードリーダを制御する制御プログラムや初期値などの情報を格納するＲＯＭが組み込まれている。また、図２では図示しないが、カードリーダには、カード上のＩＣ端子に当接され、ＣＰＵ２によるデータの読み書きを可能にするＩＣ接点が設けられている。
【００４６】
ここで、ＣＰＵ２には、給電が遮断されても記憶内容を保持することができるとともに、電気的に内容を書き換えることが可能なＥＥＰＲＯＭ１が接続されている。このＥＥＰＲＯＭ１は、アクチュエータ８によって検出されるシャッタ９の開閉回数や、フォトセンサ１０によって検出されるカードを排出した（又は取り込んだ）回数などの更新データに応じて、ＣＰＵ２によりカウントアップされるようになっている。また、ＥＥＰＲＯＭ１は、上述したとおり、メモリ領域内に、カウントデータ領域１００とフルカウント回数管理領域２００とトランザクション完了回数管理領域３００とを有している。なお、ＣＰＵ２は、ＥＥＰＲＯＭ１に対してデータの読み書きを行うデータ処理手段の一例として機能する。以下、ＥＥＰＲＯＭ１のメモリ管理について、図３を用いて詳述する。
【００４７】
［メモリ管理］
図３は、本発明の実施の形態に係る不揮発性メモリのメモリ領域を示す図である。図３では、各ブロックにおける書き換え上限回数は１００万回とし、１６，７７７，２１５回（＝０ｘＦＦＦＦＦＦ回）までカウントアップするカウンタを考える。図１の概念に基づいて、このカウンタを設計すると、カウントデータ領域１００は１７ブロックで構成されることになるが、ソフトウェアの効率化を考慮し、１８ブロック使用するものとする（ＤＢ［０］［０］，ＤＢ［０］［１］，・・・，ＤＢ［４］［１］）。なお、カウントデータ領域１００におけるＤＢ［０］［０］，ＤＢ［０］［１］，ＤＢ［０］［２］，ＤＢ［０］［３］，・・・に示すメモリ領域は、それぞれ書き換え最小単位（１ブロック＝２ｂｙｔｅ）とし、１６進数で、それぞれ０〜０ｘＦＦＦＦまでカウントすることが可能なものとする。
【００４８】
また、フルカウント回数管理領域２００は、書き換え最小単位（１ブロック＝２ｂｙｔｅ）で構成され、各ｎｉｂｂｌｅがＦＣ［０］，ＦＣ［１］，ＦＣ［２］，ＦＣ［３］として示され、各ＦＣ［］がカウントデータ４ブロックに対応しており、それぞれのＦＣ［］が、対応するブロックの０〜０ｘＦ回までのフルカウント回数を管理するものとする。さらに、トランザクション完了回数管理領域３００も、書き換え最小単位（１ブロック＝２ｂｙｔｅ）で構成され、フルカウント回数管理領域２００が０ｘＦＦＦＦに達した回数を管理するものとする。
【００４９】
なお、ＥＥＰＲＯＭ１では、トランザクション完了回数管理領域３００の各ｎｉｂｂｌｅを、ＴＲ１，ＴＲ２，ＴＲ３，ＴＲ４としている。（各ＴＲがシャッタ７や磁気ヘッド３など、カードリーダにおける各構成部品のカウンタに対するトランザクション完了回数を管理するものとする。）
【００５０】
また、ＥＥＰＲＯＭ１における各ＦＣ［］のカウント値をカウントアップする手順としては、まず、該当するＦＣ［］が含まれるブロックのデータを一旦ＲＡＭ５にまとめて読み込み、ブロックデータをソフトウェアにてｂｉｔシフトしたりＡＮＤ処理したりして、該当するＦＣ［］を抽出してカウントアップする。そして、カウントアップ後のデータを、先に読み込んだブロックデータにソフトウェアにて埋め込んで、新しいブロックデータとし、ＥＥＰＲＯＭ１にまとめて書き込む。
【００５１】
まず、ＤＢ［０］［０］を使用して、０〜０ｘＦＦＦＦ回までカウントする。その次のカウントアップ時にはＤＢ［０］［０］に示すメモリ領域をゼロクリアするとともに、ＦＣ［０］のカウント値（初期値０）を１だけカウントアップする。そして、再びＤＢ［０］［０］を使用して、０ｘＦＦＦＦ回までカウントし、０ｘＦＦＦＦ回までカウントされたら、その次のカウントアップ時にＤＢ［０］［０］に示すメモリ領域をゼロクリアするとともに、ＦＣ［０］のカウント値（現在１）を１だけカウントアップする。
【００５２】
このような手順を繰り返し、ＦＣ［０］が０ｘＦ回までカウントされると、ＤＢ［０］［０］では、０〜０ｘ１００００（＝６５，５３６）までのカウントアップが０ｘ０Ｆ（＝１５）回実施されたことを意味するので、Ｔｏｔａｌで、９８３０４０回のカウントアップをしたことになる。すなわち、ほぼ１００万回のデータ更新がなされたとして、ＤＢ［０］［０］におけるカウントアップを中止して、次のＤＢ［０］［１］におけるカウントアップを開始する。
【００５３】
次のＤＢ［０］［１］では、ＤＢ［０］［０］と同様に、０ｘＦＦＦＦ回までカウントされるたびに、その次のカウントアップ時にＦＣ［１］のカウント値を１だけカウントアップし、ＦＣ［１］が０ｘＦまでカウントされると、ＤＢ［０］［１］におけるカウントアップを中止して、次のＤＢ［０］［２］におけるカウントアップを開始する。以下同様にして、ＤＢ［０］［２］，ＤＢ［０］［３］についても、ＦＣ［２］，ＦＣ［３］によって管理されながらカウントアップされる。
【００５４】
このようにして、ＤＢ［０］［０］〜ＤＢ［０］［３］という４ブロックについて処理を繰り返すと、３，９３２，１６０（＝０ｘ３Ｃ００００）回のカウントアップが完了する。
【００５５】
ここで、３，９３２，１６０回のカウントアップが終了したとき、フルカウント回数管理領域２００におけるＦＣ［０］，ＦＣ［１］，ＦＣ［２］，ＦＣ［３］に示すメモリ領域を全てゼロクリアにする。と同時に、トランザクション完了回数管理領域３００におけるＴＲ１のカウント値（初期値０）を１だけカウントアップする。
【００５６】
そして次に、ＦＣ［０］〜ＦＣ［３］は、ＤＢ［１］［０］〜ＤＢ［１］［３］を管理することになる。すなわち、ＤＢ［１］［０］において０ｘＦＦＦＦ回までカウントされるたびに、その次のカウントアップ時にＦＣ［０］のカウント値を１だけカウントアップし、ＦＣ［０］が０ｘＦまでカウントされると、ＤＢ［１］［０］におけるカウントアップを中止して、次のＤＢ［１］［１］におけるカウントアップを開始する。以下同様にして、ＤＢ［１］［１］〜ＤＢ［１］［３］についても、ＦＣ［１］〜ＦＣ［３］によって管理されながらカウントアップされる。
【００５７】
このようにして、ＦＣ［０］〜ＦＣ［３］に示すメモリ領域のゼロクリアと、トランザクション完了回数管理領域３００におけるＴＲ１のカウントアップを適宜行いながら、ＤＢ［０］［０］〜ＤＢ［０］［３］，ＤＢ［１］［０］〜ＤＢ［１］［３］，ＤＢ［２］［０］〜ＤＢ［２］［３］，ＤＢ［３］［０］〜ＤＢ［３］［３］におけるカウントアップを行う。そして、ＤＢ［３］［３］におけるカウントアップまで終了すると、ＴＲ１のカウント値は４となっており、１５，７２８，６４０（＝０ｘＦ０００００）回までカウントアップされたことになり、更に処理を繰り返すと、ＴＲ１のカウント値が４の場合における２ブロック目（ＤＢ［４］［１］）の処理中に１６，７７７，２１５回に達することになる。
【００５８】
次に、ＤＢ［０］［０］〜ＤＢ［４］［１］に示すメモリ領域によるカウント値の総和を求めるためには、｛（トランザクション完了回数管理領域３００におけるＴＲ１のカウント値×４）＋（現トランザクションのフルカウント０ｘ０Ｆ回実行済みブロック数）｝×０ｘＦ００００＋現在更新対象となっているブロックのカウント数、の計算をすればよい。より具体的には、図４に示すフローチャートを用いて説明する。
【００５９】
図４は、本発明の実施の形態に係る不揮発性メモリをカウンタとして用いた場合におけるカウント値の計算方法を示すフローチャートである。なお、各種変数は、ＲＡＭ５に適宜記憶されるものとし、また、ＣＰＵ２によって、ＲＡＭ５に記憶されている変数の値は適宜読み出されるものとする。
【００６０】
図４において、まず、ＣＰＵ２は、ＥＥＰＲＯＭ１にアクセスし、変数iと変数ＦｎｓｈＢｌｃｋＣｎｔに０を代入する（ステップＳ１）。次いで、ＦＣ［i］が０ｘ０Ｆであるか否かを判断する（ステップＳ２）。ＦＣ［i］が０ｘ０Ｆであると判別した場合には、変数iと変数ＦｎｓｈＢｌｃｋＣｎｔをそれぞれ１ずつインクリメントする（ステップＳ３）。
【００６１】
一方で、ＦＣ［i］が０ｘ０Ｆでないと判別した場合には、変数Ｃｕｒｒｅｎｔ＿Ｂｌｏｃｋ＿Ｃｏｕｎｔに（ＦＣ［i］×０ｘ１００００）＋ＤＢ［ＴＲ１］［i］を代入する（ステップＳ４）。そして、最後に、変数Ｔｏｔａｌ＿Ｃｏｕｎｔに｛（ＴＲ１）×４＋ＦｎｓｈＢｌｃｋＣｎｔ｝×０ｘＦ００００＋Ｃｕｒｒｅｎｔ＿Ｂｌｏｃｋ＿Ｃｏｕｎｔを代入する（ステップＳ５）。これにより、ＣＰＵ２は、変数Ｔｏｔａｌ＿Ｃｏｕｎｔを読み出すことによって、ＤＢ［０］［０］〜ＤＢ［４］［１］に示すメモリ領域によるカウント値の総和を認識することができる。
【００６２】
以上詳細に説明したように、本発明によれば、カウンタ機能を不揮発性メモリにより実現させる上で、汎用の不揮発性メモリを用いて、カウンタ値のデータが更新されないまま消去書き換えが行われていたメモリ領域をできるだけ減らし、無駄が少なく効率的に使用することが可能になる。
【００６３】
また、本発明におけるフルカウント回数管理領域２００は、カウントデータ領域１００における各ブロックを書き換えるごとに、管理データを更新しているわけではなく、カウントデータ領域１００における各ブロックを複数回書き換えるごとに、管理データを更新している。さらに、このフルカウント回数管理領域２００における管理データは、カウントデータ領域１００を管理するとともに、自身がカウンタ総計の計算に利用されるものである。
【００６４】
なお、本実施形態では、図３のメモリ領域を示す図において、トランザクション完了回数管理領域３００におけるＴＲ１しか用いなかったが、例えば、アクチュエータ８によって検出されるシャッタ９の開閉回数をＴＲ２に対応付け、フォトセンサ１０によって検出されるカードを排出した（又は取り込んだ）回数をＴＲ３に対応付けることによって、一部がカウンタ機能として未使用のまま残されるメモリ領域を減らすことができるので、従来のメモリ管理と比べて、より効率的なメモリ管理を実現することができる。
【００６５】
［変形例］
図５は、本発明の他の実施の形態に係る不揮発性メモリのメモリ領域を示す図である。なお、図５に示すメモリ領域のうち、カウントデータ領域１００とフルカウント回数管理領域２００については、図３に示すものと同様であるので、詳細な説明を省略する。
【００６６】
図５に示すように、本実施形態に係る不揮発性メモリ（ＥＥＰＲＯＭ１）では、トランザクション完了回数管理領域３００の各ｎｉｂｂｌｅ（ＴＲ１，ＴＲ２，ＴＲ３，ＴＲ４）が、それぞれ４個のビット（ｂ０〜ｂ３）からなるビット列となっており、フルカウント回数管理領域２００がフルカウントされた回数を管理するにあたって、ビット列のうちのいずれかのビットが１にセットされ、他のビットが全て０にセットされるようになっている。
【００６７】
これらのうちＴＲ１に着目して、より具体的に説明すると、フルカウント回数管理領域２００がフルカウントされた回数が０回の場合には、ＴＲ１のｂ０〜ｂ３は全て０のまま（"００００"）である。そして、ＣＰＵ２は、フルカウント回数管理領域２００がフルカウントされた回数が１回の場合には、ＴＲ１のｂ０のみを１にセットする。その結果、ＴＲ１のビットパターンは"０００１"となる。また、ＣＰＵ２は、フルカウント回数管理領域２００がフルカウントされた回数が２回の場合には、ＴＲ１のｂ１のみを１にセットする。その結果、ＴＲ１のビットパターンは"００１０"となる。また、ＣＰＵ２は、フルカウント回数管理領域２００がフルカウントされた回数が３回の場合には、ＴＲ１のｂ２のみを１にセットする。その結果、ＴＲ１のビットパターンは"０１００"となる。最後に、ＣＰＵ２は、フルカウント回数管理領域２００がフルカウントされた回数が４回の場合には、ＴＲ１のｂ３のみを１にセットする。その結果、ＴＲ１のビットパターンは"１０００"となる。
【００６８】
このようにして、フルカウント回数管理領域２００がフルカウントされた回数１回，２回，３回，４回を、４ｂｉｔのうちいずれか一つのビットのみが１にセットされているビットパターンで表現することができる。ＴＲ２，ＴＲ３，ＴＲ４についても同様に、４ｂｉｔのうちいずれか一つのビットのみが１にセットされているビットパターンで表現することができる。
【００６９】
ここで、例えばカードリーダにおいて、磁気ヘッド往復回数をＴＲ１に対応付け、シャッタ開閉回数をＴＲ２に対応付け、ＩＣ接点セット回数をＴＲ３に対応付け、カード排出回数をＴＲ４に対応付けた場合を考える。そして、磁気ヘッド往復回数が１５，７２８，６４０回になった場合、すなわちＴＲ１のｂ３に１がセットされた場合には、磁気ヘッドが寿命になったと判断する。同様に、シャッタ開閉回数が７，８６４，３２０回になった場合、すなわちＴＲ２のｂ１に１がセットされた場合には、シャッタが寿命になったと判断し、ＩＣ接点セット回数が３，９３２，１６０回になった場合、すなわちＴＲ３のｂ０に１がセットされた場合には、ＩＣ接点が寿命になったと判断し、カード排出回数が１１，７９６，４８０回になった場合、すなわちＴＲ４のｂ２に１がセットされた場合には、カード排出機構（例えばモータ７又はフォトセンサ１０）が寿命になったと判断する。
【００７０】
ＣＰＵ２は、トランザクション完了回数管理領域３００のＴＲ１〜ＴＲ４におけるビットパターンを参照して、ＴＲ１が"１０００"になっているか、ＴＲ２が"００１０"になっているか、ＴＲ３が"０００１"になっているか、ＴＲ４が"０１００"になっているか、を判断する。具体的には、ＥＥＰＲＯＭ１のトランザクション完了回数管理領域３００にアクセスして、ＴＲ１〜ＴＲ４のビット列をまとめて読み出して、これに対し、"０１０００００１００１０１０００"（０ｘ４１２８）のＡＮＤ処理を施す。その結果、ＡＮＤ処理後のデータが０であれば、磁気ヘッド，シャッタ，ＩＣ接点，カード排出機構はいずれも寿命になっていないと検出できる一方で、ＡＮＤ処理後のデータが全て０でないならば（即ち、少なくともいずれか一つのデータが１となった場合）、磁気ヘッド，シャッタ，ＩＣ接点，カード排出機構のいずれかが寿命であると検出できる。勿論、ＴＲ１〜ＴＲ４の各ビット列におけるビットパターンを別々に参照することによって、どの構成部品が寿命になったかも高速に検出することができる。
【００７１】
次に、不揮発性メモリをカウンタとして用いた場合におけるカウント値の計算方法について、図６を用いて説明し、磁気ヘッド，シャッタ，ＩＣ接点，カード排出機構の寿命検出方法について、図７を用いて説明する。
【００７２】
図６は、本発明の他の実施の形態に係る不揮発性メモリをカウンタとして用いた場合におけるカウント値の計算方法を示すフローチャートである。なお、各種変数は、ＲＡＭ５に適宜記憶されるものとし、また、ＣＰＵ２によって、ＲＡＭ５に記憶されている変数の値は適宜読み出されるものとする。また、ここではＴＲ１に着目して、磁気ヘッド往復回数の計算方法について説明する。
【００７３】
図６において、図４に示すフローチャートと同様に、変数ｉと変数ＦｎｓｈＢｌｃｋＣｎｔに０を代入し（ステップＳ１１）、ＦＣ［ｉ］が０ｘ０Ｆであるか否かを判断し（ステップＳ１２）、ＦＣ［ｉ］が０ｘ０Ｆであると判別した場合に、変数ｉと変数ＦｎｓｈＢｌｃｋＣｎｔをそれぞれ１ずつインクリメントし（ステップＳ１３）、ＦＣ［ｉ］が０ｘ０Ｆでないと判別した場合に、変数Ｃｕｒｒｅｎｔ＿Ｂｌｏｃｋ＿Ｃｏｕｎｔに（ＦＣ［ｉ］×０ｘ１００００）＋ＤＢ［ＴＲ１］［ｉ］を代入する（ステップＳ１４）。
【００７４】
次いで、予め定める決まりに従って、ＴＲ１におけるビットパターンを数字に変換する。具体的には、例えば、ＴＲ１のビットパターンは"０００１"であれば１回、"００１０"であれば２回、"０１００"であれば３回、"１０００"であれば４回、といった具合である。変換後、変換した数字をＴＲ１＿Ｎｕｍに代入する（ステップＳ１５）。
【００７５】
最後に、変数Ｔｏｔａｌ＿Ｃｏｕｎｔに、｛（ＴＲ１＿Ｎｕｍ）×４＋ＦｎｓｈＢｌｃｋＣｎｔ｝×０ｘＦ００００＋Ｃｕｒｒｅｎｔ＿Ｂｌｏｃｋ＿Ｃｏｕｎｔを代入する（ステップＳ５）。
【００７６】
これにより、ＣＰＵ２は、変数Ｔｏｔａｌ＿Ｃｏｕｎｔを読み出すことによって、ＤＢ［０］［０］〜ＤＢ［４］［１］に示すメモリ領域によるカウント値の総和を認識することができる。
【００７７】
図７は、本発明の他の実施の形態に係る電子機器装置（カードリーダ）の構成部品の寿命検出方法を示すフローチャートである。なお、各種変数は、ＲＡＭ５に記憶されるものとする。
【００７８】
まず、ＣＰＵ２は、ＥＥＰＲＯＭ１のメモリ領域のうち、ＴＲ１，ＴＲ２，ＴＲ３，ＴＲ４にアクセスして、１ｗｏｒｄ（２ｂｙｔｅ）を読み出し、これを変数ＬｉｆｅＭａｎａｇｅＤａｔｅに代入する（ステップＳ２１）。
【００７９】
次いで、変数ＬｉｆｅＭａｎａｇｅＤａｔｅと、"０１０００００１００１０１０００"（０ｘ４１２８）とのＡＮＤ処理を施す（ステップＳ２２）。そして、ＡＮＤ処理後の値を変数Ｌｉｆｅ＿Ｌｉｍｉｔに代入する（ステップＳ２２）。そして、このＬｉｆｅ＿Ｌｉｍｉｔが０になっているか否かを判断し（ステップＳ２３）、０になっていれば、磁気ヘッド，シャッタ，ＩＣ接点，カード排出機構の寿命はいずれも尽きておらず、通常処理を継続する（ステップＳ２４）。
【００８０】
一方で、Ｌｉｆｅ＿Ｌｉｍｉｔが０になっていなければ、磁気ヘッド，シャッタ，ＩＣ接点，カード排出機構のいずれかの寿命が尽きていると判断し、メンテナンスモードに切り替えて、アラーム信号をＨＯＳＴ（例えば銀行のＡＴＭなど）に送信する（ステップＳ２５）。なお、この際、先に得られた変数Ｌｉｆｅ＿ＬｉｍｉｔのＴＲ１〜ＴＲ４に相当するエリアを検索して、「０でない」エリアに対応する機能（構成部品）の寿命到達をＨＯＳＴに送信するようにしてもよい。
【００８１】
このように、トランザクション完了回数管理領域３００から１ｗｏｒｄのデータ（２ｂｙｔｅ）を取得し、そのデータの該当ビットにマスクをかけ、その値が「０」か「０でない」か、を判断するだけで、複数の機能をもつカードリーダの総合的な寿命検出を行うことができ、更には、その寿命検出を高速化することができる。
【００８２】
すなわち、トランザクション完了回数管理領域３００のＴＲ１〜ＴＲ４から４ｂｉｔのデータをそれぞれ取得し、それらをソフトウェアによって４個の数値として認識し、４個の数値のいずれかが予め定められた数値に達していれば、いずれかの構成部品が寿命と判断する、という寿命検出方法では、高速化が難しい。一方で、本実施形態に係るカードリーダのように、トランザクション完了回数管理領域３００のＴＲ１〜ＴＲ４のデータをまとめて取得し、そのデータの該当ビットにマスクをかけた値が「０でない」場合には、いずれかの構成部品が寿命と判断する、という寿命検出方法であれば、演算処理回数が少なくて済むので（計算回数としては、約５０％で済む）、演算処理時間が短くなり、ひいては高速な寿命検出を行うことが可能なカードリーダを提供することができる。
【００８３】
なお、本明細書では、１，２，３，４という回数値を、それぞれ"０００１"，"００１０"，"０１００"，"１０００"という４個のビットパターンで対応付けることとしたが、本発明はこれに限られず、４ｂｉｔのうちのいずれか一つのビットが１で、それ以外のビットが０となるような４個のビットパターンであれば如何なるものであっても構わない。
【００８４】
また、フルカウント回数管理領域２００において、管理するカウントデータ領域１００のブロック数を減らすことによって、より少ない回数での寿命検出を実現することができる。具体的には、図３では、フルカウント回数管理領域２００では、カウントデータ領域１００の４個のブロックを管理することとしているが、例えば図８に示すように２個のブロックを管理するようにしてもよいし、図９に示すように１個のブロック管理するようにしてもよい。
【００８５】
図８の場合、ＦＣ［０］及びＦＣ［１］でカウントデータ領域１００の２個のブロックを管理し、ＦＣ［２］及びＦＣ［３］は未使用のままである。そして、ＦＣ［０］及びＦＣ［１］が０ｘＦに達した時点で、トランザクション完了回数管理領域３００を１だけインクリメントするような構成とする。これにより、より少ない回数での寿命検出を実現することができる。
【００８６】
また、図９の場合、ＦＣ［０］のみでカウントデータ領域１００の１個のブロックを管理し、ＦＣ［１］〜ＦＣ［３］は未使用のままである。そして、ＦＣ［０］が０ｘＦに達した時点で、トランザクション完了回数管理領域３００を１だけインクリメントするような構成とする。これにより、更により少ない回数での寿命検出を実現することができる。
【００８７】
さらに、より細かい寿命検出を行う方法として、例えば、フルカウント回数管理領域２００で、カウントデータ領域１００の３個のブロックを管理するとともに、ＦＣ［０］及びＦＣ［１］が０ｘＦに達し、かつ、ＦＣ［２］が０ｘ３に達した時点で、トランザクション完了回数管理領域３００を１だけインクリメントするような構成することもできる。これにより、より細かい回数での寿命検出を行うことができる。同様にして、図９の場合でも、例えばＦＣ［０］が０ｘ４に達した時点で、トランザクション完了回数管理領域３００を１だけインクリメントするような構成とすることもできる。
【産業上の利用可能性】
【００８８】
本発明に係る不揮発性メモリ及びそれを用いた電子機器装置は、メモリ資源を無駄が少なく効率的に使用することが可能なものとして有用である。また、電子機器装置における構成部品の寿命検出を高速化することが可能なものとしても有用である。
【図面の簡単な説明】
【００８９】
【図１】本発明の実施の形態に係る不揮発性メモリをカウンタとして用いた場合の概要を説明するための説明図である。
【図２】本発明の実施の形態に係る不揮発性メモリを含むカードリーダの電気的構成を示すブロック図である。
【図３】本発明の実施の形態に係る不揮発性メモリのメモリ領域を示す図である。
【図４】本発明の実施の形態に係る不揮発性メモリをカウンタとして用いた場合におけるカウント値の計算方法を示すフローチャートである。
【図５】本発明の他の実施の形態に係る不揮発性メモリのメモリ領域を示す図である。
【図６】本発明の他の実施の形態に係る不揮発性メモリをカウンタとして用いた場合におけるカウント値の計算方法を示すフローチャートである。
【図７】本発明の他の実施の形態に係る電子機器装置（カードリーダ）の構成部品の寿命検出方法を示すフローチャートである。
【図８】フルカウント回数管理領域によって、カウントデータ領域の２個のブロックを管理するメモリ領域を示す図である。
【図９】フルカウント回数管理領域によって、カウントデータ領域の１個のブロックを管理するメモリ領域を示す図である。
【図１０】従来の不揮発性メモリにおけるメモリ管理について説明するための説明図である。
【符号の説明】
【００９０】
１  ＥＥＰＲＯＭ
２  ＣＰＵ
３  磁気ヘッド
４  磁気ヘッド制御回路
５  ＲＡＭ
６  モータ制御回路
７  モータ
８  アクチュエータ
９  シャッタ
１０  フォトセンサ
【図１】
0004774946.tif 000002
【図２】
0004774946.tif 000003
【図３】
0004774946.tif 000004
【図４】
0004774946.tif 000005
【図５】
0004774946.tif 000006
【図６】
0004774946.tif 000007
【図７】
0004774946.tif 000008
【図８】
0004774946.tif 000009
【図９】
0004774946.tif 000010
【図１０】
0004774946.tif 000011