JP6864228B2 - 記憶装置および記憶装置のデータ管理方法 - Google Patents

記憶装置および記憶装置のデータ管理方法 Download PDF

Info

Publication number
JP6864228B2
JP6864228B2 JP2017112177A JP2017112177A JP6864228B2 JP 6864228 B2 JP6864228 B2 JP 6864228B2 JP 2017112177 A JP2017112177 A JP 2017112177A JP 2017112177 A JP2017112177 A JP 2017112177A JP 6864228 B2 JP6864228 B2 JP 6864228B2
Authority
JP
Japan
Prior art keywords
old
conversion table
data
new information
flash memory
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
JP2017112177A
Other languages
English (en)
Other versions
JP2018206161A (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.)
Buffalo Inc
Original Assignee
Buffalo Inc
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 Buffalo Inc filed Critical Buffalo Inc
Priority to JP2017112177A priority Critical patent/JP6864228B2/ja
Priority to US16/000,089 priority patent/US10657040B2/en
Publication of JP2018206161A publication Critical patent/JP2018206161A/ja
Application granted granted Critical
Publication of JP6864228B2 publication Critical patent/JP6864228B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

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

Description

本発明は、フラッシュメモリを用いた記憶装置におけるデータ管理に関する。
近年、フラッシュメモリを用いた半導体記憶装置の大容量化が進み、メモリカードやUSBメモリだけでなく、ハードティスクなどの磁気記録型の記憶装置に代わって用いられるようになっている。こうした記憶装置では、記憶されるデータは、通常、OSや専用アプリケーションが提供するファイルシステムを用いて記憶されており、ファイルシステムが扱う論理アドレスから、データが実際に記憶されている物理アドレスを呼び出すのに、両者を対応付けるアドレス変換テーブルが用いられる。従って、ファイルアロケーションテーブルなどが何らかの理由で破損すると、データは残っていても、記憶内容が読み出せなくなってしまうことがある。
このため、従来から、論理アドレスと物理アドレスとを対応付けたテーブルが破損した場合でも、保存されているデータを読み出し可能とするために、記憶装置内に記憶されるデータと共に論理アドレスを記憶しておくことが行なわれている。こうしておけば、データが記憶された領域を読み出すことで、そのデータの論理アドレスを知る事ができ、データを再構築することができる(特許文献1、2参照)。
また、フラッシュメモリでは、データを修正すると、古いデータを上書きするのではなく、新たな領域(フラッシュメモリ内の異なるブロックや異なるページ)に新たにデータが書き込まれるから、同じ論理アドレスを有するデータが異なる場所に記憶さることが生じ得る。そこで、特許文献1では、新たなブロックへの書き込みがなされる度に更新される順序番号を用意し、これをデータと共に記録している。こうすることで、同じ論理アドレスが記録されたブロックが存在すると、両方のブロックに記録された順序番号を比較し、新しい順序番号を有するブロックを、論理アドレスと物理アドレスとを対応付けたテーブルに登録することで、データの再構築を行なっている。特許文献2でも、周回カウンタを用いることで同様の処理を行なっている。
特開平11−85589号公報 特開2008−146255号公報
しかしながら、これらの特許文献に記載の技術では、記憶されているデータを再構築するのに、全データを読み出さなければならず、再構築に長時間を要するという課題があった。しかも、特許文献1に記載の技術では、あるブロックから読み出した論理アドレスと同一の論理アドレスが他のブロックに記録されていないか、全ブロックのデータを読み出さないと判断できなかった。また特許文献2に記載の技術では、周回カウンタはすべてのブロックへの書き込みが完了した時点で初めてインクリメントされるから、全ブロックへの書き込みが完了する前に生じた不具合に対しては、データの再構築に支障を生じる場合があった。
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
(1)本発明の第1の実施態様として、ホストデバイスから論理アドレスを用いてアクセスされる記憶装置が提供される。この記憶装置は、不揮発的に記憶されたデータの消去を複数ページからなるブロックを単位として行ない、データの書き込みと読み出しとを前記ページを単位として実行可能なフラッシュメモリと;前記フラッシュメモリに前記ページを単位として書き込まれるデータの論理アドレスと、前記ブロックと前記ページとにより管理される物理アドレスであって、前記データが書き込まれる物理アドレスとを、変換テーブルによってアドレス変換可能に管理する管理部と;前記データを前記フラッシュメモリの所定の物理アドレスに書き込む際に、当該物理アドレスに対応する論理アドレスとして前記変換テーブルに記憶される論理アドレスおよび当該書き込みの新旧を表わす新旧情報を、前記ページを単位として、前記データと共に前記物理アドレスに書き込むデータ書込部と;前記データの書込用として前記ブロックに用意された複数の前記ページへの書き込みを完了する際、前記ブロックの所定のページに、少なくとも前記ブロックに書き込まれた前記新旧情報のうちの最新の新旧情報を書き込む新旧情報書込部と;前記変換テーブルの再構築を行なうものとして予め定めた再構築タイミングにおいて、前記フラッシュメモリの前記各ブロックから、前記最新の新旧情報を読み出し、前記各ブロックの前記最新の新旧情報の古い順に従って、前記ブロックに含まれる前記各ページに記録された前記論理アドレスを読み出し、当該論理アドレスに対応する前記物理アドレスを、前記論理アドレスに従って配列することで、前記変換テーブルを再構築する再構築部とを備える。
かかる記憶装置は、再構築タイミングにおいて、フラッシュメモリの各ブロックから、最新の新旧情報を読み出し、各ブロックの最新の新旧情報の古い順に従って、そのブロックに含まれる各ページに記録された論理アドレスを読み出し、この論理アドレスに対応する物理アドレスを、論理アドレスに従って配列することで、前記変換テーブルを再構築する。従って、単純な処理で、変換テーブルを容易に再構築することができる。なお、変換テーブルは、初めて記憶装置が用いられるときには、フラッシュメモリにデータが記録される度に、その論理アドレスと物理アドレスとの対応関係を記録していくことで、徐々に作成される。このように、データが書き込まれる度に変換テーブルを構成していることを、本明細書では、変換テーブルを作成すると言う。これに対して、変換テーブルの再構築とは、変換テーブルを、フラッシュメモリに記録されているデータから作成することを意味する。
(2)本発明の第2の態様として、ホストデバイスから論理アドレスを用いてアクセスされるもうひとつの記憶装置が提供される。この記憶装置は、不揮発的に記憶されたデータの消去を複数ページからなるブロックを単位として行ない、データの書き込みと読み出しとを前記ページを単位として実行可能なフラッシュメモリと;前記フラッシュメモリに前記ページを単位として書き込まれるデータの論理アドレスと、前記ブロックと前記ページとにより管理される物理アドレスであって、前記データが書き込まれる物理アドレスと、当該データの書き込みの新旧を表わす新旧情報とを、変換テーブルによって管理する管理部と;前記データを前記フラッシュメモリの所定の物理アドレスに書き込む際に、当該物理アドレスに対応する論理アドレスとして前記変換テーブルに記憶される論理アドレスおよび前記テーブルに記憶される前記新旧情報を、前記データと共に前記物理アドレスに書き込むデータ書込部と;当該記憶装置の使用を終了する際に、前記変換テーブルを前記フラッシュメモリの所定の領域に記録する変換テーブル記録部と;前記フラッシュメモリの前記所定の領域に記録された前記変換テーブルが正常であると判断できないとき、前記フラッシュメモリの前記ページ単位または前記ブロック単位で記録された前記論理アドレス毎の前記新旧情報と前記フラッシュメモリに記録された前記変換テーブルの前記論理アドレス毎の前記新旧情報とを比較して、前記変換テーブルを再構築する再構築部とを備える。
この記憶装置は、フラッシュメモリの所定の領域に記録された変換テーブルが正常であると判断できないとき、フラッシュメモリのページ単位またはブロック単位で記録された論理アドレス毎の新旧情報とフラッシュメモリに記録された変換テーブルの論理アドレス毎の新旧情報とを比較して、変換テーブルを再構築する。従って、同じ論理アドレスが複数記録されている場合でも、新旧情報を用いて変換テーブルを正しく容易に再構築することができる。
本発明は、こうした態様に限らず、記憶装置をコンピュータ装置に一体に組み込んだ構成、あるいはフラッシュメモリを用いた記憶装置におけるデータの管理方法として、など種々の態様で実施することができる。
実施形態のSSDの概略構成図。 SSDへのデータの書き込みと読み出しの流れを示す説明図。 第1実施形態のSSDにおけるファイル書込処理ルーチンを示すフローチャート。 フラッシュメモリ内のメモリ構成を示す説明図。 変換テーブルCTの一例を示す説明図。 変換テーブル再構築処理ルーチンを示すフローチャート。 フラッシュメモリ内の情報からソート済み作業テーブルWTSを生成する様子を示す説明図。 第2実施形態のファイル書込処理ルーチンの要部を示すフローチャート。 第2実施形態における変換テーブルCTを示す説明図。 ブロックB5,B12内のデータの一例を示す説明図。 変換テーブル保存処理ルーチンを示すフローチャート。 起動時処理ルーチンを示すフローチャート。 変換テーブル再構築処理を示すフローチャート。 他の実施形態におけるデータの保存の様子を示す説明図。
A.第1実施形態:
コンピュータなどのホストデバイス20に接続され、ホストデバイス20から見て外部記憶装置の1つとして扱われる記憶装置30の概略構成を、図1に示した。この記憶装置30は、いわゆるソリッドステートデバイス(以下、SSD)であり、ホストデバイス20からは、ハードディスクなどと同様に、ファイルシステムを用いて、データを保存することができる。
記憶装置30は、図示するように、記憶装置30全体の処理を司るコントローラ40、データを揮発的に記憶するRAM50、データを不揮発的に記憶する大容量のフラッシュメモリ60を備える。コントローラ40は、内蔵するプログラムを実行するCPU41,ホストデバイス20との情報のやり取りをシリアル通信により行なうシリアルI/O(以下、単にSI/Oと呼ぶ)43、RAM50とのデータのやり取りを行なうRAMインタフェース(以下、単にRAMI/Fと呼ぶ)45、フラッシュメモリ60とのデータのやり取りを行なうフラッシュインタフェース(以下、単にフラッシュI/Fと呼ぶ)46を備える。
この記憶装置30は、ホストデバイス20からみれば、単なる外部記憶装置として動作する。この動作の概要を図2に模式的に示した。ホストデバイス20上では、OS上でアプリケーションプログラムが動作しており、このアプリケーションプログラムが、データをファイルの形式で外部記憶装置に記憶あるいは読み出そうとすると、対象となるファイルの読み書きを、OSが標準で備えるファイルシステムに依頼する。ファイルシステムは、論理アドレスでファイルを管理するが、実際のデータは、フラッシュメモリ60内の特定のブロックの特定のページに書き込まれている。このフラッシュメモリ60のブロックやページによって特定されるアドレスを物理アドレスと呼ぶ。コントローラ40は、この論理アドレスと物理アドレスとを相互に変換するために、変換用の変換テーブルを持ち、データの保存場所を管理している。この変換テーブルは、記憶装置30がマウントされて使用されている間は、RAM50に展開されており、記憶装置30の使用を終了するとき、つまり電源を落すなど、アンマウントされる際に、記憶装置30のフラッシュメモリ60の所定の領域に保存される。記憶装置30の起動時には、フラッシュメモリ60から読み出されRAM50に展開される。
コントローラ40は、その機能としては、論理アドレスと物理アドレスとの変換を変換テーブルを参照して行なう管理部31と、アドレス変換を行ないつつ、データをフラッシュメモリ60の所定のブロック、所定のページに書き込むデータ書込部32、1つのブロックに用意された複数の前記ページへの書き込みを完了する際、ブロックの所定のページに、少なくともブロックに書き込まれた新旧情報のうちの最新の新旧情報を書き込む新旧情報書込部33、変換テーブルが破損したとき、これを再構築する再構築部35などを備える。これら各部は、ディスクリートなハードウェアとしても実現できるが、本実施形態では、コントローラ40のCPU41が内蔵するプログラムを実行することにより、実現されている。このブログラムに従った処理については、後で詳しく説明する。
コントローラ40により実現される上記各部の処理の説明に先立って、コントローラ40のCPU41が実行するファイル書込ルーチンについて、その概要を、図3のフローチャートを用いて説明する。実際の記憶装置30では、フラッシュメモリ60の耐久性を考慮して、各ブロックの使用頻度を平準化する処理なども行なわれているが、それらの処理は公知のものなので、以下の説明では割愛した。
図3に示した処理は、所定のファイルの書き込みの指示をファイルシステムを介して受けた時に、CPU41が実行する。この処理が開始されると、まずファイルサイズVのファイルを書き込む論理アドレスを決定する処理を行なう(ステップS80)。記憶装置30へのデータの書き込みや記憶装置30からのデータの読み出しは、物理アドレスにより行なわれるが、ファイルシステムは、データを論理アドレスで管理するからである。
ステップS80において、ファイルを書き込むべき論理アドレスが決定されたら、ファイルサイズVのデータを書込可能な物理スペースを探索する(ステップS81)。図4に示したように、本実施形態のフラッシュメモリ60は、1つのブロックに、データの書込の単位となるPage1〜Page512までの512ページを有する。各ページは、20Kバイト程度の大きさを備えるが、そのうちの16Kバイトを4Kバイト×4つの部分に分けて、データを保存するデータ部分として管理している。各ページのうち剰余の部分は、冗長部分として用意されており、例えばチェックサムや誤り訂正符号ECCなどを記憶するために用いられる。本実施形態では、更にこの冗長部分に、論理アドレスと新旧情報とを保存している。新旧情報とは、数十ビットの値であり、この記憶装置30の使用が開始されてから、ページを単位とする書き込みがフラッシュメモリ60に生じる度に単調増加(ここでは値1のインクリメント)がなされる値である。新旧情報の役割と扱いについては、後で詳しく説明する。
図4に例示したフラッシュメモリ60のブロックやページのどの部分が使用されているかは、変換テーブルCTに記録されているから、CPU41は、変換テーブルCTを参照して、まだデータが書き込まれていないページなどで、ファイルサイズVのデータを書き込めるスペースがあるかを判断する(ステップS82)。スペースがあると判断した場合には、新旧情報NWをインクリメントする(ステップS83)。その上で、データを、論理アドレスLADおよび新旧情報NWと共に、そのスペース、つまり物理アドレスに書き込む処理を行なう(ステップS84)。この処理は、図4に示したように、データ(4Kバイト×4)、4Kバイトのデータ毎の論理アドレスLAD、そのページの新旧情報を、ページを単位として書き込むことにより行なわれる。
ファイルサイズVが大きければ、1つのブロックに全部のデータを書き込むことができない場合も存在する。このため、1つのブロック内で書き込みが完了したかを確認し(ステップS85)、書き込みが完了していなければ、つまりブロックの最後の1つの前のページ(この実施形態では、Page511 )まで達しても書き込むべきデータがまだ残っていたら、そのブロック内の最新の新旧情報NBmxを、最後のページ(Page512 )に書き込む処理を行ない(ステップS86)、再度上述したステップS84に戻って、ファイルの書き込みを継続する。ブロック内では、番号の小さいページから順にデータが書き込まれていくから、最新の新旧情報NBmxは、Page511 の新旧情報と同じものである。
こうしてファイルサイズVのデータの書き込みが完了すると、次に、RAM50上の変換テーブルCTを更新する処理を行なう(ステップS87)。ここでの変換テーブルCTの更新とは、新たに書き込んだデータに関して、その論理アドレスと物理アドレスの関係を追記することに相当する。変換テーブルCTの更新を行なったら、「END」に抜けて、本ルーチンを終了する。
変換テーブルCTの一例を図5に示した。この例では、論理アドレスLADに対する物理アドレスの表示を簡略化し、データの書き込みが開始されるブロックとページのみで示している。符号CKは、論理アドレスLAD8に対応するデータが、更新されて、当初物理アドレスとしてブロックB5のいずれかのページ(例えばページP31〜64)に書かれたいたものが、ブロックB12のページP1に書き込まれたことを示している。この場合、データが保存されていたページP31〜P64は、変換テーブルCTから除かれ、使用不可のページとして、別途管理される。
他方、ステップS82で、ファイルサイズVのデータを書き込むスペースがないと判断した場合には、ガベージコレクションを行なう(ステップS90)。データが書き換えられて使用不可となったページは、上述したように、変換テーブルCTに使用不可のページとして登録されている。そこで、データを書き込む新たなスペースがなくなった場合には、変換テーブルCTに登録されている使用不可のページを解放するためにガベージコレクションを行なう。
ガベージコレクションは、少なくとも1つのスペアブロックを用意しておいた上で、
[1]ガベージコレクションの対象となるブロック(これを、イレーズブロックと呼ぶ)から有効なデータだけをスペアブロックにコピーする。
[2]イレーズブロックを、ブロック単位で消去する。
[3]元のスペアブロックの物理アドレスを、イレーズブロックに記録されていたデータの物理アドレスとして変換テーブルCTに登録する。
[4]元のイレーズブロックを新たなスペアブロックとする。
という一連の手続により行なわれる。上記の[1]ないし[4]処理を、使用不可として登録されているページが存在するすべてのブロックについて繰り返し、使用不可のページを解放する。なお、使用できないページはブロックに存在する512のページの種々の位置に生じるので、スペアブロックにコピーする際には、先頭のページから順に詰めていく。この結果、データが記録されているページ番号は変更されるので、ガベージコレクションの際には、変換テーブルCT内のページ番号も書き直している。
こうしてガベージコレクションを終えた後で(ステップS90)、再度、ファイルサイズVのデータを書き込めるだけのスペースがあるかを判断し(ステップS91)、スペースが確保されていれば、上述したステップS83に移行して、新旧情報NWのインクリメント以降の処理を実行する(ステップS83〜S87)。他方、ガベージコレクションによってもファイルサイズVのデータを書き込むスペースが得られていなければ、「ディスク容量が一杯です」といったエラー表示を行ない(ステップS92)、「END」に抜けて本ルーチンを終了する。
上述したように、記憶装置30へのデータの書き込みは、ファイルシステムからは論理アドレスにより行なわれ、記憶装置30のフラッシュメモリ60へは、ブロック番号とページ番号からなる物理アドレスにより行なわれる。この論理アドレスと物理アドレスとの対応関係は、変換テーブルCTにより管理される。これに加えて、フラッシュメモリ60へは、データと共にそのデータの論理アドレスと新旧情報とを書き込み、更に、1つのブロックの全ページ(ここではPage1〜Page511)へデータが書き込まれると、最後のページ(ここでは、Page512)に、そのブロック内に保存されたデータの最新の新旧情報NBmxが書き込まれる。
ファイルシステムを用いた上記データの書込を前提として、変換テーブル再構築処理が行なわれる。以下、図6を用いてこの処理について説明する。上述したように、変換テーブルCTがなければ、ファイルシステムは、論理アドレスを用いて記憶装置30からデータを読み出すことができない。このため、RAM50に展開されていた変換テーブルCTは、記憶装置30をアンマウントする際に、フラッシュメモリ60の所定の領域に保存され、次に記憶装置30がマウントされた時に読み出され、RAM50に展開される。しかしながら、記憶装置30が正常にアンマウントされる前に突然の電源断などが生じて、RAM50に展開されていた変換テーブルCTが正しく保存できない場合が生じ得る。そこで、本実施形態では、記憶装置30の使用を開始する際に、その都度、変換テーブルCTを再構築するものとした。以下、その手法について説明する。
図6のフローチャートに示した処理は、記憶装置30に電源が投入されるなど、その使用が開始されたタイミングで開始される。まず、すべてのブロックについての最新の新旧情報NBmxの確認が完了したかを判断する(ステップS100)。開始直後は、ステップS100での判断は「NO」となり、ステップS110以下の処理に移行する。ステップS110では、着目ブロックの最終ベージを読み出す処理を行なう。ここで着目ブロックとは、第1ブロックB1から最後の第nブロックBnまでのブロックを、順に処理する際の処理対象となるブロックを意味する。
続いて、読み出した着目ブロックの最終ページ(ここでは、Page512 )に最新の新旧情報NBmxが書込済みか否かを判断する(ステップS120)。データが書き込まれる前のページは、全データが消去時の値(通常は値1)となっているので、最新の新旧情報NBmxが書込済みか否かは、最終ページの内容をみれば容易に判断することができる。書込済みでないと判断した場合は、着目ブロックの各ページを先頭から(または末尾から)順に読み出し、使用最終ページを探索する(ステップS130)。データが書き込まれている最終ページがあれば(ステップS140)、着目ブロックの最新の新旧情報NBmxとブロック番号とを作業テーブルWTに格納する(ステップS150)。
このとき、最新の新旧情報NBmxが最終ページ(ここでは、Page512 )に書き込まれていなかったブロックについては、探索した最終ページの新旧情報を最新の新旧情報NBmxとして用いる。図4に例示したように、各ブロックにおいて、データは、番号の小さいページから順に書き込まれていくので、新旧情報もページ番号が大きければ、必ず大きな値が書き込まれている。したがって、データが書き込まれている最後のページの新旧情報を、そのブロックの最新の新旧情報NBmxとして扱って良い。なお、ステップS140で、最終ページが見い出されないと判断した場合は、着目したブロックにはデータが一度も保存されていないので、何も行なわない。着目ブロックを示すブロック番号1から順にインクリメントしながら、上記の処理を行ない、最新の新旧情報NBmxを作業テーブルWTに保存していく。
フラッシュメモリ60内の新旧情報から、作業テーブルWTが作成される様子を図7に例示した。図7の上段は、フラッシュメモリ60内のブロック番号と最新の新旧情報NBmxを示し、中段は作成された作業テーブルWTを示す。図7において、「N/A」は、そのブロックにはデータが一度も書き込まれていないことを示す。従って、そのブロックは、最新の新旧情報NBmxが読み出されることがなく、作業テーブルWTに登録されない。
ステップS140で「NO」と判断した場合、またはステップS150の処理の終了後、ステップS100に戻って、すべてのブロックについて、上記の確認の処理が完了するまで、ステップS110〜S150を繰り返す。すべてのブロックについての最新の新旧情報NBmxの確認が完了すると(ステップS100:「YES」)、次に、作業テーブルWTを、新旧情報でソートする処理を行なう(ステップS200)。ソートの結果得られたソート済み作業テーブルWTSの一例を図7下段に示した。
次に、このソート済み作業テーブルWTSを用いて、以下の処理を、作業テーブルWTSに登録されたすべてのブロックについて繰り返す(ステップs210−e210)。繰返処理内では、まず対象ブロックを確定する(ステップS220)。つまりソート済み作業テーブルWTSの上から順にブロック番号を読み出し、以下の処理を実施する。
ブロック番号を確定すると、そのブロック内のページ1から最終ページまで、以下の処理を繰り返す(ステップs310−e310)。繰返処理内では、まず各ページから論理アドレスを読み出し(ステップS320)、読み出した論理アドレスとその論理アドレスに対応する物理アドレスとを、論理アドレス順に、変換テーブルに書き込む処理を行なう(ステップS330)。この結果、論理アドレスに対応する物理アドレスが、論理アドレスに従って配列されることになる。
この処理を全ベージについて繰り返し、更に全ブロックについて繰り返す。このとき、ブロックについては、その最新の新旧情報NBmxが小さい値から順に処理されるので(図7、ソート済み作業テーブルWTS参照)、仮に同じ論理アドレスを有するページが読み出されたとしても、既に読み出された論理アドレス−物理アドレスを上書きすれば良い。またフラッシュメモリ60では、データはページ1から順に書き込まれているので、1つのブロック内の各ページは、ページ番号が小さいほど、小さい新旧情報を持つ。従って、これもページ1から順に処理することで、仮に同じ論理アドレスが現れても、同様に先に読み出された論理アドレス−物理アドレスを上書きするだけで、正しい論理アドレス−物理アドレスの組合せに書き直される。
上記の処理を繰り返すことで、すべてのブロックのすべてのページから読み出した論理アドレス−物理アドレスの組合わせが、変換テーブルCTとして記録される。以後、ファイルシステムは、RAM50に展開したこの変換テーブルCTを用いて、論理アドレス−物理アドレスの変換を行ないつつ、ファイルを構成するデータのフラッシュメモリ60への書き込み、フラッシュメモリ60からの読み出しを行なうことができる。
以上説明した第1実施形態によれば、記憶装置30にデータを記録する際、データと共にそのデータの論理アドレス、新旧情報とを記録し、更に、フラッシュメモリ60の各ブロックの最終ページに、そのブロック内の最新の新旧情報NBmxを記録する。その上で、記憶装置30をマウントする際、各ブロックの最新の新旧情報NBmxを読み出し、各ブロックをこの最新の新旧情報NBmxの順序でソートし、最新の新旧情報NBmxが小さいブロックから順に、論理アドレス−物理アドレスの組合わせを読み出して変換テーブルCTを構成する。各ブロックを最新の新旧情報NBmxでソートしているので、単純に各ページに記録された論理アドレス−物理アドレスの組合わせを、論理アドレスの順序で書き込んでいくだけで良く、短時間のうち、変換テーブルCTを構成することができる。着目しているブロックの最新の新旧情報NBmxが、既にステップs310−e310で処理済みのブロックの最新の新旧情報NBmxより大きい場合、着目ししているブロックに記録された論理アドレスは、必ず、より後に書き込まれた論理アドレスだからである。
しかも本実施形態では、変換テーブルCTとして、従来から用いている論理アドレス−物理アドレスの組からなるものをそのまま使用することができる。新たな特別な情報を変換テーブルに加える必要がない。
第1実施形態では、変換テーブルCTは、記憶装置30の使用開始時に毎回再構築するものとしたが、記憶装置30の使用が正常に終了しなかったと判断した場合にのみ、再構築するものとしてもよい。例えばアンマウント時などのタイミングで変換テーブルCTをフラッシュメモリ60のシステムエリアに保存するものとし、次に記憶装置30の使用を開始する際、システムエリアに保存された変換テーブルが正常終了に伴って保存されたものかを判断して、正常終了に伴って保存されたものでない場合にのみ、変換テーブルCTを再構築するものとしてもよい。この場合、正常終了に伴って保存されたものであると判断できれば、変換テーブルCTの再構築を行なわず、そのまま利用すればよい。正常終了したか否かは、例えば記憶装置30の使用を開始する際に、使用開始に対応するデータをフラッシュメモリ60の所定のエリアの末尾に追記し、使用を終了して変換テーブルを保存し終った後で、使用終了に対応するデータをフラッシュメモリ60の所定のエリアの末尾に追記するようにすれば判断できる。つまり、起動時に、所定のエリアの末尾に記録されたデータを読み出して、使用開始に対応するデータか使用終了に対応するデータかを判断すればよい。使用終了に対応するデータであれば、正常に終了したと判断できるから、記録された変換テーブルCTを読み出して、そのまま利用すればよい。こうすれば変換テーブルCTの再構築の回数を減らすことができる。
B.第2実施形態:
次に第2実施形態について説明する。第2実施形態の記憶装置30は、第1実施形態の記憶装置30と同一のハードウェア構成を備え、変換テーブルの形式と、変換テーブルを構築する処理が異なる。第2実施形態の記憶装置30では、図3に例示したファイル書き込み処理ルーチンの末尾のステップS87の処理が異なり、かつその後にステップS99の処理を行なう。この部分の処理を図8に示した。
第2実施形態では、ファイルのデータを書き込む処理(図3)において、データを所定の物理アドレスに書き込んだ後、変換テーブルCTを更新するが(ステップS87)、その際、論理アドレス−物理アドレスの組合わせに加えて、新旧情報も保存している。この例を図9示した。第2実施形態では、変換テーブルCTには、論理アドレス、物理アドレス(ブロック番号,ページ番号)に加えて、新旧情報が登録されている。
図9に示した例では、論理アドレスLAD8は更新されており、ブロックB5、ページP4に記録されていたデータが、更新により、ブロックB12、ページP1に移され、新旧情報も更新されている。この場合のブロックB5とブロックB12の詳細を図10に示した。図示するように、ブロックB5のページP4には、データDATA4とともに、当初、論理アドレスLAD8と新旧情報としての値8とが書き込まれた。その後、この論理アドレスLAD8のデータを書き直す必要が生じたが、フラッシュメモリ60では、データの一部を書き直すことができないので、論理アドレスLAD8に記録するデータDATA4を、ブロックB12のページP1に保存した。データDATA4に併せて、新たな新旧情報として値154が保存された。この結果、フラッシュメモリ60には同一の論理アドレスが記録されたページが複数存在することが分る。このうちにいずれのページのデータが、正しいデータかは、新旧情報を比較すれば分るが、いずれかのページ単独では判断することができない。
ステップS87において変換テーブルCTを更新した後、第2実施形態では、ステップS99に移行し、代表新旧情報NWaを更新する処理を行なう。この代表新旧情報NWaとは、すべてのブロック、すべてのページを通して、最大の値を有する新旧情報を意味する。新旧情報は、図3に、ステップS83として示したように、データをフラッシュメモリ60にページ単位で書き込む際にインクリメントされるので、代表新旧情報NWaとは、その時点で最後にデータを書き込んだ際の新旧情報に等しいということもできる。図9では、最後にデータを書き込んだ際の論理アドレスLADn、物理アドレス(ブロック番号Bn,ページ番号Pn)と共に、書き込んだ新旧情報(ここでは、値1523)が、代表新旧情報NWaとして、変換テーブルCTの所定の領域に書き込まれることを示した。
第2実施形態では、以上説明したように、変換テーブルCTには、論理アドレス−物理アドレスの組合わせに対応付けて新旧情報が記憶され、かつ、代表新旧情報NWaも記憶される。また、第2実施形態では、図11に示すように、この変換テーブルが、フラッシュメモリ60の所定の領域に保存される。つまり、コントローラ40のCPU41は、保存トリガが生じたか否かを判断し(ステップS410)、例えば記憶装置30をアンマウントするといった要求が発生すると、これを保存トリガとして検出し、変換テーブルCTをフラッシュメモリ60のシステムエリアに保存する(ステップS420)。保存トリガは、この他、所定の時間毎、あるいは所定のデータ容量を保存した毎に発生するようにしてもよい。この結果、アンマウント時など、保存トリガが生じた場合には、図9に示した論理アドレス−物理アドレスの組合わせ、これに対応する新旧情報、および代表新旧情報NWaからなる最新の変換テーブルCTが、フラッシュメモリ60のシステムエリアに記憶される。
こうした処理を前提として運用される第2実施形態の記憶装置30の起動時処理を図12を用いて説明する。記憶装置30の起動とは、記憶装置30の電源投入のみならず、アンマウントされていた記憶装置30がマウントされる場合なども含まれる。そこでまず記憶装置30の起動が電源投入によるものか否かの判断を行なう(ステップS500)。電源投入によるものであると判断すると(ステップS500:「YES」)、フラッシュメモリ60のシステムエリアから、最新の変換テーブルCTを読み出してRAM50に展開し(ステップS510)、その後ステップS520に移行する。他方、記憶装置30の起動が電源投入に拠るものでなければ、RAM50には既に変換テーブルCTが展開されているので、何も行なわず、ステップS520に移行する。
ステップS520では、RAM50に展開した変換テーブルCTから代表新旧情報NWaを取得する。その上で、次に、フラッシュメモリ60の各ブロックに保存された最新の新旧情報NBmxから、その中の最大の値を、フラッシュメモリ60のユーザエリアに記憶された代表新旧情報NWbとして、取得する。最新の新旧情報NBmxについては、第1実施形態で詳しく説明した。
次に、こうして取得した2つの代表新旧情報NWa,NWbを比較し(ステップS540)、両者が一致していれば、変換テーブルCTは最新のものであって、その内容に誤りはないとして、本起動時処理ルーチンを終了する。以後、ファイルシステムからのデータの読み書きは、RAM50に展開した変換テーブルCTを用いて行なわれる。
他方、2つ代表新旧情報NWa,NWbが一致していなければ、変換テーブルCTを再構築する処理(ステップS600)を行なう。ここで、両者が一致しない場合としては、例えば記憶装置30の電源が無理に遮断された場合などがある。こうした場合には、使用中の変換テーブルCTを、フラッシュメモリ60のシステムエリアに保存することができないため、両者に不一致を生じるからである。従って、この場合には、変換テーブルCTを再度構築する必要がある。これが再構築処理(ステップS600)である。
変換テーブルの再構築処理を図13に示した。この処理が開始されると、全ブロックについて、ブロック1から順に、以下の処理(ステップs610−e610)を繰り返す。この繰返処理では、まず変換テーブルCT内での着目ブロックの最新の新旧情報NTmxを取得する(ステップS620)。変換テーブルCTは、図9に例示したように、ブロック毎にまとめられている訳ではないが、RAM50に記憶されているので、この変換テーブルCT内を検索して、各ブロックのうちで最も大きな値を持つ新旧データ、即ち最新の新旧データNTmxを特定することは容易である。
そこで、次に、この変換テーブルCTから得られたブロックの最新の新旧情報NTmxと、各ブロックの最終ページに保存されている最新の新旧情報NBmxとを比較する処理を行なう(ステップS630)。比較の結果、両者が一致していれば、変換テーブルCTのうちの、着目しているブロックについての論理アドレス−物理アドレスの組合わせは最新のものだと判断できるので、何の処理も行なわず、繰り返しの処理の終端まで移行する。全ブロックについての処理が終っていなければ、ステップs610−e610の繰り返しを、着目するブロック番号を1つ進めて再度実行する。
他方、ステップS630での判断が「NO」となった場合には、変換テーブルCTに記憶されている最新の新旧情報NTmxとブロックに記録されている最新の新旧情報NBmxとが異なることから、そのブロックについての変換テーブルCTの内容には誤りがあるとして、そのブロックのページ1から順に、以下の処理(ステップs710−e710)を繰り返す。
この繰返処理では、まずフラッシュメモリ60の着目ブロック内の着目ページから新旧情報NBmと論理アドレスLDAとを読み出す処理を行なう(ステップS720)。各ページの新旧情報NBmと論理アドレスLDAとは、図4に例示したように、各ページの冗長部分に記録されている。次に、読み出した論理アドレスLDAが、変換テーブルCTに記録されているかを判断する(ステップS730)。読み出した論理アドレスLDAが、変換テーブルCTに記録されていなければ、変換テーブルの更新処理(ステップS750)に移行する。ステップS750での更新処理については後でまとめて説明する。他方、読み出した論理アドレスLDAが変換テーブルCTにあれば(ステップS730:「YES」)、次に、新旧情報同士の比較を行なう(ステップS740)。具体的には、変換テーブルCTに格納されていた論理アドレスLDAに対応付けられた新旧情報NTmが、着目ブロック内の着目ページから論理アドレスと共に読み出した新旧情報NBmと同じか、より大きいかを判断するのである。変換テーブルCTに格納されていた新旧情報NTmが、新旧情報NBm以上の値であれば、変換テーブルCT内の情報は正しいとして、何も行なわない(ステップS740:「YES」)。他方、変換テーブルCT内の新旧情報NTmが、新旧情報NBmより小さいか(ステップS740:「NO」)、あるいは既に説明した様に、読み出した論理アドレスLDAが変換テーブルCTに格納されていなければ(ステップS730:「NO」)、変換テーブルCT内の情報は正常でないと判断し、変換テーブルCTを更新する処理(ステップS750)を行なう。
ここでの変換テーブルCTの更新処理(ステップS750)は、次のように行なわれる。
(A)着目ブロック内の着目ページから読み出した論理アドレスLDAが、変換テーブルCTに格納されていなければ、読み出した論理アドレスとその物理アドレスとを対応付けて、変換テーブルCTに格納する。
(B)変換テーブルCTに格納されていた新旧情報NTmが着目ブロック内の着目ページから読み出した新旧情報NBmより小さければ、変換テーブルCT内の新旧情報は古く、フラッシュメモリ60の着目ブロックの着目ページに記録されている新旧情報の方が正しいとして、変換テーブルCTの物理アドレス(ブロック番号およびページ番号)を、その新旧情報NBmが記録されていたフラッシュメモリ60の実際の物理アドレス(ブロック番号およびページ番号)によって書き直し、かつ新旧情報NBmによって新旧情報NTmを置き換える。
以上の処理(ステップs710−e710)を、着目しているブロックのすべてのページについて順次繰り返し、全ページについて終了すると、着目するブロックを1つ進めて、同様の処理を、最後のブロックまで繰り返す(ステップs610−e610)。
このように、第2実施形態では、変換テーブルCTを再構築する際、すべてのブロックのすべてのページについて以上の処理を繰り返すが、ステップS630において、変換テーブルCTに記憶されている最新の新旧情報NTmxと、フラッシュメモリ60のブロックに記録されている最新の新旧情報NBmxとが一致していれば、そのブロックに含まれるページについての処理は行なわないので、変換テーブルCTを再構築する処理を、短時間に終了することができる。
また、第2実施形態では、図12に示したように、記憶装置30の起動時に、変換テーブルCTの代表新旧情報NWaとフラッシュメモリ60に記録された代表新旧情報NWbとが一致しているかを判断し、両者が一致していれば、再構築処理を行なわない。従って、起動の度に変換テーブルCTを再構築する必要がない。
C.その他の実施形態:
上記第1,第2実施形態では、いずれも変換テーブルCTの再構築を行なうとき、図6のステップs310−e310の繰り返しや、図13のステップs710−e710の繰り返しのように、各ブロック内の各ページの内容を読み取っている。そこで、各ブロックの最終ページの1つの前のページまで書き込みが行なわれたとき、そこまでの全ページ(ここでは、Page1-Page511)の冗長部分に記載されたデータを、最終ページ(ここでは、Page512 )にまとめて書き込むものとしても良い。この様子を図14に示した。こうしておけば、全ページのデータを読み出して処理する上記繰り返しを、着目するブロックの情報を最終ページから一括して読み出す、という処理で置き換えることができる。なお、最終ページに記録する情報は、冗長部分に記録された論理アドレスと新旧情報のすべてでも良いし、これを圧縮したダイジェストデータであってもよい。ダイジェストデータとしては、例えば論理アドレスや新旧情報が連番であれば、初期値と差分値の形で記録したものであっても良い。
上記の各実施形態では、新旧情報として、順次インクリメントされる値を用いたが、他の実施形態として新旧情報をシステム時刻を用いて記録するものとしてもよい。システム時刻とは、使用されるホストデバイスの内部でリセットされることなく常時計時されている時刻である。あるいは記憶装置30内にバックアップ用の電源を設け、記憶装置30内に、リセットされることのないリアルタイムクロックを搭載し、このリアルタイムクロックが発生する時刻の情報を用いてもよい。
この他、本発明は、以下の態様でも実施することができる。1つは、再構築部35を、新旧情報書込部33による書込がなされていないブロックについては、そのブロックに含まれるページに書き込まれた新旧情報を読み出し、読み出した新旧情報のうちの最新の新旧情報を、当該ブロックについての最新の新旧情報として扱う構成である。
あるいは、管理部31に、記憶装置30の使用を終了するタイミングを含むタイミングで、変換テーブルをフラッシュメモリ60の所定の領域に記録する変換テーブル記録部を備え、再構築部35に、フラッシュメモリ60の所定の領域に記録された変換テーブルが正常であると判断できないとき、再構築タイミングであると判断して、変換テーブルの再構築を行なう構成としてもよい。
また、第2実施形態において、少なくとも当該記憶装置30の使用開始時に、フラッシュメモリ60に記録された変換テーブルCTの新旧情報のうちの最も新しい新旧情報NWaと、フラッシュメモリ60の各ページまたは各ブロックに記録された新旧情報のうち最も新しい新旧情報NWbとを比較し、両新旧情報が不一致の場合には、変換テーブルが正常であると判断できないと判断する構成としてもよい。
更に、変換テーブル記録部は、変換テーブルCTのフラッシュメモリ60の所定の領域への記録を、記憶装置30の使用の終了の際に加えて、記憶装置30の使用中の所定のタイミングで行なうものとしてもよい。
また、フラッシュメモリ60のブロックを単位としたデータの書き込みが完了する際、ページを単位としたデータの書き込みの際に書き込まれた論理アドレスと新旧情報とを、ブロックの所定のページに一括して書き込む一括書込部を備え、再構築部35は、再構築の際に、一括して書き込まれた論理アドレスおよび新旧情報を読み出して、フラッシュメモリ60のページ単位またはブロック単位で記録された論理アドレスおよび新旧情報として扱うものとしてもよい。
この他、変換テーブル記録部は、変換テーブルCTをフラッシュメモリ60の所定の領域に記録する際、変換テーブルCTに記憶されたすべての新旧情報のうち、最も新しい新旧情報を代表新旧情報として、所定の領域に記録し、再構築部35が、新旧情報の比較の際に、フラッシュメモリ60に記録された変換テーブルCTの新旧情報のうちの最も新しい新旧情報として、所定の領域に記録されたこの代表新旧情報を読み出して用いるものとしてもよい。
上記実施形態では、記憶装置30をホストデバイス20に対する外部記憶装置として扱ったが、記憶装置30をコンピュータ内に一体に組み込んだ構成としても良い。また、記憶装置30は、データロガーや携帯電話、デジタルカメラなどと組合わせて用いるものとしてもよい。
上述した第1,第2実施形態は、不揮発的に記憶されたデータの消去を複数ページからなるブロックを単位として行ない、データの書き込みと読み出しとをページを単位として実行可能なフラッシュメモリを備えた記憶装置に対して、ホストデバイスから論理アドレスを用いてアクセスされる際のデータ管理方法としての実施として扱って差し支えない。
20…ホストデバイス
30…記憶装置
31…管理部
32…データ書込部
33…新旧情報書込部
35…再構築部
40…コントローラ
41…CPU
43…SI/O
45…RAMI/F
46…フラッシュI/F
50…RAM
60…フラッシュメモリ

