JP2016219013A - データを格納するための方法およびデータを格納するための一時的でないコンピュータ読取可能媒体 - Google Patents

データを格納するための方法およびデータを格納するための一時的でないコンピュータ読取可能媒体 Download PDF

Info

Publication number
JP2016219013A
JP2016219013A JP2016099400A JP2016099400A JP2016219013A JP 2016219013 A JP2016219013 A JP 2016219013A JP 2016099400 A JP2016099400 A JP 2016099400A JP 2016099400 A JP2016099400 A JP 2016099400A JP 2016219013 A JP2016219013 A JP 2016219013A
Authority
JP
Japan
Prior art keywords
page
solid state
physical address
toc
state memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016099400A
Other languages
English (en)
Other versions
JP6506723B2 (ja
Inventor
ニルス・ニューウェジャー
Nieuwejaar Nils
ジェフリー・エス・ボンウィック
S Bonwick Jeffrey
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by EMC Corp filed Critical EMC Corp
Publication of JP2016219013A publication Critical patent/JP2016219013A/ja
Application granted granted Critical
Publication of JP6506723B2 publication Critical patent/JP6506723B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • 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]
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Abstract

【課題】永続ストレージからデータを読み出すことおよび永続ストレージにデータを書き込むことによって、システムの全体の性能が低減する方法及び読み取り可能媒体を提供する。
【解決手段】クライアントは、制御モジュールにおけるプロセッサの送信キューに書込コマンドを書き込む。書込コマンドは、プロセッサのSQに到達する前に、少なくともクライアントスイッチおよびスイッチファブリックを通過する。クライアントはSQテールドアベルレジスタに新しいSQテールを書き込む。クライアントは、そのSQにおいて処理するべき新しいコマンドが存在するとプロセッサに通知する。プロセッサはSQから書込コマンドを取得する。プロセッサは、ユーザデータを書き込むべき物理アドレスを決定する。物理アドレスはソリッドステートメモリモジュールにおける位置に対応する。プロセッサは、ユーザデータのコピーを書き込むべき2つの物理アドレスを選択する。
【選択図】図6A

Description

関連出願への相互参照
この出願は、2015年5月19日に出願された米国仮特許出願連続番号第62/163,782号の優先権を主張する。米国仮特許出願連続番号第62/163,782号は、ここでその全文が参照により援用される。
背景
システムが永続ストレージにデータを書き込みかつ永続ストレージからデータを読み出し得るスピードはしばしば、システムの全体の性能の重大なファクタである。永続ストレージからデータを読み出すとともに永続ストレージにデータを書き込む従来のアプローチは、システムカーネルにおける複数のレイヤーによる処理およびハードウェアにおける複数のエンティティによる処理を必要とする。結果として、永続ストレージからデータを読み出すことおよび永続ストレージにデータを書き込むことによって、システムに有意なレイテンシーが導入され、その結果、システムの全体の性能が低減する。
当該技術の1つ以上の実施形態に従ったシステムを示す図である。 当該技術の1つ以上の実施形態に従ったシステムを示す図である。 当該技術の1つ以上の実施形態に従ったシステムを示す図である。 当該技術の1つ以上の実施形態に従ったシステムを示す図である。 当該技術の1つ以上の実施形態に従ったシステムを示す図である。 当該技術の1つ以上の実施形態に従ったストレージ機器を示す図である。 当該技術の1つ以上の実施形態に従ったストレージ機器を示す図である。 当該技術の1つ以上の実施形態に従ったストレージ機器を示す図である。 当該技術の1つ以上の実施形態に従ったストレージ機器を示す図である。 当該技術の1つ以上の実施形態に従ったストレージモジュールを示す図である。 当該技術の1つ以上の実施形態に従ったストレージモジュールを示す図である。 当該技術の1つ以上の実施形態に従ったストレージモジュールを示す図である。 当該技術の1つ以上の実施形態に従ったブロックを示す図である。 当該技術の1つ以上の実施形態に従ったデータページを示す図である。 当該技術の1つ以上の実施形態に従ったTOCページを示す図である。 当該技術の1つ以上の実施形態に従ったブロックを示す図である。 当該技術の1つ以上の実施形態に従ったテーブルオブコンテンツ(TOC)エントリを示す図である。 当該技術の1つ以上の実施形態に従ったボールテッドメモリコンテンツを示す図である。 当該技術の1つ以上の実施形態に従ったオープンTOCページを示す図である。 当該技術の1つ以上の実施形態に従ったオープンデータページを示す図である。 当該技術の1つ以上の実施形態に従ったさまざまなデータ構造を示す図である。 当該技術の1つ以上の実施形態に従ったさまざまなデータ構造を示す図である。 当該技術の1つ以上の実施形態に従ったフローチャートを示す図である。 当該技術の1つ以上の実施形態に従ったフローチャートを示す図である。 当該技術の1つ以上の実施形態に従ったフローチャートを示す図である。 当該技術の1つ以上の実施形態に従った例を示す図である。 当該技術の1つ以上の実施形態に従った例を示す図である。 当該技術の1つ以上の実施形態に従った例を示す図である。 当該技術の1つ以上の実施形態に従った例を示す図である。 当該技術の1つ以上の実施形態に従った例を示す図である。 当該技術の1つ以上の実施形態に従った例を示す図である。 当該技術の1つ以上の実施形態に従った例を示す図である。 当該技術の1つ以上の実施形態に従ったフローチャートを示す図である。 当該技術の1つ以上の実施形態に従ったフローチャートを示す図である。
詳細な説明
ここで、当該技術の特定の実施形態が添付の図面を参照して詳細に記載される。当該技術の実施形態の以下の詳細な説明において、当該技術のより完全な理解を提供するために多くの特定の詳細が記載される。しかしながら、当該技術がこれらの特定の詳細がなくても実施されてもよいことは当業者には明らかであろう。他の例では、説明を不必要に複雑にすることを回避するよう周知の機構は詳細に記載されない。
図1〜図8Bの以下の説明では、当該技術のさまざまな実施形態において図に関して記載される任意の構成要素は、任意の他の図に関して記載された同様の名称を有する1つ以上の構成要素と同等であり得る。簡潔さのために、これらの構成要素の説明は、各図に関して繰り返されない。したがって、各図の構成要素の各実施形態は、参照により援用され、同様の名称を有する1つ以上の構成要素を有する他のすべての図内に随意に存在すると想定される。さらに、当該技術のさまざまな実施形態に従うと、ある図の構成要素の如何なる記載も、任意の他の図中の対応する同様の名称を有する構成要素に関して記載された実施形態に加えて、当該実施形態に関連して、または当該実施形態の代わりに実施されてもよい随意の実施形態として解釈されるべきである。
一般に、当該技術の実施形態はストレージシステムに関する。より具体的には、当該技術の実施形態は、自己記述型データを含むストレージシステムに関する。さらに、当該技術の実施形態は、ストレージシステムに格納されるユーザデータにアクセスするのに必要なすべてのメタデータが、それが記述するユーザデータとともに位置するストレージシステムに関する。さらに、メタデータは、インメモリデータ構造のみを使用してストレージシステムが直接的にユーザデータにアクセスすることを可能にするインメモリデータ構造にポピュレート(populate)するために使用される。さらに、当該技術の実施形態は、電源障害(または他のシステム障害)の場合に、永続ストレージにユーザデータおよびメタデータを格納し、次いで、電力が回復されると、そのような格納されたデータおよびメタデータをリカバリすることに関する。
図1A〜図1Eは、当該技術の1つ以上の実施形態に従ったシステムを示す。図1Aを参照して、システムは、ストレージ機器(102)に動作可能に接続される1つ以上のクライアント(クライアントA(100A),クライアントM(100M)))を含む。
当該技術の一実施形態において、クライアント(100A,100M)は、ストレージ機器(102)に読出要求を発行するおよび/またはストレージ機器(102)に書込要求を発行する機能を含む任意のシステムに対応する。図1Aに示されないが、クライアント(100A,100M)の各々は、クライアントプロセッサおよびクライアントメモリを含み得る。クライアントにおけるコンポーネントに関する付加的な詳細は、以下の図1Dにおいて記載される。当該技術の一実施形態において、ペリフェラルコンポーネントインターコネクト(PCI: Peripheral Component Interconnect)、PCIエクスプレス(PCIe: PCI-Express)、PCIエクステンデッド(PCI−X:PCI-eXtended)、ノンボラタイルメモリエクスプレス(NVMe: Non-Volatile Memory Express)、ノンボラタイルメモリエクスプレス(NVMe)オーバPCIエクスプレスファブリック(Non-Volatile Memory Express (NVMe) over a PCI-Express fabric)、ノンボラタイルメモリエクスプレス(NVMe)オーバイーサネット(登録商標)ファブリック(Non-Volatile Memory Express (NVMe) over an Ethernet fabric)、およびノンボラタイルメモリエクスプレス(NVMe)オーバインフィニバンドファブリック(Non-Volatile Memory Express (NVMe) over an Infiniband fabric)といったプロトコルの1つ以上を使用して、クライアント(100A,100M)はストレージ機器(102)と通信するように構成される。当業者であれば、当該技術は上記のプロトコルに限定されないということを理解するであろう。
当該技術の1つ以上の実施形態において、クライアントがPCI、PCI−エクスプレスまたはNVMeを実施する場合、クライアントはルートコンプレックス(root complex)(図示せず)を含む。当該技術の一実施形態において、ルートコンプレックスは、クライアントプロセッサおよびクライアントメモリをPCIeファブリックに接続するデバイスである。当該技術の一実施形態において、ルートコンプレックスはクライアントプロセッサに統合される。
当該技術の一実施形態において、PCIeファブリックは、スイッチ(たとえば図1Dにおけるクライアントスイッチ(116)およびたとえば図2Aにおけるスイッチファブリック(206)のようなスイッチファブリック内のスイッチ)を介して接続されるルートコンプレックスおよびエンドポイントを含む。当該技術の一実施形態では、エンドポイントは、PCIトランザクション(たとえば読出要求、書込要求)を発生させ得るかまたはPCIトランザクションのターゲットである、ルートコンプレックスまたはスイッチ以外のデバイスである。
当該技術の一実施形態において、単一のクライアントおよび単一のストレージ機器は単一のPCIeファブリックの一部と考えられ得る。当該技術の別の実施形態において、1つ以上のクライアントおよび1つ以上のストレージ機器の任意の組合せは、単一のPCIeファブリックの一部と考えられ得る。さらに、PCIeを使用してストレージ機器内の個々のコンポーネントが通信するとともにPCIeを使用してクライアントにおける個々のコンポーネント(図1D参照)が通信する場合、ストレージ機器およびクライアントにおけるすべてのコンポーネントは単一のPCIeファブリックの一部と考えられ得る。当業者であれば、当該技術から逸脱することがなければ、当該技術のさまざまな実施形態が別のタイプのファブリックを使用して実現されてもよいことを理解するであろう。
引き続き図1Aを参照して、当該技術の一実施形態において、ストレージ機器(102)は、揮発性および永続ストレージを含むシステムであり、1つ以上のクライアント(100A,100M)からの読出要求および/または書込要求を処理するように構成される。ストレージ機器(102)のさまざまな実施形態が以下の図2A〜図2Dに記載される。
図1Bを参照して、図1Bは、クライアント(100A,100M)が(図1Bにおいてストレージ機器メッシュ(104)として示される)メッシュ構成で配される複数のストレージ機器(104A,104B,104C,104D)に接続されるシステムを示す。図1Bに示されるように、ストレージ機器メッシュ(104)は、完全接続のメッシュ構成(fully-connected mesh configuration)にある、すなわち、ストレージ機器メッシュ(104)におけるすべてのストレージ機器(104A,104B,104C,104D)がストレージ機器メッシュ(104)におけるすべての他のストレージ機器(104A,104B,104C,104D)に直接的に接続されるのが示される。当該技術の一実施形態において、クライアント(100A,100M)の各々は、ストレージ機器メッシュ(104)における1つ以上のストレージ機器(104A,104B,104C,104D)に直接的に接続され得る。当業者であれば、当該技術から逸脱することがなければ、ストレージ機器メッシュは、他のメッシュ構成(たとえば部分接続メッシュ(partially connected mesh))を使用して実現され得るということを理解するであろう。
図1Cを参照して、図1Cは、ファンアウト構成(fan-out configuration)に配される複数のストレージ機器(104A,104B,104C,104D)にクライアント(100A,100M)が接続されるシステムを示す。この構成では、各クライアント(100A,100M)は、ストレージ機器(104A,104B,104C,104D)の1つ以上に接続されるが、個々のストレージ機器(104A,104B,104C,104D)同士の間に通信は存在しない。
図1Dを参照して、図1Dは、当該技術の1つ以上の実施形態に従ったクライアントを示す。図1Dに示されるように、クライアント(110)は、クライアントプロセッサ(112)と、クライアントメモリ(114)と、クライアントスイッチ(116)とを含む。これらのコンポーネントの各々は以下に記載される。
当該技術の一実施形態において、クライアントプロセッサ(112)は、命令を実行するように構成される単一のコアまたは複数のコアを有する電子回路のグループである。当該技術の一実施形態において、クライアントプロセッサ(112)は、複合命令セット(CISC: Complex Instruction Set)アーキテクチャまたは縮小命令セット(RISC: Reduced Instruction Set)アーキテクチャを使用して実現され得る。当該技術の1つ以上の実施形態において、クライアントプロセッサ(112)は、(PCIeプロトコルによって規定されるように)ルートコンプレックスを含む(図示せず)。当該技術の一実施形態において、クライアント(110)が(クライアントプロセッサ(112)へ統合され得る)ルートコンプレックスを含んでいれば、クライアントメモリ(114)は、ルートコンプレックスを介してクライアントプロセッサ(112)に接続される。代替的には、クライアントメモリ(114)は、別のポイントツーポイント接続メカニズムを使用して、クライアントプロセッサ(112)に直接的に接続される。当該技術の一実施形態において、クライアントメモリ(114)は、任意の揮発性メモリに対応する。当該揮発性メモリは、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスDRAM、SDR SDRAMおよびDDR SDRAMを含むが、これらに限定されない。
当該技術の一実施形態では、クライアントメモリ(114)は、クライアントプロセッサについての送信キューと、クライアントプロセッサについての完了キューとのうちの1つ以上を含む。当該技術の一実施形態において、ストレージ機器メモリは、ファブリックを通じてクライアントに可視であるクライアントプロセッサについての1つ以上の送信キューを含み、クライアントメモリは、ファブリックを通じてストレージ機器に可視であるクライアントプロセッサについての1つ以上の完了キューを含む。当該技術の一実施形態において、クライアントプロセッサについての送信キューは、クライアントプロセッサにコマンド(たとえば読出要求、書込要求)を送信するよう使用される。当該技術の一実施形態において、クライアントプロセッサについての完了キューは、別のエンティティに発行したコマンドが完了したことを、クライアントプロセッサに信号通知するよう使用される。当該技術の実施形態は、当該技術から逸脱することがなければ、他の通知メカニズムを使用して実現されてもよい。
当該技術の一実施形態において、クライアントスイッチ(116)は単一のスイッチのみを含む。当該技術の別の実施形態において、クライアントスイッチ(116)は、複数の相互接続されたスイッチを含む。クライアントスイッチ(116)が複数のスイッチを含んでいる場合、各スイッチは他のすべてのスイッチに接続されてもよく、スイッチファブリックにおけるスイッチのサブセットに接続されてもよく、または1つの他のスイッチにのみ接続されてもよい。当該技術の一実施形態において、クライアントスイッチ(116)におけるスイッチの各々は、データおよびメッセージがクライアント(110)とストレージ機器(図示せず)との間で転送されることを可能にするように構成される、ハードウェアおよび(たとえば集積回路を使用して実現される)(スイッチファブリックが実施するプロトコルによって規定されるような)ロジックの組み合わせである。
当該技術の一実施形態において、クライアント(100A,100M)がPCI、PCIeまたはPCI−Xのうち1つ以上のプロトコルを実施する場合、クライアントスイッチ(116)はPCIスイッチである。
このような実施形態では、クライアントスイッチ(116)は、多くのポートを含み、各ポートはトランスペアレントなブリッジまたはノントランスペアレントなブリッジとして構成され得る。トランスペアレントなブリッジとして実施されるポートは、ルートコンプレックスが、ポートに(直接的にまたは間接的に)接続されたデバイス(他のルートコンプレックス、スイッチ、PCIブリッジまたはエンドポイントであってもよい)の発見を継続することを可能にする。対照的に、ルートコンプレックスがノントランスペアレントなブリッジとして実施されたポートに直面すると、ルートコンプレックスは、ポートに接続されたデバイスの発見を継続することができず、むしろ、ルートコンプレックスは、このようなポートをエンドポイントとして扱う。
ポートがノントランスペアレントなブリッジとして実施される場合、ノントランスペアレントなブリッジのいずれかの側上のデバイスは、メールボックスシステムおよびドアベル割込(doorbell interrupt)(クライアントスイッチによって実現される)を用いてのみ通信し得る。ドアベル割込は、ノントランスペアレントなブリッジの一方の側のプロセッサがノントランスペアレントなブリッジの他方の側のプロセッサに割込を発行するのを可能にする。さらに、メールボックスシステムは、スイッチファブリックのいずれかの側のプロセッサによって読出可能および書込可能である1つ以上のレジスタを含む。上記のレジスタは、クライアントスイッチのいずれかの側のプロセッサがノントランスピアレントなブリッジに亘って制御および状態情報を通過させるのを可能にする。
当該技術の一実施形態において、ノントランスペアレントなブリッジの一方の側のデバイスからノントランスペアレントなブリッジの他方の側のデバイスにPCIトランザクションを送信するために、PCIトランザクションはノントランスペアレントなブリッジを実現するポートへアドレス指定されなければならない。PCIトランザクションの受信の際、クライアントスイッチは、(直接アドレス変換メカニズムまたはルックアップテーブルに基づいた変換メカニズムのいずれかを使用して)アドレス変換を行なう。次いで、結果得られるアドレスはノントランスペアレントなブリッジの他の側の適切なデバイスに向かうようパケットをルーティングするよう使用される。
当該技術の一実施形態において、クライアントスイッチ(116)は、クライアントメモリ(114)の少なくともある部分がストレージ機器に直接的にアクセス可能であるように構成される。換言すると、クライアントスイッチの一方の側上のストレージ機器は、クライアントスイッチを介して、クライアントスイッチの他方の側上のクライアントメモリに直接的にアクセスし得る。
当該技術の一実施形態では、クライアントスイッチ(116)はDMAエンジン(118)を含む。当該技術の一実施形態において、DMAエンジン(118)は、クライアントプロセッサかまたはクライアントスイッチに接続されたストレージ機器のいずれかによってプログラムされ得る。上で論じたように、クライアントスイッチ(116)は、クライアントメモリ(114)の少なくともある部分がストレージ機器またはストレージモジュールにアクセス可能であるように構成される。したがって、DMAエンジン(118)は、ストレージ機器にアクセス可能であるクライアントメモリの当該部分におけるアドレスからデータを読み出し、かつストレージ機器またはストレージモジュールにおいてメモリにこのようなデータのコピーを直接的に書き込むようにプログラムされ得る。さらに、DMAエンジン(118)は、ストレージ機器からデータを読み出し、ストレージ機器にアクセス可能であるクライアントメモリの当該部分におけるアドレスにこのようなデータのコピーを直接的に書き込むようにプログラムされ得る。
当該技術の一実施形態では、DMAエンジン(118)はマルチキャスティングをサポートする。このような実施形態において、ストレージ機器におけるプロセッサ(図2A参照)は、マルチキャストグループを作成し得る。当該マルチキャストグループの各メンバーは、ストレージ機器上のメモリにおけるユニークな宛先アドレスに対応する。マルチキャストグループの各メンバーは、(i)宛先アドレス、(ii)ソースアドレス、(iii)転送サイズフィールド、および(iv)制御フィールドを特定する記述子に関連付けられる。記述子の各々についてのソースアドレスは一定のままである一方、宛先アドレスは各記述子について変化する。ひとたびマルチキャストグループが作られると、DMAエンジンによって開始された転送を含む、マルチキャストグループアドレスをターゲットとするスイッチを通じた如何なるデータ転送によっても、マルチキャストグループに関連付けられる宛先アドレスのすべてにデータの同一のコピーが配置される。当該技術の一実施形態において、スイッチは、マルチキャストグループ記述子のすべてを並列に処理する。
図1Dの議論を継続して、当業者であれば、図1Dはクライアント(110)に位置するクライアントスイッチ(116)を示しているが、当該技術から逸脱することがなければ、クライアントスイッチ(116)はクライアントの外部に配置されてもよいということを理解するであろう。さらに、当業者であれば、当該技術から逸脱することがなければ、DMAエンジン(118)はクライアントスイッチ(116)の外部に配置されてもよいということを理解するであろう。
図1Eを参照して、図1Eは、メッシュ構成(図1Eにおいてストレージ機器メッシュ(104)として示される)に配される複数のストレージ機器(104A,104B,104C,104D)にクライアントスイッチ(108)を介してクライアント(100A,100M)が接続されるシステムを示す。図1Eに示される実施形態では、各クライアント(100A,100M)は自身のクライアントスイッチを含んでおらず、クライアントのすべては、クライアントスイッチ(108)を共有する。図1Eに示されるように、ストレージ機器メッシュ(104)は、完全接続のメッシュ構成で示される。すなわち、ストレージ機器メッシュ(104)におけるすべてのストレージ機器(104A,104B,104C,104D)は、ストレージ機器メッシュ(104)におけるその他のすべてのストレージ機器(104A,104B,104C,104D)に直接的に接続される。当該技術の一実施形態では、クライアントスイッチ(108)は、ストレージ機器メッシュ(104)における1つ以上のストレージ機器(104A,104B,104C,104D)に直接的に接続され得る。当業者であれば、当該技術から逸脱することがなければ、ストレージ機器メッシュが他のメッシュ構成(たとえば部分接続メッシュ)を使用して実現され得るということを理解するであろう。
図1Eに示されないが、各クライアントは、自身のクライアントスイッチを(図1Dに示されるように)含んでもよいが、(以下に規定される)スイッチファブリックを使用して、ストレージ機器メッシュ(104)に接続されてもよい。
当業者であれば、図1A〜図1Eは限られた数のクライアントに接続されるストレージ機器を示すが、当該技術から逸脱することがなければ、ストレージ機器は如何なる数のクライアントに接続されてもよいということを理解するであろう。当業者であれば、図1A〜図1Eはさまざまなシステム構成を示すが、当該技術は上記のシステム構成に限定されないということを理解するであろう。さらに当業者であれば、当該技術から逸脱することがなければ、クライアント(システムの構成にかかわらず)は、スイッチファブリック(図示せず)(以下に記載される)を使用して、ストレージ機器に接続され得るということを理解するであろう。
図2A〜図2Dは、当該技術の1つ以上の実施形態に従ったストレージ機器の実施形態を示す。図2Aを参照して、ストレージ機器は、制御モジュール(200)およびストレージモジュールグループ(202)を含む。これらのコンポーネントの各々は以下に記載される。一般に、制御モジュール(200)は、1つ以上のクライアントからの読出要求および書込要求の処理を管理するように構成される。特に、制御モジュールは、(以下に論じられる)IOMを介して1つ以上のクライアントから要求を受け取り、要求を処理(ストレージモジュールに要求を送信することを含み得る)し、要求が処理された後にクライアントに応答を提供するよう構成される。制御モジュールにおけるコンポーネントに関する付加的な詳細は以下に含まれる。さらに、読出要求および書込要求の処理に関する制御モジュールの動作は、図4A〜図7Cを参照して以下に記載される。
図2Aの議論を継続して、当該技術の一実施形態において、制御モジュール(200)は、入力/出力モジュール(IOM)(204)、スイッチファブリック(206)、プロセッサ(208)、メモリ(210)および随意にフィールドプログラマブルゲートアレイ(FPGA)(212)を含む。当該技術の一実施形態において、IOM(204)は、クライアント(図1A〜図1Eにおける100A,100M)とストレージ機器における他のコンポーネントとの間の物理インターフェイスである。IOMは、PCI、PCIe、PCI−X、イーサネット(登録商標)(IEEE802.3a〜802.3bjの下で規定されるさまざまな規格を含むがこれらに限定されない)、インフィニバンド、およびリモートダイレクトメモリアクセス(RDMA)オーバコンバージドイーサネット(RoCE: Remote Direct Memory Access over Converged Ethernet)といったプロトコルの1つ以上をサポートする。当業者であれば、当該技術から逸脱することがなければ、IOMは、上でリストされたもの以外のプロトコルを使用して実現されてもよいということを理解するであろう。
図2Aの議論を継続して、スイッチファブリック(206)は単一のスイッチのみを含む。当該技術の別の実施形態では、スイッチファブリック(206)は、複数の相互接続されたスイッチを含む。スイッチファブリック(206)が複数のスイッチを含んでいる場合、各スイッチは他のすべてのスイッチに接続され得るか、スイッチファブリックにおけるスイッチのサブセットに接続され得るか、または、スイッチファブリックにおける1つの他のスイッチにのみ接続され得る。当該技術の一実施形態において、スイッチファブリック(206)におけるスイッチの各々は、ハードウェアと(スイッチファブリックが実施するプロトコルによって規定されるように)(たとえば集積回路を使用して実施される)ロジックとの組み合わせであり、ストレージ機器においてさまざまなコンポーネントを一緒に接続し、当該接続されたさまざまなコンポーネント同士の間でパケットを(当該ロジックを使用して)ルーティングするように構成される。当該技術の一実施形態において、スイッチファブリック(206)は、IOM(204)と、プロセッサ(208)と、ストレージモジュールグループ(202)と、存在していればFPGA(212)とに物理的に接続される。当該技術の一実施形態において、制御モジュール(200)におけるすべてのコンポーネント間の通信(プロセッサ(208)とメモリ(210)との間は除く)は、スイッチファブリック(206)を通過する。さらに、制御モジュール(200)とストレージモジュールグループ(202)との間のすべての通信はスイッチファブリック(206)を通過する。当該技術の一実施形態では、スイッチファブリック(206)は、PCIプロトコル(たとえばPCI、PCIe、PCI−X、または別のPCIプロトコル)を使用して実施される。このような実施形態では、スイッチファブリック(206)を通過する通信はすべて、対応するPCIプロトコルを使用する。
当該技術の一実施形態において、スイッチファブリックがPCIプロトコルを実施する場合、スイッチファブリック(206)は、プロセッサのためのポート(またはより具体的には、プロセッサ(208)に統合されたルートコンプレックスのためのポートもしくはプロセッサに接続されたルートコンプレックスのためのポート)と、ストレージモジュールグループ(202)におけるストレージモジュール(214A,214N)(図3A〜図3B参照)のための1つ以上のポートと、FPGA(212)(存在する場合)のためのポートと、IOM(204)のためのポートとを含む。当該技術の1つ以上の実施形態において、上記のポートの各々は、(上で論じたように)トランスペアレントなブリッジまたはノントランスペアレントなブリッジとして構成され得る。当業者であれば、スイッチファブリック(206)がPCIの実現例に関して記載されているが、当該技術から逸脱することがなければ、スイッチファブリック(206)は他のプロトコルを使用して実現されてもよいということを理解するであろう。
当該技術の一実施形態では、スイッチファブリック(206)における少なくとも1つのスイッチは、マルチキャスティングを実現するように構成される。より具体的には、当該技術の一実施形態において、プロセッサ(208)はマルチキャストグループを生成するように構成される。当該マルチキャストグループは、2つ以上のメンバーを含んでおり、各メンバーは、メモリ(210)および/またはストレージモジュール(214A,214N)におけるアドレスを特定する。マルチキャストグループが作られる場合、マルチキャストグループはマルチキャストアドレスに関連付けられる。マルチキャスティングを実施するために、スイッチファブリックにおける少なくとも1つのスイッチは以下のように構成される、すなわち、宛先アドレスとしてマルチキャストアドレスを特定する書込が受け取られると、当該スイッチがマルチキャストグループにおける各メンバーについて新しい書込を生成し、ストレージ機器における適切なアドレスに書込を発行するように構成される。当該技術の一実施形態において、マルチキャストアドレスに特定のオフセットを加えることによって、スイッチによって生成される各書込についてのアドレスが決定される。
図2Aを引き続き参照して、プロセッサ(208)は、命令を実行するように構成される単一のコアまたは複数のコアを有する電子回路のグループである。当該技術の一実施形態において、プロセッサ(208)は、複合命令セット(CISC: Complex Instruction Set)アーキテクチャまたは縮小命令セット(RISC: Reduced Instruction Set)アーキテクチャを使用して実現され得る。当該技術の1つ以上の実施形態において、プロセッサ(208)は、(PCIeプロトコルによって規定されるような)ルートコンプレックスを含む。当該技術の一実施形態において、制御モジュール(200)が(プロセッサ(208)へ統合され得る)ルートコンプレックスを含んでいれば、メモリ(210)は、ルートコンプレックスを介してプロセッサ(208)に接続される。代替的には、メモリ(210)は、別のポイントツーポイント接続メカニズムを使用して、プロセッサ(208)に直接的に接続される。当該技術の一実施形態において、メモリ(210)は、任意の揮発性メモリに対応する。当該揮発性メモリは、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスDRAM、SDR SDRAMおよびDDR SDRAMを含むが、これらに限定されない。
当該技術の一実施形態において、プロセッサ(208)は、インメモリデータ構造(in-memory data structure)(図示せず)を作成し更新するように構成され、当該インメモリデータ構造はメモリ(210)に格納される。当該技術の一実施形態において、インメモリデータ構造は、論理アドレスとストレージモジュールのセットにおける物理的なストレージアドレスとの間のマッピング(直接または間接)を含む。当該技術の一実施形態では、論理アドレスは、データがクライアントの視点から見て存在するように思われるアドレスである。当該技術の一実施形態では、論理アドレスは、nタプルにハッシュ関数(たとえばSHA−1、MD−5など)を適用することによって生成されるハッシュ値である(または当該ハッシュ値を含む)。当該技術の一実施形態では、nタプルは<オブジェクトID,オフセットID>であり、オブジェクトIDはファイルを規定し、オフセットIDはファイルの開始アドレスに対する位置を規定する。当該技術の別の実施形態において、nタプルは<オブジェクトID,オフセットID,発生時間>であり、発生時間は、(オブジェクトIDを使用して識別される)ファイルが作成された時間に対応する。代替的には、論理アドレスは、論理オブジェクトIDおよび論理バイトアドレスか、または論理オブジェクトIDおよび論理アドレスオフセットを含んでもよい。当該技術の別の実施形態では、論理アドレスは、オブジェクトIDおよびオフセットIDを含む。当業者であれば、複数の論理アドレスが単一の物理アドレスにマッピングされてもよく、論理アドレスは上記の実施形態に限定されないということを理解するであろう。
当該技術の一実施形態において、物理アドレスは、(i)メモリ(210)における位置、(ii)ボールテッドメモリ(vaulted memory)(たとえば図3Aにおける326)における位置、または(iii)ソリッドステートメモリモジュール(たとえば図3Bにおける330)における位置に対応し得る。当該技術の一実施形態において、インメモリデータ構造は、ストレージ機器にデータの複数のコピーが存在する場合、単一のハッシュ値を複数の物理アドレスにマッピングし得る。
当該技術の一実施形態では、メモリ(210)は、プロセッサについての送信キュー、プロセッサについての完了キュー、ストレージ機器におけるストレージモジュールの各々についての送信キュー、およびストレージ機器におけるストレージモジュールの各々についての完了キューの1つ以上を含む。当該技術の一実施形態では、プロセッサについての送信キューは、コマンド(たとえば読出要求、書込要求)をプロセッサに送信するよう使用される。当該技術の一実施形態において、プロセッサについての完了キューは、別のエンティティに発行したコマンドが完了したことを、プロセッサに信号通知するよう使用される。ストレージモジュールについての送信キューおよび完了キューは同様の態様で機能する。
当該技術の一実施形態では、(スイッチファブリックを介する)プロセッサは、FPGA(212)にさまざまなタイプの処理をオフロードするように構成される。当該技術の一実施形態では、FPGA(212)は、ストレージモジュールに書き込まれているデータおよび/またはストレージモジュールから読み出されているデータについてチェックサムを計算する機能を含む。さらに、FPGA(212)は、RAIDスキーム(たとえばRAID2〜RAID6)を使用してストレージモジュールにデータを格納するためにPおよび/もしくはQパリティー情報を計算する機能、ならびに/またはRAIDスキーム(たとえばRAID2〜RAID6)を使用して格納された破損データをリカバリするのに必要なさまざまな計算を行なう機能を含み得る。当該技術の一実施形態において、ストレージモジュールグループ(202)は、データを格納するよう各々が構成される1つ以上のストレージモジュール(214A,214N)を含む。ストレージモジュールは、以下に図3A〜図3Bにおいて記載される。
当該技術の一実施形態では、プロセッサ(208)は、システムにおいて1つ以上のDMAエンジンをプログラムするように構成される。たとえば、プロセッサ(208)はクライアントスイッチにおけるDMAエンジンをプログラムするように構成される(図1D参照)。プロセッサ(208)はさらに、ストレージモジュールにおけるDMAエンジンをプログラムするように構成され得る(図3A〜図3B参照)。当該技術の一実施形態において、クライアントスイッチにおけるDMAエンジンをプログラムすることは、マルチキャストグループを作成することと、当該マルチキャストグループにおけるメンバーの各々について記述子を生成することとを含み得る。
図2Bを参照して、図2Bは、当該技術の1つ以上の実施形態に従ったストレージ機器を示す図である。ストレージ機器は、制御モジュール(216)と、少なくとも2つのストレージモジュールグループ(236,238)とを含む。制御モジュール(216)は、IOM A(218)と、IOM B(220)と、プロセッサA(222)と、プロセッサB(224)と、(存在する場合)FPGA A(230)と、(存在する場合)FPGA B(232)と、ストレージモジュールグループA(236)におけるストレージモジュール(236A,236N)と、ストレージモジュールグループB(238)におけるストレージモジュール(238A,238N)とに直接的に接続されるスイッチファブリック(234)を含む。上記のコンポーネント間のすべての通信(プロセッサA(222)とプロセッサB(224)との間以外)はスイッチファブリック(234)を通過する。当該技術の一実施形態では、制御モジュール(216)内のプロセッサ(222,224)は、たとえばインテル(登録商標)QuickPathインターコネクト(Intel QuickPath Interconnect)のようなポイントツーポイント相互接続を使用して直接的に通信することができる。当業者であれば、当該技術から逸脱することがなければ、他のポイントツーポイント通信メカニズムがプロセッサ(222,224)間の直接的な通信を可能にするよう使用されてもよいということを理解するであろう。
図2Bを引き続き参照して、当該技術の一実施形態において、制御モジュール(216)は、図2Aにおける制御モジュール(200)と実質的に同様である。当該技術の一実施形態では、スイッチファブリック(234)は、図2Aにおけるスイッチファブリック(206)と実質的に同様である。当該技術の一実施形態では、各プロセッサ(222,224)は、図2Aにおけるプロセッサ(208)と実質的に同様である。当該技術の一実施形態では、メモリ(226,228)は、図2Aにおけるメモリ(210)と実質的に同様である。当該技術の一実施形態では、IOM(218,220)は、図2AにおけるIOM(204)と実質的に同様である。当該技術の一実施形態では、FPGA(230,232)は、図2AにおけるFPGA(212)と実質的に同様である。最後に、ストレージモジュールグループ(236,238)は、図2Aにおけるストレージモジュールグループ(202)と実質的に同様である。
当該技術の一実施形態において、制御モジュール(216)における2つのIOM(218,220)は、(単一のIOMを有する制御モジュールのI/O帯域幅に対して)制御モジュール(216)についてのI/O帯域幅を2倍にする。さらに、第2のIOM(または付加的なIOM)の追加によって、所与の制御モジュールに接続され得るクライアントの数、ひいてはストレージ機器に接続され得るクライアントの数が増加される。当該技術の一実施形態において、さまざまな接続される(上記の)コンポーネント間の通信を扱うためのスイッチファブリック(234)の使用によって、プロセッサ(222,224)の各々が、スイッチファブリック(234)に接続されるすべてのFPGA(230,232)およびすべてのストレージモジュール(236A,236N,238A,238N)に(スイッチファブリック(234)を介して)直接的にアクセスすることが可能になる。
図2Cを参照して、図2Cは、ストレージモジュールグループ(256,258,260,262)における複数のストレージモジュール(図示せず)に(スイッチファブリック(246)を介して)接続された制御モジュール(240)を含むストレージ機器を示す。図2Cに示されるように、制御モジュール(240)は、2つのIOM(242,244)、2つのプロセッサ(248,250)およびメモリ(252,254)を含む。当該技術の一実施形態では、制御モジュール(240)におけるすべてのコンポーネントは、スイッチファブリック(246)を介して通信する。さらに、プロセッサ(248,250)は、スイッチファブリック(246)または(図2Cに示されるような)直接接続を使用して互いに通信し得る。当該技術の一実施形態では、制御モジュール(240)内のプロセッサ(248,250)は、たとえばインテル(登録商標)QuickPathインターコネクト(Intel QuickPath Interconnect)のようなポイントツーポイント相互接続を使用して直接的に通信することができる。当業者であれば、当該技術から逸脱することがなければ、他のポイントツーポイント通信メカニズムがプロセッサ(248,250)間の直接的な通信を可能にするよう使用されてもよいということを理解するであろう。
当該技術の一実施形態において、プロセッサA(248)は主として、ストレージモジュールグループAおよびB(256,258)からのデータの格納および抽出に関係付けられる要求を扱うように構成され、プロセッサB(250)は主として、ストレージモジュールグループCおよびD(260,262)からのデータの格納および抽出に関係付けられる要求を扱うように構成される。しかしながら、プロセッサ(248,250)は、(スイッチファブリック(246)を介して)ストレージモジュールグループ(256,258,260,262)のすべてと通信するように構成される。この構成は、制御モジュール(240)がプロセッサ間でのI/O要求の処理を拡張することを可能にし、および/またはプロセッサの一つに障害が起きるシナリオに対処するために、ビルトインの冗長性を提供する。
図2Cを引き続き参照して、当該技術の一実施形態において、制御モジュール(240)は、図2Aにおける制御モジュール(200)と実質的に同様である。当該技術の一実施形態では、スイッチファブリック(246)は、図2Aにおけるスイッチファブリック(206)と実質的に同様である。当該技術の一実施形態では、各プロセッサ(248,250)は、図2Aにおけるプロセッサ(208)と実質的に同様である。当該技術の一実施形態では、メモリ(252,254)は、図2Aにおけるメモリ(210)と実質的に同様である。当該技術の一実施形態では、IOM(242,244)は、図2AにおけるIOM(204)と実質的に同様である。最後に、ストレージモジュールグループ(256,258,260,262)は、図2Aにおけるストレージモジュールグループ(202)と実質的に同様である。
図2Dを参照して、図2Dは、2つの制御モジュール(264,266)を含むストレージ機器を示す。各制御モジュールは、IOM(296,298,300,302)、プロセッサ(268,270,272,274)、メモリ(276,278,280,282)およびFPGA(存在する場合)(288,290,292,294)を含む。制御モジュール(264,266)の各々は、制御モジュール内のコンポーネントがそこを経由して通信するスイッチファブリック(284,286)を含む。
当該技術の一実施形態では、制御モジュール内のプロセッサ(268,270,272,274)は、たとえばインテル(登録商標)QuickPathインターコネクト(Intel QuickPath Interconnect)のようなポイントツーポイント相互接続を使用して互いに直接的に通信し得る。当業者であれば、当該技術から逸脱することがなければ、他のポイントツーポイント通信メカニズムがプロセッサ(268,270,272,274)間の直接的な通信を可能にするよう使用されてもよいということを理解するであろう。さらに、制御モジュールAにおけるプロセッサ(268,270)は、制御モジュールBにおけるスイッチファブリック(286)への直接接続を介して、制御モジュールBにおけるコンポーネントと通信し得る。同様に、制御モジュールBにおけるプロセッサ(272,274)は、制御モジュールAにおけるスイッチファブリック(284)への直接接続を介して、制御モジュールAにおけるコンポーネントと通信し得る。
当該技術の一実施形態において、制御モジュールの各々は、(ストレージモジュールグループ(304,306,308,310)によって示される)さまざまなストレージモジュールに接続される。図2Dに示されるように、各制御モジュールは、制御モジュールにおけるスイッチファブリックに接続されるストレージモジュールと通信し得る。さらに、制御モジュールA(264)におけるプロセッサは、スイッチファブリックB(286)を使用して、制御モジュールB(266)に接続されるストレージモジュールと通信し得る。同様に、制御モジュールB(266)におけるプロセッサは、スイッチファブリックA(284)を使用して、制御モジュールA(264)に接続されるストレージモジュールと通信し得る。
制御モジュール間の相互接続によって、どの制御モジュールがI/O要求を受け取るかに関わらず、ストレージ制御がストレージ機器に亘ってI/O負荷を分散することが可能になる。さらに、制御モジュールの相互接続によって、ストレージ機器はより多くのI/O要求を処理することが可能になる。さらに、制御モジュールの相互接続は、制御モジュール(または当該制御モジュールにおける1つ以上のコンポーネント)に障害が起きた場合に、ビルトインの冗長性を提供する。
図2B〜図2Dに関して、当該技術の1つ以上の実施形態において、インメモリデータ構造が、制御モジュールにおけるメモリに亘ってミラーリングされる。このような場合、制御モジュールにおけるプロセッサは、インメモリデータ構造がすべてのメモリに亘ってミラーリングされるようにストレージ機器内のすべてのメモリを更新するのに必要なコマンドを発行する。これにより、いずれのプロセッサも、ストレージ機器において(上で論じられたnタプルによって規定されるように)データの位置を決定するために自身のメモリを使用し得る。この機能により、ストレージモジュール内のデータの位置に関して、如何なるプロセッサも如何なるI/O要求も処理することが可能になる。さらにインメモリデータ構造をミラーリングすることによって、メモリのうちの1つに障害が起きても、ストレージ機器は動作し続け得る。
当業者であれば、図2A〜図2Dは限られた数のストレージモジュールに接続される制御モジュールを示すが、当該技術から逸脱することがなければ、制御モジュールは任意の数のストレージモジュールに接続されてもよいということを理解するであろう。当業者であれば、図2A〜図2Dは、ストレージ機器のさまざまな構成を示しているが、当該技術から逸脱することがなければ、ストレージ機器は他の構成を使用して実施されてもよいということを理解するであろう。
図3A〜図3Bは、当該技術の1つ以上の実施形態に従ったストレージモジュールを示す。図3Aを参照して、ストレージモジュール(320)は、ストレージモジュールコントローラ(322)、メモリ(324)および1つ以上のソリッドステートメモリモジュール(330A,330N)を含む。これらのコンポーネントの各々は以下に記載される。
当該技術の一実施形態では、ストレージモジュールコントローラ(322)は、1つ以上の制御モジュールからのデータの読み出しおよび/または1つ以上の制御モジュールへのデータの書き込みをする要求を受け取るよう構成される。さらに、ストレージモジュールコントローラ(322)は、メモリ(324)および/またはソリッドステートメモリモジュール(330A,330N)を使用して、読出要求および書込要求を処理するように構成される。図3Aには示されないが、ストレージモジュールコントローラ(322)は、メモリ(324)またはソリッドステートメモリモジュール(330A,330N)の1つからデータを読み出し、クライアントメモリ(図1Dにおける114)における物理アドレスにデータのコピーを書き込むように構成されるDMAエンジンを含んでもよい。さらに、DMAエンジンは、メモリ(324)からのデータをソリッドステートメモリモジュールの1つ以上に書き込むよう構成され得る。当該技術の一実施形態では、DMAエンジンは、プロセッサ(たとえば図2Aにおける208)によってプログラムされるように構成される。当業者であれば、当該技術から逸脱することがなければ、ストレージモジュールはストレージモジュールコントローラの外部のDMAエンジンを含んでもよいということを理解するであろう。
当該技術の一実施形態において、メモリ(324)は、任意の揮発性メモリに対応する。当該揮発性メモリは、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスDRAM、SDR SDRAMおよびDDR SDRAMを含むが、これらに限定されない。
当該技術の一実施形態において、メモリ(324)は、ボールテッドメモリ(326)およびキャッシュ(328)に論理的または物理的にパーティショニングされ得る。当該技術の一実施形態において、ストレージモジュールコントローラ(322)は、ストレージモジュールにおける電源障害の通知の場合(またはストレージモジュールが電力を失い得る別の場合)、ボールテッドメモリ(326)の全コンテンツをソリッドステートメモリモジュール(330A,330N)の1つ以上に書き出すように構成される。当該技術の一実施形態において、ストレージモジュールコントローラ(322)は、電源障害の通知の時間とストレージモジュールの実際の電力損失との間に、ボールテッドメモリ(326)の全コンテンツをソリッドステートメモリモジュール(330A,330N)の1つ以上に書き込むように構成される。対照的に、キャッシュ(328)のコンテンツは、電源障害の場合(またはストレージモジュールが電力を失い得る別の場合)には失われる。
当該技術の一実施形態において、ソリッドステートメモリモジュール(330A,330N)は、永続データを格納するようソリッドステートメモリを使用する任意のデータストレージデバイスに対応する。当該技術の一実施形態において、ソリッドステートメモリは、NANDフラッシュメモリ、NORフラッシュメモリ、磁気RAMメモリ(M−RAM)、スピントルク磁気RAMメモリ(ST−MRAM)、相変化メモリ(PCM)、または不揮発性ストレージクラスメモリ(SCM)として規定される任意の他のメモリを含んでもよいが、これらに限定されない。
図3Bを参照して、当該技術の一実施形態において、ソリッドステートメモリモジュール(330)がフラッシュメモリ(たとえばNANDフラッシュメモリ、NORフラッシュメモリなど)を含む場合、フラッシュメモリの一部がシングルレベルセル(SLC: single-level cell)モード(332)で動作し得、フラッシュメモリの別の部分がマルチレベルセル(MLC: multi-level cell)モードで動作し得る。より具体的には、当該技術の一実施形態において、フラッシュメモリはMLCフラッシュメモリであり、ストレージモジュールコントローラは、SLCブロックとしてあるブロック(すなわちSLCモード部分(332))を指定し、MLCブロックとして他のブロック(すなわちMLCモード部分(334))を指定する機能を含む。上記の指定に基づいて、ストレージモデルコントローラは、フラッシュメモリは実際にはMLCフラッシュメモリであるが、まるでSLCフラッシュメモリのように、SLCブロックと相互作用し得る。
MLCモードで動作しているフラッシュメモリの割合(すなわちMLCモード部分334のサイズ)と比較した、SLCモードで動作しているフラッシュメモリの割合(すなわちSLCモード部分(332)のサイズ)は、当該技術の実現例に基づき変動し得る。たとえば、当該技術の一実施形態において、SLCモードで動作するフラッシュメモリの量は、(図3Aにおいて示されるような)ボールテッドメモリ(326)のサイズと少なくとも等しく、フラッシュメモリの残部はMLCモードで動作する。
当該技術の一実施形態では、(i)クライアントスイッチを介してアクセス可能なクライアントメモリの部分、(ii)制御モジュールにおけるメモリ、(iii)ストレージモジュールにおけるメモリ、および(iv)ソリッドステートメモリモジュールといったストレージ位置が、統合されたアドレス空間の一部である。したがって、ストレージ機器におけるプロセッサの視点から、(物理的に別個である)上記のストレージ位置同士が、物理アドレスの単一のプールとして現われる。換言すると、プロセッサは、統合されたアドレス空間において物理アドレスのうちのいずれかに格納されるデータについて読出要求および/または書込要求を発行し得る。上記のストレージ位置は、統合されたアドレス空間を使用してアクセス可能であるストレージファブリックと称され得る。
当該技術の一実施形態において、統合されたアドレス空間は、クライアントスイッチにおけるノントランスペアレントなブリッジによって部分的に作成され、これにより、制御モジュールにおけるプロセッサがクライアントメモリの部分を「見る」ことを可能になる。したがって、制御モジュールにおけるプロセッサは、プロセッサが「見ること」ができるクライアントメモリの部分において、読出要求および/または書込要求を行ない得る。
図4Aは、当該技術の1つ以上の実施形態に従ったストレージモジュールを示す。ソリッドステートメモリモジュール(400)は1つ以上のブロックを含む。当該技術の一実施形態において、ブロックは、ソリッドステートメモリモジュール(400)内のストレージの最も小さな消去可能な単位である。
図4Bは、当該技術の1つ以上の実施形態に従ったブロックを示す。より具体的には、各ブロック(402)は1つ以上のページを含む。当該技術の一実施形態において、ページは、ソリッドステートメモリモジュールにおける(ページへの初期書込を含む)読出およびプログラム動作についての最も小さなアドレス指定可能な単位である。当該技術の一実施形態において、ブロック内のページを再書き込みすることは、全ブロックが再書き込みされることを必要とする。当該技術の一実施形態において、ブロック内における各ページは、フラグページ(Frag Page)(図4C参照)またはテーブルオブコンテンツ(TOC: Table of Contents)ページのいずれかである(図4D参照)。
図4Cは、当該技術の1つ以上の実施形態に従ったデータページ(404)を示す。当該技術の一実施形態において、データページ(404)は、1つ以上のフラグを含む。当該技術の一実施形態において、フラグは、有限の量のユーザデータに対応する。さらに、所与のページ内におけるフラグは、均一のサイズまたは非均一のサイズであり得る。さらに、所与のブロック内のフラグは、均一のサイズまたは非均一のサイズであり得る。当該技術の一実施形態において、所与のフラグはページのサイズ未満であり得、ちょうどページのサイズであり得、または、1つ以上のページに亘って延在し得る。当該技術の一実施形態において、データページはフラグのみを含む。当該技術の一実施形態において、各フラグは、ユーザデータ(すなわちストレージ機器における格納のためにクライアントによって提供されるデータ)を含む。この説明の目的のために、「フラグ」および「ユーザデータ」という用語は、交換可能に使用される。
図4Dは、当該技術の1つ以上の実施形態に従ったTOCページを示す。当該技術の一実施形態において、TOCページ(406)は、1つ以上のTOCエントリを含んでおり、TOCエントリの各々は、所与のフラグについてのメタデータを含む。さらに、TOCページ(406)は、ブロック(402)において別のTOCページへの参照を含み得る。当該技術の一実施形態において、TOCページは、TOCエントリ(および随意に、当該ブロックにおける別のTOCページへの参照)のみを含むが、如何なるフラグも含まない。当該技術の一実施形態において、各TOCエントリは、ブロック(402)においてフラグ(図4C参照)に対応する。TOCエントリはブロック内のフラグにのみ対応する。換言すると、TOCページはブロックに関連付けられており、そのブロックにおけるフラグについてのTOCエントリのみを含む。当該技術の一実施形態において、ソリッドステートメモリモジュールの各々内における各ブロックに欠陥がない最終ページがTOCページである。
図4Eは、当該技術の1つ以上の実施形態に従ったブロックを示す。より具体的には、図4Eは、TOCページ(420,424,431)およびデータページ(416,418,422,428,428,430)を含むブロック(408)を示す。当該技術の一実施形態において、ブロック(408)は概念的に、「頂部」から「底部」に充填される。さらに、データページにおけるフラグについてのTOCエントリの累積サイズがひとたびページのサイズと等しくなれば、TOCページが生成および格納される。図4Eを参照して、たとえば、データページ0(416)およびデータページ1(418)がブロック(408)に格納される。データページ0(416)およびデータページ1(418)におけるフラグ(図示せず)について対応するTOCエントリ(図示せず)は、当該ブロックにおけるページのサイズと等しい合計累積サイズを有する。したがって、TOCページ(414)が(ブロックにおけるフラグに対応するTOCエントリを使用して)生成され、ブロック(408)に格納される。フラグページ2(420)はその後、ブロック(408)に書き込まれる。データページ2(420)におけるフラグ(図示せず)に対応するTOCエントリは、ブロックにおけるページのサイズと等しい合計累積サイズを有するので、TOCページ(412)は作成され、ブロック(408)に格納される。さらに、ブロック(408)にTOCページが既に存在するので、TOCページ(412)はさらにTOCページ(414)への参照を含む。
このプロセスは、ブロック(408)において、充填するべきページの残りが1つになるまで、繰り返される。この点において、TOCページ(410)は、ブロック(408)の最終ページにおいて作成および格納される。当業者は、TOCページ(410)におけるTOCエントリの合計累積サイズがページのサイズ未満であり得るということを認識するであろう。そのような場合、TOCページは、TOCエントリの累積サイズとページサイズとの間の差に対応するために水増し(padding)することを含み得る。最後に、ブロック(408)に他のTOCページが存在するので、TOCページ(410)は、1つの他のTOCページ(412)への参照を含む。
図4Eに示されるように、TOCページは、TOCページの下にあるTOCページからの参照に従うことによってTOCページが得られ得るように、ブロックの「底部」からページの「頂部」にリンクされる。たとえば、TOCページ(412)は、TOCページ(410)における参照を使用してアクセスされ得る。
当業者は、ブロック(408)はデータページおよびTOCページのみを含むが、当該技術から逸脱することがなければ、ブロック(408)は、データページおよびTOCページ以外のページ(たとえばパリティーデータを含むページ)を含んでもよいということを認識するであろう。そのような他のページは、ブロック内に存在し得、実現例に依存して、TOCページとデータページとの間にインターリーブされる。
図4Fは、当該技術の1つ以上の実施形態に従ったTOCエントリを示す。当該技術の一実施形態において、各TOCエントリ(430)は、フラグ(特にフラグにおけるユーザデータ)についてメタデータを含んでおり、(i)格納されているオブジェクト(たとえばファイル)を識別するオブジェクトID(432)と、(ii)TOCエントリに対応するフラグがボールテッドメモリに書き込まれた時間を特定する発生時間(434)(たとえば制御モジュールにおけるプロセッサのプロセッサクロック値)と、(iii)(オブジェクトIDによって識別される)オブジェクトの開始に対するフラグにおけるユーザデータの始点を識別するオフセットID(436)と、(iv)フラグのサイズを特定するフラグメントサイズ(438)と、(v)フラグが格納されるブロックにおけるページを識別するページID(440)と、(vi)(ページIDによって識別される)ページにおけるフラグの開始位置を識別するバイト(442)と、(vii)フラグにおけるユーザデータの非圧縮長さを特定する論理長(444)と、(viii)フラグにおけるユーザデータのタイプ(たとえばバッドページ(badpage)、データ、スナップショット、プール)を特定するタイプ(446)と、(ix)フラグが有効なユーザデータまたはトリムであるかどうか特定する種類(448)(ソリッドステートメモリモジュールがガーベッジコレクションを実行する際に当該フラグが消去され得ることを示す)と、(x)他のユーザデータを格納するために使用され得るTOCエントリにおけるスペースに対応する留保(450)といったフィールドのうち1つ以上を含み得る。
当該技術の一実施形態において、<オブジェクトID,オフセットID>または<オブジェクトID,オフセットID,発生時間>は、クライアントによって提供されるユーザデータを識別する。さらに、<オブジェクトID,オフセットID>または<オブジェクトID,オフセットID,発生時間>は、特定のユーザデータを識別するようクライアントによって使用され、ストレージ機器は、ストレージ機器内のユーザデータを識別するために物理アドレスを使用する。当業者は、クライアントがオブジェクトIDおよびオフセットIDの代わりに論理アドレスを提供し得ることを認識するであろう。
当業者は、TOCエントリが、当該技術から逸脱することがなければ、図4Fにおいて示されるより多いまたは少ないフィールドを含み得るということを認識するであろう。さらに、TOCエントリにおけるフィールドは、当該技術から逸脱することがなければ、異なる順に配され、および/または組み合わせられ得る。さらに、図4Fにおいて示されるTOCエントリにおけるフィールドはすべて、同じ大きさのものであるように思われるが、TOCエントリにおけるさまざまなフィールドのサイズは非均一であり得、任意の所与のフィールドのサイズはTOCエントリの実現例に基づいて変動する。
図4Gは、当該技術の1つ以上の実施形態に従ったボールテッドメモリコンテンツを示す。ボールテッドメモリ(460)内のメモリの部分は、最終的に永続ストレージに格納されるページと同じサイズであるセグメントへ割り当てられ得る(たとえば図4E参照)。当該技術の一実施形態において、前述のセグメントは、(i)オープンTOCページ(462)、(ii)オープンデータページ(464)、および(iii)書込データページ(466)を含み得る。以下のセクションは、単一のオープンTOCページ、単一のオープンデータページおよび単一の書込データページに関して当該技術を説明しているが、当該技術から逸脱することがなければ、当該技術の実施形態は、複数のオープンTOCページ、複数のオープンデータページおよび/または複数の書込ページを使用して実現され得る。ボールテッドメモリは、当該技術から逸脱することがなければ、他のセグメントを含み得る。
オープンTOCページ(462)は、TOCエントリが適切なソリッドステートメモリモジュールに書き込まれる前に、そのようなTOCエントリを格納するために使用されるメモリの部分である。より具体的には、TOCエントリは、ボールテッドメモリ内のオープンTOCページに格納され、何らかの時点において、オープンTOCページは一杯になる(すなわち如何なる付加的なTOCエントリももはや格納することができない)。これが発生すると、オープンTOCページのコンテンツは、TOCページとしてストレージメモリモジュールにおける適切なブロックに書き込まれる(たとえば図4D参照)。オープンTOCページに関する付加的な詳細が図4Hに示される。
オープンデータページ(464)は、フラグが適切なソリッドステートメモリモジュールに書き込まれる前にそのようなフラグを格納するために使用されるメモリの部分である。オープンデータページに関する付加的な詳細が図4Hに示される。書込データページ(466)は、適切なソリッドステートメモリモジュールに現在書き込まれているフラグを含むメモリの部分である。メモリの前述の部分の指定は時間にわたり変化し得る。たとえば、メモリのある部分は、オープンデータページとして最初に指定され得る。メモリのこの部分がひとたび一杯になると(すなわち当該メモリの部分にこれ以上のフラグが格納することができなくなると)、当該メモリの部分の指定は書込データページに変更される。その後、書込データページのコンテンツは、データページとして、ソリッドステートメモリモジュールにおける適切なブロックに書き出される(たとえば図4C参照)。オープンTOCページ、オープンデータページおよび書込データページの使用に関する付加的な詳細が以下の図6A〜図7Gに示され得る。
図4Hは、当該技術の1つ以上の実施形態に従ったオープンTOCページを示す。オープンTOCページ(470)は、TOCビット(476)を含んでおり、TOCビットの状態(たとえば0または1のいずれか)は、メモリの部分がTOCページであることを反映する。オープンTOCページ(470)はさらに、TOCページが最終的に格納されることになる(ソリッドステートメモリモジュールにおける)ブロックにおける位置に対応するが、TOCページが格納されることになるブロックにおける実際の位置に必ずしも対応しない仮物理アドレス(478)を含む。より具体的には、TOCページが所与のブロックにおいて格納される位置は、図6Cに従って決定される。したがって、TOCページが生成されている時(すなわちTOCエントリがオープンTOCページに格納されている時)、TOCページの最終位置は分からない。しかしながら、TOCページが格納されることになるブロックは分かっている。したがって、仮物理アドレスは、TOCページが格納されることになるブロック内のアドレスとして選択される。TOCビット(476)および仮物理アドレス(478)は、集合的にタグ(472)と称される。タグ(472)は、他のコンテンツがオープンTOCページに格納される前にオープンTOCページに格納され得る。図4Hを参照して、オープンTOCページはさらに、集合的にペイロードと称され得る1つ以上のTOCエントリを含む。
図4Iは、当該技術の1つ以上の実施形態に従ったオープンデータページを示す。オープンデータページ(480)は、TOCビット(486)を含んでおり、TOCビットの状態(たとえば0または1のいずれか)は、メモリの部分がデータページであることを反映する。オープンデータページ(480)はさらに、データページが最終的に格納されることになる(ソリッドステートメモリモジュールにおける)ブロックにおける位置に対応する物理アドレス(488)を含む。TOCビット(486)および物理アドレス(488)は、集合的にタグ(482)と称される。タグ(482)は、他のコンテンツがオープンデータページに格納される前にオープンデータページに格納され得る。図4Iを参照して、オープンデータページはさらに、集合的にペイロード(484)と称され得る1つ以上のフラグを含む。
図5Aは、当該技術の1つ以上の実施形態に従ったデータ構造を示す。上で論じたように、制御モジュールにおけるメモリはインメモリデータ構造を含む。当該技術の一実施形態において、インメモリデータ構造は、nタプル(たとえば<オブジェクトID,オフセットID>(500)、<オブジェクトID,オフセットID,発生時間>(図示せず))と、ソリッドステートメモリモジュールにおけるフラグの物理アドレス(502)との間のマッピングを含む。当該技術の一実施形態において、当該マッピングは、nタプルのハッシュと物理アドレスとの間に存在する。当該技術の一実施形態において、フラグについての物理アドレスは、<ストレージモジュール,チャンネル,チップイネーブル,LUN,プレーン,ブロック,ページ,バイト>といったnタプルとして規定される。前述のタプルは、物理アドレスのコンテンツの論理表現に対応する。前述のコンテンツはたとえば、ストレージ機器においてさまざまなコンポーネントによって使用される48ビットの物理アドレスにエンコードされ得る(たとえば図1A〜図3B参照)。
図5Bは、当該技術の1つ以上の実施形態に従ったデータ構造を示す。当該技術の一実施形態において、制御モジュールは、ブロック(504)当たりのTOCエントリ(506)の数をトラッキングする。より具体的には、フラグがボールテッドメモリに書き込まれるごとに、フラグについてのTOCエントリが作成される。制御モジュールは、新しく作成されたTOCエントリが関連付けられるのはどのブロックかをトラッキングし、TOCページを生成するためにこの情報を使用する。たとえば、制御モジュールは上記情報を使用して、TOCページに書き込まれていない所与のブロックに関連付けられるすべてのTOCエントリの累積サイズがブロックにおけるページサイズと等しいかどうか判定する。TOCページに書き込まれていない所与のブロックに関連付けられるすべてのTOCエントリの累積サイズがブロックにおけるページサイズと等しい場合、制御モジュールは上記エントリを使用してTOCページを生成し、ストレージモジュールへのTOCページの書込を開始し得る(たとえば図6C参照)。
図6A〜図6Cは、当該技術の1つ以上の実施形態に従ったフローチャートを示す。より具体的には、図6A〜図6Cは、当該技術の1つ以上の実施形態に従った、ストレージ機器にユーザデータを格納するための方法を示す。フローチャートにおけるさまざまなステップが順次、提示および記載されるが、当業者であれば、ステップのうちのいくつかまたはすべてが異なる順番で実行されてもよいこと、ステップのうちのいくつかまたはすべてが組み合わせられてもよくまたは省略されてもよいこと、およびステップのうちのいくつかまたはすべてが並列に実行されてもよいことを理解するであろう。当該技術の一実施形態では、図6Aに示されるステップは、図6Bに示されるステップおよび図6Cに示されるステップと並列に行なわれ得る。さらに、図6Bに示されるステップは、図6Cに示されるステップと並列に行なわれ得る。
図6Aを参照して、ステップ600において、クライアントは、制御モジュールにおけるプロセッサ(図2Aにおける208)の送信キュー(SQ: submission queue)に書込コマンド(書込要求)を書き込む。当該技術の一実施形態では、書込コマンドは、クライアントメモリにおけるユーザデータの論理アドレス(「ソースアドレス」とも称され得る)を特定する。当該技術の一実施形態において、書込コマンドは、<オブジェクトID,オフセットID>を使用してユーザデータを特定し得る。当該技術の一実施形態において、書込コマンドは、プロセッサのSQに到達する前に、少なくともクライアントスイッチおよびスイッチファブリックを通過する。
ステップ602では、クライアントはSQテールドアベルレジスタに新しいSQテールを書き込む。当該技術の一実施形態において、SQテールドアベルレジスタに書き込むことによって、クライアントは、そのSQにおいて処理するべき新しいコマンドが存在するとプロセッサに通知する。
ステップ604では、プロセッサはSQから書込コマンドを取得する。ステップ606では、プロセッサは、ユーザデータを(フラグの一部として)書き込むべき物理アドレスを決定する。当該技術の一実施形態では、物理アドレスはソリッドステートメモリモジュールにおける位置に対応する。当該技術の一実施形態において、プロセッサは、ユーザデータのコピーを書き込むべき2つの物理アドレスを選択する。当該物理アドレスの各々は別個のソリッドステートメモリモジュールに存在する。
上で論じたように、フラグは、ソリッドステートメモリモジュールに書き込まれる前に、ボールテッドメモリにおけるオープンデータページに書き込まれ、各物理アドレスは、<ストレージモジュール,チャンネル,チップイネーブル,LUN,プレーン,ブロック,ページ,バイト>として特定され得る。したがって、オープンデータページに格納されるフラグの各々についての物理アドレスは、<バイト>値を除いて、物理アドレスのすべての部分について同じ値を有し得る。したがって、当該技術の一実施形態において、ステップ606において選択される物理アドレスが、オープンデータページのタグ(482)における物理アドレス(486)を使用して決定され得る。換言すると、所与のフラグが特定のソリッドステートメモリモジュールに書き込まれるべきであるという決定がひとたびなされると、ボールテッドメモリにおけるオープンデータページにおけるタグにおける物理アドレスに基づき、フラグを格納するべき物理アドレスが決定され得る。そのような場合、フラグを書き込むべき物理アドレスは、タグにおける物理アドレスを取得し、その後、この物理アドレスの<バイト>部分を修正することにより決定され得る(たとえば図7A〜図7G参照)。
ステップ608では、プロセッサは、マルチキャストアドレスへの書込を発行するようにDMAエンジンをプログラムする。当該技術の一実施形態において、マルチキャストアドレスはマルチキャストグループに関連付けられており、当該マルチキャストグループは、制御モジュールにおけるメモリにおける第1のメモリ位置、第1のボールテッドメモリにおけるオープンデータページにおける第2のメモリ位置、および第2のボールテッドメモリにおけるオープンデータページにおける第3のメモリ位置を特定する。当該技術の一実施形態において、第1のボールテッドメモリは、プロセッサによって特定される物理アドレスを含むソリッドステートメモリモジュールと同じストレージモジュールに位置する。当該技術の一実施形態において、第2のボールテッドメモリは、第1のストレージモジュールの障害から保護するよう異なるストレージモジュールに位置する。当該技術の一実施形態において、ステップ606においてプロセッサによって識別される各物理アドレスについて選択される1つのボールテッドメモリ位置が存在する。
ステップ610では、DMAエンジンは、クライアントメモリにおけるソースアドレスからユーザデータを読み出し、制御モジュールによって指示されるようにマルチキャストアドレスにデータを書き込む。当該技術の一実施形態では、スイッチファブリックにおけるスイッチは、マルチキャストアドレスに関連付けられる。アドレスの受信の際、スイッチは、3つのアドレス、すなわち上記のメモリ位置の各々に対するアドレスを取得するようマルチキャストアドレスに対して必要な変換を行なう。その後、スイッチは3つのメモリ位置にユーザデータのコピーを送信する。当業者であれば、マルチキャストを実現する特定のスイッチはスイッチファブリックの実現例に基づき変動し得るということを理解するであろう。この実施形態では、クライアントとストレージ機器との間には発行された書込は1つだけ存在する。
当該技術の別の実施形態において、ステップ608では、プロセッサは、3つの書込要求、すなわち上記のメモリ位置の各々に対する書込要求を並列に発行するようにDMAエンジンをプログラムする。この実施形態において、ステップ610では、DMAエンジンはこれらの3つの書込要求を並列に発行する。この実施形態では、クライアントとストレージ機器との間で3つの書込の発行が存在する。
図6Aを引き続き参照して、ステップ612において、TOCエントリはボールテッドメモリに格納されたユーザデータの各コピーについて作成される。さらに、各TOCエントリにおいて特定されるページおよびバイトは、ステップ606において識別される対応する物理アドレスのページおよびバイトの部分に対応する。したがって、対応するTOCエントリが作成される時に、ソリッドステートメモリモジュールにおける物理アドレスにフラグが書き込まれない間、(データページの一部としての)フラグが物理アドレスに後の時点で書き込まれるように意図される。上で論じたように、TOCエントリの各々はTOCページに格納され、TOCページは、ソリッドステートメモリモジュールに最終的に書き込まれる。しかしながら、TOCページの作成の前に、TOCエントリは、作成されて、制御モジュールにおけるメモリと、ソリッドステートメモリモジュールのうちの1つの上のボールテッドメモリとに、一時的に格納される。
図6Aを引き続き参照して、ステップ614において、ステップ612において作成されたTOCエントリはボールテッドメモリに格納される。より具体的には、各TOCエントリは、ストレージモジュールのボールテッドメモリにおけるオープンTOCページに格納され、かつ、対応するフラグが後の時点に書き込まれる物理アドレスを含む。
ステップ616では、プロセッサは、ユーザデータの3つのコピーがストレージ機器に格納されることを反映するようインメモリデータ構造を更新する。プロセッサはさらに、ブロック当たりのTOCエントリをトラッキングするデータ構造を更新し得る(図5参照)。ステップ618では、プロセッサは、(プロセッサのSQを識別する)SQ識別子と(クライアントがプロセッサに発行した特定の書込コマンドを識別する)書込コマンド識別子とをクライアントの完了キュー(CQ)に書き込む。
ステップ620では、プロセッサは、クライアントプロセッサについて割込を生成する。当該技術の一実施形態において、プロセッサは、ノントランスペアレントなブリッジによって提供されるドアベル割込を使用して、クライアントプロセッサに割込を発行する。ステップ622では、クライアントは、そのCQにおけるデータを処理する。この段階では、クライアントは、書込要求が処理されたと通知されている。ステップ624では、ひとたびクライアントが完了キューのヘッドにあるデータを処理すると、クライアントは新しいCQヘッドをCQヘッドドアベルに書き込む。これはプロセッサに、クライアントへの将来の通知において使用するCQにおける次の位置を示す。
図6Bを参照して、ボールテッドメモリにおけるオープンデータページ(たとえば図4Gの464参照)がもはや任意の付加的なフラグを格納することができない場合(すなわちオープンデータページが一杯である場合)、オープンデータページは書込データページになる。ステップ626では、制御モジュールにおけるプロセッサは、タグ(482)における適切な位置(すなわち物理アドレス(486)に対応するソリッドステートメモリモジュールにおける位置)に対して書込データページのコンテンツを開始する。当該技術の一実施形態において、制御モジュールにおけるプロセッサは、ストレージモジュールコントローラにおけるDMAエンジンをプログラムして、書込データページ(または書込データページのコンテンツ)をソリッドステートメモリモジュールに書き込む。当該技術の別の実施形態において、ストレージモジュールコントローラは、ソリッドステートメモリモジュールへの書込データページの書込を開始し得る。書込がひとたび完了すると、ストレージモジュールコントローラは制御モジュールに通知し得る。
ステップ626の後、ステップ628では、制御モジュールにおけるプロセッサは、ステップ626においてソリッドステートメモリモジュールに書き込まれたユーザデータに対応する、ボールテッドメモリにおけるユーザデータのすべてのコピーが除去されることを要求する。換言すると、プロセッサは、書込データページのコンテンツがボールテッドメモリから消去されることを要求し得る。ステップ630では、消去された書込データページを含んでいたストレージモジュールの各々によって、除去の確認が制御モジュールにおけるプロセッサへ送信される。
図6Cを参照して、図6Cは、TOCエントリが作成されるごとに実行される方法を示す。ステップ632において、空ページが1ページより多くブロックに残っているかどうかについて判定がなされる。換言すると、ブロックにおける最終ページを除いて、データページおよびTOCページがすべての他のページに書き込まれたかどうかについて判定がなされる。空ページが1ページより多くブロックに残っている場合、プロセスはステップ634に進み、そうでなければ、プロセスはステップ636に進む。上で論じたように、データページまたはTOCページのいずれかを書き込むべき空ページが1ページだけブロックに存在する場合、TOCページはブロックにおける最終ページに書き込まれなければならない。
ステップ634では、オープンTOCページが一杯であるかどうか(すなわちTOCエントリの累積サイズが、付加的なTOCエントリがオープンTOCページに格納されるのを防止するかどうか)について判定がなされる。オープンTOCページが一杯の場合、プロセスはステップ636に進み、そうでなければプロセスは終了する。
ステップ636では、オープンTOCページにおける仮物理アドレス(478)が最終物理アドレス(すなわちオープンTOCページ(またはオープンTOCページのコンテンツ)が格納されるべきブロックにおける実際の位置)に変更される。当該技術の一実施形態において、ユーザデータを書き込むべき空ページが1ページだけブロックに存在するとともにTOCページが一杯ではない場合、当該TOCページを充填するために、水増しがオープンTOCページに追加され得る。ステップ638において、ブロックが別のTOCページを含むかどうかについて判定がなされる。ブロックが別のTOCページを含んでいる場合、プロセスはステップ640に進み、そうでなければ、プロセスはステップ642に進む。ステップ640では、ブロックにおける最近格納されたTOCページへの参照がステップ636において作成されたTOCページに含まれる(たとえば、TOCページ(410)が図4EにおけるTOCページ(412)を参照する)。
ステップ642では、プロセッサは、ソリッドステートメモリモジュール(または、より具体的には、TOCページにおいて特定される最終物理アドレス)に対して一杯のTOCページの書込を開始する。
ステップ644では、プロセッサは、ステップ642においてソリッドステートメモリモジュールに書き込まれるTOCページに含まれていたTOCエントリを含むすべてのストレージモジュールに、それぞれのボールテッドメモリからそのようなTOCエントリを除去することを要求する。換言すると、プロセッサは、オープンTOCページのコンテンツがボールテッドメモリから消去されることを要求する。ステップ646では、プロセッサはストレージモジュールから、上記TOCエントリが除去されたという確認を受け取る。
図7A〜図7Gは、当該技術の1つ以上の実施形態に従った、ストレージ機器にユーザデータを格納する例を示す。この例は、当該技術の範囲を限定するようには意図されない。
図7Aを参照して、ボールテッドメモリが、オープンTOCページと、(最初にオープンデータページとして指定される)データページAと、(最初に書込データページとして指定される)データページBとを含むシナリオを考える。「データページA」および「データページB」としてのページの指定は、この例示目的のために含まれているだけであり、データページAがデータページBより高いブロック番号に関連付けられる(またはその逆)を暗示するようには意図されておらず、むしろ、ページは、当該技術のさまざまな実施形態について説明するためにそのように指定されている。オープンTOCページは、(自身がTOCページであることを示す)セットTOCビットと、自身が最終的に格納されることになるソリッドステートストレージ(図示せず)におけるブロックにおける物理位置に対応する仮物理アドレスとを含む。オープンTOCページはさらにTOCエントリ(TE1)を含む。TE1は、データページAに格納されるフラグ1についてのTOCエントリである。
図7Aに示されるように、データページAは、セットされない(データページであることを示している)TOCビットを含む。データページAは、データページが最終的に書き込まれることになるソリッドステートストレージにおける物理位置に対応する物理アドレス(PA2)をさらに含む。最後に、データページAは、データページAの内の<バイト>値に格納されるフラグ1を含み、<バイト>値に対する<バイト>値がTE1において特定される(たとえば図4Fの442参照)。
図7Bを参照して、何らかの後の時点で、第2のフラグ(フラグ2)および第2のTOCエントリ(TE2)がボールテッドメモリに書き込まれる。図7Bは、フラグ2がデータページAに格納されるとともにTE2がオープンTOCページに格納される場合のボールテッドメモリの状態を示す。
この段階において、この段階ではデータページAは一杯であり、したがって、その指定が書込データページに変更される。指定のこの変更の結果、データページBの指定も変更される。具体的には、データページBの指定は、書込データページからオープンデータページに遷移される。したがって、後で受け取られるフラグがデータページBに格納され得る。図7Cは、データページの指定における上記変更の後のボールテッドメモリの状態を示す。図7Cにおいて示されるように、データページBの指定がひとたびオープンデータページに変更されると、TOCビット(0にセットされる)と、物理アドレス(PA3)(ソリッドステートメモリモジュールにおける物理位置に対応する)とが、データページBに格納される。タグ(すなわちTOCビットおよび物理アドレス)がひとたびデータページBに格納されると、フラグはデータページBに格納され得る。
何らかの後の時点で、データページAのコンテンツはソリッドステートメモリモジュールにおけるPA1に書き込まれ、その後、データページAのコンテンツはデータページAから消去される。さらに、フラグ3およびフラグ4がデータページBに書き込まれ、対応するTOCエントリ(TE3およびTE4)がオープンTOCページに書き込まれる。図7Dは、上記のイベントが発生した後のボールテッドメモリの状態を示す。
この段階では、オープンTOCページは一杯である(すなわち、これ以上のTOCエントリがオープンTOCページに格納され得ない)。したがって、オープンTOCページ(またはオープンTOCページのコンテンツ)についての最終物理アドレスが決定される。オープンTOCページにおけるタグは、最終物理アドレスを含むよう更新され得る。図7Eは、上記のイベントが発生した後のボールテッドメモリの状態を示す。
図7Eにおいて示されるように、オープンTOCページおよびデータページBの両方は一杯である。したがって、制御モジュールまたはストレージモジュールコントローラは、オープンTOCページのコンテンツおよびデータページBのコンテンツの書込をソリッドステートメモリモジュールにおける適切な位置に対して開始し得る。
ソリッドステートメモリモジュールへのオープンTOCページのコンテンツの書込が成功すれば、ソリッドステートメモリモジュールは、最終物理アドレスに対応する位置におけるTOCページを含むことになる。さらに、ソリッドステートメモリモジュールへのデータページBのコンテンツの書込が成功すれば、ソリッドステートメモリモジュールはPA2に対応する位置にデータページを含むことになる。さらに、上記のコンテンツは、適切なMLCコマンドを使用してソリッドステートメモリモジュールのMLCモード部分に書き込まれ得る。図7Fは、上記のイベントが発生した後のソリッドステートメモリモジュールの状態を示す。
しかしながら、TOCページのコンテンツ(図7E参照)およびデータページBのコンテンツ(図7E参照)がソリッドステートメモリモジュールに書き込まれる前に電源障害の通知が受け取られる場合、TOCページのコンテンツ(図7E参照)およびデータページBのコンテンツ(図7E参照)が、適切なSLCコマンドを使用して、ソリッドステートメモリモジュールのSLCモード部分に書き込まれる。上記ページ(たとえばデータページおよびTOCページ)が格納される位置は、前述のページに格納されるタグに存在する物理アドレスに対応しない。前述のコンテンツは、ソリッドステートメモリモジュールのSLCモード部分内の最下位ビット(LSB: Least Significant Bit)ページにのみ格納され得る。そのような場合、SLCモード部分のサイズは、ボールテッドメモリのサイズより(たとえば2倍)大きくなり得る。図7Gは、上記のイベントが発生した後のボールテッドメモリの状態を示す。
当該技術の一実施形態において、制御モジュールが再起動されると、ソリッドステートメモリモジュールにおけるTOCエントリは、クライアントがストレージ機器に格納されるユーザデータにアクセスすることを可能にするために、適切なインメモリデータ構造を生成するよう使用され得る(たとえば図5参照)。図8Aは、当該技術の1つ以上の実施形態に従った、ソリッドステートメモリモジュールのMLCモード部分に格納されたTOCエントリを使用してインメモリデータ構造を生成するための方法を示す。図8Bは、当該技術の1つ以上の実施形態に従った、ソリッドステートメモリモジュールのSLCモード部分に格納されるTOCエントリを使用してインメモリデータ構造を生成するための方法を示す。前述のフローチャートにおけるさまざまなステップが順次提示および記載されるが、当業者は、ステップのうちのいくつかまたはすべてが異なる順番で実行されるか、組み合わせられるか、省略されるか、または、並列に実行され得るということを認識するであろう。
図8Aを参照して、ステップ800では、ブロックが選択される。ステップ802では、当該ブロックにおける最終ページが取得される。たとえば、プロセッサは、最終ページのコンテンツを読み出す。上で論じたように、ストレージ機器内のソリッドステートメモリモジュールにおけるすべてのブロックの最終ページはTOCページである。ステップ804では、TOCエントリはTOCページから抽出される。
ステップ806では、ステップ804で取得されたTOCエントリの各々がインメモリデータ構造にポピュレートするように処理される。より具体的には、各TOCエントリを処理することは、(i)TOCエントリからページIDおよびバイト情報を抽出することと、(ii)物理アドレスを取得するために、(i)における情報を<ストレージモジュール,チャンネル,チップイネーブル,LUN,プレーン,ブロック>と組み合わせることと、(iii)TOCエントリからオブジェクトIDおよびオフセットID(随意に発生時間)を抽出することと、(iv)ハッシュ値を生成するために、<オブジェクトID,オフセットID>(または、随意に<オブジェクトID,オフセットID,発生時間>)にハッシュ関数を適用することと、(v)ハッシュ値と物理アドレスとのマッピングをインメモリデータ構造にポピュレートすることとのうち1つ以上を含み得る。
当該技術の一実施形態において、プロセッサはブロックの最終ページを取得するために<ストレージモジュール,チャンネル,チップイネーブル,LUN,プレーン,ブロック>についての情報を必要としたので、プロセッサは既にこの情報を含んでいる。当該技術の一実施形態において、プロセッサは、フラグがバッドページに存在するかどうか判定するよう、TOCエントリにおけるタイプフィールドを使用し得る。フラグがバッドページに格納されている場合、プロセッサは、TOCエントリについて、インメモリデータ構造においてマッピングを生成しなくてもよい。
ステップ808では、ひとたびTOCページにおけるすべてのTOCエントリが処理されると、TOCページがブロック(すなわちステップ800で選択されたブロック)における別のTOCページに対する参照を含むかどうかに関して判定がなされる。TOCページがブロックにおける別のTOCページへの参照を含む場合、プロセスはステップ810に進み、そうでなければプロセスは終了する。ステップ810では、参照されたTOCページが得られる。ステップ812では、TOCエントリがTOCページから抽出される。その後、プロセスはステップ806に進む。
図8Bを参照して、ステップ820では、ソリッドステートメモリモジュールのSLCモード部分からのコンテンツが制御モジュールにおけるメモリにロードされる。当該コンテンツは、1つ以上のオープンTOCページと、1つ以上のオープンデータページと、1つ以上の書込データページとを含み得る。当該技術の一実施形態において、システムが電力を失った時にボールテッドメモリに存在したすべてのデータは、制御モジュールのメモリにコピーされている。ストレージ機器がマルチキャスト書込メカニズム(たとえば図6A〜図6C参照)を実現するので、ボールテッドメモリにデータの複数のコピーが存在し得る。ソリッドステートメモリモジュールの任意の所与のSLCモード部分における具体的なコンテンツにかかわらず、SLCモード部分に格納される各ページはタグを含む(たとえば図7G参照)。
ステップ822において、TOCページはステップ820において得られるコンテンツから識別される。TOCページを識別することは、上記の取得されたコンテンツにおける、ページがTOCページであることを示すステータスを有するようにセットされるTOCビットを含むページを探索することを含み得る。たとえば、TOCビット=1を含むページは、TOCページであると識別され得る。
ステップ824では、ステップ822において識別されるTOCページからのTOCエントリが取得される。当該技術の一実施形態において、TOCページの複数のコピーが制御モジュールメモリに存在する場合、TOCページの各コピーは、特定のTOCエントリ(すなわちステップ824において得られるTOCエントリ)がTOCページの各コピーにおいて同一であることを判定するよう照合される。
ステップ826では、ステップ824で得られたTOCエントリに対応するフラグの物理アドレスが、TOCページにおけるタグにおける物理アドレスおよびTOCエントリのコンテンツを使用して決定される。たとえば、TOCページの仮物理アドレスは<ストレージモジュール1,チャンネル1,チップイネーブル1,LUN1,プレーン1,ブロック2,ページ2,バイト0>であり得、選択されたTOCエントリからの<ページ,バイト>情報が<ページ2,バイト5>であり得る(たとえば図4Fの440,442参照)。したがって、TOCエントリに対応するフラグの物理アドレスは、<ストレージモジュール1,チャンネル1,チップイネーブル1,LUN1,プレーン1,ブロック2,ページ2,バイト5>であり得る。当業者は、前述の物理アドレスがnタプルとして表わされているが、前述の物理アドレスはたとえば48ビットの物理アドレスであり得るということを認識するであろう。
ステップ828では、制御モジュールにおけるインメモリデータ構造は、<オブジェクトID,オフセットID>(TOCエントリから得られる)と、ステップ826において決定された物理アドレスとのマッピングを含むように更新される。前述の情報に基づいた他のマッピングは、当該技術から逸脱することがなければ、インメモリデータ構造に格納され得る(図5参照)。
ステップ830では、ステップ826において決定された物理アドレスに対応するフラグを特定するために、制御モジュールにおけるメモリが探索される。フラグがメモリに存在する場合、プロセスはステップ834に進み、そうでなければ、プロセスはステップ832に進む。
以下は、制御モジュールのメモリにおける対応するフラグを特定するための非限定的な例である。ステップ826において決定されたフラグについての物理アドレスが<ストレージモジュール1,チャンネル1,チップイネーブル1,LUN1,プレーン1,ブロック2,ページ2,バイト5>であり、制御モジュールが、TOCビット=0を含むタグと、<ストレージモジュール1,チャンネル1,チップイネーブル1,LUN1,プレーン1,ブロック2,ページ2>を含む物理アドレスとを含むページを特定するためにメモリを探索し得るシナリオを考える。そのようなページが特定されると、フラグはメモリに存在すると判定され、そうでなければ、フラグはソリッドステートメモリモジュールに存在すると判定される。
ステップ832では、フラグは、ステップ826で取得した物理アドレスを使用して、ソリッドステートメモリモジュールから得られる。
ステップ834では、図6A〜図6Cに従って、(ステップ832において取得されたか、または、ステップ830において存在すると識別された)フラグが、ストレージモジュールにおける新しい位置に書き込まれる。
当該技術の一実施形態において、フラグがメモリに存在しない場合(すなわちフラグがソリッドステートメモリモジュールに存在する場合)、図8Bに従ってTOCエントリを処理する際にメモリに対応するフラグをコピーする代わりに、フラグがガーベッジコレクションのためにマーキングされ得る。より具体的には、フラグは、ガーベッジコレクション動作の一部として、ソリッドステートメモリモジュールにおける他の位置へ再配置されるようにマーキングされ得る。
図8Bの議論を引き続き参照して、ステップ836では、処理すべき付加的なTOCエントリが存在するかどうかに関して判定がなされる。処理するべき付加的なTOCエントリが存在する場合、当該方法はステップ824に進み、そうでなければプロセスは終了する。
当該技術の一実施形態では、図8Bに示される方法は、メモリに格納されたすべてのオープンTOCページ上で実行され得る。さらに、図8Bにおける方法は、システムの電源がオンされている場合、メモリにおけるすべてのTOCページについて並列で実行され得る。
当該技術の一実施形態において、図8Aにおける方法は、システムの電源がオンされている場合、ストレージ機器内のすべてのブロック(またはブロックのサブセット)について並列で実行され得る。さらに、図8Aにおける方法は、図8Bにおいて示される方法と並列に実行され得る。このプロセスの後、新しいユーザデータがストレージ機器に書き込まれると、結果得られるインメモリデータ構造はプロセッサによって更新され得る。
前述の議論は、TOCページ、オープンデータページおよび書込データページがソリッドステートメモリのSLCモード部分に書き込まれ得ることを示すが、当該技術は、SLCモード部分およびMLCモード部分を有するソリッドステートメモリモジュールがなくても、実現され得る。
たとえば、当該技術は、たとえばMLCモードを使用して動作するとともに留保部分および非留保部分を含むソリッドステートメモリモジュールを使用して実現され得、当該留保部分は、電源障害(または電源障害の通知)の場合には、オープンTOCページ、オープンデータページおよび書込データページからのコンテンツを格納するために使用されるソリッドステートメモリモジュールの部分に対応しており、ソリッドステートメモリモジュールの非留保部分は、図6Bおよび図6Cに従って、TOCページおよび書込データページからのコンテンツを格納するために使用される。
別の例において、当該技術は、たとえばSLCモードを使用して動作するとともに留保部分および非留保部分を含むソリッドステートメモリモジュールを使用して実現され得、当該留保部分は、電源障害(または電源障害の通知)の場合には、TOCページ、オープンデータページおよび書込データページからのコンテンツを格納するために使用されるソリッドステートメモリモジュールの部分に対応しており、ソリッドステートメモリモジュールの非留保部分は、図6Bおよび図6Cに従って、TOCページおよび書込データページからのコンテンツを格納するために使用される。
当業者は、ソリッドステートメモリモジュールにおける技術を実現することに関して当該技術が記載されているが、当該技術の実施形態は他のタイプの不揮発性ストレージ媒体を使用して実現され得るということを認識するであろう。
当業者は、永続ストレージ(たとえばソリッドステートメモリモジュール)と同じ位置にボールテッドメモリを配置することに関して当該技術が記載されているが、ボールテッドメモリが永続ストレージと同じ位置に配置されない当該技術の実施形態が実現され得るということを認識するであろう。
当業者は、TOCページとして留保されている各ブロックにおける最終ページに関して当該技術が記載されたが、当該技術から逸脱することがなければ、留保されたTOCページとしてブロックにおいて別ページをセットすることによって、当該技術の実施形態が実現され得るということを認識するであろう。
当該技術の一実施形態において、インメモリデータ構造は、ソリッドステートメモリモジュールに格納される任意のデータに対して任意の動作(たとえば読出動作、書込動作および/または消去動作)が行われる前に生成される。
当該技術の1つ以上の実施形態は、ストレージ機器に格納されるすべてのユーザデータがそのメタデータと同じ位置に配置されるシステムおよび方法を提供する。これにより、ストレージ機器に格納されるすべてのユーザデータは自己記述的である。当該技術のさまざまな実施形態に従ってユーザデータおよび対応するメタデータを配することによって、ストレージ機器は、所与のソリッドステートメモリモジュール(またはそのサブセット)の障害に対してより良好に保護される。換言すると、所与のソリッドステートメモリモジュール(またはそのサブセット)に障害が起きても、他のソリッドステートメモリモジュールにおけるユーザデータにアクセスするのに必要なメタデータ自体が他のソリッドステートメモリモジュールに位置しているので、システムにおける他のソリッドステートメモリモジュールにおけるユーザデータはまだアクセス可能である。
さらに、当該技術の実施形態は、単一のルックアップステップでユーザデータに制御モジュールがアクセスすることを可能にするインメモリデータ構造の作成を可能にする。換言すると、制御モジュールは、ストレージ機器におけるユーザデータの物理アドレスを直接的に確認するようインメモリデータ構造を使用し得る。この情報を使用して、制御モジュールはユーザデータに直接的にアクセスすることが可能であり、ユーザデータを得るために任意の中間メタデータヒエラルキーを横断する必要はない。
当該技術の1つ以上の実施形態は、当該システムにおける1つ以上のプロセッサによって実行される命令を使用して実施されてもよい。さらに、このような命令は、1つ以上の一時的でないコンピュータ読取可能媒体上に格納されるコンピュータ読取可能命令に対応してもよい。
当該技術を限られた数の実施形態に関して記載したが、この開示の利益を有する当業者であれば、本願明細書において開示される当該技術の範囲から逸脱しない他の実施形態が作り出され得るということを理解するであろう。したがって、当該技術の範囲は、添付の特許請求の範囲によってのみ限定されるべきである。

Claims (20)

  1. データを格納するための方法であって、
    ボールテッドメモリにおけるオープンデータページにフラグを書き込むことを含み、前記オープンデータページは第1のテーブルオブコンテンツ(TOC)ビットおよび第1の物理アドレスを含み、前記方法はさらに、
    前記ボールテッドメモリにおけるオープンTOCページに、前記フラグについてのテーブルオブコンテンツエントリ(TE)を書き込むことを含み、前記オープンTOCページは第2のTOCビットおよび第2の物理アドレスを含み、前記方法はさらに、
    前記オープンデータページが一杯であるという第1の判定を行うことと、
    前記第1の判定に基づいて、ソリッドステートメモリモジュールにおけるページに前記フラグを書き込むこととを含み、前記ページは前記第1の物理アドレスに関連付けられており、
    前記ソリッドステートメモリモジュールおよび前記ボールテッドメモリはストレージモジュールに位置する、方法。
  2. 前記オープンTOCページに前記TEを書き込む前に前記オープンデータページに第1のタグを書き込むことをさらに含み、前記オープンTOCページにおける第2のタグは前記第2のTOCビットおよび前記第2の物理アドレスを含む、請求項1に記載の方法。
  3. 前記第1の物理アドレスおよび前記第2の物理アドレスは、前記ソリッドステートメモリモジュールにおける同じブロックに位置し、関連付けられる、請求項1に記載の方法。
  4. 前記オープンTOCページが一杯であるという第2の判定を行うことと、
    前記第2の判定に基づいて、前記第2の物理アドレスを第3の物理アドレスに置換することと、
    前記ソリッドステートメモリモジュールにおいて第2のページに前記TEを書き込むこととをさらに含み、前記第2のページは前記第3の物理アドレスに関連付けられる、請求項1に記載の方法。
  5. 前記第1の物理アドレスおよび前記第3の物理アドレスは、前記ソリッドステートメモリモジュールにおける同じブロックに位置し、関連付けられる、請求項4に記載の方法。
  6. 前記ソリッドステートメモリモジュールはフラッシュメモリである、請求項1に記載の方法。
  7. データを格納するための方法であって、
    ボールテッドメモリにおけるオープンデータページにフラグを書き込むことを含み、前記オープンデータページは第1のテーブルオブコンテンツ(TOC)ビットおよび第1の物理アドレスを含み、前記方法はさらに、
    前記ボールテッドメモリにおけるオープンTOCページに、前記フラグについての第1のテーブルオブコンテンツエントリ(TE)を書き込むことを含み、前記オープンTOCページは、第2のTOCビット、第2の物理アドレス、および第2のTEを含み、前記方法はさらに、
    前記ボールテッドメモリが位置するストレージモジュールについて電源障害のイベント通知を受け取ることを含み、
    前記イベント通知に応答して、
    前記ストレージモジュールにおけるソリッドステートメモリモジュールにおける、前記第1の物理アドレスに関連付けられないページに前記フラグを書き込むことと、
    前記ソリッドステートメモリモジュールにおける、前記第2の物理アドレスに関連付けられない第2のページに前記第1のTEおよび前記第2のTEを書き込むこととを含む、方法。
  8. 前記ストレージモジュールの電源をオンした後、
    前記ソリッドステートメモリモジュールから制御モジュールのメモリへ前記ページおよび前記第2のページのコンテンツをロードすることと、
    前記メモリにおける前記第1のTEを識別することと、
    前記第2の物理アドレスおよび前記第1のTEの少なくとも一部に基づき第3の物理アドレスを決定することと、
    前記第3の物理アドレスを使用して、前記フラグが前記メモリに位置することを判定することと、
    前記ソリッドステートメモリモジュールおよび別のソリッドステートメモリモジュールからなる群から選択されたものにおいて、第4の物理アドレスへの前記フラグの書込を開始することとをさらに含む、請求項7に記載の方法。
  9. 前記ストレージモジュールの電源をオンした後、
    前記ソリッドステートメモリモジュールから制御モジュールのメモリへ前記ページおよび前記第2のページのコンテンツをロードすることと、
    前記メモリにおける前記第2のTEを識別することと、
    前記第2の物理アドレスおよび前記第2のTEの少なくとも一部に基づき第3の物理アドレスを決定することと、
    前記第3の物理アドレスを使用して、前記第3の物理アドレスに関連付けられる第2のフラグが前記メモリに位置していないと判定することと、
    前記ソリッドステートメモリモジュールおよび別のソリッドステートメモリモジュールからなる群から選択されるものにおいて、別の位置に前記第2のフラグを再配置するようガーベッジコレクション動作を開始することとをさらに含む、請求項7に記載の方法。
  10. 前記ページおよび前記第2のページは前記ソリッドステートメモリモジュールの留保部分に関連付けられ、前記第2のフラグは前記ソリッドステートメモリモジュールにおける第3のページに格納され、前記第3のページは前記ソリッドステートメモリモジュールの非留保部分に関連付けられる、請求項9に記載の方法。
  11. 前記ソリッドステートメモリモジュールはフラッシュメモリであり、前記留保部分はシングルレベルセル(SLC: single-level cell)モードで動作しており、前記非留保部分はマルチレベルセル(MLC: multi-level cell)モードで動作している、請求項10に記載の方法。
  12. 前記ページおよび前記第2のページは、前記ソリッドステートメモリモジュールの留保部分に関連付けられる、請求項7に記載の方法。
  13. 前記ソリッドステートメモリモジュールはフラッシュメモリであり、前記留保部分はシングルレベルセル(SLC: single-level cell)モードで動作している、請求項7に記載の方法。
  14. 前記ページおよび前記第2のページは、前記ソリッドステートメモリモジュールの最下位ビット(LSB)ページである、請求項7に記載の方法。
  15. コンピュータ読取可能プログラムコードを含むデータを格納するための一時的でないコンピュータ読取可能媒体であって、前記コンピュータ読取可能プログラムコードは、
    ボールテッドメモリにおけるオープンデータページにフラグを書き込むことを行うためのものであり、前記オープンデータページは第1のテーブルオブコンテンツ(TOC)ビットおよび第1の物理アドレスを含み、前記コンピュータ読取可能プログラムコードはさらに、
    前記ボールテッドメモリにおけるオープンTOCページに、前記フラグについての第1のテーブルオブコンテンツエントリ(TE)を書き込むことを行うためのものであり、前記オープンTOCページは第2のTOCビット、第2の物理アドレス、および第2のTEを含み、前記コンピュータ読取可能プログラムコードはさらに、
    前記ボールテッドメモリが位置するストレージモジュールについて電源障害のイベント通知を受け取ることを行うためのものであり、
    前記イベント通知に応答して、
    前記ストレージモジュールにおけるソリッドステートメモリモジュールにおける、前記第1の物理アドレスに関連付けられないページに前記フラグを書き込むことと、
    前記ソリッドステートメモリモジュールにおける、前記第2の物理アドレスに関連付けられない第2のページに前記第1のTEおよび前記第2のTEを書き込むこととを行うためのものである、一時的でないコンピュータ読取可能媒体。
  16. 前記ストレージモジュールの電源をオンした後、
    前記ソリッドステートメモリモジュールから制御モジュールのメモリへ前記ページおよび前記第2のページのコンテンツをロードすることと、
    前記メモリにおける前記第1のTEを識別することと、
    前記第2の物理アドレスおよび前記第1のTEの少なくとも一部に基づき第3の物理アドレスを決定することと、
    前記第3の物理アドレスを使用して、前記フラグがメモリに位置することを判定することと、
    前記ソリッドステートメモリモジュールおよび別のソリッドステートメモリモジュールからなる群から選択されたものにおいて、第4の物理アドレスへの前記フラグの書込を開始することとを行うためのコンピュータ読取可能プログラムコードをさらに含む、請求項15に記載の一時的でないコンピュータ読取可能媒体。
  17. 前記ストレージモジュールの電源をオンした後、
    前記ソリッドステートメモリモジュールから制御モジュールのメモリへ前記ページおよび前記第2のページのコンテンツをロードすることと、
    前記メモリにおける前記第2のTEを識別することと、
    前記第2の物理アドレスおよび前記第2のTEの少なくとも一部に基づき第3の物理アドレスを決定することと、
    前記第3の物理アドレスを使用して、前記第3の物理アドレスに関連付けられる第2のフラグが前記メモリに位置していないと判定することと、
    前記ソリッドステートメモリモジュールおよび別のソリッドステートメモリモジュールからなる群から選択されるものにおいて、別の位置に前記第2のフラグを再配置するようガーベッジコレクション動作を開始することとを行うためのコンピュータ読取可能プログラムコードをさらに含む、請求項15に記載の一時的でないコンピュータ読取可能媒体。
  18. 前記ページおよび前記第2のページは前記ソリッドステートメモリモジュールの留保部分に関連付けられ、前記第2のフラグは前記ソリッドステートメモリモジュールにおける第3のページに格納され、前記第3のページは前記ソリッドステートメモリモジュールの非留保部分に関連付けられる、請求項17に記載の一時的でないコンピュータ読取可能媒体。
  19. 前記ソリッドステートメモリモジュールはフラッシュメモリであり、前記留保部分はシングルレベルセル(SLC: single-level cell)モードで動作しており、前記非留保部分はマルチレベルセル(MLC: multi-level cell)モードで動作している、請求項18に記載の一時的でないコンピュータ読取可能媒体。
  20. 前記ページおよび前記第2のページは、前記ソリッドステートメモリモジュールの最下位ビット(LSB)ページである、請求項15に記載の一時的でないコンピュータ読取可能媒体。
JP2016099400A 2015-05-19 2016-05-18 データを格納するための方法およびデータを格納するための一時的でないコンピュータ読取可能記録媒体 Active JP6506723B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562163782P 2015-05-19 2015-05-19
US62/163,782 2015-05-19
US14/754,838 US9911487B2 (en) 2015-05-19 2015-06-30 Method and system for storing and recovering data from flash memory
US14/754,838 2015-06-30

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018106914A Division JP6872513B2 (ja) 2015-05-19 2018-06-04 データを格納するための方法およびデータを格納するための一時的でないコンピュータ読取可能記録媒体

Publications (2)

Publication Number Publication Date
JP2016219013A true JP2016219013A (ja) 2016-12-22
JP6506723B2 JP6506723B2 (ja) 2019-04-24

Family

ID=56026725

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016099400A Active JP6506723B2 (ja) 2015-05-19 2016-05-18 データを格納するための方法およびデータを格納するための一時的でないコンピュータ読取可能記録媒体
JP2018106914A Active JP6872513B2 (ja) 2015-05-19 2018-06-04 データを格納するための方法およびデータを格納するための一時的でないコンピュータ読取可能記録媒体

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2018106914A Active JP6872513B2 (ja) 2015-05-19 2018-06-04 データを格納するための方法およびデータを格納するための一時的でないコンピュータ読取可能記録媒体

Country Status (4)

Country Link
US (2) US9911487B2 (ja)
EP (1) EP3096221B1 (ja)
JP (2) JP6506723B2 (ja)
CN (1) CN106168925B (ja)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105446653B (zh) 2014-08-27 2018-12-14 阿里巴巴集团控股有限公司 一种数据合并方法和设备
US10063422B1 (en) * 2015-12-29 2018-08-28 Amazon Technologies, Inc. Controlled bandwidth expansion in compressed disaggregated storage systems
US9921756B2 (en) * 2015-12-29 2018-03-20 EMC IP Holding Company LLC Method and system for synchronizing an index of data blocks stored in a storage system using a shared storage module
KR20180064198A (ko) * 2016-12-05 2018-06-14 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN108228082B (zh) * 2016-12-21 2021-04-02 伊姆西Ip控股有限责任公司 存储系统和用于存储控制的方法
CN111897751A (zh) * 2017-01-26 2020-11-06 华为技术有限公司 一种数据传输的方法、装置、设备和系统
CN107168647B (zh) * 2017-04-17 2020-10-23 武汉永力科技股份有限公司 Flash数据读写方法及系统
US10359954B2 (en) 2017-05-31 2019-07-23 Alibaba Group Holding Limited Method and system for implementing byte-alterable write cache
US10884926B2 (en) 2017-06-16 2021-01-05 Alibaba Group Holding Limited Method and system for distributed storage using client-side global persistent cache
US10303241B2 (en) 2017-06-19 2019-05-28 Alibaba Group Holding Limited System and method for fine-grained power control management in a high capacity computer cluster
US10678443B2 (en) 2017-07-06 2020-06-09 Alibaba Group Holding Limited Method and system for high-density converged storage via memory bus
US10564856B2 (en) 2017-07-06 2020-02-18 Alibaba Group Holding Limited Method and system for mitigating write amplification in a phase change memory-based storage device
US10303601B2 (en) 2017-08-11 2019-05-28 Alibaba Group Holding Limited Method and system for rearranging a write operation in a shingled magnetic recording device
US10423508B2 (en) 2017-08-11 2019-09-24 Alibaba Group Holding Limited Method and system for a high-priority read based on an in-place suspend/resume write
US20190073132A1 (en) * 2017-09-05 2019-03-07 Alibaba Group Holding Limited Method and system for active persistent storage via a memory bus
US10642522B2 (en) 2017-09-15 2020-05-05 Alibaba Group Holding Limited Method and system for in-line deduplication in a storage drive based on a non-collision hash
US10496829B2 (en) 2017-09-15 2019-12-03 Alibaba Group Holding Limited Method and system for data destruction in a phase change memory-based storage device
US10503409B2 (en) 2017-09-27 2019-12-10 Alibaba Group Holding Limited Low-latency lightweight distributed storage system
US10789011B2 (en) 2017-09-27 2020-09-29 Alibaba Group Holding Limited Performance enhancement of a storage device using an integrated controller-buffer
US10860334B2 (en) 2017-10-25 2020-12-08 Alibaba Group Holding Limited System and method for centralized boot storage in an access switch shared by multiple servers
US10445190B2 (en) 2017-11-08 2019-10-15 Alibaba Group Holding Limited Method and system for enhancing backup efficiency by bypassing encoding and decoding
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US10891239B2 (en) 2018-02-07 2021-01-12 Alibaba Group Holding Limited Method and system for operating NAND flash physical space to extend memory capacity
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10831404B2 (en) 2018-02-08 2020-11-10 Alibaba Group Holding Limited Method and system for facilitating high-capacity shared memory using DIMM from retired servers
US10402112B1 (en) 2018-02-14 2019-09-03 Alibaba Group Holding Limited Method and system for chunk-wide data organization and placement with real-time calculation
JP7181447B2 (ja) * 2018-03-30 2022-12-01 株式会社ソシオネクスト 情報処理システム、情報処理方法及び半導体装置
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US10871921B2 (en) 2018-07-30 2020-12-22 Alibaba Group Holding Limited Method and system for facilitating atomicity assurance on metadata and data bundled storage
US10747673B2 (en) 2018-08-02 2020-08-18 Alibaba Group Holding Limited System and method for facilitating cluster-level cache and memory space
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10852948B2 (en) 2018-10-19 2020-12-01 Alibaba Group Holding System and method for data organization in shingled magnetic recording drive
US10795586B2 (en) 2018-11-19 2020-10-06 Alibaba Group Holding Limited System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash
CN109582235B (zh) * 2018-11-27 2021-12-21 杭州宏杉科技股份有限公司 管理元数据存储方法及装置
US10769018B2 (en) 2018-12-04 2020-09-08 Alibaba Group Holding Limited System and method for handling uncorrectable data errors in high-capacity storage
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US10884654B2 (en) 2018-12-31 2021-01-05 Alibaba Group Holding Limited System and method for quality of service assurance of multi-stream scenarios in a hard disk drive
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11042307B1 (en) 2020-01-13 2021-06-22 Alibaba Group Holding Limited System and method for facilitating improved utilization of NAND flash based on page-wise operation
US10983930B1 (en) 2020-01-14 2021-04-20 EMC IP Holding Company LLC Efficient non-transparent bridge (NTB) based data transport
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US10923156B1 (en) 2020-02-19 2021-02-16 Alibaba Group Holding Limited Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive
US10872622B1 (en) 2020-02-19 2020-12-22 Alibaba Group Holding Limited Method and system for deploying mixed storage products on a uniform storage infrastructure
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11144250B2 (en) 2020-03-13 2021-10-12 Alibaba Group Holding Limited Method and system for facilitating a persistent memory-centric system
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
CN112231139A (zh) * 2020-09-11 2021-01-15 莱芜职业技术学院 一种计算机内存数据保护方法
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110093650A1 (en) * 2009-10-16 2011-04-21 Samsung Electronics Co., Ltd. Nonvolatile memory system and related method of preserving stored data during power interruption
US8370567B1 (en) * 2012-03-23 2013-02-05 DSSD, Inc. Storage system with self describing data
JP2013065308A (ja) * 2011-09-16 2013-04-11 Apple Inc 不揮発性メモリを有するシステムの非正常シャットダウンの取り扱い

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7421552B2 (en) 2006-03-17 2008-09-02 Emc Corporation Techniques for managing data within a data storage system utilizing a flash-based memory vault
US8909864B2 (en) * 2011-09-30 2014-12-09 Hewlett-Packard Development Company, L.P. Multicast write commands
US8301832B1 (en) * 2012-03-23 2012-10-30 DSSD, Inc. Storage system with guaranteed read latency
US8601206B1 (en) 2013-03-14 2013-12-03 DSSD, Inc. Method and system for object-based transactions in a storage system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110093650A1 (en) * 2009-10-16 2011-04-21 Samsung Electronics Co., Ltd. Nonvolatile memory system and related method of preserving stored data during power interruption
US8819336B2 (en) * 2009-10-16 2014-08-26 Samsung Electronics Co., Ltd. Nonvolatile memory system and related method of preserving stored data during power interruption
JP2013065308A (ja) * 2011-09-16 2013-04-11 Apple Inc 不揮発性メモリを有するシステムの非正常シャットダウンの取り扱い
US8370567B1 (en) * 2012-03-23 2013-02-05 DSSD, Inc. Storage system with self describing data
WO2013142673A1 (en) * 2012-03-23 2013-09-26 DSSD, Inc. System and methods for storing data using table of contents entries
JP2015515678A (ja) * 2012-03-23 2015-05-28 ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. テーブル・オブ・コンテンツエントリを使用してデータを格納するためのシステムおよび方法

Also Published As

Publication number Publication date
JP6506723B2 (ja) 2019-04-24
US9911487B2 (en) 2018-03-06
CN106168925A (zh) 2016-11-30
EP3096221A1 (en) 2016-11-23
US20160343429A1 (en) 2016-11-24
EP3096221B1 (en) 2019-12-18
JP6872513B2 (ja) 2021-05-19
JP2018156679A (ja) 2018-10-04
US10229734B1 (en) 2019-03-12
CN106168925B (zh) 2020-04-07

Similar Documents

Publication Publication Date Title
JP6872513B2 (ja) データを格納するための方法およびデータを格納するための一時的でないコンピュータ読取可能記録媒体
JP6385995B2 (ja) テーブル・オブ・コンテンツエントリを使用してデータを格納するためのシステムおよび方法
US11704069B2 (en) Memory system and method of controlling nonvolatile memory
JP6005835B2 (ja) マルチキャストdmaおよび統合されたアドレス空間を有するストレージシステム
US11074015B2 (en) Memory system and method for controlling nonvolatile memory by a host
US10929067B2 (en) Nonvolatile memory system and method for controlling write and read operations in the nonvolatile memory by a host
US20210064291A1 (en) Memory system and method of controlling nonvolatile memory
US8392428B1 (en) Method and system for hash fragment representation
US11675544B2 (en) Memory system for controlling nonvolatile memory including a plurality of nonvolatile memory dies each including a plurality of physical blocks
JP2023010765A (ja) メモリシステム
US11262943B2 (en) Memory system and method for controlling nonvolatile memory with a host memory buffer
EP4303734A1 (en) Systems, methods, and devices for using a reclaim unit based on a reference update in a storage device
CN117369715A (zh) 基于存储设备中的引用更新使用回收单元的系统、方法和设备

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170421

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170530

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170828

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190329

R150 Certificate of patent or registration of utility model

Ref document number: 6506723

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250