JP2016506585A - データストレージのための方法及びシステム - Google Patents
データストレージのための方法及びシステム Download PDFInfo
- Publication number
- JP2016506585A JP2016506585A JP2015552737A JP2015552737A JP2016506585A JP 2016506585 A JP2016506585 A JP 2016506585A JP 2015552737 A JP2015552737 A JP 2015552737A JP 2015552737 A JP2015552737 A JP 2015552737A JP 2016506585 A JP2016506585 A JP 2016506585A
- Authority
- JP
- Japan
- Prior art keywords
- data
- command
- type
- physical address
- metadata
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
データの物理ストレージアドレスが、ファイルシステムのようなユーザアプリケーションに対して利用可能にされ、かつ物理又は論理ベースでユーザに割り当てることができるメモリシステムの特性が、性能、サイズ、又は冗長性などに関して別々に特徴付けられる半導体タイプの不揮発性メモリにデータを格納するシステム及び方法を説明する。メモリシステムへの読取要求は、メモリシステム内の論理−物理アドレスルックアップを使用するのではなく、読取要求に含められた物理アドレスにアクセスすることによってサービス対応することができる。ガーベージコレクション動作は、ユーザが既知である物理アドレスとデータの実際の物理ロケーションとの間の関係を維持するために仮想−物理−ブロックベースで実行することができる。【選択図】 図2
Description
本出願は、引用によって本明細書に組み込まれる2013年1月8日出願の「データストレージのための方法及びシステム」という名称の米国特許仮出願第61/750,133号に対する優先権の利益を主張するものである。
用語「メモリシステム」及び「ストレージシステム」は、一般的に本明細書では交換可能に使用される。既存の用語は、大きいシステムのオンライン及びニアラインデータのより多くが回転式ディスクドライブよりもFLASHメモリアレイ又は固体ディスク(SSD)のような固体デバイスに格納されているので変化している。ストレージシステムは、主としてディスクベースのものであり、かつディスクドライブの機械的性能によって支配されるデータ検索及び書込待ち時間を有すると考えられていた。多くの場合に、ディスクは、ネットワーク接続を通してプロセッサに接続されていた。メモリシステムは、データを要求するプロセッサに直接に取り付けられるか、又は処理速度においてほとんど障害を引き起こさないほど十分に低い待ち時間を有すると考えられていた。
FLASHメモリアレイの待ち時間がディスクをかなり下回る場合があり、一方、このようなアレイのストレージ容量及び経済性がディスクベースのシステムと直接に競合し始めているので、「メモリシステム」と「ストレージシステム」の区別は、いくらか曖昧である。ここでは、これらの用語は、使用サーバと直接に又は何らかのネットワーク接続を通じて接続されるかに関わらず、固体メモリシステムを説明するために使用される。
用語SSDは、形状因子と業界規格に適合するインタフェースプロトコルとを有する差込可能モジュールを意味する場合がある。このような業界規格は随時変化するので、SSDの特性が、物理的又は電気的意味のいずれにおいても製造業者によって同様に変更されないであろうということは本明細書では示唆しない。用語SSDはまた、そのようなデバイスが業界規格又はストレージ技術の進化の段階を表す場合があるので、メモリ技術、形状因子、又はインタフェースプロトコルと無関係に持続性ストレージ特性を有するあらゆる半導体メモリシステムを説明するのに使用する場合がある。
例えば論理ブロックアドレス(LBA)として使用される時の用語「論理アドレス」は、メモリシステムに格納されたデータを表すためにユーザプログラム、サーバ、又はファイルシステムなどに提示されるか又はそれらによって使用されるアドレス空間として理解しなければならない。例えば物理ブロックアドレス(PBA)として使用される時の用語「物理アドレス」は、メモリシステムに格納されたデータを位置付けるようにメモリシステムに提示されるか又はそれによって使用されるアドレス空間として理解しなければならない。用語LBA及びPBAは、LBAとPBAに格納された情報とがそれによって一意的に関連付けられるように複数のレベルの間接性を有する処理の終点を表すことができる。
不揮発性ストレージ上の持続性ストレージとしてFLASHメモリを有するSSDでは、ユーザによってSSDに提供されるような論理ブロックアドレス(LBA)と情報がSSDに格納された物理ブロックアドレス(PBA)との関係は、フラッシュ変換層(FTL)として公知の機能によって維持することができる。L2Pテーブルのような間接性テーブルは、SSDで格納してこの関係を提供することができ、それは、当業技術で公知のように、FTLがガーベージコレクション(garbage collection)及びウェアレベリング(wear leveling)のようなオーバーヘッド機能を実行する時に自律的に変わる場合がある。従って、物理アドレス空間は、ユーザには露出されない。
用語PBAは、LBAによって参照されたデータが格納されたメモリシステム内の物理(ブロック)アドレスに対する頭字語として使用される場合がある。典型的には、LBAを有するデータのページは、LBAデータサイズ及び関連付けられたメタデータと同じデータサイズを有する物理ページに関連付けられる。LBAに関連付けられたメタデータ及びPBAは、一部の共通の属性を共有することができるが、データの論理的又は格納された態様に関連付けられた機能を提供する場合があり、かつ従って異なるサイズ及びフィールドを有することができる。データの論理的及び物理的表現のメタデータは、データへのアクセスを検証するか又はデータの有効性を保証するなどのために格納又は計算される一部の共通の属性を有することができる。
FLASHメモリシステムの作動を説明する際に用語「ブロック」の追加の用法があるので混乱が生じる場合がある。アーキテクチャ的には、FLASHメモリ回路は、LBAによって参照されて「ブロック」として編成されたデータの対応する量を各々が格納するあるサイズ(例えば、2KB)の複数の物理ページで構成することができる。ブロックは、例えば、256ページを含むことができる。現在利用可能であるNAND FLASHメモリ回路は、ブロックの個々のページを消去することができない特性を有し、ブロックのページのいずれかが消去されることになる場合に全体のブロックが消去される。更に、各ブロックのページは、単調な順序で書き込まれ、あるページが飛び越された場合に、そのページは、ブロック全体の消去前には続けて書き込むことができない。複数のページを含むブロックが本明細書で説明される時に、当業者は、固定された複数のページを含むこのようなブロックとブロック内の特定のページを表すPBAとの区別を理解するであろう。一部の文脈では、用語「物理アドレス」が使用され、この用語は、ブロック又はPBAを指すことができる。物理アドレスのページを含むブロックは、ブロックアドレス又はブロック番号を有するとしてマーク付けすることができ、このようなアドレスは、予め割り当てるか又は仮想化することができる。一部の状況では、物理アドレスは、例えば、ブロック番号とブロック内の物理ページアドレスとを含むことができる。
必然的に、レガシーディスク技術の用語及びFLASHメモリアレイのような固体メモリシステムの用語は、特に、セクター、ページ、及びブロックなどの定義において矛盾する。従って、セクターは、殆どの既存の仮想化手法の典型であるように、ストレージがレガシーの観点から視覚化される時に論理ブロックアドレス(LBA)を有し、一方、固体メモリシステムの内部作動は、あるサイズ(例えば、512b)を有するいくつか(例えば、4)のセクターを各ページが含む多数のページ(例えば、128LBA)としてブロックを処理することができる。ちょうどメモリシステムのファームウェア又はソフトウエアがこれらの構成を受信する必要があるのと同じように、当業者は、現在の従来技術での用語の意味及び使用を認めるであろうし、概念を相応に適応させるであろう。
FLASHメモリデバイスは、例えば、メモリデバイスの各セル内のデータの1ビット、2ビット、又は3又はそれよりも多くのビットのストレージを表す単一レベルセル(SLC)、多重レベルセル(MLC)、又は三重レベルセル(TLC)として特徴付けることができる。デバイスの速度、ストレージ容量、及び耐久性は異なるが、本明細書の開示は、これらのタイプのメモリ、並びに存在するか又は今後に開発される場合がある他の固体メモリ技術のいずれにも適用可能である。
デジタルデータを格納するためのデバイス及び方法を開示し、デバイスは、ブロックとして編成された不揮発性半導体メモリを有するプロセッサを有し、各ブロックは、データを格納可能である複数の物理ロケーションを有する。デバイスは、バッファ又はキャッシュとして使用される揮発性メモリと、ユーザ又はホストと通信するためのデータインタフェースとを有することができる。
態様において、プロセッサは、データインタフェースを通して指令及びデータを受信し、かつ不揮発性半導体メモリ内のデータのストレージを管理するように構成することができる。ユーザから受信したデータを読み取る指令は、データの読取又は書込指令のタイプとデータの関連パラメータとを決定するために評価することができる。
読取指令に関して、指令は、例えば、第1のタイプのデータ読取指令又は第2のタイプのデータ読取指令とすることができる。指令は、指令識別子に基づいて又は指令に関連付けられた引数によって区別することができる。
態様において、データ読取指令は、指令が論理アドレスを含み、かつ物理アドレスを含まない時に第1のタイプのものであり、データ読取指令は、データがメモリに格納された少なくとも物理アドレスを指令が含む時に第2のタイプのものである。
第1のタイプのデータ読取指令に応答して、データの物理アドレスは、例えば、論理−物理関連付けテーブル(L2P)の1形態とすることができるフラッシュ変換層(FTL)に関連付けることができるような間接性テーブルを使用することによって決定される。日付は、不揮発性メモリ内の物理アドレスから検索されてユーザに戻されると考えられる。
第2のタイプの読取指令に応答して、データは、不揮発性メモリ内の物理アドレスから検索されてユーザに戻すことができる。L2Pテーブルは、例えば、検討する必要がない場合があるが、例えば、ガーベージコレクションを容易にするためにアドレス指定の間接性が更にある場合に、物理仮想化テーブルが存在することができる。このテーブルは、同じくL2Pテーブルによって使用することができる。テーブルは、一般的に、アクセス速度のために不揮発性メモリデバイスのバッファメモリのような揮発性メモリ内に維持されるが、それらは、典型的には、停止中にデータを保存するように検閲され、又はそうでなければシステム起動時に再構成される。
データ整合性を維持するために、ユーザは、読取指令に関連してメタデータを供給することができ、プロセッサは、受信したメタデータの少なくとも一部分を不揮発性メモリから読み取られたデータに関連付けられたメタデータと比較する。そのようなデータは、明示的である場合があり、又は格納データから導出されたメタデータである場合があり、かつデータが格納されたメモリシステムの部分の属性を識別することもできる。供給メタデータ及び読取メタデータが整合する場合に、読取データは、ユーザに戻される。そうではない場合は、エラー事例が処理される。
更に別の態様において、プロセッサは、書込指令が、例えば、第1のタイプ又は第2のタイプであるか否かを決定するために、ユーザからのデータ書込指令を解釈するようにプログラムされる。書込指令は、指令が、論理アドレスを含むが、データが格納されることになる物理アドレスを含まない時に第1のタイプのものである場合があり、書込指令は、指令が、データが不揮発性メモリに格納された少なくとも物理アドレスを含む時に第2のタイプのものである。
第1のタイプの書込指令の受信に応答して、第1のタイプの書込指令に関連付けられたデータが格納されることになる不揮発性メモリ内の物理アドレスは、プロトコルに従って決定され、物理アドレスは、間接性テーブル内の論理アドレスに関連付けることができる。
第2のタイプの書込指令に応答して、第2のタイプの書込指令に関連付けられたデータが格納されることになる不揮発性メモリ内の物理アドレスをプロトコルに従って決定し、かつ物理アドレスをユーザへの応答メッセージに含める。
第2の書込指令のメタデータの一部分は、指令のアクションによって修正又は廃物にされているデータが実際に正しいデータであることを検証するために、第2の書込指令に与えられた物理ロケーションで以前に格納されたメタデータの関連部分と比較することができる。メタデータが整合する場合に、入れ替えられているデータの正しい物理ロケーションがアクセスされており、処理は、先に進むことができる。そうでなければ、エラー事例が存在する。
第2のタイプの書込指令が論理アドレスを含む場合に、論理アドレスは、書込指令を用いて供給されたデータの新しいロケーションに対して格納されることになるメタデータに含めることができる。しかし、そのような論理アドレスが与えられない場合に、論理アドレスは、プロセッサによって与えられ、ユーザへの応答メッセージの一部として戻すことができ、この論理アドレスは、新たに格納されたデータのためのメタデータの一部として格納することができる。メタデータは、例えば、論理アドレス、対応する物理アドレスに格納されたデータのハッシュ、シーケンス番号、又は時間値のうちの少なくとも1つを含むことができる。
不揮発性メモリが、そこにストレージロケーションを有する複数のブロックから構成される場合に、ブロックの群は、RAIDタイプ又はガーベージコレクションプロトコルなどのような共通属性を共有するために論理アドレス範囲又は物理アドレス範囲のうちの一方に関連付けることができる。
メモリシステム内のメモリの物理又は論理範囲を脱アロケートするように作動することができるタイプのTRIM指令を含む他のタイプの指令は、メモリデバイスによって受信して処理することができる。これは、識別されたストレージロケーションを廃物として指定し、エントリをL2P又は他の間接性テーブルから除去する段階を含むと考えられる。TRIM指令は、ファイルシステムがストレージ処理のこの態様を管理することを許可するようにデータをメモリ範囲から削除するように作動することができる。従って、TRIM指令は、基本論理ブロックアドレス及び範囲、基本論理ブロックアドレス及びいくつかのストレージロケーション、又は基本アドレス及びビットマップなどを含むことができる。同じ手法は、物理ロケーションベースでメモリストレージロケーションを廃用(obsolete)とする時に使用することができる。これらの状況において、データは、事実上廃棄され、かつガーベージコレクション動作中に消去を受ける。この作動は、無効にされることになるデータロケーションの適正な識別に依存するので、メタデータの比較は、少なくともブロックベースで行うことができる。
データのストレージを管理する方法は、プロセッサと、揮発性メモリと、不揮発性メモリとを有するデータを格納するための不揮発性メモリデバイスを与える段階を含む。態様において、プロセッサは、データ読取指令が第1のタイプのデータ読取指令又は第2のタイプのデータ読取指令であるか否かを決定するためにユーザから受信したデータ読取指令を解釈するように構成される。データ読取指令は、指令が論理アドレスを含み、かつ物理アドレスを含まない時に第1のタイプのものであり、データ読取指令は、データがメモリに格納された少なくとも物理アドレスを指令が含む時に第2のタイプのものである。
第1のタイプのデータ読取指令に応答して、プロセッサは、データの物理アドレスを決定する段階と、データを不揮発性メモリ内の物理アドレスから検索する段階と、データをユーザに戻す段階とを実行し、又は第2のタイプの読取指令に応答して、プロセッサは、データを不揮発性メモリ内の物理アドレスから検索する段階と、データをユーザに戻す段階とを実行する。論理アドレスと物理アドレスの関係は、不揮発性メモリデバイ内の間接性テーブルに維持される。
態様において、データを検索する段階は、検索されたデータのためのメタデータを検索し、検索されたデータのメタデータの少なくとも一部分を読取指令の第1又は第2のタイプ内のメタデータの少なくとも一部分と比較する段階を含むことができる。
態様において、本方法は、書込指令が第1のタイプ又は第2のタイプであるか否かを決定するためにユーザからのデータ書込指令を解釈する段階を更に含むことができる。書込指令は、指令が論理アドレスを含み、かつ指令がデータが格納されることになる物理アドレスを含まない時に第1のタイプのものとすることができ、指令がデータがメモリに格納された少なくとも物理アドレスを含む時に第2のタイプのものとすることができる。
第1のタイプの書込指令に応答して、プロセッサは、第1のタイプの書込指令に関連付けられたデータが格納されることになる不揮発性メモリ内の物理アドレスをプロトコルに従って決定する段階と、物理アドレスを間接性テーブル内の論理アドレスに関連付ける段階とを実行することができる。
第2のタイプの書込指令に応答して、プロセッサは、第2のタイプの書込指令に関連付けられたデータが格納されることになる不揮発性メモリ内の物理アドレスをプロトコルに従って決定する段階と、物理アドレスをユーザへの応答メッセージ内に及び間接性テーブル内に含める段階とを実行することができる。
プロセッサは、書込指令の第1又は第2のタイプに関連付けられたデータを不揮発性メモリに書き込む段階と、書込指令の第1又は第2のタイプに関連付けられたメタデータを不揮発性メモリデバイスに書き込む段階とを実行する。
態様において、本方法は、第2のタイプ書込指令のメタデータの一部分が第2のタイプの書込指令の物理アドレスに格納されたメタデータの一部分に整合する場合に、第2のタイプの書込指令に応答して物理アドレスを決定する段階を実行する段階を含む。第2のタイプの書込指令が第1の論理アドレスを含む場合に、決定された物理アドレスに対して格納されたメタデータの一部分として第1の論理アドレスを使用する段階、又は第2のタイプの書込指令が第1の論理アドレスを含まない場合に、決定された物理アドレスに関連付けられた第2の論理アドレスをユーザへの応答メッセージに与える段階と、決定された物理アドレスに格納されたデータのためのメタデータとして第2の論理アドレスを格納する段階とがある。
態様において、メタデータは、論理アドレス、論理アドレスに格納されたデータのハッシュ、シーケンス番号、又は時間値などを含むことができる。
不揮発性メモリは、物理アドレスを有するストレージロケーションと、メモリのブロックを含み、メモリのブロックが完全に消去される前に一度書き込むことができる特性を有するストレージアドレスの群とで構成することができる。複数のブロックは、ブロックの群を形成することができ、ブロックの群は、アドレス範囲からアドレス範囲で異なる場合があるメモリ作動特性をユーザに提供するように論理アドレス範囲又は物理アドレス範囲のうちの一方に関連付けられる。
不揮発性メモリと、揮発性メモリと、プロセッサとを含むメモリシステムを与える段階を含むメモリシステム内のガーベージコレクションの方法を開示する。プロセッサは、論理アドレスを物理アドレスに関連付ける第1の間接性テーブルを維持すように作動し、メモリは、複数の物理アドレスを有するブロックとして編成され、各物理アドレスは、有効、廃用、又はフリー(free)のうちの1つであるとして特徴付けられる。
プロトコルに従って複数のブロックのブロックを選択する段階と、選択されたブロックの有効ストレージロケーションからデータを揮発性メモリ内のバッファに読み取り、一方、有効データのそれが読み取られたブロック内の物理アドレスとの関連付けを維持する段階とがある。不揮発性メモリに書き込まれることになるデータは、キャッシュに一時的に格納され、ブロックは消去される。
選択されたブロックの有効ストレージロケーションから読み取られたデータの相対物理アドレスではない物理アドレスがキャッシュ内のデータに割り当てられるように、プロトコルに従って、キャッシュ内のデータのための物理アドレスを間接性テーブルから選択する段階を実行する段階がある。
物理アドレスが割り当てられたバッファ内のデータ及びキャッシュ内のデータは、フリー物理ストレージロケーションを与えるために消去されたブロックのプールから選択されたブロックに書き込まれる。態様において、バッファ内のデータ及びキャッシュ内のデータは、ブロックが消去された後に有効データを保持していたブロックに書き戻すことができる。
物理アドレスは、ブロックのプールから消去ブロックを選択する段階が、有効データが読み取られたブロックのブロックアドレスをフリーブロックのプールから選択されたブロックのブロックアドレスと交換することによって実行することができるように、ブロックアドレスとブロック内の相対物理ロケーションとの組合せによって形成することができる。このようにして、データの最終物理アドレスは、ユーザに露出する必要がない。
例示的な実施形態は、図面を参照することにより深く理解することができるが、これらの実施形態は、制限的性質のものとは意図していない。同じか又は異なる図面中の同様に付番された要素は、同等の機能を実行する。要素は、付番され、又は頭字語によって指定され、又はその両方とすることができ、表現間の選択は、単に明瞭さのために行われ、従って、数字によって指定された要素及び頭字語又は英数字インジケータによって指定された同じ要素は、そのベースでは区別されない。
説明する方法及び図に示す装置は、機械実行可能命令、例えば、ソフトウエアに又はハードウエアに又は両方の組合せに構成又は具現化することができることは認められるであろう。機械実行可能命令は、命令に作用する汎用コンピュータ、DSP、又はアレイプロセッサのような専用プロセッサなどに本明細書に説明する機能を実行させるために使用することができる。これに代えて、作動は、説明する作動を実行する結線論理又はファームウエア命令を有することができる特定のハードウエア構成要素により、又はアナログ回路を含むことができるプログラムされたコンピュータ構成要素及び特殊ハードウエア構成要素のあらゆる組合せによって実行することができる。
本方法は、少なくとも部分的に、本明細書に開示する方法を実行するようにコンピュータ(又は他の電子デバイス)をプログラムするのに使用することができる命令が格納された有形機械可読媒体を含むことができるコンピュータプログラム製品として提供することができる。本明細書の目的上、用語「機械可読媒体」は、コンピュータ機械、又は専用ハードウエアによる実行のために一連の命令又はデータを格納又は符号化することができ、かつ機械又は専用ハードウエアに本発明の方法又は機能のいずれか1つを実行させることができるあらゆる物理媒体を含むように取るものとする。従って、用語「機械可読媒体」は、そのような目的のために開発することができる固体メモリ、光ディスク、及び磁気ディスク、磁気メモリ、及び光メモリ、並びにあらゆる同等のデバイスを含むがこれらに限定されないように取るものとする。
例えば、制限を目的とするのではなく、機械可読媒体は、読取専用メモリ(ROM)、全てのタイプのランダムアクセスメモリ(RAM)(例えば、SRAM、DRAM、PRAM)、プログラマブル読取専用メモリ(PROM)、電子的変更可能読取専用メモリ(EPROM)、磁気ランダムアクセスメモリ、磁気ディスクストレージ媒体、NAND又はNOR構成とすることができるFLASHメモリ、メモリ抵抗器、又は電気データストレージ媒体、光学データストレージ媒体、音響データストレージ媒体などを含むことができる。DRAMのような揮発性メモリデバイスは、コンピュータプログラム製品を格納するのに使用することができるが、揮発性メモリデバイスは、電源を有するシステムの一部であり、電源又はバッテリが、コンピュータプログラム製品が揮発性メモリデバイス上に格納されるか又は使用デバイスによって使用される期間にわたって電力を回路に供給することを条件とする。
更に、1つ又は別の形態(例えば、プログラム、手順、処理、アプリケーション、モジュール、アルゴリズム、又は論理)にあるソフトウエアに関して、アクションを起こすか又は結果を引き起こすように言われるのが当業技術において一般的である。そのような表現は、当業者によって公知のように、コンピュータ又は同等のデバイスによるソフトウエアの命令の実行が、コンピュータ又は同等のデバイスのプロセッサにアクションを実行させるか又は結果を出させるという単に便宜的な言い方である。
図1は、コンピュータシステム1の代表的なシステムアーキテクチャである。ホストコンピュータ5は、プロセッサ10とローカルキャッシュメモリ20とを有する。ローカルキャッシュメモリ20は、典型的には、DRAM又はSRAMのようなランダムアクセス特性と実質的に一定の時間応答とを有する揮発性メモリである。しかし、ローカルキャッシュメモリ20はまた、頻繁に使用されるデータ及びプログラムへの高速アクセスをもたらし、かつ冗長データ又はデータ圧縮などを格納する必要性を低減するように複製解除のような他の機能をもたらすFLASHメモリ構成要素を含むことができる。FLASHメモリは、ホストコンピュータ5のマザーボード上である場合があり、又はPCIeのような高速インタフェースを使用する接続モジュールとすることができる。
FLASHメモリは、従来の回転媒体ディスクをエミュレートする従来のFLASHディスクに対応する形状因子、又は他の形状因子、又は接続性を有することができる。ホストコンピュータ5及びFLASHメモリは、本明細書に説明する概念から逸脱することなく、異なるエンクロージャ又は同じエンクロージャ内とすることができる。用語SSDを使用する場合に、形状因子、インタフェースプロトコルなどを指定する意図はない。むしろ、この用語は、コンピュータ関連のシステム内にプラグ接続可能か又は埋め込まれる固体(典型的には、FLASH)デバイスを表す現在使用されている用語である。
追加のストレージは、メモリシステム100によって与えることができ、これは、PCleファブリック、LAN、WAN、インターネットのようなあらゆる様々な搬送機構50によってホストコンピュータ5に接続される。iSCSI、FCoE、TCI/IPのような特定のプロトコルは、データを搬送してデータの格納及び検索を管理するのに使用することができる。これらは、例えば、ストレージエリアネットワーク(SAN)、ネットワーク接続ストレージ(NAS)などとして特徴付けることができる。しかし、データ及び指令搬送及びこれらの機能の特定のプロトコルの特定の機構は、本明細書に説明するシステム及び方法に関する制限であるとは意図していない。この点を強調するために、ホストコンピュータ5とメモリシステム100の間の搬送は、汎用クラウド50として示されている。
本明細書に説明する指令及び機能は、汎用フォーマットで与えられることが多く、当業者は、既存のプロトコルを使用又は修正するように一般的な説明を適応させるか、又は本明細書に説明する方法及びシステムをもたらすように新しいプロトコルを考案することができるであろう。例えば、いくつかのタイプの読取指令、書込指令、TRIM指令があり、そのような指令は、説明のために名称が与えられる必要があり、かつ指令間で区別するように第1のタイプ、第2のタイプのように一般的に説明することができる。
メモリシステム100は、1つ又はそれよりも多くのメモリモジュール150で構成することができ、各メモリモジュールは、複数のメモリ回路200で構成することができる。メモリモジュール150は、メモリコントローラ又はプロセッサ160と、揮発性ランダムアクセスメモリ170とを有することができる。搬送機構との及び内部構成要素間のインタフェースのようなメモリモジュールの他の詳細は、当業者によって認められるであろう。メモリシステムはまた、指令をメモリモジュールに分散するメモリコントローラ又はプロセッサ140を有することができる。論理−物理メモリロケーション関連付け、ガーベージコレクション、ウェアレベリングのような機能及び他の関連のデータ及び信号処理機能は、特定のシステム設計要件に応じて、例えば、メモリコントローラ140又はプロセッサ160によって実行することができる。
メモリ回路200が例えばFLASHメモリである場合に、そのようなメモリの特性は、一度書き込まれた後に、メモリのブロックは、メモリのブロックのページに再び書き込む前に消去しなければならないということである。この特性により、ブロックを消去することができるように、あらゆる残りの有効データのブロック全体のクリアを含め、ページ及びブロックの再アロケーション及び早期の消耗を回避するために、メモリのブロック上の消耗を均一化するように書き込まれる消去された(フリー)ブロックのプールからの消去されたブロックの選択を管理する通常のフラッシュ変換層(FTL)又は類似のスキーマが生じる。インプレースで又はリロケーションにより、データの定期的リフレッシュのような他の通常業務機能も実行することができる。
多くの場合に、メモリモジュールは、どのバージョンが現在使用されていようとも(頭字語及び参照番号)、回転式媒体を有し、かつSCSIのような業界規格に準拠するハードディスクドライブ(HDD)をエミュレートするように意図される。従って、READ及びWRITEのような指令は、標準フォーマットで又は専用フォーマットで出すことができ、かつLUNの供給を含むことができるが、ホストによるデータのアドレス指定は、論理アドレス空間に実施される。ファイルシステム及び複製解除機能などは、ホスト又はユーザとの関連がある論理アドレス空間において作動することができる。指令は、搬送機構上でコンピュータ1からメモリ100に送られ、ユーザデータが格納された物理メモリロケーションを位置付けるようにFTLによってマップされる。ユーザデータは、ユーザLUN/LBAに従って検索されて要求側アプリケーションに戻すことができる。
ユーザ側でもメモリ側でも、アドレス空間は、アドレス指定において更に別の間接性を受ける場合があり、ユーザは、メモリシステムを各々が別々のアドレス空間を有する論理ユニット番号(LUN)から構成されたと見ることができ、LUNをユーザ又はユーザアプリケーションに割り当てることができるようになっている。LUN/LBAは、次に、メモリシステムのLBAに、その後に、PBAに分解することができる。PBAは、データが格納された物理ロケーションを直接的又は間接的に関わらず指示することができる。従って、ユーザ側では論理空間において間接性があり、メモリ側では物理空間において間接性がある場合がある。更に、アドレス指定は、例えば、同様に処理される特定のサイズのデータのページ、ページの基本アドレス、ページの基本アドレス及び範囲、ページの基本アドレス及びビットマップなどを指定する物理又は論理アドレスとすることができる。
用語LUNは、範囲、RAIDタイプ、ページサイズ、ファイルのタイプ特性のような公知の特性を有するようにユーザに割り当てることができ、かつ対応するストレージロケーションを物理メモリに有するあらゆる論理的メモリ空間を表すことができる。これは、複数のユーザの共存を可能にすることができ、各ユーザは、ユーザアプリケーションに特化されたストレージ特性を有する。例えば、ストレージ特性は、ログ構造化ファイル、映像のようなバルクデータ、又はテーブルデータなどのストレージを容易にするように選択することができる。各LUNの範囲は、異なる場合があるが、それは、各ユーザ又はユーザアプリケーションのストレージ要件が異なる場合があるからである。
例えば、仮想化することができる複数のユーザアプリケーションは、スレッドと同様に、アプリケーション又はユーザの各々に対して選択される特性を維持しながらメモリシステムに同時点にアクセスすることができる。
確立することができる複数のLUNのうちの1つのLUNに着目するために以下に説明する内容を考察することができる。メモリシステムにマップする複数のLUNのうちの各LUNに対して構成された時のメモリシステムの特性は、メモリの物理リソースによって抑制されるので異なる場合がある。メモリシステム内では、LUNの各々は、各LUNに割り当てられる特性をもたらすためにハードウエア全体の部分集合に対して分解することができる。すなわち、論理LUNに対応して、メモリのブロックのマッピングは、論理LUNが物理メモリのブロックの群への排他的アクセスを有することができるように実行することができ、割り当てられた物理メモリのブロックの管理は、関連の論理LUN特性及び要件に従う。
ガーベージコレクションパラメータは、LUN独特とすることができる。例えば、データが、論理的順番でFLASHに最も効率的に書き込まれ、かつメモリリソースをLUNに基づいて割り当てることにより、ガーベージコレクション動作をトリガするのに必要である場合があるデッドブロックの百分率のようなガーベージコレクション判断基準が各LUNに対して異なる場合がある使用事例が存在する場合がある。
ウェアレベリングは、LUNに基づいて管理することができるが、同じくメモリシステムに対して全体的に管理することができ、それは、ウェアレベリング処理の目的が、メモリ回路の予想作動寿命にわたるメモリ回路のブロックの使用量を均一化することであるからである。データをメモリに書き込んでデータのブロックを消去する頻度は、データのタイプ及びユーザ必要性で変わるので、ブロックの消耗の割合は、サービスを受けている特定のLUNに依存すると考えられる。
態様において、消去されたブロックは、フリー(消去済み)ブロックが特定のLUNによって必要とする場合がある時に、共用プール内に置かれ、ポリシーに従ってメモリコントローラによって選択することができる。メモリ側作動を説明するのに使用される時の用語「LUN」は、従って、メモリシステムの特定の部分集合を表すとして理解することができ、特定の部分集合は、LUNを割り当てられたユーザ又はユーザアプリケーションの排他的使用に対して管理される個々のブロック、ブロックの群で形成されたRAID群、ファイルシステムなどに関連付けることができる。従って、ユーザが、ユーザとメモリデバイスの間に配置された処理によって仮想化され、メモリコントローラ又はプロセッサ140によって受信された書込作動の時間シーケンスが、複数の仮想化されたユーザによって開始された書み込み作動の多少ランダム混合物になることができる時でさえも、LUNに現在割り当てられた不揮発性メモリブロックのメモリブロックへの書込作動は、個々にLUNの各々のメモリブロックに対して順番に処理することができる。これは、各々が使用アプリケーション独特である複数のメモリシステム特性の保守に寄与する。
ウェアレベリングに関して、例えば、LUNは、ブロックのストレージロケーションの特定の百分率が廃用であるか又は特定の百分率が廃用又はフリーであるなどのガーベージコレクションをトリガする処理によって特徴付けることができる。更に、この百分率は、消去されるブロックプールの最小寸法の維持に関連して考慮することができる。
別の態様において、判断基準は、ブロックがガーベージコレクションに選択される前はブロックのストレージロケーションの全てが廃用であるべきであることとすることができる。本明細書に説明するように、ユーザは、書込作動を通して物理ストレージ空間におけるデータのロケーションに関する知識を取得することができ、かつ例えばログファイルを管理して、その後にブロック全体を廃用とするように具体的にブロックのデータをリロケートすることができ、ブロックのデータは、ガーベージコレクションに向けて利用可能にされるようになっている。
FLASHタイプのメモリシステム内のストレージの管理がより高度になり、使用されるメモリのサイズが増大する時に、アプリケーションのダイバーシティは、各々ユーザの必要性に最良に適合することができ、メモリシステム機能も増大することができる。一部の状況では、メモリシステム内のFTLテーブル及びL2Pテーブルでは、データマッピング及びガーベージコレクションに関連するローカル作動を管理することができ、一方、他の場合では、ガーベージコレクションに関連付けられたデータ管理は、本明細書に説明する書込作動を使用して管理することができ、より低いレベルのウェアレベリング及びブロック消去及びリフレッシュ機能のみが、例えば、メモリシステム100によって独立して実行される。
データがメモリシステム100に最初に書き込まれる時に、データは、ホスト論理アドレスに対応するFLASHメモリのブロックの順次物理アドレスに書き込むことができる。何らかの時間の後に、以前に書き込まれたメモリロケーションは、変更されたデータを対応する論理アドレスに書き込むことによってホストアプリケーションによって修正することができる。しかし、FLASHメモリロケーションには以前に消去が行われていない限り書き込むことができないので、新しいデータは、他の判断基準を満足する利用可能な(フリー)メモリロケーションに書き込まれ、この判断基準の1つは、FLASHメモリのブロックの物理メモリロケーションに単調に増加するページの順で書き込まれる必要があるということである。(ページは、様々なサイズのものであり、すなわち、「スーパー」ページなどとして合併することができる。)単調に増加するページの順でのデータの書込は、格納データの整合性に及ぼす「書込妨害」の影響を低減するようにメモリデバイス製造業者によって必要とする場合がある。他の追加の判断基準も、消耗を最小にするために課することができる。いずれにしても、変更されたデータは、変更前のデータと同じ場合には書き換えられない。(この規則の例外は、単一ページが変更されることになる時にページのブロック全体が書き換えられる場合である。)
従って、書込指令がメモリシステムによって受信された時に、コントローラは、例えば、FTL処理を実行し、データが書き込まれるべき次の物理アドレスを選択し、このアドレスをFTLのL2Pテーブルにマップし、データを物理アドレスに格納する。一般的に、データは、既存の論理空間管理プロトコルとの整合性が得られるようにセクター(512バイト)又はページ(2キロバイト又はそれよりも多く)にグループ分けされる。セクター、ページ、及びブロックの他のサイズは、チップのストレージ容量及び製造に応じて使用することができ、複数のページ増分(「スーパーページ」)などで書き込むシステムがある。物理アドレスをデータストレージのために割り当てる処理は、ウェアレベリング判断基準に基づいて消去作動、ガーベージコレクションを使用するデータのリロケーション、及び書き込まれるべきブロックの選択を予定又は実行する段階を伴う場合がある。ユーザ書込作動では、L2Pテーブルを修正し、論理アドレス指定を使用するユーザ読取作動では、メモリシステム100内のL2Pテーブルにアクセスする。
態様において、コンピュータシステム1とメモリシステム100とを含むコンピュータシステムは、コンピュータシステム1が実質的に論理アドレス空間において作動し、メモリシステムが実質的に物理メモリ空間において作動するように編成することができる。各ユーザ又は使用アプリケーションは、異なるスキーマ又はプロトコルを使用して対応する割り当てられたLUNを管理することができる。
そのような作動を達成するのに使用することができる汎用指令の例を図2に示している。2つのタイプの書込指令は、WRITE(新しいデータ、以下、WRITE1)及びWRITE(修正済みデータ、以下、WRITE2)である。
WRITE1作動は、以前に書き込まれなかったか、又はユーザによって(例えば、「TRIM」作動によって)フリーにされた論理アドレスを表すことができる。本明細書では、要求側エンティティに割り当てられたLBのL2Pテーブルは、メモリシステム100ではなくコンピュータ5に維持される。要求側エンティティに割り当てられたLBAの範囲は、アプリケーションをコンピュータ5又はコンピュータ上で実行する1人又はそれよりも多くのユーザへのリソース割り当てを可能にするようにLUN、コンテナとして又は何らかの他の構成物によって定めることができる。
一例では、書込指令をコンピュータ5からメモリシステム100に送る前に、コンピュータ5のアプリケーションを検査して、対応する入力がメモリシステム100のPBAに対してあるか否かを決定することができる。LBAが以前に書き込まれていないか、又は例えばTRIM指令によってフリーにされていない場合は何もないはずである。
WRITE1指令がメモリシステム100によって受信された時に、メモリシステム100は、ポリシーに従ってPBAを指令に割り当てることができ、データは、割り当てられたPBAに書き込まれる。データが不揮発性メモリ200において割り当てられたPBAにコミットされた時に、書込作動の肯定応答が生成されて要求側エンティティに戻され、この要求側エンティティは、コンピュータ5とすることができる。肯定応答は、コンピュータ5内の要求側アプリケーションによって最初に供給されたLUN/LBA又は他の類似の参照インジケータと、データがメモリシステム100に格納された物理アドレスとの両方を含む。ホストコンピュータ5又はメモリシステム100の外側とすることができる他のロケーションに位置する関連のL2Pテーブルは更新することができる。ファイルシステムのようなレーザレベルでストレージを管理する他の方法を使用することができる。新しい格納データのPBAロケーションに対応するメモリシステム100内のビットマップは、有効状態に設定される。肯定応答LBA、PBAタプルは、回復のためにメモリシステム100に格納することができる。これは、ログの形態とすることができる。
当業者は、メタデータの一部は、いくつかの場所又は形態で格納することができ、かつ明示的システム要件に向けて十分すぎるほどである場合があることを認識するであろう。しかし、ハードウエア故障又はメタデータテーブルの他の不慮の破損に対する予防措置として、作動中の何らかの冗長なメタデータ及びメタデータ検証を使用することに設計における熟慮が与えられるべきである。これに加えて、メタデータは、それを異なる処理によって最も効率的に使用することができるシステム内の場所に位置付けることができる。
WRITE2指令は、ユーザに割り当てられた論理アドレス内のデータが修正されることになる場合に使用することができる。すなわち、LBAに対応するデータは、以前に格納されており、かつ特に無効にされてはいない(例えば、TRIM作動により、又は前回のWRITE2指令により)。WRITE2指令のLBAパラメータは、ホスト5内の関連の物理アドレスを調べるために使用することができ、データに関連付けられたPBAは、書込要求内に含められる。WRITE2指令は、修正されるデータが現在格納されているPBAの値を含むので、PBA内のこのデータは、ここで、書込指令に応答して書き込まれた新しいか又は修正済みデータによってもう使用されないものになる。これは、関連のブロックが先に消去されないとFLASHメモリ内のページを書き換えることができないことで生じる。WRITE2指令のペイロードである修正済みデータは、WRITE1指令と同じ方法で割り当てられた新しく割り当てられたPBAに書き込むことができる。データが不揮発性メモリ200にコミットされた時に、ブロックのPBAのステータスを表すビットマップは、データが以前に格納されたPBAの廃用ステータスを反映するように変更することができ、修正済みデータが格納されたPBAに対応するブロックのページのビットマップは、有効状態に設定される。肯定応答メッセージは、そのようなものがWRITE2指令のパラメータとして含まれ、新しいPBAがメモリシステム100によって割り当てられる場合に、受信されたLBAを含む。このタプルはまた、メモリシステムの目的のためにメモリモジュール150に格納することができる。コンピュータ5では、アプリケーションは、修正済みデータがこの時点で格納されたPBAを格納するためにこの時点で更新することができる。
別の態様において、WRITE2指令の一形態は、データを含まない場合がある。むしろ、例えば、ブロックの範囲を有する様々な物理アドレスが、データを物理ブロック間に転送するのに使用することができる。廃用である物理アドレス範囲のデータは、転送することができない。従って、TRIM作動を物理ブロックに対して実行することができ、有効データの新しい物理ロケーションを使用アプリケーションに報告することができる。ロケーション及び参照データは、物理メモリのテーブルによって部分的にミラーリングすることができ、又はデータと共にメタデータとして格納することができる。
大雑把には、WRITE、READ、TRIMのような指令は、定義された応答を有し、かつ様々な方法をパラメータのユーザ供給の引数に応答して実行させるようにパラメータ化することができるアプリケーションプログラミングインタフェース(API)、又はアプリケーションバイナリインタフェース(ABI)と見なすことができる。時には、これらのAPI又はABIは、広義にはPOSIXにおけるように又は狭義にはSCSIにおけるように業界規格によって符号化され、一方、他の例は、企業によって公開されるガイドによって支配される場合がある。APIの形態は、関数呼出し、指令、又はメッセージなどとすることができる。従って、本明細書に示す特定のフォーマットは、単に例にすぎず、かつ特定の実施形態に限定するように理解すべきではない。態様において、新しいか又は修正済みデータのストレージのためのPBAの割り当てポリシーは、データが、データを現在書込中であるブロックの次の最高ページPBAに格納され、書込ポインタが、ブロックの次のページに進められるということとすることができる。現在のブロックが埋められた時に次のブロックをブロックのプールから選択するか、複数の部分的に埋められたブロックを維持するか又は並列性又は冗長増大のためにデータを複数のメモリ回路200全体を通して分散化するポリシーに対しては後述する。
WRITE1及びWRITE2指令の効果は、データの物理ロケーションの知識をコンピュータ5内のメモリ100に又は他のデータ管理方法で維持することである。ロケーション関連付けもメモリモジュール100に格納された場合に、バックアップが従って供給される。このバックアップは、回復以外の作動中には必要とされない場合があるので、必要に応じて処理されるログファイルとしてメモリシステム100内に維持することができる。バックアップを不揮発性メモリに維持すると、メモリモジュール100の揮発性メモリにおけるL2Pルックアップテーブルの必要性を取り除くことができる。態様において、ホストコンピュータ5が関連の不揮発性キャッシュメモリを有する場合に、L2Pテーブルのバックアップをキャッシュに格納することができる。そのようなキャッシュメモリは、当業技術で公知のように、例えば、頻繁にアクセスされるデータの格納又はデータ複製解除に使用することができる。
WRITE2指令は、パラメータとして修正中のデータのPBAを有することができる。これは、基本アドレス及び範囲として表すことができる。ここに説明する内容の明瞭性のために、修正中の(廃用とされた)データは、PBA1で格納されたと見なされ、修正済みデータ(新しいデータ)であるデータは、PBA2で格納される。新しいデータ及び古いデータは、同じか又は異なる値を有することができる。WRITE2作動を完了する前に、PBA1で格納されたメタデータを読み取ることができ、メタデータの態様は、書込指令に含まれている同等のメタデータ値と比較することができる。この2つのメタデータ値は、適切なデータ(PBA1)がPBA2で格納されるように修正されてる場合は整合する。そのような有効性検査を使用すると、メタデータの態様及びWRITE2指令によって修正中のデータのPBAが書込指令に指定されることになるので共有メモリシステムのセキュリティを増大させることができる。この目的に使用されるメタデータは、例えば、ホスト5内のデータのLBA、又はLBAに又はデータに計算されるハッシュとすることができる。メタデータがデータ自体のハッシュである場合に、ハッシュは、データと共にメタデータとしてメモリシステム100に格納することができないが、これに代えて、修正されるPBAでの格納データに基づいて計算することができる。書込作動及び読取作動のシーケンスは、不整合は適正に作動するシステムではありそうもないので重ね合わせることができる。不整合が発生して修正済みデータが新しいPBAに書き込まれた場合に、データは、廃用としてマーク付けすることができ、エラーメッセージを生成することができる。しかし、メモリへの攻撃が不整合(誤ったメタデータ又はPBA)指令の流れを送ることによって行われる可能性を考慮しなければならず、メタデータの検査は、修正済みデータをメモリにコミットする前に望ましいであろう。
2つのタイプの読取指令は、READ(論理アドレス)、以下READ1と、READ(物理アドレス)、以下READ2とすることができる。READ1は、例えば、SSD又はメモリシステム100内のL2PテーブルがFTLによって維持され、論理−物理アドレスの変換がSSD又はメモリシステム100で実行される場合にSSDが現在従来通りのままで構成される時に使用することができる。READ1指令がホスト5内に維持されるL2Pテーブルに従ってホスト5のデバイスドライバ又はオペレーティングシステムによって解釈される場合に、READ1指令は、ホストコンピュータL2Pテーブル内の論理アドレスと物理アドレス間の関連の知識を使用してREAD2指令に変更することができる。
SSDが従来通りに構成された場合に、READ1指令は、例えば、SSD内に維持されたL2Pテーブルを使用してSSDで解釈され、データは、ホストコンピュータ5でユーザに戻されることになる。しかし、この指令は、SSDがREAD2指令を受諾するように構成された時に存在すると考えることができる。
READ2指令及びWRITE2指令はまた、ローカルL2Pデータ構造を維持するSSDに使用することができる。例えば、標準的なREAD1及びWRITE1指令をサポートすることができると思われるそのようなSSDでは、READ2指令及びWRITE2指令の使用は、指令の実行における待ち時間を低減することができる。典型的には、READ1のデータを戻すために、典型的なFTLは、L2Pデータ構造を使用して要求されたLBAをデータを保持するPBAにマッピングすることができる。SSDにおけるL2Pデータ構造のこの使用は、PBAを調べるためにFLASHメモリへの1つ又はそれよりも多くのアクセスを伴う場合があり、これは、時間を消費し、バス帯域幅を消費し、他の同時性の作動に必要とする場合があるダイにアクセスし、ECC復号器リソース及び他のリソース及び制御論理を使用し、これらの全ては、そうではない場合は他の作動に利用可能になる計算タイムライン及びバス帯域幅リソースを低減する。READ2指令によって供給されるPBAを使用することにより、FLASHメモリは、SSDでL2Pテーブルを検討することなくユーザデータを戻すために読み取ることができる。PBA(例えば、メタデータとしてのLBA)で格納されたメタデータが、望ましいLBAがもはやPBAに位置しないことを示す場合に、FTL L2PルックアップがSSDで実行される。PBAがLBAデータの最新バージョンを含むことを検証するために供給される追加のメタデータがない状況では、局所的なL2Pデータ構造内のFTLルックアップは、PBAからのデータ読取と並行して実行することができ、FTLルックアップによってPBAがLBAデータの現在のコピーを保持することが検証されると直ちに要求されたデータの戻しが可能である。
殆どのオーバーヘッドタイプデータリロケーション(例えば、ガーベージコレクション、ウェアレベリング)がSSDへのユーザ書込作動の頻度によって事実上駆動されるので、読取作動においてリロケートされたデータに遭遇する確率は、データに書き込む速度に大まかに比例することができる。
上述したようなREAD2指令の実行の処理が、要求されたLBAがREAD2要求内に設けられたPBAになかったと決定した状況では、次に、その後に要求側に送られた指令に対応する応答メッセージは、WRITE1/2指令と同様に、LBAが現在位置付けられたPBAを含むことができる。これは、ユーザコンピュータ5内に維持されたL2Pテーブルの更新をもたらすことができる。あるいは、LBAデータが要求によって示されたそのPBAにもはやないことを示すステータスメッセージを戻すことができる。
これに加えて、引数としてLBA/PBA対又はLBAのみを取って指示LBAの現在のPBAを戻すVERIFIY又はLOCATEのような指令を使用することができる。そのような指令は、整合性のために又はREAD2に提示されるPBAが有効でなかったことを示すステータス返答に応答して、LBAのロケーションを検証するのに使用することができる。これに代えて、PBAが有効でなかった場合に供給される応答は、データの固定パターンが戻される場合はTRIM指令のタイプの場合と同じとすることができる。このようにして、無効PBAは、読み取られることから保護することができる。
VERIFIY指令及びLOCATE指令は、例えば、単一アドレスよりもむしろアドレス範囲を引数として取ることができる。返答結果はまた、ビットマップ又は個別アドレス要求を要求するという表示とすることができる要求されたアドレスが順番に格納された範囲、アドレスのリスト、例外リストを有する範囲とすることができる。
WRITE2指令に関して、ユーザコンピュータ5でのローカルL2Pマップは更新されることになるが、READ2指令と同じ待ち時間短縮は、WRITE2指令が基本的なストレージ(例えば、「ページ」)として格納されたデータのサイズよりも小さいデータを更新することになる場合に達成することができる。例えば、SSDがローカルL2Pテーブルを4KBのページで格納データとして維持した場合に、512バイトのデータのみを定められた4KBのLBAの内側のアドレスに書き込むWRITE2指令は、まず現在格納された4KBのデータをそのLBAのために読み取り、指定の512バイトの範囲を新たに供給されたデータと入れ替えて、その後に、4KB全体をFLASHに書き込む必要がある場合がある。PBAをWRITE2指令の一部として供給することにより、4Kの読取修正は、L2P更新と並行して実行することができる。
READ2指令は、LBA、又はLBAのハッシュ、又は以前にメタデータのように計算された格納データのようなLBAの何らかの表現を有することができる。SSDは、データをPBAによって指示された物理ロケーションから検索するようにPBAで作動し、格納されたメタデータをLBA又はハッシュがないかに関して検査する段階又はデータのハッシュなどを計算する段階などを含むことができるデータ有効性のあらゆる検査をし、データをホスト5及びユーザに戻す。戻されたデータは、READ2指令のLBAによって識別することができる。
READ2指令は、LBAと、一部がデータの有効なバージョンが読み取られたことを検証するのに使用することができる何らかのハッシュ値、シーケンス番号、ナンス、又は他のメタデータとを有することができる。LBAの一部又は指令に提示されたPBAに位置するデータの他のメタデータが、指令に提示された対応する予想されたメタデータと整合しない場合に、これは、SSDによって実行されたオーバーヘッド作動により、例えば、要求されたデータがリロケートされたことを示すことができる。SSDは、ローカルL2Pテーブルを使用してLBAのリロケートされたデータの位置を識別することができる。これに代えて、要求されたLBAが、READ2指令に提示されたPBAに位置しない場合に、SSDは、エラー又は要求されたデータの位置を識別することができないTRIMタイプの応答を戻すことができる。FLASHデバイスがローカルL2Pテーブルを持たない場合に、現在のPBAは、要求されたデータと共に、使用されるコンピュータ5がL2P情報を更新することができるように戻すことができる。SSDのオーバーヘッド作動に対処するためのホストコンピュータL2Pテーブルの更新は、後述するように背景作動として実施することができる。
ある期間の後に、ユーザデータストレージのために割り当てられたメモリシステムのメモリのブロック又はメモリシステムの個々のSSDの百分率は、100%又はほぼ100%になることができる。FLASHメモリを使用するようなメモリシステムは、典型的には、過剰供給される。すなわち、ユーザに又はオーバーヘッド作動の必要性のために提供されるよりも多い物理メモリがある。ディスクシステムさえも、臨時のセクター故障に対処するように少量の過剰供給を有する。(慣例により、ハードディスクドライブ(HDD)及びSSDの容量は、十進フォーマットで説明され、一方、実容量は2進数であり、約7パーセントの過剰供給が得られる。)FLASHでは、より大量の過剰供給が典型的に行われる。これは、SSDの性能属性及び価格帯に応じて追加の10パーセント又はそれ未満〜50パーセント又はそれよりも大きい範囲とすることができる。
少なくとも、ユーザが利用可能な空間が満たされるまで「ガーベージコレクション」と呼ばれる動作が実行され、修正済みデータの空間が利用可能であるようになっている。(メモリの視点から、PBAに書き込まれたあらゆるデータは、データが書き込まれるページが使用されなかったページ、又は消去されたページであるという意味で新しいデータである。新しいか又は修正済みとしてのデータの特性解析は、一般的にユーザに関連付けられた構成物として見られるべきであるが、データステータスの一部の態様は、データと共に又はL2Pテーブルに格納されたメタデータにおいて表すことができる。)
上述したように、データが修正された時に、修正済みデータは、修正中のデータを保持するPBAに書き込むことができないので、追加のストレージ空間が必要である。ガーベージコレクション処理は、一般的に、まだ有効であるブロックのページを識別し、有効なページをフリーページを有するブロックに転送し、ガーベージコレクション中のブロックを消去すると考えることができる。リロケートされたページのロケーションは、通常はSSD内に維持されたL2Pテーブルを修正することによって対処される。態様ではまた、ユーザコンピュータ5を更新することができる。
ガーベージコレクションに選択される複数のブロックのうちの廃用データの特定の百分率を有するブロックの選択は、「ウェアレベリング」として公知である処理によって決定することができる。この百分率は、例えば、閾値、様々な値として、又は値及びブロックが消去された回数の組合せによって確立することができる。この処理の目的は、物理ブロックがSSDデバイスの寿命にわたって消去された回数を均一化することである。FLASHメモリが格納データの誤差率、又はブロック内のデータ保持時間が許容不能になる前に持続することができる個々のブロックのブロック消去サイクルの数がFLASHメモリのタイプに応じて約1000〜約1,000,000に限定される消耗によって特徴付けられるので、単一ブロックの反復的な消去は、デバイスの早期の消耗になると考えられる。
ガーベージコレクション、ウェアレベリング、及びSSDのL2Pテーブルの更新の活動は、一般的に、SSDのフラッシュ変換層(FTL)において実施されると考えられる。しかし、WRITE2指令及びREAD2指令が使用された時に、アクティブL2Pテーブルは、ホストコンピュータ5に位置付けることができ、情報は、特定のLBAがガーベージコレクション及びウェアレベリングの結果として格納されたPBAのリロケーションを追跡するためにSSDとホストコンピュータ5との間で交換されることが必要になるが、それは、これらの処理が、ホストコンピュータ5及びユーザの必要性とは独立して発生することができるからである。
例えば、リロケーションを追跡するために交換される情報量は、新しいブロック又はアドレスの新しい範囲に転送したLBAを定められたブロック又は物理アドレスの定められた範囲で識別することによって緩和することができる。ブロック又は範囲の全てのアドレスが転送するわけではない状況は、基本的なインジケータ上でのビットマップ、例外リスト、又は他の注釈表示で処理することができる。これは、ユーザコンピュータ5でのL2Pファイル管理システムなどが、SSDでの対応するL2Pに対する修正が追跡される時のより小さいサイズの通知を受信し、かつ変更を直ちに処理しなければならないことよりはむしろユーザコンピュータで背景作動として修正を実行することを可能にすることができる。定められたLBA上で作動を実行する指令がSSDに送られることになる時に未処理の通知がある場合に、PBAのブロック又はアドレス範囲との照合により、要求されたデータのPBAが変わることになり、その後に、新しい正しいPBAがSSDでL2Pを使用して送られたか否かを決定することになる。
態様において、個々にホストコンピュータ5にデータのリロケーションを通知する必要性は、1つの形態の「インプレース」ガーベージコレクションを使用することによって回避するか又は最小にすることができる。簡単な形態では、メモリのブロックをガーベージコレクションに選択することができる。有効なデータページは、メモリから揮発性メモリ170に一時的に読み取られ、揮発性メモリ170では、廃用(修正済み、削除済み、又はそうでなければ転送した)ページが識別され、廃用ページのPBAが、一時的なアロケーションテーブルに格納される。ブロックは、ブロック内のアドレスの全てが現在フリーであるよう消去することができ、一時的に揮発性メモリ170に格納されたデータが、ブロックに書き換えられる。処理中に、PBAがブロックにおいて単調な昇順で書き込まれることになる場合に、一時的なアロケーションテーブルでは、(以前は廃用データ値によって占有された)フリーPBAを、不揮発性メモリに書き込まれることになる揮発性メモリ内のガーベージコレクション後のデータの待ち行列において一時的なアロケーションテーブルからデータのページに関連付ける。従って、ストレージを待つガーベージコレクション後のデータは、廃用データを以前に保持していたPBAに格納される。L2Pテーブルは、ブロック内の変更されたデータを記録するために更新される。日付がないL2Pテーブル内の記録の数は、書き込まれるべきデータの全てに新しいPBAが割り当てられる状況から低減される。選択されたブロックの一部のみを廃用データで構成することができるので、ガーベージコレクション後のデータとの廃用データの交換に関連付けられたL2Pテーブル記録のみが変更される。
同じブロックにデータに繰り返し書き込む時に、かつデータ相対ロケーションが変わらない場合に、過度の消耗は、繰り返し書き込まれている個々のビットと共に発生する場合がある。ブロックのデータ全体は、例えば、ブロックの以前の消去の回数に基づいて反転ビットフォーマットで定期的に書き込むことができる。
フリーブロックへのデータ書込が完了した時に、廃用データによって以前占有されていたページロケーションは、ここで、修正済みデータ及びストレージを待つデータのキャッシュにあった可能性があるあらゆる新しいデータが書き込まれる。キャッシュは、揮発性メモリとすることができる。修正済みデータページの各々のPBAは、更新データ管理アプリケーションを更新するようにホストコンピュータ5に戻される。すなわち、サービスメッセージは、例えば、ユーザコンピュータを更新するためにブロックで送ることができる。望ましくは、廃用データによって以前占有されていたメモリロケーションの全ては、この作動中に修正済みデータ又は新しいデータで満たされることになる。しかし、不揮発性メモリ200へのデータの付託を直ちに行う必要がある場合がある(電力損失中のような)状況がある場合があり、利用可能である修正済みデータがないページは、揮発性メモリ170内のデータの全てを格納することができるようにフラグが書き込まれる。
PBAに格納されたデータがガーベージコレクションのためにリロケートされ、データの新しいロケーションがL2Pテーブルにおいてまだ更新されていない状況が存在する。データは値が変更されていないので、既知のロケーションでのデータ及び新しいがまだ参照されなかったロケーションでのデータは、ガーベージコレクション後のブロックがL2Pテーブルが更新されるまで消去されないことを条件として同じである。メタデータは、両方のロケーションにおいて正しいものになり、正しいデータが、既知のロケーションから戻されることになる。介在する書込作動があれぱ、書込作動の引数としてメタデータの変化を引き起こしたと考えられ、不整合か発生したと考えられる。従って、この不整合のために、例えば、正しいPBAを識別するためにローカルSSD L2Pテーブルが使用される。
「インプレース」ガーベージコレクションだけでは、処理のウェアレベリング態様を満たすことができず、それは、ブロックが「アクティブ」データを格納することができるからである。この用語は、「アクティブ」として頻繁に修正されるデータと「スタティック」としてまれに修正されるデータとを区別するのに使用する。アクティブデータもスタティックデータも、当業者によって理解されるように「有効」データである。アクティブデータを有するブロック(少なくとも、活動が書込作動である場合)は、頻繁にガーベージコレクションが行われることが必要になり、従って、スタティックデータを有するブロックよりも早期に消耗が発生する場合がある。SSDは、LBA又は関連のPBAのどの群がアクティブ又はスタティックかを決定することができず、活動は、ホスト5及び利用者の必要性によって抑制される。
ブロックが定められた位置で書き換えられる場合の消耗緩和の1つの形態は、データの補完物をブロックに書き込むことである。データの2つの状態うちのどちらが存在するかは、例えば、ブロック消去カウントによって決定することができる。少なくとも、それによって実質的に等しい数の「0」ビット及び「1」ビットが時間と共にページに書き込まれる。
しかし、必然的に、そのような対策では、結果としてブロック上の不均一な消耗が発生することになる。従って、ガーベージコレクション中のブロック内のデータは、定められた数の「インプレース」ガーベージコレクション動作後に別のブロックにリロケートする必要がある。それにもかかわらず、ホスト計算機5にこの処理を通知する必要性を排除することができる。図3は、ホストコンピュータが遭遇するような物理メモリアドレス(PBA)を更新することなくメモリブロックのリロケーションをサポートするデータ構造を示している。図3Aは、FLASHメモリデバイスのブロックの全てが書き込まれておらず、K個のブロックがFLASHデバイスの合計N個メモリブロックのユーザに提供されるシステムの初期化時のデータ構造の例である。メモリチップの単一平面は、N個のメモリブロックで構成することができ、各ブロックは、128ページで構成することができ、各ページは、2キロバイトで構成することができる。数値は、作動の説明を容易にするように与えられ、デバイスアーキテクチャに基づいて他の値を使用することができる。メモリ技術の更なる進化のために、結果として異なる相対値が生じる可能性があるので、本明細書のいずれのものも本明細書に開示する概念の範囲を制限すると解釈すべきではない。
各ブロックは、ブロック番号(BN)を有することができ、かつ物理ブロック(PB)と対にすることができる。PBは、消去カウントEと空間カウントCとを有するとして特徴付けることができる。消去カウントEは、PBが消去された回数であり、空間カウントCは、最終ブロック消去作動後にもう使用されてなくなったページ数である。この簡単な例では、ブロックの各ページが書き込まれ、かつページ数Cが別の物理アドレスに修正されてリロケートされたと仮定した。メモリシステムの作動が、一部のブロックを部分的にのみ書き込まれた状態にしておくように構成された場合に、ブロック内に残存するフリーページ数を表すことができる別のパラメータを維持することができる。
修正済みデータがFLASHメモリに書き込まれることになる時に、物理ロケーションは、ポリシーに従って選択される。例えば、ユーザ割り当て可能なメモリのブロックは、ガーベージコレクション及びウェアレベリング判断基準に基づいて選択される。このブロックは、ブロックの消耗の状態及びシステムの残りの状態に基づいて、定められた位置でガーベージコレクションが行われるか又はリロケートすることができる。ブロックがガーベージコレクションが行われてリロケートされる場合に、フリーブロック(書き込まれたことがないか又は消去されたもの)がそのようなブロックのプールから選択されるので、選択されたブロックのPB値をガーベージコレクションが行われるブロックのBNに関連付けることができる。選択されるPBは、最低消去カウントEを有するPBのようなポリシーに従うことができる。ブロックの2つの表現間の関連付けは、一体ブロックである128ページ(256キロバイト)の増分でのBNとPB間のアドレスオフセットを表している。図3Aは、BNとPB間の関連付けが初期化時の1対1の関係であることを示し、BN=PBであり、BNの値は、単調に増加する整数であり、一方、図3Bは、何らかの時間の後に、2つの表現間の関連付けがデータ構造によって与えられ、1対1の関係の時間的進化が、例えば、ユーザの要求を満すためにホストコンピュータ5により、かつガーベージコレクション及びウェアレベリングをもたらすためにSSDによって行われたデータの修正によって駆動されることを示している。
図3に示すようなデータ構造を使用してホストコンピュータ5によって理解されるように物理ブロックアドレス(PBA)を割り出すことにより、データの効率的なリロケーションは、ホストコンピュータにリロケーションを報告することなく実行することができる。この追加のレベルの間接性は、リロケートされた物理ブロックにおけるデータの内部順序付けを維持しながらホストPBAをリロケートされた物理ブロックに効率的に関連させる。
FLASHメモリデバイスは、実質的に不揮発性である。すなわち、電力オフ/電力オンサイクルを通してデータを保持し、電力オフ時間は長い場合がある。メモリのタイプ、作動条件、及び消耗の状態に基づいて、この「長い」時間は、一部の場合に1日〜数年の範囲とすることができる。データ損失を回避するために、データを定期的に読み取り、必要であればエラーを訂正し、かつ定められた位置で書き換えるか又はリロケートすることができる。この作動は、別のシステム保守(オーバーヘッド)機能であり、データリフレッシュと呼ばわれることが多い。ガーベージコレクションも、新しく修正又はリフレッシュされたデータを格納するために廃用ページを使用することができるように実行することができる。
定められた位置でのガーベージコレクションは、ブロックの有効データの全てを揮発性メモリに読み取り、ブロックを消去し、新たに修正されたデータを含め有効データを廃用ページアドレスに書き換えることによって作動する。不揮発性メモリの量は、少なくともブロックのサイズに等しい。ガーベージコレクションがリロケーションで実行される場合に、ガーベージコレクションが行われるブロックから読み取られる有効データは、ストレージを待つ修正済みデータで統合され、選択したフリーブロックに直ちに書き込むことができる。不揮発性メモリバッファのサイズは、リロケートされるデータの一部分をバッファに入れるのに要求されるサイズまで低減することができる。
態様において、ガーベージコレクションの判断基準を満たすいくつかのブロックを選択して再割り当ての待ち行列に入れることができる。選択したブロックの各々に関して、廃用データを有するページのアドレスを識別し、新たに修正されたデータのPBAとして再割り当ての待ち行列に入れることができる。従って、WRITE2指令が受信された時に割り当てに直ちに利用可能なそのようなPBAを有するデータ構造がある場合がある。ハードウエア及び作動ソフトウエアの設計が、未処理要求が電力損失、無秩序な停止、又は整然とした停止の場合に損失なしに不揮発性メモリに付託することができるようなものであることを条件として、WRITE2指令は、対応するPBAで滞りなく肯定応答することができる。
ホストコンピュータ5内のL2Pデータ構造は、上述した通りである。そのようなデータ構造は、応答速度のために揮発性メモリ内に維持することができるが、これは、データが停止、電力損失のような場合に回復可能である必要があることになることを意味する。これを行う1つの方法は、SSD自体、不揮発性キャッシュなどとすることができる不揮発性ストレージ媒体内に一部又は全体に関わらずホストL2Pデータ構造を定期的に検閲することである。すなわち、SSDに関連付けられたLBA範囲、メタデータなどは、回復を目的としてSSDに格納することができる。簡潔さのために、検閲されたL2Pテーブルは、ホストコンピュータに既知であるBNの定められた組に割り当てることができ、これらのBNは、ユーザデータ空間内、又は留保された論理空間内とすることができる。すなわち、物理ブロックのいずれも、検閲されたログに使用することができる。典型的には、ブロックは、データが100%書き込まれることになるが、これは、検閲されたデータはスタティックであるからである。検閲が一巡してブロックが消去されることになる時に、次にこの目的に使用されることになるPBの選択は、ガーベージコレクション及びウェアレベリングポリシーに従うことができる。トランザクションログが、検閲されたログを必要であれば迅速に回復することができるようにSSD内に維持することもできる。整然とした停止があれば、結果として、現在のホストL2Pテーブル全体は、SSDに格納されることになる。ホストL2Pテーブルは、SSD L2P内に維持されていない情報を含むことができ、この追加の情報は、ユーザアプリケーションによって維持される。しかし、SSD L2Pテーブルは、ホストL2Pテーブルの部分集合である。
態様において、メモリを管理する方法は、ファイルシステム又は他の使用アプリケーションとすることができるユーザ間を仲介するホストコンピュータ5内にインストールされたデバイスドライバを使用することができ、メモリは、例えば、1つ又はそれよりも多くのSSDによって表される。デバイスドライバであるとして図4に示す処理600の特徴付けは、例えば、機能がファイルシステム又は仮想化システムなどの一部として実施されるアプリケーションを排除するように意図していない。システム内のより高いレベルでは、格納データのページの論理アドレスは、例えば、論理ユニット番号(LUN)及びLUN内の論理ブロックアドレス(LBA)として特徴付けることができる。しかし、最終的には、論理アドレスは、L2Pテーブルによるか又はホストコンピュータ5のデバイスドライバ600による使用のためにメモリシステム100によってホストコンピュータ5にエクスポートされるLBAの範囲でアドレス値に分解することができる。
ユーザ指令610がデバイスドライバ600によって受信された時に、この指令は、以前に使用されていなかったと考えられるLBAへの書込のためか(WRITE1)、又は修正済みデータをLBAに書き込むために関連付けられたPBAを有するLBAへの書込のため(WRITE2)とすることができる。別の態様において、LBAは、過去のある時に書き込まれたと考えられ、その中のデータは、例えば、TRIM指令によって廃用とされたと考えられる。実質的に、LBAは、PBAから分離され、LBAが再び割り当てられた時に、状況は、LBAが書き込まれたことがないのと同等である。従って、WRITE1指令が適切であると考えられる。
従って、適切な書込指令の選択は、LBAに対応するPBAの検索620が成功するか否かを決定する630ことによって達成することができる。ルックアップが不成功であった場合に(630−ノー)、データは、以前LBAに格納されなかったわけであり、WRITE1を形成し690、搬送サブシステム50でSSDに送る700。ルックアップが成功した場合に(630−イエス)、データは、以前に格納されていたわけであり、書込作動によって修正されることになる。これは、WRITE2指令であり、WRITE2指令は、L2Pテーブルから戻されたPBAと、修正されるアドレスの検証に使用されることになるあらゆるメタデータとを使用して構成される。データを搬送サブシステム50でSSDに送る650。
本明細書では、成功した応答及びそのような応答に関連するアクションに対して説明する。エラー事例が予想されるので対処する必要があるが、本明細書ではいくつかのみを例に説明する。
WRITE1指令が出されて、SSDが失敗せずにデータペイロードを格納した場合に、肯定応答は、新しく割り当てられたPBAを含む。この肯定応答を受信し710、書込に使用されたLBAを参照してホストコンピュータ5においてL2Pテーブルをポピュレートするのに使用する720。WRITE2指令が出されて、SSDが修正済みデータ値ペイロードを格納した場合に、SSD660からの応答は、新しいPBAを含み、この新たなPBAは、L2Pテーブル720を更新するのに使用される。
図5は、データをSSDから読み取る処理を示している。使用アプリケーションは、論理ブロックアドレス(LBA)を使用してデータ810を要求する。この手法により、SSDストレージの詳細からの使用アプリケーションの独立性が維持される。LBAは、データが格納されたPBAをホストコンピュータ5内のL2Pテーブルから取得する820ために使用される。対応するPBAがない場合に、既存の格納データはなく830−ノー、これは、エラー条件890とすることができる。
PBAが要求されたLBAに関連付けられる場合に、READ2メッセージを構成し840、メモリシステムSSDに送る850。READ2指令は、要求されたデータが格納されたPBAを含むので、データを直接にアドレス可能である。ブロック−リロケーションガーベージコレクションが実行された場合に、ブロックルックアップインデックスが、物理アドレス解決を完了するようにデータ構造から取得される。データがメモリシステムによって戻された時に、指令は、条件が満たされたわけである。
図6に示すように、READ2指令がメモリシステム100によって受信された時に910、処理900は、データの読取を読取指令によって指示されたPBAから実行する。ガーベージコレクション及びウェアレベリングがブロックレベルのリロケーションによって達成された場合に、PBAは、上述したように、データ構造から得られたブロックオフセット値によって修正することができる。データ及びメタデータを読み取り920、読取指令が正しいデータのためのものであることを検証するために検査をメタデータに実行することができる930。メタデータは、データ書込時に格納されたデータのLBA、データ又はLBAのハッシュ、インデックス、時間値などとすることができる。要求側アプリケーションは、PBAを取得するためにホストコンピュータ5内のL2Pテーブルにアクセスする許可を有する必要があるので、この検査の実行は、セキュリティ対策として有用であると考えられる。疑似指令は、要求されたLBAにアクセスすることはできず、結果として、メタデータの不整合が発生することになる。アクセス指令が検証された時に、要求されたデータがホストに戻される940。
図7に示すように、書込がホストコンピュータ5で要求され、かつ対応する以前に格納されたデータがない時に、関連付けられたデータペイロードを有するWRITE1指令が出される。処理1000は、指令1010をメモリ又はSSDに受信し、テーブル1020からフリーPBAを脱待ち行列にする段階を含む。割り当てられたPBAは、データを書き込むことができる次の利用可能なフリーページを指示する。定められた位置でのガーベージコレクションが使用される場合に(ブロックレベルの間接性の有無に関わらず)、書き込まれることになるデータは、ガーベージコレクション動作が実行される時のブロック又はフリーページを有する次のブロックに書き込まれるデータフローに挿入することができるようにバッファ1030に入れられる。データは、ブロックへの書込の単調な態様を保存するように適切なPBAが利用可能である時にブロックに書き込まれ、これは、データ書込時のストレージ空間の利用可能性に応じて適切なガーベージコレクションバッファ、又は新しいブロック又は部分的に埋められたブロックに書き込まれることになるバッファ内への挿入によるものとすることができる。各ページのステータスを表すビットマップは、ブロックがフリーブロック待ち行列に入れられるように消去され、PBAに関連付けられたビットがこの時点で実質的に設定された時に、フリーにリセットされたと考えられる。ブロックが書き込まれて、PBAが飛び越された時に(データ利用可能性の欠如のために)、ビットは、もう使用されていないとして設定されるが、これは、データをその後にPBAに書き込むことができないからである。すなわち、停止のような状況では、データのブロックは、ブロックビットマップの残りのビットがもう使用されていないとして設定することによって事実上埋めることができる。それによって迅速な回復を容易にすることができる。
故障からの回復をもたらすために、メモリシステム100に格納されるようにログエントリを生成する1060。このログエントリは、メモリシステム100内のバックアップL2Pテーブルを更新するのに使用することができ、又はメモリ又はホストに更に別の処理なしに格納することができ、L2Pテーブルの更新は、ホストコンピュータ5内で実行される。割り当てられたPBA値1070をホストに戻し、ホストL2Pテーブルは、上述したように更新される。応答がホストに供給される特定の時間は、ハードウエア設計に依存し、かつデータ及びログエントリが何時不揮発性メモリに確実に付託されたと見なされるかに依存する。
図8に示すように、関連のデータペイロードを有するWRITE2指令は、書込が、ホストコンピュータ5で要求され、かつデータが、対にされたPBAを有するLBAに以前に格納されていた時に出される。指令を受信し1110、データ及びメタデータをPBAから読み取る。指令の有効性が、READ2指令の有効性と同様に検査され、データは、WRITE1指令と同様にメモリに書き込まれ、その結果は、格納された時のデータへの新しいPBAの割り当てであるようになっている。これは、ログに格納されたPBA値であり、指令の成功表示としてホストコンピュータに戻される。
データが書き込まれることになるブロックの選択の例を図9に示している。各ブロックをブロックが以前消去された回数及びブロック内の有効なページ数によって特徴付けることができるように、各ブロックのステータスは、例えば、図3に示すようなデータ構造内に維持される1210。最終消去からの時間も維持することができる。ブロックは、ポリシーに従ってガーベージコレクション/ウェアレベリングに対して選択される。例えば、ブロックは、ブロックが消去された回数、最終消去以来の時間、及びT(1−u)/(uN)のような有効なブロックの割合の機能を使用してランク付けすることができ、uは、有効であるブロックの割合(u>0)である。最高ランクを有するブロックは、例えば、次のブロックとして選択することができる。書込指令への割り当ての待ち行列においてフリーPBAの十分な利用可能性を保証するように1つよりも多いブロックを選択することができる。
候補ブロックを選択し、かつ消去する1220か、又は消去されることになるブロックの待ち行列に入れる。この作動は、ブロックを使用ために割り当てる際に遅延がないように、ブロックが必要になる前に実行することができる。これが行われるか否かは、実際のワークロード下でのシステム動的性能に依存する。
選択されたブロックインデックス値を決定し1230、現在の新しいPBAに書き込むために使用されるフリーブロックのブロックインデックスと交換する1240。この作動は、典型的には、データの廃用ページを以前に表したPBAが占有するようにデータが再利用されるブロックから移動されることと交互配置することができる。ブロックインデックステーブルを更新し1250、その後の読取が適切な物理ロケーションに向けられるようにする。
態様において、WRITE2指令は、例えば、段階1120及び1130の一部又は全部を省略するようにパラメータ化することができる。例えば、L2Pテーブルがメモリシステム100に対して検閲される場合に、連続LBAは、使用されているブロックにパターンを書き込むことにより又は割り当て機構により、システム初期化中に連続PBAに以前に格納されていたわけである。検閲処理は、修正された組のデータをページ又は複数ページベースで書き込むことと見なすことができ、以前にLBA/PBAの連続ブロックに格納されたデータの全ては、修正済みである。これに代えて、従来の処理に従うことができ、L2Pテーブルが検閲される時に、修正されたPBAを有したLBAを有するページのみが検閲される。すなわち、事実上「読取専用」であるデータは、L2PテーブルにおけるLBA/PBA関連においてほとんど変更を体験しないことになる。
ブロックは、再利用ために及び図10に示すようにリロケートされた有効データ(もしあれば)及び修正済みデータを格納するために準備される。各ブロックに関して、各ページのステータスのビットマップは、ステータスが有効、廃用、フリー(及び一部の場合に、不良箇所がページレベルで管理された場合は使用不能)の1つであるように維持することができる。ブロックが図9の処理に従って選択された後の消去のために準備される時に、ブロックビットマップを走査して新しいデータを書き込むことができるページを決定する1310。利用可能なPBAを書込データバッファ内のデータに割り当てる1340。有効データが再利用されるブロックから読み取られるので、データに新しいブロックに書き込む前に、新しく割り当てられたPBAを有するデータに有効データをPBAシーケンスで点在させる1350。このようにして、新しいブロックのフリーメモリロケーションの全ては、有効データで満たされる。テーブルを管理する他の方法が公知であり、当業者には明らかであろう。
図11は、ビットマップをデータの各ブロックに対して維持する処理1400の例を示している。メモリシステム100が使用中となった時に、ビットマップは、各ページがフリーであり、消去カウントNが0であるように初期化される1410。データがブロックのページに書き込まれる時に、対応するビットは、有効に設定される。ブロックは、単調に増加するページ順に書き込まれるが、ブロックは、完全に満たす必要はない(例えば、2010年6月9日出願の「持続的なガーベージコレクションの方法及びシステム」という名称のUS 12/796,836を参照されたく、この特許は、本出願と同一の本出願人に譲渡され、引用によって本明細書に組み込まれている。)ブロックへの書込は、その後に再開することができる。しかし、説明の簡潔さのために、ブロックの各ページはデータが書き込まれると推定する。特定のPBAでのデータが書込のためにアクセスされた時に、修正済みデータに対応するデータは、別のPBAで格納されたことになり、従って、データによって以前占有されていたページは、もう使用されておらず、このステータスを反映するためにビットマップを更新する1420。有効ブロックカウントは、その値をブロック管理のために選択処理に使用することができるように更新される。
本明細書に説明する方法は、メモリシステム100内で実行される有限量の間接性及びメモリシステム100内のデータ構造のサイズ及び複雑性が低減されるようにメモリシステム100を管理する簡素化された手法を表している。更に、ホストコンピュータ5内のL2P機能のロケーションは、より高レベルのファイルシステム又はアプリケーションがメモリシステム100におけるデータの配置に対して何らかの制御を行う機会を与えることができる。
メモリシステム100に格納されたデータの管理における何らかのレベルでは、データが格納されることになる実際の物理ロケーションは、何らかのアルゴリズミック関係に基づいている。これは、複数のFLASHメモリチップの作動内の並列性、ローカルバス上の輻輳の回避、RAIDのような誤差訂正技術の利点をより良好に利用することである。そのような作動に関して、ファイル管理のようなシステム1のより高位の作動の必要性は、メモリシステム100の設計固有のものであり、かつ説明したもののような外部指令によって修正可能であることができない。
しかし、メモリシステム100の活動の一部は、データのストレージを例えばファイルシステムの開発者の必要性によって良好に適応させるようにより、高位の指令によって誘導することができる。
態様において、連続LBAによって表されるデータが連続PBAで格納されることが望ましいと考えることができる(PBAは、L2Pテーブル内のLBAに関連付けられた物理アドレスである)。明らかに、これは、新しく初期化されたメモリシステム100に書き込まれる時に発生する場合があるが、それは、PBAは、書き込まれる時にデータに順番に割り当てることができるからである。しかし、何らかの時間の後に、データの個々のページが修正された時に、LBAの連続ブロックのロケーションは、PBAの連続ブロックによって表すことはもはやできない。
格納データの圧縮は、データをLBAの連続範囲から読み取ることにより、かつ他の散在指令なしでデータを一連の書込指令で書き換える(事実上、既存の値と同じ値を有する修正済みデータを書き込む)ことによって行うことができる。PBAの連続範囲は、消去されたブロックプールからの消去されたページでそのような一連の書込を開始することによって取得することができる。書込指令は、この作動を達成するためにパラメータ化することができる。更に、データは、この並べ替え中に修正されないので、データ自体は、搬送機構50で転送する必要はない。すなわち、一連のLBA/PBA対をメモリシステム100内のPBAの連続範囲に転送することができ、得られるLBA/PBA対は、L2Pテーブルを更新するようにホストコンピュータ5に戻すことができる。
ファイルシステム組織が、データがブロックに格納された状態で、すなわち、ブロック内のページ数に等しく、かつ同じ物理ブロックに該当するPBAを有するページ数を仮定して最適化される場合に、有効であるページの全てを有するブロックを消去されたブロックプールから選択することができ、又はサービスメッセージをファイルシステムに戻すことができる。書込指令は、WRITE3として特徴付けることができ、WRITE3では、データペイロードは、LBA範囲であり、関連のPBAの対応するリストは、L2Pテーブルから決定される。作動が失敗せずに完了した時に、肯定応答メッセージは、データがリロケートされたPBAの対応する新しいリストを含むことができる。
WRITE3指令の有効性は、例えば、第1のLBA/PBA対のメタデータをホストから受信したメタデータ(格納されたLBA、又はLBA又はデータのハッシュであると考えられる)と比較することによって決定することができる。
別の態様において、TRIM(ウインドウズ及びT13委員会によって意味されるような)、unmap(SCSI T10委員会によって説明されているような)、又は将来は使用することができる類似の影響を有する指令のような脱アロケーション指令を使用して、使用ファイルシステムによってもはや必要とすることができない以前に格納された格納データを有するページを指定することができる。しかし、従来のTRIM指令は「ヒント」と見なされ、かつここで使用されたように受信側デバイスによって作用する必要はないが、そのような指令は、以下に説明されるアクションを引き起こすように解釈することができる。
使用アプリケーションによってもはや参照されないページに格納されたデータは、もはや価値がなく、かつブロックがガーベージコレクション又はウェアレベリング動作によって再利用される時にリロケーションなしで消去することができる。ホストコンピュータ5では、LBAへのTRIM指令は、L2Pテーブルにおける対応するPBAを調べるために使用される。廃棄されたLBAとPBA間の関連付けは、メモリシステム100に送られるようにTRIM指令を策定するのに使用される。これが行われている時に、廃棄されたPBAは、L2Pテーブルから削除される(又は、廃用とマーク付けされる)。LBAへのデータのその後の書込は、WRITE1で行われることになるが、それは、L2Pテーブルが、以前に割り当てられたPBAを有していないからである。LBAへの読取指令は、従って、段階890でエラーとして本明細書に説明するものになる。この応答はまた、特定のシステム設計及びプロトコルに基づいて、一定のデータパターン(全て「0」又は全て「1」)とすることができる。従って、割り当てられたPBAを有していないLBAへの読取指令は、結果的には、メモリシステムとの相互作用は発生することができない。
TRIM指令がメモリシステム100に送られた時に、廃棄されたLBAに対応するPBAは、ビットマップを各ブロック1400に対して維持するのに使用される。ここでは、ページは、廃用としてマーク付けすることができ、かつメモリにおいてもはや必要とされないと考えられる。これを行うことにより、使用アプリケーションによってもはや必要さないと考えられるデータを有するページは、データを別のページにリロケートする必要性がなくガーベージコレクション又はウェアレベリング動作中に廃棄することができる。それによって通常業務作動に関連付けられた書込増幅が低減する。
論理アドレス範囲で作動するT13「TRIM」、又はT10「unmap」指令とは異なり、本明細書に説明するunmapは、TRIMed LBAに関連付けられた物理アドレス範囲で作動させることができる。
別の態様において、複数のメモリ回路200又は複数のメモリモジュール150は、2012年5月23日に付与された「メモリ管理システム及び方法」という名称のUS 8,200,887に説明されているように、消去隠し又はRAIDのうちの少なくとも一方をもたらすように作動することができ、この特許は、本出願人所有であり、かつ引用によって本明細書に組み込まれている。複数の異なるメモリ回路又はメモリモジュールは、システムの帯域幅を改善し、待ち時間を低減し、冗長性をもたらすようにいくつかのデータバス、プロセッサ、及びメモリ上でデータ及び指令を散在するように作動することができる。
態様において、複数のメモリ回路200は、RAID構成で作動させることができる。例えば、5つのメモリ回路200がメモリモジュールにある簡単な構成では、データは、データの4つのストライプ及び1つのストライプのパリティデータとして格納される。
最初に、簡潔さのために、エラー処理を無視することにする。メモリ回路200の各々は、数N個のメモリブロックを有することができ、そのうちの予め決められた一部分kが、ユーザに割り当てられる。各ブロックは、いくつかのメモリページMを有する。各メモリ回路に関して、図3に示すようなブロックアロケーションテーブルがある場合がある。最初に、ブロックアロケーションテーブルの全ては同一であり、メモリは、全てがフリーブロック又は消去されたブロックを有する。従って、1つブロックアロケーションテーブルのみが、Nページを有するメモリブロックの論理表現をメモリブロックの物理ロケーションに関連させるのに必要であろう。ここでもまた、簡潔さのために、メモリブロックの論理表現及びメモリブロックの物理表現が1対1に関係があると見なすことができる。
WRITE1要求に伴うデータがメモリモジュール150のコントローラ160によって受信された時に、例えば、データの一部分は、別々のメモリ回路200内の4ページの各々に割り当てられ、4枚のデータページ上で計算されるパリティは、計算されて第5のページに格納される。2つのデータブロック及び1つのパリティブロックから多くのデータブロック及び1つ又はそれよりも多くのパリティブロックまで、データ及びデータのパリティを格納するブロックの他の組合せを使用することができる。構成の選択は、異なるユーザの要求を満たすことができるように構成可能とすることができる。一般的に、RAID処理はメモリシステム内のより低いレベル処理であるので、単一LBAは、複数のPBAにマップすることができ、複数のPBAにおいて、データ及びパリティデータは格納され、ユーザに面するL2Pテーブルは、マッピングユーザに露出する必要はない。
各ページは、別々のメモリ回路200に書き込むことができ、上述のシステム及び方法に従って5つのメモリ回路200の各々内の順次メモリロケーションがデータに割り当てられる。このインスタンスでは、5つのメモリ回路のメモリ回路の各々の第1のページが選択される。これに代えて、ユーザデータの各ページをセクターに分割して、RAID群のストライプに関連付けられたメモリブロックの全てに書き込むことができる。
ここでもまた、説明の簡潔さのために、WRITE1指令によって書き込まれるデータの論理ブロックのサイズは8KBであり、メモリ物理ブロックを構成するMページの各々のサイズは2KBであると仮定する。従って、データは、4つのメモリ回路200の各々の第1のブロックの第1のページに2KBのデータが書き込まれ、第5のメモリ回路の第1のブロックがデータページ上にパリティデータコンピュータで書き込まれるように割り当てることができる。
WRITE1指令は、実行された時に、データが格納された「物理アドレス」を戻す。この例では、この物理アドレスは、メモリ回路の第1のブロック内の第1の物理ブロックアドレスになる。この関係はメモリ回路の全てに対して同じであるので、2KBページ群の第1のページは、アドレス物理ブロックアドレスモジュール8KBを代表すると見なすことができる。
書込処理は、必要に応じて続行することができ、ホストコンピュータ5内のLBA/PBAテーブルが構成される。エラー条件がない限り、5つのメモリ回路200内の5つのページとのLBAの関連付けは、同じテーブルによって表されるが、それは、LBA空間の第1の2KBの増分に対して取られるあらゆるアクションは、LBA空間の2KBの増分の残りに対して取られるアクションと同じであるからである。2KBのパリティデータは、ユーザに直接に提供することができないが、消去隠し及びRAIDのためにシステムによって使用される。
当業者は、WRITE2指令が、メモリ回路200内の対応する物理ロケーションがガーベージコレクション処理において再利用される空間を埋めるために書き込まれるように類似した処理を有することを認識するであろう。図3内のテーブルと類似のテーブルは、必要とする場合がある簡単な間接性を処理することになる。
当業者は、上述したように、ガーベージコレクションが実行される時に、メモリ回路内の特定のページが廃用又はそうでなければ利用不能であると見なされる時に、メモリ回路の群の他の群内の対応するページは同様に処理されることになることを認識するであろう。これは制限ではないが、図3のテーブルの機能は、ブロックレベルの間接性及び一部の場合にページレベルの間接性を管理することができるように変更することができる。
書込作動が失敗するか、又は読取エラーがページ又はブロックが使えなくなるレベルまで増加する場合が生じる。例えば、5つのメモリ回路のメモリ回路のページ1つへ書込作動は失敗する。しかし、データはページのうちの4枚のページには失敗せずに書き込まれる。WRITE指令に対する応答は、生成されてホスト5に送られている場合がある。データは、回復可能であり、それは、全てのデータが失敗せずに書き込まれたか、又は失敗せずに書き込まれたデータが、全くというわけではないが、パリティデータは失敗せずに書き込まれたからである。これに代えて、データは、依然として揮発性メモリ170において又は他の位置でキャッシュに入れることができる。
データのブロック全体は、予備の又はそうでなければフリーのブロックにリロケートすることができ、物理ブロックの論理表現は、データがリロケートされた場合に同じPBAがこの時点で物理アドレスを指示するように更新することができる。これは、LBA/PBA関連付けが有効なままであるのでホスト内のL2Pテーブルを更新する必要がないことを意味する。リロケーションは、図3A、図3Bに示すブロック間接性テーブルによって管理することができる。
メモリモジュールがこのように作動される時に、消去隠し技術は、データブロックの格納先である5つのチップのうちの1つのみがあらゆるある時に確実に書込作動又は消去を実行に適応させることにより、メモリモジュールレベルで使用することができる。従って、読取作動は、例えば、同じチップ平面上に位置する論理ブロックアドレス(LBA)へのそれぞれ同時の書込又は消去作動により遅延なく実行することができる。
この手法はまた、システムにおけるより高いレベルで使用することができ、このレベルでは、メモリコントローラ130は、書込作動において、RAID又は消去隠し構成をメモリモジュールレベルを使用して達成するように複数のメモリモジュール150へのデータの割り当てを実行するのに使用することができる。機能性の一部又は全部は、メモリモジュール内で同じか又は類似の目的に対して機能性の一部又は全部を実行中とすることができるメモリモジュール150上で重ね合わせることができる。
メモリコントローラ150のレベルでは、異なる論理的手法は、処理及びバス負荷を更に均一化するように、例えば、データをメモリモジュールにわたって大雑把に分散化するように使用することができる。これを行うシステム及び方法は、2010年10月8日出願の「複数の分散化を伴うメモリシステム」という名称のUS 122/901,224に説明されており、この特許は、本出願人所有であり、かつ引用によって本明細書に組み込まれている。いずれのレベルでも、書込作動は、完全な2KBのページを形成するように組み合わせることができ、例えば、8KB未満の粒度を有するアドレスは、8KBのページを読み取って、オフセットアドレスによって要求されたデータを抽出することによって提供される。メタデータは、上述したように、正しいデータが確実に読み取られるようにするのに使用することができる。
この説明では、データはテーブルに格納されると説明することが多い。しかし、この用語は、データをシステム設計に適切である連結リスト又は他のデータ構造に格納又は管理することができるので、比喩的な感覚で理解しなければならず、それは、LBA空間は、まばらに割り当てることができ、又は論理ユニット番号(LUN)及びLBAの組合せによって表すことができるなどであるからである。
SSDが、固有の論理−物理マッピングを維持し、より高位の管理では、ガーベージコレクションの一部又は全部を実行するために論理アドレス空間を管理する場合に、より高レベルの機能は、特定の物理アドレスを認識する必要がない場合があるが、どの論理アドレスが同じFLASH消去ブロック内にあるかの記録を維持することができる。これは、例えば、書込指令に応答してブロックアドレスを戻すことによって達成することができるが、古いか又は新しいブロックにおいて何時書込が最後又は最初のものであったかを示すことによっても同じく達成することができる。
より高レベルの管理機能はまた、SSDに新しいブロックに書き込み始めるように指示する指令又は書込指令に対するオプションを有することにより、アドレスが同じブロックにあることを保証するように構成することができる。
SSDは、より高レベルの管理機能が、ある一定のデータ構造又はアルゴリズムパラメータに整合することを可能にするように、ブロックを満たすのに必要とする場合がある書込の回数を質問するか又はこの回数を設定する指令を受諾することができる。
並行して書き込まれるブロックの数は、SSD又はメモリの性能特性、並びに群として移動するアドレスの群のサイズ、又は群としてアドレスを移動しないのに必要とする場合がある関連の追跡に影響を与える。SSDは、このパラメータを設定又は質問することを可能にすることができる。
並行して書き込まれるブロックの数は、SSDの性能特性、並びに群として移動するアドレスの群のサイズ、又は群としてアドレスを移動しないのに必要とする場合がある関連の追跡に影響を与える。SSDは、このパラメータを設定又は質問することを可能にすることができる。
SSDは、単一コントローラから来るがごとく全ての入来の書込を受諾することができるが、2つ又はそれよりも多い別々のより高レベルの管理機能が、どの論理アドレスがガーベージコレクションを管理するために同じブロック内にあるかを追跡しながらSSDを同時に使用するために、SSDは、ブロックの複数のプール、又は複数の書込ストリーム、又は異なる制御関数からの書込を異なるFLASHメモリブロックに書き込むことを可能にする他の手段を作動させることができる。これらのプール/ストリームの各々又は異なる制御関数を追跡する他の手段は、固有の設定パラメータ及び制御を有することができる。態様において、異なるブロックプールは、共通の消去済みブロックプールを共有することができる。
別の態様において、上述のアーキテクチャとの指令インタフェースは、望ましいアプリケーション又は機能性に応じて1つ又はそれよりも多くのレベルで確立することができる。インタフェースは、アプリケーションプログラミングインタフェース(API)又はSCSIのような業界標準プロトコルの拡張又は修正又は適応などの形態とすることができる。一部の実施形態において、ユーザは、物理メモリロケーションデータへのアクセスを許可又は拒否することができる。
本明細書に開示する方法を特定の順番で実行される特定の段階を参照して説明かつ図示したが、これらの段階は、本発明の教示から逸脱することなく同等の方法を形成するために組み合わせるか、再分割するか、又は並べ替えることができることは理解されるであろう。従って、明示的に説明されない限り、段階の順序及びグループ分けは、本発明を制限しない。
主張する本発明のある一定の態様、利点、及び新しい特徴を本明細書に説明した。特定の実施形態を実施する際に全ての利点を達成することができるというわけではないことは当業者によって理解されるであろう。主張する本発明は、教示又は示唆したと考えられる他の利点を必ずしも達成することなく、本明細書で教示する利点又は利点の群を達成又は最適化するように実施又は具現化することができる。
従って、以上の詳細説明は、制限ではなく例示と見なされ、かつ本発明の精神及び範囲を定めるように意図されるものが全ての均等物を含む以下の特許請求の範囲であると理解されるものとすることを意図している。
LBA 論理ブロックアドレス
PBA 物理ブロックアドレス
SCSI 業界規格
PBA 物理ブロックアドレス
SCSI 業界規格
Claims (30)
- データのストレージを管理する方法であって、
プロセッサと揮発性メモリと不揮発性メモリとを有するデータを格納するための不揮発性メモリデバイスを与える段階と、
ユーザからのデータ読取指令を該データ読取指令が第1のタイプのデータ読取指令又は第2のタイプのデータ読取指令であるか否かを決定するために解釈し、
前記データ読取指令は、該指令が、論理アドレスを含み、かつ前記データが格納される前記不揮発性メモリに物理アドレスを含まない時に前記第1のタイプのものであり、
前記データ読取指令は、該データ読取指令が、前記データがメモリに格納される前記不揮発性メモリに少なくとも前記物理アドレスを含む時に前記第2のタイプのものであり、
前記第1のタイプのデータ読取指令に応答して、前記データの前記物理アドレスを決定し、前記不揮発性メモリ内の前記物理アドレスからデータを検索し、かつ該データを前記ユーザに戻し、又は
前記第2のタイプの読取指令に応答して、前記不揮発性メモリ内の前記物理アドレスからデータを検索し、かつ該データを前記ユーザに戻し、
前記論理アドレスと前記物理アドレスの間の関係が、前記不揮発性メモリデバイス内の間接性テーブルに維持される、
ように前記プロセッサを構成する段階と、
を含むことを特徴とする方法。 - 検索されたデータのためのメタデータを読み取る段階と、
前記検索されたデータのためのメタデータの少なくとも一部分を前記第1又は前記第2のタイプの読取指令内のメタデータの少なくとも一部分と比較する段階と、
前記検索されたデータのメタデータ及び前記第1又は前記第2のタイプの読取指令の前記メタデータの前記部分が整合する場合に該検索されたデータを前記ユーザに戻す段階、又は
前記検索されたデータのメタデータ及び前記第1又は前記第2のタイプの読取指令の前記メタデータの前記部分が整合しない場合にエラーメッセージを前記ユーザに戻す段階、
のいずれかと、
を更に含むことを特徴とする請求項1に記載の方法。 - メモリ内のデータストレージを管理する方法であって、
プロセッサと揮発性メモリと不揮発性メモリとを有するデータを格納するための不揮発性メモリデバイスを与える段階と
ユーザからの書込指令を該書込指令が第1のタイプ又は第2のタイプであるか否かを決定するために解釈し、
前記書込指令は、該指令が、論理アドレスを含み、かつ前記データが格納されることになる物理アドレスを含まない時に前記第1のタイプのものであり、
前記書込指令は、該書込指令が、前記データが前記不揮発性メモリに格納される少なくとも物理アドレスを含む時に前記第2のタイプのものであり、
前記第1のタイプの前記書込指令に応答して、プロトコルに従って該第1のタイプの該書込指令に関連付けられたデータが前記不揮発性メモリに格納されることになる該不揮発性メモリ内の前記物理アドレスを決定し、かつ該物理アドレスを間接性テーブル内の前記論理アドレスに関連付け、
第2のタイプの前記書込指令に応答して、プロトコルに従って該第2のタイプの該書込指令に関連付けられたデータが格納されることになる前記不揮発性メモリ内の物理アドレスを決定し、かつ該物理アドレスを前記ユーザへの応答メッセージに含め、
前記間接性テーブルが、前記不揮発性メモリデバイスに維持される、
ように前記プロセッサを構成する段階と、
を含むことを特徴とする方法。 - 前記第1又は前記第2のタイプの書込指令に関連付けられたデータを前記不揮発性メモリに書き込む段階と、
前記第1又は前記第2のタイプの書込指令に関連付けられたメタデータを前記不揮発性メモリデバイスに書き込む段階と、
を更に含むことを特徴とする請求項3に記載の方法。 - 前記第2のタイプの書込指令のメタデータを使用する段階と、
前記第2のタイプの書込指令の前記メタデータの一部分を該第2のタイプの書込指令に与えられた前記不揮発性メモリ内の前記物理アドレスに格納された前記データに関連付けられた前記メタデータの一部分と比較する段階と、
前記第2のタイプの書込指令に応答して物理アドレスを該第2のタイプの書込指令の前記メタデータの前記部分が該第2のタイプの書込指令によって指定された前記不揮発性メモリ内の該物理アドレスに格納された前記メタデータの前記部分と整合する場合に決定する段階を実行する段階、又は
前記第2のタイプ書込指令の前記メタデータの前記部分が、該第2のタイプの書込指令によって指定された前記物理アドレスに格納された前記メタデータの前記部分と整合しない場合にエラーメッセージを前記ユーザに戻す段階、
とを更に含むことを特徴とする請求項3に記載の方法。 - 第2のタイプの書込指令が論理アドレスを含むかを決定し、該論理アドレスを前記決定された物理アドレスに対して格納された前記メタデータの一部分として使用する段階か、又は
前記第2のタイプの書込指令が前記論理アドレスを含まないかを決定し、決定された物理アドレスに関連付けて該論理アドレスをユーザへの応答メッセージに与える段階と、
前記与えられた論理アドレスをメタデータとして格納する段階と、
を更に含むことを特徴とする請求項に3記載の方法。 - 前記メタデータは、前記論理アドレス、該論理アドレスに格納された前記データのハッシュ、シーケンス番号、又は時間値のうちの少なくとも1つを含むことを特徴とする請求項3に記載の方法。
- 前記不揮発性メモリは、物理アドレスと、該不揮発性メモリの複数のブロックのメモリの内のあるブロックのメモリを含み、該ブロックのメモリを完全に消去される前に一度書き込むことができる特性を有するストレージアドレスの群とを有するストレージロケーションで構成されることを特徴とする請求項3に記載の方法。
- 複数のブロックが、ブロックの群を形成し、該ブロックの群は、論理アドレス範囲又は物理アドレス範囲のうちの一方に関連付けられることを特徴とする請求項8に記載の方法。
- メモリシステム内のガーベージコレクションの方法であって、
不揮発性メモリと揮発性メモリとプロセッサとを含むメモリシステムを与える段階と、
論理アドレスを物理アドレスに関連付ける第1の間接性テーブルを維持する段階であって、前記メモリが、複数の物理アドレスを有する複数のブロックとして編成される前記維持する段階と、
各物理アドレスを有効、廃用、又はフリーのうちの1つであるとして特徴付ける段階と、
プロトコルに従って前記複数のブロックのうちのブロックを選択する段階と、
前記データを前記選択されたブロックの有効ストレージロケーションから前記揮発性メモリ内のバッファに読み取り、同時に有効データのそれが読み取られた前記物理アドレスとの関連付けを維持する段階と、
前記不揮発性メモリに書き込まれることになるデータのキャッシュを維持する段階と、
前記複数のブロックのうちの前記選択したブロックを消去する段階と、
プロトコルに従って前記間接性テーブルから前記キャッシュ内の前記データのための物理アドレスを選択する段階と、
前記バッファからのデータ及び前記キャッシュ内の前記データをフリー物理ストレージロケーションを与えるために消去されたブロックのプールから選択されたブロックに書き込む段階と、
を含むことを特徴とする方法。 - ブロックを選択するための前記プロトコルは、ウェアレベリングに備えるものであることを特徴とする請求項10に記載の方法。
- メタデータを含む前記データは、前記選択されたブロックが以前に消去された回数に応じてビット反転フォーマットで各物理アドレスに書き込まれることを特徴とする請求項11に記載の方法。
- 前記物理アドレスは、ページを含む範囲を表すことを特徴とする請求項12に記載の方法。
- 消去される前記ブロックを選択するための前記プロトコルは、消去されたブロックのプールの保守に備えるものであることを特徴とする請求項10に記載の方法。
- 前記選択したブロックは、消去され、有効データ及び前記データを書き込む前記段階は、該選択したブロックに対するものであることを特徴とする請求項10に記載の方法。
- フリー物理アドレスを決定するための前記プロトコルは、前記選択されたブロックの有効データの物理アドレス間の関係を維持し、かつ前記キャッシュ内のデータを該選択されたブロック内の廃用又はフリーのいずれかとして以前に指定されたストレージロケーションに関連付けることを特徴とする請求項10に記載の方法。
- 前記物理アドレスが各ブロック内のブロックアドレス及び相対物理アドレスに関連付けられるように第2の間接性テーブルを維持する段階と、
前記選択されたブロックのブロックアドレスをフリーブロックのプールから選択された前記ブロックのブロックアドレスと交換する段階と、
を更に含むことを特徴とする請求項10に記載の方法。 - 前記第1の間接性テーブル及び前記第2の間接性テーブルは、単一テーブルとして維持されることを特徴とする請求項17に記載の方法。
- データを格納するためのデバイスであって、
データが格納可能である複数の物理ロケーションを各ブロックが含むブロックとして編成された不揮発性半導体メモリと、
関連のバッファメモリを有し、かつデータインタフェース及び前記不揮発性半導体メモリと通信するプロセッサと、
を含み、
前記プロセッサは、
前記データインタフェースを通して指令を受信し、かつ前記不揮発性半導体メモリ内のデータのストレージを管理し、
ユーザからのデータ読取指令を解釈して該データ読取指令が第1のタイプのデータ読取指令又は第2のタイプのデータ読取指令であるか否かを決定し、
前記データ読取指令は、該指令が、論理アドレスを含み、かつ物理アドレスを含まない時に前記第1のタイプのものであり、
前記データ読取指令は、該指令が、前記データがメモリに格納される少なくとも物理アドレスを含む時に前記第2のタイプのものであり、
前記第1のタイプのデータ読取指令に応答して、前記データの前記物理アドレスを決定し、データを前記不揮発性メモリ内の前記物理アドレスから検索し、かつ該データを前記ユーザに戻し、又は
前記第2のタイプの読取指令に応答して、データを前記不揮発性メモリ内の前記物理アドレスから検索し、かつ該データを前記ユーザに戻し、
前記論理アドレスと前記物理アドレスの間の関係が、間接性テーブルに維持される、
ように構成される、
ことを特徴とするデバイス。 - 前記プロセッサは、
検索されたデータのためのメタデータを読み取り、
検索されたデータの前記メタデータの少なくとも一部分を前記第1又は前記第2のタイプの読取指令内のメタデータの少なくとも一部分と比較し、かつ
前記検索されたデータのメタデータ及び前記第1又は前記第2のタイプの読取指令の前記メタデータの前記部分が整合する場合に該検索されたデータを前記ユーザに戻すか、又は
前記検索されたデータのメタデータ及び前記第1又は前記第2のタイプの読取指令の前記メタデータの前記部分が整合しない場合にエラーメッセージを前記ユーザに戻すかのいずれかを行う、
ように構成される、
ことを更に含むことを特徴とする請求項19に記載のデバイス。 - 前記プロセッサは、
前記ユーザからの書込データ指令を解釈して該書込データ指令が前記第1のタイプ又は前記第2のタイプのものであるか否かを決定し、
前記書込データ指令は、該指令が、前記論理アドレスを含み、かつ前記データが格納されることになる物理アドレスを含まない時に前記第1のタイプのものであり、
前記書込データ指令は、該指令が、前記データがメモリに格納される少なくとも物理アドレスを含む時に前記第2のタイプのものであり
前記第1のタイプの前記指令に応答して、プロトコルに従って前記第1のタイプの書込データ指令に関連付けられたデータが格納されることになる前記不揮発性半導体メモリ内の前記物理アドレスを決定し、かつ該物理アドレスを間接性テーブル内の前記論理アドレスに関連付けるか、又は
前記第2のタイプの前記指令に応答して、プロトコルに従って該第2のタイプの書込データ指令に関連付けられたデータが格納されることになる前記不揮発性メモリ内の物理アドレスを決定し、かつ該物理アドレスを前記ユーザへの応答メッセージに含める、
ように構成される、
ことを更に含むことを特徴とする請求項20に記載のデバイス。 - 前記プロセッサは、
前記第1又は前記第2のタイプの前記指令に関連付けられたデータを前記不揮発性半導体メモリに書き込み、かつ
前記第1又は前記第2の前記指令に関連付けられたメタデータを前記不揮発性半導体メモリデバイスに書き込む、
ように構成される、
ことを更に含むことを特徴とする請求項21に記載のデバイス。 - 前記プロセッサは、
前記第2のタイプの前記指令の前記メタデータの一部分を該第2のタイプの書込データ指令に与えられた前記物理アドレスに格納された前記データに関連付けられた前記メタデータの一部分と比較し、かつ
前記第2のタイプの前記指令に応答して物理アドレスを該第2のタイプの該指令の前記メタデータの前記部分が該第2のタイプの該指令の該物理アドレスに格納された前記メタデータの前記部分に整合する場合に決定する段階を実行するか、又は
前記第2のタイプの前記指令の前記メタデータの前記部分が該第2のタイプの該指令の前記物理アドレスに格納された前記メタデータの前記部分に整合しない場合に前記エラーメッセージを前記ユーザに戻す、
ように構成される、
ことを更に含むことを特徴とする請求項20に記載のデバイス。 - 前記プロセッサは、
第2のタイプの書込データ指令が第1の論理アドレスを含むかを決定し、かつ該第1の論理アドレスを前記メタデータの一部分として使用するか、又は
前記第2のタイプの書込データ指令が第1の論理アドレスを含まないかを決定し、かつ前記決定された物理アドレスに関連付けて第2の論理アドレスを前記ユーザへの応答メッセージに与え、かつ
前記第2の論理アドレスを前記データのためのメタデータとして格納する、
ように構成される、
ことを更に含むことを特徴とする請求項20に記載のデバイス。 - 前記メタデータは、前記論理アドレス、該論理アドレスのうちの前記1つに格納された前記データのハッシュ、シーケンス番号、又は時間値のうちの少なくとも1つを含むことを特徴とする請求項20に記載のデバイス。
- 前記不揮発性半導体メモリは、物理アドレスと、メモリのブロックを含み、かつメモリのブロックを完全に消去される前に一度書き込むことができる特性を有するストレージアドレスの群とを有するストレージロケーションで構成されることを特徴とする請求項20に記載のデバイス。
- 複数のブロックが、ブロックの群を形成し、該ブロックの群は、論理アドレス範囲又は物理アドレス範囲のうちの一方に関連付けられることを特徴とする請求項26に記載のデバイス。
- 前記プロセッサは、
前記間接性テーブル内の対応する論理アドレスから切り離されることになる少なくとも1つの物理アドレスを識別するTRIM指令を前記ユーザから受信し、
前記間接性テーブル内の前記論理アドレスに関連付けられた前記物理アドレスのステータスを無効に設定し、
前記物理アドレスを前記論理アドレスから切り離す、
ように構成される、
ことを更に含むことを特徴とする請求項20に記載のデバイス。 - 前記TRIM指令は、基本論理ブロックアドレス及び範囲を含むことを特徴とする請求項28に記載のデバイス。
- 前記TRIM指令に含まれる前記範囲のメタデータが、該範囲の前記少なくとも1つの物理アドレスの前記メタデータと比較され、該物理アドレスのステータスが、無効に設定され、該物理アドレスは、該メタデータが整合した時に前記論理アドレスから切り離されることを特徴とする請求項29に記載のデバイス。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361750133P | 2013-01-08 | 2013-01-08 | |
US61/750,133 | 2013-01-08 | ||
PCT/US2014/010624 WO2014110095A1 (en) | 2013-01-08 | 2014-01-08 | Method and system for data storage |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016506585A true JP2016506585A (ja) | 2016-03-03 |
Family
ID=51061905
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015552737A Pending JP2016506585A (ja) | 2013-01-08 | 2014-01-08 | データストレージのための方法及びシステム |
Country Status (4)
Country | Link |
---|---|
US (1) | US9378135B2 (ja) |
JP (1) | JP2016506585A (ja) |
KR (1) | KR20150105323A (ja) |
WO (1) | WO2014110095A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017162066A (ja) * | 2016-03-08 | 2017-09-14 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
JP2022111330A (ja) * | 2018-09-19 | 2022-07-29 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP2022152549A (ja) * | 2021-03-29 | 2022-10-12 | 株式会社日立製作所 | ストレージシステム及びストレージシステムの制御方法 |
Families Citing this family (127)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8954654B2 (en) * | 2008-06-18 | 2015-02-10 | Super Talent Technology, Corp. | Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance |
US9256609B2 (en) * | 2012-03-08 | 2016-02-09 | Dell Products L.P. | Fixed size extents for variable size deduplication segments |
US9390055B2 (en) | 2012-07-17 | 2016-07-12 | Coho Data, Inc. | Systems, methods and devices for integrating end-host and network resources in distributed memory |
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 |
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 |
US10120792B1 (en) * | 2014-01-29 | 2018-11-06 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Programming an embedded flash storage device |
US9454551B2 (en) * | 2014-03-13 | 2016-09-27 | NXGN Data, Inc. | System and method for management of garbage collection operation in a solid state drive |
KR102282006B1 (ko) * | 2014-08-19 | 2021-07-28 | 삼성전자주식회사 | 컴퓨터 장치 및 저장 장치 |
US9542118B1 (en) * | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US9513822B2 (en) | 2014-09-26 | 2016-12-06 | Hewlett Packard Enterprise Development Lp | Unmap storage space |
US9626286B2 (en) * | 2014-10-03 | 2017-04-18 | Sandisk Technologies Llc | Hardware and firmware paths for performing memory read processes |
US9798657B2 (en) | 2014-10-15 | 2017-10-24 | Samsung Electronics Co., Ltd. | Data storage device including nonvolatile memory device and operating method thereof |
US9852799B2 (en) * | 2014-11-19 | 2017-12-26 | Sandisk Technologies Llc | Configuration parameter management for non-volatile data storage |
US11086775B2 (en) | 2014-12-11 | 2021-08-10 | Toshiba Memory Corporation | Information processing device, non-transitory computer readable recording medium, and information processing system |
US9977734B2 (en) | 2014-12-11 | 2018-05-22 | Toshiba Memory Corporation | Information processing device, non-transitory computer readable recording medium, and information processing system |
US10409526B2 (en) * | 2014-12-17 | 2019-09-10 | Violin Systems Llc | Adaptive garbage collection |
US10282096B1 (en) | 2014-12-17 | 2019-05-07 | Western Digital Technologies, Inc. | Identification of data with predetermined data pattern |
US9760281B2 (en) * | 2015-03-27 | 2017-09-12 | Intel Corporation | Sequential write stream management |
US10649890B2 (en) * | 2015-04-28 | 2020-05-12 | Nec Corporation | Information processing system, storage control apparatus, storage control method, and storage control program |
US10108344B1 (en) * | 2015-05-06 | 2018-10-23 | American Megatrends, Inc. | Systems, devices and methods using a solid state device as a caching medium with an SSD filtering or SSD pre-fetch algorithm |
JP6398102B2 (ja) * | 2015-05-29 | 2018-10-03 | 東芝メモリ株式会社 | メモリシステム |
TWI569275B (zh) * | 2015-07-17 | 2017-02-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料維護方法 |
US9880770B2 (en) | 2015-09-02 | 2018-01-30 | SK Hynix Inc. | Supporting invalidation commands for non-volatile memory |
MX363170B (es) * | 2015-11-27 | 2019-03-13 | Huawei Tech Co Ltd | Método para almacenar datos por medio de un dispositivo de almacenamiento y dispositivo de almacenamiento. |
US9569306B1 (en) | 2015-12-18 | 2017-02-14 | International Business Machines Corporation | Recovery of multi-page failures in non-volatile memory system |
US10152527B1 (en) * | 2015-12-28 | 2018-12-11 | EMC IP Holding Company LLC | Increment resynchronization in hash-based replication |
KR20170081118A (ko) * | 2015-12-30 | 2017-07-11 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치를 액세스하는 액세스 방법 |
US10229051B2 (en) * | 2015-12-30 | 2019-03-12 | Samsung Electronics Co., Ltd. | Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device |
US10216439B2 (en) * | 2016-02-02 | 2019-02-26 | International Business Machines Corporation | Protecting unallocated data within a storage volume |
US11301422B2 (en) * | 2016-02-23 | 2022-04-12 | Samsung Electronics Co., Ltd. | System and methods for providing fast cacheable access to a key-value device through a filesystem interface |
US10810132B1 (en) * | 2016-03-30 | 2020-10-20 | EMC IP Holding Company, LLC | Object based extent mapping for flash memory |
US9880743B1 (en) * | 2016-03-31 | 2018-01-30 | EMC IP Holding Company LLC | Tracking compressed fragments for efficient free space management |
US10331352B2 (en) | 2016-06-06 | 2019-06-25 | Toshiba Memory Corporation | Dynamic processing of storage command based on internal operations of storage system |
US9934151B2 (en) | 2016-06-28 | 2018-04-03 | Dell Products, Lp | System and method for dynamic optimization for burst and sustained performance in solid state drives |
US10289544B2 (en) * | 2016-07-19 | 2019-05-14 | Western Digital Technologies, Inc. | Mapping tables for storage devices |
US9946490B2 (en) * | 2016-07-28 | 2018-04-17 | Western Digital Technologies, Inc. | Bit-level indirection defragmentation |
US10241860B2 (en) * | 2016-08-15 | 2019-03-26 | Samsung Electronics Co., Ltd. | Method of executing data scrubbing inside a smart storage device |
US20180089088A1 (en) * | 2016-09-27 | 2018-03-29 | Intel Corporation | Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache |
US10528463B2 (en) * | 2016-09-28 | 2020-01-07 | Intel Corporation | Technologies for combining logical-to-physical address table updates in a single write operation |
CN107885456B (zh) * | 2016-09-29 | 2022-09-16 | 北京忆恒创源科技股份有限公司 | 减少io命令访问nvm的冲突 |
US10489289B1 (en) | 2016-09-30 | 2019-11-26 | Amazon Technologies, Inc. | Physical media aware spacially coupled journaling and trim |
US10540102B2 (en) | 2016-09-30 | 2020-01-21 | Amazon Technologies, Inc. | Physical media aware spacially coupled journaling and replay |
US20180095699A1 (en) * | 2016-10-01 | 2018-04-05 | National Tsing Hua University | Memory system, memory device thereof, and method for writing to and reading from memory device thereof |
TWI591533B (zh) * | 2016-11-25 | 2017-07-11 | 慧榮科技股份有限公司 | 可用於資料儲存裝置之資料儲存方法與資料回復程序、以及採用這些方法的資料儲存裝置 |
US10613973B1 (en) * | 2016-12-28 | 2020-04-07 | Amazon Technologies, Inc. | Garbage collection in solid state drives |
US10289550B1 (en) | 2016-12-30 | 2019-05-14 | EMC IP Holding Company LLC | Method and system for dynamic write-back cache sizing in solid state memory storage |
US10338983B2 (en) | 2016-12-30 | 2019-07-02 | EMC IP Holding Company LLC | Method and system for online program/erase count estimation |
US11069418B1 (en) | 2016-12-30 | 2021-07-20 | EMC IP Holding Company LLC | Method and system for offline program/erase count estimation |
US10325108B2 (en) * | 2016-12-30 | 2019-06-18 | Intel Corporation | Method and apparatus for range based checkpoints in a storage device |
JP6765321B2 (ja) * | 2017-02-28 | 2020-10-07 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10235283B2 (en) * | 2017-03-14 | 2019-03-19 | International Business Machines Corporation | Techniques for supporting in-place updates with a log-structured array controller |
US10403366B1 (en) * | 2017-04-28 | 2019-09-03 | EMC IP Holding Company LLC | Method and system for adapting solid state memory write parameters to satisfy performance goals based on degree of read errors |
US10290331B1 (en) | 2017-04-28 | 2019-05-14 | EMC IP Holding Company LLC | Method and system for modulating read operations to support error correction in solid state memory |
US11102294B2 (en) * | 2017-06-09 | 2021-08-24 | Samsung Electronics Co., Ltd. | System and method for supporting energy and time efficient content distribution and delivery |
CN109101185B (zh) * | 2017-06-20 | 2023-08-11 | 北京忆恒创源科技股份有限公司 | 固态存储设备及其写命令和读命令处理方法 |
US10387246B2 (en) | 2017-06-26 | 2019-08-20 | Western Digital Technologies, Inc. | Method and system for scanning for erased flash memory pages |
CN109213423B (zh) * | 2017-06-30 | 2024-01-26 | 北京忆恒创源科技股份有限公司 | 基于地址屏障无锁处理并发io命令 |
CN109388520B (zh) * | 2017-08-08 | 2022-02-15 | 深圳大心电子科技有限公司 | 数据备份方法、数据恢复方法以及存储控制器 |
US10585749B2 (en) * | 2017-08-10 | 2020-03-10 | Samsung Electronics Co., Ltd. | System and method for distributed erasure coding |
KR102435890B1 (ko) | 2017-08-17 | 2022-08-25 | 삼성전자주식회사 | 스토리지 장치의 어드레스 맵핑 방법 및 동작 방법 |
WO2019049129A1 (en) * | 2017-09-07 | 2019-03-14 | Kaminario Technologies Ltd. | DIRECT READ CONTROL IN A DATA STORAGE SYSTEM |
JP2019056981A (ja) | 2017-09-19 | 2019-04-11 | 東芝メモリ株式会社 | メモリシステム |
JP6785204B2 (ja) | 2017-09-21 | 2020-11-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
CN109558271B (zh) * | 2017-09-26 | 2023-02-24 | 深圳大心电子科技有限公司 | 数据备份方法、数据恢复方法以及存储控制器 |
US10558393B2 (en) * | 2017-10-20 | 2020-02-11 | Qualcomm Incorporated | Controller hardware automation for host-aware performance booster |
US10430117B2 (en) | 2017-10-23 | 2019-10-01 | Micron Technology, Inc. | Host accelerated operations in managed NAND devices |
KR20190044968A (ko) * | 2017-10-23 | 2019-05-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR102530583B1 (ko) * | 2017-10-31 | 2023-05-09 | 삼성전자주식회사 | 저장 장치 및 메모리 시스템 |
US11474724B2 (en) * | 2018-01-25 | 2022-10-18 | Vmware, Inc. | System and method for speed up data rebuild in a distributed storage system with local deduplication |
US20190042460A1 (en) * | 2018-02-07 | 2019-02-07 | Intel Corporation | Method and apparatus to accelerate shutdown and startup of a solid-state drive |
US10740181B2 (en) | 2018-03-06 | 2020-08-11 | Western Digital Technologies, Inc. | Failed storage device rebuild method |
US10963375B1 (en) * | 2018-03-23 | 2021-03-30 | Amazon Technologies, Inc. | Managing maintenance operations for a distributed system |
US11422726B1 (en) * | 2018-05-01 | 2022-08-23 | Amazon Technologies, Inc. | Efficient storage device data move operation based on priority of garbage collection command |
CN110471788B (zh) * | 2018-05-08 | 2024-03-15 | 美光科技公司 | 异步功率损耗影响的数据结构 |
US10970205B2 (en) | 2018-05-31 | 2021-04-06 | Micron Technology, Inc. | Logical-to-physical data structures for tracking logical block addresses indicative of a collision |
JP6824929B2 (ja) * | 2018-06-07 | 2021-02-03 | 株式会社日立製作所 | 記憶制御システム及び記憶制御方法 |
US11036651B2 (en) | 2018-06-29 | 2021-06-15 | Micron Technology, Inc. | Host side caching security for flash memory |
US10552316B2 (en) | 2018-06-29 | 2020-02-04 | Micron Technology, Inc. | Controlling NAND operation latency |
US10831603B2 (en) | 2018-08-03 | 2020-11-10 | Western Digital Technologies, Inc. | Rebuild assist using failed storage device |
US10824526B2 (en) | 2018-08-03 | 2020-11-03 | Western Digital Technologies, Inc. | Using failed storage device in peer-to-peer storage system to perform storage-centric task |
US10901848B2 (en) | 2018-08-03 | 2021-01-26 | Western Digital Technologies, Inc. | Storage systems with peer data recovery |
US10649843B2 (en) | 2018-08-03 | 2020-05-12 | Western Digital Technologies, Inc. | Storage systems with peer data scrub |
KR20200016076A (ko) * | 2018-08-06 | 2020-02-14 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
KR20200033459A (ko) * | 2018-09-20 | 2020-03-30 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20200037584A (ko) | 2018-10-01 | 2020-04-09 | 에스케이하이닉스 주식회사 | 메모리 시스템, 그것의 동작방법 및 메모리 시스템을 포함하는 데이터베이스 시스템 |
US10802741B2 (en) * | 2018-11-12 | 2020-10-13 | Vmware, Inc. | Pre-zeroing blocks in files using automatic file unmap framework |
KR20200059936A (ko) * | 2018-11-22 | 2020-05-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
TWI702497B (zh) * | 2018-12-26 | 2020-08-21 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
US11182258B2 (en) | 2019-01-04 | 2021-11-23 | Western Digital Technologies, Inc. | Data rebuild using dynamic peer work allocation |
KR20200100956A (ko) * | 2019-02-19 | 2020-08-27 | 에스케이하이닉스 주식회사 | 메모리 시스템의 맵 데이터 관리 방법 및 장치 |
KR20200139433A (ko) | 2019-06-04 | 2020-12-14 | 에스케이하이닉스 주식회사 | 컨트롤러의 동작 방법 및 메모리 시스템 |
KR20200123684A (ko) * | 2019-04-22 | 2020-10-30 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵 정보를 전송하는 장치 |
US11422942B2 (en) | 2019-04-02 | 2022-08-23 | SK Hynix Inc. | Memory system for utilizing a memory included in an external device |
KR102666123B1 (ko) | 2019-07-05 | 2024-05-16 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 |
KR20200137181A (ko) | 2019-05-29 | 2020-12-09 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵정보를 전송하는 장치 |
KR20210004322A (ko) | 2019-07-04 | 2021-01-13 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵정보 및 리드카운트를 전송하는 장치 및 방법 |
KR20200119059A (ko) | 2019-04-09 | 2020-10-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20200132047A (ko) | 2019-05-15 | 2020-11-25 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵 데이터를 전송하는 방법 및 장치 |
KR20210011201A (ko) | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 온도 조절 방법 |
KR20210014338A (ko) | 2019-07-30 | 2021-02-09 | 에스케이하이닉스 주식회사 | 데이터 저장 장치, 데이터 처리 시스템 및 데이터 저장 장치의 동작 방법 |
KR20210011216A (ko) | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템의 메타 데이터 관리 방법 및 장치 |
KR20210011176A (ko) | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 메모리 시스템의 액세스 동작 방법 및 장치 |
KR20210001546A (ko) | 2019-06-28 | 2021-01-06 | 에스케이하이닉스 주식회사 | 슬립모드에서 메모리 시스템의 내부데이터를 전송하는 장치 및 방법 |
KR20200122086A (ko) | 2019-04-17 | 2020-10-27 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵 세그먼트를 전송하는 방법 및 장치 |
KR20200139913A (ko) | 2019-06-05 | 2020-12-15 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 메타 정보 저장 장치 |
TWI725416B (zh) * | 2019-04-23 | 2021-04-21 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 |
CN111858389B (zh) * | 2019-04-30 | 2023-07-04 | 群联电子股份有限公司 | 数据写入方法、存储器控制电路单元以及存储器存储装置 |
US11237953B2 (en) * | 2019-05-21 | 2022-02-01 | Micron Technology, Inc. | Host device physical address encoding |
CN112115067A (zh) * | 2019-06-21 | 2020-12-22 | 慧荣科技股份有限公司 | 闪存物理资源集合管理装置及方法及计算机可读取存储介质 |
US11216218B2 (en) * | 2019-07-15 | 2022-01-04 | Micron Technology, Inc. | Unmap data pattern for coarse mapping memory sub-system |
US11474865B2 (en) | 2019-08-23 | 2022-10-18 | Micron Technology, Inc. | Allocation schema for a scalable memory area |
CN110515560A (zh) * | 2019-08-27 | 2019-11-29 | 江苏华存电子科技有限公司 | 一种用于记录仪的有效存储方式 |
US11137941B2 (en) * | 2019-12-30 | 2021-10-05 | Advanced Micro Devices, Inc. | Command replay for non-volatile dual inline memory modules |
KR20210111527A (ko) | 2020-03-03 | 2021-09-13 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 가비지 컬렉션을 수행하는 장치 및 방법 |
KR20210111993A (ko) | 2020-03-04 | 2021-09-14 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작 방법 |
US20210349837A1 (en) * | 2020-05-07 | 2021-11-11 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for near data processing |
US11429453B1 (en) * | 2020-06-26 | 2022-08-30 | Amazon Technologies, Inc. | Replicating and managing aggregated descriptive data for cloud services |
KR20220021186A (ko) | 2020-08-13 | 2022-02-22 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 내 데이터를 공유하는 장치 및 방법 |
CN112000591B (zh) * | 2020-08-24 | 2023-12-05 | 深圳忆联信息***有限公司 | 可指定逻辑区块地址的扫描ssd方法、装置、计算机设备及存储介质 |
US12014081B2 (en) * | 2020-12-15 | 2024-06-18 | Intel Corporation | Host managed buffer to store a logical-to physical address table for a solid state drive |
CN112905122B (zh) * | 2021-02-20 | 2024-04-09 | 炬芯科技股份有限公司 | 一种存储数据的方法及装置 |
CN113254265B (zh) * | 2021-05-10 | 2023-03-14 | 苏州库瀚信息科技有限公司 | 基于固态硬盘的快照实现方法、存储*** |
US11640375B2 (en) * | 2021-06-23 | 2023-05-02 | Vmware, Inc. | Avoiding data inconsistency in a file system using 2-level synchronization |
CN113722334B (zh) * | 2021-09-10 | 2024-05-17 | 京东科技控股股份有限公司 | 数据处理的方法、装置、电子设备及介质 |
CN115079957B (zh) * | 2022-07-20 | 2023-08-04 | 阿里巴巴(中国)有限公司 | 请求处理方法、装置、控制器、设备及存储介质 |
CN115657963B (zh) * | 2022-11-14 | 2023-04-11 | 苏州浪潮智能科技有限公司 | 基于固态硬盘的顺序写方法、装置、电子设备及存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4085478B2 (ja) * | 1998-07-28 | 2008-05-14 | ソニー株式会社 | 記憶媒体及び電子機器システム |
US7877542B2 (en) * | 2000-01-06 | 2011-01-25 | Super Talent Electronics, Inc. | High integration of intelligent non-volatile memory device |
JP2008090876A (ja) * | 2006-09-29 | 2008-04-17 | Toshiba Corp | 不揮発性半導体記憶装置 |
US8151060B2 (en) | 2006-11-28 | 2012-04-03 | Hitachi, Ltd. | Semiconductor memory system having a snapshot function |
US7877524B1 (en) * | 2007-11-23 | 2011-01-25 | Pmc-Sierra Us, Inc. | Logical address direct memory access with multiple concurrent physical ports and internal switching |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US8151032B2 (en) * | 2008-06-26 | 2012-04-03 | Microsoft Corporation | Direct memory access filter for virtualized operating systems |
US8200922B2 (en) | 2008-12-17 | 2012-06-12 | Netapp, Inc. | Storage system snapshot assisted by SSD technology |
US8176295B2 (en) * | 2009-04-20 | 2012-05-08 | Imation Corp. | Logical-to-physical address translation for a removable data storage device |
KR20120132820A (ko) * | 2011-05-30 | 2012-12-10 | 삼성전자주식회사 | 스토리지 디바이스, 스토리지 시스템 및 스토리지 디바이스의 가상화 방법 |
US9043565B2 (en) * | 2012-09-07 | 2015-05-26 | Kabushiki Kaisha Toshiba | Storage device and method for controlling data invalidation |
US9652376B2 (en) * | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
-
2014
- 2014-01-08 WO PCT/US2014/010624 patent/WO2014110095A1/en active Application Filing
- 2014-01-08 JP JP2015552737A patent/JP2016506585A/ja active Pending
- 2014-01-08 US US14/149,993 patent/US9378135B2/en active Active
- 2014-01-08 KR KR1020157017953A patent/KR20150105323A/ko not_active Application Discontinuation
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017162066A (ja) * | 2016-03-08 | 2017-09-14 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
CN107168639A (zh) * | 2016-03-08 | 2017-09-15 | 东芝存储器株式会社 | 存储***、信息处理***及非易失性存储器的控制方法 |
US10162749B2 (en) | 2016-03-08 | 2018-12-25 | Toshiba Memory Corporation | Storage system and information processing system for controlling nonvolatile memory |
CN107168639B (zh) * | 2016-03-08 | 2020-04-07 | 东芝存储器株式会社 | 存储***、信息处理***及非易失性存储器的控制方法 |
JP2022111330A (ja) * | 2018-09-19 | 2022-07-29 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7337228B2 (ja) | 2018-09-19 | 2023-09-01 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP2022152549A (ja) * | 2021-03-29 | 2022-10-12 | 株式会社日立製作所 | ストレージシステム及びストレージシステムの制御方法 |
JP7232281B2 (ja) | 2021-03-29 | 2023-03-02 | 株式会社日立製作所 | ストレージシステム及びストレージシステムの制御方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20150105323A (ko) | 2015-09-16 |
US20140195725A1 (en) | 2014-07-10 |
US9378135B2 (en) | 2016-06-28 |
WO2014110095A1 (en) | 2014-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9378135B2 (en) | Method and system for data storage | |
US11429277B2 (en) | Memory system for controlling nonvolatile memory | |
US8447918B2 (en) | Garbage collection for failure prediction and repartitioning | |
US9158700B2 (en) | Storing cached data in over-provisioned memory in response to power loss | |
US11237742B2 (en) | Apparatus and method for controlling data stored in memory system | |
US10884630B2 (en) | Storage system | |
US10817418B2 (en) | Apparatus and method for checking valid data in memory system | |
US10963175B2 (en) | Apparatus and method for searching valid data in memory system | |
US20150347310A1 (en) | Storage Controller and Method for Managing Metadata in a Cache Store | |
US20130019057A1 (en) | Flash disk array and controller | |
US9558108B2 (en) | Half block management for flash storage devices | |
US11157402B2 (en) | Apparatus and method for managing valid data in memory system | |
WO2015052833A1 (ja) | ストレージ装置、ストレージシステム、及びストレージ装置制御方法 | |
CN104854554A (zh) | 储存转换层 | |
US10579540B2 (en) | Raid data migration through stripe swapping | |
WO2015068233A1 (ja) | ストレージシステム | |
US20170010810A1 (en) | Method and Apparatus for Providing Wear Leveling to Non-Volatile Memory with Limited Program Cycles Using Flash Translation Layer | |
WO2021080774A1 (en) | Construction of a block device | |
US10942848B2 (en) | Apparatus and method for checking valid data in memory system | |
WO2021080785A1 (en) | Construction of a block device | |
US10853257B1 (en) | Zero detection within sub-track compression domains | |
US11144445B1 (en) | Use of compression domains that are more granular than storage allocation units | |
JP6817340B2 (ja) | 計算機 | |
US11893269B2 (en) | Apparatus and method for improving read performance in a system | |
JP6666405B2 (ja) | メモリシステムおよび制御方法 |