(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-17
(45)【発行日】2023-10-25
(54)【発明の名称】ネットワークオンチップにおけるブロードキャストのエミュレート
(51)【国際特許分類】
H04L 45/00 20220101AFI20231018BHJP
H04L 12/28 20060101ALI20231018BHJP
【FI】
H04L45/00
H04L12/28 200Z
【外国語出願】
(21)【出願番号】P 2020125215
(22)【出願日】2020-07-22
【審査請求日】2022-03-16
(32)【優先日】2019-07-29
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】520161964
【氏名又は名称】シーメンス インダストリー ソフトウェア インコーポレイテッド
(74)【代理人】
【識別番号】100114890
【氏名又は名称】アインゼル・フェリックス=ラインハルト
(74)【代理人】
【識別番号】100098501
【氏名又は名称】森田 拓
(74)【代理人】
【識別番号】100116403
【氏名又は名称】前川 純一
(74)【代理人】
【識別番号】100134315
【氏名又は名称】永島 秀郎
(74)【代理人】
【識別番号】100135633
【氏名又は名称】二宮 浩康
(74)【代理人】
【識別番号】100162880
【氏名又は名称】上島 類
(72)【発明者】
【氏名】ロバートソン・イアン
【審査官】羽岡 さやか
(56)【参考文献】
【文献】米国特許出願公開第2012/0170488(US,A1)
【文献】特開2015-043559(JP,A)
【文献】米国特許出願公開第2014/0269765(US,A1)
【文献】特開2021-013048(JP,A)
【文献】韓国公開特許第10-2011-0024132(KR,A)
【文献】国際公開第2014/141692(WO,A1)
【文献】特開2010-166240(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 45/00
H04L 12/28
(57)【特許請求の範囲】
【請求項1】
複数の通信ユニットの集合を有する集積回路チップであって、
それぞれのユニットは、1つのユニットによって送信されるデータパケットが、ただ1つのユニットだけによって受信可能なプロトコルにしたがって動作するように構成されており、それぞれのユニットは、複数のティアのうちの1つを有する少なくとも1つのパケットを少なくとも1つの別のユニットに送信するように構成されており、かつティア毎に、前記ティアのパケットが送信される、宛先ユニットの部分集合が指定されるように構成されており、それぞれのユニットは、
複数のティアのうちの1つを有するパケットを受信し、
受信された前記パケットの前記ティアを特定し、
受信された前記パケットの前記ティアとは異なるティアを有するパケットを、前記異なるティアについて、それぞれ対応する、宛先ユニットの前記部分集合に順次に送信する、集積回路チップ。
【請求項2】
それぞれのユニットが、受信された前記パケットの前記ティアの上の前記ティアについて、それぞれ対応する、宛先ユニットの前記部分集合にパケットを順次に送信するように設定されている、請求項1記載の集積回路チップ。
【請求項3】
さらにそれぞれの前記ユニットは、パケットを受信すると、ティア毎に、前記ユニットによって生成される、前記ティアのパケットの個数を指定しかつ異なる前記ティアについて、指定された前記個数のパケットを生成するように構成されている、請求項1または2記載の集積回路チップ。
【請求項4】
複数の前記ユニットの第1ユニットは、ユニットの第1部分集合に、第1ティアを有するパケットを順次に送信するように構成されており、それぞれの、ユニットの前記第1部分集合は、次いで、それぞれの、ユニットの第2部分集合に、第2ティアを有するパケットを順次に送信するように構成されており、前記第1ティアは前記第2ティアよりも低い、請求項1から3までのいずれか1項記載の集積回路チップ。
【請求項5】
それぞれの、ユニットの前記第
2部分集合はさらに、次いで、それぞれの、ユニットの第3部分集合に
、第3ティアを有するパケットを順次に送信するように構成されて
おり、前記第2ティアは前記第3ティアよりも低い、請求項4記載の集積回路チップ。
【請求項6】
それぞれの通信ユニットは、より高いティアを有するパケットよりも前に、より低いティアを有するパケットを、当該パケットの対応する、宛先ユニットの部分集合に順次に送信するように構成されている、請求項1から
5までのいずれか1項記載の集積回路チップ。
【請求項7】
複数の前記通信ユニットは、ネットワークを有し、それぞれのユニットは、前記ネットワークの外部のエンティティと通信するように構成されている、請求項1から
6までのいずれか1項記載の集積回路チップ。
【請求項8】
それぞれの前記ユニットは、前記ユニットの対応するエンティティから前記ユニットにおいて受信されるメッセージの形式を、前記エンティティによって使用されるメッセージ形式から、前記ネットワークによって使用されるメッセージ形式に変換するように構成されている、請求項
7記載の集積回路チップ。
【請求項9】
前記パケットは、トリガまたは前記パケットの前記ティアを指定するデータを有する、請求項1から
8までのいずれか1項記載の集積回路チップ。
【請求項10】
通信ユニットの集合を有する集積回路チップ上に実装する方法であって、
それぞれのユニットは、1つのユニットによって送信される1つのデータパケットが、ただ1つのユニットだけによって受信可能なプロトコルにしたがって動作するように構成されており、それぞれのユニットは、複数のティアのうちの1つを有する少なくとも1つのパケットを少なくとも1つの別のユニットに送信するように構成されており、かつティア毎に、前記ティアのパケットが送信される、宛先ユニットの部分集合を指定するように構成されており、前記方法は、
前記それぞれのユニットにより、複数の前記ティアのうちの1つを有するパケットを受信するステップと、
前記それぞれのユニットにより、受信された前記パケットの前記ティアを特定するステップと、
前記それぞれのユニットにより、受信された前記パケットの前記ティアとは異なるティアを有するパケットを、前記異なるティアについて、それぞれ対応する、宛先ユニットの前記部分集合に順次に送信するステップと、
を含む、方法。
【請求項11】
前記方法は、受信された前記パケットの前記ティアの上の前記ティアについて、それぞれ対応する、宛先ユニットの前記部分集合にパケットを順次に送信するステップを含む、請求項
10記載の方法。
【請求項12】
前記方法は、より高いティアを有するパケットよりも前に、より低いティアを有するパケットを、当該パケットの対応する、宛先ユニットの前記部分集合に順次に送信するステップを含む、請求項
10または
11記載の方法。
【請求項13】
前記パケットは、トリガまたは前記パケットの前記ティアを指定するデータを有する、請求項
10から
12までのいずれか1項記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークオンチップ(NoC:Network on Chip)内でのデータ伝送に関する。
【0002】
背景技術
半導体技術における進歩に伴う、より小型の製品に対する市場の需要は、複数のシステムオンチップ(SoC:System on Chip)デバイスの開発に結び付いた。これらのようなデバイスでは、組み込みシステムのマルチコアデバイスが、単一のチップ上に集積されている。組み込みシステムにおけるトラヒックは、内部バスを介して伝達されるため、システムバスに直接にモニタリングツールを接続することはもはや不可能である。(マルチプロセッシングコアの集積およびより高い内部クロック周波数に結び付くこのような技術の開発に起因して)チップ周辺で伝送されるデータの量が増大するのに伴ってアクセスが結果的に減少することにより、産業によって要求されるタイムスケール内でセキュリティ違反、バグ、および安全性に対する懸案について、システムをモニタリングする外部モニタリングツールの能力が低下させられている。さらに、マルチコアデバイスが同じ単一のチップ上に組み込まれる場合、それぞれ個別のコアデバイスの挙動は、このコアデバイスと他のコアデバイスとの相互作用ならびにトリガおよび警報のようなリアルタイムイベントに起因して、単独の場合のその挙動とは異なる。
【0003】
大規模なSoC設計では、コンポーネント間で送信されるメッセージのための伝送機構としてネットワークオンチップ(NoC:Network on Chip)を使用するのが望ましいことが多い。1つのメッセージをNoC内のすべてのデバイスに同時に送信するのが望ましいことがある。例えば、これらのようなネットワークでは、デバイスが迅速に応答しなければならないセキュリティ違反を示すトリガが分配されることがある。
【0004】
NoCは一般に、1つのデバイスから別の複数のデバイスへのメッセージのブロードキャストをサポートすることはできない。その代わりにメッセージは、ネットワークにおいてそれぞれのデバイスに順次に送信される。それぞれのモジュールに順次にメッセージを送信するのには極めて長い時間を要することがある。
【0005】
複数のネットワークコンポーネントに可能な限り迅速にメッセージを分配できるようにするために、NoCにおいてブロードキャストをエミュレートできるようにする方法が必要である。
【0006】
発明の概要
第1の様相によれば、通信ユニットの集合(set)を有する集積回路チップが提供され、それぞれのユニットは、1つのユニットによって送信されるデータパケットが、ただ1つのユニットだけによって受信可能なプロトコルにしたがって動作するように構成されており、それぞれのユニットは、複数のティア(tier)のうちの1つを有する少なくとも1つのパケットを少なくとも1つの別のユニットに送信するように構成されており、かつティア毎に、上記のティアのパケットが送信される、宛先ユニットの部分集合(subset)が指定されるように構成されており、それぞれのユニットは、複数のティアのうちの1つを有するパケットを受信し、受信されたパケットのティアを特定し、受信されたパケットのティアとは異なるティアを有するパケットを、異なるティアについて、それぞれ対応する、宛先ユニットの部分集合に順次に送信するように構成されている。
【0007】
それぞれのユニットは、受信されたパケットのティアの上のティアについて、それぞれ対応する、宛先ユニットの部分集合にパケットを順次に送信するように構成可能である。
【0008】
さらにそれぞれのユニットは、パケットを受信すると、ティア毎に、このユニットによって生成される、このティアのパケットの個数を指定しかつ異なるティアについて、指定された個数のパケットを生成するように構成可能である。
【0009】
複数のユニットの第1ユニットは、ユニットの第1部分集合に、第1ティアを有するパケットを順次に送信するように構成可能であり、それぞれの、ユニットの第1部分集合は、次いで、それぞれの、ユニットの第2部分集合に、第2ティアを有するパケットを順次に送信するように構成可能であり、ここで第1ティアは第2ティアよりも低い。
【0010】
それぞれの、ユニットの第1部分集合はさらに、次いで、それぞれの、ユニットの第3部分集合に、第2ティアを有するパケットを順次に送信するように構成可能である。
【0011】
それぞれの、ユニットの第2部分集合は、ユニットの第1部分集合のうちの1つからパケットを受信すると、次いで、それぞれの、ユニットの第4部分集合に、第3ティアを有するパケットを送信するように構成可能であり、ここで第2ティアは第3ティアよりも低い。
【0012】
それぞれの通信ユニットは、より高いティアを有するパケットよりも前に、より低いティアを有するパケットを、これらのパケットの対応する、宛先ユニットの部分集合に順次に送信するように構成可能である。
【0013】
ティアの個数は、4以下であってよい。ティアの個数は、より多くてよい。
【0014】
複数の通信ユニットは、ネットワークを有していてよく、それぞれのユニットは、このネットワークの外部のエンティティと通信するように構成されていてよい。
【0015】
それぞれのユニットは、このユニットの対応するエンティティからこのユニットにおいて受信されるメッセージの形式を、エンティティによって使用されるメッセージ形式から、ネットワークによって使用されるメッセージ形式に変換するように構成されていてよい。
【0016】
複数のユニットのそれぞれは、メッセージインタフェースを有していてよく、パケットを受信すると、それぞれのユニットは、その対応するメッセージインタフェースに、パケットを有するデータの要素を表示するように構成されていてよい。
【0017】
パケットは、このパケットのティアを指定するデータを有していてよい。
【0018】
パケットは、ヘッダおよびペイロードを有していてよく、ヘッダは、パケットのティアを指定するデータを有する。
【0019】
パケットは、トリガを有していてよい。
【0020】
パケットは、AXIトランザクションを有していてよい。
【0021】
第2の様相によれば、通信ユニットの集合を有する集積回路チップ上に実装する(implementation)方法が提供され、それぞれのユニットは、1つのユニットによって送信される1つのデータパケットが、ただ1つのユニットだけによって受信可能なプロトコルにしたがって動作するように構成されており、それぞれのユニットは、複数のティアのうちの1つを有する少なくとも1つのパケットを少なくとも1つの別のユニットに送信するように構成されており、かつティア毎に、このティアのパケットが送信される、宛先ユニットの部分集合が指定されるように構成されており、この方法では、複数のティアのうちの1つを有するパケットを受信し、受信されたパケットのティアを特定し、受信されたパケットのティアとは異なるティアを有するパケットを、この異なるティアについて、それぞれ対応する、宛先ユニットの部分集合に順次に送信する。
【0022】
この方法では、受信されたパケットのティアの上のティアについて、それぞれ対応する、宛先ユニットの部分集合にパケットを順次に送信可能である。
【0023】
この方法では、より高いティアを有するパケットよりも前に、より低いティアを有するパケットを、このパケットの対応する、宛先ユニットの部分集合に順次に送信可能である。
【0024】
ティアの個数は、4以下であってよい。ティアの個数は、より多くてよい。
【0025】
複数の通信ユニットは、ネットワークを有していてよく、またそれぞれのユニットは、このネットワークの外部のエンティティと通信するように構成されていてよい。
【0026】
それぞれのユニットは、このユニットの対応するエンティティからこのユニットにおいて受信されるメッセージの形式を、エンティティによって使用されるメッセージ形式から、ネットワークによって使用されるメッセージ形式に変換するように構成されていてよい。
【0027】
パケットは、このパケットのティアを指定するデータを有していてよい。
【0028】
パケットは、ヘッダおよびペイロードを有していてよく、ヘッダは、パケットのティアを指定するデータを有する。
【0029】
パケットは、トリガを有していてよい。
【0030】
パケットは、AXIトランザクションを有していてよい。
【0031】
以下では、添付の図面を参照して本開示を実施例で説明する。
【図面の簡単な説明】
【0032】
【
図1】集積回路チップ上の例示的なモニタリングアーキテクチャの概略図である。
【
図2】集積回路チップ上の例示的なモニタリングアーキテクチャの概略図である。
【
図3】ユニットの集合間で、NoCを介して通信するためのアーキテクチャを示す図である。
【
図5】集積回路チップ上に実装する方法の一実施例を示す図である。
【0033】
詳細な説明
以下の開示により、集積回路チップ上でネットワークにおけるブロードキャストをエミュレートするシステムおよび方法を説明する。集積回路チップは、SoCまたはマルチチップモジュール(MCM:multi-chip module)であってよい。
【0034】
図1および2は、SoCについての例示的なモニタリングアーキテクチャおよびモニタリングアーキテクチャ内のコンポーネントの概略図である。このシステムは、セキュリティ違反、バグおよび安全性に対する懸案のような状況についてモニタリングされることが可能である。これらの図は、機能ブロックで構造を示している。当該技術分野においてよく知られた機能を実行するいつかの機能ブロックはところどころ、これらの図から省略されている。
【0035】
図1には、SoC100についての例示的なモニタリングアーキテクチャの一般的な構造が示されている。モニタリング回路101は、システム回路102をモニタリングするために配置されている。
図2には、この実施例においてコアデバイスであるローカルサブシステムと、通信インタフェースとを有する例示的なシステム回路が示されている。SoCのコアデバイス201、202および203は、モニタリング回路101にそれぞれ接続されている。
図2には3つのコアデバイスが示されているが、モニタリングアーキテクチャには任意の個数のコアデバイスを適切に集積可能である。これらのコアデバイスは、オペレーティングシステム、例えばRTOS(real-time operating system)を動作させ、ソフトウェアを動作させることができ、またはデータを格納することができる。例示的なコアデバイスには、DSP(digital signal processor)、ビデオプロセッサ、アプリケーションプロセッサ、CPU、グラフィックスプロセッサ、システムメモリ、バス、システム相互接続部、カスタム回路およびデータエンジンが含まれる。しかしながら
図2におけるコアデバイスとして、SoCの任意のコンポーネントが、モニタリングアーキテクチャに組み込まれるのに適している。これらのコアデバイスは、チップ上の任意の他のデバイスのエミュレータまたはシミュレータであってよい。例えば、1つのコアデバイスは、1つのプロセッサをエミュレート可能である。
【0036】
モニタリング回路は、コアデバイスの動作をモニタリング可能であり、かつ選択的にはコアデバイスの動作も操作可能である。モニタリング回路は、通信インタフェース204に接続されている。通信インタフェース204は、オフチップのエンティティと通信するように構成可能である。例えば、モニタリング回路101は、通信インタフェース204を介してオフチップアナライザと通信可能である。通信インタフェース204はまた、オンチップの他のエンティティと通信するように構成可能である。例えば、モニタリング回路101は、通信インタフェース204を介してオンチップアナライザと通信可能である。
図2には1つの通信インタフェースが示されているが、SoC上には任意の個数の通信インタフェースを集積可能である。実装されるこれらの通信インタフェースは、確立される接続のタイプに依存して選択される。例示的な通信インタフェースに含まれるのは、JTAG、パラレルトレース入出力、Auroraベースの高速シリアルインタフェース、ならびにUSB、イーサネット、RS232、PCIeおよびCANのようなシステムインタフェースの再利用である。モニタリング回路101内には、それぞれのコアデバイスに関連付けられている異なるモニタリング回路が設けられていてよい。択一的または付加的には、いくつかのモニタリング回路は、2つ以上のコアデバイスに関連付けられていてよい。択一的または付加的には、1つのコアデバイスは、2つ以上の、モニタリング回路の集合に関連付けられていてよい。一実施例において、
図2のコアデバイスはプロセッサであり、このプロセッサは、モニタリング回路101のトレーシング回路によってモニタリングされる。このプロセッサは、例えばCPU、GPUまたはDSPであってよい。
【0037】
集積回路チップは、複数のモニタリング回路モジュール101を有していてよい。それぞれの、モニタリング回路の集合は、モニタリングされる異なるローカルサブシステムを有していてよい。択一的または付加的には、いくつかのモニタリング回路は、2つ以上のローカルサブシステムに関連付けられていてよい。択一的または付加的には、2つ以上のローカルサブシステムは、1つの、モニタリング回路の集合に関連付けられていてよい。
【0038】
状況によっては、例えば、セキュリティ違反またはバグが、1つの、モニタリング回路の集合によって検出される場合、別の複数のモニタリング回路モジュールにトリガを分配しなければならないことがある。このようなイベントにおいては、トリガを受信すると、それぞれのモニタリング回路モジュールに関連付けられているローカルサブシステムは、シャットダウンされるか、または安全性またはセキュリティについて修正されることが可能である。この場合、このイベントが、それぞれ別のモニタリング回路モジュールおよびそれに関連付けられているサブシステムに可能な限りに迅速に通信されることが望ましい。
【0039】
大規模なSoC設計では、デバイス間でのメッセージまたはイベントについての伝送メカニズムとして、NoCを使用するのが好ましいことが多い。SoCによって使用されるプロトコルが異なる場合、SoCメッセージをNoCネイティブプロトコルに、またはSoCメッセージをNoCネイティブプロトコルから変換しなければならないことがある。NoCブリッジユニットにより、SoCメッセージをNoCネイティブプロトコルに、またはSoCメッセージをNoCネイティブプロトコルから変換するメカニズムが提供される。NoCブリッジは、メッセージインタフェースを介してそれぞれのSoCコンポーネントを接続し、またイベントの管理、アドレッシングおよび分配を担うこともできる。
【0040】
NoCブリッジは、NoCへの接続のためのインタフェースを提供可能である。SoCからのメッセージおよび/またはイベントは、NoCをまたいで、NoCブリッジの他のインスタンスに伝送されるパケットに変換可能であり、これらのパケットはこのインスタンスにおいてSoCメッセージまたはイベントに逆変換される。
【0041】
別の例示的な一実施形態では、NoCブリッジにより、AXI4ベースのNoCに接続するためのインタフェースが提供される。AXIは、NoCインタフェースプロトコルの一例である。SoCメッセージおよび/またはイベントは、NoCをまたいでNoCブリッジの他のインスタンスに伝送されるAXIトランザクションに変換可能であり、これらのAXIトランザクションはこのインスタンスにおいてSoCメッセージまたはイベントに逆変換される。このブリッジは、択一的には、異なるタイプの相互接続トランザクションの伝送を容易にならしめることが可能である。
【0042】
以下の説明は、異なるNoCブリッジユニット間でのデータパケットの伝送に関する。AXI形態ブリッジにおけるイベントの分配について、「パケット」についての言及は、「AXIトランザクション」によって置き換え可能である。以下に説明する実施例は、より一般に、1対1通信が許容されるプロトコルを使用する任意のネットワークにも適用可能である。言い換えると、1つのユニットによって送信されるデータパケットが、ただ1つのユニットだけによって受信可能なプロトコルにしたがって通信ユニットが動作する任意のネットワークにおいて適用可能である。
【0043】
図3の実施例では1つの集積回路が、単一の半導体基板上に形成されている。この集積回路は、16個のブリッジユニット300~315を有する。それぞれのユニットは、SoC上の対応するモニタリング回路モジュール101およびそのローカルサブシステム316と通信する。
【0044】
それぞれのユニット300~315は、適切に構成設定されたパケットにメッセージデータをまとめ、かつリモートインタフェースを介して、意図した宛先にこれらを伝送するプロトコルプロセッサを有していてよい。リンクの反対側の端部において、受信ユニットでは、類似のプロトコル処理エンジンにより、そのリモートインタフェースを介してパケットが受信され、パケットからペイロードまたはトラヒックデータが抽出され、またそのローカルインタフェースを介してそのホストユニットにわたされる。またそれぞれのユニットの処理エンジンは、受信データのエラーのチェック、再伝送の要求、または肯定応答の供給、およびリンクの同期化のような補助的なタスクも処理可能である。
【0045】
NoC内の通信ユニット300~315は、ネットワークのプロトコルにしたがい、データパケット交換を介して通信する。
図4にはデータパケット400の一実施例が示されている。パケット400には、ヘッダ401およびペイロード402が含まれている。ペイロードには、通信されるデータが含まれている。ペイロードにはメッセージまたはイベントが含まれていてよい。ヘッダには、パケットの意図された宛先を示すアドレスフィールド403が含まれている。パケットデータには、データパケットのティアを示すティア番号も含まれており、このティア番号は、以下でさらに詳しく説明するパケットを分配するために使用される。ヘッダには、データパケットのティアを示すティア識別子フィールド404が含まれていてよい。パケットのティアは、択一的にはパケットのペイロードに示されていてよい。ヘッダには、その他のフィールド405、例えばペイロードの長さ、データの優先レベル、誤り訂正ビットなどを示すフィールドも設けられていてよい。
【0046】
それぞれのブリッジユニット300~315により、それがサポートするティア毎に独立して、以下が、すなわち、(i)生成するパケットのあらかじめ定めた個数と、(ii)これらが送信される、宛先ユニットの部分集合と、が指定される。この実施例では、ブリッジユニット300~315間でパケットを分配するために2ティアアプローチが使用される(tier-0およびtier-1)。(任意のユニットがイベントを開始することができるが)308のような第1ユニットのメッセージインタフェースにおいてメッセージまたはイベントEnumが受信されると、一連のパケットが生成され、このユニットについて設定されたすべての宛先に順次に送信される。ユニット308は、ユニット300、304および312の部分集合へのtier-0パケットと、ユニット309、310および311の部分集合へのtier-1パケットとを生成して送信するように構成されている。これらのtier-0パケットには、それらのペイロードとして{0,Enum}が含まれており、またこれらのtier-1パケットには、それらのペイロードとして{1,Enum}を有する。
【0047】
ブリッジユニット312は、ユニット308からtier-0パケットを受信する。ユニット312は、tier-0パケットを生成してユニット0、4および8に送信しかつtier-1パケットを生成してユニット13、14および15に送信するようにあらかじめ設定されている。ユニット312により、これがtier-0パケットを受信したことが特定される。これは、パケットデータを読み出すことにより、例えば、パケットのティア番号が指定可能な、パケットのヘッダを読み出すことによって行うことができる。ユニット312は次に、ペイロード{1,Enum}を有する3つのtier-1パケットを生成し、ユニット313、314および315にこれらを順次に送信する。言い換えると、ユニット312は、受信されたパケットのティアの上のティアについて、その設定された、それぞれの、宛先ユニットの部分集合にパケットを生成して順次に送信する。このユニットについて指定されたtier-0ユニットにはパケットは送信されない。というのは、ユニット312によって受信されたパケットはtier-0パケットだからである。言い換えると、受信されたパケットのティアと同じティア(または該当する場合には、受信されるパケットのティアの下にある複数のティア)に対して設定された、ユニットの部分集合にはパケットは送信されない。ユニット312はまた、そのメッセージインタフェース上で、そのローカルなサブシステム316に、番号付けされたイベントEnumも送出する。
【0048】
ブリッジユニット300および304は、ブリッジユニット312と同様に動作する。ブリッジユニット300は、ブリッジユニット301、302および303にtier-1パケットを送信し、ブリッジユニット304は、ブリッジユニット305、306および307にtier-1パケットを送信する。
【0049】
ブリッジユニット309、310および311はそれぞれ、ブリッジ308からtier-1パケットを受信する。
図3の実施例では、送信するより高いティアパケット(すなわちtier-1よりも高いティアを有するパケット)はない。しかしながらこれらのユニットが、より高いティア上の別のユニットにパケットを送信するように構成されていたとすると、ブリッジユニット309、310および311により、tier-1より上のすべてのティアに、しかもこれらに設定されている宛先ユニットにパケットが送信され、またそれらのメッセージインタフェース上に、番号付けされたイベントが送出されることになる。
【0050】
同様にユニット313、314および315はそれぞれ、ユニット312によって送信されたtier-1パケットを受信する。それぞれのユニットは、番号付けされたイベントをメッセージインタフェース上に送出する。
図3の実施例において、これらのユニット313、314および315は、より高いティアに送信される別のパケットを有しない。しかしながら、例えば、これらのユニットが、tier-2またはtier-3パケットを送信するようにあらかじめ設定されたとすれば、これらのパケットは、tier-1パケットが受信された後、これらのユニットからさらに分配されることになる。
【0051】
したがって好ましくは、より小さな番号が付されたティアが、最初にサービスされる。というのは、これらのティアは、付加的なパケットをトリガすることができ、これにより、全体な遅延の減少が促進される。
【0052】
上述のように、それぞれのユニットは、ティア毎に、そのティアのパケットが送信される、宛先ユニットの部分集合を指定するように構成されている。ティアおよびそれらの宛先毎に、生成するパケットの個数を指定するのに使用されるパラメータの一実施例は、
図3のユニット308、309、312および313について以下に示されている。
【0053】
ブリッジ308:
event_tiers_p={0,0,3,3}
ust_event_tiers_ip={0,0,3,3}
ust_event_destinations_ip={{},{},{9,10,11},{0,4,12}}
【0054】
ブリッジ309:
event_tiers_p={0,0,3,3}
ust_event_tiers_ip={0,0,3,3}
ust_event_destinations_ip={{},{},{8,10,11},{1,5,13}}
【0055】
ブリッジ312:
event_tiers_p={0,0,3,3}
ust_event_tiers_ip={0,0,3,3}
ust_event_destinations_ip={{},{},{13,14,15},{0,4,8}}
【0056】
ブリッジ313:
event_tiers_p={0,0,3,3}
ust_event_tiers_ip={0,0,3,3}
ust_event_destinations_ip={{},{},{12,14,15},{1,5,9}}
【0057】
この実施例では、それぞれのユニットは、event_tiers_pを使用して、それぞれのティアにおいて生成するパケットの最大個数を有するように設定されており、ここでビット[7:0]は、tier-0についてのパケットの最大個数を指定し、ビット[15:8]は、tier-1に対応する等々である。
【0058】
イベントが送信される宛先は、入力パラメータust_event_destinations_ipを使用して指定される。このバスは、パラメータevent_tiers_pおよびhp_width_pに基づいてサイズが設定される。
【0059】
それぞれのティアにおいて生成するイベントの実際の個数は、入力ust_event_tiers_ipを使用して変更可能であり、ビット[7:0]は、tier-0などについての実際の個数を指定する。これにより、例えば、サブシステムが一回、合成され、配置され、ルーティングされるタイル型の設計において、NoCブリッジを含むサブシステムの再使用が可能である。
【0060】
上述の実施例において、以下の制約が満たされることは有益になり得る。
【0061】
event_tiers_pに対し、ティアについて、設定されるイベントの最大個数が0である場合、好ましくは、より高いすべてのティアも0個のイベントを有するように構成されるべきである。例えば、以下の組み合わせは好ましくない。というのは、この組み合わせにより、tier-2について0個のイベントが指定され、tier-3について対してゼロでない数(4)が指定され、すなわち
event_tiers_p={0x04, 0x00, 0x10, 0x1}
だからである。
【0062】
同様の制約は、ティア毎に生成するイベントの実際の個数を指定するust_event_tiers_ipに適用可能である。ティア毎に生成するイベントの実際の個数は、設定される最大値以下であるべきである。このことは、バイトで見れば、ust_event_tiers_ipが、event_tiers_p以下であるべきであることを意味する。
【0063】
イベント宛先ベクトルust_event_destinations_ipは、以下のように構成可能である。すなわち、
ust_event_destinations_ip =
{last-tier-3-destination,…, first-tier-3-destination,
last-tier-2-destination,…, first-tier-2-destination,
last-tier-1-destination,…, first-tier-1-destination,
last-tier-0-destination,…, first-tier-0-destination}
である。
【0064】
それぞれのユニットは、次のティアに進む前に、与えられた1つのティアについて、「最初の」宛先からはじまり、(このティアについてのイベントの「最大」および「実際」の個数の小さい方によって決まる)「最後」の宛先で終わってよい。
【0065】
イベント宛先ベクトルにおいて指定される値は、hp_width_p幅であるべきである。
【0066】
パケットが順次に送信される宛先の順序は、あらかじめ定められていてよい。積算計(integrator)が定められていてよい。それぞれのユニットは、宛先リストにわたって繰り返されてよい。NoCをまたがってより大きな遅延を受けることが知られている宛先は、宛先リストの前の方で指定可能である。パケットが送信される順序は、マルチティアイベントの処理について、考えられ得る最小遅延になるように設定可能である。
【0067】
図5には、通信ユニットの集合を有する集積回路チップ上に実装する、本発明による方法の一実施例が要約されており、それぞれのユニットは、1つのユニットによって送信される1つのデータパケットが、ただ1つのユニットだけによって受信可能なプロトコルにしたがって動作するように構成されており、それぞれのユニットは、複数のティアのうちの1つを有する少なくとも1つのパケットを少なくとも1つの別のユニットに送信するように構成されており、かつティア毎に、このティアのパケットが送信される、宛先ユニットの部分集合を指定するように構成されている。この方法では、ステップ501において、複数のティアのうちの1つを有するパケットを受信する。ステップ502では、受信されたパケットのティアを特定する。ステップ503では、受信されたパケットのティアとは異なるティアを有するパケットを、この異なるティアについての、それぞれ対応する、宛先ユニットの部分集合に順次に送信する。
【0068】
したがって本発明のシステムでは、別のユニットの部分集合にメッセージまたはイベントを伝搬するブリッジとして、NoCにおける少なくともいつかのユニットを扱う分散ティア構造が使用される。パケットのティアは、受信ユニットによって特定され、またこのパケットのティアは、これが、付加的なパケットを生成することによってメッセージまたはイベントをルーティングすべきか否か、そうであるならばどのユニットにルーティングするかを識別するために使用される。
【0069】
好ましくはメッセージまたはイベントは、システムのすべてのユニットに送信すべきであり、このことは、1つのパケットがそれらのそれぞれに送信されるべきであることを意味する。慣用の方法を使用する場合、メッセージインタフェースにおいてイベントを最初に受信したユニットにおいて、すべてのパケットを生成することは、ユニットの個数が少ないのでない限り、重大なシリアル化遅延を招くおそれがある。またNoC内で完全な接続性が要求され、大量の資源を加えることにもなり得る。
【0070】
したがって本発明の複数のティアを用いたアプローチを使用することにより、はじめにメッセージまたはイベントを受信したユニットは、一時点に1つのメッセージを順次に送信する間に、ブロードキャストをエミュレート可能である。ティアを用いたメッセージの分配により、ネットワークにおけるそれぞれ別のユニットにメッセージを送信するための時間を少なくすることが可能である。
【0071】
好ましい一実施形態では、4つまでのティアリングのレベルが存在する。しかしながらティアリングのさらなるレベルを実現可能である。
【0072】
図3に関連して説明した実施例において、それぞれのユニットは、受信されたパケットのティアの上のティアについて、それぞれ対応する、宛先ユニットの部分集合にパケットを順次に送信するように設定されている。しかしながらこれらのユニットは、受信されたパケットのティアとは異なる任意のティアにおける、宛先ユニットの部分集合にパケットを送信可能である。
【0073】
ユニット間で送信されるデータパケットは、ユニキャストパケットまたはマルチキャスト(例えばイーサネット)パケットであってよい。
【0074】
上述のシステムおよび方法は、以下の例示的な状況に使用可能である。上記の方法は、「ウェークアップ」メッセージを含み得るパケットをそれぞれのユニットに送信することにより、ローカルサブシステムにおけるデバイスのメモリを起動時に初期化することが望ましい場合に使用可能である。この方法はまた、ローカルサブシステムにおけるユニットまたはデバイスが、セキュリティまたは安全状態のような、それらの現在の状態が何であるかを示すために応答可能なメッセージをこれらのユニットまたはデバイスに分配するのが望ましい場合にも使用可能である。さらにローカルサブシステムにおけるユニットまたはデバイスは、これらが特定のメッセージ、命令の集合またはトリガを含むパケットを受信する場合に特定のメソッドを実行するように設定可能である。このメソッドはまた、ローカルサブシステムにおけるデバイスに、デバイスを設定するために使用されるデータを含むアップストリームメッセージを送信するためにも使用可能である。
【0075】
図1~3に示したシステムのそれぞれのコンポーネントは、専用のハードウェアで実現可能である。択一的には、
図1~3に示したシステムのそれぞれのコンポーネントは、ソフトウェアで実現可能である。いくつかのコンポーネントはソフトウェアで実現できるのに対し、別のいくつかのコンポーネントは専用のバードウェアで実現される。
【0076】
説明したシステムは、コンピューティングベースデバイス内に適切に組み込み可能である。コンピューティングベースデバイスは、電子デバイスであってよい。適切にはコンピューティングベースデバイスは、ここで説明した方法を実現するために、デバイスの動作を制御するコンピュータ実行可能命令を処理する1つ以上のプロセッサを有する。コンピュータ実行可能命令は、メモリのような任意のコンピュータ読み出し可能媒体を使用して提供可能である。ここで説明した方法は、有形記憶媒体上の機械読取り可能な形態のソフトウェアによって実行可能である。ソフトウェアは、ここで説明した方法を実現するためにコンピューティングベースデバイスに供給可能である。
【0077】
ここで出願人は、本明細書で説明したそれぞれ個別の特徴および2つ以上のこれらの特徴の任意の組み合わせを別個に開示しており、しかも、これらの特徴または特徴の組み合わせがここで開示した任意の課題を解決するか否かにかかわらず、このような特徴または組み合わせが、本明細書に基づき、当業者の広く一般的な知識に照らして全体として実行可能であるという範囲において、また特許請求の範囲を限定することなく開示している。出願人は、本発明の複数の様相が、このような任意の個別の特徴または特徴の組み合わせから構成され得ることを表明する。上記の説明を考慮すれば、本発明の範囲内において種々異なる変形を行い得ることは、当業者には明らかであろう。