[go: up one dir, main page]

JP6640940B2 - Memory system control method - Google Patents

Memory system control method Download PDF

Info

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
Application number
JP2018149521A
Other languages
Japanese (ja)
Other versions
JP2018206415A (en
Inventor
菅野 伸一
伸一 菅野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2018149521A priority Critical patent/JP6640940B2/en
Publication of JP2018206415A publication Critical patent/JP2018206415A/en
Application granted granted Critical
Publication of JP6640940B2 publication Critical patent/JP6640940B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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.

米国特許出願公開第2015/0074336号明細書US Patent Application Publication No. 2015/0074336

一つの実施形態は、アトミックライトを効率的に実行できるメモリシステムを提供することを目的とする。   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.

図1は、第1の実施形態によるメモリシステムの構成の一例を示す図である。FIG. 1 is a diagram illustrating an example of a configuration of the memory system according to the first embodiment. 図2は、アトミックライトモードのライトコマンドが送受信される一例を示す図である。FIG. 2 is a diagram illustrating an example in which a write command in the atomic write mode is transmitted and received. 図3は、第1の実施形態におけるNANDメモリでのデータの処理単位と位置の管理単位とを模式的に示す図である。FIG. 3 is a diagram schematically illustrating a data processing unit and a position management unit in the NAND memory according to the first embodiment. 図4は、リージョンを説明する図である。FIG. 4 is a diagram illustrating a region. 図5は、第1テーブルキャッシュ、第2テーブル、および第2テーブルキャッシュを説明する図である。FIG. 5 is a diagram illustrating the first table cache, the second table, and the second table cache. 図6は、第2テーブルのデータ構成例を示す図である。FIG. 6 is a diagram illustrating a data configuration example of the second table. 図7は、ログ情報のデータ構成例を示す図である。FIG. 7 is a diagram illustrating a data configuration example of log information. 図8は、巻き戻し処理の一例を説明するフローチャートである。FIG. 8 is a flowchart illustrating an example of the rewinding process. 図9は、第2の実施形態によるメモリシステムの構成の一例を示す図である。FIG. 9 is a diagram illustrating an example of a configuration of a memory system according to the second embodiment. 図10は、第2テーブルの第2の実施形態のキャッシュを説明する図である。FIG. 10 is a diagram illustrating a cache of the second table according to the second embodiment. 図11は、第2の実施形態のデータ処理部の動作を説明するフローチャートである。FIG. 11 is a flowchart illustrating the operation of the data processing unit according to the second embodiment. 図12は、第2の実施形態の管理部の動作を説明するフローチャートである。FIG. 12 is a flowchart illustrating the operation of the management unit according to the second embodiment. 図13は、メモリシステムの実装例を示す図である。FIG. 13 is a diagram illustrating a mounting example of the memory system.

以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。   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 memory system 1 is, for example, an SSD (Solid State Drive). Hereinafter, a case where a NAND flash memory (hereinafter, referred to as a NAND memory) is used as the nonvolatile memory will be described as an example.

メモリシステム1は、ホスト2と接続可能に構成されている。例えばCPU(Central Processing Unit)、パーソナルコンピュータ、携帯用情報機器、サーバ、等がホスト2に該当する。メモリシステム1とホスト2との間の通信のインタフェース規格としては、任意のインタフェース規格が採用可能である。2以上のホスト2がメモリシステム1に同時に接続されてもよい。ホスト2とメモリシステム1とは、ネットワークを介して接続されてもよい。   The memory system 1 is configured to be connectable to the host 2. For example, a CPU (Central Processing Unit), a personal computer, a portable information device, a server, and the like correspond to the host 2. As an interface standard for communication between the memory system 1 and the host 2, any interface standard can be adopted. Two or more hosts 2 may be connected to the memory system 1 at the same time. The host 2 and the memory system 1 may be connected via a network.

メモリシステム1は、ホスト2からのアクセス要求に応じてホスト2との間でデータの送受信を実行する。アクセス要求は、ライトコマンドおよびリードコマンドを含む。アクセス要求は、アクセス位置を論理的に示すアドレス情報を含む。アドレス情報としては、例えばLBA(Logical Block Address)が採用可能である。また、例えばメモリシステム1とホスト2との間の通信のインタフェース規格としてNVMeが採用される場合には、アドレス情報は、ネームスペースの識別情報とLBAとが含まれていてもよい。ネームスペースとは、ネームスペースの識別情報によって特定される論理アドレス空間である。即ち、NVMeが採用される場合には、メモリシステム1は、複数の論理アドレス空間を管理することが可能である。   The memory system 1 transmits and receives data to and from the host 2 in response to an access request from the host 2. The access request includes a write command and a read command. The access request includes address information logically indicating an access position. As the address information, for example, LBA (Logical Block Address) can be adopted. When NVMe is adopted as an interface standard for communication between the memory system 1 and the host 2, for example, the address information may include namespace identification information and LBA. The name space is a logical address space specified by the identification information of the namespace. That is, when NVMe is employed, the memory system 1 can manage a plurality of logical address spaces.

メモリシステム1は、ホスト2からアトミックライトのモードのライトコマンドを受信することができる。アトミックライトとは、書き込みのモードのうちの1つである。アトミックライトのモードによれば、そのモードで書き込み要求されたユーザデータの受信が中断された場合には、そのモードで書き込み要求されたデータの書き込みを開始する直前の状態に戻ることが要求される。アトミックライトのモードが開始されてから終了するまでの間に書き込み要求された1以上のユーザデータについては、ホスト2の視点からみると、全てのユーザデータが書き込まれるか、または、1つのユーザデータも書き込まれない。   The memory system 1 can receive a write command in the atomic write mode from the host 2. Atomic write is one of the write modes. According to the atomic write mode, when the reception of the user data requested to be written in the mode is interrupted, it is required to return to the state immediately before the writing of the data requested to be written in the mode is started. . Regarding one or more user data requested to be written between the start of the atomic write mode and the end thereof, from the viewpoint of the host 2, all the user data is written, or one user data is written. Is also not written.

図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 host 2 transmits an atomic write start command before transmitting an atomic write mode write command (S101). The atomic write start command is provided with an atomic write ID (AW ID). The memory system 1 can execute an atomic write of a plurality of threads. AW ID is identification information for distinguishing threads. A thread is a combination of a plurality of write commands in the atomic write mode that are issued in chronological order from the start of the atomic write to the end of the atomic write. In the memory system 1, when a plurality of threads are input in parallel, each thread is individually terminated. One of the plurality of threads is requested to be terminated by an end command for terminating the one thread.

なお、スレッドは、AW IDとは異なる情報によって識別されるようにメモリシステム1が構成されてもよい。例えば、アトミックライトの対象の空間がスレッド毎に論理アドレスによって指定されてもよい。例えば、1つのネームスペースには2以上のスレッドが実行できないように制約される場合には、スレッドは、ネームスペースの識別情報によって識別可能である。   Note that the memory system 1 may be configured such that a thread is identified by information different from the AW ID. For example, the target space of the atomic write may be specified by a logical address for each thread. For example, if it is constrained that two or more threads cannot execute in one namespace, the threads can be identified by the namespace identification information.

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 host 2 starts a thread with AW ID = 0, for example. After transmitting the start command, the host 2 can transmit a write command in the atomic write mode belonging to the thread started by the start command (S102). The write command in the atomic write mode includes the AW ID. The memory system 1 can identify the thread to which the write command belongs based on the AW ID included in the write command in the atomic write mode. The host 2 can transmit a normal write command, that is, a write command that is not in the atomic write mode, during the write command in the atomic write mode (S103). Write commands that are not in atomic write mode do not include the AW ID. Alternatively, a write command that is not in the atomic write mode may include an invalid value (for example, “NULL”) as the AW ID. Before terminating one thread, the host 2 can transmit a start command to start another thread (S104) or transmit a write command of the other thread (S105). The write command of another thread means a write command belonging to another thread. In the process of S105, the thread with AW ID = 1 is started before the thread with AW ID = 0. Before terminating the thread with AW ID = "0", the host 2 can transmit an end command for terminating the thread with AW ID = "1" (S106). By including the AW ID in the end command, the memory system 1 can recognize the thread to be terminated. Note that the host 2 can also transmit an end command for terminating the thread with AW ID = "0" before terminating the thread with AW ID = "1". In the example of FIG. 2, the host 2 transmits the write command of the thread with AW ID = 0 again (S107), and thereafter transmits the end command to terminate the thread with AW ID = 0. (S108).

メモリシステム1は、ホストインタフェース部11、NANDメモリ12、NANDコントローラ13、RAM(Random Access Memory)14、および制御部15を備える。   The memory system 1 includes a host interface unit 11, a NAND memory 12, a NAND controller 13, a RAM (Random Access Memory) 14, and a control unit 15.

制御部15は、例えばCPU(Central Processing Unit)などの演算装置によって構成される。制御部15は、予めメモリシステム1内の所定の位置に格納されているプログラムを実行することによって、データ処理部151および管理部152として機能する。プログラムの格納位置は任意に設計される。例えば、プログラムは、予めNANDメモリ12に格納され、起動時にRAM14にロードされる。制御部15は、RAM14にロードされたプログラムを実行する。データ処理部151の機能のうちの一部または全部はハードウェアによって実現されてもよい。管理部152の機能のうちの一部または全部はハードウェアによって実現されてもよい。   The control unit 15 is configured by an arithmetic device such as a CPU (Central Processing Unit). The control unit 15 functions as the data processing unit 151 and the management unit 152 by executing a program stored in a predetermined position in the memory system 1 in advance. The storage location of the program is arbitrarily designed. For example, the program is stored in the NAND memory 12 in advance and loaded into the RAM 14 at the time of startup. The control unit 15 executes the program loaded in the RAM 14. Some or all of the functions of the data processing unit 151 may be realized by hardware. Some or all of the functions of the management unit 152 may be realized by hardware.

データ処理部151は、ホスト2とNANDメモリ12との間のデータ転送を実行する。データ処理部151は、NANDメモリ12にユーザデータを書き込む場合には、当該ユーザデータに対応する書き込みログ1223(後述する)をNANDメモリ12に書き込む。   The data processing unit 151 executes data transfer between the host 2 and the NAND memory 12. When writing user data to the NAND memory 12, the data processing unit 151 writes a write log 1223 (described later) corresponding to the user data to the NAND memory 12.

管理部152は、管理情報の管理を実行する。管理情報は、翻訳情報、統計情報、ブロック情報、などを含む。翻訳情報は、論理アドレスとNANDメモリ12内の物理的な位置を示すアドレス情報(物理アドレス)との対応関係を記録した情報である。統計情報は、メモリシステム1の使用状況、パワーオン時間、電源断の回数、などを記録した情報である。ブロック情報は、例えば、書き換え回数、有効なデータ数、などを、物理ブロック(後述する)毎に記録した情報である。管理部152は、論理アドレスと物理アドレスとの間の翻訳を実行する。   The management unit 152 performs management of management information. The management information includes translation information, statistical information, block information, and the like. The translation information is information in which a correspondence between a logical address and address information (physical address) indicating a physical position in the NAND memory 12 is recorded. The statistical information is information that records the usage status of the memory system 1, the power-on time, the number of power-offs, and the like. The block information is information that records, for example, the number of rewrites, the number of valid data, and the like for each physical block (described later). The management unit 152 performs translation between a logical address and a physical address.

管理部152は、スレッドが中断された場合に、翻訳情報を、そのスレッドが開始される前の状態に戻す処理(以降、巻き戻し処理)を実行する。スレッドが中断されるとは、そのスレッドを構成する一連のライトコマンドによって書き込み要求されたユーザデータの全部をNANDメモリ12に書き込めない事象をいう。例えば、スレッドの受信の途中でメモリシステム1が電源断された場合に、そのスレッドが中断される。   When the thread is interrupted, the management unit 152 executes a process of returning the translation information to a state before the thread was started (hereinafter, a rewind process). The suspension of a thread refers to an event in which all user data requested to be written by a series of write commands constituting the thread cannot be written to the NAND memory 12. For example, when the power of the memory system 1 is cut off during the reception of a thread, the thread is suspended.

ホストインタフェース部11は、ホスト2と通信を行うためのインタフェース装置である。例えばホストインタフェース部11は、データ処理部151の制御下で、ホスト2とRAM14との間のユーザデータの転送を実行する。   The host interface unit 11 is an interface device for communicating with the host 2. For example, the host interface unit 11 executes transfer of user data between the host 2 and the RAM 14 under the control of the data processing unit 151.

NANDコントローラ13は、NANDメモリ12に対するアクセスを行うためのインタフェース装置である。NANDコントローラ13は、制御部15による制御下で、RAM14とNANDメモリ12との間のユーザデータまたは管理情報の転送を実行する。詳細を省略するが、NANDコントローラ13は、誤り訂正処理を行うことができる。   The NAND controller 13 is an interface device for accessing the NAND memory 12. The NAND controller 13 transfers user data or management information between the RAM 14 and the NAND memory 12 under the control of the control unit 15. Although not described in detail, the NAND controller 13 can perform an error correction process.

NANDメモリ12は、ストレージとして機能する不揮発性の記憶媒体である。NANDメモリ12は、1以上のチップによって構成される。   The NAND memory 12 is a nonvolatile storage medium that functions as a storage. The NAND memory 12 includes one or more chips.

図3は、第1の実施形態におけるNANDメモリ12でのデータの処理単位と位置の管理単位とを模式的に示す図である。NANDメモリ12を構成するチップの内部において、データの記憶領域は、複数の物理ブロックによって構成される。各物理ブロックは、複数の物理ページによって構成される。物理ページは、ライトおよびリードのアクセスが可能な単位である。物理ブロックは、一括してデータの消去が可能な最小単位が物理ブロックである。   FIG. 3 is a diagram schematically illustrating a data processing unit and a position management unit in the NAND memory 12 according to the first embodiment. In a chip constituting the NAND memory 12, a data storage area is constituted by a plurality of physical blocks. Each physical block is composed of a plurality of physical pages. A physical page is a unit that can be accessed for writing and reading. In the physical block, the minimum unit in which data can be collectively erased is a physical block.

データの記憶領域には、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 host 2. In the example of FIG. 3, one physical page is configured by ten clusters. In the example of FIG. 3, one physical block is configured by n (n is a natural number) physical pages.

RAM14は、データを一時的に記憶するための記憶媒体である。RAM14としては、例えば、NANDメモリ12よりも高速な種類の記憶媒体が採用可能である。RAM14としては、例えば、揮発性または不揮発性の記憶媒体が採用可能である。RAM14としては、例えば、DRAM(Dynamic RAM)、SRAM(Static RAM)、FeRAM(Ferroelectric RAM)、MRAM(Magnetoresistive RAM)、PRAM(Phase change RAM)などが採用可能である。   The RAM 14 is a storage medium for temporarily storing data. As the RAM 14, for example, a storage medium of a type faster than the NAND memory 12 can be adopted. As the RAM 14, for example, a volatile or non-volatile storage medium can be adopted. As the RAM 14, for example, DRAM (Dynamic RAM), SRAM (Static RAM), FeRAM (Ferroelectric RAM), MRAM (Magnetoresistive RAM), PRAM (Phase change RAM) and the like can be adopted.

NANDメモリ12には、管理情報領域121およびユーザデータ領域122が確保されている。各領域121、122は、例えば、複数の物理ブロックによって構成される。ユーザデータ領域122は、ホスト2から書き込み要求された1以上のデータ(ユーザデータ1221)およびログ情報1222が格納される。ここでは、各ユーザデータ1221のサイズはクラスタのサイズである、として説明する。   In the NAND memory 12, a management information area 121 and a user data area 122 are secured. Each of the areas 121 and 122 is composed of, for example, a plurality of physical blocks. The user data area 122 stores one or more data (user data 1221) requested to be written by the host 2 and log information 1222. Here, a description will be given assuming that the size of each user data 1221 is the size of a cluster.

管理情報領域121は、第1テーブル1211が格納される。また、管理情報領域121は、1以上の第2テーブル1213が格納されるLUT領域1212が確保されている。LUT領域1212は、例えば複数の物理ブロックによって構成される。第1テーブル1211および1以上の第2テーブル1213は、翻訳情報を構成する。   The management information area 121 stores a first table 1211. In the management information area 121, an LUT area 1212 in which one or more second tables 1213 are stored is secured. The LUT area 1212 includes, for example, a plurality of physical blocks. The first table 1211 and one or more second tables 1213 constitute translation information.

RAM14は、ライトバッファ141、リードバッファ142、およびLUTキャッシュ領域144が確保されている。また、RAM14は、第1テーブルキャッシュ143が格納される。   In the RAM 14, a write buffer 141, a read buffer 142, and an LUT cache area 144 are secured. The RAM 14 stores a first table cache 143.

ライトバッファ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 write buffer 141 and the read buffer 142 are buffers for data transfer between the host 2 and the NAND memory 12. Data is input / output to / from the write buffer 141 and the read buffer 142 in accordance with the rules of the FIFO. The write buffer 141 stores the user data received by the host interface unit 11 from the host 2. The user data stored in the write buffer 141 is written to the user data area 122 by the NAND controller 13. The read buffer 142 stores the user data 1221 read from the user data area 122 by the NAND controller 13. The user data 1221 stored in the read buffer 142 is transferred to the host 2 by the host interface unit 11.

第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 RAM 14 and updated on the RAM 14. The LUT cache area 144 is an area where the second table 1213 is cached. The second table 1213 cached in the LUT cache area 144 is referred to as a second table cache 145. The first table cache 143 is the first table 1211 cached in the RAM 14.

図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 management unit 152 hierarchizes the translation information into two or more hierarchies. Here, as an example, the management unit 152 manages the translation information as a two-layer table group. The first table 1211 and the first table cache 143 correspond to the first layer table. One or more second tables 1213 and one or more second table caches 145 correspond to the second layer table.

管理部152は、論理アドレス空間を複数の部分空間に分割する。部分空間を、リージョン(Region)と表記する。図4は、リージョンを説明する図である。各リージョンは、論理アドレスが連続する複数のクラスタを含む。ここでは、各リージョンは、m(mは自然数)個のクラスタを含む。各リージョンは、リージョン番号(Region No.)によって識別される。リージョン番号は、例えば、論理アドレスを右方向にシフトすることによって得られる。リージョン#iは、論理アドレスi*mから論理アドレス((i+1)*m-1)までの範囲である。リージョン内のアドレスは、リージョンの先頭からのオフセットによって表現される。論理アドレスの所定の桁よりも上位桁がリージョン番号に相当し、論理アドレスの前記所定の桁よりも下位桁がリージョン内のアドレスに相当する。   The management unit 152 divides the logical address space into a plurality of subspaces. The subspace is described as a region. FIG. 4 is a diagram illustrating a region. Each region includes a plurality of clusters having consecutive logical addresses. Here, each region includes m (m is a natural number) clusters. Each region is identified by a region number (Region No.). The region number is obtained, for example, by shifting the logical address to the right. The region #i ranges from the logical address i * m to the logical address ((i + 1) * m-1). An address in a region is represented by an offset from the start of the region. Digits higher than the predetermined digit of the logical address correspond to the region number, and digits lower than the predetermined digit of the logical address correspond to addresses in the region.

図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 first table cache 143, the second table 1213, and the second table cache 145. In the first table cache 143, a table address is recorded for each region. The table address is address information that physically indicates the storage location of the second table 1213 or the second table cache 145. Here, both the table address in the RAM 14 indicating the storage position of the second table cache 145 and the table address in the NAND memory 12 indicating the storage position of the second table 1213 are stored in the first table cache 143. It is recorded every time. When the second table cache 145 is not cached for a certain region, an invalid value (for example, “NULL”) is recorded as the table address of the storage position of the second table cache 145 corresponding to the region. The management unit 152 can determine whether or not the second table cache 145 is cached for the certain region based on whether or not “NULL” is recorded as a table address in the RAM 14. The management of whether or not the second table cache 145 is cached for each region is not limited to the above method.

図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 second table cache 145 have, for example, the same data configuration. In the second table 1213, an address (data address) physically indicating the storage location of the user data 1221 is recorded for each address in the region. If each region is composed of m clusters, the second table 145 includes at least m entries. An invalid value (for example, “NULL”) is recorded in the second table 145 for a logical address not associated with a physical address.

管理部152は、NANDメモリ12からRAM14に翻訳情報を読み出して、RAM14に読み出された翻訳情報を使用する。使用するとは、更新することおよび参照することを含む。管理部152は、例えば、第1テーブル1211の全エントリを第1テーブルキャッシュ143としてRAM14に読み出す。管理部152は、例えば、LUT領域1212に格納されている1以上の第2テーブル1213のうち、少なくとも使用の対象のエントリを含む第2テーブル1213をLUTキャッシュ領域144に読み出す。   The management unit 152 reads translation information from the NAND memory 12 to the RAM 14 and uses the translation information read into the RAM 14. Use includes updating and referencing. The management unit 152 reads, for example, all entries of the first table 1211 into the RAM 14 as the first table cache 143. The management unit 152 reads, for example, the second table 1213 including at least an entry to be used from the one or more second tables 1213 stored in the LUT area 1212 into the LUT cache area 144.

管理部152がRAM14に読み出された翻訳情報を更新することによって、RAM14に格納されている翻訳情報は、NANDメモリ12に格納されている翻訳情報と異なる状態になる。NANDメモリ12に格納されている翻訳情報と異なるRAM14に格納されている翻訳情報の状態を、ダーティと表記する。管理部152は、翻訳情報のうちのダーティな部分を所定のタイミングでNANDメモリ12に書き込む。翻訳情報のうちのダーティな部分は、NANDメモリ12に書き込まれることによって、非ダーティの状態に遷移する。ダーティであるか非ダーティであるかの管理の単位は任意に設計される。管理部152は、例えば、第1テーブルキャッシュ143に関し、エントリ毎にダーティであるか非ダーティであるかを管理する。管理部152は、例えば、第2テーブルキャッシュ145毎にダーティであるか非ダーティであるかを管理する。   When the management unit 152 updates the translation information read into the RAM 14, the translation information stored in the RAM 14 becomes different from the translation information stored in the NAND memory 12. The state of the translation information stored in the RAM 14 that is different from the translation information stored in the NAND memory 12 is referred to as dirty. The management unit 152 writes a dirty part of the translation information into the NAND memory 12 at a predetermined timing. The dirty part of the translation information is changed to a non-dirty state by being written into the NAND memory 12. The unit of management, dirty or non-dirty, is arbitrarily designed. The management unit 152 manages, for example, whether the first table cache 143 is dirty or non-dirty for each entry. The management unit 152 manages, for example, whether the second table cache 145 is dirty or non-dirty.

例えば、データ処理部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 write buffer 141 to the NAND memory 12, the data processing unit 151 requests an update request for updating the correspondence between the logical address and the physical address with respect to the logical address indicating the position of the user data. Is transmitted to the management unit 152. The management unit 152 updates the second table cache 145 including the logical address specified by the update request based on the update request. The management unit 152 manages the updated second table cache 145 as dirty. In addition, the management unit 152 manages a record indicating the dirty second table cache 145 among the records of the first table cache 143 as dirty. After writing the dirty second table cache 145 in the LUT area 1212, the management unit 152 manages the second table cache 145 as non-dirty. The management unit 152 updates a dirty record among the records of the first table cache 143 in accordance with the writing to the LUT area 1212 of the second table cache 145, and then writes the updated record to the management information area 121. After writing the updated record in the management information area 121, the management unit 152 manages the record as non-dirty.

翻訳情報のうちのダーティな部分を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 NAND memory 12 is arbitrarily designed. For example, the timing is determined based on the total size of dirty portions of the translation information. For example, at the timing when the total size of dirty portions of the translation information exceeds a predetermined threshold, some or all of the dirty portions are written to the NAND memory 12. When the power is turned off, at least a dirty part of the translation information is written to the NAND memory 12. When the memory system 1 includes a battery, when the power is turned off, the management unit 152 may be driven by the energy stored in the battery. When the power is turned off, at least a dirty part of the translation information is written to the management information area 121. When the NAND memory 12 has an area for urgently evacuating the management information (emergency evacuation area) in addition to the management information area 121 and the user data area 122, at least the dirty part of the translation information is urgently evacuated. Can be written to the area. As described above, the management unit 152 manages the translation information in the RAM 14 so that the dirty part of the translation information is not lost as much as possible.

なお、第1テーブル1211は、第1テーブルキャッシュ143と同一のデータ構成を有していてもよいし、LUTキャッシュ領域144内のテーブルアドレスの記録が省略されたデータ構成を有していてもよい。   The first table 1211 may have the same data configuration as the first table cache 143, or may have a data configuration in which the recording of the table address in the LUT cache area 144 is omitted. .

図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 log information 1222. The log information 1222 includes one or more write logs 1223. Each write log 1223 is information indicating a correspondence relationship between a logical address and a physical address when the user data 1221 is written to the NAND memory 12 in cluster units. For example, one log information 1222 includes the write logs 1223 of all clusters included in one corresponding physical page. The log information 1222 corresponds to any of the user data 1221. For example, the log information 1222 is written in a cluster at a predetermined position (for example, the last cluster) in each physical block. In this embodiment, when a thread in the atomic write mode is interrupted, information for returning translation information to a state before writing user data requested to be written by the first write command of the thread to the NAND memory 12 is written. It is added to the log 1223.

書き込みログ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 write log 1223 includes a logical address 200, an old physical address 201, a new physical address 202, an AW ID 203, and a Start End Flag 204. The old physical address 201 is a physical address associated with the logical address 200 before the writing of the user data 1221. The new physical address 202 is a physical address newly associated with the logical address 200 by writing the corresponding user data 1221. In other words, the new physical address 202 is a physical address indicating the position where the corresponding user data 1221 has been written. The AW ID 203 is added to the write log 1223 of the user data 1221 requested to be written in the atomic write mode. The AW ID 203 is equal to the AW ID included in the write command in the atomic write mode. The Start End Flag 204 is a combination of a start flag indicating whether or not the user data 1221 has been written at the beginning of the thread and an end flag indicating whether or not the user data 1221 has been written at the end of the thread. is there. That is, the Start End Flag 204 has a size of at least 2 bits. The Start End Flag 204 is operated based on a start command and an end command.

アトミックライトモードでないライトコマンドによって書き込み要求されたユーザデータをライトバッファ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 write buffer 141 to the NAND memory 12 will be described below. The data processing unit 151 writes the logical address 200, the old physical address 201, and the new physical address 202 in the write log 1223. The data processing unit 151 does not use the AW ID 203 and the Start End Flag 204. For example, the data processing unit 151 records an invalid value (such as “NULL”) in the AW ID 203. The data processing unit 151 sets neither the start flag nor the end flag in the Start End Flag 204.

アトミックライトモードのライトコマンドによって書き込み要求されたユーザデータをライトバッファ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 write buffer 141 to the NAND memory 12 will be described below. The data processing unit 151 records the AW ID 203 in the write log 1223 in addition to the logical address 200, the old physical address 201, and the new physical address 202. The data processing unit 151 sets a start flag in the Start End Flag 204 of the write log 1223 for the user data requested to be written by the first write command of each thread. The data processing unit 151 sets an end flag in the Start End Flag 204 of the write log 1223 for the user data requested to be written by the last write command of each thread. The data processing unit 151 performs, for write data belonging to each thread, a user command that has been requested to write by a write command that does not correspond to any of the first write command of each thread and the last write command of each thread. , Start End Flag 204, neither a start flag nor an end flag is set.

例えば、エンドコマンドは、データ処理部151によってライトバッファ141に格納される。データ処理部151は、アトミックライトモードのライトコマンドによって書き込み要求されたユーザデータをNANDメモリ12に書き込む際に、当該書き込み対象のユーザデータの後に当該書き込み対象のユーザデータと同一のスレッドのライトコマンドによって書き込み要求されたユーザデータの受信を介在することなくエンドコマンドの受信があったか否かを、ライトバッファ141を参照することによって判定する。書き込み対象のユーザデータと同一のスレッドのライトコマンドによって書き込み要求されたユーザデータの受信を介在することなくエンドコマンドの受信があった場合には、データ処理部151は、書き込み対象のユーザデータがスレッドの最後のライトコマンドによって書き込み要求されたユーザデータであると判定する。   For example, the end command is stored in the write buffer 141 by the data processing unit 151. When writing the user data requested to be written by the write command in the atomic write mode to the NAND memory 12, the data processing unit 151 uses the write command of the same thread as the user data to be written after the user data to be written. It is determined by referring to the write buffer 141 whether or not the end command has been received without intervention of the user data requested to be written. If the end command is received without intervention of the user data requested to be written by the write command of the same thread as the user data to be written, the data processing unit 151 determines that the user data to be written is a thread. Is determined to be user data requested to be written by the last write command.

スレッドが中断された場合、当該中断されたスレッドのライトコマンドによって書き込み要求され、かつ、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 NAND memory 12, the physical address indicating the storage location of the user data is rewinded. As a result of the processing, a transition is made from the state associated with the logical address to the state not associated with the logical address. User data that is not associated with a logical address cannot be accessed from the host 2. Therefore, from the viewpoint of the host 2, the user data transmitted to the memory system 1 until the thread is interrupted is seen as not being written to the NAND memory 12. That is, when the thread is interrupted, from the viewpoint of the host 2, the memory system 1 appears to have returned to the state before the thread was started, so that the atomic write operation is realized.

図8は、巻き戻し処理の一例を説明するフローチャートである。まず、管理部152は、スレッドの中断の発生時点での第1テーブルキャッシュ143をRAM14に復元する。   FIG. 8 is a flowchart illustrating an example of the rewinding process. First, the management unit 152 restores the first table cache 143 to the RAM 14 at the time when the interruption of the thread occurs.

続いて、管理部152は、中断の発生時に最後に書いた書き込みログ1223から、書き込み順とは逆順に、所定個数の書き込みログ1223を読み出す(S201)。管理部152は、読み出した所定個数の書き込みログ1223に基づいて、キャンセル対象のスレッドを特定する(S202)。   Subsequently, the management unit 152 reads a predetermined number of write logs 1223 from the write log 1223 that was last written when the interruption occurred, in the reverse order of the write order (S201). The management unit 152 identifies a thread to be canceled based on the read predetermined number of write logs 1223 (S202).

具体的には、例えば、管理部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 management unit 152 extracts all AW IDs from a predetermined number of read write logs 1223. For example, a predetermined number of read write logs 1223 include a write log 1223 in which AW ID = "0" is recorded, a write log 1223 in which AW ID = "1" is recorded, and an AW ID = "2". When including the write log 1223, the management unit 152 extracts AW ID = "0", AW ID = "1", and AW ID = "2". Then, the management unit 152 searches the predetermined number of read write logs 1223 for a write log 1223 having an end flag. When the write log 1223 having the end flag is obtained, the management unit 152 obtains the AW ID recorded in the write log 1223 having the end flag. Get the AW ID indicating the suspended thread by excluding the recorded AW ID. The management unit 152 identifies the suspended thread as a thread to be canceled.

S202の処理の後、管理部152は、中断の発生時に最後に書いた書き込みログ1223を選択する(S203)。そして、管理部152は、選択された書き込みログ1223は、キャンセル対象のスレッドにかかる書き込みログ1223であるか否かを判定する(S204)。選択された書き込みログ1223は、中断されたスレッドにかかる書き込みログ1223であるか否かは、選択された書き込みログ1223に記録されたAW ID203が中断されたスレッドを示すAW IDの何れかに含まれるか否かに基づいて判定可能である。   After the processing in S202, the management unit 152 selects the write log 1223 written last when the interruption occurred (S203). Then, the management unit 152 determines whether the selected write log 1223 is the write log 1223 related to the thread to be canceled (S204). Whether or not the selected write log 1223 is the write log 1223 related to the interrupted thread is included in any of the AW IDs indicating the thread in which the AW ID 203 recorded in the selected write log 1223 is interrupted. It can be determined based on whether or not it is performed.

選択された書き込みログ1223がキャンセル対象のスレッドにかかる書き込みログ1223である場合(S204、Yes)、管理部152は、論理アドレス200と旧物理アドレス201とを取得する。そして、管理部152は、取得した論理アドレス200に翻訳情報において対応付けられた物理アドレスを、取得した旧物理アドレス201に変更する(S205)。   When the selected write log 1223 is the write log 1223 for the thread to be canceled (S204, Yes), the management unit 152 acquires the logical address 200 and the old physical address 201. Then, the management unit 152 changes the physical address associated with the acquired logical address 200 in the translation information to the acquired old physical address 201 (S205).

例えば、管理部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 management unit 152 acquires the storage position of the second table 1213 that records the correspondence relationship of the acquired logical address 200 by referring to the restored first table cache 143. Then, the management unit 152 reads the second table 1213 from the acquired storage position, and stores the read second table 1213 in the LUT cache area 144 as the second table cache 145. The management unit 152 updates the first table cache 143 in accordance with storing the second table cache 145 in the LUT cache area 144. Then, the management unit 152 executes the change by the processing of S205 on the second table cache 145. The management unit 152 manages the second table cache 145 changed by the processing in S205 as dirty. The management unit 152 manages the record indicating the second table cache 145 changed by the processing in S205 among the records in the first table cache 143 as dirty.

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 management unit 152 determines whether a start flag is set in the selected write log 1223 (S206). When the start flag is set in the selected write log 1223 (S206, Yes), the management unit 152 deletes the thread indicated by the AW ID 203 recorded in the selected write log 1223 from the threads to be canceled (S206). S207). When the start flag is not set in the selected write log 1223 (S206, No), or after the processing of S207, the management unit 152 determines whether or not there is still a thread to be canceled (S208).

