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

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

Info

Publication number
JP2023044509A
JP2023044509A JP2021152564A JP2021152564A JP2023044509A JP 2023044509 A JP2023044509 A JP 2023044509A JP 2021152564 A JP2021152564 A JP 2021152564A JP 2021152564 A JP2021152564 A JP 2021152564A JP 2023044509 A JP2023044509 A JP 2023044509A
Authority
JP
Japan
Prior art keywords
block
difference
sequential write
data
blocks
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
JP2021152564A
Other languages
English (en)
Inventor
哲也 安田
Tetsuya Yasuda
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 JP2021152564A priority Critical patent/JP2023044509A/ja
Priority to US17/547,590 priority patent/US11803320B2/en
Publication of JP2023044509A publication Critical patent/JP2023044509A/ja
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/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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Abstract

【課題】ウェアレベリングを好適に制御する。【解決手段】メモリシステムのコントローラは、複数のブロック毎に、データが記憶されている状態を示す使用中であるか否かを示す第1情報、消去した回数を示す第2情報、及び次の消去までの待時間を示す第3情報を管理し、ホストから受信した第1のシーケンシャルライトを実行し、ホストから受信した第2のシーケンシャルライトを実行するに際し、第1の差分と第2の差分と第3の差分とに基づき、複数のブロック毎の消去回数を平準化する処理の実行要否を決定する。第1の差分は、データのライト前後における第1ブロックの待時間の差である。第2の差分は、第1のシーケンシャルライトにおける消去順序の第1の最大値と第2のシーケンシャルライトにおける消去順序の第2最大値との差分に対応する。第3の差分は、第1ブロックの消去回数と第1情報が使用中を示していない第2ブロックの消去回数との差である。【選択図】図9

Description

