(57)【特許請求の範囲】
【請求項１】
プロセッサのノード間の犠牲トラフィックおよび非犠牲トラフィックを監視するステップと、
前記ノード間の高帯域幅リンクを利用する前記犠牲トラフィック用のルーティングスキームと、前記ノード間の低帯域幅リンクを利用する前記非犠牲トラフィック用のルーティングスキームとを選択するステップと、
前記ルーティングスキームを有効にするために制御レジスタを設定するステップと、
を含む、方法。
【請求項２】
前記制御レジスタを設定するステップは、特定のプロセッサノード対について分散が有効になった場合に、ルーティングモードビットを設定するステップを含む、請求項１に記載の方法。
【請求項３】
前記制御レジスタを設定するステップは、
前記分散に関連する前記プロセッサノードごとに分散ノード識別ビットを設定するステップと、
目的地リンク要素を設定するステップと、
を含む、請求項２に記載の方法。
【請求項４】
前記制御レジスタを設定するステップは、コヒーレントなリクエスト分散イネーブルビットを設定して、犠牲リクエストを処理するために前記ルーティングスキームが有効になったことを示すステップを含む、請求項１に記載の方法。
【請求項５】
前記制御レジスタを設定するステップは、コヒーレントな応答分散イネーブルビットを設定して、犠牲レスポンスを処理するために前記ルーティングスキームが有効になったことを示すステップを含む、請求項１に記載の方法。
【請求項６】
前記高帯域幅リンクの前記犠牲トラフィックは、連動ツーホップリクエストを含み、前記低帯域幅リンクの前記非犠牲トラフィックは、非連動ワンホップリクエストを含む、請求項１に記載の方法。
【請求項７】
前記ルーティングスキームを前記プロセッサにて実行するステップをさらに含み、前記プロセッサは、少なくとも３つのノードを含み、第１のプロセッサノードは、低帯域幅リンクによって第２のプロセッサノードに接続されており、第３のプロセッサノードは、第１の高帯域幅リンクによって前記第１のプロセッサノードに接続され、且つ、第２の高帯域幅リンクによって前記第２のプロセッサノードに接続されており、
犠牲トラフィックは、前記第１の高帯域幅リンクおよび第２の高帯域幅リンクに沿って、前記第１のプロセッサノードから前記第２のプロセッサノードにルーティングされ、非犠牲トラフィックは、前記低帯域幅リンクに沿って、前記第１のプロセッサノードから前記第２のプロセッサノードにルーティングされる、
請求項１に記載の方法。
【請求項８】
第１のプロセッサノードであって、低帯域幅リンクによって第２のプロセッサノードに接続された第１のプロセッサノードと、
第３のプロセッサノードであって、第１の高帯域幅リンクによって前記第１のプロセッサノードに接続され、且つ、第２の高帯域幅リンクによって前記第２のプロセッサノードに接続された第３のプロセッサノードと、
を含み、
各プロセッサノードは、
クロスバースイッチに接続された複数のコンピューティングユニットであって、前記クロスバースイッチは、前記コンピューティングユニットから指定リンクに送られたトラフィックを制御するように構成されたものである、前記複数のコンピューティングユニットを備え、
前記コンピューティングユニットは、前記指定リンクを決定するためのルーティングスキームを規定する情報を有する制御レジスタを設定するように構成されており、
前記クロスバースイッチは、前記ルーティングスキームが実行されると、前記第１の高帯域幅リンクおよび前記第２の高帯域幅リンクにて犠牲トラフィックの送信を行い、且つ、前記低帯域幅リンクにて非犠牲トラフィックの送信を行うように制御される、
プロセッサ。
【請求項９】
特定のプロセッサノード対について分散が有効になった場合には、前記複数のコンピューティングユニットのうち少なくとも１つは、ルーティングモードビットを前記制御レジスタに設定する、請求項８に記載のプロセッサ。
【請求項１０】
前記複数のコンピューティングユニットのうち少なくとも１つは、前記分散に関連する前記プロセッサノードごとに、分散ノード識別ビットを前記制御レジスタに設定し、目的地リンク要素を設定する、請求項９に記載のプロセッサ。
【請求項１１】
前記複数のコンピューティングユニットのうち少なくとも１つは、コヒーレントなリクエスト分散イネーブルビットを前記制御レジスタに設定して、犠牲リクエストを処理するために前記ルーティングスキームが有効になったことを示す、請求項８に記載のプロセッサ。
【請求項１２】
前記複数のコンピューティングユニットのうち少なくとも１つは、コヒーレントな応答分散イネーブルビットを前記制御レジスタに設定して、犠牲レスポンスを処理するために前記ルーティングスキームが有効になったことを示す、請求項８に記載のプロセッサ。
【請求項１３】
前記高帯域幅リンクの前記犠牲トラフィックは、連動ツーホップリクエストを含み、前記低帯域幅リンクの前記非犠牲トラフィックは、非連動ワンホップリクエストを含む、請求項８に記載のプロセッサ。
【請求項１４】
スプリットルーティングスキームを行うために１つ以上のプロセッサによって実行される１組の命令を保存するコンピュータ読み出し可能な記憶媒体であって、
前記１組の命令は、
プロセッサのノード間の犠牲トラフィックおよび非犠牲トラフィックを監視することと、
前記ノード間の高帯域幅リンクを利用する前記犠牲トラフィック用のルーティングスキームと、前記ノード間の低帯域幅リンクを利用する前記非犠牲トラフィック用のルーティングスキームとを選択することと、
を前記プロセッサに実行させるためのものである、記憶媒体。
【請求項１５】
前記高帯域幅リンクの前記犠牲トラフィックは、連動ツーホップリクエストを含み、前記低帯域幅リンクの前記非犠牲トラフィックは、非連動ワンホップリクエストを含む、請求項１４に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、米国非仮出願番号第１２／９６８，８５７号（出願日：２０１０年１２月１５日）の利益を主張する。本明細書中、同文献の内容を参考のため援用する。
【０００２】
本出願は、プロセッサのトラフィックルーティングに関する。
【背景技術】
【０００３】
複数の処理ユニットによって構成されるプロセッサにおいて、各処理ユニットは、複数のコアまたはコンピューティングユニットを有する。このようなプロセッサでは、コアとメモリキャッシュとの間に異なる帯域幅のリンクを設けることにより、トラフィック転送が可能となる。これらのリンクの何れかにてトラフィック混雑が発生した場合、当該プロセッサの性能が劣化する。混雑軽減のためにトラフィックルーティングを迂回させた場合、目的地までのホップが増加する要因になり得、その結果、１回の転送にかかる待ち時間が増加することになる。
【発明の概要】
【０００４】
マルチチップモジュール構成は、２つのプロセッサを含む。各プロセッサは、２つのノードを有する。各ノードは、複数のコアまたはコンピューティングユニットを含む。各ノードは、リンクによって他のノードに接続されている。上記リンクは、高帯域幅または低帯域幅である。上記ノード間のトラフィックルーティングは、各ノードにおいて、ルーティングテーブルおよび／または制御レジスタに従って制御される。上記ルーティングテーブルおよび／または制御レジスタは、帯域幅使用量およびトラフィック混雑制御を最適化する。
【図面の簡単な説明】
【０００５】
【図１】プロセッサノードの例示的機能ブロック図である。プロセッサノードは、いくつかのコンピューティングユニットと、ルーティングテーブルと、クロスバーユニットとを含む。クロスバーユニットは、他のノードへのリンクとインターフェースをとる。
【図２】プロセッサ構成の例示的機能ブロック図である。プロセッサは、プロセッサノード間の多様なリンクにわたるトラフィックフローを有する。
【図３】プロセッサ構成の例示的機能ブロック図である。プロセッサは、プロセッサノード間の多様なリンクにわたるトラフィックフローを有する。
【図４】プロセッサ構成の例示的機能ブロック図である。プロセッサは、プロセッサノード間の多様なリンクにわたるトラフィックフローを有する。
【発明を実施するための形態】
【０００６】
本出願において、プロセッサは、複数のノードを含み得る。各ノードは、複数のコンピューティングユニットを有する。マルチチッププロセッサは、少なくとも２つのプロセッサを含むように構成されている。上記少なくとも２つのプロセッサは、上記ノードを、他のノードおよびメモリキャッシュとリンクさせる手段を含む。
【０００７】
図１は、プロセッサ１１０の例示的機能ブロック図である。プロセッサ１１０は、多様なプロセッサ（例えば、中央処理装置（ＣＰＵ）またはグラフィックス処理ユニット（ＧＰＵ））のうち何れか１つであり得る。例えば、プロセッサ１１０は、ｘ８６プロセッサであり得、ｘ８６  ６４ビット命令セットアーキテクチャを実装し、デスクトップ、ラップトップ、サーバおよびスーパースケーラコンピュータにおいて用いられる場合もあれば、携帯電話またはデジタルメディアプレーヤにて用いられる高度ＲＩＳＣ（縮小命令セットコンピュータ）マシン（ＡＲＭ）プロセッサである場合もある。プロセッサの他の実施形態が企図される（例えば、デジタル信号プロセッサ（ＤＳＰ）、マイクロコントローラ）。デジタル信号プロセッサ（ＤＳＰ）は、デジタル信号（例えば、音声データ信号や通信信号）に関連するアルゴリズムの処理および実行において特に有用である。マイクロコントローラは、民生用アプリケーション（例えば、プリンタおよびコピー機）において有用である。
【０００８】
図に示されるように、プロセッサ１１０は、コンピューティングユニット１０５，１０６，１０７を含む。コンピューティングユニット１０５，１０６，１０７は、システムリクエストキュー（ＳＲＱ）１１３に接続されている。システムリクエストキュー（ＳＲＱ）１１３は、コンピューティングユニット１０５，１０６，１０７用のコマンドキューとして用いられる。クロスバー（Ｘｂａｒ）スイッチ１１２は、リンクＬ１，Ｌ２，Ｌ３，Ｌ４と、ＳＲＱ１１３との間でインターフェースをとる。ルーティングテーブル１１１および制御レジスタ１１４の各々は、リンクＬ１，Ｌ２，Ｌ３，Ｌ４を介してクロスバーインターフェース１１２およびトラフィックルーティングを制御するように構成されている。図１では、４つのリンクＬ１，Ｌ２，Ｌ３，Ｌ４が示されているが、これは例示的なものであり、これよりも多数または少数のリンクを、例えば多様なスループット能力のリンクなどを含むプロセッサノード１１０構成において実装することが可能である。
【０００９】
図２は、マルチプロセッサ構成２００の例示的機能ブロック図である。マルチプロセッサ構成２００において、２つのノードを含むプロセッサ２０１，２０２が、リンク２５３，２５４，２５５，２５６によって接続されている。プロセッサ２０１は、プロセッサノード１１０，１２０を含む。プロセッサノード１１０，１２０は、リンク２５１によって互いに接続されている。メモリキャッシュ２１０は、メモリチャネル２１１によってプロセッサノード１１０に接続されており、メモリキャッシュ２２０は、メモリチャネル２２１によってプロセッサノード１２０に接続されている。プロセッサ２０２は、プロセッサノード１３０，１４０を含む。プロセッサノード１３０，１４０は、リンク２５２によって互いに接続されている。メモリチャネル２３１は、メモリキャッシュ２３０をプロセッサノード１３０に接続し、メモリチャネル２４１は、メモリキャッシュ２４０をプロセッサノード１４０に接続する。リンク２５７，２５８は、例えばネットワークケーブルやグラフィックドライバなどのＩ／Ｏデバイス２０５，２０６を、プロセッサ２０１，２０２に接続するために用いられる。この例示的構成において、クロスリンク２５５，２５６の各々は、低帯域幅接続（例えば、８ビット接続またはハーフリンク）であり、リンク２５１，２５２，２５３，２５４の各々は、高帯域幅接続（例えば、１６ビット接続またはフルリンク）である。あるいは、リンク２５１，２５２，２５３，２５４のうち何れかは、複数の接続（例えば、１つのフルリンクおよび１つのハーフリンク）を含み得る。この例において、ルーティングテーブル１１１は、全てのノード間転送のためのダイレクトパス（直接路）を提供する。例えば、プロセッサノード１１０が、リクエスト２６１をプロセッサノード１４０に送る必要がある場合には、クロスリンク２５５は、ダイレクトパスとして用いられる。この形態のルーティング選択を用いた場合には、１つのリクエストに対する待ち時間が短くなる。統計的には、全てのリンクは、トラフィックを均等に分散する。従って、マルチプロセッサ構成２００のトラフィックレートの帯域幅上限は、より小さな帯域幅リンク２５５，２５６によって設定される。
【００１０】
図３は、マルチプロセッサ構成３００の例示的機能ブロック図である。マルチプロセッサ構成３００は、図２に示す構成２００に類似している。この例において、ルーティングテーブル１１１は、高帯域幅リンク２５１，２５２，２５３，２５４にトラフィックを保持するための別のルーティングスキームを提供する。例えば、プロセッサノード１１０が、プロセッサノード１４０への送信リクエストを有している場合には、ルーティングは、リンク２５１，２５４に沿うツーホップリクエスト３６１，３６２として構成される。そのため、この１つのリクエストのための待ち時間は、シングルホップリクエスト２６１の待ち時間のほぼ２倍になる。しかし、構成３００によるリクエストトラフィックの帯域幅上限は、リンク２５１，２５２，２５３，２５４の最小帯域幅に基づいて、より高くなる。この構成３００の任意選択的な代替例としては、低帯域幅リンク２５５，２５６で応答トラフィックを送信しつつ、高帯域幅リンク２５１，２５２，２５３，２５４の要求トラフィックを迂回させるためのルーティングテーブル１１１がある。ここで、応答トラフィックは、要求トラフィックよりも大幅に小さい。これにより、マルチプロセッサ構成３００の帯域幅上限は、高帯域幅リンク２５１，２５２，２５３，２５４の最小帯域幅に基づいて保持される。なぜならば、トラフィックのほとんどは、そこで迂回するからである。
【００１１】
図４は、スプリットトラフィックルーティングスキームのためのマルチプロセッサ構成４００の例示的機能ブロック図である。この物理的構成は、構成２００および３００に類似している。しかし、制御レジスタ１１４は、当該トラフィックが、犠牲リクエストおよび当該犠牲リクエストに関連付けられたレスポンスに関連しているのか、あるいは非犠牲リクエストおよびレスポンスに関連しているのかに基づいて、当該トラフィックを制御するように構成されている。このルーティングスキームによれば、犠牲リクエストおよび当該犠牲リクエストに関連付けられたレスポンスのみが、高帯域幅リンク２５１，２５２，２５３，２５４を辿る。犠牲トラフィックは、一般的に、待ち時間に影響を受けないため、このトラフィック用のツーホップ伝送ルーティングスキームは、プロセッサ性能を妨げない。このルーティングスキームは、一般的に、非犠牲トラフィックよりも犠牲トラフィックの量が多く、このような多量のトラフィックを、より高い帯域幅リンク２５１，２５２，２５３，２５４によってより良好に対応することが可能である、という点で好適である。さらに、退去された犠牲は、命令される必要がなく、非犠牲リクエストと比較して、より長いルーティング経路により適している。
【００１２】
犠牲リクエストおよび応答を、高帯域幅リンクに沿うスプリットルーティングスキームに従ってルーティングするために、特殊モードビットｃＨＴＶｉｃＤｉｓｔＭｏｄｅを、制御レジスタ１１４（例えば、コヒーレントなリンクトラフィック分散レジスタ）に設定する。例えば、リンク対（例えば、プロセッサノード対１１０，１４０）のトラフィック分散が有効になった場合には、コンピューティングユニット１０５，１０６，１０７は、モードビットｃＨＴＶｉｃＤｉｓｔＭｏｄｅに対して値１を設定し得る。あるいは、モードビットｃＨＴＶｉｃＤｉｓｔモードを１に設定することによって、当該対のトラフィック分散が有効にされることなく、スプリットトラフィックスキームが有効になった旨を示すことも可能である。また、コンピューティングユニット１０５，１０６，１０７が、制御レジスタ１１４に対して以下の設定を行うことにより、スプリットルーティングスキーム用のパラメータが有効および定義される。要素ＤｉｓｔＮｏｄｅ［５：０］内の分散ノード識別ビットが、分散に関連するプロセッサノードごとに設定される（例えば、２進値範囲が０〜３１であるこの５ビット要素について、値０がプロセッサノード１１０に割りあてられ得、値３がプロセッサノード１４０に割りあてられ得る）。目的地リンク要素ＤｓｔＬｎｋ［７：０］は、単一のリンクについて指定される。例えば、この８ビット要素について、ビット０がリンク２５１へ割りあてられ得、ビット１がリンク２５３に割りあてられ得、ビット２がリンク２５５に割りあてられ得、ビット０を値１に設定することにより、リンク２５１への目的地リンクの設定が達成される。プロセッサノード１１０用のこの有効設定スキームを例示的に用いて、犠牲パケットが検出され、且つ、当該犠牲パケットが、ビットＤｉｓｔＮｏｄｅ（例えば、プロセッサノード１４０）によって特定された分散ノードに向かって進行している場合には、当該犠牲パケットは、ルーティングテーブル１１１中に規定されているような目的地リンク（低帯域幅リンク２５５）ではなく、ビットＤｓｔＬｎｋによって指定された目的地リンク（高帯域幅リンク２５１）にルーティングされる。スプリットルーティングスキームが犠牲リクエスト、犠牲レスポンスまたはこれら両方を取り扱うべきかについてのインジケータを提供することによって、スプリットトラフィックルーティングスキームのさらなる改良を達成することが可能である。スプリットルーティングスキームのために犠牲リクエストが有効にされたことを示すために、コヒーレントなリクエスト分散イネーブルビットｃＨＴＲｅｑＤｉｓｔＥｎは、１に設定される。関連付けられた犠牲レスポンスのみを制御することが望ましい場合、またはスプリットトラフィックルーティングを用いて、犠牲リクエストに加えて犠牲レスポンスも制御することが望ましい場合には、コヒーレントな応答分散イネーブルビットｃＨＴＲｓｐＤｉｓｔＥｎは、１に設定される。
【００１３】
上記実施形態の変更例において、ルーティングテーブル１１１は、スプリットトラフィックルーティングスキームのパラメータを用いて構成され得、これにより、制御レジスタ１１４ではなくルーティングテーブル１１１に示されるルーティングに従って、スプリットトラフィックルーティングの直接的実行が有効になる。
【００１４】
図４に示される構成におけるプロセッサノード用の犠牲分散モード（すなわち、スプリットトラフィックルーティング）は、特定の条件において有効にされる。この特定の条件を例示的に挙げると、（１）プロセッサに対して犠牲分散プロセッサノードが有効にされた場合、（２）犠牲分散プロセッサノードが、低帯域幅リンク上の１つの非連動リンクホップによって直接的に、且つ、少なくとも高帯域幅リンク上の２つの連動リンクホップを通じて間接的に、目的地プロセッサノードである別のプロセッサノードへ接続する場合、が真である場合のみである。例えば、図４を参照して説明した方法は、上記の特定の条件を満たす分散プロセッサノード１１０および目的地プロセッサノード１４０に関連する。
【００１５】
表１は、構成２００，４００の実装に基づいたリンク利用を比較する利用表の一例である。構成２００，４００は、ワークロードの関数である読み出し／書き込み比を有する。図示のように、ルーティングを、高帯域幅リンクおよび低帯域幅リンクに均等に分散させる場合（すなわち、構成２００）には、高帯域幅リンク利用は５０％であり、２：１リンクサイズ比に対応する。構成４００のスプリットルーティングスキームを用いることによって、高帯域幅リンクおよび低帯域幅リンクを、より均等に利用することが可能になる。
【表１】
0005795385.tif 000002
【００１６】
特定の組み合わせの特徴および要素について上述してきたが、各特徴若しくは要素を、他の特徴および要素無しに単独で用いてもよいし、または、他の特徴および要素と共に若しくは他の特徴および要素無しで多様な組み合わせで用いてもよい。本明細書に記載される装置は、汎用コンピュータまたはプロセッサによって実行されるコンピュータプログラム、ソフトウェアまたはファームウェアであって、コンピュータ読み出し可能な記憶媒体に組み込まれたコンピュータプログラム、ソフトウェアまたはファームウェアを用いて製造され得る。コンピュータ読み出し可能な記憶媒体の例を挙げると、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリデバイス、磁気媒体（例えば、内部ハードディスクおよびリムーバブルディスク）、磁気光学メディアおよび光学メディア（例えば、ＣＤ−ＲＯＭディスク、およびデジタル多用途ディスク（ＤＶＤ））である。
【００１７】
本発明の実施形態は、コンピュータ読み出し可能な記憶媒体に保存されたデータとして表すことができる。例えば、本発明の態様は、ハードウェア記述言語（ＨＤＬ）であるＶｅｒｉｌｏｇを用いて実装され得る。Ｖｅｒｉｌｏｇデータ命令が処理された場合、Ｖｅｒｉｌｏｇデータ命令は、半導体製造設備に実装された製造プロセスを実行するために用いることが可能な他の中間データ（例えば、ネットリスト、ＧＤＳデータなど）を生成し得る。この製造プロセスは、本発明の多様な態様を具現化する半導体デバイス（例えば、プロセッサ）を製造するように適応され得る。
【００１８】
適切なプロセッサを例示的に挙げると、汎用プロセッサ、特殊用途プロセッサ、従来のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアと関連する１つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、他の任意の種類の集積回路（ＩＣ）および／またはステートマシンである。上記プロセッサは、処理されたハードウェア記述言語（ＨＤＬ）命令（例えば、コンピュータ読み出し可能な媒体に保存することが可能な命令）の結果を用いて製造プロセスを構成することによって、製造され得る。上記処理の結果は、マスクワークであり得、その後、このマスクワークを半導体製造プロセスに用いて、本発明の態様を実装するプロセッサを製造することができる。
【図１】
0005795385.tif 000003
【図２】
0005795385.tif 000004
【図３】
0005795385.tif 000005
【図４】
0005795385.tif 000006