JP2010287049A - メモリシステムおよびメモリシステムの管理方法 - Google Patents

メモリシステムおよびメモリシステムの管理方法 Download PDF

Info

Publication number
JP2010287049A
JP2010287049A JP2009140340A JP2009140340A JP2010287049A JP 2010287049 A JP2010287049 A JP 2010287049A JP 2009140340 A JP2009140340 A JP 2009140340A JP 2009140340 A JP2009140340 A JP 2009140340A JP 2010287049 A JP2010287049 A JP 2010287049A
Authority
JP
Japan
Prior art keywords
data
memory
page
block
physical
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
Application number
JP2009140340A
Other languages
English (en)
Inventor
Yuichiro Watanabe
雄一郎 渡辺
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2009140340A priority Critical patent/JP2010287049A/ja
Priority to US12/752,476 priority patent/US20100318726A1/en
Publication of JP2010287049A publication Critical patent/JP2010287049A/ja
Pending legal-status Critical Current

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/7201Logical to physical mapping or translation of blocks or pages

Abstract

【課題】上書き不可能な不揮発性メモリにおけるブロック移動を伴うデータ書き込み処理の効率化、高速化をなし得るメモリシステムを提供すること。
【解決手段】同一論理ブロックが第1および第2のメモリの各1つの物理ブロックと対応付けられるように論理ブロックと第1および第2のメモリの物理ブロックとの対応を管理し、同一論理ブロックで対応付けられた物理ブロック間ではデータが記憶されるページが重複しないように同一論理ブロックに含まれるページのデータを記憶し、第1のメモリに対して行う処理と、第2のメモリに対して行う処理とを並行に実行する。
【選択図】図1

Description

