(57)【要約】      （修正有）【課題】マルチプロセッサ・コンピュータ・システム内の異なる集積回路チップ上の処理ユニット間の通信方法を提供する。【解決手段】本通信方法は、発信処理ユニットから宛先処理ユニットへコマンドを発行すること、宛先処理ユニットがプログラム命令を処理している間にコマンドを宛先処理ユニットで受信すること、および宛先処理ユニットによるプログラム命令の処理を中断することなく、宛先処理ユニットのクロック制御されるコンポーネントにあるレジスタにアクセスすることによる。多くの処理ユニットを、リング型トポロジで相互接続することができ、アクセス・コマンドは、発信処理ユニットから他のいくつかの処理ユニットを介して渡すことができ、その後宛先処理ユニットに到達する。【選択図】図２
2004326784.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサ・コンピュータ・システム内の処理ユニット間の通信方法であって、
発信処理ユニットから宛先処理ユニットへコマンドを発行するステップであって、前記発信および宛先処理ユニットが異なる集積回路チップ上に物理的に配置される、ステップと、
前記宛先処理ユニットがプログラム命令を処理している間に、前記コマンドを前記宛先処理ユニットで受信するステップと、
前記受信するステップに応答して、前記宛先処理ユニットによる前記プログラム命令の処理を中断することなく、前記宛先処理ユニットのクロック制御されるコンポーネントにあるレジスタにアクセスするステップと
を含む、方法。
【請求項２】
前記マルチプロセッサ・コンピュータ・システムが、リング型トポロジで相互接続された２つより多い処理ユニットを有し、前記コマンドが、少なくとも１つの他の処理ユニットによって、前記発信処理ユニットから前記宛先処理ユニットに渡される、請求項１に記載の方法。
【請求項３】
前記処理ユニットがそれぞれ、それぞれの一義的な識別番号（ＰＩＤ）を有し、前記受信するステップが、前記コマンドに組み込まれたチップ・タグを前記宛先処理ユニットのＰＩＤに突き合わせるステップを含む、請求項２に記載の方法。
【請求項４】
前記コマンドが、複数の前記処理ユニットに向けられたブロードキャスト・コマンドであり、前記ブロードキャスト・コマンドが前記発信処理ユニットによって実行されるのをブロックするステップをさらに含む、請求項２に記載の方法。
【請求項５】
前記処理ユニットが、システム・メモリ・デバイスおよびサービス・プロセッサと相互接続され、前記発行するステップおよび受信するステップが、ファブリック・バスのトポロジに従う追加通信回線を使用する、請求項１に記載の方法。
【請求項６】
前記アクセスするステップが、前記宛先処理ユニットのレジスタからデータを読み出すステップを含む、請求項１に記載の方法。
【請求項７】
前記アクセスするステップが、前記宛先処理ユニットのレジスタにデータを書き込むステップを含む、請求項１に記載の方法。
【請求項８】
マルチプロセッサ・コンピュータ・システムにおけるクロス・チップ通信のための機構であって、
プログラム命令を処理する少なくとも１つのプロセッサ・コアを含む複数のクロック制御されるコンポーネントを有する処理ユニットと、
前記処理ユニットの前記クロック制御されるコンポーネント内に配置された複数の走査レジスタと、
前記プロセッサ・コアによる前記プログラム命令の処理を中断することなく、前記走査レジスタに対して選択的に読出しおよび書込みを行うアクセス・コマンドを実行する、前記走査レジスタに接続されたコマンド・コントローラと、
前記コマンド・コントローラに接続された、アクセス・コマンドを送受信する外部コマンド・インターフェースと
を備える、機構。
【請求項９】
前記外部コマンド・インターフェースが、直前の処理ユニットからアクセス・コマンドを受信するように適合された入力、および前記アクセス・コマンドを前記直前の処理ユニットから次の処理ユニットに送信するように適合された出力を有する、請求項８に記載の機構。
【請求項１０】
前記処理ユニットが、一義的な識別番号（ＰＩＤ）を有し、受信したアクセス・コマンドに組み込まれたチップ・タグに前記ＰＩＤが一致するとき、前記外部コマンド・インターフェースが、前記受信したアクセス・コマンドを前記コマンド・コントローラに渡す、請求項８に記載の機構。
【請求項１１】
前記処理ユニットが、必ずしも一義的でない特別なタグを含み、受信したアクセス・コマンドに組み込まれたチップ・タグに前記特別なタグが一致するとき、前記外部コマンド・インターフェースが、前記受信したアクセス・コマンドを前記コマンド・コントローラに渡す、請求項８に記載の機構。
【請求項１２】
ブロードキャスト・コマンドが前記処理ユニットから発信された場合、前記外部コマンド・インターフェースが、前記処理ユニットによって前記ブロードキャスト・コマンドが実行されるのをブロックする、請求項８に記載の機構。
【請求項１３】
前記クロック制御されるコンポーネントとの通信を処理するファブリック通信バスと、
前記外部コマンド・インターフェースに接続された通信回線と
をさらに備える、請求項８に記載の機構。
【請求項１４】
前記外部コマンド・インターフェースが、異なる処理ユニットのレジスタからデータを読み出す、請求項８に記載の機構。
【請求項１５】
前記外部コマンド・インターフェースが、異なる処理ユニットのレジスタにデータを書き込む、請求項８に記載の機構。
【請求項１６】
プログラム命令およびオペランド・データをストアするメモリ階層と、
前記メモリ階層と相互接続されたファブリック通信バスと、
前記ファブリック通信バスと相互接続された複数の処理ユニットとを備えるコンピュータ・システムであって、各前記処理ユニットが、
プログラム命令を処理する少なくとも１つのプロセッサ・コアを含む、複数のクロック制御されるコンポーネントと、
前記クロック制御されるコンポーネント内に配置された複数の走査レジスタと、
前記プロセッサ・コアによる前記プログラム命令の処理を中断することなく、前記走査レジスタに対して選択的に読出しおよび書込みを行うアクセス・コマンドを実行する、前記走査レジスタに接続されたコマンド・コントローラと、
前記コマンド・コントローラに接続された、アクセス・コマンドを送受信する外部コマンド・インターフェースとを有する、
コンピュータ・システム。
【請求項１７】
前記外部コマンド・インターフェースが、前記処理ユニットの直前の１つからアクセス・コマンドを受信するように適合された入力、および前記アクセス・コマンドを前記直前の処理ユニットから前記処理ユニットの次の１つに送信するように適合された出力を有する、請求項１６に記載のコンピュータ・システム。
【請求項１８】
前記処理ユニットがそれぞれ、それぞれの一義的な識別番号（ＰＩＤ）を有し、受信したアクセス・コマンドに組み込まれたチップ・タグに前記ＰＩＤが一致するとき、前記外部コマンド・インターフェースが、前記受信したアクセス・コマンドを前記コマンド・コントローラに渡す、請求項１６に記載のコンピュータ・システム。
【請求項１９】
ブロードキャスト・コマンドがその処理ユニットから発信された場合、前記外部コマンド・インターフェースが、その処理ユニットによって前記ブロードキャスト・コマンドが実行されるのをブロックする、請求項１６に記載のコンピュータ・システム。
【請求項２０】
前記外部コマンド・インターフェースが、前記ファブリック通信バスのトポロジに従う通信回線に接続される、請求項１６に記載のコンピュータ・システム。
【請求項２１】
前記外部コマンド・インターフェースが、前記処理ユニットの直前の１つのレジスタからデータを読み出す、請求項１６に記載のコンピュータ・システム。
【請求項２２】
前記外部コマンド・インターフェースが、前記処理ユニットの次の１つのレジスタにデータを書き込む、請求項１６に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的にはコンピュータ・システムに関し、より詳細には、分散型トポロジにおいて相互接続される、マルチプロセッサ・システムの処理ユニットなどのコンピュータ・コンポーネント間の通信を処理する改善された方法に関する。
【背景技術】
【０００２】
従来の対称型マルチプロセッサ・コンピュータ・システム１０の基本構造を図１に示す。コンピュータ・システム１０は、１つまたは複数のプロセッサ・グループ中に配列された１つまたは複数の処理ユニットを有する。図示したシステムでは、プロセッサ・グループ１４中に４つの処理ユニット１２ａ、１２ｂ、１２ｃおよび１２ｄがある。処理ユニットは、システムまたはファブリック・バス１６を介してシステム１０の他のコンポーネントと通信する。ファブリック・バス１６は、システム・メモリ２０、および様々な周辺装置２２に接続される。サービス・プロセッサ１８ａ、１８ｂは、ＪＴＡＧインターフェースまたは他の外部サービス・ポートを介して処理ユニット１２に接続される。プロセッサ・ブリッジ２４は、追加プロセッサ・グループを相互接続するのに任意選択で使うことができる。システム１０はまた、コンピュータ・システムが最初にターンオン（ブート）されると常に、システムの基本入出力論理をストアし周辺装置の１つからオペレーティング・システムを探索しロードするファームウェア（図示せず）を含むことができる。
【０００３】
システム・メモリ２０（ランダム・アクセス・メモリすなわちＲＡＭ）は、処理ユニットによって使用されるプログラム命令およびオペランド・データを、揮発（一時的な）状態でストアする。周辺装置２２は、たとえば、周辺装置相互接続（ＰＣＩ）ホスト・ブリッジを用いるＰＣＩローカル・バスを介して、ファブリック・バス１６に接続することができる。ＰＣＩブリッジは、バス・メモリまたはＩ／Ｏアドレス空間内のどこにでもマップされたＰＣＩ装置に、処理ユニット１２ａ、１２ｂ、１２ｃおよび１２ｄがそれを介してアクセスすることができる低遅延経路を提供する。ＰＣＩホスト・ブリッジ２４はまた、ＰＣＩ装置がＲＡＭ２０にアクセスすることを可能にする高帯域幅経路を提供する。このようなＰＣＩ装置は、ネットワーク・アダプタと、永久記憶装置（すなわち、ハード・ディスク）に相互接続を提供する小型計算機システム・インターフェース（ＳＣＳＩ）アダプタと、キーボードなどの入出力（Ｉ／Ｏ）装置、表示装置に接続されたグラフィクス・アダプタ、および表示装置と共に使うためのグラフィカル指示装置（マウス）への接続用の業界標準アーキテクチャ（ＩＳＡ）拡張バスなどの拡張バス・ブリッジとを含むことができる。
【０００４】
対称型マルチプロセッサ（ＳＭＰ）コンピュータでは、処理ユニット１２ａ、１２ｂ、１２ｃおよび１２ｄのすべてが概して同じものであり、すなわち、動作するためにそのすべてが命令およびプロトコルの共通のセットまたはサブセットを使用し、一般に同じアーキテクチャを有する。処理ユニット１２ａで示すように、各処理ユニットは、コンピュータを操作するためのプログラム命令を実行する１つまたは複数のプロセッサ・コア２６ａ、２６ｂを含むことができる。例示的なプロセッサ・コアは、すべてが集積回路によって形成される様々な実行ユニット、レジスタ、バッファ、メモリ、および他の機能ユニットを有する単一の集積回路スーパースカラ・マイクロプロセッサを備える、インターナショナル・ビジネス・マシーンズ・コーポレーションから市販されているＰｏｗｅｒＰＣ（商標）プロセッサを含む。プロセッサ・コアは、縮小命令セット・コンピューティング（reduced instruction set computing; RISC）技術によって動作することができ、スーパースカラ・アーキテクチャの性能をさらに向上させるために命令のパイプライン化および順不同実行の両方を利用することができる。
【０００５】
各プロセッサ・コア２６ａ、２６ｂは、高速メモリ・デバイスを用いて実装される搭載（Ｌ１）キャッシュ（実際には、別個の命令キャッシュおよびデータ・キャッシュ）を含む。キャッシュは通常、システム・メモリ２０から値をロードするステップに時間をかけないようにすることによって処理を高速にするために、プロセッサによって繰り返しアクセスされる可能性のある値を一時的にストアするのに使われる。処理ユニットは、メモリ・コントローラ３０と共に、それぞれコア２６ａおよび２６ｂの一部であるＬ１キャッシュの両方をサポートする別のキャッシュ、すなわち、２次（Ｌ２）キャッシュ２８を含むことができる。追加のキャッシュ・レベルには、ファブリック・バス１６を介してアクセス可能なＬ３キャッシュ３２などを提供することができる。最上位（Ｌ１）から最下位（Ｌ３）までの各キャッシュ・レベルは、比較的多くの情報をうまくストアすることができるが、アクセス・ペナルティは長い。たとえば、プロセッサ・コア中の搭載Ｌ１キャッシュは、１２８キロバイトのメモリ記憶容量をもつことができ、Ｌ２キャッシュ２８は５１２キロバイトの記憶容量をもつことができ、Ｌ３キャッシュ３２は２メガバイトの記憶容量をもつことができる。欠陥のある処理ユニット・コンポーネントの修理／置換えを容易にするために、各処理ユニット１２ａ、１２ｂ、１２ｃ、１２ｄは、モジュール方式でシステム１０に容易にスワップインしてインストールしまたはそこからスワップアウトすることができる、置換え可能な回路板または類似のフィールド交換可能ユニット（ＦＲＵ）の形で構成することができる。
【０００６】
マルチプロセッサ、またはマルチチップとして、コンピュータ・システムは大きさおよび複雑さが増し、たとえばブート時における各チップの初期化（ＩＰＬ）などの様々な監視動作または他の何らかのシステム・リセットのための監視動作の実施において、過剰な時間がシステム全体によって消費される場合がある。サービス・プロセッサから各チップに発行される監視コマンドのほとんどは同じものであり、その手順にある程度の冗長性がもたらされる。冗長性の結果、小規模システムでは小さい問題が引き起こされるが、システムが大きくなると問題も次第に大きくなる。例示的な最新式マルチプロセッサ・システムは、処理ユニットの４つのドロワ（drawer）をもつことができ、各ドロワには２つのマルチチップ・モジュール（ＭＣＭ）があり、各ＭＣＭには４つの処理ユニットがあり、合計３２個の処理ユニットとなる。この構成により、サービス・プロセッサは３２個の処理ユニットそれぞれに初期化コマンドを順次送らなければならないので、ブート時間が長くなる。こうした問題は、初期化の後に発行される可能性のある他のコマンド、たとえば累積状況検査、または読出し故障分離レジスタ（ＦＩＲ）でもさらに起こり得る。
【０００７】
この問題は、サービス・プロセッサ上で実行中の監視ルーチン、およびプロセッサ・コアのうち１つで実行中の可能性があるどの監視ルーチンにも当てはまる。というのは、コアはサービス・プロセッサと通信せずにシステム内の他のチップを直接制御することができず、その結果通信のボトルネックが作成されるからである。さらに、サービス・プロセッサのこうしたタイプの使い方は、ある程度の集中制御構造を想定しており、集中制御はシステム規模のシャットダウンを引き起こす単一の故障点をもたらすので、現在の計算方式における動向は、このような集中制御から脱却しようとしている。
【０００８】
いくつかの従来技術のマルチプロセッサ・トポロジでは、メモリの共有を可能にするために処理ユニットの間にデータ経路を直接提供することができるが、こうした経路は、システム規模のコマンドの処理には適していない。チップ間のデータ経路は、機能が限られており、チップのクロック制御される領域の一部である。したがって、こうした経路を監視コマンド用に使おうとするどの試みも、処理ユニットの動作を中断させ、システム性能全体に悪影響を与えることになる。
【０００９】
上記のことを鑑みて、プロセッサ・コアおよびメモリ・サブシステムなど様々なチップ・コンポーネントへのシステム・レベルの（たとえば、監視）コマンドの送信を容易にする、マルチプロセッサ・コンピュータ・システム用の通信機構を考案することが望ましいであろう。処理ユニットが実行している間に、すなわち中断なしにこのようなコマンドを発行し実行することがこの機構によって可能にすることができれば、さらに有利であろう。
【非特許文献１】ＩＥＥＥ（米国電気電子技術者協会）標準１１４９．１
【発明の開示】
【発明が解決しようとする課題】
【００１０】
従って、本発明の一目的は、マルチプロセッサ・コンピュータ・システムにおいてチップまたは処理ユニットの間の通信の改善された方法を提供することである。
【００１１】
本発明の別の目的は、複数の処理ユニットへのシステム規模のまたは監視レベルのコマンド送信を容易にするような方法を提供することである。
【００１２】
本発明のさらに別の目的は、通信のボトルネックをもたらす可能性のある集中型コマンド構造に依拠しすぎない、分散型ノード・トポロジにおけるクロス・チップ通信のための機構を提供することである。
【課題を解決するための手段】
【００１３】
上述の目的は、マルチプロセッサ・コンピュータ・システム内の処理ユニット間の通信方法において達成され、概して、発信処理ユニットから宛先処理ユニットへ（発信および宛先処理ユニットは異なる集積回路チップ上に物理的に配置される）コマンドを発行するステップと、宛先処理ユニットがプログラム命令を処理している間にコマンドを宛先処理ユニットで受信するステップと、コマンドに応答して、宛先処理ユニットによるプログラム命令の処理を中断することなく、宛先処理ユニットのクロック制御されるコンポーネントにあるレジスタにアクセスするステップとを含む。アクセスは、宛先処理ユニットの状況レジスタまたはモード・レジスタからのデータ読出し、または宛先処理ユニットの制御レジスタまたはモード・レジスタへのデータ書込みの形をとることができる。説明のための実施形態では、リング型トポロジで相互接続された多くの処理ユニットがあり、アクセス・コマンドは、発信処理ユニットから他のいくつかの処理ユニットを介して渡すことができ、その後宛先処理ユニットに到達する。処理ユニットはそれぞれ、それぞれの一義的な識別番号（ＰＩＤ）、さらに必ずしも一義的でない、１つまたは複数の任意選択的な「特別な」タグを割り当てられ、所与のチップ上の外部コマンド・インターフェースは、コマンドがブロードキャスト・コマンドでない限りは、対応するチップ・タグを含むコマンドのみを認識する。さらに、ＰＩＤ、ＰＩＤの選択された一部、または他の「特別な」タグに対してサブセット・マスクを実行することによって、プロセッサの１つまたは複数のサブ・グループにブロードキャスト方式でコマンドを向けることが可能である。外部コマンド・インターフェースはまた、そのコマンドがその関連づけられた処理ユニットによって発行された場合は、それ自体へのどのブロードキャスト・コマンドもブロックする（たとえば、リセットする）ことができる（「自己ブロック（Block Self）」モード）。処理ユニットはファブリック・バスを介して相互接続され、外部コマンド・インターフェースは好ましくは、ファブリック・バスのトポロジに従う追加通信回線を使い、あるいは、代わりに既存のファブリック伝送プロトコルを渡るコマンド／データ・パケットを使うこともできよう。サービス・プロセッサは、外部ポート（たとえばＪＴＡＧ）を介してこのコマンド・インターフェースにアクセスすることができ、処理ユニット上で実行中のアセンブリ・コードは、特別ななアセンブリ・コード・シーケンスを介してコマンド・インターフェースにアクセスすることができる。
【００１４】
本発明の上述の目的および追加の目的、特徴、ならびに利点は、以下の詳細に書かれた説明で明らかになるであろう。
【００１５】
添付の図面を参照することによって、本発明をより良く理解することができ、本発明の多くの目的、特徴、および利点が、当業者には明らかになるであろう。
【発明を実施するための最良の形態】
【００１６】
異なる図面における同じ参照符号の使用は、類似または同一の項目を示す。
【００１７】
ここで図面を参照すると、具体的には図２を参照すると、本発明に従って構成された処理ユニットの一実施形態４０を示してある。処理ユニット４０は、好ましくは単一の集積回路チップとして構成され、概して、２つのプロセッサ・コア４２ａおよび４２ｂ、メモリ・サブシステム４４、走査通信（ＳＣＯＭ）コントローラ４６、外部ＳＣＯＭ（ＸＳＣＯＭ）インターフェース４８、ならびにサービス・プロセッサ５１に接続されたＪＴＡＧインターフェース５０から構成される。プロセッサ・コア４２ａ、４２ｂおよびメモリ・サブシステム４４はクロック制御されるコンポーネントであり、ＳＣＯＭコントローラ４６、ＸＳＣＯＭインターフェース４８およびＪＴＡＧインターフェース５０は自走（free-running）コンポーネントである。２つのプロセッサ・コアが１つの集積チップ上に含まれるものとして示してあるが、それより少なくても多くてもよい。
【００１８】
各プロセッサ・コア４２ａ、４２ｂは、その独自の制御論理５２ａ、５２ｂと、実行ユニット５４ａ、５４ｂおよびレジスタ／バッファ５６ａ、５６ｂの別個のセットと、それぞれの１次レベル（Ｌ１）キャッシュ５８ａ、５８ｂと、ロード／ストア・ユニット（ＬＳＵ）６０ａ、６０ｂとを有する。実行ユニット５４ａ、５４ｂは、固定小数点ユニットおよび浮動小数点ユニットなど様々な計算ユニット、ならびに命令取出しユニットおよび命令シーケンサ・ユニットを含む。レジスタ５６ａ、５６ｂは、汎用レジスタ、専用レジスタ、および名称変更バッファを含む。Ｌ１キャッシュ５８ａ、５８ｂ（好ましくは各コア内の別個の命令キャッシュおよびデータ・キャッシュから構成される）ならびにロード／ストア・ユニット６０ａ、６０ｂは、メモリ・サブシステム４４と通信して、データをメモリ階層から読み出し、またはそこに書き込む。メモリ・サブシステム４４は、２次（Ｌ２）キャッシュおよびメモリ・コントローラを含むことができる。
【００１９】
ＳＣＯＭコントローラ４６は、クロック制御されるコンポーネント内に配置された様々な「サテライト」に接続される。図２に示す実施形態では、３つのＳＣＯＭサテライト６２ａ、６２ｂ、および６２ｃがある。ＳＣＯＭサテライト６２ａおよび６２ｂは、それぞれコア４２ａ、４２ｂの制御論理５２ａ、５２ｂ内に配置され、ＳＣＯＭサテライト６２ｃは、メモリ・サブシステム４４内に配置される。分かりやすくするために３つのＳＣＯＭサテライトのみを図示してあるが、処理ユニット４０全体に配置されるより多くのサテライトがあり得ることが当業者には理解されよう。
【００２０】
ＳＣＯＭコントローラ４６は、コンポーネントがまだ実行中である間に、サービス・プロセッサがＪＴＡＧインターフェース５０を介してＳＣＯＭサテライトにアクセスすることを可能にする。所与のチップ上のサテライトは、ＳＣＯＭコントローラ４６とリング形式で接続される。こうしたＳＣＯＭサテライトは、コンポーネント内の様々な機能を可能にし検査するのに使うことができる、（モード・レジスタ、状況レジスタなどとともに）内部制御レジスタおよびエラー・レジスタを有する。チップ上のどのコンポーネント内のレジスタのどのサブセットも、ＳＣＯＭ可能にすることができる。チップ設計者は、特定のアプリケーション、たとえば診断ルーチン用の故障指示子に望ましいと思われるどのような構成も選択することができる。このようにして、サービス・プロセッサは、ＪＴＡＧインターフェース５０を介して多重処理システム内のどのチップにもアクセスすることができ、モード、パルス制御、開始インターフェース整列手順、ＦＩＲの読出し状況などを設定するために、システムが実行している間に、中断することなくレジスタにアクセスすることができる。ＳＣＯＭコントローラ４６は、内部コマンド・レジスタおよび内部データ・レジスタを設定することによって、これらの機能を実行する。
【００２１】
コンポーネント上で、具体的にはプロセッサ・コア４２ａ、４２ｂ内で実行されるアセンブリ・コードは、コアがＳＣＯＭの特徴も利用できるようにすることができる。したがって、コアは、別のコンポーネントの状況ビットを読み出し、それ自体のチップ上のどこでも論理を制御することができる。このアセンブリ・コードおよびコントローラ４６を用いて、コアはさらに、ＸＳＣＯＭインターフェース４８を介して他のチップ上のコンポーネントにアクセスすることができる（後でより詳細に説明する）。ＳＣＯＭコントローラ４６は、ＪＴＡＧインターフェース５０、および２つのプロセッサ・コアからのあらゆるアセンブリ・コード・コマンドと、ＸＳＣＯＭインターフェース４８との間の調停に適した論理を含む。
【００２２】
ＪＴＡＧインターフェース５０は、サービス・プロセッサとＳＣＯＭコントローラ４６の間のアクセスを提供する。ＪＴＡＧインターフェース５０は、テスト用アクセス・ポートおよび境界走査アーキテクチャに関連する米国電気電子技術者協会（ＩＥＥＥ）標準１１４９．１に準拠する。ＳＣＯＭは、１１４９．１標準によって可能になる走査通信の拡張である。
【００２３】
ここで図３を参照すると、本発明に従って構成されたマルチチップ・モジュール（ＭＣＭ）７０の一実施形態を示してある。本実施形態では、ＭＣＭ７０は、４つの集積チップ４０ａ、４０ｂ、４０ｃおよび４０ｄを有する（４つより多いまたは少ないチップを提供することもできる）。４つのチップ４０ａ、４０ｂ、４０ｃおよび４０ｄはそれぞれ、概して図２の処理ユニット４０と同じものである。具体的には、各処理ユニット４０ａ、４０ｂ、４０ｃ、４０ｄは、サービス・プロセッサが関与する必要なく外部のチップ間通信を提供するＸＳＣＯＭインターフェース４８を含む。このようにして、（サービス・プロセッサ以外の）１つのプロセッサ・チップは、マルチプロセッサ・システム内の残りのプロセッサすべてを制御することができる。すなわち、プロセッサの動作を中断することなく、他の処理ユニット内の状況ビット、モード・ビットまたは制御ビットを読み出し、またはセットする。あるいは、サービス・プロセッサは、単一のプロセッサ・チップ上のＸＳＣＯＭ機構にアクセスし、マルチプロセッサ・システム内のすべての残りのプロセッサをただ１つのコマンドを介して制御することができる。この能力により、一部の機能、たとえばシステム・リセット用のサービス・プロセッサが必要なくなる。このようなシステム・レベルのコマンドは、サービス・プロセッサにおいてコマンドを複製し、各処理ユニットに別個に送信するのではなく、コマンドをデイジー・チェーン方式で各処理ユニット４０に次々と渡すことによってブロードキャストすることができる。さらに、一部のコマンドの場合、サービス・プロセッサが、単一のプロセッサ・チップを介してコマンドをブロードキャストすることによってシステム・レベルのコマンドを実施するために各プロセッサ・チップと順次通信する必要がなくなる。
【００２４】
ＸＳＣＯＭインターフェース４８は、（ＳＣＯＭコントローラ４６と同様に）コマンド・レジスタおよびデータ・レジスタを使用して通信を実行する。ハードウェア・ロッキング機構は、複数のトランザクションまたは関連するトランザクションのシーケンスが一度に起こるのを防止するために提供することができる。各ＸＳＣＯＭインターフェースは、１対の１次的な相互接続ライン、すなわち入力（「直前のチップ」）および出力（「次のチップ」）を伴って提供される。こうしたラインは、ＭＣＭ７０上の４つの処理ユニットを時計回りのリングで相互接続するのに使われる。すなわち、第１のチップ上の「次のチップ」ラインが第２のチップ上の「直前のチップ」ラインに接続され、以下同様になる。チップ４０ａのみが、モジュール外の相互接続を有することができる。ＸＳＣＯＭインターフェースに対する１対の２次的な相互接続ライン（たとえば、「垂直方向のチップ」の入力および出力）は、ドロワ内通信を容易にするために、ファブリック・トポロジに応じて提供することができる。２次的なラインの対は、選択的に動作可能にすることができる。
【００２５】
ＭＣＭ７０内の処理ユニット４０ａ、４０ｂ、４０ｃ、４０ｄの各々は図２に示す構造を含むが、特定の処理ユニットまたはこうしたユニットのサブセットは、所望された場合には特別な能力、たとえば追加ポートを伴って提供することができる。
【００２６】
さらに図４を参照すると、本発明による、対称型マルチプロセッサ（ＳＭＰ）コンピュータ・システムとの使用に適合したプロセッサ・グループ７２の一実装形態を示してある。この特定の実装では、プロセッサ・グループ７２は、処理ユニットからなる３つのドロワ７４ａ、７４ｂおよび７４ｃから構成される。３つのドロワのみを示してあるが、プロセッサ・グループは、より少ないまたは追加のドロワを有することもできる。ドロワは、ＳＭＰシステム内での物理的なインストールのために、関連するフレームにスライドするように機械的に設計される。処理ユニットからなるドロワはそれぞれ、２つのマルチチップ・モジュールを含み、合計で６個のＭＣＭ７０ａ、７０ｂ、７０ｃ、７０ｄ、７０ｅおよび７０ｆがある（構成はやはり、ドロワごとに２つより多いＭＣＭを含むこともでき、プロセッサは所望のアプリケーションに応じてプロセッサ・カードまたはバックプレーン上に搭載することができる）。したがって、合計で２４個の処理ユニットまたはチップがプロセッサ・グループ７２中にある。プロセッサ・グループ７２は、図１に関連して説明した追加メモリ階層、通信ファブリックおよび周辺装置など、他のコンポーネントを含むことができるＳＭＰシステム内での使用に適合される。各個別チップは、好ましくはフィールド交換可能ユニット（ＦＲＵ）として製造され、そうすることによって、ある特定のチップに欠陥がある場合、そのチップは、モジュールまたはドロワ中の他の部分を置き換える必要なく、新しい機能ユニットのためにスワップアウトすることができる。あるいは、ＦＲＵは、どの１つのコンポーネントに欠陥が生じた場合でも、ドロワ全体がより簡単に置き換えられるように、１つの完全なドロワでもよい。
【００２７】
ＭＣＭの１つ、この場合ＭＣＭ７０ａは、１次モジュールとして指定することができ、このモジュールの１次チップ４０ａは、サービス・プロセッサによって直接制御される。プロセッサ・グループ７２中のＭＣＭはさらに、図３で説明したのと同様のやり方で、モジュール間通信用のＸＳＣＯＭ通信プロトコルを使用する。所与のＭＣＭ、たとえばＭＣＭ７０ａの１次チップ４０ａ上の「次のチップ」ラインは、次のＭＣＭ７２の１次チップ４０ａ上の「直前のチップ」ラインに接続される。一部のＭＣＭは、終端ドロワ上のループを完了させるために、直前／次のチップ接続ではなく「垂直方向のチップ」相互接続を使用することができる。ＭＣＭはしたがって、ＸＳＣＯＭインターフェースによって時計回りのリングまたはハブ・トポロジでも接続される。このトポロジは好ましくは、配線において既存のファブリック・データ／コマンド・バス・トポロジに従う。
【００２８】
各処理ユニットは、送信されたデータおよびコマンドを目標に向けることを可能にする、一義的な識別番号（ＰＩＤ）を割り当てられる。ＸＳＣＯＭモード・レジスタは次いで、タグを使って、選択されたＰＩＤ向けのＸＳＣＯＭコマンドを目標に向けることができる。タグは、処理ユニットのトポロジ（物理的）位置を表す部分、ならびに処理ユニットの機能グループ分けを表す別の部分を有することができる。ＰＩＤの一部または別個のプログラム可能識別子レジスタは、「特別な」タグとして指定することができ、そうすることによって、共通性を有する１つまたは複数の処理ユニットは、それが属すグループにおいてコマンドを共用することができる。次いで、ルーチンが、ＰＩＤのサブセットまたは別の別個のプログラム可能識別子レジスタに基づいてグループを形成することができる。こうした特別な修飾子タグまたはグループのサブセット・マスクを用いると、特定のチップだけがコマンドに気づくようになる。したがって、コマンドは、たとえば、接続されたＩ／Ｏ装置を有するチップのみ、または１次チップ４０ａのみ、などに限定することができる。このプロトコルはさらに、「自己ブロック」ブロードキャスト・モードを可能にするように拡張することができ、このモードでは、ＸＳＣＯＭコマンドは、ブロードキャストを行うユニット自体を除いて、システム（またはグループ）にあるすべての処理ユニットに発行される。この特徴は、発行側チップをリセットすることなく他のチップをリセットするためには特に有益であろう。
【００２９】
モジュール上またはグループ中のチップの間に、追加データ経路を提供することもできる。既存の通信ファブリック上でＸＳＣＯＭパケットを送ることによって、このような経路をシステム規模のコマンド用に使用することも可能であるが、説明のための実装では、ファブリック・トポロジに従う追加ラインを使用している。
【００３０】
好ましい実施形態では、ＸＳＣＯＭデータは、単に６４ビットのレジスタである。このレジスタは、ＸＳＣＯＭ書込みアクセスの間は発信データの発信源であり、ＸＳＣＯＭ読出しアクセスの後は着信データの宛先である。このレジスタの内容の翻訳は、ＸＳＣＯＭコマンド・レジスタに含まれるＸＳＣＯＭの状況ビットおよび制御ビットによって決定される。ＸＳＣＯＭコマンド・レジスタ８０の例示的な形式は、図５に示してあるが、やはり６４ビットである。この実装形態では、形式は、３２個の予約ビットxscomc(0:31)を含み、このビットは、２１個の未使用（予備）ビットxscomc(0:19,23)、３個の特別な修飾子ビットxscomc(20:22)、および８ビットのチップ・タグxscomc(24:31)からなる。修飾子ビットxscomc(20)は、「特別なタグ」をこのコマンド用のチップ識別手順に要因として含めるか制御する。本実施形態では、チップ・タグの上位の特別な部分、すなわち、各処理ユニット上のチップＰＩＤの最初の２ビットは、xscomc(24:25)と比較される。修飾子ビットxscomc(20)がゼロにセットされている場合、その特徴は無視されるが、１にセットされているときは、どのブロードキャスト・コマンドも、こうした最上位ビットxscomc(24:25)にのみ突き合わされる。修飾子ビットxscomc(21)は、チップＰＩＤのモジュール部分のみをチップ識別手順に要因として含めるか制御する。修飾子ビットxscomc(22)は、チップ・タグのドロワ部分のみをチップ識別に要因として含めるか制御する。ドロワＩＤは、チップ・タグ・ビットxscomc(27:28)に含められ、モジュールＩＤは、チップ・タグ・ビットxscomc(29)に含められ、モジュール上の特別なチップ用ＩＤは、チップ・タグ・ビットxscomc(30:31)に含められる。特定のＭＣＭまたはＭＣＭのサブセット、あるいは、ＰＩＤのサブセットまたは特別なタグ・フィールドのバイナリ比較によって形成することができる、他のいかなる任意のグループにもコマンドが送られることを可能にするために、マスク能力を提供することもできる。
【００３１】
ＸＳＣＯＭコマンド形式はまた、１６ビットのＳＣＯＭアドレスxscomc(32:47)、６個の制御ビットxscomc(48:53)、および１０個の状況ビットxscomc(54:63)を含む。１６ビットのＳＣＯＭアドレスは、コマンドを受け取る宛先チップ上の特定のＳＣＯＭサテライトを目標とするのに使われる。第１の制御ビットxscomc(48)は、コマンドが読出し要求であるか書込み要求であるか識別する。制御ビットxscomc(49:51)はブロードキャストにおいて使われ、こうしたビットの先頭は単に、概してブロードキャスト・コマンドをフラグで示す。第２のブロードキャスト制御ビットxscomc(50)は、ブロードキャスト・コマンドがすべてのサテライトによって受け入れられるか識別する（このビットは、xscomc(49)がアクティブな場合のみ有効である）。第３のブロードキャスト制御ビットxscomc(51)は、読出しデータが各サテライトによってＯＲされるかまたはＡＮＤされるか識別する（このビットも、xscomc(49)がアクティブな場合のみ有効である）。第５の制御ビットxscomc(52)は、「自己ブロック」ブロードキャスト・モードを実行するために使用され、このモードにおいて、ブロードキャスト・コマンドは、発信源チップ自体を除く各チップによって実行されることになる。最後の制御ビットxscomc(53)は使用されない。
【００３２】
上述したように、ＸＳＣＯＭインターフェースは、複数のトランザクションまたは関連するトランザクションのシーケンスが一度に起こるのを防止するためのハードウェア・ロッキング機構を含む。というのは、サービス・プロセッサがＪＴＡＧインターフェースを介してアクセスするように、チップ上のコアは両方ともこの機構へのアクセス権を有するからである。このロッキングは、メールボックスまたはソフトウェア・インターフェースを介して処理することができるが、便宜上、ハードウェア機構が提供される。第１の６個の状況ビットxscomc(54:59)は、この目的のためにロック・ビットとして使うことができる。第１のロック・ビットxscomc(54)は、サービス・プロセッサによって配置されたロックを識別する。第２のロック・ビットxscomc(55)は使用されない。最後の４つのロック・ビットxscomc(56:59)は、プロセッサ・コア上で動作している異なるスレッド（すなわち、コア０／スレッド０、コア０／スレッド１、コア１／スレッド０、およびコア１／スレッド１）によって配置されたロックを識別する。所与のコマンド・ユニット（コアまたはサービス・プロセッサ）は、適切なロック・ビットに対する書込みを要求し、その後でそのロック・ビットを読み出し、ビットがセットされているか見ることによって、ロックを取得することができる。他のロックが現在セットされていない場合、要求側コマンド・ユニットは、そのロック・ビットをセットすることができる。コマンドが完了した後、ロック・ビットは発信側コマンド・ユニットによってクリアされる。
【００３３】
最後の４つの状況ビットxscomc(60:63)は、ＸＳＣＯＭコマンドの再試行を要求することができる条件を信号通知するのに使われる。ハードウェア・エラー・ビットxscomc(60)は、時間切れや巡回冗長検査（cyclicalredundancy check; CRC）エラーなどのハードウェア・エラーが起こると、セットされる。ＸＳＣＯＭ衝突ビットxscomc(61)は、競合する要求によって引き起こされるプロトコル・エラーを信号通知する。非受諾アドレス・ビットxscomc(62)は、選択されたＰＩＤグループ中のどのチップのどのサテライトによっても宛先サテライト・アドレスが受け入れられなかったことを示す。ビジー／使用不能ビットxscomc(63)は、現在、宛先サテライトがＸＳＣＯＭコマンドを処理することができないと、セットされる。
【００３４】
ＸＳＣＯＭコマンド・レジスタ中のすべてのビットは、パワー・オン・リセットの間にゼロにセットされる。
【００３５】
本発明を特定の実施形態を参照して説明したが、この説明は、限定的な意味で解釈されることを意図したものではない。本発明の説明を参照すれば、開示した実施形態の様々な変更形態、ならびに本発明の代替実施形態が、当業者には明らかになるであろう。したがって、添付の特許請求の範囲で定義した本発明の精神および範囲から逸脱することなく、このような変更形態を行うことができることを企図したものである。
【００３６】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３７】
（１）マルチプロセッサ・コンピュータ・システム内の処理ユニット間の通信方法であって、
発信処理ユニットから宛先処理ユニットへコマンドを発行するステップであって、前記発信および宛先処理ユニットが異なる集積回路チップ上に物理的に配置される、ステップと、
前記宛先処理ユニットがプログラム命令を処理している間に、前記コマンドを前記宛先処理ユニットで受信するステップと、
前記受信するステップに応答して、前記宛先処理ユニットによる前記プログラム命令の処理を中断することなく、前記宛先処理ユニットのクロック制御されるコンポーネントにあるレジスタにアクセスするステップと
を含む、方法。
（２）前記マルチプロセッサ・コンピュータ・システムが、リング型トポロジで相互接続された２つより多い処理ユニットを有し、前記コマンドが、少なくとも１つの他の処理ユニットによって、前記発信処理ユニットから前記宛先処理ユニットに渡される、上記（１）に記載の方法。
（３）前記処理ユニットがそれぞれ、それぞれの一義的な識別番号（ＰＩＤ）を有し、前記受信するステップが、前記コマンドに組み込まれたチップ・タグを前記宛先処理ユニットのＰＩＤに突き合わせるステップを含む、上記（２）に記載の方法。
（４）前記コマンドが、複数の前記処理ユニットに向けられたブロードキャスト・コマンドであり、前記ブロードキャスト・コマンドが前記発信処理ユニットによって実行されるのをブロックするステップをさらに含む、上記（２）に記載の方法。
（５）前記処理ユニットが、システム・メモリ・デバイスおよびサービス・プロセッサと相互接続され、前記発行するステップおよび受信するステップが、ファブリック・バスのトポロジに従う追加通信回線を使用する、上記（１）に記載の方法。
（６）前記アクセスするステップが、前記宛先処理ユニットのレジスタからデータを読み出すステップを含む、上記（１）に記載の方法。
（７）前記アクセスするステップが、前記宛先処理ユニットのレジスタにデータを書き込むステップを含む、上記（１）に記載の方法。
（８）マルチプロセッサ・コンピュータ・システムにおけるクロス・チップ通信のための機構であって、
プログラム命令を処理する少なくとも１つのプロセッサ・コアを含む複数のクロック制御されるコンポーネントを有する処理ユニットと、
前記処理ユニットの前記クロック制御されるコンポーネント内に配置された複数の走査レジスタと、
前記プロセッサ・コアによる前記プログラム命令の処理を中断することなく、前記走査レジスタに対して選択的に読出しおよび書込みを行うアクセス・コマンドを実行する、前記走査レジスタに接続されたコマンド・コントローラと、
前記コマンド・コントローラに接続された、アクセス・コマンドを送受信する外部コマンド・インターフェースと
を備える、機構。
（９）前記外部コマンド・インターフェースが、直前の処理ユニットからアクセス・コマンドを受信するように適合された入力、および前記アクセス・コマンドを前記直前の処理ユニットから次の処理ユニットに送信するように適合された出力を有する、上記（８）に記載の機構。
（１０）前記処理ユニットが、一義的な識別番号（ＰＩＤ）を有し、受信したアクセス・コマンドに組み込まれたチップ・タグに前記ＰＩＤが一致するとき、前記外部コマンド・インターフェースが、前記受信したアクセス・コマンドを前記コマンド・コントローラに渡す、上記（８）に記載の機構。
（１１）前記処理ユニットが、必ずしも一義的でない特別なタグを含み、受信したアクセス・コマンドに組み込まれたチップ・タグに前記特別なタグが一致するとき、前記外部コマンド・インターフェースが、前記受信したアクセス・コマンドを前記コマンド・コントローラに渡す、上記（８）に記載の機構。
（１２）ブロードキャスト・コマンドが前記処理ユニットから発信された場合、前記外部コマンド・インターフェースが、前記処理ユニットによって前記ブロードキャスト・コマンドが実行されるのをブロックする、上記（８）に記載の機構。
（１３）前記クロック制御されるコンポーネントとの通信を処理するファブリック通信バスと、
前記外部コマンド・インターフェースに接続された通信回線
とをさらに備える、上記（８）に記載の機構。
（１４）前記外部コマンド・インターフェースが、異なる処理ユニットのレジスタからデータを読み出す、上記（８）に記載の機構。
（１５）前記外部コマンド・インターフェースが、異なる処理ユニットのレジスタにデータを書き込む、上記（８）に記載の機構。
（１６）プログラム命令およびオペランド・データをストアするメモリ階層と、
前記メモリ階層と相互接続されたファブリック通信バスと、
前記ファブリック通信バスと相互接続された複数の処理ユニットとを備えるコンピュータ・システムであって、各前記処理ユニットが、
プログラム命令を処理する少なくとも１つのプロセッサ・コアを含む、複数のクロック制御されるコンポーネントと、
前記クロック制御されるコンポーネント内に配置された複数の走査レジスタと、
前記プロセッサ・コアによる前記プログラム命令の処理を中断することなく、前記走査レジスタに対して選択的に読出しおよび書込みを行うアクセス・コマンドを実行する、前記走査レジスタに接続されたコマンド・コントローラと、
前記コマンド・コントローラに接続された、アクセス・コマンドを送受信する外部コマンド・インターフェースとを有する、
コンピュータ・システム。
（１７）前記外部コマンド・インターフェースが、前記処理ユニットの直前の１つからアクセス・コマンドを受信するように適合された入力、および前記アクセス・コマンドを前記直前の処理ユニットから前記処理ユニットの次の１つに送信するように適合された出力を有する、上記（１６）に記載のコンピュータ・システム。
（１８）前記処理ユニットがそれぞれ、それぞれの一義的な識別番号（ＰＩＤ）を有し、受信したアクセス・コマンドに組み込まれたチップ・タグに前記ＰＩＤが一致するとき、前記外部コマンド・インターフェースが、前記受信したアクセス・コマンドを前記コマンド・コントローラに渡す、上記（１６）に記載のコンピュータ・システム。
（１９）ブロードキャスト・コマンドがその処理ユニットから発信された場合、前記外部コマンド・インターフェースが、その処理ユニットによって前記ブロードキャスト・コマンドが実行されるのをブロックする、上記（１６）に記載のコンピュータ・システム。
（２０）前記外部コマンド・インターフェースが、前記ファブリック通信バスのトポロジに従う通信回線に接続される、上記（１６）に記載のコンピュータ・システム。
（２１）前記外部コマンド・インターフェースが、前記処理ユニットの直前の１つのレジスタからデータを読み出す、上記（１６）に記載のコンピュータ・システム。
（２２）前記外部コマンド・インターフェースが、前記処理ユニットの次の１つのレジスタにデータを書き込む、上記（１６）に記載のコンピュータ・システム。
【図面の簡単な説明】
【００３８】
【図１】全体的に同一である４つの処理ユニットのうち１つの内部詳細を示してある、従来の対称型マルチプロセッサ（ＳＭＰ）コンピュータ・システムを示すブロック図である。
【図２】本発明に従って構成され、チップ間通信を可能にする外部走査通信（ＸＳＣＯＭ）インターフェースを有する、コンピュータ・システム用の処理ユニットまたはチップの一実施形態を示すブロック図である。
【図３】本発明の一実装形態に従って相互接続される、図３の処理ユニットの４つを使用するマルチチップ・モジュール（ＭＣＭ）を示すブロック図である。
【図４】図３のＭＣＭの２つをそれぞれが含む３つのドロワを含み、本発明の一実装形態従って相互接続されるプロセッサ・グループを示すブロック図である。
【図５】本発明の一実装形態による、ＸＳＣＯＭコマンド形式を示す図である。
【符号の説明】
【００３９】
１０  対称型マルチプロセッサ・コンピュータ・システム、コンピュータ・システム、システム
１２  処理ユニット
１２ａ  処理ユニット
１２ｂ  処理ユニット
１２ｃ  処理ユニット
１２ｄ  処理ユニット
１４  プロセッサ・グループ
１６  システム・バス、ファブリック・バス
１８ａ  サービス・プロセッサ
１８ｂ  サービス・プロセッサ
２０  システム・メモリ、ＲＡＭ
２２  周辺装置
２４  プロセッサ・ブリッジ、ＰＣＩホスト・ブリッジ
２６ａ  プロセッサ・コア、コア
２６ｂ  プロセッサ・コア、コア
２８  ２次レベル（Ｌ２）キャッシュ
３０  メモリ・コントローラ
３２  Ｌ３キャッシュ
４０  一実施形態、処理ユニット
４０ａ  集積チップ、チップ、処理ユニット、１次チップ
４０ｂ  集積チップ、チップ、処理ユニット
４０ｃ  集積チップ、チップ、処理ユニット
４０ｄ  集積チップ、チップ、処理ユニット
４２ａ  プロセッサ・コア、コア
４２ｂ  プロセッサ・コア、コア
４４  メモリ・サブシステム
４６  走査通信（ＳＣＯＭ）コントローラ、コントローラ
４８  外部ＳＣＯＭ（ＸＳＣＯＭ）インターフェース
５０  ＪＴＡＧインターフェース
５１  サービス・プロセッサ
５２ａ  制御論理
５２ｂ  制御論理
５４ａ  実行ユニット
５４ｂ  実行ユニット
５６ａ  レジスタ／バッファ
５６ｂ  レジスタ／バッファ
５８ａ  １次（Ｌ１）キャッシュ
５８ｂ  １次（Ｌ１）キャッシュ
６０ａ  ロード／ストア・ユニット（ＬＳＵ）
６０ｂ  ロード／ストア・ユニット（ＬＳＵ）
６２ａ  ＳＣＯＭサテライト
６２ｂ  ＳＣＯＭサテライト
６２ｃ  ＳＣＯＭサテライト
７０  マルチチップ・モジュール（ＭＣＭ）
７０ａ  ＭＣＭ
７０ｂ  ＭＣＭ
７０ｃ  ＭＣＭ
７０ｄ  ＭＣＭ
７０ｅ  ＭＣＭ
７０ｆ  ＭＣＭ
７２  プロセッサ・グループ
７４ａ  ドロワ
７４ｂ  ドロワ
７４ｃ  ドロワ
８０  ＸＳＣＯＭコマンド・レジスタ
【図１】
2004326784.tif 000003
【図２】
2004326784.tif 000004
【図３】
2004326784.tif 000005
【図４】
2004326784.tif 000006
【図５】
2004326784.tif 000007