JP2021121901A - メモリシステムおよび制御方法 - Google Patents

メモリシステムおよび制御方法 Download PDF

Info

Publication number
JP2021121901A
JP2021121901A JP2020014901A JP2020014901A JP2021121901A JP 2021121901 A JP2021121901 A JP 2021121901A JP 2020014901 A JP2020014901 A JP 2020014901A JP 2020014901 A JP2020014901 A JP 2020014901A JP 2021121901 A JP2021121901 A JP 2021121901A
Authority
JP
Japan
Prior art keywords
write
amount
data
control unit
refresh
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.)
Pending
Application number
JP2020014901A
Other languages
English (en)
Inventor
容子 増尾
Yoko Masuo
容子 増尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2020014901A priority Critical patent/JP2021121901A/ja
Priority to US17/014,832 priority patent/US11500584B2/en
Publication of JP2021121901A publication Critical patent/JP2021121901A/ja
Priority to US17/985,517 priority patent/US20230070976A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0253Garbage collection, i.e. reclamation of unreferenced 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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/7202Allocation control and policies

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)

Abstract

【課題】 不揮発性メモリの寿命を延ばすことができるメモリシステムを実現する。【解決手段】 実施形態によれば、メモリシステムは、複数のブロックを含む不揮発性メモリと、不揮発性メモリを制御するコントローラとを具備する。コントローラは、第1期間における不揮発性メモリへの書き込み量を取得する。コントローラは、第1期間における不揮発性メモリへの書き込みの想定量を算出する。コントローラは、書き込み量が想定量よりも第1閾値以上多い場合、不揮発性メモリへのデータの書き込みに用いられる1つ以上のパラメータを変更する。【選択図】 図1

Description

本発明の実施形態は、不揮発性メモリを備えるメモリシステム及びその制御方法に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
このようなメモリシステムの1つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピューティングデバイスのメインストレージとして使用されている。
NAND型フラッシュメモリは書き込みのたびに疲弊が進む。そのため、NAND型フラッシュメモリへの書き込み量は、その寿命に大きく影響する。SSDの書き換え耐性を定量的に示す指標として、Drive Writes Per Day(DWPD)がある。DWPDはSSDの動作保証期間において、1日当たりに何回、全容量を書き換えられるかを表す。つまり、SSDは、その全容量にDWPDを乗算して得られるデータ量の書き込みを、動作保証期間中に毎日実行することが保証される。
SSDでは、ホストからの要求に応じてNAND型フラッシュメモリにデータを書き込む処理(すなわちホストライト)だけでなく、バックグラウンドで書き込み処理を含む様々な処理が行われている。このようなバックグラウンドの処理には、寿命を延ばすためにNAND型フラッシュメモリの疲弊を平準化するウェアレベリングやガベージコレクション(GC)、データ保全のためのリフレッシュ、システムデータの管理等が含まれる。
しかし、バックグラウンドの処理によって過剰な書き込みが発生した場合、NAND型フラッシュメモリの疲弊が加速して、SSDが動作保証期間よりも早期に故障する可能性がある。
米国特許第10324833号明細書 米国特許第10346039号明細書
本発明が解決しようとする課題は、不揮発性メモリの寿命を延ばすことができるメモリシステムおよび制御方法を提供することである。
実施形態によれば、メモリシステムは、複数のブロックを含む不揮発性メモリと、不揮発性メモリを制御するコントローラとを具備する。コントローラは、第1期間における不揮発性メモリへの書き込み量を取得する。コントローラは、第1期間における不揮発性メモリへの書き込みの想定量を算出する。コントローラは、書き込み量が想定量よりも第1閾値以上多い場合、不揮発性メモリへのデータの書き込みに用いられる1つ以上のパラメータを変更する。
実施形態に係るメモリシステムの構成を示すブロック図。 実施形態のメモリシステムにおけるNAND型フラッシュメモリダイの一構成例を示す図。 実施形態のメモリシステムにおいてNAND型フラッシュメモリに関して管理される論理ブロックの一構成例を示す図。 実施形態のメモリシステムにおいて算出されるギア比の一例を示す図。 実施形態のメモリシステムにおいて実行される書き込み監視処理の手順の例を示すフローチャート。 実施形態のメモリシステムにおいて実行される想定書き込み量算出処理の手順の例を示すフローチャート。 実施形態のメモリシステムにおいて実行される過剰書き込み判定処理の手順の例を示すフローチャート。 実施形態のメモリシステムにおいて実行される再設定処理の手順の例を示すフローチャート。 実施形態のメモリシステムにおいて実行される再設定処理の手順の別の例を示すフローチャート。
以下、実施の形態について図面を参照して説明する。
図1は、本実施形態に係るメモリシステムを含む情報処理システム1の一構成例を示すブロック図である。情報処理システム1は、ホスト装置2(以下、ホスト2と称する)と、メモリシステム3の一例であるSSD3と、を含む。
メモリシステム3は、NAND型フラッシュメモリ5(以下、NANDメモリ5と称する)のような不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成され、半導体ストレージデバイス、又はストレージデバイスとも称される。以下では、メモリシステム3は、例えばNANDメモリ5を備えるソリッドステートドライブ(SSD)3として実現される場合について例示する。メモリシステム3は、SSD3でなく、UFS又はメモリカードなどの記憶装置として実現されてもよい。
ホスト2は、大量且つ多様なデータをSSD3に保存するストレージサーバであってもよいし、パーソナルコンピュータであってもよい。
SSD3は、ホスト2のストレージとして使用され得る。SSD3はホスト2に内蔵されてもよいし、ホスト2にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とSSD3とを接続するためのインタフェースは、SCSI、Serial Attached SCSI(SAS)、ATA(AT Attachment)、Serial ATA(SATA)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)、Fibre channel、NVM Express(NVMe)等に準拠する。
SSD3は、メモリコントローラ4およびNANDメモリ5を備える。メモリコントローラ4は、System−on−a−chip(SoC)のような半導体集積回路によって実現され得る。
SSD3は、揮発性メモリであるランダムアクセスメモリ(RAM)として、例えばシンクロナスダイナミックランダムアクセスメモリ(SDRAM)6を備えていてもよい。あるいは、スタティックランダムアクセスメモリ(SRAM)のようなRAMがメモリコントローラ4に内蔵されていてもよい。なお、SDRAM6が、メモリコントローラ4に内蔵されていてもよい。
SDRAM6等のRAMには、例えば、NANDメモリ5からロードされるファームウェア(FW)21の格納領域、論理物理アドレス変換テーブル22のキャッシュ領域、NANDメモリ5に書き込むべきデータやNANDメモリ5から読み出されたデータを一時的に記憶するバッファ領域が設けられる。以下では、このバッファ領域をデータバッファ23と称する。
データバッファ23は、ライトバッファ231、リードバッファ232、ガベージコレクション(GC)バッファ233、リフレッシュバッファ234、を含む。ライトバッファ231は、ホスト2によってNANDメモリ5への書き込みが要求されたユーザデータを一時的に記憶する。ユーザデータは、例えば、ホスト2からライトコマンドに対応して受信され、NANDメモリ5に書き込むべきデータである。リードバッファ232は、ホスト2による要求に応じてNANDメモリ5から読み出されたユーザデータを一時的に記憶する。GCバッファ233は、GCのためにNANDメモリ5から読み出されたデータを一時的に記憶する。リフレッシュバッファ234は、リフレッシュのためにNANDメモリ5から読み出されたデータを一時的に記憶する。
NANDメモリ5は複数の物理ブロックを含む。各物理ブロックは複数のページを含む。1つのブロックは最小の消去単位として機能する。物理ブロックは、消去ブロックと称されることもある。各ページは、同一ワード線に接続された複数のメモリセルを含む。1つのページは、データ書き込み動作およびデータ読み出し動作の単位である。なお、ワード線をデータ書き込み動作およびデータ読み出し動作の単位としてもよい。
各物理ブロックに対して許容できるプログラム/イレーズサイクル数には上限(最大P/Eサイクル数)がある。ある物理ブロックの1回のP/Eサイクルは、この物理ブロック内のすべてのメモリセルを消去状態にするための消去動作と、この物理ブロックのページそれぞれにデータを書き込む書き込み動作とを含む。
メモリコントローラ4は、ホストインタフェース(ホストI/F)11、制御部12、NANDインタフェース(NAND I/F)13、DRAMインタフェース(DRAM I/F)14、を含む。これらホストI/F11、制御部12、NAND I/F13、およびDRAM I/F14は、バス10を介して相互接続され得る。
メモリコントローラ4は、NAND I/F13を介して、NANDメモリ5に電気的に接続されている。NAND I/F13は、NANDメモリ5を制御するように構成されたNAND制御回路として機能する。NAND I/F13は、Toggle DDR、Open NAND Flash Interface(ONFI)等のインタフェース規格に対応する。
NAND I/F13は、複数のNANDコントローラ13−0〜13−17を備え得る。複数のNANDコントローラ13−0〜13−17は、複数のチャネル(例えば18個のチャネルCh.0〜Ch.17)をそれぞれ介して、NANDメモリ5内の複数のNAND型フラッシュメモリダイ(以下、NANDメモリダイと称する)#0〜#71と通信し得る。複数のNANDメモリダイ#0〜#71が並列に駆動されることにより、NANDメモリ5に対するアクセスを広帯域化することができる。NANDメモリダイは、NAND型フラッシュメモリチップや不揮発性メモリチップ等とも称される。
メモリコントローラ4は、NANDメモリ5を制御するように構成されたコントローラとして機能する。
メモリコントローラ4は、NANDメモリ5のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能してもよい。このFTLによって実行されるデータ管理には、(1)論理アドレスそれぞれとNANDメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)ページ単位のリード/ライト動作とブロック単位の消去(イレーズ)動作とを隠蔽するための処理、等が含まれる。論理アドレスは、SSD3をアドレス指定するためにホスト2によって使用されるアドレスである。
論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングの管理は、論理物理アドレス変換テーブル22を用いて実行される。メモリコントローラ4は、論理物理アドレス変換テーブル22を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを特定のサイズ単位で管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスのデータが書き込まれたNANDメモリ5内の物理記憶位置を示す。論理物理アドレス変換テーブル22は、SSD3の電源オン時にNANDメモリ5からSDRAM6にロードされてもよい。論理物理アドレス変換テーブル22は、例えばルックアップテーブル(LUT)として実現される。以下では、論理物理アドレス変換テーブル22を、LUT22とも称する。
1つのページへのデータ書き込みは、1回のP/Eサイクル当たり1回のみ可能である。このため、メモリコントローラ4は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、メモリコントローラ4は、この論理アドレスをこの別の物理記憶位置に関連付けるようにLUT22を更新することにより、以前のデータを無効化する。
ブロック管理には、不良ブロックの管理、ウェアレベリング、GC、リフレッシュ、等が含まれる。
ホストI/F11は、SSD3と、SSD3の外部装置であるホスト2との通信を行うハードウェアインタフェースである。ホストI/F11は、ホスト2から様々なコマンド、例えば、I/Oコマンド、各種制御コマンドを受信する回路として機能する。I/Oコマンドには、ライトコマンド、リードコマンドが含まれる。制御コマンドには、アンマップコマンド(トリムコマンド)、フォーマットコマンドが含まれる。フォーマットコマンドは、NANDメモリ5の記憶領域の状態を初期化するためのコマンドである。ホストI/F11は、コマンドに応じた応答やデータをホスト2に送信する送信回路としても機能する。
DRAM I/F14は、SDRAM6のアクセスを制御するように構成されたDRAM制御回路として機能する。SDRAM6の記憶領域は、FW21を格納するための領域や、ライトバッファ231やリードバッファ232等として利用されるバッファ領域に割り当てられる。
制御部12は、ホストI/F11、NAND I/F13、およびDRAM I/F14を制御するように構成されたプロセッサである。制御部12は、SDRAM6にロードされたFW21を実行することによって様々な処理を行う。つまり、FW21は制御部12の動作を制御するための制御プログラムである。制御部12は、前述のFTLの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。なお、FTL処理およびコマンド処理の一部または全部は、メモリコントローラ4内の専用ハードウェアによって実行されてもよい。
制御部12は、例えば、ブロック管理部121、書き込み/読み出し制御部122、GC制御部123、リフレッシュ制御部124、LUT書き込み制御部125、LUT GC制御部126、LUTリフレッシュ制御部127、アンマップ処理部128、および書き込み量監視部129として機能し得る。制御部12は、例えばFW21を実行することにより、これら各部として機能する。これら各部による複数の処理は複数のプロセッサで並列に実行されてもよいし、1つのプロセッサで複数の処理が時分割で実行されてもよい。さらに、複数の処理が複数のプロセッサそれぞれで、時分割で並列に実行されてもよい。
ブロック管理部121は、NANDメモリ5に含まれる複数の物理ブロックの内の一部の物理ブロックにより拡張的な管理単位であるブロックグループを構築し得る。また、ブロック管理部121は、物理ブロックおよびブロックグループに関する情報(以下、ブロック情報とも称する)の管理や、書き込み/読み出し制御部122、GC制御部123等のNANDメモリ5への書き込みを制御する各部への物理ブロックまたはブロックグループの供給を行う。
ここで、図1に加えて、図2および図3を併せて参照して、ブロック管理部121によって管理されるブロックグループについて説明する。
図1に示すように、NANDメモリ5は、各々がメモリセルアレイと周辺回路とを備える複数のNANDメモリダイ#0〜#71を含む。メモリセルアレイは複数の物理ブロックを含み、不揮発にデータを記憶可能である。周辺回路はメモリセルアレイを制御する。個々のNANDメモリダイは独立して動作可能である。つまり、個々のNANDメモリダイは、並列動作単位として機能する。NANDメモリダイは、複数のチャネル(例えば18個のチャネルCh.0〜Ch.17)の各々に同数ずつ(例えば1チャネル当たり4個ずつ)接続され得る。各チャネルCh.0〜Ch.17は、NAND I/F13内の複数のNANDコントローラ13−0〜13−17が各NANDメモリダイ#0〜#71と通信するための通信線(すなわちメモリバス)を含む。
例えば18個のチャネルCh.0〜Ch.17に対して、複数のバンクが並列に接続されてもよい。例えば4つのBank0〜3の例では、各バンクは、18個のNANDメモリダイで構成される。すなわち、NANDメモリダイ#0〜#17がBank0を構成し、NANDメモリダイ#18〜#35がBank1を構成し、NANDメモリダイ#36〜#53がBank2を構成し、NANDメモリダイ#54〜#71がBank3を構成する。バンクは、複数のNANDメモリダイをバンクインタリーブによって並列動作させるための単位として機能する。図1に示す構成例においては、18個のチャネルCh.0〜Ch.17を介して4つのBank0〜3を使用するバンクインタリーブによって、最大で72個のNANDメモリダイ#0〜#71を並列動作させることができる。
図2は、NANDメモリダイの一構成例を示す図である。
図2に示すように、NANDメモリダイは、各々が複数の物理ページを含む複数の物理ブロックを含む。以下、単に「ページ」とある場合は、物理ページを示す。データの書き込みおよびデータの読み出しは、ページ単位で行われる。一方、データの消去は、物理ブロック単位で行われる。データが書き込み済みであるページに対して、データの上書きは行われない。
そのため、メモリコントローラ4は、ある論理アドレスに対応するページ上のデータを更新する場合、新たなデータを別のページに書き込む。そして、メモリコントローラ4は、この論理アドレスをこの別のページに関連付けるようにLUT22を更新することにより、元のページ上のデータを無効化する。なお、論理アドレスに関連付けられているデータであって、後にホスト2によってリードされる可能性があるデータは、有効データと称される。また、どの論理アドレスにも関連付けられていないデータであって、もはやホスト2からリードされる可能性がないデータは、無効データと称される。
図3は、ブロック管理部121によって管理されるブロックグループの一構成例を示す図である。
ブロック管理部121は、各々が複数の物理ブロックを含む複数のブロックグループを管理する。SSD3においては、このブロックグループの単位でデータの消去が実行されてもよい。
ブロック管理部121は、例えば、NANDメモリダイ#0〜#71から1つずつ物理ブロックを選択し、計72個の物理ブロックを含むブロックグループを管理する。NAND I/F13は、18個のチャネルch.0〜ch.17を介した4つのバンクBank0〜3のバンクインタリーブによって、NANDメモリダイ#0〜#71を並列動作させることができる。そのため、NAND I/F13は、例えば1つのブロックグループへのデータの書き込みを72ページずつ実行できる。
なお、ブロック管理部121は、72個よりも少ない数(例えば36個や18個等)のNANDメモリダイから物理ブロックを1つずつ選択して、1つのブロックグループとして管理してもよい。1つのブロックグループを構成する複数の物理ブロックがそれぞれ選択されるNANDメモリダイの組み合わせは、チャネルやバンクが異なるもの同士となることが好ましい。各NANDメモリダイがマルチプレーンとして、例えば2プレーンの構成を有している場合には、ブロック管理部121は、例えば、NANDメモリダイ#0〜#71に対応する144個のプレーンから1つずつ物理ブロックを選択し、計144個の物理ブロックを含むブロックグループを管理してもよい。
ブロック管理部121は、制御部12内の、NANDメモリ5への書き込みを行う各部(例えば、後述する書き込み/読み出し制御部122、GC制御部123、リフレッシュ制御部124、LUT書き込み制御部125、LUT GC制御部126、LUTリフレッシュ制御部127、およびアンマップ処理部128)に対して、NANDメモリ5内の物理ブロックまたはブロックグループを、書き込み先ブロックとして供給し得る。これら各部は、ブロック管理部121が供給したブロックにデータを書き込むことにより、NANDメモリ5へのデータの書き込みを行う。ブロック管理部121は、ブロック情報として、ブロックグループを構成する物理ブロック、各物理ブロックが使用されているかどうか、物理ブロックの総数、フリーブロックの数、各物理ブロックの有効クラスタ率、各物理ブロックがユーザデータとシステム管理データのいずれの格納に用いられているか、等を管理する。フリーブロックは、有効データを格納しておらず、消去(イレーズ)処理を経ることで新たなデータの書き込みに利用可能なブロックである。また、システム管理データは、例えばLUT22である。有効クラスタ率については、後述する。
ブロック管理部121は、フリーブロックである物理ブロックに対してイレーズ処理を行うことで、その物理ブロックを再び書き込み先ブロックとして供給し得る。以下では、説明を分かりやすくするために、ブロック管理部121が物理ブロックを書き込み先ブロックとして供給する場合を例示する。
図1に戻り、制御部12における各処理部の説明を続ける。
書き込み/読み出し制御部122は、ホスト2による要求に応じて、NANDメモリ5へのデータの書き込み、またはNANDメモリ5からのデータの読み出しを実行する。より詳しくは、書き込み/読み出し制御部122は、ホスト2からホストI/F11を介してライトコマンドを受信した場合、NANDメモリ5に書き込むべきユーザデータをホストI/F11を介して受信し、受信したユーザデータをライトバッファ231に格納する。そして、書き込み/読み出し制御部122は、ライトバッファ231に格納されたユーザデータを、NAND I/F13を介してNANDメモリ5に書き込む。ユーザデータが書き込まれる物理ブロックは、ブロック管理部121によってホストライト先ブロックとして供給された物理ブロックである。なお以下では、ホスト2による書き込み要求(例えばライトコマンド)に応じて、NANDメモリ5にユーザデータを書き込むことを、ホストライトとも称する。
また、書き込み/読み出し制御部122は、ホスト2からホストI/F11を介してリードコマンドを受信した場合、LUT22を用いて、リードコマンドで指定された論理アドレスに対応する物理アドレスを特定する。そして、書き込み/読み出し制御部122は、NAND I/F13を介して、特定された物理アドレスからデータを読み出す。読み出されたデータは、リードバッファ232に格納される。書き込み/読み出し制御部122は、リードバッファ232に格納されたデータを、ホストI/F11を介してホスト2に送信する。
GC制御部123は第1GC処理を実行する。第1GC処理は、ユーザデータを格納しているブロック(すなわちGC元ブロック)を対象とするGC処理である。
GC処理は、フリーブロックの確保を目的として、無効データが残存する領域を再利用するための処理である。物理ブロックは、書き込まれたデータの更新や削除によって、無効データが格納された状態になる。物理ブロックにおいて、不良ページを除くデータを記憶可能な領域(すなわち有効領域)に対する、有効データが格納された領域の割合は、有効クラスタ率、有効データ率等と称される。GC処理では、例えば有効クラスタ率が低い物理ブロックがGC元ブロックとして用いられる。有効クラスタ率が低い物理ブロックに対してGC処理を行うことにより、この物理ブロックがフリーブロックになる。フリーブロックは、有効データを格納していない物理ブロックである。フリーブロックである物理ブロックに対してイレーズ処理を行うことで、その物理ブロックは再び書き込み先ブロックとして供給され得る。
GC制御部123は第1GC処理を実行して、以下のように動作する。
まず、GC制御部123は、ブロック管理部121によって提供されるブロック情報を用いて、有効クラスタ率が低いブロックをGC元ブロックとして選択する。GC制御部123は、GC元ブロックに格納されたデータの内の有効データを、ブロック管理部121によって供給されたGC先ブロックにコピーする。その際、GC制御部123はGCバッファ233を利用してもよい。また、ブロック管理部121は、フリーブロックの1つに対してイレーズ処理を行って、GC制御部123にGC先ブロックとして供給する。GC元ブロックに格納された有効データ全てが、GC先ブロックにコピーされたならば、そのGC元ブロックはフリーブロックになる。なお以下では、第1GC処理によってNANDメモリ5にデータを書き込むことを、GCライトとも称する。
ここで、GC制御部123による第1GC処理の実行周期について説明する。
前述したように、ブロック管理部121は、少なくともブロックの総数およびフリーブロックの数をブロック情報として管理している。GC制御部123は、例えばブロックの総数に占めるフリーブロックの数またはその割合に基づき、フリーブロックの確保を目的とする第1GC処理の実行周期を制御する。より詳しくは、GC制御部123は、フリーブロックの数が少なくなる程、短い周期で第1GC処理を実行するように実行周期を調整する。
GC制御部123は、この実行周期を、書き込み/読み出し制御部122による、ホスト2からの要求に応じたデータの書き込み(すなわちホストライト)と、第1GC処理によるデータの書き込み(すなわちGCライト)と、の実行比率で調整する。つまり、GC制御部123は、GCライトによってホストライトが許容範囲を超えて停滞しないように、第1GC処理の実行周期を調整する。
ホストライトとGCライトとの実行比率は、例えばギア比と称される。ここでは、ホストライトに対して、GCライトの割合を高くすることを、ギア比を上げると称する。単位期間当たりのホストライトの回数をA、GCライトの回数をBとすると、ギア比はA:Bと表すことができる。この場合、ホストライトでA個のホスト書き込み先ブロックが消費される際、GCライトではB個のGC先ブロックが消費される。GC制御部123は、フリーブロックの数が少なくなる程、Aの値に対してBの値が大きくなるようにギア比を調整することで、第1GC処理の実行周期を調整する。
この場合、GC制御部123は、少なくともA+B個またはその倍数のフリーブロックを作成するように第1GC処理を実行すればよい。
また、十分な数のフリーブロックが存在し、さらなる作成が不要である場合や、有効クラスタ率が低いブロックが存在せず、フリーブロックを効率的に作成することが期待できない場合等において、GC制御部123は第1GC処理を停止してもよい。
図4は、GC制御部123が算出するギア比の一例を示す図である。
図4において、縦軸はギア比を表し、横軸はNANDメモリ5内に残存するデータの書き込み可能容量を表している。データの書き込み可能容量は、フリーブロックの数としてもよいし、ブロックよりも粒度を細かくして、空きページ(データを書き込み可能であるが未書き込みのページ)の数としてもよい。ここでは、フリーブロックの数をデータの書き込み可能容量として用いる例を説明する。
100:N0のギア比は、100回のホストライトに対して、N0回のGCライトが行われることを示す。また、100:Naのギア比、100:Nbのギア比、及び100:Ncのギア比は、それぞれ、100回のホストライトに対して、Na回、Nb回、及びNc回のGCライトが行われることを示す。なお、N0<Na<Nb<Ncである。
0:Xのギア比は、第1GC処理が緊急に必要な状態で、ホストライトを停止してGCライトを行うこと(すなわち、0回のホストライトに対してX回のGCライトが行われること)を示している。また、Y:0のギア比は、GCライトを停止してホストライトを行うこと(すなわち、Y回のホストライトに対して0回のGCライトが行われること)を示している。
データの書き込み可能容量を表す横軸上のThresh_0、Thresh_1、Thresh_2L、Thresh_2H、およびThresh_3は、データの書き込み可能容量からギア比を導き出すために設けられる複数の閾値である。
例えば、データの書き込み可能容量がThresh_3より大きい場合、GC制御部123は、Y:0であるギア比を算出し、第1GC処理を停止する。データの書き込み可能容量がThresh_0未満である場合、GC制御部123は、0:Xであるギア比を算出し、書き込み/読み出し制御部122はホストライトを停止する。すなわち、0:Xであるギア比は、ホストライトが停止され、優先的にGCライトを行う緊急状態のギア比である。
データの書き込み可能容量がThresh_0以上であって、Thresh_1以下である場合、GC制御部123は、100:Ncであるギア比を算出する。この100:Ncのギア比は、前述した緊急状態のギア比を除いて、ホストライトに対するGCライトの比率が最大となるギア比であり、最大ギア比とも称される。つまり、最大ギア比は、ホストライトに対する、第1GC処理によるGCライトの最大の実行比率を示す。
GC制御部123は、データの書き込み可能容量に加えて、NANDメモリ5の余裕率(すなわちオーバープロビジョニング(OP))も用いて、最大ギア比を算出し得る。余裕率は、例えばブロック管理部121によって管理される。ブロック管理部121は余裕率を、例えば次式により算出する。
余裕率[%]=(最大格納容量−表記容量−システム容量−無効化領域の容量)/表記容量×100
最大格納容量は、NANDメモリ5が記憶可能な実装容量(物理容量)である。表記容量は、ユーザデータの格納のために利用可能な記憶容量である。システム容量は、システム管理データの格納のために利用可能な記憶容量である。無効化領域の容量は、不良ブロックのようなデータの格納に利用できなくなった領域の容量である。
最大格納容量から、表記容量、システム容量、および無効化領域の容量を引いた差を余裕容量と呼ぶ。表記容量に対する余裕容量の比率に100を掛けることで、余裕率を算出できる。
100:Ncである最大ギア比において、Ncは余裕率に応じて変動する。より詳しくは、余裕率が小さいほどNcは大きくなる。例えば、余裕率が110%以上であればNc=100となり、余裕率が100%であればNc=110となり、余裕率が50%であればNc=220となり、余裕率が10%であればNc=1100となると云ったように、Ncが変動する。
また、データの書き込み可能容量がThresh_3である場合、GC制御部123は、100:N0であるギア比を算出する。データの書き込み可能容量がThresh_2Hである場合、GC制御部123は、100:Naであるギア比を算出する。データの書き込み可能容量がThresh_2Lである場合、GC制御部123は、100:Nbであるギア比を算出する。
データの書き込み可能容量がThresh_1より大きく、Thresh_2L未満である場合、GC制御部123は、データの書き込み可能容量がThresh_1である場合のギア比(100:Nc)と、データの書き込み可能容量がThresh_2Lである場合のギア比(100:Nb)との線形補間により、現在のデータの書き込み可能容量に対応するギア比を算出する。データの書き込み可能容量がThresh_2Lより大きく、Thresh_2H未満である場合、GC制御部123は、データの書き込み可能容量がThresh_2Lである場合のギア比(100:Nb)と、データの書き込み可能容量がThresh_2Hである場合のギア比(100:Na)との線形補間により、現在のデータの書き込み可能容量に対応するギア比を算出する。データの書き込み可能容量がThresh_2Hより大きく、Thresh_3未満である場合、GC制御部123は、データの書き込み可能容量がThresh_2Hである場合のギア比(100:Na)と、データの書き込み可能容量がThresh_3である場合のギア比(100:N0)との線形補間により、現在のデータの書き込み可能容量に対応するギア比を算出する。
なおここでは、Thresh_1とThresh_3との間に、2つの閾値(すなわちThresh_2LとThresh_2H)を設ける例を示したが、これは単なる一例であって、これに限らず、データの書き込み可能容量からギア比を導き出すための閾値の設定は、様々に変形することが可能である。例えば、Thresh_1とThresh_3との間に3つ以上閾値が定義され得る。
このように、GC制御部123は、NANDメモリ5内に残存するデータの書き込み可能容量に基づいてギア比を算出する。また、GC制御部123はNANDメモリ5内に残存するデータの書き込み可能容量と、余裕率とに基づいて、最大ギア比を算出し得る。GC制御部123は、例えばフリーブロック数が変動したことに応じて、ギア比の算出を実行する。GC制御部123は、特定の期間毎にギア比の算出を実行してもよい。GC制御部123は、フリーブロックの数、つまり、NANDメモリ5内に残存するデータの書き込み可能容量を、ブロック管理部121から取得する。GC制御部123は余裕率を、ブロック管理部121からさらに取得してもよい。
図1に戻り、制御部12における各処理部の説明を続ける。
リフレッシュ制御部124は第1リフレッシュ処理を実行する。第1リフレッシュ処理は、ユーザデータを格納しているブロック(すなわちリフレッシュ元ブロック)を対象とするリフレッシュ処理である。リフレッシュ制御部124は、ユーザデータを保全することを目的とし、NANDメモリ5に対するリード動作またはライト動作のエラーに起因して、第1リフレッシュ処理を行う。より詳しくは、リフレッシュ制御部124は、リフレッシュが必要なブロックのブロック情報を管理し、その中からリフレッシュ元ブロックを選択して、第1リフレッシュ処理を行う。リフレッシュが必要なブロックは、データが書き込まれてから閾値以上の時間が経過したブロック、閾値以上の回数のリードエラーが発生したブロック、リード動作時に閾値以上のエラー訂正が実行されたブロック、エラー率(Bit Error Rate:BER)が閾値以上であるブロック、又はあるデータ量当たりのエラー数が閾値以上であるブロック、を含む。
リフレッシュ制御部124は第1リフレッシュ処理を実行して、以下のように動作する。
まず、リフレッシュ制御部124は、自身で管理するリフレッシュが必要なブロックのブロック情報を用いてリフレッシュ元ブロックを選択する。リフレッシュ制御部124は、リフレッシュ元ブロックに格納されたデータの内の有効データを、ブロック管理部121によって供給されたリフレッシュ先ブロックにコピーする。その際、リフレッシュ制御部124はリフレッシュバッファ234を利用してもよい。また、ブロック管理部121は、フリーブロックの1つに対してイレーズ処理を行って、リフレッシュ制御部124にリフレッシュ先ブロックとして供給する。リフレッシュ元ブロックに格納された有効データ全てが、リフレッシュ先ブロックにコピーされたならば、そのリフレッシュ元ブロックはフリーブロックになる。なお以下では、第1リフレッシュ処理によってNANDメモリ5にデータを書き込むことを、リフレッシュライトとも称する。
LUT書き込み制御部125は、ホストライト、GCライト、およびリフレッシュライトの各々に応じてLUT22を更新するために、LUT22のデータをLUT書き込み先ブロックに書き込む。ブロック管理部121は、フリーブロックの1つに対してイレーズ処理を行って、LUT書き込み制御部125にLUT書き込み先ブロックとして供給する。LUT22のデータは、論理アドレスと物理アドレスのマッピングを示すデータである。
LUT GC制御部126は第2GC処理を実行する。第2GC処理は、システム管理データを格納しているブロック(すなわちGC元ブロック)を対象とするGC処理である。以下では、このシステム管理データがLUT22である場合を例示するが、実際の書き込み量と想定量とが異なり得る他のシステム管理データがさらに含まれていてもよい。なお、システム管理データを格納するために確保されているブロックを、LUTブロックとも称する。
LUT GC制御部126は第2GC処理を実行して、以下のように動作する。
まず、LUT GC制御部126は、ブロック管理部121によって提供されるブロック情報を用いて、システム管理データを格納しているLUTブロックの内、最も先にイレーズされたLUTブロック(すなわち、イレーズしてからの経過時間が最も長いLUTブロック)、または有効クラスタ率が低いLUTブロックを、LUT GC元ブロックとして選択する。LUT GC制御部126は、LUT GC元ブロックに格納されたデータの内の有効データを、ブロック管理部121によって供給されたLUT GC先ブロックにコピーする。その際、LUT GC制御部126は、割り当てられたSDRAM6内の領域をバッファ領域として利用してもよい。ブロック管理部121は、フリーブロックの1つに対してイレーズ処理を行って、LUT GC制御部126にLUT GC先ブロックとして供給する。LUT GC元ブロックに格納された有効データ全てが、LUT GC先ブロックにコピーされたならば、そのLUT GC元ブロックはフリーブロックになる。なお以下では、第2GC処理によってNANDメモリ5にデータを書き込むことを、LUT GCライトとも称する。
LUT GC制御部126は、LUTギア比を算出し、第2GC処理の実行周期を調整し得る。第2GC処理は、LUTブロックのサイズが、装置容量ごとに決められた所定のサイズを超えないように制御するために行われる。LUTギア比は、ホスト2からの書き込み要求と、第1GC処理と、第1リフレッシュ処理とに応じたLUT書き込み制御部125によるシステム管理データの書き込みに対する、第2GC処理による書き込みの実行比率を示す。LUT GC制御部126は、NANDメモリ5内の現在のLUTブロックの数を、複数段階の閾値と比較することによって、LUTギア比を決定する。
LUTリフレッシュ制御部127は第2リフレッシュ処理を実行する。第2リフレッシュ処理は、システム管理データ(例えば、ここではLUT22)を格納しているLUTブロック(すなわちLUTリフレッシュ元ブロック)を対象とするリフレッシュ処理である。LUTリフレッシュ制御部127は、システム管理データを保全することを目的とし、LUTブロックに対するリード動作またはライト動作のエラーに起因して、第2リフレッシュ処理を行う。LUTリフレッシュ制御部127は、リフレッシュ制御部124と同様にして、LUTブロックからLUTリフレッシュ元ブロックを選択する。
LUTリフレッシュ制御部127は第2リフレッシュ処理を実行して、以下のように動作する。
まず、LUTリフレッシュ制御部127は、ブロック管理部121によって提供されるブロック情報を用いて、LUTリフレッシュ元ブロックを選択する。LUTリフレッシュ制御部127は、LUTリフレッシュ元ブロックに格納されたデータの内の有効データを、ブロック管理部121によって供給されたLUTリフレッシュ先ブロックにコピーする。その際、LUTリフレッシュ制御部127は、割り当てられたSDRAM6内の領域をバッファ領域として利用してもよい。ブロック管理部121は、フリーブロックの1つに対してイレーズ処理を行って、LUTリフレッシュ制御部127にLUTリフレッシュ先ブロックとして供給する。LUTリフレッシュ元ブロックに格納された有効データ全てが、LUTリフレッシュ先ブロックにコピーされたならば、そのLUTリフレッシュ元ブロックはフリーブロックになる。なお以下では、第2リフレッシュ処理によってNANDメモリ5にデータを書き込むことを、LUTリフレッシュライトとも称する。
アンマップ処理部128は、ホスト2からNANDメモリ5に格納されているユーザデータを削除すること(すなわちアンマップ)が要求されたことに応じて、LUT22を更新するために、LUT22のデータをLUT書き込み先ブロックに書き込む。ブロック管理部121は、フリーブロックの1つに対してイレーズ処理を行って、アンマップ処理部128にLUT書き込み先ブロックとして供給する。アンマップ処理部128に対して供給されるLUT書き込み先ブロックは、LUT書き込み制御部125に対して供給されるLUT書き込み先ブロックとは別のブロックであってもよい。
より詳しくは、アンマップ処理部128はホストI/F11を介して、ホスト2から、例えばアンマップコマンドを受信する。受信したアンマップコマンドは、削除すべきユーザデータの論理アドレスを示す。アンマップ処理部128は、このアンマップコマンドに応じて、この論理アドレスがいずれの物理アドレスにも関連付けられていないことを示すように、LUT22を更新するためのデータをLUT書き込み先ブロックに書き込む。これにより、この論理アドレスに関連付けられたユーザデータが無効化される。なお以下では、アンマップの要求に応じてNANDメモリ5にLUTのデータを書き込むことを、アンマップライトとも称する。
書き込み量監視部129は、ある特定の期間におけるNANDメモリ5への実際の書き込み量を取得する。また、書き込み量監視部129は、この特定の期間におけるNANDメモリ5への書き込みの想定量を算出する。書き込み量監視部129は、書き込み量が想定量よりも第1閾値以上多い場合、NANDメモリ5が過剰な書き込み状態であると判断する。書き込み量監視部129は、過剰な書き込み状態であることを、ホストI/F11に設けられる再設定制御部111に通知する。なお、再設定制御部111は制御部12に設けられてもよい。
過剰な書き込み状態とは、例えば以下の(1)〜(4)の状態である。
(1)ホスト2によって要求された書き込み量に対して、NANDメモリ5の消費量が多い状態
(2)ホスト2によって要求された書き込み量に対して、必要以上にGCが実施される状態
(3)リフレッシュが必要なデータ量に対して、必要以上にリフレッシュが実施される状態
(4)ホスト2による書き込み要求、GC、リフレッシュに応じて発生するシステム管理データ(LUT22)の更新量に対して、システム管理データ用のNANDメモリ5の消費量が多い状態
NANDメモリ5で過剰な書き込み状態が続いた場合、その疲弊が加速する。そのため、SSD3が動作保証期間(例えば5年)よりも早期に故障する可能性がある。
再設定制御部111は、書き込み量監視部129から過剰な書き込み状態であることが通知された場合、制御部12内の各部と連携して、NANDメモリ5へのデータの書き込みに用いられる1つ以上のパラメータを変更(再設定)する。その際、再設定制御部111は、メモリコントローラ4の少なくとも一部(ここでは制御部12)を再起動してもよい。制御部12は再起動されることに応じて、それら1つ以上のパラメータを変更する。
また、再設定制御部111は、書き込み量監視部129から過剰な書き込み状態であることが通知され、NANDメモリ5に対する不要なフラッシュ処理が発生している場合、制御部12内の各部と連携して、不要なフラッシュ処理を停止させる。フラッシュ処理は、書き込み先ブロックに対して書き込むデータが書き込み単位を満たさない場合に、書き込み単位となるように無効データを追加して書き込む処理である。不要なフラッシュ処理は、例えば特定の容量を超えて無効データを書き込み続けるフラッシュ処理である。この特定の容量は、論理ページに相当する容量、物理ブロックに相当する容量、ブロックグループに相当する容量、等である。またこの場合、再設定制御部111はメモリコントローラ4の少なくとも一部(ここでは制御部12)を再起動してもよい。制御部12は再起動されることに応じて、不要なフラッシュ処理を停止させる。
以下では、特定の期間に関する、実際の書き込み量の取得、書き込みの想定量の算出、並びに過剰な書き込み状態の検出および対処について、それぞれ具体的に説明する。なお、この特定の期間が第1期間である場合を例示する。
(実際の書き込み量の取得)
書き込み量監視部129は、書き込み/読み出し制御部122、GC制御部123、リフレッシュ制御部124、LUT書き込み制御部125、LUT GC制御部126、LUTリフレッシュ制御部127、およびアンマップ処理部128とそれぞれ連携して、これら各部122〜128が第1期間内にNANDメモリ5に実際に書き込んだデータ量を取得する。各部122〜128によるNANDメモリ5に実際に書き込むデータは、フラッシュ処理によって書き込まれる無効データを含む。
より詳しくは、書き込み/読み出し制御部122は、ホスト2からの要求(例えばライトコマンド)に応じて、NANDメモリ5に書き込んだデータの累計量(以下、ホストライト累計量と称する)を計測する。書き込み量監視部129は、第1期間に対応する特定の期間毎に(すなわち特定の周期で)、書き込み/読み出し制御部122によって計測されたホストライト累計量を取得する。そして、書き込み量監視部129は、今回取得したホストライト累計量から前回取得したホストライト累計量を減算して得られるデータ量を、第1期間のホストライト量として取得する。
GC制御部123は、ユーザデータを格納しているブロックを対象とする第1GC処理によって、NANDメモリ5に書き込んだデータの累計量(以下、GCライト累計量と称する)を計測する。書き込み量監視部129は、特定の期間毎に、GC制御部123によって計測されたGCライト累計量を取得する。そして、書き込み量監視部129は、今回取得したGCライト累計量から前回取得したGCライト累計量を減算して得られるデータ量を、第1期間のGCライト量として取得する。
リフレッシュ制御部124は、ユーザデータを格納しているブロックを対象とする第1リフレッシュ処理によって、NANDメモリ5に書き込んだデータの累計量(以下、リフレッシュライト累計量と称する)を計測する。書き込み量監視部129は、特定の期間毎に、リフレッシュ制御部124によって計測されたリフレッシュライト累計量を取得する。そして、書き込み量監視部129は、今回取得したリフレッシュライト累計量から前回取得したリフレッシュライト累計量を減算して得られるデータ量を、第1期間のリフレッシュライト量として取得する。
LUT書き込み制御部125は、書き込み/読み出し制御部122によるホストライト、GC制御部123によるGCライト、およびリフレッシュ制御部124によるリフレッシュライトに応じて、NANDメモリ5に書き込んだシステム管理データの累計量を計測する。LUT GC制御部126は、システム管理データを格納しているブロックを対象とする第2GC処理によって、NANDメモリ5に書き込んだシステム管理データの累計量を計測する。LUTリフレッシュ制御部127は、システム管理データを格納しているブロックを対象とする第2リフレッシュ処理によって、NANDメモリ5に書き込んだデータの累計量を計測する。アンマップ処理部128は、ホスト2からNANDメモリ5に格納されているユーザデータを削除することが要求されたこと(例えばアンマップコマンドを受信したこと)に応じて、NANDメモリ5に書き込んだシステム管理データの累計量を計測する。
書き込み量監視部129は、特定の期間毎に、LUT書き込み制御部125、LUT GC制御部126、LUTリフレッシュ制御部127、およびアンマップ処理部128によってそれぞれ計測された累計量を取得する。書き込み量監視部129は、取得した4つの累計量の総和を算出して、LUTライト累計量を取得する。そして、書き込み量監視部129は、今回取得したLUTライト累計量から前回取得したLUTライト累計量を減算して得られるデータ量を、第1期間のLUTライト量として取得する。
以上により、書き込み量監視部129は、第1期間における、実際のホストライト量、GCライト量、リフレッシュライト量、およびLUTライト量を取得できる。
(書き込みの想定量の算出)
書き込み量監視部129は、書き込み/読み出し制御部122、GC制御部123、リフレッシュ制御部124、LUT書き込み制御部125、LUT GC制御部126、LUTリフレッシュ制御部127、およびアンマップ処理部128とそれぞれ連携して、これら各部122〜128が特定の期間内にNANDメモリ5に書き込むことが想定されるデータ量を算出する。この想定されるデータ量は、フラッシュ処理によって書き込まれるデータ量を含まない。
より詳しくは、ホストI/F11は、ホスト2からの書き込み要求(例えばライトコマンド)に基づいて、ホスト2から書き込みが要求されたデータの累計量(以下、ホストライト要求累計量と称する)を算出する。書き込み量監視部129は、特定の期間毎に、ホストI/F11によって算出されたホストライト要求累計量を取得する。そして、書き込み量監視部129は、今回取得したホストライト要求累計量から前回取得したホストライト要求累計量を減算して得られるデータ量を、第1期間にNANDメモリ5に書き込むことが想定されるホストライトの想定量として取得する。
GC制御部123は、ホスト2からの書き込み要求に応じた書き込みに対する、第1GC処理による書き込みの最大の実行比率(すなわち最大ギア比)を、NANDメモリ5に残存するデータの書き込み可能容量と、NANDメモリ5の余裕率とを用いて算出する。第1GC処理は、前述したように、ユーザデータを格納しているブロックを対象とするGC処理である。書き込み量監視部129は、特定の期間毎に、GC制御部123によって算出された最大ギア比を取得する。書き込み量監視部129は、第1期間における実際のホストライト量と最大ギア比とを用いて、第1GC処理によって第1期間内にNANDメモリ5に書き込むことが想定されるGCライトの想定量を算出する。例えば最大ギア比が1:3である場合、書き込み量監視部129は、実際のホストライト量に、ホストライトに対するGCライトの実行比率である3(=3/1)を掛けて、GCライトの想定量を算出する。
リフレッシュ制御部124は、第1リフレッシュ処理が必要であるデータの累計量(以下、リフレッシュ要求累計量と称する)を算出する。第1リフレッシュ処理は、前述したように、ユーザデータを格納しているブロックを対象とするリフレッシュ処理である。リフレッシュ制御部124は、第1リフレッシュ処理を行うべきリフレッシュ元ブロックに含まれる有効データの累計量を、リフレッシュ要求累計量として算出する。書き込み量監視部129は、特定の期間毎に、リフレッシュ制御部124によって算出されたリフレッシュ要求累計量を取得する。書き込み量監視部129は、今回取得したリフレッシュ要求累計量から前回取得したリフレッシュ要求累計量を減算して得られるデータ量を、第1期間に第1リフレッシュ処理が新たに必要になったリフレッシュライトの想定量として取得する。
書き込み量監視部129は、第1期間における実際のホストライト量とGCライト量とリフレッシュライト量とに基づいて、第1期間内にNANDメモリ5に書き込まれることが想定されるシステム管理データ(例えばLUT22)のデータ量を算出する。第1期間における実際のホストライト量とGCライト量とリフレッシュライト量との総和は、第1期間にNANDメモリ5に書き込まれたユーザデータの総量を示す。書き込み量監視部129は、例えば、このユーザデータの総量が書き込まれたことに応じて、NANDメモリ5に書き込まれることが想定されるLUT22のデータ量(以下、第1LUTライト想定量)を推定する。
また、LUT GC制御部126は、ホスト2からの書き込み要求と、第1GC処理と、第1リフレッシュ処理とに応じたLUT書き込み制御部125によるシステム管理データの書き込みに対する、第2GC処理による書き込みの実行比率(すなわちLUTギア比)を、NANDメモリ5内に占めるシステム管理データの書き込み容量(例えばNANDメモリ5内の現在のLUTブロックの数)を用いて算出する。第2GC処理は、前述したように、システム管理データを格納しているLUTブロックを対象とするGC処理である。LUT GC制御部126は、LUT22に対する第2GC処理のワーストケースの実行比率を算出してもよい。書き込み量監視部129は、特定の期間毎に、LUT GC制御部126によって算出された実行比率を取得する。
さらに、LUTリフレッシュ制御部127は、第2リフレッシュ処理が必要であるデータの累計量(以下、LUTリフレッシュ要求累計量と称する)を算出する。第2リフレッシュ処理は、前述したように、システム管理データを格納しているLUTブロックを対象とするリフレッシュ処理である。書き込み量監視部129は、特定の期間毎に、LUTリフレッシュ制御部127によって算出されたLUTリフレッシュ要求累計量を取得する。書き込み量監視部129は、今回取得したLUTリフレッシュ要求累計量から前回取得したLUTリフレッシュ要求累計量を減算して得られるデータ量を、第1期間に第2リフレッシュ処理が新たに必要になったLUTリフレッシュライトの想定量として取得する。
そして、書き込み量監視部129は、第1期間における、第1LUTライト想定量と、実行比率と、LUTリフレッシュライトの想定量とを用いて、第1期間内にNANDメモリ5に書き込むことが想定されるシステム管理データの想定量を算出する。なお、第1LUTライト想定量は、ホスト2からNANDメモリ5に格納されているユーザデータを削除(アンマップ)することが要求されたことに応じて、アンマップ処理部128が第1期間内にNANDメモリ5に書き込むことが想定されるLUT22のデータ量(以下、アンマップLUTライト想定量と称する)を含んでいてもよい。つまり、書き込み量監視部129は、アンマップLUTライト想定量と、第1LUTライト想定量と、実行比率と、LUTリフレッシュライトの想定量とを用いて、第1期間内にNANDメモリ5に書き込むことが想定されるシステム管理データの想定量を算出し得る。書き込み量監視部129は、例えば次式によりLUTライトの想定量を算出する。
LUTライトの想定量=(第1LUTライト想定量+アンマップLUTライト想定量)×GC係数+LUTリフレッシュライトの想定量
なお、GC係数は、LUT22に対する第2GC処理のワーストケースの実行比率を示す2つの数値の和である。例えば、LUT22に対する第2GC処理のワーストケースの実行比率が1:3である場合、GC係数は4(=1+3)である。
以上により、書き込み量監視部129は、第1期間における、ホストライトの想定量、GCライトの想定量、リフレッシュライトの想定量、およびLUTライトの想定量を取得できる。
(過剰な書き込み状態の検出および対処)
書き込み量監視部129は、前述した方法で取得した、第1期間における実際のホストライト量、GCライト量、リフレッシュライト量、およびLUTライト量と、第1期間におけるホストライトの想定量、GCライトの想定量、リフレッシュライトの想定量、およびLUTライトの想定量とを用いて、NANDメモリ5が過剰な書き込み状態であるか否かを判定する。
ところで、前述したように、ホストライト、GCライト、リフレッシュライト、およびLUTライトのいずれでも、書き込み先ブロックに無効データを書き込む(例えばNullPaddingを行う)フラッシュ(Flush)処理が行われることがある。
例えば、書き込み先ブロックでリードエラーやライトエラーが発生した場合、別のブロックを新たな書き込み先ブロックとして供給して、エラーが発生したブロックに対するリフレッシュ処理をできるだけ早く実施することが望ましい。そのため、書き込み先ブロックにエラーが発生した後、論理ページやブロックグループの単位での書き込みを早期に完了させるために、その書き込み先ブロックに無効データを書き込むフラッシュ処理が行われる。
また、ホストライトとGCライトはギア比に従って書き込みが制御される。例えば、ギア比が1:3である場合、1ページ分のデータのホストライトを行うフェーズと、3ページ分のGCライトを行うフェーズとが交互に進む。しかし、ホスト2からライトコマンドを受信していない場合や、GC元ブロックが選択されていない場合には、一方のフェーズが完了せずに、他方のフェーズに遷移できなくなる。そのため、例えばホスト2からライトコマンドを受信していないために、一定時間が経過してもホストライトのフェーズからGCライトのフェーズに遷移しない場合、ホスト書き込み先ブロックに無効データを書き込むフラッシュ処理が行われる。また、例えばGC元ブロックが選択されていないために、一定時間が経過してもGCライトのフェーズからホストライトのフェーズに遷移しない場合、GC先ブロックに無効データを書き込むフラッシュ処理が行われる。
このようなフラッシュ処理の発生によって、書き込み先ブロックに無効データが書き込まれるので、NANDメモリ5への実際の書き込み量が、書き込みの想定量よりも多くなる場合がある。さらに、フラッシュ処理が発生し続けること、ギア比が適切でなくなること、GC元ブロックやリフレッシュ元ブロックが適切に選定されないこと等によって、想定量よりも実際の書き込み量が増大する場合もある。
そこで、本実施形態の書き込み量監視部129は、実際の書き込み量と想定量とを比較して、過剰な書き込み状態を検出する。書き込み量監視部129は、例えば、実際の書き込み量が、想定量よりも第1閾値以上多い場合に、NANDメモリ5が過剰な書き込み状態であると判断する。
より詳しくは、書き込み量監視部129は、例えば、下記の項目(1)〜(4)の少なくともいずれかに該当する場合に、NANDメモリ5が過剰な書き込み状態であると判断する。
(1)ホストライト量がホストライトの想定量よりも閾値以上多い
(2)GCライト量がGCライトの想定量よりも閾値以上多い
(3)リフレッシュライト量がリフレッシュライトの想定量よりも閾値以上多い
(4)LUTライト量がLUTライトの想定量よりも閾値以上多い
なお、項目(1)〜(4)の閾値は同一の値であってもよいし、異なる値であってもよい。閾値は、量そのものの値、又はそれぞれの量の比率、であればよい。書き込み量監視部129は、項目(1)〜(4)の少なくともいずれかに該当する場合、NANDメモリ5が過剰な書き込み状態であることを再設定制御部111に通知する。
あるいは、書き込み量監視部129は、過剰な書き込みを発生させている書き込みの種類を、再設定制御部111に通知してもよい。すなわち、項目(1)に該当する場合、書き込み量監視部129は、ホストライトで過剰な書き込みが発生していることを再設定制御部111に通知する。また、項目(2)に該当する場合はGCライトで、項目(3)に該当する場合はリフレッシュライトで、項目(4)に該当する場合はLUTライトで、それぞれ過剰な書き込みが発生していることを再設定制御部111に通知する。
再設定制御部111は、NANDメモリ5が過剰な書き込み状態であることが通知された場合、制御部12に対して、NANDメモリ5にデータを書き込むために用いられる1つ以上のパラメータを変更させる。また、再設定制御部111は、NANDメモリ5が過剰な書き込み状態であることが通知された場合、制御部12に対して、NANDメモリ5に対する不要なフラッシュ処理を停止させてもよい。
なお、再設定制御部111は、NANDメモリ5が過剰な書き込み状態であることが通知された場合、制御部12を再起動してもよい。制御部12は、再起動されたことに応じて、NANDメモリ5にデータを書き込むために用いられる1つ以上のパラメータを変更し、NANDメモリ5に対する不要なフラッシュ処理を停止し得る。
より詳しくは、NANDメモリ5が過剰な書き込み状態であることが通知された場合、再設定制御部111は、少なくとも以下の何れかのように動作する。
再設定制御部111は、書き込み/読み出し制御部122に対して、ホストライトの不要なフラッシュ処理を停止させ、ホストライトに関するパラメータを変更させる。
再設定制御部111は、GC制御部123に対して、GCライトの不要なフラッシュ処理を停止させ、第1GC処理に関するパラメータを変更させる。第1GC処理に関するパラメータは、例えばホストライトに対するGCライトの実行比率(ギア比)、第1GC処理の対象とするGC元ブロックの選択条件、第1GC処理の対象とするGC元ブロックを示すGC対象ブロック情報等を含む。GC制御部123は、例えばNANDメモリ5に残存するデータの記憶可能容量に基づいて、ギア比を算出し直す。
再設定制御部111は、リフレッシュ制御部124に対して、リフレッシュライトの不要なフラッシュ処理を停止させ、第1リフレッシュ処理に関するパラメータを変更させる。第1リフレッシュ処理に関するパラメータは、リフレッシュライトの書き込み周期、第1リフレッシュ処理の対象とするリフレッシュ元ブロックの選択条件、第1リフレッシュ処理の対象とするリフレッシュ元ブロックを示すリフレッシュ対象ブロック情報等を含む。リフレッシュ対象ブロック情報は、リフレッシュ元ブロックを、例えばエラー重度に基づき管理するためのリストを含む。
第1リフレッシュ処理に関するパラメータを変更する場合、リフレッシュ制御部124は、例えばリフレッシュ対象ブロック情報を用いて、リフレッシュ元ブロックの数や各ブロックのエラー重度に基づき、リフレッシュライトの書き込み周期を算出し直す。この書き込み周期は、リフレッシュ元ブロックが少なければ長く、多ければ短くなる。
さらに、リフレッシュ制御部124は、ユーザデータを格納しているブロックから、第1リフレッシュ処理の対象とするリフレッシュ元ブロックを選定し直してもよい。これは、リフレッシュ元ブロックが供給されていない場合、リフレッシュ先ブロックに対するフラッシュ処理が発生し続ける可能性があるためである。
再設定制御部111は、LUT書き込み制御部125、LUT GC制御部126、LUTリフレッシュ制御部127、およびアンマップ処理部128の少なくともいずれかに対して、LUTライトの不要なフラッシュ処理を停止させ、LUTライトに関するパラメータを変更させる。LUTライトに関するパラメータは、ホストライトとGCライトとリフレッシュライトとに対応するLUTライトに対する、LUT GCライトの実行比率(LUTギア比)、LUTリフレッシュライトの書き込み周期、第2リフレッシュ処理の対象とするブロックの選択条件、第2リフレッシュ処理の対象とするブロックを示すリフレッシュ対象ブロック情報等を含む。
なお、過剰な書き込みを発生させている書き込みの種類が通知された場合、再設定制御部111は前述した動作の内、通知された書き込みの種類に応じた動作を行えばよい。すなわち、ホストライトで過剰な書き込みが発生していることが通知された場合、再設定制御部111は、書き込み/読み出し制御部122に対して、ホストライトの不要なフラッシュ処理を停止させ、ホストライトに関するパラメータを変更させる。GCライトで過剰な書き込みが発生していることが通知された場合、再設定制御部111は、GC制御部123に対して、GCライトの不要なフラッシュ処理を停止させ、第1GC処理に関するパラメータを変更させる。リフレッシュライトで過剰な書き込みが発生していることが通知された場合、再設定制御部111は、リフレッシュ制御部124に対して、リフレッシュライトの不要なフラッシュ処理を停止させ、第1リフレッシュ処理に関するパラメータを変更させる。LUTライトで過剰な書き込みが発生していることが通知された場合、再設定制御部111は、LUT書き込み制御部125、LUT GC制御部126、LUTリフレッシュ制御部127、およびアンマップ処理部128の少なくともいずれかに対して、LUTライトの不要なフラッシュ処理を停止させ、LUTライトに関するパラメータを変更させる。
なお、書き込み量監視部129は、過剰な書き込み状態であるとの判断が特定の回数以上又は特定の時間以上連続した場合に、NANDメモリ5が過剰な書き込み状態であることを再設定制御部111に通知してもよい。書き込み量監視部129は、例えば6時間毎に過剰な書き込み状態であるか否かを判定する。そして、特定の回数(例えば4回)連続して、過剰な書き込み状態であると判断した場合、NANDメモリ5が過剰な書き込み状態であることを再設定制御部111に通知する。
また、書き込み量監視部129は、SSD3のDWPDをさらに考慮して、NANDメモリ5が過剰な書き込み状態であるかどうかを判定してもよい。書き込み量監視部129は、DWPDに基づいてNANDメモリ5の第1期間に許容される最大書き換え可能量を算出する。書き込み量監視部129は、算出した第1期間の最大書き換え可能量よりも、第1期間内の実際の書き込み量が、第2閾値より多い場合、NANDメモリ5が過剰な書き込み状態であると判断する。この場合、再設定制御部111は、制御部12に対して、NANDメモリ5にデータを書き込むために用いられる1つ以上のパラメータを変更させ、NANDメモリ5に対する不要なフラッシュ処理を停止させる。なお、第2閾値は、第1閾値とは異なる。
一方、算出した第1期間の最大書き換え可能量よりも、第1期間内の実際の書き込み量が、第2閾値以上少ない場合、書き込み量監視部129は、NANDメモリ5が過剰な書き込み状態でないと判断する。この場合、再設定制御部111は、制御部12に対して、NANDメモリ5にデータを書き込むために用いられる1つ以上のパラメータを変更させず、NANDメモリ5に対する不要なフラッシュ処理を停止させない。これにより、実際の書き込み量が、DWPDに基づく最大書き換え可能量よりも十分に低ければ、制御部12はパラメータを変更しない。したがって、パラメータの変更のために発生する処理の遅延を回避できる。
換言すると、書き込み量監視部129は、第1期間内の実際の書き込み量が想定量よりも第1閾値以上多く、且つ算出した第1期間の最大書き換え可能量から実際の書き込み量を減算した差が第2閾値未満である場合に、NANDメモリ5が過剰な書き込み状態であると判断し得る。この場合、再設定制御部111は、制御部12に対してNANDメモリ5にデータを書き込むために用いられる1つ以上のパラメータを変更させ、NANDメモリ5に対する不要なフラッシュ処理を停止させる。
以上の構成により、メモリコントローラ4はNANDメモリ5の寿命を延ばすことができる。メモリコントローラ4は、ホストライト、GCライト、リフレッシュライト、およびLUTライトの実際の書き込み量と想定量とを用いて、NANDメモリ5の過剰な書き込み状態を検出できる。そして、NANDメモリ5が過剰な書き込み状態である場合、メモリコントローラ4は、NANDメモリ5への実際の書き込みに関するパラメータを変更し、不要なフラッシュ処理を停止させる。これにより、メモリコントローラ4はNANDメモリ5の無駄な疲弊を抑止し、寿命を延ばすことができる。
図5は、書き込み量監視部129によって実行される書き込み監視処理の手順の例を示すフローチャートである。書き込み量監視部129は、例えば制御部12が起動(あるいは再起動)されたことに応じて、書き込み監視処理を開始する。
書き込み量監視部129は、NANDメモリ5へのデータへの書き込みを行う各部(具体的には、書き込み/読み出し制御部122、GC制御部123、リフレッシュ制御部124、LUT書き込み制御部125、LUT GC制御部126、LUTリフレッシュ制御部127、およびアンマップ処理部128)の各々による、NANDメモリ5への実際の書き込みの累計量(すなわち総量)を取得する(S101)。書き込み量監視部129は、各部122〜127に問い合わせることによって実際の書き込みの累計量を取得してもよいし、各部122〜127の実際の書き込みの累計量を特定の記憶領域(例えばSDRAM6内の記憶領域)から読み出してもよい。
書き込み量監視部129は、NANDメモリ5へのシステム管理データへの書き込みを行う各部(具体的には、LUT書き込み制御部125、LUT GC制御部126、LUTリフレッシュ制御部127、およびアンマップ処理部128)の各々による、NANDメモリ5への実際の書き込みの累計量(すなわち実際のLUTライト累計量)の総和を算出する(S102)。また、書き込み量監視部129は、ホスト2によってライトコマンドで書き込みが要求されたデータの累計量(すなわちホストライト要求累計量)を、ホストI/F11から取得する(S103)。
書き込み量監視部129は、リフレッシュ制御部124から、第1リフレッシュ処理が必要なデータの累計量(すなわちリフレッシュ要求累計量)を取得する(S104)。また、書き込み量監視部129は、LUTリフレッシュ制御部127から、第2リフレッシュ処理が必要なLUT22のデータの累計量(以下、LUTリフレッシュ要求累計量と称する)を取得する(S105)。
次いで、書き込み量監視部129は、過剰な書き込みが発生しているか否かを判定すべきタイミングであるか否かを判定する(S106)。過剰な書き込みが発生しているか否かを判定すべきタイミングは、例えば制御部12が起動されてから一定時間毎のタイミングである。過剰な書き込みが発生しているか否かを判定すべきタイミングでない場合(S106のNO)、S106に戻り、過剰な書き込みが発生しているか否かを判定すべきタイミングであるか否かが再度判定される。
過剰な書き込みが発生しているか否かを判定すべきタイミングである場合(S106のYES)、書き込み量監視部129は、書き込み/読み出し制御部122、GC制御部123、リフレッシュ制御部124、LUT書き込み制御部125、LUT GC制御部126、LUTリフレッシュ制御部127、およびアンマップ処理部128の各々による、NANDメモリ5への実際の書き込みの累計量を取得する(S107)。書き込み量監視部129は、取得した書き込み/読み出し制御部122による実際の書き込みの累計量(すなわち実際のホストライト累計量)から、前回の過剰書き込みの判定のために取得した実際のホストライト累計量を減算して、前回の判定後の実際のホストライト量を取得する(S108)。なお、制御部12が起動されてから初めて過剰書き込みの有無を判定する場合には、書き込み量監視部129は、前回の過剰書き込みの判定のために取得した実際のホストライト累計量として、S101で取得した実際のホストライト累計量(すなわち制御部12の起動時に取得した実際のホストライト累計量)を用いる。
書き込み量監視部129は、取得したGC制御部123による実際の書き込みの累計量(すなわち実際のGCライト累計量)から、前回の過剰書き込みの判定のために取得した実際のGCライト累計量を減算して、前回の判定後の実際のGCライト量を取得する(S109)。なお、制御部12が起動されてから初めて過剰書き込みの有無を判定する場合には、書き込み量監視部129は、前回の過剰書き込みの判定のために取得した実際のGCライト累計量として、S101で取得した実際のGCライト累計量を用いる。
書き込み量監視部129は、取得したリフレッシュ制御部124による実際の書き込みの累計量(すなわち実際のリフレッシュライト累計量)から、前回の過剰書き込みの判定のために取得した実際のリフレッシュライト累計量を減算して、前回の判定後の実際のリフレッシュライト量を取得する(S110)。なお、制御部12が起動されてから初めて過剰書き込みの有無を判定する場合には、書き込み量監視部129は、前回の過剰書き込みの判定のために取得した実際のリフレッシュライト累計量として、S101で取得した実際のリフレッシュライト累計量を用いる。
書き込み量監視部129は、LUT書き込み制御部125、LUT GC制御部126、LUTリフレッシュ制御部127、およびアンマップ処理部128の各々による実際のLUTライト累計量の総和を算出する(S111)。書き込み量監視部129は、算出した実際のLUTライト累計量の総和から、前回の過剰書き込みの判定のために取得した実際のLUTライト累計量の総和を減算して、前回の判定後の実際のLUTライト量を取得する(S112)。なお、制御部12が起動されてから初めて過剰書き込みの有無を判定する場合には、書き込み量監視部129は、前回の過剰書き込みの判定のために取得した実際のLUTライト累計量の総和として、S102で算出した実際のLUTライト累計量の総和を用いる。
次いで、書き込み量監視部129はホストライト、GCライト、リフレッシュライト、およびLUTライトの想定量をそれぞれ算出するための想定書き込み量算出処理を実行する(S113)。想定書き込み量算出処理の手順の例については、図6のフローチャートを参照して後述する。
そして、書き込み量監視部129はホストライト、GCライト、リフレッシュライト、およびLUTライトの実際の量と想定量とを用いて、過剰書き込みが発生しているかどうかを判定するための過剰書き込み判定処理を実行する(S114)。過剰書き込み判定処理の手順の例については、図7のフローチャートを参照して後述する。
図6は、書き込み量監視部129によって実行される想定書き込み量算出処理の手順の例を示すフローチャートである。想定書き込み量算出処理は、図5のS113を参照して前述した書き込み監視処理に相当する。
書き込み量監視部129はホストI/F11から、ホスト2によってライトコマンドで書き込みが要求されたデータの累計量(ホストライト要求累計量)を取得する(S201)。書き込み量監視部129は、取得したホストライト要求累計量から、前回の過剰書き込みの判定のために取得したホストライト要求累計量を減算して、前回の判定後のホストライトの想定量を取得する(S202)。なお、制御部12が起動されてから初めて過剰書き込みの有無を判定する場合には、書き込み量監視部129は、前回の過剰書き込みの判定のために取得したホストライト要求累計量として、図5のS103に示した書き込み監視処理で取得したホストライト要求累計量を用いる。
書き込み量監視部129はGC制御部123から現在の最大ギア比(すなわち最大の実行比率)を取得する(S203)。最大ギア比は、前述したように緊急状態で用いられるギア比を除いて、ホストライトに対するGCライトの比率が最大となるギア比である。書き込み量監視部129はホストライトの想定量に最大ギア比を掛けて、前回の過剰書き込みの判定後のGCライトの想定量を算出する(S204)。
書き込み量監視部129はリフレッシュ制御部124から、第1リフレッシュ処理が必要なデータの累計量(すなわちリフレッシュ要求累計量)を取得する(S205)。書き込み量監視部129は、取得したリフレッシュ要求累計量から、前回の過剰書き込みの判定のために取得したリフレッシュ要求累計量を減算して、前回の判定後のリフレッシュライトの想定量を取得する(S206)。なお、制御部12が起動されてから初めて過剰書き込みの有無を判定する場合には、書き込み量監視部129は、前回の過剰書き込みの判定のために取得したリフレッシュ要求累計量として、図5のS104に示した書き込み監視処理で取得したリフレッシュ要求累計量を用いる。
書き込み量監視部129は、実際のホストライト量と、実際のGCライト量と、実際のリフレッシュライト量との総和に対応する、LUT22のデータの書き込み量(以下、第1LUTライト想定量と称する)を推定する(S207)。つまり、書き込み量監視部129は、実際のホストライト量、実際のGCライト量、および実際のリフレッシュライト量に応じて書き込まれるであろうLUT22のデータ量を推定する。また、書き込み量監視部129はLUTリフレッシュ制御部127から、第2リフレッシュ処理が必要なLUT22のデータの累計量(すなわちLUTリフレッシュ要求累計量)を取得する(S208)。書き込み量監視部129は、取得したLUTリフレッシュ要求累計量から、前回の過剰書き込みの判定のために取得したLUTリフレッシュ要求累計量を減算して、前回の判定後のLUTリフレッシュライトの想定量を取得する(S209)。なお、制御部12が起動されてから初めて過剰書き込みの有無を判定する場合には、書き込み量監視部129は、前回の過剰書き込みの判定のために取得したLUTリフレッシュ要求累計量として、図5のS105に示した書き込み監視処理で取得したLUTリフレッシュ要求累計量を用いる。
そして、書き込み量監視部129は、S207で推定した第1LUTライト想定量と、アンマップ処理部128によるLUTライトの想定量(以下、アンマップLUTライト想定量と称する)との和に、LUT22に対する第2GC処理のワーストケースのギア比に基づく係数(以下、GC係数と称する)を掛けた値を算出し、この値に、S208で取得したLUTリフレッシュライトの想定量をさらに加算して、前回の過剰書き込みの判定後のLUTライトの想定量を取得する(S209)。
図6の想定書き込み量算出処理により、書き込み量監視部129は、ホストライトの想定量、GCライトの想定量、リフレッシュライトの想定量、およびLUTライトの想定量を算出できる。なお、図6の想定書き込み量算出処理では、ホストライトの想定量、GCライトの想定量、リフレッシュライトの想定量、およびLUTライトの想定量を順に算出する例を示したが、この順序は任意に変更可能である。また、これら想定量は並列に算出されてもよい。
図7は、書き込み量監視部129によって実行される過剰書き込み判定処理の手順の例を示すフローチャートである。過剰書き込み判定処理は、図5のS114を参照して前述した書き込み監視処理に相当する。
書き込み量監視部129は、実際のホストライト量からホストライトの想定量を減算した値が閾値以上であるか否かを判定する(S301)。実際のホストライト量からホストライトの想定量を減算した値が閾値以上である場合(S301のYES)、書き込み量監視部129はホストライトの過剰な書き込みを、再設定制御部111に通知し(S302)、S303に進む。一方、実際のホストライト量からホストライトの想定量を減算した値が閾値未満である場合(S301のNO)、書き込み量監視部129はS302の処理を行うことなく、S303に進む。
書き込み量監視部129は、実際のGCライト量からGCライトの想定量を減算した値が閾値以上であるか否かを判定する(S303)。実際のGCライト量からGCライトの想定量を減算した値が閾値以上である場合(S303のYES)、書き込み量監視部129はGCライトの過剰な書き込みを、再設定制御部111に通知し(S304)、S305に進む。一方、実際のGCライト量からGCライトの想定量を減算した値が閾値未満である場合(S303のNO)、書き込み量監視部129はS304の処理を行うことなく、S305に進む。
書き込み量監視部129は、実際のリフレッシュライト量からリフレッシュライトの想定量を減算した値が閾値以上であるか否かを判定する(S305)。実際のリフレッシュライト量からリフレッシュライトの想定量を減算した値が閾値以上である場合(S305のYES)、書き込み量監視部129はリフレッシュライトの過剰な書き込みを、再設定制御部111に通知し(S306)、S307に進む。一方、実際のリフレッシュライト量からリフレッシュライトの想定量を減算した値が閾値未満である場合(S305のNO)、書き込み量監視部129はS306の処理を行うことなく、S307に進む。
書き込み量監視部129は、実際のLUTライト量からLUTライトの想定量を減算した値が閾値以上であるか否かを判定する(S307)。実際のLUTライト量からLUTライトの想定量を減算した値が閾値以上である場合(S307のYES)、書き込み量監視部129はLUTライトの過剰な書き込みを、再設定制御部111に通知し(S308)、過剰書き込み判定処理を終了する。一方、実際のLUTライト量からLUTライトの想定量を減算した値が閾値未満である場合(S307のNO)、書き込み量監視部129はS308の処理を行うことなく、過剰書き込み判定処理を終了する。
図7の過剰書き込み判定処理により、書き込み量監視部129は、ホストライト、GCライト、リフレッシュライト、およびLUTライトの各々で過剰書き込みが発生している場合に、その発生を再設定制御部111に通知できる。なお、ホストライト、GCライト、リフレッシュライト、およびLUTライトの過剰書き込みをそれぞれ判定する順序は、任意に変更可能である。また、これら判定に用いられる閾値は、同一の値であってもよいし、異なる値であってもよい。
さらに、これら判定が全て終了した後に、判定結果をまとめて再設定制御部111に通知してもよい。書き込み量監視部129は、例えば、実際のホストライト量からホストライトの想定量を減算した値、実際のGCライト量からGCライトの想定量を減算した値、実際のリフレッシュライト量からリフレッシュライトの想定量を減算した値、および実際のLUTライト量からLUTライトの想定量を減算した値の少なくともいずれかが閾値以上である場合に、NANDメモリ5が過剰な書き込み状態であることを再設定制御部111に通知できる。
図8は、再設定制御部111および制御部12によって実行される再設定処理の手順の例を示すフローチャートである。書き込み量監視部129による図7を参照して説明した過剰書き込み判定処理において、再設定制御部111および制御部12はこの再設定処理を実行する。
再設定制御部111は書き込み量監視部129から、ホストライトの過剰な書き込みが通知されたか否かを判定する(S401)。ホストライトの過剰な書き込みが通知された場合(S401のYES)、再設定制御部111は、過剰な書き込みが通知されたホストライトにおいて、不要なフラッシュ処理が発生しているか否かを判定する(S402)。不要なフラッシュ処理が発生している場合(S402のYES)、再設定制御部111は不要なフラッシュ処理を停止させ(S403)、再設定処理を終了する。より詳しくは、再設定制御部111は、ホストライトの過剰な書き込み状態が通知され(S401のYES)、ホストライトで不要なフラッシュ処理が発生している場合(S402のYES)、書き込み/読み出し制御部122に不要なフラッシュ処理を停止させる。
ホストライトの過剰な書き込みが通知されていない場合(S401のNO)、再設定制御部111は書き込み量監視部129から、GCライトの過剰な書き込みが通知されたか否かを判定する(S404)。GCライトの過剰な書き込みが通知された場合(S404のYES)、再設定制御部111はGC制御部123に対して、GCライトに関するパラメータを変更させる(S405)。そして処理はS402に進む。GCライトに関するパラメータは、例えばホストライトとGCライトのギア比を含む。GC制御部123は、再設定制御部111によるパラメータ変更の要求に応じて、ギア比が適切であるかを判定し、不適切なギア比である場合に、ギア比を変更し得る。
なお、このギア比は、前述したように、ホストライトによる書き込みとGCライトによる書き込みとの実行比率を示すので、ホストライトに関するパラメータでもある。GC制御部12は書き込み/読み出し制御部122と連携して、ホストライトの過剰な書き込みが通知された場合に、ギア比を変更してもよい。
次いで、再設定制御部111は、過剰な書き込みが通知されたGCライトにおいて、不要なフラッシュ処理が発生しているか否かを判定する(S402)。不要なフラッシュ処理が発生している場合(S402のYES)、再設定制御部111は不要なフラッシュ処理を停止させ(S403)、再設定処理を終了する。より詳しくは、再設定制御部111は、GCライトの過剰な書き込みが通知され(S404のYES)、GCライトで不要なフラッシュ処理が発生している場合(S402のYES)、GC制御部123に不要なフラッシュ処理を停止させる。
GCライトの過剰な書き込みが通知されていない場合(S404のNO)、再設定制御部111は書き込み量監視部129から、リフレッシュライトの過剰な書き込みが通知されたか否かを判定する(S406)。リフレッシュライトの過剰な書き込みが通知された場合(S406のYES)、再設定制御部111はリフレッシュ制御部124に対して、リフレッシュライトに関するパラメータを変更させる(S407)。そして処理はS402に進む。リフレッシュライトに関するパラメータは、例えば、リフレッシュライトの周期、リフレッシュ対象ブロックの選択条件、およびリフレッシュ対象ブロック情報を含む。より具体的には、リフレッシュ制御部124は、再設定制御部111によるパラメータ変更の要求に応じて、リフレッシュライトの周期が適切であるかを判定し、不適切な周期である場合に、周期を変更する。また、リフレッシュ制御部124は、再設定制御部111によるパラメータ変更の要求に応じて、リフレッシュ対象ブロックの選択条件を変更して、リフレッシュ対象ブロック情報を更新する。
そして、再設定制御部111は、過剰な書き込みが通知されたリフレッシュライトにおいて、不要なフラッシュ処理が発生しているか否かを判定する(S402)。不要なフラッシュ処理が発生している場合(S402のYES)、再設定制御部111は不要なフラッシュ処理を停止させ(S403)、再設定処理を終了する。より詳しくは、再設定制御部111は、リフレッシュライトの過剰な書き込み状態が通知され(S406のYES)、リフレッシュライトで不要なフラッシュ処理が発生している場合(S402のYES)、リフレッシュ制御部124に不要なフラッシュ処理を停止させる。
リフレッシュライトの過剰な書き込みが通知されていない場合(S406のNO)、再設定制御部111は書き込み量監視部129から、LUTライトの過剰な書き込みが通知されたか否かを判定する(S408)。LUTライトの過剰な書き込みが通知された場合(S408のYES)、再設定制御部111はLUT書き込み制御部125、LUT GC制御部126、LUTリフレッシュ制御部127、およびアンマップ処理部128の少なくともいずれかに対して、LUTライトに関するパラメータを変更させる(S409)。そして処理はS402に進む。LUTライトに関するパラメータは、例えば、(1)ホストライト、GCライト、リフレッシュライト、およびアンマップに応じたLUTライトと、LUT GCライトとのギア比、(2)LUT22のリフレッシュライトの周期、(3)LUT22のリフレッシュ対象ブロックの選択条件、および(4)LUT22のリフレッシュ対象ブロック情報を含む。より具体的には、LUT GC制御部126は、再設定制御部111によるパラメータ変更の要求に応じて、LUT22のギア比が適切であるかを判定し、不適切なギア比である場合に、ギア比を変更し得る。LUTリフレッシュ制御部127は、LUTのリフレッシュライトの周期が適切であるかを判定し、不適切な周期である場合に、周期を変更する。また、LUTリフレッシュ制御部127は、再設定制御部111によるパラメータ変更の要求に応じて、LUTのリフレッシュ対象ブロックの選択条件を変更して、LUTのリフレッシュ対象ブロック情報を更新する。
そして、再設定制御部111は、過剰な書き込み状態が通知されたLUTライトにおいて、不要なフラッシュ処理が発生しているか否かを判定する(S402)。不要なフラッシュ処理が発生している場合(S402のYES)、再設定制御部111は不要なフラッシュ処理を停止させ(S403)、再設定処理を終了する。より詳しくは、再設定制御部111は、LUTライトの過剰な書き込み状態が通知され(S408のYES)、LUTライトで不要なフラッシュ処理が発生している場合(S402のYES)、LUT書き込み制御部125、LUT GC制御部126、LUTリフレッシュ制御部127、およびアンマップ処理部128の少なくともいずれかに対して、不要なフラッシュ処理を停止させる。
LUTライトの過剰な書き込み状態が通知されていない場合(S408のNO)、再設定制御部111は再設定処理を終了する。
図8の再設定処理により、再設定制御部111および制御部12は、過剰な書き込み状態が通知された書き込みの種類に応じて、その書き込みに関するパラメータを変更できる。また、過剰な書き込み状態が通知された書き込みにおいて、不要なフラッシュ処理が発生している場合、再設定制御部111および制御部12は、その不要なフラッシュ処理を停止できる。
図9は、再設定制御部111および制御部12によって実行される再設定処理の手順の別の例を示すフローチャートである。書き込み量監視部129によって図7の過剰書き込み判定処理において、再設定制御部111はこの再設定処理を実行することができる。
再設定制御部111は書き込み量監視部129から、NANDメモリ5が過剰な書き込み状態であることが通知されたか否かを判定する(S601)。過剰な書き込み状態が通知されていない場合(S601のNO)、再設定制御部111は再設定処理を終了する。
過剰な書き込み状態が通知された場合(S601のYES)、再設定制御部111は制御部12を再起動する(S602)。そして、再起動された制御部12は、制御部12内の各部で用いられる、実際の書き込みに関するパラメータを変更する(S603)。書き込みに関するパラメータは、例えば、(1)ホストライトとGCライトのギア比、(2)リフレッシュライトの周期、(3)リフレッシュ対象ブロックの選択条件、(4)リフレッシュ対象ブロック情報、(5)ホストライト、GCライト、リフレッシュライト、およびアンマップに応じたLUTライトと、LUT GCライトとのギア比、(6)LUTのリフレッシュライトの周期、(7)LUTのリフレッシュ対象ブロックの選択条件、および(8)LUTリフレッシュ対象ブロック情報を含む。これら各パラメータを変更するための具体的な動作については、図8のフローチャートを参照して前述した再設定処理と同様である。
また、再設定制御部111は不要なフラッシュ処理が発生しているか否かを判定する(S604)。不要なフラッシュ処理が発生している場合(S604のYES)、再設定制御部111は不要なフラッシュ処理を停止させ(S605)、再設定処理を終了する。より具体的には、再設定制御部111は、ホストライト、GCライト、リフレッシュライト、およびLUTライトの各々において、不要なフラッシュ処理が発生しているか否かを判定する。ホストライトで不要なフラッシュ処理が発生している場合、再設定制御部111は書き込み/読み出し制御部122に不要なフラッシュ処理を停止させる。GCライトで不要なフラッシュ処理が発生している場合、再設定制御部111はGC制御部123に不要なフラッシュ処理を停止させる。リフレッシュライトで不要なフラッシュ処理が発生している場合、再設定制御部111はリフレッシュ制御部124に不要なフラッシュ処理を停止させる。また、LUTライトで不要なフラッシュ処理が発生している場合、再設定制御部111はLUT書き込み制御部125、LUT GC制御部126、LUTリフレッシュ制御部127、およびアンマップ処理部128の少なくともいずれかに不要なフラッシュ処理を停止させる。
不要なフラッシュ処理が発生していない場合(S604のNO)、再設定制御部111は再設定処理を終了する。
図9の再設定処理により、再設定制御部111は過剰な書き込み状態の通知に応じて、制御部12を再起動して、書き込みに関するパラメータを変更できる。また、不要なフラッシュ処理が発生している場合、再設定制御部111により再起動された制御部12は、その不要なフラッシュ処理を停止できる。
以上説明したように、本実施形態によれば、不揮発性メモリの寿命を延ばすことができる。書き込み量監視部129は、第1期間におけるNANDメモリ5への書き込み量を取得する。書き込み量監視部129は、第1期間におけるNANDメモリ5への書き込みの想定量を算出する。そして、再設定制御部111は、書き込み量が想定量よりも第1閾値以上多い場合、NANDメモリ5へのデータの書き込みに用いられる1つ以上のパラメータを変更する。これにより、NANDメモリ5への過剰な書き込みを抑制できるので、無駄な疲弊を抑止し、寿命を延ばすことができる。
また、本実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサ(MPU)であってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。本実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…情報システム、2…ホスト、3…メモリシステム(SSD)、4…メモリコントローラ、5…NAND型フラッシュメモリ、6…DRAM、10…バス、11…ホストI/F、12…制御部、13…NAND I/F、14…DRAM I/F、111…再設定制御部、121…ブロック管理部、122…書き込み/読み出し制御部、123…ガベージコレクション制御部、124…リフレッシュ制御部、125…LUT書き込み制御部、126…LUTガベージコレクション制御部、127…LUTリフレッシュ制御部、128…アンマップ処理部、129…書き込み量監視部、13−0,13−1,13−2,13−3…NANDコントローラ、21…ファームウェア、22…論理物理アドレス変換テーブル(LUT)、23…データバッファ、231…ライトバッファ、232…リードバッファ、233…GCバッファ、234…リフレッシュバッファ。