Claims (11)

  1. ホストデバイスから論理アドレスを用いてアクセスされる記憶装置であって、
    不揮発的に記憶されたデータの消去を複数ページからなるブロックを単位として行ない、データの書き込みと読み出しとを前記ページを単位として実行可能なフラッシュメモリと、
    前記フラッシュメモリに前記ページを単位として書き込まれるデータの論理アドレスと、前記ブロックと前記ページとにより管理される物理アドレスであって、前記データが書き込まれる物理アドレスとを、変換テーブルによってアドレス変換可能に管理する管理部と、
    前記データを前記フラッシュメモリの所定の物理アドレスに書き込む際に、当該物理アドレスに対応する論理アドレスとして前記変換テーブルに記憶される論理アドレスおよび当該書き込みの新旧を表わす新旧情報を、前記ページを単位として、前記データと共に前記物理アドレスに書き込むデータ書込部と、
    前記データの書込用として前記ブロックに用意された複数の前記ページへの書き込みを完了する際、前記ブロックの所定のページに、少なくとも前記ブロックに書き込まれた前記新旧情報のうちの最新の新旧情報を書き込む新旧情報書込部と、
    前記変換テーブルの再構築を行なうものとして予め定めた再構築タイミングにおいて、前記フラッシュメモリの前記各ブロックから、前記最新の新旧情報を読み出し、前記各ブロックの前記最新の新旧情報の古い順に従って、前記ブロックに含まれる前記各ページに記録された前記論理アドレスを読み出し、当該論理アドレスに対応する前記物理アドレスを、前記論理アドレスに従って配列することで、前記変換テーブルを再構築する再構築部と
    を備える記憶装置。
  2. 前記再構築部は、前記新旧情報書込部による書込がなされていない前記ブロックについては、当該ブロックに含まれる前記ページに書き込まれた前記新旧情報を読み出し、前記読み出した新旧情報のうちの最新の新旧情報を、当該ブロックについての最新の新旧情報として扱う請求項1記載の記憶装置。
  3. 請求項1または請求項2記載の記憶装置であって、
    前記管理部は、当該記憶装置の使用を終了するタイミングを含むタイミングで、前記変換テーブルを前記フラッシュメモリの所定の領域に記録する変換テーブル記録部を備え、
    前記再構築部は、前記フラッシュメモリの前記所定の領域に記録された前記変換テーブルが正常であると判断できないとき、前記再構築タイミングであると判断して、前記変換テーブルの再構築を行なう
    記憶装置。
  4. ホストデバイスから論理アドレスを用いてアクセスされる記憶装置であって、
    不揮発的に記憶されたデータの消去を複数ページからなるブロックを単位として行ない、データの書き込みと読み出しとを前記ページを単位として実行可能なフラッシュメモリと、
    前記フラッシュメモリに前記ページを単位として書き込まれるデータの論理アドレスと、前記ブロックと前記ページとにより管理される物理アドレスであって、前記データが書き込まれる物理アドレスと、当該データの書き込みの新旧を表わす新旧情報とを、変換テーブルによって管理する管理部と、
    前記データを前記フラッシュメモリの所定の物理アドレスに書き込む際に、当該物理アドレスに対応する論理アドレスとして前記変換テーブルに記憶される論理アドレスおよび前記変換テーブルに記憶される前記新旧情報を、前記データと共に前記物理アドレスに書き込むデータ書込部と、
    当該記憶装置の使用を終了する際に、前記変換テーブルを前記フラッシュメモリの所定の領域に記録する変換テーブル記録部と、
    前記フラッシュメモリの前記所定の領域に記録された前記変換テーブルが正常であると判断できないとき、前記フラッシュメモリの前記ページ単位または前記ブロック単位で記録された前記論理アドレス毎の前記新旧情報と前記フラッシュメモリに記録された前記変換テーブルの前記論理アドレス毎の前記新旧情報とを比較して、前記変換テーブルを再構築する再構築部と
    を備える記憶装置。
  5. 少なくとも当該記憶装置の使用開始時に、前記フラッシュメモリに記録された前記変換テーブルの前記新旧情報のうちの最も新しい新旧情報と、前記フラッシュメモリの各ページまたは各ブロックに記録された前記新旧情報のうち最も新しい新旧情報とを比較し、両新旧情報が不一致の場合には、前記変換テーブルが正常であると判断できないと判断する
    請求項4に記載された記憶装置。
  6. 前記変換テーブル記録部は、前記変換テーブルの前記フラッシュメモリの所定の領域への記録を、前記記憶装置の使用の終了の際に加えて、前記記憶装置の使用中の所定のタイミングで行なう請求項3から請求項5のいずれか一項に記載の記憶装置。
  7. 請求項3から請求項6のいずれか一項に記載の記憶装置であって、
    前記変換テーブル記録部は、前記変換テーブルを前記フラッシュメモリの所定の領域に記録する際、前記変換テーブルに記憶されたすべての新旧情報のうち、最も新しい新旧情報を代表新旧情報として、所定の領域に記録し、
    前記再構築部は、前記新旧情報の比較の際に、前記フラッシュメモリに記録された前記変換テーブルの前記新旧情報のうちの最も新しい新旧情報として、前記所定の領域に記録された前記代表新旧情報を読み出して用いる
    記憶装置。
  8. 請求項1から請求項7のいずれか一項に記載の記憶装置であって、
    前記フラッシュメモリの前記ブロックを単位とした前記データの書き込みが完了する際、前記ページを単位としたデータの書き込みの際に書き込まれた前記論理アドレスと前記新旧情報とを、前記ブロックの所定のページに一括して書き込む一括書込部を備え、
    前記再構築部は、前記再構築の際に、前記一括して書き込まれた論理アドレスおよび新旧情報を読み出して、前記フラッシュメモリの前記ページ単位または前記ブロック単位で記録された論理アドレスおよび新旧情報として扱う
    記憶装置。
  9. 請求項1から請求項8のいずれか一項に記載の記憶装置が組み込まれ、
    前記記憶装置に対して、論理アドレスによりデータをアクセスするコンピュータ装置。
  10. 不揮発的に記憶されたデータの消去を複数ページからなるブロックを単位として行ない、データの書き込みと読み出しとを前記ページを単位として実行可能なフラッシュメモリを備えた記憶装置に対して、ホストデバイスから論理アドレスを用いてアクセスされる際のデータ管理方法であって、
    前記フラッシュメモリに前記ページを単位として書き込まれるデータの論理アドレスと、前記ブロックと前記ページとにより管理される物理アドレスであって、前記データが書き込まれる物理アドレスとを、変換テーブルによってアドレス変換可能に管理し、
    前記データを前記フラッシュメモリの所定の物理アドレスに書き込む際に、当該物理アドレスに対応する論理アドレスとして前記変換テーブルに記憶される論理アドレスおよび当該書き込みの新旧を表わす新旧情報を、前記ページを単位として、前記データと共に前記物理アドレスに書き込み、
    前記データの書込用として前記ブロックに用意された複数の前記ページへの書き込みを完了する際、前記ブロックの所定のページに、少なくとも前記ブロックに書き込まれた前記新旧情報のうちの最新の新旧情報を書き込み、
    前記変換テーブルの再構築を行なうものとして予め定めた再構築タイミングにおいて、前記フラッシュメモリの前記各ブロックから、前記最新の新旧情報を読み出し、前記各ブロックの前記最新の新旧情報の古い順に従って、前記ブロックに含まれる前記各ページに記録された前記論理アドレスを読み出し、当該論理アドレスに対応する前記物理アドレスを、前記論理アドレスに従って配列することで、前記変換テーブルを再構築する
    記憶装置のデータ管理方法。
  11. 不揮発的に記憶されたデータの消去を複数ページからなるブロックを単位として行ない、データの書き込みと読み出しとを前記ページを単位として実行可能なフラッシュメモリを備えた記憶装置に対して、ホストデバイスから論理アドレスを用いてアクセスされる際のデータ管理方法であって、
    前記フラッシュメモリに前記ページを単位として書き込まれるデータの論理アドレスと、前記ブロックと前記ページとにより管理される物理アドレスであって、前記データが書き込まれる物理アドレスと、当該データの書き込みの新旧を表わす新旧情報とを、変換テーブルによって管理し、
    前記データを前記フラッシュメモリの所定の物理アドレスに書き込む際に、当該物理アドレスに対応する論理アドレスとして前記変換テーブルに記憶される論理アドレスおよび前記変換テーブルに記憶される前記新旧情報を、前記データと共に前記物理アドレスに書き込み、
    当該記憶装置の使用を終了する際に、前記変換テーブルを前記フラッシュメモリの所定の領域に記録し、
    少なくとも当該記憶装置の使用開始時に、前記フラッシュメモリに記録された前記変換テーブルの前記新旧情報のうちの最も新しい新旧情報と、前記フラッシュメモリの各ページまたは各ブロックに記録された前記新旧情報のうち最も新しい新旧情報とを比較し、両新旧情報が不一致の場合には、前記フラッシュメモリの前記ページ単位または前記ブロック単位で記録された前記論理アドレス毎の前記新旧情報と前記フラッシュメモリに記録された前記変換テーブルの前記論理アドレス毎の前記新旧情報とを比較して、前記変換テーブルを再構築する
    記憶装置のデータ管理方法。
