(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-15
(45)【発行日】2024-01-23
(54)【発明の名称】第1のクロックドメインと第2のクロックドメインとの間で伝送される主信号のためのエラーチェック
(51)【国際特許分類】
G06F 11/16 20060101AFI20240116BHJP
G06F 13/38 20060101ALI20240116BHJP
H04L 7/00 20060101ALI20240116BHJP
【FI】
G06F11/16 625
G06F13/38 340C
H04L7/00 500
【外国語出願】
(21)【出願番号】P 2019093466
(22)【出願日】2019-05-17
【審査請求日】2022-05-10
(32)【優先日】2018-05-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】サイラ サマール マリク
(72)【発明者】
【氏名】デイビッド ジョセフ ホーキンス
(72)【発明者】
【氏名】アンドリュー デイビッド トゥーン
(72)【発明者】
【氏名】グアンフイ ゲン
(72)【発明者】
【氏名】ジュリアン ジョゼ ヒルゲンベルク ポンテス
【審査官】漆原 孝治
(56)【参考文献】
【文献】国際公開第2016/151674(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/16
G06F 13/38
H04L 7/00
(57)【特許請求の範囲】
【請求項1】
装置であって、
第1のクロックドメインで動作する第1の部分と、第2のクロックドメインで動作する第2の部分とを備え、
前記第1の部分が、第1の主インタフェースおよび第1の冗長インタフェースを備え、前記第1の主インタフェースが、主信号を受信するように構成されており、前記第1の冗長インタフェースが、第1のチェック信号を受信するように構成されており、前記第1のチェック信号と前記主信号が、所定の時間遅延だけ離され、
前記第2の部分が、第2の主インタフェースおよび第2の冗長インタフェースを備え、前記第2の主インタフェースが、前記主信号を出力するように構成されており、前記第2の冗長インタフェースが、第2のチェック信号を出力するように構成されており、
前記装置が、前記第2のクロックドメイン内にチェック回路を備え、前記チェック回路が、
前記主信号に基づいて前記第2のチェック信号を生成し、
前記第1のチェック信号および前記第2のチェック信号に基づいてエラーチェック手順を実行し、
前記主信号が前記第2の主インタフェースに供給されてから前記所定の時間遅延の後に前記第2のチェック信号を前記第2の冗長インタフェースに供給する
ように構成され
、
前記第2のチェック信号が、前記主信号に基づいて前記チェック回路によって計算されるエラーチェックコードを含み、前記第2のチェック信号が、前記第2のチェック信号を生成するために使用される前記主信号の部分より少ないビットを有する、装置。
【請求項2】
前記第2の主インタフェースおよび前記第2の冗長インタフェースが、独立した同期クロックで動作するように構成されている、請求項1に記載の装置。
【請求項3】
前記第1のチェック信号を記憶するように構成された、前記第1のクロックドメイン内の遅延バッファを備え、
前記チェック回路が、前記第2のチェック信号を記憶するように構成された比較バッファと、前記エラーチェック手順を実行するように構成された比較回路とを備える、
請求項1に記載の装置。
【請求項4】
前記遅延バッファが、前記第2のチェック信号が前記第1のチェック信号との比較に利用可能であることを示す、前記比較バッファからの信号に応答して前記第1のチェック信号を出力するように構成されている、請求項3に記載の装置。
【請求項5】
前記比較バッファが、前記比較バッファ内のすべてのエントリが利用不可能であるときにフル信号を生成するように構成されている、請求項3に記載の装置。
【請求項6】
前記比較バッファが、少なくとも2つのエントリを含む、請求項3に記載の装置。
【請求項7】
前記チェック回路が、前記主信号をコピーすることによって前記第2のチェック信号を生成するように構成されている、請求項1に記載の装置。
【請求項8】
前記主信号が、データ伝送またはメモリアクセス要求を含む、請求項1に記載の装置。
【請求項9】
下流バッファから上流バッファにクレジットリターン信号を伝送するためのクレジットリターン経路を備え、前記上流バッファからのデータ伝送の伝送タイミングを制御するための前記クレジットリターン信号が、前記下流バッファの予期占有率に依存する、請求項1記載の装置。
【請求項10】
前記主信号が、前記クレジットリターン信号を含む、請求項
9に記載の装置。
【請求項11】
前記クレジットリターン経路が、前記第2のクロックドメインから前記第1のクロックドメインに前記クレジットリターン信号を伝送するように構成されている、請求項
9に記載の装置。
【請求項12】
前記クレジットリターン信号が、第1のクレジットリターン信号識別子を含み、
前記装置が、前記第2のクロックドメインから前記第1のクロックドメインに第2のクレジットリターン信号識別子を含む冗長クレジットリターン信号を伝送するように構成された冗長クレジットリターン経路と、前記クレジットリターン信号または前記冗長クレジットリターン信号の伝送におけるエラーを検出するために前記第1のクレジットリターン信号識別子と前記第2のクレジットリターン信号識別子とを比較する、前記第1のクロックドメイン内のクレジット比較器とを備える、請求項
11に記載の装置。
【請求項13】
前記クレジット信号リターン識別子が、利用可能になった、前記下流バッファ内のエントリのエントリ識別子を含む、請求項
12に記載の装置。
【請求項14】
前記第1のクロックドメインから前記第2のクロックドメインに前記主信号を伝送するように構成された主クロックドメインブリッジと、前記第1のクロックドメインから前記第2のクロックドメインに前記第1のチェック信号を伝送するように構成された冗長クロックドメインブリッジとを備える、請求項1に記載の装置。
【請求項15】
前記エラーチェック手順が、前記第1のチェック信号と前記第2のチェック信号とを比較し、前記第1のチェック信号と前記第2のチェック信号が異なるときにエラー指示を返すことを含む、請求項1に記載の装置。
【請求項16】
第1のクロックドメインで動作する第1の部分と第2のクロックドメインで動作する第2の部分との間で主信号を伝送するための方法であって、前記方法が、
前記第1の部分の第1の主インタフェースで主信号を受信し、前記第1の部分の第1の冗長インタフェースで第1のチェック信号を受信するステップであって、前記第1のチェック信号と前記主信号が、所定の時間遅延だけ離されているステップと、
前記第2の部分の第2の主インタフェースで前記主信号を出力し、前記第2の部分の第2の冗長インタフェースで第2のチェック信号を出力するステップであって、前記第2のクロックドメイン内のチェック回路が、
前記主信号に基づいて前記第2のチェック信号を生成し、
前記第1のチェック信号および前記第2のチェック信号に基づいてエラーチェック手順を実行し、
前記主信号が前記第2の主インタフェースに供給されてから前記所定の時間遅延の後に前記第2のチェック信号を前記第2の冗長インタフェースに供給する
ように構成されているステップと
を含
み、
前記第2のチェック信号が、前記主信号に基づいて前記チェック回路によって計算されるエラーチェックコードを含み、前記第2のチェック信号が、前記第2のチェック信号を生成するために使用される前記主信号の部分より少ないビットを有する、方法。
【請求項17】
集積回路の複数のノード間でデータ伝送を実現するための相互接続ネットワークの設計を表す電子設計ファイルを生成するコンピュータ実施方法であって、前記方法が、
前記複数のノードが、第1のクロックドメインで動作する第1のノードと第2のクロックドメインで動作する第2のノードとを含むことの特定に応答して、前記相互接続ネットワークがクロックドメインクロッシングを備えることを指定する前記電子設計ファイルを生成するステップであって、前記クロックドメインクロッシングが、
前記第1のクロックドメインで動作する第1の部分と、前記第2のクロックドメインで動作する第2の部分とを備え、
前記第1の部分が、第1の主インタフェースおよび第1の冗長インタフェースを備え、前記第1の主インタフェースが、主信号を受信するように構成されており、前記第1の冗長インタフェースが、第1のチェック信号を受信するように構成されており、前記第1のチェック信号と前記主信号が、所定の時間遅延だけ離され、
前記第2の部分が、第2の主インタフェースおよび第2の冗長インタフェースを備え、前記第2の主インタフェースが、前記主信号を出力するように構成されており、前記第2の冗長インタフェースが、第2のチェック信号を出力するように構成されており、
前記装置が、前記第2のクロックドメイン内にチェック回路を備え、前記チェック回路が、
前記主信号に基づいて前記第2のチェック信号を生成し、
前記第1のチェック信号および前記第2のチェック信号に基づいてエラーチェック手順を実行し、
前記主信号が前記第2の主インタフェースに供給されてから前記所定の時間遅延の後に前記第2のチェック信号を前記第2の冗長インタフェースに供給する
ように構成されているステップを含
み、
前記第2のチェック信号が、前記主信号に基づいて前記チェック回路によって計算されるエラーチェックコードを含み、前記第2のチェック信号が、前記第2のチェック信号を生成するために使用される前記主信号の部分より少ないビットを有する、コンピュータ実施方法。
【請求項18】
請求項
17に記載の方法を実行するようにデータ処理装置を制御するためのコンピュータプログラムを記憶した非一時的記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、集積回路の分野に関する。より具体的には、本技術は、クロックドメイン間の信号の伝送に関する。
【背景技術】
【0002】
集積回路は、クロック信号の位相および/または周波数がずれているクロック信号に従って動作する異なるクロックドメインを有する場合がある。これは、クロックドメイン境界を越えてクロック信号を伝送することをより複雑にし得る。
【発明の概要】
【0003】
一観点から見ると、本技術は、装置であって、
第1のクロックドメインで動作する第1の部分と、第2のクロックドメインで動作する第2の部分とを備え、
第1の部分が、第1の主インタフェースおよび第1の冗長インタフェースを備え、第1の主インタフェースが、主信号を受信するように構成されており、第1の冗長インタフェースが、第1のチェック信号を受信するように構成されており、第1のチェック信号と主信号が、所定の時間遅延だけ離され、
第2の部分が、第2の主インタフェースおよび第2の冗長インタフェースを備え、第2の主インタフェースが、主信号を出力するように構成されており、第2の冗長インタフェースが、第2のチェック信号を出力するように構成されており、
装置が、第2のクロックドメイン内にチェック回路を備え、チェック回路が、
主信号に基づいて第2のチェック信号を生成し、
第1のチェック信号および第2のチェック信号に基づいてエラーチェック手順を実行し、
主信号が第2の主インタフェースに供給されてから所定の時間遅延の後に第2のチェック信号を第2の冗長インタフェースに供給する
ように構成されている装置を提供する。
【0004】
別の観点から見ると、本技術は、第1のクロックドメインで動作する第1の部分と第2のクロックドメインで動作する第2の部分との間で主信号を伝送するための方法であって、方法が、
第1の部分の第1の主インタフェースで主信号を受信し、第1の部分の第1の冗長インタフェースで第1のチェック信号を受信するステップであって、第1のチェック信号と主信号が、所定の時間遅延だけ離されているステップと、
第2の部分の第2の主インタフェースで主信号を出力し、第2の部分の第2の冗長インタフェースで第2のチェック信号を出力するステップであって、第2のクロックドメイン内のチェック回路が、
主信号に基づいて第2のチェック信号を生成し、
第1のチェック信号および第2のチェック信号に基づいてエラーチェック手順を実行し、
主信号が第2の主インタフェースに供給されてから所定の時間遅延の後に第2のチェック信号を第2の冗長インタフェースに供給する
ように構成されているステップと
を含む方法を提供する。
【0005】
さらなる観点から見ると、本技術は、集積回路の複数のノード間でデータ伝送を実現するための相互接続ネットワークの設計を表す電子設計ファイルを生成するコンピュータ実施方法であって、方法が、
複数のノードが、第1のクロックドメインで動作する第1のノードと第2のクロックドメインで動作する第2のノードとを含むことの特定に応答して、相互接続ネットワークがクロックドメインクロッシングを備えることを指定する電子設計ファイルを生成するステップであって、クロックドメインクロッシングが、
第1のクロックドメインで動作する第1の部分と、第2のクロックドメインで動作する第2の部分とを備え、
第1の部分が、第1の主インタフェースおよび第1の冗長インタフェースを備え、第1の主インタフェースが、主信号を受信するように構成されており、第1の冗長インタフェースが、第1のチェック信号を受信するように構成されており、第1のチェック信号と主信号が、所定の時間遅延だけ離され、
第2の部分が、第2の主インタフェースおよび第2の冗長インタフェースを備え、第2の主インタフェースが、主信号を出力するように構成されており、第2の冗長インタフェースが、第2のチェック信号を出力するように構成されており、
装置が、第2のクロックドメイン内にチェック回路を備え、チェック回路が、
主信号に基づいて第2のチェック信号を生成し、
第1のチェック信号および第2のチェック信号に基づいてエラーチェック手順を実行し、
主信号が第2の主インタフェースに供給されてから所定の時間遅延の後に第2のチェック信号を第2の冗長インタフェースに供給する
ように構成されているステップを含むコンピュータ実施方法を提供する。
【0006】
本技術のさらなる態様、特徴、および利点は、添付の図面と併せて読まれるべきである以下の例の説明から明らかになろう。
【図面の簡単な説明】
【0007】
【
図1】少なくとも1つの相互接続部を有するデータ処理システムの例を示す。
【
図2】
図1の例のシステム相互接続部として機能するネットワークオンチップの例を示す。
【
図4】クロックドメインクロッシングのさらなる例を示す。
【
図5】クロックドメイン境界を越えて信号を伝送するためのシステムの例を示す。
【
図6】クロックドメイン境界を越えて信号を伝送するためのシステムのさらなる例を示す。
【
図7】異なるクロック周波数または位相を有するクロックドメイン間で信号を伝送する方法を示す流れ図である。
【
図8】相互接続部の設計を表す電子設計ファイルを生成する方法を示す流れ図である。
【
図9】相互接続ネットワークを含む集積回路の設計および製造を概略的に示す。
【発明を実施するための形態】
【0008】
集積回路の機能的安全性は、ロックステップでコンポーネントを動作させることによって向上させることができ、その場合、コンポーネントは、主コンポーネント間で送信される信号と、冗長コンポーネント間で送信される対応する信号との間の固定時間遅延を用いて冗長的に動作され、エラーをチェックするために主信号および冗長チェック信号は複製されて互いに比較される。主コンポーネントと冗長コンポーネントとの間の固定された時間的遅延はゼロであってもゼロでなくてもよい。ゼロでない遅延は、エラーに対するロバスト性を向上させることができる。なぜなら、主信号にエラーを発生させる、特定の時間のイベントがチェック信号にも同じエラーを発生させるまたはその逆である可能性は低いからである。しかしながら、場合によっては、固定時間遅延がゼロであっても、一部の用途に必要な機能的安全性の一部の等級に準拠するのに十分なエラー検出率を実現することができる。
【0009】
しかしながら、このような安全機能を複数のクロックドメインを有するシステムで実施することは困難であり得る。これらのシステムでは、「クロックドメイン」は、単一のクロック信号を使用するコンポーネントの集合であり得るものであり、異なるクロック周波数および/または位相を有するクロックを使用し得る2つのクロックドメイン間の境界は、クロックドメイン境界と呼ばれる。実際、一部の例では、集積回路内に冗長論理を実装することが原因でクロックドメインクロッシングが必要になり、追加の冗長コンポーネントが原因で回路の面積が増大するため、回路の所与の部分をカバーするために必要なクロックドメインのサイズを単一のクロック信号で維持することは実際的ではなくなり得る。したがって、異なる部分が同じ周波数で動作するように意図されていたとしても、それらは、それにもかかわらず異なる位相クロックを有する場合がある。
【0010】
いずれの場合も、主信号および対応するチェック信号(冗長信号)が、クロックドメインクロッシングを介してクロックドメイン境界を越えて伝送されるとき、元の信号と、チェックのためのその冗長対応物との間の固定された時間的遅延を維持することはより困難であり得る。このため、第2のクロックドメインのロックステップメカニズムはそれほど有効ではなくなる。なぜなら、第1のドメインからの伝送に対して第2のドメインで信号がサンプリングされるタイミングの不確実性により、主信号と正しい冗長信号との信頼できる比較を行うことがより困難になり得るからである。
【0011】
複数のクロックドメインを有する集積回路では、第1のクロックドメインと第2のクロックドメインとの間でクロック周波数、クロック位相、またはこれら両方がずれている場合にこれら2つのクロックドメイン間で信号を伝送するためにクロックドメインクロッシング(CDC)を設けることができる。一部の例では、第1のクロックドメインおよび第2のクロックドメイン内のクロック信号は互いに独立して生成される。他の例では、両方のクロック信号を共通のクロック信号から生成することが可能であり、この場合、クロックツリー(単一の共通クロック信号から生じる一群のクロック信号)の実用的な実現により、信号の一方または両方は、位相または周波数のいずれかがそれらの間で異なるように変更されることになる。
【0012】
装置(例えば、集積回路のためのCDC)は、信号を受信する、第1のクロックドメイン内の第1の部分と、信号を出力する、第2のクロックドメイン内の第2の部分とを含むことができる。本技術の第1の例示的な構成によれば、第1の部分には、第1の主インタフェースおよび第1の冗長インタフェースがある。第1の主インタフェースは、主信号を受信するように構成され、第1の冗長インタフェースは、第1のチェック信号を受信するように構成される。第1のチェック信号は、主信号が受信されてから所定の時間遅延の後に受信され、例えば、遅延は、第1のクロックドメインおよび第2のクロックドメイン内で実施されるロックステップ冗長メカニズムに従って選択される。第1のチェック信号は、主信号に冗長性を提供し、主信号またはチェック信号自体のいずれかの障害を特定するために集積回路のさらに下流で主コンポーネントと比較することができる。
【0013】
第2の部分には、第2の主インタフェースおよび第2の冗長インタフェースがある。第2の主インタフェースは、主信号が下流コンポーネントによって使用され得るように主信号を出力するよう構成され、第2の冗長インタフェースは、主信号またはチェック信号自体のいずれかのエラーをチェックするために下流コンポーネントによって使用される第2のチェック信号を出力するように構成される。
【0014】
また、第2のクロックドメインには、主信号がクロックドメイン境界を越えた後に主信号に基づいて第2のチェック信号を生成するように構成されたチェック回路がある。チェック回路はまた、第1の冗長インタフェースから第1のチェック信号を受信し、第1のチェック信号または主信号のいずれかに1つ以上のエラーが存在するかどうかを判定するために第1のエラーチェック信号および第2のエラーチェック信号に基づいてエラーチェック手順を実行する。第2のエラーチェック信号は、所定の時間遅延に等しい時間遅延の後に第2の冗長インタフェースに提供される。所定の時間遅延は、一部の例ではゼロである所定の時間遅延を含む任意の適切な期間とすることができることが理解されよう。
【0015】
したがって、下流クロックドメインでロックステップメカニズムに使用される固定時間遅延は、チェック回路において主信号から第2のチェック信号を生成し、主信号と第2のチェックとの間に予期された時間遅延を導入することによって第2のクロックドメインで再現される。これにより、クロックドメイン境界が、第1のクロックドメインから受信される信号のサンプリングタイミングの不確実性の原因になったとしても、第2のクロックドメイン内の下流回路には、予期された時間遅延によって離された主信号および(第2の)チェック信号を提供することが可能になる。したがって、ロックステップエラーチェックメカニズムは、クロックドメイン境界を越える信号において実施することができ、これにより、システムの機能的安全性が向上する。
【0016】
しかしながら、この手法は直観に反する。なぜなら、第2のチェック信号が、クロックドメイン境界を越えた後の主信号に存在するエラーを潜在的に含み、したがって、エラーを下流コンポーネントによって特定することが妨げられるからである。しかしながら、第1のチェック信号および第2のチェック信号に基づいてエラーチェック手順を実行することによって、チェック回路は、いずれかのチェック信号に存在するエラーを特定することができる。したがって、第1のクロックドメインにおいて主信号または第1のチェック信号の伝送中にエラーが発生したかどうかの指示を提供することができる。エラーが検出された場合、障害処理応答(データの再伝送の要求など)をトリガすることができる。
【0017】
一部の例では、第2の主インタフェースおよび第2の冗長インタフェースは、独立した同期クロックで動作するように構成され、つまり、第2の主インタフェースおよび第2の冗長インタフェースは、独立したクロック信号を使用して動作するが、これら2つのクロック信号の周波数および位相は同じである。これは、独立した同期クロックで同様に動作することができる第1の主インタフェースおよび第1の冗長インタフェースにも当てはまる(ただし、第1の主/冗長インタフェースに使用されるクロックは、第2の主/冗長インタフェースに使用されるクロックと同期しない)。これにより、主信号とチェック信号との間の遅延を主/冗長インタフェースで維持することが可能になる。なぜなら、遅延が、2つの信号間のクロックサイクルの数に基づき、所与のクロックドメイン内の主/冗長インタフェースの両方が同期クロックで動作するからである。
【0018】
装置(CDC)はまた、第1のクロックドメイン内の遅延バッファおよび第2のクロックドメイン内のチェック回路内の比較バッファを含むことができ、遅延バッファは、第1のチェック信号を記憶するように構成され、比較バッファは、第2のチェック信号を記憶するように構成される。チェック回路は、エラーチェック手順を実行する比較回路も含む。遅延バッファおよび比較バッファはそれぞれ、それぞれのチェック信号を比較回路に送る前にそれぞれのチェック信号を記憶するように構成される。これらのバッファは、比較のために比較回路に信号を供給するタイミングを、第1のドメインにおける信号に対して第2のドメインにおいて信号がサンプリングされる相対的なタイミングから切り離すことを可能にし、対応する信号をドメイン境界を越えて互いに比較することができるようにする。
【0019】
比較回路は、例えば、2つのチェック信号の比較を実行し、それらの間に不一致がある場合にエラー処理応答をトリガすることによって、障害に関してチェック信号をチェックすることができるメカニズムを提供する。比較回路は、2つのチェック信号の比較を実行するように構成された任意の回路または論理とすることができる。一部の例では、遅延バッファおよび比較バッファは、先入れ先出し(FIFO)バッファであり、遅延バッファは、トランスペアレントFIFO(場合によってはスキッドFIFOとして知られる)とすることができ、比較バッファは、比較FIFOとすることができる。また、他の形態のバッファが使用されてもよい。
【0020】
遅延バッファは、第2のチェック信号が第1のチェック信号との比較に利用可能であることを示す信号が比較バッファから受信されるまで第1のチェック信号を記憶するように構成することができ、遅延バッファは、比較バッファからの信号に応答して第1のチェック信号を出力する。これにより、2つのエラー信号のうちの一方のみが提供されることに起因して比較回路が早まって障害を特定することがないことが保証される。なお、これは、2つのクロックドメインの位相および/もしくは周波数間の不一致に起因して、または伝送において特定の信号が失われることになり得る、データ伝送中に発生する何らかの形の制御エラー(信号がルーティングされる場所を制御する制御信号に発生するエラーなど)に起因して発生し得る。
【0021】
一部の例では、比較バッファは、比較バッファ内のすべてのエントリが利用不可能である(例えば、すべてのエントリが比較を待つ信号で占有されている)ときに「フル」信号を生成して出力するように構成される。場合によっては、フル信号は、エラー処理応答をトリガし、エラー処理応答は、チェック回路によるエラーチェック手順の実行の阻止、データの下流伝送の阻止、および/または安全な状態からシステムを再起動する役割を果たす別のシステムコンポーネントへのエラーのシグナリングなどを含み得る。一部の例では、利用可能なエントリがないとき、遅延バッファもフル信号を生成する。このようにして、さらなる信号を収容するためのスペースがバッファにない可能性があるため、システムは、さらなる信号の安全な伝送を保証できないことをシグナリングするように、フルである比較バッファに応答する。
【0022】
一部の例では、比較バッファは、少なくとも2つのエントリを含む。多くの場合、2エントリバッファは、クロック境界を越える安全な伝送を可能にするのに十分であり得る。なぜなら、第1のドメインのクロックに対する第2のドメインのサンプリング時間の不確実性は、第2のクロック信号の隣接する2つのクロックサイクルのうちの一方に限定され得るので、比較バッファに記憶されたチェック信号は、たいていの場合、第2のドメインにおける受信の2つのクロックサイクル内で使用され得るからである。2エントリバッファを使用すると、比較バッファを不必要に大きくしなくて済み、その結果、集積回路内の回路面積が節約される。しかしながら、他の例では、チェック信号は、2つのクロックサイクル内で使用することができず、その場合、比較バッファ内に2つより多くのエントリを設けることが好適である。遅延バッファについても同様に考えることができ、遅延バッファも、正確に2つのエントリを含むか、または2つより多くのエントリを含むように設計することができる。
【0023】
一部の例では、第2のチェック信号は、クロックドメイン境界を越えた後の主信号をコピーすることによってチェック回路によって生成される。したがって、主信号は完全に複製され、チェック信号において完全な冗長性が提供される。これにより、主信号と第2のチェック信号とを比較し、それらの間の不一致を特定することによって下流コンポーネントでエラーを簡単に特定することが可能になる。
【0024】
一部の例では、第2のチェック信号は、チェック回路によって、主信号の部分に基づいてエラーチェックコードとして生成され、エラーチェックコードは、それを生成する際に使用された主信号の部分より少ないビットを含む。エラーチェックコードは、例えば巡回冗長チェックもしくは暗号ハッシュ関数などのハッシュ関数、チェックサム、または他の任意の形式のエラーチェック手順を含む任意のエラー検出方式を使用して生成することができる。使用することができるエラーチェックコードの例として、ECC(エラー訂正コード)、DED(二重エラー検出コード)、およびSECDED(単一エラー訂正二重エラー検出)コードも挙げられる。エラーチェックコードが導出される主信号の部分は、一部の例では主信号のビットのすべてであり、他の例では主信号のビットのサブセットのみである。エラーチェックコードを計算するために使用されるビットのサブセットは、他のビットに対する一部のビットの相対的な重要性に基づいて決定されてもよい(例えば、主信号の一部のビットにおけるエラーは、他のビットに対するエラーより損害が少ない場合があるため、他のビットがエラーからのより一層の保護を必要とする場合があり得る)。代わりに、ビットのサブセットは、ランダムに選択されてもよいし、あるいは常に同じビットのサブセット(例えば、常にビット0から4または常にビット5から8)であってもよい。あるいは、主信号の一部のビットは、他の安全メカニズムによって既に保護されており、したがってエラーチェックコードに含めるために選択されない場合がある。
【0025】
同様に、第1のクロックドメイン内の上流回路から受信される第1のチェック信号は、主信号の完全に複製されたバージョン、または主信号の部分に基づくエラーチェックコードのいずれかであり得る。
【0026】
上記のような主信号はデータ伝送であり得る。データ伝送は、上流のマスタデバイスから下流のメモリコンポーネントもしくは周辺機器に送信される、読み出されるもしくは書き込まれるアドレス指定可能な場所のアドレスを指定するメモリアクセス要求であり得るか、または下流コンポーネントから上流のマスタデバイスへのもう一方の方向に送信される、このようなメモリアクセス要求に対する応答であり得る。データ伝送の別の例は、コヒーレンシメッセージ、または必ずしも応答を必要としなくてもよい他のタイプのトランザクションである。特に、上で説明したように従来のエラー保護方式が有効ではあり得ない場合にクロックドメイン境界を越えるとき、集積チップ内の上流コンポーネントと下流コンポーネントとの間のデータ伝送をエラーから保護することがしばしば望ましい。したがって、本技術をこのようなデータ伝送に適用することは好適である。データ伝送は、通常、システム内またはシステム外の記憶場所に記憶され、システム内のコンポーネントによって計算に使用され、またはシステムによって出力される、システム内のコンポーネント間で送られる複数のデータビットのストリングである。
【0027】
下流バッファの予期占有率に応じて、上流バッファからのデータ伝送の伝送タイミングを制御するために、下流バッファから上流バッファにクレジットリターン信号を伝送することは有用であり得る。このような上流/下流バッファは装置(CDC)自体の内部になくてもよく、集積回路の別の部分にあってもよいことに留意されたい。例えば、下流バッファは、メモリコントローラなどのメモリシステムコンポーネント内のバッファとすることができ、上流コンポーネントは、キャッシュコントローラの一部、コヒーレント相互接続部、またはCDCを含む相互接続ネットワークのための入力ポートとすることができる。上記の装置は、クレジットリターン信号を伝送するためにクレジットリターン経路を含むことができ、クレジットリターン経路は、システムが、下流バッファ内にデータのための十分なスペースがあるときにのみデータ伝送が伝送されることを保証することを可能にする。
【0028】
クレジットリターン信号は、上流バッファ内のクレジットプールをインクリメントまたはデクリメントすることによってデータ伝送のタイミングを制御することができる。例えば、上流バッファが、伝送が下流バッファに送信されるたびにカウンタをインクリメントするように構成されている場合、上流バッファは、カウンタがあるしきい値に達したときに下流へのデータ伝送の送信を停止するように構成することができる。クレジットリターン信号は、バッファ内のスペースが利用可能になったときに下流バッファによって上流に伝送され、上流バッファ内のカウンタの一回のデクリメントをトリガすることができる。したがって、上流バッファは、下流バッファ内で利用可能であると予期されるスペースを動的に追跡し続け、これにより、下流に十分なスペースがあるときにのみデータ伝送が送信される。
【0029】
装置がクレジットリターン経路を含む例では、上述の主信号は、クレジットリターン信号であり得る。したがって、クレジットリターン信号は、上記の方法でエラーから保護することができる。
【0030】
あるいは、主信号がデータ伝送である場合、装置は、それでもクレジットリターン経路を含むことができ、クレジットリターン経路も、それがクロックドメイン境界を越えるときにロックステップエラー検出方式に従うことができる。この場合、反対方向(下流への方向ではなく上流への方向)でも、同様の装置をクレジットリターン経路に適用することができる。これにより、両方の信号がクロックドメイン境界を越えるときにも、ロックステップの冗長性を使用してデータ伝送とクレジットリターン信号の両方をエラーから保護することが可能になる。
【0031】
上記のクレジットリターン経路は、第2のクロックドメインから第1のクロックドメインにクレジットリターン信号を伝送することができる。言い換えれば、第2のクロックドメインは、下流クロックドメインであり、第1のドメインは、上流クロックドメインであり、クレジットリターン信号は、下流クロックドメインから上流クロックドメインに伝送される。
【0032】
クレジットリターン信号はまた、一部の例では、クレジットリターン信号を一意に識別する1つ以上のビットとすることができる第1のクレジットリターン信号識別子を含むことができる。装置(CDC)はまた、第2のクレジットリターン信号識別子を含む冗長クレジットリターン信号を伝送するための冗長クレジットリターン経路を含むことができる。冗長クレジットリターン信号は、元のクレジットリターン信号に基づいて生成され、一部の例では、クレジットリターン信号をコピーすることによって生成される。そのとき、クレジットリターン信号または冗長クレジットリターン信号のいずれかにエラーが存在することを検出するために第1のクレジットリターン信号識別子と第2のクレジットリターン信号識別子とを比較するクレジット比較器を第1のクロックドメイン内に設けることができる。これは、(対応するデータ伝送に対して提供されるロックステップチェックに加えて)クレジットリターン信号を保護するために追加のロックステップメカニズムの適用を必要としない、クレジットリターン信号のエラー検出の有効な代替技術を提供する。代わりに、各クレジットリターン信号に関連する識別子の使用により、クレジットリターン信号と冗長クレジットリターン信号との間の固定遅延は不要になる。なぜなら、比較される関連するリターン信号をそれらの識別子から識別することができるからである。このため、クロックドメイン境界を越えてもロックステップタイミングの確実性を保証するためにデータ伝送経路上に設けられるものと同様の、クレジットリターン経路上の対応するチェック回路は不要になる。
【0033】
クレジットリターン信号識別子は、利用可能になった下流バッファ内の特定のエントリのエントリ識別子とすることができる。これは、クレジットリターン信号に識別子を提供するための簡単な技術を提供する。
【0034】
本技術による装置は、クロックドメイン境界を越えて信号を伝送するように構成された、第1のクロックドメインと第2のクロックドメインとの間の多数のクロックドメインブリッジを含むことができる。特に、装置は、第1のクロックドメインから第2のクロックドメインに主信号を伝送するための第1のクロックドメインブリッジと、第1のクロックドメインから第2のクロックドメインに第1のチェック信号を伝送するための冗長クロックドメインブリッジとを含むことができる。クロックドメインブリッジは、境界を越えて信号を伝送するための簡単ですぐに利用可能なハードウェアコンポーネントを提供する。このようなブリッジに加えて、上述のチェック回路を追加することで、ロックステップの固定タイミングを第2のクロックドメインで再現することができる。
【0035】
エラーチェック回路によって適用される、本技術によるエラーチェック手順は、第1のチェック信号と第2のチェック信号とを比較すること、および2つの信号間に差があるときにエラー指示を返すことを含むことができる。これにより、単純なビットごとの比較を使用してチェック信号のエラーを特定するための迅速で容易な方法が提供される。
【0036】
CD、DVD、フラッシュメモリドライブ、ハードディスクドライブ、または任意の他の形態の非一時的記憶媒体など、上述のような装置の電子設計ファイルを記憶することができる記憶媒体を提供することができる。電子設計ファイルは、そのような装置の設計を表し、装置の物理的形態を製造するための製造設備に設計ファイルが供給されたときに、対応する装置を作るために使用することができる。
【0037】
ネットワークの2つ以上のノードが、ずれた位相および/または周波数を有する互いに異なるクロックドメインで動作しているとの判定に応答して、統合ネットワークの複数のノード間でデータ伝送を実現するための相互接続ネットワークの設計ファイルを生成するコンピュータ実施方法を提供することができる。設計された相互接続ネットワークは、上述のような装置を含むことができる。
【0038】
一部の例では、上記のコンピュータ実施方法を実行するようにデータ処理装置を制御するためのコンピュータプログラムを記憶する非一時的記録媒体を提供することができる。
【0039】
図1は、要求ノードと宛先ノードとの間でデータアクセス要求をルーティングし、このようなデータアクセス要求に対する応答を宛先ノードから要求ノードにルーティングするためのデータアクセスルーティング回路4、6を有するデータ処理システム2(例えば、集積回路またはシステムオンチップ)の例を概略的に示す。この例では、システム2は、1つ以上の中央処理装置(CPU)7またはCPUのクラスタ、グラフィック処理装置(GPU)8、ユニバーサルシリアルバス(USB)を介してデバイスとのやりとりを制御するためのUSBマスタ10、PCI Expressバスを介してシステム2に接続された装置とのやりとりを制御するためのPCIeコントローラ12、デジタル信号プロセッサ(DSP)14、表示コントローラおよび/または画像信号プロセッサ16、ビデオコントローラ18、直接メモリアクセス動作の制御、暗号化もしくは他のオンチップセキュリティ動作などのセキュリティ動作の制御、または周辺機器とのやりとりの制御などの多数のシステム制御機能を提供することができるシステムコントローラ20、ならびにモデムを介した通信を制御するためのモデムシステムコントローラ22など、多数のマスタデバイスを含む。マスタ7~22のすべては、システムの宛先ノードによってサービスされるべきデータアクセス要求を発行するための要求ノードとして機能することができる。
【0040】
システムは、例えば、ダイナミックランダムアクセスメモリ(DRAM)へのアクセスを制御するための多数のメモリコントローラ26、スタティックランダムアクセスメモリ(SRAM)へのアクセスを制御するためのメモリコントローラ28、読み出し専用メモリ(ROM)へのアクセスを制御するためのメモリコントローラ30、フラッシュメモリへのアクセスを制御するためのフラッシュメモリコントローラ32、周辺デバイスへのアクセスを制御するための周辺機器コントローラ34、およびネットワークインタフェースを介して遠隔デバイスまたはさらなる周辺機器とのやりとりを制御するためのネットワークインタフェースコントローラ36を含む、宛先ノードとして機能することができる多数のコンポーネントを有することができる。また、宛先ノードは、データルーティング回路4、6内にシステムキャッシュ38を含むことができ、システムキャッシュ38は、メモリシステム26~36からの何らかのデータをキャッシュすることができ、このため、何らかのデータアクセス要求を下流のメモリコンポーネントに送る必要なく、何らかのデータアクセス要求にサービスすることができる。
【0041】
図1の例では、マスタの一部7、8は、各マスタのキャッシュによって保持されているキャッシュデータ間のコヒーレンシを管理する役割を果たすキャッシュコヒーレント相互接続部4を介して結合される。キャッシュコヒーレント相互接続部は、特定のマスタのキャッシュにキャッシュされたデータを追跡するためのスヌープフィルタ40を有することができ、他のマスタにキャッシュされたターゲットアドレスに関連するデータのコヒーレンシ状態をチェックするスヌープトランザクションを発行することによってターゲットアドレスを指定する読み出しおよび書き込みデータアクセス要求に応答することができ、このため、あるマスタが、データへの読み出しまたは書き込みアクセスを要求した場合、別のマスタのキャッシュ内の同じアドレスのデータを無効にすることができ、または、ダーティな場合、当該の他のマスタのキャッシュ内の最新値を、要求マスタに提供するおよび/またはメモリシステムに書き戻すことができる。キャッシュコヒーレント相互接続部4には、任意の既知のコヒーレンシプロトコルを使用することができる。
【0042】
他のマスタ10~22(キャッシュを備えくてもよい)は、キャッシュコヒーレント相互接続部4を介して接続する必要はない。システム相互接続部6は、キャッシュコヒーレント相互接続部4および非キャッシュマスタ10~22の出力と各宛先デバイス26~36とを結合する。システム相互接続部6は、要求によって指定されたターゲットアドレスに基づいて選択されたターゲット宛先ノードへのトランザクションのルーティングおよび要求ノードへの応答のルーティングに使用される。
図1に示す配置では、システム相互接続部6は、各マスタのキャッシュデータ間のコヒーレンシを管理する役割を果たす必要はない。しかしながら、他の例では、
図1に示すように別々のキャッシュコヒーレント相互接続部4およびシステム相互接続部6を設ける代わりに、マスタデバイスおよびスレーブデバイスのそれぞれを接続し、キャッシュコヒーレンシも管理する、システム相互接続部6と同様の単一の相互接続部を設けることができる。
【0043】
この例では、システム相互接続部6は、多数のマスタインタフェース46(各マスタデバイス7~22からの、読み出し要求および書き込み要求を含むデータアクセス要求はこれらから受信することができる)と、多数の宛先インタフェース48(各宛先デバイス26~36に対して要求を出力するための)とを結合するための多数のルータ44を備えるネットワークオンチップ(NoC)として実施される。各マスタインタフェース46(入口ポート、IP、またはソースエンドポイントとしても知られる)は、データアクセス要求にサービスすべき選択された宛先ノードに関連する宛先インタフェース48に到達するようにルータ44を経由してネットワークオンチップ6を通るとられるべき特定のルートを特定するために、データアクセス要求によって指定されたアドレスを復号する役割を果たす。場合によっては、マスタインタフェース46は、ネットワークオンチップ6にアサートされた要求に使用されたプロトコルを、ネットワークオンチップ6を通る要求をルーティングするために使用される内部表現に変換することもできる。要求が内部プロトコルに変換される場合、宛先インタフェース48(出口ポート、EP、または宛先エンドポイントとしても知られる)は、宛先によるサービス提供のためにそれらを、要求によって使用された元のプロトコルに変換することができる。あるいは、宛先ノードの一部は、宛先インタフェースで変換を必要としないようにするために、ネットワークオンチップ6によって使用された形式で要求を直接処理してもよい。各宛先インタフェース48に関しては、各宛先インタフェース48が、宛先ノード26~36からデータアクセス要求に対する応答を受信すると、宛先インタフェース48は、対応する要求によってとられた経路に沿ってこの応答を、その要求を発行したマスタインタフェース46に発行し、次に、マスタインタフェース46は、この応答を要求ノードに返す。
【0044】
図1に示すようなネットワークオンチップ6は、接続されるべき多数のマスタデバイスおよび宛先デバイスがあるときに有用であり得る。なぜなら、ルータ44の配置は、適切なレベルの帯域幅を提供し、チップにおいて要求をルーティングする必要がある物理的な距離に、信号遅延を大幅に増加させることなく対応することができる十分な数のルータを提供するために、所与のシステムの要件に合わせて特注設計することができるからである。大量のトラフィックを必要とすることが予期される要求ノードと宛先ノードの対については、そのとき、それらの間に追加のルータまたは信号チャネルを設けることができるが、他の要求ノード/宛先ノードの対は容量が少なくてもよい。
【0045】
一部の例では、ネットワークオンチップは、メッシュトポロジを有することができ、各インタフェース46、48は、グリッド上のポイントに接続され、要求および応答は、対応するマスタインタフェース46および宛先インタフェース48に関連するグリッド上のポイント間を行き来することができる。他のNoCトポロジも可能である。
【0046】
しかしながら、ネットワークオンチップの使用は必須ではなく、他の例では、異なるトポロジを、システム相互接続部6内で使用することができる。例えば、マスタインタフェースと宛先インタフェースとの間の一連のポイントツーポイント接続を使用することができ、または、すべての要求が、リングバス上にアサートされ、次に、要求されたターゲットインタフェースに到達するまで巡回するリングトポロジを使用することができる。しかしながら、ネットワークオンチップの使用は、マスタおよび宛先の数が増加するにつれて、より良いスケーリングを可能にする。
【0047】
図1は、集積回路内のマスタデバイスとスレーブデバイスとの間で信号をルーティングするためのネットワークの例を示しているが、他の例では、相互接続部によって接続されるデバイスは、マスタ-スレーブ関係を有さなくてもよく、その代わりに、デバイスは、ピアツーピア接続によって接続されてもよい。また、一部の例では、ネットワークによってルーティングされる一部の要求は、相互接続部の外の宛先ノードをターゲットとするのではなく、コヒーレンシポイントまたはキャッシュなど、相互接続部自体の中の宛先ノードをターゲットとしてもよい。
【0048】
図2は、ネットワークオンチップ(NoC)6のコンポーネントの例をより詳細に示す。NoC6は、NoC6によって接続されるべきマスタデバイスおよび宛先デバイスの特定の配置に応じて異なるレイアウトおよび配置で組み合わせることができる多数のコンポーネントを備える。例えば、これは、以下のコンポーネントのいずれかを含むことができる。
【0049】
入口ポート(ソースエンドポイント)46
入口ポートは、入口ポートに結合されている要求ノードからデータアクセス要求を受信する。例えば、入口ポートは、
図1に示されているマスタインタフェース46のうちの1つとして機能することができる。入口ポート46は、要求を処理するためにどの出口ポート48を選択すべきかを特定するために、要求ノードから受信したデータアクセス要求によって指定されたターゲットアドレスを復号することができ、NoCを通る要求の、選択された出口ポート48へのルーティングを制御するためのルーティング情報を生成する。また、NoC6内でルーティングされる要求は、データアクセス要求に関して要求ノードによって使用されたプロトコルとは異なるプロトコルを使用する場合があるため、入口ポートは、要求を、ネットワークで使用されるトランスポートプロトコルに変換するためのプロトコルアダプタ50を含むことができる。入口ポート46は、要求に対応するネットワークパケットがどのようにNoCを通ってルーティングされるべきかを特定するルーティング情報を伴って、変換されたパケットをネットワークに伝送する。入口ポート46はまた、ネットワークの帯域幅に対する異なるマスタデバイスの競合するニーズをバランスさせために、特定の要求に対するリソース割り当ての管理および異なるソースからの要求に対して提供されるサービス品質レベルの制御などの他の機能を提供することができる。例えば、入口ポート46は、要求に関する追跡情報をバッファリングし、要求に対する応答をバッファリングするための様々なバッファを有することができる。入口ポート46は、バッファ内のスペースの利用可能性に基づいて、およびサービス品質要件に基づいて、リソースの割り当ておよび要求の発行を制御することができる(例えば、所与の時点で保留になり得る現在未処理のトランザクションの数に制限を設ける、または所与の期間内にサービスされる所与の要求モードからのトランザクションの数に制限を設ける)。
【0050】
ルータ54
各ルータ54は、対応する要求が発信された入口ポート46によってパケットに追加されたパケットによって指定されたルーティング情報に基づいて、NoC6の1つのコンポーネントから受信したパケットをルーティングし、パケットを他のどのコンポーネントに送るべきかを選択する役割を果たす。設けられるルータ54の特定の配置および数は、特定のシステム要件に依存し得る。例えば、入口ポートと出口ポートが、集積回路において大きな距離で離れている場合、パケットがそれらの宛先に到達したときに信号レベルを維持するためにパケットの十分な繰り返しを提供するためにより多くのルータが必要となり得る。また、ルータが接続されているトポロジは、ポート46、48の特定の対に対する予期帯域幅要件に基づいて選択されてもよい。
【0051】
出口ポート(宛先エンドポイント)48
出口ポート48は、入口ポート46によって生成され、ルータ54を経由してNoCを通るルーティングされたデータアクセス要求を表すネットワークパケットを受信する。出口ポート48は、ネットワークパケットのトランスポートプロトコルを、出口ポートが接続された宛先ノードによって使用されるプロトコルに変換するためのプロトコルアダプタ58を有する。一部の形式の要求は、宛先ノードからの応答を必要としない場合がある。しかしながら、応答(例えば、読み出し応答、書き込み応答、またはこれら両方)を必要とする要求の場合、データアクセス要求にサービスした宛先ノードから、データアクセス要求に対する応答が受信されたとき、応答を、出口ポート48内のプロトコルアダプタ58によってネットワークのトランスポートプロトコルに適合させ、次に、出口ポート48によってネットワークに出力することができる。場合によっては、応答パケットは、例えば、データアクセス要求パケットによってとられた経路に対応する逆方向の経路または異なる経路に沿って、それらの応答をトリガした元のデータアクセス要求を受信した入口ポート46にルーティングされてもよい。他の場合では、応答パケットは、元の要求を発行した要求ノードとは異なる要求ノードに提供される必要が場合によってはあり得る(例えば、各マスタのキャッシュのコヒーレンシ状態の変化により)ので、異なる入口ポートにルーティングされてもよい。したがって、やはりプロトコルアダプタ58は、応答パケットによってとられるべきルートを指定するルーティング情報を追加することができる。これらの応答パケットが、入口ポート46で受信されると、プロトコルアダプタ50は、それらを、要求ノードによって予期される応答に変換し、それらを要求ノードに転送する。
【0052】
一部の例では、入口ポート/出口ポートの機能は、ネットワークブリッジコンポーネント(2つのネットワーク部分の間の境界にある)で処理されてもよく、これにより、ネットワークブリッジは、少なくともいくつかの目的で入口ポートおよび出口ポートの両方として有効に機能してもよいことに留意されたい。
【0053】
データリサイザ70
あるコンポーネントから別のコンポーネントに提供するときに、ネットワークを介して伝送されるデータ値をリサイズする必要がある場合がある。例えば、より少数のフリットを含むパケットは、より小さなデータサイズのより多数のフリットを含むパケットに分けることができ、または、より小さなフリットを含むパケットは、より大きなサイズのより少数のフリットに結合または再分割されたフリットを有することができる。リサイズが、入力フリット数および出力フリット数が多対一または一対多の関係に従うようなものである場合、
図2に示すように、リサイザ70は、シリアライザ-デシリアライザ(SERDES)として機能してもよい。しかしながら、リサイザが、NとMの両方が1より大きいデータフリットのM:Nリサイズを行うことも可能であり、この場合、特定の入力フリットグループに関連するデータを異なる数の出力フリットに関連するデータにマッピングするために、より一般的なリサイズを提供することができる。一部の実施形態では、ネットワークの残りの部分で伝送されるように、ある数の受信パケットを異なる数のパケットに変換することも可能であり得る。
【0054】
クロックドメインクロッシング(CDC)72
図2に示すように、NoC6は、複数のクロックドメインにまたがることができ、この場合、1つのクロックドメイン内のコンポーネントは、別のクロックドメイン内のコンポーネントを制御するクロックとは周波数および位相の一方または両方で異なるクロック信号に従って動作する。例えば、異なるクロックドメインの各クロック信号は、異なるクロック周波数を有する非同期信号、または同じ周波数を有するが位相がオフセットしているメソクロナスクロック信号であり得る。クロックドメイン境界で、クロックがずれている場合、上流ドメインの信号を下流ドメインの対応する信号経路に単純に接続すると、下流ドメインがソースドメインのクロックに対して間違ったタイミングで信号をサンプリングする危険性が生じる。CDC72については以下でより詳細に説明する。
【0055】
冗長ネットワークコンポーネント
図2に示すように、NoCを通る主ペイロードのルーティングのために主ネットワークを形成するコンポーネント54、70、72に加えて、NoCはまた、主ネットワークの主ネットワークコンポーネントの少なくとも一部を部分的に複製する冗長ネットワークを含む。例えば、
図2において、ネットワークは、主ネットワークの対応するメインルータ54をミラーリングする多数の冗長ルータ54-Rを含む。また、メインネットワークのデータリサイザ70は、対応する冗長ネットワークデータリサイザ70-Rを有することができる。クロックドメインクロッシング72は、メイン信号および冗長信号をクロックドメイン境界を越えてブリッジできるようにするためにその中にメインチャネルと冗長チャネルの両方を有することができるが、CDC72で主ペイロードに対して冗長伝送ペイロードをチェックするクロスチェック回路を含むこともできる。入口ポート46および出口ポート48も複製されない。なぜなら、入口ポート46は、受信ノードから受信した要求を受け取り、それを対応する主ペイロードおよび冗長ペイロードにマッピングする役割を果たし、出口ポート48は、主ペイロードおよび冗長ペイロードから情報を抽出し、この情報を、宛先ノードに伝送される進行中の情報にマッピングするからである。主ネットワーク上を移動する情報を少なくとも部分的に複製する冗長情報を提供する冗長ネットワークを提供することによって、これを、出口ポート48でのエラーチェックに使用して、潜在的に間違った動作の原因となり得る永続的または一時的な障害が主ペイロードまたは冗長ペイロードのルーティング中に発生したかどうかを判定することができる。
【0056】
ネットワークオンチップ6は、
図2に示されていない他のコンポーネントを含むこともできることが理解されよう。
【0057】
機能的安全性の目的で冗長性を実現するための1つの手法は、冗長ネットワークが、主ネットワークのコンポーネントの一部または全部を複製し、主信号と実質的に同一(例えば、主信号または冗長信号のいずれかに存在し得るエラーを除いて同一)である冗長信号が主信号と並行して伝送されるようにルーティングするというものであり得る。冗長信号は、主信号または冗長信号のいずれかに存在するエラーを特定するために、さらに下流のエラーチェック手順で後に使用することができる。この場合、エラーチェック手順は、通常、2つの信号のうちの一方にエラーが存在することを意味する、2つの信号の間の差を特定するために主信号と冗長信号とを比較することを含む。しかしながら、これは、追加の処理論理および回路の面積の点で費用がかさみ得る。なぜなら、各冗長ルータ54-Rおよび他の冗長コンポーネント70-Rを拡張しなければならない可能性があり、典型的なNoCにはこのようなコンポーネントが多いため、これは、回路面積の大幅な増加の原因となり得るからである。代替的でより安価な手法は、チェック信号がチェック信号が導出された主信号の部分より少ないビットを有するように、主信号から導出された他の何らかのチェック信号を主信号と並行して伝送することである。これは、ハッシュ関数(巡回冗長チェックコードもしくは暗号ハッシュ関数を含む)、チェックサム、ECC、DEDもしくはSECDEDコード、または他の形式のエラーチェックコードなどのエラーチェックコードであり得る。この場合、使用されるエラー検出方式のタイプに応じて、チェックコードおよび主信号を使用する異なるエラーチェック手順を適用することができる。
【0058】
いずれの場合も、主信号および冗長信号(または他のチェック信号)は、特定の時点での障害またはイベントが主信号とチェック信号の両方に同じように影響を与える可能性をさらに低減することによってさらなる保護を提供するために、所定の時間遅延によって時間的に分離させる(例えば、チェック信号は主信号に対して遅延させる)ことができる。あるいは、遅延はゼロであってもよい。
【0059】
しかしながら、主信号と冗長信号との間の固定時間遅延に頼ることは、特定のクロック位相および周波数を有する第1のクロックドメインから異なるクロック位相または異なるクロック周波数を有する第2のクロックドメインへクロックドメイン境界を越えるときに複雑さを増加させ得る。2つのクロックドメインにおけるクロック信号の位相または周波数の不一致のために、信号が異なる時間にドメイン境界を越えるときに主信号とチェック信号との間の遅延が歪められ得る。これは、エラー検出方式を無効にし、システムの機能的安全性を損ない得る。
【0060】
図3は、クロック境界を越えてロックステップ冗長システムを使用することで上記の問題を克服する、本技術の例によるCDC72の例示的な構成である。CDC72は、第1のクロックドメイン側の第1の部分74と第2のクロックドメイン側の第2の部分76とを含む。第1の部分74は、主信号を受信するための第1の主インタフェース78と、第1のチェック信号を受信するための第1の冗長インタフェース80とを含む。第1の部分74は、ネットワークルータ54または入口ポート46などの、ネットワークの上流コンポーネントから主チェック信号および第1のチェック信号を受信する。上述のように、第1のチェック信号は遅延されているので、第1のチェック信号は、主信号が第1の部分74で受信されてから所定の時間の後に第1の部分74で受信される。第1のチェック信号は、主信号に基づき、場合によっては主信号をコピーすることによって生成される。他の場合では、第1のチェック信号は、それが導出される主信号の部分より少ないビットを有する、異なる形式のエラーチェックコードであり得る。第1のチェック信号は、主信号が主ネットワークを介して伝送される間に冗長ネットワークを介して伝送することができる。第1の主インタフェース78および第1の冗長インタフェース80を含む第1の部分74はすべて第1のクロックドメイン内にある。
【0061】
第2の部分76は、主信号を出力するための第2の主インタフェース82と、第2のチェック信号を出力するための第2の冗長インタフェース84とを含む。第2のチェック信号は、第1のチェック信号を生成したネットワークコンポーネントで(例えば、メッセージが発信された入口ポート46で)第1のチェック信号を生成するために使用されたのと同様のプロセスに従って、主信号に基づいて第2のクロックドメインで生成される。第1のチェック信号が主信号をコピーすることによって生成された場合、第2のチェック信号も主信号をコピーすることによって生成される。あるいは、第1のチェック信号が、各部分のビット数より少ないビットを有するエラーチェックコードを生成するために何らかの関数を主信号の部分に適用することによって生成された場合、第2のチェック信号も、同じ関数を主信号に適用することによって生成される。
【0062】
また、CDC72では、第2の部分76に、エラー比較器86と第2のチェック信号発生回路88とを備えるチェック回路87がある。エラー比較器86は、第1の冗長インタフェース80からの第1のチェック信号と、第2のチェック信号発生回路88からの第2のチェック信号とを受信し、エラーチェック手順を実行する。第2のチェック信号発生回路88は、多数の方法のうちのいずれかで第2のチェック信号を生成することができる。例えば、第2のチェック信号発生回路88は、主信号と第1のチェック信号との間の所定の時間遅延に等しい時間遅延の後に、遅延した主信号を第2のチェック信号としてエラー比較器86に提供するように構成された時間遅延回路であってもよい。あるいは、第2のチェック信号発生回路88は、例えば巡回冗長チェックもしくは暗号ハッシュ関数などのハッシュ関数、チェックサム、または他の形式のエラーチェック手順を含む任意のエラー検出方式を使用して生成されるエラーチェックコードなどの、異なる形式のエラーチェックコードを生成するように構成されてもよい。いずれの場合でも、第2のチェック信号発生回路88は、所定の時間遅延の後に第2のチェック信号をエラー比較器86に提供するように構成される。
【0063】
エラー比較器86は、第1のチェック信号および第2のチェック信号のいずれかにエラーが存在するかどうかを判定するために、第1のチェック信号および第2のチェック信号に基づいてエラーチェック手順を実行する。エラーチェック手順は、チェック信号の形式および実施されるエラー保護方式によって異なるが、例えば、第1のチェックコードと第2のチェックコードとを比較し、それらの間の差を潜在的なエラーとして特定することを含むことができる。
【0064】
第2の主インタフェース82および第2の冗長インタフェース84、第2のチェック信号発生回路88、ならびにエラー比較器86を含む第2の部分76は、第2のクロックドメイン内にある。したがって、主信号がクロックドメイン境界を越えた後に第2のチェック信号が第2のクロックドメインで生成されるので、第1のクロックドメインおよび第2のクロックドメインにおけるクロックの位相または周波数の差は、主信号と第2のチェック信号との間の時間遅延に影響しない。このようにして、ロックステップ冗長性が、本質的に、後のバージョンの主信号から第2のドメインで再現される(例えば、それがクロックドメイン境界を通過した後に)ことにより、複数のクロックドメインにわたるロックステップ冗長性の実現に関する上記の問題は克服される。さらに、第1のチェック信号および第2のチェック信号を使用してエラーチェック手順を実行するために第2のクロックドメインにエラー比較器86を設けることによって、第2のチェック信号に反映された、主信号に既に存在するエラーが特定される。
【0065】
図4は、CDC72を含む、異なるクロックドメインにおいて、マスタコンポーネント89とスレーブコンポーネント103との間で信号を伝送するためのシステムの例を示す。
図4に示すCDC72は、第1のクロックドメイン内の第1の部分74と第2のクロックドメイン内の第2の部分76とを含む。第1の部分74は、マスタコンポーネント89から主信号を受信し、クロックドメイン境界にまたがる非同期ドメインブリッジ(ADB)90を介して第2の部分76内の第2の主インタフェース82に主信号を伝送するように構成された第1の主インタフェース78を含む。
図4に示す例では、信号は、ハンドシェイクプロトコルに従って伝送される。第1の主インタフェース78から第2の主インタフェース82への主信号の伝送の場合、ハンドシェイクプロトコルは以下の通りである。
1.マスタコンポーネント89内の主論理91は、マスタコンポーネント89が主信号を伝送する準備ができていることを示す「有効」信号(tvalid)をスレーブコンポーネント103内の主論理93に送信する。
2.スレーブコンポーネント103内の主論理93は、スレーブコンポーネント103が主信号を受信する準備ができていることを示す「レディ」信号(tready)をマスタコンポーネント89内の主論理91に送信する。
3.マスタコンポーネント89内の主論理91は、主信号をスレーブコンポーネント103に送信する(tdata)。
【0066】
このような有効-レディハンドシェイクは必須ではなく、データが伝送されるタイミングを制御するために他のメカニズムを使用することができることが理解されよう。
【0067】
一部の例では、スレーブコンポーネント103は、それが主信号の受信に成功したことを示す応答信号(図示せず)をマスタコンポーネント89に送信することができる。マスタコンポーネント89はまた、制御信号(tctrl)の形式で制御データをスレーブコンポーネント103に送信する。制御データは、ネットワークにおけるネットワークパケットのルーティングを制御(例えば、ルータの選択またはパケットフォーマッティングを制御)するために使用されるルーティング制御データであり得るため、場合によっては、tdataおよびtctrl信号は一緒に主チャネルにおいて主信号と見なされ得る。有効信号、レディ信号、制御信号、および主信号はすべて、マスタコンポーネント89とスレーブコンポーネント103との間で第1の主インタフェース78および第2の主インタフェース82を介して伝送される。
【0068】
主信号は、有効信号、レディ信号、および制御信号と同様に、第1のクロックドメインと第2のクロックドメインとの間で非同期ドメインブリッジ(ADB)90を介して伝送される。ADB90は、両方のクロック境界にまたがって存在し、第2のクロックドメイン内の「マスタ」側90bと第1のクロックドメイン内の「スレーブ」側90aとを有する。ADB90は、異なるクロック位相、クロック周波数、または電力/電圧要件を有するクロックドメイン間の境界を越えて信号を伝送するように構成される。
【0069】
第1の冗長インタフェース80は、主信号が第1の主インタフェース78によって受信されてから所定の時間の後にマスタコンポーネント89から第1のチェック信号を受信し、それをCDC72の第1の部分74に設けられた遅延バッファ92に伝送するように構成される。第1のチェック信号は、上記したものと同様のハンドシェイクプロトコルを使用して遅延バッファ92に伝送される。
1.マスタコンポーネント89内の冗長論理105は、ANDゲート94を介して有効信号(tvalid)を遅延バッファ92に送信する。
2.スレーブコンポーネント103内の主論理93から第1の冗長インタフェース80を介してマスタコンポーネント89に送信されたレディ信号のコピーは、時間遅延回路96を介してANDゲート94とマスタコンポーネント89内の冗長論理105の両方に伝送される。時間遅延回路88は、第1の部分74における主信号の到着と第1のチェック信号の到着との間の所定の時間に等しい時間遅延を挿入し、レディ信号が、第1の冗長インタフェース80が第1のチェック信号を受信するまで第1の冗長インタフェース80によって受信されないことを保証する。
3.マスタコンポーネント89内の冗長論理105がレディ信号を受信すると、それは第1の冗長インタフェース80を介して第1のチェック信号を遅延バッファ92に送信する。
4.それが有効信号とレディ信号の両方を受信すると、ANDゲート94は、「プッシュ」信号を生成し、それは、そのデータ入力95に提供される第1のチェック信号値をサンプリングし、それを利用可能なエントリに割り当てるように遅延バッファ92をトリガする。
【0070】
マスタコンポーネント89内の冗長論理105はまた、制御信号(tctrl)の形式の制御データを遅延バッファ92(これも第1のチェック信号の一部と見なすことができる)に送信し、遅延バッファ92は、それがフルである場合(例えば、遅延バッファ92に利用可能なエントリがない場合)、「フル」信号(ADBエラー)を生成するように構成される。
【0071】
この例では、遅延バッファ92は、先入れ先出し(FIFO)バッファ、特にトランスペアレントFIFOであり、第2のチェック信号が第1のチェック信号との比較の準備ができているという指示をそれがエラー比較器86(CDC72の第2の部分76に設けられた)から受信するまで第1のチェック信号を記憶するように構成される。遅延バッファ92内のエントリの数は、第2のクロックドメインにまだ伝送されていないチェック信号でそれが埋められることを防止するのに十分であるべきである(例えば、ほとんどの場合、2エントリで十分である)。遅延バッファ92は、ハンドシェイクプロトコルを使用して、ADB98を介してエラー比較器86に第1のチェック信号を伝送するように構成される。特に、遅延バッファ92は、それがエンプティであるときに、NOTゲート100を通過する「エンプティ」信号を生成し、NOTゲート100は、エラー比較器86およびANDゲート102に伝送される有効信号(tvalid)を、バッファがエンプティでないときに生成する。エラー比較器86は、応答して、レディ信号(tready)をANDゲート102に伝送するように構成される。ANDゲート102が有効信号とレディ信号の両方を受信すると、第1のチェック信号をエラー比較器86に伝送するように遅延バッファ92をトリガする「ポップ」信号が生成される。遅延バッファ92はまた、エラー比較器86に制御信号(tctrl)を送信する。
【0072】
有効信号、レディ信号、および制御信号ならびに第1のチェック信号はすべて、ADB98を介して遅延バッファ92からエラー比較器86に伝送される。ADB98は、ドメイン境界にまたがり、他のADB90と同じように動作する。ブリッジ90、98は、クロックドメイン境界を越える信号の安全な伝送を提供するためにバッファリングを提供することができるが、それらは、主信号と冗長信号との間に保証された時間遅延を提供することができない可能性がある。
【0073】
第1の主インタフェース78、第1の冗長インタフェース80、遅延バッファ92、時間遅延回路96、ANDゲート94、102、およびNOTゲート100を含む第1の部分74は、第1のクロックドメイン内にある。
【0074】
第2のクロックドメインに設けられた第2の部分76は、第2の主インタフェース82に加えて、第2のチェック信号発生回路88から第2のチェック信号を受信し、主信号が出力されてから上記の所定の時間遅延に等しい時間遅延の後にそれをスレーブコンポーネント103に出力するように構成された第2の冗長インタフェース84を含む。この例では、第2のチェック信号発生回路88は、主信号を受信し、それをエラー比較器86および第2の冗長インタフェース84に伝送する前に所定の時間遅延させることによって第2のチェック信号を生成するように構成された時間遅延回路である(すなわち、時間遅延回路は、主信号を単にコピーしてそれを遅延させる)。
【0075】
図4の例では、エラー比較器86は、比較バッファ104および比較回路106を含む。比較バッファ104(この場合は比較FIFO)は、遅延バッファ92が、第1のチェック信号が比較回路106による第2のチェック信号との比較に利用可能であることを(上記の有効信号と共に)示すまで第2のチェック信号を記憶するように構成される。
【0076】
第2のチェック信号は、以下のようにハンドシェイクプロトコルを使用して第2のチェック信号発生回路88によって比較バッファ104および第2の冗長インタフェース84に伝送される。
1.第2のチェック信号発生回路88は、(主チャネルのtvalid信号に基づいて)有効信号(tvalid)を生成し、それを第2の冗長インタフェース84を介してスレーブコンポーネント103内の冗長論理107およびエラー比較器86内のANDゲート108に送信する。
2.冗長論理107は、ANDゲート108にレディ信号(tready)を送信する。
3.第2のチェック信号発生回路88は、制御信号と共に第2のチェック信号(tdata+tctrl)を第2の冗長インタフェース84および比較バッファ104に送信し、第2の冗長インタフェース84は、第2のチェック信号を冗長論理107に出力する。
4.有効信号とレディ信号の両方がANDゲート108によって受信されると、それは、第2のチェック信号が比較バッファ104のデータ入力109でサンプリングされて比較バッファ104の次のエントリに割り当てられるべきであることを示すプッシュ信号を比較バッファ104内に生成する。
【0077】
比較バッファ104は、バッファ内のすべてのエントリが利用可能になったときにエンプティ信号を生成するように構成される。エンプティ信号は、NOTゲート110に伝送され、NOTゲート110は、比較バッファ104が第2のチェック信号を含むときにレディ信号(tready)を生成する。このレディ信号は、上記のように遅延バッファ92に結合されたANDゲート102に伝送される。レディ信号は、さらなるANDゲート112にも送信され、ANDゲート112は、遅延バッファ92に結合されたNOTゲート100によって生成されたtvalid信号も受信する。ANDゲート112が、有効信号とレディ信号の両方を受信すると、それは、第1のチェック信号および第2のチェック信号が両方とも比較される準備ができていることを示すポップ信号を比較バッファ104内に生成し、比較バッファ104の最も古い有効エントリから第2のチェック信号を比較回路106に出力するように比較バッファ104をトリガする。比較バッファ104はまた、比較バッファ104がフルになったとき(例えば、比較バッファ104内に利用可能なエントリがないとき)にエラー信号(ADBエラー)を生成するように構成される。
【0078】
この例では、比較バッファ104は、先入れ先出し(FIFO)バッファである。比較バッファ104内のエントリの数は、比較回路106にまだ伝送されていないチェック信号でそれが埋められることを防止するのに十分であるべきである(例えば、ほとんどの場合、2エントリで十分である)。
【0079】
比較回路106は、第1のチェック信号および第2のチェック信号のいずれかにエラーが存在するかどうかを判定するために第1のチェック信号および第2のチェック信号に基づいてエラーチェック手順を実行するように構成される。この例において比較回路106によって実行されるエラーチェック手順は、第1のチェック信号と第2のチェック信号との比較である。比較回路106は、2つのチェック信号間に不一致があるときにエラー処理応答をトリガするように構成される。例えば、不一致が検出されたときに生成され得る信号ADB-Asyncエラーは、例えば、主/冗長信号の再伝送を要求する、または動作するようにソフトウェアをトリガすることができる中断もしくは例外もしくは他の障害状態をシグナリングする障害処理応答をトリガすることができる。
【0080】
第2の主インタフェース82、第2の冗長インタフェース84、時間遅延回路88、およびエラー比較器86を含む第2の部分76は、第2のクロックドメイン内にある。
【0081】
図5は、(
図4に示したマスタコンポーネント89を含むことができる)上流コンポーネント114と(
図4に示したスレーブコンポーネント103を含むことができる)下流コンポーネント116との間で主信号が伝送されるシステムの例を示し、この場合、上流コンポーネント114と下流コンポーネント116は異なるクロックドメイン内にある。主信号は、
図3によるCDC72aを介して上流コンポーネント114と下流コンポーネント116との間で伝送される。
【0082】
図5はまた、下流コンポーネント116と上流コンポーネント114との間でクレジットリターン信号を伝送するためのクレジットリターン経路を示し、それは、この場合、さらなるCDC72bの形態である。
【0083】
クレジットリターン信号は、下流コンポーネント116内のスペースの利用可能性を上流コンポーネント114に示す信号であり、下流コンポーネント116内の利用可能なスペースが不十分である場合に、上流コンポーネント114が主信号の伝送を遅延させることを可能にする。クレジットリターン信号は、主信号を保護するために使用されるものと同様のロックステップ冗長手段を使用して保護することができ、そのため、下流クロックドメインから上流クロックドメインへドメイン境界を越えてクレジットリターン信号を伝送するための本技術に従ってさらなるCDC72bを設けることは好適である。クレジットリターン経路を構成するCDC72bは、それが逆にされる点を除いて、クロックドメイン境界を越えて主信号を伝送するためのCDC72aと同一であり、例えば、クレジットリターン信号を保護するCDC72bの第1のクロックドメインは、この場合は下流クロックドメインであり、第2のクロックドメインは、上流クロックドメインである。
【0084】
クレジットリターン信号は、様々な方法で下流コンポーネント116内のスペースの利用可能性を示すことができる。一例では、上流コンポーネント114内の上流バッファは、主信号がバッファから伝送されるたびに値をインクリメントするクレジットカウンタを含む。値が所定の最大値(例えば、下流コンポーネント116内の下流バッファ内の利用可能なスロットの最大数に対応する値)に達すると、カウンタが所定の最大値未満の値に戻るまで上流バッファは主信号の伝送を中断する。上流バッファが、クレジットリターン信号を受信すると、カウンタはデクリメントされ、もう1つのスロットが下流バッファ内で利用可能になったことを示す。このようにして、上流バッファは、下流バッファ内のスペースの利用可能性を動的に追跡する。あるいは、別の例では、上流バッファは、クレジットカウンタの代わりにクレジットプールを含み、そこでは主信号が伝送されるたびに値がデクリメントされる。この場合、値が所定の最小値(例えば、下流バッファ内に利用可能なスロットがないことを示す値、例えば、所定の最小値はゼロであってもよい)に達すると、上流バッファは、主信号の伝送を中断し、クレジットリターン信号は、値をインクリメントするようにクレジットプールをトリガする。
【0085】
図6は、CDC72のさらなる例を示す。
図6では、主信号は、第1の主インタフェース78で受信され、第1のチェック信号は、第1の冗長インタフェース80で受信される。主信号は、入力バッファ118に伝送され、入力バッファ118は、ADB90を介してこの信号を出力バッファ119に伝送する。出力バッファは、主信号を第2の主インタフェース82に伝送し、第2の主インタフェース82は、この信号を様々な下流コンポーネント116(図示せず)に出力する。主信号のコピーも、出力バッファ119から第2のチェック信号発生回路88(この場合は時間遅延回路)に伝送され、第2のチェック信号発生回路88は、第2のチェック信号を生成し、これを第2の冗長インタフェース84および比較バッファ104に出力する。
【0086】
図5と同様に、下流コンポーネント116は、主信号を受信するとクレジットリターン信号を伝送することができる。クレジットリターン信号(credit)は、第2の主インタフェース82で受信され、出力バッファ119に伝送される。出力バッファは、クレジットADB121を介して、一意の識別子(スロットID)と共にクレジットリターン信号を入力バッファ118に伝送する。一意の識別子は、この例では、利用可能になった下流バッファ内のスロットを識別するスロットIDであるが、一意の識別子は、クレジットリターン信号を識別する任意の一意の信号であってもよい。クレジットリターン信号は、次に第1の主インタフェース78に伝送され、クレジットリターン信号のコピーが、一意の識別子と共に時間遅延回路123に送信される。クレジットリターン信号および一意の識別子は、FIFO125に伝送される。
【0087】
多くの状況において識別子が真に一意であることは有用であるが、状況によっては、識別子が許容可能な確率レベル内でクレジットリターン信号を一意に識別することで十分であり、これは、システムの安全性および効率の要件のバランスに依存し得ることに留意されたい。
【0088】
第1の冗長インタフェース80は、第1のチェック信号を受信し、それを冗長入力バッファ127に伝送する。冗長入力バッファ127は、ADB98を介して第1のチェック信号を冗長出力バッファ129に伝送する。次に、第1のチェック信号は、比較回路106に伝送され、比較回路106は、第2のチェック信号を比較回路106に伝送するように比較バッファ104をトリガする。比較回路106は、エラーをチェックするために第1のチェック信号と第2のチェック信号とを比較する。
【0089】
下流コンポーネント116は、上流クロックドメインで元のクレジットリターン信号と比較される冗長クレジットリターン信号(credit’)を伝送することができる。冗長クレジットリターン信号は、第2の冗長インタフェース84によって受信され、冗長出力バッファ129に伝送される。冗長出力バッファ129は、冗長クレジットADB131を介して、冗長識別子(この例ではスロットID)と共に冗長クレジットリターン信号を冗長入力バッファ127に伝送する。冗長入力バッファ127は、冗長クレジットリターン信号および冗長識別子を比較器133に伝送し、比較器133は、一意の識別子を比較器133に出力するようにFIFO125をトリガする。比較器133は、一意の識別子と冗長識別子とを比較し、これらの間に不一致があると判定された場合、それは、クレジットリターン信号または冗長クレジットリターン信号にエラーがあり得ることを示すエラー信号(error)を出力する。この手法では、主クレジットリターン信号または冗長クレジットリターン信号のいずれかが遅延されることになるエラーが発生した場合、比較器133は、主クレジットリターン信号および冗長クレジットリターン信号のうち遅延されない方を、主信号の伝送の異なるインスタンスに関連する別のクレジットリターン信号と比較することができるため、エラーを検出することができ、これは、主クレジットリターン信号と冗長クレジットリターン信号の識別子の不一致から検出することができる。
【0090】
図7は、本技術による、クロックドメイン境界を越えて主信号を伝送する方法を示す流れ図である。ステップ120において、主信号が、第1のクロックドメイン内の第1の主インタフェース78で受信され、ステップ122において、第1のチェック信号が、所定の時間遅延の後に第1のクロックドメイン内の第1の冗長インタフェース80で受信される。
【0091】
ステップ124において、第2のクロックドメインで、第2のチェック信号が主信号に基づいて生成される。第2のチェック信号は、第2のチェック信号発生回路88によって生成され、第2のチェック信号発生回路88は、上記の所定の時間遅延に等しい遅延の後に主信号のコピーを供給するように構成された時間遅延回路とすることができる。あるいは、第2のチェック信号発生回路88は、第2のチェック信号が主信号の部分に基づくエラーチェックコードであり、主信号の部分のビット数より少ないビットを含む他の何らかのエラー検出手順を使用して第2のチェック信号を生成するように構成されてもよい。第1のチェック信号および第2のチェック信号は、対応するプロセスに従って生成される同じ形式のものである。
【0092】
第1のチェック信号および第2のチェック信号の形式が何であれ、ステップ126において、2つのチェック信号に基づいてエラーチェック手順が実行される。エラーチェック手順は、エラー比較器86によって実行され、一部の例では、第1のチェック信号と第2のチェック信号とを比較することを含む。しかしながら、他のエラーチェック手順もまた使用され得る。ステップ128において、チェック信号の一方にエラーが存在するかどうかが判定される。エラーが存在すると判定された場合、エラー処理応答130がトリガされる。エラー処理応答130は、ステップ132から138のいずれも実行しないようにすることを含むことができる。エラー処理応答はまた、エラーが発生したことを、主信号を生成した上流コンポーネントにシグナリングすることを含むことができ、それは、データを再伝送することまたは他の何らかの動作を行うことによって応答することができる。他のエラー処理応答を使用することもできる。
【0093】
エラーが検出されなかった場合、方法はステップ132に進む。ステップ132において、主信号は、第2のクロックドメイン内の第2の主インタフェース82に供給される。ステップ134において、第2のチェック信号は、所定の時間遅延の後に第2のクロックドメイン内の第2の冗長インタフェース84に供給される。ステップ136において、主信号は、第2の主インタフェース82で出力され、ステップ138において、第2のチェック信号は、第2の冗長インタフェース138で出力される。
【0094】
図8は、本技術によるCDC72を含む相互接続ネットワークの設計のために電子設計ファイルを生成するコンピュータ実施方法140を示す流れ図である。ステップ142において、複数のノードが、第1のクロックドメインで動作する第1のノードと第2のクロックドメインで動作する第2のノードとを含み、第1のクロックドメインと第2のクロックドメインが異なるクロック周波数、異なるクロック位相、またはこれら両方を有することが決定される。ステップ144において、本技術による少なくとも1つのCDC72を含む相互接続ネットワークの電子設計ファイルが生成される。すなわち、ネットワークが、異なるクロックドメイン内のコンポーネントを接続しなければならない場合、ネットワークのための設計は、上述のようにエラー比較器86、88およびバッファ92、104を備えることができる少なくとも1つのCDC72を含むことができる。
【0095】
図9は、設計プロセスを単純化するために自動設計技術を使用することができる、本発明による電子設計ファイルを設計するための電子設計プロセスの例を概略的に示す。設計プロセスのより早い段階を実行するシステム設計者または電子設計ツールは、集積回路の相互接続部に使用されるポート46、48の物理的位置および/または予期される使用要件(例えば、どのポート対が、それらの間の通信リンクを必要とする可能性があるか、および予期されるデータトラフィックまたは互いに対する異なるマスタの優先順位付けに依存する、異なるポート対の予期される帯域幅のレベル)などの様々なシステム要件146を指定することができる。
図8に示されている方法140に従って電子設計ファイル152を生成するために、データ処理装置上で実行されるNoC構成ツールプログラム148は、NoCを組み立てるために選択することができる様々なNoCコンポーネントの高レベル表現を提供するコンポーネントライブラリ150と共に、システム要件を使用することができ、これにより、NoCコンポーネントの高レベルレイアウトが提供され、これらのコンポーネントの特定の特性を構成するパラメータなどの、これらのコンポーネントの様々なパラメータが指定される。
【0096】
例えば、コンポーネントライブラリ150は、
図2に関して上述したような入口ポート46、出口ポート48、ルータ54、またはリサイザ70などのコンポーネントの範囲を指定することができる。これらのタイプのコンポーネントのうちの一部について、システム要件の特定の必要性に応じて選択のためにコンポーネントライブラリにおいて複数の代替タイプを指定することができる。あるいは、単一タイプのコンポーネントが準備されてもよく、NoC構成ツール148は、所与のコンポーネントの特性として、NoCの所与のコンポーネントの動作を調整することができるまたはそのコンポーネントを製造する方法を制御することができる特定の変数を指定することができる。NoC構成ツール148は、入力されたシステム要件に基づいてそのような要件を決定することができる。したがって、ツール148によって選択され得るコンポーネントのうちの1つは、上述のようなCDCであり得る。
【0097】
NoC構成ツール148によって生成された高レベルレイアウトファイル152は、電子設計自動化(EDA)ツール154に提供され、電子設計自動化(EDA)ツール154は、NoCコンポーネントライブラリ150より詳細なレベルで集積回路コンポーネントの標準セルを指定する低レベルセルライブラリ156を使用し、NOC構成ツール148によって設計された相互接続部を含む集積回路に対して生成されるべき特定のゲートまたはトランジスタを指定する集積回路設計ファイル158を生成する。場合によっては、EDA154は、実際には、より詳細な回路レベル表現を生成するために段階的に設計を繰り返す多数のツールを含むことができる。EDAツール154はまた、設計された回路がそのタイミング要件を満たすかどうかをチェックするためにタイミング解析(例えば、セットアップおよびホールドの違反のテスト)を実行し、前の試行がタイミング解析で不合格になった場合は設計を繰り返すことができる。次に、設計ファイル158によって表される最終的に準備された集積回路設計は、相互接続部を含む集積回路を実施するために、トランジスタ間に必要とされる接続を有する集積回路を製造するように製造設備160を制御するために設計ファイルを使用する製造業者に提供される。
【0098】
本出願では、「・・・するように構成される」という語は、装置の要素が規定の動作を実行することができる構成を有することを意味するために使用される。これに関連して、「構成」は、ハードウェアまたはソフトウェアを相互接続する配置または方法を意味する。例えば、装置は、規定の動作を実現する専用ハードウェアを有することができ、または、プロセッサもしくは他の処理デバイスは、機能を実行するようにプログラムすることができる。「するように構成される」は、規定の動作を実現するために装置の要素が何らかの方法で変更される必要があることを含意しない。
【0099】
本明細書では添付の図面を参照しながら本技術の例示的な実施形態を詳細に説明してきたが、本技術はそれらの正確な実施形態に限定されず、添付の特許請求の範囲によって規定されるような技術の範囲から逸脱することなく、そこには様々な変更および修正が当業者によって加えられ得ることを理解されたい。