JP7448569B2 - データ・ストレージ・システムにおけるブロック・モード・トグリング - Google Patents

データ・ストレージ・システムにおけるブロック・モード・トグリング Download PDF

Info

Publication number
JP7448569B2
JP7448569B2 JP2021577034A JP2021577034A JP7448569B2 JP 7448569 B2 JP7448569 B2 JP 7448569B2 JP 2021577034 A JP2021577034 A JP 2021577034A JP 2021577034 A JP2021577034 A JP 2021577034A JP 7448569 B2 JP7448569 B2 JP 7448569B2
Authority
JP
Japan
Prior art keywords
block
pool
processor
blocks
mode
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021577034A
Other languages
English (en)
Other versions
JP2022538587A (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 JP2022538587A publication Critical patent/JP2022538587A/ja
Application granted granted Critical
Publication of JP7448569B2 publication Critical patent/JP7448569B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of 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/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/0643Management of files
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Description

本発明は一般的にデータ・ストレージ・システムに関し、より具体的にはデータ・ストレージ・システムにおけるブロック・モード・トグリングに関する。
一例としてフラッシュ・メモリを用いると、従来のNANDフラッシュ・ベースのソリッド・ステート・ドライブ(SSD:solid state drives)のパフォーマンス特徴は、従来からのハード・ディスク・ドライブ(HDD:hard disk drives)のものとは根本的に異なる。従来のSSDにおけるデータは通常4、8、または16KBのサイズのページに組織化される。さらに、SSDにおけるページ読取り動作は、通常書込み動作よりも1桁速く、待ち時間は動作の現在または過去の位置のいずれにも依存しない。
しかし、フラッシュ・ベースのSSDにおいては、メモリ位置は書込まれる前にブロックごとに消去される。消去ブロック単位のサイズは256から512ページのいずれか、または数千ページになることもあり、消去動作にはページ・プログラム動作よりも約1桁多くの時間がかかる。NANDフラッシュ固有の特性のために、フラッシュ・ベースのSSDはデータを所定外の位置に書込み、それによってマッピング・テーブルは書込まれたデータの論理アドレスを物理アドレスに対してマップする。このマッピング・テーブルは通常、論理物理テーブル(LPT:Logical-to-Physical Table)と呼ばれる。
フラッシュ・ベースのメモリ・セルはウェア(wear)またはその他の理由による読取りエラーもしくは障害またはその両方を示すため、メモリ・ページ内およびメモリ・チップにまたがって付加的な冗長性が用いられてもよい(例、RAID-5およびRAID-6同様のスキーム)。メモリ・ページ内の付加的な冗長性はエラー訂正コード(ECC:error correction code)を含んでもよく、これはたとえばBCH、LDPC、またはその他のコードなどを含んでもよい。ページにおけるECCの付加は比較的単純であるが、メモリ・ブロックをRAID同様のストライプに組織化することはもっと複雑である。たとえば、個々のブロックは時間とともにリタイアするため、ストライプの再組織化またはストライプの容量低減が必要となる。ストライプをLPTとともに組織化することによってデータの配置が定められるため、SSDは通常、これら2つの方法を組み合わせたログ構造化アレイ(LSA:Log-Structured Array)アーキテクチャを使用する。
LSAアーキテクチャは、所定外の位置への書込みに依拠している。このアプローチにおいては、メモリ・ページの上書きの結果として、メモリ・ページ・データがメモリの新たな位置に書込まれ、メモリ・ページ・データの古いコピーが無効とマークされ、次いでマッピング情報が更新される。現在のNANDメモリ技術の制限のために、無効化されたデータ位置は、それが属するブロック全体が消去されるまで再使用できない。しかし、消去の前にブロックはガベージ・コレクションを受け、それによってブロック内の任意の有効データが新たなブロックに再配置される。データの再配置は付加的な書込み動作をもたらすことによって書込み増幅を増加させるため、ブロックのガベージ・コレクションは通常、ブロック内の無効化データの量を最大化するようにできる限り長く延期され、それで、再配置される有効ページの数を低減させる。
一実施形態によると、ストレージ・システムにおいてブロック・モードをトグルするために、コンピュータ実施方法が用いられる。このコンピュータ実施方法は、ストレージ・システムのメモリの各ブロックに対するブロック切り換えメトリックを維持することを含む。第1のブロックに対応するブロック切り換えメトリックに従って、第1のプールの第1のブロックを第2のプールに移動すべきかどうかに関する判定が行われる。第1のブロックに対応するブロック切り換えメトリックに従って、第1のプールの第1のブロックを第2のプールに移動すべきだと判定したことに応答して、第1のブロックは消去される。次いで、第1のブロックは第1のプールから、第2のプールに対応する第2の即時使用可能な(RTU:ready-to-use)キューに移動される。第2のプールの第2のブロックも消去されて、第2のプールから第1のプールに対応する第1のRTUキューに移動される。第1のプールのブロックは単一レベル・セル(SLC:single-level cell)モードで構成されるのに対し、第2のプールのブロックはセル当り複数ビット・モードで構成される。
別の実施形態によるコンピュータ・プログラム製品は、具現化されるプログラム命令を有するコンピュータ可読記憶媒体を含む。プログラム命令はプロセッサによって可読もしくは実行可能またはその両方であり、そのプロセッサに前述の方法を実行させる。
さらに別の実施形態によるシステムは、データを記憶するように構成された複数の不揮発性ランダム・アクセス・メモリ(NVRAM:non-volatile random access memory)ブロックを含む。いくつかのアプローチにおいて、加えてこのシステムは、プロセッサと、そのプロセッサに統合されるか、もしくはそのプロセッサによって実行可能であるか、またはその両方であるロジックとを含む。このロジックは、前述の方法を実行するように構成される。
本発明の他の態様および実施形態は、図面とともに受け取られたときに本発明の原理を例として示す以下の詳細な説明から明らかになるだろう。
一実施形態による不揮発性メモリ・カードを示す図である。 一実施形態によるデータ・ストレージ・システム・アーキテクチャを示す図である。 一実施形態によるシステム図である。 一実施形態によるブロック・ストライプおよびページ・ストライプを含む概念図である。 一実施形態による不揮発性メモリ・モジュールを部分的に表す図である。 一実施形態によるデータおよびブロックの流れの概観を部分的に表す図である。 一実施形態による方法を示す流れ図である。 一実施形態による方法を示す流れ図である。 一実施形態による方法を示す流れ図である。 一実施形態によるネットワーク・アーキテクチャを示す図である。 一実施形態による、図8のサーバもしくはクライアントまたはその両方に関連し得る代表的なハードウェア環境を示す図である。 一実施形態による層状のデータ・ストレージ・システムを示す図である。
以下の説明は本発明の一般的な原理を示す目的のために行われるものであり、本明細書において請求される発明の概念を限定することは意味していない。さらに、さまざまな可能な組み合わせおよび置換の各々において、本明細書に記載される特定の特徴が他の記載される特徴と組み合わされて用いられ得る。
本明細書において別様に特定的に定められない限り、すべての用語には、明細書から暗示される意味、および当業者に理解される意味、もしくは辞書、論文などにおいて定義される意味、またはその両方を含む、その可能な中で最も広い解釈が与えられる。
明細書および添付の請求項において用いられる単数形「a」、「an」、および「the」は、別様に指定されない限り複数の指示対象を含むことにも留意する必要がある。この明細書において用いられるときの「含む(comprises)」もしくは「含んでいる(comprising)」またはその両方の用語は、記述される特徴、整数、ステップ、動作、エレメント、もしくはコンポーネント、またはその組み合わせの存在を特定するが、1つ以上の他の特徴、整数、ステップ、動作、エレメント、コンポーネント、もしくはそのグループ、またはその組み合わせの存在または付加を除外しないことがさらに理解されるだろう。
以下の説明は、データ・ストレージ・システム、およびその動作もしくはコンポーネント部分またはその両方のいくつかの好ましい実施形態を開示するものである。当然のことながら、本明細書におけるさまざまな実施形態は、たとえばNANDフラッシュ・メモリ、NORフラッシュ・メモリ、相変化メモリ(PCM:phase-change memory)、磁気抵抗RAM(MRAM:magnetoresistive RAM)、および抵抗RAM(RRAM:resistive RAM)などの不揮発性ランダム・アクセス・メモリ(NVRAM)技術などを含む広範囲のメモリ媒体によって実現され得る。状況を提供し、かつ単に読者の助けとするために、不揮発性メモリの一種を参照してさまざまな実施形態が説明されることがある。これは単なる例として行われたものであり、請求項において定義された発明に対する限定とみなされるべきではない。
1つの一般的な実施形態において、ストレージ・システムにおいてブロック・モードをトグルするために、コンピュータ実施方法が用いられる。このコンピュータ実施方法は、ストレージ・システムのメモリの各ブロックに対するブロック切り換えメトリックを維持することを含む。第1のブロックに対応するブロック切り換えメトリックに従って、第1のプールの第1のブロックを第2のプールに移動すべきかどうかに関する判定が行われる。第1のブロックに対応するブロック切り換えメトリックに従って、第1のプールの第1のブロックを第2のプールに移動すべきだと判定したことに応答して、第1のブロックは消去される。次いで、第1のブロックは第1のプールから、第2のプールに対応する第2の即時使用可能な(RTU)キューに移動される。第2のプールの第2のブロックも消去されて、第2のプールから第1のプールに対応する第1のRTUキューに移動される。第1のプールのブロックは単一レベル・セル(SLC)モードで構成されるのに対し、第2のプールのブロックはセル当り複数ビット・モードで構成される。
別の一般的な実施形態において、コンピュータ・プログラム製品は、具現化されるプログラム命令を有するコンピュータ可読記憶媒体を含む。プログラム命令はプロセッサによって可読もしくは実行可能またはその両方であり、そのプロセッサに前述の方法を実行させる。
さらに別の一般的な実施形態において、システムは、データを記憶するように構成された複数の不揮発性ランダム・アクセス・メモリ(NVRAM)ブロックを含む。いくつかのアプローチにおいて、加えてこのシステムは、プロセッサと、そのプロセッサに統合されるか、もしくはそのプロセッサによって実行可能であるか、またはその両方であるロジックとを含む。このロジックは、前述の方法を実行するように構成される。
図1は、一実施形態によるメモリ・カード100を示している。なお、本実施形態においてメモリ・カード100は例示的な不揮発性データ・ストレージ・カードとして示されているが、代替的実施形態によるデータ・ストレージ・システムにおいてはさまざまなその他のタイプの不揮発性データ・ストレージ・カードが用いられてもよい。したがって、メモリ・カード100のアーキテクチャもしくはコンポーネントまたはその両方は、本発明を限定することは決して意図されず、非限定的な例として提供されたものである。
さらに、1つの選択肢として、本メモリ・カード100は、たとえば他の図面を参照して記載されるものなどの本明細書において挙げられる任意のその他の実施形態からの特徴とともに実現されてもよい。しかし、こうしたメモリ・カード100および本明細書において提供されるその他のものは、本明細書において挙げられる例示的実施形態に具体的に記載されていてもいなくてもよいさまざまな適用もしくは置換またはその両方において用いられてもよい。さらに、本明細書において提供されるメモリ・カード100は、任意の所望の環境において用いられてもよい。
図1の参照を続けると、メモリ・カード100はゲートウェイ102と、GPPメモリ114(RAM、ROM、電池でバックアップされたDRAM、相変化メモリPC-RAM、MRAM、STT-MRAMなど、またはその組み合わせを含んでもよい)に接続された汎用目的プロセッサ(GPP:general purpose processor)112(たとえばASIC、FPGA、CPUなど)と、本実施例においてはフラッシュ・コントローラを含むいくつかのメモリ・コントローラ108とを含む。各メモリ・コントローラ108は、チャネル106を介して複数のNVRAMメモリ・モジュール104(NANDフラッシュまたはたとえば上に挙げられたものなどのその他の不揮発性メモリ・タイプ(単数または複数)を含んでもよい)に接続される。
さまざまな実施形態によると、コントローラ108の1つ以上は、1つ以上のプロセッサ、もしくはメモリ・カード100の任意のサブシステムを制御するための任意のロジック、またはその両方であるか、またはそれを含んでもよい。たとえば、コントローラ108は通常、NVRAMメモリ・モジュール104のたとえばデータ書込み、データ再循環、データ読取りなどの機能を制御する。コントローラ108は、当該技術分野において公知のロジックおよび本明細書に開示される任意のロジックを用いて動作してもよく、よって本明細書のさまざまな実施形態に含まれる不揮発性メモリの任意の説明に対するプロセッサとみなされてもよい。
さらに、コントローラ108は本明細書において提供される方法のいくつかまたはすべてを実行または制御するように構成されるか、もしくはプログラマブルであるか、またはその両方であってもよい。よってコントローラ108は、1つ以上のチップ、モジュール、もしくはブロック、またはその組み合わせ;ソフトウェア、ファームウェア、もしくは1つ以上のプロセッサに対して利用可能なその他の命令、またはその組み合わせ;その他、およびそれらの組み合わせにプログラムされたロジックによってさまざまな動作を行うように構成されると考えられてもよい。
なおも図1を参照すると、各メモリ・コントローラ108はコントローラ・メモリ110にも接続されており、コントローラ・メモリ110は好ましくは本明細書に記載されるさまざまな実施形態による不揮発性メモリ構造を複製するキャッシュを含む。しかし、所望の実施形態に依存して、コントローラ・メモリ110は電池でバックアップされたDRAM、相変化メモリPC-RAM、MRAM、STT-MRAMなど、またはその組み合わせであってもよい。
前述のとおり、メモリ・カード100は、所望の実施形態に依存してさまざまなタイプのデータ・ストレージ・システムにおいて実現されてもよい。図2は、本発明を限定することは決して意図されない例示的実施形態によるデータ・ストレージ・システム・アーキテクチャ200を示している。さらに、図2のデータ・ストレージ・システム220は、図1の実施形態において見出されるさまざまなコンポーネントを含んでもよいことが留意されるべきである。
図2を見ると、データ・ストレージ・システム220は、I/O相互接続204を介して1つ以上のプロセッサ・システム201と通信するように構成されたいくつかのインターフェース・カード202を含む。データ・ストレージ・システム220は、複数の不揮発性データ・ストレージ・カード208におけるデータ・ストレージを制御するように構成された1つ以上のRAIDコントローラ206も含んでいてもよい。不揮発性データ・ストレージ・カード208は、NVRAM、フラッシュ・メモリ・カード、RAM、ROM、もしくは何らかのその他の公知のタイプの不揮発性メモリ、またはその組み合わせを含んでもよい。
I/O相互接続204は、たとえばファイバ・チャネル(FC:Fiber Channel)、イーサネット(Ethernet)(R)上のFC(FCoE:FC over Ethernet(R))、インフィニバンド(Infiniband)、インターネット小型コンピュータ・システム・インターフェース(iSCSI:Internet Small Computer System Interface)、伝送制御プロトコル/インターネット・プロトコル(TCP/IP:Transport Control Protocol/Internet Protocol)、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe(R):Peripheral Component Interconnect Express)など、および/またはその任意の組み合わせなどの任意の公知の通信プロトコルを含んでもよい。
当業者が本記載を読んで理解するであろうとおり、データ・ストレージ・システム220のRAIDコントローラ(単数または複数)206はRAID-5、RAID-10が使用するものと類似のパリティ・スキームを行ってもよいし、何らかのその他の好適なパリティ・スキームを行ってもよい。
各プロセッサ・システム201は、1つ以上のプロセッサ210(たとえばCPU、マイクロプロセッサなど)と、ローカル・データ・ストレージ211(例、図9のRAM914、図9のROM916など)と、データ・ストレージ・システム220と通信するように構成されたI/Oアダプタ218とを含む。
再び図1を参照すると、メモリ・コントローラ108、GPP112、もしくは本明細書に記載されるその他のコントローラ(例、図2のRAIDコントローラ206)、またはその組み合わせは、所望の実施形態に依存して、記憶されたデータに対するさまざまな機能を行うことができてもよい。具体的には、メモリ・コントローラまたはGPP112は、排他的なリストであることは決して意図されていない以下の機能のうちの任意の1つ以上を行うように構成されたロジックを含んでもよい。言い換えると、当業者が本記載を読んで認識するであろうとおり、所望の実施形態に依存して、ストレージ・システムのロジックは付加的または代替的な機能を行うように構成されてもよい。
ガベージ・コレクション
本記載のSSDメモリ・コントローラの文脈におけるガベージ・コレクションは、将来の使用のために再請求されるべきデータのブロックを識別して、その中のまだ有効なすべてのページを再配置するプロセスを含んでもよい。さらに、特定のコントローラ、もしくはそれぞれのガベージ・コレクションの動作単位、またはその両方に依存して、再請求もしくは再配置またはその両方のための論理消去ブロック(LEB:logical erase blocks)が識別されてもよい。通常は1つのLEBが1つのブロック・ストライプに対応するが、代替的な実施は固定数のブロック・ストライプまたは単一のブロックがLEBを構築することも考えてもよい。
物理「ブロック」とは、たとえばNANDフラッシュ・メモリなどの不揮発性メモリにおいて消去され得る最小単位を表し、その消去によってそこにデータを書込めるようになる。しかし、典型的なガベージ・コレクションの動作単位はしばしば不揮発性メモリの物理ブロックの倍数であり、それは本明細書においてLEBとも呼ばれる。これは、LEBにおいて通常はRAID同様のパリティ情報が加えられているという事実によるものである。したがって、ページまたはブロック障害の場合には、LEBのすべてのブロックがまだデータを保持しているときにのみデータが再構築され得る。したがって、ガベージ・コレクション単位からの個々のブロックは、LEBのすべてのブロックからすべてのまだ有効なデータが新たな位置に正常に再配置された後にのみ個別に、または単一単位において消去され得る。つまり、ガベージ・コレクション単位全体が単一単位としてガベージ・コレクションされる。さらに、LEBのサイズはガベージ・コレクションが誘導する書込み増幅に直接影響する。LEBが大きいほど、LEB内に無関係のデータが一緒に記憶される可能性が高くなるため、ガベージ・コレクション選択の際により多くのLEBデータを再配置する必要があるかもしれない。
しばしば、異なるダイもしくはフラッシュ・チャネルまたはその両方からのブロックがともにグループ化されることによって、同じグループからのブロックが並行して読取りまたは書込みされ得ることによって、全体の帯域幅が増加する。前の2つの方法を組み合わせて、並行してアクセスされ得る異なるフラッシュ・チャネルからのブロックを用いてRAIDストライプを構成することも可能である。
LEBは、物理的消去の単位である物理メモリ・ブロックの任意の倍数を含んでもよいことも留意されるべきである。さらに、メモリ・ブロックをLEBに組織化することは、異なるメモリ・チップ、メモリ・プレーン、もしくはチャネル、またはその組み合わせからのメモリ・ブロックの間にRAID同様のパリティ保護スキームを加えることを可能にするだけでなく、より高度な並列性によってパフォーマンスを有意に高めることも可能にする。たとえば、複数の不揮発性メモリ・ブロックをともにグループ化してRAIDストライプにしてもよい。当業者が本記載を読んで認識するであろうとおり、RAIDスキームは一般的に信頼性を改善して、データを失う可能性を低減させる。
本発明を限定することは決して意図されない例示的実施形態によると、メモリ・コントローラ(例、図1の108もしくはGPP112またはその両方を参照)が、ガベージ・コレクションを内部で行ってもよい。前述のとおり、ガベージ・コレクションは再配置されるべきLEBを選択することを含んでもよく、その後選択されたLEBにおけるまだ有効なすべてのデータが再配置(例、移動)されてもよい。まだ有効なデータが再配置された後、LEBは消去されて、その後新たなデータを記憶するために用いられてもよい。ガベージ・コレクションされたLEBから再配置されたデータの量は、書込み増幅を定める。さらに、書込み増幅を低減させるための効率的なやり方は、書込みヒート分離を実現することを含む。
書込みヒート分離
本状況において、データの「書込みヒート」とは、データが更新される(例、新たなデータが再書込みされる)速度(例、頻度)を示す。「ホット」とみなされるメモリ・ブロックは頻繁な更新速度を有する傾向があり、一方で「コールド」とみなされるメモリ・ブロックはホット・ブロックよりも遅い更新速度を有する。
論理ページの書込みヒートを追跡することは、たとえばページに対するLPTマッピング・エントリに特定数のビットを割り当てて、特定の期間またはウィンドウにおいてそのページで何回の書込み動作がみられたかを追跡することなどを伴ってもよい。通常、ホスト書込み動作は書込みヒートを増加させるのに対し、内部の再配置書込みは書込みヒートを減少させる。書込みヒートに対する実際のインクリメントもしくはデクリメントまたはその両方は、決定論的であっても確率的であってもよい。
同様に、各論理ページに対するLPTにおける特定数の付加的なビットによって読取りヒートが追跡されてもよい。メタデータを低減させるために、ストラドルおよび非ストラドル読取りに対するブロックごとの別個のカウンタが維持され得る物理ブロック・レベルにおいても読取りヒートが追跡され得る。しかし、メモリ・ブロックに対する読取り要求もしくはそれに対して行われる読取り動作またはその両方の数は、いくつかの実施形態に対するメモリ・ブロックの書込みヒートを定めるときの書込みヒート分離に関与しないことがあることが留意されるべきである。たとえば、データが特定のメモリ・ブロックから頻繁に読取られるとき、その高い読取り頻度は、そのメモリ・ブロックが高い更新速度も有することとなることを必ずしも意味しない。所与のメモリ・ブロックに対して行われる高頻度の読取り動作は、むしろそのメモリ・ブロックに記憶されたデータの重要性、価値などを示してもよい。
同じか、もしくは類似か、またはその両方である書込みヒート値のメモリ・ブロックをグループ化することによって、書込みヒート分離が達成されてもよい。特に、ヒート分離法は特定のメモリ・ブロックにおいてホット・メモリ・ページをともにグループ化してもよく、一方でコールド・メモリ・ページは別個のメモリ・ブロックにおいてともにグループ化される。よって、ヒート分離されたLEBはホット・データまたはコールド・データのいずれかに占有される傾向がある。
書込みヒート分離の利点は2つある。第1に、ホット・メモリ・ブロックに対してガベージ・コレクション・プロセスを行うことによって、コールド・データの再配置もトリガすることが防止される。書込みヒート分離がないとき、頻繁に行われるホット・データの更新によって、再配置されるホット・データと同じLEBに配置されたすべてのコールド・データの望ましくない再配置ももたらされる。したがって、ガベージ・コレクションを行うことによってもたらされる書込み増幅は、書込みヒート分離を実施する実施形態に対してかなり低くなる。
第2に、データの相対的なヒートをウェア・レベリングの目的のために使用できる。たとえば、ホット・データはより健全な(例、より新しい)メモリ・ブロックに配置されてもよく、一方でコールド・データはより健全なメモリ・ブロックと比べてより健全でない(例、より古い)メモリ・ブロックに配置されてもよい。よって、相対的により古いブロックがウェアにさらされる速度が効果的に遅くなることによって、ヒート分離を実施する所与のデータ・ストレージ・システムの全体的な耐久性が改善される。
書込み割り当て
書込み割り当ては、書込み動作のデータを開いたLEBのフリーの位置に配置することを含む。LEBのすべてのページが書込まれるとすぐにLEBは閉じられて、占有LEBを保持するプールに配置される。通常、占有プール内のLEBはガベージ・コレクションに対して適格となる。開いたLEBの数は通常限られており、閉じられた任意のLEBは、即時またはいくらかの遅延の後に、1つ以上の消去されたブロックをLEBに関連付けることによって開かれた新鮮なLEBで置換されてもよい。
実行の際に、ガベージ・コレクションはユーザの書込み動作と同時に行われてもよい。たとえば、ユーザ(例、ホスト)がデバイスにデータを書込むとき、デバイス・コントローラは新たに入来するデータ・ページに対するスペースを作成するために、無効データを有するLEBに対するガベージ・コレクションを継続的に行ってもよい。上述のとおり、ガベージ・コレクションが行われているLEBはしばしば、ガベージ・コレクション動作の時点でまだ有効ないくつかのページを有することがあり、よってこれらのページは好ましくは新たなLEBに再配置される(例、書込まれる)。
再び、前述の機能は、本明細書において記載もしくは提案されるか、またはその両方である任意のストレージ・システムの能力を限定することは決して意図されない。むしろ前述の機能は例として提供されたものであり、当業者が本記載を読んで認識するであろうとおり、所望の実施形態に依存して、ストレージ・システムのロジックは付加的または代替的な機能を行うように構成されてもよい。
ここで図3を参照すると、一実施形態によるシステム300が示されている。1つの選択肢として、本システム300は、たとえば他の図面を参照して記載されるものなどの本明細書において挙げられる任意のその他の実施形態からの特徴とともに実現されてもよい。しかし、こうしたシステム300および本明細書において提供されるその他のものは、本明細書において挙げられる例示的実施形態に具体的に記載されていてもいなくてもよいさまざまな適用もしくは置換またはその両方において用いられてもよい。さらに、本明細書において提供されるシステム300は、たとえばコントローラなどと組み合わせて、任意の所望の環境において用いられてもよい。
示されるとおり、システム300は書込みキャッシュ302を含み、この書込みキャッシュ302はガベージ・コレクタ304を含むいくつかの他のコンポーネントに結合される。前述のとおり、ガベージ・コレクタ304は、有効データを再配置して、後で再使用するために消去されるべき不揮発性メモリ・ブロックを提供することによって、LEB単位をフリーにするために用いられてもよい。よって、所望の実施形態に依存して、ガベージ・コレクタ304は連続する物理スペースのブロックを再請求してもよい。例示的実施形態によると、ガベージ・コレクタ304によって引き渡された不揮発性メモリ・ブロックの消去の追跡もしくは完了またはその両方を行うために、ブロック消去ユニットが用いられてもよい。
書込みキャッシュ302はフリー・ブロック・マネージャ306にも結合され、フリー・ブロック・マネージャ306は、フリー不揮発性メモリ・ブロックが消去された後にそれらを追跡してもよい。さらに、当業者が本記載を読んで認識するであろうとおり、フリー・ブロック・マネージャ306は消去されたフリー不揮発性メモリ・ブロックを用いて、異なるレーン(例、ブロック・ストライプ)から不揮発性メモリ・ブロックのフリー・ストライプを構築してもよい。
なおも図3を参照すると、書込みキャッシュ302はLPTマネージャ308と、メモリI/Oユニット310とに結合される。LPTマネージャ308は、メモリ内の論理アドレス対物理ページの論理物理マッピングを維持する。本発明を限定することは決して意図されない一例によると、LPTマネージャ308は、4KiBまたは16KiBの論理アドレスの論理物理マッピングを維持してもよい。メモリI/Oユニット310は、たとえば1つ以上の不揮発性メモリ・ページの読取り、不揮発性メモリ・ページの書込み、不揮発性メモリ・ブロックの消去などの低レベル動作を行うために、メモリ・チップと通信する。
本明細書において用いられるブロック・ストライプとページ・ストライプとの区別をよりよく理解するために、図4は一実施形態による概念図400である。LEBはブロック・ストライプから構築されており、通常はLEBを構築するために単一のブロック・ストライプが用いられる。しかし、代替的実施形態は、LEBを形成するために複数のブロック・ストライプを用いてもよい。1つの選択肢として、本概念図400は、たとえば他の図面を参照して記載されるものなどの本明細書において挙げられる任意のその他の実施形態からの特徴とともに実現されてもよい。しかし、こうした概念図400および本明細書において提供されるその他のものは、本明細書において挙げられる例示的実施形態に具体的に記載されていてもいなくてもよいさまざまな適用もしくは置換またはその両方において用いられてもよい。さらに、本明細書において提供されるコントローラ概念図400は、任意の所望の環境において用いられてもよい。よって、図4の例示的な不揮発性メモリ・コントローラの概念図400は、キャッシュ・アーキテクチャにおいて実現されてもよい。しかし、所望の実施形態に依存して、図4の概念図400は、不揮発性メモリに記憶されたデータの組織化の定義において実現されてもよい。したがって、両方の実施を以下に順に説明する。
不揮発性メモリ
ここで図4を見ると、概念図400は「プレーン0」から「プレーンM」とラベル付けされたM+1の集約プレーンのセットを含む。集約プレーンは、異なるチャネルにおいて同じプレーン・インデックスを有するすべての物理プレーンからなる。なお、本明細書において集約プレーンは単にプレーンとも呼ばれる。
不揮発性メモリに記憶されるデータによって実現されるとき、チャネルにおける各物理プレーンは、たとえば通常は1024、2048、またはそれを超えるオーダなどのブロックの大きなセットを含んでもよい。さらに、1つ以上の物理プレーンは、不良ブロック(例、性能が不十分なブロック、望ましくない特徴を有するブロックなど)に対する置換ブロックとして用いられ得るいくつかの付加的なブロックも含んでいてもよい。
不揮発性メモリの各プレーンにおいて、各チャネルからの単一ブロックはそれぞれのブロック・ストライプを形成してもよい。したがって、不揮発性メモリの所与の実施形態によってサポートされるブロック・ストライプの数は、プレーン当りのブロックの数と、プレーンの数とによって定められてもよい。
プレーン0の分解図において、概念図400は、残りのプレーンにおいてサポートされるブロック・ストライプのセットのうちの単一のブロック・ストライプ(ブロック・ストライプ0)をさらに示している。プレーン0のブロック・ストライプ0は、「チャネル0」から「チャネル10」とラベル付けされた各チャネルからの1つのブロックである11のブロックを含むことが示されている。なお、ブロック・ストライプは通常ガベージ・コレクションされた後に解消されるため、ブロック・ストライプに対するブロックの関連付けは時間とともに変化し得る。消去されたブロックはフリー・ブロック・プールに配置されることによって、書込み割り当てが新鮮なブロック・ストライプを要求するときに、フリー・ブロック・プールのブロックから新たなブロック・ストライプがアセンブルされてもよい。たとえば概念図400を見ると、チャネル0からのブロック10とチャネル4からのブロック41とは現在、示されるプレーン0のブロック・ストライプ0に関連付けられている。さらに、示されるブロック・ストライプ0はN+1のページ・ストライプを保持しており、したがって各ブロックは「ページ0」から「ページN」とラベル付けされたN+1のページを保持する。
キャッシュ・アーキテクチャ
なおも図4を参照すると、集約プレーン0の分解図に示されたページの各ブロックは、キャッシュ・アーキテクチャにおいて実現されるときに1つのチャネルからの独自のブロックを構成してもよい。同様に、各チャネルはブロック・ストライプを形成する単一の個別ブロックを与える。たとえば概念図400を見ると、チャネル0からのブロック10はその中にすべてのページ(ページ0からページN)を含み、一方でチャネル4からのブロック41はその中のすべてのページに対応し、他も同様である。
たとえばチャネル・レベルでRAIDを実現できてもよいメモリ・コントローラの状況において、ブロック・ストライプは、全体でブロックのストライプとなる複数のブロックで構成される。なおも図4を見ると、集約プレーン0の複数のブロックがブロック・ストライプ0を構成する。通常はブロック・ストライプのすべてのブロックが同じ集約プレーンに属するが、いくつかの実施形態においては、ブロック・ストライプの1つ以上のブロックが異なる物理プレーンに属していてもよい。したがって、各集約プレーンは1つ以上のブロック・ストライプを含んでもよい。よって、例示的実施形態によると、異なる物理プレーンからのブロック0からブロック10がブロック・ストライプを構成してもよい。
図4の概念図400が不揮発性メモリもしくはキャッシュ・アーキテクチャまたはその両方によって実現されるかどうかにかかわらず、異なる実施形態においては、各ブロックのページ数もしくは各プレーンのチャネル数またはその両方は、所望の実施形態に依存して変動してもよい。本発明を限定することは決して意図されない例示的実施形態によると、ブロックは256ページを含んでもよいが、さまざまな実施形態においてはそれより多いかまたは少ないページを含み得る。同様に、プレーン当りのチャネル数もしくはプレーンの数またはその両方は、所望の実施形態に依存して変動してもよい。
なおも図4を参照すると、同じページ・インデックスを有するブロック・ストライプ内のすべてのページはページ・ストライプを示す。たとえば、ページ・ストライプ0は、プレーン0のブロック・ストライプ0における各チャネルの第1のページ(ページ0)を含む。同様に、ページ・ストライプNは、プレーン0のブロック・ストライプ0における各チャネルの最終ページ(ページN)を含む。
上記に示したとおり、不揮発性メモリのメモリ・ブロックの物理的構成は時間とともに変化している。たとえば、過去のフラッシュ・ブロックはセル当り単一ビットの構成を有したが、データ・ストレージの改善によって、セル当り複数ビットの構成を実現するフラッシュ・ブロックが導入された。セル当り複数ビットの構成を有するブロックは、セル当り単一ビットの構成を有するブロックよりも多くの情報を記憶できるが、この記憶容量の増加によってパフォーマンス待ち時間の点が犠牲になる。たとえば、セル当り単一ビットの構成を有するメモリ・ブロックは、セル当り複数ビットの構成を有するメモリ・ブロックが経験するものよりも約2.5倍から約10倍少ない書込み待ち時間を経験する。同様に、セル当り単一ビットの構成を有するメモリ・ブロックは、セル当り複数ビットの構成を有するメモリ・ブロックよりも少ない読取り待ち時間を経験する。
この記憶容量とパフォーマンス待ち時間とのトレードオフによって、ストレージ・システムがメモリのパフォーマンス能力をある程度調整することが可能になる。たとえば、大量のI/Oトラフィックまたはプログラム/消去(P/E:program/erase)サイクルを有することが予測されるストレージ・システムは、セル当り複数ビットの構成を有するメモリ・ブロックよりもセル当り単一ビットの構成を有するメモリ・ブロックを選択的により多数含むことができる。反対に、大量のコールド・データを記憶することが予測されるストレージ・システムは、セル当り単一ビットの構成を有するメモリ・ブロックよりもセル当り複数ビットの構成を有するメモリ・ブロックを選択的により多数含むことができる。しかし、不揮発性メモリのブロックは使用によって時間とともに劣化し、結果的にエラーが起こりやすくなり、最終的には使用不可能となる。結果として、異なるプールに対するメモリ・ブロックの静的な割り当てを実施する従来のストレージ・システムは、ウェア・レベリングを行うか、もしくは効率的なメモリ・パフォーマンスを維持するか、またはその両方を行うことができなかった。
従来のシステムが経験したこれらの欠点とは著しく対照的に、本明細書に含まれるさまざまな実施形態は、たとえば以下にさらに詳細に説明されるとおり、異なるブロック構成の間で動的にトグルすることと、使用およびワークロード特性に基づいてブロック・プール・サイズを適合することとが可能なハイブリッド・コントローラを実現する。
ここで図5を見ると、一実施形態によるハイブリッド・コントローラ502を有する不揮発性メモリ・モジュール500が示されている。1つの選択肢として、本メモリ・モジュール500は、たとえば他の図面を参照して記載されるものなどの本明細書において挙げられる任意のその他の実施形態からの特徴とともに実現されてもよい。しかし、こうしたメモリ・モジュール500および本明細書において提供されるその他のものは、本明細書において挙げられる例示的実施形態に具体的に記載されていてもいなくてもよいさまざまな適用もしくは置換またはその両方において用いられてもよい。さらに、本明細書において提供されるメモリ・モジュール500は、任意の所望の環境において用いられてもよい。よって、図5(およびその他の図面)は任意の可能な置換を含むものと考えられてもよい。
上記のとおり、メモリ・モジュール500はハイブリッド・コントローラ502を含み、ハイブリッド・コントローラ502は、セル当り単一ビット・モード(本明細書においては「単一レベル・セル・モード」、または「SLCモード」とも呼ばれる)およびセル当り複数ビット・モードで構成されるブロックの管理もしくは適合またはその両方を行い得る。いくつかのアプローチによると、ハイブリッド・コントローラ502は、それらの異なるブロック構成を2つの異なるプール504、506に分けることによって管理する。これらのプールの一方504はSLCモードで構成されたブロックを含むものとして指定されるのに対し、他方のプール506はセル当り複数ビット・モードで構成されたブロックを含む。
プール504、506の各々は、一緒にメモリ・アレイ508の働きをするいくつかのデータ・ストレージ・コンポーネント(例、たとえばNANDフラッシュ・メモリ・デバイスなどのNVRAMメモリ・モジュール)にまたがって延在する。したがって、図5に示されるさまざまなコンポーネントはメモリ・カードとして機能し、図1のメモリ・カード100に関して上述されるアプローチのいずれかを実現してもよい。なおも図5を参照すると、ハイブリッド・コントローラ502はキャッシュ・メモリ510およびゲートウェイ512にも結合され、ゲートウェイ512は1つ以上のホスト、ストレージ・システム、実行中のアプリケーションなどからデータ・コマンドを受信する。ゲートウェイ512は、GPP514およびGPPメモリ516に順に結合される。上述のとおり、GPP514はたとえばASIC、FPGA、CPUなどの任意の所望のタイプのものであってもよい。同様に、GPPメモリ516はたとえばRAM、ROM、電池でバックアップされたDRAM、相変化メモリPC-RAM、MRAM、STT-MRAMなど、および/またはその組み合わせなどの任意の所望のタイプのものであってもよい。
ハイブリッド・コントローラ502は、頻繁にアクセス(例、読取り、再書込み、追加など)されるデータをSLCモードで構成されたブロックに、したがって第1のプール504に含まれるブロックに記憶させてもよく、一方でそれほど頻繁にアクセスされないデータはセル当り複数ビット・モードで構成されたブロックに、したがって第2のプール506に含まれるブロックに記憶される。このストレージ・スキームは、メモリの異なるブロックおよびそれらのそれぞれのパフォーマンス特徴の効率的な使用を達成する。しかし、各々のプール504、506のメモリ・ブロックは、時間とともに異なる量のウェアおよび異なる数のP/Eサイクルを経験するため、各ブロックの有効な健全性は他のものとは異なる。異なるブロックのウェアはP/Eサイクルの増加とともに異なる態様で増加するが、同じP/Eサイクルに対して、複数ビット・セルが経験するウェアは、SLCセルが経験するウェアよりも平均して速く増加する。さらに、メモリ・モジュール500に記憶されるホットおよびコールド・データの比率は時間とともに変動するため、それぞれのプール504、506の各々は過少使用されるか、もしくは過剰使用されるか、またはその両方であることがある。
したがって、ハイブリッド・コントローラ502は、実際の使用もしくはワークロード特性またはその両方に基づいてメモリを動的に適合するために、第1もしくは第2またはその両方のプール504、506の任意のブロックを選択的に再構成できる。このことによって、メモリ・モジュール500はたとえばウェア・レベリングを行うことなどによって、各々のメモリ・ブロックの有効な健全性を調節することができる。モジュール500に記憶されるホットまたはコールド・データの量に関係なく、モジュール500全体の効率的なパフォーマンスも維持される。
図6は、図5の第1および第2のプール504、506の詳細な図を提供しており、したがって図6のさまざまなコンポーネントは図5と共通の番号を有する。示されるとおり、第1および第2のプール504、506の各々は、ハイブリッド・コントローラ502から書込み動作を受信する。第1および第2のプール504、506の各々が受信した書込み動作のデータを用いて、第1および第2の即時使用可能な(RTU)キュー600、602に蓄積されたメモリのブロックが充填される。第1および第2のRTUキュー600、602のブロックが充填されると、それらのブロックはそれぞれの占有ブロック・プール604、606に戻され、それらがガベージ・コレクション手順を受ける準備ができたと識別されるまでそこにとどまっている。
RTUキュー600、602の1つにおいて、消去されたブロックが低レベルに達したとき、ガベージ・コレクタは、対応する占有ブロック・プール604、606から多数の無効化ページを有するブロックを選択する。上記のとおり、書込み更新、削除動作などの結果として、メモリのブロックに含まれるデータは時間とともに無効化される。一旦無効化されると、メモリの所与のブロックにおけるそのデータは事実上無用であり、削除されてもよい。しかし、ブロックに残りのデータを維持している間は、不揮発性メモリのブロックからデータの選択部分を削除することはできない。代わりに、最初に有効データが再配置されてからブロック全体が消去される。したがって、メモリの所与のブロックにおける無効化データの量が増加すると、そのブロックのストレージ・スペースの使用が非効率的になるため、そのブロックに対してガベージ・コレクション動作を行うための誘因が増加する。反対に、少量の無効化データを有するメモリのブロックに対してガベージ・コレクション動作を行うことは、コンピューティング・リソースの非効率的な使用であり、実際に効率を低くする。それによって、このコンピューティング・リソースの使用とストレージ・スペースの再生とのトレードオフが所望のとおりに均衡を保ってもよい。次いで、ガベージ・コレクタはすべてのまだ有効なデータを新たな位置に再配置し、その後そのブロックは消去可能と識別される。
消去可能と識別されたブロックは、それぞれ第1および第2のプール504、506の各々の消去可能キュー608、610に移行される。消去可能キュー608、610に入った後、ブロックは最終的に消去されて、それぞれのRTUキュー600、602に戻される。加えて、メモリのブロックは第1および第2のプール504、506の間で移行されてもよい。しかし、SLCモードで構成されたブロックに対する消去動作は、セル当り複数ビット・モードで構成されたブロックと比べて少し異なる態様で行われることが留意されるべきである。したがって、ブロックが消去されるときには、そのブロックに対するターゲット・モード(例、所与のブロックが構成されることが意図されるモード)が指定されることが好ましい。このことによって、たとえば図6において異なる矢印付きラインで示されるとおり、ブロックは消去可能キュー610からRTUキュー602または600に移動でき、同様に消去可能キュー608からRTUキュー600または602に移動できる。
本記載によると、プールの間を「移動された」ブロックは、メモリの同じプレーンおよびチャネルにとどまっている。言い換えると、所与のブロックの機能的特徴は、その中の各々のセルの特定のビットのアクティベートもしくはデアクティベートまたはその両方を行った結果として変化することがあるが、ブロック自体はメモリ内で物理的に移動しない。代わりに、ブロックは論理的な意味でプールの間を「移動される」。消去動作は、ブロックのターゲット・モードを指定することを伴ってもよい。いくつかのアプローチにおいて、これらの移動はLPT、動作ログ、ブロック状態テーブルなどにおいて示される。
特定のブロックは、第1および第2のプール504、506の間の移動に対して適格であると識別されてもよい。たとえば以下にさらに詳細に説明されるとおり、いくつかのアプローチによると、この適格性は、プール間の最後の移動からブロックが経験したP/Eサイクルの数、ブロックが消去可能であるかどうか、プールまたは各プールのチャネルに関連付けられた、プール間の各方向に移動され得るブロックの数に対応する1つ以上のクレジットなどに基づいていてもよい。
ここで図7を見ると、一実施形態によるストレージ・システムにおけるブロック・モードをトグルするための方法700が示されている。この方法700は、さまざまな実施形態において特に図1~6に示される環境のいずれかにおいて本発明に従って実行されてもよい。もちろん、当業者が本記載を読んで理解するであろうとおり、図7に具体的に記載される動作より多いかまたは少ない動作が方法700に含まれてもよい。たとえば、方法700に含まれるさまざまなプロセスは、SLCモードで構成された第1のプールのメモリ・ブロックを評価するという文脈で以下に記載されている。しかし、たとえば以下にさらに詳細に説明されるとおり、方法700に含まれるさまざまなプロセスの任意の1つ以上は、セル当り複数ビット・モードで構成された第2のプールのメモリ・ブロックを評価するという文脈において適用されてもよい。
方法700の各々のステップは、動作環境の任意の好適なコンポーネントによって行われてもよい。たとえばさまざまな実施形態において、方法700はハイブリッド・コントローラ、コントローラ、プロセッサ、コンピュータなど、または内部に1つ以上のプロセッサを有する何らかのその他のデバイスによって部分的または全体的に実行されてもよい。よっていくつかの実施形態において、方法700はコンピュータ実施方法であってもよい。こうした実施形態において、この方法を実施するために用いられるコンピュータは、メモリ・モジュール自体またはその一部分、たとえばハイブリッド・コントローラなどを含んでもよい。さらに、コンピュータ、プロセッサ、およびコントローラという用語は本明細書の任意の実施形態に関して交換可能に用いられることがあり、こうしたコンポーネントは本発明の多くのさまざまな置換における同等物とみなされる。
さらに、プロセッサを有する実施形態に対して、そのプロセッサは、たとえばハードウェアもしくはソフトウェアまたはその両方において実現され、かつ好ましくは少なくとも1つのハードウェア・コンポーネントを有する処理回路(単数または複数)、チップ(単数または複数)、もしくはモジュール(単数または複数)、またはその組み合わせなどであり、方法700の1つ以上のステップを行うために任意のデバイスにおいて使用されてもよい。例示的なプロセッサは、中央処理ユニット(CPU:central processing unit)、特定用途向け集積回路(ASIC:application specific integrated circuit)、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)など、その組み合わせ、または当該技術分野において公知の任意のその他の好適なコンピュータ・デバイスを含むが、それに限定されない。
図7に示されるとおり、方法700の動作702は、ストレージ・システムのメモリの各ブロックに対するブロック切り換えメトリックを維持することを含む。ブロック切り換えメトリックは、いくつかのアプローチにおいて、メモリの所与のブロックが再構成されて他方のプールに切り換えられてもよいか、もしくは切り換えられるべき(例、「必要がある」)か、またはその両方かどうかを判定するために用いられる。したがって、所与のブロックに対して維持されるブロック切り換えメトリックは、好ましくはその所与のブロックが経験した使用の量を追跡できる。なお、いくつかのアプローチにおいて、ブロック切り換えメトリックは、予め定められた数のプログラムされたページを含むブロックに対してのみ維持される。たとえば、ブロック切り換え動作が開始される前にその中のページの少なくとも半分がプログラムされていたブロックに対して、ブロック切り換えメトリックが維持される。
アプローチに依存して、メモリの各々のブロックに対して異なるタイプのブロック切り換えメトリックが維持されてもよい。たとえばいくつかのアプローチにおいて、ブロック切り換えメトリックは、それぞれのブロックに対するP/Eサイクル・カウントを含む。さらに、そのP/Eサイクル・カウントは、それぞれのブロックに対する特定の構成に対して特定的であってもよい。たとえば、P/Eサイクル・カウントは、セル当り複数ビット・モードまたはSLCモードで構成されている間にそれぞれのブロックが経験したP/Eサイクルの数のみを追跡してもよい。しかし、複数ビット・セル・モードで構成されたブロックの耐久性は、一般的にSLCモードで構成されたブロックの耐久性よりも低く、したがってただ1つのモードで追跡するときは、複数ビット・モードでP/Eサイクルを追跡することが有利である。さらに、好ましい実施形態においては、ブロック・モードを切り換えるときに切り換えメトリックのP/Eサイクル・カウントがリセットされることによって、最後の切り換えからの現在のモードにおけるP/Eサイクルのみが用いられてもよい。望ましいことに、このことはメモリの各ブロックに対して記憶されるメタデータの量を低減させることによって、システム全体の効率を増加させる。たとえば当業者が本記載を読んだ後に認識するであろうとおり、このP/Eサイクル・カウントは、他のモードで構成されている間のそれぞれのブロックに対するP/Eサイクル・カウントを推定するために用いられてもよい。
他のアプローチにおいて、ブロック切り換えメトリックは、それぞれのブロックに対する生のビット・エラー率(RBER:raw bit error rate)を含む。RBERはさらに、所与のブロックのすべてのページに対する平均値、所与のブロックにおける任意のページまたはコードワードの最高(例、ワースト)値、所与のブロックのすべてのページの中央値などとして維持されてもよい。ブロックのRBERに基づくブロック切り換えメトリックは、好ましくはプログラム-消去サイクルからの基礎をなす閾値電圧分布における永続的な変化によるRBERへの寄与を反映する。さらなるアプローチにおいて、ブロック切り換えメトリックは、それぞれのブロックに対するデータ・アクセス時間、たとえば読取り実行時間、書込み実行時間、消去時間などを含む。いくつかのアプローチにおいては、異なるブロック切り換えメトリックの組み合わせも実現されてもよい。図7には示されていないが、方法700は、プール間の各方向に移動され得るブロックの数に対応する1つ以上のクレジットを初期化することも含んでもよい。たとえば以下にさらに詳細に説明されるとおり、本記載に関して、「クレジット」はいくつかのアプローチにおいて、メモリ・プールがそれぞれのサイズの点で相対的に等しいままであることを確実にするために用いられる。
方法700は動作703に進み、ここで第1のプールの消去可能キュー608から消去されるべきブロックが選択され、その後決定704に進む。代替的実施形態において、動作703は占有ブロック・プール606からもブロックを選択してもよい。しかし、ブロックを消去する前にすべてのまだ有効なデータを再配置する必要があるため、消去可能キュー608からブロックを選択することが有利である。決定704は、第1のブロックのプログラムされたページの量が予め定められた範囲内であるかどうかを判定することを含む。いくつかのアプローチは、ブロックのモードを変更するためにはページの少なくとも半分がプログラムされるべきであることを指定するが、他のアプローチはこうした制限を有さなくてもよい。
第1のブロックのプログラムされたページの量が予め定められた範囲内にないと判定したことに応答して、方法700は以下に説明される動作724に進む。しかし、第1のブロックのプログラムされたページの量が十分であり、よって予め定められた範囲内であると判定したことに応答して、方法700は決定705に進む。ここで決定705は、第1のブロックに対応するブロック切り換えメトリックに従って、第1のプールの第1のブロックを第2のプールに移動する必要があるかどうかを判定することを含む。上述のとおり、メモリのブロックは2つの異なるプールに分割されてもよく、各プールは同じモードで構成されたメモリのブロックを含む。たとえば、第1のプールのブロックはSLCモードで構成されるのに対し、第2のプールのブロックはセル当り複数ビット・モードで構成される(例、上記の図5のプール504、506を参照)。しかし、プールの数およびそこに含まれるブロック構成のタイプは、所望のアプローチに依存して変動してもよい。
加えて、「第1のブロック」はメモリの特定のブロックに限定されることは決して意図されないことが留意されるべきである。代わりに「第1のブロック」という用語は、方法700によって現在評価されている第1のプールのブロックの任意の1つを示すために用いられている。方法700は消去可能キュー(例、608、610を参照)のブロックを調べているが、代替的なアプローチにおいて、方法700は全面的なやり方で各プールのメモリのすべてのブロックを調べてもよく、したがって、決定705もしくは本明細書に含まれる任意のその他のプロセスまたはその両方は、反復的なやり方で繰り返されてもよい。たとえば当業者が本記載を読んだ後に認識するであろうとおり、明らかに、方法700によって選択された現在占有ブロック・プール(例、606、604を参照)にある任意のブロックは、好ましくは最初にガベージ・コレクション手順によって中にあるすべての有効データが再配置されてからブロックが消去される。
再び、第1のブロックに対応するブロック切り換えメトリックを用いて、第1のブロックを第2のプールに移動する必要があるかどうかが判定される。したがっていくつかのアプローチにおいて、決定705は、ブロック切り換えメトリックが予め定められた範囲内であるかどうかを判定することを含む。各プールまたはメモリの各々のブロックに対して異なるタイプのブロック切り換えメトリックが維持されてもよく、したがって、第1のブロックを第2のプールに移動させるべきかどうかを判定するプロセスは、どのタイプのメトリックが利用可能であるかに依存して変動してもよい。たとえば、いくつかのアプローチにおいて、ブロック切り換えメトリックは第1のブロックに対するP/Eサイクル・カウントを含み、それを用いて、第1のブロックが現在のモードに切り換えられてから、または全体(すなわち両方のモードでのP/Eサイクル)で、予め定められた数のP/Eサイクルを経験したかどうかが判定されてもよい。他のアプローチにおいては、第1のブロックに関連するプログラム-消去サイクルもしくはデータ・アクセス時間またはその両方からの基礎をなす閾値電圧分布における永続的な変化を反映するRBER値を用いて、第1のブロックの性能が望ましくないかどうかが判定されてもよい。したがって、各モードの閾値は異なり得るため、閾値を用いることはブロック切り換えメトリックを実施する望ましいやり方である。加えて、(例、プールがサイズ変更されるときに)ワークロード特性に基づいて閾値が動的に適合されてもよい。
対応するブロック切り換えメトリックに従って、第1のブロックを第2のプールに移動する必要があると判定したことに応答して、方法700は動作708に進み、動作708は第1のブロックを消去することを含む。
方法700は、第1のプールからの第1のブロックを第2のプールに対応する第2のRTUキューに移動することをさらに含む。動作710を参照。本記載によると、RTUキューもしくはプールまたはその両方の間を「移動された」ブロックは、メモリの同じプレーンおよびチャネルにとどまっている(例、図4を参照)。言い換えると、所与のブロックの機能的特徴は、その中の各々のセルの特定のビットのアクティベートもしくはデアクティベートまたはその両方を行った結果として変化することがあるが、ブロック自体はメモリ内で物理的に移動しない。代わりに、ブロックは論理的な意味でRTUキューもしくはプールまたはその両方の間を「移動される」。いくつかのアプローチにおいて、これらの移動はLPT、動作ログなどにおいて示される。
再び、本実施形態によると、第1のプール(および第1のRTUキュー)はSLCモードで構成されたメモリ・ブロックを含むのに対し、第2のプール(および第2のRTUキュー)はセル当り複数ビット・モードで構成されたメモリ・ブロックを含む。アプローチに依存して、セル当り複数ビット・モードで構成された第2のプールのブロックは、いくつかの異なる構成を有してもよい。たとえば、いくつかのアプローチにおいて、セル当り複数ビット・モードで構成された第2のプールのブロックはマルチ・レベル・セル(MLC:multi-level cell)モードで構成されるのに対し、他のアプローチにおいて、セル当り複数ビット・モードで構成された第2のプールのブロックはトリプル・レベル・セル(TLC:triple-level cell)モードで構成される。さらに他のアプローチにおいて、セル当り複数ビット・モードで構成された第2のプールのブロックはクワッド・レベル・セル(QLC:quad-level cell)モードで構成され、QLCモードで構成されたブロックの各々は下側のページと、上側のページと、予備のページと、トップ・ページとを含む。
したがって、第1および第2のプールの各々は異なるモードで構成されたメモリ・ブロックを含むため、動作710において第1のブロックを実際に移動するプロセスは、ブロックを再構成することを伴う。選択されたブロックが第1のプールから第2のRTUキューに移動されるのか、第2のプールから第1のRTUキューに移動されるのかに依存して、メモリのブロックを再構成するプロセスは異なる態様で行われてもよい。たとえば、第1のプールから第2のRTUキューに移動されるブロックは、好ましくはSLCモードからセル当り複数ビット・モードに再構成される。しかし、第2のプールから第1のRTUキューに移動されるブロックは、好ましくはセル当り複数ビット・モードからSLCモードに再構成される。SLCおよびセル当り複数ビット・モードの間で所与のブロックを再構成するプロセスは、ブロックに含まれるビットの特定のもののデアクティベートもしくは再アクティベートまたはその両方を行うこと、所与のブロックを論理的に再定義することなど、あるいは本記載を読んだ後の当業者に明らかになるであろう任意のプロセスを用いることによって行われてもよい。
使用される容量の変化、もしくは経験したワークロード特性の変化(例、スキュー変化)、またはその両方を経験したことに応答して、ブロックは異なるモードに再構成され得る。しかし、いくつかのアプローチはワークロード特性を追跡しなくてもよい。さらに、使用およびワークロード特性は不変のままであるが、なおも書込み動作が行われているとき(例、ホストもしくは再配置またはその両方の書込み)、プール間のブロックのスワッピングが行われる。
通常、メモリのブロックを再較正することは、そのブロック自体のパフォーマンスに対する影響を有する。たとえば、所与のブロックにアクセスすることに関連する読取り閾値電圧シフト値は、その再較正の結果としていくつかの状況において変化してもよい。しかし、方法700は使用およびワークロード特性とは独立にメモリ・ブロックを時間とともに定期的に再構成するため、P/Eサイクリングからの基礎をなす閾値電圧分布における変化を補償する過去の読取り閾値電圧シフト値(すなわち、ベース較正からの読取り閾値電圧シフト値)はしばしば正確であり、こうした状況において再使用されてもよい。これらの過去の読取り閾値電圧シフト値は、メモリ(例、ルックアップ・テーブル)に記憶されて必要に応じてアクセスされることによって、ブロック・モード・トグリング・プロセスからベース較正が分離されてもよい。さらに、本明細書に含まれるプロセスは、書込みヒート分離に依拠しない。このことはパフォーマンスの遅延を望ましく低減させて計算能力を保存することによって、システムの効率を増加させる。しかし、いくつかの状況においては、本記載を読んだ後の当業者に明らかになるであろう任意のプロセスを用いて、所与のブロックに対する新たな閾値電圧シフト値が再較正されてもよい。さらに、プール間で定期的にブロックをスワップすることは、ウェア・レベリングのために有利である。プール内のみでウェア・レベリングを行うことは、全体的な耐久性を低減させて最初に摩耗するプールによって定めさせることになる。ブロックの定期的なスワッピングによって、たとえば健全性ビニングなどのウェア・レベリングを各プールにおいて独立に行うことが可能になる一方で、同時に定期的なブロック・スワッピングを通じてプール間のウェアが均一にされることによって、全体的な耐久性がすべてのブロックの平均耐久性まで高められる。
方法700は動作710から動作712に進み、動作712は第1のプールに移動させるべき第2のプールからの第2のブロックを選択することを含む。再び、第1および第2のプールは、時間とともにそれぞれのサイズを維持することが好ましい(例、使用およびワークロード特性が変化しないか、またはわずかしか変化しないとき)。第2のブロックを第1のプールに移動することによって、第2のプールのサイズが増加しないことが確実となり、かつ第1のプールのサイズが減少しないことが確実となる。
以下にさらに説明されるとおり、通常、選択された第1のブロックは、過去のブロック切り換えメトリックに従って第2のプールに移動されることが以前に適格であったが、そのブロックを第1のプールから第2のプールに移動するために十分なクレジットがなかったものである。図7に示される方法700は、その間にクレジットは変化しなかったと想定するため、動作712においては第2のプールから第2のブロックが選択される。しかし、当業者が本記載を読んで認識するであろうとおり、代替的実施形態において、クレジットはその間に補充されてもよい(例、その間に別のブロックが第2のプールから第1のプールに移動されたか、あるいは使用もしくはワークロード特性またはその両方の変化によって、第1のプールを縮小して第2のプールを拡大する必要があったことの結果として)。結果的に、方法700は切り換え方向に対応するカウンタをデクリメントし、反対の切り換え方向に対応するカウンタをインクリメントし、かつ動作702に直接戻ってもよい(図7に示さず)(すなわち、この場合には動作712、714、716、および718をスキップする)。
動作712において選択されたブロックは、第2のプールの任意のブロックであってもよい。しかし、いくつかのアプローチにおいては、消去可能キュー610からのブロックが選択される。他のアプローチにおいては、最高の進行中のP/Eサイクル・カウントを有するブロックが第1のプールに移動されるように選択される。さらに他のアプローチにおいては、最高の健全性メトリックを有するとして識別されたブロックが第1のプールに移動されるように選択される。さらに他のアプローチにおいては、他のプールに移動されるべきであることを示すためにマークされた(例、フラグを立てられた)特定のブロックが動作712において選択されてもよい。
動作714は、たとえば本明細書に含まれる任意のアプローチによって、選択された第2のブロックが消去可能キュー610からのものではなく、占有ブロック・プール606からのものであるときに、選択された第2のブロックからの有効データを再配置することを含む。もし選択された第2のブロックが消去可能キュー610からのものであれば、すべての有効データはすでに再配置されており、動作714はスキップされる。ブロックからの有効データを再配置することは、アプローチに依存して任意の所望の方式で行われてもよい。たとえば、いくつかのアプローチにおいて、有効データはメモリの異なるブロックに記憶される前にキャッシュ(例、図5のキャッシュ・メモリ510を参照)に一時的に記憶されてもよい。他のアプローチにおいて、有効データはメモリの別のブロックに直接移動されてもよい。
なおも図7を参照すると、動作716は第2のブロックを消去することを含む。さらに、動作718は、第2のプールからの第2のブロックを第1のプールに対応する第1のRTUキューに実際に移動することを含む。
第1および第2のプールの間でブロックを移動させるこのプロセスは、第1および第2のブロックのスワッピングが実質的に同時に行われるように実行されるが、第1および第2のプールのサイズのバランスを取るプロセスは、他のアプローチにおいては幾分遅延してもよい。たとえば、システムの通常の動作において起こる同時ブロック切り換えの数を制限することが望ましいことがある。したがって、クレジット・ベースのスキームを用いて、限られた数のブロックのみが任意の時点でプール間の各方向に切り換えられ得るようにすることが意味をなしてもよい。
たとえば、このクレジット・ベースのスキームは2つのカウンタを維持することを伴ってもよく、各々のカウンタはプール間を一方の方向(例、第1から第2のプールへ、および第2から第1のプールへ)に移動され得るブロックの数に対応する。最初に、n1およびn2のブロックが各方向に切り換えられてもよく、ここでn1およびn2の値は等しくても異なっていてもよい。本発明を限定することは決して意図されない一例によると、[n1,n2]=[1,0],[1,1],[5,5]などである。いくつかのアプローチによると、対応する方向に対するカウンタがゼロでないときにのみブロックがプール間を移動してもよい。カウンタがゼロでない状況において、好ましくはそのカウンタはブロックが対応する方向にプール間を移動した後にデクリメントされるのに対し、他方の方向に対応するカウンタはインクリメントされる。いくつかのアプローチにおいては、カウンタの一方または両方が飽和カウンタであってもよい。しかし、他のアプローチにおいては、第1のブロックが移動したことに応答して第2のブロックを意図的に移動させないことによって、プールがサイズ変更されてもよい。それによって、プールのサイズが所望のとおりに調整されてもよい。
なおも図7を参照すると、方法700は動作718から動作702に戻り、たとえばブロック切り換えメトリックが更新されるか、もしくはモニタされ続けるか、またはその両方が行われてもよい。したがって、方法700はメモリのさまざまなブロックのウェアを正常に調節する一方で、リアル・タイムでブロック・プール・サイズを維持することによって、包括的ストレージ・システムのメモリの長寿命および効率的なパフォーマンスを確実にできる。
しかし、決定705に戻ると、対応するブロック切り換えメトリックに従って、第1のプールの第1のブロックを第2のプールに移動する必要がないと判定したことに応答して、方法700は決定720に進む。言い換えると、所与のブロックを他方のプールに移動することが重要であるとブロック切り換えメトリックが示していないと判定したことに応答して、方法700は決定720に進む。ここで決定720は、第1のブロックが第2のプールに移動されるのに適格であるかどうかを判定することを含む。
前述のとおり、メモリの所与のブロックにおける無効化データの量が増加すると、そのブロックのストレージ・スペースの使用が非効率的になるため、そのブロックに対してガベージ・コレクション動作を行うための誘因が増加する。反対に、少量の無効化データを有するメモリのブロックに対してガベージ・コレクション動作を行うことは、コンピューティング・リソースの非効率的な使用であり、実際に効率を低くする。それによって、決定720の実行においてこのコンピューティング・リソースの使用とストレージ・スペースの再生とのトレードオフが実施されてもよい。
したがって好ましいアプローチにおいて、決定720は、第1のブロックに対応するブロック切り換えメトリックに従い、かつ切り換え方向に対応する飽和カウンタに従って判定される。言い換えると、選択されたブロックは好ましくは消去可能キューからのものであり、かつ消去可能キューのブロックの数は通常、プールのブロックの総数に比べて少ないため、他のブロックはすでに適格であり得るのに対して、選択されたブロックはブロック切り換えメトリックによるとまだ適格ではない可能性が高い。ガベージ・コレクションはバックグラウンドで行われるため、選択されたブロックはある時点で最終的には自身を再構成のために適格にするブロック切り換えメトリックに到達するだろう。ブロックが再構成されて他方のプールに切り換えられてもよいことを示すブロック切り換えメトリックは、そのブロックが再構成される必要があることをブロック切り換えメトリックが示す前に到達される。よって、ブロックを切り換える必要があるときより前にブロックがモードを切り換える可能性が存在し、かつその可能性は比較的高いため、まだ有効なデータを再配置するための付加的なオーバーヘッドを伴う、動作712において占有ブロック・プールから第2のブロックを選択する結果をもたらし得る強制的なスワッピングを行う可能性が低くなる。たとえば、決定720は、現在のモードに切り換えられてからのP/Eサイクル・カウントが予め定められた範囲内であるかどうか、もしくは所与のブロックに対するRBERが予め定められた範囲内であるかどうか、またはその両方を判定するブロック切り換えメトリックを伴ってもよく、このことは、もし所望であればそのブロックを移動してもよいが、その移動が起こることはウェア・レベリングの点からは重要でないことを示す。
決定720は、ブロックが第2のプールに移動されるのに適格であるかどうかの判定において、プール間を移動され得るブロックの量に対応する1つ以上のクレジットも取り入れてもよい。言い換えると、クレジットおよび対応するカウンタは、ブロック構成モードが切り換えられる特定の方向に対応する。たとえば、所与のブロックが一方のプールから他方へと何回移動されたかを追跡するために、各々のブロックに飽和カウンタが割り当てられてもよい。再び、いくつかのアプローチにおいては、意図される移動方向に対するカウンタがゼロでないときにのみブロックがプール間を移動してもよい。カウンタがゼロでない状況において、好ましくはそのカウンタはブロックが所与の方向にプール間を移動した後にデクリメントされるのに対し、他方の方向に対応するカウンタはインクリメントされる。
対応するブロック切り換えメトリックに従って、第1のブロックが第2のプールに移動されるのに適格ではないと判定したことに応答して、方法700は動作724に進み、動作724は第1のブロックを消去することを含み、一方で動作726は第1のブロックを第1のRTUキューに戻すことを含む。示されるとおり、方法700は動作726から動作702に戻り、たとえばブロック切り換えメトリックが更新されるか、もしくはモニタされ続けるか、またはその両方が行われてもよい。
しかし、対応するブロック切り換えメトリックに従って、第1のブロックが第2のプールに移動されるのに適格であると判定したことに応答して、方法700は動作730に進み、動作730は第1のブロックを消去することを含む。動作732は、本明細書に記載される任意のアプローチに従って、第1のプールからの第1のブロックを第2のRTUキューに移動することをさらに含む。各切り換え方向に対するカウンタを実現するアプローチに対して、第1のプールからの第1のブロックを第2のRTUキューに最終的に移動したことに応答して、第1から第2のプールへの切り換え方向に対応するカウンタもデクリメントされてもよく、反対の切り換え方向に対応するカウンタはインクリメントされてもよい。方法は動作732から動作702に戻る。
前述のとおり、方法700に含まれるさまざまなプロセスの1つ以上は、セル当り複数ビット・モードで構成された第2のプールのメモリ・ブロックを評価して、おそらくはその1つ以上をSLCモードで構成されるように移行するという文脈において適用されてもよい。したがって、方法700に含まれるプロセスの任意の1つ以上、もしくはそれとともに記載される任意のアプローチ、またはその両方は、第2のプールに含まれるメモリのブロックを評価して、それらを第1のプールに移動すべきかどうかを判定するという文脈において実現されてもよい。言い換えると、たとえば当業者が本記載を読んだ後に認識するであろうとおり、方法700に含まれるプロセスは、ストレージ・システムのメモリの任意のブロックをモニタするために用いられてもよい。
本発明を限定することは決して意図されない一例によると、所与のブロックに対応するブロック切り換えメトリックに従って、第2のプールのブロックを第1のプールに移動する必要があるかどうかを判定するために、方法700に含まれるプロセスが用いられてもよい。対応するブロック切り換えメトリックに従って、第2のプールのブロックを第1のプールに移動する必要があると判定したことに応答して、もしそのブロックが消去可能キューからのものでなければ、ブロックを消去する前にそのブロックから有効データが再配置される。そのブロックはさらに、第2のプールから第1のRTUキューに移動される。第2のプールから移動されたブロックと置換するために、第1のプールの第2のブロックも選択される。選択された第2のブロックの有効データがもしあれば再配置され、その後選択された第2のブロックは消去されて第1のプールから第2のRTUキューに移動される。さらに、所与のブロックに対応するブロック切り換えメトリックに従って、第2のプールのブロックが第1のプールに移動されるのに適格であるかどうかを判定するために、方法700に含まれるプロセスが用いられてもよい。対応するブロック切り換えメトリックに従って、第2のプールのブロックが第1のプールに移動されるのに適格であると判定したことに応答して、もしそのブロックが消去可能キューからのものでなければ、ブロックを消去する前にそのブロックから有効データが再配置される。そのブロックはさらに、第2のプールから第1のRTUキューに移動される。
したがって、本明細書に記載されるさまざまなアプローチは、異なるモードで構成されたブロックに対する平均ブロック耐久性を定めるために特徴付けを用いることができる。加えて、各モードにおいてブロックが経験することが意図されるP/Eサイクルのターゲット比率を定めるために、各モードの平均ブロック耐久性が用いられ得る。たとえば、SLCモードのブロックは通常平均してQLCモードのブロックの9倍の耐久性を有するため、各モードにおける1:9P/Eサイクルの比率がターゲットとして設定されてもよい。異なるブロック・モード間のトグリングを制御するため、およびブロック・モード切り換え頻度もしくは関連するコンピューティング・オーバーヘッドまたはその両方を低減するために、単純な閾値も用いられる。たとえば、所与のブロックが切り換えに対して適格になるときを示すために第1の閾値が用いられてもよく、一方で所与のブロックを切り換える必要があるときを判定するために第2の閾値が用いられてもよい。結果として、メモリのブロックは、プール間のブロック・ウェアの変動を低減し、かつウェア・レベリングと組み合わされて、すべてのブロック間のブロック・ウェアの変動を低減し、いずれのモードにおいても閾値電圧シフト値の更新を可能にし、かつブロックの正確な健全性追跡を可能にするために十分に高い頻度でプール間を切り換えられる。たとえば、ウェア・レベリング・パフォーマンスをさらに改善するために、本明細書に含まれる任意のアプローチによって、健全性ビニングもしくは書込みストリーム・マッピングまたはその両方がさらに実現されてもよい。
なお、本明細書においてはさまざまなアプローチが2つのメモリ・ブロック・プールの文脈で記載されているが、これらのアプローチのいずれかが2つより多くのブロック・プールを有する実施形態に拡張されてもよい。こうした実施形態においては、優先順位を用いること、ユーザ入力に基づくこと、それぞれのプールの各々のRTUブロック・レベルを比較すること、および最少数のRTUブロックを有するプールを選択することなどによって、ターゲット・プールが定められ得る。加えて、「範囲内」および「閾値より高い」などの用語は、本発明を限定することは決して意図されないことが留意されるべきである。ある値が所与の範囲内であるか、または所与の閾値より高いかどうかを判定する代わりに、所望のアプローチに依存して、たとえばある値が予め定められた範囲外であるかどうか、絶対値が閾値より高いかどうか、ある値が閾値より低いかどうかなどに関する同等の判定が行われてもよい。
本発明は、任意の可能な技術的詳細レベルの統合におけるシステム、方法、もしくはコンピュータ・プログラム製品、またはその組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含んでもよい。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および記憶できる有形デバイスであり得る。コンピュータ可読記憶媒体は、たとえば電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の好適な組み合わせなどであってもよいが、それに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは以下を含む。ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、リード・オンリ・メモリ(ROM:read-only memory)、消去可能プログラマブル・リード・オンリ・メモリ(erasable programmable read-only memory)(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フレキシブル・ディスク、機械的にコード化されたデバイス、たとえばパンチ・カードまたは記録された命令を有する溝の中の隆起構造など、および前述の任意の好適な組み合わせ。本明細書において用いられるコンピュータ可読記憶媒体は、たとえば電波もしくはその他の自由に伝播する電磁波、導波路もしくはその他の伝送媒体を通じて伝播する電磁波(例、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号など、それ自体が一時的信号のものであると解釈されるべきではない。
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされ得るか、またはたとえばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくは無線ネットワーク、またはその組み合わせなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはその組み合わせを含んでもよい。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信して、そのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令はアセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路に対する構成データ、または1つ以上のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードであってもよく、このプログラミング言語はオブジェクト指向プログラミング言語、たとえばSmalltalk、またはC++など、および手続き型プログラミング言語、たとえば「C」プログラミング言語または類似のプログラミング言語などを含む。コンピュータ可読プログラム命令は、すべてがユーザのコンピュータで実行されてもよいし、スタンド・アロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータで実行されてもよいし、一部がユーザのコンピュータで、一部がリモート・コンピュータで実行されてもよいし、すべてがリモート・コンピュータまたはサーバで実行されてもよい。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてもよいし、(たとえば、インターネット・サービス・プロバイダを用いてインターネットを通じて)外部コンピュータへの接続が行われてもよい。いくつかの実施形態において、たとえばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)などを含む電子回路は、本発明の態様を行うために電子回路をパーソナライズするためのコンピュータ可読プログラム命令の状態情報を使用することによって、コンピュータ可読プログラム命令を実行してもよい。
本明細書においては、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図もしくはブロック図またはその両方を参照して、本発明の態様を説明している。流れ図もしくはブロック図またはその両方の各ブロック、および流れ図もしくはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実現され得ることが理解されるだろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたはマシンを生成するためのその他のプログラマブル・データ処理装置のプロセッサに提供されることによって、そのコンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定される機能/動作を実現するための手段を生じてもよい。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラマブル・データ処理装置、もしくはその他のデバイス、またはその組み合わせに特定の方式で機能するように指示できるコンピュータ可読記憶媒体にも記憶されることによって、命令が記憶されたコンピュータ可読記憶媒体が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定される機能/動作の態様を実現する命令を含む製造物を含んでもよい。
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにもロードされて、コンピュータに実現されるプロセスを生成するためにコンピュータ、他のプログラマブル装置、または他のデバイスにおいて一連の動作ステップを行わせることによって、そのコンピュータ、他のプログラマブル装置、または他のデバイスにおいて実行される命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定される機能/動作を実現してもよい。
図面における流れ図およびブロック図は、本発明のさまざまな実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施のアーキテクチャ、機能、および動作を示すものである。これに関して、流れ図またはブロック図の各ブロックは、指定される論理機能(単数または複数)を実現するための1つ以上の実行可能命令を含むモジュール、セグメント、または命令の一部を表してもよい。いくつかの代替的実施において、ブロック内に示される機能は、図面に示されるものとは異なる順序で起こってもよい。たとえば、連続して示される2つのブロックは、実際には1つのステップとして達成されてもよいし、同時に実行されても、部分的もしくは全体的に時間が重複する方式で実質的に同時に実行されてもよく、または関与する機能に依存して、これらのブロックがときに逆の順序で実行されてもよい。加えて、ブロック図もしくは流れ図またはその両方の各ブロック、およびブロック図もしくは流れ図またはその両方のブロックの組み合わせは、指定された機能または動作を行うか、特定目的のハードウェアおよびコンピュータ命令の組み合わせを実行する特定目的のハードウェア・ベースのシステムによって実現され得ることが注目されるだろう。
さらに、さまざまな実施形態によるシステムは、プロセッサと、そのプロセッサに統合されるか、もしくはそのプロセッサによって実行可能か、またはその両方であるロジックとを含んでもよく、このロジックは本明細書に述べられているプロセス・ステップの1つ以上を行うように構成される。統合されるとは、そのプロセッサがハードウェア・ロジックとして自身に埋め込まれたロジックを有することを意味し、それはたとえば特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)などである。プロセッサによって実行可能とは、そのロジックがハードウェア・ロジックか、ソフトウェア・ロジック、たとえばファームウェア、オペレーティング・システムの一部、アプリケーション・プログラムの一部などであるか、またはハードウェアおよびソフトウェア・ロジックの何らかの組み合わせであって、それがプロセッサによってアクセス可能であり、かつプロセッサによる実行の際に何らかの機能をプロセッサに行わせるように構成されることを意味する。当該技術分野において公知であるとおり、ソフトウェア・ロジックは、任意のメモリ・タイプのローカルもしくはリモートまたはその両方のメモリに記憶されてもよい。たとえばソフトウェア・プロセッサ・モジュールもしくはハードウェア・プロセッサまたはその両方など、たとえばASIC、FPGA、中央処理ユニット(CPU)、集積回路(IC)、グラフィックス処理ユニット(GPU:graphics processing unit)などの、当該技術分野において公知の任意のプロセッサが用いられてもよい。
図8は、一実施形態によるネットワーク・アーキテクチャ800を示している。図8に示されるとおり、第1のリモート・ネットワーク804および第2のリモート・ネットワーク806を含む複数のリモート・ネットワーク802が提供される。リモート・ネットワーク802と近接ネットワーク808との間に、ゲートウェイ801が結合されてもよい。本ネットワーク・アーキテクチャ800の状況において、ネットワーク804、806の各々は、LAN、たとえばインターネットなどのWAN、公衆交換電話網(PSTN:public switched telephone network)、構内電話網などを含むがそれに限定されない任意の形を取ってもよい。
使用中、ゲートウェイ801はリモート・ネットワーク802から近接ネットワーク808への進入点の働きをする。それによってゲートウェイ801は、ゲートウェイ801に到着するデータの所与のパケットを方向付けることが可能なルータ、および所与のパケットに対してゲートウェイ801に出入りする実際の経路を提供するスイッチとして機能してもよい。
近接ネットワーク808に結合された少なくとも1つのデータ・サーバ814がさらに含まれており、このデータ・サーバ814はリモート・ネットワーク802からゲートウェイ801を介してアクセス可能である。なお、データ・サーバ(単数または複数)814は、任意のタイプのコンピュータ・デバイス/グループウェアを含んでもよい。各データ・サーバ814には、複数のユーザ・デバイス816が結合される。こうしたユーザ・デバイス816は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、プリンタ、もしくは任意のその他のタイプのロジック含有デバイス、またはその組み合わせを含んでもよい。なお、いくつかの実施形態においては、ユーザ・デバイス811も任意のネットワークに直接結合されてもよい。
周辺機器820または一連の周辺機器820、たとえばファクシミリ機、プリンタ、スキャナ、ハード・ディスク・ドライブ、ネットワーク化もしくはローカルまたはその両方のデータ・ストレージ・ユニットまたはシステムなどが、ネットワーク804、806、808の1つ以上に結合されてもよい。なお、データベースもしくは付加的なコンポーネントまたはその両方が、ネットワーク804、806、808に結合された任意のタイプのネットワーク・エレメントとともに使用されるか、またはそこに統合されてもよい。本記載の文脈において、ネットワーク・エレメントとはネットワークの任意のコンポーネントを示してもよい。
いくつかの実施形態によると、本明細書に記載される方法およびシステムは、仮想システムもしくは1つ以上の他のシステムをエミュレートするシステムまたはその両方によって実現されるか、もしくはそのシステムにおいて実現されるか、またはその両方であってもよく、そのシステムはたとえばマイクロソフト・ウィンドウズ(MICROSOFT WINDOWS)(R)環境を仮想的にホストするUNIX(R)システムなどである。いくつかの実施形態において、この仮想化もしくはエミュレーションまたはその両方は、VMWAREソフトウェアの使用によって促進されてもよい。
他の実施形態において、1つ以上のネットワーク804、806、808は、一般的に「クラウド」と呼ばれるシステムのクラスタを表してもよい。クラウド・コンピューティングにおいては、たとえば処理能力、周辺機器、ソフトウェア、データ、サーバなどの共有リソースがオン・デマンドの関係にあるクラウド内の任意のシステムに提供されることによって、多くのコンピュータ・システムにわたるサービスのアクセスおよび分配が可能になる。当該技術分野において公知であるとおり、クラウド・コンピューティングは通常、クラウドにおいて動作するシステム間のインターネット接続を伴うが、システムを接続する他の技術も用いられてもよい。
図9は、一実施形態による、図8のユーザ・デバイス816もしくはサーバ814またはその両方に関連する代表的なハードウェア環境を示している。一実施形態によると、図9は、システム・バス912を介して相互接続された、たとえばマイクロプロセッサなどの中央処理ユニット910と、いくつかのその他のユニットとを有するプロセッサ・システム900の典型的なハードウェア構成を示している。いくつかの実施形態において、中央処理ユニット910は、図2の1つ以上のプロセッサ210を参照して上述されたアプローチのいずれかを含んでもよい。
図9に示されるプロセッサ・システム900は、ランダム・アクセス・メモリ(RAM)914と、リード・オンリ・メモリ(ROM)916と、I/Oアダプタ918とを含む。本発明を限定することは決して意図されないいくつかの実施形態によると、I/Oアダプタ918は、図2のI/Oアダプタ218を参照して上述されたアプローチのいずれかを含んでもよい。なおも図9のプロセッサ・システム900を参照すると、前述のコンポーネント914、916、918は、たとえばストレージ・サブシステム920などの周辺デバイスをバス912に接続するために用いられてもよい。いくつかの実施形態において、ストレージ・サブシステム920は、図2のデータ・ストレージ・システム220と類似か、もしくは同じか、またはその両方の構成を含んでもよい。本発明を限定することは決して意図されない一例によると、ストレージ・サブシステム920は、図2に示されるRAIDコントローラに加えて、たとえばNVRAMメモリ・カードを有するものなどの不揮発性データ・ストレージ・カード、RAM、ROM、もしくは何らかのその他の公知のタイプの不揮発性メモリ、またはその組み合わせを含んでもよい。
図9の参照を続けると、キーボード924、マウス926、スピーカ928、マイクロホン932、もしくはたとえばタッチ・スクリーン、デジタル・カメラ(図示せず)などのその他のユーザ・インターフェース・デバイス、またはその組み合わせをバス912に接続するためのユーザ・インターフェース・アダプタ922が含まれる。
プロセッサ・システム900はさらに、プロセッサ・システム900を通信ネットワーク935(例、データ処理ネットワーク)に接続する通信アダプタ934と、バス912をディスプレイ・デバイス938に接続するディスプレイ・アダプタ936とを含む。
プロセッサ・システム900には、たとえばマイクロソフト・ウィンドウズ(MICROSOFT WINDOWS)(R)オペレーティング・システム(OS:Operating System)、MAC OS、UNIX(R)OSなどのオペレーティング・システムが存在してもよい。当然のことながら、言及されたもの以外のプラットフォームおよびオペレーティング・システムにおいても好ましい実施形態が実現されてもよい。好ましい実施形態は、JAVA、XML、C、もしくはC++言語、またはその組み合わせ、あるいはその他のプログラミング言語をオブジェクト指向プログラミング法とともに用いて書かれてもよい。複雑なアプリケーションを開発するためによく用いられるようになったオブジェクト指向プログラミング(OOP:Object oriented programming)が用いられてもよい。
さらに図10は、一実施形態による、高レベル(例、SSD)のストレージ層とより低レベル(例、磁気テープ)のストレージ層との組み合わせを実現するストレージ・システム1000を示している。なお、さまざまな実施形態によると、図10に示されるエレメントのいくつかは、ハードウェアもしくはソフトウェアまたはその両方として実現されてもよい。ストレージ・システム1000は、少なくとも1つのより高いストレージ層1002と、少なくとも1つのより低いストレージ層1006とにおける複数の媒体と通信するためのストレージ・システム・マネージャ1012を含んでもよい。しかし、他のアプローチにおいて、ストレージ・システム・マネージャ1012は少なくとも1つのより高いストレージ層1002における複数の媒体とは通信するが、より低いストレージ層とは通信しなくてもよい。より高いストレージ層(単数または複数)1002は、好ましくはたとえばハード・ディスク、不揮発性メモリ(NVM:nonvolatile memory)、NVRAM、SSDのソリッド・ステート・メモリ、フラッシュ・メモリ、SSDアレイ、フラッシュ・メモリ・アレイなど、または本明細書に示されているかもしくは当該技術分野において公知のその他のもの、あるいはその組み合わせなどの1つ以上のランダム・アクセスもしくは直接アクセスまたはその両方の媒体1004を含んでもよい。例示的実施例によると、図3~4は、所望の実施形態に依存してより高いストレージ層1002として用いられてもよいSSDシステムの例示的アーキテクチャを示している。
なおも図10を参照すると、より低いストレージ層(単数または複数)1006は、好ましくはたとえばテープ・ドライブの磁気テープもしくは光媒体またはその両方、より低速アクセスのHDD、より低速アクセスのSSDなど、または本明細書に示されているかもしくは当該技術分野において公知のその他のもの、あるいはその組み合わせなどのシーケンシャル・アクセス媒体を含む1つ以上のより低い性能の記憶媒体1008を含む。1つ以上の付加的なストレージ層1016は、システム1000の設計者が所望するとおりの任意の組み合わせの記憶メモリ媒体を含んでもよい。よって、いくつかのアプローチにおいて、1つ以上の付加的なストレージ層1016は、図1~2に示されるものと類似かまたは同じであるSSDシステム・アーキテクチャを含んでもよい。加えて、より高いストレージ層1002もしくはより低いストレージ層1006またはその両方のいずれかは、ストレージ・デバイスもしくは記憶媒体またはその両方の任意の組み合わせを含んでもよい。
ストレージ・システム・マネージャ1012は、たとえば図10に示されるストレージ・エリア・ネットワーク(SAN:storage area network)か、または何らかのその他の好適なネットワーク・タイプなどのネットワーク1010を通じて、より高いストレージ層(単数または複数)1002およびより低いストレージ層(単数または複数)1006の記憶媒体1004、1008と通信してもよい。加えてストレージ・システム・マネージャ1012は、ストレージ・システム・マネージャ1012の一部であってもなくてもよいホスト・インターフェース1014を通じて、1つ以上のホスト・システム(図示せず)と通信してもよい。ストレージ・システム・マネージャ1012、もしくはストレージ・システム1000の任意のその他のコンポーネント、またはその両方は、ハードウェアもしくはソフトウェアまたはその両方において実現されてもよく、かつたとえば中央処理ユニット(CPU)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)などの、当該技術分野において公知のタイプのコマンドを実行するためのプロセッサ(図示せず)を使用してもよい。もちろん、本記載を読んだ当業者に明らかになるとおり、任意の配置のストレージ・システムが用いられてもよい。
さらに他の実施形態において、ストレージ・システム1000は任意の数のデータ・ストレージ層を含んでもよく、かつ各ストレージ層内に同じかまたは異なる記憶メモリ媒体を含んでもよい。たとえば、各データ・ストレージ層は同じタイプの記憶メモリ媒体、たとえばHDD、SSD、シーケンシャル・アクセス媒体(テープ・ドライブのテープ、光ディスク・ドライブの光ディスクなど)、直接アクセス媒体(CD-ROM、DVD-ROMなど)、または媒体記憶タイプの任意の組み合わせなどを含んでもよい。こうした構成の1つにおいて、より高いストレージ層1002は、より高い性能のストレージ環境においてデータを記憶するために過半数のSSD記憶媒体を含んでもよく、より低いストレージ層1006および付加的なストレージ層1016を含む残りのストレージ層は、より低い性能のストレージ環境においてデータを記憶するためにSSD、HDD、テープ・ドライブなどの任意の組み合わせを含んでもよい。このやり方で、より頻繁にアクセスされるデータ、より高い優先順位を有するデータ、より迅速にアクセスする必要があるデータなどがより高いストレージ層1002に記憶されてもよく、一方でこれらの属性の1つを有さないデータは、より低いストレージ層1006を含む付加的なストレージ層1016に記憶されてもよい。もちろん、当業者は本記載を読んで、本明細書において提供される実施形態に従って異なるストレージ・スキームにおいて実施するための記憶媒体タイプの多くのその他の組み合わせを考案してもよい。
いくつかの実施形態によると、ストレージ・システム(たとえば1000など)は、データ・セットを開くための要求を受信するように構成されたロジックと、要求されたデータ・セットの複数の関連部分が層状のデータ・ストレージ・システム1000のより低いストレージ層1006に記憶されているかどうかを判定するように構成されたロジックと、要求されたデータ・セットの各関連部分を層状のデータ・ストレージ・システム1000のより高いストレージ層1002に移動させるように構成されたロジックと、それらの関連部分から層状のデータ・ストレージ・システム1000のより高いストレージ層1002において要求されたデータ・セットをアセンブルするように構成されたロジックとを含んでもよい。
もちろん、さまざまな実施形態に従って、このロジックは任意のデバイスもしくはシステムまたはその両方における方法として実現されてもよいし、コンピュータ・プログラム製品として実現されてもよい。
前述のシステムもしくは方法またはその両方のさまざまな特徴は、任意のやり方で組み合わされて、上記に提供された説明から複数の組み合わせを作成してもよいことが明らかになるだろう。
本発明のさまざまな実施形態の説明は、例示の目的のために提供されたものであり、開示された実施形態に対して網羅的または限定的になることは意図されていない。記載される実施形態の範囲から逸脱することなく、当業者には多くの修正および変更が明らかになるだろう。本明細書において用いられる用語は、実施形態の原理、市場に見出される技術に対する実際の適用または技術的改善点を最もよく説明するか、または他の当業者が本明細書に開示される実施形態を理解できるようにするために選択されたものである。

