(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-27
(45)【発行日】2023-10-05
(54)【発明の名称】ネットワーク・オン・チップにおけるエンド・ツー・エンドのサービス品質
(51)【国際特許分類】
H04L 49/112 20220101AFI20230928BHJP
【FI】
H04L49/112
(21)【出願番号】P 2020541698
(86)(22)【出願日】2019-01-31
(86)【国際出願番号】 US2019016158
(87)【国際公開番号】W WO2019152716
(87)【国際公開日】2019-08-08
【審査請求日】2022-01-12
(32)【優先日】2018-02-01
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】スウォーブリック, イアン エイ.
(72)【発明者】
【氏名】アーヴェル, イーガル
(72)【発明者】
【氏名】ミッタル, ミリンド
(72)【発明者】
【氏名】アーマッド, サギール
【審査官】羽岡 さやか
(56)【参考文献】
【文献】米国特許出願公開第2017/0264533(US,A1)
【文献】米国特許出願公開第2017/0063625(US,A1)
【文献】国際公開第2010/110289(WO,A1)
【文献】特表2016-525290(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 45/00-49/9057
(57)【特許請求の範囲】
【請求項1】
プログラマブルデバイスにおけるネットワーク・オン・チップ(NoC)の構成を生成する方法であって、
複数のトラフィックフローに対するトラフィックフロー要件を受信することと、
前記トラフィックフロー要件に基づいて、各トラフィックフローに対して前記NoCのネットワークを通して経路を割り当てることであって、前記NoCの前記ネットワークが、相互接続されたプログラマブルスイッチを備え、前記経路がそれぞれ、マスタ回路とスレーブ回路との間にあり、入力回路が、それぞれのマスタ回路と前記NoCの前記ネットワークとの間に結合され、出力回路が、それぞれのスレーブ回路と前記NoCの前記ネットワークとの間に結合される、経路を割り当てることと、
割り当てられた前記経路に沿った前記トラフィックフローの調停設定を決定すること
であって、前記プログラマブルスイッチのそれぞれが、調停器を含み、前記調停設定を決定するステップが、前記プログラマブルスイッチのそれぞれにおける前記調停器に入力される1つまたは複数の仮想チャネルに対する重みを割り当てることを含む、割り当てられた前記経路に沿った前記トラフィックフローの調停設定を決定することと、
前記経路および前記調停設定に基づいて、前記NoCのプログラミングデータを生成することと、
前記プログラミングデータを前記プログラマブルデバイスにロードして、前記NoCの前記ネットワークの前記プログラマブルスイッチのうち少なくともいくつかをプログラムすることと
を含み、プログラムされると、前記プログラマブルスイッチのプログラムされた各スイッチが、前記プログラマブルスイッチのうち一対のプログラマブルスイッチ間で、またはそれぞれの入力回
路と前記プログラマブルスイッチのうち別のプログラマブルスイッチとの間で、
またはプログラマブルスイッチとそれぞれの出力回路との間で、通信をルーティングするように動作可能である、方法。
【請求項2】
前記トラフィックフロー要件を受信するステップが、
前記複数のトラフィックフローのそれぞれに関する、それぞれのマスタ回路のソース情報およびそれぞれのスレーブ回路の宛先情報を受信すること
を含む、請求項1に記載の方法。
【請求項3】
前記トラフィックフロー要件を受信するステップが、
前記複数のトラフィックフローのそれぞれに関するクラス情報を受信することを更に含み、前記クラス情報は、前記複数のトラフィックフローのそれぞれに対する複数のトラフィッククラスのうちの1つの割当てを含む、請求項2に記載の方法。
【請求項4】
前記経路を割り当てるステップが、
割り当てられたソースおよび宛先に基づいて、前記複数のトラフィックフローのそれぞれに対して物理的チャネルを選択することと、
割り当てられたトラフィッククラスに基づいて、前記複数のトラフィックフローのそれぞれに対して仮想チャネルを選択することと
を含む、請求項3に記載の方法。
【請求項5】
プログラマブルデバイスにおけるネットワーク・オン・チップ(NoC)の構成を生成する方法を実施するように、プロセッサによって実行可能な命令が格納された、非一時的コンピュータ可読媒体であって、
複数のトラフィックフローに対するトラフィックフロー要件を受信することと、
前記トラフィックフロー要件に基づいて、各トラフィックフローに対して前記NoCのネットワークを通して経路を割り当てることであって、前記NoCの前記ネットワークが、相互接続されたプログラマブルスイッチを備え、前記経路がそれぞれ、マスタ回路とスレーブ回路との間にあり、入力回路が、それぞれのマスタ回路と前記NoCの前記ネットワークとの間に結合され、出力回路が、それぞれのスレーブ回路と前記NoCの前記ネットワークとの間に結合される、経路を割り当てることと、
割り当てられた前記経路に沿った前記トラフィックフローの調停設定を決定すること
であって、前記プログラマブルスイッチのそれぞれが、調停器を含み、前記調停設定を決定するステップが、前記プログラマブルスイッチのそれぞれにおける前記調停器に入力される1つまたは複数の仮想チャネルに対する重みを割り当てることを含む、割り当てられた前記経路に沿った前記トラフィックフローの調停設定を決定することと、
前記経路および前記調停設定に基づいて、前記NoCのプログラミングデータを生成することと、
前記プログラミングデータを前記プログラマブルデバイスにロードして、前記NoCの前記ネットワークの前記プログラマブルスイッチのうち少なくともいくつかをプログラムすることと
を含み、プログラムされると、前記プログラマブルスイッチのプログラムされた各スイッチが、前記プログラマブルスイッチのうち一対のプログラマブルスイッチ間で、またはそれぞれの入力回
路と前記プログラマブルスイッチのうち別のプログラマブルスイッチとの間で、
またはプログラマブルスイッチとそれぞれの出力回路との間で、通信をルーティングするように動作可能である、非一時的コンピュータ可読媒体。
【請求項6】
前記トラフィックフロー要件を受信するステップが、
前記複数のトラフィックフローのそれぞれに関する、それぞれのマスタ回路のソース情報およびそれぞれのスレーブ回路の宛先情報を受信すること
を含む、請求項
5に記載の非一時的コンピュータ可読媒体。
【請求項7】
前記トラフィックフロー要件を受信するステップが、
前記複数のトラフィックフローのそれぞれに関するクラス情報を受信すること
を更に含み、前記クラス情報が、前記複数のトラフィックフローのそれぞれに対する複数のトラフィッククラスのうちの1つの割当てを含む、請求項
6に記載の非一時的コンピュータ可読媒体。
【請求項8】
前記経路を割り当てるステップが、
割り当てられたソースおよび宛先に基づいて、前記複数のトラフィックフローのそれぞれに対して物理的チャネルを選択することと、
割り当てられたトラフィッククラスに基づいて、前記複数のトラフィックフローのそれぞれに対して仮想チャネルを選択することと
を含む、請求項
7に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施例は、一般に、電子回路に関し、特に、ネットワーク・オン・チップにおけるエンド・ツー・エンドのサービス品質に関する。
【背景技術】
【0002】
バス構造は、一部のシステム・オン・チップ(SoC)集積回路(SoC)には適していないことが見出されている。回路の集積度が増大すると、トランザクションがブロックされる場合があり、容量の増加がシグナリングの問題をもたらす場合がある。バス構造の代わりに、SoCのコンポーネント間でのデータ通信をサポートするのに、ネットワーク・オン・チップ(NoC)を使用することができる。
【0003】
NoCは、一般に、パケットをチップ上のソース回路(「ソース」)からチップ上の宛先回路(「宛先」)へとルーティングするスイッチの集合体を含む。チップにおけるスイッチのレイアウトは、所望のソースから所望の宛先へのパケット送信をサポートする。パケットは、ソースから宛先への送信時に複数のスイッチを横断することがある。各スイッチは、ネットワーク内の1つまたは複数の他のスイッチに接続することができ、入力パケットを、接続されたスイッチのうちの1つまたは宛先へとルーティングする。
【発明の概要】
【0004】
ネットワーク・オン・チップにおけるエンド・ツー・エンドのサービス品質の技術。一例では、プログラマブルデバイスにおけるネットワーク・オン・チップ(NoC)の構成を生成する方法は、複数のトラフィックフローに対するトラフィックフロー要件を受信することと、トラフィックフロー要件に基づいて、各トラフィックフローに対してNoCを通して経路を割り当てることと、割り当てられた経路に沿ったトラフィックフローの調停設定(arbitration settings)を決定することと、NoCのプログラミングデータを生成することと、プログラミングデータをプログラマブルデバイスにロードしてNoCを構成することと、を含む。
【0005】
別の例では、プログラマブルデバイスにおけるネットワーク・オン・チップ(NoC)の構成を生成する方法を実施するように、プロセッサによって実行可能な命令が格納された非一時的コンピュータ可読媒体は、複数のトラフィックフローに対するトラフィックフロー要件を受信することと、トラフィックフロー要件に基づいて、各トラフィックフローに対してNoCを通して経路を割り当てることと、割り当てられた経路に沿ったトラフィックフローの調停設定を決定することと、NoCのプログラミングデータを生成することと、プログラミングデータをプログラマブルデバイスにロードしてNoCを構成することと、を含む。
【0006】
別の例では、集積回路は、処理システムと、プログラマブル論理領域と、処理システムとプログラマブル論理領域とを結合するネットワーク・オン・チップ(NoC)であって、NoCが、1つまたは複数の物理的チャネルを通してスレーブ回路に結合されたマスタ回路を含み、第1の物理的チャネルが、複数の仮想チャネルを有する、ネットワーク・オン・チップ(NoC)と、を含む。
【0007】
これらおよび他の態様は、以下の詳細な説明を参照して理解することができる。
【0008】
上記に列挙した特徴を詳細に理解することができるような形式で、上記で簡潔に概要を述べた、更に詳細な説明が、実装例を参照することによって行われ得、それらのうちのいくつかは、添付の図面に例示されている。しかしながら、添付の図面は、典型的な実装例のみを例示しており、したがって、その範囲を限定するものと見なされるべきではないことが留意されるべきである。
【図面の簡単な説明】
【0009】
【
図1】一実施例によるシステム・オン・チップ(SoC)を示すブロック図である。
【
図2】一実施例によるネットワーク・オン・チップ(NoC)を示すブロック図である。
【
図3】一実施例によるNoCを通したエンドポイント回路間の接続を示すブロック図である。
【
図4】一実施例によるコンピュータシステムを示すブロック図である。
【
図5】一実施例によるNoCのコンフィギュレーションデータを生成する方法を示すフローチャートである。
【
図6】一実施例による通信システムを示すブロック図である。
【
図7】一実施例によるNoCのスイッチにおける調停を示すブロック図である。
【
図8】一実施例による仮想チャネルに対する重みの割当てを示すブロック図である。
【
図9】本明細書に記載する技術を用いることができるプログラマブル集積回路(IC)を示すブロック図である。
【
図10】本明細書に記載する技術を用いることができるフィールドプログラマブルゲートアレイ(FPGA)アーキテクチャの概略図である。
【発明を実施するための形態】
【0010】
理解を容易にするため、可能な場合は、図面に共通している同一の要素を指定するのに同一の参照番号が使用されている。1つの実施例の要素が、他の実施例に有益に組み込まれ得ることが想定される。
【0011】
以下、様々な特徴について図面を参照して記載する。図面は縮尺通りに描かれていることも描かれていないこともあり、類似の構造または機能の要素は、図面全体を通して同様の参照番号で表されることに留意すべきである。図面は単に特徴の説明を容易にするためのものであることに留意すべきである。図面は、請求される発明の包括的な説明として、または請求される発明の範囲に対する限定として意図されるものではない。加えて、図示される実施例は、図示される態様または利点の全てを有するとは限らない。特定の実施例と関連して記載される態様または利点は、必ずしもその実施例に限定されるものではなく、例示されていない場合でも、または明示的に記載されていない場合でも、他のいずれかの実施例において実施されることが可能である。
【0012】
図1は、一実施例によるシステム・オン・チップ(SoC)102を示すブロック図である。SoC 102は、処理システム104と、ネットワーク・オン・チップ(NoC)106と、1つまたは複数のプログラマブル領域108とを備える集積回路(IC)である。SoC 102は、不揮発性メモリ(NVM)110および/またはランダムアクセスメモリ(RAM)112などの外部回路に結合することができる。NVM 110はデータを格納することができ、そのデータをSoC 102にロードして、NoC 106およびプログラマブル論理領域108を構成するなど、SoC 102を構成することができる。処理システム104およびプログラマブル論理領域108の例については後述する。一般に、処理システム104は、NoC 106を通してプログラマブル論理領域108に接続される。
【0013】
NoC 106は、内部のデータフローを制御するエンド・ツー・エンドのサービス品質(QoS)機構を含む。実施例では、NoC 106は最初に、データフローを指定されたトラフィッククラスへと分離する。同じトラフィッククラスのデータフローは、仮想送信経路もしくは物理的送信経路を共有するか、または独立した仮想送信経路もしくは物理的送信経路を有することができる。QoSスキームは、トラフィッククラス全体に2つの優先順位レベルを適用する。トラフィッククラス内全体にわたって、NoC 106は、重み付き調停スキームを適用して、トラフィックフローを整形し、ユーザ要件を満たす帯域幅およびレイテンシを提供する。NoC 106の例については更に後述する。
【0014】
図2は、一実施例によるNoC 106を示すブロック図である。NoC 106は、NoCマスタユニット(NMU)202と、NoCスレーブユニット(NSU)204と、ネットワーク214と、NoC周辺相互接続部(NPI)210と、レジスタ(Reg)212とを含む。各NMU 202は、マスタエンドポイントをNoC 106に接続する入力回路(ingress circuit)である。各NSU 204は、NoC 106をスレーブエンドポイントに接続する出力回路(egress circuit)である。NMU 202はネットワーク214を通してNSU 204に接続される。一例では、ネットワーク214は、NoCパケットスイッチ206と、NoCパケットスイッチ206の間のルーティング208とを含む。各NoCパケットスイッチ206はNoCパケットの切替えを実施する。NoCパケットスイッチ206は、互いに、またルーティング208を通してNMU 202およびNSU 204に接続されて、複数の物理的チャネルを実現する。NoCパケットスイッチ206はまた、物理的チャネル1つ当たり複数の仮想チャネルに対応する。NPI 210は、NMU 202、NSU 204、およびNoCパケットスイッチ206をプログラムする回路構成を含む。例えば、NMU 202、NSU 204、およびNoCパケットスイッチ206は、それらの機能性を決定するレジスタ212を含むことができる。NPI 210は、レジスタ212に結合されてそれらをプログラムして機能性を設定する、相互接続部を含む。NoC 106のコンフィギュレーションデータは、NVM 110に格納され、NPI 210に提供されて、NoC 106をプログラムすることができる。
【0015】
図3は、一実施例によるNoC 106を通したエンドポイント回路間の接続を示すブロック図である。この例では、エンドポイント回路302は、NoC 106を通してエンドポイント回路304に接続される。エンドポイント回路302は、NoC 106のNMU 202に結合されるマスタ回路である。エンドポイント回路304は、NoC 106のNSU 204に結合されるスレーブ回路である。各エンドポイント回路302および304は、処理システム104の回路、またはプログラマブル論理領域108の回路とすることができる。プログラマブル論理領域108の各エンドポイント回路は、専用回路(例えば、硬化回路)またはプログラマブル論理で構成された回路とすることができる。
【0016】
ネットワーク214は複数の物理的チャネル306を含む。物理的チャネル306は、NoC 106をプログラムすることによって実現される。各物理的チャネル306は、1つまたは複数のNoCパケットスイッチ206と、関連するルーティング208とを含む。NMU 202は、少なくとも1つの物理的チャネル306を通してNSU 204と接続する。物理的チャネル306はまた、1つまたは複数の仮想チャネル308を有することができる。
【0017】
図4は、一実施例によるコンピュータシステム400を示すブロック図である。コンピュータシステム400は、コンピュータ401と、入出力(IO)デバイス412と、ディスプレイ414とを含む。コンピュータ401は、ハードウェアプラットフォーム418と、オペレーティングシステム(OS)420および電子機器設計自動化(EDA)ソフトウェア410など、ハードウェアプラットフォーム418上で実行するソフトウェアとを含む。ハードウェアプラットフォーム418は、中央処理装置(CPU)402と、システムメモリ408と、記憶デバイス(「記憶装置421」)と、サポート回路404と、IOインターフェース406とを含む。
【0018】
CPU 402は、x86ベースプロセッサ、ARM(登録商標)ベースプロセッサなど、任意のタイプの汎用中央処理装置(CPU)であることができる。CPU 402は、1つまたは複数のコアおよび関連回路構成(例えば、キャッシュメモリ、メモリ管理装置(MMU)、割込みコントローラなど)を含むことができる。CPU 402は、本明細書に記載する1つまたは複数の動作を実施し、システムメモリ408および/または記憶装置421に格納することができる、プログラムコードを実行するように構成される。サポート回路404は、CPU 402と協働して、CPU 402、システムメモリ408、記憶装置421、IOインターフェース406、または他の任意の周辺デバイスの間のデータフローを管理する、様々なデバイスを含むことができる。例えば、サポート回路404は、チップセット(例えば、ノースブリッジ、サウスブリッジ、プラットフォームホストコントローラなど)、電圧調整器、ファームウェア(例えば、BIOS)などを含むことができる。いくつかの例では、CPU 402は、システム・イン・パッケージ(SiP)、システム・オン・チップ(SoC)などとすることができ、サポート回路404(例えば、ノースブリッジ、サウスブリッジなど)の機能性の全部または大部分を吸収する。
【0019】
システムメモリ408は、実行可能命令およびデータなどの情報を格納し検索することを可能にするデバイスである。システムメモリ408は、例えば、ダブルデータレート(DDR)ダイナミックRAM(DRAM)など、1つまたは複数のランダムアクセスメモリ(RAM)モジュールを含むことができる。記憶装置421は、ローカル記憶デバイス(例えば、1つもしくは複数のハードディスク、フラッシュメモリモジュール、固体状態ディスク、および光学ディスク)、ならびに/またはコンピュータ401が1つもしくは複数のネットワークデータ記憶システムと通信できるようにする、記憶装置インターフェースを含む。IOインターフェース406は、IOデバイス412およびディスプレイ414に結合することができる。
【0020】
OS 420は、Linux(登録商標)、Microsoft Windows(登録商標)、Mac OS(登録商標)など、当該分野で知られている任意のコモディティオペレーティングシステムであることができる。ユーザは、EDAソフトウェア410と相互作用して、SoC 102のコンフィギュレーションデータを生成することができる。特に、EDAソフトウェア410は、エンドポイント回路を接続する様々な物理的および仮想チャネルを実現するため、NoC 106をプログラムするためのコンフィギュレーションデータを生成するように構成される。
【0021】
図5は、一実施例によるNoC 106のコンフィギュレーションデータを生成する方法500を示すフローチャートである。方法500は、EDAソフトウェア410によって実施することができる。方法500は、ステップ502で始まり、EDAソフトウェア410はトラフィックフロー要件をユーザから受信する。一例では、ステップ504で、EDAソフトウェア410は、ユーザによって指定された各トラフィックフローに関するソースおよび宛先情報(例えば、各トラフィックフローのソースエンドポイントおよび宛先エンドポイント)を受信する。トラフィックフローは、エンドポイント間でデータ(「トラフィック」)を伝達する接続である。ステップ506で、EDAソフトウェア410は、ユーザによって指定された各トラフィックフローに関するクラス情報を受信する。例示のトラフィッククラスは、低レイテンシトラフィック、等時性トラフィック、ベストエフォート(BE)トラフィック(例えば、帯域幅保証トラフィック)などを含む。
【0022】
ステップ508で、EDAソフトウェア410は、トラフィックフロー要件に基づいて、各トラフィックフローに対してNoC 106を通して経路を割り当てる。一例では、ステップ510で、EDAソフトウェア410は、各トラフィックフローのソースおよび宛先に基づいて、それらの物理的チャネルを選択する。NoC 106は、それぞれのソースと宛先との間で利用可能な複数の物理的経路を有することができる。ステップ512で、EDAソフトウェア410は、1つまたは複数の仮想チャネルのトラフィッククラスに基づいて、それらの仮想チャネルに対する仮想チャネルを選択する。つまり、所与の物理的チャネルは、複数の仮想チャネルを有することができ、トラフィッククラスによって分離された複数のトラフィックフローを伝達することができる。物理的チャネル内の各仮想チャネルは、1つのトラフィッククラスのみを保持するが、同じトラフィッククラス内に複数のトラフィックフローがある。例えば、所与の物理的チャネルは、低レイテンシトラフィッククラスのトラフィックフローと、等時性トラフィッククラスの別のトラフィックフローとを、一対の仮想チャネルで伝達することができる。ステップ510および512は、方法500では同時に行うことができることに留意されたい。
【0023】
ステップ514で、EDAソフトウェア410は、ユーザによって指定されたトラフィックフローの調停設定を決定する。一例では、EDAソフトウェア410は、高い優先順位のトラフィックを有する仮想チャネルを、スイッチ206を通る優先順位がより高くなるように設定し、低い優先順位のトラフィックを有する仮想チャネルを、スイッチ206を通る優先順位がより低くなるように設定する。例えば、等時性または低レイテンシトラフィックは、他のトラフィックタイプよりも高い優先順位を有することができる。一例では、調停は不足スキーム(deficit scheme)を使用する。各調停器出力(例えば、スイッチ206の出力)では、全ての入力ポートから1つの出力ポートへの全ての仮想チャネルに対する調停が組み合わされる。各入力ポートからの各仮想チャネルは、指定数の調停トークンを提供する独立した重み値を有する。トークンは、調停を整形し、トラフィックフロー全体の帯域幅割当てを制御するのに使用される。このスキームは、トークンがリフレッシュ/リロードされる前に、トークンを有する全ての要求側(例えば、エンドポイント)にサービスすることを担保する。これにより、新しいグループを開始できるより前に、1つのグループにおける全ての要求にサービスしなければならないので、調停が枯渇を引き起こさないことが担保される。ステップ514で決定された調停設定は、ブート時間にプログラムすることができ、または動作中に動的に調節することができる。
【0024】
ステップ516で、EDAソフトウェア410は、NoC 106のプログラミングデータを生成する。プログラミングデータは、NoC 106を構成して、物理的チャネル、仮想チャネル、および任意で調停設定を実現するように設定される。いくつかの例では、調停設定は、NoC 106の構成後に動的にプログラムすることができる。ステップ518で、EDAソフトウェア410は、プログラミングデータをSoC 102にロードする(例えば、プログラミングデータをNVM 110に格納するか、またはプログラミングデータをSoC 102に直接提供することによる)。
【0025】
方法500は、NoC 106を使用して、完全にプログラム可能な、エンド・ツー・エンドQoSを提供する。一部のSoCは、調停スキームにおける柔軟性が限定された比較的固定の相互接続部を有する。他のSoCは、選択可能な経路および限定されたQoS優先順位決定を有するが、別個のトラフィッククラス、およびトラフィックフロー全体にわたる正確な帯域幅の振分けは有さない。方法500は、独立したフロー制御、構成可能な物理的チャネルルーティング、グループにおける不足調停、およびトラフィッククラスの割当てのため、仮想チャネルの組み合わせを提供する。
【0026】
図6は、一実施例による通信システム600を示すブロック図である。通信システム600は、NoC 106を通してスレーブデバイス604
0および604
1(スレーブデバイス604)に結合された、マスタデバイス602
0…602
4(マスタデバイス602)を含む。マスタデバイス602およびスレーブデバイス604は、NMU 202およびNSU 204それぞれに結合されたSoC 102にエンドポイント回路を備える。NoC 106は、NoCパケットスイッチ(NPS)206(例えば、NPS 206
0,0…206
0,3およびNPS 206
1,0…206
1,3)を含む。
【0027】
マスタデバイス6020およびマスタデバイス6021は、NPS 2060,0に結合される。マスタデバイス6020は、低レイテンシ(LL)仮想チャネルを通してNPS 2060,0に結合される。マスタデバイス6021は、ベストエフォート(BE)仮想チャネルを通してNPS 2060,0に結合される。マスタデバイス6023は、BE仮想チャネルを通してNPS 2060,1に結合される。マスタデバイス6023は、等時性(ISOC)仮想チャネルを通してNPS 2060,3に結合される。マスタデバイス6024は、ISOC仮想チャネルを通してNPS 2060,3に結合される。NPS 2060,1はNPS 2060,2に結合される。NPS 2060,2はNPS 2060,3に結合される。
【0028】
NPS 2060,0はNPS 2061,0に結合される。NPS 2060,1はNPS 2061,1に結合される。NPS 2061,2およびNPS 2061,3は接続されず、通信システム600のこの構成では使用されない。NPS 2061,0はスレーブ6040に結合される。NPS 2061,1はスレーブ6021に結合される。NPS 2061,0はNPS 2061,1に結合される。
【0029】
動作の際、マスタデバイス6020は、低レイテンシであるトラフィックをスレーブデバイス6040に伝送する。マスタ6021および6022は両方とも、ベストエフォートトラフィックをスレーブデバイス6040に伝送する。マスタ6023および6024は、等時性トラフィックをスレーブデバイス6041に伝送する。各トラフィックフローは別個の物理的チャネルで各スイッチに入る。NPS 2060,0とNPS 2061,0との間、NPS 2060.1とNPS 2061,1との間、およびNPS 2061,0とスレーブデバイス6040との間には、2つの仮想チャネル(一対の線によって指定されている)がある。他の経路は、物理的チャネルの単一の仮想チャネルのみを使用する(例えば、NPS 2060.1とNPS 2060,2との間、およびNPS 2061,1とスレーブデバイス6021との間)。各NPS 206は、更に後述するように、入力ポートから出力ポートへのトラフィックの混合を制御する、出力ポート調停を有する。
【0030】
図7は、一実施例によるNoC 106のスイッチ206における調停を示すブロック図である。各スイッチ206は調停器702を含む。この例では、調停器702は、入力ポート0、入力ポート1、および入力ポート2と指定される3つの入力ポートを含む。しかしながら、スイッチ206および調停器702は任意の数の入力ポートを含むことができる。調停器702は「out」と指定される出力ポートを含む。
【0031】
図7に示されるように、この例では、入力ポート2は入力トラフィックストリームを有さない。入力ポート0は、2つのトラフィックストリーム(例えば、1つの低レイテンシトラフィックストリームおよび1つの等時性トラフィックストリーム)を受信する2つの仮想チャネルを有する。入力ポート1は、1つのトラフィックストリーム(例えば、ベストエフォートトラフィック)を保持する単一の仮想チャネルを有する。調停器702の各入力ポートは割り当てられた重みを有する。重みは、各トラフィックフローに割り当てられた調停帯域幅の相対的共有を制御する。この例では、ポート0はそれぞれの仮想チャネルに対して4および8の調停重みを有し、ポート1は単一の仮想チャネルに対して4の調停重みを有する。つまり、出力ポートで利用可能な帯域幅のうち、ポート0の第1のトラフィックストリームは帯域幅の25%を確保し、ポート0の第2のトラフィックストリームは帯域幅の50%を確保し、ポート1のトラフィックストリームは帯域幅の25%を確保する。例えば、ポート0の低レイテンシトラフィックには、ベストエフォートトラフィック(優先順位は低い)よりも大きい帯域幅(優先順位が高いことによる)を割り当てることができる。つまり、全ての要求側が伝送を行っている場合、調停器702は、調停トークンを有する限り、低レイテンシトラフィックにサービスする。ベストエフォートトラフィックは、トークンを有する場合にサービスを受け、同じくトークンを有する他の高優先順位の要求側は存在しない。要求側が存在し、要求側に調停トークンが残っていない場合、指定された重みにしたがって調停トークンがリロードされる。調停器702はまた、全ての要求側のトークンがなくなった場合に調停トークンをリロードする。
【0032】
上述の説明は1つの調停地点に関するものである。所与の物理的経路における各調停地点のプログラミングによって、エンド・ツー・エンドで十分な帯域幅があることが担保される。いくつかの仮想チャネルに対する高優先順位割当ての使用によって、トランザクションがより低レイテンシ/より低ジッタのサービスを受信することが担保される。調停重みおよび不足調停の使用によって、全ての調停重みの合計に対応する期間内で、全ての要求側がその調停重みにしたがってある量の帯域幅を受信することが担保される。一部の要求側がトラフィックを伝送していない場合、かかるグループのサービス時間はより短くてもよい。
【0033】
図8は、一実施例による仮想チャネルに対する重みの割当てを示すブロック図である。この例は、2つの調停器702
1および702
2を含む。調停器702
1は、物理的チャネル802、804、および806の間で調停を行う。調停器702
2は、物理的チャネル806、808、および810の間で調停を行う。各物理的チャネル802、804、806、および808は、vc0およびvc1と指定される2つの仮想チャネルを含む。この実施例では、src0…src5と指定される6つの異なるソース(例えば、マスタデバイス)がある。ソースsrc0は物理的チャネル808のvc0にある。ソースsrc1は物理的チャネル808のvc1にある。ソースsrc2は物理的チャネル802のvc0にある。ソースsrc3は物理的チャネル802のvc1にある。ソースsrc4は物理的チャネル804のvc0にある。ソースsrc5は物理的チャネル804のvc1にある。調停器702
2は、物理的チャネル808のvc0に重み10を、物理的チャネル808のvc1に重み20を提供するようにプログラムされる。調停器702
2は、物理的チャネル806のvc0に重み30を、物理的チャネル806のvc1に重み40を提供するようにプログラムされる。調停器702
1は、物理的チャネル802のvc0に重み10を、物理的チャネル802のvc1に重み30を提供するようにプログラムされる。調停器702
1は、物理的チャネル804のvc0に重み20を、物理的チャネル804のvc1に重み10を提供するようにプログラムされる。この重み付けスキームにより、調停器702
2の出力側において、src0は重み10を、src1は重み20を、src2は重み10を、src3は重み30を、src4は重み20を、src5は重み10を有するようになる。各ソースはその重みに比例して帯域幅を得る。当業者であれば、同様の手法で、任意の数のソースに対する任意の数の調停器にわたって、他の様々な重み付けスキームを用いることができることを認識するであろう。
【0034】
図9は、
図1に示されるSoC 102の実装として使用することができる、一実施例によるプログラマブルIC 1を示すブロック図である。プログラマブルIC 1は、プログラマブル論理3と、コンフィギュレーション論理25と、コンフィギュレーションメモリ26とを含む。プログラマブルIC 1は、不揮発性メモリ27、DRAM 28、および他の回路29など、外部回路に結合することができる。プログラマブル論理3は、論理セル30と、サポート回路31と、プログラマブル相互接続部32とを含む。論理セル30は、複数の入力の一般論理関数を実現するように構成することができる回路を含む。サポート回路31は、送受信機、入出力ブロック、デジタル信号プロセッサ、メモリなどの専用回路を含む。論理セルおよびサポート回路31は、プログラマブル相互接続部32を使用して相互接続することができる。論理セル30をプログラムするための情報、サポート回路31のパラメータを設定するための情報、およびプログラマブル相互接続部32をプログラムするための情報は、コンフィギュレーション論理25によってコンフィギュレーションメモリ26に格納される。コンフィギュレーション論理25は、コンフィギュレーションデータを、不揮発性メモリ27または他の任意のソース(例えば、DRAM 28もしくは他の回路29)から取得することができる。いくつかの例では、プログラマブルIC 1は処理システム2を含む。処理システム2は、マイクロプロセッサ、メモリ、サポート回路、入出力回路などを含むことができる。
【0035】
図10は、プログラマブルIC 1のフィールドプログラマブルゲートアレイ(FPGA)実装例を含み、送受信機37と、構成可能論理ブロック(「CLB」)33と、ランダムアクセスメモリブロック(「BRAM」)34と、入出力ブロック(「IOB」)36と、構成および計時論理(「CONFIG/CLOCKS」)42と、デジタル信号処理ブロック(「DSP」)35と、専用入出力ブロック(「I/O」)41(例えば、構成ポートおよびクロックポート)と、デジタルクロックマネージャ、アナログ・デジタル変換器、システムモニタリング論理など、他のプログラマブル論理39とを含む、多数の異なるプログラマブルタイルを含む。FPGAはまた、PCIeインターフェース40、アナログ・デジタル変換器(ADC)38などを含むことができる。
【0036】
一部のFPGAでは、各プログラマブルタイルは、
図10の上部に含まれる例によって示されるように、同じタイル内のプログラマブル論理素子の入力および出力端子48への接続を有する、少なくとも1つのプログラマブル相互接続素子(「INT」)43を含むことができる。各プログラマブル相互接続素子43はまた、同じタイルまたは他のタイル内の隣接したプログラマブル相互接続素子の相互接続セグメント49への接続を含むことができる。各プログラマブル相互接続素子43はまた、論理ブロック間の一般的なルーティングリソース(図示なし)の相互接続セグメント50への接続を含むことができる。一般的なルーティングリソースとしては、相互接続セグメント(例えば、相互接続セグメント50)のトラックと、相互接続セグメントを接続するスイッチブロック(図示なし)とを含む、論理ブロック間のルーティングチャネル(図示なし)を挙げることができる。一般的なルーティングリソースの相互接続セグメント(例えば、相互接続セグメント50)は、1つまたは複数の論理ブロックにまたがることができる。プログラマブル相互接続素子43は、一般的なルーティングリソースと併せて、図示されるFPGAのプログラマブル相互接続構造(「プログラマブル相互接続」)を実現する。
【0037】
1つの実装例では、CLB 33は、ユーザ論理を実現するようにプログラムすることができる構成可能論理素子(「CLE」)44と、それに加えて単一のプログラマブル相互接続素子(「INT」)43とを含むことができる。BRAM 34は、1つまたは複数のプログラマブル相互接続素子に加えて、BRAM論理素子(「BRL」)45を含むことができる。一般的に、タイルに含まれる相互接続素子の数はタイルの高さに応じて決まる。図示される例では、BRAMタイルは5つのCLBと同じ高さを有するが、他の数(例えば、4つ)を使用することもできる。DSPタイル35は、適切な数のプログラマブル相互接続素子に加えて、DSP論理素子(「DSPL」)46を含むことができる。IOB 36は、例えば、プログラマブル相互接続素子43の1つの例に加えて、入力/出力論理素子(「IOL」)47の2つの例を含むことができる。当業者には明白となるように、例えば、I/O論理素子47に接続された実際のI/Oパッドは、一般的に、入力/出力論理素子47の範囲に制限されない。
【0038】
図示される例では、ダイ(
図10に図示)の中央付近の水平範囲は、コンフィギュレーション、クロック、および他の制御論理に使用される。この水平範囲または列から延在する垂直列51は、FPGAの横幅にわたってクロックおよびコンフィギュレーション信号を分配させるのに使用される。
【0039】
図10に示されるアーキテクチャを利用する一部のFPGAは、FPGAの大きな部分を占める規則的な列状構造を破壊する追加の論理ブロックを含む。追加の論理ブロックは、プログラマブルブロックおよび/または専用論理であることができる。
【0040】
図10は、単に例示のFPGAアーキテクチャを例証するためのものであることに留意することである。例えば、行内の論理ブロックの数、行の相対幅、行の数および順序、行に含まれる論理ブロックのタイプ、論理ブロックの相対サイズ、ならびに
図6の上部に含まれる、相互接続/論理の実現は、単なる例示である。例えば、実際のFPGAでは、一般的に、ユーザ論理の効率的な実現を容易にするため、CLBがどこに現れても、CLBの1つを超える隣接列が含まれるが、隣接したCLB行の数はFPGAの全体サイズに伴って変動する。
【0041】
一例では、プログラマブルデバイスにおけるネットワーク・オン・チップ(NoC)の構成を生成する方法を提供することができる。かかる方法は、複数のトラフィックフローに対するトラフィックフロー要件を受信することと、トラフィックフロー要件に基づいて、各トラフィックフローに対してNoCを通して経路を割り当てることと、割り当てられた経路に沿ったトラフィックフローの調停設定を決定することと、NoCのプログラミングデータを生成することと、プログラミングデータをプログラマブルデバイスにロードしてNoCを構成することと、を含んでもよい。
【0042】
かかる方法では、トラフィックフロー要件を受信するステップは、複数のトラフィックフローのそれぞれに関するソースおよび宛先情報を受信することを含んでもよい。
【0043】
かかる方法では、トラフィックフロー要件を受信するステップは、複数のトラフィックフローのそれぞれに関するクラス情報を受信することであって、クラス情報が、複数のトラフィックフローのそれぞれに対する複数のトラフィッククラスのうちの1つの割当てを含む、受信することを更に含んでもよい。
【0044】
かかる方法では、経路を割り当てるステップは、割り当てられたソースおよび宛先に基づいて、複数のトラフィックフローのそれぞれに対して物理的チャネルを選択することと、割り当てられたトラフィッククラスに基づいて、複数のトラフィックフローのそれぞれに対して仮想チャネルを選択することと、を含んでもよい。
【0045】
かかる方法では、ソースおよび宛先情報は、複数のトラフィックフローのそれぞれに対するマスタ回路およびスレーブ回路を含んでもよい。
【0046】
かかる方法では、経路はそれぞれ、1つまたは複数のスイッチをその間に有する、マスタ回路とスレーブ回路との間であってもよい。
【0047】
かかる方法では、1つまたは複数のスイッチはそれぞれ調停器を含んでもよく、調停設定を決定するステップは、1つまたは複数のスイッチのそれぞれにおける調停器に入力される1つまたは複数の仮想チャネルに対する重みを割り当てることを含む。
【0048】
別の例では、プログラマブルデバイスにおけるネットワーク・オン・チップ(NoC)の構成を生成する方法を実施するように、プロセッサによって実行可能な命令が格納された非一時的コンピュータ可読媒体が提供されてもよい。プログラマブルデバイスにおけるネットワーク・オン・チップ(NoC)の構成を生成する方法を実施するように、プロセッサによって実行可能な命令が格納された、かかる非一時的コンピュータ可読媒体は、複数のトラフィックフローに対するトラフィックフロー要件を受信することと、トラフィックフロー要件に基づいて、各トラフィックフローに対してNoCを通して経路を割り当てることと、割り当てられた経路に沿ったトラフィックフローの調停設定を決定することと、NoCのプログラミングデータを生成することと、プログラミングデータをプログラマブルデバイスにロードしてNoCを構成することと、を含んでもよい。
【0049】
かかる非一時的コンピュータ可読媒体では、トラフィックフロー要件を受信するステップは、複数のトラフィックフローのそれぞれに関するソースおよび宛先情報を受信することを含んでもよい。
【0050】
かかる非一時的コンピュータ可読媒体では、トラフィックフロー要件を受信するステップは、複数のトラフィックフローのそれぞれに関するクラス情報を受信することであって、クラス情報が、複数のトラフィックフローのそれぞれに対する複数のトラフィッククラスのうちの1つの割当てを更に含む、受信することを含んでもよい。
【0051】
かかる非一時的コンピュータ可読媒体では、経路を割り当てるステップは、割り当てられたソースおよび宛先に基づいて、複数のトラフィックフローのそれぞれに対して物理的チャネルを選択することと、割り当てられたトラフィッククラスに基づいて、複数のトラフィックフローのそれぞれに対して仮想チャネルを選択することと、を含んでもよい。
【0052】
かかる非一時的コンピュータ可読媒体では、ソースおよび宛先情報は、複数のトラフィックフローのそれぞれに対するマスタ回路およびスレーブ回路を含んでもよい。
【0053】
かかる非一時的コンピュータ可読媒体では、経路はそれぞれ、1つまたは複数のスイッチをその間に有する、マスタ回路とスレーブ回路との間であってもよい。
【0054】
かかる非一時的コンピュータ可読媒体では、1つまたは複数のスイッチはそれぞれ調停器を含んでもよく、調停設定を決定するステップは、1つまたは複数のスイッチのそれぞれにおける調停器に入力される1つまたは複数の仮想チャネルに対する重みを割り当てることを含んでもよい。
【0055】
別の例では、集積回路が提供されてもよい。かかる集積回路は、処理システムと、プログラマブル論理領域と、処理システムとプログラマブル論理領域とを結合するネットワーク・オン・チップ(NoC)であって、NoCが、1つまたは複数の物理的チャネルを通してスレーブ回路に結合されたマスタ回路を含み、第1の物理的チャネルが、複数の仮想チャネルを有する、ネットワーク・オン・チップ(NoC)と、を含んでもよい。
【0056】
かかる集積回路では、複数の仮想チャネルはそれぞれ異なるクラスのトラフィックを伝達するように構成されてもよい。
【0057】
かかる集積回路では、複数の仮想チャネルのうちの1つを超える仮想チャネルは同じクラスのトラフィックを伝達するように構成されてもよい。
【0058】
かかる集積回路では、1つまたは複数の物理的チャネルはそれぞれ、NoCの1つまたは複数のスイッチを通る経路を含んでもよい。
【0059】
かかる集積回路では、スイッチはそれぞれ、調停器に入力される1つまたは複数の仮想チャネルに対する重みを有する調停器を含む。
【0060】
かかる集積回路では、NoCは、マスタ回路、スレーブ回路、物理的チャネル、および仮想チャネルをプログラムするように構成された、周辺相互接続部を含んでもよい。
【0061】
上記は特定の実施例を対象としているが、実施例の基本的範囲から逸脱することなく他の実施例および更なる実施例を案出することができ、それらの範囲は以下の特許請求の範囲によって決定される。