JP2015144022A - ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け - Google Patents
ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け Download PDFInfo
- Publication number
- JP2015144022A JP2015144022A JP2015075686A JP2015075686A JP2015144022A JP 2015144022 A JP2015144022 A JP 2015144022A JP 2015075686 A JP2015075686 A JP 2015075686A JP 2015075686 A JP2015075686 A JP 2015075686A JP 2015144022 A JP2015144022 A JP 2015144022A
- Authority
- JP
- Japan
- Prior art keywords
- bucket
- memory
- index
- physical
- flash
- 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.)
- Granted
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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
-
- 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/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
-
- 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/60—Details of cache memory
- G06F2212/6032—Way prediction in set-associative cache
-
- 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/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
インデックスの構築のための方法及び装置に関する。
テム構造(「メタデータ」)を格納するために、オブジェクトを使用する。ファイルは、多数の小さいオブジェクト、恐らくは4KB(2^12バイト)ほどの大きさに分割される。64TB(2^46バイト)に及ぶファイルシステムでは、例えば、これは、2^(46−12)=2^34、即ち、およそ160億個を超えるオブジェクトを追跡し続ける結果となる。
ばGUID(グローバル一意ID)であるか、或いはコンテンツの暗号ハッシュである、オブジェクト名を有するが、各一意のオブジェクトが一意の名前を有する限り、他の命名規則は可能である。オブジェクト名は通常、人とは対照的に、プログラムによる使用向けの固定長のバイナリ文字列である。オブジェクトサイズは任意であるが、実際には、典型的には2の累乗であり、512バイト(2^9)から最大1MB(2^20)に及ぶ。これに関連するオブジェクトは、Java(登録商標)及びC++等、プログラミング言語で使用されるようなオブジェクトと混同されるべきではない。
呼ばれる)は、ファイルシステムによって必要とされる。インデックス内の各レコードは、オブジェクト名、長さ、位置及び他の種々雑多な情報を含む場合がある。インデックスは、その主キーとして、オブジェクト名、オブジェクトの位置、又は場合によっては両方を有する場合がある。レコードは、数十バイト程度であり、32バイトは一例である。
アップすること、エントリに修正を行うこと、及び、エントリを削除することを含む。これらは全て、任意のインデックスにおいて行われる典型的な動作である。
受け入れ可能な性能レベルを得るために、インデックス付けソリューションは、容易に対処されない2つの課題を有する。
つ参照することを考えれば、インデックス動作レートは、100000動作/秒を容易に上回る可能性がある。比較のポイントとして、現在の最先端のディスクは、よくても毎秒400個の動作しか行うことができない。
技術のみを使用するのでは実際的ではない。DRAMメモリは十分高速であるが、密度は十分ではない。ディスクは密度を有するが、性能を有していない。所望の特性に達するように、何れか(DRAMメモリ又はディスク)をスケールすることは、費用がかかり過ぎる。
様であることが多いので、空間及び時間局所性によって決まる典型的なキャッシングスキームの効果は限られている。よって、インデックス付けの問題は、サイズにおいても、動作レートにおいても、困難である。
って、ノンユニフォームアクセスメモリに格納されたインデックスにアクセスする方法が提供され、この方法は、
インデックス付け処理によって生成された論理バケット識別子を、メモリの物理バケット位置にマップして、インデックス内の各レコードデータエントリにアクセスするために、変換テーブルを維持するステップと、
インデックスに書き込まれる複数のレコードデータエントリをキャッシュ内に集めるステップであって、該ステップは、メモリの少なくとも1つの物理バケット位置へのエントリの集まりの後続の順次書込みに先立つ、ステップと
を含む。
レコードデータエントリの集まりを、キャッシュからメモリのバケット位置へ、順次書込みとして書き込むステップと、
集まりのレコードデータエントリのためのバケット位置により、変換テーブルを更新するステップと
を含む。
1つ又は複数の順次レコードデータエントリを、メモリからキャッシュへ読み出すステップと、
1つ又は複数のエントリが読み出されたメモリ内の物理位置を、フリーとして指定するステップと
を含む。
ブロック内の任意の有効エントリをキャッシュに読み出すこと、及び、そのようなエントリが読み出されたメモリ内の物理位置を、フリーとして指定することによって、メモリ内の複数の順次物理バケット位置をフリーブロックとするステップを含む。
インデックス付け処理が、一律に配布され一意のインデックスキーに基づいて、インデックスへのランダムアクセス要求を生成する。
キーは、暗号ハッシュダイジェストを含む。
インデックス付け処理は、置き換えハッシングの処理を含む。
置き換え(displacement)ハッシングは、カッコウハッシング処理を含む。
メモリは、フラッシュ、相変化及びソリッドステートディスクのメモリデバイスのうちの1つ又は複数を含む。
メモリは、ランダム書込みアクセス時間、ランダム読出し−修正−書込みアクセス時間、順次書込み、アラインメント制約、消去時間、消去ブロック境界及び摩耗のうちの1つ又は複数によって制限される。
物理バケットのサイズは、メモリの最小書込みサイズを含む。
物理バケットのサイズは、ページ又は部分ページを含む。
メモリは、複数のページを含む消去ブロックを有する。
メモリ内のどのバケット位置が有効であるかを追跡するためのバケット有効テーブルを維持するステップを含む。
メモリ内のバケットは、1つ又は複数のレコードデータエントリのセット、及び、バケット変換テーブルへのセルフインデックスを含む。
バケット内のレコードデータエントリは順序付けされない。
メモリに順次書き込まれたレコードデータエントリを、キャッシュ内で読出し専用として指定するステップを含む。
バケット変換テーブルは、永続メモリに格納される。
消去ブロック内のフリーバケットの数を追跡し、フリーバケットのしきい値が満たされたとき、フリー消去ブロックを生成するための処理を実施するステップを含む。
インデックス付け処理は、レコードが挿入、削除、ルックアップ及び修正のうちの1以上をされる要求に基づいて、インデックス付けオペレーションを行う。
インデックス付け処理は、インデックスのレコードを格納する物理バケットを読み出し該物理バケットに書き込むための、論理バケットオペレーションを提示する。
物理バケットオペレーションは、ランダム読出し及び順次書込みを含む。
物理バケットオペレーションは、トリムコマンドを更に含む。
メモリは、ノンユニフォーム読出し及び書込みアクセス、並びに、サイズ、アラインメント及びタイミングについての不変性によって特徴付けられた物理デバイス層を含む。
レコードデータエントリは、キー、参照カウント及び物理ブロックアドレスのためのフィールドを含む。
キーは、データの暗号ハッシュダイジェストを含み、
物理ブロックアドレスフィールドは、ストレージデバイス上に格納されたデータの物理ブロックアドレスへのポインタを含む。
論理バケット位置は、複数のハッシュ関数によって生成される。
メモリは、複数の消去ブロックを含むフラッシュメモリデバイスを含み、各消去ブロックは複数のページを含み、各ページは複数のバケットを含む。
プロセッサによって実行されるとき、前述の方法のステップを行うプログラムコード手段を含むコンピュータプログラム製品が提供される。
インデックス付け処理によって生成された論理バケット識別子を、メモリの物理バケット位置にマップして、インデックス内の各レコードデータエントリにアクセスするために、変換テーブルを維持するステップと、
インデックスに書き込まれる複数のレコードデータエントリをキャッシュ内に集めるステップであって、該ステップは、メモリの少なくとも1つの物理バケット位置へのエントリの集まりの後続の順次書込みに先立つ、ステップと
を含む。
該コンピュータ可読媒体は、ユニフォームアクセスインデックス付け処理によってノンユニフォームアクセスメモリに格納されたインデックスにアクセスする方法のための実行可能プログラム命令を含み、上記方法は、
インデックス付け処理によって生成された論理バケット識別子を、メモリの物理バケット位置にマップして、インデックス内の各レコードデータエントリにアクセスするために、変換テーブルを維持するステップと、
インデックスに書き込まれる複数のレコードデータエントリをキャッシュ内に集めるステップであって、該ステップは、メモリの少なくとも1つの物理バケット位置へのエントリの集まりの後続の順次書込みに先立つ、ステップと
を含む。
インデックスを格納するメモリは、ノンユニフォーム読出し及び書込みアクセス、並びに、サイズ、アラインメント及びタイミングについての不変性によって特徴付けられた物理デバイス層を含む。
インデックスを格納するメモリは、フラッシュ、相変化及びソリッドステートディスクのメモリデバイスのうちの1つ又は複数を含む。
インデックスを格納するメモリは、複数の消去ブロックを含むフラッシュメモリデバイスを含み、各消去ブロックは複数のページを含み、各ページは複数のバケットを含む。
インデックス内のレコードデータエントリごとに論理バケット識別子をメモリの物理バケット位置にマップする変換テーブルに、インデックス付け処理によって生成された論理バケット識別子を提供するステップと、
論理バケット識別子にマップされた物理バケット位置にアクセスするステップと、
インデックスに書き込まれるレコードデータエントリをキャッシュ内に集めるステップと、
続いて、レコードデータエントリの集まりを、キャッシュから、メモリの少なくとも1つの新しい物理バケット位置におけるインデックスに順次書き込むステップと、
変換テーブルを更新して、少なくとも1つの新しい物理バケット位置を論理バケット識別子に関連付けるステップと
を含む。
ノンユニフォームアクセスメモリであって、メモリの物理バケット位置においてレコードデータエントリを含むインデックスが格納される、ノンユニフォームアクセスメモリと、
ユニフォームアクセスインデックス付け処理によって生成された論理バケット識別子を、レコードデータエントリの各々のためのメモリの物理バケット位置にマップするための、変換テーブルと、
インデックスに書き込まれる集められたレコードデータエントリのためのキャッシュと
、
メモリの物理バケット位置にアクセスする手段であって、該物理バケット位置は、インデックス付け処理によって変換テーブルに供給された論理バケット識別子にマップされた、手段と、
レコードデータエントリの集まりを、キャッシュから、メモリの少なくとも1つの物理バケット位置のインデックスに順次書き込む手段と、
変換テーブルを更新して、少なくとも1つの物理バケット位置を論理バケット識別子に関連付ける手段と
を含む。
理解される。
[011]本発明の1つ又は複数の実施形態によれば、特化されたメモリ技術及びアルゴリ
ズムが使用されて、多数のレコード及びトランザクション要件を同時に有するインデックスが構築される。一実施形態は、置き換え(displacement)ハッシングインデックス付けアルゴリズム、例えばカッコウハッシングを利用する。本発明は、フラッシュ、相変化及びソリッドステートディスク(SSD)メモリデバイス等、ノンユニフォームアクセスメモリ技術の使用を可能とする。
的であるIO(入力/出力)パターンに遭遇しながら、インデックス付けアルゴリズムがアルゴリズムにとって自然(効率的)である方法で行うことを保証するために、新しいデータ構造及び方法が提供される。
イス上の物理バケットにマップする、あるデータ構造である間接指定テーブルが作成される。このマッピングは、ノンユニフォームアクセスメモリデバイスへの書込み性能が強化されるようにするものである。
、メモリデバイスへ順次書き出すために、別のデータ構造である連想キャッシュが使用される。
キャッシュをポピュレートするために、方法が使用される。追加のバケットは、デマンド読出し中に又はスキャベンジング処理によって、メモリデバイスからキャッシュへ読み出されてもよい。
次書込みを可能にする。
ートを達成する基本機能を有するが、フラッシュアクセス特性はノンユニフォームである。このノンユニフォーム性はかなり十分なので、通常のインデックス付けアルゴリズムは、フラッシュメモリデバイスと共に、たとえ機能するとしても、うまく機能しない。
千ビットもの大きいブロックサイズで、即ち、バイトレベルのランダムアクセスではなく、読出し、書込み及び消去が行われなければならない、電気的消去可能プログラマブル読出し専用メモリ(EEPROM)である。物理的には、フラッシュは、フローティングゲートトランジスタからなるメモリセルのアレイに情報を格納する、不揮発性メモリ形式である。2つのタイプのフラッシュメモリデバイス、NANDフラッシュ及びNORフラッシュがある。NANDフラッシュは、NORフラッシュより高密度及び大容量をより低コストで提供し、より高速な消去、順次書込み及び順次読出し速度を有する。本願において、且つ本発明において使用されるとき、「フラッシュ」メモリは、NANDフラッシュメモリを包含するものであり、NORメモリを包含しないものである。NANDは、各セルが1ビットの情報のみを格納するシングルレベルセル(SLC)デバイス、及び、1つのセルにつき2ビット以上を格納することができる、より新しいマルチレベルセル(MLC)デバイスを共に含む。NANDフラッシュは高速なアクセス時間を提供するが、PC内でメインメモリとして使用された揮発性DRAMメモリほど高速ではない。フラッシュメモリデバイスは、フラッシュファイルシステムを含んでも含まなくてもよい。フラッシュファイルシステムは、典型的には、ウェアレベリング及び誤り訂正を行うために内蔵コン
トローラを有していない、内蔵フラッシュメモリと共に使用される。
コンピュータに取り付けられたメモリとは異なり、フラッシュチップ上のメモリは、あるサイズで、且つ、ある境界上でアクセスされなければならない。更に、メモリのセクションに書き込まれた後、それらのメモリ位置が再び書込み可能となる前に、消去オペレーションが行われなければならない。また、位置は徐々になくなるので、全ての位置が同様の数の書込みを得ることを保証することは、使用を更に複雑にする。読出し時間、書込み時間及び消去時間は、大幅に(数マイクロ秒から数ミリ秒まで)変わる可能性がある。よって、タイミング、ウェアレベリング及びアラインメント制約は、フラッシュの実際的な使用を困難にするのがせいぜいである。
もよい。各ダイは、大部分では、独立してアクセスされうる。
512KBのサイズである。データがクリアされる必要があるとき、消去ブロック境界上でクリアされなければならない。
可能であることである。更に、書込みのためのセットアップ時間は長く、読出しのセットアップ時間のおよそ10倍である。
じて、1KBから4KBまでに及ぶ場合がある。各ページに関連付けられるものは、誤り訂正符号(ECC)チェックサムのために使用されうる、数バイトである。
ロック(ページを含む)が消去されるまで、再度書き込まれない場合がある。消去ブロックは、数十から100を超えるページを含む場合がある。
又は、部分ページプログラミングである。技術に応じて、ページは、消去が必要とされる前に最大4回、部分的に書き込まれる場合がある。
ョンの間に一度のみ書き込まれうるので、後続の書込みは、典型的には異なるフラッシュブロック内に位置する異なるページへの書込みを必要とする。ブロック消去の問題点は、フラッシュファイルシステムの機能である、書込み可能フラッシュブロックのプールを作成することによって、対処される。
かかるオペレーションである。(トラフィック的に)多用されるデバイスでは、消去ブロックが生成されうる速度(即ち、どのくらい速くフリー消去ブロックが使用可能にされうるか)は、フラッシュ設計における制限要因であることが多い。
SDにおけるファームウェアは、フラッシュ変換層(FTL)と呼ばれる層において、前述のアクセスの問題点に対処する。そうすることにおいて、しかし、ファームウェアは、どのようにSSDが使用されるか(例えば、大部分は読出し、大部分は書込み、読出し及
び書込みのサイズ及びアラインメント)について仮定を行い、これらの仮定の結果として、SSDの性能特性は、インデックス付けアルゴリズムにとって準最適であることが多い。
、ユニフォームメモリアクセスモデルに基づいており、即ち、全てのメモリが、読出しでも書込みでも時間的に等しくアクセス可能であり、アクセスサイズ又はアラインメントにおけるいかなる一次制約もない。
び修正等のオペレーションは典型的には、より多くの多様な時間の量を必要とし、ブロック、典型的には小さいブロック(4KBくらい)の読出し及び書込みは、より短い時間を必要とする。ブロックはランダムであるように見え、即ち、任意のブロックが読み出されてよく、任意の他のブロックが書き込まれてよい。幾つかのアルゴリズムでは、ランダム読出し−修正−書込みIOプロファイルがあり、即ち、ランダムブロックが読み出され、次いで、わずかに修正されたデータで同じ位置に書き戻される。
、フラッシュが提供するように意図されるものではない。フラッシュは、ランダム読出しをうまく扱うことができるが、読出し−修正−書込みがそうであるように、ランダム書込みは困難である。この理由は、すでに書き込まれたものを上書きすることはできず、まずそれを消去しなければならないからである。この状況を更に複雑にすることには、消去は時間を要し、大きい境界(典型的には64KB)上で起こらなければならない。
ころへ移動される必要がある。アルゴリズムがフラッシュデバイス中でランダムな4KBブロックを書き込む場合、単純な実装は、その間ずっとブロックが消去され続ける結果となる。消去時間は遅いので、性能がかなり損なわれることになる。
ンデックス付けアルゴリズムが期待する論理ランダムアクセスをなお保ちながら、変換又は間接指定テーブルが作成される。このテーブルは、インデックス付けアルゴリズムによって必要とされるような(レコードの)論理バケットを、フラッシュデバイスの物理バケット(例えば、ページ)にマップする。
ページ)を読み込むとき、バケットコンテンツを修正(挿入、更新又は削除オペレーション)するために、バケットはキャッシュに移動される。フラッシュデバイス上の対応するバケットにはこのとき、有効ではない(フリー)としてマークが付けられうる。SSDの場合、これはTRIMコマンドの形式を取りうる。
が提供される。いかなる所与の時間でも、消去ブロックは、有効及び無効データの組み合わせを有する場合がある。消去ブロックを解放するため、全ての有効データは、そのブロックから離れるように移動されなければならない。これを達成するために使用されうる、2つの機構がある。1つは、インデックス付けアルゴリズムによって生成されたランダム読出しを使用して、(インデックス付けアルゴリズムによって必要とされるよりも)より多くを読出し、消去ブロックを解放するようにすることである。インデックス付けアルゴリズムはランダム読出しを生成する傾向があるので、経時的に、全ての消去ブロックは最終的に読み出され、空のページのために集積される。例えば、読出しを含む消去ブロック
が、幾つかのフリーページ及び幾つかの有効ページを有する場合、アルゴリズムは、消去ブロック全体を読み込み、且つ、全ての有効ページをキャッシュに入れることを選択してもよい。これは、後続の消去及び次いで書込みのために、その消去ブロックを解放する効果を有する。
ブロックを読み出し、別の消去ブロックと合体するために有効ページをキャッシュに入れるために、分離したスキャベンジング処理(例えば、スレッド)が使用されうる。
シュエントリのセットが集められ、部分ページの隣接するセット(部分ページ書込みがフラッシュデバイスによって可能にされる場合)、複数のページ及び1つ又は複数の消去ブロックのうちの1以上へと、順次書き込まれるようになる。キャッシュエントリがフラッシュデバイスに書き込まれるとき、間接指定テーブルは更新されるので、インデックス付けアルゴリズムはなお、エントリが固定された論理アドレスにあるものと見なす。
[038]本発明の様々な実施形態がここで、添付の図1〜6を利用して説明され、本発明
に従って行われた様々なインデックス付けオペレーションが例示される。図7〜8は、ストレージ媒体(例えば、フラッシュメモリ)の効率的利用のためにフリー消去ブロックを生成する、2つの方法を例示する。これらの実施形態は例示的なものであり、限定するものではない。
23を利用する幾つかのインデックス付けオペレーションの概観である。図1の上部に、3つのインデックスオペレーション12〜14が、ルックアップ関数15及び変換関数16への代替入力として示される。第1のインデックスオペレーション12は、キーのための(レコードエントリ)から衛星データを返すための「キーをルックアップする」である。第2のインデックスオペレーション13は、キーのためのレコードエントリを更新(修正)するための「キーのための衛星データを更新する」である。第3のインデックスオペレーション14は、新しいレコードエントリを挿入するための「新しいキーを挿入する」である。もう1つのインデックスオペレーションである削除は、図1では図示されないが、図5に関して後述される。
い、キーのある関数f(キー)が使用されて、インデックスが生成され、ここでは、ハッシュテーブルルックアップをサポート(例えば、加速)する論理バケット識別子である。バケット識別子(インデックス)は、変換関数16への入力であり、論理バケット識別子のある関数f(インデックス)は、フラッシュメモリ内の物理バケット位置を生成する。この変換関数はバケット変換テーブル17によって実装され、バケット変換テーブル17は、対象フラッシュメモリ位置(フラッシュ内の物理バケット位置)への(インデックス付けアルゴリズムによって提供されるような)論理バケット識別子のマップである。フラッシュメモリ26に格納されたディクショナリ(インデックス)は、ルックアップキー(例えば、オブジェクト名)を衛星データ(例えば、ディスク上に格納されたオブジェクトへの位置ポインタ)にマップするレコードを備えてもよい。
ックアップ、更新又は挿入)に応じて、図1の下半分に示されたステップのうち1つ又は複数が行われる。
ントリは、キャッシュルックアサイドによる、フラッシュメモリ内の対象バケット22からの読出し30である(例えば、対象バケットがキャッシュに格納される場合、フラッシュメモリ26からではなく、キャッシュ23から読み出されてもよい)。
元のバケットエントリ)が、フラッシュメモリ(又はキャッシュ)の消去ブロック21a内の対象バケット22から読み出され30、バケットが更新され、キャッシュへ移動され32、且つ、後続の書込み24では、複数のキャッシュバケットエントリが、フラッシュメモリ内の部分ページの隣接するセット、複数のページ、及び、消去ブロック(例えば、新しい消去ブロック21b)のうちの1以上に順次読み出される。この処理は、フラッシュ内の全ての移動されたバケットのステータスを、有効ではないデータ(例えば、フリー、又は、トリムオペレーションのために使用可能)に更新する33。
修正されたバケットエントリが、フラッシュメモリ内の新しい位置への後続の順次書込み24のために再度、キャッシュに移動される34。
の集まりの順次書込み24を行うことに先立って、複数のバケットエントリを集めるためのキャッシュ23を概略的に示す。一実施形態では、スキャベンジングオペレーション25が、フリー消去ブロックを作成するために使用され、この処理は、スキャベンジング処理中に(消去ブロックからの)任意の有効バケットをキャッシュに格納すること、及び、フラッシュ消去ブロックをフリーとして再割振りすることを含む。
クス付けオペレーションが、図3〜6のフロー図に関してより具体的に説明される。
[047]図2は、本発明において有用なデータ構造の様々な実施形態を例示する。そのよ
うなデータ構造は例示的なものであり、限定するものではない。
インデックスを、物理フラッシュバケットアドレスに変換するための、バケット変換テーブル(BTT)300の一実施形態を例示する。BTTテーブルエントリは、3つのフィールド、即ち、有効301、フラッシュ物理バケットアドレス302、及び、拡張バケット状態303を有して図示される。バケットアドレス粒度は、フラッシュデバイスの最小書込みサイズであり、即ち、(例えば、SLC NANDでの)部分ページ書込み、又は、(例えば、MLC NANDでの)ページ書込みである。BTTは、論理から物理バケットエントリへの1:1マッピングである。このテーブルは、より高いランダム性能(インデックス付けアルゴリズムによるランダム読出し及びランダム書込み)のために、フラッシュバケット割当ての再編成を可能とする。アルゴリズムのアクセラレーションを可能とするために、追加の状態情報がBTTへ、第3のフィールド内に追加されてもよい。
ーブルは、トリミングのためのブロックへのバケットのスキャベンジングを管理するために、フラッシュ内のどの物理バケットが有効であるかを追跡する。一例として、有効とラベル付けされたフィールド306は、小型のビット配列(1ビット/バケット)であってもよい。BVTのサイズは、フラッシュバケットエントリの総数であり、そのサブセットのみがBTTによって使用中である。
を、逆BTTポインタ313(バケット変換テーブル17へのセルフインデックス)と共に有する、フラッシュバケット309の一実施形態を例示する。よって、各バケットは、1つ又は複数のレコードのセット、及び、フラッシュバケット(例えば、ページ)が挿入、移動又は削除されるとき、BTTを更新するための逆ポインタを含む。バケットの各要素(レコード又はポインタ)には、データ構造の個々の信頼性を向上させ、且つ、ストレージデバイスの有用寿命を著しく延ばすために、追加のECCビット等、冗長コンテンツが追加されてもよい。例えば、任意選択のシーケンス番号フィールドが、停電発生中にデータ一貫性チェックを行うためにフラッシュバケット309に追加されてもよく、他の最適化フラグも同様に提供されてもよい。
ベースで追加の誤り回復情報を実装する(任意選択の)機会を提供する。この任意選択の機能は、訂正される可能性があるので下にあるストレージ技術の実効動作寿命を延ばす可能性のある、ビット誤り及び障害の数を増すことによって、ソリューションの全体の信頼性を向上させるようになる。
ラッシュデバイス315の一例を示す。各消去ブロックは、複数のページ317(1からN)を含む。この例では、各ページは4KBであり、各ページは複数のバケット318(1からB)を含み、各バケットは1KBである。この例では、デバイスは部分ページ書込みをサポートする。
バケットは1ページとなる。部分ページ書込みが可能にされる場合、1ページにつき4つのバケットをサポートする4部分ページSLC NANDデバイス等、1フラッシュページにつき1つ又は複数のバケットが提供されてもよい。
ッシュデバイスにつき複数の消去ブロックがあり、各ブロックは個々に消去される。
NDフラッシュデバイスは、消去オペレーション間に所与のブロック内で1ページ(又は部分ページ)につき1回、順次書き込まれ、複数のブロックが、同時に書込み及び読出しを行うために使用可能である。
[056]図3は、キーの存在を検証し、関連付けられた衛星データを返すためのルックア
ップオペレーション処理の一実施形態を例示する。ステップ1 41で、ルックアップキーがルックアップ関数に入力される。ステップ2 42で、ルックアップ関数f(キー)は、ハッシュテーブルルックアップをサポート(例えば、加速)する論理バケット識別子を生成する。論理バケット識別子は変換関数に入力され、変換関数は、ステップ3 43で、バケット変換テーブル(BTT)17を介してフラッシュメモリ(物理バケット)位置にマップされる。ステップ4 44で、バケットがキャッシュに格納されるまで、フラッシュメモリ内の対象バケットがフラッシュメモリから読み出され45a、バケットがキャッシュに格納された場合、キャッシュ23から読出し可能である45b。ステップ6 46で、キーのための衛星(レコード)データがインデックス付けアルゴリズムに返される。
キーをルックアップ関数に入力する。ステップ2 72で、ルックアップ関数f(キー)は、インデックス、ここでは論理バケット識別子を生成する。ステップ3 73で、バケット識別子が変換関数に入力され、変換関数は、バケット変換テーブル(BTT)17を利用して、バケット識別子を、挿入が起こるべきフラッシュメモリ物理バケット位置へマップする。ステップ4 74で、挿入処理は、対象バケット位置を変換関数から受信する。ステップ5 75で、挿入処理は、対象バケット22をフラッシュメモリの消去ブロック21aから75a、或いはキャッシュから75b、読み出す。ステップ6 76で、挿入処理は、レコードエントリを対象バケットに挿入し、修正済みバケットをキャッシュに書き込む。ステップ7 77で、挿入処理によって、複数のバケットエントリ(修正済み対象バケットを含む)がキャッシュ73から読み出される。ステップ8 78で、挿入処理は、キャッシュから読み出された修正済み対象バケット及び他のバケットを、フラッシュ26内の新しい位置(消去ブロック21b内のページ)へ書き込む。ステップ9 79で、挿入処理は、キャッシュからフラッシュへ移動された全てのバケットのための新しい位置により、バケット変換テーブル17を更新し79a、また、移動された全てのバケットについて、BVT内のバケット有効エントリをも更新する79b。ステップ10 80で、挿入処理は、移動されたキャッシュエントリに、読出し専用(使用可能)とマークを付ける。ステップ11 81で、挿入処理は、元のフラッシュバケット(このとき、新しい消去ブロックに移動済み)に、フリーとしてマークを付ける。
では、キーがルックアップ関数に提供される。ステップ2 92で、ルックアップ関数f(キー)は、インデックス、ここでは論理バケット識別子を生成する。ステップ3 93で、バケット識別子が変換関数に提供され、変換関数は、バケット変換テーブル17を利用して、バケット識別子を物理フラッシュメモリバケット位置へマップする。ステップ4
94で、削除処理は、フラッシュメモリ位置を受信する。ステップ5 95で、対象バケットがフラッシュから読み出される。ステップ6 96で、処理は、バケット内の元のレコードエントリを削除し、修正済みバケットを(削除済みエントリと共に)キャッシュ23に書き込む。ステップ7 97で、バケットのグループ(集まり)がキャッシュから読み出される。ステップ8 98で、キャッシュ23から読み出された更新済み対象バケット及び他のバケットが、フラッシュ内のフリーページの隣接するセットに順次書き込まれる。ステップ9 99で、削除処理は、全ての移動されたバケットのためのフラッシュ内の新しい位置により、バケット変換テーブルを更新し99a、BVT内のそれらのバケット有効ステータスを更新する99b。ステップ10 100で、削除処理は、キャッシュエントリに、読出し専用としてマークを付ける。ステップ11 101で、削除処理は、このとき、フラッシュ内の新しい位置に移動された元のフラッシュバケットに、フリーとしてマークを付ける。
めの更新オペレーション処理の一実施形態を例示する。最初のステップ51で、キーが入力としてルックアップ関数に提供される。ステップ2 52で、ルックアップ関数f(キー)は、インデックス、ここでは論理バケット識別子を生成する。バケット識別子は変換関数に入力される。ステップ3 53で、変換関数は、バケット変換テーブル17を利用して、バケット識別子を、更新が起こるべきフラッシュメモリ内の物理バケットへマップする。ステップ5 55で、対象バケットはフラッシュから55a、或いはキャッシュから55b、読み出される。ステップ6 56で、エントリを更新した後、更新済みバケットがキャッシュ23に書き込まれる。ステップ7 57で、バケットのグループがキャッシュ23から読み出され、ステップ8 58で、キャッシュからフラッシュメモリ26内の新しい位置へ順次書き込まれる。ステップ9 59で、更新処理は、全ての移動されたバケットのための新しい位置により、バケット変換テーブル17を更新し59a、BVT
内のそれらの有効ステータスを更新する59b。ステップ10 60で、更新処理は、移動されたエントリに、キャッシュ23内で読出し専用(及び、よって上書きされるために使用可能)としてマークを付ける。最後に、ステップ11 61で、更新処理は、このとき新しい位置に移動された元のフラッシュバケットに、フリー(使用可能)としてマークを付ける。
ルックアップ、挿入又は修正等、アップストリームインデックス付けオペレーションによって生成された)デマンド読出しは、(対象バケットと)同じ消去ブロック内の追加のバケットを読み出す。図7Aで、この処理は、更新要求と共に例示される。ステップ1 111で、キーがルックアップ関数に提供される。ステップ2 112で、ルックアップ関数f(キー)は、インデックス、ここでは論理バケット識別子を生成する。ステップ3 113で、バケット識別子が、フラッシュ内の物理対象バケット位置にマップされる。ステップ4 114で、更新及びスキャベンジ処理は、対象フラッシュメモリ位置を受信する。ステップ5 115で、処理は、対象バケットと同じ消去ブロック内の全ての有効バケットを識別する。ステップ6 116で、更新処理は、対象バケット及び全ての識別された有効バケットを、対象バケットを含むフラッシュブロックから読み出す。ステップ7
117で、処理は、対象バケット内のレコードエントリを更新し、フラッシュブロックからの全ての有効バケットをキャッシュ23に書き込む。ステップ8 118で、更新処理は、キャッシュからブロックのグループを読み出す。ステップ9 119で、更新処理は、キャッシュ23から読み出された更新済み対象バケット及び他のバケットを、フラッシュ26に書き込む。ステップ10 120で、更新処理は、移動された(キャッシュからフラッシュ内の新しい消去ブロック21bに書き込まれた)全てのバケットのための新しい位置により、バケット変換テーブル17を更新し120a、BVT内のバケットエントリを更新する120b。ステップ11 121で、更新処理は、このとき古いキャッシュエントリに、読出し専用としてマークを付ける。ステップ12 122で、更新処理は、元のフラッシュブロック(対象ブロック内の全てのバケット)に、フリーとしてマークを付ける。
し処理の特定の実施形態を例示する。
、論理バケット126を生成する。インデックス付けアルゴリズムによって見なされる論理バケットサイズは、インデックス付けアルゴリズム及びフラッシュメモリが互換性を有するように、フラッシュ消去ブロックサイズに関連付けられる。これらのバケットは、インデックス読出し及び更新の結果として、ランダムに読み出されるようになる。
フラッシュデバイスバケット位置に変換する。この間接指定テーブルは、インデックス付けアルゴリズムが、読出し、書込み及び更新のために、ランダムに動作し、且つ、フラッシュデバイスレベルで行われる大きい順次書込みをなお有することを可能とする。好ましくは、間接指定テーブルは永続メモリに格納されるが、揮発性メモリに格納される場合、必要に応じて再構築されうる。
全連想バケットキャッシュ128に提供される。この実施形態では、空の消去ブロックfifo129のコンテンツがハイウォーターマークQ未満である場合、消去ブロック全体(対象4KBバケットを含む)が読み出される。
が16個の4KB論理バケットを保持するものである。物理デバイスは、負荷、例えば、90%のために構成され、バケットの90%が使用中であることを意味する。キャッシング及び犠牲化(victimization)(追い出し)は、残りのバケットの10%の大部分がフリー消去ブロックに集中させられるように、フラッシュメモリ内で論理バケットをパックする(集中させる)ために、使用される。
ットを取り、それら16個のバケットをキャッシュからフリー消去ブロック130に書き出す。消去ブロックはランダム読出しオペレーションによってランダムに触れられるので、読出しオペレーションは、フリー消去ブロックを生成するために使用されうる。論理バケット識別子を生成するための暗号ハッシュ関数の使用は、読出しオペレーションのランダム性を増大させ、よって、フリー消去ブロックのランダム読出し生成を改善するようになる。
処理を例示する。このスキャベンジング処理は、何れかのインデックス付けオペレーションの一部ではない。むしろ、より下位レベルのデバイス管理層の一部として実装される。この処理では、フラッシュ消去ブロック内の物理バケットのグループ(一部又は全部)がフラッシュから直接読み出され、バケット有効テーブル27が、消去ブロック内のどのバケットが有効であるかを決定するために使用される。
は、完全な消去ブロック21aを読み出す。ステップ2 222で、スキャベンジング処理は、バケット有効テーブル27を使用して、有効であるそれらの読出しの全てのバケットを識別する。ステップ3 224で、各有効バケットについて、論理バケット識別子がバケットから抽出される。ステップ4 226で、有効バケットがキャッシュ23に格納され、各々はその論理バケット識別子によってインデックス付けされる。
を、94及び97を含めて読み出す一例を示す。ステップ2で、処理は、95及び96でのバケットが有効であると決定する。有効バケットは、「1」によって指定されたバケット有効テーブルにおいて示され、非有効バケットは「0」による。ステップ3で、バケット95及び96のための論理バケット識別子、即ち、タグ23及び49がそれぞれバケットから抽出される。ステップ4で、この2つのタグ並びにそれらの各バケット95及び96は、それらの各タグ23、49をインデックスとして使用して、キャッシュに挿入される。
[070]本発明のもう1つのより具体的な実施例が、ここで図9〜16を参照して説明さ
れる。
なるビューである、インデックス付けアルゴリズム203によって望まれたIO使用プロファイルビューを、フラッシュアダプテーション層207が適合させる、本発明の一実装を例示するための6層のビュー又はスタック200を示す。最高レベル201で、レコードのディクショナリ(インデックス)が提供され、それに対して、あるインデックス付けオペレーション204(レコードをルックアップ、削除、挿入且つ修正する)が必要とされる。インデックス付けアルゴリズム層203は、1つ又は複数のインデックス付けアルゴリズムによりディクショナリを実装し、例えば、カッコウ置き換えハッシングアルゴリ
ズムが一例である。インデックス付けアルゴリズムは、インデックスへのキーがどのようにインデックス永続層205によって格納されるかのビューを有する。インデックス付けビューは、論理ビューであり、論理アドレス位置を特定する。このビューは更に、サイズ、アラインメント及びタイミングについて、インデックスへのユニフォームアクセスが存在するようになること、及び、インデックスが可変(安定)ストレージ上に格納されることを仮定する。
を読み出し、それらの物理バケットに書き込むための論理バケットオペレーション206を提示するようになる。これらの論理バケットオペレーション206は、フラッシュアダプテーション層207に提示され、フラッシュアダプテーション層207は、前述のように、(インデックス付け処理の)論理バケットをフラッシュストレージデバイス上の物理バケット位置に変換する。フラッシュアダプテーション層は、よって、上記のインデックス付けアルゴリズムによって望まれたビュー及びIO使用プロファイルを、下記の物理ストレージデバイス(フラッシュメモリ211)によって望まれた大変異なるビューに適合させる。ここで、物理バケットオペレーション208は、ランダム読出し及び集約(ブロック順次)書込みを含み、これらのランダム読出し及び集約(ブロック順次)書込みは、バケットアクセスのノンユニフォームモデルを構成する。この実施例の物理バケットオペレーションは、トリムコマンドを更に含んでもよい。
節する、デバイス管理層209によって実装される。これらの物理デバイスオペレーション210はここでは、ランダム読出し、大きい順次書込み及びトリムコマンドを含む。
イズ、アラインメント及びタイミングについての不変性によって特徴付けられる。そのような物理デバイスの例は、生のフラッシュ、相変化、SSD、及びデバイス上に存在するフラッシュファイルシステムを有するフラッシュのうちの1以上を含む。
とする。
プリント(キー)を格納するための最初の20バイトのフィールド141を含め、合計で32バイトである。フィンガープリントは、好ましくはデータコンテンツの暗号ハッシュダイジェスト、例えば、SHA−1ハッシュアルゴリズムである。例示を容易にするため、フィンガープリントを、「AB92345E203...」等、16進数で入力するのではなく、個々のフィンガープリントは、図11〜14において、P、Q、R、S、T等、単一の大文字によって指定される。やはり例示のために簡潔にするため、これらの大文字はまた、レコード全体の代理としての役割も果たすようになる。レコードのフィールド
はまた、2バイトの参照カウントフィールド142、5バイトの物理ブロックアドレスフィールド143、1バイトのフラグフィールド144、及び、4バイトの雑フィールド145をも含む。PBAフィールド143は、指定されたフィンガープリント141のために、ディスク上で格納されたデータの物理ブロックアドレスへのポインタを含む。参照カウントは、ディスク上で格納されたデータへの参照の数を追跡する。
141は、前述(図1)のルックアップ関数f(キー)への入力キーとして使用され、この実施例では、関数f(キー)は、4つのハッシュ関数H0、H1、H2及びH3のセットを備える。一般に、2つ以上のハッシュ関数の任意のセットを使用することができる。ハッシュ関数Hxは、フィンガープリントを、0及びN−1を含めて範囲[0,N−1]へマップし、但し、Nはハッシュテーブルのサイズである。この実施例では、フィンガープリント自体がハッシュであることを考えれば、BitFieldを抽出して、以下の4つのハッシュ値のファミリを生成することができる。
H1(x)=x<032:63>mod N
H2(x)=x<064:95>mod N
H3(x)=x<096:127>mod N
[078]抽出されたBitField幅は、log2(N)以上である。ばらばらのビッ
トの任意の組み合わせを使用することができ、log2(N)制約を受ける。図10に例示されるように、最初のフィールド141内のフィンガープリントのみがハッシュされて、キーが形成される。レコード140の残りのコンテンツ(フィールド142〜145)は、値又はペイロードを備える。
ス付けアルゴリズムの一例を例示する。例示を容易にするため、2つの関数のみが使用される。図11Aは、フィンガープリントPがそれぞれ関数H0(x)及びH1(x)からハッシュ値2及び5を生成する一方、フィンガープリントQがこれらの同じ関数からハッシュ値1及び3を生成する、2×3グリッドを示す。カッコウハッシングアルゴリズムは、0〜6のラベルが付けられた7個のスロット(図11B)のうち1つにP及びQを入れるための、2つの代替ハッシュ値の中から選択するようになる。Pは、2つの位置のうち1つ、2又は5に入る可能性があり、Qは、2つの位置のうち1つ、1又は3に入る可能性がある。図11Cに示すように、このアルゴリズムは、Qを最下位の空スロット1に、Pをスロット2に入れる。この実施例では、レコードコンテナは、1つのレコードを保持するスロットとして見なされるが、本発明はそのように限定されず、インデックス付けアルゴリズムはまた、複数のレコードを保持するバケットをもコンテナと見なすことを理解されたい。ここでは、説明を簡素化するため、単一のレコードスロットが使用される。
数から1及び2のハッシュ値を生成する(図11Dのテーブルを参照)。ハッシングアルゴリズムは、Rを左の位置、即ちスロット1に入れ、現在のエントリQを変位させるようになる(図11E)。Qはこのとき、H1(Q)によって指定された他の任意選択の位置、即ち位置3に移動されるようになる。このアルゴリズムは、各レコードが空のスロットに入るまで、レコードを変位させ続けるようになる。
ス付けアルゴリズムは、以下の読出し及び書込み要求を生成する。
2を読み出す(Pを得る)
1を書き込む(Rを書き込む)
3を読み出す(妥当性チェック)
3を書き込む(Q)
[082]最初の2つの読出しは、Rがインデックス内にすでに存在しているのではないこ
とを検証するために使用される。妥当性チェック(3を読み出す)は、スロット番号3が空であるかどうかを決定し、そうである場合、Qがスロット3に書込み可能となり、どのエントリもスロット3に再書込みされなかったとき、このアルゴリズムは終了される。スロット3が空でなかった場合、スロット3内の現在のエントリが別のスロットに移動されることが必要となる。我々がビットマップを有する場合、スロット3のコンテンツは既知であり、そうでない場合、我々は、そのステータスを決定するために、スロット3内のエントリを読み出す必要がある。各エントリは、そのエントリが有効であるかどうかを示す有効ビットを含む。有効とは、それが使用中である(且つ、その位置を現在占有しているものが変位されなければならない)ことを意味する。有効ではないとは、その位置が空であることを意味し、処理中のレコードがそこに書込み可能である。有効ビットのコンテンツもまた、あるメモリを犠牲にして、別のビットマップに格納されうる。
トリに渡って書き込み、以前のコンテンツを変位させ続けるという点において、再帰的である。実際には、この処理はめったに1回の変位を越えることはない。
を共に有する。インデックス付けアルゴリズムは、1つのレコードを1つのコンテナ(スロット)に入れることとして(図11で)上述されるが、インデックス付けアルゴリズムによって、レコードがバケット、即ち、複数のレコードを含むバケットに集約されてもよいことは理解される。よって、上記の実施例は非限定的であり、概してレコードオペレーションを例示するものである。
て効率的ではないので、個々のレコードはバケットに集約される。図12は、各々が2つ以上のレコードを含む、4つのそのようなバケットを例示し、即ち、レコード位置0及び1を有するバケットB0、レコード位置2及び3を有するB1、レコード位置4及び5を有するB2、並びに、レコード位置6及びxを有するB3である。バケットサイズはフラッシュデバイスによって決定された最小書込みサイズ、即ち、完全ページ書込み又は部分ページ書込みの関数である(且つ、好ましくはそれに等しい)。典型的なバケットサイズは、4KBであってもよい。レコードの具体的な順序付けは、バケット内で必要とされない−−ルックアップオペレーション中にバケット全体が有効レコードについて検索されるので、レコードはバケット内のいかなる点でも挿入可能である。カッコウハッシングアルゴリズムによる置き換え時、バケット内のエントリはランダムに置き換えされうる。インデックス付けアルゴリズムは、よって、論理バケットを、ランダムな位置のように見えるものに、1つずつ書き込み、最終的にフラッシュアダプテーション層によって、フラッシュデバイスへのより大きい、物理的に隣接する(順次)書込みに集約される。
は、下にあるデバイスの最小書込みサイズ、ここでは4KBのページに基づく。4KBのバケットは、バケットエントリ内のレコードの数を指定する、4バイトの最初のフィールド161を含む。4バイトのタグフィールド162は、論理バケット識別子を指定する。この識別子(タグ)は論理アドレスであり、物理的なものではない。変換テーブルは、アルゴリズムバケットアドレス(ABA)をフラッシュバケットアドレスFBAにマップする。キャッシュは、(CPUの用語で)仮想キャッシュとして動作し、各キャッシュライ
ン(エントリ)は、タグ、この場合はABAによって識別される。アルゴリズムがレコードを要求するとき、キャッシュを通過中にそれが知ることは、要求されたABAがキャッシュされることのみであり、ABAがマップされるところ(FBA)は、キャッシュの下端(例えば、図2Cにおける、BTTへの逆ポインタ313を参照)である。バケットは、複数のレコードR0、R1、R2...を保持するためのフィールド163を含み、各レコードは、32バイトのサイズである。この例では、4KBのバケットは、1バケットにつき(4096−4−4)/32個のレコード、即ち、約127個のレコードを保持するようになる。
ズを例示する、フラッシュメモリデバイス164の概略図である。物理フラッシュデバイスは、2GBのサイズであるチップ(パッケージ)165である。チップ上に、2つのダイ(シリコンウエハ)166a、167bがある。各ダイ上に、2^14個の消去ブロックがあってもよく、各消去ブロック167は典型的には64KBである。ページ168は、書込み可能である最小サイズ、ここでは4KBであり、スタック(図9を参照)内のより上位で使用されるような、同じく4KBである、バケット169のサイズを決定する。
管理層(図9の209)の一実施形態による、選ばれたコンポーネントを例示する。図15Aは、(上部に)複数のページ(バケット)170と、その後に続く、どのページが有効であるか(1は有効、0は有効でない)を示す、ページアロケーションマップ171を示す。この下は、将来トリムされることになるが、まだそうされていないページの、保留中トリムマップ172である。ページアロケーション及び保留中トリムマップは、前述のような本発明の様々な実施形態では、バケットが有効データを保持するかどうかを決定する(図1に例示されたバケット有効テーブル27を参照)するために使用されうる。
ブロック記述子テーブル175の一例を例示する。各消去ブロック記述子エントリ176は、消去済みの数177、部分書込みの数178、部分読出しの数179、完全読出しの数180、完全書込みの数181、及び、誤りの数182を含む、複数のフィールドを含む。この情報は、本発明の様々な実施形態において前述されたように、フリー消去ブロックの生成において使用されうる。
[090]本発明は、本願と同日に出願され、2009年6月26日出願の米国仮特許出願
第61/269,633号に対する優先権を主張する、A.J.Beaverson及び
P.Bowdenによる、同時係属の、所有者が同じであるFile System(ファイルシステム)という名称の米国特許出願第__________号に記載された、ファイルシステムのインデックスを実装するために使用されうる。両出願に対する優先権が本明細書で主張され、各々の完全な開示はそれらの全体として参照により本明細書に組み込まれる。
ウェア、ファームウェア、ソフトウェアにおいて、或いは、それらの組み合わせにおいて実装されうる。本発明の実施形態は、コンピュータプログラム製品として、即ち、情報キャリア内で、例えば、マシン可読ストレージデバイス内で、データ処理装置、例えば、プログラマブルプロセッサ、コンピュータ又は複数のコンピュータによる実行のため、或いはそれらのオペレーションを制御するために、有形に実施されたコンピュータプログラムとして実装されうる。コンピュータプログラムは、コンパイラ型又はインタープリタ型言語を含む任意の形式のプログラミング言語で書かれてよく、スタンドアロンのプログラム
又はモジュール、コンポーネント、サブルーチン若しくはコンピューティング環境で使用するために適した他のユニットを含む任意の形式で配置されうる。コンピュータプログラムは、1つのコンピュータ又は複数のコンピュータ上で実行されるように配置することができ、これら複数のコンピュータは、1つの場所にあるか又は複数の場所に渡って分散され通信ネットワークによって相互接続される。
がコンピュータプログラムを実行して、入力データに関して動作し、出力を生成することにより、本発明の機能を行うことによって、行われうる。方法ステップはまた、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)によって行われてもよく、本発明の装置は、専用論理回路、例えば、FPGA又はASICとして実装されうる。
マイクロプロセッサ、及び、任意の種類のデジタルコンピュータの任意の1つ又は複数のプロセッサを含む。一般に、プロセッサは、命令及びデータを、読出し専用メモリ若しくはランダムアクセスメモリ又は両方から受信するようになる。コンピュータの必須要素は、命令を実行するためのプロセッサ、並びに、命令及びデータを格納するための1つ又は複数のメモリデバイスである。一般に、コンピュータはまた、データを格納するための1つ又は複数の大容量ストレージデバイス、例えば、磁気、光磁気ディスク若しくは光ディスクをも含むか、或いは、それらからデータを受信し、若しくはそれらへデータを転送するように動作可能に結合されるか、或いはその両方となる。コンピュータプログラム命令及びデータを実施するために適した情報キャリアは、例として、例えば、EPROM、EEPROM及びフラッシュメモリデバイス等、半導体メモリデバイスと、例えば、内蔵ハードディスク又はリムーバブルディスク等、磁気ディスクと、光磁気ディスクと、CD ROM及びDVD−ROMディスクとを含む、全ての形式の不揮発性メモリを含む。プロセッサ及びメモリは、専用論理回路によって補われるか又は専用論理回路に組み込まれうる。
されないことを理解されたい。
インデックス付け処理によって生成された論理バケット識別子を、メモリの物理バケット位置にマップして、インデックス内の各レコードデータエントリにアクセスするために、変換テーブルを維持するステップと、
インデックスに書き込まれる複数のレコードデータエントリをキャッシュ内に集めるステップであって、該ステップは、メモリの少なくとも1つの物理バケット位置へのエントリの集まりの後続の順次書込みに先立つ、ステップと
を含む。
レコードデータエントリの集まりを、キャッシュからメモリのバケット位置へ、順次書込みとして書き込むステップと、
集まりのレコードデータエントリのためのバケット位置により、変換テーブルを更新するステップと
を含む。
1つ又は複数の順次レコードデータエントリを、メモリからキャッシュへ読み出すステップと、
1つ又は複数のエントリが読み出されたメモリ内の物理位置を、フリーとして指定するステップと
を含む。
ブロック内の任意の有効エントリをキャッシュに読み出すこと、及び、そのようなエントリが読み出されたメモリ内の物理位置を、フリーとして指定することによって、メモリ内の複数の順次物理バケット位置をフリーブロックとするステップを含む。
インデックス付け処理が、一律に配布され一意のインデックスキーに基づいて、インデックスへのランダムアクセス要求を生成する。
キーは、暗号ハッシュダイジェストを含む。
インデックス付け処理は、置き換えハッシングの処理を含む。
置き換え(displacement)ハッシングは、カッコウハッシング処理を含む。
メモリは、フラッシュ、相変化及びソリッドステートディスクのメモリデバイスのうちの1つ又は複数を含む。
メモリは、ランダム書込みアクセス時間、ランダム読出し−修正−書込みアクセス時間、順次書込み、アラインメント制約、消去時間、消去ブロック境界及び摩耗のうちの1つ又は複数によって制限される。
物理バケットのサイズは、メモリの最小書込みサイズを含む。
物理バケットのサイズは、ページ又は部分ページを含む。
メモリは、複数のページを含む消去ブロックを有する。
メモリ内のどのバケット位置が有効であるかを追跡するためのバケット有効テーブルを維持するステップを含む。
メモリ内のバケットは、1つ又は複数のレコードデータエントリのセット、及び、バケット変換テーブルへのセルフインデックスを含む。
バケット内のレコードデータエントリは順序付けされない。
メモリに順次書き込まれたレコードデータエントリを、キャッシュ内で読出し専用として指定するステップを含む。
バケット変換テーブルは、永続メモリに格納される。
消去ブロック内のフリーバケットの数を追跡し、フリーバケットのしきい値が満たされたとき、フリー消去ブロックを生成するための処理を実施するステップを含む。
インデックス付け処理は、レコードが挿入、削除、ルックアップ及び修正のうちの1以上をされる要求に基づいて、インデックス付けオペレーションを行う。
インデックス付け処理は、インデックスのレコードを格納する物理バケットを読み出し該物理バケットに書き込むための、論理バケットオペレーションを提示する。
物理バケットオペレーションは、ランダム読出し及び順次書込みを含む。
物理バケットオペレーションは、トリムコマンドを更に含む。
メモリは、ノンユニフォーム読出し及び書込みアクセス、並びに、サイズ、アラインメント及びタイミングについての不変性によって特徴付けられた物理デバイス層を含む。
レコードデータエントリは、キー、参照カウント及び物理ブロックアドレスのためのフィールドを含む。
キーは、データの暗号ハッシュダイジェストを含み、
物理ブロックアドレスフィールドは、ストレージデバイス上に格納されたデータの物理ブロックアドレスへのポインタを含む。
論理バケット位置は、複数のハッシュ関数によって生成される。
メモリは、複数の消去ブロックを含むフラッシュメモリデバイスを含み、各消去ブロックは複数のページを含み、各ページは複数のバケットを含む。
プロセッサによって実行されるとき、前述の方法のステップを行うプログラムコード手段を含むコンピュータプログラム製品が提供される。
インデックス付け処理によって生成された論理バケット識別子を、メモリの物理バケット位置にマップして、インデックス内の各レコードデータエントリにアクセスするために、変換テーブルを維持するステップと、
インデックスに書き込まれる複数のレコードデータエントリをキャッシュ内に集めるステップであって、該ステップは、メモリの少なくとも1つの物理バケット位置へのエントリの集まりの後続の順次書込みに先立つ、ステップと
を含む。
該コンピュータ可読媒体は、ユニフォームアクセスインデックス付け処理によってノンユニフォームアクセスメモリに格納されたインデックスにアクセスする方法のための実行可能プログラム命令を含み、上記方法は、
インデックス付け処理によって生成された論理バケット識別子を、メモリの物理バケット位置にマップして、インデックス内の各レコードデータエントリにアクセスするために、変換テーブルを維持するステップと、
インデックスに書き込まれる複数のレコードデータエントリをキャッシュ内に集めるステップであって、該ステップは、メモリの少なくとも1つの物理バケット位置へのエントリの集まりの後続の順次書込みに先立つ、ステップと
を含む。
インデックスを格納するメモリは、ノンユニフォーム読出し及び書込みアクセス、並びに、サイズ、アラインメント及びタイミングについての不変性によって特徴付けられた物理デバイス層を含む。
インデックスを格納するメモリは、フラッシュ、相変化及びソリッドステートディスクのメモリデバイスのうちの1つ又は複数を含む。
インデックスを格納するメモリは、複数の消去ブロックを含むフラッシュメモリデバイスを含み、各消去ブロックは複数のページを含み、各ページは複数のバケットを含む。
インデックス内のレコードデータエントリごとに論理バケット識別子をメモリの物理バケット位置にマップする変換テーブルに、インデックス付け処理によって生成された論理バケット識別子を提供するステップと、
論理バケット識別子にマップされた物理バケット位置にアクセスするステップと、
インデックスに書き込まれるレコードデータエントリをキャッシュ内に集めるステップと、
続いて、レコードデータエントリの集まりを、キャッシュから、メモリの少なくとも1つの新しい物理バケット位置におけるインデックスに順次書き込むステップと、
変換テーブルを更新して、少なくとも1つの新しい物理バケット位置を論理バケット識別子に関連付けるステップと
を含む。
ノンユニフォームアクセスメモリであって、メモリの物理バケット位置においてレコードデータエントリを含むインデックスが格納される、ノンユニフォームアクセスメモリと、
ユニフォームアクセスインデックス付け処理によって生成された論理バケット識別子を、レコードデータエントリの各々のためのメモリの物理バケット位置にマップするための、変換テーブルと、
インデックスに書き込まれる集められたレコードデータエントリのためのキャッシュと、
メモリの物理バケット位置にアクセスする手段であって、該物理バケット位置は、インデックス付け処理によって変換テーブルに供給された論理バケット識別子にマップされた、手段と、
レコードデータエントリの集まりを、キャッシュから、メモリの少なくとも1つの物理バケット位置のインデックスに順次書き込む手段と、
変換テーブルを更新して、少なくとも1つの物理バケット位置を論理バケット識別子に関連付ける手段と
を含む。
[011]本発明の1つ又は複数の実施形態によれば、特化されたメモリ技術及びアルゴリズムが使用されて、多数のレコード及びトランザクション要件を同時に有するインデックスが構築される。一実施形態は、置き換え(displacement)ハッシングインデックス付けアルゴリズム、例えばカッコウハッシングを利用する。本発明は、フラッシュ、相変化及びソリッドステートディスク(SSD)メモリデバイス等、ノンユニフォームアクセスメモリ技術の使用を可能とする。
[038]本発明の様々な実施形態がここで、添付の図1〜6を利用して説明され、本発明に従って行われた様々なインデックス付けオペレーションが例示される。図7〜8は、ストレージ媒体(例えば、フラッシュメモリ)の効率的利用のためにフリー消去ブロックを生成する、2つの方法を例示する。これらの実施形態は例示的なものであり、限定するものではない。
[047]図2は、本発明において有用なデータ構造の様々な実施形態を例示する。そのようなデータ構造は例示的なものであり、限定するものではない。
[056]図3は、キーの存在を検証し、関連付けられた衛星データを返すためのルックアップオペレーション処理の一実施形態を例示する。ステップ1 41で、ルックアップキーがルックアップ関数に入力される。ステップ2 42で、ルックアップ関数f(キー)は、ハッシュテーブルルックアップをサポート(例えば、加速)する論理バケット識別子を生成する。論理バケット識別子は変換関数に入力され、変換関数は、ステップ3 43で、バケット変換テーブル(BTT)17を介してフラッシュメモリ(物理バケット)位置にマップされる。ステップ4 44で、バケットがキャッシュに格納されるまで、フラッシュメモリ内の対象バケットがフラッシュメモリから読み出され45a、バケットがキャッシュに格納された場合、キャッシュ23から読出し可能である45b。ステップ6 46で、キーのための衛星(レコード)データがインデックス付けアルゴリズムに返される。
[070]本発明のもう1つのより具体的な実施例が、ここで図9〜16を参照して説明される。
H1(x)=x<032:63>mod N
H2(x)=x<064:95>mod N
H3(x)=x<096:127>mod N
[078]抽出されたBitField幅は、log2(N)以上である。ばらばらのビットの任意の組み合わせを使用することができ、log2(N)制約を受ける。図10に例示されるように、最初のフィールド141内のフィンガープリントのみがハッシュされて、キーが形成される。レコード140の残りのコンテンツ(フィールド142〜145)は、値又はペイロードを備える。
2を読み出す(Pを得る)
1を書き込む(Rを書き込む)
3を読み出す(妥当性チェック)
3を書き込む(Q)
[082]最初の2つの読出しは、Rがインデックス内にすでに存在しているのではないことを検証するために使用される。妥当性チェック(3を読み出す)は、スロット番号3が空であるかどうかを決定し、そうである場合、Qがスロット3に書込み可能となり、どのエントリもスロット3に再書込みされなかったとき、このアルゴリズムは終了される。スロット3が空でなかった場合、スロット3内の現在のエントリが別のスロットに移動されることが必要となる。我々がビットマップを有する場合、スロット3のコンテンツは既知であり、そうでない場合、我々は、そのステータスを決定するために、スロット3内のエントリを読み出す必要がある。各エントリは、そのエントリが有効であるかどうかを示す有効ビットを含む。有効とは、それが使用中である(且つ、その位置を現在占有しているものが変位されなければならない)ことを意味する。有効ではないとは、その位置が空であることを意味し、処理中のレコードがそこに書込み可能である。有効ビットのコンテンツもまた、あるメモリを犠牲にして、別のビットマップに格納されうる。
[090]本発明は、本願と同日に出願され、2009年6月26日出願の米国仮特許出願第61/269,633号に対する優先権を主張する、A.J.Beaverson及びP.Bowdenによる、同時係属の、所有者が同じであるFile System(ファイルシステム)という名称の米国特許出願第__________号に記載された、ファイルシステムのインデックスを実装するために使用されうる。両出願に対する優先権が本明細書で主張され、各々の完全な開示はそれらの全体として参照により本明細書に組み込まれる。
Claims (23)
- ユニフォームアクセスインデックス付け処理を、ノンユニフォームアクセスメモリ(26,235)に適合させる方法であって、前記インデックス付け処理は、一様に分布した一意のインデックスキーに基づくインデックスレコードのディクショナリに対するランダムアクセス要求を生成し、前記方法は、
a) インデックスレコードのディクショナリを前記ノンユニフォームアクセスメモリ(26)に記憶するステップであって、各インデックスレコードは関連付けられたインデックスキーを含む、ステップと、
b) 論理バケット識別子を前記メモリの物理バケット位置にマッピングするためのバケット変換テーブル(17,300)を維持するステップであって、1つのインデックスキー(141)を置き換えハッシングすることにより1つの論理バケット識別子を生成するステップを含み、前記テーブルは、前記1つの論理バケット識別子の、関連付けられた前記インデックスレコード(310,311,312)が記憶された前記メモリの1つの物理バケット位置(22,309)へのマッピングを含む、ステップと、
c) 複数の前記インデックスレコードをキャッシュ(23)内に集めるステップであって、該ステップは、前記メモリの1つの物理バケット位置への前記キャッシュからの複数のインデックスレコードの集まりの順次書き込みとしての書き込みに先立つ、ステップと、
d) 前記バケット変換テーブル(17)を前記集まりの中の複数の前記インデックスレコードに対する前記1つの物理バケット位置で更新するステップと
を含む方法。 - 請求項1に記載の方法であって、1つ又は複数の順次インデックスレコードを、前記メモリ(26,23)から前記キャッシュへ読み出すステップと、
前記1つ又は複数のインデックスレコードが読み出されたメモリ内の物理位置を、フリーとして指定するステップと
を含む方法。 - 請求項1又は2に記載の方法であって、前記ブロック内の任意の有効インデックスレコードを前記キャッシュに読み出すこと、及び、そのようなインデックスレコードが読み出された前記メモリ内の物理位置を、フリーとして指定することによって、前記メモリ内の複数の順次物理バケット位置(22,309)をフリーブロックとするステップを含む方法。
- 請求項1から3の何れか一項に記載の方法であって、複数の論理バケット識別子を前記インデックスキーに対して生成すること、前記置き換えハッシングの関数は、複数の生成された前記論理バケット識別子の間で選択することを特徴とする方法。
- 請求項1から4の何れか一項に記載の方法であって、前記メモリは、フラッシュ、相変化及びソリッドステートディスクのメモリデバイスのうちの1つ又は複数を含むことを特徴とする方法。
- 請求項1から5の何れか一項に記載の方法であって、前記メモリは、ランダム書き込みアクセス時間、ランダム読み出し−修正−書き込みアクセス時間、順次書き込み、アラインメント制約、消去時間、消去ブロック境界及び摩耗のうちの1つ又は複数によって制限されることを特徴とする方法。
- 請求項1から6の何れか一項に記載の方法であって、前記バケットのサイズは、ページまたは部分ページ等の前記メモリの最小書き込みサイズの関数であることを特徴とする方
法。 - 請求項7に記載の方法であって、前記メモリは、複数のページを含む消去ブロックを有することを特徴とする方法。
- 請求項1から8の何れか一項に記載の方法であって、前記メモリ内のどの物理バケット位置が有効であるかを追跡するためのバケット有効テーブル(271)を維持するステップを含む方法。
- 請求項1から9の何れか一項に記載の方法であって、前記メモリの物理バケット位置(23)は、1つ又は複数のインデックスレコードのセット、及び、前記バケット変換テーブルへのセルフインデックスを含むことを特徴とする方法。
- 請求項10に記載の方法であって、前記バケットの前記インデックスレコードは順序付けされないことを特徴とする方法。
- 請求項1から11の何れか一項に記載の方法であって、前記バケット変換テーブルは、永続メモリに記憶されたことを特徴とする方法。
- 請求項1から12の何れか一項に記載の方法であって、消去ブロック内のフリー物理バケット位置の数を追跡し、フリーバケット位置のしきい値が満たされたとき、フリー消去ブロックを生成するための処理を実施するステップを含む方法。
- 請求項1から13の何れか一項に記載の方法であって、前記インデックス付け処理は、インデックスレコードが挿入、削除、ルックアップ及び修正のうちの1以上をされる要求に基づいて、インデックス付けオペレーションを行うことを特徴とする方法。
- 請求項1から14の何れか一項に記載の方法であって、前記インデックス付け処理は、前記インデックスレコードを記憶する物理バケット位置を読み出し該物理バケット位置に書き込むための論理バケットオペレーションを提示することを特徴とする方法。
- 請求項1から15に記載の方法であって、前記メモリ(26)は、複数の消去ブロックを含むフラッシュメモリデバイスを含み、各消去ブロックは複数のページを含み、各ページは複数のバケットを含むことを特徴とする方法。
- 請求項16に記載の方法であって、ランダム読み出しオペレーションに応答して前記キャッシュに対する追加のバケットを読み出すことにより、フリー消去ブロックを生成するステップを含む方法。
- 請求項16又は17に記載の方法であって、スキャベンジング処理(114)を実行して、前記キャッシュに対する消去ブロックを読みだすことによりフリー消去ブロックを生成するステップを含む方法。
- プロセッサに請求項1から18の何れか一項に記載の方法の前記ステップを実行させるプログラムコードを含むコンピュータプログラム。
- インデックス付け処理を実施するための命令を実行するプロセッサを含むコンピュータシステムであって、前記インデックス付け処理は、一様に分布した一意のインデックスキーに基づくインデックスレコードのディクショナリに対するランダムアクセス要求を生成し、前記システムは、
ノンユニフォームアクセスメモリ(26)であって、前記メモリの物理バケット位置に記憶されたインデックスレコードのディクショナリを含む前記ノンユニフォームアクセスメモリと、
前記ディクショナリの1つのインデックスキーの置き換えハッシングにより生成された1つの論理バケット識別子を、該1つのインデックスキーに関連付けられたインデックスレコード(310,311,312)が記憶された前記メモリの1つの物理バケット位置にマッピングするためのバケット変換テーブル(17)と、
前記メモリに書き込まれる複数のインデックスレコードを集めるためのキャッシュ(23)と、
前記メモリのある物理バケット位置にアクセスするための手段(18)であって、該ある物理バケット位置は、ユニフォームアクセスインデックス付け処理により前記バケット変換テーブルに供給された論理バケット識別子にマッピングされた、手段と、
前記キャッシュからの複数の前記インデックスレコードの集まりを、前記メモリの少なくとも1つの物理バケット位置に順次書き込むための手段(24)と、
前記バケット変換テーブル(17)を前記集まりの中の複数の前記インデックスレコードに対する前記少なくとも1つの物理バケット位置で更新するための手段(19)と
を含む、コンピュータシステム。 - 請求項20に記載のコンピュータシステムであって、インデックスを記憶する前記メモリは物理デバイス層を含み、該物理デバイス層は、ノンユニフォーム読み出し及び書き込みアクセス、並びに、サイズ、アラインメント及びタイミングについての不変性によって特徴付けられたコンピュータシステム。
- 請求項20又は21に記載のコンピュータシステムであって、インデックスを記憶する前記メモリは、フラッシュ、相変化及びソリッドステートディスクのメモリデバイスのうちの1つ又は複数を含むことを特徴とするコンピュータシステム。
- 請求項20から22の何れか一項に記載のコンピュータシステムであって、インデックスを記憶する前記メモリは、複数の消去ブロックを含むフラッシュメモリデバイスを含み、各消去ブロックは複数のページを含み、各ページは複数のバケットを含むことを特著とするコンピュータシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US26963309P | 2009-06-26 | 2009-06-26 | |
US61/269,633 | 2009-06-26 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012517764A Division JP2012531674A (ja) | 2009-06-26 | 2010-06-25 | ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015144022A true JP2015144022A (ja) | 2015-08-06 |
JP6126158B2 JP6126158B2 (ja) | 2017-05-10 |
Family
ID=42541578
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012517764A Pending JP2012531674A (ja) | 2009-06-26 | 2010-06-25 | ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け |
JP2012517787A Active JP5695040B2 (ja) | 2009-06-26 | 2010-06-25 | ファイルシステム |
JP2015075686A Active JP6126158B2 (ja) | 2009-06-26 | 2015-04-02 | ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012517764A Pending JP2012531674A (ja) | 2009-06-26 | 2010-06-25 | ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け |
JP2012517787A Active JP5695040B2 (ja) | 2009-06-26 | 2010-06-25 | ファイルシステム |
Country Status (10)
Country | Link |
---|---|
US (2) | US8880544B2 (ja) |
EP (2) | EP2433227B1 (ja) |
JP (3) | JP2012531674A (ja) |
CN (2) | CN102483755B (ja) |
AU (2) | AU2010265954B2 (ja) |
BR (2) | BRPI1013789A8 (ja) |
CA (2) | CA2766161C (ja) |
DK (2) | DK2433226T3 (ja) |
ES (2) | ES2548194T3 (ja) |
WO (2) | WO2010151750A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11243877B2 (en) | 2018-05-01 | 2022-02-08 | Fujitsu Limited | Method, apparatus for data management, and non-transitory computer-readable storage medium for storing program |
Families Citing this family (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8478799B2 (en) | 2009-06-26 | 2013-07-02 | Simplivity Corporation | Namespace file system accessing an object store |
US10558705B2 (en) * | 2010-10-20 | 2020-02-11 | Microsoft Technology Licensing, Llc | Low RAM space, high-throughput persistent key-value store using secondary memory |
WO2012126180A1 (en) | 2011-03-24 | 2012-09-27 | Microsoft Corporation | Multi-layer search-engine index |
US8346810B2 (en) * | 2011-05-13 | 2013-01-01 | Simplivity Corporation | Reference count propagation |
US8924629B1 (en) | 2011-06-07 | 2014-12-30 | Western Digital Technologies, Inc. | Mapping table for improving write operation efficiency |
JP5524144B2 (ja) | 2011-08-08 | 2014-06-18 | 株式会社東芝 | key−valueストア方式を有するメモリシステム |
US9626434B2 (en) * | 2011-08-30 | 2017-04-18 | Open Text Sa Ulc | Systems and methods for generating and using aggregated search indices and non-aggregated value storage |
CN102364474B (zh) * | 2011-11-17 | 2014-08-20 | 中国科学院计算技术研究所 | 用于机群文件系统的元数据存储系统和管理方法 |
US9165005B2 (en) * | 2012-02-24 | 2015-10-20 | Simplivity Corporation | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory |
US9032183B2 (en) | 2012-02-24 | 2015-05-12 | Simplivity Corp. | Method and apparatus for content derived data placement in memory |
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 |
US9152325B2 (en) | 2012-07-26 | 2015-10-06 | International Business Machines Corporation | Logical and physical block addressing for efficiently storing data |
US9225675B2 (en) | 2012-08-08 | 2015-12-29 | Amazon Technologies, Inc. | Data storage application programming interface |
US9904788B2 (en) | 2012-08-08 | 2018-02-27 | Amazon Technologies, Inc. | Redundant key management |
US8805793B2 (en) | 2012-08-08 | 2014-08-12 | Amazon Technologies, Inc. | Data storage integrity validation |
US10120579B1 (en) | 2012-08-08 | 2018-11-06 | Amazon Technologies, Inc. | Data storage management for sequentially written media |
SG10201600997YA (en) * | 2012-08-08 | 2016-03-30 | Amazon Tech Inc | Archival data storage system |
US8392428B1 (en) * | 2012-09-12 | 2013-03-05 | DSSD, Inc. | Method and system for hash fragment representation |
JP5925968B2 (ja) * | 2012-09-19 | 2016-05-25 | ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited | ファイルストレージシステムにおけるチェックポイントを用いて重複排除を管理するシステムおよび方法 |
US9043334B2 (en) * | 2012-12-26 | 2015-05-26 | Industrial Technology Research Institute | Method and system for accessing files on a storage system |
WO2014105019A1 (en) * | 2012-12-27 | 2014-07-03 | Empire Technology Development, Llc | Virtual machine monitor (vmm) extension for time shared accelerator management and side-channel vulnerability prevention |
US9612955B2 (en) * | 2013-01-09 | 2017-04-04 | Wisconsin Alumni Research Foundation | High-performance indexing for data-intensive systems |
US10558581B1 (en) | 2013-02-19 | 2020-02-11 | Amazon Technologies, Inc. | Systems and techniques for data recovery in a keymapless data storage system |
US9208105B2 (en) * | 2013-05-30 | 2015-12-08 | Dell Products, Lp | System and method for intercept of UEFI block I/O protocol services for BIOS based hard drive encryption support |
US9430492B1 (en) * | 2013-06-28 | 2016-08-30 | Emc Corporation | Efficient scavenging of data and metadata file system blocks |
US9594795B1 (en) * | 2013-06-28 | 2017-03-14 | EMC IP Holding Company LLC | Maintaining data consistency when data is changed out from under another data service |
US9043576B2 (en) * | 2013-08-21 | 2015-05-26 | Simplivity Corporation | System and method for virtual machine conversion |
US9531722B1 (en) | 2013-10-31 | 2016-12-27 | Google Inc. | Methods for generating an activity stream |
US9542457B1 (en) | 2013-11-07 | 2017-01-10 | Google Inc. | Methods for displaying object history information |
US9614880B1 (en) | 2013-11-12 | 2017-04-04 | Google Inc. | Methods for real-time notifications in an activity stream |
US9509772B1 (en) | 2014-02-13 | 2016-11-29 | Google Inc. | Visualization and control of ongoing ingress actions |
EP2913938A1 (de) * | 2014-02-26 | 2015-09-02 | Siemens Aktiengesellschaft | Verfahren und Anordnung zum Zugriff auf Informationen eines drahtlos zugreifbaren Datenträgers |
US9536199B1 (en) | 2014-06-09 | 2017-01-03 | Google Inc. | Recommendations based on device usage |
US9507791B2 (en) | 2014-06-12 | 2016-11-29 | Google Inc. | Storage system user interface with floating file collection |
US10078781B2 (en) | 2014-06-13 | 2018-09-18 | Google Llc | Automatically organizing images |
CN105320466A (zh) * | 2014-07-29 | 2016-02-10 | 广明光电股份有限公司 | 固态硬盘安排操作的方法 |
US9727575B2 (en) * | 2014-08-29 | 2017-08-08 | Microsoft Technology Licensing, Llc | File system with data block sharing |
WO2016093809A1 (en) * | 2014-12-09 | 2016-06-16 | Hewlett Packard Enterprise Development Lp | Storage media sections with alternative cells |
US9870420B2 (en) | 2015-01-19 | 2018-01-16 | Google Llc | Classification and storage of documents |
US11755201B2 (en) * | 2015-01-20 | 2023-09-12 | Ultrata, Llc | Implementation of an object memory centric cloud |
US9880755B2 (en) | 2015-02-25 | 2018-01-30 | Western Digital Technologies, Inc. | System and method for copy on write on an SSD |
US10678650B1 (en) * | 2015-03-31 | 2020-06-09 | EMC IP Holding Company LLC | Managing snaps at a destination based on policies specified at a source |
US11449322B2 (en) | 2015-05-08 | 2022-09-20 | Desktop 365, Inc. | Method and system for managing the end to end lifecycle of a cloud-hosted desktop virtualization environment |
US10303453B2 (en) | 2015-05-08 | 2019-05-28 | Desktop 365, LLC | Method and system for managing the end to end lifecycle of the virtualization environment for an appliance |
WO2016192025A1 (en) | 2015-06-01 | 2016-12-08 | SZ DJI Technology Co., Ltd. | Systems and methods for memory architecture |
JP6030713B1 (ja) * | 2015-06-16 | 2016-11-24 | 株式会社ソフトギア | 分散型データ処理プログラム、情報処理装置、分散型データベースシステム及び分散システム |
US10019382B2 (en) * | 2015-10-20 | 2018-07-10 | Sap Se | Secondary data structures for storage class memory (scm) enables main-memory databases |
JP6034467B2 (ja) * | 2015-10-23 | 2016-11-30 | 株式会社東芝 | システム |
CN105183401A (zh) * | 2015-10-30 | 2015-12-23 | 深圳市泽云科技有限公司 | 一种固态硬盘数据恢复方法、装置及系统 |
EP3374881B1 (en) * | 2015-12-16 | 2021-06-09 | Hewlett Packard Enterprise Development LP | Dynamic allocation of hash table resources |
CN105550345B (zh) * | 2015-12-25 | 2019-03-26 | 百度在线网络技术(北京)有限公司 | 文件操作方法和装置 |
US9880743B1 (en) * | 2016-03-31 | 2018-01-30 | EMC IP Holding Company LLC | Tracking compressed fragments for efficient free space management |
US20170315928A1 (en) * | 2016-04-28 | 2017-11-02 | Netapp, Inc. | Coarse-grained cache replacement scheme for a cloud-backed deduplication storage system |
JP6203929B2 (ja) * | 2016-10-20 | 2017-09-27 | 株式会社ソフトギア | 分散型データ処理プログラム、情報処理装置、分散型データベースシステム及び分散システム |
US11010300B2 (en) | 2017-05-04 | 2021-05-18 | Hewlett Packard Enterprise Development Lp | Optimized record lookups |
CN107391701B (zh) * | 2017-07-27 | 2021-04-23 | 郑州云海信息技术有限公司 | 一种文件创建方法及装置 |
US10545921B2 (en) | 2017-08-07 | 2020-01-28 | Weka.IO Ltd. | Metadata control in a load-balanced distributed storage system |
CN107688463B (zh) * | 2017-09-21 | 2020-08-18 | 杭州全维技术股份有限公司 | 一种嵌入式设备版本文件打包的方法 |
US11243703B2 (en) | 2018-04-27 | 2022-02-08 | Hewlett Packard Enterprise Development Lp | Expandable index with pages to store object records |
EP3791274B1 (en) * | 2018-05-08 | 2024-05-01 | Telefonaktiebolaget LM Ericsson (publ) | Method and node for managing a request for hardware acceleration by means of an accelerator device |
US11163489B2 (en) * | 2018-05-23 | 2021-11-02 | SK Hynix Inc. | Workload clusterization for memory system and method of executing the same |
CN110633296A (zh) * | 2018-05-31 | 2019-12-31 | 北京京东尚科信息技术有限公司 | 数据查询方法、装置、介质及电子设备 |
CN108984686B (zh) * | 2018-07-02 | 2021-03-30 | 中国电子科技集团公司第五十二研究所 | 一种基于日志合并的分布式文件系统索引方法和装置 |
US10884917B2 (en) * | 2018-12-05 | 2021-01-05 | Western Digital Technologies, Inc | Dual media packaging targeted for SSD usage |
US11170803B1 (en) | 2019-04-05 | 2021-11-09 | Western Digital Technologies, Inc. | Magnetic recording write head with spin-torque oscillator (STO) and extended seed layer |
US11354038B2 (en) | 2019-07-19 | 2022-06-07 | International Business Machines Corporation | Providing random access to variable-length data |
WO2021170228A1 (en) * | 2020-02-26 | 2021-09-02 | Huawei Technologies Co., Ltd. | A device and a method for indexing snapshots of multiple file systems |
US11138115B2 (en) * | 2020-03-04 | 2021-10-05 | Micron Technology, Inc. | Hardware-based coherency checking techniques |
US11436187B2 (en) | 2020-10-20 | 2022-09-06 | Micron Technology, Inc. | Method of notifying a process or programmable atomic operation traps |
US11403023B2 (en) | 2020-10-20 | 2022-08-02 | Micron Technology, Inc. | Method of organizing a programmable atomic unit instruction memory |
US11740929B2 (en) * | 2020-10-20 | 2023-08-29 | Micron Technology, Inc. | Registering a custom atomic operation with the operating system |
US11586439B2 (en) | 2020-10-20 | 2023-02-21 | Micron Technology, Inc. | Detecting infinite loops in a programmable atomic transaction |
US20230251894A1 (en) * | 2020-10-20 | 2023-08-10 | Micron Technology, Inc. | Method of executing programmable atomic unit resources within a multi-process system |
US11693690B2 (en) | 2020-10-20 | 2023-07-04 | Micron Technology, Inc. | Method of completing a programmable atomic transaction by ensuring memory locks are cleared |
US11755495B2 (en) * | 2021-03-16 | 2023-09-12 | Micron Technology, Inc. | Storing a logical-to-physical mapping in NAND memory |
US11734189B2 (en) * | 2021-03-16 | 2023-08-22 | Micron Technology, Inc. | Caching of logical-to-physical mapping information in a memory sub-system |
CN113703678B (zh) * | 2021-08-20 | 2023-12-22 | 济南浪潮数据技术有限公司 | 一种存储桶索引重分裂的方法、装置、设备和介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080228691A1 (en) * | 2007-03-12 | 2008-09-18 | Shavit Nir N | Concurrent extensible cuckoo hashing |
US20090106486A1 (en) * | 2007-10-19 | 2009-04-23 | Inha-Industry Partnership Institute | Efficient prefetching and asynchronous writing for flash memory |
Family Cites Families (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2251323B (en) * | 1990-12-31 | 1994-10-12 | Intel Corp | Disk emulation for a non-volatile semiconductor memory |
JPH06195253A (ja) * | 1992-12-24 | 1994-07-15 | Nippon Telegr & Teleph Corp <Ntt> | ファイル管理装置 |
US5815709A (en) * | 1996-04-23 | 1998-09-29 | San Microsystems, Inc. | System and method for generating identifiers for uniquely identifying object types for objects used in processing of object-oriented programs and the like |
US6128346A (en) | 1998-04-14 | 2000-10-03 | Motorola, Inc. | Method and apparatus for quantizing a signal in a digital system |
US6412080B1 (en) * | 1999-02-23 | 2002-06-25 | Microsoft Corporation | Lightweight persistent storage system for flash memory devices |
US6453404B1 (en) * | 1999-05-27 | 2002-09-17 | Microsoft Corporation | Distributed data cache with memory allocation model |
US6704730B2 (en) * | 2000-02-18 | 2004-03-09 | Avamar Technologies, Inc. | Hash file system and method for use in a commonality factoring system |
US7266555B1 (en) | 2000-03-03 | 2007-09-04 | Intel Corporation | Methods and apparatus for accessing remote storage through use of a local device |
CA2331474A1 (en) | 2001-01-19 | 2002-07-19 | Stergios V. Anastasiadis | Stride-based disk space allocation scheme |
US7043637B2 (en) | 2001-03-21 | 2006-05-09 | Microsoft Corporation | On-disk file format for a serverless distributed file system |
US7062490B2 (en) | 2001-03-26 | 2006-06-13 | Microsoft Corporation | Serverless distributed file system |
US6912645B2 (en) | 2001-07-19 | 2005-06-28 | Lucent Technologies Inc. | Method and apparatus for archival data storage |
US7115919B2 (en) * | 2002-03-21 | 2006-10-03 | Hitachi, Ltd. | Storage system for content distribution |
JP3896077B2 (ja) * | 2002-09-11 | 2007-03-22 | 株式会社東芝 | 計算機システムおよびファイル管理方法 |
JP4077313B2 (ja) * | 2002-12-27 | 2008-04-16 | 株式会社リコー | 情報処理装置、フラッシュrom管理方法およびプログラム |
US7139781B2 (en) | 2003-04-29 | 2006-11-21 | International Business Machines Corporation | Managing filesystem versions |
US7380059B2 (en) * | 2003-05-16 | 2008-05-27 | Pillar Data Systems, Inc. | Methods and systems of cache memory management and snapshot operations |
US7092976B2 (en) * | 2003-06-24 | 2006-08-15 | International Business Machines Corporation | Parallel high speed backup for a storage area network (SAN) file system |
US7877426B2 (en) | 2003-07-17 | 2011-01-25 | International Business Machines Corporation | Performance-enhancing system and method of accessing file system objects |
US7509473B2 (en) * | 2003-08-27 | 2009-03-24 | Adaptec, Inc. | Segmented storage system mapping |
US8417913B2 (en) * | 2003-11-13 | 2013-04-09 | International Business Machines Corporation | Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages |
US7328217B2 (en) | 2003-11-26 | 2008-02-05 | Symantec Operating Corporation | System and method for detecting and storing file identity change information within a file system |
US20050187898A1 (en) * | 2004-02-05 | 2005-08-25 | Nec Laboratories America, Inc. | Data Lookup architecture |
US7272654B1 (en) * | 2004-03-04 | 2007-09-18 | Sandbox Networks, Inc. | Virtualizing network-attached-storage (NAS) with a compact table that stores lossy hashes of file names and parent handles rather than full names |
US20110179219A1 (en) * | 2004-04-05 | 2011-07-21 | Super Talent Electronics, Inc. | Hybrid storage device |
US8583657B2 (en) * | 2004-05-06 | 2013-11-12 | Oracle International Corporation | Method and apparatus for using a hash-partitioned index to access a table that is not partitioned or partitioned independently of the hash partitioned index |
US8108429B2 (en) | 2004-05-07 | 2012-01-31 | Quest Software, Inc. | System for moving real-time data events across a plurality of devices in a network for simultaneous data protection, replication, and access services |
US7827182B1 (en) * | 2004-06-02 | 2010-11-02 | Cisco Technology, Inc | Searching for a path to identify where to move entries among hash tables with storage for multiple entries per bucket during insert operations |
EP1617341A1 (en) | 2004-07-16 | 2006-01-18 | International Business Machines Corporation | File operation management device |
US7730114B2 (en) * | 2004-11-12 | 2010-06-01 | Microsoft Corporation | Computer file system |
US7814078B1 (en) | 2005-06-20 | 2010-10-12 | Hewlett-Packard Development Company, L.P. | Identification of files with similar content |
US20060294163A1 (en) | 2005-06-23 | 2006-12-28 | Emc Corporation | Methods and apparatus for accessing content stored in a file system |
US8560503B1 (en) | 2006-01-26 | 2013-10-15 | Netapp, Inc. | Content addressable storage system |
US7454592B1 (en) * | 2006-02-16 | 2008-11-18 | Symantec Operating Corporation | Block-level and hash-based single-instance storage |
US8131682B2 (en) * | 2006-05-11 | 2012-03-06 | Hitachi, Ltd. | System and method for replacing contents addressable storage |
US8307148B2 (en) * | 2006-06-23 | 2012-11-06 | Microsoft Corporation | Flash management techniques |
US8145865B1 (en) * | 2006-09-29 | 2012-03-27 | Emc Corporation | Virtual ordered writes spillover mechanism |
EP2102750B1 (en) | 2006-12-04 | 2014-11-05 | Commvault Systems, Inc. | System and method for creating copies of data, such as archive copies |
US20100115175A9 (en) * | 2006-12-18 | 2010-05-06 | Zhiqing Zhuang | Method of managing a large array of non-volatile memories |
US8140625B2 (en) | 2007-02-20 | 2012-03-20 | Nec Laboratories America, Inc. | Method for operating a fixed prefix peer to peer network |
US20080243878A1 (en) * | 2007-03-29 | 2008-10-02 | Symantec Corporation | Removal |
US8489830B2 (en) * | 2007-03-30 | 2013-07-16 | Symantec Corporation | Implementing read/write, multi-versioned file system on top of backup data |
US7870122B2 (en) * | 2007-04-23 | 2011-01-11 | Microsoft Corporation | Self-tuning index for flash-based databases |
US20080270436A1 (en) * | 2007-04-27 | 2008-10-30 | Fineberg Samuel A | Storing chunks within a file system |
US8028106B2 (en) | 2007-07-06 | 2011-09-27 | Proster Systems, Inc. | Hardware acceleration of commonality factoring with removable media |
US7890555B2 (en) * | 2007-07-10 | 2011-02-15 | International Business Machines Corporation | File system mounting in a clustered file system |
US7725437B2 (en) * | 2007-07-31 | 2010-05-25 | Hewlett-Packard Development Company, L.P. | Providing an index for a data store |
US7945815B2 (en) * | 2007-08-14 | 2011-05-17 | Dell Products L.P. | System and method for managing memory errors in an information handling system |
JP4949176B2 (ja) * | 2007-09-10 | 2012-06-06 | ソニー株式会社 | 情報処理装置、記録方法およびコンピュータプログラム |
US20090198952A1 (en) * | 2008-02-04 | 2009-08-06 | Apple Inc | Memory Mapping Architecture |
US7747663B2 (en) | 2008-03-05 | 2010-06-29 | Nec Laboratories America, Inc. | System and method for content addressable storage |
US8346730B2 (en) | 2008-04-25 | 2013-01-01 | Netapp. Inc. | Deduplication of data on disk devices based on a threshold number of sequential blocks |
US8271564B2 (en) * | 2008-07-14 | 2012-09-18 | Symbol Technologies, Inc. | Lookup table arrangement and related management method for accommodating concurrent processors |
US8135723B2 (en) * | 2008-11-12 | 2012-03-13 | Microsoft Corporation | Leveraging low-latency memory access |
US9542409B2 (en) | 2008-11-26 | 2017-01-10 | Red Hat, Inc. | Deduplicated file system |
US20100274772A1 (en) * | 2009-04-23 | 2010-10-28 | Allen Samuels | Compressed data objects referenced via address references and compression references |
US8195636B2 (en) | 2009-04-29 | 2012-06-05 | Netapp, Inc. | Predicting space reclamation in deduplicated datasets |
US8478799B2 (en) | 2009-06-26 | 2013-07-02 | Simplivity Corporation | Namespace file system accessing an object store |
US9165005B2 (en) * | 2012-02-24 | 2015-10-20 | Simplivity Corporation | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory |
-
2010
- 2010-06-25 CA CA2766161A patent/CA2766161C/en not_active Expired - Fee Related
- 2010-06-25 EP EP10731653.1A patent/EP2433227B1/en active Active
- 2010-06-25 DK DK10730310.9T patent/DK2433226T3/en active
- 2010-06-25 CN CN201080033630.9A patent/CN102483755B/zh active Active
- 2010-06-25 CN CN201080033622.4A patent/CN102483754B/zh active Active
- 2010-06-25 CA CA2766231A patent/CA2766231C/en not_active Expired - Fee Related
- 2010-06-25 JP JP2012517764A patent/JP2012531674A/ja active Pending
- 2010-06-25 JP JP2012517787A patent/JP5695040B2/ja active Active
- 2010-06-25 EP EP10730310.9A patent/EP2433226B1/en active Active
- 2010-06-25 DK DK10731653.1T patent/DK2433227T3/en active
- 2010-06-25 ES ES10731653.1T patent/ES2548194T3/es active Active
- 2010-06-25 US US12/823,452 patent/US8880544B2/en active Active
- 2010-06-25 BR BRPI1013789A patent/BRPI1013789A8/pt not_active Application Discontinuation
- 2010-06-25 WO PCT/US2010/039966 patent/WO2010151750A1/en active Application Filing
- 2010-06-25 ES ES10730310.9T patent/ES2546562T3/es active Active
- 2010-06-25 WO PCT/US2010/040058 patent/WO2010151813A1/en active Application Filing
- 2010-06-25 AU AU2010265954A patent/AU2010265954B2/en not_active Ceased
- 2010-06-25 AU AU2010265984A patent/AU2010265984C1/en not_active Ceased
- 2010-06-25 BR BRPI1013794A patent/BRPI1013794A8/pt not_active Application Discontinuation
-
2014
- 2014-10-21 US US14/519,722 patent/US10176113B2/en active Active
-
2015
- 2015-04-02 JP JP2015075686A patent/JP6126158B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080228691A1 (en) * | 2007-03-12 | 2008-09-18 | Shavit Nir N | Concurrent extensible cuckoo hashing |
US20090106486A1 (en) * | 2007-10-19 | 2009-04-23 | Inha-Industry Partnership Institute | Efficient prefetching and asynchronous writing for flash memory |
Non-Patent Citations (1)
Title |
---|
JPN7016001327; Hongchan Roh, et al: 'An Efficient Hash Index Structure for Solid State Disks' Proceedings of the 2008 International Conference on Information and Knowledge Engineering, IKE 2008 , 20080714, pp.256-261 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11243877B2 (en) | 2018-05-01 | 2022-02-08 | Fujitsu Limited | Method, apparatus for data management, and non-transitory computer-readable storage medium for storing program |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6126158B2 (ja) | ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け | |
JP6205650B2 (ja) | 不均等アクセス・メモリにレコードを配置するために不均等ハッシュ機能を利用する方法および装置 | |
US10430084B2 (en) | Multi-tiered memory with different metadata levels | |
Wu et al. | An efficient B-tree layer for flash-memory storage systems | |
US7624239B2 (en) | Methods for the management of erase operations in non-volatile memories | |
US7783845B2 (en) | Structures for the management of erase operations in non-volatile memories | |
KR101533744B1 (ko) | 플래시 메모리 시스템 및 그것의 플래시 변환 계층 설계 방법 | |
US7774392B2 (en) | Non-volatile memory with management of a pool of update memory blocks based on each block's activity and data order | |
TWI399644B (zh) | 非揮發記憶體區塊管理方法 | |
US7779056B2 (en) | Managing a pool of update memory blocks based on each block's activity and data order | |
KR20090079197A (ko) | 비휘발성 메모리 및 클래스 기반의 업데이트 블록 대체 규칙을 위한 방법 | |
Lee et al. | An efficient buffer management scheme for implementing a B-tree on NAND flash memory | |
Gong et al. | A write-optimized B-tree layer for NAND flash memory | |
Kumar et al. | A survey on flash translation layer for NAND flash memory | |
Boucetta et al. | LHFTL: A novel SSD performance optimisation approach using the LH index | |
Chiao et al. | HybridLog: an Efficient Hybrid-Mapped Flash Translation Layer for Modern NAND Flash Memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160427 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160527 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20160826 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20161027 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161028 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20170308 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170406 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6126158 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |