(57)【要約】【課題】  複数のデータメモリルータと共に分散型配置された複数のプロセッサと、複数のバスインタフェースユニットと、バス制御回路と、プロセッサインタフェース回路とを含んでよい、マルチプロセッサシステムの実施形態を開示する。データメモリルータを連結して、一次相互接続ネットワークを形成してよい。【解決手段】  バスインタフェースユニット及びバス制御回路をデイジーチェーン式で連結して、二次相互接続ネットワークを形成してよい。各バスインタフェースユニットは、複数のデータメモリルータそれぞれ及び各プロセッサに対して、データ又は命令の読み書きを実施するよう構成してよい。プロセッサインタフェース回路に結合されたバス制御回路は、一次ネットワークと二次ネットワークとの間の双方向ブリッジとして機能するよう構成してよい。バス制御回路は他のインタフェース回路にも結合して、二次ネットワークへのこれら他のインタフェース回路のアクセスを調停してよい。【選択図】図３
2018125044.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサ；
複数のメモリ；
複数のルータ；
を備える、マルチプロセッサシステムであって、
各前記プロセッサは複数のプロセッサポートを備え、
前記複数のルータは、一次相互接続ネットワークを形成し、
前記複数のプロセッサ、前記複数のメモリ、前記複数のルータは、分散型配置で連結され、
前記マルチプロセッサシステムはまた、複数のインタフェースユニットを備え、
各前記インタフェースユニットは、それぞれの前記プロセッサ及びそれぞれの前記ルータに結合され、
前記複数のインタフェースユニットは、連結されて二次相互接続ネットワークを形成し、
前記マルチプロセッサシステムはまた、少なくとも１つの指定された前記インタフェースユニットに結合したバスコントローラを備え、
前記バスコントローラは、前記少なくとも１つの指定されたインタフェースユニットにデータを送信し、かつ前記少なくとも１つの指定されたインタフェースユニットからデータを受信するよう構成され、
前記バスコントローラは、前記少なくとも１つの指定されたインタフェースユニットにアクセスするための要求を調停するよう構成され、
前記マルチプロセッサシステムは、２つ以上のプロセッサそれぞれから受信したメッセージの比較を実行し、前記比較に基づいて複数のアクションの特定の１つを実行するよう構成される、マルチプロセッサシステム。
【請求項２】
前記複数のアクションの特定の１つを実行し、前記バスコントローラは、前記２つ以上のプロセッサそれぞれから受信したメッセージが一致するとの判断に応答して前記メッセージの１つを二次相互接続ネットワークに送信するよう更に構成される、請求項１に記載のマルチプロセッサシステム。
【請求項３】
エラーハンドラユニットを更に備え、前記複数のアクションの前記特定の１つを実行し、前記バスコントローラは、前記２つ以上のプロセッサそれぞれが受信したメッセージが一致しないとの判断に応答して前記エラーハンドラユニットにコマンドを送信するよう更に構成される、請求項２に記載のマルチプロセッサシステム。
【請求項４】
前記エラーハンドラユニットは、前記バスコントローラからの前記コマンドの受信に応答してタンパーイベントを報告するよう構成される、請求項３に記載のマルチプロセッサシステム。
【請求項５】
複数の入出力回路を更に備え、前記エラーハンドラユニットは、前記バスコントローラからの前記コマンドの受信に応答して前記入出力回路を無効にするよう構成される、請求項３に記載のマルチプロセッサシステム。
【請求項６】
複数のフューズを更に備え、前記エラーハンドラユニットは、前記バスコントローラからの前記コマンドの受信に応答して前記複数のフューズの少なくとも１つを飛ばすよう構成される、請求項３に記載のマルチプロセッサシステム。
【請求項７】
マルチプロセッサシステム内で通信を行うための方法であって、
前記マルチプロセッサシステムは、分散型配置で連結された複数のプロセッサ及び複数のデータメモリルータを備え、
前記方法は：
第１の前記プロセッサから指定された前記プロセッサに関連付けられた指定された前記ルータへの通信経路を、一次相互接続ネットワーク上で確立するステップ；前記指定されたルータはプロセッサインターフェースブロックに接続され、
前記第１のプロセッサによって、前記一次相互接続ネットワークを通して前記指定されたルータに二次相互接続ネットワークからのメッセージを送信するステップ；
前記指定されたルータによって、前記二次相互接続ネットワークからの前記メッセージをプロセッサインタフェースブロックに提供するステップ；
前記プロセッサインタフェースブロックによって、前記二次相互接続ネットワークからの前記メッセージをバスコントローラに提供するステップ；
前記バスコントローラによって、前記複数のプロセッサの２つ以上のプロセッサからのメッセージを受信するステップ；
前記バスコントローラによって、前記複数のプロセッサの前記２つ以上のプロセッサから前記のメッセージをの比較を実行するステップ；
前記比較の結果に基づく複数のアクションの特定の１つを実行するステップ、
を含む方法。
【請求項８】
前記２つ以上のプロセッサそれぞれから受信したメッセージが一致するとの判断に応答して前記メッセージの１つを二次相互接続ネットワークに送信するステップを含む前記複数のアクションの特定の１つを実行する、請求項７に記載の方法。
【請求項９】
前記２つ以上のプロセッサそれぞれから受信したメッセージが一致するとの判断に応答して前記マルチプロセッサシステムに含まれるエラーハンドラユニットへのコマンドの送信を含む前記複数のアクションの前記特定の１つを実行する、請求項８に記載の方法。
【請求項１０】
前記エラーハンドラユニットによって、前記バスコントローラからの前記コマンドの受信に応答してタンパーイベントを報告するステップを更に含む、請求項９に記載の方法。
【請求項１１】
前記エラーハンドラユニットによる、前記バスコントローラからの前記コマンドを受信する前記エラーハンドラユニットに応答して前記マルチプロセッサシステムに含まれる入出力（Ｉ／Ｏ）回路の少なくとも１つを無効にするステップを更に含む、請求項９に記載の方法。
【請求項１２】
複数のプロセッサ；
複数のデータメモリルータ
を備える、マルチプロセッサシステムであって、
各前記プロセッサは複数のプロセッサポートを備え、
前記複数のデータメモリルータは一次相互接続ネットワークを形成し、各データメモリルータは複数の通信ポートを含み、第１のメモリと、ルーティングエンジンを備え、
前記複数のプロセッサと前記複数のデータメモリルータは、分散型配置で連結され、
複数のインタフェースユニットは、連結されて二次相互接続ネットワークを形成し、各インタフェースユニットは、それぞれの前記プロセッサ及びそれぞれの前記データメモリルータに結合され、
前記マルチプロセッサシステムは、少なくとも第１及び第２の前記インタフェースユニットに結合したバスコントローラを備え、
前記バスコントローラは、前記第１のインタフェースユニットにデータを送信し、かつ前記第２のインタフェースユニットからデータを受信するよう構成され、
前記バスコントローラは、少なくとも前記第１及び第２のインタフェースユニットにアクセスするための要求を調停するよう構成され、
前記バスコントローラは、前記複数のプロセッサの前記２つ以上のプロセッサから受信したメッセージをの比較を実行するよう構成され、および、
前記バスコントローラは、前記比較の結果に基づく複数のアクションの特定の１つを実行するよう構成される、マルチプロセッサシステム。
【請求項１３】
前記複数のアクションの特定の１つを実行し、前記バスコントローラは、前記２つ以上のプロセッサそれぞれから受信したメッセージが一致するとの判断に応答して前記メッセージの１つを前記二次相互接続ネットワークに送信するよう更に構成される、請求項１２に記載のマルチプロセッサシステム。
【請求項１４】
エラーハンドラユニットを更に備え、前記複数のアクションの前記特定の１つを実行し、前記バスコントローラは、前記２つ以上のプロセッサそれぞれが受信したメッセージが一致しないとの判断に応答して前記エラーハンドラユニットにコマンドを送信するよう更に構成される、請求項１３に記載のマルチプロセッサシステム。
【請求項１５】
複数の入出力回路を更に備え、前記エラーハンドラユニットは、前記バスコントローラからの前記コマンドの受信に応答して前記入出力回路を無効にするよう構成される、請求項１４に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチプロセッサシステムに関し、更に詳細には、複数のプロセッサ要素と、メモリと、一次相互接続ネットワークとを有するマルチプロセッサシステムにおける、改善された二次相互接続ネットワークに関する。
【背景技術】
【０００２】
コンピュータシステム及びデジタル信号処理（ＤＳＰ）システムは、複数の処理要素（ＰＥ）と、補助メモリ（ＳＭ）と、データ相互接続ネットワーク（ＩＮ）と、入出力（Ｉ／Ｏ）インタフェースとから構成できる。複数のＰＥが利用可能であることにより、システムは、より迅速にタスクを完了するための、又はタスクを完了するためのエネルギーを削減するために、並列アルゴリズムをサポートできる。並列アルゴリズムは、システム内での並びにシステム内への及びシステム内からの、ＰＥとＳＭの間での非常に高速なデータストリーミングを必要とすることが多い。これらのシステムでは、相互接続ネットワークは概して少なくとも１つの高帯域幅（高ビット／秒スループット）一次相互接続ネットワーク（ＰＩＮ）を含む。ＰＩＮは、比較的大きなメッセージの高ビット／秒スループットに対して最適化されているが、特に低レイテンシ（ポイントツーポイント配信遅延）に対しては最適化されていない。
【０００３】
また、ＰＩＮを含む少なくとも１つの従来技術のマルチプロセッサシステムは、追加の低帯域幅二次相互接続ネットワーク（ＳＩＮ）を有する。「シリアルバス」（ＳＢ）として実装された高レイテンシ型のＳＩＮは従来、本願の譲受人であるＣｏｈｅｒｅｎｔ  Ｌｏｇｉｘ  Ｉｎｃ．製のＨｙｐｅｒＸ  ｈｘ３１００Ａと呼ばれるマルチプロセッサＩＣチップに実装されている。図１は、ＨｙｐｅｒＸ  ｈｘ３１００Ａに実装された、二次相互接続ネットワーク（ＳＩＮ）とも呼ばれる従来技術のシリアルバス（ＳＢ）を示す。図１に示す従来技術のＳＩＮは、ＰＥ、ＳＭ、ＰＩＮ、チップＩ／Ｏインタフェース、送電網、クロッキングネットワークとともにマルチプロセッサＩＣに埋め込まれるように設計されている。図示したように、このシリアルバスアーキテクチャは、チップ内で前後に蛇行する長いループの中で全てのＰＥ及びＳＭを相互接続している。これにより、ＳＩＮは最小の面積及び消費電力でメッセージ配信の保証（ＧＭＤ）をサポートできる。従ってＳＩＮは、アプリケーション及びシステムソフトウェアのプログラマにデバッグサポートを提供することを第１の目的としたオンチップシリアルバス（ＳＢ）であった。更にＳＢをシステムブートアップ中に使用して、メモリをロードし、電源投入時システムテスト実行することもできる。またＳＢを実行時間中に使用して、個々のＰＥポート及びＩ／Ｏポートのためのクロック周波数の制御、ＰＩＮに対するセキュリティバリアの設定、ＰＥメッセージパッシング等の様々なシステム管理機能を実行できる。最後にＳＢを、ＩＣテスト及び評価でも使用できる。
【０００４】
図１に示す従来技術のＳＩＮは、ローカルインタフェースユニット間のリンクの一方向デイジーチェーンとして編成されたシリアルバス（ＳＢ）アーキテクチャを有し、チェーンの両端はシリアルバスコントローラ（ＳＢＣ）ユニットに結合されている。図１に示すように、典型的なローカルインタフェースユニットは、シリアルバススレーブ（ＳＢＳ）インタフェースユニットとして標識される。これは、（以下により詳しく説明されるように）コマンドを発行できないためにそのように呼ばれている。各ＳＢＳインタフェースユニットは、１つのＰＥ、１つのＳＭユニット、１つのＳＢ入力リンク、１つのＳＢ出力リンクに結合される。各ＳＢＳユニットには、個々のメッセージを特定のＳＢＳユニットに送信できるように一意のアドレス値が割り当てられていた。各ＳＢＳインタフェースユニット（ＳＢＳ−ＩＵ）は、ＰＥ及びＳＭの主にワード並列のフォーマット間のメッセージフォーマットをＳＢリンクの主にビット直列のフォーマットに変換するために、レジスタ及び論理を含んでいる。インタフェースユニット間の各リンクは、一方のワイヤがデータ信号（ＳＢＤＡＴＡ）を搬送し、他方がクロック信号（ＳＢＣＬＫ）を搬送して、受信機入力フリップフロップでデータを取り込む２本の平行導線である。メッセージの存在はＳＢＣＬＫ上の複数のパルスによって示され（ここで、ＳＢＤＡＴＡ上のデータ１ビットごとに１パルスである）、メッセージの不在はＳＢＣＬＫ上の一定値によって示される。
【０００５】
いくつかの実施形態では、固定長のＳＢメッセージを受信するために、ＳＢＳ−ＩＵをバッファと共に構成してよい。初めに（チップリセット時）、ＳＢＳ−ＩＵはリピータモードに入り、ＳＢＳ−ＩＵは固定長のＳＢメッセージを受信し、メッセージヘッダのアドレスをそれ自体の一意のアドレスと比較してよい。これらアドレスが一致しない場合、ＳＢＳ−ＩＵはメッセージをチェーン内の次のＳＢＳ−ＩＵに渡してよい。アドレスが一致する場合、ＳＢＳ−ＩＵは、ＳＢＳ−ＩＵがリピータモードに戻るコマンドを受信するまで、以後のメッセージが可能なコマンドとして処理されるチャネルモードに入ってよい。ＳＢＳ−ＩＵは、適切に符号化されたＳＢメッセージからコマンドのセットを復号するよう構成されてよい。ＳＢメッセージがコマンドのセットのうちの１つについて適切に符号化されない場合、ＳＢＳ−ＩＵはこれを無視する。様々な実施形態では、コマンドは以下の通りである：ＳＢＳ−ＩＵ設定レジスタの読み書き；（ＤＭＲのリセット、ＰＥのリセット、ＰＥのクロック周波数の設定、存在する場合はＩ／Ｏ回路のリセット、ＰＩＮルータセキュリティバリアの設定）；特定のアドレス又はアドレスのブロックにおけるＳＭの読み書き；特定の条件下でのメッセージレジスタを含むＰＥレジスタの読み書き；ＰＥ分岐点の設定；ＰＥ中断の強制；シングルステップＰＥ；ウェークアップＰＥ（実行させる）；グローバル中断信号伝達へのＰＥの参加の有効化／無効化。読み出しコマンドの場合、ＳＢＳ−ＩＵは読み出されたデータを含む戻りＳＢメッセージを生成してよく、これをチェーンの次のＳＢＳ−ＩＵに送信する。戻りＳＢメッセージはチェーン内の他のＳＢＳ−ＩＵを通過でき（これは上記他のＳＢＳ−ＩＵがリピータモードにあるためである）、ＳＢＣによって、チャネルをセットアップするコントローラに転送できる。
【０００６】
図１に示すように、シリアルバスコントローラ（ＳＢＣ）は、ＳＢの両端、デバッグアクセスポート（ＤＡＰ）コントローラ、ブートコントローラに結合される。ＳＢＣは、ＤＡＰコントローラ及びブートコントローラからＳＢメッセージを受け入れ、ＤＡＰコントローラ及びブートコントローラに戻りメッセージを返す。ＳＢＣの主要な目的は、２つ以上のコントローラがＳＢアクセスを一度に獲得すること（これは、コマンド及び誤った結果の無作為な混合を生じさせることがある）を防止することである。ＳＢが休止している場合には、どちらかのコントローラがＳＢＳ−ＩＵへのチャネルを開始してよい。チャネルが既に存在する場合、ＳＢＣコントローラは、現在のチャネルが終了するまで、チャネルを開始しようとするいかなる新しい試みも無視する。２つのコントローラが同時にチャネルを開始しようと試みる場合には、一方がアクセスを獲得し、他方のＳＢＣが無視されるようにＳＢＣが調停する。
【０００７】
図１に示すように、ＰＥ０，０がＳＢＣにメッセージを送信し、ＳＢＣから結果のメッセージを受信できるようにするために、ＤＭＲ０，０専用のいくつかのレジスタをブートコントローラに結合する。ＤＭＲ０，０専用のこれらのレジスタは、ＰＩＮによってアクセス可能ではなく、ＰＥ０，０以外のいかなるＰＥによってもアクセス可能ではない。ＤＭＲ０，０の特定のレジスタがＰＥ０，０によって書き込まれると、メッセージがＳＢＣに転送される。ＳＢＣからの戻りＳＢメッセージデータは、ＤＭＲ０，０内の特定のレジスタにコピーできる。ＳＢを利用するＰＥ０，０上のソフトウェアプログラムは、ＳＢメッセージトランスポートの比較的長いレイテンシを待機するために、適切な遅延を含む必要がある場合がある。
【０００８】
マルチプロセッサシステムでの使用のために、改善された二次相互接続ネットワーク（ＳＩＮ）アーキテクチャに対する需要がある。
【発明の概要】
【課題を解決するための手段】
【０００９】
複数のプロセッサと、複数のメモリと、複数のルータとを含むマルチプロセッサシステムの様々な実施形態を開示する。一実施形態では、各プロセッサは関連付けられたメモリ及びルータを有し、複数のプロセッサ、複数のメモリ、複数のルータは分散型配置で連結される。複数のルータを連結して一次相互接続ネットワークを形成する。マルチプロセッサシステムは複数のインタフェースユニットも含み、各プロセッサ／ルータ組み合せは、関連付けられたインタフェースユニットを有する。複数のインタフェースユニット及び少なくとも１つのコントローラを連結して、二次相互接続ネットワーク（ＳＩＮ）を形成する。複数のインタフェースユニットを、デイジーチェーン式で又は複数のループで連結して、二次相互接続ネットワークを作成してよい。この少なくとも１つのコントローラは他のコントローラ及びＳＩＮの外部のメッセージソースと結合されており、ＳＩＮにアクセスするためにソースからメッセージを受信し、ソースにメッセージを返し、ソースからの要求を調停してＳＩＮ制御エラーを防止するよう構成される。インタフェースユニットの複数のチェーンはＳＩＮコントローラに結合してよく、インタフェースユニットの各チェーンは、一方向の又は双方向のメッセージの流れをサポートするよう構成してよい。
【００１０】
指定されたプロセッサは、（本明細書では「バスコントローラ」とも呼ばれる）ＳＩＮコントローラに結合するよう構成してよい。この指定されたプロセッサは、関連付けられた少なくとも１つの指定されたインタフェースユニットと、バスコントローラに結合される、関連付けられた指定されたルータとを有する。バスコントローラは、少なくとも１つの指定されたインタフェースユニットにデータを送信し、少なくとも１つの指定されたインタフェースユニットからデータを受信するよう構成される。一実施形態では、この少なくとも１つの指定されたインタフェースユニットは２つの異なる指定されたインタフェースユニットを備え、各指定されたインタフェースユニットはそれぞれのプロセッサに関連付けられ、一方がバスコントローラにデータを送信するよう構成され、他方がコントローラからデータを読み出すよう構成される。
【００１１】
バスコントローラは、少なくとも１つの指定されたインタフェースユニットへのアクセスに対する複数の要求の間での調停を行うよう構成してよい。言い換えると、バスコントローラは、異なる複数の論理ブロックから、指定されたインタフェースユニットにアクセスするための要求を受信し、これらの要求のうちの１つを選択して、指定されたインタフェースユニットに提供するよう構成してよい。指定されたインタフェースユニットに対するアクセスを要求できる論理ブロックは、プロセッサインタフェースブロック、及びホストインタフェース、ブートコントローラ、デバッグアクセスポートといった他のブロックを含んでよい。プロセッサインタフェースブロックはバスコントローラに結合され、上記少なくとも１つの指定されたインタフェースユニットに関連付けられた指定されたルータにも結合される。プロセッサインタフェースブロックは、マルチプロセッサシステム内の複数のプロセッサのうちのいずれ又は場合によっては全てが、一次相互接続ネットワークを使用して、指定されたルータを通して二次相互接続ネットワークにアクセスできるようにするよう構成される。プロセッサインタフェースブロックは、二次相互接続ネットワークメッセージをバッファリングするための１つ又は複数のバッファレジスタ、及びメッセージの損失又は重複を防止するための流量制御回路を備えてよい。１つ又は複数のバッファレジスタ及び流量制御回路は、いずれのプロセッサが一次相互接続ネットワークを使用して二次相互接続ネットワークにアクセスできるようにする際に使用される。
【００１２】
例えば、指定されたルータは、一次相互接続ネットワークで発せられるメッセージを受信してよい。プロセッサインタフェースブロックは、指定されたルータからこれらのメッセージを受信し、バスコントローラにこれらのメッセージを提供して、二次相互接続ネットワークに提供してよい。またプロセッサインタフェースブロックは、バスコントローラを通して二次相互接続ネットワークからメッセージを受信し、指定されたルータにこれらのメッセージを提供して、一次相互接続ネットワークに提供してよい。
【００１３】
一実施形態では、マルチプロセッサシステムのいずれの各プロセッサは：１）二次相互接続ネットワークへの順方向経路を生成するための、一次相互接続ネットワーク上の、各プロセッサの隣接するルータから指定されたルータへの第１の通信経路；及び２）二次相互接続ネットワークとの全二重通信のための二次相互接続ネットワークからの逆経路を生成するための、一次相互ネットワーク上の、指定されたルータから各プロセッサの隣接するルータへの第２の通信経路を確立するよう構成可能である。
【００１４】
このようにして、いずれの各プロセッサは、プロセッサインタフェースブロック及びバスコントローラを通して二次相互接続ネットワークへ提供するために、二次相互接続ネットワークコマンドを、一次相互接続ネットワーク上へ、指定されたルータに対して発行するように動作可能である。更に、このようないずれの各プロセッサは、バスコントローラ及びプロセッサインタフェースブロックを通して指定されたルータに提供された、二次相互接続ネットワークからの結果及び／又はメッセージステータス情報を受信するよう構成される。
【００１５】
バスコントローラは、２つ以上のプロセッサそれぞれからコマンドを受信し、受信したコマンドを比較し、この比較に基づいてアクションを実行するよう構成してよい。例えば、これらのコマンドが一致すると判断された場合、バスコントローラはコマンドのうちの１つを二次相互接続ネットワークに送信するよう構成してよい。コマンドが一致しないと判断された場合、バスコントローラはプログラム可能エラーハンドラにメッセージを送信するよう構成してよい。一実施形態では、指定されたプロセッサはバスコントローラへの別個の通信経路を有し、バスコントローラは指定されたプロセッサ及び別のプロセッサからコマンドを受信するよう構成される。バスコントローラは、指定プロセッサ及び他のプロセッサから受け取ったコマンドを比較して、上述のアクションを実行するよう構成してよい。
【００１６】
いくつかの実施形態では、マルチチップシステムは複数の上述のマルチプロセッサシステムを含んでよく、これらマルチプロセッサシステムは異なるそれぞれのチップに実装され、そのそれぞれの一次相互接続ネットワークによって連結される。このマルチチップシステムでは、１つのチップ上のいずれのプロセッサが、マルチチップシステム内のいずれの他のチップの二次相互接続ネットワークにアクセスできてよい。
【００１７】
マルチプロセッサシステムでの通信のための方法は、以下のステップを含んでよい。第１に、第１のプロセッサから指定されたプロセッサに関連付けられた指定されたルータへの通信経路を、一次相互接続ネットワーク上で確立してよい。指定されたルータは、プロセッサインタフェースブロックに接続してよい。続いて第１のプロセッサは、一次相互接続ネットワークを通して指定されたルータに二次相互接続ネットワークメッセージを送信してよい。その後、指定されたルータは、二次相互接続ネットワークメッセージをプロセッサインタフェースブロックに提供してよく、プロセッサインタフェースブロックはこのメッセージをバスコントローラに提供する。そしてバスコントローラは、二次相互接続ネットワークメッセージを二次相互接続ネットワークに提供する。本方法は、マルチプロセッサシステム内のいずれのプロセッサが二次相互接続ネットワーク上で通信できるようにするために使用できる。
【００１８】
本方法はまた、二次相互接続ネットワークブロックから第１のプロセッサへの通信も提供してよい。これは、指定されたルータから第１のプロセッサへの逆通信経路の確立も含んでよく、この逆通信経路は二次相互接続ネットワークから第１のプロセッサへ応答情報を提供するために使用できる。本通信方法は、二次相互接続ネットワークから応答情報を受信して、プロセッサインタフェースブロックにこの応答情報を提供する、バスコントローラを備えてよい。応答情報をプロセッサインタフェースブロックでバッファリングしてよい。プロセッサインタフェースブロックは、応答情報を指定されたルータに提供してよく、続いて指定されたルータは逆通信経路上で応答情報を第１のプロセッサに提供する。
【図面の簡単な説明】
【００１９】
【図１】図１は、マルチプロセッサシステム用の従来技術の二次相互接続シリアルバスのブロック図である。
【図２】図２は、一次相互接続ネットワークを含むマルチプロセッサシステムの一実施形態を示すブロック図である。
【図３】図３は、マルチプロセッサシステムの二次相互接続ネットワークを示すブロック図である。
【図４】図４は、ルータ並びにその関連付けられたプロセッサ、メモリ及びインタフェースユニットの一実施形態のブロック図である。
【図５】図５は、プロセッサが二次相互接続ネットワークにアクセスするために一次相互接続ネットワーク上で通信する方法の一実施形態のフローチャート図である。
【図６】図６は、二次相互ネットワークからのメッセージをプロセッサに提供するために一次相互接続ネットワークに提供する方法の一実施形態のフローチャート図である。
【図７】図７は、チップ間の一次相互接続ネットワーク通路を使用してリモートチップ上の二次相互接続ネットワークにアクセスするマルチチップシステム実施形態を示すブロック図である。
【発明を実施するための形態】
【００２０】
本発明は様々な修正及び代替形態を許容するものであるが、その具体的な実施形態を例として図面に示し、また本明細書で詳細に説明する。しかしながら、上記具体的実施形態の図及び詳細な説明は、図示されている特定の形態に開示を限定することを意図したものではなく、反対に、添付の請求項によって定義されるような本開示の精神及び範囲内にある全ての修正例、均等物及び代替例を包含することを意図したものであることを理解されたい。本明細書において使用されている見出しは、単に組織化を目的としたものであり、これらの使用は本説明の範囲の限定を意味しない。本出願全体を通して使用される単語「してよい／し得る／できる（ｍａｙ）」は、許容の意味で（即ち「可能性がある」ことを意味して）使用されており、強制の意味で（即ち「しなければならない」ことを意味して）使用されるものではない。同様に、単語「含む（ｉｎｃｌｕｄｅ／ｉｎｃｌｕｄｉｎｇ／ｉｎｃｌｕｄｅｓ）」は、ある対象を含むもののそれに限定されないことを意味する。
【００２１】
様々なユニット、回路又はその他の構成部品は、１つ又は複数のタスクを実施する「よう構成される（ｃｏｎｆｉｇｕｒｅｄ  ｔｏ）」として記載され得る。このような文脈において「よう構成される」は、動作中に上記１つ又は複数のタスクを実施する「回路構成を有する」ことを一般に意味する、構造の広範な説明である。従ってユニット／回路／構成部品は、ユニット／回路／構成部品が現在オンでなくても上記タスクを実施するよう構成できる。一般に「よう構成される」に対応する構造を形成する回路構成は、ハードウェア回路を含んでよい。同様に、記載を簡略化するために、様々なユニット／回路／構成部品は、１つ又は複数のタスクを実施するとして記載され得る。このような記載は「よう構成される」という語句を含むものとして解釈されるものとする。１つ又は複数のタスクを実施するよう構成されるユニット／回路／構成部品の列挙は、これらユニット／回路／構成部品に関して米国特許法第１１２条第６段落の解釈を援用しないことを明示的に意図したものである。より一般には、いずれの要素の列挙は、「…のための手段（ｍｅａｎｓ  ｆｏｒ）」又は「…のためのステップ（ｓｔｅｐ  ｆｏｒ）」という語句が具体的に使用されていない限り、上記要素に関して米国特許法第１１２条第６段落の解釈を援用しないことを明示的に意図したものである。
【００２２】
参照による援用
Ｍｉｃｈａｅｌ  Ｂ．Ｄｏｅｒｒ、Ｗｉｌｌｉａｍ  Ｈ．Ｈａｌｌｉｄｙ、Ｄａｖｉｄ  Ａ．Ｇｉｂｓｏｎ、Ｃｒａｉｇ  Ｍ．Ｃｈａｓｅを発明者とする、発明の名称「Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｓｔｅｍ  Ｗｉｔｈ  Ｉｎｔｅｒｓｐｅｒｓｅｄ  Ｓｔａｌｌ  Ｐｒｏｐａｇａｔｉｎｇ  Ｐｒｏｃｅｓｓｏｒｓ  Ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｅｌｅｍｅｎｔｓ」の米国特許第７４１５５９４号は、その全体を参照することにより、本明細書においてその全体が完全に論述されているかのように、本明細書に援用されるものとする。
【００２３】
Ｍｉｃｈａｅｌ  Ｂ．Ｄｏｅｒｒ、Ｃａｒｌ  Ｓ．Ｄｏｂｂｓ、Ｍｉｃｈａｅｌ  Ｂ．Ｓｏｌｋａ、Ｍｉｃｈａｅｌ  Ｒ  Ｔｒｏｃｉｎｏ、Ｄａｖｉｄ  Ａ．Ｇｉｂｓｏｎを発明者とする、２０１１年１０月１４日出願の、発明の名称「Ｄｉｓａｂｌｉｎｇ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｉｎ  ａ  Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  Ｓｙｓｔｅｍ」の米国特許出願第１３／２７４１３８号は、その全体を参照することにより、本明細書においてその全体が完全に論述されているかのように、本明細書に援用されるものとする。
【００２４】
用語
ハードウェア構成プログラム：例えば集積回路等のハードウェアをプログラム又は構成するために使用できる、バイナリイメージにコンパイルできるソーステキストからなるプログラム。
【００２５】
コンピュータシステム：パーソナルコンピュータシステム（ＰＣ）、メインフレームコンピュータシステム、ワークステーション、ネットワーク家電、インターネット家電、パーソナルデジタルアシスタント（ＰＤＡ）、テレビジョンシステム、グリッドコンピューティングシステム若しくはその他のデバイス又はデバイスの組み合わせを含む、様々なタイプの計算又は処理システムのいずれか。一般に、用語「コンピュータシステム」は、メモリ媒体からの命令を実行する少なくとも１つのプロセッサを有するいずれのデバイス（又は複数のデバイスの組み合わせ）を包含するものとして広く定義できる。
【００２６】
自動的に（ａｕｔｏｍａｔｉｃａｌｌｙ）：その動作又は操作を直接指定又は実施するユーザ入力を必要とせずに、コンピュータシステムが実施する動作又は操作（例えばコンピュータシステムが実行するソフトウェア）について用いる。従って用語「自動的に」は、ユーザが手動で実施又は指定する操作（ここでユーザが操作を直接実施するために入力を提供する）と対照的なものである。自動処理は、ユーザが提供する入力によって開始される場合があるが、これに続く「自動的に」実施される動作は、ユーザが指定するものではなく、即ち「手動で」実施される（ユーザが各動作の実施を指定する）ものではない。例えばユーザが、各フィールドを選択し、（例えば情報をタイピングすることによって、チェックボックスを選択することによって、無線選択によって等で）情報を指定する入力を提供することによって、電子フォームを埋める場合、仮にコンピュータシステムがユーザの動作に応答して上記フォームを更新しなければならないとしても、これは上記フォームを手動で埋めたことになる。このようなフォームはコンピュータシステムによって自動で埋めることができ、この場合コンピュータシステム（例えばコンピュータシステム上で実行されるソフトウェア）は、フォームのフィールドを分析して、フィールドへの回答を指定するいずれのユーザ入力を必要とせずにフォームを埋める。上述のように、ユーザはフォームを自動で埋める動作を発動する場合はあるが、実際にフォームを埋める動作には関わらない（例えばユーザはフィールドへの回答を手動で指定せず、回答は自動的に完了する）。本明細書は、ユーザが行う動作に応答して自動的に実施される操作の様々な例を提供する。
マルチプロセッサシステム上の相互接続ネットワーク
【００２７】
図２は、処理要素（ＰＥ）とも呼ばれる複数のプロセッサと、補助メモリとも呼ばれるデータメモリルータ（ＤＭＲ）と、一次相互接続ネットワーク（ＰＩＮ）と、二次相互接続ネットワーク（ＳＩＮ）（図示せず）と、入出力（Ｉ／Ｏ）インタフェースとから構成される、マルチプロセッサシステムを示す。図示したように、図中の正方形はプロセッサ（つまり処理要素）を表し、円はデータメモリルータ（ＤＭＲ）を表す。データメモリルータはルータ及びメモリを備え、このメモリは「補助メモリ」（ＳＭ）と呼ばれることがある。ルータ及びその関連付けられたメモリは、別個の独立したユニットとして考えることも、又は一体のデータメモリルータとして考えることもできる。各プロセッサ（ＰＥ）は４つの隣接するＤＭＲに接続されているが、この接続は説明を容易にするために図示されていない。ＤＭＲ間リンクと呼ばれるＤＭＲ間の接続は、マルチプロセッサシステム内の様々なプロセッサ間の通信を可能にする一次相互接続ネットワーク（ＰＩＮ）を形成する。図示したように、複数のプロセッサ、複数のメモリ、複数のルータが分散型配置で連結されている。図２には示されていない（ただし図３には示されている）が、マルチプロセッサシステムは複数のインタフェースユニットを含み、各インタフェースユニットはそれぞれのプロセッサ（ＰＥ）及びそれぞれのルータ（ＤＭＲ）に結合される。複数のインタフェースユニットは連結されて二次相互接続ネットワーク（ＳＩＮ）を形成する。以下で更に説明するように、マルチプロセッサシステムは、プロセッサのうちのいずれ（少なくともプロセッサの複数のサブセット）がＳＩＮと通信できるようにする、改善されたアーキテクチャを含む。
【００２８】
複数のプロセッサ（ＰＥ）が存在することにより、マルチプロセッサシステムは、より迅速にタスクを完了するための、又はタスクを完了するためのエネルギーを削減するための、並列アルゴリズムをサポートしてよい。並列アルゴリズムは、システム内での並びにシステム内への及びシステム内からの、ＰＥとＳＭの間での非常に高速なデータストリーミングを必要とすることが多い。一次相互接続ネットワーク（ＰＩＮ）は、好ましくは、比較的大きなメッセージの高いビット／秒スループットに対して最適化されているが、特に低レイテンシに対しては最適化されていない（ポイントツーポイント配信遅延）、高帯域幅（高いビット／秒スループット）相互接続ネットワークである。トラフィック負荷が軽い条件下では、大部分のメッセージは妨げられることなくＰＩＮを通過することになる。トラフィック負荷が重い条件下では、メッセージはネットワーク上の他のメッセージによってブロックされることがある。ＰＩＮハードウェアは、トラフィックが少なくなり、ブロックするトラフィックが消えた後に最終的にブロックされたメッセージを配信してよいが、その間にＰＩＮは送信者にビジー信号を反映することがある。
【００２９】
また、図２は、マルチプロセッサシステム内の例示的な平面メッシュＰＩＮも示す。現在のシリコントランジスタＩＣ製作技術を使用すると、単一のＩＣチップ上に１００以上のＰＥを集積して相互接続できる。高度な回路基板及び他の基板によって相互接続された多数のこれらのチップを用いて、数千のＰＥのシステムを作成できる。
【００３０】
並列アルゴリズムはメッセージブロックを最小限に抑えるように設計できるが、特にアルゴリズムがハードウェアに適合されているアプリケーションソフトウェアの開発では、並列アルゴリズムはメッセージブロックを常には排除できない。一般に２つのタイプの、１つ又は複数の追加の低帯域幅二次相互接続ネットワーク（ＳＩＮ）が必要となる。一方はＰＩＮよりも低いレイテンシでの緊急の通信をサポートするためのものであり、他方はメッセージ配信の保証（ＧＭＤ）によって構成機能及びデバッグ機能をサポートするためのものであるが、レイテンシがより高い。いくつかの実施形態では、二次相互接続ネットワーク（ＳＩＮ）はシリアルバスであってよく、従って本明細書では「シリアルバス」（ＳＢ）と呼ばれてよい。
【００３１】
図３を参照すると、二次相互接続ネットワーク（ＳＩＮ）の一実施形態が示されている。ＳＩＮは、複数のプロセッサ（ＰＥ）、複数の補助メモリ（ＳＭ）、複数のルータ、一次相互接続ネットワーク（ＰＩＮ）、チップＩ／Ｏインタフェース、送電網、クロッキングネットワークとともに、マルチプロセッサシステムＩＣチップに埋め込まれてよい。より具体的には、図３に示すように、マルチプロセッサシステムは、図３において円で表される複数のプロセッサ（ＰＥ）と、矩形として表される複数のデータメモリルータ（ＤＭＲ）とを備える。これもまたり図示されているように、マルチプロセッサシステムは複数のインタフェースユニットを含み、各インタフェースユニットはそれぞれのプロセッサ及びそれぞれのルータに結合される。インタフェースユニットは、それぞれのプロセッサ（ＰＥ）とそれぞれのＤＭＲとの間に位置する小さい正方形として表される。個々のメッセージを特定のインタフェースユニットに送信できるように、各インタフェースユニットに一意のアドレス値を割り当ててよい。図示したように、複数のインタフェースユニットを連結して二次相互接続ネットワークを形成する。より具体的には、複数のインタフェースユニットをデイジーチェーン式で連結して、二次相互接続ネットワーク（ＳＩＮ）を形成する。
【００３２】
いくつかの実施形態では、ＳＩＮは、チップ全体で前後に蛇行する長いループ内の全てのＰＥ及びＳＭを相互接続するためにシリアルバスアーキテクチャを有してよい。従って、本明細書に提示されるＳＩＮの一例はオンチップシリアルバス（ＳＢ）である。ＳＩＮは、最小の面積及び消費電力でメッセージ配信の保証（ＧＭＤ）をサポートできるよう動作してよい。ＳＩＮは、アプリケーション及びシステムソフトウェアのプログラマにデバッグサポートを提供してよい。更に、ＳＩＮをシステムブートアップ中及びいずれの時点で使用して、メモリをロードし、電源投入時システムテストを実行できる。またＳＩＮを実行時中に使用して、クロック制御管理及びＰＥメッセージパッシング等の様々なシステム管理機能を実行できる。最後に、ＳＩＮをＩＣテスト及び評価で使用することもできる。
【００３３】
本明細書に記載の実施形態では、ＳＩＮは、ローカルインタフェースユニット間のリンクの一方向デイジーチェーンとして編成されたシリアルバス（ＳＢ）アーキテクチャを有し、図３に示すように、チェーンの両端は、シリアルバスコントローラ（ＳＢＣ）ユニットとも呼ばれるバスコントローラに結合される。図３に示す実施形態では、インタフェースユニットは図３のシリアルバススレーブ（ＳＢＳ）インタフェースとして標識される。各インタフェースユニット（ＳＢＳユニット）は１つのＰＥ、１つのＳＭユニット、１つのＳＢ入力リンク、１つのＳＢ出力リンクに結合する。上述のように、個々のメッセージを特定のＳＢＳユニットに送信できるように、各インタフェースユニット（ＳＢＳユニット）に一意のアドレス値を割り当ててよい。各インタフェースユニット（ＳＢＳ−ＩＵ）は、ＰＥ及びＳＭの主にワード並列のフォーマット間のメッセージフォーマットを、ＳＢリンクの主にビット直列のフォーマットに変換するためにレジスタ及び論理を含む。
【００３４】
ＳＢは多数のコマンドをサポートしてよい。例えばいくつかの実施形態では、ＳＢコマンドは、例えばリセット、ゼロ化、並列ロード（命令及び／又はデータ）、ウェークアップＰＥ、分岐点強制、シングルステップ等の並列操作をサポートしてよい。他の実施形態では、ＳＢは、ＰＥパイプラインステータス及び命令ポインタの読み出し並びにタンパー検出リセットを可能にするコマンドをサポートしてよい。
【００３５】
インタフェースユニット間の各リンクはＮ本の平行導線であってよく、小さいＮは電力を保全し、大きいＮはより多くのビット／秒スループットを達成する。ＳＩＮではスループットは通常問題ではないので、２本のワイヤ（Ｎ＝２）リンクを使用してよい。一方のワイヤはデータ信号（ＳＢＤＡＴＡ）を搬送してよく、他方のワイヤはクロック信号（ＳＢＣＬＫ）を搬送して、受信機入力フリップフロップにおいてデータを取り込んでよい。メッセージの存在は、ＳＢＣＬＫ上の方形波で示すことができ、メッセージの不在はＳＢＣＬＫでの一定値によって示すことができる。
【００３６】
好ましい実施形態では、プロセッサのうちの１つは指定されたプロセッサである。つまり、図３でシリアルバスコントローラと呼ばれるバスコントローラに結合するように事前に構成されている。また、指定されたプロセッサは、関連付けられた「指定されたルータ」及び「指定されたインタフェースユニット」も有する。図示したように、指定されたルータはプロセッサインタフェースユニットに接続される。従って、マルチプロセッサシステムのいずれのプロセッサ（ＰＥ）は指定されたルータと通信して、ＳＩＮにアクセスするための要求を提供できる。このようにして、例えば（指定されたプロセッサ以外の）プロセッサがＳＩＮでの通信を希望する場合、プロセッサは指定されたルータに通信要求を提供する。続いて指定されたルータはこの要求をプロセッサインタフェースブロックに転送できる。そしてプロセッサインタフェースブロックはこの要求をバスコントローラに転送できる。
【００３７】
バスコントローラは、少なくとも１つの指定されたインタフェースユニットに結合され、少なくとも１つの指定されたインタフェースユニットにデータを送信し、少なくとも１つの指定されたインタフェースユニットからデータを受信するよう構成される。指定されたインタフェースユニットは、ＳＩＮへの「エントリポイント」つまり「アクセスポイント」を形成する。このようにして、バスコントローラはプロセッサインタフェースブロックで受信したメッセージを、指定されたインタフェースユニットに、従ってＳＩＮに渡すよう構成される。一実施形態では、同一の指定されたインタフェースユニットは、ＳＩＮとバスコントローラとの間でのデータ送信及びデータ受信の両方のために構成される。別の実施形態では、第１の指定されたインタフェースユニットは、バスコントローラからデータを受信してＳＩＮ上にデータを提供するよう構成され、第２の指定されたインタフェースユニットはＳＩＮからデータを受信してバスコントローラにデータを提供するよう構成される。
【００３８】
バスコントローラは、アクセス要求の間のどのような競合も調停し、要求側の指定されたインタフェースユニットのうちの１つによるＳＩＮへの「一度に一回の（ｏｎｅ−ａｔ−ａ−ｔｉｍｅ）」アクセスを許可するよう構成される。多くの異なる論理ブロックがバスコントローラに結合され、ＳＩＮへのアクセスのための要求をバスコントローラに提供してよい。これらの論理ブロックは、ブートコントローラ、デバッグアクセスポート（ＤＡＰ）コントローラ、外部ホストインタフェース、プロセッサインタフェースブロックを含んでよい。いくつかの実施形態では、バスコントローラによって使用される調停方式及び優先順位は固定であってよい。一方、他の実施形態では、調停方式及び優先順位はプログラム制御下にあってよい。
【００３９】
上述のように、プロセッサインタフェースブロックはバスコントローラに結合され、少なくとも１つの指定されたインタフェースユニットに関連付けられた指定されたルータとも結合される。プロセッサインタフェースブロックは、マルチプロセッサシステムの複数のプロセッサのうちのいずれが、一次相互接続ネットワークを使用して指定されたルータを通して通信することによって二次相互接続ネットワーク（ＳＩＮ）にアクセスできるよう構成される。
【００４０】
各インタフェースユニット（ＳＢＳ−ＩＵ）は、その他のポートをバッファリングするためのシリアル入力レジスタ、シリアル出力レジスタ及び追加のレジスタ、並びにポートとシリアルバスとの間でメッセージフォーマットを変換するための１つ又は複数の状態機械から構成されてよい。ＳＢＳ−ＩＵでＳＢコマンドを受信すると、コマンドを初期化コマンドに関して試験してよい。初期化コマンドが存在しない場合、ＳＢＳ−ＩＵをバイパスモードのままとしてよい。しかしながら初期化コマンドが存在する場合、ＳＢＳ−ＩＵは、コマンドに関連付けられたアドレスをハードワイヤードアドレスに比較してよい。コマンドに関連付けられたアドレスがＳＢＳ−ＩＵのハードワイヤードアドレスと一致すると、ＳＢＳ−ＩＵは、終了コマンドを受信するまで、全ての以降のコマンドをＳＢＳ−ＩＵ自体に向けられているものとして解釈し、終了コマンドを受信すると、ＳＢＳ−ＩＵはバイパスモードに戻る。
【００４１】
様々な実施形態では、ＳＢトランシーバはＤＭＲと同じコアマスタクロックで動作して、ＤＭＲメモリ又はレジスタへのアクセスを実行する際のタイミングに関する問題を防ぐ。ただし、いくつかの実施形態では、ＰＥはよりゆっくりとしたクロックで動作できるようにしてよく、ＳＢＣ−ＩＵとＰＥとの間で移動するデータを潜在的にミスラッチすることがある。このような場合、ＳＢＣ−ＩＵとのいずれのデータの転送の間、ＰＥをマスタクロックに一時的に切り替えてよい。
【００４２】
ＳＩＮ上での通信は、並列入力及び出力を有するシフトレジスタを利用することによって固定ビット長のショートメッセージを使用して達成してよい。Ｍビットの固定長のメッセージは、同じ長さのシフトレジスタに容易に取り込まれる、又は同じ長さのシフトレジスタから容易に送信されるが、より長いレジスタを使用してもよく、また合計でＭビット以上になるより短いレジスタの組み合せを使用してもよい。送信機は、出力がＳＢＤＡＴＡに結合され、シフトクロックがＳＢＣＬＫに結合された出力シフトレジスタを有してよい。送信機はその出力シフトレジスタを並列ロードし、続いてシフトクロックをオンにしてメッセージを送出し、Ｍビット後に停止する。受信機は、そのデータ入力がＳＢＤＡＴＡに結合され、その入力クロックがＳＢＣＬＫに結合された入力シフトレジスタを有してよい。Ｍビットが到達した後、入力シフトレジスタを並列で読み出してよく、このデータを、コマンドコード、アドレス、ブロックデータサイズ、データについて復号してよい。固定長メッセージ及びシフトレジスタの使用は一例にすぎず、他のメッセージフォーマットを代わりに使用してよい。
【００４３】
特定のインタフェースユニット（ＳＢＳ−ＩＵ）で受信されたメッセージが、上記ＳＢＳ−ＩＵにアドレス指定されたコマンドを含まない場合、インタフェースユニット（ＳＢＳ−ＩＵ）はメッセージを無視し、チェーン内の次のインタフェースユニット（ＳＢＳ−ＩＵ）にメッセージを中継してよい。コマンドがＳＢＳ−ＩＵにアドレス指定される、又はコマンドが放送コマンドである場合、ＳＢＳ−ＩＵは示されたアクションを行うだけでよい。コマンドが応答メッセージを必要とする場合、ＳＢＳ−ＩＵはメッセージを生成して、これをデイジーチェーンの次のＳＢＳ−ＩＵに送信してよい。このメッセージは、多くのＳＢＳ−ＩＵを通過した後、メッセージを待つコントローラへの中継のためにシリアルバスコントローラ（ＳＢＣ）に戻る。ＳＢＳ−ＩＵから発せられたメッセージは、ＳＢＣからのメッセージと同じ固定長のメッセージフォーマットとなってよく、相違点は、宛先アドレスがＳＢＣアドレスである点である。
【００４４】
図３に示しかつ上述したように、バスコントローラ（ＳＢＣ）は、ブートコントローラ（ＢＣ）、デバッグアクセスポート（ＤＡＰ）コントローラ、外部ホストインタフェース（ＥＨＩ）、及びプロセッサインタフェースブロック（内部ＰＥインタフェース）に結合される。更に、指定されたプロセッサは、指定されたＤＭＲを通ってブートコントローラ及びバスコントローラ（ＳＢＣ）へと戻るアクセス経路を有する。これらのマスタコントローラ（ブートコントローラ、デバッグアクセスポートコントローラ、外部ホストインタフェース、プロセッサインタフェースブロック）のそれぞれは、ＳＩＮへのアクセスを要求することがある。各マスタは、適切にフォーマットされたメッセージをバスコントローラ（ＳＢＣ）に提供し、上記ＳＢＣはメッセージフォーマットエラーを検出してもしなくてもよい。
【００４５】
上述のように、図３に示すＳＩＮバストポロジーは、バスコントローラにアクセスするための経路を含む。この経路は指定されたＤＭＲ（ＤＭＲ０，０）のサウスポートからプロセッサインタフェースブロックを通って進む。この経路はいずれの内部ＰＥが使用するためのものである。プロセッサインタフェースブロック、つまり内部ＰＥインタフェース（ＩＰＥＩ）の目的は、ＳＩＮメッセージにバッファレジスタを提供し、それによってシステム内のいずれのＰＥがＰＩＮを使用して、指定されたＤＭＲ（ＤＭＲ０，０）のサウスポートを通ってＳＩＮにアクセスできるようにすることである。いずれのプロセッサがＳＩＮ上で通信するために、対象ＰＥはＰＩＮ上において、隣接するＤＭＲのうちの１つから指定されたＤＭＲ（ＤＭＲ０，０）への通信経路を通常の方法で確立し、次いで全二重通信用の逆経路を作成するための戻り経路情報を提供する。順方向経路及び逆方向経路を確立した後、対象ＰＥはＳＩＮコマンドを発行し、バスコントローラから結果及びメッセージステータス情報を受信してよい。
【００４６】
ＤＭＲ並びにその関連付けられたプロセッサ、メモリ及びインタフェースユニットの実施形態を、図４に示す。図示した実施形態では、ＤＭＲ４０１は、メモリ４０２、ルータ４０３を含む。メモリ４０２はルータ４０３に結合され、ルータ４０３はＰＥ４０４及びシリアルバススレーブ（ＳＢＳ）４０５に結合される。
【００４７】
ルータ４０１は、隣接するＰＥ及び隣接するＤＭＲに結合してよい。更に、ルータ４０１はメモリ４０２及びＳＢＳ４０５に結合してよい。いくつかの実施形態では、ルータ４０１は、例えばＰＥ４０４等の結合されたデバイスのうちの１つに受信されたデータのパケットを選択的に送信するよう構成してよいクロスバースイッチを含んでよい。他の実施形態では、ルータ４０１は、ＰＩＮの複数の層の間でデータパケットを送受するよう構成してよい。
【００４８】
メモリ４０２は、様々な設計スタイルのうちの１つに従って設計してよい。いくつかの実施形態では、メモリ４０２は複数のスタティックランダムアクセスメモリ（ＳＲＡＭ）セル又は他のいずれの適切な記憶回路を含んでよい。例えばメモリ４０２は、ラッチ、又はレジスタファイルとして配列されたフリップフロップ回路を含んでよい。
【００４９】
いくつかの実施形態では、ＳＢＳ４０５は専用ポートを介してルータ４０３及びＰＥ４０４に結合されてよい。更に、ＳＢＳ４０５は、他のＳＢＳユニットにも結合されて、上述のデイジーチェーン接続を形成してもよい。様々な実施形態では、ＳＢＳ４０５は、シリアル入力レジスタ及びシリアル出力レジスタを含んでよく、これらはシリアルバスリンクで通信をバッファリングするために利用できる。他のポートをバッファに入れるために追加のレジスタを含んでもよい。いくつかの実施形態では、ＳＢＳ４０５は、１つ又は複数の順序論理回路又は状態機械を含んでよい。このような回路は様々なポートとシリアルリンクとの間でメッセージフォーマットを変換するよう構成してよい。様々な実施形態では、ＳＢＳ４０５はＤＭＲ４０１に組み込まれてよい。他の実施形態では、ＳＢＳ４０５は別個の機能ブロックであってよい。
【００５０】
いくつかの実施形態では、構成レジスタは、例えば図４に示すＳＢＳ４０５等のＳＢＳ内に位置してよい。様々な実施形態では、構成レジスタは、シリアルバスコマンドを使用することによって読み書きできる。構成レジスタ内の個々のビットは、セキュリティを目的として、例えばＰＥ、ＤＭＲ並びに存在する場合はチップＩ／Ｏポート論理（ＮＲ）及び／又はＤＤＲ外部メモリコントローラといった、ＳＢＳ４０５に結合されたマクロセルへのアクセスを制御するよう、並びに動的省力のためにマクロセルクロックレートを制御するよう、設定又はクリアしてよい。構成レジスタ内の追加のビットを用いて、電源と所与のマクロセルとの間で直列のトランジスタを制御することによって、又は所与のマクロセル内部でトランジスタに対する基板バイアスを活性化し、これによってトランジスタを通る漏れを抑制することによって、漏れ電力を削減できる。様々な実施形態では、構成レジスタは、基本的なＤＭＲ及びＰＥに加えて追加のマクロセルを制御するための追加ビットを含んでよい。例えば追加のマクロセルは、関連付けられたＤＭＲ内のルート指定回路の追加層となってよい。
【００５１】
様々な実施形態では、ＳＢＳ構成レジスタは２１ビット長であってよく、低位の２０ビットを、セキュリティ及び省力のためにローカルマクロセルを設定するために使用してよい。２１ビット目はロックアウトビットであってよく、更なる変更を防止し、それによって次のチップ全体のリセットまで設定を保護するために利用できる。
【００５２】
いくつかの実施形態では、低位の６ビットは、ローカルマクロセル、つまりＰＥ、ＤＭＲ、並びに存在する場合はチップＩ／Ｏポート論理（ＮＲ）及び／又はＤＤＲ外部メモリコントローラのために、クロック有効化及びクロックリセットを選択的に制御してよい。より高位のビットは、セキュリティを目的としてローカル通信ポートを選択的に無効化するためのものであってよい。いくつかの実施形態では、ビット６及びビット１６〜１９は、追加された第２のルータ（Ｂ層ルータ）へのアクセスを制御するために使用できる。
【００５３】
本明細書に記載のレジスタは、記憶回路の特定の実施形態であってよい。いくつかの実施形態では、レジスタは、それぞれが単一データビットを記憶するよう構成された、１つ又は複数のラッチ、フリップフロップ回路、又は他の適切な記憶装置を含んでよい。レいくつかの実施形態では、ジスタは、クロックエッジ又は他のタイミング信号に応じてデータを記憶してよい。
【００５４】
図４に示す実施形態は単に例にすぎないことに留意されたい。他の実施形態では、異なる機能ブロック及び機能ブロックの異なる構成が可能であり、考察の対象となる。
【００５５】
図５を参照すると、プロセッサが二次相互接続ネットワークにアクセスするために一次相互接続ネットワーク上で通信を初期化する方法の一実施形態を示すフローチャートが示されている。図３、５に示すフローチャートを併せて参照すると、本方法はブロック５０１で開始する。次に、プロセッサから指定されたルータへの一次相互接続ネットワーク上の通信経路を確立してよい（ブロック５０２）。いくつかの実施形態では、例えば図３に示すようなＤＭＲ０，０等の指定されたルータは、例えば図３に示すような内部ＰＥインタフェース３０２等のプロセッサインタフェースブロックに結合してよい。いくつかの実施形態では、指定されたルータは、例えば図３に示すようなＰＥ０，０等の指定されたＰＥに結合されてよい。
【００５６】
ＰＩＮにおいて通信経路を確立することにより、プロセッサは指定されたルータに１つ又は複数の第２の相互接続ネットワーク（ＳＩＮ）メッセージを送信してよい（ブロック５０３）。いくつかの実施形態では、ＳＩＮメッセージは、ＰＩＮで利用される通信プロトコルに従ってフォーマットされてよい。例えばＳＩＮメッセージを一連のデータワードに分割してよく、各データワードは、フロー制御装置（ＦＬＩＴ）としてＰＩＮ上でビット並列で送信される。様々な実施形態では、ＳＩＮメッセージは、１つ又は複数のＳＩＮメッセージを含むデータペイロードに加えて制御情報又は経路選択情報を含んでよい、パケット又は一連のパケットで送信されてよい。
【００５７】
指定されたルータ（例えば図３のＤＭＲ０，０）に到達するＦＬＩＴ及びパケットは、流量制御を受けてプロセッサインタフェースブロック（図３の３０２）に転送され、レジスタでバッファリングできる。続いて制御情報及び経路選択情報を、１つ又は複数のＳＩＮメッセージを含むデータペイロードから分離してよい（ブロック５０４）。いくつかの実施形態では、プロセッサインタフェースブロックは、パケットヘッダからの制御情報及び経路選択情報を使用して、指定されたルータへのプロセッサインタフェースブロックの逆結合を介して１つ又は複数の個々のＤＭＲ又はＰＥへのＰＩＮの１つ又は複数の戻り経路を確立してよい。
【００５８】
第１のＳＩＮメッセージを再構築するために十分なデータがプロセッサインタフェースブロックのバッファに到着すると、第１のＳＩＮメッセージをＳＩＮバスコントローラにビット直列式で送信してよい（ブロック５０３）。続いて第１のＳＩＮメッセージを用いて、ＳＩＮコントローラに、それが既に別のコントローラによって使用されているかどうかを尋ねてよい。ＳＩＮコントローラが既に使用中である場合、プロセッサインタフェースブロックは流量制御信号伝達を用いて、結合されたＤＭＲ及びＰＩＮから送信側ＰＥへと戻るＦＬＩＴの配信をストールさせてよい。ＳＩＮコントローラが既に使用中ではない場合、第２のＳＩＮメッセージを含むＦＬＩＴをプロセッサインタフェースブロックのバッファの中に受け入れてよい。いくつかの実施形態では、受け入れ及びストールの交代は無期限に使用されてよい。様々な実施形態では、送信側ＰＥはそれ自体の遅延を更に挿入し、これらの間隔を使用して他の作業を行ってよい。
【００５９】
第２のＳＩＮメッセージを再構築するために十分なＦＬＩＴＳを受信すると、プロセッサインタフェースブロックは、ビット直列式で第２のＳＩＮメッセージをＳＩＮバスコントローラに提供してよい（ブロック５０５）。第２のＳＩＮメッセージは、その一意のアドレスで識別された特定のＳＢＳ−ＩＵにＳＩＮチャネルを初期化するために、ＳＩＮコントローラによって使用されてよい（ブロック５０６）。
【００６０】
いくつかの実施形態では、例えば図３に示すようなシリアルバスコントローラ３０１等のＳＩＮバスコントローラは、ブートコントローラ、デバッグアクセスポート（ＤＡＰ）、外部ホストインタフェース、内部プロセッサインタフェースに結合されてよく、その例が図３に示されている。続いてＳＩＮバスコントローラは二次相互接続ネットワークメッセージを選択し、二次相互接続ネットワーク上へ送信するために、上述のブロックからの様々な要求の間での調停を行ってよい（ブロック５０６）。ＳＩＮでチャネルを初期化するためのＳＩＮメッセージが意図されたＳＢＳ−ＩＳに到達すると、方法はブロック５０７で終了してよい。いくつかの実施形態では、ＳＩＮコントローラの第３のＳＩＮメッセージ要求を利用して、意図されたチャネルが初期化されたことを確認してよい。
【００６１】
いくつかの実施形態では、バスコントローラは、コマンドが二次相互接続ネットワークに中継される前にコマンドを検証してよい。検証は、２つの異なるＰＥによって送信される２つの同一のコマンドを比較することによって実行できる。いくつかの実施形態では、ＰＥのうちの１つは、例えば図３に示すＰＥ０，０といった指定されたＰＥ、つまりマスタＰＥであってよい。２つのコマンドのタイミングはソフトウェアによって制御されてよい。いくつかの実施形態では、２つの異なるポートからの書込みが衝突しないことを保証するためにセマフォ機構が利用されてよい。
【００６２】
２つのコマンドがバスコントローラに記憶されると、コマンドを比較してよい。コマンドが一致すると、コマンドは二次相互接続ネットワークへと提供される。コマンドが一致しない場合、コマンドは二次相互接続ネットワークへと提供されず、プログラム可能なエラー処理ユニットに送信されてよい。様々な実施形態では、プログラム可能なエラー処理ユニットの機能は、タンパーイベントを報告する能力、Ｉ／Ｏ回路を無効にする能力、メモリを「抹消する」能力、チップをリセットする能力、クロック若しくは電源をオフ／オンにする能力、又はチップのより多くの特徴のうちの１つを恒久的に無効にするためにヒューズを飛ばす能力を含んでよいが、これらに限定されない。
【００６３】
図５に示す方法の動作は連続して実行されるとして示されるが、他の実施形態では、動作の１つ又は複数を並行して実行してよい。更に、上述の方法の実施形態では、単一の二次相互接続ネットワークメッセージが、ＰＩＮを通して所与のＰＥからプロセッサインタフェースブロックに、次いでバスコントローラを通して二次相互接続ネットワークに送信される。しかしながら、メッセージは、マルチプロセッサアレイに含まれるいずれのＰＥから発されてよいことに留意されたい。
【００６４】
二次相互接続ネットワークからのメッセージを、プロセッサに提供するために一次相互接続ネットワークに提供する方法の一実施形態を、図６に示す。図３、６に示すフローチャートを併せて参照すると、本方法はブロック６０１で開始する。次に、指定されたルータ（例えば、図３のＤＭＲ０，０）からプロセッサへの通信経路を確立してよい（ブロック６０２）。いくつかの実施形態では、プロセッサは、図５に関して上述したプロセッサ等の、二次相互接続ネットワークメッセージを発したプロセッサであってよい。
【００６５】
逆通信経路が確立されると、図３に示すシリアルバスコントローラ３０１等のバスコントローラが、二次相互接続ネットワークから応答を受信してよい（ブロック６０３）。続いて受信された応答を、バスコントローラからプロセッサインタフェースブロックに送信してよい（ブロック６０４）。いくつかの実施形態では、図３に示す内部ＰＥインタフェース３０２等のプロセッサインタフェースブロックは１つ又は複数のバッファを含んでよく、これらはそれぞれ、バスコントローラを介して二次相互接続ネットワークから受信される受信済み応答を記憶するよう構成される。
【００６６】
プロセッサインタフェースブロックがバスコントローラから応答を受信すると、プロセッサインタフェースブロックは、例えば図３に示すＤＭＲ０，０等の指定されたルータに応答を中継してよい（ブロック６０５）。次に指定されたルータは、ターゲットプロセッサへの応答の転送を開始してよい（ブロック６０６）。いくつかの実施形態では、応答は、宛先プロセッサに到達する前に、確立された通信経路に沿って１つ又は複数のルータに沿って移動してよい。宛先プロセッサに応答が到着すると、方法はブロック６０７で終了してよい。
【００６７】
図６に示す方法は単に例にすぎないことに留意されたい。他の実施形態では、異なる動作及び動作の異なる順序を利用してよい。
【００６８】
いくつかの実施形態では、シリアルバスは１つのチップを越えて拡張しない。従ってマルチチップシステムでは、いくつかのＤＡＰポートが共に多重化されてよく、これらを操作できるようソフトウェアドライバが書き込まれる。マルチプロセッサチップとプログラマのＰＣとの間の通信チェーンに応じて、これは冗長で遅い場合がある。
【００６９】
図７を参照すると、システムに含まれるチップ間により高速の通信を提供できるマルチチップシステムの一実施形態が示されている。図示した実施形態では、チップ７０１はチップ７０２から７０４に結合される。このようなマルチチップシステムでは、１つのチップ上のＰＥは、ＰＩＮ、ターゲットチップＤＭＲ０，０、内部ＰＥインタフェース（ＩＰＥＩ）を通して、別のチップ上のＳＢＣにアクセスできる。
【００７０】
図７に示す実施形態では、チップ０のＰＥ０，０は、他の３つのチップのＳＢＣにアクセスしてよい。追加のチップのＳＢＣは、ＰＥからの出口経路がいっぱいになるまでアクセスされてよく、その後は追加のＰＥを利用してよい。ＰＩＮチップ間結合は真のシリアルバスポートほどワイヤ効率がよくなく、チップ間のリンク、つまりＰＩＮポートは、シリアルバスポートよりも６倍から１７倍多くの平行導線を要することがあるが、ＰＩＮポートは他の目的のために時分割方式で使用できる。
【００７１】
図７に示すマルチチップシステムでは４つのチップが示されているが、他の実施形態では、異なる数のチップ及びチップの異なる構成が可能であり、考察の対象となる。
【００７２】
上記開示を完全に理解すれば、当業者には多数の変形形態及び修正形態が明らかになるだろう。以下の特許請求の範囲は、全てのこのような変形形態及び修正形態を包含すると解釈されることが意図される。
【図１】
2018125044.tif 000003
【図２】
2018125044.tif 000004
【図３】
2018125044.tif 000005
【図４】
2018125044.tif 000006
【図５】
2018125044.tif 000007
【図６】
2018125044.tif 000008
【図７】
2018125044.tif 000009
【外国語明細書】
2018125044000001.pdf