JP7496841B2 - 読出しヒート・データ分離をサポートしている書込みキャッシュ・アーキテクチャ内でのデータ配置 - Google Patents

読出しヒート・データ分離をサポートしている書込みキャッシュ・アーキテクチャ内でのデータ配置 Download PDF

Info

Publication number
JP7496841B2
JP7496841B2 JP2021578160A JP2021578160A JP7496841B2 JP 7496841 B2 JP7496841 B2 JP 7496841B2 JP 2021578160 A JP2021578160 A JP 2021578160A JP 2021578160 A JP2021578160 A JP 2021578160A JP 7496841 B2 JP7496841 B2 JP 7496841B2
Authority
JP
Japan
Prior art keywords
write
processor
page
data
write request
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
JP2021578160A
Other languages
English (en)
Other versions
JP2022539788A (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 JP2022539788A publication Critical patent/JP2022539788A/ja
Application granted granted Critical
Publication of JP7496841B2 publication Critical patent/JP7496841B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile 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/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明はデータ・ストレージ・システムに関し、より詳細には、読出しヒート・データ分離(read heat data separation)をサポートしている書込みキャッシュ・アーキテクチャ内での選択的データ配置に関する。
一例としてフラッシュ・メモリを使用すると、従来のNAND型フラッシュ・ベースのソリッド・ステート・ドライブ(solid state drive)(SSD)の性能特性は、伝統的なハード・ディスク・ドライブ(HDD)の性能特性とは基本的に異なる。従来のSSD内のデータは通常、4、8または16KBサイズのページに編成されている。さらに、SSDのページ読出し動作は通常、書込み動作よりも1桁速く、待ち時間は、現在の動作位置にもまたは以前の動作位置にも依存しない。
しかしながら、フラッシュ・ベースのSSDでは、書き込まれる前にメモリ位置がブロック単位で消去される。消去ブロック単位のサイズは256から512ページまでの間にあり、または数千ページであることさえある。消去動作には、ページ・プログラム動作よりもおよそ1桁多い時間がかかる。NAND型フラッシュの固有の特性のため、フラッシュ・ベースのSSDはデータを違う場所に書き込み、それによって、マッピング・テーブルが、書き込まれたデータの論理アドレスを物理アドレスにマップする。このマッピング・テーブルは通常、アドレスの論理から物理へのロジカル・ツー・フィジカル・テーブル(Logical-to-Physical Table)(LPT)と呼ばれる。
フラッシュ・ベースのメモリ・セルは、摩耗またはその他の理由により読出しエラーもしくは読出し障害またはその両方を示すため、メモリ・ページ内でおよびメモリ・チップを横切って追加の冗長性が使用されることがある(例えばRAID-5およびRAID-6のような方式)。メモリ・ページ内の追加の冗長性は誤り訂正コード(ECC)を含むことがあり、ECCは例えばBCH、LDPCまたは他のコードを含むことがある。ページにECCを追加することは比較的に簡単だが、メモリ・ブロックをRAIDに似たストライプ(stripe)に編成することはより複雑である。例えば、時間の経過とともに個々のブロックは退けられ、これによりストライプの再編成またはストライプの容量低減が必要となる。LPTを用いたストライプの編成はデータの配置を定義するため、SSDは通常、これらの2つの方法を組み合わせたログ構造化アレイ(Log-Structured Array)(LSA)アーキテクチャを利用する。
NAND型フラッシュなどのメモリが進歩し続けるにつれて、読出し待ち時間特性も増大し続けている。これは特に、1つのセルに記憶されるビットの数が増えたときにそうである。これは、読出し待ち時間が、ページを読み出すときに印加しなければならない読出ししきい電圧の数に比例して長くなるためである。したがって、いくつかの従来のNAND型フラッシュ・アーキテクチャは、ページ・タイプによってかなりの待ち時間差を示す。
したがって、この傾向の結果として、短い待ち時間をターゲットとしたより大きなストレージ・システムは重大な課題を経験した。例えば、より短い待ち時間を有する既存のNAND型フラッシュ世代はいつか、より多くのデータを記憶することができるが劣った待ち時間特性も有するより新しい世代に取って代わられるであろう。このようなメモリに記憶されたデータを管理するために使用される従来のコントローラも、同様の課題に直面する。
本発明の一態様によれば、コンピュータ実施方法(computer-implemented method)が、書込みリクエストを受け取ること、書込みリクエストをデステージ・バッファ(destage buffer)に蓄積すること、および書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値(read heat value)を決定することを含む。書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値に基づいて、それぞれの書込みリクエストが、それぞれの書込み待ち行列に割り当てられる。さらに、それぞれの書込み待ち行列は、物理ページを含む異なるページ・ストライプに対応し、それぞれのページ・ストライプに含まれる物理ページは同じタイプである。さらに、書込み待ち行列から、それらのそれぞれのページ・ストライプに、書込みリクエストの中のデータがデステージされる。
異なるタイプの物理ページは、それらのそれぞれの物理構造、およびこれに起因する、それぞれのページからデータを実際に読み出すことに関係する異なるプロセスのために、異なる量の読出し待ち時間を経験する。これに応じて、それぞれの書込み待ち行列とそれぞれのオープン・ページ・ストライプ(open page stripe)との間の関係を確立することにより、システムは、読出し待ち時間と読出しヒートとの間に存在すると識別されたこの関係を利用することによって、動作効率を向上させることができる。言い換えると、所与のページ・タイプのページに関連する読出し待ち時間を使用して、それに割り当てる書込み待ち行列を、対応する読出しヒートに基づいて選択することができる。その際に、本明細書に含まれる手法(approach)は、システムが経験する処理遅延の全体量を全体として望ましく低減させることができる。
書込み待ち行列からそれらのそれぞれのページ・ストライプにデータをデステージするプロセスに関して、いくつかの手法では、このコンピュータ実施方法が、所与の書込み待ち行列が、それに対応する次のページ・ストライプを満たすのに十分なデータを、それぞれの書込みリクエストの中に含むかどうかを判定することをさらに含む。所与の書込み待ち行列が、それに対応する次のページ・ストライプを満たすのに十分なデータを、それぞれの書込みリクエストの中に含まないと判定したことに応答して、隣接する(adjacent)書込み待ち行列が、所与の書込み待ち行列に対応する次のページ・ストライプを満たすことを完了するのに十分なデータを、それぞれの書込みリクエストの中に含むかどうかについての判定が実行される。隣接する書込み待ち行列が、所与の書込み待ち行列に対応する次のページ・ストライプを満たすことを完了するのに十分なデータを、それぞれの書込みリクエストの中に含むと判定したことに応答して、所与の書込み待ち行列および隣接する書込み待ち行列から、所与の書込み待ち行列に対応する次のページ・ストライプに、書込みリクエストの中のデータがデステージされる。
書込みリクエストは、それらのそれぞれの書込み待ち行列から、それに対応するページ・ストライプにデステージされることが好ましいが、ある種の状況では書込みリクエストを異なるやり方で利用することもできる。例えば、所与のページ・ストライプを部分的に満たすのではなしに、所与のページ・ストライプを満たすプロセスを補足するために、隣接する書込み待ち行列からの書込みリクエストが使用される。このことは、メモリの効率的利用を保証し、さらに、メモリ内のデータの受入れ可能な配置を維持する。
さらに、いくつかの手法では、このコンピュータ実施方法が、1つまたは複数の論理ページに記憶されたデータに対応する読出しリクエストを受け取ること、およびこの1つまたは複数の論理ページのそれぞれの論理ページに関連する読出しヒート値を増分することを含む。さらに、この読出しリクエストが履行される。
本明細書に含まれる手法のうちのさまざまな手法は、読出しヒート・データ分離をサポートしている書込みキャッシュ・アーキテクチャ内での選択的なデータ配置を達成することができる。その結果として、メモリのさまざまなタイプおよび世代に関して、読出し待ち時間がかなり低減される。これらの手法は、(例えばTLCおよびQLC NAND型フラッシュなどの)マルチビットパーセル・メモリ(multi-bit-per-cell memory)内の異なるタイプの物理ページの異なる待ち時間特性を活用して、全体を支配するデータ・ストレージ・システムが経験する読出し待ち時間を全体として大幅に低減させることができる。いくつかの手法では、これらの改良が、例えば後に以下でより詳細に説明されるように、メモリに記憶されたデータの読出しヒートを追跡し、その読出しヒートに従ってメモリ内のデータを選択的に編成することによって達成される。
本発明の別の態様によれば、コンピュータ・プログラム製品が、プログラム命令が実装されたコンピュータ可読記憶媒体を含む。このプログラム命令は、上述の方法をプロセッサに実行させるように、このプロセッサによって読出し可能もしくは実行可能またはその両方である。
別の態様によれば、システムが、データを記憶するように構成された複数の不揮発性ランダム・アクセス・メモリ(NVRAM)ブロックを含む。このシステムはさらに、プロセッサおよび論理(logic)を含み、この論理は、プロセッサと統合されており、もしくはプロセッサによって実行可能であり、またはその両方である。さらに、この論理は、上述の方法を実行するように構成されている。
本発明の別の態様によれば、コンピュータ実施方法が、書込みリクエストを受け取ること、書込みリクエストをデステージ・バッファに蓄積すること、およびそれぞれの書込みリクエストがホスト書込みリクエストであるかどうかを判定することを含む。書込みリクエストがホスト書込みリクエストではないと判定したことに応答して、書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値が決定される。さらに、書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値に基づいて、書込みリクエストが書込み待ち行列に割り当てられる。それぞれの書込み待ち行列は、物理ページを含む異なるページ・ストライプに対応し、それぞれのページ・ストライプに含まれる物理ページは同じタイプである。しかしながら、書込みリクエストがホスト書込みリクエストであると判定したことに応答して、書込みリクエストが補足書込み待ち行列(supplemental write queue)に割り当てられる。
この場合も、異なるタイプの物理ページは、それらのそれぞれの物理構造、およびこれに起因する、それぞれのページからデータを実際に読み出すことに関係する異なるプロセスのために、異なる量の読出し待ち時間を経験する。これに応じて、それぞれの書込み待ち行列とそれぞれのオープン・ページ・ストライプとの間の関係を確立することにより、システムは、読出し待ち時間と読出しヒートとの間に存在すると識別されたこの関係を利用することによって、動作効率を向上させることができる。言い換えると、所与のページ・タイプのページに関連する読出し待ち時間を使用して、それに割り当てる書込み待ち行列を、対応する読出しヒートに基づいて選択することができる。その際に、本明細書に含まれる手法は、システムが経験する処理遅延の全体量を全体として望ましく低減させることができる。
このコンピュータ実施方法はさらに、補足書込み待ち行列から、シングルレベル・セル(single-level cell)(SLC)メモリ内に実装された物理ページを含むページ・ストライプ内の物理ページに、ホスト書込みリクエストの中のデータをデステージすることを含む。いくつかの手法では、ホスト書込みリクエストに含まれるデータが、他の書込み待ち行列ができなかった可能性がある間隙を満たすために使用される。この場合も、書込みリクエストは、それらのそれぞれの書込み待ち行列から、それに対応するページ・ストライプにデステージされることが好ましいが、ある種の状況では書込みリクエストを異なるやり方で利用することもできる。このことは、メモリの効率的利用を保証し、さらに、メモリ内のデータの受入れ可能な配置を維持する。これに応じて、所望のとおりに、例えば、待ち行列が十分に満たされたと判定したことに対する応答としてではなく、補足書込み待ち行列から、ホスト書込みリクエストの中のデータをデステージすることができる。
別の態様によれば、コンピュータ・プログラム製品が、プログラム命令が実装されたコンピュータ可読記憶媒体を含む。このプログラム命令は、上述の方法をプロセッサに実行させるように、このプロセッサによって読出し可能もしくは実行可能またはその両方である。
本発明の他の態様および実施形態は、以下の詳細な説明から明白になるであろう。以下の詳細な説明は、図面とともに検討したときに、本発明の原理を例示する。
一手法による不揮発性メモリ・カードを示す図である。 一手法によるデータ・ストレージ・システム・アーキテクチャを示す図である。 一手法によるシステム図である。 一手法による、ブロック・ストライプおよびページ・ストライプを含む概念図である。 一手法によるデータ・ストレージ・システムの部分代表図である。 一手法による方法の流れ図である。 一手法による方法の流れ図である。 一手法によるデータ・ストレージ・システムの部分代表図である。 一手法による方法の流れ図である。 一手法による方法の流れ図である。 一手法によるデータ・ストレージ・システムの部分代表図である。 一手法による方法の流れ図である。 一手法による方法の流れ図である。 一手法によるネットワーク・アーキテクチャを示す図である。 一手法による、図8のサーバもしくはクライアントまたはその両方に関連することがある代表的なハードウェア環境を示す図である。 一手法による多段データ・ストレージ・システムを示す図である。
以下の説明は、本発明の一般的な原理を示すために書かれたものであり、本明細書に記載された発明の思想を限定することを意味するものではない。また、本明細書に記載された特定の特徴は、可能なさまざまなそれぞれの組合せおよび置き換えにおいて、記載された他の特徴と組み合わせて使用することができる。
本明細書において特に定義されていない限り、全ての用語には、本明細書から暗示される意味ならびに当業者によって理解される意味もしくは辞書、学術論文などに定義された意味またはその両方を含む、その可能な最も幅広い解釈が与えられる。
特に明記されていない限り、本明細書および添付の特許請求の範囲で使用されているとき、単数形「a」、「an」および「the」は複数の指示物を含むことにも留意しなければならない。本明細書で使用されるとき、用語「備える(comprises)」もしくは「備えている(comprising)」またはその両方は、明示された特徴、完全体(integer)、ステップ、動作、要素もしくは構成要素またはこれらの組合せの存在を指定するが、他の1つもしくは複数の特徴、完全体、ステップ、動作、要素、構成要素もしくはこれらのグループ、またはこれらの組合せの存在または追加を排除しないことも理解される。
以下の説明は、データ・ストレージ・システムのいくつかの好ましい手法、およびその動作部分もしくは構成要素部分またはその両方を開示する。本明細書のさまざまな手法は、例えばNAND型フラッシュ・メモリ、NOR型フラッシュ・メモリ、相変化メモリ(PCM)、磁気抵抗型RAM(MRAM)および抵抗型RAM(RRAM)などのNVRAM技術を含む、広範囲のメモリ媒体を用いて実施することができることを理解すべきである。文脈を提供するため、および単に読者の助けとするために、1つのタイプの不揮発性メモリに関してさまざまな手法が説明されることがある。その説明は例示のためだけに提供されたものであり、その説明を、特許請求の範囲に定義された発明を限定するものと考えるべきではない。
一般的な一手法では、コンピュータ実施方法が、書込みリクエストを受け取ること、書込みリクエストをデステージ・バッファに蓄積すること、および書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値を決定することを含む。書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値に基づいて、それぞれの書込みリクエストが、対応するそれぞれの書込み待ち行列に割り当てられる。さらに、それぞれの書込み待ち行列は、物理ページを含む異なるページ・ストライプに対応し、対応するそれぞれのページ・ストライプに含まれる物理ページは同じタイプである。さらに、書込み待ち行列から、書込み待ち行列の対応するそれぞれのページ・ストライプに、書込みリクエストの中のデータがデステージされる。
別の一般的な手法では、コンピュータ・プログラム製品が、プログラム命令が実装されたコンピュータ可読記憶媒体を含む。このプログラム命令は、上述の方法をプロセッサに実行させるように、このプロセッサによって読出し可能もしくは実行可能またはその両方である。
別の一般的な手法では、システムが、データを記憶するように構成された複数の不揮発性ランダム・アクセス・メモリ(NVRAM)ブロックを含む。このシステムはさらに、プロセッサおよび論理を含み、この論理は、プロセッサと統合されており、もしくはプロセッサによって実行可能であり、またはその両方である。さらに、この論理は、上述の方法を実行するように構成されている。
別の一般的な手法では、コンピュータ実施方法が、書込みリクエストを受け取ること、書込みリクエストをデステージ・バッファに蓄積すること、およびそれぞれの書込みリクエストがホスト書込みリクエストであるかどうかを判定することを含む。書込みリクエストがホスト書込みリクエストではないと判定したことに応答して、書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値が決定される。さらに、書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値に基づいて、書込みリクエストが書込み待ち行列に割り当てられる。それぞれの書込み待ち行列は、物理ページを含む異なるページ・ストライプに対応し、対応するそれぞれのページ・ストライプに含まれる物理ページは同じタイプである。しかしながら、書込みリクエストがホスト書込みリクエストであると判定したことに応答して、書込みリクエストが補足書込み待ち行列に割り当てられる。
別の一般的な手法では、コンピュータ・プログラム製品が、プログラム命令が実装されたコンピュータ可読記憶媒体を含む。このプログラム命令は、上述の方法をプロセッサに実行させるように、このプロセッサによって読出し可能もしくは実行可能またはその両方である。
図1は、一手法によるメモリ・カード100を示している。この手法では、メモリ・カード100が、例示的な不揮発性データ・ストレージ・カードとして示されているが、代替手法によれば、他のさまざまなタイプの不揮発性データ・ストレージ・カードをデータ・ストレージ・システム内で使用することができることに留意すべきである。したがって、メモリ・カード100のアーキテクチャもしくは構成要素またはその両方が本発明を限定することは全く意図されておらず、それらはむしろ非限定的な例として示されている。
さらに、一選択肢として、このメモリ・カード100は、他の図を参照して説明した特徴など、本明細書に記載された他の手法の特徴とともに実施することができる。しかしながら、このようなメモリ・カード100および本明細書に示された他のメモリ・カードは、本明細書に記載された例示的な手法の中で特に説明されていることもありまたは説明されていないこともあるさまざまな用途もしくは置き換えまたはその両方で使用することができる。さらに、本明細書に示されたメモリ・カード100は、所望の任意の環境で使用することができる。
続けて図1を参照すると、メモリ・カード100は、ゲートウェイ102と、GPPメモリ114(GPPメモリ114は、RAM、ROM、バッテリ・バックアップ型DRAM(battery-backed DRAM)、相変化メモリ(phase-change memory)PC-RAM、MRAM、STT-MRAMなどまたはこれらの組合せを含むことができる)に接続された汎用プロセッサ(general purpose processor)(GPP)112(例えばASIC、FPGA、CPUなど)と、いくつかのメモリ・コントローラ108とを含み、この例では、このいくつかのメモリ・コントローラ108がフラッシュ・コントローラを含む。メモリ・コントローラ108はそれぞれ、チャネル106を介して複数のNVRAMメモリ・モジュール104に接続されている(この複数のNVRAMメモリ・モジュール104は、NAND型フラッシュまたは他のタイプの不揮発性メモリ、例えば上に記載されたタイプの不揮発性メモリを含むことができる)。
さまざまな手法によれば、このいくつかのコントローラ108のうちの1つまたは複数のコントローラ108を、1つもしくは複数のプロセッサ、またはメモリ・カード100のサブシステムを制御するための論理、あるいはその両方とすることができ、あるいは、このいくつかのコントローラ108のうちの1つまたは複数のコントローラ108が、1つもしくは複数のプロセッサ、またはメモリ・カード100のサブシステムを制御するための論理、あるいはその両方を含んでもよい。例えば、コントローラ108は通常、データ書込み、データ再循環、データ読出しなどのNVRAMメモリ・モジュール104の機能を制御する。コントローラ108は、当技術分野で知られている論理および本明細書に開示された任意の論理を使用して動作することができ、したがって、さまざまな手法における、本明細書に含まれる不揮発性メモリの任意の説明に関して、コントローラ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は、ファイバ・チャネル(Fiber Channel)(FC)、FCオーバー・イーサネット(R)(FC over Ethernet(R))(FCoE)、インフィニバンド(InfiniBand)、インターネット・スモール・コンピュータ・システム・インタフェース(Internet Small Computer System Interface)(iSCSI)、トランスポート・コントロール・プロトコル/インターネット・プロトコル(Transport Control Protocol/Internet Protocol)(TCP/IP)、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(Peripheral Component Interconnect Express)(PCIe)など、またはこれらの任意の組合せなど、知られている任意の通信プロトコルを含むことができる。
この説明を読んだ当業者には理解されるであろうが、データ・ストレージ・システム220内のRAIDコントローラ206は、RAID-5、RAID-6、RAID-10によって使用されているパリティ方式(parity scheme)に似たパリティ方式、または他の適当ななんらかのパリティ方式を実行することができる。
プロセッサ・システム201はそれぞれ、1つまたは複数のプロセッサ210(例えばCPU、マイクロプロセッサなど)と、ローカル・データ・ストレージ211(例えば図9のRAM914、図9のROM916など)と、データ・ストレージ・システム220と通信するように構成されたI/Oアダプタ218とを備える。
図1を再び参照すると、メモリ・コントローラ108、GPP112もしくは本明細書に記載された他のコントローラ(例えば図2のRAIDコントローラ206)またはこれらの組合せは、所望の手法に応じて、記憶されたデータに対してさまざまな機能を実行することができることがある。詳細には、メモリ・コントローラまたはGPP112は、以下の機能のうちの任意の1つまたは複数の機能を実行するように構成された論理を含むことができる。以下の機能が排他的リストであることは全く意図されていない。この説明を読んだ当業者には理解されるであろうが、言い換えると、所望の手法に応じて、追加機能または代替機能を実行するように、ストレージ・システムの論理を構成することができる。
ガベージ・コレクション
この説明のSSDメモリ・コントローラの文脈において、ガベージ・コレクションは、将来の使用のために回収するデータ・ブロックを識別し、その中の依然として有効な全てのページを再配置するプロセスを含むことができる。さらに、特定のコントローラおよび/または対応するそれぞれのガベージ・コレクション動作単位に応じて、回収もしくは再配置する論理消去ブロック(logical erase block)(LEB)または回収および再配置するLEBを識別することができる。通常は、1つのLEBが1つのブロック・ストライプに対応するが、代替実施態様は、LEBを構築する固定された数のブロック・ストライプまたは単一のブロックも考慮することができる。
物理「ブロック」は、例えばNAND型フラッシュ・メモリなどの不揮発性メモリ上で消去することができる最小単位であって、それによってそれにデータを書き込む準備を整えることができる最小単位を表す。しかしながら、通常のガベージ・コレクション動作単位はしばしば不揮発性メモリの多数の物理ブロックであり、本明細書ではLEBとも呼ばれる。これは、LEBには通常、RAIDに似たパリティ情報が追加されることによる。したがって、ページ障害またはブロック障害の場合、データを再建することができるのは、LEBの中の全てのブロックが依然としてデータを保持しているときだけである。これに応じて、ガベージ・コレクション単位から個々のブロックを個々にまたは単一の単位で消去することができるのは、LEBの中の全てのブロックの依然として有効な全てのデータが成功のうちに新しい位置に再配置されたときだけである。したがって、完全なガベージ・コレクション単位は単一の単位としてガベージ・コレクションされる。さらに、LEBのサイズは、ガベージ・コレクションによって誘発される書込み増幅(write amplification)に直接に影響を及ぼす。LEBが大きいほど、無関係なデータがLEBに一緒に記憶される可能性が高くなり、したがって、ガベージ・コレクション選択後により多くのLEBデータを再配置しなければならないことがある。
同じグループのブロックを並列に読出しまたは書込みすることができ、それによって全体的なバンド幅を増大させることができるように、しばしば、異なるダイもしくは異なるフラッシュ・チャネルのブロックまたはこれらの両方のブロックが一緒にグループ化される。以前の2つの方法を組み合わせること、および並列にアクセスすることができる異なるフラッシュ・チャネルのブロックを使用してRAIDストライプを構成することも可能である。
LEBは、物理的消去の単位である多数の物理メモリ・ブロックを含むことができることにも留意すべきである。さらに、メモリ・ブロックをLEBに編成することは、異なるメモリ・チップ、メモリ・プレーン(memory plane)もしくはチャネルまたはこれらの組合せのメモリ・ブロック間にRAIDに似たパリティ保護方式を追加することを可能にするだけでなく、より高い並列性によって性能を大幅に強化することも可能にする。例えば、多数の不揮発性メモリ・ブロックを一緒にグループ化してRAIDストライプにすることができる。この説明を読んだ当業者には理解されることだが、RAID方式は一般に信頼性を向上させ、データ損失の確率を低下させる。
本発明を限定することは全く意図されていない例示的な一手法によれば、メモリ・コントローラ(例えば図1の108を参照されたい)もしくはGPP112またはその両方はガベージ・コレクションを内部的に実行することができる。前述のとおり、ガベージ・コレクションは、再配置するLEBを選択することを含むことができ、再配置するLEBを選択した後、選択したLEB上の依然として有効な全てのデータを再配置する(例えば移動させる)ことができる。依然として有効なデータを再配置した後、そのLEBを消去することができ、その後、そのLEBを、新しいデータを記憶する目的に使用することができる。ガベージ・コレクションされたLEBから再配置されるデータの量は、書込み増幅を決定する。さらに、書込み増幅を低減させる効率的な方法は、書込みヒート分離(write heat segregation)を実施することを含む。
書込みヒート分離
この文脈では、データの「書込みヒート」が、データが更新される(例えば新しいデータで書き換えられる)レート(rate)(例えば頻度)を指す。「ホット(hot)」とみなされるメモリ・ブロックは、頻繁に更新されるレートを有する傾向があり、「コールド(cold)」とみなされるメモリ・ブロックは、ホット・ブロックよりも低い更新レートを有する。
論理ページの書込みヒートを追跡することは、例えば、そのページのLPTマッピング・エントリ内のある数のビットを、ある時間間隔または時間窓内でそのページがいくつの書込みリクエストに遭遇したかを追跡し続けることに割り振ることを含むことができる。通常、ホスト書込みリクエストは書込みヒートを増大させ、内部再配置書込みは書込みヒートを低減させる。書込みヒートに対する実際の増分もしくは減分またはその両方は、決定論的(deterministic)または確率論的(probabilistic)とすることができる。
同様に、それぞれの論理ページのLPT内のある数の追加のビットを用いて読出しヒートも追跡することができる。例えば図5A~7Bに関して後により詳細に説明するようにしてストラドリング読出し(straddling read)用および非ストラドリング読出し用のブロックごとに別個のカウンタを維持することができる場合、メタデータを減らすため、読出しヒートを物理ブロック・レベルで追跡することもできる。しかしながら、メモリ・ブロックへの読出しリクエストの数もしくはメモリ・ブロック上で実行される読出し動作の数またはその両方は、書込みヒート分離に関して、いくつかの手法のためにメモリ・ブロックの書込みヒートを決定するときに影響を及ぼさないことに留意すべきである。例えば、特定のメモリ・ブロックからデータが頻繁に読み出される場合、高い読出し頻度は、メモリ・ブロックが高い更新レートを有することを必ずしも意味しない。そうではなしに、所与のメモリ・ブロックに対して実行される読出し動作の頻度が高いことは、メモリ・ブロックに記憶されたデータの重要性、価値などを示すことがある。
同じ書込みヒート値のメモリ・ブロックもしくは似た書込みヒート値のメモリ・ブロックまたはその両方をグループ化することによって、書込みヒート分離を達成することができる。具体的には、書込みヒート分離法は、ホットなメモリ・ページをあるメモリ・ブロックに一緒にグループ化することができ、その一方で、コールドなメモリ・ページは、別個のメモリ・ブロックに一緒にグループ化される。したがって、書込みヒート分離されたLEBは、ホットなデータまたはコールドなデータによって占拠される傾向がある。
書込みヒート分離の長所は2つある。第1に、ホット・メモリ・ブロックに対してガベージ・コレクション・プロセスを実行することは、コールド・データの再配置をもトリガすることを防ぐだろう。書込みヒート分離がなされない場合には、ホット・データに対する更新が頻繁に実行される結果、望ましくないことに、そのホット・データが再配置されているLEBと同じLEB上に一緒に配置された全てのコールド・データも再配置される。したがって、書込みヒート分離を実装した手法に関しては、ガベージ・コレクションを実行することによって生じる書込み増幅がはるかに小さい。
第2に、データの相対的な書込みヒートを摩耗レベリング(wear leveling)目的に利用することができる。例えば、より健全な(例えばより若い)メモリ・ブロックにホット・データを配置することができ、その一方で、より健全なメモリ・ブロックに比べて健全でない(例えば古い)メモリ・ブロック上にコールド・データを配置することができる。したがって、比較的に古いブロックが摩耗にさらされるレートは事実上遅くなり、それによって、書込みヒート分離を実装した所与のデータ・ストレージ・システムの全体的な耐久性が向上する。
書込み割振り
書込み割振り(write allocation)は、オープンLEBのフリー位置(free location)に書込みリクエストのデータを配置することを含む。LEB内の全てのページが書き込まれるとすぐに、そのLEBは閉じられ、占拠されたLEBを保持するプールに入れられる。占拠プール内のLEBは通常、ガベージ・コレクションに対して好適になる。オープンLEBの数は普通、限定されており、閉じられたLEBは、直ちにまたは若干の遅延の後に、開かれた新しいLEBに入れ替えることができる。
実行中、ユーザ書込み動作と同時にガベージ・コレクションを実行することができる。例えば、ユーザ(例えばホスト)がデータをデバイスに書き込むときに、デバイス・コントローラは、新しい入来データ・ページのためのスペースを作るために、無効データを有するLEBに対してガベージ・コレクションを連続的に実行することができる。上述のとおり、ガベージ・コレクションが実行されているLEBはしばしば、ガベージ・コレクション動作の時点で依然として有効であるいくつかのページをしばしば有するであろう。したがって、それらのページは、新しいLEBに再配置される(例えば書き込まれる)ことが好ましい。
この場合も、上述の機能が、本明細書に記載されたストレージ・システム、もしくは本明細書中で示唆されているストレージ・システム、または本明細書に記載され、本明細書中で示唆されているストレージ・システムの能力を限定することは全く意図されていない。上述の機能は例として示されているのであり、この説明を読んだ当業者には理解されるであろうが、所望の手法に応じて、追加機能または代替機能を実行するように、ストレージ・システムの論理を構成することができる。
次に図3を参照すると、一手法によるシステム300が示されている。一選択肢として、このシステム300は、他の図を参照して説明した特徴など、本明細書に記載された他の手法の特徴とともに実施することができる。しかしながら、このようなシステム300および本明細書に示された他のシステムは、本明細書に記載された例示的な手法の中で特に説明されていることもありまたは説明されていないこともあるさまざまな用途もしくは置き換えまたはその両方で使用することができる。さらに、本明細書に示されたシステム300は、所望の任意の環境で、例えばコントローラと組み合わせて使用することができる。
示されているように、システム300は、ガベージ・コレクタ304を含むいくつかの他の構成要素に結合された書込みキャッシュ302を含む。前述のとおり、ガベージ・コレクタ304を使用して、有効なデータを再配置し、後の再使用のために消去する不揮発性メモリ・ブロックを提供することにより、LEBユニットを解放することができる。したがって、ガベージ・コレクタ304は、所望の手法に応じて、連続する物理スペースのブロックを回収することができる。例示的な一手法によれば、ブロック消去ユニットを使用して、ガベージ・コレクタ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はブロック・ストライプから構築されており、1つのLEBを構築するのに通常は単一のブロック・ストライプが使用される。しかしながら、代替手法は、1つのLEBを形成するのに多数のブロック・ストライプを使用することができる。一選択肢として、この概念図400は、他の図を参照して説明した特徴など、本明細書に記載された他の手法の特徴とともに実施することができる。しかしながら、このような概念図400および本明細書に示された他の図は、本明細書に記載された例示的な手法の中で特に説明されていることもありまたは説明されていないこともあるさまざまな用途もしくは置き換えまたはその両方で使用することができる。さらに、本明細書に示されたコントローラ概念図400は、所望の任意の環境で使用することができる。したがって、図4の例示的な不揮発性メモリ・コントローラ概念図400は、キャッシュ・アーキテクチャ内で実施することができる。しかしながら、所望の手法に応じて、不揮発性メモリに記憶されたデータの編成を定義する際に図4の概念図400を実施することができる。これに応じて、以下では、両方の実施態様が順番に説明される。
不揮発性メモリ
次に図4を参照すると、概念図400は、「プレーン0」から「プレーンM」の標識が付けられたM+1個の一組の集約プレーン(aggregated plane)を含む。集約プレーンは、異なるチャネル上の同じプレーン索引を有する全ての物理プレーンからなる。本明細書では集約プレーンを単にプレーンとも呼ぶことに留意すべきである。
不揮発性メモリに記憶されたデータとともに実装されるとき、チャネル上のそれぞれの物理プレーンは、例えば通常は1024個もしくは2048個程度またはそれ以上の多数のブロックからなる一組のブロックを含むことができる。さらに、1つまたは複数の物理プレーンは、不良ブロック(例えば性能が不十分なブロック、望ましくない特性を有するブロックなど)に対する交換用ブロックとして使用することができるいくつかの追加ブロックも含むことができる。
不揮発性メモリのそれぞれのプレーンでは、それぞれのチャネルからの単一のブロックが、対応するそれぞれのブロック・ストライプを形成することができる。したがって、1プレーン当たりのブロックの数およびプレーンの数によって、不揮発性メモリの所与の手法がサポートするブロック・ストライプの数を決定することができる。
プレーン0の分解図では、概念図400がさらに、残りのプレーンでサポートされている一組のブロック・ストライプ内の単一のブロック・ストライプ(ブロック・ストライプ0)を示している。プレーン0のブロック・ストライプ0は、「チャネル0」から「チャネル10」のラベルが付けられたそれぞれのチャネルから1つずつの合計11個のブロックを含むブロック・ストライプとして示されている。ブロック・ストライプは通常、それらがガベージ・コレクションされた後に消去されるため、ブロック・ストライプに対するブロックの関連付けは時間の経過とともに変化しうることに留意すべきである。消去されたブロックはフリー・ブロック・プールに入れることができ、それによって、書込み割振りが新しいブロック・ストライプを要求したときに、フリー・ブロック・プール内のブロックから新しいブロック・ストライプが組み立てられる。例えば、概念図400を参照すると、プレーン0の図示されたブロック・ストライプ0には、この時点で、チャネル0からのブロック10およびチャネル4からのブロック41が関連付けられている。さらに、示されたブロック・ストライプ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が、不揮発性メモリとともに実装されるのか、もしくはキャッシュ・アーキテクチャとともに実装されるのか、またはこれらの両方とともに実装されるのかに関わらず、異なる手法において、それぞれのブロック内のページの数もしくはそれぞれのプレーン内のチャネルの数またはその両方を、所望の手法に応じて変更することができる。本発明を限定することは全く意図されていない例示的な一手法によれば、1つのブロックは256個のページを含むことができるが、さまざまな手法において、1つのブロックは、これよりも多くのまたはこれよりも少数のページを含むことができる。これに類似して、1プレーン当たりのチャネルの数もしくはプレーンの数またはその両方も、所望の手法に応じて変更することができる。
図4をさらに参照すると、ブロック・ストライプ内の同じページ索引を有する全てのページは1つのページ・ストライプを表す。例えば、ページ・ストライプ0は、プレーン0のブロック・ストライプ0内のそれぞれのチャネルの最初のページ(ページ0)を含む。同様に、ページ・ストライプNは、プレーン0のブロック・ストライプ0内のそれぞれのチャネルの最後のページ(ページN)を含む。
前述のとおり、NAND型フラッシュなどのメモリが進歩し続けるにつれて、読出し待ち時間特性も増大し続けている。これは特に、1つのセルに記憶されるビットの数が増えたときにそうである。これは、読出し待ち時間が、ページを読み出すときに印加しなければならない読出ししきい電圧の数に比例して長くなるためである。したがって、いくつかの従来のNAND型フラッシュ・アーキテクチャは、ページ・タイプによってかなりの待ち時間差を示す。例えば、2次元(2D)マルチレベル・セル(multi-level cell)(MLC)メモリは、50から100マイクロ秒(μs)の範囲の平均読出し待ち時間を経験し、3次元(3D)トリプルレベル・セル(triple-level cell)(TLC)メモリは、MLCメモリが経験する平均読出し待ち時間の約1.4倍の平均読出し待ち時間の増加を経験する。さらに、3Dクアッドレベル・セル(quad-level cell)(QLC)メモリは、MLCメモリが経験する平均読出し待ち時間の約2.5倍の平均読出し待ち時間の増加を経験する。
したがって、この傾向の結果として、短い待ち時間をターゲットとしたより大きなストレージ・システムは重大な課題を経験した。例えば、より短い待ち時間を有する既存のNAND型フラッシュ世代はいつか、より多くのデータを記憶することができるが劣った待ち時間特性も有するより新しい世代に取って代わられるであろう。このようなメモリに記憶されたデータを管理するために使用される従来のコントローラも、同様の課題に直面する。
これらの従来の短所とは際立って対照的に、本明細書に含まれる手法のうちのさまざまな手法は、読出しヒート・データ分離をサポートしている書込みキャッシュ・アーキテクチャ内での選択的データ配置を達成することができる。その結果、さまざまなタイプおよびさまざまな世代のメモリに関して、読出し待ち時間が大幅に低減される。これらの改良は、少なくとも部分的に、実世界のワークロード(workload)では通常、スキュー(skew)が生じることを確認した結果として達成される。言い換えると、メモリに記憶されたデータの一部分は比較的に頻繁に読み出されるが、データの他の部分はめったに読み出されない。書込み動作でも同様にスキューが生じる。さらに、データの頻繁に更新される部分とデータの頻繁に読み出される部分は通常、重ならない。言い換えると、データのかなりの部分はメモリに一度書き込まれ、その後にしばしば読み出されるが、例えばログなどのデータの他の部分は、頻繁に上書きされるが、めったに読み出されない。
これに応じて、本明細書に含まれる手法のうちのさまざまな手法は、(例えばTLCおよびQLC NAND型フラッシュなどの)マルチビットパーセル・メモリ内の異なるタイプの物理ページの異なる待ち時間特性を活用して、全体を支配するデータ・ストレージ・システムが経験する読出し待ち時間を全体として大幅に低減させることができる。いくつかの手法では、これらの改良が、例えば後により詳細に説明するようにして、メモリに記憶されたデータの読出しヒートを追跡し、その読出しヒートに従ってメモリ内のデータを選択的に編成することによって達成される。
読出し待ち時間のこれらの改良は、読出しヒート分離をサポートしているいくつかの異なるメモリ構成もしくはコントローラ・アーキテクチャまたはその両方によって達成することができる。例えば、本明細書に記載された手法のうちのいくつかの手法は、マルチビットパーセル・モードだけで構成されたメモリを管理するコントローラ・アーキテクチャ内で実施される。本明細書に示された手法のうちの他の手法は、SLCモードで構成されたメモリおよびマルチビットパーセル・モードで構成されたメモリを管理するハイブリッド・コントローラ・アーキテクチャ内で実施される。いくつかの手法ではさらに、これらの2つのメモリ構成が同じストレージ・デバイス内に実装される。
本発明を限定することは全く意図されていないそのような一手法に従って、図5Aは、マルチビットパーセル・モードだけで構成されたメモリを管理するコントローラ・アーキテクチャを実装したデータ・ストレージ・システム500を示している。一選択肢として、このデータ・ストレージ・システム500は、図1~4などの他の図を参照して説明した特徴など、本明細書に記載された他の手法の特徴とともに実施することができる。しかしながら、このようなデータ・ストレージ・システム500および本明細書に示された他のデータ・ストレージ・システムは、本明細書に記載された例示的な手法の中で特に説明されていることもありまたは説明されていないこともあるさまざまな用途もしくは置き換えまたはその両方で使用することができる。さらに、本明細書に示されたデータ・ストレージ・システム500は、所望の任意の環境で使用することができる。したがって、図5A(および残りの図)は、可能な一切の置き換えを含むと考えることができる。
示されているとおり、データ・ストレージ・システム500は、読出しヒート・カウンタ・モジュール504およびデステージ・バッファ506に結合された読出しヒート分離ユニット502を含む。読出しヒート分離ユニット502はさらに、メモリ・モジュール516に含まれているいくつかの書込み待ち行列508、510、512、514に結合されている。さらに、書込み待ち行列508、510、512、514の中に蓄積されたそれぞれの書込みリクエストは、デステージ・バッファ506内のエントリ位置(entry location)のうちの陰影がつけられた1つのエントリ位置に対応する。
この手法に従って、データ・ストレージ・システム500の上述の構成要素は、コントローラ518の中に実装されているものとして示されている。しかしながら、このことが本発明を限定することは全く意図されていない。例えば、他の手法では、読出しヒート分離ユニット502、読出しヒート・カウンタ・モジュール504、デステージ・バッファ506もしくはメモリ・モジュール516、またはこれらの組合せにコントローラを単純に結合すること、例えばコマンド、リクエスト、命令などをこれらの構成要素間で転送することができるような態様で結合することができる。
時間の経過とともに、読出しヒート分離ユニット502は、1つまたは複数のホスト、実行中のアプリケーション、他のストレージ・システムなどから書込みリクエストを受け取る。これらの書込みリクエストは通常、新しい書込みリクエスト(本明細書では「ホスト書込みリクエスト」とも呼ぶ)であるか、または再配置書込みリクエストであるかのいずれかである。新しい書込みリクエストは、新しいデータをメモリに最初に書き込むことを含み、再配置書込みリクエストは、既にメモリに記憶されているデータを書き換えることを含む。これらの書込みリクエストは、読出しヒート分離ユニット502によって受け取られ、ふるい分けされ、好ましくは、どのタイプの書込みリクエストを受け取ったのかに基づいて適切な処置をとることができるように、ふるい分けされる(例えば下の図5Bの方法550を参照されたい)。
続けて図5Aを参照すると、書込み待ち行列508、510、512、514はそれぞれ、物理メモリ532内の例示的なページ・ストライプ520、522、524、526からなる対応するそれぞれのオープン・ブロック・ストライプ(open block stripe)528に対応するものとして示されている。これらのオープン・ページ・ストライプ520、522、524、526はそれぞれ、(例えばNAND型フラッシュなどの)不揮発性メモリのいくつかのブロック530を横切って延びており、ページ・ストライプ520、522、524、526内のページは同じタイプである。本発明を限定することは全く意図されていない一例によれば、メモリ532は、その中のメモリ・セルの物理構造に起因する異なる4つのタイプのページを含む3D QLCメモリである。これらのページ・タイプは、下位ページ(lower page)、上位ページ(upper page)、エクストラ・ページ(extra page)およびトップ・ページ(top page)を含み、これらのページはそれぞれ異なる性能特性を有する。ブロック内のページ・タイプおよびそれらの対応するそれぞれの順序配列(sequence arrangement)は、デバイスの世代間および製造業者間で異なりうる不揮発性メモリ(例えばNAND型フラッシュ・メモリ)デバイス構造に関係している。しかしながら、ブロック内の同じページ索引を有するページは通常、同じタイプである。例えばこの説明を読んだ後の当業者には理解されるであろうが、例えば、異なるタイプの物理ページは、それらのページの対応するそれぞれの物理構造、およびこれに起因する、それぞれのページからデータを実際に読み出すことに関係する異なるプロセスのために、異なる量の読出し待ち時間を経験する。しかしながら、別の例によれば、メモリ532が、その中のメモリ・セルの物理構造に起因する異なる3つのタイプのページを含む3D TLCメモリである。
それぞれの書込み待ち行列508、510、512、514と対応するそれぞれのオープン・ページ・ストライプ520、522、524、526との間の関係を確立することにより、システム500は、読出し待ち時間と読出しヒートとの間に存在すると識別されたこの関係を利用することによって、動作効率を向上させることができる。言い換えると、所与のページ・タイプのページに関連する読出し待ち時間を使用して、それらのページに割り当てる書込み待ち行列を、対応する読出しヒートに基づいて選択することができる。その際に、本明細書に含まれる手法は、システム500が経験する処理遅延の全体量を全体として望ましく低減させることができる。したがって、通常は、実装される読出しヒート従属の書込み待ち行列の数が、NAND型フラッシュ・メモリ・ブロック内に存在するページ・タイプの数と一致していることが好ましい。
本発明を限定することは全く意図されていない一例によれば、オープン・ページ・ストライプ520は、いくつかのブロック530を横切って延びており、オープン・ページ・ストライプ520に含まれるページは全てQLCメモリ内の下位ページである。下位ページは、QLCメモリ内に存在する他のタイプのページとの比較で、最も短い平均読出し待ち時間を有するページとして特徴づけられているため、オープン・ページ・ストライプ520は、より高い(例えばよりホットな)読出しヒートを有するデータを含む書込みリクエストに対して指定された書込み待ち行列に割り当てられることが好ましい。これに応じて、オープン・ページ・ストライプ520に書き込まれたデータはおそらく多数の読出し動作を経験することになるが、データが記憶されたページ・タイプに対応するより短い平均読出し待ち時間は、この多数の読出し動作を相殺するであろう。
やはり本発明を限定することは全く意図されていない別の例では、オープン・ページ・ストライプ524が、いくつかのブロックを横切って延びており、オープン・ページ・ストライプ524に含まれるページは全てQLCメモリ内のエクストラ・ページである。エクストラ・ページは、QLCメモリ内に存在する他のタイプのページとの比較で、2番目に長い平均読出し待ち時間を有するページとして特徴づけられているため、オープン・ページ・ストライプ524は、2番目に低い(例えば2番目にコールドな)読出しヒートを有するデータを含む書込みリクエストに対して指定された書込み待ち行列に割り当てられることが好ましい。これに応じて、オープン・ページ・ストライプ524に書き込まれたデータはおそらく比較的に少数の読出し動作を経験し、この比較的に少数の読出し動作は、このようなページに対する読出し動作を実際に実施することに関係する比較的に長い読出し待ち時間を相殺するであろう。
したがって、本明細書に含まれるさまざまな手法は、経験する読出し待ち時間の全体量を低減させることができる。この場合も、この低減が、メモリ内の選択の物理ページ・タイプを、それに関連する選択の読出しヒートを有するデータと相関させることによって(少なくとも部分的に)達成される。その結果として、このことは、このシステムが、メモリ内のより長い読出し待ち時間を有する物理ページに、より低い読出しヒートを有するデータを記憶することにより、それらのページを補償すること、およびメモリ内のより短い読出し待ち時間を有する物理ページに、より高い読出しヒートを有するデータを記憶することにより、それらのページを活用することを可能にする。
さらに、次に図5Bを参照すると、一手法による、上述のデータ・ストレージ方式に従ってデータをメモリに記憶する方法550の流れ図が示されている。方法550に含まれるプロセスは、図5Aのデータ・ストレージ・システム500に導入されたコントローラ・アーキテクチャに関して説明したものであることに留意すべきである。言い換えると、方法550に含まれるさまざまなプロセスは、書込みリクエストを受け取ったことに応答した図5Aのコントローラ518によって、例えばすぐ後に明らかになるようなやり方で実行することができる。しかしながら、さまざまな手法において、方法550は、本発明に従って、とりわけ図1~4に示されたいずれかの環境で実行することができる。この説明を読んだ当業者には理解されるであろうが、当然ながら、方法550には、図5Bに明記された動作よりも多くの動作またはそれよりも少数の動作を含めることができる。
方法550のステップはそれぞれ、この動作環境の適当な任意の構成要素によって実行することができる。例えば、さまざまな手法において、方法550は、コントローラ、プロセッサ、コンピュータなどによって、または1つもしくは複数のプロセッサを含む他のなんらかのデバイスによって部分的にまたは完全に実行することができる。したがって、いくつかの手法では、方法550を、コンピュータ実施方法とすることができる。このような手法では、この方法を実施するために使用されるコンピュータが、不揮発性メモリ・カード自体またはコントローラ、不揮発性メモリなどの不揮発性メモリ・カードの部分、外部ホスト、サーバなどを含むことができる。さらに、本明細書のいずれの手法に関しても、コンピュータ、プロセッサおよびコントローラという用語は相互に交換可能に使用されることがあり、本発明の多くのさまざまな置き換えでは、このような構成要素が等価物とみなされる。
さらに、プロセッサを有する手法に関しては、そのプロセッサを、例えば、ハードウェアもしくはソフトウェアまたはその両方として実装された、好ましくは少なくとも1つのハードウェア構成要素を有する処理回路、チップもしくはモジュールまたはこれらの組合せを任意のデバイスで利用して、方法550の1つまたは複数のステップを実行することができる。例示的なプロセッサは、限定はされないが、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、もしくはこれらの組合せ、または当技術分野で知られている他の適当なコンピューティング・デバイスを含む。
図5Bに示されているとおり、方法550の動作552は、書込みリクエストを受け取ることを含む。いくつかの手法では、新しい書込みリクエストおよび再配置書込みリクエストが、読出しヒート分離ユニット(例えば図5Aの502参照)によって受け取られる。さらに、手法に応じて、書込みリクエストは、1つまたは複数のホストから受け取ること、実行中のアプリケーションから受け取ること、ネットワークを横切って他のストレージ・システムから受け取ることなどができる。さらに、受け取る書込みリクエストは通常、新しい書込みリクエスト(本明細書では「ホスト書込みリクエスト」とも呼ぶ)であるか、または内部再配置書込みリクエストであるかのいずれかである。上述のとおり、新しい書込みリクエストは、新しいデータをメモリに最初に書き込むことを含み、再配置書込みリクエストは、既にメモリに記憶されているデータを書き換えることを含む。
図5Aのデータ・ストレージ・システムの文脈における一例によれば、再配置書込みリクエストは、QLCメモリ532の1つまたは複数の物理ページに記憶されたデータを、QLCメモリ532の1つまたは複数の異なる物理ページに再配置することを含む。しかしながら、別の例(例えば下記の方法750参照)では、再配置書込みリクエストが、SLCメモリの1つもしくは複数の物理ページに記憶されたデータを、SLCメモリの1つもしくは複数の異なる物理ページに再配置することを含み、または、別の例(例えば下記の方法750参照)では、再配置書込みリクエストが、SLCメモリの1つもしくは複数の物理ページとQLCメモリの1つもしくは複数の物理ページとの間でデータを再配置することを含む。
再び方法550を参照すると、流れ図は動作554に進み、動作554は、受け取った書込みリクエストをデステージ・バッファに蓄積することを含む。手法に応じて、デステージ・バッファは、MRAM、バッテリ・バックアップ型DRAMなどを使用して実装されたもの、または他の所望のタイプのメモリを使用して実装されたものとすることができる。さらに、動作556で、それぞれの書込みリクエストに応答する。書込みリクエストに対する応答は、手法に応じて、書込みリクエストがデステージ・バッファに追加されたことを示すメッセージを書込みリクエストの送信側に返すこと、LPTを更新することなどによって実施することができる。
さらに、動作558は、書込みリクエストによるデータ参照に対応するそれぞれの論理ページの現在の読出しヒート値を決定することを含む。言い換えると、それぞれの書込みリクエストは、データの特定の部分を含み、もしくはデータの特定の部分に対応し、またはその両方である。再配置書込みリクエストを含む手法では、書込みリクエストの中に指定されたデータが、既にメモリに記憶されているデータに対応する。さらに、書込みリクエストの中に指定されたデータが記憶されている論理ページが、それに関連する読出しヒートを有する(例えば図5Aの読出しヒート・カウンタ・モジュール504参照)。これに応じて、動作558は、書込みリクエストの中に指定されたデータに関連する現在の読出しヒート値を決定することを含む。
続けて図5Bの方法550を参照すると、動作560は、書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値に基づいて、それぞれの書込みリクエストをそれぞれの書込み待ち行列に割り当てることを含む。上述のとおり、それぞれの書込み待ち行列は、物理ページを含む異なるページ・タイプに対応し、対応するそれぞれのページ・ストライプに含まれる物理ページは同じタイプである。これに応じて、それぞれの書込み待ち行列は、メモリ内の対応するそれぞれのタイプの物理ページと対をなす。この相関関係は、読出しヒートと読出し待ち時間との間の関係に基づいて確立されていることが好ましい。この場合も、所与のページ・ストライプの中の物理ページのタイプに関連する読出し待ち時間を使用して、それに割り当てられる書込み待ち行列を、対応する読出しヒートに基づいて選択することができる。その際に、本明細書に含まれるいくつかの手法は、メモリ内のより長い読出し待ち時間を有する物理ページに、より低い読出しヒートを有するデータを記憶することにより、それらのページを補償すること、およびメモリ内のより短い読出し待ち時間を有する物理ページに、より高い読出しヒートを有するデータを記憶することにより、それらのページを活用することができる。その結果として、これらの手法は、経験する処理遅延の全体量を全体として望ましく低減させることができる。
さらに、判断562は、いずれかの書込み待ち行列が、その待ち行列に対応するメモリ内の対応するそれぞれのページ・ストライプを満たすのに十分な数の書込みリクエストを含むかどうかを判定することを含む。ストレージ容量が効率的に利用されるように、メモリに書き込むときには、そのページ・ストライプ全体が満たされることが望ましい。しかしながら、所与のページ・ストライプを満たすプロセスは特定の手法によって異なってもよい。いくつかの手法では、判断562が、いずれかの書込み待ち行列が、その書込み待ち行列に含まれるデータがメモリ内の対応するページ・ストライプの所定の量を満たすことができるような十分な数の書込みリクエストを含むかどうかを判定することを含むことができる。
例えば、判断562は、いずれかの書込み待ち行列が、その書込み待ち行列に含まれるデータが、メモリ内の対応するページ・ストライプに記憶されたときに、そのページ・ストライプのストレージ容量の95%を利用するであろう十分な数の書込みリクエストを含むかどうかを判定することを含むことができる。書き込むときにはそれぞれのページ・ストライプが完全に満たされることが好ましいが、他の1つまたは複数の書込み待ち行列の書込みリクエストを使用して、所与のページ・ストライプの残りの部分を満たすことができる。上記の例によれば、隣接する書込み待ち行列の中に蓄積された書込みリクエストによって、メモリ内の対応するページ・ストライプの残りの5%を満たすことができ、それによってストレージ容量を利用する効率を増大させることができる。
したがって、判断562でなされる具体的な判定は特定の手法によって異なってもよい。例えば、書込み待ち行列508、510、512、514を異なる率で満たしてもよい。しかしながら、効率的な実行および信頼性を達成するために、ブロック内では、ページを飛ばすことなく特定の順序でページをプログラムすべきである。さらに、所与のオープン・ブロック・ストライプに関して、それぞれのページ・タイプのページの数は、メモリ・デバイスの物理アーキテクチャによって予め決められている。これに応じて、所与の書込み待ち行列の中に新しい書込みリクエストが蓄積するのを待たずにデータをデステージする他の選択肢が使用可能である。例えば、書込みリクエスト待ち行列のバランスをより適切にするために、動作560は、最適な書込み待ち行列ではない書込み待ち行列に書込みリクエストを入れることを含むことができる。
別の例では、動作564が、直接に関連する書込み待ち行列の中の書込みリクエストの数が不十分であるときに、隣接する書込み待ち行列の書込みリクエストを転用することを含むことができる。いくつかの手法によれば、所与の書込み待ち行列が、その書込み待ち行列に対応する次のページ・ストライプを満たすのに十分なデータを、対応するそれぞれの書込みリクエストの中に含まないと判定したことに応答して、隣接する書込み待ち行列が、所与の書込み待ち行列に対応する次のページ・ストライプを満たすことを完了するのに十分なデータを、対応するそれぞれの書込みリクエストの中に含むかどうかについての判定が実行される。さらに、隣接する書込み待ち行列が、所与の書込み待ち行列に対応する次のページ・ストライプを満たすことを完了するのに十分なデータを、対応するそれぞれの書込みリクエストの中に含むと判定したことに応答して、所与の書込み待ち行列および隣接する書込み待ち行列から、所与の書込み待ち行列に対応する次のページ・ストライプに、書込みリクエストの中のデータがデステージされる。
図5Bをさらに参照すると、書込み待ち行列が、メモリ内の次のページ・ストライプを満たすのに十分な量のデータを、書込み待ち行列の書込みリクエストの中に含まないと判定したことに応答して、方法550は動作552に戻り、追加の書込みリクエストを、本明細書に記載されたとおりに受け取り、処理することができるようにする。しかしながら、書込み待ち行列が、メモリ内の次のページ・ストライプを満たすのに十分な量のデータを、書込みリクエストの中に含むと判定したことに応答して、方法550は動作564に進む。動作564は、書込み待ち行列から、それぞれのページ・ストライプに、書込みリクエストの中のデータをデステージすることを含む。
再び図5Aを短く参照すると、いくつかの手法では、所与のオープン・ブロック・ストライプ528に関して、それぞれのページ・タイプのページの数が、不揮発性メモリ・デバイスの物理アーキテクチャによって与えられる。したがって、ある時点において、書込み待ち行列508、510、512、514のうちの1つの書込み待ち行列の中の残りの書込みリクエストの数が、その書込み待ち行列に関連する次のページ・ストライプを書き込むのに十分ではないが、全体では、単一のページ・ストライプを書き込むのに十分な数の書込みリクエストが存在するということが起こりうる。この場合、図5Bの動作564は、直接に関連する書込み待ち行列の中に、対応するそれぞれのページ・ストライプを満たすための書込みリクエストが残っていないときに、隣接する書込み待ち行列または他の任意の書込み待ち行列から書込みリクエストを持ってくることができる。この状況を経験するリスクをさらに低減させるため、動作560は、待ち行列レベルのバランスをより適切にするために、(例えば、現在の書込み待ち行列がしきい値を超えたときに、書込みリクエストを、隣接する書込み待ち行列または他の任意の書込み待ち行列に入れることによって、)書込みリクエストを最適ではない形で配置することもできる。書込みリクエストの中のデータを書込み待ち行列からデステージするプロセスは、書込み動作を実際に実行することを含むことにも留意すべきである。例えばこの説明を読んだ後の当業者には理解されるであろうが、言い換えると、書込みリクエストの中のデータを書込み待ち行列からデステージする動作は、メモリ内の物理ページに実際にデータを書き込むことを含む(または少なくとも、データを書き込むことをトリガする)。
動作564から、方法550はやはり動作552に戻り、追加の書込みリクエストを、本明細書に記載されたとおりに受け取り、処理することができるようにする。したがって、現在のデステージ動作が成功のうちに実施される前に、書込みリクエストを実行することを求める後続のリクエストを受け取ることができる。この後続のリクエストは、例えば方法550に従って受け取られ、処理されることが好ましい。
同様に、いつでも、例えば書込みリクエストが処理されている間に、もしくは書込み動作自体が実行されている間に、またはその両方の間に、読出し動作リクエストを受け取ることができる。図5Cは、一手法による、受け取った読出しリクエストを評価する方法570を示している。方法570も、図5Aのデータ・ストレージ・システム500に導入されたコントローラ・アーキテクチャに関して説明したものであることに留意すべきである。言い換えると、方法570に含まれるさまざまなプロセスは、読出しリクエストを受け取ったことに応答した図5Aのコントローラ518によって、例えばすぐ後に明らかになるようなやり方で実行することができる。しかしながら、さまざまな手法において、方法570は、本発明に従って、とりわけ図1~4に示されたいずれかの環境で実行することができる。この説明を読んだ当業者には理解されるであろうが、当然ながら、方法570には、図5Cに明記された動作よりも多くの動作またはそれよりも少数の動作を含めることができる。
方法570のステップはそれぞれ、この動作環境の適当な任意の構成要素によって実行することができる。例えば、さまざまな手法において、方法550は、コントローラ、プロセッサなどによって、または1つもしくは複数のプロセッサを含む他のなんらかのデバイスによって部分的にまたは完全に実行することができる。プロセッサを、例えば、ハードウェアもしくはソフトウェアまたはその両方として実装された、好ましくは少なくとも1つのハードウェア構成要素を有する処理回路、チップもしくはモジュールまたはこれらの組合せを任意のデバイスで利用して、方法570の1つまたは複数のステップを実行することができる。例示的なプロセッサは、限定はされないが、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、もしくはこれらの組合せ、または当技術分野で知られている他の適当なコンピューティング・デバイスを含む。
図5Cに示されているとおり、方法570の動作572は、1つまたは複数の論理ページに記憶されたデータに対応する読出しリクエストを受け取ることを含む。読出しリクエストは、手法に応じてホスト(例えばユーザ)、実行中のアプリケーション、別のストレージ・システムなどから受け取ることができる。さらに、動作574は、受け取った読出しリクエストに対応する1つまたは複数の論理ページのそれぞれに関連する読出しヒート値を増分することを含む。上述のとおり、論理ページはそれぞれ、その論理ページに対応する読出しヒート値を有することが好ましい。再び図5Aを短く参照すると、いくつかの手法では、読出しヒート・カウンタ・モジュール504が、メモリ内のそれぞれの論理ページの現在の読出しヒート値を維持する役割を担う。代替手法では、カウンタ・モジュール504が、連続した1つの範囲の論理ページに対する単一のカウンタを維持することができる。
読出しヒート値は、手法に応じて、論理レベルでもしくは物理レベルで、またはその両方で管理することができる。例えば、LPTは、そのLPTの中に示されたそれぞれの論理ページに対する1つまたは複数のビットを含むことができ、それらのビットは、対応するそれぞれの論理ページに対する現在の読出しヒート値を維持する。本発明を限定することは全く意図されていない一例によれば、論理ブロック・アドレスごとに1つの2ビット・カウンタが実装される。それぞれの2ビット・カウンタは、その2ビット・カウンタに記憶されたデータに対応する読出しリクエストを受け取ったことに応答して値0から値1に増分される。さらに、それぞれの2ビット・カウンタは、所定の確率に従って値1から値2に増分される。例えば、所与の2ビット・カウンタは、その2ビット・カウンタに記憶されたデータに対応する読出しリクエストを受け取ったことに応答してその2ビット・カウンタが値1から値2に増やされる1/10(10%)の確率を有する。同様に、それぞれの2ビット・カウンタは、別の所定の確率に従って値2から値3に増分される。例えば、所与の2ビット・カウンタは、その2ビット・カウンタに記憶されたデータに対応する読出しリクエストを受け取ったことに応答してその2ビット・カウンタが値2から値3に増やされる1/100(1%)の確率を有する。このようにして、それぞれの2ビット・カウンタは、システムが記憶するメタデータの量を大幅に増大させることなしに、その2ビット・カウンタに対応するデータの正確な読出しヒートを維持することができる。
したがって、いくつかの手法ではさらに、対応する物理ページに実際に含まれるデータに基づく論理ページの読出しヒート値を維持するために、読出しヒート・カウンタ・モジュール504がLPTにアクセスすることができる。いくつかの手法では、カウンタ分解能を増大させるために、1つの範囲の隣接する論理ブロック・アドレスを集約することもできる。しかしながら、そのような状況では、対応するそれぞれのページの上書きを経験したときに、それぞれのカウンタの値をリセットすべきではないことに留意すべきである。そうせずに、むしろ、バックグラウンドで、例えば所定のカウンタ管理方式に従ってカウンタ値を定期的に減分することができる。ホスト書込みリクエストを実行したときに読出しヒート値をリセットすべきか否かを判定する際に、他の因子を考慮することもできる。これらの追加の因子は、全く限定はされないが、検出されたワークロード優先度(detected workload priority)、ストレージ・システム・アーキテクチャ(例えばログ構造化アレイが実装されていることを知っていること)、読出しヒート情報を定期的にエージング(aging)することが実行可能な選択肢であるかどうか、などを含む。
物理レベルで管理される読出しヒート値を実施する手法に関しては、いくつかの異なるやり方でカウンタを適用することができる。例えば、物理メモリ内のページ・タイプおよびブロックごとに高分解能カウンタを維持することができる。言い換えると、QLCメモリ・ブロックごとに4つのカウンタが実装される。他の状況では、ページ・タイプ、層およびブロックごとに高分解能カウンタが維持される。他の状況では、それぞれのブロックの細粒状ページ群(fine granular page group)ごとに低分解能カウンタを実装することができる。したがって、カウンタによって物理レベルで管理された読出しヒート値を使用して、データ配置の誤り(data misplacement)の検出を改善することができる。このデータ配置の誤りの検出を、書込みリクエストを書込み待ち行列に割り当てる動作560で活用すること、または、このデータ配置の誤りの検出を、誤って配置されたこのようなデータを再配置するためにガベージ・コレクタ(例えば図3の304参照)によって使用することができる。
別の手法では、現在の読出しヒート値を維持するために使用されるカウンタのうちの任意のカウンタを、所望のタイプの飽和カウンタ(saturating counter)とすることができる。例えばこの説明を読んだ後の当業者には理解されるであろうが、この読出しヒート・カウンタを使用して、(例えば内部緩和読出し(internal mitigation read)動作、アレイ・レベル・スクラビング(array-level scrubbing)などの)シーケンシャル・スキャン(sequential scan)、もしくは較正読出し(calibration read)、またはその両方をフィルタリングすることができる。シーケンシャル・スキャンもしくは較正読出しまたはその両方をフィルタリングすることによって、読出しヒート・カウンタは、読出しカウンタ値が意図せずに増大することを防ぐことができる。さらに、いくつかの手法では、論理ページ・レベルと物理ページ・レベルの両方でカウンタを実装することができ、カウンタを組み合わせること、例えば所望のとおりに組み合わせることもできる。
再び図5Cを参照すると、方法570はさらに、最初に受け取った読出しリクエストに応答してデータを読み出し、そのデータを提供することにより、読出しリクエストを履行することを含む。動作576を参照されたい。例えば、この最初の読出しリクエストはホストから受け取ったものであることがあり、それによって、メモリから読み出されたデータは、読出しリクエストを発出したホストに提供される(例えば送られる)。
したがって、方法550および570に含まれるさまざまなプロセスは、(例えばMLC、TLCおよびQLC NAND型フラッシュなどの)マルチビットパーセル・メモリ内の異なるタイプの物理ページの異なる待ち時間特性を活用して、全体を支配するデータ・ストレージ・システムが経験する読出し待ち時間を全体として大幅に低減させることができる。いくつかの手法では、これらの改良が、例えば上記のいずれかの手法に従って、メモリに記憶されたデータの読出しヒートを追跡し、その読出しヒートに従ってメモリ内のデータを選択的に編成することによって達成される。
次に図6Aを参照すると、一手法による、上記の図5Aに示されたコントローラ・アーキテクチャに似たコントローラ・アーキテクチャを実装したデータ・ストレージ・システム600が示されている。詳細には、図6Aは、データ・ストレージ・システム600内のいくつかの例示的な構成を示す、図5Aの手法の変形形態を示している。これに応じて、図6Aのさまざまな構成要素は、図5Aの構成要素と共通の符号を有する。
一選択肢として、このデータ・ストレージ・システム600は、図1~5Aなどの他の図を参照して説明した特徴など、本明細書に記載された他の手法の特徴とともに実施することができる。しかしながら、このようなデータ・ストレージ・システム600および本明細書に示された他のデータ・ストレージ・システムは、本明細書に記載された例示的な手法の中で特に説明されていることもありまたは説明されていないこともあるさまざまな用途もしくは置き換えまたはその両方で使用することができる。さらに、本明細書に示されたデータ・ストレージ・システム600は、所望の任意の環境で使用することができる。したがって、図6A(および残りの図)は、可能な一切の置き換えを含むと考えることができる。
示されているとおり、データ・ストレージ・システム600によって受け取られたホスト書込みリクエストは、図5Aに示されているように読出しヒート分離ユニット502によって受け取られるのではなく、デステージ・バッファ506内へ直接に送られる。この手法における、ホスト書込みリクエストがコントローラ604によって取り扱われる方式のこの違いは、メモリ内にまだ存在しておらず、したがって関連する読出しヒートを持たないデータ(例えば新しいデータまたは上書きされたデータ)をホスト書込みリクエストが含むことに由来する。受け取ったそれぞれのホスト書込みリクエストに対する読出しヒート・カウンタを読出しヒート・カウンタ・モジュール504内に確立することができるが、ホスト書込みリクエストの中のデータを最終的にメモリにおいてどこに記憶するかを判定する際に、読出しヒートは役割を果たさない。むしろ、ホスト書込みリクエストは補足書込み待ち行列602に蓄積される。したがって、補足書込み待ち行列602は、ホスト書込みリクエストを記憶するためだけに指定されており、ホスト書込みリクエストは次いで、他の書込み待ち行列が満たすことができなかった可能性があるブロック・ストライプの間隙を、例えば図6Aの矢印によって示されているように、また、すぐ後に明らかになるようなやり方で満たすために使用される。
次に図6Bを参照すると、一手法による、上述のデータ・ストレージ方式に従ってデータをメモリに記憶する方法650の流れ図が示されている。方法650に含まれるプロセスは、図6Aのデータ・ストレージ・システム600に導入されたコントローラ・アーキテクチャに関して説明したものであることに留意すべきである。言い換えると、方法650に含まれるさまざまなプロセスは、書込みリクエストを受け取ったことに応答した図6Aのコントローラ604によって、例えばすぐ後に明らかになるようなやり方で実行することができる。しかしながら、さまざまな手法において、方法650は、本発明に従って、とりわけ図1~5Aに示されたいずれかの環境で実行することができる。この説明を読んだ当業者には理解されるであろうが、当然ながら、方法650には、図6Bに明記された動作よりも多くの動作またはそれよりも少数の動作を含めることができる。
方法650のステップはそれぞれ、この動作環境の適当な任意の構成要素によって実行することができる。例えば、さまざまな手法において、方法650は、コントローラ、プロセッサ、コンピュータなどによって、または1つもしくは複数のプロセッサを含む他のなんらかのデバイスによって部分的にまたは完全に実行することができる。したがって、いくつかの手法では、方法650を、コンピュータ実施方法とすることができる。このような手法では、この方法を実施するために使用されるコンピュータが、不揮発性メモリ・ドライブ自体またはコントローラ、不揮発性メモリなどの不揮発性メモリ・ドライブの部分、外部ホスト、サーバなどを含むことができる。さらに、本明細書のいずれの手法に関しても、コンピュータ、プロセッサおよびコントローラという用語は相互に交換可能に使用されることがあり、本発明の多くのさまざまな置き換えでは、このような構成要素が等価物とみなされる。
さらに、プロセッサを有する手法に関しては、そのプロセッサを、例えば、ハードウェアもしくはソフトウェアまたはその両方として実装された、好ましくは少なくとも1つのハードウェア構成要素を有する処理回路、チップもしくはモジュールまたはこれらの組合せを任意のデバイスで利用して、方法650の1つまたは複数のステップを実行することができる。例示的なプロセッサは、限定はされないが、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、もしくはこれらの組合せ、または当技術分野で知られている他の適当なコンピューティング・デバイスを含む。
図6Bに示されているとおり、方法650の動作652は、書込みリクエストを受け取ることを含む。いくつかの手法では、新しい書込みリクエストおよび再配置書込みリクエストが受け取られる。これに応じて、判断654は、それぞれの書込みリクエストがホスト書込みリクエストであるのかまたは再配置書込みリクエストであるのかを判定することを含む。上述のとおり、新しい書込みリクエストは、新しいデータをメモリに最初に書き込むことを含み、再配置書込みリクエストは、既にメモリに記憶されているデータを書き換えることを含む。
所与の書込みリクエストがホスト書込みリクエストであると判定したことに応答して、方法650は動作656に進み、動作656は、例えば上で説明したいずれかの手法に従って、ホスト書込みリクエストをデステージ・バッファに記憶することを含む。さらに、動作658は、デステージ・バッファ内のホスト書込みリクエストを補足書込み待ち行列に割り当てることを含む。上述のとおり、好ましい手法では、補足書込み待ち行列(例えば図6Aの602参照)が、ホスト書込みリクエストを蓄積するためだけに使用される。
さらに、動作660は、補足書込み待ち行列から、ブロック・ストライプのうちのいずれかのブロック・ストライプ内の物理ページに、ホスト書込みリクエストの中のデータをデステージすることを含む。上述のとおり、ホスト書込みリクエストに含まれるデータは、他の書込み待ち行列が満たすことができなかった可能性がある間隙を満たすために使用されることが好ましい。これに応じて、所望のとおりに、例えば、待ち行列が十分に満たされたと判定したことに対する応答としてではなく、補足書込み待ち行列から、ホスト書込みリクエストの中のデータをデステージすることができる。
さらに、方法650は、ホスト書込みリクエストの中のデータがデステージされた物理ページにマップする論理ページの現在の読出しヒート値をリセットすることを含む。動作662を参照されたい。上述のとおり、ホスト書込みリクエストは、メモリにまだ記憶されておらず、したがって関連する読出しヒートを持たないデータを含む。したがって、ホスト書込みリクエストの中のデータがメモリの1つまたは複数のページに記憶されたとき、上書きされたその1つまたは複数のページに関連する以前の読出しヒート値は、たった今、その1つまたは複数のページに記憶されたデータの読出しヒートをもはや正確には表していない。例えばこの説明を読んだ後の当業者には理解されるであろうが、ホスト書込みリクエストの中のデータがデステージされた物理ページにマップする論理ページの現在の読出しヒート値をリセットすることによって、ホスト書込みリクエストは、正確な読出しヒート値の追跡を開始することができる。例えばこの説明を読んだ後の当業者には理解されるであろうが、このことは通常、読出しホット・データ・セットと書込みホット・データ・セットとが実質的に異なるとき(これらのデータ・セット間の重なりがほとんどないとき)、もしくはログ構造化アレイが実装されているとき、またはその両方であるときに事実である。しかしながら、読出しホット・データ・セットと書込みホット・データ・セットとの重なりの量がかなり大きい場合には、ホスト書込みを実行したことに応答して読出しヒート値をリセットしなくてもよいことに留意すべきである。リセットせずに、時間の経過に伴って、読出しヒート値を、例えば任意のタイプの所定の方式に従って減分することができる。
動作662から、方法650は動作663に進み、動作663で、補足書込み待ち行列が十分に満たされているかどうかを判定する。補足書込み待ち行列が十分に満たされていると判定された場合、方法650は動作674に進む。十分には満たされていない場合、方法650は動作652に戻り、追加の書込みリクエストを、本明細書に記載されたとおりに受け取り、処理することができるようにする。したがって、現在のデステージ動作が成功のうちに実施される前に、書込みリクエストを実行することを求める後続のリクエストを受け取ることができる。この後続のリクエストは、例えば方法650に従って受け取られ、処理されることが好ましい。
判断654に戻る。所与の書込みリクエストが再配置書込みリクエストであると判定したことに応答して、方法650は動作664に進む。動作664は、再配置書込みリクエストをデステージ・バッファに記憶することを含む。言い換えると、再配置書込みリクエストがデステージ・バッファに割り当てられる。上述のとおり、手法に応じて、デステージ・バッファは、MRAM、バッテリ・バックアップ型DRAMなどを使用して実装されたもの、または他の所望のタイプのメモリを使用して実装されたものとすることができる。さらに、動作666で、それぞれの書込みリクエストに応答する。書込みリクエストに対する応答は、手法に応じて、書込みリクエストがデステージ・バッファに追加されたことを示すメッセージを書込みリクエストの送信側に返すこと、LPTを更新することなどによって実施することができる。
動作668は、書込みリクエストによるデータ参照に対応するそれぞれの論理ページの現在の読出しヒート値を決定することを含む。さらに、動作670は、書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値に基づいて、それぞれの書込みリクエストをそれぞれの書込み待ち行列に割り当てることを含む。これは、方法550の動作560に関して上で説明したいずれかの手法に従って達成することができる。例えば、読出しヒート値は、論理レベルで(例えばLPT内で)もしくは物理レベルで、またはその両方で管理することができる。
図6Bをさらに参照すると、判断672は、いずれかの書込み待ち行列が、その待ち行列に対応するメモリ内の対応するそれぞれのページ・ストライプを満たすのに十分な量のデータを、書込みリクエストの中に含むかどうかを判定することを含む。ストレージ容量が効率的に利用されるように、メモリに書き込むときには、そのページ・ストライプ全体が満たされることが望ましい。書き込むときには、それぞれのページ・ストライプが完全に満たされることが好ましいが、いくつかの手法では、判断672が、いずれかの書込み待ち行列が、メモリ内の対応するページ・ストライプの所定の量を満たすのに十分な量のデータを、書込みリクエストの中に含むかどうかを判定することを含むことができる。例えば、判断672は、いずれかの書込み待ち行列が、その書込み待ち行列に含まれるデータが、メモリ内の対応するブロック・ストライプのストレージ容量の95%を利用することができる十分な数の書込みリクエストを含むかどうかを判定することを含むことができる。この例では、補足書込み待ち行列の中に蓄積されたホスト書込みリクエストの中のデータを使用して、メモリ内の対応するブロック・ストライプの残りの5%を満たすことができ、それによってストレージ容量を利用する効率を増大させることができる。あるいは、例えば上で説明したように、隣接する書込み待ち行列または他の任意の書込み待ち行列の書込みリクエストを使用して、残りのメモリを満たすこともできる。
書込み待ち行列が、メモリ内の次のページ・ストライプを満たすのに十分な量のデータを、書込み待ち行列の書込みリクエストの中に含まないと判定したことに応答して、方法650は、動作652に戻って、追加の書込みリクエストを、本明細書に記載されたとおりに受け取り、処理することができるようにする前に、直接に関連する書込み待ち行列の中に、対応するそれぞれのページ・ストライプを満たすための書込みリクエストが残っていないが、ページ・ストライプを満たすのに十分な書込みリクエストが依然として存在するときには、隣接する書込み待ち行列または他の任意の書込み待ち行列から書込みリクエストを持ってくると決めることができる。しかしながら、書込み待ち行列が、メモリ内の対応するそれぞれのページ・ストライプを満たすのに十分な量のデータを、書込みリクエストの中に含むと判定したことに応答して、方法650は動作674に進む。動作674は、書込み待ち行列から、それぞれのページ・ストライプに、書込みリクエストの中のデータをデステージすることを含む。動作674から、方法650はやはり動作652に戻り、追加の書込みリクエストを、本明細書に記載されたとおりに受け取り、処理することができるようにする。したがって、現在のデステージ動作が成功のうちに実施される前に、書込みリクエストを実行することを求める後続のリクエストを受け取ることができる。この後続のリクエストは、例えば方法650に従って受け取られ、処理されることが好ましい。
したがって、方法650に含まれるさまざまなプロセスは、(例えばTLCおよびQLC NAND型フラッシュなどの)マルチビットパーセル・メモリ内の異なるタイプの物理ページの異なる待ち時間特性を活用して、全体を支配するデータ・ストレージ・システムが経験する読出し待ち時間を全体として大幅に低減させることができる。いくつかの手法では、これらの改良が、例えば上記のいずれかの手法に従って、メモリに記憶されたデータの読出しヒートを追跡し、その読出しヒートに従ってメモリ内のデータを選択的に編成することによって達成される。
次に図7Aを参照すると、別の手法による、上記の図5Aおよび6Aに示されたコントローラ・アーキテクチャに似たコントローラ・アーキテクチャを実装したデータ・ストレージ・システム700が示されている。詳細には、図7Aは、データ・ストレージ・システム700内のいくつかの例示的な構成を示す、図5Aおよび6Aの手法の変形形態を示している。これに応じて、図7Aのさまざまな構成要素は、図5Aおよび6Aの構成要素と共通の符号を有する。
一選択肢として、このデータ・ストレージ・システム700は、図1~4などの他の図を参照して説明した特徴など、本明細書に記載された他の手法の特徴とともに実施することができる。しかしながら、このようなデータ・ストレージ・システム700および本明細書に示された他のデータ・ストレージ・システムは、本明細書に記載された例示的な手法の中で特に説明されていることもありまたは説明されていないこともあるさまざまな用途もしくは置き換えまたはその両方で使用することができる。さらに、本明細書に示されたデータ・ストレージ・システム700は、所望の任意の環境で使用することができる。したがって、図7A(および残りの図)は、可能な一切の置き換えを含むと考えることができる。
示されているとおり、データ・ストレージ・システム700によって受け取られたホスト書込みリクエストは、読出しヒート分離ユニット502によって受け取られるのではなく、デステージ・バッファ506内へ直接に送られる。この手法における、ホスト書込みリクエストがハイブリッド・コントローラ704アーキテクチャによって取り扱われる方式のこの違いは、メモリ内にまだ存在しておらず、したがって関連する読出しヒートを持たないデータをホスト書込みリクエストが含むことに由来する。受け取ったそれぞれのホスト書込みリクエストに対する読出しヒート・カウンタを読出しヒート・カウンタ・モジュール504内に確立することができるが、ホスト書込みリクエストの中のデータを最終的にメモリにおいてどこに記憶するかを判定する際に、読出しヒートは役割を果たさない。むしろ、ホスト書込みリクエストは補足書込み待ち行列702に蓄積される。したがって、補足書込み待ち行列702は、ホスト書込みリクエストを記憶するためだけに指定されており、ホスト書込みリクエストは次いで、SLCメモリ712内のメモリ・ブロック708を横切って延びるオープン・ブロック・ストライプ710の中のページ・ストライプ706を、例えば図7Aの矢印によって示されているように、また、すぐ後に明らかになるようなやり方で満たすために使用される。SLCメモリ712に記憶されたデータを要求する読出し動作は、例えばQLCメモリなどのマルチビットパーセル・メモリ528上で実行される読出し動作との比較で、最も短い待ち時間を有することにも留意すべきである。
次に図7Bを参照すると、一手法による、上述のデータ・ストレージ方式に従ってデータをメモリに記憶する方法750の流れ図が示されている。方法750に含まれるプロセスは、図7Aのデータ・ストレージ・システム700に導入されたハイブリッド・コントローラ・アーキテクチャに関して説明したものであることに留意すべきである。言い換えると、方法750に含まれるさまざまなプロセスは、書込みリクエストを受け取ったことに応答した図7Aのコントローラ704によって、例えばすぐ後に明らかになるようなやり方で実行することができる。しかしながら、さまざまな手法において、方法750は、本発明に従って、とりわけ図1~5Aに示されたいずれかの環境で実行することができる。この説明を読んだ当業者には理解されるであろうが、当然ながら、方法750には、図7Bに明記された動作よりも多くの動作またはそれよりも少数の動作を含めることができる。
方法750のステップはそれぞれ、この動作環境の適当な任意の構成要素によって実行することができる。例えば、さまざまな手法において、方法750は、コントローラ、プロセッサ、コンピュータなどによって、または1つもしくは複数のプロセッサを含む他のなんらかのデバイスによって部分的にまたは完全に実行することができる。したがって、いくつかの手法では、方法750を、コンピュータ実施方法とすることができる。このような手法では、この方法を実施するために使用されるコンピュータが、テープ・ドライブ自体またはコントローラ、テープなどのテープ・ドライブの部分、外部ホスト、サーバなどを含むことができる。さらに、本明細書のいずれの手法に関しても、コンピュータ、プロセッサおよびコントローラという用語は相互に交換可能に使用されることがあり、本発明の多くのさまざまな置き換えでは、このような構成要素が等価物とみなされる。
さらに、プロセッサを有する手法に関しては、そのプロセッサを、例えば、ハードウェアもしくはソフトウェアまたはその両方として実装された、好ましくは少なくとも1つのハードウェア構成要素を有する処理回路、チップもしくはモジュールまたはこれらの組合せを任意のデバイスで利用して、方法750の1つまたは複数のステップを実行することができる。例示的なプロセッサは、限定はされないが、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、もしくはこれらの組合せ、または当技術分野で知られている他の適当なコンピューティング・デバイスを含む。
図7Bに示されているとおり、方法750の動作752は、書込みリクエストを受け取ることを含み、動作754は、書込みリクエストをデステージ・バッファに蓄積することを含む。用語「蓄積する」および「記憶する」が本発明を限定することは全く意図されていないため、書込みリクエストをデステージ・バッファに蓄積することは、書込みリクエストをデステージ・バッファに記憶することに関して上で説明した手法と同じ手法または類似の手法を含むことができることにも留意すべきである。
手法に応じて、新しい書込みリクエストもしくは再配置書込みリクエストまたはその両方を受け取ることができる。さらに、再配置書込みリクエストは、SLCメモリ内のブロック間で、マルチビットパーセル・メモリ内のブロック間で、もしくはSLCメモリとマルチビットパーセル・メモリとの間で、またはこれらの組合せでデータを再配置することを含むことができる。これに応じて、判断756は、それぞれの書込みリクエストのタイプが何であるのかを決定することを含む。
所与の書込みリクエストが、ホスト書込みリクエスト、またはSLCメモリ内の異なるブロック間でデータを再配置することを含む再配置書込みリクエストであると判定したことに応答して、方法750は動作758に進み、動作758は、デステージ・バッファ内の書込みリクエストを補足書込み待ち行列に割り当てることを含む。上述のとおり、好ましい手法では、補足書込み待ち行列(例えば図7Aの702参照)が、ホスト書込み要求、およびSLCメモリ内のブロック間でデータを再配置することを含む再配置書込みリクエストを蓄積するためだけに使用される。
判断760は、補足書込み待ち行列が、SLCメモリ内の少なくとも1つのオープン・ページ・ストライプを満たすのに十分な量のデータを、書込みリクエストの中に含むかどうかを判定することを含む。ストレージ容量が効率的に利用されるように、メモリに書き込むときには、そのページ・ストライプ全体が満たされることが望ましい。書き込むときには、それぞれのページ・ストライプが完全に満たされることが好ましいが、いくつかの手法では、判断760が、例えば上記の手法で説明したように、補足書込み待ち行列が、SLCメモリ内のオープン・ページ・ストライプの所定の量を満たすのに十分な量のデータを、書込みリクエストの中に含むかどうかを判定することを含むことができる。
補足書込み待ち行列が、SLCメモリ内のオープン・ページ・ストライプを満たすのに十分な量のデータを、書込みリクエストの中に含まないと判定したことに応答して、方法750は動作752に戻り、追加の書込みリクエストを、本明細書に記載されたとおりに受け取り、処理することができるようにする。しかしながら、補足書込み待ち行列が、SLCメモリ内のオープン・ページ・ストライプを満たすのに十分な量のデータを、書込みリクエストの中に含むと判定したことに応答して、方法750は動作762に進む。動作762は、補足書込み待ち行列から、SLCメモリ内のオープン・ブロック・ストライプの中の物理ページに、書込みリクエストの中のデータをデステージすることを含む。さらに、上で説明したとおり、ホスト書込みリクエストの中のデータがデステージされた物理ページにマップする論理ページの現在の読出しヒート値がリセットされることが好ましい。
動作762から、方法750は動作752に戻り、追加の書込みリクエストを、本明細書に記載されたとおりに受け取り、処理することができるようにする。したがって、現在のデステージ動作が成功のうちに実施される前に、書込みリクエストを実行することを求める後続のリクエストを受け取ることができる。この後続のリクエストは、例えば方法750に従って受け取られ、処理されることが好ましい。
判断756に戻る。所与の書込みリクエストが、マルチビットパーセル・メモリ内のブロック間でデータを再配置すること、もしくはSLC内のブロックからマルチビットパーセル内のブロックにデータを再配置すること、またはその両方を含む再配置書込みリクエストであると判定したことに応答して、方法750は動作766に進む。いくつかの手法では、このマルチビットパーセル・メモリを3D QLCメモリとすることができるが、任意のタイプのマルチビットパーセル・メモリを、本明細書に記載された任意の手法で実装することができる。示されているとおり、動作766は、それぞれの書込みリクエストに応答することを含む。書込みリクエストに対する応答は、手法に応じて、書込みリクエストがデステージ・バッファに追加されたことを示すメッセージを書込みリクエストの送信側に返すこと、LPTを更新することなどによって実施することができる。
さらに、動作768は、書込みリクエストによるデータ参照に対応するそれぞれの論理ページの現在の読出しヒート値を決定することを含む。さらに、動作770は、書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値に基づいて、それぞれの書込みリクエストをそれぞれの書込み待ち行列に割り当てることを含む。これは、方法550の動作560に関して上で説明したいずれかの手法に従って達成することができる。例えば、読出しヒート値は、論理レベルで(例えばLPT内で)もしくは物理レベルで、またはその両方で管理することができる。任意選択で、動作770はさらに、書込み待ち行列レベルのバランスをより適切にするために、書込み待ち行列(例えば図7Aの508、510、512、514参照)の待ち行列レベルを考慮することができる。例えば、動作770は、現在の書込み待ち行列が所定のしきい値を超えたときに、書込みリクエストを、隣接する書込み待ち行列または他の任意の書込み待ち行列に入れることを含むことができる。
図7Bをさらに参照すると、判断772は、書込み待ち行列が、その待ち行列に対応するメモリ内の次のページ・ストライプを満たすのに十分な量のデータを、書込みリクエストの中に含むかどうかを判定することを含む。ストレージ容量が効率的に利用されるように、メモリに書き込むときには、そのページ・ストライプ全体が満たされることが望ましい。書き込むときには、それぞれのページ・ストライプが完全に満たされることが好ましいが、いくつかの手法では、判断772が、いずれかの書込み待ち行列が、メモリ内の対応するページ・ストライプの所定の量を満たすのに十分な量のデータを、書込みリクエストの中に含むかどうかを判定することを含むことができる。例えば、判断772は、いずれかの書込み待ち行列が、メモリ内の対応するブロック・ストライプのストレージ容量の95%を利用するのに十分な量のデータを、書込みリクエストの中に含むかどうかを判定することを含むことができる。この例では、補足書込み待ち行列の中に蓄積されたホスト書込みリクエストの中のデータを使用して、メモリ内の対応するブロック・ストライプの残りの5%を満たすことができ、それによってストレージ容量を利用する効率を増大させることができる。あるいは、隣接する書込み待ち行列または他の任意の書込み待ち行列の書込みリクエストを使用して、残りのメモリを満たすこともできる。
書込み待ち行列が、メモリ内の次のページ・ストライプを満たすのに十分な量のデータを、書込みリクエストの中に含まないと判定したことに応答して、方法750は動作752に戻り、追加の書込みリクエストを、本明細書に記載されたとおりに受け取り、処理することができるようにする。しかしながら、書込み待ち行列が、メモリ内の対応するそれぞれのページ・ストライプを満たすのに十分な量のデータを、書込みリクエストの中に含むと判定したことに応答して、方法750は動作774に進む。動作774は、書込み待ち行列から、それぞれのページ・ストライプに、書込みリクエストの中のデータをデステージすることを含む。動作774から、方法750はやはり動作752に戻り、追加の書込みリクエストを、本明細書に記載されたとおりに受け取り、処理することができるようにする。したがって、現在のデステージ動作が成功のうちに実施される前に、書込みリクエストを実行することを求める後続のリクエストを受け取ることができる。この後続のリクエストは、例えば方法750に従って受け取られ、処理されることが好ましい。
したがって、方法750に含まれるさまざまなプロセスも、(例えばTLCおよびQLC NAND型フラッシュなどの)マルチビットパーセル・メモリ内の異なるタイプの物理ページの異なる待ち時間特性を活用して、全体を支配するデータ・ストレージ・システムが経験する読出し待ち時間を全体として大幅に低減させることができる。いくつかの手法では、これらの改良が、例えば上記のいずれかの手法に従って、メモリに記憶されたデータの読出しヒートを追跡し、その読出しヒートに従ってメモリ内のデータを選択的に編成することによって達成される。
さらに、本明細書に含まれる手法のうちのさまざまな手法は、(例えばTLCおよびQLC NAND型フラッシュなどの)マルチビットパーセル・メモリ内の異なるタイプの物理ページの異なる待ち時間特性を活用して、全体を支配するデータ・ストレージ・システムが経験する読出し待ち時間を全体として大幅に低減させることができる。いくつかの手法では、これらの改良が、例えば上記のいずれかの手法に従って、メモリに記憶されたデータの読出しヒートを追跡し、その読出しヒートに従ってメモリ内のデータを選択的に編成することによって達成される。例えば、頻繁に読み出されるデータは、固有のより短い読出し待ち時間を有する物理ページ上に選択的に記憶され、一方、まれに読み出されるデータは、固有のより長い読出し待ち時間を有する物理ページ上に選択的に記憶される。その結果、データ・ストレージ・システムが経験する全体的な読出し待ち時間が大幅に低減し、それによって効率が増大する。
さらに、SLCおよびマルチビットパーセル・モードで動作するメモリ・ブロックを同じデバイス内に有するハイブリッド・コントローラ・アーキテクチャを実装したシステムは、動作の始めから、改良された読出し待ち時間を達成することができる。これは、SLCモードで動作するメモリ・ブロックが、それに関連するかなり短い読出し待ち時間を有し、それらのメモリ・ブロックが、ホスト書込みリクエストおよび使用可能な読出しヒート情報を持たない他のタイプの書込みリクエストを処理するために使用されるためである。さらに、本明細書に記載されたさまざまな手法では、ストレージ・システム内の誤った位置に配置されたデータを検出することができる。このような検出がなされたことに応答して、誤って配置されたページ自体を再配置することにより、または状況によってはブロックもしくはLEB全体を再配置することにより、そのデータを、(例えば対応する読出しヒート値をリセットして、またはリセットせずに)プロアクティブに(proactively)再配置することができる。
本明細書に含まれるさまざまな手法は、所与のストレージ・システムが経験する読出し待ち時間を大幅に低減させることができるが、読出し待ち時間をさらに低減させるために追加のステップを実行することができることにも留意すべきである。例えば、読出し待ち時間を、例えばこの説明を読んだ後の当業者には明白であろう任意の方式でさらに低減させるために、データ圧縮、水平レーン・ストラドリング(horizontal lane straddling)、本明細書の手法のうちの任意の手法で、スナップ読出し(snap read)(例えば部分的な物理ページを読み出すこと)などの直交技術(orthogonal technique)を実施することができる。
さらに、本明細書では、これらのさまざまな手法が、それぞれのページ・ストライプを特定の書込み待ち行列と相関させる手法として説明されているが、このことが本発明を限定することは全く意図されていない。例えば、所与の読出しヒートを有するデータに対応する書込みリクエストを含む書込み待ち行列を使用して、似た読出しヒートを有するデータに対応する書込みリクエストを含む書込み待ち行列と相関したページ・ストライプを満たすことができる。一例によれば、ホットな読出しヒートを有するデータに対応する書込みリクエストを含む書込み待ち行列を使用して、ウォームな(warm)読出しヒートを有するデータに対応する書込みリクエストを含む書込み待ち行列と相関したページ・ストライプを満たすことができる。この動作方式は、例えばデステージ・バッファ内のスペースを解放するため、およびいっぱいになりつつある書込み待ち行列を一気にデステージするために、実装することができる。
本発明は、インテグレーションの可能な技術的詳細レベルにある、システム、方法もしくはコンピュータ・プログラム製品、またはこれらの組合せであることがある。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含むことがある。
このコンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形のデバイス(tangible device)とすることができる。このコンピュータ可読ストレージ媒体は例えば、限定はされないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたはこれらの適当な組合せとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能なプログラマブル・リードオンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、機械的にコード化されたデバイス、例えばパンチカードまたはその上に命令が記録された溝の中の一段高くなった構造体、およびこれらの適当な組合せを含む。本明細書で使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が一過性の信号、例えば電波もしくは他の自由に伝搬する電磁波、ウェーブガイドもしくは他の伝送体内を伝搬する電磁波(例えば光ファイバ・ケーブル内を通る光パルス)、または電線を通して伝送される電気信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から対応するそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、またはネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはこれらの組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードすることができる。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバ、またはこれらの組合せを含むことができる。それぞれのコンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を、対応するそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、もしくは集積回路用のコンフィギュレーション・データであってもよく、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同種のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードであってもよい。このコンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されてもよく、一部がユーザのコンピュータ上で実行されてもよく、独立型ソフトウェア・パッケージとして実行されてもよく、一部がユーザのコンピュータ上で、一部がリモート・コンピュータ上で実行されてもよく、または全体がリモート・コンピュータもしくはリモート・サーバ上で実行されてもよい。上記の最後のシナリオでは、リモート・コンピュータが、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、またはこの接続が、外部コンピュータに対して(例えばインターネット・サービス・プロバイダを使用してインターネットを介して)実施されてもよい。いくつかの実施形態では、本発明の態様を実施するために、例えばプログラム可能論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)またはプログラム可能論理アレイ(PLA)を含む電子回路が、このコンピュータ可読プログラム命令の状態情報を利用してその電子回路をパーソナライズすることにより、このコンピュータ可読プログラム命令を実行してもよい。
本明細書では、本発明の態様が、本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品の流れ図もしくはブロック図またはその両方の図を参照して説明される。それらの流れ図もしくはブロック図またはその両方の図のそれぞれのブロック、およびそれらの流れ図もしくはブロック図またはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実施することができることが理解される。
これらのコンピュータ可読プログラム命令は、コンピュータのプロセッサ、または機械を形成する他のプログラム可能データ処理装置のプロセッサに、それらのコンピュータのプロセッサまたは他のプログラム可能データ処理装置のプロセッサによって実行されるこれらの命令が、これらの流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作を実施する手段を生成するような態様で、提供することができる。これらのコンピュータ可読プログラム命令はさらに、特定の方式で機能するようにコンピュータ、プログラム可能データ処理装置もしくは他のデバイスまたはこれらの組合せに指図することができるコンピュータ可読ストレージ媒体に、その中に命令が記憶されたコンピュータ可読ストレージ媒体が、これらの流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作の態様を実施する命令を含む製品を含むような態様で、記憶することができる。
これらのコンピュータ可読プログラム命令はさらに、コンピュータ、他のプログラム可能装置または他のデバイス上で一連の動作ステップを実行させて、コンピュータによって実施されるプロセスを生み出すために、このコンピュータ、他のプログラム可能データ処理装置または他のデバイス上に、このコンピュータ、他のプログラム可能装置または他のデバイス上で実施されるこれらの命令が、これらの流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作を実施するような態様で、ロードすることができる。
添付図中の流れ図およびブロック図は、本発明のさまざまな実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能および動作を示す。この点に関して、それらの流れ図またはブロック図のそれぞれのブロックは、指定された論理機能を実施する1つまたは複数の実行可能命令を含む、命令のモジュール、セグメントまたは部分を表すことがある。いくつかの代替実施態様では、ブロックに示された機能を、図に示された順序とは異なる順序で実行することができる。例えば、連続して示された2つのブロックが、実際は、1つのステップとして実施されること、または時間的に部分的にもしくは完全に重なって同時にもしくは実質的に同時に実行されることがあり、あるいは、含まれる機能によってはそれらのブロックが逆の順序で実行されることもある。それらのブロック図もしくは流れ図またはその両方の図のそれぞれのブロック、ならびにそれらのブロック図もしくは流れ図またはその両方の図のブロックの組合せを、指定された機能もしくは動作を実行しまたは専用ハードウェアとコンピュータ命令の組合せを実施するハードウェアベースの専用システムによって実施することができることにも留意すべきである。
さらに、さまざまな実施形態によるシステムは、プロセッサおよび論理を含むことができ、この論理は、プロセッサと統合されており、もしくはプロセッサによって実行可能であり、またはその両方である。この論理は、本明細書に記載されたプロセス・ステップのうちの1つまたは複数のプロセス・ステップを実行するように構成されている。統合されているという表現は、プロセッサが、それとともに埋め込まれた論理を、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)などのハードウェア論理として有することを意味する。プロセッサによって実行可能であるという表現は、その論理が、プロセッサによってアクセス可能であり、プロセッサによって実行されたときになんらかの機能をプロセッサに実行させるように構成された、ハードウェア論理;ファームウェア、オペレーティング・システムの部分、アプリケーション・プログラムの部分などのソフトウェア論理;など、またはハードウェア論理とソフトウェア論理のなんらかの組合せであることを意味する。ソフトウェア論理は、当技術分野で知られている任意のメモリ・タイプのローカルおよび/またはリモート・メモリ上に記憶されたものとすることができる。ソフトウェア・プロセッサ・モジュールもしくはハードウェア・プロセッサまたはその両方などの当技術分野で知られている任意のプロセッサ、例えばASIC、FPGA、中央処理ユニット(CPU)、集積回路(IC)、グラフィック処理ユニット(GPU)などを使用することができる。
上述のシステムもしくは方法またはその両方のさまざまな特徴を任意の形で組み合わせて、複数の組合せを生み出すことができることは、上に示した説明から明らかである。
本発明のさまざまな実施形態の説明は例示のために示したものであり、それらの説明が網羅的であること、または開示された実施形態に限定されることは意図されていない。当業者には、記載された実施形態の範囲を逸脱しない多くの変更および変形が明らかとなろう。本明細書で使用されている用語は、実施形態の原理、実際的用途、もしくは市場に出ている技術には見られない技術的改良を最もうまく説明するように、または本明細書に開示された実施形態を他の当業者が理解することができるように選択した。
図8は、一手法によるネットワーク・アーキテクチャ800を示している。図8に示されているとおり、第1のリモート・ネットワーク804および第2のリモート・ネットワーク806を含む複数のリモート・ネットワーク802が提供されている。リモート・ネットワーク802と近くのネットワーク808との間にゲートウェイ801を結合することができる。このネットワーク・アーキテクチャ800の文脈では、ネットワーク804、806がそれぞれ、限定はされないが、インターネット、公衆交換電話網(PSTN)、内部電話網などのLAN、WANを含む任意の形態をとることができる。
使用時、ゲートウェイ801は、リモート・ネットワーク802から近くのネットワーク808への入口点の役目を果たす。そのため、ゲートウェイ801は、ゲートウェイ801に到達した所与のデータ・パケットを導くことができるルータとして機能すること、ならびにゲートウェイ801内のおよびゲートウェイ801からの実際の経路を所与のパケットに対して提供するスイッチとして機能することができる。
さらに、近くのネットワーク808に結合された少なくとも1つのデータ・サーバ814であって、ゲートウェイ801を介してリモート・ネットワーク802からアクセス可能な少なくとも1つのデータ・サーバ814が含まれている。データ・サーバ814は、任意のタイプのコンピューティング・デバイス/グループウェアを含むことができることに留意すべきである。それぞれのデータ・サーバ814には複数のユーザ・デバイス816が結合されている。このようなユーザ・デバイス816は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、プリンタ、もしくは論理を含む他のタイプのデバイス、またはこれらの組合せを含むことができる。いくつかの手法では、ユーザ・デバイス811を、これらのネットワークのうちの任意のネットワークに直接に結合することができることに留意すべきである。
ネットワーク804、806、808のうちの1つまたは複数のネットワークに、周辺装置820または一連の周辺装置820、例えば、ファクシミリ機、プリンタ、スキャナ、ハード・ディスク・ドライブ、ネットワーク化されたデータ・ストレージ・ユニットもしくはシステムまたはローカル・データ・ストレージ・ユニットもしくはシステム、あるいはその両方などを結合することができる。ネットワーク804、806、808に結合された任意のタイプのネットワーク要素とともに、データベースもしくは追加の構成要素またはその両方を利用することができること、あるいはネットワーク804、806、808に結合された任意のタイプのネットワーク要素に、データベースもしくは追加の構成要素またはその両方を統合することができることに留意すべきである。この説明の文脈では、ネットワーク要素がネットワークの任意の構成要素を指すことがある。
いくつかの手法によれば、MICROSOFT WINDOWS(R)環境を事実上ホストするUNIX(R)システムなどの、仮想システムおよび/または他の1つもしくは複数のシステムをエミュレートするシステムにより、ならびに/あるいは仮想システムおよび/または他の1つもしくは複数のシステムをエミュレートするシステム上で、本明細書に記載された方法およびシステムを実施することができる。いくつかの手法では、VMWAREソフトウェアを使用することによって、この仮想化もしくはエミュレーションまたはその両方を強化することができる。
他の手法では、1つまたは複数のネットワーク804、806、808が、一般に「クラウド」と呼ばれるシステムのクラスタを表すことができる。クラウド・コンピューティングでは、クラウド内のシステムに、処理パワー、周辺装置、ソフトウェア、データ、サーバなどの共用リソースが、オンデマンド関係で提供され、それによって、多くのコンピューティング・システムを横切ってサービスにアクセスすることおよびサービスを分散させることが可能になる。クラウド・コンピューティングは通常、クラウド内で動作しているシステム間のインターネット接続を含むが、それらのシステムを接続する、当技術分野では知られている他の技術を使用することもできる。
図9は、一手法による、図8のユーザ・デバイス816もしくはサーバ814またはその両方に関連する代表的なハードウェア環境を示している。図9は、一手法による、マイクロプロセッサなどの中央処理ユニット910と、システム・バス912を介して相互接続された他のいくつかのユニットとを有するプロセッサ・システム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)、MAC OS、UNIX(R) OSなどのオペレーティング・システムが常駐している。上で述べたもの以外のプラットホームおよび動作システム上で好ましい手法を実施することもできることが理解されるであろう。JAVA(R)、XML、CもしくはC++言語またはこれらの組合せ、あるいは他のプログラミング言語を、オブジェクト指向プログラミング方法論とともに使用して、好ましい手法を書くことができる。複雑なアプリケーションを開発するためにますます使用されるようになっているオブジェクト指向プログラミング(OOP)を使用することもできる。
さらに、図10は、一手法による、高レベル(例えばSSD)ストレージ段(storagetier)および低レベル(例えば磁気テープ)ストレージ段を実装したストレージ・システム1000を示している。さまざまな手法によれば、図10に示された要素のうちの一部の要素を、ハードウェアもしくはソフトウェアまたはその両方として実装することができることに留意されたい。ストレージ・システム1000は、少なくとも1つの高位ストレージ段1002上および少なくとも1つの低位ストレージ段1006上の複数の媒体と通信するためのストレージ・システム・マネージャ1012を含むことができる。しかしながら、他の手法では、ストレージ・システム・マネージャ1012が、少なくとも1つの高位ストレージ段1002上の複数の媒体と通信することができるが、低位ストレージ段上の媒体とは通信しない。高位ストレージ段1002は、ハード・ディスク、不揮発性メモリ(NVM)、NVRAM、SSD内の固体状態メモリ、フラッシュ・メモリ、SSDアレイ、フラッシュ・メモリ・アレイなど、または本明細書に記載された他の媒体もしくは当技術分野で知られている他の媒体、あるいはこれらの組合せなどの、1つまたは複数のランダム・アクセス媒体1004もしくは直接アクセス媒体1004またはその両方を含むことが好ましい。説明のための例によれば、図3~4は、所望の手法に応じて高位ストレージ段1002として使用することができるSSDシステムの例示的なアーキテクチャを示している。
図10をさらに参照すると、低位ストレージ段1006は、テープ・ドライブ内の磁気テープなどの順次アクセス媒体、および/または光学媒体、低速アクセスHDD、低速アクセスSSDなど、ならびに/あるいは本明細書に記載された他の媒体もしくは当技術分野で知られている他の媒体を含む、1つまたは複数の低実行ストレージ媒体(lower performing storage media)1008を含むことが好ましい。1つまたは複数の追加のストレージ段1016は、システム1000の設計者が望むストレージ・メモリ媒体の任意の組合せを含むことができる。したがって、いくつかの手法では、1つまたは複数の追加のストレージ段1016が、図1~2に示されたものと同様のSSDシステム・アーキテクチャ、または図1~2に示されたものと同じSSDシステム・アーキテクチャを含むことができる。さらに、高位ストレージ段1002もしくは低位ストレージ段1006またはその両方は、ストレージ・デバイスもしくはストレージ媒体またはその両方の任意の組合せを含むことができる。
ストレージ・システム・マネージャ1012は、図10に示されているストレージ・エリア・ネットワーク(storage area network)(SAN)などのネットワーク1010を通して、または他の適当ななんらかのネットワーク・タイプを通して、高位ストレージ段1002上および低位ストレージ段1006上のストレージ媒体1004、1008と通信することができる。ストレージ・システム・マネージャ1012はさらに、ホスト・インタフェース1014を通して1つまたは複数のホスト・システム(図示せず)と通信することができる。ホスト・インタフェース1014は、ストレージ・システム・マネージャ1012の部分であってもまたはそうでなくてもよい。ストレージ・システム・マネージャ1012もしくはストレージ・システム1000の他の構成要素またはその両方は、ハードウェアもしくはソフトウェアまたはその両方で実装することができ、中央処理ユニット(CPU)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)などのプロセッサ(図示せず)を使用して、当技術分野で知られているタイプのコマンドを実行することができる。この説明を読んだ当業者には明白なことだが、当然ながら、任意の配置のストレージ・システムを使用することができる。
より多くの手法で、ストレージ・システム1000は、任意の数のデータ・ストレージ段を含むことができ、それぞれのストレージ段内で、同じストレージ・メモリ媒体または異なるストレージ・メモリ媒体を含むことができる。例えば、それぞれのデータ・ストレージ段は、HDD、SSD、順次アクセス媒体(テープ・ドライブ内のテープ、光ディスク・ドライブ内の光ディスクなど)、直接アクセス媒体(CD-ROM、DVD-ROMなど)、または媒体ストレージ・タイプの任意の組合せなど、同じタイプのストレージ・メモリ媒体を含むことができる。このような1つの構成では、高位ストレージ段1002が、高実行ストレージ環境(higher performing storage environment)でデータを記憶するための大部分のSSDストレージ媒体を含むことができ、低位ストレージ段1006および追加のストレージ段1016を含む残りのストレージ段が、低実行ストレージ環境でデータを記憶するためのSSD、HDD、テープ・ドライブなどの任意の組合せを含むことができる。このようにすると、より頻繁にアクセスされるデータ、より高い優先度を有するデータ、より速くアクセスされる必要があるデータなどを、高位ストレージ段1002に記憶することができ、これらの属性のうちの1つの属性を持たないデータを、低位ストレージ段1006を含む追加のストレージ段1016に記憶することができる。当然ながら、この説明を読んだ当業者は、本明細書に示された手法に従って、異なるストレージ方式に実装するためのストレージ媒体タイプの他の多くの組合せを考案することができる。
いくつかの手法によれば、ストレージ・システム(例えば1000)は、データ・セットをオープンすることを求めるリクエストを受け取るように構成された論理、リクエストされたデータ・セットが、多段データ・ストレージ・システム1000の低位ストレージ段1006の多数の関連部分に記憶されているかどうかを判定するように構成された論理、リクエストされたデータ・セットのそれぞれの関連部分を、多段データ・ストレージ・システム1000の高位ストレージ段1002に移動させるように構成された論理、および多段データ・ストレージ・システム1000の高位ストレージ段1002上で、それら関連部分から、リクエストされたデータ・セットを組み立てるように構成された論理を含むことができる。
当然ながら、この論理は、さまざまな実施形態に従って、任意のデバイス上の方法もしくは任意のシステム上の方法またはその両方として、あるいはコンピュータ・プログラム製品として実装することができる。

