IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ザイリンクス インコーポレイテッドの特許一覧

特表2024-5083933Dデータ処理ユニットにおける空間的分散
<>
  • 特表-3Dデータ処理ユニットにおける空間的分散 図1
  • 特表-3Dデータ処理ユニットにおける空間的分散 図2
  • 特表-3Dデータ処理ユニットにおける空間的分散 図3
  • 特表-3Dデータ処理ユニットにおける空間的分散 図4
  • 特表-3Dデータ処理ユニットにおける空間的分散 図5
  • 特表-3Dデータ処理ユニットにおける空間的分散 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-27
(54)【発明の名称】3Dデータ処理ユニットにおける空間的分散
(51)【国際特許分類】
   G06F 15/173 20060101AFI20240219BHJP
   G06F 9/38 20180101ALI20240219BHJP
【FI】
G06F15/173 660Z
G06F9/38 370C
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023547660
(86)(22)【出願日】2022-02-17
(85)【翻訳文提出日】2023-08-07
(86)【国際出願番号】 US2022016837
(87)【国際公開番号】W WO2022182570
(87)【国際公開日】2022-09-01
(31)【優先権主張番号】17/184,456
(32)【優先日】2021-02-24
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ダスティダール,ジャディブ
【テーマコード(参考)】
5B013
5B045
【Fターム(参考)】
5B013DD03
5B045BB34
5B045GG17
(57)【要約】
本明細書に記載の実施形態は、複数の層を使用して、計算機能、記憶機能、又はネットワーク機能を3次元で空間的に分散させる3D SmartNICについて説明する。すなわち、2D平面でアクセラレーション機能を実行することができる現在のSmartNICとは異なり、3D Smartは、複数の積層された層にわたってこれらの機能を分散させることができ、各層は、他の層と直接又は間接的に通信することができる。
【特許請求の範囲】
【請求項1】
ネットワークインターフェースカード(NIC)であって、
スタック内に配置され、通信可能に互いに結合された複数の層と、
前記複数の層内の複数のアクセラレータ機能と、
前記複数の層のうちの1つに配設されたシーケンサであって、前記シーケンサは、前記複数のアクセラレータ機能のうちの異なるアクセラレータ機能間で前記NICにおいて受信されたトラフィックフローを調整して、パイプラインを形成するように構成されている、シーケンサと、を備える、NIC。
【請求項2】
前記複数の層は、少なくとも1つの集積回路をそれぞれ備える、請求項1に記載のNIC。
【請求項3】
前記複数のアクセラレータ機能に接続されたパケットバッファであって、前記異なるアクセラレータ機能は、前記パケットバッファを使用して、前記パイプラインのステージ間でパケットを一時的に記憶するように構成されており、前記異なるアクセラレータ機能は、前記パイプラインで前記ステージを形成する、パケットバッファを更に備える、請求項1に記載のNIC。
【請求項4】
前記複数の層は、少なくとも最上層、中間層、及び最下層を備え、前記中間層は、
プログラマブル論理を使用して実装される、少なくとも1つのファブリックアクセラレータ、又は
前記トラフィックフロー内のデータを暗号化又は復号するための暗号エンジンを備える、請求項1に記載のNIC。
【請求項5】
前記複数の層は、少なくとも2つのアクセラレータ機能を含む第1の層を備え、前記第1の層は、前記少なくとも2つのアクセラレータ機能間のカスタマイズされた処理又は通信を提供するためのプログラマブル論理を更に備える、請求項1に記載のNIC。
【請求項6】
前記少なくとも2つのアクセラレータ機能は、強化された論理を使用して形成される、請求項5に記載のNIC。
【請求項7】
3Dデータ処理ユニット(DPU)であって、
スタック内に配置され、通信可能に互いに結合された複数の層と、
前記複数の層内の複数のアクセラレータ機能と、
前記複数の層のうちの1つに配設されたシーケンサであって、前記シーケンサは、前記複数のアクセラレータ機能のうちの異なるアクセラレータ機能間で前記3D DPUにおいて受信されたトラフィックフローを調整して、パイプラインを形成するように構成されている、シーケンサと、を備える、3D DPU。
【請求項8】
前記複数の層は、少なくとも1つの集積回路をそれぞれ備える、請求項7に記載の3D DPU。
【請求項9】
前記複数のアクセラレータ機能に接続されたパケットバッファであって、前記異なるアクセラレータ機能は、前記パケットバッファを使用して、前記パイプラインのステージ間でパケットを一時的に記憶するように構成されており、前記異なるアクセラレータ機能は、前記パイプラインで前記ステージを形成する、パケットバッファを更に備える、請求項7に記載の3D DPU。
【請求項10】
前記複数の層は、少なくとも最上層、中間層、及び最下層を備え、前記中間層は、プログラマブル論理を使用して実装される、少なくとも1つのファブリックアクセラレータを備える、請求項7に記載の3D DPU。
【請求項11】
前記複数の層は、少なくとも最上層、中間層、及び最下層を備え、前記中間層は、前記トラフィックフロー内のデータを暗号化又は復号するための暗号エンジンを備える、請求項7に記載の3D DPU。
【請求項12】
前記複数の層は、少なくとも2つのアクセラレータ機能を含む第1の層を備え、前記第1の層は、前記少なくとも2つのアクセラレータ機能間のカスタマイズされた処理又は通信を提供するためのプログラマブル論理を更に備える、請求項7に記載の3D DPU。
【請求項13】
システムであって、
複数のNICであって、それぞれが
スタック内に配置され、互いに通信可能に結合された複数の層と、
前記複数の層内の複数のアクセラレータ機能と、を備える、複数のNICと、
複数のアクセラレータカードと、
前記複数のNICを前記複数のアクセラレータカードに通信可能に結合するスイッチと、を備え、前記複数のNIC、前記複数のアクセラレータカード、及びスイッチは、同一ボックス内に配設される、システム。
【請求項14】
前記スイッチは、ホスト、前記複数のNIC、及び前記複数のアクセラレータカードの間でのキャッシュコヒーレント通信及び非キャッシュコヒーレント通信の両方を容易にするように構成されている、請求項13に記載のシステム。
【請求項15】
前記スイッチは、前記ホストが、コヒーレントドメインを使用して前記複数のNICのうちの第1のNICにデータを転送し、非コヒーレントドメインを使用して前記複数のNICのうちの第2のNICにデータを転送することを可能にするように構成されており、
前記キャッシュコヒーレント通信は、前記複数のNIC及び前記複数のアクセラレータカードが前記ホストのメモリ空間を共有することを許可する、請求項14に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の例は、概して、互いに通信する、複数の積層された層を含む3Dネットワークインターフェースカード(NIC)に関する。
【背景技術】
【0002】
クラウド内でホストされるサービスに対する増え続ける需要に対応するために、クラウドインフラストラクチャが加速的に成長している。サーバCPUを解放して顧客のアプリケーションの実行に集中させるために、計算機能、ネットワーク機能、及び記憶機能をアクセラレータにオフロードする必要性が高まっている。これらのアクセラレータは、クラウドのハイパーコンバージドインフラストラクチャ(HCI)の一部であり、クラウドベンダに、単一の顧客又は複数の顧客の様々な計算中心、ネットワーク中心、及び記憶中心のワークロードを管理するためのより単純な方法を提供する。多くのクラウドオペレータはSmartNICを使用して、これらのワークロードの処理を支援する。概して、SmartNICは、ネットワークトラフィック処理を実行することができるデータ処理ユニットを含むNICであり、標準的な、すなわち「単純な」NICが使用された場合にホストCPUによって別様に実行されるであろう他の機能を加速させ、オフロードする。SmartNICは、複数のオフロードアクセラレーション機能を1つのコンポーネントに集中させることに長けており、新しい機能を加速させるか又は新しいプロトコルをサポートするのに十分な適応性があり、また、HCIを同時に使用する複数のクラウドテナント(例えば、顧客)の場合に仮想化及びセキュリティを管理する1つの方法をクラウドベンダに提供する。データ処理ユニット(DPU)という用語はまた、SmartNICの代わりに使用されて、仮想化、セキュリティ、ネットワーキング、計算、及び記憶、又はそれらのサブセットのための処理機能、アクセラレーション機能、及びオフロード機能の集合体を説明する。3D DPUは、周辺カード、OCPアクセラレータモジュールなど様々なタイプのフォームファクタを有し得るか、又は他のコンポーネント/アクセラレータ/メモリとともにマザーボードに直接実装され得る。
【0003】
SmartNICは、新機能及びそれらのライフサイクルにわたって作成されたプロトコルのオフロードアクセラレーションによって、急速に変化するワークロードに適応する。SmartNIC(例えば、PCIeカード)は、通常、クラウド内のサーバ又は記憶ノードに差し込まれ、トップオブラック(TOR)ネットワークスイッチに、次いでクラウドの残りの部分に接続される。数百万のユニット内のこれらのコンポーネントのハイパースケール展開ではまた、電力消費がSmartNICの重要な測定基準となる。適応インテリジェンスと低電力消費との組み合わせは、プログラマブル論理と強化されたアクセラレーションとの組み合わせをSmartNICデバイスとして特に適したものにする。
【0004】
SmartNICの超集中型の性質は、SmartNICが1つのコンポーネントにおいて計算機能、ネットワーキング機能、及び記憶機能を実行可能であることを意味するが、現在のSmartNICは、これらの機能を2次元で空間的に分解し、パッケージ内の複数のチップレットにわたってこれらの機能を分解するか、又は大型のモノリシックダイにわたってこれらの機能を分解する。言い換えれば、別様にサーバ内のCPUによって実行される必要のあるワークロードを実行するデータ処理ユニットは2D平面に配置されて、チップレットが同一基板(例えば、プリント回路基板)上に実装されるか、又は処理ユニットが同一チップ内に形成されるかのいずれかである。これにより、将来の帯域幅需要を満たすためのこれらのSmartNICのスケーラビリティが厳しく制限される。
【0005】
加えて、SmartNIC処理の性質は、ネットワークフローだけでなく、それらのフローに関連する大量のメタデータの移動を必要とする。メタデータは、SmartNICにおける処理又はアクセラレーションパイプラインの現在のステージ用の動作動詞、すなわちコマンドのセットを含み得、また、動作動詞を含み得るか、又はアクセラレーションパイプラインの次のステージが解釈/実行するための参照として機能し得る。同一サービスがSmartNICによってホスト内の複数のテナントに提供されるか、又は複数のネットワーク機能、計算機能、若しくは記憶機能が同一テナントに提供されるかのいずれかであるマルチテナント環境では、メタデータはまた、テナントの識別情報、それらのサービスレベルアグリーメント(SLA)、及び/又はテナントが所望するサービス若しくはアクセラレーション機能のタイプに関する情報を所持し得る。オフロードアクセラレータ機能の数が増加するにつれて、メタデータの量又はメタデータのタイプも増加する。これらの特性の結果として、メタデータは、処理又は移動されるデータの量の割に相当なオーバーヘッドであることが多い。更に、SmartNIC処理はまた、データの一時的なバッファリングを必要とし、場合によっては、特定のテナントのトラフィックが処理されているとき、又はデータの次の機能若しくは処理ステップを決定するときに、メタデータの一部又は全ての一時的なバッファリングを必要とする。すなわち、現在の技術の空間的に分散する性質に起因して、テナントのトラフィックがパイプラインの様々なステージを通って移動するときに、データ及びメタデータの反復バッファリングが存在する。リンク帯域幅の量が増加するにつれて、反復バッファリングの量も増加し、したがって、データ移動を空間的に分散させるためのリソースの非効率的な使用をもたらす。
【発明の概要】
【課題を解決するための手段】
【0006】
本明細書に記載の一実施形態は、スタック内に配置され、通信可能に互いに結合された複数の層と、複数の層内の複数のアクセラレータ機能と、複数の層のうちの1つに配設されたシーケンサと、を含むNICであって、シーケンサは、複数のアクセラレータ機能のうちの異なるアクセラレータ機能間でNICにおいて受信されたトラフィックフローを調整して、パイプラインを形成するように構成されている。
【0007】
本明細書に記載の別の実施形態は、スタック内に配置され、通信可能に互いに結合された複数の層と、複数の層内の複数のアクセラレータ機能と、複数の層のうちの1つに配設されたシーケンサと、を含む3Dデータ処理ユニットであって、シーケンサは、複数のアクセラレータ機能のうちの異なるアクセラレータ機能間で3Dデータ処理ユニットにおいて受信されたトラフィックフローを調整して、パイプラインを形成するように構成されている。
【0008】
本明細書に記載の別の実施形態は、スタック内に配置され、通信可能に互いに結合された複数の層をそれぞれ含む、複数のNICと、複数の層内の複数のアクセラレータ機能と、を含むシステムである。システムはまた、複数のアクセラレータカードと、複数のNICを複数のアクセラレータカードに通信可能に結合するスイッチと、を含み、複数のNIC、複数のアクセラレータカード、及びスイッチは、同一ボックス内に配設される。
【0009】
上記の特徴が詳細に理解され得るように、上記で簡潔に要約されたより具体的な説明が、例示的な実装形態を参照することによって行われ得、それらの実装形態のうちのいくつかが添付の図面に示される。しかしながら、添付の図面は、典型的な例示の実装形態のみを示しており、したがって、その範囲を限定するものと見なされるべきではないことに留意されたい。
【図面の簡単な説明】
【0010】
図1】一例による、3D SmartNICを備えるコンピューティングシステムを示す。
図2】一例による、3D SmartNIC内の複数の層を示す。
図3】一例による、ファブリック層を備える3D SmartNICを示す。
図4】一例による、中間層に暗号エンジンを備える3D SmartNICを示す。
図5】一例によるシーケンサを示す。
図6】一例による、SmartNICを含むI/O拡張ボックスのブロック図である。
【発明を実施するための形態】
【0011】
理解を容易にするために、可能な場合には、図面に共通する同一の要素を示すために同一の参照番号が使用されている。一例の要素は、他の例に有益に組み込まれ得ることが企図される。
【0012】
様々な特徴が、図面を参照して以下に記載される。図面は縮尺どおりに描かれている場合もあるし、描かれていない場合もあり、同様の構造又は機能の要素は図面全体を通して同様の参照番号によって表されていることに留意されたい。図面は、特徴の説明を容易にすることのみを意図していることに留意されたい。それらは、明細書の網羅的な説明として、又は特許請求の範囲に対する限定として意図されていない。加えて、図示された例は、示された全ての態様又は利点を有する必要はない。特定の実施例に関連して説明される態様又は利点は、必ずしもその実施例に限定されず、そのように例解されていない場合、又はそのように明示的に説明されていない場合であっても、任意の他の実施例において実施することができる。
【0013】
本明細書に記載の実施形態は、複数の層を使用して、計算アクセラレータ機能、記憶アクセラレータ機能、又はネットワークアクセラレータ機能を3次元で空間的に分散させる3D SmartNICについて説明する。すなわち、(例えば、共通基板に配設されたチップレット又は同一モノリシックチップに統合されたデータ処理ユニットを使用して)2D平面でアクセラレーション機能を実行することができる現在のSmartNICとは異なり、3D SmartNICは、複数の積層された層にわたってこれらの機能を分散させることができ、各層は他の層と直接又は間接的に通信することができる。例えば、ホストは、3D SmartNIC内の複数のアクセラレータ機能から形成されるパイプラインにおいて実行されるデータ(例えば、パケット)を含むネットワークフローを送信し得る。例えば、ネットワークフローは、最初に、第1の層の機能Aによって処理され、次いで、第2の層の機能B及び機能Cによって処理され、次いで、第3の層の機能Dによって処理され得る。これらのパイプライン化機能間のレイテンシは、3D SmartNICのスループット全体に影響を及ぼし得るので、複数の層を使用することにより、全アクセラレータ機能が同一平面上のハードウェアによって実行されるSmartNICと比較して、パイプライン内の異なるステージ(すなわち、アクセラレータ機能)間の物理的結合及び論理的結合を改善することができる。すなわち、機能A~Dの物理的近接性及び論理的近接性は、複数の層を使用することにより、2D SmartNICよりも3D SmartNICにおいて小さくなり得る。更に、3D NICは、2D SmartNICと比較して、これらの機能間のデータ移動に関連するレイテンシ、並びに反復回数を低減することができる。
【0014】
3D SmartNICの密に結合された、Active-on-Active(AoA)層により、データ及びメタデータの処理及び移動は、従来技術で利用可能であるよりも小さい物理的距離を横断し、数桁大きい帯域幅で経路を横断する。更に、一実施形態では、データの一時的バッファリングは、パケットバッファ内でユニバーサル/集中方式で行われ、したがって、反復バッファリングの量を低減し、ネットワーク、記憶、又は計算のパイプライン化アクセラレーションの様々なステージを通して移動するテナントトラフィックのために空間的に分散したデータ移動用リソースの効率的使用をもたらす。別の実施形態では、パケットバッファは空間的に分散しており、アクセラレータの使用順、ネットワーク、記憶、又は計算のパイプライン化アクセラレーションの物理的位置、並びにパケットバッファとソース及び宛先アクセラレータ又は外部インターフェースとの間の最適レイテンシに基づいて、2D平面又は3Dのいずれかに分散している。空間的に分散するバッファのうちのどれが使用されるかについての経路決定は、先験的に決定されてメタデータにおいて体系化されるか、又はアクセラレーションパイプラインでの処理ステップによって動的に決定されるかのいずれかであり得る。
【0015】
加えて、一部のSmartNICセキュリティ要件は、テナントデータを搬送する、露出したリンクインターフェース(攻撃対象領域であり、秘密情報を漏洩する)が暗号化され、また、サイドチャネル攻撃から保護されることを要求する。従来技術に対する3D SmartNICの利点は、露出したリンクを介して、暗号化されたテナント情報のみを別のチップ又はチップレットに空間的に分散させることを含む。z軸上の接続は公開されないので、復号されたテナント情報のあらゆる配信は、z軸上(すなわち、層間)でのみ実行することができる。3D SmartNICの別の利点は、z軸上の中間層において暗号化を実行できることであり、これにより、露出したインターフェースのレーザプローブなど非侵襲的なプロービング方法を使用して不正行為者が秘密情報を取得することが防止される。
【0016】
図1は、一例による、3D SmartNIC110を備えるコンピューティングシステム100を示す。示されるように、コンピューティングシステム100は、SmartNIC110に依存してネットワーク130とデータを交換するホスト105を含む。例えば、ネットワーク130は、ホスト105(例えば、サーバ)をデータセンタ内の他のコンピューティングシステム(例えば、他のサーバ又はネットワーク記憶デバイス)に接続するデータセンタ内のローカルネットワークであり得る。3D SmartNIC110はホスト105外に示されているが、一実施形態では、SmartNICはホスト105内に配設される。例えば、SmartNIC110は、ホスト105内のPCIeスロットに差し込まれるPCIeカードであり得る。
【0017】
3D SmartNIC110は、3D構造を形成する複数の層115(又はデッキ)を含む。すなわち、共通基板(例えば、PCBボード)又は単一のモノリシックチップに配設された複数のチップレットなど2D平面に配設された計算リソースを有する従来のSmartNICではなく、SmartNIC110内の計算リソースは、複数の層115にわたって分散している。一実施形態では、層115は、スタックを形成する別個の集積回路(IC)又はチップである。例えば、ICは、異なる層115内の計算リソースが通信することができるように、はんだ接続を使用して互いに接合され得る。別の実施形態では、層115は、IC又はチップレットを含むPCBなどの別個の基板を含むことができ、これらのIC又はチップレットは、例えば、はんだバンプ又はワイヤボンドを使用して、他の層の基板上のIC又はチップレットに接続されている。あるいは、層115は、層を積み重ねることによる3次元の接続性のためにシリコン貫通ビア接続を使用して互いに直接結合されているか、又は異なるタイプの基板(例えばPCB)を貫通し、はんだバンプ又はワイヤボンド接続を使用して層115間の3次元の接続性を達成するかのいずれかであり得る。
【0018】
層115は、少なくとも1つのシーケンサ120を含む。ある実施形態では、SmartNIC110内に1つのシーケンサのみが存在する(すなわち、層115のうちの1つのみがシーケンサ120を有する)が、他の実施形態では、同じ層115内又は異なる層115に複数のシーケンサ120を有することが有利であり得る。概して、シーケンサ120は、SmartNIC110内の異なるアクセラレータ機能125間のトラフィックフローを調整する。シーケンサはまた、ユニバーサル/集中パケットバッファの使用を調整し得るか、又は空間的に分散するパケットバッファの使用順を調整し得る。一実施形態では、各層115は、ホスト105又はネットワーク130のいずれかから受信したトラフィックフロー内のデータを処理する少なくとも1つの機能125を含む。更に、各層115は複数の機能125を含み得る。
【0019】
一実施形態では、各アクセラレータ機能125は、ネットワークフロー内のデータ(又はメタデータ)に対して計算機能、ネットワーキング機能、又は記憶機能を実行するハードウェア素子である。これらのハードウェア素子は、層115内の別個のICであり得るか、又は1つのICが複数のアクセラレータ機能125を実行するためのハードウェア素子を有し得る。アクセラレータ機能125は、ホスト105及びネットワーク130へのインターフェースを加速するためのハードウェア素子、暗号(crypto)アクセラレータ、圧縮アクセラレータ、ファブリックアクセラレータ、メモリコントローラ、メモリ素子(例えば、ランダムアクセスメモリ(RAM))などを含み得る。これらのハードウェア素子は、プログラマブル論理ブロック又は強化された論理ブロックを使用して実装され得る。例えば、メモリコントローラ、RAM、インターフェース(入出力(I/O))アクセラレータ、圧縮アクセラレータ、及び暗号アクセラレータは、強化された論理を使用して実装され得るが、ファブリックアクセラレータは、プログラマブル論理(例えば、構成可能論理ブロック)を使用して実装される。しかしながら、他の実施形態では、一部のアクセラレータ(例えば、暗号アクセラレータ又は圧縮アクセラレータ)は、強化された論理の代わりにプログラマブル論理で実装され得る。
【0020】
図2は、一例による、3D SmartNIC110内の複数の層を示す。図2では、3D SmartNIC110は、任意の数の層115を有し得るが、簡略化のために、層115A及び115Bの2つの層のみが示されている。例えば、層115A及び115Bは、SmartNIC110内の2つのみの層であリ得るか、又はこれらの2つの層の間に1つ以上の層が存在し得る。
【0021】
示されるように、層115の両方は、アクセラレータ機能125A~Eを形成するハードウェア素子を含む。この例では、層115Aはアクセラレータ機能125A~Dを含み、層115Bはアクセラレータ機能125Eを含む。更に、層115Aは、層115A内のアクセラレータ機能125A~Dのそれぞれに通信可能に結合されているシーケンサ120を含む。図示されていないが、シーケンサ120はまた、層115B内のアクセラレータ機能125Eにも結合されており、ホストインターフェース210及びネットワークインターフェース215に結合され得る。
【0022】
上述したように、シーケンサ120は、データアクセラレーションパイプラインにおいて異なるステージを形成するために、ネットワークトラフィックがアクセラレータ機能125間を流れる方法を調整する。一実施形態では、シーケンサ120は、ネットワークフローごとにパイプラインを確立し、アクセラレータ機能125は、パイプラインのステージを形成する。例えば、(第1の顧客又はテナントに関連し得る)第1のネットワークフローでは、データは、最初に機能125Aに、次いで機能125Dに、最後に機能125Eに送信され得る。しかしながら、異なる顧客又はテナントの第2のネットワークフローでは、そのデータは、最初に機能125Eに、次いで機能125Bに送信され得る。シーケンサ120を使用して異なるネットワークフロー用の異なるパイプラインを確立するための詳細は、図5に関連して以下で説明される。
【0023】
層115Aはまた、機能125と、ホストインターフェース210及びネットワークインターフェース215との間で転送されているデータ用の集中化された、ユニバーサルパケット保持領域として機能するパケットバッファ205を含む。上記の例を続けると、第1のネットワークフローのパケットが機能125Aによって処理された後、パイプライン内の次の機能、すなわち、機能125Dは、パケットに対する準備が整っていない場合がある。機能125Aは、パケットに対する機能125Dの準備が整うまで、パケットをパケットバッファ205に記憶することができる。したがって、図示されていないが、各機能125A~Dは、パケットバッファ205に接続され得る。パケットバッファ205はまた、層115間でパケットを転送するときに使用され得る。例えば、SmartNIC110は、これらのパケットが機能125Eの一部としてRAMに記憶される前に、パケットバッファ205を使用してパケットを一時的に記憶し得る。パケットバッファ205は、異なるネットワークアクセラレーションタスク、コンピュータアクセラレーションタスク、及び記憶アクセラレーションタスクを実行し得るSmartNIC110内の様々な機能125によって使用され得るので、ユニバーサルバッファである。したがって、一実施形態では、各アクセラレータ機能(並びにホストインターフェース210及びネットワークインターフェース215)は、パケットバッファ205に接続されており、したがって、バッファ205にパケットを記憶し、そこからパケットを取り出すことができる。
【0024】
図2のアクセラレータ機能125、シーケンサ120、パケットバッファ205、並びにホストインターフェース210及びネットワークインターフェース215の構成は、3D SmartNICの一例にすぎない。例えば、他の実施形態では、ホストインターフェース210及びネットワークインターフェース215は、層115A上に配設され得る。更に、層115Bは、2つ以上のアクセラレータ機能(すなわち、機能125E)を有し得るか、又は層115Aは、図示されるアクセラレータ機能よりも多い、又は少ないアクセラレータ機能を含み得る。
【0025】
図3は、一例による、ファブリック層を備える3D SmartNIC300を示す。図示のように、SmartNIC300は、3つの層315A~Cを含み、様々なアクセラレータ機能が層315全体に分散している。この例では、層315Aは、プロセッサ305、ホストインターフェースアクセラレータ310、暗号アクセラレータ317、圧縮アクセラレータ320、及びネットワークインターフェースアクセラレータ325とともに、上述のようにシーケンサ120及びパケットバッファ205を含む。プロセッサ305、ホストインターフェースアクセラレータ310、暗号アクセラレータ317、圧縮アクセラレータ320、及びネットワークインターフェースアクセラレータ325は、図1及び図2で説明したアクセラレータ機能125の例である。
【0026】
プロセッサ305は、ネットワークフロー内のデータのために計算タスクを実行することができる、ARM又はx86プロセッサであり得る。ホストインターフェースアクセラレータ310及びネットワークインターフェースアクセラレータ325は、それぞれホストインターフェース210及びネットワークインターフェース215によって実行される機能を加速させる。暗号アクセラレータ317は、データがSmartNIC300に出入りするときに、データの復号及び暗号化を実行することができる。例えば、一部の機能は、復号データを必要とすることがあり、この場合、シーケンサ120は、まず、(暗号化された状態でSmartNICによって受信された)データを暗号アクセラレータ317にルーティングして復号し、機能によって処理し、次いで、データがSmartNIC300から送信される前に再び暗号化することができる。
【0027】
圧縮アクセラレータ320は、データの圧縮及び解凍を実行することができる。例えば、ホストは、ネットワーク記憶装置に記憶されるべきデータを送信することがある。ホスト105がネットワークフローを圧縮するのではなく、ホスト105は、ネットワーク130を使用して圧縮されたデータをネットワーク記憶デバイスに転送する前に、SmartNIC300内の圧縮アクセラレータ320に、ネットワークフロー内のデータを圧縮するように命令することができる。SmartNIC300がネットワーク記憶デバイスから圧縮データを受信すると、圧縮アクセラレータ320は、データをホスト105に転送する前に解凍することができる。更に、SmartNIC300は、圧縮アクセラレータ320を使用して、内部に記憶されたデータを圧縮し得る。
【0028】
一実施形態では、3D SmartNIC300は、複数の暗号アクセラレータ及び圧縮アクセラレータを含み得る。例えば、層315Aは、AES-XTS暗号アクセラレータ及びAES-GCM暗号アクセラレータの両方を含み得る。SmartNIC300はまた、異なる圧縮アルゴリズムを実行する、異なる暗号アクセラレータを含み得る。
【0029】
層315Bは、一実施形態ではプログラマブル論理を使用して実装される、ファブリックアクセラレータ330を含む。ファブリックアクセラレータ330は、層315A内の機能と層315C内の機能との間の接続性を提供することができる。例えば、ファブリックアクセラレータ330は、層315C内のメモリ340(例えば、RAM)にデータを記憶するための第1のファブリックアクセラレータを含み得る。アクセラレータ330はまた、他の層内の機能と通信するためにシーケンサ120によって使用される、第2のファブリックアクセラレータと、層間でデータを通信するときに暗号アクセラレータ317又は圧縮アクセラレータ320によって使用される、第3のファブリックアクセラレータと、を含み得る。層315A及び315Cはまた、アクセラレータ機能をカスタマイズするか、又はアクセラレータ機能間の通信若しくは順序付けをカスタマイズする能力を作り出すプログラマブル論理345を含み得る。一実施形態では、層315A内のプログラマブル論理345Aは、ホストインターフェースアクセラレータ310とプロセッサ305との間に存在し、プロセッサ305に処理ヒントを提供するように特定のホストインターフェースデータをカスタマイズして、プロセッサ305のキャッシュ効率を向上させる。別の実施形態では、暗号アクセラレータ317とネットワークインターフェースアクセラレータ325との間のプログラマブル論理345Aは、ネットワークインターフェースアクセラレータ325によって受信される、又はそれに向かうトラフィックに使用される暗号鍵又は使用される暗号アルゴリズムをカスタマイズする。これらの例では、プログラマブル論理345Aは、層315A内の少なくとも2つのアクセラレータ機能間のカスタマイズされた処理又は通信を提供するためのシムとして機能する。更に、層315Cはまた、その強化されたコンポーネント間の通信を許可するためのシムとして機能する、プログラマブル論理345Bを含むことができる。
【0030】
一実施形態では、層315Bはまた、層315A内のパケットバッファ205のようなパケットバッファブロック、又はネットワーク鍵管理ブロックを含む。更に、層315A内の強化されたアクセラレータブロック(例えば、アクセラレータ310、317、320、又は325)のような強化されたアクセラレータブロックも、層315B内に含まれ得る。
【0031】
一実施形態では、層315Aはまた、層315A内の機能間の接続性を提供するファブリックアクセラレータ(例えば、1つ以上のファブリックアクセラレータブロック)を含む。すなわち、各層は、当該層内の機能間の通信を提供するためにそれ自身のファブリックアクセラレータを有し得、一方、層315B内のファブリックアクセラレータ330は、層315A~C間の接続を提供する。
【0032】
層315Cは、ホストインターフェース210と、ネットワークインターフェース215と、メモリコントローラ335と、メモリ340と、を含む。メモリ340は、パケットバッファ205よりも長いデータを記憶するために使用され得る。例えば、データが異なるアクセラレータ機能(例えば、パイプラインの異なるステージ)間で移動するとき、データはパケットバッファ205に記憶され得るが、データがより長い時間の待機を必要とするとき、SmartNIC300はデータをメモリ340に記憶し得る。メモリ340はまた、アクセラレータ関連メタデータ、例えば、暗号アクセラレータ317の暗号鍵又は暗号状態を記憶するために使用され得る。
【0033】
示されるように、層315は、互いに通信することができる。一実施形態では、層315A及び層315Cは、ファブリック層(すなわち、相互接続)として機能する層315Bを使用して通信する。この例では、層315Bは、層315Aと層315Cとの間の間接接続として機能する。しかしながら、別の実施形態では、層315A及び層315Cは、層315B内の論理を通過することなく、互いに直接通信することができる。例えば、層315Bは、層315C内のバンプパッドを層315A内のバンプパッドに直接接続する貫通ビア(例えば、シリコン貫通ビア)を含み得る。このようにして、層315A内の機能は、層315B内のファブリックアクセラレータ330に依存することなく、層315C内の機能と直接通信することができる。例えば、層315A内の一部の機能は、これらの貫通ビアを使用して層315Cと直接通信し得、層315A内の他の機能は、層315Cと通信するときにファブリックアクセラレータ330を使用し得る。SmartNIC300が複数の中間層を含むように拡張される場合、これらの層はまた、必要に応じて、互いに接続された貫通ビアを有して、最上層315Aと最下層315Cとの間の直接接続を提供することができる。
【0034】
図1図3に示されるように複数の層に機能を空間的に分散させることにより、これらのハードウェア素子の全てが同一の2D平面に配設された場合よりも、これらの機能間(及びパケットバッファ205とシーケンサ120との間)をより緊密に結合することができる。例えば、これらの機能が全て同一のモノリシックチップ上に配設された場合、異なる層上の2つの機能間でデータを転送するよりも、チップの両端の2つの機能間でデータを転送する方が、より多くのレイテンシを必要し得る。したがって、SmartNIC300に3D構造を使用することによって、より多くの機能をSmartNIC300に実装することが可能になり、このことは、機能を空間的に分散させることに伴ってレイテンシを増加させることなく、SmartNIC300をより柔軟かつスケーラブルにする。
【0035】
図4は、一例による、中間層415Bに暗号エンジン405を備える3D SmartNIC400を示す。すなわち、SmartNIC400は、3つの層415A~Cを含み、暗号エンジン405は、上層415Aと下層415Cとの間に挟まれた中間層415Bに配設される。そうすることにより、暗号エンジン405に追加の物理的保護が提供される。例えば、これは、暗号エンジン405を、その鍵にアクセスしようとする物理的な侵入の試みから保護する。不正行為者は、暗号エンジン405によって使用される鍵にアクセスするために、SmartNIC400が動作し続けるような方法でSmartNIC400を逆アセンブルする必要がある。しかしながら、2D SmartNICは、その暗号エンジン405がアクセスしやすい2D平面に位置する必要があるので、同じ保護を提供しない。
【0036】
一実施形態では、暗号エンジン405は、SmartNIC400内の自身の層415に配設され得る。しかしながら、別の実施形態では、追加機能がエンジン405と同じ層415Bに配設され得る。例えば、層415Bはまた、図3に示されるファブリックアクセラレータ330を含み得る。
【0037】
図5は、この例では、図3に示される様々なアクセラレータ機能、例えば、プロセッサ305、ホストインターフェースアクセラレータ310、暗号アクセラレータ317、圧縮アクセラレータ320、及びネットワークインターフェースアクセラレータ325とともに使用され得るシーケンサ120を示す。この実施形態では、シーケンサ120は、これらの機能と通信するためのサブシーケンサモジュールを有する。すなわち、シーケンサ120は、ホストインターフェースアクセラレータ310及びネットワークインターフェースアクセラレータ325に対応するI/Oシーケンサ505と、プロセッサ305に対応するプロセッサシーケンサ510と、暗号アクセラレータ317に対応する暗号シーケンサ515と、圧縮アクセラレータ320に対応する圧縮シーケンサ520と、を含む。
【0038】
空間的に分散したアクセラレータ機能(例えば、プロセッサ305、ホストインターフェースアクセラレータ310、暗号アクセラレータ317、圧縮アクセラレータ320、及びネットワークインターフェースアクセラレータ325)とシーケンサ120との間の通信は、少なくとも2つの方法で実行され得る。第1に、シーケンサ120又は機能のいずれかによって解釈されるメタデータは、テナントデータがパイプライン化アクセラレーションを実行したときに、特定のトラフィックフローが順番に横断することが必要な分散機能を記述するターンリストを含む。言い換えれば、トラフィックフローに対応するメタデータは、データが機能によって処理されるべき順序を定義することができる。このターンリストは、ネットワークフロー内のパケットを処理するため使用される機能、及び選択された機能がパケットを処理する順序を決定するパイプラインのステージを確立する。
【0039】
第2に、メタデータは、パケットの処理に使用されるべきパイプライン化アクセラレーション機能のリンクリストを含み、リンクリスト内のヌルポインタは、出口ポイント(例えば、ホスト又はネットワーク出口)を示すか、又はヌルポインタは、当該パケットのその処理に基づいて次のリンクリスト機能(又は複数の機能)を事前設定することが予想される、ヌルポインタの前の、リンクリスト内の最後から2番目の宛先であるパイプラインステージを示す。このようにして、パケットが処理中に、パイプラインの次のステージ又は機能を動的に選択することができる。
【0040】
これらの技法の両方は、トラフィックフローがそれらの異なる機能を横断するときにトラフィックフローの低レイテンシを達成し、パケットバッファ205内のトラフィックフローの低レジデンシを達成し、それによって、他のテナントのネットワークフロー用のパケットバッファ205の効率を増加させる。
【0041】
図6は、一例による、SmartNIC110と、記憶アクセラレータカード、機械学習アクセラレータカード、又は他のアクセラレータカード610と、を含むI/O拡張ボックス600のブロック図である。図6において、ホスト105は、別個の基板又は同一基板であり得る、複数のSmartNIC110と通信する。次に、SmartNIC110は、記憶アクセラレータカード、機械学習アクセラレータカード、又は他のアクセラレータカード610に通信可能に結合されている。拡張ボックス600は、ホスト105とSmartNIC110との間、及びSmartNICと記憶アクセラレータカード、機械学習アクセラレータカード、又は他のアクセラレータカードとの間の通信を許可するスイッチ605を含む。一実施形態では、スイッチは、ホスト105、SmartNIC110、及び記憶アクセラレータカード、機械学習アクセラレータカード、又は他のアクセラレータカード610の間でのキャッシュコヒーレント通信及び非キャッシュコヒーレント通信を容易にする。したがって、スイッチ605は、ホスト105のメモリ空間がSmartNIC110及び記憶アクセラレータカード、機械学習アクセラレータカード、又は他のアクセラレータカード610によって共有されるキャッシュコヒーレント方式で、又は非コヒーレントデータ転送(例えば、ダイレクトメモリアクセス(DMA)の読み書き)を使用することによって、ホスト105、SmartNIC110、及び記憶アクセラレータカード、機械学習アクセラレータカード、又は他のアクセラレータカード610の間でのデータ転送をサポートすることができる。
【0042】
一例として、ホスト105は、(データが大きすぎないと仮定して)コヒーレントドメインを使用して全てのSmartNIC110に送信されるべきデータを転送するが、非コヒーレントドメインを使用して大量のデータ、又はSmartNIC110のうちの1つのみに宛てられたデータを転送する。
【0043】
前述では、本開示において提示される実施形態が参照される。しかしながら、本開示の範囲は、特定の記載された実施形態に限定されない。代わりに、説明される特徴及び要素の任意の組み合わせは、異なる実施形態に関連するか否かにかかわらず、企図される実施形態を実装及び実践するために企図される。更に、本明細書に開示される実施形態は、他の可能な解決策又は従来技術に勝る利点を達成し得るが、特定の利点が所与の実施形態によって達成されるか否かは、本開示の範囲を限定するものではない。したがって、前述の態様、特徴、実施形態、及び利点は、単に例示的なものであり、特許請求の範囲に明示的に記載されている場合を除き、添付の特許請求の範囲の要素又は限定とは見なされない。
【0044】
当業者によって理解されるように、本明細書に開示される実施形態は、システム、方法、又はコンピュータプログラム製品として具現化され得る。したがって、態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、又は本明細書ではすべて一般に「回路」、「モジュール」、若しくは「システム」と呼ばれ得るソフトウェア態様とハードウェア態様とを組み合わせた実施形態の形態をとり得る。更に、態様は、コンピュータ可読プログラムコードが具現化された1つ以上のコンピュータ可読媒体において具現化されたコンピュータプログラム製品の形態をとり得る。
【0045】
1つ以上のコンピュータ可読媒体の任意の組合せを利用し得る。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記憶媒体であり得る。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線、若しくは半導体のシステム、装置、若しくはデバイス、又は前述の任意の好適な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は、1つ以上のワイヤを有する電気接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(random access memory、RAM)、読み取り専用メモリ(read-only memory、ROM)、消去可能プログラマブル読み取り専用メモリ(erasable programmable read-only memory、EPROM又はフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリ(portable compact disc read-only memory、CD-ROM)、光記憶デバイス、磁気記憶デバイス、又は前述の任意の好適な組み合わせを含む。本明細書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、又はデバイスによって、又はそれに関連して使用するためのプログラムを含むか、又は記憶することができる任意の有形媒体である。
【0046】
コンピュータ可読信号媒体は、例えば、ベースバンドにおいて、又は搬送波の一部として、コンピュータ可読プログラムコードが具現化された伝搬データ信号を含み得る。そのような伝搬信号は、電磁気、光学、又はそれらの任意の好適な組み合わせを含むが、それらに限定されない、種々の形態のうちのいずれかをとり得る。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、又はデバイスによって、又はそれに関連して使用するためのプログラムを通信、伝搬、又は移送することができる任意のコンピュータ可読媒体であり得る。
【0047】
コンピュータ可読媒体上に具現化されたプログラムコードは、ワイヤレス、ワイヤライン、光ファイバケーブル、RFなど、又は前述の任意の好適な組合せを含むが、それらに限定されない、任意の適切な媒体を使用して伝送され得る。
【0048】
本開示の態様の動作を実行するためのコンピュータプログラムコードは、例えば、Java(登録商標)、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組合せで書き込まれ得る。プログラムコードは、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で部分的に、リモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバ上で完全に実行し得る。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(local area network、LAN)若しくは広域ネットワーク(wide area network、WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得るか、又は外部コンピュータ(例えば、インターネットサービスプロバイダを使用するインターネットを介して)に接続され得る。
【0049】
本開示の態様は、本開示に提示された実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフロー図説明及び/又はブロック図を参照して以下に記載されている。フロー図説明及び/又はブロック図の各ブロック、並びにフロー図説明及び/又はブロック図におけるブロックの組み合わせは、コンピュータプログラム命令によって実装することができることが理解されよう。これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フロー図及び/又はブロック図のブロックで指定された機能/行為を実施するための手段を作成するような機械をもたらすように、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能なデータ処理装置のプロセッサに提供され得る。
【0050】
これらのコンピュータプログラム命令はまた、コンピュータ可読記憶媒体に記憶された命令が、フロー図及び/又はブロック図のブロックで指定された機能/行為の態様を実装する命令を含む製造物品を生成するように、コンピュータ、プログラマブルデータ処理装置、及び/又は他のデバイスに、特定の方法で機能するように指示することができる、コンピュータ可読記憶媒体に記憶され得る。
【0051】
コンピュータプログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスにロードされて、一連の動作ステップを、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行させて、コンピュータ実装プロセスを生成し得、そのため、コンピュータ、又は他のプログラマブル装置上で実行される命令は、フロー図及び/又はブロック図のブロックに指定される機能/行為を実装するためのプロセスを提供する。
【0052】
図中のフロー図及びブロック図は、本発明の様々な実施例によるシステム、方法、及びコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能、及び動作を例解する。これに関して、フロー図又はブロック図の各ブロックは、指定された論理機能を実装するための1つ以上の実行可能命令を含む、命令のモジュール、セグメント、又は部分を表し得る。いくつかの代替的な実装形態では、ブロックに記載されている機能は、図に記載された順序から外れて発生する場合がある。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行され得るか、又はブロックは、関与する機能に応じて、逆の順序で実行され得る。ブロック図及び/又はフロー図例解図の各ブロック、並びにブロック図及び/又はフロー図例解図におけるブロックの組み合わせは、指定された機能若しくは行為を実行するか、又は専用ハードウェアとコンピュータ命令との組み合わせを行う、専用ハードウェアベースのシステムによって実装することができることにも留意されたい。
【0053】
上記は特定の例を対象とするが、他の例及び更なる例が、その基本的な範囲から逸脱することなく考案され得、その範囲は、以下の「特許請求の範囲」によって決定される。
図1
図2
図3
図4
図5
図6
【国際調査報告】