JP2015512110A - Nandフラッシュメモリ上のデータの記憶のためのアーキテクチャ - Google Patents

Nandフラッシュメモリ上のデータの記憶のためのアーキテクチャ Download PDF

Info

Publication number
JP2015512110A
JP2015512110A JP2015500592A JP2015500592A JP2015512110A JP 2015512110 A JP2015512110 A JP 2015512110A JP 2015500592 A JP2015500592 A JP 2015500592A JP 2015500592 A JP2015500592 A JP 2015500592A JP 2015512110 A JP2015512110 A JP 2015512110A
Authority
JP
Japan
Prior art keywords
data
aus
stripe
storage medium
writing
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.)
Granted
Application number
JP2015500592A
Other languages
English (en)
Other versions
JP6175684B2 (ja
Inventor
オウ、シュウ−ハン、フレデリック
サン、フェイ
シン、ヒュンスク
リー、チ、コン
Original Assignee
マーベル ワールド トレード リミテッド
マーベル ワールド トレード リミテッド
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 マーベル ワールド トレード リミテッド, マーベル ワールド トレード リミテッド filed Critical マーベル ワールド トレード リミテッド
Publication of JP2015512110A publication Critical patent/JP2015512110A/ja
Application granted granted Critical
Publication of JP6175684B2 publication Critical patent/JP6175684B2/ja
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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/7202Allocation control and policies
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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/0608Saving storage space on storage systems
    • 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/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]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

記憶媒体からのデータを処理するためにシステム、方法、装置及び技術が提供される。記憶媒体に記憶されているデータのストライプが読出される。ストライプが複数のデータアロケーションユニット(複数のデータAU)及びパリティAUを備える。複数のデータAUのそれぞれにエラー訂正デコーディングが適用され、複数のデコードされたデータAUを生成する。パリティAUの値が、複数のデコードされたデータAU内の複数のバイトの複数の値によって満たされるかが、判断される。パリティAUの値が複数のデコードされたデータAU内の複数のバイトの複数の値によって満たされるとの判断に応じて、複数のデコードされたデータAUが出力される。

Description