Claims (11)

  1. 複数のブロックを含む不揮発性メモリと、
    前記不揮発性メモリを制御するコントローラとを具備し、
    前記コントローラは、
    第1期間における前記不揮発性メモリへの書き込み量を取得し、
    前記第1期間における前記不揮発性メモリへの書き込みの想定量を算出し、
    前記書き込み量が前記想定量よりも第1閾値以上多い場合、前記不揮発性メモリへのデータの書き込みに用いられる1つ以上のパラメータを変更するように構成されるメモリシステム。
  2. 前記コントローラは、前記書き込み量が前記想定量よりも前記第1閾値以上多い場合、前記コントローラの少なくとも一部が再起動されることに応じて、前記1つ以上のパラメータを変更するように構成される請求項1記載のメモリシステム。
  3. 前記コントローラは、さらに、前記書き込み量が前記想定量よりも前記第1閾値以上多い場合、前記不揮発性メモリに対する書き込み処理を停止させるように構成される請求項1記載のメモリシステム。
  4. 前記コントローラは、さらに、前記書き込み量が前記想定量よりも前記第1閾値以上多い場合、前記コントローラの少なくとも一部が再起動されることに応じて、前記不揮発性メモリに対する書き込み処理を停止させるように構成される請求項3記載のメモリシステム。
  5. 前記コントローラは、
    ホスト装置からの書き込み要求に応じて前記第1期間内に前記不揮発性メモリに書き込んだ第1データ量を取得し、
    前記ホスト装置からの書き込み要求に基づいて、前記第1期間内に前記不揮発性メモリに書き込むことが想定される第2データ量を算出し、
    前記第1データ量が前記第2データ量よりも前記第1閾値以上多い場合、前記1つ以上のパラメータを変更するように構成される請求項1記載のメモリシステム。
  6. 前記コントローラは、
    ホスト装置からの書き込み要求に応じて前記第1期間内に前記不揮発性メモリに書き込んだ第1データ量を取得し、
    ユーザデータを格納しているブロックを対象とする第1ガベージコレクション処理によって、前記第1期間内に前記不揮発性メモリに書き込んだ第3データ量を取得し、
    前記ホスト装置からの書き込み要求に応じた書き込みに対する、前記第1ガベージコレクション処理による書き込みの最大の実行比率を、前記不揮発性メモリに残存するデータの書き込み可能容量と、前記不揮発性メモリの余裕率とを用いて算出し、
    前記第1データ量と前記最大の実行比率とを用いて、前記第1ガベージコレクション処理によって前記第1期間内に前記不揮発性メモリに書き込むことが想定される第4データ量を算出し、
    前記第3データ量が前記第4データ量よりも前記第1閾値以上多い場合、前記1つ以上のパラメータを変更するように構成される請求項1記載のメモリシステム。
  7. 前記コントローラは、
    ユーザデータを格納しているブロックを対象とする第1リフレッシュ処理によって、前記第1期間内に前記不揮発性メモリに書き込んだ第5データ量を取得し、
    前記第1期間において前記第1リフレッシュ処理が新たに必要になった第6データ量を算出し、
    前記第5データ量が前記第6データ量よりも前記第1閾値以上多い場合、前記1つ以上のパラメータを変更するように構成される請求項1記載のメモリシステム。
  8. 前記コントローラは、
    ホスト装置からの書き込み要求に応じて前記第1期間内に前記不揮発性メモリに書き込んだ第1データ量を取得し、
    ユーザデータを格納しているブロックを対象とする第1ガベージコレクション処理によって、前記第1期間内に前記不揮発性メモリに書き込んだ第3データ量を取得し、
    ユーザデータを格納しているブロックを対象とする第1リフレッシュ処理によって、前記第1期間内に前記不揮発性メモリに書き込んだ第5データ量を取得し、
    前記第1データ量と前記第3データ量と前記第5データ量とに基づいて、前記第1期間内に前記不揮発性メモリに書き込むことが想定されるシステム管理データの第7データ量を算出し、
    前記ホスト装置からの書き込み要求と、前記第1ガベージコレクション処理と、前記第1リフレッシュ処理とに応じた前記システム管理データの書き込みに対する、前記システム管理データを格納しているブロックを対象とする第2ガベージコレクション処理による書き込みの実行比率を、前記システム管理データの書き込み容量を用いて算出し、
    前記第1期間において、前記システム管理データを格納しているブロックを対象とする第2リフレッシュ処理が新たに必要になった第8データ量を算出し、
    前記第7データ量と、前記実行比率と、前記第8データ量とを用いて、前記第1期間内に前記不揮発性メモリに書き込むことが想定される前記システム管理データの第9データ量を算出し、
    前記第1期間に前記不揮発性メモリに書き込んだシステム管理データの第10データ量が前記第9データ量よりも前記第1閾値以上多い場合、前記1つ以上のパラメータを変更するように構成される請求項1記載のメモリシステム。
  9. 前記第10データ量は、前記ホスト装置から前記不揮発性メモリに格納されているユーザデータを削除することが要求されたことに応じて、前記第1期間内に前記不揮発性メモリに書き込んだ前記システム管理データの第11データ量を含み、
    前記コントローラはさらに、前記第7データ量と、前記実行比率と、前記第8データ量と、前記第11データ量とを用いて、前記第1期間内に前記不揮発性メモリに書き込むことが想定される前記第9データ量を算出するように構成される請求項8記載のメモリシステム。
  10. 前記コントローラはさらに、前記不揮発性メモリの前記第1期間に許容される最大書き換え可能量よりも、前記書き込み量が、前記第1閾値とは異なる第2閾値より多い場合、前記1つ以上のパラメータを変更するように構成される請求項1記載のメモリシステム。
  11. 複数のブロックを含む不揮発性メモリを具備するメモリシステムの制御方法であって、
    第1期間における前記不揮発性メモリへの書き込み量を取得し、
    前記第1期間における前記不揮発性メモリへの書き込みの想定量を算出し、
    前記書き込み量が前記想定量よりも第1閾値以上多い場合、前記不揮発性メモリへのデータの書き込みに用いられる1つ以上のパラメータを変更する制御方法。
