JP2023062055A - ファブリックを介したnvmエクスプレス - Google Patents

ファブリックを介したnvmエクスプレス Download PDF

Info

Publication number
JP2023062055A
JP2023062055A JP2023020700A JP2023020700A JP2023062055A JP 2023062055 A JP2023062055 A JP 2023062055A JP 2023020700 A JP2023020700 A JP 2023020700A JP 2023020700 A JP2023020700 A JP 2023020700A JP 2023062055 A JP2023062055 A JP 2023062055A
Authority
JP
Japan
Prior art keywords
data
storage device
network
semiconductor memory
interface adapter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023020700A
Other languages
English (en)
Inventor
クレイン、ヤーロン
Klein Yaron
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.)
Kioxia Corp
Original Assignee
Kioxia 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 Kioxia Corp filed Critical Kioxia Corp
Publication of JP2023062055A publication Critical patent/JP2023062055A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/356Switches specially adapted for specific applications for storage area networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Bus Control (AREA)

Abstract

【課題】ホストクライアントから不揮発性半導体メモリデバイスを介してソリッドステートディスクの1つへデータ転送するネットワークストレージ装置及びその装置にデータを転送する方法を提供する。【解決手段】システム100において、ストレージ装置のCPUは、リモートダイレクトメモリアクセス(RDMA)ネットワークアダプタを介してホストクライアントから書き込み要求を受信し、不揮発性半導体メモリデバイスがデータを格納するために利用可能であるか否かを判定し、不揮発性半導体メモリデバイスがデータを格納するために利用可能である場合、ホストクライアントから不揮発性半導体メモリデバイスへのデータの転送を行うためにRDMAネットワークアダプタを始動し、不揮発性半導体メモリデバイスがデータを格納するために利用可能でない場合、1つ以上の外部ストレージへクエリをブロードキャストするためにネットワークアダプタを始動する。【選択図】図1

Description

優先権の主張
本出願は、参照によってその内容の全体がここに組み込まれる、“NVM Express Over Fabrics”と題された、2017年8月3日に出願された米国実用新案出願第15/668,314号に対する優先権を主張する。
本開示は、不揮発性メモリエクスプレスのストレージ装置、および高性能なストレージネットワークに不揮発性ランダムアクセスメモリを実装するための方法に関する。
ライトコマンドに対する低いレイテンシは、ハイパフォーマンスコンピューティング(HPC)において、そして特にストレージネットワークにおいて、重要な特徴である。その重要性の一例は、増大するメモリ内データベース(IMDB)の領域である。CPUやメモリのような演算リソースの増加は、データベース全体をメモリにロードし、CPUによってそれを処理することを可能にする。これは、大きなデータセットの高速なメモリ内処理を可能にする。しかし、到来するトランザクションは永続的であるに違いなく、そのため永続性の媒体に書き込まれる必要がある。処理が、そのようなトランザクションのアクノレッジメントまで失速する(stall)とき、それはプロセス全体へのボトルネックになる。
高速PCIe(Peripheral Component Interface Express)インタフェースと、高効率の記憶スタックとを有するNVMe(登録商標)(「不揮発性メモリエクスプレス」)デバイスの導入により、永続性の媒体へのアクセス時間が減少した。加えて、リモートダイレクトメモリアクセス(RDMA)ネットワークインタフェースコントローラ(NIC)は、非常に速い(1桁μ秒)データ転送を提供するように進化した。ファブリック規格を介したNVMe(登録商標)の導入は、ホストクライアントが低レイテンシのネットワークファブリックを介してNVMe(登録商標)ディスクにアクセスできる環境を可能にする。各ホストクライアントおよびストレージ装置は、ファブリック内の各要素間での低レイテンシの転送を可能にするRDMA NICを有する。しかし、高性能なストレージネットワークにおいてNVMe(登録商標)デバイスを効率的に管理し、実装することへの長年にわたる要求が未だ存在する。
本開示は、ソリッドステートディスクと、ソリッドステートディスクおよびホストクライアントに通信可能に結合されたネットワークインタフェースアダプタと、ソリッドステートディスクおよびネットワークインタフェースアダプタに通信可能に結合された不揮発性半導体メモリデバイスと、不揮発性半導体メモリデバイスおよびネットワークインタフェースアダプタに通信可能に結合されたCPUとを備えるネットワークストレージ装置に関する。ネットワークインタフェースアダプタは、ホストクライアントからデータを取得し、ホストクライアントからのデータをソリッドステートディスクに転送することができる。不揮発性半導体メモリデバイスは、ネットワークインタフェースアダプタを介してホストクライアントからのデータを受信し、データを一時的に格納し、ソリッドステートディスクの1つにデータを転送することができる。CPUは、ネットワークインタフェースアダプタを介してホストクライアントからの書き込み要求を受信し、不揮発性半導体メモリデバイスがデータを格納するために利用可能であるか否かを判定することができる。不揮発性半導体メモリデバイスがデータを格納するために利用可能であると決定する場合には、CPUは、ネットワークインタフェースアダプタを介したホストクライアントから不揮発性半導体メモリデバイスへのデータの転送を行うために、ネットワークインタフェースアダプタを始動できる。不揮発性半導体メモリデバイスがデータを格納するために利用可能でないと決定する場合には、CPUは、ネットワークインタフェースアダプタを介して1つ以上の外部ストレージにクエリをブロードキャストするために、ネットワークインタフェースアダプタを始動できる。さらに、CPUは、ネットワークインタフェースアダプタを介して、データが不揮発性半導体メモリデバイスに格納されたことを示すアクノレッジメントステータスをホストクライアントに送信できる。
ある実装によれば、不揮発性半導体メモリデバイスは、抵抗変化型ランダムアクセスメモリ、磁気抵抗ランダムアクセスメモリ、ナノランダムアクセスメモリ、およびバッテリバック型ダイナミックランダムアクセスメモリの内の1つを備え得る。
いくつかの実装において、ネットワークストレージ装置は、ソリッドステートディスクおよびネットワークインタフェースアダプタに通信可能に結合された揮発性メモリデバイスを含み得る。揮発性メモリデバイスは、不揮発性半導体メモリデバイスがデータを格納するために利用可能ではないと決定する場合に、ネットワークインタフェースアダプタを介して1つ以上の外部ストレージからデータを受信し得る。1つ以上の外部ストレージは、1つ以上の第2のネットワークストレージ装置に対応し得る。揮発性メモリデバイスは、ダイナミックランダムアクセスメモリ(DRAM)を備え得る。
他の実装において、揮発性半導体メモリデバイスはデータを一時的に格納し、ソリッドステートディスクの1つにデータを転送し得る。
ある実装において、CPUは、ネットワークインタフェースアダプタを介して1つ以上の外部ストレージの内の第1外部ストレージから、クエリに対する応答を受信し得る。クエリに対する応答は、第1外部ストレージがデータを格納するために利用可能であることを示し得る。CPUは、ネットワークインタフェースアダプタを介して第1外部ストレージに第2の書き込み要求を送信し得る。1つ以上の外部ストレージは、ストレージネットワーク内の多数のネットワークストレージ装置の内の1つ以上であり得る。
1つの実装によれば、第2の書き込み要求は、ホストクライアントから第1外部ストレージへのデータの転送を開始するために第1外部ストレージを始動し得る。
いくつかの実装において、CPUは、ネットワークインタフェースアダプタを介して1つ以上の外部ストレージから信号を受信し得る。信号は、データが1つ以上の外部ストレージに格納されたことを示し得る。
他の実装において、CPUは、ネットワークインタフェースアダプタを介して第2のアクノレッジメントステータスをホストクライアントに送信し得る。第2のアクノレッジメントステータスは、データが1つ以上の外部ストレージに格納されたことを示し得る。
いくつかの実装によれば、ネットワークインタフェースアダプタは、リモートダイレクトメモリアクセス(RDMA)プロトコルに従って機能する。ネットワークインタフェースアダプタは、ネットワーク通信ファブリックに接続され得る。1つの実装によれば、ネットワークインタフェースアダプタは、CPUから独立して不揮発性半導体メモリデバイスにアクセスする。
いくつかの実装において、不揮発性半導体メモリデバイスは、ホストクライアントのための予約記憶領域を備え得る。不揮発性半導体メモリデバイスはさらに、ローカル記憶領域およびリモート記憶領域を備え得る。
ある実装において、不揮発性半導体メモリデバイスは、予約記憶領域がデータを格納するために利用可能であるかどうかを判定し得る。予約記憶領域がデータを格納するために利用可能であるという決定に応じて、不揮発性半導体メモリデバイスは、予約記憶領域からデータを格納するための空間を割り当て得る。
他の実装において、不揮発性半導体メモリデバイスは、予約記憶領域がデータを格納するために利用可能ではないという決定に応じて、ローカル記憶領域がデータを格納するために利用可能であるかどうかを判定し得る。ローカル記憶領域がデータを格納するために利用可能であるという決定に応じて、不揮発性半導体メモリデバイスは、ローカル記憶領域からデータを格納するための空間を割り当て得る。
1つの実装によれば、不揮発性半導体メモリデバイスは、リモート記憶領域がデータを格納するために利用可能であるかどうかを判定し得る。リモート記憶領域がデータを格納するために利用可能であるという決定に応じて、不揮発性半導体メモリデバイスは、リモート記憶領域からデータを格納するための空間を割り当て得る。
いくつかの実装において、データは、0.1μ秒より長く1μ秒より短い期間内に、ホストクライアントから対象のネットワークストレージ装置の不揮発性半導体メモリデバイスに転送される。
本開示の第2の態様は、ホストクライアントからネットワークストレージ装置にデータを転送する方法に関する。方法は、ホストクライアントから、ネットワークインタフェースアダプタを介して対象のネットワークストレージ装置に第1の書き込み要求を送信することを含む。方法は、対象のネットワークストレージ装置から、ネットワークインタフェースアダプタを介して第2のネットワークストレージ装置に第2の書き込み要求を送信することも含む。方法はさらに、ホストクライアントから、ネットワークインタフェースアダプタを介して第2のネットワークストレージ装置の不揮発性半導体メモリデバイスに、第1の書き込み要求に関連付けられたデータを転送することを含む。さらに、方法は、ネットワークインタフェースアダプタを介して第2のネットワークストレージ装置から対象のネットワークストレージ装置に、データが第2のネットワークストレージ装置の不揮発性半導体メモリデバイスに格納されたことを示す信号を送信することを含む。方法は、ネットワークインタフェースアダプタを介して対象のネットワークストレージ装置からホストクライアントに、データが格納されたことを示すアクノレッジメントステータスを送信することも含む。さらに、方法は、ネットワークインタフェースアダプタを介して第2のネットワークストレージ装置の不揮発性半導体メモリデバイスから、対象のネットワークストレージ装置の揮発性半導体メモリデバイスにデータを転送することを含む。方法はさらに、対象のネットワークストレージ装置の揮発性半導体メモリデバイスから、対象のネットワークストレージ装置のソリッドステートディスクにデータを転送することを含む。
いくつかの実装によれば、不揮発性半導体メモリデバイスは、抵抗変化型ランダムアクセスメモリ、磁気抵抗ランダムアクセスメモリ、ナノランダムアクセスメモリ、およびバッテリバック型ダイナミックランダムアクセスメモリの内の1つを備え得る。
いくつかの実装において、揮発性メモリデバイスは、ダイナミックランダムアクセスメモリ(DRAM)を備え得る。
他の実装において、ネットワークインタフェースアダプタは、リモートダイレクトメモリアクセス(RDMA)プロトコルに従って機能する。ネットワークインタフェースアダプタは、ネットワーク通信ファブリックに接続され得る。1つの実装によれば、ネットワークインタフェースアダプタは、CPUから独立して不揮発性半導体メモリデバイスにアクセスする。
いくつかの実装によれば、不揮発性半導体メモリデバイスは、ホストクライアントのための予約記憶領域を備え得る。不揮発性半導体メモリデバイスはさらに、ローカル記憶領域およびリモート記憶領域を備え得る。
ある実装において、方法はさらに、予約記憶領域がデータを格納するために利用可能であるかどうかを判定することと、予約記憶領域がデータを格納するために利用可能であるという決定に応じて、予約記憶領域からデータを格納するための空間を割り当てることとを備える。
他の実装において、方法は、予約記憶領域がデータを格納するために利用可能ではないという決定に応じて、ローカル記憶領域がデータを格納するために利用可能であるかどうかを判定することと、ローカル記憶領域がデータを格納するために利用可能であるという決定に応じて、ローカル記憶領域からデータを格納するための空間を割り当てることとを備える。
いくつかの実装によれば、方法はさらに、リモート記憶領域がデータを格納するために利用可能であるかどうかを判定することと、リモート記憶領域がデータを格納するために利用可能であるという決定に応じて、リモート記憶領域からデータを格納するための空間を割り当てることとを備える。
ある実装において、方法はさらに、0.1μ秒より長く1μ秒より短い期間内に、ホストクライアントから対象のネットワークストレージ装置の不揮発性半導体メモリデバイスにデータを転送することを備える。
ある実装において、第2のネットワークストレージ装置は、ストレージネットワーク内の多数のネットワークストレージ装置の内の1つであってもよい。
上述のおよび他の目的および利点は、全体を通して同様の参照符号が同様の部分を指す添付図面とともに挙げられる、以下の詳細な説明の考察により明らかになる。
図1は本開示の1つ以上の実施形態に従って構成された、不揮発性メモリを有するNVMe(登録商標)ストレージ装置の概略図を示す。
図2は本開示の実施形態に係る、不揮発性メモリに対する、ファブリックを介したNVMe(登録商標)のライトコマンドに関する方法ステップのフロー図である。
図3は本開示の1つ以上の実施形態に従って構成された、NVMe(登録商標)ストレージ装置および第2のNVMe(登録商標)ストレージ装置の概略図を示す。
図4は本開示の実施形態に係る、第2のNVMe(登録商標)ストレージ装置に対する、ファブリックを介したNVMe(登録商標)のライトコマンドに関する方法ステップのフロー図である。
図5は本開示の1つ以上の実施形態に従って構成された、不揮発性メモリ層およびNVMe(登録商標)層を有するNVMe(登録商標)ストレージ装置の概略図を示す。
図6は本開示の1つ以上の実施形態に従って構成された、NVMe(登録商標)ストレージ装置内の不揮発性半導体メモリデバイスの概略図を示す。
図7は本開示の実施形態に係る、ファブリックを介したNVMe(登録商標)のライトコマンドの間の、空間の割り当てに関する方法ステップのフロー図である。
図1は、ファブリック112を介して通信するホストクライアント102およびストレージ装置114を備えるNVMe(登録商標)システム100の概略図を示す。ホストクライアント102は、アプリケーション104、CPU(「中央処理ユニット」)106、およびDRAM(「ダイナミックランダムアクセスメモリ」)108を備えるコンピューティングシステムである。ストレージ装置114は、CPU126、不揮発性メモリ308、および複数のNVMe(登録商標)ディスク116を備えるコンピューティングシステムである。ホストクライアント102とストレージ装置114とは、NICの一種であるRDMAネットワークアダプタ110および130を用いてインタフェース接続する。DRAM108は、電力が加えられている間のみデータを保持する。ファブリック112は、相互接続スイッチと、電気ケーブル、光ファイバ、または無線リンクのようなネットワーク接続とを介して、複数のノードが互いにデータを受け渡すネットワークトポロジである。
不揮発性メモリ308は、電力がオフにされたときに自身の情報を保持するランダムアクセスメモリである。不揮発性メモリ308はバッテリバック型DRAM、または多数の新興技術の1つであり得る。バッテリバック型DRAMは、DRAM108と類似するが、DRAMが電力を失わず、データを保持するように、バッテリによってサポートされる。新興の不揮発性メモリ技術の一例は、誘電性固体材料にわたる抵抗を変化させることによって機能する抵抗変化型ランダムアクセスメモリ(RRAMまたはReRAM)である。新興の不揮発性メモリ技術の別の例は、磁気素子を用いる磁気抵抗ランダムアクセスメモリ(MRAM)である。加えて、カーボンナノチューブ技術に基づくナノRAM(Nano-RAM)のような将来の技術も存在する。不揮発性メモリ308は、NVMe(登録商標)ディスク116内にあってもよい。
ホストクライアント102がストレージ装置114内の特定のNVMe(登録商標)ディスク116にデータを書き込むことを所望すると、ホストクライアントのCPU106はライトコマンドをカプセル化し、RDMAインタフェース110を用いてストレージ装置114のCPU126にライトコマンドを送信する。ストレージ装置114が受信可能になったらすぐに、データがストレージ装置114に送信可能な状態になるように、アプリケーション104はホストクライアントのDRAM108にデータを送る。
ストレージ装置114がRDMAインタフェース130を用いてライトコマンドを受信した時点で、ストレージ装置114のCPU126は、カプセル化されたライトコマンドを解析し、カプセル化を解除し、データ情報を抽出する。そして、ストレージ装置114のCPU126は、RDMAインタフェース130を用いてホストクライアント102のDRAM108からストレージ装置114の不揮発性メモリ308へのデータのトランザクションを開始する。RDMA130のトランザクションの後、データはストレージ装置114の不揮発性メモリ308に存在する。
ストレージ装置114の不揮発性メモリ308にデータが存在した時点で、不揮発性メモリ308は、データが不揮発性メモリ308に格納されたことを示すステータスをストレージ装置114のCPU126に送信する。そして、ストレージ装置114のCPU126、そのステータスをカプセル化し、RDMAインタフェース130を用いてホストクライアント102のCPU106に送信する。ステータスは、指定されたNVMe(登録商標)ディスク116にデータが格納された旨のアクノレッジメントとして役立つ。
ストレージ装置114がホストクライアント102にアクノレッジメントを送信してから、バックグラウンド処理において、ストレージ装置114のCPU126は、ストレージ装置114の不揮発性メモリ308から、ライトコマンドによって指定されたNVMe(登録商標)ディスク116へのデータの転送を開始する。
NVMe(登録商標)システム100を用いるライトコマンドの処理200が、図2に示される。処理200は、ステップ402において、カプセル化されたライトコマンドを送信することで開始する。例えば、NVMe(登録商標)システム100において、ホストクライアント102がストレージ装置114内の特定のNVMe(登録商標)ディスク116にデータを書き込むことを所望すると、ホストクライアントのCPU106は、ライトコマンドをカプセル化し、RDMAインタフェース110を用いてストレージ装置114のCPU126にライトコマンドを送信する。ストレージ装置114が受信可能になったらすぐに、データがストレージ装置114に送信可能な状態になるように、アプリケーション104はホストクライアントのDRAM108にデータを送る。
処理200は、ステップ404において、ホストクライアント102からストレージ装置114にデータを転送することで継続する。例えば、NVMe(登録商標)システム100において、ストレージ装置114がRDMAインタフェース130を用いてライトコマンドを受信すると、ストレージ装置114のCPU126は、カプセル化されたライトコマンドを解析し、カプセル化を解除し、データ情報を抽出する。そして、ストレージ装置のCPU126は、RDMAインタフェース130を用いて、ホストクライアント102のDRAM108からストレージ装置114の不揮発性メモリ308へのデータのトランザクションを開始する。RDMA130のトランザクションの後、データはストレージ装置114の不揮発性メモリ308に存在する。
処理200は、ステップ406において、ストレージ装置114のCPU126からホストクライアント102にアクノレッジメントを送信することで継続する。例えば、NVMe(登録商標)システム100において、データがストレージ装置114の不揮発性メモリ308に存在した時点で、不揮発性メモリ308は、データが不揮発性メモリ308に格納されたことを示すステータスをストレージ装置114のCPU126に送信する。そして、ストレージ装置114のCPU126は、そのステータスをカプセル化し、RDMAインタフェース130を用いてホストクライアント102のCPU106に送信する。ステータスは、指定されたNVMe(登録商標)ディスク116にデータが格納された旨のアクノレッジメントとして役立つ。
処理200は、ステップ408において、不揮発性メモリ308からNVMe(登録商標)ディスク116の1つにデータを転送することで終了する。例えば、NVMe(登録商標)システム100において、ストレージ装置114がホストクライアント102にアクノレッジメントを送信してから、バックグラウンド処理において、ストレージ装置114のCPU126は、ストレージ装置114の不揮発性メモリ308から、ライトコマンドによって指定されたNVMe(登録商標)ディスク116へのデータの転送を開始する。
従来技術のシステムにおいて、ストレージ装置114は、データをNVMe(登録商標)ディスク116に転送する前に、ホストクライアント102から転送されたデータを格納するためにDRAMに頼る。DRAMは電力が加えられている間だけデータを保持するので、従来技術のシステムは、データが格納された旨のアクノレッジメントをホストクライアント102に送信する前に、データがNVMe(登録商標)ディスク116に転送されるまで待機する必要がある。RDMAインタフェース110および130は高帯域幅および低レイテンシを有するので、従来技術のシステムにおける主な時間消費は、ディスクアクセスにある。
処理200は、レイテンシが、ホストクライアント102とストレージ装置114との間の転送レイテンシのみになることを可能にする。不揮発性メモリ308からNVMe(登録商標)ディスク116へのデータの転送は、処理200のレイテンシに影響を及ぼさない。しかし、バッテリバック型DRAMのストレージ装置114の実装でも、不揮発性メモリ308は、NVMe(登録商標)ディスク116に比べて相対的に小さい。よって、データを受信することが意図されたストレージ装置114が不揮発性メモリ308からNVMe(登録商標)ディスク116にデータを転送する間に、到来するデータを格納するために別のストレージ装置114を用いることが必要とされ得る。
図3は、ファブリック112を介して通信する、ホストクライアント102と、対象のストレージ装置514と、第2のストレージ装置520とを備えるNVMe(登録商標)システム300の概略図を示す。ホストクライアント102は、アプリケーション104、CPU106、およびDRAM108を備えるコンピューティングシステムである。対象のストレージ装置514および第2のストレージ装置520は、CPU126、不揮発性メモリ308、DRAM518、および複数のNVMe(登録商標)ディスク116を備えるコンピューティングシステムである。ホストクライアント102、対象のストレージ装置514、および第2のストレージ装置520は、ネットワークインタフェースコントローラの一種であるRDMA110および130を用いてインタフェース接続する。DRAM518は、DRAM108と同様である。
ホストクライアント102が、対象のストレージ装置514内の特定のNVMe(登録商標)ディスク116にデータを書き込むことを所望すると、ホストクライアントのCPU106は、ライトコマンドをカプセル化し、RDMAインタフェース110を用いて対象のストレージ装置514のCPU126にライトコマンドを送信する。データが送信可能な状態になるように、アプリケーション104はホストクライアントのDRAM108にデータを送る。
対象のストレージ装置514がRDMAインタフェース130を用いてライトコマンドを受信した時点で、対象のストレージ装置514のCPU126は、カプセル化されたライトコマンドを解析し、カプセル化を解除し、データ情報を抽出する。対象のストレージ装置514の不揮発性メモリ308が、ホストクライアント102が転送を所望するデータのための空き空間を有していない場合、対象のストレージ装置のCPU126は、RDMAインタフェース110を用いて、ライトコマンドを第2のストレージ装置520のCPU126へリダイレクトする。
第2のストレージ装置520のCPU126は、対象のストレージ装置514のCPU126からリダイレクトされたライトコマンドを受信すると、コマンドを処理するためのリソースを有しているかどうかを判定する。第2のストレージ装置520が、ホストクライアント102からのデータを受信するためのリソースを有していない場合、対象のストレージ装置514のCPU126が、データを受信できる、別の通信可能に結合されたストレージ装置(図示せず)にコマンドを向けられるように、第2のストレージ装置520は対象のストレージ装置514のCPU126に通知することになる。
第2のストレージ装置520が、データを受信するためのリソースを有している場合、第2のストレージ装置520のCPU126は、RDMAインタフェース130を用いて、ホストクライアント102のDRAM108から第2のストレージ装置520の不揮発性メモリ308へのデータのトランザクションを開始する。RDMA130のトランザクションの後、データは第2のストレージ装置520の不揮発性メモリ308に存在する。
データが第2のストレージ装置520の不揮発性メモリ308に存在した時点で、不揮発性メモリ308は、データが第2のストレージ装置520の不揮発性メモリ308に格納されたことを示すステータスを、対象のストレージ装置514のCPU126に送信する。そして、対象のストレージ装置514のCPU126は、データが第2のストレージ装置520の不揮発性メモリ308に格納されたことを示すステータスをカプセル化して、RDMAインタフェース130を用いてホストクライアント102のCPU106に送信する。ステータスは、データが第2のストレージ装置520の不揮発性メモリ308に格納された旨のアクノレッジメントとして役立つ。
バックグラウンド処理において、第2のストレージ装置520のCPU126は、第2のストレージ装置520の不揮発性メモリ308から対象のストレージ装置514のDRAM518へのデータの転送を開始する。データが対象のストレージ装置514のDRAM518に格納された時点で、対象のストレージ装置514のCPU126は、対象のストレージ装置514のDRAM518から、ライトコマンドによって指定された対象のストレージ装置のNVMe(登録商標)ディスク116へのデータの転送を開始する。
NVMe(登録商標)システム300を用いるライトコマンドの処理400が図4に示される。処理400は、ステップ602において、カプセル化されたライトコマンドをホストクライアント102から対象のストレージ装置514に送信することで開始する。例えば、NVMe(登録商標)システム300において、ホストクライアント102が、対象のストレージ装置514内の特定のNVMe(登録商標)ディスク116にデータを書き込むことを所望するとき、ホストクライアントのCPU106はライトコマンドをカプセル化し、RDMAインタフェース110を用いて対象のストレージ装置514のCPU126にライトコマンドを送信する。データが送信できる状態になるように、アプリケーション104はホストクライアントのDRAM108にデータを送る。
処理400は、ステップ604において、対象のストレージ装置514から第2のストレージ装置520へ、カプセル化されたライトコマンドを有するクエリをブロードキャストすることで継続する。例えば、NVMe(登録商標)システム300において、対象のストレージ装置514がRDMAインタフェース130を用いてライトコマンドを受信した時点で、対象のストレージ装置514のCPU126は、カプセル化されたライトコマンドを解析し、カプセル化を解除し、データ情報を抽出する。対象のストレージ装置514の不揮発性メモリ308が、ホストクライアント102が転送を所望するデータのための空き空間を有していない場合、対象のストレージ装置のCPU126は、RDMAインタフェース130を用いて、ライトコマンドを第2のストレージ装置520のCPU126へリダイレクトする。
処理400は、ステップ606において、第2のストレージ装置520のリソースの利用の可能性を判定することで継続する。例えば、NVMe(登録商標)システム300において、第2のストレージ装置520のCPU126は、対象のストレージ装置520のCPU126からリダイレクトされたライトコマンドを受信すると、そのコマンドを処理するためのリソースを有しているかどうかを判定する。第2のストレージ装置520が、ホストクライアント102からのデータを受信するためのリソースを有していない場合、対象のストレージ装置514のCPU126が、データを受信できる、別の通信可能に結合されたストレージ装置(図示せず)へコマンドを向けられるように、第2のストレージ装置520は対象のストレージ装置514のCPU126に通知することになる。
処理400は、ステップ608において、ホストクライアント102のDRAM108から第2のストレージ装置520の不揮発性メモリ308にデータを送信することで継続する。例えば、NVMe(登録商標)システム300において、第2のストレージ装置520がデータを受信するためのリソースを有している場合、第2のストレージ装置520のCPU126は、RDMAインタフェース130を用いた、ホストクライアント102のDRAM108から第2のストレージ装置520の不揮発性メモリ308へのデータのトランザクションを開始する。RDMA130のトランザクションの後、データは第2のストレージ装置520の不揮発性メモリ308に存在する。
処理400は、ステップ610において、対象のストレージ装置514のCPU126からホストクライアント102にアクノレッジメントを送信することで継続する。例えば、NVMe(登録商標)システム300において、データが第2のストレージ装置520の不揮発性メモリ308に存在した時点で、不揮発性メモリ308は、データが第2のストレージ装置520の不揮発性メモリ308に格納されたことを示すステータスを、対象のストレージ装置514のCPU126に送信する。そして、対象のストレージ装置514のCPU126は、データが第2のストレージ装置520の不揮発性メモリ308に格納されたことを示すステータスをカプセル化し、RDMAインタフェース130を用いてホストクライアント102のCPU106に送信する。ステータスは、データが第2のストレージ装置520の不揮発性メモリ308に格納された旨のアクノレッジメントとして役立つ。
処理400は、ステップ612において、第2のストレージ装置の不揮発性メモリ308から対象のストレージ装置514のDRAM518にデータを転送することで継続する。例えば、NVMe(登録商標)システム300では、バックグラウンド処理において、第2のストレージ装置520のCPU126が、第2のストレージ装置520の不揮発性メモリ308から対象のストレージ装置514のDRAM518へのデータの転送を開始する。
処理400は、ステップ614において、DRAM518から対象のストレージ装置514の1つに、対象のストレージ装置514のNVMe(登録商標)ディスク116の1つにデータを転送することで終了する。例えば、NVMe(登録商標)システム300において、データが対象のストレージ装置514のDRAM518に格納された時点で、対象のストレージ装置514のCPU126は、対象のストレージ装置514のDRAM518から、ライトコマンドによって指定された対象のストレージ装置のNVMe(登録商標)ディスク116へのデータの転送を開始する。
図5は、ファブリック112を介して通信する、2つのホストクライアント102と、対象のストレージ装置514と、第2のストレージ装置520とを備えるNVMe(登録商標)システム500の概略図を示す。ホストクライアント102は、アプリケーション104、CPU106、およびDRAM108を備えるコンピューティングシステムである。対象のストレージ装置514および第2のストレージ装置520は、CPU126、DRAM518、および複数のNVMe(登録商標)ディスクを備えるコンピューティングシステムである。ホストクライアント102と、対象のストレージ装置514と、第2のストレージ装置520とは、ネットワークインタフェースコントローラの一種であるRDMA110および130を用いてインタフェース接続する。NVMe(登録商標)システム500は、不揮発性メモリ層708およびNVMe(登録商標)層716を備える。不揮発性メモリ層708は、複数の不揮発性メモリデバイス308の集合である。NVMe(登録商標)層716は、複数のNVMe(登録商標)ディスク116の集合である。NVMe(登録商標)システム500は、3つ以上のホストクライアント102と、2つ以上の第2のストレージ装置520を備えていてもよい。
NVMe(登録商標)システム500は、大規模なストレージの配備においてNVRAMの割り当てを可能にし、不揮発性メモリ層708を有効にする。ホストクライアント102が対象のストレージ装置514内の特定のNVMe(登録商標)ディスク116にデータを書き込むことを所望すると、ホストクライアントのCPU106は、ライトコマンドをカプセル化し、RDMAインタフェース110を用いて、対象のストレージ装置514のCPU126にライトコマンドを送信する。対象のストレージ装置514は、ホストクライアント102のDRAM108からデータを転送するために不揮発性メモリ層708を利用し、さらに、不揮発性メモリ層708からNVMe(登録商標)層716の特定のNVMe(登録商標)ディスクにデータを転送する。
例えば、対象のストレージ装置514が十分なローカルリソースを有している場合、対象のストレージ装置514は、不揮発性メモリ層708のローカル部分にデータを格納する。そして、対象のストレージ装置514は、アクノレッジメントステータスをホストクライアント102に送信する。対象のストレージ装置514が十分なローカルリソースを有していない場合、対象のストレージ装置514は、ネットワーク内の全ての第2のストレージ装置520へクエリをブロードキャストして、データを受信できる第2のストレージ装置520が存在するかを問い合わせる。利用可能なリソースを有する第2のストレージ装置520の1つは、自身がデータを受信可能であることを示す信号を対象のストレージ装置514に送信する。このプロセスは、処理400によって説明したように継続する。
不揮発性メモリ層708の貴重で有限なリソースを割り当てるために、適正かつユーザ定義のメカニズムが定義されるべきである。図6は、NVRAMデバイス802の概略図を示す。NVRAM802は、不揮発性メモリ層708の貴重で有限なリソースを割り当てるためのユーザ定義のメカニズムの一例である。NVRAM802は、管理者によって経験的に予約領域804、ローカル領域812、およびリモート領域814に分割された記憶空間を備える不揮発性半導体メモリデバイスである。NVRAM802は、不揮発性メモリデバイス308の一例である。
予約領域804は、各ホストクライアント102のために利用可能な、保証された記憶領域を定める。予約領域804は、複数の領域にさらに分割され、各領域が1つのホストクライアント102の専用である。ホスト1 806は、第1のホストクライアント102専用の記憶領域である。ホスト2 808は、第2のホストクライアント102専用の記憶領域である。ホストN 810は、N番目のホストクライアント102専用の記憶領域である。
ローカル領域812は、ローカルNVMe(登録商標)ディスク116への格納のためにNVRAM802に送信されるデータに割り当てられた記憶領域である。ローカル領域812は、特定のホストクライアント102に対応する予約領域804が一杯である場合の余剰空間として機能する。例えば、ホストクライアント102に対応するホスト1記憶領域806が一杯であり、NVRAM802がホストクライアント102からデータを受信した場合、新たなデータはローカル領域812に格納され得る。
リモート領域814は、遠隔のNVMe(登録商標)ディスク116への格納のためにNVRAM802に送信されるデータに割り当てられた記憶領域である。リモート領域814は、対象のストレージ装置514の予約領域804が一杯であり、第2のストレージ装置520がデータを受信する必要がある場合の余剰空間として機能する。例えば、対象のストレージ装置514のNVRAM802が一杯である場合、第2のストレージ装置520のNVRAM802はデータを受信して、リモート記憶領域814に格納することができる。
NVRAMデバイス802においてライトコマンドのために空間を割り当てる処理700が、図7に示される。処理700は、ステップ902において、ホストクライアント102から対象のストレージ装置514にカプセル化されたライトコマンドを送信することで開始する。例えば、ホストクライアントのCPU106は、ライトコマンドをカプセル化し、RDMAインタフェース110を用いて、対象のストレージ装置514のCPU106にライトコマンドを送信する。
処理700は、ステップ904において、カプセル化されたライトコマンドのコマンド優先権を判定することで継続する。ホストクライアント102からのカプセル化されたライトコマンドは、ライトコマンドが、対象のストレージ装置514での格納を対象としているか、それとも第2のストレージ装置520での格納を対象としているかを指定するコマンド優先権を有していてもよい。コマンド優先権が、第2のストレージ装置520にデータを送信することである場合、処理700はステップ906へ続く。コマンド優先権が、対象のストレージ装置514にデータを送信することである場合、処理700はステップ908へ続く。
ステップ906において、対象のストレージ装置514は、ライトコマンドを有するクエリを第2のストレージ装置520へブロードキャストする。例えば、対象のストレージ装置514のCPU106は、RDMAインタフェース110を用いて、第2のストレージ装置520のCPU106にライトコマンドを送信する。対象のストレージ装置514のCPU106は、RDMAインタフェース110を用いて第2のストレージ装置520へクエリをブロードキャストするためにRDMAインタフェース110を始動してもよい。ステップ906の後、処理700は、上述したように、処理400によって説明したように継続する。
ステップ908において、処理700は、ホストクライアント102専用の利用可能な予約領域804が存在するどうかを判定することで継続する。ホストクライアント102専用の利用可能な予約領域804が存在する場合、処理700はステップ910へ続く。ホストクライアント102専用の利用可能な予約領域804が存在しない場合、処理700はステップ912へ続く。
ステップ910において、処理700は、予約領域804からデータ格納のために空間を割り当てることで継続する。例えば、ホストクライアント102に対応するホスト1記憶領域806が利用可能である場合、ホスト1記憶領域806は、ホストクライアント102から到来するデータを格納するために用いられ得る。ステップ910の後、処理700は、上述したように、処理200によって説明したように継続する。
ステップ912において、処理700は、利用可能なローカル領域812が存在するかどうかを判定することで継続する。利用可能なローカル領域812が存在しない場合、処理700はステップ906へ続く。利用可能なローカル領域812が存在する場合、処理700はステップ914へ続く。
ステップ914において、処理700は、ホストクライアント102がローカル領域812内の割り当ての限界値に達したかどうかを判定することで継続する。ホストクライアント102がローカル領域812内の割り当ての限界値に達している場合、処理700はステップ906へ続く。ホストクライアント102がローカル領域812内の割り当ての限界値に達していない場合、処理700はステップ916へ続く。
ステップ916において、処理700は、ライトコマンドの優先度が閾値優先度よりも高いかどうかを判定する。ライトコマンドの優先度が閾値優先度よりも高くない場合、処理700はステップ906へ続く。ライトコマンドの優先度が閾値優先度よりも高い場合、処理700はステップ918へ続く。
処理700は、ステップ918において、ローカル領域812からデータ格納のために空間を割り当てることで終了する。例えば、ホストクライアント102に対応するホスト1記憶領域806が一杯であって、NVRAM802がホストクライアント102からデータを受信した場合、新たなデータはローカル領域812に格納され得る。
同様のプロセスが、第2のホストクライアント102からのコマンドを受信した場合に発生する。この状況においては、対象のストレージ装置514は、利用可能な空間に関してリモート領域814を確認する。利用可能な空間がリモート領域814に存在する場合、対象のストレージ装置514は、リモート領域814から、到来するコマンドのために空間を割り当てる。
本発明の様々な態様の他の目的、利点、および実施形態は、本発明の分野の当業者に明らかであり、本明細書および添付図面の範囲内である。例えば、限定はされないが、構造的または機能的な要素が本発明と矛盾することなく再編成され得る。同様に、本発明に係る原理は他の例にも適用されてよく、それらは、ここに詳しく記載されない場合でも、本発明の範囲内であるものとする。
対象のストレージ装置514がRDMAインタフェース110を用いてライトコマンドを受信した時点で、対象のストレージ装置514のCPU126は、カプセル化されたライトコマンドを解析し、カプセル化を解除し、データ情報を抽出する。対象のストレージ装置514の不揮発性メモリ308が、ホストクライアント102が転送を所望するデータのための空き空間を有していない場合、対象のストレージ装置のCPU126は、RDMAインタフェース110を用いて、ライトコマンドを第2のストレージ装置520のCPU126へリダイレクトする。
処理400は、ステップ606において、第2のストレージ装置520のリソースの利用の可能性を判定することで継続する。例えば、NVMe(登録商標)システム300において、第2のストレージ装置520のCPU126は、対象のストレージ装置514のCPU126からリダイレクトされたライトコマンドを受信すると、そのコマンドを処理するためのリソースを有しているかどうかを判定する。第2のストレージ装置520が、ホストクライアント102からのデータを受信するためのリソースを有していない場合、対象のストレージ装置514のCPU126が、データを受信できる、別の通信可能に結合されたストレージ装置(図示せず)へコマンドを向けられるように、第2のストレージ装置520は対象のストレージ装置514のCPU126に通知することになる。
処理400は、ステップ614において、対象のストレージ装置514のDRAM518から、対象のストレージ装置514のNVMe(登録商標)ディスク116の1つにデータを転送することで終了する。例えば、NVMe(登録商標)システム300において、データが対象のストレージ装置514のDRAM518に格納された時点で、対象のストレージ装置514のCPU126は、対象のストレージ装置514のDRAM518から、ライトコマンドによって指定された対象のストレージ装置のNVMe(登録商標)ディスク116へのデータの転送を開始する。
本発明の様々な態様の他の目的、利点、および実施形態は、本発明の分野の当業者に明らかであり、本明細書および添付図面の範囲内である。例えば、限定はされないが、構造的または機能的な要素が本発明と矛盾することなく再編成され得る。同様に、本発明に係る原理は他の例にも適用されてよく、それらは、ここに詳しく記載されない場合でも、本発明の範囲内であるものとする。
以下に、本願出願時の特許請求の範囲に記載された発明を付記する。
[1]複数のソリッドステートディスクと、
前記複数のソリッドステートディスクおよびホストクライアントに通信可能に結合されたネットワークインタフェースアダプタであって、
前記ホストクライアントからデータを取得し、
前記データを前記ホストクライアントから前記複数のソリッドステートディスクに転送する
ように構成されるネットワークインタフェースアダプタと、
前記複数のソリッドステートディスクおよび前記ネットワークインタフェースアダプタに通信可能に結合された不揮発性半導体メモリデバイスであって、
前記ネットワークインタフェースアダプタを介して前記ホストクライアントからデータを受信し、
前記データを一時的に格納し、
前記データを前記複数のソリッドステートディスクの1つに転送する
ように構成される不揮発性半導体メモリデバイスと、
前記不揮発性半導体メモリデバイスおよび前記ネットワークインタフェースアダプタに通信可能に結合されたCPUであって、
前記ネットワークインタフェースアダプタを介して前記ホストクライアントから書き込み要求を受信し、
前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能であるかどうかを判定し、
前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能であるという決定に応じて、前記ネットワークインタフェースアダプタを介した前記ホストクライアントから前記不揮発性半導体メモリデバイスへの前記データの前記転送を行うために、前記ネットワークインタフェースアダプタを始動し、
前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能でないという決定に応じて、前記ネットワークインタフェースアダプタを介して1つ以上の外部ストレージへクエリをブロードキャストするために、前記ネットワークインタフェースアダプタを始動する
ように構成されるCPUとを備えるネットワークストレージ装置。
[2]前記不揮発性半導体メモリデバイスは、
抵抗変化型ランダムアクセスメモリと、
磁気抵抗ランダムアクセスメモリと、
ナノランダムアクセスメモリと、
バッテリバック型ダイナミックランダムアクセスメモリとの内の1つを備える、[1]に記載のネットワークストレージ装置。
[3]前記複数のソリッドステートディスクおよび前記ネットワークインタフェースアダプタに通信可能に結合された揮発性メモリデバイスをさらに備え、前記揮発性メモリデバイスは、前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能ではないという決定に応じて、前記ネットワークインタフェースアダプタを介して前記1つ以上の外部ストレージからデータを受信するように構成され、前記1つ以上の外部ストレージは、1つ以上の第2のネットワークストレージ装置に対応する、[1]に記載のネットワークストレージ装置。
[4]前記揮発性半導体メモリデバイスはさらに、前記複数のソリッドステートディスクの1つに前記データを転送するように構成される、[3]に記載のネットワークストレージ装置。
[5]前記CPUはさらに、前記ネットワークインタフェースアダプタを介して前記ホストクライアントにアクノレッジメントステータスを送信するように構成され、前記アクノレッジメントステータスは、前記データが前記不揮発性半導体メモリデバイスまたは前記1つ以上の外部ストレージに格納されたことを示す、[1]に記載のネットワークストレージ装置。
[6]前記CPUはさらに、
前記ネットワークインタフェースアダプタを介して、前記1つ以上の外部ストレージの内の第1外部ストレージから、前記第1外部ストレージが前記データを格納するために利用可能であることを示す前記クエリに対する応答を受信し、
前記ネットワークインタフェースアダプタを介して前記第1外部ストレージに第2の書き込み要求を送信するように構成される、[1]に記載のネットワークストレージ装置。
[7]前記1つ以上の外部ストレージは、複数の第2のネットワークストレージ装置の内の1つ以上である、[6]に記載のネットワークストレージ装置。
[8]前記第2の書き込み要求は、前記ホストクライアントから前記第1外部ストレージへの前記データの前記転送を開始するために、前記第1外部ストレージを始動する、[6]に記載のネットワークストレージ装置。
[9]前記CPUはさらに、前記ネットワークインタフェースアダプタを介して前記第1外部ストレージから信号を受信するように構成され、前記信号は、前記データが前記第1外部ストレージに格納されたことを示す、[8]に記載のネットワークストレージ装置。
[10]前記CPUはさらに、前記ネットワークインタフェースアダプタを介して前記ホストクライアントに第2のアクノレッジメントステータスを送信するように構成され、前記第2のアクノレッジメントステータスは、前記データが前記第1外部ストレージに格納されたことを示す、[9]に記載のネットワークストレージ装置。
[11]前記ネットワークインタフェースアダプタは、リモートダイレクトメモリアクセス(RDMA)プロトコルに従って機能する、[1]に記載のネットワークストレージ装置。
[12]前記ネットワークインタフェースアダプタは、ネットワーク通信ファブリックに接続される、[1]に記載のネットワークストレージ装置。
[13]前記不揮発性半導体メモリデバイスは、前記ホストクライアントのための予約記憶領域を備える、[1]に記載のネットワークストレージ装置。
[14]前記不揮発性半導体メモリデバイスはさらに、ローカル記憶領域およびリモート記憶領域を備える、[13]に記載のネットワークストレージ装置。
[15]前記不揮発性半導体メモリデバイスはさらに、
前記予約記憶領域が前記データを格納するために利用可能であるかどうかを判定し、
前記予約記憶領域が前記データを格納するために利用可能であるという決定に応じて、前記予約記憶領域から前記データを格納するための空間を割り当てるように構成される、[14]に記載のネットワークストレージ装置。
[16]前記不揮発性半導体メモリデバイスはさらに、
前記予約記憶領域が前記データを格納するために利用可能ではないという決定に応じて、前記ローカル記憶領域が前記データを格納するために利用可能であるかどうかを判定し、
前記ローカル記憶領域が前記データを格納するために利用可能であるという決定に応じて、前記ローカル記憶領域から前記データを格納するための空間を割り当てるように構成される、[15]に記載のネットワークストレージ装置。
[17]前記不揮発性半導体メモリデバイスはさらに、
前記リモート記憶領域が前記データを格納するために利用可能であるかどうかを判定し、
前記リモート記憶領域が前記データを格納するために利用可能であるという決定に応じて、前記リモート記憶領域から前記データを格納するための空間を割り当てるように構成される、[14]に記載のネットワークストレージ装置。
[18]前記データは、0.1μ秒より長く1μ秒より短い期間内に、前記ホストクライアントから前記対象のネットワークストレージ装置の前記不揮発性半導体メモリデバイスに転送される、[1]に記載のネットワークストレージ装置。
[19]前記ネットワークインタフェースアダプタは、前記CPUから独立して前記不揮発性半導体メモリデバイスにアクセスする、[1]に記載のネットワークストレージ装置。
[20]ホストクライアントからネットワークストレージ装置にデータを転送する方法であって、
ホストクライアントから、ネットワークインタフェースアダプタを介して対象のネットワークストレージ装置へ第1の書き込み要求を送信することと、
前記対象のネットワークストレージ装置から、前記ネットワークインタフェースアダプタを介して第2のネットワークストレージ装置に第2の書き込み要求を送信することと、
前記ホストクライアントから、前記ネットワークインタフェースアダプタを介して前記第2のネットワークストレージ装置の不揮発性半導体メモリデバイスに、前記第1の書き込み要求に関連付けられたデータを転送することと、
前記第2のネットワークストレージ装置から、前記ネットワークインタフェースアダプタを介して前記対象のネットワークストレージ装置に、前記データが前記第2のネットワークストレージ装置の前記不揮発性メモリデバイスに格納されたことを示す信号を送信することと、
前記対象のネットワークストレージ装置から、前記ネットワークインタフェースアダプタを介して前記ホストクライアントに、前記データが格納されたことを示すアクノレッジメントステータスを送信することと、
前記第2のネットワークストレージ装置の前記不揮発性半導体メモリデバイスから、前記ネットワークインタフェースアダプタを介して前記対象のネットワークストレージ装置の揮発性半導体メモリデバイスに前記データを転送することと、
前記対象のネットワークストレージ装置の前記揮発性半導体メモリデバイスから、前記対象のネットワークストレージ装置のソリッドステートディスクに前記データを転送することとを含む方法。

Claims (20)

  1. 複数のソリッドステートディスクと、
    前記複数のソリッドステートディスクおよびホストクライアントに通信可能に結合されたネットワークインタフェースアダプタであって、
    前記ホストクライアントからデータを取得し、
    前記データを前記ホストクライアントから前記複数のソリッドステートディスクに転送する
    ように構成されるネットワークインタフェースアダプタと、
    前記複数のソリッドステートディスクおよび前記ネットワークインタフェースアダプタに通信可能に結合された不揮発性半導体メモリデバイスであって、
    前記ネットワークインタフェースアダプタを介して前記ホストクライアントからデータを受信し、
    前記データを一時的に格納し、
    前記データを前記複数のソリッドステートディスクの1つに転送する
    ように構成される不揮発性半導体メモリデバイスと、
    前記不揮発性半導体メモリデバイスおよび前記ネットワークインタフェースアダプタに通信可能に結合されたCPUであって、
    前記ネットワークインタフェースアダプタを介して前記ホストクライアントから書き込み要求を受信し、
    前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能であるかどうかを判定し、
    前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能であるという決定に応じて、前記ネットワークインタフェースアダプタを介した前記ホストクライアントから前記不揮発性半導体メモリデバイスへの前記データの前記転送を行うために、前記ネットワークインタフェースアダプタを始動し、
    前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能でないという決定に応じて、前記ネットワークインタフェースアダプタを介して1つ以上の外部ストレージへクエリをブロードキャストするために、前記ネットワークインタフェースアダプタを始動する
    ように構成されるCPUとを備えるネットワークストレージ装置。
  2. 前記不揮発性半導体メモリデバイスは、
    抵抗変化型ランダムアクセスメモリと、
    磁気抵抗ランダムアクセスメモリと、
    ナノランダムアクセスメモリと、
    バッテリバック型ダイナミックランダムアクセスメモリとの内の1つを備える、請求項1に記載のネットワークストレージ装置。
  3. 前記複数のソリッドステートディスクおよび前記ネットワークインタフェースアダプタに通信可能に結合された揮発性メモリデバイスをさらに備え、前記揮発性メモリデバイスは、前記不揮発性半導体メモリデバイスが前記データを格納するために利用可能ではないという決定に応じて、前記ネットワークインタフェースアダプタを介して前記1つ以上の外部ストレージからデータを受信するように構成され、前記1つ以上の外部ストレージは、1つ以上の第2のネットワークストレージ装置に対応する、請求項1に記載のネットワークストレージ装置。
  4. 前記揮発性半導体メモリデバイスはさらに、前記複数のソリッドステートディスクの1つに前記データを転送するように構成される、請求項3に記載のネットワークストレージ装置。
  5. 前記CPUはさらに、前記ネットワークインタフェースアダプタを介して前記ホストクライアントにアクノレッジメントステータスを送信するように構成され、前記アクノレッジメントステータスは、前記データが前記不揮発性半導体メモリデバイスまたは前記1つ以上の外部ストレージに格納されたことを示す、請求項1に記載のネットワークストレージ装置。
  6. 前記CPUはさらに、
    前記ネットワークインタフェースアダプタを介して、前記1つ以上の外部ストレージの内の第1外部ストレージから、前記第1外部ストレージが前記データを格納するために利用可能であることを示す前記クエリに対する応答を受信し、
    前記ネットワークインタフェースアダプタを介して前記第1外部ストレージに第2の書き込み要求を送信するように構成される、請求項1に記載のネットワークストレージ装置。
  7. 前記1つ以上の外部ストレージは、複数の第2のネットワークストレージ装置の内の1つ以上である、請求項6に記載のネットワークストレージ装置。
  8. 前記第2の書き込み要求は、前記ホストクライアントから前記第1外部ストレージへの前記データの前記転送を開始するために、前記第1外部ストレージを始動する、請求項6に記載のネットワークストレージ装置。
  9. 前記CPUはさらに、前記ネットワークインタフェースアダプタを介して前記第1外部ストレージから信号を受信するように構成され、前記信号は、前記データが前記第1外部ストレージに格納されたことを示す、請求項8に記載のネットワークストレージ装置。
  10. 前記CPUはさらに、前記ネットワークインタフェースアダプタを介して前記ホストクライアントに第2のアクノレッジメントステータスを送信するように構成され、前記第2のアクノレッジメントステータスは、前記データが前記第1外部ストレージに格納されたことを示す、請求項9に記載のネットワークストレージ装置。
  11. 前記ネットワークインタフェースアダプタは、リモートダイレクトメモリアクセス(RDMA)プロトコルに従って機能する、請求項1に記載のネットワークストレージ装置。
  12. 前記ネットワークインタフェースアダプタは、ネットワーク通信ファブリックに接続される、請求項1に記載のネットワークストレージ装置。
  13. 前記不揮発性半導体メモリデバイスは、前記ホストクライアントのための予約記憶領域を備える、請求項1に記載のネットワークストレージ装置。
  14. 前記不揮発性半導体メモリデバイスはさらに、ローカル記憶領域およびリモート記憶領域を備える、請求項13に記載のネットワークストレージ装置。
  15. 前記不揮発性半導体メモリデバイスはさらに、
    前記予約記憶領域が前記データを格納するために利用可能であるかどうかを判定し、
    前記予約記憶領域が前記データを格納するために利用可能であるという決定に応じて、前記予約記憶領域から前記データを格納するための空間を割り当てるように構成される、請求項14に記載のネットワークストレージ装置。
  16. 前記不揮発性半導体メモリデバイスはさらに、
    前記予約記憶領域が前記データを格納するために利用可能ではないという決定に応じて、前記ローカル記憶領域が前記データを格納するために利用可能であるかどうかを判定し、
    前記ローカル記憶領域が前記データを格納するために利用可能であるという決定に応じて、前記ローカル記憶領域から前記データを格納するための空間を割り当てるように構成される、請求項15に記載のネットワークストレージ装置。
  17. 前記不揮発性半導体メモリデバイスはさらに、
    前記リモート記憶領域が前記データを格納するために利用可能であるかどうかを判定し、
    前記リモート記憶領域が前記データを格納するために利用可能であるという決定に応じて、前記リモート記憶領域から前記データを格納するための空間を割り当てるように構成される、請求項14に記載のネットワークストレージ装置。
  18. 前記データは、0.1μ秒より長く1μ秒より短い期間内に、前記ホストクライアントから前記対象のネットワークストレージ装置の前記不揮発性半導体メモリデバイスに転送される、請求項1に記載のネットワークストレージ装置。
  19. 前記ネットワークインタフェースアダプタは、前記CPUから独立して前記不揮発性半導体メモリデバイスにアクセスする、請求項1に記載のネットワークストレージ装置。
  20. ホストクライアントからネットワークストレージ装置にデータを転送する方法であって、
    ホストクライアントから、ネットワークインタフェースアダプタを介して対象のネットワークストレージ装置へ第1の書き込み要求を送信することと、
    前記対象のネットワークストレージ装置から、前記ネットワークインタフェースアダプタを介して第2のネットワークストレージ装置に第2の書き込み要求を送信することと、
    前記ホストクライアントから、前記ネットワークインタフェースアダプタを介して前記第2のネットワークストレージ装置の不揮発性半導体メモリデバイスに、前記第1の書き込み要求に関連付けられたデータを転送することと、
    前記第2のネットワークストレージ装置から、前記ネットワークインタフェースアダプタを介して前記対象のネットワークストレージ装置に、前記データが前記第2のネットワークストレージ装置の前記不揮発性メモリデバイスに格納されたことを示す信号を送信することと、
    前記対象のネットワークストレージ装置から、前記ネットワークインタフェースアダプタを介して前記ホストクライアントに、前記データが格納されたことを示すアクノレッジメントステータスを送信することと、
    前記第2のネットワークストレージ装置の前記不揮発性半導体メモリデバイスから、前記ネットワークインタフェースアダプタを介して前記対象のネットワークストレージ装置の揮発性半導体メモリデバイスに前記データを転送することと、
    前記対象のネットワークストレージ装置の前記揮発性半導体メモリデバイスから、前記対象のネットワークストレージ装置のソリッドステートディスクに前記データを転送することとを含む方法。
