JP2011521315A - マルチプロセッサ/マルチスレッド環境における記憶要求を調整するための装置、システム及び方法 - Google Patents

マルチプロセッサ/マルチスレッド環境における記憶要求を調整するための装置、システム及び方法 Download PDF

Info

Publication number
JP2011521315A
JP2011521315A JP2011504100A JP2011504100A JP2011521315A JP 2011521315 A JP2011521315 A JP 2011521315A JP 2011504100 A JP2011504100 A JP 2011504100A JP 2011504100 A JP2011504100 A JP 2011504100A JP 2011521315 A JP2011521315 A JP 2011521315A
Authority
JP
Japan
Prior art keywords
data
module
index
storage
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2011504100A
Other languages
English (en)
Inventor
フリン,ディヴィッド
ザッペ,マイケル
サッチャー,ジョナサン
Original Assignee
フュージョン−アイオー・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by フュージョン−アイオー・インコーポレーテッド filed Critical フュージョン−アイオー・インコーポレーテッド
Publication of JP2011521315A publication Critical patent/JP2011521315A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

マルチプロセッサ/マルチスレッド環境における記憶要求を調整するための装置、システム及び方法を提供する。追加/無効化モジュール1202は、第1の記憶要求から第1の追加データ記憶コマンドを生成し、第1の記憶要求の後に受信した第2の記憶要求から第2の追加データ記憶コマンドを生成する。記憶要求は、存在するデータを第1及び第2のデータで上書し、第1及び第2のデータは重複するデータの少なくとも一部を含む。追加/無効化モジュール1202は、重複するデータを無効としてマークすることによってインデックスを更新する。再構成モジュール1204は、第1のデータに基づいてインデックスを更新すると共に、第2のデータに基づいてインデックスを更新する。更新されたインデックスは、処理順序に関係なく、第2のデータが第1のデータよりも最新であることを指示する。モジュールがインデックスを更新し終わるまで、モジュールはインデックスへのアクセスを防止する。

Description

本発明は、マルチプロセッサ又はスレッドからデータ記憶デバイスへ記憶要求を調整(coordinate)接続するための技術に関する。
なお、本出願は、参照により本明細書に援用される、David Flynn等によって2008年4月6日に出願された「Apparatus, System, and Method for coordinating Storage Requests in a Multi-Processor/Multi-Thread Environment」と題する米国特許出願第12/08435号に対する優先権を主張する。
ディスクドライブ、光ドライブ等の従来のデータ記憶デバイスは、データを格納するために、多くの場合にランダムアクセスデバイスとして動作する。ランダムアクセスは、一般には、均等な時間配分で或るシーケンスの任意の要素にアクセスする能力である。これは、データが順次に格納され、同じく順次にアクセスされるためにデータのロケーションに応じてアクセス時間が著しく異なるようになる順次アクセスとは異なる。例えば、データを格納するためのテープは順次デバイスである。或るデータ要素は、読取りヘッドが配置される場所の近くに位置する場合があるが、別のデータ要素に到達するにはテープを進めるか、又は戻さなければならないために、アクセスするのにより長い時間を要する場合があるので、データ要素にアクセスするのに異なる時間を要する可能性がある。
ランダムアクセスデバイス上のどのデータ要素にアクセスするのに要する時間も概ね同じアクセス時間であるので、メモリチップ、ディスクドライブ又は固体記憶デバイスのようなランダムアクセスデバイスは、ランダムアクセスデバイスとして動作する。データアクセスが予測可能でありかつ効率的であることから、ランダムアクセスが望ましい。メモリチップのような或るデバイスは、ランダム読出し及びランダム書込みの両方をサポートし、一般にはデータを更新されるデータで上書きする能力をサポートする。フラッシュメモリのような或るデバイスは、ランダム読出しをサポートするが、データを書き込めるようにするには、予めメモリの全領域(例えば、消去ブロック又は消去領域)を消去する必要がある。
通常、ファイルシステムは、低レベルコマンドを用いてランダムアクセス記憶デバイスと通信する。ファイルシステムは、どこにデータが配置されるべきかを管理する。低レベルコマンドは、通常、データを格納するか、又はデータにアクセスするためのコマンド内に物理アドレス及びデータ長を含む。ランダムアクセス記憶デバイス内のデータは、一般には、読み出し・変更・書込み動作において更新される場合があり、その動作では、或る特定のアドレスにあるデータが読み出され、変更され、その後、そのデータが格納されていたのと同じロケーションに書き込まれる。
データ記憶デバイスは多くの場合に、複数のデバイスによってアクセスされる。通常、ファイルサーバがデータ記憶デバイスへのアクセスを管理し、共通データにかかわる複数の要求を調整する。典型的なランダムアクセスデータ記憶デバイスの場合、ファイルサーバによって記憶要求が出されると、ファイルサーバは典型的には、その要求が完了するまで待ち、その後、別の記憶要求を送信して、適切な順序でデータが書き込まれるのを確実にしなければならない。データ記憶デバイスが、特定の記憶要求を完了するのに相対的に長い時間を要する場合、処理時間が相対的に非常に長くなる可能性がある。
いくつかのデータ記憶デバイスはデータを順次に格納するが、それでも、それらデータ記憶デバイスのためのデータアクセス時間は概ね等しい。たとえば、フラッシュメモリのようないくつかの固体記憶デバイスでは、データが順次に格納される。固体記憶デバイスのためのデータアクセス時間は、他のランダムアクセスデバイスのように、概ね均一である。従来のファイルサーバ又は他のデータ管理システムを用いて、順次記憶デバイスに対する種々のデバイスからの要求を調整することは、性能に影響を与える。たとえば、読み出し・変更・書込み動作中に、変更されるデータが同じ場所に書き戻されるのではなく、代わりに順次に格納される。ファイルサーバが更新を管理する場合、同じファイル又はオブジェクトへの別のデータ要求をサービスする前に、ファイルサーバは、その更新プロセス全体が完了するのを待たなければならない。1つの追加プロセスが更新を完了する間に、ディレクトリ及びマップに格納されるようなメタデータがロックされるとき、他のプロセス又はスレッドがメタデータにアクセスできなくなる場合がある。この更新は、順次記憶デバイスが、データが順次に格納された物理的なロケーションを返すのを待つことを含む。
並列のコンピューティング環境では、データ記憶デバイスが記憶要求を完了するのを待つことは非効率的である。なぜなら、並列のプロセッサが中断され、シングルスレッドの記憶プロセスが完了するのを待つ場合があるためである。低レベルで、ログベースの記憶プロセスを実施する順次記憶システムの場合、数多くのスレッド又はプロセスを並列に実行できるようにする楽観的完了方式(optimistic completion approach)が必要とされている。
上記の検討から、記憶要求が共通ファイル又はオブジェクトに関連する場合であっても、複数のプロセッサ又は複数のスレッドが記憶要求の種々の部分を並列に完了できるように、データ記憶デバイスが記憶要求の処理をインターリーブできるようにする装置、システム及び方法が必要とされていることが明らかなはずである。都合のよいことに、そのような装置、システム及び方法は、記憶要求の到着順に基づいて、変更されるデータが適切な更新順序を反映するのを確実にしながら、マルチプロセッサ、マルチスレッド環境における性能を高める。
本発明は、現在の最新技術に応えて、そして特に、現時点で利用可能な並列処理システムではまだ十分には解決されていない当該技術分野における問題及び要求に応えて開発された。したがって、本発明は、当該技術分野における上記の短所の多く、又は全てを克服する、複数のプロセッサ又はスレッド間で記憶要求を調整するための装置、システム及び方法を提供するために開発された。
記憶要求を調整するための装置は、単一のデータセグメントにアクセスする2つの記憶要求のサービスを調整するのに必要なステップを機能的に実行するように構成される複数のモジュールを設けられる。上記の実施形態におけるこれらのモジュールは、追加/無効化モジュール及び再構成モジュールを含む。
追加/無効化モジュールは、第1の記憶要求を受信するのに応答して第1の追加データ記憶コマンドを生成する。第1の記憶要求は、既存のデータを第1のデータで上書きする要求を含む。既存のデータは、データ記憶デバイス上に格納されるデータセグメントの一部である。追加/無効化モジュールは、第2の記憶要求を受信するのに応答して第2の追加データ記憶コマンドを生成する。第2の記憶要求は、データセグメントの既存のデータを第2のデータで上書きする要求を含む。第1のデータ及び第2のデータは、データセグメント内の共通オフセットに格納されることになる、重複するデータの少なくとも一部を含む。第2の記憶要求は、第1の記憶要求後に受信される。追加/無効化モジュールは、第1の記憶要求に応答して、そのデータセグメントのデータを無効としてマークすることによって、インデックスを更新する。無効とマークされたデータは、第1のデータに置き換えられるデータを含む。追加/無効化モジュールは、第2の記憶要求に応答して、そのデータセグメントのデータを無効としてマークすることによって、インデックスを更新する。無効とマークされたデータは、第2のデータに置き換えられるデータを含む。
再構成モジュールは、第1のデータに基づいてインデックスを更新すると共に第2のデータに基づいてインデックスを更新する。更新されるインデックスは、インデックスが第2のデータに基づいて更新される前に第1のデータに基づいて更新されるか、又はインデックスが第1のデータに基づいて更新される前に第2のデータに基づいて更新されるときに、第2のデータが第1のデータよりも最新であることを指示するように編成される。追加/無効化モジュールがインデックスを更新し終わるまで、該追加/無効化モジュールはインデックスへのアクセスを防ぎ、再構成モジュールがインデックスを更新し終わるまで、該再構成モジュールはインデックスへのアクセスを防ぐ。
一実施の形態では、データロケーション更新モジュールをさらに備え、該データロケーション更新モジュールは、インデックスを、データ記憶デバイスが第1のデータを格納した場所を指示する第1の物理的なロケーションで更新する。データロケーションモジュールはまた、インデックスを、データ記憶デバイスが第2のデータを格納した場所を指示する第2の物理的なロケーションで更新する。データ記憶デバイスが第1のデータ及び第2のデータを格納した物理的なロケーションはデータ記憶デバイスから受信される。更新されるインデックスは、インデックスが第2の物理的なロケーションに基づいて更新される前に第1の物理的なロケーションに基づいて更新されるときに、又はインデックスが第1の物理的なロケーションに基づいて更新される前に第2の物理的なロケーションに基づいて更新されるときに、第2の物理的なロケーションが第1の物理的なロケーションよりも最新であることを指示するように編成される。データロケーションモジュールがインデックスを更新し終わるまで、データロケーション更新モジュールは、インデックスへのアクセスを防ぐ。
別の実施の形態では、追加/無効化モジュールによる記憶要求の処理は再構成モジュールによる処理の前に行なわれ、再構成モジュールによる該記憶要求の処理はデータロケーションモジュールによる処理の前に行なわれる。一実施の形態では、追加/無効化モジュール、再構成モジュール又はデータロケーション更新モジュールによる第1の記憶要求の処理は、追加/無効化モジュール、再構成モジュール又はデータロケーション更新モジュールによる第2の記憶要求の処理の前又は後に行なわれる。
一実施の形態では、追加/無効化モジュール、再構成モジュール及びデータロケーション更新モジュールのそれぞれのインスタンスは2つ以上のスレッドにおいて実行され、追加/無効化モジュール、再構成モジュール又はデータロケーション更新モジュールがインデックスを更新し終わるまで、追加/無効化モジュール、再構成モジュール及びデータロケーション更新モジュールの各インスタンスは、インデックスへのアクセスを防ぐ。別の実施の形態では、追加/無効化モジュール、再構成モジュール及びデータロケーション更新モジュールのそれぞれのインスタンスは並列に動作する2つ以上のプロセッサにおいて実行され、追加/無効化モジュール、再構成モジュール又はデータロケーション更新モジュールがインデックスを更新し終わるまで、追加/無効化モジュール、再構成モジュール及びデータロケーション更新モジュールの各インスタンスは、インデックスへのアクセスを防ぐ。
一実施の形態では、本装置は、読出し要求を含む記憶要求に応答してデータセグメントの少なくとも一部を読み出す読出しモジュールを備える。この実施の形態では、本装置は、第1の記憶要求が追加/無効化モジュール、再構成モジュール及びデータロケーション更新モジュールによってサービスされるまで、要求される読出しをサービスするのを遅らせる読出し遅延モジュールをさらに備える。さらなる実施の形態では、データセグメントの少なくとも一部を読み出す記憶要求は、第1の記憶要求後かつ第2の記憶要求前に装置によって受信され、読出し遅延モジュールは、第1の記憶要求及び第2の記憶要求の両方が追加/無効化モジュール、再構成モジュール及びデータロケーション更新モジュールによってサービスされるまで、読出し要求をサービスするのを遅らせる、請求項7に記載の装置。
一実施の形態では、本装置は、シーケンス番号を記憶要求と関連付けるシーケンス番号モジュールを備える。割り当てられるシーケンス番号は、記憶要求が装置によって受信される順序を表す。再構成モジュールは、第1の記憶要求及び第2の記憶要求のそれぞれに割り当てられるシーケンス番号を用いることによって、第2のデータが第1のデータよりも最新であることを指示するようにインデックスを編成する。別の実施の形態では、第2のデータが第1のデータよりも最新であることを指示するようにインデックスを編成することは、重複するデータにマッピングされるインデックスの部分を第2のデータで更新すること、及び再構成モジュールが、第1のデータに基づいてインデックスを更新する前に、第2のデータに基づいてインデックスを更新する場合には、第2のデータへのマッピングを保持することを含む。
別の実施の形態では、追加/無効化モジュールはデータセグメントの既存のデータを上書きする3つ以上の記憶要求を受信し、再構成モジュールは、再構成モジュールが記憶要求のデータを用いてインデックスを更新する順序に関係なく、記憶要求の到着順に基づいて、記憶要求のデータを用いてインデックスを編成する。別の実施の形態では、インデックスは2つ以上の領域にさらに分割されると共に、インデックスの第1の領域に関連する記憶要求がサービスされ、一方、追加/無効化モジュール及び再構成モジュールのうちの1つ又は複数のモジュールの付加的なインスタンスが、第2の領域に関連する記憶要求をサービスする間に、インデックスの第2の領域へのアクセスを防ぐ。別の実施の形態では、第1の記憶要求は第1のクライアントから送信され、第2の記憶要求は第2のクライアントから送信される。
別の実施の形態では、第1の要求に応答して、置き換えられるデータセグメントのデータを無効としてマークすることによってインデックスを更新することは、ビットマップの1つ又は複数のビットをマークすることも含む。ビットマップ内のビットは、第1のデータ及び第2のデータに置き換えられるデータセグメントのデータが存在する、データ記憶デバイス内の1つ又は複数のロケーションに対応する。別の実施の形態では、第1の要求に応答して、置き換えられるデータセグメントのデータを無効としてマークすることによってインデックスを更新することは、再構成モジュールが第1のデータ及び第2のデータに基づいてインデックスを更新するまで、データセグメント全体を無効として一時的にマークし、その後、置き換えられるデータ以外のデータセグメントのデータが有効であることを指示するようにインデックスを更新することも含む。さらに別の実施の形態では、第1の要求に応答して、置き換えられるデータセグメントのデータを無効としてマークすることによってインデックスを更新することは、第1のデータ及び第2のデータに置き換えられるデータセグメントの部分が無効であることを指示し、且つ第1のデータ及び第2のデータに置き換えられないデータセグメントの部分が有効であることを指示するリストを生成することも含む。
一実施の形態では、第1の記憶要求及び/又は第2の記憶要求のうちの1つ又は複数は、概ねデータを伴うことなく受信される。別の実施の形態では、第1の追加データ記憶コマンド及び/又は第2の追加データ記憶コマンドのうちの1つ又は複数は、概ねデータを伴うことなく、データ記憶デバイスに送信される。別の実施の形態では、記憶要求及び追加データ記憶コマンドのうちの少なくとも一方が、ダイレクトメモリアクセス(「DMA」)プロセス又はリモートDMA(「RDMA」)プロセスを開始し、それによりデータセグメントのデータをデータ記憶デバイスに転送する。
本発明による、記憶要求を調整するためのシステムも提示される。そのシステムは、データ記憶デバイス、及びデータ記憶デバイスを制御する記憶コントローラによって具現される場合がある。詳細には、記憶コントローラは、一実施形態では、追加/無効化モジュール及び再構成モジュールを含む。
追加/無効化モジュールは、第1の記憶要求を受信するのに応答して第1の追加データ記憶コマンドを生成する。第1の記憶要求は、既存のデータを第1のデータで上書きする要求を含む。既存のデータは、データ記憶デバイス上に格納されるデータセグメントの一部である。追加/無効化モジュールは、第2の記憶要求を受信するのに応答して第2の追加データ記憶コマンドを生成する。第2の記憶要求は、データセグメントの既存のデータを第2のデータで上書きする要求を含む。第1のデータ及び第2のデータは、データセグメント内の共通オフセットに格納されることになる重複するデータの少なくとも一部を含む。第2の記憶要求は、第1の記憶要求後に受信される。追加/無効化モジュールは、第1の記憶要求に応答して、データセグメントのデータを無効としてマークすることによって、インデックスを更新する。無効とマークされたデータは、第1のデータに置き換えられるデータを含む。追加/無効化モジュールは、第2の記憶要求に応答して、データセグメントのデータを無効としてマークすることによって、インデックスを更新する。無効とマークされたデータは、第2のデータに置き換えられるデータを含む。
再構成モジュールは、第1のデータに基づいてインデックスを更新すると共に、第2のデータに基づいてインデックスを更新する再構成モジュールであって、該更新されるインデックスは、該インデックスが第2のデータに基づいて更新される前に第1のデータに基づいて更新されるときに、又は該インデックスが第1のデータに基づいて更新される前に第2のデータに基づいて更新されるときに、第2のデータが第1のデータよりも最新であることを指示するように編成される。追加/無効化モジュールがインデックスを更新し終わるまで、該追加/無効化モジュールは、インデックスへのアクセスを防ぎ、再構成モジュールがインデックスを更新し終わるまで、該再構成モジュールは、インデックスへのアクセスを防ぐ。
一実施の形態では、データ記憶デバイスは固体記憶デバイスである。別の実施の形態では、第1の記憶要求及び第2の記憶要求は別々の要求側デバイスから受信され、別々の要求側デバイスはクライアント又はサーバとすることができる。別の実施の形態では、要求側デバイスのうちの少なくとも1つはクライアントであり、追加/無効化モジュール及び再構成モジュールはクライアントから独立して動作する。別の実施の形態では、本システムはサーバを備え、記憶コントローラはサーバ内にある。
本発明による、記憶要求を調整するための方法も提示される。開示される実施形態における方法は、上記の装置及びシステムの動作に関して上記で提示された機能を実行するのに必要なステップを概ね含む。一実施形態では、その方法は、データ記憶デバイス上に格納されるデータセグメントの既存のデータを第1のデータで上書きする第1の記憶要求を受信するのに応答して、第1の追加データ記憶コマンドを生成することを含む。その方法は、データセグメントの既存のデータを第2のデータで上書きする第2の記憶要求を受信するのに応答して、第2の追加データ記憶コマンドを生成することを含む。第1のデータ及び第2のデータは、データセグメント内の共通オフセットに格納されることになる重複するデータの少なくとも一部を含む。第2の記憶要求は、第1の記憶要求後に受信される。
本方法は、第1の記憶要求に応答して、データセグメントのデータを無効としてマークすることによって、インデックスを更新することを含み、無効とマークされたデータは、第1のデータに置き換えられるデータを含む。本方法は、第2の記憶要求に応答して、データセグメントのデータを無効としてマークすることによって、インデックスを更新することを含み、無効とマークされたデータは、第2のデータに置き換えられるデータを含む。一実施形態では、第1の記憶要求又は第2の記憶要求のための追加データ記憶コマンドが生成されると共に、第1の記憶要求及び第2の記憶要求のうちの一方に対して、データセグメントのデータを無効としてマークすることによってインデックスが更新されるまで、インデックスへのアクセスを防ぐ。
本方法は、第1のデータに基づいてインデックスを更新すること、及び第2のデータに基づいてインデックスを更新することを含む。更新されるインデックスは、インデックスが第2のデータに基づいて更新される前に第1のデータに基づいて更新されるか、又はインデックスが第1のデータに基づいて更新される前に第2のデータに基づいて更新されるときに、第2のデータが第1のデータよりも最新であることを指示するように編成される。第1のデータ及び第2のデータのうちの一方に基づいてインデックスが更新されるまで、インデックスへのアクセスを防ぐ。
本明細書全体を通じて、特徴、利点又は類似の言葉を参照することは、本発明で実現される場合がある特徴及び利点の全てが、本発明の任意のただ1つの実施形態の中にあるべきであること、又はあることを暗示しない。むしろ、特徴及び利点を参照する言葉は、1つの実施形態に関連して記述される具体的な特徴、利点又は特性が本発明の少なくとも1つの実施形態に含まれることを意味するものと理解されたい。したがって、本明細書全体を通じて、特徴、利点及び類似の言葉が検討される際に、同じ実施形態が参照される場合があるが、必ずしも同じ実施形態が参照されなくてもよい。
さらに、本発明の上記の特徴、利点及び特性は、1又は複数の実施形態において任意の適切な方法で組み合わせられる場合がある。或る特定の実施形態の具体的な特徴又は利点のうちの1又は複数を用いることなく本発明が実施される場合があることは当業者には理解されよう。他の事例では、或る特定の実施形態において、さらに別の特徴及び利点が認識される場合があるが、それらは本発明の全ての実施形態の中に存在しない場合がある。
本発明のこれらの特徴及び利点は、以下の説明及び添付の特許請求の範囲からさらに十分に明らかになるか、又は以下に記述されるように本発明を実施することにより明らかになるであろう。
本発明による、記憶要求を追加データコマンドに変換するためのシステムの一実施形態を示す概略ブロック図である。 本発明による、記憶要求を追加データコマンドに変換するための装置の一実施形態を示す概略ブロック図である。 本発明による、記憶要求を追加データコマンドに変換するための代替の装置の一実施形態を示す概略ブロック図である。 本発明による、記憶要求を追加データコマンドに変換するための方法の一実施形態を示す概略フロー図である。 本発明による、記憶要求を追加データコマンドに変換するための別の方法の一実施形態を示す概略フロー図である。 本発明による、記憶要求を追加データコマンドに変換する一例の概略ブロック図である。 本発明による、仮想アドレス及び物理アドレスを効率的にマッピングするための装置の一実施形態を示す概略ブロック図である。 本発明による、仮想アドレス及び物理アドレスを効率的にマッピングするための装置の別の実施形態を示す概略ブロック図である。 本発明による、仮想アドレス及び物理アドレスを効率的にマッピングするための方法の一実施形態を示す概略フロー図である。 本発明による、仮想アドレス及び物理アドレスを効率的にマッピングするための方法の別の実施形態を示す概略フロー図である。 本発明による、順方向マップ及び逆方向マップの一例の概略ブロック図である。 本発明による、記憶要求を調整するための装置の一実施形態を示す概略ブロック図である。 本発明による、記憶要求を調整するための装置の別の実施形態を示す概略ブロック図である。 本発明による、記憶要求を調整するための方法の一実施形態を示す概略フロー図である。 本発明による、記憶要求を調整するための方法の別の実施形態を示す概略フロー図である。 本発明による、記憶要求を調整するための装置の一例を示す概略ブロック図の第1の部分の図である。 本発明による、記憶要求を調整するための装置の一例を示す概略ブロック図の第2の部分の図である。 本発明による、記憶要求を調整するための装置の一例を示す概略ブロック図の第3の部分の図である。
本発明の利点が容易に理解されるようにするために、上記で略述された本発明のさらに詳細を、添付の図面において示される具体的な実施形態を参照して説明する。これらの図面が本発明の一般な実施形態を示すにすぎないこと、したがって、本発明の範囲を制限するものと見なされるべきでないことを前提として、添付の図面を参照して、本発明をさらに具体的にかつ詳細に記述及び説明する。
本明細書において記述される機能単位の多くは、それらの機能単位の実現の独立性をより詳細に強調するために、モジュールと呼ばれている。例えば、モジュールは、カスタムVLSI回路若しくはゲートアレイを含むハードウエア回路、論理チップ、トランジスタのような既製の半導体、又は他の個別部品として実現される場合がある。また、モジュールは、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブル論理デバイス等のプログラマブルハードウエアデバイスにおいて実現される場合もある。
また、モジュールは、種々のタイプのプロセッサによって実行するためのソフトウエアにおいて実現される場合もある。例えば、実行可能コードから成る既知のモジュールは、コンピュータ命令(インストラクション)からなる1又は複数の物理ブロック又は論理ブロックを含む場合があり、それらのブロックは、例えば、オブジェクト、手順又は関数として編成される場合がある。それにもかかわらず、既知のモジュールの実行可能コードは物理的に一緒に配置される必要はなく、異なるロケーションに格納される異種の命令を含む場合があり、それらの命令は論理的に共に結合されるときに、モジュールを構成し、そのモジュールのための所定の目的を果たす。
実際には、実行可能コードのモジュールは単一の命令、又は多数の命令とすることができ、いくつかの異なるコードセグメントにわたって、異なるプログラム間で、さらにはいくつかのメモリデバイスにわたって分散される場合さえある。同様に、本明細書において、モジュール内で演算データが特定され、示される場合があり、任意の適切な形において具現され、任意の適切なタイプのデータ構造内に編成される場合がある。それらの演算データは、単一のデータセットとして集められる場合があるか、又は異なる記憶デバイスを含む、異なるロケーションにわたって分散される場合があり、少なくとも部分的には、システム又はネットワーク上に単なる電子信号として存在する場合もある。1つのモジュール又は1つのモジュールの部分がソフトウエアにおいて実現される場合、そのソフトウエア部分は1又は複数のコンピュータ可読媒体上に格納される。
本明細書全体を通じて、「一実施形態」、「1つの実施形態」又は類似の文言に言及することは、その実施形態に関連して記述される特定の特徴、構造又は特性が本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体を通じて、「一実施形態において」、「1つの実施形態において」という言い回し又は類似の文言が現れるとき、全て同じ実施形態を参照する場合があるが、必ずしも同じ実施形態を参照しなくてもよい。
コンピュータ可読媒体(コンピュータ読取可能記憶媒体)は、デジタル処理装置上に機械可読命令を格納することができる任意の形のものである。コンピュータ可読媒体は、伝送線路、コンパクトディスク、デジタルビデオディスク、磁気テープ、ベルヌーイドライブ、磁気ディスク、パンチカード、フラッシュメモリ、集積回路、又は他のデジタル処理装置メモリデバイスによって実現される。
さらに、本発明の上記の特徴、構造又は特性は、1又は複数の実施形態において任意の適切な方法で組み合わせることができる。以下の説明において、本発明の実施形態を完全に理解してもらうために、プログラミング、ソフトウエアモジュール、ユーザ選択、ネットワークトランザクション、データベース問い合わせ、データベース構造、ハードウエアモジュール、ハードウエア回路、ハードウエアチップ等の例のような多数の具体的な細部が提供される。しかしながら、本発明が、それらの具体的な細部のうちの1又は複数を用いることなく、又は他の方法、構成要素、材料等を用いて実施される場合があることは、当業者には理解されよう。他の事例では、本発明の態様を分かりにくくするのを避けるために、既知の構造、材料又は動作は詳しく説明しない。
本明細書に含まれる概略的なフロー図は、包括的には、論理フロー図として記述される。したがって、図示される順序及び表示されるステップは、提示される方法の一実施形態を示す。示される方法の1又は複数のステップ、又はその部分に対して機能、論理、又は効果に関して等価である他のステップ及び方法が考えられる場合がある。さらに、用いられるフォーマット及び記号は、その方法の論理ステップを説明するために提供されており、その方法の範囲を制限しないものと理解されたい。フロー図において種々の矢印タイプ及びラインタイプが用いられる場合があるが、それらは、対応する方法の範囲を制限しないものと理解されたい。実際には、いくつかの矢印及び他の結合子は、その方法の論理的な流れを指示するためにのみ用いられる場合がある。例えば、矢印が、図示される方法の列挙されるステップ間の明示されていない持続時間の待機又は監視を指示する。さらに、特定の方法が行なわれる順序は、図示される対応するステップの順序に厳密に従う場合も、従わない場合もある。
図1は、本発明による、記憶要求を追加データコマンドに変換し、かつ物理アドレス及び仮想アドレスを効率的にマッピングするためのシステム100の一実施形態を示す概略的なブロック図である。システム100は記憶デバイス102を含み、その記憶デバイスは、記憶コントローラ104及びデータ記憶デバイス106を含む。記憶デバイス102は、コンピュータネットワーク112を通じて1又は複数のクライアント110に接続されるサーバ108内にある。
一実施形態では、システム100は、記憶コントローラ104及びデータ記憶デバイス106を備える記憶デバイス102を含む。記憶コントローラ104及びデータ記憶デバイス106は、記憶デバイス102である単一の筐体内に収容される場合がある。別の実施形態では、記憶コントローラ104及びデータ記憶デバイス106は離れて位置する。記憶コントローラ104は一般には、データ記憶デバイス106のためのデータ記憶及びアクセスを制御する。データ記憶デバイス106は、一実施形態において、データ記憶デバイス106の全体にわたって、データへの概ね同様のアクセス回数を有することができる。例えば、データ記憶デバイス106は、フラッシュメモリ、ナノランダムアクセスメモリ(「ナノRAM又はNRAM」)、磁気抵抗RAM(「MRAM」)、ダイナミックRAM(「DRAM」)、相変化RAM(「PRAM」)等のような固体記憶デバイスとすることができる。また、データ記憶デバイス106は、ハードディスクドライブ、コンパクトディスク(「CD」)ドライブ、光ドライブ等とすることもできる。
図1において、データ記憶デバイス106は単一の記憶デバイスとして示されるが、データ記憶デバイス106は2つ以上の記憶デバイスを含んでもよい。データ記憶デバイス106は、RAID(「redundant array of independent device」)、JBOD(「just a bunch of disks」)等として構成される場合もある。データ記憶デバイス106は、固体記憶装置のような、高性能の短期記憶装置として構成される1又は複数のデータ記憶デバイス106、及びハードディスクドライブのような、低性能の長期記憶装置として構成される1又は複数のデータ記憶デバイス106で構成される場合がある。この実施形態では、記憶コントローラ104は、種々のタイプのデータ記憶デバイス106を管理することができる。当業者は、他のタイプ及び構成のデータ記憶デバイス106も使用可能であることは理解するであろう。
記憶コントローラ104は、1又は複数のデータ記憶デバイス106を制御する場合があり、RAIDコントローラ、ストレージエリアネットワーク(「SAN」)のためのコントローラ等とすることができる。記憶コントローラ104は、1又は複数のサブコントローラを含む場合がある。記憶コントローラ104は、データ記憶デバイス106と一体に構成されるか又は離間して位置する場合があり、すなわち、一体化又は分散化される場合がある。例えば、記憶コントローラ104の一部はマスターコントローラとすることができ、記憶コントローラ104の他の部分はサブコントローラ又はスレーブコントローラとすることができる。マスターコントローラは、他のサブコントローラと通信するデバイスとすることができ、他のサブコントローラがさらにデータ記憶デバイス106を制御するか、又はマスターコントローラは、スレーブコントローラだけでなく、データ記憶デバイス106も制御するマスターコントローラとすることができる。当業者は、他の形及び機能の記憶コントローラ104を採用可能であることを理解するであろう。
一実施形態では、記憶デバイス102はサーバ108に含まれる。種々の実施形態において、記憶コントローラ104又はデータ記憶デバイス106のいずれか一方、又はその両方がサーバ108の外部に配置される場合がある。PCI-e(「peripheral component interconnect express」)バス、シリアルATA(「Serial Advanced Technology Attachment」)バス等のシステムバスを介して、サーバ108が記憶コントローラ104に接続されるか、又は記憶コントローラ104がデータ記憶デバイス106に接続される。別の実施形態では、固体記憶デバイス102は、サーバ108の外部にあり、USB(「universal serial bus」)接続、IEEE(「Institute of Electrical and Electronics Engineers」)1394バス(「ファイアワイヤ」)等を通じて接続される。他の実施形態では、PCI(「peripheral component interconnect」)エクスプレスバスを用いて、又はイーサネット(登録商標)、ファイバチャネル、インフィニバンド、若しくはPCIe−AS(「PCI Express Advanced Switching」)等の外部の電気的若しくは光学的なバス延長又はネットワーキングソリューションを用いて、記憶デバイス102がサーバ108に接続されるか、又は記憶コントローラ104がデータ記憶デバイス106に接続される。当業者は、多種多様の実現可能な接続方法を理解されるであろう。
サーバ108は、パーソナルコンピュータ、ラップトップコンピュータ、メインフレームコンピュータ、ワークステーション、電子デバイス等である。サーバ108は、クライアント110を含むか、又はコンピュータネットワーク112を介してクライアント110に接続される。システム100が記憶デバイス102に記憶要求を送信することができる限り、システム100は、任意の数のコンピュータ、クライアント110、コンピュータネットワーク112又は他の電子デバイスを含む。クライアント110は、サーバ108上で、或いは別のコンピュータ又は電子デバイス上で実行されるプロセスである。また、クライアント110は、パーソナルコンピュータ、ラップトップコンピュータ、メインフレームコンピュータ、ワークステーション、電子デバイス等とすることもできる。当業者は、記憶デバイス102に記憶要求を送信することができるシステム100の他の構成要素及び構成を理解されるであろう。
図2は、本発明による、記憶要求を追加データコマンドに変換するための装置200の一実施形態を示す概略的なブロック図である。装置200は、記憶要求受信モジュール202と、翻訳モジュール204と、マッピングモジュール206とを含み、それらのモジュールが以下に説明される。装置200は、図2において、記憶コントローラ104内にあるものとして示されるが、モジュール202、204、206の全て又はそのうちの一部が記憶コントローラ104の外部に配置されてもよく、システム100の種々の構成要素を通じて分散されていてもよい。
装置200は、要求側デバイスから記憶要求を受信する記憶要求受信モジュール202を含む。一実施形態では、要求側デバイスはサーバ108である。別の実施形態では、要求側デバイスはクライアント110である。要求側デバイスは、記憶要求を送信することができる任意のデバイスである。
記憶要求は、ファイル又はオブジェクトのデータセグメントをデータ記憶デバイス106上に格納するための要求を含む。記憶要求は、オブジェクト要求、ファイル要求、論理ブロック記憶要求等である。記憶要求は、データセグメントのための1又は複数のソースパラメータを含む。ソースパラメータは、データセグメントのデータが導出されたファイル又はオブジェクトの仮想アドレスを含む。一般には、仮想アドレスは、ファイル又はオブジェクトのための識別子である。仮想アドレスは、ファイル名、オブジェクト名、又は記憶デバイス102に接続されるファイルシステムに知られている他の識別子である。
論理アドレス及び論理アドレス空間と仮想アドレス及び仮想アドレス空間とは区別される。この文脈において、仮想アドレス空間は、間接アドレス指定の取り得る最も広い範囲を含むことを意図している。本明細書において用いられるときに、仮想アドレス空間は、1又は複数の仮想アドレス空間、1又は複数の論理アドレス空間、1又は複数のメモリ空間、1又は複数の論理ブロックアドレス空間、1又は複数の固定ブロックアドレス空間等を同時に含む場合がある。
例えば、クライアントは、複数の仮想オペレーティングシステムを実行している場合がある。この実施形態では、各仮想オペレーティングシステムは1つの仮想記憶空間を有し、仮想記憶空間はそれぞれ、そのデバイスの仮想アドレス空間及び仮想−物理マッピングに従って、記憶デバイス内に格納されるデータにマッピングされる。別の例では、いくつかのクライアント内のオブジェクトが、多対1の関係において、格納される同じデータに独立してマッピングされ、クライアントに特有の仮想アドレスを用いて共用データを参照する。本明細書においては1対1の関係を例示するが、それらの方法、装置及びシステムは、多対1、1対多、さらには多対多の仮想−物理アドレスマッピングをサポートするものである。
仮想−物理マッピング法は、識別情報、アドレス、長さ及びメタデータ変換における広い間接化をサポートすることによって、疎なアドレス指定(sparse addressing)(物理アドレス空間の過剰供給)、シンプロビジョニング(thin provisioning)、仮想区画及びデータ変換(例えば、圧縮、暗号化)をサポートすることが意図されている。
本明細書においては、仮想IDは、クライアントの仮想空間内に格納されるデータエンティティを一意に特定するものとする。より具体的には、仮想アドレスは、仮想エンティティのためのデータをアドレス指定する。例えば、仮想アドレスは、仮想IDと、データセット内のオフセットとを含む。別の例では、仮想アドレスは、仮想IDと、仮想エンティティ内のインデックスとを含み、そのインデックスは、不均一な(例えば、可変長の)記録の構造内の1つの記録である。
一実施形態では、装置200は論理ブロック記憶デバイスをエミュレートし、ソースパラメータは、記憶要求を通じて要求側デバイスによってデータセグメントが格納されるように要求される1又は複数の論理ブロックアドレスを含む。この実施形態では、仮想アドレスは、論理ブロックアドレスを含む。例えば、記憶要求が論理ブロック記憶要求である場合には、要求側デバイスは、データセグメントがデータ記憶デバイス106内に格納されることが意図される場所を指示する。論理ブロックアドレスは、RAIDグループ番号、データ記憶デバイス識別子、区画、シリンダ番号、セクタ、オフセット等のような情報を含む。当業者は、論理ブロックアドレスに含まれる場合がある他の要素を理解されるであろう。
記憶要求は、データセグメントを2つ以上のロケーションに格納するための要求を含むか、又はデータセグメントの部分を2つ以上のロケーションに格納するための要求を含む場合があるので、記憶要求は2つ以上の論理ブロックアドレスを含むことがある。記憶要求が論理ブロックアドレスを含む場合、その記憶要求は一般には、1又は複数の論理ブロックアドレスに対応する1又は複数のオフセット及びデータ長も含む。論理ブロックが固定のサイズを有する場合には、オフセット及びデータ長は暗示される。オフセットは一般には、データセグメントが、一般にはファイル又はオブジェクトの先頭から開始して、そのファイル又はオブジェクトのどの位置にあるかである。データ長は一般には、記憶デバイスのどのくらいの量が、論理ブロックアドレスに関連付けられるデータセグメント、又はデータセグメントの部分によって占有されることになるかを含む。一般には、オフセット及びデータ長は、記憶コントローラ104及びデータ記憶デバイス106が理解することができる或る単位を用いて表される。例えば、オフセット及びデータ長は、バイト、ブロック、セクタ、又はデータ記憶デバイス106を分割するために用いられる他の単位によって表される場合がある。当業者は、データセグメントの全体及び部分のためのオフセット及びデータ長を表す他の方法を理解されるであろう。
システム100は翻訳モジュール204を含み、翻訳モジュールは、記憶要求を1又は複数の記憶コマンドに翻訳し、この場合少なくとも1つの記憶コマンドが追加データ記憶コマンドである。各追加データ記憶コマンドは、データ記憶デバイス106に、そのデータセグメントから生成されたデータ及び1又は複数のソースパラメータを1又は複数の追加点に格納するように指示する。ソースパラメータはデータと共に格納され、ソースパラメータのうちの少なくとも1つが仮想アドレスである。
データ記憶デバイス106はデータをデータパケットとして格納することが好ましい。データパケットは、データパケットヘッダと共に、データセグメントのデータを含む。一実施形態では、データパケットヘッダはソースパラメータを含む。別の実施形態では、ソースパラメータは、データと同時に格納される。例えば、データは、データ記憶デバイス上の1つのロケーションにある追加点に順次に格納され、一方、ソースパラメータは、データ記憶デバイス内の別のロケーションに同時にかつ順次に格納される。その実施形態では、ソースパラメータ及びデータが格納されるシーケンスを用いて、読出し動作中に、又はデータ及びソースパラメータが検索される他の動作中に、データ及びソースパラメータを対にすることができる。
一実施形態では、データ記憶デバイス106は、ページ、区分又は他の指定された領域内にデータを格納し、以前に格納されたデータの終わりの直後にある次に利用可能なアドレスに追加点を移動し、データをその追加点に格納し、格納されたばかりのデータの直後にある次に利用可能なアドレスに追加点を再び移動すること等によって、データ(又はデータパケット)を順次に格納する。ページ又は区分が一杯になるまで、ページ、区分等にデータが格納され、その後、追加点が移動され、データが次のページ、区分等に格納される。追加点は、記憶デバイス102によって、特定の要求に応答して独立して移動される。
データを順次に格納することは固体記憶デバイスにとって特に好都合である。なぜなら、データを均等に分散し、ホットスポット、又は他のアドレスよりも高い頻度で書き込まれるアドレスを防ぐことができるためである。データを順次に格納することは、シーク時間を削減し、関連する消去を伴う読み出し・変更・書込み動作を解消し、それゆえ、固体記憶デバイスのデータ信頼性を高め、耐用年数を延ばすので、固体記憶デバイスにとって特に好都合である。また、固体記憶デバイスにおける順次記憶は一般には、読出しアクセス時間にも悪影響を及ぼさない。なぜなら、一般な固体記憶デバイスは、固体記憶デバイス内のどの場所に格納されたデータに対しても概ね同じ読出しアクセス時間を有するためである。この特徴によって、データ記憶デバイス106は、ランダムアクセスデバイスをエミュレートすることができるようになり、それにより、読出し性能に悪影響を及ぼすことなく、書込みシーク時間に起因するレイテンシを実効的に削減し、かつ固体記憶デバイス106の媒体信頼性を高め、耐用年数を延ばすことができる。
順次記憶は、データ記憶デバイス106にとって他の利点を有する。アクセス時間に関連するような順次記憶の利点は、いずれもDavid Flynn等によって2007年12月6日に出願された「Apparatus System, and Method for Managing Commands of Solid-State Storage Using Bank Interleave」と題する米国特許出願第11/952,095号、及び「Apparatus System, and Method for Storage Space Recovery In Solid-State Storage」と題する米国特許出願第11/952,101号(これ以降、「記憶空間回復出願」)にさらに十分に説明されており、それらの特許出願はいずれも参照により本明細書に援用される。
1つの大きな利点は、データを順次に格納し、かつデータと共にソースパラメータを(パケットヘッダ内に、又は同時に)格納することによって、データ記憶デバイス106がログ記憶デバイスになることである。ログ記憶デバイスは一般には、データ記憶のシーケンス又は順序を追跡し、第2のデータパケット後に第1のデータパケットが格納される場合でも、この記憶順序がわかり、確定することができるようにする。
一実施形態では、データが格納されることになる追加点はコンテキストに依存しない。データが順次に格納されるのに対して、記憶要求と共に受信されるデータがデータ記憶ログ内の次に利用可能な物理的なロケーションに格納されることができるように、追加点が記憶デバイスによって保持される場合がある。この追加点に対する外部コンテキストは存在しない。クライアントとの明示的又は暗示的な関係によって、データがデバイスの異なる物理的領域内に格納されないことを意味する。例えば、第1のクライアントが第1の区画を用いてデバイスにアクセスし、第2のクライアントが第2の区画を用いてデバイスにアクセスする場合を考える。これらの区画は厳密には、仮想アドレス指定方式内の論理構成体である。2つの異種の区画内にある2つのクライアントのためのデータはそれでも順次に追加される。このようにして、そのデバイスはオープンファイルの数を制限しないか、又はそれにより、そのデバイスに同時にアクセスすることができるクライアントの数を制限しない。さらに別の利点は、記憶空間が最適な効率で使用され、必然的に、シンプロビジョニングのような容量利用を改善する記憶方法をサポートすることである。
追加点は一般には、以前に格納されたデータ又はデータパケットの直後のアドレスに設定されるが、他の実施形態では、ページ、消去ブロック、区分等の開始アドレスに設定され、使用不可能であるアドレスブロックの直後に設定される場合等もある。一実施形態では、データ記憶デバイス106は追加点のアドレスを保持し、翻訳モジュール204は単に、追加点にデータを格納するようにデータ記憶デバイス106に指示する追加データ記憶コマンドを生成するにすぎない。データが格納されると、その後、データ記憶デバイス106は、データが格納された物理アドレスをマッピングモジュール206に、或いは別のデバイス又はモジュールに報告する。別の実施形態では、翻訳モジュール204は、データ記憶デバイス106内の追加点の物理アドレスを知っているか又は保持し、追加点の物理アドレスを用いて追加データ記憶コマンドを作成する。
一実施形態では、追加点、すなわち、現在の消去領域が満たされた後に書き込まれるべき次の消去領域(又は消去ブロック)を指示する消去領域ポインタは、予め待ち行列に入れられ、データ記憶デバイス106又は翻訳モジュール204によって、その待ち行列から取り出される。別の実施形態では、追加点(消去領域ポインタ)は、所定のパターンに従って部分領域間で移動される。所定のパターンは、領域シーケンス情報を含むことができる。
追加データ記憶コマンドは一般には、追加点においてデータを格納するためのコマンドである。そのデータはデータセグメントから作成され、一般には、データセグメントのデータはそのデータセグメントに及ぶ。翻訳モジュール204は1又は複数の追加データ記憶コマンドを作成する場合がある。例えば、データセグメントが分割され、データの2以上の部分が連続していないロケーションに格納される場合には、2以上の追加データ記憶コマンドが必要とされる。別の実施形態では、単一の追加データ記憶コマンドが、連続していない複数のロケーションにデータセグメントを格納することができる。
データセグメントのデータは種々のソースによってもたらされる。一実施形態では、データは、新しく、かつデータ記憶デバイス106上に以前に格納されていないファイルからのデータである。別の実施形態では、データセグメントのデータはデータ記憶デバイス106から読み出されており、データ記憶デバイス106内にデータパケットとして再びデータを格納する前に変更されている。別の実施形態では、データセグメントのデータは、記憶回復(ガーベージコレクション)動作において回復される別の消去領域(消去ブロック等)、ページ、区画等からもたらされる。その実施形態では、データは有効データである場合、将来のデータ記憶のために消去領域を回復する動作を行う前に、選択された消去領域から移動される。別の実施形態では、データは、インデックス又はマップを保護するために格納されているインデックスデータ又はマッピングデータである。当業者は、記憶要求受信モジュール202によって受信されるデータセグメント内に存在する場合がある他のデータを理解されよう。
種々の実施形態において、翻訳モジュール204は、記憶要求に関連する他のコマンドを作成する。例えば、翻訳モジュール204は、セット追加点コマンド、読出しコマンド、消去コマンド、リセットコマンド、移動コマンド、同期コマンド、フラッシュコマンド、読出し制御レジスタコマンド、変更制御レジスタコマンド、プログラムページコマンド、消去ブロックに対する消去コマンド、転送コマンドリストコマンド、要求状態コマンド等を作成する。他のコマンドは一般には、記憶要求をサービスするために、追加データ記憶コマンドを補う。当業者は、記憶要求をサービスするために翻訳モジュール204によって作成される他の関連するコマンド及びコマンドのシーケンスを理解されであろう。
一実施形態では、記憶要求受信モジュール202によって受信される記憶要求は、実質的にデータを含むことなく受信される。この場合、記憶要求はデータを転送することを求める要求であり、概ねデータを含まない。別の実施形態では、追加データ記憶コマンドは、実質的にデータを伴うことなく、データ記憶デバイス106に送信される。この場合、追加データ記憶コマンドはデータを転送するためのコマンドであり、概ねデータを含まない。さらに別の実施形態では、ソースパラメータは、記憶要求の結果としてデータセグメントが読み出されるホスト又はクライアント110内の1又は複数の物理メモリアドレスを含む。その実施形態では、記憶要求、すなわち、追加データ記憶コマンドのような翻訳モジュール204によって作成されるコマンドは、ダイレクトメモリアクセス(「DMA」)又はリモートダイレクトメモリアクセス(「RDMA」)プロセスを開始又は要求してデータセグメントのデータをデータ記憶デバイス106に転送する。例えば、追加データ記憶コマンドによってDMAプロセスが、クライアント110からデータ記憶デバイス106内の或るロケーションへのDMAデータに対して開始することができる。当業者は、DMA又はRDMAプロセスを開始又は要求する他の方法を理解するであろう。
一般なDMA又はRDMAプロセスでは、データ記憶デバイス106が、書込み動作中にホストのメモリからデータを取り出し、読出し動作中にホストにデータを入れる。ホストは、データがデータ記憶デバイス10上に格納されることになる場所を知る必要はないないので、これは好都合である。ホストは、書き込まれるデータが取り出されることになる場所、又は読出しのためのデータが格納されることになる場所を、記憶デバイス102に知らせることができるにすぎない。
装置200はマッピングモジュール206を含み、該マッピングモジュールは、データセグメントの1又は複数のソースパラメータを、データ記憶デバイス106がデータセグメントのデータ及びソースパラメータを追加したデータ記憶デバイス106内の1又は複数のロケーションにマッピングする。ソースパラメータは、データセグメントに関連付けられる仮想識別子、デバイス識別子、区画識別子、データセグメントの1又は複数のデータパケットの長さ、記憶要求前又は後にデータセグメントが位置するホストのメモリ内の1又は複数のメモリロケーション、1又は複数のメモリロケーション内のデータの1又は複数の長さ、データセグメントの属性、データセグメントのメタデータ、データセグメントの制御パラメータ等を含む。
データセグメントのソースパラメータとデータセグメントのデータが格納された物理的なロケーションとの間のマッピングによって、装置200は、データが順次に格納されるデータ記憶デバイス106を用いて、ランダムアクセスデバイスをエミュレートすることができるようになる。記憶デバイス102、すなわち装置200を有する記憶コントローラ104は、ランダムアクセスデバイスとして接続され、要求を区別することなく、オブジェクト要求、ファイル要求及び論理ブロック記憶要求を受信することができるので、これは好都合である。装置200は種々の要求からのデータを平等に取り扱い、記憶要求において受信される論理ブロックアドレスを仮想アドレスと概ね同じようにしてマッピングする。言い換えると、論理ブロック記憶要求において受信される論理ブロックアドレス、データ長等は、そのデータ要求のデータがデータ記憶デバイス106上に格納されるロケーションの物理アドレスにマッピングされることになる仮想アドレスになる。
図3は、本発明による、記憶要求を追加データコマンドに変換するための代替の装置300の一実施形態を示す概略的なブロック図である。装置300は、記憶要求受信モジュール202、翻訳モジュール204及びマッピングモジュール206を含み、それらのモジュールは、図2の装置200に関連して上述したものと実質的に同じである。装置300は、記憶応答受信モジュール302、応答送信モジュール304、圧縮モジュール306、インデックス再構築モジュール308、コマンド並べ替えモジュール310、要求並べ替えモジュール312、ガーベージコレクションモジュール314を含み、それらのモジュールは以下で説明される。装置300は、図3において記憶コントローラ104内にあるものとして示されるが、モジュール202、204、206、302〜314の全て、又はその一部が記憶コントローラ104の外部に配置されてもよく、システム100の種々の構成要素を通じて分散されてもよい。モジュール202〜206に加えて、装置300の302〜314は、クライアント110から独立して動作することができる。
一実施形態では、装置300は記憶応答受信モジュール302を含み、該記憶応答受信モジュールは、1又は複数の記憶コマンド応答をデータ記憶デバイス106から受信する。記憶コマンド応答は、データ記憶デバイス106がデータセグメントのデータを追加した1又は複数のロケーションを含む。該実施形態では、データ記憶デバイス106がデータを格納したロケーションは、データ記憶デバイス106が応答し、データが追加されたロケーションを指示するまで、装置300にはわからない。データ記憶デバイス106がデータを格納した後まで、データ記憶デバイス106がデータを追加した物理的なロケーションがわからないとき、マッピングモジュール206は、一般には1又は複数の記憶コマンド応答によって、データ記憶デバイス106から、データ記憶デバイス106がデータセグメントのデータを追加した1又は複数のロケーションを受信する。別の実施形態では、上記のように、翻訳モジュール204が、データセグメントのデータが格納される物理アドレスを追跡又は管理し、マッピングモジュール206は、データが格納されたロケーションの物理アドレスを翻訳モジュール204から受信する。
別の実施形態では、装置300は応答送信モジュール304を含み、応答送信モジュールは、記憶要求応答を要求側デバイスに送信する。記憶要求応答は、記憶要求の実行に関する情報を含む。例えば、記憶要求応答は、記憶要求の実行に成功したこと、又は他の状態情報を指示する。別の実施形態では、記憶要求応答は、データ及び関連するソースパラメータが格納された場所を指示する情報を含む。装置300がランラムアクセスデバイスをエミュレートしている場合には、この実施形態は望ましくないことがある。一実施形態では、記憶要求受信モジュール302が、データセグメントのデータ及び関連するソースパラメータの全てをデータ記憶デバイス106上に格納するのに成功したことを指示する記憶コマンド応答を受信した後に、応答送信モジュール304は記憶要求応答を送信する。別の実施形態では、応答送信モジュール304は、記憶コマンド応答を受信するのとは無関係に、記憶要求応答を送信する。当業者は、記憶要求応答において送信される他の情報、及びその応答を送信するタイミングを理解されるであろう。
一実施形態では、装置300は圧縮モジュール306を含み、圧縮モジュールは、データ記憶デバイス106上に格納する前に、追加データ記憶コマンドのデータを圧縮してデータを形成する。一般には、圧縮モジュール306は、データセグメントのデータの一部(又はデータパケット)のデータ長を変更する。これは、データが格納される場所及び次の追加点に影響を及ぼす。この場合、各追加点は、圧縮が終了するまでわからない場合がある。圧縮が用いられる場合、データ記憶デバイス106、又は圧縮モジュール306の下流にあるモジュールは、一般には、データ記憶デバイス106上のデータの追加点及び物理的なロケーションを追跡し、データが圧縮されるまで待ち、データの一部(又はデータパケット)のデータ長、及び次の追加点を判断する。追加点がわかり、データが圧縮されると、物理アドレスの形をとるロケーションを、データ長と共に、マッピングモジュール206に折り返し報告することができる。一実施形態では、圧縮モジュール306は、一般にはデータのためのデータパケットヘッダ内に、圧縮されたデータと共に圧縮情報を格納する。当業者は、データ記憶デバイス106上に格納する前にデータを圧縮する他の特徴及び結果を理解されるであろう。
別の実施形態では、装置300はインデックス再構築モジュール308を含み、インデックス再構築モジュールは、ソースパラメータのうちの1又は複数、及びデータセグメントのデータのデータ記憶デバイス106上の物理的なロケーションを用いて、そのデータセグメントのためにマッピングモジュール206によって生成されたマッピングを再構築する。アクセスの速度を改善するために、そのインデックスは一般には、DRAMのようなより高速の揮発性メモリ内に格納されるが、そのメモリは、電源障害、システムリセット等に起因してデータが失われる。順次記憶デバイス内にデータと共にソースパラメータを格納することによって、ソースパラメータと物理アドレス及びデータ長との間のインデックスマッピングを作成し直すためにインデックス再構築モジュール308が使用するシーケンシャルログ内に不揮発性のデータ記録が作成される。
ソースパラメータは、ヘッダ内に、又はデータパケット内の特定のロケーションに、又はデータパケットの最後に格納される。一般には、ソースパラメータは、データパケットのためのヘッダ内に格納される。データ長は一般にはデータヘッダ内に格納され、インデックス又はマッピングが利用することができない場合には、データを順次に探索することができるようにする。一実施形態では、インデックス再構築モジュール308は、ページ又は消去ブロックのような、データ記憶デバイス106の或る領域を追跡してデータセグメントのためのマッピングを含むインデックスを再構築する。
好適には、データ記憶デバイス106上に格納されるデータの物理的なロケーションは、データと共に格納されるソースパラメータと共に、一次仮想−物理マップを構成する。マッピングモジュール206によって生成されるマッピングは、二次仮想−物理マップを構成する。二次仮想−物理マップは一般にはRAM内に格納され、電源供給が断たれた場合には、又は障害が発生した場合には、又は他の理由からマッピングモジュール206によって作成されるマップが無効になった場合には、一次仮想−物理マップを用いて、二次仮想−物理マップを作成し直すことができるようにする。
例えば、インデックス再構築モジュール308は、データ記憶デバイス106内のデータのページの開始時にデータヘッダを調べる。インデックス再構築モジュール308は、第1のデータパケットの物理アドレスを読み出し、その後、ヘッダ内のデータ長を含むソースパラメータを読み出す。その後、インデックス再構築モジュール308は、データパケット内のソースパラメータを、データパケットの物理アドレス及びデータ長にマッピングする。その後、インデックス再構築モジュール308は、データ長を用いて、次のデータパケットに移動する。その後、インデックス再構築モジュール308は再構築プロセスを繰り返し、そのページ内の全てのデータパケットを追跡して、二次仮想−物理マップを構築する。このように、データ記憶デバイス106はシーケンシャルログであり、そのログを用いて、物理アドレスと、仮想識別子、オフセット、論理ブロックアドレス、ソース物理長等のようなソースパラメータとの間のマッピングを含むインデックスを再構築することができる。
一実施形態では、インデックスは周期的にチェックポイントに通されるか又は特定の時点又は特定の状態において不揮発性メモリ内に格納される。各ページがデータで満たされるときの順序がインバンド(in-band)で保持され、その順序はチェックポイントと相互に関連付けられる。インデックスが利用することができなくなる場合には、直前のチェックポイントに対応する最新のインデックスを検索することができる。その後、チェックポイント直後にデータパケットがセーブされるロケーションにおいて開始するログを再生することによって、インデックスが現在のものに導かれる場合がある。インデックスを現在の状態に更新するために、チェックポイント後に格納されたデータパケットから、直前に格納されたデータパケットまでデータパケットを順次に追跡することによって、インデックス再構築モジュール308は同期することができる。都合のよいことに、インデックス再構築モジュール308によれば、チェックポイントを通されたインデックスを、効率的かつ迅速に復元することができるようになる。
一実施形態では、装置300はコマンド並べ替えモジュール310を含み、コマンド並べ替えモジュールは、2つ以上の未処理の追加データ記憶コマンドが実行されるシーケンスを変更する。コマンド並べ替えモジュール310は、コマンドに、より効率的に順序を付けるのに好都合である。一実施形態では、同じデータセグメントのための書込みコマンドが完了するまで、読出しコマンドが延期される場合がある。別の実施形態では、複数のチャネルをサポートする記憶デバイス102によって、第1のチャネルがビジーである間に、そのチャネルに向かうことになっているコマンドを延期することができるようになり、第1のチャネルが利用することができる時点まで、他のチャネルへの他のコマンドを継続することができるようになる。別の実施形態では、記憶要求受信モジュール202が2つ以上の記憶要求を受信するとき、装置300は要求並べ替えモジュール312を含み、要求並べ替えモジュールが、記憶要求がサービスされるシーケンスを並べ替える。コマンド並べ替えモジュール310及び要求並べ替えモジュール312は、コマンド及び要求に、より効率的に順序を付けるのに好都合である。
別の実施形態では、装置300はガーベージコレクションモジュール314を含み、ガーベージコレクションモジュールは、回復を行うことが特定されたデータ記憶デバイス106上の記憶領域から有効データを移動し、次にデータを記憶するためにその記憶領域をデータ記憶デバイス106内の利用可能空間のプールに戻す前に、その記憶領域から無効データを消去する。この実施形態では、マッピングモジュール206は、データ記憶デバイス106内の1又は複数のロケーションに対する有効データのソースパラメータのマッピングを、データ記憶デバイス106が有効データ及び関連するソースパラメータを追加した新たなロケーションに更新する。一実施形態では、回復を行うために選択された領域から有効データを移動することは、他の記憶要求と同じようにして取り扱われる。
図4は、本発明による、記憶要求を追加データコマンドに変換するための方法400の一実施形態を示す概略フロー図である。方法400が開始し、記憶要求受信モジュール202が、クライアント110又はサーバ108のような要求側デバイスから記憶要求を受信する(402)。記憶要求は、ファイル又はオブジェクトのデータセグメントをデータ記憶デバイス106上に格納するための要求を含む。記憶要求は、データセグメントのための1又は複数のソースパラメータを含み、ソースパラメータは少なくとも、記憶要求によってデータセグメントが格納されるように要求される1又は複数の論理ブロックアドレスと、1又は複数の論理ブロックアドレスに対応する1又は複数のデータ長とを含む。
翻訳モジュール204が、記憶要求を1又は複数の記憶コマンドに翻訳する(404)。記憶コマンドのうちの少なくとも1つは追加データ記憶コマンドである。各追加データ記憶コマンドは、データ記憶デバイス106に、1又は複数の追加点にデータセグメントのデータを格納するように指示する。追加点は、データ記憶デバイス106上に格納された直前のデータセグメント後の次のアドレスである、データ記憶デバイス106内のロケーションである。翻訳モジュール204がデータセグメントを2つ以上のセグメントに分割する場合には、一般には2つ以上のデータ追加コマンドが作成される。これは、データセグメントから生じるデータが追加点において、ページ、消去ブロック等の終わりに納まらない場合に必要とされる。第2の追加点は、別のページ、消去ブロック等の先頭に設定される。
マッピングモジュール206が、データセグメントの1又は複数のソースパラメータを、データ記憶デバイス106がデータセグメントのデータを追加したデータ記憶デバイス106内の1又は複数のロケーションにマッピングし(406)、方法400は終了する。一般には、マッピングは、将来にデータにアクセスすることができるようにするインデックスの一部である。データの物理的なロケーション及びデータ長をソースパラメータにマッピングすることによって、装置200は、データをデータ記憶デバイス106上に順次に格納しながら、ランダムアクセスデバイスをエミュレートすることができる。
図5は、本発明による、記憶要求を追加データコマンドに変換するための別の方法500の一実施形態を示す概略フロー図である。方法500が開始し、記憶要求受信モジュール202がクライアント110又はサーバ108のような要求側デバイスから記憶要求を受信する(502)。翻訳モジュール204が、その記憶要求を1又は複数の記憶コマンドに翻訳する(504)。ただし、記憶コマンドのうちの少なくとも1つが追加データ記憶コマンドである。再び、各追加データ記憶コマンドが、データ記憶デバイス106に、データセグメントのデータを1又は複数の追加点に格納するように指示する。
圧縮モジュール306が、データセグメントに関連する1又は複数の追加データ記憶コマンドのデータを圧縮して(506)、圧縮されたデータを生成し、データ記憶デバイス106が、追加データ記憶コマンドに応答して、圧縮されたデータを格納する(508)。記憶応答受信モジュール302が、データ記憶デバイス106から1又は複数の記憶コマンド応答を受信する(510)。記憶コマンド応答は、データ記憶デバイス106がデータセグメントのデータを追加した1又は複数のロケーションを含む。記憶コマンド応答の一部として受信される記憶ロケーションに基づいて、マッピングモジュール206が、データセグメントの1又は複数のソースパラメータを、データ記憶デバイス106がデータセグメントのデータを追加したデータ記憶デバイス106内の1又は複数のロケーションにマッピングし(512)、方法500は終了する。圧縮は一般にはデータのデータ長を変更するので、データを圧縮するには、一般には、ソースパラメータを、データが格納された後の記憶ロケーションにマッピングする必要がある。
図6は、本発明による、記憶要求を追加データコマンドに変換するための例600の概略的なブロック図である。例600は、記憶要求を追加データ記憶コマンドに変換するための装置200、300の一実施形態の例示にすぎず、発明を限定することは意図していない。当業者は、図6の例600とは異なる、本発明を実施する数多くの方法が存在することを理解されるであろう。
例600は論理ブロック記憶要求を表し、その要求において、要求側デバイスは、記憶デバイス102に、データセグメントを或る特定の物理アドレスに格納するように指示する。クライアント110又はサーバ108のような要求側デバイスは、ソースデータ記憶デバイスからデータを書き込むための記憶要求を開始する。ソースデータ記憶デバイスからのデータ602の一部が、データ602のその部分に格納されるデータセグメント606と共に示される。この場合、データセグメント606は、セクタ1の物理アドレスに、オフセット5、及び8のデータ長で記憶デバイス102上に格納されるように意図されている。一実施形態では、要求側デバイスは、論理ブロックアドレス及びデータ長を含むソースパラメータを有するヘッダを含む記憶要求608を作成し、記憶要求608を記憶デバイス102に送信する。
簡単にするために、例600は、データセグメント606のデータが圧縮されないものと想定する。この例600では、データセグメント606のデータ長は8であり、現在のページ616にはデータパケットが入る余地がある。ただし、そのページには、データ長5のデータパケットのためのデータが格納される。この事例では、翻訳モジュール204は、データセグメント606が、データが現在格納されている現在のページ616の終わりに納まらないので、データセグメント606から2つの追加データ記憶コマンド614を作成して、2つのデータパケット、すなわちデータ1 610及びデータ2 612を格納するものと判断する。
データが現在格納されているページ616は、有効データ618を含む。他のページには、有効データ及び無効データが含まれる。1つの追加データ記憶コマンド614がデータ1 610を追加点1 620に格納し、その追加点は、データが最新に格納されたロケーション622の直後にある。その際、データパケット データ1 610は、624に示されるように、現在のページ616の終わりに格納される。
第2の追加データ記憶コマンド614がデータ2 612を、データが格納されることになる次のページ626に格納する。一実施形態では、次のページ626は、データ1 610が格納されるページ616とは異なる消去ブロック内にある。この実施形態では、追加点1 620に格納されるデータは次のページ626に流れる場合があるが、次のページが別の消去ブロック内にない限り、新たな追加点を次のページの先頭に設定する必要はない。別の実施形態では、次のページ626は、データ1 610が格納されるページ616に隣接するページであるか、又はとにかく論理的には次のページであるが、次のページ626の先頭に新たな追加点2 630が必要とされる。当業者は、データを格納し続けるために第2の追加点630が必要とされる場合を理解するであろう。次のページ626は消去されているので、又は記憶空間回復プロセスが、次のページ626内にもはや有効データは存在しないものと判断したので、次のページ626は無効データ628を含む。第2の追加データ記憶コマンド614は、632において示されるように、データパケット データ2 612を追加点2 630に格納する。
この例600は、データセグメント606から作成されるデータパケット610、612がページ616の境界に位置するので、データセグメント606が分割される事例を示すが、他の事例では、データセグメント606のデータは一緒に格納されるか、又は3つ以上のデータパケットに分割される場合がある。他の事例では、圧縮モジュール306が、データセグメント606のデータを圧縮して、1又は複数のデータパケット610、612を形成する。
図7は、本発明による、物理アドレス及び仮想アドレスを効率的にマッピングするための装置700の一実施形態を示す概略ブロック図である。装置700は、順方向マッピングモジュール702と、逆方向マッピングモジュール704と、記憶空間回復モジュール706とを含み、それらのモジュールは以下で説明される。順方向マッピングモジュール702、逆方向マッピングモジュール704及び記憶空間回復モジュール706の1又は複数のうちの少なくとも一部は、記憶要求を送信する要求側デバイス、データ記憶デバイス106、記憶コントローラ104、並びに要求側デバイス、データ記憶デバイス106及び記憶コントローラ104とは別個のコンピューティングデバイスのうちの1又は複数の中に配置される。
一実施形態では、順方向マッピングモジュール702及び逆方向マッピングモジュール704は、マッピングモジュール206と共に機能する。順方向マッピングモジュール702及び逆方向マッピングモジュール704は、マッピングモジュール206の一部とするか、又は別個のモジュールであり、マッピングモジュール206と共に機能することができる。
装置700は順方向マッピングモジュール702を含み、順方向マッピングモジュールは、順方向マップを用いて、データセグメントのデータの1又は複数の物理アドレスを特定する。物理アドレスはデータセグメントの1又は複数の仮想アドレスから特定され、仮想アドレスはデータ記憶デバイス106に向けられる記憶要求において特定される。例えば、記憶要求は、データ記憶デバイス106内に格納されるデータを読み出すための要求を含む場合がある。データを読み出すための記憶要求は、データ記憶デバイス106上に格納されるデータに関連付けられる仮想アドレス又は仮想識別子を含む。読出し要求は、データセグメントが発生したファイルの仮想アドレスを含む場合があり、読出し要求は、仮想アドレスに関連付けられるデータセグメント全体を読み出すための要求であると解釈される。
別の例では、読出し要求は、その読出し要求において要求されるデータのオフセット及びデータ長と共に、仮想アドレスを含む。例えば、データセグメントが20ブロックである場合に、読出し要求が16ブロックのオフセット(すなわち、20ブロックのうちのブロック16において開始する)及び5のデータ長を含む場合があり、それにより、読出し要求によって、デーセグメントのうちの最後の5ブロックが読み出されるようになる。読出し要求は、データセグメント全体を読み出すための要求、又はデータセグメントの先頭から読み出す要求においても、オフセット及びデータ長を含む場合がある。記憶要求の中に、状態要求のような他の要求が含まれる場合もある。他のタイプ及び他の形の記憶要求も本発明の技術的範囲内で想定されることは、当業者に明白であろう。
装置700は順方向マップを含み、順方向マップは、1又は複数の仮想アドレスをデータ記憶デバイス106内に格納されるデータの1又は複数の物理アドレスにマッピングする。仮想アドレスは、データ記憶デバイス106内に格納されるデータに関連する1又は複数のデータセグメントに対応する。1又は複数の仮想アドレスは一般には、仮想アドレス空間内の個別のアドレスを含み、仮想アドレスは仮想アドレス空間に疎らに存在する。データセグメントの1つの仮想アドレスに対して、データ長情報がその仮想アドレスに関連付けられ、順方向マップ内に含まれる。データ長は一般には、データセグメントのサイズに対応する。仮想アドレスと、その仮想アドレスに関連付けられるデータ長情報とを組み合わせて用いることにより、データセグメント内の特定の部分を読み出すのを容易にすることができる。
多くの場合に、格納されたデータを特定するために用いられる仮想アドレスは、取り得る仮想アドレスのネーム空間又は範囲内で取り得る極めて少数の仮想アドレスを表す。この疎らに存在する空間を探索することは煩わしい場合がある。このため、順方向マップは一般には、仮想アドレスに基づいて物理アドレスを見つけるために、順方向マップを迅速に横断するのを容易にするデータ構造である。例えば、順方向マップは、Bツリー、連想記憶メモリ(「CAM」)、2進ツリー、ハッシュテーブル、又は疎らに存在する空間又は範囲を迅速に探索するのを容易にする他のデータ構造を含む場合がある。疎らに存在する仮想ネーム空間を迅速に探索する順方向マップを用いることによって、装置700は、仮想アドレスから1又は複数の物理アドレスを確定する効率的な方法を提供する。
順方向マップは、仮想アドレスから物理アドレスを迅速に確定するために最適化されるか、又は少なくともそのように設計されるが、順方向マップは一般には、データ記憶デバイス106の特定の領域内の全てのデータの位置を特定するために最適化されない。このため、装置700は逆方向マッピングモジュール704を含み、逆方向マッピングモジュールは、逆方向マップを用いて、物理アドレスからデータセグメントの仮想アドレスを確定する。逆方向マップは、1又は複数の物理アドレスを1又は複数の仮想アドレスにマッピングするために用いられ、逆方向マッピングモジュール704によって、又は物理アドレスから仮想アドレスを確定する他のプロセスによって用いられることができる。逆方向マップは、逆方向マップの一部が記憶空間回復動作中に一緒に消去されるデータ記憶デバイス106の消去領域に及ぶように、データ記憶デバイス106を消去領域の中にマッピングするのに好都合である。記憶空間回復動作(又はガーベージコレクション動作)は、データを将来に記憶するために消去領域を回復する。消去領域によって逆方向マップを編成することにより、記憶空間回復モジュール706は、記憶空間回復のための消去領域を効率的に特定し、有効データを特定することができる。記憶空間回復モジュール706は、以下でさらに詳細に検討される。
順方向マップにおいて仮想アドレスAが物理アドレスBにマッピングされる場合には、逆方向マップにおいて物理アドレスBが仮想アドレスAにマッピングされるように、逆方向マップ内の物理アドレスが順方向マップに関連付けられるか又はリンクされる。一実施形態では、順方向マップは逆方向マップ内のエントリにリンクされる物理アドレスを含む。別の実施形態では、順方向マップは、逆方向マップ、又は他の中間リスト、テーブル等の中にある物理アドレスへのポインタを含む。当業者は、物理アドレスを順方向マップ及び逆方向マップにリンクする他の方法を理解するであろう。
一実施形態では、逆方向マップは1又は複数のソースパラメータを含む。ソースパラメータは一般には記憶要求と共に受信され、少なくとも1又は複数の仮想アドレスを含む。ソースパラメータは、記憶要求と共に受信されるデータセグメントのデータに関連付けられるデータ長を含む。別の実施形態では、逆方向マップは、仮想アドレス又はデータ長の形のソースパラメータを含まず、ソースパラメータはデータ記憶デバイス106上に格納されるデータセグメントのデータと共に格納される。この実施形態では、ソースパラメータは、データと共に格納されるソースパラメータに導く逆方向マップ内の物理アドレスから見つけられる。言い換えると、逆方向マップは、二次論理−物理マップではなく、一次仮想−物理マップを使用する。
データ記憶デバイス106内に格納されるデータは、順方向マップ及び逆方向マップを再構築するために再生することができるログになるので、データと共にソースパラメータを格納することは、順次記憶デバイスにおいて好都合である。これは、記憶要求が受信される時刻と一致するシーケンスにおいてデータが格納されるという事実に起因しており、それゆえ、ソースデータは2つの役割;すなわち、順方向マップ及び逆方向マップを再構築する役割と、物理アドレスから仮想アドレスを確定する役割とを果たす。
装置700は記憶空間回復モジュール706を含み、記憶空間回復モジュールは、消去領域を回復する動作に先行して、逆方向マップを使用して、消去領域内の有効データを特定する。特定された有効データは、回復動作に先行して、別の消去領域に移動される。消去領域によって逆方向マップを編成することにより、記憶空間回復モジュール706は、消去領域に対応する逆方向マップの部分を走査し、有効データを迅速に特定することができるか、又はその消去領域内の有効データの量を確定することができる。消去領域は、一緒に消去される消去ブロック、一定の数のページ等を含む。逆方向マップは、特定の消去領域のためのエントリが走査されると、消去領域の内容がわかるように編成される。
消去領域によって逆方向マップを編成することにより、消去領域の内容を探索することが、Bツリー、2進ツリー、又は仮想−物理アドレス探索のために用いられる他の類似の構造を探索することよりも効率的である。Bツリー、2進ツリー等は、消去領域の全ての有効データを特定するために、その全体が頻繁に探索されなければならないので、Bツリー、2進ツリー等の形をとる順方向マップを探索することは煩わしい。逆方向マップは、テーブル、データベース、又は消去領域のデータのためのエントリを一緒に格納することができるようにして消去領域のデータに関する操作を容易にする他の構造を含む。
一実施形態では、順方向マップ及び逆方向マップは、サーバ108又はクライアント110内で動作するファイルサーバ又はクライアントのような、記憶要求を送信する要求側デバイスのためのデータを編成するファイル構造、ネーム空間、ディレクトリ等から独立している。順方向マップ及び逆方向マップを要求側デバイスの任意のファイルサーバから離しておくことによって、装置700は、記憶要求によって要求されるようにデータを格納するランダムアクセス論理ブロック記憶デバイスをエミュレートすることができる。
順方向マップ及び逆方向マップを使用することによって、装置700は、実際にはデータ記憶デバイス106内にデータを順次に格納しながら、記憶要求によって指示されるように特定のロケーション内にデータを格納しているように見えるようにすることができる。都合のよいことに、装置700は、実際にはデータを順次に格納しながら、論理ブロック記憶装置をエミュレートすることによって、フラッシュメモリのような固体記憶装置の場合にランダムアクセスが引き起こす問題を克服する。また、1つの記憶要求が論理ブロック記憶要求で、一方、第2の記憶要求がオブジェクト記憶要求、ファイル記憶要求等の場合があるので、装置700は自由度を高めることもできる。要求側デバイスのファイル構造、ネーム空間等からの独立性を保持することは、どのタイプの記憶要求が装置700によってサービスされる場合があるかに関して、高い自由度を提供する。
図8は、本発明による、仮想アドレス及び物理アドレスを効率的にマッピングするための装置800の別の実施形態を示す概略的なブロック図である。装置800は、順方向マッピングモジュール702と、逆方向マッピングモジュール704と、記憶空間回復モジュール706とを含み、それらのモジュールは図7の装置200に関連して上記で説明されたのと概ね同じである。また、装置800は、マップ再構築モジュール802と、チェックポイントモジュール804と、マップ同期モジュール806と、無効化モジュール808と、マップ更新モジュール810とを含み、それらのモジュールは以下で説明される。
装置800はマップ再構築モジュール802を含み、マップ再構築モジュールは、データと共に格納されるソースパラメータを用いて、順方向マップ及び逆方向マップを再構築する。データ記憶デバイス106内の消去領域又は消去ブロックが満たされた順序を追跡することによって、かつデータと共にソースパラメータを格納することによって、データがデータ記憶デバイス106上に順次に格納される場合、データ記憶デバイス106はシーケンシャルログになる。マップ再構築モジュール802は、データ記憶デバイス106上に格納されるデータパケットを順次に読み出すことによって、そのログを再生する。各物理アドレス及びデータパケット長が各データパケット内で見つけられたソースパラメータと対にされ、順方向マップ及び逆方向マップが作成し直される。
別の実施形態では、装置800はチェックポイントモジュール804を含み、チェックポイントモジュールは、順方向マップ及び逆方向マップに関連する情報を格納する。ただし、チェックポイントはデータ記憶デバイスの時点又は状態に関連する。格納される情報は、順方向マップ及び逆方向マップをチェックポイントに関連する状態に復元するのに十分である。例えば、格納される情報は、状態又は時間チェックポイントを指示する或る識別子と共に、データ記憶デバイス上のような、不揮発性記憶装置内に順方向マップ及び逆方向マップを格納するための情報を含む。
例えば、チェックポイント情報と共にタイムスタンプを格納することができる。その際、タイムスタンプは、チェックポイントにおいてデータパケットがその時点で格納されていたデータ記憶デバイス106内のロケーションと相互に関連付けることができる。別の例では、チェックポイント情報と共に、データが現在格納されているデータ記憶デバイス106内のロケーションのような状態情報が格納される。当業者は、順方向マップ及び逆方向マップをチェックポイントに復元するためにチェックポイントモジュール804によって格納される場合がある他のチェックポイント情報を理解するであろう。
別の実施形態では、装置800はマップ同期モジュール806を含み、マップ同期モジュールは、ソースパラメータ及び物理アドレスを順次に適用することによって、順方向マップ及び逆方向マップをチェックポイントに関連する状態から現在の状態に更新する。適用されるソースパラメータは、チェックポイント後に順次に格納されたデータと共に格納される。物理アドレスは、データ記憶デバイス106上のデータのロケーションから導出される。
好適には、マップ同期モジュール806は、スクラッチから開始し、データ記憶デバイス106の内容全体を再生するのではなく、順方向マップ及び逆方向マップをチェックポイントから現在の状態に復元する。マップ同期モジュール806は、チェックポイントを用いて、チェックポイント直後に格納されたデータパケットまで進み、その後、データパケットを、そのポイントから、データパケットがデータ記憶デバイス106上に現在格納されている現在の状態まで再生する。マップ同期モジュール806は一般には、マップ再構築モジュール802よりも順方向マップ及び逆方向マップを復元するのに時間をかけない。
一実施形態では、順方向マップ及び逆方向マップはデータ記憶デバイス106上に格納され、別の1組の順方向マップ及び逆方向マップを作成して、格納された順方向マップ及び逆方向マップをマッピングする。例えば、データパケットが第1の記憶チャネル上に格納され、一方、格納されたデータパケットのための順方向マップ及び逆方向マップは、第2の記憶チャネル上にデータとして格納される場合がある。第2の記憶チャネル上のデータのための順方向マップ及び逆方向マップは、第3の記憶チャネル上にデータとして格納され、それ以降も同様である。この再帰的プロセスは、さらに別の順方向マップ及び逆方向マップに対して必要に応じて続けることができる。記憶チャネルは、単一のデータ記憶デバイス106上に、又は別個のデータ記憶デバイス106上に存在する。
装置800は無効化モジュール808を含み、無効化モジュールは、結果としてデータが無効される動作に応答して、逆方向マップ内のデータのためのエントリをマークし、そのエントリによって参照されるデータが無効であることを指示する。無効化モジュール808は、削除要求、読み出し・変更・書込み要求等の結果としてエントリを無効としてマークすることができる。逆方向マップは、或るタイプの無効マーカ又はタグを含み、それは、逆方向マップ内のエントリに関連付けられるデータが無効であることを指示するために、無効化モジュール808によって変更される。
一実施形態では、逆方向マップは、データ記憶デバイス106内に格納される有効データ及び無効データのための情報を含み、順方向マップは、データ記憶デバイス106内に格納される有効データのための情報を含む。逆方向マップは記憶空間回復動作にとって有用であるので、消去ブロック内のデータが無効であることを指示する情報は逆方向マップに含まれる。逆方向マップ内に無効データを指示する情報を保持することによって、一実施形態では、順方向マップは、データ記憶デバイス106上に格納される有効データに関連する情報しか保持する必要がないので、順方向探索の効率及び速度を改善される。
その後、記憶空間回復モジュール706は、無効マーカを用いて、消去領域を見つけるために逆方向マップを走査することによって消去領域内の無効データの量を確定し、その消去領域の記憶容量に対する無効データの量を確定することができる。その後、記憶空間回復モジュール706は、消去領域内の確定された無効データの量を用いて、回復を行なうための消去領域を選択することができる。いくつかの消去領域を、さらには全ての利用可能な消去領域を走査することによって、記憶空間回復モジュール706は、消去領域内の無効データの最大量のような選択判定基準を用いて、回復を行うための消去領域を選択することができる。
回復を行うための消去領域が選択されると、一実施形態では、その後、記憶空間回復モジュール706は、有効データを、選択された消去領域からデータ記憶デバイス106内の新たなロケーションに書き込む。新たなロケーションは一般には、データが現在順次に格納されている消去領域のページ内にある。記憶空間回復モジュール706は、参照により本明細書に援用される、David Flynn等によって2007年12月6日に出願された、「Apparatus System, and Method for Managing Data Using a Data Pipeline」と題する米国特許出願第11/952,091号において記述されるようなデータパイプラインを用いて有効データを書き込むことができる。
一実施形態では、記憶空間回復モジュール706はまた、新たなロケーションに書き込まれた有効データが選択された消去領域において無効であることを指示するために逆方向マップを更新し、新たなロケーションに書き込まれた有効データに基づいて順方向マップ及び逆方向マップを更新する。別の実施形態では、記憶空間回復モジュール706は、マップ更新モジュール810(以下で説明される)と協働して順方向マップ及び逆方向マップを更新する。
好ましい実施形態では、記憶空間回復モジュール706は、記憶要求及び他のコマンドに関連付けられるデータ記憶及び検索に対して自律的に動作する。記憶空間回復モジュール706に組み込まれる場合がある記憶空間回復動作は、上記で参照された記憶空間回復出願においてさらに詳細に説明されている。
一実施形態では、装置800はマップ更新モジュール810を含み、マップ更新モジュールは、データ記憶デバイス106の内容が変更されるのに応答して、順方向マップ及び/又は逆方向マップを更新する。さらに別の実施形態では、マップ更新モジュール810は、データ記憶デバイスがデータを格納したロケーションに基づいて、データ記憶デバイスから、格納されたデータの物理アドレスを仮想アドレスにリンクする情報を受信する。その実施形態では、データ記憶デバイス106がデータパケットを格納するまで、データパケットが格納されるロケーションは利用することができないことがある。
例えば、データセグメントからのデータを圧縮してデータパケットを形成する場合、圧縮後まで、各データパケットのサイズはわからない。データ記憶デバイス106がデータを順次に格納する場合、データパケットが圧縮及び格納されると、格納されたデータパケット後のロケーションに追加点が設定され、次のデータパケットが格納される。追加点がわかると、その後、データ記憶デバイス106は、次のデータパケットが格納される追加点に対応する物理アドレスを折り返し報告することができる。マップ更新モジュール810は、格納されたデータパケットに関して報告された物理アドレス及び関連するデータ長を用いて、順方向マップ及び逆方向マップを更新する。当業者は、データ記憶デバイス106上に格納されるデータの物理アドレス及び関連するデータ長に基づいて順方向マップ及び逆方向マップを更新するマップ更新モジュール810の他の実施形態を理解するであろう。
図9は、本発明による、仮想アドレス及び物理アドレスの効率的なマッピングのための方法900の一実施形態を示す概略的なフロー図である。方法900が開始されると、順方向マッピングモジュール702が順方向マップを用いて、データセグメントのデータの1又は複数の物理アドレスを特定する(902)。物理アドレスはデータセグメントの1又は複数の仮想アドレスから特定され、データセグメントはデータ記憶デバイス106に向けられる記憶要求において特定される。順方向マップは、1又は複数の仮想アドレスと、データ記憶デバイス106に格納されるデータの1又は複数の物理アドレスとのマッピングを含む。仮想アドレスは仮想アドレス空間内の離散的なアドレスであり、仮想アドレスは仮想アドレス空間に疎らに存在する。
逆方向マッピングモジュール704が、逆方向マップを用いて、物理アドレスからデータセグメントの仮想アドレスを確定する(904)。逆方向マップは、1又は複数の物理アドレスを1又は複数の仮想アドレスにマッピングする。逆方向マップ内の物理アドレスは、ポインタ、リンク等を用いて、順方向マップにも関連付けられる。逆方向マップ内の仮想アドレスは、データ記憶デバイス106内に格納されるデータに関連する1又は複数のデータセグメントに対応する。また、逆方向マップは、逆方向マップの一部が1つの消去領域に及ぶように、データ記憶デバイスを消去領域の中にマッピングする。データ記憶デバイス106の消去領域は、記憶空間回復動作中に一緒に消去される。記憶空間回復動作は、将来のデータ記憶のために消去領域を回復する。
記憶空間回復モジュール706が、消去領域を回復する動作に先行して、逆方向マップを用いて消去領域内の有効データを特定し(906)、方法900は終了する。記憶空間回復モジュール706又は記憶空間回復に関連付けられる他のモジュールは、回復動作に先行して、特定された有効データを別の消去領域に移動する。ステップ902、904、906は任意の順序で独立して実施されるので、方法900のステップ902、904、906は並列に示されていることに留意されたい。
図10は、本発明による、仮想アドレス及び物理アドレスの効率的なマッピングのための方法1000の別の実施形態を示す概略フロー図である。方法1000が開始されると、記憶空間回復モジュール706が、消去領域を見つけるために逆方向マップを走査することによって消去領域内の無効データの量を確定して(1002)、去領域の記憶容量に対する無効データの量を確定する。その後、記憶空間回復モジュール706が、評価すべき別の消去領域が存在するか否かを判断する(1004)。記憶空間回復モジュール706が、評価すべき別の消去領域が存在するものと判断する場合には(1004)、記憶空間回復モジュール706は、次の消去領域のための無効データの量を確定する。
記憶空間回復モジュール706が、評価すべき別の消去領域が存在しないものと判断すると(1004)、記憶空間回復モジュール706は、選択判定基準を用いることによって回復を行うための消去領域を選択する(1006)。ただし、選択判定基準は、消去領域内の無効データの量を用いることを含む。記憶空間回復モジュール706が、選択された消去領域内の有効データを特定し(1008)、有効データを、データが現在書き込まれている消去領域に移動する(1010)。その後、マップ更新モジュール810が順方向マップ及び逆方向マップを更新し(1012)て、有効データがデータ記憶デバイス106内の別のロケーションに書き込まれたことを反映させる。
一実施形態では、記憶空間回復モジュール706が、選択された消去領域を消去し(1014)、選択された記憶領域をデータ記憶のために利用可能としてマークし(1014)、方法1000は終了する。別の実施形態では、記憶空間回復モジュール706が選択された消去領域内の全ての有効データを別のロケーションに書き込むと、記憶空間回復モジュール706は、消去することなく、選択された記憶領域をデータ記憶のために利用可能としてマークする(1014)。
図11は、本発明による、順方向マップ及び逆方向マップの一例の概略的なブロック図である。一般には、装置700、800は、読み出し及びアドレス指定するための記憶要求のような記憶要求を受信する。例えば、装置700、800は、論理ブロック記憶要求1102を受信し、読出しアドレス182を読み出し始め、3ブロックを読み出すことができる。一般には、順方向マップ1104は、他の仮想アドレスと共に、仮想アドレスとして論理ブロックアドレスを格納するので、順方向マッピングモジュール702は順方向マップ1104を用いて、記憶要求1102の仮想アドレス182から物理アドレスを特定する。その例では、簡単にするために、数字である仮想アドレスだけが示されるが、当業者は、順方向マップ1104において任意の仮想アドレスが用いられて表される場合があることは理解されるであろう。他の実施形態では、順方向マップ1104は、英数字文字、16進数文字等を含んでいる。
一例では、順方向マップ1104は簡単なBツリーである。他の実施形態では、順方向マップ1104は、連想記憶メモリ(「CAM」)、2進ツリー、ハッシュテーブル、又は当業者に知られている他のデータ構造とすることができる。その実施形態では、Bツリーは、2つの仮想アドレスを含む場合があるノード(例えば、ルートノード1108)を含む。各仮想アドレスは或る範囲とすることができる。例えば、仮想アドレスは、或る範囲(例えば、オフセット及び長さ)を有する仮想識別子の形をとるか、又は最初及び最後のアドレス又はロケーションを用いて範囲を表す。
単一の仮想アドレスが、ルートノード1108のような或る特定のノードにおいて含まれる場合、探索される仮想アドレス1106がそのノードの仮想アドレスよりも小さい場合には、ノード1108の左に向かう方向辺(directed edge)1110を下方に探索が続けられるであろう。探索される仮想アドレス1106が現在のノード1108に一致する(すなわち、ノードにおいて特定される範囲内に位置する)場合には、探索が中止され、現在のノード1108におけるポインタ、リンク、物理アドレス等が特定される。探索される仮想アドレス1106が現在のノード1108の範囲よりも大きい場合には、現在のノード1108の右に向かう方向辺1112を下方に探索が続けられる。ノードが2つの仮想アドレスを含み、探索される仮想アドレス1106が、そのノードの列挙される仮想アドレス間に入る場合には、現在のノード1108の2つの仮想アドレス間に入る仮想アドレスを有するノードに向かって、中央の方向辺(図示せず)を下方に探索が続けられる。所望の仮想アドレスを特定するか、又は探索される仮想アドレス1106がそのBツリー内に存在しないものと判断するまで、そのBツリーを下方に探索が続けられる。
図11に示された例では、順方向マッピングモジュール702は、ルートノード1108から始めて、仮想アドレス182 1106を探索する。探索される仮想アドレス1106はルートノードの仮想アドレス2005〜212よりも小さいので、順方向マッピングモジュール702は、次のノード1114まで左に向かって方向辺1110を下方に探索する。探索される仮想アドレス182 1106は次のノード1114に格納される仮想アドレス(072〜083)よりも大きいので、順方向マッピングモジュール702は、次のノード1118まで、ノード1114の右に向かって方向辺1116を下方に探索する。この例では、探索される仮想アドレス182 1106はノード1118の範囲178〜192内に入ることになるので、次のノード1118は、探索される仮想アドレス182 1106はこのノード1118の仮想アドレス178〜192と一致するように178〜192の仮想アドレスを含む。
順方向マッピングモジュール702が、順方向マップ1104において一致を確定すると、順方向マッピングモジュール702は、ノード1118内で見つけられるか、又はノード1118にリンクされる物理アドレスを返す。図示される例では、順方向マッピングモジュール702によって、探索される仮想アドレス1106を含むものと特定されたノード1118は、逆方向マップ1122内のエントリ1120にマッピングするリンク「f」を含む。
図示される実施形態では、逆方向マップ1122内のエントリ1120毎に(テーブルにおいて行として示される)、逆方向マップ1122はエントリID1124、物理アドレス1126、データ記憶デバイス106上の物理アドレス1126に格納されるデータに関連付けられるデータ長1128(この場合には、データは圧縮される)、有効タグ1130、仮想アドレス1132(オプション)、仮想アドレス1132に関連付けられるデータ長1134(オプション)、及び他の多種多様のデータ1136を含む。逆方向マップ1122は消去ブロック(消去領域)に編成される。この例では、選択されたノード1118に対応するエントリ1120は消去ブロックn1138内に位置する。消去ブロックn1138の前に消去ブロックn−1 1140があり、その後に消去ブロックn+1 1142がある(消去ブロックn−1及びn+1の内容は図示されない)。消去ブロックは、所定の数のページを含む或る消去領域とすることができる。消去領域は、記憶回復動作において一緒に消去されるデータ記憶デバイス106内のエリアである。
エントリID1124は逆方向マップ1122の一部として示されるが、エントリID1124は、アドレス、仮想リンク、又は逆方向マップ1122内のエントリを順方向マップ1104内のノードに結ぶ他の手段とすることができる。物理アドレス1126は、探索される仮想アドレス1106に対応するデータが存在するデータ記憶デバイス106内のアドレスである。物理アドレス1126に関連付けられるデータ長1128は物理アドレス1126において格納されるデータパケットの長さを特定する(便宜上、物理アドレス1126及びデータ長1128は合わせて宛先パラメータ1144と呼ばれる場合があり、仮想アドレス1132及び関連するデータ長1134はソースパラメータ1146と呼ばれる場合がある)。その例では、データ記憶デバイス106上に格納されるデータパケットが記憶前に圧縮される、圧縮の一実施形態において、宛先パラメータ1144のデータ長1120はソースパラメータ1146のデータ長1134とは異なる。エントリ1120に関連付けられるデータの場合、データは大きく圧縮することができ、64ブロックから1ブロックに圧縮された。
有効タグ1130は、エントリ1120にマッピングされたデータが有効であるか否かを指示する。この事例では、エントリ1120に関連付けられるデータは有効であり、図11では、エントリ1120の行内に「Y」として示される。一般には、逆方向マップ1122は、有効データ及び無効データの両方を追跡し、順方向マップ1104は有効データを追跡する。その例では、エントリ「c」1148は、エントリ1148に関連付けられるデータが無効であることを指示する。順方向マップ1104は仮想アドレスを含まないことに留意されたい。逆方向マップ1122は、一般には、無効データのためのエントリを保持し、記憶回復動作中に、有効データ及び無効データを迅速に区別することができるようにする。
図示される逆方向マップ1122は、便宜上、ソースパラメータ1146を含むが、逆方向マップ1122は、ソースパラメータ1146を含んでも含まなくてもよい。例えば、ソースパラメータ1146が、格納されるデータのおそらくヘッダにおいて、データと共に格納される場合には、逆方向マップ1122は、データに関連付けられる物理アドレス1126を含むことによって仮想アドレスを間接的に特定することができ、ソースパラメータ1146は、格納されたデータから特定されることができる。当業者は、逆方向マップ1122内にソースパラメータ1146を格納することが好都合であることを理解するであろう。
逆方向マップ1122は、ファイル名、オブジェクト名、ソースデータ等の他の多種多様のデータ1136を含む。当業者は、逆方向マップ1122において有用な他の情報も含むことが可能であることを理解するであろう。逆方向マップ1122内に物理アドレス1126が示されるが、他の実施形態では、物理アドレス1126、又は他の宛先パラメータ1144は、順方向マップ1104、中間テーブル又は他のデータ構造内等の他のロケーションに含まれる場合がある。
消去ブロック(例えば、消去ブロックn1138)に関連付けられるマップの部分を横断することによって、記憶空間回復モジュール706が消去ブロック1138内の有効データを特定し、かつ消去ブロック1138内の有効データ又は逆に無効データの量を定量することができるように、逆方向マップ1122は一般には、消去ブロック又は消去領域によって配列される。インデックスは探索及び記憶回復動作のために最適化される場合があるので、インデックスを、仮想アドレス1106から物理アドレス1126を特定するために迅速に探索することができる順方向マップ1104、及び消去ブロック1138内の有効データ及び有効データの量を特定するために迅速に探索することができる逆方向マップ1122に配列することは好都合である。当業者は、順方向マップ1104及び逆方向マップ1122と共にインデックスの他の利点を理解するであろう。
図12は、本発明による、記憶要求を調整するための装置1200の一実施形態を示す概略的なブロック図である。装置1200は、追加/無効化モジュール1202及び再構成モジュール1204を有する記憶コントローラ104を含み、それらのモジュールは以下で説明される。追加/無効化モジュール1202及び再構成モジュール1204のうちの1又は複数の少なくとも一部は、記憶要求を送信する要求側デバイス、データ記憶デバイス106、記憶コントローラ104、並びに要求側デバイス、データ記憶デバイス106及び記憶コントローラ104とは別個のコンピューティングデバイスのうちの1又は複数の中に配置される。
装置1200は追加/無効化モジュール1202を含み、追加/無効化モジュールは、第1の記憶要求を受信するのに応答して第1の追加データ記憶コマンドを生成し、第2の記憶要求を受信するのに応答して第2の追加データ記憶コマンドを生成する。第1の記憶要求及び第2の記憶要求は、1又は複数の要求側デバイスから受信される。要求側デバイスは、サーバ108、又はサーバ108上にあるか若しくはコンピュータネットワーク112を介してサーバ108と通信するクライアント110とすることができる。
第1の記憶要求は、データセグメントの既存のデータを第1のデータで上書きするための要求を含む。そのデータセグメントはデータ記憶デバイス106上に格納される。第2の記憶要求は、同じデータセグメントの既存のデータを第2のデータで上書きするための要求を含む。第1のデータ及び第2のデータは、データセグメント内の共通のオフセットにおいて格納される重複するデータの少なくとも一部を含み、第2の記憶要求は、第1の記憶要求後に受信される。
また、追加/無効化モジュール1202は、第1の記憶要求に応答して、データセグメントのデータを無効としてマークすることによってインデックスを更新する。無効としてマークされるデータは、第1のデータに置き換えられるデータである。また、追加/無効化モジュール1202は、第2の記憶要求に応答して、データセグメントのデータを無効としてマークすることによってインデックスを更新する。ただし、無効としてマークされるデータは、第2のデータに置き換えられるデータである。一実施形態では、追加/無効化モジュール1202は、逆方向マップ1122を更新することによってインデックスを更新する。一実施形態では、追加/無効化モジュール1202は、逆方向マップ1122を更新して、データセグメントが無効であることを指示する。別の実施形態では、追加/無効化モジュール1202は、第1のデータ又は第2のデータに対応するデータのみを無効としてマークする。これは、順方向マップ1104及び逆方向マップ1122の変更を必要とする場合があり、以下で詳細に説明される。
別の実施形態では、データセグメントのデータを無効としてマークすることは、第1のデータ及び第2のデータに置き換えられるデータセグメントの部分が無効であることを指示すると共に、置き換えられないデータセグメントの部分が依然として有効であることも指示するリストを生成することを含む場合がある。そのリストは、データセグメント全体を無効としてマークすることなくインデックスを更新する際に再構成モジュール1204によって用いられる場合がある。
装置1200は再構成モジュール1204を含み、再構成モジュールは、第1のデータに基づいてインデックスを更新すると共に、第2のデータに基づいてインデックスを更新し、更新されたインデックスは、第2のデータが第1のデータよりも最新であることを指示するように編成される。第2のインデックスに基づいて更新される前にインデックスが第1のデータに基づいて更新されるときに、又は第1のインデックスに基づいて更新される前にインデックスが第2のデータに基づいて更新されるときに、このインデックス編成は保持される。
一実施形態では、重複するデータの場合に、第2のデータが第1のデータよりも最新であることを指示するようにインデックスを編成することは、更新の順序にかかわらず、第2のデータに対応する重複するデータのためのインデックス内に、ポインタ、リンク等を保持することを含む。例えば、元のデータセグメントがブロック3を含み、そのブロックが第1のデータによって3’で上書きされかつ第2のデータによって3”で上書きされる場合には、そのインデックスが第1のデータ前に第2のデータで更新されたか、逆に第2のデータ前に第1のデータで更新されたかにかかわらず、そのインデックスは更新後に3”を指す。図16に関する記述おいて、以下でさらに説明される。
第2のデータが第1のデータよりも最新であることを指示するようにインデックスを編成することは、一般には、重複するデータにマッピングされるインデックスの部分を第2のデータで更新すること、及び第1のデータに基づいてインデックスを更新する前に、再構成モジュール1204が第2のデータに基づいてインデックスを更新する場合であっても、第2のデータへのマッピングを保持することを含む。
追加/無効化モジュール1202がインデックスを更新している間、追加/無効化モジュール1202は、別のプロセス又はモジュールがインデックスにアクセスすることができないようにし、データ保全性を確保する。例えば、追加/無効化モジュール1202が第1のデータに基づいてインデックスを更新している場合には、追加/無効化モジュール1202は、追加/無効化モジュール1202又は再構成モジュール1204の別のインスタンスが第2のデータに基づいてインデックスを更新するのを防ぐ。インデックスが更新される間に、インデックスへのアクセスを防ぐ(すなわち、インデックスをロックする)ことによって、装置1200は、複数のプロセッサにおいて、又は複数のスレッドにおいて実行される装置のモジュール1202、1204の複数のインスタンスをサポートする。上記で2つの記憶要求が検討されてきたが、本発明は、3つ以上の記憶要求が同時に処理される状況にも同じく当てはまることに留意されたい。
図13は、本発明による、記憶要求を調整するための装置1300の別の実施形態を示す概略的なブロック図である。装置1300は追加/無効化モジュール1202及び再構成モジュール1204を含み、それらのモジュールは図12の装置1200に関連して説明されたのと実質的に同じである。また、装置1300は、データロケーションモジュール1302と、読出しモジュール1304と、読出し遅延モジュール1306と、シーケンス番号モジュール1308とを含み、それらのモジュールは以下で説明される。装置1300のモジュール1202、1204、1302〜1308は記憶コントローラ104内に示されるが、モジュール1202、1204、1302〜1308の全て、又は一部は、データ記憶デバイス106、クライアント110、サーバ108或いは他のデバイス又はロケーションに含まれる。
一実施形態では、装置1300はデータロケーションモジュール1302を含み、データロケーションモジュールは、データ記憶デバイス106が第1のデータを格納した第1の物理的なロケーションでインデックスを更新すると共に、データ記憶デバイス106が第2のデータを格納した第2の物理的なロケーションでインデックスを更新する。装置1300は、データ記憶デバイス106が、データ記憶デバイス106から受信された第1のデータ及び第2のデータを格納した物理的なロケーションを受信する。上記のように、データ記憶デバイス106がデータを順次に格納する場合、所与のデータパケットのためのデータが格納されるロケーションは、先行するデータパケットが格納されるまでわからない。
更新されたインデックスは、インデックスが、第2の物理的なロケーションに基づいて更新される前に第1の物理的なロケーションに基づいて更新されるか、第1の物理的なロケーションに基づいて更新される前に第2の物理的なロケーションに基づいて更新されるかにかかわらず、第2の物理的なロケーションが第1の物理的なロケーションよりも最新であることを指示するように編成される。例えば、第1の記憶要求に応答して第1のデータの重複する部分がアドレス1に格納され、かつ第2のデータの重複する部分がアドレス2に格納される場合には、データロケーションモジュール1302は、重複するデータに関連するインデックスの部分のために、インデックス内にアドレス2を格納する。第1のデータに対して更新される前に、インデックスが第2のデータに対して更新される場合には、アドレス2をアドレス1で置き換えるのではなく、インデックスは、重複するデータに対してアドレス2を保持する。
データロケーション更新モジュール1302がインデックスを更新するのを完了するまで、データロケーション更新モジュール1302は、データロケーション更新モジュール1302の別のインスタンス、或いは追加/無効化モジュール1202又は再構成モジュール1204のような別のモジュールが、インデックスにアクセスするのを防ぐ。データロケーション更新モジュール1302がインデックスにアクセスしている間にインデックスにアクセスするのを防ぐことによって、データの信頼性を高めることができる。
一般には、追加/無効化モジュール1202による特定の記憶要求の処理は、再構成モジュール1204による記憶要求の処理に先行し、再構成モジュール1204による記憶要求の処理は、データロケーション更新モジュール1302による記憶要求の処理に先行する。しかしながら、2つの記憶要求の到着順序が確定されると、追加/無効化モジュール1202の或るインスタンスによる第2の記憶要求の処理が、追加/無効化モジュール1202の別のインスタンスによる第1の記憶要求の処理の前に行なわれる。同様に、再構成モジュール1204による第2の記憶要求の処理は、追加/無効化モジュール1202による、又は再構成モジュール1204の別のインスタンスによる第1の記憶要求の処理前に行なわれる。
同様に、データロケーションモジュール1302の或るインスタンスによる第2の記憶要求の処理は、追加/無効化モジュール1202、再構成モジュール1204、又はデータロケーション更新モジュール1302の別のインスタンスによる第1の記憶要求の処理の前に行なわれる。本発明のこの特徴によれば、記憶要求を非同期に、かつ独立してマルチプロセッサ及び/又はマルチスレッドで処理することができるようになる。モジュール1202、1204、1302の別のインスタンスがインデックスを更新しており、処理の順序ではなく到着の順序に基づいてインデックスを編成している間に、モジュール1202、1204、1302へのアクセスを防ぐことによって、記憶要求を複数のプロセッサ又はスレッドによって並列に処理するのが容易になる。
装置1300は逆方向読出しモジュール1304を含み、逆方向読出しモジュールは、読出し要求を含む記憶要求に応答して、データセグメントの少なくとも一部を読み出す。読出し要求は、記憶要求に合わせて調整されなければならず、記憶要求の結果としてデータセグメントが変更されるので、装置1300は、第1の記憶要求が追加/無効化モジュール1202、再構成モジュール1204及びデータロケーション更新モジュール1302によってサービスされるまで、要求される読出しをサービスするのを遅らせる読出し遅延モジュール1306も含む。データセグメントの内容が更新される間に、又はデータセグメントにマッピングされるインデックスが更新される間に読出しを防ぐことによって、読出し遅延モジュール1306はデータ保全性を保持する。
一実施形態では、データセグメントを読み出すための読出し要求が、データセグメントの少なくとも一部を上書きする第1の記憶要求の後であるが、同じくデータセグメントの少なくとも一部を上書きする第2の記憶要求前に受信されるとき、読出し遅延モジュール1306は、第1の記憶要求及び第2の記憶要求の両方が追加/無効化モジュール1202、再構成モジュール1204及びデータロケーション更新モジュール1302によってサービスされるまで、読出し要求をサービスするのを遅らせる。この実施形態では、読出しモジュール1304が最新バージョンのデータセグメントを読み出すことになるように、読出し遅延モジュール1306によって、第2のデータ記憶要求に基づいてデータセグメントを更新することができるようにする。
一実施形態では、装置1300はシーケンス番号モジュール1308を含み、シーケンス番号モジュールはシーケンス番号を記憶要求と関連付ける。ただし、割り当てられるシーケンス番号は、装置1300によって記憶要求が受信される順序を表す。シーケンス番号は、第2の記憶要求に基づく更新が第1の記憶要求に基づく更新よりも先行することをインデックスが反映するようにインデックスを編成するのを容易にする。この実施形態では、第1の記憶要求及び第2の記憶要求のそれぞれに割り当てられるシーケンス番号を用いることによって、再構成モジュール1204は、第2のデータが第1のデータよりも最新であることを指示するようにインデックスを編成する。同様に、データロケーションモジュール1302も、第2のデータが第1のデータよりも最新であることを指示するようにインデックスを編成する。シーケンス番号は、タイムスタンプ、或る一連の番号、又は或るシーケンス番号が別のシーケンス番号に先行することを特定するために用いることができる任意の他の仕組みとすることができる。当業者は、他の形のシーケンス番号を理解するであろう。
一実施形態では、追加/無効化モジュール1202、再構成モジュール1204、又はデータロケーション更新モジュール1302の或るインスタンスは、インデックス更新中にインデックス全体へのアクセスを妨げない。インデックスは2つ以上の領域に分割される場合がある。例えば、或る領域はデータ記憶デバイス106の或るエリアに関連する場合があり、インデックスの別の領域は、データ記憶デバイス106の別のエリアに関連する場合がある。その実施形態では、インデックスの第1の領域に関連する記憶要求がサービスされる間に、追加/無効化モジュール1202、再構成モジュール1204、又はデータロケーション更新モジュール1302のさらに別のインスタンスが、第2の領域に関連する第2の記憶要求をサービスする場合がある。別の実施形態では、インデックスは、独立して処理される場合がある複数の仮想アドレス領域を作成するように分割される場合がある。或る領域が更新される間にその領域へのアクセスを制限することが、同時に更新されている他の領域のデータ保全性に影響を及ぼさない限り、インデックスの領域はブランチ、又はサブブランチ、さらにはノードとすることができる。
一実施形態では、第1の記憶要求及び第2の記憶要求は、データセグメントの少なくとも一部を置き換えることになるデータと共に受信される。別の実施形態では、第1の記憶要求及び第2の記憶要求のいずれか又は両方が、実質的にデータを伴うことなく受信される。さらに、対応する追加データ記憶要求が、データを伴うことなく、データ記憶デバイス106に送信される。例えば、記憶要求は、データを含まない場合があり、データ記憶デバイス106にデータセグメントのデータを転送するためのダイレクトメモリアクセス(「DMA」)プロセス又はリモートDMA(「RDMA」)プロセスのいずれかを開始する。同様に、データ記憶デバイス106に送信される追加データ記憶コマンドは、データ記憶デバイス106に、DMAプロセス又はRDMAプロセスを開始してデータを転送するように指示する。装置1200、1300は、データを伴う1つの記憶要求、回復プロセスの一部である別の要求、DMA処理又はRDMA処理を開始する別の要求を取り扱うことが可能なように十分に自由度がある。
本発明は、追加/無効化モジュール1202、再構成モジュール1204及びデータロケーション更新モジュール1302のインスタンスが、概ね同時に受信されると共に単一のセグメントに影響を及ぼす要求をいかに取り扱うかを開示するが、当業者は、追加/無効化モジュール1202、再構成モジュール1204及びデータロケーション更新モジュール1302が、単一のデータセグメントの種々の部分に影響を及ぼす種々の他の記憶要求を取り扱うことができ、さらには2つ以上の別個のデータセグメントに影響を及ぼす記憶要求も取り扱うことができることを理解するであろう。
図14は、本発明による、記憶要求を調整するための方法1400の一実施形態を示す概略フロー図である。方法1400が開始し、装置1200が第1の記憶要求を受信する(1402)。装置1200が第2の記憶要求を受信する(1404)。第1の記憶要求及び第2の記憶要求は、データセグメントの少なくとも一部を上書きすることによって、単一のデータセグメントに影響を及ぼす。さらに、第1の記憶要求及び第2の記憶要求は、第1の記憶要求及び第2の記憶要求の両方に共通のデータセグメントの少なくとも1つの重複する部分を上書きする。
追加/無効化モジュール1202のインスタンスが、データセグメントの少なくとも一部を第1のデータで上書きする第1の追加データ記憶コマンドを生成する(1406)。また、追加/無効化モジュール1202のインスタンスが、データセグメントの少なくとも一部を第2のデータで上書きする第2の追加データ記憶コマンドを生成する(1408)。また、第1のデータ要求をサービスしている追加/無効化モジュール1202のインスタンスは、第1のデータに置き換えられるデータセグメントのデータを無効化することによってインデックスを更新する(1410)。また、第2のデータ要求をサービスしている追加/無効化モジュール1202のインスタンスは、第2のデータに置き換えられるデータセグメントのデータを無効化することによってインデックスを更新する(1412)。
再構成モジュール1204のインスタンスが第1のデータに基づいてインデックスを更新する(1414)。また、再構成モジュール1204のインスタンスが第2のデータに基づいてインデックスを更新し(1416)、方法1400は終了する。追加/無効化モジュール1202又は再構成モジュール1204の任意のインスタンスがインデックスを更新している間、モジュール1202、1204の他のインスタンスは、インデックスにアクセスすることはできない。
追加/無効化モジュール1202及び再構成モジュール1204のインスタンスに関連するステップ1406〜1416の順序は1つの実施形態にすぎない。再構成モジュール1204によって第1の記憶要求がサービスされる前に、追加/無効化モジュール1202によって第1の記憶要求がサービスされ、かつ再構成モジュール1204によって第2の記憶要求がサービスされる前に、追加/無効化モジュール1202によって第2の記憶要求がサービスされる限り、ステップ1406〜1416を他の順序にすることも可能であり、本発明の1つの重要な特徴である。例えば、追加/無効化モジュール1202の或るインスタンス及び再構成モジュール1204の或るインスタンスが、追加/無効化モジュール1202の別のインスタンスが第1の記憶要求をサービスする前に、第2の記憶要求をサービスする場合がある。記憶要求をサービスするのに可能な順序付けは、図16において示される例に関して以下でさらに詳細に検討される。
図15は、本発明による、記憶要求を調整するための方法1500の別の実施形態を示す概略フロー図である。方法1500は、クライアント110、記憶コントローラ104又は上記の装置1200、1300の他のロケーションにおいて、及びデータ記憶デバイス106において記憶要求を調整するために行なわれるステップを示す一例である。方法1500は3つのデバイスにおける動作を示すが、方法1500は、本発明が2つ以上のデバイスに及ぶ必要があることを暗示するものではなく、それらのモジュールが図12及び図13に示されるように配置されなければならないことを暗示するものでもないことに留意されたい。
本発明は、記憶コントローラ104、又はデータ記憶デバイス106の記憶コントローラ104と通信する他の単一のデバイス内で実現されるか、又はクライアント110、サーバ108等の中にあるドライバの一部を含む場合もある。クライアント110及びデータ記憶デバイス106内に示される動作は一般には、本発明とは無関係であり、記憶要求を送信するために、かつ記憶要求に応答してデータを格納するために、クライアント110及びデータ記憶デバイス106内で一般に何が起こるかを例示するためだけに示される。
方法1500は単一のクライアント110を示すが、一般には複数のクライアント110が存在し、それぞれが記憶コントローラ104の1又は複数のインスタンスを通じてデータ記憶デバイス106にアクセスする。方法1500は、クライアント110が、他のクライアント110とデータの書込みを調整するクライアント間ロックを開始する(1502)ときに始まるので、図示されるクライアント110は、或る特定の時刻において書込み要求を伴う記憶要求を送信する唯一のクライアント110である。書込み要求は、新たなデータを書き込む要求、又は既存のデータセグメントを置き換えるか又は変更するための要求とすることができる。インデックスにアクセスすることができないようにしながら、新たなデータを書き込むための書込み要求をサービスすることは重要であるが、本発明は、既存のデータセグメントを置き換えるか又は変更するときに、同じデータセグメントを変更する/置き換えるための2つ以上の要求が存在する際にデータ保全性を確保するのに特に有用である。その実施形態では、クライアント間ロックが機能して2つ以上のクライアント110からの書込み要求の同期が確保されると、クライアント110は、記憶コントローラ104に書込み要求を送信する(1504)。別の実施形態では、クライアント間同期は利用されず、記憶要求は所定の順序を持たない。図示される実施形態では、その書込み要求は実質的にデータを伴わず、クライアント110又は他のロケーションからデータ記憶デバイス106にデータを転送するためにDMAプロセスを開始する。
その際、追加/無効化モジュール1202は、インデックスを「ロック」することによって(1506)、インデックスに対して複数のアクセスが行なわれないようにする。その後、シーケンスモジュール1308がシーケンス番号を入手し(1508)、シーケンス番号を書込み要求に関連付ける。その後、追加/無効化モジュール1202が、書込み要求に基づいて、追加データ記憶コマンドを作成する(1510)。追加データ記憶コマンドは、割り当てられたシーケンス番号を含み、書込み要求によって上書きされることが要求されるデータセグメント内のデータに関連する。その後、追加/無効化モジュール1202、又は記憶コントローラ104内の他のモジュールが、シーケンス番号1511と共に、データ記憶デバイス106に追加データ記憶コマンドを送信する(1511)。追加データ記憶コマンドは、クライアント110又は他のロケーションからデータ記憶デバイス106にデータを転送するためのDMAプロセスを開始するコマンドを含む。
さらに、追加/無効化モジュール1202が、既存のデータを無効としてマークすることによって、インデックスを更新する(1512)。既存のデータは、データセグメントの一部であるデータであり、書込み要求において参照されるデータに置き換えられることになる。その後、追加/無効化モジュール1202が、インデックスへのロックを解除して(1514)、他の書込み要求をサービスすることができるようにする。さらに、クライアント110が、書込み要求送信のロックを解除し(1515)、別のクライアント110が記憶コントローラ104に書込み要求を送信することができるようにする。一実施形態では、追加/無効化モジュール1202は、インデックスが更新されるまで、データセグメント全体を一時的に無効化する。インデックスが更新された後に、書込み要求によって影響を及ぼされないデータセグメントの部分が有効としてマークされる。別の実施形態では、追加/無効化モジュール1202は、上書きされるデータに関連付けられるインデックスの部分だけを無効化する。
追加データ記憶コマンドを作成すること(1510)は、データを無効化すること(1513)と並列に示されていることに留意されたい。別の実施形態では、データを無効化し(1512)、インデックスへのロックを解除した(1514)後に、追加/無効化モジュール1202が追加データ記憶コマンドを作成する(1510)。好ましい実施形態では、データ記憶デバイス106は、シーケンス番号の順序でデータパケットを格納する。シーケンス番号1511を追加データ記憶コマンドに関連付けることによって、追加/無効化モジュール1202は、一実施形態において、データを無効化すること(1512)及びインデックスのロックを解除すること(1512)とは無関係に、追加データ記憶コマンドを作成する(1510)。
追加コマンド及びシーケンス番号がデータ記憶デバイス106によって受信されると、データ記憶デバイス106は、DMAプロセスを開始し(1516)、それにより書込み要求に関連付けられるデータをデータ記憶デバイス106に転送する。また、データ記憶デバイス106は、格納されることになるこのデータの読出しを阻止し(1518)、受信されたデータを処理する(1520)。データを処理することは、先頭にヘッダを追加すること、データを圧縮すること、データを暗号化すること、誤り訂正符号(「ECC」)を生成すること等を含む。また、処理は、1つしか示されていないが、複数のDMA転送を含む場合もある。その後、データ記憶デバイス106が、シーケンス番号に関連付けられる追加データ記憶コマンドのためのDMAを完了し、その後追加データ記憶コマンドを完了する(1524)。
他の実施形態では、追加/無効化モジュール1202は、追加データ記憶コマンドに加えて、書込み要求に関連付けられる他のコマンドを作成し、それらのコマンドをシーケンス番号に関連付ける。その後、記憶コントローラ104は、各コマンドに添付されるシーケンス番号と共に、それらのコマンドを送信する。その後、データ記憶デバイス106が、シーケンス番号に関連付けられる全てのコマンドを完了する(1524)。当業者は、書込み要求をサービスするために生成される場合がある、書込み要求に関連付けられる他のコマンドを理解されよう。データ記憶デバイス106が、DMAを通じて受信されたデータを処理すると(1520)、データ記憶デバイス106はデータを格納し(1526)、データの読出しを解除する(1528)。データを格納すること(1526)は、他のプロセスよりも長い時間を要する場合があるプロセスであることに留意されたい。好ましい実施形態では、記憶コントローラ104は、データが格納されている間に、数多くの他の記憶要求を処理するであろう。
追加/無効化モジュール1202がインデックスのロックを解除した(1514)後に、再構成モジュール1204がインデックスをロックし(1530)、クライアント110から受信される書込み要求に関して書き込まれるように要求されるデータに基づいて、インデックスを更新する(1532)。その後、再構成モジュール1204が、インデックスのロックを解除する(1534)。ロックが解除されると、追加/無効化モジュール1202及び再構成モジュール1204の他のインスタンスがインデックスにアクセスすることができる。一実施形態では、追加/無効化モジュール1202がインデックスのロックを解除し(1514)、再構成モジュール1204がインデックスを再度ロックする(1530)代わりに、追加/無効化モジュール1202の無効化プロセス及び再構成モジュール1204のインデックス更新全体を通じて、インデックスはロックされたままである。
データ記憶デバイス106がシーケンス番号1511に関連付けられるコマンド(複数可)を完了すると(1524)、データ記憶デバイス106は、データ記憶デバイス106が関連するデータを格納した(1526)1又は複数の物理アドレスを送信する(1536)。一実施形態では、コマンド完了1524が、シーケンス番号1536と共に送信される。好ましい実施形態では、コマンド完了1524と共に送信されるシーケンス番号1536は、データ記憶デバイス106に最初に送信されるシーケンス番号1511と同じである。データロケーション更新モジュール1302がインデックスをロックし(1538)、データ記憶デバイス106が関連するデータを格納した(1526)ロケーション(複数可)を指すように、インデックスを更新する(1540)。その実施形態では、追加/無効化モジュール1202は、関連するデータセグメントのための無効化フラグをクリアする。追加/無効化モジュール1202が書込み要求に関連付けられるデータセグメント全体を無効化する別の実施形態では、データロケーションモジュール1302は、書込み要求によって影響を及ぼされなかったデータに関する無効化フラグをクリアする。その後、データロケーション更新モジュール1302が、インデックスのロックを解除し(1542)、記憶コントローラ104が書込み要求を完了し(1544)、クライアント110に確認を送信する。その後、クライアント110がその確認を受信し(1546)、処理して、方法1500は終了する。
一実施形態では、インデックスがロックされる度に(1506、1530、1538)、インデックス全体がロックされる。別の実施形態では、インデックスの一部のみがロックされる。例えば、ブランチがロックされる場合があるか、又はデータセグメントに対応するノードがロックされる場合もある。
図16(図16A、図16B及び図16Cを含む)は、本発明による、記憶要求を調整するための装置1200、1300の一例1600を示す概略的なブロック図である。その例1600において、データセグメントを格納するための以前の書込み要求に基づいて、元の状態にあるデータセグメント1602がデータ記憶デバイス106上に格納されるものと想定される。またその例では、装置1200、1300は2つのクライアント110から2つの記憶要求を受信する。クライアントAは要求1を送信し、クライアントBは要求2を送信する。いずれの記憶要求とも、データセグメントの一部を上書きしようと試みる。クライアントAからの要求1は、クライアントBからの要求2の前に受信される。
要求が受信されるときの時間のシーケンス1604が示されており、それは、記憶コントローラ104がデータ記憶デバイス106をランダムアクセスデバイスとしてエミュレートする場合に、クライアント110がデータセグメントに対する変更をいかに認識することになるかを表す。データセグメントの元の状態1602は1〜5の番号を付される5つのブロックを含む。元の状態1602のブロックは白抜きで示される。クライアントAは第1のデータに関連付けられる要求1を送信し、そのデータはブロック2及び3を変更する。第1のデータ1606は、ブロック2及び3内の新たなデータをそれぞれ2’及び3’として示す。第1のデータ1606を有するブロックは水平なクロスハッチを付けて示される。クライアントAが第2のデータに関連付けられる要求2を送信し、そのデータはブロック3及び4を変更する。第2のデータ1608は、ブロック3及び4内の新たなデータをそれぞれ3”及び4”として示す。第2のデータ1608を有するブロックは、左上から右下に向かって斜めのクロスハッチを付けて示される。最後の状態1610が示されており、第1のデータ及び第2のデータがブロック2、3及び4を上書きする。
最後の状態1610において、ブロック3は第2のデータ3”を含むことに特に留意されたい。これは、要求2が要求1の後に到着することに起因する。要求2は、時間的に要求1の次になるので、要求2は要求1よりも最新であると見なされる。その例1600は、インデックスの最後の状態がいずれの場合でも同じであり、第2のデータが第1のデータよりも最新であるように、データセグメントのためのインデックスを更新する場合のいくつかのシナリオを示す。
例1600では、要求が受信されると、その要求は3つのステップにおいて処理される。第一に、追加/無効化モジュール1202のインスタンスが書込み要求のデータに置き換えられることになるデータセグメント内のデータを無効化する。第二に、インデックスが、Bツリー、2進ツリー又は類似の構造の形とる順方向マップ1104を有するものと想定され、再構成モジュール1204のインスタンスがそのツリーを再構成することによってインデックスを更新する。第三に、データロケーションモジュール1302が、データ記憶デバイス106がデータを格納した1又は複数のロケーションを用いて、インデックスを更新する。例えば、データロケーションモジュール1302は逆方向マップ1122を更新する場合がある。要求Aの場合の3つの動作がA1、A2及びA3として示される。要求Bの場合の3つの動作がB1、B2及びB3として示される。別の実施形態では、ステップA1及びA2を組み合わせて単一のステップにすることができる。同様に、A2及びA3を組み合わせることができる。ステップ又はステップ内で実行されるプロセスを並べ替えること、及び組み合わせることは、本発明の広範な範囲と一致する。
例1600は、要求A及び要求Bに関連付けられる動作の種々の組み合わせに基づいてツリーを更新する10個の異なるシーケンス(S1〜S10)の場合のツリーの状態を示す。10個の取り得る全てのシーケンスの場合の最後の状態は同じであり、それは望ましい結果であることに留意されたい。シーケンスS1〜S10は全てステップA1から開始する。これは、追加/無効化モジュール1202がシーケンス番号を割り当て、クライアントAからの要求1が受信された直後に、要求1のためのデータを無効化するものと想定する。別の実施形態では、シーケンス番号を割り当てることは、データを無効化することから切り離される場合がある。この実施形態では、クライアントBからの要求2の前にクライアントAからの要求1が受信され、追加/無効化モジュール1202の1又は複数のインスタンスが到着順に基づいて各要求にシーケンス番号を最初に割り当てる場合、各要求が割り当てられたシーケンス番号を有するので、ステップA1においてデータを無効化する処理が遅延され、データを無効化するために最初にB1が処理される場合がある。この事例では、B1がA1に先行する追加的なシーケンスの最後の状態(図示せず)は、シーケンスS1〜S10において示される状態と同じになる。
第1のシーケンスS1は、データセグメントのブロック1〜5を表す、ツリー内のノードの元の状態を表す(元の状態を表すノードは上記で示されたブロックの元の状態と合わせるために白抜きであることに留意されたい)。そのノードは、元の状態1602にあるブロック1〜5に対応する1〜5の範囲(「1:5」)を示す。シーケンスS1の第1のステップは、追加/無効化モジュール1202がデータセグメントのノードを無効化することである。これはステップA1において示されており、そのステップではノードは無効化されて示され、ノードの下のAは、要求Aがデータを無効化するためにサービスされていることを指示する。その範囲を無効化することは、右上から左下に向かうクロスハッチと、要求がデータを無効化したことを指示するノードの下の文字で表される。
簡単にするために、例1600において示されるシーケンスS1〜S10において、範囲1〜5の全体が無効化されているとして示されることに留意されたい。しかしながら、好ましい実施形態では、要求によって影響を及ぼされるブロックだけが無効化される。この無効化プロセス中に、追加/無効化モジュール1202は、インデックスの全て又は一部をロックする。
A2として示される、シーケンスS1の第2のステップは、再構成モジュール1204が、ツリーを再構成してブロック2及び3を分割することであり、それらのブロックは2’及び3’を指すであろう。この段階では、ブロック1、4及び5のためのロックが解除され、そのデータは元の状態において読み出すためにアクセス可能なままである。ブロック2及び3はツリーの中央ノードにおいて無効として示される。A3として示されるシーケンスS1の第3のステップは、データロケーションモジュール1302が、ブロック2’及び3’がデータ記憶デバイス106上に格納されたロケーションに基づいてツリーを更新することである。これは新たなブロック2’及び3’を示す中央ノードとして示されており、そのノードは、上記のクライアントAの更新1606の完了において示されるように、ステップA3の終了時にブロックの最後の状態に対応する水平のクロスハッチを有する。これは、逆方向マップ1122内の1又は複数のエントリを指すように順方向マップ1104のノード内のポインタを更新することによって果たされる場合がある。ここで、逆方向マップ1122内のエントリは第1のデータの物理アドレスを有する。この事例では、逆方向マップ1122は2’及び3’のための物理アドレスを有する。
B1として示される、シーケンスS1の第4のステップは、追加/無効化モジュール1202のインスタンスが第2のデータ3”及び4”によって上書きされることになるツリー内のノードを無効化することである。この事例では、第2のノード(2’:3’)及び第3のノード(4:5)が影響を及ぼされるので、いずれのノードも無効として示される(右から左へのクロスハッチ)。B2として示される、シーケンスS1の第5のステップは、再構成モジュール1204が2つのノードを再構成し、それにより2’を指すノード、3”:4”を指すノード、及びブロック5を指すノードを形成することである。3”:4”を指すノードは無効として示される。
B3として示される、シーケンスS1の第6のステップは、データ記憶デバイス106がブロック3”及び4”を格納した物理アドレス情報を用いてインデックスを更新するデータロケーションモジュール1302のインスタンスに対応する。この時点で、3”及び4”を表すノードは、最後の状態において示されており、左から右に向かうクロスハッチを付けられる。ステップB3は、最後の状態にあるブロック1〜5を表すツリーの部分を示し、ブロック1及び5は変更されず、ブロック2は、第1のデータ2’で更新されていることを示し、ブロック3及び4は第2のデータ3”及び4”で更新されていることを示す。ブロック3が第2のデータ3”で適切に示されること、及び図示されるシーケンスS1〜S10の全ての最後の状態は処理の順序にかかわらず同じであることに留意されたい。
シーケンスS2は、処理ステップA3及びB1の順序が入れ替えられることを除いてシーケンスS1と同じである。ステップB1において、要求Bをサービスする再構成モジュール1204のインスタンスが、ブロック3及び4を指す2つのノードを無効化する。ステップA3において、要求Aをサービスするデータロケーションモジュール1302のインスタンスが、2’及び3’が格納されたロケーションを用いてインデックスを更新するが、要求Bをサービスする再構成モジュール1204のインスタンスが第2のノード及び第3のノードから3及び4を未だ分離していないので、第2のノード(2”:3”)及び第3のノード(4:5)は無効のままである。再構成モジュール1204が、2’を指すノード及び5を指すノードを残して、3”:4”を指すノードを含むようにノードを再構成すると、2’及び5を指すノードは最後の状態にある。シーケンスS1におけるステップB3と同じであるステップB3の後に、シーケンスS2のノードは最後の状態にあり、シーケンスS1の最後の状態と一致する。
図16B及び図16Cにおいて示されるシーケンスS3〜S10は、ステップが並べ替えられることを除いて、シーケンスS1及びS2手順及び解析と同様の手順及び解析に従う。全てのシーケンスS1〜S10において、最後の状態は同じであることに留意されたい。本発明によれば、複数のプロセッサ又は複数のスレッドが、共通のデータ記憶デバイス106上に格納される同じデータセグメントに、又はデータ記憶デバイス106のアレイにわたってストライピングされるデータセグメントにアクセスすることができるようになる。本発明によれば、複数のプロセッサ又はスレッドが、データ保全性を保持しながら複数のサービス要求をサービスするために異なる完了時間を有することができるようになる。2つの記憶要求が示されるが、本発明は、同じデータセグメントにアクセスする3つ以上の同時に生じる記憶要求にも適用することができる。当業者は、本発明の他の利点、及び装置1200、1300のモジュール1202、1204、1302〜1308を実現する他の方法を理解するであろう。
本発明は、その精神又は不可欠な特徴から逸脱することなく、他の具体的な形で具現される場合もある。記述される実施形態は、あらゆる点において、例示にすぎず、限定するものと見なされるべきではない。それゆえ、本発明の範囲は、これまでの説明によってではなく、添付の特許請求の範囲によって指示される。特許請求の範囲の均等の範囲内に入る全ての変更が、特許請求の範囲内に含まれるべきである。

