JP2013137665A - 半導体記憶装置、半導体記憶装置の制御方法、およびメモリコントローラ - Google Patents
半導体記憶装置、半導体記憶装置の制御方法、およびメモリコントローラ Download PDFInfo
- Publication number
- JP2013137665A JP2013137665A JP2011288484A JP2011288484A JP2013137665A JP 2013137665 A JP2013137665 A JP 2013137665A JP 2011288484 A JP2011288484 A JP 2011288484A JP 2011288484 A JP2011288484 A JP 2011288484A JP 2013137665 A JP2013137665 A JP 2013137665A
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- buffer area
- write
- compaction
- semiconductor memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Memory System (AREA)
Abstract
【課題】書き込み性能を劣化させずに、バッファ総容量を減らす。
【解決手段】実施形態の半導体記憶装置は記憶部とコントローラを有し、コントローラは、ホストインターフェース部と、そこから出力される書込みデータを格納する第1領域と記憶部から読み出したデータを格納する第2領域とを有するバッファ部と、第1および第2領域の容量を制御するバッファ制御部と、第1領域に格納された書込みデータを記憶部に書き込むように制御する書き込み/読み出し制御部と、それを制御して記憶部に格納された有効データを第2領域に読み出して記憶部に書き込むコンパクションを実行するコンパクション制御部と、を有する。実施形態の半導体記憶装置は、書き込み/読み出し制御部が第1領域に格納された書込みデータを記憶部に書き込んだ後、バッファ制御部は第1領域の少なくとも一部を第2領域に割り当て、その後にコンパクション制御部はコンパクションを行う。
【選択図】図1
【解決手段】実施形態の半導体記憶装置は記憶部とコントローラを有し、コントローラは、ホストインターフェース部と、そこから出力される書込みデータを格納する第1領域と記憶部から読み出したデータを格納する第2領域とを有するバッファ部と、第1および第2領域の容量を制御するバッファ制御部と、第1領域に格納された書込みデータを記憶部に書き込むように制御する書き込み/読み出し制御部と、それを制御して記憶部に格納された有効データを第2領域に読み出して記憶部に書き込むコンパクションを実行するコンパクション制御部と、を有する。実施形態の半導体記憶装置は、書き込み/読み出し制御部が第1領域に格納された書込みデータを記憶部に書き込んだ後、バッファ制御部は第1領域の少なくとも一部を第2領域に割り当て、その後にコンパクション制御部はコンパクションを行う。
【選択図】図1
Description
本発明の実施形態は、半導体記憶装置、半導体記憶装置の制御方法、およびメモリコントローラに関する。
不揮発性メモリ、例えばNANDフラッシュメモリでは、物理的な消去単位(以降消去ブロックと称する)が、ホストからの最小のアクセス可能なデータサイズに対して非常に大きいため、ホストから同一の論理アドレスへの上書きや、既に書かれたデータの消去の要求が来ても、物理的なデータ消去は行わず、不揮発性メモリの異なる物理アドレス領域に新しいデータを追記していく書き込み制御方式が採られている。このような方式で、書き込み消去を繰り返して使用していると、無効なデータを含んだブロックが増え、新たにデータを書き込むための領域が減っていってしまう。そのため、複数のブロックから有効なデータだけを集め、他のブロックにコピーした上で、新たな書き込みを行えるよう、古いブロックの内容を消去する処理が必要であり、この処理をコンパクション(ガベージコレクションとも)と呼ぶ。
このコンパクション処理において、不揮発性メモリのブロック間のデータ移動の際には、データを不揮発性メモリから一旦読み出し、不揮発性メモリの別のブロックへ書き込むまでデータを保持しておくためのコンパクション用バッファが必要である。
しかしながら、コンパクション用バッファ領域、ユーザデータ書き込み用バッファ領域を、性能を出すのに必要なだけ独立に備えているとバッファの総容量が大きくなってしまい、装置のコストを押し上げる要因となってしまう。
本発明の一つの実施形態は、書き込み性能を劣化させることなく、バッファの総容量を減らすことが出来る半導体記憶装置、半導体記憶装置の制御方法、およびメモリコントローラを提供することを目的とする。
本発明の一つの実施形態の半導体記憶装置は、半導体記憶部とメモリコントローラを有する半導体記憶装置であって、前記メモリコントローラは、ホストインターフェース部と、前記ホストインターフェース部から出力される書込みデータを格納する第1バッファ領域と、前記半導体記憶部から読み出した読出しデータを格納する第2バッファ領域と、を有するバッファ部と、前記第1バッファ領域および前記第2バッファ領域の容量を制御するバッファ制御部と、前記第1バッファ領域に格納された前記書込みデータを前記半導体記憶部に書き込むように制御する書き込み/読み出し制御部と、前記書き込み/読み出し制御部を制御して、前記半導体記憶部に格納された有効データを前記第2バッファ領域に読み出し、前記第2バッファ領域に読み出された前記有効データを前記半導体記憶部に書き込むコンパクション処理を実行するコンパクション制御部と、を有する。実施形態の半導体記憶装置は、前記書き込み/読み出し制御部が前記第1バッファ領域に格納された前記書込みデータを前記半導体記憶部に書き込んだ後、前記バッファ制御部は前記第1バッファ領域の少なくとも一部を前記第2バッファ領域に割り当てる割り当て処理を実行し、当該割り当て処理の後に、前記コンパクション制御部はコンパクション処理を行う。
高速なホストインターフェースを備えるSSD(Solid State Drive)では、複数の不揮発性メモリに並列に書き込みを行うことで、スループットを高めている。そのため、ホストから転送されるユーザデータは一旦バッファに格納され、複数の不揮発性メモリへの並列書き込みに十分な量のデータが溜まってから、不揮発性メモリへの書き込みを行っている。不揮発性メモリへの書き込みが完了すると、書き込み用バッファは解放され、新たにホストから転送されるユーザデータを格納することができるようになる。不揮発性メモリへの書き込み中にバッファが枯渇すると、ホストからのユーザデータ転送を止めざるを得なくなりスループットが低下してしまう。そのため、ユーザデータ書き込み用バッファは、ホストからのデータ転送のスループットを維持するのに十分な容量を持っている必要がある。ここで、コンパクション処理をする場合には、さらにコンパクション用バッファが必要となる。しかしながら、コンパクション用バッファ領域、ユーザデータ書き込み用バッファ領域を、性能を出すのに必要なだけ独立に備えているとバッファの総容量が大きくなってしまい、装置のコストを押し上げる要因となってしまう。
以下に添付図面を参照して、実施形態にかかる半導体記憶装置、半導体記憶装置の制御方法、およびメモリコントローラを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、実施形態における書き込み処理およびコンパクション処理にかかるSSD1の構成を示す図である。SSD1は、ホストインターフェース部2、データバッファ3、制御部4、NANDコントローラ50〜57(チャネル制御部)、NANDフラッシュメモリ100〜131(不揮発性メモリ)を備える。データバッファ3は、書き込みバッファ(WB)領域31およびコンパクションバッファ(CB)領域32を備える。制御部4は、書き込み/読み出しコントローラ41、バッファコントローラ42、コンパクションコントローラ43を備える。NANDコントローラ50〜57のそれぞれにはチャネル0(Ch.0)〜チャネル7(Ch.7)が接続されている。各チャネルには異なるバンク(例えば4つのバンク、バンク0(Bank0)〜バンク3(Bank3))に所属するNANDフラッシュメモリが接続されている。たとえば、チャネル0(Ch.0)にはNANDフラッシュメモリ100(NAND#0)、NANDフラッシュメモリ108(NAND#8)、NANDフラッシュメモリ115(NAND#15)、NANDフラッシュメモリ122(NAND#22)が接続されている。チャネル1(Ch.1)〜チャネル7(Ch.7)も同様である。バンク0(Bank0)には、チャネル0(Ch.0)からチャネル7(Ch.7)に接続されたNANDフラッシュメモリ100(NAND#0)、NANDフラッシュメモリ101(NAND#1)、・・・、NANDフラッシュメモリ107(NAND#7)の8つのNANDフラッシュメモリが所属している。バンク1(Bank1)〜バンク3(Bank3)も同様である。各NANDフラッシュメモリ100〜131はそれぞれNANDチップに対応している場合もあるが、同一チャネルに接続された隣接するバンクに所属するNANDフラッシュメモリ、例えばNANDフラッシュメモリ100(NAND#0)およびNANDフラッシュメモリ108(NAND#8)とで1つのNANDチップを構成している場合もある。また上記ではチャネル数8、チャネル毎のバンク数4の例を示したが、チャネル数およびバンク数はこれに限定されるものではない。
図1は、実施形態における書き込み処理およびコンパクション処理にかかるSSD1の構成を示す図である。SSD1は、ホストインターフェース部2、データバッファ3、制御部4、NANDコントローラ50〜57(チャネル制御部)、NANDフラッシュメモリ100〜131(不揮発性メモリ)を備える。データバッファ3は、書き込みバッファ(WB)領域31およびコンパクションバッファ(CB)領域32を備える。制御部4は、書き込み/読み出しコントローラ41、バッファコントローラ42、コンパクションコントローラ43を備える。NANDコントローラ50〜57のそれぞれにはチャネル0(Ch.0)〜チャネル7(Ch.7)が接続されている。各チャネルには異なるバンク(例えば4つのバンク、バンク0(Bank0)〜バンク3(Bank3))に所属するNANDフラッシュメモリが接続されている。たとえば、チャネル0(Ch.0)にはNANDフラッシュメモリ100(NAND#0)、NANDフラッシュメモリ108(NAND#8)、NANDフラッシュメモリ115(NAND#15)、NANDフラッシュメモリ122(NAND#22)が接続されている。チャネル1(Ch.1)〜チャネル7(Ch.7)も同様である。バンク0(Bank0)には、チャネル0(Ch.0)からチャネル7(Ch.7)に接続されたNANDフラッシュメモリ100(NAND#0)、NANDフラッシュメモリ101(NAND#1)、・・・、NANDフラッシュメモリ107(NAND#7)の8つのNANDフラッシュメモリが所属している。バンク1(Bank1)〜バンク3(Bank3)も同様である。各NANDフラッシュメモリ100〜131はそれぞれNANDチップに対応している場合もあるが、同一チャネルに接続された隣接するバンクに所属するNANDフラッシュメモリ、例えばNANDフラッシュメモリ100(NAND#0)およびNANDフラッシュメモリ108(NAND#8)とで1つのNANDチップを構成している場合もある。また上記ではチャネル数8、チャネル毎のバンク数4の例を示したが、チャネル数およびバンク数はこれに限定されるものではない。
図1において、SSD1がホストから書き込みコマンドを受領すると、ホストインターフェース部2は、データバッファ3の空き容量を確認し、ユーザデータをデータバッファ3内の書き込みバッファ(WB)領域31に転送する。NANDコントローラ50〜57は、書き込み/読み出しコントローラ41の指示に従い、書き込みバッファ(WB)領域31からユーザデータを複数のチャネルおよびバンクに分散して書き込む。
バッファコントローラ42は、ホストから受け取ったユーザデータの論理アドレスと、データバッファ3上でユーザデータを格納したアドレスとを対応付けて管理する。図2は、バッファコントローラ42におけるユーザデータの論理アドレスとデータバッファ3上でユーザデータを格納したアドレスとを対応付ける管理の様子の一例を示した図である。図2に示すように、連続した論理セクタアドレスに対応する幾つかのセクタ分(例えば8セクタ分)のデータを一つのクラスタデータとし、セクタを格納したバッファアドレスをクラスタサイズ分だけ並べたリスト(図2のSector_Addr0〜Sector_Addr7)とクラスタ単位の論理クラスタアドレス(LCAXX、LCAYY)を一つのエントリとして管理する。バッファアドレスとは、データバッファ3上のデータのアドレスである。
バッファコントローラ42は、少なくともクラスタ単位の論理アドレス(LCAXX、LCAYY)のリストの先頭を示すポインタ(図2のWBE#0、WBE#1)を保持していれば、データバッファ3の書き込みバッファ(WB)領域31の管理が可能である。バッファコントローラ42は、コンパクションバッファ(CB)領域32の管理も同様にポインタで行う。すなわち、バッファコントローラ42は、ホストインターフェース部2にポインタを渡すことにより、書き込みバッファ(WB)領域31の容量を制御することができる。同様に、バッファコントローラ42は、NANDコントローラ50〜57にポインタを渡すことにより、コンパクションバッファ(CB)領域32の容量を制御することができる。従って、バッファコントローラ42は、データバッファ3に直接アクセスする必要がない。また、クラスタという単位は、書き込み/読み出しコントローラ41で、ホストが扱う論理アドレスと、NANDフラッシュメモリ100〜131の物理アドレスとを対応付ける最小単位であるとする。また、書き込み/読み出しコントローラ41の機能としては上記論理アドレスと物理アドレスとの変換処理を含むものとする。なお、データバッファ3はリングバッファで実装してもよい。即ち、データバッファ3内のデータ管理構造において、ユーザデータの書き込みバッファ(WB)領域31に該当する基本単位(クラスタ単位)の集合を一つのリングバッファ構造で管理し、コンパクションバッファ(CB)領域32に該当する基本単位(クラスタ単位)の集合も一つのリングバッファ構造で管理する。ユーザデータが書き込まれた領域は、ホストからデータを受け取った順に書き込み/読み出しコントローラ41にデータバッファ3上のアドレス提示し、書き込みが完了して無効化された順に再利用する。コンパクションバッファ(CB)領域32もまた、コンパクションコントローラ43から読み出し要求が出された順に書き込み/読み出しコントローラ41にデータバッファ3上のアドレスを提示し、書き込みが完了して無効化された順に再利用する。割り当ての切り替えは、リングバッファの論理的な接続切り替えによって行う。これにより領域割り当て処理が容易になる。
バッファコントローラ42は、クラスタサイズ分(例えば8セクタ分)溜まったエントリを、書き込み/読み出しコントローラ41に通知する。これは、書き込み/読み出しコントローラ41に、NANDフラッシュメモリ100〜131に書き込んでも良いユーザデータのデータバッファ3上での位置を通知したことに相当する。
書き込み/読み出しコントローラ41は、NANDフラッシュメモリ100〜131に書き込んでも良いユーザデータの量が、メディア(NANDフラッシュメモリ100〜131)にとって都合の良い量に達したときに、NANDコントローラ50〜57に対して、データバッファ3上にあるデータのNANDフラッシュメモリ100〜131への書き込みを指示する。書き込みアルゴリズムは追記型とし、同一の論理アドレスへの上書きがあったとしても、物理的な消去をするのではなく、新しい領域を割り当てて、論理アドレスと物理アドレスの対応関係を更新していく。
ここでのメディアにとって都合の良い量とは、単一のNANDフラッシュメモリにとっては、ページサイズであり、メディア書き込みを、複数チャネル並列に行う場合は、ページサイズの自然数倍になる。ここでは、図1に示した全チャネル数8の半分のチャネル数である4チャネル(例えば、チャネル0(Ch.0)〜チャネル3(Ch.3)、或いはチャネル4(Ch.4)〜チャネル7(Ch.7))を1回の並列書き込みに使用するとする。1回の並列書き込みにおいて1つのチャネルに対して32クラスタ分のデータが書き込めるとすると、4チャネル分の書き込みに要するクラスタ数Xは128となる(X=128)。1論理ページは256(=2X)クラスタであるので、1回の並列書き込みで1/2論理ページを書き込むとする。以下、書き込みバッファ(WB)領域31上にあるデータのNANDフラッシュメモリ100〜131への1回の並列書き込みによる書き込みデータ量を128(=X)クラスタとして説明するが、1回の並列書き込みが可能なデータ量はこれに限定されるわけではない。
チャネル0(Ch.0)〜チャネル3(Ch.3)、或いはチャネル4(Ch.4)〜チャネル7(Ch.7)にそれぞれ接続されたNANDフラッシュメモリへの128クラスタ分のデータの書き込みが完了するまでの期間、書き込みバッファ(WB)領域31のユーザデータが格納されている領域は解放することが出来ない。そのため、ホストからのデータ転送速度を維持するためには、NANDフラッシュメモリへの128(=X)クラスタ分のデータ書き込みが完了し、書き込みバッファ(WB)領域31の当該領域が再利用できるようになるまでの期間に、ホストインターフェース部2を介してホストから受け取るデータ量を格納できるだけの書き込みバッファ(WB)領域31がさらに必要である。
書き込みバッファ(WB)領域31に溜まった128(=X)クラスタ分のデータをNANDフラッシュメモリに書き込む時間がホストから128(=X)クラスタ分のデータを受ける時間より短い場合、ホストからのデータ転送速度を維持しつつ、NANDフラッシュメモリに書き込みを続けるには256(=2X)クラスタ分の書き込みバッファ(WB)領域31を備えていれば十分である。即ち、後で詳述するダブルバッファリングを実行して書き込みを行うことなどを考慮すると、書き込みバッファ(WB)領域31の容量は、書き込みバッファ(WB)領域31からNANDフラッシュメモリに1回で書き込む書き込みデータのデータ単位の2倍以上の容量があればよい。
このような書き込み処理を続けていくとNANDフラッシュメモリ100〜131上で無効なデータを保持している領域が増えてしまう。これを回避するために無効なデータを含むブロックから別のブロックへ有効なデータのみコピーして集め、コピー元のブロックを消去し、新たなユーザデータ書き込みに再利用できるようにする処理を行う。この処理をコンパクション処理と呼ぶ。
ユーザデータ書き込み先と、コンパクションデータ書き込み先が別のブロックであり、同一ページに混ざらないようなコンパクションアルゴリズムの概要は以下のようになる。
書き込みバッファ(WB)領域31とコンパクションバッファ(CB)領域32を合わせたバッファ容量の総量としては384(=3X)クラスタ分の容量を用意する。図3は、データ書き込み処理実行時とコンパクション処理実行時におけるデータバッファ3の容量配分の一例を示す図である。図3に示すように、コンパクション処理を行っていないユーザデータのデータ書き込み処理実行時は、2X(=256)クラスタ分のバッファ容量をユーザデータの書き込みバッファ(WB)領域31として用いる。NANDフラッシュメモリ100〜131への1回の並列書き込みで書き込まれるユーザデータ量は128(=X)クラスタなので、ホストからのユーザデータの書き込みバッファ(WB)領域31への転送、および書き込みバッファ(WB)領域31からNANDフラッシュメモリ100〜131への書き込み(プログラム)は以下に説明するダブルバッファリングで実行することができる。
図4は、実施形態の書き込みバッファ(WB)領域におけるダブルバッファリングの手順を示した図である。図4の上には、ホスト(ホストインターフェース部2)から書き込みバッファ(WB)領域31へのユーザデータの転送、および書き込みバッファ(WB)領域31からNANDフラッシュメモリ100〜131への書き込み(プログラム)のタイムチャートが示されており、図4の(a)、(b)、(c)、および(d)は時系列に沿った書き込みバッファ(WB)領域31の状態を示す。
まず、ホスト(ホストインターフェース部2)から書き込みバッファ(WB)領域31へXクラスタ分のデータAが転送される。このときの書き込みバッファ(WB)領域31の状態が(a)であり、2X(=256)クラスタ分のバッファ容量を有する書き込みバッファ(WB)領域31の半分にデータAが保持される。
次のタイミングで、ホスト(ホストインターフェース部2)から書き込みバッファ(WB)領域31へXクラスタ分のデータBが転送される。このときの書き込みバッファ(WB)領域31の状態が(b)であり、書き込みバッファ(WB)領域31の残りの半分のXクラスタ分の領域にデータBが保持される。そしてこのタイミングで、書き込みバッファ(WB)領域31に保持されたデータAはNANDフラッシュメモリ100〜131へ書き込まれる(プログラム)。
これにより、書き込みバッファ(WB)領域31のデータAを保持していた領域は解放される((c))。
さらに次のタイミングで、ホスト(ホストインターフェース部2)から書き込みバッファ(WB)領域31の(c)で解放された領域へXクラスタ分のデータCが転送される。このときの書き込みバッファ(WB)領域31の状態が(d)であり、このタイミングで、書き込みバッファ(WB)領域31に保持されたデータBはNANDフラッシュメモリ100〜131へ書き込まれる(プログラム)。
コンパクション処理実行時は、バッファコントローラ42は、NANDフラッシュメモリ100〜131への書き込みが完了し解放された書き込みバッファ(WB)領域31のXクラスタ分を、新たなユーザデータの書き込み用バッファ(WB)領域31としてではなく、コンパクションバッファ(CB)領域32として割り当てる。図4を用いて説明すると、(d)のタイミングになる前にコンパクションの開始が決定されると、図4の(c)に下に記載したように、解放された書き込みバッファ(WB)領域31のXクラスタ分がコンパクションバッファ(CB)領域32として割り当てられることになる。この結果、コンパクション処理実行時は、書き込み用バッファ(WB)領域31のバッファ容量はXクラスタ分、コンパクションバッファ(CB)領域32のバッファ容量は2Xクラスタ分になる。
コンパクション先ブロックはチャネル(チャネル0(Ch.0)〜チャネル7(Ch.7))毎に用意し、全チャネルのNANDコントローラ50〜57への書き込み指示を出し、コンパクション元ブロックから読み出した有効データを2Xクラスタ分(1論理ページ分)並列に書き込むものとする(図5)。このとき、コンパクションバッファ(CB)領域32として、256(=2X)クラスタ分のデータ領域があれば、コンパクション元ブロックからの有効データを全てコンパクションバッファ(CB)領域32上に読み出し、全てのチャネル(チャネル0(Ch.0)〜チャネル7(Ch.7))を介して1論理ページ分のデータを並列に書き込みを行うことができる。
コンパクションの手順としては、コンパクションコントローラ43から通知される有効クラスタデータの論理アドレスを元に、書き込み/読み出しコントローラ41に対して、メディア上の有効なデータをコンパクションバッファ(CB)領域32へ読み出すよう指示する。書き込み/読み出しコントローラ41から指示を受けたNANDコントローラ50〜57はこの時点で有効なデータを選択するので無効なデータは読み出さない。コンパクションバッファ(CB)領域32上でクラスタ単位のデータが溜まると、バッファコントローラ42は当該エントリを書き込み/読み出しコントローラ41に通知する。書き込み/読み出しコントローラ41は2Xクラスタ分(1論理ページ分)の有効データが溜まったら、NANDコントローラ50〜57に対して、コンパクションバッファ(CB)領域32上に溜まった有効データを全てのチャネル(チャネル0(Ch.0)〜チャネル7(Ch.7))を介してNANDフラッシュメモリ100〜131へ書き込ませる。
2Xクラスタ分の有効データのコンパクション処理が行われている間、ユーザデータ書き込み用として利用できる書き込みバッファ(WB)領域31の容量はXクラスタ分である。チャネル(チャネル0(Ch.0)〜チャネル7(Ch.7))はコンパクションされた有効データの書き込みで占有されているため、書き込みバッファ(WB)領域31からNANDフラッシュメモリ100〜131への書き込みは行えないが、ホストからのデータ転送は残りXクラスタ分の書き込みバッファ(WB)領域31にユーザデータが溜まりきるまで維持することができる。この間、書き込み可能になったクラスタ単位のデータは、書き込み/読み出しコントローラ41に通知しておくことができ、コンパクションされた2Xクラスタ分の有効データのNANDフラッシュメモリ100〜131への書き込みが終わると、Xクラスタ分のユーザデータをNANDフラッシュメモリ100〜131へ書き込むことができる。コンパクション処理中は、この2種類の書き込みを交互に繰り返す。
コンパクション処理が完了すると、バッファコントローラ42は、コンパクションバッファ(CB)領域32のうちXクラスタ分を解放し、新たなユーザデータの書き込みバッファ(WB)領域31として割り当てる。すなわち、データ書き込み処理実行状態に戻り、ユーザデータの書き込みバッファ(WB)領域31のバッファ容量は2Xクラスタ分に戻る。
以上に述べた、ユーザデータ書き込み処理およびコンパクション処理の様子を図6のフローチャートを用いて詳細に説明する。
(ユーザデータ書き込み処理)
まず、ユーザデータ書き込み処理実行時には、ユーザデータの書き込みバッファ(WB)領域31は2X(=256)クラスタ分、コンパクションバッファ(CB)領域32はX(=128)クラスタ分のバッファ容量を確保する(図6:ステップS101)。なお、コンパクション処理に入る前の初期設定としては、書き込みバッファ(WB)領域31のバッファ容量は少なくともコンパクションバッファ(CB)領域32のバッファ容量より大きくなるように確保しておく。ステップS102にて、ホストから転送されたユーザデータが書き込みバッファ(WB)領域31にX(=128)クラスタ分溜まったか否か(ステップS102:No)が判定され、X(=128)クラスタ分溜まった(ステップS102:Yes)場合は、X(=128)クラスタ分のユーザデータをNANDフラッシュメモリ100〜131へ書き込む(プログラム)(ステップS103)。その後、書き込みバッファ(WB)領域31の書き込みが済んだX(=128)クラスタ分の領域を解放する(ステップS104)。なお、書き込みが済んだ領域は一旦全て解放し、次のステップS105の判定にかかわらずコンパクションバッファ(CB)領域32に渡す必要がない領域がある場合は、書き込みバッファ(WB)領域31として再利用してもよい。そして、ステップS105にて、コンパクション処理開始の要件が判定される。コンパクション処理開始の要件はNANDフラッシュメモリ100〜131上のフリーブロックの数が足りない、即ち所定の数以下となっているかどうかであり、フリーブロックの数が所定の数以下の場合コンパクション処理が開始される(ステップS105:Yes)。要件を満たさない場合(ステップS105:No)は、ステップS101に戻る。
まず、ユーザデータ書き込み処理実行時には、ユーザデータの書き込みバッファ(WB)領域31は2X(=256)クラスタ分、コンパクションバッファ(CB)領域32はX(=128)クラスタ分のバッファ容量を確保する(図6:ステップS101)。なお、コンパクション処理に入る前の初期設定としては、書き込みバッファ(WB)領域31のバッファ容量は少なくともコンパクションバッファ(CB)領域32のバッファ容量より大きくなるように確保しておく。ステップS102にて、ホストから転送されたユーザデータが書き込みバッファ(WB)領域31にX(=128)クラスタ分溜まったか否か(ステップS102:No)が判定され、X(=128)クラスタ分溜まった(ステップS102:Yes)場合は、X(=128)クラスタ分のユーザデータをNANDフラッシュメモリ100〜131へ書き込む(プログラム)(ステップS103)。その後、書き込みバッファ(WB)領域31の書き込みが済んだX(=128)クラスタ分の領域を解放する(ステップS104)。なお、書き込みが済んだ領域は一旦全て解放し、次のステップS105の判定にかかわらずコンパクションバッファ(CB)領域32に渡す必要がない領域がある場合は、書き込みバッファ(WB)領域31として再利用してもよい。そして、ステップS105にて、コンパクション処理開始の要件が判定される。コンパクション処理開始の要件はNANDフラッシュメモリ100〜131上のフリーブロックの数が足りない、即ち所定の数以下となっているかどうかであり、フリーブロックの数が所定の数以下の場合コンパクション処理が開始される(ステップS105:Yes)。要件を満たさない場合(ステップS105:No)は、ステップS101に戻る。
(コンパクション処理)
ステップS105において、コンパクション処理開始の要件が満たされる(ステップS105:Yes)と、書き込みバッファ(WB)領域31のX(=128)クラスタ分がコンパクションバッファ(CB)領域32として割り当てられる(ステップS106)。なお、ステップS104で解放した書き込みバッファ(WB)領域31の一部を書き込みバッファ(WB)領域31として再利用する場合は、Xクラスタ分の領域から再利用する分を除いた領域をコンパクションバッファ(CB)領域32として割り当てればよい。ここでは、説明を簡単にするため、書き込みバッファ(WB)領域31のX(=128)クラスタ分がコンパクションバッファ(CB)領域32として追加的に割り当てられたとして、以下説明する。従って、書き込みバッファ(WB)領域31はX(=128)クラスタ分、コンパクションバッファ(CB)領域32は2X(=256)クラスタ分のバッファ容量を確保することになる(ステップS106)。そして、NANDフラッシュメモリ100〜131のコンパクション元ブロックから有効データをコンパクションバッファ(CB)領域32上に読み出し(ステップS107)、コンパクションバッファ(CB)領域32上で纏められて2Xクラスタ分(1論理ページ分)のデータ量に達した有効データは、再びNANDフラッシュメモリ100〜131に書き込まれる(プログラム)(ステップS108)。このコンパクション処理(ステップS107およびS108)をN回繰り返すまで(ステップS109:No)実行し、N回実行すると(ステップS109:Yes)、ステップS110にてコンパクション処理を終了するか否かが判定される。コンパクション処理の終了は、コンパクション処理によって十分な数のフリーブロックが得られたとき、即ち、予め定めた一定数のフリーブロックが得られた場合に判定される。従って、N回のコンパクション処理で一定数のフリーブロックが得られた場合はコンパクション処理を終了して(ステップS110:Yes)、ステップS101に戻ってユーザデータ書き込み処理を再開する。一方、一定数のフリーブロックが得られなかった場合(ステップS110:No)は、ステップS111に進む。ステップS111では、フリーブロックの有無が判定される。
ステップS105において、コンパクション処理開始の要件が満たされる(ステップS105:Yes)と、書き込みバッファ(WB)領域31のX(=128)クラスタ分がコンパクションバッファ(CB)領域32として割り当てられる(ステップS106)。なお、ステップS104で解放した書き込みバッファ(WB)領域31の一部を書き込みバッファ(WB)領域31として再利用する場合は、Xクラスタ分の領域から再利用する分を除いた領域をコンパクションバッファ(CB)領域32として割り当てればよい。ここでは、説明を簡単にするため、書き込みバッファ(WB)領域31のX(=128)クラスタ分がコンパクションバッファ(CB)領域32として追加的に割り当てられたとして、以下説明する。従って、書き込みバッファ(WB)領域31はX(=128)クラスタ分、コンパクションバッファ(CB)領域32は2X(=256)クラスタ分のバッファ容量を確保することになる(ステップS106)。そして、NANDフラッシュメモリ100〜131のコンパクション元ブロックから有効データをコンパクションバッファ(CB)領域32上に読み出し(ステップS107)、コンパクションバッファ(CB)領域32上で纏められて2Xクラスタ分(1論理ページ分)のデータ量に達した有効データは、再びNANDフラッシュメモリ100〜131に書き込まれる(プログラム)(ステップS108)。このコンパクション処理(ステップS107およびS108)をN回繰り返すまで(ステップS109:No)実行し、N回実行すると(ステップS109:Yes)、ステップS110にてコンパクション処理を終了するか否かが判定される。コンパクション処理の終了は、コンパクション処理によって十分な数のフリーブロックが得られたとき、即ち、予め定めた一定数のフリーブロックが得られた場合に判定される。従って、N回のコンパクション処理で一定数のフリーブロックが得られた場合はコンパクション処理を終了して(ステップS110:Yes)、ステップS101に戻ってユーザデータ書き込み処理を再開する。一方、一定数のフリーブロックが得られなかった場合(ステップS110:No)は、ステップS111に進む。ステップS111では、フリーブロックの有無が判定される。
コンパクション処理によって十分な数のフリーブロックが得られはしなかったものの、フリーブロックが存在する場合(ステップS111:Yes)は、ステップS112に進んでユーザデータ書き込みを行う。これは、コンパクション処理実行時においてもユーザデータ書き込みが全くできない期間をなるべく作らないようにするためである。ステップS112にて、ホストから転送されたユーザデータが書き込みバッファ(WB)領域31にX(=128)クラスタ分溜まったか否(ステップS112:No)が判定され、X(=128)クラスタ分溜まった(ステップS112:Yes)場合は、X(=128)クラスタ分のユーザデータをNANDフラッシュメモリ100〜131へ書き込む(プログラム)(ステップS113)。その後、書き込みバッファ(WB)領域31の書き込みが済んだX(=128)クラスタ分の領域を解放し(ステップS114)、再び、書き込みバッファ(WB)領域31として128クラスタ分、コンパクションバッファ(CB)領域32として256クラスタ分のバッファ容量がそれぞれ確保される(ステップS106)。このとき、書き込みバッファ(WB)領域31は空になっていることをホストインターフェース部2は知ることになるので、その後ホストから転送されたユーザデータが書き込みバッファ(WB)領域31に蓄えられることになる。さらにステップS107に進み、再びコンパクション処理を行う。一方、例外的なケースであるが、ステップS111において、フリーブロックが全く存在しない場合(ステップS111:No)は、ステップS107に戻りフリーブロックを確保するまでコンパクション処理を繰り返す。以上で図6のフローチャートの説明を終わる。
コンパクション処理実行時にも、ユーザデータのNANDフラッシュメモリ100〜131への書き込みは、1回の並列書き込みによってXクラスタ分ずつしか行えない。すなわち、コンパクションにより2Xクラスタ分の有効データをコンパクションバッファ(CB)領域32にコピーしているときであっても、ホストからのユーザデータのNANDフラッシュメモリ100〜131への書き込みは1回の並列書き込みによってXクラスタ分ずつしか行えない。従って、本実施形態のデータバッファ3の構成におけるコンパクション処理実行時の書き込み性能は、書き込みバッファ(WB)領域31およびコンパクションバッファ(CB)領域32それぞれに2Xクラスタ分ずつのバッファ容量を常時固定的に割り当てた合計4Xクラスタ分のバッファ容量を使用した場合と遜色無い。すなわち、ユーザデータの書き込みバッファ(WB)領域31とコンパクションバッファ(CB)領域32とが一部のバッファ領域を共用する制御を行うことで、それぞれの処理を効率よく実施するのに必要なバッファ量を独立に確保した場合よりもデータバッファ3のトータルのバッファ容量を削減することができ、装置のコストを下げることができる。このことは、データバッファ3を、容量に余裕があるDRAMではなく容量に制限があるSRAMで構成した場合などに特に有利である。すなわち、SRAMの面積を節約することが可能となる。
以上説明したように、不揮発性メモリを用いた半導体記憶装置において、ユーザデータ書き込み用バッファとコンパクション用バッファとがバッファの一部を共用する制御を行うことで、トータルのバッファ容量を削減することが可能である。コンパクション処理を行う必要があるときには、ユーザデータ書き込み用バッファの一部をコンパクション用バッファとして振り分け、コンパクション処理が終われば、コンパクション用に振り分けられていたリソースをユーザデータ書き込み用に戻す、という制御を行う。このようなバッファ制御を行うことで、コンパクションが起きていないときには、ユーザデータ書き込みを効率よく行うために必要なバッファ容量、即ち、フロントエンドとNANDフラッシュメモリの両方のスループットをそろえて最高性能を出すために必要なバッファ容量を確保することができる。また、コンパクションを行っているときには、コンパクションを効率よく行うために必要なバッファ容量を確保でき、かつユーザデータ書き込み性能の極端な低下を抑えることができる。
(第2の実施形態)
本実施形態においては、図1に示したSSD1の構成において、コンパクションデータ書き込み先と、ユーザデータ書き込み先が同一ページ、もしくは少なくとも同一ブロックに混在するような場合におけるコンパクション処理が行われる。
本実施形態においては、図1に示したSSD1の構成において、コンパクションデータ書き込み先と、ユーザデータ書き込み先が同一ページ、もしくは少なくとも同一ブロックに混在するような場合におけるコンパクション処理が行われる。
書き込みバッファ(WB)領域31とコンパクションバッファ(CB)領域32を合わせたバッファ容量の総量としては256(=2X)クラスタ分の容量を用意する。図7は、データ書き込み処理実行時とコンパクション処理実行時におけるデータバッファ3の容量配分の一例を示す図である。このとき例えば、図7に示すように、データ書き込み処理実行時には書き込みバッファ(WB)領域31に最大2Xクラスタ、コンパクション処理実行時には書き込みバッファ(WB)領域31にYクラスタ、コンパクションバッファ(CB)領域32にZクラスタ割り当てる。Y+Z=2Xとして、バッファの総量が2Xクラスタになるようにデータバッファ3のバッファ領域を設定する。コンパクション処理実行時にはコンパクションバッファ(CB)領域32に最大2Xクラスタを割り当てることができる。
コンパクション処理が発生せず、ユーザデータの書き込みだけを行っているときには、書き込みバッファ(WB)領域31に2X(256)クラスタを割り当てることができ、第1の実施形態と同じ構成で、同様にダブルバッファリングを行ってホストインターフェース部2からのデータ転送速度を維持した書き込み性能が出せる。
コンパクション処理が発生すると、ユーザデータ書き込み完了によって解放された書き込みバッファ(WB)領域31のXクラスタの全部または一部であるYクラスタ分をコンパクションバッファ(CB)領域32として割り当てる。バッファコントローラ42は、コンパクションコントローラ43から通知される有効クラスタデータの論理アドレスを元に、書き込み/読み出しコントローラ41に対して、メディア上の有効なデータをコンパクションバッファ(CB)領域32へ読み出すよう指示する。コンパクションバッファ(CB)領域32上でクラスタ単位のデータが溜まると、バッファコントローラ42は当該クラスタデータに対応するエントリを書き込み/読み出しコントローラ41に通知する。書き込み/読み出しコントローラ41は、書き込みバッファ(WB)領域31上のユーザデータと、コンパクションバッファ(CB)領域32上のコンパクションデータ、合わせて2Xクラスタ分(1論理ページ分)のデータが溜まったら、NANDコントローラ50〜57へ書き込みを行う(図8)。コンパクション処理を行う期間は、このように書き込みバッファ(WB)領域31からとコンパクションバッファ(CB)領域32からとの2種類の書き込みを、同時に混在させてもよい。
コンパクション処理が完了すると、バッファコントローラ42は、コンパクションに用いていたZクラスタ分の領域を解放し、新たなユーザデータの書き込み用バッファ、即ち書き込みバッファ(WB)領域31として再び割り当てる(図7)。
以上に述べた、ユーザデータ書き込み処理およびコンパクション処理の様子を図9のフローチャートを用いて詳細に説明する。
(ユーザデータ書き込み処理)
まず、ユーザデータ書き込み処理実行時には、ユーザデータの書き込みバッファ(WB)領域31は2X(=256)クラスタ分のみのバッファ容量を確保する(図9:ステップS201)。コンパクションバッファ(CB)領域32は確保せずバッファ容量の合計は、2X(=256)クラスタ分である。ステップS202にて、ホストから転送されたユーザデータが書き込みバッファ(WB)領域31にX(=128)クラスタ分溜まったか否か(ステップS202:No)が判定され、X(=128)クラスタ分溜まった(ステップS202:Yes)場合は、X(=128)クラスタ分のユーザデータをNANDフラッシュメモリ100〜131へ書き込む(プログラム)(ステップS203)。その後、書き込みバッファ(WB)領域31の書き込みが済んだX(=128)クラスタ分の領域を解放する(ステップS204)。そして、ステップS205にて、コンパクション処理開始の要件が判定される。コンパクション処理開始の要件はNANDフラッシュメモリ100〜131上のフリーブロックの数が足りない、即ち所定の数以下となっているかどうかであり、フリーブロックの数が所定の数以下の場合コンパクション処理が開始される(ステップS205:Yes)。要件を満たさない場合(ステップS205:No)は、ステップS201に戻る。
まず、ユーザデータ書き込み処理実行時には、ユーザデータの書き込みバッファ(WB)領域31は2X(=256)クラスタ分のみのバッファ容量を確保する(図9:ステップS201)。コンパクションバッファ(CB)領域32は確保せずバッファ容量の合計は、2X(=256)クラスタ分である。ステップS202にて、ホストから転送されたユーザデータが書き込みバッファ(WB)領域31にX(=128)クラスタ分溜まったか否か(ステップS202:No)が判定され、X(=128)クラスタ分溜まった(ステップS202:Yes)場合は、X(=128)クラスタ分のユーザデータをNANDフラッシュメモリ100〜131へ書き込む(プログラム)(ステップS203)。その後、書き込みバッファ(WB)領域31の書き込みが済んだX(=128)クラスタ分の領域を解放する(ステップS204)。そして、ステップS205にて、コンパクション処理開始の要件が判定される。コンパクション処理開始の要件はNANDフラッシュメモリ100〜131上のフリーブロックの数が足りない、即ち所定の数以下となっているかどうかであり、フリーブロックの数が所定の数以下の場合コンパクション処理が開始される(ステップS205:Yes)。要件を満たさない場合(ステップS205:No)は、ステップS201に戻る。
(コンパクション処理)
ステップS205において、コンパクション処理開始の要件が満たされる(ステップS205:Yes)と、書き込みバッファ(WB)領域31のX(=128)クラスタ分がコンパクションバッファ(CB)領域32として割り当てられる(ステップS206)。すなわち、このときは図7のY=Z=X(=128)である。ステップS207にて、ホストから転送されたユーザデータが書き込みバッファ(WB)領域31にX(=128)クラスタ分溜まったか否か(ステップS207:No)が判定され、Xクラスタ分溜まった(ステップS207:Yes)場合は、Xクラスタ分のユーザデータをNANDフラッシュメモリ100〜131へ書き込む(プログラム)(ステップS208)。その後、書き込みバッファ(WB)領域31の書き込みが済んだXクラスタ分の領域を解放する(ステップS209)。さらに、ステップS210でフリーブロックの有無が判定される。
ステップS205において、コンパクション処理開始の要件が満たされる(ステップS205:Yes)と、書き込みバッファ(WB)領域31のX(=128)クラスタ分がコンパクションバッファ(CB)領域32として割り当てられる(ステップS206)。すなわち、このときは図7のY=Z=X(=128)である。ステップS207にて、ホストから転送されたユーザデータが書き込みバッファ(WB)領域31にX(=128)クラスタ分溜まったか否か(ステップS207:No)が判定され、Xクラスタ分溜まった(ステップS207:Yes)場合は、Xクラスタ分のユーザデータをNANDフラッシュメモリ100〜131へ書き込む(プログラム)(ステップS208)。その後、書き込みバッファ(WB)領域31の書き込みが済んだXクラスタ分の領域を解放する(ステップS209)。さらに、ステップS210でフリーブロックの有無が判定される。
ステップS210でフリーブロックが存在する場合(ステップS210:Yes)は、書き込みバッファ(WB)領域31を例えば32クラスタ分残して、残りをコンパクションバッファ(CB)領域32に割り当て、コンパクションバッファ(CB)領域32には224クラスタ分の容量が確保される(ステップS211)。このときは図7のY=32、Z=224である。書き込みバッファ(WB)領域31を32クラスタ分残すのは一例であり、コンパクションバッファ(CB)領域32の容量が書き込みバッファ(WB)領域31に残った容量より多ければよく、書き込みバッファ(WB)領域31とコンパクションバッファ(CB)領域32の容量比はこれに限定されない。そして、NANDフラッシュメモリ100〜131のコンパクション元ブロックから有効データをコンパクションバッファ(CB)領域32上にコンパクションバッファ(CB)領域32の容量分読み出す(ステップS212)。ステップS213にて、ホストから転送されたユーザデータが書き込みバッファ(WB)領域31に32クラスタ分溜まったか否か(ステップS213:No)が判定される。書き込みバッファ(WB)領域31に32クラスタ分溜まった(ステップS213:Yes)場合は、図8に示すように、書き込みバッファ(WB)領域31の32クラスタ分とコンパクションバッファ(CB)領域32の224クラスタ分との合わせて2Xクラスタ分(1論理ページ分)のデータをNANDフラッシュメモリ100〜131へ書き込む(プログラム)(ステップS214)。その後、ステップS215にて、コンパクション処理を終了するか否かが判定される。コンパクション処理の終了は、コンパクション処理によって十分な数のフリーブロックが得られたとき、即ち、予め定めた一定数のフリーブロックが得られた場合に判定される。従って、上記コンパクション処理で一定数のフリーブロックが得られた場合はコンパクション処理を終了して(ステップS215:Yes)、ステップS201に戻ってユーザデータ書き込み処理を再開する。一方、一定数のフリーブロックが得られなかった場合(ステップS215:No)は、ステップS210に進んで、再度フリーブロックの有無が判定される。
例外的なケースであるが、ステップS210においてフリーブロックが存在しない場合(ステップS210:No)は、書き込みバッファ(WB)領域31に割り当てていた容量を全てコンパクションバッファ(CB)領域32に割り当てて、コンパクションバッファ(CB)領域32の容量を2X(=256)クラスタ分として(ステップS216)、コンパクション処理のみを繰り返す。具体的には、NANDフラッシュメモリ100〜131のコンパクション元ブロックから有効データをコンパクションバッファ(CB)領域32上に読み出し(ステップS217)、コンパクションバッファ(CB)領域32上で纏められて2Xクラスタ分(1論理ページ分)のデータ量に達した有効データは、再びNANDフラッシュメモリ100〜131に書き込まれる(プログラム)(ステップS218)。ステップS218の後、ステップS215と同様にコンパクション処理を終了するか否かが判定される(ステップS219)。一定数のフリーブロックが得られた場合はコンパクション処理を終了して(ステップS219:Yes)、ステップS201に戻ってユーザデータ書き込み処理を再開する。一方、一定数のフリーブロックが得られなかった場合(ステップS219:No)は、ステップS216にもどってコンパクション処理を再度行う。
以上説明したように、コンパクションデータ書き込み先と、ユーザデータ書き込み先が同一ページ、もしくは少なくとも同一ブロックに混在するような場合においても、不揮発性メモリを用いた半導体記憶装置において、ユーザデータ書き込み用バッファと、コンパクション用バッファの一部を共用し制御を行うことで、トータルのバッファ容量を削減することが可能である。このようなバッファ制御を行うことで、コンパクションが起きていないときには、ユーザデータ書き込みを効率よく行うために必要なバッファ容量、即ち、フロントエンドとNANDフラッシュメモリの両方のスループットをそろえて最高性能を出すために必要なバッファ容量を確保することができる。また、コンパクションを行っているときには、コンパクションを効率よく行うために必要なバッファ容量を確保でき、かつユーザデータ書き込み性能の極端な低下を抑えることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 SSD、2 ホストインターフェース部、3 データバッファ、4 制御部、50〜57 NANDコントローラ、100〜131 NANDフラッシュメモリ。
Claims (15)
- 半導体記憶部とメモリコントローラを有する半導体記憶装置であって、
前記メモリコントローラは、
ホストインターフェース部と、
前記ホストインターフェース部から出力される書込みデータを格納する第1バッファ領域と、前記半導体記憶部から読み出した読出しデータを格納する第2バッファ領域と、を有するバッファ部と、
前記第1バッファ領域および前記第2バッファ領域の容量を制御するバッファ制御部と、
前記第1バッファ領域に格納された前記書込みデータを前記半導体記憶部に書き込むように制御する書き込み/読み出し制御部と、
前記書き込み/読み出し制御部を制御して、前記半導体記憶部に格納された有効データを前記第2バッファ領域に読み出し、前記第2バッファ領域に読み出された前記有効データを前記半導体記憶部に書き込むコンパクション処理を実行するコンパクション制御部と、を有し、
前記書き込み/読み出し制御部が前記第1バッファ領域に格納された前記書込みデータを前記半導体記憶部に書き込んだ後、前記バッファ制御部は前記第1バッファ領域の少なくとも一部を前記第2バッファ領域に割り当てる割り当て処理を実行し、当該割り当て処理の後に、前記コンパクション制御部はコンパクション処理を行う
ことを特徴とする半導体記憶装置。 - 前記割り当て処理の前において、前記第1バッファ領域の容量は前記第2バッファ領域の容量より大きい
ことを特徴とする請求項1に記載の半導体記憶装置。 - 前記コンパクション処理部が前記コンパクション処理を複数回実行した後、前記書き込み/読出し制御部が、前記割り当てを変更せずに、前記第1バッファ領域に格納された前記書込みデータを前記半導体記憶部に書き込む
ことを特徴とする請求項1または2に記載の半導体記憶装置。 - 前記書き込み/読出し制御部は、前記第1バッファ領域に格納された前記書込みデータを第1のデータサイズ単位で前記半導体記憶部に書き込み、前記第1バッファ領域の容量は第1のデータサイズの2倍以上である
ことを特徴とする請求項1乃至3いずれか1項に記載の半導体記憶装置。 - 前記コンパクション制御部は、前記第2バッファ領域に読み出された前記有効データを第2のデータサイズ単位で前記半導体記憶部に書き込み、第2のデータサイズは第1のデータサイズの2倍である
ことを特徴とする請求項4に記載の半導体記憶装置。 - 前記メモリコントローラは、前記コンパクション処理において、前記第2バッファ領域に読み出された前記有効データと共に前記第1バッファ領域に格納された前記書込みデータも前記半導体記憶部に書き込む
ことを特徴とする請求項1に記載の半導体記憶装置。 - 前記バッファ制御部は、前記コンパクション処理の終了後に、前記第2バッファ領域を全て前記第1バッファ領域に割り当てる
ことを特徴とする請求項1乃至6のいずれか1項に記載の半導体記憶装置。 - 半導体記憶部と、ホストインターフェース部と、前記ホストインターフェース部から出力される書込みデータを格納する第1バッファ領域と、前記半導体記憶部から読み出した読み出しデータを格納する第2バッファ領域と、を有するバッファ部と、前記第1バッファ領域および前記第2バッファ領域の容量を制御するバッファ制御部と、を備える半導体記憶装置の制御方法であって、
前記書込みデータを前記半導体記憶部に書き込み、
前記書き込みの後に、前記第1バッファ領域の少なくとも一部を前記第2バッファ領域に割り当て、
前記割り当ての後に、前記半導体記憶部に格納された有効データを前記第2バッファ領域に読み出し、前記第2バッファ領域に読み出された前記有効データを前記半導体記憶部に書き込むコンパクション処理を行う、
ことを特徴とする半導体記憶装置の制御方法。 - 前記割り当ての前において、前記第1バッファ領域の容量は前記第2バッファ領域の容量より大きい
ことを特徴とする請求項8に記載の半導体記憶装置の制御方法。 - 前記コンパクション処理を複数回実行した後、前記割り当てを変更せずに前記第1バッファ領域に格納された前記書き込みデータを前記半導体記憶部に書き込む
ことを特徴とする請求項8または9に記載の半導体記憶装置の制御方法。 - 前記第1バッファ領域の容量の半分以下の第1のデータサイズ単位で、前記書込みデータを前記半導体記憶部に書き込む、
ことを特徴とする請求項8乃至10のいずれか1項に記載の半導体記憶装置の制御方法。 - 第1のデータサイズ単位の2倍の第2のデータサイズ単位で、前記第2バッファ領域に読み出された前記有効データを前記半導体記憶部に書き込む、
ことを特徴とする請求項11に記載の半導体記憶装置の制御方法。 - 前記コンパクション処理において、前記第2バッファ領域に読み出された前記有効データと共に前記第1バッファ領域に格納された前記書き込みデータも前記半導体記憶部に書き込む
ことを特徴とする請求項8に記載の半導体記憶装置の制御方法。 - 前記コンパクション処理の終了後に、前記第2バッファ領域を全て前記第1バッファ領域に割り当てる
ことを特徴とする請求項8乃至13のいずれか1項に記載の半導体記憶装置の制御方法。 - 半導体記憶部に接続され、前記半導体記憶を制御するメモリコントローラであって、
ホストインターフェース部と、
前記ホストインターフェース部から出力される書込みデータを格納する第1バッファ領域と、前記半導体記憶部から読み出した読出しデータを格納する第2バッファ領域と、を有するバッファ部と、
前記第1バッファ領域および前記第2バッファ領域の容量を制御するバッファ制御部と、
前記第1バッファ領域に格納された前記書込みデータを前記半導体記憶部に書き込むように制御する書き込み/読み出し制御部と、
前記書き込み/読み出し制御部を制御して、前記半導体記憶部に格納された有効データを前記第2バッファ領域に読み出し、前記第2バッファ領域に読み出された前記有効データを前記半導体記憶部に書き込むコンパクション処理を実行するコンパクション制御部と、を有し、
前記書き込み/読み出し制御部が前記第1バッファ領域に格納された前記書込みデータを前記半導体記憶部に書き込んだ後、前記バッファ制御部は前記第1バッファ領域の少なくとも一部を前記第2バッファ領域に割り当てる割り当て処理を実行し、当該割り当て処理の後に、前記コンパクション制御部はコンパクション処理を行う
ことを特徴とするメモリコントローラ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011288484A JP2013137665A (ja) | 2011-12-28 | 2011-12-28 | 半導体記憶装置、半導体記憶装置の制御方法、およびメモリコントローラ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011288484A JP2013137665A (ja) | 2011-12-28 | 2011-12-28 | 半導体記憶装置、半導体記憶装置の制御方法、およびメモリコントローラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013137665A true JP2013137665A (ja) | 2013-07-11 |
Family
ID=48913332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011288484A Pending JP2013137665A (ja) | 2011-12-28 | 2011-12-28 | 半導体記憶装置、半導体記憶装置の制御方法、およびメモリコントローラ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013137665A (ja) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016151868A (ja) * | 2015-02-17 | 2016-08-22 | 株式会社東芝 | 記憶装置及び記憶装置を含む情報処理システム |
JP2018142237A (ja) * | 2017-02-28 | 2018-09-13 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP2018142236A (ja) * | 2017-02-28 | 2018-09-13 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
CN108628754A (zh) * | 2017-03-22 | 2018-10-09 | 慧荣科技股份有限公司 | 一般及垃圾回收的数据存取方法以及使用该方法的装置 |
US10540117B2 (en) | 2016-09-05 | 2020-01-21 | Toshiba Memory Corporation | Storage system including a plurality of networked storage nodes |
JP2020035128A (ja) * | 2018-08-29 | 2020-03-05 | キオクシア株式会社 | メモリシステム |
CN111949560A (zh) * | 2019-05-16 | 2020-11-17 | 北京兆易创新科技股份有限公司 | 一种数据写入方法、装置及存储设备 |
JP2020198128A (ja) * | 2020-08-31 | 2020-12-10 | キオクシア株式会社 | メモリシステム |
JP2020205077A (ja) * | 2020-08-31 | 2020-12-24 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11847050B2 (en) | 2020-09-03 | 2023-12-19 | Kioxia Corporation | Nonvolatile memory, memory system, and control method of nonvolatile memory |
-
2011
- 2011-12-28 JP JP2011288484A patent/JP2013137665A/ja active Pending
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016151868A (ja) * | 2015-02-17 | 2016-08-22 | 株式会社東芝 | 記憶装置及び記憶装置を含む情報処理システム |
US10540117B2 (en) | 2016-09-05 | 2020-01-21 | Toshiba Memory Corporation | Storage system including a plurality of networked storage nodes |
JP2018142237A (ja) * | 2017-02-28 | 2018-09-13 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP2018142236A (ja) * | 2017-02-28 | 2018-09-13 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
CN108628754A (zh) * | 2017-03-22 | 2018-10-09 | 慧荣科技股份有限公司 | 一般及垃圾回收的数据存取方法以及使用该方法的装置 |
JP2020035128A (ja) * | 2018-08-29 | 2020-03-05 | キオクシア株式会社 | メモリシステム |
CN111949560A (zh) * | 2019-05-16 | 2020-11-17 | 北京兆易创新科技股份有限公司 | 一种数据写入方法、装置及存储设备 |
CN111949560B (zh) * | 2019-05-16 | 2024-01-23 | 兆易创新科技集团股份有限公司 | 一种数据写入方法、装置及存储设备 |
JP2020198128A (ja) * | 2020-08-31 | 2020-12-10 | キオクシア株式会社 | メモリシステム |
JP2020205077A (ja) * | 2020-08-31 | 2020-12-24 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP2022051902A (ja) * | 2020-08-31 | 2022-04-01 | キオクシア株式会社 | メモリシステム |
JP7132291B2 (ja) | 2020-08-31 | 2022-09-06 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7342163B2 (ja) | 2020-08-31 | 2023-09-11 | キオクシア株式会社 | メモリシステム |
US11847050B2 (en) | 2020-09-03 | 2023-12-19 | Kioxia Corporation | Nonvolatile memory, memory system, and control method of nonvolatile memory |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2013137665A (ja) | 半導体記憶装置、半導体記憶装置の制御方法、およびメモリコントローラ | |
CN109144887B (zh) | 存储器系统及控制非易失性存储器的控制方法 | |
JP7366795B2 (ja) | メモリシステムおよび制御方法 | |
JP5613260B2 (ja) | フラッシュ型メモリ・システムにおけるアクセス競合の低減方法、プログラム及びシステム | |
EP1561168B1 (en) | Method and apparatus for splitting a logical block | |
KR101324688B1 (ko) | 영구 가비지 컬렉션을 갖는 메모리 시스템 | |
US9223693B2 (en) | Memory system having an unequal number of memory die on different control channels | |
US9336133B2 (en) | Method and system for managing program cycles including maintenance programming operations in a multi-layer memory | |
US9734911B2 (en) | Method and system for asynchronous die operations in a non-volatile memory | |
EP3176688B1 (en) | Method and system for asynchronous die operations in a non-volatile memory | |
US10049040B2 (en) | Just in time garbage collection | |
JP4844639B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2018049522A (ja) | メモリシステム及び制御方法 | |
KR20120012375A (ko) | 메모리 관리 장치, 정보 처리 장치 및 메모리 관리 방법 | |
KR20100037416A (ko) | 반도체 스토리지 시스템 및 그 제어 방법 | |
EP1576478A2 (en) | Method and apparatus for grouping pages within a block | |
JP2021033849A (ja) | メモリシステムおよび制御方法 | |
US20230091792A1 (en) | Memory system and method of controlling nonvolatile memory | |
JP2021033848A (ja) | メモリシステムおよび制御方法 | |
JP2022171208A (ja) | メモリシステムおよび制御方法 | |
CN103942148A (zh) | 非易失性存储器的损耗均衡系统及方法 | |
CN106598504A (zh) | 数据存储方法及装置 | |
US9304906B2 (en) | Memory system, controller and control method of memory | |
CN111813326A (zh) | 具多数据流写入的固态存储装置及其相关写入方法 | |
KR102088945B1 (ko) | 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스 |