本発明は、不揮発性半導体メモリを備えたメモリシステムおよびメモリシステムの管理方法に関する。
電気的書き換え可能な不揮発性半導体メモリ(EEPROM)の一つとして、NAND型フラッシュメモリが知られている。NAND型フラッシュメモリは、単位セル面積がNOR型に比べて小さく、大容量化が容易である。このような特長を活かして、NAND型フラッシュメモリは、ファイルメモリやメモリカードをはじめとする各種記録メディアとして使用されている。
NAND型フラッシュメモリは、ワード線方向に並ぶ複数のNANDセルユニット(NANDストリング)の集合として定義されるブロックをデータ消去単位とする。ブロックは複数のページで構成され、ページ単位で書き込み/読み出しが行われることが多い。あるブロックのデータを書き換えたい場合には、そのブロックのデータを一括消去した後に、書き込みを行うことが必要である。
このようなNAND型フラッシュメモリの技術分野において、ウェアレベリング処理やガベージコレクション処理を簡単化するために、ページではなくブロックを管理単位とするブロック管理方式が知られている。ブロック管理方式においては、ホスト装置側で使用する論理ブロックアドレスと、NAND型フラッシュメモリ側で使用する物理ブロックアドレスとのブロック対応管理のみを行っており、ブロック内に存在するページの管理は行っていない。このため、ブロック管理方式においては、或る論理ブロックアドレスに含まれる論理ページのデータは、対応付けられる物理ブロックアドレスの対応する物理ページに記憶されるような管理が行われている。
このようなブロック管理において、既に有効データが存在する複数の論理ページにおける一部の論理ページに書き込み要求が発生する場合がある。このような場合、ブロック管理では、つぎのようなデータ引っ越し処理を実行する。すなわち、予備のブロックへ書き込み要求のページデータを書き込み、その後、書き込み要求が発生した一部論理ページを含む論理ブロックに対応する物理ブロック内の書き込み対象ではないページデータを予備ブロックへコピーし、さらに、書き込み要求が発生した論理ブロックの論理ブロックアドレスを予備ブロックの物理ブロックアドレスに対応づける対応付けの変更を実行する。書き込み要求が発生した元の物理ブロックは、その後消去され、未使用ブロックとされる。
このようなデータ引っ越し処理は、ページ単位でデータを読み出して他のブロックに書き込むという動作の繰り返しを必要とし、データ処理時間が長くなる。このように、ブロック管理においては、ページ管理よりもデータのブロック間移動が頻繁に発生する分、書き込み処理時間が長くなるという問題があり、これは、NAND型フラッシュメモリを使用するホストシステムのパフォーマンスを低下させる。
特許文献1には、フラッシュメモリに、データブロックと、データブロックの修正内容を記録するログブロックとを設け、データが記録されているページに書込みが要請された時、書込みが要請されたページを含むデータブロックに対応するログブロックに書込みを行い、前記ページに書込みを再要請されるとログブロック内の空いている自由ページに書込みを行うことで、同じページに連続的に書込みが要請される場合にも1つのログブロック内で処理することが示されている。
しかしながら、特許文献1では、ログブロックによる電源瞬断時のデータの復元と、フラッシュメモリのデータ貯蔵空間の効率的使用が可能となるが、上記したブロック管理での書き込み処理を高速化させることはできない。
特開2002−366423号公報
本発明は、上書き不可能な不揮発性メモリにおけるブロック移動を伴うデータ書き込み処理の効率化、高速化、信頼性向上をなし得るメモリシステムおよびメモリシステムの管理方法を提供する。
本願発明の一態様によれば、データ記憶領域が複数のページを含む複数のブロックにより構成され、並列処理が可能な不揮発性の第1および第2のメモリと、前記第1および第2のメモリの読み出し及び書き込みを制御するコントローラと備え、前記コントローラは、同一論理ブロックが第1および第2のメモリの各1つの物理ブロックと対応付けられるように論理ブロックと第1および第2のメモリの物理ブロックとの対応を管理し、同一論理ブロックで対応付けられた物理ブロック間ではデータが記憶されるページが重複しないように同一論理ブロックに含まれるページのデータを記憶するアドレス制御部を備え、前記アドレス制御部は、書き込み要求されたページが第1および第2のメモリの両方で不使用の場合は、一方のメモリの該当ページにデータを書き込む第1の制御を行う第1の制御部と、書き込み要求されたページが第1および第2のメモリの一方で使用中の場合は、使用中でない一方のメモリの該当ページに書き込み要求データを書き込み、使用中の他方のメモリの該当ページ以外の記憶データを未使用の物理ブロックに書き込む第2の制御を行う第2の制御部と、書き込み要求されたページが第1および第2のメモリの両方で使用中の場合は、第1のメモリの未使用の物理ブロックに、書き込み要求データのうち第2のメモリで使用中のページと重複するページのデータと、第1のメモリで使用中のページの記憶データのうち書き込み要求データと重複するページ以外の記憶データを書き込み、第2のメモリの未使用の物理ブロックに、書き込み要求データのうち第1のメモリで使用中のページと重複するページのデータと、第2のメモリで使用中のページの記憶データのうち書き込み要求データと重複するページ以外の記憶データを書き込む第3の制御を行う第3の制御部とを備え、第2および第3の制御部は、第1のメモリに対して行う処理と、第2のメモリに対して行う処理とを並行に実行することを特徴とする。
本発明によれば、データ存在領域への書き込み発生時におけるブロック移動とデータ書き込み処理を高速化、効率化することが可能となる。
図1は、本発明の実施の形態にかかるシステム構成を示すブロック図。 図2は、論理アドレスと物理アドレスとの対応を示す論物マッピングを示す図。 図3は、ブロック管理テーブルの一例を示す図。 図4は、ページ管理テーブルの一例を示す図。 図5は、未使用ブロック管理テーブルの一例を示す図。 図6は、使用済みブロック管理テーブルの一例を示す図。 図7は、書き込み動作手順を示すフローチャート。 図8は、書き込み動作の一例を示す図。 図9は、書き込み動作の他の例を示す図。 図10は、書き込み動作の他の例を示す図。 図11は、デフラグ処理手順を示すフローチャート。 図12は、デフラグ処理を示す図。
以下に添付図面を参照して、本発明の実施の形態にかかるメモリシステムを詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。
図1は、本発明の実施の形態にかかるメモリシステムの構成例を示すブロック図である。図1において、本メモリシステム1は、ATAインタフェースなどのメモリ接続インタフェース(HOST I/F)2を介してCPUコアなどのホスト装置100と接続され、ホスト装置100の外部メモリとして機能する。メモリシステム1は、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリと略す)10と、コントローラ20とを備えている。
NANDメモリ10は、2つの並列動作要素(以下単にデバイスという)A,Bを有し、各デバイスA,Bはそれぞれ独立したI/Oチャネル11a、11bでコントローラ20に接続されており、各デバイスA,Bはコントローラ20によって並列動作が可能である。各デバイスA,Bは、データ消去の単位である物理ブロックを複数有して構成され、また各物理ブロックは、データ書き込み/読み出しの単位である物理ページを複数個有している。NANDメモリ10の各メモリセルは、1ビットを記憶するように構成されていてもよいし、多値(2ビット以上のデータ)を記憶するように構成されていてもよい。
コントローラ20は、NANDメモリ10との接続インタフェースであるメモリI/F21と、CPU22と、2つの揮発性半導体メモリとしてのRAMバッファ23a、23bと、アドレス制御部24と、HOST I/F2とを備えている。RAMバッファ23a、23bは、ホスト装置100と各NANDメモリ10間でのデータ転送用キャッシュおよび作業領域用メモリなどとして機能する。CPU22は、NANDメモリ10に記憶された管理プログラムをRAMバッファ23a、23bなどの半導体メモリに展開して実行することで、RAMバッファ23a、23bを介してホスト装置100と各NANDメモリ10との間でのデータ転送制御を行うとともに、コントローラ20内の各構成要素を制御する。CPU22の1つの機能要素としてのアドレス制御部24は、ホスト装置100側で使用される論理アドレス(例えば、LBA:Logical Block Addressing)とNANDメモリ10の物理アドレスとのアドレス変換を管理する。
図2は、ホスト装置100側で使用される論理アドレスとNANDメモリ10の物理アドレスとの対応を示す論物マッピングを示すものである。図2に示すように、本メモリシステムにおいては、1つの論理ブロックは、デバイスAの1つの物理ブロックおよびデバイスBの1つの物理ブロックに対応付けられる。図2では、論理ブロック0が、デバイスA,Bの物理ブロック0に対応付けられるようになっているが、1つの論理ブロックに対応付けられるデバイスA,Bの物理ブロックは、同一番号(同一アドレス)に限らず、任意の物理ブロックを対応付けることができる。
また、同一論理ブロックに対応付けられたデバイスA,Bの各物理ブロック間においては、各物理ブロック内の同じ物理ページにはいずれか一方にしかデータが存在しないようにする。別言すれば、同一論理ブロックで対応付けられた物理ブロック間ではデータが記憶されるページが重複しないように同一論理ブロックに含まれるページのデータを記憶する。例えば、論理ブロック2に、デバイスAの物理ブロック2とデバイスBの物理ブロック3とが対応付けられている場合、デバイスAの物理ブロック2内の物理ページ0〜24にデータが存在している場合、デバイスBの物理ブロック3内の物理ページ0〜24にはデータが存在しないようにしている。したがって、ホスト装置100側(ユーザ側)からは、NANDメモリ10の記憶容量は、1つのデバイス分しか認識することができない。すなわち、ユーザからは擬似的にNANDメモリが1つのデバイス分として扱われる。このように、本メモリシステムでは、ブロック内で論理ページと物理ページの割付けを行うページ管理は行っておらず、所謂ブロック管理が踏襲されている。
図3〜図6は、アドレス制御部24で使用されるアドレス変換テーブルの一例を示すものである。図3は、ブロック管理テーブル30の一例を示すものであり、ブロック管理テーブル30では、論理ブロックアドレス(論理ブロック番号)と、デバイスA,Bの物理ブロックアドレス(物理ブロック番号)との対応関係が管理されている。図3では、例えば、論理ブロック0は、デバイスAの物理ブロック2およびデバイスBの物理ブロック3に対応付けられていることを示している。
図4は、ページ管理テーブル40の一例を示すもので、データが記憶されている論理ブロック毎に、図4に示すようなページ管理テーブルが備えられている。前述したように、1つの論理ブロックは、デバイスA,Bの各1つの物理ブロックに対応付けられる。1つの論理ブロックに対応するページ管理テーブルには、該論理ブロックに対応付けられたデバイスA,Bの各1つの物理ブロック内の物理ページに関する管理情報が登録されている。同一論理ブロックに対応付けられたデバイスA,Bの各物理ブロックにおいては、各物理ブロック内の同じ物理ページにはいずれか一方にしかデータが存在しないように管理されているので、1つのページ管理テーブルには、1つの物理ブロック内の物理ページ数分のエントリ(0〜m)しか確保されていない。
図4に示すように、ページ管理テーブル40においては、物理ページ毎に、1ビットのバリッド情報(Valid)と、1ビットのデバイス識別情報とが登録されている。バリッド情報(Valid)は、各物理ページ毎のデータの有無(使用/未使用)を示し、バリッド情報が0である場合は、デバイスA,Bのいずれのページにもデータが格納されていないことを示し、バリッド情報が1である場合は、デバイスA,Bのいずれかのページにデータが格納されていることを示している。デバイス識別情報は、データがデバイスA,Bのどちらに記憶されているかを示し、例えば、0である場合は、デバイスAにデータ格納され、1である場合は、デバイスBにデータが格納されていることを示している。
図5は、未使用ブロック管理テーブル45の一例を示すもので、未使用ブロック管理テーブル45によって未使用の物理ブロックを管理する。未使用の物理ブロックとは、用途未割り当ての消去済みの物理ブロックである。未使用ブロック管理テーブル45では、デバイスA,B毎に、未使用の物理ブロックのブロック番号(ブロックアドレス)が登録されている。
図6は、使用済みブロック管理テーブル50の一例を示すもので、使用済みブロック管理テーブル50によって使用済みブロックを管理する。使用済みブロックとは、一時的に使用が禁止された物理ブロックのことである。使用済みブロック管理テーブル50では、デバイスA,B毎に、使用済みの物理ブロックのブロック番号(ブロックアドレス)が登録されている。
つぎに、図7に示すフローチャートを参照して、本実施の形態における書き込み動作について説明する。ホスト装置100からの書き込み要求があった場合、CPU22はアドレス制御部24を使用してつぎのような制御を実行する。まず、アドレス制御部24は、書き込み要求先の1〜複数の論理ページに対応する1〜複数の物理ページが未使用であるか否か(デバイスA,Bのいずれにも有効データが記憶されていないか否か)を図3,図4に示した各管理テーブル30、40を使用して判断する(ステップS100)。
すなわち、アドレス制御部24は、図3のブロック管理テーブル30を用いて書き込み要求対象の論理ブロックアドレスに対応するページ管理テーブル40における全ての書き込み先物理ページ(=書き込み先論理ページ)のバリッド情報(Valid)を調べ、このValid情報が全て0である場合は、書き込み先物理ページが未使用であると判断する。書き込み先物理ページが未使用であると判断した場合、アドレス制御部24は、図3に示すブロック管理テーブル30を用いて書き込み要求対象の論理ブロックアドレスに対応付けられたデバイスA,Bの物理ブロック番号を選択し、あらかじめ決めている一方のデバイス(例えばデバイスA)側の前記選択した物理ブロック番号に対応する物理ブロックの該当ページに、書き込み要求に対応する書き込みデータを書き込む(ステップS110)。
図8は、ステップS110の処理が行われる一例を示したものである。図8では、デバイスAの物理ブロック1のページ0〜49にデータが存在している状態で、ページ50〜63に対する書き込み要求が発生している。このような場合は、デバイスAの物理ブロック1のページ50〜63にデータが書き込まれることとなる。
図7のステップS110の判断がNOの場合、すなわち書き込み要求された1〜複数の論理ページに対応する1〜複数の物理ページにデータが存在する場合、アドレス制御部24は、書き込み要求先の物理ページが2つのデバイスA,Bに跨るか否かをページ管理テーブル40のValid情報およびデバイス識別情報を用いて判定する(ステップS120)。図9にステップS120の判断がNOである場合の一例を示している。図9の場合は、デバイスAの物理ブロック1のページ0〜63にデータが存在している状態で、ページ0〜19に対する書き込み要求が発生している。この場合は、1つのデバイスに対するアクセスであり、2つのデバイスA,Bに跨るアクセスではない。
このような場合、アドレス制御部24は、まず、書き込みデータを書き込み要求されたページが未使用のデバイス側に書き込む(ステップS130)。図9の場合は、デバイスB側では、ページ0〜19が未使用なので、データは、デバイスBのページ0〜19に対して書き込まれる。この書き込み処理では、RAMバッファ23bに記憶された書き込みデータをメモリI/F21、I/Oチャネル11bを介してデバイスBの物理ブロック1のページ0〜19に書き込む。
このデバイスBへの書き込み処理を行うのと並行して、書き込み先ページにデータが存在するデバイス側における書き込み要求に対応するページ以外の記憶データを、未使用の空き物理ブロックに書き込む、コピー処理を実行する(ステップS140)。未使用の空き物理ブロックは、図5に示した未使用ブロック管理テーブル45に登録されている未使用ブロックから選択する。また、未使用ブロックへのコピーは、未使用ブロックの先頭ページに対してではなく、書き込み要求と同じページアドレスに対して実行する。図9の場合は、デバイスA側の物理ブロック1の物理ページ20〜63に記憶されているデータが、デバイスA側の物理ブロックKの物理ページ20〜63にコピーされている。このコピー動作では、デバイスA側の物理ブロック1の物理ページ20〜63に記憶されているデータを、I/Oチャネル11a、メモリI/F21を介してRAMバッファ23aの作業領域に読み出し、RAMバッファ23aに書き込まれたデータをメモリI/F21、I/Oチャネル11aを介してデバイスA側の物理ブロックKの物理ページ20〜63に書き込む。各別のRAMバッファ23a、23b、I/Oチャネル11a、11bを有しているので、ステップS130の処理とステップS140の処理を高速に並列処理することが可能となる。
未使用ブロックへの書き込みが終了すると、コピー元のブロック(図9のデバイスA側の物理ブロック1)を一時的に使用済みブロックとしてアクセスを禁止する。具体的には、図6に示した使用済みブロック管理テーブル50のデバイスA側に、物理ブロック1のブロック番号1を登録する。
つぎに、アドレス制御部24は、デバイスBでの書き込み、デバイスAでのコピー処理に対応するようにブロック管理テーブル30およびページ管理テーブル40を更新する。具体的には、図9の場合、論理ブロック1に対応付けられる物理ブロックが、デバイスAでは物理ブロック1から物理ブロックKに変更されたので、この変更に対応するようにブロック管理テーブル30を更新する。また、ページ0〜19はデバイスBに記憶され、ページ20〜63がデバイスAに記憶されるような記憶変更が行われたので、この変更に対応するように論理ブロック1に対応するページ管理テーブル40を更新する。
この後、使用済みブロック管理テーブル50に登録した使用済みブロックを消去し、未使用ブロックとして図5に示した未使用ブロック管理テーブル45に登録する。図9の場合は、コピー元であるデバイスAの物理ブロック1が使用済みブロックとされているので、この使用済みのデバイスAの物理ブロック1を消去処理し、その後、デバイスAの物理ブロック1を未使用ブロック管理テーブル45に登録することになる。
一方、図7のステップS120の判断がYESの場合、すなわち書き込み要求先の物理ページが2つのデバイスA,Bに跨る(書き込み要求されたページが2つのデバイスA,Bで使用中である)と判断された場合、アドレス制御部24は、つぎのような動作を実行する。図10に、ステップS120の判断がYESである場合の一例を示している。図10の場合は、デバイスAの物理ブロック1のページ20〜63にデータが存在し、デバイスBの物理ブロック1のページ0〜19にデータが存在している状態で、ページ15〜30に対する書き込み要求が発生しており、2つのデバイスA,Bに跨るアクセスが発生している。
このような場合、アドレス制御部24は、まず、デバイスAの未使用の空きブロックに、書き込み要求データのうちデバイスBで使用中のページと重複するページのデータを書き込む(ステップS160)。未使用の空き物理ブロックは、図5に示した未使用ブロック管理テーブル45に登録されている未使用ブロックから選択する。また、未使用ブロックへの書き込みは、未使用ブロックの先頭ページに対してではなく、書き込み要求と同じページアドレスに対して実行する。図10の場合は、デバイスBのブロック1には、ページ0〜19にデータが存在している状態で、ページ15〜30に対する書き込みが発生しているので、ページ15〜31への書き込みデータのうち重複するページ15〜19のデータが、デバイスAの未使用の空きブロックKのページ15〜19に書き込まれる。
ステップS160におけるデバイスAへのデータ書き込み処理と並行して、ステップS190の処理が実行される。ステップS190では、デバイスBの未使用の空きブロックに、書き込み要求データのうちデバイスAで使用中のページと重複するページのデータを書き込む。図10の場合は、デバイスAのブロック1には、ページ20〜63にデータが存在している状態で、ページ15〜30に対する書き込みが発生しているので、ページ15〜31への書き込みデータのうち重複するページ20〜30のデータが、デバイスBの未使用の空きブロックLのページ20〜30に書き込まれる。
ステップS160の処理は、RAMバッファ23aに一時記憶された書き込み要求データをメモリI/F21、I/Oチャネル11aを介してデバイスAに書き込むことによって行われ、ステップS190の処理は、RAMバッファ23bに一時記憶された書き込み要求データをメモリI/F21、I/Oチャネル11bを介してデバイスBに書き込むことによって行われるので、ステップS160およびS190の処理を高速に並列処理することが可能となる。ステップS160の処理が終了次第、ステップS170の処理が実行され、ステップS190の処理が終了次第、ステップS200の処理が実行される。
上記のようなデバイスA,Bでの新たなデータの書き込みが終了すると、書き込み要求されたページ以外のデータを、それぞれのデバイス内で先に書き込んだ未使用空きブロックにコピーする。すなわち、デバイスA側では、デバイスAで使用中のページの記憶データのうち書き込み要求データと重複するページ以外の記憶データをデバイスAの未使用空きブロックにコピーし(ステップS170)、デバイスB側では、デバイスBで使用中のページの記憶データのうち書き込み要求データと重複するページ以外の記憶データをデバイスBの未使用空きブロックにコピーする(ステップS200)。
図10の場合、デバイスA側では、ブロック1における書き込み要求されたページ15〜30以外のページ31〜63の記憶データをデバイスA側の未使用ブロックである物理ブロックKの物理ページ31〜63にコピーする(ステップS170)。このコピー処理では、デバイスA側の物理ブロック1の物理ページ31〜63に記憶されているデータを、I/Oチャネル11a、メモリI/F21を介してRAMバッファ23aの作業領域に読み出し、RAMバッファ23aに書き込まれたデータをメモリI/F21、I/Oチャネル11aを介してデバイスA側の物理ブロックKの物理ページ31〜63に書き込む。
一方、デバイスB側では、ブロック1における書き込み要求されたページ15〜30以外のページ0〜14の記憶データをデバイスB側の未使用ブロックである物理ブロックLの物理ページ0〜14にコピーする(ステップS200)。このコピー処理では、デバイスB側の物理ブロック1の物理ページ0〜14に記憶されているデータを、I/Oチャネル11b、メモリI/F21を介してRAMバッファ23bの作業領域に読み出し、RAMバッファ23bに書き込まれたデータをメモリI/F21、I/Oチャネル11bを介してデバイスB側の物理ブロックLの物理ページ0〜14に書き込む。
このような未使用ブロックへの書き込みが終了すると、コピー元のブロック(図10のデバイスA,Bの物理ブロック1)を一時的に使用済みブロックとしてアクセスを禁止する。具体的には、図6に示した使用済みブロック管理テーブル50のデバイスA側およびデバイスBに、物理ブロック1のブロック番号1を登録する。
つぎに、アドレス制御部24は、デバイスA,Bでの書き込み処理、デバイスA,Bでのコピー処理に対応するようにブロック管理テーブル30およびページ管理テーブル40を更新する(ステップS180、S210)。具体的には、図10の場合、論理ブロック1に対応付けられる物理ブロックが、デバイスAでは物理ブロック1から物理ブロックKに変更され、デバイスBでは物理ブロック1から物理ブロックLに変更されたので、この変更に対応するようにブロック管理テーブル30を更新する。また、ページ0〜14はデバイスBに記憶され、ページ15〜19はデバイスAに記憶され、ページ20〜30はデバイスBに記憶され、ページ31〜63はデバイスAに記憶されるような記憶変更が行われたので、この変更に対応するように論理ブロック1に対応するページ管理テーブル40を更新する。
この後、使用済みブロック管理テーブル50に登録した使用済みブロックを消去し、未使用ブロックとして図5に示した未使用ブロック管理テーブル45に登録する。図9の場合は、コピー元であるデバイスA,Bの物理ブロック1が使用済みブロックとされているので、この使用済みのデバイスA,Bの物理ブロック1を消去処理し、その後デバイスA,Bの物理ブロック1を未使用ブロック管理テーブル45に登録することになる。なお、図7において、ステップS160とステップS170の処理順序が逆になってもよく、ステップS190とステップS200の処理順序が逆になってもよい。
このように第1の実施の形態においては、物理ブロックが同一論理ブロックに対応付けられるメモリデバイスA,Bを用意し、これらメモリデバイスA,Bに対するブロック移動およびデータ書き込み処理を並列に実行するようにしているので、データ存在領域への書き込み発生時におけるブロック移動とデータ書き込み処理を高速化、効率化することが可能となる。また、論理アドレスを共用するメモリデバイスA,Bが用意されているので、ユーザからみたデバイスの寿命を通常より長くすることができ、データの保全性、信頼性の向上を図ることができる。
(第2の実施の形態)
つぎに、この発明の第2の実施の形態を図11および図12を参照して説明する。第1の実施の形態で説明したデータ書き込みおよびブロック移動を用いた場合、デバイスA,Bのブロック内でデータ領域が分散した図10に示したような状態が発生することが予想される。そこで、この実施の形態では、書き込み終了後に、ブロック内でのデータ領域の分散数が所定の閾値を超えた場合には、NANDメモリ10にアクセスされていないときに、CPU22がデフラグ処理を行うようにする。
図11はデフラグ処理の動作手順を示すフローチャートである。まず、CPU22は、データ書き込み動作終了後に、デバイスA,Bにおいてデータが記憶されるページの分散数(分割数)が所定の閾値を越えた物理ブロックが存在するか否かをページ管理テーブル40およびブロック管理テーブル30を用いて判定し(ステップS300)、分割数が閾値を越えるブロックが存在する場合、分割数が閾値を越えるブロックに対しデフラグ処理を開始する(ステップS310)。ただし、デフラグ処理は、NANDメモリ10に対する書き込み/読み出しなどのアクセスが発生していないときに実行する。図12の左側には、デバイスA,Bにおいて、データ領域が分散されている状態が示されている。第1の実施の形態の手法を用いた場合、デバイスA,Bでの分散数は基本的に同じである。
デフラグ処理では、まず、一方のデバイスのブロック内のデータをRAMバッファ23a(または23b)に読み出す(ステップS320)。次に、RAMバッファ23a(または23b)に読み出されたデータを他方のデバイスにおける同じ論理アドレスで対応付けられたブロックに対して書き込む(ステップS330)。この書き込みの際には、読み出し元のページと書き込み先のページは同じとする。図12の場合は、デバイスBのブロック1のページ0〜14、ページ20〜30、ページ64〜78、ページ86〜96からデータが読み出され、読み出された各データはデバイスAのブロック1の同じページ(ページ0〜14、ページ20〜30、ページ64〜78、ページ86〜96)に対し書き込まれる。このようなデフラグ処理が終了すると、読み出し元のブロックであるデバイスBのブロック1は、消去された後、未使用ブロックとして登録される。
なお、デフラグ処理の際、デバイスA側のブロックとデバイスB側のブロックとの記憶データ量を比較し、この比較結果に基づき記憶データ量が少ないほうから多い方にデータを書き込むようにしたほうが、デフラグ処理を高速化することができる。また、一方のデバイスにおける別の新たな未使用ブロックに対し、両デバイスA,Bにおける分割数が所定数を越えるブロックのデータを書き込むデフラグ処理を行うようにしてもよい。この場合、デフラグ処理が終了すると、読み出し元の両デバイスA,Bにおけるブロックは消去された後、未使用ブロックとして登録される。
このように第2の実施の形態では、両デバイスA,Bにおける分割数が所定数を越えるブロックが存在する場合、一方のデバイスにデータを集約化させるデフラグ処理を実行させるようにしたので、書き込み処理の際には、図10で示した2つのデバイスA,Bに跨るアクセスが発生し難くなり、図8または図9に示したアクセスが多くなって、書き込み処理を高速化することが可能となる。
なお、管理テーブルにおけるデータの管理手法は、図3〜図6に示したものに限らず、任意の手法を用いるようにしてもよい。また、上記実施の形態では、ページ管理テーブル40のValid情報およびデバイス識別情報によって、各ページの使用/未使用と、データがデバイスA,Bのどちらに記憶されているかを判別するようにしているが、各デバイスA,Bにおける該当ブロック内の各ページが、データが記憶されていないイレーズページであるか否かをサーチし、このサーチ結果に基づいて各ページの使用/未使用と、データがデバイスA,Bのどちらに記憶されているかを判別するようにしてもよい。また、上記実施の形態では、論理アドレスを共用する2つのNANDメモリを用いたが、論理アドレスを共用する3つ以上のNANDメモリを用いて、上記と同様の書き込み制御、ブロック移動制御を行うようにしてもよい。
1 メモリシステム、10 NANDメモリ、11a I/Oチャネル、11b I/Oチャネル、20 コントローラ、21 メモリI/F、 22 CPU、 23a RAMバッファ、23b RAMバッファ、24 アドレス制御部、30 ブロック管理テーブル、40 ページ管理テーブル、100 ホスト装置。

