JP2021047863A - ストレージ装置及びメッセージトンネリングのためのシステム並びにその方法 - Google Patents

ストレージ装置及びメッセージトンネリングのためのシステム並びにその方法 Download PDF

Info

Publication number
JP2021047863A
JP2021047863A JP2020156648A JP2020156648A JP2021047863A JP 2021047863 A JP2021047863 A JP 2021047863A JP 2020156648 A JP2020156648 A JP 2020156648A JP 2020156648 A JP2020156648 A JP 2020156648A JP 2021047863 A JP2021047863 A JP 2021047863A
Authority
JP
Japan
Prior art keywords
message
host
data
storage device
tunneled
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
JP2020156648A
Other languages
English (en)
Inventor
ピー. カチェア ラムダス
P Kachare Ramdas
ピー. カチェア ラムダス
グス ツヴィ
Guz Zvi
グス ツヴィ
ティ. ファム サン
T Pham Son
ティ. ファム サン
シャイヤステ アナヒタ
Shayesteh Anahita
シャイヤステ アナヒタ
学 斌 姚
Xuebin Yao
学 斌 姚
プレム ピント オスカー
Prem Pinto Oscar
プレム ピント オスカー
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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
Priority claimed from US16/794,217 external-priority patent/US11030129B2/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2021047863A publication Critical patent/JP2021047863A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】NVMeのようなコンピュータのプロトコルを使用するメッセージトンネリングのためのシステム及びその方法を提供する。【解決手段】データプロトコルを通じてホスト装置と通信するよう構成されたホストインターフェース回路と、データプロトコルのデータメッセージに応答し、データを格納するよう構成されたストレージエレメントと、トンネリングされたメッセージに応答し1つ以上の命令語を実行するよう構成されたオン・ボードプロセッサを有し、ホストインターフェース回路は、トンネリングコマンドがデータメッセージ内に埋め込まれているか否かを検出し、データメッセージからトンネリングされたメッセージのアドレス情報を抽出し、トンネリングされたメッセージのアドレス情報を介して、ホスト装置のメモリに格納されたトンネリングされたメッセージを検索し、トンネリングメッセージをオン・ボードプロセッサに伝送するようさらに構成される。【選択図】 図2

Description

