JP6018725B2 - コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法 - Google Patents

コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法 Download PDF

Info

Publication number
JP6018725B2
JP6018725B2 JP2016528319A JP2016528319A JP6018725B2 JP 6018725 B2 JP6018725 B2 JP 6018725B2 JP 2016528319 A JP2016528319 A JP 2016528319A JP 2016528319 A JP2016528319 A JP 2016528319A JP 6018725 B2 JP6018725 B2 JP 6018725B2
Authority
JP
Japan
Prior art keywords
block
capacity
controller
data
memory device
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
JP2016528319A
Other languages
English (en)
Other versions
JP2016524769A (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 JP2016524769A publication Critical patent/JP2016524769A/ja
Application granted granted Critical
Publication of JP6018725B2 publication Critical patent/JP6018725B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/88Masking faults in memories by using spares or by reconfiguring with partially good memories
    • G11C29/883Masking faults in memories by using spares or by reconfiguring with partially good memories using a single defective memory device with reduced capacity, e.g. half capacity

Description

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

Claims (24)

  1. 記憶システムに適用されるコントローラであり、前記記憶システムは、前記コントローラとフラッシュメモリ装置とを有し、前記フラッシュメモリ装置はフラッシュチップを有し、前記フラッシュチップはブロックを有し、前記ブロックは複数のページを有し、前記複数のページのうち少なくとも1つは損傷ページであるコントローラであって、
    前記コントローラは、通信インタフェースとプロセッサとを有し、
    前記通信インタフェースは、前記フラッシュメモリ装置と通信するように構成され、
    前記プロセッサは、
    前記フラッシュメモリ装置により送信された前記ブロックの容量情報を受信し、
    前記ブロックの前記容量情報に従って前記ブロックの有効容量を取得し、前記ブロックの前記有効容量は、前記損傷ページの容量を有さず、
    ターゲットデータを読み取り、前記ターゲットデータのサイズは、前記ブロックの前記有効容量であり、
    前記ターゲットデータを前記フラッシュメモリ装置に送信するように構成されるコントローラ。
  2. 前記ブロックの前記容量情報は、前記損傷ページについての情報を有し、前記損傷ページについての前記情報は、前記損傷ページの前記容量を示すために使用され、前記プロセッサは、前記ブロックの予め記憶された標準容量と前記損傷ページの前記容量とに従って前記ブロックの前記有効容量を取得するように構成され、前記ブロックの前記有効容量は、前記ブロックの前記標準容量から前記損傷ページの前記容量を減算したものである、請求項1に記載のコントローラ。
  3. 前記ブロックの前記容量情報は、前記ブロックの前記有効容量を有する、請求項1に記載のコントローラ。
  4. 前記ブロックの前記容量情報は、前記ブロックの容量フラグを有し、前記コントローラは、メモリを更に有し、前記ブロックの前記容量フラグと前記ブロックの前記有効容量との間の対応関係は、前記メモリに記憶され、
    前記プロセッサは、前記ブロックの前記容量フラグと、前記ブロックの前記容量フラグと前記ブロックの前記有効容量との間の前記対応関係とに従って、前記ブロックの前記有効容量を取得するように構成される、請求項1に記載のコントローラ。
  5. 前記コントローラは、キャッシュを更に有し、前記ターゲットデータは、前記キャッシュに記憶された書き込まれるべきデータであり、
    前記プロセッサは、複数の書き込みデータ要求を受信し、前記書き込まれるべきデータを前記キャッシュに書き込むように更に構成され、前記複数の書き込みデータ要求は、前記書き込まれるべきデータを搬送し、
    前記プロセッサは、前記複数の書き込みデータ要求で搬送された前記書き込まれるべきデータのサイズが前記ブロックの前記有効容量に等しいことを決定するように更に構成される、請求項1ないし4のうちいずれか1項に記載のコントローラ。
  6. 前記コントローラは、キャッシュを更に有し、前記ターゲットデータは、前記キャッシュに記憶された書き込まれるべきデータの一部であり、
    前記プロセッサは、複数の書き込みデータ要求を受信し、前記書き込まれるべきデータを前記キャッシュに書き込むように更に構成され、前記複数の書き込みデータ要求は、前記書き込まれるべきデータを搬送し、
    前記プロセッサは、前記書き込まれるべきデータのサイズが前記ブロックの前記有効容量より大きいことを決定するように更に構成される、請求項1ないし4のうちいずれか1項に記載のコントローラ。
  7. プライマリコントローラとフラッシュチップとを有するフラッシュメモリ装置であり、前記フラッシュチップはブロックを有し、前記ブロックは複数のページを有し、前記複数のページのうち少なくとも1つは損傷ページであるフラッシュメモリ装置であって、
    前記フラッシュチップは、ターゲットデータを記憶するように構成され、
    前記プライマリコントローラは、
    前記ブロックの容量情報についての統計を収集し、前記ブロックの前記容量情報は、前記ブロックの有効容量を取得するために使用され、前記ブロックの前記有効容量は、前記損傷ページの容量を有さず、
    前記ブロックの前記容量情報をコントローラに送信し、
    前記コントローラにより送信された前記ターゲットデータを受信し、前記ターゲットデータのサイズは、前記ブロックの前記有効容量であり、
    前記ターゲットデータを前記ブロックに書き込むように構成されるフラッシュメモリ装置。
  8. 前記プライマリコントローラは、前記コントローラにより送信された問い合わせコマンドを受信するように更に構成され、前記問い合わせコマンドは、前記ブロックの前記容量情報を問い合わせるために使用される、請求項7に記載のフラッシュメモリ装置。
  9. 前記プライマリコントローラは、前記ブロックの前記容量情報を前記コントローラに周期的に送信するように構成される、請求項7に記載のフラッシュメモリ装置。
  10. 前記ブロックの前記容量情報をコントローラに送信する前に、前記プライマリコントローラは、前記ブロックの前記容量情報が前の統計の収集を通じて取得された前記ブロックの容量情報と異なることを決定するように更に構成される、請求項7に記載のフラッシュメモリ装置。
  11. 前記ブロックの前記容量情報は、前記損傷ページについての情報を有し、前記損傷ページについての情報は、前記損傷ページの前記容量を示すために使用される、請求項7ないし10のうちいずれか1項に記載のフラッシュメモリ装置。
  12. 前記ブロックの前記容量情報は、前記ブロックの前記有効容量を有する、請求項7ないし10のうちいずれか1項に記載のフラッシュメモリ装置。
  13. データをフラッシュメモリ装置に書き込む方法であり、前記方法は、記憶システムに適用され、前記記憶システムは、コントローラと前記フラッシュメモリ装置とを有し、前記フラッシュメモリ装置はフラッシュチップを有し、前記フラッシュチップはブロックを有し、前記ブロックは複数のページを有し、前記複数のページのうち少なくとも1つは損傷ページである方法であって、
    前記コントローラにより、前記フラッシュメモリ装置により送信された前記ブロックの容量情報を受信するステップと、
    前記コントローラにより、前記ブロックの前記容量情報に従って前記ブロックの有効容量を取得するステップであり、前記ブロックの前記有効容量は、前記損傷ページの容量を有さないステップと、
    前記コントローラにより、ターゲットデータを読み取るステップであり、前記ターゲットデータのサイズは、前記ブロックの前記有効容量であるステップと、
    前記コントローラにより、前記ターゲットデータを前記フラッシュメモリ装置に送信するステップと
    を有する方法。
  14. 前記ブロックの前記容量情報は、前記損傷ページについての情報を有し、前記損傷ページについての前記情報は、前記損傷ページの前記容量を示すために使用され、
    前記コントローラにより、前記ブロックの前記容量情報に従って前記ブロックの有効容量を取得するステップは、
    前記コントローラにより、前記ブロックの予め記憶された標準容量と前記損傷ページの前記容量とに従って前記ブロックの前記有効容量を取得するステップを有し、前記ブロックの前記有効容量は、前記ブロックの前記標準容量から前記損傷ページの前記容量を減算したものである、請求項13に記載の方法。
  15. 前記ブロックの前記容量情報は、前記ブロックの前記有効容量を有する、請求項13に記載の方法。
  16. 前記ブロックの前記容量情報は、前記ブロックの容量フラグを有し、前記コントローラは、メモリを更に有し、前記ブロックの前記容量フラグと前記ブロックの前記有効容量との間の対応関係は、前記メモリに記憶され、
    前記コントローラにより、前記ブロックの前記容量情報に従って前記ブロックの有効容量を取得するステップは、
    前記コントローラにより、前記ブロックの前記容量フラグと、前記ブロックの前記容量フラグと前記ブロックの前記有効容量との間の対応関係とに従って、前記ブロックの前記有効容量を取得するステップを有する、請求項13に記載の方法。
  17. 前記コントローラは、プロセッサとキャッシュとを有し、前記ターゲットデータは、前記キャッシュに記憶された書き込まれるべきデータであり、
    前記方法は、
    前記プロセッサにより、複数の書き込みデータ要求を受信し、前記書き込まれるべきデータを前記キャッシュに書き込むステップであり、前記複数の書き込みデータ要求は、前記書き込まれるべきデータを搬送するステップと、
    前記プロセッサにより、前記複数の書き込みデータ要求で搬送された前記書き込まれるべきデータのサイズが前記ブロックの前記有効容量に等しいことを決定するステップと
    を更に有する、請求項13ないし16のうちいずれか1項に記載の方法。
  18. 前記コントローラは、プロセッサとキャッシュとを有し、前記ターゲットデータは、前記キャッシュに記憶された書き込まれるべきデータの一部であり、
    前記方法は、
    前記プロセッサにより、複数の書き込みデータ要求を受信し、前記書き込まれるべきデータを前記キャッシュに書き込むステップであり、前記複数の書き込みデータ要求は、前記書き込まれるべきデータを搬送するステップと、
    前記プロセッサにより、前記書き込まれるべきデータのサイズが前記ブロックの前記有効容量より大きいことを決定するステップと
    を更に有する、請求項13ないし16のうちいずれか1項に記載の方法。
  19. データをフラッシュメモリ装置に書き込む方法であり、前記フラッシュメモリ装置は、プライマリコントローラとフラッシュチップとを有し、前記フラッシュチップはブロックを有し、前記ブロックは複数のページを有し、前記複数のページのうち少なくとも1つは損傷ページである方法であって、
    前記プライマリコントローラにより、前記ブロックの容量情報についての統計を収集するステップであり、前記ブロックの前記容量情報は、前記ブロックの有効容量を取得するために使用され、前記ブロックの前記有効容量は、前記損傷ページの容量を有さないステップと、
    前記プライマリコントローラにより、前記ブロックの前記容量情報をコントローラに送信するステップと、
    前記プライマリコントローラにより、前記コントローラにより送信されたターゲットデータを受信するステップであり、前記ターゲットデータのサイズは、前記ブロックの前記有効容量であるステップと、
    前記プライマリコントローラにより、前記ターゲットデータを前記ブロックに書き込むステップと
    を有する方法。
  20. 前記プライマリコントローラにより、前記コントローラにより送信された問い合わせコマンドを受信するステップを更に有し、前記問い合わせコマンドは、前記ブロックの前記容量情報を問い合わせるために使用される、請求項19に記載の方法。
  21. 前記プライマリコントローラにより、前記ブロックの前記容量情報をコントローラに送信するステップは、
    前記プライマリコントローラにより、前記ブロックの前記容量情報を前記コントローラに周期的に送信するステップを有する、請求項19に記載の方法。
  22. 前記プライマリコントローラにより、前記ブロックの前記容量情報をコントローラに送信する前に、前記プライマリコントローラにより、前記ブロックの前記容量情報が前の統計の収集を通じて取得された前記ブロックの容量情報と異なることを決定するステップを更に有する、請求項19に記載の方法。
  23. 前記ブロックの前記容量情報は、前記損傷ページについての情報を有し、前記損傷ページについての前記情報は、前記損傷ページの前記容量を示すために使用される、請求項19ないし22のうちいずれか1項に記載の方法。
  24. 前記ブロックの前記容量情報は、前記ブロックの前記有効容量を有する、請求項19ないし22のうちいずれか1項に記載の方法。
JP2016528319A 2014-06-27 2014-06-27 コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法 Active JP6018725B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/080984 WO2015196464A1 (zh) 2014-06-27 2014-06-27 一种控制器、闪存装置和将数据写入闪存装置的方法

Publications (2)

Publication Number Publication Date
JP2016524769A JP2016524769A (ja) 2016-08-18
JP6018725B2 true JP6018725B2 (ja) 2016-11-02

Family

ID=54930651

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016528319A Active JP6018725B2 (ja) 2014-06-27 2014-06-27 コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法

Country Status (9)

Country Link
US (1) US20150378888A1 (ja)
EP (2) EP3260985B1 (ja)
JP (1) JP6018725B2 (ja)
KR (1) KR101677474B1 (ja)
CN (1) CN105830166B (ja)
CA (1) CA2894936C (ja)
ES (1) ES2642218T3 (ja)
NO (1) NO2988221T3 (ja)
WO (1) WO2015196464A1 (ja)

Families Citing this family (204)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11630585B1 (en) 2016-08-25 2023-04-18 Pure Storage, Inc. Processing evacuation events in a storage array that includes a plurality of storage devices
US11102298B1 (en) 2015-05-26 2021-08-24 Pure Storage, Inc. Locally providing cloud storage services for fleet management
US9716755B2 (en) 2015-05-26 2017-07-25 Pure Storage, Inc. Providing cloud storage array services by a local storage array in a data center
US9594678B1 (en) 2015-05-27 2017-03-14 Pure Storage, Inc. Preventing duplicate entries of identical data in a storage device
US11503031B1 (en) 2015-05-29 2022-11-15 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US9300660B1 (en) 2015-05-29 2016-03-29 Pure Storage, Inc. Providing authorization and authentication in a cloud for a user of a storage array
US10021170B2 (en) 2015-05-29 2018-07-10 Pure Storage, Inc. Managing a storage array using client-side services
US9444822B1 (en) 2015-05-29 2016-09-13 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US9588691B2 (en) 2015-06-10 2017-03-07 Pure Storage, Inc. Dynamically managing control information in a storage device
US9594512B1 (en) 2015-06-19 2017-03-14 Pure Storage, Inc. Attributing consumed storage capacity among entities storing data in a storage array
US10310740B2 (en) 2015-06-23 2019-06-04 Pure Storage, Inc. Aligning memory access operations to a geometry of a storage device
US9547441B1 (en) 2015-06-23 2017-01-17 Pure Storage, Inc. Exposing a geometry of a storage device
US10296236B2 (en) 2015-07-01 2019-05-21 Pure Storage, Inc. Offloading device management responsibilities from a storage device in an array of storage devices
US9892071B2 (en) 2015-08-03 2018-02-13 Pure Storage, Inc. Emulating a remote direct memory access (‘RDMA’) link between controllers in a storage array
US9851762B1 (en) 2015-08-06 2017-12-26 Pure Storage, Inc. Compliant printed circuit board (‘PCB’) within an enclosure
US10198194B2 (en) 2015-08-24 2019-02-05 Pure Storage, Inc. Placing data within a storage device of a flash array
US11294588B1 (en) 2015-08-24 2022-04-05 Pure Storage, Inc. Placing data within a storage device
US11625181B1 (en) 2015-08-24 2023-04-11 Pure Storage, Inc. Data tiering using snapshots
US11360844B1 (en) 2015-10-23 2022-06-14 Pure Storage, Inc. Recovery of a container storage provider
US10514978B1 (en) 2015-10-23 2019-12-24 Pure Storage, Inc. Automatic deployment of corrective measures for storage arrays
US9384082B1 (en) 2015-10-23 2016-07-05 Pure Storage, Inc. Proactively providing corrective measures for storage arrays
US10284232B2 (en) 2015-10-28 2019-05-07 Pure Storage, Inc. Dynamic error processing in a storage device
US9740414B2 (en) 2015-10-29 2017-08-22 Pure Storage, Inc. Optimizing copy operations
US10374868B2 (en) 2015-10-29 2019-08-06 Pure Storage, Inc. Distributed command processing in a flash storage system
US10353777B2 (en) 2015-10-30 2019-07-16 Pure Storage, Inc. Ensuring crash-safe forward progress of a system configuration update
US9760479B2 (en) 2015-12-02 2017-09-12 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US11762764B1 (en) 2015-12-02 2023-09-19 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
KR102013430B1 (ko) 2015-12-03 2019-08-22 후아웨이 테크놀러지 컴퍼니 리미티드 어레이 컨트롤러, 솔리드 스테이트 디스크, 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법
US10326836B2 (en) 2015-12-08 2019-06-18 Pure Storage, Inc. Partially replicating a snapshot between storage systems
US11616834B2 (en) 2015-12-08 2023-03-28 Pure Storage, Inc. Efficient replication of a dataset to the cloud
US11347697B1 (en) 2015-12-15 2022-05-31 Pure Storage, Inc. Proactively optimizing a storage system
US10162835B2 (en) 2015-12-15 2018-12-25 Pure Storage, Inc. Proactive management of a plurality of storage arrays in a multi-array system
US10346043B2 (en) 2015-12-28 2019-07-09 Pure Storage, Inc. Adaptive computing for data compression
US9886314B2 (en) 2016-01-28 2018-02-06 Pure Storage, Inc. Placing workloads in a multi-array system
US10572460B2 (en) 2016-02-11 2020-02-25 Pure Storage, Inc. Compressing data in dependence upon characteristics of a storage system
US9760297B2 (en) 2016-02-12 2017-09-12 Pure Storage, Inc. Managing input/output (‘I/O’) queues in a data storage system
US9959043B2 (en) 2016-03-16 2018-05-01 Pure Storage, Inc. Performing a non-disruptive upgrade of data in a storage system
US9841921B2 (en) 2016-04-27 2017-12-12 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices
US11809727B1 (en) 2016-04-27 2023-11-07 Pure Storage, Inc. Predicting failures in a storage system that includes a plurality of storage devices
US11112990B1 (en) 2016-04-27 2021-09-07 Pure Storage, Inc. Managing storage device evacuation
US9811264B1 (en) 2016-04-28 2017-11-07 Pure Storage, Inc. Deploying client-specific applications in a storage system utilizing redundant system resources
US10686906B2 (en) * 2016-05-02 2020-06-16 Netapp, Inc. Methods for managing multi-level flash storage and devices thereof
US10303390B1 (en) 2016-05-02 2019-05-28 Pure Storage, Inc. Resolving fingerprint collisions in flash storage system
US11231858B2 (en) 2016-05-19 2022-01-25 Pure Storage, Inc. Dynamically configuring a storage system to facilitate independent scaling of resources
US9507532B1 (en) 2016-05-20 2016-11-29 Pure Storage, Inc. Migrating data in a storage array that includes a plurality of storage devices and a plurality of write buffer devices
US10691567B2 (en) 2016-06-03 2020-06-23 Pure Storage, Inc. Dynamically forming a failure domain in a storage system that includes a plurality of blades
US10452310B1 (en) 2016-07-13 2019-10-22 Pure Storage, Inc. Validating cabling for storage component admission to a storage array
US11706895B2 (en) 2016-07-19 2023-07-18 Pure Storage, Inc. Independent scaling of compute resources and storage resources in a storage system
US10459652B2 (en) 2016-07-27 2019-10-29 Pure Storage, Inc. Evacuating blades in a storage array that includes a plurality of blades
US10474363B1 (en) 2016-07-29 2019-11-12 Pure Storage, Inc. Space reporting in a storage system
US11886922B2 (en) 2016-09-07 2024-01-30 Pure Storage, Inc. Scheduling input/output operations for a storage system
US10146585B2 (en) 2016-09-07 2018-12-04 Pure Storage, Inc. Ensuring the fair utilization of system resources using workload based, time-independent scheduling
US10331588B2 (en) 2016-09-07 2019-06-25 Pure Storage, Inc. Ensuring the appropriate utilization of system resources using weighted workload based, time-independent scheduling
US10671439B1 (en) 2016-09-07 2020-06-02 Pure Storage, Inc. Workload planning with quality-of-service (‘QOS’) integration
US11531577B1 (en) 2016-09-07 2022-12-20 Pure Storage, Inc. Temporarily limiting access to a storage device
US10908966B1 (en) 2016-09-07 2021-02-02 Pure Storage, Inc. Adapting target service times in a storage system
US11481261B1 (en) 2016-09-07 2022-10-25 Pure Storage, Inc. Preventing extended latency in a storage system
US10235229B1 (en) 2016-09-07 2019-03-19 Pure Storage, Inc. Rehabilitating storage devices in a storage array that includes a plurality of storage devices
US11960348B2 (en) 2016-09-07 2024-04-16 Pure Storage, Inc. Cloud-based monitoring of hardware components in a fleet of storage systems
KR20180032728A (ko) 2016-09-22 2018-04-02 삼성전자주식회사 저장 장치, 저장 장치를 포함하는 사용자 장치, 및 사용자 장치의 동작 방법
US10452598B2 (en) * 2016-10-18 2019-10-22 Micron Technology, Inc. Apparatuses and methods for an operating system cache in a solid state device
US10007459B2 (en) 2016-10-20 2018-06-26 Pure Storage, Inc. Performance tuning in a storage system that includes one or more storage devices
US11379132B1 (en) 2016-10-20 2022-07-05 Pure Storage, Inc. Correlating medical sensor data
US11620075B2 (en) 2016-11-22 2023-04-04 Pure Storage, Inc. Providing application aware storage
US10162566B2 (en) 2016-11-22 2018-12-25 Pure Storage, Inc. Accumulating application-level statistics in a storage system
US10198205B1 (en) 2016-12-19 2019-02-05 Pure Storage, Inc. Dynamically adjusting a number of storage devices utilized to simultaneously service write operations
US11461273B1 (en) 2016-12-20 2022-10-04 Pure Storage, Inc. Modifying storage distribution in a storage system that includes one or more storage devices
US10489307B2 (en) 2017-01-05 2019-11-26 Pure Storage, Inc. Periodically re-encrypting user data stored on a storage device
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11340800B1 (en) 2017-01-19 2022-05-24 Pure Storage, Inc. Content masking in a storage system
US10503700B1 (en) 2017-01-19 2019-12-10 Pure Storage, Inc. On-demand content filtering of snapshots within a storage system
US11163624B2 (en) 2017-01-27 2021-11-02 Pure Storage, Inc. Dynamically adjusting an amount of log data generated for a storage system
US11442825B2 (en) 2017-03-10 2022-09-13 Pure Storage, Inc. Establishing a synchronous replication relationship between two or more storage systems
US11089105B1 (en) 2017-12-14 2021-08-10 Pure Storage, Inc. Synchronously replicating datasets in cloud-based storage systems
US11675520B2 (en) 2017-03-10 2023-06-13 Pure Storage, Inc. Application replication among storage systems synchronously replicating a dataset
US10503427B2 (en) 2017-03-10 2019-12-10 Pure Storage, Inc. Synchronously replicating datasets and other managed objects to cloud-based storage systems
US10521344B1 (en) 2017-03-10 2019-12-31 Pure Storage, Inc. Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems
US10454810B1 (en) 2017-03-10 2019-10-22 Pure Storage, Inc. Managing host definitions across a plurality of storage systems
US11169727B1 (en) 2017-03-10 2021-11-09 Pure Storage, Inc. Synchronous replication between storage systems with virtualized storage
US11941279B2 (en) 2017-03-10 2024-03-26 Pure Storage, Inc. Data path virtualization
US11803453B1 (en) 2017-03-10 2023-10-31 Pure Storage, Inc. Using host connectivity states to avoid queuing I/O requests
US10459664B1 (en) 2017-04-10 2019-10-29 Pure Storage, Inc. Virtualized copy-by-reference
US9910618B1 (en) 2017-04-10 2018-03-06 Pure Storage, Inc. Migrating applications executing on a storage system
US11868629B1 (en) 2017-05-05 2024-01-09 Pure Storage, Inc. Storage system sizing service
US10789020B2 (en) 2017-06-12 2020-09-29 Pure Storage, Inc. Recovering data within a unified storage element
US10613791B2 (en) 2017-06-12 2020-04-07 Pure Storage, Inc. Portable snapshot replication between storage systems
US11442669B1 (en) 2018-03-15 2022-09-13 Pure Storage, Inc. Orchestrating a virtual storage system
US11422731B1 (en) 2017-06-12 2022-08-23 Pure Storage, Inc. Metadata-based replication of a dataset
US10853148B1 (en) 2017-06-12 2020-12-01 Pure Storage, Inc. Migrating workloads between a plurality of execution environments
US10552090B2 (en) 2017-09-07 2020-02-04 Pure Storage, Inc. Solid state drives with multiple types of addressable memory
EP3612922A1 (en) 2017-06-12 2020-02-26 Pure Storage, Inc. Accessible fast durable storage integrated into a bulk storage device
US11592991B2 (en) 2017-09-07 2023-02-28 Pure Storage, Inc. Converting raid data between persistent storage types
US10884636B1 (en) 2017-06-12 2021-01-05 Pure Storage, Inc. Presenting workload performance in a storage system
US10417092B2 (en) 2017-09-07 2019-09-17 Pure Storage, Inc. Incremental RAID stripe update parity calculation
US11609718B1 (en) 2017-06-12 2023-03-21 Pure Storage, Inc. Identifying valid data after a storage system recovery
US11340939B1 (en) 2017-06-12 2022-05-24 Pure Storage, Inc. Application-aware analytics for storage systems
US10976962B2 (en) 2018-03-15 2021-04-13 Pure Storage, Inc. Servicing I/O operations in a cloud-based storage system
US11210133B1 (en) 2017-06-12 2021-12-28 Pure Storage, Inc. Workload mobility between disparate execution environments
US11016824B1 (en) 2017-06-12 2021-05-25 Pure Storage, Inc. Event identification with out-of-order reporting in a cloud-based environment
US11561714B1 (en) 2017-07-05 2023-01-24 Pure Storage, Inc. Storage efficiency driven migration
US11477280B1 (en) 2017-07-26 2022-10-18 Pure Storage, Inc. Integrating cloud storage services
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
JP6785205B2 (ja) * 2017-09-21 2020-11-18 キオクシア株式会社 メモリシステムおよび制御方法
US11494692B1 (en) 2018-03-26 2022-11-08 Pure Storage, Inc. Hyperscale artificial intelligence and machine learning infrastructure
US10452444B1 (en) 2017-10-19 2019-10-22 Pure Storage, Inc. Storage system with compute resources and shared storage resources
US11455168B1 (en) 2017-10-19 2022-09-27 Pure Storage, Inc. Batch building for deep learning training workloads
US10671435B1 (en) 2017-10-19 2020-06-02 Pure Storage, Inc. Data transformation caching in an artificial intelligence infrastructure
US11861423B1 (en) 2017-10-19 2024-01-02 Pure Storage, Inc. Accelerating artificial intelligence (‘AI’) workflows
US10360214B2 (en) 2017-10-19 2019-07-23 Pure Storage, Inc. Ensuring reproducibility in an artificial intelligence infrastructure
JP6982468B2 (ja) * 2017-10-27 2021-12-17 キオクシア株式会社 メモリシステムおよび制御方法
US10484174B1 (en) 2017-11-01 2019-11-19 Pure Storage, Inc. Protecting an encryption key for data stored in a storage system that includes a plurality of storage devices
US10671494B1 (en) 2017-11-01 2020-06-02 Pure Storage, Inc. Consistent selection of replicated datasets during storage system recovery
US10817392B1 (en) 2017-11-01 2020-10-27 Pure Storage, Inc. Ensuring resiliency to storage device failures in a storage system that includes a plurality of storage devices
US10467107B1 (en) 2017-11-01 2019-11-05 Pure Storage, Inc. Maintaining metadata resiliency among storage device failures
KR102353859B1 (ko) * 2017-11-01 2022-01-19 삼성전자주식회사 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈
US10509581B1 (en) 2017-11-01 2019-12-17 Pure Storage, Inc. Maintaining write consistency in a multi-threaded storage system
US10929226B1 (en) 2017-11-21 2021-02-23 Pure Storage, Inc. Providing for increased flexibility for large scale parity
US10990282B1 (en) 2017-11-28 2021-04-27 Pure Storage, Inc. Hybrid data tiering with cloud storage
US10936238B2 (en) 2017-11-28 2021-03-02 Pure Storage, Inc. Hybrid data tiering
US10795598B1 (en) 2017-12-07 2020-10-06 Pure Storage, Inc. Volume migration for storage systems synchronously replicating a dataset
US11036677B1 (en) 2017-12-14 2021-06-15 Pure Storage, Inc. Replicated data integrity
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
CN108052295B (zh) * 2017-12-28 2020-11-10 深圳市金泰克半导体有限公司 一种数据存储方法、固态硬盘、主机及储存系统
US10992533B1 (en) 2018-01-30 2021-04-27 Pure Storage, Inc. Policy based path management
US10521151B1 (en) 2018-03-05 2019-12-31 Pure Storage, Inc. Determining effective space utilization in a storage system
US11150834B1 (en) 2018-03-05 2021-10-19 Pure Storage, Inc. Determining storage consumption in a storage system
US10942650B1 (en) 2018-03-05 2021-03-09 Pure Storage, Inc. Reporting capacity utilization in a storage system
US11861170B2 (en) 2018-03-05 2024-01-02 Pure Storage, Inc. Sizing resources for a replication target
US10296258B1 (en) 2018-03-09 2019-05-21 Pure Storage, Inc. Offloading data storage to a decentralized storage network
US11210009B1 (en) 2018-03-15 2021-12-28 Pure Storage, Inc. Staging data in a cloud-based storage system
US10917471B1 (en) 2018-03-15 2021-02-09 Pure Storage, Inc. Active membership in a cloud-based storage system
US11048590B1 (en) 2018-03-15 2021-06-29 Pure Storage, Inc. Data consistency during recovery in a cloud-based storage system
US11288138B1 (en) 2018-03-15 2022-03-29 Pure Storage, Inc. Recovery from a system fault in a cloud-based storage system
US10924548B1 (en) 2018-03-15 2021-02-16 Pure Storage, Inc. Symmetric storage using a cloud-based storage system
US11171950B1 (en) 2018-03-21 2021-11-09 Pure Storage, Inc. Secure cloud-based storage system management
US11095706B1 (en) 2018-03-21 2021-08-17 Pure Storage, Inc. Secure cloud-based storage system management
US10838833B1 (en) 2018-03-26 2020-11-17 Pure Storage, Inc. Providing for high availability in a data analytics pipeline without replicas
US11436344B1 (en) 2018-04-24 2022-09-06 Pure Storage, Inc. Secure encryption in deduplication cluster
US11392553B1 (en) 2018-04-24 2022-07-19 Pure Storage, Inc. Remote data management
US11455409B2 (en) 2018-05-21 2022-09-27 Pure Storage, Inc. Storage layer data obfuscation
US10992598B2 (en) 2018-05-21 2021-04-27 Pure Storage, Inc. Synchronously replicating when a mediation service becomes unavailable
US11954220B2 (en) 2018-05-21 2024-04-09 Pure Storage, Inc. Data protection for container storage
US11675503B1 (en) 2018-05-21 2023-06-13 Pure Storage, Inc. Role-based data access
US10871922B2 (en) 2018-05-22 2020-12-22 Pure Storage, Inc. Integrated storage management between storage systems and container orchestrators
US11403000B1 (en) 2018-07-20 2022-08-02 Pure Storage, Inc. Resiliency in a cloud-based storage system
US11416298B1 (en) 2018-07-20 2022-08-16 Pure Storage, Inc. Providing application-specific storage by a storage system
CN109086006B (zh) * 2018-07-24 2021-10-15 浪潮电子信息产业股份有限公司 一种数据读取的方法以及相关装置
US11146564B1 (en) 2018-07-24 2021-10-12 Pure Storage, Inc. Login authentication in a cloud storage platform
US11860820B1 (en) 2018-09-11 2024-01-02 Pure Storage, Inc. Processing data through a storage system in a data pipeline
WO2020077489A1 (zh) * 2018-10-15 2020-04-23 华为技术有限公司 一种存储块处理的方法及相关设备
US10671302B1 (en) 2018-10-26 2020-06-02 Pure Storage, Inc. Applying a rate limit across a plurality of storage systems
US11340837B1 (en) 2018-11-18 2022-05-24 Pure Storage, Inc. Storage system management via a remote console
US11526405B1 (en) 2018-11-18 2022-12-13 Pure Storage, Inc. Cloud-based disaster recovery
US11023179B2 (en) 2018-11-18 2021-06-01 Pure Storage, Inc. Cloud-based storage system storage management
US10963189B1 (en) 2018-11-18 2021-03-30 Pure Storage, Inc. Coalescing write operations in a cloud-based storage system
US11650749B1 (en) 2018-12-17 2023-05-16 Pure Storage, Inc. Controlling access to sensitive data in a shared dataset
US11003369B1 (en) 2019-01-14 2021-05-11 Pure Storage, Inc. Performing a tune-up procedure on a storage device during a boot process
US11042452B1 (en) 2019-03-20 2021-06-22 Pure Storage, Inc. Storage system data recovery using data recovery as a service
US11221778B1 (en) 2019-04-02 2022-01-11 Pure Storage, Inc. Preparing data for deduplication
US11068162B1 (en) 2019-04-09 2021-07-20 Pure Storage, Inc. Storage management in a cloud data store
US11853266B2 (en) 2019-05-15 2023-12-26 Pure Storage, Inc. Providing a file system in a cloud environment
US11327676B1 (en) 2019-07-18 2022-05-10 Pure Storage, Inc. Predictive data streaming in a virtual storage system
US11126364B2 (en) 2019-07-18 2021-09-21 Pure Storage, Inc. Virtual storage system architecture
US11392555B2 (en) 2019-05-15 2022-07-19 Pure Storage, Inc. Cloud-based file services
US11861221B1 (en) 2019-07-18 2024-01-02 Pure Storage, Inc. Providing scalable and reliable container-based storage services
US11093139B1 (en) 2019-07-18 2021-08-17 Pure Storage, Inc. Durably storing data within a virtual storage system
US11487715B1 (en) 2019-07-18 2022-11-01 Pure Storage, Inc. Resiliency in a cloud-based storage system
US11526408B2 (en) 2019-07-18 2022-12-13 Pure Storage, Inc. Data recovery in a virtual storage system
US11550514B2 (en) 2019-07-18 2023-01-10 Pure Storage, Inc. Efficient transfers between tiers of a virtual storage system
US11086553B1 (en) 2019-08-28 2021-08-10 Pure Storage, Inc. Tiering duplicated objects in a cloud-based object store
US11693713B1 (en) 2019-09-04 2023-07-04 Pure Storage, Inc. Self-tuning clusters for resilient microservices
US11625416B1 (en) 2019-09-13 2023-04-11 Pure Storage, Inc. Uniform model for distinct types of data replication
US11797569B2 (en) 2019-09-13 2023-10-24 Pure Storage, Inc. Configurable data replication
US11573864B1 (en) 2019-09-16 2023-02-07 Pure Storage, Inc. Automating database management in a storage system
US11669386B1 (en) 2019-10-08 2023-06-06 Pure Storage, Inc. Managing an application's resource stack
US20210173945A1 (en) 2019-12-06 2021-06-10 Pure Storage, Inc. Replicating data to a storage system that has an inferred trust relationship with a client
US11720497B1 (en) 2020-01-13 2023-08-08 Pure Storage, Inc. Inferred nonsequential prefetch based on data access patterns
US11733901B1 (en) 2020-01-13 2023-08-22 Pure Storage, Inc. Providing persistent storage to transient cloud computing services
US11709636B1 (en) 2020-01-13 2023-07-25 Pure Storage, Inc. Non-sequential readahead for deep learning training
US11868622B2 (en) 2020-02-25 2024-01-09 Pure Storage, Inc. Application recovery across storage systems
US11637896B1 (en) 2020-02-25 2023-04-25 Pure Storage, Inc. Migrating applications to a cloud-computing environment
US11321006B1 (en) 2020-03-25 2022-05-03 Pure Storage, Inc. Data loss prevention during transitions from a replication source
US11301152B1 (en) 2020-04-06 2022-04-12 Pure Storage, Inc. Intelligently moving data between storage systems
US11630598B1 (en) 2020-04-06 2023-04-18 Pure Storage, Inc. Scheduling data replication operations
US11494267B2 (en) 2020-04-14 2022-11-08 Pure Storage, Inc. Continuous value data redundancy
US11921670B1 (en) 2020-04-20 2024-03-05 Pure Storage, Inc. Multivariate data backup retention policies
US11431488B1 (en) 2020-06-08 2022-08-30 Pure Storage, Inc. Protecting local key generation using a remote key management service
US11442652B1 (en) 2020-07-23 2022-09-13 Pure Storage, Inc. Replication handling during storage system transportation
US11349917B2 (en) 2020-07-23 2022-05-31 Pure Storage, Inc. Replication handling among distinct networks
JP7204020B2 (ja) * 2020-10-23 2023-01-13 キオクシア株式会社 制御方法
JP7013546B2 (ja) * 2020-10-23 2022-01-31 キオクシア株式会社 メモリシステム
US11397545B1 (en) 2021-01-20 2022-07-26 Pure Storage, Inc. Emulating persistent reservations in a cloud-based storage system
US11853285B1 (en) 2021-01-22 2023-12-26 Pure Storage, Inc. Blockchain logging of volume-level events in a storage system
KR20220124318A (ko) * 2021-03-02 2022-09-14 삼성전자주식회사 쓰기 동작을 리디렉션하는 스토리지 컨트롤러 및 이의 동작 방법
US20220365827A1 (en) 2021-05-12 2022-11-17 Pure Storage, Inc. Rebalancing In A Fleet Of Storage Systems Using Data Science
US11816129B2 (en) 2021-06-22 2023-11-14 Pure Storage, Inc. Generating datasets using approximate baselines
US11914867B2 (en) 2021-10-29 2024-02-27 Pure Storage, Inc. Coordinated snapshots among storage systems implementing a promotion/demotion model
US11893263B2 (en) 2021-10-29 2024-02-06 Pure Storage, Inc. Coordinated checkpoints among storage systems implementing checkpoint-based replication
US11714723B2 (en) 2021-10-29 2023-08-01 Pure Storage, Inc. Coordinated snapshots for data stored across distinct storage environments
US11922052B2 (en) 2021-12-15 2024-03-05 Pure Storage, Inc. Managing links between storage objects
US11847071B2 (en) 2021-12-30 2023-12-19 Pure Storage, Inc. Enabling communication between a single-port device and multiple storage system controllers
US11860780B2 (en) 2022-01-28 2024-01-02 Pure Storage, Inc. Storage cache management
US11886295B2 (en) 2022-01-31 2024-01-30 Pure Storage, Inc. Intra-block error correction
CN117435120A (zh) * 2022-07-13 2024-01-23 北京超弦存储器研究院 一种ssd、ssd的主控芯片及ssd资源管理方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02226446A (ja) * 1989-02-28 1990-09-10 Toshiba Corp 携帯可能電子装置
JP3214592B2 (ja) * 1994-06-10 2001-10-02 株式会社富士通ゼネラル メモリ使用範囲自動検出方法およびメモリ使用範囲自動検出装置
JP2000122921A (ja) * 1998-10-14 2000-04-28 Oki Data Corp メモリサイズ自動判定方法及び判定装置
JP3242890B2 (ja) * 1998-12-16 2001-12-25 株式会社ハギワラシスコム 記憶装置
US7355892B2 (en) * 2006-06-30 2008-04-08 Sandisk Corporation Partial page fail bit detection in flash memory devices
US7554855B2 (en) * 2006-12-20 2009-06-30 Mosaid Technologies Incorporated Hybrid solid-state memory system having volatile and non-volatile memory
US8122319B2 (en) * 2007-01-24 2012-02-21 Charles I. Peddle Page-based failure management for flash memory
US8185778B2 (en) * 2008-04-15 2012-05-22 SMART Storage Systems, Inc. Flash management using separate metadata storage
US8028123B2 (en) * 2008-04-15 2011-09-27 SMART Modular Technologies (AZ) , Inc. Circular wear leveling
US8180954B2 (en) * 2008-04-15 2012-05-15 SMART Storage Systems, Inc. Flash management using logical page size
US20090259806A1 (en) * 2008-04-15 2009-10-15 Adtron, Inc. Flash management using bad page tracking and high defect flash memory
US8566505B2 (en) * 2008-04-15 2013-10-22 SMART Storage Systems, Inc. Flash management using sequential techniques
KR101143397B1 (ko) * 2009-07-29 2012-05-23 에스케이하이닉스 주식회사 페이지 복사 발생 빈도를 줄이는 반도체 스토리지 시스템 및 그 제어 방법
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
CN102004701B (zh) * 2009-08-28 2013-01-09 炬才微电子(深圳)有限公司 一种次级内存的分配方法和装置
TWI497293B (zh) * 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
CN101930345B (zh) * 2010-08-24 2012-05-02 苏州国芯科技有限公司 一种基于块访问的闪存读写方法
US20130262942A1 (en) * 2012-03-27 2013-10-03 Yung-Chiang Chu Flash memory lifetime evaluation method
KR102072449B1 (ko) * 2012-06-01 2020-02-04 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 리페어 방법

Also Published As

Publication number Publication date
CA2894936A1 (en) 2015-12-27
EP3260985A1 (en) 2017-12-27
EP3260985B1 (en) 2019-02-27
ES2642218T3 (es) 2017-11-15
NO2988221T3 (ja) 2018-01-06
CN105830166A (zh) 2016-08-03
JP2016524769A (ja) 2016-08-18
CA2894936C (en) 2018-02-27
EP2988221B1 (en) 2017-08-09
KR101677474B1 (ko) 2016-11-18
KR20160015190A (ko) 2016-02-12
US20150378888A1 (en) 2015-12-31
EP2988221A4 (en) 2016-02-24
CN105830166B (zh) 2018-02-23
EP2988221A1 (en) 2016-02-24
WO2015196464A1 (zh) 2015-12-30

Similar Documents

Publication Publication Date Title
JP6018725B2 (ja) コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法
JP6130971B2 (ja) データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システム
US10747666B2 (en) Memory system
JP6316974B2 (ja) フラッシュメモリ圧縮
RU2661280C2 (ru) Контроллер массива, твердотельный диск и способ для управления твердотельным диском для записи данных
JP6455900B2 (ja) ストレージシステムおよびシステムガベージコレクション方法
JP6147933B2 (ja) コントローラ、フラッシュメモリ装置、データブロック安定性を識別する方法、及びデータをフラッシュメモリ装置に記憶する方法
KR20120105294A (ko) 불휘발성 메모리를 제어하는 메모리 컨트롤러
CN105917303B (zh) 一种控制器、识别数据块稳定性的方法和存储系统
WO2019000982A1 (zh) 一种存储系统、固态硬盘和数据存储方法
JP2019194780A (ja) 情報処理装置、データ管理プログラム及びデータ管理方法
KR101549569B1 (ko) 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치
KR20140042428A (ko) 컴퓨팅 시스템 및 그 데이터 관리 방법
KR102275706B1 (ko) 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150804

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150804

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160930

R150 Certificate of patent or registration of utility model

Ref document number: 6018725

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