JP2023529831A - 直接取り付けられたディスパッチを使用した、分離されたスイッチ制御経路 - Google Patents

直接取り付けられたディスパッチを使用した、分離されたスイッチ制御経路 Download PDF

Info

Publication number
JP2023529831A
JP2023529831A JP2022574299A JP2022574299A JP2023529831A JP 2023529831 A JP2023529831 A JP 2023529831A JP 2022574299 A JP2022574299 A JP 2022574299A JP 2022574299 A JP2022574299 A JP 2022574299A JP 2023529831 A JP2023529831 A JP 2023529831A
Authority
JP
Japan
Prior art keywords
packet
functions
function
host
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022574299A
Other languages
English (en)
Other versions
JPWO2021247103A5 (ja
Inventor
ミリンド ミッタル,
ジャイディープ ダスティダー,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xilinx Inc filed Critical Xilinx Inc
Publication of JP2023529831A publication Critical patent/JP2023529831A/ja
Publication of JPWO2021247103A5 publication Critical patent/JPWO2021247103A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • G06F13/423Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus with synchronous protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Logic Circuits (AREA)

Abstract

本明細書における実施形態は、組み込まれた構成要素におけるI/O機能とホストとの間で伝送されるデータを個別のデータ経路に分離するための技法を記述している。一実施形態では、データパケットは、組み込まれた構成要素のスイッチをバイパスする直接データ経路を使用して伝送される。それとは対照的に、構成パケット(例えばホット-スワップ、ホット-追加、ホット-除去データ、いくつかのタイプの記述子、等々)はスイッチに伝送され、次に、スイッチがそれらの構成パケットをそれらの行先に転送する。データパケットのための直接経路は、帯域幅に敏感なトラフィックをホストとI/O機能との間で輸送するのにスイッチ接続性(およびそれに付随する待ち時間)を当てにせず、その代わりに、帯域幅、リソース、記憶/転送、およびスイッチの待ち時間特性を回避している(例えばバイパスしている)。一方、ホットプラグ属性(これらの属性は、待ち時間または帯域幅に敏感ではない)などのソフトウェア互換性属性は、構成データ経路を提供するために、スイッチを使用することによって継続してサポートされる。【選択図】図4

Description

本開示の例は、一般に、ホストと、組み込まれた構成要素上のI/O機能との間で伝送されるデータパケットおよび構成パケットのための個別のデータ経路の確立に関する。
Peripheral Component Interconnect Express(PCIe)によってイネーブルされるシステムなどのServer Host-Acceleratorシステム、またはCompute Express Link(CXL)およびCache Coherent Interconnect for Accelerators(CCIX)などのキャッシュコヒーレンシプロトコルは、プロトコル認識スイッチ構成要素を介して、複数のデバイスに対する増加したファンアウトを達成している。したがって単一の物理ホストポートは、ホストおよびI/Oデバイスの両方がCXL、CCIXおよびPCIeによって確立された二地点間接続を介して通信中であっても、ネットワーク機能、記憶機能、アクセラレータ機能、Direct Memory Access(DMA)機能、等々などの異なるI/O機能を実施するデバイスを含む、書替え可能ゲートアレイ(FPGA)、グラフィック処理装置(GPU)、ネットワークインタフェースカード(NIC)などの複数のI/Oデバイスに通信することができる。
また、Server Host-Acceleratorシステムは、システムにおける多重デバイスカードスロットのために、同じプロトコル認識スイッチ構成要素を介してホット-プラグ機構を提供している。ホット-追加およびホット-除去能力を含むこれらのホット-プラグ機構は、特定のサーバが、これらのスロットにおける静的プラグインプロトコルカードに基づいて、一定の組合せの機能に制限されないシステムをもたらしている。その代わりに、ランタイム時に、任意の組合せのI/O機能を動的にホット-追加し、ホット-除去し、またはホット-スワップして、所望の構成のシステムをもたらすことができる。
しかしながらPCIeおよびCXLトポロジーはツリートポロジーである。ツリートポロジーの欠点は、ホストからのトラフィックがスイッチの上流側のポートを介してソースルートノードからツリーの分岐まで横断しなければならないことである。逆方向のトラフィックも同じツリー横断経路の対象になる。さらに、キャッシュコヒーレンシプロトコルは、総合システム性能に対する待ち時間の均衡がとれない影響のため、待ち時間に対してより敏感な感度を有している。キャッシングエージェントの場合、先行技法では、スイッチボトルネックを介して接続された複数のキャッシュエージェントエンドポイントにコヒーレンシアクションをサービスする際の待ち時間が長くなる。コヒーレンシプロトコルに加えて、先行技法では、ホストとI/Oデバイスとの間でデータを伝送する場合、スイッチのリソースを調停し、また、スイッチを介して輸送しなければならないため、ホストと個々のデバイスとの間の待ち時間が長くなる。さらに、ホストとすべてのデバイスとの間の同時プロトコルメッセージのために、スイッチを介して帯域幅を共有するため、ホストと個々のI/Oデバイスとの間の帯域幅が狭くなる。最後に、スイッチは要求および応答を記憶し、次に、ホストへの単一の上流側接続のために、その要求および応答をすべてのI/Oデバイスの間で転送しなければならないため、スイッチのリソースの効率が低下する。
本明細書において説明される一実施形態は、第1のポートを備えるホストと、第2のポートを含む組み込まれた構成要素であって、第1のポートおよび第2のポートがホストと組み込まれた構成要素との間の物理接続を形成する、組み込まれた構成要素とを備える、コンピューティングシステムであり、組み込まれた構成要素は、複数のI/O機能と、第2のポートを介してホストからパケットを受け取り、パケットのタイプを識別し、かつ、パケットのタイプに基づいて、複数のI/O機能のうちの行先I/O機能へ直接パケットを経路指定するかまたは埋設されたスイッチを使用して行先I/O機能へ間接的にパケットを経路指定するように構成されたパススルーインタフェースとを含む。
本明細書において説明される一実施形態は、ホスト上の第2のポートとの物理接続を形成するように構成された第1のポートと、複数のI/O機能と、埋設されたスイッチと、第1のポートを介してホストからパケットを受け取り、パケットのタイプを識別し、かつ、パケットのタイプに基づいて、複数のI/O機能のうちの行先I/O機能へ直接パケットを経路指定するかまたは埋設されたスイッチを使用して行先I/O機能へ間接的にパケットを経路指定するように構成されたパススルーインタフェースとを含む装置である。
本明細書において説明される一実施形態は、組み込まれた構成要素のパススルーインタフェースでホストから第1のパケットを受け取ることであって、組み込まれた構成要素が複数のI/O機能と、パススルーインタフェースに通信結合された埋設されたスイッチとを備える、第1のパケットを受け取ることと、第1のパケットがデータパケットであることを決定することであって、複数のI/O機能のうちの第1のI/O機能がそのデータパケットの行先である、決定することと、埋設されたスイッチをバイパスする直接データ経路を使用して、データパケットをパススルーインタフェースから第1のI/O機能へ直接経路指定することと、パススルーインタフェースでホストから第2のパケットを受け取ることと、第2のパケットが構成パケットであることを決定することであって、第1のI/O機能がその構成パケットの行先である、決定することと、データパケットを埋設されたスイッチを介してパススルーインタフェースから第1のI/O機能へ経路指定することとを含む方法である。
したがって上で示した特徴を詳細に理解することができる方法においては、上で簡単に要約したより特定の説明には例示的実施形態が参照されており、それらの例示的実施形態のうちのいくつかは添付の図面に示されている。しかしながら添付の図面は典型的な例示的実施形態を示したものにすぎず、したがって本開示の範囲を限定するものと見なしてはならないことに留意されたい。
例による、I/O機能のための異なるデータ経路を有するコンピューティングシステムを示す図である。 例による、異なるデータ経路を有するパススルーインタフェースを示す図である。 例による、データパケットおよび構成パケットを異なるデータ経路を使用してホストからI/O機能に伝送するためのフローチャートである。 例による、データパケットおよび構成パケットを異なるデータ経路を使用してI/O機能からホストに伝送するためのフローチャートである。 例による、新しいI/O機能にホットスワップするためのフローチャートである。 例による、新しいI/O機能が追加されているコンピューティングシステムを示す図である。 例による、ホストがコンバージドネットワークインタフェースカードと通信しているコンピューティングシステムを示す図である。
理解を容易にするために、可能である場合、図面で共通の全く同じ要素を示すために同じ参照符号が使用されている。1つの例の要素は、他の例に有利に組み込むことができることが企図されている。
以下、様々な特徴について、図を参照して説明する。図は、スケール通りに描かれていることもあれば、スケール通りに描かれていないこともあること、また、すべての図を通して、同様の構造または機能の要素は同様の参照符号で表されていることに留意されたい。図に意図されていることは、単に特徴の説明を容易にすることにすぎないことに留意されたい。図には、特許請求の範囲の説明についての網羅的な説明であることも、あるいは特許請求の範囲に対する限定であることも意図されていない。さらに、例証されている例は、必ずしも示されている態様または利点のすべてを有している必要はない。特定の例に関連して説明されている態様または利点は必ずしもその例に限定されず、たとえそのように例証されていなくても、あるいはそのように明確に説明されていなくても、任意の他の例で実践することができる。
本明細書における実施形態は、組み込まれた構成要素におけるI/O機能とホストとの間で伝送されるデータを個別のデータ経路に分離するための技法を記述している。一実施形態では、データパケット(例えばDMAペイロードおよび記述子、CXLスヌープまたはCCIXメッセージ)は、組み込まれた構成要素のスイッチをバイパスする直接データ経路を使用して伝送される。それとは対照的に、構成パケット(例えばホット-スワップ、ホット-追加、ホット-除去データ、構成制御書込み、または構成状態読出し、等々)はスイッチに伝送され、次に、スイッチがそれらの構成パケットをそれらの行先に転送する。この方法によれば、スイッチ制御経路が2つの経路、すなわちデータパケットのための経路、および構成パケットのための別の経路に分離される。データパケットのための直接経路は、帯域幅または待ち時間に敏感なトラフィックをホストとI/O機能との間で輸送するのにスイッチ接続性を当てにせず、その代わりに、帯域幅、リソース、記憶/転送、およびスイッチの待ち時間特性を回避している(例えばバイパスしている)。一方、ホットプラグ属性または構成レジスタのプログラミング(これらは、待ち時間または帯域幅に敏感ではない)などのソフトウェア互換性属性は、構成データ経路を提供するために、スイッチを使用することによって継続してサポートされる。
一実施形態では、組み込まれた構成要素は、ホストから受け取ったデータをI/O機能およびスイッチへ経路指定し、さらにはデータをホストに伝送する際に、I/O機能とスイッチの間で調停するためのパススルーインタフェースを含む。しかしながらデータを待ち行列にバッファする(したがって待ち時間が追加されて、帯域幅に影響を及ぼす)スイッチとは異なり、パススルーインタフェースの経路指定機能および調停機能はパケットを記憶せず、受け取ったパケットを直ちにそれらの行先へ転送する。上で説明したように、パススルーインタフェースは、時間に敏感なデータに対して、スイッチをバイパスする、ホストとI/O機能との間の直接経路を確立することができ、一方、構成データ(待ち時間および時間に敏感ではない)は、スイッチを使用して、ホストとI/O機能との間で経路指定される。この方法によれば、待ち時間または帯域幅に敏感ではないパケットが、待ち時間および帯域幅に敏感なデータによって使用される同じデータ経路を妨げる原因になることはない。
図1は、例による、I/O機能140のための異なるデータ経路を有するコンピューティングシステム100を示したものである。詳細には、コンピューティングシステム100は、ホスト105とI/O機能140との間でデータパケットを伝送するための直接データ経路170、およびホスト105とI/O機能140との間で構成パケットを伝送するための間接構成データ経路180を提供している。したがって時間に敏感なデータおよび時間に敏感ではないデータが同じ物理接続を共有する従来の解決法とは異なり、コンピューティングシステム100では、組み込まれた構成要素160の中で、時間に敏感なデータを時間に敏感ではないデータとは別の経路上で伝送することができる。
示されているように、コンピューティングシステム100は、ホスト105と、I/O機能140を含む組み込まれた構成要素160とを含む。この例ではホスト105は、1つまたは複数のプロセッサ110およびメモリ115を含む。プロセッサ110は任意の数の処理要素を代表しており、任意の数の処理要素の各々は任意の数の処理コアを含むことができる。メモリ115は、揮発性メモリ要素、不揮発性メモリ要素、またはそれらの両方の組合せを含むことができる。この例ではメモリ115は、1つまたは複数の仮想計算機(VM)120またはテナントをホストしている。これらのVM120は、組み込まれた構成要素160にタスクの実行を依頼する機能を実施することができる。組み込まれた構成要素160のI/O機能140は、次に、これらのタスクを実施することができる。
ホスト105は、組み込まれた構成要素160のポート130に結合されているポート125を含む。すなわち、ホスト105および組み込まれた構成要素160のI/O機能140は、同じ対のポート125、130を使用してデータを交換している。一実施形態では、ホスト105および組み込まれた構成要素160は、PCIeプロトコルを使用してポート125、130上でデータを交換する。さらに、ポート125と130の間の同じ物理接続が組み込まれた構成要素160のI/O機能140によって共有されている。一実施形態では、ポート125と130の間の物理接続を任意の所与の時間に使用することができるのは、複数のI/O機能140のうちの1つのI/O機能140だけである。複数のI/O機能140の各々が物理接続を使用してホスト105とデータを交換する機会を持つよう、時間多重化を使用することができる。この方法によれば、ポート125と130の間の物理接続(この接続は、典型的には最も広い帯域幅接続である)の帯域幅がI/O機能140同士の間で共有される。
組み込まれた構成要素160は、複数のI/O機能140および埋設されたスイッチ150を統合することができる任意の物理デバイスであってもよい。一実施形態では、組み込まれた構成要素160は印刷回路基板(PCB)(例えば基板)を含むことができ、I/O機能140および埋設されたスイッチ150は、PCBの上に取り付けられる個別の集積回路(例えば半導体チップ)である。PCBは、これらの集積回路がPCBに差し込まれるソケットを含むことができる。この方法によれば、集積回路をホット-スワップすることができる(例えば第1のI/O機能を実施する1つの集積回路がソケットから除去され、第2のI/O機能を実施する第2の集積回路に置き換えられる)。別の実施形態では、組み込まれた構成要素160は、I/O機能140のための集積回路および埋設されたスイッチ150が1つまたは複数のチップキャリアパッケージ中に密閉されるシステムインパッケージ(SiP)であってもよい。SiPの場合、I/O機能をホット-スワップすることができないかもしれないが、依然としてI/O機能140を選択的に起動し、かつ、起動を解除することができる(例えばホット-追加およびホット-除去することができる)。
さらに別の実施形態では、組み込まれた構成要素160は、構成要素160のすべての構成要素が同じ集積回路またはチップの中に含まれるシステムオンチップ(SoC)である。SoCは、機能140を起動し、または起動を解除することができる(例えばホット追加(hot added)またはホット除去(hot removed)する)、I/O機能140を実現するための硬化論理を含むことができる。別法としては、SoCは、I/O機能140をホットスワップすることができるよう、I/O機能140を実現するためのプログラマブル論理を含むことも可能であり、プログラマブル論理が第2のI/O機能を実施するよう、1つのI/O機能のためのプログラマブル論理が再構成される。他の実施形態では、組み込まれた構成要素160は、組み込まれた構成要素160の例証されている回路機構がプログラマブル論理で実現されるFPGA、または回路機構が硬化論理を使用して実現されるASICであってもよい。
組み込まれた構成要素160の特定の実施態様に無関係に、コンピューティングシステム100が動作している間、集積回路を物理的に除去し、硬化論理を起動解除/起動し、またはプログラマブル論理を再プログラミングすることにより、I/O機能140を起動し、または起動を解除することができる(例えばホット-追加またはホット-除去することができる)。いくつかの実施形態では、I/O機能140は、基板(例えばPCB)上で第1の集積回路を別の集積回路に置き換えることによって、またはそれまで第1のI/O機能を実施していたプログラマブル論理を第2のI/O機能を実施するように再構成することによってホットスワップすることができる。組み込まれた構成要素160の、ホットスワップ/追加/除去によって影響されない他のI/O機能140は、並行して動作を継続することができる。
組み込まれた構成要素160は、ポート130、I/O機能140および埋設されたスイッチ150に結合されているパススルーインタフェース135を含む。パススルーインタフェース135は、ポート130を使用してI/O機能140、スイッチ150およびホスト105の間でパケットを伝送するための経路指定機能および調停機能を実施している。例えばホスト105からパケットを受け取る場合、パススルーインタフェース135は、パケットをI/O機能140へ複数の直接データ経路170のうちの1つを横切らせるべきか、またはその代わりに埋設されたスイッチ150へ経路指定すべきかどうかを示すパケットのタイプを決定する。パケットを組み込まれた構成要素160からホスト105に伝送する場合、パススルーインタフェース135は、調停論理を使用して、パケットをホスト105に伝送するためにポート130を使用することができるソース(例えばI/O機能140または埋設されたスイッチ150のうちの1つ)を決定することができる。
一実施形態では、パススルーインタフェース135は、ホスト105、I/O機能140またはスイッチ150から受け取るパケットをバッファせず、または待ち行列に加えない。その代わりにインタフェース135は、待ち時間を加えることなくパケットを「通過」させる。例えばパススルーインタフェース135がパケットを受け取ると、パススルーインタフェース135はそのパケットを直ちに行先へ転送し、したがって受け取られたパケットは、その前に受け取られたパケットがパススルーインタフェース135によって転送されるのを待機する必要はない。パススルーインタフェース135については、図2でより詳細に考察される。
I/O機能140は、組み込まれた構成要素160によって実施される、ホスト105によってオフロードされてもよい任意の機能であってもよい。例えばI/O機能140はアクセラレータであってもよい(例えば図形アクセラレータ、機械学習アクセラレータの人工知能、暗号方式アクセラレータ、圧縮アクセラレータ、等々)。他の例では、I/O機能140は、ネットワーク通信機能(例えばNIC機能)、DMAエンジン、ネットワーク記憶機能、等々であってもよい。
I/O機能140は、互いに独立して動作することができる個別のI/Oデバイスまたは機能と見なすことができる。例えばI/O機能140Aはネットワーク記憶を実施するDMAエンジンであってもよく、一方、I/O機能140Bは人工知能アクセラレータであってもよい。I/O機能140Aおよび140Bは個別の集積回路であってもよく、または同じ集積回路中の異なる回路機構(例えば異なる硬化論理または異なるプログラマブル論理)であってもよい。いずれの場合においても、以下で考察されるように、I/O機能140は、コンピューティングシステム100が動作している間、ホット-除去する(起動を解除する)ことができ、またはホット-追加する(起動する)ことができる。例えばホスト105は、組み込まれた構成要素160が新しいI/O機能140を追加し(例えばそれまで起動が解除されていたI/O機能140Bを起動し、または第5のI/O機能(図示せず)を追加する)、またはI/O機能を除去する(例えばそれまで起動されていたI/O機能140Cの起動を解除する)のと同時に、その時点でI/O機能140Aと通信中であってもよい。
埋設されたスイッチ150は、パケットをI/O機能140とホスト105との間で経路指定するPCIeスイッチであってもよい。また、スイッチ150は、ホスト105から、I/O機能140には転送されないパケットを受け取ることも可能である。上で言及したように、スイッチ150を使用して、I/O機能140をホット-スワップし、ホット-追加し、またはホット-除去するために使用される構成パケットなどの、待ち時間および帯域幅に敏感ではないデータを経路指定することができる。構成パケットは、送りアクションおよび受取りアクションを開始するためにキャッシュコヒーレンシプロトコルに使用される記述子などの他の情報を同じく含むことができる。
図1では、ホスト105によって伝送される、複数のI/O機能140のうちの1つのために意図されている構成パケットは、複数の間接構成データ経路180のうちの1つに沿ったスイッチ150を介して経路指定される。したがって構成パケットはスイッチ150中の待ち行列155に記憶される。この待ち行列155はホスト-スイッチバッファと呼ぶことも可能である。スイッチ150は、調停機能を実施して、待ち行列155に記憶された構成パケットが伝送され、または処理される時期を決定することができる。
注目すべきことには、図1では、直接データ経路170は埋設されたスイッチ150、より詳細には待ち行列155をバイパスしている。したがって直接データ経路170は、待ち行列155によって導入された待ち時間を回避するバイパス経路と呼ぶことも可能である。したがってコンピューティングシステム100は、複数のキャッシュ-エージェントエンドポイント(すなわちI/O機能140)に対するコヒーレンシアクションをサービスする際にすべてのデータがスイッチ150を通過する従来技術と比較すると、待ち時間を短くする。さらに、本明細書における実施形態は、待ち時間および帯域幅に敏感なデータをホスト105とI/O機能140との間で伝送する際の、スイッチのリソースの調停の必要を回避する。すなわち敏感なデータは、直接データ経路170を使用して、スイッチ150によって実施される調停機能を回避することができる(調停は、以下で説明されるように依然としてパススルーインタフェース135で実施されるが、パススルーインタフェース135は待ち行列を使用しない)。
また、ホスト105とすべてのI/O機能140との間の同時プロトコルメッセージは直接データ経路170を使用することができるため、ホスト105および個々のI/O機能140は、これらのメッセージのためにスイッチを介して帯域幅を共有する必要はない。さらに、コンピューティングシステム100は、ポート125および130によって形成されたホスト105への単一の上流側接続のために、スイッチ150を当てにして要求および応答を記憶し、次に、すべてのI/O機能140の間で転送することを回避する。したがってコンピューティングシステム100は、すべてのトラフィックがスイッチ150を介して経路指定される従来技術と比較すると、改善された性能を利用することができ、複数のエンドポイント(例えばI/O機能140)が単一の接続(例えばポート125と130の間の物理接続)を使用して、扇形に広がった形でホスト105に接続される。
図2は、例による、異なるデータ経路を有するパススルーインタフェース135を示したものである。すなわち図2は、コンピューティングシステム200が図1に示されている直接データ経路および間接構成データ経路を有することができる、パススルーインタフェース135における回路機構の一例を示している。
簡潔にするために、図2の組み込まれた構成要素260は2つのI/O機能140Aおよび140Bしか含んでいないが、任意の数のI/O機能またはI/Oデバイスを含むことができる。データをホスト105からI/O機能140または埋設されたスイッチ150へ経路指定するために、パススルーインタフェース135は、経路指定論理205およびデマルチプレクサ(de-mux)215を含む。通常、経路指定論理205は、ホスト105のポート125から受け取ったパケット(下流側トラフィックと呼ばれる)の行先を決定する。経路指定論理205は、行先に基づいて、パケットが正しい行先へ経路指定されるよう、de-mux215の選択線、すなわちI/O機能140または埋設されたスイッチ150のうちの1つを制御する。
この例では経路指定論理205は、ホスト105から受け取ったパケットに含まれているデータを復号し、そのパケットの行先を決定する復号器210を含む。一実施形態では、復号器210はパケットのタイプならびにそのパケットの行先IDを識別する。パケットのタイプは、パケットを複数のI/O機能140のうちの1つへ直接データ経路を横切らせるべきか、あるいは埋設されたスイッチ150へ間接構成データ経路を横切らせるべきかどうかを決定する。すなわち、データパケットはI/O機能140へ直接送ることができ、一方、構成パケットは埋設されたスイッチ150へ伝送される。パケットがデータパケットであることを復号器210が決定すると、復号器210は、複数のI/O機能140のうちのそのパケットの行先であるI/O機能140を同じく決定することができる。組み込まれた構成要素260にI/O機能140を追加する場合、ホスト105は、ホスト105が復号器210に提供するIDをそのI/O機能140に割り当てることができる。ホスト105によって伝送されるデータパケットにこのIDを埋め込むことにより、復号器210はデータパケットの正しい行先を識別することができ、したがって経路指定論理205は、そのデータパケットを選択されたI/O機能140に対応する直接データ経路上に経路指定する。
上流側トラフィックを組み込まれた構成要素260からホスト105へ転送するために、パススルーインタフェース135は、ポート130を使用することができる組み込まれた構成要素260の回路構成要素を決定する調停論理220を含む。示されているように、mux225は複数のI/O機能140の各々および埋設されたスイッチ150をポート130に接続している。mux225のための選択信号が調停論理220によって提供される。一実施形態では、調停論理220は、これらの回路構成要素のうちのパケットをポート130に伝送することができる回路構成要素を決定する(例えば調停論理220時間はmux225の選択線を制御する)。この例では調停論理220は、I/O機能140または埋設されたスイッチ150のうちの1つにのみ、ポート130へのアクセスを許容し、したがってデータ衝突は存在しない。調停論理220の詳細は以下でより詳細に考察される。
図2が示しているように、組み込まれた構成要素260がホスト105から下流側データを受け取り、またはホスト105に上流側データを伝送するかどうかに無関係に、データは、待ち行列に加えられることなくインタフェース135を通過することができる。したがってI/O機能140とホスト105との間の直接データ経路に沿って伝送されるトラフィックは、I/O機能140がそれらとホスト105との間の仲介者として埋設されたスイッチ150を当てにしているシステムと比較すると、待ち時間が短い。
パススルーインタフェース135と同様、埋設されたスイッチ150も調停論理230を同じく含む。すなわち、待ち行列155は複数のソースからの複数のパケット(例えばI/O機能140から受け取ったパケット、またはスイッチ150中の内部回路機構によって生成されたパケット)を記憶することができるため、調停論理230は、これらのパケットのうちの、待ち行列155における優先権を持つべきパケットを決定することができる(単純な先入れ先出しモデルではなく)。例えば調停論理220および調停論理230は、いずれも、I/O機能によって生成されたトラフィックにスイッチ中の内部回路機構によって生成されたトラフィックよりも上位の優先順位を付けることができ、あるいはI/O機能140Aから受け取ったトラフィックにI/O機能140Bから受け取ったトラフィックよりも上位の優先順位を付けることができる。これについては以下でより詳細に考察される。
図3は、例による、データパケットおよび構成パケットを異なるデータ経路を使用してホストからI/O機能に伝送するための方法300のフローチャートである。ブロック305で、組み込まれた構成要素がパススルーインタフェースでホストからパケットを受け取る。一実施形態では、組み込まれた構成要素は、組み込まれた構成要素とホストとの間の共有物理接続を当てにする複数のI/O機能(またはI/Oデバイス)を備えている。
ブロック310で、パススルーインタフェースの復号器が、受け取ったパケットがデータパケットであるか、または構成パケットであるかどうかを決定する。例えばパケットヘッダは、パケットのタイプを示すデータを含むことができる。この情報はホストによってパケットの中に入れることができ、あるいはこの情報は、パケットを伝送するために使用される物理輸送プロトコル(例えばPCIe)の一部であってもよい。いずれの場合においても復号器は、パケット中の情報を復号して、それがデータパケットであるかどうかを決定することができ、あるいはより一般的には、時間に敏感なデータを有するパケットであるか、または構成パケット、例えば時間に敏感ではないデータを有するパケットであるかどうかを決定することができる。
データパケットと構成パケットの間の区別は、コンピューティングシステムの特定の実施態様に応じて変化し得る。例えばデータパケットは、DMAペイロード、CXLスヌープ、CCIXメッセージ、等々であってもよく、一方、構成パケットは、ホット-スワップ、ホット-追加またはホット-除去を実施するための記述子またはコマンドを含む(例えばホスト-ツー-I/Oデバイス制御メッセージ)。本明細書における実施形態は、データをパケットタイプに従って分岐することができる任意のシステムと共に使用することができる。
パケットがデータパケットである場合、方法300はブロック315へ進行し、パススルーインタフェースがデータパケットを対応するI/O機能へ直接経路指定する。言い換えると、パススルーインタフェースの経路指定論理は、組み込まれた構成要素の埋設されたスイッチをバイパスする直接データ経路上でデータパケットを転送する。一実施形態では、経路指定論理の復号器は、受け取ったデータパケットを復号して、そのパケットの行先を識別する(例えばデータパケット中の行先IDを識別する)。例えばコンピューティングシステムを構成する場合(例えばI/O機能を追加し、あるいはI/O機能とホストとの間の通信を確立する場合)、ホストは、経路指定論理に知られている行先IDをI/O機能に割り当てることができる。パケットを組み込まれた構成要素に伝送する場合、ホストは行先IDをパケットの中に埋め込むことができる。復号器は、次に、これらのIDを識別することができ、また、経路指定論理は、例えばde-muxを使用して、受け取ったパケットが適切なI/O機能へ転送されることを保証することができる。
しかしながらパケットが構成パケットである場合、方法300は、ブロック315の代わりにブロック320へ進行し、パススルーインタフェースがその構成パケットを埋設されたスイッチへ転送する。ブロック325で、埋設されたスイッチが、その構成パケットの行先がスイッチ自体であるか、あるいは複数のI/O機能のうちの1つであるかどうかを決定する。すなわち方法300では、ホストは、スイッチに宛てられる、特定のタスクを実施するようにスイッチを構成することができる構成パケットを伝送することができる。ホストは構成パケットをI/O機能に送ることも可能である。
構成パケットがスイッチに宛てられている場合、方法300はブロック330へ進行し、埋設されたスイッチがスイッチの構成(config)空間で(図2には示されていない)パケットを処理する。構成パケットは、config空間を変えることによってスイッチの構成の操作を変更することができる。
構成パケットが複数のI/O機能のうちの1つに宛てられている場合、方法300は、ブロック330の代わりにブロック335へ進行し、埋設されたスイッチがパケットを対応するI/O機能へ転送する。すなわちスイッチは、構成パケットが宛てられているI/O機能を識別し、間接構成データ経路を使用してパケットをそのI/O機能へ転送する。
図4は、例による、データパケットおよび構成パケットを異なるデータ経路を使用してI/O機能からホストに伝送するための方法400のフローチャートである。すなわち方法300は、2つのデータ経路を使用してデータをホストから組み込まれた構成要素の様々な回路構成要素に伝送するための技法を説明しているが、方法400は、2つのデータ経路を使用した、組み込まれた構成要素からホストへのデータの伝送を説明している。
ブロック405で、埋設されたスイッチが複数のI/O機能のうちの1つから第1の構成パケット(例えば構成応答メッセージ)を受け取る。例えば第1の構成パケットは、ホストによってI/O機能に既に伝送された構成パケットに対する返答であってもよい。
並行して、または実質的に同時に、ブロック410で、埋設されたスイッチがスイッチ中のconfig空間から第2の構成パケットを受け取る。あるいは別の実施形態では、埋設されたスイッチは、複数のI/O機能のうちの2つのI/O機能から実質的に同時に2つ(または3つ以上)の構成パケットを受け取ることも可能である。
ブロック415で、埋設されたスイッチの調停論理が、埋設されたスイッチの第1の構成パケットと第2の構成パケットの間を調停する。すなわち、第1のパケットおよび第2のパケットを待ち行列に記憶し、パケットをパススルーインタフェースに伝送することができ、次にホストに伝送することができるまで、調停が完了するのを待機することができる。この調停論理は、スイッチ中のconfig空間よりもI/O機能を好み得る、または他の複数のI/O機能のうちの1つまたは複数よりも、複数のI/O機能のうちの1つを好み得るサービス品質(QoS)政策に基づくことができる。
スイッチの調停論理が第1のパケットおよび第2のパケットのうちの最初に送る方のパケットを決定しても、スイッチは、パケットをパススルーインタフェースに伝送するまで依然として待機することができる。図2に示されているように、パススルーインタフェース135は、例えばmux225を使用してホストにデータを伝送することが許容される回路(例えばスイッチまたは複数のI/O機能のうちの1つ)を決定する独自の調停論理220を有している。
ブロック420で、パススルーインタフェースの調停論理(例えば調停論理220)が、スイッチがホストにいつでも伝送することができる構成パケット(例えば第1の構成パケットおよび第2の構成パケット)を有していること、および少なくとも1つのI/O機能がホストのためのデータパケットを有していることの指示を受け取る。すなわち方法400は、組み込まれた構成要素の少なくとも2つのデバイス(例えばスイッチおよび複数のI/O機能のうちの1つ、または複数のI/O機能の複数のI/O機能)がいつでもホストに送ることができるデータを有していることを仮定している。現時点でホストへのデータの伝送を希望している構成要素が1つだけである場合、調停論理は、何ら調停を実施することなく、単純にその構成要素に物理接続(例えばホストと集積回路の間の物理接続)の使用を許可することができる。
しかしながら複数の構成要素がホストへのデータの伝送を希望していると仮定すると、ブロック425で、パススルーインタフェースの調停論理が構成パケットとデータパケットの間で調停する。一実施形態では、調停論理は、データパケットに構成パケットよりも上位の優先順位を付けるQoS政策を使用することができる。言い換えると、QoS政策は、スイッチによって伝送されるパケットよりも、I/O機能から直接伝送されるパケットを好むことができる。別の例では、QoS政策はI/O機能を互いに対して優先順位を付けることができる。例えばホストのVM(またはテナント)は異なる優先順位を有することができる。ホストの優先順位がより高いVMによって使用される組み込まれた構成要素の1つまたは複数のI/O機能には、ホストのより優先順位が低いVMによって使用されるI/O機能よりも、パススルーインタフェースの調停論理によって使用されるQoS政策におけるより高い優先順位を与えることができる。
ブロック430で、パススルーインタフェースの調停論理が、ホストへの選択されたパケット(調停によって決定された)の伝送を許可する。一実施形態では、調停論理は重付き調停を有しており、特定の時間の間、共有バスに調停論理がアクセスすることができること(あるいは特定の量または特定の数のデータを送ること)を、複数のI/O機能のうちの1つまたはスイッチに知らせる。この方法によれば、調停論理は、組み込まれた構成要素とホストとの間の共有物理接続を使用することができる組み込まれた構成要素の構成要素を制御することができる。
図5は、例による、新しいI/O機能にホットスワップするための方法500のフローチャートである。説明を容易にするために、方法500は、例による、新しいI/O機能が追加されているコンピューティングシステムを示す図6と連携して考察される。
ブロック505で、組み込まれた構成要素が新しいI/O機能を追加する要求をホストから受け取る。一実施形態では、組み込まれた構成要素のためのソフトウェアドライバ(ホストの中で実行される)が、新しいI/O機能を組み込まれた構成要素にホット-追加することを決定する。例えばホスト上で実行するVMまたはテナントが新しいI/O機能のための要求を送っていてもよく、あるいはVMまたはテナントが新しいI/O機能を要求していることをハイパーバイザが決定する。
図6では、コンピューティングシステム600は、I/O機能の追加を処理中の組み込まれた構成要素660を含む。すなわち、ダッシュ線で示されているようにAccelerator Function 0(AF0)およびCXL.Cache Xが組み込まれた構成要素660の中に追加されており、一方、AF1およびCXL.Cache Yは組み込まれた構成要素660の中で既に動作中である。図6では、I/O機能すなわちAF0、AF1、CXL.Cache XおよびCXL.Cache Yはプログラマブル論理で実現されており、一方、AF0 Config Space、ID-X Config Space、ID-Y Config Space、AF1 Config Spaceおよび埋設されたCXL分離スイッチ615は硬化回路機構で実現されていることが仮定されている。すなわちプログラマブル論理を再構成することにより、組み込まれた構成要素660は、I/O機能すなわちAF0、AF1、CXL.Cache XおよびCXL.Cache Yをホット-スワップする(すなわちホット-追加またはホット-除去する)ことができる。しかしながら別の実施形態では、I/O機能は硬化論理で実現することも可能である。その例では、I/O機能を追加または除去するのではなく、ホスト105は、I/O機能を選択的に起動し、または起動を解除することによってI/O機能をホット-追加またはホット-除去することができる。
別の実施形態では、I/O機能すなわちAF0、AF1、CXL.Cache XおよびCXL.Cache Y、ならびにAF0 Config Space、ID-X Config Space、ID-Y Config Space、AF1 Config Spaceは、AF0およびCXL.Cache Xが組み込まれた構成要素660に追加される場合、ホット追加事象の開始に先立って、部分的に再構成されたプログラマブル論理ビットストリームがAF0およびCXL.Cache Xに対して追加されるよう、プログラマブル論理で実現されている。この実施形態では、AF0およびCXL.Cache Xは、いずれも、プログラマブル論理ビットストリームとして先にロードされる機能性を有するホット差込みデバイスであってもよい。
ブロック510で、組み込まれた構成要素がホストから新しいI/O機能のための構成情報およびバインディングを受け取る。一実施形態では、構成情報は、組み込まれた構成要素にI/O機能を追加し、または組み込まれた構成要素のI/O機能を起動するためのデータを含むことができる。さらに、ホストは、ホストによって新しいI/O機能に割り当てられた、I/O機能のためのバインディングとして使用される、パススルーインタフェース(より詳細にはパススルーインタフェースの経路指定論理)に識別データを知らせる識別データを伝送する。パススルーインタフェースの経路指定論理は、次に、受け取ったデータパケットを復号して、上記方法300で説明したようにそのパケットを新しいI/O機能に経路指定すべきかどうかを決定する際に、この識別データを使用することができる。
ブロック510は、新しいI/O機能、データ経路バインディングおよび構成データバインディングのための構造を含むビットストリームを集積回路が受け取るサブブロック515を含む。一実施形態では、サブブロック515は、I/O機能がプログラマブル論理で実現される場合に実施される。例えば組み込まれた構成要素660は、ビットストリームを使用して、AF0およびCXL.Cache Xを含むようにプログラマブル論理を構成することができる。また、ビットストリームは、AF0およびID-X Config Spacesのレジスタのための構造を同じく含むことができる。
データ経路バインディングは、パススルーインタフェースがデータパケットを新しいI/O機能へ直接経路指定するために使用する経路指定情報を提供することができる。一方、構成データバインディングは、埋設されたスイッチおよびパススルーインタフェース135が間接構成データ経路を使用して構成データパケットを新しいI/O機能へ経路指定するために使用する経路指定情報を含む。すなわちデータ経路バインディングにより、データはCXL.Cache Xにパススルーインタフェース135から直接到達することができ、一方、構成データバインディングにより、データは埋設されたCXLスイッチ615を介してAF0およびID-X Config Spacesに到達することができる。
ブロック520で、組み込まれた構成要素が新しいI/O機能およびそのバインディングを起動する。すなわち組み込まれた構成要素が、新しいI/O機能を含むようにプログラマブル論理を構成するか、またはブロック510で得た情報を使用してそれまで駆動が解除されていた硬化回路機構中のI/O機能を起動する。
ブロック525で、組み込まれた構成要素が仮想Hot-Plug Eventをホストに伝送する。図6では、スイッチ615は仮想Hot Plug Eventを生成し、その事象をホスト上で実行するHost Hot-Plugソフトウェアドライバへ転送している。新しいI/O機能は上流側ポートに直接取り付けられてはいるが、仮想Hot Plug Eventは、AF0 Config Spaceとスイッチ615の間の仮想エンドポイント接続に接続されている仮想下流側ポートに新しいI/O機能(例えば新しいI/Oデバイス)が差し込まれている(または通信結合されている)ことをホストに示す。
ブロック530で、ホストが、構成データ経路上で送られた構成パケットを使用して新しいI/O機能を発見する。例えばHost Hot-Plug Software Driverは仮想Hot-Plug Eventに応答することができ、また、CSLルートポート(RP)605からCXL上流側ポート(USP)610へ、また、パススルーインタフェース135を介してスイッチ615へ経路指定された構成読出しメッセージを使用して、新しいエンドポイントI/O機能AF0およびCXL.Cache Xの発見へ進行することができる。スイッチ615は、次に、構成読出しメッセージをAF0およびID-X Config Spaces中の仮想エンドポイントレジスタへ転送することができる。
ブロック535で、ホストが、対応するレジスタをプログラミングすることによって新しいI/O機能を列挙する。一実施形態では、ホスト105は、CXL.Cache XのデバイスIDおよびAF0のデバイスIDを使用して、AF0およびID-X Config SpacesレジスタをプログラミングすることによってAF0およびCXL.Cache Xを列挙する。ホスト105は、次に、直接データ経路および間接構成データ経路を使用して、データトラフィックを新しいI/O機能にいつでも通信することができる。
一実施形態では、以上のブロックが完了すると、ブロック540で、ホストおよび組み込まれた構成要素が直接データ経路を使用してデータパケットを新しいI/O機能へ経路指定する。ブロック545で、ホストおよび組み込まれた構成要素が間接構成データ経路を使用して構成パケットを新しいI/O機能へ経路指定する。この方法によれば、ホストおよび組み込まれた構成要素は新しいI/Oデバイスをホット-追加することができる。
図7は、例による、ホストが組み込まれた構成要素760を使用して実現されたコンバージドNICと通信しているコンピューティングシステム700を示したものである。上記コンピューティングシステムと同様、コンピューティングシステム700は、PCIe RP705とPCIe USP710の間の単一の物理接続を使用して組み込まれた構成要素760に通信結合されているホスト105を含む。さらに、組み込まれた構成要素760は、ホスト105とI/O機能(すなわちDMA Engines0~3)との間の直接データ経路、および埋設されたPCIe分離スイッチ715を含む間接構成データ経路を確立するためのパススルーインタフェース135を含む。
図7は、PCIe接続Server(例えばホスト105)に接続されたPCIe構成要素(例えば組み込まれた構成要素760)を示している。組み込まれた構成要素760は、ホスト105に対する、待ち時間が短く、かつ、帯域幅が広いインタフェースを有するPCI DMA Engines0~3、および対応するサービスを含み、対応するサービスは、それらの制御および状態構造または構成空間とは別である。この例では個々のDMA Engines0~3は、コンバージドNIC(SmartNICとも呼ばれる)の異なるネットワーク機能に対応している。例えばDMA Engine0はネットワークサービスに対応し、DMA Engine1はRemote Direct Memory Access(RDMA)サービスに対応し、DMA Engine2はNon-Volatile Memory Express Over Fiber(NVMEoF)サービスに対応し、また、DMA Engine3は記憶サービスに対応している。Network、RDMA、NVMEoFおよびStorage ServicesのためのHigh Bandwidth Device-to-Host DMAトラフィックは直接データ経路を追従している。さらに、これらのNetwork、RDMA、NVMEoFおよびStorage Servicesのために宛てられる待ち時間が短いHost-to-I/O Function Job Descriptorsも同じく直接データ経路を追従することができる。それとは対照的に、PCIeスイッチ715は、DMA Engines0~3ならびに対応するNetwork、RDMA、NVMEoFおよびStorage Configuration SpacesのためのHost-to-I/O Function低性能制御経路トラフィックを間接構成データ経路に沿って経路指定することができる。
DMA Engines0~3は、プログラマブル論理または硬化回路機構を使用して実現することができる。さらに、上で考察したホット-追加および除去技法を使用して、DMA Engines0~3および対応するサービスを追加し、除去することができる(例えば起動し、起動を解除することができる)。
埋設されたスイッチを含む間接経路とは別の直接データ経路を作り出すことにより、本明細書における実施形態は、エンドポイント(例えばI/O機能)をホット-差込み、追加/除去する能力を含む、ホストに対する、待ち時間が短く、帯域幅が広いデータ経路インタフェースをもたらす。スイッチを介して調停する代わりに直接データ経路を使用することにより、CXL.Cache実施形態およびCCIX Cache実施形態のための待ち時間が短いスヌープ応答、CXL.mem実施形態およびCCIX Home Agent and Slave Agent実施形態のための待ち時間が短く、かつ、帯域幅が広いメモリトラフィック、およびPCIe Endpoint実施形態のための待ち時間が短い記述子通信および帯域幅が広いDMA Reads/Writesなどの、多くの実施形態のための優れた性能が得られる。
以上の説明には、本開示において提示されている実施形態が参照されている。しかしながら本開示の範囲は、説明されている特定の実施形態に限定されない。そうではなく、異なる実施形態に関連しているにせよ、あるいは関連していないにせよ、説明されている特徴および要素の任意の組合せが実現されるべく企図されており、また、企図された実施形態を実践することが企図されている。さらに、本明細書において開示されている実施形態は、他の可能な解決法に優る、あるいは従来技術に優る利点を達成することができるが、特定の利点が所与の実施形態によって達成されるにせよ、あるいは達成されないにせよ、本開示の範囲を限定しない。したがって以上の態様、特徴、実施形態および利点は単に例証的なものにすぎず、特許請求項で明確に記載されている場合を除き、添付の特許請求の範囲の要素または限定とは見なされない。
当業者には認識されるように、本明細書において開示されている実施形態は、システム、方法またはコンピュータプログラム製品として具体化することができる。したがって態様は、全面的にハードウェア実施形態の形態、全面的にソフトウェア実施形態の形態(ファームウェア、常駐ソフトウェア、マイクロ-コード、等々を含む)、またはソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形態を取ることができ、これらは、すべて、本明細書においては、一括して「回路」、「モジュール」または「システム」と呼ぶことができる。さらに、態様は、コンピュータ可読プログラムコードがその上に具体化された、1つまたは複数のコンピュータ可読媒体の中に具体化されたコンピュータプログラム製品の形態を取ることも可能である。
任意の組合せの1つまたは複数のコンピュータ可読媒体を利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってもよい。コンピュータ可読記憶媒体は、例えばそれらに限定されないが、電子、磁気、光、電磁、赤外線または半導体のシステム、装置またはデバイス、あるいはそれらの任意の適切な組合せであってもよい。コンピュータ可読記憶媒体のより具体的な例としては(非排他的列挙)、1つまたは複数の配線を有する電気接続、携帯型コンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、光ファイバ、携帯型コンパクトディスクリードオンリメモリ(CD-ROM)、光記憶デバイス、磁気記憶デバイスまたはそれらの任意の適切な組合せを挙げることができる。この文書の文脈においては、コンピュータ可読記憶媒体は、命令実行システム、装置またはデバイスが使用するための、あるいはこれらの命令実行システム、装置またはデバイスと関連して使用するためのプログラムを含み、または記憶することができる任意の有形媒体である。
コンピュータ可読信号媒体は、中に、例えばベースバンドの中に、または搬送波の一部として、コンピュータ可読プログラムコードが具体化された伝搬データ信号を含むことができる。このような伝搬信号は、それらに限定されないが、電磁、光またはそれらの任意の適切な組合せを含む任意の様々な形態を取ることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置またはデバイスが使用するための、あるいはこれらの命令実行システム、装置またはデバイスと関連して使用するためのプログラムを通信し、伝搬し、または輸送することができる任意のコンピュータ可読媒体であってもよい。
コンピュータ可読媒体の上に具体化されたプログラムコードは、それらに限定されないが、無線、配線、光ファイバケーブル、RF、等々、またはそれらの任意の適切な組合せを含む任意の適切な媒体を使用して伝送することができる。
本開示の態様のための操作を実施するためのコンピュータプログラムコードは、Java、Smalltalk、C++、等々などのオブジェクト指向プログラミング言語、および「C」プログラミング言語などの従来の手続きプログラミング言語、または同様のプログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで作成することができる。プログラムコードは、ユーザのコンピュータ上ですべてを実行し、ユーザのコンピュータ上で、独立ソフトウェアパッケージとして一部を実行し、ユーザのコンピュータ上で一部を実行し、かつ、遠隔コンピュータ上で一部を実行し、あるいは遠隔コンピュータまたはサーバ上ですべてを実行することができる。後者のシナリオの場合、遠隔コンピュータは、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続することができ、あるいはこの接続は、外部コンピュータに対して実施することも可能である(例えばインターネットサービスプロバイダを使用してインターネットを介して)。
本開示の態様は、以下で、フローチャート図解、および/または本開示で提示されている実施形態による方法、装置(システム)およびコンピュータプログラム製品のブロック図を参照して説明される。フローチャート図解および/またはブロック図の個々のブロック、およびフローチャート図解および/またはブロック図におけるブロックの組合せは、コンピュータプログラム命令によって実現することができることは理解されよう。これらのコンピュータプログラム命令は、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行する命令が、フローチャートおよび/またはブロック図の1つまたは複数のブロックに明記されている機能/作用を実現するための手段を作り出すよう、汎用コンピュータ、専用コンピュータまたは他のプログラマブルデータ処理装置のプロセッサに提供して機械を製造することができる。
これらのコンピュータプログラム命令は、コンピュータ可読媒体に記憶された命令が、フローチャートおよび/またはブロック図の1つまたは複数のブロックに明記されている機能/作用を実現する命令を含む製造の物品をもたらすよう、特定の方法で機能するようにコンピュータ、他のプログラマブルデータ処理装置または他のデバイスを導くことができるコンピュータ可読媒体に同じく記憶することができる。
コンピュータプログラム命令は、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートおよび/またはブロック図の1つまたは複数のブロックに明記されている機能/作用を実現するためのプロセスを提供するよう、コンピュータ、他のプログラマブルデータ処理装置または他のデバイスに同じくロードして、それらのコンピュータ、他のプログラマブル装置または他のデバイス上で一連の操作ステップを実施させ、それによりコンピュータ実現プロセスを生成することができる。
図のフローチャートおよびブロック図は、本発明の様々な例によるシステム、方法およびコンピュータプログラム製品の可能な実施態様のアーキテクチャ、機能性および操作を示している。この点に関し、フローチャートまたはブロック図における個々のブロックは、明記されている論理機能を実現するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメントまたは部分を表すことができる。いくつかの代替実施態様では、ブロックの中で言及されている機能は、図の中で言及されている順序から外れて生じ得る。例えば連続して示されている2つのブロックは、実際、実質的に同時に実行することができ、あるいはこれらのブロックは、時によっては、含まれている機能性に応じて逆の順序で実行することも可能である。ブロック図および/またはフローチャート図解の個々のブロック、およびブロック図および/またはフローチャート図解におけるブロックの組合せは、明記された機能または作用を実施し、あるいは専用ハードウェアとコンピュータ命令の組合せを実施する専用ハードウェアベースシステムによって実現することができることに同じく留意されよう。
本開示は、以下の非限定の例のうちの1つまたは複数によって説明することも可能である。
例1.第1のポートを含むホストと、組み込まれた構成要素とを含むコンピューティングシステム。組み込まれた構成要素は、第2のポートであって、第1のポートおよび第2のポートがホストと組み込まれた構成要素との間の物理接続を形成する、第2のポートと、複数のI/O機能と、埋設されたスイッチと、第2のポートを介してホストからパケットを受け取り、パケットのタイプを識別し、かつ、パケットのタイプに基づいて、複数のI/O機能のうちの行先I/O機能へ直接パケットを経路指定するかまたは埋設されたスイッチを使用して行先I/O機能へ間接的にパケットを経路指定するように構成されたパススルーインタフェースとを含む。
例2.複数のI/O機能が互いに独立して動作し、異なるI/O機能を実施する、例1のコンピューティングシステム。
例3.パケットのタイプが、そのパケットが時間に敏感なデータパケットであるかどうかを示し、そのパケットを行先I/O機能へ直接経路指定することが、埋設されたスイッチをバイパスする、例1のコンピューティングシステム。
例4.パススルーインタフェースが、複数のI/O機能のうちの第1のI/O機能および埋設されたスイッチの両方が、いつでもホストに伝送することができるデータを有していることの指示を受け取り、また、データをホストの第1のポートに伝送するために、第1のI/O機能および埋設されたスイッチのうちのどちらに第2のポートの使用を許可するかを決定するために調停するように構成された調停論理を含む、例1のコンピューティングシステム。
例5.パススルーインタフェースが、パケットのタイプを識別し、また、行先I/O機能に対応するパケット中の行先IDを識別するための経路指定論理を含む、例1のコンピューティングシステム。
例6.ホストが、複数のI/O機能が並行して動作している間、新しいI/O機能を組み込まれた構成要素の中にホット追加するように構成される、例1のコンピューティングシステム。
例7.新しいI/O機能をホット追加することが、その新しいI/O機能を含むように組み込まれた構成要素のプログラマブル論理を構成することを含む、例6のコンピューティングシステム。
例8.新しいI/O機能をホット追加することが、それまで起動が解除されていた新しいI/O機能を起動することを含み、その新しいI/O機能が硬化論理で実現される、例6のコンピューティングシステム。
例9.ホスト上の第2のポートとの物理接続を形成するように構成された第1のポートと、複数のI/O機能と、埋設されたスイッチと、第1のポートを介してホストからパケットを受け取り、パケットのタイプを識別し、かつ、パケットのタイプに基づいて、複数のI/O機能のうちの行先I/O機能へ直接パケットを経路指定するかまたは埋設されたスイッチを使用して行先I/O機能へ間接的にパケットを経路指定するように構成されたパススルーインタフェースとを含む装置。
例10.複数のI/O機能が独立したI/Oデバイスであり、独立したI/Oデバイスの各々が少なくとも部分的にプログラマブル論理で実現される、例9の装置。
例11.独立したI/Oデバイスが同じ集積回路の中に形成される、例10の装置。
例12.複数のI/O機能が独立したI/Oデバイスであり、独立したI/Oデバイスの各々が硬化論理を使用して実現される、例9の装置。
例13.独立したI/Oデバイスが同じ集積回路の中に形成される、例12の装置。
例14.基板をさらに含み、複数のI/O機能の各々が異なる集積回路で実現され、異なる集積回路および埋設されたスイッチが基板の上に取り付けられる、例9の装置。
例15.装置が、複数のI/O機能が並行して動作している間、新しいI/O機能をホット追加するように構成される、例9の装置。
例16.新しいI/O機能をホット追加することが、その新しいI/O機能を含むように装置のプログラマブル論理を構成することを含む、例15の装置。
例17.新しいI/O機能をホット追加することが、それまで起動が解除されていた新しいI/O機能を起動することを含み、その新しいI/O機能が装置の硬化論理で実現される、例15の装置。
例18.組み込まれた構成要素のパススルーインタフェースでホストから第1のパケットを受け取ることであって、組み込まれた構成要素が複数のI/O機能と、パススルーインタフェースに通信結合された埋設されたスイッチとを含む、第1のパケットを受け取ることと、第1のパケットがデータパケットであることを決定することであって、複数のI/O機能のうちの第1のI/O機能がそのデータパケットの行先である、決定することと、埋設されたスイッチをバイパスする直接データ経路を使用して、データパケットをパススルーインタフェースから第1のI/O機能へ直接経路指定することと、パススルーインタフェースでホストから第2のパケットを受け取ることと、第2のパケットが構成パケットであることを決定することであって、第1のI/O機能がその構成パケットの行先である、決定することと、データパケットを埋設されたスイッチを介してパススルーインタフェースから第1のI/O機能へ経路指定することとを含む方法。
例19.データパケットを埋設されたスイッチを介してパススルーインタフェースから第1のI/O機能へ経路指定することが、構成パケットをパススルーインタフェースから埋設されたスイッチへ経路指定することと、埋設されたスイッチで、第1のI/O機能がその構成パケットの行先であることを決定することと、構成パケットを埋設されたスイッチから第1のI/O機能へ転送することとをさらに含み、方法が、第3のパケットをホストからパススルーインタフェースで受け取ることと、第3のパケットが異なる構成パケットであることを決定することと、その異なる構成パケットを埋設されたスイッチへ経路指定することと、埋設されたスイッチで、埋設されたスイッチがその異なる構成パケットの行先であることを決定することとをさらに含む、例18の方法。
例20.パススルーインタフェースで、埋設されたスイッチおよび複数のI/O機能のうちの少なくとも2つがホストにいつでも伝送することができるパケットを有していることを決定することをさらに含み、データをホストに伝送するために、どちらに組み込まれた構成要素の共有ポートの使用を許可するかを決定するべく、サービス品質(QoS)政策に基づいて、埋設されたスイッチと複数のI/O機能のうちの少なくとも2つとの間で調整する、例19の方法。
以上では特定の例が対象にされているが、それらの基本的な範囲を逸脱することなく、他の例およびさらなる例を工夫することも可能であり、それらの範囲は、添付の特許請求の範囲によって決定される。

Claims (15)

  1. コンピューティングシステムであって、
    第1のポートを備えるホストと、
    組み込まれた構成要素であって、
    第2のポートであって、前記第1のポートおよび第2のポートが前記ホストと前記組み込まれた構成要素との間の物理接続を形成する、第2のポートと、
    複数のI/O機能と、
    埋設されたスイッチと、
    前記第2のポートを介して前記ホストからパケットを受け取り、前記パケットのタイプを識別し、かつ、前記パケットの前記タイプに基づいて、前記複数のI/O機能のうちの行先I/O機能へ直接前記パケットを経路指定するかまたは前記埋設されたスイッチを使用して前記行先I/O機能へ間接的に前記パケットを経路指定するように構成されたパススルーインタフェースと
    を備える、組み込まれた構成要素と
    を備えるコンピューティングシステム。
  2. 前記複数のI/O機能が互いに独立して動作し、異なるI/O機能を実施する、請求項1に記載のコンピューティングシステム。
  3. 前記パケットの前記タイプが、前記パケットが時間に敏感なデータパケットであるかどうかを示し、前記パケットを前記行先I/O機能へ直接経路指定することが、前記埋設されたスイッチをバイパスする、請求項1に記載のコンピューティングシステム。
  4. 前記パススルーインタフェースが、前記複数のI/O機能のうちの第1のI/O機能および前記埋設されたスイッチの両方が、いつでも前記ホストに伝送することができるデータを有していることの指示を受け取り、また、データを前記ホストの前記第1のポートに伝送するために、前記第1のI/O機能および前記埋設されたスイッチのうちのどちらに前記第2のポートの使用を許可するかを決定するために調停するように構成された調停論理を備える、請求項1に記載のコンピューティングシステム。
  5. 前記パススルーインタフェースが、前記パケットの前記タイプを識別し、また、前記行先I/O機能に対応する前記パケット中の行先IDを識別するための経路指定論理を備える、請求項1に記載のコンピューティングシステム。
  6. 前記ホストが、前記複数のI/O機能が並行して動作している間、新しいI/O機能を前記組み込まれた構成要素の中にホット追加するように構成される、請求項1に記載のコンピューティングシステム。
  7. 前記新しいI/O機能をホット追加することが、
    前記新しいI/O機能を含むように前記組み込まれた構成要素のプログラマブル論理を構成すること、または
    それまで起動が解除されていた前記新しいI/O機能を起動することであって、前記新しいI/O機能が硬化論理で実現される、前記新しいI/O機能を起動すること
    を含む、請求項6に記載のコンピューティングシステム。
  8. 装置であって、
    ホスト上の第2のポートとの物理接続を形成するように構成された第1のポートと、
    複数のI/O機能と、
    埋設されたスイッチと、
    前記第1のポートを介して前記ホストからパケットを受け取り、前記パケットのタイプを識別し、かつ、前記パケットの前記タイプに基づいて、前記複数のI/O機能のうちの行先I/O機能へ直接前記パケットを経路指定するかまたは前記埋設されたスイッチを使用して前記行先I/O機能へ間接的に前記パケットを経路指定するように構成されたパススルーインタフェースと
    を備える装置。
  9. 前記複数のI/O機能が独立したI/Oデバイスであり、前記独立したI/Oデバイスの各々が少なくとも部分的にプログラマブル論理で実現される、請求項8に記載の装置。
  10. 前記複数のI/O機能が独立したI/Oデバイスであり、前記独立したI/Oデバイスの各々が硬化論理を使用して実現される、請求項8に記載の装置。
  11. 前記独立したI/Oデバイスが同じ集積回路の中に形成される、請求項9または10に記載の装置。
  12. 基板
    をさらに含み、前記複数のI/O機能の各々が異なる集積回路で実現され、前記異なる集積回路および前記埋設されたスイッチが前記基板の上に取り付けられる、請求項8に記載の装置。
  13. 前記装置が、前記複数のI/O機能が並行して動作している間、新しいI/O機能をホット追加するように構成される、請求項8に記載の装置。
  14. 前記新しいI/O機能をホット追加することが、
    前記新しいI/O機能を含むように前記装置のプログラマブル論理を構成すること、または
    それまで起動が解除されていた前記新しいI/O機能を起動することであって、前記新しいI/O機能が前記装置の硬化論理で実現される、前記新しいI/O機能を起動すること
    を含む、請求項13に記載の装置。
  15. 方法であって、
    組み込まれた構成要素のパススルーインタフェースでホストから第1のパケットを受け取ることであって、前記組み込まれた構成要素が複数のI/O機能と、前記パススルーインタフェースに通信結合された埋設されたスイッチとを備える、第1のパケットを受け取ることと、
    前記第1のパケットがデータパケットであることを決定することであって、前記複数のI/O機能のうちの第1のI/O機能が前記データパケットの行先である、前記第1のパケットがデータパケットであることを決定することと、
    前記埋設されたスイッチをバイパスする直接データ経路を使用して、前記データパケットを前記パススルーインタフェースから前記第1のI/O機能へ直接経路指定することと、
    前記パススルーインタフェースで前記ホストから第2のパケットを受け取ることと、
    前記第2のパケットが構成パケットであることを決定することであって、前記第1のI/O機能が前記構成パケットの行先である、前記第2のパケットが構成パケットであることを決定することと、
    前記データパケットを前記埋設されたスイッチを介して前記パススルーインタフェースから前記第1のI/O機能へ経路指定することと
    を含む方法。
JP2022574299A 2020-06-05 2021-02-18 直接取り付けられたディスパッチを使用した、分離されたスイッチ制御経路 Pending JP2023529831A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/894,446 2020-06-05
US16/894,446 US11386031B2 (en) 2020-06-05 2020-06-05 Disaggregated switch control path with direct-attached dispatch
PCT/US2021/018540 WO2021247103A1 (en) 2020-06-05 2021-02-18 Disaggregated switch control path with direct-attached dispatch

Publications (2)

Publication Number Publication Date
JP2023529831A true JP2023529831A (ja) 2023-07-12
JPWO2021247103A5 JPWO2021247103A5 (ja) 2024-02-28

Family

ID=74871829

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022574299A Pending JP2023529831A (ja) 2020-06-05 2021-02-18 直接取り付けられたディスパッチを使用した、分離されたスイッチ制御経路

Country Status (6)

Country Link
US (1) US11386031B2 (ja)
EP (1) EP4104060A1 (ja)
JP (1) JP2023529831A (ja)
KR (1) KR20230019828A (ja)
CN (1) CN115836282A (ja)
WO (1) WO2021247103A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11947472B2 (en) 2021-07-18 2024-04-02 Avago Technologies International Sales Pte. Limited Composable infrastructure enabled by heterogeneous architecture, delivered by CXL based cached switch SoC

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6608813B1 (en) 1998-11-04 2003-08-19 Agere Systems Inc Method and apparatus for achieving fault tolerance in packet switching systems with inverse multiplexing
US6914907B1 (en) 1999-08-05 2005-07-05 Alcatel Canada Inc. Method and apparatus for providing multi-cast transmissions using a distributed router
US7027397B1 (en) * 2001-02-15 2006-04-11 Cisco Technology, Inc. Method and apparatus for accumulating and distributing traffic and flow control information in a packet switching system
AU2002363142A1 (en) * 2001-10-31 2003-05-12 Doug Burger A scalable processing architecture
US7251704B2 (en) 2002-08-23 2007-07-31 Intel Corporation Store and forward switch device, system and method
US7827343B2 (en) 2007-09-20 2010-11-02 International Business Machines Corporation Method and apparatus for providing accelerator support in a bus protocol
US8223650B2 (en) * 2008-04-02 2012-07-17 Intel Corporation Express virtual channels in a packet switched on-chip interconnection network
JP4734374B2 (ja) 2008-06-04 2011-07-27 アラクサラネットワークス株式会社 ネットワーク中継装置、および、ネットワーク中継装置方法
US8248951B2 (en) * 2009-09-11 2012-08-21 At&T Intellectual Property I, Lp Methods and apparatus to manage bypass paths in an internet protocol (IP) network
JP5561620B2 (ja) 2011-05-27 2014-07-30 日立金属株式会社 ネットワークシステム及びネットワークシステムの運用方法
JP5776618B2 (ja) 2012-04-16 2015-09-09 日立金属株式会社 ネットワークスイッチ
JP5935666B2 (ja) 2012-11-22 2016-06-15 日立金属株式会社 通信システムおよびネットワーク中継装置
US20140372660A1 (en) * 2013-06-14 2014-12-18 National Instruments Corporation Packet Routing Based on Packet Type in Peripheral Component Interconnect Express Bus Systems
CN104734993B (zh) 2013-12-24 2018-05-18 杭州华为数字技术有限公司 数据分流方法及分流器
JP6278800B2 (ja) 2014-04-03 2018-02-14 APRESIA Systems株式会社 中継システムおよびスイッチ装置
JP6189783B2 (ja) 2014-04-08 2017-08-30 APRESIA Systems株式会社 中継システムおよびスイッチ装置
US20170075838A1 (en) * 2015-09-14 2017-03-16 Qualcomm Incorporated Quality of service in interconnects with multi-stage arbitration
US10587534B2 (en) * 2017-04-04 2020-03-10 Gray Research LLC Composing cores and FPGAS at massive scale with directional, two dimensional routers and interconnection networks
US10409743B1 (en) 2018-06-29 2019-09-10 Xilinx, Inc. Transparent port aggregation in multi-chip transport protocols

Also Published As

Publication number Publication date
US20210382838A1 (en) 2021-12-09
WO2021247103A1 (en) 2021-12-09
US11386031B2 (en) 2022-07-12
KR20230019828A (ko) 2023-02-09
CN115836282A (zh) 2023-03-21
EP4104060A1 (en) 2022-12-21

Similar Documents

Publication Publication Date Title
US11102117B2 (en) In NIC flow switching
US10095645B2 (en) Presenting multiple endpoints from an enhanced PCI express endpoint device
KR100666515B1 (ko) 저장 및 포워드 스위치 장치, 시스템 및 방법
US9838300B2 (en) Temperature sensitive routing of data in a computer system
US8176204B2 (en) System and method for multi-host sharing of a single-host device
US8225005B2 (en) Use of peripheral component interconnect input/output virtualization devices to create high-speed, low-latency interconnect
US9154451B2 (en) Systems and methods for sharing devices in a virtualization environment
JP5490336B2 (ja) Pciエクスプレス・マルチプル・ルートi/o仮想化環境における低待ち時間の優先順位付け
US20070050520A1 (en) Systems and methods for multi-host extension of a hierarchical interconnect network
US10983920B2 (en) Customizable multi queue DMA interface
US20220263913A1 (en) Data center cluster architecture
KR20210033996A (ko) 전용 저 레이턴시 링크를 사용한 다수의 하드웨어 가속기에 대한 통합된 어드레스 공간
JP5469081B2 (ja) 制御パス入出力仮想化方法
US11321179B1 (en) Powering-down or rebooting a device in a system fabric
CN115437977A (zh) 跨总线存储器映射
US11467998B1 (en) Low-latency packet processing for network device
TW200407712A (en) Configurable multi-port multi-protocol network interface to support packet processing
JP2023529831A (ja) 直接取り付けられたディスパッチを使用した、分離されたスイッチ制御経路
US11809349B1 (en) Direct injection of a virtual interrupt
KR20050080704A (ko) 프로세서간 데이터 전송 장치 및 방법
US20240126622A1 (en) I/o acceleration in a multi-node architecture
US11537539B2 (en) Acceleration of data between a network and local I/O in a NUMA system
US11899969B1 (en) Re-order buffer for in-order execution of dependent write transactions

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240219

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240219