(57)【要約】  本明細書に記載の技法は、一般に、ネットワークオンチップにおける回線交換に関係した方法およびシステムを含む。開示の実施形態によれば、ネットワークオンチップは、要求されたデータがソースノードから宛先ノードへの送信のために使用可能である前に、ソースノードと宛先ノードとの間の回線交換接続を事前予約するように構成されたルータを含むことができる。要求されたデータがソースノードからの送信のために使用可能であるときに、回線交換接続がソースノードと宛先ノードとの間に既に確立されているので、回線交換接続の設定オーバヘッドによって引き起こされる遅延を伴わずまたは低減して、データを送信することができる。接続設定メッセージを宛先ノードからのメモリ要求と一緒に送信して、回線交換接続の事前予約を容易にすることができる。
2016531529.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークオンチップ（ＮｏＣ）であって、
ソースルータを含む前記ＮｏＣのソースノードと、
前記ソースノードに通信可能に結合された前記ＮｏＣの宛先ノードと
を備え、前記宛先ノードは、宛先ルータおよびネットワークデバイスを含み、前記宛先ルータは、
前記ネットワークデバイスからメモリ要求を受信し、
前記メモリ要求の反対方向のポートを伴う回線交換接続を事前予約し、
接続設定メッセージおよび前記メモリ要求を前記ソースノードに送信する
ように構成され、前記接続設定メッセージは、回線交換接続のために前記ソースルータを事前予約するのに有効なコマンドを含む、ネットワークオンチップ。
【請求項２】
前記ソースノードと前記宛先ノードとの間にある中間ノードをさらに備え、前記中間ノードは、中間ルータを含み、前記接続設定メッセージに含まれたコマンドはさらに、前記回線交換接続のために前記中間ルータを事前予約するのに有効である、請求項１に記載のＮｏＣ。
【請求項３】
前記宛先ルータは、前記接続設定メッセージおよび前記メモリ要求を単一メッセージとして送信するようにさらに構成される、請求項１に記載のＮｏＣ。
【請求項４】
前記ネットワークデバイスは、前記宛先ルータと同じ場所に配置されたプロセッサコアを含む、請求項１に記載のＮｏＣ。
【請求項５】
前記宛先ルータは、特定の時間期間にわたって前記宛先ルータの事前予約を追跡するように構成された予約レジスタを含む、請求項１に記載のＮｏＣ。
【請求項６】
前記特定の時間期間は、クロックサイクルに関して追跡され、前記予約レジスタは、複数のビットを含み、前記複数のビットの各々が、前記ＮｏＣに関連付けられた特定のセットのクロックサイクルについて前記宛先ルータの事前予約を追跡する、請求項５に記載のＮｏＣ。
【請求項７】
前記特定の時間期間は、前記ＮｏＣのノードと前記ＮｏＣに結合されたメモリコントローラとの間で生じ得る最長のラウンドトリップ通信時間に少なくとも部分的に基づく、請求項５に記載のＮｏＣ。
【請求項８】
前記特定の時間期間は、前記ＮｏＣのノードと前記ＮｏＣに結合されたメモリコントローラとの間で生じ得る最短のラウンドトリップ通信時間に少なくとも部分的に基づく、請求項５に記載のＮｏＣ。
【請求項９】
前記接続設定メッセージは、前記宛先ルータを使用するための要求された時間期間を示す事前予約ウィンドウを含む、請求項１に記載のＮｏＣ。
【請求項１０】
前記事前予約ウィンドウは、前記ソースノードにおけるデータの使用可能性の不確実性と、前記宛先ノードから前記ソースノードへの前記接続設定メッセージの送信時間の不確実性との少なくとも一方に少なくとも部分的に基づく安全マージンを含む、請求項９に記載のＮｏＣ。
【請求項１１】
前記宛先ルータは、前記ソースノードにおけるデータの使用可能推定時間に少なくとも部分的に基づいて、前記事前予約ウィンドウを計算するようにさらに構成される、請求項９に記載のＮｏＣ。
【請求項１２】
前記ソースノードと前記宛先ノードとの間の回線交換経路に沿って配置された前記ＮｏＣの中間ノードをさらに備え、前記中間ノードは、中間ルータを含み、前記接続設定メッセージは、前記中間ルータを事前予約するように構成された追加コマンドを含み、前記宛先ルータは、前記ソースノードにおけるデータの使用可能推定時間に少なくとも部分的に基づいて、前記中間ルータについての事前予約ウィンドウを決定するようにさらに構成される、請求項９に記載のＮｏＣ。
【請求項１３】
前記事前予約ウィンドウは、前記メモリ要求に関連付けられたデータの量と、前記ソースノードと前記宛先ノードの間の送信時間とのうちの１または複数に基づく、請求項９に記載のＮｏＣ。
【請求項１４】
ネットワークオンチップ（ＮｏＣ）であって、前記ＮｏＣのノードに配設されたルータを備え、前記ルータは、
前記ＮｏＣの宛先ノードから発信された接続設定メッセージであって、回線交換接続において前記ルータを使用するための要求された時間フレームを示す予約ウィンドウを含む、接続設定メッセージを受信し、
前記要求された時間フレーム中の前記回線交換接続における使用のための前記ルータの使用可能性を判断し、
前記要求された時間フレーム中に前記ルータが使用可能であると判断すると、前記接続設定メッセージの反対方向のポートを伴う前記回線交換接続を予約し、前記接続設定メッセージを送信する
ように構成される、ネットワークオンチップ。
【請求項１５】
前記ルータは、前記接続設定メッセージおよび確認応答メッセージを、前記ＮｏＣのソースノードに送信するようにさらに構成され、前記ソースノードは、前記接続設定メッセージ内で参照される、請求項１４に記載のＮｏＣ。
【請求項１６】
前記ルータは、確認応答メッセージを前記接続設定メッセージに追加し、前記確認応答メッセージおよび前記接続設定メッセージを単一メッセージとして送信するようにさらに構成される、請求項１４に記載のＮｏＣ。
【請求項１７】
前記接続設定メッセージは、前記宛先ノードに配設されたネットワークデバイスからのメモリ要求をさらに含む、請求項１４に記載のＮｏＣ。
【請求項１８】
前記回線交換接続は、前記接続設定メッセージ内で参照される前記ＮｏＣのソースノードと前記宛先ノードとの間の回線交換接続を含み、前記回線交換接続は、前記ＮｏＣにおいて前記接続設定メッセージが辿るのと同じルートであるが反対方向にルートを辿る、請求項１４に記載のＮｏＣ。
【請求項１９】
前記要求された時間フレームは、前記接続設定メッセージ内で参照される前記ＮｏＣのソースノードにおけるデータの使用可能推定時間に基づく、請求項１４に記載のＮｏＣ。
【請求項２０】
前記ルータは、特定の時間期間にわたって前記ルータの事前予約を追跡するように構成された予約レジスタを介して、前記ルータの使用可能性を判断するようにさらに構成される、請求項１４に記載のＮｏＣ。
【請求項２１】
回線交換およびパケット交換を行うように構成されたその他のルータをさらに備える、請求項１４に記載のＮｏＣ。
【請求項２２】
ネットワークオンチップ（ＮｏＣ）においてデータを送信する方法であって、
前記ＮｏＣのネットワークデバイスからメモリ要求を受信すること、ならびに
接続設定メッセージおよび前記メモリ要求を前記ＮｏＣにおけるソースノードに送信することを含み、
前記接続設定メッセージは、宛先ルータおよびソースルータを、前記ソースノードから前記宛先ルータへの回線交換接続のために事前予約するコマンドを含む、方法。
【請求項２３】
前記接続設定メッセージと共に確認応答メッセージを前記ＮｏＣの前記ソースノードに送信することをさらに含む、請求項２２に記載の方法。
【請求項２４】
前記接続設定メッセージは、前記ソースノードから前記宛先ルータへの前記回線交換接続のために、前記ソースノードと宛先ノードとの間の回線交換経路に沿って配置された前記ＮｏＣの中間ノードを事前予約するコマンドをさらに含む、請求項２３に記載の方法。
【請求項２５】
前記接続設定メッセージを送信することは、前記ネットワークデバイスと同じ場所に配置された前記宛先ルータを事前予約するコマンドを含む前記接続設定メッセージを送信することを含む、請求項２２に記載の方法。
【請求項２６】
前記宛先ルータを事前予約するための前記コマンドは、第１の時間期間に対応し、前記ソースルータを事前予約するための前記コマンドは、第２の時間期間に対応し、前記第１の時間期間は、前記第２の時間期間の一部分のみと重なる、請求項２２に記載の方法。
【請求項２７】
前記宛先ルータを事前予約するための前記コマンドは、第１の時間期間に対応し、前記ソースルータを事前予約するための前記コマンドは、第２の時間期間に対応し、前記第１の時間期間は、前記第２の時間期間とは重ならない、請求項２２に記載の方法。
【請求項２８】
コンピュータ実行可能命令を具現化する非一時的コンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、コンピュータによる実行に応答して、ネットワークオンチップ（ＮｏＣ）においてデータを送信する方法を前記コンピュータに実施させ、前記方法は、
前記コンピュータに関連付けられたネットワークオンチップのネットワークデバイスから受信されたメモリ要求を識別すること、ならびに
接続設定メッセージおよび前記メモリ要求を前記ネットワークオンチップにおけるソースノードに送信することを含み、
前記接続設定メッセージは、宛先ルータおよびソースルータを、前記ソースルータから前記宛先ルータへの回線交換接続のために事前予約するコマンドを含む、非一時的コンピュータ可読記憶媒体。
【請求項２９】
前記方法は、前記接続設定メッセージと共に確認応答メッセージを前記ＮｏＣの前記ソースノードに送信することをさらに含む、請求項２８に記載の非一時的コンピュータ可読記憶媒体。
【請求項３０】
前記宛先ルータを事前予約するための前記コマンドは、第１の時間期間に対応し、前記ソースルータを事前予約するための前記コマンドは、第２の時間期間に対応し、前記第１の時間期間は、前記第２の時間期間の一部分のみと重なる、請求項２８に記載の非一時的コンピュータ可読記憶媒体。
【請求項３１】
前記宛先ルータを事前予約するための前記コマンドは、第１の時間期間に対応し、前記ソースルータを事前予約するための前記コマンドは、第２の時間期間に対応し、前記第１の時間期間は、前記第２の時間期間とは重ならない、請求項２８に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
本明細書に特に指示がない限り、この項に記載される手法は、本出願の特許請求の範囲の先行技術ではなく、この項に含めることで先行技術と認めるものではない。
【０００２】
ムーアの法則に沿って、集積回路に実用的に組み込むことができるトランジスタの数は、およそ２年ごとに２倍になっている。この傾向は、半世紀以上続いており、少なくとも２０１５ないし２０２０年まで続くことが期待される。しかしながら、単純により多くのトランジスタをシングルスレッドのプロセッサに追加することでは、もはや大幅により高速のプロセッサは作成されない。代わりに、単一チップに複数のプロセッサコアを集積してチップマルチプロセッサを形成し、チップマルチプロセッサの複数のプロセッサコア間のプロセスを共有することによって、システム性能の増大を達成している。そのようなプロセッサは、複数の計算が互いに同時または並列に実行され得るアプリケーションのような高いレベルの同時並列性を有するアプリケーションの処理時間を大きく減少させることができる。
【発明の概要】
【０００３】
実際には、もはや、チップマルチプロセッサにおける漏れ電流により発生するスタティック消費電力の指数関数的増大なしに閾値電圧を低減できないため、高コア数チップマルチプロセッサのすべてのプロセッサコアの効率的使用は難しい。結果として、高コア数チップマルチプロセッサのコアあたりで使用可能なパワーバジェットは、将来の技術世代ごとに低下していくと予測される。この状況により、高コア数チップマルチプロセッサのますます多くの断片が完全な周波数で駆動されないもしくは全く駆動されない「パワーウォール」、「ユーティリティウォール」または「ダークシリコン」と呼ばれる現象がもたらされる。したがって、そのようなチップマルチプロセッサの性能の改善は、マルチプロセッサのエネルギー効率性に強く左右され得る。
【０００４】
本開示の少なくともいくつかの実施形態によれば、ネットワークオンチップは、ＮｏＣの宛先ノードに配設された宛先ルータを備える。宛先ルータは、宛先ノードに配設されたネットワークデバイスからメモリ要求を受信し、接続設定メッセージおよびメモリ要求を、ＮｏＣのソースノードに送信するように構成されることが可能であり、接続設定メッセージは、宛先ルータとソースノードに配設されたルータとの間の回線交換接続を事前予約するように構成される。
【０００５】
本開示の少なくともいくつかの実施形態によれば、ネットワークオンチップは、ＮｏＣの宛先ノードに配設されたルータを備える。ルータは、ＮｏＣの宛先ノードから発信された接続設定メッセージを受信するように構成されることが可能であり、接続設定メッセージは、回線交換接続においてルータを使用するための要求された時間フレームを示す予約ウィンドウを含む。ルータはさらに、要求された時間フレーム中の回線交換接続における使用のためのルータの使用可能性を判断し、要求された時間フレーム中にルータが使用可能であると判断すると、接続設定メッセージおよび確認応答メッセージを送信するように構成されることが可能である。
【０００６】
上記の概要は例示にすぎず、何ら限定を意図していない。上述の例示的な態様、実施形態、および特徴に加えて、他の態様、実施形態、および特徴が、図面および以下の詳細な説明を参照することにより明らかとなろう。
【０００７】
本開示の上記および他の特徴は、添付の図面と併せて以下の説明および添付の特許請求の範囲からより完全に明らかとなろう。これらの図面は、本開示によるいくつかの実施形態を示すにすぎず、したがって本開示の範囲を限定するとみなされるべきではない。本開示は、添付の図面の使用を通して付加的な特性および細部と共に説明される。
【図面の簡単な説明】
【０００８】
【図１】本開示の少なくともいくつかの実施形態に従って構成された、チップマルチロプロセッサの例示的実施形態のブロック図である。
【図２】本開示の少なくともいくつかの実施形態に従って構成された、ネットワークオンチップで実装された回線交換に関連した接続設定オーバヘッドおよび低減された帯域幅利用率を示す例示的タイミング図である。
【図３】本開示の少なくともいくつかの実施形態に従って構成された、図１におけるネットワークオンチップのネットワークルータの例示的実施形態の概略図である。
【図４】本開示の少なくともいくつかの実施形態に従って構成された、ネットワークオンチップにおける事前予約方式の例示的実施形態を示す例示的タイミング図である。
【図５】本開示の少なくともいくつかの実施形態に従って構成された、安全マージンを含む事前予約方式の例示的実施形態を示す例示的タイミング図である。
【図６】本開示の少なくともいくつかの実施形態に従って構成された、ネットワークルータのための予約レジスタを概略的に示す図である。
【図７】本開示の少なくともいくつかの実施形態に従って構成された、各時間期間が予約レジスタにおける１ビットで表される時間の長さに等しい３つの時間期間が経過した後の、図６の予約レジスタを概略的に示す図である。
【図８】本開示の少なくともいくつかの実施形態に従って構成された、ＮｏＣにおいてデータを送信する例示的方法８００を要約して示すフローチャートである。
【図９】本開示の少なくともいくつかの実施形態に従って構成された、要求されたデータがソースノードから宛先ノードへの送信のために使用可能である前に、ソースノードと宛先ノードとの間の回線交換接続を事前予約するための方法を実装する、コンピュータプログラム製品の例示的な実施形態のブロック図である。
【図１０】本開示の少なくともいくつかの実施形態に従って構成された、チップマルチロプロセッサ、たとえば、図１のチップマルチロプロセッサを使用して動作するように構成された例示的コンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【０００９】
以下の詳細な説明では、その一部を形成する添付の図面を参照する。図中、同様の記号は、一般に、文脈で特に指示がない限り、同様のコンポーネントを特定する。詳細な説明、図面、および特許請求の範囲に記載される例示的な実施形態は限定を意図していない。本明細書で与えられる主題の趣旨または範囲から逸脱することなく、その他の実施形態が利用されてもよく、他の変更がなされてもよい。本明細書において概説され図で示される本開示の態様は、多種多様な構成で配置、置換、組合せ、および設計することが可能であり、それらすべてが明白に企図され本開示の一部とされる。
【００１０】
本開示は、一般に、とりわけチップマルチプロセッサに関係した方法、装置、システム、デバイス、および／またはコンピュータプログラム製品に関する。
【００１１】
簡潔に述べると、ネットワークオンチップは、要求されたデータがソースノードから宛先ノードへの送信のために使用可能である前に、ソースノードと宛先ノードとの間の回線交換接続を事前予約するように構成されたルータを含むことができる。要求されたデータがソースノードからの送信のために使用可能であるときに、回線交換接続がソースノードと宛先ノードとの間に既に確立されているので、回線交換接続の設定オーバヘッドによって引き起こされる遅延なしに、データを送信することができる。接続設定メッセージを宛先ノードからのメモリ要求と一緒に送信して、回線交換接続の事前予約を容易にすることができる。
【００１２】
図１は、本開示のいくつかの実施形態に従って構成された、チップマルチプロセッサ（ＣＭＰ）１００の例示的実施形態のブロック図である。ＣＭＰ１００は、複数のタイル１２０、メモリコントローラ１００〜１０４、およびそれらの間に配設された通信サブシステム１０５を含むことができる。タイル１２０、メモリコントローラ１００〜１０４、および通信サブシステム１０５は、単一のダイ１０９上に形成することができ、一緒にネットワークオンチップ１０８すなわちＮｏＣとして構成することができる。ＮｏＣ１０８は、ＣＭＰ１００内のオンチップ通信を実現するためにネットワーキング理論および方法を適用するように構成することができる。いくつかの実施形態では、ＣＭＰ１００は、アナログデバイス、混成信号デバイス、高周波デバイスなどのような、単一の集積回路ダイ１０９上に形成された追加のコンポーネントを含んでもよいが、明瞭にするためにそのような追加のコンポーネントは図１では省略されている。
【００１３】
タイル１２０のそれぞれは、ＮｏＣ１０８のノードを形成することができ、Ｌ１、Ｌ２およびＬ３キャッシュのような関連付けられたキャッシュ階層を有するプロセッサコア１２１と、同じ場所に配置されたネットワークルータ１２２とを含むことができる。各プロセッサコア１２１は、集積回路ダイ１０９上に形成される任意の技術的に実現可能なプロセッサまたはプロセッサコア、たとえば、中央処理装置（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、アクセラレータ、リプログラマブル回路、または前述のコアの同種もしくは異種のクラスタ／グループなどにすることができる。各ネットワークルータ１２２は、パケット交換および回線交換をサポートするように構成された任意の技術的に実現可能なオンチップルータとすることができる。ネットワークルータ１２２の１つの例示的実施形態を図３と関連して後で説明する。通信サブシステム１０５は、図示のようにタイル１２０をメモリコントローラ１０１〜１０４と結合する相互接続を含むことができる。図１に示す実施形態では、通信サブシステム１０５が、２次元メッシュネットワークトポロジを用いてタイル１２０を結合する。しかしながら、通信サブシステム１０５は、本開示の範囲を超えずに任意の他の技術的に実現可能なネットワークトポロジによって構成されてもよい。いくつかの実施形態では、ＮｏＣ１０８において次元順ルーティング（dimension-ordered routing）が使用され得る。次元順ルーティングでは、簡潔性および無デッドロック性のために、パケットがＮｏＣにおいてｙ次元に沿ってルーティングされる前にｘ次元に沿ってルーティングされ得る。
【００１４】
メモリコントローラ１０１〜１０４は、ＣＭＰ１００に関連付けられたランダムアクセスメモリ（ＲＡＭ）のようなオンチップまたはオフチップのメインメモリリソースとの間で行き来するデータの流れを管理するように構成されてよい。ＣＭＰ１００に関連付けられたＲＡＭには、オフチップメモリリソースおよび／またはオンチップメモリリソース、たとえば、２Ｄまたは３Ｄで配列されたＤＲＡＭ、ＳＲＡＭ、磁気抵抗ＲＡＭ（ＭＲＡＭ），および／または相変化ＲＡＭ（ＰＲＡＭ）が含まれ得る。いくつかの実施形態では、物理メモリアドレスは、ページインタリーブ様式でメモリコントローラ１０１〜１０４間でインタリーブされることがある。たとえば、第１のページおよび第５のページがメモリコントローラ１０１にマップされてよく、第２のページおよび第６のページがメモリコントローラ１０２にマップされてよく、第３のページおよび第７のページがメモリコントローラ１０３にマップされてよく、第４のページおよび第８のページがメモリコントローラ１０４にマップされてよく、以下同様にされてよい。したがって、メモリコントローラ１０１〜１０４のそれぞれは、ＣＭＰ１００に関連付けられたメインメモリの異なる部分を制御することができる。各プロセッサコア１２１に大きな物理メモリ空間を提供するために、各プロセッサコア１２１は、メモリコントローラ１０１〜１０４のいずれかによって制御されるメモリにアクセスを有することがある。その結果、プロセッサコア１２１は、メモリコントローラ１０１〜１０４のそれぞれにアクセスする際に互いに競合することがある。したがって、一般にＮｏＣ１０８におけるデータをルーティングするためにスイッチングポリシーを使用して、そのような競合に対処することができる。
【００１５】
ＮｏＣ１０８上でパケットをルーティングする際に使用され得る様々なスイッチング技術には、回線交換およびパケット交換が含まれる。回線交換では、ＮｏＣ１０８のソースノードと宛先ノードとの間の接続が完全に確立され、ソースノードと宛先ノードとの間のデータ転送が予約される。現在のマルチコアＮｏＣで一般的に使用されるパケット交換では、各個別パケットが独立して移動し、パケットがＮｏＣ１０８を通って移動するときに増分的にポートおよびリンクリソースを予約する。回線交換は一般にデータ転送待ち時間が比較的短いが、十分に活用されない接続または競合する予約間の衝突により、帯域幅の利用率を高くできない可能性がある。対照的に、パケット交換では、各パケットは、ルータにおいて４段階の処理、すなわち、デコードおよびルーティング、仮想チャネル割当て、スイッチ割当て、ならびにスイッチ探査を経ることがある。これらのステップは、典型的には、パイプライン処理され、パケットが通過する各ノードにおいて数クロックサイクルのルーティング遅延を受ける。ルータにおいて、パケットの処理の各段階でエネルギーを消費する。また、データに対して仮想チャネルおよびスイッチ割当てが正常に完了するまでルータにデータを保持するために、比較的深いバッファが提供され得る。したがって、コンテキストによっては、パケット交換は、回線交換と比較してエネルギー効率が良くないことがある。
【００１６】
チップマルチプロセッサの性能改善は、「パワーウォール」と呼ばれる現象による設計のエネルギー効率性に強く左右され得る。さらに、チップマルチプロセッサＮｏＣのルータが、高コア数チップマルチプロセッサの主なエネルギー消費要素であり得る。具体的には、チップマルチプロセッサのコアの数がｘの比で増加すると、ｘの各コアがチップマルチプロセッサのその他のコアと通信するので、関連したＮｏＣの通信ネットワークはｘ２の比で増大し得る。したがって、より大きいコア数のチップマルチプロセッサでは、ＮｏＣは、チップマルチプロセッサのダイ面積および電力消費の大部分を消費し得る。たとえば、インテルのタイル状８０コア試作チップにおいて、ＮｏＣは、チップ電力の約２８％を消費する可能性があり、これは、キャッシュ（約２１％）、クロック分配回路（約１１％）、およびレジスタファイル（約４％）により消費される各電力より大きい。ＮｏＣにおけるパケット交換に関連した相対的なエネルギーの非効率性が、この傾向を大きく悪化させる可能性がある。不都合なことに、回線交換では、接続設定オーバヘッドおよび低い帯域幅利用率が問題となる可能性もあり、これについては図２と関連して後で説明する。
【００１７】
図２は、ある種のＮｏＣで実装された回線交換に関連した接続設定オーバヘッドおよび低減された帯域幅利用率を示す例示的タイミング図２００である。図２は、タイル状マルチコアアーキテクチャまたはＮｏＣにおける、ソースノード、宛先ノード、および追加ノードを含む３つのノードに関係したアクティビティを時間に対して示している。宛先ノードは、プロセッサコアのキャッシュ階層に現在存在しないデータをプロセッサコアが要求するＮｏＣのノードとすることができる。要求は、単一のキャッシュブロックまたは複数のキャッシュブロックを対象とすることができる。そのような要求２０１は、たとえば、プロセッサコアが遭遇したキャッシュミスまたはプロセッサコアが実行したプリフェッチに応答して、生成され得る。ソースノードは、宛先ノードに配置されたプロセッサコアによるデータ要求に応答して、ＮｏＣを介してデータを送る。たとえば、ソースノードは、ＮｏＣのメモリコントローラのうちの１つに結合されたＮｏＣのノードとすることができ、したがって、メモリフェッチ２０３によってメインメモリからデータをフェッチするために使用することができる。あるいは、ソースノードは、データが位置する別のノードのキャッシュのうちの１つに結合されたＮｏＣのノードであってもよい。追加ノードは、タイミング図２００で示される時間の一部分において宛先ノードにおけるルータを活用できるＮｏＣの別のノードとすることができる。図２では、ソースノードと宛先ノードは互いに隣接しているが、実際には、間接的に接続されて１または複数のネットワークホップだけ離れていてもよい。
【００１８】
動作中に、宛先ノードが、データ要求２０１をソースノードに送り、次いで、ソースノードが、メモリフェッチ２０３によってメインメモリからデータをフェッチする。ソースノードがメインメモリからフェッチしたデータを受信した後、ソースノードは、フェッチしたデータを宛先ノードに送信するために回線交換が使用可能なように、回線交換接続設定パケット２０２を宛先ノードに送る。ソースノードと宛先ノードとの間の接続経路に沿ったすべてのルータが正常に予約されると、宛先ノードは、確認応答パケット２０５をソースノードに返す。確認応答パケット２０５を受信した後、ソースノードは、要求されたデータをデータ送信２０４によって宛先ノードに送る。データ送信２０４の最後は、ソースノードと宛先ノードとの間の回線交換接続を分断するコマンドを含んでよい。
【００１９】
回線交換接続がソースノードと宛先ノードとの間に確立されるまでデータが送られることがないため、図示されるように、接続設定オーバヘッド２１０は、設定パケット２０２の送信とソースノードによる確認応答パケット２０５の受信との間に発生し得る。このデータ送信２０４の送信の遅延は、データ送信２０４が送達されるのを宛先ノードが待機する間の待ち時間コストを生じ得る。さらに、このデータ送信２０４の送信の遅延は、ソースノードにおけるフェッチされたデータのバッファリングに関連したエネルギーコストを生じ得る。加えて、宛先ノードに関連した延長された予約ウィンドウ２２０の結果として、帯域幅利用率の低下が発生し、その結果、ソースノードと宛先ノードとの間の回線交換経路の一部であるＮｏＣにおけるルータおよびリンクが十分に活用されない可能性がある。詳細には、設定パケット２０２が宛先ノードによって受信されるとすぐに宛先ノードにおいて回線交換接続が予約されるので、ＮｏＣにおける帯域幅利用率が低下し得る。したがって、追加ノードまたはＮｏＣにおける任意の他のノードによって要求されたデータ送信のために、宛先ノードを使用することができない。したがって、宛先ノードが、予約ウィンドウ２２０において追加のノードからパケット２０６を受信する場合、宛先ノードは、パケット２０６を否定応答２０７で拒否する。結果として、パケット２０６は遅延され、後で再送される可能性があり、したがって、ＮｏＣの全体的性能が低下する。
【００２０】
開示の実施形態によれば、ＮｏＣは、接続設定オーバヘッドを低減し帯域幅利用率を向上するやり方で回線交換を実装するように構成することができる。具体的には、ＮｏＣは、要求されたデータがソースノードから宛先ノードへの送信に使用可能である前に、ソースノードと宛先ノードとの間の回線交換接続を事前予約するように構成されるルータを含むことができる。したがって、要求されたデータがソースノードからの送信のために使用可能である前に、回線交換接続がソースノードと宛先ノードとの間に既に確立されることになる。結果として、図２の接続設定オーバヘッド２１０のような設定オーバヘッドによって引き起こされる遅延なしに、データを送信することができる。したがって、回線交換接続におけるノードでのデータのバッファリングに関連したエネルギーコストが低減され得る。ソースノードと宛先ノードとの間の回線交換接続を事前予約するように構成されたネットワークルータの１つの例示的実施形態を、図３と関連して以下に説明する。
【００２１】
図３は、図１のＮｏＣ１０８におけるネットワークルータ１２２の例示的実施形態の概略図である。ネットワークルータ１２２は、５つの入力ポート３１０、５つの出力ポート３２０、クロスバースイッチ３３０、ならびにルーティングおよび調停コントローラ３４０を含むことができる。ネットワークルータ１２２は、ＮｏＣ１０８のトポロジおよびＮｏＣ１０８内のルータの位置に応じて、図３に示されるよりも多数または少数の入力ポート３１０または出力ポート３２０を含んでよい。たとえば、図３に示す実施形態において、ネットワークルータ１２２が２次元トポロジの一部であるとき、北、南、東、および西入力ポート用の入力ポート３１０Ａ〜Ｄ、ならびに自己／ローカル入力ポート用の入力ポート３１０Ｅを含む。別の例では、ネットワークルータ１２２が、ＮｏＣ１０８の角部のノードに配置されたタイル１２０に関連付けられているとき、その特定のネットワークルータ１２２が、ちょうど２つの他のノードに隣接し、自己／ローカル入力ポートも含むことができるので、ネットワークルータ１２２は、３つの入力ポート３１０および３つの出力ポート３２０のみを含むことができる。図３に示す実施形態では、ネットワークルータ１２２は、回線交換と共にパケット交換も実装できるハイブリッドルータとして構成することができる。しかしながら、他の実施形態では、ネットワークルータ１２２は、回線交換を実装するがパケット交換を実装しないように構成され得る。
【００２２】
入力ポート３１０のそれぞれを、回線交換仮想チャネル３１１およびパケット交換仮想チャネル３１２に関連付けることができる。各パケット交換仮想チャネル３１２は、ＮｏＣ１０８の次の部分がデータ送信に使用可能になるまで、１つまたは複数の通信ユニット、たとえば、転送データを記憶するためのバッファ３１３を含むことができる。出力ポート３２０のそれぞれを、回線交換仮想チャネル３２１およびパケット交換仮想チャネル３２２に関連付けることができる。他の実施形態では、ネットワークルータ１２２は、異なる個数の回線交換仮想チャネルおよびパケット交換仮想チャネルと共に構成されてもよい。各パケット交換仮想チャネル３２２は、ＮｏＣ１０８の次の部分がデータ送信に使用可能になるまで、１つまたは複数の通信ユニットを記憶するためのバッファ３２３を含むことができる。このように、図３に示す実施形態では、ネットワークルータ１２２は、入力および出力バッファリングを有するように構成することができる。しかしながら、他の実施形態では、ネットワークルータ１２２は、入力バッファリング（バッファ３１３）を有するが出力バッファリング（バッファ３２３）を有しないように、またはその逆に構成されてもよい。クロスバースイッチ３３０は、入力ポート３１０を出力ポート３２０と相互接続することができる。ルーティングおよび調停コントローラ３４０は、ネットワークルータ１２２のためのルーティングアルゴリズムおよびパケットフロー制御プロトコルを実装することができ、それに応じてクロスバースイッチ３３０を設定することができる。たとえば、ルーティングおよび調停コントローラ３４０は、同じ出力ポート３２０に対する同時の要求の間の競合を解決するように構成することができる。いくつかの実施形態では、ルーティングおよび調停コントローラ３４０は、ネットワークルータ１２２の出力ポート３２０ごとに１つの予約レジスタ６００を含むことができる。予約レジスタ６００の例示的実施形態を図６と関連して後で説明する。
【００２３】
例示として、ネットワークルータ１２２は、図３では、入力ポート３１０Ａを出力ポート３２０Ｂと結合する回線交換チャネル３５０と共に示されている。図示されるように、回線交換チャネル３５０がこのように確立されると、バッファ３１３は、回線交換チャネル３５０がパケット交換仮想チャネル３１２のいずれも含まないので、いっぱいのときストールし、バッファ３２３は、回線交換チャネル３５０がパケット交換仮想チャネル３２２のいずれも含まないので、使用されることがない。結果として、バッファ３１３および／またはバッファ３２３に関連したエネルギーコストが回避され得る。加えて、回線交換チャネル３５０が使用されるとき、ルーティングおよび調停コントローラ３４０によってデコードおよびルーティング動作が必ずしも行われる必要がなく、これもエネルギーコストを節約し得る。さらに、デコードおよびルーティング、仮想チャネル割当て、ならびにスイッチ割当てを除去することにより、ルーティング遅延が低減され得る。
【００２４】
一般的にＮｏＣにおける回線交換に関連する接続設定オーバヘッドおよび帯域幅利用率低下を最小限にするまたは別様に減少させるために、ルーティングおよび調停コントローラ３４０は、ＮｏＣ１０８におけるソースノードと宛先ノードとの間の回線交換接続が事前予約されることを可能にする１つまたは複数の機能、行為、または動作を行うように構成され得る。これらの機能、行為、または動作は、ルーティングおよび調停コントローラ３４０が、ＮｏＣ１０８内のソースノード、ＮｏＣ１０８内の宛先ノード、またはＮｏＣ１０８の宛先ノードとソースノードとの間の回線交換経路に沿って配置された中間ノードとして現在動作しているネットワークルータ１２２内にあるかどうかに応じて異なり得る。
【００２５】
具体的には、ネットワークルータ１２２がＮｏＣ１０８の宛先ノードに配設されている場合、ルーティングおよび調停コントローラ３４０は、宛先ノードに配設されたネットワークデバイス（たとえばプロセッサコア１２１）からメモリ要求を受信し、応答メッセージのリターン経路のための回線交換接続に対応するポートを設定し、メモリ要求と共に接続設定メッセージをＮｏＣ１０８のソースノードに送信するように構成され得る。接続設定メッセージは、ＮｏＣ１０８の宛先ノードおよびソースノードを含むその間のノードのそれぞれにおける回線交換接続を事前予約するための、ソースノードと宛先ノードとの間の各ネットワークルータに対するコマンドを含むように構成され得る。ネットワークルータ１２２は、たとえばルーティングおよび調停コントローラ３４０を介して、これらのコマンドを、要求メッセージの反対方向の適切なポートを伴う回線交換接続を事前予約するように実装することができる。メモリ要求の対象の特定のソースノードは、メモリ要求に関連付けられた物理メモリアドレスに応じて決めてもよい。
【００２６】
ネットワークルータ１２２が、宛先ノードとソースノードとの間の回線交換経路に沿って配置されたＮｏＣ１０８の中間ノードに配設されているとき、ルーティングおよび調停コントローラ３４０は、ＮｏＣ１０８の宛先ノードから発信された接続設定メッセージを受信するように構成され得る。接続設定メッセージは、宛先ノードとソースノードとの間の回線交換接続においてネットワークルータ１２２が予約される要求された時間期間を示す事前予約ウィンドウを含むことができる。ルーティングおよび調停コントローラ３４０はまた、接続設定メッセージを受信すると、要求された時間期間中の回線交換接続における使用のためのネットワークルータ１２２の使用可能性を判断するように構成され得る。要求された時間期間中にネットワークルータ１２２が使用可能であると判断すると、ルーティングおよび調停コントローラ３４０は、接続設定メッセージの反対方向に対応する適切なポートを伴う回線交換接続を事前予約し、接続設定メッセージおよびさらに確認応答メッセージを、宛先ノードとソースノードとの間の対象とする回線交換接続における次のノードに送信するように構成され得る。
【００２７】
ネットワークルータ１２２がＮｏＣ１０８のソースノードに配設されている場合、ルーティングおよび調停コントローラ３４０は、メモリ要求、およびＮｏＣ１０８の宛先ノードから発信された接続設定メッセージを受信するように構成され得る。加えて、ルーティングおよび調停コントローラ３４０は、宛先ノードとソースノードとの間の所望の回線交換接続を構成する各ノードから確認応答メッセージを受信するように構成され得る。ルーティングおよび調停コントローラ３４０はまた、確認応答メッセージに基づいて、回線交換接続を形成するすべてのルータおよびリンクが正常に事前予約されたかどうかを決定するように構成され得る。ルーティングおよび調停コントローラ３４０はさらに、回線交換接続がＮｏＣ１０８において正常に事前予約されたとき、メモリ要求に基づいてメモリフェッチを開始し、事前予約された回線交換接続を介して、フェッチされたデータをＮｏＣ１２２の宛先ノードへ送信するように構成され得る。
【００２８】
図４は、本開示のいくつかの実施形態による、ＮｏＣにおける事前予約方式の例示的実施形態を示す例示的タイミング図４００である。図４は、図１のＮｏＣ１０８のようなタイル状マルチコアアーキテクチャまたはＮｏＣにおける、ソースノード、宛先ノード、中間ノード、および追加ノードに関係したアクティビティを時間に対して示している。中間ノードは、ソースノードと宛先ノードとの間に配設されたＮｏＣ１０８のノードとすることができ、事前予約方式の実施形態によってソースノードと宛先ノードとの間に形成された事前予約された回線交換接続の一部である。追加ノードは、ソースノードと宛先ノードとの間に位置しなくてよく、ソースノードと宛先ノードとの間に形成された事前予約された回線交換接続の一部でない。しかしながら、いくつかの実施形態では、追加ノードは、ＮｏＣ１０８を構成するノードのいずれかであってよい。図４では、ソースノードと宛先ノードは、中間ノードによって直接接続でき、ＮｏＣ１０８の他のノードで接続されていないが、実際には、ソースノードと宛先ノードは、ＮｏＣ１０８のサイズ、および事前予約された回線交換接続のルーティングに応じて、互いに隣接する、またはＮｏＣ１０８の複数の中間ノードによって離されていることがある。
【００２９】
動作中に、宛先ノードが、中間ノードを介してメモリ要求４０１および接続設定メッセージ４０２をソースノードに送ることができる。いくつかの実施形態では、メモリ要求４０１および接続設定メッセージ４０２は、組み合わされたメッセージとして宛先ノードからソースノードへ送ることができる。言い換えれば、接続設定メッセージ４０２は、メモリ要求４０１上に「ピギーバック」されてよい。
【００３０】
メモリ要求４０１は、宛先ノードに配置されたネットワークデバイスたとえばプロセッサコアが遭遇したキャッシュミスに応答して生成され得る。あるいは、メモリ要求４０１は、宛先ノードに配置されたネットワークデバイスが実行したプリフェッチに応答して生成され得る。一般に、メモリ要求は、図１におけるメモリコントローラ１０１〜１０４の１つによってアクセスされるメインメモリの特定の部分に対応する１つまたは複数の物理メモリアドレスを含むことができる。
【００３１】
接続設定メッセージ４０２は、宛先ノードに配設されたネットワークルータ１２２とＮｏＣ１０８のソースノードに配設されたネットワークルータ１２２とを含むその間のノードのそれぞれにおける回線交換接続を事前予約するための、ソースノードと宛先ノードとの間の各ネットワークルータ１２２に対するコマンドを含むことができる。接続設定メッセージ４０２は、宛先ノードとソースノードとの間で使用されるべき回線交換接続を構成する各ネットワークルータ１２２のための事前予約ウィンドウを含むことができる。したがって、図４に示す実施形態において、接続設定メッセージ４０２は、宛先ノードのための事前予約ウィンドウ４２０Ａの予約、中間ノードのための事前予約ウィンドウ４２０Ｂの予約、およびソースノードのための事前予約ウィンドウ４２０Ｃの予約を要求するコマンドを含むことができる。あるいは、宛先ノードのための事前予約ウィンドウ（事前予約ウィンドウ４２０Ａ）は、接続設定メッセージ４０２を使用せずに確立されてもよい。図示されるように、事前予約ウィンドウ４２０Ａおよび事前予約ウィンドウ４２０Ｂは、時間が重なることがあるが、中間ノードは宛先ノードの前にデータを扱うので、時間がちょうど一致することはない。言い換えれば、事前予約ウィンドウ４２０Ｂは、事前予約ウィンドウ４２０Ａの開始前の時間に始まることができ、事前予約ウィンドウ４２０Ａの終了前に終わることができる。
【００３２】
いくつかの実施形態では、接続設定メッセージ４０２は、所望の回線交換接続で使用するために事前予約されるＮｏＣ１０８の各ノードに関連付けられた確認応答または否定応答メッセージを含むこともできる。したがって、図４に示す実施形態では、接続設定メッセージ４０２が、宛先ノードおよび中間ノードによって生成される確認応答または否定応答メッセージを含むことができる。このように、接続設定メッセージ４０２は、ソースノードが宛先ノードにデータを送信する前に、事前予約された回線交換接続における各ノードの状態をソースノードに通知することができる。いくつかの実施形態では、各ノードについての上記確認応答または否定応答メッセージは、接続設定メッセージ４０２に付加することができる。他の実施形態では、上記確認応答または否定応答メッセージは、更新された値または状態として接続設定メッセージ４０２に反映することができる。さらに、メモリ要求４０１に応答して確立される回線交換接続におけるノードの事前予約状態を追跡する任意の他の技術的に実現可能な実装形態を、本開示の範囲を超えることなく接続設定メッセージ４０２に含めてもよい。
【００３３】
宛先ノードにおけるネットワークルータ１２２が、事前予約ウィンドウ４２０Ａにおいて宛先ノードが使用可能であるかどうかを示す確認応答または否定応答メッセージを提供した後、宛先ノードにおけるネットワークルータ１２２は、メモリ要求４０１および接続設定メッセージ４０２を中間ノードに送信することができる。次いで、中間ノードが、メモリ要求４０１および接続設定メッセージ４０２を受信することができる。接続設定メッセージ４０２に応答して、中間ノードのネットワークルータ１２２は、所望の回線交換接続における使用のための中間ノードの使用可能性を判断し、確認応答または否定応答メッセージを接続設定メッセージ４０２に付加し、メモリ要求４０１および接続設定メッセージ４０２をソースノードに送信することができる。いずれの中間ノードも否定応答メッセージを受信した場合、それは回線交換接続が確立され得ないと結論することができる。この結論に応答して、それは事前予約ウィンドウを全く無視することができ、したがって、回線交換接続のためのルータリソースを事前予約しない。
【００３４】
図４に示すように、次いで、ソースノードは、メモリ要求４０１および接続設定メッセージ４０２を受信することができる。ソースノードは、受信したメモリ要求４０１に従ってメモリフェッチ４０３を行うことができる。図４では、ある有限の遅延を含むように示されているが、メモリ要求４０１が、ソースノードにキャッシュされたメモリアドレスに関する場合、メモリフェッチ４０３は、小さい遅延を有することがある。ソースノードと宛先ノードとの間の回線交換接続が（確認応答メッセージで示されるように）接続設定メッセージ４０２によって正常に事前予約されると、ソースノードは、メモリフェッチ４０３の結果を、１つまたは複数のデータ送信４０４Ａ〜４０４Ｄで中間ノードを介して宛先ノードへ送ることができる。データ送信４０４Ａ〜４０４Ｄは、事前予約ウィンドウ４２０Ｂにおいて中間ノードによって受信することができ、事前予約ウィンドウ４２０Ａにおいて宛先ノードによって受信することができる。いくつかの実施形態では、回線交換接続は、たとえば、接続設定メッセージ４０２に含まれた否定応答メッセージに起因して、ソースノードと宛先ノードとの間で確立することができない。これらの実施形態では、メモリ要求４０１は、パケット交換を使用してソースノードによって取り扱われる。パケット交換は、回線交換接続での経路と比較して、ルーティングポリシーに従って異なる経路を使用することができる。
【００３５】
いくつかの実施形態では、ソースノードからの最後データ送信、たとえば、データ送信４０４Ｄは、回線交換接続を分断するコマンドを含むことができる。そのような実施形態では、たとえばルーティングおよび調停コントローラ３４０によって、分断コマンドが実行されると、ソースノードと宛先ノードとの間の回線交換接続がキャンセルされ得る。
【００３６】
メモリ要求４０１および接続設定メッセージ４０２が宛先ノードからソースノードに送信されている時間の間、およびソースノードがメモリフェッチ４０３を行っている間にも、所望の回線交換接続で使用するために事前予約されたＮｏＣ１０８のノードは、他の回線交換接続などの接続で依然として使用可能であり得ることに留意されたい。たとえば、図４に示す実施形態では、中間ノードは、時間期間４１０Ｂ中に他の接続で使用可能であり得る。宛先ノードは、時間期間４１０Ａ中に他の接続によって使用可能であり得る。したがって、宛先ノードは、遅延なしに、または別様に低減された遅延を伴って、追加ノードからのパケット４１１および４１２を受信することができる。
【００３７】
事前予約ウィンドウ４２０Ｂの持続期間は、ソースノードからのデータ送信４０４Ａ〜４０４Ｄの受信、および宛先ノードへのデータ送信４０４Ａ〜４０４Ｄの送信に必要とされる時間を超えない時間で、中間ノードを予約するように選択され得る。同様に、事前予約ウィンドウ４２０Ａの持続期間は、中間ノードからのデータ送信４０４Ａ〜４０４Ｄの受信に使用されるべき時間を超えない時間で、宛先ノードを予約するようなサイズとされ得る。このようにして、帯域幅利用率は、ＮｏＣ１０８において最大限にされるまたは別様に改善されることが可能である。実際には、事前予約ウィンドウ４２０Ａおよび／または事前予約ウィンドウ４２０Ｂの最小持続期間は、高精度には予測可能ではない。たとえば、メモリフェッチ４０３を行う持続時間は変化し得る。いくつかの例では、メモリフェッチ４０３は、メモリ要求がメモリの行バッファでヒットに遭遇するときに短い持続時間で行われてよく、メモリ要求がメモリの行バッファでミスに遭遇するときにより長い持続時間で行われてよい。他の例では、メモリ要求４０１は、ＮｏＣ１０８における競合によりソースノードに到達する際の遅延に遭遇することがある。いくつかの実施形態によれば、事前予約ウィンドウ４２０Ａおよび／または事前予約ウィンドウ４２０Ｂは、メモリフェッチ４０３を行うために使用される持続時間の変動の存在、または、ソースノードから宛先ノードへのメモリ要求４０１の送信の遅延、または他の理由があっても、ソースノードと宛先ノードとの間の回線交換接続が適切に機能することを可能にする安全マージンを含むように選択され得る。１つのそのような実施形態を、図５と関連して以下に説明する。
【００３８】
図５は、本開示のいくつかの実施形態による、各ノードにおける事前予約ウィンドウにおいて安全マージンを含む事前予約方式の例示的実施形態を示す、例示的タイミング図５００である。タイミング図５００は、中間ノード（事前予約ウィンドウ５２０Ｂ）に関連付けられた事前予約ウィンドウが、最小送信時間５２４Ｂおよび安全マージン５２５Ｂを含むことができ、宛先ノード（事前予約ウィンドウ５２０Ａ）に関連付けられた事前予約ウィンドウが、最小送信時間５２４Ａおよび安全マージン５２５Ａを含むことができ、ソースノード（事前予約ウィンドウ５２０Ｃ）に関連付けられた事前予約ウィンドウが、最小送信時間５２４Ｃおよび安全マージン５２５Ｃを含むことができることを除いて、タイミング図４００と概ね類似し得る。
【００３９】
いくつかの実施形態では、事前予約ウィンドウ５２０Ｂの開始時間５２１Ｂ、終了時間５２２Ｂ、および安全マージンの持続期間５２５Ｂは、宛先ノードのネットワークルータ１２２によって決定することができる。いくつかの実施形態では、宛先ノードにおけるネットワークルータ１２２のルーティングおよび調停コントローラ３４０が、そのような決定を行うことができ、他の実施形態では、ネットワークルータ１２２に関連付けられた他のデバイスまたはソフトウェア構成が、そのような決定を行うことができる。中間ノードは、ネットワークルータ１２２間の１ホップの遅延を考慮する適切なオフセットを導入する。開始時間５２１Ｂ、終了時間５２２Ｂ、および安全マージンの持続期間５２５Ｂは、種々のファクタを少なくとも部分的に基づいて決定することができ、それらのファクタには、メモリ要求４０１および接続設定メッセージ４０２がソースノードから宛先ノードに到達するための最小（または別様に低減された）可能時間および平均時間、メモリフェッチ４０３をソースノードによって完了するための最小（または別様に低減された）可能時間および平均時間、ならびに接続ウィンドウを事前予約しているノードへのソースノードからのメッセージ伝播遅延が含まれる。同様にして、宛先ノードのネットワークルータは、事前予約ウィンドウ５２０Ａの開始時間５２１Ａ、終了時間５２２Ａ、および安全マージンの持続期間５２５Ａを決定することができる。簡潔にするために、中間ノードについての開始時間５２１Ｂ、終了時間５２２Ｂ、および安全マージンの持続期間５２５Ｂのみを本明細書では説明する。宛先ノードについての開始時間５２１Ａ、終了時間５２２Ａ、および安全マージンの持続期間５２５Ａは、本明細書に開示される主題に基づいて容易に決定することができる。
【００４０】
いくつかの実施形態では、開始時間５２１Ｂは、決定値に基づいて選択することができ、それらの値には、メモリ要求４０１および接続設定メッセージ４０２が宛先ノードからソースノードに到達するための最小（または別様に低減された）可能時間、メモリフェッチ４０３をソースノードによって完了するための最小（または別様に低減された）可能時間、ならびにフェッチされたデータがソースノードを介して中間ノードに送信されるための時間が含まれる。メモリ要求４０１および接続設定メッセージ４０２が宛先ノードからソースノードに到達するための最小（または別様に低減された）可能時間は、一般に、メモリ要求４０１および接続設定メッセージ４０２がパケット交換を介してソースノードに送信されるときに競合が発生しないことを仮定することができる。メモリフェッチ４０３をソースノードによって完了するための最小（または別様に低減された）可能時間は、一般に、メモリ要求４０１に含まれた物理アドレスがメインメモリの行バッファにおいてヒットすること、およびメモリ要求４０１よりも他のメモリ要求が好まれないことを仮定することができる。フェッチされたデータがソースノードを介して中間ノードに送信されるための時間は、ソースノードと中間ノードとの間のネットワークホップの数に基づいて計算することができる。
【００４１】
いくつかの実施形態では、開始時間５２１Ｂの決定は、さらに、接続設定メッセージ４０２が宛先ノードからソースノードに到達する際およびメモリフェッチ４０３の完了の際に発生する可能性が高い推定遅延の包含に基づいてよい。そのような実施形態では、開始時間５２１Ｂは、データ送信４０４Ｂが中間ノードに到達できる最も早い可能な時間よりも遅くなるように選択でき、これは、そのようなシナリオが特定のＮｏＣにおいて比較的起こりそうにないからである。たとえば、開始時間５２１Ｂは、接続設定メッセージ４０２が宛先ノードからソースノードに移動するときに平均競合率で送信遅延が発生すると仮定することによって決定することができる。代替的または追加的に、開始時間５２１Ｂは、ソースノードがメモリフェッチ４０３を完了するために平均時間が過ぎることを仮定することによって決定することができる。このようにして、ＮｏＣ１０８における帯域幅利用率を向上することができ、その理由として、事前予約ウィンドウ５２０Ｂの開始時間５２１Ｂは、データ送信４０４Ａが中間ノードに到着することが見込まれるより大幅に早く開始することがないからである。さらに、データ送信４０４Ａが開始時間５２１Ｂより早く中間ノードに到着する比較的珍しい例では、その関連した遅延は、比較的短く、したがってＮｏＣ１０８の帯域幅利用率に対する影響はほとんどない可能性がある。
【００４２】
終了時間５２２Ｂおよび結果として安全マージンの持続期間５２５Ｂは、接続設定メッセージ４０２から宛先ノードからソースノードへの送信の不確実性、およびメモリフェッチ４０３をソースノードによって完了するための時間の不確実性を含む種々の推定ファクタに基づいて、決定することができる。これらの不確実性に影響するファクタには、ＮｏＣ１０８のサイズおよびアーキテクチャ、通信サブシステム１０５の物理サイズ、使用される物理メモリのタイプ、ならびにメモリコントローラ１０１〜１０４の速度などが含まれ得る。
【００４３】
ソースノードから中間ノードへのデータ送信４０４Ａの送信が、中間ノードにおける開始時間５２１Ｂより前のデータ送信４０４Ａの到着をもたらす場合、ソースノードからの送信が遅延される。したがって、データ送信４０４Ａがソースノードで使用可能であっても、いくつかの実施形態において、ある状況下では、中間ノードへのデータ送信４０４Ａの送信にいくらかの遅延があり得る。逆に、いくつかの実施形態では、ソースノードからのデータ送信４０４Ａの送信が、安全マージン５２５Ｂの期限切れ後の中間ノードへのデータの到着をもたらす場合、データ送信４０４Ａは中間ノードへ送信されることがない。代わりに、ソースノードと宛先ノードとの間の回線交換接続がキャンセルでき、メモリ要求４０１は、他のメカニズムを使用して、たとえば、ＮｏＣ１０８にわたるパケット交換接続を使用して満たされ得る。回線交換接続がもはや存続可能でないと決定されたときに接続をキャンセルすることによって、キャンセルされた接続のために事前予約されたノードは、合理的に可能な限り早く、他の動作に利用可能にされ得る。このようにして、ＮｏＣ１０８の帯域幅利用率は、最大限にされまたは別様に増大され得る。
【００４４】
いくつかの実施形態では、ソースノードと宛先ノードとの間の回線交換接続は、ノードごとに自動的にキャンセルされ得る。言い換えれば、任意の特定のノードにおいて、ソースノードと宛先ノードとの間の回線交換接続は、そのノードに関連付けられた安全マージンの終端点より前に当該のノードによってデータ送信が受信されないときにキャンセルされ得る。たとえば、事前予約ウィンドウ５２０Ｂが中間ノードについて確立され、データ送信４０４Ａが安全マージン５２５Ｂの期限切れより前に中間ノードによって受信されない場合、ソースノードと宛先ノードとの間の回線交換接続は直ちにキャンセルされ得る。したがって、事前予約ウィンドウ５２０Ｂはキャンセルされ、中間ノードは、ＮｏＣ１０８における他の回線交換接続またはパケット交換接続で使用可能であるとみなされ得る。そして、回線交換接続における各後続ノードが（たとえば、ノードの事前予約ウィンドウに関連付けられた安全マージンの終端点より前に）データ送信４０４Ａを適時に受信するのに失敗したとき、ノードがＮｏＣ１０８において使用可能になるように、ノードの事前予約ウィンドウがキャンセルされ得る。
【００４５】
前述のように、安全マージンの持続期間５２５Ａおよび５２５Ｂは、ＮｏＣアーキテクチャ、チップサイズ、物理メモリ待ち時間、タイプなどを含む、特定ＮｏＣに特有の多くのファクタを考慮に入れて選択され得る。しかしながら、一般に、回線交換とパケット交換との間の性能およびエネルギー効率性の格差がより大きいとき、より長い安全マージンが事前予約ウィンドウに組み込まれ得る。これは、より大きな利益を得るために、ネットワーク帯域幅に関してより大きいリスクを取れるためである。言い換えれば、回線交換接続が正常に確立されたときに生じる、より小さい待ち時間およびエネルギーコストを利用するために、利用されていないノードが、より長い安全マージンが期限切れになるのを待機する間に遊休したままでいることを可能にされ得る。回線交換とパケット交換との間の性能およびエネルギー効率性の格差は、以下の状況、すなわち、送信されるデータの量が比較的大きい、たとえば、複数のブロックを含む、ＮｏＣトラフィック全体が比較的小さく、したがって安全マージンを有するＮｏＣ帯域幅の目詰まりのリスクが低い、および、データが多数のネットワークホップにわたって送信されることになる状況で大きくなる可能性がある。
【００４６】
いくつかの実施形態では、ネットワークルータのための事前予約ウィンドウが、ローカルで予約され、ネットワークルータそれ自体によって追跡され得る。そのような実施形態では、ＮｏＣ１０８における各ネットワークルータ１２２は、将来の任意の長い時間ではなく将来の特定の時間期間において、ネットワークルータ１２２の事前予約を追跡することができる。いくつかの実施形態では、特定の時間期間は、ＮｏＣ１０８のノードとＣＭＰ１００のメモリコントローラとの間のＮｏＣ１０８で生じ得る最長のラウンドトリップ通信時間に少なくとも部分的に基づくことができる。言い換えれば、ＮｏＣ１０８のネットワークルータ１２２について事前予約が追跡される特定の時間期間は、最大数のネットワークホップによって分離されるＮｏＣ１０８のノードとＣＭＰ１００のメモリコントローラとの間のラウンドトリップ通信時間に基づくことができる。
【００４７】
たとえば、ＮｏＣ１０８内のノードとメモリコントローラとの間のＮｏＣ１０８での最大距離がＮのネットワークホップである場合、ネットワークホップあたりのパケットをルーティングする時間がＴ０サイクルであり、メモリアクセス時間がＴ１であり、データ送信時間がＴ２であり、ＮｏＣ１０８のノードがそのノードについての事前予約されたウィンドウを追跡する最大時間が、（２＊Ｎ＊Ｔ０）＋Ｔ１＋Ｔ２と等しくなり得る。例示として、典型的な４×４タイル状マルチコアプロセッサにおいて、たとえば、Ｎ＝６、Ｔ０＝５クロックサイクル、Ｔ１＝２００クロックサイクル、およびＴ２＝３２クロックサイクルは、約２９２クロックサイクルのラウンドトリップ通信時間をもたらす。いくつかの実施形態では、この時間期間は、ネットワークノードのネットワークルータ１２２に関連付けられた予約レジスタによって、ネットワークノードごとに追跡されることが可能であり、レジスタは、追跡されるクロックサイクルごとにビットを含む。上記の例では、２９２クロックサイクルがそのような予約レジスタによって追跡され、したがって、レジスタは２９２ビットを含む。１つのそのような予約レジスタの実施形態を、図６と関連して以下で説明する。いくつかの実施形態では、そのような登録レジスタによって追跡される時間期間は、ＮｏＣ１０８のすべてのノードで同じにすることができるが、他の実施形態では、そのような予約レジスタによって追跡される時間期間は、各ノードのＮｏＣ１０８における位置の関数として変動することができる。
【００４８】
図６は、本開示のいくつかの実施形態による、ネットワークルータのための予約レジスタ６００を概略的に示す。予約レジスタ６００は、複数のビット６０１を含むことができ、各ビットは、予約レジスタ６００に関連付けられたネットワークルータが事前予約され得る将来の時間期間に対応する。いくつかの実施形態では、各ビット６０１は、ＮｏＣ１０８の単一のクロックサイクルと同じ短さの時間単位に対応することができ、他の実施形態では、各ビット６０１は、複数のクロックサイクルに対応することができる。後者の場合、ノードについて事前予約されたウィンドウを追跡するために使用されるメモリが低減され得る。たとえば、ノードに対する予約時間が、単一のクロックサイクルより大きい粒度、たとえば、２、４、または８クロックサイズで追跡されるとき、予約レジスタ６００におけるビット６０１の個数は、それに応じて減少され得る。上記の例示的４×４タイル状マルチコアプロセッサにおいて、予約レジスタ６００内のビットによって表される各時間単位が２サイクルである場合、登録レジスタ６００内のビット６０１の総数は、対象の最大データ送信時間を追跡するための少なくとも２９２／２＝１４６（すなわち２０バイト）であり得る。明瞭にするために、予約レジスタ６００は、図６では１６ビット６０１と共に示されている。
【００４９】
予約レジスタ６００内の各ビット６０１は、「１」または「０」の値を与えられ得る。特定のビット６０１の値「１」は、関連したネットワークルータ１２２が、そのビットに対応する将来の時間期間において回線交換接続での使用のために予約されることを示すことができる。逆に、特定のビット６０１の値「０」は、関連したネットワークルータ１２２が、そのビットに対応する将来の時間期間において使用可能であることを示すことができる。図６に示すように、２つの事前予約ウィンドウ６１０および６２０は、予約レジスタ６００において示され、それぞれが、４つの時間期間の持続期間を有する。したがって、予約レジスタ６００内の各ビットが２クロックサイクルを表すとき、事前予約ウィンドウ６１０および６２０は、それぞれが８クロックサイクルの持続期間を有することができる。
【００５０】
一般に、ＮｏＣ１０８のノードまたはネットワークルータ１２２は、回線交換接続のために事前予約され得るリソースごとに１つの予約レジスタ６００を含むことができる。したがって、２Ｄメッシュでは、各ネットワークルータ１２２が５つの出力ポートを有することができ、したがって、５つの予約レジスタ６００を含むことができる。予約レジスタ６００がＮｏＣ１０８のノードのための事前予約されたウィンドウを追跡するメモリ効率の良い方法により、ＮｏＣ１０８のネットワークルータ１２２ごとに５つの予約レジスタ６００の維持は、メモリおよびエネルギーコストが比較的かなり小さくてよい。上記の例４×４タイル状マルチコアプロセッサにおいて、タイムスロット粒度が２サイクルである場合、各予約レジスタ６００は、１４６ビット（すなわち２０バイト）を有し、したがって合計の５つの予約レジスタ６００で１００バイトを使用する。結果として、ＮｏＣ１０８内のネットワークルータ１２２のための５つの予約レジスタ６００の実装により、ＮｏＣ１０８においてハードウェアおよびエネルギーオーバヘッドは比較的非常に小さくてよい。
【００５１】
動作中に、予約レジスタ６００のビット値は、ビット６０１の１つによって表されるタイムスロット粒度ごとに左にシフトされてよく、それによって、予約レジスタ６００を含むネットワークルータ１２２の将来のリソース使用可能性を効率的に追跡することができる。予約レジスタ６００は、図４における接続設定メッセージ４０２に含まれる事前予約要求のような新しい事前予約要求に対してリソース使用可能性を確認するために使用され得る。予約レジスタ６００を含むネットワークルータ１２２が事前予約要求６３０を受信すると、ネットワークルータ１２２の使用可能性を判断するために、事前予約要求に対応する時間期間６３１が予約レジスタ６００と比較され得る。時間期間６３１が、事前予約ウィンドウ６１０または６２０のいずれかの１または複数のビットと重なるので、事前予約要求はネットワークルータ１２２によって拒否され得る。いくつかの実施形態では、そのような比較は、登録レジスタ６００と事前予約要求６３０との間のビット単位のＡＮＤ演算を実行することで行うことができる。そのような実施形態では、結果がゼロと等しくないとき、それらの間に重複が存在し、事前予約要求が拒否され得る。あるいは、登録要求６３０と登録レジスタ６００との間の重複を決定するために他の論理機能が使用されてもよい。
【００５２】
図７は、各時間期間がビット６０１で表される時間の長さに等しい３つの時間期間が経過した後の予約レジスタ６００を概略的に示す。したがって、各ビット６０１が２クロックサイクルの時間期間を表すとき、図７は、図６の予約レジスタ６００の例よりも６クロックサイクル後の予約レジスタ６００を示す。３つの時間期間が経過しているので、事前予約ウィンドウ６１０または６２０に対応する「１」の値は、予約レジスタ６００において３ビット左にシフトされ得る。したがって、やはり予約レジスタ６００を含むネットワークルータ１２２が、予約レジスタ６００の第１の７つの時間期間６５１〜６５７で発生する事前予約要求６３０（または任意の他の事前登録要求）を受信すると、ネットワークルータ１２２は、事前予約要求６３０を受け取ることができる。図７に示すように、事前予約要求６３０は、時間期間６５１〜６５７で発生する時間期間６３２にここで対応し、事前予約ウィンドウ６１０または６２０のいずれかと重ならない。結果として、この事例では、予約レジスタ６００を含むネットワークルータ１２２が、事前予約要求６３０を受け取ることができ、それに応じてビット６０１を更新することができる。
【００５３】
図８は、本開示の実施形態による、ＮｏＣにおいてデータを送信する例示的方法８００を要約するフローチャートを示す。方法８００は、ブロック８０１および／または８０２の１つまたは複数によって示される１つまたは複数の動作、機能、またはアクションを含むことができる。ブロックは順番に示されているが、これらのブロックは、並行に、かつ／または本明細書で説明されるのと異なる順序で行われてもよい。また、様々なブロックが、所望の実装形態に基づいて、より少数のブロックに組み合わされ、さらなるブロックに分割され、かつ／または除去されてもよい。他の動作、機能、またはアクションを表す追加のブロックが与えられてもよい。方法８００は図１のＣＭＰ１００と関連して説明されているが、方法８００を実施するように適宜に構成されたいかなるＣＭＰも本開示の範囲内にある。
【００５４】
方法８００は、ブロック８０１「ネットワークデバイスからメモリ要求を受信する」で開始することができる。ブロック８０１の後にブロック８０２「接続設定メッセージおよびメモリ要求をソースノードに送信する」が続くことができる。
【００５５】
ブロック８０１では、図１のネットワークルータ１２２などのネットワークルータが、ＣＭＰ１００上のＮｏＣのネットワークデバイスからメモリ要求を受信する。たとえば、ネットワークデバイスは、ＮｏＣのタイルに配置されたプロセッサコアとすることができる。
【００５６】
ブロック８０２では、ネットワークルータは、ブロック８０１で受信した接続設定メッセージおよびメモリ要求をＮｏＣにおけるソースノードに送信する。接続設定メッセージは、ソースルータから宛先ルータへの回線交換接続のための宛先ルータおよびソースルータを事前予約するコマンドを含むことができる。
【００５７】
図９は、要求されたデータがソースノードから宛先ノードへの送信のために使用可能である前に、ソースノードと宛先ノードとの間の回線交換接続を事前予約するための方法を実装する、コンピュータプログラム製品９００の例示的な実施形態のブロック図である。コンピュータプログラム製品９００は、信号伝達媒体９０４を含むことができる。信号伝達媒体９０４は、たとえば、コンピューティングデバイスのプロセッサによって実行されたときに、少なくとも図１〜８に関連して上述した機能性を提供することができる１つまたは複数のセットの実行可能命令９０２を含むことができる。
【００５８】
いくつかの実装形態では、信号伝達媒体９０４は、以下に限定されないが、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、デジタルテープ、メモリなど、非一時的コンピュータ可読媒体９０８を包含し得る。いくつかの実装形態では、信号伝達媒体９０４は、以下に限定されないが、メモリ、読取り／書込み（Ｒ／Ｗ）ＣＤ、Ｒ／Ｗ  ＤＶＤなど、記録可能媒体９１０を包含し得る。いくつかの実装形態では、信号伝達媒体９０４は、以下に限定されないが、デジタルおよび／またはアナログ通信媒体（たとえば、光ファイバケーブル、導波路、有線通信リンク、無線通信リンクなど）などの通信媒体９０６を包含し得る。コンピュータプログラム製品９００は、非一時的コンピュータ可読媒体９０８または別の同様の記録可能媒体９１０上に記録され得る。
【００５９】
図１０は、本開示の少なくともいくつかの実施形態に従って、ＣＭＰ、たとえば、図１のＣＭＰ１００を使用して動作するように構成された例示的コンピューティングデバイスを示すブロック図である。非常に基本的な構成１００２において、コンピューティングデバイス１０００が、一般的に１つまたは複数のプロセッサ１００４およびシステムメモリ１００６を含むことができる。メモリバス１００８が、プロセッサ１００４とシステムメモリ１００６との間の通信のために使用されてよい。
【００６０】
所望の構成に応じて、プロセッサ１００４は、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタル信号プロセッサ（ＤＳＰ）、またはこれらの任意の組合せを含むがこれらに限定されない任意のタイプのものであってよい。プロセッサ１００４は、レベル１キャッシュ１０１０およびレベル２キャッシュ１０１２など、１または複数のレベルのキャッシングと、プロセッサコア１０１４と、レジスタ１０１６とを含むことができる。例示的プロセッサコア１０１４には、算術論理ユニット（ＡＬＵ）、浮動小数点演算ユニット（ＦＰＵ）、デジタル信号処理コア（ＤＳＰコア）、またはこれらの任意の組合せが含まれ得る。プロセッサ１００４は、以下に限定されないがＦＰＧＡ、パッチ可能ＡＳＩＣ、およびＣＰＬＤなどのプログラマブル論理回路を含んでよい。プロセッサ１００４は、図１のＣＭＰ１００と同様であってもよい。例示的メモリコントローラ１０１８はプロセッサ１００４と共に使用されてよいが、いくつかの実装形態では、メモリコントローラ１０１８はプロセッサ１００４の内部部品であってもよい。
【００６１】
所望の構成に応じて、システムメモリ１００６は、揮発性メモリ（たとえば、ＲＡＭ）、不揮発性メモリ（たとえば、ＲＯＭ、フラッシュメモリなど）、またはこれらの任意の組合せを含むがこれらに限定されない任意のタイプのものであってよい。システムメモリ１００６は、オペレーティングシステム１０２０、１つまたは複数のアプリケーション１０２２、およびプログラムデータ１０２４を含むことができる。プログラムデータ１０２４は、コンピューティングデバイス１０００の動作に有用であり得るデータを含むことができる。いくつかの実施形態では、アプリケーション１０２２は、オペレーティングシステム１０２０上でプログラムデータ１０２４を用いて動作して、ネットワークオンチップ（ＮｏＣ）においてデータを送信する方法をコンピューティングデバイス１０００に実施させるように構成されてよい。図１０では、この説明された基本構成１００２が、内側の破線内のコンポーネントによって示されている。
【００６２】
コンピューティングデバイス１０００は、基本構成１００２と任意の必要なデバイスおよびインターフェースとの間の通信を容易にするために、追加の特徴または機能性および追加のインターフェースを有してもよい。たとえば、バス／インターフェースコントローラ１０９０が、ストレージインターフェースバス１０９４を介して基本構成１００２と１つまたは複数のデータ記憶装置１０９２との間の通信を容易にするために使用されてもよい。データ記憶装置１０９２は、取外し式記憶装置１０９６、非取外し式記憶装置１０９８、またはこれらの組合せであってよい。取外し式記憶装置および非取外し式記憶装置の例として、いくつかの例を挙げると、フレキシブルディスクドライブおよびハードディスクドライブ（ＨＤＤ）などの磁気ディスクデバイス、コンパクトディスク（ＣＤ）ドライブまたはデジタル多用途ディスク（ＤＶＤ）ドライブなどの光ディスクドライブ、ソリッドステートドライブ（ＳＳＤ）、およびテープドライブがある。例示的コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のための任意の方法または技術で実装される、揮発性および不揮発性の取外し式および非取外し式の媒体が含まれ得る。
【００６３】
システムメモリ１００６、取外し式記憶装置１０９６、および非取外し式記憶装置１０９８は、コンピュータ記憶媒体の例である。コンピュータ記憶媒体としては、以下に限定されないが、所望の情報を記憶するために使用でき、またコンピュータデバイス１０００によってアクセスできる、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、あるいは任意の他の媒体が含まれる。任意のそのようなコンピュータ記憶媒体が、コンピュータデバイス１０００の一部であってもよい。
【００６４】
コンピュータデバイス１０００は、様々なインターフェースデバイス（たとえば、出力装置１０４２、周辺インターフェース１０４４、および通信装置１０４６）からバス／インターフェースコントローラ１０９０を介して基本構成１００２への通信を容易にするためのインターフェースバス１０４０を含むこともできる。例示的出力装置１０４２は、１つまたは複数のＡ／Ｖポート１０５２を介してディスプレイまたはスピーカなどの様々な外部装置へ通信するように構成され得るグラフィック処理ユニット１０４８およびオーディオ処理ユニット１０５０を含む。例示的周辺インターフェース１０４４は、１つまたは複数のＩ／Ｏポート１０５８を介して入力装置（たとえば、キーボード、マウス、ペン、音声入力装置、タッチ入力装置など）または他の周辺装置（たとえば、プリンタ、スキャナなど）などの外部装置と通信するように構成され得るシリアルインターフェースコントローラ１０５４またはパラレルインターフェースコントローラ１０５６を含む。例示的通信デバイス１０４６は、１つまたは複数の通信ポート１０６４を通ってネットワーク通信リンクを介して１つまたは複数の他のコンピューティングデバイス１０６２との通信を容易にするように構成され得る、ネットワークコントローラ１０６０を含み、ネットワーク通信リンクとしては、限定するものではないが、光ファイバ、ロングタームエボリューション（ＬＴＥ）、３Ｇ、ＷｉＭａｘなどがある。
【００６５】
ネットワーク通信リンクは、通信媒体の一例とすることができる。通信媒体は、一般に、搬送波や他の移送機構などの変調データ信号におけるコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータによって具現化されてよく、任意の情報送達媒体を含み得る。「変調データ信号」とは、その特性の１つまたは複数が信号において情報を符号化するように設定または変更されている信号とすることができる。限定ではなく例として、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、および音響、無線周波数（ＲＦ）、マイクロ波、赤外線（ＩＲ）、他の無線媒体などの無線媒体が含まれ得る。本明細書で使用されるコンピュータ可読媒体という用語は、記憶媒体と通信媒体の両方を含み得る。
【００６６】
コンピューティングデバイス１０００は、携帯電話、携帯情報端末（ＰＤＡ）、パーソナルメディアプレーヤーデバイス、無線ウェブウォッチデバイス、パーソナルハンドセットデバイス、アプリケーション固有デバイス、上記機能のいずれかを含むハイブリッドデバイスなど、スモールフォームファクタ携帯（またはモバイル）電子デバイスの一部として実装されてもよい。コンピューティングデバイス１０００は、ラップトップコンピュータ構成と非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとして実装されてもよい。
【００６７】
システムの実施形態でのハードウェアの実装形態とソフトウェアの実装形態との間には、ほとんど相違が残されていない。ハードウェアまたはソフトウェアの使用は、一般に（いつもそうではないが、ある状況ではハードウェアとソフトウェアの間の選択が重要になり得るという点で）コスト対効果のトレードオフを表す設計上の選択である。本明細書に記載された、プロセスおよび／またはシステムおよび／または他の技術をもたらすことができる様々な達成手段があり（たとえば、ハードウェア、ソフトウェア、および／またはファームウェア）、好ましい達成手段は、プロセスおよび／またはシステムおよび／または他の技術が導入される状況によって異なる。たとえば、実装者が速度と正確性が最も重要であると決定すると、実装者は主にハードウェアおよび／またはファームウェアの達成手段を選択することができる。フレキシビリティが最も重要なら、実装者は主にソフトウェアの実装形態を選択することができる。または、さらに別の代替案として、実装者は、ハードウェア、ソフトウェア、および／またはファームウェアのなんらかの組合せを選択することができる。
【００６８】
前述の詳細な説明では、ブロック図、フローチャート、および／または例の使用によって、装置および／またはプロセスの様々な実施形態を説明してきた。そのようなブロック図、フローチャート、および／または例が１つまたは複数の機能および／または動作を含む限りにおいて、そのようなブロック図、フローチャート、または例の中のそれぞれの機能および／または動作は、広範囲のハードウェア、ソフトウェア、ファームウェア、または実質上それらのすべての組合せにより、個別におよび／または集合的に実装可能であることが、当業者には理解されるであろう。ある実施形態では、本明細書に記載された主題のいくつかの部分は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタルシグナルプロセッサ（ＤＳＰ）、または他の集積化方式によって実装することができる。しかし、本明細書で開示された実施形態のいくつかの態様が、全体においてまたは一部において、１つまたは複数のコンピュータ上で動作する１つまたは複数のコンピュータプログラムとして（たとえば、１つまたは複数のコンピュータシステム上で動作する１つまたは複数のプログラムとして）、１つまたは複数のプロセッサ上で動作する１つまたは複数のプログラムとして（たとえば、１つまたは複数のマイクロプロセッサ上で動作する１つまたは複数のプログラムとして）、ファームウェアとして、あるいは実質上それらの任意の組合せとして、等価に集積回路に実装することができることを、当業者は認識するであろうし、電気回路の設計ならびに／またはソフトウェアおよび／もしくはファームウェアのコーディングが、本開示に照らして十分当業者の技能の範囲内であることを、当業者は認識するであろう。さらに、本明細書に記載された主題のメカニズムを様々な形式のプログラム製品として配布することができることを、当業者は理解するであろうし、本明細書に記載された主題の例示的な実施形態が、実際に配布を実行するために使用される信号伝達媒体の特定のタイプにかかわらず適用されることを、当業者は理解するであろう。信号伝達媒体の例には、フロッピーディスク、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、デジタルテープ、コンピュータメモリ、などの記録可能なタイプの媒体、ならびに、デジタル通信媒体および／またはアナログ通信媒体（たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）の通信タイプの媒体が含まれるが、それらには限定されない。
【００６９】
本明細書で説明したやり方で装置および／またはプロセスを記載し、その後そのように記載された装置および／またはプロセスを、データ処理システムに統合するためにエンジニアリング方式を使用することは、当技術分野で一般的であることを当業者は認識するであろう。すなわち、本明細書に記載された装置および／またはプロセスの少なくとも一部を、妥当な数の実験によってデータ処理システムに統合することができる。通常のデータ処理システムは、一般に、システムユニットハウジング、ビデオディスプレイ装置、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステムなどの計算実体、ドライバ、グラフィカルユーザインターフェース、およびアプリケーションプログラムのうちの１つもしくは複数、タッチパッドもしくはスクリーンなどの１つもしくは複数の相互作用装置、ならびに／またはフィードバックループおよびコントロールモータを含むコントロールシステム（たとえば、位置検知用および／もしくは速度検知用フィードバック、コンポーネントの移動用および／もしくは数量の調整用コントロールモータ）を含むことを、当業者は理解するであろう。通常のデータ処理システムは、データコンピューティング／通信システムおよび／またはネットワークコンピューティング／通信システムの中に通常見られるコンポーネントなどの、市販の適切なコンポーネントを利用して実装することができる。
【００７０】
本明細書に記載された主題は、様々なコンポーネントをしばしば例示しており、これらのコンポーネントは、他の様々なコンポーネントに包含されるか、または他の様々なコンポーネントに接続される。そのように図示されたアーキテクチャは、単に例示にすぎず、実際には、同じ機能を実現する多くの他のアーキテクチャが実装可能であることが理解されよう。概念的な意味で、同じ機能を実現するコンポーネントの任意の構成は、所望の機能が実現されるように効果的に「関連付け」される。したがって、特定の機能を実現するために組み合わされた、本明細書における任意の２つのコンポーネントは、アーキテクチャまたは中間のコンポーネントにかかわらず、所望の機能が実現されるように、お互いに「関連付け」されていると見ることができる。同様に、そのように関連付けされた任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に接続」または「動作可能に結合」されているとみなすこともでき、そのように関連付け可能な任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に結合できる」とみなすこともできる。動作可能に結合できる場合の具体例には、物理的にかみ合わせ可能な、および／もしくは物理的に相互作用するコンポーネント、ならびに／またはワイヤレスに相互作用可能な、および／もしくはワイヤレスに相互作用するコンポーネント、ならびに／または論理的に相互作用する、および／もしくは論理的に相互作用可能なコンポーネントが含まれるが、それらに限定されない。
【００７１】
本明細書における実質的にすべての複数形および／または単数形の用語の使用に対して、当業者は、状況および／または用途に適切なように、複数形から単数形に、および／または単数形から複数形に変換することができる。様々な単数形／複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【００７２】
通常、本明細書において、特に添付の特許請求の範囲（たとえば、添付の特許請求の範囲の本体部）において使用される用語は、全体を通じて「オープンな（ｏｐｅｎ）」用語として意図されていることが、当業者には理解されよう（たとえば、用語「含む（ｉｎｃｌｕｄｉｎｇ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、用語「有する（ｈａｖｉｎｇ）」は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきである、など）。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、不定冠詞「ａ」または「ａｎ」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に１つのそのような記載を含む発明に限定する、ということを示唆していると解釈されるべきではない（たとえば、「ａ」および／または「ａｎ」は、通常、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである）。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、通常、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう（たとえば、他の修飾語なしでの「２つの記載（ｔｗｏ  ｒｅｃｉｔａｔｉｏｎｓ）」の単なる記載は、通常、少なくとも２つの記載、または２つ以上の記載を意味する）。さらに、「Ａ、ＢおよびＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、およびＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない）。「Ａ、Ｂ、またはＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、またはＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、など���有するシステムを含むが、それに限定されない）。２つ以上の代替用語を提示する事実上いかなる離接する語および／または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方（ｏｎｅ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、当該用語のいずれか（ｅｉｔｈｅｒ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、または両方の用語（ｂｏｔｈ  ｔｅｒｍｓ）を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「ＡまたはＢ」は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含むことが理解されよう。
【００７３】
様々な態様および実施形態が本明細書に開示されているが、他の態様および実施形態も当業者には明らかであろう。本明細書に開示された様々な態様および実施形態は、例示を目的としており、限定を意図するものでなく、真の範囲および趣旨は、添付の特許請求の範囲によって示される。
【図６】
2016531529.tif 000003
【図７】
2016531529.tif 000004
【図１】
2016531529.tif 000005
【図２】
2016531529.tif 000006
【図３】
2016531529.tif 000007
【図４】
2016531529.tif 000008
【図５】
2016531529.tif 000009
【図８】
2016531529.tif 000010
【図９】
2016531529.tif 000011
【図１０】
2016531529.tif 000012
【手続補正書】
【提出日】平成28年4月27日(2016.4.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークオンチップ（ＮｏＣ）であって、
ソースルータを含む前記ＮｏＣのソースノードと、
前記ソースノードに通信可能に結合された前記ＮｏＣの宛先ノードと
を備え、前記宛先ノードは、宛先ルータおよびネットワークデバイスを含み、前記宛先ルータは、
前記ネットワークデバイスからメモリ要求を受信し、
前記メモリ要求の反対方向のポートを伴う回線交換接続を事前予約し、
接続設定メッセージおよび前記メモリ要求を前記ソースノードに送信する
ように構成され、前記接続設定メッセージは、前記事前予約した回線交換接続のために前記ソースルータを事前予約するのに有効なコマンドを含む、ネットワークオンチップ。
【請求項２】
前記ソースノードと前記宛先ノードとの間にある中間ノードをさらに備え、前記中間ノードは、中間ルータを含み、前記接続設定メッセージに含まれたコマンドはさらに、前記回線交換接続のために前記中間ルータを事前予約するのに有効である、請求項１に記載のＮｏＣ。
【請求項３】
前記宛先ルータは、前記接続設定メッセージおよび前記メモリ要求を単一メッセージとして送信するようにさらに構成される、請求項１に記載のＮｏＣ。
【請求項４】
前記ネットワークデバイスは、前記宛先ルータと同じ場所に配置されたプロセッサコアを含む、請求項１に記載のＮｏＣ。
【請求項５】
前記宛先ルータは、特定の時間期間にわたって前記宛先ルータの事前予約を追跡するように構成された予約レジスタを含む、請求項１に記載のＮｏＣ。
【請求項６】
前記特定の時間期間は、クロックサイクルに関して追跡され、前記予約レジスタは、複数のビットを含み、前記複数のビットの各々が、前記ＮｏＣに関連付けられた特定のセットのクロックサイクルについて前記宛先ルータの事前予約を追跡する、請求項５に記載のＮｏＣ。
【請求項７】
前記特定の時間期間は、前記ＮｏＣのノードと前記ＮｏＣに結合されたメモリコントローラとの間で生じ得る最長のラウンドトリップ通信時間に少なくとも部分的に基づく、請求項５に記載のＮｏＣ。
【請求項８】
前記特定の時間期間は、前記ＮｏＣのノードと前記ＮｏＣに結合されたメモリコントローラとの間で生じ得る最短のラウンドトリップ通信時間に少なくとも部分的に基づく、請求項５に記載のＮｏＣ。
【請求項９】
前記接続設定メッセージは、前記宛先ルータを使用するための要求された時間期間を示す事前予約ウィンドウを含む、請求項１に記載のＮｏＣ。
【請求項１０】
前記事前予約ウィンドウは、前記ソースノードにおけるデータの使用可能性の不確実性と、前記宛先ノードから前記ソースノードへの前記接続設定メッセージの送信時間の不確実性との少なくとも一方に少なくとも部分的に基づく安全マージンを含む、請求項９に記載のＮｏＣ。
【請求項１１】
前記宛先ルータは、前記ソースノードにおけるデータの使用可能推定時間に少なくとも部分的に基づいて、前記事前予約ウィンドウを計算するようにさらに構成される、請求項９に記載のＮｏＣ。
【請求項１２】
前記ソースノードと前記宛先ノードとの間の回線交換経路に沿って配置された前記ＮｏＣの中間ノードをさらに備え、前記中間ノードは、中間ルータを含み、前記接続設定メッセージは、前記中間ルータを事前予約するように構成された追加コマンドを含み、前記宛先ルータは、前記ソースノードにおけるデータの使用可能推定時間に少なくとも部分的に基づいて、前記中間ルータについての事前予約ウィンドウを決定するようにさらに構成される、請求項９に記載のＮｏＣ。
【請求項１３】
前記事前予約ウィンドウは、前記メモリ要求に関連付けられたデータの量と、前記ソースノードと前記宛先ノードの間の送信時間とのうちの１または複数に基づく、請求項９に記載のＮｏＣ。
【請求項１４】
ネットワークオンチップ（ＮｏＣ）であって、前記ＮｏＣのノードに配設されたルータを備え、前記ルータは、
前記ＮｏＣの宛先ノードから発信された接続設定メッセージであって、回線交換接続において前記ルータを使用するための要求された時間フレームを示す予約ウィンドウを含む、接続設定メッセージを受信し、
前記要求された時間フレーム中の前記回線交換接続における使用のための前記ルータの使用可能性を判断し、
前記要求された時間フレーム中に前記ルータが使用可能であるとの判断に応じて、前記接続設定メッセージの反対方向のポートを伴う前記回線交換接続を予約し、前記接続設定メッセージを送信する
ように構成される、ネットワークオンチップ。
【請求項１５】
前記ルータは、前記接続設定メッセージおよび確認応答メッセージを、前記ＮｏＣのソースノードに送信するようにさらに構成され、前記ソースノードは、前記接続設定メッセージ内で参照される、請求項１４に記載のＮｏＣ。
【請求項１６】
前記ルータは、確認応答メッセージを前記接続設定メッセージに追加し、前記確認応答メッセージおよび前記接続設定メッセージを単一メッセージとして送信するようにさらに構成される、請求項１４に記載のＮｏＣ。
【請求項１７】
前記接続設定メッセージは、前記宛先ノードに配設されたネットワークデバイスからのメモリ要求をさらに含む、請求項１４に記載のＮｏＣ。
【請求項１８】
前記回線交換接続は、前記接続設定メッセージ内で参照される前記ＮｏＣのソースノードと前記宛先ノードとの間の回線交換接続を含み、前記回線交換接続は、前記ＮｏＣにおいて前記接続設定メッセージが辿るのと同じルートであるが反対方向にルートを辿る、請求項１４に記載のＮｏＣ。
【請求項１９】
前記要求された時間フレームは、前記接続設定メッセージ内で参照される前記ＮｏＣのソースノードにおけるデータの使用可能推定時間に基づく、請求項１４に記載のＮｏＣ。
【請求項２０】
前記ルータは、特定の時間期間にわたって前記ルータの事前予約を追跡するように構成された予約レジスタを介して、前記ルータの使用可能性を判断するようにさらに構成される、請求項１４に記載のＮｏＣ。
【請求項２１】
回線交換およびパケット交換を行うように構成されたその他のルータをさらに備える、請求項１４に記載のＮｏＣ。
【請求項２２】
ネットワークオンチップ（ＮｏＣ）においてデータを送信する方法であって、
前記ＮｏＣのネットワークデバイスからメモリ要求を受信すること、ならびに
接続設定メッセージおよび前記メモリ要求を前記ＮｏＣにおけるソースノードに送信することを含み、
前記接続設定メッセージは、宛先ルータおよびソースルータを、前記ソースノードから前記宛先ルータへの回線交換接続のために事前予約するコマンドを含む、方法。
【請求項２３】
前記接続設定メッセージと共に確認応答メッセージを前記ＮｏＣの前記ソースノードに送信することをさらに含む、請求項２２に記載の方法。
【請求項２４】
前記接続設定メッセージは、前記ソースノードから前記宛先ルータへの前記回線交換接続のために、前記ソースノードと宛先ノードとの間の回線交換経路に沿って配置された前記ＮｏＣの中間ノードを事前予約するコマンドをさらに含む、請求項２３に記載の方法。
【請求項２５】
前記接続設定メッセージを送信することは、前記ネットワークデバイスと同じ場所に配置された前記宛先ルータを事前予約するコマンドを含む前記接続設定メッセージを送信することを含む、請求項２２に記載の方法。
【請求項２６】
前記宛先ルータを事前予約するための前記コマンドは、第１の時間期間に対応し、前記ソースルータを事前予約するための前記コマンドは、第２の時間期間に対応し、前記第１の時間期間は、前記第２の時間期間の一部分のみと重なる、請求項２２に記載の方法。
【請求項２７】
前記宛先ルータを事前予約するための前記コマンドは、第１の時間期間に対応し、前記ソースルータを事前予約するための前記コマンドは、第２の時間期間に対応し、前記第１の時間期間は、前記第２の時間期間とは重ならない、請求項２２に記載の方法。
【請求項２８】
コンピュータ実行可能命令を具現化する非一時的コンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、コンピュータによる実行に応答して、請求項２２に記載の方法を前記コンピュータに実施させる、非一時的コンピュータ可読記憶媒体。
【国際調査報告】
2016531529.tif 000013