JP6130971B2 - データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システム - Google Patents

データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システム Download PDF

Info

Publication number
JP6130971B2
JP6130971B2 JP2016528320A JP2016528320A JP6130971B2 JP 6130971 B2 JP6130971 B2 JP 6130971B2 JP 2016528320 A JP2016528320 A JP 2016528320A JP 2016528320 A JP2016528320 A JP 2016528320A JP 6130971 B2 JP6130971 B2 JP 6130971B2
Authority
JP
Japan
Prior art keywords
block
data
target data
primary controller
size
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
JP2016528320A
Other languages
English (en)
Other versions
JP2016524770A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2016524770A publication Critical patent/JP2016524770A/ja
Application granted granted Critical
Publication of JP6130971B2 publication Critical patent/JP6130971B2/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/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
    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Description

本発明の実施例は、ストレージ技術の分野に関し、特に、データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システムに関する。
ラッシュメモリ装置は、記憶媒体がFlashユニットである不揮発性メモリであり、電源停止の後にデータが消滅しないという特徴を有する。従って、フラッシュメモリ装置は、外部又は内部メモリとして広く使用されている。記憶媒体としてFlashユニットを使用するフラッシュメモリ装置は、ソリッド・ステート・ドライブ(Solid State Drive、SSD)とも呼ばれるソリッド・ステート・ディスク(Solid State Device、SSD)でもよく、他のメモリでもよい。
1つのSSDは、一般的に複数のフラッシュチップを含み、各フラッシュチップは、複数のブロック(block)を含む。各blockは複数のページ(page)を更に含む。或る場合には、損傷を受けたページ(損傷ページとも呼ばれる)がblock内に発生する可能性がある。SSDが損傷ページを含むblockにデータを書き込むときに、損傷ページを含むblockがデータを記憶するのに不十分である場合、一般的にデータのオーバーフローを記憶するために新たなblockが見つけられる。従って、SSDでは、或るデータにより書き込まれているが、データで満たされていない多数のblockが存在する。これは、blockの空間利用率を低減し、SSDの記憶空間の浪費を生じる。
本発明の実施例で提供される、データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システムは、blockの空間利用率を改善し、SSDの記憶空間を節約することができる。
第1の態様によれば、本発明の実施例は、フラッシュメモリ装置を提供し、フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを含み、フラッシュチップは複数のblockを含み、プライマリコントローラは、第1のターゲットデータを受信し、複数のblockの中の第1のblockの有効容量が第1のターゲットデータのサイズ未満である場合、第1のターゲットデータを第1のターゲットデータの第1の部分と第1のターゲットデータの第2の部分とに分割し、第1のターゲットデータの第1の部分のサイズは、第1のblockの有効容量であり、第1のターゲットデータの第2の部分のサイズは、第1のターゲットデータのサイズから第1のターゲットデータの第1の部分のサイズを減算したものであり、複数のblockの中の第2のblockを決定し、第2のblockは、データによって書き込まれているがデータで満たされていないblockであり、第1のターゲットデータの第1の部分を第1のblockに書き込み、第1のターゲットデータの第2の部分を第2のblockに書き込むように構成される。
第1の態様の第1の可能な実現方式では、第2のblockは、予め設定されたblockである。
第1の態様の第2の可能な実現方式では、第2のblockは、データフラグを有し、データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、プライマリコントローラは、データフラグに従って複数のblockの中の第2のblockを決定するように具体的に構成される。
第1の態様の第2の可能な実現方式を参照して、第1の態様の第3の可能な実現方式では、プライマリコントローラは、第2のターゲットデータを受信し、複数のblockの中の第3のblockの有効容量が第2のターゲットデータのサイズ未満である場合、第2のターゲットデータを第2のターゲットデータの第1の部分と第2のターゲットデータの第2の部分とに分割し、第2のターゲットデータの第1の部分のサイズは、第3のblockの有効容量であり、第2のターゲットデータの第2の部分のサイズは、第2のターゲットデータのサイズから第2のターゲットデータの第1の部分のサイズを減算したものであり、第2のターゲットデータの第1の部分を第3のblockに書き込み、第2のターゲットデータの第2の部分を第2のblockに書き込み、データフラグを第2のblockに追加するように更に構成される。
第2の態様によれば、本発明の実施例は、フラッシュメモリ装置を提供し、フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを含み、フラッシュチップは複数のblockを含み、プライマリコントローラは、第1のターゲットデータを受信し、第1のターゲットデータを複数のblockの中の第1のblockに書き込み、第1のblockがデータで満たされた場合、第1のblockに書き込まれていない第1のターゲットデータ内のデータを取得し、第1のblockの有効容量は、第1のターゲットデータのサイズ未満であり、複数のblockの中の第2のblockを決定し、第2のblockは、データによって書き込まれているがデータで満たされていないblockであり、第1のblockに書き込まれていない第1のターゲットデータ内のデータを第2のblockに書き込むように構成される。
第2の態様の第1の可能な実現方式では、第2のblockは、予め設定されたblockである。
第2の態様の第2の可能な実現方式では、第2のblockは、データフラグを有し、データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、プライマリコントローラは、データフラグに従って複数のblockの中の第2のblockを決定するように具体的に構成される。
第2の態様の第2の可能な実現方式を参照して、第2の態様の第3の可能な実現方式では、プライマリコントローラは、第2のターゲットデータを受信し、第2のターゲットデータを複数のblockの中の第3のblockに書き込み、第3のblockがデータで満たされた場合、第3のblockに書き込まれていない第2のターゲットデータ内のデータを取得し、第3のblockの有効容量は、第2のターゲットデータのサイズ未満であり、第3のblockに書き込まれていない第2のターゲットデータ内のデータを第2のblockに書き込み、データフラグを第2のblockに追加するように更に構成される。
第3の態様によれば、本発明の実施例は、データをフラッシュメモリ装置に書き込む方法を提供し、フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを含み、フラッシュチップは複数のblockを含み、この方法は、プライマリコントローラにより、第1のターゲットデータを受信し、複数のblockの中の第1のblockの有効容量が第1のターゲットデータのサイズ未満である場合、第1のターゲットデータを第1のターゲットデータの第1の部分と第1のターゲットデータの第2の部分とに分割するステップであり、第1のターゲットデータの第1の部分のサイズは、第1のblockの有効容量であり、第1のターゲットデータの第2の部分のサイズは、第1のターゲットデータのサイズから第1のターゲットデータの第1の部分のサイズを減算したものであるステップと、プライマリコントローラにより、複数のblockの中の第2のblockを決定するステップであり、第2のblockは、データによって書き込まれているがデータで満たされていないblockであるステップと、プライマリコントローラにより、第1のターゲットデータの第1の部分を第1のblockに書き込み、第1のターゲットデータの第2の部分を第2のblockに書き込むステップとを含む。
第3の態様の第1の可能な実現方式では、第2のblockは、予め設定されたblockである。
第3の態様の第2の可能な実現方式では、第2のblockは、データフラグを有し、データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、プライマリコントローラにより、複数のblockの中の第2のblockを決定するステップは、プライマリコントローラにより、データフラグに従って複数のblockの中の第2のblockを決定するステップを含む。
第3の態様の第2の可能な実現方式を参照して、第3の態様の第3の可能な実現方式では、この方法は、プライマリコントローラにより、第2のターゲットデータを受信し、複数のblockの中の第3のblockの有効容量が第2のターゲットデータのサイズ未満である場合、第2のターゲットデータを第2のターゲットデータの第1の部分と第2のターゲットデータの第2の部分とに分割するステップであり、第2のターゲットデータの第1の部分のサイズは、第3のblockの有効容量であり、第2のターゲットデータの第2の部分のサイズは、第2のターゲットデータのサイズから第2のターゲットデータの第1の部分のサイズを減算したものであるステップと、プライマリコントローラにより、第2のターゲットデータの第1の部分を第3のblockに書き込み、第2のターゲットデータの第2の部分を第2のblockに書き込むステップと、プライマリコントローラにより、データフラグを第2のblockに追加するステップとを更に含む。
第4の態様によれば、本発明の実施例は、データをフラッシュメモリ装置に書き込む方法を提供し、フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを含み、フラッシュチップは複数のblockを含み、この方法は、プライマリコントローラにより、第1のターゲットデータを受信し、第1のターゲットデータを複数のblockの中の第1のblockに書き込むステップと、第1のblockがデータで満たされた場合、プライマリコントローラにより、第1のblockに書き込まれていない第1のターゲットデータ内のデータを取得するステップであり、第1のblockの有効容量は、第1のターゲットデータのサイズ未満であるステップと、プライマリコントローラにより、複数のblockの中の第2のblockを決定するステップであり、第2のblockは、データによって書き込まれているがデータで満たされていないblockであるステップと、プライマリコントローラにより、第1のblockに書き込まれていない第1のターゲットデータ内のデータを第2のblockに書き込むステップとを含む。
第4の態様の第1の可能な実現方式では、第2のblockは、予め設定されたblockである。
第4の態様の第2の可能な実現方式では、第2のblockは、データフラグを有し、データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、プライマリコントローラにより、複数のblockの中の第2のblockを決定するステップは、プライマリコントローラにより、データフラグに従って複数のblockの中の第2のblockを決定するステップを含む。
第4の態様の第2の可能な実現方式を参照して、第4の態様の第3の可能な実現方式では、この方法は、プライマリコントローラにより、第2のターゲットデータを受信し、第2のターゲットデータを複数のblockの中の第3のblockに書き込むステップと、第3のblockがデータで満たされた場合、プライマリコントローラにより、第3のblockに書き込まれていない第2のターゲットデータ内のデータを取得するステップであり、第3のblockの有効容量は、第2のターゲットデータのサイズ未満であるステップと、プライマリコントローラにより、第3のblockに書き込まれていない第2のターゲットデータ内のデータを第2のblockに書き込むステップと、プライマリコントローラにより、データフラグを第2のblockに追加するステップとを更に含む。
第5の態様によれば、本発明の実施例は、記憶システムを提供し、記憶システムは、第1の態様又は第1の態様の第1〜第3の可能な実現方式のいずれか1つによるフラッシュメモリ装置及びコントローラを含み、コントローラは、第1のターゲットデータをフラッシュメモリ装置に送信するように構成される。
第6の態様によれば、本発明の実施例は、記憶システムを提供し、記憶システムは、第2の態様又は第2の態様の第1〜第3の可能な実現方式のいずれか1つによるフラッシュメモリ装置及びコントローラを含み、コントローラは、第1のターゲットデータをフラッシュメモリ装置に送信するように構成される。
本発明の実施例は、データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システムを提供する。本発明の実施例では、複数のblockの中の第1のblockの有効容量が第1のターゲットデータのサイズ未満である場合、フラッシュメモリ装置のプライマリコントローラは、第1のターゲットデータを第1のターゲットデータの第1の部分と第1のターゲットデータの第2の部分とに分割し、第1のターゲットデータの第1の部分のサイズは、第1のblockの有効容量であり、第1のターゲットデータの第2の部分のサイズは、第1のターゲットデータのサイズから第1のターゲットデータの第1の部分のサイズを減算したものであり、複数のblockの中の第2のblockを決定し、第2のblockは、データによって書き込まれているがデータで満たされていないblockであり、第1のターゲットデータの第1の部分を第1のblockに書き込み、第1のターゲットデータの第2の部分を第2のblockに書き込む。第2のblockは、データによって書き込まれているがデータで満たされていないblockであるため、本発明の実施例の実現方式によれば、第1のターゲットデータのサイズから第1のblockの有効容量を減算することにより取得されたデータの部分は、第2のblockに記憶され得る。新たなblockは、このデータの部分を記憶するために選択されない。これにより、ブロック利用率を改善し、SSDの記憶空間を節約する。
更に、本発明の実施例は、データをフラッシュメモリ装置に書き込む他の方法、他のフラッシュメモリ装置及び他の記憶システムを提供する。本発明の実施例では、プライマリコントローラは、第1のターゲットデータを受信し、第1のターゲットデータを複数のblockの中の第1のblockに書き込み、第1のblockがデータで満たされた場合、プライマリコントローラは、第1のblockに書き込まれていない第1のターゲットデータ内のデータを取得し、第1のblockの有効容量は、第1のターゲットデータのサイズ未満であり、プライマリコントローラは、複数のblockの中の第2のblockを決定し、第2のblockは、データによって書き込まれているがデータで満たされていないblockであり、プライマリコントローラは、第1のblockに書き込まれていない第1のターゲットデータ内のデータを第2のblockに書き込む。実施例では、プライマリコントローラは、第1のblockに書き込まれていない第1のターゲットデータ内のデータを取得してもよく、データを第2のblockに書き込む。第2のblockは、データによって書き込まれているがデータで満たされていないblockであるため、本発明の実施例の実現方式によれば、第1のターゲットデータのサイズから第1のblockの有効容量を減算することにより取得されたデータの部分は、第2のblockに記憶され得る。新たなblockは、このデータを記憶するために選択されない。これにより、ブロック利用率を改善し、SSDの記憶空間を節約する。
本発明の実施例の技術的対策を更に明確に説明するために、以下に、実施例又は従来技術を説明するために必要な添付図面を簡単に紹介する。明らかに、以下の説明の添付図面は、本発明の単に幾つかの実施例を示しているに過ぎず、当業者は、創造的取り組みを行うことなく、これらの添付図面から依然として他の図面を導き得る。
本発明の実施例による記憶システムの概略構成図 本発明の実施例によるフラッシュメモリ装置のプライマリコントローラの概略構成図 本発明の実施例によるフラッシュメモリ装置の記憶媒体の概略構成図 本発明の実施例に従ってデータをフラッシュメモリ装置に書き込む概略フローチャート 本発明の実施例に従ってデータがフラッシュメモリ装置に書き込まれる事例の概略図 本発明の実施例に従ってデータがフラッシュメモリ装置に書き込まれる他の事例の概略図 本発明の実施例に従ってデータをフラッシュメモリ装置に書き込む他の概略フローチャート
本発明の実施例は、blockの空間利用率を改善することができる、データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システムを提供する。
図1は、本発明の実施例による記憶システムの概略構成図を示している。図1に示す記憶システムは、コントローラ11とフラッシュメモリ装置22とを含む。記憶媒体としてFlashユニットを使用する記憶装置であるフラッシュメモリ装置22は、ソリッド・ステート・ドライブ(Solid State Drive、SSD)とも呼ばれるソリッド・ステート・ディスク(Solid State Device、SSD)を含んでもよく、他のメモリを更に含んでもよい。この実施例では、一例としてSSDを使用することにより、フラッシュメモリ装置22について説明する。
図1は、例示的な説明に過ぎず、特定のネットワーキング方式を限定するものではない。例えば、コントローラ11及びフラッシュメモリ装置22が相互に通信することができる限り、カスケード型ツリーネットワーキング及びリングネットワーキングの双方が使用されてもよい。
コントローラ11は、従来技術で知られているいずれかのコンピューティングデバイスを含んでもよく、例えば、サーバ又はデスクトップコンピュータを含んでもよい。オペレーティングシステム及び他のアプリケーションプログラムは、コントローラ11にインストールされる。コントローラ11は、入出力(I/O)要求をフラッシュメモリ装置22に送信してもよい。例えば、書き込みデータ要求は、フラッシュメモリ装置22に送信され、これにより、フラッシュメモリ装置22は、書き込みデータ要求で搬送された書き込まれるべきデータを記憶媒体に書き込む。本発明のこの実施例におけるI/O要求は、書き込みデータ要求又は読み取りデータ要求でもよい点に留意すべきである。
フラッシュメモリ装置22は、プライマリコントローラ220と記憶媒体221とを含む。
プライマリコントローラ220は、コントローラ11からI/O要求を受信して処理するように構成される。記憶媒体221は、データを記憶するように構成される。
図2を参照すると、図2は、本発明の実施例によるフラッシュメモリ装置22のプライマリコントローラ220の概略構成図である。図2に示すように、プライマリコントローラ220は、プロセッサ(processor)218と、キャッシュ(cache)230と、通信バス(略してバス)226と、通信インタフェース(Communication Interface)228とを主に含む。プロセッサ218、キャッシュ230及び通信インタフェース228は、通信バス226を使用することにより、相互通信を行う。
通信インタフェース228は、コントローラ11又は記憶媒体221と通信するように構成される。
キャッシュ230は、コントローラ11から受信したデータ又は記憶媒体221から読み取ったデータを一時的に記憶するように構成される。キャッシュ230は、RAM、ROM、フラッシュメモリ(Flash memory)又はソリッド・ステート・ディスク(Solid State Disk、SSD)のように、データを記憶することができるいずれかの過渡的でない(non-transitory)機械読み取り可能な媒体でもよく、ここでは限定されない。例えば、コントローラ11により送信された書き込みデータ要求が受信された場合、書き込みデータ要求は、キャッシュ230に記憶されてもよく、また、プロセッサ218により処理される。更に、或る適用事例では、キャッシュ230は、プライマリコントローラ220の外部に配置されてもよい。
プロセッサ218は、中央処理装置CPUでもよく、特定用途向け集積回路ASIC(Application Specific Integrated Circuit)でもよく、本発明のこの実施例を実現するように構成された1つ以上の集積回路でもよい。本発明のこの実施例では、プロセッサ218は、ホストから書き込みデータ要求又は読み取りデータ要求を受信し、書き込みデータ要求又は読み取りデータ要求を処理し、書き込みデータ要求又は読み取りデータ要求を記憶媒体221に送信し、他の動作を実行するように構成されてもよい。
プロセッサ218は、様々なプログラム命令を記憶するように構成されたバッファ(図面に図示せず)を更に含んでもよい。例えば、バッファは、フラッシュ変換レイヤ(Flash Translation Layer、FTL)を含んでもよい。プロセッサ218は、FTLを使用することにより、損傷ページについての統計の収集のような動作を実行して損傷ページについての統計の収集結果をFTLの構成情報に記憶してもよい。或いは、プロセッサ218は、他のソフトウェアモジュールを使用することにより、同様の機能を実現してもよい。従って、FTLの機能と同様の機能を有し、損傷ページについての統計の収集のような動作を実行して損傷ページについての統計の収集結果をソフトウェアモジュールの構成情報に記憶し得る如何なるソフトウェアモジュールも、本発明の実施例の保護範囲に入る。
更に、キャッシュ230及びプロセッサ218のキャッシュは、一緒に配置されてもよく、別々に配置されてもよく、本発明のこの実施例では限定されない。
図3を参照すると、図3は、本発明の実施例による記憶媒体221の概略構成図である。この実施例では、記憶媒体221は、Flashユニットを示し、Flashユニットは、シングルレベルセル(フルネーム:Single-Level Cell、略してSLC)、マルチレベルセル(フルネーム:Multi-Level Cell、略してMLC)又は他の記憶セルでもよい。
記憶媒体221は、一般的に複数のフラッシュ(Flash)チップを含む。SSDでは、複数のフラッシュチップを共に接続するためにチャネル(channel)が使用される。書き込みデータ要求の並行処理は、チャネルで実現されてもよい。一例として図3に示す4つのチャネルが使用される。プライマリコントローラ220がコントローラ11により送信された4つの書き込みデータ要求を受信した場合、4つのチャネルのそれぞれが書き込みデータ要求を処理してもよく、これにより、書き込みデータ要求を処理する際の効率を改善する。
各フラッシュチップは、複数のブロック(block)を含み、SSDにより実行される消去動作は、単位としてblockを用いて実行される。フラッシュユニットの消去機能のため、blockに記憶されたデータが、一般的な機械的ハードドライブのように直接的に変更され得ないことを当業者は習得し得る。blockのデータが変更される必要がある場合、SSDのプライマリコントローラ220は、新たなblockを見つけ、変更されたデータを新たなblockに書き込み、元のblockのデータは無効なデータになる。SSDがガベージコレクションを実行する場合、無効なデータは消去される。例えば、SSDがガベージコレクションを実行する必要がある場合、block内の有効なデータは、まず他の新たなblockに動かされ、元のblockに記憶された全てのデータ(有効なデータ及び無効なデータを含む)が消去される。きれいに消去された後に、blockは空のblockになる。本発明のこの実施例では、blockの有効なデータは、blockに記憶されており、変更されていないデータを示し、データのこの部分は読み取られてもよい。blockの無効なデータは、blockに記憶されており、変更されたデータを示し、データのこの部分は読み取られることができない。
各blockは、複数のページ(page)を含んでもよい。或る場合には、blockのpageに損傷が発生する可能性があり、本発明のこの実施例では、損傷が発生したページは損傷ページと呼ばれる。blockに損傷ページが存在する場合、blockの実際の容量は、損傷ページを含まないblockの容量より小さくなる。本発明のこの実施例では、blockの実際の容量は、有効容量と呼ばれる。例えば、blockの標準容量は1Mであり、各pageのサイズは4KBである。blockに1つの損傷ページが存在する場合、blockの有効容量は、1Mから4KBを減算したものである。本発明のこの実施例では、blockの標準容量は、損傷ページを含まない空のblockの容量を示し、空のblockは、きれいに消去されたblockを示し、有効なデータも無効なデータも含まない。blockの有効容量は、blockの標準容量から損傷ページの容量を減算したものに等しい。損傷ページの容量は、各損傷ページのサイズと損傷ページの数との積に等しい。
本発明のこの実施例では、blockの標準容量は、コントローラ11に予め記憶され、コントローラ11により、サイズが標準容量と同じターゲットデータをフラッシュメモリ装置22に送信するために使用されてもよい。各blockの標準容量は、2のN乗(M)であり、Nは正の整数である。blockの標準容量は同じでもよく、異なってもよい。blockの標準容量が異なる場合、Nの値は異なってもよい。この場合、コントローラ11によりフラッシュメモリ装置22に送信されるターゲットデータのサイズは、最大のblockの標準容量以上である。
更に、本発明のこの実施例では、SSDが書き込みデータ要求を処理する場合、データはまた、単位としてpageを使用することにより書き込まれる。例えば、コントローラ11は、書き込みデータ要求をプライマリコントローラ220に送信する。書き込みデータ要求は、論理ブロックアドレス(Logical Block Address、LBA)のセグメント及びターゲットデータを搬送し、LBAは、コントローラ11によりアクセスされ得るアドレスである。書き込みデータ要求を受信した場合、プライマリコントローラ220は、所定のポリシーに従ってターゲットデータをblockに書き込んでもよい。ターゲットデータが書き込まれる複数のpageのアドレスは、ターゲットデータを実際に記憶するアドレスであり、物理アドレスとも呼ばれる。SSDは、LBAのセグメントと複数のpageのアドレスとの間の対応関係を設定して記憶してもよい。LBAのセグメントと複数のpageのアドレスとの間の対応関係は、FTLにより管理される。コントローラ11が後に読み取りデータ要求をプライマリコントローラ220に送信し、ターゲットデータを読み取ることを要求した場合、読み取りデータ要求はLBAを搬送する。この場合、プライマリコントローラ220は、LBAと、LBAと物理アドレスとの間の対応関係とに従ってターゲットデータを読み出し、ターゲットデータをコントローラ11に戻してもよい。
以下に、本発明の実施例に従ってデータをフラッシュメモリ装置に書き込む手順を紹介する。本発明のこの実施例におけるデータをフラッシュメモリ装置に書き込む方法は、図2及び図3に示すフラッシュメモリ装置において実現されてもよい。図4に示すように、この方法は以下のステップを含む。
ステップS101:プライマリコントローラ220は、第1のターゲットデータを受信する。
第1のターゲットデータは、コントローラ11によりプライマリコントローラ220に送信されてもよい。更に、第1のターゲットデータは、書き込みデータ要求で搬送されたデータでもよく、複数の書き込みデータ要求で搬送されたデータでもよい。第1のターゲットデータのサイズは、blockの標準容量と同じである。blockの標準容量は、コントローラ11に予め記憶されてもよい。
具体的に、ステップS101は、プロセッサ218により実行されてもよい。通信インタフェース228を通じて、コントローラ11により送信された第1のターゲットデータを受信した後に、プロセッサ218は、第1のターゲットデータをキャッシュ230に書き込んでもよい。
ステップS102:プライマリコントローラ220は、第1のターゲットデータを複数のblockの中の第1のblockに書き込む。
任意選択の実現方式は、プロセッサ218が空のblockをランダムに選択し、空のblockがまさに損傷ページを含むblockであることである。第1のblockは損傷ページを含むため、第1のblockの有効容量は、第1のblockの標準容量未満である。具体的に、第1のblockの有効容量は、第1のblockの標準容量から第1のblockに含まれる損傷ページの容量を減算したものに等しい。
具体的に、プロセッサ218がステップS102を実行する前に、第1のblockの損傷ページについての情報の統計は収集されなくてもよく、データを書き込む動作が直接実行される。第1のblockの損傷ページについての情報の統計は、プロセッサ218がデータを書き込む動作を実行する前に事前に収集されてもよいことが認識され得る。
しかし、第1のターゲットデータのサイズが第1のblockの標準容量であり、第1のblockが損傷ページを含む場合、第1のblockの有効容量は第1のblockの標準容量未満であるため、第1のターゲットデータは、完全には第1のblockに書き込まれることができない。
説明を容易にするために、図5に示す例に参照が行われ得る。図5は、データが第1のblock及び第2のblockに書き込まれる事例の概略図である。
図5に示すように、第1のターゲットデータは、第1のblockに書き込まれる。第1のblockは損傷ページを含む。
ステップS103:第1のblockがデータで満たされた場合、プライマリコントローラ220は、第1のblockに書き込まれていない第1のターゲットデータ内のデータを取得する。
具体的に、ステップS103は、プロセッサ218により実行される。
第1のblockに書き込まれていない第1のターゲットデータ内のデータのサイズは、第1のblockの損傷ページの容量である。第1のターゲットデータのサイズは、第1のblockの有効容量より大きいため、第1のblockがデータで満たされた場合、第1のblockに書き込まれることができないデータの部分が依然として存在する。このデータの部分のサイズは、第1のblockの損傷ページの容量である。説明を容易にするために、第1のblockに書き込まれることができないこのデータの部分は、以下のステップにおいてオーバーフローデータと呼ばれる。
図5に示すように、第1のターゲットデータが第1のblockに書き込まれる場合、第1のblockはデータで満たされる。図5に示す第1のblockの斜線領域は、第1のblockに書き込まれている第1のターゲットデータ内のデータである。
ステップS104:プライマリコントローラ220は、第2のblockを決定する。第2のblockは、データによって書き込まれているがデータで満たされていないblockである。
具体的に、ステップS104は、プロセッサ218により実行される。
第2のblockは、初期化中にフラッシュメモリ装置22により設定されたblockでもよく、特にオーバーフローデータを記憶するために使用される。或いは、第2のblockは、データフラグを有してもよい。データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用される。データフラグは、第2のblockの属性でもよい。属性の値は、数字、文字、文字列等でもよい。本発明のこの実施例は、データフラグの形式に限定を設定しない。機能がデータによって書き込まれているがデータで満たされてないblockを識別するものである如何なるフラグも、本発明のこの実施例の保護範囲内に入るものとする。このように、プライマリコントローラ220は、データフラグに従って第2のblockを決定してもよい。データフラグは、フラッシュメモリ装置22が前の書き込みデータ要求を処理したときにデータのオーバーフローが発生した場合、オーバーフローデータがblockに記憶された後にblockに追加されるフラグでもよい。データフラグが追加された後に、blockは、第2のblockとしての機能を果たし、特にオーバーフローデータを記憶するために使用される。フラッシュメモリ装置22が書き込みデータ動作を処理する毎に、データのオーバーフローが発生した場合、オーバーフローデータは、第2のblockに書き込まれる。第2のblockがデータで満たされた場合、フラッシュメモリ装置22は、オーバーフローデータを記憶し続けるために、第2のblockとしての機能を果たすための複数のblockから新たなblockを選択してもよいことが認識され得る。図5に示すように、データ(図5に示す元のデータ)が既に第2のblockに記憶されている。更に、第2のblockは、損傷ページを含んでもよく、損傷ページを含まなくてもよい。
この実施例は、説明の例としてSSDにおいて1つのチャネルを使用する点に留意すべきである。SSDにおける1つのチャネルでは、データによって書き込まれているがデータで満たされていない1つのみのblockが存在する。SSDが複数のチャネルを有する場合、各チャネルは、データによって書き込まれているがデータで満たされていない1つのblockを有する。更に、本発明のこの実施例はまた、1つのチャネル上の複数の並行ユニットで複数のI/O要求の並行処理を実現してもよい。この場合、各並行ユニットは、データによって書き込まれているがデータで満たされていない1つのみのblockを有する。
ステップS105:プライマリコントローラ220は、第1のblockに書き込まれていない第1のターゲットデータ内のデータを第2のblockに書き込む。
具体的に、ステップS105は、プロセッサ218により実行される。
図5に示すように、第1のターゲットデータの残りのデータは、第2のblockに書き込まれる。
本発明のこの実施例によれば、プライマリコントローラ220は、第1のターゲットデータを受信し、複数のblockから第1のblockを選択する。第1のblockの有効容量は第1のターゲットデータのサイズ未満であるため、第1のblockは、全体の第1のターゲットデータを記憶するのに十分な容量を有さない。第1のblockがデータで満たされた場合、プライマリコントローラ220は、第1のblockに書き込まれていない第1のターゲットデータ内のデータを取得し、データを第2のblockに書き込む。第2のblockは、データによって書き込まれているがデータで満たされていないblockである。第1のターゲットデータのオーバーフローは、データによって書き込まれているがデータで満たされていないblockに書き込まれる。このことは、新たな空のblockがオーバーフローデータを記憶するために見つけられることを回避し、これにより、block利用率を改善する。
本発明の実施例の技術的効果を更に説明するために、前述の実施例において、ステップS101の前に、プライマリコントローラ220は、コントローラ11により送信された第2のターゲットデータを更に受信してもよい。第2のターゲットデータのサイズは、blockの標準容量と同じである。プライマリコントローラ220は、第2のターゲットデータを複数のblockの中の第3のblockに書き込む。第3のblockは、第1のblockと同様に、空のblockであり、損傷ページを含む。従って、第3のblockの有効容量は、第2のターゲットデータのサイズ未満である。第3のblockがデータで満たされた場合、プライマリコントローラ220は、第3のblockに書き込まれていない第2のターゲットデータ内のデータを取得し、第3のblockに書き込まれていない第2のターゲットデータ内のデータを第2のblockに書き込む。更に、第3のblockに書き込まれていない第2のターゲットデータ内のデータを第2のblockに書き込んだ後に、プライマリコントローラ220は、データフラグを第2のblockに追加してもよい。データフラグは、第2のblockがデータによって書き込まれているがデータで満たされていないblockであることを識別するために使用される。従って、プライマリコントローラ220が他のターゲットデータを後に受信したときに、他のターゲットデータが空のblockに書き込まれてオーバーフローが発生した場合、オーバーフローデータは、第2のblockに書き込まれてもよい。これにより、SSDのblockの利用率を最大限まで改善する。
更に、図4に示す実施例では、好ましい実現方式は、ステップS104はステップS101〜ステップS103の後に実行され得ることである。換言すると、この実現方式では、プライマリコントローラ220は、まず、第1のターゲットデータを第1のblock(損傷ページを含む空のblock)に書き込む必要があり、第1のblockに書き込まれていない第1のターゲットデータ内のデータを取得した後に、プライマリコントローラ220は、第2のblock(データによって書き込まれているがデータで満たされていないblock)を決定する。この実現方式によりもたらされる利点は、連続するLBAのセグメントに対応するデータが1つのblockに最大限まで記憶されることが確保され得ることである。
前述の実現方式の技術的効果を説明するために、図6が比較の説明のために使用される。図6は、実施例に従ってデータがフラッシュメモリ装置22に書き込まれる他の事例の概略図である。図6に示すように、
第1のターゲットデータを受信した場合、フラッシュメモリ装置22は、まず第2のblockを決定し、第1のターゲットデータを第2のblockに書き込む。データ(図6において元のデータと呼ばれる)が既に第2のblockに記憶されているため、第2のblockに書き込まれるときに、第2のblockがデータで満たされるまで、第1のターゲットデータは元のデータに続いて書き込まれてもよい。データが既に第2のblockに記憶されており、第2のblockが損傷ページを含んでもよいため、第1のターゲットデータは、第2のblockに完全には書き込まれることができない。第2のblockがデータで満たされた場合、第2のblockに書き込まれていない第1のターゲットデータ内のデータが取得されてもよい。第2のblockに書き込まれていない第1のターゲットデータ内のデータのサイズは、第2のblockの元のデータのサイズと、第2のblockに含まれる損傷ページの容量との和である。次に、空のblock(本発明のこの実施例では第1のblock)が複数のblockから選択されてもよい。第2のblockに書き込まれていない第1のターゲットデータ内のデータは、第1のblockに書き込まれる。
前述の説明及び図6から、第1のターゲットデータは第1のblock及び第2のblockに記憶されることが習得され得る。しかし、図5に示す実現方式との相違は、図6に示す実現方式では、第1のblockに記憶されたデータと第2のblockに記憶されたデータとの双方が、図5の第1のblockに記憶されたデータ未満であるという点にある。
更に、前述の説明に従って、SSDがターゲットデータをblockに書き込んだ後に、ターゲットデータが書き込まれたblockの複数のページのアドレスは、ターゲットデータを実際に記憶するアドレスであり、物理アドレスとも呼ばれることが習得され得る。ターゲットデータが1つのblockに最大限まで記憶される場合、ターゲットデータの物理アドレスが連続する程度が最高になる。ガベージコレクションがblockで実行される場合、生成されるフラグメントの数は最小になる。
以下に、本発明の実施例に従ってデータをフラッシュメモリ装置に書き込む他の方法の手順を紹介する。この方法は、図2及び図3に示すフラッシュメモリ装置において実現されてもよい。図7に示すように、この方法は以下のステップを含む。
ステップS201:ステップS201は、図4に示す実施例のステップS101と同じであり、ステップS101の説明に参照が行われてもよい。
ステップS202:複数のblockの中の第1のblockの有効容量が第1のターゲットデータのサイズ未満である場合、プライマリコントローラ220は、第1のターゲットデータを第1のターゲットデータの第1の部分と第1のターゲットデータの第2の部分とに分割する。第1のターゲットデータの第1の部分のサイズは、第1のblockの有効容量であり、第1のターゲットデータの第2の部分のサイズは、第1のターゲットデータのサイズから第1のターゲットデータの第1の部分のサイズを減算したものである。
第1のターゲットデータを受信した場合、プライマリコントローラ220は、第1のターゲットデータを記憶するために、SSDの複数のblockから第1のblockを選択してもよい。第1のblockは空のblockである。しかし、第1のblockは、損傷ページを含むblockでもよい。第1のblockが損傷ページを含む場合、第1のblockの有効容量は、第1のターゲットデータのサイズ未満である。この理由は、第1のターゲットデータのサイズは、blockの標準容量に等しいからである。
具体的に、SSDに含まれる複数のblockについて、プロセッサ218は、FTLを使用することにより、各blockの損傷ページについての統計を収集し、損傷ページについての情報を記録してもよい。損傷ページについての情報は、blockが損傷ページを含むか否かについての情報、含まれる損傷ページの数又は容量についての情報等を示す。
任意選択で、プロセッサ218は、統計の収集によって取得された各blockの損傷ページについての情報をFTLの構成情報に記憶してもよい。コントローラ11により送信された第1のターゲットデータが受信された場合、プロセッサ218は、FTLに記憶された損傷ページについての情報に従って空のblockを選択する。空のblockを選択する場合、プロセッサ218は、FTLに記憶された損傷ページについての情報に従って、損傷ページを含まない空のblockを優先的に選択してもよい点に留意すべきである。この場合、プロセッサ218は、受信した第1のターゲットデータを損傷ページを含まない空のblockに直接書き込んでもよい。
しかし、本発明のこの実施例で説明した要点は、プロセッサ218が損傷ページを含む空のblockを選択した場合である。理由は、損傷ページを含まない空のblockが使い果たされたことでもよく、プロセッサ218が損傷ページを含む空のblockをランダムに選択したことでもよく、他の理由が存在してもよい。詳細は、本発明のこの実施例では説明しない。
更に、本発明のこの実施例では、プロセッサ218は、少ない損傷ページを有する空のblockを優先的に選択してもよい。
第1のblockの有効容量が第1のターゲットデータのサイズ未満である場合、プロセッサ218は、第1のblockの損傷ページについての情報に従って、第1のターゲットデータを第1の部分と第2の部分とに分割してもよい。
損傷ページについての情報が第1のblockに含まれる損傷ページの数である場合、第1のblockに含まれる損傷ページの容量は、各損傷ページのサイズで乗算された損傷ページの数である。第1のblockの有効容量は、第1のblockの標準容量から損傷ページの容量を減算したものであり、これにより、第1の部分のサイズが取得される。更に、損傷ページについての情報は、第1のblockに含まれる損傷ページの容量でもよく、第1のblockの有効容量でもよく、第1のblockの有効容量を取得するために使用され得る他の情報でもよい。
更に、第1のターゲットデータがコントローラ11によりプライマリコントローラ220に送信された書き込みデータ要求で搬送された場合、第1のターゲットデータを第1の部分と第2の部分とに分割することは、具体的に、書き込みデータ要求を2つの書き込みデータ要求に分割することでもよい。分割後に取得された一方の書き込みデータ要求は、第1の部分を搬送し、他方の書き込みデータ要求は、第2の部分を搬送する。第1のターゲットデータがコントローラ11によりプライマリコントローラ220に送信された複数の書き込みデータ要求で搬送された場合、第1のターゲットデータを第1の部分と第2の部分とに分割することは、具体的に、複数の書き込みデータ要求を書き込みデータ要求の2つの部分に分割することでもよい。書き込みデータ要求の第1の部分で搬送されるデータは、第1の部分であり、書き込みデータ要求の第2の部分で搬送されるデータは、第2の部分である。
ステップS203:プライマリコントローラ220は、複数のblockの中の第2のblockを決定する。第2のblockは、データによって書き込まれているがデータで満たされていないblockである。
具体的に、ステップS203は、プロセッサ218により実行される。
第2のblockは、初期化中にフラッシュメモリ装置22により設定されたblockでもよく、特にオーバーフローデータを記憶するために使用される。或いは、第2のblockは、データフラグを有してもよい。データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用される。このように、プライマリコントローラ220は、データフラグに従って第2のblockを決定してもよい。データフラグは、フラッシュメモリ装置22が前の書き込みデータ要求を処理したときにデータのオーバーフローが発生した場合、オーバーフローデータがblockに記憶された後にblockに追加されるフラグでもよい。データフラグが追加された後に、blockは、第2のblockとしての機能を果たし、特にオーバーフローデータを記憶するために使用される。フラッシュメモリ装置22が書き込みデータ動作を処理する毎に、データのオーバーフローが発生した場合、オーバーフローデータは、第2のblockに書き込まれる。第2のblockがデータで満たされた場合、フラッシュメモリ装置22は、オーバーフローデータを記憶し続けるために、第2のblockとしての機能を果たすための複数のblockから新たなblockを選択してもよいことが認識され得る。
この実施例は、説明の例としてSSDにおいて1つのチャネルを使用する点に留意すべきである。SSDにおける1つのチャネルでは、データによって書き込まれているがデータで満たされていない1つのみのblockが存在する。SSDが複数のチャネルを有する場合、各チャネルは、データによって書き込まれているがデータで満たされていない1つのblockを有する。
ステップS204:プライマリコントローラ220は、第1のターゲットデータの第1の部分を第1のblockに書き込み、第1のターゲットデータの第2の部分を第2のblockに書き込む。
任意選択で、プロセッサ218は、データの2つの部分を2つのblockに並行して書き込んでもよく、まず第1の部分を第1のblockに書き込み、次に第2の部分を第2のblockに書き込んでもよく、まず第2の部分を第2のblockに書き込み、次に第1の部分を第1のblockに書き込んでもよく、ここでは限定されない。
図4に示す実施例との相違は、図に示す実施例では、プライマリコントローラ220が第1のターゲットデータを第1のblock及び第2のblockに書き込む前に、第1のターゲットデータが第1の部分と第2の部分とに分割される必要がある点にある。第1の部分のサイズは、第1のblockの有効容量と同じであり、第2の部分のサイズは、第1のblockの損傷ページの容量と同じである。分割が完了した後に、プライマリコントローラ220は、データの2つの部分を2つのblockに書き込む。第1のターゲットデータのオーバーフローは、データによって書き込まれているがデータで満たされていないblockに書き込まれるため、この実現方式ではblock利用率が改善され得る。
ではblock利用率が改善され得る。
同様に、図4に示す実施例と同様に、ステップS201の前に、プライマリコントローラ220は、コントローラ11により送信された第2のターゲットデータを更に受信してもよい。第2のターゲットデータのサイズは、blockの標準容量と同じである。複数のblockの中の第3のblockが損傷ページを含む空のblockである場合、第3のblockの有効容量は、第2のターゲットデータのサイズ未満である。プライマリコントローラ220は、第2のターゲットデータを第1の部分と第2の部分とに分割してもよい。第1の部分のサイズは、第3のblockの有効容量と同じであり、第2の部分のサイズは、第2のターゲットデータのサイズから第1の部分のサイズを減算したものである。更に、プライマリコントローラ220は、更に、複数のblockから第2の部分を記憶するために使用されるblockを選択する必要があり、第2の部分を選択されたblockに書き込んだ後に、プライマリコントローラ220は、データフラグをblockに追加してもよい。データフラグは、blockがデータによって書き込まれているがデータで満たされていないblockであることを識別するために使用される。blockは、前に説明した第2のblockである。従って、プライマリコントローラ220が他のターゲットデータを後に受信したときに、他のターゲットデータが空のblockに書き込まれたときにオーバーフローが発生した場合、オーバーフローデータは、第2のblockに書き込まれてもよい。これにより、SSDのblockの利用率を最大限まで改善する。更に、この実施例において第2のblockがデータで満たされた場合、新たなblockは、ターゲットデータのオーバーフローを記憶するために使用される第2のblockとして選択されてもよい点に留意すべきである。
当業者は、本発明の各態様又は各態様の可能な実現方式がシステム、方法又はコンピュータ・プログラム・プロダクトとして具体的に実現されてもよいことを認識し得る。従って、本発明の各態様又は各態様の可能な実現方式は、ハードウェアのみの実施例、ソフトウェアのみの実施例(ファームウェア、常駐ソフトウェア等を含む)、又はソフトウェアとハードウェアとの組み合わせの実施例の形式を使用してもよい。これらは、ここでは一律に「回路」、「モジュール」又は「システム」と呼ばれる。更に、本発明の各態様又は各態様の可能な実現方式は、コンピュータ・プログラム・プロダクトの形式になってもよい。コンピュータ・プログラム・プロダクトは、コンピュータ読み取り可能な媒体に記憶されたコンピュータ読み取り可能なプログラムコードを示す。
コンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な信号媒体又はコンピュータ読み取り可能な記憶媒体でもよい。コンピュータ読み取り可能な記憶媒体は、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROM又はフラッシュメモリ)、光ファイバ及びコンパクトディスク読み取り専用メモリ(CD-ROM)のような、電子、磁気、光学、電磁気、赤外線若しくは半導体システム、デバイス若しくは装置、又はこれらのいずれか適切な組み合わせを含み、これらに限定されない。
コンピュータのプロセッサは、コンピュータ読み取り可能な媒体に記憶されたコンピュータ読み取り可能なプログラムコードを読み取り、これにより、プロセッサは、フローチャートの各ステップ又はステップの組み合わせで指定された機能及び動作を実行することができ、ブロック図の各ブロック又はブロックの組み合わせで指定された機能及び動作を実現するように装置が生成される。
全てのコンピュータ読み取り可能なプログラムコードは、ユーザコンピュータで実行されてもよく、いくつかがスタンドアローンのソフトウェアパッケージとしてユーザコンピュータで実行されてもよく、いくつかがリモートコンピュータで実行されつつ、いくつかがユーザのコンピュータで実行されてもよい。或いは、全てのコードがリモートコンピュータ又はサーバで実行されてもよい。また、或る別の実現対策では、フローチャートの各ステップ又はブロック図の各ブロックで指定された機能は、図示の順序で行われなくてもよい点に留意すべきである。例えば、関与する機能に依存する図面における2つの連続するステップ又は2つのブロックは、実際に実質的に同時に実行されてもよく、これらのブロックは場合によって逆の順序で実行されてもよい。
当業者は、この明細書に開示された実施例に記載の例と組み合わせて、ユニット及びアルゴリズムのステップが電子ハードウェア又はコンピュータソフトウェアと電子ハードウェアとの組み合わせにより実現されてもよいことを認識し得る。機能がハードウェアにより実行されるかソフトウェアにより実行されるかは、技術的対策の特定の用途及び設計上の制約条件に依存する。当業者は、特定の用途毎に記載の機能を実現するために異なる方法を使用してもよいが、この実現は、本発明の範囲を超えるものとして考えられるべきではない。
前述の説明は、本発明の単に特定の実現方式に過ぎず、本発明の保護範囲を限定することを意図するものではない。本発明に開示された技術的範囲内で当業者により容易に把握される如何なる変更又は置換も、本発明の保護範囲内に入るものとする。従って、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。