本実施形態は、メモリシステムおよびメモリシステムの制御方法に関する。
従来、不揮発性メモリを有するSSD(Solid State Drive)などのメモリシステムが知られている。SSDに搭載される不揮発性メモリの一例としては、NAND型のフラッシュメモリ(以下、NANDメモリという)が知られている。NANDメモリは、NAND回路を格子状に並べたメモリセルアレイを備える。メモリセルアレイは、データの消去単位である複数のブロックに分割される。SSDは、NANDメモリの所望のブロックにデータを書き込むにあたって、対象のブロックに対する消去を実行する。その後、SSDは、消去されたブロックに対してデータを書き込む。また、NANDメモリは、特性の劣化を避けるために、ブロックの消去可能な回数について制限を設けている。
ところで、このようなメモリシステムにおいては、NANDメモリの各ブロックの寿命のばらつきを防ぐために、ブロック毎の消去回数(または書き込み回数)の平準化を図る処理が実行される。この処理は、ウェアレベリングとも称される。ウェアレベリングの手法として、書き換え頻度が低いスタティック(静的)データが書き込まれているブロックと、書き換え頻度が高いダイナミック(動的)データが書き込まれているブロックとの両者を対象とするSWL(Static Wear Leveling)が知られている。
米国特許第10417123号明細書 米国特許出願公開第2019/0205245号明細書 米国特許出願公開第2014/0801434号明細書
一つの実施形態は、ウェアレベリングを好適に制御することを可能とするメモリシステムおよびメモリシステムの制御方法を提供する。
一つの実施形態のメモリシステムは、消去単位であるブロックを複数含む不揮発性メモリと、前記不揮発性メモリに接続されるとともにホストに接続可能であるコントローラと、を備える。コントローラは、前記複数のブロック毎に、データが記憶されている状態を示す使用中であるか否かを示す第1情報、消去した回数を示す第2情報、及び次の消去までの待時間を示す第3情報を管理し、前記ホストから第1のシーケンシャルライトの要求を受信し、受信した前記第1のシーケンシャルライトを実行し、前記第1のシーケンシャルライトの後に前記ホストから第2のシーケンシャルライトの要求を受信する。コントローラは、受信した前記第2のシーケンシャルライトを実行するに際し、第1の差分と、第2の差分と、第3の差分と、に基づき、前記第1情報が前記使用中を示している第1ブロックに対する前記複数のブロック毎の消去回数を平準化する処理の実行要否を決定する。前記第1の差分は、前記第1ブロックに対して次に実行されるデータのライト前後における前記第1ブロックの待時間の差である。前記第2の差分は、前記第2のシーケンシャルライトの書き込み対象となった複数のブロックについて、前記第1のシーケンシャルライトにおける消去順序の第1の最大値と前記第2のシーケンシャルライトにおける消去順序の第2最大値との差分に対応する。前記第3の差分は、前記第1ブロックの消去回数と第1情報が前記使用中を示していない第2ブロックの消去回数との差である。
実施形態にかかるメモリシステムの構成を示す図。 実施形態の管理テーブルのデータ構成の一例を示す図。 実施形態の静的データ量が少ないアクセスパタンの例を示す図。 実施形態の静的データ量が多いアクセスパタンの例を示す図。 比較例1にかかる従来のSWLの実行例を示す図。 比較例1にかかる従来のSWLの別の実行例を示す図。 比較例1にかかる従来のSWLの別の実行例を示す図。 比較例1にかかる従来のSWLの別の実行例を示す図。 比較例1にかかる従来のSWLの別の実行例を示す図。 比較例1にかかる従来のSWLの別の実行例を示す図。 比較例1にかかる従来のSWLの別の実行例を示す図。 比較例1にかかる従来のSWLの別の実行例を示す図。 比較例1にかかる従来のSWLの別の実行例を示す図。 比較例2にかかる従来のSWLの実行例を示す図。 比較例2にかかる従来のSWLの実行例を示す図。 実施形態のSWL処理にかかる機能を示す機能ブロック図。 実施形態にかかる静的データ比率の低いアクセスパタンについてのSWLの発動要否の判断例を示す図。 実施形態にかかる静的データ比率の高いアクセスパタンについてのSWLの発動要否の判断例を示す図。 実施形態にかかるSWLの処理の流れを示すフローチャート。
以下に添付図面を参照して、実施形態にかかるメモリシステムおよびメモリシステムの制御方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
図1は、実施形態にかかるメモリシステム1の構成を示す図である。メモリシステム1は、例えばSSD(Solid State Drive)であり、ホスト2と接続可能である。メモリシステム1とホスト2との間の通信路の規格は、特定の規格に限定されない。一例では、PCIe(Peripheral Component Interconnect Express)又はSAS(Serial Attached SCSI)が採用され得る。
ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、サーバなどである。メモリシステム1は、ホスト2からアクセスコマンド(一例では、リードコマンドおよびライトコマンド)を受け付けることができる。
メモリシステム1は、メモリコントローラ10と、不揮発性メモリであるNAND型のフラッシュメモリ(以下、NANDメモリという)20と、電源回路30と、を備えている。
NANDメモリ20は、1以上のメモリチップ21によって構成される。ここでは、NANDメモリ20は、16個のメモリチップ21a~21pを備える。
NANDメモリ20を構成する16個のメモリチップ21(21a~21p)は、それぞれ、4つのチャネル(ch.0~ch.3)の何れかを介してメモリコントローラ10に接続されている。図1の例に従えば、メモリチップ21a~21dは、チャネル0(ch.0)に接続されている。メモリチップ21e~21hは、チャネル1(ch.1)に接続されている。メモリチップ21i~21lは、チャネル2(ch.2)に接続されている。メモリチップ21m~21pは、チャネル3(ch.3)に接続されている。
各チャネルは、I/O信号線および制御信号線を含む、配線群によって構成される。I/O信号線は、例えば、データ、アドレス、およびコマンドを送受信するための信号線である。制御信号線は、例えば、WE(ライトイネーブル)信号、RE(リードイネーブル)信号、CLE(コマンドラッチイネーブル)信号、ALE(アドレスラッチイネーブル)信号、WP(ライトプロテクト)信号等を送受信するための信号線である。
メモリコントローラ10は、各チャネルを個別に制御することができる。メモリコントローラ10は、4つのチャネルを同時に制御することによって、それぞれに接続されたチャネルが異なる合計4つのメモリチップ21を並列に動作させることができる。
なお、メモリシステム1に具備されるチャネルの数は、4つに限定されない。また、各チャネルに接続されているメモリチップ21の数は、4つに限定されない。
各メモリチップ21は、NANDメモリ20の記憶領域を構成するものであって、NAND回路を格子状に並べたメモリセルアレイを備えている。メモリセルアレイには、ホスト2から受信したデータおよびメモリシステム1の動作に必要となるデータ(ファームウェアプログラムおよび管理情報など)などが格納される。
メモリセルアレイは、複数のブロックに分割される。ブロックは、消去の単位である。メモリコントローラ10は、NANDメモリ20の所望のブロックにデータを書き込むにあたって、このブロック全体を消去した後、消去されたブロックに対してデータを書き込む。NANDメモリ20は、ブロックごとに、消去可能な回数に制限を設けている。
電源回路30は、メモリコントローラ10およびNANDメモリ20を駆動するための内部電源を生成する。電源回路30は、生成した内部電源をメモリコントローラ10およびNANDメモリ20のそれぞれに供給する。
メモリコントローラ10は、メモリシステム1の制御を実行する回路である。例えば、メモリコントローラ10は、後述のRAM(Random Access Memory)13を利用して、ホスト2とNANDメモリ20との間のデータ転送を実行する。
メモリコントローラ10は、CPU(Central Processing Unit)11、ホストインタフェースコントローラ(ホストI/Fコントローラ)12、RAM13、およびNANDコントローラ14を備える。メモリコントローラ10は、例えばSoC(System-On-Chip)として構成され得る。メモリコントローラ10は、複数のチップによって構成されてもよい。
NANDコントローラ14は、NANDメモリ20に対するアクセスを実行する回路である。
RAM13は、キャッシュ、バッファ、およびワーキングエリアとして機能するメモリである。例えば、RAM13は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、またはこれらの組み合わせによって構成される。なお、RAM13は、メモリコントローラ10の外部に配置されてもよい。
RAM13には、リングバッファ131が設けられている。また、RAM13には、管理テーブル132が設けられている。リングバッファ131および管理テーブル132は、CPU11によって操作される。
ここで、図2は管理テーブル132のデータ構成の一例を示す図である。図2に示すように、管理テーブル132は、NANDメモリ20のメモリチップ21のブロックを示すブロック番号毎に、空き、消去回数、及び消去順序を記憶する。空きは、ブロックを使用中なのか空き(すなわち未使用)なのかを示すデータである。消去回数は、ブロックのデータを消去した回数を示すデータである。データを消去した後、ブロックにデータが書き込まれるため、消去回数は、書き込み回数に対応する。消去順序は、次の消去までの待時間を表すものであってブロックのデータを消去した順序を特定することができるデータである。
なお、本実施形態においては、管理テーブル132は、消去順序をブロック毎の待時間として記憶するようにしたが、これに限るものではない。例えば、消去順序に代えて、ブロックのデータを消去した時刻である消去時刻、ブロックからデータを消去した後の経過時間などをブロック毎の待時間として記憶するようにしてもよい。
なお、RAM13に記憶されたデータは、内部電源が断たれる前にNANDメモリ20に、管理情報として書き込まれる。NANDメモリ20に書き込まれた管理情報は、不揮発に記憶される。そして、NANDメモリ20に記憶された管理情報は、次の内部電源が供給された後に、RAM13に展開される。
ホストインタフェースコントローラ12は、ホスト2とメモリコントローラ10との間の情報(コマンド、データ)の送受信を制御する。
CPU11は、メモリシステム1に予め記憶されるプログラム(ファームウェアプログラム)に基づいて動作するプロセッサである。ファームウェアプログラムは、例えばNANDメモリ20に記憶されている。CPU11は、メモリシステム1の起動時に、NANDメモリ20からRAM13にファームウェアプログラムをロードする。そして、CPU11は、RAM13にロードされたファームウェアプログラムを実行する。CPU11は、ファームウェアプログラムに従って、メモリコントローラ10の種々の機能を実現する。
例えば、CPU11は、SWL(Static Wear Leveling)を実行する。SWLは、NANDメモリ20の各ブロックの寿命が不均一に短くなるのを防ぐための処理である。CPU11は、SWLにおいて、書き換え頻度が低いスタティックデータ(静的データ)が書き込まれているブロックも対象にして、ブロック毎の消去回数(書き込み回数)の平準化を図る処理を実行する。より詳細には、SWLは、静的データが書き込まれているブロックと、書き換え頻度が高いダイナミックデータ(動的データ)が書き込まれているブロックとの両者を対象とし、ブロック毎の消去回数を平準化する。具体的には、CPU11は、SWLにおいて、静的データが書き込まれているブロックの消去回数が少なければ、空きの状態のブロックのうち消去回数が多いブロックへ静的データを書き換える。このようなSWLにより、消去回数の少ないブロックが空きの状態となり、そのブロックを動的データの書込みに利用させることで、ブロック毎の消去回数の平準化を図ることができる。
ところで、上述のようなSWLの実行に際しては、NANDメモリ20のブロックに対するアクセスパタンを考慮する必要がある。ここで、NANDメモリ20のブロックに対するアクセスパタンについて説明する。アクセスパタンは、静的データ量と動的データ量との比率に対応する。
図3は、静的データ量が少ない(すなわち、ほとんどない)アクセスパタンの例を示す図である。図3に示す例は、静的データ量が少ないアクセスパタンとして、NANDメモリ20のあるLBA(Logical Block Address)範囲に対するデータのシーケンシャルライトの繰り返しを想定したものである。あるLBA範囲にシーケンシャルライトが繰り返されることで、このLAB範囲のデータは、動的データとして扱われる。
図4は、静的データ量が多いアクセスパタンの例を示す図である。図4に示す例は、静的データ量が多いアクセスパタンとして、まず、プリコンディショニング(pre-conditioning:下地)としてNANDメモリ20の全LBA範囲に対するデータのシーケンシャルライトを少なくとも1回実施し、その後、NANDメモリ20の狭域のあるLBA範囲に対するデータのシーケンシャルライトの繰り返しを想定したものである。シーケンシャルライトが繰り返されることで、狭域のあるLBA範囲のデータは、動的データとして扱われる。シーケンシャルライトを少なくとも1回実施された後、データが書き込まれないLBA範囲のデータは、静的データとして扱われる。
ここで、本実施形態に対する比較例のSWLの課題について説明する。
ここで、図5は比較例1にかかるSWLの実行例を示す図である。図5に示す比較例1は、NANDメモリ内のブロック毎の消去回数のみに基づいてSWLの発動要否の判断を行う例を示すものである。例えばホストからの動的データのライトによる消去回数の増加速度に対してSWLによる静的データの書き換え速度が遅い場合、書き換え元候補ブロックと書き換え先候補ブロックの消去回数差が一定の条件より大きくなることがある。この状態で、比較例1にかかるSWLが実行される場合を説明する。ここで、消去回数の増加速度は、ある時間における消去回数の増加数を示し、SWLによる書き換え速度は、同じある時間におけるSWLによる書き換えの数を示す。図5に示した例では、一定の条件は、消去回数差が7である。
静的データが書き込まれている使用中ブロック(ブロック番号0)とある空きブロック(ブロック番号1)との消去回数差(9-1=8)は一定の条件(7)より大きい。このため書き換え元ブロック(ブロック番号0)から書き換え先ブロック(ブロック番号1)への、SWLによるデータの書き換えが実行される。このSWLは、静的データを書き換えているため適切な処理である。この書き換えの完了後、書き換え元ブロック(ブロック番号0)は空きブロックとなる。ここで空きブロックのうち書き換え回数が少ないブロック(ブロック番号0)が書き込み対象ブロックとして利用されて、ホストからの動的データがライトされたとする。書き込み対象ブロック(ブロック番号0)の利用時、消去が実行されるため、消去回数が+1(1+1=2)される。書き換え対象ブロック(ブロック番号0)への動的データの書込み完了後、空きブロック(ブロック番号2)の消去回数が、実行されたSWLによる書き換え前の書き換え先ブロック(ブロック番号1)と同じ(9)であった場合、空きブロック(ブロック番号2)と書き換え対象ブロック(ブロック番号0)との消去回数差(9-2=7)は一定の条件(7)と同じである。このため、書き換え対象ブロック(ブロック番号0)に書き込まれたデータが動的データであるにも関わらず、SWLによって、書き換え元ブロック(ブロック番号0)から書き換え先ブロック(ブロック番号2)へのデータの書き換えが発生してしまう。しかし、書き換え元ブロック(ブロック番号0)に書き込まれたデータは動的データであるため、この書き換えは無駄な書き換えとなる。
また、図6-1~図6-8は比較例1にかかるSWLの別の実行例を示す図である。図6-1~図6-8に示す比較例1は、NANDメモリ内のブロック毎の消去回数に基づいてSWLの発動要否の判断を行っていた例を示すものである。図6-1~図6-8では、ブロックが空きの状態は空きが×で示され、ブロックが空きでない状態は空きが○で示される。図6-1に示すように、ブロック番号0に静的データが格納されており、ブロック番号2~7に動的データが格納されているものとする。また、何らかの要因によりブロック番号1が空きであるものとする。なお、図6-1~図6-8において動的データに付された数字は、各図において格納された順番を示すものである。
このような状態で、図6-1に示すように、静的データが格納されているブロック(ブロック番号0)以外のブロックに対する動的データのシーケンシャルライトの繰り返しがあったとする。ここで、ブロック番号0が一定の条件(例えば、空きブロック(ブロック番号1)があり、その空きブロックとの消去回数差が7)に到達した場合、ブロック番号0の静的データが空きブロック(ブロック番号1)に書き換えられる。その後、図6-2に示すように、書き換え元のブロック番号0は、空きブロックとなる。また、ブロック番号1は、静的データが書き込まれ、空きの状態ではなくなり、及び消去回数が+1されて9となる。
その後、図6-3に示すように、静的データが格納されているブロック(ブロック番号1)以外のブロックに対する動的データのシーケンシャルライトの繰り返し(例えば、8回の繰り返し)があったとする。ここで、ブロック番号1が一定の条件(例えば、空きブロック(ブロック番号2)があり、その空きブロックとの消去回数差が7)に到達した場合、ブロック番号1の静的データが空きブロック(ブロック番号2)に書き換えられる。その後、図6-4に示すように、書き換え元のブロック番号1は、空きブロックとなる。また、ブロック番号2は、静的データが書き込まれ、空きの状態ではなくなり、及び消去回数が+1されて17となる。
さらに、図6-5に示すように、空きブロックとなったブロック番号1に動的データが書き込まれた場合において、動的データが格納されているブロック番号0と動的データが格納されているブロック番号3との消去回数差が一定の条件(ここでは、消去回数差が7)に到達している場合には、動的データを引越元候補とする。そして、図6-5に示すように、ブロック番号3を空きブロックとした後、ブロック番号0の動的データが、空きブロック(ブロック番号3)に書き換えられる。そして、図6-6に示すように、書き換え元のブロック番号0は、空きブロックとなる。また、ブロック番号3は、動的データが書き込まれ、空きの状態ではなくなり、及び消去回数が+1されて17となる。
その後、図6-7に示すように、静的データが格納されているブロック(ブロック番号2)以外のブロックに対する動的データのシーケンシャルライトの繰り返し(例えば、7又は8回の繰り返し)があったとする。ここで、ブロック番号2の静的データが一定の条件(例えば、空きブロック(ブロック番号3)があり、その空きブロックとの消去回数差が7)に到達した場合、ブロック番号2の静的データが空きブロック(ブロック番号3)に書き換えられる。図6-8に示すように、書き換え元のブロック番号2は、空きブロックとなる。また、ブロック番号3は、静的データが書き込まれ、空きの状態ではなくなり、及び消去回数が+1されて25となる。
すなわち、比較例1に示すように、NANDメモリ内のブロック毎の消去回数のみによるSWLの発動要否の判断では、全面シーケンシャルライトの繰り返しのような静的データ比率(NANDメモリ内の静的データ量の比率)の低いアクセスパタンにおいて動的データを書き換えてしまうという課題がある。このように近い将来において上書きが発生することが予想される動的データに対して静的データと同様にSWLによってデータを書き換えることが多発すると、信頼性向上に寄与しない書き込みまたは消去の回数(Write/Erase Cycles)が消費されて不要にSSDの寿命を短くすることになる。
ここで、図7-1および図7-2は比較例2にかかるSWLの実行例を示す図である。図7-1および図7-2に示す比較例2は、NANDメモリ内のブロック毎の消去回数および消去順序によってSWLの発動要否の判断を行う例を示すものである。比較例1においてアクセスパタンがNANDメモリの全LBA範囲に対する動的データのシーケンシャルライトの繰り返しであった場合、書き換え対象ブロック(例えば、ブロック番号0)に書き込まれるのは動的データであるため、2回目のSWLによる書き換えは無駄である。これに対して、図7-1に示すように、比較例2は、ブロックのデータを消去した順序である消去順序をブロック毎に記憶しておき、消去回数が多い場合であっても、消去順序の差分が一定量(図7-1では、例えば消去順序差が56以上)を満たさない場合、SWLの発動を抑制するようにしている。
しかしながら、比較例2は、将来においてNANDメモリの全LBA範囲に対してシーケンシャルライトを繰り返すことを想定している。このため、図7-2に示すように、比較例2は、NANDメモリの狭域のLBA範囲に対するシーケンシャルライトの繰り返しのような静的データ比率の高いアクセスパタンにおいては、消去順序の差分が一定量(図7-2では、例えば消去順序差が56以上)に到達するまで一部の局所的なブロックだけの消去回数を増加させることになる。このため、比較例2においては、図7-2に示すように、静的データを格納するブロック(例えば、ブロック番号0,4~7)と動的データを格納するブロック(例えば、ブロック番号1~3)との間の消去回数差の広がりを加速させてしまい、ブロック間の消去回数の平準化を阻害してしまうという課題がある。
そこで、本実施形態のメモリシステム1においては、静的データ比率(NANDメモリ内の静的データ量の比率)の低いアクセスパタンにおいてはSWL発動を抑制し、静的データ比率の高いアクセスパタンにおいてはSWLを発動させて積極的なデータの書き換えを実行することにより、ブロック間の消去回数の平準化を実現する。概略的には、メモリシステム1は、NANDメモリ20のメモリチップ21内のブロックの消去順序の差分履歴を導入することで静的データ比率を推測する。これにより、本実施形態のメモリシステム1は、静的データ比率の低いアクセスパタンであればSWL発動を抑制しつつ、静的データ比率の高いアクセスパタンであればSWLを発動させて消去回数差の平準化を加速させるようにしたものである。
本実施形態のメモリシステム1が実行するSWL処理について詳述する。
ここで、図8は、本実施形態のメモリシステム1が実行するSWL処理にかかる機能を示す機能ブロック図である。図8に示すように、CPU11は、プログラムに従うことにより、状態識別部110と、消去回数取得部111と、待時間取得部である消去順序取得部112と、差分算出部113と、推測部114と、決定部115として機能する。
状態識別部110は、NANDメモリ20のメモリチップ21内のブロック毎に、ブロックが使用中の状態か空きの状態かの識別を行う。そして、状態識別部110は、ブロックについて識別した状態の情報を、RAM13の管理テーブル132に記憶する。
消去回数取得部111は、NANDメモリ20のメモリチップ21内のブロック毎に、ブロックのデータを消去した回数である消去回数をカウントする。そして、消去回数取得部111は、カウントしたブロック毎の消去回数を、RAM13の管理テーブル132に記憶する。より詳細には、消去回数取得部111は、NANDメモリ20の所望のブロックにデータを書き込むにあたって、当該ブロックを消去したことに応じて、消去回数をインクリメントする。
消去順序取得部112は、NANDメモリ20のメモリチップ21内のブロック毎に、ブロックのデータを消去した順序である消去順序をカウントする。そして、消去順序取得部112は、カウントしたブロック毎の消去順序を、RAM13の管理テーブル132に記憶する。より詳細には、消去順序取得部112は、NANDメモリ20の所望のブロックにデータを書き込むにあたって、当該ブロックを消去したことに応じて、当該ブロックの次回の消去順序を算出する。
差分算出部113は、今回のシーケンシャルライトの周回で書き込み対象となった複数のブロックについて、前回のシーケンシャルライトにおける前回の消去順序の最大値と今回のシーケンシャルライトにおける今回の消去順序の最大値との差分(第2の待時間の差分)を算出する。そして、差分算出部113は、算出した差分を、差分履歴として、リングバッファ131に記憶する。なお、差分算出部113は、新しい差分履歴を、リングバッファ131の最古の差分履歴が書き込まれた位置に上書して記憶する。
なお、本実施形態においては、差分算出部113は、差分履歴をリングバッファ131に記憶するようにしたが、これに限るものではない。例えば、差分算出部113は、差分履歴を一般的なバッファに記憶するようにしてもよい。
推測部114は、書き換え元ブロックに対する、次に実行される書き換えの前後における消去順序の差分(第1の待時間の差分)と、リングバッファ131に記憶された差分(第2の待時間の差分)とに基づいて、NANDメモリ20のメモリチップ21内の静的データ量の比率(静的データ比率)を推測する。推測部114は、リングバッファ131に記憶された消去順序差分(第2の待時間の差分)履歴の平均値を係数として、後述するSWL閾値を変化させる。
決定部115は、管理テーブル132に記憶されている書き換え元ブロックの消去回数と書き換え先ブロックの消去回数との差、および推測部114で推測した静的データ比率に基づき、SWLの発動要否を決定する。また、決定部115は、SWLを発動する場合、SWLの発動対象となるブロックを決定する。
次に、本実施形態のメモリシステム1におけるSWLの発動要否の判断処理について詳述する。
まず、静的データ比率の低いアクセスパタンについてのSWLの発動要否の判断例について説明する。
図9は、静的データ比率の低いアクセスパタンについてのSWLの発動要否の判断例を示す図である。図9に示す例は、静的データ比率の低いアクセスパタンとして、NANDメモリ20の全LBA範囲に対する動的データのシーケンシャルライトの繰り返しを想定したものである。なお、データの書き換え元のブロックを、使用中のブロック群内において消去回数が最小のブロック(ブロック番号0)とする。また、データの書き換え先のブロックをブロック群内の1つの空きブロック(ブロック番号1)とする。
まず、決定部115は、書き換え先のブロック(ブロック番号1)の消去回数と書き換え元のブロック(ブロック番号0)の消去回数との差が、一定の条件(例えば、消去回数差が7)以上であるかを判定する。図9に示す例では、書き換え先のブロック(ブロック番号1)の消去回数は7、書き換え元のブロック(ブロック番号0)の消去回数は1である。したがって、書き換え先のブロック(ブロック番号1)の消去回数と書き換え元のブロック(ブロック番号0)の消去回数との差は6であるので、決定部115は、SWLの発動を抑制する。
図9に示す例は、シーケンシャルライトを1周実行する前後の状態を示すものである。なお、図9において、左側に示す管理テーブル132が、シーケンシャルライトを1周実行する前の状態を示し、右側に示す管理テーブル132が、シーケンシャルライトを1周実行した後の状態を示す。図9に示す例では、シーケンシャルライトを1周実行した後、書き換え先のブロック(ブロック番号1)の消去回数は8、書き換え元のブロック(ブロック番号0)の消去回数は1である。したがって、書き換え先のブロック(ブロック番号1)の消去回数と書き換え元のブロック(ブロック番号0)の消去回数との差は7である。決定部115は、書き換え先のブロック(ブロック番号1)の消去回数と書き換え元のブロック(ブロック番号0)の消去回数との差が一定の条件(例えば、消去回数差が7)以上であると判定する。決定部115は、判定の結果、書き換え元のブロック(ブロック番号0)から書き換え先のブロック(ブロック番号1)へのSWLを発動することを決定する。
次に、推測部114は、書き換え元のブロック(ブロック番号0)の次回の消去順序と現在の消去順序との差分(第1の待時間の差分)がSWL閾値以上であるかを判定する。ここで、SWL閾値は、消去順序差分履歴の平均値を10倍した値である。
まず、差分算出部113は、書き換え先ブロックの書き換え前後におけるアクセス範囲を示す第2の待時間の差分、すなわち前回のシーケンシャルライトのアクセス範囲における前回の消去順序の最大値と、今回のシーケンシャルライトのアクセス範囲における今回の消去順序の最大値と、の差分を算出する。図9に示す例では、今回のシーケンシャルライトの周回で書き込み対象となった複数のブロックのうち、例えば消去順序が最大であるブロック番号7に着目する。ブロック番号7は、管理テーブル132で管理されている前回のシーケンシャルライトの周回における前回の消去順序の最大値は56であり、管理テーブル132で管理されている今回のシーケンシャルライトの周回を実行後の今回の消去順序の最大値は63である。差分算出部113は、63-56=7を差分履歴として、リングバッファ131に記憶する。図9に示す例では、今回のシーケンシャルライトの周回で書き込み対象となった複数のブロックについて、リングバッファ131に記憶された差分履歴の平均値は7である。
ここで、差分履歴の平均値は、NANDメモリ20に対するデータのアクセス範囲(レンジ)に関する指標である。すなわち、差分履歴の平均値が大きい(NANDメモリ20のメモリチップ21内のブロック数に近い)ことは、アクセス範囲が、NANDメモリ20の広域のLBA範囲に対するアクセスパタンであることを示す。差分履歴の平均値が小さい(NANDメモリ20のメモリチップ21内のブロック数から遠い)ことは、アクセス範囲が、NANDメモリ20の狭域のLBA範囲に対するアクセスパタンであることを示す。
また、差分履歴の平均値のX倍は、NANDメモリ20のアクセス範囲(レンジ)に対するシーケンシャルライトの周回数Xを示すものである。本実施形態においては、NANDメモリ20の寿命と信頼性とを担保すべく、周回数X=10(周)とした例を示している。
推測部114は、状態識別部110で使用中であると識別された書き換え元ブロックの、次に実行される書き換えの前後における消去順序の差分(第1の待時間の差分)と、リングバッファ131に記憶された消去順序差分(第2の待時間の差分)履歴の平均値‘7’に基づき、メモリシステム1内の静的データ量の比率(静的データ比率)を推測する。図9に示す例では、書き換え元のブロック(ブロック番号0)の次回の消去順序は64であり、書き換え元のブロック(ブロック番号0)の現在の消去順序は0である。したがって、推測部114は、64-0<7×10となることから、書き換え元のブロック(ブロック番号0)の次回の消去順序と書き換え元のブロック(ブロック番号0)の現在の消去順序との差が、差分履歴の平均値の10倍(SWL閾値)以上でないと判定する。この場合、推測部114は、静的データ量が少なく、動的データ量が多いとみなし、静的データ比率が低いと推測する。
そして、決定部115は、管理テーブル132に記憶されている書き換え元ブロックの消去回数と書き換え先ブロックの消去回数との差、および推測部114で推測された静的データ比率に基づき、SWLの発動要否の判断を行う。図9に示す例では、決定部115は、書き換え元ブロックの消去回数と書き換え先ブロックの消去回数との差は開いているが、書き換え元候補は動的データであるとみなして、SWLの発動を抑制する。
次に、静的データ比率の高いアクセスパタンについてのSWLの発動要否の判断例について説明する。
図10は、静的データ比率の高いアクセスパタンについてのSWLの発動要否の判断例を示す図である。図10に示す例は、静的データ比率の高いアクセスパタンとして、NANDメモリ20の全LBA範囲に対する静的データのシーケンシャルライトを1周実施した後、全LBA範囲のうち狭域のLBA範囲に対する動的データのシーケンシャルライトの繰り返しを想定したものである。なお、データの書き換え元のブロックを、使用中のブロック群内において消去回数が最小のブロック(ブロック番号0)とする。また、データの書き換え先のブロックをブロック群内の1つの空きブロック(ブロック番号1)とする。
まず、決定部115は、書き換え先のブロック(ブロック番号1)の消去回数と書き換え元のブロック(ブロック番号0)の消去回数との差が、一定の条件(例えば、消去回数差が7)以上であるかを判定する。図10に示す例では、書き換え先のブロック(ブロック番号1)の消去回数は7、書き換え元のブロック(ブロック番号0)の消去回数は1である。したがって、書き換え先のブロック(ブロック番号1)の消去回数と書き換え元のブロック(ブロック番号0)の消去回数との差は6であるので、決定部115は、SWLの発動を抑制する。
図10に示す例は、シーケンシャルライトを1周実行する前後の状態を示すものである。なお、図10において、左側に示す管理テーブル132が、シーケンシャルライトを1周実行する前の状態を示し、図10の右側に示す管理テーブル132が、シーケンシャルライトを1周実行した後の状態を示す。図10に示す例では、シーケンシャルライトを1周実行した後、書き換え先のブロック(ブロック番号1)の消去回数は8、書き換え元のブロック(ブロック番号0)の消去回数は1である。したがって、書き換え先のブロック(ブロック番号1)の消去回数と書き換え元のブロック(ブロック番号0)の消去回数との差は7である。決定部115は、書き換え先のブロック(ブロック番号1)の消去回数と書き換え元のブロック(ブロック番号0)の消去回数との差が一定の条件(例えば、消去回数差が7とする)以上であると判定する。決定部115は、判定の結果、書き換え元のブロック(ブロック番号0)から書き換え先のブロック(ブロック番号1)へのSWLを発動することを決定する。
次に、推測部114は、書き換え元のブロック(ブロック番号0)の次回の消去順序と現在の消去順序との差分が、SWL閾値以上であるかを判定する。ここでも、SWL閾値は、消去順序差分履歴の平均値を10倍した値である。
まず、差分算出部113は、前回のシーケンシャルライトのアクセス範囲における前回の消去順序の最大値と、今回のシーケンシャルライトのアクセス範囲における今回の消去順序の最大値と、の差分を算出する。図10に示す例では、今回のシーケンシャルライトの周回で書き込み対象となった複数のブロックのうち、例えば消去順序が最大であるブロック番号2に着目する。ブロック番号2は、管理テーブル132で管理されている前回のシーケンシャルライトの周回における前回の消去順序の最大値は26であり、管理テーブル132で管理されている今回のシーケンシャルライトの周回を実行後の今回の消去順序の最大値は28である。差分算出部113は、28-26=2を差分履歴として、リングバッファ131に記憶する。図10に示す例では、今回のシーケンシャルライトの周回で書き込み対象となった複数のブロックについて、リングバッファ131に記憶された差分履歴の平均値は2である。
なお、本実施形態においては、図9および図10に示すように、リングバッファ131は、4つのバッファエントリに差分履歴を順に記憶するようにしているが、これに限るものではなく、5以上のバッファエントリに差分履歴を順に記憶するようにしてもよい。具体的には、リングバッファ131は、NANDメモリ20のブロック数に応じた数分のバッファエントリに差分履歴を順に記憶するようにしてもよい。なお、バッファエントリの数は可変であってもよい。
推測部114は、状態識別部110で使用中であると識別された書き換え元ブロックの、次に実行される書き換えの前後における消去順序の差分(第1の待時間の差分)と、リングバッファ131に記憶された消去順序差分(第2の待時間の差分)履歴の平均値‘2’に基づき、メモリシステム1内の静的データ量の比率(静的データ比率)を推測する。図10に示す例では、書き換え元のブロック(ブロック番号0)の次回の消去順序は29であり、書き換え元のブロック(ブロック番号0)の現在の消去順序は0である。したがって、推測部114は、29-0>2×10となることから、書き換え元のブロック(ブロック番号0)の次回の消去順序と書き換え元のブロック(ブロック番号0)の現在の消去順序との差が、差分履歴の平均値の10倍(SWL閾値)以上であると判定する。この場合、推測部114は、静的データ量が多く、動的データ量が少ないとみなし、静的データ比率が高いと推測する。
そして、決定部115は、管理テーブル132に記憶されている書き換え元ブロックの消去回数と書き換え先ブロックの消去回数との差、および推測部114で推測された静的データ比率に基づき、SWLの発動要否の判断を行う。図10に示す例では、決定部115は、消去回数差が開いており、書き換え元候補は静的データであるとみなして、SWLを発動する。
図11は、SWLの処理の流れを示すフローチャートである。
図11に示すように、まず、状態識別部110は、NANDメモリ20のメモリチップ21内のブロック毎に、使用中の状態か空きの状態かの識別を行う。そして、状態識別部110は、識別した状態の情報を、RAM13の管理テーブル132に記憶する(S1)。
次に、推測部114は、状態識別部110で使用中であると識別された所定の書き換え元ブロックの書き換えの前後における第1の待時間の差分と、状態識別部110で使用中でないと識別された所定の書き換え先ブロックの書き換えの前後におけるアクセス範囲に対応する第2の待時間の差分とに基づいて、NANDメモリ20のメモリチップ21内の静的データ量の比率である静的データ比率を推測する(S2)。
次に、決定部115は、書き換え元ブロックの消去回数と書き換え先ブロックの消去回数との差、および静的データ比率に基づき、ブロック毎の消去回数を平準化するSWL(Static Wear Leveling)の発動要否とSWLの発動対象ブロックとを決定する(S3)。
このように、本実施形態のメモリシステム1によれば、ブロック毎の消去回数およびブロック毎の待時間だけでなく、静的データ比率も含めて、SWL発動の判断と発動対象ブロックとを決定することで、アクセスパタン毎の判断を適正化することができる。
本実施形態のメモリシステム1によれば、書き換え先ブロックの書き換え前後における待時間(例えば、消去順序)の差分値の履歴を記憶し、この履歴からNANDメモリ20内の静的データ量の比率である静的データ比率を推測する。そして、メモリシステム1は、推測した静的データ比率からSWLの発動と対象ブロックを決定する。
これにより、NANDメモリ20の全LBA範囲に対する動的データのシーケンシャルライトの繰り返しなどの動的データ比率が高いアクセスパタンにおいては、動的データの書き換えを抑制することができる。また、NANDメモリ20の全LBA範囲のうち狭域のLBA範囲に対する動的データのシーケンシャルライトの繰り返しのような動的データ比率が低いアクセスパタンにおいては、積極的な書き換えによりブロック毎の消去回数の平準化を実現することができる。
すなわち、本実施形態のメモリシステム1によれば、静的データ比率の低いアクセスパタンにおいて動的データを書き換えてしまうという課題、静的データ比率の高いアクセスパタンにおいてブロック毎の消去回数差の平準化を阻害してしまうという課題、を回避することができる。
本実施形態のメモリシステム1のメモリコントローラ10で実行されるプログラムは、NANDメモリ20等に予め組み込まれて提供される。
本実施形態のメモリシステム1のメモリコントローラ10で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD-ROM、フレキシブルディスク(FD)、CD-R、DVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
さらに、本実施形態のメモリシステム1のメモリコントローラ10で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態のメモリシステム1のメモリコントローラ10で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
なお、本技術は以下のような構成も採ることができる。
(1)消去単位であるブロックを複数含む不揮発性メモリと、
前記不揮発性メモリに接続されるとともにホストに接続可能であるコントローラと、
を備え、
前記コントローラは、
前記複数のブロック毎に、データが記憶されている状態を示す使用中であるか否かを示す第1情報、消去した回数を示す第2情報、及び次の消去までの待時間を示す第3情報を管理し、
前記ホストから第1のシーケンシャルライトの要求を受信し、
受信した前記第1のシーケンシャルライトを実行し、
前記第1のシーケンシャルライトの後に前記ホストから第2のシーケンシャルライトの要求を受信し、
受信した前記第2のシーケンシャルライトを実行するに際し、第1の差分と、第2の差分と、第3の差分と、に基づき、前記第1情報が前記使用中を示している第1ブロックに対する前記複数のブロック毎の消去回数を平準化する処理の実行要否を決定し、
前記第1の差分は、前記第1ブロックに対して次に実行されるデータのライト前後における前記第1ブロックの待時間の差であり、
前記第2の差分は、前記第2のシーケンシャルライトの書き込み対象となった複数のブロックについて、前記第1のシーケンシャルライトにおける消去順序の第1の最大値と前記第2のシーケンシャルライトにおける消去順序の第2最大値との差分に対応し、
前記第3の差分は、前記第1ブロックの消去回数と第1情報が前記使用中を示していない第2ブロックの消去回数との差である、
メモリシステム。
(2)前記コントローラは、今回のシーケンシャルライトのアクセスパタンが、前記複数のブロックに対する、前記不揮発性メモリ内の静的データ量の比率である静的データ比率の低いアクセスパタンである場合、前記平準化する処理を実行せず、前記今回のシーケンシャルライトのアクセスパタンが、前記複数のブロックに対する前記静的データ比率の高いアクセスパタンである場合、前記平準化する処理として、書き換え元ブロックに記憶されているデータを書き換え先ブロックへ書き換える処理を実行する、
(1)に記載のメモリシステム。
(3)前記コントローラは、前記第1の差分と、前記第2の差分の履歴に基づく閾値と、の比較に応じて、前記不揮発性メモリ内の静的データ量の比率である静的データ比率を推測する、
(1)に記載のメモリシステム。
(4)前記第2の差分の履歴は、リングバッファに保存される、
(1)に記載のメモリシステム。
(5)前記ブロック毎の待時間は、前記不揮発性メモリ内のブロックのデータを消去した順序である消去順序、前記不揮発性メモリ内のブロックのデータを消去した時刻である消去時刻、又は前記不揮発性メモリ内のブロックからデータを消去した後の経過時間である、
(1)に記載のメモリシステム。
(6)消去単位であるブロックを複数含む不揮発性メモリを備えるメモリシステムの制御方法であって、
前記複数のブロック毎に、データが記憶されている状態を示す使用中であるか否かを示す第1情報、消去した回数を示す第2情報、及び次の消去までの待時間を示す第3情報を管理することと、
ホストから第1のシーケンシャルライトの要求を受信することと、
受信した前記第1のシーケンシャルライトを実行することと、
前記第1のシーケンシャルライトの後に前記ホストから第2のシーケンシャルライトの要求を受信することと、
受信した前記第2のシーケンシャルライトを実行するに際し、第1の差分と、第2の差分と、第3の差分と、に基づき、前記第1情報が前記使用中を示している第1ブロックに対する前記複数のブロック毎の消去回数を平準化する処理の実行要否を決定することと、
を含み、
前記第1の差分は、前記第1ブロックに対して次に実行されるデータのライト前後における前記第1ブロックの待時間の差であり、
前記第2の差分は、前記第2のシーケンシャルライトの書き込み対象となった複数のブロックについて、前記第1のシーケンシャルライトにおける消去順序の第1の最大値と前記第2のシーケンシャルライトにおける消去順序の第2最大値との差分に対応し、
前記第3の差分は、前記第1ブロックの消去回数と第1情報が前記使用中を示していない第2ブロックの消去回数との差である、
メモリシステムの制御方法。
1 メモリシステム
20 不揮発性メモリ
110 状態識別部
111 消去回数取得部
112 待時間取得部
114 推測部
115 決定部
131 リングバッファ
米国特許第10417123号明細書 米国特許出願公開第2019/0205245号明細書 米国特許出願公開第2014/0181434号明細書