<関連出願の相互参照>
本特許文書は、2012年3月16日に出願された米国仮出願第61/612,140の利益及び優先権を主張し、その開示は全体が本明細書に参照としてここに組み込まれる。
本開示は、独立ディスク冗長アレイ(RAID)のNANDフラッシュ記憶媒体を含む記憶媒体にデータを効率的に書込むための技術に関する。
ここに提供される背景説明は、開示の背景を一般的に提示することを目的とする。本明細書の発明者の成果は、出願時の従来技術として特にみなし得ない説明の態様だけでなく、この背景技術のセクション内に成果が記述されている範囲で、本開示に対する従来技術として明示的にも暗示的にも認められない。
ソリッドステートドライブ(SSD)は、例えばNANDフラッシュメモリデバイス又はダイナミック・ランダムアクセスメモリ(DRAM)デバイス等の、RAIDアーキテクチャを用いて実装され得るデバイスから、データを読み書きする。SSDは、典型的には、NANDフラッシュメモリから及びNANDフラッシュメモリにデータを転送するためのいくつかのデータチャネルを持つSSDコントローラを含む。更に、SSDコントローラは、典型的には、複数のアロケーションユニット(複数のAU)として知られる固定バイトサイズ単位でデータを管理するファームウェアを実行する。伝統的に、データはNANDフラッシュメモリの所与のページに単一のオペレーションで書込まれ、書込みオペレーションは、AUのバイトサイズの整数倍のバイト数を含む。したがって、NANDフラッシュのページサイズがAUサイズの整数倍でない場合、NANDフラッシュのメモリは、十分に利用されていないかもしれない。
システム、方法、装置及び技術が、記憶媒体からのデータを処理するために提供される。記憶媒体に記憶されているデータのストライプが読出される。ストライプが複数のデータアロケーションユニット(複数のデータAU)及びパリティAUを備える。複数のデータAUのそれぞれにエラー訂正デコーディングが適用され、複数のデコードされたデータAUを生成する。パリティAUの値が、複数のデコードされたデータAU内の複数のバイトの複数の値によって満たされるかが、判断される。パリティAUの値が複数のデコードされたデータAU内の複数のバイトの複数の値によって満たされるとの判断に応じて、複数のデコードされたデータAUが出力される。
いくつかの実施形態において、複数のデータAU内のデータAUが読出し不可能であるが判断される。いくつかの実施形態において、複数のデータ転送チャネルのうちの第1のデータ転送チャネルを用いて、データのストライプの第1の部分が読出され、複数のデータ転送チャネルのうちの第2のデータ転送チャネルを用いて、データのストライプの第2の部分が読出される。いくつかの実施形態において、複数のデータAU内のデータAUが、記憶媒体の第1のページ及び第2のページのそれぞれに部分的に記憶される。いくつかの実施形態において、複数のデータAU内のデータAUが、記憶媒体の第1のデータ転送チャネル及び第2のデータ転送チャネルのそれぞれに部分的に記憶される。いくつかの実施形態において、パリティAUの既定のバイト位置のバイトの値が、複数のデータAU内の各データAUの既定のバイト位置のバイトの値の排他的論理和によって生成される。
上記及び他の態様並びにこの発明の利点は、同様の参照文字が全体を通して同様の部分を参照する下記の添付の図面と併せて、以下の詳細な説明を考慮することにより、明らかになるであろう。
いくつかの実施形態に従う、RAID実装された記憶媒体の例示的なNANDページアレイを表す。
いくつかの実施形態に従う、RAID実装された記憶媒体のNANDページに複数のAUのシーケンスを書込むための例示的な技術を表す。
いくつかの実施形態に従う、RAID実装された記憶媒体のNANDページに複数のAUのシーケンスを書込むための例示的なストライプベースの技術を表す。
いくつかの実施形態に従う、RAID実装された記憶媒体のNANDページに複数のAUのシーケンスを書込むための他の例示的なストライプベースの技術を表す。
いくつかの実施形態に従う、RAID実装された記憶媒体のNANDページに複数のAUのシーケンスを書込むための更なる他の例示的なストライプベースの技術を表す。
いくつかの実施形態に従う、RAID実装された記憶媒体のNANDページに複数のAUのシーケンスを書込むための追加の例示的なストライプベースの技術を表す。
いくつかの実施形態に従う、記憶媒体の1つ又は複数のストライプからデータを読出すための例示的な処理を表す。
本明細書に開示されたものは、ストライプベースの論理構造に基づいて、RAIDベースのNANDフラッシュ記憶媒体を含む記憶媒体の利用を向上させる技術である。本明細書に開示されるように、ストライプは、記憶媒体上に記憶される複数のAUの集合として規定される。ストライプベースのアプローチは、複数のAUがページ境界に渡って書込まれることを可能にし、これにより記憶媒体の利用が向上する。更に、本明細書に開示されるように、ストライプベースの論理アーキテクチャは、RAIDベースの実装に有利である。なぜなら、1つのRAIDディスク(又はデバイス)に生じた障害は一般的に、他のRAIDディスク(又はデバイス)上に記憶される関連データを回復不能にしないからである。
図1は、いくつかの実施形態に従う、RAID実装された記憶媒体の例示的なNANDページアレイを表す。SSDコントローラのファームウェアは、チャネル、ページ、論理ユニット番号(LUN)及び物理デバイス(例えば、シリコン片)によるメモリロケーションのパラメータ化に基づいて、RAID実装された記憶媒体のメモリロケーションにアクセスし得る。特に、イラスト100は、NANDページのアレイが、それぞれCH0 102からCHx 104でラベル付けされたx+1個のデータ転送チャネルを用いてアドレッシング可能であることを示す。イラスト100は、特にデータ転送チャネルCH0 102及びCHx104の構造を表す。
イラスト100に表されたデータ転送チャネルのそれぞれは、例えばハードディスクドライブである複数の物理デバイス(又は「ターゲット」)にアクセスするために用いられ得る。例えば、データ転送チャネルCH0 102は、ターゲット0 106及びターゲット1 108とインタフェースするために用いられ得る。更に、イラスト100のターゲットのそれぞれは、複数のLUNを含む。例えば、ターゲット1 108は、LUN0 110及びLUN1 112を含む。各LUNは、例えば仮想ハードディスクドライブのパーティションに対応してよい。各LUNは、複数のプレーンを含み得る。各プレーンは、電源リソースの異なるセットによって電力供給される。例えば、LUN0 110は、プレーン0 114及びプレーン1 116を含む。最後に、NANDページのアレイは、任意の数のページ118を含み得る。
当業者によって理解され得るように、本明細書の開示及び教示に基づいて、図1に表されているRAID実装された記憶媒体のNANDページアレイは例示に過ぎず、本明細書に開示された技術は任意の適切なNANDアレイに適用し得る。例えば、本明細書に開示された技術は、データ転送チャネル及びページ当たり2つより多いターゲットを含むNANDアレイ及び/又は2つより多いプレーンを含む複数のLUNに適用し得る。
図2は、いくつかの実施形態に従う、RAID実装された記憶媒体のNANDページに複数のAUのシーケンスを書込むための例示的な技術を表す。特に、イラスト200は、32個の連続するAUが記憶媒体の様々なチャネル及びプレーンに渡ってページにどのように書込まれるかを表す。イラスト200に表されるように、SSDコントローラのファームウェアは、32個のAUのシーケンス内の第1及び第2のAUを、RAID実装された記憶媒体の、チャネル0、プレーン0、ページ0に書込むようにプログラムされている。同様に、SSDコントローラのファームウェアは、32個のAUのシーケンス内の17番目及び18番目のAUを、RAID実装された記憶媒体の、チャネル0、プレーン1、ページ0に書込むようにプログラムされている。同様に、32個のAUのシーケンス内の残りのAUのそれぞれの正確なロケーション(チャネル、プレーン及びページ番号の観点で)は、図2のボックスの1つの中に示された対応する数値によって表されている。
図2に表された各AUは、エラー訂正コード(ECC)で個々にコード化される。すなわち、AUの複数のバイトの一部は、複数のECCエンコーディングバイトである。それにもかかわらず、典型的なECCコードは、ごく少数のバイトが破壊されているコードワードを完全に訂正することしかし得ず、コードワードのバイトの大きな割合が破壊又は失われたコードワードを完全に訂正することができないだろう。したがって、図2に表された書込みパターンを生成するために用いられるSSDコントローラは、所与のAUが記憶デバイスの単一ページに完全に書込まれることを要求する。この要求は、図2に示され、各AUが単一ページ(すなわち単一の矩形ボックス)内に完全に含まれていることを示す。
各AUが単一ページ内に完全に含まれることをシステムが要求する場合がある1つの理由は、カスケードエラーを防ぐためである。特に、単一のページが1つ又は複数のAUの一部しか含まない(したがって、これらのAUのそれぞれが、他の複数のページに散在する残りの内容を持つ)システムを考える。もし単一のページが破壊又は失われた場合、失われるのはその単一のページのバイトだけではなく、単一のページに部分的に含まれていたとしても全てのAUの全てのバイトも失われる。したがって、単一のページの障害は、複数のページに散在するバイトに影響して大規模なデータロスをもたらす場合がある。
しかし、各AUが単一のページ内に完全に含まれることを要求することがカスケードエラーを防ぐために有利であるが、それは潜在的に記憶媒体の不十分な利用をもたらす。例えば、図2に関連するRAID実装された記憶媒体のNANDページの各ページが2,048バイトのサイズを持ち、各AUが748バイトのサイズを持つと仮定する。所与のAUが記憶デバイスのページを超えることができず、代わりに単一のページに完全に書込まれる必要がある場合、最大でも2個のAUが各ページに書込まれるだろう。これは、2個のAUがページサイズより小さい748×2=1,496バイトとなり、3個のAUがページサイズより大きい748×3=2,244バイトとなるからである。したがって、図2に表されるように、16ページのそれぞれは、正確に2個のAUのデータを記憶する。特に、各ページは全部で2,048バイトのうちの1,496バイトしか用いず、したがって各ページはおよそ27パーセントの未活用となる。
このように、記憶媒体のページサイズがAUサイズの整数倍でない用途において、AUの倍数のどれも正確に記憶媒体のページの全バイトを占有せず、したがって、図2に関して説明した技術に基づいて、記憶媒体が十分に利用されていないことになるだろう。したがって、本明細書の開示で説明されるようなストライプベースの技術は、そのような短所に対処し、RAID実装されたNANDフラッシュ記憶媒体を含む記憶媒体の利用を増大するために、提示される。
図3は、いくつかの実施形態に従う、RAID実装された記憶媒体のNANDページに複数のAUのシーケンスを書込むための例示的なストライプベースの技術を表す。図3に示される書込み技術は、図2に示されるものとは異なる。複数のAUが複数のページに渡り突破することが可能であるからである。例えば、2番目のAUがページ310及び312に渡り突破しており、4番目のAUはページ312及び314に渡り突破しており、13番目のAUがページ316及び318に渡り突破している。
上記で説明されたように、単一のAUが複数のページにわたり突破し得る図3のシステムの1つの問題は、複数のページにわたるカスケードエラーの可能性である。カスケードエラーに対してある程度の保護を提供するために、図3のシステムは、ストライプ毎ベースの複数のパリティチェックAUを含む。特に、行320の全てのAUは、パリティAU、すなわち、ページ322及び324に渡って突破する20番目のAU、の支配下にある。ストライプは一般的に、パリティAUを適用するドメインにおける複数のAUを特定する。このように、ストライプは、図3の行320の全てのAUを含むように規定されるので、パリティAU20は、行320の他の全てのAUに含まれるデータに基づく。例えば、いくつかの実装において、パリティAUのバイト長は、ページのバイト長に等しい。パリティAUの各バイトは、行320内に渡って広がる残りのAU(すなわち、AU1、2、15、16、3、4、17、18、19、7及び21)のバイトのいくつかのセットの排他的論理和によって決定される。同様に、行322の全てのAUは、パリティAU、すなわち、ページ330及び332に渡って突破する27番目のAU、の支配下にある。
図2の書込み技術に比べて、図3の書込み技術は、記憶媒体をより効率的に利用するという利点を持つ。典型的な実装では、複数のページに渡ってバイトが書込まれることを可能にすることによって得られる追加の効率性は、パリティチェックバイトとして機能するいくつかのバイトの損失より遙かに勝るだろう。図3に表された実装の1つの潜在的な欠点は、失われたデータのページ(又はページの一部)を完全に回復する能力が、単一の追加のエラー(つまり、失われたページ又はページの一部によるエラーに加えて)がストライプ内のどこかに存在するか否かに依存するであろうことである。
この点を説明するために、所与のストライプのパリティチェックAUのn番目のバイトの値(すなわち、行320のストライプの20番目のAU及び行332のストライプの27番目のAU)が、ストライプ内の各AU(すなわち、パリティAU自身は含まない)のn番目の位置の排他的論理和によって決定される場合を考える。例えば、20でラベル付けされたパリティチェックAUの第1バイトの値が、1、2、15、16、3、4、17、18、5、6、19、7及び21でラベル付けされたAUの先頭位置の排他的論理和によって決定される。次に、ページ314が故障して、ページ314のどのデータも読出し可能でない場合を考える。この場合、(バイトに対してECCデコーディングが実行された後)行320の他のどのページから読出されたデータのどのバイトにもエラーがないならば、ページ314の内容は完全に回復可能である。反対に、ECCデコーディングの後、1、2、15、16、3、4、17、18、19、7及び21でラベル付けされたもののいずれかに1つ又は複数のエラーが残っている場合、排他的論理和は20番目のAUの全てのバイトを正しく回復させないだろう。
図4は、いくつかの実施形態に従う、RAID実装された記憶媒体のNANDページに複数のAUのシーケンスを書込むための他の例示的なストライプベースの技術を表す。図4の技術において、複数のAUは複数のページに渡って突破することが可能である。しかしながら、図4に示される書込み技術は、図3に示されるものとは異なる。ストライプが、行の全てのAUとしてでなく、図の行(例えば、行420)内の全てのAUのサブセットとして規定されるからである。図4の書込み技術において、複数のAUは1から28の値をとる。これらの値は、これらのAUが記憶媒体に書込まれた順序シーケンス(AU1が最初に書込まれ、AU28が最後に書込まれている)を表す。具体的には、AU1から7はページ0のプレーン0に書込まれ、AU8から14はページ1のプレーン0に書込まれ、AU15から21はページ0のプレーン1に書込まれ、AU22から28はページ1のプレーン1に書込まれている(全てのAUは、図3に表された特定のページに書込まれている)。
テーブル410に表されるように、ストライプ1、2及び3はそれぞれ、行420に存在する複数のAUのサブセットを含み、ストライプ4、5及び6はそれぞれ、行422に存在する複数のAUのサブセットを含む。例えば、ストライプ1は、行420の全部で14個のAUのうちの6個(すなわち、1、15、4、18、7及び21でラベル付けされたAU)を含み、ストライプ2は、行420の全部で14個のAUのうちの4個(すなわち、2、16、5及び19でラベル付けされたAU)を含み、ストライプ3は、行420の全部で14個のAUのうちの4個(すなわち、3、17、6及び20でラベル付けされたAU)を含む。19、20、21、26、27及び28でラベル付けされたAUは、パリティAUであり、図4において丸で囲まれている。テーブル410から明らかなように、ストライプ1から6のそれぞれは、正確に1個のパリティAUを含む。
図4の各パリティAUのn番目のバイトの値が、当該AUを含むストライプに属する各非パリティAUのn番目の位置の排他的論理和によって決定される場合を考える。例えば、21でラベル付けされたパリティチェックAUの第1バイトの値は、1、15、4、18及び7でラベル付けされたAUの先頭位置の排他的論理和によって決定される。この場合、図4の書込み技術は有利なことに、図3の書込み技術より、ページの障害に対してよりロバストになり得る。特に、ページ414のデータが読出し不可能になったと仮定する。テーブル410のストライプ1の内容の一覧を参照して、4でラベル付けされたAUの内容は、(ECCデコーディングがバイトに対して実行された後)AU1、15、18及び7のいずれから読出されたデータのいずれのバイトにもエラーが存在しない場合、完全に回復可能である。同様に、テーブル410のストライプ2の内容の一覧を参照して、5でラベル付けされたAUの内容は、(ECCデコーディングがバイトに対して実行された後)AU2及び16のいずれから読出されたデータのいずれのバイトにもエラーが存在しない場合、完全に回復可能である。最後に、テーブル410のストライプ3の内容の一覧を参照して、6でラベル付けされたAUの内容は、(ECCデコーディングがバイトに対して実行された後)AU3及び17のいずれから読出されたデータのいずれのバイトにもエラーが存在しない場合、完全に回復可能である。
このように、ページが読出し不可能になった場合であっても、他の2個のAU(ストライプ2及び3の場合)又は他の4個のAU(ストライプ1の場合)のデコードされた値の中にエラーが存在しないならば、データは可能である。したがって、図3の技術と比較して、図4の技術は、エラーが残っているAUが比較的に小数である(すなわち、ストライプ1の場合、2個又は4個のAU)ことを条件として、データの任意のストライプのいずれをも回復することができる。そのため、平均的には、図4の書込み技術は、図3のシステムより、ページ障害の存在下でより多くのデータを正確に読出すことができる。しかし、図4の書込み技術は、図3の書込み技術より、バイトのより大きい部分がパリティに供されることを要する。特に、図3は、全16ページに渡って全部で4個のパリティAUを要するが、図4は、全16ページに渡ってより大きい全部で8個のパリティAUを要する。
図5は、いくつかの実施形態に従う、RAID実装された記憶媒体のNANDページに複数のAUのシーケンスを書込むための更なる他の例示的なストライプベースの技術を表す。図5の書込み技術は、図4の書込み技術と同様であるが、図3とは異なる順序で複数のAUを媒体に書込む。より詳細には、図4の書込み技術では、複数のAUは1から30の値をとる。これらの値は、複数のAUが記憶媒体に書込まれた順序シーケンス(AU1が最初に書込まれ、AU30が最後に書込まれている)表す。具体的には、AU1から8(の一部)はページ0のプレーン0に書込まれ、AU8(AU8の残りの部分)から15はページ0のプレーン1に書込まれ、AU16から23(の一部)はページ1のプレーン0に書込まれ、AU23(AU23の残りの部分)から30はページ1のプレーン1に書込まれている(全てのAUは、図4に表された特定のページに書込まれている)。このように、図5の書込み技術は、複数のAUを、複数のページに渡って書込む前に、複数のプレーンに渡って書込む。これに対し、図4の書込み技術は、複数のAUを、プレーンに渡って書込む前に、複数のページに渡って書込む。図4及び5の書込み技術は、しかしながら、両方とも同一の量のオーバーヘッドのパリティバイトを用いる。
図6は、いくつかの実施形態に従う、RAID実装された記憶媒体のNANDページに複数のAUのシーケンスを書込むための追加の例示的なストライプベースの技術を表す。図6の書込み技術は、図4及び5の書込み技術と同様であるが、複数のAUが特定の複数のページに渡って広がるストライプを含む。特に、テーブル610は、図6の書込み技術によって用いられる4個のストライプを列挙する。このテーブルに示されるように、ストライプ2及び4はそれぞれページ0及び1に広がる。例えば、ストライプ2は、ページ0上の2、18、6、22、10、26、14及び30でラベル付けされたAUの全ての部分と、ページ1上の2、18、6、22、10、26、14及び30でラベル付けされたAUの全ての部分又は一部を含む。図4及び5の書込み技術と比較して、図6の書込み技術は、複数のページにわたる複数のストライプを用いるので、より長いストライプ(及びより小さい総数のストライプ)を利用することができる。更に、図6の書込み技術は、図4又は5の書込み技術より、少ないストライプを用いるので、図6の書込み技術は、図4又は5のいずれの書込み技術より、小さいパリティオーバーヘッドを要する。
図7は、いくつかの実施形態に従う、記憶媒体の1つ又は複数のストライプからデータを読出すための例示的な処理を表す。処理800で説明される複数の処理は、SSDコントローラを制御し、コンピュータシステムにインストールされるファームウェアによって実行され得る。処理800は、805において、記憶媒体上に記憶されたデータの1つ又は複数のストライプに対する読出し動作を開始する。810において、stripe_counterとして参照されるストライプカウンタが、1の値に等しくセットされる。815において、stripe_counterでラベル付けされたストライプに属する各AUに対応する複数のメモリロケーションのマッピングが、記憶媒体のために取得される。例えば、マッピングは、ルックアップテーブルのデータから取得されてよい。
820において、stripe_counterでラベル付けされたストライプに属する複数のAUが、815で取得されたメモリロケーションに基づき、記憶媒体から読出される。読出された複数のAUは、stripe_counterでラベル付けされたストライプに属する他の全てのAUについてのパリティ情報を含むAUを含む。例えば、いくつかの実装において、所与のストライプに属するパリティAUのn番目の位置は、ストライプ内の各AU(パリティAU自身以外)のn番目の位置の排他的論理和によって決定される。825において、エラー訂正デコーディングが、読出された複数のAUに対して実行される。特に、ストライプ内の各AUは、記憶媒体に書込まれる前にECCエンコードされる。そのためECCデコーディングは、825にてAU毎ベースで実行される。
830において、820で読出された複数のAU内に読出し不可能なAUがあるかを判断する。例えば、記憶媒体の所与のページに障害が生じた場合、又は、その他に、ページに記憶されたデータが読出し不可能になった場合、1つ又は複数の読出し不可能なAUが存在し得る。830において少なくとも1つの読出し不可能なAUがあると判断された場合、処理800は835に進む。反対に、830において読出し不可能なAUがないと判断された場合、処理800は850に進む。
835において、読出し不可能な複数のAUのデータの回復が、パリティチェックAUを用いて試みられる。いくつかの実装において、読出された複数のAU内に存在する読出し不可能なAUが正確に1つであり、825でエラー訂正デコーディングが実行された後、ストライプの読出し可能なAUのいずれにもバイトエラーがない場合、回復は成功するだろう。840において、読出し不可能なAUの全ての回復が成功であったかが判断される。そうである場合、処理800は850に進む。反対に、840で回復が成功でなかったと判断された場合、処理800は845に進み、デコーディング読出し失敗が宣言され、処理800が終了する。
850において、(825でエラー訂正デコーディングが実行されて、835で任意の複数の非パリティAUの回復が試みられた後)読出された複数のAU内に、読出されたパリティAUを満たさないいずれかのバイトが存在するかが判断される。パリティAUを満たさない少なくとも1つのバイトが存在すると判断された場合、処理800は845に進み、デコーディング読出し失敗が宣言されて、処理800が終了する。反対に、全ての読出されたAUのバイトがパリティAUを満たす場合、処理800は855に進み、読出された複数のAUに対応する現在のAUのデータが出力され(すなわち、825で実行されるエラー訂正デコーディング及び835で試みられる任意の複数の非パリティAUの回復の後)、処理800は860に進む。
860において、ストライプカウンタであるstripe_counterの現在の値が、(例えば、805での)読出し動作に対して指定されたストライプの総数stripe_MAXに等しいかが判断される。そうであれば、処理800は865に進み、処理800が終了する。反対に、ストライプカウンタであるstripe_counterの現在の値が、読出し動作に対して指定されたストライプの総数stripe_MAXに等しくない場合、処理800は870に進む。870で、ストライプカウンタであるstripe_counterの現在の値がインクリメントされて、処理800は続けて815に戻る。
本開示の様々な実施形態を本明細書で提示及び説明されたが、このような実施形態は例示としてのみ提供されることが当業者には明らかであろう。ここで多数の変形、変更及び置換が、本開示から逸脱することなく当業者に見い出し得るだろう。本明細書で説明された開示の実施形態に対する様々な代替物が、本開示を実施する際に用いられ得ることが理解されるべきである。以下の特許請求の範囲が本開示の範囲を定め、これらの特許請求の範囲及びそれらの同等の範囲内の方法及び構造がそれによりカバーされることを意図している。

