JP4535117B2 - メモリ装置、メモリ管理方法、およびプログラム - Google Patents

メモリ装置、メモリ管理方法、およびプログラム Download PDF

Info

Publication number
JP4535117B2
JP4535117B2 JP2007288726A JP2007288726A JP4535117B2 JP 4535117 B2 JP4535117 B2 JP 4535117B2 JP 2007288726 A JP2007288726 A JP 2007288726A JP 2007288726 A JP2007288726 A JP 2007288726A JP 4535117 B2 JP4535117 B2 JP 4535117B2
Authority
JP
Japan
Prior art keywords
physical
data
logical
block
written
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.)
Expired - Fee Related
Application number
JP2007288726A
Other languages
English (en)
Other versions
JP2009116601A (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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2007288726A priority Critical patent/JP4535117B2/ja
Priority to EP08253498.3A priority patent/EP2058737B1/en
Priority to US12/265,324 priority patent/US8205033B2/en
Publication of JP2009116601A publication Critical patent/JP2009116601A/ja
Application granted granted Critical
Publication of JP4535117B2 publication Critical patent/JP4535117B2/ja
Expired - Fee Related 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

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

本発明は、たとえばNANDフラッシュメモリに適用可能な、不揮発性メモリを有するメモリ装置、メモリ管理方法、およびプログラムに関するものである。
NANDフラッシュメモリは“書き込み”、“読み込み”、“消去”により電気的にデータを操作することができる。
たとえば、“書き込み”による各ビットの書き換えは「1」から「0」の一方向だけであることから、新たにデータを書き込む際にはいったん“消去”により全てのビットを「1」にしてから“書き込み”を行う必要がある。
NANDフラッシュメモリにおいては、図1に示すように、書き込み/読み込みの最小単位はページPG、“消去”の最小単位はページが複数集まったブロックBLKである。
たとえば、ページPGは512バイトに予備の16バイトを加えた528バイト、つまり4224ビットにより形成され、ブロックBLKはPG0〜PG31の32個のページを含む。
“書き込み”の最小単位にくらべて、“消去”の最小単位は数十倍大きいので、NANDフラッシュの書き換えを効率よく行うにはなんらかの対策が必要である。
NANDフラッシュメモリの各ページPGは、図2に示すように、データを書き込むデータ領域1と付加的な情報を書き込む拡張領域2により構成される。
一般的に、NANDフラッシュメモリは、ブロックBLK内のページPG(拡張領域も含む)の書き込みを、図3(A)に示すように、若い番号のページから順番に行わなければならない。すなわち、NANDフラッシュメモリは、図3(B)に示すように、ブロックBLKB内でランダムな書き込みは禁止されている。
また、NANDフラッシュメモリには出荷時に不良ブロックと呼ばれる使用できないブロックが存在し、不良ブロックをよけてNANDフラッシュメモリへの読み書きを行う必要がある。
NANDフラッシュメモリには以上のような特徴があるが、NANDフラッシュメモリに対しても既存のファイルシステムやツールをそのまま、または若干の変更を加えるだけで使えるようにできることが望ましい。
そのためには“消去”の操作や不良ブロックを意識せずに使用できるようにする必要がある。
このため、NANDフラッシュメモリの利用側、たとえばファイルシステムからの要求を解釈してNANDフラッシュメモリを操作する命令に変換するレイヤー(論理‐物理(論物)変換層)を実装する必要がある。
これに関する技術は種々提案されている(たとえば、特許文献1,2参照)。
特許文献1に記載されている不揮発性メモリは、停電等のデバイス操作中のシステムダウン時においても、正常な記憶状態に復帰する仕組みを備えている。また、この不揮発性メモリの論理アドレス‐物理アドレス変換(論物変換)の単位がブロックサイズであり、書き込みサイズがブロックサイズである。
また、特許文献2に記載されているNANDフラッシュメモリは、ページ単位の論物変換を行っており、ブロック単位の論物変換より、効率よくデータの書き換えを行うことができる。
特開2003-36209号公報 特開2002-32256号公報
ところが、上記の特許文献1に記載された不揮発性メモリにおいては、停電等のデバイス操作中のシステムダウン時においても、正常な記憶状態に復帰する仕組みを備えているが、論物変換の単位がブロックサイズであり、書き込みサイズがブロックサイズに限定される。
そのため、ブロックサイズより小さいデータの書き換えでも、NANDフラッシュメモリへのブロックサイズの書き込みが必要で、データの書き込みの無駄が大きいという不利益がある。
また、特許文献2に記載されたNANDフラッシュメモリにおいては、ブロック単位の論物変換より、効率よくデータの書き換えを行うことができる。
しかし、図3に示すNANDフラッシュメモリのブロック内のページの書き込み順序の制約を満たすためには、論物変換に必要な管理情報を格納するために別途不揮発性メモリやNANDフラッシュメモリのデータ領域が必要になり、システムの構成が複雑になってしまうという不利益がある。
また、特許文献2においては、停電等のデバイス操作中のシステムダウン時において正常な記憶状態に復帰する仕組みが何ら考慮されていない。
本発明は、書き換えの効率化と使用率を向上を図ることができ、また、停電時等の書き込み中や消去中のシステムダウン時においても正常な記憶状態に復帰することが可能なメモリ装置、メモリ管理方法、およびプログラムを提供することにある。
本発明の第1の観点のメモリ装置は、データの書き込みおよび読み込みがページ単位で実行され、データの消去が複数のページを含むブロック単位で実行される不揮発性メモリと、上記不揮発性メモリへのアクセスを管理する制御部と、揮発性メモリとを有し、上記不揮発性メモリは、上記不揮発性メモリの物理アドレス空間を、上記ブロックのサイズの整数分の1かつ上記ページのサイズの整数倍のトランスレーションユニット(TU)単位で分割した物理TU毎に、上記不揮発性メモリに書き込むデータのためのデータ領域および拡張領域を有し、上記揮発性メモリは、上記不揮発性メモリにアクセスするための論理アドレス空間を上記トランスレーションユニット(TU)単位で分割した論理TUと上記物理TUとを対応付けた変換テーブルと、上記不揮発性メモリの各上記物理TUの状態として、データを消去した未書き込みのクリーン状態、上記変換テーブルに登録されて有効なデータを格納するインユース状態、および上記変換テーブルに登録されていない無効なデータを格納するインバリッド状態のいずれかの状態を含む物理TU状態マップとを記憶し、上記制御部は、上記変換テーブルを用いて上記論理アドレスを上記物理アドレスへ変換して、上記トランスレーションユニット(TU)単位で上記不揮発性メモリにアクセスし、上記不揮発性メモリにデータを書き込む場合には、書き込み対象の物理TUの拡張領域に、当該物理TUに対応する論理TUと、当該物理TUを含むブロックに対する上記不揮発性メモリでの書き込み順を示すシーケンシャル番号とを含む管理情報を書き込み、上記不揮発性メモリを起動する場合に、上記不揮発性メモリの拡張領域の管理情報を走査し、上記論理TUに対して、当該論理TUに対応付けられた最新のシーケンシャル番号の物理TUを対応付けるように上記変換テーブルを生成し、さらに、上記変換テーブルを参照して上記物理TUを管理するための物理TU状態マップを生成し、上記不揮発性メモリの起動の後には、起動時に生成した上記変換テーブルを用いてアドレスを変換し、上記物理TU状態マップを用いてクリーン状態の物理TUを書き込み先に選択する。
好適には、上記制御部は、上記不揮発性メモリにデータを書き込む場合に、上記物理TU状態マップにおいて、最新のシーケンシャル番号を持つブロックにクリーン状態の物理TUが複数含まれているときには、当該最新のシーケンシャル番号を持つブロックを選択し、選択した当該ブロックのクリーン状態の複数の物理TUに対して、予め定められた一定の順番でデータを書き込んでもよい。
好適には、上記制御部は、上記不揮発性メモリにデータを書き込む場合に、上記物理TU状態マップにおいて、最新のシーケンシャル番号を持つブロックにクリーンな物理TUが含まれていないときには、未書き込みの新たなブロックをランダムに選択し、選択した当該ブロックのクリーン状態の複数の物理TUに対して、予め定められた一定の順番でデータを書き込み、データを書き込んだ物理TUの拡張領域に、上記最新のシーケンシャル番号を持つブロックの次の書き込み順を示すシーケンシャル番号を書き込んでもよい。
好適には、上記制御部は、上記変換テーブルにおいて既に物理TUが対応付けられている論理TUに対して新たなデータが書き込まれる場合には、当該新たなデータを当該既対応の物理TUとは異なる別の物理TUへ書き込み、上記変換テーブルにおいて上記論理TUに当該別の物理TUを対応付け、上記物理TU状態マップにおいて上記既対応の物理TUをインバリッド状態とし、上記別の物理TUをインユース(INUSE)状態に更新してもよい。
好適には、上記制御部は、上記不揮発性メモリの拡張領域の上記管理情報を走査し、同じ論理TUに対応付けられた物理TUが複数存在する場合には、当該複数の物理TUのうち、一番新しくデータが書き込まれた物理TUの上記物理TU状態マップの登録状態をインユース(INUSE)状態とし、それ以外の物理TUの上記物理TU状態マップの登録状態をインバリッド状態に更新してもよい。
好適には、上記制御部は、上記同じ論理TUに対応付けられた複数の物理TUが異なるブロックにある場合には、その内の最新のシーケンシャル番号に対応するブロックの物理TUを、上記一番新しく書き込まれた物理TUとし、上記同じ論理TUに対応付けられた複数の物理TUが同じブロックにある場合には、予め定められた同一ブロック内でのデータの書き込み順において、その内の最も後にデータが書き込まれる物理TUを、上記一番新しく書き込まれた物理TUとしてもよい。
好適には、上記制御部は、上記不揮発性メモリにデータを書き込む場合には、上記不揮発性メモリから未使用のブロックを選択し、選択した当該未使用のブロック内の物理TU単位でデータの書き込み処理を実行し、上記データの書き込みによりデータ書き込み処理が完了した有効な物理TUとデータ書き込み処理が完了しなかった無効な物理TUとを含むブロックが生じた場合には、当該ブロックのうち上記有効な物理TUを別の未使用のブロックへコピーし、当該コピー元のブロックを消去するフォールド操作を行ってもよい。
好適には、上記制御部は、上記フォールド操作において、フォールド元のブロック内の全てのインユース(INUSE)の物理TUから、各々の物理TUのデータおよび管理情報を読み込み、読み込んだデータおよび論理TU番号をフォールド先のブロックに書き込み、その後にフォールド元のブロックを消去してもよい。
好適には、上記制御部は、上記不揮発性メモリにデータを書き込む場合には、上記物理TU毎にデータを書き込み、書き込みを完了した物理TUの拡張領域に、当該物理TUへのデータ書き込みが完了した時点で、データの書き込みが完了したか否かを示すステート情報を書き込み、上記不揮発性メモリを起動する場合に、最後に書き込みを行った最新のシーケンシャル番号を持つブロックの各物理TUの上記ステート情報をチェックし、データを有しかつ上記ステート情報が書き込まれていない物理TUを検出したときには、前記フォールド操作を実行してもよい。
好適には、上記制御部は、上記不揮発性メモリにデータを書き込む場合、データの書き込み対象の物理TUの拡張領域に、当該拡張領域の管理情報が正しいか否かを示す情報を書き込み、上記不揮発性メモリを起動する場合に、上記管理情報が正しいか否かを示す情報をチェックすることにより管理情報の値が正しいかどうかをチェックしてもよい。
本発明の第2の観点のメモリ管理方法は、データの書き込みおよび読み込みがページ単位で実行され、データの消去が複数のページを含むブロック単位で実行される不揮発性メモリと、上記不揮発性メモリへのアクセスを管理する制御部と、揮発性メモリとを有し、上記不揮発性メモリは、上記不揮発性メモリの物理アドレス空間を、上記ブロックのサイズの整数分の1かつ上記ページのサイズの整数倍のトランスレーションユニット(TU)単位で分割した物理TU毎に、上記不揮発性メモリに書き込むデータのためのデータ領域および拡張領域を有する、メモリ装置の管理方法であって、上記揮発性メモリは、上記不揮発性メモリにアクセスするための論理アドレス空間を上記トランスレーションユニット(TU)単位で分割した論理TUと上記物理TUとを対応付けた変換テーブルと、上記不揮発性メモリの各上記物理TUの状態として、データを消去した未書き込みのクリーン状態、上記変換テーブルに登録されて有効なデータを格納するインユース状態、および上記変換テーブルに登録されていない無効なデータを格納するインバリッド状態のいずれかの状態を含む物理TU状態マップとを記憶し、上記制御部は、上記変換テーブルを用いて上記論理アドレスを上記物理アドレスへ変換して、上記トランスレーションユニット(TU)単位で上記不揮発性メモリにアクセスし、上記不揮発性メモリにデータを書き込む場合には、書き込み対象の物理TUの拡張領域に、当該物理TUに対応する論理TUと、当該物理TUを含むブロックに対する上記不揮発性メモリでの書き込み順を示すシーケンシャル番号とを含む管理情報を書き込み、上記不揮発性メモリを起動する場合に、上記不揮発性メモリの拡張領域の管理情報を走査し、上記論理TUに対して、当該論理TUに対応付けられた最新のシーケンシャル番号の物理TUを対応付けるように上記変換テーブルを生成し、さらに、上記変換テーブルを参照して上記物理TUを管理するための物理TU状態マップを生成し、上記不揮発性メモリの起動の後には、起動時に生成した上記変換テーブルを用いてアドレスを変換し、上記物理TU状態マップを用いてクリーン状態の物理TUを書き込み先に選択する。
本発明の第3の観点のプログラムは、データの書き込みおよび読み込みがページ単位で実行され、データの消去が複数のページを含むブロック単位で実行される不揮発性メモリと、上記不揮発性メモリへのアクセスを管理する制御部と、揮発性メモリとを有し、上記不揮発性メモリは、上記不揮発性メモリの物理アドレス空間を、上記ブロックのサイズの整数分の1かつ上記ページのサイズの整数倍のトランスレーションユニット(TU)単位で分割した物理TU毎に、上記不揮発性メモリに書き込むデータのためのデータ領域および拡張領域を有する、メモリ装置での上記制御部としてのコンピュータに実行されるプログラムであって、上記揮発性メモリに、上記コンピュータによる上記プログラムの実行により、上記不揮発性メモリにアクセスするための論理アドレス空間を上記トランスレーションユニット(TU)単位で分割した論理TUと上記物理TUとを対応付けた変換テーブルと、上記不揮発性メモリの各上記物理TUの状態として、データを消去した未書き込みのクリーン状態、上記変換テーブルに登録されて有効なデータを格納するインユース状態、および上記変換テーブルに登録されていない無効なデータを格納するインバリッド状態のいずれかの状態を含む物理TU状態マップとを記憶させ、上記コンピュータに、上記変換テーブルを用いて上記論理アドレスを上記物理アドレスへ変換して、上記トランスレーションユニット(TU)単位で上記不揮発性メモリにアクセスする手順と、上記不揮発性メモリにデータを書き込む場合には、書き込み対象の物理TUの拡張領域に、当該物理TUに対応する論理TUと、当該物理TUを含むブロックに対する上記不揮発性メモリでの書き込み順を示すシーケンシャル番号とを含む管理情報を書き込む手順と、上記不揮発性メモリを起動する場合に、上記不揮発性メモリの拡張領域の管理情報を走査し、上記論理TUに対して、当該論理TUに対応付けられた最新のシーケンシャル番号の物理TUを対応付けるように上記変換テーブルを生成し、さらに、上記変換テーブルを参照して上記物理TUを管理するための物理TU状態マップを生成する手順と、上記不揮発性メモリの起動の後には、起動時に生成した上記変換テーブルを用いてアドレスを変換し、上記物理TU状態マップを用いてクリーン状態の物理TUを書き込み先に選択する手順とを実行させる。
本発明によれば、ページサイズ以上ブロックサイズ以下のサイズで論物変換の単位を選択できる。本発明においては、ブロックの書き込み順序(シーケンシャル番号)という情報を導入することにより、不揮発性メモリ内のページの書き込み順序の制約を満たしながら、論物変換に必要な管理情報を拡張領域に納めることができるようになる。
本発明によれば、書き換えの効率化と使用率の向上を図ることができ、また、停電時等の書き込み中や消去中のシステムダウン時においても正常な記憶状態に復帰することができる。
以下、本発明の実施形態を添付図面に関連付けて説明する。
図4は、本発明の実施形態に係るメモリ装置の基本的な構成例を示すブロック図である。
本メモリ装置10は、不揮発性メモリであるNANDフラッシュメモリ11、たとえばDRAMやSRAMの揮発性メモリにより構成されるメモリ12、および制御部としてのCPU13を有している。
NANDフラッシュメモリ11、メモリ12、およびCPU13は、バス14を介して相互に接続されている。
NANDフラッシュメモリ11は、複数のメモリセルが直列に接続されたNANDストリングがアレイ状に配列されたメモリセルアレイを有し、電気的に書き込み、読み込み、および消去が可能である。
NANDフラッシュメモリ11の書き込み/読み込みの最小単位はページPG、消去の最小単位はページが複数集まったブロックBLKである。
たとえば、ページPGは512バイトのデータ領域に拡張領域の16バイトを加えた528バイト、つまり4224ビットにより形成され、ブロックBLKはPG0〜PG31の32個のページを含む。
たとえば、2Gbitチップの場合には、128KBのブロックBLK0〜BLK2047の2048個あり、各ブロックには、2KBのページPGが64個あり、各ブロックは128KB=2KB×64で構成される。
NANDフラッシュメモリ11へのアクセス管理は、拡張領域に書き込まれる管理情報、書き込み完了データ情報、あるいはCRC情報等、並びにメモリ12に構築される論物変換テーブル(論理‐物理変換テーブル)、物理トランスレーションユニット(TU)状態マップの情報に基づきCPU13の制御に従って行われる。
なお、ここで、NANDフラッシュメモリ11へのアクセスとは、書き込み、読み込み、および消去の各操作(アドレス変換、ガーベッジコレクション、ウェアーレベリング等に相当する制御処理も含む)に係るメモリアクセスを含む。
メモリ12は、プログラム格納用のROM、作業用メモリであるRAM等を含む。
メモリ12には、CPU13の制御の下、後で詳述する論物変換テーブル(論理‐物理ス変換テーブル)、および物理(TU)状態マップが構築される。
CPU13は、NANDフラッシュメモリ11の拡張領域に書き込まれる管理情報、書き込み完了データ、あるいはCRC情報等、並びにメモリ12に構築される論物変換テーブル(論理アドレス‐物理アドレス変換テーブル)、物理(TU)状態マップの情報に基づき、NANDフラッシュメモリ11へのアクセスを管理する制御部として機能する。
CPU13は、ブロックBLKの整数分の1かつページサイズの整数倍のトランスレーションユニット(TU)単位で論物変換を行って、NANDフラッシュメモリ11のアクセス管理を行う。
CPU13は、ブロックの内容のうち、使用中の物理TUだけ全てを別の未使用の物理TUがあるブロックにコピーし、元のブロックを消去することにより、元のブロックに含まれていた無効の物理TUの数だけ、新たに未使用の物理TUを増やす操作制御を行う機能を有する。
以下の説明では、この操作をフォールド操作という。
また、CPU13は、NANDフラッシュメモリ11の拡張領域に、対応する論理TU番号LTUN、およびブロックの書き込み順序をあらわすシーケンシャル番号SQNを書き込むことにより、再起動時にNANDフラッシュメモリの拡張領域の情報のみから論物変換テーブルを構築し、メモリ12に格納する。
また、CPU13は、NANDフラッシュメモリ11の拡張領域に、書き込みが完了したことを示すステート情報と拡張領域の管理情報のCRCを書き込むことにより、NANDフラッシュメモリ11への書き込み中または消去中の電源断から正常な状態に復旧する。
ここで、NANDフラッシュメモリ11上における物理TUの構成例および拡張領域のデータ構造について説明する。
図5は、本実施形態における、物理TU内の基本的な構成例および拡張領域に格納される管理情報に係るデータ構造を示す図である。
物理TUは、図5に示すように、通常のデータが記憶されるデータ領域21、少なくとも物理TUの管理情報22が記憶される拡張領域23により構成される。
管理情報22は、対応する論理TU番号LTUN、およびブロックBLKごとに割り当てられる書き込み順序情報であるシーケンシャル番号SQNを含む。
そして、拡張領域23は、シーケンシャル番号記憶領域231と、論理TU番号記憶領域232とを有している。拡張領域23におけるシーケンシャル番号記憶領域231と論理TU番号記憶領域232を管理領域という場合もある。
拡張領域23には、後で説明するように、管理情報22の他に、書き込み完了データやCRC等の書き込みが完了したTUであるかを判別するための情報が記録される。
また、本実施形態においては、最も新しいシーケンシャル番号が割り当てられているブロックのことを最新ブロックと呼ぶ。
次に、メモリ12上のデータ構造について説明する。
図6は、本実施形態におけるメモリ上のデータ構造について説明するための図である。ここでは、ブロック、論理TU、物理TUを管理するためのメモリ上のデータ構造について説明する。
メモリ12上には、論物変換テーブルLPTT、物理TU状態マップSTMP、およびシーケンシャル番号テーブルSQNTが形成される。
論物変換テーブルLPTTは、論理TU番号(アドレス)LTUNから対応する物理TU番号(アドレス)BTUNを得るためのテーブルである。
物理TU状態マップSTMPは、各物理TUの状態を管理するためのマップで、状態は、クリーン(CLEAN)、インユース(INUSE)、ダーディ(DIRTY)、およびディフェクト(DEFECT)
の4種類存在する。
クリーン(CLEAN)は、消去操作を行った後の未書き込みの状態である。
インユース(INUSE)は、論物変換テーブルLPTTから参照される有効なデータが格納されている状態である(有効(バリッド)状態ということができる)。
ダーティ(DIRTY)は、論物変換テーブルLPTTから参照されない無効なデータが格納されている状態である(無効(インバリッド)状態ということができる)。
ディフェクト(DEFECT)は、不良ブロックの中の物理TUである状態である。
シーケンシャル番号テーブルSQNTは、各ブロックに割り当てられたシーケンシャル番号SQNを格納するためのテーブルである。論物変換テーブルLPTTの構築の処理の際のみに使用する。
以下に、本実施形態の制御部としてのCPU13のより具体的な機能および管理情報や書き込み完了を判別する情報に基づく制御機能について具体的に説明する。
本実施形態に係るCPU13の特徴は、上述したように、TU(トランスレーションユニット)単位の論物変換である。
図7は、NANDフラッシュメモリの物理的なブロック、ページ、TUの関係を示す図である。
TUのサイズは、ブロックサイズの整数分の1かつページサイズの整数倍である。
NANDフラッシュメモリデバイス上の実際のTUを物理TU、本発明の実施形態によってアドレス変換されて利用側に提供されるTUを論理TUと呼ぶ。
これにより、ファイルシステムの読み書きの単位と一致させるなど、柔軟な読み書きのサイズを設定することができる。
CPU13は、TU単位の論物変換を実現するために、論理TU番号(アドレス)から対応する物理TU番号(アドレス)を得るためのテーブルである論物変換テーブルLPTTを利用する。
CPU13は、基本的に論理TUの読み込み、論理TUの書き込み、フォールド、論物変換テーブルの構築を行う機能を有する。以下に、これらの機能について説明する。
<論理TUの読み込み>
図8は、論理TUの読み込み動作を示す図である。
CPU13は、論理TUを読み込む際には、図8に示すように、論物変換テーブルLPTTから論理TU番号に対応する物理TU番号を求め、その物理TUを読み込む。論物変換テーブルLPTTを介すことにより、不良ブロックを回避することができる。
<論理TUの書き込み>
図9は、論理TUの書き込み動作を示す図である。
書き込み前は、論理TU L1には物理TU P1が対応している。
CPU13は、まず、未書き込みの物理TU P2に書き換えを行いたいデータを書き込む(図9のST1)。
次に、CPU13は、論物変換テーブルLPTTの論理TU L1に、書き込みを行った物理TU P2を対応させる(図9のST2)。
ここでは、物理TU P2のように最新のデータが格納されている状態を有効、前の物理TU P1のように消去対象の古いデータが格納されている状態を無効と呼ぶ。
<フォールド>
図10は、本実施形態に係るフォールド動作を示す図である。
NANDフラッシュメモリ11はブロックBLK単位でしか消去できないため、図9の物理TU P1のようにブロックBLK内の他に有効な物理TUがあると、無効な物理TUであっても消去することができない。
そのため、書き込みを繰り返すにつれ無効な物理TUが増加する一方で、書き込み可能な未書き込みの物理TUが減少する。
そこで、CPU13は、図10に示すように、無効な物理TUの数を減らし、未書き込みの物理TUを増やすために、有効な物理TUだけを書き込み対象ブロックBLKに移動し(ST11)、移動元のブロックを消去する操作を行う(ST12)。
本実施形態においては、この操作をフォールドと呼ぶ。
<論物変換テーブルの構築>
論物変換テーブルLPTTは揮発性のメモリ12上の情報であり、電源が切れると失われる。その場合でも、電源投入後に、NANDフラッシュメモリ11上の情報から論物変換テーブルLPTTの構築ができるように、CPU13は、物理TUへデータの書き込み時に拡張領域に論理TU番号の書き込みを行う。
CPU13は、起動時に、各物理TUの拡張領域の管理情報を走査することにより、論物変換テーブルLPTTをメモリ12上に構築する。
ただし、論理TU の書き込みの際に古くなった物理TU(無効な物理TU)はすぐには消去しないので、たとえば図9における物理TU P1と物理TU P2のように、複数の物理TU が同じ論理TU番号を持つことが起こる。
CPU13は、論物変換テーブルLPTTの構築の際に、論理TU番号に対応する有効な物理TUを知るためには、最後に書き込んだ物理TUを判別する必要がある。
そこで、本実施形態においては、CPUI3は、図11に示すように、ブロックBLKの書き込みの順序情報であるシーケンシャル番号SQNをブロックBLKごとに割り当てながら、順序が若いブロックから順に書き込みを行う。
CPU13は、同一ブロックBLK内では、図3のブロック内のページの書き込み順序を満たすように、物理TU番号の若い物理TUから順に書き込みを行う。
CPU13は、物理TUの書き込みの際に、拡張領域に論理TU番号に加えてシーケンシャル番号SQNを記録する。
図11の例においては、ブロックBLKBLKmにはシーケンシャル番号SQNとしてSが付与され、次のブロックBLKBLKm+1にはシーケンシャル番号SQNとしてS+1が付与され、次のブロックBLKBLKm+2にはシーケンシャル番号SQNとしてS+2が付与され、次のブロックBLKBLKm+3にはシーケンシャル番号SQNとしてS+3が付与されている。
CPU13は、論物変換テーブルLPTTの構築の際に、シーケンシャル番号SQNから物理TUの書き込み順序が一意にわかるので、同じ論理TU番号を持つ物理TUのうち、最後に書き込んだ物理TU、つまり有効な物理TUを判別することができる。
次に、論物変換テーブル構築の具体例について、図12および図13(A)〜(C)に関連付けて説明する。
図12は、メモリ上の論物変換テーブルとNANDフラッシュメモリの各物理TUの拡張領域に書き込まれている管理情報(論理TU番号LTUNとシーケンシャル番号(SQN))の関係の一例を示す図である。
図13(A)〜(C)は、図12のNANDフラッシュメモリの管理情報を物理TU0から順に走査することにより、論物変換テーブルが構築されていく様子を示す図である。
図13(A)〜(C)では、論物変換テーブルLPTTで更新があった項目についてのみ矢印(→)で新たに割り当てられた物理TUを指し示すようになっている。また、図中(*)で示す物理TUがダーティ(DIRTY)と判別された理由について記述している。
図13(A)は、ブロックBLK0の走査直後の状態を示している。
この場合、ブロックBLK0において、同じ論理TU番号4を持つ物理TU3の方が新しいため、(*)で示す物理TUがダーティ(DIRTY)と判別されている。
図13(B)は、ブロックBLK1の走査直後の状態を示している。
この場合、ブロックBKL0とBLK1において、同じ論理TU番号1を持つ物理TU4の方が新しいため、(*)で示すブロックBLK0のブロック物理TUがダーティ(DIRTY)と判別されている。
図13(C)は、ブロックBLK2、BLK3の走査直後の状態を示している。
この場合、ブロックBKL3とBLK0において、同じ論理TU番号5を持つ物理TU0の方が新しいため、(*)で示すブロックBLK3のブロック物理TUがダーティ(DIRTY)と判別されている。
次に、上記構成による具体的な各種動作をCPU13の制御を中心に説明する。
まず、論理TUの読み込み動作について説明する。
<論理TUの読み込み>
CPU13は、読み込みを行う論理TUの番号を、メモリ12に格納されている論物変換テーブルLPTTを参照することで物理TU番号に変換する。そして、CPU13は、データの読み出しを実施する物理TUを特定し、そのデータ領域を読み込む。
次に、論理TUの書き込み動作ついて説明する。
<論理TUの書き込み>
図14は、データの書き込みの動作を示すフローチャートである。
図14においては、物理TUをPTUとして表記している。
CPU13は、まず、書き込み対象PTUがブロックの最後のTUであるか否かを判別する(ST101)。
ステップST101において、書き込み対象PTUがブロックの最後のTUであると判別すると、未書き込みのブロックを一つ選び、その先頭TUを書き込み対象PTUとする(ST102)。
そして、最新のシーケンシャル番号SQNを1増加する(ST103)。
次に、書き込み対象PTUに、指定されたデータ、論理TU番号(L)、最新のシーケンシャル番号を書き込む(ST104)。
次に、CPU13は、論物変換テーブルLPTT、物理TU状態マップSTMPを更新する(ST105)。
なお、ステップST101において、書き込み対象PTUがブロックの最後のTUではないと判別すると、ステップST102ではなくステップST106に移行し、書き込み対象PTUを次の物理TUに進め、ステップST104の処理に移行する。
このように、論理TU番号の書き込みにおいては、最新のシーケンシャル番号SQNを持つブロックBLK内の物理TUで、その最終物理TUから連続する最も番号の若いクリーン(CLEAN)な物理TUに対して書き込みを行う。
もし、最終物理TUがクリーン(CLEAN)でなければ、未書き込みのブロック(すべての物理TUがクリーン(CLEAN)なブロック)をランダムに選択し、シーケンシャル番号SQNを1ステップ進めて、そのブロックに書き込む(この書き込みの対象になっている物理TUのことを書き込み対象PTU、書き込みの対象PTUが含まれるブロックのことを書き込み対象ブロックと呼ぶ)。
ステップST105においては、論物変換テーブルLPTT、物理TU状態マップSTMPを次のように更新する。
物理TU状態マップSTMPは、論物変換テーブルLPTTで論理TU Lに前に対応していた物理TUの状態をダーティ(DIRTY)に、書き込み対象PTUの状態をインユース(INUSE)に設定する。
論物変換テーブルLPTTは、論理TU Lに書き込み対象PTUを対応させる。
次に、フォールド動作について説明する。
<フォールド>
図15は、本実施形態に係るフォールドの動作を示すフローチャートを示す。
図15のフローチャート中においては、フォールド処理中の物理TUをPと表記している。
CPU13は、フォールド対象のブロックとして少なくとも一つのダーティ(DIRTY)な物理TUを含むブロックを選択する(ST111)。
フォールド対象のブロック内の全てのインユース(INUSE)のTUに対して、以下の処理行う。
物理TU内のデータおよび管理情報を読み込む(ST112)。
次に、ステップST112で読み込んだデータ、論理TU番号を指定して、読み込んだ内容を書き込む。換言すれば、論理TUの書き込みを行う(ST113)。
フォールド対象のブロック内の全てのインユース(INUSE)をTUに対して、上記の処理行った後、フォールド対象のブロックを消去する。
次に、起動時のテーブル構築について説明する。
<起動時のテーブル構築>
論物変換テーブルLPTT、物理TU状態マップSTMPはメモリ12上のデータであり、電源断により失われてしまう。
本実施形態においては、その場合でも、NANDフラッシュの拡張領域23に書き込まれた管理情報(論理TU番号LTUNおよびシーケンシャル番号SQN)を走査することにより、論物変換テーブルLPTT、物理TU状態マップSTMPを復元することができる。
図16は、ブロックごとの拡張領域の走査と、論物変換テーブルおよび物理TU状態マップの復元の手順について示すフローチャートである。
図16のフローチャート中において、走査中の物理TUをP1と表記している。
NANDフラッシュの拡張領域の走査は、走査対象ブロック内の不良ブロック以外のすべてのブロック内に対して以下の処理を行う。
CPU13は、物理TUP1の拡張領域23における管理情報22の記憶領域(ここでは管理領域という)231,232を読み込む(ST121)。
次に、物理TUP1の管理領域が未書き込み(全てが0xFF)であるか否かを判別する(ST122)。
ステップST122において、管理領域が未書き込みであると判別すると、物理TUP1の状態をクリーン(CLEAN)に設定する(ST123)。
ステップST122において、管理領域が未書き込みでないと判別すると、物理TUP1の管理領域の論理TU番号をLとする。管理領域のシーケンシャル番号SQNをシーケンシャル番号テーブルSQNTに保存する(ST124)。
次に、現在までに構築された論物変換テーブルLPTTに論理TU番号Lを指す別の物理TUP2が登録されているか否かを判別する(ST125)。
ステップST125において、別の物理TUP2が登録されていないと判別すると、論物変換テーブルLPTTにおいて、論理TU番号Lには物理TU番号P1を対応させる(ST126)。
そして、物理TUP1の状態をインユース(INUSE)に設定する(ST127)。
ステップST125において、別の物理TUP2が登録されていると判別すると、物理TUP1の方が物理TUP2より新しいか否かを判別する(ST128)。これは、シーケンシャル番号SQNとブロック内の位置から判別する。
ステップST128において、物理TUP1の方が物理TUP2より新しいと判別すると、論物変換テーブルLPTTにおいて、論理TU番号Lには物理TU番号P1を対応させる(ST129)。
そして、物理TUP1の状態をインユース(INUSE)に設定し、物理TUP2の状態をダーティ(DIRTY)に設定する(ST130)。
ステップST128において、物理TUP1の方が物理TUP2より新しくないと判別すると、物理TUP1の状態をダーティ(DIRTY)に設定する(ST131)。
走査対象ブロック内の全ての物理TUに対して、上記の処理を行う。
このように起動時のテーブル構築において、同じ論理TU番号を持つ物理TUが複数存在した場合、一番新しく書き込まれた物理TUをインユース(INUSE)と判別し、それ以外をダーティ(DIRTY)と判別する。
書き込み順序はシーケンシャル番号とブロック内の位置から判別できる。
図17(A),(B)は、物理TUの新旧の判別処理を説明するための図である。
図17(A)に示すように、物理TUが異なるブロックにある場合には、シーケンシャル番号SQNの大小で判別する。この例では、シーケンシャル番号SQNがS1<S2であることから、物理TUP2が物理TUP1より新しいと判別する。
図17(B)に示すように、物理TUが同一ブロック内にある場合、物理TU番号PTUNがP2<P1であることから、物理TUP1が物理TUP2より新しいと判別する。
<NANDフラッシュメモリへ書き込み中または消去中の電源断対策>
次に、停電や動作不良等に起因するシステムダウンが生じた後に実施されるシステム復帰処理に伴ってNANDフラッシュメモリ11におけるデータの記憶状態を正常化するための工夫について述べる。
NANDフラッシュメモリ11の書き込み中に電源断が発生すると、書き込み中の物理TUのデータや管理情報が中途半端な値になっている可能性がある。また、NANDフラッシュメモリ11の消去中に電源断が発生すると、消去中のブロック中の物理TUのデータや管理情報が完全に消去しきらずに残ってしまう可能性がある。
再起動時に、そのような中途半端な状態の物理TUを有効な物理TUとみなして利用したり、未書き込みとみなして上書きを行ってしまったりしないための仕組みが必要である。
そこで、次のような仕組みを追加する。
<書き込み中の電源断対策>
図18は、書き込み中の電源断と修復処理の一例を示す図である。
データと管理情報の書き込み直後に図18に示すように、別途書き込みを完了したことを表すステート(書き込み完了ステート)情報24を拡張領域23に書き込む。
再起動時に、最後に書き込みを行ったブロック(最新のシーケンシャル番号を持つブロック)について書き込み完了ステートをチェックすることにより、書き込み中の物理TUを検出する。
たとえば、図18に示すように、再起動時に、物理TUP3について、データや管理情報の書き込みがある一方、書き込み完了ステート情報が未書き込みであることから、CPU13は書き込み中の電源断を検出する。
そして、ブロックBLK1の有効な物理TUの内容のみを未書き込みのブロックBLK2に移動する。
そして、ブロックBLK1を消去する。
すなわち、書き込み中の物理TUを検出したら、図18に示すような修復処理を行って、書き込み中の物理TUを消去する。
<消去中の電源断対策>
図19は、消去中の電源断と修復処理の一例を示す図である。
図19に示すように、管理情報22に対するCRC25を拡張領域23に追加する。
再起動時に、管理情報のCRCをチェックすることにより管理情報の値が正しいかどうかをチェックする。
図19では、消去中の電源断が発生してデータ領域21や拡張領域23が不正な状態になった場合にも、修復処理によって消去中だったブロックが再度消去されること示している。
たとえば、図19に示すように、論物変換テーブル構築時に、このブロック内の物理TUを、その消去の状態に応じて、次のように、ダーティ(DIRTY)またはクリーン(CLEAN)と判断する。
(a):管理情報、CRCが完全に残っている場合、もともともこの物理TUはダーティ(DIRTY)であり、正しくダーティ(DIRTY)と判断する。
(b):管理情報、CRCの一部が残っている場合、CRCのチェックが正しくないことからダーティ(DIRTY)と判断する。
(c):管理情報、CRCが全て消去されている場合、クリーン(CLEAN)と判断する。
そしT、ブロックBLKにはインユース(INUSE)な物理TUがないので消去する。修復処理では、インユース(INUSE)な物理TUを一つも含まないブロックを消去する。
次に、デバイス操作中の電源断対策を行う場合について、前節の“動作説明”で述べた動作と異なる点を述べる。以下のように「論理TUの書き込み」および「論物変換テーブルの構築」が異なる。
<論理TUの書き込み>
図20は、電源断対策を行う場合の論理TUの書き込みの動作のフローチャートである。
この図20の処理と図14の処理と比較すると、ステップST104Aの処理において、拡張領域に書き込む管理情報にCRCが追加された点、およびステップST105の処理の前に、データと管理情報の書き込み直後に、別途書き込みを完了したことを表すステートを書き込むステップST107が設けられている点が異なる。
<論物変換テーブルの構築>
図21は、電源断対策を行う場合の論理TUの書き込みの動作のフローチャートである。
この図21の処理と図16の処理を比較すると、ステップST122において否定的な判別を行った場合に、拡張領域23に書き込み完了ステート情報が正しく書き込まれているか否かを判別するステップST132と、正しく書き込まれていると判別した場合に、拡張領域のCRCが正しいか否かを判別するステップST133が設けられている点が異なる。
論物変換テーブル構築後には、さらに修復処理を行う。
図22は、書き込み中または消去中の電源断からの修復処理を示すフローチャートである。
たとえば、不良ブロック以外で、インユース(INUSE)な物理TUが一つも含まれないブロックを全て消去する(ST141)。ここでは、消去中の電源断のための修復処理を行う。
次に、最新ブロックをB1、最新ブロックB1の最も物理TU番号の大きいクリーン(CLEAN)でない物理TUをP1とする(ST142)。
物理TUP1はダーティ(DIRTY)であるか否かを判別する(ST143)。
ステップST143において、物理TUP1はダーティ(DIRTY)でないと判別すると、物理TUP1はブロックB1の最終物理TUであるか否かを判別する(ST144)。
ステップST144において、最終物理TUでないと判別すると、物理TUP1より1つ物理TU番号の大きい物理TUをP2とする。そして、物理TUP2のデータ領域21、拡張領域23全体を読み込む(ST145)。
次に、読み込んだデータが全て“FFh”のパターンであるか否かを判別する(ST146)。そして、ステップST146において、全て“FFh”のパターンである判別した場合、ステップST144で最終物理TUであると判別した場合は処理を終了する。
一方、ステップST143において、物理TUP1がダーティ(DIRTY)であると判別した場合、または、ステップST146において、全て“FFh”のパターンでないと判別した場合には、ブロックB1の修復処理(リロケート)を行う(ST147)。
ステップST147においては、書き込み中の電源断のための修復処理(リロケート)を行う。
図23は、リロケート処理のフローチャートである。
図23のフローチャ中では、リロケート処理中の物理TUはPと表記している。
書き込み対象PTUを書き込み対象ブロックの最終物理TUに設定する(ST1471)。
リロケート対象のブロック内の全てのインユース(INUSE)なTUに対し、以下の処理を行う。
物理TU内のデータ、および管理領域(管理情報が記憶されている記憶領域)を読み込む(ST1472)。
読み込んだ内容を書き込む(ST1473)。
リロケート対象のブロック内の全てのインユース(INUSE)なTUに対し、上記の処理を行う。
そして、リロケート対象のブロックを消去する(ST1474)。
なお、ステップST1471において、あらかじめ書き込み対象PTUをブロックの最終物理TUにしているのは、ステップST1473での書き込みの開始の物理TUとして、未書き込みのブロックの先頭の物理TUを設定するためである。
以上説明したように、本実施形態によれば、CPU13は、ブロックサイズの整数分の1かつページサイズの整数倍のトランスレーションユニット単位(TU単位)で論物変換を行って、NANDフラッシュメモリ11のアクセス管理を行い、ブロックの内容のうち、使用中の物理TUだけ全てを別の未使用の物理TUがあるブロックにコピーし、元のブロックを消去することにより、元のブロックに含まれていた無効の物理TUの数だけ、新たに未使用の物理TUを増やす操作制御を行う機能と、NANDフラッシュメモリの拡張領域に、対応する論理TU番号、およびブロックの書き込み順序をあらわすシーケンシャル番号を書き込むことにより、再起動時にNANDフラッシュメモリの拡張領域の情報のみから論物変換テーブルを構築し、メモリ12に格納する機能を有することから、以下の効果を得ることができる。
論物変換の単位をページサイズ以上ブロックサイズ以下で選択することができ、ファイルシステム等の要求単位に合わせた論物変換を実現できる。
NANDフラッシュの拡張領域に、論物変換テーブル等の管理情報の構築に必要な情報をすべて格納するので、NANDフラッシュの利用率を向上できる(論物変換テーブル等の管理情報の構築に必要な情報を格納するために、NANDフラッシュのデータ領域を利用したり、別途不揮発性メモリを使用したりせずに済む)。
NANDフラッシュにデータを書き込む際に、同時に論物変換テーブル等の管理情報の構築に必要な情報を書き込むので、論物変換に関する管理情報の書き込みを別途行うことが不要で、効率よくデータの書き換えができる。
また、CPU13は、NANDフラッシュメモリ11の拡張領域に、書き込みが完了したことを示すステート情報と拡張領域の管理情報のCRCを書き込むことにより、NANDフラッシュメモリ11への書き込み中または消去中の電源断から正常な状態に復旧する機能を有することから、停電等のNANDフラッシュの書き込み中や消去中のシステムダウン時においても正常な記憶状態に復帰する仕組みを持たせることもできる。
また、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、CPU等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー(登録商標)ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
NANDフラッシュメモリのブロックとページとの関係を示す図である。 一般的なページの構成例を示す図である。 ブロック内のページの書き込み順序について説明するための図である。 本発明の実施形態に係るメモリ装置の基本的な構成例を示すブロック図である。 本実施形態における、物理TU内の基本的な構成例および拡張領域に格納される管理情報に係るデータ構造を示す図である。 本実施形態におけるメモリ上のデータ構造について説明するための図である。 NANDフラッシュメモリの物理的なブロック、ページ、TUの関係を示す図である。 論理TUの読み込み動作を示す図である。 論理TUの書き込み動作を示す図である。 本実施形態に係るフォールド動作を示す図である。 シーケンシャル番号の具体的な付与例を説明するための図である。 メモリ上の論物変換テーブルとNANDフラッシュメモリの各物理TUの拡張領域に書き込まれている管理情報(論理TU番号LTUNとシーケンシャル番号(SQN))の関係の一例を示す図である。 図12のNANDフラッシュメモリの管理情報を物理TU0から順に走査することにより、論物変換テーブルが構築されていく様子を示す図である。 データの書き込みの動作を示すフローチャートである。 本実施形態に係るフォールドの動作を示すフローチャートを示す。 ブロックごとの拡張領域の走査と、論物変換テーブルおよび物理TU状態マップの復元の手順について示すフローチャートである。 物理TUの新旧の判別処理を説明するための図である。 書き込み中の電源断と修復処理の一例を示す図である。 消去中の電源断と修復処理の一例を示す図である。 電源断対策を行う場合の論理TUの書き込みの動作のフローチャートである。 電源断対策を行う場合のブロックごとの拡張領域の走査と、論物変換テーブルおよび物理TU状態マップの復元の手順について示すフローチャートである。 書き込み中または消去中の電源断からの修復処理を示すフローチャートである。 リロケート処理のフローチャートである。
符号の説明
10・・・メモリ装置、11・・・NANDフラッシュメモリ、12・・・メモリ、13・・・CPU(制御部)、14・・・バス、LPTT・・・論物変換テーブル、21・・・データ領域、22・・・管理情報、23・・・拡張領域、PG・・・ページ、BLK・・・ブロック、TU・・・トランスレーションユニット、SQN・・・シーケンシャル番号。

Claims (12)

  1. データの書き込みおよび読み込みがページ単位で実行され、データの消去が複数のページを含むブロック単位で実行される不揮発性メモリと、
    上記不揮発性メモリへのアクセスを管理する制御部と、
    揮発性メモリと
    を有し、
    上記不揮発性メモリは、
    上記不揮発性メモリの物理アドレス空間を、上記ブロックのサイズの整数分の1かつ上記ページのサイズの整数倍のトランスレーションユニット(TU)単位で分割した物理TU毎に、上記不揮発性メモリに書き込むデータのためのデータ領域および拡張領域を有し、
    上記揮発性メモリは、
    上記不揮発性メモリにアクセスするための論理アドレス空間を上記トランスレーションユニット(TU)単位で分割した論理TUと上記物理TUとを対応付けた変換テーブルと、
    上記不揮発性メモリの各上記物理TUの状態として、データを消去した未書き込みのクリーン状態、上記変換テーブルに登録されて有効なデータを格納するインユース状態、および上記変換テーブルに登録されていない無効なデータを格納するインバリッド状態のいずれかの状態を含む物理TU状態マップと
    を記憶し、
    上記制御部は、
    上記変換テーブルを用いて上記論理アドレスを上記物理アドレスへ変換して、上記トランスレーションユニット(TU)単位で上記不揮発性メモリにアクセスし、
    上記不揮発性メモリにデータを書き込む場合には、書き込み対象の物理TUの拡張領域に、当該物理TUに対応する論理TUと、当該物理TUを含むブロックに対する上記不揮発性メモリでの書き込み順を示すシーケンシャル番号とを含む管理情報を書き込み、
    上記不揮発性メモリを起動する場合に、上記不揮発性メモリの拡張領域の管理情報を走査し、上記論理TUに対して、当該論理TUに対応付けられた最新のシーケンシャル番号の物理TUを対応付けるように上記変換テーブルを生成し、さらに、上記変換テーブルを参照して上記物理TUを管理するための物理TU状態マップを生成し、
    上記不揮発性メモリの起動の後には、起動時に生成した上記変換テーブルを用いてアドレスを変換し、上記物理TU状態マップを用いてクリーン状態の物理TUを書き込み先に選択する
    メモリ装置。
  2. 上記制御部は、
    上記不揮発性メモリにデータを書き込む場合に、上記物理TU状態マップにおいて、最新のシーケンシャル番号を持つブロックにクリーン状態の物理TUが複数含まれているときには、当該最新のシーケンシャル番号を持つブロックを選択し、選択した当該ブロックのクリーン状態の複数の物理TUに対して、予め定められた一定の順番でデータを書き込む
    請求項記載のメモリ装置。
  3. 上記制御部は、
    上記不揮発性メモリにデータを書き込む場合に、上記物理TU状態マップにおいて、最新のシーケンシャル番号を持つブロックにクリーンな物理TUが含まれていないときには、未書き込みの新たなブロックをランダムに選択し、選択した当該ブロックのクリーン状態の複数の物理TUに対して、予め定められた一定の順番でデータを書き込み、データを書き込んだ物理TUの拡張領域に、上記最新のシーケンシャル番号を持つブロックの次の書き込み順を示すシーケンシャル番号を書き込む
    請求項記載のメモリ装置。
  4. 上記制御部は、
    上記変換テーブルにおいて既に物理TUが対応付けられている論理TUに対して新たなデータが書き込まれる場合には、当該新たなデータを当該既対応の物理TUとは異なる別の物理TUへ書き込み、
    上記変換テーブルにおいて上記論理TUに当該別の物理TUを対応付け、
    上記物理TU状態マップにおいて上記既対応の物理TUをインバリッド状態とし、上記別の物理TUをインユース状態に更新する
    請求項記載のメモリ装置。
  5. 上記制御部は、
    上記不揮発性メモリの拡張領域の上記管理情報を走査し、同じ論理TUに対応付けられた物理TUが複数存在する場合には、当該複数の物理TUのうち、一番新しくデータが書き込まれた物理TUの上記物理TU状態マップの登録状態をインユース状態とし、それ以外の物理TUの上記物理TU状態マップの登録状態をインバリッド状態に更新する
    請求項1から4のいずれか一項記載のメモリ装置。
  6. 上記制御部は、
    上記同じ論理TUに対応付けられた複数の物理TUが異なるブロックにある場合には、その内の最新のシーケンシャル番号に対応するブロックの物理TUを、上記一番新しく書き込まれた物理TUとし、
    上記同じ論理TUに対応付けられた複数の物理TUが同じブロックにある場合には、予め定められた同一ブロック内でのデータの書き込み順において、その内の最も後にデータが書き込まれる物理TUを、上記一番新しく書き込まれた物理TUとする
    請求項記載のメモリ装置。
  7. 上記制御部は、
    上記不揮発性メモリにデータを書き込む場合には、上記不揮発性メモリから未使用のブロックを選択し、選択した当該未使用のブロック内の物理TU単位でデータの書き込み処理を実行し、
    上記データの書き込みによりデータ書き込み処理が完了した有効な物理TUとデータ書き込み処理が完了しなかった無効な物理TUとを含むブロックが生じた場合には、当該ブロックのうち上記有効な物理TUを別の未使用のブロックへコピーし、当該コピー元のブロックを消去するフォールド操作を行う
    請求項1からのいずれか一項記載のメモリ装置。
  8. 上記制御部は、
    上記フォールド操作において、フォールド元のブロック内の全てのインユース状態の物理TUから、各々の物理TUのデータおよび管理情報を読み込み、読み込んだデータおよび論理TU番号をフォールド先のブロックに書き込み、その後にフォールド元のブロックを消去する
    請求項記載のメモリ装置。
  9. 上記制御部は、
    上記不揮発性メモリにデータを書き込む場合には、上記物理TU毎にデータを書き込み、書き込みを完了した物理TUの拡張領域に、当該物理TUへのデータ書き込みが完了した時点で、データの書き込みが完了したか否かを示すステート情報を書き込み、
    上記不揮発性メモリを起動する場合に、最後に書き込みを行った最新のシーケンシャル番号を持つブロックの各物理TUの上記ステート情報をチェックし、データを有しかつ上記ステート情報が書き込まれていない物理TUを検出したときには、前記フォールド操作を実行する
    請求項1からのいずれか一項記載のメモリ装置。
  10. 上記制御部は、
    上記不揮発性メモリにデータを書き込む場合、データの書き込み対象の物理TUの拡張領域に、当該拡張領域の管理情報が正しいか否かを示す情報を書き込み、
    上記不揮発性メモリを起動する場合に、上記管理情報が正しいか否かを示す情報をチェックすることにより管理情報の値が正しいかどうかをチェックする
    請求項1からのいずれか一項記載のメモリ装置。
  11. データの書き込みおよび読み込みがページ単位で実行され、データの消去が複数のページを含むブロック単位で実行される不揮発性メモリと、
    上記不揮発性メモリへのアクセスを管理する制御部と、
    揮発性メモリと
    を有し、
    上記不揮発性メモリは、
    上記不揮発性メモリの物理アドレス空間を、上記ブロックのサイズの整数分の1かつ上記ページのサイズの整数倍のトランスレーションユニット(TU)単位で分割した物理TU毎に、上記不揮発性メモリに書き込むデータのためのデータ領域および拡張領域を有する、
    メモリ装置の管理方法であって、
    上記揮発性メモリは、
    上記不揮発性メモリにアクセスするための論理アドレス空間を上記トランスレーションユニット(TU)単位で分割した論理TUと上記物理TUとを対応付けた変換テーブルと、
    上記不揮発性メモリの各上記物理TUの状態として、データを消去した未書き込みのクリーン状態、上記変換テーブルに登録されて有効なデータを格納するインユース状態、および上記変換テーブルに登録されていない無効なデータを格納するインバリッド状態のいずれかの状態を含む物理TU状態マップと
    を記憶し、
    上記制御部は、
    上記変換テーブルを用いて上記論理アドレスを上記物理アドレスへ変換して、上記トランスレーションユニット(TU)単位で上記不揮発性メモリにアクセスし、
    上記不揮発性メモリにデータを書き込む場合には、書き込み対象の物理TUの拡張領域に、当該物理TUに対応する論理TUと、当該物理TUを含むブロックに対する上記不揮発性メモリでの書き込み順を示すシーケンシャル番号とを含む管理情報を書き込み、
    上記不揮発性メモリを起動する場合に、上記不揮発性メモリの拡張領域の管理情報を走査し、上記論理TUに対して、当該論理TUに対応付けられた最新のシーケンシャル番号の物理TUを対応付けるように上記変換テーブルを生成し、さらに、上記変換テーブルを参照して上記物理TUを管理するための物理TU状態マップを生成し、
    上記不揮発性メモリの起動の後には、起動時に生成した上記変換テーブルを用いてアドレスを変換し、上記物理TU状態マップを用いてクリーン状態の物理TUを書き込み先に選択する
    メモリ管理方法。
  12. データの書き込みおよび読み込みがページ単位で実行され、データの消去が複数のページを含むブロック単位で実行される不揮発性メモリと、
    上記不揮発性メモリへのアクセスを管理する制御部と、
    揮発性メモリと
    を有し、
    上記不揮発性メモリは、
    上記不揮発性メモリの物理アドレス空間を、上記ブロックのサイズの整数分の1かつ上記ページのサイズの整数倍のトランスレーションユニット(TU)単位で分割した物理TU毎に、上記不揮発性メモリに書き込むデータのためのデータ領域および拡張領域を有する、
    メモリ装置での上記制御部としてのコンピュータに実行されるプログラムであって、
    上記揮発性メモリに、上記コンピュータによる上記プログラムの実行により、
    上記不揮発性メモリにアクセスするための論理アドレス空間を上記トランスレーションユニット(TU)単位で分割した論理TUと上記物理TUとを対応付けた変換テーブルと、
    上記不揮発性メモリの各上記物理TUの状態として、データを消去した未書き込みのクリーン状態、上記変換テーブルに登録されて有効なデータを格納するインユース状態、および上記変換テーブルに登録されていない無効なデータを格納するインバリッド状態のいずれかの状態を含む物理TU状態マップと
    を記憶させ、
    上記コンピュータに、
    上記変換テーブルを用いて上記論理アドレスを上記物理アドレスへ変換して、上記トランスレーションユニット(TU)単位で上記不揮発性メモリにアクセスする手順と、
    上記不揮発性メモリにデータを書き込む場合には、書き込み対象の物理TUの拡張領域に、当該物理TUに対応する論理TUと、当該物理TUを含むブロックに対する上記不揮発性メモリでの書き込み順を示すシーケンシャル番号とを含む管理情報を書き込む手順と、
    上記不揮発性メモリを起動する場合に、上記不揮発性メモリの拡張領域の管理情報を走査し、上記論理TUに対して、当該論理TUに対応付けられた最新のシーケンシャル番号の物理TUを対応付けるように上記変換テーブルを生成し、さらに、上記変換テーブルを参照して上記物理TUを管理するための物理TU状態マップを生成する手順と、
    上記不揮発性メモリの起動の後には、起動時に生成した上記変換テーブルを用いてアドレスを変換し、上記物理TU状態マップを用いてクリーン状態の物理TUを書き込み先に選択する手順と
    を実行させるプログラム。
JP2007288726A 2007-11-06 2007-11-06 メモリ装置、メモリ管理方法、およびプログラム Expired - Fee Related JP4535117B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2007288726A JP4535117B2 (ja) 2007-11-06 2007-11-06 メモリ装置、メモリ管理方法、およびプログラム
EP08253498.3A EP2058737B1 (en) 2007-11-06 2008-10-28 Non-volatile memory device, memory management method, and program
US12/265,324 US8205033B2 (en) 2007-11-06 2008-11-05 Memory device, memory management method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007288726A JP4535117B2 (ja) 2007-11-06 2007-11-06 メモリ装置、メモリ管理方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2009116601A JP2009116601A (ja) 2009-05-28
JP4535117B2 true JP4535117B2 (ja) 2010-09-01

Family

ID=40219437

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007288726A Expired - Fee Related JP4535117B2 (ja) 2007-11-06 2007-11-06 メモリ装置、メモリ管理方法、およびプログラム

Country Status (3)

Country Link
US (1) US8205033B2 (ja)
EP (1) EP2058737B1 (ja)
JP (1) JP4535117B2 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5063337B2 (ja) 2007-12-27 2012-10-31 株式会社日立製作所 半導体装置
US8495423B2 (en) * 2009-08-11 2013-07-23 International Business Machines Corporation Flash-based memory system with robust backup and restart features and removable modules
JP2011154547A (ja) * 2010-01-27 2011-08-11 Toshiba Corp メモリ管理装置及びメモリ管理方法
US20120173795A1 (en) * 2010-05-25 2012-07-05 Ocz Technology Group, Inc. Solid state drive with low write amplification
JP5464066B2 (ja) * 2010-06-10 2014-04-09 ソニー株式会社 通信装置、及び、通信方法
US8682639B2 (en) * 2010-09-21 2014-03-25 Texas Instruments Incorporated Dedicated memory window for emulation address
JP2012133655A (ja) * 2010-12-22 2012-07-12 Sony Corp 管理装置、管理方法、およびプログラム
JP2012173778A (ja) * 2011-02-17 2012-09-10 Sony Corp 管理装置、および管理方法
US9424125B2 (en) * 2013-01-16 2016-08-23 Google Inc. Consistent, disk-backed arrays
TWI503841B (zh) * 2013-04-26 2015-10-11 Phison Electronics Corp 寫入方法、記憶體控制器與記憶體儲存裝置
US10956050B2 (en) 2014-03-31 2021-03-23 Sandisk Enterprise Ip Llc Methods and systems for efficient non-isolated transactions
US9916356B2 (en) 2014-03-31 2018-03-13 Sandisk Technologies Llc Methods and systems for insert optimization of tiered data structures
US9633233B2 (en) 2014-05-07 2017-04-25 Sandisk Technologies Llc Method and computing device for encrypting data stored in swap memory
US9928169B2 (en) 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
US9710198B2 (en) 2014-05-07 2017-07-18 Sandisk Technologies Llc Method and computing device for controlling bandwidth of swap operations
US9665296B2 (en) 2014-05-07 2017-05-30 Sandisk Technologies Llc Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications
US20150324132A1 (en) * 2014-05-07 2015-11-12 Sandisk Technologies Inc. Method and Computing Device for Fast Erase of Swap Memory
JP2016012166A (ja) 2014-06-27 2016-01-21 富士通株式会社 ストレージ管理装置,ストレージ管理プログラム,及び制御方法
KR102263046B1 (ko) 2014-10-29 2021-06-09 삼성전자주식회사 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
KR102287760B1 (ko) 2014-10-29 2021-08-09 삼성전자주식회사 메모리 시스템 및 상기 메모리 시스템의 동작 방법
KR102252378B1 (ko) 2014-10-29 2021-05-14 삼성전자주식회사 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
US10133764B2 (en) 2015-09-30 2018-11-20 Sandisk Technologies Llc Reduction of write amplification in object store
US9619165B1 (en) * 2015-10-30 2017-04-11 Sandisk Technologies Llc Convertible leaf memory mapping
US10185658B2 (en) 2016-02-23 2019-01-22 Sandisk Technologies Llc Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes
US10289340B2 (en) 2016-02-23 2019-05-14 Sandisk Technologies Llc Coalescing metadata and data writes via write serialization with device-level address remapping
US10747676B2 (en) 2016-02-23 2020-08-18 Sandisk Technologies Llc Memory-efficient object address mapping in a tiered data structure
US9983820B2 (en) 2016-03-29 2018-05-29 Nxp B.V. Method for performing data updates
FR3051590A1 (fr) * 2016-05-20 2017-11-24 Proton World Int Nv Compteur en memoire flash
FR3051574A1 (fr) * 2016-05-20 2017-11-24 Proton World Int Nv Gestion du stockage dans une memoire flash
JP2018028830A (ja) * 2016-08-19 2018-02-22 三菱電機株式会社 電子制御装置およびその情報記憶方法
FR3055992A1 (fr) 2016-09-09 2018-03-16 Proton World International N.V. Gestion d'index dans une memoire flash
FR3072476A1 (fr) 2017-10-13 2019-04-19 Proton World International N.V. Unite logique de memoire pour memoire flash
JP6675466B2 (ja) * 2018-11-13 2020-04-01 キオクシア株式会社 メモリシステム
KR102693311B1 (ko) 2018-12-20 2024-08-09 삼성전자주식회사 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치
CN112148365B (zh) * 2019-06-26 2024-04-05 珠海零边界集成电路有限公司 一种控制模块、方法及微控制器芯片
CN113311989B (zh) * 2020-02-26 2023-09-22 北京君正集成电路股份有限公司 一种基于并行使用的双片nand flash坏块管理方法
CN113391755B (zh) * 2020-02-26 2023-09-22 北京君正集成电路股份有限公司 一种并行双片nand flash中物理擦除块动态关联的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005115561A (ja) * 2003-10-06 2005-04-28 Media Logic:Kk フラッシュrom制御装置
JP2005174279A (ja) * 2003-12-10 2005-06-30 Samsung Electronics Co Ltd フラッシュメモリ、そのためのマッピング制御装置及び方法
JP2005267676A (ja) * 2004-03-16 2005-09-29 Matsushita Electric Ind Co Ltd 不揮発性記憶装置
JP2007257283A (ja) * 2006-03-23 2007-10-04 Tdk Corp メモリコントローラ及びフラッシュメモリシステム

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5603001A (en) * 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US6278678B1 (en) * 1999-02-12 2001-08-21 Sony Corporation Editing apparatus, editing method, and recording medium
JP2002032256A (ja) 2000-07-19 2002-01-31 Matsushita Electric Ind Co Ltd 端末装置
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP3675375B2 (ja) 2001-07-25 2005-07-27 ソニー株式会社 不揮発性メモリ並びに不揮発性メモリのデータ書き換え方法
US7242632B2 (en) * 2002-06-20 2007-07-10 Tokyo Electron Device Limited Memory device, memory managing method and program
US7062577B2 (en) * 2002-12-18 2006-06-13 Lsi Logic Corporation AMBA slave modular bus interfaces
US7012835B2 (en) * 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US7281114B2 (en) * 2003-12-26 2007-10-09 Tdk Corporation Memory controller, flash memory system, and method of controlling operation for data exchange between host system and flash memory
EP1797645B1 (en) * 2004-08-30 2018-08-01 Google LLC Systems and methods for providing nonvolatile memory management in wireless phones
US20060059296A1 (en) * 2004-09-16 2006-03-16 M-Systems Flash Disk Pioneers, Ltd. Emulating small block size of flash memory
US7849253B2 (en) * 2005-04-04 2010-12-07 Standard Microsystems Corporation Method for fast access to flash-memory media
US7752381B2 (en) * 2005-05-24 2010-07-06 Micron Technology, Inc. Version based non-volatile memory translation layer
US7797479B2 (en) * 2005-06-30 2010-09-14 Intel Corporation Technique to write to a non-volatile memory
TW200705180A (en) * 2005-07-29 2007-02-01 Genesys Logic Inc Adjustable flash memory management system and method
CN100573476C (zh) * 2005-09-25 2009-12-23 深圳市朗科科技股份有限公司 闪存介质数据管理方法
JP2007288726A (ja) 2006-04-20 2007-11-01 Matsushita Electric Ind Co Ltd 撮像装置
CA2631004C (en) * 2007-05-09 2016-07-19 Universite De Sherbrooke Image reconstruction methods based on block circulant system matrices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005115561A (ja) * 2003-10-06 2005-04-28 Media Logic:Kk フラッシュrom制御装置
JP2005174279A (ja) * 2003-12-10 2005-06-30 Samsung Electronics Co Ltd フラッシュメモリ、そのためのマッピング制御装置及び方法
JP2005267676A (ja) * 2004-03-16 2005-09-29 Matsushita Electric Ind Co Ltd 不揮発性記憶装置
JP2007257283A (ja) * 2006-03-23 2007-10-04 Tdk Corp メモリコントローラ及びフラッシュメモリシステム

Also Published As

Publication number Publication date
EP2058737B1 (en) 2017-10-25
US20090119450A1 (en) 2009-05-07
EP2058737A1 (en) 2009-05-13
US8205033B2 (en) 2012-06-19
JP2009116601A (ja) 2009-05-28

Similar Documents

Publication Publication Date Title
JP4535117B2 (ja) メモリ装置、メモリ管理方法、およびプログラム
US7558904B2 (en) Controller, data memory system, data rewriting method, and computer program product
US8028120B2 (en) System with flash memory device and data recovery method thereof
US7979626B2 (en) Flash recovery employing transaction log
JP3692313B2 (ja) 不揮発性メモリの制御方法
US6687784B2 (en) Controller for controlling nonvolatile memory unit
US7882300B2 (en) Apparatus and method for managing nonvolatile memory
US20170228154A1 (en) Device and method for power loss protection in solid state drive
USRE45222E1 (en) Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table
US20080120488A1 (en) Apparatus and method of managing nonvolatile memory
US8296503B2 (en) Data updating and recovering methods for a non-volatile memory array
US20080276036A1 (en) Memory with Block-Erasable Location
JP2009199625A (ja) メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法
JP2006040264A (ja) メモリカードの制御方法および不揮発性半導体メモリの制御方法
KR20020009564A (ko) 메모리 시스템
US20110271030A1 (en) Wear Leveling For Erasable Memories
JP2006350430A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2010287049A (ja) メモリシステムおよびメモリシステムの管理方法
JP4242245B2 (ja) フラッシュrom制御装置
US20070005929A1 (en) Method, system, and article of manufacture for sector mapping in a flash device
JP2003058417A (ja) 記憶装置
JP4794530B2 (ja) 半導体装置および携帯電話
JP2004240660A (ja) 不揮発性メモリ装置の制御方法
JP2013250603A (ja) メモリ管理装置および方法、並びにプログラム
JP2018206161A (ja) 記憶装置および記憶装置のデータ管理方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090818

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091009

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100430

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100607

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130625

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4535117

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees