(57)【要約】      （修正有）【課題】不揮発性半導体メモリの書き込みを正常に行える期間を長くする電子機器を提供する。【解決手段】電子機器１は、電子的に書き込み及び読み出しが可能なメモリ１２及び１３と、メモリの複数の管理用アドレスから選択したインデックスアドレスに、複数の管理用アドレスのうち他の管理用アドレスに書き込まれた値と異なるインデックス値を書き込むインデックス管理部１１１と、インデックス値が書き込まれているインデックスアドレスを特定し、メモリの複数のデータ保持用アドレスのうち、特定したインデックスアドレスに対応するアクセスアドレスにデータを書き込むデータ管理部１１２と、を有する。【選択図】図１
2020135641.tif 000002
【特許請求の範囲】
【請求項１】
電子的に書き込み及び読み出しが可能なメモリと、
前記メモリの複数の管理用アドレスから選択したインデックスアドレスに、前記複数の管理用アドレスのうち他の管理用アドレスに書き込まれた値と異なるインデックス値を書き込むインデックス管理部と、
前記インデックス値が書き込まれている前記インデックスアドレスを特定し、前記メモリの複数のデータ保持用アドレスのうち、特定した前記インデックスアドレスに対応するアクセスアドレスにデータを書き込むデータ管理部と、
を有する電子機器。
【請求項２】
前記インデックス管理部は、直前の前記インデックスアドレスであった前記管理用アドレスに対して第１シフト値を加算した前記管理用アドレスを最新の前記インデックスアドレスとし、
前記データ管理部は、直前の前記アクセスアドレスであった前記データ保持用アドレスに対して第２シフト値を加算した前記データ保持用アドレスを最新の前記アクセスアドレスとする、
請求項１に記載の電子機器。
【請求項３】
前記データ保持用アドレスに割り当てられたデータ領域が、前記管理用アドレスに割り当てられたデータ領域よりも大きい、
請求項１又は２に記載の電子機器。
【請求項４】
前記インデックス管理部は、前記複数の管理用アドレスに初期化値を書き込んだ後に、前記複数の管理用アドレスから選択した前記管理用アドレスに前記インデックス値を書き込む、
請求項１から３のいずれか一項に記載の電子機器。
【請求項５】
コンピュータが実行する、
電子的に書き込み及び読み出しが可能なメモリの複数の管理用アドレスから選択したインデックスアドレスに、前記複数の管理用アドレスのうち他の管理用アドレスと異なる所定の値を書き込むステップと、
前記所定の値が書き込まれている前記インデックスアドレスを特定するステップと、
前記メモリの複数のデータ保持用アドレスのうち、特定した前記インデックスアドレスに対応するアクセスアドレスにデータを書き込むステップと、
を有するメモリアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリを有する電子機器及びメモリアクセス制御方法に関する。
【背景技術】
【０００２】
不揮発性半導体メモリにログデータを記憶させる技術が知られている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−２２２４３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
不揮発性半導体メモリは、書き換え回数が所定の回数を超えると劣化する。ログデータの同一のアドレスへの書き込み回数が所定の回数に達すると、当該アドレスのセルが劣化し、ログデータの書き込みが正常に行えなくなってしまうという問題があった。
【０００５】
そこで、本発明はこれらの点に鑑みてなされたものであり、不揮発性半導体メモリの書き込みを正常に行える期間を長くすることができる電子機器及びメモリアクセス制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の第１の態様の電子機器は、電子的に書き込み及び読み出しが可能なメモリと、前記メモリの複数の管理用アドレスから選択したインデックスアドレスに、前記複数の管理用アドレスのうち他の管理用アドレスに書き込まれた値と異なるインデックス値を書き込むインデックス管理部と、前記インデックス値が書き込まれている前記インデックスアドレスを特定し、前記メモリの複数のデータ保持用アドレスのうち、特定した前記インデックスアドレスに対応するアクセスアドレスにデータを書き込むデータ管理部と、を有する。
【０００７】
前記インデックス管理部は、直前の前記インデックスアドレスであった前記管理用アドレスに対して第１シフト値を加算した前記管理用アドレスを最新の前記インデックスアドレスとし、前記データ管理部は、直前の前記アクセスアドレスであった前記データ保持用アドレスに対して第２シフト値を加算した前記データ保持用アドレスを最新の前記アクセスアドレスとしてもよい。
【０００８】
前記データ保持用アドレスに割り当てられたデータ領域が、前記管理用アドレスに割り当てられたデータ領域よりも大きくてもよい。
【０００９】
前記インデックス管理部は、前記複数の管理用アドレスに初期化値を書き込んだ後に、前記複数の管理用アドレスから選択した前記管理用アドレスに前記インデックス値を書き込んでもよい。
【００１０】
本発明の第２の態様のメモリアクセス制御方法は、コンピュータが実行する、電子的に書き込み及び読み出しが可能なメモリの複数の管理用アドレスから選択したインデックスアドレスに、前記複数の管理用アドレスのうち他の管理用アドレスと異なる所定の値を書き込むステップと、前記所定の値が書き込まれている前記インデックスアドレスを特定するステップと、前記メモリの複数のデータ保持用アドレスのうち、特定した前記インデックスアドレスに対応するアクセスアドレスにデータを書き込むステップと、を有する。
【発明の効果】
【００１１】
本発明によれば、不揮発性半導体メモリの書き込みを正常に行える期間を長くすることができるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】電子機器の構成を示す図である。
【図２】ログデータメモリのメモリマップの一例を示す図である。
【図３】電子機器１の電源が投入された直後の初期化処理のフローチャートである。
【図４】電源が投入された直後の初期化処理後のログデータメモリの状態を示す図である。
【図５】電子機器の電源が投入された後に、ログデータメモリに記憶されたログデータを読み出す処理のフローチャートである。
【図６】ログデータメモリに記憶されたログデータを読み出す処理を実行する際のログデータメモリの状態の一例を示す図である。
【図７】データ書き込み時のフローチャートである。
【図８】データ書き込み時のログデータメモリ１２の状態の一例を示す図である。
【発明を実施するための形態】
【００１３】
［電子機器１の概要］
図１は、電子機器１の構成を示す図である。電子機器１は、メモリアクセス制御部１１と、ログデータメモリ１２と、設定データメモリ１３と、ＲＡＭ１４とを有する。メモリアクセス制御部１１は、ログデータメモリ１２及び設定データメモリ１３にデータを書き込んだり、ログデータメモリ１２及び設定データメモリ１３に記憶されたデータを読み出したりするためのアクセス制御を実行する。メモリアクセス制御部１１は、例えばＣＰＵ（Central Processing Unit）又はＦＰＧＡ（Field Programmable Gate Array）を含んで構成されている。メモリアクセス制御部１１は、インデックス管理部１１１、データ管理部１１２及び変換部１１３を有する。
【００１４】
ログデータメモリ１２は、電子機器１のログデータを記憶する不揮発性半導体メモリである。設定データメモリ１３は、電子機器１の設定データを記憶する不揮発性半導体メモリである。ログデータメモリ１２及び設定データメモリ１３は、例えばＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）である。
【００１５】
ＲＡＭ１４は、メモリアクセス制御部１１が動作を実行する際に使用するワークメモリとして機能する揮発性メモリであり、例えばＲＡＭ（Random Access Memory）である。ＲＡＭ１４は、例えばメモリアクセス制御部１１が設定データメモリ１３から読み出した設定データを一時的に記憶する。
【００１６】
電子機器１は、例えば発振信号を発生する信号発生装置であるが、信号発生装置に限らない。電子機器１が信号発生装置である場合、ログデータメモリ１２には、例えば出力した発振信号の周波数の履歴を含むログデータが記憶され、設定データメモリ１３には、発振信号の周波数に関連付けられたパラメータが記憶される。ログデータメモリ１２に周波数の履歴を含むログデータが記憶されていることで、信号発生装置は、瞬断した後にログデータを読み出すことにより、瞬断前と同一の周波数の発振信号を出力することができる。
【００１７】
［ログデータメモリ１２のメモリマップ］
図２は、ログデータメモリ１２のメモリマップの一例を示す図である。図２に示す例において、アドレス０００ｈ〜３ＦＦｈは、電子機器１において実行された処理のログを示すログデータが格納されるデータ領域である。データ領域内のアドレスは、ログデータを保持するためのデータ保持用アドレスである。
【００１８】
ログデータメモリ１２のアドレス４００ｈ〜４ＦＦｈは、データ領域にログデータを書き込むアドレスを示すインデックスデータが格納されるインデックス領域である。インデックス領域内の各アドレスは、ログデータを書き込むアドレスを管理する管理用アドレスである。すなわち、ログデータメモリ１２は、インデックス領域内に複数の管理用アドレスを有する。本実施形態においては、データ保持用アドレスに割り当てられたデータ領域は、管理用アドレスに割り当てられたデータ領域よりも大きい。
【００１９】
なお、設定データメモリ１３のメモリマップも図２に示すメモリマップと同等である。すなわち、設定データメモリ１３のアドレス０００ｈ〜３ＦＦｈは、電子機器１の動作に用いられる各種の設定データが格納されるデータ領域である。設定データメモリ１３のアドレス４００ｈ〜４ＦＦｈは、データ領域にログデータを書き込むアドレスを示すインデックスデータが格納されるインデックス領域である。設定データメモリ１３におけるデータ領域のサイズ、及びインデックス領域のサイズが、それぞれログデータメモリ１２におけるデータ領域のサイズ、及びインデックス領域のサイズと異なっていてもよい。また、電子機器１がログデータメモリ１２及び設定データメモリ１３の一方のみを有していてもよい。
【００２０】
［メモリアクセス制御部１１の動作］
以下、メモリアクセス制御部１１の動作を詳細に説明する。
インデックス管理部１１１は、ログデータメモリ１２及び設定データメモリ１３のデータ領域においてデータを書き込む対象となるアクセスアドレスに対応するインデックスアドレスを管理する。データ管理部１１２は、インデックスアドレスに基づいて、ログデータメモリ１２及び設定データメモリ１３のデータ領域においてデータを書き込む対象となるアクセスアドレスを管理する。変換部１１３は、インデックス管理部１１１及びデータ管理部１１２が出力するアドレスをシリアル通信データに変換する。シリアル通信データは、例えばＩ２Ｃ（Inter-Integrated Circuit）データである。
【００２１】
インデックス管理部１１１は、ログデータメモリ１２及び設定データメモリ１３の複数の管理用アドレスから選択したインデックスアドレスに、複数の管理用アドレスのうち他の管理用アドレスに書き込まれた値と異なるインデックス値を書き込む。インデックス管理部１１１は、複数の管理用アドレスに初期化値を書き込んだ後に、複数の管理用アドレスから選択したインデックスアドレスにインデックス値を書き込む。
【００２２】
インデックス管理部１１１は、例えばインデックスアドレス以外の管理用アドレスに００ｈを書き込み、インデックスアドレスに、００ｈと異なるインデックス値としてＡ５ｈを書き込む。インデックス管理部１１１がインデックスアドレスに書き込む所定の値は、インデックスアドレス以外の管理用アドレスに書き込まれていない値であれば任意の値であってもよい。
【００２３】
データ管理部１１２は、インデックス値が書き込まれているインデックスアドレスを特定し、ログデータメモリ１２の複数のデータ保持用アドレスのうち、特定したインデックスアドレスに対応するアクセスアドレスにデータを書き込む。データ管理部１１２は、インデックス領域の各管理アドレスに記憶されているデータを読み出して、読み出したデータの値とインデックス値（Ａ５ｈ）とを比較することにより、インデックス値が記憶された管理アドレスを検索する。データ管理部１１２は、インデックス値が記憶された管理アドレスをインデックスアドレスとして特定する。
【００２４】
データ管理部１１２が、インデックスアドレスに対応するデータ領域のアドレスにデータを書き込むと、インデックス管理部１１１は、インデックスアドレスを更新する。インデックス管理部１１１は、直前のインデックスアドレスであった管理用アドレスに対して第１シフト値を加算した管理用アドレスを最新のインデックスアドレスとする。第１シフト値は、例えば１である。データ管理部１１２は、インデックスアドレスに対応するデータ領域のアドレスにデータを書き込むと、直前のアクセスアドレスであったデータ保持用アドレスに対して第２シフト値を加算したデータ保持用アドレスを最新のアクセスアドレスとする。
【００２５】
第２シフト値は、第１シフト値と同一であってもよく、第１シフト値より大きくてもよい。第２シフト値は、例えばデータ領域の大きさとインデックス領域の大きさとの比に基づいて決定される。図２に示す例においては、データ領域の大きさがインデックス領域の大きさの４倍なので、第１シフト値が１の場合、第２シフト値は４である。
【００２６】
インデックス管理部１１１は、インデックス領域をリングバッファとして用いる。具体的には、インデックス管理部１１１は、インデックスアドレスがインデックス領域内の複数の管理用アドレスのうち最大のアドレス（例えば図２における４ＦＦｈ）に達すると、次の管理用アドレスを、インデックス領域内の複数の管理用アドレスのうち最小のアドレス（例えば図２における４００ｈ）とする。
【００２７】
同様に、データ管理部１１２は、データ領域をリングバッファとして用いる。具体的には、データ管理部１１２は、アクセスアドレスがデータ領域内の複数のデータ保持用アドレスのうち最大のアドレス（例えば図２における３ＦＦｈ）に達すると、次のデータ保持用アドレスを、データ領域内の複数のアドレスのうち最小のアドレス（例えば図２における０００ｈ）とする。
【００２８】
［電子機器１の動作フローチャート］
図３は、電子機器１の電源が投入された直後の初期化処理のフローチャートである。図４は、電源が投入された直後の初期化処理後のログデータメモリ１２の状態を示す図である。インデックス管理部１１１は、インデックス領域の全ての管理用アドレスを初期化する（Ｓ１）。インデックス管理部１１１は、例えば全ての管理用アドレスにＦＦｈを書き込むことにより初期化する。
【００２９】
続いて、インデックス管理部１１１は、最初の管理用アドレス（４００ｈ）にインデックス値（例えばＡ５ｈ）を書き込む（Ｓ２）。その後、データ管理部１１２は、最初のデータ保持用アドレス（０００ｈ〜００３ｈ）に初期データを書き込む（Ｓ３）。
【００３０】
図５は、電子機器１の電源が投入された後に、ログデータメモリ１２に記憶されたログデータを読み出す処理のフローチャートである。図６は、ログデータメモリ１２に記憶されたログデータを読み出す処理を実行する際のログデータメモリ１２の状態の一例を示す図である。インデックス管理部１１１は、インデックス領域内の管理用アドレスに記憶されたデータをサーチする（Ｓ１１）。具体的には、各管理用アドレスに記憶されたデータを読み出して、読み出したデータの値をインデックス値（Ａ５ｈ）と比較する（Ｓ１２）。
【００３１】
インデックス管理部１１１は、読み出したデータの値がインデックス値と一致している場合（Ｓ１３においてＹＥＳ）、読み出したデータの値がインデックス値と一致した管理用アドレスをインデックスアドレスとして特定し、特定した管理用アドレスをＲＡＭ１４に展開する（Ｓ１４）。インデックス管理部１１１は、読み出したデータがインデックス値と一致する管理アドレスが見つかるまでサーチを継続する。
【００３２】
データ管理部１１２は、インデックス管理部１１１が特定したインデックスアドレスに基づいてアクセスアドレスを算出する（Ｓ１５）。図２に示すように、データ領域がインデックス領域の４倍のサイズである場合、データ管理部１１２は、インデックスアドレスとインデックス領域の最小アドレスとの差分値を４倍した値をデータ領域の最小アドレスに加算することによりアクセスアドレスを算出する。データ領域がインデックス領域の４倍のサイズである場合、データ管理部１１２は、差分値を２ビットシフトするだけで差分値を４倍した値を算出できるので、計算処理量を小さくすることができる。
【００３３】
データ管理部１１２は、アクセスアドレスに記憶されたデータを読み出して、読み出したデータをＲＡＭ１４に記憶させる（Ｓ１６）。その後、メモリアクセス制御部１１は、ＲＡＭ１４に記憶されたデータを参照して各種の動作を実行する。
【００３４】
図７は、データ書き込み時のフローチャートである。図８は、データ書き込み時のログデータメモリ１２の状態の一例を示す図である。インデックス管理部１１１は、データ領域に記憶させる更新データがあるか否かを判定する（Ｓ２１）。インデックス管理部１１１は、更新データがあると判定した場合（Ｓ２１においてＹＥＳ）、インデックスアドレスを参照し、インデックスアドレスが最大値である４ＦＦｈであるか否かを判定する（Ｓ２２）。
【００３５】
インデックス管理部１１１は、現在のインデックスアドレスが最大値であると判定した場合（Ｓ２２においてＹＥＳ）、次のインデックスアドレスをインデックス領域の最小のアドレスである４００ｈにする（Ｓ２３）。次のインデックスアドレスは、更新データを書き込む対象となるアクセスアドレスを生成するためのアドレスである。インデックス管理部１１１は、インデックスアドレスが最大値でないと判定した場合（Ｓ２２においてＮＯ）、現在のインデックスアドレスに１を加算したアドレス（インデックスアドレス＋１）を次のインデックスアドレスとする（Ｓ２４）。
【００３６】
続いて、データ管理部１１２は、インデックスアドレスに基づいて、更新データを書き込む対象となるアクセスアドレスを算出する（Ｓ２５）。データ管理部１１２は、算出したアクセスアドレスに更新データを書き込む（Ｓ２６）。データ管理部１１２は、更新データを書き込んだことをインデックス管理部１１１に通知する。
【００３７】
インデックス管理部１１１は、更新データがアクセスアドレスに書き込まれると、更新データが書き込まれたアクセスアドレスに対応するインデックスアドレス（インデックスアドレス＋１）にインデックス値（例えばＡ５ｈ）を書き込む（Ｓ２７）。また、インデックス管理部１１１は、Ｓ２３又はＳ２４において変更する前のインデックスアドレスにＦＦｈを書き込む（Ｓ２８）。
【００３８】
インデックス管理部１１１及びデータ管理部１１２がこのように動作することで、データ管理部１１２は、データ領域において直前に更新データが書き込まれたアドレスと異なるアクセスアドレスに最新の更新データを書き込むことができる。さらに、インデックス管理部１１１は、最新の更新データが書き込まれたアクセスアドレスを特定するためのインデックスアドレスにインデックス値を書き込むことができる。その結果、データを書き込むアドレスが分散されるので、ログデータメモリ１２及び設定データメモリ１３の寿命が延びるとともに、メモリアクセス制御部１１は、最新のデータが書き込まれたアドレスを容易に特定することが可能になる。
【００３９】
［電子機器１による効果］
以上説明したように、インデックス管理部１１１は、ログデータメモリ１２及び設定データメモリ１３の複数の管理用アドレスから選択したインデックスアドレスに、複数の管理用アドレスのうち他の管理用アドレスに書き込まれた値と異なるインデックス値を書き込む。そして、データ管理部１１２は、インデックス値が書き込まれているインデックスアドレスを特定し、ログデータメモリ１２及び設定データメモリ１３の複数のデータ保持用アドレスのうち、特定したインデックスアドレスに対応するアクセスアドレスにデータを書き込む。インデックス管理部１１１及びデータ管理部１１２がこのように動作することで、ログデータメモリ１２及び設定データメモリ１３にデータが書き込まれるアドレスが分散するので、不揮発性半導体メモリの書き込み及び読み出しを正常に行える期間を長くすることができる。
【００４０】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されず、その要旨の範囲内で種々の変形及び変更が可能である。例えば、装置の分散・統合の具体的な実施の形態は、以上の実施の形態に限られず、その全部又は一部について、任意の単位で機能的又は物理的に分散・統合して構成することができる。また、複数の実施の形態の任意の組み合わせによって生じる新たな実施の形態も、本発明の実施の形態に含まれる。組み合わせによって生じる新たな実施の形態の効果は、もとの実施の形態の効果を合わせ持つ。
【符号の説明】
【００４１】
１  電子機器
１１  メモリアクセス制御部
１２  ログデータメモリ
１３  設定データメモリ
１４  ＲＡＭ
１１１  インデックス管理部
１１２  データ管理部
１１３  変換部
【図１】
2020135641.tif 000003
【図２】
2020135641.tif 000004
【図３】
2020135641.tif 000005
【図４】
2020135641.tif 000006
【図５】
2020135641.tif 000007
【図６】
2020135641.tif 000008
【図７】
2020135641.tif 000009
【図８】
2020135641.tif 000010