JP2009037273A - マルチプロセッサシステム - Google Patents
マルチプロセッサシステム Download PDFInfo
- Publication number
- JP2009037273A JP2009037273A JP2007198300A JP2007198300A JP2009037273A JP 2009037273 A JP2009037273 A JP 2009037273A JP 2007198300 A JP2007198300 A JP 2007198300A JP 2007198300 A JP2007198300 A JP 2007198300A JP 2009037273 A JP2009037273 A JP 2009037273A
- Authority
- JP
- Japan
- Prior art keywords
- cpu
- routing table
- node
- ndc
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
【課題】従来技術は、ルーティングテーブルの変更を行うため、実行中のオペレーションを全て停止或いは保留するなど、システムの実行を少なくとも部分的に停止しなければならない。
【解決手段】本発明は、システムの実行を停止せずに、動的にルーティングテーブルの変更を行うことができるマルチプロセッサシステムを得る。プロセッサエレメントとメモリコントローラとルータを複数個相互に接続して構成される冗長経路を有するマルチプロセッサシステムで、プロセッサ上で実行中のOSのスケジューラが、プロセスの切替えを行うタイミングでシステム内のルータのルーティングテーブルを変更する機能を有する。また、ルータの各ポートにパケットの転送カウント数と転送エラー数をカウントする手段を有する。
【選択図】図1
【解決手段】本発明は、システムの実行を停止せずに、動的にルーティングテーブルの変更を行うことができるマルチプロセッサシステムを得る。プロセッサエレメントとメモリコントローラとルータを複数個相互に接続して構成される冗長経路を有するマルチプロセッサシステムで、プロセッサ上で実行中のOSのスケジューラが、プロセスの切替えを行うタイミングでシステム内のルータのルーティングテーブルを変更する機能を有する。また、ルータの各ポートにパケットの転送カウント数と転送エラー数をカウントする手段を有する。
【選択図】図1
Description
本発明は、プロセッサエレメントとメモリコントローラとルータを複数個相互に接続して構成される、冗長経路を有するマルチプロセッサシステムに関する。
一般に、プロセッサを複数接続することによりシステムの処理速度を向上させることが可能であり、各種マルチプロセッサシステムアーキテクチャが提案されている。
SMPは、物理メモリを共有して管理する対称型マルチプロセッシング方式のことで、SMPを構成する複数のプロセッサが基本的に同等なものとして振る舞うことができる。CPU及びメモリ間の接続はバス方式が主体であるが、接続するプロセッサの数を増やすと、共有メモリをアクセスするためのシステムバスが飽和し、性能のボトルネックとなる。
これに対しシステム拡張容易性を改善するために開発されたのがNUMA(Non−Uniform Memory Access)である。NUMAでは、プロセッサとメモリより構成されるノードが複数相互接続されている。NUMAにおいては、ノード間でメモリ空間を共有し、各ノードのプロセッサより他ノードのメモリにアクセス可能であるため、論理的にはSMP構成と同様に扱うことができるが、自ノード内のメモリ(ローカルメモリ)と自ノード外のメモリでは、CPUからメモリへアクセスするためのレイテンシが異なるため、CPUからのメモリ参照をできるだけ局所化し、CPU間でのメモリアクセスの競合を少なくすることが性能向上には必須となる。
このため、OSがNUMA構成を意識し、ノードに属するメモリやプロセッサの情報を積極的に収集することで、メモリの割り当てやプロセスの実行をできるだけ局所化し、他ノードのメモリに対するアクセスを削減している。
ここで、一般に、プロセッサ間のデータの転送は、送信元でデータを分割し、制御情報を付加したパケットの形でバス上を送信し、受信先でパケットを制御情報から復元する形で行う。この場合、パケットが狂った順序で到達するとパケットの復元が出来ない、或いはキャッシュコヒーレンシが維持できないなどの理由から、ノード間の接続経路は静的でなければならない。このため、ノードやプロセッサ間の接続経路が複数ある場合においても、ある特定のバスにトラフィックが集中し、システム性能の低下を招くことがあった。
このような課題を解決することのできる従来技術として、例えば特表2006−511878公報等に記載された技術が知られている。この従来技術は、ポイントツーポイントリンクで接続されたマルチプロセッサにおいて、継続中のオペレーションを全て停止或いは保留後、システムの実行を部分的に停止し、その間にプロセッサが持つルーティングテーブルを変更することで全体のシステムをダウン状態にすることなくマルチプロセッサシステムのトポロジを改変する。
前述した公報に記載の従来技術は、ルーティングテーブルの変更を行うために、実行中のオペレーションを全て停止或いは保留するなど、システムの実行を少なくとも部分的に停止しなければならない点である。
本発明は、プロセッサエレメントとメモリコントローラとルータを複数個相互に接続して構成される冗長経路を有するマルチプロセッサシステムで、経路を切替えるためのルータとそれを制御するルーティングテーブルを備え、前記プロセッサ上で実行中のOSのスケジューラが、プロセスの切替えを行うタイミングでルーティングテーブルを変更する機能を有することで、経路上にオーダリングを必要とする当該プロセッサ発行のパケットが存在しないことを保証し、他のプロセッサエレメントの動作を停止することなく経路を変更可能とすることを最も主要な特徴とする。又本発明は、前記ルータの各ポートに関し、通過したパケット数やパケットの転送エラー数をカウントする機能を有することにより、トラフィックの負荷及び障害発生率を測定し、前記マルチプロセッサシステムが動的にルーティングテーブルを変更する際に、適切な経路を動的に選択することができる。
本発明は、動作中のオペレーションを全て停止或いは保留することなく、経路上のボトルネック部分を回避するルーティングを動的に設定可能とし、プロセッサ間の迅速な通信を可能とすることでシステム性能及び信頼性を向上させる点である。
本発明の実施例について図面を参照して以下に説明する。
図1は、本発明をマルチプロセッサの分散共有メモリマシンに適用した一実施例の構成を示す図である。図1に示すようなマルチプロセッサシステムは、同複数のノード103により構成され、それぞれはノード内のノードコントローラNDC102を介して接続されている。本実施例は2ノードの構成について例示するが、本発明におけるノード数は任意である。
各ノード103は、複数のプロセッサCPU100、メモリ101、およびノードコントローラ102により構成され、それぞれはリンクを介して相互に接続されている。各CPUあるいはNDCは、コマンドやデータの送受信を行い、それぞれの持つレジスタや、接続するメモリへのアクセスを行うことができる。これらのコマンドやデータは分割され、送信元プロセッサ番号、送信先プロセッサ番号などの制御情報と共にパケットの形で送受信される。
図2は、ノード103(1)の一部であるCPU100(1)、CPU100(2)およびNDC102(11)の機能を例示した図である。尚、以下では、CPU100(1)を例に説明するが、ノード103内の他のCPU100、NDC102においても、全て同一の機能を持つ。
CPU100(1)はCPU100(2)、CPU100(3)、CPU100(4)及びNDC102(11)に対する4本のリンク106、111、109、104をもち、各リンクはCPU100(1)からの情報を送信する出力ポートと、情報を受信する入力ポートにより構成される。出力ポートの前段にはカウンタ150(1-1)から150(1-4)、151(1-1)から150(1-4)を設置する。出力ポートからデータを送信する場合にカウンタ150をカウントアップする。又、出力ポートで転送エラーを検出した場合には、カウンタ151をカウントアップする。カウンタ150、151はどちらも一定時間置きにクリアする。CPU100(1)から直接リンクを持つCPU100(2)からCPU100(4)、NDC102(11)の持つカウンタ値150、151は、CPU100(1)からリンクを経由して問い合わせることが可能であり、直接接続されていないリンクである112に関するカウンタ値は、CPU100(2)、あるいはNDC102(11)経由で得ることが可能である。同様な手段により、CPU100(1)より、ノード内リンク全てのトラフィックの負荷、障害発生頻度に関する情報を得ることができる。
また、CPU100(1)は入力ポートと出力ポートの接続を任意に切替えるスイッチであるルータ126(1)を持つ。又、CPU100(1)はノード内の経路情報を管理するルーティングテーブル127(1)を持ち、CPU100(1)はルーティングテーブルに指定された経路情報に従って、ルータに対する入力ポートと出力ポートの接続を切替える。
図3はCPU100(1)が持つルーティングテーブルの一実施例である。ルーティングテーブルは項目として、送信元CPU番号300、送信先CPU番号301、送信元CPUから送信先CPUまでの経路を構成するリンク番号302、302における各リンクに対するトラフィックの値303、そのエントリが有効かどうかを示す有効ビット304を持つ。有効ビット304は0の場合にそのエントリが無効、1の場合にそのエントリが有効であることを示す。
ノードの立ち上げ時、各CPUはノードを構成する全てのCPU、NDCからリンクの情報を取得し、各CPU、NDCをそれぞれ送信元、送信先とした場合の経路を全て検索し、これらの値をルーティングテーブルの300、301、302に設定しておく。エントリの有効ビットは全て0に設定しておく。
ルーティングテーブルが設定され、システムの稼動が開始された後は、各CPU、NDCは、図2において示したCPU、NDC内のカウンタ150,151により、自CPU、他CPU、或いはNDCの持つリンクのトラフィック情報を得られるので、各CPUは、定期的にリンクのトラフィックの値を読み出し、図3の303にリンク番号に対応する場所に格納する。これにより、図3のルーティングテーブルにおいては、トラフィック情報を反映した各経路の情報が得られることになる。
ここで、図1の構成を例に、図2で示した手段と、図3で示したルーティングテーブルを用いて、プロセッサ、ノードコントローラ間で経路を切替え、データを送受信する方法について説明する。
ここでは、図1のCPU100(1)からCPU100(5)へデータ送信を行う際の、自ノード103(1)内、他ノード103(2)における経路の設定方法について説明する。尚、CPUが他ノードのCPUとデータを送受信する場合には、一旦、自ノード内のNDCを送信先とし、そこから他ノードのNDCを経由して、目的のCPUにアクセスすることを原則とする。
あるタイミングにおけるCPU100(1)、CPU100(2)、NDC102(11)NDC102(13)において、CPU100(1)が送信元である場合の他のCPUに対するルーティングテーブルの例を図4、図5、図6、図7に示す。
図4においては、CPU100(1)からNDC102(11)への経路として、リンク104を通過する経路410、およびリンク106、112を経由する経路411が存在する。図5においては、CPU100(2)からNDC102(11)に対して、リンク112を経由した経路510が存在する。図6においては、NDC102(11)からNDC102(13)までの経路として、リンク124を経由する経路610が存在する。又図7においては、NDC102(13)からCPU100(5)に対して、リンク114を経由する経路710、リンク122、116を経由する経路711が存在する。
図4、図5、図6及び図7の経路を構成するリンクに対するトラフィックは定期的に更新されており、トラフィックを考慮したルーティングテーブルが常に作成されている状態となっている。
次に、このルーティングテーブルを用いて、経路を切替える方法について説明する。
マルチタスクをサポートしているOSにおいては、複数のプロセスを細かく切替えながら動作している。同一プロセスは同一CPU上でしか動作しない場合、プロセス切替え時には当該プロセッサ発の他のトランザクションがリンク上に存在しないことを保証できるため、このタイミングで経路を切替えることが可能である。
まず、ノード103(1)上のCPU100(1)上で動作しているOSがプロセスを切替えるタイミングで、CPU100(1)から、ノード103(2)のCPU100(5)への経路を選択する場合を考える。まずCPU100(1)は、自分の持っているルーティングテーブルを参照する。送信元プロセッサがCPU100(1)、送信先プロセッサがCPU100(5)の場合には、一旦NDC102(11)にデータを送信するため、経路としては410および411が考えられるが、ここでは経路410を構成するリンク104のトラフィックの値が、経路411を構成するリンク106および112に比較して非常に高く、また転送エラーも発生しているため、経路として411を選択し、有効ビットを1にする。同時に、CPU100(2)、NDC102(11)のエントリとしてそれぞれ図5の511、図6の610を同じタイミングで選択し、それぞれ有効ビットを1にする。又自ノード以外のノードに対しては、ノードの持つNDC102に対してCPU100(1)が送信元となる場合の経路の再設定を行ったことを通知し、通知されたNDCが持つルーティングテーブル上で、CPU100(1)を送信元とする経路のエントリについては有効ビットを全て0にするように指示する。例えば、ノード103(2)内のNDC102(13)の持つルーティングテーブルには、CPU100(0)を送信元とするエントリに対しては有効ビットに0を格納する。
これらの手順によりエントリの設定が終わった後、OSはプロセスの実行を開始する。
ここでCPU100(1)からCPU100(5)に対してデータ送信の必要性が発生した場合、CPU100(1)は自分が持つルーティングテーブルを参照し、有効ビットが1であるエントリ411に従ってデータをCPU100(2)に送る。更に、CPU100(2)、NDC102(11)も有効ビットが1であるルーティングテーブルのエントリに従い、データをNDC102(13)に送る。
NDC102(13)でルーティングテーブルを参照した場合、送信元がCPU100(1)、送信先がCPU100(5)のエントリにおいて有効ビットが1になっているエントリが存在しない。このため、図7の経路710、711を参照し、トラフィックの値が低い経路710を選択して有効ビットを1にする。同時に、ノード103(1)内の全てのCPU100、NDC102に対してもルーティングテーブルの経路を選択し、その有効ビットを1にする。
設定終了後、設定した経路710に従い、リンク114を経由してCPU100(5)にデータを転送する。
この後、CPU100(1)から再度CPU100(5)にパケット送信が発生した場合には、すでに選択された経路を介して、全て同じ経路で通信を行う。この設定は次にプロセスが切替わるまで保持される。
以上説明したように本発明によれば、マルチプロセッサ構成のマシンにおいて、パケットのオーダリング不要で、リンクのトラフィックの負荷と障害によるボトルネック部分を回避したルーティングを動的に設定可能とし、プロセッサ間の迅速な通信が可能とすることでシステム性能を向上させることが可能となる。
100…CPU、101…メモリ、102…NDC、103…ノード、104、105、106、107、108、109、110、111、112、113、114、115、116、117、118、119、120、121、122、123、124、125…リンク、126…ルータ、127…ルーティングテーブル、150…転送パケット数記録用カウンタ、151…転送エラー記録用カウンタ、300、400、500、600、700…リクエスト送信元CPU番号、301、401、501、601、701…リクエスト送信先CPU番号、302、402、502、602,702…経路、303、403、503、603、703…リンクのトラフィック、304、404、504、604、704…有効ビット。
Claims (3)
- プロセッサエレメントとメモリコントローラとルータを複数個相互に接続して構成される冗長経路を有するマルチプロセッサシステムで、OSのプロセス切替えを契機に該ルータのルーティングテーブルエントリを書き換えることにより他のプロセッサエレメントの動作を止めることなく経路を変更できることを特徴とするマルチプロセッサシステム。
- 前記ルータの各ポートを通過するトラフィックの負荷を計測する手段を備えることによって、動的に負荷の低い経路を選択することを特徴とする請求項1に記載のマルチプロセッサシステム。
- 前記ルータの各ポートにパケットの転送エラー数をカウントする手段を備えることによって、動的に障害の少ない経路を選択することを特徴とする請求項1に記載のマルチプロセッサシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007198300A JP2009037273A (ja) | 2007-07-31 | 2007-07-31 | マルチプロセッサシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007198300A JP2009037273A (ja) | 2007-07-31 | 2007-07-31 | マルチプロセッサシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009037273A true JP2009037273A (ja) | 2009-02-19 |
Family
ID=40439148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007198300A Pending JP2009037273A (ja) | 2007-07-31 | 2007-07-31 | マルチプロセッサシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009037273A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013145592A (ja) * | 2013-03-26 | 2013-07-25 | Toshiba Corp | 転送機能を有するメモリノードを相互に接続したストレージ装置及びデータ処理方法 |
US8848703B2 (en) | 2011-01-13 | 2014-09-30 | Kabushiki Kaisha Toshiba | On-chip router and multi-core system using the same |
US9246709B2 (en) | 2010-11-10 | 2016-01-26 | Kabushiki Kaisha Toshiba | Storage device in which forwarding-function-equipped memory nodes are mutually connected and data processing method |
CN108038007A (zh) * | 2017-11-30 | 2018-05-15 | 中电福富信息科技有限公司 | 一种基于Ignite的消息有序处理方法及*** |
-
2007
- 2007-07-31 JP JP2007198300A patent/JP2009037273A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9246709B2 (en) | 2010-11-10 | 2016-01-26 | Kabushiki Kaisha Toshiba | Storage device in which forwarding-function-equipped memory nodes are mutually connected and data processing method |
US10044642B2 (en) | 2010-11-10 | 2018-08-07 | Toshiba Memory Corporation | Storage device in which forwarding-function-equipped memory nodes are mutually connected and data processing method |
US10397139B2 (en) | 2010-11-10 | 2019-08-27 | Toshiba Memory Corporation | Storage device in which forwarding-function-equipped memory nodes are mutually connected and data processing method |
US8848703B2 (en) | 2011-01-13 | 2014-09-30 | Kabushiki Kaisha Toshiba | On-chip router and multi-core system using the same |
JP2013145592A (ja) * | 2013-03-26 | 2013-07-25 | Toshiba Corp | 転送機能を有するメモリノードを相互に接続したストレージ装置及びデータ処理方法 |
CN108038007A (zh) * | 2017-11-30 | 2018-05-15 | 中电福富信息科技有限公司 | 一种基于Ignite的消息有序处理方法及*** |
CN108038007B (zh) * | 2017-11-30 | 2022-04-05 | 中电福富信息科技有限公司 | 一种基于Ignite的消息有序处理方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0801349B1 (en) | Deterministic distributed multicache coherence protocol | |
Ziakas et al. | Intel® quickpath interconnect architectural features supporting scalable system architectures | |
US11228488B2 (en) | Software implementation of network switch/router | |
US20050080933A1 (en) | Master-slave adapter | |
US6715055B1 (en) | Apparatus and method for allocating buffer space | |
US8051325B2 (en) | Multiprocessor system and failure recovering system | |
JP5920105B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
KR102092660B1 (ko) | Cpu 및 다중 cpu 시스템 관리 방법 | |
WO2015134099A1 (en) | Multi-core network processor interconnect with multi-node connection | |
JP2010218364A (ja) | 情報処理システム、通信制御装置および方法 | |
US20160210255A1 (en) | Inter-processor bus link and switch chip failure recovery | |
US20090138640A1 (en) | Data Processing System, Method and Interconnect Fabric Supporting Concurrent Operations of Varying Broadcast Scope | |
WO2015134103A1 (en) | Method and system for ordering i/o access in a multi-node environment | |
WO2002013020A2 (en) | Implementing locks in a distributed processing system | |
US20050080920A1 (en) | Interpartition control facility for processing commands that effectuate direct memory to memory information transfer | |
US7159079B2 (en) | Multiprocessor system | |
US7564860B2 (en) | Apparatus and method for workflow-based routing in a distributed architecture router | |
JP2009037273A (ja) | マルチプロセッサシステム | |
EP1895432B1 (en) | Multiprocessor system | |
US20050080945A1 (en) | Transferring message packets from data continued in disparate areas of source memory via preloading | |
US11449489B2 (en) | Split transaction coherency protocol in a data processing system | |
US7203775B2 (en) | System and method for avoiding deadlock | |
JP3641834B2 (ja) | 並列プロセッサシステムおよびそれに適したパケット廃棄方法 | |
JP4985512B2 (ja) | 分散共有メモリ型マルチプロセッサシステム及びマルチプロセッサシステムにおける負荷分散方法 | |
US10394636B2 (en) | Techniques for managing a hang condition in a data processing system with shared memory |