(57)【要約】【課題】データ読出のためのアドレス制御を必要とせず、書換式不揮発メモリからデータ読出を行うことが可能なメモリアクセス方法及び装置を提供する。【解決手段】例えば5つのデータブロック111_1〜111_5に区分けした書換式不揮発メモリ100内の、例えばデータブロック111_1に対するデータ書込回数が所定の制限回数Thに到達した時(a)、データブロック111_1内のデータD1を消去する(b)と同時に、次のデータD2の書込先をデータブロック111_2に移動する(c)。そして、データ読出要求を受けた時、全データブロック111_1〜111_5内の全データを読み出して論理和(例えば、“データD1”＋“00000000”＋…＋“00000000”)を取り、最新のデータD1(又はD2、…、又はD5)のみを得る(d)。【選択図】図１
2007213513.tif 000002
【特許請求の範囲】
【請求項１】
書換式不揮発メモリを複数のデータブロックに区分けした内の、一つのデータブロックに対するデータ書込回数が所定の制限回数に達した時、該データブロック内のデータを消去すると同時に次のデータ書込先を他のデータブロックに移動する第１ステップと、
データ読出要求を受けた時、全データブロック内の全データを読み出して論理和を取る第２ステップと、
を備えたことを特徴とするメモリアクセス方法。
【請求項２】
請求項１において、
該書換式不揮発メモリ内に、該データ書込回数を記憶するステップをさらに備えたことを特徴としたメモリアクセス方法。
【請求項３】
請求項１又は２に記載の方法の各ステップをコンピュータに実行させるためのプログラム。
【請求項４】
請求項３に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項５】
複数のデータブロックに区分けされた書換式不揮発メモリと、
一つのデータブロックに対するデータ書込回数が所定の制限回数に達した時、該データブロック内のデータを消去すると同時に次のデータ書込先を他のデータブロックに移動し、データ読出要求を受けた時、全データブロック内の全データを読み出して論理和を取る処理手段と、
を備えたことを特徴とするメモリアクセス装置。
【請求項６】
請求項５において、
該書換式不揮発メモリ内に、該データ書込回数を記憶するカウンタを設けたことを特徴としたメモリアクセス装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリアクセス方法及び装置に関し、特にEEPROMやフラッシュメモリ等のデータ書込回数に制限のある不揮発メモリ(以下、書換式不揮発メモリと総称する。)に対して、データ書込又は読出を行うメモリアクセス方法及び装置に関するものである。
【背景技術】
【０００２】
上記のような書換式不揮発メモリへのアクセス技術としては、従来より、以下に示す従来例[1]〜[3]によるものが挙げられる。
【０００３】
従来例[1]：
複数に区分けしたデータブロックと各データブロックに対応したデータ書込回数カウンタとを設けたEEPROMと、このEEPROMに対するアクセスを制御するコントロール回路とを備え、該コントロール回路が、或るデータブロックに対するデータ書込回数が制限回数を超えたことを検出した時、他の有効なデータブロックに移動してデータ書込を行うようにした記憶装置(例えば、特許文献1参照。)。
【０００４】
従来例[2]：
複数のデータブロックに区分されたEEPROMと、各データブロックに対するデータ書込回数を記憶する記憶回路と、各データ書込回数が制限回数を超えたか否かを検出する検出回路と、EEPROMに対するアクセスを制御するコントロール回路とを備え、該コントロール回路が、該検出回路の検出結果に基づきデータの書込先又は読出元となる有効なデータブロックのアドレスを指定する情報処理装置(例えば、特許文献2参照。)。
【０００５】
従来例[3]：
複数のデータブロックに区分されたEEPROMと、このEEPROMに対するアクセスを制御するマイクロプロセッサとを備え、該マイクロプロセッサが、或るデータブロックに対してデータ書込を行った際に、他のデータブロックに対して次にデータ書込を行うことを示す識別子を書き込み、この識別子を用いることで、データの書込先又は読出元となる有効なデータブロックの検索を可能にしたデータ処理装置(例えば、特許文献3参照。)。
【特許文献１】特開平1-264698号公報
【特許文献２】特開昭63-200398号公報
【特許文献３】特開平7-98992号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記の特許文献1及び2に関しては、共にコントロール回路を用いて有効データブロックのアドレス制御、すなわち、有効データブロックのアドレス情報を回路内部又はRAM等に保存して、EEPROMへのアクセス毎にそのアドレス情報の設定又は参照処理を行っている。
【０００７】
このようなメモリアクセス技術を、実際に例えばデータ読出が頻繁に行われるエンジン制御システム等に適用した場合、このデータ読出の度毎にアドレス情報を参照する処理が行われるため、システム全体の処理負荷を増大させてしまう虞れがある。
【０００８】
また、コントロール回路の障害又は他の回路障害による電源断等により、保持しているアドレス情報を消失してしまった場合、再び有効データブロックを特定してデータを読み出すことは不可能である。さらに、これを回避しようと有効データブロックのアドレス情報をEEPROM内に保存した場合には、このアドレス情報を保存する領域がEEPROM容量を圧迫してしまう。
【０００９】
上記の特許文献3に関しては、データの書込先又は読出元を示す識別子を、データブロック自体に書き込んでしまうため、不必要にEEPROMの書換寿命を縮めてしまうという欠点がある。また、データ読出の度毎にこの識別子から有効データブロックを検索する処理が必要であり、この場合も、適用されるシステム全体の処理負荷の増大につながる。
【００１０】
従って、本発明は、データ読出のためのアドレス制御を必要とせず、書換式不揮発メモリからデータ読出を行うことが可能なメモリアクセス方法及び装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
[1]上記の目的を達成するため、本発明に係るメモリアクセス方法は、書換式不揮発メモリを複数のデータブロックに区分けした内の、一つのデータブロックに対するデータ書込回数が所定の制限回数に達した時、該データブロック内のデータを消去すると同時に次のデータ書込先を他のデータブロックに移動する第１ステップと、データ読出要求を受けた時、全データブロック内の全データを読み出して論理和を取る第２ステップとを備えたことを特徴とする。
【００１２】
これを、図1に示す本発明の動作原理を用いて説明する。
【００１３】
第１ステップでは、書換式不揮発メモリ100を、例えば、5つのデータブロック111_1〜111_5(以下、符号111で総称することがある。)に区分けした内の、データブロック111_1に対するデータ書込回数が所定の制限回数Th、例えば1000回に到達した時(a)、データブロック111_1内のデータD1(以下、符号Dで総称することがある。)を消去する(b)と同時に、次のデータ書込先、この例では同図(2)に示すデータD2の書込先として使用するデータブロックの指定を、他のデータブロック111_2に移動する(c)。
【００１４】
なお、同図(1)のデータブロック111_2〜111_5に記載される“00000000”は、データDが消去された状態か又は未だ何も書込されていない状態(初期状態)を示している。これは、同図(2)及び(3)の説明においても同様である。
【００１５】
そして、該第１ステップは、各データブロック111_2〜111_5に対するデータ書込回数が1000回に到達した時にも、それぞれ、上記(a)〜(c)を実行する。
【００１６】
なお、該第１ステップは、各データブロック111_1〜111_5に対するデータ書込回数が全てデータ書込制限回数Thに到達した時、すなわち、この例では最終のデータブロック111_5に対するデータ書込回数がデータ書込制限回数Thに到達した時には、書換式不揮発メモリ100が書換寿命に到達したと判断しても良い。
【００１７】
一方、データ読出要求を受けた時、第２ステップでは、全データブロック111_1〜111_5内の全データを一括で読み出すと共に、例えば、同図(1)の状態においては、“データD1(データブロック111_1)”,“00000000(データブロック111_2)”,…,“00000000(データブロック111_5)”の論理和を取る(d)。この場合、データはデータブロック111_1にしか存在しないので、論理和＝“データD1”となる。同図(2)及び(3)の状態においても同様に、該第２ステップでの論理和は、それぞれ、データD2及びデータD5となる。
【００１８】
このように、本発明のメモリアクセス方法においては、データ読出のためのアドレス制御を行うこと無く、書換式不揮発メモリから最新のデータのみを残して読み出すことが可能となり、データ読出の度毎にアドレス情報を参照する処理を省くことができる。
【００１９】
また、コントロール回路の障害又は他の回路障害等による電源断(通常の電源ON/OFFも含む)が発生した場合であっても、有効データブロックを特定するための手段を講じることなく、即座に最新のデータのみを読み出すことが可能である。
【００２０】
[2]また、上記[1]において、該書換式不揮発メモリ内に、該データ書込回数を記憶するステップをさらに備えるようにしても良い。
【００２１】
すなわち、このステップでは、書換式不揮発メモリ100内に、例えば、データブロック111_1〜111_5の各々に対応してデータ書込回数カウンタ121_1〜121_5(図示せず)(以下、符号121で総称することがある。)を設け、データブロック111にデータ書込が行われた時、そのデータ書込回数を計数して対応するデータ書込回数カウンタ121に記憶する。
【００２２】
これにより、例えば、電源断が発生し、その後復旧したような場合(通常の電源OFF後の電源OFFも含む)であっても、該第１ステップでは、各データ書込回数カウンタ121_1〜121_5の値を参照して、データ書込制限回数Thを超えていないデータブロック111、すなわち、データ書込を行うことが可能なデータブロック111を容易に検索することができる。また、該第１ステップでは、そのデータブロック111のデータ書込回数を知ることもできる。
【００２３】
なお、本発明では、上記[1]又は[2]に記載のメモリアクセス方法の各ステップをコンピュータに実行させるためのプログラム及びこのプログラムを記録したコンピュータ読み取り可能な記録媒体を提供することができる。
【００２４】
[3]また、本発明に係るメモリアクセス装置は、複数のデータブロックに区分けされた書換式不揮発メモリと、一つのデータブロックに対するデータ書込回数が所定の制限回数に達した時、該データブロック内のデータを消去すると同時に次のデータ書込先を他のデータブロックに移動し、データ読出要求を受けた時、全データブロック内の全データを読み出して論理和を取る処理手段とを備えたことを特徴とする。
【００２５】
すなわち、上記[1]で説明した第１ステップ及び第２ステップと同様の処理を行う処理手段を備えたメモリアクセス装置を提供することができる。
【００２６】
[4]また、上記[3]において、該書換式不揮発メモリ内に、該データ書込回数を記憶するカウンタを設けても良い。
【００２７】
すなわち、上記[3]において、上記[2]で説明したステップと同様の処理を行う記憶手段をさらに備えたメモリアクセス装置を提供することができる。
【発明の効果】
【００２８】
本発明によれば、データ読出のためのアドレス制御を行うこと無く、書換式不揮発メモリから最新のデータのみを読み出すことができ、以てデータ読出の度毎にアドレス情報を参照する処理を省いて処理効率を向上させることができる。また、電源断が発生した場合であっても、即座に最新のデータのみを読み出すことができる。
【発明を実施するための最良の形態】
【００２９】
図1に原理的に示した本発明の一態様に係るメモリアクセス方法及びこれを使用する装置の実施例を、図2〜5を参照して以下に説明する。
【００３０】
[1] 構成実施例：図2
まず、本実施例の構成について、図2を参照して説明する。
【００３１】
図2に示すメモリアクセス装置は、書換式不揮発メモリ100とROM200とCPU300とRAM400とで構成されており、これらはバスBUSにより互いに接続されている。  
【００３２】
そして、図1にも示した書換式不揮発メモリ100は、n個(図1ではn＝5)のデータブロック111_1〜111_nに区分けしたデータ領域110と、各データブロック111_1〜111_nにそれぞれ対応するデータ書込回数カウンタ121_1〜121_nを設けたデータ書込回数カウンタ領域120とを備えている。
【００３３】
また、ROM200には、書換式不揮発メモリ100に対するデータ書込及びデータ読出を制御するためのデータ書込プログラム210及びデータ読出プログラム220が記録されており、CPU300は、両プログラム210及び220に記述される命令を実際に読み出し協働して実行する。従って、ROM200は、両プログラム210及び220をCPU300に実行させるための記録媒体である。
【００３４】
また、RAM400には、CPU300によるデータ書込プログラム210の実行時、データ書込先のデータブロック及びそれに対応するデータ書込回数カウンタのアドレス情報を、それぞれ一時的に保存するためのデータ書込用アドレス変数410及びデータ書込回数カウンタ用アドレス変数420が確保される。
【００３５】
[2] 動作実施例：図3〜5
次に、本実施例の動作を、データ書込処理例及びデータ読出処理例に分けて説明する。なお、データ書込方法及びデータ読出方法は種々考えられるため、それらの方法は特に以下の動作例に限定されるものではない。
【００３６】
[2]-1 データ書込処理例：図3,4
図3は、図2に示したデータ書込プログラム210の処理フローチャートを示している。
【００３７】
ステップS1：
CPU300によりデータ書込プログラム210の実行が開始されると、RAM400内にデータ書込用アドレス変数410を確保すると共に、このデータ書込用アドレス変数410に、図4(1)に示すように、書換式不揮発メモリ100内のデータ領域110の先頭アドレス、すなわちデータブロック111_1のアドレスを設定する。
【００３８】
ステップS2：
また、ステップS1と同様に、RAM400内にデータ書込回数カウンタ用アドレス変数420を確保すると共に、このデータ書込回数カウンタ用アドレス変数420に、書換式不揮発メモリ100内のデータ書込回数カウンタ領域120の先頭アドレス、すなわちデータ書込回数カウンタ121_1のアドレスを設定する。
【００３９】
なお、同図(1)のデータ書込回数カウンタ121_1〜121_nの値として記載される“0”は、それぞれ対応するデータブロック111に未だ何も書込されていないことを示している。これは、以下の説明においても同様である。
【００４０】
ステップS3：
そして、データ書込回数カウンタの値、すなわち、データ書込回数カウンタ用アドレス変数420が示すアドレスのカウンタ値が、データ書込制限回数Thに到達しているか否かの判定を行う。今、図4(1)に示すように、データ書込回数カウンタ121_1の値は“0”であり、データ書込制限回数Thには到達していないため、ステップS4に進む。
【００４１】
ステップS4：
データ書込用アドレス変数410が示すデータブロック111_1に、データとして例えば“データD1_1”を書き込む。
【００４２】
ステップS5：
また、データ書込回数カウンタ用アドレス変数420が示すデータ書込回数カウンタ121_1の値を“1”だけインクリメント(“0”→“1”)する。
【００４３】
以降、データ書込プログラム210が実行される度毎に、ステップS3において、データ書込回数カウンタ121_1の値がデータ書込制限回数Thに到達したと判定される迄、上記ステップS1〜S5を繰り返して、データブロック111_1に“データD1_2”、…、“データD1_Th”を書き込み、データ書込回数カウンタ121_1の値をインクリメント(“1”→“2”→…→“Th”)する。
【００４４】
ステップS3において、データ書込回数カウンタ121_1の値がデータ書込制限回数Thに到達したと判定した場合は、ステップS6に進む。
【００４５】
ステップS6：
データ書込回数カウンタ用アドレス変数420がデータ書込カウンタ領域120の最終アドレスに到達しているか否か、すなわち、データ書込を継続することが可能か否かの判定を行う。今、図4(2)に示すように、データ書込回数カウンタ用アドレス変数420はデータ書込回数カウンタ121_1を示しているので、データ書込を継続することが可能と判定して、ステップS7に進む。
【００４６】
ステップS7：
そして、データ書込用アドレス変数410が示すデータブロック111_1に、データDが消去された状態を示す“00000000”を書き込む。
【００４７】
ステップS8：
さらに、次のデータ書込先のデータブロックが、データブロック111_2となるように、データ書込用アドレス変数410を“1”だけインクリメント(データブロック111_1→111_2)する。
【００４８】
ステップS9：
また、データ書込回数カウンタ用アドレス変数420を“1”だけインクリメント(データ書込回数カウンタ121_1→121_2)する。
【００４９】
以降、データ書込プログラム210が実行される度毎に、ステップS6において、データ書込回数カウンタ用アドレス変数420がデータ書込カウンタ領域120の最終アドレスに到達したと判定される迄、上記ステップS1〜S9を繰り返して、データブロック111_2、111_3、…、111_nに“データD2_1”、…、“データDn_Th”を書き込むと共に、データ書込回数カウンタ121_2、121_3、121_nにデータ書込回数を計数する。
【００５０】
ステップS10：
そして、ステップS6において、データ書込回数カウンタ用アドレス変数420がデータ書込カウンタ領域120の最終アドレスに到達したと判定した場合は、これ以上書換式不揮発メモリ400に対するデータ書込を継続することができないため、図4(3)に示すように、データ書込用アドレス変数410及びデータ書込回数カウンタ用アドレス変数420のインクリメントは行わず、例えばユーザへの警報やデータ退避等のデータ書込制限回数オーバー処理を行う。
【００５１】
[2]-2 データ読出処理例：図5
図5は、図2に示したデータ読出プログラム220の処理フローチャートを示している。
【００５２】
ステップS21：
CPU300によりデータ読出プログラム220の実行が開始されると、上記のデータ書込処理例に示したようなアドレス変数を用いることなく、全データブロック111_1〜111_nの全データを読み出す。
【００５３】
ステップS22：
そして、ステップS21で読み出した全データの論理和を取り、例えば、図4(1)に示した書換式不揮発メモリ100の状態では、“データD1_1又はD1_Th (データブロック111_1)”＋“00000000(データブロック111_2)”＋…＋“00000000(データブロック111_n)”の論理和であるデータD1_1又はD1_Thのみを得る。また、ステップS22は、同図(2)及び(3)のいずれの状態においても同様に、論理和として、それぞれデータD2_1〜Dn_Thのいずれか１つのみを得ることができる。
【００５４】
なお、上記実施例によって本発明は限定されるものではなく、特許請求の範囲の記載に基づき、当業者によって種々の変更が可能なことは明らかである。
【図面の簡単な説明】
【００５５】
【図１】本発明に係るメモリアクセス方法及び装置の動作原理を示したブロック図である。
【図２】本発明に係るメモリアクセス方法及び装置の構成実施例を示したブロック図である。
【図３】本発明に係るメモリアクセス方法及び装置のデータ書込処理例を示したフローチャート図である。
【図４】本発明に係るメモリアクセス方法及び装置に用いられる書換式不揮発メモリの構造例及びそのデータ書込動作例を示したブロック図である。
【図５】本発明に係るメモリアクセス方法及び装置のデータ読出処理例を示したフローチャート図である。
【符号の説明】
【００５６】
100  書換式不揮発メモリ
110  データ領域
111, 111_1〜111_n  データブロック
120  データ書込回数カウンタ領域
121, 121_1〜121_n  データ書込回数カウンタ
200  ROM
210  データ書込プログラム
220  データ読出プログラム
300  CPU
400  RAM
410  データ書込用アドレス変数
420  データ書込回数カウンタ用アドレス変数
D, D1〜Dn, D1_1〜Dn_Th-1  データ
Th  データ書込制限回数
BUS  バス
図中、同一符号は同一又は相当部分を示す。
【図１】
2007213513.tif 000003
【図２】
2007213513.tif 000004
【図３】
2007213513.tif 000005
【図４】
2007213513.tif 000006
【図５】
2007213513.tif 000007