JP7486534B2 - ストレージ・システムにおけるブロック・プール・サイズの適合 - Google Patents

ストレージ・システムにおけるブロック・プール・サイズの適合 Download PDF

Info

Publication number
JP7486534B2
JP7486534B2 JP2021577198A JP2021577198A JP7486534B2 JP 7486534 B2 JP7486534 B2 JP 7486534B2 JP 2021577198 A JP2021577198 A JP 2021577198A JP 2021577198 A JP2021577198 A JP 2021577198A JP 7486534 B2 JP7486534 B2 JP 7486534B2
Authority
JP
Japan
Prior art keywords
blocks
pool
rtu
rtu queue
processor
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
JP2021577198A
Other languages
English (en)
Other versions
JP2022539133A (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 JP2022539133A publication Critical patent/JP2022539133A/ja
Application granted granted Critical
Publication of JP7486534B2 publication Critical patent/JP7486534B2/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/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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid 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/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

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の即時使用可能な(RTU:ready-to-use)キューに含まれるブロックの数が第1のRTUキューの第1の範囲内であるかどうかを判定することを含む。第1のRTUキューに含まれるブロックの数が第1のRTUキューの第1の範囲内であると判定したことに応答して、第2のRTUキューに含まれるブロックの数が第2のRTUキューの第2の範囲内であるかどうかに関する判定が行われる。さらに、第2のRTUキューに含まれるブロックの数が第2のRTUキューの第2の範囲内にないと判定したことに応答して、第1のRTUキューに対応する第1のプールのブロックの1つから有効データが再配置される。第1のプールのそのブロックは消去され、第1のプールから第2のプールに対応する第2のRTUキューに移動される。第1のプールのブロックは単一レベル・セル(SLC:single-level cell)モードで構成されるのに対し、第2のプールのブロックはセル当り複数ビット・モードで構成される。
別の実施形態によるコンピュータ・プログラム製品は、具現化されるプログラム命令を有するコンピュータ可読記憶媒体を含む。プログラム命令はプロセッサによって可読もしくは実行可能またはその両方であり、そのプロセッサに前述の方法を実行させる。
さらに別の実施形態によるシステムは、データを記憶するように構成された複数の不揮発性ランダム・アクセス・メモリ(NVRAM:non-volatile random access memory)ブロックを含む。加えてこのシステムは、プロセッサと、そのプロセッサに統合されるか、もしくはそのプロセッサによって実行可能であるか、またはその両方であるロジックとを含む。このロジックは、前述の方法を実行するように構成される。
本発明の他の態様および実施形態は、図面とともに受け取られたときに本発明の原理を例として示す以下の詳細な説明から明らかになるだろう。
一実施形態による不揮発性メモリ・カードを示す図である。 一実施形態によるデータ・ストレージ・システム・アーキテクチャを示す図である。 一実施形態によるシステム図である。 一実施形態によるブロック・ストライプおよびページ・ストライプを含む概念図である。 一実施形態による不揮発性メモリ・モジュールを表す図である。 一実施形態による方法を示す流れ図である。 一実施形態による方法を示す流れ図である。 一実施形態による方法を示す流れ図である。 一実施形態による方法を示す流れ図である。 一実施形態による図6A、Bもしくは図6C、Dまたはその両方の方法における動作の1つに対するサブプロセスを示す流れ図である。 一実施形態によるデータおよびブロックの流れの概観を部分的に表す図である。 一実施形態によるネットワーク・アーキテクチャを示す図である。 一実施形態による、図8のサーバもしくはクライアントまたはその両方に関連し得る代表的なハードウェア環境を示す図である。 一実施形態による層状のデータ・ストレージ・システムを示す図である。
以下の説明は本発明の一般的な原理を示す目的のために行われるものであり、本明細書において請求される発明の概念を限定することは意味していない。さらに、さまざまな可能な組み合わせおよび置換の各々において、本明細書に記載される特定の特徴が他の記載される特徴と組み合わされて用いられ得る。
本明細書において別様に特定的に定められない限り、すべての用語には、明細書から暗示される意味、および当業者に理解される意味、もしくは辞書、論文などにおいて定義される意味、またはその両方を含む、その可能な中で最も広い解釈が与えられる。
明細書および添付の請求項において用いられる単数形「a」、「an」、および「the」は、別様に指定されない限り複数の指示対象を含むことにも留意する必要がある。この明細書において用いられるときの「含む(comprises)」もしくは「含んでいる(comprising)」またはその両方の用語は、記述される特徴、整数、ステップ、動作、エレメント、もしくはコンポーネント、またはその組み合わせの存在を特定するが、1つ以上の他の特徴、整数、ステップ、動作、エレメント、コンポーネント、もしくはそのグループ、またはその組み合わせの存在または付加を除外しないことがさらに理解されるだろう。
以下の説明は、データ・ストレージ・システム、およびその動作もしくはコンポーネント部分またはその両方のいくつかの好ましい実施形態を開示するものである。当然のことながら、本明細書におけるさまざまな実施形態は、たとえばNANDフラッシュ・メモリ、NORフラッシュ・メモリ、相変化メモリ(PCM:phase-change memory)、磁気抵抗RAM(MRAM:magnetoresistive RAM)、および抵抗RAM(RRAM:resistive RAM)などの不揮発性ランダム・アクセス・メモリ(NVRAM)技術などを含む広範囲のメモリ媒体によって実現され得る。状況を提供し、かつ単に読者の助けとするために、不揮発性メモリの一種を参照してさまざまな実施形態が説明されることがある。これは単なる例として行われたものであり、請求項において定義された発明に対する限定とみなされるべきではない。
1つの一般的な実施形態において、コンピュータ実施方法は、ストレージ・システムにおけるブロック・プール・サイズを適合させるためのものである。このコンピュータ実施方法は、第1の即時使用可能な(RTU)キューに含まれるブロックの数が第1のRTUキューの第1の範囲内であるかどうかを判定することを含む。第1のRTUキューに含まれるブロックの数が第1のRTUキューの第1の範囲内であると判定したことに応答して、第2のRTUキューに含まれるブロックの数が第2のRTUキューの第2の範囲内であるかどうかに関する判定が行われる。さらに、第2のRTUキューに含まれるブロックの数が第2のRTUキューの第2の範囲内にないと判定したことに応答して、第1のRTUキューに対応する第1のプールのブロックの1つから有効データが再配置される。第1のプールのそのブロックは消去され、第1のプールから第2のプールに対応する第2の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トラフィックを有することが予測されるストレージ・システムは、セル当り複数ビットの構成を有するメモリ・ブロックよりもセル当り単一ビットの構成を有するメモリ・ブロックを選択的により多数含むことができる。反対に、大量のコールド・データを記憶することが予測されるストレージ・システムは、セル当り単一ビットの構成を有するメモリ・ブロックよりもセル当り複数ビットの構成を有するメモリ・ブロックを選択的により多数含むことができる。しかし、リアル・タイムの使用は、これらのストレージ・システムを設計するときに考慮されたであろう予測からしばしば変動する。結果として、従来のストレージ・システムは効率的なパフォーマンスを維持することができなかった。
従来のシステムが経験した前述の欠点とは著しく対照的に、本明細書に含まれるさまざまな実施形態は、たとえば以下にさらに詳細に説明されるとおり、現在の使用およびワークロード特性に基づいてブロック・プール・サイズを動的に適合できるハイブリッド・コントローラを実現する。
ここで図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など、および/またはその組み合わせなどの任意の所望のタイプのものであってもよい。
したがってハイブリッド・コントローラは、頻繁にアクセス(例、読取り、再書込み、追加など)されるデータをSLCモードで構成されたブロックに、したがって第1のプール504に含まれるブロックに記憶させることができ、一方でそれほど頻繁にアクセスされないデータはセル当り複数ビット・モードで構成されたブロックに、したがって第2のプール506に含まれるブロックに記憶される。ハイブリッド・コントローラを用いて、ユーザ書込みを最初にSLCモードで構成されたブロックに配置し、一方でまだ有効なデータのみをバックグラウンドにおいて後にセル当り複数ビット・ブロックにデステージすることができるため、第2のプールのブロックに対して行われる書込み動作の数が有意に低減することによって、全体的な耐久性が増加する。このストレージ・スキームは、メモリの異なるブロックおよびそれらのそれぞれのパフォーマンス特徴の効率的な使用を達成する。しかし、メモリ・モジュール500に記憶されるホットおよびコールド・データの比率は時間とともに変動するため、それぞれのプール504、506の各々は過少使用されるか、もしくは過剰使用されるか、またはその両方であることがある。
したがって、ハイブリッド・コントローラ502は、実際の使用もしくはワークロード特性またはその両方に基づく動的な適合のために、第1もしくは第2またはその両方のプール504、506の任意のブロックを選択的に再構成できる。このことによって、メモリ・モジュール500は、そこに記憶されるホットまたはコールド・データの量に関係なく効率的なパフォーマンスを維持できる。ここで図6A、Bを見ると、一実施形態によるストレージ・システムにおけるブロック・プール・サイズを適合させるための方法600が示されている。この方法600は、さまざまな実施形態において特に図1~5に示される環境のいずれかにおいて本発明に従って実行されてもよい。もちろん、当業者が本記載を読んで理解するであろうとおり、図6A、Bに具体的に記載される動作より多いかまたは少ない動作が方法600に含まれてもよい。たとえば、方法600に含まれるさまざまなプロセスは、SLCモードで構成されたメモリ・ブロックをセル当り複数ビット・モードで構成されたものに移行するという文脈で以下に記載されている。しかし、方法600に含まれるさまざまなプロセスの任意の1つ以上は、セル当り複数ビット・モードで構成されたメモリ・ブロックをSLCモードで構成されたものに移行するという文脈において適用されてもよい(例、以下の図6C、Dを参照)。
方法600の各々のステップは、動作環境の任意の好適なコンポーネントによって行われてもよい。たとえばさまざまな実施形態において、方法600はハイブリッド・コントローラ、コントローラ、プロセッサ、コンピュータなど、または内部に1つ以上のプロセッサを有する何らかのその他のデバイスによって部分的または全体的に実行されてもよい。よっていくつかの実施形態において、方法600はコンピュータ実施方法であってもよい。こうした実施形態において、この方法を実施するために用いられるコンピュータは、メモリ・モジュール自体またはその一部分、たとえばハイブリッド・コントローラなどを含んでもよい。さらに、コンピュータ、プロセッサ、およびコントローラという用語は本明細書の任意の実施形態に関して交換可能に用いられることがあり、こうしたコンポーネントは本発明の多くのさまざまな置換における同等物とみなされる。
さらに、プロセッサを有する実施形態に対して、そのプロセッサは、たとえばハードウェアもしくはソフトウェアまたはその両方において実現され、かつ好ましくは少なくとも1つのハードウェア・コンポーネントを有する処理回路(単数または複数)、チップ(単数または複数)、もしくはモジュール(単数または複数)、またはその組み合わせなどであり、方法600の1つ以上のステップを行うために任意のデバイスにおいて使用されてもよい。例示的なプロセッサは、中央処理ユニット(CPU:central processing unit)、特定用途向け集積回路(ASIC:application specific integrated circuit)、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)など、その組み合わせ、または当該技術分野において公知の任意のその他の好適なコンピュータ・デバイスを含むが、それに限定されない。
図6Aに示されるとおり、方法600の動作602は、第1の即時使用可能な(RTU)キューのサイズおよび第2のRTUキューのサイズを評価することを含む。第1および第2のRTUキューの各々は、それぞれメモリ・ブロックの第1および第2のプールに組み込まれたメモリ・ブロックを含む。さらに、第1および第2のプールの各々は、異なるモードで構成されたメモリ・ブロックを含む。上述のとおり、第1のプールはSLCモードで構成されたメモリ・ブロックを含むのに対し、第2のプールはセル当り複数ビット・モードで構成されたメモリ・ブロックを含む。したがって、第1のRTUキューはSLCモードで構成されたメモリ・ブロックを含むのに対し、第2のRTUキューはセル当り複数ビット・モードで構成されたメモリ・ブロックを含む。アプローチに依存して、セル当り複数ビット・モードで構成された第2のプールのブロックは、いくつかの異なる構成を有してもよい。たとえば、いくつかのアプローチにおいて、セル当り複数ビット・モードで構成された第2のプールのブロックはマルチ・レベル・セル(MLC:multi-level cell)モードで構成されるのに対し、他のアプローチにおいて、セル当り複数ビット・モードで構成された第2のプールのブロックはトリプル・レベル・セル(TLC:triple-level cell)モードで構成される。さらに他のアプローチにおいて、セル当り複数ビット・モードで構成された第2のプールのブロックはクワッド・レベル・セル(QLC:quad-level cell)モードで構成され、QLCモードで構成されたブロックの各々は下側のページと、上側のページと、予備のページと、トップ・ページとを含む。
本記載に関して、所与のRTUキューの「サイズ」とは、そこに含まれる消去されたメモリ・ブロックの量を表すことが意図される。最初に、デバイスにデータが書込まれていないとき、すべてのブロックは消去されて自身のモードに従ってRTUキューに配置されているため、RTUキューのサイズは全体の記憶容量を表す。時間とともに不揮発性メモリ・モジュールにデータが書込まれると、それぞれのRTUからブロックを取ることによってデータ配置のための新たなLEBが開かれ、それによってRTUのサイズが減少する。ある時点で、LEBの開閉の結果として任意のRTUにおける低いキュー・レベルがもたらされ、その時点でガベージ・コレクションを実行する必要がある。RTUのサイズは、RTUキューに含まれるブロックの数、RTUキューに含まれるブロックの組み合わされた記憶容量、RTUキューに含まれる包括的システムに含まれるブロックの全体数のパーセンテージなどによって表され(例、それを用いて定量化され)てもよい。いくつかのアプローチによると、第1もしくは第2またはその両方のRTUキューのサイズは、キュー自体を実際に調査すること、カウンタ、ルックアップ・テーブルから情報を取得すること、動作ログを調べることなどによって評価される。
さらに、決定604は、第1のRTUキューに含まれるブロックの数が第1のRTUキューの第1の範囲内であるかどうかを判定することを含む。したがって、好ましいアプローチにおいて、この第1の範囲は第1のRTUキューに対する特定のものである。しかし、いくつかのアプローチにおいて、第1の範囲は第1のRTUキューおよび第2のRTUキューに対して同じかまたは類似であってもよい。加えて、第1のRTUキューは好ましくは第1のRTUキューのガベージ・コレクション閾値に対応することによって、第1のRTUキューに含まれるブロックの数が望ましくないほど低いと判定したことに応答して、ガベージ・コレクション動作が行われる。たとえば、すぐに明らかになるとおり、ガベージ・コレクション・プロセスは有効データを第1のプールの1つ以上のブロックから再配置することによって、その1つ以上のブロックは第1のRTUキューに配置されてもよく、それによって第1のRTUキューに含まれるブロックの数が増加する。しかし、「第1の範囲内」が本発明を限定することは決して意図されないことが留意されるべきである。ある値が所与の範囲内であるかどうかを判定する代わりに、所望のアプローチに依存して、たとえばある値が予め定められた閾値より高いかどうか、ある値が予め定められた範囲外であるかどうか、絶対値が閾値より高いかどうか、ある値が閾値より低いかどうかなどに関する同等の判定が行われてもよい。
前述のとおり、第1のRTUキューに含まれるブロックの数が第1のRTUキューの第1の範囲内にないと判定したことに応答して、方法600は動作606に進む。ここで動作606は第1のプールのブロックの1つを選択することを含み、一方で動作608は選択されたブロックからのすべての有効データを再配置することを含む。動作606において選択されたブロックは、動作608において開始されるガベージ・コレクション・プロセスを受けることとなる。したがって、いくつかのアプローチにおいては、第1のプールのすべてのブロックのうち、内部に最も多くの無効データを有するブロックが選択される。しかし、ガベージ・コレクション・プロセスを受けるために第1のプールのブロックの1つを選択するプロセスにおいて、任意のその他の所望の要素が考慮されてもよい。たとえば、第1のプールのブロックの1つを選択するときに、各々のブロックの寿命、各々のブロックに含まれる有効データの量などが考慮されてもよい。
選択されたブロックからの有効データを再配置することは、任意の所望の方式でさらに行われてもよい。たとえば、いくつかのアプローチにおいて、有効データはメモリの異なるブロックに記憶される前にキャッシュ(例、図5のキャッシュ・メモリ510を参照)に一時的に記憶されてもよい。他のアプローチにおいて、有効データはメモリの別のブロックに直接移動されてもよい。選択されたブロックからの有効データが再配置されたことに応答して、動作610は選択されたブロックを消去することを含む。
動作612に進むと、ここで方法600は、選択された(現在は消去された)ブロックを第1のプールに対応する第1のRTUキューに配置することを含む。上述のとおり、第1および第2のRTUキューの各々は、それぞれメモリ・ブロックの第1および第2のプールに組み込まれたメモリ・ブロックを含む。したがって、選択されたブロックに対してガベージ・コレクション動作を行い、そのブロックを第1のRTUキューに配置することによって、選択されたブロックは第1のRTUキューを充填することを助けるために効果的に用いられる。望ましいことに、このことによって第1のRTUキューに予め定められた数の利用可能な(例、空の)ブロックが含まれることを確実にすることによって、待ち時間の問題が回避される。
いくつかのアプローチにおいては、データがページに記憶され、かつブロックがまだ消去されていないときに、ブロックは読取り閾値電圧シフト値再較正を受けることも留意されるべきである。したがって、いくつかのアプローチにおいて、選択された(現在は消去された)ブロックを第1のRTUキューに配置するプロセスは、読取り閾値電圧シフト値(単数または複数)を再較正するためにそのブロックをマークすることを伴う。読取り閾値電圧シフト値は、本記載を読んだ後の当業者に明らかになるであろう任意のプロセスを用いて再較正されてもよい。たとえば、読取り閾値電圧シフト値の較正は、ブロック内のページが実際にプログラムされたときに行われてもよい。よって、読取り閾値電圧シフト値は、実際にはブロックが消去された直後に再較正されなくてもよい。代わりに、読取り閾値電圧シフト値の較正に対してマークされた消去済ブロックは、較正を行うためにブロックが再び再プログラムされるまで待つこととなる。
なおも図6A、Bを参照すると、方法600は動作612から動作602に戻り、たとえば第1もしくは第2またはその両方のRTUキューのサイズのモニタが続けられてもよい。決定604に戻ると、第1のRTUキューに含まれるブロックの数が第1のRTUキューの第1の範囲内であると判定したことに応答して、流れ図は決定614に進む。言い換えると、方法600は第1のRTUキューが望ましい数のメモリ・ブロックを含んでいると判定したことに応答して、決定604から決定614に進む。再び、この第1の範囲は第1のRTUキューに対応し、業界標準に基づいてユーザによって予め定められてもよいし、システム・パフォーマンスに基づいて調整されるなどしてもよい。
決定614は、第1のプールのサイズを減少させるべきかどうかを判定することを含む。言い換えると、決定614は、第1のプールに含まれるメモリ・ブロックの数が望ましくないほど、または少なくとも不必要に大きいかどうかを判定する。この判定は、第1のプールのターゲット・サイズと、第1のプールの現在の(例、実際の)サイズとを比較することによって行われてもよい。第1のプールのメモリ・ブロックの数は、第1のプールに関連付けられた対応するモードのすべてのブロックを含み、そのブロックが開いたLEBもしくは閉じたLEBにあるかどうか、または第1のRTUにあるかどうかは関係しない。第1のプールのターゲット・サイズは、ユーザによって予め定められてもよいし、包括的システムに対して予測されたワークロードに基づいて指定されるなどしてもよい。
第1のプールのサイズを減少させるべきではないと判定したことに応答して、方法600は動作602に戻り、たとえば第1もしくは第2またはその両方のRTUキューのサイズのモニタが続けられてもよい。しかし、第1のプールのサイズを減少させるべきだと判定したことに応答して、方法600は決定614から決定616に進む。ここで決定616は、第2のRTUキューに含まれるブロックの数が第2のRTUキューの第2の範囲内であるかどうかを判定することを含む。したがって、この第2の範囲は好ましくは第2のRTUキューに対する特定のものである。しかし、いくつかのアプローチにおいて、第2の範囲は第1のRTUキューおよび第2のRTUキューに対して同じかまたは類似であってもよいことも留意されるべきである。好ましいアプローチにおいて、この第2のRTUキューの第2の範囲は「ブースト閾値」にも対応することによって、ブロックを1つのプールから別のプールに移動するかどうかを判定するときに、ターゲット位置のRTUキューが評価される。望ましいことに、このことは、ターゲット・プールが自身の容量に達する前にもプール間のブロックの移行を防ぐことによって、ターゲット位置が過剰に充填されないことを確実にする。言い換えると、たとえ第1のRTUキューおよび第1のプール(例、「ソース位置」)にメモリ・ブロックが十分に充填されても、第1のプールからメモリ・ブロックをオフロードすることを決定する前に、第2のRTUキュー(例、「ターゲット位置」)の状態も考慮に入れられる。さらに、現在のワークロード特性に伴うブロック移動の現在の量に基づいて、ブースト閾値をリアル・タイムで動的に調整できる。好ましい実施形態において、ブースト閾値は、その同じプールでガベージ・コレクションが停止される閾値よりも高い。ブロック・プールのサイズ変更を伴ういくつかのアプローチに対して、ターゲット(例、「受け取る」)プールのブースト閾値は、追加されることが予期されるブロックの数に比例して減少され得る。この減少は、ソース・プールに対してブースト閾値が増加されるときか、またはソース・プールからブロックが抽出された後に行われ得る。
ソース位置とターゲット位置との両方を評価することによって、不必要な処理オーバーヘッドが回避されるため、これは特に望ましい。具体的には、ブロック・プールのサイズ変更によって、システム全体のI/O待ち時間およびスループットが影響され得る。このことの少なくとも部分的な理由は、ブロック移動がRTUキューの一方のブロックを使い尽くし得ることによって処理遅延をもたらす可能性があるためである。たとえRTUキューが使い尽くされなくても、ブロック移動によって所与のプールのフリー・ブロック・カウントが所望のレベルより低くなることがあり、それによってガベージ・コレクション動作がより積極的に行われるようになる。付加的なガベージ・コレクション動作によってもたらされるオーバーヘッドは、ホスト動作の望ましくない抑制をもたらすだろう。さらに、所与のブロックの構成または「モード」を変更すると、オーバーヘッドがもたらされる。たとえば、ブロック構成モードを切り換えるときには、付加的なコントローラ・メタデータが更新される。さらに、再構成されるブロックからの有効データを再配置するプロセス、もしくはブロックの閾値電圧シフト値(単数または複数)を再較正するプロセス、またはその両方は、付加的な処理オーバーヘッドを導入する。
したがって、ソース位置とターゲット位置との間でメモリ・ブロック移動を行う前にそれらを評価することによって、システムはこうした移動を制限することによって、不必要な処理オーバーヘッドを望ましく回避することができる。「第2の範囲内」が本発明を限定することは決して意図されないことも留意されるべきである。上記のとおり、ある値が所与の範囲内であるかどうかを判定する代わりに、所望のアプローチに依存して、たとえばある値が予め定められた閾値(例、ブースト閾値)より高いかどうか、ある値が予め定められた範囲外であるかどうか、絶対値が閾値より高いかどうか、ある値が閾値より低いかどうかなどに関する同等の判定が行われてもよい。
プールのサイズ変更は、サイズ変更の速度をターゲット・プールにおいてブロックが消費される速度に制限することによって、さらに知的に可能にされる。言い換えると、ソースおよびターゲット位置を評価することによって、たとえプールをサイズ変更する必要があるときでもブロックのガベージ・コレクションの延期が促進されることによって、サイズ変更の間にガベージ・コレクションのために選択されるブロック内の無効化データの量が最大化され、よって再配置されるべき有効ページの数が減少することによって書込み増幅が効果的に減少するため、全体のオーバーヘッドがさらに最小化される。
なおも図6Aを参照すると、第2のRTUキューに含まれるブロックの数が第2のRTUキューの第2の範囲内であると判定したことに応答して、方法600は決定616から動作602に戻る。上述のとおり、このことは方法600が第1もしくは第2またはその両方のRTUキューのサイズのモニタを続けることを可能にする。第2のRTUキューに含まれるブロックの数が第2のRTUキューの第2の範囲内にないと判定したことに応答して、方法600は代替的に決定618に進む。
決定618に進むと、ここで方法600は、ストレージ・システムが経験している現在の入力/出力(I/O:input/output)ワークロードが第3の範囲内であるかどうかを判定することを含む。上記に示したとおり、プール間でメモリ・ブロックを移動させるプロセスはワークロードが集中するプロセスであるため、それは包括的システムのパフォーマンスに影響することがある。したがって、プール間でメモリ・ブロックを移動させるかどうか、もしくはいつ移動させるか、またはその両方の判定において、ストレージ・システムの現在のI/Oワークロードを評価することによって、方法600は低いI/Oワークロードをターゲットにして、結果としてもたらされる処理の影響を低減することができる。再び、「第3の範囲内」が本発明を限定することは決して意図されない。上記のとおり、ある値が所与の範囲内であるかどうかを判定する代わりに、所望のアプローチに依存して、たとえばある値が予め定められた閾値より高いかどうか、ある値が予め定められた範囲外であるかどうか、絶対値が閾値より高いかどうか、ある値が閾値より低いかどうかなどに関する同等の判定が行われてもよい。決定618の結果は、決定論的または確率的に決定されてもよいことも留意されたい。よって、ある値が所与の範囲内であるかどうかを判定することは、その値が特定の確率で所与の範囲内にあるかどうかも含んでもよく、行われる決定はその確率に基づいていてもよい。
ストレージ・システムが経験している現在のI/Oワークロードが第3の範囲内であると判定したことに応答して、方法600は動作602に戻る。言い換えると、ストレージ・システムの現在のI/Oワークロードが望ましくないほど高いと判定したことに応答して、方法600は動作620に進む。しかし、ストレージ・システムが経験している現在のI/Oワークロードが第3の範囲内にないと判定したことに応答して、方法600は動作620に進む。ここで動作620は、第1のプールのブロックの1つを選択することを含む。動作620において選択されたブロックは、ガベージ・コレクション・プロセスを受けることとなる。したがって、いくつかのアプローチにおいては、第1のプールのすべてのブロックのうち、内部に最も多くの無効データを有するブロックが選択される。しかし、ガベージ・コレクション・プロセスを受けるために第1のプールのブロックの1つを選択するプロセスにおいて、任意のその他の所望の要素が考慮されてもよい。たとえば、第1のプールのブロックの1つを選択するときに、各々のブロックの寿命、各々のブロックに含まれる有効データの量、所与のブロックが移動されるのに適格であるかどうかなどが考慮されてもよい。
動作622は、第1のプールの選択されたブロックからの有効データを再配置することをさらに含む。選択されたブロックからの有効データを再配置することは、アプローチに依存して任意の所望の方式で行われてもよい。たとえば、いくつかのアプローチにおいて、有効データはメモリの異なるブロックに記憶される前にキャッシュ(例、図5のキャッシュ・メモリ510を参照)に一時的に記憶されてもよい。他のアプローチにおいて、有効データはメモリの別のブロックに直接移動されてもよい。選択されたブロックからの有効データが再配置されたことに応答して、動作624は選択されたブロックを消去することを含む。
さらに、動作626は、第1のプールからのブロックを第2のプールに対応する第2のRTUキューに移動することを含む。本記載によると、RTUキューもしくはプールまたはその両方の間を「移動された」ブロックは、メモリの同じプレーンおよびチャネルにとどまっている(例、図4を参照)。言い換えると、所与のブロックの機能的特徴は、その中の各々のセルの特定のビットのアクティベートもしくはデアクティベートまたはその両方を行った結果として変化することがあるが、ブロック自体はメモリ内で物理的に移動しない。代わりに、ブロックは論理的な意味でRTUキューもしくはプールまたはその両方の間を「移動される」。いくつかのアプローチにおいて、これらの移動はLPT、ブロック状態テーブル、動作ログなどにおいて示される。
再び、第1のプール(および第1のRTUキュー)はSLCモードで構成されたメモリ・ブロックを含むのに対し、第2のプール(および第2のRTUキュー)はセル当り複数ビット・モードで構成されたメモリ・ブロックを含む。したがって、第1および第2のプールの各々は異なるモードで構成されたメモリ・ブロックを含むため、動作626において選択されたブロックを実際に移動するプロセスは、ブロックを再構成することを伴う。一時的に図6Eを参照すると、一実施形態による第1のプールと第2のRTUキューとの間で所与のブロックを移動することの例示的なサブプロセスが示されており、図6Bの動作626もしくは以下の図6Dの動作656またはその両方を行うために、この例示的なサブプロセスの1つ以上が用いられてもよい。しかし、図6Eのサブプロセスは、本発明を限定することは決して意図されない一実施形態によって示されていることが留意されるべきである。
示されるとおり、図6Eの流れ図は、選択されたブロックを再構成することを含む。サブ動作670を参照。選択されたブロックが第1のプールから第2のRTUキューに移動されるのか、第2のプールから第1のRTUキューに移動されるのかに依存して、メモリのブロックを再構成するプロセスは異なる態様で行われてもよい。たとえば、第1のプールから第2のRTUキューに移動されるブロックは、好ましくはSLCモードからセル当り複数ビット・モードに再構成される。しかし、第2のプールから第1のRTUキューに移動されるブロックは、好ましくはセル当り複数ビット・モードからSLCモードに再構成される。SLCおよびセル当り複数ビット・モードの間で所与のブロックを再構成するプロセスは、ブロックに含まれるビットの特定のもののデアクティベートもしくは再アクティベートまたはその両方を行うこと、所与のブロックを論理的に再定義することなど、あるいは本記載を読んだ後の当業者に明らかになるであろう任意のプロセスを用いることによって行われてもよい。
ブロックを再較正することは、そのブロックのパフォーマンスに対する影響を有する。たとえば、第2のプールの所与のブロックにアクセスすることに関連する読取り閾値電圧シフト値は、そのブロックが第1のプールにおいて用いられた結果として変化してもよい。したがってこの流れ図は、ブロックが再びプログラムされたときのターゲット・モードの読取り閾値電圧シフト値の再較正のためにブロックをマークすることも含む。サブ動作672を参照。読取り閾値電圧シフト値は、本記載を読んだ後の当業者に明らかになるであろう任意のプロセスを用いて再較正されてもよい。しかし、いくつかのアプローチにおいて、読取り閾値電圧シフト値はメモリ(例、ルックアップ・テーブル)からアクセスされるか、予め定義されるか、オン・ザ・フライで動的に調整されるなどしてもよい。さらに、いくつかのアプローチにおいて、サブ動作672は所与のブロックの各アクティブ・ビットに対する1つ以上の読取り閾値電圧シフト値を再較正することを含む。
図6A、Bに戻って参照すると、方法600は動作626から動作602に戻り、たとえば第1もしくは第2またはその両方のRTUキューのサイズのモニタが続けられてもよい。したがって、方法600は包括的ストレージ・システムの効率的なパフォーマンスも維持しながら、リアル・タイムでブロック・プール・サイズを正常に適合させることができる。
前述のとおり、方法600に含まれるさまざまなプロセスの1つ以上は、セル当り複数ビット・モードで構成されたメモリ・ブロックをSLCモードで構成されたものに移行するという文脈において適用されてもよい。したがって、ここで図6C、Dを見ると、別の実施形態によるストレージ・システムにおけるブロック・プール・サイズを適合させるための方法630が示されている。この方法630は、さまざまな実施形態において特に図1~6Bに示される環境のいずれかにおいて本発明に従って実行されてもよい。もちろん、当業者が本記載を読んで理解するであろうとおり、図6C、Dに具体的に記載される動作より多いかまたは少ない動作が方法630に含まれてもよい。たとえば、方法630に含まれるさまざまなプロセスは、セル当り複数ビット・モードで構成されたメモリ・ブロックをSLCモードで構成されたものに移行するという文脈で以下に記載されている。したがって、図6A、Bの方法600に関して上述されたアプローチの任意の1つ以上が、所望のとおりに方法630において実現されてもよい。
方法630の各々のステップも、動作環境の任意の好適なコンポーネントによって行われてもよい。たとえばさまざまな実施形態において、方法630はハイブリッド・コントローラ、コントローラ、プロセッサ、コンピュータなど、または内部に1つ以上のプロセッサを有する何らかのその他のデバイスによって部分的または全体的に実行されてもよい。よっていくつかの実施形態において、方法630はコンピュータ実施方法であってもよい。こうした実施形態において、この方法を実施するために用いられるコンピュータは、メモリ・モジュール自体またはその一部分、たとえばハイブリッド・コントローラなどを含んでもよい。さらに、コンピュータ、プロセッサ、およびコントローラという用語は本明細書の任意の実施形態に関して交換可能に用いられることがあり、こうしたコンポーネントは本発明の多くのさまざまな置換における同等物とみなされる。
さらに、プロセッサを有する実施形態に対して、そのプロセッサは、たとえばハードウェアもしくはソフトウェアまたはその両方において実現され、かつ好ましくは少なくとも1つのハードウェア・コンポーネントを有する処理回路(単数または複数)、チップ(単数または複数)、もしくはモジュール(単数または複数)、またはその組み合わせなどであり、方法630の1つ以上のステップを行うために任意のデバイスにおいて使用されてもよい。例示的なプロセッサは、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、その組み合わせ、または当該技術分野において公知の任意のその他の好適なコンピュータ・デバイスを含むが、それに限定されない。
図6Cに示されるとおり、方法630の動作632は、第1の即時使用可能な(RTU)キューのサイズおよび第2のRTUキューのサイズを評価することを含む。第1および第2のRTUキューの各々は、それぞれメモリ・ブロックの第1および第2のプールに組み込まれたメモリ・ブロックを含む。さらに、第1および第2のプールの各々は、異なるモードで構成されたメモリ・ブロックを含む。上述のとおり、第1のプールはSLCモードで構成されたメモリ・ブロックを含むのに対し、第2のプールはセル当り複数ビット・モードで構成されたメモリ・ブロックを含む。したがって、第1のRTUキューはSLCモードで構成されたメモリ・ブロックを含むのに対し、第2のRTUキューはセル当り複数ビット・モードで構成されたメモリ・ブロックを含む。
再び、本記載に関して、所与のRTUキューの「サイズ」とは、そこに含まれる消去されたメモリ・ブロックの量を表すことが意図される。RTUキューのサイズは、それによって所与のRTUキューの全体の記憶容量を表しており、それはRTUキューに含まれるブロックの数、RTUキューに含まれるブロックの組み合わされた記憶容量、RTUキューに含まれる包括的システムに含まれるブロックの全体数のパーセンテージなどによって表され(例、それを用いて定量化され)てもよい。いくつかのアプローチによると、第1もしくは第2またはその両方のRTUキューのサイズは、キュー自体を実際に調査すること、ルックアップ・テーブルから情報を取得すること、動作ログを調べることなどによって評価される。
さらに、決定634は、第2のRTUキューに含まれるブロックの数が第2のRTUキューの第1の範囲内であるかどうかを判定することを含む。上記のとおり、好ましいアプローチにおいて、この第1の範囲はガベージ・コレクション閾値に対応することによって、第2のRTUキューに含まれるブロックの数が望ましくないほど低いと判定したことに応答して、ガベージ・コレクション動作が行われる。なお、たとえば当業者が本記載を読んで認識するであろうとおり、この第1の範囲は第2のRTUに関連付けられており、方法600において導入される第1のRTUに関連付けられた第1の範囲と同じであっても異なっていてもよい。
第2のRTUキューに含まれるブロックの数が第2のRTUキューの第1の範囲内にないと判定したことに応答して、方法600は動作636に進む。ここで動作636は第2のプールのブロックの1つを選択することを含み、一方で動作638は選択されたブロックからのすべての有効データを再配置することを含む。動作636において選択されたブロックは、動作638において開始されるガベージ・コレクション・プロセスを受けることとなる。したがって、いくつかのアプローチにおいては、第2のプールのすべてのブロックのうち、内部に最も多くの無効データを有するブロックが選択される。しかし、ガベージ・コレクション・プロセスを受けるために第2のプールのブロックの1つを選択するプロセスにおいて、任意のその他の所望の要素が考慮されてもよい。
選択されたブロックからの有効データが再配置されたことに応答して、動作640は選択されたブロックを消去することを含む。動作642に進むと、ここで方法630は、選択された(現在は消去された)ブロックを第2のプールに対応する第2のRTUキューに配置することを含む。いくつかのアプローチにおいては、データがページに記憶され、かつブロックがまだ消去されていないときに、ブロックは読取り閾値電圧シフト値再較正を受けることも留意されるべきである。したがって、いくつかのアプローチにおいて、選択された(現在は消去された)ブロックを第2のRTUキューに配置するプロセスは、たとえば本記載を読んだ後の当業者に明らかになるであろう任意のプロセスなどを用いて、読取り閾値電圧シフト値(単数または複数)を再較正するためにそのブロックをマークすることを伴う。
なおも図6C、Dを参照すると、方法630は動作642から動作632に戻り、たとえば第1もしくは第2またはその両方のRTUキューのサイズのモニタが続けられてもよい。決定634に戻ると、第2のRTUキューに含まれるブロックの数が第2のRTUキューの第1の範囲内であると判定したことに応答して、流れ図は決定644に進む。ここで決定644は、第2のプールのサイズを減少させるべきかどうかを判定することを含む。言い換えると、決定644は、第2のプールに含まれるメモリ・ブロックの数が望ましくないほど、または少なくとも不必要に大きいかどうかを判定する。この判定は、第2のプールのターゲット・サイズと、第2のプールの現在の(例、実際の)サイズとを比較することによって行われてもよい。
第2のプールのサイズを減少させるべきではないと判定したことに応答して、方法630は動作632に戻り、たとえば第1もしくは第2またはその両方のRTUキューのサイズのモニタが続けられてもよい。しかし、第2のプールのサイズを減少させるべきだと判定したことに応答して、方法630は決定644から決定646に進む。ここで決定646は、第1のRTUキューに含まれるブロックの数が第1のRTUキューの第2の範囲内であるかどうかを判定することを含む。好ましいアプローチにおいて、この第1のRTUキューの第2の範囲は第1のRTUキュー自体に関連付けられており、かつ「ブースト閾値」に対応することによって、ブロックを1つのプールから別のプールに移動するかどうかを判定するときに、ターゲット位置のRTUキューが評価される。言い換えると、たとえ第2のRTUキューおよび第2のプール(例、「ソース位置」)にメモリ・ブロックが十分に充填されても、第2のプールからメモリ・ブロックをオフロードすることを決定する前に、第1のRTUキュー(例、「ターゲット位置」)の状態も考慮に入れられ、このことは上記で考察された理由から特に望ましい。なお、たとえば当業者が本記載を読んで認識するであろうとおり、この第2の範囲は第1のRTUに関連付けられており、方法600において導入される第2のRTUに関連付けられた第2の範囲と同じであっても異なっていてもよい。
なおも図6Cを参照すると、第1のRTUキューに含まれるブロックの数が第1のRTUキューの第2の範囲内であると判定したことに応答して、方法630は決定646から動作632に戻る。上述のとおり、このことは方法630が第1もしくは第2またはその両方のRTUキューのサイズのモニタを続けることを可能にする。第1のRTUキューに含まれるブロックの数が第1のRTUキューの第2の範囲内にないと判定したことに応答して、方法630は代替的に決定648に進む。ここで決定648は、ストレージ・システムが経験している現在のI/Oワークロードが第3の範囲内であるかどうかを判定することを含む。上記に示したとおり、プール間でメモリ・ブロックを移動させるプロセスはワークロードが集中するプロセスであるため、それは包括的システムのパフォーマンスに影響することがある。したがって、プール間でメモリ・ブロックを移動させるかどうか、もしくはいつ移動させるか、またはその両方の判定において、ストレージ・システムの現在のI/Oワークロードを評価することによって、方法630は低いI/Oワークロードをターゲットにして、結果としてもたらされる処理の影響を低減することができる。
ストレージ・システムが経験している現在のI/Oワークロードが第3の範囲内であると判定したことに応答して、方法630は動作632に戻る。代替的に、ストレージ・システムが経験している現在のI/Oワークロードが第3の範囲内にないと判定したことに応答して、方法630は動作650に進む。ここで動作650は、第2のプールのブロックの1つを選択することを含む。動作650において選択されたブロックは、ガベージ・コレクション・プロセスを受けることとなる。したがって、いくつかのアプローチにおいては、第1のプールのすべてのブロックのうち、内部に最も多くの無効データを有するブロックが選択される。しかし、ガベージ・コレクション・プロセスを受けるために第1のプールのブロックの1つを選択するプロセスにおいて、任意のその他の所望の要素が考慮されてもよい。
動作652は、第2のプールの選択されたブロックからの有効データを再配置することをさらに含む。選択されたブロックからの有効データが再配置されたことに応答して、動作654は選択されたブロックを消去することを含む。決定656に進むと、ここで方法630は、第2のプールからのブロックを第1のプールに対応する第1のRTUキューに移動することを含む。再び、RTUキューもしくはプールまたはその両方の間を「移動された」ブロックは、メモリの同じプレーンおよびチャネルにとどまっている(例、図4を参照)。言い換えると、所与のブロックの機能的特徴は、その中の各々のセルの特定のビットのアクティベートもしくはデアクティベートまたはその両方を行った結果として変化することがあるが、ブロック自体はメモリ内で物理的に移動しない。代わりに、ブロックは論理的な意味でRTUキューもしくはプールまたはその両方の間を「移動される」。いくつかのアプローチにおいて、これらの移動はLPT、ブロック状態テーブル、動作ログなどにおいて示される。
再び、第2のプール(および第2のRTUキュー)はセル当り複数ビット・モードで構成されたメモリ・ブロックを含むのに対し、第1のプール(および第1のRTUキュー)はSLCモードで構成されたメモリ・ブロックを含む。したがって、第1および第2のプールの各々は異なるモードで構成されたメモリ・ブロックを含むため、動作656において選択されたブロックを実際に移動するプロセスは、ブロックを再構成することを伴う。再び一時的に図6Eを参照すると、図6Dの動作656を行うために、プールおよびRTUキューの間で所与のブロックを移動するための記載される任意のサブプロセスもしくは特定のアプローチまたはその両方が用いられてもよい。
図6C、Dに戻って参照すると、方法630は動作656から動作632に戻り、たとえば第1もしくは第2またはその両方のRTUキューのサイズのモニタが続けられてもよい。したがって、方法630も包括的ストレージ・システムの効率的なパフォーマンスも維持しながら、リアル・タイムでブロック・プール・サイズを正常に適合させることができる。
ここで図7を参照すると、一実施形態によるデータおよびブロックの流れの概観700が示されている。1つの選択肢として、本データおよびブロックの流れの概観700は、たとえば図6A~6Eなどの他の図面を参照して記載されるものなどの本明細書において挙げられる任意のその他の実施形態からの特徴とともに実現されてもよい。しかし、こうしたデータおよびブロックの流れの概観700および本明細書において提供されるその他のものは、本明細書において挙げられる例示的実施形態に具体的に記載されていてもいなくてもよいさまざまな適用もしくは置換またはその両方において用いられてもよい。さらに、本明細書において提供されるデータおよびブロックの流れの概観700は、任意の所望の環境において用いられてもよい。よって、図7(およびその他の図面)は任意の可能な置換を含むものと考えられてもよい。
示されるとおり、データ配置モジュール702によってホスト書込みが受信され、このデータ配置モジュール702は、SLCモードで構成されたメモリの1つ以上のブロックからなるLEB704と、セル当り複数ビット・モードで構成されたメモリの1つ以上のブロックからなるLEB706とを含む。いくつかのアプローチにおいて、新たなデータは最初にSLCモードで構成されたブロックを有するLEBに書込まれることによって、その新たなデータがSLCモードのブロックに関連する(例、セル当り複数ビット・モードで構成されたブロックと比較して)より少ない待ち時間およびより高いスループットの利益を受けることを可能にする。しかし、高いホストおよび内部書込みロードを伴う状況においては、セル当り複数ビット・モードで構成されたブロックに新たなデータが直接記憶されてもよい。SLCモードで構成されたブロックはRTUキューの第1のセット708から受信されるのに対し、セル当り複数ビット・モードで構成されたブロックはRTUキューの第2のセット710から受信される。たとえば当業者が本記載を読んだ後に認識するであろうとおり、RTUキューの第1および第2のセット708、710の各々は複数のメモリ・ブロック712を含み、各々のメモリ・ブロック712は異なるプレーンおよびチャネルに対するRTUキュー714に蓄積される。
プレーンおよびチャネルに関連付けられ、かつRTUキューの第1および第2のセット708、710に含まれるRTUキュー714の各々は、それぞれのRTUキュー714に含まれるメモリ・ブロックの数に対応するいくつかの異なる閾値を有することが示されている。これらの閾値の1つは、上述の第2の範囲(例、決定616および646を参照)のいずれかに対応するブースト閾値である。それによってこの「ブースト」閾値は、いくつかのアプローチにおいて、それぞれのRTUキューもしくは特定のチャネルまたはその両方が望ましくないほど少ない数のメモリ・ブロックを含んでいるかどうかを判定するために用いられる。本実施形態においては「高」、「低」、および「臨界」閾値も実現され、その各々はRTUキューの第1および第2のセット708、710におけるそれぞれのチャネルに対する異なる充填レベルを示す。
データ配置モジュール702において所与のブロックまたはメモリにデータを充填したことに応答して、LEBはそれぞれの占有ブロック・キューに移動される。具体的には、SLCモードで構成されたLEBはSLC占有ブロック・キュー716に移動され、一方でセル当り複数ビット・モードで構成されたLEBはセル当り複数ビット占有ブロック・キュー718に移動される。キュー716、718の各々に含まれるLEBの数は、時間とともに変化する。したがって、(例、有効なサイズの)キュー716、718の各々に記憶される情報の量も時間とともに変動する。
時間とともに、LEBは最終的にはキュー716、718からガベージ・コレクタおよびウェア・レベラ・モジュール720に移行される。いくつかのアプローチにおいて、LEBは、標準的なガベージ・コレクション手順に従ってガベージ・コレクタおよびウェア・レベラ・モジュール720に進められる。たとえば、LEBのブロックのデータが(例、再書込み動作、削除などによって)時間とともに無効化されると、そのLEBのガベージ・コレクションが指定されてもよい。しかし、他のアプローチにおいては、図6A~6Eに関して上述したプロセスのいずれかに従って、ガベージ・コレクタおよびウェア・レベラ・モジュール720によってLEBが選択されて処理されてもよい。いくつかの実施形態においては、LEBのブロックでみられた保持時間もしくは読取りの数、または測定されたRBERに基づいて、ガベージ・コレクタまたはウェア・レベラによってLEBがさらに選択されてもよい。
LEBはガベージ・コレクタおよびウェア・レベラ・モジュール720からデータ再配置モジュール722に進み、データ再配置モジュール722は、LEBのブロックから抽出した任意の有効データをデータ配置モジュール702に送り返す(点線の矢印付きラインで表されるとおり)。したがって、そのデータはメモリの別の利用可能なLEBに記憶されてもよい。その後、ブロック消去モジュール724によってLEBのブロックは消去される。消去動作は、ブロックのターゲット・モードを指定することを伴ってもよい。
指定されたターゲット・ブロック・モードに依存して、消去されたブロックは、そのブロックが構成されている現在のモードに対応するRTUキューに戻されるか、またはそのブロックは再構成される。たとえば、SLCモードで構成された空のブロックは、RTUキューの第1のセット708のRTU714に戻されるか、またはセル当り複数ビット・モードで再構成されてからRTUキューの第2のセット710のRTU714に配置される。同様に、セル当り複数ビット・モードで構成された空のブロックは、RTUキューの第2のセット710のRTU714に戻されるか、またはSLCモードで再構成されてからRTUキューの第1のセット708のRTU714に配置される。したがって、各々のブロック消去モジュール724は、自身から伸長する2本の矢印付きラインを有することが示されており、これらのラインの各々はブロック消去モジュール724において消去されたブロックがとり得る経路を表している。メモリ・ブロックを適合するRTUキューに戻すか、それともブロックを再構成してからそれを異なるRTUキューに加えるかというこの判定は、上述の図6A~6Eに含まれるプロセスのいずれかに基づいて行われてもよい。さらに、ブロックの再構成は、ブロック状態テーブルの更新を含んでもよい。
したがって、本明細書に含まれるさまざまな実施形態は、包括的ストレージ・システムの効率的なパフォーマンスも維持しながら、リアル・タイムでブロック・プール・サイズを正常に適合させることができる。縮小されるプールはそのサイズ変更の結果としてメモリ・ブロックの不足を経験しないことを確実にし、拡大されるプールはRTUに過剰な消去済ブロックを保持しないことを確実にし、ソース・プールにおける書込み増幅が顕著に増加しないことを確実にし、かつ移動されるブロックが移動に対して適格であることを確実にすることによって、システムの効率が維持される。当業者が本記載を読んだ後に認識するであろうとおり、これらのプール・サイズ変更動作はさらにバックグラウンドにおいて行われることによって、ホストI/O待ち時間およびスループットに対して何ら影響を有さない。
加えて、本明細書に含まれる実施形態のいくつかは、所与のプールがクリーンな(例、空の)ブロックに対してデータの書込みもしくは再配置またはその両方を行う必要があるときに、そのプールからブロックが切り換えられるという状況を回避できる。低いI/Oロードを伴う期間を利用することによって、パフォーマンスがさらに改善される。結果として、システムが過少使用されるときに、プール間のブロックの移動がシステムの公称パフォーマンスに影響することなくバックグラウンドで行われてもよい。さらに、プール間でブロックを移動させるかどうかを判定するときに、ソース位置とターゲット位置との両方を評価することは、不必要な処理オーバーヘッドを回避するため特に望ましい。このことによって、ブロックが別のプールに移行される前にソース・プールが十分に補充されることも確実になる。
本明細書においてはさまざまなアプローチが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の即時使用可能な(RTU)キューに含まれるブロックの数が前記第1のRTUキューの第1閾値より高い第1の範囲内であるかどうかを判定することと、
    前記第1のRTUキューに含まれる前記ブロックの数が前記第1のRTUキューの前記第1の範囲内であると判定したことに応答して、第2のRTUキューに含まれるブロックの数が前記第2のRTUキューの第2閾値より高い第2の範囲内であるかどうかを判定することと、
    前記第2のRTUキューに含まれる前記ブロックの数が前記第2のRTUキューの前記第2の範囲内にないと判定したことに応答して、前記第1のRTUキューに対応する第1のプールの前記ブロックの1つからの有効データを再配置することと、
    前記第1のプールの前記ブロックを消去することと、
    前記第1のプールからの前記ブロックを第2のプールに対応する前記第2のRTUキューに移動することと
    を含み、
    前記第1のプールの前記ブロックは単一レベル・セル(SLC)モードで構成され、
    前記第2のプールの前記ブロックはセル当り複数ビット・モードで構成される、
    コンピュータ実施方法。
  2. 前記第1のプールからの前記ブロックを前記第2のプールに対応する前記第2のRTUキューに移動することは、
    前記ブロックをSLCモードからセル当り複数ビット・モードに再構成することと、
    前記再構成されたブロックを、自身の読取り閾値電圧シフト値の再較正のためにマークすることと
    を含む、請求項1に記載のコンピュータ実施方法。
  3. 前記ストレージ・システムが経験している現在の入力/出力(I/O)ワークロードが第3閾値より低い第3の範囲内であるかどうかを判定することと、
    前記ストレージ・システムが経験している前記現在のI/Oワークロードが前記第3の範囲内にないと判定したことに応答して、前記第1のプールからの前記ブロックを前記第2のプールに対応する前記第2のRTUキューに移動することと
    を含む、請求項1に記載のコンピュータ実施方法。
  4. セル当り複数ビット・モードで構成された前記第2のプールの前記ブロックは、クワッド・レベル・セル(QLC)モードで構成される、請求項1に記載のコンピュータ実施方法。
  5. 前記第1のRTUキューに含まれる前記ブロックの数が前記第1の範囲内にないと判定したことに応答して、前記第1のプールの前記ブロックの1つを選択することと、
    前記選択されたブロックからの有効データを再配置することと、
    前記選択されたブロックを消去することと、
    前記選択されたブロックを前記第1のプールに対応する前記第1のRTUキューに配置することと
    を含む、請求項1に記載のコンピュータ実施方法。
  6. 前記選択されたブロックを前記第1のプールに対応する前記第1のRTUキューに配置することは、
    前記選択されたブロックを自身の読取り閾値電圧シフト値の再較正のためにマークすることを含む、請求項5に記載のコンピュータ実施方法。
  7. 前記第2のRTUキューに含まれるブロックの数が前記第2のRTUキューの第1閾値より高い第1の範囲内であるかどうかを判定することと、
    前記第2のRTUキューに含まれる前記ブロックの数が前記第2のRTUキューの前記第1の範囲内であると判定したことに応答して、前記第1のRTUキューに含まれるブロックの数が前記第1のRTUキューの第2閾値より高い第2の範囲内であるかどうかを判定することと、
    前記第1のRTUキューに含まれる前記ブロックの数が前記第1のRTUキューの前記第2の範囲内にないと判定したことに応答して、前記第2のプールの前記ブロックの1つからの有効データを再配置することと、
    前記第2のプールの前記ブロックを消去することと、
    前記第2のプールからの前記ブロックを前記第1のプールに対応する前記第1のRTUキューに移動することと
    を含む、請求項1に記載のコンピュータ実施方法。
  8. 前記第2のプールからの前記ブロックを前記第1のプールに対応する前記第1のRTUキューに移動することは、
    前記ブロックをセル当り複数ビット・モードからSLCモードに再構成することと、
    前記再構成されたブロックを、自身の閾値電圧シフト値の再較正のためにマークすることと
    を含む、請求項7に記載のコンピュータ実施方法。
  9. 実行されるプログラム命令を有するコンピュータ可読記憶媒体であって、前記プログラム命令はプロセッサによって可読もしくは実行可能またはその両方であり、前記プロセッサに
    前記プロセッサによって、第1の即時使用可能な(RTU)キューに含まれるブロックの数が前記第1のRTUキューの第1閾値より高い第1の範囲内であるかどうかを判定することと、
    前記第1のRTUキューに含まれる前記ブロックの数が前記第1のRTUキューの前記第1の範囲内であると判定したことに応答して、前記プロセッサによって、第2のRTUキューに含まれるブロックの数が前記第2のRTUキューの第2閾値より高い第2の範囲内であるかどうかを判定することと、
    前記第2のRTUキューに含まれる前記ブロックの数が前記第2のRTUキューの前記第2の範囲内にないと判定したことに応答して、前記プロセッサによって、前記第1のRTUキューに対応する第1のプールの前記ブロックの1つからの有効データを再配置することと、
    前記プロセッサによって、前記第1のプールの前記ブロックを消去することと、
    前記プロセッサによって、前記第1のプールからの前記ブロックを第2のプールに対応する前記第2のRTUキューに移動することと
    を実行させ、
    前記第1のプールの前記ブロックは単一レベル・セル(SLC)モードで構成され、
    前記第2のプールの前記ブロックはセル当り複数ビット・モードで構成される、
    コンピュータ可読記憶媒体
  10. 前記第1のプールからの前記ブロックを前記第2のプールに対応する前記第2のRTUキューに移動することは、
    前記ブロックをSLCモードからセル当り複数ビット・モードに再構成することと、
    前記再構成されたブロックを、自身の閾値電圧シフト値の再較正のためにマークすることと
    を含む、請求項9に記載のコンピュータ可読記憶媒体
  11. 前記プログラム命令は前記プロセッサによって可読もしくは実行可能またはその両方であり、前記プロセッサに
    前記プロセッサによって、ストレージ・システムが経験している現在の入力/出力(I/O)ワークロードが第3閾値より低い第3の範囲内であるかどうかを判定することと、
    前記ストレージ・システムが経験している前記現在のI/Oワークロードが前記第3の範囲内にないと判定したことに応答して、前記プロセッサによって、前記第1のプールからの前記ブロックを前記第2のプールに対応する前記第2のRTUキューに移動することと
    を実行させる、請求項9に記載のコンピュータ可読記憶媒体
  12. セル当り複数ビット・モードで構成された前記第2のプールの前記ブロックは、クワッド・レベル・セル(QLC)モードで構成される、請求項9に記載のコンピュータ可読記憶媒体
  13. 前記プログラム命令は前記プロセッサによって可読もしくは実行可能またはその両方であり、前記プロセッサに
    前記第1のRTUキューに含まれる前記ブロックの数が前記第1のRTUキューの前記第1の範囲内にないと判定したことに応答して、前記プロセッサによって、前記第1のプールの前記ブロックの1つを選択することと、
    前記プロセッサによって、前記選択されたブロックからの有効データを再配置することと、
    前記プロセッサによって、前記選択されたブロックを消去することと、
    前記プロセッサによって、前記選択されたブロックを前記第1のプールに対応する前記第1のRTUキューに配置することと
    を実行させる、請求項9に記載のコンピュータ可読記憶媒体
  14. 前記選択されたブロックを前記第1のプールに対応する前記第1のRTUキューに配置することは、
    再構成された選択されたブロックを、自身の閾値電圧シフト値の再較正のためにマークすることを含む、請求項13に記載のコンピュータ可読記憶媒体
  15. 前記プログラム命令は前記プロセッサによって可読もしくは実行可能またはその両方であり、前記プロセッサに
    前記プロセッサによって、前記第2のRTUキューに含まれるブロックの数が前記第2のRTUキューの第1閾値より高い第1の範囲内であるかどうかを判定することと、
    前記第2のRTUキューに含まれる前記ブロックの数が前記第2のRTUキューの前記第1の範囲内であると判定したことに応答して、前記プロセッサによって、前記第1のRTUキューに含まれるブロックの数が前記第1のRTUキューの第2閾値より高い第2の範囲内であるかどうかを判定することと、
    前記第1のRTUキューに含まれる前記ブロックの数が前記第1のRTUキューの前記第2の範囲内にないと判定したことに応答して、前記プロセッサによって、前記第2のプールの前記ブロックの1つからの有効データを再配置することと、
    前記プロセッサによって、前記第2のプールの前記ブロックを消去することと、
    前記プロセッサによって、前記第2のプールからの前記ブロックを前記第1のプールに対応する前記第1のRTUキューに移動することと
    を実行させる、請求項9に記載のコンピュータ可読記憶媒体
  16. 前記第2のプールからの前記ブロックを前記第1のプールに対応する前記第1のRTUキューに移動することは、
    前記プロセッサによって、前記ブロックをセル当り複数ビット・モードからSLCモードに再構成することと、
    前記プロセッサによって、前記再構成されたブロックを、自身の閾値電圧シフト値の再較正のためにマークすることと
    を含む、請求項15に記載のコンピュータ可読記憶媒体
  17. データを記憶するように構成された複数の不揮発性ランダム・アクセス・メモリ(NVRAM)ブロックと、
    プロセッサと、前記プロセッサに統合されるか、もしくは前記プロセッサによって実行可能であるか、またはその両方であるロジックと
    を含むシステムであって、前記ロジックは、
    前記プロセッサによって、第1の即時使用可能な(RTU)キューに含まれるブロックの数が前記第1のRTUキューの第1閾値より高い第1の範囲内であるかどうかを判定することと、
    前記第1のRTUキューに含まれる前記ブロックの数が前記第1のRTUキューの前記第1の範囲内であると判定したことに応答して、前記プロセッサによって、第2のRTUキューに含まれるブロックの数が前記第2のRTUキューの第2閾値より高い第2の範囲内であるかどうかを判定することと、
    前記第2のRTUキューに含まれる前記ブロックの数が前記第2のRTUキューの前記第2の範囲内にないと判定したことに応答して、前記プロセッサによって、前記第1のRTUキューに対応する第1のプールの前記ブロックの1つからの有効データを再配置することと、
    前記プロセッサによって、前記第1のプールの前記ブロックを消去することと、
    前記プロセッサによって、前記第1のプールからの前記ブロックを第2のプールに対応する前記第2のRTUキューに移動することと
    を行うように構成され、
    前記第1のプールの前記ブロックは単一レベル・セル(SLC)モードで構成され、
    前記第2のプールの前記ブロックはセル当り複数ビット・モードで構成される、
    システム。
  18. 前記第1のプールからの前記ブロックを前記第2のプールに対応する前記第2のRTUキューに移動することは、
    前記ブロックをSLCモードからセル当り複数ビット・モードに再構成することと、
    前記再構成されたブロックを、前記再構成されたブロックに対する閾値電圧シフト値の再較正のためにマークすることと
    を含む、請求項17に記載のシステム。
  19. 前記ロジックは、
    前記プロセッサによって、ストレージ・システムが経験している現在の入力/出力(I/O)ワークロードが第3閾値より低い第3の範囲内であるかどうかを判定することと、
    前記ストレージ・システムが経験している前記現在のI/Oワークロードが前記第3の範囲内にないと判定したことに応答して、前記プロセッサによって、前記第1のプールからの前記ブロックを前記第2のプールに対応する前記第2のRTUキューに移動することと
    を行うように構成される、請求項17に記載のシステム。
  20. 前記ロジックは、
    前記プロセッサによって、前記第2のRTUキューに含まれるブロックの数が前記第2のRTUキューの第1閾値より高い第1の範囲内であるかどうかを判定することと、
    前記第2のRTUキューに含まれる前記ブロックの数が前記第2のRTUキューの前記第1の範囲内であると判定したことに応答して、前記プロセッサによって、前記第1のRTUキューに含まれるブロックの数が前記第1のRTUキューの第2閾値より高い第2の範囲内であるかどうかを判定することと、
    前記第1のRTUキューに含まれる前記ブロックの数が前記第1のRTUキューの前記第2の範囲内にないと判定したことに応答して、前記プロセッサによって、前記第2のプールの前記ブロックの1つからの有効データを再配置することと、
    前記プロセッサによって、前記第2のプールの前記ブロックを消去することと、
    前記プロセッサによって、前記第2のプールからの前記ブロックを前記第1のプールに対応する前記第1のRTUキューに移動することと
    を行うように構成される、請求項17に記載のシステム。
JP2021577198A 2019-07-01 2020-06-23 ストレージ・システムにおけるブロック・プール・サイズの適合 Active JP7486534B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/459,393 2019-07-01
US16/459,393 US11182089B2 (en) 2019-07-01 2019-07-01 Adapting memory block pool sizes using hybrid controllers
PCT/IB2020/055904 WO2021001724A1 (en) 2019-07-01 2020-06-23 Adapting block pool sizes in a storage system

Publications (2)

Publication Number Publication Date
JP2022539133A JP2022539133A (ja) 2022-09-07
JP7486534B2 true JP7486534B2 (ja) 2024-05-17

Family

ID=74065734

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021577198A Active JP7486534B2 (ja) 2019-07-01 2020-06-23 ストレージ・システムにおけるブロック・プール・サイズの適合

Country Status (6)

Country Link
US (1) US11182089B2 (ja)
JP (1) JP7486534B2 (ja)
CN (1) CN114096952A (ja)
DE (1) DE112020003185T5 (ja)
GB (1) GB2598878B (ja)
WO (1) WO2021001724A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11442809B1 (en) * 2019-07-17 2022-09-13 Marvell Asia Pte, Ltd. Double-parity raid enabling recovery of two failed data units
US11119672B2 (en) * 2019-08-06 2021-09-14 Intel Corporation Dynamic single level cell memory controller
US11656792B2 (en) * 2021-06-29 2023-05-23 International Business Machines Corporation Mirroring data in write caches of a controller of a non-volatile memory
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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009086849A (ja) 2007-09-28 2009-04-23 Toshiba Corp 半導体記憶装置
JP2013025821A (ja) 2011-07-22 2013-02-04 Fusion-Io Inc ソリッドステート記憶媒体に関する設定パラメーターを判定するための装置、システム、及び方法
JP2015088121A (ja) 2013-11-01 2015-05-07 株式会社東芝 メモリシステムおよび方法
US20170003880A1 (en) 2015-06-30 2017-01-05 International Business Machines Corporation Wear leveling of a memory array
JP2019057193A (ja) 2017-09-22 2019-04-11 東芝メモリ株式会社 メモリシステム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7330956B1 (en) * 2002-04-16 2008-02-12 Emc Corporation Bucket based memory allocation
US7610468B2 (en) * 2006-10-26 2009-10-27 Hewlett-Packard Development Company, L.P. Modified buddy system memory allocation
US7865658B2 (en) 2007-12-31 2011-01-04 Sandisk Il Ltd. Method and system for balancing host write operations and cache flushing
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
US9021177B2 (en) * 2010-04-29 2015-04-28 Densbits Technologies Ltd. System and method for allocating and using spare blocks in a flash memory
US8694754B2 (en) 2011-09-09 2014-04-08 Ocz Technology Group, Inc. Non-volatile memory-based mass storage devices and methods for writing data thereto
US8943261B2 (en) 2011-10-28 2015-01-27 International Business Machines Corporation Efficient memory management in software caches
US9176862B2 (en) 2011-12-29 2015-11-03 Sandisk Technologies Inc. SLC-MLC wear balancing
US9965199B2 (en) * 2013-08-22 2018-05-08 Sandisk Technologies Llc Smart dynamic wear balancing between memory pools
US9558107B2 (en) 2013-12-24 2017-01-31 International Business Machines Corporation Extending useful life of a non-volatile memory by health grading
US10452280B2 (en) * 2014-10-03 2019-10-22 International Business Machines Corporation Hybrid storage system employing reconfigurable memory
WO2016069031A1 (en) 2014-11-01 2016-05-06 Hewlett Packard Enterprise Development Lp Managing a storage pool
US10254981B2 (en) * 2016-12-12 2019-04-09 International Business Machines Corporation Adaptive health grading for a non-volatile memory
JP2018120439A (ja) * 2017-01-25 2018-08-02 東芝メモリ株式会社 メモリシステムおよび制御方法
US10545685B2 (en) 2017-08-30 2020-01-28 Micron Technology, Inc. SLC cache management
US20200042223A1 (en) * 2018-08-02 2020-02-06 Alibaba Group Holding Limited System and method for facilitating a high-density storage device with improved performance and endurance

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009086849A (ja) 2007-09-28 2009-04-23 Toshiba Corp 半導体記憶装置
JP2013025821A (ja) 2011-07-22 2013-02-04 Fusion-Io Inc ソリッドステート記憶媒体に関する設定パラメーターを判定するための装置、システム、及び方法
JP2015088121A (ja) 2013-11-01 2015-05-07 株式会社東芝 メモリシステムおよび方法
US20170003880A1 (en) 2015-06-30 2017-01-05 International Business Machines Corporation Wear leveling of a memory array
JP2019057193A (ja) 2017-09-22 2019-04-11 東芝メモリ株式会社 メモリシステム

Also Published As

Publication number Publication date
GB2598878B (en) 2022-08-03
US11182089B2 (en) 2021-11-23
WO2021001724A1 (en) 2021-01-07
DE112020003185T5 (de) 2022-05-19
CN114096952A (zh) 2022-02-25
GB2598878A (en) 2022-03-16
US20210004158A1 (en) 2021-01-07
JP2022539133A (ja) 2022-09-07

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
JP7486534B2 (ja) ストレージ・システムにおけるブロック・プール・サイズの適合
US20200192735A1 (en) Selectively performing multi-plane read operations in non-volatile memory
US10613784B2 (en) Adaptive assignment of open logical erase blocks to data streams
US11157379B2 (en) Managing blocks of memory based on block health using hybrid controllers
CN112447245A (zh) 非易失性随机存取存储器中的混合读取电压校准
US11360903B2 (en) Data placement in write cache architecture supporting read heat data separation
US11086565B2 (en) Reducing effects of read array operations of read apparent voltage
US11056199B2 (en) Updating corrective read voltage offsets in non-volatile random access memory
US20170093440A1 (en) Data packing for compression-enabled storage systems
US11036427B2 (en) Using content addressable memory to perform read-modify-write operations in non-volatile random access memory (NVRAM)
KR20220053019A (ko) 비-휘발성 랜덤 액세스 메모리의 수정 읽기 전압 오프셋들의 계산
US11126360B2 (en) Dynamically adjusting block mode pool sizes
US11151053B2 (en) Increasing data read and/or write heat tracking resolution in storage devices having cache architecture
US11036415B2 (en) Managing memory block calibration based on priority levels
US11119855B2 (en) Selectively storing parity data in different types of memory
JP7496841B2 (ja) 読出しヒート・データ分離をサポートしている書込みキャッシュ・アーキテクチャ内でのデータ配置
US11816046B2 (en) Increased read performance for implementations having multiple interface links

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

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240409

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240507

R150 Certificate of patent or registration of utility model

Ref document number: 7486534

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150