選択された書き込みログ1223がキャンセル対象のスレッドにかかる書き込みログ1223でない場合(S204、No)、またはキャンセル対象のスレッドがまだ存在する場合(S208、Yes)、管理部152は、現在選択中の書き込みログ1223よりも1つ前に書き込まれた書き込みログ1223を新たに選択し(S209)、新たに選択された書き込みログ1223についてS204の処理を実行する。キャンセル対象のスレッドが存在しない場合には(S208、No)、管理部152は、巻き戻し処理を終了する。   When the selected write log 1223 is not the write log 1223 concerning the thread to be canceled (S204, No), or when the thread to be canceled still exists (S208, Yes), the management unit 152 writes the currently selected write log. A new write log 1223 written immediately before the log 1223 is newly selected (S209), and the process of S204 is executed for the newly selected write log 1223. If there is no thread to be canceled (S208, No), the management unit 152 ends the rewind process.

このように、第1の実施形態によれば、データ処理部151は、ユーザデータのNANDメモリ12への書き込み毎に書き込みログ1223を記録する。また、データ処理部151は、アトミックライトのスタートおよびアトミックライトの終了を書き込みログ1223に記録する。管理部152は、スレッドが中断された場合には、書き込みログ1223を書き込み順とは逆の順番に読み出すことによって、翻訳情報をスレッドが中断される前の状態に戻す。これによって、アトミックライトの動作が実現する。   As described above, according to the first embodiment, the data processing unit 151 records the write log 1223 every time user data is written to the NAND memory 12. Further, the data processing unit 151 records the start of the atomic write and the end of the atomic write in the write log 1223. When the thread is interrupted, the management unit 152 returns the translation information to the state before the thread was interrupted by reading the write log 1223 in the reverse order of the writing order. Thereby, the operation of the atomic write is realized.