Claims (20)

  1. ストレージ・システムにおけるブロック・モードをトグルするためのコンピュータ実施方法であって、
    前記ストレージ・システムのメモリの各ブロックに対するブロック切り換えメトリックを維持することと、
    第1のブロックに対応するブロック切り換えメトリックに従って、第1のプールの前記第1のブロックを第2のプールに移動すべきかどうかを判定することと、
    前記第1のブロックに対応する前記ブロック切り換えメトリックに従って、前記第1のプールの前記第1のブロックを前記第2のプールに移動すべきだと判定したことに応答して、前記第1のブロックを消去することと、
    前記第1のプールからの前記第1のブロックを前記第2のプールに対応する第2の即時使用可能な(RTU)キューに移動することと、
    第2のブロックを消去することと、
    前記第2のプールからの前記第2のブロックを前記第1のプールに対応する第1のRTUキューに移動することと
    を含み、
    前記第1のプールの前記ブロックは単一レベル・セル(SLC)モードで構成され、
    前記第2のプールの前記ブロックはセル当り複数ビット・モードで構成される、
    コンピュータ実施方法。
  2. 前記ブロック切り換えメトリックは、それぞれの前記ブロックに対するプログラム/消去(P/E)サイクル・カウント、前記ブロックの最後の切り換えからの現在のモードにおけるそれぞれの前記ブロックに対する前記P/Eサイクル・カウント、それぞれの前記ブロックに対する生のビット・エラー率(RBER)、およびそれぞれの前記ブロックに対するデータ・アクセス時間からなる群より選択される情報を含む、請求項1に記載のコンピュータ実施方法。
  3. 前記ブロック切り換えメトリックは、前記ブロック・モードの最後の切り換えからの現在のモードにおけるそれぞれの前記ブロックに対する前記P/Eサイクル・カウントを含む、請求項2に記載のコンピュータ実施方法。
  4. 前記ブロック切り換えメトリックは、セル当り複数ビット・モードで構成されている間のそれぞれの前記ブロックに対するP/Eサイクル・カウントのみを含む、請求項1に記載のコンピュータ実施方法。
  5. 前記第1のプールからの前記第1のブロックを前記第2のRTUキューに移動することは、前記第1のブロックをSLCモードからセル当り複数ビット・モードに再構成することを含む、請求項1に記載のコンピュータ実施方法。
  6. 前記第2のプールからの前記第2のブロックを前記第1のRTUキューに移動することは、前記第2のブロックをセル当り複数ビット・モードからSLCモードに再構成することを含む、請求項5に記載のコンピュータ実施方法。
  7. 前記第1のブロックのプログラムされたページの量が予め定められた範囲内であるかどうかを判定することと、
    前記第1のブロックの前記プログラムされたページの量が前記予め定められた範囲内であると判定したことに応答して、前記第1のブロックに対応する前記ブロック切り換えメトリックに従って、前記第1のプールの前記第1のブロックを前記第2のプールに移動すべきかどうかを判定することと
    を含む、請求項1に記載のコンピュータ実施方法。
  8. 前記第1のブロックに対応する前記ブロック切り換えメトリックに従って、前記第1のプールの前記第1のブロックを前記第2のプールに移動する必要はないと判定したことに応答して、前記第1のブロックに対応する前記ブロック切り換えメトリックに従い、かつ切り換え方向に対応する飽和カウンタに従って、前記第1のブロックが前記第2のプールに移動されるのに適格であるかどうかを判定することと、
    前記第1のブロックに対応する前記ブロック切り換えメトリックおよび切り換え方向に対応する前記飽和カウンタに従って、前記第1のブロックが前記第2のプールに移動されるのに適格であると判定したことに応答して、前記第1のブロックを消去することと、
    前記第1のプールからの前記第1のブロックを前記第2のRTUキューに移動することと、
    切り換え方向に対応する前記飽和カウンタをデクリメントすることと
    を含む、請求項1に記載のコンピュータ実施方法。
  9. 前記第1のブロックに対応する前記ブロック切り換えメトリックおよび前記第1のブロックに対応する前記飽和カウンタに従って、前記第1のブロックが前記第2のプールに移動されるのに適格ではないと判定したことに応答して、前記第1のブロックを消去することと、
    前記第1のブロックを前記第1のRTUキューに配置することと
    を含む、請求項8に記載のコンピュータ実施方法。
  10. セル当り複数ビット・モードで構成された前記第2のプールの前記ブロックは、クワッド・レベル・セル(QLC)モードで構成される、請求項1に記載のコンピュータ実施方法。
  11. 第3のブロックに対応するブロック切り換えメトリックに従って、前記第2のプールの前記第3のブロックを前記第1のプールに移動すべきかどうかを判定することと、
    前記第3のブロックに対応するブロック切り換えメトリックに従って、前記第2のプールの前記第3のブロックを前記第1のプールに移動すべきだと判定したことに応答して、前記第3のブロックを消去することと、
    前記第2のプールからの前記第3のブロックを前記第1のプールに対応する前記第1のRTUキューに移動することと、
    第4のブロックを消去することと、
    前記第1のプールからの前記第4のブロックを前記第2のプールに対応する前記第2のRTUキューに移動することと
    を含む、請求項1に記載のコンピュータ実施方法。
  12. 前記第2のプールからの前記第3のブロックを前記第1のRTUキューに移動することは、前記第3のブロックをセル当り複数ビット・モードからSLCモードに再構成することを含み、前記第1のプールからの前記第4のブロックを前記第2のRTUキューに移動することは、前記第4のブロックをSLCモードからセル当り複数ビット・モードに再構成することを含む、請求項11に記載のコンピュータ実施方法。
  13. 具現化されるプログラム命令を有するコンピュータ可読記憶媒体であって、前記プログラム命令はプロセッサによって可読もしくは実行可能またはその両方であり、前記プロセッサに
    前記プロセッサによって、ストレージ・システムのメモリの各ブロックに対するブロック切り換えメトリックを維持することと、
    前記プロセッサによって、第1のブロックに対応するブロック切り換えメトリックに従って、第1のプールの前記第1のブロックを第2のプールに移動すべきかどうかを判定することと、
    前記第1のブロックに対応する前記ブロック切り換えメトリックに従って、前記第1のプールの前記第1のブロックを前記第2のプールに移動すべきだと判定したことに応答して、前記プロセッサによって、前記第1のブロックを消去することと、
    前記プロセッサによって、前記第1のプールからの前記第1のブロックを前記第2のプールに対応する第2の即時使用可能な(RTU)キューに移動することと、
    前記プロセッサによって、第2のブロックを消去することと、
    前記プロセッサによって、前記第2のプールからの前記第2のブロックを前記第1のプールに対応する第1のRTUキューに移動することと
    を実行させ、
    前記第1のプールの前記ブロックは単一レベル・セル(SLC)モードで構成され、
    前記第2のプールの前記ブロックはセル当り複数ビット・モードで構成される、
    コンピュータ可読記憶媒体
  14. 前記プログラム命令は前記プロセッサによって可読もしくは実行可能またはその両方であり、前記プロセッサに
    前記第1のブロックに対応する前記ブロック切り換えメトリックに従って、前記第1のプールの前記第1のブロックを前記第2のプールに移動する必要はないと判定したことに応答して、前記プロセッサによって、前記第1のブロックに対応する前記ブロック切り換えメトリックに従い、かつ切り換え方向に対応する飽和カウンタに従って、前記第1のブロックが前記第2のプールに移動されるのに適格であるかどうかを判定することと、
    前記第1のブロックに対応する前記ブロック切り換えメトリックおよび切り換え方向に対応する前記飽和カウンタに従って、前記第1のブロックが前記第2のプールに移動されるのに適格であると判定したことに応答して、前記プロセッサによって、前記第1のブロックを消去することと、
    前記プロセッサによって、前記第1のプールからの前記第1のブロックを前記第2のRTUキューに移動することと、
    前記プロセッサによって、切り換え方向に対応する前記飽和カウンタをデクリメントすることと
    を実行させる、請求項13に記載のコンピュータ可読記憶媒体
  15. 前記プログラム命令は前記プロセッサによって可読もしくは実行可能またはその両方であり、前記プロセッサに
    前記プロセッサによって、第3のブロックに対応するブロック切り換えメトリックに従って、前記第2のプールの前記第3のブロックを前記第1のプールに移動すべきかどうかを判定することと、
    前記第3のブロックに対応するブロック切り換えメトリックに従って、前記第2のプールの前記第3のブロックを前記第1のプールに移動すべきだと判定したことに応答して、前記プロセッサによって、前記第3のブロックを消去することと、
    前記プロセッサによって、前記第2のプールからの前記第3のブロックを前記第1のプールに対応する前記第1のRTUキューに移動することと、
    前記プロセッサによって、第4のブロックを消去することと、
    前記プロセッサによって、前記第1のプールからの前記第4のブロックを前記第2のプールに対応する前記第2のRTUキューに移動することと
    を実行させる、請求項13に記載のコンピュータ可読記憶媒体
  16. 前記第2のプールからの前記第3のブロックを前記第1のRTUキューに移動することは、前記第3のブロックをセル当り複数ビット・モードからSLCモードに再構成することを含み、前記第1のプールからの前記第4のブロックを前記第2のRTUキューに移動することは、前記第4のブロックをSLCモードからセル当り複数ビット・モードに再構成することを含む、請求項15に記載のコンピュータ可読記憶媒体
  17. データを記憶するように構成された複数の不揮発性ランダム・アクセス・メモリ(NVRAM)ブロックと、
    プロセッサと、前記プロセッサに統合されるか、もしくは前記プロセッサによって実行可能であるか、またはその両方であるロジックと
    を含むシステムであって、前記ロジックは、
    前記プロセッサによって、ストレージ・システムのメモリの各ブロックに対するブロック切り換えメトリックを維持することと、
    前記プロセッサによって、第1のブロックに対応するブロック切り換えメトリックに従って、第1のプールの前記第1のブロックを第2のプールに移動すべきかどうかを判定することと、
    前記第1のブロックに対応する前記ブロック切り換えメトリックに従って、前記第1のプールの前記第1のブロックを前記第2のプールに移動すべきだと判定したことに応答して、前記プロセッサによって、前記第1のブロックを消去することと、
    前記プロセッサによって、前記第1のプールからの前記第1のブロックを前記第2のプールに対応する第2の即時使用可能な(RTU)キューに移動することと、
    前記プロセッサによって、第2のブロックを消去することと、
    前記プロセッサによって、前記第2のプールからの前記第2のブロックを前記第1のプールに対応する第1のRTUキューに移動することと
    を行うように構成され、
    前記第1のプールの前記ブロックは単一レベル・セル(SLC)モードで構成され、
    前記第2のプールの前記ブロックはセル当り複数ビット・モードで構成される、
    システム。
  18. 前記ロジックは、
    前記第1のブロックに対応する前記ブロック切り換えメトリックに従って、前記第1のプールの前記第1のブロックを前記第2のプールに移動する必要はないと判定したことに応答して、前記プロセッサによって、前記第1のブロックに対応する前記ブロック切り換えメトリックおよび切り換え方向に対応する飽和カウンタに従って、前記第1のブロックが前記第2のプールに移動されるのに適格であるかどうかを判定することと、
    前記第1のブロックに対応する前記ブロック切り換えメトリックおよび切り換え方向に対応する前記飽和カウンタに従って、前記第1のブロックが前記第2のプールに移動されるのに適格であると判定したことに応答して、前記プロセッサによって、前記第1のブロックを消去することと、
    前記プロセッサによって、前記第1のプールからの前記第1のブロックを前記第2のRTUキューに移動することと、
    前記プロセッサによって、切り換え方向に対応する前記飽和カウンタをデクリメントすることと
    を行うように構成される、請求項17に記載のシステム。
  19. 前記ロジックは、
    前記プロセッサによって、第3のブロックに対応するブロック切り換えメトリックに従って、前記第2のプールの前記第3のブロックを前記第1のプールに移動すべきかどうかを判定することと、
    前記第3のブロックに対応するブロック切り換えメトリックに従って、前記第2のプールの前記第3のブロックを前記第1のプールに移動すべきだと判定したことに応答して、前記プロセッサによって、前記第3のブロックを消去することと、
    前記プロセッサによって、前記第2のプールからの前記第3のブロックを前記第1のプールに対応する前記第1のRTUキューに移動することと、
    前記プロセッサによって、第4のブロックを消去することと、
    前記プロセッサによって、前記第1のプールからの前記第4のブロックを前記第2のプールに対応する前記第2のRTUキューに移動することと
    を行うように構成される、請求項17に記載のシステム。
  20. 前記第2のプールからの前記第3のブロックを前記第1のRTUキューに移動することは、前記第3のブロックをセル当り複数ビット・モードからSLCモードに再構成することを含み、前記第1のプールからの前記第4のブロックを前記第2のRTUキューに移動することは、前記第4のブロックをSLCモードからセル当り複数ビット・モードに再構成することを含む、請求項19に記載のシステム。
