JP6332077B2 - データ管理装置およびプログラム - Google Patents

データ管理装置およびプログラム Download PDF

Info

Publication number
JP6332077B2
JP6332077B2 JP2015033147A JP2015033147A JP6332077B2 JP 6332077 B2 JP6332077 B2 JP 6332077B2 JP 2015033147 A JP2015033147 A JP 2015033147A JP 2015033147 A JP2015033147 A JP 2015033147A JP 6332077 B2 JP6332077 B2 JP 6332077B2
Authority
JP
Japan
Prior art keywords
data
written
block
write request
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015033147A
Other languages
English (en)
Other versions
JP2016157186A (ja
Inventor
洋平 藤田
洋平 藤田
康志 神田
康志 神田
常雄 山本
常雄 山本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to JP2015033147A priority Critical patent/JP6332077B2/ja
Priority to DE102016202684.4A priority patent/DE102016202684B4/de
Publication of JP2016157186A publication Critical patent/JP2016157186A/ja
Application granted granted Critical
Publication of JP6332077B2 publication Critical patent/JP6332077B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ブロック単位でデータの消去が行われるブロックを3個以上備える書換え可能な不揮発性の記憶装置にデータを書込む技術に関する。
通信機器、情報処理機器等の様々な分野の電子機器において、書換え可能な不揮発性の記憶装置が用いられている。このような書換え可能な不揮発性の記憶装置にデータを書込む場合、データの書込み途中で電源が切断されると、データが消失する。
そこで、特許文献1に開示されている技術では、書込み対象のデータエリアにデータを書込む前に書込み対象のデータエリアのデータを所定エリアにバックアップし、書込み対象のデータエリアの書込み状態を表わすフラグを「書込み中」に設定してから書込み対象のデータエリアにデータを書込んでいる。データの書込みが終了するとフラグはクリアされ、「書込み済み」であることを表わす。
書込み対象のデータエリアにデータを書込んでいる途中で電源が切断されると、書込み対象のデータエリアの書込み状態を表わすフラグは「書込み中」を示しているので、所定エリアにバックアップされているデータを使用して書込み対象のデータエリアのデータを復旧する。
特開2007−328438号公報
書換え可能な不揮発性の記憶装置として、フラッシュメモリのようにブロック単位でデータを消去してからデータを書込む記憶装置に特許文献1の技術を適用することが考えられる。この場合、データを書込むブロックとは別に書込み状態を表わすフラグのために1ブロックを使用することはせず、データと同じブロックにフラグを設定することが考えられる。
しかし、データの書込み処理においてブロックのデータを消去中に電源が切断されると、フラグの値が不定になる。フラグの値が不定になると、書込み対象のブロックの書込み状態を正しく判定できない。
そのため、書込み対象のブロックに正常に新しいデータが書込まれていないにも関わらず、所定エリアにバックアップしている元のデータを使用してデータを復旧できないことがある。
本発明は、上記課題を解決するためになされたものであり、ブロック単位でデータの消去が行われる記憶装置において、ブロックのデータを消去中に電源が切断されてもデータを復旧する技術を提供することを目的とする。
本発明のデータ管理装置は、ブロック単位でデータの消去が行われるブロックを3個以上備える書換え可能な不揮発性の記憶装置と、記憶装置からのデータの読出しと記憶装置へのデータの書込みとを実行する制御手段と、を備えている。
3個以上のブロックは、予め論理的に環状に一方向に結合されている。記憶装置の各ブロックは、環状に一方向に結合されたブロックの結合方向において各ブロックの次のブロックにおける書込み状態を表わす管理情報が書込まれる管理部と、書込み要求で受け付ける書込み要求データが書込まれるデータ部とを有している。
制御手段は、ブロックに書込み要求データを書込むときの予め設定された特定のデータ書込み順序である特定順序とブロックの結合方向とにしたがって、ブロックに書込み要求データを書込む。
この構成によれば、書込み対象のブロックのデータを消去している途中で電源が切断されても、書込み対象のブロックの書込み状態が書込み中であることは、ブロックの結合方向において書込み対象のブロックの1個前のブロックに管理情報として残っている。したがって、書込み対象のブロックの1個前のブロックに残っている管理情報により、書込み対象のブロックが書込み中であることを正しく判断できる。
本発明の構成に対し、データと同じブロックに、このブロックの書込み状態を表わす管理情報を書込む構成の場合、書込み対象のブロックにデータを書込むために書込み対象のブロックのデータを消去している途中で電源が切断されると、書込み対象のブロックの書込み状態を表わす管理情報は不定になる。例えば、書込み対象のブロックの管理情報が、正常にデータが書込まれたことを表わす「書込み済み」になると、書込み途中のブロックにデータを正常に書き込めたと誤判定してしまうことがある。
書込み対象以外の他のブロックのデータは正常に書込まれているので、他のブロックの管理情報は「書込み済み」になっている。この場合、書込み対象のブロックを含むすべてのブロックの管理情報が「書込み済み」になるので、書込み対象のブロックのデータを消去している途中で電源が切断されたことが管理情報として残らない。その結果、書込み対象のブロックのデータは消去途中のままになり、復旧できない。
これに対し、本発明では、前述したように、書込み対象のブロックのデータを消去している途中で電源が切断されても、書込み対象のブロックの書込み状態が書込み中であることは、結合方向において書込み対象のブロックの1個前のブロックに管理情報として残っている。
さらに、本発明では、3個以上のブロックが環状に一方向に結合されているので、結合方向において、書込み対象のブロックの前に少なくとも2個以上のブロックが存在する。書込み対象のブロックの2個前のブロックの管理情報は、書込み対象のブロックの1個前のブロックにデータが正常に書込まれたことを表わしており、例えば「書込み済み」になっている。
すなわち、書込み対象のブロックのデータを消去している途中で電源が切断された状態では、書込み対象のブロックの前の2個のブロックの管理情報は、結合方向において、「書込み済み」、「書込み中」になっている。この2個の管理情報はそれぞれ、結合方向において次のブロックの書込み状態を正しく表わしている。つまり、結合方向において、「書込み済み」、「書込み中」になっている管理情報が正しい順序である。
これに対し、データを消去している途中で電源が切断されたために書込み対象のブロックの管理情報が不定になり、例えば「書込み中」または「書込み済み」になると、書込み対象のブロックの1個前のブロックと書込み対象のブロックの管理情報は、結合方向において、「書込み中」、「書込み中」、あるいは「書込み中」、「書込み済み」の順序になる。この管理情報の順序の場合、後ろの管理情報は正しくないと判断できる。
したがって、結合方向において管理情報の正しい順序に基づいて、どのブロックのデータを消去している途中で電源が切断されたか、つまりどのブロックが書込み対象であったかを特定できる。
さらに、環状に一方向に結合されたブロックに特定順序と結合方向とにしたがってデータを書込むので、例えば次に書込み要求データを書込む対象となるブロックの書込み前のデータと同じ種類のデータが他の少なくとも1個のブロックに存在するようにデータを冗長化することが考えられる。
これにより、書込み対象となるブロックのデータを消去中または書込み中で電源が切断されても、他の少なくとも1個のブロックに存在する同じ種類のデータにより元のデータを復旧できる。
そして、例えば、n種類のデータに対して(n+1)個のブロックを用意し、n種類のデータを1種類ずつ1個のブロックに特定順序にしたがって結合方向に書込めば、書込み対象のブロックのデータ種類と同じデータ種類のデータが書込み対象のブロックの次のブロックに存在することになる。そして、特定順序にしたがって結合方向にデータを順次ブロックに書込むにしたがい、同じデータ種類のブロックの組合せは結合方向に移動する。
これにより、書込み対象のブロックのデータを消去している途中で電源が切断されても、前述したように管理情報の順序に基づいて書込み対象のブロックを特定した上で、書込み対象のブロックの次のブロックに書込まれているデータにより、書込み対象のブロックのデータを復旧できる。書込み対象以外のブロックのデータは消去されずに残り、電源が切断されても消失するおそれがないため、書込み対象以外のブロックのデータを復旧するためにブロックを用意する必要はない。
これにより、n種類のデータに対して1個多い(n+1)個のブロックを用意すれば、書込み対象のブロックの冗長性を確保した上で、記憶装置の容量を極力効率よく使用することができる。
さらに、環状に一方向に結合された結合方向にしたがってブロックにデータを書込むので、各ブロックに同じ頻度でデータを書込むことができる。これにより、複数のブロックのうち特定のブロックの書込み頻度が増加することを防止し、記憶装置の使用寿命を延ばすことができる。
尚、特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
第1実施形態のデータ管理装置の全体構成を示すブロック図。 管理情報によるブロックの結合状態を示す模式図。 ブロックの管理部の構成を示す模式図。 データ書込み処理を示すフローチャート。 データ書込み処理を示すブロックの模式図。 データ書込み処理を示すブロックの模式図。 データ復旧処理を示すフローチャート。 データ読出し処理を示すフローチャート。 第2実施形態のデータ書込み処理を示すブロックの模式図。 第3実施形態のデータ書込み処理を示す模式図。 第4実施形態のデータ書込み処理を示すブロックの模式図。
以下に本発明の実施形態を図面と共に説明する。
[1.第1実施形態]
[1−1.構成]
図1は、ブロック単位でデータの消去が行われるブロックを3個以上備える書換え可能な不揮発性の記憶装置としてフラッシュメモリを搭載しているデータ管理装置2の全体構成を示すブロック図である。データ管理装置2は、CPU10と、RAM12と、ROM14と、フラッシュコントローラ20と、フラッシュメモリ30と、入出力インターフェース(I/O)50とを備えている。電源60は、データ管理装置2の各部に電力を供給する。
データ管理装置2は、例えば車両に搭載されて用いられる情報処理システムの一部を構成する装置である。データ管理装置2は、車両に搭載されて用いられる装置である必要はなく、車載機器以外でも様々な情報処理システムの一部を構成する装置であってもよい。
CPU10は、ROM14に記憶されているフラッシュドライバソフト16とアプリケーションソフト18とを実行することにより、データ管理装置2を統括制御する。CPU10は、フラッシュドライバソフト16を実行することにより、アプリケーションソフト18またはデータ管理装置2以外の図示しない他の装置からのフラッシュメモリ30へのアクセス要求に応じて、フラッシュメモリ30に対するデータの読出しと書込みとを制御する。
RAM12はCPU10により使用される作業領域である。またRAM12はフラッシュメモリ30から読出されたデータと、フラッシュメモリ30に書込むデータを一時的に保持するバッファとしても機能する。
フラッシュコントローラ20は、CPU10から与えられる指令に基づいてフラッシュメモリ30に対する書込み処理、読出し処理、消去処理等を実行する。フラッシュメモリ30は、最小消去単位であるブロック40をm個有している。1ブロックあたりの容量、ブロック40に対するデータの書込みの最小単位はフラッシュメモリの仕様によって異なる。
図2に示すように、本実施形態におけるフラッシュメモリ30のブロック40は、予め論理的に環状に一方向に結合されている。図2では説明を簡単にするために、3個のブロック40を示している。
各ブロック40は、ブロック40に記憶されているデータの種類を示すIDが書込まれるID部42と、書込み要求で書込み要求データが書込まれるデータ部44と、管理情報が書込まれる管理部46とを有している。データAとデータA’とのID部42には同じデータ種類を示すID=Aが設定される。
管理部46に書込まれている管理情報は、ブロック40の結合方向において、該当する管理情報が書込まれているブロック40の次のブロック40の書込み状態を表わしている。
データAが記憶されているブロック40の管理情報はデータA’が記憶されているブロック40の書込み状態を表わしている。データA’が記憶されているブロック40の管理情報はデータBが記憶されているブロック40の書込み状態を表わしている。データBが記憶されているブロック40の管理情報はデータAが記憶されているブロック40の書込み状態を表わしている。このように、ブロック40は環状に一方向に結合されている。
管理情報には、「書込み済み」と「未書込み」と「書込み中」の3種類が設定されている。管理情報として「書込み済み」は、対象となるブロック40のデータが正常に書込まれたことを表わしている。図2では、データA'とデータBとが書込まれているブロック40はデータが正常に書込まれたブロックである。
管理情報として「未書込み」は、対象となるブロック40が次にデータが書込まれる書込み対象であり、まだデータが書込まれていないブロックであることを表わしている。図2では、データAが書込まれているブロック40が次にデータが書込まれる書込み対象である。
環状に一方向に結合されたブロック群においては、「未書込み」の管理情報が書込まれているブロック40は、環状に一方向に結合されたブロック群においてデータが書込まれた最新のブロック40である。これに対し、管理情報として「未書込み」の対象となるブロック40は、データが書込まれた最古のブロック40である。したがって、同じデータ種類であってもデータA’の方がデータAよりも新しいデータである。
第1実施形態では、n種類のデータに対して1個多い(m=n+1)個のブロックを用意している。例えば、図2に示すように、ID=A、ID=Bのように2種類のデータ種類であれば3個のブロック40を用意している。そして、書込み要求の書込み順序がどのような要求順序であっても、環状に一方向に結合された結合方向にしたがって、予め設定された特定のデータ書込み順序である特定順序として、ID=A、ID=Bの順序となるように、ブロック40に書込み要求データを書込む。
これにより、ブロック40の結合方向において、書込み対象のブロック40の書込み前のデータ種類と同じデータ種類のデータが書込み対象のブロック40の次のブロックに存在することになる。
図2では、管理情報として「未書込み」の対象となるデータAが書込まれているブロック40の次のブロック40にデータA'が書込まれている。
図2には示されていないが、管理情報として「書込み中」は、書込み対象のブロック40のデータを消去中または書込み要求データを書込み中であることを表わしている。
図3に示すように、管理部46は2個のフラグ1とフラグ2とで構成されている。ブロック40のデータを消去すると、管理部46のフラグ1、2も消去され、フラグ1、2はともに消去状態になる。フラグ1、2がともに消去状態である管理部46が表わす管理情報は「未書込み」である。フラグ1、2に値を書込むと、フラグ1、2は非消去状態になる。
管理部46が「未書込み」の状態から、例えば、フラグ1=消去状態、フラグ2=非消去状態のようにフラグ1、2の一方を消去状態から非消去状態に設定すると、管理部46が表わす管理情報は「書込み中」になる。
管理部46が「書込み中」の状態から、例えば、フラグ1=非消去状態、フラグ2=非消去状態のようにフラグ1、2の両方を非消去状態に設定すると、管理部46が表わす管理情報は「書込み済み」になる。
このように、管理部46が表わす管理情報は、ブロック40のデータが消去されてデータが書込まれ、次に同じブロック40のデータが消去されるまで、「未書込み」、「書込み中」、「書込み済み」と変化する。
[1−2.処理]
(1)データ書込み処理
CPU10が実行するデータ書込み処理について説明する。図4のフローチャートは、CPU10が実行するフラッシュドライバソフト16が、CPU10が実行するアプリケーションソフト18またはデータ管理装置2以外の他の装置からフラッシュメモリ30に対する書込み要求を受け付けると実行される。
図4と後述する図7および図8のフローチャートにおいて「S」はステップを表わしている。また、図5および図6と後述する図9および図11とにおいて、ブロック40のID部42の記載を省略している。
図4のS400において、CPU10は、ブロック40の管理情報の順序に基づいて次にデータを書込むブロック40を特定する。
例えば、図5では、手順(1)において、ブロック#2の管理情報が「書込み済み」であり、ブロック#3の管理情報が「未書込み」である。このように、管理情報が「書込み済み」、「未書込み」の順序になっているブロック#2、#3において、ブロック#3の「未書込み」が示すブロック#1が次にデータを書込む対象のブロックとして決定される。
S402において、CPU10は、ブロック40に書込まれている管理情報の順序と、ブロック40に書込まれているデータのIDの順序と、予め設定された特定のデータ書込み順序である特定順序とに基づいて、次に書込むべきデータのIDを決定する。
例えば、図5の手順(1)において、管理情報が「書込み済み」、「未書込み」の順序になっているブロック#2、#3のIDの順序は、ID=A、ID=Bになっている。そして、特定順序はID=A、ID=Bである。したがって、次にブロック#1に書込むべきデータのIDは「A」である。
S404において、CPU10は、S402で決定した次に書込むべきデータのIDと書込み要求データのIDとが一致しているか否かを判定する。S402で決定したIDは「A」である。図5では、最初にIDが「A」のデータA''の書込み要求を受け付けているので、データのIDは一致している(S404:Yes)。
この場合、CPU10は、次の手順(2)において、ブロック#3の管理情報を「書込み中」に設定する。
次に、CPU10は、手順(3)においてブロック#1のデータを消去することにより、手順(4)に示すように、ブロック#1の管理情報を「未書込み」に設定する。これにより、次にデータを書込むブロックはブロック#2になる。
そして、CPU10は、手順(4)において書込み要求データであるデータA''をブロック#1に書込む。尚、図5の手順(4)においてブロック#1のデータが(データA'')になっているのは、データの書込み中であることを表わしている。
手順(5)においてブロック#1にデータA''の書込みが終了すると、CPU10は、手順(6)においてブロック#3の管理情報を「書込み中」から「書込み済み」に設定する。これにより、ブロック#1において書込み要求データであるデータA''の書込みが完了する(S408)。
手順(6)においてブロック#1へのデータA''の書込みが正常に完了し、次にデータB'の書込み要求を受け付けると、前述したデータA''の書込みと同様に、管理情報の順序と、書込まれているデータのIDの順序と、特定順序とに基づいて、次に書込むべきデータのIDは「B」に決定される。次に書込むべきデータのIDと書込み要求データのIDとが同じ「B」であるから、手順(7)〜(11)にしたがってブロック#2にデータB'が書込まれる。
図6に、次に書込むべきデータのIDと書込み要求データのIDとが一致しない(S404:No)例を示す。
図6の手順(1)において、図5の手順(1)と同様にデータA''の書込み要求を受け付けると、CPU10は、図5と同様に手順(1)〜(6)にしたがってブロック#1にデータA''を正常に書込む。
データA''の次にデータA'''の書込み要求を受け付けると、管理情報の順序と、書込まれているデータのIDの順序と、特定順序とにより決定した次に書込むべきデータのIDである「B」と一致しない(S404:No)。この場合、CPU10は、データA''の次にデータA'''の書込み要求を受け付けても、データA''の次にIDが「B」のデータを「未書込み」が示すブロック#2に書込むと判断する。
CPU10は、各ブロックのIDを検索してIDが「B」の最新のデータが書き込まれているブロック#3のデータを読出す。そして、CPU10は、図6の手順(7)〜(11)において、ブロック#3のID=Bのデータを、書込みの実行順序が特定順序となるように、要求順序であるデータA''とデータA'''との間に補完データとしてブロック#2に書込む(S406)。これにより、手順(11)において、ブロック#2、#3のデータのIDは「B」になる。
そして、ブロック#1の管理情報が「書込み済み」、ブロック#2の管理情報が「未書込み」であり、ブロック#1のIDが「A」、ブロック#2のIDが「B」であり、特定順序がID=「A」、ID=「B」であるから、次にブロック#3に書込むべきデータのIDは「A」である。
したがって、書込み要求データとしてデータA''の次に受け付けたデータA'''のIDと一致する(S404:Yes)。そこで、CPU10は、手順(12)〜(16)において、ブロック#3にデータA'''を書込む。
(2)データ復旧処理
CPU10が実行するデータ復旧処理について説明する。図7のフローチャートは、電源切断から復帰したタイミング、つまり電源60が再投入されてデータ管理装置2が再起動するタイミングで実行される。
図7のS410において、CPU10は、管理情報が「書込み済み」、「書込み中」の順序になっているブロック40を検索する。
例えば、図5の手順(3)においてブロック#1のデータを消去中に電源60が切断されると、ブロック#1のデータは不定になる。この場合、ブロック#1の管理情報は「書込み済み」、「未書込み」、「書込み中」のいずれにもなり得る。ブロック#1の管理情報が「書込み中」になると、「書込み中」が書込まれているのはブロック#1とブロック#3との両方になる。
ブロックに書込まれている管理情報として「書込み中」が結合方向において次のブロックの書込み状態を正しく表わしている場合、結合方向において「書込み中」が書込まれているブロックの前のブロックの書込み情報は「書込み済み」になっているはずである。
したがって、ブロック#1の管理情報が「書込み中」であり、結合方向においてブロック#1の前のブロック#3に書込まれている書込み情報が「書込み中」の場合、ブロック#1の管理情報は正しくないと判断できる。
結合方向において、管理情報が「書込み済み」、「書込み中」の正しい順序になっているブロックは、ブロック#2、ブロック#3である。この場合、CPU10は、ブロック#3の「書込み中」が正しい管理情報であると判断する。
このように、管理情報が「書込み済み」、「書込み中」の順序になっているブロックが存在すると(S412:Yes)、この順序の「書込み中」により示されるブロックに対する書込み処理中に、何らかの原因で書込み処理が中断されたと判断できる。そして、書込み処理が中断されたブロックのデータを復旧する処理が実行される。
この場合、CPU10は、「書込み済み」、「書込み中」の順序になっている管理情報の「書込み中」が示すブロックのデータを消去する(S414)。データが消去されたブロックの管理情報は「未書込み」になる。例えば、図5の手順(3)で電源が切断された場合、CPU10は、ブロック#3の「書込み中」が示すブロック#1のデータを消去する。
そして、CPU10は、「書込み済み」、「書込み中」の順序になっている管理情報が書込まれているブロックのデータのIDの順序と、特定順序とに基づいて、「書込み中」が示すブロックに書込んで復旧すべきデータのIDを決定する(S416)。CPU10は、ブロック群のうち書込み処理が中断したブロック以外のブロックから、決定したIDのデータのうち最新のデータを読み出す(S418)。
例えば、図5の手順(3)で電源が切断された場合、「書込み済み」、「書込み中」の順序になっている管理情報が書込まれているブロック#2、#3のデータのIDの順序は、ID=「A」、ID=「B」である。そして、特定順序はID=「A」、ID=「B」である。
したがって、「書込み中」が示すブロックに書込んで復旧すべきデータのIDは「A」である。CPU10は、書込み処理が中断したブロック#1以外のブロックでIDが「A」のデータのうち最新のデータA'をブロック#2から読み出す。
そして、CPU10は、「書込み済み」、「書込み中」の順序になっている管理情報の「書込み中」が示すブロックにS418で読み出したデータを書込む(S420)。さらに、CPU10は、「書込み中」が書込まれているブロックの管理情報を「書込み済み」に設定する(S420)。
(3)データ読出し処理
CPU10が実行するデータ読出し処理について説明する。図8のフローチャートは、フラッシュドライバソフト16がアプリケーションソフト18またはデータ管理装置2以外の他の装置からフラッシュメモリ30からの読出し要求を受け付けると実行される。図8のフローチャートにおいて「S」はステップを表わしている。
図8のS420において、CPU10は、読出し要求のデータのIDと一致するIDのブロックからデータを読出す。
読出し要求と同じIDのブロックが複数ある場合、データ管理装置2は、例えば管理情報として「未書込み」が書込まれているブロックから結合方向を逆方向に検索し、最初に読出し要求のデータのIDと一致するIDのブロックからデータを読出す。管理情報として「未書込み」が書込まれているブロックに最新のデータが書込まれているので、結合方向を逆方向に検索することにより、読出し要求のデータのIDと一致するIDの最新のデータを読み出すことができる。
[1−3.効果]
以上説明した第1実施形態によれば、以下の効果を得ることができる。
(1)3個以上のブロック40が環状に一方向に結合されており、管理情報がブロックの結合方向において次のブロックの書込み状態を表わしている。したがって、例えば、図5の手順(3)において、ブロック#2、#3に書込まれている管理情報の「書込み済み」、「書込み中」の順序に基づいて、ブロック#1の書込み状態が「書込み中」であることをブロック#3の管理情報が表わしていると判断できる。
これにより、ブロック#1にデータを書込むためにブロック#1のデータを消去している途中で電源60が切断され、ブロック#1の管理部46の管理情報が不定になっても、ブロック#3の管理情報から、ブロック#1のデータは書込み中であることが分かる。
(2)環状に一方向に結合されたブロック40に書込み要求データを書込むときの予め設定された特定順序、例えばデータのIDとして「A」、「B」の順序と、ブロック40の結合方向とにしたがって、ブロック40にデータを書込んでいる。さらに、次に書込み要求データを書込む対象となるブロック40の書込み前のデータと同じ種類のデータが他の少なくとも1個のブロック40に存在するようにデータを冗長化している。
これにより、書込み対象となるブロック40のデータを消去中または書込み中で電源60が切断されても、他の少なくとも1個のブロック40に存在する同じ種類のデータにより元のデータを復旧できる。
(3)電源60が切断されたときに消失のおそれのある書込み対象のブロック40のデータだけを冗長化すればよいので、書込み対象以外のブロック40のデータを冗長化する必要はない。第1実施形態では、n種類のデータに対して1個多い(m=n+1)個のブロック40を用意し、n種類のデータを1種類ずつ1個のブロック40に、ブロック40に書込むときの特定順序にしたがってブロック40の結合方向に書込み要求データを書込んでいる。
これにより、書込み対象のブロック40の書込み前のデータ種類と同じデータ種類のデータが書込み対象のブロックの40次のブロック40に存在することになるので、書込み対象のブロック40のデータの冗長性を確保した上で、フラッシュメモリ30の容量を極力効率よく使用できる。
(4)環状に一方向に結合された結合方向にしたがってブロック40にデータを書込むので、各ブロック40に同じ頻度でデータが書込まれる。したがって、フラッシュメモリ30の使用寿命を延ばすことができる。
[2.第2実施形態]
[2−1.構成]
第2実施形態のデータ管理装置2の基本的な構成は第1実施形態と同様である。第2実施形態では、n種類のデータに対し、復旧用に同じ種類のデータをそれぞれ2個のブロックに書込み、合計で2n個のブロック40を使用する点が第1実施形態と異なる。
例えば、図9に示すように、「A」および「B」という2種類のデータのIDに対し、4個のブロック40を使用する。データの書込み順序は、第1実施形態と同様に「A」、「B」の順序である。
CPU10は、図9の手順(1)〜(6)において、ブロック#4の管理情報である「未書込み」が示すブロック#1のデータを消去してブロック#1の管理情報を「未書込み」に設定し、書込み要求データであるデータA''をブロック#1に書き込む。
データA''の次の書込み要求データがA'''の場合、図4のS404の判定は「No」になる。したがって、CPU10は、手順(7)〜(11)において、次に書き着込むべきIDが「B」のデータの中で最新のデータが書込まれているブロック#4のデータB'を、書込みの実行順序が特定順序となるように補完データとしてブロック#2に書込む。
そして、CPU10は、手順(12)〜(16)において、データA''の次の書込み要求データであるデータA'''をブロック#3に書き込む。
[2−2.効果]
第2実施形態では、第1実施形態の効果(1)、(2)、(4)に加え、以下の効果を得ることができる。
2種類のデータに対し、復旧用に同じ種類のデータをそれぞれ1個のブロックに記憶するので、何らかの原因で同じ種類のデータの1個が消失しても、同じ種類の他の1個のデータで消失したデータを復旧できる。
[3.第3実施形態]
[3−1.構成]
第3実施形態のデータ管理装置2の基本的な構成は第1実施形態と同様である。第3実施形態では、1個の書込み要求データを受け付ける毎に特定順序と一致しているか否かを判定するのではなく、受け付ける書込み要求データをすべて一旦RAM12に記憶する。そして、書込みの要求順序が特定順序ではない場合、特定順序になるように並べ替えてブロック40に順次書込む。
例えば、図10では、データA''、データA'''、データB'の順序で書込み要求データを受け付けてRAM12に記憶する。そして、フラッシュメモリ30に書込むときに、特定順序であるデータA''、データB'、データA'''の順序に並び替えながらブロック40に順次書込む。
[3−2.効果]
第3実施形態では、第1実施形態の効果(1)〜(4)に加え、以下の効果を得ることができる。
受付ける書込み要求データをすべて一旦RAM12に記憶し、書込みの要求順序が特定順序ではない場合、特定順序になるように並べ替えてからブロック40に順次書込むので、特定順序になるようにデータを補完してブロック40に書込む処理を省略できる。
[4.第4実施形態]
[4−1.構成]
第4実施形態のデータ管理装置2の基本的な構成は第1実施形態と同様である。第4実施形態では、書込み要求データを受け付けると、環状に一方向に結合している2個のブロックに、特定順序として連続して同じ書込み要求データを書込む点が第1実施形態と異なる。
CPU10は、図11の手順(1)〜(6)において、ブロック#3の管理情報である「未書込み」が示すブロック#1に書込み要求データであるデータA''を書き込む。ブロック#1の管理情報は「未書込み」に設定されるので、さらにブロック#1の次のブロック#2に、ブロック#1と同じ書込み要求データであるデータA''を書き込む。
[4−2.効果]
第4実施形態では、第1実施形態の効果(1)、(2)、(4)に加え、以下の効果を得ることができる。
1種類のデータに対し、復旧用に同じ書込み要求データを環状に一方向に結合した2個の連続したブロックに書込むので、何らかの原因で同じ種類のデータの1個が消失しても、同じ種類の他のデータで消失したデータを復旧できる。
[5.他の実施形態]
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されることなく、以下の種々の形態を取り得る。
(1)上記実施形態においては3個または4個のブロック40を備えるブロック群の構成を例示したが、ブロック群は3個以上のブロックによって構成されていればよく、3個または4個に限定されることはない。また、環状に一方向に結合された3個以上のブロックから構成されるブロック群は複数であってもよい。
(2)第4実施形態では、1種類のデータだけで構成される3個のブロックから構成されるブロック群を例にした。これに対し、2種類以上のデータのうち、少なくとも1種類のデータだけを環状に一方向に結合した2個の連続したブロックに書込んでもよい。
(3)ブロック単位でデータの消去が行われるブロックを3個以上備える不揮発性の記憶装置は、フラッシュメモリに限らずどのような記憶装置であってもよい。
(4)上記実施形態における一つの構成要素が有する機能を複数の構成要素として分散させたり、複数の構成要素が有する機能を一つの構成要素に統合させたりしてもよい。また、上記実施形態の構成の少なくとも一部を、同様の機能を有する公知の構成に置き換えてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加または置換してもよい。尚、特許請求の範囲に記載した文言のみによって特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。
(5)上述したデータ管理装置の他、当該データ管理装置を構成要素とする情報処理システム、当該データ管理装置としてコンピュータを機能させるためのプログラム、このプログラムを記録した記録媒体、データ管理方法など、種々の形態で本発明を実現することもできる。
2:データ管理装置、30:フラッシュメモリ(書換え可能な不揮発性の記憶装置)、10:CPU(制御手段)、40:ブロック、42:ID部、44:データ部、46:管理部、60:電源

Claims (7)

  1. ブロック(40)単位でデータの消去が行われる前記ブロックを3個以上備える書換え可能な不揮発性の記憶装置(30)と、
    前記記憶装置からのデータの読出しと前記記憶装置へのデータの書込みとを実行する制御手段(10、16、S400〜S408、S420)と、
    を備え、
    3個以上の前記ブロックは、予め論理的に環状に一方向に結合されており、
    各ブロックは、環状に一方向に結合された前記ブロックの結合方向において各ブロックの次の前記ブロックにおける書込み状態を表わす管理情報が書込まれる管理部(46)と、書込み要求で受け付ける書込み要求データが書込まれるデータ部(44)とを有し、
    前記制御手段(S400〜S408)は、前記ブロックに前記書込み要求データを書込むときの予め設定された特定のデータ書込み順序である特定順序と前記結合方向とにしたがって、前記ブロックに前記書込み要求データを書込む、
    ことを特徴とするデータ管理装置。
  2. 請求項1に記載のデータ管理装置であって、
    前記制御手段は、前記管理情報として、前記書込み要求データが正常に書込まれたことを示す書込み済みと、前記書込み要求データを書込み中であることを示す書込み中と、次に前記書込み要求データを書込む対象であり、まだ前記書込み要求データが書込まれていないことを示す未書込みとのうちいずれかを設定する、
    ことを特徴とするデータ管理装置。
  3. 請求項1または2に記載のデータ管理装置であって、
    前記制御手段(S404〜S408)は、前記書込み要求で要求される前記書込み要求データの書込みの要求順序が前記特定順序ではない場合、前記特定順序となるように前記要求順序の前記書込み要求データの間にデータを補完して前記ブロックに前記書込み要求データを書込む、
    ことを特徴とするデータ管理装置。
  4. 請求項2を引用する請求項3に記載のデータ管理装置であって、
    前記制御手段は、前記ブロックに書込まれている前記管理情報と前記書込み要求データのデータ種類とに基づいて前記特定順序になるように次に書込むべき前記データ種類を決定し、次に書込むべき前記データ種類と前記書込み要求で書込みが要求される前記書込み要求データの前記データ種類とが一致する場合、前記未書込みが示す前記ブロックに前記書込み要求データを書込み、次に書込むべき前記データ種類と前記書込み要求で書込みが要求される前記書込み要求データの前記データ種類とが一致しない場合、次に書込むべき前記データ種類と同じ前記書込み要求データを前記ブロックから補完データとして読出して前記未書込みが示す前記ブロックに前記補完データを書込んでから、前記補完データが書込まれた次の前記ブロックに前記書込み要求データを書込む、
    ことを特徴とするデータ管理装置。
  5. 請求項1または2に記載のデータ管理装置であって、
    前記書込み要求で要求される前記書込み要求データの書込みの要求順序が前記特定順序ではない場合、前記制御手段は、前記要求順序の前記書込み要求データを前記特定順序に並べ替えてから前記ブロックに書込む、
    ことを特徴とするデータ管理装置。
  6. 請求項1から5のいずれか一項に記載のデータ管理装置であって、
    前記制御手段は環状に一方向に結合されている2個の前記ブロックに連続して前記書込み要求データを書込む、
    ことを特徴とするデータ管理装置。
  7. 請求項1から6のいずれか一項に記載の手段としてコンピュータを機能させるためのプログラム。
JP2015033147A 2015-02-23 2015-02-23 データ管理装置およびプログラム Active JP6332077B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015033147A JP6332077B2 (ja) 2015-02-23 2015-02-23 データ管理装置およびプログラム
DE102016202684.4A DE102016202684B4 (de) 2015-02-23 2016-02-22 Datenmanagementvorrichtung und datenmanagementprogramm

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015033147A JP6332077B2 (ja) 2015-02-23 2015-02-23 データ管理装置およびプログラム

Publications (2)

Publication Number Publication Date
JP2016157186A JP2016157186A (ja) 2016-09-01
JP6332077B2 true JP6332077B2 (ja) 2018-05-30

Family

ID=56577727

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015033147A Active JP6332077B2 (ja) 2015-02-23 2015-02-23 データ管理装置およびプログラム

Country Status (2)

Country Link
JP (1) JP6332077B2 (ja)
DE (1) DE102016202684B4 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7089423B2 (ja) * 2018-07-12 2022-06-22 ルネサスエレクトロニクス株式会社 情報処理装置及び制御方法
WO2023190210A1 (ja) * 2022-03-30 2023-10-05 ローム株式会社 電源管理回路および電子機器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4419752B2 (ja) * 2004-08-25 2010-02-24 株式会社デンソー データ記憶装置
JP2007328438A (ja) 2006-06-06 2007-12-20 Seiko Epson Corp 情報処理装置、そのデータバックアップ及び復旧方法
JP2012123733A (ja) * 2010-12-10 2012-06-28 Seiko Epson Corp 情報処理装置及び情報処理装置におけるデータ管理方法
US20130198453A1 (en) 2012-01-26 2013-08-01 Korea Electronics Technology Institute Hybrid storage device inclucing non-volatile memory cache having ring structure
US9678863B2 (en) 2012-06-12 2017-06-13 Sandisk Technologies, Llc Hybrid checkpointed memory

Also Published As

Publication number Publication date
DE102016202684B4 (de) 2022-09-29
DE102016202684A1 (de) 2016-08-25
JP2016157186A (ja) 2016-09-01

Similar Documents

Publication Publication Date Title
CN108183957B (zh) 主从同步方法及装置
CN104516793A (zh) 数据镜像控制设备和方法
US9063894B2 (en) Cascade ordering
US7725646B2 (en) Method of using a flash memory for a circular buffer
CN102378969A (zh) 拷贝卷中存储的数据的去重复
US9552286B2 (en) Information processing apparatus and installation method
JP2006120082A (ja) メモリカード、半導体装置、及びメモリカードの制御方法
CN113744064B (zh) 在区块链节点中执行交易的方法及装置
JPWO2009004674A1 (ja) 記憶装置、ディスク装置、書込み判定方法、制御装置
CN101246429B (zh) 将闪存模块用作主存储器的电子系统和相关系统引导方法
JP2019133633A (ja) 電子コンピュータ装置及び方法
JP6332077B2 (ja) データ管理装置およびプログラム
US20160283148A1 (en) Backup control device, backup control method, and recording medium
EP2977907B1 (en) Data storage device, method for storing data, and onboard control device
JP2010086009A (ja) 記憶装置およびメモリ制御方法
US7257030B2 (en) Operating a storage component
JP4558393B2 (ja) 情報処理装置
CN111045709B (zh) 固件升级方法和固件升级装置
KR101969799B1 (ko) 전자 장치 및 제어 방법
JP2009223435A (ja) データ記憶方法及び装置、並びにプログラム
JP4239754B2 (ja) 不揮発メモリシステム
US9971659B1 (en) Memory programming providing corruption protection
US7934067B2 (en) Data update history storage apparatus and data update history storage method
JP3790756B2 (ja) ディスクアレイ装置、ディスク制御装置及びディスクアレイのデータ障害を復旧する方法
KR101545077B1 (ko) 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170626

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180328

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180403

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180416

R151 Written notification of patent or utility model registration

Ref document number: 6332077

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250