(57)【要約】      （修正有）【課題】イーサネットを通じて連結されたＮＶＭｅ−ｏＦ  ＳＳＤ装置内の不揮発性フラッシュメモリへの低レイテンシ直接データアクセス方法を提供する。【解決手段】方法は、ホストにて、低レイテンシ直接アクセス（ＬＬ−ＤＡＸ）ブロック格納ソフトウェア階層から、フラッシュメモリに遠隔直接メモリアクセス（ＲＤＭＡ）書き込み要請を送信する。ＲＤＭＡ書き込み要請は、データ、アドレス、データ移送の長さ及び動作コードを含む。方法は、ホストにて、データがフラッシュメモリに固持されていることを表すＲＤＭＡレベル確認応答を受信する。方法は、ＬＬ−ＤＡＸブロックストレージソフトウェア階層から、アドレス、データ移送の長さ、及び動作コードを含むＲＤＭＡ読み出し要請をフラッシュメモリに送信する。方法は、ホストにて、フラッシュメモリからＲＤＭＡ読み出し要請に対応するＲＤＭＡ読み出し応答データパケットを受信する。【選択図】図２
2018185814.tif 000002
【特許請求の範囲】
【請求項１】
イーサネットを通じて連結された少なくとも１つのＮＶＭｅ−ｏＦ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ  ｏｖｅｒ  Ｆａｂｒｉｃ）＿ＳＳＤ（Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｒｉｖｅ）内の不揮発性のフラッシュメモリへの低レイテンシ直接データアクセス方法において、
ホスト内の低レイテンシ直接アクセス（Ｌｏｗ−Ｌａｔｅｎｃｙ  Ｄｉｒｅｃｔ  Ａｃｃｅｓｓ、以下、「ＬＬ−ＤＡＸ」という）ブロック格納（ストレージ）ソフトウェア階層から、前記フラッシュメモリにデータ、ストレージアドレス、データ移送動作の長さ、及び動作コード（演算コード）を含む遠隔直接メモリアクセス（ＲＤＭＡ）書き込み要請を送信するステップと、
前記データが前記フラッシュメモリに固持（ｐｅｒｓｉｓｔ）されていることを表すＲＤＭＡレベル確認応答を前記ホストにて受信するステップと、
前記ＬＬ−ＤＡＸブロックストレージソフトウェア階層から、ストレージアドレス、データ移送の長さ、及び動作コードを含むＲＤＭＡ読み出し要請を前記フラッシュメモリに送信するステップと、
前記ホストにて、前記フラッシュメモリから前記ＲＤＭＡ読み出し要請に対応するＲＤＭＡ読み出し応答データパケットを受信するステップと、を含むことを特徴とする、低レイテンシ直接データアクセス方法。
【請求項２】
前記ＲＤＭＡ書き込み要請及び前記ＲＤＭＡ読み出し要請の前記ストレージアドレス、前記データ移送の長さ及び前記演算コードは、ＲＤＭＡヘッダフィールドに担持（ｃａｒｒｙ）されることを特徴とする、請求項１に記載の低レイテンシ直接データアクセス方法。
【請求項３】
ＮＶＭｅ−ｏＦ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ  ｏｖｅｒ  Ｆａｂｒｉｃ）プロトコルを使用して、前記ホストから前記フラッシュメモリに、前記ＲＤＭＡ書き込み要請及び前記ＲＤＭＡ読み出し要請を送信するステップをさらに含むことを特徴とする、請求項１に記載の低レイテンシ直接データアクセス方法。
【請求項４】
前記ＲＤＭＡ書き込み要請を送信するステップ及び前記ＲＤＭＡ読み出し要請を送信するステップは、複数のＲＤＭＡキューペア（ＱＰ）（以下、ＲＤＭＡ＿ＱＰという）を使用して送信するステップを含むことを特徴とする、請求項１に記載の低レイテンシ直接データアクセス方法。
【請求項５】
２以上の前記ＲＤＭＡ＿ＱＰがホスト命令を有するときに、ＬＬ−ＤＡＸホストインタフェース（ＨＩＦ）ロジックによって仲裁（ｉｎｔｅｒｖｅｎｉｎｇ）を行うステップをさらに含み、前記仲裁は、前記ホスト命令のうちの１つを実行するために選択することを特徴とする、請求項４に記載の低レイテンシ直接データアクセス方法。
【請求項６】
前記複数のＲＤＭＡ＿ＱＰのうち、第１ＲＤＭＡ＿ＱＰは、第１命令専用であり、前記複数のＲＤＭＡ＿ＱＰのうち、第２ＲＤＭＡ＿ＱＰは、前記第１命令と異なる第２命令専用であることを特徴とする、請求項４に記載の低レイテンシ直接データアクセス方法。
【請求項７】
前記第１命令は書き込み命令であり、前記第２命令は読み出し命令である、ことを特徴とする、請求項６に記載の低レイテンシ直接データアクセス方法。
【請求項８】
前記ホストにて、前記ＬＬ−ＤＡＸブロックストレージソフトウェア階層から、識別命令を前記フラッシュメモリに送信するステップをさらに含み、
前記フラッシュメモリは、前記識別命令に応答して、前記フラッシュメモリに関する情報を前記ホストに送信することを特徴とする、請求項１に記載の低レイテンシ直接データアクセス方法。
【請求項９】
前記情報は、前記フラッシュメモリの支援される特性、性能及び特徴を含む、ことを特徴とする、請求項８に記載の低レイテンシ直接データアクセス方法。
【請求項１０】
前記識別命令は、前記ＲＤＭＡ読み出し要請を用いて送信されることを特徴とする、請求項８に記載の低レイテンシ直接データアクセス方法。
【請求項１１】
前記ホスト内の前記ＬＬ−ＤＡＸブロックストレージソフトウェア階層から、フラッシュメモリに削除命令を送信するステップをさらに含み、
前記削除命令は、ブロックアドレスの範囲の開始ブロックアドレス及び終了ブロックアドレスを含むことを特徴とする、請求項１に記載の低レイテンシ直接データアクセス方法。
【請求項１２】
前記削除命令は、前記ＲＤＭＡ書き込み要請を用いて送信することを特徴とする、請求項８に記載の低レイテンシ直接データアクセス方法。
【請求項１３】
前記ＲＤＭＡ読み出し及び前記ＲＤＭＡ書き込み要請は、ＲｏＣＥ＿ｖ１、  ＲｏＣＥ＿ｖ２及びｉＷＡＲＰで構成されたＲＤＭＡ輸送プロトコルのグループから選択された輸送（ｔｒａｎｓｐｏｒｔ）プロトコルを使用して輸送されることを特徴とする、請求項１に記載の低レイテンシ直接データアクセス方法。
【請求項１４】
前記ＬＬ−ＤＡＸブロックストレージソフトウェア階層は、タイムアウト値を含み、前記ＬＬ−ＤＡＸ＿ＱＰは、前記ＲＤＭＡ書き込み要請を送信するステップの間、タイムアウトを防止するように構成された受信バッファを含むことを特徴とする、請求項４に記載の低レイテンシ直接データアクセス方法。
【請求項１５】
前記フラッシュメモリのＬＬ−ＤＡＸストレージ容量は、ＮＶＭｅ−ｏＦネームスペースと共有されることを特徴とする、請求項１に記載の低レイテンシ直接データアクセス方法。
【請求項１６】
不揮発性フラッシュメモリに対する低レイテンシ直接データアクセスのためのシステムであって、前記システムは、
前記不揮発性フラッシュメモリを含んでイーサネットを通じて連結される少なくとも１つのＮＶＭｅ−ｏＦ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ  ｏｖｅｒ  Ｆａｂｒｉｃ）＿ＳＳＤ（Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｒｉｖｅ）装置と、
プロセッサ、及び内部に格納された命令を含む低レイテンシ直接アクセス（Ｌｏｗ−Ｌａｔｅｎｃｙ  Ｄｉｒｅｃｔ  Ａｃｃｅｓｓ、以下、ＬＬ−ＤＡＸという）ブロックストレージソフトウェア階層を含むホスト装置と、を含み、
前記命令が前記プロセッサによって実行されるときに、前記命令により、前記プロセッサは、
前記不揮発性フラッシュメモリにデータ、ストレージアドレス、データ移送の動作の長さ、及び動作コードを含む遠隔直接メモリアクセス（ＲＤＭＡ）書き込み要請を送信し、
前記データが前記不揮発性フラッシュメモリに固持されていることを表わす確認応答を受信し、
ストレージアドレス、データ移送の長さ、及び動作コードを含むＲＤＭＡ読み出し要請を前記不揮発性フラッシュメモリに送信し、そして、
前記不揮発性フラッシュメモリから前記ＲＤＭＡ読み出し要請に対応するデータパケットを受信することを特徴とする、システム。
【請求項１７】
前記ホスト装置は、前記プロセッサによって実行されるときに、前記プロセッサに対して、ＮＶＭｅ−ｏＦ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ  ｏｖｅｒ  Ｆａｂｒｉｃ）プロトコルを使用して、前記ＲＤＭＡ書き込み要請又は前記ＲＤＭＡ読み出し要請を前記不揮発性フラッシュメモリに送信させる命令をさらに含むことを特徴とする、請求項１６に記載のシステム。
【請求項１８】
前記ＮＶＭｅ−ｏＦ＿ＳＳＤ装置は、２つ以上のＲＤＭＡキューペア（ＱＰ）（以下、ＲＤＭＡ＿ＱＰという）内のホスト命令の間の仲裁のためのＬＬ−ＤＡＸホストインタフェース（ＨＩＦ）ロジックを含むことを特徴とする、請求項１６に記載のシステム。
【請求項１９】
前記２つ以上のＲＤＭＡ＿ＱＰのうち、第１ＲＤＭＡ＿ＱＰは、第１命令専用であり、前記複数のＲＤＭＡ＿ＱＰのうち、第２ＲＤＭＡ＿ＱＰは、前記第１命令と異なる第２命令専用であることを特徴とする、請求項１８に記載のシステム。
【請求項２０】
前記ＬＬ−ＤＡＸブロックストレージソフトウェア階層は、タイムアウト値を含み、前記少なくとも１つのＮＶＭｅ−ｏＦ＿ＳＳＤ装置は、前記ＲＤＭＡ書き込み要請を送信する間、タイムアウトを防止するように構成された受信バッファを含むことを特徴とする、請求項１６に記載のシステム。
【請求項２１】
前記ＬＬ−ＤＡＸブロックストレージ階層に格納された前記命令が前記プロセッサによって実行されるときに、前記命令により、前記プロセッサは、前記不揮発性フラッシュメモリに識別命令を送信するか、又は、前記不揮発性フラッシュメモリに削除命令を送信することを特徴とする、請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソリッドステートドライブ（ＳＳＤ）のための一般的なデータアクセス方法及びシステムに係り、特に、ＮＶＭｅ−ｏＦイーサネット（登録商標）（Ｅｔｈｅｒｎｅｔ）ＳＳＤにおける低レイテンシ直接アクセス（Ｌｏｗ  Ｌａｔｅｎｃｙ  Ｄｉｒｅｃｔ  Ａｃｃｅｓｓ、以下、「ＬＬ−ＤＡＸ」という）ブロックストレージ（以下、「ストレージ」を「格納」ともいう）のデータアクセス方法及びシステムに関するものである。
【背景技術】
【０００２】
ソリッドステートドライブ（ＳＳＤ）は、急速に現代のＩＴのインフラストラクチャ（Ｉｎｆｒａｓｔｒｕｃｔｕｒｅｓ）の主な格納要素になっており、従来のハードディスクドライブ（ＨＤＤ）を代替している。ＳＳＤは、極めて低レイテンシ（Ｌａｔｅｎｃｙ）、読み出し／書き込みデータの高処理能力、及び高信頼度の使用者データストレージを提供する。ＮＶＭｅ−ｏＦ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ  ｏｖｅｒ  Ｆａｂｒｉｃ）は、数百又は数千個のＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ）ＳＳＤが、イーサネット（登録商標）を通じて連結されるようにする新たな技術である。ＮＶＭｅ−ｏＦプロトコルはｒＤＡＳ（ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ａｔｔａｃｈ  Ｓｔｏｒａｇｅ）の具現を可能にする。これは、大量のＳＳＤを、遠隔ホストに連結できるようにする。ＮＶＭｅ−ｏＦプロトコルはＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）プロトコルを使用して、ＮＶＭｅ命令、データ及び応答を担持（ｃａｒｒｙ）する信頼性のある輸送（ｔｒａｎｓｐｏｒｔ）サービスを提供する。ｉＷＡＲＰ（Ｉｎｔｅｒｎｅｔ  Ｗｉｄｅ  Ａｒｅａ  ＲＤＭＡ  Ｐｒｏｔｏｃｏｌ）、ＲｏＣＥ（ＲＤＭＡ  ｏｖｅｒ  Ｃｏｎｖｅｒｇｅｄ  Ｅｔｈｅｒｎｅｔ）＿ｖ１及びＲｏＣＥ＿ｖ２は、ＲＤＭＡサービスを提供する輸送プロトコルの中の一部である。
【０００３】
図１は、従来のＮＶＭｅ−ｏＦイーサネットＳＳＤストレージに使用されるシステムアーキテクチャの例を示す。図１に示されたとおり、サーバにて実行されるアプリケーションは、一般的にシステムソフトウェアスタックを通じてストレージにアクセスする。一般的なストレージシステムソフトウェアスタックは、アプリケーション、オペレーティングシステム（ＯＳ）／ファイルシステム（ＦＳ）のＮＶＭｅ−ｏＦドライバ、ブロックストレージ階層（図１に示されていない）及びＲＤＭＡ輸送階層（図１に示されていない）等のような様々な階層を含む。システムソフトウェアのこのような多数の階層は、アプリケーションによるデータアクセスに対して大量のレイテンシを潜在的に惹起する。格納メディア（媒体）技術（例えば、Ｚ−ＮＡＮＤ（縦積みＮＡＮＤ））及びネットワーキング技術（例えば、１００Ｇｂｐｓイーサネット（登録商標））の発展により、メディア及びネットワークによるレイテンシは大幅に減少している。よって、システムソフトウェアレイテンシは、全般的なデータアクセスレイテンシの重要な構成要素になりつつある。
【０００４】
この背景技術分野にて開示された前記情報は、本発明の背景知識を向上させるために提供され、よって、従来の技術を構成しない情報を含む場合がある。
【先行技術文献】
【特許文献】
【０００５】
特許文献１：米国  登録特許公報第９４６７５１１Ｂ２号
特許文献２：米国  登録特許公報第９５２９７７３Ｂ２号
特許文献３：米国  特許公開公報第２０１３／００８６３１１Ａ１号
特許文献４：米国  特許公開公報第２０１５／０２５４００３Ａ１号
特許文献５：米国  特許公開公報第２０１６／０１２７４９２Ａ１号
特許文献６：米国  特許公開公報第２０１６／０３５２８３１Ａ１号
特許文献７：米国  特許公開公報第２０１６／０３５７６９８Ａ１号
特許文献８：国際出願公開公報第ＷＯ２０１６／１８２７５６Ａ１号
特許文献９：国際出願公開公報第ＷＯ２０１６／１９６７６６Ａ２号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、イーサネットを通じて連結されたＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ）ＳＳＤ（Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｒｉｖｅ）装置における少なくとも１つの不揮発性フラッシュメモリに対する低レイテンシ直接データアクセスの多様な方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明は、イーサネットを通じて連結されたＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ）＿ＳＳＤ（Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｒｉｖｅ）装置における少なくとも１つの不揮発性フラッシュメモリに対する低レイテンシ直接データアクセスの多様な方法を開示する。
一実施例によれば、前記方法は、ホスト内の低レイテンシ直接アクセス（ＬＬ−ＤＡＸ）ブロック格納ソフトウェア階層から、フラッシュメモリに遠隔直接メモリアクセス（ＲＤＭＡ）書き込み要請を送信（ｔｒａｎｓｍｉｔ）するステップを含む。前記ＲＤＭＡ書き込み要請は、データ、ストレージアドレス、データ移送（ｔｒａｎｓｆｅｒ）動作の長さ、及び動作コードを含む。前記方法は、前記データが前記フラッシュメモリに固持（ｐｅｒｓｉｓｔ）されていることを表すＲＤＭＡレベル確認応答を前記ホストにて受信するステップをさらに含む。
なお、前記方法は、前記ＬＬ−ＤＡＸブロックストレージソフトウェア階層から、ＲＤＭＡ読み出し要請を前記フラッシュメモリに送信するステップをさらに含む。前記ＲＤＭＡ読み出し要請は、ストレージアドレス、データ移送の長さ、及び動作コードを含む。前記方法は、前記ホストで前記フラッシュメモリから前記ＲＤＭＡ読み出し要請に対応するＲＤＭＡ読み出し応答データパケットを受信するステップをさらに含む。
【０００８】
前記ＲＤＭＡ書き込み要請及び前記ＲＤＭＡ読み出し要請の前記ストレージアドレス、前記データ移送の長さ及び前記演算コードは、ＲＤＭＡヘッダフィールドに担持（ｃａｒｒｙ）され得る。
【０００９】
前記方法は、ＮＶＭｅ−ｏＦ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ  ｏｖｅｒ  Ｆａｂｒｉｃ）プロトコルを使用して、前記ホストから前記フラッシュメモリに、ＲＤＭＡ書き込み要請及びＲＤＭＡ読み出し要請を送信するステップをさらに含むことができる。
【００１０】
前記ＲＤＭＡ書き込み要請を送信するステップ及び前記ＲＤＭＡ読み出し要請を送信するステップは、複数のＲＤＭＡ＿ＱＰ（ＲＤＭＡキューペア（ｑｕｅｕｅ  ｐａｉｒ））に送信するステップをさらに含むことができる。
なお、前記方法は、２以上のＲＤＭＡ＿ＱＰがホスト命令を有するときに、ＬＬ−ＤＡＸホストインタフェース（ＨＩＦ）ロジックによって仲裁を行うステップをさらに含み、前記仲裁は、前記ホスト命令のうちの１つを実行するために選択できる。
前記一連のＲＤＭＡ＿ＱＰのうち、第１ＲＤＭＡ＿ＱＰは、第１命令専用であり、前記一連のＲＤＭＡ＿ＱＰのうち、第２ＲＤＭＡ＿ＱＰは、前記第１命令と異なる第２命令専用になりうる。
前記第１命令は書き込み命令であり、前記第２命令は読み出し命令でありうる。
【００１１】
なお、前記方法は、前記ホスト内の前記ＬＬ−ＤＡＸブロックストレージソフトウェア階層から、識別命令を前記フラッシュメモリに送信するステップを含み、前記フラッシュメモリは、前記識別命令に応答して、前記フラッシュメモリに関する情報をホストに送信する。
前記情報は、前記フラッシュメモリの支援される特性、性能及び特徴を含むことができる。前記識別命令は、ＲＤＭＡ読み出し要請を用いて送信できる。
【００１２】
前記方法は、前記ホスト内の前記ＬＬ−ＤＡＸブロックストレージソフトウェア階層から、フラッシュメモリに削除命令を送信するステップをさらに含むことができ、前記削除命令は、ブロックアドレスの範囲の開始ブロックアドレス及び終了ブロックアドレス範囲を含む。前記削除命令は、前記ＲＤＭＡ書き込み要請を用いて送信できる。
【００１３】
前記ＲＤＭＡ読み出し及び前記ＲＤＭＡ書き込み要請は、ＲｏＣＥ  ｖ１、  ＲｏＣＥ  ｖ２及びｉＷＡＲＰのようなＲＤＭＡ輸送（ｔｒａｎｓｐｏｒｔ）プロトコルを用いて輸送できる。
【００１４】
前記ＬＬ−ＤＡＸブロックストレージソフトウェア階層は、タイムアウト値を含むことができ、前記ＬＬ−ＤＡＸ＿ＱＰは、前記ＲＤＭＡ書き込み要請を送信するステップの間、タイムアウトを防止するように構成された受信バッファを含むことができる。
【００１５】
前記フラッシュメモリのＬＬ−ＤＡＸストレージ容量は、ＮＶＭｅ−ｏＦネームスペースと共有できる。
【００１６】
本発明は、不揮発性フラッシュメモリに対する低レイテンシ直接データアクセスのためのシステムの多様な実施例を開示する。一実施例にて、前記システムは、前記不揮発性フラッシュメモリを含み、イーサネットを通じて連結される少なくとも１つのＮＶＭｅ−ｏＦ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ  ｏｖｅｒ  Ｆａｂｒｉｃ）＿ＳＳＤ（Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｒｉｖｅ）装置と、プロセッサ及び低レイテンシ直接アクセス（ＬＬ−ＤＡＸ）ブロック格納ソフトウェア階層を含むホスト装置を含む。
前記ＬＬ−ＤＡＸブロックストレージ（以下、「ストレージ」を、「格納」ともいう）ソフトウェア階層は、内部に格納された命令を含み、前記命令が前記プロセッサによって実行されるときに、前記命令により、前記プロセッサは、
前記不揮発性フラッシュメモリにデータ、ストレージアドレス、データ移送（ｔｒａｎｓｆｅｒ）の動作の長さ及び動作コードを含む遠隔直接メモリアクセス（ＲＤＭＡ）書き込み要請を送信し、前記データが前記フラッシュメモリに固持されていることを表わすＲＤＭＡレベル確認応答を受信し、ストレージアドレス、データ移送の長さ、及び動作コードを含むＲＤＭＡ読み出し要請を前記フラッシュメモリに送信し、そして、前記フラッシュメモリから前記ＲＤＭＡ読み出し要請に対応するＲＤＭＡ読み出し応答データパケットを受信する。
【００１７】
前記ホスト装置は、前記プロセッサによって実行されるときに、前記プロセッサに対して、ＮＶＭｅ−Ｏｆ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ  ｏｖｅｒ  Ｆａｂｒｉｃ）プロトコルを使用して、ＲＤＭＡ書き込み要請又はＲＤＭＡ読み出し要請を前記不揮発性フラッシュメモリに送信させる命令をさらに含む。
前記ＮＶＭｅ−Ｏｆプロトコル及び前記ＬＬ−ＤＡＸモードは排他的に、又は同時に一緒に動作できる。
【００１８】
前記ＮＶＭｅ  ＳＳＤ装置は、２つ以上のＲＤＭＡキューペア（ＱＰ）内のホスト命令の間の仲裁のためのＬＬ−ＤＡＸホストインタフェース（ＨＩＦ）ロジックを含むことができる。前記２つ以上のＲＤＭＡ＿ＱＰのうち、第１ＲＤＭＡ＿ＱＰは、第１命令専用であり、前記複数のＲＤＭＡ＿ＱＰのうち、第２ＲＤＭＡ＿ＱＰは、前記第１命令と異なる第２命令専用になりうる。
【００１９】
前記ＬＬ−ＤＡＸブロックストレージソフトウェア階層は、タイムアウト値を含み、前記少なくとも１つのＮＶＭｅ＿ＳＳＤ装置は、前記ＲＤＭＡ書き込み要請を送信する間、タイムアウトを防止するように構成された受信バッファを含むことができる。
【００２０】
前記ＬＬ−ＤＡＸブロックストレージソフトウェア階層に格納された前記命令は、前記プロセッサによって実行されるときに前記プロセッサに対して、前記不揮発性フラッシュメモリに識別命令を送信させるか、又は、前記不揮発性フラッシュメモリに削除命令を送信させ得る。
【００２１】
この「発明の概要」は、本発明の実施例の特徴及び概念の選択を紹介するために提供するものであり、本発明の実施例は以下の「発明を実施するための形態」でさらに説明される。この「発明の概要」は、請求項の構成要件（ｓｕｂｊｅｃｔ＿ｍａｔｔｅｒ）の核心的又は必須的な特徴を同定しようとするものではなく、また、請求項の構成要件を制限しようとするものでもない。ただし、１つ以上の記述された特徴は、１つ以上の他の記述された特徴と結合されて、実動作可能な装置を提供できる。
【発明の効果】
【００２２】
本発明のシステム及び方法は、従来のデータアクセス方法に用いられるストレージソフトウェアスタック階層のうち、一部をバイパスして、データストレージに対する低レイテンシを提供し、従来のストレージソフトウェアスタックの複雑性及び費用を低減するように構成される。なお、本開示の多様なシステム及び方法は、追加的な仲裁ストレージハードウェアインフラストラクチャを何ら必要としない。
【図面の簡単な説明】
【００２３】
本開示の実施例の特徴及び利点は、以下の図面と関連して考慮されるときに、次の詳細な説明を参照することで、さらに明白になる。図面にて、同じ参照番号は同じ特徴及び構成要素を参照するために、図面の全体に亘って使用される。図面は、必ずしも正確な寸法に合わせて書かれていない。
【００２４】
【図１】ＮＶＭｅ−ｏＦ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ  ｏｖｅｒ  Ｆａｂｒｉｃ）イーサネットＳＳＤストレージに用いられる従来のシステムアーキテクチャを示す概略図である。
【００２５】
【図２】本発明の一実施例によるＮＶＭｅ−ｏＦイーサネットＳＳＤストレージに用いられるシステムアーキテクチャを示す概略図である。
【００２６】
【図３】ＬＬ−ＤＡＸ書き込み命令のフォーマットを示す図である。
【図４】ＬＬ−ＤＡＸ読み出し及びＬＬ−ＤＡＸ識別命令のフォーマットを示す図である。
【図５】ＬＬ−ＤＡＸ削除命令のフォーマットを示す図である。
【００２７】
【図６】本発明の一実施例によるｅＳＳＤにおけるＬＬ−ＤＡＸ動作のフローチャートである。
【発明を実施するための形態】
【００２８】
本発明は、ＮＶＭｅ−ｏＦ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ  ｏｖｅｒ  Ｆａｂｒｉｃ）イーサネットＳＳＤストレージにおいて低レイテンシデータアクセスのための多様なシステム及び方法に関するものである。本開示の多様なシステム及び方法は、ＬＬ−ＤＡＸプロトコル、ＬＬ−ＤＡＸ可能な（Ｅｎａｂｌｅｄ）ｅＳＳＤ及びＬＬ−ＤＡＸブロックストレージソフトウェアを用いる。データストレージに対する低レイテンシアクセスのための多様なシステム及び方法は、高性能及び費用の効率的なソルーションを達成するように構成される。本開示の多様なシステム及び方法は、従来のデータアクセス方法に用いられるストレージソフトウェアスタック階層のうちの一部をバイパスして、より低レイテンシを提供し、現存するストレージソフトウェアスタックの複雑性及び費用を低減するように構成される。なお、本開示の多様なシステム及び方法は、如何なる追加的介在（ａｄｄｉｔｉｏｎａｌ  ｉｎｔｅｒｖｅｎｉｎｇ）ストレージハードウェアインフラストラクチャを必要としない（即ち、本開示の多様なシステム及び方法は、ストレージインフラストラクチャに対して新たなハードウェア上の要件を何ら課さず、よって、これらのシステム及び方法は、既設のハードウェアインフラストラクチャに影響を与えない）。
【００２９】
以下、添付された図を参照して、本発明の好ましい実施例に対して詳細に説明する。しかしながら、本発明は、多様な形態で具体化でき、ここに示された実施例のみに限定されると解釈されてはならない。むしろ、これらの実施例は、本開示が徹底且つ完全に成り立つように当業者に本発明の様相及び特徴を十分に伝達するための例として提供される。よって、本発明の様相及び特徴の完全なる理解のために、当業者に不必要なプロセス、要素、及び技術は説明されない場合もある。他の言及がない限り、添付された図面及び詳細な説明の全般に渡って同じ参照符号は同じ要素を表し、よって、その説明は繰り返さない場合もある。
【００３０】
図面にて、エレメント、階層及び領域の相対的な大きさは、明確性のために誇張されるか、及び／又は簡略化されうる。「直下に」（ｂｅｎｅａｔｈ）、「下方に」（ｂｅｌｏｗ）、「下部の」（ｌｏｗｅｒ）、「低い、下に」（ｕｎｄｅｒ）、「上方に」（ａｂｏｖｅ）、「上部の」（ｕｐｐｅｒ）、「高い、上に」（ｕｐｐｅｒ）のような空間的に関連された用語は、図面に示されたとおりに、１つのエレメント又は特徴と異なるエレメント又は特徴の間の関係を簡明に説明するために使用できる。空間的に関連された用語は、図面にて示された方位に追加して、使用又は動作の間に装置の相違する方位を含むように意図されたものと理解されうる。例えば、図面上の装置が反転されると、他のエレメント又は特徴の「下」又は「下に」又は「下部の」で記述された要素は、他のエレメント又は特徴の「上に」向くはずである。よって、「下」及び「下に」の例示的な用語は、上と下の方向全てを含むことができる。装置は、異なる方向に向かうことができ（例えば、９０度又は他の方向に回転できる）、空間的に相対的な技術用語は、それに応じて解釈されるべきである。
【００３１】
「第１」、「第２」、「第３」等の用語は、本明細書にて、多様な構成要素、エレメント、領域、階層及び／又はセクションを説明するために使用できるが、これら構成要素、エレメント、領域、及び／又はセクションは、これらの用語によって限定されてはならない。これらの用語は、１つの要素、エレメント、領域、層又はセクションを他の要素、エレメント、領域、層又はセクションと区別をつけるために使用される。よって、以下で説明される第１の、要素、エレメント、領域、層、又はセクションは、本発明の思想及び範囲を逸脱することなく、第２の、要素、エレメント、領域、階層、又はセクションと称することができる。
【００３２】
エレメント又は階層が他のエレメント又は階層に「連結され」又は「結合され」ていると言及されるときに、これは、他のエレメント又は階層に直接に連結され又は結合されている場合と、或いは、１つ以上の介在するエレメント又は階層が存在する場合と、があり得る。なお、１つ以上のエレメント又は階層が２つのエレメント又は階層の「間に」あると言及されるときに、前記１つ以上のエレメント又は階層が前記２つのエレメント又は階層の間の唯一のエレメント又は階層である場合と、或いは前記１つ以上のエレメント又は階層の外に１つ以上の介在するエレメント又は階層が存在する場合がある。
【００３３】
本明細書にて使用される用語は、単に特定の実施様態を説明するためのものであり、本発明を制限しようとするものではない。本願で使用された単数形態は、文脈上特に指定しない限り、複数の形態を含むものと意図される。本明細書にて使用された「含む」、「含まれる」、「備える」及び「備えられる」の用語は、明示された特徴、整数、ステップ、動作、エレメント及び／又は構成要素の存在を特定すると共に、１つ以上の他の特徴、整数、ステップ、動作、エレメント、構成要素及び／又はこれらのグループの存在又は追加を排除しないことが理解できるであろう。本明細書にて使用されたとおりに、「及び／又は」という用語は、１つ以上の関連する列挙された項目の任意及び全ての組合せを含む。「少なくとも１つ」のような表現は、エレメントの前で、エレメントの全体のリストを修飾し、リストの個別エレメントを修飾しない。
【００３４】
本明細書にて使用されたとおりに、用語「実質的に」、「略」及び類似した用語は、近似の用語として使用され、定量的程度（ｄｅｇｒｅｅ）の用語としては使用されず、測定された又は計算された値が不可避の変動を免れないことを説明するためのものであり、これは当業者に承知のことであろう。なお、本発明の実施例を説明するときに、「できる」を使用することは、「本発明の１つ以上の実施例」を意味する。本明細書にて使用されたとおりに、用語「使用する」、「使用し」及び「使用される」は、「活用する」、「活用し」、「活用される」と同意語と見做し得る。なお、「例示的な」の用語は、事例又は例示を示す。
【００３５】
特に定義されない限り、本明細書にて使用されるすべての用語（技術用語及び科学用語を含む）は、本発明が属する技術分野の当業者にとって一般的に理解されるものと同じ意味を持つ。なお、一般的に使用される辞典で定義された用語と同じ用語は、関連技術及び／又は本明細書に関連してその意味と一致する意味を持つものと解釈されるべきであり、理想的であったり、極めて形式的な意味として解釈されるべきではない。
［ＬＬ−ＤＡＸ＿ｅＳＳＤプロトコル］
【００３６】
図２を参照すると、本発明の一実施例によるＬＬ−ＤＡＸストレージ及びデータアクセスシステムは、ホスト装置１００及びＬＬ−ＤＡＸ＿ｅＳＳＤ１０１（即ち、イーサネットを通じて連結された一連のＮＶＭｅ＿ＳＳＤ装置）を含む。ＬＬ−ＤＡＸ＿ｅＳＳＤ１０１は、ＬＬ−ＤＡＸ特性を支援する能力を追加的に備えたる標準ＮＶＭｅ−ｏＦ＿ｅＳＳＤである。ホスト装置１００は、アプリケーション１０２、ＬＬ−ＤＡＸブロックストレージソフトウェア１０３及びＲＤＭＡ輸送（ｔｒａｎｓｐｏｒｔ）階層１０４を含む。図示された実施例にて、ＬＬ−ＤＡＸ＿ｅＳＳＤ１０１は、ＲＤＭＡターゲット階層１０５、ＲＤＭＡターゲット階層１０５に連結されたＬＬ−ＤＡＸ受信バッファ１０６、ＬＬ−ＤＡＸ受信バッファ１０６に連結されたＬＬ−ＤＡＸホストインタフェース（Ｉ／Ｆ）１０７、ＬＬ−ＤＡＸホストインタフェース（Ｉ／Ｆ）に連結されたフラッシュ変換階層（ＦＴＬ）１０８、及びフラッシュ変換階層（ＦＴＬ）１０８に連結されたＬＬ−ＤＡＸストレージ１０９を含む。
下記でより詳しく説明されるように、ホスト装置１００内のＬＬ−ＤＡＸブロックストレージソフトウェア１０３は、ＬＬ−ＤＡＸストレージ１０９内に格納されたデータに対する低レイテンシ直接アクセスを獲得するために、ＬＬ−ＤＡＸプロトコルを用いてホスト命令（例えば、ＲＤＭＡ読み出し（ＲＥＡＤ）及びＲＤＭＡ書き込み（ＷＲＩＴＥ）命令）をＬＬ−ＤＡＸ＿ｅＳＳＤ１０１内のＲＤＭＡターゲット階層１０５に送付する（例えば、ＬＬ−ＤＡＸブロックストレージソフトウェア１０３は、ホスト１００にてアプリケーション１０２又は異なるシステムソフトウェア階層に格納サービスを提供し、ＬＬ−ＤＡＸ＿ｅＳＳＤ内のＬＬ−ＤＡＸストレージに／からデータを移送するために、ＲＤＭＡ読み出し及びＲＤＭＡ書き込み要請を用いる）。
このような方式で、本発明のシステムは、ホスト装置１００のファイルシステム階層１１０、オペレーティングシステム（ＯＳ）階層１１１、ブロックストレージ階層１１２、及びＮＶＭｅ−ｏＦ階層１１３をバイパスし、ＬＬ−ＤＡＸ＿ｅＳＳＤ１０１のＬＬ−ＤＡＸストレージ装置１０９に格納されたデータに対する低レイテンシ直接アクセスを獲得するように構成される。
【００３７】
なお、１つ以上の実施例にて、ＬＬ−ＤＡＸ＿ｅＳＳＤ１０１は標準に準拠するＮＶＭｅ−ｏＦイーサネットＳＳＤとして動作できる。即ち、ＬＬ−ＤＡＸデータアクセスモードはオプション機能である。よって、アプリケーションは望むとおりに、標準ブロックストレージモード又はＬＬ−ＤＡＸモードを使用できる。なお、１つ以上の実施例にて、ＬＬ−ＤＡＸ＿ｅＳＳＤ１０１は、同時に両方のアクセスモード（即ち、ＬＬ−ＤＡＸ及びＮＶＭｅ−ｏＦ）を支援できる。
【００３８】
ＬＬ−ＤＡＸプロトコルは、データ移送（即ち、ＬＬ−ＤＡＸ書き込み及びＬＬ−ＤＡＸ読み出し命令がデータアクセスのために用いられる）を行うために、ＲＤＭＡ読み出し及びＲＤＭＡ書き込み要請を含むＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）輸送を使用する。ＲＤＭＡ読み出し要請は、ｅＳＳＤ１０１からデータを回収（ｒｅｔｒｉｅｖｅ）、即ちフェッチ（ｆｅｔｃｈ、取り出し）するに用いられる。ＲＤＭＡ書き込み要請は、ホスト１００から、ｅＳＳＤ１０１にデータを移送するに用いられる。下記の表１に示されたとおりに、ＲＤＭＡ読み出し及びＲＤＭＡ書き込みの各々の要請は、ＬＬ−ＤＡＸストレージに関連する演算符号（Ｏｐｃｏｄｅ）（ＯＰＣ）フィールド、アドレスフィールド（ＡＤＤＲ）及び長さフィールド（ＬＥＮ）を含む。
【表１】
2018185814.tif 000003
【００３９】
下記の表２は、本開示の一実施例によるＲＤＭＡ書き込み要請及び／又はＲＤＭＡ読み出し要請の演算コード（ＯＰＣ）フィールドに対する必須命令セット（Ｍ）及び選択的命令セット（Ｏ）を含む命令セット（即ち、エンコーディングセット）を表す。図３は、ＬＬ−ＤＡＸ書き込み命令のフォーマットを示す図であり、図４は、ＬＬ−ＤＡＸ読み出し命令のフォーマットを示す図である。
【表２】
2018185814.tif 000004
【００４０】
上述したＬＬ−ＤＡＸ命令フィールド（即ち、演算コード（ＯＰＣ）、アドレス（ＡＤＤＲ）及び長さ（ＬＥＮ））は、既存のＲＤＭＡヘッダフィールドにおいて担持（ｃａｒｒｙ）される。即ち、一般的に遠隔バッファの詳細事項に使用される既存のＲＤＭＡヘッダフィールドは、ＬＬ−ＤＡＸ命令フィールド（即ち、演算コード（ＯＰＣ）、アドレス（ＡＤＤＲ）、及び長さ（ＬＥＮ））を担持するために使い道を変更して使用される。「ｉＷＡＲＰ（Ｉｎｔｅｒｎｅｔ  Ｗｉｄｅ  Ａｒｅａ  ＲＤＭＡ  Ｐｒｏｔｏｃｏｌ）」、「ＲｏＣＥ（ＲＤＭＡ  ｏｖｅｒ  Ｃｏｎｖｅｒｇｅｄ  Ｅｔｈｅｒｎｅｔ）ｖ１」、及び「ＲｏＣＥ  ｖ２」のような様々なＲＤＭＡ輸送プロトコルがあるので、ＬＬ−ＤＡＸ使用のために使い道が変更される実際のフィールド名は、ＲＤＭＡ輸送プロトコルに依存して変動する。
【００４１】
下記の表３は、「ＲｏＣＥ  ｖ１」及び「ＲｏＣＥ  ｖ２」要請に対する１つの可能なマッピングを示す。
【表３】
2018185814.tif 000005
【００４２】
次の表４は、「ｉＷＡＲＰ」要請に対する１つの可能なマッピングを示す。
【表４】
2018185814.tif 000006
【００４３】
なお、ＬＬ−ＤＡＸプロトコルは、ｅＳＳＤ１０１から４ＫＢデータの構造をフェッチするためにＬＬ−ＤＡＸ識別（ＩＤＥＮＴＩＦＹ）命令を使用する。ＬＬ−ＤＡＸ識別（ＩＤＥＮＴＩＦＹ）命令を受信したことに応答して、ｅＳＳＤ１０１は、ＬＬ−ＤＡＸストレージ１０９に関する情報を、例えば、支援される特徴（Ｆｅａｔｕｒｅｓ）、性能（Ｃａｐａｂｉｌｉｔｉｅｓ）、及び特性（Ｃｈａｒａｃｔｅｒｉｓｔｉｃｓ）を報告する。ＬＬ−ＤＡＸ識別（ＩＤＥＮＴＩＦＹ）命令のフォーマットは、ＬＬ−ＤＡＸ読み出し命令のフォーマットと同一であり、図４に示されている。
下記の表５は、ＲＤＭＡ読み出し及び書き込み命令によるアクセスのために予約されたＬＬ−ＤＡＸストレージ容量（例えば、１ＴＢ）、ｅＳＳＤ１０１上に存在する受信バッファの大きさ、ｅＳＳＤ１０１により支援される最大のＲＤＭＡ書き込みの大きさ、及びブロックの大きさを含むＬＬ−ＤＡＸ識別（ＩＤＥＮＴＩＦＹ）命令に応答して、報告されたＬＬ−ＤＡＸストレージ１０９に関する情報を把握する。
１つ以上の実施例にて、ＬＬ−ＤＡＸストレージ１０９は、ＬＬ−ＤＡＸアプリケーション及び使用者に対するｅＳＳＤ１０１内部の専用格納容量でありうる。１つ以上の実施例にて、ＬＬ−ＤＡＸ及び非−ＬＬ−ＤＡＸ（ｎｏｎ−ＬＬ−ＤＡＸ）アプリケーションは、ファイルシステム又は他のシステムスタック階層を通じてｅＳＳＤ１０１の内部で同一の格納容量を共有できる（例えば、ＬＬ−ＤＡＸ及び非−ＬＬ−ＤＡＸアプリケーションは、互いにデータを交換できる）。
ＬＬ−ＤＡＸアプリケーションとレガシー（ｌｅｇａｃｙ、従来の）非ＬＬ−ＤＡＸアプリケーションの間の格納空間の共有は、ＳＳＤコントローラーのレベルで行われる場合もある。例えば、１つ以上の実施例にて、ＬＬ−ＤＡＸストレージ１０９は、ＮＶＭｅ−ｏＦネームスペース（ＮａｍｅＳｐａｃｅ）と共有できる。ＬＬ−ＤＡＸストレージ１０９がＮＶＭｅ−ｏＦネームスペースと共有される１つ以上の実施例にて、アクセスの調整は、ホストソフトウェアの上位レベルで行われる。
【表５】
2018185814.tif 000007
【００４４】
ＬＬ−ＤＡＸプロトコルは、選択的にＬＬ−ＤＡＸ削除（ＤＥＬＥＴＥ）命令を使用する。ＬＬ−ＤＡＸ削除命令は、１つ以上の削除アドレス範囲エントリを担持する。各々の削除範囲エントリは、削除範囲エントリの開始ブロックアドレス及び終了ブロックアドレスを含む１６バイト（Ｂｙｔｅ）データ構造である。図５は、ＬＬ−ＤＡＸ削除命令のフォーマットを示す図である。次の表６は、削除範囲エントリのフォーマットを示す。
【表６】
2018185814.tif 000008
【００４５】
ＬＬ−ＤＡＸプロトコルに対する命令セットは拡張でき、例えば、制御及び状態レジスタ（ＣＳＲ）アクセス及び状態ログ（Ｈｅａｌｔｈ  Ｌｏｇ）のような追加命令がＬＬ−ＤＡＸプロトコルに追加できる。
【００４６】
本発明の一実施例によって、イーサネットを通じて接続されたＮＶＭｅ  ＳＳＤ装置において、フラッシュメモリへの低レイテンシデータアクセス方法は、ホスト１００におけるＬＬ−ＤＡＸブロックストレージソフトウェア階層１０３から、データ、格納アドレス、データ移送動作の長さ及び演算コードを含むＲＤＭＡ書き込み要請を、フラッシュメモリに送信するタスクを含む。ＲＤＭＡ書き込み要請は、フラッシュメモリの識別されたストレージアドレスにおけるデータを固持（ｐｅｒｓｉｓｔ）する。
なお、この方法は、ＬＬ−ＤＡＸブロックストレージソフトウェア階層から、ストレージアドレス、データ移送の長さ及び演算コードを含むＲＤＭＡ読み出し要請をフラッシュメモリに送信するタスクを含む。ＲＤＭＡ読み出し要請は、フラッシュメモリの特定ストレージアドレスにあるデータを回収する。ＲＤＭＡ書き込み要請及びＲＤＭＡ読み出し要請のストレージアドレス、データ移送の長さ及び演算コードは、ＲＤＭＡヘッダフィールドに担持される。
なお、この方法は、ホスト内のＬＬ−ＤＡＸブロックストレージソフトウェア階層から、ＬＬ−ＤＡＸ識別（ＩＤＥＮＴＩＦＹ）命令をフラッシュメモリに送信して、前記フラッシュメモリに関する情報、例えば、支援される特徴、性能及び特性を獲得するタスクを含む。ＬＬ−ＤＡＸ識別は、ＲＤＭＡ読み出し要請を用いて送信される。なお、この方法は、ホスト内のＬＬ−ＤＡＸブロックストレージソフトウェア階層から、削除（ＤＥＬＥＴＥ）命令をフラッシュメモリに送信して、１つ以上の特定アドレス範囲でフラッシュメモリ上に固持されたデータを削除するタスクを含み得る。削除（ＤＥＬＥＴＥ）命令は、ＲＤＭＡ書き込み要請を用いて送信される。
［ＬＬ−ＤＡＸ＿ｅＳＳＤ動作］
【００４７】
再び、図２を参照すると、ｅＳＳＤが内蔵型ＲＤＭＡネットワークインタフェースを支援するので、ＬＬ−ＤＡＸは、標準ＮＶＭｅ−ｏＦイーサネットＳＳＤの選択的機能である。ＮＶＭｅ−ｏＦプロトコルは、ＲＤＭＡキューペア（ｑｕｅｕｅ  ｐａｉｒ、ＱＰ）を使用して命令、データ及び完了（ｃｏｍｐｌｅｔｉｏｎｓ）を輸送する。
ＮＶＭｅ−ｏＦホストドライバは、ＲＤＭＡ送信（ＳＥＮＤ）要請を使用して、ｅＳＳＤに命令を送付する。ｅＳＳＤはデータ移送のために、ＲＤＭＡ読み出し（ＲＥＡＤ）及びＲＤＭＡ書き込み（ＷＲＩＴＥ）要請を使用する。なお、ｅＳＳＤはＲＤＭＡ送信（ＳＥＮＤ）要請を使用して、ホストに完了（ｃｏｍｐｌｅｔｉｏｎｓ）（例えば、データ固持性の確認応答（ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔｓ））を掲示（ｐｏｓｔ）する。
【００４８】
ＬＬ−ＤＡＸは、ｅＳＳＤ１０１に存在する同じＲＤＭＡインタフェースを用いる。ＬＬ−ＤＡＸは、ＬＬ−ＤＡＸアクセスのために１つ以上の個別及び専用キューペア（ｑｕｅｕｅ＿ｐａｉｒ、ＱＰ）１２０を用いる。ＬＬ−ＤＡＸホストは、ＲＤＭＡ読み出し及びＲＤＭＡ書き込み要請を使用して、ｅＳＳＤ１０１にデータを移送し、命令を送付する。ｅＳＳＤ１０１は、ＬＬ−ＤＡＸホストのＲＤＭＡ要請（例えば、ＲＤＭＡ読み出し及びＲＤＭＡ書き込み要請）にのみ応答して、独立的にＲＤＭＡ要請を開始しない。ＲＤＭＡ確認応答は、データ移送完了を意味し、ＮＶＭｅ−ｏＦ完了とは異なり、別途の完了が無い。
即ち、ＮＶＭｅ−ｏＦには、明示的命令完了があるが、ＬＬ−ＤＡＸにはこのような明示的完了が無い。代わりに、ＬＬ−ＤＡＸは命令完了送信の目的でＲＤＭＡレベル確認応答を使用する。１つ以上の実施例にて、ＮＶＭｅ−ｏＦプロトコルモード及びＬＬ−ＤＡＸモードは、排他的に又は同時に動作できる（例えば、ｅＳＳＤはＮＶＭｅ−ｏＦプロトコルモード及びＬＬ−ＤＡＸプロトコルモードを全て支援し、その結果、ＮＶＭｅ−ｏＦ動作  モードはＬＬ−ＤＡＸ動作モードと共存できる）。
【００４９】
図６は、本発明の一実施例によるｅＳＳＤにおけるＬＬ−ＤＡＸ動作を示すフローチャートである。図６に示されたとおりに、動作２０１にて、ｅＳＳＤは、ホスト装置１００内のＬＬ−ＤＡＸブロックストレージソフトウェア階層１０３（図２参照）からＲＤＭＡ読み出し要請又はＲＤＭＡ書き込み要請を受信する。次に動作２０２にて、ＲＤＭＡ読み出し要請又はＲＤＭＡ書き込み要請が「ＬＬ−ＤＡＸ＿ＱＰ」１２０上に存在するかの有無が判別される。
ｅＳＳＤがＬＬ−ＤＡＸ＿ＱＰ上に存在しないＲＤＭＡ読み出し又はＲＤＭＡ書き込み要請を受信すると、ＲＤＭＡ読み出し又はＲＤＭＡ書き込み命令は、動作２０３に示されたとおりに、ｅＳＳＤをアクセスするための標準ＮＶＭＥ−ｏＦプロトコルに従う。一方、ｅＳＳＤがホスト装置のＬＬ−ＤＡＸブロックストレージソフトウェア階層１０３からＬＬ−ＤＡＸ＿ＱＰ上のＲＤＭＡ読み出し又はＲＤＭＡ書き込み要請を受信すると、ＲＤＭＡ要請はＬＬ−ＤＡＸホストインタフェース（ＨＩＦ）ロジック１０７（図２参照）に転送される。
動作２０４にて、２つ以上の「ＬＬ−ＤＡＸ＿ＱＰ」１２０がホスト命令を有するときに、ＬＬ−ＤＡＸホストインタフェースロジック１０７は、これら「ＬＬ−ＤＡＸ＿ＱＰ」１２０の間の仲裁を行い、実行のためにホスト命令のうち１つを選択する。ＬＬ−ＤＡＸホストインタフェースロジック１０７によって行われる仲裁は、例えば、簡単なラウンドロビン（Ｒｏｕｎｄ−Ｒｏｂｉｎ）仲裁、又はホスト制御設定で具現された複雑な仲裁スキームでありうる。１つ以上の実施例にて、相違する「ＬＬ−ＤＡＸ＿ＱＰ」１２０が、相違する命令の間の実行を差別化するために使用されうる。
例えば、１つの「ＬＬ−ＤＡＸ＿ＱＰ」１２０は、書き込み命令のみを送付するために使用されうるし、（例えば、１つの「ＬＬ−ＤＡＸ＿ＱＰ」１２０は、排他的に書き込み命令を送付することに専念できる）、一方、他の「ＬＬ−ＤＡＸ＿ＱＰ」１２０は、読み出し命令のみを送付するために使用されうる（例えば、１つの「ＬＬ−ＤＡＸ＿ＱＰ」１２０は、排他的に読み出し命令を送付することに専念できる）。ＬＬ−ＤＡＸホストインタフェースロジック１０７は、選択された命令を分析し、ＲＤＭＡ命令から関連されるＬＬ−ＤＡＸフィールドのみならず、演算コードを抽出する。ＬＬ−ＤＡＸホストインタフェースロジック１０７は、受信されたＬＬ−ＤＡＸ命令を実行し、ホストにＲＤＭＡ要請パケット確認応答（ａｃｋｎｏｗｌｅｄｇｅ）をする。１つ以上の実施例にて、別途の命令完了がない。その代りにＲＤＭＡ要請パケット確認応答が、命令の完了として使用される。
【００５０】
続いて、図６を参照すると、動作２０５にて、ＬＬ−ＤＡＸホストインタフェースロジック１０７（図２参照）は、ホスト命令がＲＤＭＡ読み出し要請であるか又はＲＤＭＡ書き込み要請であるかを判別する。ホスト命令がＲＤＭＡ書き込み命令であると判別されると、動作２０６にて、ＬＬ−ＤＡＸホストインタフェースロジック１０７は、ホスト命令の演算コード値を検査することによりＲＤＭＡ書き込み命令がＬＬ−ＤＡＸ書き込み命令、又はＬＬ−ＤＡＸ削除命令（ＬＬ−ＤＡＸ削除命令は、ＲＤＭＡ書き込み命令を用いて送信される）の何れであるかを判別する。
動作２０７にて、（例えば、命令の演算コード値が０であるとき）ＬＬ−ＤＡＸホストインタフェースロジック１０７が、ホスト命令がＬＬ−ＤＡＸ書き込み命令であると判別すると、動作２０８にて、ＬＬ−ＤＡＸホストインタフェースロジック１０７は、先に受信されたデータをフラッシュメディア（例えば、図２に示されたＬＬ−ＤＡＸストレージ１０９）又はキャッシュに固持させ、動作２０９にて、ＬＬ−ＤＡＸホストインタフェースロジック１０７は、ＲＤＭＡ書き込みに確認応答する（例えば、ＬＬ−ＤＡＸ書き込み命令の確認応答（ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）は、ＬＬ−ＤＡＸホストインタフェースロジック１０７によってホストに送信される）。もし、ｅＳＳＤが電力損失保護バッファを備えると、受信された書き込みデータは、キャッシュに使われうるし、ＲＤＭＡ書き込みパケットは確認応答されうる。
【００５１】
データ固持期間によって、ホスト側でのＲＤＭＡ書き込みタイムアウト（ｔｉｍｅｏｕｔ）を防止するために、ホストＲＤＭＡスタックは十分に大きなタイムアウト値でプログラミングされる。なお、ＬＬ−ＤＡＸ＿ＱＰ受信バッファ１０６（図２参照）は、データ固持期間によって、一定量の書き込みバースト（ｗｒｉｔｅ  ｂｕｒｓｔｓ）を許容するように適切に大きさが調整される必要がある。ｅＳＳＤフラッシュトランジション階層（ＦＴＬ）が使用中（ｂｕｓｙ）であり、受信バッファを空けることのできない場合、書き込みバーストの吸収はホストの性能を向上させる。例えば、１つ以上の実施例にて、５０ＭＢの（大容量）受信バッファは、４０Ｇｂｐｓ速度の１０ｍｓバーストを、ホストに対するバックプレッシャ（ｂａｃｋｐｒｅｓｓｕｒｅ、背圧、逆作用）なしに吸収できる。使用されるバックプレッシャメカニズムは、標準ＲＤＭＡ＿ＮＡＣＫパケットである。
【００５２】
図６を参照すると、ＬＬ−ＤＡＸ削除命令は、ＲＤＭＡ書き込み要請を使用して輸送される。動作２１０にて、ＬＬ−ＤＡＸホストインタフェースロジック１０７は、ホスト命令がＬＬ−ＤＡＸ削除命令（例えば、命令語の演算コード値が１６であるとき）であると判別されるときに、まず、動作２１１にて、ＬＬ−ＤＡＸホストインタフェースロジック１０７はフラッシュ変換階層（ＦＴＬ）マップテーブルのアップデートを始めた後、動作２１２にて、ＬＬ−ＤＡＸホストインタフェースロジック１０７はＲＤＭＡ書き込みパケットを確認応答する（例えば、ＬＬ−ＤＡＸ削除命令を輸送するために使用されるＬＬ−ＤＡＸ書き込み命令の確認応答は、動作２１２にてＬＬ−ＤＡＸホストインタフェースロジック１０７によりホストに送信される）。ＬＬ−ＤＡＸ削除命令を輸送するために使用されるＲＤＭＡ書き込み要請のペイロード（ｐａｙｌｏａｄ）は、図６に示されたとおりに、アプリケーションによって削除されるか、又は、割り当て解除される１つ以上のブロックアドレス範囲を担持する。割り当て解除されたアドレス情報は、フラッシュメディア管理のために、ｅＳＳＤによって使用される。
【００５３】
続いて、図６を参照すると、動作２０５にてＬＬ−ＤＡＸホストインタフェースロジック１０７はホスト命令がＲＤＭＡ読み出し命令であると判別されると、動作２１３にてＬＬ−ＤＡＸホストインタフェースロジック１０７はホスト命令の演算コード値を検査（Ｉｎｓｐｅｃｔｉｎｇ）することによりＲＤＭＡ読み出し命令がＬＬ−ＤＡＸ読み出し命令又は（ＲＤＭＡ読み出し命令を用いて送信される）ＬＬ−ＤＡＸ識別命令の何れであるかを判別する。
動作２１４にて、ＬＬ−ＤＡＸホストインタフェースロジック１０７は、ホスト命令がＬＬ−ＤＡＸ読み出し命令であると判別されると（例えば、命令の演算コード値が１であるとき）、ＬＬ−ＤＡＸホストインタフェースロジック１０７はまず、動作（２１５）にて、フラッシュメディア（例えば、ＬＬ−ＤＡＸストレージ１０９又はキャッシュから要請されたデータをフェッチし、動作２１６にて要請されたデータをＲＤＭＡ読み出し応答（ＲＥＡＤ  ＲＥＳＰＯＮＳＥ）パケットと共にホストに送信する。１つ以上の他の実施例にて、ネットワークの最大送信単位（ｍａｘｉｍｕｍ  ｔｒａｎｓｍｉｓｓｉｏｎ  ｕｎｉｔ、ＭＴＵ）に依存して、多重応答パケットがありうる。最後のＲＤＭＡ読み出し応答パケットは、ＬＬ−ＤＡＸ読み込み命令を確認応答する。
【００５４】
図６に示されたとおりに、ＬＬ−ＤＡＸ識別命令は、ＲＤＭＡ読み出し要請を使用して輸送される（即ち、ＬＬ−ＤＡＸ識別命令は、ＲＤＭＡ読み出し要請の一部として受信される）。ＬＬ−ＤＡＸ識別命令は、ＬＬ−ＤＡＸ読み出し命令と類似した実行フローを有する。動作２１７にて、ＬＬ−ＤＡＸホストインタフェースロジック１０７は、ホスト命令がＬＬ−ＤＡＸ識別命令であると判別されると（例えば、命令の演算コード値が２であるとき）、動作２１８にて、ＬＬ−ＤＡＸホストインタフェースロジック１０７は、先にフラッシュメディア（例えば、ＬＬ−ＤＡＸストレージ１０９）又はキャッシュから識別データ構造をフェッチし、動作２１９にて、ＲＤＭＡ  ＲＥＡＤ応答パケットを使用してホストに識別データ構造を移送する。
［ＬＬ−ＤＡＸブロックストレージソフトウェア動作］
【００５５】
再び図２を参照すると、ＬＬ−ＤＡＸブロックストレージソフトウェア階層１０３は、アプリケーション又は他のシステムソフトウェア階層に対するストレージアクセスを提供する。ＬＬ−ＤＡＸブロックストレージソフトウェア１０３は、発見（ｄｉｓｃｏｖｅｒｙ）、アプリケーション側のインタフェース、データ移送及びエラー処理を含むＤＡＸストレージに関連した多様な機能を行う。
【００５６】
初期に、ＬＬ−ＤＡＸソフトウェア１０３は、ＬＬ−ＤＡＸ＿ｅＳＳＤ１０１を発見（ｄｉｓｃｏｖｅｒ）し、ＬＬ−ＤＡＸ＿ｅＳＳＤ１０１との通信チャンネルを設定しなければならない。ＬＬ−ＤＡＸ＿ｅＳＳＤ１０１のネットワークアドレスは、例えば、ＬＬ−ＤＡＸ＿ｅＳＳＤ１０１のネットワークアドレスを含む、ストレージ管理者によって生成されたテキストファイルのような、何らかの適切な方法でＬＬ−ＤＡＸソフトウェア１０３に提供できよう。発見サービスは、ストレージ管理者によって処理（ｍａｎａｇｅ）される。このような発見方法は、既存のストレージインフラストラクチャ（ｉｎｆｒａｓｔｒｕｃｔｕｒｅｓ）で一般的に使用される。
【００５７】
一旦、ＬＬ−ＤＡＸソフトウェア１０３がＬＬ−ＤＡＸ＿ｅＳＳＤ１０１との通信チャンネルを発見し、設定（ｅｓｔａｂｌｉｓｈ）すると、ＬＬ−ＤＡＸソフトウェア１０３は、望む数量の新たなキューペア（ＱＰ）１２０をＬＬ−ＤＡＸ＿ｅＳＳＤ１０１に対して設定することをＲＤＭＡ輸送階層１０４に要請する。一旦、１つ以上のＱＰ１２０が設定されると、ＬＬ−ＤＡＸソフトウェア１０３はＲＤＭＡ読み出し要請を使用してＬＬ−ＤＡＸ識別命令を発行する。
ＬＬ−ＤＡＸ  ｅＳＳＤ１０１は、ＬＬ−ＤＡＸストレージ１０９に関する情報（例えば、ＬＬ−ＤＡＸストレージ１０９の識別パラメータ）、例えば、ＬＬ−ＤＡＸストレージ１０９の多様な性能、特徴、及び特性などの情報を移送することにより、ＬＬ−ＤＡＸ識別命令に応答する。よって、ＬＬ−ＤＡＸ識別命令の後に、ＬＬ−ＤＡＸドライバは基本的なＬＬ−ＤＡＸストレージ１０９の多様な性能、特徴及び特性を理解してデータストレージのノーマル動作の際に用いる。
【００５８】
ＬＬ−ＤＡＸソフトウェア１０３は、ＬＬ−ＤＡＸストレージ１０９にアクセスするためのアプリケーションにインタフェースを提供する。ＬＬ−ＤＡＸはカーネルモジュールであり、入力／出力制御（ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｃｏｎｔｒｏｌ、ＩＯＣＴＬ）システムコール（呼び出し）を使用して、読み出し／書き込みインタフェースを提供する。ＬＬ−ＤＡＸソフトウェア１０３は、ロードストアセマンティックス（ｌｏａｄ  ｓｔｏｒｅ  ｓｅｍａｎｔｉｃｓ）で動作しない。ＬＬ−ＤＡＸドライバは、ＬＬ−ＤＡＸドライバに関連された装置ハンドルを使用して、アプリケーションにアクセスできる。アプリケーションは、このようなハンドルとＬ−ＤＡＸストレージアドレスを使用して、読み出し及び書き込み動作を発行できる。
このようなアプリケーション要請は、ＬＬ−ＤＡＸソフトウェア１０３によって、適切なＲＤＭＡ階層要請に変換される。ＲＤＭＡ要請は、ＬＬ−ＤＡＸソフトウェア１０３によって完了されるように発行され、追跡される。要請が完了されると、アプリケーション呼び出しがリターンされる。ＬＬ−ＤＡＸストレージ１０９に割り当てられたデータ構造が削除されるか、又は、割り当て解除されると、ＬＬ−ＤＡＸソフトウェア１０３は、これらのイベントをＬＬ−ＤＡＸ削除命令に変換して、これらの命令をｅＳＳＤ１０１に送付する。ＬＬ−ＤＡＸ削除命令は、ｅＳＳＤが、ｅＳＳＤ内のバックグラウンド作業と関連したガーベジコレクション（Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ）を削減するために使用される。
【００５９】
なお、ＬＬ−ＤＡＸソフトウェア１０３は、ファイルシステムと類似した一部の基本ストレージ空間管理機能を具現できる。例えば、１つ以上の実施例にて、ＬＬ−ＤＡＸソフトウェア１０３は、格納空間割り当て及び割り当て解除機能を具現できる。１つ以上の実施例にて、ＬＬ−ＤＡＸソフトウェア１０３は、ＬＬ−ＤＡＸストレージ１０９を使用して、アプリケーションに対する基本アクセス制御を行うことができる。アプリケーションが一定量のストレージを必要とするときに、アプリケーションは望む量のストレージの割り当てを要請する。
ＬＬ−ＤＡＸソフトウェア１０３は、ＬＬ−ＤＡＸストレージ１０９に対する割り当てテーブルを固持できる。ＬＬ−ＤＡＸソフトウェア１０３は、利用できる空間から要求されたストレージ空間を割り当てて、その空間に対するストレージハンドルを要求者にリターンする。その後、ストレージハンドルはアプリケーションによって後続のデータ読み出し／書き込みアクセスのために使用される。なお、１つ以上の実施例にて、ＬＬ−ＤＡＸブロックストレージソフトウェア１０３は、さらなる柔軟性、データ接近性及び空間管理を提供するために、ファイル情報変換機能を含むことができる。よって、１つ以上の実施例にて、ＬＬ−ＤＡＸアプリケーションは、自分のＬＬ−ＤＡＸデータを他のアプリケーション（例えば、非ＬＬ−ＤＡＸアプリケーション）と共有できる。
【００６０】
本発明は、例示的な実施例を参照して説明されたが、当業者であれば、本発明の思想及び範囲を逸脱せずに、叙述された実施例に対する多様な変更及び修正が可能なことを認識するであろう。なお、多様な技術分野の当業者は、ここで説明された本発明が他のアプリケーションに対する他のタスク及び適応に対する解決策を提案することを認識できる。出願人の意図は請求範囲によって、本発明のこのような全ての用途、及び本願で開示の目的として選択された本発明例示的な実施例に対して行われる変更及び修正が全て本出願人の意図であり、本発明の思想及び範囲を逸脱しない。よって、本発明の例示的な実施例は、全ての面において例示的であって制限的でなく、本発明の思想及び範囲は添付された請求範囲及びその均等物によって示されるべきである。
【符号の説明】
【００６１】
１００：  ホスト装置
１０１：  ＬＬ−ＤＡＸ  ｅＳＳＤ  
１０２：  アプリケーション  
１０３：  ＬＬ−ＤＡＸブロックストレージソフトウェア階層、ＬＬ−ＤＡＸソフトウェア
１０４：  ＲＤＭＡ輸送階層  
１０５：  ＲＤＭＡターゲット階層
１０６：  ＬＬ−ＤＡＸ受信バッファ  
１０７：  ＬＬ−ＤＡＸホストインタフェース
１０８：  ＦＴＬ（フラッシュ変換階層）
１０９：  ＬＬ−ＤＡＸストレージ
１１０：  ファイルシステム階層
１１１：  オペレーティングシステム階層
１１２：  ブロックストレージ階層
１１３：  ＮＶＭｅ−ｏＦ階層
１２０：  キューペア（ＱＰ）、ＬＬ−ＤＡＸ＿ＱＰ
ＦＴＬ：  フラッシュ変換階層（Ｆｌａｓｈ＿Ｔｒａｎｓｆｏｒｍ＿Ｌａｙｅｒ）
ＬＬ−ＤＡＸ      低レイテンシ直接アクセス（Ｌｏｗ−Ｌａｔｅｎｃｙ  Ｄｉｒｅｃｔ  Ａｃｃｅｓｓ）
ＮＶＭｅ      不揮発性メモリ急行（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）
ＱＰ      キューペア（ｑｕｅｕｅ＿ｐａｉｒ、待ち行列対）
ＲＤＭＡ      遠隔直接メモリアクセス（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）
ＳＳＤ      固体ドライブ（Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｒｉｖｅ）
【図１】
2018185814.tif 000009
【図２】
2018185814.tif 000010
【図３】
2018185814.tif 000011
【図４】
2018185814.tif 000012
【図５】
2018185814.tif 000013
【図６】
2018185814.tif 000014