Claims (5)

  1. データ記憶領域が複数のページを含む複数のブロックにより構成され、並列処理が可能な不揮発性の第1および第2のメモリと、
    前記第1および第2のメモリの読み出し及び書き込みを制御するコントローラと備え、
    前記コントローラは、
    同一論理ブロックが第1および第2のメモリの各1つの物理ブロックと対応付けられるように論理ブロックと第1および第2のメモリの物理ブロックとの対応を管理し、同一論理ブロックで対応付けられた物理ブロック間ではデータが記憶されるページが重複しないように同一論理ブロックに含まれるページのデータを記憶するアドレス制御部を備え、
    前記アドレス制御部は、
    書き込み要求されたページが第1および第2のメモリの両方で不使用の場合は、一方のメモリの該当ページにデータを書き込む第1の制御を行う第1の制御部と、
    書き込み要求されたページが第1および第2のメモリの一方で使用中の場合は、使用中でない一方のメモリの該当ページに書き込み要求データを書き込み、使用中の他方のメモリの該当ページ以外の記憶データを未使用の物理ブロックに書き込む第2の制御を行う第2の制御部と、
    書き込み要求されたページが第1および第2のメモリの両方で使用中の場合は、第1のメモリの未使用の物理ブロックに、書き込み要求データのうち第2のメモリで使用中のページと重複するページのデータと、第1のメモリで使用中のページの記憶データのうち書き込み要求データと重複するページ以外の記憶データを書き込み、第2のメモリの未使用の物理ブロックに、書き込み要求データのうち第1のメモリで使用中のページと重複するページのデータと、第2のメモリで使用中のページの記憶データのうち書き込み要求データと重複するページ以外の記憶データを書き込む第3の制御を行う第3の制御部と、
    を備え、
    第2および第3の制御部は、第1のメモリに対して行う処理と、第2のメモリに対して行う処理とを並行に実行することを特徴とするメモリシステム。
  2. 前記第2の制御部は、前記第2の制御を行った後、論理ブロックと第1および第2のメモリの物理ブロックとの対応付けを変更し、
    前記第3の制御部は、前記第3の制御を行った後、論理ブロックと第1および第2のメモリの物理ブロックとの対応付けを変更することを特徴とする請求項1に記載のメモリシステム。
  3. 前記第1および第2のメモリに、所定の閾値以上のデータ分散数を有する物理ブロックが存在する場合、同一論理ブロックで対応付けられた一方のメモリの物理ブロックのデータを他方のメモリの物理ブロックのデータに集約するデフラグ処理を実行する第4の制御部をさらに備えることを特徴とする請求項1または2に記載のメモリシステム。
  4. データ記憶領域が複数のページを含む複数のブロックにより構成され、並列処理が可能な不揮発性の第1および第2のメモリを含むメモリシステムの管理方法であって、
    同一論理ブロックが第1および第2のメモリの各1つの物理ブロックと対応付けられるように論理ブロックと第1および第2のメモリの物理ブロックとの対応を管理し、同一論理ブロックで対応付けられた物理ブロック間ではデータが記憶されるページが重複しないように同一論理ブロックに含まれるページのデータを記憶し、
    書き込み要求されたページが第1および第2のメモリの両方で不使用の場合は、一方のメモリの該当ページにデータを書き込む第1の制御を行い、
    書き込み要求されたページが第1および第2のメモリの一方で使用中の場合は、使用中でない一方のメモリの該当ページに書き込み要求データを書き込み、使用中の他方のメモリの該当ページ以外の記憶データを未使用の物理ブロックに書き込む第2の制御を行い、
    書き込み要求されたページが第1および第2のメモリの両方で使用中の場合は、第1のメモリの未使用の物理ブロックに、書き込み要求データのうち第2のメモリで使用中のページと重複するページのデータと、第1のメモリで使用中のページの記憶データのうち書き込み要求データと重複するページ以外の記憶データを書き込み、第2のメモリの未使用の物理ブロックに、書き込み要求データのうち第1のメモリで使用中のページと重複するページのデータと、第2のメモリで使用中のページの記憶データのうち書き込み要求データと重複するページ以外の記憶データを書き込む第3の制御を行い、
    第2および第3の制御の際に、第1のメモリに対して行う処理と、第2のメモリに対して行う処理とを並行に実行することを特徴とするメモリシステムの管理方法。
  5. 前記第1および第2のメモリに、所定の閾値以上のデータ分散数を有する物理ブロックが存在する場合、同一論理ブロックで対応付けられた一方のメモリの物理ブロックのデータを他方のメモリの物理ブロックのデータに集約するデフラグ処理を実行することを特徴とする請求項4に記載のメモリシステムの管理方法。