JP2021577034A 2019-07-01 2020-06-23 データ・ストレージ・システムにおけるブロック・モード・トグリング Active JP7448569B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/459,408 US11023150B2 (en) 2019-07-01 2019-07-01 Block mode toggling using hybrid controllers
US16/459,408 2019-07-01
PCT/IB2020/055914 WO2021001725A1 (en) 2019-07-01 2020-06-23 Block mode toggling in data storage system

Publications (2)

Publication Number Publication Date
JP2022538587A JP2022538587A (ja) 2022-09-05
JP7448569B2 true JP7448569B2 (ja) 2024-03-12

Family

ID=74065739

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021577034A Active JP7448569B2 (ja) 2019-07-01 2020-06-23 データ・ストレージ・システムにおけるブロック・モード・トグリング

Country Status (6)

Country Link
US (1) US11023150B2 (ja)
JP (1) JP7448569B2 (ja)
CN (1) CN114072774A (ja)
DE (1) DE112020002526B4 (ja)
GB (1) GB2599061B (ja)
WO (1) WO2021001725A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
JP2021033423A (ja) * 2019-08-19 2021-03-01 ソニーセミコンダクタソリューションズ株式会社 コントローラ、半導体記憶装置、及び該装置における摩耗平準化処理方法
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11762569B2 (en) * 2019-10-29 2023-09-19 International Business Machines Corporation Workload based relief valve activation for hybrid controller architectures
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11422931B2 (en) * 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11907123B2 (en) 2021-04-20 2024-02-20 International Business Machines Corporation Flash memory garbage collection
US20220374216A1 (en) * 2021-05-20 2022-11-24 Lenovo (United States) Inc. Method of manufacturing information processing apparatus and mobile computer
US11797199B2 (en) 2021-07-06 2023-10-24 International Business Machines Corporation Balancing utilization of memory pools of physical blocks of differing storage densities

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012068986A (ja) 2010-09-24 2012-04-05 Toshiba Corp メモリシステム
JP2015503798A (ja) 2011-12-29 2015-02-02 サンディスク テクノロジィース インコーポレイテッド Slc−mlc消耗バランシング
JP2015088121A (ja) 2013-11-01 2015-05-07 株式会社東芝 メモリシステムおよび方法
US20170123655A1 (en) 2015-10-30 2017-05-04 Sandisk Technologies Inc. System and method for managing extended maintenance scheduling in a non-volatile memory
JP2019057193A (ja) 2017-09-22 2019-04-11 東芝メモリ株式会社 メモリシステム
JP2019168822A (ja) 2018-03-22 2019-10-03 東芝メモリ株式会社 ストレージデバイスおよびコンピュータシステム

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006244123A (ja) * 2005-03-03 2006-09-14 Fujitsu Ltd データストレージシステム及びデータストレージ制御装置
US7865658B2 (en) 2007-12-31 2011-01-04 Sandisk Il Ltd. Method and system for balancing host write operations and cache flushing
CN101236530B (zh) * 2008-01-30 2010-09-01 清华大学 高速缓存替换策略的动态选择方法
US9547589B2 (en) 2008-06-18 2017-01-17 Super Talent Technology, Corp. Endurance translation layer (ETL) and diversion of temp files for reduced flash wear of a super-endurance solid-state drive
US8407400B2 (en) 2008-11-12 2013-03-26 Micron Technology, Inc. Dynamic SLC/MLC blocks allocations for non-volatile memory
US8040744B2 (en) 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US8312219B2 (en) 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
US7948798B1 (en) 2009-07-22 2011-05-24 Marvell International Ltd. Mixed multi-level cell and single level cell storage device
US8285946B2 (en) * 2009-12-15 2012-10-09 International Business Machines Corporation Reducing access contention in flash-based memory systems
KR20120132820A (ko) * 2011-05-30 2012-12-10 삼성전자주식회사 스토리지 디바이스, 스토리지 시스템 및 스토리지 디바이스의 가상화 방법
US8806090B2 (en) * 2011-05-31 2014-08-12 Micron Technology, Inc. Apparatus including buffer allocation management and related methods
US9514838B2 (en) * 2011-05-31 2016-12-06 Micron Technology, Inc. Apparatus including memory system controllers and related methods for memory management using block tables
US8943261B2 (en) 2011-10-28 2015-01-27 International Business Machines Corporation Efficient memory management in software caches
US9558107B2 (en) 2013-12-24 2017-01-31 International Business Machines Corporation Extending useful life of a non-volatile memory by health grading
WO2016069031A1 (en) 2014-11-01 2016-05-06 Hewlett Packard Enterprise Development Lp Managing a storage pool
US10102119B2 (en) * 2015-10-30 2018-10-16 Sandisk Technologies Llc Garbage collection based on queued and/or selected write commands
US10545685B2 (en) 2017-08-30 2020-01-28 Micron Technology, Inc. SLC cache management
CN109725831B (zh) * 2017-10-27 2022-06-10 伊姆西Ip控股有限责任公司 管理存储系统的方法、系统和计算机可读介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012068986A (ja) 2010-09-24 2012-04-05 Toshiba Corp メモリシステム
JP2015503798A (ja) 2011-12-29 2015-02-02 サンディスク テクノロジィース インコーポレイテッド Slc−mlc消耗バランシング
JP2015088121A (ja) 2013-11-01 2015-05-07 株式会社東芝 メモリシステムおよび方法
US20170123655A1 (en) 2015-10-30 2017-05-04 Sandisk Technologies Inc. System and method for managing extended maintenance scheduling in a non-volatile memory
JP2019057193A (ja) 2017-09-22 2019-04-11 東芝メモリ株式会社 メモリシステム
JP2019168822A (ja) 2018-03-22 2019-10-03 東芝メモリ株式会社 ストレージデバイスおよびコンピュータシステム