Claims (6)

  1. 消去単位であるブロックを複数含む不揮発性メモリと、
    前記不揮発性メモリに接続されるとともにホストに接続可能であるコントローラと、
    を備え、
    前記コントローラは、
    前記複数のブロック毎に、データが記憶されている状態を示す使用中であるか否かを示す第1情報、消去した回数を示す第2情報、及び次の消去までの待時間を示す第3情報を管理し、
    前記ホストから第1のシーケンシャルライトの要求を受信し、
    受信した前記第1のシーケンシャルライトを実行し、
    前記第1のシーケンシャルライトの後に前記ホストから第2のシーケンシャルライトの要求を受信し、
    受信した前記第2のシーケンシャルライトを実行するに際し、第1の差分と、第2の差分と、第3の差分と、に基づき、前記第1情報が前記使用中を示している第1ブロックに対する前記複数のブロック毎の消去回数を平準化する処理の実行要否を決定し、
    前記第1の差分は、前記第1ブロックに対して次に実行されるデータのライト前後における前記第1ブロックの待時間の差であり、
    前記第2の差分は、前記第2のシーケンシャルライトの書き込み対象となった複数のブロックについて、前記第1のシーケンシャルライトにおける消去順序の第1の最大値と前記第2のシーケンシャルライトにおける消去順序の第2最大値との差分に対応し、
    前記第3の差分は、前記第1ブロックの消去回数と第1情報が前記使用中を示していない第2ブロックの消去回数との差である、
    メモリシステム。
  2. 前記コントローラは、今回のシーケンシャルライトのアクセスパタンが、前記複数のブロックに対する、前記不揮発性メモリ内の静的データ量の比率である静的データ比率の低いアクセスパタンである場合、前記平準化する処理を実行せず、前記今回のシーケンシャルライトのアクセスパタンが、前記複数のブロックに対する前記静的データ比率の高いアクセスパタンである場合、前記平準化する処理として、書き換え元ブロックに記憶されているデータを書き換え先ブロックへ書き換える処理を実行する、
    請求項1に記載のメモリシステム。
  3. 前記コントローラは、前記第1の差分と、前記第2の差分の履歴に基づく閾値と、の比較に応じて、前記不揮発性メモリ内の静的データ量の比率である静的データ比率を推測する、
    請求項1に記載のメモリシステム。
  4. 前記第2の差分の履歴は、リングバッファに保存される、
    請求項1に記載のメモリシステム。
  5. 前記ブロック毎の待時間は、前記不揮発性メモリ内のブロックのデータを消去した順序である消去順序、前記不揮発性メモリ内のブロックのデータを消去した時刻である消去時刻、又は前記不揮発性メモリ内のブロックからデータを消去した後の経過時間である、
    請求項1に記載のメモリシステム。
  6. 消去単位であるブロックを複数含む不揮発性メモリを備えるメモリシステムの制御方法であって、
    前記複数のブロック毎に、データが記憶されている状態を示す使用中であるか否かを示す第1情報、消去した回数を示す第2情報、及び次の消去までの待時間を示す第3情報を管理することと、
    ホストから第1のシーケンシャルライトの要求を受信することと、
    受信した前記第1のシーケンシャルライトを実行することと、
    前記第1のシーケンシャルライトの後に前記ホストから第2のシーケンシャルライトの要求を受信することと、
    受信した前記第2のシーケンシャルライトを実行するに際し、第1の差分と、第2の差分と、第3の差分と、に基づき、前記第1情報が前記使用中を示している第1ブロックに対する前記複数のブロック毎の消去回数を平準化する処理の実行要否を決定することと、
    を含み、
    前記第1の差分は、前記第1ブロックに対して次に実行されるデータのライト前後における前記第1ブロックの待時間の差であり、
    前記第2の差分は、前記第2のシーケンシャルライトの書き込み対象となった複数のブロックについて、前記第1のシーケンシャルライトにおける消去順序の第1の最大値と前記第2のシーケンシャルライトにおける消去順序の第2最大値との差分に対応し、
    前記第3の差分は、前記第1ブロックの消去回数と第1情報が前記使用中を示していない第2ブロックの消去回数との差である、
    メモリシステムの制御方法。