JP2017112177A 2017-06-07 2017-06-07 記憶装置および記憶装置のデータ管理方法 Active JP6864228B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017112177A JP6864228B2 (ja) 2017-06-07 2017-06-07 記憶装置および記憶装置のデータ管理方法
US16/000,089 US10657040B2 (en) 2017-06-07 2018-06-05 Storage device and data management method of storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017112177A JP6864228B2 (ja) 2017-06-07 2017-06-07 記憶装置および記憶装置のデータ管理方法

Publications (2)

Publication Number Publication Date
JP2018206161A JP2018206161A (ja) 2018-12-27
JP6864228B2 true JP6864228B2 (ja) 2021-04-28

Family

ID=64562212

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017112177A Active JP6864228B2 (ja) 2017-06-07 2017-06-07 記憶装置および記憶装置のデータ管理方法

Country Status (2)

Country Link
US (1) US10657040B2 (ja)
JP (1) JP6864228B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113900589A (zh) * 2021-09-16 2022-01-07 合肥致存微电子有限责任公司 一种数据的写入方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1185589A (ja) * 1997-09-12 1999-03-30 Toshiba Corp 情報記憶装置および同装置に適用される管理データ再構築方法
JP3788961B2 (ja) 2002-08-30 2006-06-21 株式会社東芝 ディスクアレイ装置及び同装置におけるレイドレベル変更方法
JP3912355B2 (ja) * 2003-10-14 2007-05-09 ソニー株式会社 データ管理装置、データ管理方法、不揮発性メモリ、不揮発性メモリを有する記憶装置及びデータ処理システム
JP2008146255A (ja) 2006-12-07 2008-06-26 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
JP4301301B2 (ja) * 2007-02-05 2009-07-22 ソニー株式会社 不揮発性半導体記憶装置およびその管理方法
JP5570406B2 (ja) * 2010-12-14 2014-08-13 株式会社日立製作所 メモリコントローラ、及びデータ記録装置