JP2023020700A 2017-08-03 2023-02-14 ファブリックを介したnvmエクスプレス Pending JP2023062055A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/668,314 2017-08-03
US15/668,314 US10785301B2 (en) 2017-08-03 2017-08-03 NVM express over fabrics
JP2020505813A JP7282738B2 (ja) 2017-08-03 2018-08-01 ファブリックを介したnvmエクスプレス
PCT/IB2018/000991 WO2019025862A1 (en) 2017-08-03 2018-08-01 NON-VOLATILE MEMORY EXPRESS IN SWITCHING MATRICES

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2020505813A Division JP7282738B2 (ja) 2017-08-03 2018-08-01 ファブリックを介したnvmエクスプレス

Publications (1)

Publication Number Publication Date
JP2023062055A true JP2023062055A (ja) 2023-05-02

Family

ID=63878713

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2020505813A Active JP7282738B2 (ja) 2017-08-03 2018-08-01 ファブリックを介したnvmエクスプレス
JP2023020700A Pending JP2023062055A (ja) 2017-08-03 2023-02-14 ファブリックを介したnvmエクスプレス

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2020505813A Active JP7282738B2 (ja) 2017-08-03 2018-08-01 ファブリックを介したnvmエクスプレス

Country Status (5)

Country Link
US (2) US10785301B2 (ja)
EP (1) EP3662642B1 (ja)
JP (2) JP7282738B2 (ja)
CN (3) CN109388336A (ja)
WO (1) WO2019025862A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10785301B2 (en) * 2017-08-03 2020-09-22 Toshiba Memory Corporation NVM express over fabrics
US11860782B2 (en) 2019-08-13 2024-01-02 Neuroblade Ltd. Compensating for DRAM activation penalties
US20220019370A1 (en) * 2020-07-16 2022-01-20 Micron Technology, Inc. Partial zone memory unit handling in a zoned namespace of a memory device
EP4229511A1 (en) 2020-10-16 2023-08-23 Neuroblade, Ltd. Memory appliances for memory intensive operations

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19534527C2 (de) * 1995-09-08 1999-04-29 Francotyp Postalia Gmbh Verfahren zur Erhöhung der Manipulationssicherheit von kritischen Daten
JP4076316B2 (ja) 2000-09-08 2008-04-16 株式会社日立製作所 不揮発性キャッシュメモリを用いたデータ書き込みシステム
US6738870B2 (en) * 2000-12-22 2004-05-18 International Business Machines Corporation High speed remote storage controller
US7254668B1 (en) * 2002-10-28 2007-08-07 Sandisk Corporation Method and apparatus for grouping pages within a block
US7197662B2 (en) * 2002-10-31 2007-03-27 Ring Technology Enterprises, Llc Methods and systems for a storage system
US6795850B2 (en) * 2002-12-13 2004-09-21 Sun Microsystems, Inc. System and method for sharing memory among multiple storage device controllers
TW591372B (en) * 2003-05-15 2004-06-11 High Tech Comp Corp Power control method of portable electronic device, portable electronic device and electronic system
US7334089B2 (en) * 2003-05-20 2008-02-19 Newisys, Inc. Methods and apparatus for providing cache state information
US7389393B1 (en) 2004-10-21 2008-06-17 Symantec Operating Corporation System and method for write forwarding in a storage environment employing distributed virtualization
JP4736593B2 (ja) * 2005-07-25 2011-07-27 ソニー株式会社 データ記憶装置、データ記録方法、記録及び/又は再生システム、並びに、電子機器
US20080126357A1 (en) * 2006-05-04 2008-05-29 Wambo, Inc. Distributed file storage and transmission system
CN101118460A (zh) * 2006-05-10 2008-02-06 马维尔国际贸易有限公司 具有高功率和低功率处理器以及线程转移的系统
JP4245021B2 (ja) 2006-09-06 2009-03-25 日本電気株式会社 ストレージ装置、ストレージシステム、ストレージ装置の制御方法
US8706968B2 (en) * 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
CN101681282A (zh) * 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
US7554855B2 (en) * 2006-12-20 2009-06-30 Mosaid Technologies Incorporated Hybrid solid-state memory system having volatile and non-volatile memory
US8533847B2 (en) * 2007-05-24 2013-09-10 Sandisk Il Ltd. Apparatus and method for screening new data without impacting download speed
JP5229869B2 (ja) * 2008-01-09 2013-07-03 独立行政法人産業技術総合研究所 不揮発性光メモリ素子及びその動作方法
US7813212B2 (en) * 2008-01-17 2010-10-12 Mosaid Technologies Incorporated Nonvolatile memory having non-power of two memory capacity
US8549222B1 (en) * 2008-02-12 2013-10-01 Netapp, Inc. Cache-based storage system architecture
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
WO2012129191A2 (en) * 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
KR20130078455A (ko) * 2011-12-30 2013-07-10 삼성전자주식회사 메모리 특성 정보를 저장하는 반도체 메모리 장치, 이를 포함하는 메모리 모듈, 메모리 시스템 및 반도체 메모리 장치의 동작방법
US9417998B2 (en) * 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US8554963B1 (en) 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
US9237195B2 (en) * 2012-04-27 2016-01-12 Netapp, Inc. Virtual storage appliance gateway
US9122401B2 (en) 2012-08-23 2015-09-01 Apple Inc. Efficient enforcement of command execution order in solid state drives
US9164929B2 (en) 2013-01-03 2015-10-20 International Business Machines Corporation False power failure alert impact mitigation
US9311110B2 (en) * 2013-07-08 2016-04-12 Intel Corporation Techniques to initialize from a remotely accessible storage device
US9235521B2 (en) * 2013-07-22 2016-01-12 Avago Technologies General Ip (Singapore) Pte Ltd Cache system for managing various cache line conditions
US9251064B2 (en) 2014-01-08 2016-02-02 Netapp, Inc. NVRAM caching and logging in a storage system
US10635316B2 (en) * 2014-03-08 2020-04-28 Diamanti, Inc. Methods and systems for data storage using solid state drives
US9866635B2 (en) * 2014-03-26 2018-01-09 Rockwell Automation Technologies, Inc. Unified data ingestion adapter for migration of industrial data to a cloud platform
KR20150119547A (ko) * 2014-04-15 2015-10-26 에스케이하이닉스 주식회사 반도체 장치, 이를 포함하는 반도체 메모리 장치 및 메모리 시스템
US9591077B2 (en) * 2014-07-01 2017-03-07 Gogo Llc Content integrity checks
US9933950B2 (en) * 2015-01-16 2018-04-03 Sandisk Technologies Llc Storage operation interrupt
US10061743B2 (en) 2015-01-27 2018-08-28 International Business Machines Corporation Host based non-volatile memory clustering using network mapped storage
US9525737B2 (en) * 2015-04-14 2016-12-20 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM cache in a highly-distributed shared topology with direct memory access capable interconnect
US10009438B2 (en) * 2015-05-20 2018-06-26 Sandisk Technologies Llc Transaction log acceleration
KR102430187B1 (ko) 2015-07-08 2022-08-05 삼성전자주식회사 RDMA NVMe 디바이스의 구현 방법
US10476958B2 (en) * 2015-12-16 2019-11-12 Toshiba Memory Corporation Hyper-converged flash array system
US10725677B2 (en) * 2016-02-19 2020-07-28 Sandisk Technologies Llc Systems and methods for efficient power state transitions
US20180059945A1 (en) * 2016-08-26 2018-03-01 Sandisk Technologies Llc Media Controller with Response Buffer for Improved Data Bus Transmissions and Method for Use Therewith
US10679722B2 (en) * 2016-08-26 2020-06-09 Sandisk Technologies Llc Storage system with several integrated components and method for use therewith
US20180059976A1 (en) * 2016-08-26 2018-03-01 Sandisk Technologies Llc Storage System with Integrated Components and Method for Use Therewith
US10732893B2 (en) * 2017-05-25 2020-08-04 Western Digital Technologies, Inc. Non-volatile memory over fabric controller with memory bypass
US10785301B2 (en) * 2017-08-03 2020-09-22 Toshiba Memory Corporation NVM express over fabrics

Also Published As

Publication number Publication date
JP7282738B2 (ja) 2023-05-29
US20190045009A1 (en) 2019-02-07
CN111149341B (zh) 2022-07-29
WO2019025862A1 (en) 2019-02-07
US10785301B2 (en) 2020-09-22
EP3662642A1 (en) 2020-06-10
CN115174604A (zh) 2022-10-11
CN115174604B (zh) 2024-01-02
JP2020529678A (ja) 2020-10-08
EP3662642B1 (en) 2023-06-07
US20200382595A1 (en) 2020-12-03
CN109388336A (zh) 2019-02-26
CN111149341A (zh) 2020-05-12

Similar Documents

Publication Publication Date Title
JP2023062055A (ja) ファブリックを介したnvmエクスプレス
US10079889B1 (en) Remotely accessible solid state drive
EP3754511A1 (en) Multi-protocol support for transactions
US10609150B2 (en) Lock management method in cluster, lock server, and client
US9712619B2 (en) Virtual non-volatile memory express drive
US11929927B2 (en) Network interface for data transport in heterogeneous computing environments
KR102513920B1 (ko) 비휘발성 스토리지 시스템 및 비휘발성 스토리지 장치들을 위한 데이터 스토리지 액세스 프로토콜
JP5789894B2 (ja) バッファマネージャおよびメモリ管理方法
US10951741B2 (en) Computer device and method for reading or writing data by computer device
KR20140112717A (ko) 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법
WO2009015549A1 (fr) Système à mémoire cache partagée, son procédé de mise en œuvre et son logiciel de mise en œuvre
CN113424147A (zh) 用于流式传输存储设备内容的系统和方法
US10805392B2 (en) Distributed gather/scatter operations across a network of memory nodes
WO2022218160A1 (zh) 一种数据访问系统、方法、设备以及网卡
CN110727617A (zh) 同时通过PCIe EP和网络接口访问双线SSD装置的方法和系统
TW201202946A (en) Multi-level port expansion for port multipliers
JP2020529678A5 (ja)
CA2829554A1 (en) Data transferring apparatus, data transmission system and data transmitting method
WO2023103704A1 (zh) 数据处理方法、存储介质和处理器
CN102843435A (zh) 一种在集群系统中存储介质的访问、响应方法和系统
CN110471627B (zh) 一种共享存储的方法、系统及装置
US10289550B1 (en) Method and system for dynamic write-back cache sizing in solid state memory storage
US20220253238A1 (en) Method and apparatus for accessing solid state disk
US20130061015A1 (en) Access control apparatus and access control system
CN113377288A (zh) 硬件队列管理系统、方法、固态硬盘控制器及固态硬盘

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230221

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230221

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240216

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240528