JP2021152564A 2021-09-17 2021-09-17 メモリシステムおよびメモリシステムの制御方法 Pending JP2023044509A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021152564A JP2023044509A (ja) 2021-09-17 2021-09-17 メモリシステムおよびメモリシステムの制御方法
US17/547,590 US11803320B2 (en) 2021-09-17 2021-12-10 Memory system and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021152564A JP2023044509A (ja) 2021-09-17 2021-09-17 メモリシステムおよびメモリシステムの制御方法

Publications (1)

Publication Number Publication Date
JP2023044509A true JP2023044509A (ja) 2023-03-30

Family

ID=85572025

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021152564A Pending JP2023044509A (ja) 2021-09-17 2021-09-17 メモリシステムおよびメモリシステムの制御方法

Country Status (2)

Country Link
US (1) US11803320B2 (ja)
JP (1) JP2023044509A (ja)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4461170B2 (ja) * 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
JP2011070346A (ja) * 2009-09-25 2011-04-07 Toshiba Corp メモリシステム
US20140181434A1 (en) 2012-12-20 2014-06-26 Virtium Technology, Inc. Integrated and naturalized static wear-leveling for block mapping
US10417123B1 (en) 2013-05-16 2019-09-17 Western Digital Technologies, Inc. Systems and methods for improving garbage collection and wear leveling performance in data storage systems
US9152555B2 (en) * 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9710176B1 (en) * 2014-08-22 2017-07-18 Sk Hynix Memory Solutions Inc. Maintaining wear spread by dynamically adjusting wear-leveling frequency
CN108089994B (zh) 2018-01-04 2021-06-01 威盛电子股份有限公司 存储装置以及数据保存方法
TW201947402A (zh) * 2018-05-14 2019-12-16 深圳大心電子科技有限公司 記憶體管理方法以及儲存控制器