なお、以上の説明によれば、データ処理部151は、ユーザデータを書き込み要求したライトコマンドがアトミックライトモードのライトコマンドであるかアトミックライトモードでないライトコマンドであるかに関わらず、そのユーザデータをNANDメモリ12に書き込む際に更新要求を発行する。データ処理部151は、ユーザデータを書き込み要求したライトコマンドがアトミックライトモードのライトコマンドである場合には更新要求を内部にキューイングしておき、内部にキューイングされた更新要求をエンドコマンドの受信を確認した後に管理部152に送信してもよい。これにより、スレッドの終了後に翻訳情報が更新されるので、巻き戻し処理を行うことなくアトミックライトの動作が実現する。   According to the above description, the data processing unit 151 writes the user data regardless of whether the write command requesting the writing of the user data is an atomic write mode write command or a non-atomic write mode write command. An update request is issued when writing to the NAND memory 12. If the write command requesting the write of the user data is an atomic write mode write command, the data processing unit 151 queues the update request internally, and receives the internally queued update request as an end command. May be transmitted to the management unit 152 after confirmation. As a result, the translation information is updated after the thread ends, so that the atomic write operation is realized without performing the rewinding process.

また、以上の説明によれば、管理部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 management unit 152 manages the translation information in the RAM 14 so that a dirty part of the translation information is not lost as much as possible. When the dirty part of the translation information is lost, the management unit 152 reconstructs the translation information by referring to the write log 1223 in the reverse order of the write order, for example. When reconstructing the translation information, the management unit 152 specifies the thread to be canceled and reads the write log 1223 in the reverse order of the write order. The management unit 152 reads the write log 1223 that is not the write log 1223 for the thread to be canceled, and the logical address 200 of the write log 1223 is not associated with any physical address in the translation information. , The correspondence between the logical address 200 recorded in the write log 1223 and the new physical address 202 recorded in the write log 1223 is recorded in the translation information in an overwriting format. When the write log 1223 concerning the thread to be canceled is read, the management unit 152 reads the next write log 1223. The management unit 152 reconstructs the translation information by performing the above-described processing on the sequentially read write log 1223.