Claims (14)

  1. プライマリコントローラとフラッシュチップとを有するフラッシュメモリ装置であり、前記フラッシュチップは複数のblockを有するフラッシュメモリ装置であって、
    前記プライマリコントローラは、
    第1のターゲットデータを受信し、
    前記複数のblockの中の第1のblockの有効容量が前記第1のターゲットデータのサイズ未満である場合、前記第1のターゲットデータを前記第1のターゲットデータの第1の部分と前記第1のターゲットデータの第2の部分とに分割し、前記第1のターゲットデータの前記第1の部分のサイズは、前記第1のblockの前記有効容量であり、前記第1のターゲットデータの前記第2の部分のサイズは、前記第1のターゲットデータの前記サイズから前記第1のターゲットデータの前記第1の部分の前記サイズを減算したものであり、
    データフラグに従って前記複数のblockの中の第2のblockを決定し、前記第2のblockは、データによって書き込まれているがデータで満たされていないblockであり、前記第2のblockは、前記データフラグを有し、前記データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、
    前記第1のターゲットデータの前記第1の部分を前記第1のblockに書き込み、
    前記第1のターゲットデータの前記第2の部分を前記第2のblockに書き込むように構成されるフラッシュメモリ装置。
  2. 前記プライマリコントローラは、
    第2のターゲットデータを受信し、
    前記複数のblockの中の第3のblockの有効容量が前記第2のターゲットデータのサイズ未満である場合、前記第2のターゲットデータを前記第2のターゲットデータの第1の部分と前記第2のターゲットデータの第2の部分とに分割し、前記第2のターゲットデータの前記第1の部分のサイズは、前記第3のblockの前記有効容量であり、前記第2のターゲットデータの前記第2の部分のサイズは、前記第2のターゲットデータの前記サイズから前記第2のターゲットデータの前記第1の部分の前記サイズを減算したものであり、
    前記第2のターゲットデータの前記第1の部分を前記第3のblockに書き込み、前記第2のターゲットデータの前記第2の部分を前記第2のblockに書き込み、
    前記データフラグを前記第2のblockに追加するように更に構成される、請求項に記載のフラッシュメモリ装置。
  3. プライマリコントローラとフラッシュチップとを有するフラッシュメモリ装置であり、前記フラッシュチップは複数のblockを有するフラッシュメモリ装置であって、
    前記プライマリコントローラは、
    第1のターゲットデータを受信し、
    前記複数のblockの中の第1のblockの有効容量が前記第1のターゲットデータのサイズ未満である場合、前記第1のターゲットデータを前記第1のターゲットデータの第1の部分と前記第1のターゲットデータの第2の部分とに分割し、前記第1のターゲットデータの前記第1の部分のサイズは、前記第1のblockの前記有効容量であり、前記第1のターゲットデータの前記第2の部分のサイズは、前記第1のターゲットデータの前記サイズから前記第1のターゲットデータの前記第1の部分の前記サイズを減算したものであり、
    前記複数のblockの中の第2のblockを決定し、前記第2のblockは、データによって書き込まれているがデータで満たされていないblockであり、前記第2のblockは、初期化中に前記フラッシュメモリ装置により設定され、オーバーフローデータを記憶するために使用され、
    前記第1のターゲットデータの前記第1の部分を前記第1のblockに書き込み、
    前記第1のターゲットデータの前記第2の部分を前記第2のblockに書き込むように構成されるフラッシュメモリ装置。
  4. プライマリコントローラとフラッシュチップとを有するフラッシュメモリ装置であり、前記フラッシュチップは複数のblockを有するフラッシュメモリ装置であって、
    前記プライマリコントローラは、
    第1のターゲットデータを受信し、前記第1のターゲットデータを前記複数のblockの中の第1のblockに書き込み、
    前記第1のblockがデータで満たされた場合、前記第1のblockに書き込まれていない前記第1のターゲットデータ内のデータを取得し、前記第1のblockの有効容量は、前記第1のターゲットデータのサイズ未満であり、
    データフラグに従って前記複数のblockの中の第2のblockを決定し、前記第2のblockは、データによって書き込まれているがデータで満たされていないblockであり、前記第2のblockは、前記データフラグを有し、前記データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用され、
    前記第1のblockに書き込まれていない前記第1のターゲットデータ内の前記データを前記第2のblockに書き込むように構成されるフラッシュメモリ装置。
  5. 前記プライマリコントローラは、
    第2のターゲットデータを受信し、前記第2のターゲットデータを前記複数のblockの中の第3のblockに書き込み、
    前記第3のblockがデータで満たされた場合、前記第3のblockに書き込まれていない前記第2のターゲットデータ内のデータを取得し、前記第3のblockの有効容量は、前記第2のターゲットデータのサイズ未満であり、
    前記第3のblockに書き込まれていない前記第2のターゲットデータ内の前記データを前記第2のblockに書き込み、
    前記データフラグを前記第2のblockに追加するように更に構成される、請求項に記載のフラッシュメモリ装置。
  6. プライマリコントローラとフラッシュチップとを有するフラッシュメモリ装置であり、前記フラッシュチップは複数のblockを有するフラッシュメモリ装置であって、
    前記プライマリコントローラは、
    第1のターゲットデータを受信し、前記第1のターゲットデータを前記複数のblockの中の第1のblockに書き込み、
    前記第1のblockがデータで満たされた場合、前記第1のblockに書き込まれていない前記第1のターゲットデータ内のデータを取得し、前記第1のblockの有効容量は、前記第1のターゲットデータのサイズ未満であり、
    前記複数のblockの中の第2のblockを決定し、前記第2のblockは、データによって書き込まれているがデータで満たされていないblockであり、前記第2のblockは、初期化中に前記フラッシュメモリ装置により設定され、オーバーフローデータを記憶するために使用され、
    前記第1のblockに書き込まれていない前記第1のターゲットデータ内の前記データを前記第2のblockに書き込むように構成されるフラッシュメモリ装置。
  7. データをフラッシュメモリ装置に書き込む方法であり、前記フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを有し、前記フラッシュチップは複数のblockを有する方法であって、
    前記プライマリコントローラにより、第1のターゲットデータを受信するステップと、
    前記複数のblockの中の第1のblockの有効容量が前記第1のターゲットデータのサイズ未満である場合、前記第1のターゲットデータを前記第1のターゲットデータの第1の部分と前記第1のターゲットデータの第2の部分とに分割するステップであり、前記第1のターゲットデータの前記第1の部分のサイズは、前記第1のblockの前記有効容量であり、前記第1のターゲットデータの前記第2の部分のサイズは、前記第1のターゲットデータの前記サイズから前記第1のターゲットデータの前記第1の部分の前記サイズを減算したものであるステップと、
    前記プライマリコントローラにより、データフラグに従って前記複数のblockの中の第2のblockを決定するステップであり、前記第2のblockは、データによって書き込まれているがデータで満たされていないblockであり、前記第2のblockは、前記データフラグを有し、前記データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用されるステップと、
    前記プライマリコントローラにより、前記第1のターゲットデータの前記第1の部分を前記第1のblockに書き込み、前記第1のターゲットデータの前記第2の部分を前記第2のblockに書き込むステップと
    を有する方法。
  8. 前記プライマリコントローラにより、第2のターゲットデータを受信するステップと、
    前記複数のblockの中の第3のblockの有効容量が前記第2のターゲットデータのサイズ未満である場合、前記第2のターゲットデータを前記第2のターゲットデータの第1の部分と前記第2のターゲットデータの第2の部分とに分割するステップであり、前記第2のターゲットデータの前記第1の部分のサイズは、前記第3のblockの前記有効容量であり、前記第2のターゲットデータの前記第2の部分のサイズは、前記第2のターゲットデータの前記サイズから前記第2のターゲットデータの前記第1の部分の前記サイズを減算したものであるステップと、
    前記プライマリコントローラにより、前記第2のターゲットデータの前記第1の部分を前記第3のblockに書き込み、前記第2のターゲットデータの前記第2の部分を前記第2のblockに書き込むステップと、
    前記プライマリコントローラにより、前記データフラグを前記第2のblockに追加するステップと
    を更に有する、請求項に記載の方法。
  9. データをフラッシュメモリ装置に書き込む方法であり、前記フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを有し、前記フラッシュチップは複数のblockを有する方法であって、
    前記プライマリコントローラにより、第1のターゲットデータを受信するステップと、
    前記複数のblockの中の第1のblockの有効容量が前記第1のターゲットデータのサイズ未満である場合、前記第1のターゲットデータを前記第1のターゲットデータの第1の部分と前記第1のターゲットデータの第2の部分とに分割するステップであり、前記第1のターゲットデータの前記第1の部分のサイズは、前記第1のblockの前記有効容量であり、前記第1のターゲットデータの前記第2の部分のサイズは、前記第1のターゲットデータの前記サイズから前記第1のターゲットデータの前記第1の部分の前記サイズを減算したものであるステップと、
    前記プライマリコントローラにより、前記複数のblockの中の第2のblockを決定するステップであり、前記第2のblockは、データによって書き込まれているがデータで満たされていないblockであり、前記第2のblockは、初期化中に前記フラッシュメモリ装置により設定され、オーバーフローデータを記憶するために使用されるステップと、
    前記プライマリコントローラにより、前記第1のターゲットデータの前記第1の部分を前記第1のblockに書き込み、前記第1のターゲットデータの前記第2の部分を前記第2のblockに書き込むステップと
    を有する方法。
  10. データをフラッシュメモリ装置に書き込む方法であり、前記フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを有し、前記フラッシュチップは複数のblockを有する方法であって、
    前記プライマリコントローラにより、第1のターゲットデータを受信し、前記第1のターゲットデータを前記複数のblockの中の第1のblockに書き込むステップと、
    前記第1のblockがデータで満たされた場合、前記プライマリコントローラにより、前記第1のblockに書き込まれていない前記第1のターゲットデータ内のデータを取得するステップであり、前記第1のblockの有効容量は、前記第1のターゲットデータのサイズ未満であるステップと、
    前記プライマリコントローラにより、データフラグに従って前記複数のblockの中の第2のblockを決定するステップであり、前記第2のblockは、データによって書き込まれているがデータで満たされていないblockであり、前記第2のblockは、前記データフラグを有し、前記データフラグは、データによって書き込まれているがデータで満たされていないblockを識別するために使用されるステップと、
    前記プライマリコントローラにより、前記第1のblockに書き込まれていない前記第1のターゲットデータ内の前記データを前記第2のblockに書き込むステップと
    を有する方法。
  11. 前記プライマリコントローラにより、第2のターゲットデータを受信し、前記第2のターゲットデータを前記複数のblockの中の第3のblockに書き込むステップと、
    前記第3のblockがデータで満たされた場合、前記プライマリコントローラにより、前記第3のblockに書き込まれていない前記第2のターゲットデータ内のデータを取得するステップであり、前記第3のblockの有効容量は、前記第2のターゲットデータのサイズ未満であるステップと、
    前記プライマリコントローラにより、前記第3のblockに書き込まれていない前記第2のターゲットデータ内の前記データを前記第2のblockに書き込むステップと、
    前記プライマリコントローラにより、前記データフラグを前記第2のblockに追加するステップと
    を更に有する、請求項10に記載の方法。
  12. データをフラッシュメモリ装置に書き込む方法であり、前記フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを有し、前記フラッシュチップは複数のblockを有する方法であって、
    前記プライマリコントローラにより、第1のターゲットデータを受信し、前記第1のターゲットデータを前記複数のblockの中の第1のblockに書き込むステップと、
    前記第1のblockがデータで満たされた場合、前記プライマリコントローラにより、前記第1のblockに書き込まれていない前記第1のターゲットデータ内のデータを取得するステップであり、前記第1のblockの有効容量は、前記第1のターゲットデータのサイズ未満であるステップと、
    前記プライマリコントローラにより、前記複数のblockの中の第2のblockを決定するステップであり、前記第2のblockは、データによって書き込まれているがデータで満たされていないblockであり、前記第2のblockは、初期化中に前記フラッシュメモリ装置により設定され、オーバーフローデータを記憶するために使用されるステップと、
    前記プライマリコントローラにより、前記第1のblockに書き込まれていない前記第1のターゲットデータ内の前記データを前記第2のblockに書き込むステップと
    を有する方法。
  13. 請求項1又は2に記載のフラッシュメモリ装置及びコントローラを有する記憶システムであって、
    前記コントローラは、第1のターゲットデータを前記フラッシュメモリ装置に送信するように構成される記憶システム。
  14. 請求項4又は5に記載のフラッシュメモリ装置及びコントローラを有する記憶システムであって、
    前記コントローラは、第1のターゲットデータを前記フラッシュメモリ装置に送信するように構成される記憶システム。
JP2016528320A 2014-06-27 2014-06-27 データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システム Active JP6130971B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/080998 WO2015196470A1 (zh) 2014-06-27 2014-06-27 一种将数据写入闪存装置的方法、闪存装置和存储系统

Publications (2)

Publication Number Publication Date
JP2016524770A JP2016524770A (ja) 2016-08-18
JP6130971B2 true JP6130971B2 (ja) 2017-05-17

Family

ID=54936527

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016528320A Active JP6130971B2 (ja) 2014-06-27 2014-06-27 データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システム

Country Status (7)

Country Link
US (1) US10203899B2 (ja)
EP (1) EP3196767B1 (ja)
JP (1) JP6130971B2 (ja)
KR (1) KR101730151B1 (ja)
CN (1) CN105745628B (ja)
CA (1) CA2896369C (ja)
WO (1) WO2015196470A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109154917B (zh) * 2016-12-29 2020-09-29 华为技术有限公司 存储系统和固态硬盘
TWI726475B (zh) * 2017-09-22 2021-05-01 慧榮科技股份有限公司 快閃記憶體的資料內部搬移方法以及使用該方法的裝置
CN114546293A (zh) 2017-09-22 2022-05-27 慧荣科技股份有限公司 快闪存储器的数据内部搬移方法以及使用该方法的装置
CN109189337B (zh) * 2018-08-21 2021-12-17 浪潮电子信息产业股份有限公司 一种选择数据块的方法、装置、设备及可读存储介质
CN110069215B (zh) * 2019-03-27 2022-11-04 浙江宇视科技有限公司 一种基于块存储的动态调整存储单元的方法及装置
CN113296681A (zh) * 2020-02-24 2021-08-24 合肥杰发科技有限公司 存储空间的管理方法、终端及具有存储功能的装置
US12026393B2 (en) 2020-12-17 2024-07-02 Electronics And Telecommunications Research Institute Apparatus and method for selecting storage location based on data usage
CN114546296B (zh) * 2022-04-25 2022-07-01 武汉麓谷科技有限公司 一种基于zns固态硬盘的全闪存系统和地址映射方法
CN116719485B (zh) * 2023-08-09 2023-11-03 苏州浪潮智能科技有限公司 基于fpga的数据读写方法及读写单元与fpga

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319645A (ja) 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
JP4856400B2 (ja) * 2005-07-06 2012-01-18 ルネサスエレクトロニクス株式会社 記憶装置及び情報処理端末
WO2008013228A1 (fr) * 2006-07-26 2008-01-31 Panasonic Corporation Contrôleur de mémoire, dispositif de stockage non-volatile, dispositif d'accès et système de stockage non-volatile
KR100849221B1 (ko) * 2006-10-19 2008-07-31 삼성전자주식회사 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
TW200837551A (en) * 2007-03-02 2008-09-16 A Data Technology Co Ltd Storage device capable of cooperating to adjust reliability, method for establishing and input data thereof
CN101271429A (zh) * 2007-03-23 2008-09-24 华为技术有限公司 一种数据存储方法及装置
US7962683B2 (en) * 2007-08-15 2011-06-14 Silicon Motion, Inc. Flash memory, and method for operating a flash memory
CN101464834B (zh) * 2007-12-19 2011-01-26 群联电子股份有限公司 闪存数据写入方法及使用此方法的控制器
US20090259806A1 (en) * 2008-04-15 2009-10-15 Adtron, Inc. Flash management using bad page tracking and high defect flash memory
CN101320594B (zh) 2008-05-21 2012-02-29 深圳市硅格半导体有限公司 一种闪存芯片的物理操作方法
TWI390548B (zh) 2008-07-03 2013-03-21 Silicon Motion Inc 資料儲存方法及其儲存裝置
US8438325B2 (en) * 2008-10-09 2013-05-07 Cadence Design Systems, Inc. Method and apparatus for improving small write performance in a non-volatile memory
CN101727293B (zh) 2008-10-23 2012-05-23 成都市华为赛门铁克科技有限公司 一种固态硬盘ssd存储的设置方法、装置和系统
US20100146239A1 (en) * 2008-12-08 2010-06-10 Infinite Memories Ltd. Continuous address space in non-volatile-memories (nvm) using efficient embedded management of array deficiencies
US20100235605A1 (en) * 2009-02-13 2010-09-16 Nir Perry Enhancement of storage life expectancy by bad block management
JP2011123830A (ja) * 2009-12-14 2011-06-23 Toshiba Corp データ書き込み装置及びデータ書き込み方法
TWI413897B (zh) * 2010-01-20 2013-11-01 Silicon Motion Inc 快閃記憶體之資料存取方法以及快閃記憶體裝置
JP5319723B2 (ja) * 2011-03-24 2013-10-16 株式会社東芝 メモリシステムおよびプログラム
JP2013068993A (ja) * 2011-09-20 2013-04-18 Toshiba Corp メモリコントローラ
JP5547154B2 (ja) * 2011-09-21 2014-07-09 株式会社東芝 メモリ・デバイス
CN102622306B (zh) 2012-02-21 2014-11-26 中颖电子股份有限公司 存储装置的坏块管理方法
TWI605458B (zh) 2012-04-25 2017-11-11 Sony Corp Non-volatile memory devices, non-volatile memory control devices, and non-volatile memory control methods
CN103383690B (zh) * 2012-05-04 2016-04-13 深圳市腾讯计算机系统有限公司 分布式数据存储方法及系统
JP6219560B2 (ja) * 2012-09-21 2017-10-25 株式会社フィックスターズ 情報処理装置、情報処理方法、およびプログラム
CN103106125B (zh) 2013-01-04 2016-09-28 国网山东省电力公司胶州市供电公司 基于存储块修复的闪存存储方法

Also Published As

Publication number Publication date
EP3196767A4 (en) 2017-08-16
EP3196767A1 (en) 2017-07-26
WO2015196470A1 (zh) 2015-12-30
EP3196767B1 (en) 2020-08-05
CN105745628B (zh) 2017-09-05
JP2016524770A (ja) 2016-08-18
CA2896369C (en) 2017-08-15
US20160110107A1 (en) 2016-04-21
CA2896369A1 (en) 2015-12-27
CN105745628A (zh) 2016-07-06
US10203899B2 (en) 2019-02-12
KR101730151B1 (ko) 2017-04-25
KR20160016744A (ko) 2016-02-15

Similar Documents

Publication Publication Date Title
JP6130971B2 (ja) データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システム
JP6018725B2 (ja) コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法
US10747666B2 (en) Memory system
RU2661280C2 (ru) Контроллер массива, твердотельный диск и способ для управления твердотельным диском для записи данных
US10102118B2 (en) Memory system and non-transitory computer readable recording medium
JP6455900B2 (ja) ストレージシステムおよびシステムガベージコレクション方法
JP6147933B2 (ja) コントローラ、フラッシュメモリ装置、データブロック安定性を識別する方法、及びデータをフラッシュメモリ装置に記憶する方法
CN105917303B (zh) 一种控制器、识别数据块稳定性的方法和存储系统
US11449244B2 (en) Method and apparatus for performing access management of memory device in host performance booster architecture with aid of device side table information
US20230281118A1 (en) Memory system and non-transitory computer readable recording medium
CN113515469A (zh) 创建、删除命名空间的方法与存储设备
TW201624490A (zh) 記憶體裝置及非暫態電腦可讀取記錄媒體
EP3819771B1 (en) Data processing method and device, apparatus, and system
TW201624491A (zh) 資訊處理裝置及非暫態電腦可讀取記錄媒體
TW201624288A (zh) 快取記憶體裝置及非暫態電腦可讀取記錄媒體
KR102275706B1 (ko) 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
CN108073362B (zh) 一种延长PairBlock使用寿命的方法及装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151013

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151013

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161018

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170118

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170414

R150 Certificate of patent or registration of utility model

Ref document number: 6130971

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250