Also Published As

Publication number Publication date
US11803320B2 (en) 2023-10-31
US20230087002A1 (en) 2023-03-23

Similar Documents

Publication Publication Date Title
CN107622023B (zh) 限制数据存储设备中的访问操作
CN107622022B (zh) 数据存储设备中的高速缓存超量配置
US8909846B2 (en) Memory storage device and control method thereof
KR101300657B1 (ko) 비휘발성 메모리 및 버퍼 메모리를 포함하는 메모리 시스템및 그것의 데이터 읽기 방법
JP5066241B2 (ja) メモリシステム
JP5418808B2 (ja) 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置
KR100974954B1 (ko) 플래시 메모리를 이용한 저장장치에서의 읽기 웨어 레벨링방법
KR101924022B1 (ko) 메모리 시스템 및 그것의 페이지 교체 방법
US8850105B2 (en) Method for controlling memory system, information processing apparatus, and storage medium
US20080140918A1 (en) Hybrid non-volatile solid state memory system
TWI682279B (zh) 儲存裝置及電腦系統
US20170160989A1 (en) Solid state disk and method for implementing trim command of the same
JP2017228287A (ja) フラッシュメモリの割当方法及びそれを用いたソリッドステートドライブ
CN109697027B (zh) 包括共享存储器区域和专用存储器区域的数据存储设备
JP2011128998A (ja) 半導体記憶装置
CN111026326A (zh) 存储器控制器、存储装置及管理元数据的方法
US20200293221A1 (en) Storage device and computing device including storage device
US20150127886A1 (en) Memory system and method
US20180276123A1 (en) Memory system and control method
JP2011070365A (ja) メモリシステム
CN111736755A (zh) 数据存储装置、其操作方法以及包括其的存储系统
JP2019148913A (ja) メモリシステム
US9977732B1 (en) Selective nonvolatile data caching based on estimated resource usage
KR101033465B1 (ko) 플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법
JP2023044509A (ja) メモリシステムおよびメモリシステムの制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211223