JP2022536056A - 不揮発性メモリにおける摩耗を意識したブロック・モード変換 - Google Patents

不揮発性メモリにおける摩耗を意識したブロック・モード変換 Download PDF

Info

Publication number
JP2022536056A
JP2022536056A JP2021571287A JP2021571287A JP2022536056A JP 2022536056 A JP2022536056 A JP 2022536056A JP 2021571287 A JP2021571287 A JP 2021571287A JP 2021571287 A JP2021571287 A JP 2021571287A JP 2022536056 A JP2022536056 A JP 2022536056A
Authority
JP
Japan
Prior art keywords
physical blocks
write
block
physical
stream
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2021571287A
Other languages
English (en)
Other versions
JPWO2020250071A5 (ja
JP7513356B2 (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2022536056A publication Critical patent/JP2022536056A/ja
Publication of JPWO2020250071A5 publication Critical patent/JPWO2020250071A5/ja
Application granted granted Critical
Publication of JP7513356B2 publication Critical patent/JP7513356B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • 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/1016Performance 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/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/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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/7211Wear leveling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

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)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

不揮発性メモリは複数の物理記憶ブロックを含み、各物理記憶ブロックはそれぞれの複数のセルを含み、複数のセルのそれぞれは個々に複数ビットのデータを記憶することが可能である。コントローラは、複数の物理ブロックのうちの物理ブロックを、セルあたりより多くのビットを記憶するための第1の(たとえば、QLC)モードで動作する物理ブロックを含む第1のプールに割り当て、複数の物理ブロックのうちの他の物理ブロックを、セルあたりより少ないビットを記憶するための第2の(たとえば、SLC)モードで動作する物理ブロックを含む第2のプールに割り当てる。コントローラは、第1のプールおよび第2のプールの間で物理ブロックを転送することを、転送される物理ブロックについて測定されたビット・エラー・レートに少なくとも基づいて行う。

Description

本発明はデータ処理およびデータ記憶に関し、より詳細には、ブロックが、異なるセルあたりのビット記憶容量を提供する複数のブロック・モードで動作することが可能な不揮発性メモリ・システムに関する。さらにより詳細には、本発明は、異なるブロック・モード間での不揮発性メモリ・システム内の物理記憶ブロックの摩耗(wear)を意識した変換に関する。
NANDフラッシュ・メモリは、メモリ・セルあたり1ビット以上のデータをトランジスタのフローティング・ゲートまたは同様の電荷捕獲構造上の電荷として記憶する、電気的にプログラム可能で消去可能な不揮発性メモリ・テクノロジーである。フローティング・ゲート上の電荷量により、トランジスタの閾値電圧が変化する。適切な読み出し電圧を印加して電流量を測定することにより、メモリ・セルのプログラムされた閾値電圧を決定することができ、ひいては記憶された情報を検出することができる。典型的な実装形態では、NANDフラッシュ・メモリ・アレイは、物理メモリのブロック(「消去ブロック」とも呼ばれる)単位で構造化され、各ブロックは複数の物理ページを含み、各物理ページは多数のメモリ・セルを含む。メモリ・セルにアクセスするために利用されるワード線およびビット線の配置によって、フラッシュ・メモリ・アレイは一般にページ単位でプログラムされるが、ブロック単位で消去される。
フラッシュ・ストレージ・テクノロジーは、フラッシュ・ストレージのギガバイト単価を下げる目的に牽引されて、過去10年間でビット記憶密度の目覚ましい成長を遂げた。このトレンドの主要な推進力の1つは、フラッシュ・セルあたりに記憶されるビット数が着実に増加していることである。たとえば、フラッシュ・セルあたりに記憶することができるビット数は、1(シングル・レベル・セル(SLC))から2(マルチ・レベル・セル(MLC))、3(3レベル・セル(TLC:Three Level Cell))へ、最近では4(クアッド・レベル・セル(QLC))まで着実に増加している。フラッシュ・セルあたりに記憶することができるビット数の増加は、セルあたりのビット数の増加に伴って耐久性およびパフォーマンスが低下するという代償を払っている。
エンタープライズ・クラスのフラッシュ・コントローラは、新世代のNANDフラッシュ・メモリの耐久性およびパフォーマンスの制限を改善するために様々な技術を利用する。たとえば、フラッシュ・コントローラは1つまたは複数のフラッシュ管理技術を利用し得、これには、高度な誤り訂正符号の実装、ビット・エラー・レートを低減させるための電圧レベルの調整、書き込みヒート(heat)に基づいてデータを分別することによる内部のガベージ・コレクションのオーバーヘッドの削減、ブロックに基づくブロックの管理(すなわち、ヘルス・ビニング)、ならびにヘルスを意識したウェア・レベリングおよびデータ配置の実行、が含まれる。これらの高度なフラッシュ管理技術によって寿命およびパフォーマンスが向上しているにもかかわらず、ビット密度が増加し続けるので、既存のフラッシュ管理技術のみでは、許容可能なデバイス寿命(たとえば、重い書き込みワークロードの下でのエンタープライズ・クラスのSSDに対する7年以上の保証期間)を保証することができない。たとえば、QLC NANDフラッシュ・テクノロジーでは、TLC NANDフラッシュ・テクノロジーと比較して記憶密度が33%向上するが、定格耐用年数はTLC NANDフラッシュの数分の1(たとえば、ブロックあたりほんの数千プログラム/消去(P/E:program/erase)サイクル)である。
デバイスの耐久性を高めるための有望な方法の1つは、NANDフラッシュ・メモリの複数のモードで動作する機能を利用することである。たとえば、一部のTLC NANDフラッシュ・メモリは、特定の選択されたブロックがセルあたり1ビットのみを記憶するSLCモードをサポートすることにより、記憶密度を犠牲にして、選択されたブロックのパフォーマンスおよび耐久性を向上させる。SLCモードで構成されたブロックは、1~2桁多いP/Eサイクルを維持することができるが、TLCモードで構成されたブロックの記憶容量の3分の1しか提供することができない。そのようなシステムでは、頻繁に書き込まれるデータをSLCブロックに記憶することができ、頻繁に書き込まれないデータをネイティブTLCモードで動作するブロックに記憶することができる。
複数の動作モードをサポートする既存のフラッシュ・コントローラは階層型アーキテクチャを採用していることが多く、到来したユーザ書き込みは、最初は低い記憶密度の層(SLC層など)のブロックに記憶される。低い記憶密度の層のストレージが使い果たされると(または他の何らかの閾値充填レベルに達すると)、フラッシュ・コントローラは、データを低い記憶密度の層から高い記憶密度の層(たとえば、TLC層)に移動させることを、好ましくは将来上書きされる可能性が最も低いデータから開始して行うことにより、低い記憶密度の層のスペースを解放するデステージ処理を開始する。次いで、フラッシュ・コントローラは、高い記憶密度の層に存在するデータの管理を従来の方法で行い、たとえば、定期的にガベージ・コレクション用に選択されたブロックから有効なデータを再配置し、ガベージ・コレクションされたブロックを消去し、その後、低い記憶密度の層からデステージされたデータを消去したブロックに再度書き込むことによって行う。一般に、このタイプの従来の階層型ストレージ・アーキテクチャでは、ブロックは低密度のストレージ階層または高密度のストレージ階層のいずれかに静的に割り当てられる。
本発明では、異なるビット・記憶密度のブロックを用いた多層メモリ・ストレージ・システムの様々な層への完全に静的なブロックの割り当てでは、所与の層が早期に記憶容量を使い果たしたり、その耐久限度に達したりし得ることを認識している。この問題に対処するために、不揮発性メモリのブロックを動作モード間で選択的に変換することができる。
本発明の一態様では、不揮発性メモリを動作させる方法であって、不揮発性メモリは複数の物理記憶ブロックを含み、各物理記憶ブロックはそれぞれの複数のセルを含み、複数のセルのそれぞれは個々に複数ビットのデータを記憶することが可能であり、方法は、コントローラが、複数の物理ブロックのうちの物理ブロックを、セルあたりより多くのビットを記憶するための第1のモード(たとえば、QLCモード)で動作する物理ブロックを含む第1のプールに割り当て、複数の物理ブロックのうちの他の物理ブロックを、セルあたりより少ないビットを記憶するための第2のモード(たとえば、SLCモード)で動作する物理ブロックを含む第2のプールに割り当てることと、コントローラが、第1のプールおよび第2のプールの間で物理ブロックを転送することであって、転送される物理ブロックについて測定されたビット・エラー・レートに少なくとも基づいて行われる、転送することと、を含む、方法を提供する。
少なくとも1つの実施形態では、コントローラは、第1のプールから第2のプールに、より高いビット・エラー・レートを有する物理ブロックを転送し、第2のプールから第1のプールに、より低いビット・エラー・レートを有する物理ブロックを転送する。
少なくとも1つの実施形態では、コントローラは、第1および第2のプールのそれぞれについて、異なる書き込みヒートの複数の書き込みストリームのそれぞれのデータを記憶するために割り当てられた物理ブロックの数と、複数の書き込みストリームのそれぞれにおけるプログラム/消去(P/E)サイクル数とを追跡する。追加的に、コントローラは、複数の書き込みストリームのそれぞれについて、書き込みストリームに割り当てられた物理ブロックの数と、書き込みストリームに割り当てられた物理ブロックのP/Eサイクルの総数とに基づいて、それぞれのストリーム摩耗指標を計算する。次いで、コントローラは、(1)複数の書き込みストリームの中から選択された書き込みストリームと、(2)選択された書き込みストリームのストリーム摩耗指標と、(3)選択された書き込みストリームのデータを記憶するために割り当てられた物理ブロックのブロック・ヘルスとに基づいて、転送用に物理ブロックを選択することができる。複数の書き込みストリームの全てにおける物理ブロックのブロック・ヘルスを、たとえば、物理ブロックをプログラミングした直後に測定されるビット・エラー・レートから決定することができる。
少なくとも1つの実施形態では、選択された書き込みストリームが複数の書き込みストリーム全ての中で最大の摩耗を反映するストリーム摩耗指標を有する場合に、コントローラが、選択された書き込みストリームに割り当てられた物理ブロックの中から最も良好なヘルスの物理ブロックを転送用に選択し、選択された書き込みストリームが複数の書き込みストリーム全ての中で最小の摩耗を反映するストリーム摩耗指標を有する場合に、コントローラが、選択された書き込みストリームに割り当てられた物理ブロックの中から最も不良なヘルスの物理ブロックを転送用に選択するように、コントローラは転送用に物理ブロックを選択する。
少なくとも1つの実施形態では、コントローラは、第1および第2のプールのうちの所与の1つから利用可能なプログラムされていない物理ブロックの数が閾値を満たさないことに基づいて、第1および第2のプールの間で物理ブロックを転送する。
一実施形態によるデータ処理環境の高レベルのブロック図である。 図1Aのデータ・ストレージ・システムのフラッシュ・カードのより詳細なブロック図である。 一実施形態による例示的なNANDフラッシュ・メモリ・モジュールを示す図である。 一実施形態による、フラッシュ管理機能と、フラッシュ管理に利用されるデータ構造との高レベルのフロー図である。 物理ブロックのプールが、セルあたりに異なる数のビットを記憶する異なるモードで動作するように構成される例示的な階層型ストレージ・アーキテクチャを示す図である。 例示的な階層型ストレージ・アーキテクチャについてのライト・アンプリフィケーション対デバイス使用率のグラフである。 一実施形態による、不揮発性メモリを構成するための例示的な処理の高レベルの論理フローチャートである。 一実施形態による、ブロック・プール間でブロックを動的に転送するための例示的な処理の高レベルの論理フローチャートである。
図を参照すると、特に図1Aを参照すると、本明細書でさらに説明する不揮発性メモリ・アレイを有するデータ・ストレージ・システム120を含む例示的なデータ処理環境100の高レベルのブロック図が示されている。図示のように、データ処理環境100は、命令およびデータを処理する1つまたは複数のプロセッサ104を有するプロセッサ・システム102などの1つまたは複数のホストを含む。プロセッサ・システム102は、プロセッサ104によって実行される処理のプログラム・コード、オペランド、または実行結果あるいはその組み合わせを記憶し得るローカル・ストレージ106(たとえば、ダイナミック・ランダム・アクセス・メモリ(DRAM)またはディスク)を追加的に含み得る。様々な実施形態では、プロセッサ・システム102は、たとえば、モバイル・コンピューティング・デバイス(たとえば、スマートフォンまたはタブレット)、ラップトップまたはデスクトップのパーソナル・コンピュータ・システム、サーバ・コンピュータ・システム(たとえば、インターナショナル・ビジネス・マシーンズ(R)社から入手できるPOWER(R)シリーズのサーバの1つ)、あるいはメインフレーム・コンピュータ・システムとすることができる。プロセッサ・システム102はまた、任意のメモリ・キャッシュ、メモリ・コントローラ、ローカル・ストレージ、I/Oバス・ハブなどと組み合わせられた、ARM(R)、POWER(R)、インテル(R)x86、または他の任意のプロセッサなどの様々なプロセッサを使用する組み込みプロセッサ・システムとすることもできる。
各プロセッサ・システム102は入力/出力(I/O)アダプタ108をさらに含み、これはI/Oチャネル110を介してデータ・ストレージ・システム120に直接(すなわち、介在デバイスなしで)または間接的に(すなわち、少なくとも1つの中間デバイスを介して)結合される。いくつかの実施形態では、データ・ストレージ・システム120は、プロセッサ・システム102に統合され得る。様々な実施形態において、I/Oチャネル110は、たとえば、ファイバ・チャネル(FC)、FCオーバー・イーサネット(R)(FCoE)、インターネット・スモール・コンピュータ・システム・インターフェース(iSCSI)、インフィニバンド、トランスポート制御プロトコル/インターネット・プロトコル(TCP/IP)、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)などを含む、知られているまたは将来開発される通信プロトコルのうちの任意の1つまたは組み合わせを利用し得る。I/Oチャネル110を介して伝達されるI/O要求は、プロセッサ・システム102がデータ・ストレージ・システム120にデータを要求する読み出し要求と、プロセッサ・システム102がデータ・ストレージ・システム120へのデータの記憶を要求する書き込み要求と含む。
必須ではないが、図示の実施形態では、データ・ストレージ・システム120は複数のインターフェース・カード122を含み、これを経由して、データ・ストレージ・システム120は、I/Oチャネル110を介してホストのI/O要求を受信し、それに応答する。各インターフェース・カード122は、フォールト・トレランスおよび負荷分散を容易にするために、複数の安価ディスク冗長アレイ(RAID:Redundant Array of Inexpensive Disks)コントローラ124のそれぞれに結合される。転じて、RAIDコントローラ124のそれぞれは、不揮発性記憶媒体に(たとえば、PCIeバスによって)結合され、不揮発性記憶媒体は、図示の例では、NANDフラッシュ・メモリを支える複数のフラッシュ・カード126を含む。他の実施形態では、代替または追加あるいはその両方の不揮発性ストレージ・デバイスを利用することができる。
図示の実施形態では、データ・ストレージ・システム120の動作は、冗長なシステム管理コントローラ(SMC:system management controller)123によって管理され、SMC123はインターフェース・カード122およびRAIDコントローラ124に結合される。様々な実施形態では、システム管理コントローラ123は、ハードウェア、あるいはファームウェアもしくはソフトウェアまたはその両方を実行するハードウェアを利用して実装することができる。
図1Bは、図1Aのデータ・ストレージ・システム120のフラッシュ・カード126の例示的な実施形態のより詳細なブロック図を示している。フラッシュ・カード126は、フラッシュ・カード126とRAIDコントローラ124との間のインターフェースとして機能するゲートウェイ130を含む。ゲートウェイ130は、汎用プロセッサ(GPP:general-purpose processor)132に結合され、GPP132は、ゲートウェイ130によって受信した要求に対して前処理を実行し、またはフラッシュ・カード126による要求へのサービス提供をスケジューリングし、あるいはその両方を行うように(たとえば、プログラム・コードによって)構成することができる。GPP132は、GPPメモリ134(たとえば、ダイナミック・ランダム・アクセス・メモリ(DRAM))に結合され、GPPメモリ134は、GPP132によってその処理の最中に作成、参照、または修正、あるいはその組み合わせが行われるデータ、あるいはフラッシュ・コントローラ140のうちの1つまたは複数宛てにゲートウェイ130を介して流れるデータをバッファリングできると好都合である。
ゲートウェイ130はさらに複数のフラッシュ・コントローラ140に結合され、各フラッシュ・コントローラ140は、それぞれのNANDフラッシュ・メモリ・システム150を制御する。フラッシュ・コントローラ140は、たとえば、特定用途向け集積回路(ASIC)、および/またはフィールド・プログラマブル・ゲート・アレイ(FPGA)、ならびに/あるいはマイクロプロセッサによって実装することができ、各フラッシュ・コントローラ140には、フラッシュ・コントローラ・メモリ142(たとえば、DRAM)が関連付けられている。フラッシュ・コントローラ140がFPGAで実装される実施形態では、GPP132は、データ・ストレージ・システム120の起動中にフラッシュ・コントローラ140をプログラムして構成し得る。起動後、通常動作時に、フラッシュ・コントローラ140は、NANDフラッシュ・メモリ・システム150に記憶されたデータを読み出すこと、またはNANDフラッシュ・メモリ・システム150にデータを記憶すること、あるいはその両方を要求する読み出し要求および書き込み要求をゲートウェイ130から受信する。フラッシュ・コントローラ140は、たとえば、NANDフラッシュ・メモリ・システム150にアクセスして要求されたデータをNANDフラッシュ・メモリ・システム150に対して読み書きすることによって、またはNANDフラッシュ・メモリ・システム150に関連付けられたメモリ・キャッシュ(図示せず)にアクセスすることによって、これらの要求にサービス提供する。
フラッシュ・コントローラ140は、NANDフラッシュ・メモリ・システム150内の特定のメモリ位置へのアクセスを可能にする論理/物理アドレス変換を提供するフラッシュ変換レイヤ(FTL:flash translation layer)を実装する。一般に、プロセッサ・システム102などのホスト・デバイスからフラッシュ・コントローラ140によって受信される要求は、データがアクセスされる(読み出しまたは書き込みされる)論理ブロック・アドレス(LBA:logical block address)を含み、書き込み要求の場合は、データ・ストレージ・システム120に記憶される書き込みデータも含む。要求は、アクセスするデータの量(またはサイズ)も指定し得る。データ・ストレージ・システム120によってサポートされるプロトコルおよび機能に応じて、他の情報も伝達され得る。フラッシュ変換レイヤは、RAIDコントローラ124から受信したLBAを、NANDフラッシュ・メモリ・システム150内の対応する物理位置に割り当てられた物理アドレスに変換する。フラッシュ・コントローラ140は、アドレス変換を実行し、またはフラッシュ・コントローラ・メモリ142に記憶されると好都合であり得る論理/物理変換テーブル(LPT:logical-to-physical translation table)などの論理/物理変換データ構造内に論理アドレスと物理アドレスとの間のマッピングを記憶し、あるいはその両方を行い得る。
NANDフラッシュ・メモリ・システム150は、様々な実施形態において多くの形態をとり得る。図1Bに示す実施形態では、各NANDフラッシュ・メモリ・システム150は、複数の(たとえば、32個の)個別にアドレス指定可能なNANDフラッシュ・メモリ・ストレージ・デバイス152を含む。図示の例では、フラッシュ・メモリ・ストレージ・デバイス152は、基板に取り付けられたフラッシュ・メモリ・モジュール、たとえば、マルチ・レベル・セル(MLC)、3レベル・セル(TLC)、またはクアッド・レベル・セル(QLC)のNANDフラッシュ・メモリ・モジュールの形態をとる。フラッシュ・メモリ・ストレージ・デバイス152によって提供される実質的な記憶容量は、たとえば、フラッシュ・コントローラ140、またはGPP132、RAIDコントローラ124、もしくはSMC123などの高レベルのコントローラ、あるいはその両方によるデータ圧縮の実装を通じて増加させることができる。
ここで図2を参照すると、図1BのNANDフラッシュ・メモリ・ストレージ・デバイス152のうちのいずれかを実装するために利用することができる例示的なフラッシュ・メモリ・モジュール200のブロック図が示されている。フラッシュ・メモリ・モジュール200は1つまたは複数のメモリ・ダイを含み、各メモリ・ダイは、NANDフラッシュ・メモリ・セルの2次元または3次元アレイから形成される少なくとも1つのメモリ・アレイ202を実装する。図2に示すように、メモリ・アレイ202内のメモリ・セルは、複数の物理ブロック204内に物理的に配置され、各物理ブロックは複数の物理ページ206を含む。これらのページはページ・グループ単位で管理することができ、各ページ・グループは、たとえば、共通のワード線に結合された全てのページ、3D NANDフラッシュ内の1つまたは複数のレイヤの全てのページ、1つまたは複数のレイヤ内のページのセット、あるいは一般的には同様の特性を有するページで形成することができる。
当業者に知られているように、メモリ・アレイ202で利用されるようなNANDフラッシュ・メモリは、プログラムされる前に消去されなければならない。さらに、NANDフラッシュ・メモリはその構造によって制約され得(ただし、必ずしもそうではない)、消去できる最小記憶粒度がブロック204であり、読み出し要求または書き込み要求によってアクセスできる最小記憶粒度が単一の物理ページ206のサイズに固定される。この点に関して、ホスト・デバイスによって提供されるLBAは論理アドレス空間における論理ページに対応し、各論理ページは典型的には4キロバイト(kB)のサイズを有することを理解されたい。対照的に、物理ページ206は典型的にはより大きいサイズ、たとえば、16kBを有するので、複数の論理ページをホストすることができる。
フラッシュ・メモリ・モジュール200は、メモリ・アレイ202のワード線をアドレス指定することができる行デコーダ210と、メモリ・アレイ202のビット線をアドレス指定することができる列デコーダ212とをさらに含む。また、フラッシュ・メモリ・モジュール200は、物理ページ206のメモリ・セルを並列にプログラムまたは読み出し可能にする読み出し/書き込み回路214を含む。フラッシュ・コントローラ200は制御回路205を追加的に含み、制御回路205は、メモリ・アレイ202内の物理ページ206へ行われる読み出しアクセスおよび書き込みアクセス、ブロック204の消去を含む、メモリ・アレイ202の動作と、メモリ・アレイ202に印加される関連する電圧の振幅、持続時間、および極性とのチップ・レベルの制御を提供する。
データ・ストレージ・システム120の一例示的実施形態の一般的な物理構造を説明したので、ここでデータ・ストレージ・システム120の特定の動作態様を図3を参照して説明し、図3は、一実施形態によるGPP132またはフラッシュ・コントローラ140あるいはその両方によって利用されるフラッシュ管理機能およびデータ構造の高レベルのフロー図である。
データ・ストレージ・システム120は、一般に、外部デバイス(たとえば、ホスト)がNANDフラッシュ・メモリ・システム150内の物理メモリ位置を直接アドレス指定すること、またはそれらに直接アクセスすること、あるいはその両方を許可しない。代わりに、データ・ストレージ・システム120は一般に、それぞれが連続した論理アドレス空間を有する1つまたは複数の論理ボリュームをホスト・デバイスに提示するように構成され、それによってホスト・デバイスが、論理アドレス空間内の論理ブロック・アドレス(LBA)に対してデータを読み書きすることを可能にしつつ、様々なレベルのコントローラ(たとえば、システム管理コントローラ123、RAIDコントローラ124、フラッシュ・コントローラ140、およびGPP132)のうちの1つまたは複数が、様々なLBAに関連付けられたデータがNANDフラッシュ・メモリ・システム150を含む物理メモリ位置において実際に存在する場所を制御することを可能にする。このようにして、NANDフラッシュ・メモリ・システム150のパフォーマンスおよび寿命をインテリジェントに管理および最適化することができる。
図示の実施形態では、各フラッシュ・コントローラ140は、関連付けられたフラッシュ・コントローラ・メモリ142などに記憶することができる論理/物理変換(LPT)テーブル300などの論理/物理アドレス変換データ構造を使用して、関連付けられたLBAのセットに対して論理/物理アドレス変換を実行する。フラッシュ・コントローラ140に供給される論理アドレスは、データ・ストレージ・システム120に当初供給された論理アドレスと異なり得ることに留意にすべきであり、その理由は、データ・ストレージ・システム120内の様々なコンポーネントが、外部デバイスとフラッシュ・コントローラ140との間でアドレス変換動作を実行し得るためである。
GPP132上で動作しているフラッシュ管理コードは、GPPメモリ134などに記憶され得る即時使用可能(RTU:ready-to-use)キュー306内で使用準備ができているNANDフラッシュ・メモリ・システム150の消去済みブロックを追跡する。図示の実施形態では、GPP132上で動作しているフラッシュ管理コードは、チャネルまたはプレーンあたり(すなわち、データ・バスあたり)1つのRTUキュー306を維持し、再利用される各消去済みブロックの識別子が、そのチャネルまたはプレーンに対応するRTUキュー306にエンキューされる。追加的に、異なるヘルス・グレード、ヒート・ビン/書き込みストリーム、またはブロック動作モード、すなわち、SLCもしくはQLC動作モードに対して別々のRTUキュー306が維持され得る。GPP132上で動作しているフラッシュ管理コードによって実行されるブロック・ストライプ構築機能320は、RTU306キューにエンキューされた消去済みブロックからデータおよび関連するパリティ情報を記憶するための新しいブロック・ストライプを構築する。次いで、新しいブロック・ストライプは、データ配置のためにフラッシュ・コントローラ140にキューイングされる。ブロック・ストライプは、異なるチャネルに存在するブロックで形成されることが好ましく、これは、ブロック・ストライプ構築機能320が、新しいブロック・ストライプの各ブロックを異なるRTUキュー306から引き出すことによって、ブロック・ストライプを構築できると好都合であるということを意味する。一般に、ブロック・ストライプ構築機能320は、ほぼ等しいヘルス(すなわち、予想される残存耐用年数)のブロックからストライプを構築しようと試みる。
プロセッサ・システム102などのホストから受信した書き込み要求に応答して、フラッシュ・コントローラ140のデータ配置機能310は、LPTテーブル300を参照することにより、書き込み要求に示されたターゲットLBAがNANDフラッシュ・メモリ・システム150内の物理メモリ・ページに現在マッピングされているか否かを判定し、マッピングされている場合、ターゲットLBAに現在関連付けられている各データページのステータスを変更して、関連付けられたデータが無効になったことを示すようにする。また、データ配置機能310は、必要に応じてページ・ストライプを割り当てて、書き込み要求の書き込みデータと、もしあれば、書き込み要求の対象となる既存のページ・ストライプからの更新されないデータ(すなわち、論理ページよりも小さい書き込み要求の場合に、上書きされない、リード・モディファイ・ライトの方法で処理する必要がある、同じ論理アドレスへの前回の書き込みから残っている有効なデータ)とを記憶し、または書き込み要求の書き込みデータと、もしあれば、書き込み要求の対象となる既存のページ・ストライプからの更新されない(すなわち、まだ有効な)データとを、空きスペースが残っている既に割り当て済みのページ・ストライプに記憶し、あるいはその両方を行う。ページ・ストライプは、データを保持するために既に割り当てられているブロック・ストライプから、またはブロック・ストライプ構築機能320によって構築される新しいブロック・ストライプから割り当てられ得る。好ましい実施形態では、ページ・ストライプの割り当ては、割り当てに利用可能なブロックのヘルスと、書き込みデータのLBAの「ヒート」(すなわち、推定または測定された書き込みアクセス頻度)とに基づくことができる。次いで、データ配置機能310は、書き込みデータと、関連するメタデータ(たとえば、巡回冗長符号(CRC)および誤り訂正符号(ECC)の値)と、ページ・ストライプのパリティ情報とを割り当てられたページ・ストライプに書き込む。フラッシュ・コントローラ140はまた、書き込みデータを記憶するために利用される物理ページを、ホスト・デバイスによって示されたLBAに関連付けるようにLPTテーブル300を更新する。その後、フラッシュ・コントローラ140は、図3にさらに示すように、LPTテーブル300を参照することによって、ホスト読み出し要求にサービス提供するためにデータにアクセスすることができる。
ブロック・ストライプ内の全てのページが書き込まれると、フラッシュ・コントローラ140は、ブロック・ストライプを占有済みブロック・キュー302の1つに配置し、GPP132上で動作しているフラッシュ管理コードはこれを利用してガベージ・コレクションを容易にする。上記のように、書き込み処理を通じて、ページが無効化されるので、NANDフラッシュ・メモリ・システム150の一部は不使用になる。関連付けられたフラッシュ・コントローラ140(またはGPP132、あるいはその両方)は最終的に、ガベージ・コレクタ312によって実行されるガベージ・コレクションを通じて、このスペースを回収する必要がある。ガベージ・コレクタ312は、たとえば、ブロック・ストライプ内のブロック204のヘルス、および消去ブロック204内のデータのうちどれくらいが無効であるかを含むいくつかの要因に基づいて、ガベージ・コレクションのために特定のブロック・ストライプを選択する。図示の例では、ガベージ・コレクションがブロック・ストライプ全体に実行され、GPP132上で動作しているフラッシュ管理コードは、リサイクルする準備ができたブロック・ストライプのログを再配置キュー304内にとり、再配置キュー304は、関連付けられたフラッシュ・コントローラ・メモリ142またはGPPメモリ134内に実装できると好都合である。
GPP132またはフラッシュ・コントローラ140によって実行されるフラッシュ管理機能は、再配置キュー304にエンキューされたブロック・ストライプに保持されたデータを再配置する再配置機能314を追加的に含む。そのようなデータを再配置するために、再配置機能314は、データ配置機能310に再配置書き込み要求を発行して、古いブロック・ストライプの有効なデータがNANDフラッシュ・メモリ・システム150内の新しいブロック・ストライプに書き込まれるように要求する。また、再配置機能314は、そのデータの論理アドレスおよび物理アドレスの間の現在の関連付けを削除するようにLPTテーブル300を更新する。残りの有効なデータ全てが古いブロック・ストライプから移動されると、古いブロック・ストライプはブロック・ストライプ解体機能316に渡され、ブロック・ストライプ解体機能316は、古いブロック・ストライプをその構成要素ブロック204に分解して、ブロック204の関連付けを解除する。次いで、解体されたブロック・ストライプを以前形成していたブロック204のそれぞれは、フラッシュ・コントローラ140、または関連するフラッシュ・メモリ・モジュール200の制御回路205、あるいはその両方の指示の下で消去され、各消去済みブロックの対応するプログラム/消去(P/E)サイクル・カウント334がインクリメントされる。各消去済みブロック204のヘルス指標332(たとえば、ビット・エラー・レート(BER)指標、訂正不可能なエラー、P/Eサイクル・カウントなど)に基づいて、各消去済みブロック204は、GPP132上で実行されるフラッシュ管理機能のうちのブロック・リタイア機能318によってリタイアされ(すなわち、使用中止にされ)、または代替的には、ブロック204の識別子を関連付けられたGPPメモリ134内の適切な即時使用可能(RTU)キュー306に配置することによって、再利用のために準備される。
図3にさらに示すように、GPP132またはフラッシュ・コントローラ140あるいはその両方の上で実行されるフラッシュ管理機能は、バックグラウンド・ヘルス・チェッカー330を追加的に含む。プロセッサ・システム102などのホストの読み出し要求および書き込み要求とは独立して動作するバックグラウンド・ヘルス・チェッカー330は、占有済みブロック・キュー302に記録されたブロック・ストライプに属するブロックに関する1つまたは複数のブロック・ヘルス指標332を継続的に決定する。ブロック・ヘルス指標332のうちの1つまたは複数に基づいて、バックグラウンド・ヘルス・チェッカー330は、再配置機能314による処理のために、ブロック・ストライプを再配置キュー304に配置する。バックグラウンド・ヘルス・チェッカーによって監視および記録されることが好ましい主要なブロック・ヘルス指標332は、有効なブロックおよび物理ページについて観察されるビット・エラー・レート(BER)指標に関連するものであり、たとえば、各ブロックの最悪ページBER、各ブロックの平均ページBER、各ブロックの最悪ページBERおよび平均ページBERの変化率などを含み得る。可能な最も正確なヘルス推定値を得るために、有効なデータおよび無効なデータの分析からヘルスを決定することにより、ほぼ完全に無効なデータを含むブロックを十分に分析して、ブロック全体のヘルスを決定するようにすることができる。
バックグラウンド・ヘルス・チェッカー330に組み込むことができ、または別個に実装することができるGPP132またはフラッシュ・コントローラ140あるいはその両方の1つの機能は、メモリ・アレイ202のメモリ・セル内に記憶されたデータ・ビットをデコードするために利用される読み出し電圧閾値336の定期的な適応(較正)である。これらの読み出し電圧閾値336は、任意の所望のレベルの粒度(たとえば、ページごと、ブロック内のページ・グループごと、ブロックごとなど)に個別に定義できるものであるが、1つまたは複数のビット・エラー指標を向上させるように選択されることが好ましい。図3にさらに示すように、GPP132またはフラッシュ・コントローラ140あるいはその両方は、読み出し電圧閾値336のインテリジェントな適応を容易にするために、追加の統計量を追跡することが好ましい。これらの追加の統計量は、たとえば、各ブロックが受けたプログラム/消去サイクルの数を特定するP/Eサイクル・カウント334と、所与のメモリ単位(たとえば、ページ、ページ・グループ、またはブロック、あるいはその組み合わせ)がプログラムされた後に読み出された回数を示す読み出しカウント338とを含むことができる。また、これらの統計量は、メモリ単位の読み出し電圧閾値を適応させたときからの経過時間を示すメモリ単位ごとのカウンタ、または各ブロックの読み出し電圧閾値を最後に適応させたとき以降にそのブロックが受けたプログラム/消去サイクルの数を示すブロックごとのカウンタ、あるいはその両方などの較正トリガ340を含むことができる。
ここで図4を参照すると、不揮発性メモリ・デバイスに実装され得る例示的なストレージ・アーキテクチャが示されている。この例では、GPP132またはフラッシュ・コントローラ140あるいはその両方(本明細書では一般に「コントローラ」と呼ぶ)は、物理ブロック204の複数のプールを実装するようにNANDフラッシュ・メモリ・システム150内のフラッシュ・メモリ・ストレージ・デバイス152の一部または全てを構成し、異なるブロック・プール内の物理ブロック204は、セルあたりに異なる数のビットを記憶する異なるモードで動作するように構成される。したがって、この例では、メモリ・アレイ202の全てが、たとえば、セルあたり4ビットを記憶することが可能なQLCフラッシュ・メモリを含むが、コントローラは、フラッシュ・ストレージ・デバイス152のメモリ・アレイ202内の物理ブロック204の一部を、完全にプログラムされたブロックがセルあたり4ビットを記憶するQLCプール400に割り当て、メモリ・アレイ202の他の物理ブロック204を、完全にプログラムされたブロックがセルあたり1ビットのみを記憶するSLCプール402に割り当てる。プール・メンバーシップ情報を、たとえば、GPPメモリ124またはフラッシュ・コントローラ・メモリ142あるいはその両方に、ブロック・モード・メタデータ335として記憶することができる。上記のように、このように複数の異なるモードでブロックを動作させることにより、頻繁に書き込まれるLBAがSLCプール402内の物理ブロック204にマッピングされる場合に、パフォーマンスまたは耐久性あるいはその両方を向上させることができる。
必須ではないが、いくつかの実施形態では、コントローラは、矢印404で示すように、ホスト書き込み要求に含まれるデータが、SLCプール402から選択された物理ブロック204に最初に書き込まれる階層構成でQLCプール400およびSLCプール402を編成する。SLCプール402が使用を通じて満杯になり、より多くの容量がSLCプール402に必要とされ、または希望され、あるいはその両方になると、コントローラは、矢印406で示すように、再配置書き込みによってSLCプール402からQLCプール400にデータをデステージする。ブロックが摩耗を受けたときにブロック・プール400および402の両方で物理ブロック204を適切に供給できるようにするために、コントローラは追加的に、記憶容量または耐久性あるいはその両方を提供するために、必要に応じて、または要望に応じて、あるいはその両方に応じて、プール400および402の間でブロック204を転送(再割り当て)する。ブロック・プール400および402の間の(データではなく)物理ブロック204の転送は、図4に矢印408で示している。
本開示は、ブロック・プール400および402の間でブロックを転送する処理は、注意深く設計されなければ、不必要に、(エラー回復活動の増加に起因する)パフォーマンスの低下、さらにはエラー回復が失敗した場合の(たとえば、ビット・エラー・レートが高いブロックがブロック・プール402からブロック・プール400に転送された場合の)データ損失につながり得ることを理解している。一般に、コントローラは、ブロック・プール400からやや不良な/最も不良なヘルスのブロックを選択してブロック・プール402に転送することによって、また、ブロック・プール402からやや良好な/最も良好なヘルスのブロックを選択してブロック・プール400に転送することによって、ブロック・プール400および402の間でブロックを転送する。
本開示は、この一般的なモード変換ポリシーは、一部のシステムには適切であるが、ヒート分別(heat segregation)を利用するシステム、またはデバイス使用率が非常に高いシステムでは準最適であり、これらは摩耗の加速、さらにはデバイスの早期廃棄に直結し得ることを理解している。これらの悪影響の1つの理由は、QLCプール400内のブロック204の摩耗(たとえば、平均P/Eサイクルによって測定されるもの)が、特定の条件下で、ライト・アンプリフィケーションに部分的に起因して、一般にSLCプール402のブロック204の摩耗よりもはるかに高い場合があることである。図5は、図4に示す例示的な階層型ストレージ・アーキテクチャについてのライト・アンプリフィケーション対デバイス使用率のグラフである。図示のように、高いデバイス使用率の下では(たとえば、フラッシュ・メモリ・デバイスの90%以上にデータが書き込まれている場合)、QLCプール400のライト・アンプリフィケーションは指数関数的に増加して、QLCプール400のブロックがますます急速に摩耗し得る。したがって、以下でより詳細に論じるように、モード変換ポリシーは、ブロック・プール間で転送するブロックを選択する場合に、ブロックの摩耗を考慮に入れることが好ましい。
ここで図6を参照すると、一実施形態による、不揮発性メモリを構成するための例示的な処理の高レベルの論理フローチャートが示されている。図示の処理は、たとえば、データ・ストレージ・システム120の起動時に、ハードウェア、ファームウェア、ソフトウェア、またはその組み合わせで、コントローラ(たとえば、GPP132またはフラッシュ・コントローラ140あるいはその両方)によって実行することができる。本明細書に提示した他の論理フローチャートと同様に、動作は厳密な時系列順ではなく論理的な順序で提示しており、いくつかの実施形態では、動作は、提示した順序とは異なる順序で、または同時に実行することができる。
図6の構成処理は、ブロック600から始まり、次いでブロック602に進み、ブロック602は、フラッシュ・メモリ・デバイス152のコントローラが所望の数のブロック・プールを構成することを示している。図4の例では、コントローラは、ブロック602において2つのブロック・プール、すなわち、QLCブロック・プール400およびSLCブロック・プール402を実装する。他の実施形態では、より多くのブロック・プール、または別のブロック・モード(たとえば、TLCもしくはMLC)で動作するブロック・プール、あるいはその両方を実装することができる。コントローラは追加的に、初期数の物理ブロック204を各ブロック・プールに割り当て、各物理ブロック204のブロック・プール・メンバーシップに基づいて、各物理ブロック204の対応するブロック・モードをブロック・モード・メタデータ335に記録する。
処理はブロック602からブロック604に進み、ブロック604は、コントローラが、ブロック602において実装された各ブロック・プールが処理される処理ループに入ることを示している。コントローラがブロック604において、全てのブロック・プールがまだ処理されていないと判定した場合、処理はブロック610に移り、ブロック610は、コントローラが、処理すべき次のブロック・プール(たとえば、QLCプール400またはSLCプール402)を選択することを示している。次いで、ブロック612において、コントローラは、選択されたブロック・プールに属するブロック204に対して所望の数のヘルス・グレードを構成する。様々な実施形態において、ヘルス・グレードの数は、異なるものにすることができるが、実験的には、2以上8以下のヘルス・グレードの数が効果的であることがわかっている。たとえば、図4に示す一実施形態では、コントローラは、ブロック612において4つのヘルス・グレード410a~410dまたは412a~412dを構成する。本明細書で利用するヘルス・グレードは、具体的には、単なるプログラム/消去(P/E)サイクル数以外の少なくとも1つの基準、たとえば、物理メモリの各ブロック(または各ブロック内の物理ページ、あるいはその両方)の1つまたは複数のビット・エラー指標に基づくように定義される。たとえば、一実施形態では、様々なヘルス・グレードが、プログラミング後の少数の読み出しアクセス内で決定される最悪ページBERのそれぞれの範囲によって定義され、その理由は、このビット・エラー指標がブロックの摩耗の永続的な影響を正確に反映しているためである。測定された最悪ページBERに基づくと、最も良好なヘルスのブロックは、プログラミング直後の最悪ページBERが最も低いものであり、最も不良なヘルスのブロックは、プログラミング直後の最悪ページBERが最も高いものである。
ブロック614において、コントローラは追加的に、フラッシュ・メモリ・ストレージ・デバイス152によって扱われるLBAに対して所望の数のヒート・ビンを構成する。各ヒート・ビンは、LBAの書き込みヒート(すなわち、書き込み頻度)のそれぞれの範囲に対応する。様々な実施形態において、ヒート・ビンの数は、異なるものにすることができるが、実験的には、2以上8以下のヒート・ビンの数が効果的であることがわかっている。たとえば、一実施形態では、コントローラはブロック614において4つのヒート・ビンを構成し、それぞれ、最も高い頻度で書き込まれるホットLBA、より少ない頻度で書き込まれるウォームLBA、さらに少ない頻度で書き込まれるクールLBA、および最も少ない頻度で書き込まれるコールドLBAに対応する。所与のヒート・ビン内のLBAを対象とするホスト書き込み要求のセットを本明細書では「書き込みストリーム」と呼ぶ。ブロック614において構成されるヒート・ビン(ひいては書き込みストリーム)の数は、ブロック612において構成されるヘルス・グレードの数と等しくてもよいが、必須ではない。
ブロック616において、コントローラは、ブロック612において構成されるヒート・ビンとブロック614において構成されるヘルス・グレードとの間のマッピングを確立する。1つの特に好ましい実施形態では、ヒートおよびヘルスは直接的に相互に関連付けられ、最もホットなLBAは最も良好なヘルス・グレードにマッピングされ、最もコールドなLBAはより不良なヘルス・グレードにマッピングされる。当然ながら、他の実施形態では、書き込みヒートおよびヘルス・グレードの間の他のマッピングが利用され得る。たとえば、数値の書き込みヒートおよびヘルス・グレードが利用される一実施形態では、ブロック616において確立されるマッピングは、相互にマッピングされたヘルス・グレードおよび書き込みヒートからほぼ一定の結果をもたらすように選択された数学関数によって決定される(たとえば、C≒f(ヒート,ヘルス))。他の実施形態では、書き込みヒートからヘルス・グレードへのマッピングは、全てのヒート・ビンをヘルス・グレードのソートされた優先順位リストにマッピングする。RTUキュー306内のブロックからブロック・ストライプが構築されるときに、所与のヘルス・グレードを有する優先RTUキュー306内にブロックがない場合がある。その際、ソートされた優先順位リストによって、優先RTUキューに極力近いヘルス・グレードを有する他のRTUキュー306からブロックを割り当ることが可能になる。
ブロック616に続いて、図6に与えた構成処理は、ブロック604に戻る。ブロック604において、1つまたは複数の追加のブロック・プールがまだ処理されていないことを示す否定判定がなされた場合、処理は説明済みのブロック610~616に戻る。しかしながら、ブロック602において構成された全てのブロック・プールが処理されたとの判定がブロック604においてなされた場合、図6の構成処理はブロック606において終了する。
ここで図7を参照すると、一実施形態による、ブロック・プール間でブロックを動的に転送するための例示的な処理の高レベルの論理フローチャートが示されている。図示の処理は、たとえば、データ・ストレージ・システム120の動作中に、ハードウェア、ファームウェア、ソフトウェア、またはその組み合わせで、コントローラ(たとえば、GPP132またはフラッシュ・コントローラ140あるいはその両方)によって実行することができる。
図7の処理は700から始まり、次いでブロック702に進み、ブロック702は、コントローラが、ブロック・プール400および402のうちの1つのサイズを変更するか否かを判定することを示している。たとえば、コントローラは、1つまたは複数のRTUキュー306内の所与のブロック・プールに属するブロックの充填レベルが閾値を満たさないこと、1つまたは複数のRTUキュー306内の他のブロック・プールに属するブロックの充填レベル、所与のブロック・プール内のブロックのP/Eサイクル・カウント、ヘルス・グレードのうちの1つまたは複数が割り当てられた所与のブロック・プール内のブロックの数などを含む1つまたは複数の基準に基づいて、所与のブロック・プールのサイズを変更するか否かを判定し得る。ブロック702においてなされる判定は、たとえば、バックグラウンド・ヘルス・チェッカー330、ガベージ・コレクタ312、ブロック・リタイア機能318、またはブロック・ストライプ構築機能320あるいはその組み合わせのうちの1つまたは複数によってトリガされ得る。ブロック702においてコントローラがブロック・プールのサイズを変更しないと判定したことに応答して、処理はブロック702を反復する。ブロック702においてブロック・プールのサイズを変更する判定したことに応答して、処理はブロック704に進む。
ブロック704は、コントローラが、物理ブロック204が転送されるブロック・プールを選択することを示している。また、ブロック706において、コントローラは、所与のブロック・プールに物理ブロック204が追加されるヒート・ビンまたは書き込みストリーム(たとえば、ホット、ウォーム、クール、またはコールド)を選択する。次いで、コントローラは、ブロック708において、選択されたヒート・ビン内のLBAに関連付けられたデータを記憶するために現在割り当てられているブロック204に対してストリーム摩耗指標を決定する。1つの好ましい実施形態では、コントローラは、各ヒート・ビン/書き込みストリームに割り当てられたブロック204を追跡し、それらのブロック204が受けたP/Eサイクルの総数を(たとえば、P/Eサイクル・カウント334から)決定する。これらの数値から、コントローラは、選択されたヒート・ビンのストリーム摩耗指標を、ヒート・ビン内のデータを記憶するブロック204の総数を、それらのブロック204が受けたP/Eサイクルの総数で割った値として計算することができる。
次いで、ブロック708において決定されたストリーム摩耗指標に基づいて、コントローラは、選択されたブロック・プールに転送する、選択されたヒート・ビンに適切な個別のブロック・ヘルスを有する少なくとも1つのプログラムされていないブロック204を他のブロック・プールから選択する(ブロック710)。この選択によって、最も良好なヘルスのブロック204は、将来受けることになるP/Eサイクル数が最大となり、最も不良なヘルスのブロック204は、将来受けることになるP/Eサイクル数が最小となるようになる。その結果、全てのタイプのワークロードおよび全てのデバイス使用率のポイントで、デバイスの耐久性が向上する。ブロック712において、コントローラは、ブロック710において選択されたブロック204を選択されたブロック・プールに転送し、ブロック・モード・メタデータ335を新しい動作モード(たとえば、QLCまたはSLC)で更新し、必要に応じて、ブロックのヘルス・グレードを更新する。その後、図7の処理は、説明済みのブロック702に戻る。
説明したように、少なくとも1つの実施形態では、不揮発性メモリは複数の物理記憶ブロックを含み、各物理記憶ブロックはそれぞれの複数のセルを含み、複数のセルのそれぞれは個々に複数ビットのデータを記憶することが可能である。コントローラは、複数の物理ブロックのうちの物理ブロックを、セルあたりより多くのビットを記憶するための第1の(たとえば、QLC)モードで動作する物理ブロックを含む第1のプールに割り当て、複数の物理ブロックのうちの他の物理ブロックを、セルあたりより少ないビットを記憶するための第2の(たとえば、SLC)モードで動作する物理ブロックを含む第2のプールに割り当てる。コントローラは、第1のプールおよび第2のプールの間で物理ブロックを転送することを、転送される物理ブロックについて測定されたビット・エラー・レートに少なくとも基づいて行う。
本発明は、システム、方法、またはコンピュータ・プログラム製品あるいはその組み合わせであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持および記憶可能な有形のデバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、限定はしないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリー・スティック(R)、フロッピー(R)・ディスク、命令が記録されたパンチ・カードまたは溝の隆起構造などの機械的にコード化されたデバイス、およびこれらの任意の適切な組み合わせが含まれる。コンピュータ可読記憶媒体は、本明細書で使用する場合、たとえば、電波または他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、または有線で伝送される電気信号などの一過性の信号自体であると解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、たとえば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはその組み合わせなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを含み得る。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶する。
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得、または(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータへの接続がなされ得る。一部の実施形態では、たとえば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行することによって、電子回路を個人向けにし得る。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書で説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装できることは理解されよう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供して、それらの命令がコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行された場合に、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為を実装するための手段が生成されるようなマシンを生成し得る。また、これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組み合わせに特定の方法で機能するように指示することが可能なコンピュータ可読記憶媒体に記憶して、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為の態様を実装する命令を含む製造品を構成するようにし得る。
また、コンピュータ可読プログラム命令をコンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させることによって、それらの命令がコンピュータ、他のプログラム可能装置、または他のデバイス上で実行された場合に、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為を実装されるようなコンピュータ実装処理を生成し得る。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理的機能を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表し得る。一部の代替的実装形態では、ブロックに記載した機能は、図示した順序以外で行われ得る。たとえば、関与する機能に応じて、連続して示した2つのブロックは、実際には実質的に同時に実行され得、またはそれらのブロックは、場合により逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせは、指定された機能もしくは行為を実行するか、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用のハードウェア・ベースのシステムによって実装できることにも気付くであろう。
本発明は、1つまたは複数の好ましい実施形態を参照して説明したように具体的に示してきたが、当業者には、添付の特許請求の範囲に定義した本発明の範囲から逸脱することなく、形態および詳細の様々な変更がなされ得ることは理解されよう。たとえば、特定の機能を指示するフラッシュ・コントローラを含むデータ・ストレージ・システムに関する態様を説明してきたが、本発明は、代替的には、プロセッサがそのような機能を実行することによって、またはそのような機能を実行させることによって、処理することが可能なプログラム・コードを記憶するストレージ・デバイスを含むプログラム製品として実装され得ることを理解されたい。本明細書で使用する場合、「ストレージ・デバイス」は、具体的には、法定製造品(statutory article of manufacture)のみを含み、信号媒体自体、一過性の伝搬信号自体、エネルギー自体を除外するように定義する。
また、NANDフラッシュ・メモリの使用を含む実施形態を説明してきたが、本発明の実施形態は、他の任意のタイプの不揮発性ランダム・アクセス・メモリ(NVRAM)でも使用できることを理解されたい。
上記で説明した図面および以下の特定の構造および機能についての明細書は、出願人が発明したものの範囲、または添付の特許請求の範囲を制限するために提示していない。むしろ、図面および明細書は、特許保護を求める発明を作成および使用することを当業者に教示するために提供している。当業者は、明確さおよび理解のために、本発明の商用の実施形態の全ての特徴を説明または図示しているわけではないことを理解するであろう。当業者はまた、本発明の態様を組み込んだ実際の商用の実施形態の開発には、商用の実施形態に関する開発者の最終目標を達成するために多数の実装固有の判断が必要となることを理解するであろう。そのような実装固有の判断には、システム関連の、ビジネス関連の、政府関連の、およびその他の制約への準拠が含まれ得るが、おそらくこれらに限定されることはなく、これらの制約は、特定の実装形態、場所、およびその時々によって異なり得る。開発者の努力は絶対的な意味で複雑で時間がかかるものであり得るが、それにもかかわらず、そのような努力は、本開示の利益を得る当業者にとっては日常的な作業であろう。本明細書に開示および教示した発明は、多数の様々な修正および代替形態が可能であることを理解されたい。最後に、「a」などであるがこれに限定されない単数形の使用は、項目の数を限定することを意図したものではない。

Claims (20)

  1. 不揮発性メモリを動作させる方法であって、前記不揮発性メモリは複数の物理記憶ブロックを含み、各物理記憶ブロックはそれぞれの複数のセルを含み、前記複数のセルのそれぞれは個々に複数ビットのデータを記憶することが可能であり、前記方法は、
    コントローラが、前記複数の物理ブロックのうちの物理ブロックを、セルあたりより多くのビットを記憶するための第1のモードで動作する物理ブロックを含む第1のプールに割り当て、前記複数の物理ブロックのうちの他の物理ブロックを、セルあたりより少ないビットを記憶するための第2のモードで動作する物理ブロックを含む第2のプールに割り当てることと、
    前記コントローラが、前記第1のプールおよび前記第2のプールの間で物理ブロックを転送することであって、前記転送される物理ブロックについて測定されたビット・エラー・レートに少なくとも基づいて行われる、前記転送することと、
    を含む、方法。
  2. 前記転送することは、
    前記第1のプールから前記第2のプールに、より高いビット・エラー・レートを有する物理ブロックを転送することと、
    前記第2のプールから前記第1のプールに、より低いビット・エラー・レートを有する物理ブロックを転送することと、
    を含む、請求項1に記載の方法。
  3. 前記第1および第2のプールのそれぞれについて、
    異なる書き込みヒートの複数の書き込みストリームのそれぞれのデータを記憶するために割り当てられた物理ブロックの数と、前記複数の書き込みストリームのそれぞれにおけるプログラム/消去(P/E)サイクル数とを追跡することと、
    前記複数の書き込みストリームのそれぞれについて、前記書き込みストリームに割り当てられた物理ブロックの数と、前記書き込みストリームに割り当てられた前記物理ブロックのP/Eサイクルの総数とに基づいて、それぞれのストリーム摩耗指標を計算することと、
    をさらに含み、
    前記転送することは、(1)前記複数の書き込みストリームの中から選択された書き込みストリームと、(2)前記選択された書き込みストリームの前記ストリーム摩耗指標と、(3)前記選択された書き込みストリームのデータを記憶するために割り当てられた物理ブロックのブロック・ヘルスとに基づいて、転送用に物理ブロックを選択することを含む、
    請求項1に記載の方法。
  4. 前記コントローラが、前記複数の書き込みストリームの全てにおける物理ブロックのブロック・ヘルスを、前記物理ブロックをプログラミングした直後に測定されるビット・エラー・レートから決定することをさらに含む、請求項3に記載の方法。
  5. 前記選択することは、
    前記選択された書き込みストリームが前記複数の書き込みストリーム全ての中で最大の摩耗を反映するストリーム摩耗指標を有することに基づいて、前記選択された書き込みストリームに割り当てられた前記物理ブロックの中から最も良好なヘルスの物理ブロックを転送用に選択することと、
    前記選択された書き込みストリームが前記複数の書き込みストリーム全ての中で最小の摩耗を反映するストリーム摩耗指標を有することに基づいて、前記選択された書き込みストリームに割り当てられた前記物理ブロックの中から最も不良なヘルスの物理ブロックを転送用に選択することと、
    を含む、請求項3に記載の方法。
  6. 前記第1のモードはクアッド・レベル・セル(QLC)モードであり、
    前記第2のモードはシングル・レベル・セル(SLC)モードである、
    請求項1に記載の方法。
  7. 前記転送することは、前記第1および第2のプールのうちの所与の1つから利用可能なプログラムされていない物理ブロックの数が閾値を満たさないことに基づいて、前記物理ブロックを転送することを含む、請求項1に記載の方法。
  8. 不揮発性メモリ用のコントローラを備えるデータ・ストレージ・システムであって、前記不揮発性メモリは複数の物理記憶ブロックを含み、各物理記憶ブロックはそれぞれの複数のセルを含み、前記複数のセルのそれぞれは個々に複数ビットのデータを記憶することが可能であり、前記コントローラは、
    前記複数の物理ブロックのうちの物理ブロックを、セルあたりより多くのビットを記憶するための第1のモードで動作する物理ブロックを含む第1のプールに割り当て、前記複数の物理ブロックのうちの他の物理ブロックを、セルあたりより少ないビットを記憶するための第2のモードで動作する物理ブロックを含む第2のプールに割り当てることと、
    前記第1のプールおよび前記第2のプールの間で物理ブロックを転送することであって、前記転送される物理ブロックについて測定されたビット・エラー・レートに少なくとも基づいて行われる、前記転送することと、
    を実行するように構成される、データ・ストレージ・システム。
  9. 前記転送することは、
    前記第1のプールから前記第2のプールに、より高いビット・エラー・レートを有する物理ブロックを転送することと、
    前記第2のプールから前記第1のプールに、より低いビット・エラー・レートを有する物理ブロックを転送することと、
    を含む、請求項8に記載のデータ・ストレージ・システム。
  10. 前記コントローラは、
    前記第1および第2のプールのそれぞれについて、
    異なる書き込みヒートの複数の書き込みストリームのそれぞれのデータを記憶するために割り当てられた物理ブロックの数と、前記複数の書き込みストリームのそれぞれにおけるプログラム/消去(P/E)サイクル数とを追跡することと、
    前記複数の書き込みストリームのそれぞれについて、前記書き込みストリームに割り当てられた物理ブロックの数と、前記書き込みストリームに割り当てられた前記物理ブロックのP/Eサイクルの総数とに基づいて、それぞれのストリーム摩耗指標を計算することと、
    を実行するようにさらに構成され、
    前記転送することは、(1)前記複数の書き込みストリームの中から選択された書き込みストリームと、(2)前記選択された書き込みストリームの前記ストリーム摩耗指標と、(3)前記選択された書き込みストリームのデータを記憶するために割り当てられた物理ブロックのブロック・ヘルスとに基づいて、転送用に物理ブロックを選択することを含む、
    請求項8に記載のデータ・ストレージ・システム。
  11. 前記コントローラは、
    前記複数の書き込みストリームの全てにおける物理ブロックのブロック・ヘルスを、前記物理ブロックをプログラミングした直後に測定されるビット・エラー・レートから決定すること
    を実行するようにさらに構成される、請求項10に記載のデータ・ストレージ・システム。
  12. 前記選択することは、
    前記選択された書き込みストリームが前記複数の書き込みストリーム全ての中で最大の摩耗を反映するストリーム摩耗指標を有することに基づいて、前記選択された書き込みストリームに割り当てられた前記物理ブロックの中から最も良好なヘルスの物理ブロックを転送用に選択することと、
    前記選択された書き込みストリームが前記複数の書き込みストリーム全ての中で最小の摩耗を反映するストリーム摩耗指標を有することに基づいて、前記選択された書き込みストリームに割り当てられた前記物理ブロックの中から最も不良なヘルスの物理ブロックを転送用に選択することと、
    を含む、請求項10に記載のデータ・ストレージ・システム。
  13. 前記第1のモードはクアッド・レベル・セル(QLC)モードであり、
    前記第2のモードはシングル・レベル・セル(SLC)モードである、
    請求項8に記載のデータ・ストレージ・システム。
  14. 前記転送することは、前記第1および第2のプールのうちの所与の1つから利用可能なプログラムされていない物理ブロックの数が閾値を満たさないことに基づいて、前記物理ブロックを転送することを含む、請求項8に記載のデータ・ストレージ・システム。
  15. プログラム命令を具現化するコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品であって、前記プログラム命令は、不揮発性メモリのコントローラによって実行可能であり、前記不揮発性メモリは複数のセルを含み、前記複数のセルのそれぞれは個々に複数ビットのデータを記憶することが可能であり、前記プログラム命令は、実行された場合に、前記コントローラに、
    前記複数の物理ブロックのうちの物理ブロックを、セルあたりより多くのビットを記憶するための第1のモードで動作する物理ブロックを含む第1のプールに割り当て、前記複数の物理ブロックのうちの他の物理ブロックを、セルあたりより少ないビットを記憶するための第2のモードで動作する物理ブロックを含む第2のプールに割り当てることと、
    前記第1のプールおよび前記第2のプールの間で物理ブロックを転送することであって、前記転送される物理ブロックについて測定されたビット・エラー・レートに少なくとも基づいて行われる、前記転送することと、
    を実行させる、コンピュータ・プログラム製品。
  16. 前記転送することは、
    前記第1のプールから前記第2のプールに、より高いビット・エラー・レートを有する物理ブロックを転送することと、
    前記第2のプールから前記第1のプールに、より低いビット・エラー・レートを有する物理ブロックを転送することと、
    を含む、請求項15に記載のプログラム製品。
  17. 前記プログラム命令は、前記コントローラに、
    前記第1および第2のプールのそれぞれについて、
    異なる書き込みヒートの複数の書き込みストリームのそれぞれのデータを記憶するために割り当てられた物理ブロックの数と、前記複数の書き込みストリームのそれぞれにおけるプログラム/消去(P/E)サイクル数とを追跡することと、
    前記複数の書き込みストリームのそれぞれについて、前記書き込みストリームに割り当てられた物理ブロックの数と、前記書き込みストリームに割り当てられた前記物理ブロックのP/Eサイクルの総数とに基づいて、それぞれのストリーム摩耗指標を計算することと、
    をさらに実行させ、
    前記転送することは、(1)前記複数の書き込みストリームの中から選択された書き込みストリームと、(2)前記選択された書き込みストリームの前記ストリーム摩耗指標と、(3)前記選択された書き込みストリームのデータを記憶するために割り当てられた物理ブロックのブロック・ヘルスとに基づいて、転送用に物理ブロックを選択することを含む、
    請求項15に記載のプログラム製品。
  18. 前記プログラム命令は、前記コントローラに、
    前記複数の書き込みストリームの全てにおける物理ブロックのブロック・ヘルスを、前記物理ブロックをプログラミングした直後に測定されるビット・エラー・レートから決定すること
    をさらに実行させる、請求項17に記載のプログラム製品。
  19. 前記選択することは、
    前記選択された書き込みストリームが前記複数の書き込みストリーム全ての中で最大の摩耗を反映するストリーム摩耗指標を有することに基づいて、前記選択された書き込みストリームに割り当てられた前記物理ブロックの中から最も良好なヘルスの物理ブロックを転送用に選択することと、
    前記選択された書き込みストリームが前記複数の書き込みストリーム全ての中で最小の摩耗を反映するストリーム摩耗指標を有することに基づいて、前記選択された書き込みストリームに割り当てられた前記物理ブロックの中から最も不良なヘルスの物理ブロックを転送用に選択することと、
    を含む、請求項17に記載のプログラム製品。
  20. 前記転送することは、前記第1および第2のプールのうちの所与の1つから利用可能なプログラムされていない物理ブロックの数が閾値を満たさないことに基づいて、前記物理ブロックを転送することを含む、請求項15に記載のプログラム製品。
JP2021571287A 2019-06-12 2020-05-28 不揮発性メモリにおける摩耗を意識したブロック・モード変換 Active JP7513356B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/439,122 2019-06-12
US16/439,122 US10956049B2 (en) 2019-06-12 2019-06-12 Wear-aware block mode conversion in non-volatile memory
PCT/IB2020/055061 WO2020250071A1 (en) 2019-06-12 2020-05-28 Wear-aware block mode conversion in non-volatile memory

Publications (3)

Publication Number Publication Date
JP2022536056A true JP2022536056A (ja) 2022-08-12
JPWO2020250071A5 JPWO2020250071A5 (ja) 2022-10-27
JP7513356B2 JP7513356B2 (ja) 2024-07-09

Family

ID=73746202

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021571287A Active JP7513356B2 (ja) 2019-06-12 2020-05-28 不揮発性メモリにおける摩耗を意識したブロック・モード変換

Country Status (6)

Country Link
US (1) US10956049B2 (ja)
JP (1) JP7513356B2 (ja)
CN (1) CN113924546A (ja)
DE (1) DE112020002792B4 (ja)
GB (1) GB2599529B (ja)
WO (1) WO2020250071A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762569B2 (en) * 2019-10-29 2023-09-19 International Business Machines Corporation Workload based relief valve activation for hybrid controller architectures
US11309052B2 (en) * 2020-08-25 2022-04-19 Micron Technology, Inc. Read voltage calibration for copyback operation
US11494114B1 (en) 2021-04-26 2022-11-08 Micron Technology, Inc. Read threshold adjustment techniques for non-binary memory cells
US12073107B2 (en) * 2021-07-19 2024-08-27 Micron Technology, Inc. Memory sub-system for monitoring mixed mode blocks
US11853602B2 (en) * 2021-08-11 2023-12-26 Micron Technology, Inc. Techniques for adjusting a granularity associated with read disturb tracking
US11755208B2 (en) * 2021-10-12 2023-09-12 Western Digital Technologies, Inc. Hybrid memory management of non-volatile memory (NVM) devices for use with recurrent neural networks
CN114115735B (zh) * 2021-11-18 2024-02-09 北京奥星贝斯科技有限公司 写入数据的方法及装置
US20230367496A1 (en) * 2022-05-12 2023-11-16 Micron Technology, Inc. Block repurposing based on health metrics
US20240296085A1 (en) * 2023-03-02 2024-09-05 International Business Machines Corporation Write and retire pages in qlc nand blocks
US20240345768A1 (en) * 2023-04-11 2024-10-17 SK Hynix NAND Product Solutions Corp. (dba Solidigm) System and methods for determining an optimal data relocation at an individual read disturb event using multiple write streams

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120240012A1 (en) * 2010-07-07 2012-09-20 Stec, Inc. Apparatus and method for multi-mode operation of a flash memory device
US20130124787A1 (en) * 2011-09-09 2013-05-16 Ocz Technology Group Inc. Nand flash-based storage device and methods of using
JP2013114679A (ja) * 2011-11-30 2013-06-10 Samsung Electronics Co Ltd ウェアレベル制御ロジックを含むメモリシステム
JP2015215678A (ja) * 2014-05-08 2015-12-03 キヤノン株式会社 画像処理装置、情報処理方法及びプログラム
JP2018120439A (ja) * 2017-01-25 2018-08-02 東芝メモリ株式会社 メモリシステムおよび制御方法
US20190121725A1 (en) * 2017-10-25 2019-04-25 Western Digital Technologies, Inc. Performance based memory block usage

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727976B (zh) * 2008-10-15 2012-09-19 晶天电子(深圳)有限公司 一种多层闪存装置、固态硬盘和分割非易失性存储器系统
US9021177B2 (en) * 2010-04-29 2015-04-28 Densbits Technologies Ltd. System and method for allocating and using spare blocks in a flash memory
CN103577111B (zh) * 2012-07-23 2017-05-31 上海宝存信息科技有限公司 基于非易失性存储器的动态独立冗余阵列存储系统及方法
US9298534B2 (en) 2013-09-05 2016-03-29 Kabushiki Kaisha Toshiba Memory system and constructing method of logical block
US9886208B2 (en) 2015-09-25 2018-02-06 International Business Machines Corporation Adaptive assignment of open logical erase blocks to data streams
US10126958B2 (en) 2015-10-05 2018-11-13 Intel Corporation Write suppression in non-volatile memory
US10410738B2 (en) 2016-03-15 2019-09-10 Toshiba Memory Corporation Memory system and control method
TWI689930B (zh) 2016-04-27 2020-04-01 慧榮科技股份有限公司 快閃記憶體裝置及快閃記憶體儲存管理方法
US9933963B1 (en) 2017-03-01 2018-04-03 Seagate Technology Open block handling to reduce write errors
US11188456B2 (en) 2017-03-21 2021-11-30 Western Digital Technologies Inc. Storage system and method for predictive block allocation for efficient garbage collection
US10325668B2 (en) 2017-04-05 2019-06-18 Micron Technology, Inc. Operation of mixed mode blocks
US10229751B2 (en) 2017-05-01 2019-03-12 Western Digital Technologies, Inc. Storage system and method for bad block recycling
US9905294B1 (en) * 2017-05-03 2018-02-27 Seagate Technology Llc Writing logically offset pages of data to N-level memory cells coupled to a common word line
US10101931B1 (en) * 2017-06-04 2018-10-16 International Business Machines Corporation Mitigating read errors following programming in a multi-level non-volatile memory
US10437734B2 (en) 2017-08-31 2019-10-08 Micron Technology, Inc. Memory constrained translation table management
CN107967121B (zh) 2017-10-25 2020-04-14 华为技术有限公司 数据写入方法和存储设备
US20190042130A1 (en) * 2017-12-18 2019-02-07 Intel Corporation Prefix opcode method for slc entry with auto-exit option

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120240012A1 (en) * 2010-07-07 2012-09-20 Stec, Inc. Apparatus and method for multi-mode operation of a flash memory device
US20130124787A1 (en) * 2011-09-09 2013-05-16 Ocz Technology Group Inc. Nand flash-based storage device and methods of using
JP2013114679A (ja) * 2011-11-30 2013-06-10 Samsung Electronics Co Ltd ウェアレベル制御ロジックを含むメモリシステム
JP2015215678A (ja) * 2014-05-08 2015-12-03 キヤノン株式会社 画像処理装置、情報処理方法及びプログラム
JP2018120439A (ja) * 2017-01-25 2018-08-02 東芝メモリ株式会社 メモリシステムおよび制御方法
US20190121725A1 (en) * 2017-10-25 2019-04-25 Western Digital Technologies, Inc. Performance based memory block usage

Also Published As

Publication number Publication date
GB2599529A (en) 2022-04-06
US10956049B2 (en) 2021-03-23
WO2020250071A1 (en) 2020-12-17
CN113924546A (zh) 2022-01-11
DE112020002792T5 (de) 2022-03-31
DE112020002792B4 (de) 2023-05-04
US20200393972A1 (en) 2020-12-17
GB2599529B (en) 2023-01-04
JP7513356B2 (ja) 2024-07-09
GB202117864D0 (en) 2022-01-26

Similar Documents

Publication Publication Date Title
JP7513356B2 (ja) 不揮発性メモリにおける摩耗を意識したブロック・モード変換
JP7448569B2 (ja) データ・ストレージ・システムにおけるブロック・モード・トグリング
US10459808B2 (en) Data storage system employing a hot spare to store and service accesses to data having lower associated wear
US10236067B2 (en) State-dependent read voltage threshold adaptation for nonvolatile memory
US10241877B2 (en) Data storage system employing a hot spare to proactively store array data in absence of a failure or pre-failure event
US11138124B2 (en) Migrating data between block pools in a storage system
US10956317B2 (en) Garbage collection in non-volatile memory that fully programs dependent layers in a target block
US10170195B1 (en) Threshold voltage shifting at a lower bit error rate by intelligently performing dummy configuration reads
US9496043B1 (en) Dynamically optimizing flash data retention or endurance based on data write frequency
US10254981B2 (en) Adaptive health grading for a non-volatile memory
US9898215B2 (en) Efficient management of page retirement in non-volatile memory utilizing page retirement classes
US10997080B1 (en) Method and system for address table cache management based on correlation metric of first logical address and second logical address, wherein the correlation metric is incremented and decremented based on receive order of the first logical address and the second logical address
US9740609B1 (en) Garbage collection techniques for a data storage system
JP7486534B2 (ja) ストレージ・システムにおけるブロック・プール・サイズの適合
US11656792B2 (en) Mirroring data in write caches of a controller of a non-volatile memory
US11797199B2 (en) Balancing utilization of memory pools of physical blocks of differing storage densities
CN112346658A (zh) 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率
US12093171B2 (en) Proactive data placement in high density storage by a hybrid non-volatile storage controller
US11907123B2 (en) Flash memory garbage collection

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220512

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221012

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221021

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231024

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231025

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20231214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240322

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20240606

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240625

R150 Certificate of patent or registration of utility model

Ref document number: 7513356

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150