JP2020014901A 2020-01-31 2020-01-31 メモリシステムおよび制御方法 Pending JP2021121901A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2020014901A JP2021121901A (ja) 2020-01-31 2020-01-31 メモリシステムおよび制御方法
US17/014,832 US11500584B2 (en) 2020-01-31 2020-09-08 Memory system and control method
US17/985,517 US20230070976A1 (en) 2020-01-31 2022-11-11 Memory system and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020014901A JP2021121901A (ja) 2020-01-31 2020-01-31 メモリシステムおよび制御方法

Publications (1)

Publication Number Publication Date
JP2021121901A true JP2021121901A (ja) 2021-08-26

Family

ID=77062061

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020014901A Pending JP2021121901A (ja) 2020-01-31 2020-01-31 メモリシステムおよび制御方法

Country Status (2)

Country Link
US (2) US11500584B2 (ja)
JP (1) JP2021121901A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11907123B2 (en) * 2021-04-20 2024-02-20 International Business Machines Corporation Flash memory garbage collection

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011175666A (ja) * 2010-01-29 2011-09-08 Toshiba Corp 半導体記憶装置及び半導体記憶装置の制御方法
JP2016136393A (ja) * 2015-01-23 2016-07-28 株式会社東芝 メモリシステム
WO2016181528A1 (ja) * 2015-05-13 2016-11-17 株式会社日立製作所 ストレージ装置
JP2017027387A (ja) * 2015-07-23 2017-02-02 株式会社東芝 メモリシステム
US20170285945A1 (en) * 2016-04-01 2017-10-05 Sk Hynix Memory Solutions Inc. Throttling for a memory system and operating method thereof
JP2018036795A (ja) * 2016-08-30 2018-03-08 東芝メモリ株式会社 メモリシステム
JP2019106174A (ja) * 2017-12-14 2019-06-27 インテル・コーポレーション 記憶デバイスにおけるシステムタイムスタンプを用いたバックグラウンドデータ・リフレッシュ

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6728905B1 (en) * 2000-03-03 2004-04-27 International Business Machines Corporation Apparatus and method for rebuilding a logical device in a cluster computer system
US9064579B2 (en) * 2012-07-16 2015-06-23 Kabushiki Kaisha Toshiba Semiconductor memory apparatus, data transmission device, and recording method
WO2014073045A1 (ja) * 2012-11-07 2014-05-15 株式会社日立製作所 計算機システム、ストレージ管理計算機及びストレージ管理方法
US9569120B2 (en) * 2014-08-04 2017-02-14 Nvmdurance Limited Adaptive flash tuning
US10346039B2 (en) 2015-04-21 2019-07-09 Toshiba Memory Corporation Memory system
US9811261B1 (en) * 2015-09-13 2017-11-07 Amazon Technologies, Inc. Dynamic buffer size
US10324833B2 (en) 2015-10-27 2019-06-18 Toshiba Memory Corporation Memory controller, data storage device, and memory control method
US11435949B2 (en) * 2019-02-15 2022-09-06 Canon Kabushiki Kaisha Information processing apparatus and method for calculating a data size estimated to be written to a storage based on a write data size

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011175666A (ja) * 2010-01-29 2011-09-08 Toshiba Corp 半導体記憶装置及び半導体記憶装置の制御方法
JP2016136393A (ja) * 2015-01-23 2016-07-28 株式会社東芝 メモリシステム
WO2016181528A1 (ja) * 2015-05-13 2016-11-17 株式会社日立製作所 ストレージ装置
JP2017027387A (ja) * 2015-07-23 2017-02-02 株式会社東芝 メモリシステム
US20170285945A1 (en) * 2016-04-01 2017-10-05 Sk Hynix Memory Solutions Inc. Throttling for a memory system and operating method thereof
JP2018036795A (ja) * 2016-08-30 2018-03-08 東芝メモリ株式会社 メモリシステム
JP2019106174A (ja) * 2017-12-14 2019-06-27 インテル・コーポレーション 記憶デバイスにおけるシステムタイムスタンプを用いたバックグラウンドデータ・リフレッシュ

