IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ラピステクノロジー株式会社の特許一覧

<>
  • 特開-データ書き換え方法 図1
  • 特開-データ書き換え方法 図2
  • 特開-データ書き換え方法 図3
  • 特開-データ書き換え方法 図4
  • 特開-データ書き換え方法 図5
  • 特開-データ書き換え方法 図6
  • 特開-データ書き換え方法 図7
  • 特開-データ書き換え方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024142139
(43)【公開日】2024-10-10
(54)【発明の名称】データ書き換え方法
(51)【国際特許分類】
   G06F 12/02 20060101AFI20241003BHJP
   G06F 12/00 20060101ALI20241003BHJP
【FI】
G06F12/02 570A
G06F12/00 597U
【審査請求】未請求
【請求項の数】3
【出願形態】OL
(21)【出願番号】P 2023054164
(22)【出願日】2023-03-29
(71)【出願人】
【識別番号】320012037
【氏名又は名称】ラピステクノロジー株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】秦 佑典
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA05
5B160AB23
(57)【要約】
【課題】従来よりもデータの書き換え回数を低減しながら、メモリ内のデータバックアップを行う。
【解決手段】コンピュータ10は、複数のブロックを識別するブロック番号と各々のブロックのデータアドレスと対応付けられたデータを格納するワードデータを含むメモリ空間に、各々のブロックグループにそれぞれ属するデータアドレスと対応付けられたデータをそれぞれ1つずつ格納した複数のワードデータ1A、1Bと、少なくとも1つ以上の予備のワードデータ1Cとによって構成されるメモリグループ3を設けたメモリ構成において、指定されたデータアドレスのデータを更新する場合、指定されたデータアドレスのデータを格納するワードデータを含んだメモリグループ3内のワードデータ1Cに、指定されたデータアドレスの更新後のデータを書き込む。
【選択図】図6
【特許請求の範囲】
【請求項1】
複数のブロックを識別するブロック番号と各々のブロックに対して一意に設定されたアドレスによって表される各々のデータアドレスと対応付けられたデータを格納するワードデータを含むメモリ空間に、
前記複数のブロックを2つ以上のブロックグループに分けた場合、各々の前記ブロックグループにそれぞれ属する前記データアドレスと対応付けられたデータをそれぞれ1つずつ格納した複数のワードデータと、少なくとも1つ以上の予備のワードデータとによって構成されるメモリグループを設けたメモリ構成において、
指定された前記データアドレスのデータを更新する場合、指定された前記データアドレスのデータを格納するワードデータを含んだ前記メモリグループのうち、更新対象である前記データアドレスの更新前のデータが格納されたワードデータ、及び更新対象である前記データアドレスのデータを格納するワードデータとは異なる前記ブロックグループに属する前記データアドレスの最新データが格納されたワードデータ以外のワードデータに、指定された前記データアドレスの更新後のデータを書き込む処理をコンピュータが実行する
データ書き換え方法。
【請求項2】
前記メモリグループに含まれる各々のワードデータには、
格納しているデータに対応付けられている前記データアドレスが属する前記ブロックグループを表すブロック領域と、
前記データアドレスによって表されるデータの更新順を表す順序領域と、
が含まれ、
前記ブロック領域と前記順序領域を参照して、指定された前記データアドレスに対する更新後のデータを書き込むワードデータを選択する処理をコンピュータが実行する
請求項1に記載のデータ書き換え方法。
【請求項3】
前記メモリグループに含まれる各々のワードデータにおけるデータの書き換え回数が予め定めた回数以下となるように、前記メモリグループに含まれるワードデータの数が設定されている
請求項1又は請求項2に記載のデータ書き換え方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリにおけるデータ書き換え方法に関する。
【背景技術】
【0002】
特許文献1には、データを記憶するデータ領域としての物理ブロックと、データ領域を構成する物理ブロックの物理ブロック番号を記憶する第1領域及び第2領域としての物理ブロックと、によってメモリを構成することにより、複数の論理ブロックに複数のデータを書き込んでいる最中にメモリコラプションが生じたとしても、個々のデータの整合性を維持する情報処理方法が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第3702923号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
図7に特許文献1におけるメモリの構成例を示す。特許文献1におけるメモリには、データ領域30の対象ブロック31を指し示す対象ポインタ領域22と、データ領域30の更新ブロック32を指し示す更新ポインタ領域23と、データの有効性を示す有効性情報24と、データの書き込み順を示す最新情報25を含んだ第1領域20及び第2領域21が用意されている。
【0005】
対象ブロック31とは、データを書き込む場合に、本来、その書き込みの対象となるべき物理ブロックのことである。
【0006】
更新ブロック32とは、ある物理ブロックにデータを書き込んでその記憶内容を更新するときに用いられる更新用の物理ブロックである。
【0007】
第1領域20及び第2領域21の対象ポインタ領域22における4つの物理ブロック番号は、%00~%03によって表される論理ブロック番号と対応付けられている。例えば図7の第1領域20における対象ポインタ領域22内の4つの物理ブロック番号#00~#03は、それぞれ%00~%03の論理ブロック番号と対応付けられている。なお、図7のメモリにおける“FF”の値はメモリの初期値であり、データが1度も書き込まれていない状態を表している。
【0008】
例えば有効性情報24によって第1領域20のみが有効であることが示されている状況において、論理ブロック番号%00と論理ブロック番号%02によって表される論理ブロックのそれぞれにデータの書き込み要求があったとする。この場合、第1領域20の対象ポインタ領域22を参照すれば、論理ブロック番号%00と論理ブロック番号%02に対応する物理ブロック番号がそれぞれ#00と#02であることを示している。したがって、#00と#02によって表される物理ブロックが、データを書き込む対象ブロック31として認識される。
【0009】
更に、データを書き込む物理ブロックの数だけ第1領域20の更新ポインタ領域23を左から順に参照した場合、#04と#05という更新ブロック32の物理ブロック番号が得られる。
【0010】
したがって、特許文献1におけるメモリでは、本来であれば物理ブロック番号が#00と#02によって表される対象ブロック31内の物理ブロックに書き込むべきデータが、それぞれ物理ブロック番号が#04と#05によって表される更新ブロック32内の物理ブロックに書き込まれる。
【0011】
図8は、更新ブロック32内の物理ブロックにデータが書き込まれた例を示す図である。
【0012】
その後、第1領域20の対象ポインタ領域22が第2領域の対象ポインタ領域22にコピーされ、データを書き込んだ更新ブロック32内の物理ブロックの物理ブロック番号である#04と#05が、第2領域21における対象ポインタ領域22の論理ブロック番号が%00及び%02と対応付けられたエリアに書き込まれる。
【0013】
また、第1領域20の更新ポインタ領域23が第2領域21の更新ポインタ領域23にコピーされ、本来のデータの書き込み先である物理ブロックの物理ブロック番号である#00と#02が、第2領域21における更新ポインタ領域23に書き込まれ、第2領域21の有効性情報24が有効に設定されると共に、第1領域20の有効性情報24が無効に設定される。
【0014】
すなわち、指定された論理ブロック番号へのデータの書き込みは、対象ブロック31に対して行われるわけではなく、更新ブロック32に対して行われるため、対象ブロック31に記憶されていたデータはそのまま残る。したがって、例えば通信障害等によりメモリへのデータの書き込みが正常に行われなかった場合であっても、第1領域20及び第2領域21に格納されている有効性情報24を参照して、データを書き込み前の元のデータが格納されていたブロックを判定することで、元のデータを復旧させることができる。
【0015】
しかしながら、こうした構成ではデータの書き込みが発生する度に第1領域20と第2領域21を交互に書き換えることになる。具体的には、第1領域20及び第2領域21の対象ポインタ領域22と更新ポインタ領域23にはそれぞれ物理ブロックを指し示すポインタが4つ格納されており、ポインタが指し示す物理ブロックへの書き込み要求がある度に対象ポインタ領域22及び更新ポインタ領域23の書き換えが行われる。したがって、データ第1領域20及び第2領域21では、データ領域30の各物理ブロックにおける書き換え回数の2倍の総和の書き換え回数が発生する。
【0016】
具体的には、論理ブロック番号%00と論理ブロック番号%01の2ブロックの各々に対してデータの書き込み要求が100回ずつあった場合、第1領域20、第2領域21、及びデータ領域30の書き換え回数は以下のようになる。ここで、論理ブロック番号%00のデータは物理ブロック番号#00及び#04に交互に書き換えを行い、論理ブロック番号%01のデータは物理ブロック番号#01及び#05に交互に書き換えを行ったものとする。
【0017】
[書き換え回数]
第1領域20の書き換え回数 :100回×2ブロック/2領域=100回
第2領域21の書き換え回数 :100回×2ブロック/2領域=100回
データ領域30の物理ブロック番号#00及び#04の書き換え回数:
100回/2領域=50回
データ領域30の物理ブロック番号#01及び#05の書き換え回数:
100回/2領域=50回
【0018】
一方、FlashROM(Flash Read Only Memory)やEEPROM(Electrically Erasable Programmable Read Only Memory)等の不揮発性メモリには動作品質保証のために最大書き換え回数の制限が設けられている。ICカード等においてデータの最大書き換え回数が予め設けられている場合、この最大書き換え回数は、データ領域30の書き換え回数だけでなく、第1領域20及び第2領域21のようなデータ領域30を指し示すポインタ領域の書き換え回数にも適用される。
【0019】
したがって、データバックアップに対応した従来のデータ書き換え方法ではメモリの最大書き換え回数を超えてしまうまでの期間が早くなるといった問題点があった。
【0020】
本発明は、上述した課題を解決するために提案されたものであり、従来よりもデータの書き換え回数を低減しながら、メモリ内のデータバックアップを行うことができるデータ書き換え方法を提供することを目的とする。
【課題を解決するための手段】
【0021】
本発明に係るデータ書き換え方法は、複数のブロックを識別するブロック番号と各々のブロックに対して一意に設定されたアドレスによって表される各々のデータアドレスと対応付けられたデータを格納するワードデータを含むメモリ空間に、前記複数のブロックを2つ以上のブロックグループに分けた場合、各々の前記ブロックグループにそれぞれ属する前記データアドレスと対応付けられたデータをそれぞれ1つずつ格納した複数のワードデータと、少なくとも1つ以上の予備のワードデータとによって構成されるメモリグループを設けたメモリ構成において、指定された前記データアドレスのデータを更新する場合、指定された前記データアドレスのデータを格納するワードデータを含んだ前記メモリグループのうち、更新対象である前記データアドレスの更新前のデータが格納されたワードデータ、及び更新対象である前記データアドレスのデータを格納するワードデータとは異なる前記ブロックグループに属する前記データアドレスの最新データが格納されたワードデータ以外のワードデータに、指定された前記データアドレスの更新後のデータを書き込む処理をコンピュータが実行する。
【発明の効果】
【0022】
本発明によれば、従来よりもデータの書き換え回数を低減しながら、メモリ内のデータバックアップを行うことができる、という効果を有する。
【図面の簡単な説明】
【0023】
図1】コンピュータの構成例を示す図である。
図2】ワードデータの構成例を示す図である。
図3】メモリグループの構成例を示す図である。
図4】データアドレスによって表されるデータのアドレスマップと、メモリアドレスによって表されるデータのアドレスマップとの対応例を示す図である。
図5】データ書き換え処理の流れの一例を示すフローチャートである。
図6】データ書き換え処理によるデータの更新例を示す図である。
図7】従来のメモリ構成例を示す図である。
図8】物理ブロックにデータが書き込まれた例を示す図である。
【発明を実施するための形態】
【0024】
以下、本実施の形態について図面を参照しながら説明する。なお、同じ構成要素及び同じ処理には全図面を通して同じ符号を付与し、重複する説明を省略する。
【0025】
図1は、本実施形態に係るコンピュータ10の構成例を示す図である。コンピュータ10は、プロセッサの一例であるCPU(Central Processing Unit)11、CPU11の一時的な作業領域として使用されるRAM(Random Access Memory)12、不揮発性メモリ13、及び入出力インターフェース(I/O)14を備える。CPU11、RAM12、不揮発性メモリ13、及びI/O14はバス15を介して各々接続される。
【0026】
不揮発性メモリ13は、不揮発性メモリ13に供給される電力が遮断されても記憶した情報が維持される記憶装置の一例であり、例えば半導体メモリが用いられるがハードディスクを用いてもよい。不揮発性メモリ13には、例えばコンピュータ10に予め定めた処理を実行させるプログラムが記憶される。
【0027】
不揮発性メモリ13は必ずしもコンピュータ10に内蔵されている必要はなく、例えばメモリカードのようにコンピュータ10に着脱可能な可搬型の記憶装置であってもよい。なお、不揮発性メモリ13はCPU11から制御される構成としたが、不揮発性メモリ13を制御するコントローラーブロックを介して制御される構成としてもよい。
【0028】
I/O14には、コンピュータ10が備える機能に応じたユニットが接続される。図1に示す例では、通信回線を経由して外部装置(図示省略)と通信を行う通信ユニット16が接続されているが、I/O14に接続されるユニットが通信ユニット16に限られないことは言うまでもない。
【0029】
次に、不揮発性メモリ13におけるメモリ構成について説明する。図2に示すように、不揮発性メモリ13は、1つのアドレスに対して1ワード、すなわち、32ビット幅のメモリが割り当てられている。このように、各々のアドレスに割り当てられたメモリ単位をワードデータ1という。各ワードデータ1を識別するため、不揮発性メモリ13の各ワードデータ1にはアドレスが対応付けられている。不揮発性メモリ13のワードデータ1に対応付けられたアドレスをメモリアドレスという。
【0030】
一方、CPU11で扱うデータはブロック単位で管理され、1ブロックは16ワード、すなわち16個のワードデータ1によって構成される。
【0031】
各ブロックには各々のブロックを識別するブロック番号が付与されると共に、各々のブロックに含まれるワードデータ1には、ブロック内でのワードデータ1が一意に特定されるようにアドレスが設定される。すなわち、CPU11は、ブロック番号と各ブロック内のアドレスの組み合わせによって、指定されたワードデータ1に格納されているデータを特定することができる。
【0032】
このように、ブロック番号と各ブロック内のアドレスの組み合わせによって表される、システム上のデータのアドレスをデータアドレスという。
【0033】
データアドレスによって表されるワードデータ1と、メモリアドレスによって表されるメモリ空間上のワードアドレスは、後述するようにそれぞれ対応付けが行われ、相互に参照可能となっている。
【0034】
こうした各々のワードデータ1は、最新性ビット、ブロックビット、データ、及び有効性ビットを含む。
【0035】
最新性ビットは、データアドレスよって表されるデータの更新順を表す順序領域の一例である。例えば最新性ビットには2ビットが割り当てられる。最新性ビットがb00~b10の場合、ワードデータ1にデータが格納されていることを表し、b11の場合、ワードデータ1にデータが格納されていないことを表す。“b”の記号は、後に続く数値がバイナリデータであることを表す記号である。
【0036】
ワードデータ1にデータが格納されている場合、最新性ビットの値が大きい方が新しいデータが格納されていることを表す。具体的には、最新性ビットがb00であるワードデータ1よりも、最新性ビットがb01であるワードデータ1の方が新しいデータを格納していることを表し、最新性ビットがb01であるワードデータ1よりも、最新性ビットがb10であるワードデータ1の方が新しいデータを格納していることを表す。最新性ビットがb10まで達した後に新たなデータを格納する場合、最新性ビットをb00に戻す。すなわち、最新性ビットがb10を表しているワードデータ1と、最新性ビットがb00を表しているワードデータ1では、最新性ビットがb00であるワードデータ1に格納されているデータの方が新しいデータであることを表している。
【0037】
ブロックビットは、格納しているデータに対応付けられているデータアドレスが属するブロックグループを表す。ブロックグループとは、各ブロックを2つ以上のグループに分けた場合における各々のグループを指す。
【0038】
ブロックビットには、ブロックグループを一意に識別するために必要となるビットが割り当てられる。例えばブロックグループがAブロックとBブロックの2つに分けられている場合、ブロックビットとして1ビットを割り当てればブロックグループの識別が可能となる。
【0039】
ワードデータ1におけるデータは、ワードデータ1に記憶されているデータを表す。
【0040】
有効性ビットは、ワードデータ1に記憶されているデータが正常であるか否かを表す。例えばCPU11は、ワードデータ1にデータを書き込む場合、ECC(Error-Correcting Code)等の誤り訂正符号を用いて、ワードデータ1に書き込んだデータの妥当性を判定し、書き込んだデータが正常であるか否かを有効性ビットに反映する。
【0041】
CPU11は、こうしたワードデータ1に対して、例えば連続する3つのメモリアドレスのワードデータ1を1つのメモリグループ3として取り扱う。
【0042】
図3は、メモリグループ3の構成例を示す図である。ここでは一例として、ブロックグループがAブロックとBブロックの2つに分けられている場合について説明する。
【0043】
メモリグループ3は、Aグループに属するブロックのデータアドレスと対応付けられたデータを格納するワードデータ1Aと、Bグループに属するブロックのデータアドレスと対応付けられたデータを格納するワードデータ1Bと、データ書き換え用の予備のワードデータ1Cとによって構成される。
【0044】
すなわち、メモリグループ3は、グループ分けされたブロックグループにそれぞれ属するデータアドレスと対応付けられたデータをそれぞれ1つずつ格納したワードデータ1A及びワードデータ1Bと、予備のワードデータ1Cとを含む。
【0045】
なお、以降では、ワードデータ1A、ワードデータ1B、及びワードデータ1Cを総称して「ワードデータ1」と表すことにする。
【0046】
初期状態のワードデータ1Cには何れの情報も含まれていない。このように、何れの情報も含まれていない状態を「空」と表す。
【0047】
ワードデータ1Aのメモリアドレスを“n”とすれば、ワードデータ1B及びワードデータ1Cのメモリアドレスは、それぞれメモリアドレス(n+1)及びメモリアドレス(n+2)となる。なお、メモリグループ3内におけるワードデータ1A、ワードデータ1B、及びワードデータ1Cの並びは一例であり、例えばワードデータ1Cをメモリアドレスnに配置し、ワードデータ1Aをメモリアドレス(n+1)に配置し、ワードデータ1Bをメモリアドレス(n+2)に配置してもよい。
【0048】
図4は、データアドレスによって表されるデータのアドレスマップと、メモリアドレスによって表されるメモリ空間上におけるデータのアドレスマップとの対応例を示す図である。各々のメモリグループ3に含まれるワードデータ1Aは、Aブロックに含まれるデータを格納し、各々のメモリグループ3に含まれるワードデータ1Bは、Bブロックに含まれるデータを格納する。
【0049】
次に、図4に示すようなメモリ構造を用いたワードデータ1のデータ書き換え方法について詳細に説明する。
【0050】
図5は、指定されたブロックグループの指定されたデータアドレスのワードデータ1に対するデータの書き込み要求を受け付けた場合に、CPU11によって実行されるデータ書き換え処理の流れの一例を示すフローチャートである。CPU11は、不揮発性メモリ13からプログラムを読み込んでデータ書き換え処理を実行する。
【0051】
なお、CPU11は、データの書き込みを行うブロックグループのデータアドレスと対応付けられたメモリグループ3に対して、図5に示すデータ書き換え処理を実行する。
【0052】
ステップS10において、CPU11は、メモリグループ3に初期状態のワードデータ1C、すなわち、空のワードデータ1Cが存在するか否かを判定する。空のワードデータ1Cが存在する場合にはステップS20に移行する。
【0053】
ステップS20において、CPU11は、空のワードデータ1Cにデータを書き込む。この場合、CPU11は、指定されたブロックグループをワードデータ1Cのブロックビットに書き込むと共に、指定されたブロックグループの指定されたデータアドレスにおける最新データがワードデータ1Cに格納されたことを示すように、ワードデータ1Cの最新性ビットを設定する。また、CPU11は、ワードデータ1Cに書き込んだデータの妥当性に対応した値をワードデータ1Cの有効性ビットに設定する。以上により、図5に示すデータ書き換え処理を終了する。
【0054】
一方、ステップS10の判定処理において、メモリグループ3に空のワードデータ1Cが存在しないと判定された場合にはステップS30に移行する。
【0055】
ステップS30において、CPU11は、指定されたブロックグループと同じブロックグループのデータがメモリグループ3に複数存在するか否かを判定する。
【0056】
指定されたブロックグループと同じブロックグループのデータがメモリグループ3に複数存在する場合にはステップS40に移行する。
【0057】
この場合、ワードデータ1Cには、既に何れかのブロックグループに属するデータアドレスのデータが書き込まれていることになる。したがって、ステップS40において、CPU11は、指定されたブロックグループと同じブロックグループのデータが書き込まれているメモリグループ3内の複数のワードデータ1のうち、最も古いデータが書き込まれているワードデータ1に対してデータを書き込んでデータの書き換えを行う。
【0058】
ワードデータ1に何れのブロックグループに属するデータアドレスのデータが書き込まれているかは、ワードデータ1のブロックビットを参照すればよい。また、指定されたブロックグループの指定されたデータアドレスにおけるデータの更新順は、ワードデータ1の最新性ビットを参照すればよい。
【0059】
更に、CPU11は、ワードデータ1に書き込んだデータの妥当性に応じた値を、データを書き込んだワードデータ1の有効性ビットに設定すると共に、指定されたブロックグループの指定されたデータアドレスにおける最新データが格納されたことがわかるように、データを書き込んだワードデータ1の最新性ビットを設定する。以上により、図5に示すデータ書き換え処理を終了する。
【0060】
一方、ステップS30の判定処理において、指定されたブロックグループと同じブロックグループのデータがメモリグループ3に複数存在しないと判定された場合、ステップS50に移行する。
【0061】
この場合、メモリグループ3を構成するワードデータ1には、指定されたブロックグループとは異なるブロックグループに属するデータアドレスのデータが複数書き込まれていることになる。したがって、ステップS50において、CPU11は、指定されたブロックグループとは異なるブロックグループのデータが書き込まれているメモリグループ3内の複数のワードデータ1のうち、最も古いデータが書き込まれているワードデータ1に対してデータを書き込んでデータの書き換えを行う。
【0062】
ワードデータ1に何れのブロックグループに属するデータアドレスのデータが書き込まれているかは、ワードデータ1のブロックビットを参照すればよい。また、指定されたブロックグループとは異なるブロックグループに属するデータアドレスにおけるデータの更新順は、ワードデータ1の最新性ビットを参照すればよい。
【0063】
更に、CPU11は、ワードデータ1に書き込んだデータの妥当性に応じた値を、データを書き込んだワードデータ1の有効性ビットに設定すると共に、指定されたブロックグループの指定されたデータアドレスにおける最新データが格納されたことがわかるように、データを書き込んだワードデータ1の最新性ビットを設定する。また、CPU11は、書き込んだデータが指定されたブロックグループのデータであることがわかるように、データを書き込んだワードデータ1のブロックビットを更新する。以上により、図5に示すデータ書き換え処理を終了する。
【0064】
すなわち、CPU11は、指定されたデータアドレスのデータを更新する場合、指定されたデータアドレスのデータを格納するワードデータ1を含んだメモリグループ3のうち、更新対象であるデータアドレスの更新前のデータが格納されたワードデータ1、及び更新対象であるデータアドレスのデータを格納するワードデータ1とは異なるブロックグループに属するデータアドレスの最新データが格納されたワードデータ1以外のワードデータ1に、指定されたデータアドレスの更新後のデータを書き込む処理を実行する。
【0065】
図6は、図5に示したデータ書き換え処理に沿って、指定されたデータアドレスのデータを更新する一例を示す図である。
【0066】
図6のメモリグループ3におけるワードデータ1内のアルファベットと数字を組み合わせた記号は、該当するワードデータ1における[ブロックビット]-[最新性ビット]の組み合わせを表し、説明の便宜上、「格納ステータス」ということにする。例えば格納ステータスの表記が“A-00”である場合、ブロックビットがAブロックを表し、最新性ビットがb00を表していることを示す。
【0067】
今、更新対象のデータアドレスと対応付けられたメモリグループ3内に、格納ステータスが“A-00”であるワードデータ1Aと、格納ステータスが“B-00”であるワードデータ1Bと、空のワードデータ1Cが含まれているとする。
【0068】
この状態において、メモリグループ3と対応付けられたAブロックに属するデータアドレスに対してデータの書き込み要求が行われた場合、まず、空のワードデータ1Cにデータが書き込まれ、格納ステータスが“A-01”に設定される。
【0069】
次に、メモリグループ3と対応付けられたAブロックに属するデータアドレスに対してデータの書き込み要求が再度行われた場合、Aブロックのデータが書き込まれているワードデータ1のうち、最も古いデータが書き込まれているワードデータ1Aにデータが書き込まれ、格納ステータスが“A-10”に設定される。
【0070】
次に、メモリグループ3と対応付けられたBブロックに属するデータアドレスに対してデータの書き込み要求が行われた場合、Bブロックとは異なるブロックのデータが書き込まれているワードデータ1、すなわち、Aブロックのデータが書き込まれているワードデータ1のうち、最も古いデータが書き込まれているワードデータ1Cにデータが書き込まれ、格納ステータスが“B-01”に設定される。
【0071】
次に、メモリグループ3と対応付けられたBブロックに属するデータアドレスに対してデータの書き込み要求が再度行われた場合、Bブロックのデータが書き込まれているワードデータ1のうち、最も古いデータが書き込まれているワードデータ1Bにデータが書き込まれ、格納ステータスが“B-10”に設定される。
【0072】
このように、各々のメモリグループ3には、指定されたデータアドレスの更新前のデータと更新後のデータが記憶され、データバックアップを行うことができる。
【0073】
また、データの書き込み要求が発生する毎に同じメモリグループ3内でデータの書き込みが行われるワードデータ1が順次遷移していくため、データの書き換え回数を同じメモリグループ3の各々のワードデータ1に均等に分散することができる。したがって、データの書き込み要求が発生する毎に、同じワードデータ1の内容を書き換える場合と比較して、1つのワードデータ1あたりの書き換え回数を低減することができる。
【0074】
例えば特定のメモリグループ3と対応付けられたAブロック及びBブロックの各々のデータアドレスに対して100回ずつデータの書き換え要求が発生したとする。この場合、各々のワードデータ1におけるデータの書き換え回数は、[200(メモリグループ3に対して発生するデータの書き換え回数)/3(メモリグループ3を構成するワードデータ1の数)]=67回(小数点第一位を四捨五入した値)となる。
【0075】
これに対して、特許文献1におけるメモリに対するデータの書き換え処理では、最大100回の書き換え回数が発生する。したがって、データバックアップを伴う従来のデータ書き換え方法に比べて、1つのワードデータ1あたりデータの書き換え回数が33%低減する。
【0076】
なお、本実施形態では一例として、3つのワードデータ1を用いてメモリグループ3を構成したが、1つのメモリグループ3内に、例えばワードデータ1Cのような予備のワードデータ1を複数用意してもよく、また、ワードデータ1A及びワードデータ1Bのように、グループ分けされたブロックグループにそれぞれ属するデータアドレスと対応付けられたデータをそれぞれ1つずつ格納したワードデータ1を3つ以上用意してもよい。メモリグループ3に含まれるワードデータ1を増やすことによって、メモリグループ3内の各々のワードデータ1におけるデータの書き換え回数が低減する。したがって、メモリグループ3に含まれる各々のワードデータ1におけるデータの書き換え回数が予め設定した最大回数以下となるように、メモリグループ3に含まれるワードデータ1の数を設定すればよい。
【0077】
以上、実施形態を用いてコンピュータ10における不揮発性メモリ13のデータ書き換え処理の一形態について説明したが、開示したデータ書き換え処理の形態は一例であり、実施形態に記載の範囲に限定されない。本開示の要旨を逸脱しない範囲で実施形態に多様な変更又は改良を加えることができ、当該変更又は改良を加えた形態も開示の技術的範囲に含まれる。
【0078】
上記の実施形態では、一例として、データ書き換え処理をソフトウェアで実現する形態について説明した。しかしながら、図5に示したデータ書き換え処理のフローチャートと同等の処理をハードウェアで処理させるようにしてもよい。この場合、データ書き換え処理をソフトウェアで実現した場合と比較して処理の高速化が図られる。
【0079】
上記の実施形態において、プロセッサとは広義的なプロセッサを指し、汎用的なプロセッサ(例えばCPU11)や、専用のプロセッサ(例えば GPU:Graphics Processing Unit、ASIC:Application Specific Integrated Circuit、FPGA:Field Programmable Gate Array、プログラマブル論理デバイス、等)を含むものである。
【0080】
また、上記の実施形態におけるプロセッサの動作は、1つのプロセッサによって成すのみでなく、物理的に離れた位置に存在する複数のプロセッサが協働して成すものであってもよい。
【0081】
上記の実施形態では、不揮発性メモリ13にプログラムが記憶されている例について説明した。しかしながら、プログラムの記憶先は不揮発性メモリ13に限定されない。本開示のプログラムは、コンピュータ10で読み取り可能な記憶媒体に記録された形態で提供することも可能である。
【0082】
例えばプログラムをCD-ROM(Compact Disk Read Only Memory)、DVD-ROM(Digital Versatile Disk Read Only Memory)、及びブルーレイディスクのような光ディスクに記録した形態で提供してもよい。また、プログラムを、USB(Universal Serial Bus)メモリ及びメモリカードのような可搬型の半導体メモリに記録した形態で提供してもよい。不揮発性メモリ13、CD-ROM、DVD-ROM、ブルーレイディスク、USB、及びメモリカードは非一時的(non-transitory)記憶媒体の一例である。
【0083】
更に、コンピュータ10は通信ユニット16を通じて、通信回線に接続された外部装置からプログラムをダウンロードし、ダウンロードしたプログラムを不揮発性メモリ13に記憶してもよい。この場合、CPU11は、外部装置からダウンロードしたプログラムを不揮発性メモリ13から読み込んでデータ書き換え処理を実行する。
【0084】
以下に本実施形態に係る付記を示す。
【0085】
(付記1)
複数のブロックを識別するブロック番号と各々のブロックに対して一意に設定されたアドレスによって表される各々のデータアドレスと対応付けられたデータを格納するワードデータを含むメモリ空間に、
前記複数のブロックを2つ以上のブロックグループに分けた場合、各々の前記ブロックグループにそれぞれ属する前記データアドレスと対応付けられたデータをそれぞれ1つずつ格納した複数のワードデータと、少なくとも1つ以上の予備のワードデータとによって構成されるメモリグループを設けたメモリ構成において、
指定された前記データアドレスのデータを更新する場合、指定された前記データアドレスのデータを格納するワードデータを含んだ前記メモリグループのうち、更新対象である前記データアドレスの更新前のデータが格納されたワードデータ、及び更新対象である前記データアドレスのデータを格納するワードデータとは異なる前記ブロックグループに属する前記データアドレスの最新データが格納されたワードデータ以外のワードデータに、指定された前記データアドレスの更新後のデータを書き込む処理をコンピュータが実行する
データ書き換え方法。
【0086】
(付記2)
前記メモリグループに含まれる各々のワードデータには、
格納しているデータに対応付けられている前記データアドレスが属する前記ブロックグループを表すブロック領域と、
前記データアドレスによって表されるデータの更新順を表す順序領域と、
が含まれ、
前記ブロック領域と前記順序領域を参照して、指定された前記データアドレスに対する更新後のデータを書き込むワードデータを選択する処理をコンピュータが実行する
付記1に記載のデータ書き換え方法。
【0087】
(付記3)
前記メモリグループに含まれる各々のワードデータにおけるデータの書き換え回数が予め定めた回数以下となるように、前記メモリグループに含まれるワードデータの数が設定されている
付記1又は付記2に記載のデータ書き換え方法。
【符号の説明】
【0088】
1(1A、1B、1C) ワードデータ
3 メモリグループ
10 コンピュータ
11 CPU
12 RAM
13 不揮発性メモリ
14 I/O
15 バス
16 通信ユニット
20 第1領域
21 第2領域
22 対象ポインタ領域
23 更新ポインタ領域
24 有効性情報
25 最新情報
30 データ領域
31 対象ブロック
32 更新ブロック
図1
図2
図3
図4
図5
図6
図7
図8