JP5178857B2 - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP5178857B2 JP5178857B2 JP2011030888A JP2011030888A JP5178857B2 JP 5178857 B2 JP5178857 B2 JP 5178857B2 JP 2011030888 A JP2011030888 A JP 2011030888A JP 2011030888 A JP2011030888 A JP 2011030888A JP 5178857 B2 JP5178857 B2 JP 5178857B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- management unit
- address
- memory
- cache 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.)
- Expired - Fee Related
Links
Images
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は、SSD(Solid State Drive)100の構成例を示すブロック図である。SSD100は、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースを介してパーソナルコンピュータあるいはCPUコアなどのホスト装置1と接続され、ホスト装置1の外部メモリとして機能する。また、SSD100は、RS232Cインタフェース(RS232C I/F)などの通信インタフェース3を介して、デバッグ用/製造検査用機器200との間でデータを送受信することができる。SSD100は、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリと略す)10と、コントローラとしてのドライブ制御回路4と、揮発性半導体メモリとしてのDRAM20と、電源回路5と、状態表示用のLED6と、ドライブ内部の温度を検出する温度センサ7と、フューズ8とを備えている。
(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から、この論理ブロックに記憶されている論理トラックアドレスなどの所要情報を得るので、逆引きテーブルとして機能する。
場合に“1”である。
つぎに、図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構造管理テーブル(図示せず)を更新して、該当論理ブロックを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構造管理テーブル(図示せず)を更新して、該当ブロックを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)。
Claims (20)
- セクタ単位の書き込みデータを保持可能なキャッシュメモリと、
ページ単位でデータ書き込みを行い、前記ページ単位の2以上の自然数倍であるブロック単位でデータ消去を行う不揮発性半導体メモリと、
前記不揮発性半導体メモリにおいて前記セクタ単位の自然数倍である第1の管理単位でデータを記憶する第1の手段、前記不揮発性半導体メモリにおいて前記第1の管理単位の2以上の自然数倍である第2の管理単位でデータを記憶する第2の手段、前記キャッシュメモリに保持されるデータを前記第1の管理単位のアドレスで管理する第3の手段、及び前記キャッシュメモリに保持されるデータを前記第2の管理単位のアドレスで管理する第4の手段を有するコントローラと、を具備し、
前記キャッシュメモリは、前記第1の管理単位のアドレスでラインが決定され且つ各ラインは複数のウェイを有し、各々のエントリに前記第1の管理単位のアドレスに含まれるデータを保持可能なセットアソシアティブ方式で管理され、
前記第1の手段は、前記第1の管理単位のアドレスと前記不揮発性半導体メモリにおける前記第1の管理単位のデータの記憶位置とを関連付ける情報を含む第1の管理テーブルを備え、
前記第2の手段は、前記第2の管理単位のアドレスと前記不揮発性半導体メモリにおける前記第2の管理単位のデータの記憶位置を関連付ける情報を含む第2の管理テーブルを備え、
前記第3の手段は、前記エントリに登録された前記第1の管理単位のアドレス中で前記セクタ単位の有効データが保持されている位置を示す情報及び当該第1の管理単位のアドレスが所属する前記第2の管理単位のアドレスを含む第3の管理テーブルを備え、
前記第4の手段は、前記キャッシュメモリにおける前記第2の管理単位のアドレス間の登録順序を示す情報、前記キャッシュメモリにおいて前記第2の管理単位のアドレスに含まれる前記第1の管理単位のデータの個数、及び前記キャッシュメモリにおいて前記第2の管理単位のアドレス中で前記第1の管理単位の有効データが保持されている位置を含む第4の管理テーブルを備え、
前記コントローラは、
前記キャッシュメモリに保持されるデータが所属する前記第2の管理単位のアドレスの個数が所定の閾値を超えた場合、または、前記キャッシュメモリへのデータ書き込み処理を実行する際に前記第2の管理テーブルにおいて最後の空きウェイが使用される場合に、前記キャッシュメモリから前記不揮発性半導体メモリへのデータ追い出し処理を実行し、
前記キャッシュメモリから前記不揮発性半導体メモリへのデータ追い出し処理を実行する場合に、前記第4の管理テーブルに登録された順序が最も古い前記第2の管理単位のアドレスを選択し、前記キャッシュメモリにおいて当該第2の管理単位のアドレスに含まれるデータを追い出し処理の対象とし、
追い出し対象として選択した前記第2の管理単位のアドレスに含まれる前記第1の管理単位のデータの個数が前記キャッシュメモリにおいて所定の閾値未満である場合は、前記第1の管理単位のデータとして前記不揮発性半導体メモリに記憶し、前記キャッシュメモリにおいて所定の閾値以上である場合は、前記第2の管理単位のデータとして前記不揮発性半導体メモリに記憶する、
ことを特徴とするメモリシステム。 - セクタ単位の書き込みデータを保持可能なキャッシュメモリと、
ページ単位でデータ書き込みを行い、前記ページ単位の2以上の自然数倍であるブロック単位でデータ消去を行う不揮発性半導体メモリと、
前記不揮発性半導体メモリにおいて前記セクタ単位の自然数倍である第1の管理単位でデータを記憶する第1の手段及び前記第1の管理単位の2以上の自然数倍である第2の管理単位でデータを記憶する第2の手段を有するコントローラと、を具備し、
前記コントローラは、
前記キャッシュメモリに保持されるデータを、前記第1の管理単位のアドレスで管理する第3の手段及び前記第2の管理単位のアドレスで管理する第4の手段を有し、前記キャッシュメモリに保持されるデータが所属する前記第2の管理単位のアドレスの個数が所定の閾値を超えた場合に、前記キャッシュメモリから前記不揮発性半導体メモリへのデータ追い出し処理を実行する、
ことを特徴とするメモリシステム。 - 前記コントローラは、前記キャッシュメモリから前記不揮発性半導体メモリへのデータ追い出し処理を実行する場合に、前記第4の手段に登録された順序が最も古い前記第2の管理単位のアドレスを選択し、当該第2の管理単位のアドレスに含まれるデータを追い出し処理の対象とすることを特徴とする請求項2に記載のメモリシステム。
- 前記第1の手段は、前記第1の管理単位のアドレスと前記不揮発性半導体メモリにおける前記第1の管理単位のデータの記憶位置とを関連付ける情報を含む第1の管理テーブルを備えることを特徴とする請求項2に記載のメモリシステム。
- 前記第2の手段は、前記第2の管理単位のアドレスと前記不揮発性半導体メモリにおける前記第2の管理単位のデータの記憶位置を関連付ける情報を含む第2の管理テーブルを備えることを特徴とする請求項2に記載のメモリシステム。
- 前記キャッシュメモリは、前記第1の管理単位のアドレスでラインが決定され且つ各ラインは複数のウェイを有し、各々のエントリに前記第1の管理単位のアドレスに含まれるデータを保持可能なセットアソシアティブ方式で管理され、
前記第3の手段は、前記エントリに登録された前記第1の管理単位のアドレス中で前記セクタ単位の有効データが保持されている位置を示す情報及び当該第1の管理単位のアドレスが所属する前記第2の管理単位のアドレスを含む第3の管理テーブルを備えることを特徴とする請求項2に記載のメモリシステム。 - 前記第4の手段は、前記キャッシュメモリにおける前記第2の管理単位のアドレス間の登録順序を示す情報、前記キャッシュメモリにおいて前記第2の管理単位のアドレスに含まれる前記第1の管理単位のデータの個数、及び前記キャッシュメモリにおいて前記第2の管理単位のアドレス中で前記第1の管理単位の有効データが保持されている位置を含む第4の管理テーブルを備えることを特徴とする請求項2に記載のメモリシステム。
- 前記コントローラは、前記キャッシュメモリへのデータ書き込み処理を実行する際に前記第2の管理テーブルにおいて最後の空きウェイが使用される場合、前記キャッシュメモリから前記不揮発性半導体メモリへのデータ追い出し処理を実行することを特徴とする請求項6に記載のメモリシステム。
- 前記コントローラは、前記第2の管理単位のアドレス毎に前記キャッシュメモリから前記不揮発性半導体メモリへのデータ追い出し処理を実行することを特徴とする請求項7に記載のメモリシステム。
- 前記コントローラは、追い出し対象として選択した前記第2の管理単位のアドレスに含まれる前記第1の管理単位のデータの個数が前記キャッシュメモリにおいて所定の閾値未満である場合は、前記第1の管理単位のデータとして前記不揮発性半導体メモリに記憶し、前記キャッシュメモリにおいて所定の閾値以上である場合は、前記第2の管理単位のデータとして前記不揮発性半導体メモリに記憶することを特徴とする請求項9に記載のメモリシステム。
- セクタ単位の書き込みデータを保持可能なキャッシュメモリと、
ページ単位でデータ書き込みを行い、前記ページ単位の2以上の自然数倍であるブロック単位でデータ消去を行う不揮発性半導体メモリと、
前記不揮発性半導体メモリにおいて前記セクタ単位の自然数倍である第1の管理単位でデータを記憶する第1の手段及び前記第1の管理単位の2以上の自然数倍である第2の管理単位でデータを記憶する第2の手段を有するコントローラと、を具備し、
前記キャッシュメモリは、前記第1の管理単位のアドレスでラインが決定され且つ各ラインは複数のウェイを有し、各々のエントリに前記第1の管理単位のアドレスに含まれるデータを保持可能なセットアソシアティブ方式で管理され、
前記コントローラは、前記キャッシュメモリへのデータ書き込み処理を実行する際に最後の空きウェイが使用される場合、前記キャッシュメモリから前記不揮発性半導体メモリへのデータ追い出し処理を実行することを特徴とするメモリシステム。 - 前記コントローラは、前記キャッシュメモリに保持されるデータを、前記第1の管理単位のアドレスで管理する第3の手段及び前記第2の管理単位のアドレスで管理する第4の手段を有することを特徴とする請求項11に記載のメモリシステム。
- 前記第1の手段は、前記第1の管理単位のアドレスと前記不揮発性半導体メモリにおける前記第1の管理単位のデータの記憶位置とを関連付ける情報を含む第1の管理テーブルを備えることを特徴とする請求項11に記載のメモリシステム。
- 前記第2の手段は、前記第2の管理単位のアドレスと前記不揮発性半導体メモリにおける前記第2の管理単位のデータの記憶位置を関連付ける情報を含む第2の管理テーブルを備えることを特徴とする請求項11に記載のメモリシステム。
- 前記第3の手段は、前記エントリに登録された前記第1の管理単位のアドレス中で前記セクタ単位の有効データが保持されている位置を示す情報及び当該第1の管理単位のアドレスが所属する前記第2の管理単位のアドレスを含む第3の管理テーブルを備えることを特徴とする請求項12に記載のメモリシステム。
- 前記第4の手段は、前記キャッシュメモリにおける前記第2の管理単位のアドレス間の登録順序を示す情報、前記キャッシュメモリにおいて前記第2の管理単位のアドレスに含まれる前記第1の管理単位のデータの個数、及び前記キャッシュメモリにおいて前記第2の管理単位のアドレス中で前記第1の管理単位の有効データが保持されている位置を含む第4の管理テーブルを備えることを特徴とする請求項12に記載のメモリシステム。
- 前記コントローラは、前記キャッシュメモリに保持されるデータが所属する前記第2の管理単位のアドレスの個数が所定の閾値を超えた場合に、前記キャッシュメモリから前記不揮発性半導体メモリへのデータ追い出し処理を実行することを特徴とする請求項12に記載のメモリシステム。
- 前記コントローラは、前記第2の管理単位のアドレス毎に前記キャッシュメモリから前記不揮発性半導体メモリへのデータ追い出し処理を実行することを特徴とする請求項12に記載のメモリシステム。
- 前記コントローラは、追い出し対象として選択した前記第2の管理単位のアドレスに含まれる前記第1の管理単位のデータの個数が前記キャッシュメモリにおいて所定の閾値未満である場合は、前記第1の管理単位のデータとして前記不揮発性半導体メモリに記憶し、前記キャッシュメモリにおいて所定の閾値以上である場合は、前記第2の管理単位のデータとして前記不揮発性半導体メモリに記憶することを特徴とする請求項18に記載のメモリシステム。
- 前記不揮発性半導体メモリは、NAND型フラッシュメモリであることを特徴とする請求項1乃至請求項19に記載のメモリシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011030888A JP5178857B2 (ja) | 2011-02-16 | 2011-02-16 | メモリシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011030888A JP5178857B2 (ja) | 2011-02-16 | 2011-02-16 | メモリシステム |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008051472A Division JP4691122B2 (ja) | 2008-03-01 | 2008-03-01 | メモリシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011103144A JP2011103144A (ja) | 2011-05-26 |
JP5178857B2 true JP5178857B2 (ja) | 2013-04-10 |
Family
ID=44193426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011030888A Expired - Fee Related JP5178857B2 (ja) | 2011-02-16 | 2011-02-16 | メモリシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5178857B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5990430B2 (ja) * | 2012-08-29 | 2016-09-14 | 株式会社バッファローメモリ | Ssd(ソリッドステートドライブ)装置 |
JP2022161746A (ja) | 2021-04-09 | 2022-10-21 | 富士通株式会社 | 情報処理プログラム、情報処理方法、および情報処理装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6944717B2 (en) * | 2001-07-27 | 2005-09-13 | Fujitsu Limited | Cache buffer control apparatus and method using counters to determine status of cache buffer memory cells for writing and reading data therefrom |
JP4356686B2 (ja) * | 2005-12-01 | 2009-11-04 | ソニー株式会社 | メモリ装置及びメモリ制御方法 |
JP2008033788A (ja) * | 2006-07-31 | 2008-02-14 | Matsushita Electric Ind Co Ltd | 不揮発性記憶装置、データ記憶システム、およびデータ記憶方法 |
JP4533968B2 (ja) * | 2007-12-28 | 2010-09-01 | 株式会社東芝 | 半導体記憶装置及びその制御方法、コントローラ、情報処理装置 |
-
2011
- 2011-02-16 JP JP2011030888A patent/JP5178857B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2011103144A (ja) | 2011-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4691122B2 (ja) | メモリシステム | |
JP5010505B2 (ja) | メモリシステム | |
JP4745356B2 (ja) | メモリシステム | |
JP4691123B2 (ja) | メモリシステム | |
JP4653817B2 (ja) | メモリシステム | |
JP4643667B2 (ja) | メモリシステム | |
JP4498426B2 (ja) | メモリシステム | |
JP4675985B2 (ja) | メモリシステム | |
JP4551940B2 (ja) | メモリシステム | |
JP5032371B2 (ja) | メモリシステム | |
KR101067457B1 (ko) | 메모리 시스템 | |
JP2009211234A (ja) | メモリシステム | |
JP4762261B2 (ja) | メモリシステム | |
JP2009211233A (ja) | メモリシステム | |
JP4643671B2 (ja) | メモリシステム | |
JP4592774B2 (ja) | メモリシステム | |
JP5221593B2 (ja) | メモリシステム | |
JP4621749B2 (ja) | メモリシステム | |
JP4510107B2 (ja) | メモリシステム | |
JP4746641B2 (ja) | メモリシステム | |
JP5178857B2 (ja) | メモリシステム | |
JP2009211224A (ja) | メモリシステム | |
KR20090110923A (ko) | 메모리 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20121218 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130108 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5178857 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20160118 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |