JP5591406B2 - Low latency content address storage device - Google Patents

Low latency content address storage device Download PDF

Info

Publication number
JP5591406B2
JP5591406B2 JP2013527055A JP2013527055A JP5591406B2 JP 5591406 B2 JP5591406 B2 JP 5591406B2 JP 2013527055 A JP2013527055 A JP 2013527055A JP 2013527055 A JP2013527055 A JP 2013527055A JP 5591406 B2 JP5591406 B2 JP 5591406B2
Authority
JP
Japan
Prior art keywords
data
storage device
address
content address
content
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
JP2013527055A
Other languages
Japanese (ja)
Other versions
JP2013541753A (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.)
NEC Laboratories America Inc
Original Assignee
NEC Laboratories America Inc
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
Priority claimed from US12/905,223 external-priority patent/US8375164B2/en
Application filed by NEC Laboratories America Inc filed Critical NEC Laboratories America Inc
Publication of JP2013541753A publication Critical patent/JP2013541753A/en
Application granted granted Critical
Publication of JP5591406B2 publication Critical patent/JP5591406B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データを内容アドレス記憶装置に格納することに関し、特に、データを内容アドレス記憶装置に格納することに伴うレイテンシ(待ち時間)を短くするためにアプリケーションと内容アドレス記憶装置の間にストレージ層を配置することに関する。   The present invention relates to storing data in a content address storage device, and more particularly, storage between an application and the content address storage device to reduce latency associated with storing data in the content address storage device. Relates to arranging the layers.

内容アドレス記憶(CAS)装置は、データを書き込むこと関して、伝統的な記憶装置よりも複雑である。同期書き込み動作を確認する前に、CAS装置は、ブロックの内容に基づいてハッシュキーを計算し、(現在書き込まれている内容と)同一の内容を有するブロックがCAS装置に既に書き込まれたかを(例えば、ハッシュテーブル内の値を調べることによって)判定するチェックを行い、そのブロックが固有のものであると判定すると、そのブロックを書き込む。肯定応答では、ハッシュキーと等しいか、またはハッシュキーから導きだされる内容アドレスも返される。内容アドレスは、ブロックを検索するために、読出し動作中に使用される。   Content address storage (CAS) devices are more complex than traditional storage devices for writing data. Prior to confirming the synchronous write operation, the CAS device calculates a hash key based on the contents of the block and determines whether a block with the same content (as currently written content) has already been written to the CAS device ( For example, by performing a check to determine (by examining values in the hash table) and determining that the block is unique, the block is written. In a positive response, a content address equal to or derived from the hash key is also returned. The content address is used during a read operation to retrieve the block.

同一の内容を有するブロックが以前に格納されたかどうか判定するためのチェックだけでなく、ハッシュキーの計算が、データをCAS装置に書き込むことに伴うレイテンシの重大な要因となっている。   In addition to checking to determine if a block with the same content has been previously stored, the calculation of the hash key is a significant factor in latency associated with writing data to the CAS device.

本発明の原理にしたがって、データを記憶装置に格納するシステムが提供される。本システムは、内容アドレス記憶装置と持続型キャッシュを含む。持続型キャッシュは、持続型キャッシュに格納されるデータに対応する一時的アドレスを生成する一時的アドレス生成器と、データを持続型キャッシュに格納し、また持続型キャッシュ内のデータを、一時的アドレスを用いて検索するように構成された非内容アドレス記憶装置を含む。持続型キャッシュは非内容アドレス記憶装置内にあるデータに対応する一時的アドレスを、内容アドレス記憶装置内にあるデータに対応する内容アドレスにマッピングするように構成されたアドレス変換器をさらに有する。   In accordance with the principles of the present invention, a system for storing data in a storage device is provided. The system includes a content address storage device and a persistent cache. The persistent cache includes a temporary address generator that generates a temporary address corresponding to data stored in the persistent cache, stores the data in the persistent cache, and stores the data in the persistent cache as a temporary address. A non-content address storage device configured to search using. The persistent cache further includes an address translator configured to map a temporary address corresponding to the data in the non-content address storage device to a content address corresponding to the data in the content address storage device.

本発明の原理にしたがって、データを記憶装置に格納する方法は、書き込み要求に対応するデータが非内容アドレス記憶装置に格納されるべきか、または内容アドレス記憶装置に直接、書き込まれるべきかを判定することを含む。データが非内容アドレス記憶装置に格納されるべきと判定されると、非内容アドレス記憶装置に格納されるべきデータの一時的アドレスが生成され、データが非内容アドレス記憶装置に持続的に格納されたとの肯定応答が、データが内容アドレス記憶装置に書き込まれる前に送られてもよい。さらに、非内容アドレス記憶装置内にあるデータに対応する少なくとも1つの一時的アドレスが、該データが内容アドレス記憶装置に書き込まれた後に、データの内容アドレス記憶装置内の内容アドレスとマッピングされる。   In accordance with the principles of the present invention, a method for storing data in a storage device determines whether data corresponding to a write request should be stored in a non-content address storage device or written directly to a content address storage device. Including doing. When it is determined that the data is to be stored in the non-content address storage device, a temporary address of the data to be stored in the non-content address storage device is generated and the data is persistently stored in the non-content address storage device. A positive acknowledgment may be sent before the data is written to the content address store. In addition, at least one temporary address corresponding to data in the non-content address storage device is mapped to a content address in the content address storage device of the data after the data is written to the content address storage device.

これらおよび他の特徴ならびに利点は、添付の図面と関連して読まれるべき実施形態の下記の詳細な記述から明らかになろう。   These and other features and advantages will become apparent from the following detailed description of the embodiments to be read in conjunction with the accompanying drawings.

データを本発明の原理にしたがって内容アドレス記憶装置に格納するシステムのブロック/フロー図である。1 is a block / flow diagram of a system for storing data in a content address storage device in accordance with the principles of the present invention. FIG. データを内容アドレス記憶装置に格納する、図1のシステムをさらに詳細に示すブロック/フロー図である。FIG. 2 is a block / flow diagram illustrating in more detail the system of FIG. 1 storing data in a content address storage device. データを本発明の原理にしたがって内容アドレス記憶装置に格納する方法のブロック/フロー図である。FIG. 3 is a block / flow diagram of a method for storing data in a content address storage device in accordance with the principles of the present invention.

本開示は、好適な実施形態の以下の記述において図を参照して詳細な説明をもたらす。   The present disclosure provides a detailed description with reference to the figures in the following description of preferred embodiments.

内容アドレス記憶装置へのアクセスに伴うレイテンシを減らすことができる記憶システムを、本発明の原理にしたがって説明する。本システムは、ロー・レイテンシ・ブロック記憶装置(LLBS)からなる記憶層を、内容アドレス記憶装置(CABS)と、内容参照可能なAPIにしたがってI/O動作を出しているアプリケーションの間に配置している。CABSにブロックを直接書き込むだけでなく、先ず、ブロックはLLBSに書き込まれ、肯定応答し、続いてCABSに転送されてもよい。その後のある時点で、これらブロックはLLBSから除かれてもよい。その際、内容アドレス記憶装置を使用することの利点(例えば、冗長な重複データの削除)は維持されつつ、内容アドレス記憶装置への書き込みに伴う欠点(例えば、ハイ・レイテンシ)は除かれるか、軽減される。   A storage system capable of reducing the latency associated with accessing a content address storage device will be described in accordance with the principles of the present invention. In this system, a storage layer consisting of a low latency block storage device (LLBS) is placed between a content address storage device (CABS) and an application that issues I / O operations according to an API that can refer to the content. ing. In addition to writing the block directly to the CABS, the block may first be written to the LLBS, acknowledged, and subsequently transferred to the CABS. At some point thereafter, these blocks may be removed from the LLBS. In doing so, the advantages of using a content address storage device (eg, elimination of redundant duplicate data) are maintained, while the disadvantages associated with writing to the content address storage device (eg, high latency) are eliminated, It is reduced.

LLBSには、持続型記憶装置用のソリッド・ステート・ドライブ装置またはハード・ディスク・ドライブ装置が用いられてもよい。これらの装置は、I/O動作に伴うレイテンシを減らすように最適化されている。ここに記載した原理にしたがって、アプリケーションに、該アプリケーションが、ハッシュを計算すること、またはハッシュテーブル内の値を検索することに伴う遅れを経験しないように、LLBSは、データを一時的に格納し、肯定応答を返すことができる。LLBSは、そのLLBSに書き込まれた同じデータを含むCABSへの書き込みを開始することもできる。CABSへの書き込みは、ハッシュを計算することや、ハッシュテーブル内の値を検索することに伴う遅れのためにハイ・レイテンシに遭遇する。しかしながら、LLBSがデータを速やかに格納し、肯定応答を返すことができるので、レイテンシはアプリケーション(またはアプリケーションを利用するエンドユーザー)によって受けることはない。   The LLBS may be a solid state drive device or a hard disk drive device for persistent storage. These devices are optimized to reduce the latency associated with I / O operations. In accordance with the principles described herein, LLBS stores data temporarily in an application so that the application does not experience the delays associated with computing a hash or retrieving a value in a hash table. Can return a positive response. An LLBS can also initiate a write to a CABS that contains the same data written to that LLBS. Writing to CABS encounters high latency due to the delays associated with computing the hash and retrieving values in the hash table. However, latency is not incurred by the application (or the end user using the application) because the LLBS can store the data quickly and return an acknowledgment.

ここに記載された実施形態は、完全にハードウェア、または完全にソフトウェア、またはハードウェアの要素とソフトウェアの要素の両方を含むものであってよい。好適な実施形態では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコード等を含むが、これに限定されないソフトウェアで実施される。   Embodiments described herein may be entirely hardware, or entirely software, or include both hardware and software elements. In preferred embodiments, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.

実施形態は、コンピュータで使用可能な、またはコンピュータ読出し可能な媒体からアクセス可能で、コンピュータまたは命令実行システムによって使用される、あるいはコンピュータまたは命令実行システムに関連して使用されるプログラムコードを有するコンピュータプログラム製品を含んでもよい。コンピュータで使用可能な、またはコンピュータ読出し可能な媒体は、命令実行システム、装置、または機器によって、またはこれらに関連して使用される、プログラムを格納し、通信し、伝播し、搬送する装置を含んでよい。該媒体は、磁気的、光学的、電子的、電磁的、赤外線の、または半導体のシステム(または装置またはシステム)あるいは伝播媒体であってよい。該媒体は、半導体またはソリッド・ステートのメモリ、磁気テープ、取り外し可能なコンピュータディスケット、ランダム・アクセス・メモリ(RAM)、読出し専用メモリ(ROM)、剛な磁気ディスク、光ディスクなどの、コンピュータ読出し可能な記憶媒体を含んでよい。   Embodiments are computer programs having program code that can be used by a computer or an instruction execution system or that can be accessed from a computer or computer-readable medium. Products may be included. A computer usable or computer readable medium includes any device that stores, communicates, propagates, or carries a program used by or in connection with an instruction execution system, apparatus, or device. It's okay. The medium can be a magnetic, optical, electronic, electromagnetic, infrared, or semiconductor system (or apparatus or system) or a propagation medium. The medium may be computer readable, such as semiconductor or solid state memory, magnetic tape, removable computer diskette, random access memory (RAM), read only memory (ROM), rigid magnetic disk, optical disk, etc. A storage medium may be included.

プログラムコードを格納および/または実行するのに適したデータ処理システムは、メモリ要素に直接、またはシステムバスを介して間接的に接続された少なくとも1つのプロセッサを含んでよい。該メモリ要素は、プログラムコードの実際の実行中に使用されるローカルメモリ、大容量記憶装置、プログラムコードが、実行中に大容量記憶装置から検索される回数を減らすために少なくともいくらかのプログラムを一時的に記憶するキャッシュメモリを含み得る。入力/出力、すなわちI/O装置およびシステム(キーボード、ディスプレイ、ポインティングシステム等を含むが、これらに限定されない)がデータ処理システムに直接または介在するI/Oコントローラを介して接続されてもよい。   A data processing system suitable for storing and / or executing program code may include at least one processor coupled directly to the memory elements or indirectly through a system bus. The memory element temporarily stores at least some program to reduce the number of times local code, mass storage, program code is retrieved from the mass storage device during execution. A cache memory may be included. Input / output or I / O devices and systems (including but not limited to keyboards, displays, pointing systems, etc.) may be connected directly or via an I / O controller intervening in the data processing system.

データ処理システムが他のデータ処理システム、またはリモートプリンタ、または記憶装置、または記憶システムに、介在するプライベート・ネットワークまたは公衆ネットワークを介して接続されるようになるのを可能にするネットワーク・アダプタがデータ処理システムに接続されてもよい。モデム、ケーブル・モデム、イーサネット(登録商標)・カードはネットワーク・アダプタの現在、入手可能な数種類に過ぎない。   A network adapter that allows a data processing system to become connected to other data processing systems, or remote printers, or storage devices, or storage systems via an intervening private or public network It may be connected to a processing system. Modems, cable modems, and Ethernet cards are only a few types of network adapters currently available.

ここで、同じ番号が同じまたは類似の要素を表す図面のうち最初に図1を参照すると、ブロック/フロー図が、データを本発明の原理にしたがって内容アドレス記憶装置に格納するシステム100を例示的に示している。図1に示されているように、アプリケーション130がデータを記憶システム110に格納する。アプリケーション130は、記憶システム110を有するコンピュータ上でローカルに実行するものであっても、または記憶システム110を有するサーバまたは他のシステムに(例えば、ネットワークを介して)接続されたクライアント・マシン上で実行するものであってもよい。   Referring now first to FIG. 1 of the drawings in which like numerals represent the same or similar elements, a block / flow diagram illustrates an exemplary system 100 for storing data in a content address storage device in accordance with the principles of the present invention. It shows. As shown in FIG. 1, the application 130 stores data in the storage system 110. Application 130 runs locally on a computer having storage system 110 or on a client machine connected to a server or other system having storage system 110 (eg, via a network). It may be executed.

記憶システム110はロー・レイテンシ・ブロック記憶装置(LLSB)150と、内容アドレスブロック記憶装置(CABS)160とを有する。CABS160は、任意の種類の内容アドレス記憶装置を表している。一方、LLBS150は、I/O動作に伴うレイテンシを軽減するように最適化されたソリッド・ステート・ドライブ(SSD)またはハード・ディスク・ドライブ(HDD)を含んでよい。しかしながら、LLBS160はこれらの種類の記憶装置に限定されるものではなく、一般に、入力/出力(I/O)動作に関してCABS160よりも短いレイテンシを有する非内容アドレス記憶媒体を使用してもよい。   The storage system 110 has a low latency block storage (LLSB) 150 and a content address block storage (CABS) 160. CABS 160 represents any type of content address storage device. On the other hand, the LLBS 150 may include a solid state drive (SSD) or a hard disk drive (HDD) that is optimized to reduce latency associated with I / O operations. However, the LLBS 160 is not limited to these types of storage devices and may generally use non-content addressed storage media having a shorter latency than the CABS 160 for input / output (I / O) operations.

アプリケーション130は、データをCABS160に直接、格納しないで、最初にデータをLLBS150に格納してもよい。LLBS150へのデータの格納に成功すると、肯定応答がアプリケーション130に返される。LLBS150はロー・レイテンシに備えたものであるので、肯定応答は比較的早く、または少なくとも、CABS160が肯定応答を返すことができる時間よりも早く返される。   The application 130 may store the data in the LLBS 150 first without storing the data directly in the CABS 160. If the data is successfully stored in the LLBS 150, an acknowledgment is returned to the application 130. Since the LLBS 150 is for low latency, the acknowledgment is returned relatively early or at least earlier than the time that the CABS 160 can return an acknowledgment.

理解されるように、内容アドレス記憶装置・アプリケーション・プログラミング・インタフェース(API)は、アプリケーション130とLLBS50の間、LLBS150とCABS160の間の通信を可能にする。   As will be appreciated, the content address storage application programming interface (API) allows communication between the application 130 and the LLBS 50 and between the LLBS 150 and the CABS 160.

図2に移ると、データを内容アドレス記憶装置に格納するシステム200のより詳細な図が説明的に描かれている。アプリケーション130はLLBS150に書き込み要求を送信する。アプリケーション130から書き込み要求を受信すると、キャッシュ・マネージャー210は、記憶装置240を用いてデータを持続的に格納するキー‐値格納部230として構成された非内容アドレス記憶装置235に書き込み要求を送ることがある。書き込み要求によるデータを非内容アドレス記憶装置235に格納するために、キャッシュ・マネージャー210は一時的アドレス(「TA」)発生器250から一時的アドレスを取得する。このアドレスは、データを後で検索するためのキーとして使用される。   Turning to FIG. 2, a more detailed view of a system 200 for storing data in a content address storage device is illustratively depicted. Application 130 sends a write request to LLBS 150. Upon receipt of a write request from the application 130, the cache manager 210 sends a write request to the non-content address storage 235 configured as a key-value storage 230 that uses the storage 240 to persistently store data. There is. The cache manager 210 obtains a temporary address from the temporary address (“TA”) generator 250 in order to store the data from the write request in the non-content address storage device 235. This address is used as a key for later retrieval of data.

キー‐値格納部230は、データを記憶装置240に格納する仕組みの制御を担っている。キー‐値格納部230は、データとその一時的アドレスの両方を記憶装置240に格納する。データは、一時的アドレスを用いて後で検索すること、または読み出すことができる。記憶装置240は、ソリッド・ステート・ドライブ(SSD)、ハード・ディスク・ドライブ(HDD)、または、I/O動作を実行することに関してCABS160よりも短いレイテンシを有する他の装置のような、短レイテンシシステムであることが好ましい。   The key-value storage unit 230 is responsible for controlling the mechanism for storing data in the storage device 240. The key-value storage unit 230 stores both the data and its temporary address in the storage device 240. The data can be retrieved later or retrieved using a temporary address. The storage device 240 is a short latency device such as a solid state drive (SSD), hard disk drive (HDD), or other device that has a latency lower than the CABS 160 for performing I / O operations. A system is preferred.

データをLLBS150に書き込むと、キャッシュ・マネージャー210は肯定応答を、データを検索するために使用することができる一時的アドレスと共にアプリケーション130に送信する。キャッシュ・マネージャー210は、記憶装置240に既に書き込まれたデータをCABS160にも書き込む。データを格納する際には、CABS160はデータの内容に基づいてハッシュ値を計算し、重複除外動作(例えば、ハッシュテーブル内の値を検索することを含む)を行う。2つの同一のブロックがLLBS150に書き込まれ、各々に個別の一時的アドレスが割り当てられていたとしても、これらブロックの両方は、LLBS150がデータをCABS160に転送したとき、最終的に同じ内容アドレスにマッピングされる。LLBS150は、書き込み動作が成功したことを以前に確認しているので、アプリケーション130は、データをCABS160に格納することに伴う、重複除外の利点を保持しつつ、これらのハッシング動作およびハッシュテーブル検索動作に伴うレイテンシを避けることができる。   Upon writing data to LLBS 150, cache manager 210 sends an acknowledgment to application 130 along with a temporary address that can be used to retrieve the data. The cache manager 210 also writes the data already written in the storage device 240 into the CABS 160. When storing data, the CABS 160 calculates a hash value based on the content of the data, and performs a de-duplication operation (for example, searching for a value in the hash table). Even though two identical blocks were written to LLBS 150, each with a separate temporary address, both of these blocks will eventually map to the same content address when LLBS 150 transfers data to CABS 160. Is done. Since the LLBS 150 has previously confirmed that the write operation has been successful, the application 130 retains the benefits of deduplication associated with storing data in the CABS 160 while maintaining these hashing and hash table lookup operations. The latency associated with can be avoided.

データの格納に成功した後、CABS160は、データがCABS160内のどこに格納されたかを反映した内容アドレスを、LLBS150にあるキャッシュ・マネージャー210に返す。内容アドレスはアドレス変換器220に送信され、アドレス変換器220は(データのLLBS150内の場所を反映する)一時的アドレスを(データのCABS160内の場所を反映する)内容アドレスにマッピングし、このマッピングの情報を記憶装置240に格納する。ブロックが埋め込みアドレスを有する場合には、各埋め込みアドレスに対応付けられたデータが、親ブロックがCABS160に書き込まれる前に、まずCABS160に書き込まれ、対応する内容アドレスにマッピングされなければならない。これによって、一時的アドレスがCABS160に書き込まれるのが避けられる。   After the data is successfully stored, the CABS 160 returns a content address reflecting where the data is stored in the CABS 160 to the cache manager 210 in the LLBS 150. The content address is sent to the address translator 220, which maps the temporary address (reflecting the location in the data LLBS 150) to the content address (reflecting the location in the data CABS 160) and this mapping. Is stored in the storage device 240. If the block has an embedded address, the data associated with each embedded address must first be written to CABS 160 and mapped to the corresponding content address before the parent block is written to CABS 160. This avoids the temporary address being written to the CABS 160.

アドレスのマッピングが一旦記憶装置240に持続的に書き込まれると、LLBS150は、記憶装置240内の対応するデータを削除することができる。アプリケーション130が一時的アドレスを用いて後続の読出しリクエストを発行した場合、該一時的アドレスに対応付けられた内容アドレスをアドレス変換器220によってまず検索することができ、この情報はデータをCABS160から検索するのに使用することができる。   Once the address mapping is persistently written to the storage device 240, the LLBS 150 can delete the corresponding data in the storage device 240. When the application 130 issues a subsequent read request using a temporary address, the content address associated with the temporary address can be first retrieved by the address translator 220, and this information is retrieved from the CABS 160. Can be used to do.

上記で説明した方法でデータブロックをLLBS150から除くことができるが、一時的アドレスの内容アドレスへのマッピングを除くことはアプリケーション130の協働を必要とすることがある。アプリケーション130の協働は、アプリケーション130がその一時的アドレスを用いてブロックを要求する状況を避けるために必要であるが、該ブロックも、一時的アドレスから内容アドレスへのマッピングもLLBS150では利用できない。この状況を避ける1つの方法は、アプリケーション130にそのアドレス全てを周期的に廃棄させることである。これが一旦なされると、LLBS150はそのマッピングの全てを削除することができる。アプリケーション130がそのアドレスの全てを廃棄し、LLBS150がそのマッピングの全てを削除した後、アプリケーション130は、有向非巡回グラフの根を表すラベル付きブロックの読出しを、ここにその全体が参照によって取り込まれる米国特許出願2010/0070698号で説明された方法で発行することによってブロックをアクセスすることができる。   Although the data block can be removed from the LLBS 150 in the manner described above, removing the mapping of the temporary address to the content address may require cooperation of the application 130. Cooperation of application 130 is necessary to avoid situations where application 130 requests a block using its temporary address, but neither the block nor the mapping of temporary address to content address is available in LLBS 150. One way to avoid this situation is to have the application 130 periodically discard all of its addresses. Once this is done, the LLBS 150 can delete all of its mappings. After application 130 discards all of its addresses and LLBS 150 deletes all of its mappings, application 130 takes a read of a labeled block representing the root of the directed acyclic graph, here in its entirety by reference. The blocks can be accessed by issuing them in the manner described in US patent application 2010/0070698.

データは通常、CABS160に転送される前にLLBS150に格納されるが、データがCABS160に直接、格納されるのが好ましい特定の状況が存在することがある。例えば、アプリケーション130がLLBS150に書き込み要求を発行するが、LLBS150はデータを格納するために利用できる十分なスペースを持たない場合が考えられる。LLBS150が、データをCABS160に転送することによって、スペースを空けること待つよりも、入力するデータブロックを直接、CABS160に書き込むことが有利かもしれない。これは、データをCABS160に直接、格納することが好ましいかもしれないたった1つの例示的状況であること、そしてデータをCABS160に直接、書き込むことができるであろう様々な他の状況が存在するかもしれないことに留意すべきである。   Although data is typically stored in LLBS 150 before being transferred to CABS 160, there may be certain situations where it is desirable for data to be stored directly in CABS 160. For example, the application 130 issues a write request to the LLBS 150, but the LLBS 150 may not have enough space available for storing data. It may be advantageous to write incoming data blocks directly to CABS 160 rather than waiting for LLBS 150 to free up space by transferring data to CABS 160. This is just one exemplary situation where it may be preferable to store data directly into CABS 160, and there may be various other situations where data could be written directly into CABS 160. It should be noted that this is not possible.

データがCABS160に直接、格納されることがときおりあるので、LLBS150が一時的アドレスではなく、内容アドレスをアプリケーション130に返す状況が存在することがある。これは、アプリケーション130によってユーザに意識させないで処理することができる。しかしながら、LLBS150は、一時的アドレスと内容アドレスを区別できる必要がある。これは、アドレスが内容アドレスか、または一時的アドレスであるかを示すビットをアドレス内に確保することによって達成できる。   Since data is sometimes stored directly in the CABS 160, there may be situations where the LLBS 150 returns a content address to the application 130 instead of a temporary address. This can be processed by the application 130 without making the user aware of it. However, the LLBS 150 needs to be able to distinguish between a temporary address and a content address. This can be accomplished by reserving a bit in the address that indicates whether the address is a content address or a temporary address.

ここで、図3を参照すると、ブロック/フロー図が、データを、本発明の原理にしたがって、内容アドレス記憶システムに格納する方法を示している。ブロック310において、アプリケーション130は、データを記憶システム110に格納するために書き込み要求を発行する。記憶システム110は、図1と図2に示すように、非内容アドレス記憶装置(例えば、LLBS150)とCABS160を含んでよい。   Referring now to FIG. 3, a block / flow diagram illustrates a method for storing data in a content address storage system in accordance with the principles of the present invention. In block 310, application 130 issues a write request to store data in storage system 110. Storage system 110 may include a non-content address storage device (eg, LLBS 150) and CABS 160, as shown in FIGS.

ブロック320において、書き込み要求を受信すると、LLBS150は、データに一時的アドレスを割り当てる。その一時的アドレスは、データを非内容アドレス記憶装置235に格納し、かつ、非内容アドレス記憶装置235内のデータを検索するために使用される。CABS160によって後で割り当てられる内容アドレスとは異なり、データを格納するための一時的アドレスを決定することは、ハッシュを計算することを伴わない。一実施形態では、一時的アドレスは、図2における一時的アドレス生成器250によって生成され、データを格納するためにキー‐値格納部230によって使用されてよい。   At block 320, upon receiving a write request, the LLBS 150 assigns a temporary address to the data. The temporary address is used to store data in the non-content address storage device 235 and to retrieve data in the non-content address storage device 235. Unlike content addresses later assigned by CABS 160, determining a temporary address for storing data does not involve computing a hash. In one embodiment, the temporary address may be generated by temporary address generator 250 in FIG. 2 and used by key-value store 230 to store data.

次に、ブロック330において、書き込み要求の対象であるデータが、データブロックに割り当てられた一時的アドレスと共にLLBS150に格納される。この情報が格納される仕方は種々ある。例えば、一実施形態では、非内容アドレス記憶装置はキー-値格納部として構成され、ここでは、キーは一時的アドレスであり、値は書き込み要求のデータ内容である。さらに、図2は、一時的アドレスから内容アドレスへのマッピングと、一時的アドレスによって検索可能なデータの両方を格納する単一の記憶装置240を開示しているが、他の実施形態では、一時的アドレスと内容アドレスの間のマッピングと、一時的アドレスによって検索可能なデータは別々の記憶装置に格納してもよい。   Next, at block 330, the data that is the subject of the write request is stored in the LLBS 150 along with the temporary address assigned to the data block. There are various ways in which this information is stored. For example, in one embodiment, the non-content address storage device is configured as a key-value store, where the key is a temporary address and the value is the data content of the write request. Further, FIG. 2 discloses a single storage device 240 that stores both the temporary address to content address mapping and the data that can be retrieved by the temporary address. The mapping between the target address and the content address and the data that can be retrieved by the temporary address may be stored in separate storage devices.

アプリケーション130からのデータがLLBS150に格納された後、LLBS150は、データの格納に成功したことを示す肯定応答をアプリケーション130に送信する(ブロック340)。LLBS150からアプリケーション130に送信された肯定応答は、アプリケーション130が後でデータを検索することを可能にする、そのデータに対応付けられた一時的アドレスも含んでいる。上記で説明したように、LLBS150内の記憶装置240は、CABS160と比較した場合、情報を格納することに関して、比較的短いレイテンシを有している。LLBS150は、データを記憶装置240に格納して、CABS160ができると考えられるよりも早く、肯定応答をアプリケーション130に返すことができるので、アプリケーション130が遭遇するレイテンシは短くなる。   After the data from application 130 is stored in LLBS 150, LLBS 150 sends an acknowledgment to application 130 indicating that the data was successfully stored (block 340). The acknowledgment sent from LLBS 150 to application 130 also includes a temporary address associated with the data that enables application 130 to retrieve the data later. As explained above, the storage device 240 in the LLBS 150 has a relatively short latency for storing information when compared to the CABS 160. Because the LLBS 150 can store data in the storage device 240 and return an acknowledgment to the application 130 sooner than the CABS 160 would be able to do so, the latency encountered by the application 130 is reduced.

肯定応答をアプリケーション130に送ると、その後、ブロック350において、LLBS150はデータをCABS160に書き込む。LLBS150に格納されたデータが一旦、成功裏にCABS160にコピーされると、CABS160は内容アドレスをLLBS150に返す。CABS150に書き込まれるデータブロックの内容に基づく内容アドレスは、データがCABS160内のどこに書き込まれたかを示している。   Once the acknowledgment is sent to application 130, LLBS 150 then writes the data to CABS 160 at block 350. Once the data stored in LLBS 150 has been successfully copied to CABS 160, CABS 160 returns the content address to LLBS 150. The content address based on the content of the data block written to the CABS 150 indicates where in the CABS 160 the data has been written.

上記で説明したように、データを内容アドレス記憶装置(例えば、CABS160)に格納することは、ハッシュを計算すること、および、重複除外動作を実行することのような、レイテンシが長い動作を伴う。しかしながら、データをCABS160に転送する前に、そのデータを最初にLLBS150に格納することによって、アプリケーション130は、これらの、レイテンシが長い動作が行われるのを待つ必要がない。それにもかかわらず、データは最終的にCABS150に転送されるので、プリケーション130は、CABS160によって行われる、重複除外動作の利益を享受することができる。したがって、本願による記憶システム110は、データをこのようなシステムに格納することの欠点を除去しつつ(または、少なくとも軽減しつつ)、アプリケーション130が内容アドレス記憶装置の利点を得ることを可能にする。   As described above, storing data in a content address storage device (eg, CABS 160) involves high latency operations such as calculating a hash and performing a deduplication operation. However, by first storing the data in the LLBS 150 before transferring the data to the CABS 160, the application 130 does not have to wait for these long-latency operations to occur. Nevertheless, since the data is eventually transferred to the CABS 150, the application 130 can benefit from the deduplication operation performed by the CABS 160. Thus, the storage system 110 according to the present application allows the application 130 to take advantage of content address storage while eliminating (or at least reducing) the drawbacks of storing data in such a system. .

データがCABS160に格納され、その内容アドレスがLLBS150に戻された後、内容アドレスは、一時的アドレスを内容アドレスにマッピングし、この情報を記憶装置240に格納するように構成されたアドレス変換器220に送信される(ブロック360)。マッピング情報を格納すると、(現在、LLBS150とCABS160の両方に格納されている)データは、ブロック370において、LLBS150から削除されてもよい。アプリケーション130がデータをいくらか後の時点で読み出すことを望んだ場合、読出しリクエストは該データの一時的アドレスを含んでもよい。以前にLLBS150に格納されたデータがLLBS150から削除されたにもかかわらず、一時的アドレスは、該データのCABS160内の対応する内容アドレスを特定するためにアドレス変換器220によって使用されてもよい。該データは次に、内容アドレスを用いてCABS160から読み出されてもよい。   After the data is stored in the CABS 160 and its content address is returned to the LLBS 150, the content address is mapped to a temporary address to the content address and the address translator 220 configured to store this information in the storage device 240. (Block 360). Upon storing the mapping information, data (currently stored in both LLBS 150 and CABS 160) may be deleted from LLBS 150 at block 370. If the application 130 wishes to read the data at some later time, the read request may include a temporary address for the data. Despite the data previously stored in LLBS 150 being deleted from LLBS 150, the temporary address may be used by address translator 220 to identify the corresponding content address in CABS 160 of the data. The data may then be read from CABS 160 using the content address.

ブロック380において、LLBS150上でのアドレス・マッピング(すなわち、一時的アドレスと内容アドレスの間のマッピング)は周期的に削除される。これは利点であり、その理由は、LLBS150に格納されたマッピングのサイズが非常に大きくなることがあり、その結果、削除が行われなければ、データを格納するのに使用することができる記憶装置240内にスペースをとることになるからである。しかしながら、マッピング情報をLLBS150から削除することができる前に、アプリケーション130は、アプリケーション130によって格納されているアドレス(または少なくとも一時的アドレス)を廃棄しなければならない。このことは、データ自身も、データのマッピングもLLBS150に格納されていないときに、アプリケーション130が、LLBS150にあるデータのためのリクエストを(該データの一時的アドレスを用いて)発行しないことを保証する。   At block 380, address mapping on LLBS 150 (ie, mapping between temporary address and content address) is periodically deleted. This is an advantage because the size of the mapping stored in the LLBS 150 can be very large so that if it is not deleted, it can be used to store data This is because space is taken up in 240. However, before the mapping information can be deleted from the LLBS 150, the application 130 must discard the address (or at least the temporary address) stored by the application 130. This ensures that the application 130 does not issue a request for the data in the LLBS 150 (using the temporary address of the data) when neither the data itself nor the data mapping is stored in the LLBS 150. To do.

アプリケーション130がアドレスを廃棄するように命じられる仕方は様々である。例えば、一実施形態では、LLBS150は、格納されつつあるマッピング情報の量をモニターしてもよい。マッピング情報の大きさが一旦ある閾値を越えると、LLBS150は、アプリケーション130によって格納されつつあるアドレス情報が廃棄されるべきであることをアプリケーション130に告げる「アドレス廃棄信号」をアプリケーション130に送信してもよい。アプリケーション130がアドレスを廃棄した後、そのことを示す肯定応答がLLBS150に送られてもよい。アドレスがアプリケーション130によって廃棄されたことを確認すると、LLBS150は、記憶装置240に格納されているマッピンク情報を削除することができる。アドレスがアプリケーション130によって廃棄されるべきことを示す他の方法も考えられる。   There are various ways in which the application 130 can be ordered to discard the address. For example, in one embodiment, LLBS 150 may monitor the amount of mapping information that is being stored. Once the size of the mapping information exceeds a certain threshold, the LLBS 150 sends an “address discard signal” to the application 130 that tells the application 130 that the address information being stored by the application 130 should be discarded. Also good. After application 130 discards the address, an acknowledgment may be sent to LLBS 150 indicating that. Upon confirming that the address has been discarded by the application 130, the LLBS 150 can delete the map information stored in the storage device 240. Other ways of indicating that the address should be discarded by the application 130 are also conceivable.

データを内容アドレス記憶装置に格納するシステムと方法の好適な実施形態(これらは、例示であることを意図し、限定することを意図したものではない)を説明したが、種々の修正や変形が、上記の教示に鑑みて当業者によってなされうることに留意すべきである。したがって、変更が、添付の特許請求の範囲によって略述された本発明の範囲内にある、開示された特定の実施形態においてなされてもよいことが理解されるべきである。特許法によって要求された詳細さをもって、本発明の態様をこのように記載したので、特許証によって請求され、保護が望まれるものは添付の特許請求の範囲に記載されている。   Although preferred embodiments of systems and methods for storing data in a content address storage device (these are intended to be illustrative and not limiting), various modifications and variations have been described. It should be noted that, in view of the above teachings, it can be made by those skilled in the art. Accordingly, it is to be understood that changes may be made in the particular embodiments disclosed which are within the scope of the invention as outlined by the appended claims. Having thus described aspects of the present invention with the details required by patent law, what is claimed and desired protected by Letters Patent is set forth in the appended claims.

Claims (14)

内容アドレス記憶装置と、持続型キャッシュとを有し、
前記持続型キャッシュは、
前記持続型キャッシュに格納されるデータに対応付けられた一時的アドレスを生成するように構成された一時的アドレス発生器と、
前記一時的アドレスを用いて、データを前記持続型キャッシュに格納し、かつ、前記持続型キャッシュ内のデータを検索するように構成された非内容アドレス記憶装置と、
前記非内容アドレス記憶装置内のデータに対応付けられた一時的アドレスを、前記内容アドレス記憶装置内のデータに対応付けられた内容アドレスにマッピングするように構成されたアドレス変換器と、を有し、前記持続型キャッシュは、データが前記非内容アドレス記憶装置に格納された後に、アプリケーションへ前記データに対応付けられた一時的アドレスを送信するようさらに構成されている、記憶システム。
A content address storage device and a persistent cache;
The persistent cache is
A temporary address generator configured to generate a temporary address associated with data stored in the persistent cache;
A non-content address storage device configured to store data in the persistent cache using the temporary address and to retrieve data in the persistent cache;
An address translator configured to map a temporary address associated with data in the non-content address storage device to a content address associated with data in the content address storage device; The storage system is further configured to send a temporary address associated with the data to an application after the data is stored in the non-content address storage device .
前記非内容アドレス記憶装置に格納されたデータを前記内容アドレス記憶装置に書き込むように構成されているキャッシュ・マネージャーをさらに有する、請求項1に記載の記憶システム。   The storage system of claim 1, further comprising a cache manager configured to write data stored in the non-content address storage device to the content address storage device. 前記キャッシュ・マネージャーは、読み出しリクエストに付随したアドレスが一時的アドレスか内容アドレスかを判定するようにさらに構成されている、請求項2に記載の記憶システム。   The storage system of claim 2, wherein the cache manager is further configured to determine whether an address associated with a read request is a temporary address or a content address. データは、該データが前記内容アドレス記憶装置に書き込まれた後に前記持続型キャッシュから削除されるが、前記一時的アドレスと前記内容アドレスの間のマッピングは維持される、請求項1に記載のシステム。   The system of claim 1, wherein data is deleted from the persistent cache after the data is written to the content address store, but the mapping between the temporary address and the content address is maintained. . 一時的アドレスと内容アドレスの間のマッピングが周期的に削除される、請求項1に記載の記憶システム。   The storage system of claim 1, wherein the mapping between temporary addresses and content addresses is periodically deleted. 前記マッピングは、アプリケーションが、それに戻された全て一時的アドレスを廃棄した後に削除される、請求項に記載の記憶システム。 6. The storage system of claim 5 , wherein the mapping is deleted after the application discards all temporary addresses returned to it. 前記非内容アドレス記憶装置は、ソリッド・ステート・ドライブまたはハード・ディスク・ドライブを含む、請求項1に記載の記憶システム。   The storage system of claim 1, wherein the non-content address storage device comprises a solid state drive or a hard disk drive. データを記憶システムに格納する方法であって、
書き込み要求に対応するデータを非内容アドレス記憶装置に格納するか、または内容アドレス記憶装置に直接書き込むかを判定し、
前記データを前記非内容アドレス記憶装置に格納すると判定された場合、
前記データが前記非内容アドレス記憶装置に格納される一時的アドレスを生成し、
データが、該データが前記内容アドレス記憶装置に書き込まれる前に、前記非内容アドレス記憶装置に持続的に格納されたことを確認し、
アプリケーションへ前記データに対応付けられた一時的アドレスを送信し、
前記データが前記内容アドレス記憶装置に書き込まれた後に、前記非内容アドレス記憶装置内の前記データに対応付けられた少なくとも1つの一時的アドレスを前記内容アドレス記憶装置内の前記データの内容アドレスにマッピングする、記憶システムにデータを格納する方法。
A method for storing data in a storage system comprising:
Determine whether data corresponding to a write request is stored in a non-content address storage device or written directly to a content address storage device;
If it is determined to store the data in the non-content address storage device,
Generating a temporary address where the data is stored in the non-content address storage device;
Verify that the data was stored persistently in the non-content address storage device before the data was written to the content address storage device;
Send the application a temporary address associated with the data,
After the data is written to the content address storage device, at least one temporary address associated with the data in the non-content address storage device is mapped to the content address of the data in the content address storage device A method of storing data in a storage system.
前記非内容アドレス記憶装置に格納された前記データを前記内容アドレス記憶装置に書き込むことをさらに有する、請求項に記載の方法。 9. The method of claim 8 , further comprising writing the data stored in the non-content address storage device to the content address storage device. 前記記憶システムは、読出しリクエストに対応付けられたアドレスが一時的アドレスか内容アドレスかを判定するように構成されている、請求項に記載の方法。 The method of claim 8 , wherein the storage system is configured to determine whether an address associated with a read request is a temporary address or a content address. データを、該データが前記内容アドレス記憶装置に書き込まれた後に前記非内容アドレス記憶装置から削除するが、前記一時的アドレスと前記内容アドレスの間のマッピングは維持する、請求項に記載の方法。 9. The method of claim 8 , wherein data is deleted from the non-content address storage device after the data is written to the content address storage device, but the mapping between the temporary address and the content address is maintained. . 一時的アドレスと内容アドレスの間のマッピングを周期的に削除する、請求項に記載の方法。 9. The method of claim 8 , wherein the mapping between temporary addresses and content addresses is periodically deleted. 前記マッピングを、アプリケーションが、それに戻ったすべての一時的アドレスを廃棄した後に削除する、請求項1に記載の方法。 The mapping application deletes after discarding all temporary address back to it, the method of claim 1 2. 前記非内容アドレス記憶装置がソリッド・ステート・ドライブまたはハード・ディスク・ドライブを含む、請求項に記載の方法。 9. The method of claim 8 , wherein the non-content address storage device comprises a solid state drive or a hard disk drive.
JP2013527055A 2010-09-02 2010-12-02 Low latency content address storage device Active JP5591406B2 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US37952410P 2010-09-02 2010-09-02
US61/379,524 2010-09-02
US12/905,223 2010-10-15
US12/905,223 US8375164B2 (en) 2010-10-15 2010-10-15 Content addressable storage with reduced latency
PCT/US2010/058681 WO2012030358A1 (en) 2010-09-02 2010-12-02 Content addressable storage with reduced latency

Publications (2)

Publication Number Publication Date
JP2013541753A JP2013541753A (en) 2013-11-14
JP5591406B2 true JP5591406B2 (en) 2014-09-17

Family

ID=45773184

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013527055A Active JP5591406B2 (en) 2010-09-02 2010-12-02 Low latency content address storage device

Country Status (3)

Country Link
EP (1) EP2470997A4 (en)
JP (1) JP5591406B2 (en)
WO (1) WO2012030358A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240054073A1 (en) * 2022-08-11 2024-02-15 Arm Limited Circuitry and Method

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1128267A1 (en) * 2000-02-25 2001-08-29 Hewlett-Packard Company, A Delaware Corporation Disk storage system having redundant solid state data storage devices
JP2003263276A (en) * 2002-03-08 2003-09-19 Toshiba Corp Disk system and disk access method
CA2498154A1 (en) * 2002-09-16 2004-03-25 Tigi Corporation Storage system architectures and multiple caching arrangements
US7805710B2 (en) * 2003-07-15 2010-09-28 International Business Machines Corporation Shared code caching for program code conversion
US7290253B1 (en) * 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
US7263576B2 (en) * 2003-12-09 2007-08-28 Emc Corporation Methods and apparatus for facilitating access to content in a data storage system
US7240150B1 (en) * 2004-04-30 2007-07-03 Emc Corporation Methods and apparatus for processing access requests in a content addressable computer system
US7761649B2 (en) * 2005-06-02 2010-07-20 Seagate Technology Llc Storage system with synchronized processing elements
US7260681B2 (en) * 2005-06-02 2007-08-21 Seagate Technology Llc Stripe buffer list
US7747663B2 (en) * 2008-03-05 2010-06-29 Nec Laboratories America, Inc. System and method for content addressable storage
US8321850B2 (en) * 2008-06-06 2012-11-27 Vmware, Inc. Sharing and persisting code caches
US8335889B2 (en) * 2008-09-11 2012-12-18 Nec Laboratories America, Inc. Content addressable storage systems and methods employing searchable blocks
WO2010114006A1 (en) * 2009-03-31 2010-10-07 日本電気株式会社 Storage system and storage access method and program

Also Published As

Publication number Publication date
EP2470997A4 (en) 2013-05-01
WO2012030358A1 (en) 2012-03-08
JP2013541753A (en) 2013-11-14
EP2470997A1 (en) 2012-07-04

Similar Documents

Publication Publication Date Title
US9785545B2 (en) Method and apparatus for providing dual memory access to non-volatile memory
KR102401592B1 (en) Dedupe dram cache
EP2711841A1 (en) Data processing method, device and system based on block storage
US10296240B2 (en) Cache management
JP4398464B2 (en) System, method, and program for managing point-in-time copy relationships between one target volume and one source volume
US9971520B2 (en) Processing read and write requests
US8595454B1 (en) System and method for caching mapping information for off-host backups
CN108228088B (en) Method and apparatus for managing storage system
US8909886B1 (en) System and method for improving cache performance upon detecting a migration event
WO2018028218A1 (en) Data writing method and apparatus
WO2014153931A1 (en) File storage method and device, access client and metadata server system
US9619336B2 (en) Managing production data
US20210224002A1 (en) Storage control apparatus and storage medium
US11068299B1 (en) Managing file system metadata using persistent cache
JP5591406B2 (en) Low latency content address storage device
US11068406B2 (en) Maintaining a single copy of data within a read cache
WO2016032955A2 (en) Nvram enabled storage systems
US8375164B2 (en) Content addressable storage with reduced latency
CN113254363A (en) Non-volatile memory controller with partial logical to physical address translation table
US8700861B1 (en) Managing a dynamic list of entries for cache page cleaning
US11537597B1 (en) Method and system for streaming data from portable storage devices
US11487664B1 (en) Performing data reduction during host data ingest
US8966190B1 (en) System and method for assigning control of a logical unit number
US8914584B1 (en) System and method for improving cache performance upon detection of a LUN control event
US8914583B1 (en) System and method for improving cache performance

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130917

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140408

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140519

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140521

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140729

R150 Certificate of patent or registration of utility model

Ref document number: 5591406

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350