[go: up one dir, main page]

JP2014179084A - ソリッドステート・メディアにおいてマルチレベル・マッピングを使用する機構 - Google Patents

ソリッドステート・メディアにおいてマルチレベル・マッピングを使用する機構 Download PDF

Info

Publication number
JP2014179084A
JP2014179084A JP2014048594A JP2014048594A JP2014179084A JP 2014179084 A JP2014179084 A JP 2014179084A JP 2014048594 A JP2014048594 A JP 2014048594A JP 2014048594 A JP2014048594 A JP 2014048594A JP 2014179084 A JP2014179084 A JP 2014179084A
Authority
JP
Japan
Prior art keywords
map
request
level map
entry
media
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014048594A
Other languages
English (en)
Other versions
JP2014179084A5 (ja
Inventor
T Cohen Earl
ティー.コーエン アール
Baryudin Leonid
バリュディン レオニード
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.)
LSI Corp
Original Assignee
LSI 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 LSI Corp filed Critical LSI Corp
Publication of JP2014179084A publication Critical patent/JP2014179084A/ja
Publication of JP2014179084A5 publication Critical patent/JP2014179084A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

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 (AREA)

Abstract

【課題】論理アドレスと、アドレス範囲とを含む要求を受け取るメディア・コントローラを提供する。
【解決手段】この要求に応答して、メディア・コントローラは、受け取られた要求が無効にする要求であるかどうかを判定する。受け取られた要求タイプが無効にする要求である場合、メディア・コントローラは、マップを使用して、その論理アドレスおよび範囲に関連付けられたマップの1つまたは複数のエントリを特定する。これらのマップ・エントリのそれぞれに関連付けられたマップの中の標識が、これらのマップ・エントリが無効にされるべきことを示すように設定される。メディア・コントローラは、無効にする要求が完了したという確認応答をホスト・デバイスに対して行い、メディア・コントローラのアイドル・モードにおいて、無効にされるべきマップ・エントリに基づいて空きスペース・カウントを更新する。無効にされたマップ・エントリに関連付けられた物理アドレスが、ホスト・デバイスからのその後の要求に関して再使用されるように利用可能にされる。
【選択図】図1

Description