Also Published As

Publication number Publication date
US11500584B2 (en) 2022-11-15
US20210240392A1 (en) 2021-08-05
US20230070976A1 (en) 2023-03-09

Similar Documents

Publication Publication Date Title
US11693463B2 (en) Memory system and controller
US12019872B2 (en) Storage device that writes data from a host during garbage collection
US9507711B1 (en) Hierarchical FTL mapping optimized for workload
US20180373627A1 (en) Memory system having persistent garbage collection
CN108369818B (zh) 一种闪存设备的刷新方法和装置
US11704239B2 (en) Garbage collection method for storage medium, storage medium, and program product
US9158700B2 (en) Storing cached data in over-provisioned memory in response to power loss
US11372753B2 (en) Memory system and method
US8966205B1 (en) System data management using garbage collection and hybrid self mapping
US11747989B2 (en) Memory system and method for controlling nonvolatile memory
US10599345B2 (en) Memory device that writes data into a block based on time passage since erasure of data from the block
KR20210057193A (ko) 소계 기입 카운터에 기초한 하이브리드 웨어 레벨링 동작 수행
US10684785B2 (en) Storage system
JP2019086974A (ja) ストレージシステム及びその制御方法
US20230070976A1 (en) Memory system and control method
KR20220052353A (ko) 조정된 파라미터를 사용한 메모리 컴포넌트의 가비지 수집
US11275511B2 (en) Storage apparatus and data processing method for storage apparatus
WO2018167890A1 (ja) 計算機システム及び管理方法
CN118553293A (zh) 数据储存装置与非挥发式存储器控制方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220912

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230720

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230725

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230922

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240104

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20240206