JP6640940B2 - Memory system control method - Google Patents
Memory system control method Download PDFInfo
- Publication number
- JP6640940B2 JP6640940B2 JP2018149521A JP2018149521A JP6640940B2 JP 6640940 B2 JP6640940 B2 JP 6640940B2 JP 2018149521 A JP2018149521 A JP 2018149521A JP 2018149521 A JP2018149521 A JP 2018149521A JP 6640940 B2 JP6640940 B2 JP 6640940B2
- Authority
- JP
- Japan
- Prior art keywords
- translation information
- write
- memory
- information
- memory system
- 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
Landscapes
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本実施形態は、メモリシステムの制御方法に関する。 The present embodiment relates to a method for controlling a memory system.
従来、NAND型のフラッシュメモリを記憶媒体に用いたメモリシステムが知られている。前記メモリシステムは、外部から指定される論理的な位置情報(論理アドレス)と記憶媒体内の位置を物理的に示す位置情報(物理アドレス)との間の対応関係を記録した翻訳情報を管理する。 Conventionally, a memory system using a NAND flash memory as a storage medium is known. The memory system manages translation information that records a correspondence between logical position information (logical address) specified from the outside and position information (physical address) physically indicating a position in a storage medium. .
また、書き込み要求されたデータの転送エラーが生じた場合、メモリシステムは、その書き込み要求されたデータの書き込みを開始する直前の状態に戻ることが要求されるケースがある。そのような書き込みモードを、アトミックライト(Atomic Write)と表記する。 In addition, when a transfer error of the data requested to be written occurs, the memory system may be required to return to a state immediately before starting to write the data requested to be written. Such a write mode is referred to as an atomic write.
一つの実施形態は、アトミックライトを効率的に実行できるメモリシステムを提供することを目的とする。 An object of one embodiment is to provide a memory system that can execute atomic writes efficiently.
一つの実施形態によれば、メモリシステムの制御方法は、第1ステップと、第2ステップと、第3ステップと、第4ステップと、を備える。前記第1ステップは、ホストから指定される位置情報である論理位置情報と不揮発性の第1メモリ内の物理的な位置を示す位置情報である物理位置情報との対応関係を示す第1翻訳情報を揮発性の第2メモリにキャッシュするステップである。前記第2ステップは、前記第2メモリにキャッシュされた前記第1翻訳情報である第2翻訳情報を管理するステップである。前記第3ステップは、アトミックライトを指定するモードである第1ライトモードで前記ホストから受信するデータ群に含まれる第1データを前記第1メモリに格納する場合に、前記第2翻訳情報の複製であり前記第2メモリに格納された第3翻訳情報を更新するステップである。前記第4ステップは、前記第1ライトモードが終了する場合に前記第3翻訳情報を前記第2翻訳情報に反映するステップである。 According to one embodiment, a method for controlling a memory system includes a first step, a second step, a third step, and a fourth step. The first step is a first translation information indicating a correspondence between logical position information designated by a host and physical position information indicating a physical position in a nonvolatile first memory. In the volatile second memory. The second step is a step of managing second translation information that is the first translation information cached in the second memory. In the third step, when the first data included in the data group received from the host is stored in the first memory in a first write mode which is a mode for specifying an atomic write, the second translation information is copied. And updating the third translation information stored in the second memory. The fourth step is a step of reflecting the third translation information on the second translation information when the first write mode ends.
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。 Hereinafter, a memory system according to an embodiment will be described in detail with reference to the accompanying drawings. Note that the present invention is not limited by these embodiments.
(第1の実施形態)
図1は、第1の実施形態によるメモリシステムの構成の一例を示す図である。このメモリシステム1は、例えば、SSD(Solid State Drive)である。以下では、不揮発性メモリとしてNAND型のフラッシュメモリ(以下、NANDメモリという)を用いる場合を例に挙げる。
(First embodiment)
FIG. 1 is a diagram illustrating an example of a configuration of the memory system according to the first embodiment. The
メモリシステム1は、ホスト2と接続可能に構成されている。例えばCPU(Central Processing Unit)、パーソナルコンピュータ、携帯用情報機器、サーバ、等がホスト2に該当する。メモリシステム1とホスト2との間の通信のインタフェース規格としては、任意のインタフェース規格が採用可能である。2以上のホスト2がメモリシステム1に同時に接続されてもよい。ホスト2とメモリシステム1とは、ネットワークを介して接続されてもよい。
The
メモリシステム1は、ホスト2からのアクセス要求に応じてホスト2との間でデータの送受信を実行する。アクセス要求は、ライトコマンドおよびリードコマンドを含む。アクセス要求は、アクセス位置を論理的に示すアドレス情報を含む。アドレス情報としては、例えばLBA(Logical Block Address)が採用可能である。また、例えばメモリシステム1とホスト2との間の通信のインタフェース規格としてNVMeが採用される場合には、アドレス情報は、ネームスペースの識別情報とLBAとが含まれていてもよい。ネームスペースとは、ネームスペースの識別情報によって特定される論理アドレス空間である。即ち、NVMeが採用される場合には、メモリシステム1は、複数の論理アドレス空間を管理することが可能である。
The
メモリシステム1は、ホスト2からアトミックライトのモードのライトコマンドを受信することができる。アトミックライトとは、書き込みのモードのうちの1つである。アトミックライトのモードによれば、そのモードで書き込み要求されたユーザデータの受信が中断された場合には、そのモードで書き込み要求されたデータの書き込みを開始する直前の状態に戻ることが要求される。アトミックライトのモードが開始されてから終了するまでの間に書き込み要求された1以上のユーザデータについては、ホスト2の視点からみると、全てのユーザデータが書き込まれるか、または、1つのユーザデータも書き込まれない。
The
図2は、アトミックライトのモードのライトコマンドが送受信される一例を示す図である。アトミックライトのモードを、アトミックライトモード、と表記する。ホスト2は、アトミックライトモードのライトコマンドを送信する前に、アトミックライトのスタートコマンドを送信する(S101)。アトミックライトのスタートコマンドは、アトミックライトID(AW ID)が付されている。メモリシステム1は、複数のスレッドのアトミックライトを実行することができる。AW IDは、スレッドを区別するための識別情報である。スレッドとは、アトミックライトがスタートしてからアトミックライトが終了するまでに時系列順に発行される、アトミックライトモードの複数のライトコマンドの組み合わせである。メモリシステム1は、複数のスレッドが並行して入力されている場合には、各スレッドは、夫々個別に終了される。複数のスレッドのうちの一のスレッドは、前記一のスレッドを終了するためのエンドコマンドによって終了が要求される。
FIG. 2 is a diagram illustrating an example in which a write command in the atomic write mode is transmitted and received. An atomic write mode is referred to as an atomic write mode. The
なお、スレッドは、AW IDとは異なる情報によって識別されるようにメモリシステム1が構成されてもよい。例えば、アトミックライトの対象の空間がスレッド毎に論理アドレスによって指定されてもよい。例えば、1つのネームスペースには2以上のスレッドが実行できないように制約される場合には、スレッドは、ネームスペースの識別情報によって識別可能である。
Note that the
S101においては、ホスト2は、例えば、AW ID="0"のスレッドを開始する。ホスト2は、スタートコマンドの送信後に、そのスタートコマンドによって開始されたスレッドに属する、アトミックライトモードのライトコマンドを送信することができる(S102)。アトミックライトモードのライトコマンドは、AW IDを含む。メモリシステム1は、アトミックライトモードのライトコマンドに含まれるAW IDに基づいて、そのライトコマンドが属するスレッドを識別することができる。ホスト2は、アトミックライトモードのライトコマンドの間に、通常のライトコマンド、即ちアトミックライトモードでないライトコマンドを送信することができる(S103)。アトミックライトモードでないライトコマンドは、AW IDを含まない。または、アトミックライトモードでないライトコマンドは、AW IDとして無効値(例えば「NULL」)が含まれていてもよい。ホスト2は、1つのスレッドを終える前に、他のスレッドを開始するスタートコマンドを送信したり(S104)、前記他のスレッドのライトコマンドを送信したりすることができる(S105)。他のスレッドのライトコマンドとは、他のスレッドに属するライトコマンドの意である。S105の処理では、AW ID="0"のスレッドの終了前に、AW ID="1"のスレッドが開始されている。ホスト2は、AW ID="0"のスレッドを終了する前に、AW ID="1"のスレッドを終了するためのエンドコマンドを送信することができる(S106)。エンドコマンドがAW IDを含んでいることによって、メモリシステム1は、終了するスレッドを認識することができる。なお、ホスト2は、AW ID="1"のスレッドを終了する前にAW ID="0"のスレッドを終了するエンドコマンドを送信することも可能である。図2の例においては、ホスト2は、再びAW ID="0"のスレッドのライトコマンドを送信し(S107)、その後、AW ID="0"のスレッドを終了するエンドコマンドを送信している(S108)。
In S101, the
メモリシステム1は、ホストインタフェース部11、NANDメモリ12、NANDコントローラ13、RAM(Random Access Memory)14、および制御部15を備える。
The
制御部15は、例えばCPU(Central Processing Unit)などの演算装置によって構成される。制御部15は、予めメモリシステム1内の所定の位置に格納されているプログラムを実行することによって、データ処理部151および管理部152として機能する。プログラムの格納位置は任意に設計される。例えば、プログラムは、予めNANDメモリ12に格納され、起動時にRAM14にロードされる。制御部15は、RAM14にロードされたプログラムを実行する。データ処理部151の機能のうちの一部または全部はハードウェアによって実現されてもよい。管理部152の機能のうちの一部または全部はハードウェアによって実現されてもよい。
The
データ処理部151は、ホスト2とNANDメモリ12との間のデータ転送を実行する。データ処理部151は、NANDメモリ12にユーザデータを書き込む場合には、当該ユーザデータに対応する書き込みログ1223(後述する)をNANDメモリ12に書き込む。
The
管理部152は、管理情報の管理を実行する。管理情報は、翻訳情報、統計情報、ブロック情報、などを含む。翻訳情報は、論理アドレスとNANDメモリ12内の物理的な位置を示すアドレス情報(物理アドレス)との対応関係を記録した情報である。統計情報は、メモリシステム1の使用状況、パワーオン時間、電源断の回数、などを記録した情報である。ブロック情報は、例えば、書き換え回数、有効なデータ数、などを、物理ブロック(後述する)毎に記録した情報である。管理部152は、論理アドレスと物理アドレスとの間の翻訳を実行する。
The
管理部152は、スレッドが中断された場合に、翻訳情報を、そのスレッドが開始される前の状態に戻す処理(以降、巻き戻し処理)を実行する。スレッドが中断されるとは、そのスレッドを構成する一連のライトコマンドによって書き込み要求されたユーザデータの全部をNANDメモリ12に書き込めない事象をいう。例えば、スレッドの受信の途中でメモリシステム1が電源断された場合に、そのスレッドが中断される。
When the thread is interrupted, the
ホストインタフェース部11は、ホスト2と通信を行うためのインタフェース装置である。例えばホストインタフェース部11は、データ処理部151の制御下で、ホスト2とRAM14との間のユーザデータの転送を実行する。
The
NANDコントローラ13は、NANDメモリ12に対するアクセスを行うためのインタフェース装置である。NANDコントローラ13は、制御部15による制御下で、RAM14とNANDメモリ12との間のユーザデータまたは管理情報の転送を実行する。詳細を省略するが、NANDコントローラ13は、誤り訂正処理を行うことができる。
The
NANDメモリ12は、ストレージとして機能する不揮発性の記憶媒体である。NANDメモリ12は、1以上のチップによって構成される。
The
図3は、第1の実施形態におけるNANDメモリ12でのデータの処理単位と位置の管理単位とを模式的に示す図である。NANDメモリ12を構成するチップの内部において、データの記憶領域は、複数の物理ブロックによって構成される。各物理ブロックは、複数の物理ページによって構成される。物理ページは、ライトおよびリードのアクセスが可能な単位である。物理ブロックは、一括してデータの消去が可能な最小単位が物理ブロックである。
FIG. 3 is a diagram schematically illustrating a data processing unit and a position management unit in the
データの記憶領域には、1物理ページより小さい単位に対して物理アドレスが割り当てられる。ここでは、物理アドレスが割り当てられる単位を、クラスタ、と表記する。翻訳情報は、クラスタ単位で管理される。1クラスタのサイズは、ホスト2からの最小のアクセス単位と等しくてもよいし異なっていてもよい。図3の例では、1物理ページは10個のクラスタで構成されるものとされている。図3の例では、1物理ブロックは、n(nは自然数)個の物理ページで構成されるものとされている。
In the data storage area, a physical address is assigned to a unit smaller than one physical page. Here, a unit to which a physical address is assigned is referred to as a cluster. Translation information is managed in cluster units. The size of one cluster may be equal to or different from the minimum access unit from the
RAM14は、データを一時的に記憶するための記憶媒体である。RAM14としては、例えば、NANDメモリ12よりも高速な種類の記憶媒体が採用可能である。RAM14としては、例えば、揮発性または不揮発性の記憶媒体が採用可能である。RAM14としては、例えば、DRAM(Dynamic RAM)、SRAM(Static RAM)、FeRAM(Ferroelectric RAM)、MRAM(Magnetoresistive RAM)、PRAM(Phase change RAM)などが採用可能である。
The
NANDメモリ12には、管理情報領域121およびユーザデータ領域122が確保されている。各領域121、122は、例えば、複数の物理ブロックによって構成される。ユーザデータ領域122は、ホスト2から書き込み要求された1以上のデータ(ユーザデータ1221)およびログ情報1222が格納される。ここでは、各ユーザデータ1221のサイズはクラスタのサイズである、として説明する。
In the
管理情報領域121は、第1テーブル1211が格納される。また、管理情報領域121は、1以上の第2テーブル1213が格納されるLUT領域1212が確保されている。LUT領域1212は、例えば複数の物理ブロックによって構成される。第1テーブル1211および1以上の第2テーブル1213は、翻訳情報を構成する。
The
RAM14は、ライトバッファ141、リードバッファ142、およびLUTキャッシュ領域144が確保されている。また、RAM14は、第1テーブルキャッシュ143が格納される。
In the
ライトバッファ141およびリードバッファ142は、ホスト2とNANDメモリ12との間のデータ転送のバッファである。ライトバッファ141およびリードバッファ142は、FIFOのルールに従ってデータが入出力される。ライトバッファ141は、ホストインタフェース部11がホスト2から受信したユーザデータが格納される。ライトバッファ141に格納されたユーザデータは、NANDコントローラ13によってユーザデータ領域122に書き込まれる。リードバッファ142は、NANDコントローラ13によって、ユーザデータ領域122から読み出されたユーザデータ1221が格納される。リードバッファ142に格納されたユーザデータ1221は、ホストインタフェース部11によってホスト2に転送される。
The
第1テーブル1211および1以上の第2テーブル1213は、RAM14にキャッシュされ、RAM14上で更新される。LUTキャッシュ領域144は、第2テーブル1213がキャッシュされる領域である。LUTキャッシュ領域144にキャッシュされた第2テーブル1213を、第2テーブルキャッシュ145と表記する。第1テーブルキャッシュ143は、RAM14にキャッシュされた第1テーブル1211である。
The first table 1211 and one or more second tables 1213 are cached in the
図4、図5、および図6を用いることによって、翻訳情報を説明する。管理部152は、翻訳情報を、2以上の階層に階層化する。ここでは一例として、管理部152は、翻訳情報を2階層のテーブル群として管理する。第1テーブル1211および第1テーブルキャッシュ143は、第1階層目のテーブルに該当する。1以上の第2テーブル1213および1以上の第2テーブルキャッシュ145は第2階層目のテーブルに該当する。
The translation information will be described with reference to FIG. 4, FIG. 5, and FIG. The
管理部152は、論理アドレス空間を複数の部分空間に分割する。部分空間を、リージョン(Region)と表記する。図4は、リージョンを説明する図である。各リージョンは、論理アドレスが連続する複数のクラスタを含む。ここでは、各リージョンは、m(mは自然数)個のクラスタを含む。各リージョンは、リージョン番号(Region No.)によって識別される。リージョン番号は、例えば、論理アドレスを右方向にシフトすることによって得られる。リージョン#iは、論理アドレスi*mから論理アドレス((i+1)*m-1)までの範囲である。リージョン内のアドレスは、リージョンの先頭からのオフセットによって表現される。論理アドレスの所定の桁よりも上位桁がリージョン番号に相当し、論理アドレスの前記所定の桁よりも下位桁がリージョン内のアドレスに相当する。
The
図5は、第1テーブルキャッシュ143、第2テーブル1213、および第2テーブルキャッシュ145を説明する図である。第1テーブルキャッシュ143は、リージョン毎にテーブルアドレスが記録される。テーブルアドレスとは、第2テーブル1213または第2テーブルキャッシュ145の格納位置を物理的に示すアドレス情報である。ここでは、第1テーブルキャッシュ143は、第2テーブルキャッシュ145の格納位置を示すRAM14内のテーブルアドレスと、第2テーブル1213の格納位置を示すNANDメモリ12内のテーブルアドレスと、の両方が、リージョン毎に記録される。あるリージョンに関して第2テーブルキャッシュ145がキャッシュされていない場合には、当該リージョンに対応する第2テーブルキャッシュ145の格納位置のテーブルアドレスとして、無効値(例えば「NULL」)が記録される。管理部152は、RAM14内のテーブルアドレスとして「NULL」が記録されているか否かに基づいて、前記あるリージョンに関して第2テーブルキャッシュ145がキャッシュされているか否かを判定することができる。なお、各リージョンに関して第2テーブルキャッシュ145がキャッシュされているか否かの管理は、上記の手法に限定されない。
FIG. 5 is a diagram illustrating the
図6は、第2テーブル1213のデータ構成例を示す図である。第2テーブル1213および第2テーブルキャッシュ145は、例えば同じデータ構成を有している。第2テーブル1213は、ユーザデータ1221の格納位置を物理的に示すアドレス(データアドレス)が、リージョン内のアドレス毎に記録される。各リージョンがm個のクラスタによって構成される場合には、第2テーブル145は、少なくともm個のエントリを備える。物理アドレスが対応づけられていない論理アドレスに対しては、第2テーブル145に無効値(例えば「NULL」)が記録される。
FIG. 6 is a diagram illustrating a data configuration example of the second table 1213. The second table 1213 and the
管理部152は、NANDメモリ12からRAM14に翻訳情報を読み出して、RAM14に読み出された翻訳情報を使用する。使用するとは、更新することおよび参照することを含む。管理部152は、例えば、第1テーブル1211の全エントリを第1テーブルキャッシュ143としてRAM14に読み出す。管理部152は、例えば、LUT領域1212に格納されている1以上の第2テーブル1213のうち、少なくとも使用の対象のエントリを含む第2テーブル1213をLUTキャッシュ領域144に読み出す。
The
管理部152がRAM14に読み出された翻訳情報を更新することによって、RAM14に格納されている翻訳情報は、NANDメモリ12に格納されている翻訳情報と異なる状態になる。NANDメモリ12に格納されている翻訳情報と異なるRAM14に格納されている翻訳情報の状態を、ダーティと表記する。管理部152は、翻訳情報のうちのダーティな部分を所定のタイミングでNANDメモリ12に書き込む。翻訳情報のうちのダーティな部分は、NANDメモリ12に書き込まれることによって、非ダーティの状態に遷移する。ダーティであるか非ダーティであるかの管理の単位は任意に設計される。管理部152は、例えば、第1テーブルキャッシュ143に関し、エントリ毎にダーティであるか非ダーティであるかを管理する。管理部152は、例えば、第2テーブルキャッシュ145毎にダーティであるか非ダーティであるかを管理する。
When the
例えば、データ処理部151は、ライトバッファ141からNANDメモリ12にユーザデータを書き込む際に、ユーザデータの位置を示す論理アドレスに関し、当該論理アドレスと物理アドレスとの対応関係を更新するための更新要求を、管理部152に送信する。管理部152は、更新要求によって指定される論理アドレスを含む第2テーブルキャッシュ145を、当該更新要求に基づいて更新する。管理部152は、更新した第2テーブルキャッシュ145を、ダーティとして管理する。また、管理部152は、第1テーブルキャッシュ143のレコードのうち、ダーティな第2テーブルキャッシュ145を指すレコードを、ダーティとして管理する。管理部152は、ダーティな第2テーブルキャッシュ145をLUT領域1212に書き込んだ後、当該第2テーブルキャッシュ145を非ダーティとして管理する。管理部152は、第1テーブルキャッシュ143のレコードのうちのダーティなレコードを第2テーブルキャッシュ145のLUT領域1212への書き込みに応じて更新後、更新したレコードを管理情報領域121に書き込む。管理部152は、更新したレコードを管理情報領域121に書き込んだ後、当該レコードを非ダーティとして管理する。
For example, when writing user data from the
翻訳情報のうちのダーティな部分をNANDメモリ12に書き込むタイミングは、任意に設計される。例えば、翻訳情報のうちのダーティな部分の合計サイズに基づいてタイミングが決定される。例えば、翻訳情報のうちのダーティな部分の合計サイズが所定のしきい値を超えたタイミングで前記ダーティな部分のうちの一部または全部がNANDメモリ12に書き込まれる。また、電源断時には、翻訳情報のうちの少なくともダーティな部分がNANDメモリ12に書き込まれる。メモリシステム1がバッテリを具備する場合には、電源断時には、管理部152は、当該バッテリに蓄えられたエネルギーによって駆動されてもよい。電源断時には、翻訳情報のうちの少なくともダーティな部分は、管理情報領域121に書き込まれる。NANDメモリ12が緊急に管理情報を退避するための領域(緊急退避領域)を管理情報領域121およびユーザデータ領域122の他に有する場合には、翻訳情報のうちの少なくともダーティな部分は、緊急退避領域に書き込まれ得る。このように、管理部152は、翻訳情報のうちのダーティな部分を可能な限り喪失しないように、RAM14内の翻訳情報を管理する。
The timing of writing the dirty part of the translation information into the
なお、第1テーブル1211は、第1テーブルキャッシュ143と同一のデータ構成を有していてもよいし、LUTキャッシュ領域144内のテーブルアドレスの記録が省略されたデータ構成を有していてもよい。
The first table 1211 may have the same data configuration as the
図7は、ログ情報1222のデータ構成例を示す図である。ログ情報1222は、1以上の書き込みログ1223を含む。各書き込みログ1223は、ユーザデータ1221がNANDメモリ12に書き込まれた際の論理アドレスと物理アドレスとの対応関係を、クラスタ単位で示す情報である。例えば、1つのログ情報1222は、対応する1つの物理ページに含まれる全てのクラスタの書き込みログ1223を含む。ログ情報1222は、何れかのユーザデータ1221と対応する。例えば、ログ情報1222は、各物理ブロック内の所定位置のクラスタ(たとえば最後のクラスタ)に書き込まれる。本実施形態では、アトミックライトモードのスレッドが中断された場合に当該スレッドの最初のライトコマンドによって書き込み要求されたユーザデータをNANDメモリ12に書き込む前の状態に翻訳情報を戻すための情報が、書き込みログ1223に付加されている。
FIG. 7 is a diagram illustrating a data configuration example of the
書き込みログ1223は、論理アドレス200、旧物理アドレス201、新物理アドレス202、AW ID203、およびStart End Flag204を含む。旧物理アドレス201は、ユーザデータ1221の書き込み前に論理アドレス200に対応づけられていた物理アドレスである。新物理アドレス202は、対応するユーザデータ1221が書き込まれることによって論理アドレス200に新たに対応付けられた物理アドレスである。言い換えると、新物理アドレス202は、対応するユーザデータ1221が書き込まれた位置を示す物理アドレスである。AW ID203は、アトミックライトモードで書き込み要求されたユーザデータ1221、の書き込みログ1223に付される。AW ID203は、アトミックライトモードのライトコマンドに含まれるAW IDと等しい。Start End Flag204は、スレッドの最初に書き込まれたユーザデータ1221であるか否かを示すスタートフラグと、スレッドの最後に書き込まれたユーザデータ1221であるか否かを示すエンドフラグと、の組み合わせである。即ち、Start End Flag204は、少なくとも2ビットのサイズを有する。Start End Flag204は、スタートコマンドおよびエンドコマンドに基づいて操作される。
The
アトミックライトモードでないライトコマンドによって書き込み要求されたユーザデータをライトバッファ141からNANDメモリ12に書き込む場合について下記に説明する。データ処理部151は、書き込みログ1223に、論理アドレス200、旧物理アドレス201、および新物理アドレス202を書き込む。データ処理部151は、AW ID203およびStart End Flag204を使用しない。例えば、データ処理部151は、AW ID203には無効値(「NULL」など)を記録する。データ処理部151は、Start End Flag204には、スタートフラグもエンドフラグも立てない。
A case where user data requested to be written by a write command other than the atomic write mode is written from the
アトミックライトモードのライトコマンドによって書き込み要求されたユーザデータをライトバッファ141からNANDメモリ12に書き込む場合について下記に説明する。データ処理部151は、書き込みログ1223に、論理アドレス200、旧物理アドレス201、および新物理アドレス202の他に、AW ID203を記録する。データ処理部151は、各スレッドの最初のライトコマンドによって書き込み要求されたユーザデータに対しては、書き込みログ1223のStart End Flag204に、スタートフラグを立てる。データ処理部151は、各スレッドの最後のライトコマンドによって書き込み要求されたユーザデータに対しては、書き込みログ1223のStart End Flag204に、エンドフラグを立てる。データ処理部151は、各スレッドに属するライトコマンドのうちの、各スレッドの最初のライトコマンドおよび各スレッドの最後のライトコマンドの何れにも該当しないライトコマンドによって書き込み要求されたユーザデータに対しては、Start End Flag204には、スタートフラグもエンドフラグも立てない。
A case in which user data requested to be written by an atomic write mode write command is written from the
例えば、エンドコマンドは、データ処理部151によってライトバッファ141に格納される。データ処理部151は、アトミックライトモードのライトコマンドによって書き込み要求されたユーザデータをNANDメモリ12に書き込む際に、当該書き込み対象のユーザデータの後に当該書き込み対象のユーザデータと同一のスレッドのライトコマンドによって書き込み要求されたユーザデータの受信を介在することなくエンドコマンドの受信があったか否かを、ライトバッファ141を参照することによって判定する。書き込み対象のユーザデータと同一のスレッドのライトコマンドによって書き込み要求されたユーザデータの受信を介在することなくエンドコマンドの受信があった場合には、データ処理部151は、書き込み対象のユーザデータがスレッドの最後のライトコマンドによって書き込み要求されたユーザデータであると判定する。
For example, the end command is stored in the
スレッドが中断された場合、当該中断されたスレッドのライトコマンドによって書き込み要求され、かつ、NANDメモリ12に書き込み済みのユーザデータが存在する場合、当該ユーザデータの格納位置を示す物理アドレスは、巻き戻し処理によって、論理アドレスに対応付けられた状態から論理アドレスに対応づけられていない状態に遷移する。論理アドレスに対応づけられていない状態のユーザデータは、ホスト2からアクセスすることが不可能である。したがって、ホスト2の視点から見ると、スレッドが中断されるまでにメモリシステム1に送信したユーザデータはNANDメモリ12に書き込まれなかったものとして見える。即ち、スレッドが中断された場合には、ホスト2の視点から見ると、メモリシステム1はそのスレッドが開始される前の状態に戻ったように見えるため、アトミックライトの動作が実現する。
If the thread is interrupted, a write request is issued by the write command of the interrupted thread, and if there is already-written user data in the
図8は、巻き戻し処理の一例を説明するフローチャートである。まず、管理部152は、スレッドの中断の発生時点での第1テーブルキャッシュ143をRAM14に復元する。
FIG. 8 is a flowchart illustrating an example of the rewinding process. First, the
続いて、管理部152は、中断の発生時に最後に書いた書き込みログ1223から、書き込み順とは逆順に、所定個数の書き込みログ1223を読み出す(S201)。管理部152は、読み出した所定個数の書き込みログ1223に基づいて、キャンセル対象のスレッドを特定する(S202)。
Subsequently, the
具体的には、例えば、管理部152は、読み出した所定個数の書き込みログ1223から、全てのAW IDを抽出する。例えば、読み出した所定個数の書き込みログ1223がAW ID="0"が記録された書き込みログ1223、AW ID="1"が記録された書き込みログ1223、およびAW ID="2"が記録された書き込みログ1223、を含む場合には、管理部152は、AW ID="0"、AW ID="1"、およびAW ID="2"を抽出する。そして、管理部152は、読み出した所定個数の書き込みログ1223から、エンドフラグを有する書き込みログ1223を検索する。エンドフラグを有する書き込みログ1223が取得された場合には、管理部152は、エンドフラグを有する書き込みログ1223に記録されたAW IDを取得する。記録されたAW IDを除外することによって、中断されたスレッドを示すAW IDを取得する。管理部152は、中断されたスレッドをキャンセル対象のスレッドとして特定する。
Specifically, for example, the
S202の処理の後、管理部152は、中断の発生時に最後に書いた書き込みログ1223を選択する(S203)。そして、管理部152は、選択された書き込みログ1223は、キャンセル対象のスレッドにかかる書き込みログ1223であるか否かを判定する(S204)。選択された書き込みログ1223は、中断されたスレッドにかかる書き込みログ1223であるか否かは、選択された書き込みログ1223に記録されたAW ID203が中断されたスレッドを示すAW IDの何れかに含まれるか否かに基づいて判定可能である。
After the processing in S202, the
選択された書き込みログ1223がキャンセル対象のスレッドにかかる書き込みログ1223である場合(S204、Yes)、管理部152は、論理アドレス200と旧物理アドレス201とを取得する。そして、管理部152は、取得した論理アドレス200に翻訳情報において対応付けられた物理アドレスを、取得した旧物理アドレス201に変更する(S205)。
When the selected
例えば、管理部152は、取得した論理アドレス200にかかる対応関係を記録した第2テーブル1213の格納位置を、復元された第1テーブルキャッシュ143を参照することによって取得する。そして、管理部152は、取得された格納位置から第2テーブル1213を読み出して、読み出された第2テーブル1213をLUTキャッシュ領域144に第2テーブルキャッシュ145として格納する。管理部152は、第2テーブルキャッシュ145をLUTキャッシュ領域144に格納するに応じて、第1テーブルキャッシュ143を更新する。そして、管理部152は、第2テーブルキャッシュ145上で、S205の処理による変更を実行する。管理部152は、S205の処理によって変更された第2テーブルキャッシュ145を、ダーティとして管理する。管理部152は、第1テーブルキャッシュ143のレコードのうち、S205の処理によって変更された第2テーブルキャッシュ145を指すレコードを、ダーティとして管理する。
For example, the
S205の処理に続いて、管理部152は、選択された書き込みログ1223にスタートフラグが立っているか否かを判定する(S206)。選択された書き込みログ1223にスタートフラグが立っている場合(S206、Yes)、管理部152は、選択された書き込みログ1223に記録されたAW ID203が示すスレッドを、キャンセル対象のスレッドから削除する(S207)。選択された書き込みログ1223にスタートフラグが立っていない場合(S206、No)、またはS207の処理の後、管理部152は、キャンセル対象のスレッドがまだ存在するか否かを判定する(S208)。
Subsequent to the processing of S205, the
選択された書き込みログ1223がキャンセル対象のスレッドにかかる書き込みログ1223でない場合(S204、No)、またはキャンセル対象のスレッドがまだ存在する場合(S208、Yes)、管理部152は、現在選択中の書き込みログ1223よりも1つ前に書き込まれた書き込みログ1223を新たに選択し(S209)、新たに選択された書き込みログ1223についてS204の処理を実行する。キャンセル対象のスレッドが存在しない場合には(S208、No)、管理部152は、巻き戻し処理を終了する。
When the selected
このように、第1の実施形態によれば、データ処理部151は、ユーザデータのNANDメモリ12への書き込み毎に書き込みログ1223を記録する。また、データ処理部151は、アトミックライトのスタートおよびアトミックライトの終了を書き込みログ1223に記録する。管理部152は、スレッドが中断された場合には、書き込みログ1223を書き込み順とは逆の順番に読み出すことによって、翻訳情報をスレッドが中断される前の状態に戻す。これによって、アトミックライトの動作が実現する。
As described above, according to the first embodiment, the
なお、以上の説明によれば、データ処理部151は、ユーザデータを書き込み要求したライトコマンドがアトミックライトモードのライトコマンドであるかアトミックライトモードでないライトコマンドであるかに関わらず、そのユーザデータをNANDメモリ12に書き込む際に更新要求を発行する。データ処理部151は、ユーザデータを書き込み要求したライトコマンドがアトミックライトモードのライトコマンドである場合には更新要求を内部にキューイングしておき、内部にキューイングされた更新要求をエンドコマンドの受信を確認した後に管理部152に送信してもよい。これにより、スレッドの終了後に翻訳情報が更新されるので、巻き戻し処理を行うことなくアトミックライトの動作が実現する。
According to the above description, the
また、以上の説明によれば、管理部152は、翻訳情報のうちのダーティな部分を可能な限り喪失しないように、RAM14内の翻訳情報を管理する。翻訳情報のうちのダーティな部分を喪失した場合には、管理部152は、例えば、書き込み順とは逆順に書き込みログ1223を参照することによって、翻訳情報を再構築する。管理部152は、翻訳情報を再構築する際には、キャンセル対象のスレッドを特定し、書き込み順とは逆順に書き込みログ1223を読み出す。管理部152は、キャンセル対象のスレッドにかかる書き込みログ1223ではない書き込みログ1223が読み出され、かつ、当該書き込みログ1223の論理アドレス200が翻訳情報において何れの物理アドレスにも対応付けられていない場合には、当該書き込みログ1223に記録されている論理アドレス200と当該書き込みログ1223に記録されている新物理アドレス202との対応関係を翻訳情報に上書き形式で記録する。管理部152は、キャンセル対象のスレッドにかかる書き込みログ1223が読み出された場合には、次の書き込みログ1223を読み出す。管理部152は、順次読み出された書き込みログ1223に対して上述の処理を行うことによって、翻訳情報を再構築する。
Further, according to the above description, the
(第2の実施形態)
図9は、第2の実施形態によるメモリシステムの構成の一例を示す図である。なお、第1の実施形態と同じ機能を有する構成要素には第1の実施形態と同じ名称および符号を付す。第1の実施形態と同じ機能を有する構成要素について、説明を省略する。
(Second embodiment)
FIG. 9 is a diagram illustrating an example of a configuration of a memory system according to the second embodiment. Note that components having the same functions as those of the first embodiment are given the same names and symbols as those of the first embodiment. A description of components having the same functions as those of the first embodiment will be omitted.
メモリシステム1aは、ホスト2と接続可能である。メモリシステム1aは、複数のホスト2に接続可能に構成されてもよい。メモリシステム1aは、第1の実施形態のメモリシステム1と同様に、ホスト2からアトミックライトモードのライトコマンドを受信することができる。メモリシステム1aは、ホストインタフェース部11、NANDメモリ12、NANDコントローラ13、RAM14、および制御部15を備える。制御部15は、予めメモリシステム1a内の所定の位置に格納されているプログラムを実行することによって、データ処理部151aおよび管理部152aとして機能する。
The memory system 1a is connectable to the
データ処理部151aは、ホスト2とNANDメモリ12との間のデータ転送を実行する。管理部152aは、管理情報の管理を実行する。管理情報は、翻訳情報、統計情報、ブロック情報、などを含む。管理部152aは、論理アドレスと物理アドレスとの間の翻訳を実行する。管理部152aは、翻訳情報のうちのダーティな部分を可能な限り喪失しないように、RAM14内の翻訳情報を管理する。
The
NANDメモリ12には、管理情報領域121およびユーザデータ領域122が確保されている。ユーザデータ領域122は、1以上のユーザデータ1221およびログ情報1222が格納される。第2の実施形態においては、ログ情報1222は記録されなくてもよい。管理情報領域121は、第1テーブル1211が格納される。また、管理情報領域121は、1以上の第2テーブル1213が格納されるLUT領域1212が確保されている。RAM14は、ライトバッファ141、リードバッファ142、およびLUTキャッシュ領域144が確保されている。RAM14は、第1テーブルキャッシュ143が格納される。LUTキャッシュ領域144は、第2テーブル1213が格納される。
In the
図10は、第2テーブル1213の第2の実施形態のキャッシュを説明する図である。第2の実施形態においては、各リージョンの第2テーブル1213は、1つの第2テーブルキャッシュ145aとしてキャッシュされ得る。また、各リージョンの第2テーブル1213は、1つの第2テーブルキャッシュ145aとしてキャッシュされると同時に、1以上の第2テーブルキャッシュ145bとしてもキャッシュされ得る。各第2テーブルキャッシュ145bは、対応するリージョンの第2テーブルキャッシュ145aが複製されることによって生成される。あるリージョンに関する第2テーブルキャッシュ145bの個数は、そのリージョンの第2テーブル1213の使用を必要とするスレッドの数に等しい。即ち、スレッド毎に第2テーブルキャッシュ145bがキャッシュされる。
FIG. 10 is a diagram illustrating the cache of the second table 1213 according to the second embodiment. In the second embodiment, the second table 1213 of each region can be cached as one
第2テーブルキャッシュ145aおよび第2テーブルキャッシュ145bは、ポインタ210およびAW ID211が記録される。第2テーブルキャッシュ145bのAW ID211は、その第2テーブルキャッシュ145bの使用を必要とするスレッドを示す。
The
第2テーブルキャッシュ145aの格納位置は、第1テーブルキャッシュ143によって示される。第2テーブルキャッシュ145bの格納位置は、第1テーブルキャッシュ143によって示されない。ポインタ210は、第2テーブルキャッシュ145aから、その第2テーブルキャッシュ145aを複製元とする1以上の第2テーブルキャッシュ145bの格納位置を参照するための、リスト構造を構成する。即ち、第2テーブルキャッシュ145aを複製元とする1以上の第2テーブルキャッシュ145bが存在する場合には、第2テーブルキャッシュ145aのポインタ210は、1以上の第2テーブルキャッシュ145bのうちの一の第2テーブルキャッシュ145bの格納位置を示す。他に第2テーブルキャッシュ145bが存在しない場合には、前記一の第2テーブルキャッシュ145bのポインタ210には、リスト構造の終端を示す値(例えば「NULL」)が記録される。他の1以上の第2テーブルキャッシュ145bが存在する場合には、前記一の第2テーブルキャッシュ145bのポインタ210は、他の1以上の第2テーブルキャッシュ145bのうちの一の第2テーブルキャッシュ145bの格納位置を示す。第2テーブルキャッシュ145aを複製元とする第2テーブルキャッシュ145bが存在しない場合には、その第2テーブルキャッシュ145aのポインタ210には、例えばリスト構造の終端を示す値が記録される。
The storage position of the
なお、第2テーブルキャッシュ145aと、その第2テーブルキャッシュ145aを複製元とする1以上の第2テーブルキャッシュ145bと、の対応関係の管理の手法は、ポインタ210のリスト構造を用いた管理の手法だけに限定されない。第2テーブルキャッシュ145aと、その第2テーブルキャッシュ145aを複製元とする1以上の第2テーブルキャッシュ145bと、の対応関係は、別途設けられたテーブルを用いて管理されてもよい。また、第1テーブルキャッシュ143に専用のエントリが設けられ、当該専用のエントリによって第2テーブルキャッシュ145aと、その第2テーブルキャッシュ145aを複製元とする1以上の第2テーブルキャッシュ145bと、の対応関係が管理されてもよい。ポインタ210は、双方向のポインタであってもよい。
A method of managing the correspondence between the
アトミックライトモードのライトコマンドによって書き込み要求されたユーザデータのNANDメモリ12への書き込みの際には、管理部152aは、対応するスレッドの第2テーブルキャッシュ145bを使用する。アトミックライトモードでないライトコマンドによって書き込み要求されたユーザデータのNANDメモリ12への書き込みの際、および、NANDメモリ12からのユーザデータのリードの際には、管理部152aは、第2テーブルキャッシュ145aを使用する。
When writing the user data requested to be written by the write command in the atomic write mode to the
図11は、第2の実施形態のデータ処理部151aの動作を説明するフローチャートである。データ処理部151aは、ライトコマンドの受信があったか否かを判定する(S301)。ライトコマンドの受信があった場合(S301、Yes)、データ処理部151aは、当該ライトコマンドによって書き込み要求されたユーザデータをライトバッファ141に格納する(S302)。ライトコマンドの受信がない場合(S301、No)、データ処理部151aは、S302の処理をスキップする。
FIG. 11 is a flowchart illustrating the operation of the
続いて、データ処理部151aは、書き込みタイミングに至ったか否かを判定する(S303)。任意のタイミングを書き込みタイミングに設定することが可能である。例えば、ライトバッファ141に格納されているユーザデータの合計サイズに基づいて書き込みタイミングが決定される。例えば、書き込みタイミングは、ライトバッファ141に格納されているユーザデータの合計サイズが所定のしきい値を超えたタイミングである。例えば、書き込みタイミングは、ホスト2からFlushコマンドを受信したタイミングである。Flushコマンドとは、ライトバッファ141に格納され、かつ、NANDメモリ12に書き込まれていない全てのユーザデータを、NANDメモリ12に書き込ませるためのコマンドである。
Subsequently, the
書き込みタイミングに至った場合(S303、Yes)、データ処理部151aは、ライトバッファ141からユーザデータを1つ選択する(S304)。データ処理部151aは、選択されたユーザデータをNANDメモリ12に書き込む(S305)。データ処理部151aは、書き込まれたユーザデータはアトミックライトモードのライトコマンドで書き込み要求されたユーザデータであるか否かを判定する(S306)。書き込まれたユーザデータはアトミックライトモードのライトコマンドで書き込み要求されたユーザデータでない場合(S306、No)、データ処理部151aは、第1更新要求を管理部152aに送信する(S307)。書き込まれたユーザデータはアトミックライトモードのライトコマンドで書き込み要求されたユーザデータである場合(S306、Yes)、データ処理部151aは、第2更新要求を管理部152aに送信する(S308)。
When the write timing has come (S303, Yes), the
第1更新要求および第2更新要求は、翻訳情報の更新のための要求である。第1更新要求は、論理アドレス、旧物理アドレス、および新物理アドレスを少なくとも含む。第1更新要求に含まれる論理アドレスは、ユーザデータを書き込み要求したライトコマンドによって指定された論理アドレスである。旧物理アドレスは、第1更新要求に含まれる論理アドレスに、ユーザデータの書き込み前に対応づけられていた物理アドレスである。新物理アドレスは、ユーザデータが書き込まれることによって論理アドレスに新たに対応付けられた物理アドレスである。 The first update request and the second update request are requests for updating the translation information. The first update request includes at least a logical address, an old physical address, and a new physical address. The logical address included in the first update request is a logical address specified by a write command requesting writing of user data. The old physical address is a physical address associated with the logical address included in the first update request before writing the user data. The new physical address is a physical address newly associated with a logical address by writing user data.
第2更新要求は、論理アドレス、旧物理アドレス、および新物理アドレスの他に、AW IDを少なくとも含む。第2更新要求に含まれるAW IDは、書き込まれたユーザデータを書き込み要求したライトコマンドが属するスレッドを示す。 The second update request includes at least the AW ID in addition to the logical address, the old physical address, and the new physical address. The AW ID included in the second update request indicates the thread to which the write command that requested the written user data belongs.
書き込みタイミングに至っていない場合(S303、No)、またはS307の処理、またはS308の処理の後、データ処理部151aは、エンドコマンドの受信があったか否かを判定する(S309)。エンドコマンドの受信があった場合(S309、Yes)、データ処理部151aは、更新確定要求を管理部152aに送信する(S310)。
If the write timing has not come (S303, No), or after the processing of S307 or S308, the
更新確定要求は、エンドコマンドによって終了せしめられるスレッドに対応する第2テーブルキャッシュ145bを、複製元の第2テーブルキャッシュ145aに反映させるための要求である。更新確定要求は、エンドコマンドによって終了せしめられるスレッドを示すAW IDを少なくとも含む。なお、データ処理部151aは、エンドコマンドに含まれるAW IDによって特定されるスレッドのライトコマンドによって書き込み要求された全てのライトデータについて第2更新要求を送信した後に、更新確定要求を送信する。
The update confirmation request is a request for reflecting the
エンドコマンドの受信がない場合(S309、No)、またはS310の処理の後、データ処理部151aは、リードコマンドの受信があったか否かを判定する(S311)。リードコマンドの受信があった場合(S311、Yes)、データ処理部151aは、翻訳要求を管理部152aに送信する(S312)。翻訳要求は、リードコマンドによって指定された論理アドレスを少なくとも含む。管理部152aは、翻訳要求に含まれる論理アドレスを翻訳し、翻訳によって得られた物理アドレスをデータ処理部151aに返す。データ処理部151aは、返された物理アドレスが示す位置からライトバッファ141にユーザデータを読み出す(S313)。データ処理部151aは、ライトバッファ141に読み出されたユーザデータをホスト2に送信する(S314)。S314の処理の後、データ処理部151aは、S301の処理を再び実行する。
When the end command has not been received (S309, No), or after the process of S310, the
図12は、第2の実施形態の管理部152aの動作を説明するフローチャートである。管理部152aは、第1更新要求の受信があったか否かを判定する(S401)。第1更新要求の受信があった場合(S401、Yes)、管理部152aは、第1更新要求に含まれる論理アドレスにかかる第2テーブル1213がLUTキャッシュ領域144にキャッシュされているか否かを判定する(S402)。該当の第2テーブル1213がLUTキャッシュ領域144にキャッシュされていない場合(S402、No)、管理部152aは、該当の第2テーブル1213を、第2テーブルキャッシュ145aとしてLUTキャッシュ領域144に読み出す(S403)。管理部152aは、第2テーブルキャッシュ145aのポインタ210およびAW ID211に「NULL」を記録する。
FIG. 12 is a flowchart illustrating an operation of the
該当の第2テーブル1213がLUTキャッシュ領域144にキャッシュされている場合(S402、Yes)、またはS403の処理の後、管理部152aは、第2テーブルキャッシュ145aを更新する(S404)。具体的には、管理部152aは、第1更新要求に含まれる論理アドレスに、第1更新要求に含まれる新物理アドレスを対応付ける。S404の処理の後、管理部152aは、第2テーブルキャッシュ145aのうちの更新されたエントリをダーティとして設定する(S405)。また、第1テーブルキャッシュ143のうちの、更新された第2テーブルキャッシュ145aの格納位置を示すエントリを、ダーティとして設定する(S406)。
When the corresponding second table 1213 is cached in the LUT cache area 144 (S402, Yes), or after the processing of S403, the
第1更新要求の受信がない場合(S401、No)、またはS406の処理の後、管理部152aは、第2更新要求の受信があったか否かを判定する(S407)。第2更新要求の受信があった場合(S407、Yes)、管理部152aは、第2更新要求に含まれる論理アドレスの翻訳のための第2テーブル1213がLUTキャッシュ領域144にキャッシュされているか否かを判定する(S408)。該当の第2テーブル1213がLUTキャッシュ領域144にキャッシュされていない場合(S408、No)、管理部152aは、該当の第2テーブル1213を、第2テーブルキャッシュ145aとしてLUTキャッシュ領域144に読み出す(S409)。管理部152aは、第2テーブルキャッシュ145aのポインタ210およびAW ID211に「NULL」を記録する。
When the first update request has not been received (S401, No), or after the processing of S406, the
該当の第2テーブル1213がLUTキャッシュ領域144にキャッシュされている場合(S408、Yes)、またはS409の処理の後、管理部152aは、第2更新要求に含まれるAW IDによって示されるスレッドに関する第2テーブルキャッシュ145b(以降、対象の第2テーブルキャッシュ145b)がLUTキャッシュ領域144にキャッシュされているか否かを判定する(S410)。S410の処理においては、管理部152aは、第2テーブルキャッシュ145aから順番に、ポインタ210をたどることによって、第2更新要求に含まれるAW IDと同じAW ID211が記録された第2テーブルキャッシュ145bを検索する。
When the corresponding second table 1213 is cached in the LUT cache area 144 (S408, Yes), or after the processing of S409, the
対象の第2テーブルキャッシュ145bがLUTキャッシュ領域144にキャッシュされていない場合(S410、No)、管理部152aは、LUTキャッシュ領域144の空き領域に第2テーブルキャッシュ145aを複製することによって対象の第2テーブルキャッシュ145bを生成する(S411)。対象の第2テーブルキャッシュ145bのポインタ210にはNULLが記録される。対象の第2テーブルキャッシュ145bのAW ID211に第2更新要求に含まれるAW IDが記録される。
If the target
S411の処理の後、管理部152aは、リスト構造を構成する各ポインタ210を更新する(S412)。具体的には、例えば、管理部152aは、リスト構造の終端のポインタ210を、対象の第2テーブルキャッシュ145bの格納位置を示すアドレスで上書きする。対象の第2テーブルキャッシュ145bがLUTキャッシュ領域144にキャッシュされている場合(S410、Yes)、またはS412の処理の後、管理部152aは、対象の第2テーブルキャッシュ145bを更新する(S413)。具体的には、管理部152aは、第2更新要求に含まれる論理アドレスに、第2更新要求に含まれる新物理アドレスを対応付ける。
After the process of S411, the
第2更新要求の受信がない場合(S407、No)、またはS413の処理の後、管理部152aは、更新確定要求の受信があったか否かを判定する(S414)。更新確定要求の受信があった場合(S414、Yes)、管理部152aは、更新確定要求に含まれるAW IDをAW ID211として含む全ての第2テーブルキャッシュ145bを、夫々対応する第2テーブルキャッシュ145aに反映させる(S415)。
When the second update request has not been received (S407, No), or after the processing of S413, the
S415の処理の具体例を下記に説明する。管理部152aは、更新確定要求に含まれるAW IDをAW ID211として含む1つの第2テーブルキャッシュ145bに着目する。管理部152aは、着目された第2テーブルキャッシュ145bのエントリを、当該着目された第2テーブルキャッシュ145bが生成されてから更新されたエントリと更新されていないエントリとに分類する。管理部152aは、更新されていないエントリに、複製元の第2テーブルキャッシュ145aに記録された値を上書き形式で書き込む。管理部152aは、着目された第2テーブルキャッシュ145bのAW ID211にNULLを記録し、第1テーブルキャッシュ143を、着目された第2テーブルキャッシュ145bを示すように更新する。これにより、着目された第2テーブルキャッシュ145bは、以降、第2テーブルキャッシュ145aとして扱われる。元の第2テーブルキャッシュ145aは、例えば消去される。管理部152aは、リスト構造を構成する各ポインタ210を更新する。管理部152aは、更新確定要求に含まれるAW IDをAW ID211として含む全ての第2テーブルキャッシュ145bの夫々に着目し、着目された夫々の第2テーブルキャッシュ145bについて上記の一連の処理を実行する。
A specific example of the processing of S415 will be described below. The
S415の処理の後、管理部152aは、S415の処理の対象となった全ての第2テーブルキャッシュ145aをダーティとして設定する(S416)。また、第1テーブルキャッシュ143のうちの、S415の処理の対象となった第2テーブルキャッシュ145aの格納位置を示す全てのエントリを、ダーティとして設定する(S417)。
After the processing of S415, the
更新確定要求の受信がない場合(S414、No)、またはS417の処理の後、管理部152aは、翻訳要求の受信があったか否かを判定する(S418)。翻訳要求の受信があった場合(S418、Yes)、管理部152aは、翻訳要求に含まれる論理アドレスにかかる第2テーブル1213がLUTキャッシュ領域144にキャッシュされているか否かを判定する(S419)。該当の第2テーブル1213がLUTキャッシュ領域144にキャッシュされていない場合(S419、No)、管理部152aは、該当の第2テーブル1213を、第2テーブルキャッシュ145aとしてLUTキャッシュ領域144に読み出す(S420)。管理部152aは、第2テーブルキャッシュ145aのポインタ210およびAW ID211に「NULL」を記録する。該当の第2テーブル1213がLUTキャッシュ領域144にキャッシュされている場合(S419、Yes)、またはS420の処理の後、管理部152aは、第2テーブルキャッシュ145aに基づいて翻訳要求に含まれる論理アドレスを物理アドレスに翻訳する(S421)。管理部152aは、翻訳によって得られた物理アドレスをデータ処理部151aに返す。翻訳要求の受信がない場合(S418、No)、またはS421の処理の後、管理部152aは、S401の処理を再び実行する。
When the update confirmation request has not been received (S414, No), or after the processing of S417, the
このように、第2の実施形態においては、管理部152aは、第2テーブルキャッシュ145aを複製することによって第2テーブルキャッシュ145bを生成する。管理部152aは、アトミックライトモードのライトコマンドによって書き込み要求されたユーザデータがNANDメモリ12に書き込まれる際には、第2テーブルキャッシュ145bを使用する。アトミックライトモードの終了の際には、管理部152aは、第2テーブルキャッシュ145bを第2テーブルキャッシュ145aに反映する。スレッドが終了するまで第2テーブルキャッシュ145aはアトミックライトモードのライトコマンドの処理によって更新されないので、スレッドが中断された場合、かつ、当該中断されたスレッドのライトコマンドによって書き込み要求され、かつ、NANDメモリ12に書き込み済みのユーザデータが存在する場合、当該ユーザデータの格納位置を示す物理アドレスは、第2テーブルキャッシュ145aによって論理アドレスに対応付けられていない状態となっている。したがって、スレッドが中断された時点の第2テーブルキャッシュ145aが復元されたとしても、復元された第2テーブルキャッシュ145aの状態はスレッドが開始されていない状態であるので、アトミックライトの動作が実現する。
As described above, in the second embodiment, the
なお、データ処理部151がスレッドの終了時まで更新要求をキューイングし、スレッドの終了時に管理部152がキューイングされている全ての更新要求を実行する場合、管理部152は、更新要求毎に翻訳情報にアクセスする必要がある。これに対し、第2の実施形態によれば、スレッドの終了時には、管理部152aは、リージョン単位で翻訳情報の反映を実行するため、スレッドの終了時の翻訳情報の更新をより早く完了することができる。
When the
また、管理部152aは、リードコマンドによって読み出し要求されたユーザデータ1221のNANDメモリ12からの読み出しの際には、第2テーブルキャッシュ145aを使用する。これにより、スレッドの実行中であっても、スレッドが開始されない状態の翻訳情報に基づいてNANDメモリ12からのユーザデータ1221の読み出しが実行可能である。
The
また、管理部152aは、アトミックライトモードでないライトコマンドによって書き込み要求されたユーザデータのNANDメモリ12への書き込みの際には、第2テーブルキャッシュ145aを使用する。これにより、スレッドの実行中であっても、スレッドが開始されない状態の翻訳情報に基づいてNANDメモリ12へのユーザデータの書き込みが実行可能である。
The
なお、管理部152aは、エンドコマンドの受信に応じて第2テーブルキャッシュ145bを第2テーブルキャッシュ145aに反映する。スレッドの終了後に第2テーブルキャッシュ145bが第2テーブルキャッシュ145aに反映せしめられるので、メモリシステム1は、スレッドの終了前は、スレッドのライトコマンドによって書き込み要求された何れのユーザデータも書き込まれない状態に保たれ、スレッドの終了後に、スレッドのライトコマンドによって書き込み要求された全てのユーザデータが書き込まれた状態に移行する。即ち、アトミックライトの動作が実現する。
The
管理部152aは、スレッドのライトコマンドによって書き込み要求された1以上のユーザデータのうちの最後に書き込み要求されたユーザデータのNANDメモリ12への書き込みに対応して第2テーブルキャッシュ145bを更新した後に、当該第2テーブルキャッシュ145bを第2テーブルキャッシュ145aに反映する。
The
データ処理部151aは、複数のスレッドのライトコマンドを並行して受信することができる。管理部152aは、スレッド毎に第2テーブルキャッシュ145bを生成する。これにより、メモリシステム1aは、複数のスレッドのアトミックライトの動作を実現することが可能となる。
The
エンドコマンドは、対応するスレッドを特定するための識別情報を含む。これによりメモリシステム1は、終了の対象のスレッドをエンドコマンドが含む識別情報に基づいて特定することが可能である。
The end command includes identification information for specifying a corresponding thread. Thereby, the
メモリシステム1が外部に提供する論理アドレス空間のサイズは、表記容量と呼ばれる。メモリシステム1の表記容量は、ユーザデータ1221が書き込み可能な領域(即ちユーザデータ領域122)の容量よりも小さい。ユーザデータ領域122には、翻訳情報によって格納位置が論理アドレスに対応付けられているユーザデータ1221と、翻訳情報によって格納位置が論理アドレスに対応付けられていないユーザデータ1221と、が格納されるからである。ユーザデータ領域122の容量から表記容量を減算して得られる容量は、余裕容量と呼ばれる。ユーザデータ領域122は、翻訳情報によって格納位置が論理アドレスに対応付けられていないユーザデータ1221を、最大で余裕容量までため込むことができる。第1の実施形態においては、処理中の全てのスレッドによってホスト2から受け付け可能なユーザデータの合計容量は、余裕容量を超えることができない。即ち、データ処理部151aがスレッドの最後の第1データまでに受信可能なユーザデータの当該スレッドの最初のユーザデータからの合計のサイズは、メモリシステム1aの余裕容量以下である。
The size of the logical address space provided externally by the
(第3の実施形態)
図13は、メモリシステム1の実装例を示す図である。メモリシステム1は、例えばサーバシステム1000に実装される。サーバシステム1000は、ディスクアレイ2000とラックマウントサーバ3000とが通信インタフェース4000によって接続されて構成される。通信インタフェース4000の規格としては任意の規格が採用可能である。ラックマウントサーバ3000は、サーバラックに1以上のホスト2がマウントされて構成される。複数のホスト2は、通信インタフェース4000を介してディスクアレイ2000にアクセスすることができる。
(Third embodiment)
FIG. 13 is a diagram illustrating an implementation example of the
また、ディスクアレイ2000は、サーバラックに1以上のメモリシステム1がマウントされて構成される。ディスクアレイ2000は、メモリシステム1の他に、1以上のハードディスクユニットがマウントされてもよい。各メモリシステム1は、各ホスト2からのコマンドを実行することができる。また、各メモリシステム1は、第1または第2の実施形態が採用された構成を有している。これにより、各メモリシステム1は、簡単にアトミックライトを実行することができる。
The
なお、ディスクアレイ2000においては、例えば、各メモリシステム1は、1以上のハードディスクユニットのキャッシュとして使用されてもよい。ディスクアレイ2000は、1以上のメモリシステム1を利用してRAIDを構築するストレージコントローラユニットがマウントされてもよい。
In the
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 Although several embodiments of the present invention have been described, these embodiments are provided by way of example and are not intended to limit the scope of the invention. These new embodiments can be implemented in other various forms, and various omissions, replacements, and changes can be made without departing from the spirit of the invention. These embodiments and their modifications are included in the scope and gist of the invention, and are also included in the invention described in the claims and their equivalents.
1,1a メモリシステム、2 ホスト、12 NANDメモリ、15 制御部、121 管理情報領域、122 ユーザデータ領域、141 ライトバッファ、143 第1テーブルキャッシュ、144 LUTキャッシュ領域、145,145a,145b 第2テーブルキャッシュ、151,151a データ処理部、152,152a 管理部、1000 サーバシステム、1211 第1テーブル、1212 LUT領域、1213 第2テーブル、1221 ユーザデータ、1222 ログ情報、1223 書き込みログ、2000 ディスクアレイ、3000 ラックマウントサーバ、4000 通信インタフェース。 1, 1a memory system, 2 hosts, 12 NAND memories, 15 control units, 121 management information area, 122 user data area, 141 write buffer, 143 first table cache, 144 LUT cache area, 145, 145a, 145b second table Cache, 151, 151a data processing unit, 152, 152a management unit, 1000 server system, 1211 first table, 1212 LUT area, 1213 second table, 1221 user data, 1222 log information, 1223 write log, 2000 disk array, 3000 Rack mount server, 4000 communication interface.
Claims (13)
前記第2メモリにキャッシュされた前記第1翻訳情報である第2翻訳情報を管理する第2ステップと、
アトミックライトを指定するモードである第1ライトモードで前記ホストから受信するデータ群に含まれる第1データを前記第1メモリに格納する場合に、前記第2翻訳情報の複製であり前記第2メモリに格納された第3翻訳情報を更新する第3ステップと、
前記第1ライトモードが終了する場合に前記第3翻訳情報を前記第2翻訳情報に反映する第4ステップと、
を備えるメモリシステムの制御方法。 The first translation information indicating the correspondence between the logical position information specified by the host and the physical position information indicating the physical position in the nonvolatile first memory is converted to the volatile second information. A first step of caching in memory;
A second step of managing second translation information that is the first translation information cached in the second memory;
In a case where first data included in a data group received from the host is stored in the first memory in a first write mode which is a mode for specifying an atomic write, the first memory is a copy of the second translation information and is a copy of the second memory. A third step of updating the third translation information stored in
A fourth step of reflecting the third translation information on the second translation information when the first write mode ends;
A method for controlling a memory system comprising:
をさらに備える請求項1に記載のメモリシステムの制御方法。 A step of acquiring physical location information of a data transfer source in the first memory by referring to the second translation information when performing data transfer from the first memory to the host;
The control method of a memory system according to claim 1, further comprising:
をさらに備える請求項2に記載のメモリシステムの制御方法。 Updating the second translation information when storing second data, which is data received from the host, in the first memory in a second write mode different from the first write mode;
The method according to claim 2, further comprising:
前記第4ステップは、前記エンドコマンドの受信に応じて前記第3翻訳情報を前記第2翻訳情報に反映する、ステップである、
請求項1に記載のメモリシステムの制御方法。 A fifth step of receiving an end command from the host,
The fourth step is a step of reflecting the third translation information in the second translation information in response to receiving the end command.
A method for controlling a memory system according to claim 1.
請求項4に記載のメモリシステムの制御方法。 In the fourth step, after the reception of the end command and after updating the third translation information according to the last first data in the data group, the third translation information is converted to the second translation information. Steps to reflect on information,
A method for controlling a memory system according to claim 4.
データ群毎に前記第3翻訳情報を生成する第7ステップと、
をさらに備える請求項1に記載のメモリシステムの制御方法。 A sixth step of receiving the plurality of data groups in parallel,
A seventh step of generating the third translation information for each data group;
The control method of a memory system according to claim 1, further comprising:
前記第4ステップは、前記受信されたエンドコマンドに対応するデータ群にかかる第3翻訳情報を前記第2翻訳情報に反映する、ステップである、
請求項6に記載のメモリシステムの制御方法。 A fifth step of receiving an end command for each data group;
The fourth step is a step of reflecting third translation information on a data group corresponding to the received end command in the second translation information.
A method for controlling a memory system according to claim 6.
請求項7に記載のメモリシステムの制御方法。 In the fourth step, the third translation information on the data group corresponding to the received end command is updated according to the last first data in the data group corresponding to the received end command. Reflecting the third translation information on the data group corresponding to the received end command in the second translation information.
A method for controlling a memory system according to claim 7.
請求項8に記載のメモリシステムの制御方法。 The end command includes identification information for identifying a corresponding data group,
A method for controlling a memory system according to claim 8.
請求項1に記載のメモリシステムの制御方法。 Storing the updated portion of the second translation information in the first memory at a predetermined timing;
A method for controlling a memory system according to claim 1.
請求項10に記載のメモリシステムの制御方法。 The predetermined timing includes a power-off timing,
A method for controlling a memory system according to claim 10.
請求項11に記載のメモリシステムの制御方法。 Restoring the second translation information based on the stored updated portion after power recovery, further comprising:
A method for controlling a memory system according to claim 11.
請求項1に記載のメモリシステムの制御方法。 Generating the third translation information by duplicating the second translation information when data included in the data group received from the host in the first write mode is first stored in the first memory. Further prepare,
A method for controlling a memory system according to claim 1.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018149521A JP6640940B2 (en) | 2018-08-08 | 2018-08-08 | Memory system control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018149521A JP6640940B2 (en) | 2018-08-08 | 2018-08-08 | Memory system control method |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015110461A Division JP6398102B2 (en) | 2015-05-29 | 2015-05-29 | Memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018206415A JP2018206415A (en) | 2018-12-27 |
JP6640940B2 true JP6640940B2 (en) | 2020-02-05 |
Family
ID=64958028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018149521A Active JP6640940B2 (en) | 2018-08-08 | 2018-08-08 | Memory system control method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6640940B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11153231B2 (en) | 2019-07-19 | 2021-10-19 | Arm Limited | Apparatus and method for processing flush requests within a packet network |
-
2018
- 2018-08-08 JP JP2018149521A patent/JP6640940B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2018206415A (en) | 2018-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11467955B2 (en) | Memory system and method for controlling nonvolatile memory | |
US20230259452A1 (en) | Computing system and method for controlling storage device | |
JP6398102B2 (en) | Memory system | |
JP6967986B2 (en) | Memory system | |
US9910602B2 (en) | Device and memory system for storing and recovering page table data upon power loss | |
US8051258B2 (en) | Apparatus and methods using invalidity indicators for buffered memory | |
US10248322B2 (en) | Memory system | |
US10255178B2 (en) | Storage device that maintains a plurality of layers of address mapping | |
US10223001B2 (en) | Memory system | |
JP7500311B2 (en) | Memory system and information processing system | |
JP4242245B2 (en) | Flash ROM control device | |
JP7558745B2 (en) | Memory system and information processing system | |
US20170199687A1 (en) | Memory system and control method | |
JP6640940B2 (en) | Memory system control method | |
KR101153688B1 (en) | Nand flash memory system and method for providing invalidation chance to data pages | |
US11461225B2 (en) | Storage device, control method of storage device, and storage medium | |
US20250199685A1 (en) | Memory system, host device and method for controlling nonvolatile memory | |
JP7567009B2 (en) | MEMORY SYSTEM AND CONTROL METHOD - Patent application | |
JP6860722B2 (en) | Memory system control method | |
JP2024043974A (en) | Memory System | |
JP2024176734A (en) | MEMORY SYSTEM, INFORMATION PROCESSING DEVICE, INFORMATION PROCESSING SYSTEM, AND DATA REARRANGING METHOD |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180808 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190903 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190830 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190930 |
|
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: 20191203 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20191226 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6640940 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |