JP2013174975A - メモリシステムとそのデータ書き込み方法 - Google Patents
メモリシステムとそのデータ書き込み方法 Download PDFInfo
- Publication number
- JP2013174975A JP2013174975A JP2012038017A JP2012038017A JP2013174975A JP 2013174975 A JP2013174975 A JP 2013174975A JP 2012038017 A JP2012038017 A JP 2012038017A JP 2012038017 A JP2012038017 A JP 2012038017A JP 2013174975 A JP2013174975 A JP 2013174975A
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- update
- size
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Abstract
【課題】NANDメモリのレイテンシの悪化を従来に比して抑制することができるメモリシステムを提供する。
【解決手段】実施形態によれば、実施形態によれば、メモリシステム10は、不揮発性のNANDメモリ12とRAM13とCPU14とを備える。NANDメモリ12は、データの管理単位をクラスタとし、また、データのNANDメモリ12内での記憶位置を示す管理情報を格納する管理テーブル121を格納する。CPU14は、RAM13内の更新データをNANDメモリ12に書き込む際に、ページサイズと更新データのサイズとの差がクラスタサイズ以上の場合に、更新データに対応する管理情報の更新内容と、管理情報の更新内容のNANDメモリ12内での記憶位置を示す更新内容記憶位置と、を格納したクラスタサイズのデータを更新データに付加して書き込みデータを作成し、NANDメモリ12の書き込み中のブロックに書き込む。
【選択図】図2
【解決手段】実施形態によれば、実施形態によれば、メモリシステム10は、不揮発性のNANDメモリ12とRAM13とCPU14とを備える。NANDメモリ12は、データの管理単位をクラスタとし、また、データのNANDメモリ12内での記憶位置を示す管理情報を格納する管理テーブル121を格納する。CPU14は、RAM13内の更新データをNANDメモリ12に書き込む際に、ページサイズと更新データのサイズとの差がクラスタサイズ以上の場合に、更新データに対応する管理情報の更新内容と、管理情報の更新内容のNANDメモリ12内での記憶位置を示す更新内容記憶位置と、を格納したクラスタサイズのデータを更新データに付加して書き込みデータを作成し、NANDメモリ12の書き込み中のブロックに書き込む。
【選択図】図2
Description
本発明の実施形態は、メモリシステムとそのデータ書き込み方法に関する。
従来、NAND型フラッシュメモリ(以下、NANDメモリという)を不揮発性記憶部として用いたメモリシステムでは、たとえばホスト装置からの指示によってNANDメモリにはページ単位でユーザデータが書き込まれる。また、NANDメモリ内でのデータの記憶位置を管理する管理テーブルがNANDメモリ内に格納されており、ユーザデータの書き込みに伴って変化する管理テーブルの更新情報もNANDメモリに書き込まれる。
しかしながら、従来技術では、ユーザデータと管理テーブルの更新情報とは別々に書き込みがなされており、NANDメモリのレイテンシの悪化などに繋がっていた。
本発明の一つの実施形態は、NANDメモリのレイテンシの悪化を従来に比して抑制することができるメモリシステムとそのデータ書き込み方法を提供することを目的とする。
本発明の一つの実施形態によれば、不揮発性の第1メモリと、第2メモリと、制御部と、を備えるメモリシステムが提供される。前記第1メモリは、データの管理単位をクラスタとし、前記クラスタを2以上含むページを前記データの書き込み単位とし、前記ページを2以上含むブロックを前記データの消去単位とする。また、前記第1メモリは、前記データの前記第1メモリ内での記憶位置を示す管理情報を格納する管理情報格納領域を有する。前記第2メモリは、前記第1メモリへ書き込まれるデータを一時的に記憶する。前記制御部は、前記第2メモリに記憶されているデータを前記第1メモリに前記ページ単位で書き込むとともに、前記第1メモリ内でのデータの記憶位置を管理する。また、前記制御部は、前記第2メモリ内の更新データを前記第1メモリに書き込む際に、前記ページサイズと前記更新データのサイズとの差が前記クラスタサイズ以上の場合に、前記更新データに対応する前記管理情報の更新内容と、前記管理情報の更新内容の前記第1メモリ内での記憶位置を示す更新内容記憶位置と、を格納した前記クラスタサイズのデータを、前記更新データに付加して前記書き込みデータを作成し、前記第1メモリの書き込み中のブロックに書き込む。
以下に添付図面を参照して、実施形態にかかるメモリシステムとそのデータ書き込み方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。また、以下では、一般的なメモリシステムの構成と、このメモリシステムでの書き込み処理の問題点を説明した後に、実施形態について説明する。
図1は、メモリシステムの一般的な構成を示すブロック図である。このメモリシステム10は、ホストインタフェース(以下、ホストI/Fという)11と、NAND型フラッシュメモリ(以下、NANDメモリという)12と、RAM(Random Access Memory)13と、CPU(Central Processing Unit)14と、を備え、各処理部間はバス15を介して接続されている。
ホストI/F11は、ATA(Advanced Technology Attachment)インタフェース(ATA I/F)などのメモリ接続インタフェースであり、パーソナルコンピュータまたはCPUコアなどの図示しないホスト装置との間のインタフェースである。
NANDメモリ12は、データを不揮発に記憶することができる記憶装置であり、ユーザデータやプログラム、メモリシステム内の内部データなどの保存用の記憶部として使用される。具体的には、ホスト装置側によって指定されたデータを記憶したり、NANDメモリ12でのデータ格納位置を管理する管理情報やファームウェアプログラムなどの不揮発に保存したい重要なデータを記憶したりする。NANDメモリでは、消去はブロック単位で行われ、書き込みと読み出しはページ単位で行われる。
RAM13は、ホスト装置とNANDメモリ12との間でのデータ転送用キャッシュおよび作業領域用メモリなどの一時記憶用の記憶部として使用される。RAM13のデータ転送用キャッシュとして、たとえばNANDメモリ12に書き込むデータを一時的に記憶するライトバッファと、NANDメモリ12から読み出したデータを一時的に記憶するリードバッファと、がある。また、RAM13の作業領域用メモリに記憶されるものとしては、NANDメモリ12に記憶されている管理テーブルが起動時などに展開された管理テーブルなどがある。この管理テーブルは、ホスト装置から指定された論理アドレスとNANDメモリ12内での物理的なデータの記憶位置とを対応付ける管理情報を管理する情報テーブルであり、最新の情報となるように維持される。ユーザデータの書き込みや、管理テーブルへのデータの読み書きを行う際には、RAM13上に管理テーブルが展開される。
なお、RAM13として、DRAM(Dynamic RAM)、SRAM(Static RAM)、FeRAM(Ferroelectric RAM)、MRAM(Magnetoresistive RAM)、PRAM(Phase change RAM)などを用いることができる。
CPU14は、メモリシステム10を制御するコントローラ(制御部)であり、ホスト装置との間でコマンドを処理したり、RAM13を介してNANDメモリ12とホスト装置との間のデータ転送を行ったり、NANDメモリ12内の各ブロックを管理したりする機能を有する。
このメモリシステム10は、ホストI/F11を介してホスト装置と接続され、ホスト装置の外部メモリ、たとえば2次記憶装置(Solid State Drive:SSD)として使用され、ホスト装置から書き込み要求が出されたデータを記憶し、またホスト装置から読み出し要求のあったデータを読み出してホスト装置に出力する機能を有する。
このような構成のメモリシステム10で、RAM13に書き込まれたデータを不揮発化したい場合に、RAM13上のデータがNANDメモリ12に書き込まれる。このとき、書き込まれた有効データがNANDメモリ12のどの位置にあるかを特定するのに有効データに一意に割り当てた識別番号(たとえばLBA(Logical Block Address)など)をキーとした管理テーブルも更新される。
NANDメモリ12では、(A)書き込みがページ単位である、(B)データを書き込んだ領域への再書き込みには事前にブロックの消去が必要である、(C)消去はブロック単位で行う、といった特性がある。そのため、データの書き込みは、NANDメモリの空きページに順次行い、空きページが無くなった段階で、無効データが含まれるブロックの有効データを、有効データを含まない再利用可能なブロックに移し替え、再利用可能なページを増やす処理であるコンパクション(ガベージコレクション)を行い、空きページを確保する構成が一般的である。また、データを更新する場合においても、以前に書き込んだデータは残しておき、書き込み可能な別のページに書き込みを行うが、この際、以前に書き込んだデータは無効データとなる。このようなデータの書き込みやデータの更新、コンパクションが行なわれると、管理テーブルも更新される。この管理テーブルは、電源オフの状態を跨いでも失われないようにするため、NANDメモリに書き込まれる。
一般的なメモリシステム10では、上記のデータの更新、コンパクションおよび管理情報の更新に伴うページ単位の追加記録処理は、それぞれ個別に行われるため、別々のページに書き込まれることになる。しかし、この方法では、一度に書き込む必要のあるデータのサイズがページに対して十分に小さい場合に、実際の書き込みが必要なサイズに比べて無駄に大きなサイズを書き込むことになり、NANDメモリの疲弊やレイテンシの悪化に繋がっていた。
そこで、以下では、このような問題点を解決する実施形態について説明する。以下の説明では、このような問題点を解決する際に使用される処理部について説明し、その他の一般的なメモリシステム10で使用される処理部についての説明については省略する。また、以下の説明では、ユーザデータのRAM13からNANDメモリへの書き込み処理を例に挙げて説明する。
(第1の実施形態)
図2は、第1の実施形態によるメモリシステムの機能構成の一例を模式的に示すブロック図である。このメモリシステム10では、NANDメモリ12に、管理テーブル121が格納される。NANDメモリ12内のフリーブロックはフリーブロックキュー123によって管理され、コンパクション候補ブロックはコンパクション候補キュー124によって管理される。
図2は、第1の実施形態によるメモリシステムの機能構成の一例を模式的に示すブロック図である。このメモリシステム10では、NANDメモリ12に、管理テーブル121が格納される。NANDメモリ12内のフリーブロックはフリーブロックキュー123によって管理され、コンパクション候補ブロックはコンパクション候補キュー124によって管理される。
管理テーブル121は、書き込まれた有効データがNANDメモリ12のどの位置にあるかを特定するために、有効データに一意に割り当てた識別番号をキーとした情報である。第1の実施形態では、ユーザデータを書き込む場合を例に挙げているので、識別番号としてLBAを用いることができる。なお、この第1の実施形態では、NANDメモリ12でページよりも小さい単位(クラスタという)でデータが管理されるものとする。
図3は、第1の実施形態によるデータ管理の一例を示す図であり、(a)はNANDメモリ内での管理単位の一例を模式的に示す図であり、(b)は管理テーブルの一例を示す図である。図3(a)に示されるように、NANDメモリの消去単位であるブロック30−0,30−1,・・・は、複数の書き込み単位であるページ31からなり、ページ31は、さらに複数のデータ管理単位であるクラスタ32からなる。第1の実施形態では、1ページ31が4つのクラスタ32からなる場合を例示している。また、ブロック30−0の先頭ページ(0ページ)の先頭アドレスを含むクラスタ32から順に、0,1,2,3,4,・・・と符号(識別番号)を付していくものとする。すなわち、各クラスタ32には、各ブロック30−0,30−1,・・・内で一意に識別可能な符号が付されている。
図3(b)に示されるように、管理テーブル121は、ホスト装置からLBAで指定されるデータが、どのブロックのどのクラスタに格納されているかを示す情報である。たとえば、LBAが「2」で指定されるデータは、ブロック30−1の番号7で指定されるクラスタに格納されている。なお、この例では、1ページ31が4つのクラスタ32からなる場合を示しているが、1ページ31が複数のクラスタ32から構成されていればよい。
フリーブロックキュー123は、NANDメモリ12内の有効データが存在しないフリーブロックの位置を示す情報であり、書き込み先ブロック125が最終ページまで書き込まれた場合に、つぎのデータを書き込む新たなブロックがこのフリーブロックキュー123から選択される。なお、新たなブロックを選択するタイミングで、ブロックの消去が行なわれる。
コンパクション候補キュー124は、コンパクションの候補となる有効データと無効データとを有するブロックの位置を示す情報であり、有効クラスタの数が少ない順に配列されている。CPU14で後に説明するコンパクション処理が行なわれる際に、コンパクション候補キュー124中の有効クラスタの数が少ないブロックからコンパクションを行なう有効データが選択される。
RAM13には、ライトバッファ13Wと図示しないリードバッファとが設けられ、ライトバッファ13Wには、NANDメモリ12へ書き込まれる書き込みデータ131が一時的に記憶される。また、ライトバッファ13Wには、書き込みデータ131のNANDメモリ12内での新たな記憶位置を示す更新内容が時系列で一時的に記憶される所定サイズの更新内容記憶領域132と、管理テーブル121の更新内容のNANDメモリ12内での記憶位置を示す更新内容記憶位置情報を記憶する所定サイズの更新内容記憶位置情報記憶領域133と、が設けられる。
更新内容は、たとえば管理テーブル121の更新される部分の差し替えデータ(差分データ)とすることができる。更新内容として、クラスタアラインされたLBAに、ブロックアドレスと、ブロック内での位置情報を示すブロック内オフセットとを対応付けた情報とすることができる。
更新内容記憶領域132の更新内容は、書き込み処理部144によって書き込みデータ131がNANDメモリ12内の書き込み先ブロック125に追加記録される度に生成される。そして、フラッシュコマンドが発せられたときや更新内容記憶領域132が一杯になった場合などのデータの不揮発化が要求されるタイミングまで、更新内容が蓄積される。
更新内容記憶位置情報記憶領域133にエントリすることができる更新内容の記憶位置の数は決まっており、更新内容記憶位置情報133に含まれる更新内容の数が上限に達すると、更新内容記憶位置情報133で指示される位置の更新内容を用いて管理テーブル121が更新されるものとする。
CPU14は、書き込みデータ生成部141と、フリーブロック管理部142と、コンパクション管理部143と、書き込み処理部144と、を有する。
書き込みデータ生成部141は、ホスト装置からのまたは自装置によるフラッシュ要求が出されると、RAM13のライトバッファ13W上のデータをNANDメモリ12へと書き込むための書き込みデータをRAM13上で生成する。このとき、データのサイズがページサイズよりも小さく、ページサイズとデータサイズの差がクラスタサイズ以上である場合に、データに管理テーブル121の更新内容と更新内容記憶位置を含む更新情報やコンパクションデータなどの他のデータをクラスタサイズの単位で付加して、1ページ内になるべく多くのデータが格納されるようにする。また、書き込みデータ生成部141は、データ更新とコンパクションによって、NANDメモリ12内でのデータの記憶位置に変更が生じ、管理情報が変更されることになったデータの更新内容(更新差分)を更新内容記憶領域132に時系列で順に記憶していくとともに更新内容の記憶位置を更新内容記憶位置情報記憶領域133に時系列で順に記憶していき、書き込みデータ131中のデータとコンパクションデータに対応する更新内容と、この更新内容のNANDメモリ12内での記憶位置およびこの更新内容よりも前の更新内容のNANDメモリ12内での記憶位置を抽出し、書き込みデータ131に付加する機能を有する。さらに、書き込みデータ生成部141は、残りの更新内容記憶領域132の書き込みにおいて、1クラスタサイズ以上の空き領域があった場合には、コンパクションデータをクラスタサイズの単位で付加する機能を有する。また、ページサイズと、残された更新内容記憶領域132中の更新内容およびそれまでの更新内容記憶位置を含む更新情報のデータサイズの差がクラスタサイズ以上である場合には、更新情報にコンパクションデータをクラスタサイズの単位で付加して書き込みデータを生成する。
たとえば、不揮発化する対象の更新データが1ページに満たず、1クラスタサイズ以上の空き領域が存在する場合には、1クラスタサイズ分の領域を更新内容付加領域として確保する。そして、更新内容付加領域に、更新データに対応する更新内容と、その更新内容のNANDメモリ12内での記憶位置を含む管理テーブル121が更新内容を用いて反映された後に行われた現在までの更新内容の記憶位置である更新内容記憶位置情報と、を含む更新情報を記憶する。その結果、1クラスタサイズ以上の空き領域が存在しなくなった場合には、更新データに更新情報を付加したものを書き込みデータとする。ここで、1クラスタサイズの領域内での更新内容と更新内容記憶位置情報とが書き込まれる領域の大きさとしては、それぞれ任意の値とすることができる。また、このように更新内容記憶位置情報として、現在書き込む書き込みデータに対応する更新内容の記憶位置だけでなく、過去に書き込まれた更新内容の記憶位置を含めさせることで、過去の更新内容の記憶位置を順にたどることが可能になる。
図4は、書き込み先ブロックの状態を模式的に示す図である。この図に示されるように、更新データ(1)〜(7)に対応する管理テーブル121の更新内容と、NANDメモリ12での更新内容の記憶位置とを含む更新情報Aがクラスタ401に記録されている。また、更新データ(8)〜(17)に対応する管理テーブル121の更新内容と、前回管理テーブル121が更新された後に更新内容記憶位置情報記憶領域133に蓄積された更新内容の記憶位置と、を含む更新情報Bがクラスタ402に記録されている。更新情報Bに含まれる更新内容の記憶位置として、更新データ(8)〜(17)に対応する管理テーブル121の更新内容の記憶位置であるクラスタ402の位置と、更新情報Aが記録されているクラスタ401と、が含まれる。
一方、まだ1クラスタサイズ以上の空き領域が存在する場合には、クラスタサイズの自然数倍の領域をコンパクションデータ付加領域として確保する。そして、コンパクション候補キュー124中のコンパクション候補ブロックからコンパクションデータ付加領域のサイズに対応する有効データを含むクラスタを取得し、コンパクションデータ付加領域に記憶する。その結果、更新データに更新内容とコンパクションデータとが付加されたものが書き込みデータとなる。このとき、コンパクション候補キュー124から選択された有効データのNANDメモリ12内での新たな記憶位置と元の記憶位置との更新差分を演算し、更新内容付加領域にコンパクションデータに対応する更新内容を記憶する。なお、更新内容付加領域を確保することによって、空き領域がなくなっている可能性があるので、その場合には、予めコンパクションデータ分の空きを作っておくか、空きがなければ更新内容付加領域の代わりに更新内容記憶領域132に記憶する。
フリーブロック管理部142は、NANDメモリ12中の有効データが存在しないフリーブロックを管理し、フリーブロックが発生した場合には、フリーブロックキュー123に登録する。
コンパクション管理部143は、有効データ(有効クラスタ)の数がブロック中で所定数以下のNANDメモリ12内のブロックを検索して、コンパクション候補ブロックとして取得し、有効クラスタ数が少ない順にコンパクション候補キューに登録する処理を行なう。
書き込み処理部144は、書き込みデータ生成部141によって生成されたページサイズの書き込みデータをNANDメモリ12の書き込み先ブロック125に書き込む。書き込み先ブロック125が有効データで満たされた場合には、書き込み処理部144は、フリーブロックキュー123からつぎの書き込み先ブロックを取得し、そのブロックにデータ書き込みを行なう。また、書き込み処理部144は、書き込み先ブロック125に書き込まれた書き込みデータ131内の更新内容付加領域中の更新内容記憶位置情報が予め設定された大きさ(データの数)になると、更新内容付加領域中の更新内容が管理テーブル121へと反映される。
つぎに、このようなメモリシステム10でのデータ書き込み方法について説明する。図5は、第1の実施形態によるメモリシステムのデータ書き込み方法の処理手順の一例を示すフローチャートである。たとえばRAM13(ライトバッファ13W)上のデータを不揮発化するフラッシュ要求が出されると(ステップS11)、書き込みデータ生成部141は、以下に示す処理を行なってRAM13上の更新データを用いてページサイズの書き込みデータを生成する。まず、書き込みデータ生成部141は、RAM13上の更新データをページ単位で区切り(ステップS12)、最後のページにクラスタサイズ以上の空き領域が存在するかを判定する(ステップS13)。
最後のページにクラスタサイズ以上の空き領域が存在する場合(ステップS13でYesの場合)には、更新データの最後のページに、クラスタサイズの更新内容付加領域を確保する。そして、管理テーブル121に反映されていない更新データに対応する更新内容と、更新内容の記憶位置情報をそれぞれ更新内容記憶領域132と更新内容記憶位置情報記憶領域133から取得し、更新内容付加領域に格納する(ステップS14)。このとき取得した更新内容は更新内容記憶領域132から削除されるが、取得した更新内容の記憶位置情報は、更新内容記憶位置情報記憶部133から削除されない。また、更新内容の記憶位置情報として、前回管理テーブル121の反映処理がなされて以降の更新内容の記憶位置が格納される。
その後、最後のページにクラスタサイズ以上の空き領域が存在するかを判定する(ステップS15)。クラスタサイズ以上の空き領域が存在する場合(ステップS15でYesの場合)には、更新データの最後のページに、空き領域の範囲内に収まるクラスタサイズの自然数倍の領域をコンパクションデータ付加領域として確保する。そして、コンパクション候補キュー124に登録されているコンパクション候補ブロックからコンパクションデータ付加領域と同じサイズの有効データを取得し、コンパクションデータ付加領域に格納する(ステップS16)。このとき、コンパクション候補ブロックから書き込み先ブロック125へのデータの移動によって生じる管理テーブル121の更新も行い、その更新内容を、更新内容付加領域に格納する。なお、更新内容付加領域を確保することによって、空き領域がなくなっている可能性があるので、その場合には、予めコンパクションデータ分の空きを作っておくか、空きがなければ更新内容付加領域の代わりに更新内容記憶領域132に記憶する。
その後、またはステップS13またはS15で空きクラスタが存在しない場合(ステップS13またはステップS15でNoの場合)には、作成した書き込みデータのNANDメモリ12への書き込み処理が実行され(ステップS17)、データ書き込み処理が終了する。
図6は、書き込みデータのNANDメモリへの書き込み処理の手順の一例を示すフローチャートである。この書き込み処理では、書き込み処理部144が、作成された書き込みデータをNANDメモリ12内の書き込み先ブロック125にページ単位で追加記録する(ステップS21)。その後、更新内容記憶領域132内に記憶されている残りの更新内容および更新内容の記憶位置情報を書き込み先ブロック125に書き込む(ステップS22)。その後、更新内容記憶位置情報領域122中の更新内容の記憶位置の数が上限に達したかを判定し(ステップS24)、上限に達していない場合(ステップS24でNoの場合)には、書き込み処理が終了する。
また、上限に達した場合(ステップS24でYesの場合)には、書き込み処理部144は、更新内容記憶位置情報領域122から更新内容の記憶位置を取得し、その記憶位置に格納されている更新内容を管理テーブル121に反映させる処理を、更新内容記憶位置情報領域に含まれる更新内容の記憶位置の順に行い、管理テーブル121の更新を行なう(ステップS25)。たとえば、図4の場合では、書き込み先ブロック125のクラスタ402に更新情報が記録されているが、この更新情報中の更新内容記憶位置情報の数が上限値に達したとすると、ここには過去の更新内容記憶位置情報も記録されているので、ここに含まれる情報から最も古い更新内容記憶位置情報までたどることができる。クラスタ401が最も古い更新内容記憶位置情報であるとすると、クラスタ401に含まれる更新内容を用いて管理テーブル121の更新が行われ、つぎに、クラスタ402に含まれる更新内容を用いて管理テーブルの更新が行われる。以上によって、書き込みデータのNANDメモリ12への書き込み処理が終了する。
以上の処理が、RAM13のライトバッファ13W中のすべての更新データに対して実行されることによって、更新データがNANDメモリ12中に不揮発に記憶されることになる。また、ステップS21,S22で、書き込み先ブロック125の最終ページまで書き込みがなされた場合には、フリーブロックキュー123に登録されている中から選択されるフリーブロックが新たな書き込み先ブロック125となり、このブロックに書き込みデータが書き込まれることになる。
つぎに、具体例を挙げて第1の実施形態による書き込み処理を説明する。
<更新データを含むページに管理情報の更新内容とコンパクションデータを格納する場合>
図7は、更新データを含むページに、管理情報の更新内容とコンパクションデータを格納する場合の書き込み処理の流れの一例を模式的に示す図である。この図に示されるように、フラッシュ要求が出された後、RAM13では、1ページ分の書き込みデータ131に、まず更新データ201を格納する。ここでは、更新データ201は2つ分のクラスタサイズに収まるデータ量であるとする。
図7は、更新データを含むページに、管理情報の更新内容とコンパクションデータを格納する場合の書き込み処理の流れの一例を模式的に示す図である。この図に示されるように、フラッシュ要求が出された後、RAM13では、1ページ分の書き込みデータ131に、まず更新データ201を格納する。ここでは、更新データ201は2つ分のクラスタサイズに収まるデータ量であるとする。
ここでは、1ページ分の書き込みデータ131に1つ分以上のクラスタサイズの空き領域があるので、書き込みデータ生成部141は、1クラスタサイズ分の空き領域を更新内容付加領域に設定する。そして、更新内容記憶領域132から取得した更新データ201に対応する管理テーブル121の更新内容2021を更新内容領域に格納する。このとき、更新内容領域には、予め定められたサイズ以上の更新内容2021を格納することができない。また、前回管理テーブル121が更新されてから今回の更新までの更新内容の記憶位置2022(クラスタ位置)を更新内容記憶位置情報記憶領域133から取得して、更新内容位置情報領域に格納する。これらの更新内容2021と更新内容の記憶位置2022とによって、更新情報202が形成される。
また、1ページ分の書き込みデータ131にさらに1つ分以上のクラスタサイズの空き領域があるので、書き込みデータ生成部141は、1クラスタサイズ分の空き領域をコンパクションデータ付加領域に設定し、コンパクションデータ付加領域にコンパクションデータ203を格納する。このコンパクションデータ203は、コンパクション候補キュー124中の有効クラスタ数が最も少ないコンパクション候補ブロック124−1中の有効データvdから選択される。この図では、有効データvdを黒塗りで示し、無効データivdを白抜きで示している。これによって、1ページ分の書き込みデータ131を構成する4個分のクラスタに対応する領域のすべてにデータが含まれる状態となる。
その後、書き込み処理部144によってRAM13上の書き込みデータ131は、NANDメモリ12の書き込み先ブロック125の未書き込みページ1251に追加記録される。以上によって、更新データのNANDメモリ12への書き込み処理が終了する。
<更新データを含むページに管理情報の更新内容を格納する場合>
図8は、更新データを含むページに管理情報の更新内容を格納する場合の書き込み処理の流れの一例を模式的に示す図である。この図に示されるように、フラッシュ要求が出された後、RAM13では、1ページ分の書き込みデータ131に、まず更新データ201を格納する。ここでは、更新データ201は3つ分のクラスタサイズに収まるデータ量であるとする。
図8は、更新データを含むページに管理情報の更新内容を格納する場合の書き込み処理の流れの一例を模式的に示す図である。この図に示されるように、フラッシュ要求が出された後、RAM13では、1ページ分の書き込みデータ131に、まず更新データ201を格納する。ここでは、更新データ201は3つ分のクラスタサイズに収まるデータ量であるとする。
ついで、1ページ分の書き込みデータ131に1つ分以上のクラスタサイズの空き領域があるので、書き込みデータ生成部141は、1クラスタサイズ分の空き領域を更新内容付加領域に設定する。そして、更新内容記憶領域132から取得した更新データ201に対応する管理テーブル121の更新内容2021を更新内容領域に格納する。また、前回管理テーブル121が更新されてから今回の更新までの更新内容の記憶位置2022(クラスタ位置)を更新内容記憶位置情報記憶領域133から取得して、更新内容位置情報領域に格納する。これらの更新内容2021と更新内容の記憶位置2022とによって、更新情報202が形成される。このとき、1ページ分の書き込みデータ131には、1クラスタサイズ以上の空き領域がもうないので、書き込みデータの生成が終了する。これによって、1ページ分の書き込みデータ131を構成する4個分のクラスタに対応する領域のすべてにデータが含まれる状態となる。
その後、書き込み処理部144によってRAM13上の書き込みデータ131は、NANDメモリ12の書き込み先ブロック125の未書き込みページ1251に追加記録される。以上によって、更新データのNANDメモリ12への書き込み処理が終了する。
上記のように書き込み先ブロック125には、更新データのほかに、更新データをNANDメモリ12に書き込むことによって変更される管理テーブル121の更新内容2021と、更新内容2021のNANDメモリ12内での記憶位置2022と、を含む更新情報202が含まれる。更新内容20212が管理テーブル121に反映されずに電源断となり、つぎに起動される際に、これらの更新情報202が参照されることになる。具体的には、最後に追加記録したブロックについて、ブロックの単位でブロックアドレスを別途不揮発化しておき、電源断後の起動時にこの追加記録したブロックのブロックアドレスの消去ページ検索を行う。消去ページ検索によってブロック中の先頭の消去ページを検索し、その1つ前のページが最後に追加記録したページとなり、このページ中に含まれる更新情報202中の更新内容の記憶位置2022を用いて、過去に更新された更新内容2021が含まれる位置(クラスタ位置)をたどることができ、そのクラスタ位置に含まれる更新内容2021を用いて管理テーブル121を復元することができる。
なお、上記した説明では、更新データがページサイズよりも小さく、ページサイズと更新データのサイズの差がクラスタサイズ以上ある場合に、更新データに対応する管理テーブル121の更新内容を、コンパクションデータに優先して、クラスタサイズの空き領域に格納するようにしているが、更新内容ではなくコンパクションデータを自然数倍のクラスタサイズの空き領域に格納するようにしてもよい。この場合には、更新内容記憶領域132中の更新内容をまとめて書き込むようにすればよい。
また、上記した説明では、NANDメモリ12にデータを書き込む場合を例に挙げて説明したが、NANDメモリ12に限らず、データが第1単位で管理されるとともに、データの書き込みが第1単位の2以上の整数倍で行なわれる不揮発性メモリに対して、上記した実施形態を適用することができる。
さらに、RAM13上のユーザデータをNANDメモリ12に書き込む場合を説明したが、ユーザデータに限られず、RAM13に記憶されNANDメモリ12に書き込まれるデータ全般に対して上記した実施形態を適用することができる。たとえば、ホスト装置からの書き込みの数やホスト装置から書き込まれるデータのサイズ、BIOS(Basic Input/Output System)の設定などの統計情報や、メモリシステム10の内部動作のログ情報、メモリシステム10で使用されるファームウェアのアップデートデータなどの内部データをRAM13からNANDメモリ12へと書き込む場合にも適用することができる。この内部データの管理に当たっては、LBAを用いることもできるし、内部データの管理にのみ用いられるLBAに準じたアドレス体系を用いることもできる。
また、上述した説明では、更新内容として、管理テーブル121の一部差し替えデータを用いる場合を示したが、テーブル全体の差し替えデータを用いてもよい。ただし、この場合には、RAM13に設けられる更新内容記憶位置情報記憶領域133は不要となり、書き込みデータ131には更新内容2021のみが付加されることになる。
以上説明したように、第1の実施形態によれば、NANDメモリ12におけるデータの管理単位をページよりも小さいクラスタで行い、RAM13上の更新データのNANDメモリ12への書き込み時に、ページサイズと更新データのサイズとの差がクラスタサイズ以上ある場合には、クラスタサイズの単位で、更新データに対応する管理テーブル121の更新内容やコンパクションデータを付加するようにした。これによって、書き込み単位のページを構成する各クラスタにデータが含まれる状態となるので、空き領域の多いデータの書き込みとは違って、効率のよいNANDメモリ12への書き込み処理を行なうことができるという効果を有する。
また、種類の異なるデータを1つの書き込みデータにまとめてNANDメモリ12への書き込みを行なうことで、それぞれ別々に書き込みを行なう場合に比して、NANDメモリ12の書き込み量を低減させ、NANDメモリ12の延命およびNANDメモリ12のレイテンシを向上させることができるという効果も有する。特に、フラッシュ要求が頻繁に出される場合やライトバッファ13Wの容量が小さい場合に有効である。
さらに、更新データとそれに対応する管理テーブル121の更新内容だけでなく、コンパクションデータも格納するようにしたので、コンパクション処理を単独で実施する前に、コンパクション対象ブロック中の有効データの一部について先行してコンパクション処理を実施する(プリフェッチする)ことができるという効果も有する。
(第2の実施形態)
図9は、SSDを搭載したパーソナルコンピュータの一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、および表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204と、を備えている。
図9は、SSDを搭載したパーソナルコンピュータの一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、および表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204と、を備えている。
本体1201は、筐体1205と、キーボード1206と、ポインティングデバイスであるタッチパッド1207とを備えている。筐体1205内部には、メイン回路基板、ODD(optical disk device)ユニット、カードスロット、およびSSD10A等が収容されている。このSSDは、第1の実施形態で説明したメモリシステムに相当している。
カードスロットは、筐体1205の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部1208が設けられている。ユーザは、この開口部1208を通じて筐体1205の外部から追加デバイスをカードスロットに挿抜することが可能である。
SSD10Aは、従来のHDDの置き換えとして、パーソナルコンピュータ1200内部に実装された状態として使用してもよいし、パーソナルコンピュータ1200が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
図10は、SSDを搭載したパーソナルコンピュータのシステム構成例を示すブロック図である。パーソナルコンピュータ1200は、CPU1301、ノースブリッジ1302、主メモリ1303、ビデオコントローラ1304、オーディオコントローラ1305、サウスブリッジ1309、BIOS−ROM1310、SSD10A、ODDユニット1311、エンベデッドコントローラ/キーボードコントローラIC(EC/KBC)1312、およびネットワークコントローラ1313等を備えている。
CPU1301は、パーソナルコンピュータ1200の動作を制御するために設けられたプロセッサであり、SSD10Aから主メモリ1303にロードされるオペレーティングシステム(OS)を実行する。さらに、ODDユニット1311が、装填された光ディスクに対して読み出し処理および書き込み処理の少なくとも1つの処理の実行を可能にした場合に、CPU1301は、それらの処理の実行をする。
また、CPU1301は、BIOS−ROM1310に格納されたシステムBIOS(Basic Input Output System)も実行する。なお、システムBIOSは、パーソナルコンピュータ1200内のハードウェア制御のためのプログラムである。
ノースブリッジ1302は、CPU1301のローカルバスとサウスブリッジ1309との間を接続するブリッジデバイスである。ノースブリッジ1302には、主メモリ1303をアクセス制御するメモリコントローラも内蔵されている。
また、ノースブリッジ1302は、AGP(Accelerated Graphics Port)バス等を介してビデオコントローラ1304との通信、およびオーディオコントローラ1305との通信を実行する機能も有している。
主メモリ1303は、プログラムやデータを一時的に記憶し、CPU1301のワークエリアとして機能する。主メモリ1303は、たとえばDRAMから構成される。
ビデオコントローラ1304は、パーソナルコンピュータ1200のディスプレイモニタとして使用される表示ユニット1202を制御するビデオ再生コントローラである。
オーディオコントローラ1305は、パーソナルコンピュータ1200のスピーカ1306を制御するオーディオ再生コントローラである。
サウスブリッジ1309は、LPC(Low Pin Count)バス1314上の各デバイス、およびPCI(Peripheral Component Interconnect)バス1315上の各デバイスを制御する。また、サウスブリッジ1309は、各種ソフトウェアおよびデータを格納する記憶装置であるSSD10Aを、ATAインタフェースを介して制御する。
パーソナルコンピュータ1200は、セクタ単位でSSD10Aへのアクセスを行う。ATAインタフェース(I/F)を介して、書き込みコマンド、読み出しコマンド、フラッシュコマンド等がSSD10Aに入力される。
また、サウスブリッジ1309は、BIOS−ROM1310、およびODDユニット1311をアクセス制御するための機能も有している。
EC/KBC1312は、電力管理のためのエンベデッドコントローラと、キーボード(KB)1206およびタッチパッド1207を制御するためのキーボードコントローラとが集積された1チップマイクロコンピュータである。
このEC/KBC1312は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ1200の電源をON/OFFする機能を有している。ネットワークコントローラ1313は、たとえばインターネット等の外部ネットワークとの通信を実行する通信装置である。
パーソナルコンピュータ1200は、SSD10Aに電源供給を行い、また、SSD10Aに停止要求(Standby要求)を発行する。仮にパーソナルコンピュータ1200からSSD10Aへの電源供給が不正に断たれた場合であっても、書き込みエラーの発生を未然に防ぐことができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10…メモリシステム、11…ホストI/F、12…MANDメモリ、13…RAM、13W…ライトバッファ、14…CPU、15…バス、121…管理テーブル、122…更新内容記憶位置情報、123…フリーブロックキュー、124…コンパクション候補キュー、124−1…コンパクション候補ブロック、125…書き込み先ブロック、131…書き込みデータ、132…更新内容記憶領域、141…書き込みデータ生成部、142…フリーブロック管理部、143…コンパクション管理部、144…書き込み処理部、201…更新データ、202…更新内容、203…コンパクションデータ。
Claims (20)
- データの管理単位をクラスタとし、前記クラスタを2以上含むページを前記データの書き込み単位とし、前記ページを2以上含むブロックを前記データの消去単位とする不揮発性の第1メモリと、
前記第1メモリへ書き込まれるデータを一時的に記憶する第2メモリと、
前記第2メモリに記憶されているデータを前記第1メモリに前記ページ単位で書き込むとともに、前記第1メモリ内でのデータの記憶位置を管理する制御部と、
を備え、
前記第1メモリは、前記データの前記第1メモリ内での記憶位置を示す管理情報を格納する管理情報格納領域を有し、
前記制御部は、前記第2メモリ内の更新データを前記第1メモリに書き込む際に、前記ページサイズと前記更新データのサイズとの差が前記クラスタサイズ以上の場合に、前記更新データに対応する前記管理情報の更新内容と、前記管理情報の更新内容の前記第1メモリ内での記憶位置を示す更新内容記憶位置と、を格納した前記クラスタサイズのデータを、前記更新データに付加して前記書き込みデータを作成し、前記第1メモリの書き込み中のブロックに書き込むことを特徴とするメモリシステム。 - 前記制御部は、前記第2メモリ内の更新データを前記第1メモリに書き込む際に、前記ページサイズと前記更新データのサイズとの差が前記クラスタサイズ以上の場合に、前記第1メモリ内の有効データと無効データとを含むコンパクション候補ブロックから取得した前記有効データを前記更新データに付加した書き込みデータを作成し、前記第1メモリの書き込み中のブロックに書き込むことを特徴とする請求項1に記載のメモリシステム。
- 前記制御部は、前記第2メモリ内の更新データを前記第1メモリに書き込む際に、前記ページサイズと前記更新データのサイズとの差が前記クラスタサイズ以上の場合で、前記第1メモリ内に有効データと無効データとを含むコンパクション候補ブロックがある場合に、前記有効データに優先して前記更新内容と、前記管理情報の更新内容の前記第1メモリ内での記憶位置を示す更新内容記憶位置と、を格納した前記クラスタサイズのデータを前記更新データに付加した書き込みデータを作成し、前記第1メモリの書き込み中のブロックに書き込むことを特徴とする請求項2に記載のメモリシステム。
- 前記制御部は、前記ページサイズと、前記更新内容および前記更新内容記憶位置を格納したデータを付加した前記更新データのサイズと、の差が前記クラスタサイズ以上の場合に、前記第1メモリ内の有効データと無効データとを含むコンパクション候補ブロックから取得した前記有効データを前記更新データにさらに付加して前記書き込みデータを作成することを特徴とする請求項1または請求項3に記載のメモリシステム。
- 前記制御部は、前記第2メモリ内の前記管理情報の更新内容と前記管理情報の更新内容の前記第1メモリ内での記憶位置を示す更新内容記憶位置を前記第1メモリに書き込む際に、前記ページサイズと前記管理情報の更新内容および前記更新内容記憶位置のサイズとの差が前記クラスタサイズ以上の場合に、前記第1メモリ内の有効データと無効データとを含むコンパクション候補ブロックから取得した前記有効データを前記管理情報の更新内容および前記更新内容記憶位置に付加した書き込みデータを作成し、前記第1メモリの書き込み中のブロックに書き込むことを特徴とする請求項1乃至請求項4のいずれか1つに記載のメモリシステム。
- 前記制御部は、前記コンパクション候補ブロックのうち、前記有効データの数が最も少ないコンパクション対象ブロックから、前記有効データを取得することを特徴とする請求項2,4または5に記載のメモリシステム。
- 前記書き込みデータ中に書き込むことができる前記更新内容記憶位置の数には上限値が設定され、
前記制御部は、前記書き込みデータ中に格納される前記更新内容記憶位置の数が前記上限値に達すると、前記前記書き込みデータ中の前記更新内容記憶位置で示される位置に記憶される前記更新内容を用いて、前記管理情報を更新することを特徴とする請求項1乃至請求項6のいずれか1つに記載のメモリシステム。 - 前記制御部は、前記書き込みデータの書き込み後に、前記第2メモリ中の残った前記更新内容を前記書き込み中のブロックに書き込むことを特徴とする請求項1乃至請求項4のいずれか1つに記載のメモリシステム。
- 前記制御部は、前記書き込み中のブロックが満たされると、前記第1メモリ内の有効データを含まないフリーブロックをつぎの書き込みを行なうブロックとして選択することを特徴とする請求項1乃至請求項8のいずれか1つに記載のメモリシステム。
- 前記データは、ユーザデータまたは当該メモリシステムの内部データであることを特徴とする請求項1乃至請求項9のいずれか1つに記載のメモリシステム。
- データの管理単位をクラスタとし、前記クラスタを2以上含むページを前記データの書き込み単位とし、前記ページを2以上含むブロックを前記データの消去単位とする不揮発性の第1メモリと、
前記第1メモリへ書き込まれるデータを一時的に記憶する第2メモリと、
前記第2メモリに記憶されているデータを前記第1メモリに前記ページ単位で書き込むとともに、前記第1メモリ内でのデータの記憶位置を管理する制御部と、
を備えるメモリシステムのデータ書き込み方法において、
更新データの不揮発化要求を受けると、前記更新データが前記ページサイズよりも小さい場合に、前記ページサイズと前記更新データのサイズの差が前記クラスタサイズ以上あるかを判定する判定工程と、
前記ページサイズと前記更新データのサイズとの差が前記クラスタサイズ以上の場合に、前記更新データに対応する前記管理情報の更新内容を格納した前記クラスタサイズのデータを、前記更新データに付加して前記書き込みデータを前記第2メモリ上で作成する書き込みデータ作成工程と、
前記書き込みデータを、前記第1メモリの書き込み中のブロックに書き込む書き込み工程と、
を含むことを特徴とするメモリシステムの書き込み方法。 - 前記書き込みデータ作成工程では、前記ページサイズと前記更新データのサイズとの差が前記クラスタサイズ以上の場合に、前記第1メモリ内の有効データと無効データとを含むコンパクション候補ブロックから取得した前記有効データを前記更新データに付加した書き込みデータを前記第2メモリ上で作成することを特徴とする請求項11に記載のメモリシステムの書き込み方法。
- 前記判定工程では、更新データの不揮発化要求を受けると、前記更新データが前記ページサイズよりも小さい場合に、前記ページサイズと前記更新データのサイズの差が前記クラスタサイズ以上あるかを判定し、
前記書き込みデータ作成工程では、前記ページサイズと前記更新データのサイズとの差が前記クラスタサイズ以上の場合で、前記第1メモリ内に有効データと無効データとを含むコンパクション候補ブロックがある場合に、前記有効データに優先して前記更新内容を格納した前記クラスタサイズのデータを前記更新データに付加した書き込みデータを前記第2メモリ上で作成することを特徴とする請求項12に記載のメモリシステムの書き込み方法。 - 前記書き込みデータ作成工程では、前記ページサイズと、前記更新内容および前記更新内容記憶位置を格納したデータを付加した前記更新データのサイズと、の差が前記クラスタサイズ以上の場合に、前記第1メモリ内の有効データと無効データとを含むコンパクション候補ブロックから取得した前記有効データを前記更新データにさらに付加して前記書き込みデータを作成することを特徴とする請求項11または請求項13に記載のメモリシステムの書き込み方法。
- 前記判定工程では、前記第2メモリ内の前記管理情報の更新内容と前記管理情報の更新内容の前記第1メモリ内での記憶位置を示す更新内容記憶位置とのサイズの和がページサイズよりも小さい場合に、前記ページサイズと前記管理情報の更新内容および前記更新内容記憶位置のサイズとの差が前記クラスタサイズ以上あるかを判定し、
前記書き込みデータ作成工程では、前記ページサイズと前記管理情報の更新内容および前記更新内容記憶位置のサイズとの差が前記クラスタサイズ以上ある場合に、前記第1メモリ内の有効データと無効データとを含むコンパクション候補ブロックから取得した前記有効データを、前記管理情報の更新内容および前記更新内容記憶位置に付加した書き込みデータを作成することを特徴とする請求項11乃至請求項14のいずれか1つに記載のメモリシステムの書き込み方法。 - 前記書き込みデータ作成工程では、前記コンパクション候補ブロックのうち、前記有効データの数が最も少ないコンパクション対象ブロックから、前記有効データを取得することを特徴とする請求項12,14または15に記載のメモリシステムの書き込み方法。
- 前記書き込みデータ作成工程では、前記書き込みデータ中に書き込むことができる前記更新内容記憶位置の数には上限値が設定され、前記書き込みデータ中に格納される前記更新内容記憶位置の数が前記上限値に達すると、前記前記書き込みデータ中の前記更新内容記憶位置で示される位置に記憶される前記更新内容を用いて、前記第1メモリ内に記憶されている管理情報を更新することを特徴とする請求項11乃至請求項16のいずれか1つに記載のメモリシステムの書き込み方法。
- 前記書き込み工程では、前記書き込みデータの書き込み後に、前記第2メモリ中の残った前記更新内容を前記書き込み中のブロックに書き込むことを特徴とする請求項11乃至請求項14のいずれか1つに記載のメモリシステムの書き込み方法。
- 前記書き込み工程では、前記書き込み中のブロックが満たされると、前記第1メモリ内の有効データを含まないフリーブロックをつぎの書き込みを行なうブロックとして選択することを特徴とする請求項11乃至請求項18のいずれか1つに記載のメモリシステムの書き込み方法。
- 前記データは、ユーザデータまたは当該メモリシステムの内部データであることを特徴とする請求項11乃至請求項19のいずれか1つに記載のメモリシステムの書き込み方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012038017A JP2013174975A (ja) | 2012-02-23 | 2012-02-23 | メモリシステムとそのデータ書き込み方法 |
US13/616,466 US8825946B2 (en) | 2012-02-23 | 2012-09-14 | Memory system and data writing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012038017A JP2013174975A (ja) | 2012-02-23 | 2012-02-23 | メモリシステムとそのデータ書き込み方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013174975A true JP2013174975A (ja) | 2013-09-05 |
Family
ID=49158787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012038017A Pending JP2013174975A (ja) | 2012-02-23 | 2012-02-23 | メモリシステムとそのデータ書き込み方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8825946B2 (ja) |
JP (1) | JP2013174975A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10754771B2 (en) | 2018-07-26 | 2020-08-25 | Toshiba Memory Corporation | Storage device and storage control method |
CN113010107A (zh) * | 2021-02-26 | 2021-06-22 | 深圳忆联信息系统有限公司 | 数据存储管理方法、装置、计算机设备及存储介质 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9304906B2 (en) * | 2013-09-10 | 2016-04-05 | Kabushiki Kaisha Toshiba | Memory system, controller and control method of memory |
US9530490B2 (en) * | 2014-10-27 | 2016-12-27 | Sandisk Technologies Llc | Compaction process for a data storage device |
US10254967B2 (en) * | 2016-01-13 | 2019-04-09 | Sandisk Technologies Llc | Data path control for non-volatile memory |
TWI607457B (zh) * | 2016-06-28 | 2017-12-01 | 光寶電子(廣州)有限公司 | 固態儲存裝置及其資料寫入方法 |
KR20180041428A (ko) * | 2016-10-14 | 2018-04-24 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그의 동작 방법 |
US10528267B2 (en) | 2016-11-11 | 2020-01-07 | Sandisk Technologies Llc | Command queue for storage operations |
US10528286B2 (en) | 2016-11-11 | 2020-01-07 | Sandisk Technologies Llc | Interface for non-volatile memory |
US10528255B2 (en) | 2016-11-11 | 2020-01-07 | Sandisk Technologies Llc | Interface for non-volatile memory |
JP6785204B2 (ja) | 2017-09-21 | 2020-11-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11907556B2 (en) * | 2021-02-18 | 2024-02-20 | Micron Technology, Inc. | Data relocation operation techniques |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070271494A1 (en) * | 2006-05-17 | 2007-11-22 | Sandisk Corporation | Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices |
JP2009157807A (ja) * | 2007-12-27 | 2009-07-16 | Tdk Corp | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4812192B2 (ja) | 2001-07-27 | 2011-11-09 | パナソニック株式会社 | フラッシュメモリ装置、及び、それに記憶されたデータのマージ方法 |
JP4715155B2 (ja) | 2004-10-08 | 2011-07-06 | ソニー株式会社 | 情報処理装置及び情報処理方法、並びにコンピュータ・プログラム |
JP4140910B2 (ja) * | 2004-12-28 | 2008-08-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データ処理装置、データ管理装置、データ処理方法、データ管理方法、データ処理プログラム、データ管理プログラム、及び情報システム |
JP4604806B2 (ja) * | 2005-04-12 | 2011-01-05 | ソニー株式会社 | 記録装置 |
JP2010152514A (ja) | 2008-12-24 | 2010-07-08 | Toshiba Corp | メモリシステム |
US8312239B2 (en) * | 2009-09-30 | 2012-11-13 | Avaya Inc. | Cache management for increasing performance of high-availability multi-core systems |
JP5204265B2 (ja) | 2010-01-29 | 2013-06-05 | 株式会社東芝 | 半導体記憶装置及び半導体記憶装置の制御方法 |
JP2012033002A (ja) | 2010-07-30 | 2012-02-16 | Toshiba Corp | メモリ管理装置およびメモリ管理方法 |
-
2012
- 2012-02-23 JP JP2012038017A patent/JP2013174975A/ja active Pending
- 2012-09-14 US US13/616,466 patent/US8825946B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070271494A1 (en) * | 2006-05-17 | 2007-11-22 | Sandisk Corporation | Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices |
JP2009157807A (ja) * | 2007-12-27 | 2009-07-16 | Tdk Corp | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10754771B2 (en) | 2018-07-26 | 2020-08-25 | Toshiba Memory Corporation | Storage device and storage control method |
US11366751B2 (en) | 2018-07-26 | 2022-06-21 | Kioxia Corporation | Storage device and storage control method |
CN113010107A (zh) * | 2021-02-26 | 2021-06-22 | 深圳忆联信息系统有限公司 | 数据存储管理方法、装置、计算机设备及存储介质 |
CN113010107B (zh) * | 2021-02-26 | 2023-08-29 | 深圳忆联信息系统有限公司 | 数据存储管理方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20130246716A1 (en) | 2013-09-19 |
US8825946B2 (en) | 2014-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2013174975A (ja) | メモリシステムとそのデータ書き込み方法 | |
US9928167B2 (en) | Information processing system and nonvolatile storage unit | |
JP5317689B2 (ja) | メモリシステム | |
US9384123B2 (en) | Memory system | |
KR100771519B1 (ko) | 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법 | |
JP5198245B2 (ja) | メモリシステム | |
US8417893B2 (en) | Memory mapping techniques | |
JP5336060B2 (ja) | 不揮発性メモリ装置およびそれを動作させる方法 | |
JP4829365B1 (ja) | データ記憶装置及びデータ書き込み方法 | |
US8850105B2 (en) | Method for controlling memory system, information processing apparatus, and storage medium | |
JP4422652B2 (ja) | 漸進的マージ方法及びそれを利用したメモリシステム | |
US8055873B2 (en) | Data writing method for flash memory, and controller and system using the same | |
US20100088459A1 (en) | Improved Hybrid Drive | |
TWI406127B (zh) | 更新使用者資料的方法 | |
JP2006216036A (ja) | フラッシュメモリを含んだデータ貯蔵装置及びそれのマージ方法 | |
JP2011128998A (ja) | 半導体記憶装置 | |
JP2011145838A (ja) | 記憶装置管理装置および記憶装置の管理方法 | |
US8156278B2 (en) | Non-volatile data storage system and method thereof | |
JP2010066914A (ja) | 統合メモリ管理装置及びメモリ管理方法 | |
TW201303584A (zh) | 記憶體儲存裝置、其記憶體控制器與有效資料識別方法 | |
JP2018160189A (ja) | メモリシステム | |
JP2012128645A (ja) | メモリシステム | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP5025670B2 (ja) | 情報処理装置およびデータ記憶装置 | |
JP2013206307A (ja) | メモリ制御装置、データ記憶装置及びメモリ制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140210 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140623 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140708 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20141118 |