(第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 host 2. The memory system 1a may be configured to be connectable to a plurality of hosts 2. The memory system 1a can receive a write command in the atomic write mode from the host 2, similarly to the memory system 1 of the first embodiment. The memory system 1a includes a host interface unit 11, a NAND memory 12, a NAND controller 13, a RAM 14, and a control unit 15. The control unit 15 functions as a data processing unit 151a and a management unit 152a by executing a program stored in a predetermined position in the memory system 1a in advance.

データ処理部151aは、ホスト2とNANDメモリ12との間のデータ転送を実行する。管理部152aは、管理情報の管理を実行する。管理情報は、翻訳情報、統計情報、ブロック情報、などを含む。管理部152aは、論理アドレスと物理アドレスとの間の翻訳を実行する。管理部152aは、翻訳情報のうちのダーティな部分を可能な限り喪失しないように、RAM14内の翻訳情報を管理する。   The data processing unit 151a executes data transfer between the host 2 and the NAND memory 12. The management unit 152a executes management of management information. The management information includes translation information, statistical information, block information, and the like. The management unit 152a executes translation between a logical address and a physical address. The management unit 152a manages the translation information in the RAM 14 so that a dirty part of the translation information is not lost as much as possible.

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 NAND memory 12, a management information area 121 and a user data area 122 are secured. The user data area 122 stores one or more user data 1221 and log information 1222. In the second embodiment, the log information 1222 may not be recorded. The management information area 121 stores a first table 1211. In the management information area 121, an LUT area 1212 in which one or more second tables 1213 are stored is secured. In the RAM 14, a write buffer 141, a read buffer 142, and an LUT cache area 144 are secured. The RAM 14 stores a first table cache 143. The second table 1213 is stored in the LUT cache area 144.

図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 second table cache 145a. In addition, the second table 1213 of each region can be cached as one second table cache 145a and at the same time as one or more second table caches 145b. Each second table cache 145b is generated by duplicating the second table cache 145a of the corresponding region. The number of second table caches 145b for a region is equal to the number of threads that need to use the second table 1213 for that region. That is, the second table cache 145b is cached for each thread.

第2テーブルキャッシュ145aおよび第2テーブルキャッシュ145bは、ポインタ210およびAW ID211が記録される。第2テーブルキャッシュ145bのAW ID211は、その第2テーブルキャッシュ145bの使用を必要とするスレッドを示す。   The pointer 210 and the AW ID 211 are recorded in the second table cache 145a and the second table cache 145b. The AW ID 211 of the second table cache 145b indicates a thread that needs to use the second table cache 145b.

第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 second table cache 145a is indicated by the first table cache 143. The storage location of the second table cache 145b is not indicated by the first table cache 143. The pointer 210 forms a list structure for referring to the storage positions of one or more second table caches 145b having the second table cache 145a as a replication source from the second table cache 145a. That is, when there is one or more second table caches 145b whose replication source is the second table cache 145a, the pointer 210 of the second table cache 145a is one of the one or more second table caches 145b. The storage position of the second table cache 145b is shown. If there is no other second table cache 145b, a value indicating the end of the list structure (for example, “NULL”) is recorded in the pointer 210 of the one second table cache 145b. If there is another one or more second table caches 145b, the pointer 210 of the one second table cache 145b indicates one of the other one or more second table caches 145b. Indicates the storage location of If there is no second table cache 145b that has the second table cache 145a as a replication source, a value indicating, for example, the end of the list structure is recorded in the pointer 210 of the second table cache 145a.

なお、第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 second table cache 145a and one or more second table caches 145b having the second table cache 145a as a copy source is a management method using the list structure of the pointer 210. It is not limited to only. The correspondence between the second table cache 145a and one or more second table caches 145b having the second table cache 145a as a copy source may be managed using a separately provided table. In addition, a dedicated entry is provided in the first table cache 143, and the correspondence between the second table cache 145a and one or more second table caches 145b having the second table cache 145a as a copy source is provided by the dedicated entry. Relationships may be managed. The pointer 210 may be a bidirectional pointer.

アトミックライトモードのライトコマンドによって書き込み要求されたユーザデータの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 NAND memory 12, the management unit 152a uses the second table cache 145b of the corresponding thread. When writing user data requested to be written by a write command that is not in the atomic write mode to the NAND memory 12 and when reading user data from the NAND memory 12, the management unit 152a stores the second table cache 145a in the use.

図11は、第2の実施形態のデータ処理部151aの動作を説明するフローチャートである。データ処理部151aは、ライトコマンドの受信があったか否かを判定する(S301)。ライトコマンドの受信があった場合(S301、Yes)、データ処理部151aは、当該ライトコマンドによって書き込み要求されたユーザデータをライトバッファ141に格納する(S302)。ライトコマンドの受信がない場合(S301、No)、データ処理部151aは、S302の処理をスキップする。   FIG. 11 is a flowchart illustrating the operation of the data processing unit 151a according to the second embodiment. The data processing unit 151a determines whether a write command has been received (S301). When a write command is received (S301, Yes), the data processing unit 151a stores the user data requested to be written by the write command in the write buffer 141 (S302). If no write command has been received (S301, No), the data processing unit 151a skips the processing of S302.

続いて、データ処理部151aは、書き込みタイミングに至ったか否かを判定する(S303)。任意のタイミングを書き込みタイミングに設定することが可能である。例えば、ライトバッファ141に格納されているユーザデータの合計サイズに基づいて書き込みタイミングが決定される。例えば、書き込みタイミングは、ライトバッファ141に格納されているユーザデータの合計サイズが所定のしきい値を超えたタイミングである。例えば、書き込みタイミングは、ホスト2からFlushコマンドを受信したタイミングである。Flushコマンドとは、ライトバッファ141に格納され、かつ、NANDメモリ12に書き込まれていない全てのユーザデータを、NANDメモリ12に書き込ませるためのコマンドである。   Subsequently, the data processing unit 151a determines whether the write timing has come (S303). Any timing can be set as the write timing. For example, the write timing is determined based on the total size of the user data stored in the write buffer 141. For example, the write timing is a timing when the total size of the user data stored in the write buffer 141 exceeds a predetermined threshold. For example, the write timing is a timing at which a Flush command is received from the host 2. The Flush command is a command for writing all the user data stored in the write buffer 141 and not written in the NAND memory 12 to the NAND memory 12.

書き込みタイミングに至った場合(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 data processing unit 151a selects one user data from the write buffer 141 (S304). The data processing unit 151a writes the selected user data to the NAND memory 12 (S305). The data processing unit 151a determines whether the written user data is the user data requested to be written by the write command in the atomic write mode (S306). If the written user data is not the user data requested to be written by the write command in the atomic write mode (S306, No), the data processing unit 151a transmits a first update request to the management unit 152a (S307). When the written user data is the user data requested to be written by the write command in the atomic write mode (S306, Yes), the data processing unit 151a transmits a second update request to the management unit 152a (S308).

第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 data processing unit 151a determines whether or not an end command has been received (S309). If an end command has been received (S309, Yes), the data processing unit 151a sends an update confirmation request to the management unit 152a (S310).

更新確定要求は、エンドコマンドによって終了せしめられるスレッドに対応する第2テーブルキャッシュ145bを、複製元の第2テーブルキャッシュ145aに反映させるための要求である。更新確定要求は、エンドコマンドによって終了せしめられるスレッドを示すAW IDを少なくとも含む。なお、データ処理部151aは、エンドコマンドに含まれるAW IDによって特定されるスレッドのライトコマンドによって書き込み要求された全てのライトデータについて第2更新要求を送信した後に、更新確定要求を送信する。   The update confirmation request is a request for reflecting the second table cache 145b corresponding to the thread terminated by the end command in the second table cache 145a of the copy source. The update confirmation request includes at least the AW ID indicating the thread terminated by the end command. The data processing unit 151a transmits a second update request for all write data requested to be written by the write command of the thread specified by the AW ID included in the end command, and then transmits an update confirmation request.

エンドコマンドの受信がない場合(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 data processing unit 151a determines whether a read command has been received (S311). If a read command has been received (S311, Yes), the data processing unit 151a transmits a translation request to the management unit 152a (S312). The translation request includes at least the logical address specified by the read command. The management unit 152a translates the logical address included in the translation request, and returns the physical address obtained by the translation to the data processing unit 151a. The data processing unit 151a reads the user data from the position indicated by the returned physical address to the write buffer 141 (S313). The data processing unit 151a transmits the user data read to the write buffer 141 to the host 2 (S314). After the processing of S314, the data processing unit 151a executes the processing of S301 again.

図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 management unit 152a according to the second embodiment. The management unit 152a determines whether a first update request has been received (S401). When the first update request is received (S401, Yes), the management unit 152a determines whether or not the second table 1213 relating to the logical address included in the first update request is cached in the LUT cache area 144. (S402). When the corresponding second table 1213 is not cached in the LUT cache area 144 (S402, No), the management unit 152a reads the corresponding second table 1213 into the LUT cache area 144 as the second table cache 145a (S403). ). The management unit 152a records “NULL” in the pointer 210 and the AW ID 211 of the second table cache 145a.

該当の第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 management unit 152a updates the second table cache 145a (S404). Specifically, the management unit 152a associates a logical address included in the first update request with a new physical address included in the first update request. After the processing in S404, the management unit 152a sets the updated entry in the second table cache 145a as dirty (S405). Further, the entry indicating the storage location of the updated second table cache 145a in the first table cache 143 is set as dirty (S406).

第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 management unit 152a determines whether the second update request has been received (S407). When the second update request is received (S407, Yes), the management unit 152a determines whether the second table 1213 for translating the logical address included in the second update request is cached in the LUT cache area 144. Is determined (S408). When the relevant second table 1213 is not cached in the LUT cache area 144 (S408, No), the management unit 152a reads the relevant second table 1213 into the LUT cache area 144 as the second table cache 145a (S409). ). The management unit 152a records “NULL” in the pointer 210 and the AW ID 211 of the second table cache 145a.

該当の第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 management unit 152a determines the second table related to the thread indicated by the AW ID included in the second update request. It is determined whether the two-table cache 145b (hereinafter, the target second table cache 145b) is cached in the LUT cache area 144 (S410). In the process of S410, the management unit 152a follows the pointer 210 in order from the second table cache 145a to update the second table cache 145b in which the same AW ID 211 as the AW ID included in the second update request is recorded. Search for.

対象の第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 second table cache 145b is not cached in the LUT cache area 144 (S410, No), the management unit 152a copies the target second table cache 145a to a free area of the LUT cache area 144, and The two-table cache 145b is generated (S411). NULL is recorded in the pointer 210 of the target second table cache 145b. The AW ID included in the second update request is recorded in the AW ID 211 of the target second table cache 145b.

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 management unit 152a updates each pointer 210 forming the list structure (S412). Specifically, for example, the management unit 152a overwrites the pointer 210 at the end of the list structure with an address indicating the storage location of the target second table cache 145b. When the target second table cache 145b is cached in the LUT cache area 144 (S410, Yes), or after the processing of S412, the management unit 152a updates the target second table cache 145b (S413). Specifically, the management unit 152a associates the logical address included in the second update request with the new physical address included in the second update request.

第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 management unit 152a determines whether or not the update confirmation request has been received (S414). When the update confirmation request is received (S414, Yes), the management unit 152a replaces all the second table caches 145b including the AW ID included in the update confirmation request as the AW ID 211 with the corresponding second table cache 145a. (S415).

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 management unit 152a focuses on one second table cache 145b including the AW ID included in the update confirmation request as the AW ID 211. The management unit 152a classifies the entry of the noted second table cache 145b into an entry that has been updated since the noted second table cache 145b was generated and an entry that has not been updated. The management unit 152a writes the value recorded in the second table cache 145a of the copy source into the entry that has not been updated in an overwrite format. The management unit 152a records NULL in the AW ID 211 of the noted second table cache 145b, and updates the first table cache 143 to indicate the noted second table cache 145b. As a result, the focused second table cache 145b is subsequently treated as the second table cache 145a. The original second table cache 145a is deleted, for example. The management unit 152a updates each pointer 210 forming the list structure. The management unit 152a focuses on each of the second table caches 145b including the AW ID included in the update confirmation request as the AW ID 211, and executes the above-described series of processes on each of the focused second table caches 145b. .

S415の処理の後、管理部152aは、S415の処理の対象となった全ての第2テーブルキャッシュ145aをダーティとして設定する(S416)。また、第1テーブルキャッシュ143のうちの、S415の処理の対象となった第2テーブルキャッシュ145aの格納位置を示す全てのエントリを、ダーティとして設定する(S417)。   After the processing of S415, the management unit 152a sets all the second table caches 145a targeted for the processing of S415 as dirty (S416). Further, all the entries in the first table cache 143 indicating the storage positions of the second table cache 145a targeted for the processing of S415 are set as dirty (S417).

更新確定要求の受信がない場合(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 management unit 152a determines whether a translation request has been received (S418). When the translation request is received (S418, Yes), the management unit 152a determines whether the second table 1213 relating to the logical address included in the translation request is cached in the LUT cache area 144 (S419). . When the relevant second table 1213 is not cached in the LUT cache area 144 (S419, No), the management unit 152a reads the relevant second table 1213 into the LUT cache area 144 as the second table cache 145a (S420). ). The management unit 152a records “NULL” in the pointer 210 and the AW ID 211 of the second table cache 145a. If the corresponding second table 1213 is cached in the LUT cache area 144 (S419, Yes), or after the processing of S420, the management unit 152a determines the logical address included in the translation request based on the second table cache 145a. Is translated into a physical address (S421). The management unit 152a returns the physical address obtained by the translation to the data processing unit 151a. When a translation request has not been received (S418, No), or after the process of S421, the management unit 152a executes the process of S401 again.

このように、第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 management unit 152a generates the second table cache 145b by duplicating the second table cache 145a. The management unit 152a uses the second table cache 145b when the user data requested to be written by the write command in the atomic write mode is written to the NAND memory 12. Upon termination of the atomic write mode, the management unit 152a reflects the second table cache 145b on the second table cache 145a. Since the second table cache 145a is not updated by the processing of the write command in the atomic write mode until the thread ends, if the thread is interrupted, a write request is issued by the write command of the interrupted thread, and the NAND memory When there is written user data in 12, the physical address indicating the storage location of the user data is not associated with the logical address by the second table cache 145a. Therefore, even if the second table cache 145a at the time when the thread is suspended is restored, the state of the restored second table cache 145a is a state where the thread has not been started, so that the atomic write operation is realized. .

なお、データ処理部151がスレッドの終了時まで更新要求をキューイングし、スレッドの終了時に管理部152がキューイングされている全ての更新要求を実行する場合、管理部152は、更新要求毎に翻訳情報にアクセスする必要がある。これに対し、第2の実施形態によれば、スレッドの終了時には、管理部152aは、リージョン単位で翻訳情報の反映を実行するため、スレッドの終了時の翻訳情報の更新をより早く完了することができる。   When the data processing unit 151 queues the update request until the end of the thread and the management unit 152 executes all the queued update requests at the end of the thread, the management unit 152 performs Need access to translation information. On the other hand, according to the second embodiment, when the thread ends, the management unit 152a executes the reflection of the translation information on a region-by-region basis. Can be.

また、管理部152aは、リードコマンドによって読み出し要求されたユーザデータ1221のNANDメモリ12からの読み出しの際には、第2テーブルキャッシュ145aを使用する。これにより、スレッドの実行中であっても、スレッドが開始されない状態の翻訳情報に基づいてNANDメモリ12からのユーザデータ1221の読み出しが実行可能である。   The management unit 152a uses the second table cache 145a when reading the user data 1221 requested to be read by the read command from the NAND memory 12. This allows the user data 1221 to be read from the NAND memory 12 based on the translation information in a state where the thread is not started, even during the execution of the thread.

また、管理部152aは、アトミックライトモードでないライトコマンドによって書き込み要求されたユーザデータのNANDメモリ12への書き込みの際には、第2テーブルキャッシュ145aを使用する。これにより、スレッドの実行中であっても、スレッドが開始されない状態の翻訳情報に基づいてNANDメモリ12へのユーザデータの書き込みが実行可能である。   The management unit 152a uses the second table cache 145a when writing user data requested to be written by a write command that is not in the atomic write mode to the NAND memory 12. Thereby, even during the execution of the thread, it is possible to execute the writing of the user data to the NAND memory 12 based on the translation information in a state where the thread is not started.

なお、管理部152aは、エンドコマンドの受信に応じて第2テーブルキャッシュ145bを第2テーブルキャッシュ145aに反映する。スレッドの終了後に第2テーブルキャッシュ145bが第2テーブルキャッシュ145aに反映せしめられるので、メモリシステム1は、スレッドの終了前は、スレッドのライトコマンドによって書き込み要求された何れのユーザデータも書き込まれない状態に保たれ、スレッドの終了後に、スレッドのライトコマンドによって書き込み要求された全てのユーザデータが書き込まれた状態に移行する。即ち、アトミックライトの動作が実現する。   The management unit 152a reflects the second table cache 145b on the second table cache 145a in response to receiving the end command. Since the second table cache 145b is reflected in the second table cache 145a after the end of the thread, the memory system 1 does not write any user data requested to be written by the write command of the thread before the end of the thread. After the end of the thread, the state shifts to a state where all the user data requested to be written by the write command of the thread is written. That is, the operation of the atomic write is realized.

管理部152aは、スレッドのライトコマンドによって書き込み要求された1以上のユーザデータのうちの最後に書き込み要求されたユーザデータのNANDメモリ12への書き込みに対応して第2テーブルキャッシュ145bを更新した後に、当該第2テーブルキャッシュ145bを第2テーブルキャッシュ145aに反映する。   The management unit 152a updates the second table cache 145b in response to the writing of the last user data requested to be written among the one or more user data requested to be written by the thread write command to the NAND memory 12, Then, the second table cache 145b is reflected in the second table cache 145a.

データ処理部151aは、複数のスレッドのライトコマンドを並行して受信することができる。管理部152aは、スレッド毎に第2テーブルキャッシュ145bを生成する。これにより、メモリシステム1aは、複数のスレッドのアトミックライトの動作を実現することが可能となる。   The data processing unit 151a can receive write commands of a plurality of threads in parallel. The management unit 152a generates a second table cache 145b for each thread. As a result, the memory system 1a can realize an atomic write operation of a plurality of threads.

エンドコマンドは、対応するスレッドを特定するための識別情報を含む。これによりメモリシステム1は、終了の対象のスレッドをエンドコマンドが含む識別情報に基づいて特定することが可能である。   The end command includes identification information for specifying a corresponding thread. Thereby, the memory system 1 can specify the thread to be terminated based on the identification information included in the end command.

メモリシステム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 memory system 1 is called a notation capacity. The indicated capacity of the memory system 1 is smaller than the capacity of an area where the user data 1221 can be written (that is, the user data area 122). The user data area 122 stores user data 1221 whose storage location is associated with a logical address by translation information and user data 1221 whose storage location is not associated with a logical address by translation information. It is. The capacity obtained by subtracting the indicated capacity from the capacity of the user data area 122 is called a surplus capacity. The user data area 122 can store the user data 1221 whose storage position is not associated with the logical address by the translation information up to the maximum capacity. In the first embodiment, the total amount of user data that can be received from the host 2 by all the threads being processed cannot exceed the surplus capacity. That is, the total size of the user data receivable by the data processing unit 151a up to the last first data of the thread from the first user data of the thread is equal to or less than the spare capacity of the memory system 1a.

(第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 memory system 1. The memory system 1 is implemented in, for example, the server system 1000. The server system 1000 includes a disk array 2000 and a rack mount server 3000 connected by a communication interface 4000. Any standard can be adopted as the standard of the communication interface 4000. The rack mount server 3000 is configured by mounting one or more hosts 2 on a server rack. The plurality of hosts 2 can access the disk array 2000 via the communication interface 4000.

また、ディスクアレイ2000は、サーバラックに1以上のメモリシステム1がマウントされて構成される。ディスクアレイ2000は、メモリシステム1の他に、1以上のハードディスクユニットがマウントされてもよい。各メモリシステム1は、各ホスト2からのコマンドを実行することができる。また、各メモリシステム1は、第1または第2の実施形態が採用された構成を有している。これにより、各メモリシステム1は、簡単にアトミックライトを実行することができる。   The disk array 2000 is configured by mounting one or more memory systems 1 on a server rack. In the disk array 2000, one or more hard disk units may be mounted in addition to the memory system 1. Each memory system 1 can execute a command from each host 2. Each memory system 1 has a configuration in which the first or second embodiment is adopted. Thereby, each memory system 1 can easily execute the atomic write.

なお、ディスクアレイ2000においては、例えば、各メモリシステム1は、1以上のハードディスクユニットのキャッシュとして使用されてもよい。ディスクアレイ2000は、1以上のメモリシステム1を利用してRAIDを構築するストレージコントローラユニットがマウントされてもよい。   In the disk array 2000, for example, each memory system 1 may be used as a cache of one or more hard disk units. In the disk array 2000, a storage controller unit that constructs a RAID using one or more memory systems 1 may be mounted.

本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。   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)

ホストから指定される位置情報である論理位置情報と不揮発性の第1メモリ内の物理的な位置を示す位置情報である物理位置情報との対応関係を示す第1翻訳情報を揮発性の第2メモリにキャッシュする第1ステップと、
前記第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メモリから前記ホストへのデータ転送を実行する場合に、前記第2翻訳情報を参照することによって前記第1メモリ内のデータ転送元の物理位置情報を取得するステップ、
をさらに備える請求項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:
前記第1ライトモードと異なる第2ライトモードで前記ホストから受信したデータである第2データを前記第1メモリに格納する場合に、前記第2翻訳情報を更新するステップ、
をさらに備える請求項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:
前記ホストからエンドコマンドを受信する第5ステップをさらに備え、
前記第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ステップは、前記エンドコマンドの受信の後、かつ、前記データ群のうちの最後の第1データに応じて前記第3翻訳情報を更新した後、前記第3翻訳情報を前記第2翻訳情報に反映する、ステップである、
請求項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.
前記データ群を複数、並行して受信する第6ステップと、
データ群毎に前記第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:
エンドコマンドをデータ群毎に受信する第5ステップをさらに備え、
前記第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.
前記第4ステップは、前記受信されたエンドコマンドに対応するデータ群にかかる第3翻訳情報を、前記受信されたエンドコマンドに対応する前記データ群のうちの最後の第1データに応じて更新した後に、前記受信されたエンドコマンドに対応するデータ群にかかる第3翻訳情報を前記第2翻訳情報に反映する、ステップである、
請求項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.
所定のタイミングで前記第2翻訳情報の更新部分を前記第1メモリに保存するステップをさらに備える、
請求項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.
電源復帰後、前記保存された更新部分に基づいて前記第2翻訳情報を復元する、ステップをさらに備える、
請求項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ライトモードで前記ホストから受信する前記データ群に含まれるデータを前記第1メモリに最初に格納する場合に前記第2翻訳情報を複製して前記第3翻訳情報を生成する、ステップをさらに備える、
請求項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.
JP2018149521A 2018-08-08 2018-08-08 Memory system control method Active JP6640940B2 (en)

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)

* Cited by examiner, † Cited by third party
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

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