Claims (20)

  1. 記憶媒体からのデータを処理するためのシステムであって、
    前記記憶媒体に記憶されているデータのストライプを読出す読出し回路であって、前記ストライプが複数のデータアロケーションユニット(複数のデータAU)及びパリティAUを備える、読出し回路と、
    前記複数のデータAUのそれぞれにエラー訂正デコーディングを適用して、複数のデコードされたデータAUを生成するデコード回路と、
    前記パリティAUの値が、前記複数のデコードされたデータAU内の複数のバイトの複数の値によって満たされるかを判断するパリティチェック回路と、
    前記パリティAUの前記値が前記複数のデコードされたデータAU内の複数のバイトの前記複数の値によって満たされるとの判断に応じて、前記複数のデコードされたデータAUを出力するデータ転送回路と
    を備えるシステム。
  2. 前記複数のデータAU内のデータAUが読出し不可能であるか判断するデータチェック回路
    を備える請求項1に記載のシステム。
  3. 前記読出し回路は、複数のデータ転送チャネルを備え、
    前記読出し回路は、前記複数のデータ転送チャネルのうちの第1のデータ転送チャネルを用いて、データの前記ストライプの第1の部分を読出し、前記複数のデータ転送チャネルのうちの第2のデータ転送チャネルを用いて、データの前記ストライプの第2の部分を読出す
    請求項1又は2に記載のシステム。
  4. 前記複数のデータAU内のデータAUは、前記記憶媒体の第1のページ及び第2のページのそれぞれに部分的に記憶される
    請求項1から3のいずれか1項に記載のシステム。
  5. 前記複数のデータAU内の前記データAUは、前記記憶媒体の第1のデータ転送チャネル及び第2のデータ転送チャネルのそれぞれに部分的に記憶される
    請求項4に記載のシステム。
  6. 前記複数のデータAU内の前記データAUは、前記記憶媒体の第1のプレーン及び第2のプレーンのそれぞれに部分的に記憶される
    請求項5に記載のシステム。
  7. 書込み回路
    を備え、
    前記書込み回路は、データの前記ストライプの複数のAUを、複数のページに渡って書込み、その後に前記記憶媒体の複数のプレーンに渡って書込むことによって、データの前記ストライプを前記記憶媒体に書込む
    請求項1から6のいずれか1項に記載のシステム。
  8. 書込み回路
    を備え、
    前記書込み回路は、データの前記ストライプの複数のAUを、複数のプレーンに渡って書込み、その後に前記記憶媒体の複数のページに渡って書込むことによって、データの前記ストライプを前記記憶媒体に書込む
    請求項1から6のいずれか1項に記載のシステム。
  9. エンコード回路
    を備え、
    前記エンコード回路は、前記パリティAUの既定のバイト位置のバイトの値を、前記複数のデータAU内の各データAUの前記既定のバイト位置のバイトの値の排他的論理和によって生成する
    請求項1から8のいずれか1項に記載のシステム。
  10. ストライプに含まれる複数のAUの総数は、30より少ない
    請求項1から9のいずれか1項に記載のシステム。
  11. 記憶媒体からのデータを処理するための方法であって、
    前記記憶媒体に記憶されているデータのストライプを読出す段階であって、前記ストライプが複数のデータアロケーションユニット(複数のデータAU)及びパリティAUを備える、段階と、
    前記複数のデータAUのそれぞれにエラー訂正デコーディングを適用して、複数のデコードされたデータAUを生成する段階と、
    前記パリティAUの値が、前記複数のデコードされたデータAU内の複数のバイトの複数の値によって満たされるかを判断する段階と、
    前記パリティAUの前記値が前記複数のデコードされたデータAU内の複数のバイトの前記複数の値によって満たされるとの判断に応じて、前記複数のデコードされたデータAUを出力する段階と
    を備える方法。
  12. 前記複数のデータAU内のデータAUが読出し不可能であるか判断する段階
    を備える請求項11に記載の方法。
  13. 複数のデータ転送チャネルのうちの第1のデータ転送チャネルを用いて、データの前記ストライプの第1の部分を読出し、前記複数のデータ転送チャネルのうちの第2のデータ転送チャネルを用いて、データの前記ストライプの第2の部分を読出す段階
    を備える請求項11又は12に記載の方法。
  14. 前記複数のデータAU内のデータAUを、前記記憶媒体の第1のページ及び第2のページのそれぞれに部分的に記憶する段階
    を備える請求項11から13のいずれか1項に記載の方法。
  15. 前記複数のデータAU内の前記データAUを、前記記憶媒体の第1のデータ転送チャネル及び第2のデータ転送チャネルのそれぞれに部分的に記憶する段階
    を備える請求項14に記載の方法。
  16. 前記複数のデータAU内の前記データAUを、前記記憶媒体の第1のプレーン及び第2のプレーンのそれぞれに部分的に記憶する段階
    を備える請求項15に記載の方法。
  17. データの前記ストライプの複数のAUを、複数のページに渡って書込み、その後に前記記憶媒体の複数のプレーンに渡って書込むことによって、データの前記ストライプを前記記憶媒体に書込む段階
    を備える請求項11から16のいずれか1項に記載の方法。
  18. データの前記ストライプの複数のAUを、複数のプレーンに渡って書込み、その後に前記記憶媒体の複数のページに渡って書込むことによって、データの前記ストライプを前記記憶媒体に書込む段階
    を備える請求項11から16のいずれか1項に記載の方法。
  19. 前記パリティAUの既定のバイト位置のバイトの値を、前記複数のデータAU内の各データAUの前記既定のバイト位置のバイトの値の排他的論理和によって生成する段階
    を備える請求項11から18のいずれか1項に記載の方法。
  20. ストライプに含まれる複数のAUの総数は、30より少ない
    請求項11から19のいずれか1項に記載の方法。
