特許第6341930号(P6341930)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ コーヒレント・ロジックス・インコーポレーテッドの特許一覧

特許6341930改善された二次相互接続ネットワークを備えたマルチプロセッサシステム
<>
  • 特許6341930-改善された二次相互接続ネットワークを備えたマルチプロセッサシステム 図000002
  • 特許6341930-改善された二次相互接続ネットワークを備えたマルチプロセッサシステム 図000003
  • 特許6341930-改善された二次相互接続ネットワークを備えたマルチプロセッサシステム 図000004
  • 特許6341930-改善された二次相互接続ネットワークを備えたマルチプロセッサシステム 図000005
  • 特許6341930-改善された二次相互接続ネットワークを備えたマルチプロセッサシステム 図000006
  • 特許6341930-改善された二次相互接続ネットワークを備えたマルチプロセッサシステム 図000007
  • 特許6341930-改善された二次相互接続ネットワークを備えたマルチプロセッサシステム 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6341930
(24)【登録日】2018年5月25日
(45)【発行日】2018年6月13日
(54)【発明の名称】改善された二次相互接続ネットワークを備えたマルチプロセッサシステム
(51)【国際特許分類】
   G06F 15/173 20060101AFI20180604BHJP
【FI】
   G06F15/173 685M
   G06F15/173 683C
   G06F15/173 683B
【請求項の数】30
【全頁数】24
(21)【出願番号】特願2015-547381(P2015-547381)
(86)(22)【出願日】2013年11月21日
(65)【公表番号】特表2015-537324(P2015-537324A)
(43)【公表日】2015年12月24日
(86)【国際出願番号】US2013071307
(87)【国際公開番号】WO2014092968
(87)【国際公開日】20140619
【審査請求日】2016年11月7日
(31)【優先権主張番号】61/736,851
(32)【優先日】2012年12月13日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】505000815
【氏名又は名称】コーヒレント・ロジックス・インコーポレーテッド
(74)【代理人】
【識別番号】100064621
【弁理士】
【氏名又は名称】山川 政樹
(74)【代理人】
【識別番号】100098394
【弁理士】
【氏名又は名称】山川 茂樹
(72)【発明者】
【氏名】ドブス,カール・エス
(72)【発明者】
【氏名】トロシーノ,マイケル・アール
【審査官】 小林 哲雄
(56)【参考文献】
【文献】 国際公開第2012/051577(WO,A1)
【文献】 特開2004−192621(JP,A)
【文献】 米国特許出願公開第2004/0117511(US,A1)
【文献】 特開2011−135433(JP,A)
【文献】 特開2004−326151(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/173
G06F 13/00
H04L 12/00
G06F 15/80
(57)【特許請求の範囲】
【請求項1】
複数のプロセッサ;
複数のメモリ;
複数のルータ;
を備える、マルチプロセッサシステムであって、
各前記プロセッサは複数のプロセッサポートを備え、
前記複数のルータは、一次相互接続ネットワークを形成し、
前記複数のプロセッサ、前記複数のメモリ、前記複数のルータは、分散型配置で連結され、
前記マルチプロセッサシステムはまた、複数のインタフェースユニットを備え、
各前記インタフェースユニットは、それぞれの前記プロセッサ及びそれぞれの前記ルータに結合され、
前記複数のインタフェースユニットは、連結されて二次相互接続ネットワークを形成し、
前記マルチプロセッサシステムはまた、少なくとも1つの指定された前記インタフェースユニットに結合したバスコントローラを備え、
前記バスコントローラは、前記少なくとも1つの指定されたインタフェースユニットにデータを送信し、かつ前記少なくとも1つの指定されたインタフェースユニットからデータを受信するよう構成され、
前記バスコントローラは、前記少なくとも1つの指定されたインタフェースユニットにアクセスするための要求を調停するよう構成され、
前記マルチプロセッサシステムはまた、前記バスコントローラに結合され、また前記少なくとも1つの指定されたインタフェースユニットに関連付けられた指定された前記ルータにも結合される、プロセッサインタフェースブロックを備え、
前記プロセッサインタフェースブロックは、前記マルチプロセッサシステム内の前記複数のプロセッサのうちのいずれが、前記一次相互接続ネットワークを使用して、前記指定されたルータを通して前記二次相互接続ネットワークにアクセスできるようにするよう構成される、マルチプロセッサシステム。
【請求項2】
前記プロセッサインタフェースブロックは、前記指定されたルータからメッセージを受信し、前記バスコントローラに前記メッセージを提供して、前記二次相互接続ネットワークに提供するよう構成され、
前記指定されたルータからの前記メッセージは、前記一次相互接続ネットワーク上で発せられ、
前記プロセッサインタフェースブロックは、前記バスコントローラを通して前記二次相互接続ネットワークからメッセージを受信し、前記指定されたルータに前記メッセージを提供して、前記一次相互接続ネットワークに提供するよう構成される、請求項1に記載のマルチプロセッサシステム。
【請求項3】
前記マルチプロセッサシステムのいずれの各前記プロセッサは:
1)前記二次相互接続ネットワークへの順方向経路を生成するための、前記一次相互接続ネットワーク上の、各前記プロセッサの隣接する前記ルータから前記指定されたルータへの第1の通信経路;及び
2)前記二次相互接続ネットワークとの全二重通信のための前記二次相互接続ネットワークからの逆経路を生成するための、前記一次相互接続ネットワーク上の、前記指定されたルータから各前記プロセッサの隣接する前記ルータへの第2の通信経路
を確立するよう構成可能である、請求項1に記載のマルチプロセッサシステム。
【請求項4】
前記プロセッサインタフェースブロックは、前記二次相互接続ネットワークからのメッセージをバッファリングするための1つ又は複数のバッファレジスタを含み、
前記1つ又は複数のバッファレジスタは、いずれの前記プロセッサが前記一次相互接続ネットワークを使用して前記二次相互接続ネットワークにアクセスできるようにすることができる、請求項1に記載のマルチプロセッサシステム。
【請求項5】
特定の各ロセッサは、前記プロセッサインタフェースブロック及び前記バスコントローラを通して前記二次相互接続ネットワークへ提供するために、前記二次相互接続ネットワークからのメッセージを、前記一次相互接続ネットワーク上へ、前記指定されたルータに対して発行するように動作可能であり、
特定の各プロセッサは、前記バスコントローラ及び前記プロセッサインタフェースブロックを通して前記指定されたルータに提供された、前記二次相互接続ネットワークからの結果及び/又はメッセージステータス情報を受信するよう構成される、請求項1に記載のマルチプロセッサシステム。
【請求項6】
前記バスコントローラは、複数の回路ブロックから前記指定されたインタフェースユニットへのアクセスに対する複数の要求の間での調停を行うよう構成され、
前記複数の回路ブロックは:
前記プロセッサインタフェースブロック;及び
外部ホストインタフェース
を含む、請求項1に記載のマルチプロセッサシステム。
【請求項7】
前記マルチプロセッサシステムは、マルチチップシステム内の第1のチップ上に構成され、
前記マルチチップシステムは、各前記一次相互接続ネットワークによって連結された各チップ上に、複数の前記マルチプロセッサシステムを備え、
前記第1のチップ上のいずれのプロセッサは、前記マルチチップシステム内の第2のチップ上の二次相互接続ネットワークにアクセスできるよう構成可能である、請求項1に記載のマルチプロセッサシステム。
【請求項8】
前記複数のインタフェースユニットは、デイジーチェーン式で連結されて、前記二次相互接続ネットワークを形成する、請求項1に記載のマルチプロセッサシステム。
【請求項9】
前記バスコントローラは、2つ以上の前記プロセッサそれぞれからメッセージを受信するよう構成され、
前記バスコントローラは、前記2つ以上のプロセッサそれぞれから前記メッセージ比較を生成し、前記比較に基づいてアクションを実行するよう構成される、請求項1に記載のマルチプロセッサシステム。
【請求項10】
前記2つ以上のプロセッサそれぞれからのメッセージが一致すると判断された場合、前記バスコントローラは、前記2つ以上のプロセッサそれぞれからのメッセージのうちの1つを前記二次相互接続ネットワークに送信するよう構成され、
前記2つ以上のプロセッサそれぞれからのメッセージが一致しないと判断された場合、前記バスコントローラはプログラム可能エラーハンドラにメッセージを送信するよう構成される、請求項9に記載のマルチプロセッサシステム。
【請求項11】
前記指定されたルータは、前記バスコントローラへの別個の通信経路を有する前記指定されたプロセッサに関連付けられ、
前記バスコントローラは、前記指定されたプロセッサ及び別の前記プロセッサからメッセージを受信するよう構成され、
前記バスコントローラは、前記指定されたプロセッサ及び前記別のプロセッサからの前記メッセージを比較するよう構成され、
前記指定されたプロセッサ及び前記別のプロセッサから受信したメッセージが一致すると判断された場合、前記バスコントローラは、前記指定されたプロセッサ及び前記別のプロセッサから受信したメッセージのうちの1つを前記二次相互接続ネットワークに送信するよう構成され、
前記指定されたプロセッサ及び前記別のプロセッサから受信したメッセージが一致しないと判断された場合、前記バスコントローラはプログラム可能エラーハンドラにメッセージを送信するよう構成される、請求項1に記載のマルチプロセッサシステム。
【請求項12】
マルチプロセッサシステム内で通信を行うための方法であって、
前記マルチプロセッサシステムは、分散型配置で連結された複数のプロセッサ及び複数のデータメモリルータを備え、
前記方法は:
第1の前記プロセッサから指定された前記プロセッサに関連付けられた指定された前記ルータへの通信経路を、一次相互接続ネットワーク上で確立するステップ;
前記第1のプロセッサによって、前記一次相互接続ネットワークを通して前記指定されたルータに二次相互接続ネットワークからのメッセージを送信するステップ;
前記指定されたルータによって、前記二次相互接続ネットワークからの前記メッセージをロセッサインタフェースブロックに提供するステップ;
前記プロセッサインタフェースブロックによって、前記二次相互接続ネットワークからの前記メッセージをバスコントローラに提供するステップ;
前記バスコントローラによって、前記二次相互接続ネットワークからの前記メッセージを前記二次相互接続ネットワークに提供するステップ
を含み、
前記指定されたルータは、前記プロセッサインタフェースブロックに接続され、
前記方法は、前記マルチプロセッサシステム内のいずれの前記プロセッサが前記二次相互接続ネットワーク上で通信できるようにするために使用できる、方法。
【請求項13】
前記指定されたルータから前記第1のプロセッサへの逆通信経路を確立するステップを更に含み、
前記逆通信経路は、前記二次相互接続ネットワークから前記第1のプロセッサへ応答情報を提供するために使用できる、請求項12に記載の方法。
【請求項14】
前記バスコントローラによって、前記二次相互接続ネットワークから前記応答情報を受信するステップ;
前記バスコントローラによって、前記応答情報を前記プロセッサインタフェースブロックに提供するステップ;
前記プロセッサインタフェースブロックによって、前記応答情報を前記指定されたルータに提供するステップ;
前記指定されたルータによって、前記逆通信経路上で前記応答情報を前記第1のプロセッサに提供するステップ
を更に含む、請求項13に記載の方法。
【請求項15】
前記プロセッサインタフェースブロックにおいて、前記二次相互接続ネットワークからの前記メッセージをバッファリングするステップを更に含む、請求項12に記載の方法。
【請求項16】
前記バスコントローラによって、複数の回路ブロックからの、前記指定されたルータにアクセスするための要求を調停するステップを更に含み、
前記複数の回路ブロックは、前記プロセッサインタフェースブロック及び外部ホストインタフェースを含む、請求項12に記載の方法。
【請求項17】
前記バスコントローラによって、前記複数のプロセッサのうちの2つ以上の前記プロセッサそれぞれからメッセージを受信するステップ;
前記2つ以上のプロセッサからの前記受信したメッセージ比較を実行し、前記比較に基づいてアクションを実行するステップ
を更に含む、請求項12に記載の方法。
【請求項18】
前記2つ以上のプロセッサからのメッセージが一致するという判断に応答して、前記2つ以上のプロセッサからのメッセージのうちの1つを前記二次相互接続ネットワークに送信するステップ;
前記2つ以上のプロセッサからのメッセージが一致しないという判断に応答して、プログラム可能エラーハンドラにメッセージを送信するステップ
を更に含む、請求項17に記載の方法。
【請求項19】
前記バスコントローラによって、指定された前記プロセッサ及び別の前記プロセッサからメッセージを受信するステップ;
前記指定されたプロセッサ及び前記別のプロセッサからの前記メッセージを比較するステップ;
前記指定されたプロセッサ及び前記別のプロセッサからの前記メッセージが一致するという判断に応答して、前記指定されたプロセッサ及び前記別のプロセッサからの前記メッセージのうちの1つを前記二次相互接続ネットワークに送信するステップ;
前記指定されたプロセッサ及び前記別のプロセッサからの前記メッセージが一致しないという判断に応答して、プログラム可能エラーハンドラにメッセージを送信するステップ
を更に含み、
前記指定されたプロセッサは前記指定されたルータに関連付けられており、
前記指定されたプロセッサは、前記バスコントローラへの別個の通信経路を有する、請求項12に記載の方法。
【請求項20】
複数のプロセッサ;
複数の通信ポートと、第1のメモリと、ルーティングエンジンとをそれぞれ備える、複数のデータメモリルータ
を備える、マルチプロセッサシステムであって、
各前記プロセッサは複数のプロセッサポートを備え、
前記複数のプロセッサ、前記複数のデータメモリルータは、分散型配置で連結され、
前記複数のデータメモリルータは、一次相互接続ネットワークを形成し、
前記マルチプロセッサシステムはまた、複数のインタフェースユニットを備え、
各前記インタフェースユニットは、それぞれの前記プロセッサ及びそれぞれの前記データメモリルータに結合され、
前記複数のインタフェースユニットは、連結されて二次相互接続ネットワークを形成し、
前記マルチプロセッサシステムはまた、少なくとも第1及び第2の前記インタフェースユニットに結合したバスコントローラを備え、
前記バスコントローラは、前記第1のインタフェースユニットにデータを送信し、かつ前記第2のインタフェースユニットからデータを受信するよう構成され、
前記バスコントローラは、少なくとも前記第1及び第2のインタフェースユニットにアクセスするための要求を調停するよう構成され、
前記マルチプロセッサシステムはまた、前記バスコントローラに結合され、また前記第1のインタフェースユニットに関連付けられた第1の前記データメモリルータにも結合される、プロセッサインタフェースブロックを備え、
前記プロセッサインタフェースブロックは、前記マルチプロセッサシステム内の前記複数のプロセッサのうちのいずれが、前記一次相互接続ネットワークを使用して、前記第1のデータメモリルータを通して前記二次相互接続ネットワークにアクセスできるようにするよう構成される、マルチプロセッサシステム。
【請求項21】
前記プロセッサインタフェースブロックは、前記第1のデータメモリルータからメッセージを受信し、前記バスコントローラに前記メッセージを提供して、前記二次相互接続ネットワークに提供するよう構成され、
前記第1のデータメモリルータからの前記メッセージは、前記一次相互接続ネットワーク上で発せられ、
前記プロセッサインタフェースブロックは、前記バスコントローラを通して前記二次相互接続ネットワークからメッセージを受信し、前記第1のデータメモリルータに前記メッセージを提供して、前記一次相互接続ネットワークに提供するよう構成される、請求項20に記載のマルチプロセッサシステム。
【請求項22】
前記複数のプロセッサのうちのいずれの各前記プロセッサは:
1)前記二次相互接続ネットワークへの順方向経路を生成するための、前記一次相互接続ネットワーク上の、各前記プロセッサの隣接する前記ルータから前記第1のデータメモリルータへの第1の通信経路;及び
2)前記二次相互接続ネットワークとの全二重通信のための前記二次相互接続ネットワークからの逆経路を生成するための、前記一次相互接続ネットワーク上の、前記第1のデータメモリルータから各前記プロセッサの隣接する前記ルータへの第2の通信経路
を確立するよう構成可能である、請求項20に記載のマルチプロセッサシステム。
【請求項23】
前記プロセッサインタフェースブロックは、前記二次相互接続ネットワークからのメッセージをバッファリングするための1つ又は複数のバッファレジスタを含み、
前記1つ又は複数のバッファレジスタは、いずれの前記プロセッサが前記一次相互接続ネットワークを使用して前記二次相互接続ネットワークにアクセスできるようにすることができる、請求項20に記載のマルチプロセッサシステム。
【請求項24】
特定の各ロセッサは、前記プロセッサインタフェースブロック及び前記バスコントローラを通して前記二次相互接続ネットワークへ提供するために、前記二次相互接続ネットワークからのメッセージを、前記一次相互接続ネットワーク上へ、前記第1のデータメモリルータに対して発行するように動作可能であり、
特定の各プロセッサは、前記バスコントローラ及び前記プロセッサインタフェースブロックを通して前記第1のデータメモリルータに提供された、前記二次相互接続ネットワークからの結果及び/又はメッセージステータス情報を受信するよう構成される、請求項20に記載のマルチプロセッサシステム。
【請求項25】
前記バスコントローラは、さらに、複数の回路ブロックから少なくとも前記第1のインタフェースユニット及び前記第2のインタフェースユニットへのアクセスに対する複数の要求の間での調停を行うよう構成され、
前記複数の回路ブロックは:
前記プロセッサインタフェースブロック;及び
外部ホストインタフェース
を含む、請求項20に記載のマルチプロセッサシステム。
【請求項26】
前記マルチプロセッサシステムは、マルチチップシステム内の第1のチップ上に構成され、
前記マルチチップシステムは、各前記一次相互接続ネットワークによって連結された各チップ上に、複数の前記マルチプロセッサシステムを備え、
前記第1のチップ上のいずれのプロセッサは、前記マルチチップシステム内の第2のチップ上の二次相互接続ネットワークにアクセスできるよう構成可能である、請求項20に記載のマルチプロセッサシステム。
【請求項27】
前記複数のインタフェースユニットは、デイジーチェーン式で連結されて、前記二次相互接続ネットワークを形成する、請求項20に記載のマルチプロセッサシステム。
【請求項28】
前記バスコントローラは、2つ以上の前記プロセッサそれぞれからメッセージを受信するよう構成され、
前記バスコントローラは、前記2つ以上のプロセッサそれぞれから前記メッセージ比較を実行し、前記比較に基づいてアクションを実行するよう構成される、請求項20に記載のマルチプロセッサシステム。
【請求項29】
前記2つ以上のプロセッサそれぞれからのメッセージが一致すると判断された場合、前記バスコントローラは、前記2つ以上のプロセッサそれぞれからのメッセージのうちの1つを前記二次相互接続ネットワークに送信するよう構成され、
前記2つ以上のプロセッサそれぞれからのメッセージが一致しないと判断された場合、前記バスコントローラはプログラム可能エラーハンドラにメッセージを送信するよう構成される、請求項28に記載のマルチプロセッサシステム。
【請求項30】
前記第1のデータメモリルータは、前記バスコントローラへの別個の通信経路を有する前記指定されたプロセッサに関連付けられ、
前記バスコントローラは、前記指定されたプロセッサ及び別の前記プロセッサからメッセージを受信するよう構成され、
前記バスコントローラは、前記指定されたプロセッサ及び前記別のプロセッサからの前記メッセージを比較するよう構成され、
前記指定されたプロセッサ及び前記別のプロセッサからの前記メッセージが一致すると判断された場合、前記バスコントローラは、前記指定されたプロセッサ及び前記別のプロセッサからの前記ッセージのうちの1つを前記二次相互接続ネットワークに送信するよう構成され、
前記メッセージが一致しないと判断された場合、前記バスコントローラはプログラム可能エラーハンドラにエラーメッセージを送信するよう構成される、請求項20に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はマルチプロセッサシステムに関し、更に詳細には、複数のプロセッサ要素と、メモリと、一次相互接続ネットワークとを有するマルチプロセッサシステムにおける、改善された二次相互接続ネットワークに関する。
【背景技術】
【0002】
コンピュータシステム及びデジタル信号処理(DSP)システムは、複数の処理要素(PE)と、補助メモリ(SM)と、データ相互接続ネットワーク(IN)と、入出力(I/O)インタフェースとから構成できる。複数のPEが利用可能であることにより、システムは、より迅速にタスクを完了するための、又はタスクを完了するためのエネルギーを削減するために、並列アルゴリズムをサポートできる。並列アルゴリズムは、システム内での並びにシステム内への及びシステム内からの、PEとSMの間での非常に高速なデータストリーミングを必要とすることが多い。これらのシステムでは、相互接続ネットワークは概して少なくとも1つの高帯域幅(高ビット/秒スループット)一次相互接続ネットワーク(PIN)を含む。PINは、比較的大きなメッセージの高ビット/秒スループットに対して最適化されているが、特に低レイテンシ(ポイントツーポイント配信遅延)に対しては最適化されていない。
【0003】
また、PINを含む少なくとも1つの従来技術のマルチプロセッサシステムは、追加の低帯域幅二次相互接続ネットワーク(SIN)を有する。「シリアルバス」(SB)として実装された高レイテンシ型のSINは従来、本願の譲受人であるCoherent Logix Inc.製のHyperX hx3100Aと呼ばれるマルチプロセッサICチップに実装されている。図1は、HyperX hx3100Aに実装された、二次相互接続ネットワーク(SIN)とも呼ばれる従来技術のシリアルバス(SB)を示す。図1に示す従来技術のSINは、PE、SM、PIN、チップI/Oインタフェース、送電網、クロッキングネットワークとともにマルチプロセッサICに埋め込まれるように設計されている。図示したように、このシリアルバスアーキテクチャは、チップ内で前後に蛇行する長いループの中で全てのPE及びSMを相互接続している。これにより、SINは最小の面積及び消費電力でメッセージ配信の保証(GMD)をサポートできる。従ってSINは、アプリケーション及びシステムソフトウェアのプログラマにデバッグサポートを提供することを第1の目的としたオンチップシリアルバス(SB)であった。更にSBをシステムブートアップ中に使用して、メモリをロードし、電源投入時システムテスト実行することもできる。またSBを実行時間中に使用して、個々のPEポート及びI/Oポートのためのクロック周波数の制御、PINに対するセキュリティバリアの設定、PEメッセージパッシング等の様々なシステム管理機能を実行できる。最後にSBを、ICテスト及び評価でも使用できる。
【0004】
図1に示す従来技術のSINは、ローカルインタフェースユニット間のリンクの一方向デイジーチェーンとして編成されたシリアルバス(SB)アーキテクチャを有し、チェーンの両端はシリアルバスコントローラ(SBC)ユニットに結合されている。図1に示すように、典型的なローカルインタフェースユニットは、シリアルバススレーブ(SBS)インタフェースユニットとして標識される。これは、(以下により詳しく説明されるように)コマンドを発行できないためにそのように呼ばれている。各SBSインタフェースユニットは、1つのPE、1つのSMユニット、1つのSB入力リンク、1つのSB出力リンクに結合される。各SBSユニットには、個々のメッセージを特定のSBSユニットに送信できるように一意のアドレス値が割り当てられていた。各SBSインタフェースユニット(SBS−IU)は、PE及びSMの主にワード並列のフォーマット間のメッセージフォーマットをSBリンクの主にビット直列のフォーマットに変換するために、レジスタ及び論理を含んでいる。インタフェースユニット間の各リンクは、一方のワイヤがデータ信号(SBDATA)を搬送し、他方がクロック信号(SBCLK)を搬送して、受信機入力フリップフロップでデータを取り込む2本の平行導線である。メッセージの存在はSBCLK上の複数のパルスによって示され(ここで、SBDATA上のデータ1ビットごとに1パルスである)、メッセージの不在はSBCLK上の一定値によって示される。
【0005】
いくつかの実施形態では、固定長のSBメッセージを受信するために、SBS−IUをバッファと共に構成してよい。初めに(チップリセット時)、SBS−IUはリピータモードに入り、SBS−IUは固定長のSBメッセージを受信し、メッセージヘッダのアドレスをそれ自体の一意のアドレスと比較してよい。これらアドレスが一致しない場合、SBS−IUはメッセージをチェーン内の次のSBS−IUに渡してよい。アドレスが一致する場合、SBS−IUは、SBS−IUがリピータモードに戻るコマンドを受信するまで、以後のメッセージが可能なコマンドとして処理されるチャネルモードに入ってよい。SBS−IUは、適切に符号化されたSBメッセージからコマンドのセットを復号するよう構成されてよい。SBメッセージがコマンドのセットのうちの1つについて適切に符号化されない場合、SBS−IUはこれを無視する。様々な実施形態では、コマンドは以下の通りである:SBS−IU設定レジスタの読み書き;(DMRのリセット、PEのリセット、PEのクロック周波数の設定、存在する場合はI/O回路のリセット、PINルータセキュリティバリアの設定);特定のアドレス又はアドレスのブロックにおけるSMの読み書き;特定の条件下でのメッセージレジスタを含むPEレジスタの読み書き;PE分岐点の設定;PE中断の強制;シングルステップPE;ウェークアップPE(実行させる);グローバル中断信号伝達へのPEの参加の有効化/無効化。読み出しコマンドの場合、SBS−IUは読み出されたデータを含む戻りSBメッセージを生成してよく、これをチェーンの次のSBS−IUに送信する。戻りSBメッセージはチェーン内の他のSBS−IUを通過でき(これは上記他のSBS−IUがリピータモードにあるためである)、SBCによって、チャネルをセットアップするコントローラに転送できる。
【0006】
図1に示すように、シリアルバスコントローラ(SBC)は、SBの両端、デバッグアクセスポート(DAP)コントローラ、ブートコントローラに結合される。SBCは、DAPコントローラ及びブートコントローラからSBメッセージを受け入れ、DAPコントローラ及びブートコントローラに戻りメッセージを返す。SBCの主要な目的は、2つ以上のコントローラがSBアクセスを一度に獲得すること(これは、コマンド及び誤った結果の無作為な混合を生じさせることがある)を防止することである。SBが休止している場合には、どちらかのコントローラがSBS−IUへのチャネルを開始してよい。チャネルが既に存在する場合、SBCコントローラは、現在のチャネルが終了するまで、チャネルを開始しようとするいかなる新しい試みも無視する。2つのコントローラが同時にチャネルを開始しようと試みる場合には、一方がアクセスを獲得し、他方のSBCが無視されるようにSBCが調停する。
【0007】
図1に示すように、PE0,0がSBCにメッセージを送信し、SBCから結果のメッセージを受信できるようにするために、DMR0,0専用のいくつかのレジスタをブートコントローラに結合する。DMR0,0専用のこれらのレジスタは、PINによってアクセス可能ではなく、PE0,0以外のいかなるPEによってもアクセス可能ではない。DMR0,0の特定のレジスタがPE0,0によって書き込まれると、メッセージがSBCに転送される。SBCからの戻りSBメッセージデータは、DMR0,0内の特定のレジスタにコピーできる。SBを利用するPE0,0上のソフトウェアプログラムは、SBメッセージトランスポートの比較的長いレイテンシを待機するために、適切な遅延を含む必要がある場合がある。
【0008】
マルチプロセッサシステムでの使用のために、改善された二次相互接続ネットワーク(SIN)アーキテクチャに対する需要がある。
【発明の概要】
【課題を解決するための手段】
【0009】
複数のプロセッサと、複数のメモリと、複数のルータとを含むマルチプロセッサシステムの様々な実施形態を開示する。一実施形態では、各プロセッサは関連付けられたメモリ及びルータを有し、複数のプロセッサ、複数のメモリ、複数のルータは分散型配置で連結される。複数のルータを連結して一次相互接続ネットワークを形成する。マルチプロセッサシステムは複数のインタフェースユニットも含み、各プロセッサ/ルータ組み合せは、関連付けられたインタフェースユニットを有する。複数のインタフェースユニット及び少なくとも1つのコントローラを連結して、二次相互接続ネットワーク(SIN)を形成する。複数のインタフェースユニットを、デイジーチェーン式で又は複数のループで連結して、二次相互接続ネットワークを作成してよい。この少なくとも1つのコントローラは他のコントローラ及びSINの外部のメッセージソースと結合されており、SINにアクセスするためにソースからメッセージを受信し、ソースにメッセージを返し、ソースからの要求を調停してSIN制御エラーを防止するよう構成される。インタフェースユニットの複数のチェーンはSINコントローラに結合してよく、インタフェースユニットの各チェーンは、一方向の又は双方向のメッセージの流れをサポートするよう構成してよい。
【0010】
指定されたプロセッサは、(本明細書では「バスコントローラ」とも呼ばれる)SINコントローラに結合するよう構成してよい。この指定されたプロセッサは、関連付けられた少なくとも1つの指定されたインタフェースユニットと、バスコントローラに結合される、関連付けられた指定されたルータとを有する。バスコントローラは、少なくとも1つの指定されたインタフェースユニットにデータを送信し、少なくとも1つの指定されたインタフェースユニットからデータを受信するよう構成される。一実施形態では、この少なくとも1つの指定されたインタフェースユニットは2つの異なる指定されたインタフェースユニットを備え、各指定されたインタフェースユニットはそれぞれのプロセッサに関連付けられ、一方がバスコントローラにデータを送信するよう構成され、他方がコントローラからデータを読み出すよう構成される。
【0011】
バスコントローラは、少なくとも1つの指定されたインタフェースユニットへのアクセスに対する複数の要求の間での調停を行うよう構成してよい。言い換えると、バスコントローラは、異なる複数の論理ブロックから、指定されたインタフェースユニットにアクセスするための要求を受信し、これらの要求のうちの1つを選択して、指定されたインタフェースユニットに提供するよう構成してよい。指定されたインタフェースユニットに対するアクセスを要求できる論理ブロックは、プロセッサインタフェースブロック、及びホストインタフェース、ブートコントローラ、デバッグアクセスポートといった他のブロックを含んでよい。プロセッサインタフェースブロックはバスコントローラに結合され、上記少なくとも1つの指定されたインタフェースユニットに関連付けられた指定されたルータにも結合される。プロセッサインタフェースブロックは、マルチプロセッサシステム内の複数のプロセッサのうちのいずれ又は場合によっては全てが、一次相互接続ネットワークを使用して、指定されたルータを通して二次相互接続ネットワークにアクセスできるようにするよう構成される。プロセッサインタフェースブロックは、二次相互接続ネットワークメッセージをバッファリングするための1つ又は複数のバッファレジスタ、及びメッセージの損失又は重複を防止するための流量制御回路を備えてよい。1つ又は複数のバッファレジスタ及び流量制御回路は、いずれのプロセッサが一次相互接続ネットワークを使用して二次相互接続ネットワークにアクセスできるようにする際に使用される。
【0012】
例えば、指定されたルータは、一次相互接続ネットワークで発せられるメッセージを受信してよい。プロセッサインタフェースブロックは、指定されたルータからこれらのメッセージを受信し、バスコントローラにこれらのメッセージを提供して、二次相互接続ネットワークに提供してよい。またプロセッサインタフェースブロックは、バスコントローラを通して二次相互接続ネットワークからメッセージを受信し、指定されたルータにこれらのメッセージを提供して、一次相互接続ネットワークに提供してよい。
【0013】
一実施形態では、マルチプロセッサシステムのいずれの各プロセッサは:1)二次相互接続ネットワークへの順方向経路を生成するための、一次相互接続ネットワーク上の、各プロセッサの隣接するルータから指定されたルータへの第1の通信経路;及び2)二次相互接続ネットワークとの全二重通信のための二次相互接続ネットワークからの逆経路を生成するための、一次相互ネットワーク上の、指定されたルータから各プロセッサの隣接するルータへの第2の通信経路を確立するよう構成可能である。
【0014】
このようにして、いずれの各プロセッサは、プロセッサインタフェースブロック及びバスコントローラを通して二次相互接続ネットワークへ提供するために、二次相互接続ネットワークコマンドを、一次相互接続ネットワーク上へ、指定されたルータに対して発行するように動作可能である。更に、このようないずれの各プロセッサは、バスコントローラ及びプロセッサインタフェースブロックを通して指定されたルータに提供された、二次相互接続ネットワークからの結果及び/又はメッセージステータス情報を受信するよう構成される。
【0015】
バスコントローラは、2つ以上のプロセッサそれぞれからコマンドを受信し、受信したコマンドを比較し、この比較に基づいてアクションを実行するよう構成してよい。例えば、これらのコマンドが一致すると判断された場合、バスコントローラはコマンドのうちの1つを二次相互接続ネットワークに送信するよう構成してよい。コマンドが一致しないと判断された場合、バスコントローラはプログラム可能エラーハンドラにメッセージを送信するよう構成してよい。一実施形態では、指定されたプロセッサはバスコントローラへの別個の通信経路を有し、バスコントローラは指定されたプロセッサ及び別のプロセッサからコマンドを受信するよう構成される。バスコントローラは、指定プロセッサ及び他のプロセッサから受け取ったコマンドを比較して、上述のアクションを実行するよう構成してよい。
【0016】
いくつかの実施形態では、マルチチップシステムは複数の上述のマルチプロセッサシステムを含んでよく、これらマルチプロセッサシステムは異なるそれぞれのチップに実装され、そのそれぞれの一次相互接続ネットワークによって連結される。このマルチチップシステムでは、1つのチップ上のいずれのプロセッサが、マルチチップシステム内のいずれの他のチップの二次相互接続ネットワークにアクセスできてよい。
【0017】
マルチプロセッサシステムでの通信のための方法は、以下のステップを含んでよい。第1に、第1のプロセッサから指定されたプロセッサに関連付けられた指定されたルータへの通信経路を、一次相互接続ネットワーク上で確立してよい。指定されたルータは、プロセッサインタフェースブロックに接続してよい。続いて第1のプロセッサは、一次相互接続ネットワークを通して指定されたルータに二次相互接続ネットワークメッセージを送信してよい。その後、指定されたルータは、二次相互接続ネットワークメッセージをプロセッサインタフェースブロックに提供してよく、プロセッサインタフェースブロックはこのメッセージをバスコントローラに提供する。そしてバスコントローラは、二次相互接続ネットワークメッセージを二次相互接続ネットワークに提供する。本方法は、マルチプロセッサシステム内のいずれのプロセッサが二次相互接続ネットワーク上で通信できるようにするために使用できる。
【0018】
本方法はまた、二次相互接続ネットワークブロックから第1のプロセッサへの通信も提供してよい。これは、指定されたルータから第1のプロセッサへの逆通信経路の確立も含んでよく、この逆通信経路は二次相互接続ネットワークから第1のプロセッサへ応答情報を提供するために使用できる。本通信方法は、二次相互接続ネットワークから応答情報を受信して、プロセッサインタフェースブロックにこの応答情報を提供する、バスコントローラを備えてよい。応答情報をプロセッサインタフェースブロックでバッファリングしてよい。プロセッサインタフェースブロックは、応答情報を指定されたルータに提供してよく、続いて指定されたルータは逆通信経路上で応答情報を第1のプロセッサに提供する。
【図面の簡単な説明】
【0019】
図1図1は、マルチプロセッサシステム用の従来技術の二次相互接続シリアルバスのブロック図である。
図2図2は、一次相互接続ネットワークを含むマルチプロセッサシステムの一実施形態を示すブロック図である。
図3図3は、マルチプロセッサシステムの二次相互接続ネットワークを示すブロック図である。
図4図4は、ルータ並びにその関連付けられたプロセッサ、メモリ及びインタフェースユニットの一実施形態のブロック図である。
図5図5は、プロセッサが二次相互接続ネットワークにアクセスするために一次相互接続ネットワーク上で通信する方法の一実施形態のフローチャート図である。
図6図6は、二次相互ネットワークからのメッセージをプロセッサに提供するために一次相互接続ネットワークに提供する方法の一実施形態のフローチャート図である。
図7図7は、チップ間の一次相互接続ネットワーク通路を使用してリモートチップ上の二次相互接続ネットワークにアクセスするマルチチップシステム実施形態を示すブロック図である。
【発明を実施するための形態】
【0020】
本発明は様々な修正及び代替形態を許容するものであるが、その具体的な実施形態を例として図面に示し、また本明細書で詳細に説明する。しかしながら、上記具体的実施形態の図及び詳細な説明は、図示されている特定の形態に開示を限定することを意図したものではなく、反対に、添付の請求項によって定義されるような本開示の精神及び範囲内にある全ての修正例、均等物及び代替例を包含することを意図したものであることを理解されたい。本明細書において使用されている見出しは、単に組織化を目的としたものであり、これらの使用は本説明の範囲の限定を意味しない。本出願全体を通して使用される単語「してよい/し得る/できる(may)」は、許容の意味で(即ち「可能性がある」ことを意味して)使用されており、強制の意味で(即ち「しなければならない」ことを意味して)使用されるものではない。同様に、単語「含む(include/including/includes)」は、ある対象を含むもののそれに限定されないことを意味する。
【0021】
様々なユニット、回路又はその他の構成部品は、1つ又は複数のタスクを実施する「よう構成される(configured to)」として記載され得る。このような文脈において「よう構成される」は、動作中に上記1つ又は複数のタスクを実施する「回路構成を有する」ことを一般に意味する、構造の広範な説明である。従ってユニット/回路/構成部品は、ユニット/回路/構成部品が現在オンでなくても上記タスクを実施するよう構成できる。一般に「よう構成される」に対応する構造を形成する回路構成は、ハードウェア回路を含んでよい。同様に、記載を簡略化するために、様々なユニット/回路/構成部品は、1つ又は複数のタスクを実施するとして記載され得る。このような記載は「よう構成される」という語句を含むものとして解釈されるものとする。1つ又は複数のタスクを実施するよう構成されるユニット/回路/構成部品の列挙は、これらユニット/回路/構成部品に関して米国特許法第112条第6段落の解釈を援用しないことを明示的に意図したものである。より一般には、いずれの要素の列挙は、「…のための手段(means for)」又は「…のためのステップ(step for)」という語句が具体的に使用されていない限り、上記要素に関して米国特許法第112条第6段落の解釈を援用しないことを明示的に意図したものである。
【0022】
参照による援用
Michael B.Doerr、William H.Hallidy、David A.Gibson、Craig M.Chaseを発明者とする、発明の名称「Processing System With Interspersed Stall Propagating Processors And Communication Elements」の米国特許第7415594号は、その全体を参照することにより、本明細書においてその全体が完全に論述されているかのように、本明細書に援用されるものとする。
【0023】
Michael B.Doerr、Carl S.Dobbs、Michael B.Solka、Michael R Trocino、David A.Gibsonを発明者とする、2011年10月14日出願の、発明の名称「Disabling Communication in a Multiprocessor System」の米国特許出願第13/274138号は、その全体を参照することにより、本明細書においてその全体が完全に論述されているかのように、本明細書に援用されるものとする。
【0024】
用語
ハードウェア構成プログラム:例えば集積回路等のハードウェアをプログラム又は構成するために使用できる、バイナリイメージにコンパイルできるソーステキストからなるプログラム。
【0025】
コンピュータシステム:パーソナルコンピュータシステム(PC)、メインフレームコンピュータシステム、ワークステーション、ネットワーク家電、インターネット家電、パーソナルデジタルアシスタント(PDA)、テレビジョンシステム、グリッドコンピューティングシステム若しくはその他のデバイス又はデバイスの組み合わせを含む、様々なタイプの計算又は処理システムのいずれか。一般に、用語「コンピュータシステム」は、メモリ媒体からの命令を実行する少なくとも1つのプロセッサを有するいずれのデバイス(又は複数のデバイスの組み合わせ)を包含するものとして広く定義できる。
【0026】
自動的に(automatically):その動作又は操作を直接指定又は実施するユーザ入力を必要とせずに、コンピュータシステムが実施する動作又は操作(例えばコンピュータシステムが実行するソフトウェア)について用いる。従って用語「自動的に」は、ユーザが手動で実施又は指定する操作(ここでユーザが操作を直接実施するために入力を提供する)と対照的なものである。自動処理は、ユーザが提供する入力によって開始される場合があるが、これに続く「自動的に」実施される動作は、ユーザが指定するものではなく、即ち「手動で」実施される(ユーザが各動作の実施を指定する)ものではない。例えばユーザが、各フィールドを選択し、(例えば情報をタイピングすることによって、チェックボックスを選択することによって、無線選択によって等で)情報を指定する入力を提供することによって、電子フォームを埋める場合、仮にコンピュータシステムがユーザの動作に応答して上記フォームを更新しなければならないとしても、これは上記フォームを手動で埋めたことになる。このようなフォームはコンピュータシステムによって自動で埋めることができ、この場合コンピュータシステム(例えばコンピュータシステム上で実行されるソフトウェア)は、フォームのフィールドを分析して、フィールドへの回答を指定するいずれのユーザ入力を必要とせずにフォームを埋める。上述のように、ユーザはフォームを自動で埋める動作を発動する場合はあるが、実際にフォームを埋める動作には関わらない(例えばユーザはフィールドへの回答を手動で指定せず、回答は自動的に完了する)。本明細書は、ユーザが行う動作に応答して自動的に実施される操作の様々な例を提供する。
【0027】
マルチプロセッサシステム上の相互接続ネットワーク
図2は、処理要素(PE)とも呼ばれる複数のプロセッサと、補助メモリとも呼ばれるデータメモリルータ(DMR)と、一次相互接続ネットワーク(PIN)と、二次相互接続ネットワーク(SIN)(図示せず)と、入出力(I/O)インタフェースとから構成される、マルチプロセッサシステムを示す。図示したように、図中の正方形はプロセッサ(つまり処理要素)を表し、円はデータメモリルータ(DMR)を表す。データメモリルータはルータ及びメモリを備え、このメモリは「補助メモリ」(SM)と呼ばれることがある。ルータ及びその関連付けられたメモリは、別個の独立したユニットとして考えることも、又は一体のデータメモリルータとして考えることもできる。各プロセッサ(PE)は4つの隣接するDMRに接続されているが、この接続は説明を容易にするために図示されていない。DMR間リンクと呼ばれるDMR間の接続は、マルチプロセッサシステム内の様々なプロセッサ間の通信を可能にする一次相互接続ネットワーク(PIN)を形成する。図示したように、複数のプロセッサ、複数のメモリ、複数のルータが分散型配置で連結されている。図2には示されていない(ただし図3には示されている)が、マルチプロセッサシステムは複数のインタフェースユニットを含み、各インタフェースユニットはそれぞれのプロセッサ(PE)及びそれぞれのルータ(DMR)に結合される。複数のインタフェースユニットは連結されて二次相互接続ネットワーク(SIN)を形成する。以下で更に説明するように、マルチプロセッサシステムは、プロセッサのうちのいずれ(少なくともプロセッサの複数のサブセット)がSINと通信できるようにする、改善されたアーキテクチャを含む。
【0028】
複数のプロセッサ(PE)が存在することにより、マルチプロセッサシステムは、より迅速にタスクを完了するための、又はタスクを完了するためのエネルギーを削減するための、並列アルゴリズムをサポートしてよい。並列アルゴリズムは、システム内での並びにシステム内への及びシステム内からの、PEとSMの間での非常に高速なデータストリーミングを必要とすることが多い。一次相互接続ネットワーク(PIN)は、好ましくは、比較的大きなメッセージの高いビット/秒スループットに対して最適化されているが、特に低レイテンシに対しては最適化されていない(ポイントツーポイント配信遅延)、高帯域幅(高いビット/秒スループット)相互接続ネットワークである。トラフィック負荷が軽い条件下では、大部分のメッセージは妨げられることなくPINを通過することになる。トラフィック負荷が重い条件下では、メッセージはネットワーク上の他のメッセージによってブロックされることがある。PINハードウェアは、トラフィックが少なくなり、ブロックするトラフィックが消えた後に最終的にブロックされたメッセージを配信してよいが、その間にPINは送信者にビジー信号を反映することがある。
【0029】
また、図2は、マルチプロセッサシステム内の例示的な平面メッシュPINも示す。現在のシリコントランジスタIC製作技術を使用すると、単一のICチップ上に100以上のPEを集積して相互接続できる。高度な回路基板及び他の基板によって相互接続された多数のこれらのチップを用いて、数千のPEのシステムを作成できる。
【0030】
並列アルゴリズムはメッセージブロックを最小限に抑えるように設計できるが、特にアルゴリズムがハードウェアに適合されているアプリケーションソフトウェアの開発では、並列アルゴリズムはメッセージブロックを常には排除できない。一般に2つのタイプの、1つ又は複数の追加の低帯域幅二次相互接続ネットワーク(SIN)が必要となる。一方はPINよりも低いレイテンシでの緊急の通信をサポートするためのものであり、他方はメッセージ配信の保証(GMD)によって構成機能及びデバッグ機能をサポートするためのものであるが、レイテンシがより高い。いくつかの実施形態では、二次相互接続ネットワーク(SIN)はシリアルバスであってよく、従って本明細書では「シリアルバス」(SB)と呼ばれてよい。
【0031】
図3を参照すると、二次相互接続ネットワーク(SIN)の一実施形態が示されている。SINは、複数のプロセッサ(PE)、複数の補助メモリ(SM)、複数のルータ、一次相互接続ネットワーク(PIN)、チップI/Oインタフェース、送電網、クロッキングネットワークとともに、マルチプロセッサシステムICチップに埋め込まれてよい。より具体的には、図3に示すように、マルチプロセッサシステムは、図3において円で表される複数のプロセッサ(PE)と、矩形として表される複数のデータメモリルータ(DMR)とを備える。これもまたり図示されているように、マルチプロセッサシステムは複数のインタフェースユニットを含み、各インタフェースユニットはそれぞれのプロセッサ及びそれぞれのルータに結合される。インタフェースユニットは、それぞれのプロセッサ(PE)とそれぞれのDMRとの間に位置する小さい正方形として表される。個々のメッセージを特定のインタフェースユニットに送信できるように、各インタフェースユニットに一意のアドレス値を割り当ててよい。図示したように、複数のインタフェースユニットを連結して二次相互接続ネットワークを形成する。より具体的には、複数のインタフェースユニットをデイジーチェーン式で連結して、二次相互接続ネットワーク(SIN)を形成する。
【0032】
いくつかの実施形態では、SINは、チップ全体で前後に蛇行する長いループ内の全てのPE及びSMを相互接続するためにシリアルバスアーキテクチャを有してよい。従って、本明細書に提示されるSINの一例はオンチップシリアルバス(SB)である。SINは、最小の面積及び消費電力でメッセージ配信の保証(GMD)をサポートできるよう動作してよい。SINは、アプリケーション及びシステムソフトウェアのプログラマにデバッグサポートを提供してよい。更に、SINをシステムブートアップ中及びいずれの時点で使用して、メモリをロードし、電源投入時システムテストを実行できる。またSINを実行時中に使用して、クロック制御管理及びPEメッセージパッシング等の様々なシステム管理機能を実行できる。最後に、SINをICテスト及び評価で使用することもできる。
【0033】
本明細書に記載の実施形態では、SINは、ローカルインタフェースユニット間のリンクの一方向デイジーチェーンとして編成されたシリアルバス(SB)アーキテクチャを有し、図3に示すように、チェーンの両端は、シリアルバスコントローラ(SBC)ユニットとも呼ばれるバスコントローラに結合される。図3に示す実施形態では、インタフェースユニットは図3のシリアルバススレーブ(SBS)インタフェースとして標識される。各インタフェースユニット(SBSユニット)は1つのPE、1つのSMユニット、1つのSB入力リンク、1つのSB出力リンクに結合する。上述のように、個々のメッセージを特定のSBSユニットに送信できるように、各インタフェースユニット(SBSユニット)に一意のアドレス値を割り当ててよい。各インタフェースユニット(SBS−IU)は、PE及びSMの主にワード並列のフォーマット間のメッセージフォーマットを、SBリンクの主にビット直列のフォーマットに変換するためにレジスタ及び論理を含む。
【0034】
SBは多数のコマンドをサポートしてよい。例えばいくつかの実施形態では、SBコマンドは、例えばリセット、ゼロ化、並列ロード(命令及び/又はデータ)、ウェークアップPE、分岐点強制、シングルステップ等の並列操作をサポートしてよい。他の実施形態では、SBは、PEパイプラインステータス及び命令ポインタの読み出し並びにタンパー検出リセットを可能にするコマンドをサポートしてよい。
【0035】
インタフェースユニット間の各リンクはN本の平行導線であってよく、小さいNは電力を保全し、大きいNはより多くのビット/秒スループットを達成する。SINではスループットは通常問題ではないので、2本のワイヤ(N=2)リンクを使用してよい。一方のワイヤはデータ信号(SBDATA)を搬送してよく、他方のワイヤはクロック信号(SBCLK)を搬送して、受信機入力フリップフロップにおいてデータを取り込んでよい。メッセージの存在は、SBCLK上の方形波で示すことができ、メッセージの不在はSBCLKでの一定値によって示すことができる。
【0036】
好ましい実施形態では、プロセッサのうちの1つは指定されたプロセッサである。つまり、図3でシリアルバスコントローラと呼ばれるバスコントローラに結合するように事前に構成されている。また、指定されたプロセッサは、関連付けられた「指定されたルータ」及び「指定されたインタフェースユニット」も有する。図示したように、指定されたルータはプロセッサインタフェースユニットに接続される。従って、マルチプロセッサシステムのいずれのプロセッサ(PE)は指定されたルータと通信して、SINにアクセスするための要求を提供できる。このようにして、例えば(指定されたプロセッサ以外の)プロセッサがSINでの通信を希望する場合、プロセッサは指定されたルータに通信要求を提供する。続いて指定されたルータはこの要求をプロセッサインタフェースブロックに転送できる。そしてプロセッサインタフェースブロックはこの要求をバスコントローラに転送できる。
【0037】
バスコントローラは、少なくとも1つの指定されたインタフェースユニットに結合され、少なくとも1つの指定されたインタフェースユニットにデータを送信し、少なくとも1つの指定されたインタフェースユニットからデータを受信するよう構成される。指定されたインタフェースユニットは、SINへの「エントリポイント」つまり「アクセスポイント」を形成する。このようにして、バスコントローラはプロセッサインタフェースブロックで受信したメッセージを、指定されたインタフェースユニットに、従ってSINに渡すよう構成される。一実施形態では、同一の指定されたインタフェースユニットは、SINとバスコントローラとの間でのデータ送信及びデータ受信の両方のために構成される。別の実施形態では、第1の指定されたインタフェースユニットは、バスコントローラからデータを受信してSIN上にデータを提供するよう構成され、第2の指定されたインタフェースユニットはSINからデータを受信してバスコントローラにデータを提供するよう構成される。
【0038】
バスコントローラは、アクセス要求の間のどのような競合も調停し、要求側の指定されたインタフェースユニットのうちの1つによるSINへの「一度に一回の(one−at−a−time)」アクセスを許可するよう構成される。多くの異なる論理ブロックがバスコントローラに結合され、SINへのアクセスのための要求をバスコントローラに提供してよい。これらの論理ブロックは、ブートコントローラ、デバッグアクセスポート(DAP)コントローラ、外部ホストインタフェース、プロセッサインタフェースブロックを含んでよい。いくつかの実施形態では、バスコントローラによって使用される調停方式及び優先順位は固定であってよい。一方、他の実施形態では、調停方式及び優先順位はプログラム制御下にあってよい。
【0039】
上述のように、プロセッサインタフェースブロックはバスコントローラに結合され、少なくとも1つの指定されたインタフェースユニットに関連付けられた指定されたルータとも結合される。プロセッサインタフェースブロックは、マルチプロセッサシステムの複数のプロセッサのうちのいずれが、一次相互接続ネットワークを使用して指定されたルータを通して通信することによって二次相互接続ネットワーク(SIN)にアクセスできるよう構成される。
【0040】
各インタフェースユニット(SBS−IU)は、その他のポートをバッファリングするためのシリアル入力レジスタ、シリアル出力レジスタ及び追加のレジスタ、並びにポートとシリアルバスとの間でメッセージフォーマットを変換するための1つ又は複数の状態機械から構成されてよい。SBS−IUでSBコマンドを受信すると、コマンドを初期化コマンドに関して試験してよい。初期化コマンドが存在しない場合、SBS−IUをバイパスモードのままとしてよい。しかしながら初期化コマンドが存在する場合、SBS−IUは、コマンドに関連付けられたアドレスをハードワイヤードアドレスに比較してよい。コマンドに関連付けられたアドレスがSBS−IUのハードワイヤードアドレスと一致すると、SBS−IUは、終了コマンドを受信するまで、全ての以降のコマンドをSBS−IU自体に向けられているものとして解釈し、終了コマンドを受信すると、SBS−IUはバイパスモードに戻る。
【0041】
様々な実施形態では、SBトランシーバはDMRと同じコアマスタクロックで動作して、DMRメモリ又はレジスタへのアクセスを実行する際のタイミングに関する問題を防ぐ。ただし、いくつかの実施形態では、PEはよりゆっくりとしたクロックで動作できるようにしてよく、SBC−IUとPEとの間で移動するデータを潜在的にミスラッチすることがある。このような場合、SBC−IUとのいずれのデータの転送の間、PEをマスタクロックに一時的に切り替えてよい。
【0042】
SIN上での通信は、並列入力及び出力を有するシフトレジスタを利用することによって固定ビット長のショートメッセージを使用して達成してよい。Mビットの固定長のメッセージは、同じ長さのシフトレジスタに容易に取り込まれる、又は同じ長さのシフトレジスタから容易に送信されるが、より長いレジスタを使用してもよく、また合計でMビット以上になるより短いレジスタの組み合せを使用してもよい。送信機は、出力がSBDATAに結合され、シフトクロックがSBCLKに結合された出力シフトレジスタを有してよい。送信機はその出力シフトレジスタを並列ロードし、続いてシフトクロックをオンにしてメッセージを送出し、Mビット後に停止する。受信機は、そのデータ入力がSBDATAに結合され、その入力クロックがSBCLKに結合された入力シフトレジスタを有してよい。Mビットが到達した後、入力シフトレジスタを並列で読み出してよく、このデータを、コマンドコード、アドレス、ブロックデータサイズ、データについて復号してよい。固定長メッセージ及びシフトレジスタの使用は一例にすぎず、他のメッセージフォーマットを代わりに使用してよい。
【0043】
特定のインタフェースユニット(SBS−IU)で受信されたメッセージが、上記SBS−IUにアドレス指定されたコマンドを含まない場合、インタフェースユニット(SBS−IU)はメッセージを無視し、チェーン内の次のインタフェースユニット(SBS−IU)にメッセージを中継してよい。コマンドがSBS−IUにアドレス指定される、又はコマンドが放送コマンドである場合、SBS−IUは示されたアクションを行うだけでよい。コマンドが応答メッセージを必要とする場合、SBS−IUはメッセージを生成して、これをデイジーチェーンの次のSBS−IUに送信してよい。このメッセージは、多くのSBS−IUを通過した後、メッセージを待つコントローラへの中継のためにシリアルバスコントローラ(SBC)に戻る。SBS−IUから発せられたメッセージは、SBCからのメッセージと同じ固定長のメッセージフォーマットとなってよく、相違点は、宛先アドレスがSBCアドレスである点である。
【0044】
図3に示しかつ上述したように、バスコントローラ(SBC)は、ブートコントローラ(BC)、デバッグアクセスポート(DAP)コントローラ、外部ホストインタフェース(EHI)、及びプロセッサインタフェースブロック(内部PEインタフェース)に結合される。更に、指定されたプロセッサは、指定されたDMRを通ってブートコントローラ及びバスコントローラ(SBC)へと戻るアクセス経路を有する。これらのマスタコントローラ(ブートコントローラ、デバッグアクセスポートコントローラ、外部ホストインタフェース、プロセッサインタフェースブロック)のそれぞれは、SINへのアクセスを要求することがある。各マスタは、適切にフォーマットされたメッセージをバスコントローラ(SBC)に提供し、上記SBCはメッセージフォーマットエラーを検出してもしなくてもよい。
【0045】
上述のように、図3に示すSINバストポロジーは、バスコントローラにアクセスするための経路を含む。この経路は指定されたDMR(DMR0,0)のサウスポートからプロセッサインタフェースブロックを通って進む。この経路はいずれの内部PEが使用するためのものである。プロセッサインタフェースブロック、つまり内部PEインタフェース(IPEI)の目的は、SINメッセージにバッファレジスタを提供し、それによってシステム内のいずれのPEがPINを使用して、指定されたDMR(DMR0,0)のサウスポートを通ってSINにアクセスできるようにすることである。いずれのプロセッサがSIN上で通信するために、対象PEはPIN上において、隣接するDMRのうちの1つから指定されたDMR(DMR0,0)への通信経路を通常の方法で確立し、次いで全二重通信用の逆経路を作成するための戻り経路情報を提供する。順方向経路及び逆方向経路を確立した後、対象PEはSINコマンドを発行し、バスコントローラから結果及びメッセージステータス情報を受信してよい。
【0046】
DMR並びにその関連付けられたプロセッサ、メモリ及びインタフェースユニットの実施形態を、図4に示す。図示した実施形態では、DMR401は、メモリ402、ルータ403を含む。メモリ402はルータ403に結合され、ルータ403はPE404及びシリアルバススレーブ(SBS)405に結合される。
【0047】
ルータ401は、隣接するPE及び隣接するDMRに結合してよい。更に、ルータ401はメモリ402及びSBS405に結合してよい。いくつかの実施形態では、ルータ401は、例えばPE404等の結合されたデバイスのうちの1つに受信されたデータのパケットを選択的に送信するよう構成してよいクロスバースイッチを含んでよい。他の実施形態では、ルータ401は、PINの複数の層の間でデータパケットを送受するよう構成してよい。
【0048】
メモリ402は、様々な設計スタイルのうちの1つに従って設計してよい。いくつかの実施形態では、メモリ402は複数のスタティックランダムアクセスメモリ(SRAM)セル又は他のいずれの適切な記憶回路を含んでよい。例えばメモリ402は、ラッチ、又はレジスタファイルとして配列されたフリップフロップ回路を含んでよい。
【0049】
いくつかの実施形態では、SBS405は専用ポートを介してルータ403及びPE404に結合されてよい。更に、SBS405は、他のSBSユニットにも結合されて、上述のデイジーチェーン接続を形成してもよい。様々な実施形態では、SBS405は、シリアル入力レジスタ及びシリアル出力レジスタを含んでよく、これらはシリアルバスリンクで通信をバッファリングするために利用できる。他のポートをバッファに入れるために追加のレジスタを含んでもよい。いくつかの実施形態では、SBS405は、1つ又は複数の順序論理回路又は状態機械を含んでよい。このような回路は様々なポートとシリアルリンクとの間でメッセージフォーマットを変換するよう構成してよい。様々な実施形態では、SBS405はDMR401に組み込まれてよい。他の実施形態では、SBS405は別個の機能ブロックであってよい。
【0050】
いくつかの実施形態では、構成レジスタは、例えば図4に示すSBS405等のSBS内に位置してよい。様々な実施形態では、構成レジスタは、シリアルバスコマンドを使用することによって読み書きできる。構成レジスタ内の個々のビットは、セキュリティを目的として、例えばPE、DMR並びに存在する場合はチップI/Oポート論理(NR)及び/又はDDR外部メモリコントローラといった、SBS405に結合されたマクロセルへのアクセスを制御するよう、並びに動的省力のためにマクロセルクロックレートを制御するよう、設定又はクリアしてよい。構成レジスタ内の追加のビットを用いて、電源と所与のマクロセルとの間で直列のトランジスタを制御することによって、又は所与のマクロセル内部でトランジスタに対する基板バイアスを活性化し、これによってトランジスタを通る漏れを抑制することによって、漏れ電力を削減できる。様々な実施形態では、構成レジスタは、基本的なDMR及びPEに加えて追加のマクロセルを制御するための追加ビットを含んでよい。例えば追加のマクロセルは、関連付けられたDMR内のルート指定回路の追加層となってよい。
【0051】
様々な実施形態では、SBS構成レジスタは21ビット長であってよく、低位の20ビットを、セキュリティ及び省力のためにローカルマクロセルを設定するために使用してよい。21ビット目はロックアウトビットであってよく、更なる変更を防止し、それによって次のチップ全体のリセットまで設定を保護するために利用できる。
【0052】
いくつかの実施形態では、低位の6ビットは、ローカルマクロセル、つまりPE、DMR、並びに存在する場合はチップI/Oポート論理(NR)及び/又はDDR外部メモリコントローラのために、クロック有効化及びクロックリセットを選択的に制御してよい。より高位のビットは、セキュリティを目的としてローカル通信ポートを選択的に無効化するためのものであってよい。いくつかの実施形態では、ビット6及びビット16〜19は、追加された第2のルータ(B層ルータ)へのアクセスを制御するために使用できる。
【0053】
本明細書に記載のレジスタは、記憶回路の特定の実施形態であってよい。いくつかの実施形態では、レジスタは、それぞれが単一データビットを記憶するよう構成された、1つ又は複数のラッチ、フリップフロップ回路、又は他の適切な記憶装置を含んでよい。レいくつかの実施形態では、ジスタは、クロックエッジ又は他のタイミング信号に応じてデータを記憶してよい。
【0054】
図4に示す実施形態は単に例にすぎないことに留意されたい。他の実施形態では、異なる機能ブロック及び機能ブロックの異なる構成が可能であり、考察の対象となる。
【0055】
図5を参照すると、プロセッサが二次相互接続ネットワークにアクセスするために一次相互接続ネットワーク上で通信を初期化する方法の一実施形態を示すフローチャートが示されている。図3、5に示すフローチャートを併せて参照すると、本方法はブロック501で開始する。次に、プロセッサから指定されたルータへの一次相互接続ネットワーク上の通信経路を確立してよい(ブロック502)。いくつかの実施形態では、例えば図3に示すようなDMR0,0等の指定されたルータは、例えば図3に示すような内部PEインタフェース302等のプロセッサインタフェースブロックに結合してよい。いくつかの実施形態では、指定されたルータは、例えば図3に示すようなPE0,0等の指定されたPEに結合されてよい。
【0056】
PINにおいて通信経路を確立することにより、プロセッサは指定されたルータに1つ又は複数の第2の相互接続ネットワーク(SIN)メッセージを送信してよい(ブロック503)。いくつかの実施形態では、SINメッセージは、PINで利用される通信プロトコルに従ってフォーマットされてよい。例えばSINメッセージを一連のデータワードに分割してよく、各データワードは、フロー制御装置(FLIT)としてPIN上でビット並列で送信される。様々な実施形態では、SINメッセージは、1つ又は複数のSINメッセージを含むデータペイロードに加えて制御情報又は経路選択情報を含んでよい、パケット又は一連のパケットで送信されてよい。
【0057】
指定されたルータ(例えば図3のDMR0,0)に到達するFLIT及びパケットは、流量制御を受けてプロセッサインタフェースブロック(図3の302)に転送され、レジスタでバッファリングできる。続いて制御情報及び経路選択情報を、1つ又は複数のSINメッセージを含むデータペイロードから分離してよい(ブロック504)。いくつかの実施形態では、プロセッサインタフェースブロックは、パケットヘッダからの制御情報及び経路選択情報を使用して、指定されたルータへのプロセッサインタフェースブロックの逆結合を介して1つ又は複数の個々のDMR又はPEへのPINの1つ又は複数の戻り経路を確立してよい。
【0058】
第1のSINメッセージを再構築するために十分なデータがプロセッサインタフェースブロックのバッファに到着すると、第1のSINメッセージをSINバスコントローラにビット直列式で送信してよい(ブロック503)。続いて第1のSINメッセージを用いて、SINコントローラに、それが既に別のコントローラによって使用されているかどうかを尋ねてよい。SINコントローラが既に使用中である場合、プロセッサインタフェースブロックは流量制御信号伝達を用いて、結合されたDMR及びPINから送信側PEへと戻るFLITの配信をストールさせてよい。SINコントローラが既に使用中ではない場合、第2のSINメッセージを含むFLITをプロセッサインタフェースブロックのバッファの中に受け入れてよい。いくつかの実施形態では、受け入れ及びストールの交代は無期限に使用されてよい。様々な実施形態では、送信側PEはそれ自体の遅延を更に挿入し、これらの間隔を使用して他の作業を行ってよい。
【0059】
第2のSINメッセージを再構築するために十分なFLITSを受信すると、プロセッサインタフェースブロックは、ビット直列式で第2のSINメッセージをSINバスコントローラに提供してよい(ブロック505)。第2のSINメッセージは、その一意のアドレスで識別された特定のSBS−IUにSINチャネルを初期化するために、SINコントローラによって使用されてよい(ブロック506)。
【0060】
いくつかの実施形態では、例えば図3に示すようなシリアルバスコントローラ301等のSINバスコントローラは、ブートコントローラ、デバッグアクセスポート(DAP)、外部ホストインタフェース、内部プロセッサインタフェースに結合されてよく、その例が図3に示されている。続いてSINバスコントローラは二次相互接続ネットワークメッセージを選択し、二次相互接続ネットワーク上へ送信するために、上述のブロックからの様々な要求の間での調停を行ってよい(ブロック506)。SINでチャネルを初期化するためのSINメッセージが意図されたSBS−ISに到達すると、方法はブロック507で終了してよい。いくつかの実施形態では、SINコントローラの第3のSINメッセージ要求を利用して、意図されたチャネルが初期化されたことを確認してよい。
【0061】
いくつかの実施形態では、バスコントローラは、コマンドが二次相互接続ネットワークに中継される前にコマンドを検証してよい。検証は、2つの異なるPEによって送信される2つの同一のコマンドを比較することによって実行できる。いくつかの実施形態では、PEのうちの1つは、例えば図3に示すPE0,0といった指定されたPE、つまりマスタPEであってよい。2つのコマンドのタイミングはソフトウェアによって制御されてよい。いくつかの実施形態では、2つの異なるポートからの書込みが衝突しないことを保証するためにセマフォ機構が利用されてよい。
【0062】
2つのコマンドがバスコントローラに記憶されると、コマンドを比較してよい。コマンドが一致すると、コマンドは二次相互接続ネットワークへと提供される。コマンドが一致しない場合、コマンドは二次相互接続ネットワークへと提供されず、プログラム可能なエラー処理ユニットに送信されてよい。様々な実施形態では、プログラム可能なエラー処理ユニットの機能は、タンパーイベントを報告する能力、I/O回路を無効にする能力、メモリを「抹消する」能力、チップをリセットする能力、クロック若しくは電源をオフ/オンにする能力、又はチップのより多くの特徴のうちの1つを恒久的に無効にするためにヒューズを飛ばす能力を含んでよいが、これらに限定されない。
【0063】
図5に示す方法の動作は連続して実行されるとして示されるが、他の実施形態では、動作の1つ又は複数を並行して実行してよい。更に、上述の方法の実施形態では、単一の二次相互接続ネットワークメッセージが、PINを通して所与のPEからプロセッサインタフェースブロックに、次いでバスコントローラを通して二次相互接続ネットワークに送信される。しかしながら、メッセージは、マルチプロセッサアレイに含まれるいずれのPEから発されてよいことに留意されたい。
【0064】
二次相互接続ネットワークからのメッセージを、プロセッサに提供するために一次相互接続ネットワークに提供する方法の一実施形態を、図6に示す。図3、6に示すフローチャートを併せて参照すると、本方法はブロック601で開始する。次に、指定されたルータ(例えば、図3のDMR0,0)からプロセッサへの通信経路を確立してよい(ブロック602)。いくつかの実施形態では、プロセッサは、図5に関して上述したプロセッサ等の、二次相互接続ネットワークメッセージを発したプロセッサであってよい。
【0065】
逆通信経路が確立されると、図3に示すシリアルバスコントローラ301等のバスコントローラが、二次相互接続ネットワークから応答を受信してよい(ブロック603)。続いて受信された応答を、バスコントローラからプロセッサインタフェースブロックに送信してよい(ブロック604)。いくつかの実施形態では、図3に示す内部PEインタフェース302等のプロセッサインタフェースブロックは1つ又は複数のバッファを含んでよく、これらはそれぞれ、バスコントローラを介して二次相互接続ネットワークから受信される受信済み応答を記憶するよう構成される。
【0066】
プロセッサインタフェースブロックがバスコントローラから応答を受信すると、プロセッサインタフェースブロックは、例えば図3に示すDMR0,0等の指定されたルータに応答を中継してよい(ブロック605)。次に指定されたルータは、ターゲットプロセッサへの応答の転送を開始してよい(ブロック606)。いくつかの実施形態では、応答は、宛先プロセッサに到達する前に、確立された通信経路に沿って1つ又は複数のルータに沿って移動してよい。宛先プロセッサに応答が到着すると、方法はブロック607で終了してよい。
【0067】
図6に示す方法は単に例にすぎないことに留意されたい。他の実施形態では、異なる動作及び動作の異なる順序を利用してよい。
【0068】
いくつかの実施形態では、シリアルバスは1つのチップを越えて拡張しない。従ってマルチチップシステムでは、いくつかのDAPポートが共に多重化されてよく、これらを操作できるようソフトウェアドライバが書き込まれる。マルチプロセッサチップとプログラマのPCとの間の通信チェーンに応じて、これは冗長で遅い場合がある。
【0069】
図7を参照すると、システムに含まれるチップ間により高速の通信を提供できるマルチチップシステムの一実施形態が示されている。図示した実施形態では、チップ701はチップ702から704に結合される。このようなマルチチップシステムでは、1つのチップ上のPEは、PIN、ターゲットチップDMR0,0、内部PEインタフェース(IPEI)を通して、別のチップ上のSBCにアクセスできる。
【0070】
図7に示す実施形態では、チップ0のPE0,0は、他の3つのチップのSBCにアクセスしてよい。追加のチップのSBCは、PEからの出口経路がいっぱいになるまでアクセスされてよく、その後は追加のPEを利用してよい。PINチップ間結合は真のシリアルバスポートほどワイヤ効率がよくなく、チップ間のリンク、つまりPINポートは、シリアルバスポートよりも6倍から17倍多くの平行導線を要することがあるが、PINポートは他の目的のために時分割方式で使用できる。
【0071】
図7に示すマルチチップシステムでは4つのチップが示されているが、他の実施形態では、異なる数のチップ及びチップの異なる構成が可能であり、考察の対象となる。
【0072】
上記開示を完全に理解すれば、当業者には多数の変形形態及び修正形態が明らかになるだろう。以下の特許請求の範囲は、全てのこのような変形形態及び修正形態を包含すると解釈されることが意図される。
図1
図2
図3
図4
図5
図6
図7