Also Published As

Publication number Publication date
JP2018206161A (ja) 2018-12-27
US20180357158A1 (en) 2018-12-13
US10657040B2 (en) 2020-05-19

Similar Documents

Publication Publication Date Title
US10254983B2 (en) Atomic write command support in a solid state drive
CN108733510B (zh) 数据储存装置及映射表重建方法
JP3078946B2 (ja) 一括消去型不揮発性メモリの管理方法及び半導体ディスク装置
EP2793132B1 (en) Method and system for recovery of metadata in a flash memory system
US9170938B1 (en) Method and system for atomically writing scattered information in a solid state storage device
TWI645404B (zh) 資料儲存裝置以及非揮發式記憶體操作方法
KR101257989B1 (ko) 인덱스 페이지 복구
US9286198B2 (en) Method and system for storage of data in non-volatile media
US10372619B2 (en) Data backup method, data recovery method and storage controller
US20150186224A1 (en) Data storage device and flash memory control method
JP2002175211A (ja) データ管理システムおよびデータ管理方法
CN109669889B (zh) 一种轻量型Nor Flash闪存控制方法和装置
CN104021089A (zh) 快闪存储器控制芯片与存储装置以及快闪存储器控制方法
CN112035294A (zh) 安全日志文件系统及其实现方法和介质
JP4586469B2 (ja) メモリ制御装置、メモリ制御方法、プログラム
CN107544912B (zh) 一种日志记录方法、加载方法及其装置
US8966161B2 (en) Memory storage device and restoring method thereof
JP6864228B2 (ja) 記憶装置および記憶装置のデータ管理方法
CN109558271B (zh) 数据备份方法、数据恢复方法以及存储控制器
EP2267725A1 (en) Memory device for managing the recovery of a non volatile memory
JP6644427B2 (ja) Fatファイルシステム及びそのプログラム
TW201826267A (zh) 數據儲存方法及其裝置

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180320

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210222

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: 20210302

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210315

R150 Certificate of patent or registration of utility model

Ref document number: 6864228

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250