JP6398102B2 - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP6398102B2
JP6398102B2 JP2015110461A JP2015110461A JP6398102B2 JP 6398102 B2 JP6398102 B2 JP 6398102B2 JP 2015110461 A JP2015110461 A JP 2015110461A JP 2015110461 A JP2015110461 A JP 2015110461A JP 6398102 B2 JP6398102 B2 JP 6398102B2
Authority
JP
Japan
Prior art keywords
translation information
management unit
memory
data
information
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
JP2015110461A
Other languages
English (en)
Other versions
JP2016224708A (ja
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
Toshiba Memory 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 Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2015110461A priority Critical patent/JP6398102B2/ja
Priority to CN201510651436.1A priority patent/CN106201335B/zh
Priority to US15/018,097 priority patent/US20160350003A1/en
Publication of JP2016224708A publication Critical patent/JP2016224708A/ja
Application granted granted Critical
Publication of JP6398102B2 publication Critical patent/JP6398102B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Description

本実施形態は、メモリシステムに関する。
従来、NAND型のフラッシュメモリを記憶媒体に用いたメモリシステムが知られている。前記メモリシステムは、外部から指定される論理的な位置情報(論理アドレス)と記憶媒体内の位置を物理的に示す位置情報(物理アドレス)との間の対応関係を記録した翻訳情報を管理する。
また、書き込み要求されたデータの転送エラーが生じた場合、メモリシステムは、その書き込み要求されたデータの書き込みを開始する直前の状態に戻ることが要求されるケースがある。そのような書き込みモードを、アトミックライト(Atomic Write)と表記する。
米国特許出願公開第2015/0074336号明細書
一つの実施形態は、アトミックライトを効率的に実行できるメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムはホストに接続可能である。前記メモリシステムは、不揮発性の第1メモリと、揮発性の第2メモリと、データ処理部と、管理部と、を備える。前記データ処理部は、前記ホストからのコマンドに応じて前記ホストと前記第1メモリとの間のデータ転送を実行する。前記管理部は、前記ホストから指定される位置情報である論理位置情報と前記第1メモリ内の物理的な位置を示す位置情報である物理位置情報との対応関係を示す第1翻訳情報を前記第2メモリにキャッシュして、前記第2メモリにキャッシュされた前記第1翻訳情報である第2翻訳情報を管理する。前記管理部は、前記データ処理部が第1データを前記第1メモリに格納する場合に第翻訳情報を更新する。前記第1データはアトミックライトを指定するモードである第1ライトモードで前記ホストから受信するデータ群に含まれる。前記第翻訳情報は前記第翻訳情報の複製であり前記第2メモリに格納されている。前記管理部は、前記第1ライトモードが終了する場合に前記第翻訳情報を前記第翻訳情報に反映する。
図1は、第1の実施形態によるメモリシステムの構成の一例を示す図である。 図2は、アトミックライトモードのライトコマンドが送受信される一例を示す図である。 図3は、第1の実施形態におけるNANDメモリでのデータの処理単位と位置の管理単位とを模式的に示す図である。 図4は、リージョンを説明する図である。 図5は、第1テーブルキャッシュ、第2テーブル、および第2テーブルキャッシュを説明する図である。 図6は、第2テーブルのデータ構成例を示す図である。 図7は、ログ情報のデータ構成例を示す図である。 図8は、巻き戻し処理の一例を説明するフローチャートである。 図9は、第2の実施形態によるメモリシステムの構成の一例を示す図である。 図10は、第2テーブルの第2の実施形態のキャッシュを説明する図である。 図11は、第2の実施形態のデータ処理部の動作を説明するフローチャートである。 図12は、第2の実施形態の管理部の動作を説明するフローチャートである。 図13は、メモリシステムの実装例を示す図である。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態によるメモリシステムの構成の一例を示す図である。このメモリシステム1は、例えば、SSD(Solid State Drive)である。以下では、不揮発性メモリとしてNAND型のフラッシュメモリ(以下、NANDメモリという)を用いる場合を例に挙げる。
メモリシステム1は、ホスト2と接続可能に構成されている。例えばCPU(Central Processing Unit)、パーソナルコンピュータ、携帯用情報機器、サーバ、等がホスト2に該当する。メモリシステム1とホスト2との間の通信のインタフェース規格としては、任意のインタフェース規格が採用可能である。2以上のホスト2がメモリシステム1に同時に接続されてもよい。ホスト2とメモリシステム1とは、ネットワークを介して接続されてもよい。
メモリシステム1は、ホスト2からのアクセス要求に応じてホスト2との間でデータの送受信を実行する。アクセス要求は、ライトコマンドおよびリードコマンドを含む。アクセス要求は、アクセス位置を論理的に示すアドレス情報を含む。アドレス情報としては、例えばLBA(Logical Block Address)が採用可能である。また、例えばメモリシステム1とホスト2との間の通信のインタフェース規格としてNVMeが採用される場合には、アドレス情報は、ネームスペースの識別情報とLBAとが含まれていてもよい。ネームスペースとは、ネームスペースの識別情報によって特定される論理アドレス空間である。即ち、NVMeが採用される場合には、メモリシステム1は、複数の論理アドレス空間を管理することが可能である。
メモリシステム1は、ホスト2からアトミックライトのモードのライトコマンドを受信することができる。アトミックライトとは、書き込みのモードのうちの1つである。アトミックライトのモードによれば、そのモードで書き込み要求されたユーザデータの受信が中断された場合には、そのモードで書き込み要求されたデータの書き込みを開始する直前の状態に戻ることが要求される。アトミックライトのモードが開始されてから終了するまでの間に書き込み要求された1以上のユーザデータについては、ホスト2の視点からみると、全てのユーザデータが書き込まれるか、または、1つのユーザデータも書き込まれない。
図2は、アトミックライトのモードのライトコマンドが送受信される一例を示す図である。アトミックライトのモードを、アトミックライトモード、と表記する。ホスト2は、アトミックライトモードのライトコマンドを送信する前に、アトミックライトのスタートコマンドを送信する(S101)。アトミックライトのスタートコマンドは、アトミックライトID(AW ID)が付されている。メモリシステム1は、複数のスレッドのアトミックライトを実行することができる。AW IDは、スレッドを区別するための識別情報である。スレッドとは、アトミックライトがスタートしてからアトミックライトが終了するまでに時系列順に発行される、アトミックライトモードの複数のライトコマンドの組み合わせである。メモリシステム1は、複数のスレッドが並行して入力されている場合には、各スレッドは、夫々個別に終了される。複数のスレッドのうちの一のスレッドは、前記一のスレッドを終了するためのエンドコマンドによって終了が要求される。
なお、スレッドは、AW IDとは異なる情報によって識別されるようにメモリシステム1が構成されてもよい。例えば、アトミックライトの対象の空間がスレッド毎に論理アドレスによって指定されてもよい。例えば、1つのネームスペースには2以上のスレッドが実行できないように制約される場合には、スレッドは、ネームスペースの識別情報によって識別可能である。
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)。
メモリシステム1は、ホストインタフェース部11、NANDメモリ12、NANDコントローラ13、RAM(Random Access Memory)14、および制御部15を備える。
制御部15は、例えばCPU(Central Processing Unit)などの演算装置によって構成される。制御部15は、予めメモリシステム1内の所定の位置に格納されているプログラムを実行することによって、データ処理部151および管理部152として機能する。プログラムの格納位置は任意に設計される。例えば、プログラムは、予めNANDメモリ12に格納され、起動時にRAM14にロードされる。制御部15は、RAM14にロードされたプログラムを実行する。データ処理部151の機能のうちの一部または全部はハードウェアによって実現されてもよい。管理部152の機能のうちの一部または全部はハードウェアによって実現されてもよい。
データ処理部151は、ホスト2とNANDメモリ12との間のデータ転送を実行する。データ処理部151は、NANDメモリ12にユーザデータを書き込む場合には、当該ユーザデータに対応する書き込みログ1223(後述する)をNANDメモリ12に書き込む。
管理部152は、管理情報の管理を実行する。管理情報は、翻訳情報、統計情報、ブロック情報、などを含む。翻訳情報は、論理アドレスとNANDメモリ12内の物理的な位置を示すアドレス情報(物理アドレス)との対応関係を記録した情報である。統計情報は、メモリシステム1の使用状況、パワーオン時間、電源断の回数、などを記録した情報である。ブロック情報は、例えば、書き換え回数、有効なデータ数、などを、物理ブロック(後述する)毎に記録した情報である。管理部152は、論理アドレスと物理アドレスとの間の翻訳を実行する。
管理部152は、スレッドが中断された場合に、翻訳情報を、そのスレッドが開始される前の状態に戻す処理(以降、巻き戻し処理)を実行する。スレッドが中断されるとは、そのスレッドを構成する一連のライトコマンドによって書き込み要求されたユーザデータの全部をNANDメモリ12に書き込めない事象をいう。例えば、スレッドの受信の途中でメモリシステム1が電源断された場合に、そのスレッドが中断される。
ホストインタフェース部11は、ホスト2と通信を行うためのインタフェース装置である。例えばホストインタフェース部11は、データ処理部151の制御下で、ホスト2とRAM14との間のユーザデータの転送を実行する。
NANDコントローラ13は、NANDメモリ12に対するアクセスを行うためのインタフェース装置である。NANDコントローラ13は、制御部15による制御下で、RAM14とNANDメモリ12との間のユーザデータまたは管理情報の転送を実行する。詳細を省略するが、NANDコントローラ13は、誤り訂正処理を行うことができる。
NANDメモリ12は、ストレージとして機能する不揮発性の記憶媒体である。NANDメモリ12は、1以上のチップによって構成される。
図3は、第1の実施形態におけるNANDメモリ12でのデータの処理単位と位置の管理単位とを模式的に示す図である。NANDメモリ12を構成するチップの内部において、データの記憶領域は、複数の物理ブロックによって構成される。各物理ブロックは、複数の物理ページによって構成される。物理ページは、ライトおよびリードのアクセスが可能な単位である。物理ブロックは、一括してデータの消去が可能な最小単位が物理ブロックである。
データの記憶領域には、1物理ページより小さい単位に対して物理アドレスが割り当てられる。ここでは、物理アドレスが割り当てられる単位を、クラスタ、と表記する。翻訳情報は、クラスタ単位で管理される。1クラスタのサイズは、ホスト2からの最小のアクセス単位と等しくてもよいし異なっていてもよい。図3の例では、1物理ページは10個のクラスタで構成されるものとされている。図3の例では、1物理ブロックは、n(nは自然数)個の物理ページで構成されるものとされている。
RAM14は、データを一時的に記憶するための記憶媒体である。RAM14としては、例えば、NANDメモリ12よりも高速な種類の記憶媒体が採用可能である。RAM14としては、例えば、揮発性または不揮発性の記憶媒体が採用可能である。RAM14としては、例えば、DRAM(Dynamic RAM)、SRAM(Static RAM)、FeRAM(Ferroelectric RAM)、MRAM(Magnetoresistive RAM)、PRAM(Phase change RAM)などが採用可能である。
NANDメモリ12には、管理情報領域121およびユーザデータ領域122が確保されている。各領域121、122は、例えば、複数の物理ブロックによって構成される。ユーザデータ領域122は、ホスト2から書き込み要求された1以上のデータ(ユーザデータ1221)およびログ情報1222が格納される。ここでは、各ユーザデータ1221のサイズはクラスタのサイズである、として説明する。
管理情報領域121は、第1テーブル1211が格納される。また、管理情報領域121は、1以上の第2テーブル1213が格納されるLUT領域1212が確保されている。LUT領域1212は、例えば複数の物理ブロックによって構成される。第1テーブル1211および1以上の第2テーブル1213は、翻訳情報を構成する。
RAM14は、ライトバッファ141、リードバッファ142、およびLUTキャッシュ領域144が確保されている。また、RAM14は、第1テーブルキャッシュ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に転送される。
第1テーブル1211および1以上の第2テーブル1213は、RAM14にキャッシュされ、RAM14上で更新される。LUTキャッシュ領域144は、第2テーブル1213がキャッシュされる領域である。LUTキャッシュ領域144にキャッシュされた第2テーブル1213を、第2テーブルキャッシュ145と表記する。第1テーブルキャッシュ143は、RAM14にキャッシュされた第1テーブル1211である。
図4、図5、および図6を用いることによって、翻訳情報を説明する。管理部152は、翻訳情報を、2以上の階層に階層化する。ここでは一例として、管理部152は、翻訳情報を2階層のテーブル群として管理する。第1テーブル1211および第1テーブルキャッシュ143は、第1階層目のテーブルに該当する。1以上の第2テーブル1213および1以上の第2テーブルキャッシュ145は第2階層目のテーブルに該当する。
管理部152は、論理アドレス空間を複数の部分空間に分割する。部分空間を、リージョン(Region)と表記する。図4は、リージョンを説明する図である。各リージョンは、論理アドレスが連続する複数のクラスタを含む。ここでは、各リージョンは、m(mは自然数)個のクラスタを含む。各リージョンは、リージョン番号(Region No.)によって識別される。リージョン番号は、例えば、論理アドレスを右方向にシフトすることによって得られる。リージョン#iは、論理アドレスi*mから論理アドレス((i+1)*m-1)までの範囲である。リージョン内のアドレスは、リージョンの先頭からのオフセットによって表現される。論理アドレスの所定の桁よりも上位桁がリージョン番号に相当し、論理アドレスの前記所定の桁よりも下位桁がリージョン内のアドレスに相当する。
図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がキャッシュされているか否かの管理は、上記の手法に限定されない。
図6は、第2テーブル1213のデータ構成例を示す図である。第2テーブル1213および第2テーブルキャッシュ145は、例えば同じデータ構成を有している。第2テーブル1213は、ユーザデータ1221の格納位置を物理的に示すアドレス(データアドレス)が、リージョン内のアドレス毎に記録される。各リージョンがm個のクラスタによって構成される場合には、第2テーブル145は、少なくともm個のエントリを備える。物理アドレスが対応づけられていない論理アドレスに対しては、第2テーブル145に無効値(例えば「NULL」)が記録される。
管理部152は、NANDメモリ12からRAM14に翻訳情報を読み出して、RAM14に読み出された翻訳情報を使用する。使用するとは、更新することおよび参照することを含む。管理部152は、例えば、第1テーブル1211の全エントリを第1テーブルキャッシュ143としてRAM14に読み出す。管理部152は、例えば、LUT領域1212に格納されている1以上の第2テーブル1213のうち、少なくとも使用の対象のエントリを含む第2テーブル1213をLUTキャッシュ領域144に読み出す。
管理部152がRAM14に読み出された翻訳情報を更新することによって、RAM14に格納されている翻訳情報は、NANDメモリ12に格納されている翻訳情報と異なる状態になる。NANDメモリ12に格納されている翻訳情報と異なるRAM14に格納されている翻訳情報の状態を、ダーティと表記する。管理部152は、翻訳情報のうちのダーティな部分を所定のタイミングでNANDメモリ12に書き込む。翻訳情報のうちのダーティな部分は、NANDメモリ12に書き込まれることによって、非ダーティの状態に遷移する。ダーティであるか非ダーティであるかの管理の単位は任意に設計される。管理部152は、例えば、第1テーブルキャッシュ143に関し、エントリ毎にダーティであるか非ダーティであるかを管理する。管理部152は、例えば、第2テーブルキャッシュ145毎にダーティであるか非ダーティであるかを管理する。
例えば、データ処理部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に書き込んだ後、当該レコードを非ダーティとして管理する。
翻訳情報のうちのダーティな部分をNANDメモリ12に書き込むタイミングは、任意に設計される。例えば、翻訳情報のうちのダーティな部分の合計サイズに基づいてタイミングが決定される。例えば、翻訳情報のうちのダーティな部分の合計サイズが所定のしきい値を超えたタイミングで前記ダーティな部分のうちの一部または全部がNANDメモリ12に書き込まれる。また、電源断時には、翻訳情報のうちの少なくともダーティな部分がNANDメモリ12に書き込まれる。メモリシステム1がバッテリを具備する場合には、電源断時には、管理部152は、当該バッテリに蓄えられたエネルギーによって駆動されてもよい。電源断時には、翻訳情報のうちの少なくともダーティな部分は、管理情報領域121に書き込まれる。NANDメモリ12が緊急に管理情報を退避するための領域(緊急退避領域)を管理情報領域121およびユーザデータ領域122の他に有する場合には、翻訳情報のうちの少なくともダーティな部分は、緊急退避領域に書き込まれ得る。このように、管理部152は、翻訳情報のうちのダーティな部分を可能な限り喪失しないように、RAM14内の翻訳情報を管理する。
なお、第1テーブル1211は、第1テーブルキャッシュ143と同一のデータ構成を有していてもよいし、LUTキャッシュ領域144内のテーブルアドレスの記録が省略されたデータ構成を有していてもよい。
図7は、ログ情報1222のデータ構成例を示す図である。ログ情報1222は、1以上の書き込みログ1223を含む。各書き込みログ1223は、ユーザデータ1221がNANDメモリ12に書き込まれた際の論理アドレスと物理アドレスとの対応関係を、クラスタ単位で示す情報である。例えば、1つのログ情報1222は、対応する1つの物理ページに含まれる全てのクラスタの書き込みログ1223を含む。ログ情報1222は、何れかのユーザデータ1221と対応する。例えば、ログ情報1222は、各物理ブロック内の所定位置のクラスタ(たとえば最後のクラスタ)に書き込まれる。本実施形態では、アトミックライトモードのスレッドが中断された場合に当該スレッドの最初のライトコマンドによって書き込み要求されたユーザデータをNANDメモリ12に書き込む前の状態に翻訳情報を戻すための情報が、書き込みログ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は、スタートコマンドおよびエンドコマンドに基づいて操作される。
アトミックライトモードでないライトコマンドによって書き込み要求されたユーザデータをライトバッファ141からNANDメモリ12に書き込む場合について下記に説明する。データ処理部151は、書き込みログ1223に、論理アドレス200、旧物理アドレス201、および新物理アドレス202を書き込む。データ処理部151は、AW ID203およびStart End Flag204を使用しない。例えば、データ処理部151は、AW ID203には無効値(「NULL」など)を記録する。データ処理部151は、Start End Flag204には、スタートフラグもエンドフラグも立てない。
アトミックライトモードのライトコマンドによって書き込み要求されたユーザデータをライトバッファ141からNANDメモリ12に書き込む場合について下記に説明する。データ処理部151は、書き込みログ1223に、論理アドレス200、旧物理アドレス201、および新物理アドレス202の他に、AW ID203を記録する。データ処理部151は、各スレッドの最初のライトコマンドによって書き込み要求されたユーザデータに対しては、書き込みログ1223のStart End Flag204に、スタートフラグを立てる。データ処理部151は、各スレッドの最後のライトコマンドによって書き込み要求されたユーザデータに対しては、書き込みログ1223のStart End Flag204に、エンドフラグを立てる。データ処理部151は、各スレッドに属するライトコマンドのうちの、各スレッドの最初のライトコマンドおよび各スレッドの最後のライトコマンドの何れにも該当しないライトコマンドによって書き込み要求されたユーザデータに対しては、Start End Flag204には、スタートフラグもエンドフラグも立てない。
例えば、エンドコマンドは、データ処理部151によってライトバッファ141に格納される。データ処理部151は、アトミックライトモードのライトコマンドによって書き込み要求されたユーザデータをNANDメモリ12に書き込む際に、当該書き込み対象のユーザデータの後に当該書き込み対象のユーザデータと同一のスレッドのライトコマンドによって書き込み要求されたユーザデータの受信を介在することなくエンドコマンドの受信があったか否かを、ライトバッファ141を参照することによって判定する。書き込み対象のユーザデータと同一のスレッドのライトコマンドによって書き込み要求されたユーザデータの受信を介在することなくエンドコマンドの受信があった場合には、データ処理部151は、書き込み対象のユーザデータがスレッドの最後のライトコマンドによって書き込み要求されたユーザデータであると判定する。
スレッドが中断された場合、当該中断されたスレッドのライトコマンドによって書き込み要求され、かつ、NANDメモリ12に書き込み済みのユーザデータが存在する場合、当該ユーザデータの格納位置を示す物理アドレスは、巻き戻し処理によって、論理アドレスに対応付けられた状態から論理アドレスに対応づけられていない状態に遷移する。論理アドレスに対応づけられていない状態のユーザデータは、ホスト2からアクセスすることが不可能である。したがって、ホスト2の視点から見ると、スレッドが中断されるまでにメモリシステム1に送信したユーザデータはNANDメモリ12に書き込まれなかったものとして見える。即ち、スレッドが中断された場合には、ホスト2の視点から見ると、メモリシステム1はそのスレッドが開始される前の状態に戻ったように見えるため、アトミックライトの動作が実現する。
図8は、巻き戻し処理の一例を説明するフローチャートである。まず、管理部152は、スレッドの中断の発生時点での第1テーブルキャッシュ143をRAM14に復元する。
続いて、管理部152は、中断の発生時に最後に書いた書き込みログ1223から、書き込み順とは逆順に、所定個数の書き込みログ1223を読み出す(S201)。管理部152は、読み出した所定個数の書き込みログ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は、中断されたスレッドをキャンセル対象のスレッドとして特定する。
S202の処理の後、管理部152は、中断の発生時に最後に書いた書き込みログ1223を選択する(S203)。そして、管理部152は、選択された書き込みログ1223は、キャンセル対象のスレッドにかかる書き込みログ1223であるか否かを判定する(S204)。選択された書き込みログ1223は、中断されたスレッドにかかる書き込みログ1223であるか否かは、選択された書き込みログ1223に記録されたAW ID203が中断されたスレッドを示すAW IDの何れかに含まれるか否かに基づいて判定可能である。
選択された書き込みログ1223がキャンセル対象のスレッドにかかる書き込みログ1223である場合(S204、Yes)、管理部152は、論理アドレス200と旧物理アドレス201とを取得する。そして、管理部152は、取得した論理アドレス200に翻訳情報において対応付けられた物理アドレスを、取得した旧物理アドレス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を指すレコードを、ダーティとして管理する。
S205の処理に続いて、管理部152は、選択された書き込みログ1223にスタートフラグが立っているか否かを判定する(S206)。選択された書き込みログ1223にスタートフラグが立っている場合(S206、Yes)、管理部152は、選択された書き込みログ1223に記録されたAW ID203が示すスレッドを、キャンセル対象のスレッドから削除する(S207)。選択された書き込みログ1223にスタートフラグが立っていない場合(S206、No)、またはS207の処理の後、管理部152は、キャンセル対象のスレッドがまだ存在するか否かを判定する(S208)。
選択された書き込みログ1223がキャンセル対象のスレッドにかかる書き込みログ1223でない場合(S204、No)、またはキャンセル対象のスレッドがまだ存在する場合(S208、Yes)、管理部152は、現在選択中の書き込みログ1223よりも1つ前に書き込まれた書き込みログ1223を新たに選択し(S209)、新たに選択された書き込みログ1223についてS204の処理を実行する。キャンセル対象のスレッドが存在しない場合には(S208、No)、管理部152は、巻き戻し処理を終了する。
このように、第1の実施形態によれば、データ処理部151は、ユーザデータのNANDメモリ12への書き込み毎に書き込みログ1223を記録する。また、データ処理部151は、アトミックライトのスタートおよびアトミックライトの終了を書き込みログ1223に記録する。管理部152は、スレッドが中断された場合には、書き込みログ1223を書き込み順とは逆の順番に読み出すことによって、翻訳情報をスレッドが中断される前の状態に戻す。これによって、アトミックライトの動作が実現する。
なお、以上の説明によれば、データ処理部151は、ユーザデータを書き込み要求したライトコマンドがアトミックライトモードのライトコマンドであるかアトミックライトモードでないライトコマンドであるかに関わらず、そのユーザデータをNANDメモリ12に書き込む際に更新要求を発行する。データ処理部151は、ユーザデータを書き込み要求したライトコマンドがアトミックライトモードのライトコマンドである場合には更新要求を内部にキューイングしておき、内部にキューイングされた更新要求をエンドコマンドの受信を確認した後に管理部152に送信してもよい。これにより、スレッドの終了後に翻訳情報が更新されるので、巻き戻し処理を行うことなくアトミックライトの動作が実現する。
また、以上の説明によれば、管理部152は、翻訳情報のうちのダーティな部分を可能な限り喪失しないように、RAM14内の翻訳情報を管理する。翻訳情報のうちのダーティな部分を喪失した場合には、管理部152は、例えば、書き込み順とは逆順に書き込みログ1223を参照することによって、翻訳情報を再構築する。管理部152は、翻訳情報を再構築する際には、キャンセル対象のスレッドを特定し、書き込み順とは逆順に書き込みログ1223を読み出す。管理部152は、キャンセル対象のスレッドにかかる書き込みログ1223ではない書き込みログ1223が読み出され、かつ、当該書き込みログ1223の論理アドレス200が翻訳情報において何れの物理アドレスにも対応付けられていない場合には、当該書き込みログ1223に記録されている論理アドレス200と当該書き込みログ1223に記録されている新物理アドレス202との対応関係を翻訳情報に上書き形式で記録する。管理部152は、キャンセル対象のスレッドにかかる書き込みログ1223が読み出された場合には、次の書き込みログ1223を読み出す。管理部152は、順次読み出された書き込みログ1223に対して上述の処理を行うことによって、翻訳情報を再構築する。
(第2の実施形態)
図9は、第2の実施形態によるメモリシステムの構成の一例を示す図である。なお、第1の実施形態と同じ機能を有する構成要素には第1の実施形態と同じ名称および符号を付す。第1の実施形態と同じ機能を有する構成要素について、説明を省略する。
メモリシステム1aは、ホスト2と接続可能である。メモリシステム1aは、複数のホスト2に接続可能に構成されてもよい。メモリシステム1aは、第1の実施形態のメモリシステム1と同様に、ホスト2からアトミックライトモードのライトコマンドを受信することができる。メモリシステム1aは、ホストインタフェース部11、NANDメモリ12、NANDコントローラ13、RAM14、および制御部15を備える。制御部15は、予めメモリシステム1a内の所定の位置に格納されているプログラムを実行することによって、データ処理部151aおよび管理部152aとして機能する。
データ処理部151aは、ホスト2とNANDメモリ12との間のデータ転送を実行する。管理部152aは、管理情報の管理を実行する。管理情報は、翻訳情報、統計情報、ブロック情報、などを含む。管理部152aは、論理アドレスと物理アドレスとの間の翻訳を実行する。管理部152aは、翻訳情報のうちのダーティな部分を可能な限り喪失しないように、RAM14内の翻訳情報を管理する。
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が格納される。
図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がキャッシュされる。
第2テーブルキャッシュ145aおよび第2テーブルキャッシュ145bは、ポインタ210およびAW ID211が記録される。第2テーブルキャッシュ145bのAW ID211は、その第2テーブルキャッシュ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には、例えばリスト構造の終端を示す値が記録される。
なお、第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は、双方向のポインタであってもよい。
アトミックライトモードのライトコマンドによって書き込み要求されたユーザデータのNANDメモリ12への書き込みの際には、管理部152aは、対応するスレッドの第2テーブルキャッシュ145bを使用する。アトミックライトモードでないライトコマンドによって書き込み要求されたユーザデータのNANDメモリ12への書き込みの際、および、NANDメモリ12からのユーザデータのリードの際には、管理部152aは、第2テーブルキャッシュ145aを使用する。
図11は、第2の実施形態のデータ処理部151aの動作を説明するフローチャートである。データ処理部151aは、ライトコマンドの受信があったか否かを判定する(S301)。ライトコマンドの受信があった場合(S301、Yes)、データ処理部151aは、当該ライトコマンドによって書き込み要求されたユーザデータをライトバッファ141に格納する(S302)。ライトコマンドの受信がない場合(S301、No)、データ処理部151aは、S302の処理をスキップする。
続いて、データ処理部151aは、書き込みタイミングに至ったか否かを判定する(S303)。任意のタイミングを書き込みタイミングに設定することが可能である。例えば、ライトバッファ141に格納されているユーザデータの合計サイズに基づいて書き込みタイミングが決定される。例えば、書き込みタイミングは、ライトバッファ141に格納されているユーザデータの合計サイズが所定のしきい値を超えたタイミングである。例えば、書き込みタイミングは、ホスト2からFlushコマンドを受信したタイミングである。Flushコマンドとは、ライトバッファ141に格納され、かつ、NANDメモリ12に書き込まれていない全てのユーザデータを、NANDメモリ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)。
第1更新要求および第2更新要求は、翻訳情報の更新のための要求である。第1更新要求は、論理アドレス、旧物理アドレス、および新物理アドレスを少なくとも含む。第1更新要求に含まれる論理アドレスは、ユーザデータを書き込み要求したライトコマンドによって指定された論理アドレスである。旧物理アドレスは、第1更新要求に含まれる論理アドレスに、ユーザデータの書き込み前に対応づけられていた物理アドレスである。新物理アドレスは、ユーザデータが書き込まれることによって論理アドレスに新たに対応付けられた物理アドレスである。
第2更新要求は、論理アドレス、旧物理アドレス、および新物理アドレスの他に、AW IDを少なくとも含む。第2更新要求に含まれるAW IDは、書き込まれたユーザデータを書き込み要求したライトコマンドが属するスレッドを示す。
書き込みタイミングに至っていない場合(S303、No)、またはS307の処理、またはS308の処理の後、データ処理部151aは、エンドコマンドの受信があったか否かを判定する(S309)。エンドコマンドの受信があった場合(S309、Yes)、データ処理部151aは、更新確定要求を管理部152aに送信する(S310)。
更新確定要求は、エンドコマンドによって終了せしめられるスレッドに対応する第2テーブルキャッシュ145bを、複製元の第2テーブルキャッシュ145aに反映させるための要求である。更新確定要求は、エンドコマンドによって終了せしめられるスレッドを示すAW IDを少なくとも含む。なお、データ処理部151aは、エンドコマンドに含まれるAW IDによって特定されるスレッドのライトコマンドによって書き込み要求された全てのライトデータについて第2更新要求を送信した後に、更新確定要求を送信する。
エンドコマンドの受信がない場合(S309、No)、またはS310の処理の後、データ処理部151aは、リードコマンドの受信があったか否かを判定する(S311)。リードコマンドの受信があった場合(S311、Yes)、データ処理部151aは、翻訳要求を管理部152aに送信する(S312)。翻訳要求は、リードコマンドによって指定された論理アドレスを少なくとも含む。管理部152aは、翻訳要求に含まれる論理アドレスを翻訳し、翻訳によって得られた物理アドレスをデータ処理部151aに返す。データ処理部151aは、返された物理アドレスが示す位置からライトバッファ141にユーザデータを読み出す(S313)。データ処理部151aは、ライトバッファ141に読み出されたユーザデータをホスト2に送信する(S314)。S314の処理の後、データ処理部151aは、S301の処理を再び実行する。
図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」を記録する。
該当の第2テーブル1213がLUTキャッシュ領域144にキャッシュされている場合(S402、Yes)、またはS403の処理の後、管理部152aは、第2テーブルキャッシュ145aを更新する(S404)。具体的には、管理部152aは、第1更新要求に含まれる論理アドレスに、第1更新要求に含まれる新物理アドレスを対応付ける。S404の処理の後、管理部152aは、第2テーブルキャッシュ145aのうちの更新されたエントリをダーティとして設定する(S405)。また、第1テーブルキャッシュ143のうちの、更新された第2テーブルキャッシュ145aの格納位置を示すエントリを、ダーティとして設定する(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」を記録する。
該当の第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を検索する。
対象の第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が記録される。
S411の処理の後、管理部152aは、リスト構造を構成する各ポインタ210を更新する(S412)。具体的には、例えば、管理部152aは、リスト構造の終端のポインタ210を、対象の第2テーブルキャッシュ145bの格納位置を示すアドレスで上書きする。対象の第2テーブルキャッシュ145bがLUTキャッシュ領域144にキャッシュされている場合(S410、Yes)、またはS412の処理の後、管理部152aは、対象の第2テーブルキャッシュ145bを更新する(S413)。具体的には、管理部152aは、第2更新要求に含まれる論理アドレスに、第2更新要求に含まれる新物理アドレスを対応付ける。
第2更新要求の受信がない場合(S407、No)、またはS413の処理の後、管理部152aは、更新確定要求の受信があったか否かを判定する(S414)。更新確定要求の受信があった場合(S414、Yes)、管理部152aは、更新確定要求に含まれるAW IDをAW ID211として含む全ての第2テーブルキャッシュ145bを、夫々対応する第2テーブルキャッシュ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について上記の一連の処理を実行する。
S415の処理の後、管理部152aは、S415の処理の対象となった全ての第2テーブルキャッシュ145aをダーティとして設定する(S416)。また、第1テーブルキャッシュ143のうちの、S415の処理の対象となった第2テーブルキャッシュ145aの格納位置を示す全てのエントリを、ダーティとして設定する(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の処理を再び実行する。
このように、第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の状態はスレッドが開始されていない状態であるので、アトミックライトの動作が実現する。
なお、データ処理部151がスレッドの終了時まで更新要求をキューイングし、スレッドの終了時に管理部152がキューイングされている全ての更新要求を実行する場合、管理部152は、更新要求毎に翻訳情報にアクセスする必要がある。これに対し、第2の実施形態によれば、スレッドの終了時には、管理部152aは、リージョン単位で翻訳情報の反映を実行するため、スレッドの終了時の翻訳情報の更新をより早く完了することができる。
また、管理部152aは、リードコマンドによって読み出し要求されたユーザデータ1221のNANDメモリ12からの読み出しの際には、第2テーブルキャッシュ145aを使用する。これにより、スレッドの実行中であっても、スレッドが開始されない状態の翻訳情報に基づいてNANDメモリ12からのユーザデータ1221の読み出しが実行可能である。
また、管理部152aは、アトミックライトモードでないライトコマンドによって書き込み要求されたユーザデータのNANDメモリ12への書き込みの際には、第2テーブルキャッシュ145aを使用する。これにより、スレッドの実行中であっても、スレッドが開始されない状態の翻訳情報に基づいてNANDメモリ12へのユーザデータの書き込みが実行可能である。
なお、管理部152aは、エンドコマンドの受信に応じて第2テーブルキャッシュ145bを第2テーブルキャッシュ145aに反映する。スレッドの終了後に第2テーブルキャッシュ145bが第2テーブルキャッシュ145aに反映せしめられるので、メモリシステム1は、スレッドの終了前は、スレッドのライトコマンドによって書き込み要求された何れのユーザデータも書き込まれない状態に保たれ、スレッドの終了後に、スレッドのライトコマンドによって書き込み要求された全てのユーザデータが書き込まれた状態に移行する。即ち、アトミックライトの動作が実現する。
管理部152aは、スレッドのライトコマンドによって書き込み要求された1以上のユーザデータのうちの最後に書き込み要求されたユーザデータのNANDメモリ12への書き込みに対応して第2テーブルキャッシュ145bを更新した後に、当該第2テーブルキャッシュ145bを第2テーブルキャッシュ145aに反映する。
データ処理部151aは、複数のスレッドのライトコマンドを並行して受信することができる。管理部152aは、スレッド毎に第2テーブルキャッシュ145bを生成する。これにより、メモリシステム1aは、複数のスレッドのアトミックライトの動作を実現することが可能となる。
エンドコマンドは、対応するスレッドを特定するための識別情報を含む。これによりメモリシステム1は、終了の対象のスレッドをエンドコマンドが含む識別情報に基づいて特定することが可能である。
メモリシステム1が外部に提供する論理アドレス空間のサイズは、表記容量と呼ばれる。メモリシステム1の表記容量は、ユーザデータ1221が書き込み可能な領域(即ちユーザデータ領域122)の容量よりも小さい。ユーザデータ領域122には、翻訳情報によって格納位置が論理アドレスに対応付けられているユーザデータ1221と、翻訳情報によって格納位置が論理アドレスに対応付けられていないユーザデータ1221と、が格納されるからである。ユーザデータ領域122の容量から表記容量を減算して得られる容量は、余裕容量と呼ばれる。ユーザデータ領域122は、翻訳情報によって格納位置が論理アドレスに対応付けられていないユーザデータ1221を、最大で余裕容量までため込むことができる。第1の実施形態においては、処理中の全てのスレッドによってホスト2から受け付け可能なユーザデータの合計容量は、余裕容量を超えることができない。即ち、データ処理部151aがスレッドの最後の第1データまでに受信可能なユーザデータの当該スレッドの最初のユーザデータからの合計のサイズは、メモリシステム1aの余裕容量以下である。
(第3の実施形態)
図13は、メモリシステム1の実装例を示す図である。メモリシステム1は、例えばサーバシステム1000に実装される。サーバシステム1000は、ディスクアレイ2000とラックマウントサーバ3000とが通信インタフェース4000によって接続されて構成される。通信インタフェース4000の規格としては任意の規格が採用可能である。ラックマウントサーバ3000は、サーバラックに1以上のホスト2がマウントされて構成される。複数のホスト2は、通信インタフェース4000を介してディスクアレイ2000にアクセスすることができる。
また、ディスクアレイ2000は、サーバラックに1以上のメモリシステム1がマウントされて構成される。ディスクアレイ2000は、メモリシステム1の他に、1以上のハードディスクユニットがマウントされてもよい。各メモリシステム1は、各ホスト2からのコマンドを実行することができる。また、各メモリシステム1は、第1または第2の実施形態が採用された構成を有している。これにより、各メモリシステム1は、簡単にアトミックライトを実行することができる。
なお、ディスクアレイ2000においては、例えば、各メモリシステム1は、1以上のハードディスクユニットのキャッシュとして使用されてもよい。ディスクアレイ2000は、1以上のメモリシステム1を利用してRAIDを構築するストレージコントローラユニットがマウントされてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
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 通信インタフェース。

Claims (14)

  1. ホストに接続可能なメモリシステムであって、
    不揮発性の第1メモリと、
    揮発性の第2メモリと、
    前記ホストからのコマンドに応じて前記ホストと前記第1メモリとの間のデータ転送を実行するデータ処理部と、
    前記ホストから指定される位置情報である論理位置情報と前記第1メモリ内の物理的な位置を示す位置情報である物理位置情報との対応関係を示す第1翻訳情報を前記第2メモリにキャッシュして、前記第2メモリにキャッシュされた前記第1翻訳情報である第2翻訳情報を管理する管理部と、
    を備え、
    前記管理部は、
    前記データ処理部が第1データを前記第1メモリに格納する場合に第3翻訳情報を更新し、前記第1データはアトミックライトを指定するモードである第1ライトモードで前記ホストから受信するデータ群に含まれ、前記第翻訳情報は前記第翻訳情報の複製であり前記第2メモリに格納されており
    前記第1ライトモードが終了する場合に前記第翻訳情報を前記第翻訳情報に反映する、
    ことを特徴とするメモリシステム。
  2. 前記管理部は、前記データ処理部が前記第1メモリから前記ホストへのデータ転送を実行する場合に、前記第翻訳情報を参照することによって前記第1メモリ内のデータ転送の物理位置情報を取得する、
    ことを特徴とする請求項1に記載のメモリシステム。
  3. 前記管理部は、前記データ処理部が第2データを前記第1メモリに格納する場合に前記第翻訳情報を更新し、前記第2データは前記第1ライトモードと異なる第2ライトモードで前記ホストから受信したデータである、
    ことを特徴とする請求項2に記載のメモリシステム。
  4. 前記データ処理部は、エンドコマンドを受信し、
    前記管理部は、前記エンドコマンドの受信に応じて前記第翻訳情報を前記第翻訳情報に反映する、
    ことを特徴とする請求項1に記載のメモリシステム。
  5. 前記管理部は、前記エンドコマンドの受信の後、かつ、前記データ群のうちの最後の第1データに応じて前記第翻訳情報を更新した後、前記第翻訳情報を前記第翻訳情報に反映する、
    ことを特徴とする請求項4に記載のメモリシステム。
  6. 前記データ処理部は、前記データ群を複数、並行して受信し、
    前記管理部は、データ群毎に前記第翻訳情報を生成する、
    ことを特徴とする請求項1に記載のメモリシステム。
  7. 前記データ処理部は、エンドコマンドをデータ群毎に受信し、
    前記管理部は、前記受信されたエンドコマンドに対応するデータ群にかかる第翻訳情報を前記第翻訳情報に反映する、
    ことを特徴とする請求項6に記載のメモリシステム。
  8. 前記管理部は、前記受信されたエンドコマンドに対応するデータ群にかかる第翻訳情報を、前記受信されたエンドコマンドに対応する前記データ群のうちの最後の第1データに応じて更新した後に、前記受信されたエンドコマンドに対応するデータ群にかかる第翻訳情報を前記第翻訳情報に反映する、
    ことを特徴とする請求項7に記載のメモリシステム。
  9. 前記エンドコマンドは、対応するデータ群を識別する識別情報を備える、
    ことを特徴とする請求項8に記載のメモリシステム。
  10. 前記管理部は、所定のタイミングで前記第2翻訳情報の更新部分を前記第1メモリに保存する、
    請求項1に記載のメモリシステム。
  11. 前記所定のタイミングは、電源断のタイミングを含む、
    請求項10に記載のメモリシステム。
  12. 前記管理部は、電源復帰後、前記保存された更新部分に基づいて前記第2翻訳情報を復元する、
    請求項11に記載のメモリシステム。
  13. 前記管理部は、前記データ処理部が前記第1ライトモードで前記ホストから受信する前記データ群に含まれるデータを前記第1メモリに最初に格納する場合に前記第2翻訳情報を複製して前記第3翻訳情報を生成する、
    請求項1に記載のメモリシステム。
  14. ホストに接続可能なメモリシステムであって、
    不揮発性のメモリと、
    前記ホストからのコマンドに応じて前記ホストと前記メモリとの間のデータ転送を実行するデータ処理部と、
    論理位置情報と物理位置情報との対応関係を示す第1翻訳情報を管理し、前記論理位置情報は前記ホストから指定される位置情報であり、前記物理位置情報は前記メモリ内の位置を物理的に示す位置情報である、管理部と、
    を備え、
    前記管理部は、
    前記データ処理部が第1データを前記メモリに格納する場合に第2翻訳情報を更新し、前記第1データは第1ライトモードで前記ホストから受信するデータ群に含まれ、前記第2翻訳情報は前記第1翻訳情報の複製であり、
    前記第1ライトモードが終了する場合に前記第2翻訳情報を前記第1翻訳情報に反映し、
    前記データ処理部は、エンドコマンドを受信し、
    前記管理部は、前記エンドコマンドの受信に応じて前記第2翻訳情報を前記第1翻訳情報に反映する、
    ことを特徴とするメモリシステム。
JP2015110461A 2015-05-29 2015-05-29 メモリシステム Active JP6398102B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015110461A JP6398102B2 (ja) 2015-05-29 2015-05-29 メモリシステム
CN201510651436.1A CN106201335B (zh) 2015-05-29 2015-10-10 存储系统
US15/018,097 US20160350003A1 (en) 2015-05-29 2016-02-08 Memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015110461A JP6398102B2 (ja) 2015-05-29 2015-05-29 メモリシステム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018149521A Division JP6640940B2 (ja) 2018-08-08 2018-08-08 メモリシステムの制御方法

Publications (2)

Publication Number Publication Date
JP2016224708A JP2016224708A (ja) 2016-12-28
JP6398102B2 true JP6398102B2 (ja) 2018-10-03

Family

ID=57398435

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015110461A Active JP6398102B2 (ja) 2015-05-29 2015-05-29 メモリシステム

Country Status (3)

Country Link
US (1) US20160350003A1 (ja)
JP (1) JP6398102B2 (ja)
CN (1) CN106201335B (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108228483B (zh) * 2016-12-15 2021-09-14 北京忆恒创源科技股份有限公司 处理原子写命令的方法和设备
CN108959108B (zh) 2017-05-26 2021-08-24 上海宝存信息科技有限公司 固态硬盘访问方法以及使用该方法的装置
KR102612911B1 (ko) * 2018-08-31 2023-12-13 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
KR20200025821A (ko) * 2018-08-31 2020-03-10 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
US11294807B2 (en) * 2019-06-25 2022-04-05 Western Digital Technologies, Inc. Delayed write failure logging
TWI734220B (zh) * 2019-07-10 2021-07-21 慧榮科技股份有限公司 主機輸出入命令的執行裝置及方法及電腦程式產品
JP7408449B2 (ja) 2020-03-23 2024-01-05 キオクシア株式会社 記憶装置及び記憶方法
US11934303B2 (en) * 2022-05-12 2024-03-19 Micron Technology, Inc. Atomic write operations

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4058322B2 (ja) * 2002-10-07 2008-03-05 株式会社ルネサステクノロジ メモリカード
US20090313420A1 (en) * 2008-06-13 2009-12-17 Nimrod Wiesz Method for saving an address map in a memory device
FR2937755B1 (fr) * 2008-10-24 2010-12-31 Commissariat Energie Atomique Dispositif pour gerer des tampons de donnees dans un espace memoire reparti sur une pluralite d'elements de memoire
JP5518197B2 (ja) * 2009-09-09 2014-06-11 フュージョン−アイオー・インコーポレーテッド ストレージを割り当てるための装置、システム、および方法
US8856438B1 (en) * 2011-12-09 2014-10-07 Western Digital Technologies, Inc. Disk drive with reduced-size translation table
US9075708B1 (en) * 2011-06-30 2015-07-07 Western Digital Technologies, Inc. System and method for improving data integrity and power-on performance in storage devices
KR101824295B1 (ko) * 2011-08-12 2018-01-31 샌디스크 테크놀로지스 엘엘씨 솔리드 스테이트 장치 가상화를 포함하는 캐시 관리
JP2013061814A (ja) * 2011-09-13 2013-04-04 Toshiba Corp データ記憶装置、メモリ制御装置及び方法
US8862858B1 (en) * 2012-09-28 2014-10-14 Emc Corporation Method and system for fast block storage recovery
KR20150105323A (ko) * 2013-01-08 2015-09-16 바이올린 메모리 인코포레이티드 데이터 스토리지 방법 및 시스템
US9218279B2 (en) * 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US20150074336A1 (en) * 2013-09-10 2015-03-12 Kabushiki Kaisha Toshiba Memory system, controller and method of controlling memory system
GB2527529B (en) * 2014-06-24 2021-07-14 Advanced Risc Mach Ltd A device controller and method for performing a plurality of write transactions atomically within a non-volatile data storage device

Also Published As

Publication number Publication date
CN106201335A (zh) 2016-12-07
US20160350003A1 (en) 2016-12-01
CN106201335B (zh) 2019-07-05
JP2016224708A (ja) 2016-12-28

Similar Documents

Publication Publication Date Title
JP6398102B2 (ja) メモリシステム
US10248322B2 (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
US9891825B2 (en) Memory system of increasing and decreasing first user capacity that is smaller than a second physical capacity
US20180275899A1 (en) Hardware based map acceleration using forward and reverse cache tables
US10628303B2 (en) Storage device that maintains a plurality of layers of address mapping
US20110231598A1 (en) Memory system and controller
US20150339058A1 (en) Storage system and control method
JP2016503927A (ja) ストレージシステム及びキャッシュコントロール方法
US9940071B2 (en) Memory system that carries out an atomic write operation
JP2013222435A (ja) 半導体記憶装置及びその制御方法
US10223001B2 (en) Memory system
US20150074336A1 (en) Memory system, controller and method of controlling memory system
JP4242245B2 (ja) フラッシュrom制御装置
US20170199687A1 (en) Memory system and control method
US9798470B2 (en) Memory system for storing and processing translation information
KR101153688B1 (ko) 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
US20200319999A1 (en) Storage device, control method of storage device, and storage medium
US20080059706A1 (en) Storage apparatus, storage system and control method for storage apparatus
JP6640940B2 (ja) メモリシステムの制御方法
JP2013196155A (ja) メモリシステム
US20140281157A1 (en) Memory system, memory controller and method
JP7429214B2 (ja) ストレージシステム及びストレージシステムにおけるデータ複製方法
JP6860722B2 (ja) メモリシステムの制御方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170605

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180516

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180529

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180702

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: 20180717

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180809

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180822

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180823

R150 Certificate of patent or registration of utility model

Ref document number: 6398102

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350