本発明は、コンピュータ通信に関し、特に、非(不)揮発性メモリエクスプレス(NVMe:Non−Volatile Memory express)のようなコンピュータのプロトコルを使用するメッセージトンネリングのためのシステム及び方法に関する。
現代の情報技術(IT)基盤施設(infrastructures)で、比較的大量のデータが多様な装置及びプロセスによって生成される。
これらのデータ発生機器の一部の例は、スマートマシン、自律走行車両、ソーシャルネットワーク、及びモノのインターネット(IoT)装置等を含むが、これらに限定されない。
また、多様な人工知能(AI)とマシンラーニング技術を使用して収集されたデータを効率的に分析、処理し、これを活用してアプリケーションの効率性と生産性を向上させることができる。
上述のような処理及び分析のため、比較的大量の生データ(ローデータ:Raw data)をプロセッサに移動させることは、消費されるエネルギーの量、配置されたコンピュータ、並びにネットワークリソースから費用のかかる側面がある。
したがって、大量の生データを移動させると、ネットワーク帯域幅、プロセッササイクル及びメモリ使用のようなリソースに対する負担が増加するという問題がある。
また、処理するために、大量の生データをサーバへ移動することは、アプリケーションで発生する待機レイテンシを増加させるという問題もある。
米国特許出願公開第20160127468号明細書 米国特許出願公開第20160357698号明細書 米国特許出願公開第20170149897号明細書 国際公開第2019/123447号
本発明は上記従来の大量のデータ移動における問題点に鑑みてなされたものであって、本発明の目的は、非揮発性メモリエクスプレス(Non−Volatile Memory express:NVMe)のようなコンピュータのプロトコルを使用するストレージ装置及びメッセージトンネリングのためのシステム及びその方法を提供することにある。
上記目的を達成するためになされた本発明によるストレージ装置は、データプロトコルを通じてホスト装置と通信するように構成されたホストインターフェース回路と、前記データプロトコルのデータメッセージに応答して、データを格納するように構成されたストレージエレメント(storage element)と、トンネリングされたメッセージに応答して1つ以上の命令語を実行するように構成されたオン・ボードプロセッサと、を有し、前記ホストインターフェース回路は、トンネリングコマンドが前記データメッセージ内に埋め込まれている(enbedding)か否かを検出し、前記データメッセージからトンネリングされたメッセージのアドレス情報を抽出し、前記トンネリングされたメッセージのアドレス情報を介して、前記ホスト装置のメモリに格納された前記トンネリングされたメッセージを検索し、前記トンネリングメッセージを前記オン・ボードプロセッサに伝送するようにさらに構成されることを特徴とする。
上記目的を達成するためになされた本発明によるメッセージトンネリングのためのシステムは、ホストコンピューティング装置と、前記ホストコンピューティング装置と通信するように構成されたストレージ装置と、を有し、前記ホストコンピューティング装置は、プロセッサを含み、前記プロセッサは、前記ストレージ装置からデータを読み書きし、前記ストレージ装置にコマンドをオフロードするように構成され、前記ストレージ装置は、データプロトコルを通じて前記ホストコンピューティング装置と通信するように構成されたホストインターフェース回路と、前記データプロトコルのデータメッセージに応答して、データを格納するように構成されたストレージエレメントと、トンネリングされたメッセージに応答して1つ以上の命令語を実行するように構成されたオン・ボードプロセッサと、を含み、前記ホストインターフェース回路は、トンネリングコマンドが前記データメッセージ内に埋め込まれているか否かを検出し、前記データメッセージからトンネリングされたメッセージのアドレス情報を抽出し、前記トンネリングされたメッセージのアドレス情報を介して、前記ホストコンピューティング装置のメモリに格納された前記トンネリングされたメッセージを検索し、前記トンネリングされたメッセージを前記オン・ボードプロセッサに伝送するようにさらに構成されることを特徴とする。
オン・ボードプロセッサ(及び/又はデータ処理ロジック)は、トンネリングされたメッセージに応答して1つ以上のコマンドを実行したり、特定のデータ処理及び他の動作を実行したりするように構成される。
上記目的を達成するためになされた本発明によるメッセージトンネリングのための方法は、本発明のストレージ装置によるデータプロトコルを通じてリモートプロシージャコール(remote procedure call)をトンネリングする方法であって、ホストコンピューティング装置と前記ストレージ装置との間の通信のために、前記ホストコンピューティング装置に含まれているホストメモリバッファの少なくとも一部を前記ホストコンピューティング装置に割り当てるステップと、トンネリングされたメッセージが前記ホストメモリバッファの前記一部内に格納されるという表示を含むデータメッセージを生成するステップと、前記ストレージ装置に前記データメッセージを伝送するステップと、前記データメッセージを受信すると、前記ストレージ装置は、前記ホストコンピューティング装置から前記トンネリングされたメッセージを読み取るステップと、前記トンネリングされたメッセージに応答して、前記ストレージ装置により1つ以上の命令語を実行するステップと、を有することを特徴とする。
本発明に係るストレージ装置及びメッセージトンネリングのためのシステム並びにその方法によれば、ストレージ装置内で生データを処理することにより、データの移動を減少させることにより、データ分析をより効果的に解決し、増加する生データを計算するのに適している。
また、データの移動を除去して、アプリケーションの応答レイテンシを向上させることができ、大量のデータを読み取り、処理し、フィルタリング、及びその他の縮小作業を介してデータを減少させるデータ分析作業が向上することができる。
本発明の実施形態によるトンネリングデータメッセージを利用するシステムの概略構成を示すブロック図である。 本発明の実施形態によるトンネリングデータメッセージを利用するストレージ装置の概略構成を示すブロック図である。 本発明の実施形態によるホストコンピューティング装置から伝送されたトンネリングデータメッセージとともに使用され得るデータ構造の例を示す図である。 本発明の実施形態による向上されたストレージ装置から伝送されたトンネリングデータメッセージとともに使用され得るデータ構造の例を示す図である。 本発明の実施形態によるコンピュータの通信のための、特にNVMeを利用したメッセージトンネリング方法に基づいて形成された装置を含む情報処理システムの概略構成を示すブロック図である。 本発明の実施形態によるトンネリングデータメッセージを処理する技術を説明するためのフローチャートである。
次に、本発明に係るストレージ装置及びメッセージトンネリングのためのシステム並びにその方法を実施するための形態の具体例を図面を参照しながら説明する。
しかし、本発明は、多くの異なる形態で実現され、本明細書で記述された例としての実施形態に限定されるものとして解釈されてはならない。
むしろ、これらの例としての実施形態は、本発明が徹底で完全になるよう提供され、現在開示した発明の範囲を技術分野に属する通常の技術者に完全に伝えるはずである。
図面では、レイヤーと領域のサイズや相対的なサイズは、明確性のため誇張される。
多様な図面で類似の参照符号は、類似のエレメント(element、エレメント)を示す。
本明細書では、たとえ第1、第2、第3のなどの用語は、多様なエレメント、コンポーネント、領域、レイヤー、及び/又は期間を説明するために使用するが、これらのエレメント、コンポーネント、領域、レイヤー、及び/又は期間は、これらの用語により限定されないと理解されるだろう。
これらの用語は、1つのエレメント、コンポーネント、領域、レイヤー、又は期間を、他のエレメント、コンポーネント、領域、レイヤー、又は期間から区別するために使用する。
したがって、本明細書で第1のエレメントは、コンポーネント、領域、レイヤー、又は期間は、本発明の技術的思想と範囲を逸脱することなく、第2のエレメント、コンポーネント、領域、レイヤー、又は期間と称される。
本明細書で使用する用語は、特定の実施形態を記述するための目的として使用し、本発明を限定する意図として使用しない。
文脈上明らかに別の意味を示していると判定されない限り、単数形は、複数形を含む意図として使用される。
そして「含む」又は「含むが限定されない」の用語は、本明細書に使用される場合には、記述された特徴、数字、ステップ、動作、エレメント、及び/又はコンポーネントの存在を明示するが、1つ以上の他の特徴、数字、ステップ、動作、エレメント、コンポーネント、及び/又はこれらのグループの存在若しくは追加を排除しない。
別の意味で定義されない限り、本明細書で使用するすべての用語(技術的及び科学的用語を含む)は、本発明が属する技術分野における通常の技術者によって一般的に理解されるのと同一の意味を有する。
通常使用される辞書に定義されたこれらの用語は、関連技術のコンテキストから、それらの意味と一致する意味を有するものと解釈されるべきであり、本明細書で明らかに定義されない限り、理想化されたり、過度に形式的な意味で解釈されたりしてはならない。
PCI(Peripheral Component Interconnect)Express(以下、PCIe)は、高速シリアルのコンピュータ拡張バス標準と称する。
PCIeは、比較的高い最大のシステムバススループット(throughput)、比較的少ない入出力(I/O)ピン数及び小さな物理的なフットプリント(physical footprint)、バス装置の性能拡張、エラー検出及びレポートメカニズム(例えば、AER:高度なエラー報告)、並びにネイティブのホットプラグ機能を特徴とする。
PCIe標準は、I/O仮想化(virtualization)のためのハードウェアの支援を提供する。
PCIeは、すべての装置をルートコンプレックス(root complex)(例えば、ホスト)に接続する、別のシリアルリンクが存在するポイントツーポイント(point−to−point)トポロジーに基づいている。
バスプロトコルに関連して、PCIe通信は、一般的にパケットにカプセル化される。
非揮発性メモリ(Non−Volatile Memory:NVM)エクスプレス(Non−Volatile Memory express:NVMe)又はNVMHCI(NVM host controller interface specification)は、PCIeバスを介して接続された非揮発性ストレージ媒体にアクセスするための論理装置のインターフェース仕様として称する。
NVMは、SSD(Solid−State Drive)に使用され得るフラッシュメモリを含む。
中央処理装置(CPUs)、プラットフォーム及びアプリケーション(application)の並列処理を反映して、論理装置インターフェースであるNVMeは、比較的低いレイテンシ(latency)とフラッシュベースのストレージ装置の内部の並列処理機能を提供する。
NVMeは、SCSI(the small computer system interface)又はより具体的には、シリアル接続SCSI、ホストと周辺(peripheral)ターゲットストレージ装置又はシステムとの間でデータを接続・伝送するための標準に対する代替案として機能する。
NVMeは、SSD及びポスト(post)フラッシュメモリベースの技術のようなメディアとともに使用される。
分散コンピューティングで、リモートプロシージャコール(remote procedure call:RPC)は、プロシージャ(サブルーチン)が異なるアドレス空間(通常、共有ネットワーク上の他のコンピュータにおいて)で実行されるようにするコンピュータプログラムを指し、これは、まるでローカルプロシージャコール(local procedure call)か、これと類似のものかのようにコーディングされる。
これは、一般的に、要求−応答メッセージパッシングシステム(request−response message−passing system)を介して実現されるクライアント−サーバの相互作用(interaction)(呼び出し側はクライアント、実行者はサーバ)の形態を示す。
オブジェクト指向プログラミングのパラダイムでは、RPCの呼び出しは、RMI(Remote Method Invocation)として表される。
図1は、本発明の実施形態によるシステムの概略構成を示すブロック図である。
多様な実施形態で、システム100は、ストレージ装置又はストレー媒体(例えば、ハードディスクドライブ、SSD、フラッシュドライブなど)を含み得る。
多様な実施形態では、システム100は、ラップトップ、デスクトップ、ワークステーション、データセンター、クラウド、パーソナルデジタルアシスタント(personal digital assistant)、スマートフォン、タブレット、並びにその他の適切なコンピュータのようなコンピューティング装置、若しくは仮想マシン又は仮想マシン仮想コンピューティング装置によって使用されるか、又は含まれる。
いくつかの情報技術(IT)基盤施設(infrastructures)で、比較的大量のデータが、多様な装置やプロセスによって生成される。
これらのデータ発生器の例としては、スマートマシン、自律走行車両、ソーシャルネットワーク、及びモノのインターネット(IoT)装置が含まれるが、これらに限定されない。
多様な実施形態では、人工知能及び/又はマシンラーニング技術が、収集されたデータを効率的に分析し、それらを利用するために活用され得る。
多様な実施形態で、データを効率的に処理して分析するシステムが、ここに記述される。
いくつかのシステムアーキテクチャ(architecture)では、データは、永続性(persistent)ストレージから、比較的高性能ネットワークを使用してストレージに接続される、比較的高性能サーバへフェッチ(fetch)される。
分析のために、大量の生データをプロセッサに移動すると、大量のエネルギー、配置されたコンピュータ、及びネットワークリソースが使い果たされる。
これらのデータの移動は、ネットワーク帯域幅、CPUサイクル及びCPUメモリなどのリソースに負担を与える可能性がある。
処理するために、比較的大量の生データをサーバに移動すると、アプリケーションと関連付けられたレイテンシが増加する可能性がある。
つまり、増加したレイテンシは、アプリケーションで処理と分析が完了する前に、データがサーバにフェッチされる間に、アプリケーションの処理を遅延させる可能性がある。
図に示した実施形態で、システム100は、ストレージ装置108内で生データを処理することにより、データの移動を減少させようと試みる。
多様な実施形態で、これは、データ分析の使用事例に関する、より効果的な解決策であり得るし、増加する生データを計算するのに適している。
また、データの移動を除去して、アプリケーションの応答レイテンシを向上させることができる。
また、多くの場合、大量のデータを読み取り、処理し、フィルタリング及びその他の縮小作業を介してデータを減少させるデータ分析作業を向上させることができる。
多様な実施形態で、システム100は、ホストコンピューティング装置102を含む。
上述したように、多様な実施形態で、これは、ラップトップ、デスクトップ、ワークステーション、データセンター、クラウド、パーソナルデジタルアシスタント、スマートフォン、タブレット、並びにその他の適切なコンピュータのようなコンピューティング装置、若しくは仮想マシン又は仮想マシンの仮想コンピューティング装置を含む。
多様な実施形態で、ホストコンピューティング装置102は、プロセッサ110(例えば、マザーボード、システム・オン・チップなど)を含むシステム100の一部であり得る。
多様な実施形態で、ホストコンピューティング装置102は、プロセッサ110を含む。
プロセッサ110は、命令語(instruction)又はコマンド(command)を実行し、そうすることで、メモリ116及び/又はストレージ装置108にデータを読み書きするように構成される。
多様な実施形態では、プロセッサ110は、プログラム又はアプリケーション112及びドライバー114のようなソフトウェアを実行する。
一部の実施形態で、ホストコンピューティング装置102は、メモリ116を含む。
これらの実施形態で、メモリ116は、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM))を含む。
他の実施形態で、メモリ116は、NVM(例えば、NAND(not‐AND)又はフラッシュメモリ)を含む。
多様な実施形態で、メモリ116は、データを一時的又は半永続的な形で格納するように構成される。
一部の実施形態で、メモリ116の一部は、ホストメモリバッファ126及び/又はキュー128(例えば、送信キュー(submission queue))として作用する回路を部分的に含むか又は含み得る。
図に示した実施形態で、システム100は、通信経路106を含む。
多様な実施形態では、通信経路106は、ホストコンピューティング装置102とストレージ装置108とを接続するバスやワイヤ(wire)のグループを含む。
多様な実施形態では、通信経路106は、PCIe高速シリアルコンピュータの拡張バスを含む。
上述したのは、ただ1つの例としての実施形態に過ぎず、本発明の技術的思想を限定していないものと理解される。
ホストとストレージ装置と間の通信経路の他の例には、イーサネット(登録商標)、リモートダイレクトメモリアクセス(Remote Direct Memory Access:RDMA)、ファイバーチャネル(Fiber Channel)、SCSI、SATA(Serial Advanced Technology Attachment)、TCP/IP(Transmission Control Protocol/Internet Protocol)、インフィニバンド(Infiniband)などのようなものが含まれるが、これに限定されない。
多様な実施形態で、通信経路106は、データを伝送し、ホストコンピューティング装置102とストレージ装置108は、データメッセージを利用するデータプロトコルを使用してデータを通信する。
多様な実施形態で、これは、NVMHCIS(non−volatile memory host controller interface specification)若しくはNVMeプロトコル又はインターフェースを含む。
上述したものは、ただ1つの例としての実施形態に過ぎず、本発明の技術的思想を限定していないものと理解される。
NVMeプロトコルは、異なるトランスポートプロトコルを通信経路に使用することができ、そのうちのいくつかの例を上述した。
本発明の例としての実施形態は、ホスト装置からストレージ装置にNVMeプロトコルを運ぶのに使用されるトランスポートプロトコルに依存しない可能性がある。
図に示した実施形態で、システム100は、ストレージ装置108を含む。
他の実施形態では、ストレージ装置108は、NVM又はストレージエレメント(element)又はメモリ146を含む。
多様な実施形態で、ストレージエレメント又はメモリ146は、データを永続的、半永続的、又は実質的に永続的な形態で格納するように構成される。
多様な実施形態では、ストレージ装置108は、ホストインターフェース回路142を含む。
ホストインターフェース回路142は、データメッセージを利用するデータプロトコルを通じてホストコンピューティング装置102と通信するように構成される。
図に示した実施形態で、ストレージ装置108は、オン・ボードプロセッサ144及び/又はデータ処理の個別ロジックを含む。
これらの実施形態では、ストレージ装置108は、データを格納するだけでなく、動作を実行したり(少なくとも部分的に)、データを処理したりすることができるという点で、改善された(enhanced)又はスマートなストレージ装置と称される。
上述したように、RPCは、第2の装置が第2の装置上で、リモートで特定のプロシージャを実行すること、を第1の装置が要求するプロシージャ、サブルーチン、又は方法の呼び出しの形態である。
プロシージャは、リモートで実行されるとき、第2の装置のローカルデータにアクセスすることができ、そうすることで、第1の装置レイテンシー、より効率的に作業することができる。
RPCは、一般的に、入力パラメータ(parameter)を第1の装置側の呼び出されたプロシージャにパッケージ化するメカニズムを含む。
図に示した実施形態で、リモートプロシージャコールは、ローカル(例えば、同じシステム100又はシャーシ(chassis)内で)で発生し得る。
また、図に示した実施形態で、呼び出し及びサービング(serving)の装置は、物理及び仮想アドレス空間の両方によって分離される。
多様な実施形態で、本明細書に説明した技術は、ネットワークを通じてリモートで実現される。
たとえば、NVMeローカル及び「NVMe−of」(NVMe over Fabrics)は、伝送バックエンド(backend)を区別せず、ホストオペレーティングシステム(OS)又はホスト装置にブロック装置のインターフェースを提供する2つのこのような実施形態である。
NVMeトランスポートプロトコルの一部の例は、イーサネット(登録商標)、RDMA、ファイバーチャネル、TCP/IP、インフィニバンド、又はNVMeプロトコルを伝達するプロプライエタリ(proprietary)な伝送方法を含むが、これに限定されない。
いくつかの例で、RPCプロトコルは、通信のためのTCP(Transmission Control Protocol)及びIP(Internet Protocol)のようなネットワークプロトコルスタックを使用して実現される。
図に示した実施形態で、RPCメッセージは、PCIeのようなローカル通信経路106を介して伝送される。上述したように、PCIeは、ネットワークプロトコルでなければならないことはなく、エンド装置(End Deivce)及び周辺装置をホストに接続するためホストサーバ又はシャーシ内で使用されるバスインターフェースであり得る。
多様な実施形態では、PCIeを介したRPCトンネリングは、ホストコンピューティング装置102で実行されるソフトウェアスタックを、ホストコンピューティング装置102に直接接続されたストレージ装置108で管理されるサービスに接続するために使用される。
このメカニズムは、ホストスタックに対する構成を変更せず、特定のアプリケーションの機能がストレージ装置108(例えば、NVMe SSD)にオフロード(offload)及び加速されるようにする。
NVMeを用いたメッセージトンネリングのための開示されたシステムは、ホストとSSDとの間にRPC以外の任意の他のアプリケーションレベルのプロトコルが実現されるようにする。
RPCは、単に1つの例である。
しかし、本明細書で説明するトンネリングメカニズムは、ホストとSSDとの間に使用された特定の実現にアグノスティック(agnostic)であり得る。
また、本明細書に記述した両方向(bi−directional)、全二重(full−duplex)、及び高性能メッセージトンネリング技術の上に使用されるシステム100で実現された、多様な標準、カスタム(custom)、及び/又はプロプライエタリ(proprietary)のプロトコルで有り得る。
図に示した実施形態で、システム100は、ホストコンピューティング装置102とストレージ装置108との間のリモートプロシージャコールを実行するように構成される。
これらの実施形態で、ホストコンピューティング装置102は、ストレージ装置108がストレージ装置108によって格納されたデータ182の動作を実行することを、要求するように構成される。
これらの実施形態で、ストレージ装置108とホストコンピューティング装置102との間のデータ182の伝送は、回避されるか、又は少なくとも減少される。
上述したように、これらの減少は、消費電力及び帯域幅を節約することができ、レイテンシ又は他のコンピュータのリソースの使用を減らすことができる。
図に示した実施形態で、ホストコンピューティング装置102とストレージ装置108は、データプロトコル、より具体的にはプロトコルのデータメッセージ内で、それらの通信又はメッセージをエンコーディング、エンベッディング(embedding)又はトンネリングできる。
これらの実施形態で、RPCは、データメッセージのプロトコル及び規則(ルール)に従う。
たとえば、RPCは、明らかに、又は既知の通りなら(実際にはそうではないが)NVMeデータメッセージであるかのように見えるが、RPCは、データメッセージ内にエンベッディングされて、RPCの代わりにデータメッセージであるかのように見える可能性がある。
多様な実施形態では、データメッセージのフォーマットは、後述する図3及び図4と関連して説明することができる。
上述したのは、ただ1つの例としての実施形態に過ぎず、本発明の技術的思想を限定していないものと理解される。
このような実施形態では、通信経路106は、データメッセージ194(実際には、トンネリングされたRPC)及び実際のデータメッセージに192又はデータの伝送をすべて含む。
このような実施形態で、メッセージング(例えば、PCIe)トンネルは、ホストコンピューティング装置102とストレージ装置108との間でメッセージを伝送する方法を提供する。
多様な実施形態で、メッセージングトンネリングは、データメッセージを解釈していない可能性があるから、(実際に又は単に表面積か否か)、実際のメッセージの内容についてアグノスティックであり得る。
これらの実施形態で、トンネルメッセージは、通信経路106の他側に伝送されるメッセージングトンネルに対する、ただもう1つのデータブロックとして示される。
多様な実施形態では、トンネリングを実行する多数の形態又は技術が考慮される。
図2は、本発明の実施形態によるトンネリングデータメッセージを利用するストレージ装置の概略構成を示すブロック図である。
多様な実施形態で、システム200は、いくつかの実施形態では、スマートストレージ装置又は向上されたストレージ装置と称されるストレージ装置を含む。
多様な実施形態で、システム200は、トンネリングプロトコルを通じてホストコンピューティング装置と通信し、ホストコンピューティング装置の要求に応じてデータに対する演算を行う。
多様な実施形態で、システム200は、トランスポートレイヤー(transport layer)のインターフェース回路210を含む。
多様な実施形態で、トランスポートレイヤーのインターフェース回路210は、通信経路やトランスポートレイヤー(例えば、イーサネット(登録商標)RDMA、TCP/IP)を通じてホストコンピューティング装置と通信するように構成される。
図に示した実施形態で、システム200は、1つ以上のコマンドの送信キュー(以下、SQ)211を含む。
多様な実施形態で、各々のSQ211は、システム200によって実行を待っているコマンドを格納するように構成される。
システム200は、コマンドSQがSSD装置側に位置される「NVMe−oF」ベースのシステムを示す。
このシステムの構造は、また、RDAS(Remote Direct Attached Storage)と称される。
DAS(Direct Attached Storage)システムの構造で、SQは、SSD装置側ではなく、ホストシステムのメモリに保持される。
いずれの場合にも、本発明の実施形態は、基本的なシステムの構造だけでなく、SQの位置にアグノスティックである。
図に示した実施形態で、システム200は、ホストインターフェース回路212を含む。
これらの実施形態で、ホストインターフェース回路212は、データメッセージを利用するデータプロトコル(例えば、NVMe)を通じてホストコンピューティング装置と通信するように構成される。
このような実施形態で、ホストインターフェース回路212は、ホスト装置(図示せず)からストレージアクセス(access)コマンド(例えば、読み取り又は書き込み)を受信し、そのようなコマンドが(成功裏に、又はそうではなくても)処理されたとき、ホスト装置に応答するように構成される。
一般的に、ストレージアクセスコマンドは、読み取り/書き込み要求のコマンド又はメッセージを含み、一度受け入れられると、例えば、システム200がホストに読み取り/書き込み応答のコマンド又はメッセージを伝送することにより、システム200によってストレージアクセスコマンドが履行及び/又は応答される。
いくつかの実施形態で、ホストインターフェース回路212は、トンネリング、コマンドメッセージ、又はトンネリングコマンドがデータメッセージ内に埋め込まれているか否かを感知するように構成される。
後述するように、これらの実施形態で、ホストインターフェース回路212は、トンネリングデータメッセージから情報を抽出し、トンネリングデータメッセージをオン・ボードプロセッサ216及び/又はデータ処理ロジックに伝送するように構成される。
図に示した実施形態で、システム200は、メッセージインターフェース回路214を含む。
多様な実施形態で、メッセージインターフェース回路214は、トンネリングデータメッセージを処理し、トンネリングデータに関連付けられている必要な情報をオン・ボードプロセッサ216及び/又はデータ処理ロジックに提供するように構成される。
図に示した実施形態で、システム200は、オン・ボードプロセッサ216を含む。
また、オン・ボードプロセッサの代わりに、又はそれに加えて、ロジックゲート及びステートマシン(state machine)などのような別のデータ処理ロジックを含み得る。
多様な実施形態で、オン・ボードプロセッサ216及び/又はデータ処理ロジックは、トンネリングされたコマンド又はトンネリングのデータメッセージに応答して1つ以上の動作を実行するように構成される。
図に示した実施形態で、システム200は、変換レイヤー(Translation Layer)回路218を含む。
多様な実施形態で、これはフラッシュ変換レイヤー(FTL)を含む。
しかし、上述されたのは、ただ1つの例としての実施形態に過ぎず、本発明の技術的思想を限定していないものと理解される。
多様な実施形態で、変換レイヤー回路218は、永続性メモリ(persistent memory)又はストレージエレメント220のローレベル(low level)の管理を実行するように構成される。
多様な実施形態で、これは、データをストレージエレメント220に書きこみ(又はいくつかの技術の観点から「プログラム」し)、書き込みがストレージエレメント220全体で十分、均一に発生するかを確認するためにウェアレベリング(wear leveling)を行い、メタデータ及び/又はエラー訂正コードを生成し、ストレージエレメント220内で有効でない貯蔵場所を再活用(recycling)するガベージコレクション(garbage collection)を実行することを含む。
多様な実施形態で、変換レイヤー回路218は、論理アドレスブロックの変換を実行する。
上述されたのは、ただ1つの例としての実施形態に過ぎず、本発明の技術的思想を限定していないものと理解される。
図に示した実施形態で、システム200は、ストレージエレメント220を含む。
これらの実施形態で、ストレージエレメント220は、データを格納するように構成される。
多様な実施形態で、ストレージエレメント220は、NANDストレージ、強磁性(ferromagnetic)ストレージ、SSDなどのような1つ以上のストレージ技術を含む。
図に示した実施形態で、ストレージは、例示のためにソリッド・ステート・ストレージとして説明する。
上述されたのは、ただ1つの例としての実施形態に過ぎず、本発明の技術的思想を限定していないものと理解される。
多様な実施形態で、ストレージエレメント220は、割り当てられた容量222を有するか、又は実際にデータを格納する部分を含み得る。
ストレージエレメント220は、割り当てられていない容量224を有するか、又はデータを自由に格納できる部分を含む。
多様な実施形態で、ストレージエレメント220は、オン・ボードプロセッサ216及び/又はデータ処理ロジックによって実行されるアプリケーション(app)又はマイクロサービス(総括的に、プロシージャ)を格納する空間又は部分226を含む。
多様な実施形態で、このようなプロシージャ、方法及び/又はアプリケーションは、ホストコンピューティング装置によってリモートで呼び出される。
それに応答して、オン・ボードプロセッサ216及び/又はデータ処理ロジックは、ストレージエレメント220に格納された及び/又はホストコンピューティング装置によって提供されたデータを使用する動作を実行し、出力データをストレージエレメント220又はホストコンピューティング装置に返す。
上述したのは、ただ1つの例としての実施形態に過ぎず、本発明の技術的思想を限定していないものと理解される。
一実施形態で、ホストコンピューティング装置が、メッセージ(例えば、RPC)をストレージ装置又はシステム200に伝送するプロセスの一部として、メッセージは、まず、ホストメモリから生成される。
多様な実施形態で、ホストコンピューティング装置は、メッセージへのポインタとメッセージのサイズをNVMeドライバーに伝達する。
NVMeドライバーは、トンネリングされたメッセージ(例えば、「tnl_msg_send」)コマンドを生成し、これをコマンドSQ211に配置する。
その後、ホストコンピューティング装置は、例えば、「tnl_msg_send」NVMeコマンドを発行することにより、メッセージが待っていることをストレージ装置又はシステム200に通知(notify)する。
多様な実施形態で、ストレージ装置又はシステム200は、該当する特定のSQ211を選択するか、又は読み取ることができ、プロトコルに応じて、その特定のトンネリングコマンドを実行することができる。
多様な実施形態で、システム200は、まず、トンネリングされたメッセージ又はコマンドをホストメモリからフェッチする。
上述したように、実際のトンネリングされたメッセージは、通信媒体(例えば、NVMe)によって予想されるように、データメッセージのプロトコルに現われるか、又は現われ得る。
図に示した実施形態で、ホストインターフェースレイヤー(HIL)又は回路212は、フェッチされた(表面的には)データメッセージを解釈する。
これらの実施形態で、ホストHIL又は回路(以下、HIL)212は、メッセージがトンネリングコマンド(たとえば、「tnl_msg_send」)であることを認識する。
多様な実施形態で、HIL212は、ホストメモリからメッセージデータをフェッチするために、コマンドからメッセージ、アドレス、及びメッセージのサイズの値を抽出及び使用する。
いくつかの実施形態で、HIL212は、また、フェッチされたメッセージを順番にメッセージインターフェース回路214に伝達するために、コマンドからメッセージシーケンス番号フィールドを抽出する。
多様な実施形態で、一度メッセージが正常にフェッチされると、HIL212は、コマンド完了エントリ(Completion Entry:CE)をホストメモリの適切なコマンド完了キュー(CQ)に配置する。
多様な実施形態で、HIL212は、フェッチされたメッセージのメッセージシーケンス番号とメッセージチャネル識別子(ID)を、そのCEに配置する。
いくつかの実施形態で、コマンドCEがホストに掲示(post)された後、HIL212は、CEがCQ内に存在することを示すために、割り込みのような信号をホストに伝送する。
図3は、本発明の実施形態によるホストコンピューティング装置から伝送されたトンネリングデータメッセージとともに使用され得るデータ構造の例を示す図である。
多様な実施形態で、これらのデータ構造(300及び301)は、ホストコンピューティング装置からストレージ装置にメッセージをトンネリングするために用いられる。
図に示した実施形態で、データ構造300は、例えば、「tnl_msg_send」コマンド又はトンネリングメッセージの伝送コマンドというベンダーにより定義されたNVMeコマンドの例としてのレイアウトを図示する。
上述したように、データ構造300は、NVMeプロトコルのフォーマットに従うことができるが、ストレージ装置に対するコマンドを含む。
図に示した実施形態では、データ構造300は、SSD装置による実行中に、NVMeコマンドを独自に識別するコマンドID(CID)310を含む。
図に示した実施形態で、データ構造300は、コマンドに関連付けられたデータの伝送のためにPRP(physical region page)又はSGL(scatter gather list)が使用されるか否かを示す、データ伝送のためのフィールドPRP又はSGL(PSDT)312を含む。
図に示した実施形態では、データ構造300は、コマンドのタイプを示すOPC(opcode)フィールド314(例えば、「tnl_msg_send」)を含む。
図に示した実施形態で、データ構造300は、データがストレージ装置に使用されるように格納される物理メモリページへのポインタを含む物理的なPRP又はPRP1フィールド316を含む。
図に示した実施形態で、データ構造300は、メッセージの長さを示すメッセージの長さフィールド320を含む。
データ構造300は、またメッセージチャネルID322とメッセージシーケンス番号324フィールドを含む。
上述したように、HIL212は、SQ211からメッセージを検索する。
OPC314を介して、HIL212は、これがメッセージのトンネリングコマンドであると決定する。
その後、HIL212は、ホストメモリからメッセージをフェッチするためにメッセージのアドレス(例えば、PRP1316、PSDT312)、及びメッセージサイズの値(例えば、フィールド(322、320)を使用する。
メッセージインターフェース回路214は、メッセージシーケンス番号フィールド324を使用して、メッセージをアプリケーションレイヤーのメッセージを処理するストレージ装置のファームウェア又はハードウェアに適切な順序で伝達する。
図に示した実施形態で、データ構造301は、「tnl_msg_send」コマンドと関連付けられたCEの例としてのレイアウトを含む。
これらの実施形態で、データ構造301は、CEとコマンド(例えば、データ構造300)をマッチングさせるためにメッセージチャネルID322、及びメッセージシーケンス番号324フィールドを含む。
多様な実施形態で、データ構造301は、関連付けられているコマンドが発行されたSQを示す送信キューID(SQID)フィールド332を含む。
これは、関連付けられたSQに対する現在のポインタを示すSQヘッドポインタ(SQ Header Pointer:SQHD)フィールド334である。
多様な実施形態で、データ構造301は、状態と位相タグ(STS)(Status and Phase Tag)フィールド336、及びCIDフィールド310を含む。
上述したように、多様な実施形態で、一度メッセージが伝送されると、HIL212は、データ構造301又はCEを生成する。
HIL212は、CEをホストメモリの適切なコマンドCQに配置する。
そうしてから、HIL212は、CEに配置されたことを表示するためにホストに割り込みを送る。
図2に示すように、ホスト(例えば、NVMe)ドライバーは、ストレージ装置200がホストコンピューティング装置にメッセージを伝送するためのメカニズムを提供するように構成される。
一実施形態で、ホストドライバーは、多数の受信コマンド(例えば、「NVMe tnl_msg_recv」コマンド)をストレージ装置200に事前に発行する。
これらの実施形態で、これは、特定の数の受信コマンドをまだ処理していない状態に保つ。
これらの実施形態で、ストレージ装置200は、ホストコンピューティング装置にメッセージを伝送するときは、そのまだ処理されていない状態のNVMe受信コマンドのうちいずれか1つを完了する。
上述したものは、ただ1つの例としての実施形態に過ぎず、本発明の技術的思想を限定していないものと理解される。
多様な実施形態で、ホストコンピューティング装置のドライバーは、まず、ホストメモリにバッファを割り当てる。
これらの実施形態で、割り当てられたバッファへのポインタとバッファのサイズを含むトンネリングメッセージの受信コマンドを生成する。
いくつかの実施形態で、ドライバーは、1つのサイズのバッファ又は他のサイズのバッファを割り当てる。
多様な実施形態で、また、メッセージチャネルIDをコマンドに追加することができる。
上述したように、多様な実施形態で、ホストは、生成されたコマンドをSQ(例えば、NVMe)のうち、いずれか1つに配置し、これは完了したことをストレージ装置200に通知する。
いくつかの実施形態で、例えば、「NVMe−oF」システムにおいて、ホストコンピューティング装置は、このアラートを提供していない可能性があり、むしろ、ホストコンピューティング装置は、コマンドをストレージ装置200に直接伝送する。
このような実施形態で、ある時点で、ストレージ装置200のHIL回路212は、実行のためのコマンドを選択する。
コマンド実行の一部として、(トランスポートレイヤーインターフェース210を介して)ストレージ装置200は、トンネリングコマンド(たとえば、「tnl_msg_recv」)をフェッチすることができる。
多様な実施形態で、フェッチされたコマンドは、ストレージ装置200がホストにメッセージを伝送するまでに、該当するコマンドが処理されていない状態を維持することを示せる。
発行された処理されていない状態のコマンドの数は、利用可能なホストバッファメモリ及び/又はホストコンピューティング装置が、与えられた時間に受信するように構成されたメッセージの最大の数に依存する。
そのようなまだ処理されていないコマンドの数は、ストレージ装置200によって伝送されるメッセージの数を限定するために、ホストコンピューティング装置によるフロー制御(flow control)メカニズムとして使用される。
多様な実施形態では、ストレージ装置200は、ホストコンピューティング装置にメッセージを伝送するときに、処理されていない受信コマンドのうちいずれか1つを利用することができる。
これらの実施形態で、ストレージ装置200は、メッセージをホストメモリに伝送するためにホストバッファメモリへのポインタを使用する。
多様な実施形態で、メッセージインターフェース回路214は、メッセージの長さがコマンドに表示されたメッセージバッファサイズ内であるか否かを判定するように構成される。
このような実施形態で、メッセージが伝送された後、HIL回路212は、そのコマンドに対するCEを生成する。
HIL回路212は、メッセージチャネルID322、メッセージのシーケンス番号324及びメッセージの長さ320フィールドをCEに配置する。
HIL回路212は、その後、CEをホストメモリの適切なコマンドCQに配置する。
多様な実施形態で、上述したように、ストレージ装置200は、メッセージ信号割り込み(MSI:Message Signaled Interrupt)又は類似の信号のような割り込みをホストコンピューティング装置に伝送する。
多様な実施形態で、ホストコンピューティング装置のドライバーは、トンネリングコマンドCEが受信されたことを認識すると、ホストコンピューティング装置のドライバーは、CEからメッセージチャネルID322、メッセージのシーケンス番号324、及びメッセージの長さ320を抽出する。
いくつかの実施形態で、ホストメッセージトンネリングソフトウェアは、その情報を利用して、受信したメッセージを順番にホストシステムソフトウェアスタックの上位(upper)レイヤーのソフトウェアに伝達する。
多様な実施形態で、ストレージ装置200がホストコンピューティング装置にメッセージを伝送するために利用可能なオープンメッセージバッファの数を増加するためには、ホストドライバーは、追加のトンネリングメッセージの受信(例えば、「tnl_msg_recv」)コマンドを周期的に発行する。
上述したものは、ただ1つの例としての実施形態に過ぎず、本発明の技術的思想を限定していないものと理解される。
図4は、本発明の実施形態による向上されたストレージ装置から伝送されたトンネリングデータメッセージとともに使用され得るデータ構造の例を示す図である。
多様な実施形態で、このデータ構造(400及び401)は、ストレージ装置200からホストコンピューティング装置にメッセージをトンネリングするために使用される。
図に示した実施形態で、データ構造400は、例えば「tnl_msg_recv」又はトンネリングメッセージ受信というベンダー定義されたNVMeコマンドの例としてのレイアウトを示す。
上述したように、データ構造400は、データメッセージプロトコルのフォーマットに従うことができるが、ストレージ装置に対するコマンドを含み得る。
図に示した実施形態で、データ構造400は、SSD装置による実行中に、NVMeコマンドを独自に識別するCID410を含む。
図に示した実施形態で、データ構造400は、PRP又はSGLがコマンドに関連付けられたデータの伝送に使用されるかを表すフィールドPSDT412を含む。
図に示した実施形態で、データ構造400は、コマンドのタイプを示すOPCフィールド414(例えば、「tnl_msg_recv」)を含む。
図に示した実施形態で、データ構造400は、ストレージ装置に200によって使用するためにデータが格納される物理メモリページへのポインタを含むPRP又はPRP1フィールド416を含む。
データ構造400は、またメッセージチャネルID422フィールドを含む。
図に示した実施形態で、データ構造400は、メッセージと関連付けられたバッファの割り当てられたサイズを表すメッセージバッファサイズフィールド426を含む。
上述したように、ホストドライバーは、データ構造400又はトンネリング受信メッセージ(「tnl_msg_recv」)コマンドを生成する。
次に、ホストドライバーは、生成されたコマンドをSQに配置する。
ストレージ装置200は、SQからトンネリング受信メッセージコマンドをフェッチする。
ストレージ装置200がホスト装置と通信するとき、ストレージ装置200は、データ構造400からホストバッファメモリのポインタを使用して、メッセージをホストコンピューティング装置に記録する。
メッセージが伝送されると、ストレージ装置200のHIL212は、そのコマンドに対する完了エントリ(CE)又はデータ構造401を生成する。
図に示した実施形態で、データ構造401は、トンネリングデータメッセージと関連付けられたCEの例としてのレイアウトを含む。
これらの実施形態で、データ構造401は、CEとコマンド(例えば、データ構造400)をマッチングさせるためにメッセージチャネルID422とメッセージシーケンス番号424フィールドを含む。
多様な実施形態で、データ構造401は、関連付けられているコマンドが発行されたSQを表すSQIDフィールド432、及び関連付けられているSQに対する現在のポインタを表すSQHDフィールド434を含む。
多様な実施形態で、データ構造401は、STSフィールド436、及びCIDフィールド410を含む。
CEは、SSD装置からホスト装置に伝送されたメッセージの長さを示す長さフィールド420(例えば、「MSG LENGTH」フィールド)を含む。
CEは、トンネリングチャンネルIDとメッセージのシーケンス番号を示すメッセージチャネルIDフィールド422(例えば、「MSG CHAN ID」)、及びメッセージのシーケンス番号フィールド424(例えば、「MSG SEQ NUM」フィールド)を含むことから、ホストドライバーは、ストレージ装置200から受信されたメッセージを上位レイヤーのソフトウェアに順番に提供する。
上述したように、多様な実施形態で、メッセージが伝送されると、HIL212は、データ構造401又はCEを生成する。
HIL212は、CEをホストメモリの適切なコマンドCQに配置する。
その次に、HIL212は、CEに配置されたことを表示するためにホストに割り込みを送る。
図1に、本発明の実施形態の追加の特徴が説明される。
たとえば、ホストコンピューティング装置102とストレージ装置108との間のフロー制御のために、次の技術が使用される。
多様な実施形態で、メッセージのトンネリングは、全二重(full−duplex)、高性能方式で動作することができる。
これらの実施形態で、メッセージのトンネリングは、フロー制御を実行するために、データプロトコル(例えば、NVMe)の少なくとも一部の特徴を利用する。
多様な実施形態で、フロー制御は、バックプレッシャー(Back Pressure)の特徴を含み得る。
バックプレッシャーは、必要なデータフローに対抗する抵抗又は力である。
これらの実施形態で、データフローが減少することができる。
一実施形態で、ホストコンピューティング装置102からストレージ装置108に移動するメッセージに対して、ホストコンピューティング装置102は、トンネリングメッセージの伝送コマンドを1つ以上のコマンドSQに送信する。
これらの実施形態で、SQでエントリについてアラートした後、ストレージ装置108は、コマンドをフェッチして実行する。
多様な実施形態で、メッセージを受信するためのストレージ装置108のリソースが不足するか、又は他の理由がある場合には、ストレージ装置108は、ホストコンピューティング装置102にフロー制御を適用する。
特に、ストレージ装置108は、トンネリングメッセージ伝送(「tnl_msg_send」)コマンドの実行速度を減少させる。
いくつかの実施形態で、ストレージ装置108は、実行を遅延させるか、実行を一時停止させるか、「tnl_msg_send」コマンドの実行速度を減少させるかである。
これらの実施形態で、ストレージ装置108は、ホストコンピューティング装置102がストレージ装置108に伝送するメッセージの数を調節(throttle)する。
逆に、ストレージ装置108からホストコンピューティング装置102に移動するメッセージに対して、ホストコンピューティング装置102は、必要に応じてフロー制御を適用する。
一実施形態で、ストレージ装置108からメッセージを受信するために、ホストコンピューティング装置102は、トンネリングメッセージ受信(「tnl_msg_recv」)コマンドを1つ以上のコマンドSQに送信する。
ホストコンピューティング装置102は、その後、メッセージがSQ内に存在することをストレージ装置108に通知する。
ストレージ装置108は、その後、これらのコマンドをフェッチするか、又はストレージ装置108がホストコンピューティング装置102にメッセージを伝送するまでにコマンドを処理していない状態に保つ。
ベックプレッシャーを適用するために、ホストコンピューティング装置102は、処理していない、又はエンキューされた(enqueued)トンネリングメッセージ受信コマンドの数を減少させる。
いくつかの実施形態で、ホストコンピューティング装置102は、また現在処理されていないコマンド(例えば、「tnl_msg_recv」コマンド)の一部又は全部を中断(abort)する。
そのようなコマンドの数を減少させることで、ホストコンピューティング装置102は、ストレージ装置108を調節して、ホストにメッセージを伝送する能力を制限する。
多様な実施形態で、システム100は、サービス品質(Quality of Service:QoS)特徴をトンネリングメッセージングプロトコルに提供するように構成される。
これらの実施形態で、QoS特徴は、動作の実行を助けることができる。
QoS特徴は、個々のメッセージのチャネル及び/又はフロー方向に適用される。
一実施形態では、本発明の実施形態によるメッセージトンネリングを実現するシステムは、チャンネルとして知られている複数の同時活性トンネルをサポートする。
これらの実施形態で、トンネリングは、実質的にユニークなメッセージチャネルIDによって識別される。
一部の実施形態で、システム100は、異なるメッセージチャネルに差別化されたQoSを提供する。
これらの実施形態で、いくつかのチャンネルは、他のチャネルよりも高い優先順位に指定される。
一実施形態で、このような差別化は、異なるメッセージチャンネルに対する専用コマンドSQ及びCQを使用することにより、達成される。
例えば、一実施形態で、NVMeプロトコルは、多様な程度のQoSを提供するためにSQ仲裁(arbitration)方法を提供する。
なお、多様な実施形態で、ストレージ装置108は、適切なリソースを割り当ててメッセージチャネルの間で差別化された実行の優先順位を適用できるメッセージレイヤー(layer)を実現する。
一実施形態で、メッセージトンネリングに対するQoSの構成は、NVMeプロトコルの機能設定(Set Feature)/機能取得(Get Feature)コマンドを使用して、ホストコンピューティング装置102によって実行される。
上述したものは、ただ1つの例としての実施形態に過ぎず、本発明の技術的思想を限定していないものと理解される。
他の実施形態で、SSD装置は、デフォルトQoS構成を有し得る。
もう1つの実施形態においては、トンネリングチャネルに対するQoS設定は、ベースボード管理コントローラ(Baseboard Management Controller:BMC)装置によってSSD装置に提供される。
特に、BMCは、このようなBMC装置のストレージ管理者ガイダンス、方向、及びポリシーの設定に基づいて、QoS設定を提供することができる。
一実施形態では、BMCは、図1のホストコンピューティング装置102のような、ホスト装置上に位置する。
多様な実施形態で、システム100は、基本的なデータプロトコルと実質的に互換性を有する。
このような実施形態で、ストレージ装置108は、実質的に標準規格に符合し、ストレージインターフェースに基づいたデータプロトコル(例えば、NVMe又はPCIe)を提供する。
このような実施形態で、ホスト(NVMe)ドライバーとストレージスタックは、依然としてストレージ装置108に対する入力/出力(IO又はI/O)操作を行う。
メッセージトンネリングの特徴は、正常のストレージ機能と共存することができ、これと干渉しない可能性がある。
メッセージトンネリング機能は、専用のコマンドSQ及びCQを使用する。
多様な実施形態で、ストレージ装置108のホストインターフェース回路(HIL)142は、トンネリングコマンド対(vs)一般のストレージコマンドにプログラム可能な優先順位を適用することができる。
いくつかの実施形態で、メッセージトンネリングの特徴は、イネーブル又はディセーブルされるか、あるいは、例えば、ストレージ管理者ガイダンス、方向、及びポリシーの設定を調整することにより、ホストソフトウェアによって、又はBMC装置によってSSD装置に対し構成され得る。
図5は、本発明の実施形態によるコンピュータの通信のための、特にNVMeを利用したメッセージトンネリング方法に基づいて形成された装置を含む情報処理システムの概略構成を示すブロック図である。
図5を参照すると、情報処理システム500は、本発明の実施形態に基づいて構成された1つ以上の装置を含む。
他の実施形態で、情報処理システム500は、本発明の実施形態による1つ以上の技術を使用又は実行する。
多様な実施形態で、情報処理システム500は、例えば、ラップトップ、デスクトップ、ワークステーション、サーバ、ブレードサーバ、パーソナルデジタルアシスタント、スマートフォン、タブレット、及び他の適切なコンピュータのようなコンピューティング装置や仮想マシンやこれの仮想コンピューティング装置を含む。
多様な実施形態で、情報処理システム500は、ユーザー(図示せず)によって使用される。
本発明の実施形態による情報処理システム500は、CPU、ロジック、又はプロセッサ510をさらに含み得る。
いくつかの実施形態で、プロセッサ510は、1つ以上の機能ユニットブロック(functional unit block:FUB)又は組み合わせ論理ブロック(combinational logic block:CLB)515を含む。
このような実施形態で、CLBは、多様なブール論理演算(Boolean logic operation)(例えば、NAND、NOR、NOT、XOR)、安定化論理装置(例えば、フリップフロップ、ラッチ)、他の論理装置、又はこれらの組み合わせを含む。
このような組み合わせ論理演算は、所望の結果を達成するために入力信号を処理するように、単純又は複雑な方法で構成される。
同期式の組み合わせ論理演算の一部の例としての実施形態を説明したが、本発明の技術的思想は、これに限定されず、非同期演算又はこれらの組み合わせを含み得るものと理解される。
一実施形態で、組み合わせ論理演算は、複数の相補型金属酸化半導体(complementary metal oxide semiconductor:CMOS)トランジスタを含み得る。
多様な実施形態で、このようなCMOSトランジスタは、論理演算を実行するゲートに整列され得るが、他の技術が使用され、他の技術は、本発明の技術的思想の範囲内にあるものと理解される。
本発明の実施形態による情報処理システム500は、揮発性メモリ520(例えば、ランダムアクセスメモリ(random access memory:RAM))をさらに含み得る。
本発明の実施形態による情報処理システム500は、非揮発性メモリ530(例えば、ハードドライブ、光メモリ、NAND又はフラッシュメモリ)をさらに含み得る。
いくつかの実施形態で、揮発性メモリ520、非揮発性メモリ530、又はこれらの組み合わせや一部は、「ストレージ媒体」と称される。
多様な実施形態で、揮発性メモリ520及び/又は非揮発性メモリ530は、半永続的であるか、又は実質的に永続的な形態でデータを格納するように構成される。
多様な実施形態では、情報処理システム500は、情報処理システム500が通信ネットワークの一部であり、通信ネットワークを通じて通信できるように構成された1つ以上のネットワークインターフェース540を含む。
Wi−Fiプロトコルの例示は、IEEE(Institute of Electrical and Electronic Engineers)802.11g、IEEE802.11nを含み得るが、これらに限定されない。
セルラープロトコルの例は、IEEE802.16m(別名、無線都市圏ネットワーク(Metropolitan Area Network:MAN))アドバンス、LTE(Long Term Evolution)アドバンス、EDGE(Enhanced Data rates for GSM(Global System for Mobile communications)Evolution)、HSPA+(Evolved High−speed Packet Access)を含み得るが、これらに限定されない。
有線プロトコルの例示は、IEEE802.3(別名、イーサネット(登録商標))、Fibreチャンネル、パワーライン通信(例えば、HomePlug、IEEE1901)を含み得るが、これらに限定されない。
上述された内容は、いくつかの例としての実施形態に過ぎず、本発明の技術的思想を限定していないものと理解される。
本発明の実施形態による情報処理システム500は、ユーザーインターフェースユニット550(例えば、ディスプレイアダプタ、ハプティックインターフェース、ヒューマンインターフェース装置)をさらに含む。
多様な実施形態で、ユーザーインターフェースユニット550は、ユーザーから入力を受信し/受信するか、又はユーザーに出力を提供するように構成される。
ユーザーとの相互作用を提供するために、他の種類の装置が使用され、たとえば、ユーザーに提供されるフィードバックは、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックのような感覚フィードバックの任意の形態であり得、ユーザからの入力は、音響、音声、又は触覚入力を含む、任意の形で受信される。
多様な実施形態で、情報処理システム500は、1つ以上の他の装置又はハードウェアのコンポーネント560(例えば、ディスプレイやモニター、キーボード、マウス、カメラ、指紋リーダー、ビデオプロセッサ)を含み得る。
上述された内容は、いくつかの例としての実施形態に過ぎず、本発明の技術的思想を限定していないものと理解される。
本発明の実施形態による情報処理システム500は、1つ以上のシステムバス505を含み得る。
このような実施形態で、システムバス505は、プロセッサ510、揮発性メモリ520、非揮発性メモリ530、ネットワークインターフェース540、ユーザーインターフェースユニット550、及び1つ以上のハードウェアのコンポーネント560を通信可能に接続するように構成される。
プロセッサ510によって処理されたデータ、又は非揮発性メモリ530の外部から入力されたデータは、非揮発性メモリ530又は揮発性メモリ520に格納され得る。
多様な実施形態で、情報処理システム500は、複数のソフトウェアのコンポーネント570を含むか、又は実行することができる。
いくつかの実施形態で、ソフトウェアのコンポーネント570は、オペレーティングシステム(以下、OS)及び/又はアプリケーションを含み得る。
いくつかの実施形態で、OSは、1つ以上のサービスをアプリケーションに提供し、アプリケーションと、情報の処理システム500の多様なハードウェアのコンポーネント(例えば、プロセッサ510、ネットワークインターフェース540)との間の仲介者として管理したり、行動したりするように構成される。
このような実施形態で、情報処理システム500は、ローカル(例えば、非揮発性メモリ530)で設置され、プロセッサ510によって直接実行され、OSと直接相互作用するように構成される1つ以上のネイティブ(native)アプリケーションを含み得る。
このような実施形態で、ネイティブアプリケーションは、事前にコンパイルされたマシン実行可能なコードを含む。
いくつかの実施形態で、ネイティブアプリケーションは、スクリプトインタープリタ(たとえば、csh(c shell)、AppleScript、AutoHotkey)又は仮想実行マシン(virtual execution machine:VM)(例えば、Java(登録商標) Virtual Machine、Microsoft Common Language Runtime)を含むことができ、これはソースやオブジェクトコードを実行可能なコードに変換するように構成され、その後、実行可能なコードは、プロセッサ510によって実行される。
図6は、本発明の実施形態によるトンネリングデータメッセージを処理する技術を説明するためのフローチャートである。
多様な実施形態で、技術600は、図1、図2、又は図5のシステムのようなシステムによって使用されるか、又は生成され得る。
なお、技術600の一部は、図3及び図4のデータ構造のようなデータ構造に使用される。
しかし、上述されたのは、ただ1つの例としての実施形態に過ぎず、本発明の技術的思想を限定していないものと理解される。
技術600によって例示された動作の順序又は数によって、本発明の技術的思想を限定していないものと理解される。
一実施形態では、ステップS602で、ホストコンピューティング装置に含まれているホストメモリバッファの少なくとも一部が、上述したように、ホストコンピューティング装置と向上されたストレージ装置との間の通信のために割り当てられる。
次に、ステップS604で、上述したように、トンネリングされたメッセージがホストメモリバッファの一部内に格納されるという表示を含むデータメッセージが生成する。
次に、ステップS606で、上述したように、データメッセージが改善されたストレージ装置に伝送する。
次に、ステップS608で、改善されたストレージ装置が、上述したように、ホストコンピューティング装置からトンネリングされたメッセージを読み取る。
次に、ステップS610で、トンネリングされたメッセージに応答して、改善されたストレージ装置が、上述したように、1つ以上の命令語を実行する。
上記したステップは、入力データに対し動作し、出力を生成することにより、機能を実行するためにコンピュータプログラムを実行する1つ以上のプログラム可能なプロセッサによって実行され得る。
上記したステップは、また、特殊な目的の論理回路、例えば、FPGA(field programmable gate array)又はASIC(application−specific integrated circuit)によって実行され、装置は、特殊な目的の論理回路として実装され得る。
多様な実施形態で、この回路は、ストレージ装置及び/又はホストコンピューティング装置によって含まれ得る。
多様な実施形態で、コンピュータ読取可能ストレージ媒体は、命令語を含むことができ、命令語は実行されるとき、装置に方法のステップの少なくとも一部を実行させる。
いくつかの実施形態で、コンピュータ可読記憶媒体は、磁気媒体、光学媒体、他の媒体、又はこれらの組み合わせ(例えば、CD−ROM、ハードドライブ、リードオンリーメモリ(read−only memory)、フラッシュドライブ)に含まれ得る。
このような実施形態で、コンピュータ読取可能ストレージ媒体は、有形(tangible)であり、非一時的に実装された製造物品であり得る。
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
100、200 システム
102 ホストコンピューティング装置
106 通信経路
108 ストレージ装置
110、510 プロセッサ
112 プログラム又はアプリケーション
114 ドライバー
116、146 メモリ
126 ホストメモリバッファ
128 キュー
142 ホストインターフェース回路
144 オン・ボードプロセッサ
182 データ
192、194 データメッセージ
210 トランスポートレイヤーのインターフェース回路
211 送信キュー(SQ)
212 ホストインターフェース回路
214 メッセージインターフェース回路
216 オン・ボードプロセッサ
218 変換レイヤー回路
220 ストレージエレメント
222 割り当てられた容量
224 割り当てられていない容量
226 マイクロサービスを格納する空間又は部分
500 情報処理システム
505 システムバス
515 論理ブロック
520 揮発性メモリ
530 非揮発性メモリ
540 ネットワークインターフェース
550 ユーザーインターフェースユニット
560 ハードウェアのコンポーネント
570 ソフトウェアのコンポーネント

Claims (20)

  1. ストレージ装置であって、
    データプロトコルを通じてホスト装置と通信するように構成されたホストインターフェース回路と、
    前記データプロトコルのデータメッセージに応答して、データを格納するように構成されたストレージエレメント(storage element)と、
    トンネリングされたメッセージに応答して1つ以上の命令語を実行するように構成されたオン・ボードプロセッサと、を有し、
    前記ホストインターフェース回路は、トンネリングコマンドが前記データメッセージ内に埋め込まれている(enbedding)か否かを検出し、
    前記データメッセージからトンネリングされたメッセージのアドレス情報を抽出し、
    前記トンネリングされたメッセージのアドレス情報を介して、前記ホスト装置のメモリに格納された前記トンネリングされたメッセージを検索し、
    前記トンネリングメッセージを前記オン・ボードプロセッサに伝送するようにさらに構成されることを特徴とするストレージ装置。
  2. 前記データメッセージの動作コードフィールドは、リモートプロシージャコール(remote procedure call)の動作コードを含むことを特徴とする請求項1に記載のストレージ装置。
  3. 前記ホストインターフェース回路は、前記ストレージ装置のために予約されたホストメモリバッファから前記トンネリングされたメッセージを検索するように構成されることを特徴とする請求項1に記載のストレージ装置。
  4. 前記ホストインターフェース回路は、前記トンネリングされたメッセージが成功裏に検索されたことに応答して、前記データメッセージが完了したことを表示するように構成されることを特徴とする請求項1に記載のストレージ装置。
  5. 前記ホストインターフェース回路は、前記トンネリングされたメッセージが成功裏に検索されたことに応答して、割り込み信号を前記ホスト装置に伝送するように構成されることを特徴とする請求項4に記載の装置。
  6. 前記ストレージ装置は、1つ以上のデータ受信されたメッセージを前記ホスト装置にオープン状態で維持し、
    前記ホスト装置とのトンネリングされたメッセージの開始に応答して、データメッセージを前記ホスト装置に伝送することにより、前記データ受信されたメッセージの中のいずれか1つを閉じるように構成されることを特徴とする請求項1に記載のストレージ装置。
  7. 前記ホスト装置にオープン状態で維持された前記データ受信されたメッセージは、ホストメモリバッファの部分が前記ホスト装置に割り当てられていることを表示することを特徴とする請求項6に記載のストレージ装置。
  8. 前記トンネリングされたメッセージを前記ホスト装置に伝送する要請に応答して、
    前記ホストインターフェース回路は、前記ホスト装置に割り当てられたホストメモリバッファの部分へのポインタを前記ホスト装置にオープン状態で維持された前記データ受信されたメッセージから抽出し、
    前記トンネリングされたメッセージを前記ホストメモリバッファの前記部分に非同期的に伝送し、
    前記データ受信されたメッセージに関連付けられた完了エントリ(completion entry)を生成し、
    前記ホスト装置による前記完了エントリの受信は、前記ホスト装置が前記トンネリングされたメッセージを読み取るようにさらに構成されることを特徴とする請求項6に記載のストレージ装置。
  9. 前記データメッセージは、サービス品質の指標と関連付けられることを特徴とする請求項1に記載のストレージ装置。
  10. 前記ホストインターフェース回路は、前記データメッセージをトンネリングするために、前記データプロトコルを通じて前記データメッセージのフロー制御を実行するように構成されることを特徴とする請求項1に記載のストレージ装置。
  11. ホストコンピューティング装置と、
    前記ホストコンピューティング装置と通信するように構成されたストレージ装置と、を有し、
    前記ホストコンピューティング装置は、プロセッサを含み、
    前記プロセッサは、前記ストレージ装置からデータを読み書きし、
    前記ストレージ装置にコマンドをオフロードするように構成され、
    前記ストレージ装置は、データプロトコルを通じて前記ホストコンピューティング装置と通信するように構成されたホストインターフェース回路と、
    前記データプロトコルのデータメッセージに応答して、データを格納するように構成されたストレージエレメントと、
    トンネリングされたメッセージに応答して1つ以上の命令語を実行するように構成されたオン・ボードプロセッサと、を含み、
    前記ホストインターフェース回路は、トンネリングコマンドが前記データメッセージ内に埋め込まれているか否かを検出し、
    前記データメッセージからトンネリングされたメッセージのアドレス情報を抽出し、
    前記トンネリングされたメッセージのアドレス情報を介して、前記ホストコンピューティング装置のメモリに格納された前記トンネリングされたメッセージを検索し、
    前記トンネリングされたメッセージを前記オン・ボードプロセッサに伝送するようにさらに構成されることを特徴とするメッセージトンネリングのためのシステム。
  12. 前記ホストコンピューティング装置の前記メモリは、前記ストレージ装置のために予約されたホストメモリバッファを含み、
    前記ホストインターフェース回路は、前記ホストメモリバッファから前記トンネリングされたメッセージを検索するように構成されることを特徴とする請求項11に記載のメッセージトンネリングのためのシステム。
  13. 前記ホストインターフェース回路は、前記トンネリングされたメッセージが成功裏に検索されたことに応答して、前記データメッセージが完了したことを表示するよう構成されることを特徴とする請求項11に記載のメッセージトンネリングのためのシステム。
  14. 前記ホストインターフェース回路は、前記トンネリングされたメッセージが成功裏に検索されたことに応答して、割り込み信号を前記ホストコンピューティング装置に伝送するように構成されることを特徴とする請求項13に記載のメッセージトンネリングのためのシステム。
  15. 前記ストレージ装置は、1つ以上のデータ受信されたメッセージを、前記ホストコンピューティング装置にオープン状態で維持し、
    前記ホストコンピューティング装置とのトンネリングされたメッセージの開始に応答して、データメッセージを前記ホストコンピューティング装置に伝送することにより、前記データ受信されたメッセージの中のいずれか1つを閉じるように構成されることを特徴とする請求項11に記載のシステム。
  16. 前記ホストコンピューティング装置にオープン状態で維持された前記データ受信されたメッセージは、前記ホストコンピューティング装置の前記メモリの部分が前記ホストコンピューティング装置に割り当てられていることを表示することを特徴とする請求項15に記載のメッセージトンネリングのためのシステム。
  17. 前記トンネリングされたメッセージを前記ホストコンピューティング装置に伝送する要求に応答して、
    前記ホストインターフェース回路は、前記ホストコンピューティング装置に割り当てられた前記ホストコンピューティング装置の前記メモリの部分へのポインタを前記ホストコンピューティング装置にオープン状態で維持された前記データ受信されたメッセージから抽出し、
    前記トンネリングされたメッセージを前記ホストコンピューティング装置の前記メモリの前記部分に非同期的に伝送し、
    前記データ受信されたメッセージに関連付けられた完了エントリ(completion entry)を生成し、
    前記ホストコンピューティング装置による前記完了エントリの受信は、前記ホストコンピューティング装置が前記トンネリングされたメッセージを読み取るようにさらに構成されることを特徴とする請求項15に記載のメッセージトンネリングのためのシステム。
  18. 前記データメッセージは、サービス品質の指標と関連付けられることを特徴とする請求項11に記載のメッセージトンネリングのためのシステム。
  19. 前記ホストインターフェース回路は、前記データメッセージをトンネリングするために、前記データプロトコルを通じて前記データメッセージのフロー制御を実行するように構成されることを特徴とする請求項11に記載のメッセージトンネリングのためのシステム。
  20. 請求項1に記載のストレージ装置によるデータプロトコルを通じてリモートプロシージャコール(remote procedure call)をトンネリングする方法であって、
    ホストコンピューティング装置と前記ストレージ装置との間の通信のために、前記ホストコンピューティング装置に含まれているホストメモリバッファの少なくとも一部を前記ホストコンピューティング装置に割り当てるステップと、
    トンネリングされたメッセージが前記ホストメモリバッファの前記一部内に格納されるという表示を含むデータメッセージを生成するステップと、
    前記ストレージ装置に前記データメッセージを伝送するステップと、
    前記データメッセージを受信すると、前記ストレージ装置は、前記ホストコンピューティング装置から前記トンネリングされたメッセージを読み取るステップと、
    前記トンネリングされたメッセージに応答して、前記ストレージ装置により1つ以上の命令語を実行するステップと、を有することを特徴とするメッセージトンネリングのための方法。
JP2020156648A 2019-09-19 2020-09-17 ストレージ装置及びメッセージトンネリングのためのシステム並びにその方法 Pending JP2021047863A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962902949P 2019-09-19 2019-09-19
US62/902,949 2019-09-19
US16/794,217 US11030129B2 (en) 2019-09-19 2020-02-18 Systems and methods for message tunneling
US16/794,217 2020-02-18

Publications (1)

Publication Number Publication Date
JP2021047863A true JP2021047863A (ja) 2021-03-25

Family

ID=74878590

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020156648A Pending JP2021047863A (ja) 2019-09-19 2020-09-17 ストレージ装置及びメッセージトンネリングのためのシステム並びにその方法

Country Status (2)

Country Link
US (1) US20230393996A1 (ja)
JP (1) JP2021047863A (ja)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6683885B1 (en) * 1999-02-24 2004-01-27 Hitachi, Ltd. Network relaying apparatus and network relaying method
US7412486B1 (en) * 2001-12-14 2008-08-12 Edial, Inc. Methods and apparatus providing a web based messaging system
US7676621B2 (en) * 2003-09-12 2010-03-09 Hewlett-Packard Development Company, L.P. Communications bus transceiver
US9189378B1 (en) * 2012-11-30 2015-11-17 Mobile Labs, LLC Systems, methods, and apparatuses for testing mobile device applications
US10515049B1 (en) * 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10575063B2 (en) * 2017-11-03 2020-02-25 Dish Network L.L.C. Message tunneling over closed captioning
US11307873B2 (en) * 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US11575505B2 (en) * 2020-07-27 2023-02-07 Samsung Electronics Co., Ltd. Systems, methods, and devices for key per input/output security

Also Published As

Publication number Publication date
US20230393996A1 (en) 2023-12-07

Similar Documents

Publication Publication Date Title
EP3748510A1 (en) Network interface for data transport in heterogeneous computing environments
US11726930B2 (en) Systems and methods for message tunneling
US20180150240A1 (en) Technologies for offloading i/o intensive operations to a data storage sled
WO2018076793A1 (zh) 一种NVMe数据读写方法及NVMe设备
WO2017114283A1 (zh) 一种在物理主机中处理读/写请求的方法和装置
EP3660686B1 (en) Method and device for transmitting data processing request
KR102240774B1 (ko) 지역 베이스보드 관리 제어기를 이용하여 패브릭 시스템에 걸쳐 불휘발성 메모리 익스프레스 내에서 공유된 그래픽 처리부 자원들을 할당하는 방법
CN110888827A (zh) 数据传输方法、装置、设备及存储介质
CN110647480A (zh) 数据处理方法、远程直接访存网卡和设备
US10067900B2 (en) Virtualized I/O device sharing within a distributed processing node system
US11940933B2 (en) Cross address-space bridging
US11397697B2 (en) Core-to-core communication
CN116204456A (zh) 数据访问方法及计算设备
CN109983741B (zh) 经由直接存储器访问设备在虚拟机之间传送分组
US20200073707A1 (en) System and method for managing tasks and task workload items between address spaces and logical partitions
WO2017173618A1 (zh) 压缩数据的方法、装置和设备
WO2021249059A1 (zh) 网卡以及网卡处理数据的方法
US20230152978A1 (en) Data Access Method and Related Device
CN102119508A (zh) 将交换机层级结构后面的多功能设备呈现为单功能设备
US20160299856A1 (en) Memory appliance couplings and operations
WO2023104194A1 (zh) 一种业务处理方法及装置
WO2018040622A1 (zh) 信息处理方法和装置
JP2021047863A (ja) ストレージ装置及びメッセージトンネリングのためのシステム並びにその方法
WO2018106392A1 (en) Technologies for multi-core wireless network data transmission
Zhang et al. NVMe-over-RPMsg: A Virtual Storage Device Model Applied to Heterogeneous Multi-Core SoCs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230720