JP2015500592A 2012-03-16 2013-03-14 Nandフラッシュメモリ上のデータの記憶のためのアーキテクチャ Active JP6175684B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261612140P 2012-03-16 2012-03-16
US61/612,140 2012-03-16
PCT/US2013/031182 WO2013138552A1 (en) 2012-03-16 2013-03-14 Architecture for storage of data on nand flash memory

Publications (2)

Publication Number Publication Date
JP2015512110A true JP2015512110A (ja) 2015-04-23
JP6175684B2 JP6175684B2 (ja) 2017-08-09

Family

ID=48014332

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2015500592A Active JP6175684B2 (ja) 2012-03-16 2013-03-14 Nandフラッシュメモリ上のデータの記憶のためのアーキテクチャ
JP2015500584A Active JP6201242B2 (ja) 2012-03-16 2013-03-14 Nandフラッシュメモリにおけるデータの効率的な記憶を可能にするアーキテクチャ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2015500584A Active JP6201242B2 (ja) 2012-03-16 2013-03-14 Nandフラッシュメモリにおけるデータの効率的な記憶を可能にするアーキテクチャ

Country Status (4)

Country Link
US (2) US9158675B2 (ja)
JP (2) JP6175684B2 (ja)
CN (2) CN104246708B (ja)
WO (2) WO2013138540A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020191055A (ja) * 2019-05-21 2020-11-26 慧栄科技股▲フン▼有限公司Silicon Motion Inc. 瞬断からの回復処理方法及び装置、並びにコンピュータ読み取り可能な記憶媒体

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9158675B2 (en) 2012-03-16 2015-10-13 Marvell World Trade Ltd. Architecture for storage of data on NAND flash memory
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
JP2014199591A (ja) * 2013-03-29 2014-10-23 株式会社東芝 記憶装置制御システム、記憶装置制御装置及びプログラム
KR102063566B1 (ko) * 2014-02-23 2020-01-09 삼성전자주식회사 메시지 운용 방법 및 이를 지원하는 전자 장치
CN105843746A (zh) * 2015-01-12 2016-08-10 广明光电股份有限公司 固态硬盘的写入方法
US9940034B2 (en) * 2016-01-25 2018-04-10 International Business Machines Corporation Reducing read access latency by straddling pages across non-volatile memory channels
CN108628752B (zh) * 2017-03-17 2021-10-01 北京兆易创新科技股份有限公司 一种数据存储方法和装置
US10564890B2 (en) * 2017-07-07 2020-02-18 Seagate Technology Llc Runt handling data storage system
CN108319429B (zh) * 2018-01-10 2021-02-19 北京思特奇信息技术股份有限公司 一种加快文件读取的方法及计算机设备
CN108804346A (zh) * 2018-05-30 2018-11-13 广东思诺伟智能技术有限公司 一种电池soc数据在flash存储器存储的方法
US11709623B2 (en) 2018-08-03 2023-07-25 Sk Hynix Nand Product Solutions Corp. NAND-based storage device with partitioned nonvolatile write buffer
KR20200053204A (ko) 2018-11-08 2020-05-18 삼성전자주식회사 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법
CN109976673B (zh) * 2019-03-29 2023-04-25 新华三技术有限公司 一种数据写入方法和装置
US11693594B2 (en) * 2021-03-29 2023-07-04 Micron Technology, Inc. Zone striped zone namespace memory
US11347609B1 (en) * 2021-04-29 2022-05-31 International Business Machines Corporation Failed media channel recovery throttling
CN113448778A (zh) * 2021-07-15 2021-09-28 华东师范大学 一种混合式ssd中关键数据的备份方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01133300A (ja) * 1987-08-31 1989-05-25 Oki Electric Ind Co Ltd 自己訂正機能付半導体記憶装置及びマイクロコンピュータ
US20060080505A1 (en) * 2004-10-08 2006-04-13 Masahiro Arai Disk array device and control method for same
WO2010054410A2 (en) * 2008-11-10 2010-05-14 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for predicting failures in solid-state storage
WO2010078167A2 (en) * 2008-12-31 2010-07-08 Intel Corporation Improved error correction in a solid state disk
JP2011192206A (ja) * 2010-03-16 2011-09-29 Toshiba Corp 半導体メモリ映像蓄積再生装置及びデータ書込み/読出し方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6684289B1 (en) * 2000-11-22 2004-01-27 Sandisk Corporation Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
US7200715B2 (en) 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
US6985995B2 (en) * 2002-03-29 2006-01-10 Panasas, Inc. Data file migration from a mirrored RAID to a non-mirrored XOR-based RAID without rewriting the data
US8321650B2 (en) * 2003-01-13 2012-11-27 Emulex Design & Manufacturing Corporation Alignment-unit-based virtual formatting methods and devices employing the methods
JP3884722B2 (ja) * 2003-04-28 2007-02-21 Necトーキン株式会社 データ管理方法、プログラム及び半導体装置
JP4135747B2 (ja) * 2006-04-06 2008-08-20 ソニー株式会社 データ処理装置及びフラッシュメモリへのアクセス方法
US8019959B2 (en) * 2007-02-09 2011-09-13 Marvell World Trade Ltd. Nonvolatile memory system
US7904749B2 (en) * 2008-10-24 2011-03-08 Hitachi, Ltd. Fast data recovery from HDD failure
US8266501B2 (en) 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
CN102193745B (zh) * 2010-03-05 2015-01-14 群联电子股份有限公司 快闪存储器储存装置、其控制器与写入管理方法
US8726126B2 (en) * 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US20110258380A1 (en) * 2010-04-19 2011-10-20 Seagate Technology Llc Fault tolerant storage conserving memory writes to host writes
US9158675B2 (en) 2012-03-16 2015-10-13 Marvell World Trade Ltd. Architecture for storage of data on NAND flash memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01133300A (ja) * 1987-08-31 1989-05-25 Oki Electric Ind Co Ltd 自己訂正機能付半導体記憶装置及びマイクロコンピュータ
US20060080505A1 (en) * 2004-10-08 2006-04-13 Masahiro Arai Disk array device and control method for same
WO2010054410A2 (en) * 2008-11-10 2010-05-14 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for predicting failures in solid-state storage
WO2010078167A2 (en) * 2008-12-31 2010-07-08 Intel Corporation Improved error correction in a solid state disk
JP2011192206A (ja) * 2010-03-16 2011-09-29 Toshiba Corp 半導体メモリ映像蓄積再生装置及びデータ書込み/読出し方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020191055A (ja) * 2019-05-21 2020-11-26 慧栄科技股▲フン▼有限公司Silicon Motion Inc. 瞬断からの回復処理方法及び装置、並びにコンピュータ読み取り可能な記憶媒体
US11188267B2 (en) 2019-05-21 2021-11-30 Silicon Motion, Inc. Method and apparatus and computer program product for handling sudden power off recovery
US11803330B2 (en) 2019-05-21 2023-10-31 Silicon Motion, Inc. Method and apparatus and computer-readable storage medium for handling sudden power off recovery

Also Published As

Publication number Publication date
JP2015511040A (ja) 2015-04-13
CN104246708B (zh) 2017-12-05
CN104220991B (zh) 2017-08-29
WO2013138540A1 (en) 2013-09-19
JP6175684B2 (ja) 2017-08-09
CN104220991A (zh) 2014-12-17
US9158675B2 (en) 2015-10-13
US20130246890A1 (en) 2013-09-19
JP6201242B2 (ja) 2017-09-27
CN104246708A (zh) 2014-12-24
WO2013138552A1 (en) 2013-09-19
US9081668B2 (en) 2015-07-14
US20130246892A1 (en) 2013-09-19

Similar Documents

Publication Publication Date Title
JP6175684B2 (ja) Nandフラッシュメモリ上のデータの記憶のためのアーキテクチャ
US11941257B2 (en) Method and apparatus for flexible RAID in SSD
US11722158B2 (en) Cloud-based solid state device (SSD) with dynamically variable error correcting code (ECC) system
JP6422600B2 (ja) メモリにおけるストライプマッピング
KR101298827B1 (ko) 반도체 디스크 및 시스템
US9798620B2 (en) Systems and methods for non-blocking solid-state memory
US20140351526A1 (en) Data storage controller with multiple pipelines
US20140245097A1 (en) Codewords that span pages of memory
US20180157428A1 (en) Data protection of flash storage devices during power loss
WO2014039227A2 (en) Error detection and correction in a memory system
US9529674B2 (en) Storage device management of unrecoverable logical block addresses for RAID data regeneration
TWI461901B (zh) 資料儲存與重建的方法與系統
TW201447562A (zh) 基於可用記憶體空間選擇冗餘儲存組態
US10067833B2 (en) Storage system
KR20140086223A (ko) 디스크 어레이의 패리티 재동기화 장치 및 방법
JP2008217395A (ja) ディスクアレイ装置
US9547554B2 (en) Mass storage device and method of operating the same to store parity data
WO2013023564A9 (en) Method and apparatus for flexible raid in ssd
CN113420341A (zh) 一种数据保护方法、数据保护设备及计算机系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170222

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170616

R150 Certificate of patent or registration of utility model

Ref document number: 6175684

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

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

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250