本発明はソリッドステート・メディアにおけるマルチレベル・マッピングに関する。
(関連出願の相互参照)
本出願は、参照によって教示の全体が本明細書に組み込まれている、2012年8月8日に出願した国際特許出願PCT/US2012/049905号の一部継続出願であり、PCT/US2012/049905号の出願日の利益を主張するものである。
本出願は、参照によって教示の全体が本明細書に組み込まれている、2013年3月14日に出願した米国特許仮出願第61/783,555号の出願日の利益を主張するものである。
本出願の主題は、参照によって教示の全体が本明細書に組み込まれている、2012年5月4日に出願した米国特許出願第13/464,433号、2012年8月4日に出願した米国特許出願第13/567,025号、2012年8月31日に出願した米国特許出願第13/600,464号、2012年12月28日に出願した米国特許出願第13/729,966号、および2013年1月23日に出願した米国特許出願第13/748,260号と関係する。
フラッシュ・メモリは、或る特定のタイプの電気的に消去可能なプログラマブル読み出し専用メモリ(EEPROM)である不揮発性メモリ(NVM)である。1つの一般的に使用されているタイプのフラッシュ・メモリ技術が、NANDフラッシュ・メモリである。NANDフラッシュ・メモリは、1セル当たり要求するチップ面積が小さく、通常、1つまたは複数のバンクまたはプレーンに分割される。各バンクは、ブロックに分割され、各ブロックは、ページに分割される。各ページは、ユーザ・データまたは誤り訂正コード(ECC)情報、あるいはユーザ・データとECC情報の両方を格納するための数バイトを含む。
NANDデバイスに関して以下の3つの基本的な動作、すなわち、読み出し、書き込み、および消去が存在する。読み出し動作および書き込み動作は、ページごとに実行される。ページ・サイズは、一般に、2バイトのユーザ・データ(加えて、ECC情報のためのさらなる数バイト)であり、ただし、Nは、整数であり、典型的なユーザ・データ・ページ・サイズは、例えば、1ページ当たり2,048バイト(2KB)、4,096バイト(4KB)、8,192バイト(8KB)、またはそれ以上である。「読み出し単位」は、最少量のデータ、およびNVMから読み取られ、ECCによって訂正されることが可能な対応するECC情報であり、通常、4Kビットから32Kビットまでの範囲内であることが可能である(例えば、一般に、1ページ当たり整数の読み出し単位が存在する)。ページは、通常、ブロックとして構成され、消去動作は、ブロックごとに実行される。典型的なブロック・サイズは、例えば、1ブロック当たり64ページ、128ページ、またはそれ以上である。ページは、通常、ブロック内の下位のアドレスから上位のアドレスに向って順次に書き込まれなければならない。より下位のアドレスには、そのブロックが消去されるまで再書き込みすることができない。各ページに関連付けられているのが、ECC情報および/またはメモリ管理のために使用される他のメタデータの格納のために一般に使用される予備の領域(通常、100〜640バイト)である。ECC情報は、一般に、ページの中に格納されたユーザ・データの誤りを検出し、訂正するのに使用され、メタデータは、物理アドレスに論理アドレスをマップするため、および物理アドレスから論理アドレスにマップするために使用されることが可能である。複数のバンクを有するNANDフラッシュ・チップにおいて、各バンクからの複数のページが実質的に並行にアクセスされることを可能にするマルチバンク動作がサポートされることが可能である。
NANDフラッシュ・メモリは、フローティング・ゲート・トランジスタから作られたメモリ・セルのアレイの中に情報を格納する。これらのトランジスタは、電荷とも呼ばれる電圧レベルを、外部電源が供給されることなしに、数ヶ月または数年のオーダの長期間にわたって保つ。シングル・レベル・セル(SLC)フラッシュ・メモリにおいて、各セルは、1ビットの情報を格納する。マルチレベル・セル(MLC)フラッシュ・メモリにおいて、各セルは、フラッシュ・メモリの複数のセルのフローティング・ゲートに印加すべき複数のレベルの電荷の間で選択を行うことによって、1セル当たり複数のビットを格納することができる。MLC NANDフラッシュ・メモリは、同一の数のトランジスタを使用して、より多くのビットが格納されることを可能にするようにシリアルで結合されたトランジスタ構成で1セル当たり複数の電圧レベルを使用する。このため、個々に考慮すると、各セルは、そのセルの中に格納された論理ビット値(複数可)に対応する特定のプログラミングされた電荷を有し(例えば、SLCフラッシュの場合、0または1、MLCフラッシュの場合、00、01、10、11)、それらのセルは、各セルに関する1つまたは複数のしきい値電圧に基づいて読み取られる。しかし、1セル当たりのビット数を増やすことは、セル間干渉および保持ノイズを増加させて、読み出し誤りの尤度を高め、このため、システムのビット誤り率(BER)を高める。さらに、各セルの読み出ししきい値電圧は、例えば、読み出しディスターブ、書き込みディスターブ、保持損失、セルの経年変化、ならびにプロセス、電圧、および温度(PVT)の変動に起因して、NVMの動作時間につれて変化して、やはり、BERを高める。
前述したとおり、通常のNVMは、新たなデータがブロックに書き込まれることが可能であるにはまず、そのブロックが消去されることを要求する。このため、1つまたは複数のNVMチップを使用するソリッドステート・ディスク(SSD)などのNVMシステムは、通常、「陳腐な」、つまり、古くなったデータを消去して、実現されるフラッシュ・メモリ容量を小さくする、大部分が古くなったデータでフラッシュ・メモリが一杯になることを防止する「ガーベジ・コレクション」プロセスを周期的に開始する。しかし、NVMブロックは、デバイス障害が生じるまで、限られた回数しか消去することができない。例えば、SLCフラッシュは、約100,000回しか消去できない可能性があり、MLCフラッシュは、約10,000回しか消去できない可能性がある。したがって、NVMの動作寿命につれて(例えば、NANDフラッシュの場合、定格のプログラミング/消去(P/E)サイクル数につれて)、NVMは消耗し、フラッシュ・メモリのブロックは、障害を生じて、使用不能になる。NVMにおけるブロック障害は、ハードディスク・ドライブ(HDD)におけるセクタ障害に類似する。通常のNVMシステムは、NVMのすべてのブロックにわたって可能な限り均一にP/Eサイクルを分散させる消耗平準化(wear−levelling)を実行することも可能である。このため、NVMシステムの寿命にわたって、不良なブロックの数が増加し、および/またはシステム・データ要件(例えば、論理−物理変換テーブル、ログ、メタデータ、ECCなど)のために使用されるストレージの量が増加するにつれ、全体的なストレージ容量が小さくなる可能性がある。このため、ガーベジ・コレクション・プロセス中にNVMに書き込まれるデータの量を減らすことが重要であり得る。
ガーベジ・コレクション・プロセス中、依然として有効であるブロック内のユーザ・データが、背景プロセスにおいて記憶媒体上の新たなロケーションに移動される。「有効な」ユーザ・データは、ホスト・デバイスがこのデータをもはや使用していない場合でも、少なくとも1回、書き込まれたことのある任意のアドレスである可能性がある。ガーベジ・コレクション中に再書き込みされる「有効」ではあるが、もはや必要とされないデータの量を減らすのに、いくつかのストレージ・プロトコルは、NVMが、以前に保存されたデータのブロックを不要または無効と指定できるようにして、それらのブロックがガーベジ・コレクション中に移動されないようにし、それらのブロックが新たなデータを格納するのに利用可能にされ得るようにするコマンドをサポートする。そのようなコマンドの例が、SATA TRIM(データ・セット管理)コマンド、SCSI UNMAPコマンド、マルチメディアカード(MultiMediaCard)(MMC)ERASEコマンド、およびセキュア・デジタル(SD)カードERASEコマンドである。一般に、そのようなコマンドは、完全にトリミングされたNVMが、同一のタイプの新規に製造された(すなわち、空の)NVMの性能に近い性能を有するようにNVM性能を向上させる。しかし、多数のブロックに関してこれらのコマンドを一度に実行することは、時間がかかり、NVMの動作効率を低下させる可能性がある。
この概要は、詳細な説明において後段でさらに説明される選定された概念を、簡略化された形態で概説するために与えられる。この概要は、主張される主題の重要な特徴、または不可欠な特徴を特定することは意図しておらず、主張される主題の範囲を限定するのに使用されることも意図していない。
説明される実施形態は、ソリッドステート・メディアのためのメディア・コントローラを提供する。このメディア・コントローラは、少なくとも1つの論理アドレスと、アドレス範囲とを含む要求をホスト・デバイスから受け取る制御プロセッサを含む。この要求に応答して、制御プロセッサは、受け取られた要求が無効にする要求(invalidating request)であるかどうかを判定する。受け取られた要求タイプが無効にする要求である場合、制御プロセッサは、メディア・コントローラのマップを使用して、その論理アドレスおよび範囲に関連付けられたマップの1つまたは複数のエントリを特定する。これらのマップ・エントリのそれぞれに関連付けられたマップの中の標識が、これらのマップ・エントリが無効にされるべきことを示すように設定される。制御プロセッサは、無効にする要求が完了したという確認応答をホスト・デバイスに対して行い、メディア・コントローラのアイドル・モードにおいて、無効にされるべきマップ・エントリに基づいて空きスペース・カウントを更新する。無効にされたマップ・エントリに関連付けられた物理アドレスが、ホスト・デバイスからのその後の要求に関して再使用されるように利用可能にされる。
説明される実施形態の他の態様、特徴、および利点が、後段の詳細な説明、添付の特許請求の範囲、および添付の図面から、より完全に明白となる。図面では、同様の参照符号は、同様の、または同一の要素を識別する。
例示的な実施形態によるフラッシュ・メモリ・ストレージ・システムを示すブロック図である。 単一の標準のフラッシュ・メモリ・セルを示す例示的な機能ブロック図である。 例示的な実施形態による例示的なNAND MLCフラッシュ・メモリ・セルを示す図である。 図1のフラッシュ・メモリ・ストレージ・システムのフラッシュ・メモリの例示的な構成を示すブロック図である。 図1のフラッシュ・メモリ・ストレージ・システムの論理ブロック図番号(LBA)の論理ページ番号(LPN)部分の例示的なマッピングを示すブロック図である。 図1のフラッシュ・メモリ・ストレージ・システムの例示的な2レベル・マッピング構造を示すブロック図である。 図1のフラッシュ・メモリ・ストレージ・システムによって使用される例示的なマップ・ページ・ヘッダを示すブロック図である。 図1のフラッシュ・メモリ・ストレージ・システムによって使用されるメガTRIM動作を示す例示的な流れ図である。
説明される実施形態は、ソリッドステート・メディアに関するメディア・コントローラを提供する。このメディア・コントローラは、少なくとも1つの論理アドレスと、アドレス範囲とを含む要求をホスト・デバイスから受け取る制御プロセッサを含む。この要求に応答して、制御プロセッサは、受け取られた要求が無効にする要求であるかどうかを判定する。受け取られた要求タイプが無効にする要求である場合、制御プロセッサは、メディア・コントローラのマップを使用して、その論理アドレスおよび範囲に関連付けられたマップの1つまたは複数のエントリを特定する。これらのマップ・エントリのそれぞれに関連付けられたマップの中の標識が、これらのマップ・エントリが無効にされるべきことを示すように設定される。制御プロセッサは、無効にする要求が完了したという確認応答をホスト・デバイスに対して行い、メディア・コントローラのアイドル・モードにおいて、無効にされるべきマップ・エントリに基づいて空きスペース・カウントを更新する。無効にされたマップ・エントリに関連付けられた物理アドレスが、ホスト・デバイスからのその後の要求に関して再使用されるように利用可能にされる。
表1が、説明される実施形態を理解する助けとして本明細書全体で使用される頭字語のリストを定義する。
Figure 2014179084
図1は、不揮発性メモリ(NVM)ストレージ・システム100のブロック図を示す。NVMストレージ・システム100は、メディア・コントローラ120に結合されたメディア110を含む。メディア110は、NANDフラッシュ・ソリッドステート・ディスク(SSD)として、ハードディスク・ドライブ(HDD)などの磁気記憶媒体として、またはハイブリッド・ソリッドステート−磁気システムとして実装されることが可能である。図1には示されないものの、メディア110は、複数のフラッシュ・チップなどの1つまたは複数の物理メモリ(例えば、不揮発性メモリ、NVM)を、通常、含むことが可能である。図1に示されるとおり、メディア110とメディア・コントローラ120とがひとまとまりとしてSSD101である。メディア・コントローラ120は、ソリッドステート・コントローラ130と、制御プロセッサ140と、バッファ150と、入出力インターフェース160とを含む。メディア・コントローラ120は、メディア110と、通信リンク170に結合されたホスト・デバイス180との間のデータの転送を制御する。メディア・コントローラ120は、システム・オン・チップ(SoC)として、または他の集積回路(IC)として実装されることが可能である。ソリッドステート・コントローラ130は、メディア110内のメモリ・ロケーションにアクセスするのに使用されることが可能であり、通常、低レベルのデバイス固有の動作を実装して、メディア110とのインターフェースをとる。バッファ150は、制御プロセッサ140のためのキャッシュの役割、および/またはソリッドステート・メディア110とホスト・デバイス180との間の動作のための読み出し/書き込みバッファの役割をするように使用されるRAMバッファであることが可能である。例えば、データが、一般に、入出力インターフェース160とリンク170とを介した、ソリッドステート・メディア110とホスト・デバイス180との間の転送中にバッファ150の中に一時的に格納されることが可能である。バッファ150は、通信リンク170のデータ転送サイズとメディア110の格納単位サイズ(例えば、読み出し単位サイズ、ページ・サイズ、セクタ・サイズ、またはマップされた単位サイズ)との差を勘案するようにデータをグループ化する、または分割するのに使用されることが可能である。バッファ150は、スタティック・ランダム・アクセス・メモリ(SRAM)として、またはメディア・コントローラ120内部の組み込みダイナミック・ランダム・アクセス・メモリ(eDRAM)として実装されることが可能であるが、バッファ150は、ダブル・データ・レート(例えば、DDR−3)DRAMとして通常、実装されることが可能な、メディア・コントローラ120外部のメモリ(図示せず)を含むことも可能である。
制御プロセッサ140が、ソリッドステート・コントローラ130と通信して、メディア110の中のデータに対するデータ・アクセス(例えば、読み出し動作または書き込み動作)を制御する。制御プロセッサ140は、1つまたは複数のPentium(登録商標)プロセッサ、Power PC(登録商標)プロセッサ、Tensilica(登録商標)プロセッサ、またはARMプロセッサとして、あるいは様々なプロセッサ・タイプの組み合わせとして実装されることが可能である(Pentium(登録商標)は、インテル・コーポレーション(Intel Corporation)の登録商標であり、Tensilica(登録商標)は、テンシリカ社(Tensilica Inc.)の商標であり、ARMプロセッサは、ARMホールディングス(ARM Holdings, plc)によるものであり、Power PC(登録商標)は、IBM社の登録商標である)。図1では単一のプロセッサとして示されるものの、制御プロセッサ140は、複数のプロセッサ(図示せず)によって実装されるとともに、説明される実施形態により、しきい値最適化された(threshold optimized)動作を実行することを含む動作のために必要とされるソフトウェア/ファームウェアを含むことも可能である。制御プロセッサ140は、メディア110に書き込まれるデータに関するLDPC符号化、およびメディア110から読み出されるデータに関する復号化を実行する低密度パリティ検査(LDPC)符号器/復号器(コーデック)142と通信状態にある。また、制御プロセッサ140は、ホスト動作の論理アドレス(例えば、読み出し/書き込み動作のための論理ブロック・アドレス(LBA)など)とメディア110上の物理アドレスとの間の変換を行うのに使用されるマップ144とも通信状態にある。本明細書で使用されるように、LBAという用語は、HPA(ホスト・ページ・アドレス)と同義である。
通信リンク170が、NVMシステム100とインターフェースをとるコンピュータ・システムであることが可能なホスト・デバイス180と通信するのに使用される。通信リンク170は、カスタム通信リンクであることが可能であり、あるいは、例えば、スモール・コンピュータ・システム・インターフェース(「SCSI」)プロトコル・バス、シリアル・アタッチト(Serial Attached)SCSI(「SAS」)プロトコル・バス、シリアル・アドバンスト・テクノロジー・アタッチメント(Serial Advanced Technology Attachment)(「SATA」)プロトコル・バス、ユニバーサル・シリアル・バス(Universal Serial Bus)(「USB」)、イーサネット(Ethernet)リンク、IEEE802.11リンク、IEEE802.15リンク、IEEE802.16リンク、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(Peripheral Component Interconnect Express)(「PCI−E」)リンク、シリアル・ラピッド(Serial Rapid)入出力(「SRIO」)リンク、または周辺デバイスをコンピュータに接続するための他の任意の類似したインターフェース・リンクなどの標準通信プロトコルにより動作するバスであることが可能である。
図2は、ソリッドステート・メディア110内に見られることが可能な単一のフラッシュ・メモリ・セルの例示的な機能ブロック図を示す。フラッシュ・メモリ・セル200は、2つのゲートを有するMOSFETである。ワード線制御ゲート230は、フローティング・ゲート240の上に配置される。フローティング・ゲート240は、ワード線制御ゲート230、およびMOSFETチャネルから絶縁層によって絶縁され、MOSFETチャネルは、Nチャネル250および260と、Pチャネル270とを含む。フローティング・ゲート240は、電気的に絶縁されるため、フローティング・ゲート240に加えられた電荷は、留まり、通常、数ヶ月にもわたって大きく放電されない。フローティング・ゲート240が電荷を保持する場合、フローティング・ゲート240は、セルのしきい値電圧を変えるワード線制御ゲート230による電界を部分的にキャンセルする。しきい値電圧は、チャネルを導通させるように制御ゲート230に印加される電圧の量である。チャネルが導通することによって、例えば、フローティング・ゲート240上の電荷を検知することによって、セルの中に格納された値が特定される。
図3は、ソリッドステート・メディア110内に見られることが可能である例示的なNAND MLCフラッシュ・メモリ・ストリング300を示す。図3に示されるとおり、フラッシュ・メモリ・ストリング300は、ドレインからソースまで直列に接続された、1つまたは複数のワード線トランジスタ200(2)、200(4)、200(6)、200(8)、200(10)、200(12)、200(14)、および200(16)(例えば、8つのフラッシュ・メモリ・セル)、ならびにビット線選択トランジスタ304を含むことが可能である。この直列接続は、ビット線322が完全に引き下げられるように対応するゲートを高に駆動することによって、接地選択トランジスタ302、ワード線トランジスタ200(2)、200(4)、200(6)、200(8)、200(10)、200(12)、200(14)、および200(16)、ならびにビット線選択トランジスタ304がすべて「オンにされる」ようになっている。オンにされるワード線トランジスタ200(2)、200(4)、200(6)、200(8)、200(10)、200(12)、200(14)、および200(16)の数(または、これらのトランジスタが線形領域で動作しているか、飽和領域で動作しているか)を変えることにより、MLCストリング300が複数の電圧レベルを実現することができるようになり得る。通常のMLC NANDフラッシュは、フローティング・ゲートを有する64のトランジスタの「NANDストリング」(例えば、図3に示されるとおり)を使用することが可能である。書き込み動作中、書き込まれるべきワード線位置でNANDストリングに高い電圧が印加される。読み出し動作中、所望される読み出しロケーションに対応するトランジスタを除いて、NANDストリングにおけるすべてのトランジスタのゲートに電圧が印加される。所望される読み出しロケーションは、フローティング・ゲートを有する。
本明細書で説明されるとおり、SLC NANDフラッシュとMLC NANDフラッシュの両方において、各セルは、読み出ししきい値電圧レベルとの比較などによって検知され得る電荷電圧レベル(例えば、アナログ信号)を有する。メディア・コントローラは、電荷電圧レベルを読み出し、セルの対応するバイナリ値を検出するのに使用される所与の数の所定の電圧しきい値を有することが可能である。例えば、MLC NANDフラッシュに関して、3つのしきい値(0.1、0.2、0.3)が存在する場合、セル電圧レベルが0.0≦セル電圧<0.1である際、そのセルは、[00]という値を有すると検出されることが可能である。セル電圧レベルが0.1≦セル電圧<0.2である場合、値は、[10]であることが可能であり、以下同様である。このため、測定されたセル・レベルは、そのセル・レベルが、2つのしきい値の中間にあると判定され、およびそのセル・レベルが検出され得るまで、通常、1つずつのしきい値と比較されることが可能である。このため、検出されたデータ値が、メモリ・コントローラ120の復号器に供給されて、検出された値(例えば、誤り訂正コードと一緒に)が復号されて、ホスト・デバイス180に供給されるべきデータにされる。
図4は、図1のソリッドステート・メディア110の例示的な構成のブロック図を示す。図4に示されるとおり、メディア110は、スペース不足(Out−of−Space)(OOS)条件が生じるのを防止するようにオーバ・プロビジョニング(over−provisioning)(OP)を伴って実装されることが可能である。図4に示されるとおり、OPは、3つの様態で実現されることが可能である。第1に、SSD製造業者が、通常、「GB」という用語を用いて10進数のギガバイトを表すが、10進数のギガバイト(1,000,000,000バイト、つまり、10バイト)と2進数のギガバイト(1,073,741,824バイト、つまり、230バイト)は等しくない。したがって、SSDの物理容量は、2進数のGBに基づくので、SSDの論理容量が10進数のGBに基づく場合、SSDは、7.37%(例えば、[(230−10)/10])の組み込まれたOPを有することが可能である。このことが、図4に「7.37%」OP402として示される。しかし、このOPのいくらか、例えば、合計容量の2〜4%は、NANDフラッシュの不良なブロック(例えば、欠陥)のために失われる可能性がある。第2に、OPは、ホスト・デバイス180が利用できない、システムが使用するための特定の量の物理メモリを取って置くことによって実装されることも可能である。例えば、製造業者が、128GBの合計物理容量に基づいて、100GB、120GB、または128GBの論理容量を有する製造業者のSSDに関する仕様を公開して、これにより、場合により、それぞれ28%、7%、または0%の例示的なOPを実現することが可能である。このことが、図4に静的OP(「0から28+%」)404として示される。
第3に、いくつかのストレージ・プロトコル(例えば、SATA)は、ホスト・デバイス180が、以前に保存されたデータのブロックを不要または無効と指定できるようにして、ガーベジ・コレクション中にNVMシステム100がそれらのブロックを保存しないようにする「TRIM」コマンドをサポートする。TRMコマンドに先立って、ホスト・デバイス180が或るファイルを消去した場合、そのファイルは、ホスト・デバイス・レコードから除去されているが、NVMシステム100の実際の内容は、実際には消去されておらず、このことにより、NVMシステム100が、ガーベジ・コレクション中に無効なデータを保持することになり、これにより、NVM容量が小さくなる。TRIMコマンドを使用することによる効率的なガーベジ・コレクションによるOPが、図4に動的OP406として示される。動的OP406およびユーザ・データ408が、ホスト・デバイス180の活性のデータを含むメディア110の領域を形成する一方で、OP領域402および404は、ホスト・デバイス180の活性のデータを含まない。TRIMコマンドは、オペレーティング・システムが、データのいずれのページが、ユーザまたはオペレーティング・システム自らによる消去のために今では無効であるかをSSDに通知することを可能にする。削除動作中、OSは、削除されたセクタに新たなデータのために空いているという印を付け、もはや有効でないという印が付けられるべき削除されたセクタに関連するSSDの論理ブロック・アドレス(LBA)の1つまたは複数の範囲を指定するTRIMコマンドを送る。
TRIMコマンドを実行した後、メディア・コントローラは、トリミングされたLBAからのデータを、ガーベジ・コレクション中に再配置せず、メディアに対する書き込み動作の回数を減らし、これにより、書き込み拡大を小さくするとともに、ドライブ寿命を増加させる。TRIMコマンドは、一般に、TRIMコマンドが影響を及ぼすデータを不可逆に削除する。TRIMコマンドの例が、SATA TRIM(データ・セット管理)コマンド、SCSI UNMAPコマンド、マルチメディアカード(MMC)ERASEコマンド、およびセキュア・デジタル(SD)カードERASEコマンドである。一般に、TRIMは、完全にトリミングされたSSDが、同一のタイプの新規に製造された(すなわち、空の)SSDの性能に近い性能を有するようにSSD性能を向上させる。
一般に、メディア・コントローラ120は、ホスト・デバイス180から受け取られたコマンドを実行する。これらのコマンドのうちの少なくともいくつかは、データがホスト・デバイス180から送られて、メディア110にデータを書き込み、またはメディア110からデータを読み出し、読み出されたデータをホスト・デバイス180に送る。メディア・コントローラ120は、1つまたは複数のデータ構造を使用して、論理メモリ・アドレス(例えば、ホスト動作に含められたLBA)をメディアの物理アドレスにマップする。LBAがSSDの中に書き込まれる際、LBAは、一般に、毎回、異なる物理ロケーションに書き込まれ、各書き込みは、そのLBAのデータが不揮発性メモリ(例えば、メディア110)の中でどこに存在するかを記録するようにマップを更新する。例えば、2012年8月8日に出願した国際特許出願PCT/US2012/049905号で説明されるようなシステムにおいて、メディア・コントローラ120は、リーフ・レベルと、より上位の1つまたは複数のレベルとを含むマルチレベル・マップ構造(例えば、マップ144)を使用する。リーフ・レベルは、1つまたは複数のエントリをそれぞれが有するマップ・ページを含む。接続されたメディア(例えば、メディア110)のLBAなどの論理アドレスが、マルチレベル・マップ構造の中で調べられて、リーフ・レベル・ページのうちの特定の1つのページの中の複数のエントリのうちの対応する1つが特定される。LBAの対応するエントリは、そのLBAに関連付けられたメディア110の物理アドレスなどの、そのLBAに関連付けられた情報を含む。一部の実施例において、対応するエントリは、その対応するエントリが有効であるか、または無効であるかについて、および、オプションとして、そのLBAに対してTRIMコマンドが実行され(「トリミングされ」)ているか、または全く書き込まれていないかについての指示をさらに備える。例えば、無効なエントリは、関連するLBAがトリミングされているかどうかなどの情報を、無効なエントリの物理ロケーション部分の中に符号化することができる。
LBAを調べるのを迅速化するのに、リーフ・レベル・ページのうちの少なくともいくつかのページのキャッシュ(図示せず)が保持されることが可能である。一部の実施形態において、マップ・データ構造の少なくとも一部分が、ホスト・デバイス180からは見えないプライベート・ストレージのために使用される(例えば、メディア・コントローラ120のログ、統計、マッピング・データ、または他のプライベート/制御データを格納するのに)。
本明細書で説明されるとおり、マップ144は、ホスト・デバイス180によって使用される論理データ・アドレス指定と、メディア110によって使用される物理データ・アドレス指定の間で変換を行う。例えば、マップ144は、ホスト・デバイス180によって使用されるLBAと、メディア110の1つまたは複数のフラッシュ・チップ(flash dies)のブロック・アドレスおよび/またはページ・アドレスの間で変換を行う。例えば、マップ144は、論理アドレスと物理アドレスの間の変換を実行する、または調べる1つまたは複数のテーブルを含むことが可能である。
各LBAに関連するデータは、固定の、圧縮されていないサイズで、またはそれぞれの圧縮されたサイズで、メディア110の対応する物理アドレスにおいて格納される。本明細書で説明されるとおり、読み出し単位は、メディア110のページの一部分などの、独立に読み出し可能であるメディア110の最も細かい粒度である。読み出し単位は、誤り訂正コード(ECC)によって保護されるすべてのデータとともに、ECCの検査ビットおよび/または冗長性データを含む(またはそのようなビットおよび/またはデータに対応する)ことが可能である。図5は、マップ144によるLBAのLPN部分をマップする実施形態の選択された詳細を示す。図5に示されるとおり、LBA506は、論理ページ番号(LPN)502と、論理オフセット504とを含む。マップ144は、LPN502を、読み出し単位アドレス508、および読み出し単位での長さ510(および、場合により、省略記号で示される他のマップ・データ)を含むマップ・データ512に変換する。マップ・データ512は、通常、マップ144のマップ・テーブルの中にマップ・エントリとして格納されることが可能である。マップ144は、通常、システム100が能動的に使用中である各LPNにつき1つのマップ・エントリを保持することが可能である。図示されるとおり、マップ・データ512は、読み出し単位アドレス508と、読み出し単位での長さ510とを含む。一部の実施形態において、長さおよび/またはスパンは、LPNに関連付けられたデータの長さを、読み出し単位での長さ510の全部(または一部分)におけるスパンからのオフセットとして格納することなどによって、符号化されて格納される。スパン(または読み出し単位での長さ)は、LPNに関連付けられたデータを取得するのに読み出されるべき読み出し単位の数を指定するのに対して、長さ(LPNに関連付けられたデータの)は、SSDの各ブロックの中の使用されるスペースの量を追跡するブロック使用されるスペース(Block Used Space)(BUS)などの統計のために使用される。通常、長さは、スパンと比べて、より細かい粒度を有する。
一部の実施形態において、第1のLPNが、第1のマップ・エントリに関連付けられ、第2のLPN(第1のLPNとは異なるが、第1のLPNによって参照される論理ページと同一サイズの論理ページを参照する)が、第2のマップ・エントリに関連付けられ、第1のマップ・エントリの読み出し単位でのそれぞれの長さは、第2のマップ・エントリの読み出し単位でのそれぞれの長さとは異なる。そのような実施形態において、同一の時点で、第1のLPNが、第1のマップ・エントリに関連付けられ、第2のLPNが、第2のマップ・エントリに関連付けられ、第1のマップ・エントリのそれぞれの読み出し単位アドレスは、第2のマップ・エントリのそれぞれの読み出し単位アドレスと同一であり、したがって、第1のLPNに関連付けられたデータと第2のLPNに関連付けられたデータはともに、メディア110の同一の物理読み出し単位の中に格納される。
様々な実施形態において、マップ144は、1レベル・マップ、第1レベル・マップ(FLM)と、ホスト・プロトコルのLBAをメディア110内の物理格納アドレスに関連付ける1つまたは複数の第2レベル(またはより下位レベルの)マップ(SLM)とを含む2レベル・マップのいずれかである。例えば、図6に示されるとおり、例えば、マップ144内で、FLM610が、メディア・コントローラ120内にオンチップで保持される。一部の実施形態において、FLM610の不揮発性(ただし、わずかにより古い)コピーもまた、メディア110上に格納される。FLM610の中の各エントリは、実質的に、SLMページ(例えば、SLM616のうちの1つ)に対するポインタである。SLM616は、メディア110の中に格納され、一部の実施形態において、これらのSLMのうちのいくつかは、マップ144のオンチップSLMキャッシュ(例えば、SLMキャッシュ608)の中にキャッシュされる。FLM610の中のエントリは、対応する第2レベル・マップ・ページ(例えば、SLMキャッシュ608またはメディア110の中の)のアドレス(および、場合により、アドレスまたは他の情報のデータ長/範囲)を含む。図6に示されるとおり、マップ・モジュール144は、所与のLBA(例えば、LBA602)の第1の関数(例えば、そのLBAを、第2レベル・マップ・ページのそれぞれの中に含められたエントリの固定の数で割った際に得られる商)を、SLM616として示される複数の第2レベル・マップ(SLM)のうちの1つの中のそれぞれのアドレスに関連付ける第1レベル・マップ(FLM)610を有する2レベル・マップを含むことが可能であり、各SLMは、LBAの第2の関数(例えば、そのLBAを、第2レベル・マップ・ページのそれぞれの中に含められたエントリの固定の数で割った際に得られる剰余)を、そのLBAに対応するメディア110内のそれぞれのアドレスに関連付ける。
例えば、図6に示されるとおり、トランスレータ604が、或るホスト動作に対応するLBA(LBA602)(例えば、ホスト180からの、メディア110上の対応するLBAに対して読み出しまたは書き込みを行う要求)を受け取る。トランスレータ604は、例えば、LBA602を、対応するSLMページ616の各ページの中のエントリの整数で割ることによって、LBA602をFLMインデックス606およびSLMページ・インデックス614に変換する。説明される実施形態において、FLMインデックス606は、この除算演算の商であり、SLMページ・インデックス614は、この除算演算の剰余である。この除算演算を使用することは、SLMページ616が、2のべき乗でない数のエントリを含むことを可能にし、このことは、SLMページ616のサイズが小さくされることを許して、SLMページ616を更新する書き込み動作に起因するメディア110の書き込み拡大を小さくすることが可能である。FLMインデックス606は、FLM610の中のエントリを一意的に識別するのに使用され、このエントリは、SLMページ616のうちの1つに対応するSLMページ・インデックス(614)を含む。612で示されるとおり、FLMエントリのSLMページ・インデックスに対応するSLMページがSLMキャッシュ608の中に格納される実例において、FLM610が、LBA602に対応するメディア110の物理アドレスを戻すことが可能である。SLMページ・インデックス614は、SLM616の中のエントリを一意的に識別するのに使用され、このエントリは、618で示されるとおり、LBA602に対応するメディア110の物理アドレスに対応する。SLM616のエントリは、読み出し単位アドレス(例えば、フラッシュ・ページのECC訂正可能な下位単位のアドレス)、および読み出し単位の長さとして符号化されることが可能である。
SLMページ616(または、より低レベルのマルチレベル・マップ(MLM)構造)はすべて、同一数のエントリを含むことが可能であり、またはSLMページ616(または、より低レベルのMLM構造)のそれぞれは、異なる数のエントリを含むことが可能である。さらに、SLMページ616(または、より低レベルのMLM構造)のエントリは、同一の粒度であることが可能であり、または粒度は、SLMページ616(または、より低レベルのMLM構造)のそれぞれに関して設定されることが可能である。例示的な実施形態において、FLM610は、1エントリ当たり4KBの粒度を有し、SLMページ616(または、より低レベルのMLM構造)のそれぞれは、1エントリ当たり8KBの粒度を有する。このため、例えば、FLM610の中の各エントリは、512BのLBAの整列された8セクタ(4KB)領域に関連付けられ、SLMページ616のうちの1つのページの中の各エントリは、512BのLBAの整列された16セクタ(8KB)領域に関連付けられる。
一部の実施形態において、FLM610(またはMLM構造のより高レベルのマップ)のエントリは、対応するより低レベルのマップ・ページのフォーマット情報を含む。図7は、例示的なFLM700のブロック図を示す。図示されるとおり、FLM700のN個のエントリ701のそれぞれが、対応するより低レベルのマップ・ページのフォーマット情報を含む。図示されるとおり、FLM700は、SLMページ粒度702と、読み出し単位物理アドレス範囲704と、各LBAに関するデータ・サイズ706と、データ無効標識708と、TRIM動作進行中標識710と、TRIM LBA範囲712と、処理されるべき(To−Be−Processed)(TBP)標識714とを含むことが可能である。また、他のメタデータ(図示せず)が含められることも可能である。マップ・ページ粒度702は、FLM700のエントリに対応するSLMページの粒度を示す。読み出し単位物理アドレス範囲704は、例えば、開始読み出し単位アドレスおよびスパンとして、FLM700のエントリに対応するSLMページの読み出し単位(複数可)の物理アドレス範囲を示す。各LBA706に関するデータ・サイズは、関連するLBAのデータを得るのに読み出されるべき読み出し単位の数、またはFLM700のエントリに対応するSLMページに関してメディア110の中に格納された関連するLBAのデータのサイズを示す。データ無効標識708は、関連するLBAのデータが既にトリミングされている、またはそれ以外で無効にされているなどのために、関連するLBAのデータが、メディア110の中に存在しないことを示す。代替の実施形態において、データ無効標識は、読み出し単位物理アドレス範囲704の一部として符号化されることが可能である。後段でより詳細に説明されるとおり、TRIM動作進行中標識710は、TRIM LBA範囲712によって示されるLBAに対してTRIM動作が進行中であることを示す。一部の実施形態において、TRIM動作進行中標識710は、TRIM LBA範囲712の一部として符号化されることが可能である。TBP標識714は、マップ・ページに関連するLBAが既に無効にされている(例えば、トリミングされているようにホスト180に見える)が、それらのLBAが、新たなデータを書き込むのにまだ利用できない場合、そのことを示す。より高レベルのマップ・エントリに無効の印を付けるのとは異なり、より高レベルのマップ・エントリのTBPビットを設定することは、そのより高レベルのマップ・エントリの中に格納されたより低レベルのマップ・ページの物理アドレスが無効であることは暗示せず、つまり、そのより低レベルのマップ・ページがBUS更新のために処理されるまで、その物理アドレスは、要求され、そのより低レベルのマップ・ページ自体、割り当て解除され得ない。このため、より低レベルのマップ・ページは、以下の3つの状態、すなわち、無効、有効、またはTBPのうちの1つに入っていることが可能である。
本明細書で説明されるマルチレベル・マップ(MLM)構造を使用するSSDは、複数のリーフ・レベル・マップ単位にわたる改良されたTRIM動作を可能にする。このため、標準のTRIM動作の場合のように個々のLBAエントリを無効にする代わりに、改良されたTRIM動作は、MLM構造のより高いマップ・レベルにおけるリーフ単位全体を無効にすることができる。このことは、メディア・コントローラ120に結合されたホスト・デバイスから見てTRIM動作の待ち時間を短縮して、より高いシステム性能を有利に可能にする。しかし、リーフ・レベル・マップの中のトリミングされた個々のLBAエントリを単に破棄することは、トリミングされたLBAが依然としてブロック使用されるスペース(BUS)に寄与しているように見えるので、BUSアカウンティングの不正確さを被る可能性がある。BUSカウントは、所与のブロック、または所与のグループのブロック(例えば、最も少ないBUSを有するブロック)に対していつガーベジ・コレクションを実行すべきかを判定して、ガーベジ・コレクション書き込み拡張を小さくする1つの方法として、フラッシュ・ブロックごとに、またはグループのフラッシュ・ブロックごとになど、SSDの不揮発性メモリの各領域に関して、メディア・コントローラ120によってメディア110の中に保持される。このため、BUSが不正確であることは、不正確なガーベジ・コレクション、および/またはメディア110に対するより多くの回数の書き込みをもたらして、書き込み拡大を大きくするとともに、SSD寿命を短くする可能性がある。改良されたTRIM動作は、ホスト・デバイスに対してTRIM動作の確認応答を行った後に、背景でBUSカウントを更新することによってBUSの正確さも維持しながら、LBAの迅速なトリミングを実行することができる。
説明される実施形態において、TRIM動作は、トリミングされたすべてのLBAに無効の印を付けるようにMLM構造を更新する。さらに、TRIM動作は、メディア110の対応する領域のBUSカウントから、トリミングされたLBAによって前に使用されていたフラッシュ・スペースを引いて、正確なガーベジ・コレクションをもたらす。このため、特定のLBAを適切にトリミングするのに、以下の2つのことが行われる。すなわち、その特定のLBAがMLM構造の中で無効にされ、BUSカウントが、その特定のLBAがもはやフラッシュ・スペースを消費しないことを反映して更新される。しかし、大きいトリム領域(例えば、SSD全体)または複数の大きいトリム領域の場合、無効化およびBUS更新を実行するのに要求される時間は、大きくなり、システム性能に悪影響を与える可能性がある。
本明細書で説明される、FLMの中に格納されたSLMページ情報は、対応するSLMページ内のLBAが既に無効にされている(例えば、トリミングされているようにホスト180に見える)が、TRIM動作のBUS更新部分がまだ完了していない場合、そのことを示す指示(例えば、処理されるべき(TBP)標識714)を含むことが可能である。より高レベルのマップ・エントリに無効の印を付けるのとは異なり、より高レベルのマップ・エントリのTBP標識を設定することは、そのより高レベルのマップ・エントリの中に格納されたより低レベルのマップ・ページの物理アドレスが無効であることは暗示せず、つまり、そのより低レベルのマップ・ページがBUS更新のために処理されるまで、その物理アドレスは、要求され、そのより低レベルのマップ・ページ自体、割り当て解除され得ない。しかし、そのより高レベルのマップ・エントリに関連するすべてのユーザ・データは、そのより高レベルのマップ・エントリに無効の印が付けられているとした場合と同じく、ホスト読み出し操作に関して無効である。
メディア110の中に格納された関連するLBAのデータのサイズ(例えば、706)は、SSD101がTRIM動作を実行する際に対応する領域に関するBUS値を更新するのに使用される。例えば、これらのサイズ値が、対応する領域のBUSカウントから引かれる。MLM構造を使用する実施形態において、BUSカウントを更新することは、BUSカウントを更新することが、リーフ・レベル・マップ・エントリを1つずつ処理することを要求するので、時間がかかり得る。処理時間を改善するのに、説明される実施形態は、SSD101の背景動作モードでメディア110の対応する領域のBUSカウントを更新するメガTRIM動作を使用する。
例えば、SSD101が、ホスト180からTRIMコマンドを受け取ると、メディア・コントローラ120が、TRIMコマンドに関連付けられたSLMページ(複数可)に対応するFLMエントリ(例えば、701)のそれぞれのTBP標識(例えば、714)を設定するメガTRIM動作を実行する。そのTRIM動作が、そのSLMページの中のSLMエントリの一部分だけにしか影響しない場合、一部の実施形態は、トリミングされるSLMエントリに無効の印を付けること、およびSLMページのトリミングされる部分を反映するようにBUSカウントを更新することによって、部分的SLMページの個々を更新することによって、部分的SLMページの個々のエントリを処理することが可能である。他の実施形態は、TBP標識(例えば、714)、TRIM動作進行中標識(例えば、710)、およびTRIM LBA範囲(例えば、712)を使用して、トリミングされたSLMエントリに無効の印を付けること、およびBUSカウントを更新することの遅延を許すことによって、部分的SLMページを更新することを遅らせることが可能である。次に、部分的にトリミングされたSLMページのその後の部分的TRIM動作が、オプションとして、および/または選択的に、部分的にトリミングされたSLMページに対する更新動作の一部またはすべてを即時に実行して、所与のTRIM LBA範囲(例えば、712)内で複数の部分範囲を追跡する必要性を回避する。しかし、代替の実施形態は、TRIM LBA範囲(例えば、712)内の複数の部分範囲を追跡して、トリミングされたSLMエントリに無効の印を付けること、およびBUSカウントを更新することのより長い遅延を許すことが可能である。
メガTRIM動作が実行されると、関連するLBAを無効にした後、SSD101は、BUSカウントが更新されるのに先立って、ホスト180に対してTRIMコマンドの確認応答を行うことが可能である。次に、BUSカウントを更新することが、SSD101の背景プロセスにおいて実行される(TRIM範囲、およびホスト180によって開始された活動の量に依存して、通常、数秒から数分までの範囲内に完了する)。関連するFLMエントリの中でTBP標識が設定されているSLMページのうちの1つが完全に処理される(例えば、トリミングされたSLMエントリに無効の印を付け、トリミングされたSLMページの中のすべてのSLMエントリに関するBUSカウントを更新して)たびに、関連するFLMエントリの中のTBP標識がクリアされる。SLMページのうちの1つのページのSLMエントリのすべてがトリミングされた場合、関連するFLMエントリには、トリミングされたという印が付けられて、新たな書き込みが、そのSLMページ内の少なくとも1つのエントリを有効にするまで、そのSLMページをさらに処理する必要性を除く。
図8は、メガTRIM動作800の流れ図を示す。図8に示されるとおり、ステップ802で、TRIM動作要求が、SSD101によってホスト180から受け取られる。ステップ804で、SSD101が、TRIM動作の範囲(例えば、1つまたは複数の開始LBAおよび終了LBA)を特定する。SSD101は、TBP指標が設定されて、FLMのその部分が、BUSカウントを更新し、メディア110のメモリ・ブロックをホスト180が再び利用できるようにする背景動作を要求することを示す、FLMの部分を示すFLMの開始TBPインデックス(min_flm_index_tbt)および終了TBPインデックス(max_flm_index_tbt)を保持することが可能である。背景で(例えば、SSD101の別のアイドルの時間中に)、SSD101が、開始TBPインデックスにおけるFLMエントリを検査することと、そのFLMエントリ上にTBPが設定されている場合、関連するSLMページを読み出すことと、関連するSLMページの中の各エントリに応じてBUSカウントを更新し、そのFLMエントリの中のTBP標識をクリアし、そのFLMエントリにトリミングされたという印を付けて、そのSLMページ全体がトリミングされたことを示すことによって、そのSLMページ全体をトリミングすることとが可能である。開始TBPインデックス(min_flm_index_tbt)が、そのエントリが処理されたことを示すように更新される。
図8に示されるとおり、或るトリム範囲(例えば、SATAの場合、セクタごとに64のNCQトリム範囲(the 64−per−sector NCQ trim range)のうちの1つ)を有するTRIMコマンドが処理されると、ステップ806で、SSD101が、そのTRIM範囲の最初のSLMページとそのTRIM範囲の最後のSLMページの少なくともいずれかが、部分的SLMページである(例えば、そのTRIM範囲が、そのSLMページの一部だけに適用される)かどうかを判定する。ステップ806で、その範囲の始め、または終わりに部分的SLMページが存在する場合、ステップ808で、SSD101は、その部分的SLMページがキャッシュ608の中に格納されているかどうかを判定する。ステップ808で、そのTRIM範囲の始め、または終わりの部分的SLMページがキャッシュ608の中に格納されている場合、プロセス800は、ステップ812に進む。ステップ808で、そのTRIM範囲の始め、または終わりの部分的SLMページがキャッシュ608の中に格納されていない場合、ステップ810で、SSD101は部分的SLMページをメディア110からキャッシュ608へフェッチし、プロセス800はステップ812に進む。ステップ812で、TRIM動作のその範囲内にある部分的SLMページのエントリに関してTRIM動作が実行される。例えば、その部分的SLMページの中のTRIM範囲内の任意のLBAに対応する、そのTRIM範囲内のSLMページ・エントリが更新される。SLMページの中のエントリを更新することは、データ無効標識を設定すること、およびBUSカウントを更新することを含む。プロセス800は、ステップ820に進む。
ステップ806で、そのSLMページが部分的SLMページではなかった場合、ステップ814で、SSD101は、完全なSLMページがキャッシュ608の中に格納されているかどうかを判定する。ステップ814で、完全なSLMページがキャッシュ608の中に格納されている場合、プロセス800は、ステップ816に進む。ステップ814で、完全なSLMページがキャッシュ608の中に格納されていなかった場合、ステップ818で、SSD101は、そのSLMページに対応するFLMの中のTBP標識(例えば、714)を設定する。プロセス800は、ステップ820に進む。
或るSLMページがメディア101からフェッチされる必要がある際、関連するFLMエントリの中でTBPが設定されている場合、そのSLMページは、完全に無効にされている(そのSLMページ内のすべてのエントリは、ホスト・アクセスに関して無効として扱われる)が、そのSLMページは、BUS更新の目的でまだ処理されていない。読み出しに関して、そのSLMページは、必要とされず(そのSLMページによって参照されるすべてのデータは、トリミングされている)、そのSLMページをフェッチすることは、要求されない。書き込みに関して、そのSLMページは、フェッチされ、そのSLMページの中のすべてのLBAに関してBUSカウントが更新され、そのSLMページの中のすべてのエントリは、無効にされ、その後、書き込まれているそのSLMページ内のSLMエントリが更新される。ステップ816で、書き込みのための動作のサブセットが実行される。すなわち、そのSLMページの中のすべてのLBAに関してBUSカウントが更新され、そのSLMページの中のすべてのエントリが無効にされる。
ステップ822で、SSD101は、TBP標識が設定されていて(例えば、min_flm_index_tbtおよびmax_flm_index_tbt)、FLMのその部分が、BUSカウントを更新し、メディア110のメモリ・ブロックをホスト180が再び利用できるようにする背景動作を要求することを示す、FLMのエントリの範囲を特定する。ステップ824で、残りのTRIM動作(例えば、BUSカウントを更新すること、およびメモリ・ブロックを、ホスト180によって使用可能であるものとして解放すること)が背景で行われる(例えば、SD101の別のアイドルな時間中に)。SSD101は、ステップ816でメモリ・ブロックがトリミングされると(例えば、メモリ・ブロックのBUSカウントが更新されると)更新される1つまたは複数のポインタを保持して、ブロックが処理されるにつれ新たなTRIM範囲が記憶されることを確実にすることが可能である。例えば、SSD101が、開始TBPインデックスにおけるFLMエントリを検査することと、そのFLMエントリ上でTBPが設定されている場合、関連するSLMページを読み出すことと、BUSカウントを更新し、そのFLMエントリの中のTBP標識をクリアし、そのFLMエントリにトリミングされたという印を付けて、そのSMLページ全体がトリミングされたことを示すことによってそのSLMページ全体をトリミングすることとが可能である。開始TBPインデックス(min_flm_index_tbt)は、そのエントリが処理されたことを示すように更新される。ステップ824で背景TRIM動作が完了すると、ホスト180に対してTRIM動作の確認応答が行われる。ステップ826で、プロセス800は完了する。
このため、本明細書で説明されるとおり、説明される実施形態は、ソリッドステート・メディアのためのメディア・コントローラを提供する。このメディア・コントローラは、少なくとも1つの論理アドレスと、アドレス範囲とを含む要求をホスト・デバイスから受け取る制御プロセッサを含む。この要求に応答して、制御プロセッサは、受け取られた要求が無効にする要求であるかどうかを判定する。受け取られた要求タイプが無効にする要求である場合、制御プロセッサは、メディア・コントローラのマップを使用して、その論理アドレスおよび範囲に関連付けられたマップの1つまたは複数のエントリを特定する。これらのマップ・エントリのそれぞれに関連付けられたマップの中の標識が、これらのマップ・エントリが無効にされるべきことを示すように設定される。制御プロセッサは、無効にする要求が完了したという確認応答をホスト・デバイスに対して行い、メディア・コントローラのアイドル・モードにおいて、無効にされるべきマップ・エントリに基づいて空きスペース・カウントを更新する。無効にされたマップ・エントリに関連付けられた物理アドレスが、ホスト・デバイスからのその後の要求に関して再使用されるように利用可能にされる。
本明細書で「1つの実施形態」または「或る実施形態」に言及することは、その実施形態に関連して説明される特定のフィーチャ、構造、または特徴が、少なくとも1つの実施形態に含まれ得ることを意味する。本明細書の様々な箇所における「一実施形態において」という句の出現は、必ずしもすべて同一の実施形態を指すわけではなく、別々の実施形態も、代替の実施形態も、必ずしも他の実施形態と相容れないわけでもない。同じことは、「実施例」という用語にも当てはまる。
本出願で使用されるように、「例示的」という語は、例、実例、または例示の役割をすることを意味するように本明細書で使用される。本明細書で「例示的」と説明される態様または設計は、必ずしも、他の態様または設計より好ましいとも、有利であるとも解釈されるべきではない。むしろ、例示的という語の使用は、具体的な方法で概念を提示することを意図している。
例示的な実施形態は、デジタル・シグナル・プロセッサ、マイクロコントローラ、または汎用コンピュータとしての可能な実装を含め、ソフトウェア・プログラムにおける処理ブロックに関連して説明されてきたが、説明される実施形態は、そのように限定されない。当業者には明白なとおり、ソフトウェアの様々な機能は、回路のプロセスとして実装されることも可能である。そのような回路は、例えば、単一の集積回路、マルチチップ・モジュール、単一のカード、またはマルチカード回路パックにおいて使用されることが可能である。
また、説明される実施形態は、それらの方法を実施するための方法および装置の形態で実現されることも可能である。また、説明される実施形態は、磁気記録媒体、光記録媒体、ソリッドステート・メモリ、フロッピー・ディスケット、CD−ROM、ハードドライブ、または他の任意の一時的でないマシン可読記憶媒体などの一時的でない実体のある媒体として実現されたプログラム・コードの形態で実現されることも可能であり、そのプログラム・コードが、コンピュータなどのマシンにロードされ、そのマシンによって実行されると、そのマシンが、説明される実施形態を実施するための装置となる。説明される実施形態は、例えば、一時的でないマシン可読記憶媒体の中に格納されて、マシンにロードされ、および/またはマシンによって実行されるか、あるいは電気配線もしくはケーブル配線を介して、光ファイバを介して、または電磁放射を介してなど、何らかの伝送媒体または搬送波を介して伝送されるかにかかわらず、プログラム・コードの形態で実現されることも可能であり、そのプログラム・コードが、コンピュータなどのマシンにロードされ、そのマシンによって実行されると、そのマシンが、説明される実施形態を実施するための装置となる。汎用プロセッサ上で実装されると、プログラム・コード・セグメントは、そのプロセッサと一緒になって、特定の論理回路と同様に動作する独特のデバイスをもたらす。また、説明される実施形態は、説明される実施形態の方法および/もしくは装置を使用して生成された、媒体を介して電気的に、もしくは光学的に伝送される信号値のビットストリームまたは他のシーケンス、磁気記録媒体の中の格納された磁界変化などの形態で実現されることも可能である。
本明細書で提示される例示的な方法のステップは、必ずしも、説明される順序で実行されることは必須ではないものと理解されるべきであり、そのような方法のステップの順序は、単に例示的であるものと理解されたい。同様に、そのような方法にさらなるステップが含められることも可能であり、いくつかのステップが、説明される様々な実施形態と合致する方法において省略される、または組み合わされることも可能である。
要素および標準に関連して本明細書で使用される「互換性がある」という用語は、その要素が、その標準によって完全な様態で、または部分的に指定される様態で他の要素と通信し、他の要素によって、その標準によって指定される様態でそれらの他の要素と通信することが十分にできるものと認識されることを意味する。互換性のある要素は、内部では、その標準によって指定される様態で動作しなくてもよい。特に明記しない限り、各数値および各範囲は、「約」または「ほぼ」という語がその値または範囲の値に先行するかのように、近似であるものと解釈されたい。
この説明に関して、「結合する」、「結合している」、「結合された」、「接続する」、「接続している」、または「接続された」という用語は、2つ以上の要素間でエネルギーが伝達されることが許される、当技術分野で知られている、または後に開発される任意の様態を指し、さらなる1つまたは複数の要素を介在させることが企図されるが、必須ではない。逆に、「直接に結合された」、「直接に接続された」などの言い方は、そのようなさらなる要素が無いことを暗示する。信号、および対応するノードもしくはポートは、同一の名前で呼ばれることが可能であるとともに、本明細書では互いに区別されない。
説明される実施形態の性質を説明するために説明され、例示されてきた部分の詳細、材料、および構成の様々な変更が、以下の特許請求の範囲に記載される範囲を逸脱することなく、当業者によって行われることが可能であることが、さらに理解されよう。

Claims (10)

  1. ソリッドステート・メディアおよびホスト・デバイスと通信状態にあるメディア・コントローラによって受け取られたホスト要求を処理する方法であって、
    前記メディア・コントローラにより、前記ホスト・デバイスからの要求を受け取り、前記要求は、少なくとも1つの論理アドレスと、アドレス範囲とを含むこと、
    前記要求を受け取ったことに応答して、
    前記受け取られた要求が無効にする要求であるかどうかを判定し、前記受け取られた要求タイプが無効にする要求である場合、
    前記メディア・コントローラのマップを使用して、前記ソリッドステート・メディアの前記少なくとも1つの論理アドレスおよび前記アドレス範囲に関連付けられた前記マップの1つまたは複数のエントリを特定すること、
    前記マップの中で、前記マップ・エントリのそれぞれに関連付けられた標識に印を付け、前記標識は、前記1つまたは複数のマップ・エントリが無効にされるべきことを示すこと、
    前記ホスト・デバイスに対して、前記無効にする要求が完了したという確認応答を行うこと、
    前記メディア・コントローラのアイドル・モードにおいて、無効にされるべき前記1つまたは複数のマップ・エントリに基づいて前記メディア・コントローラの空きスペース・カウントを更新すること、および
    前記無効にされたマップ・エントリに関連付けられた物理アドレスを、前記ホスト・デバイスからのその後の要求に関して再使用されるように利用可能にすることを備える方法。
  2. 前記マップは、第1レベル・マップと、第2レベル・マップとを備えるマルチレベル・マップである方法であって、
    複数の第2レベル・マップ・ページの複数のエントリのそれぞれを、前記ソリッドステート・メディアの物理アドレスに関連付けること、および
    前記第1レベル・マップの複数のエントリのそれぞれを或る第2レベル・マップ・ページに関連付け、その結果、前記少なくとも1つの論理アドレス、および前記アドレス範囲を前記第2レベル・マップ・エントリのうちの少なくとも1つに関連付けることをさらに備える、請求項1に記載の方法。
  3. 各第2レベル・マップ・エントリは、有効指示を備え、
    各第1レベル・マップ・エントリは、前記第2レベル・マップ・ページのうちの対応する1ページのアドレスと、前記第1レベル・マップ・エントリに関連付けられた前記第2レベル・マップの1つまたは複数のエントリに対応する有効指示と、前記第2レベル・マップのエントリが無効であるが、書き込むのに利用できない場合にそのことを示すように構成された処理されるべき(TBP)標識とを備える方法であって、
    前記要求の前記アドレス範囲内に完全に含まれる前記第2レベル・マップ・ページのうちのページに関連付けられた前記第1レベル・マップの中の前記TBP標識のうちの特定のTBP標識を設定することによって、前記第2レベル・マップのエントリを無効にすることをさらに備える、請求項2に記載の方法。
  4. 前記要求の前記アドレス範囲内に部分的にだけ含まれる前記第2レベル・マップ・ページのうちのページのエントリを直接にトリミングすることによって、前記第2レベル・マップのエントリを無効にすることをさらに備える、請求項3に記載の方法。
  5. 前記TBP標識が所与の第2レベル・マップに関して設定されている場合、前記所与の第2レベル・マップに関する後続の無効にする要求が受け取られるまで、前記所与の第2レベル・マップに関する前記無効にする要求を処理することを遅延させて、その結果、前記無効にする要求に関する処理時間を短くし、前記所与の第2レベル・マップを更新する前記ソリッドステート・メディアに対する書き込み動作を少なくすることをさらに備える、請求項3に記載の方法。
  6. 前記第2レベル・マップの前記無効にされたエントリのそれぞれを、前記ホスト・デバイスからのその後の要求に関して再使用されるように利用可能にする前記ステップは、
    設定されている場合、前記関連付けられたTBP標識をクリアすること、および
    設定されている場合、関連付けられた有効標識をクリアすることを備える、請求項3に記載の方法。
  7. 前記メディア・コントローラのマップ・メモリの中に前記第1レベル・マップを格納すること、
    前記ソリッドステート・メディアの中に前記第2レベル・マップ・ページのすべてを格納すること、および
    前記メディア・コントローラの制御プロセッサに結合されたマップ・キャッシュの中に前記第2レベル・マップ・ページの少なくともサブセットを一時的に格納することをさらに備える、請求項3に記載の方法。
  8. 前記メディア・コントローラの前記空きスペース・カウントは、複数のエントリを有するブロック使用されるスペース・テーブルを備える方法であって、
    前記ブロック使用されるスペース・テーブルの各エントリを前記ソリッドステート・メディアの複数の物理領域のうちの1つに関連付けることをさらに備える、請求項1に記載の方法。
  9. 前記無効にする要求は、シリアル・アドバンスト・テクノロジー・アタッチメント(SATA)TRIMコマンド、スモール・コンピュータ・システム・インターフェース(SCSI)UNMAPコマンド、マルチメディアカード(MMC)ERASEコマンド、およびセキュア・デジタル(SD)カードERASEコマンドのうちの1つである、請求項1に記載の方法。
  10. 各第1レベル・マップ・エントリは、前記要求の前記範囲内に含まれる前記関連付けられた第2レベル・マップのいくつかの部分を追跡するように構成された少なくとも1つのTRIMアドレス範囲標識を備える請求項3に記載の方法。
JP2014048594A 2013-03-14 2014-03-12 ソリッドステート・メディアにおいてマルチレベル・マッピングを使用する機構 Pending JP2014179084A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361783555P 2013-03-14 2013-03-14
US61/783,555 2013-03-14
US13/963,074 2013-08-09
US13/963,074 US20140047210A1 (en) 2012-08-08 2013-08-09 Trim mechanism using multi-level mapping in a solid-state media

Publications (2)

Publication Number Publication Date
JP2014179084A true JP2014179084A (ja) 2014-09-25
JP2014179084A5 JP2014179084A5 (ja) 2017-03-16

Family

ID=50067103

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014048594A Pending JP2014179084A (ja) 2013-03-14 2014-03-12 ソリッドステート・メディアにおいてマルチレベル・マッピングを使用する機構

Country Status (3)

Country Link
US (1) US20140047210A1 (ja)
JP (1) JP2014179084A (ja)
TW (1) TWI637315B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2016067749A1 (ja) * 2014-10-29 2017-04-27 三菱電機株式会社 映像音声記録装置および監視システム
JP2022016899A (ja) * 2020-07-13 2022-01-25 キオクシア株式会社 メモリシステム及び情報処理システム

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9043565B2 (en) * 2012-09-07 2015-05-26 Kabushiki Kaisha Toshiba Storage device and method for controlling data invalidation
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US9354955B1 (en) * 2014-03-19 2016-05-31 Western Digital Technologies, Inc. Partial garbage collection for fast error handling and optimized garbage collection for the invisible band
KR20150138528A (ko) * 2014-05-29 2015-12-10 삼성전자주식회사 플래시 메모리를 기반으로 하는 스토리지 시스템 및 그것의 동작 방법
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
JP6482322B2 (ja) 2014-12-29 2019-03-13 東芝メモリ株式会社 メモリ装置及びプログラム
US10120793B2 (en) * 2014-12-29 2018-11-06 Toshiba Memory Corporation Memory device and non-transitory computer readable recording medium
US10331551B2 (en) * 2014-12-29 2019-06-25 Toshiba Memory Corporation Information processing device and non-transitory computer readable recording medium for excluding data from garbage collection
US10552058B1 (en) 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
US20170147499A1 (en) * 2015-11-25 2017-05-25 Sandisk Technologies Llc Multi-Level Logical to Physical Address Mapping Using Distributed Processors in Non-Volatile Storage Device
US10268385B2 (en) * 2016-05-03 2019-04-23 SK Hynix Inc. Grouped trim bitmap
US10061708B2 (en) 2016-05-12 2018-08-28 SK Hynix Inc. Mapped region table
KR102066062B1 (ko) * 2017-01-23 2020-01-15 마이크론 테크놀로지, 인크. 부분적으로 기록된 블록 처리
KR20190044968A (ko) * 2017-10-23 2019-05-02 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
CN108416233B (zh) * 2018-01-19 2020-03-06 阿里巴巴集团控股有限公司 获取输入字符的方法及装置
CN109240939B (zh) * 2018-08-15 2023-04-07 杭州阿姆科技有限公司 一种快速处理固态硬盘trim的方法
KR102795556B1 (ko) * 2018-12-14 2025-04-15 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법
US10942677B2 (en) * 2019-01-24 2021-03-09 Silicon Motion, Inc. Method for performing access management of memory device, associated memory device and controller thereof, associated host device and associated electronic device
KR20200095130A (ko) 2019-01-31 2020-08-10 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11175984B1 (en) 2019-12-09 2021-11-16 Radian Memory Systems, Inc. Erasure coding techniques for flash memory
US11232043B2 (en) * 2020-04-30 2022-01-25 EMC IP Holding Company LLC Mapping virtual block addresses to portions of a logical address space that point to the virtual block addresses
US11586385B1 (en) 2020-05-06 2023-02-21 Radian Memory Systems, Inc. Techniques for managing writes in nonvolatile memory
US11609848B2 (en) * 2020-07-30 2023-03-21 Micron Technology, Inc. Media management based on data access metrics
US11537526B2 (en) 2020-09-10 2022-12-27 Micron Technology, Inc. Translating of logical address to determine first and second portions of physical address
JP7558745B2 (ja) * 2020-10-12 2024-10-01 キオクシア株式会社 メモリシステム及び情報処理システム
US11704054B1 (en) * 2022-01-05 2023-07-18 Silicon Motion, Inc. Method and apparatus for performing access management of memory device with aid of buffer usage reduction control

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008198208A (ja) * 2007-02-13 2008-08-28 Samsung Electronics Co Ltd ホストデータ処理装置の動作方法、ホストデータ処理装置並びにデータ格納装置
JP2011060007A (ja) * 2009-09-10 2011-03-24 Toshiba Corp 制御装置
JP2011128998A (ja) * 2009-12-18 2011-06-30 Toshiba Corp 半導体記憶装置
US20120059976A1 (en) * 2010-09-07 2012-03-08 Daniel L. Rosenband Storage array controller for solid-state storage devices
JP2013504142A (ja) * 2009-09-08 2013-02-04 フュージョン−アイオー・インコーポレーテッド ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
WO2013022915A1 (en) * 2011-08-09 2013-02-14 Lsi Corporation I/o device and computing host interoperation

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8356126B2 (en) * 2005-02-07 2013-01-15 Dot Hill Systems Corporation Command-coalescing RAID controller
JP4643667B2 (ja) * 2008-03-01 2011-03-02 株式会社東芝 メモリシステム
US8386537B2 (en) * 2009-12-15 2013-02-26 Intel Corporation Method for trimming data on non-volatile flash media
US20110161560A1 (en) * 2009-12-31 2011-06-30 Hutchison Neil D Erase command caching to improve erase performance on flash memory

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008198208A (ja) * 2007-02-13 2008-08-28 Samsung Electronics Co Ltd ホストデータ処理装置の動作方法、ホストデータ処理装置並びにデータ格納装置
JP2013504142A (ja) * 2009-09-08 2013-02-04 フュージョン−アイオー・インコーポレーテッド ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
JP2011060007A (ja) * 2009-09-10 2011-03-24 Toshiba Corp 制御装置
JP2011128998A (ja) * 2009-12-18 2011-06-30 Toshiba Corp 半導体記憶装置
US20120059976A1 (en) * 2010-09-07 2012-03-08 Daniel L. Rosenband Storage array controller for solid-state storage devices
WO2013022915A1 (en) * 2011-08-09 2013-02-14 Lsi Corporation I/o device and computing host interoperation

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2016067749A1 (ja) * 2014-10-29 2017-04-27 三菱電機株式会社 映像音声記録装置および監視システム
JP2022016899A (ja) * 2020-07-13 2022-01-25 キオクシア株式会社 メモリシステム及び情報処理システム
JP7500311B2 (ja) 2020-07-13 2024-06-17 キオクシア株式会社 メモリシステム及び情報処理システム

Also Published As

Publication number Publication date
TW201510855A (zh) 2015-03-16
US20140047210A1 (en) 2014-02-13
TWI637315B (zh) 2018-10-01

Similar Documents

Publication Publication Date Title
TWI637315B (zh) 使用在一固態媒體中之多層次映射之修整機制
KR102217048B1 (ko) 솔리드-스테이트 미디어에서 다단계 맵핑을 이용한 트림 메카니즘
US9218281B2 (en) Maintaining ordering via a multi-level map of a solid-state media
US9235346B2 (en) Dynamic map pre-fetching for improved sequential reads of a solid-state media
US9552290B2 (en) Partial R-block recycling
TWI537728B (zh) 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
CN113031856B (zh) 存储器子系统中的断电数据保护
JPWO2007119267A1 (ja) フラッシュメモリ用のメモリコントローラ
US20250147692A1 (en) Supporting multiple active regions in memory devices
KR102876838B1 (ko) 데이터 저장 장치 및 그 동작 방법
CN113590502B (zh) 一种非挥发性记忆体存储设备的垃圾回收方法与垃圾回收系统
US11599466B2 (en) Sector-based tracking for a page cache
CN113590503B (zh) 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统
TWI651650B (zh) 記憶體管理方法及使用所述方法的儲存控制器
US12481584B2 (en) Dual cache architecture and logical-to-physical mapping for a zoned random write area feature on zone namespace memory devices
US12216586B2 (en) Dynamically sized redundant write buffer with sector-based tracking
CN111309642B (zh) 一种存储器及其控制方法与存储系统
CN114077404B (zh) 使存储器单元与主机系统解除关联
US20240289053A1 (en) Data type identification schemes for memory systems
CN118535491A (zh) 用于更新逻辑到物理映射的系统和技术

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20140729

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140805

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170213

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180220

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180918