(57)【要約】【課題】  マルチモード及び／又はマルチ速度NVMe-oFデバイスを支援するシステム及び方法を提供する。【解決手段】  一部の例示的な実施例によるシステムは、少なくとも1つのマザーボードと、少なくとも1つのベースボード管理コントローラ（BMC）と、ミッドプレーンと、少なくとも1つのストレージデバイスを含み、少なくとも1つのストレージデバイスは、ミッドプレーンを介して複数のデバイスポートを経由して、少なくとも1つのマザーボード又は少なくとも1つのBMCから受け取った第1の入力に基づいて第1のモード又は第2のモードで動作し、第2のモードで動作するとき、少なくとも1つのストレージデバイスは、複数のデバイスポートを経由してミッドプレーンから受け取った第2の入力に基づいて複数の動作速度から第1の速度で動作できる。【選択図】      図1A
2019153300.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも1つのマザーボードと、
少なくとも1つのベースボード管理コントローラ（BMC）と、
ミッドプレーンと、
少なくとも1つのストレージデバイスと、を含み、
前記少なくとも1つのストレージデバイスは、前記ミッドプレーンを介して複数のデバイスポートを経由して、前記少なくとも1つのマザーボード又は前記少なくとも1つのBMCから受信された第1の入力に基づいて第1のモード又は第2のモードで動作し、
第2のモードで動作するとき、前記少なくとも1つのストレージデバイスは、前記複数のデバイスポートを経由して、前記ミッドプレーンから受信された第2の入力に基づいて複数の動作速度から第1の速度で動作する、
システム。
【請求項２】
前記少なくとも1つのストレージデバイスは、コネクタ及び少なくとも1つのバスを経由して、少なくとも1つのフィールドプログラマブルゲートアレイ（FPGA）と通信する複数のSSD（solid  state  drive）を含む、
請求項１に記載のシステム。
【請求項３】
前記コネクタはSSDコネクタであり、前記少なくとも1つのバスは、PCIe（peripheral  component  interconnect  express）バスである、
請求項２に記載のシステム。
【請求項４】
前記少なくとも1つのストレージデバイスの前記第1のモード及び前記第2のモードは、それぞれNVMe（non-volatile  memory  express）モード及びNVMe-oF（NVMe  over  fabrics）モードである、
請求項１に記載のシステム。
【請求項５】
前記第1の入力は、前記少なくとも1つのBMCからのインバンドコマンドにより、又は前記少なくとも1つのマザーボードのシャーシ上の物理的ピンを使用することにより制御される、
請求項１に記載のシステム。
【請求項６】
前記第2の入力は、前記少なくとも1つのマザーボード上のローカル中央処理ユニット（CPU）、前記少なくとも1つのBMC、又は前記少なくとも1つのストレージデバイスのFPGA内部の1つ以上の内部レジスタにより制御される、2つの汎用入出力（GPIO）ピンを使用することにより制御される、
請求項１に記載のシステム。
【請求項７】
前記少なくとも1つのストレージデバイスの前記複数の動作速度は、2つ以上の10G（ギガビット毎秒）以上の速度である、
請求項１に記載のシステム。
【請求項８】
前記複数のデバイスポートは、U.2コネクタを経由して前記少なくとも1つのストレージデバイスに接続され、該ストレージデバイスは、高可用性（HA）モード又は非高可用性（non-HA）モードで動作する、
請求項１に記載のシステム。
【請求項９】
前記少なくとも1つのストレージデバイスは、前記U.2コネクタを経由して、2つのシリアルアッタチドSCSI（SAS）ポート及びPCIe  X4バスの最大4つのPCIe  X4レーンを支援し、
前記2つのSASポートは、ファブリック接続ポートとして使用し、
前記ファブリック接続ポートは、イーサネット（登録商標）ポート、ファイバチャネルポート、及びインフィニバンドポートを包含する、
請求項８に記載のシステム。
【請求項１０】
前記第2のモードで動作する場合、前記少なくとも1つのストレージデバイスは、前記U.2コネクタを経由して、2つのファブリック接続ポートのためのコントロールプレーンのために4つのPCIe  X4レーンのうちの2つのPCIe  X4レーンと、追加的なファブリック接続ポートとして4つのPCIe  X4レーンのうちの残りの2つのPCIe  X4レーンを支援する、
請求項９に記載のシステム。
【請求項１１】
前記少なくとも1つのストレージデバイスは、第1のストレージデバイスと第2のストレージデバイスとを包含し、第1の時間に、前記第1のストレージデバイス及び／又は前記第2のストレージデバイスは、前記複数の動作速度から前記第1の速度又は第2の速度で前記第1のモード又は前記第2のモードで動作する、
請求項１に記載のシステム。
【請求項１２】
ミッドプレーンを介して複数のデバイスポートを経由して、少なくとも1つのマザーボード又はベースボード管理コントローラ（BMC）からストレージデバイスで第1の入力を受信するステップと、
前記ストレージデバイスにより、前記ストレージデバイスで受信された前記第1の入力に基づいて第1の動作モードで動作するか又は第2の動作モードで動作するかを判定するステップと、
前記第2の動作モードで動作するとき、前記複数のデバイスポートを経由して、前記ミッドプレーンから前記ストレージデバイスで第2の入力を受信するステップと、
前記ストレージデバイスにより、前記第2の入力に基づいて複数の動作速度から前記ストレージデバイスの動作速度を選択するステップと、
を含む、方法。
【請求項１３】
前記ストレージデバイスの前記第1の動作モード及び前記第2の動作モードは、NVMeモード及びNVMe-oFモードである、
請求項１２に記載の方法。
【請求項１４】
前記第1の入力は、前記BMCからインバンドコマンドにより、又は前記少なくとも1つのマザーボードシャーシ上の物理的ピンを使用することにより制御される、
請求項１２に記載の方法。
【請求項１５】
前記第2の入力は、前記少なくとも1つのマザーボード上の前記BMC又はローカル中央処理ユニット（CPU）、又は前記ストレージデバイスのフィールドプログラマブルゲートアレイ（FPGA）内部の１つ以上の内部レジスタにより制御される2つの汎用目的入出力（GPIO）ピンを使用して制御される、
請求項１２に記載の方法。
【請求項１６】
前記ストレージデバイスの前記複数の動作速度は、2つ以上の10G（ギガビット毎秒）以上の速度である、
請求項１２に記載の方法。
【請求項１７】
第1のコネクタ及び少なくとも1つのバスを経由して、少なくとも1つのフィールドプログラマブルゲートアレイ（FPGA）と通信する複数のSSDを含み、
第2のコネクタを経由して受信された第1の入力に基づいて第1のモード又は第2のモードで動作し、
前記第2のモードで動作するとき、前記第2のコネクタを経由して受信された第2の入力に基づいて複数の動作速度から第1の速度で動作する、
ストレージデバイス。
【請求項１８】
前記第1の入力は、ミッドプレーンを介して、複数のデバイスポートを経由してマザーボード又はスイッチのベースボード管理コントローラ（BMC）から受信され、前記第2の入力は、前記複数のデバイスポートを経由して前記ミッドプレーンから受信され、
前記第1の入力は、前記BMCからのインバンドコマンドにより、又は前記マザーボードのシャーシ上の物理的ピンを使用することにより制御され、前記第2の入力は、前記マザーボード上の前記BMC又はローカル中央処理ユニット（CPU）又は前記FPGA内部の1つ以上の内部レジスタにより制御される、2つの汎用入出力（GPIO）ピンを使用して制御される、
請求項１７に記載のストレージデバイス。
【請求項１９】
前記第1のコネクタはSSDコネクタであり、前記少なくとも1つのバスはPCIeバスであり、前記第2のコネクタはU.2コネクタであり、当該ストレージデバイスの前記第1のモード及び前記第2のモードは、それぞれNVMeモード及びNVMe-oFモードであり、当該ストレージデバイスの複数の動作速度は、2つ以上の10G（ギガビット毎秒）以上の速度である、
請求項１７に記載のストレージデバイス。
【請求項２０】
第1の時間に、前記複数のSSDのうちの第1のSSD及び／又は第2のSSDは、前記複数の動作速度から前記第1の速度又は第2の速度で、前記第1のモード又は前記第2のモードで動作する、
請求項１７に記載のストレージデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ネットワーク接続デバイス（network-attached  devices）に関し、より詳しくは、マルチモード及び／又はマルチ速度NVMe-oF（non-volatile  memory  express  over  fabrics）デバイスを支援するシステム及び方法に関する。
【背景技術】
【０００２】
イーサネット（登録商標）接続NVMe  SDD（Ethernet-attached  NVMe  soild  state  drives）を用いる構成のようなNVMe-oF構成では、イーサネット（Ethernet）（登録商標）及びSSDの費用と性能を改善することが難しい可能性がある。例えば、SDD性能は、PCIe（peripheral  component  interconnect  express）インターフェース及びNAND技術に応じて異なる可能性がある反面、50G/100G技術の登場でイーサネット速度は増加した。各デバイスは、ポイントツーポイント接続を提供し得るので、ファブリック接続SSD（fabric-attached  SSD）は、消去コードデータ保護（erasure  code  data  protection）を支援するにあたって、固有の設計問題を追加で提示する可能性がある。
【０００３】
したがって、NVMe及びNVMe-oFプロトコルの双方を支援でき、相異なるイーサネット速度において動作できるストレージデバイスが好ましい。
【０００４】
この背景技術の欄で開示された情報は、本発明の背景技術に対する理解を助けるためのものにすぎない。したがって、先行技術を構成しない情報を包含する可能性がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第9008129号明細書
【特許文献２】米国特許第9565269号明細書
【特許文献３】米国特許第9678666号明細書
【特許文献４】米国特許出願公開第2003/0191883号明細書
【特許文献５】米国特許出願公開第2016/0357698号明細書
【特許文献６】米国特許出願公開第2017/0177216号明細書
【特許文献７】米国特許出願公開第2017/0212858号明細書
【特許文献８】米国特許出願公開第2017/0300445号明細書
【特許文献９】米国特許出願公開第2017/0357610号明細書
【特許文献１０】米国特許出願公開第2017/0364307号明細書
【特許文献１１】米国特許出願公開第2017/0371814号明細書
【特許文献１２】米国特許出願公開第2018/0032463号明細書
【特許文献１３】米国特許出願公開第2018/0048592号明細書
【特許文献１４】米国特許出願公開第2018/0067685号明細書
【特許文献１５】中国特許出願公開第106502593号明細書
【非特許文献】
【０００６】
【非特許文献１】FANG,  CHIN著、“Using  NVMe  Gen3  PCle  SSD  Cards  in  High-denstiy  Servers  for  High-performance  Big  Data  Transfer  Over  Multiple  Network  Channels”、  SLAC  National  Accelerator  Laboratory、SLAC-TIN-15-001  2015年2月7日、p.1-17、スタンフォード大学、カルフォルニア州、スタンフォード
【非特許文献２】NVM  EXPRESS、“NVM  Express  over  Fabrics”、3  NVM  Express  Starndard  Revision  1.0、2016年6月5日、p.1-49
【非特許文献３】GUZ、ZVIKA等著、“NVMe-over-Fabrics  Performance  Characterization  and  the  Path  to  Low-Overhead  Flash  Disaggregation”、10th  ACM  International  Systems  and  Storage  Conference（SYSTOR'17）、2017年5月22-24日、p.1-9、イスラエル、ハイファ
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、マルチモード及び／又はマルチ速度NVMe-oFデバイスを支援するシステム及び方法を提供する。
【課題を解決するための手段】
【０００８】
本明細書の実施例における観点によるシステムは、少なくとも1つのマザーボードと、少なくとも1つのベースボード管理コントローラ（BMC：baseboard  management  controller）と、ミッドプレーン（mid-plane）と、少なくとも1つのストレージデバイスと、を包含する。少なくとも1つのストレージデバイスは、ミッドプレーンを介して複数のデバイスポートを経由して、少なくとも1つのマザーボード又は少なくとも1つのBMCから受信された第1の入力に基づいて、第1のモード又は第2のモードで動作し、第2のモードで動作するとき、少なくとも1つのストレージデバイスは、複数のデバイスポートを経由してミッドプレーンから受信された第2の入力に基づいて、複数の動作速度から第1の速度で動作できる。
【０００９】
一実施例において、少なくとも1つのストレージデバイスは、コネクタ及び少なくとも1つのバスを経由して、少なくとも1つのフィールドプログラマブルゲートアレイ（FPGA：field  programmable  gate  array）と通信する複数のSSD（solid  state  drive）を包含する。一構成において、コネクタは、SSDコネクタであり、少なくとも1つのバスはPCIe（peripheral  component  interconnect  express）である。
【００１０】
他の実施例において、第1のモード及び第2のモードは、それぞれNVMe（non-volatile  memory（NVM）express）モード及びNVMe-oF（NVMe  over  fabrics）モードである。一構成において、第1の入力は、少なくとも1つのBMCからインバンドコマンド（in-band  command）により、又は少なくとも1つのマザーボードのシャーシ上の物理的ピンを使用することにより制御される。
【００１１】
一実施例において、第2の入力は、少なくとも1つのマザーボード上のローカル中央処理ユニット（CPU：central  processing  unit）又は少なくとも1つのBMC、又は少なくとも1つのストレージデバイスのFPGA内部の1つ以上の内部レジスタにより制御される、2つの汎用目的入出力（GPIO：general-purpose  input/output）ピンを使用することにより制御される。もう1つの実施例において、少なくとも1つのストレージデバイスの複数の動作速度は、2つ以上の10G（ギガビット毎秒（gigabits  per  second））以上の速度（例えば、10Gと100Gとの間、又は10Gと100G以上の速度との間）である。
【００１２】
一観点において、複数のデバイスポートは、U.2コネクタを経由して、少なとも1つのストレージデバイスに接続され、ストレージデバイスは、高可用性（HA：high  availability）モード又は非高可用性（non-HA：non-high  availability）モードで動作する。もう1つの観点において、少なくとも1つのストレージデバイスは、U.2コネクタを経由して、2つのシリアルアッタチドSCSI（SAS：serial  Attached  SCSI（Small  Computer  System  Interface））ポート及びPCIe  X4バスの最大4つのPCIe  X4レーン（lanes）を支援し、2つのSASポートは、ファブリック接続ポート（fabric  attached  port）として使用され、そしてファブリック接続ポートは、イーサネットポート、ファイバチャネル（fibre-channel）ポート、及びインフィニバンド（InfiniBand）ポートとして構成される。
【００１３】
一構成において、第2のモードで動作するとき、少なくとも1つのストレージデバイスは、U.2コネクタを経由して、2つのファブリック接続ポートのためのコントロールプレーン（control  plane）のために4つのPCIe  X4レーンのうちの2つのPCIe  X4レーンを支援し、追加的なファブリック接続ポートとして4つのPCIe  X4レーンのうちの残りの2つのPCIe  X4レーンを支援する。もう1つの構成において、少なくとも1つのストレージデバイスは、第1のストレージデバイス及び第2のストレージデバイスを包含し、第1の時間に、第1のストレージデバイス及び／又は第2のストレージデバイスは、複数の動作速度から第1の速度又は第2の速度で第1のモード又は第2のモードで動作する。
【００１４】
本明細書の実施例により提供される方法は、ミッドプレーンを介して複数のデバイスポートを経由して、少なくとも1つのマザーボード又はBMCからストレージデバイスで第1の入力を受信するステップと、ストレージデバイスにより、ストレージデバイスで受信された第1の入力に基づいて第1の動作モードで動作するか又は第2の動作モードで動作するかを判定するステップと、第2の動作モードで動作するとき、複数のデバイスポートを経由してミッドプレーンからストレージデバイスで第2の入力を受信するステップと、及びストレージデバイスにより、第2の入力に基づいて複数の動作速度からストレージデバイスの動作速度を選択するステップと、を包含する。
【００１５】
一実施例において、ストレージデバイスの第1の動作モード及び第2の動作モードは、NVMeモード及びNVMe-oFモードである。もう1つの実施例において、第1の入力は、BMCからインバンドコマンドにより、又は少なくとも1つのマザーボードのシャーシ上の物理的ピンを使用することにより制御される。
【００１６】
一観点において、第2の入力は、少なくとも1つのマザーボード上のBMC又はローカルCPU、又はストレージデバイスのFPGA内部の1つ以上の内部レジスタにより制御される2つのGPIOピンを使用して制御される。もう1つの観点において、ストレージデバイスの複数の動作速度は2つ以上の10G以上の速度である。
【００１７】
本発明のもう1つの実施例により提供されるストレージデバイスは、第1のコネクタ及び少なくとも1つのバスを経由して、少なくとも1つのFPGAと通信する複数のSSDを包含し、第2のコネクタを介して受信された第1の入力に基づいて第1のモード又は第2のモードで動作し、そして、第2のモードで動作するとき、第2のコネクタを経由して受信された第2の入力に基づいて複数の動作速度から第1の速度で動作する。
【００１８】
一観点において、第1の入力は、ミッドプレーンを介して、複数のデバイスポートを経由してマザーボード又はスイッチのBMCから受信され、第2の入力は、複数のデバイスポートを経由してミッドプレーンから受信され、そして第1の入力は、BMCからインバンドコマンドにより又はマザーボードのシャーシ上の物理的ピンを使用することにより制御され、第2の入力は、マザーボード上のBMC又はローカルCPU、又はFPGA内部の1つ以上の内部レジスタにより制御される2つのGPIOピンを使用して制御される。
【００１９】
もう1つの観点において、第1のコネクタはSSDコネクタであり、少なくとも1つのバスはPCIeバスであり、第2のコネクタはU.2コネクタであり、ストレージデバイスの第1のモード及び第2のモードは、それぞれNVMeモード及びNVMe-oFモードであり、そしてストレージデバイスの複数の動作速度は、2つ以上の10G以上の速度である。
【００２０】
一構成において、第1の時間に、複数のSSDのうちの第1のSSD及び／又は第2のSSDは、複数の動作速度から第1の速度又は第2の速度で第1のモード又は第2のモードで動作する。
【発明の効果】
【００２１】
本発明は、最小限のハードウェアの変更だけでHAモード又はnon-HAモードにおいて、多様なタイプのNVMe及びNVMe-oFデバイスを支援できるプラットフォームを提供する。マルチモードで動作できるデバイス及びプラットフォームが提供されるので、デバイス開発及び配置費用を減らすことができ、デバイスの市場進入時間を速くすることができる。
【００２２】
さらに、本発明は、NVMe及びNVMe-oFプロトコルの双方を支援できるストレージデバイス及びシステムを提供する。したがって、ストレージデバイス及びシステムは、ハードウェアのいかなる変更もせずに、10Gから最大100Gまでの相異なるイーサネット速度で動作することが可能である。
【図面の簡単な説明】
【００２３】
本発明のこれら及び他の特徴は、本明細書、特許請求の範囲及び添付の図面を参照して認識され、理解されるであろう。
【図１Ａ】図1Aは、本発明の一部の例示的な実施例によるNVMe-oFデバイスの構成を図示する。
【図１Ｂ】図1Bは、本発明の一部の例示的な実施例による例示的な1つのSSDのブロック図を図示する。
【図２】図2は、本発明の一部の例示的な実施例による、ミッドプレーン又はCPLD（complex  programmable  logic  device）のブロック図を図示する。
【図３】図3は、本発明の一部の例示的な実施例による、例示的なマルチモードNVMe-oFデバイスの構成によるU.2コネクタの例示的な使用を示す例示的な表を図示する。
【図４Ａ】図4Aaは、本発明の一部の例示的な実施例による、non-HAモードで動作する例示的なNVMe-oFデバイスのブロック図を図示する。
【図４Ｂ】図4Bは、本発明の一部の例示的な実施例による、non-HAモードで動作する例示的なNVMe-oFデバイスのブロック図を図示する。
【図４Ｃ】図4Cは、本発明の一部の例示的な実施例による、HAモードで動作する例示的なNVMe-oFデバイスのブロック図を図示する。
【図４Ｄ】図4Dは、本発明の一部の例示的な実施例による、HAモードで動作する例示的なNVMe-oFデバイスのブロック図を図示する。
【図５Ａ】図5Aは、本発明の一部の例示的な実施例による、例示的なFPGAデバイスのブロック図を図示する。
【図５Ｂ】図5Bは、本発明の一部の例示的な実施例による、例示的なFPGAデバイスの他のブロック図を図示する。
【図６】図6は、本発明の一部の例示的な実施例による、例示的なFPGAデバイスのもう1つのブロック図を図示する。
【図７】図7は、本発明の一部の例示的な実施例による、例示的なスイッチのブロック図を図示する。
【図８】図8は、本発明の一部の例示的な実施例による、ストレージデバイスを動作するための方法のフロー図を図示する。
【発明を実施するための形態】
【００２４】
添付された図面と関連して、以下に提示される詳細な説明は、本発明によって提供されるマルチモード及び／又はマルチ速度NVMe-oF（non-volatile  memory  express  over  fabrics）デバイスを支援するシステム及び方法の一部の例示的な実施例を説明するように意図されており、本発明が構成又は利用され得る唯一の形態を示すようには意図されていない。本説明は、例示された実施例と関連して本発明の特徴を提示する。しかしながら、また本発明の思想及び範囲内に包含されるように意図された他の実施例により、同一又は同等の機能及び構造を達成できることが理解されよう。本明細書の他の箇所で示されるように、同一の参照番号は、同一の構成要素又は特徴を示すためのものである。
【００２５】
NVMe（NVM  express）は、PCIe（peripheral  component  interconnect  express）バスを介して、不揮発性メモリサブシステム（例えば、SSD（solid-state  drive））と通信するホストソフトウェアのためのレジスタレベルのインターフェースを定義する標準である。NVMeは、ホストと周辺対象ストレージデバイス又はシステムを接続したり、ホストと周辺対象ストレージデバイス又はシステムとの間でデータを伝送したりするためのSCSI（small  computer  system  interface）の代案である。PCIe接続されたNVMeSSDは、アプリケーションがストレージに直接意思伝達（talk  directly）をすることを許容する。
【００２６】
NVMeの物理的な接続は、PCIeバスに基づく。一般的なイーサネットSSD（eSSD：Ethernet  SSD）は、PCIeバスを介してミッドプレーンを経由してシステムとインターフェースするU.2コネクタを包含する。U.2（SFF-8639）は、SSDをコンピュータと接続するためのコンピュータインターフェースである。U.2コネクタは、1つのシリアルATA（SATA：serial  advanced  technology  attachment）ポート、2つのシリアルアッタチドSCSI（SAS：serial  attached  SCSI）ポート又はPCIe  SSD内の並列I/Oの最大4つのレーン（X4）を支援できる。U.2コネクタは、NVMeのために標準化されており、一般的なSATA  SSDの速度の5倍を提供するPCIe  3.0  X4を支援する。
【００２７】
NVMe-oF（NVMe  over  fabrics）は、PCIe以外の多様なファブリック（fabric）（又は、相互接続（interconnects））に対する動作を可能にするNVMe標準への拡張である。ここで、「ファブリック」という用語は、ネットワークノードの多様な相互接続プロトコル、ポート、及びスイッチを介して互いにデータを伝達できるネットワークトポロジーを示す。例えば、イーサネット接続SSDをファブリックに直接接続（attach）することができ、この場合、ファブリックはイーサネットである。
【００２８】
NVMe-oFは、NVMeホストデバイス及びNVMeストレージドライブ又はサブシステムが接続できる距離を延長する、PCIeへの代替伝送の使用を可能にする。したがって、NVMe-oFは、NVMeメッセージに基づくコマンドが、ネットワーク（例えば、イーサネット、ファイバチャネル（FC：fibre  channel）又はインフィニバンドを介して、ホストコンピュータと対象ソリッドステートストレージデバイス（例えば、eSSD又はNVMe-oFデバイス）又はシステムとの間でデータを伝送することを可能にするように設計された技術仕様である。NVMe-oF標準を支援するように構成された場合、システムは、イーサネットだけでなく、ファイバチャネル、インフィニバンド又は他のネットワークファブリックも含む、多様なファブリックを支援できる。例えば、eSSDは、ファブリックに直接接続されてよく、この場合、ファブリックはイーサネットである。eSSDは、NVMe-oFプロトコルを支援することができるSSDを指すことがある。説明の便宜のために、以下の例及び実施例は、イーサネット接続NVMe-oFデバイスを示すことができる。しかしながら、本明細書の思想及び範囲から逸脱することなく、任意の異なるタイプのNVMe-oFデバイスを使用することができる。
【００２９】
前述したように、NVMeの物理的接続はPCIeバスに基づく。最近、PCIe  4.0が出現したが、帯域幅の不一致（mismatch）は、PCIe3.0より高い可能性がある。シングル25Gイーサネットは、SSDでX4  PCIe  4.0（最大8GB/s）によりバックエンドについていくのに十分な帯域幅を有していない。50G又は100Gイーサネットは、SSDでX4  PCIe4.0に対する、より良い一致（match）を提供する。したがって、本発明の実施例は、NVMe及びNVMe-oFプロトコルの双方を支援できるストレージデバイス（例えば、eSSD）を包含でき、NVMe-oFモードである場合、ストレージデバイスは、ハードウェアのいかなる変更もせずに、10G（ギガビット毎秒）から最大100Gまでの相異なるイーサネット速度で動作することが可能である。
【００３０】
また、本発明の実施例は、どのようなプラットフォームシステムも、相異なる供給者からの相異なるタイプのNVMe-oFデバイスを支援できるようにする。スイッチボード、ミッドプレーン、そしてイーサネットSSDのような共通のビルディングブロックを使用することにより、エコシステム提供者は既存のシステムより市場に速く進入でき、そして多様な消費者を満足させるために多様な価格／性能の製品を提供できる。一部の例示的な実施例は、PM1725a又はPM1735のような標準U.2及びM.3  SSDのように新たに台頭されるものにより、NVMe-oFデバイスを支援することができる共通のシステムプラットフォームも可能にすることができる。一構成において、M.3  SSDは、NGSFF（next  generation  small  form  factor）ベースのSSDとも称されることがある。
【００３１】
本発明のシステムの他の実施例は、NVMe及びNVMe-oFデバイスの双方を支援できる、共通のビルディングブロック及びシングルプラットフォームを提供し、そして、NVMe-oFモードの場合、システムは、ハードウェアのいかなる変更もせずに、10Gから最大100Gまでの相異なるイーサネット速度で動作することが可能である。NVMe及びNVMe-oFデバイスの双方を支援できる共通のビルディングブロックは、スイッチボード、ミッドプレーン、そしてeSSDを包含できる。本発明のシステムは、より類似したデバイス及び／又はシャーシを追加することにより線形的に拡張できる。本発明のシステムはまた、PM1725a又はPM1735のような標準U.2コネクタ、及びM.3又はNGSFFベースのSSDでNVMe-oFデバイスを支援できる、共通のシステムプラットフォームを提供できる。本発明のシステムの他の構成はまた、50G、100Gのイーサネット及びPCIe  4.0のような技術の発展と互換性があり得る。特に、本明細書の他の構成は、NVMe及びNVMe-oFプロトコルモードの双方、並びに多様なタイプのファブリック接続SSD（例えば、eSSDs）を支援できるシステムを提供する。また、本明細書の他の構成は、デバイスがどこに配置されたのか、及びデータセットの特定位置への配置結果としてどのような性質を採択しなければならないのかを理解するために、シャーシ及びデバイス（例えば、eSSD）がどのようにデバイスを調整するかに関する情報を提供できる。
【００３２】
ここに開示されたファブリック接続SSD（eSSD）は、NVMe及びNVMe-oF標準と互換性のある多様なシステム内で使用されることができる単一の共通デバイスである。イーサネットSSDは、ミッドプレーンを経由してホストデバイスとインターフェースするためにU.2コネクタを使用できる。U.2コネクタは、25Gbps（100G-KR4）イーサネットを支援できる。本明細書で開示されるeSSDは、NVMe及びNVMe-oF標準と互換性のある多様なシステム内で使用されることができるデバイスであり得る。このように、ファブリック接続SSD（eSSD）は、マルチモードNVMe-oFデバイスとも称されることがある。マルチモードNVMe-oFデバイスは、既知の位置（例えば、マザーボード又はミッドプレーンのシャーシタイプピンE6）から製品の情報を検出することにより、NVMe又はNVMe-oF標準のいずれか1つを支援することができる。例えば、U.2コネクタ上の定義された信号（例えば、モード信号）は、NVMeモードで動作するか又はNVMe-oFモードで動作するかをドライブ（drive）に示すことができる。NVMeシャーシ内に存在する場合、U.2コネクタのX4レーンPCIeは、PCIeエンジンによって駆動される。この場合、デバイスは、ファブリック接続ポート（例えば、イーサネットポート、ファイバチャネルポート、又はインフィニバンドポート）を無効（disable）にし、そして全てのNVMeプロトコルと機能を支援するか有効（enable）にする。NVMe-oFシャーシ内に存在する場合、ファブリック接続ポートは、未使用のSASピンのみを使用する。
【００３３】
図1Aは、NVMe-oFデバイス100の構成を図示する。図1AのNVMe-oFデバイス100は、FPGA102、第1のM.3フォーマットSSD114、第2のM.3フォーマットSSD116、2つのDDR4（double  data  rate  4th  generation）メモリ（122、124）、そして4つのキャパシタ（126、128、130、132）を含む。NVMe-oFデバイス100はまた、U.2コネクタ112に連結又は接続され、そしてU.2コネクタ112を経由して2つのSASポート（SAS0及びSAS1）及びPCIe  X4バスの最大4つのPCIe  X4レーンを支援できる。2つのSASポート（SAS0及びSAS1）は、NVMe-oFデバイス100によりイーサネットポートとして使用されることができる。NVMe-oFデバイス100は、ハードウェアのいかなる変更もせずに、10Gから最大100Gまでの相異なるイーサネット速度で動作することが可能である。
【００３４】
図1Bは、一実施例による、例示的なM.3フォーマットSSD134のブロック図を図示する。M.3フォーマットSSD134は、図1aのSSD114又はSSD116であり得る。M.3フォーマットSSD134の新たなフォームファクタ1（NF1：new  form  factor  1）は、2つの行のNANDフラッシュパッケージ（NAND  flash  package）を収容でき、そして、それにより、モジュール式SSDの収容力を最大にすることができる。M.3フォーマットSSD134は、PCIe  X4バス136を経由してFPGAに接続されてよい。FPGAは、図1AのFPGA102であり、PCIe  X4バス136は、図1AのPCIe  X4バス（118、120）うちの1つであり得る。M.3フォーマットSSD134はまた、FPGA（例えば、図1AのFPGA102）と接続するために使用されるM.2コネクタの未使用又は予備（例えば、高速）ピンを使用して、少なくとも1つのオプションイーサネットポート（イーサネットポートA及び／又はイーサネットポートB）138を収容することができる。少なくとも1つのイーサネットポート138は、M.3フォーマットSSD134がNVMe-oFモードで動作することを可能にする。
【００３５】
一部の実施例において、M.3フォーマットSSD134は、2.5インチハードドライブフォームファクタ（又は小型フォームファクタ（SFF：small  form  factor））標準に従うことができる。他の実施例において、M.3フォーマットSSD134は、標準PCIeカードフォームファクタ（例えば、FH-FL（full-height、full-length）カードアウトライン、又はFH-HL（full-height、half-length）アウトライン）に従ってもよい。M.3フォーマットSSD134はまた、コントローラ、バッファメモリ、そしてフラッシュメモリも含むことができる。コントローラは、例えば、バッファメモリ内に又はコントローラ内の（又はコントローラと別個の）読み出し専用メモリROM内に記憶されたソフトウェア、NVMeコマンド、及び／又はファームウェアを実行することができる。図1Bにおいて、eSSD  ASIC140は、FTL（flash  translation  layer）及びフラッシュコントローラを包含する、改良されたSSDコントローラである。
【００３６】
図1Aに戻ると、NVMe-oFデバイス100は、NVMeモード又はNVMe-oFモードのうちのいずれかで動作するように構成されることができる。NVMe-oFモードにおいて、NVMe-oFデバイス100は、2つのPCIeレーン（PCIe1及びPCIe2）をイーサネットポートB106とイーサネットポートD110とで構成できる。NVMe-oFデバイス100はまた、2つのSASポート（SAS0及びSAS1）をイーサネットポートA104とイーサネットポートC108とで構成できる。第1の25Gイーサネットポート104は、U.2コネクタ112のピンS2、S3、S5及びS6に接続されることができ、第2の25Gイーサネットポート106は、U.2コネクタ112のピンS17、S18、S20及びS21に接続されることができ、第3の25Gイーサネットポート108は、U.2コネクタ112のピンS9、S10、S12及びS13に接続されることができ、そして第4の25Gイーサネットポート110は、U.2コネクタ112のピンS23、S24、S26及びS27に接続されることができる。NVMe-oFモードの場合、NVMe-oFデバイス100は、10Gから100Gまでの相異なるイーサネット速度で動作できる。
【００３７】
図1Aにおいて、NVMe-oFデバイス100がNVMe-oFモードで構成される場合、FPGA102は、4つの25Gbpsイーサネットポート（104、106、108、110）と2つのM.3フォーマットSSD（114、116）との間のインターフェースを提供できる。4つの25Gbpsイーサネットポート（104、106、108、110）は、NVMe-oFデバイス100の動作モードに応じてミッドプレーンを介してマザーボードに接続されることができる。一構成において、マザーボードは、1つ以上のスイッチング要素、1つ以上のメモリ要素、1つ以上のI/O要素などを包含できる。FPGA102は、第1のPCIe  X4バス118を経由して、第1のM.3フォーマットSSD114とインターフェースし、そして、第2のPCIe  X4バス120を介して第2のM.3フォーマットSSD116とインターフェースする。第1のPCIe  X4バス118及び第2のPCIe  X4バス120は、それぞれのM.2コネクタを介して第1のM.3フォーマットSSD114及び第2のM.3フォーマットSSD116に接続されることができる。この場合、SSD（114、116）に接続されたM.2コネクタの未使用又は予備（例えば、高速）ピンを、イーサネット接続のために使用することができる。このモードにおいて、FPGA102は、NVMe-oF対象として機能できる。eSSD  ASIC/FPGA102に具現されたNVMe-oF対象は、対象デバイスのマザーボード上のX86ベースの中央処理ユニット（CPU）の必要性を取り除く全てのネットワーク及びストレージプロトコル処理（storage  protocol  processing）を提供する。NVMe-oFベースのシステムにおいて、対象デバイスが自らデータを運搬できるので、マザーボード上のX86ベースのCPUは、イニシエータ（initiator）（例えば、ホストソフトウェア）と対象デバイス（すなわち、NVMe-oFデバイス）との間でデータを運搬するためにこれ以上必要とされない。
【００３８】
一構成において、NVMe-oFデバイス100は、NVMeモードで構成されることができる。NVMeモードにおいて、NVMe-oFデバイス100は、PCIe  X4バスを介してPCIe信号を運搬するために、4つのPCIe  X4レーン（シングルポートモードにおいて）の全てを使用できる。PCIe  X4バスは、ミッドプレーンに接続され、そしてPCIeバスは、データと制御信号との間で共有される。一観点において、所与の時間に、NVMe-oFデバイス100の第1のM.3フォーマットSSD114及び第2のM.3フォーマットSSD116の双方が、NVMeモード又はNVMeモードのいずれかで動作できる。他の観点において、所与の時間に、第1のM.3フォーマットSSD114はNVMeモードで動作でき、第2のM.3フォーマットSSD116はNVMe-oFモードで動作できる。もう1つの観点において、所与の時間に、第1のM.3フォーマットSSD114はNVMe-oFモードで動作でき、第2のM.3フォーマットSSD116はNVMeモードで動作できる。
【００３９】
NVMe-oFデバイス100の動作モードは、マザーボードのBMCから受け取ったインバンドコマンドにより、又は物理的ピン（例えば、マザーボードのシャーシ上のプレゼンス（presence）ピン（ピンE6））を使用して、外部的に設定されたり、あるいは自己構成（self-configured）されたりすることができる。イーサネットを通して取り出される管理情報は、「インバンド」情報と称され、一方、PCIeバスを通して取り出される管理情報は、「アウトオブバンド」情報と称される。NVMe-oFデバイスとして構成される場合、マルチモードNVMe-oFデバイス100（シャーシタイプピンE6=low）は、シングルポートNVMe-oFモード又はデュアルポートNVMe-oFモードのいずれかで構成されることができる。シングルポートNVMe-oFモードにおいて、U.2コネクタ112のピンE25はハイ（high）であり、デュアルポートNVMe-oFモードにおいて、U.2コネクタ112のピンE25はロー（low）であり得る。
【００４０】
図2は、本発明の一部の例示的な実施例による、ミッドプレーン又はCPLDのブロック図である。一構成において、図2を参照すると、NVMe-oFデバイス100の相異なる動作速度は、ミッドプレーン又はCPLD204に位置する2つの追加的な汎用入出力（GPIO）ピン202（ESpeed[1:0]）を使用することによって達成されることができる。GPIOピン202は、マザーボード上のBMC又はローカルCPU、あるいはNVMe-oFデバイス100のFPGA102の内部にある内部レジスタにより制御されることができ、U.2コネクタ112のピンE23及びE24に接続されたI2Cバスを経由してアクセス可能である。以前のオプションにおいて、ESpeedピン202は、CPLD204内部のU.2  I2Cピンと多重化（mux）され、そして（ハイからローへ）リセット207が宣言（assert）された後にラッチ（latch）されることができる。一構成において、MUXへの入力は、マザーボード上のBMC又はローカルCPU、又はCPLD204によって駆動される。しかしながら、一部の構成において、MUXの位置は、CPLD204の内部である。MUXの個数は、支援されるシャーシ内のNVMe-oFデバイスの最大個数と同じである。このようにすれば、各デバイスを、個別的に、そして独立的にリセットすることができる。この方法は、ホットプラグ可能イベント（ホットアド（hot  add）及びホットリムーバル（hot  removal））を支援できる。仮に1つのMUXを全てのデバイスと共有する場合、新たなデバイスがホットインサート（hot  insert）されると、リセットサイクルによりシャーシ内の既存のデバイスに影響を与えることがあり、これは好ましくない可能性がある。
【００４１】
この場合、CPLD204は、マザーボード上のBMC又はローカルCPUにより制御されることができる。BMC又はローカルCPUからの制御信号を、CPLD204のCPLD/BMC  GPIOピン206で受信することができる。以下の表1は、NVMe-oFデバイス100の相異なる動作速度中のESpeedピンの状態を示す。
【表１】
2019153300.tif 000003
さらに、イーサネット速度は、電源がパワーオンされたり、リセットされたりする間に、システム管理バス208（SMBus：system  management  bus）を使用して選択される。一構成において、マルチプレクサは、パワーオン又はリセット信号207により選択され、そしてリセット207が、アクティブ・ロー（active  low）の場合、マルチプレクサはFPGA102に対してESpeed[1:0]  202を選択でき、リセット207がハイの場合、マルチプレクサは、各スロット間のSMBus208をスイッチボード上のBMCに接続することができる。
【００４２】
一構成において、マルチモードNVMe-oFデバイス100は、シングルポートNVMeモード、デュアルポートNVMeモード、シングルポートNVMe-oFモード及びデュアルポートNVMe-oFモードで構成されることができる。
【００４３】
図3は、図1AのマルチモードNVMe-oFデバイス100の構成によるU.2コネクタ112の例示的な使用を図示する。NVMeデバイス（シャーシタイプピンE6=low）で構成される場合、マルチモードNVMe-oFデバイス100は、シングルポートNVMeモード又はデュアルポートNVMeモードのいずれかで構成されることができる。シングルポートNVMeモードにおいて、U.2コネクタ112のデュアルポートEN#ピンE25はハイ（high）を宣言されることができる。シングルポートNVMeモードにおいて、U.2コネクタ112のPCIeレーン0〜3は、PCIe信号を運搬するのに使用される。デュアルポートNVMeモードにおいて、U.2コネクタ112のデュアルポートEN#ピンE25はロー（low）を宣言されることができる。デュアルポートNVMeモードにおいて、PCIeレーン0〜3は2×2レーンに分割される。PCIeレーンの0及び1は、第1のポート（ポートA）のために使用され、PCIeレーン2及び3は第2のポート（ポートB）のために使用される。
【００４４】
一構成において、マルチモードNVMe-oFデバイス100がNVMe-oFモードである場合、NVMe-oFデバイス100は、第1の（ポートA）及び第2の（ポートB）イーサネットポートのためのコントロールプレーンのために、2つのX1  PCIeレーン（PCIe  0及びPCIe  3）を有し得る。このような構成は、2つのPCIeレーン（PCIe1及びPCIe2）を、追加的な25Gイーサネットポート（イーサネットポートB及びD）のために使用可能にすることができる。一部の構成において、NVMe-oFデバイス100が、NVMe-oFモードで10G（シングルポート又はデュアルポート）又は20G（シングルポート又はデュアルポート）の速度で動作している場合、SASポート0は、イーサネットポート（第1のポート）のために使用され、そしてSASポート1は使用されない。PCIeレーン0及び3は、第1の（ポートA）及び第2の（ポートB）イーサネット接続NVMe-oFコントローラのためのコントロールプレーンとして使用され、PCIeレーン1は、イーサネットポートB（第2のポート）のために使用され、そしてPCIeレーン2は使用されない。一部の他の構成において、NVMe-oFデバイス100が、NVMe-oFモードで50G（シングルポート又はデュアルポート）又は100G（シングルポートのみ）の速度で動作している場合、SASポート0は、イーサネットポートA（第1のポート）のために使用され、そしてSASポート1は、イーサネットポートC（第3のポート）として使用される。PCIeレーン0及び3は、第1の（ポートA）及び第2の（ポートB）イーサネット接続NVMe-oFコントローラのためのコントロールプレーンとして使用され、PCIeレーン1はイーサネットポートB（第2のポート）のために使用され、そして、PCIeレーン2はイーサネットポートD（第4のポート）のために使用される。
【００４５】
一部の構成において、製品情報（product  information）がシャーシに記憶される場合、U.2コネクタ112上のPCIeバスの2つのレーン（シングルポートモードで）又は4つのレーン（デュアルポートモードで）が、PCIeエンジンにより駆動される。この場合、マルチモードNVMe-oFデバイス100は、イーサネットエンジンを無効にすることができ、そして、NVMeプロトコル及び機能が支援されるか又は有効にされる。製品情報がNVMe-oFシャーシに記憶される場合、イーサネット接続NVMe-oFコントローラは、マルチモードNVMe-oFデバイスの設計によりPCIeレーン1及び2、及び／又はSASピンのみを使用する。
【００４６】
一部の場合において、自己構成（self-configuration）のために使用される製品情報は、重要製品データ（VPD：vital  product  data）の形態でシャーシに記憶される。スタートアップ中に、マルチモードNVMe-oFデバイス100は、シャーシからVPDを取り出すことができ、VPDに基づいて自己構成することができる。一部の構成において、マルチモードNVMe-oFデバイス100は、本明細書の思想から逸脱せずに多様な方式で構成されることができる。例えば、マルチモードNVMe-oFデバイス100は、マルチモードNVMe-oFデバイス100と接続されたマザーボードのBMCにより発行された、PCIeバスを介したコントロールコマンドによって構成されることができる。本発明のシステムは、最小限のハードウェアの変更だけで、non-HAモード（すなわち、単一経路入出力（I/O））又はHAモード（すなわち、マルチ経路（I/O））において多様な形態のNVMe及びNVMe-oFデバイスを支援することができるプラットフォームを提供する。
【００４７】
図4A及び図4Bは、一実施例によるnon-HAモードで動作する例示的なNVMe-oFデバイスのブロック図を図示する。NVMe-oFデバイス400は、図1AのNVMe-oFデバイス100であり得る。本例示において、NVMe-oFデバイス400は、単一経路I/Oを支援でき、そして、ハードウェアのいかなる変更もせずに、10Gから最大100Gまでの相異なるイーサネット速度で動作できる。NVMe-oFデバイス400は、FPGA402、第1のM.3フォーマットSSD414、第2のM.3フォーマットSSD416、2つのDDR4メモリ（422及び424）を包含できる。FPGA402は、第1のPCIe  X4バス418を経由して第1のM.3フォーマットSSD414とインターフェースし、そして、FPGA402は、第2のPCIe  X4バス420を経由して第2のM.3フォーマットSSD416とインターフェースする。NVMe-oFデバイス400はまた、U.2コネクタ412にも接続され、そしてU.2コネクタ412を介してNVMe-oFデバイス400は、2つのSASポート（SAS0及びSAS1）及びPCIe  X4バスの最大4つのPCIe  X4レーンを支援できる。2つのSASポート（SAS0及びSAS1）は、イーサネットポートとして使用されることができる。NVMe-oFデバイス400は、2つのPCIeレーン（PCIe1、PCIe2）をイーサネットポート406（イーサネットポートB）及びイーサネットポート410（イーサネットポートD）として構成できる。NVMe-oFデバイス400はさらに、イーサネットポート404（イーサネットポートA）及び408（イーサネットポートC）として2つのSASポート（SAS0及びSAS1）を構成できる。第1の25Gイーサネットポート404はU.2コネクタ412のピンS2、S3、S5及びS6に接続されることができ、第2の25Gイーサネットポート406は、U.2コネクタ412のピンS17、S18、S20及びS21に接続されることができ、第3の25Gイーサネットポート408はU.2コネクタ412のピンS9、S10、S12及びS13に接続されることができ、そして、第4の25Gイーサネットポート410はU.2コネクタ412のピンS23、S24、S26及びS27に接続されることができる。
【００４８】
一構成において、イーサネットポート（404、406、408及び410）は、いくつかの高速Molexコネクタ428を経由して、ミッドプレーン426を介してマザーボード401と接続されることができる。いくつかの高速Molexコネクタ428は、全てのイーサネットポート（404、406、408、410）、及びSMBus、リセット、クロックなどのような他の非高速（non-high  speed）制御信号を集合的に担持できる。マザーボード401は、ローカルCPU434、BMC432、イーサネットスイッチコントローラ436、PCIeスイッチ438、そして2つのDDR4メモリ（440、442）を包含できる。一部の構成において、マザーボード401は、ミッドプレーン426を介して、NVMe-oFデバイス400に多様な信号をプッシュ（push）でき、そして、イーサネットポート（404、406、408、410）を介してNVMe-oFデバイス400上で多様なサービスを実行できる。例えば、マザーボード401は、NVMe-oFデバイス400からイーサネットポート（404、406、408、410）を介してデバイス固有情報を受信できる。デバイス固有情報は、NVMe-oFデバイス400のヘルス状態情報（health  status  information）、フィールド交換可能ユニット（FRU：field-replaceable  unit）情報、及びセンサ情報を包含するが、これに限定されない。マザーボード401は、イーサネットポート（404、406、408、410）を介して、BMC（例えば、BMC432）又はローカルホストCPU（例えば、CPU434）への探索サービス、及びファームウェアアップグレードを実行するための新たなeSSDファームウェアについてのダウンロードサービスを包含するが、これに限定されない多様なサービスをさらに遂行できる。
【００４９】
図4C及び図4Dは、一実施例によるHAモードで動作する例示的な図4Bの例示的なNVMe-oFデバイス400のブロック図を図示する。この例示において、NVMe-oFデバイス400は、マルチ経路I/Oを支援でき、そして、ハードウェアのいかなる変更もせずに、10Gから最大100Gまでの相異なるイーサネット速度で動作することが可能である。HAモードにおいて、NVMe-oFデバイス400は、ミッドプレーン426を介してデュアルポート構成（HAモードで）でマルチI/Oを支援するために、2つのマザーボード（401、403）に接続されることができる。ミッドプレーン426は、HAモードとnon-HAモードの双方を支援できる共通のミッドプレーンである。システムの構成に応じて、信号インテグリティー（signal  integrity）は、共通のミッドプレーン426が両方の構成を支援できることを保証するために検査される必要があり得る。信号インテグリティーが十分でない場合、システムは、HAモードのための第1のミッドプレーンとnon-HAモードのための第2のミッドプレーンとを包含する、2つのミッドプレーンバージョンを有し得る。U.2コネクタのE25ピンは、デュアルポートの構成を可能にするのに使用されることができる。NVMe-oFデバイス400は、マザーボード（401又は403）のBMC（432又は444）からインバンドコマンドにより、又はマザーボード（401又は403）のシャーシ上の物理的ピン（プレゼンスピン（ピンE6））を使用して、デバイスの動作モードを自己構成することができる。
【００５０】
一構成において、HAモードで動作するとき、NVMe-oFデバイス400のイーサネットポート404（イーサネットポートA）及びイーサネットポート406（イーサネットポートB）は、高速Molexコネクタ428を経由して、ミッドプレーン426を介してマザーボード401と接続されることができる。高速Molexコネクタ428は、イーサネットポート（404、406）、及びSMBus、リセット、クロックなどのような他の非高速コントロール信号を集合的に担持できる。また、HAモードにおいて、NVMe-oFデバイス400のイーサネットポート408（イーサネットポートC）及びイーサネットポート410（イーサネットポートD）は、いくつかの高速Molexコネクタ456を経由して、ミッドプレーン426を介して第2のマザーボード403と接続されることができる。いくつかの高速Molexコネクタ456は、イーサネットポート（408、410）、及びSMBus、リセット、クロックなどのような他の非高速コントロール信号を集合的に担持できる。第2のマザーボード403は、ローカルCPU446、BMC444、イーサネットスイッチコントローラ448、PCIeスイッチ450、そして2つのDDR4メモリ（452、454）を包含できる。
【００５１】
マルチモードNVMe-oFデバイス400が、NVMe及びNVMe-oFモードの双方において動作できるので、同じデバイスがNVMeモードとNVMe-oFモードとで使用されることができるため、デバイスの開発及び配置費用を減らすことができる。同様の理由により、マルチモードNVMe-oFデバイス400は、より速い市場の進入時間を有し得る。マルチモードNVMe-oFデバイスは、多様な製品及びシャーシで使用されることができる。PCIeバスの2つのレーンは、コントロールプレーンを介して標準仕様のために確保される。追加的な費用なしに、CPU、BMC、そして別のデバイスは、シャーシ内の各NVMe-oFデバイスと通信するためのコントロールプレーンとしてPCIeバスの2つのレーンを使用できる。NVMeミッドプレーンは変形されずに使用されることができ、そしてミッドプレーン上に位置した追加的なGPIOピン（例えば、図2のESpeed[1:0]202）により、NVMe-oFデバイス400上の新たなコネクタは必要とされない。また、任意のプラットフォームシステムが、相異なる供給者からの相異なるタイプのNVMe-oFデバイスを支援することが好ましい。スイッチボード、ミッドプレーン、そしてイーサネットSSDのような共通のビルディングブロックを使用することにより、本発明の他の実施例は、既存のエコシステム供給者がより速く市場に進入できるようにし、そして、多様な消費者を満足させるために多様な価格／性能の製品を提供できるようにする。また、PM1725a又はPM1735のような標準U.2及びM.3又はNGSFFベースのSSDのように新たに台頭されるものによりNVMe-oFデバイスを支援できる、共通のシステムプラットフォームを有することが好ましい。
【００５２】
図5A及び図5Bは、一実施例による例示的なFPGAデバイス500を図示したブロック図である。FPGA500は、図1AのFPGA102であり得る。FPGA500は、U.2コネクタ502と複数のフラッシュドライブ（例えば、図1Aの2つのM.3  SSD（114、116）との間のインターフェースを提供できる。FPGA500はまた、複数のDDR4メモリ（例えば、図1Aの2つのDDR4メモリ122、124）にも接続されることができる。例えば、FPGA500は、PCIe  X4バス（例えば、図1Aの第1のPCIe  X4バス118）に接続されるポート518を経由して第1のSSD（例えば、図1Aの114）とインターフェースでき、そしてFPGA500は、他のPCIe  X4バス（例えば、図1Aの第1のPCIe  X4バス120）に接続されるポート522を経由して、第2のSSD（例えば、図1Aの116）とインターフェースできる。FPGA500は、またポート516を経由して第1のDDR4メモリ（例えば、図1Aの122）と、ポート520を経由して第2のDDR４メモリ（例えば、図1Aの124）と接続されることができる。
【００５３】
FPGA500に接続されたU2コネクタ502は、2つのSASポート（SAS0及びSAS1）及びPCIe  X4バスの最大4つのPCIe  X4レーンを支援できる。2つのSASポート（SAS0及びSAS1）は、イーサネットポートとして使用されることができる。NVMe-oFモードにおいて、2つのPCIeレーン（PCIe1及びPCIe2）は、イーサネットポート1（510）とイーサネットポート3（512）とで構成されることができる。NVMe-oFモードにおいて、2つのSASポート（SAS0及びSAS1）は、イーサネットポート0（506）とイーサネットポート2（508）とで構成されることができる。イーサネットポート0（506）は、U.2コネクタ502のピンS2、S3、S5及びS6に接続されることができ、イーサネットポート1（510）は、U.2コネクタ502のピンS9、S10、S12及びS13に接続されることができ、イーサネットポート2（508）は、U.2コネクタ502のピンS23、S24、S26及びS27に接続されることができ、そしてイーサネットポート3（512）は、U.2コネクタ502のピンS17、S18、S20及びS21に接続されることができる。
【００５４】
一実施例において、NVMe-oFモードでは、U.2コネクタ502の2つのX1  PCIeレーン（PCIe0（504）及びPCIe3（514））は、第1の（ポート0）及び第2の（ポート1）イーサネットNVMe-oFコントローラのためのコントロールプレーンのために構成されることができる。コントロールプレーンPCIeレーン（PCIe0（504））は、U.2コネクタ502のピンE10、E11、E13及びE14に接続されることができ、コントロールプレーンPCIeレーン（PCIe3（514））はU.2コネクタ502のピンE17、E18、E20及びE21に接続されることができる。一部の構成において、図5Aに図示されるように、NVMe-oFモードにおいて、FPGA500が50G（シングルポート又はデュアルポート）速度で動作している場合、SASポート0はイーサネットポート0（506）のために使用され、そしてSASポート1はイーサネットポート2（508）として使用される。PCIeレーン0（504）及びPCIeレーン3（514）は、コントロールプレーンとして使用され、PCIeレーン1（510）はイーサネットポート1のために使用され、そしてPCIeレーン2（512）はイーサネットポート3のために使用される。
【００５５】
他の構成において、図5Bに図示されるように、NVMe-oFモードにおいて、FPGA500が100G（シングルポート）速度で動作している場合、SASポート0はイーサネットポート0（506）のために使用され、そしてSASポート1はイーサネットポート2（508）として使用される。PCIeレーン0（504）はコントロールプレーンとして使用され、PCIeレーン1（510）はイーサネットポート1のために使用され、そしてPCIeレーン2（512）はイーサネットポート3のために使用される。コントロールプレーンPCIeレーン3（514）は使用されない。
【００５６】
一部の構成において、ポート（504、506、508、510、512、514）は、FPGA500に接続されたSSDの動作モードに応じて、ミッドプレーン（例えば、図4A及び図4Bの426）を介して、マザーボード（例えば、図4A及び図4Bの401、403）に接続されることができる。一部の構成において、FPGA500は、NVMe対象として機能でき、そして対象デバイスにあるマザーボード上のX86ベースのCPUの必要性をなくすことができる。NVMe-oFベースのシステムにおいて、対象デバイス（すなわち、NVMe-oFデバイス）が自らデータを運搬できるので、マザーボード上のX86ベースのCPUは、イニシエータ（例えば、ホストソフトウェア）と対象デバイスとの間でデータを運搬するためにこれ以上必要とされない。また、FPGA500に接続された複数のフラッシュドライブ（例えば、図1Aの2つのM.3フォーマットSSD114、116）の相異なる動作速度は、ミッドプレーン又はCPLD（例えば、図2の204）上に位置した2つの追加的なGPIO（ESpeed[1:0]）ピン（例えば、図2のピン202）を使用することによって達成できる。ミッドプレーン又はCPLD上に位置した2つの追加的なGPIOピンは、FPGA500内部の1つ以上の内部レジスタにより制御されることができる。
【００５７】
一実施例において、イーサネットパケットがFPGA500で受信される場合、FPGA500内部の論理ブロックは、イーサネットパケット内部のヘッダーの多様なレイヤー（layer）を剥がすことに携わることができる。例えば、イーサネットパケット内部にはTCP又はUDPパケットがあり、TCP又はUDPパケットの内部にはRDMAパケットがあり、RDMAパケットの内部にはNVMe-oFパケットがあり、そしてNVMe-oFパケットの内部にはNVMeコマンドがあり得る。FPGA500内部の論理ブロックは、イーサネットパケットが再び剥がされてプロトコルの次のレイヤーを露出させる多様なレイヤーを示すことができる。ポート（518、522）を経由してFPGA500に接続されるフラッシュドライブ又はSSDは、まるでU.2コネクタ502を経由して、イーサネットポート（506、508、510、512）の他方の端にあるホスト又はマザーボードに接続されているかのようにNVMeコマンドを使用できる。
【００５８】
図6は、一実施例による例示的なFPGAデバイス600を図示するブロック図である。FPGAデバイス600は、FPGA601を包含できる。FPGA601は、U.2コネクタ606と複数のフラッシュドライバ（例えば、603A、603B）との間のインターフェースを提供できる。例えば、FPGA601は、PCIe  X4バスに接続されることができるポート607を経由してフラッシュドライバ603Aとインターフェースでき、そしてFPGA601は、もう1つのPCIe  X4バスに接続されることができるポート608を経由してフラッシュドライバ603Bとインターフェースできる。FPGA601はまた複数のDDR4メモリ（例えば、602A〜602J）にも接続されることができる。FPGA601はまたクロック回路614にも接続されることができる。
【００５９】
U.2コネクタ606は、2つのマルチプレクサ（610、612）を通してPCIe  X4バス（604、605）を経由し、FPGA601に接続されることができる。PCIe  X4バス604は、マルチプレクサ610を通して、U.2コネクタ606を経由してミッドプレーンを介してマザーボードに信号又はパケットを伝送するのに使用されることができ、そしてPCIe  X4バス605は、マルチプレクサ612を通して、U.2コネクタ606を経由してミッドプレーンを介してマザーボードからパケットを受信するのに使用されることができる。一部の構成において、FPGA601に接続された複数のフラッシュドライブ（例えば、603A、603B）の相異なる動作速度は、ミッドプレーン又はCPLD（例えば、図2の204）上に位置した2つの追加的なGPIO（ESpeed[1:0]）ピン（例えば、図2のピン202）を使用することにより達成されることができる。ミッドプレーン又はCPLD上に位置した2つの追加的なGPIOピンは、FPGA601内部の1つ以上の内部レジスタにより制御されることができる。表１は、FPGA601に接続された複数のフラッシュドライブ（例えば、603A、603B）の相異なる動作速度中のESpeedピンの状態を図示する。
【００６０】
図7は、一実施例による2つのマザーボードを包含する例示的なスイッチを図示するブロック図である。スイッチ700は、ミッドプレーン761を経由して、デュアルポート構成（HAモードにおいて）においてマルチI/Oを支援するために、2つのマザーボード（701A、701B）を包含する。マザーボード701Aは、イーサネットスイッチ704A及びPCIeスイッチ705Aを包含し、マザーボード701Bは、イーサネットスイッチ704B及びPCIeスイッチ705Bを包含する。それぞれのマザーボード（701A、701B）は、別の構成要素及びモジュール、例えば図4Aに図示される例示的なマザーボード401に示されるようなローカルCPU（706A、706B）、BMC（707A、707B）などを含むことができる。
【００６１】
いくつかのeSSDを、スイッチ700のデバイスポートにプラグイン（plug  into）することができる。例えば、eSSDのそれぞれは、U.2コネクタを使用してスイッチ700に接続されることができる。それぞれのeSSDは、マザーボード701A及びマザーボード701Bの双方に接続できる。本実施例において、スイッチ500にプラグインされたeSSDはNVMe-oFデバイスとして構成される。NVMe-oFデバイスは、PCIeバスとイーサネットポートを介してミッドプレーン761を経てスイッチ700との接続を要求する。
【００６２】
図8は、本発明の一実施例によるストレージデバイスを動作させるための方法のフロー図である。ストレージデバイスは、図4AのNVMe-oFデバイス400であり得る。
【００６３】
S801において、ストレージデバイスは第1の入力を受信する。ストレージデバイスは、ミッドプレーンを介して複数のデバイスポートを経由してマザーボード又はBMCから第1の入力を受信できる。例えば、NVMe-oFデバイス400は、図4Aのミッドプレーン426を介してデバイスポート（404〜406）を経由してマザーボード401又はBMC432から第1の入力を受信できる。
【００６４】
一構成において、第1の入力は、BMCからインバンドコマンドにより、又はマザーボードのシャーシ上の物理的ピンを使用することにより制御されることができる。例えば、第1の入力は、図4aのマザーボード401のシャーシ上の物理的ピン（E6）を使用することにより制御されることができる。
【００６５】
S802において、第1の入力に基づいて、ストレージデバイスは、第1の動作モードで動作するか又は第2の動作モードで動作するかを判定する。一構成において、ストレージデバイスの第1の動作モード及び第2の動作モードは、NVMeモード及びNVMe-oFモードであり得る。例えば、第1の入力に基づいて、NVMe-oFデバイス400は、NVMeモードで動作するか又はNVMe-oFモードで動作するかを判定する。
【００６６】
S802において第1の入力に基づいてストレージデバイスが第1の動作モードで動作すると判定した場合、S803において、ストレージデバイスは、第1の動作モードに応じて記憶動作を実行する。例えば、第1の入力に基づいてNVMe-oFデバイス400がNVMeモードで動作すると判定した場合、NVMe-oFデバイス400は、NVMeプロトコルにより記憶動作を実行する。
【００６７】
しかしながら、S802において第1の入力に基づいてストレージデバイスが第2の動作モードで動作すると判定した場合、S804において、ストレージデバイスは、第2の動作モードに応じて記憶動作を実行する。例えば、第1の入力に基づいてNVMe-oFデバイス400がNVMe-oFモードで動作すると判定した場合、NVMe-oFデバイス400は、NVMe-oFプロトコルにより記憶動作を実行する。
【００６８】
S805において、第2の動作モードで動作しているとき、ストレージデバイスは第2の信号を受信する。ストレージデバイスは、複数のデバイスポートを経由してミッドプレーンから第2の信号を受信できる。例えば、NVMe-oFモードで動作している間、NVMe-oFデバイス400は、図4Aの複数のデバイスポート404〜406を経由してミッドプレーン426から第2の信号を受信できる。
【００６９】
一構成において、第2の信号は、ミッドプレーン上に位置し、マザーボードのBMC又はローカルCPU、又はストレージデバイスのFPGA内部の１つ以上の内部レジスタにより制御される、2つのGPIOピンを使用することにより制御されることができる。例えば、第2の信号は、ミッドプレーン426上に位置し、マザーボード401のBMC432又はローカルCPU434、又は図4aのNVMe-oFデバイス400のFPGA402内部の内部レジスタにより制御される、2つのGPIOピン（例えば、図2の（ESpeed[1:0]）ピン202）を使用することにより制御されることができる。
【００７０】
S806において、第2の信号に基づいて、ストレージデバイスは、ストレージデバイスのための複数の動作速度から動作速度を選択する。例えば、第2の信号に基づいて、NVMe-oFデバイス400は、ストレージデバイスのための複数の動作速度から動作速度を選択する。例えば、NVMe-oFモードで動作している間、第2の信号に基づいて、NVMe-oFデバイス400は100Gの動作速度を選択する。一構成において、ストレージデバイスの複数の動作速度は、10Gと100Gとの間の任意の数の速度であり得る。
【００７１】
S807において、第2の動作モードで動作している間、ストレージデバイスは選択された動作速度で動作する。例えば、NVMe-oFモードで動作する中、NVMe-oFデバイス400は、100Gの動作速度で動作する。
【００７２】
本明細書において、多様な要素、構成要素、領域（region）、レイヤー及び／又はセクションを説明するために、「第1」、「第2」、「第3」などの用語が使用されるとしても、このような要素、構成要素、領域、レイヤー及び／又はセクションは、このような用語により制限されないものと理解されるべきである。このような用語は、単に他の要素、構成要素、領域、レイヤー又はセクションから1つの要素、構成要素、領域、レイヤー又はセクションを区別するために使用される。したがって、本明細書に開示される第1の要素、構成要素、領域、レイヤー又はセクションは、本発明の思想及び範囲から逸脱することなく、第2の要素、構成要素、領域、レイヤー又はセクションと称される可能性がある。
【００７３】
本明細書において説明の便宜のために、「下（beneath、below）」、「下方（lower）」、「下（under）」、「上（above）」、「上方（upper）」などのように、相対的空間用語は、図面に図示されたように、1つの要素又は特徴の異なる要素又は特徴との関係を説明するために利用されることができる。このような相対的空間用語は、図面に描写された方向だけでなく、使用又は動作において、デバイスの他の方向を包含するものと意図される。例えば、図面のデバイスが反転されると、他の要素又は特徴の「下（below、beneath、under）」として説明される要素は、他の要子又は特徴の「上」に向けられることになるであろう。したがって、「下」又は「下方」の例示用語は、上及び下の方向の双方を包含できる。デバイスが、他の方向に向けられる（例えば、90°又は他の方向に回転される）こともあり、本明細書において使用される相対的空間記述語は、これに応じて解釈されなければならない。なお、レイヤーが2つのレイヤーの「間に」あるものとして示される場合、レイヤーは、2つのレイヤーの間の唯一のレイヤーとすることができ、あるいは1つ以上の間に入るレイヤーが存在することもある。
【００７４】
本明細書で使用される用語は、特定の実施例を説明する目的のためだけに使用され、本発明の技術的思想を限定することは意図されていない。本明細書において使用されるとき、「概ね」、「約」という用語、そして、これと類似した用語は近似値の用語として使用され、程度の用語として使用されず、本発明の当業者によって識別される、測定された又は計算された値の固有の変動を考慮するためのものである。
【００７５】
本明細書において使用されるとき、文脈上、明白に別なものと意味しない限り、単数の形の「a」及び「an」は複数の形も包含するものと意図される。「含む（comprises）」及び／又は「含んでいる（comprising）」という用語は、本明細書で使用されるとき、定められた特徴、整数、ステップ、動作、要素、及び／又は構成要素の存在を明示するが、1つ又はそれ以上の別の特徴、整数、ステップ、動作、要素、構成要素、及び／又はそのグループの追加又は存在を排除しないことがさらに理解されるであろう。本明細書で使用されるとき、「及び／又は」という用語は、羅列された関連する項目の1つ以上のいずれか及び全ての組み合わせを包含する。要素のリストに先行する「少なくとも1つ」という表現は、要素の全体リストを修正し、そしてリストの個別要素を修正しない。なお、本発明の実施例を記述するとき、「してよい（may）」の使用は、「本発明の1つ以上の実施例」を指す。なお、「例示」という用語は例又は図案を意味する。本明細書で使用されるとき、「使用（use,）」、「使用される（using,）」、そして「使用された（used）」という用語は、それぞれ、「利用（utilize,）」、「利用される（utilizing,）」、そして「利用された（utilized,）」という用語の同意語として見なされることができる。
【００７６】
要素又はレイヤーが異なる要素又はレイヤーの「上に（on）」ある、「接続された（connected  to）」、「結合された（coupled  to）」又は「隣接した（adjacent  to）」と言及されるとき、それは別の要素又はレイヤーに対して直接上にあるか、接続され、結合され又は隣接してよく、あるいは1つ以上の中間要素又はレイヤーが存在してもよい。対照的に、1つの要素又はレイヤーが別の要素又はレイヤーに「直接上に（directly  on）」、「直接接続された（directly  connected  to）」、「直接結合された（directly  coupled  to）」又は「直ぐに隣接した（immediately  adjacent  to）」と言及されるとき、中間要素又はレイヤーが存在しない。
【００７７】
本明細書で引用された任意の数値範囲は、引用された範囲内に包含される同じ数値精度の全ての部分範囲を包含するように意図される。例えば、「1.0〜10.0」の範囲には、引用された最小値1.0と引用された最大値10.0との間にある（そして、包含する）全ての部分範囲、すなわち、例えば、2.4から7.7までのように、1.0以上の最小値及び10.0以下の最大値を有する全ての部分範囲が包含される。本明細書に引用された任意の最大数値の制限は、本明細書に包含される、より低い全ての数値制限を包含するように意図され、本明細書に引用される任意の最小数値の制限は、本明細書に包含される、より高い全ての数値制限を包含するように意図される。
【００７８】
マルチモード及び／又はマルチ速度NVMe-oFデバイスを支援するシステム及び方法の例示的な実施例が本明細書において具体的に説明されて例示されたが、多くの修正及び変更が当業者には明らかであろう。したがって、本明細書に具体的に説明されたもの以外に、本発明の原理に基づいて構成されるマルチモード及び／又はマルチ速度NVMe-oFデバイスを支援するシステム及び方法を具現化することができることが理解されよう。本発明はまた、以下の特許請求の範囲及びその等価物によって定義される。
【産業上の利用可能性】
【００７９】
本発明は、マルチモードで動作できるデバイス及びプラットフォームが提供され、最小限のハードウェアの変更だけでNVMe及びNVMe-oFプロトコルの双方を支援できるストレージデバイス及びシステムの具現に有用である。
【符号の説明】
【００８０】
100：マルチモードNVMe-oFデバイス
134：M.3フォーマットSSD
204：CPLD
400：NVMe-oFデバイス
401：マザーボード
600：FPGAデバイス
700：スイッチ
【図１Ａ】
2019153300.tif 000004
【図１Ｂ】
2019153300.tif 000005
【図２】
2019153300.tif 000006
【図３】
2019153300.tif 000007
【図４Ａ】
2019153300.tif 000008
【図４Ｂ】
2019153300.tif 000009
【図４Ｃ】
2019153300.tif 000010
【図４Ｄ】
2019153300.tif 000011
【図５Ａ】
2019153300.tif 000012
【図５Ｂ】
2019153300.tif 000013
【図６】
2019153300.tif 000014
【図７】
2019153300.tif 000015
【図８】
2019153300.tif 000016