Claims (25)

  1. コンピュータ実施方法であって、
    書込みリクエストを受け取ること、
    前記書込みリクエストをデステージ・バッファに蓄積すること、
    前記書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値を決定すること、
    前記書込みリクエストに対応するそれぞれの論理ページの前記現在の読出しヒート値に基づいて、それぞれの前記書込みリクエストをそれぞれの書込み待ち行列に割り当てることであって、それぞれの前記書込み待ち行列が、物理ページを含む異なるページ・ストライプに対応し、それぞれの前記ページ・ストライプに含まれる前記物理ページが同じタイプである、前記割り当てること、および
    前記書込み待ち行列から、それぞれの前記ページ・ストライプに、前記書込みリクエストの中のデータをデステージすること
    を含むコンピュータ実施方法。
  2. 所与の書込み待ち行列が、それに対応するージ・ストライプを満たすのに十分なデータを、それぞれの前記書込みリクエストの中に含むかどうかを判定すること、
    前記所与の書込み待ち行列が、それに対応する前記ージ・ストライプを満たすのに十分なデータを、それぞれの前記書込みリクエストの中に含まないと判定したことに応答して、隣接する書込み待ち行列が、前記所与の書込み待ち行列に対応する前記ージ・ストライプを満たすことを完了するのに十分なデータを、それぞれの前記書込みリクエストの中に含むかどうかを判定すること、ならびに
    前記隣接する書込み待ち行列が、前記所与の書込み待ち行列に対応する前記ージ・ストライプを満たすことを完了するのに十分なデータを、それぞれの前記書込みリクエストの中に含むと判定したことに応答して、前記所与の書込み待ち行列および前記隣接する書込み待ち行列から、前記所与の書込み待ち行列に対応する前記ージ・ストライプに、前記書込みリクエストの中の前記データをデステージすること
    を含む、請求項1に記載のコンピュータ実施方法。
  3. 1つまたは複数の論理ページに記憶されたデータに対応する読出しリクエストを受け取ること、
    前記1つまたは複数の論理ページのそれぞれの論理ページに関連する読出しヒート値を増分すること、および
    前記読出しリクエストを履行すること
    を含む、請求項1に記載のコンピュータ実施方法。
  4. 前記書込みリクエストは、新しい書込みリクエストであるホスト書込みリクエストであり、
    前記ホスト書込みリクエストを受け取ること、
    前記ホスト書込みリクエストを前記デステージ・バッファに記憶すること、
    前記デステージ・バッファ内のそれぞれの前記ホスト書込みリクエストを補足書込み待ち行列に割り当てること、
    前記補足書込み待ち行列から、前記ページ・ストライプのうちのいずれかのページ・ストライプ内の物理ページに、前記ホスト書込みリクエストの中のデータをデステージすること、および
    前記ホスト書込みリクエストの中の前記データがデステージされた前記物理ページにマップする論理ページの前記現在の読出しヒート値をリセットすること
    を含む、請求項1に記載のコンピュータ実施方法。
  5. 前記物理ページが、クアッドレベル・セル(QLC)メモリ内に実装されており、物理ページの前記タイプが、下位ページ、上位ページ、エクストラ・ページおよびトップ・ページを含む、請求項1に記載のコンピュータ実施方法。
  6. それぞれの前記現在の読出しヒート値が、2ビット飽和カウンタを使用して維持される、請求項1に記載のコンピュータ実施方法。
  7. プログラム命令が実装されたコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品であって、前記プログラム命令が、
    プロセッサによって、書込みリクエストを受け取ること、
    前記プロセッサによって、前記書込みリクエストをデステージ・バッファに蓄積すること、
    前記プロセッサによって、前記書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値を決定すること、
    前記プロセッサによって、前記書込みリクエストに対応するそれぞれの論理ページの前記現在の読出しヒート値に基づいて、それぞれの前記書込みリクエストをそれぞれの書込み待ち行列に割り当てることであって、それぞれの前記書込み待ち行列が、物理ページを含む異なるページ・ストライプに対応し、それぞれの前記ページ・ストライプに含まれる前記物理ページが同じタイプである、前記割り当てること、および
    前記プロセッサによって、前記書込み待ち行列から、それぞれの前記ページ・ストライプに、前記書込みリクエストの中のデータをデステージすること
    を前記プロセッサに実行させるように、前記プロセッサによって読出し可能もしくは実行可能またはその両方である、コンピュータ・プログラム製品。
  8. 前記プログラム命令が、
    前記プロセッサによって、所与の書込み待ち行列が、それに対応するージ・ストライプを満たすのに十分なデータを、それぞれの前記書込みリクエストの中に含むかどうかを判定すること、
    前記所与の書込み待ち行列が、それに対応する前記ージ・ストライプを満たすのに十分なデータを、それぞれの前記書込みリクエストの中に含まないと判定したことに応答して、隣接する書込み待ち行列が、前記所与の書込み待ち行列に対応する前記ージ・ストライプを満たすことを完了するのに十分なデータを、それぞれの前記書込みリクエストの中に含むかどうかを、前記プロセッサによって判定すること、ならびに
    前記隣接する書込み待ち行列が、前記所与の書込み待ち行列に対応する前記ージ・ストライプを満たすことを完了するのに十分なデータを、それぞれの前記書込みリクエストの中に含むと判定したことに応答して、前記プロセッサによって、前記所与の書込み待ち行列および前記隣接する書込み待ち行列から、前記所与の書込み待ち行列に対応する前記ージ・ストライプに、前記書込みリクエストの中の前記データをデステージすること
    を前記プロセッサに実行させるように、前記プロセッサによって読出し可能もしくは実行可能またはその両方である、請求項7に記載のコンピュータ・プログラム製品。
  9. 前記プログラム命令が、
    前記プロセッサによって、1つまたは複数の論理ページに記憶されたデータに対応する読出しリクエストを受け取ること、
    前記プロセッサによって、前記1つまたは複数の論理ページのそれぞれの論理ページに関連する読出しヒート値を増分すること、および
    前記プロセッサによって、前記読出しリクエストを履行すること
    を前記プロセッサに実行させるように、前記プロセッサによって読出し可能もしくは実行可能またはその両方である、請求項7に記載のコンピュータ・プログラム製品。
  10. 前記書込みリクエストは、新しい書込みリクエストであるホスト書込みリクエストであり、
    前記プログラム命令が、
    前記プロセッサによって、前記ホスト書込みリクエストを受け取ること、
    前記プロセッサによって、前記ホスト書込みリクエストを前記デステージ・バッファに記憶すること、
    前記プロセッサによって、前記デステージ・バッファ内のそれぞれの前記ホスト書込みリクエストを補足書込み待ち行列に割り当てること、
    前記プロセッサによって、前記補足書込み待ち行列から、前記ページ・ストライプのうちのいずれかのページ・ストライプ内の物理ページに、前記ホスト書込みリクエストの中のデータをデステージすること、および
    前記プロセッサによって、前記ホスト書込みリクエストの中の前記データがデステージされた前記物理ページにマップする論理ページの前記現在の読出しヒート値をリセットすること
    を前記プロセッサに実行させるように、前記プロセッサによって読出し可能もしくは実行可能またはその両方である、請求項7に記載のコンピュータ・プログラム製品。
  11. 前記物理ページが、クアッドレベル・セル(QLC)メモリ内に実装されており、物理ページの前記タイプが、下位ページ、上位ページ、エクストラ・ページおよびトップ・ページを含む、請求項7に記載のコンピュータ・プログラム製品。
  12. それぞれの前記現在の読出しヒート値が、2ビット飽和カウンタを使用して維持される、請求項7に記載のコンピュータ・プログラム製品。
  13. システムであって、
    データを記憶するように構成された複数の不揮発性ランダム・アクセス・メモリ(NVRAM)ブロックと、
    プロセッサおよび論理であって、前記論理が、前記プロセッサと統合されている、もしくは前記プロセッサによって実行可能である、またはその両方である、前記プロセッサおよび論理と
    を備え、前記論理が、
    前記プロセッサによって、書込みリクエストを受け取ること、
    前記プロセッサによって、前記書込みリクエストをデステージ・バッファに蓄積すること、
    前記プロセッサによって、前記書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値を決定すること、
    前記プロセッサによって、前記書込みリクエストに対応するそれぞれの論理ページの前記現在の読出しヒート値に基づいて、それぞれの前記書込みリクエストをそれぞれの書込み待ち行列に割り当てることであって、それぞれの前記書込み待ち行列が、物理ページを含む異なるページ・ストライプに対応し、それぞれの前記ページ・ストライプに含まれる前記物理ページが同じタイプである、前記割り当てること、および
    前記プロセッサによって、前記書込み待ち行列から、それぞれの前記ページ・ストライプに、前記書込みリクエストの中のデータをデステージすること
    を実行するように構成されている、システム。
  14. 前記論理が、
    前記プロセッサによって、所与の書込み待ち行列が、それに対応するージ・ストライプを満たすのに十分なデータを、それぞれの前記書込みリクエストの中に含むかどうかを判定すること、
    前記所与の書込み待ち行列が、それに対応する前記ージ・ストライプを満たすのに十分なデータを、それぞれの前記書込みリクエストの中に含まないと判定したことに応答して、隣接する書込み待ち行列が、前記所与の書込み待ち行列に対応する前記ージ・ストライプを満たすことを完了するのに十分なデータを、それぞれの前記書込みリクエストの中に含むかどうかを、前記プロセッサによって判定すること、ならびに
    前記隣接する書込み待ち行列が、前記所与の書込み待ち行列に対応する前記ージ・ストライプを満たすことを完了するのに十分なデータを、それぞれの前記書込みリクエストの中に含むと判定したことに応答して、前記プロセッサによって、前記所与の書込み待ち行列および前記隣接する書込み待ち行列から、前記所与の書込み待ち行列に対応する前記ージ・ストライプに、前記書込みリクエストの中の前記データをデステージすること
    を実行するように構成されている、請求項13に記載のシステム。
  15. 前記論理が、
    前記プロセッサによって、1つまたは複数の論理ページに記憶されたデータに対応する読出しリクエストを受け取ること、
    前記プロセッサによって、前記1つまたは複数の論理ページのそれぞれの論理ページに関連する読出しヒート値を増分すること、および
    前記プロセッサによって、前記読出しリクエストを履行すること
    を実行するように構成されている、請求項13に記載のシステム。
  16. 前記書込みリクエストは、新しい書込みリクエストであるホスト書込みリクエストであり、
    前記論理が、
    前記プロセッサによって、前記ホスト書込みリクエストを受け取ること、
    前記プロセッサによって、前記ホスト書込みリクエストを前記デステージ・バッファに記憶すること、
    前記プロセッサによって、前記デステージ・バッファ内のそれぞれの前記ホスト書込みリクエストを補足書込み待ち行列に割り当てること、
    前記プロセッサによって、前記補足書込み待ち行列から、前記ページ・ストライプのうちのいずれかのページ・ストライプ内の物理ページに、前記ホスト書込みリクエストの中のデータをデステージすること、および
    前記プロセッサによって、前記ホスト書込みリクエストの中の前記データがデステージされた前記物理ページにマップする論理ページの前記現在の読出しヒート値をリセットすること
    を実行するように構成されている、請求項13に記載のシステム。
  17. 前記物理ページが、クアッドレベル・セル(QLC)メモリ内に実装されており、物理ページの前記タイプが、下位ページ、上位ページ、エクストラ・ページおよびトップ・ページを含む、請求項13に記載のシステム。
  18. それぞれの前記現在の読出しヒート値が、2ビット飽和カウンタを使用して維持される、請求項13に記載のシステム。
  19. コンピュータ実施方法であって、
    書込みリクエストを受け取ること、
    前記書込みリクエストをデステージ・バッファに蓄積すること、
    それぞれの前記書込みリクエストがホスト書込みリクエストであるかどうかを判定すること、
    書込みリクエストがホスト書込みリクエストではないと判定したことに応答して、
    前記書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値を決定すること、
    前記書込みリクエストに対応するそれぞれの論理ページの前記現在の読出しヒート値に基づいて、前記書込みリクエストを書込み待ち行列に割り当てることであって、それぞれの前記書込み待ち行列が、物理ページを含む異なるページ・ストライプに対応し、それぞれの前記ページ・ストライプに含まれる前記物理ページが同じタイプである、前記割り当てること、および
    書込みリクエストがホスト書込みリクエストであると判定したことに応答して、前記書込みリクエストを補足書込み待ち行列に割り当てること
    を含むコンピュータ実施方法。
  20. 前記補足書込み待ち行列から、シングルレベル・セル(SLC)メモリ内に実装された物理ページを含むページ・ストライプ内の物理ページに、前記ホスト書込みリクエストの中のデータをデステージすること
    を含む、請求項19に記載のコンピュータ実施方法。
  21. 前記書込み待ち行列から、それらのそれぞれのページ・ストライプに、前記書込みリクエストの中のデータをデステージすること
    を含み、前記デステージすることが、
    所与の書込み待ち行列が、それに対応するージ・ストライプを満たすのに十分なデータを、それぞれの前記書込みリクエストの中に含むかどうかを判定すること、
    前記所与の書込み待ち行列が、それに対応する前記ージ・ストライプを満たすのに十分なデータを、それぞれの前記書込みリクエストの中に含まないと判定したことに応答して、隣接する書込み待ち行列が、前記所与の書込み待ち行列に対応する前記ージ・ストライプを満たすことを完了するのに十分なデータを、それぞれの前記書込みリクエストの中に含むかどうかを判定すること、ならびに
    前記隣接する書込み待ち行列が、前記所与の書込み待ち行列に対応する前記ージ・ストライプを満たすことを完了するのに十分なデータを、それぞれの前記書込みリクエストの中に含むと判定したことに応答して、前記所与の書込み待ち行列および前記隣接する書込み待ち行列から、前記所与の書込み待ち行列に対応する前記ージ・ストライプに、前記書込みリクエストの中の前記データをデステージすること
    によって実行される、請求項19に記載のコンピュータ実施方法。
  22. マルチビットパーセル・メモリがクアッドレベル・セル(QLC)メモリであり、物理ページの前記タイプが、下位ページ、上位ページ、エクストラ・ページおよびトップ・ページを含む、請求項21に記載のコンピュータ実施方法。
  23. 1つまたは複数の論理ページに記憶されたデータに対応する読出しリクエストを受け取ること、
    前記1つまたは複数の論理ページのそれぞれの論理ページに関連する読出しヒート値を増分すること、および
    前記読出しリクエストを履行すること
    を含む、請求項19に記載のコンピュータ実施方法。
  24. それぞれの前記現在の読出しヒート値が、2ビット飽和カウンタを使用して維持される、請求項19に記載のコンピュータ実施方法。
  25. プログラム命令が実装されたコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品であって、前記プログラム命令が、
    プロセッサによって、書込みリクエストを受け取ること、
    前記プロセッサによって、前記書込みリクエストをデステージ・バッファに蓄積すること、
    前記プロセッサによって、それぞれの前記書込みリクエストがホスト書込みリクエストであるかどうかを判定すること、
    書込みリクエストがホスト書込みリクエストではないと判定したことに応答して、
    前記プロセッサによって、前記書込みリクエストに対応するそれぞれの論理ページの現在の読出しヒート値を決定すること、
    前記プロセッサによって、前記書込みリクエストに対応するそれぞれの論理ページの前記現在の読出しヒート値に基づいて、前記書込みリクエストを書込み待ち行列に割り当てることであって、それぞれの前記書込み待ち行列が、物理ページを含む異なるページ・ストライプに対応し、それぞれの前記ページ・ストライプに含まれる前記物理ページが同じタイプである、前記割り当てること、および
    書込みリクエストがホスト書込みリクエストであると判定したことに応答して、前記プロセッサによって、前記書込みリクエストを補足書込み待ち行列に割り当てること
    を前記プロセッサに実行させるように、前記プロセッサによって読出し可能もしくは実行可能またはその両方である、コンピュータ・プログラム製品。
JP2021578160A 2019-07-10 2020-06-25 読出しヒート・データ分離をサポートしている書込みキャッシュ・アーキテクチャ内でのデータ配置 Active JP7496841B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/508,140 US10977181B2 (en) 2019-07-10 2019-07-10 Data placement in write cache architecture supporting read heat data separation
US16/508,140 2019-07-10
PCT/IB2020/056017 WO2021005445A1 (en) 2019-07-10 2020-06-25 Data placement in write cache architecture supporting read heat data separation

Publications (2)

Publication Number Publication Date
JP2022539788A JP2022539788A (ja) 2022-09-13
JP7496841B2 true JP7496841B2 (ja) 2024-06-07

Family

ID=74102302

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021578160A Active JP7496841B2 (ja) 2019-07-10 2020-06-25 読出しヒート・データ分離をサポートしている書込みキャッシュ・アーキテクチャ内でのデータ配置

Country Status (6)

Country Link
US (2) US10977181B2 (ja)
JP (1) JP7496841B2 (ja)
CN (1) CN114127677B (ja)
DE (1) DE112020003290B4 (ja)
GB (1) GB2600310B (ja)
WO (1) WO2021005445A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10977181B2 (en) 2019-07-10 2021-04-13 International Business Machines Corporation Data placement in write cache architecture supporting read heat data separation
US11442809B1 (en) * 2019-07-17 2022-09-13 Marvell Asia Pte, Ltd. Double-parity raid enabling recovery of two failed data units
CN112445412B (zh) * 2019-08-28 2024-06-11 华为技术有限公司 一种数据存储方法及装置
US11119855B2 (en) * 2019-10-24 2021-09-14 International Business Machines Corporation Selectively storing parity data in different types of memory
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

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002014776A (ja) 2000-06-29 2002-01-18 Toshiba Corp ディスク制御システムおよびデータ再配置方法
JP2002182860A (ja) 2000-12-18 2002-06-28 Pfu Ltd ディスクアレイ装置
JP2010079928A (ja) 2002-03-21 2010-04-08 Netapp Inc Raidシステムにおいてストライプの連続アレイに書き込む方法
JP2013065310A (ja) 2011-09-16 2013-04-11 Apple Inc 不揮発性メモリを有するシステムのための高速ツリー平坦化
JP2014160478A (ja) 2010-08-31 2014-09-04 Micron Technology Inc ストライプに基づく不揮発性多値メモリ操作
US20160179678A1 (en) 2014-12-19 2016-06-23 International Business Machines Corporation Non-volatile memory controller cache architecture with support for separation of data streams
US20160188223A1 (en) 2014-12-30 2016-06-30 International Business Machines Corporation Promoting consistent response times in a data storage system having multiple data retrieval mechanisms
US20160188211A1 (en) 2014-12-30 2016-06-30 International Business Machines Corporation Optimizing thin provisioning in a data storage system through selective use of multiple grain sizes
US20170139768A1 (en) 2015-11-18 2017-05-18 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7255272B2 (en) * 2003-06-09 2007-08-14 Brush Industries, Inc. Card reader/writer devices and methods
US8010337B2 (en) * 2004-09-22 2011-08-30 Microsoft Corporation Predicting database system performance
CN101526923B (zh) * 2009-04-02 2012-04-04 成都市华为赛门铁克科技有限公司 一种数据处理方法、装置和闪存存储系统
US8555019B2 (en) * 2010-09-08 2013-10-08 International Business Machines Corporation Using a migration cache to cache tracks during migration
US8661196B2 (en) 2011-08-15 2014-02-25 International Business Machines Corporation Optimizing locations of data accessed by client applications interacting with a storage system
US9645917B2 (en) 2012-05-22 2017-05-09 Netapp, Inc. Specializing I/O access patterns for flash storage
US9632927B2 (en) 2014-09-25 2017-04-25 International Business Machines Corporation Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes
CN104699424B (zh) 2015-03-26 2018-06-12 华中科技大学 一种基于页面热度的异构内存管理方法
CN107808686B (zh) * 2016-09-09 2020-10-30 北京忆恒创源科技有限公司 读出错测试方法与装置
US10126971B1 (en) 2017-06-21 2018-11-13 International Business Machines Corporation Enhanced application performance in multi-tier storage environments
US10275162B2 (en) * 2017-06-23 2019-04-30 Dell Products L.P. Methods and systems for managing data migration in solid state non-volatile memory
CN108762664B (zh) 2018-02-05 2021-03-16 杭州电子科技大学 一种固态硬盘页级缓存区管理方法
US10977181B2 (en) 2019-07-10 2021-04-13 International Business Machines Corporation Data placement in write cache architecture supporting read heat data separation

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002014776A (ja) 2000-06-29 2002-01-18 Toshiba Corp ディスク制御システムおよびデータ再配置方法
JP2002182860A (ja) 2000-12-18 2002-06-28 Pfu Ltd ディスクアレイ装置
JP2010079928A (ja) 2002-03-21 2010-04-08 Netapp Inc Raidシステムにおいてストライプの連続アレイに書き込む方法
JP2014160478A (ja) 2010-08-31 2014-09-04 Micron Technology Inc ストライプに基づく不揮発性多値メモリ操作
JP2013065310A (ja) 2011-09-16 2013-04-11 Apple Inc 不揮発性メモリを有するシステムのための高速ツリー平坦化
US20160179678A1 (en) 2014-12-19 2016-06-23 International Business Machines Corporation Non-volatile memory controller cache architecture with support for separation of data streams
US20160188223A1 (en) 2014-12-30 2016-06-30 International Business Machines Corporation Promoting consistent response times in a data storage system having multiple data retrieval mechanisms
US20160188211A1 (en) 2014-12-30 2016-06-30 International Business Machines Corporation Optimizing thin provisioning in a data storage system through selective use of multiple grain sizes
US20170139768A1 (en) 2015-11-18 2017-05-18 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory

Also Published As

Publication number Publication date
US11360903B2 (en) 2022-06-14
US20210011852A1 (en) 2021-01-14
US20210157735A1 (en) 2021-05-27
WO2021005445A1 (en) 2021-01-14
GB2600310B (en) 2023-02-15
JP2022539788A (ja) 2022-09-13
CN114127677A (zh) 2022-03-01
DE112020003290T5 (de) 2022-04-28
DE112020003290B4 (de) 2024-09-26
GB202200757D0 (en) 2022-03-09
US10977181B2 (en) 2021-04-13
CN114127677B (zh) 2024-02-09
GB2600310A (en) 2022-04-27

Similar Documents

Publication Publication Date Title
JP7448569B2 (ja) データ・ストレージ・システムにおけるブロック・モード・トグリング
US10579270B2 (en) Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes
US11138124B2 (en) Migrating data between block pools in a storage system
CN112447245B (zh) 非易失性随机存取存储器中的混合读取电压校准
JP7496841B2 (ja) 読出しヒート・データ分離をサポートしている書込みキャッシュ・アーキテクチャ内でのデータ配置
US11762569B2 (en) Workload based relief valve activation for hybrid controller architectures
US11056199B2 (en) Updating corrective read voltage offsets in non-volatile random access 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
JP7486534B2 (ja) ストレージ・システムにおけるブロック・プール・サイズの適合
US11036427B2 (en) Using content addressable memory to perform read-modify-write operations in non-volatile random access memory (NVRAM)
CN112346658B (zh) 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率
US11119855B2 (en) Selectively storing parity data in different types of memory

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

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240229

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240528

R150 Certificate of patent or registration of utility model

Ref document number: 7496841

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150