Claims (25)

  1. 記憶要求を調整するための装置であって、該装置は、
    第1の記憶要求を受信するのに応答して第1の追加データ記憶コマンドを生成する追加/無効化モジュールであって、該第1の記憶要求はデータ記憶デバイス上に格納されるデータセグメントのデータを第1のデータで上書きする要求を含み、該追加/無効化モジュールは、第2の記憶要求を受信するのに応答して第2の追加データ記憶コマンドを生成し、該第2の記憶要求は前記データセグメントの既存のデータを第2のデータで上書きする要求を含み、前記第1のデータ及び前記第2のデータは前記データセグメント内の共通オフセットに格納されることになる重複するデータの少なくとも一部を含み、前記第2の記憶要求は前記第1の記憶要求後に受信され、該追加/無効化モジュールは、該第1の記憶要求に応答して、前記データセグメントのデータを無効としてマークすることによってインデックスを更新し、無効としてマークされた該データは該第1のデータに置き換えられルデータを含み、該追加/無効化モジュールは、前記第2の記憶要求に応答して、前記データセグメントのデータを無効としてマークすることによってインデックスを更新し、無効としてマークされた該データは該第2のデータに置き換えられるデータを含む、追加/無効化モジュールと、
    前記第1のデータに基づいて前記インデックスを更新すると共に、前記第2のデータに基づいて前記インデックスを更新する再構成モジュールであって、該更新されるインデックスは、該インデックスが前記第2のデータに基づいて更新される前に前記第1のデータに基づいて更新されるときに、又は該インデックスが前記第1のデータに基づいて更新される前に前記第2のデータに基づいて更新されるときに、前記第2のデータが前記第1のデータよりも最新であることを指示するように編成される、再構成モジュールと
    を備え、前記追加/無効化モジュールが前記インデックスを更新し終わるまで、該追加/無効化モジュールは、前記インデックスへのアクセスを防ぎ、前記再構成モジュールが前記インデックスを更新し終わるまで、該再構成モジュールは、前記インデックスへのアクセスを防ぐことを特徴とする装置。
  2. 請求項1記載の装置において、該装置はさらにデータロケーション更新モジュールを備え、該データロケーション更新モジュールは、前記インデックスを、前記データ記憶デバイスが前記第1のデータを格納した場所を指示する第1の物理的なロケーションで更新すると共に、前記インデックスを、前記データ記憶デバイスが前記第2のデータを格納した場所を指示する第2の物理的なロケーションで更新し、前記データ記憶デバイスが前記第1のデータ及び前記第2のデータを格納した物理的なロケーションは前記データ記憶デバイスから受信され、前記更新されるインデックスは、前記インデックスが前記第2の物理的なロケーションに基づいて更新される前に前記第1の物理的なロケーションに基づいて更新されるときに、又は前記インデックスが前記第1の物理的なロケーションに基づいて更新される前に前記第2の物理的なロケーションに基づいて更新されるときに、前記第2の物理的なロケーションが前記第1の物理的なロケーションよりも最新であることを指示するように編成され、前記データロケーションモジュールが前記インデックスを更新し終わるまで、前記データロケーション更新モジュールは、前記インデックスへのアクセスを防ぐことを特徴とする装置。
  3. 請求項2記載の装置において、前記追加/無効化モジュールによる記憶要求の処理は前記再構成モジュールによる処理の前に行なわれ、前記再構成モジュールによる該記憶要求の処理は前記データロケーションモジュールによる処理の前に行なわれることを特徴とする装置。
  4. 請求項3記載の装置において、前記追加/無効化モジュール、前記再構成モジュール及び前記データロケーション更新モジュールのいずれかによる前記第1の記憶要求の処理は、前記追加/無効化モジュール、前記再構成モジュール及び前記データロケーション更新モジュールのいずれかによる前記第2の記憶要求の処理の前又は後に行なわれることを特徴とする装置。
  5. 請求項2記載の装置において、前記追加/無効化モジュール、前記再構成モジュール及び前記データロケーション更新モジュールのそれぞれのインスタンスは2つ以上のスレッドにおいて実行され、前記追加/無効化モジュール、前記再構成モジュール又は前記データロケーション更新モジュールが前記インデックスを更新し終わるまで、該追加/無効化モジュール、該再構成モジュール及び該データロケーション更新モジュールの前記インスタンスはそれぞれ、前記インデックスへのアクセスを防ぐことを特徴とする装置。
  6. 請求項2記載の装置において、前記追加/無効化モジュール、前記再構成モジュール及び前記データロケーション更新モジュールのそれぞれのインスタンスは並列に動作する2つ以上のプロセッサにおいて実行され、前記追加/無効化モジュール、前記再構成モジュール又は前記データロケーション更新モジュールが前記インデックスを更新し終わるまで、該追加/無効化モジュール、該再構成モジュール及び該データロケーション更新モジュールの各インスタンスは、前記インデックスへのアクセスを防ぐことを特徴とする装置。
  7. 前記読出し要求を含む記憶要求に応答して前記データセグメントの少なくとも一部を読み出す読出しモジュールをさらに備え、前記第1の記憶要求が前記追加/無効化モジュール、前記再構成モジュール及び前記データロケーション更新モジュールによってサービスされるまで、前記要求される読出しをサービスするのを遅らせる読出し遅延モジュールをさらに備える、請求項2に記載の装置。
  8. 請求項7記載の装置において、前記データセグメントの少なくとも一部を読み出す前記記憶要求は、前記第1の記憶要求後かつ前記第2の記憶要求前に前記装置によって受信され、前記読出し遅延モジュールは、前記第1の記憶要求及び前記第2の記憶要求の両方が前記追加/無効化モジュール、前記再構成モジュール及び前記データロケーション更新モジュールによってサービスされるまで、前記読出し要求をサービスするのを遅らせることを特徴とする装置。
  9. 請求項1記載の装置において、シーケンス番号を記憶要求と関連付けるシーケンス番号モジュールをさらに備え、割り当てられるシーケンス番号は、記憶要求が前記装置によって受信される順序を表し、前記再構成モジュールは、前記第1の記憶要求及び前記第2の記憶要求のそれぞれに割り当てられるシーケンス番号を用いることによって、前記第2のデータが前記第1のデータよりも最新であることを指示するように前記インデックスを編成することを特徴とする装置。
  10. 請求項1記載の装置において、前記第2のデータが前記第1のデータよりも最新であることを指示するように前記インデックスを編成することは、前記重複するデータにマッピングされる前記インデックスの部分を前記第2のデータで更新すること、及び前記再構成モジュールが、前記第1のデータに基づいて前記インデックスを更新する前に、前記第2のデータに基づいて前記インデックスを更新する場合には、前記第2のデータへの前記マッピングを保持することを含むことを特徴とする装置。
  11. 請求項1記載の装置において、前記追加/無効化モジュールは前記データセグメントの既存のデータを上書きする3つ以上の記憶要求を受信し、前記再構成モジュールは、前記再構成モジュールが前記記憶要求のデータを用いて前記インデックスを更新する順序に関係なく、前記記憶要求の到着順に基づいて、前記記憶要求のデータを用いて前記インデックスを編成することを特徴とする装置。
  12. 請求項1記載の装置において、前記インデックスは2つ以上の領域にさらに分割されると共に、前記インデックスの第1の領域に関連する記憶要求がサービスされ、一方、前記追加/無効化モジュール及び前記再構成モジュールのうちの1つ又は複数のモジュールの付加的なインスタンスが、第2の領域に関連する記憶要求をサービスする間に、前記インデックスの第2の領域へのアクセスを防ぐことを特徴とする装置。
  13. 請求項1記載の装置において、前記第1の記憶要求は第1のクライアントから送信され、前記第2の記憶要求は第2のクライアントから送信されることを特徴とする装置。
  14. 請求項1記載の装置において、前記第1の要求に応答して、置き換えられる前記データセグメントの前記データを無効としてマークすることによって前記インデックスを更新することは、ビットマップの1つ又は複数のビットをマークすることをさらに含み、前記ビットマップ内の前記ビットは、前記第1のデータ及び前記第2のデータに置き換えられる前記データセグメントの前記データが存在する、前記データ記憶デバイス内の1つ又は複数のロケーションに対応することを特徴とする装置。
  15. 請求項1記載の装置において、前記第1の要求に応答して、置き換えられる前記データセグメントの前記データを無効としてマークすることによって前記インデックスを更新することは、前記再構成モジュールが前記第1のデータ及び前記第2のデータに基づいて前記インデックスを更新するまで、前記データセグメント全体を無効として一時的にマークし、その後、置き換えられるデータ以外の前記データセグメントのデータが有効であることを指示するように前記インデックスを更新することをさらに含むことを特徴とする記載の装置。
  16. 請求項1記載の装置において、前記第1の要求に応答して、置き換えられる前記データセグメントの前記データを無効としてマークすることによって前記インデックスを更新することは、前記第1のデータ及び前記第2のデータに置き換えられる前記データセグメントの部分が無効であることを指示すると共に前記第1のデータ及び前記第2のデータに置き換えられない前記データセグメントの部分が有効であることを指示するリストを生成することをさらに含むことを特徴とする装置。
  17. 請求項1記載の装置において、前記第1の記憶要求及び前記第2の記憶要求のうちの1つ又は複数は、概ねデータを伴うことなく受信されることを特徴とする装置。
  18. 請求項1記載の装置において、前記第1の追加データ記憶コマンド及び前記第2の追加データ記憶コマンドのうちの1つ又は複数は、概ねデータを伴うことなく、前記データ記憶デバイスに送信されることを特徴とする装置。
  19. 請求項1記載の装置において、記憶要求及び追加データ記憶コマンドのうちの少なくとも一方が、ダイレクトメモリアクセス(「DMA」)プロセス又はリモートDMA(「RDMA」)プロセスを開始して、前記データセグメントのデータを前記データ記憶デバイスに転送することを特徴とする装置。
  20. 記憶要求を調整するためのシステムであって、
    データ記憶デバイスと、
    前記データ記憶デバイスを制御する記憶コントローラとを備え、前記記憶コントローラは、
    データ記憶デバイス上に格納されるデータセグメントのデータを第1のデータで上書きするための第1の記憶要求を受信するのに応答して第1の追加データ記憶コマンドを生成し、該データセグメントの既存のデータを第2のデータで上書きするための第2の記憶要求を受信するのに応答して第2の追加データ記憶コマンドを生成する追加/無効化モジュールであって、該第1のデータ及び該第2のデータは前記データセグメント内の共通オフセットに格納されることになる重複するデータの少なくとも一部を含み、前記第2の記憶要求は前記第1の記憶要求後に受信され、該追加/無効化モジュールは、該第1の記憶要求に応答して、前記データセグメントのデータを無効としてマークすることによってインデックスを更新し、無効としてマークされた該データは該第1のデータに置き換えられるデータを含み、該追加/無効化モジュールは、前記第2の記憶要求に応答して、前記データセグメントのデータを無効としてマークすることによってインデックスを更新し、無効としてマークされた該データは該第2のデータに置き換えられるデータを含む、追加/無効化モジュールと、
    前記第1のデータに基づいて前記インデックスを更新すると共に、前記第2のデータに基づいて前記インデックスを更新する再構成モジュールであって、該更新されるインデックスは、該インデックスが前記第2のデータに基づいて更新される前に前記第1のデータに基づいて更新されるときに、又は該インデックスが前記第1のデータに基づいて更新される前に前記第2のデータに基づいて更新されるときに、前記第2のデータが前記第1のデータよりも最新であることを指示するように編成される、再構成モジュールと
    を備え、前記追加/無効化モジュールが前記インデックスを更新し終わるまで、該追加/無効化モジュールは、前記インデックスへのアクセスを防ぎ、前記再構成モジュールが前記インデックスを更新し終わるまで、該再構成モジュールは、前記インデックスへのアクセスを防ぐことを特徴とするシステム。
  21. 請求項20記載のシステムにおいて、前記データ記憶デバイスは固体記憶デバイスを含むことを特徴とするシステム。
  22. 請求項20記載のシステムにおいて、前記第1の記憶要求及び前記第2の記憶要求は別々の要求側デバイスから受信され、前記別々の要求側デバイスはクライアント及びサーバのうちの1つ又は複数を含むことを特徴とするシステム。
  23. 請求項22記載のシステムにおいて、前記要求側デバイスのうちの少なくとも1つはクライアントを含み、前記追加/無効化モジュール及び前記再構成モジュールは前記クライアントから独立して動作することを特徴とするシステム。
  24. 請求項20記載のシステムにおいて、該システムは更にサーバを備え、前記記憶コントローラは前記サーバ内にあることを特徴とするシステム。
  25. 記憶要求を調整するための動作を実行するために実行可能なコンピュータ使用可能プログラムコードを有するコンピュータ読み取り可能記憶媒体を含むコンピュータプログラム製品であって、該コンピュータプログラム製品は、
    データ記憶デバイス上に格納されるデータセグメントの既存のデータを第1のデータで上書きする第1の記憶要求を受信するのに応答して第1の追加データ記憶コマンドを生成するステップ、
    前記データセグメントの既存のデータを第2のデータで上書きする第2の記憶要求に応答して第2の追加データ記憶コマンドを生成するステップであって、前記第1のデータ及び該第2のデータは前記データセグメント内の共通オフセットに格納されることになる重複するデータの少なくとも一部を含み、前記第2の記憶要求は前記第1の記憶要求後に受信される、生成するステップと、
    前記第1の記憶要求に応答して、前記データセグメントのデータを無効としてマークすることによってインデックスを更新するステップであって、該無効としてマークされるデータは前記第1のデータに置き換えられる、更新するステップと、
    前記第2の記憶要求に応答して、前記データセグメントのデータを無効としてマークすることによってインデックスを更新するステップであって、該無効としてマークされるデータは前記第2のデータに置き換えられ、前記第1の記憶要求及び前記第2の記憶要求のうちの一方に対する追加データ記憶コマンドが生成されると共に、前記第1の記憶要求及び前記第2の記憶要求のうちの一方に対して前記データセグメントの前記データを無効としてマークすることによって前記インデックスが更新されるまで、前記インデックスへのアクセスを防ぐ、更新するステップと、
    前記第1のデータに基づいて前記インデックスを更新するステップと、
    前記第2のデータに基づいて前記インデックスを更新するステップであって、前記更新されるインデックスは、前記インデックスが前記第2のデータに基づいて更新される前に前記第1のデータに基づいて更新されるか、又は前記インデックスが前記第1のデータに基づいて更新される前に前記第2のデータに基づいて更新されるときに、前記第2のデータが前記第1のデータよりも最新であることを指示するように編成される、更新するステップと
    を含み、前記インデックスが前記第1のデータ及び前記第2のデータのうちの一方に基づいて更新されるまで、前記インデックスへのアクセスを防ぐことを特徴とするコンピュータプログラム製品。
JP2011504100A 2008-04-06 2009-04-06 マルチプロセッサ/マルチスレッド環境における記憶要求を調整するための装置、システム及び方法 Withdrawn JP2011521315A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/098,435 US7836226B2 (en) 2007-12-06 2008-04-06 Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US12/098,435 2008-04-06
PCT/US2009/039618 WO2009126557A1 (en) 2008-04-06 2009-04-06 Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment

Publications (1)

Publication Number Publication Date
JP2011521315A true JP2011521315A (ja) 2011-07-21

Family

ID=40762259

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011504100A Withdrawn JP2011521315A (ja) 2008-04-06 2009-04-06 マルチプロセッサ/マルチスレッド環境における記憶要求を調整するための装置、システム及び方法

Country Status (6)

Country Link
US (5) US7836226B2 (ja)
EP (1) EP2286327A1 (ja)
JP (1) JP2011521315A (ja)
KR (1) KR20110048486A (ja)
CN (1) CN102084331A (ja)
WO (1) WO2009126557A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015162002A (ja) * 2014-02-26 2015-09-07 富士通株式会社 記憶制御装置、記憶制御方法および記憶制御プログラム

Families Citing this family (137)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7953961B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
US8019944B1 (en) 2005-09-28 2011-09-13 Oracle America, Inc. Checking for a memory ordering violation after a speculative cache write
US8370576B1 (en) 2005-09-28 2013-02-05 Oracle America, Inc. Cache rollback acceleration via a bank based versioning cache ciruit
US8051247B1 (en) 2005-09-28 2011-11-01 Oracle America, Inc. Trace based deallocation of entries in a versioning cache circuit
US8024522B1 (en) 2005-09-28 2011-09-20 Oracle America, Inc. Memory ordering queue/versioning cache circuit
US7877630B1 (en) 2005-09-28 2011-01-25 Oracle America, Inc. Trace based rollback of a speculatively updated cache
US7937564B1 (en) 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US8032710B1 (en) 2005-09-28 2011-10-04 Oracle America, Inc. System and method for ensuring coherency in trace execution
US7676634B1 (en) 2005-09-28 2010-03-09 Sun Microsystems, Inc. Selective trace cache invalidation for self-modifying code via memory aging
US7966479B1 (en) 2005-09-28 2011-06-21 Oracle America, Inc. Concurrent vs. low power branch prediction
US7949854B1 (en) 2005-09-28 2011-05-24 Oracle America, Inc. Trace unit with a trace builder
US8499293B1 (en) 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
US8037285B1 (en) 2005-09-28 2011-10-11 Oracle America, Inc. Trace unit
US7987342B1 (en) 2005-09-28 2011-07-26 Oracle America, Inc. Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer
US7779307B1 (en) * 2005-09-28 2010-08-17 Oracle America, Inc. Memory ordering queue tightly coupled with a versioning cache circuit
US8015359B1 (en) 2005-09-28 2011-09-06 Oracle America, Inc. Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit
US8370609B1 (en) 2006-09-27 2013-02-05 Oracle America, Inc. Data cache rollbacks for failed speculative traces with memory operations
US8010745B1 (en) 2006-09-27 2011-08-30 Oracle America, Inc. Rolling back a speculative update of a non-modifiable cache line
CN101715575A (zh) 2006-12-06 2010-05-26 弗森多系统公司(dba弗森-艾奥) 采用数据管道管理数据的装置、系统和方法
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8255373B2 (en) * 2008-10-24 2012-08-28 Microsoft Corporation Atomic multiple modification of data in a distributed storage system
JP5241550B2 (ja) * 2009-02-12 2013-07-17 株式会社日立製作所 ファイル入出力方法
EP2460104A4 (en) * 2009-07-27 2016-10-05 Ibm METHOD AND SYSTEM FOR TRANSFORMING LOGICAL DATA OBJECTS FOR STORAGE USE
US8887144B1 (en) 2009-09-04 2014-11-11 Amazon Technologies, Inc. Firmware updates during limited time period
US8214653B1 (en) 2009-09-04 2012-07-03 Amazon Technologies, Inc. Secured firmware updates
US10177934B1 (en) 2009-09-04 2019-01-08 Amazon Technologies, Inc. Firmware updates inaccessible to guests
US9565207B1 (en) 2009-09-04 2017-02-07 Amazon Technologies, Inc. Firmware updates from an external channel
US8102881B1 (en) 2009-09-08 2012-01-24 Amazon Technologies, Inc. Streamlined guest networking in a virtualized environment
US8971538B1 (en) 2009-09-08 2015-03-03 Amazon Technologies, Inc. Firmware validation from an external channel
US8601170B1 (en) 2009-09-08 2013-12-03 Amazon Technologies, Inc. Managing firmware update attempts
US8155146B1 (en) * 2009-09-09 2012-04-10 Amazon Technologies, Inc. Stateless packet segmentation and processing
US8300641B1 (en) 2009-09-09 2012-10-30 Amazon Technologies, Inc. Leveraging physical network interface functionality for packet processing
US8959611B1 (en) 2009-09-09 2015-02-17 Amazon Technologies, Inc. Secure packet management for bare metal access
US8640220B1 (en) 2009-09-09 2014-01-28 Amazon Technologies, Inc. Co-operative secure packet management
US8381264B1 (en) 2009-09-10 2013-02-19 Amazon Technologies, Inc. Managing hardware reboot and reset in shared environments
WO2011143628A2 (en) 2010-05-13 2011-11-17 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US10013354B2 (en) 2010-07-28 2018-07-03 Sandisk Technologies Llc Apparatus, system, and method for atomic storage operations
US9170740B2 (en) * 2010-08-06 2015-10-27 Netapp, Inc. System and method for providing implicit unmaps in thinly provisioned virtual tape library systems
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US8428087B1 (en) 2010-09-17 2013-04-23 Amazon Technologies, Inc. Framework for stateless packet tunneling
US9684590B2 (en) 2010-10-25 2017-06-20 Seagate Technology Llc Storing corresponding data units in a common storage unit
US9104326B2 (en) * 2010-11-15 2015-08-11 Emc Corporation Scalable block data storage using content addressing
US9569320B2 (en) 2010-12-01 2017-02-14 Seagate Technology Llc Non-volatile memory program failure recovery via redundant arrays
US8589406B2 (en) * 2011-03-03 2013-11-19 Hewlett-Packard Development Company, L.P. Deduplication while rebuilding indexes
US8462780B2 (en) 2011-03-30 2013-06-11 Amazon Technologies, Inc. Offload device-based stateless packet processing
US20120311271A1 (en) * 2011-06-06 2012-12-06 Sanrad, Ltd. Read Cache Device and Methods Thereof for Accelerating Access to Data in a Storage Area Network
US9417894B1 (en) 2011-06-15 2016-08-16 Ryft Systems, Inc. Methods and apparatus for a tablet computer system incorporating a reprogrammable circuit module
US20120324143A1 (en) 2011-06-15 2012-12-20 Data Design Corporation Methods and apparatus for data access by a reprogrammable circuit module
US8966172B2 (en) 2011-11-15 2015-02-24 Pavilion Data Systems, Inc. Processor agnostic data storage in a PCIE based shared storage enviroment
US9251086B2 (en) * 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9652182B2 (en) 2012-01-31 2017-05-16 Pavilion Data Systems, Inc. Shareable virtual non-volatile storage device for a server
US8682922B2 (en) * 2012-03-20 2014-03-25 Schlumberger Technology Corporation Method and system for accessing a virtual seismic cube
US9003162B2 (en) * 2012-06-20 2015-04-07 Microsoft Technology Licensing, Llc Structuring storage based on latch-free B-trees
GB2503583B (en) * 2012-06-27 2015-06-17 Nordic Semiconductor Asa Memory Protection
CN103677754A (zh) * 2012-09-21 2014-03-26 国际商业机器公司 用于优化应用程序的并行构建的方法和系统
JP6005533B2 (ja) * 2013-01-17 2016-10-12 株式会社東芝 記憶装置および記憶方法
US9489297B2 (en) 2013-01-21 2016-11-08 Sandisk Technologies Llc Pregroomer for storage array
US9329991B2 (en) * 2013-01-22 2016-05-03 Seagate Technology Llc Translation layer partitioned between host and controller
US9122587B2 (en) * 2013-03-06 2015-09-01 Seagate Technology Llc Self recovery in a solid state drive
US11966355B2 (en) * 2013-03-10 2024-04-23 Mellanox Technologies, Ltd. Network adapter with a common queue for both networking and data manipulation work requests
US9342256B2 (en) 2013-03-14 2016-05-17 SanDisk Technologies, Inc. Epoch based storage management for a storage device
JP6089890B2 (ja) * 2013-03-29 2017-03-08 富士通株式会社 ストレージ制御装置、ストレージ制御装置の制御方法およびストレージ制御装置の制御プログラム
US9519591B2 (en) 2013-06-22 2016-12-13 Microsoft Technology Licensing, Llc Latch-free, log-structured storage for multiple access methods
US9986028B2 (en) * 2013-07-08 2018-05-29 Intel Corporation Techniques to replicate data between storage servers
JP6443794B2 (ja) * 2013-08-16 2018-12-26 エルエスアイ コーポレーション ホストとコントローラとの間でパーティション化された変換レイヤ
US9418131B1 (en) 2013-09-24 2016-08-16 Emc Corporation Synchronization of volumes
US9037822B1 (en) 2013-09-26 2015-05-19 Emc Corporation Hierarchical volume tree
US9208162B1 (en) 2013-09-26 2015-12-08 Emc Corporation Generating a short hash handle
US9378106B1 (en) 2013-09-26 2016-06-28 Emc Corporation Hash-based replication
EP3086234A4 (en) * 2013-12-17 2017-10-25 Nec Corporation Write information storage device, method, and recording medium
US9442941B1 (en) 2014-03-28 2016-09-13 Emc Corporation Data structure for hash digest metadata component
US9367398B1 (en) 2014-03-28 2016-06-14 Emc Corporation Backing up journal data to a memory of another node
US9606870B1 (en) 2014-03-31 2017-03-28 EMC IP Holding Company LLC Data reduction techniques in a flash-based key/value cluster storage
US9342465B1 (en) 2014-03-31 2016-05-17 Emc Corporation Encrypting data in a flash-based contents-addressable block device
US9442811B2 (en) 2014-04-29 2016-09-13 Vmware, Inc. Emulating a stretched storage device using a shared replicated storage device
US9423956B2 (en) * 2014-04-29 2016-08-23 Vmware, Inc. Emulating a stretched storage device using a shared storage device
US10127244B2 (en) * 2014-06-04 2018-11-13 Harris Corporation Systems and methods for dynamic data storage
US9396243B1 (en) 2014-06-27 2016-07-19 Emc Corporation Hash-based replication using short hash handle and identity bit
US9514211B2 (en) 2014-07-20 2016-12-06 Microsoft Technology Licensing, Llc High throughput data modifications using blind update operations
US10073649B2 (en) * 2014-07-24 2018-09-11 Hewlett Packard Enterprise Development Lp Storing metadata
US9304889B1 (en) 2014-09-24 2016-04-05 Emc Corporation Suspending data replication
US10025843B1 (en) 2014-09-24 2018-07-17 EMC IP Holding Company LLC Adjusting consistency groups during asynchronous replication
US9740632B1 (en) 2014-09-25 2017-08-22 EMC IP Holding Company LLC Snapshot efficiency
US10200472B2 (en) * 2014-10-06 2019-02-05 Intel Corporation Coordination for one-sided memory access in a partitioned global address space
US9712619B2 (en) 2014-11-04 2017-07-18 Pavilion Data Systems, Inc. Virtual non-volatile memory express drive
US9565269B2 (en) 2014-11-04 2017-02-07 Pavilion Data Systems, Inc. Non-volatile memory express over ethernet
KR102131650B1 (ko) * 2014-12-23 2020-07-09 한국전자통신연구원 데이터 처리 장치 및 방법
US11829333B2 (en) * 2015-05-08 2023-11-28 Chicago Mercantile Exchange Inc. Thread safe lock-free concurrent write operations for use with multi-threaded in-line logging
US9792248B2 (en) 2015-06-02 2017-10-17 Microsoft Technology Licensing, Llc Fast read/write between networked computers via RDMA-based RPC requests
US10725963B2 (en) 2015-09-12 2020-07-28 Microsoft Technology Licensing, Llc Distributed lock-free RDMA-based memory allocation and de-allocation
CN105282244B (zh) * 2015-09-29 2018-10-02 华为技术有限公司 一种数据处理方法、装置、服务器及控制器
US10713210B2 (en) 2015-10-13 2020-07-14 Microsoft Technology Licensing, Llc Distributed self-directed lock-free RDMA-based B-tree key-value manager
US9933954B2 (en) * 2015-10-19 2018-04-03 Nxp Usa, Inc. Partitioned memory having pipeline writes
US10291739B2 (en) * 2015-11-19 2019-05-14 Dell Products L.P. Systems and methods for tracking of cache sector status
US10375167B2 (en) 2015-11-20 2019-08-06 Microsoft Technology Licensing, Llc Low latency RDMA-based distributed storage
US10152527B1 (en) 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
US10176216B2 (en) * 2016-02-01 2019-01-08 International Business Machines Corporation Verifying data consistency
US10310951B1 (en) 2016-03-22 2019-06-04 EMC IP Holding Company LLC Storage system asynchronous data replication cycle trigger with empty cycle detection
US10324635B1 (en) 2016-03-22 2019-06-18 EMC IP Holding Company LLC Adaptive compression for data replication in a storage system
US9959073B1 (en) 2016-03-30 2018-05-01 EMC IP Holding Company LLC Detection of host connectivity for data migration in a storage system
US10095428B1 (en) 2016-03-30 2018-10-09 EMC IP Holding Company LLC Live migration of a tree of replicas in a storage system
US10565058B1 (en) 2016-03-30 2020-02-18 EMC IP Holding Company LLC Adaptive hash-based data replication in a storage system
US9959063B1 (en) 2016-03-30 2018-05-01 EMC IP Holding Company LLC Parallel migration of multiple consistency groups in a storage system
US10296250B2 (en) * 2016-06-08 2019-05-21 Intel Corporation Method and apparatus for improving performance of sequential logging in a storage device
US10013200B1 (en) 2016-06-29 2018-07-03 EMC IP Holding Company LLC Early compression prediction in a storage system with granular block sizes
US10083067B1 (en) 2016-06-29 2018-09-25 EMC IP Holding Company LLC Thread management in a storage system
US10152232B1 (en) 2016-06-29 2018-12-11 EMC IP Holding Company LLC Low-impact application-level performance monitoring with minimal and automatically upgradable instrumentation in a storage system
US10048874B1 (en) 2016-06-29 2018-08-14 EMC IP Holding Company LLC Flow control with a dynamic window in a storage system with latency guarantees
US9858151B1 (en) * 2016-10-03 2018-01-02 International Business Machines Corporation Replaying processing of a restarted application
CN106776823B (zh) * 2016-11-25 2018-12-07 华为技术有限公司 一种时序数据管理方法、设备和装置
US11269888B1 (en) * 2016-11-28 2022-03-08 Amazon Technologies, Inc. Archival data storage for structured data
US10963183B2 (en) * 2017-03-20 2021-03-30 Intel Corporation Technologies for fine-grained completion tracking of memory buffer accesses
US10547683B2 (en) * 2017-06-26 2020-01-28 Christopher Squires Object based storage systems that utilize direct memory access
US10637846B2 (en) * 2017-08-30 2020-04-28 Capital One Services, Llc System and method for cloud-based analytics
US11733873B2 (en) 2017-12-01 2023-08-22 Micron Technology, Inc. Wear leveling in solid state drives
US10846955B2 (en) 2018-03-16 2020-11-24 Micron Technology, Inc. Black box data recorder for autonomous driving vehicle
US11094148B2 (en) 2018-06-18 2021-08-17 Micron Technology, Inc. Downloading system memory data in response to event detection
JP7175658B2 (ja) * 2018-07-25 2022-11-21 キヤノン株式会社 映像配信装置、配信方法及びプログラム
US10901847B2 (en) * 2018-07-31 2021-01-26 EMC IP Holding Company LLC Maintaining logical to physical address mapping during in place sector rebuild
US10852965B2 (en) * 2018-10-30 2020-12-01 EMC IP Holding Company LLC Write folding mechanism using reusable shared striping in a storage system
US11782605B2 (en) * 2018-11-29 2023-10-10 Micron Technology, Inc. Wear leveling for non-volatile memory using data write counters
KR20200073604A (ko) * 2018-12-14 2020-06-24 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법
US10936213B2 (en) * 2019-03-13 2021-03-02 Micron Technology, Inc. Techniques for secure writes by non-privileged users
US11079970B2 (en) * 2019-04-22 2021-08-03 Quantum Corporation Storage array supporting multi-thread access
KR102251869B1 (ko) * 2019-05-24 2021-05-12 서강대학교 산학협력단 파일 시스템 및 이를 이용한 단일 파일 쓰기 병렬화 방법
KR20200143871A (ko) * 2019-06-17 2020-12-28 삼성전자주식회사 스토리지를 포함하는 전자 장치 및 그의 스토리지 이용 방법
CN110286858B (zh) * 2019-06-26 2024-07-05 北京奇艺世纪科技有限公司 一种数据处理方法及相关设备
CN111274175A (zh) * 2020-01-15 2020-06-12 杭州华冲科技有限公司 一种基于数据乒乓填充的dma工作方法
US11748020B2 (en) 2020-02-28 2023-09-05 Nebuon, Inc. Reestablishing redundancy in redundant storage
US11429543B2 (en) * 2020-10-22 2022-08-30 Micron Technology, Inc. Managed NAND flash memory region control against endurance hacking
CN112365904B (zh) * 2020-11-16 2021-08-10 深圳市天视通技术有限公司 一种延长报警录像存储时间的方法、装置、设备及介质
US11847100B2 (en) 2020-11-19 2023-12-19 Alibaba Group Holding Limited Distributed file system servicing random-access operations
WO2022225576A1 (en) * 2021-07-20 2022-10-27 Futurewei Technologies, Inc. Rdma append verb
US12061520B2 (en) * 2022-09-16 2024-08-13 Netapp, Inc. Data storage system drive utilization
CN117851399A (zh) * 2022-09-30 2024-04-09 戴尔产品有限公司 数据读取方法、数据更新方法、电子设备和程序产品
WO2024191315A1 (ru) * 2023-03-13 2024-09-19 Публичное Акционерное Общество "Сбербанк России" Способ и система мониторинга автоматизированных систем

Family Cites Families (713)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB123416A (en) 1918-02-28 1919-02-27 John Buchanan Composite Valve for all Classes of Internal Combustion Engines.
US2765207A (en) 1954-10-18 1956-10-02 Swing A Way Mfg Company Pivotally mounted enclosure for can opener
US2835964A (en) 1956-07-27 1958-05-27 Fusarc Ltd Manipulators for supporting work for welding or other operations
US4571674A (en) 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US4980861A (en) 1987-01-16 1990-12-25 Microchip Technology Incorporated NAND stack ROM
JPH02105730A (ja) 1988-10-14 1990-04-18 Sony Corp データ記録方法
JPH02148235A (ja) * 1988-11-30 1990-06-07 Toshiba Corp データ退避方式
US5359726A (en) 1988-12-22 1994-10-25 Thomas Michael E Ferroelectric storage device used in place of a rotating disk drive unit in a computer system
US5394531A (en) 1989-04-03 1995-02-28 International Business Machines Corporation Dynamic storage allocation system for a prioritized cache
US7190617B1 (en) 1989-04-13 2007-03-13 Sandisk Corporation Flash EEprom system
US5371885A (en) 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
US5247658A (en) 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5111463A (en) 1989-11-09 1992-05-05 Exabyte Corporation Error correction method and apparatus
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5261068A (en) 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
US5193184A (en) 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
US5544347A (en) 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5291496A (en) 1990-10-18 1994-03-01 The United States Of America As Represented By The United States Department Of Energy Fault-tolerant corrector/detector chip for high-speed data processing
GB2251324B (en) 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
US5274799A (en) 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
US5325509A (en) 1991-03-05 1994-06-28 Zitel Corporation Method of operating a cache memory including determining desirability of cache ahead or cache behind based on a number of available I/O operations
US5438671A (en) 1991-07-19 1995-08-01 Dell U.S.A., L.P. Method and system for transferring compressed bytes of information between separate hard disk drive units
US5465355A (en) 1991-09-04 1995-11-07 International Business Machines Corporation Establishing and restoring paths in a data processing I/O system
US5313475A (en) 1991-10-31 1994-05-17 International Business Machines Corporation ECC function with self-contained high performance partial write or read/modify/write and parity look-ahead interface scheme
US5323489A (en) 1991-11-14 1994-06-21 Bird Peter L Method and apparatus employing lookahead to reduce memory bank contention for decoupled operand references
US5469555A (en) 1991-12-19 1995-11-21 Opti, Inc. Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system
JP3058743B2 (ja) 1992-01-21 2000-07-04 株式会社日立製作所 ディスクアレイ制御装置
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5596736A (en) 1992-07-22 1997-01-21 Fujitsu Limited Data transfers to a backing store of a dynamically mapped data storage system in which data has nonsequential logical addresses
US5381528A (en) 1992-10-15 1995-01-10 Maxtor Corporation Demand allocation of read/write buffer partitions favoring sequential read cache
US5416915A (en) 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
US5845329A (en) 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
US5459850A (en) 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5485595A (en) 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5479638A (en) 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US6078520A (en) 1993-04-08 2000-06-20 Hitachi, Ltd. Flash memory control method and information processing system therewith
JP2784440B2 (ja) 1993-04-14 1998-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション データ・ページの転送制御方法
CA2121852A1 (en) 1993-04-29 1994-10-30 Larry T. Jost Disk meshing and flexible storage mapping with enhanced flexible caching
US5499354A (en) 1993-05-19 1996-03-12 International Business Machines Corporation Method and means for dynamic cache management by variable space and time binding and rebinding of cache extents to DASD cylinders
US5765207A (en) 1993-06-22 1998-06-09 International Business Machines Corporation Recursive hardware state machine
US5592641A (en) 1993-06-30 1997-01-07 Intel Corporation Method and device for selectively locking write access to blocks in a memory array using write protect inputs and block enabled status
US5682497A (en) 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5535399A (en) 1993-09-30 1996-07-09 Quantum Corporation Solid state disk drive unit having on-board backup non-volatile memory
JPH086854A (ja) 1993-12-23 1996-01-12 Unisys Corp アウトボードファイルキャッシュ外部処理コンプレックス
US5809527A (en) 1993-12-23 1998-09-15 Unisys Corporation Outboard file cache system
GB9326499D0 (en) 1993-12-24 1994-03-02 Deas Alexander R Flash memory system with arbitrary block size
US5559988A (en) 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US5379304A (en) 1994-01-28 1995-01-03 International Business Machines Corporation Method and structure for providing error correction code and parity for each byte on SIMM's
US5553261A (en) 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5696917A (en) 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US5504882A (en) 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
IT1274925B (it) 1994-09-21 1997-07-29 Texas Instruments Italia Spa Architettura di memoria per dischi a stato solido
US5845331A (en) 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
JPH08153014A (ja) 1994-11-30 1996-06-11 Hitachi Ltd クライアントサーバシステム
DE19540915A1 (de) 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5541886A (en) 1994-12-27 1996-07-30 Intel Corporation Method and apparatus for storing control information in multi-bit non-volatile memory arrays
US5566315A (en) 1994-12-30 1996-10-15 Storage Technology Corporation Process of predicting and controlling the use of cache memory in a computer system
US5651133A (en) 1995-02-01 1997-07-22 Hewlett-Packard Company Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system
US5745671A (en) 1995-02-28 1998-04-28 International Business Machines Corporation Data storage system with localized XOR function
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
US5742787A (en) 1995-04-10 1998-04-21 Intel Corporation Hardware reset of a write state machine for flash memory
US5682499A (en) 1995-06-06 1997-10-28 International Business Machines Corporation Directory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
DE69615278T2 (de) 1995-06-06 2002-06-27 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto SDRAM-Datenzuweisungsanordnung und -verfahren
JP3732869B2 (ja) 1995-06-07 2006-01-11 株式会社日立製作所 外部記憶装置
JPH096706A (ja) 1995-06-22 1997-01-10 Hitachi Ltd 疎結合計算機システム
US6081878A (en) 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6757800B1 (en) 1995-07-31 2004-06-29 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5838614A (en) 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US6801979B1 (en) 1995-07-31 2004-10-05 Lexar Media, Inc. Method and apparatus for memory control circuit
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5930815A (en) 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US5799200A (en) 1995-09-28 1998-08-25 Emc Corporation Power failure responsive apparatus and method having a shadow dram, a flash ROM, an auxiliary battery, and a controller
US5933847A (en) 1995-09-28 1999-08-03 Canon Kabushiki Kaisha Selecting erase method based on type of power supply for flash EEPROM
US5893138A (en) 1995-10-02 1999-04-06 International Business Machines Corporation System and method for improving channel hardware performance for an array controller
US6470405B2 (en) 1995-10-19 2002-10-22 Rambus Inc. Protocol for communication with dynamic memory
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US6330688B1 (en) 1995-10-31 2001-12-11 Intel Corporation On chip error correction for devices in a solid state drive
US6745292B1 (en) 1995-12-08 2004-06-01 Ncr Corporation Apparatus and method for selectively allocating cache lines in a partitioned cache shared by multiprocessors
US5758118A (en) 1995-12-08 1998-05-26 International Business Machines Corporation Methods and data storage devices for RAID expansion by on-line addition of new DASDs
US5734861A (en) 1995-12-12 1998-03-31 International Business Machines Corporation Log-structured disk array with garbage collection regrouping of tracks to preserve seek affinity
US5787486A (en) 1995-12-15 1998-07-28 International Business Machines Corporation Bus protocol for locked cycle cache hit
JPH09198336A (ja) 1996-01-22 1997-07-31 Nec Corp 二次記憶装置への遠隔アクセス方法
US5757567A (en) 1996-02-08 1998-05-26 International Business Machines Corporation Method and apparatus for servo control with high efficiency gray code for servo track ID
US6385710B1 (en) 1996-02-23 2002-05-07 Sun Microsystems, Inc. Multiple-mode external cache subsystem
US5835964A (en) 1996-04-29 1998-11-10 Microsoft Corporation Virtual memory system with hardware TLB and unmapped software TLB updated from mapped task address maps using unmapped kernel address map
US5805501A (en) 1996-05-22 1998-09-08 Macronix International Co., Ltd. Flash memory device with multiple checkpoint erase suspend logic
US5922080A (en) 1996-05-29 1999-07-13 Compaq Computer Corporation, Inc. Method and apparatus for performing error detection and correction with memory devices
US6424872B1 (en) 1996-08-23 2002-07-23 Fieldbus Foundation Block oriented control system
US5996054A (en) 1996-09-12 1999-11-30 Veritas Software Corp. Efficient virtualized mapping space for log device data storage system
US6201739B1 (en) 1996-09-20 2001-03-13 Intel Corporation Nonvolatile writeable memory with preemption pin
US5798968A (en) 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
US5960462A (en) 1996-09-26 1999-09-28 Intel Corporation Method and apparatus for analyzing a main memory configuration to program a memory controller
US5754567A (en) 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
TW349196B (en) 1996-10-18 1999-01-01 Ibm Cached synchronous DRAM architecture having a mode register programmable cache policy
US5890192A (en) 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US5822759A (en) 1996-11-22 1998-10-13 Versant Object Technology Cache system
JPH10154101A (ja) 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US5867430A (en) 1996-12-20 1999-02-02 Advanced Micro Devices Inc Bank architecture for a non-volatile memory enabling simultaneous reading and writing
US6279069B1 (en) * 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US5802602A (en) 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US6073232A (en) 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
US5961660A (en) 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
JPH10301719A (ja) 1997-04-28 1998-11-13 Yamaha Corp ディスクアレイ装置及びそれを用いた情報処理システム
JP3459868B2 (ja) 1997-05-16 2003-10-27 日本電気株式会社 メモリ障害時におけるグループ入れ替え方式
US6578113B2 (en) 1997-06-02 2003-06-10 At&T Corp. Method for cache validation for proxy caches
US6092158A (en) 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
US6047334A (en) 1997-06-17 2000-04-04 Intel Corporation System for delaying dequeue of commands received prior to fence command until commands received before fence command are ordered for execution in a fixed sequence
US6044438A (en) 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
US5893086A (en) 1997-07-11 1999-04-06 International Business Machines Corporation Parallel file system and method with extensible hashing
US6000006A (en) 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US6418478B1 (en) 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US6061678A (en) 1997-10-31 2000-05-09 Oracle Corporation Approach for managing access to large objects in database systems using large object indexes
US6334173B1 (en) 1997-11-17 2001-12-25 Hyundai Electronics Industries Co. Ltd. Combined cache with main memory and a control method thereof
US6237059B1 (en) 1997-11-26 2001-05-22 Compaq Computer Corporation Method for estimating statistics of properties of memory system interactions among contexts in a computer system
US6567889B1 (en) 1997-12-19 2003-05-20 Lsi Logic Corporation Apparatus and method to provide virtual solid state disk in cache memory in a storage controller
US6415373B1 (en) 1997-12-24 2002-07-02 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6374336B1 (en) 1997-12-24 2002-04-16 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6725331B1 (en) 1998-01-07 2004-04-20 Emc Corporation Method and apparatus for managing the dynamic assignment resources in a data storage system
US6748487B1 (en) 1998-02-04 2004-06-08 Hitachi, Ltd. Disk cache control method, disk array system, and storage system
US6115793A (en) * 1998-02-11 2000-09-05 Ati Technologies, Inc. Mapping logical cache indexes to physical cache indexes to reduce thrashing and increase cache size
US7200623B2 (en) * 1998-11-24 2007-04-03 Oracle International Corp. Methods to perform disk writes in a distributed shared disk system needing consistency across failures
US5969986A (en) 1998-06-23 1999-10-19 Invox Technology High-bandwidth read and write architectures for non-volatile memories
US6295577B1 (en) 1998-02-24 2001-09-25 Seagate Technology Llc Disc storage system having a non-volatile cache to store write data in the event of a power failure
US6170042B1 (en) 1998-02-24 2001-01-02 Seagate Technology Llc Disc drive data storage system and method for dynamically scheduling queued commands
US6170063B1 (en) 1998-03-07 2001-01-02 Hewlett-Packard Company Method for performing atomic, concurrent read and write operations on multiple storage devices
US6467022B1 (en) 1998-04-16 2002-10-15 International Business Machines Corporation Extending adapter memory with solid state disks in JBOD and RAID environments
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US5957158A (en) 1998-05-11 1999-09-28 Automatic Switch Company Visual position indicator
US6061511A (en) 1998-06-12 2000-05-09 Ikos Systems, Inc. Reconstruction engine for a hardware circuit emulator
JP2000020490A (ja) 1998-07-01 2000-01-21 Fujitsu Ltd 遠隔手続き呼出し機構またはオブジェクトリクエストブローカ機構を有する計算機、データ転送方法、および転送方法記憶媒体
US6185654B1 (en) 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
US6507911B1 (en) 1998-07-22 2003-01-14 Entrust Technologies Limited System and method for securely deleting plaintext data
US6353878B1 (en) 1998-08-13 2002-03-05 Emc Corporation Remote control of backup media in a secondary storage subsystem through access to a primary storage subsystem
US6269382B1 (en) 1998-08-31 2001-07-31 Microsoft Corporation Systems and methods for migration and recall of data from local and remote storage
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US6928505B1 (en) 1998-11-12 2005-08-09 Edwin E. Klingman USB device controller
WO2000033192A1 (en) 1998-11-25 2000-06-08 Sun Microsystems, Inc. A method for enabling comprehensive profiling of garbage-collected memory systems
US6470436B1 (en) 1998-12-01 2002-10-22 Fast-Chip, Inc. Eliminating memory fragmentation and garbage collection from the process of managing dynamically allocated memory
US7233977B2 (en) 1998-12-18 2007-06-19 Emc Corporation Messaging mechanism employing mailboxes for inter processor communications
US6189078B1 (en) 1998-12-22 2001-02-13 Unisys Corporation System and method for increasing data transfer throughput for cache purge transactions using multiple data response indicators to maintain processor consistency
US6629112B1 (en) 1998-12-31 2003-09-30 Nortel Networks Limited Resource management for CORBA-based applications
GB9903490D0 (en) 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6795890B1 (en) 1999-02-19 2004-09-21 Mitsubishi Denki Kabushiki Kaisha Data storage method, and data processing device using an erasure block buffer and write buffer for writing and erasing data in memory
US6571312B1 (en) 1999-02-19 2003-05-27 Mitsubishi Denki Kabushiki Kaisha Data storage method and data processing device using an erasure block buffer and write buffer for writing and erasing data in memory
US6412080B1 (en) 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
MY122279A (en) 1999-03-03 2006-04-29 Sony Corp Nonvolatile memory and nonvolatile memory reproducing apparatus
US6535869B1 (en) 1999-03-23 2003-03-18 International Business Machines Corporation Increasing efficiency of indexing random-access files composed of fixed-length data blocks by embedding a file index therein
US6141249A (en) 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
US6105076A (en) 1999-04-23 2000-08-15 International Business Machines Corporation Method, system, and program for performing data transfer operations on user data
KR100330164B1 (ko) 1999-04-27 2002-03-28 윤종용 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법
US6849480B1 (en) 1999-05-07 2005-02-01 Seagate Technology Llc Surface mount IC stacking method and device
US7194740B1 (en) 1999-05-28 2007-03-20 Oracle International Corporation System for extending an addressable range of memory
JP4106811B2 (ja) 1999-06-10 2008-06-25 富士通株式会社 半導体記憶装置及び電子装置
US6557084B2 (en) * 1999-07-13 2003-04-29 International Business Machines Corporation Apparatus and method to improve performance of reads from and writes to shared memory locations
US20040230710A1 (en) 1999-07-27 2004-11-18 Inline Connection Corporation System and method of automatic installation of computer peripherals
EP1073064A1 (en) 1999-07-30 2001-01-31 STMicroelectronics S.r.l. Non-volatile memory with the functional capability of simultaneous modification of the contents and burst mode read or page mode read
US7889544B2 (en) 2004-04-05 2011-02-15 Super Talent Electronics, Inc. High-speed controller for phase-change memory peripheral device
US7620769B2 (en) 2000-01-06 2009-11-17 Super Talent Electronics, Inc. Recycling partially-stale flash blocks using a sliding window for multi-level-cell (MLC) flash memory
US7934074B2 (en) 1999-08-04 2011-04-26 Super Talent Electronics Flash module with plane-interleaved sequential writes to restricted-write flash chips
US7660941B2 (en) 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
US6336174B1 (en) 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
KR100577380B1 (ko) 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
US6742078B1 (en) 1999-10-05 2004-05-25 Feiya Technology Corp. Management, data link structure and calculating method for flash memory
DE60004463D1 (de) 1999-10-25 2003-09-18 Sun Microsystems Inc Speichersystem mit Unterstützung von Dateistufenzugriffen und Blockstufenzugriffen
WO2001031512A2 (en) 1999-10-25 2001-05-03 Infolibria, Inc. Fast indexing of web objects
US6278633B1 (en) 1999-11-05 2001-08-21 Multi Level Memory Technology High bandwidth flash memory that selects programming parameters according to measurements of previous programming operations
US6684274B1 (en) 1999-11-09 2004-01-27 Sun Microsystems, Inc. Host bus adapter based scalable performance storage architecture
US20020049883A1 (en) 1999-11-29 2002-04-25 Eric Schneider System and method for restoring a computer system after a failure
DE19961499A1 (de) 1999-12-20 2001-07-05 Ericsson Telefon Ab L M Caching von Objekten in Platten-gestützten Datenbanken
US8171204B2 (en) 2000-01-06 2012-05-01 Super Talent Electronics, Inc. Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels
US20050204187A1 (en) 2004-03-11 2005-09-15 Lee Charles C. System and method for managing blocks in flash memory
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
TW504694B (en) 2000-01-12 2002-10-01 Hitachi Ltd Non-volatile semiconductor memory device and semiconductor disk device
US6785835B2 (en) 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Raid memory
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
EP1128267A1 (en) 2000-02-25 2001-08-29 Hewlett-Packard Company, A Delaware Corporation Disk storage system having redundant solid state data storage devices
EP1130516A1 (en) 2000-03-01 2001-09-05 Hewlett-Packard Company, A Delaware Corporation Address mapping in solid state storage device
US6240040B1 (en) 2000-03-15 2001-05-29 Advanced Micro Devices, Inc. Multiple bank simultaneous operation for a flash memory
US6587937B1 (en) 2000-03-31 2003-07-01 Rockwell Collins, Inc. Multiple virtual machine system with efficient cache memory design
JP2001297316A (ja) 2000-04-14 2001-10-26 Mitsubishi Electric Corp メモリカード及びその制御方法
US7089391B2 (en) 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
KR100399034B1 (ko) 2000-05-02 2003-09-22 한국과학기술원 효율적 메모리 셀 어레이 관리 방법
US6675349B1 (en) 2000-05-11 2004-01-06 International Business Machines Corporation Error correction coding of data blocks with included parity bits
US6775790B2 (en) 2000-06-02 2004-08-10 Hewlett-Packard Development Company, L.P. Distributed fine-grained enhancements for distributed table driven I/O mapping
US6532527B2 (en) 2000-06-19 2003-03-11 Storage Technology Corporation Using current recovery mechanisms to implement dynamic mapping operations
US6804755B2 (en) 2000-06-19 2004-10-12 Storage Technology Corporation Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme
US6779094B2 (en) 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data by writing new data to an additional physical storage area
US6912537B2 (en) 2000-06-20 2005-06-28 Storage Technology Corporation Dynamically changeable virtual mapping scheme
CN1295623C (zh) 2000-06-23 2007-01-17 英特尔公司 非易失性高速缓存
US6813686B1 (en) 2000-06-27 2004-11-02 Emc Corporation Method and apparatus for identifying logical volumes in multiple element computer storage domains
US6859824B1 (en) 2000-06-30 2005-02-22 Hitachi, Ltd. Storage system connected to a data network with data integrity
US6981070B1 (en) 2000-07-12 2005-12-27 Shun Hang Luk Network storage device having solid-state non-volatile memory
US6567307B1 (en) 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US6675318B1 (en) 2000-07-25 2004-01-06 Sun Microsystems, Inc. Two-dimensional storage array with prompt parity in one dimension and delayed parity in a second dimension
US6883044B1 (en) 2000-07-28 2005-04-19 Micron Technology, Inc. Synchronous flash memory with simultaneous access to one or more banks
US7085445B2 (en) 2000-08-04 2006-08-01 Seungug Koh Micro-opto-electro-mechanical waveguide switches
US6658438B1 (en) 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
JP3671138B2 (ja) 2000-08-17 2005-07-13 ジャパンコンポジット株式会社 通気性防水被覆構造体、およびその施工方法
US6404647B1 (en) 2000-08-24 2002-06-11 Hewlett-Packard Co. Solid-state mass memory storage device
US6883079B1 (en) 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
WO2002023795A1 (en) 2000-09-11 2002-03-21 Zhang Jinglong F A method and apparatus employing one-way transforms
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US7039727B2 (en) 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
US6779088B1 (en) 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
US7248691B1 (en) 2000-10-31 2007-07-24 Microsoft Corporation Hashing using multiple sub-hashes
US20020191603A1 (en) 2000-11-22 2002-12-19 Yeshik Shin Method and system for dynamic segmentation of communications packets
JP4216457B2 (ja) 2000-11-30 2009-01-28 富士通マイクロエレクトロニクス株式会社 半導体記憶装置及び半導体装置
US6564288B2 (en) 2000-11-30 2003-05-13 Hewlett-Packard Company Memory controller with temperature sensors
US6957313B2 (en) 2000-12-01 2005-10-18 Hsia James R Memory matrix and method of operating the same
US6976060B2 (en) 2000-12-05 2005-12-13 Agami Sytems, Inc. Symmetric shared file storage system
US7020739B2 (en) 2000-12-06 2006-03-28 Tdk Corporation Memory controller, flash memory system having memory controller and method for controlling flash memory device
US20020103819A1 (en) 2000-12-12 2002-08-01 Fresher Information Corporation Technique for stabilizing data in a non-log based information storage and retrieval system
US6938252B2 (en) 2000-12-14 2005-08-30 International Business Machines Corporation Hardware-assisted method for scheduling threads using data cache locality
US7013376B2 (en) 2000-12-20 2006-03-14 Hewlett-Packard Development Company, L.P. Method and system for data block sparing in a solid-state storage device
US7107480B1 (en) 2000-12-22 2006-09-12 Simpletech, Inc. System and method for preventing data corruption in solid-state memory devices after a power failure
KR100365725B1 (ko) 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
KR100708475B1 (ko) 2001-01-08 2007-04-18 삼성전자주식회사 펑쳐링된 패리티심벌을 복원하는 터보디코더용 프리디코더 및 터보코드의 복원방법
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP4818812B2 (ja) 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
US6862692B2 (en) 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US6516380B2 (en) 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
US6606690B2 (en) 2001-02-20 2003-08-12 Hewlett-Packard Development Company, L.P. System and method for accessing a storage area network as network attached storage
US20040233910A1 (en) 2001-02-23 2004-11-25 Wen-Shyen Chen Storage area network using a data communication protocol
US6802023B2 (en) 2001-03-15 2004-10-05 Hewlett-Packard Development Company, L.P. Redundant controller data storage system having hot insertion system and method
US6977599B2 (en) 2001-05-08 2005-12-20 International Business Machines Corporation 8B/10B encoding and decoding for high speed applications
US6684301B1 (en) * 2001-05-31 2004-01-27 Lsi Logic Corporation Out of order execution memory access request FIFO
US6731447B2 (en) 2001-06-04 2004-05-04 Xerox Corporation Secure data file erasure
US6876656B2 (en) 2001-06-15 2005-04-05 Broadcom Corporation Switch assisted frame aliasing for storage virtualization
JP4256600B2 (ja) 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US7107430B2 (en) 2001-06-19 2006-09-12 Massachusetts Institute Of Technology Mechanism to reduce the cost of forwarding pointer aliasing
JP2003006041A (ja) 2001-06-20 2003-01-10 Hitachi Ltd 半導体装置
US6839808B2 (en) 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US7036068B2 (en) 2001-07-25 2006-04-25 Hewlett-Packard Development Company, L.P. Error correction coding and decoding in a solid-state storage device
US6785776B2 (en) 2001-07-26 2004-08-31 International Business Machines Corporation DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism
JP4156817B2 (ja) 2001-07-27 2008-09-24 株式会社日立製作所 記憶装置システム
US6622211B2 (en) * 2001-08-15 2003-09-16 Ip-First, L.L.C. Virtual set cache that redirects store data to correct virtual set to avoid virtual set store miss penalty
US7275135B2 (en) 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US6735546B2 (en) 2001-08-31 2004-05-11 Matrix Semiconductor, Inc. Memory device and method for temperature-based control over write and/or read operations
US6760805B2 (en) 2001-09-05 2004-07-06 M-Systems Flash Disk Pioneers Ltd. Flash management system for large page size
US7177197B2 (en) 2001-09-17 2007-02-13 Sandisk Corporation Latched programming of memory and method
KR100437610B1 (ko) 2001-09-20 2004-06-30 주식회사 하이닉스반도체 정상 모드와 부분 어레이 셀프 리프레쉬 모드를 갖는저전력 반도체 메모리 장치
US20030061296A1 (en) 2001-09-24 2003-03-27 International Business Machines Corporation Memory semantic storage I/O
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
US6823417B2 (en) 2001-10-01 2004-11-23 Hewlett-Packard Development Company, L.P. Memory controller for memory card manages file allocation table
US7000063B2 (en) 2001-10-05 2006-02-14 Matrix Semiconductor, Inc. Write-many memory device and method for limiting a number of writes to the write-many memory device
US6515909B1 (en) 2001-10-05 2003-02-04 Micron Technology Inc. Flash memory device with a variable erase pulse
US6892264B2 (en) 2001-10-05 2005-05-10 International Business Machines Corporation Storage area network methods and apparatus for associating a logical identification with a physical identification
US6643181B2 (en) 2001-10-24 2003-11-04 Saifun Semiconductors Ltd. Method for erasing a memory cell
US6552955B1 (en) 2001-10-30 2003-04-22 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device with reduced power consumption
US6710901B2 (en) 2001-11-02 2004-03-23 Canadian Production Promotion Group Inc. Method and apparatus for two-photon, volumetric spatially resolved holographic data storage in photosensitive glass
US20030093741A1 (en) 2001-11-14 2003-05-15 Cenk Argon Parallel decoder for product codes
US6754800B2 (en) 2001-11-14 2004-06-22 Sun Microsystems, Inc. Methods and apparatus for implementing host-based object storage schemes
US6977847B2 (en) 2001-11-23 2005-12-20 M-Systems Flash Disk Pioneers Ltd. Detecting partially erased units in flash devices
US6715046B1 (en) 2001-11-29 2004-03-30 Cisco Technology, Inc. Method and apparatus for reading from and writing to storage using acknowledged phases of sets of data
US7013379B1 (en) 2001-12-10 2006-03-14 Incipient, Inc. I/O primitives
US7173929B1 (en) 2001-12-10 2007-02-06 Incipient, Inc. Fast path for performing data operations
US6883068B2 (en) 2001-12-17 2005-04-19 Sun Microsystems, Inc. Methods and apparatus for implementing a chche replacement scheme
US7548975B2 (en) 2002-01-09 2009-06-16 Cisco Technology, Inc. Methods and apparatus for implementing virtualization of storage within a storage area network through a virtual enclosure
US6839819B2 (en) 2001-12-28 2005-01-04 Storage Technology Corporation Data management appliance
US7036043B2 (en) 2001-12-28 2006-04-25 Storage Technology Corporation Data management with virtual recovery mapping and backward moves
US6697076B1 (en) 2001-12-31 2004-02-24 Apple Computer, Inc. Method and apparatus for address re-mapping
US6925573B2 (en) 2002-01-02 2005-08-02 Intel Corporation Method and apparatus to manage use of system power within a given specification
US6785078B2 (en) 2002-01-04 2004-08-31 International Business Machines Corporation Concurrent read and write access to simulated sequential data of a removable random access data storage medium
WO2003060722A1 (fr) 2002-01-09 2003-07-24 Renesas Technology Corp. Système de mémoire et carte mémoire
TWI257085B (en) 2002-01-21 2006-06-21 Koninkl Philips Electronics Nv Method of encoding and decoding
JP4154893B2 (ja) 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US20030145230A1 (en) 2002-01-31 2003-07-31 Huimin Chiu System for exchanging data utilizing remote direct memory access
US6839826B2 (en) 2002-02-06 2005-01-04 Sandisk Corporation Memory device with pointer structure to map logical to physical addresses
US6748504B2 (en) 2002-02-15 2004-06-08 International Business Machines Corporation Deferred copy-on-write of a snapshot
US6871257B2 (en) 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
US7010662B2 (en) 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7085879B2 (en) 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US20030163633A1 (en) 2002-02-27 2003-08-28 Aasheim Jered Donald System and method for achieving uniform wear levels in a flash memory device
US7197567B1 (en) 2002-02-28 2007-03-27 Cisco Technology, Inc. Devices, softwares and methods for enabling SIP devices to operate in H.323 networks and H.323 devices to operate in sip networks
JP2003281071A (ja) 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
US7010663B2 (en) 2002-03-22 2006-03-07 Sun Microsystems, Inc. Method and system for dividing a plurality of existing volumes of storage into a plurality of virtual logical units of storage
JP4050548B2 (ja) 2002-04-18 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US6707748B2 (en) 2002-05-07 2004-03-16 Ritek Corporation Back up power embodied non-volatile memory device
US7149857B2 (en) 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
US20030229689A1 (en) 2002-06-06 2003-12-11 Microsoft Corporation Method and system for managing stored data on a computer network
US6894931B2 (en) 2002-06-20 2005-05-17 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory device
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7562089B2 (en) 2002-06-26 2009-07-14 Seagate Technology Llc Systems and methods for storing information to allow users to manage files
JP2004030438A (ja) 2002-06-27 2004-01-29 Renesas Technology Corp マイクロコンピュータ
US7082495B2 (en) 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
JP4001516B2 (ja) 2002-07-05 2007-10-31 富士通株式会社 縮退制御装置及び方法
US7051152B1 (en) 2002-08-07 2006-05-23 Nvidia Corporation Method and system of improving disk access time by compression
US7043610B2 (en) 2002-08-19 2006-05-09 Aristos Logic Corporation System and method for maintaining cache coherency without external controller intervention
JP2004086295A (ja) 2002-08-23 2004-03-18 Megawin Technology Co Ltd Nand型フラッシュメモリディスク装置及び論理アドレス検出の方法
KR100505638B1 (ko) 2002-08-28 2005-08-03 삼성전자주식회사 워킹 콘텍스트 저장 및 복구 장치 및 방법
US7103731B2 (en) 2002-08-29 2006-09-05 International Business Machines Corporation Method, system, and program for moving data among storage units
US7882081B2 (en) 2002-08-30 2011-02-01 Netapp, Inc. Optimized disk repository for the storage and retrieval of mostly sequential data
US7051174B2 (en) 2002-09-24 2006-05-23 International Business Machines Corporation Method, system, and program for restoring data in cache
US20040064558A1 (en) 2002-09-26 2004-04-01 Hitachi Ltd. Resource distribution management method over inter-networks
JP4130615B2 (ja) 2003-07-02 2008-08-06 株式会社日立製作所 ストレージ装置を有するネットワークにおける障害情報管理方法及び管理サーバ
US7340566B2 (en) 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US7171536B2 (en) 2002-10-28 2007-01-30 Sandisk Corporation Unusable block management within a non-volatile memory system
JP3929872B2 (ja) 2002-10-30 2007-06-13 株式会社東芝 キャッシュメモリ、プロセッサ及びキャッシュ制御方法
US7415565B2 (en) 2002-10-31 2008-08-19 Ring Technology Enterprises, Llc Methods and systems for a storage system with a program-controlled switch for routing data
JP4199519B2 (ja) 2002-11-05 2008-12-17 パナソニック株式会社 メモリ管理装置及びメモリ管理方法
US7035974B2 (en) 2002-11-06 2006-04-25 Synology Inc. RAID-5 disk having cache memory implemented using non-volatile RAM
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US6845053B2 (en) 2002-11-15 2005-01-18 Micron Technology, Inc. Power throughput adjustment in flash memory
US7178088B2 (en) 2002-11-18 2007-02-13 Matsushita Electric Industrial Co., Ltd. Method and circuit for error correction, error correction encoding, data reproduction, or data recording
US6836434B2 (en) 2002-11-21 2004-12-28 Micron Technology, Inc. Mode selection in a flash memory device
JP2004171411A (ja) 2002-11-21 2004-06-17 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びバッファメモリの管理方法
US7082512B2 (en) 2002-11-21 2006-07-25 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US20040199786A1 (en) 2002-12-02 2004-10-07 Walmsley Simon Robert Randomisation of the location of secret information on each of a series of integrated circuits
US6922754B2 (en) 2002-12-09 2005-07-26 Infabric Technologies, Inc. Data-aware data flow manager
US7552192B2 (en) * 2002-12-18 2009-06-23 Ronnie Gerome Carmichael Massively parallel computer network-utilizing MPACT and multipoint parallel server (MPAS) technologies
ATE502457T1 (de) 2002-12-20 2011-04-15 Ibm System und verfahren zum sicheren verwalten von speicherbereichsnetzen in einer nicht vertrauten serverumgebung
US6849905B2 (en) 2002-12-23 2005-02-01 Matrix Semiconductor, Inc. Semiconductor device with localized charge storage dielectric and method of making same
US6957158B1 (en) 2002-12-23 2005-10-18 Power Measurement Ltd. High density random access memory in an intelligent electric device
KR100502608B1 (ko) 2002-12-24 2005-07-20 한국전자통신연구원 계산이 간단한 저밀도 패리티 검사 부호를 위한 메시지 전달 복호기
EP1435576B1 (en) 2003-01-03 2013-03-20 Austria Card Plastikkarten und Ausweissysteme GmbH Method and apparatus for block-oriented memory management provided in smart card controllers
US6816917B2 (en) 2003-01-15 2004-11-09 Hewlett-Packard Development Company, L.P. Storage system with LUN virtualization
US7698483B2 (en) * 2003-01-21 2010-04-13 Nextio, Inc. Switching apparatus and method for link initialization in a shared I/O environment
US7664909B2 (en) 2003-04-18 2010-02-16 Nextio, Inc. Method and apparatus for a shared I/O serial ATA controller
US20040148360A1 (en) 2003-01-24 2004-07-29 Hewlett-Packard Development Company Communication-link-attached persistent memory device
US7107419B1 (en) * 2003-02-14 2006-09-12 Google Inc. Systems and methods for performing record append operations
US7181569B2 (en) 2003-02-26 2007-02-20 International Business Machines Corporation Method, system, and article of manufacture for writing on sequential storage media
JP3912676B2 (ja) * 2003-02-27 2007-05-09 ソニー株式会社 記録装置、ファイル管理方法、ファイル管理方法のプログラム、ファイル管理方法のプログラムを記録した記録媒体
US7526598B2 (en) 2003-03-03 2009-04-28 Sandisk Il, Ltd. Efficient flash memory device driver
US6959369B1 (en) 2003-03-06 2005-10-25 International Business Machines Corporation Method, system, and program for data backup
JP4233564B2 (ja) 2003-03-10 2009-03-04 シャープ株式会社 データ処理装置、データ処理用のプログラムおよび記録媒体
US7076723B2 (en) 2003-03-14 2006-07-11 Quantum Corporation Error correction codes
JP2004278439A (ja) 2003-03-17 2004-10-07 Toshiba Kyaria Kk 流体機械
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7197657B1 (en) 2003-04-03 2007-03-27 Advanced Micro Devices, Inc. BMC-hosted real-time clock and non-volatile RAM replacement
JP2004310621A (ja) 2003-04-10 2004-11-04 Hitachi Ltd 記憶装置システムにおけるファイルアクセス方法及びファイルアクセスのためのプログラム
CN100342377C (zh) * 2003-04-16 2007-10-10 华为技术有限公司 一种提高数据处理效率的方法
US7330999B2 (en) 2003-04-23 2008-02-12 Dot Hill Systems Corporation Network storage appliance with integrated redundant servers and storage controllers
US7610348B2 (en) 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
JP2004348818A (ja) 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置の書込制御方法及びシステム並びに携帯電子機器
US7320100B2 (en) 2003-05-20 2008-01-15 Cray Inc. Apparatus and method for memory with bit swapping on the fly and testing
US7412449B2 (en) 2003-05-23 2008-08-12 Sap Aktiengesellschaft File object storage and retrieval using hashing techniques
US7454555B2 (en) 2003-06-12 2008-11-18 Rambus Inc. Apparatus and method including a memory device having multiple sets of memory banks with duplicated data emulating a fast access time, fixed latency memory device
US7243203B2 (en) 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
US7047366B1 (en) 2003-06-17 2006-05-16 Emc Corporation QOS feature knobs
US7237141B2 (en) 2003-06-19 2007-06-26 Lsi Corporation Method for recovering data from a redundant storage object
US20040268359A1 (en) 2003-06-27 2004-12-30 Hanes David H. Computer-readable medium, method and computer system for processing input/output requests
US7275098B1 (en) 2003-06-27 2007-09-25 Emc Corporation Methods and apparatus for administering software modules in a storage area network management application
US7373514B2 (en) 2003-07-23 2008-05-13 Intel Corporation High-performance hashing system
US7149947B1 (en) 2003-09-04 2006-12-12 Emc Corporation Method of and system for validating an error correction code and parity information associated with a data word
US20050055495A1 (en) 2003-09-05 2005-03-10 Nokia Corporation Memory wear leveling
US7483974B2 (en) 2003-09-24 2009-01-27 Intel Corporation Virtual management controller to coordinate processing blade management in a blade server environment
US7487235B2 (en) 2003-09-24 2009-02-03 Dell Products L.P. Dynamically varying a raid cache policy in order to optimize throughput
US20050091215A1 (en) 2003-09-29 2005-04-28 Chandra Tushar D. Technique for provisioning storage for servers in an on-demand environment
IES20030722A2 (en) * 2003-10-01 2005-04-06 Yqa Now Ltd A data storage device
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
JP4492084B2 (ja) 2003-10-07 2010-06-30 株式会社日立製作所 ストレージパス制御方法
US7337201B1 (en) 2003-10-08 2008-02-26 Sun Microsystems, Inc. System and method to increase memory allocation efficiency
TWI238325B (en) 2003-10-09 2005-08-21 Quanta Comp Inc Apparatus of remote server console redirection
US7127560B2 (en) 2003-10-14 2006-10-24 International Business Machines Corporation Method of dynamically controlling cache size
US7096321B2 (en) 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
US7143240B2 (en) 2003-10-31 2006-11-28 International Business Machines Corporation System and method for providing a cost-adaptive cache
WO2005065084A2 (en) 2003-11-13 2005-07-21 Commvault Systems, Inc. System and method for providing encryption in pipelined storage operations in a storage network
KR101087906B1 (ko) 2003-11-18 2011-11-30 파나소닉 주식회사 파일기록장치
US20050114595A1 (en) 2003-11-26 2005-05-26 Veritas Operating Corporation System and method for emulating operating system metadata to provide cross-platform access to storage volumes
US7162571B2 (en) 2003-12-09 2007-01-09 Emc Corporation Methods and apparatus for parsing a content address to facilitate selection of a physical storage location in a data storage system
US8892821B2 (en) 2003-12-10 2014-11-18 International Business Machines Corporation Method and system for thread-based memory speculation in a memory subsystem of a data processing system
US7350127B2 (en) 2003-12-12 2008-03-25 Hewlett-Packard Development Company, L.P. Error correction method and system
US20050149819A1 (en) 2003-12-15 2005-07-07 Daewoo Electronics Corporation Three-dimensional error correction method
US7500000B2 (en) 2003-12-17 2009-03-03 International Business Machines Corporation Method and system for assigning or creating a resource
US20050149618A1 (en) 2003-12-23 2005-07-07 Mobile Action Technology Inc. System and method of transmitting electronic files over to a mobile phone
US7418490B1 (en) 2003-12-29 2008-08-26 Sun Microsystems, Inc. System using multiple sets of device management policies for managing network devices connected on different network interfaces
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US20050154786A1 (en) 2004-01-09 2005-07-14 International Business Machines Corporation Ordering updates in remote copying of data
US7328307B2 (en) 2004-01-22 2008-02-05 Tquist, Llc Method and apparatus for improving update performance of non-uniform access time persistent storage media
US7042664B2 (en) 2004-01-26 2006-05-09 Seagate Technology Llc Method and system for host programmable data storage device self-testing
JP4477365B2 (ja) 2004-01-29 2010-06-09 株式会社日立製作所 複数インタフェースを有する記憶装置、および、その記憶装置の制御方法
US7064994B1 (en) 2004-01-30 2006-06-20 Sun Microsystems, Inc. Dynamic memory throttling for power and thermal limitations
US7389465B2 (en) 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7305520B2 (en) 2004-01-30 2007-12-04 Hewlett-Packard Development Company, L.P. Storage system with capability to allocate virtual storage segments among a plurality of controllers
US7130957B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system structure for storing relational cache metadata
US7130956B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system including hierarchical cache metadata
US7231590B2 (en) 2004-02-11 2007-06-12 Microsoft Corporation Method and apparatus for visually emphasizing numerical data contained within an electronic document
US7260695B2 (en) 2004-03-05 2007-08-21 International Business Machines Corporation Scanning modified data during power loss
JP2005250938A (ja) 2004-03-05 2005-09-15 Hitachi Ltd 記憶制御システム及び方法
US20080082736A1 (en) 2004-03-11 2008-04-03 Chow David Q Managing bad blocks in various flash memory cells for electronic data flash card
JP2005316951A (ja) 2004-03-30 2005-11-10 Seiko Epson Corp 情報端末、情報処理システム、及び、これらの制御方法
JP2005293774A (ja) 2004-04-02 2005-10-20 Hitachi Global Storage Technologies Netherlands Bv ディスク装置の制御方法
US7281192B2 (en) 2004-04-05 2007-10-09 Broadcom Corporation LDPC (Low Density Parity Check) coded signal decoding using parallel and simultaneous bit node and check node processing
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US20050240713A1 (en) 2004-04-22 2005-10-27 V-Da Technology Flash memory device with ATA/ATAPI/SCSI or proprietary programming interface on PCI express
EP1745394B1 (en) 2004-04-26 2009-07-15 Storewiz, Inc. Method and system for compression of files for storage and operation on compressed files
US7412614B2 (en) 2004-04-29 2008-08-12 Hewlett-Packard Development Company, L.P. Power management using a pre-determined thermal characteristic of a memory module
US7370163B2 (en) 2004-05-03 2008-05-06 Gemini Storage Adaptive cache engine for storage area network including systems and methods related thereto
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7360015B2 (en) 2004-05-04 2008-04-15 Intel Corporation Preventing storage of streaming accesses in a cache
US7386663B2 (en) 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US7512830B2 (en) 2004-05-14 2009-03-31 International Business Machines Corporation Management module failover across multiple blade center chassis
US20050257017A1 (en) 2004-05-14 2005-11-17 Hideki Yagi Method and apparatus to erase hidden memory in a memory card
US7831561B2 (en) 2004-05-18 2010-11-09 Oracle International Corporation Automated disk-oriented backups
WO2005114374A2 (en) 2004-05-21 2005-12-01 Computer Associates Think, Inc. Object-based storage
JP2005339198A (ja) 2004-05-27 2005-12-08 Internatl Business Mach Corp <Ibm> キャッシュヒット率推定装置、キャッシュヒット率推定方法、プログラム及び記録媒体
US7009889B2 (en) 2004-05-28 2006-03-07 Sandisk Corporation Comprehensive erase verification for non-volatile memory
US7590522B2 (en) 2004-06-14 2009-09-15 Hewlett-Packard Development Company, L.P. Virtual mass storage device for server management information
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US7447847B2 (en) 2004-07-19 2008-11-04 Micron Technology, Inc. Memory device trims
US7395384B2 (en) 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US9264384B1 (en) 2004-07-22 2016-02-16 Oracle International Corporation Resource virtualization mechanism including virtual host bus adapters
US20060020616A1 (en) 2004-07-22 2006-01-26 Geoffrey Hardy Indexing operational logs in a distributed processing system
US7203815B2 (en) 2004-07-30 2007-04-10 International Business Machines Corporation Multi-level page cache for enhanced file system performance via read ahead
US8407396B2 (en) 2004-07-30 2013-03-26 Hewlett-Packard Development Company, L.P. Providing block data access for an operating system using solid-state memory
US7664239B2 (en) 2004-08-09 2010-02-16 Cox Communications, Inc. Methods and computer-readable media for managing and configuring options for the real-time notification and disposition of voice services in a cable services network
JP4315876B2 (ja) 2004-08-17 2009-08-19 富士通株式会社 ファイル管理プログラム、ファイル管理方法、及びファイル管理装置
US7477570B2 (en) 2004-08-20 2009-01-13 Micron Technology, Inc. Sequential access memory with system and method
US7398348B2 (en) 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
US20060047926A1 (en) 2004-08-25 2006-03-02 Zheng Calvin G Managing multiple snapshot copies of data
JP4646574B2 (ja) 2004-08-30 2011-03-09 株式会社日立製作所 データ処理システム
US20060075057A1 (en) 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
CN101010950A (zh) 2004-08-30 2007-08-01 松下电器产业株式会社 记录装置
US7650453B2 (en) * 2004-09-16 2010-01-19 Nec Corporation Information processing apparatus having multiple processing units sharing multiple resources
US7062624B2 (en) 2004-09-29 2006-06-13 Hitachi, Ltd. Method for managing volume groups considering storage tiers
US7444493B2 (en) 2004-09-30 2008-10-28 Intel Corporation Address translation for input/output devices using hierarchical translation tables
JP4648674B2 (ja) 2004-10-01 2011-03-09 株式会社日立製作所 記憶制御装置、記憶制御システム及び記憶制御方法
US7603532B2 (en) 2004-10-15 2009-10-13 Netapp, Inc. System and method for reclaiming unused space from a thinly provisioned data container
US8131969B2 (en) 2004-10-20 2012-03-06 Seagate Technology Llc Updating system configuration information
US7328317B2 (en) 2004-10-21 2008-02-05 International Business Machines Corporation Memory controller and method for optimized read/modify/write performance
US7565569B2 (en) 2004-10-22 2009-07-21 International Business Machines Corporation Data protection in a mass storage system
JP2006127028A (ja) 2004-10-27 2006-05-18 Hitachi Ltd 記憶システム及び記憶制御装置
US7310711B2 (en) 2004-10-29 2007-12-18 Hitachi Global Storage Technologies Netherlands B.V. Hard disk drive with support for atomic transactions
ITMI20042072A1 (it) 2004-10-29 2005-01-29 St Microelectronics Srl Dispositivo di memoria flsh dotato di interfaccia di comunicazione low pin count
US7873782B2 (en) 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
WO2006050455A2 (en) 2004-11-05 2006-05-11 Trusted Data Corporation Dynamically expandable and contractible fault-tolerant storage system with virtual hot spare
US7441067B2 (en) 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling
US20060106968A1 (en) 2004-11-15 2006-05-18 Wooi Teoh Gary C Intelligent platform management bus switch system
US7337277B2 (en) 2004-11-18 2008-02-26 International Business Machines Corporation Apparatus, system, and method for flushing cache data
US8595459B2 (en) 2004-11-29 2013-11-26 Rambus Inc. Micro-threaded memory
EP1839154A4 (en) 2004-12-06 2008-07-09 Teac Aerospace Technologies In SYSTEM AND METHOD FOR ERASING NON-VOLATILE RECORDING MEDIUM
US8156281B1 (en) 2004-12-07 2012-04-10 Oracle America, Inc. Data storage system and method using storage profiles to define and modify storage pools
US8074041B2 (en) 2004-12-09 2011-12-06 International Business Machines Corporation Apparatus, system, and method for managing storage space allocation
US8495266B2 (en) * 2004-12-10 2013-07-23 Hewlett-Packard Development Company, L.P. Distributed lock
US7581118B2 (en) 2004-12-14 2009-08-25 Netapp, Inc. Disk sanitization using encryption
US7487320B2 (en) 2004-12-15 2009-02-03 International Business Machines Corporation Apparatus and system for dynamically allocating main memory among a plurality of applications
US7366826B2 (en) 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
KR100662256B1 (ko) * 2004-12-20 2006-12-28 한국전자통신연구원 낮은 프로세스 점유율을 가지는 객체기반 스토리지 장치및 그 제어 방법
KR100684887B1 (ko) 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US7409473B2 (en) 2004-12-21 2008-08-05 Sandisk Corporation Off-chip data relocation
US20060136657A1 (en) 2004-12-22 2006-06-22 Intel Corporation Embedding a filesystem into a non-volatile device
US7441081B2 (en) 2004-12-29 2008-10-21 Lsi Corporation Write-back caching for disk drives
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US7246195B2 (en) 2004-12-30 2007-07-17 Intel Corporation Data storage management for flash memory devices
KR100621631B1 (ko) 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US20060159456A1 (en) 2005-01-18 2006-07-20 Fujitsu Limited System and method for conserving resources in an optical storage area network
US7689599B1 (en) 2005-01-31 2010-03-30 Symantec Operating Corporation Repair of inconsistencies between data and metadata stored on a temporal volume using transaction log replay
US20060184718A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US7426649B2 (en) 2005-02-09 2008-09-16 International Business Machines Corporation Power management via DIMM read operation limiter
WO2006085251A2 (en) 2005-02-14 2006-08-17 Koninklijke Philips Electronics N.V. Block interleaving with memory table of reduced size
US20060184736A1 (en) 2005-02-17 2006-08-17 Benhase Michael T Apparatus, system, and method for storing modified data
US20060190552A1 (en) 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US7457166B2 (en) 2005-03-31 2008-11-25 Sandisk Corporation Erase voltage manipulation in non-volatile memory for controlled shifts in threshold voltage
US7522457B2 (en) 2005-03-31 2009-04-21 Sandisk Corporation Systems for erase voltage manipulation in non-volatile memory for controlled shifts in threshold voltage
US7254686B2 (en) 2005-03-31 2007-08-07 International Business Machines Corporation Switching between mirrored and non-mirrored volumes
US7430138B2 (en) 2005-03-31 2008-09-30 Sandisk Corporation Erasing non-volatile memory utilizing changing word line conditions to compensate for slower erasing memory cells
US7463521B2 (en) 2005-04-01 2008-12-09 Sandisk Corporation Method for non-volatile memory with managed execution of cached data
US7702928B2 (en) 2005-04-08 2010-04-20 Hewlett-Packard Development Company, L.P. Memory module with on-board power-consumption monitoring
US7451344B1 (en) 2005-04-08 2008-11-11 Western Digital Technologies, Inc. Optimizing order of error recovery steps in a disk drive
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US20060236061A1 (en) 2005-04-18 2006-10-19 Creek Path Systems Systems and methods for adaptively deriving storage policy and configuration rules
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7130960B1 (en) 2005-04-21 2006-10-31 Hitachi, Ltd. System and method for managing disk space in a thin-provisioned storage subsystem
US7620741B2 (en) * 2005-04-22 2009-11-17 Sun Microsystems, Inc. Proxy-based device sharing
US7702873B2 (en) 2005-04-25 2010-04-20 Network Appliance, Inc. Managing common storage by allowing delayed allocation of storage after reclaiming reclaimable space in a logical volume
US7523546B2 (en) 2005-05-04 2009-04-28 Nokia Corporation Method for manufacturing a composite layer for an electronic device
US20060265636A1 (en) 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
US7752381B2 (en) 2005-05-24 2010-07-06 Micron Technology, Inc. Version based non-volatile memory translation layer
US7444526B2 (en) 2005-06-16 2008-10-28 International Business Machines Corporation Performance conserving method for reducing power consumption in a server system
US7930589B2 (en) 2005-06-17 2011-04-19 Analog Devices, Inc. Interrupt-responsive non-volatile memory system and method
US20080082763A1 (en) 2006-10-02 2008-04-03 Metaram, Inc. Apparatus and method for power management of memory circuits by a system or component thereof
US7590796B2 (en) 2006-07-31 2009-09-15 Metaram, Inc. System and method for power management in memory systems
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
US7743217B2 (en) 2005-06-29 2010-06-22 Stmicroelectronics S.A. Cache consistency in a multiprocessor system with shared memory
US7797479B2 (en) 2005-06-30 2010-09-14 Intel Corporation Technique to write to a non-volatile memory
US7774542B2 (en) 2005-07-06 2010-08-10 Ji Zhang System and method for adaptive operation of storage capacities of RAID systems
US7716387B2 (en) 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
US7895398B2 (en) 2005-07-19 2011-02-22 Dell Products L.P. System and method for dynamically adjusting the caching characteristics for each logical unit of a storage array
JP5162846B2 (ja) 2005-07-29 2013-03-13 ソニー株式会社 記憶装置、コンピュータシステム、および記憶システム
US7984084B2 (en) 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7480766B2 (en) 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US8417915B2 (en) 2005-08-05 2013-04-09 Arm Limited Alias management within a virtually indexed and physically tagged cache memory
KR100739722B1 (ko) 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US7580287B2 (en) 2005-09-01 2009-08-25 Micron Technology, Inc. Program and read trim setting
US7970015B2 (en) 2005-09-12 2011-06-28 Hob Gmbh & Co. Kg Method for transmitting a message by compressed data transmission between a sender and a receiver via a data network
US20070061508A1 (en) 2005-09-13 2007-03-15 Quantum Corporation Data storage cartridge with built-in tamper-resistant clock
US7523378B2 (en) 2005-09-23 2009-04-21 Intel Corporation Techniques to determine integrity of information
KR100734629B1 (ko) 2005-09-28 2007-07-03 한국전자통신연구원 부분 캐싱 방법 및 이를 이용한 적응형 콘텐츠 전송 방법
US7437510B2 (en) 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US7652922B2 (en) 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link memory
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7516267B2 (en) 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7634585B2 (en) 2005-11-04 2009-12-15 Sandisk Corporation In-line cache using nonvolatile memory between host and disk device
US7739472B2 (en) 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US7366808B2 (en) 2005-11-23 2008-04-29 Hitachi, Ltd. System, method and apparatus for multiple-protocol-accessible OSD storage subsystem
US8112513B2 (en) 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US7526614B2 (en) 2005-11-30 2009-04-28 Red Hat, Inc. Method for tuning a cache
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US7376034B2 (en) 2005-12-15 2008-05-20 Stec, Inc. Parallel data storage system
JP4807063B2 (ja) 2005-12-20 2011-11-02 ソニー株式会社 復号装置、制御方法、およびプログラム
US20070143560A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
US20070156998A1 (en) 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7793068B2 (en) * 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US20070143561A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Methods for adaptive file data handling in non-volatile memories with a directly mapped file storage system
US20070143566A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US20070143567A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Methods for data alignment in non-volatile memories with a directly mapped file storage system
US7831783B2 (en) 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US7673111B2 (en) 2005-12-23 2010-03-02 Intel Corporation Memory system with both single and consolidated commands
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
US7793059B2 (en) 2006-01-18 2010-09-07 Apple Inc. Interleaving policies for flash memory
KR100746225B1 (ko) 2006-02-13 2007-08-03 삼성전자주식회사 반도체 메모리 장치 및 이를 구비한 메모리 시스템
KR100781520B1 (ko) 2006-02-24 2007-12-03 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 이를위한 맵핑 정보 복구 방법
EP1990727A4 (en) 2006-02-27 2009-08-05 Fujitsu Ltd CACHE CONTROL DEVICE AND CACHE CONTROL PROGRAM
KR20070089460A (ko) 2006-02-28 2007-08-31 삼성전자주식회사 우선 순위에 따른 비휘발성 메모리의 연산 처리 장치 및방법
JP2007233903A (ja) 2006-03-03 2007-09-13 Hitachi Ltd 記憶制御装置及び記憶制御装置のデータ回復方法
US20070208790A1 (en) 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
US7747925B2 (en) 2006-03-06 2010-06-29 Fujifilm Corporation Apparatus and method for error correction code striping
US20070245217A1 (en) 2006-03-28 2007-10-18 Stmicroelectronics S.R.L. Low-density parity check decoding
US7840398B2 (en) 2006-03-28 2010-11-23 Intel Corporation Techniques for unified management communication for virtualization systems
US7562180B2 (en) 2006-03-28 2009-07-14 Nokia Corporation Method and device for reduced read latency of non-volatile memory
US7551492B2 (en) 2006-03-29 2009-06-23 Mosaid Technologies, Inc. Non-volatile semiconductor memory with page erase
TWI386846B (zh) 2006-03-30 2013-02-21 Silicon Image Inc 利用共享式非揮發性記憶體初始化多個處理元件之方法、系統及快閃記憶體元件
US7831778B2 (en) 2006-03-30 2010-11-09 Silicon Image, Inc. Shared nonvolatile memory architecture
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
US7676628B1 (en) 2006-03-31 2010-03-09 Emc Corporation Methods, systems, and computer program products for providing access to shared storage by computing grids and clusters with large numbers of nodes
US7395377B2 (en) 2006-04-20 2008-07-01 International Business Machines Corporation Method and system for adaptive back-off and advance for non-volatile storage (NVS) occupancy level management
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US20070261030A1 (en) 2006-05-04 2007-11-08 Gaurav Wadhwa Method and system for tracking and prioritizing applications
US20070271468A1 (en) 2006-05-05 2007-11-22 Mckenney Paul E Method and Apparatus for Maintaining Data Integrity When Switching Between Different Data Protection Methods
US7653778B2 (en) 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
US20070271495A1 (en) 2006-05-18 2007-11-22 Ian Shaeffer System to detect and identify errors in control information, read data and/or write data
JP4681505B2 (ja) 2006-05-23 2011-05-11 株式会社日立製作所 計算機システム、管理計算機及びプログラム配布方法
US8453147B2 (en) 2006-06-05 2013-05-28 Cisco Technology, Inc. Techniques for reducing thread overhead for systems with multiple multi-threaded processors
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7853958B2 (en) 2006-06-28 2010-12-14 Intel Corporation Virtual machine monitor management from a management service processor in the host processing platform
US7970989B2 (en) 2006-06-30 2011-06-28 Intel Corporation Write ordering on disk cached platforms
US7810013B2 (en) 2006-06-30 2010-10-05 Intel Corporation Memory device that reflects back error detection signals
US7721059B2 (en) 2006-07-06 2010-05-18 Nokia Corporation Performance optimization in solid-state media
US20080052377A1 (en) 2006-07-11 2008-02-28 Robert Light Web-Based User-Dependent Customer Service Interaction with Co-Browsing
US7783956B2 (en) 2006-07-12 2010-08-24 Cronera Systems Incorporated Data recorder
US7395390B2 (en) 2006-07-12 2008-07-01 Inventec Corporation System for backing up cache memory in a double backup server structure
US7594144B2 (en) 2006-08-14 2009-09-22 International Business Machines Corporation Handling fatal computer hardware errors
US20080043769A1 (en) 2006-08-16 2008-02-21 Tyan Computer Corporation Clustering system and system management architecture thereof
KR101128234B1 (ko) 2006-08-23 2012-03-23 엘지전자 주식회사 메모리 접근 제어 장치 및 방법
US7500078B2 (en) 2006-08-25 2009-03-03 Dell Products L.P. Thermal control of memory modules using proximity information
US7788513B2 (en) 2006-08-29 2010-08-31 Hewlett-Packard Development Company, L.P. Method of reducing power consumption of a computing system by evacuating selective platform memory components thereof
JP4932390B2 (ja) 2006-08-31 2012-05-16 株式会社日立製作所 仮想化システム及び領域割当て制御方法
US7870306B2 (en) 2006-08-31 2011-01-11 Cisco Technology, Inc. Shared memory message switch and cache
JP4452261B2 (ja) 2006-09-12 2010-04-21 株式会社日立製作所 ストレージシステムの論理ボリューム管理方法、論理ボリューム管理プログラム、及びストレージシステム
US7752412B2 (en) * 2006-09-29 2010-07-06 Sandisk Corporation Methods of managing file allocation table information
US7630225B2 (en) 2006-09-29 2009-12-08 Sandisk Corporation Apparatus combining once-writeable and rewriteable information storage to support data processing
US7573744B2 (en) 2006-09-29 2009-08-11 Kabushiki Kaisha Toshiba Semiconductor memory device having different capacity areas
JP4942446B2 (ja) 2006-10-11 2012-05-30 株式会社日立製作所 ストレージ装置及びその制御方法
US7499317B2 (en) 2006-10-13 2009-03-03 Sandisk Corporation System for partitioned erase and erase verification in a non-volatile memory to compensate for capacitive coupling
US7495954B2 (en) 2006-10-13 2009-02-24 Sandisk Corporation Method for partitioned erase and erase verification to compensate for capacitive coupling effects in non-volatile memory
US7535766B2 (en) 2006-10-13 2009-05-19 Sandisk Corporation Systems for partitioned soft programming in non-volatile memory
US7499338B2 (en) 2006-10-13 2009-03-03 Sandisk Corporation Partitioned soft programming in non-volatile memory
US9465823B2 (en) 2006-10-19 2016-10-11 Oracle International Corporation System and method for data de-duplication
KR100771519B1 (ko) 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
JP4437489B2 (ja) 2006-10-25 2010-03-24 株式会社日立製作所 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム
US7822887B2 (en) * 2006-10-27 2010-10-26 Stec, Inc. Multi-channel solid-state storage system
US7958280B2 (en) 2006-10-27 2011-06-07 Stec, Inc. Parallel data transfer in solid-state storage
US8122196B2 (en) 2006-10-30 2012-02-21 Netapp, Inc. System and procedure for rapid decompression and/or decryption of securely stored data
US7685178B2 (en) 2006-10-31 2010-03-23 Netapp, Inc. System and method for examining client generated content stored on a data container exported by a storage system
US20080109647A1 (en) 2006-11-07 2008-05-08 Lee Merrill Gavens Memory controllers for performing resilient firmware upgrades to a functioning memory
US7567462B2 (en) 2006-11-16 2009-07-28 Micron Technology, Inc. Method and system for selectively limiting peak power consumption during programming or erase of non-volatile memory devices
US20080120469A1 (en) 2006-11-22 2008-05-22 International Business Machines Corporation Systems and Arrangements for Cache Management
CN100530070C (zh) 2006-11-24 2009-08-19 骆建军 基于flash的硬盘
US7904647B2 (en) 2006-11-27 2011-03-08 Lsi Corporation System for optimizing the performance and reliability of a storage controller cache offload circuit
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US7783830B2 (en) 2006-11-29 2010-08-24 Seagate Technology Llc Solid state device pattern for non-solid state storage media
US8595573B2 (en) 2006-12-03 2013-11-26 Apple Inc. Automatic defect management in memory devices
JP4923990B2 (ja) 2006-12-04 2012-04-25 株式会社日立製作所 フェイルオーバ方法、およびその計算機システム。
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
TW200825762A (en) 2006-12-06 2008-06-16 Inventec Corp Apparatus and method for computer management
CN101715575A (zh) 2006-12-06 2010-05-26 弗森多系统公司(dba弗森-艾奥) 采用数据管道管理数据的装置、系统和方法
US20080140737A1 (en) 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
US7930425B2 (en) 2006-12-11 2011-04-19 International Business Machines Corporation Method of effectively establishing and maintaining communication linkages with a network interface controller
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7660911B2 (en) 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US7913051B1 (en) 2006-12-22 2011-03-22 Emc Corporation Methods and apparatus for increasing the storage capacity of a zone of a storage system
US20080155051A1 (en) 2006-12-23 2008-06-26 Simpletech, Inc. Direct file transfer system and method for a computer network
KR100811274B1 (ko) 2006-12-28 2008-03-07 주식회사 하이닉스반도체 낸드형 플래쉬 메모리소자의 데이터 소거방법
JP4813385B2 (ja) 2007-01-29 2011-11-09 株式会社日立製作所 ストレージシステムの複数の論理リソースを制御する制御装置
US20080183968A1 (en) 2007-01-30 2008-07-31 Chi-Ting Huang Computer system having cache system directly connected to nonvolatile storage device and method thereof
KR100817087B1 (ko) 2007-02-13 2008-03-27 삼성전자주식회사 플래시 메모리를 구비하는 스토리지 장치에서의 버퍼 캐시운용 방법
US20080201535A1 (en) 2007-02-21 2008-08-21 Hitachi, Ltd. Method and Apparatus for Provisioning Storage Volumes
US20080205286A1 (en) 2007-02-26 2008-08-28 Inventec Corporation Test system using local loop to establish connection to baseboard management control and method therefor
WO2008111058A2 (en) 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US20080229046A1 (en) 2007-03-13 2008-09-18 Microsoft Corporation Unified support for solid state storage
US20080229045A1 (en) 2007-03-16 2008-09-18 Lsi Logic Corporation Storage system provisioning architecture
US9152349B2 (en) 2007-03-23 2015-10-06 Emc Corporation Automated information life-cycle management with thin provisioning
US7908501B2 (en) 2007-03-23 2011-03-15 Silicon Image, Inc. Progressive power control of a multi-port memory device
US8135900B2 (en) 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
JP2008250961A (ja) 2007-03-30 2008-10-16 Nec Corp 記憶媒体の制御装置、データ記憶装置、データ記憶システム、方法、及び制御プログラム
US20080244181A1 (en) 2007-03-30 2008-10-02 Michael Walz Dynamic run-time cache size management
US20080243966A1 (en) 2007-04-02 2008-10-02 Croisettier Ramanakumari M System and method for managing temporary storage space of a database management system
US8429677B2 (en) 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US7853759B2 (en) 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
US7606079B2 (en) 2007-04-25 2009-10-20 Sandisk Corporation Reducing power consumption during read operations in non-volatile storage
JP2008276646A (ja) 2007-05-02 2008-11-13 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法
US8028198B2 (en) 2007-07-30 2011-09-27 Micron Technology, Inc. Devices, methods, and apparatuses for detection, sensing, and reporting functionality for semiconductor memory
US8850154B2 (en) 2007-09-11 2014-09-30 2236008 Ontario Inc. Processing system having memory partitioning
US20090070526A1 (en) 2007-09-12 2009-03-12 Tetrick R Scott Using explicit disk block cacheability attributes to enhance i/o caching efficiency
US7873803B2 (en) 2007-09-25 2011-01-18 Sandisk Corporation Nonvolatile memory with self recovery
TWI366828B (en) 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
US7934072B2 (en) 2007-09-28 2011-04-26 Lenovo (Singapore) Pte. Ltd. Solid state storage reclamation apparatus and method
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
TWI578330B (zh) 2007-10-09 2017-04-11 A-Data Technology Co Ltd Solid state semiconductor storage device with temperature control function and control method thereof
BRPI0820059A2 (pt) 2007-11-05 2015-07-14 Nokia Siemens Networks Oy Sistema relator de status do registro e método
JP2009122850A (ja) 2007-11-13 2009-06-04 Toshiba Corp ブロックデバイス制御装置及びアクセス範囲管理方法
US8131927B2 (en) 2007-11-30 2012-03-06 Hitachi, Ltd. Fast accessible compressed thin provisioning volume
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8001334B2 (en) 2007-12-06 2011-08-16 Silicon Image, Inc. Bank sharing and refresh in a shared multi-port memory device
US8195912B2 (en) 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US9727452B2 (en) 2007-12-14 2017-08-08 Virident Systems, Llc Distributing metadata across multiple different disruption regions within an asymmetric memory system
US8239611B2 (en) 2007-12-28 2012-08-07 Spansion Llc Relocating data in a memory device
US8856464B2 (en) 2008-02-12 2014-10-07 Virident Systems, Inc. Systems for two-dimensional main memory including memory modules with read-writeable non-volatile memory devices
US20090216944A1 (en) 2008-02-22 2009-08-27 International Business Machines Corporation Efficient validation of writes for protection against dropped writes
KR101086855B1 (ko) 2008-03-10 2011-11-25 주식회사 팍스디스크 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
US8175528B2 (en) 2008-03-18 2012-05-08 Spansion Llc Wireless mass storage flash memory
US8051243B2 (en) 2008-04-30 2011-11-01 Hitachi, Ltd. Free space utilization in tiered storage systems
US20090276654A1 (en) 2008-05-02 2009-11-05 International Business Machines Corporation Systems and methods for implementing fault tolerant data processing services
JP5159421B2 (ja) 2008-05-14 2013-03-06 株式会社日立製作所 ストレージシステム及び管理装置を用いたストレージシステムの管理方法
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US8554983B2 (en) 2008-05-27 2013-10-08 Micron Technology, Inc. Devices and methods for operating a solid state drive
EP2645251A1 (en) 2008-06-06 2013-10-02 Pivot3 Method and system for distributed RAID implementation
US7917803B2 (en) 2008-06-17 2011-03-29 Seagate Technology Llc Data conflict resolution for solid-state memory devices
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8135907B2 (en) 2008-06-30 2012-03-13 Oracle America, Inc. Method and system for managing wear-level aware file systems
JP5242264B2 (ja) 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
US20100017556A1 (en) 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
KR101086857B1 (ko) 2008-07-25 2011-11-25 주식회사 팍스디스크 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US7941591B2 (en) 2008-07-28 2011-05-10 CacheIQ, Inc. Flash DIMM in a standalone cache appliance system and methodology
JP5216463B2 (ja) 2008-07-30 2013-06-19 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
US8209439B2 (en) 2008-08-25 2012-06-26 Sandisk Il Ltd. Managing multiple concurrent operations with various priority levels in a local storage device
US8914567B2 (en) 2008-09-15 2014-12-16 Vmware, Inc. Storage management system for virtual machines
US8417928B2 (en) 2008-09-24 2013-04-09 Marvell International Ltd. Turbo boot systems and methods for subsequent booting from a captured data stored in a non-volatile semiconductor memory
US8327066B2 (en) 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
US8407427B2 (en) 2008-10-29 2013-03-26 Silicon Image, Inc. Method and system for improving serial port memory communication latency and reliability
US7777652B2 (en) 2008-10-29 2010-08-17 Silicon Image, Inc. Coding system for memory systems employing high-speed serial links
US8645641B2 (en) 2008-12-17 2014-02-04 Seagate Technology Llc Intelligent storage device controller
US8205063B2 (en) 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US8347041B2 (en) 2009-01-02 2013-01-01 Lsi Corporation System and method to preserve and recover unwritten data present in data cache of a disk subsystem across power outages
WO2010090745A1 (en) 2009-02-06 2010-08-12 Osr Open Systems Resources, Inc. Methods and systems for data storage
US8032708B2 (en) 2009-02-11 2011-10-04 Oracle America, Inc. Method and system for caching data in a storgae system
US8296628B2 (en) 2009-03-06 2012-10-23 Texas Instruments Incorporated Data path read/write sequencing for reduced power consumption
US20100235597A1 (en) 2009-03-10 2010-09-16 Hiroshi Arakawa Method and apparatus for conversion between conventional volumes and thin provisioning with automated tier management
US20100251076A1 (en) 2009-03-27 2010-09-30 Chao-Yi Wu Storage controller having soft decoder included therein, related storage control method thereof and system using the same
US8595572B2 (en) 2009-04-08 2013-11-26 Google Inc. Data storage device with metadata command
US8566507B2 (en) 2009-04-08 2013-10-22 Google Inc. Data storage device capable of recognizing and controlling multiple types of memory chips
US20100262979A1 (en) 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8214663B2 (en) 2009-04-15 2012-07-03 International Business Machines Corporation Using power proxies combined with on-chip actuators to meet a defined power target
US8402069B2 (en) 2009-05-04 2013-03-19 Microsoft Corporation Use of delete notifications by file systems and applications to release storage space
US8095738B2 (en) 2009-06-15 2012-01-10 International Business Machines Corporation Differential caching mechanism based on media I/O speed
US20100332871A1 (en) 2009-06-30 2010-12-30 International Buisness Machines Corporation Capping power consumption in a data storage system
US8214610B2 (en) 2009-07-15 2012-07-03 Lsi Corporation Managing backup device metadata in a high availability disk subsystem
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US20110029728A1 (en) 2009-07-28 2011-02-03 Lsi Corporation Methods and apparatus for reducing input/output operations in a raid storage system
JP5265023B2 (ja) 2009-08-04 2013-08-14 株式会社日立製作所 ストレージシステム及びその制御方法
US8176360B2 (en) 2009-08-11 2012-05-08 Texas Memory Systems, Inc. Method and apparatus for addressing actual or predicted failures in a FLASH-based storage system
US8688894B2 (en) 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US8560765B2 (en) 2009-09-08 2013-10-15 Lsi Corporation Systems and methods for variable level use of a multi-level flash memory
EP2476039B1 (en) 2009-09-09 2016-10-26 SanDisk Technologies LLC Apparatus, system, and method for power reduction management in a storage device
KR101644125B1 (ko) 2009-09-22 2016-07-29 삼성전자주식회사 비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법
CA2680601C (en) 2009-10-16 2010-11-02 Ibm Canada Limited - Ibm Canada Limitee Managing multiple speculative assist threads at differing cache levels
US9753847B2 (en) 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US8327106B2 (en) 2009-11-16 2012-12-04 International Business Machines Corporation Selective device access control
WO2011094454A2 (en) 2010-01-27 2011-08-04 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media
US8478945B2 (en) 2010-02-01 2013-07-02 International Business Machines Corporation Dynamic management of destage tasks in a storage controller
US8725940B2 (en) 2010-02-27 2014-05-13 Cleversafe, Inc. Distributedly storing raid data in a raid memory and a dispersed storage network memory
US8712984B2 (en) 2010-03-04 2014-04-29 Microsoft Corporation Buffer pool extension for database server
US8438361B2 (en) 2010-03-10 2013-05-07 Seagate Technology Llc Logical block storage in a storage device
US8130551B2 (en) 2010-03-31 2012-03-06 Sandisk Technologies Inc. Extra dummy erase pulses after shallow erase-verify to avoid sensing deep erased threshold voltage
WO2011126993A2 (en) 2010-04-06 2011-10-13 D Naddor Hd barcode
US8463846B2 (en) 2010-05-06 2013-06-11 Cdnetworks Co., Ltd. File bundling for cache servers of content delivery networks
US20110314071A1 (en) 2010-06-17 2011-12-22 Openwave Systems Inc. Metadata-based data access and control
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
US10558705B2 (en) 2010-10-20 2020-02-11 Microsoft Technology Licensing, Llc Low RAM space, high-throughput persistent key-value store using secondary memory
US8990538B2 (en) 2010-11-05 2015-03-24 Microsoft Corporation Managing memory with limited write cycles in heterogeneous memory systems
US8364888B2 (en) 2011-02-03 2013-01-29 Stec, Inc. Erase-suspend system and method
US9779038B2 (en) 2013-01-31 2017-10-03 Apple Inc. Efficient suspend-resume operation in memory devices

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015162002A (ja) * 2014-02-26 2015-09-07 富士通株式会社 記憶制御装置、記憶制御方法および記憶制御プログラム

Also Published As

Publication number Publication date
US20120210021A1 (en) 2012-08-16
KR20110048486A (ko) 2011-05-11
US20160018991A1 (en) 2016-01-21
US8205015B2 (en) 2012-06-19
US9170754B2 (en) 2015-10-27
CN102084331A (zh) 2011-06-01
US20090222596A1 (en) 2009-09-03
US20120005443A1 (en) 2012-01-05
WO2009126557A1 (en) 2009-10-15
US8046500B2 (en) 2011-10-25
US9600184B2 (en) 2017-03-21
US7836226B2 (en) 2010-11-16
US20110029496A1 (en) 2011-02-03
EP2286327A1 (en) 2011-02-23

Similar Documents

Publication Publication Date Title
JP5431453B2 (ja) 記憶要求を追加データ記憶コマンドに変換するための装置、システム及び方法
US9600184B2 (en) Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8195912B2 (en) Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8161353B2 (en) Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US9519575B2 (en) Conditional iteration for a non-volatile device
KR101769465B1 (ko) 극소 저장 작동을 위한 시스템 및 방법
US9563555B2 (en) Systems and methods for storage allocation
EP1012721B1 (en) Data file storage management system for snapshot copy operations
TWI828901B (zh) 使用電路實現的軟體和用於金鑰值儲存的方法
US20130275391A1 (en) Data Expiry in a Non-Volatile Device
US20110055471A1 (en) Apparatus, system, and method for improved data deduplication
US9021222B1 (en) Managing incremental cache backup and restore
TW202203016A (zh) 用於排序鍵的鍵值儲存裝置及方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110325

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20110330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110330

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120302

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20121214