JP2009037273A - マルチプロセッサシステム - Google Patents

マルチプロセッサシステム Download PDF

Info

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
Application number
JP2007198300A
Other languages
English (en)
Inventor
Eri Toyoshima
依里 豊嶋
Yoshinori Wakai
義憲 若井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007198300A priority Critical patent/JP2009037273A/ja
Publication of JP2009037273A publication Critical patent/JP2009037273A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)

Abstract

【課題】従来技術は、ルーティングテーブルの変更を行うため、実行中のオペレーションを全て停止或いは保留するなど、システムの実行を少なくとも部分的に停止しなければならない。
【解決手段】本発明は、システムの実行を停止せずに、動的にルーティングテーブルの変更を行うことができるマルチプロセッサシステムを得る。プロセッサエレメントとメモリコントローラとルータを複数個相互に接続して構成される冗長経路を有するマルチプロセッサシステムで、プロセッサ上で実行中のOSのスケジューラが、プロセスの切替えを行うタイミングでシステム内のルータのルーティングテーブルを変更する機能を有する。また、ルータの各ポートにパケットの転送カウント数と転送エラー数をカウントする手段を有する。
【選択図】図1

Description

本発明は、プロセッサエレメントとメモリコントローラとルータを複数個相互に接続して構成される、冗長経路を有するマルチプロセッサシステムに関する。
一般に、プロセッサを複数接続することによりシステムの処理速度を向上させることが可能であり、各種マルチプロセッサシステムアーキテクチャが提案されている。
SMPは、物理メモリを共有して管理する対称型マルチプロセッシング方式のことで、SMPを構成する複数のプロセッサが基本的に同等なものとして振る舞うことができる。CPU及びメモリ間の接続はバス方式が主体であるが、接続するプロセッサの数を増やすと、共有メモリをアクセスするためのシステムバスが飽和し、性能のボトルネックとなる。
これに対しシステム拡張容易性を改善するために開発されたのがNUMA(Non−Uniform Memory Access)である。NUMAでは、プロセッサとメモリより構成されるノードが複数相互接続されている。NUMAにおいては、ノード間でメモリ空間を共有し、各ノードのプロセッサより他ノードのメモリにアクセス可能であるため、論理的にはSMP構成と同様に扱うことができるが、自ノード内のメモリ(ローカルメモリ)と自ノード外のメモリでは、CPUからメモリへアクセスするためのレイテンシが異なるため、CPUからのメモリ参照をできるだけ局所化し、CPU間でのメモリアクセスの競合を少なくすることが性能向上には必須となる。
このため、OSがNUMA構成を意識し、ノードに属するメモリやプロセッサの情報を積極的に収集することで、メモリの割り当てやプロセスの実行をできるだけ局所化し、他ノードのメモリに対するアクセスを削減している。
ここで、一般に、プロセッサ間のデータの転送は、送信元でデータを分割し、制御情報を付加したパケットの形でバス上を送信し、受信先でパケットを制御情報から復元する形で行う。この場合、パケットが狂った順序で到達するとパケットの復元が出来ない、或いはキャッシュコヒーレンシが維持できないなどの理由から、ノード間の接続経路は静的でなければならない。このため、ノードやプロセッサ間の接続経路が複数ある場合においても、ある特定のバスにトラフィックが集中し、システム性能の低下を招くことがあった。
このような課題を解決することのできる従来技術として、例えば特表2006−511878公報等に記載された技術が知られている。この従来技術は、ポイントツーポイントリンクで接続されたマルチプロセッサにおいて、継続中のオペレーションを全て停止或いは保留後、システムの実行を部分的に停止し、その間にプロセッサが持つルーティングテーブルを変更することで全体のシステムをダウン状態にすることなくマルチプロセッサシステムのトポロジを改変する。
特表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)にパケット送信が発生した場合には、すでに選択された経路を介して、全て同じ経路で通信を行う。この設定は次にプロセスが切替わるまで保持される。
以上説明したように本発明によれば、マルチプロセッサ構成のマシンにおいて、パケットのオーダリング不要で、リンクのトラフィックの負荷と障害によるボトルネック部分を回避したルーティングを動的に設定可能とし、プロセッサ間の迅速な通信が可能とすることでシステム性能を向上させることが可能となる。
本発明の1実施形態におけるマルチプロセッサの分散共有メモリマシンの構成を示すブロック図である。 ノードを構成するCPU、及びノードコントローラの機能を説明した図である。 ルーティングテーブルの構成を説明する図である。 CPU100(1)の持つルーティングテーブルの一部のエントリを説明する図である。 CPU100(2)のルーティングテーブルの一部のエントリを説明する図である。 NDC102(11)のルーティングテーブルの一部のエントリを説明する図である。 NDC102(13)のルーティングテーブルの一部のエントリを説明する図である。
符号の説明
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)

  1. プロセッサエレメントとメモリコントローラとルータを複数個相互に接続して構成される冗長経路を有するマルチプロセッサシステムで、OSのプロセス切替えを契機に該ルータのルーティングテーブルエントリを書き換えることにより他のプロセッサエレメントの動作を止めることなく経路を変更できることを特徴とするマルチプロセッサシステム。
  2. 前記ルータの各ポートを通過するトラフィックの負荷を計測する手段を備えることによって、動的に負荷の低い経路を選択することを特徴とする請求項1に記載のマルチプロセッサシステム。
  3. 前記ルータの各ポートにパケットの転送エラー数をカウントする手段を備えることによって、動的に障害の少ない経路を選択することを特徴とする請求項1に記載のマルチプロセッサシステム。
JP2007198300A 2007-07-31 2007-07-31 マルチプロセッサシステム Pending JP2009037273A (ja)

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)

* Cited by examiner, † Cited by third party
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的消息有序处理方法及***

Cited By (7)

* Cited by examiner, † Cited by third party
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