Also Published As

Publication number Publication date
DE112020002526B4 (de) 2023-11-02
JP2022538587A (ja) 2022-09-05
GB2599061A (en) 2022-03-23
WO2021001725A1 (en) 2021-01-07
CN114072774A (zh) 2022-02-18
US20210004159A1 (en) 2021-01-07
DE112020002526T5 (de) 2022-04-21
GB2599061B (en) 2022-07-27
US11023150B2 (en) 2021-06-01

Similar Documents

Publication Publication Date Title
JP7448569B2 (ja) データ・ストレージ・システムにおけるブロック・モード・トグリング
US11138124B2 (en) Migrating data between block pools in a storage system
US11762569B2 (en) Workload based relief valve activation for hybrid controller architectures
CN112447245B (zh) 非易失性随机存取存储器中的混合读取电压校准
US9990279B2 (en) Page-level health equalization
US11056199B2 (en) Updating corrective read voltage offsets in non-volatile random access memory
US11157379B2 (en) Managing blocks of memory based on block health using hybrid controllers
US20200192735A1 (en) Selectively performing multi-plane read operations in non-volatile memory
JP7486534B2 (ja) ストレージ・システムにおけるブロック・プール・サイズの適合
US11086565B2 (en) Reducing effects of read array operations of read apparent voltage
US11360903B2 (en) Data placement in write cache architecture supporting read heat data separation
US11302403B2 (en) Calculating corrective read voltage offsets in non-volatile random access memory
US11036415B2 (en) Managing memory block calibration based on priority levels
US11151053B2 (en) Increasing data read and/or write heat tracking resolution in storage devices having cache architecture
US11119855B2 (en) Selectively storing parity data in different types of memory
US10783024B2 (en) Reducing block calibration overhead using read error triage
CN112346658B (zh) 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率

Legal Events

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

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220512

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240130

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240229

R150 Certificate of patent or registration of utility model

Ref document number: 7448569

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150