(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-14
(45)【発行日】2022-07-25
(54)【発明の名称】マルチモード及び/又はマルチ速度NVMe-oFデバイスを支援するシステム及び方法
(51)【国際特許分類】
G06F 13/38 20060101AFI20220715BHJP
G06F 13/10 20060101ALI20220715BHJP
G06F 13/14 20060101ALI20220715BHJP
【FI】
G06F13/38 320A
G06F13/10 310E
G06F13/10 340A
G06F13/14 330C
G06F13/14 330G
G06F13/38 350
(21)【出願番号】P 2019034565
(22)【出願日】2019-02-27
【審査請求日】2022-01-28
(32)【優先日】2018-03-01
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-06-13
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ソムポン ポール オラリグ
(72)【発明者】
【氏名】フレッド ウォーリー
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2018-018514(JP,A)
【文献】特開2017-201512(JP,A)
【文献】米国特許出願公開第2017/0300445(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
G06F 13/10-13/14
G06F 13/38
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのマザーボードと、
少なくとも1つのベースボード管理コントローラ(BMC)と、
ミッドプレーンと、
少なくとも1つのストレージデバイスと、を含むシステムであって、
前記少なくとも1つのストレージデバイスは、前記ミッドプレーン上の複数のデバイスポートを介して、前記少なくとも1つのマザーボードまたは前記少なくとも1つのBMCから受信された第1の入力に基づいて、NVMe(non-volatile memory express)モードまたはNVMe-oF(NVMe over fabrics)モードで動作するように構成されており、
前記NVMe-oFモードにおいて、前記少なくとも1つのストレージデバイスは、前記複数のデバイスポートを介して、前記ミッドプレーンから受信された第2の入力に基づいて、前記NVMe-oFモードの最中に利用可能な複数の動作速度の中から第1の動作速度を選択するように構成されており、前記少なくとも1つのストレージデバイスは、小型フォームファクタ(SFF)コネクタを介して、前記ミッドプレーンに接続された1つ以上のSSD(solid state drive)を備えている、
システム。
【請求項2】
前記1つ以上のSSDは、コネクタおよび少なくとも1つのバスを介して
、前記少なくとも1つのストレージデバイスの少なくとも1つのフィールドプログラマブルゲートアレイ(FPGA)と通信
し、前記少なくとも1つのFPGAは、前記1つ以上のSSDと前記複数のデバイスポートとの間のインターフェースを提供する、
請求項1に記載のシステム。
【請求項3】
前記コネクタはSSDコネクタであり、前記少なくとも1つのバスは、PCIe(peripheral component interconnect express)バスである、
請求項2に記載のシステム。
【請求項4】
前記第1の入力は、前記少なくとも1つのマザーボードのシャーシ上の物理的ピンを使用することによって、または、前記少なくとも1つのBMCからのインバンドコマンドによって制御される、
請求項1に記載のシステム。
【請求項5】
前記第2の入力は、前記少なくとも1つのBMCまたは前記少なくとも1つのマザーボードのローカル中央処理装置(CPU)によって
制御されるか、または前記少なくとも1つのストレージデバイスの少なくとも1つのフィールドプログラマブルゲートアレイ(FPGA)内の1つ以上の内部レジスタによって制御される
、2つの汎用入出力(GPIO)ピ
ンを使用することにより制御される、
請求項1に記載のシステム。
【請求項6】
前記少なくとも1つのストレージデバイスの前記複数の動作速度は、10Gを超える2つ以上の速度である、
請求項1に記載のシステム。
【請求項7】
前記SFFコネクタは、U.2コネクタであり、
前記複数のデバイスポートは、
前記U.2コネクタを介して、前記少なくとも1つのストレージデバイスに接続され、かつ、
前記
少なくとも1つのストレージデバイスは、高可用性(HA)モードまたは非高可用性(non-HA)モードで動作するように構成されている、
請求項1に記載のシステム。
【請求項8】
前記少なくとも1つのストレージデバイスは、前記U.2コネクタを介して、2個のシリアルアッタチドSCSI(SAS)ポート、および、PCIe X4バスの4個までのPCIe X4レーンをサポートし、
前記2個のSASポートは、ファブリック接続ポートとして使用され、
前記ファブリック接続ポートは、イーサネットポート、ファイバチャネルポート、および、インフィニバンドポートを含む、
請求項7に記載のシステム。
【請求項9】
前記NVMe-oFモードで動作する場合、前記少なくとも1つのストレージデバイスは、前記U.2コネクタを介して、2個のファブリック接続ポートについてコントロールプレーンのために、4個のPCIe X4レーンのうち2個のPCIe X4レーン、および、追加的なファブリック接続ポートとして、4個のPCIe X4レーンのうち残りの2個のPCIe X4レーンをサポートする、
請求項8に記載のシステム。
【請求項10】
前記少なくとも1つのストレージデバイスは、第1のストレージデバイスおよび第2のストレージデバイスをさらに備え、
第1の時間に、前記第1のストレージデバイス及び/又は前記第2のストレージデバイスは
、前記NVMeモードにおいて、または前記複数の動作速度からの前記第1の動作速度または第2の動作速度
で前記NVMe-oFモードにおいて動作する、
請求項1に記載のシステム。
【請求項11】
ストレージデバイスにおいて、第1の入力を受信するステップであり、前記第1の入力は、ミッドプレーン上の複数のデバイスポートを介して、少なくとも1つのマザーボードまたはベースボード管理コントローラ(BMC)から、前記ストレージデバイスで受信される、ステップと、
前記ストレージデバイスによって、前記ストレージデバイスで受信された前記第1の入力に基づいて、NVMe(non-volatile memory express)モードで動作するか、または、NVMe-oF(NVMe over fabrics)モードで動作するかを決定するステップと、
前記NVMe-oFモードにおいて、前記ストレージデバイスで、前記複数のデバイスポートを介して、前記ミッドプレーンから第2の入力を受信するステップと、
前記ストレージデバイスによって、前記第2の入力に基づいて、前記NVMe-oFモードの最中に利用可能な複数の動作速度の中から、前記ストレージデバイスの動作速度を選択するステップであり、前記ストレージデバイスは、小型フォームファクタ(SFF)コネクタを介して、前記ミッドプレーンに接続された1つ以上のソリッドステートドライブ(SSD)を含む、ステップと、
を含む、方法。
【請求項12】
前記第1の入力は、前記少なくとも1つのマザーボードのシャーシ上の物理的ピンを使用することによって、または、前記BMCからのインバンドコマンドによって制御される、
請求項11に記載の方法。
【請求項13】
前記第2の入力は、前記BMCまたは前記少なくとも1つのマザーボードのローカル中央処理装置(CPU)によって制御される
か、または前記ストレージデバイスの少なくとも1つのフィールドプログラマブルゲートアレイ(FPGA)内の1つ以上の内部レジスタによって制御される、2つの汎用入出力(GPIO)ピ
ンを使用することにより制御される、
請求項11に記載の方法。
【請求項14】
前記ストレージデバイスの前記複数の動作速度は、10Gを超える2つ以上の速度である、
請求項11に記載の方法。
【請求項15】
ストレージデバイスであって、
第1のコネクタおよび少なくとも1つのバスを介して、
当該ストレージデバイスの少なくとも1つのフィールドプログラマブルゲートアレイ(FPGA)と通信する、1つ以上のソリッドステートドライブ(SSD)、を含み、
前記ストレージデバイスは、第2のコネクタを介して受信された第1の入力に基づいて、NVMe(non-volatile memory express)モードまたはNVMe-oF(NVMe over fabrics)モードで動作するように構成されており、
前記NVMe-oFモードにおいて、
当該ストレージデバイスは、前記第2のコネクタを介して受信された第2の入力に基づいて、前記NVMe-oFモードの最中に利用可能な複数の動作速度の中から第1の動作速度を選択するように構成されており、前記1つ以上のSSDは、
前記第2のコネクタを介してミッドプレーンに接続されて
おり、前記少なくとも1つのFPGAは、前記1つ以上のSSDと前記ミッドプレーン上の複数のデバイスポートとの間のインターフェースを提供する、
ストレージデバイス。
【請求項16】
前記第1の入力は、前記ミッドプレーン上の
前記複数のデバイスポートを介して、マザーボードまたはスイッチのベースボード管理コントローラ(BMC)から受信され、かつ、前記第2の入力は、前記複数のデバイスポートを介して、前記ミッドプレーンから受信され、
前記第1の入力は、前記マザーボードのシャーシ上の物理的ピンを使用することによって、または、前記BMCからのインバンドコマンドによって制御され、かつ、
前記第2の入力は、前記BMCまたは前記マザーボードのローカル中央処理装置(CPU)によって制御される
か、または前記少なくとも1つのFPGA内の1つ以上の内部レジスタによって制御される、2つの汎用入出力(GPIO)ピ
ンを使用することによって制御される、
請求項15に記載のストレージデバイス。
【請求項17】
前記第1のコネクタはSSDコネクタであり、前記少なくとも1つのバスはPCIe(peripheral component interconnect express)バスであり、前記第2のコネクタはU.2コネクタであり、かつ、
当該ストレージデバイスの前記複数の動作速度は、10Gを超える2つ以上の速度である、
請求項15に記載のストレージデバイス。
【請求項18】
前記1つ以上のSSDの第1のSSD及び/又は第2のSSDは、
前記NVMeモードにおいて、または前記複数の動作速度からの前記第1の動作速度または第2の速度
で前記NVMe-oFモードにおいて動作する、
請求項15に記載のストレージデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、ネットワーク接続デバイス(network-attached devices)に関し、より詳しくは、マルチモード及び/又はマルチ速度NVMe-oF(non-volatile memory express over fabrics)デバイスを支援するシステム及び方法に関する。
【背景技術】
【0002】
イーサネット(登録商標)接続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)を支援するにあたって、固有の設計問題を追加で提示する可能性がある。
【0003】
したがって、NVMe及びNVMe-oFプロトコルの双方を支援でき、相異なるイーサネット速度において動作できるストレージデバイスが好ましい。
【0004】
この背景技術の欄で開示された情報は、本発明の背景技術に対する理解を助けるためのものにすぎない。したがって、先行技術を構成しない情報を包含する可能性がある。
【先行技術文献】
【特許文献】
【0005】
【文献】米国特許第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号明細書
【非特許文献】
【0006】
【文献】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、イスラエル、ハイファ
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は、マルチモード及び/又はマルチ速度NVMe-oFデバイスを支援するシステム及び方法を提供する。
【課題を解決するための手段】
【0008】
本明細書の実施例における観点によるシステムは、少なくとも1つのマザーボードと、少なくとも1つのベースボード管理コントローラ(BMC:baseboard management controller)と、ミッドプレーン(mid-plane)と、少なくとも1つのストレージデバイスと、を包含する。少なくとも1つのストレージデバイスは、ミッドプレーンを介して複数のデバイスポートを経由して、少なくとも1つのマザーボード又は少なくとも1つのBMCから受信された第1の入力に基づいて、第1のモード又は第2のモードで動作し、第2のモードで動作するとき、少なくとも1つのストレージデバイスは、複数のデバイスポートを経由してミッドプレーンから受信された第2の入力に基づいて、複数の動作速度から第1の速度で動作できる。
【0009】
一実施例において、少なくとも1つのストレージデバイスは、コネクタ及び少なくとも1つのバスを経由して、少なくとも1つのフィールドプログラマブルゲートアレイ(FPGA:field programmable gate array)と通信する複数のSSD(solid state drive)を包含する。一構成において、コネクタは、SSDコネクタであり、少なくとも1つのバスはPCIe(peripheral component interconnect express)である。
【0010】
他の実施例において、第1のモード及び第2のモードは、それぞれNVMe(non-volatile memory(NVM)express)モード及びNVMe-oF(NVMe over fabrics)モードである。一構成において、第1の入力は、少なくとも1つのBMCからインバンドコマンド(in-band command)により、又は少なくとも1つのマザーボードのシャーシ上の物理的ピンを使用することにより制御される。
【0011】
一実施例において、第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以上の速度との間)である。
【0012】
一観点において、複数のデバイスポートは、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)ポートとして構成される。
【0013】
一構成において、第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のモードで動作する。
【0014】
本明細書の実施例により提供される方法は、ミッドプレーンを介して複数のデバイスポートを経由して、少なくとも1つのマザーボード又はBMCからストレージデバイスで第1の入力を受信するステップと、ストレージデバイスにより、ストレージデバイスで受信された第1の入力に基づいて第1の動作モードで動作するか又は第2の動作モードで動作するかを判定するステップと、第2の動作モードで動作するとき、複数のデバイスポートを経由してミッドプレーンからストレージデバイスで第2の入力を受信するステップと、及びストレージデバイスにより、第2の入力に基づいて複数の動作速度からストレージデバイスの動作速度を選択するステップと、を包含する。
【0015】
一実施例において、ストレージデバイスの第1の動作モード及び第2の動作モードは、NVMeモード及びNVMe-oFモードである。もう1つの実施例において、第1の入力は、BMCからインバンドコマンドにより、又は少なくとも1つのマザーボードのシャーシ上の物理的ピンを使用することにより制御される。
【0016】
一観点において、第2の入力は、少なくとも1つのマザーボード上のBMC又はローカルCPU、又はストレージデバイスのFPGA内部の1つ以上の内部レジスタにより制御される2つのGPIOピンを使用して制御される。もう1つの観点において、ストレージデバイスの複数の動作速度は2つ以上の10G以上の速度である。
【0017】
本発明のもう1つの実施例により提供されるストレージデバイスは、第1のコネクタ及び少なくとも1つのバスを経由して、少なくとも1つのFPGAと通信する複数のSSDを包含し、第2のコネクタを介して受信された第1の入力に基づいて第1のモード又は第2のモードで動作し、そして、第2のモードで動作するとき、第2のコネクタを経由して受信された第2の入力に基づいて複数の動作速度から第1の速度で動作する。
【0018】
一観点において、第1の入力は、ミッドプレーンを介して、複数のデバイスポートを経由してマザーボード又はスイッチのBMCから受信され、第2の入力は、複数のデバイスポートを経由してミッドプレーンから受信され、そして第1の入力は、BMCからインバンドコマンドにより又はマザーボードのシャーシ上の物理的ピンを使用することにより制御され、第2の入力は、マザーボード上のBMC又はローカルCPU、又はFPGA内部の1つ以上の内部レジスタにより制御される2つのGPIOピンを使用して制御される。
【0019】
もう1つの観点において、第1のコネクタはSSDコネクタであり、少なくとも1つのバスはPCIeバスであり、第2のコネクタはU.2コネクタであり、ストレージデバイスの第1のモード及び第2のモードは、それぞれNVMeモード及びNVMe-oFモードであり、そしてストレージデバイスの複数の動作速度は、2つ以上の10G以上の速度である。
【0020】
一構成において、第1の時間に、複数のSSDのうちの第1のSSD及び/又は第2のSSDは、複数の動作速度から第1の速度又は第2の速度で第1のモード又は第2のモードで動作する。
【発明の効果】
【0021】
本発明は、最小限のハードウェアの変更だけでHAモード又はnon-HAモードにおいて、多様なタイプのNVMe及びNVMe-oFデバイスを支援できるプラットフォームを提供する。マルチモードで動作できるデバイス及びプラットフォームが提供されるので、デバイス開発及び配置費用を減らすことができ、デバイスの市場進入時間を速くすることができる。
【0022】
さらに、本発明は、NVMe及びNVMe-oFプロトコルの双方を支援できるストレージデバイス及びシステムを提供する。したがって、ストレージデバイス及びシステムは、ハードウェアのいかなる変更もせずに、10Gから最大100Gまでの相異なるイーサネット速度で動作することが可能である。
【図面の簡単な説明】
【0023】
本発明のこれら及び他の特徴は、本明細書、特許請求の範囲及び添付の図面を参照して認識され、理解されるであろう。
【
図1A】
図1Aは、本発明の一部の例示的な実施例によるNVMe-oFデバイスの構成を図示する。
【
図1B】
図1Bは、本発明の一部の例示的な実施例による例示的な1つのSSDのブロック図を図示する。
【
図2】
図2は、本発明の一部の例示的な実施例による、ミッドプレーン又はCPLD(complex programmable logic device)のブロック図を図示する。
【
図3】
図3は、本発明の一部の例示的な実施例による、例示的なマルチモードNVMe-oFデバイスの構成によるU.2コネクタの例示的な使用を示す例示的な表を図示する。
【
図4A】
図4Aaは、本発明の一部の例示的な実施例による、non-HAモードで動作する例示的なNVMe-oFデバイスのブロック図を図示する。
【
図4B】
図4Bは、本発明の一部の例示的な実施例による、non-HAモードで動作する例示的なNVMe-oFデバイスのブロック図を図示する。
【
図4C】
図4Cは、本発明の一部の例示的な実施例による、HAモードで動作する例示的なNVMe-oFデバイスのブロック図を図示する。
【
図4D】
図4Dは、本発明の一部の例示的な実施例による、HAモードで動作する例示的なNVMe-oFデバイスのブロック図を図示する。
【
図5A】
図5Aは、本発明の一部の例示的な実施例による、例示的なFPGAデバイスのブロック図を図示する。
【
図5B】
図5Bは、本発明の一部の例示的な実施例による、例示的なFPGAデバイスの他のブロック図を図示する。
【
図6】
図6は、本発明の一部の例示的な実施例による、例示的なFPGAデバイスのもう1つのブロック図を図示する。
【
図7】
図7は、本発明の一部の例示的な実施例による、例示的なスイッチのブロック図を図示する。
【
図8】
図8は、本発明の一部の例示的な実施例による、ストレージデバイスを動作するための方法のフロー図を図示する。
【発明を実施するための形態】
【0024】
添付された図面と関連して、以下に提示される詳細な説明は、本発明によって提供されるマルチモード及び/又はマルチ速度NVMe-oF(non-volatile memory express over fabrics)デバイスを支援するシステム及び方法の一部の例示的な実施例を説明するように意図されており、本発明が構成又は利用され得る唯一の形態を示すようには意図されていない。本説明は、例示された実施例と関連して本発明の特徴を提示する。しかしながら、また本発明の思想及び範囲内に包含されるように意図された他の実施例により、同一又は同等の機能及び構造を達成できることが理解されよう。本明細書の他の箇所で示されるように、同一の参照番号は、同一の構成要素又は特徴を示すためのものである。
【0025】
NVMe(NVM express)は、PCIe(peripheral component interconnect express)バスを介して、不揮発性メモリサブシステム(例えば、SSD(solid-state drive))と通信するホストソフトウェアのためのレジスタレベルのインターフェースを定義する標準である。NVMeは、ホストと周辺対象ストレージデバイス又はシステムを接続したり、ホストと周辺対象ストレージデバイス又はシステムとの間でデータを伝送したりするためのSCSI(small computer system interface)の代案である。PCIe接続されたNVMeSSDは、アプリケーションがストレージに直接意思伝達(talk directly)をすることを許容する。
【0026】
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を支援する。
【0027】
NVMe-oF(NVMe over fabrics)は、PCIe以外の多様なファブリック(fabric)(又は、相互接続(interconnects))に対する動作を可能にするNVMe標準への拡張である。ここで、「ファブリック」という用語は、ネットワークノードの多様な相互接続プロトコル、ポート、及びスイッチを介して互いにデータを伝達できるネットワークトポロジーを示す。例えば、イーサネット接続SSDをファブリックに直接接続(attach)することができ、この場合、ファブリックはイーサネットである。
【0028】
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デバイスを使用することができる。
【0029】
前述したように、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までの相異なるイーサネット速度で動作することが可能である。
【0030】
また、本発明の実施例は、どのようなプラットフォームシステムも、相異なる供給者からの相異なるタイプのNVMe-oFデバイスを支援できるようにする。スイッチボード、ミッドプレーン、そしてイーサネットSSDのような共通のビルディングブロックを使用することにより、エコシステム提供者は既存のシステムより市場に速く進入でき、そして多様な消費者を満足させるために多様な価格/性能の製品を提供できる。一部の例示的な実施例は、PM1725a又はPM1735のような標準U.2及びM.3 SSDのように新たに台頭されるものにより、NVMe-oFデバイスを支援することができる共通のシステムプラットフォームも可能にすることができる。一構成において、M.3 SSDは、NGSFF(next generation small form factor)ベースのSSDとも称されることがある。
【0031】
本発明のシステムの他の実施例は、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)がどのようにデバイスを調整するかに関する情報を提供できる。
【0032】
ここに開示されたファブリック接続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ピンのみを使用する。
【0033】
図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までの相異なるイーサネット速度で動作することが可能である。
【0034】
図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モードで動作することを可能にする。
【0035】
一部の実施例において、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コントローラである。
【0036】
図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までの相異なるイーサネット速度で動作できる。
【0037】
図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デバイス)との間でデータを運搬するためにこれ以上必要とされない。
【0038】
一構成において、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-oFモードのいずれかで動作できる。他の観点において、所与の時間に、第1のM.3フォーマットSSD114はNVMeモードで動作でき、第2のM.3フォーマットSSD116はNVMe-oFモードで動作できる。もう1つの観点において、所与の時間に、第1のM.3フォーマットSSD114はNVMe-oFモードで動作でき、第2のM.3フォーマットSSD116はNVMeモードで動作できる。
【0039】
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)であり得る。
【0040】
図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)されると、リセットサイクルによりシャーシ内の既存のデバイスに影響を与えることがあり、これは好ましくない可能性がある。
【0041】
この場合、CPLD204は、マザーボード上のBMC又はローカルCPUにより制御されることができる。BMC又はローカルCPUからの制御信号を、CPLD204のCPLD/BMC GPIOピン206で受信することができる。以下の表1は、NVMe-oFデバイス100の相異なる動作速度中のESpeedピンの状態を示す。
【表1】
さらに、イーサネット速度は、電源がパワーオンされたり、リセットされたりする間に、システム管理バス208(SMBus:system management bus)を使用して選択される。一構成において、マルチプレクサは、パワーオン又はリセット信号207により選択され、そしてリセット207が、アクティブ・ロー(active low)の場合、マルチプレクサはFPGA102に対してESpeed[1:0] 202を選択でき、リセット207がハイの場合、マルチプレクサは、各スロット間のSMBus208をスイッチボード上のBMCに接続することができる。
【0042】
一構成において、マルチモードNVMe-oFデバイス100は、シングルポートNVMeモード、デュアルポートNVMeモード、シングルポートNVMe-oFモード及びデュアルポートNVMe-oFモードで構成されることができる。
【0043】
図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)のために使用される。
【0044】
一構成において、マルチモード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のポート)のために使用される。
【0045】
一部の構成において、製品情報(product information)がシャーシに記憶される場合、U.2コネクタ112上のPCIeバスの2つのレーン(シングルポートモードで)又は4つのレーン(デュアルポートモードで)が、PCIeエンジンにより駆動される。この場合、マルチモードNVMe-oFデバイス100は、イーサネットエンジンを無効にすることができ、そして、NVMeプロトコル及び機能が支援されるか又は有効にされる。製品情報がNVMe-oFシャーシに記憶される場合、イーサネット接続NVMe-oFコントローラは、マルチモードNVMe-oFデバイスの設計によりPCIeレーン1及び2、及び/又はSASピンのみを使用する。
【0046】
一部の場合において、自己構成(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デバイスを支援することができるプラットフォームを提供する。
【0047】
図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に接続されることができる。
【0048】
一構成において、イーサネットポート(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ファームウェアについてのダウンロードサービスを包含するが、これに限定されない多様なサービスをさらに遂行できる。
【0049】
図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))を使用して、デバイスの動作モードを自己構成することができる。
【0050】
一構成において、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)を包含できる。
【0051】
マルチモード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デバイスを支援できる、共通のシステムプラットフォームを有することが好ましい。
【0052】
図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のDDR4メモリ(例えば、
図1Aの124)と接続されることができる。
【0053】
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に接続されることができる。
【0054】
一実施例において、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のために使用される。
【0055】
他の構成において、
図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)は使用されない。
【0056】
一部の構成において、ポート(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つ以上の内部レジスタにより制御されることができる。
【0057】
一実施例において、イーサネットパケットが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コマンドを使用できる。
【0058】
図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にも接続されることができる。
【0059】
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つ以上の内部レジスタにより制御されることができる。表1は、FPGA601に接続された複数のフラッシュドライブ(例えば、603A、603B)の相異なる動作速度中のESpeedピンの状態を図示する。
【0060】
図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)などを含むことができる。
【0061】
いくつかのeSSDを、スイッチ700のデバイスポートにプラグイン(plug into)することができる。例えば、eSSDのそれぞれは、U.2コネクタを使用してスイッチ700に接続されることができる。それぞれのeSSDは、マザーボード701A及びマザーボード701Bの双方に接続できる。本実施例において、スイッチ500にプラグインされたeSSDはNVMe-oFデバイスとして構成される。NVMe-oFデバイスは、PCIeバスとイーサネットポートを介してミッドプレーン761を経てスイッチ700との接続を要求する。
【0062】
図8は、本発明の一実施例によるストレージデバイスを動作させるための方法のフロー図である。ストレージデバイスは、
図4AのNVMe-oFデバイス400であり得る。
【0063】
S801において、ストレージデバイスは第1の入力を受信する。ストレージデバイスは、ミッドプレーンを介して複数のデバイスポートを経由してマザーボード又はBMCから第1の入力を受信できる。例えば、NVMe-oFデバイス400は、
図4Aのミッドプレーン426を介してデバイスポート(404~406)を経由してマザーボード401又はBMC432から第1の入力を受信できる。
【0064】
一構成において、第1の入力は、BMCからインバンドコマンドにより、又はマザーボードのシャーシ上の物理的ピンを使用することにより制御されることができる。例えば、第1の入力は、
図4aのマザーボード401のシャーシ上の物理的ピン(E6)を使用することにより制御されることができる。
【0065】
S802において、第1の入力に基づいて、ストレージデバイスは、第1の動作モードで動作するか又は第2の動作モードで動作するかを判定する。一構成において、ストレージデバイスの第1の動作モード及び第2の動作モードは、NVMeモード及びNVMe-oFモードであり得る。例えば、第1の入力に基づいて、NVMe-oFデバイス400は、NVMeモードで動作するか又はNVMe-oFモードで動作するかを判定する。
【0066】
S802において第1の入力に基づいてストレージデバイスが第1の動作モードで動作すると判定した場合、S803において、ストレージデバイスは、第1の動作モードに応じて記憶動作を実行する。例えば、第1の入力に基づいてNVMe-oFデバイス400がNVMeモードで動作すると判定した場合、NVMe-oFデバイス400は、NVMeプロトコルにより記憶動作を実行する。
【0067】
しかしながら、S802において第1の入力に基づいてストレージデバイスが第2の動作モードで動作すると判定した場合、S804において、ストレージデバイスは、第2の動作モードに応じて記憶動作を実行する。例えば、第1の入力に基づいてNVMe-oFデバイス400がNVMe-oFモードで動作すると判定した場合、NVMe-oFデバイス400は、NVMe-oFプロトコルにより記憶動作を実行する。
【0068】
S805において、第2の動作モードで動作しているとき、ストレージデバイスは第2の信号を受信する。ストレージデバイスは、複数のデバイスポートを経由してミッドプレーンから第2の信号を受信できる。例えば、NVMe-oFモードで動作している間、NVMe-oFデバイス400は、
図4Aの複数のデバイスポート404~406を経由してミッドプレーン426から第2の信号を受信できる。
【0069】
一構成において、第2の信号は、ミッドプレーン上に位置し、マザーボードのBMC又はローカルCPU、又はストレージデバイスのFPGA内部の1つ以上の内部レジスタにより制御される、2つのGPIOピンを使用することにより制御されることができる。例えば、第2の信号は、ミッドプレーン426上に位置し、マザーボード401のBMC432又はローカルCPU434、又は
図4aのNVMe-oFデバイス400のFPGA402内部の内部レジスタにより制御される、2つのGPIOピン(例えば、
図2の(ESpeed[1:0])ピン202)を使用することにより制御されることができる。
【0070】
S806において、第2の信号に基づいて、ストレージデバイスは、ストレージデバイスのための複数の動作速度から動作速度を選択する。例えば、第2の信号に基づいて、NVMe-oFデバイス400は、ストレージデバイスのための複数の動作速度から動作速度を選択する。例えば、NVMe-oFモードで動作している間、第2の信号に基づいて、NVMe-oFデバイス400は100Gの動作速度を選択する。一構成において、ストレージデバイスの複数の動作速度は、10Gと100Gとの間の任意の数の速度であり得る。
【0071】
S807において、第2の動作モードで動作している間、ストレージデバイスは選択された動作速度で動作する。例えば、NVMe-oFモードで動作する中、NVMe-oFデバイス400は、100Gの動作速度で動作する。
【0072】
本明細書において、多様な要素、構成要素、領域(region)、レイヤー及び/又はセクションを説明するために、「第1」、「第2」、「第3」などの用語が使用されるとしても、このような要素、構成要素、領域、レイヤー及び/又はセクションは、このような用語により制限されないものと理解されるべきである。このような用語は、単に他の要素、構成要素、領域、レイヤー又はセクションから1つの要素、構成要素、領域、レイヤー又はセクションを区別するために使用される。したがって、本明細書に開示される第1の要素、構成要素、領域、レイヤー又はセクションは、本発明の思想及び範囲から逸脱することなく、第2の要素、構成要素、領域、レイヤー又はセクションと称される可能性がある。
【0073】
本明細書において説明の便宜のために、「下(beneath、below)」、「下方(lower)」、「下(under)」、「上(above)」、「上方(upper)」などのように、相対的空間用語は、図面に図示されたように、1つの要素又は特徴の異なる要素又は特徴との関係を説明するために利用されることができる。このような相対的空間用語は、図面に描写された方向だけでなく、使用又は動作において、デバイスの他の方向を包含するものと意図される。例えば、図面のデバイスが反転されると、他の要素又は特徴の「下(below、beneath、under)」として説明される要素は、他の要子又は特徴の「上」に向けられることになるであろう。したがって、「下」又は「下方」の例示用語は、上及び下の方向の双方を包含できる。デバイスが、他の方向に向けられる(例えば、90°又は他の方向に回転される)こともあり、本明細書において使用される相対的空間記述語は、これに応じて解釈されなければならない。なお、レイヤーが2つのレイヤーの「間に」あるものとして示される場合、レイヤーは、2つのレイヤーの間の唯一のレイヤーとすることができ、あるいは1つ以上の間に入るレイヤーが存在することもある。
【0074】
本明細書で使用される用語は、特定の実施例を説明する目的のためだけに使用され、本発明の技術的思想を限定することは意図されていない。本明細書において使用されるとき、「概ね」、「約」という用語、そして、これと類似した用語は近似値の用語として使用され、程度の用語として使用されず、本発明の当業者によって識別される、測定された又は計算された値の固有の変動を考慮するためのものである。
【0075】
本明細書において使用されるとき、文脈上、明白に別なものと意味しない限り、単数の形の「a」及び「an」は複数の形も包含するものと意図される。「含む(comprises)」及び/又は「含んでいる(comprising)」という用語は、本明細書で使用されるとき、定められた特徴、整数、ステップ、動作、要素、及び/又は構成要素の存在を明示するが、1つ又はそれ以上の別の特徴、整数、ステップ、動作、要素、構成要素、及び/又はそのグループの追加又は存在を排除しないことがさらに理解されるであろう。本明細書で使用されるとき、「及び/又は」という用語は、羅列された関連する項目の1つ以上のいずれか及び全ての組み合わせを包含する。要素のリストに先行する「少なくとも1つ」という表現は、要素の全体リストを修正し、そしてリストの個別要素を修正しない。なお、本発明の実施例を記述するとき、「してよい(may)」の使用は、「本発明の1つ以上の実施例」を指す。なお、「例示」という用語は例又は図案を意味する。本明細書で使用されるとき、「使用(use,)」、「使用される(using,)」、そして「使用された(used)」という用語は、それぞれ、「利用(utilize,)」、「利用される(utilizing,)」、そして「利用された(utilized,)」という用語の同意語として見なされることができる。
【0076】
要素又はレイヤーが異なる要素又はレイヤーの「上に(on)」ある、「接続された(connected to)」、「結合された(coupled to)」又は「隣接した(adjacent to)」と言及されるとき、それは別の要素又はレイヤーに対して直接上にあるか、接続され、結合され又は隣接してよく、あるいは1つ以上の中間要素又はレイヤーが存在してもよい。対照的に、1つの要素又はレイヤーが別の要素又はレイヤーに「直接上に(directly on)」、「直接接続された(directly connected to)」、「直接結合された(directly coupled to)」又は「直ぐに隣接した(immediately adjacent to)」と言及されるとき、中間要素又はレイヤーが存在しない。
【0077】
本明細書で引用された任意の数値範囲は、引用された範囲内に包含される同じ数値精度の全ての部分範囲を包含するように意図される。例えば、「1.0~10.0」の範囲には、引用された最小値1.0と引用された最大値10.0との間にある(そして、包含する)全ての部分範囲、すなわち、例えば、2.4から7.7までのように、1.0以上の最小値及び10.0以下の最大値を有する全ての部分範囲が包含される。本明細書に引用された任意の最大数値の制限は、本明細書に包含される、より低い全ての数値制限を包含するように意図され、本明細書に引用される任意の最小数値の制限は、本明細書に包含される、より高い全ての数値制限を包含するように意図される。
【0078】
マルチモード及び/又はマルチ速度NVMe-oFデバイスを支援するシステム及び方法の例示的な実施例が本明細書において具体的に説明されて例示されたが、多くの修正及び変更が当業者には明らかであろう。したがって、本明細書に具体的に説明されたもの以外に、本発明の原理に基づいて構成されるマルチモード及び/又はマルチ速度NVMe-oFデバイスを支援するシステム及び方法を具現化することができることが理解されよう。本発明はまた、以下の特許請求の範囲及びその等価物によって定義される。
【産業上の利用可能性】
【0079】
本発明は、マルチモードで動作できるデバイス及びプラットフォームが提供され、最小限のハードウェアの変更だけでNVMe及びNVMe-oFプロトコルの双方を支援できるストレージデバイス及びシステムの具現に有用である。
【符号の説明】
【0080】
100:マルチモードNVMe-oFデバイス
134:M.3フォーマットSSD
204:CPLD
400:NVMe-oFデバイス
401:マザーボード
600:FPGAデバイス
700:スイッチ