JP2009140340A 2009-06-11 2009-06-11 メモリシステムおよびメモリシステムの管理方法 Pending JP2010287049A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009140340A JP2010287049A (ja) 2009-06-11 2009-06-11 メモリシステムおよびメモリシステムの管理方法
US12/752,476 US20100318726A1 (en) 2009-06-11 2010-04-01 Memory system and memory system managing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009140340A JP2010287049A (ja) 2009-06-11 2009-06-11 メモリシステムおよびメモリシステムの管理方法

Publications (1)

Publication Number Publication Date
JP2010287049A true JP2010287049A (ja) 2010-12-24

Family

ID=43307375

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009140340A Pending JP2010287049A (ja) 2009-06-11 2009-06-11 メモリシステムおよびメモリシステムの管理方法

Country Status (2)

Country Link
US (1) US20100318726A1 (ja)
JP (1) JP2010287049A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9367256B2 (en) 2013-03-01 2016-06-14 Nec Corporation Storage system having defragmentation processing function

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5032371B2 (ja) 2008-03-01 2012-09-26 株式会社東芝 メモリシステム
JP5813589B2 (ja) * 2012-07-13 2015-11-17 株式会社東芝 メモリシステムおよびその制御方法
KR20140099737A (ko) 2013-02-04 2014-08-13 삼성전자주식회사 존-기반 조각모음 방법 및 그것을 이용한 유저 장치
JP6320318B2 (ja) * 2015-02-17 2018-05-09 東芝メモリ株式会社 記憶装置及び記憶装置を含む情報処理システム
US9830098B1 (en) * 2016-07-11 2017-11-28 Silicon Motion, Inc. Method of wear leveling for data storage device
TWI658361B (zh) * 2017-09-05 2019-05-01 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
TWI724550B (zh) * 2019-09-19 2021-04-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
KR20210051803A (ko) * 2019-10-31 2021-05-10 에스케이하이닉스 주식회사 메모리 시스템 및 컨트롤러

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DK3422583T3 (da) * 2004-08-30 2020-09-28 Google Llc System og fremgangsmåde for at tilvejebringe ikke-flygtig hukommelsesadministration i trådløse telefoner
US20060282610A1 (en) * 2005-06-08 2006-12-14 M-Systems Flash Disk Pioneers Ltd. Flash memory with programmable endurance
US7831758B2 (en) * 2007-12-21 2010-11-09 Intel Corporation Accelerating input/output (IO) throughput on solid-state memory-based mass storage device
US20090259806A1 (en) * 2008-04-15 2009-10-15 Adtron, Inc. Flash management using bad page tracking and high defect flash memory
US8180954B2 (en) * 2008-04-15 2012-05-15 SMART Storage Systems, Inc. Flash management using logical page size
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9367256B2 (en) 2013-03-01 2016-06-14 Nec Corporation Storage system having defragmentation processing function

