JP6441171B2 - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP6441171B2 JP6441171B2 JP2015119242A JP2015119242A JP6441171B2 JP 6441171 B2 JP6441171 B2 JP 6441171B2 JP 2015119242 A JP2015119242 A JP 2015119242A JP 2015119242 A JP2015119242 A JP 2015119242A JP 6441171 B2 JP6441171 B2 JP 6441171B2
- Authority
- JP
- Japan
- Prior art keywords
- information
- control unit
- translation information
- area
- user data
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Description
図1は、第1の実施形態によるメモリシステムの構成の一例を示す図である。このメモリシステム1は、例えば、SSD(Solid State Drive)である。以下では、不揮発性メモリとしてNAND型のフラッシュメモリ(以下、NANDメモリという)を用いる場合を例に挙げる。
制御部15が実行する処理は、大きく、起動時の処理、コマンド待機の処理、コマンド実行の処理、再起動待機の処理、に分類される。
制御部15は、起動時においては、スケジューラとしての初期化操作を実行する。その後、制御部15は、スケジューラに以下の処理(第1〜第3のスタートアップ処理)の何れかを登録する。制御部15は、登録されたスタートアップ処理を、スケジューラの指示によって実行する。
電源断によってダーティな単位情報が喪失された場合には、第1のスタートアップ処理が実行される。第1のスタートアップ処理は、翻訳情報を再構築する処理である。再構築とは、喪失されたダーティな単位情報を回復することを含む。再構築は、ログ情報231を書き込み順または書き込み順とは逆順に参照することによって実行可能である。
直前の電源断においてPLPなどによって緊急退避領域121に各種情報が格納された場合には、第2のスタートアップ処理が実行される。第2のスタートアップ処理は、緊急退避領域121に格納された各種情報を用いて、RAM14のメモリイメージを復元する処理である。
全てのダーティな単位情報が管理情報領域122に正常に書き込み完了することによって非ダーティな状態に電源断時において遷移した場合には、第3のスタートアップ処理が実行される。第3のスタートアップ処理は、第1テーブル201aをRAM14に第1テーブル201bとして読み出す処理である。
制御部15は、割り込みハンドラとしての処理を実行する。ホスト2からのコマンドに応じて割り込みハンドラは対応する処理をスケジューラに登録する。コマンドは、対応する処理をスケジューラが実行することによって伝達される。また、メモリシステム1内部の割り込みハンドラが、対応する処理をスケジューラに登録することによってもコマンド実行が開始される。実行可能なコマンドがなければ、制御部15は、メモリシステム1の状態をスリープの状態に移行せしめてもよい。なお、メモリシステム1がスリープの状態であっても、制御部15は、タイマ割り込みの実行を行ってもよい。制御部15は、タイマ割り込みによって、メモリシステム1の状態をスリープの状態から通常の状態に遷移せしめる。
(1−3−1)ホストコマンドキュー処理
ホストコマンドキュー処理は、例えば、割り込みハンドラとして制御部15に実装される。ホスト2からのコマンドは、割り込みによって通知される。ホストコマンドキュー処理は、ホスト2からのコマンドを解析する処理と、当該コマンドを発行待ちコマンドキュー(図示せず)に登録する処理を含む。発行待ちコマンドキューは、例えばリング型のキューである。ホストコマンドキュー処理においては、制御部15は、発行待ちコマンドキューに対しては、登録のみを実行することができる。発行待ちコマンドキュー内の発行待ち状態のコマンドの数は、登録側の位置情報と発行側の位置情報との比較によって算出可能である。ホストコマンドキュー処理においては、発行待ち状態のコマンドの数が所定のしきい値を超えている場合には、制御部15は、ホスト2からのコマンドの受け付けを停止する。ホストコマンドキュー処理においては、ホスト2からのコマンドの受け付けの停止中にホスト2からコマンドの登録が要求された場合には、制御部15は、ホスト2に対して受け付け拒絶を通知する。ホスト2は、受け付け拒絶の通知を受信した場合には、所定時間の経過後、コマンドの登録を再要求する。制御部15は、再要求時においてコマンドの受け付けの停止中でない場合には、ホストコマンドキュー処理において当該コマンドを受け付ける。発行待ちコマンドキュー内の発行待ち状態のコマンドの数と前記所定のしきい値との差分は、受け付け可能なコマンドの数を示す。制御部15は、ホストコマンドキュー処理において、受け付け可能なコマンドの数をステータス情報としてホスト2に送信してもよい。受け付け拒絶の通知および受け付け可能なコマンド数の通知の何れを使用するかは、ホスト2との取り決めによって設定される。ホストコマンドキュー処理において、制御部15は、ホストコマンド発行処理をスケジューラの実行待ちキュー(図示せず)に登録し、ホストコマンドキュー処理を終了する。登録されたコマンドは、夫々、実行状態(未実行状態、実行中状態、終了待機状態)を示す情報とともに管理される。
ホスト2からのコマンドの受け付け後、コマンドの終了時またはタイマ割り込みなどによってホストコマンド発行処理の実行要求がスケジューラに登録される。ホストコマンド発行処理においては、制御部15は、スケジューラに実行要求が登録されたコマンドの状態を実行中状態に遷移させる。また、例えばデータの転送が終了した場合などコマンドの実行が終了すると、制御部15は、コマンドの状態を終了待機状態に遷移させる。その後、ホスト2からの実行終了確認の受領に応じて、制御部15は、コマンドを発行待ちコマンドキューから削除する。制御部15は、未実行状態のコマンドの実行を開始する。
リード処理は、コマンドを解析する処理、翻訳情報にアクセスする処理、NANDメモリ12からユーザデータ301を読み出す処理、NANDメモリ12から読み出されたユーザデータ301をリードバッファ142に格納する処理、リードバッファ142に格納されたユーザデータ301をホスト2に送信する処理、およびコマンド実行終了をホスト2に通知する処理、を含む。リード処理においては、制御部15は、ホスト2がコマンド実行終了を確認した後、ホストコマンド発行処理にコマンドの終了を通知する。
ライト処理は、コマンドを解析する処理、コマンド実行をホスト2に通知する処理、ライトバッファ141にホスト2からのユーザデータを格納する処理、ライトバッファ141へのユーザデータの格納に応じて翻訳情報を更新する処理、およびコマンド実行終了をホスト2に通知する処理、を含む。ライトコマンドにFUAモードの指定が含まれている場合には、ライト処理において、制御部15は、ライトバッファ141に格納されたユーザデータをNANDメモリ12に格納する処理と、NANDメモリ12へのユーザデータの格納に応じて翻訳情報を更新する処理とをさらに実行する。ライト処理においては、制御部15は、ホスト2がコマンド実行終了を確認した後、ホストコマンド発行処理にコマンドの終了を通知する。
キャッシュフラッシュ処理は、ライトバッファ141のフラッシュと、翻訳情報のダーティな部分のフラッシュとを実行する処理である。キャッシュフラッシュが通知されると、キャッシュフラッシュ処理において、制御部15は、次のライトコマンドの発行を、ライトバッファ141への書き込み実行フラグを立て終わるまで停止する。書き込み実行フラグは、ライトバッファ141に格納されているユーザデータがNANDメモリ12に書き込まれたか否かを示すフラグ情報である。書き込み実行フラグが立てられた状態は、対応するユーザデータがNANDメモリ12に書き込み済みであることを示す。なお、NVMeが採用される場合には、制御部15は、キャッシュフラッシュ処理をネームスペース毎に独立に実行してもよい。
トリム処理は、指定された論理アドレスについて、当該論理アドレスと物理アドレスとの対応関係を解消する処理である。トリム処理において、制御部15は、新規のライトコマンドおよび新規のリードコマンドの発行を停止し、翻訳情報に含まれる対応するレコードを無効化する。NVMeが採用される場合には、トリムコマンドは、たとえばネームスペースを指定可能に構成されてもよい。制御部15は、トリム処理において、指定されたネームスペースに対するライトコマンドおよびリードコマンドの発行を停止する。
緊急退避処理は、発行待ちのコマンドおよび実行中の全てのアクセスコマンドを破棄する処理と、ライトバッファ141内のユーザデータおよび翻訳情報のうちの全てのダーティな部分を緊急退避領域121に格納する処理とを含む。緊急退避処理において上記情報の格納に成功した場合には、制御部15は、Unexpected Shutdownフラグを下ろす。緊急退避処理において上記情報の格納に失敗した場合には、制御部15は、Unexpected Shutdownフラグを下ろさない。Unexpected Shutdownフラグは、例えば、NANDメモリ12の管理情報領域122に記録される。次回の起動時においては、第1のスタートアップ処理を実行するか否かが、Unexpected Shutdownフラグに基づいて判定される。緊急退避が通知されると、再起動以外の全てのコマンドの新規受付が停止される。緊急退避は、電源から通知される。
スリープ処理は、発行待ちの全てのコマンドと実行中のアクセスコマンドの実行終了後、ライトバッファ141内のユーザデータおよび翻訳情報のうちの全てのダーティな部分を緊急退避領域121に格納する処理である。スリープ処理において上記情報の格納に成功した場合には、制御部15は、Unexpected Shutdownフラグを下ろす。スリープ処理において上記情報の格納に失敗した場合には、制御部15は、Unexpected Shutdownフラグを下ろさない。スリープが通知されると、復帰コマンド以外の全てのコマンドの新規受付が停止される。スリープは、ホスト2から通知される。
シャットダウン処理は、発行待ちの全てのコマンドの実行が終了後、キャッシュフラッシュ処理を実行する処理である。シャットダウンが通知されると、再起動以外の全てのコマンドの新規受付が停止される。シャットダウンは、ホスト2から通知される。フラッシュに成功した場合には、制御部15は、Unexpected Shutdownフラグを下ろす。フラッシュに失敗した場合には、制御部15は、Unexpected Shutdownフラグを下ろさない。
再起動待機の処理とは、緊急退避処理またはシャットダウン処理が終了した後の状態をいう。再起動待機処理においては、制御部15は、再起動コマンドのみを受け付ける。
翻訳情報の復元処理は、第1テーブル201bを復元する処理である。翻訳情報の復元処理の実行中においては、制御部15は、アクセスコマンドを受け付けない。Signature応答およびIdentifyに対する応答は、許可される。翻訳情報の復元処理においては、「時刻」とは、システムトータルの書き換え回数で代用される。書き換え回数とは、ブロック毎の書き込みおよび消去の回数である。翻訳情報の復元処理においては、制御部15は、第1テーブル201bのレコードのうちの最新のレコードを復元する。制御部15は、ログストレージ領域124に記録されている単位情報のうち、対応する第1テーブル201aのレコードよりも時刻が新しいものを復元する。第1のスタートアップ処理内において翻訳情報の復元処理が実行される場合には、次の処理が実行される。
電源遮断処理には、正常処理とPLPとが存在する。
正常処理は、ライトバッファ141内のユーザデータのフラッシュ、各種ダーティな情報のフラッシュ、および統計情報225のフラッシュを含む。制御部15は、正常処理の終了後、Unexpected Shutdownフラグを下ろす。
PLPは、ライトバッファ141内のユーザデータおよび各種ダーティな情報を緊急退避領域121に格納する処理を含む。制御部15は、PLPの終了後、Unexpected Shutdownフラグを下ろし、PLPフラグを立てる。PLPフラグは、PLPによってメモリシステム1が終了されたことを示すフラグであり、例えば管理情報領域122に記録される。統計情報225は、上記の情報の格納が完了した後に緊急退避領域121に格納される。PLPにおいては、統計情報225の保持は保証されなくてもよい。
ライト処理とは、ホスト2からのコマンドに応じた書き込みをいう。ライト処理としては、キャッシュを用いたライト、FUAライト、アトミックライト、トリム処理、の4種類の種類がある。キャッシュを用いたライトは、4種類のライト処理の中で最も処理が早く終了する。キャッシュを用いたライトとは、ライトバッファ141にユーザデータが格納された時点で終了するライト処理である。FUAライトとは、NANDメモリ12へのユーザデータの書き込みまで終えた時点で終了するライト処理である。FUAライトの実行中においては、翻訳情報の更新が完了するまで、NANDメモリ12に書き込まれたユーザデータ301を読み出すことができない。FUAライトの実行中において翻訳情報の更新が完了するまでの間、該当のユーザデータ301の読み出しを要する場合には、制御部15は、ライトバッファ141からユーザデータを読み出す。アトミックライトは、複数のライトコマンドによって書き込み要求された全てのユーザデータの書き込みが完了した後に、翻訳情報の更新を行う書き込みである。アトミックライトによれば、複数のライトコマンドによって書き込み要求された全てのユーザデータの書き込みが完了するまで、各ユーザデータの読み出しはできない。トリム処理は、ライト処理のうちの1つとして扱われる。
ライトバッファ141は、ダブルバッファの構成を備えた、FIFOのルールでデータの入出力がなされるバッファである。ライトバッファ141は、所定のサイズの領域毎に書き込み実行フラグを備える。
制御部15は、1以上のフリーブロックのうちから、書き換え回数が出来るだけ少ないフリーブロックを、書き込み先のブロックとして選択する。フリーブロックとは、有効なユーザデータ301が格納されていないブロックをいう。フリーブロックは、ガベージコレクションにより生成される。制御部15は、2以上のフリーブロックから所定数のフリーブロックを候補としてランダムに選択し、選択された候補のうちの書き換え回数が最も少ないフリーブロックを書き込み先のブロックとして選択してもよい。フリーブロックは、例えば、生成された順番がわかるようにリスト形式(フリーブロックリスト)で管理される。制御部15は、最も古く生成された所定数のフリーブロックまたは最も新しく生成された所定数のフリーブロックを候補として選択してもよい。書き込み先のブロックとして選択されたフリーブロックは、消去後、書き込み先に設定される。消去に際しては、制御部15は、メモリシステム1内においてユニークなシーケンス番号をブロックに割り当てる。シーケンス番号は、消去が実行された順番を示す番号である。制御部15は、1つのブロックの最後のページに情報を書き込む際に、そのブロックのシーケンス番号を記録する。
ユーザデータをライトバッファ141からNANDメモリ12に書き込む際、制御部15は、コピー元の領域をロックする。また、コピー先のページに空き領域がある場合には、制御部15は、例えば、リードモディファイライトの要領で、NANDメモリ12からデータを読み出して当該読み出したデータを書き込み対象のユーザデータと結合してコピー先のページに書き込む。NANDメモリ12へのユーザデータの書き込みの終了後、その書き込みがキャッシュを用いたライトまたはFUAライトに伴う処理である場合には、制御部15は、翻訳情報の更新要求(以降、単に更新要求)を発行する。更新要求は、論理アドレス、ライトバッファ141内のコピー元を示すアドレス、旧物理アドレス、新物理アドレス、およびデータのサイズを含む。トリム処理に関しては、制御部15は、トリムコマンドに基づき、無効化の対象の論理アドレス範囲を含む更新要求を発行する。
アトミックライトにおいては、制御部15は、アトミックライトの開始と終了とをユーザデータ領域123に書き込む。アトミックライトの動作としては2通りの動作が考えられる。
制御部15は、アトミックライトの最後の書き込みを確認するまで更新要求をキューイングする。アトミックライトの最後の書き込みを確認した後、制御部15は、キューイングしておいた更新要求を発行する。アトミックライトに応じた翻訳情報の更新中には、制御部15は、アトミックライトの対象となった論理アドレス範囲に対する読み出しを停止する。アトミックライトに対応できる領域の大きさは、メモリシステム1の余裕容量と更新要求をキューイングできる量とで決定される。第1のアトミックライトによれば、ネストが可能である。
制御部15は、更新要求を発行する。制御部15は、更新要求がなされた単位情報をキャッシュ領域143において複製する。制御部15は、アトミックライトの実行中には、単位情報の複製を更新する。アトミックライトの最後の書き込みを確認した後、制御部15は、単位情報の複製を複製元の単位情報に反映させる。読み出し動作またはアトミックライトでない書き込み動作の際には、制御部15は、複製元の単位情報を使用する。反映は、次のように実行される。即ち、制御部15は、単位情報の複製のうちの非ダーティの部分について、複製元の単位情報から単位情報の複製に上書きする。そして、制御部15は、単位情報の複製を示すように、上位の翻訳情報に記録されたテーブルアドレスを更新する。第2のアトミックライトに対応できる領域の大きさは、キャッシュ領域143において単位情報の複製を格納可能な量とメモリシステム1の余裕容量とで決定される。第2のアトミックライトによれば、複数の更新要求を逐次実行する必要がある第1のアトミックライトに比べ、翻訳情報の更新を早く完了することができる。即ち、読み出しを停止する期間を短くすることができる。なお、複数のアトミックライトが実行される場合には、制御部15は、アトミックライト毎に単位情報の複製を生成する。
制御部15は、更新要求を受け付けると、翻訳情報の更新のタイミングを調べる。制御部15は、翻訳情報を更新できるタイミングに至るまで、更新要求をキューイングする。制御部15は、例えば、更新要求をストリーム毎にキューイングしてもよい。翻訳情報の更新の後、制御部15は、ライトバッファ141の解放を行う。
トリム処理においては、制御部15は、受信したトリムコマンドをユーザデータ領域123に記録する。ユーザデータ領域123に書き込まれる最小の単位は、複数のトリムコマンドを収容可能である。制御部15は、トリムコマンドの記録の後、翻訳情報を更新し、対応する有効情報を更新する。単位情報のうちの全てのレコードが無効化される場合には、制御部15は、当該全てのレコードが無効化される単位情報を示す上位の翻訳情報のレコードを無効化する。
ガベージコレクションは、1つのブロックに含まれる有効なユーザデータ301を他のブロックにコピーし、その後、前記1つのブロックに格納された全ユーザデータ301を無効化する処理をいう。内部に記憶する全てのユーザデータ301がガベージコレクションによって無効化されたブロックは、フリーブロックとして管理される。
制御部15は、有効なユーザデータ301を記憶する1以上のブロックからガベージコレクションの対象のブロックを選択する。ガベージコレクションの対象のブロックを、GCブロックと表記する。GCブロックの選択方法は、遅延時間および書き込み倍率(Write Amplification)に影響する。制御部15は、例えば次の方法でGCブロックを選択する。
制御部15は、GCブロックを選択した後、GC比を更新する。GC比は、ユーザデータのNANDメモリ12への書き込み量に対するガベージコレクションによるコピー量の比の設定値である。制御部15は、ブロック内の有効なユーザデータ301の数をブロック内の無効なユーザデータ301の数で除算して得られる数値を、GC比に設定する。以降、制御部15は、ユーザデータのNANDメモリ12への書き込みとガベージコレクションによるコピーとの進行に応じて、GC比を随時更新する。
制御部15は、フリーブロックのうち書き換え回数ができるだけ少ないブロックをコピー先のブロックとして選択する。例えば、制御部15は、2以上のフリーブロックから所定数のフリーブロックを候補としてランダムに選択し、選択された候補のうちの書き換え回数が最も少ないフリーブロックをコピー先のブロックとして選択してもよい。フリーブロックは、例えば、生成された順番がわかるようにリスト形式で管理される。制御部15は、最も古く生成された所定数のフリーブロックまたは最も新しく生成された所定数のフリーブロックを候補として選択してもよい。制御部15は、選択されたコピー先のブロックに、シーケンス番号をブロックに割り当てる。
制御部15は、有効情報に基づいて有効なユーザデータ301を特定する。制御部15は、特定された有効なユーザデータ301をコピー先のブロックにコピーするためのコピーコマンドを生成する。コピーコマンドは、論理アドレスとコピー元のユーザデータ301の位置を示す物理アドレスとを含む。制御部15は、コピーコマンドの実行の前に、コピー先の位置を示す物理アドレスを演算する。制御部15は、コピー先のブロックの先頭から順番にコピーによってユーザデータが格納されるように、コピー先の位置を示す物理アドレスを演算する。制御部15は、GC比に基づいてコピーコマンドの実行タイミングを調整する。制御部15は、コピーコマンドの実行を、コピーコマンドの生成よりも優先して実行する。制御部15は、コピーの後、GC比を更新する。制御部15は、当初の有効なユーザデータ301の数からコピー済みのユーザデータ301の数を減算して得られる値を、当初の無効なユーザデータ301の数からユーザデータの書き込み数を減算して得られる値で除算することによって、新しいGC比を演算する。
コピー後に、制御部15は、翻訳情報および有効情報を更新する。制御部15は、例えば、GCブロックに格納された全ての有効なユーザデータ301のコピーが完了した後に、翻訳情報および有効情報の更新を開始する。ガベージコレクションに伴う翻訳情報および有効情報の実行の優先度は、NANDメモリ12に対するアクセスを行う処理の実行の優先度よりも低く設定される。
リード処理には、キャッシュを用いたリードと、FUAリードとがある。リードの種類は、リードコマンドによって指定可能である。FUAリードは、リードコマンドによって指定された範囲の論理アドレスがキャッシュに残っている場合にはフラッシュし、その後、NANDメモリ12のページバッファキャッシュの無効化要求を発行し、その後、キャッシュを用いたリードを実行する読み出しである。フラッシュの際にライトバッファ141にデータが存在する場合には、制御部15は、ライトバッファ141のフラッシュを実行する。キャッシュを用いたリードは、ライトコマンドによって指定された範囲の論理アドレスの翻訳と、NANDコントローラ13への読み出し要求の送信と、NANDコントローラ13から送られてきたユーザデータ301のリードバッファ142への格納と、リードバッファ142に格納されたユーザデータ301のホストへの送信と、を含む。
リードキャッシュとしては、ページバッファキャッシュと、リードバッファ142と、の2種類が存在する。ページバッファキャッシュは、NANDメモリ12を構成するチップの内部に具備される。NANDコントローラ13は、連続して同じ物理アドレスからユーザデータ301を読み出す際には、NANDメモリ12にリードコマンドを送信せず、ページバッファキャッシュに格納されているユーザデータ301を読み出す。リードバッファ142は、FIFOのルールに従ってデータが入出力される。
(7−1)第1の置換
制御部15は、ライト処理またはリード処理の際にキャッシュラインを空ける場合、ガベージコレクションによってダーティとなったキャッシュラインを優先的に空ける。具体的には、制御部15は、まず、GCダーティ情報223を参照する。そして、制御部15は、GCダーティ情報223が示す単位情報のうちの最も古い単位情報を、ログストレージ領域124に書き戻し、キャッシュ領域143から削除する。ガベージコレクションによってダーティとなった単位情報が存在しない場合には、制御部15は、キャッシュ領域143にキャッシュされている単位情報をランダムに選択する。制御部15は、乱数を発生させ、発生させた乱数を用いることによって単位情報を選択する。制御部15は、選択された単位情報がダーティであるか否かを、ユーザダーティ情報222を参照することによって判定する。選択された単位情報がダーティでない場合、制御部15は、選択された単位情報をキャッシュ領域143から削除する。選択された単位情報がダーティである場合、制御部15は、ユーザダーティ情報222が示す単位情報のうちの最も古い単位情報を、ログストレージ領域124に書き戻し、キャッシュ領域143から削除する。
ガベージコレクションを行うためにキャッシュラインを空ける場合、制御部15は、次のようにキャッシュラインを置換する。即ち、制御部15は、GCダーティ情報223が示す単位情報の数に上限値を設定する。GCダーティ情報223が示す単位情報の数が上限値に達している場合には、制御部15は、GCダーティ情報223が示す単位情報のうちの最も古い単位情報を、ログストレージ領域124に書き戻し、キャッシュ領域143から削除する。GCダーティ情報223が示す単位情報の数が上限値に達していない場合には、制御部15は、キャッシュ領域143にキャッシュされている単位情報をランダムに選択する。選択された単位情報がダーティでない場合、制御部15は、選択された単位情報をキャッシュ領域143から削除する。選択された単位情報がダーティである場合、制御部15は、ユーザダーティ情報222が示す単位情報のうちの最も古い単位情報を、ログストレージ領域124に書き戻し、キャッシュ領域143から削除する。
第2の実施形態は、第1の実施形態のメモリシステム1に適用することが可能である。第2の実施形態によれば、制御部15は、2以上のプロセッサを備えて構成される。
第3の実施形態は、第1の実施形態および第2の実施形態の何れのメモリシステム1に適用することが可能である。第3の実施形態によれば、メモリシステム1は、ソフトウェア定義型(Software Defined)プラットフォームを備える。ソフトウェア定義型プラットフォームは、例えば、メモリシステム1の機能をハードウェアの制御から切り離し、ソフトウェアにより制御を実行する。
第4の実施形態は、第1〜第3の実施形態の何れのメモリシステム1に適用することが可能である。第4の実施形態によれば、メモリシステム1は、互いに独立した複数の論理アドレス空間が構築可能に構成される。互いに独立した複数の論理アドレス空間の夫々は、例えばネームスペースである。
第5の実施形態は、第1〜第4の実施形態の何れのメモリシステム1に適用することが可能である。
図21は、メモリシステム1の実装例を示す図である。メモリシステム1は、例えばサーバシステム1000に実装される。サーバシステム1000は、ディスクアレイ2000とラックマウントサーバ3000とが通信インタフェース4000によって接続されて構成される。通信インタフェース4000の規格としては任意の規格が採用可能である。ラックマウントサーバ3000は、サーバラックに1以上のホスト2がマウントされて構成される。複数のホスト2は、通信インタフェース4000を介してディスクアレイ2000にアクセスすることができる。
Claims (7)
- ホストに接続可能なメモリシステムであって、
不揮発性の第1メモリと、
前記ホストと前記第1メモリとの間のデータ転送を実行し、論理位置情報と物理位置情報との対応関係を示す翻訳情報を管理し、前記論理位置情報は前記ホストから指定される位置情報であり、前記物理位置情報は前記第1メモリ内の位置を物理的に示す位置情報である、制御部と、
を備え、
前記翻訳情報は、複数の階層に階層化され、第1の階層に属する第1翻訳情報と第2の階層に属する第2翻訳情報とを含み、
前記第1翻訳情報のサイズと前記第2翻訳情報のサイズとは等しく、
前記第1メモリは、第1領域を備え、
前記制御部は、前記第1翻訳情報および前記第2翻訳情報を前記第1領域に記憶し、
前記第1領域は複数のページを備え、各ページは前記第1メモリへの書き込み単位であり、
前記制御部は、前記第1翻訳情報および前記第2翻訳情報を同じページに格納する、
ことを特徴とするメモリシステム。 - 第2メモリをさらに備え、
前記制御部は、前記第1翻訳情報および前記第2翻訳情報を前記第1領域から前記第2メモリに読み出して、前記第2メモリに格納された前記第1翻訳情報および前記第2翻訳情報を使用し、使用後の前記第1翻訳情報および前記第2翻訳情報を前記第1領域に格納する、
ことを特徴とする請求項1に記載のメモリシステム。 - 前記第1メモリは、前記制御部が前記ホストからのデータを書き込む第2領域を備え、
前記制御部は、前記第2領域内のデータが第1状態であるか第2状態であるかを記録した状態管理情報を管理し、
前記第1翻訳情報のサイズと前記第2翻訳情報のサイズと前記状態管理情報のサイズとは等しい、
ことを特徴とする請求項1に記載のメモリシステム。 - 前記制御部は、前記第1翻訳情報、前記第2翻訳情報および前記状態管理情報を前記第1領域に記憶する、
ことを特徴とする請求項3に記載のメモリシステム。 - 前記制御部は、前記第1翻訳情報、前記第2翻訳情報および前記状態管理情報を同じページに格納する、
ことを特徴とする請求項4に記載のメモリシステム。 - 第2メモリをさらに備え、
前記制御部は、前記第1翻訳情報、前記第2翻訳情報および前記状態管理情報を前記第1領域から前記第2メモリに読み出して、前記第2メモリに格納された前記第1翻訳情報、前記第2翻訳情報および前記状態管理情報を使用し、使用後の前記第1翻訳情報、前記第2翻訳情報および前記状態管理情報を前記第1領域に格納する、
ことを特徴とする請求項5に記載のメモリシステム。 - 前記制御部は、
第1のデータを前記第2領域内の第1の位置に格納し、前記第1のデータと同一の論理位置情報が指定されたデータのうちの最新のデータである第2のデータを第2の位置に格納し、
前記第1のデータの状態を前記第1状態として管理し、
前記第2のデータの状態を前記第2状態として管理する、
ことを特徴とする請求項3に記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015119242A JP6441171B2 (ja) | 2015-06-12 | 2015-06-12 | メモリシステム |
US15/063,813 US10248322B2 (en) | 2015-06-12 | 2016-03-08 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015119242A JP6441171B2 (ja) | 2015-06-12 | 2015-06-12 | メモリシステム |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018212752A Division JP6675466B2 (ja) | 2018-11-13 | 2018-11-13 | メモリシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017004355A JP2017004355A (ja) | 2017-01-05 |
JP6441171B2 true JP6441171B2 (ja) | 2018-12-19 |
Family
ID=57516798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015119242A Active JP6441171B2 (ja) | 2015-06-12 | 2015-06-12 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US10248322B2 (ja) |
JP (1) | JP6441171B2 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI563507B (en) * | 2015-07-01 | 2016-12-21 | Phison Electronics Corp | Memory management method, memory control circuit unit and memry storage apparatus |
US10275361B2 (en) * | 2017-05-31 | 2019-04-30 | Seagate Technology Llc | Managing multiple namespaces in a non-volatile memory (NVM) |
US10572388B2 (en) | 2017-08-30 | 2020-02-25 | Micron Technology, Inc. | Managed NVM adaptive cache management |
GB2568301B (en) * | 2017-11-13 | 2020-05-13 | Advanced Risc Mach Ltd | Address space access control |
KR102426107B1 (ko) * | 2017-12-20 | 2022-07-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
JP2019121195A (ja) * | 2018-01-05 | 2019-07-22 | 東芝メモリ株式会社 | メモリシステム及びプロセッサシステム |
US11132044B2 (en) * | 2018-05-08 | 2021-09-28 | Micron Technology, Inc. | Dynamic P2L asynchronous power loss mitigation |
US10970205B2 (en) * | 2018-05-31 | 2021-04-06 | Micron Technology, Inc. | Logical-to-physical data structures for tracking logical block addresses indicative of a collision |
KR102624911B1 (ko) * | 2018-06-13 | 2024-01-12 | 삼성전자주식회사 | 개선된 메타 데이터 관리를 통한 플래시 메모리의 내구성 향상 방법 |
KR102243923B1 (ko) * | 2018-12-31 | 2021-04-22 | 강원대학교산학협력단 | 캐쉬를 동반한 효율적인 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치 및 그 동작 방법 |
US11061598B2 (en) * | 2019-03-25 | 2021-07-13 | Western Digital Technologies, Inc. | Optimized handling of multiple copies in storage management |
KR102626058B1 (ko) * | 2019-07-08 | 2024-01-18 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
JP7179794B2 (ja) * | 2020-03-03 | 2022-11-29 | 株式会社東芝 | 磁気ディスク装置、および磁気ディスク装置のメモリ管理方法 |
US11669498B2 (en) * | 2020-07-24 | 2023-06-06 | EMC IP Holding Company LLC | Facilitating exclusive local locks on a distributed file system |
DE112022000334T5 (de) * | 2021-03-17 | 2023-10-19 | Fanuc Corporation | Steuervorrichtung |
JP7331166B2 (ja) | 2022-01-28 | 2023-08-22 | レノボ・シンガポール・プライベート・リミテッド | 情報処理装置および制御方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3694501B2 (ja) * | 2002-10-30 | 2005-09-14 | 松下電器産業株式会社 | 記憶装置 |
US8095773B2 (en) * | 2008-02-26 | 2012-01-10 | International Business Machines Corporation | Dynamic address translation with translation exception qualifier |
JP4551938B2 (ja) | 2008-03-01 | 2010-09-29 | 株式会社東芝 | メモリシステム |
US8825984B1 (en) * | 2008-10-13 | 2014-09-02 | Netapp, Inc. | Address translation mechanism for shared memory based inter-domain communication |
US20150074336A1 (en) * | 2013-09-10 | 2015-03-12 | Kabushiki Kaisha Toshiba | Memory system, controller and method of controlling memory system |
US9824021B2 (en) * | 2014-03-31 | 2017-11-21 | International Business Machines Corporation | Address translation structures to provide separate translations for instruction fetches and data accesses |
US9734083B2 (en) * | 2014-03-31 | 2017-08-15 | International Business Machines Corporation | Separate memory address translations for instruction fetches and data accesses |
US9405703B2 (en) * | 2014-06-04 | 2016-08-02 | Advanced Micro Devices, Inc. | Translation lookaside buffer |
-
2015
- 2015-06-12 JP JP2015119242A patent/JP6441171B2/ja active Active
-
2016
- 2016-03-08 US US15/063,813 patent/US10248322B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20160364142A1 (en) | 2016-12-15 |
JP2017004355A (ja) | 2017-01-05 |
US10248322B2 (en) | 2019-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6441171B2 (ja) | メモリシステム | |
US11693463B2 (en) | Memory system and controller | |
JP6437656B2 (ja) | ストレージ装置、ストレージシステム、ストレージシステムの制御方法 | |
US8805902B2 (en) | Managing snapshot storage pools | |
CN102667704B (zh) | 混合存储子系统及其管理方法 | |
WO2015169145A1 (zh) | 内存管理方法和设备 | |
JP2019101703A (ja) | 記憶システム及び制御ソフトウェア配置方法 | |
JP6398102B2 (ja) | メモリシステム | |
US8612681B2 (en) | Storage system, storage apparatus and method of controlling storage system | |
US9141304B2 (en) | Storage device and method for controlling storage device | |
JP2014086052A (ja) | 情報処理装置およびその方法 | |
JP2010066914A (ja) | 統合メモリ管理装置及びメモリ管理方法 | |
US11740823B2 (en) | Storage system and storage control method | |
JP6860722B2 (ja) | メモリシステムの制御方法 | |
JP6675466B2 (ja) | メモリシステム | |
KR102085272B1 (ko) | 비휘발성 메모리를 이용한 인메모리 데이터베이스의 데이터 처리 방법 및 인메모리 데이터베이스 | |
JP6640940B2 (ja) | メモリシステムの制御方法 | |
JP5382471B2 (ja) | 電力制御方法、計算機システム、及びプログラム | |
US20220405237A1 (en) | Storage system, computer system, and control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20170605 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170810 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180628 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180703 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180831 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180905 |
|
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: 20181023 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20181121 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6441171 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |