(57)【要約】【課題】従来技術は、ルーティングテーブルの変更を行うため、実行中のオペレーションを全て停止或いは保留するなど、システムの実行を少なくとも部分的に停止しなければならない。【解決手段】本発明は、システムの実行を停止せずに、動的にルーティングテーブルの変更を行うことができるマルチプロセッサシステムを得る。プロセッサエレメントとメモリコントローラとルータを複数個相互に接続して構成される冗長経路を有するマルチプロセッサシステムで、プロセッサ上で実行中のＯＳのスケジューラが、プロセスの切替えを行うタイミングでシステム内のルータのルーティングテーブルを変更する機能を有する。また、ルータの各ポートにパケットの転送カウント数と転送エラー数をカウントする手段を有する。【選択図】図１
2009037273.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサエレメントとメモリコントローラとルータを複数個相互に接続して構成される冗長経路を有するマルチプロセッサシステムで、ＯＳのプロセス切替えを契機に該ルータのルーティングテーブルエントリを書き換えることにより他のプロセッサエレメントの動作を止めることなく経路を変更できることを特徴とするマルチプロセッサシステム。
【請求項２】
前記ルータの各ポートを通過するトラフィックの負荷を計測する手段を備えることによって、動的に負荷の低い経路を選択することを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記ルータの各ポートにパケットの転送エラー数をカウントする手段を備えることによって、動的に障害の少ない経路を選択することを特徴とする請求項１に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサエレメントとメモリコントローラとルータを複数個相互に接続して構成される、冗長経路を有するマルチプロセッサシステムに関する。
【背景技術】
【０００２】
一般に、プロセッサを複数接続することによりシステムの処理速度を向上させることが可能であり、各種マルチプロセッサシステムアーキテクチャが提案されている。
【０００３】
ＳＭＰは、物理メモリを共有して管理する対称型マルチプロセッシング方式のことで、ＳＭＰを構成する複数のプロセッサが基本的に同等なものとして振る舞うことができる。ＣＰＵ及びメモリ間の接続はバス方式が主体であるが、接続するプロセッサの数を増やすと、共有メモリをアクセスするためのシステムバスが飽和し、性能のボトルネックとなる。
【０００４】
これに対しシステム拡張容易性を改善するために開発されたのがＮＵＭＡ(Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ)である。ＮＵＭＡでは、プロセッサとメモリより構成されるノードが複数相互接続されている。ＮＵＭＡにおいては、ノード間でメモリ空間を共有し、各ノードのプロセッサより他ノードのメモリにアクセス可能であるため、論理的にはＳＭＰ構成と同様に扱うことができるが、自ノード内のメモリ（ローカルメモリ）と自ノード外のメモリでは、ＣＰＵからメモリへアクセスするためのレイテンシが異なるため、ＣＰＵからのメモリ参照をできるだけ局所化し、ＣＰＵ間でのメモリアクセスの競合を少なくすることが性能向上には必須となる。
【０００５】
このため、ＯＳがＮＵＭＡ構成を意識し、ノードに属するメモリやプロセッサの情報を積極的に収集することで、メモリの割り当てやプロセスの実行をできるだけ局所化し、他ノードのメモリに対するアクセスを削減している。
【０００６】
ここで、一般に、プロセッサ間のデータの転送は、送信元でデータを分割し、制御情報を付加したパケットの形でバス上を送信し、受信先でパケットを制御情報から復元する形で行う。この場合、パケットが狂った順序で到達するとパケットの復元が出来ない、或いはキャッシュコヒーレンシが維持できないなどの理由から、ノード間の接続経路は静的でなければならない。このため、ノードやプロセッサ間の接続経路が複数ある場合においても、ある特定のバスにトラフィックが集中し、システム性能の低下を招くことがあった。
【０００７】
このような課題を解決することのできる従来技術として、例えば特表２００６−５１１８７８公報等に記載された技術が知られている。この従来技術は、ポイントツーポイントリンクで接続されたマルチプロセッサにおいて、継続中のオペレーションを全て停止或いは保留後、システムの実行を部分的に停止し、その間にプロセッサが持つルーティングテーブルを変更することで全体のシステムをダウン状態にすることなくマルチプロセッサシステムのトポロジを改変する。
【０００８】
【特許文献１】特表２００６−５１１８７８公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
前述した公報に記載の従来技術は、ルーティングテーブルの変更を行うために、実行中のオペレーションを全て停止或いは保留するなど、システムの実行を少なくとも部分的に停止しなければならない点である。
【課題を解決するための手段】
【００１０】
本発明は、プロセッサエレメントとメモリコントローラとルータを複数個相互に接続して構成される冗長経路を有するマルチプロセッサシステムで、経路を切替えるためのルータとそれを制御するルーティングテーブルを備え、前記プロセッサ上で実行中のＯＳのスケジューラが、プロセスの切替えを行うタイミングでルーティングテーブルを変更する機能を有することで、経路上にオーダリングを必要とする当該プロセッサ発行のパケットが存在しないことを保証し、他のプロセッサエレメントの動作を停止することなく経路を変更可能とすることを最も主要な特徴とする。又本発明は、前記ルータの各ポートに関し、通過したパケット数やパケットの転送エラー数をカウントする機能を有することにより、トラフィックの負荷及び障害発生率を測定し、前記マルチプロセッサシステムが動的にルーティングテーブルを変更する際に、適切な経路を動的に選択することができる。
【発明の効果】
【００１１】
本発明は、動作中のオペレーションを全て停止或いは保留することなく、経路上のボトルネック部分を回避するルーティングを動的に設定可能とし、プロセッサ間の迅速な通信を可能とすることでシステム性能及び信頼性を向上させる点である。
【発明を実施するための最良の形態】
【００１２】
本発明の実施例について図面を参照して以下に説明する。
【００１３】
図１は、本発明をマルチプロセッサの分散共有メモリマシンに適用した一実施例の構成を示す図である。図１に示すようなマルチプロセッサシステムは、同複数のノード１０３により構成され、それぞれはノード内のノードコントローラＮＤＣ１０２を介して接続されている。本実施例は２ノードの構成について例示するが、本発明におけるノード数は任意である。
【００１４】
各ノード１０３は、複数のプロセッサＣＰＵ１００、メモリ１０１、およびノードコントローラ１０２により構成され、それぞれはリンクを介して相互に接続されている。各ＣＰＵあるいはＮＤＣは、コマンドやデータの送受信を行い、それぞれの持つレジスタや、接続するメモリへのアクセスを行うことができる。これらのコマンドやデータは分割され、送信元プロセッサ番号、送信先プロセッサ番号などの制御情報と共にパケットの形で送受信される。
【００１５】
図２は、ノード１０３（１）の一部であるＣＰＵ１００（１）、ＣＰＵ１００（２）およびＮＤＣ１０２（１１）の機能を例示した図である。尚、以下では、ＣＰＵ１００（１）を例に説明するが、ノード１０３内の他のＣＰＵ１００、ＮＤＣ１０２においても、全て同一の機能を持つ。
【００１６】
ＣＰＵ１００（１）はＣＰＵ１００（２）、ＣＰＵ１００（３）、ＣＰＵ１００（４）及びＮＤＣ１０２（１１）に対する４本のリンク１０６、１１１、１０９、１０４をもち、各リンクはＣＰＵ１００（１）からの情報を送信する出力ポートと、情報を受信する入力ポートにより構成される。出力ポートの前段にはカウンタ１５０（１-１）から１５０（１-４）、１５１（１-１）から１５０（１-４）を設置する。出力ポートからデータを送信する場合にカウンタ１５０をカウントアップする。又、出力ポートで転送エラーを検出した場合には、カウンタ１５１をカウントアップする。カウンタ１５０、１５１はどちらも一定時間置きにクリアする。ＣＰＵ１００（１）から直接リンクを持つＣＰＵ１００（２）からＣＰＵ１００（４）、ＮＤＣ１０２（１１）の持つカウンタ値１５０、１５１は、ＣＰＵ１００（１）からリンクを経由して問い合わせることが可能であり、直接接続されていないリンクである１１２に関するカウンタ値は、ＣＰＵ１００（２）、あるいはＮＤＣ１０２（１１）経由で得ることが可能である。同様な手段により、ＣＰＵ１００（１）より、ノード内リンク全てのトラフィックの負荷、障害発生頻度に関する情報を得ることができる。
【００１７】
また、ＣＰＵ１００（１）は入力ポートと出力ポートの接続を任意に切替えるスイッチであるルータ１２６（１）を持つ。又、ＣＰＵ１００（１）はノード内の経路情報を管理するルーティングテーブル１２７（１）を持ち、ＣＰＵ１００（１）はルーティングテーブルに指定された経路情報に従って、ルータに対する入力ポートと出力ポートの接続を切替える。
【００１８】
図３はＣＰＵ１００（１）が持つルーティングテーブルの一実施例である。ルーティングテーブルは項目として、送信元ＣＰＵ番号３００、送信先ＣＰＵ番号３０１、送信元ＣＰＵから送信先ＣＰＵまでの経路を構成するリンク番号３０２、３０２における各リンクに対するトラフィックの値３０３、そのエントリが有効かどうかを示す有効ビット３０４を持つ。有効ビット３０４は０の場合にそのエントリが無効、１の場合にそのエントリが有効であることを示す。
【００１９】
ノードの立ち上げ時、各ＣＰＵはノードを構成する全てのＣＰＵ、ＮＤＣからリンクの情報を取得し、各ＣＰＵ、ＮＤＣをそれぞれ送信元、送信先とした場合の経路を全て検索し、これらの値をルーティングテーブルの３００、３０１、３０２に設定しておく。エントリの有効ビットは全て０に設定しておく。
【００２０】
ルーティングテーブルが設定され、システムの稼動が開始された後は、各ＣＰＵ、ＮＤＣは、図２において示したＣＰＵ、ＮＤＣ内のカウンタ１５０，１５１により、自ＣＰＵ、他ＣＰＵ、或いはＮＤＣの持つリンクのトラフィック情報を得られるので、各ＣＰＵは、定期的にリンクのトラフィックの値を読み出し、図３の３０３にリンク番号に対応する場所に格納する。これにより、図３のルーティングテーブルにおいては、トラフィック情報を反映した各経路の情報が得られることになる。
【００２１】
ここで、図１の構成を例に、図２で示した手段と、図３で示したルーティングテーブルを用いて、プロセッサ、ノードコントローラ間で経路を切替え、データを送受信する方法について説明する。
【００２２】
ここでは、図１のＣＰＵ１００（１）からＣＰＵ１００（５）へデータ送信を行う際の、自ノード１０３（１）内、他ノード１０３（２）における経路の設定方法について説明する。尚、ＣＰＵが他ノードのＣＰＵとデータを送受信する場合には、一旦、自ノード内のＮＤＣを送信先とし、そこから他ノードのＮＤＣを経由して、目的のＣＰＵにアクセスすることを原則とする。
【００２３】
あるタイミングにおけるＣＰＵ１００（１）、ＣＰＵ１００（２）、ＮＤＣ１０２（１１）ＮＤＣ１０２（１３）において、ＣＰＵ１００（１）が送信元である場合の他のＣＰＵに対するルーティングテーブルの例を図４、図５、図６、図７に示す。
【００２４】
図４においては、ＣＰＵ１００（１）からＮＤＣ１０２（１１）への経路として、リンク１０４を通過する経路４１０、およびリンク１０６、１１２を経由する経路４１１が存在する。図５においては、ＣＰＵ１００（２）からＮＤＣ１０２(１１)に対して、リンク１１２を経由した経路５１０が存在する。図６においては、ＮＤＣ１０２（１１）からＮＤＣ１０２（１３）までの経路として、リンク１２４を経由する経路６１０が存在する。又図７においては、ＮＤＣ１０２（１３）からＣＰＵ１００（５）に対して、リンク１１４を経由する経路７１０、リンク１２２、１１６を経由する経路７１１が存在する。
【００２５】
図４、図５、図６及び図７の経路を構成するリンクに対するトラフィックは定期的に更新されており、トラフィックを考慮したルーティングテーブルが常に作成されている状態となっている。
【００２６】
次に、このルーティングテーブルを用いて、経路を切替える方法について説明する。
【００２７】
マルチタスクをサポートしているＯＳにおいては、複数のプロセスを細かく切替えながら動作している。同一プロセスは同一ＣＰＵ上でしか動作しない場合、プロセス切替え時には当該プロセッサ発の他のトランザクションがリンク上に存在しないことを保証できるため、このタイミングで経路を切替えることが可能である。
【００２８】
まず、ノード１０３（１）上のＣＰＵ１００（１）上で動作しているＯＳがプロセスを切替えるタイミングで、ＣＰＵ１００（１）から、ノード１０３（２）のＣＰＵ１００（５）への経路を選択する場合を考える。まずＣＰＵ１００（１）は、自分の持っているルーティングテーブルを参照する。送信元プロセッサがＣＰＵ１００（１）、送信先プロセッサがＣＰＵ１００（５）の場合には、一旦ＮＤＣ１０２(１１)にデータを送信するため、経路としては４１０および４１１が考えられるが、ここでは経路４１０を構成するリンク１０４のトラフィックの値が、経路４１１を構成するリンク１０６および１１２に比較して非常に高く、また転送エラーも発生しているため、経路として４１１を選択し、有効ビットを１にする。同時に、ＣＰＵ１００（２）、ＮＤＣ１０２（１１）のエントリとしてそれぞれ図５の５１１、図６の６１０を同じタイミングで選択し、それぞれ有効ビットを１にする。又自ノード以外のノードに対しては、ノードの持つＮＤＣ１０２に対してＣＰＵ１００（１）が送信元となる場合の経路の再設定を行ったことを通知し、通知されたＮＤＣが持つルーティングテーブル上で、ＣＰＵ１００（１）を送信元とする経路のエントリについては有効ビットを全て０にするように指示する。例えば、ノード１０３（２）内のＮＤＣ１０２（１３）の持つルーティングテーブルには、ＣＰＵ１００（０）を送信元とするエントリに対しては有効ビットに０を格納する。
【００２９】
これらの手順によりエントリの設定が終わった後、ＯＳはプロセスの実行を開始する。
【００３０】
ここでＣＰＵ１００（１）からＣＰＵ１００（５）に対してデータ送信の必要性が発生した場合、ＣＰＵ１００（１）は自分が持つルーティングテーブルを参照し、有効ビットが１であるエントリ４１１に従ってデータをＣＰＵ１００（２）に送る。更に、ＣＰＵ１００（２）、ＮＤＣ１０２（１１）も有効ビットが１であるルーティングテーブルのエントリに従い、データをＮＤＣ１０２（１３）に送る。
【００３１】
ＮＤＣ１０２（１３）でルーティングテーブルを参照した場合、送信元がＣＰＵ１００（１）、送信先がＣＰＵ１００（５）のエントリにおいて有効ビットが１になっているエントリが存在しない。このため、図７の経路７１０、７１１を参照し、トラフィックの値が低い経路７１０を選択して有効ビットを１にする。同時に、ノード１０３（１）内の全てのＣＰＵ１００、ＮＤＣ１０２に対してもルーティングテーブルの経路を選択し、その有効ビットを１にする。
【００３２】
設定終了後、設定した経路７１０に従い、リンク１１４を経由してＣＰＵ１００（５）にデータを転送する。
【００３３】
この後、ＣＰＵ１００（１）から再度ＣＰＵ１００（５）にパケット送信が発生した場合には、すでに選択された経路を介して、全て同じ経路で通信を行う。この設定は次にプロセスが切替わるまで保持される。
【００３４】
以上説明したように本発明によれば、マルチプロセッサ構成のマシンにおいて、パケットのオーダリング不要で、リンクのトラフィックの負荷と障害によるボトルネック部分を回避したルーティングを動的に設定可能とし、プロセッサ間の迅速な通信が可能とすることでシステム性能を向上させることが可能となる。
【図面の簡単な説明】
【００３５】
【図１】本発明の１実施形態におけるマルチプロセッサの分散共有メモリマシンの構成を示すブロック図である。
【図２】ノードを構成するＣＰＵ、及びノードコントローラの機能を説明した図である。
【図３】ルーティングテーブルの構成を説明する図である。
【図４】ＣＰＵ１００（１）の持つルーティングテーブルの一部のエントリを説明する図である。
【図５】ＣＰＵ１００（２）のルーティングテーブルの一部のエントリを説明する図である。
【図６】ＮＤＣ１０２（１１）のルーティングテーブルの一部のエントリを説明する図である。
【図７】ＮＤＣ１０２（１３）のルーティングテーブルの一部のエントリを説明する図である。
【符号の説明】
【００３６】
１００…ＣＰＵ、１０１…メモリ、１０２…ＮＤＣ、１０３…ノード、１０４、１０５、１０６、１０７、１０８、１０９、１１０、１１１、１１２、１１３、１１４、１１５、１１６、１１７、１１８、１１９、１２０、１２１、１２２、１２３、１２４、１２５…リンク、１２６…ルータ、１２７…ルーティングテーブル、１５０…転送パケット数記録用カウンタ、１５１…転送エラー記録用カウンタ、３００、４００、５００、６００、７００…リクエスト送信元ＣＰＵ番号、３０１、４０１、５０１、６０１、７０１…リクエスト送信先ＣＰＵ番号、３０２、４０２、５０２、６０２，７０２…経路、３０３、４０３、５０３、６０３、７０３…リンクのトラフィック、３０４、４０４、５０４、６０４、７０４…有効ビット。
【図１】
2009037273.tif 000003
【図２】
2009037273.tif 000004
【図３】
2009037273.tif 000005
【図４】
2009037273.tif 000006
【図５】
2009037273.tif 000007
【図６】
2009037273.tif 000008
【図７】
2009037273.tif 000009