Also Published As

Publication number Publication date
US20100318726A1 (en) 2010-12-16

Similar Documents

Publication Publication Date Title
CN110058796B (zh) 数据储存装置
KR100771519B1 (ko) 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
JP4740216B2 (ja) 不揮発性メモリ管理方法及び装置
US7890550B2 (en) Flash memory system and garbage collection method thereof
JP4185058B2 (ja) フラッシュメモリのリマッピング方法
KR100946286B1 (ko) 플래시 파일 시스템에서 가상-물리 주소 변환 방법 및 시스템
JP2010287049A (ja) メモリシステムおよびメモリシステムの管理方法
US9990277B2 (en) System and method for efficient address translation of flash memory device
KR101465789B1 (ko) 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법
US8949515B2 (en) Storage device and memory controller
KR20100094241A (ko) 예비 블록을 포함하지 않는 불휘발성 메모리 장치
JP2008009527A (ja) メモリシステム
JP4745465B1 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
KR100845552B1 (ko) Ftl의 어드레스 매핑 방법
KR20110139956A (ko) 맵핑 테이블을 복구하는 데이터 기억 장치 및 데이터 관리 방법
JP4242245B2 (ja) フラッシュrom制御装置
JP4488048B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US9778862B2 (en) Data storing method for preventing data losing during flush operation, memory control circuit unit and memory storage apparatus
JP4366420B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP5204265B2 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
US8850160B2 (en) Adaptive write behavior for a system having non-volatile memory
KR20090116505A (ko) 불휘발성 메모리 장치를 위한 파일 시스템 및 그것을포함하는 컴퓨팅 시스템
JP4558054B2 (ja) メモリシステム
WO2012104974A1 (ja) メモリコントローラ
JP2013109404A (ja) 情報処理装置