JP4498426B2 - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP4498426B2 JP4498426B2 JP2008051473A JP2008051473A JP4498426B2 JP 4498426 B2 JP4498426 B2 JP 4498426B2 JP 2008051473 A JP2008051473 A JP 2008051473A JP 2008051473 A JP2008051473 A JP 2008051473A JP 4498426 B2 JP4498426 B2 JP 4498426B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- logical
- storage unit
- logical block
- track
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Description
・物理ページ:NANDメモリチップ内部において一括して書き込み/読み出しが可能な単位のこと。物理ページサイズは、例えば4kB。ただし、主データ(ユーザデータなど)に対してSSD内で付加される誤り訂正符号などの冗長ビットは含まないものとする。通常、4kB+冗長ビット(例えば、数10B)が同時にメモリセルに書き込まれる単位となるが、説明の便宜上、上記のように定義する。
・論理ページ:SSD内で設定される書き込み/読み出し単位であり、1以上の物理ページに対応付けられている。論理ページサイズは、例えば8ビットノーマルモードでは、4kB、32ビット倍速モードでは、32kB。ただし、冗長ビットは含まないものとする。
・物理ブロック:NANDメモリチップ内部において独立して消去可能な最小単位のことであり、複数の物理ページから構成される。物理ブロックサイズは、例えば512kB。ただし、主データに対してSSD内で付加される誤り訂正符号などの冗長ビットは含まないものとする。通常、512kB+冗長ビット(例えば、数10kB)が同時に消去される単位となるが、説明の便宜上、上記のように定義する。
・論理ブロック:SSD内で設定される消去単位であり、1以上の物理ブロックに対応付けられている。論理ブロックサイズは、例えば8ビットノーマルモードでは、512kB、32ビット倍速モードでは、4MB。ただし、冗長ビットは含まないものとする。
・セクタ:ホストからの最小アクセス単位のこと。セクタサイズは、例えば512B。
・クラスタ:SSD内で「小さなデータ」を管理する管理単位。クラスタサイズはセクタサイズ以上であり、クラスタサイズの2以上の自然数倍が論理ページサイズとなるように定められる。
・トラック:SSD内で「大きなデータ」を管理する管理単位。クラスタサイズの2以上の自然数倍がトラックサイズに、かつ、トラックサイズの2以上の自然数倍が論理ブロックサイズとなるように定められる。
・フリーブロック(FB):用途未割り当てのNAND型フラッシュメモリ上の論理ブロックのこと。用途を割り当てる際に消去してから使用する。
・バッドブロック(BB):NAND型フラッシュメモリ上の、誤りが多いなど記憶領域として使用できない物理ブロックのこと。例えば、消去動作が正常に終了しなかった物理ブロックがバッドブロックBBとして登録される。
・書き込み効率:所定期間内における、ホストから書き込んだデータ量に対する、論理ブロックの消去量の統計値のこと。小さいほどNAND型フラッシュメモリの消耗度が小さい。
・有効クラスタ:最新のデータを保持しているクラスタ。
・無効クラスタ:最新ではないデータを保持しているクラスタ。
・有効トラック:最新のデータを保持しているトラック。
・無効トラック:最新ではないデータを保持しているトラック。
・コンパクション:管理対象内の論理ブロックから、有効クラスタや有効トラックのみを取り出して、新しい論理ブロックに書き直すこと。
[第1の実施形態]
(1)8ビットノーマルモード
1chだけ動作させ、8ビット単位でデータ転送を行うモードである。物理ページサイズ(4kB)で書き込み/読み出しが行われる。また、物理ブロックサイズ(512kB)で消去が行われる。1つの物理ブロックに対して1つの論理ブロックが対応付けられ、論理ブロックサイズは512kBとなる。
(2)32ビットノーマルモード
4ch並列で動作させ、32ビット単位でデータ転送を行うモードである。物理ページサイズ×4(16kB)で書き込み/読み出しが行われる。また、物理ブロックサイズ×4(2MB)で消去が行われる。4つの物理ブロックに対して1つの論理ブロックが対応付けられ、論理ブロックサイズは2MBとなる。
(3)32ビット倍速モード
4ch並列で動作させ、更に、NANDメモリチップの倍速モードを利用して書き込み/読み出しを行うモードである。物理ページサイズ×4×2(32kB)で書き込み/読み出しが行われる。また、物理ブロックサイズ×4×2(4MB)で消去が行われる。8つの物理ブロックに対して1つの論理ブロックが対応付けられ、論理ブロックサイズは4MBとなる。
RC22について説明する。RC22は、ATAコマンド処理部121からのRead要求に対して、NANDメモリ10(FS12、IS13、MS11)からのReadデータを一時的に保存するための領域である。RC22は、本実施形態では例えば、m-line、n-way(mは2(k−i)以上の自然数、nは2以上の自然数)セットアソシアティブ方式で管理されており、1エントリに1クラスタ分のデータを保持できる。論理クラスタアドレスのLSB(k−i)ビットでlineが決定される。なお、RC22は、フルアソシアティブ方式で管理されていても良いし、単純なFIFO方式で管理されていてもよい。
WC21について説明する。WC21は、ATAコマンド処理部121からのWrite要求に対して、ホスト装置1からのWriteデータを一時的に保存するための領域である。m-line、n-way(mは2(k−i)以上の自然数、nは2以上の自然数)セットアソシアティブ方式で管理されており、1エントリに1クラスタ分のデータを保持できる。論理クラスタアドレスのLSB(k−i)ビットでlineが決定される。例えば、way1〜waynの順で書き込み可能なwayが検索される。また、WC21に登録されているトラックは最も古く更新された順が分かるように後述するWCトラック管理テーブル24のFIFO構造によってLRU(Least Recently Used)で管理される。なお、WC21は、フルアソシアティブ方式で管理されていても良い。また、WC21は、RC22とline数、way数が互いに異なっていてもよい。
(i)タグによって決定されたlineの書き込み可能なwayが最後の(本実施形態では、n個目の)空きwayだった場合、則ち最後の空きwayが使用される場合は、そのlineに登録されたトラックのうち、LRUに基づいて最も古く更新されたトラックを追い出し確定する。
(ii)WC21に登録されている異なるトラックの個数が所定数を超えた場合、LRU順で、当該トラックに属するWC中のクラスタ数が所定数未満のトラックの追い出しを確定する。
つぎに、FS12について説明する。FS12はクラスタ単位でデータを管理されるFIFOである。FS12は、ここを通過しているデータは、後段のIS13よりも更新頻度が高いとみなすためのバッファである。すなわち、FS12のFIFO構造においては、FIFO中を通過中の有効クラスタ(最新クラスタ)は、ホストからの同じアドレスに対する再書き込みがあった場合無効化されるので、FS12を通過中のクラスタは、FS12からIS13やMS11に追い出されたクラスタよりも、更新頻度が高いとみなすことができる。
つぎに、IS13について説明する。IS13は、FS13と同様にクラスタ単位でデータの管理が行われる。前述したように、IS13に格納されたデータは、更新頻度が低いデータとみなすことができる。FS12からIS13に対して論理ブロックの移動(Move)、すなわちFS12からの追い出しが発生すると、以前FS12の管理対象であった追い出し対象の論理ブロックはポインタの付け替えによりIS13の管理対象ブロックとなる。このFS12からIS13への論理ブロックの移動により、IS13のブロック数がIS13として許容される所定の上限値を超えると、すなわちIS内の書き込み可能なフリーブロックFBの数が閾値を下回ると、IS13からMS11へのデータ追い出しおよびコンパクション処理が実行され、IS13のブロック数は規定値に戻される。
・トラックをトラック内の有効クラスタ数×有効クラスタ係数(トラックがMS11内で無効トラックが存在する論理ブロックに存在するか否かによって重み付けされる数であり、存在したほうが存在しない場合より数が大きい)順にソートし、積の値が大きいトラック2i+1個(2論理ブロック分)を集めて論理ブロックサイズの自然数倍にしてMSIB11aに追い出す。
・有効クラスタ数が最も少ない2つの論理ブロックの合計有効クラスタ数が例えば、所定の設定値である2k個(1論理ブロック分)以上ある場合は、上のステップを繰り返す(IS内の2つの論理ブロックから、フリーブロックFBを作れるようになるまで行うため)。
・有効クラスタ数の少ない論理ブロックから順にクラスタを2k個集め、IS13内でコンパクションを行う。
なお、ここでは有効クラスタ数が最も少ない2つの論理ブロックを選択するとしたが、この数は2つに限定されず、2つ以上の数であればよい。また、所定の設定値は、選択する論路ブロック数よりも1つ少ない論理ブロック数に収容可能なクラスタ数以下であればよい。
つぎに、MS11について説明する。MS11はトラック単位でデータの管理を行う。MS11に格納されたデータは、更新頻度が低いとみなすことができる。WC21、FS12、IS13からMS11に対してトラックデータのCopyまたはMoveが発生すると、そのトラックはMSIS11aに割り当てられた論理ブロックに対して書き込まれる。一方で、トラック中の一部のデータ(クラスタ)のみがWC等から書き込まれるような場合には、既存のMS中のトラックデータと新しいデータをマージして新しいトラックデータを作った上でMSIB11aに書き込む、後述する受動マージが行われる。MS11内に無効トラックが蓄積し、MS11に割り当てられている論理ブロックの個数がMS11として許容されるブロック数の上限値を越えるような状況が発生すると、コンパクション処理を行って、無効なフリーブロックFBを作る。
・有効トラックが少ない論理ブロックから順番に、無効トラックを合わせることによって無効なフリーブロックFBが作れるようになるまで選択する。
・選択した論理ブロックに収容されたトラックを、WC21、FS12、IS13内のデータと統合する受動マージを行いながらコンパクションを実行する。
・2iトラック統合できた論理ブロックは、TFS11bに出力し(2iトラックMSコンパクション)、2iトラックに満たない個数のトラックは、MSIB11aに出力して(2iトラック未満コンパクション)、より多くの無効なフリーブロックFBを作る。
まず、図9を用いてRCクラスタ管理テーブル23について説明する。RC22は、前述したように、論理クラスタアドレスLSB(k−i)ビットでインデックスされるn-wayセットアソシアティブ方式で管理されている。RCクラスタ管理テーブル23は、RC(クラスタサイズ×m-line×n-way)22の各エントリのタグを管理するためのテーブルであり、各タグは、複数ビットの状態フラグ23aと、論理トラックアドレス23bによって構成されている。状態フラグ23aには、当該エントリを使用しても良いか否か(有効/無効)を示すValidビットの他に、当該エントリがNANDメモリ10からの読み出し待ちか否かを示すビット、当該エントリがATAコマンド処理部121への読み出し待ちか否かを示すビットなどが含まれる。RCクラスタ管理テーブル23は、DRAM20上のタグ記憶位置からLBAに一致する論理トラックアドレスを検索する逆引きテーブルとして機能する。
つぎに、図10を用いてWCクラスタ管理テーブル25について説明する。WC21は、前述したように、論理クラスタアドレスLSB(k−i)ビットでインデックスされるn-wayセットアソシアティブ方式で管理されている。WCクラスタ管理テーブル25は、WC(クラスタサイズ×m-line×n-way)21の各エントリのタグを管理するためのテーブルであり、各タグは、複数ビットの状態フラグ25aと、セクタ位置ビットマップ25bと、論理トラックアドレス25cによって構成されている。
つぎに、図11を用いてWCトラック管理テーブル24について説明する。WCトラック管理テーブル24は、WC21上に格納されているクラスタをトラック単位でまとめた情報を管理するものであり、FIFO的な機能を有するリンクドリスト構造によってトラック間のWC21に登録された順序(LRU)を表現している。なお、WC21で最後に更新された順序によってLRUを表現するようにしてもよい。各リストのエントリは、論理トラックアドレス24a、当該論理トラックアドレスに含まれるWC21中の有効クラスタ数24b、way-lineビットマップ24cおよび次のエントリへのポインタを示すnextポインタ24dから構成されている。WCトラック管理テーブル24は、論理トラックアドレス24aから所要情報を得るので、正引きテーブルとして機能する。
つぎに、図12を用いてトラック管理テーブル30について説明する。トラック管理テーブル30は、論理トラックアドレス単位でMS11上の論理的なデータ位置を管理するためのテーブルであり、クラスタ単位でFS12やIS13にデータが保持されている場合には、それらに関する基本情報と、詳細情報へのポインタも保持している。論理トラックアドレス30aをインデックスとした配列形式で構成される。論理トラックアドレス30aをインデックスとした各エントリは、クラスタビットマップ30b、論理ブロックID30c+論理ブロック内トラック位置30d、クラスタテーブルポインタ30e、FSクラスタ数30f、ISクラスタ数30gなどの情報で構成されている。トラック管理テーブル30は、論理トラックアドレスをインデックスとして、その論理トラックアドレスに対応する論理トラックが記憶されている論理ブロックID(記憶デバイス位置に対応)などの所要情報を得るので、正引きテーブルとして機能する。
つぎに、図13を用いてFS/IS管理テーブル40について説明する。FS/IS管理テーブル40は、論理クラスタ単位でFS12(FSIB12aも含む)もしくはIS13に保持されているデータの位置を管理するためのテーブルである。図13に示すように、論理トラックアドレス毎に独立したリンクドリスト形式で構成され、各リストの先頭エントリへのポインタは、前述したように、トラック管理テーブル30のクラスタテーブルポインタ30eのフィールドに保持されている。図13では、2つの論理トラックアドレス分のリンクドリストが示されている。各エントリは、論理クラスタアドレス40a、論理ブロックID40b、論理ブロック内クラスタ位置40c、FS/ISブロックID40d、nextポインタ40eから構成されている。FS/IS管理テーブル40は、論理クラスタアドレス40aから、その論理クラスタアドレスに対応する論理クラスタが記憶されている論理ブロックID40b、論理ブロックン内クラスタ位置40c(記憶デバイス位置に対応)などの所要情報を得るので、正引きテーブルとして機能する。
つぎに、図14を用いてMS論理ブロック管理テーブル35について説明する。MS論理ブロック管理テーブル35は、MS11に用いられている論理ブロックに関する情報(どの論理トラックが記憶されているか、追記可能か等)を一元管理するためのテーブルである。なお、MS論理ブロック管理テーブル35には、FS12(FSIB12も含む)、IS13に所属する論理ブロックに関する情報も登録されている。MS論理ブロック管理テーブル35は、論理ブロックID35aをインデックスとした配列形式で構成され、エントリ数は128GBのNANDメモリ10の場合は、32Kエントリまで持つことができる。各エントリは、2iトラック分のトラック管理ポインタ35b、有効トラック数35c、書き込み可能先頭トラック35d、Validフラグ35eから構成されている。このMS論理ブロック管理テーブル35は、記憶デバイス位置に対応する論理ブロックID35aから、この論理ブロックに記憶されている論理トラックアドレスなどの所要情報を得るので、逆引きテーブルとして機能する。
つぎに、図15を用いてFS/IS論理ブロック管理テーブル42について説明する。FS/IS論理ブロック管理テーブル42は、FS/ISブロックID42aをインデックスとした配列形式で構成され、FS12またはIS13として利用されている論理ブロックに関する情報(論理ブロックIDとの対応、FS/IS内クラスタ管理テーブル44へのインデックス、追記可能か等)を管理するためのテーブルである。FS/IS論理ブロック管理テーブル42は、主にFS/IS管理テーブル40中のFS/ISブロックID40dを用いてアクセスされる。各エントリは、論理ブロックID42b、ブロック内クラスタテーブル42c、有効クラスタ数42d、書き込み可能先頭ページ42e、Validフラグ42fから構成されている。このMS論理ブロック管理テーブル35は、記憶デバイス位置に対応するFS/ISブロックID42aから、この論理ブロックに記憶されている論理クラスタなどの所要情報を得るので、逆引きテーブルとして機能する。
つぎに、図16を用いてFS/IS内クラスタ管理テーブル44について説明する。FS/IS内クラスタ管理テーブル44は、FS12もしくはIS13として利用されている論理ブロック中の各クラスタ位置にどの論理クラスタが記録されているのかを示すテーブルである。1論理ブロックあたり、2jページ×2(k−j)クラスタ=2k個のエントリを持ち、当該論理ブロック内のクラスタ位置の0番目〜2k−1番目に対応する情報が連続領域に配置される。さらにこの2k個の情報を含むテーブルがFS12およびIS13に所属する論理ブロック数(P個)分だけ保持されており、FS/IS論理ブロック管理テーブル42のブロック内クラスタテーブル42cは、このP個のテーブルに対する位置情報(ポインタ)となっている。連続領域に配される各エントリ44aの位置は、1論理ブロック中のクラスタ位置を示し、また各エントリ44aの内容は、当該クラスタ位置にどの論理クラスタが記憶されているかが識別できるように、FS/IS管理テーブル40で管理される該当論理クラスタアドレスを含むリストへのポインタが登録されている。すなわち、エントリ44aは、リンクドリストの先頭を指し示すのではなく、リンクドリスト中の該当論理クラスタアドレスを含む1つのリストへのポインタが登録されている。
つぎに、図17を用いて論物変換テーブル50について説明する。論物変換テーブル50は、論理ブロックID50aをインデックスとした配列形式で構成され、エントリ数は、128GBのNANDメモリ10の場合は、最大32Kエントリまで持つことができる。論物変換テーブル50は、論理ブロックIDと物理ブロックIDとの変換、寿命に関する情報を管理するためのテーブルである。各エントリは、物理ブロックアドレス50b、消去回数50c、読み出し回数50dから構成される。この論物変換テーブル50は、論理ブロックIDから物理ブロックID(物理ブロックアドレス)などの所要情報を得るので、正引きテーブルとして機能する。
RC管理:RCクラスタ管理テーブル
WC管理:WCクラスタ管理テーブル、WCトラック管理テーブル
MS管理:トラック管理テーブル30、MS論理ブロック管理テーブル35
FS/IS管理:トラック管理テーブル30、FS/IS管理テーブル40、MS論理ブロック管理テーブル35、FS/IS論理ブロック管理テーブル42、FS/IS内クラスタ管理テーブル44
つぎに、図18に示すフローチャートを参照して、読み出し処理について説明する。ATAコマンド処理部121から、Readコマンドおよび読み出しアドレスとしてのLBAが入力されると、データ管理部120は、図9に示したRCクラスタ管理テーブル23と図10に示したWCクラスタ管理テーブル25を検索する(ステップS100)。具体的には、LBAのクラスタアドレスのLSB(k−i)ビット(図7参照)に対応するlineをRCクラスタ管理テーブル23とWCクラスタ管理テーブル25から選択し、選択したlineの各wayにエントリされている論理トラックアドレス23b、25cをLBAのトラックアドレスと比較し(ステップS110)、一致したwayが存在している場合は、キャッシュヒットとし、ヒットしたRCクラスタ管理テーブル23またはWCクラスタ管理テーブル25の該当line、該当wayに対応するWC21またはRC22のデータを読み出して、ATAコマンド処理部121に送る(ステップS115)。
つぎに、図19に示すフローチャートを参照して、書き込み処理について説明する。FUA(DRAMキャッシュをバイパスしてNANDへの直接書き込みを行う)でないWriteコマンドにより書き込まれたデータは必ず一旦WC21上に格納され、その後条件に応じてNANDメモリ10に対して書き込まれることになる。書き込み処理では、追い出し処理、コンパクション処理が発生する可能性がある。この実施の形態では、書き込み処理を、ライトキャッシュフラッシュ処理(以下WCF処理)と、クリーンインプットバッファ処理(以下CIB処理)との2ステージに大きく分割している。ステップS300からステップS320までは、ATAコマンド処理部121からのWrite要求からWCF処理までを示しており、ステップS330〜最終ステップまでがCIB処理を示している。
(i) タグによって決定されたlineの書き込み可能なwayが最後の(本実施形態では、n個目の)空きwayだった場合、則ち最後の空きwayが使用される場合は、そのlineに登録されたトラックのうちLRUに基づいて最も古く更新されたトラックを追い出し確定する
に基づいて追い出すトラックすなわちWC21内エントリを選択する。
(ii)WC21に登録されているトラックの数が所定数を超えた場合、
が成立した場合も、上記同様にしてNANDメモリ10への追い出し処理を実行する。
つぎに、上記有効クラスタ数(有効クラスタ数が2(k−i−1)個以上)に基づく判定によりWC21からMSIB11aへの追い出しが発生したときは、前述したように、次のような手順を実行する(ステップS310)。
1.WCクラスタ管理テーブル25を参照し、追い出しを行うクラスタに対応するタグ中のセクタ位置ビットマップ25bを参照し、セクタ位置ビットマップ25bが全て“1”でない場合は、NANDメモリ10に含まれる同一クラスタ中のセクタとマージする、後述のトラック内セクタ穴埋めを行う。また、トラック中のWC21内に存在しないクラスタについてはNANDメモリ10から読み出してマージする、受動マージ処理を実行する。
2.追い出し確定トラックが2i個未満の場合、WC21中のトラックの古いものから2i個になるまで2(k−i−1)個以上有効クラスタを持つ追い出し確定トラックを追加する。
3.Copyされるトラックが2i個以上あれば、2i個ずつを組として、MSIB11aに対して論理ブロック単位に書き込みを行う。
4.2i個組みに出来なかったトラックをMSIB11aに対してトラック単位に書き込みを行う。
5.Copy終了後に既にFS、IS、MS上に存在していたクラスタ、トラックのうちコピーされたトラックに属するものを無効化する。
つぎに、上記有効クラスタ数(有効クラスタ数が2(k−i−1)個未満)に基づく判定によりWC21からFSIB12aへの追い出しが発生したときは、前述したように、次のような手順を実行する。
1.WCクラスタ管理テーブル25における追い出しを行うクラスタに対応するタグ中のセクタ位置ビットマップ25bを参照し、セクタ位置ビットマップ25bが全て“1”でない場合は、NANDメモリ10に含まれる同一クラスタ中のセクタとマージする、クラスタ内セクタ穴埋めを行う。
2.WC内のトラックを古い順に辿って2(k−i−1)個未満の有効クラスタしか持たないトラックからクラスタを取り出して行き、有効クラスタ数が2k個になったらそれら全クラスタをFSIB12aに論理ブロック単位に書き込む。
3.2k個見つからなかった場合には、有効クラスタ数が2(k−i−1)個未満の全てのトラックを必要な論理ページ数分だけFSIB12aに書き込む。
4.Copy終了後に既にFS、IS上に存在していたクラスタのうちコピーされたのと同じものを無効化する。
上記のようなWCF処理が終了すると、つぎに、論理NAND層管理部120bは、WCF処理によって書き込まれたFSIB12aのデータをFS12にMoveする処理と、WCF処理によって書き込まれたMSIB11aのデータをMS11にMoveする処理などを含むCIB処理を実行する。CIB処理を開始すると、前述したように、連鎖的に各ブロック間のデータ移動やコンパクション処理が発生する可能性があり、処理全体に要する時間は状態によって大きく変化する。このCIB処理においては、基本的には、先ずMS11でのCIB処理が行われ(ステップS330)、つぎに、FS12でのCIB処理が行われ(ステップS340)、つぎに再びMS11でのCIB処理が行われ(ステップS350)、つぎにIS13でのCIB処理が行われ(ステップS360)、最後に再びMS11でのCIB処理が行われる(ステップS370)。なお、FS12からMSIB11aへの追い出し処理、あるいはFS12からIS13への追い出し処理、あるいはIS13からMSIB11aへの追い出し処理の際に、手順にループが発生した場合は、上記順番通りにならない場合もある。MS11、FS12およびIS13でのCIB処理を別々に説明する。
まず、MS11でのCIB処理について説明する(ステップS330)。WC21、FS12、IS13からMS11に対してトラックデータの移動が発生すると、そのトラックデータはMSIB11aに書き込まれる。MSIB11aへの書き込み完了後は、前述したように、トラック管理テーブル30を更新してトラックが配置される論理ブロックID30cとブロック内トラック位置30dなどを変更する(Move)。MSIB11aに新たなトラックデータが書き込まれた場合、もともとMS11もしくはTFS11bに存在していたトラックデータは無効化される。この無効化処理は、MS論理ブロック管理テーブル35における古いトラック情報が保存されていた論理ブロックのエントリからトラックを無効化することで実現する。具体的には、MS論理ブロック管理テーブル35の該当エントリ中のトラック管理ポインタ35bのフィールド中の該当トラックのポインタが削除され、有効トラック数が−1される。このトラック無効化によって1論理ブロック中の全てのトラックが無効になった場合は、Validフラグ35eが無効化される。このような無効化などにより、MS11のブロックは無効なトラックを含んだものが発生し、これが繰り返されるとブロックの利用効率が低下して、使用可能な論理ブロックに不足が生じることがある。
1.MS論理ブロック管理テーブル35のValidフラグ35eを参照することにより、MS11内に無効となった論理ブロックが存在する場合、そのブロックを無効なフリーブロックFBとする。
2.MSIB11aでフルに成った論理ブロックをMS11に追い出す。具体的には、前述したMS構造管理テーブル60を更新して、該当論理ブロックをMSIB管理下からMS管理下に移し変える。
3.MS11に割り当てられている論理ブロックの個数がMS11として許容されるブロック数の上限値を越えるような状況が発生するか否かを判断し、発生している場合に、以下のMSコンパクションを実行する。
4.MS論理ブロック管理テーブル35の有効トラック数35cのフィールドなどを参照することにより、TFS11bに含まれない論理ブロックのうち無効にされたトラックを持つものを、有効トラック数でソートする。
5.有効トラック数の少ない論理ブロックから、トラックを集めてコンパクションを実施する。この際にまず、1論理ブロック分(2iトラック)ずつCopyしてコンパクションを実施する。なお、コンパクション対象のトラックがWC21、FS12、IS13に有効クラスタを持つ場合にはそれらもマージする。
6.コンパクション元の論理ブロックを無効なフリーブロックFBとする。
7.コンパクションして有効な2iトラックで構成された1論理ブロックができたら、TFS11bの先頭にMoveする。
8.論理ブロック内の有効トラックを他の論理ブロックにCopyして、無効なフリーブロックFBが作れる場合は、2iトラック未満の個数の有効トラックをMSIB11aに対し、トラック単位で追記書き込みする。
9.コンパクション元の論理ブロックを無効なフリーブロックFBとする。
10.MS11に割り当てられている論理ブロックの個数がMS11として許容されるブロック数の上限値を下回ると、MSコンパクション処理を終了する。
つぎに、FS12でのCIB処理について説明する(ステップS340)。WC21からFSIB12aへのクラスタ書き込み処理によって全ページ書き込み済みの論理ブロックがFSIB12a中に作られた場合、FSIB12a中のそれらのブロックは、FSIB12aからFS12に対してMoveされる。このMoveにともなって複数の論理ブロックで構成されるFIFO構造のFS12から古い論理ブロックが追い出される状況が発生する。
1.FS/IS論理ブロック管理テーブル42のValidフラグ35eなどを参照することにより、FS12内に無効となった論理ブロックが存在する場合、そのブロックを無効なフリーブロックFBとする。
2.FSIB12aでフルに成ったブロックをFS12に追い出す。具体的には、前述したFS/IS構造管理テーブル65を更新して、該当ブロックをFSIB管理下からFS管理下に移し変える。
3.FS12に割り当てられている論理ブロックの個数がFS12として許容されるブロック数の上限値を越えるような状況が発生するか否かを判断し、発生している場合に、以下の追い出しを実行する。
4.まず追い出し対象の最古の論理ブロック中のクラスタデータのうちIS13に移動せずに、直接MS11に移動すべきものを決定する(実際には、MSの管理単位がトラックであるので、トラック単位での決定)。
(ア)追い出し対象の論理ブロック中の有効クラスタをページの先頭から順にスキャンする
(イ)クラスタが属するトラックがFS中に何個の有効クラスタを保有しているか、トラック管理テーブル30のFSクラスタ数30fのフィールドを参照して検索する。
(ウ)トラック内有効クラスタ数が所定の閾値(例えば2k−i個の50%)以上だった場合、そのトラックをMSへの追い出し候補とする。
5.MS11に追い出すべきトラックをMSIB11aに対して書き込む。
6.追い出しトラックが残っている場合、さらにMSIB11への追い出しを実行する。
7.上記2〜4の処理の後も追い出し対象の論理ブロックに有効なクラスタが存在している場合、この論理ブロックをIS13にMoveする。
なお、FS12からMSIB11aへの追い出しが発生したときには、その直後、MS11での前述したCIB処理が実行される(ステップS350)。
つぎに、IS13でのCIB処理について説明する(ステップS360)。上記したFS12からIS13へのブロック移動によって論理ブロックがIS13に追加されるが、これにともなって複数個の論理ブロックで構成されるIS13に対して管理可能なブロック数の上限を超えてしまう状況が発生する。このような状況が発生した場合、IS13では、まずMS11への1〜複数個の論理ブロックの追い出しを行った後、ISコンパクションを実行する。具体的には、次のような手順を実行する。
1.IS13に含まれるトラックをトラック内の有効クラスタ数×有効クラスタ係数でソートし、積の値が大きいトラック2i+1個(2論理ブロック分)を集めてMSIB11aに追い出す。
2.有効クラスタ数が最も少ない2i+1個の論理ブロックの合計有効クラスタ数が例えば、所定の設定値である2k個(1論理ブロック分)以上ある場合は、上のステップを繰り返す。
3.上記の追い出しを行った後、有効クラスタ数の少ない論理ブロックから順にクラスタを2k個集め、IS13内でコンパクションを行う。
4.コンパクション元の論理ブロックのうち有効クラスタがなくなったものを無効なフリーブロックFBとして返還する。
なお、IS13からMSIB11aへの追い出しが発生したときには、その直後、MS11での前述したCIB処理が実行される(ステップS370)。
FS部12Qは、FSIB12aとFS12によって構成されている。FS12は、多数の論理ブロック分の容量を有し、論理ブロック単位でFIFO構造が管理されている。FS12の前段には、WC21から追い出されたデータが入力されるFSインプットバッファ(FSIB)12aが設けられている。FSIB12aは、FSフルブロックバッファ(FSFB)12aaと、FS追記バッファ(FS追記IB)12abとを備えている。FSFB12aaは、1〜複数個の論理ブロック分の容量を有し、またFS追記IB12abも1〜複数個の論理ブロック分の容量を有する。WC21からの追い出しデータが1論理ブロック分あればFSFB12aaに対する論理ブロック単位のデータコピーが行われ、そうでなければFS追記IB12abに対して論理ページ単位の追記書き込みが行われる。
IS部13Qは、IS13と、ISインプットバッファ(ISIB)13aと、ISコンパクションバッファ13cによって構成されている。ISIB13aは、1〜複数個の論理ブロック分の容量を有し、ISコンパクションバッファ13cは例えば1論理ブロック分の容量を有し、IS13は、多数の論理ブロック分の容量を有する。IS13は、例えば、論理ブロック単位で、FS12と同様、FIFO構造が管理されている。ISコンパクションバッファ13cは、IS部13Qでのコンパクションを行うためのバッファである。
MS部11Qは、MSIB11aと、トラック前段バッファ(TFS)11bと、MS11によって構成されている。MSIB11aは、1〜複数個(この実施の形態では4個)のMSフルブロックインプットバッファ(以下MSFB)11aaと、1〜複数個(この実施の形態では2個)の追記インプットバッファ(以下MS追記IB)11abとを備えている。1つのMSFB11aaは、1論理ブロック分の容量を有する。MSFB11aaは、論理ブロック単位の書き込み時に用いられる。1つのMS追記IB11abは、論理ブロック分の容量を有する。MS追記IB11abは、トラック単位の追記書き込み時に用いられる。
まず、物理NAND層について説明する。前述したように、32ビット倍速モードでは、4ch(ch0、ch1、ch2、ch3)を並列で動作させ、更に、NANDメモリチップの備える倍速モードを利用して消去/書き込み/読み出しを行う。図23に示すように、4つの並列動作要素10a〜10d内の各NANDメモリチップは、例えば、プレーン0、プレーン1の2つの領域(District)に分割されている。なお、分割数は2に限定されるものではない。プレーン0およびプレーン1は、互いに独立した周辺回路(例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等)を備えており、NANDコントローラ112から入力されるコマンドに基づき、同時に消去/書き込み/読み出しを行うことが可能である。NANDメモリチップの倍速モードでは、上記プレーン0およびプレーン1を並列制御することにより、高速書き込みを実現している。
つぎに、図28、図29を用いて論理NAND層での管理に使用されるMS構造管理テーブル60およびFS/IS構造管理テーブル65について説明する。図28に示すMS構造管理テーブル60は、MS部11Qの構造を管理するための領域と、状態情報を保存するための領域とを有する。MS構造管理テーブル60は、MSFB11aa、MS追記IB11ab、TFS11bとして割り当てられた論理ブロックIDを管理するMSバッファ管理テーブル61と、MSコンパクション時のソート処理を高速化するために、有効トラック数が少なくなった論理ブロックIDを保持する有効トラック数別論理ブロックIDリスト62と、状態情報としての最大論理ブロック数MBLおよび有効論理ブロック数VBLを管理する領域63、64とを備える。
まず、図19のステップS330で説明したMS部11Qでの第1回目のCIB処理について詳述する。論理NAND層管理部120bは、MS構造管理テーブル60のMSバッファ管理テーブル61のMSFB用フィールド61a、MS追記IB用のフィールド61bに登録されている論理ブロックIDについての有効トラック数の情報をMS論理ブロック管理テーブル35の有効トラック数35cのフィールドから取得し、MSIB11aのMSFB11aaまたはMS追記IB11abに全トラック書き込み済みのフルになったブロックが一つ以上存在するか否かを調べ(ステップS400)、MSIB11aにフルになったブロックが一つ以上存在する場合に、以下の処理を行う。ステップS400の判定がNOである場合は、手順はステップS440に移行する。
つぎに、図19のステップS340で説明したFS12でのCIB処理について詳述する。論理NAND層管理部120bは、FS/IS構造管理テーブル65のFS入力バッファ管理テーブル66のFSFB用フィールド66a、FS追記IB用のフィールド66bに登録されている論理ブロックIDについての有効クラスタ数の情報を、FS/IS論理ブロック管理テーブル32の有効クラスタ数42dのフィールドから取得し、FSIB12aのFSFB12aaまたはFS追記IB12abに全ページ(全クラスタ)書き込み済みのフルになった論理ブロックが一つ以上存在するか否かを調べ(ステップS440)、FSIB12aにフルになった論理ブロックが一つ以上存在する場合に、以下の処理を行う。ステップS440の判定がNOである場合は、手順はここで終了する。
1.FS/IS構造管理テーブル65のFSFIFO管理テーブル65からFIFOの先頭にある最古のFS/ISブロックIDを得る。
2.このFS/ISブロックIDに対応するFS/IS論理ブロック管理テーブル42のエントリ中のブロック内クラスタテーブル42cのフィールドからFS/IS内クラスタ管理テーブル44へのインデックスを得る。
3.FS/IS内クラスタ管理テーブル44において、取得したインデックスで指定された1論理ブロック内の各エントリからFS/IS管理テーブル40へのポインタを1つ取得して、FS/IS管理テーブル40の該当リンクに飛ぶ。
4.飛び先の該当リンクが所属する該当論理トラックアドレスを得る。
5.取得した論理トラックアドレスを使ってトラック管理テーブル30の該当エントリ中のFSクラスタ数30fのフィールドをチェックする。
6.3〜5が繰り返される。
このようにして、FSからMSIB11aへの追い出しが発生すると、つぎに、MS部11QのCIB処理が再び実行される(ステップS480)。このステップS480のMS部11QのCIB処理は、先の第1回目のMS部11QでのCIB処理(ステップS400〜S420)と同様なので、重複する説明は省略する。このMS部11QでのCIB処理の後、論理NAND層管理部120bは、FS12からMSIB11aへの追い出し条件が成立するか否かを、前記同様にして調べる(ステップS455)。この追い出し条件が成立すると、前述した、FS12からMSIB11aへの2論理ブロックの追い出し、およびMS11でのCIB処理が、再度実行される。このような処理が、ステップS455の判断がNOになるまで繰り返される。
ステップS455の判断がNOになると、論理NAND層管理部120bは、つぎに、FS12からISIB13aへの追い出し条件が、成立するか否かを判断する(ステップS490)。具体的には、上記FS12からMSIB11aへの追い出し処理の際に、チェックされたFIFO構造を有するフル状態のFS12の先頭論理ブロックに有効なクラスタが残っている場合に、ステップS490でのFS12からIS13への追い出し条件が成立したとして、FS12からISIB13aへの追い出しを実行する。
つぎに、ステップS490での条件が成立したときに、IS13で行われる追い出し処理およびコンパクション処理の詳細について、図30の他に、図31のフローチャートを参照して説明する。まず、論理NAND層管理部120bは、前記と同様にして、IS部13Q内に無効論理ブロックが存在するか否かを調べ、IS部13Q内に無効論理ブロックが存在する場合、該無効論理ブロックを物理NAND層管理部120cに返却する(ステップS520)。返却された論理ブロックのエントリに対応するMS論理ブロック管理テーブル35およびFS/IS論理ブロック管理テーブル42のエントリはValidフラグ35eおよび42fがそれぞれInValidにされる。
スコア値S=トラック内の有効クラスタ数×有効クラスタ係数
有効クラスタ係数は、トラックがMS部11Q内で無効トラックが存在する論理ブロックに存在するか否かによって重み付けされる数であり、存在したほうが存在しない場合より数が大きいとする。
このようにして、IS13からMSIB11aへの追い出しが発生すると、つぎに、MS11のCIB処理が再び実行される(ステップS560)。このステップS560のMS11のCIB処理は、先の第1回目のMS11でのCIB処理(ステップS400〜S420)と同様なので、重複する説明は省略する。
つぎに、論理NAND層管理部120bは、IS13からMSIB11aに対する追い出しを再度実行するか否かを判断する(ステップS570)。すなわち、論理NAND層管理部120bは、MS論理ブロック管理テーブル35およびFS/IS論理ブロック管理テーブル42の有効クラスタ数42dのフィールドなどを用いて、ステップS540での追い出しを行った後のIS13内の論理ブロックを有効クラスタ数の少ない順にソートし、最も有効クラスタ数の少ない2つの論理ブロックの合計有効クラスタ数が、所定の設定値である2k個(1論理ブロック分)以上ある場合は、IS13からMSIB11aへの追い出し条件が成立したと判断する(ステップS570)。
Claims (47)
- 揮発性半導体メモリに含まれるキャッシュメモリとしての第1の記憶部と、
ページ単位で読み出し及び書き込みが行われ、前記ページ単位の2以上の自然数倍の大きさであるブロック単位で消去が行われる不揮発性半導体メモリに含まれる第2及び第3の記憶部と、
前記不揮発性半導体メモリに含まれ、前記第1の記憶部と前記第2の記憶部との間でバッフアリングを行う第1の入力バッファと、
前記不揮発性半導体メモリに含まれ、前記第1の記憶部と前記第3の記憶部との間でバッフアリングを行う第2の入力バッファと、
前記不揮発性半導体メモリの記憶領域を、1以上の前記ブロックに対応付けられた論理ブロック単位で、前記第2及び第3の記憶部と、前記第1及び第2の入力バッファとに割り当てるコントローラと、
を備え、
前記コントローラは、
セクタ単位の複数のデータを前記第1の記憶部に書き込む第1の処理と、
前記第1の記憶部に書き込まれた複数のデータを前記セクタ単位の2以上の自然数倍の大きさである第1の管理単位のデータとして前記第1の入力バッファに追い出す第2の処理と、
前記第1の記憶部に書き込まれた複数のデータを前記第1の管理単位の2以上の自然数倍の大きさである第2の管理単位のデータとして前記第2の入力バッファに追い出す第3の処理と、
前記第1の入力バッファに割り当てられており、かつ、前記第1の管理単位のデータが記憶された論理ブロックを前記第2の記憶部に移動する第4の処理と、
前記第2の入力バッファに割り当てられており、かつ、前記第2の管理単位のデータが記憶された論理ブロックを前記第3の記憶部に移動する第5の処理と、
前記第2の記憶部に記憶された複数のデータを前記第2の管理単位のデータとして前記第2の入力バッファに追い出す第6の処理と、
を実行することを特徴とするメモリシステム。 - 前記コントローラは、フラッシュ要求を受信した場合に、前記第2及び第3の処理の少なくとも一方を実行することによって前記第1の記憶部に書き込まれていたデータを前記第1及び第2の入力バッファの少なくとも一方に追い出した段階で、前記フラッシュ要求の処理を完結することを特徴とする請求項1に記載のメモリシステム。
- 前記コントローラは、前記第4乃至第6の処理を継続中であっても、前記第2及び第3の処理の少なくとも一方を実行することで前記フラッシュ要求の処理が可能であることを特徴とする請求項2に記載のメモリシステム。
- 前記コントローラは、書き込み要求を受信した場合であって、かつ、前記第1の記憶部からのデータ追い出しが必要な場合に、前記第2及び第3の処理の少なくとも一方を実行することによって前記第1の記憶部に書き込まれていたデータを前記第1及び第2の入力バッファの少なくとも一方に追い出した後、前記第1の処理を実行することによって前記書き込み要求に関連付けられた入力データが前記第1の記憶部に書き込まれた段階で、前記書き込み要求の処理を完結することを特徴とする請求項1に記載のメモリシステム。
- 前記コントローラは、前記第4乃至第6の処理を継続中であっても、前記第1乃至第3の処理の少なくとも一つを実行することで前記書き込み要求の処理が可能であることを特徴とする請求項4に記載のメモリシステム。
- 前記コントローラは、前記第2の記憶部に割り当てられた論理ブロックの数が許容値を超えた場合に、前記第6の処理を実行することを特徴とする請求項1に記載のメモリシステム。
- 前記コントローラは、前記第1の入力バッファに書き込まれた更新データと同じ論理アドレスを有する前記第2の記憶部のデータを無効化することを特徴とする請求項1に記載のメモリシステム。
- 前記コントローラは、前記第2の入力バッファに書き込まれた更新データと同じ論理アドレスを有する前記第2及び第3の記憶部のデータを無効化することを特徴とする請求項1に記載のメモリシステム。
- 前記コントローラは、前記第1の記憶部内のデータが所属する前記第2の管理単位のデータの個数が規定値を越えた場合に、前記第2及び第3の処理のうちの少なくとも1つを実行することを特徴とする請求項1に記載のメモリシステム。
- 前記揮発性半導体メモリはDRAMであり、前記不揮発性半導体メモリはNAND型フラッシュメモリであることを特徴とする請求項1に記載のメモリシステム。
- 揮発性半導体メモリに含まれるキャッシュメモリとしての第1の記憶部と、
ページ単位で読み出し及び書き込みが行われ、前記ページ単位の2以上の自然数倍の大きさであるブロック単位で消去が行われる不揮発性半導体メモリに含まれる第2及び第3の記憶部と、
前記不揮発性半導体メモリに含まれ、前記第2の記憶部に対して更新頻度の高いデータを分離保持するように構成される第1の前段バッファと、
前記不揮発性半導体メモリに含まれ、前記第1の記憶部と前記第1の前段バッファとの間でバッフアリングを行う第1の入力バッファと、
前記不揮発性半導体メモリに含まれ、前記第1の記憶部と前記第3の記憶部との間でバッフアリングを行う第2の入力バッファと、
前記不揮発性半導体メモリの記憶領域を、1以上の前記ブロックに対応付けられた論理ブロック単位で、前記第2及び第3の記憶部と、前記第1の前段バッファと、前記第1及び第2の入力バッファとに割り当てるコントローラと、
を備え、
前記コントローラは、
セクタ単位の複数のデータを前記第1の記憶部に書き込む第1の処理と、
前記第1の記憶部に書き込まれた複数のデータを前記セクタ単位の2以上の自然数倍の大きさである第1の管理単位のデータとして前記第1の入力バッファに追い出す第2の処理と、
前記第1の記憶部に書き込まれた複数のデータを前記第1の管理単位の2以上の自然数倍の大きさである第2の管理単位のデータとして前記第2の入力バッファに追い出す第3の処理と、
前記第1の入力バッファに割り当てられており、かつ、前記第1の管理単位のデータが記憶された論理ブロックを前記第1の前段バッファに移動する第4の処理と、
前記第2の入力バッファに割り当てられており、かつ、前記第2の管理単位のデータが記憶された論理ブロックを前記第3の記憶部に移動する第5の処理と、
前記第2の記憶部に記憶された複数のデータを前記第2の管理単位のデータとして前記第2の入力バッファに追い出す第6の処理と、
前記第2の記憶部に記憶された前記第1の管理単位の有効データを複数選択して新たな論理ブロック内に書き直す第7の処理と、
前記第1の前段バッファに割り当てられた論理ブロックを前記第2の記憶部に移動する第8の処理と、
を実行することを特徴とするメモリシステム。 - 前記コントローラは、フラッシュ要求を受信した場合に、前記第2及び第3の処理の少なくとも一方を実行することによって前記第1の記憶部に書き込まれていたデータを前記第1及び第2の入力バッファの少なくとも一方に追い出した段階で、前記フラッシュ要求の処理を完結することを特徴とする請求項11に記載のメモリシステム。
- 前記コントローラは、前記第4乃至第8の処理を継続中であっても、前記第2及び第3の処理の少なくとも一方を実行することで前記フラッシュ要求の処理が可能であることを特徴とする請求項12に記載のメモリシステム。
- 前記コントローラは、書き込み要求を受信した場合であって、かつ、前記第1の記憶部からのデータ追い出しが必要な場合に、前記第2及び第3の処理の少なくとも一方を実行することによって前記第1の記憶部に書き込まれていたデータを前記第1及び第2の入力バッファの少なくとも一方に追い出した後、前記第1の処理を実行することによって前記書き込み要求に関連付けられた入力データが前記第1の記憶部に書き込まれた段階で、前記書き込み要求の処理を完結することを特徴とする請求項11に記載のメモリシステム。
- 前記コントローラは、前記第4乃至第8の処理を継続中であっても、前記第1乃至第3の処理の少なくとも一つを実行することで前記書き込み要求の処理が可能であることを特徴とする請求項14に記載のメモリシステム。
- 前記コントローラは、前記第2の記憶部に割り当てられた論理ブロックの数が許容値を超えた場合に、前記第6及び第7の処理の少なくとも一方を実行することを特徴とする請求項11に記載のメモリシステム。
- 前記コントローラは、前記第7の処理の際に、有効データで満たされた新たな論理ブロックを前記第2の記憶部に割り当てることを特徴とする請求項11に記載のメモリシステム。
- 前記コントローラは、前記第1の前段バッファを前記論理ブロック単位のFIFO構造として管理することを特徴とする請求項11に記載のメモリシステム。
- 前記コントローラは、前記第1の入力バッファに書き込まれた更新データと同じ論理アドレスを有する前記第1の前段バッファ及び前記第2の記憶部のデータを無効化することを特徴とする請求項18に記載のメモリシステム。
- 前記コントローラは、前記第2の入力バッファに書き込まれた更新データと同じ論理アドレスを有する前記第1の前段バッファ、前記第2及び第3の記憶部のデータを無効化することを特徴とする請求項18に記載のメモリシステム。
- 前記コントローラは、前記第1の前段バッファに登録された順序が最も古い論理ブロック内のデータを前記第2の管理単位のデータとして前記第2の入力バッファに追い出す第9の処理を実行することを特徴とする請求項18に記載のメモリシステム。
- 前記コントローラは、前記第1の前段バッファに割り当てられた論理ブロックの数が許容値を超えた場合に、前記第9の処理を実行することを特徴とする請求項21に記載のメモリシステム。
- 前記コントローラは、前記第9の処理の後、前記第1の前段バッファに登録された順序が最も古く有効データが残った論理ブロックについて、前記第8の処理を実行することを特徴とする請求項21に記載のメモリシステム。
- 前記コントローラは、前記第1の記憶部内のデータが所属する前記第2の管理単位のデータの個数が規定値を越えた場合に、前記第2及び第3の処理のうちの少なくとも1つを実行することを特徴とする請求項11に記載のメモリシステム。
- 前記第1の管理単位の大きさは、前記ブロック単位よりも小さいことを特徴とする請求項11に記載のメモリシステム。
- 前記揮発性半導体メモリはDRAMであり、前記不揮発性半導体メモリはNAND型フラッシュメモリであることを特徴とする請求項11に記載のメモリシステム。
- 揮発性半導体メモリに含まれるキャッシュメモリとしての第1の記憶部と、
ページ単位で読み出し及び書き込みが行われ、前記ページ単位の2以上の自然数倍の大きさであるブロック単位で消去が行われる不揮発性半導体メモリに含まれる第2及び第3の記憶部と、
前記不揮発性半導体メモリに含まれ、前記第2の記憶部に対して更新頻度の高いデータを分離保持するように構成される第1の前段バッファと、
前記不揮発性半導体メモリに含まれ、前記第3の記憶部に対して更新頻度の高いデータを分離保持するように構成される第2の前段バッファと、
前記不揮発性半導体メモリに含まれ、前記第1の記憶部と前記第1の前段バッファとの間でバッフアリングを行う第1の入力バッファと、
前記不揮発性半導体メモリに含まれ、前記第1の記憶部と前記第2の前段バッファとの間でバッフアリングを行う第2の入力バッファと、
前記不揮発性半導体メモリの記憶領域を、1以上の前記ブロックに対応付けられた論理ブロック単位で、前記第2及び第3の記憶部と、前記第1及び第2の前段バッファと、前記第1及び第2の入力バッファとに割り当てるコントローラと、
を備え、
前記コントローラは、
セクタ単位の複数のデータを前記第1の記憶部に書き込む第1の処理と、
前記第1の記憶部に書き込まれた複数のデータを前記セクタ単位の2以上の自然数倍の大きさである第1の管理単位のデータとして前記第1の入力バッファに追い出す第2の処理と、
前記第1の記憶部に書き込まれた複数のデータを前記第1の管理単位の2以上の自然数倍の大きさである第2の管理単位のデータとして前記第2の入力バッファに追い出す第3の処理と、
前記第1の入力バッファに割り当てられており、かつ、前記第1の管理単位のデータが記憶された論理ブロックを前記第1の前段バッファに移動する第4の処理と、
前記第2の入力バッファに割り当てられており、かつ、前記第2の管理単位のデータが記憶された論理ブロックを前記第2の前段バッファに移動する第5の処理と、
前記第2の記憶部に記憶された複数のデータを前記第2の管理単位のデータとして前記第2の入力バッファに追い出す第6の処理と、
前記第2の記憶部に記憶された前記第1の管理単位の有効データを複数選択して新たな論理ブロック内に書き直す第7の処理と、
前記第1の前段バッファに割り当てられた論理ブロックを前記第2の記憶部に移動する第8の処理と、
前記第3の記憶部に記憶された前記第2の管理単位の有効データを複数選択して新たな論理ブロック内に書き直す第9の処理と、
前記第2の前段バッファに割り当てられた論理ブロックを前記第3の記憶部に移動する第10の処理と、
を実行することを特徴とするメモリシステム。 - 前記コントローラは、フラッシュ要求を受信した場合に、前記第2及び第3の処理の少なくとも一方を実行することによって前記第1の記憶部に書き込まれていたデータを前記第1及び第2の入力バッファの少なくとも一方に追い出した段階で、前記フラッシュ要求の処理を完結することを特徴とする請求項27に記載のメモリシステム。
- 前記コントローラは、前記第4乃至第10の処理を継続中であっても、前記第2及び第3の処理の少なくとも一方を実行することで前記フラッシュ要求の処理が可能であることを特徴とする請求項28に記載のメモリシステム。
- 前記コントローラは、書き込み要求を受信した場合であって、かつ、前記第1の記憶部からのデータ追い出しが必要な場合に、前記第2及び第3の処理の少なくとも一方を実行することによって前記第1の記憶部に書き込まれていたデータを前記第1及び第2の入力バッファの少なくとも一方に追い出した後、前記第1の処理を実行することによって前記書き込み要求に関連付けられた入力データが前記第1の記憶部に書き込まれた段階で、前記書き込み要求の処理を完結することを特徴とする請求項27に記載のメモリシステム。
- 前記コントローラは、前記第4乃至第10の処理を継続中であっても、前記第1乃至第3の処理の少なくとも一つを実行することで前記書き込み要求の処理が可能であることを特徴とする請求項30に記載のメモリシステム。
- 前記コントローラは、前記第2の記憶部に割り当てられた論理ブロックの数が許容値を超えた場合に、前記第6及び第7の処理の少なくとも一方を実行することを特徴とする請求項27に記載のメモリシステム。
- 前記コントローラは、前記第7の処理の際に、有効データで満たされた新たな論理ブロックを前記第2の記憶部に割り当てることを特徴とする請求項27に記載のメモリシステム。
- 前記コントローラは、前記第3の記憶部に割り当てられた論理ブロックの数が許容値を超えた場合に、前記第9の処理を実行することを特徴とする請求項27に記載のメモリシステム。
- 前記コントローラは、前記第9の処理の際に、有効データで満たされた新たな論理ブロックを前記第2の前段バッファに割り当てることを特徴とする請求項27に記載のメモリシステム。
- 前記コントローラは、前記第1の前段バッファを前記論理ブロック単位のFIFO構造として管理することを特徴とする請求項27に記載のメモリシステム。
- 前記コントローラは、前記第2の前段バッファを前記論理ブロック単位のFIFO構造として管理することを特徴とする請求項36に記載のメモリシステム。
- 前記コントローラは、前記第1の入力バッファに書き込まれた更新データと同じ論理アドレスを有する前記第1の前段バッファ及び前記第2の記憶部内のデータを無効化することを特徴とする請求項36に記載のメモリシステム。
- 前記コントローラは、前記第2の入力バッファに書き込まれた更新データと同じ論理アドレスを有する前記第1及び第2の前段バッファ、前記第2及び第3の記憶部内のデータを無効化することを特徴とする請求項37に記載のメモリシステム。
- 前記コントローラは、前記第1の前段バッファに登録された順序が最も古い論理ブロック内のデータを前記第2の管理単位のデータとして前記第2の入力バッファに追い出す第11の処理を実行することを特徴とする請求項36に記載のメモリシステム。
- 前記コントローラは、前記第1の前段バッファに割り当てられた論理ブロックの数が許容値を超えた場合に、前記第11の処理を実行することを特徴とする請求項40に記載のメモリシステム。
- 前記コントローラは、前記第11の処理の後、前記第1の前段バッファに登録された順序が最も古く有効データが残った論理ブロックについて、前記第8の処理を実行することを特徴とする請求項41に記載のメモリシステム。
- 前記コントローラは、前記第2の前段バッファに割り当てられた論理ブロックの数が許容値を超えた場合に、前記第10の処理を実行することを特徴とする請求項37に記載のメモリシステム。
- 前記コントローラは、前記第2の前段バッファに登録された順序が最も古い論理ブロックについて、前記第10の処理を実行することを特徴とする請求項43に記載のメモリシステム。
- 前記コントローラは、前記第1の記憶部内のデータが所属する前記第2の管理単位のデータの個数が規定値を越えた場合に、前記第2及び第3の処理のうちの少なくとも1つを実行することを特徴とする請求項27に記載のメモリシステム。
- 前記第2の管理単位の大きさは、前記ブロック単位よりも小さいことを特徴とする請求項27に記載のメモリシステム。
- 前記揮発性半導体メモリはDRAMであり、前記不揮発性半導体メモリはNAND型フラッシュメモリであることを特徴とする請求項27に記載のメモリシステム。
Priority Applications (8)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008051473A JP4498426B2 (ja) | 2008-03-01 | 2008-03-01 | メモリシステム |
| EP08872744A EP2250567A4 (en) | 2008-03-01 | 2008-09-22 | MEMORY SYSTEM |
| US12/529,270 US7904640B2 (en) | 2008-03-01 | 2008-09-22 | Memory system with write coalescing |
| KR1020097018121A KR101018766B1 (ko) | 2008-03-01 | 2008-09-22 | 메모리 시스템 |
| CN200880006648A CN101647007A (zh) | 2008-03-01 | 2008-09-22 | 存储器系统 |
| PCT/JP2008/067600 WO2009110126A1 (en) | 2008-03-01 | 2008-09-22 | Memory system |
| TW098105693A TWI400615B (zh) | 2008-03-01 | 2009-02-23 | 記憶體系統 |
| US12/984,337 US8176237B2 (en) | 2008-03-01 | 2011-01-04 | Solid state drive with input buffer |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008051473A JP4498426B2 (ja) | 2008-03-01 | 2008-03-01 | メモリシステム |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| JP2009211227A JP2009211227A (ja) | 2009-09-17 |
| JP2009211227A5 JP2009211227A5 (ja) | 2010-04-02 |
| JP4498426B2 true JP4498426B2 (ja) | 2010-07-07 |
Family
ID=41055699
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2008051473A Expired - Fee Related JP4498426B2 (ja) | 2008-03-01 | 2008-03-01 | メモリシステム |
Country Status (7)
| Country | Link |
|---|---|
| US (2) | US7904640B2 (ja) |
| EP (1) | EP2250567A4 (ja) |
| JP (1) | JP4498426B2 (ja) |
| KR (1) | KR101018766B1 (ja) |
| CN (1) | CN101647007A (ja) |
| TW (1) | TWI400615B (ja) |
| WO (1) | WO2009110126A1 (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009211220A (ja) * | 2008-03-01 | 2009-09-17 | Toshiba Corp | メモリシステム |
| TWI567554B (zh) * | 2014-11-06 | 2017-01-21 | 慧榮科技股份有限公司 | 緩存及讀取即將寫入儲存單元之資料的方法以及使用該方法的裝置 |
Families Citing this family (59)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100842680B1 (ko) * | 2007-01-08 | 2008-07-01 | 삼성전자주식회사 | 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템 |
| JP4461170B2 (ja) | 2007-12-28 | 2010-05-12 | 株式会社東芝 | メモリシステム |
| JP4533968B2 (ja) | 2007-12-28 | 2010-09-01 | 株式会社東芝 | 半導体記憶装置及びその制御方法、コントローラ、情報処理装置 |
| JP4510107B2 (ja) * | 2008-03-12 | 2010-07-21 | 株式会社東芝 | メモリシステム |
| JP4745356B2 (ja) * | 2008-03-01 | 2011-08-10 | 株式会社東芝 | メモリシステム |
| KR101067457B1 (ko) | 2008-03-01 | 2011-09-27 | 가부시끼가이샤 도시바 | 메모리 시스템 |
| JP4691122B2 (ja) * | 2008-03-01 | 2011-06-01 | 株式会社東芝 | メモリシステム |
| JP4762261B2 (ja) * | 2008-03-12 | 2011-08-31 | 株式会社東芝 | メモリシステム |
| JP4439569B2 (ja) * | 2008-04-24 | 2010-03-24 | 株式会社東芝 | メモリシステム |
| JP5317690B2 (ja) | 2008-12-27 | 2013-10-16 | 株式会社東芝 | メモリシステム |
| JP5221332B2 (ja) | 2008-12-27 | 2013-06-26 | 株式会社東芝 | メモリシステム |
| WO2010093056A1 (en) | 2009-02-12 | 2010-08-19 | Kabushiki Kaisha Toshiba | Memory system and method of controlling memory system |
| TWI408689B (zh) * | 2009-04-14 | 2013-09-11 | Jmicron Technology Corp | 存取儲存裝置的方法及相關控制電路 |
| TW201102812A (en) * | 2009-07-15 | 2011-01-16 | A Data Technology Co Ltd | A storage device and data processing method thereof |
| JP5221593B2 (ja) * | 2010-04-27 | 2013-06-26 | 株式会社東芝 | メモリシステム |
| CN102375698B (zh) * | 2010-08-23 | 2014-06-25 | 群联电子股份有限公司 | 数据串分派与传送方法、存储器控制器与存储器储存装置 |
| JP5535128B2 (ja) | 2010-12-16 | 2014-07-02 | 株式会社東芝 | メモリシステム |
| JP2012141946A (ja) * | 2010-12-16 | 2012-07-26 | Toshiba Corp | 半導体記憶装置 |
| KR101734199B1 (ko) * | 2010-12-29 | 2017-05-24 | 삼성전자주식회사 | 멀티-비트 메모리 장치를 포함한 데이터 저장 시스템 및 그것의 동작 방법 |
| US9213594B2 (en) * | 2011-01-19 | 2015-12-15 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing out-of-service conditions |
| US8458145B2 (en) * | 2011-01-20 | 2013-06-04 | Infinidat Ltd. | System and method of storage optimization |
| JP5221699B2 (ja) * | 2011-03-23 | 2013-06-26 | 株式会社東芝 | 半導体記憶装置 |
| KR101792867B1 (ko) | 2011-06-16 | 2017-11-02 | 삼성전자주식회사 | 멀티-레벨 메모리 장치를 포함한 데이터 저장 시스템 및 그것의 동작 방법 |
| US8990493B1 (en) | 2011-06-30 | 2015-03-24 | Western Digital Technologies, Inc. | Method and apparatus for performing force unit access writes on a disk |
| TWI448892B (zh) * | 2011-09-06 | 2014-08-11 | Phison Electronics Corp | 資料搬移方法、記憶體控制器與記憶體儲存裝置 |
| CN102999437B (zh) * | 2011-09-19 | 2015-12-16 | 群联电子股份有限公司 | 数据搬移方法、存储器控制器与存储器储存装置 |
| US20130091321A1 (en) * | 2011-10-11 | 2013-04-11 | Cisco Technology, Inc. | Method and apparatus for utilizing nand flash in a memory system hierarchy |
| JP5674634B2 (ja) | 2011-12-28 | 2015-02-25 | 株式会社東芝 | コントローラ、記憶装置およびプログラム |
| JP5713926B2 (ja) * | 2012-01-13 | 2015-05-07 | 株式会社東芝 | 磁気ディスク装置及び同磁気ディスク装置におけるデータバッファリング方法 |
| US8554963B1 (en) | 2012-03-23 | 2013-10-08 | DSSD, Inc. | Storage system with multicast DMA and unified address space |
| US8370567B1 (en) * | 2012-03-23 | 2013-02-05 | DSSD, Inc. | Storage system with self describing data |
| KR101351550B1 (ko) * | 2012-04-18 | 2014-01-22 | 연세대학교 산학협력단 | 비휘발성 메인 메모리 기반을 위한 이중 버퍼 구조 및 데이터 운영 방식 |
| US9645917B2 (en) * | 2012-05-22 | 2017-05-09 | Netapp, Inc. | Specializing I/O access patterns for flash storage |
| EP2856324A4 (en) * | 2012-06-04 | 2016-01-20 | Hewlett Packard Development Co | MANAGING AN ANALYTICAL FUNCTION TO EXECUTE ON DATA STORED IN AN INPUT BLOCK |
| JP5813589B2 (ja) * | 2012-07-13 | 2015-11-17 | 株式会社東芝 | メモリシステムおよびその制御方法 |
| US8392428B1 (en) | 2012-09-12 | 2013-03-05 | DSSD, Inc. | Method and system for hash fragment representation |
| US9471484B2 (en) | 2012-09-19 | 2016-10-18 | Novachips Canada Inc. | Flash memory controller having dual mode pin-out |
| JP6028670B2 (ja) * | 2013-04-22 | 2016-11-16 | 株式会社デンソー | データ記憶装置 |
| CN103544995B (zh) * | 2013-08-27 | 2016-09-21 | 华为技术有限公司 | 一种坏道修复方法及装置 |
| KR102244618B1 (ko) * | 2014-02-21 | 2021-04-26 | 삼성전자 주식회사 | 플래시 메모리 시스템 및 플래시 메모리 시스템의 제어 방법 |
| CN105243071A (zh) * | 2014-07-12 | 2016-01-13 | 航天恒星科技有限公司 | 一种适用于无文件系统的可检索文件存取方法 |
| US9378149B1 (en) | 2014-08-29 | 2016-06-28 | Emc Corporation | Method and system for tracking modification times of data in a storage system |
| US10102118B2 (en) * | 2014-10-30 | 2018-10-16 | Toshiba Memory Corporation | Memory system and non-transitory computer readable recording medium |
| US11347637B2 (en) | 2014-10-30 | 2022-05-31 | Kioxia Corporation | Memory system and non-transitory computer readable recording medium |
| US9710199B2 (en) | 2014-11-07 | 2017-07-18 | International Business Machines Corporation | Non-volatile memory data storage with low read amplification |
| US9400603B2 (en) | 2014-12-16 | 2016-07-26 | International Business Machines Corporation | Implementing enhanced performance flash memory devices |
| US10162700B2 (en) | 2014-12-23 | 2018-12-25 | International Business Machines Corporation | Workload-adaptive data packing algorithm |
| CN104503707B (zh) | 2014-12-24 | 2018-03-06 | 华为技术有限公司 | 读取数据的方法以及装置 |
| US10049035B1 (en) * | 2015-03-10 | 2018-08-14 | Reniac, Inc. | Stream memory management unit (SMMU) |
| JP6384375B2 (ja) | 2015-03-23 | 2018-09-05 | 富士通株式会社 | 情報処理装置、記憶装置制御方法、記憶装置制御プログラム及び情報処理システム |
| KR101718713B1 (ko) * | 2015-05-29 | 2017-03-22 | 주식회사 이에프텍 | 비휘발성 메모리 시스템 |
| US9557919B2 (en) * | 2015-06-26 | 2017-01-31 | EMC IP Holding Company LLC | Resolving write pressure using existing backup appliance as additional primary storage |
| US9712190B2 (en) | 2015-09-24 | 2017-07-18 | International Business Machines Corporation | Data packing for compression-enabled storage systems |
| US9870285B2 (en) | 2015-11-18 | 2018-01-16 | International Business Machines Corporation | Selectively de-straddling data pages in non-volatile memory |
| JP2018041204A (ja) | 2016-09-06 | 2018-03-15 | 東芝メモリ株式会社 | メモリ装置及び情報処理システム |
| TWI664527B (zh) | 2018-03-20 | 2019-07-01 | 慧榮科技股份有限公司 | 用來於一記憶裝置中進行初始化之方法、記憶裝置及其控制器以及電子裝置 |
| JP2022094705A (ja) * | 2020-12-15 | 2022-06-27 | キオクシア株式会社 | メモリシステムおよび制御方法 |
| CN112988072B (zh) * | 2021-03-22 | 2023-11-14 | 北京车和家信息技术有限公司 | 数据处理方法和装置、存储介质和电子设备 |
| JP7713417B2 (ja) * | 2022-03-18 | 2025-07-25 | 株式会社日立製作所 | ストレージシステム及びデータキャッシュ方法 |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3176019B2 (ja) | 1995-04-05 | 2001-06-11 | 株式会社東芝 | 不揮発性半導体記憶部を含む記憶システム |
| JP3688835B2 (ja) | 1996-12-26 | 2005-08-31 | 株式会社東芝 | データ記憶システム及び同システムに適用するデータ転送方法 |
| TW484064B (en) * | 1999-07-12 | 2002-04-21 | Feiya Technology Corp | Flash memory management, data linking architecture and algorithm |
| US7966462B2 (en) * | 1999-08-04 | 2011-06-21 | Super Talent Electronics, Inc. | Multi-channel flash module with plane-interleaved sequential ECC writes and background recycling to restricted-write flash chips |
| KR100389867B1 (ko) | 2001-06-04 | 2003-07-04 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
| US7173863B2 (en) | 2004-03-08 | 2007-02-06 | Sandisk Corporation | Flash controller cache architecture |
| KR100526190B1 (ko) * | 2004-02-06 | 2005-11-03 | 삼성전자주식회사 | 플래시 메모리의 재사상 방법 |
| JP4768237B2 (ja) | 2004-06-25 | 2011-09-07 | 株式会社東芝 | 携帯可能電子装置及び携帯可能電子装置の制御方法 |
| US7212440B2 (en) * | 2004-12-30 | 2007-05-01 | Sandisk Corporation | On-chip data grouping and alignment |
| US20070041050A1 (en) * | 2005-08-17 | 2007-02-22 | Bing-Yu Wang | Memory management method and system |
| JP2008033788A (ja) * | 2006-07-31 | 2008-02-14 | Matsushita Electric Ind Co Ltd | 不揮発性記憶装置、データ記憶システム、およびデータ記憶方法 |
| JP4362549B1 (ja) * | 2006-08-04 | 2009-11-11 | サンディスク コーポレイション | 段階的ガーベッジコレクション |
| US7978516B2 (en) * | 2007-12-27 | 2011-07-12 | Pliant Technology, Inc. | Flash memory controller having reduced pinout |
| KR100953044B1 (ko) * | 2008-05-26 | 2010-04-14 | 주식회사 하이닉스반도체 | 불휘발성 메모리 장치의 프로그램 방법 |
| US8327072B2 (en) * | 2008-07-23 | 2012-12-04 | International Business Machines Corporation | Victim cache replacement |
-
2008
- 2008-03-01 JP JP2008051473A patent/JP4498426B2/ja not_active Expired - Fee Related
- 2008-09-22 KR KR1020097018121A patent/KR101018766B1/ko not_active Expired - Fee Related
- 2008-09-22 EP EP08872744A patent/EP2250567A4/en not_active Withdrawn
- 2008-09-22 WO PCT/JP2008/067600 patent/WO2009110126A1/en not_active Ceased
- 2008-09-22 US US12/529,270 patent/US7904640B2/en not_active Expired - Fee Related
- 2008-09-22 CN CN200880006648A patent/CN101647007A/zh active Pending
-
2009
- 2009-02-23 TW TW098105693A patent/TWI400615B/zh not_active IP Right Cessation
-
2011
- 2011-01-04 US US12/984,337 patent/US8176237B2/en not_active Expired - Fee Related
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009211220A (ja) * | 2008-03-01 | 2009-09-17 | Toshiba Corp | メモリシステム |
| TWI567554B (zh) * | 2014-11-06 | 2017-01-21 | 慧榮科技股份有限公司 | 緩存及讀取即將寫入儲存單元之資料的方法以及使用該方法的裝置 |
| US9779022B2 (en) | 2014-11-06 | 2017-10-03 | Silicon Motion, Inc. | Methods for caching and reading data to be programmed into a storage unit and apparatuses using the same |
Also Published As
| Publication number | Publication date |
|---|---|
| TW200947213A (en) | 2009-11-16 |
| CN101647007A (zh) | 2010-02-10 |
| EP2250567A1 (en) | 2010-11-17 |
| US7904640B2 (en) | 2011-03-08 |
| WO2009110126A1 (en) | 2009-09-11 |
| US20110099349A1 (en) | 2011-04-28 |
| US8176237B2 (en) | 2012-05-08 |
| JP2009211227A (ja) | 2009-09-17 |
| EP2250567A4 (en) | 2011-09-28 |
| KR20090117935A (ko) | 2009-11-16 |
| TWI400615B (zh) | 2013-07-01 |
| US20100274950A1 (en) | 2010-10-28 |
| KR101018766B1 (ko) | 2011-03-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4498426B2 (ja) | メモリシステム | |
| JP4675985B2 (ja) | メモリシステム | |
| JP5032371B2 (ja) | メモリシステム | |
| JP5010505B2 (ja) | メモリシステム | |
| JP4745356B2 (ja) | メモリシステム | |
| JP4691122B2 (ja) | メモリシステム | |
| JP4691123B2 (ja) | メモリシステム | |
| JP4643667B2 (ja) | メモリシステム | |
| JP4653817B2 (ja) | メモリシステム | |
| JP2009211233A (ja) | メモリシステム | |
| JP4551940B2 (ja) | メモリシステム | |
| KR101067457B1 (ko) | 메모리 시스템 | |
| JP4643671B2 (ja) | メモリシステム | |
| JP4762261B2 (ja) | メモリシステム | |
| JP2009211234A (ja) | メモリシステム | |
| JP4592774B2 (ja) | メモリシステム | |
| JP5221593B2 (ja) | メモリシステム | |
| JP4621749B2 (ja) | メモリシステム | |
| JP4510107B2 (ja) | メモリシステム | |
| JP4746641B2 (ja) | メモリシステム | |
| JP5178857B2 (ja) | メモリシステム | |
| KR101032671B1 (ko) | 메모리 시스템 | |
| JP2009211224A (ja) | メモリシステム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100104 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100104 |
|
| A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20100104 |
|
| A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20100118 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100212 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100302 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100308 |
|
| 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: 20100323 |
|
| 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: 20100413 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130423 Year of fee payment: 3 |
|
| LAPS | Cancellation because of no payment of annual fees |