JP3661249B2 - Multiprocessor system - Google Patents
Multiprocessor system Download PDFInfo
- Publication number
- JP3661249B2 JP3661249B2 JP29647395A JP29647395A JP3661249B2 JP 3661249 B2 JP3661249 B2 JP 3661249B2 JP 29647395 A JP29647395 A JP 29647395A JP 29647395 A JP29647395 A JP 29647395A JP 3661249 B2 JP3661249 B2 JP 3661249B2
- Authority
- JP
- Japan
- Prior art keywords
- unit
- port
- data
- address
- multiprocessor system
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Multi Processors (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、高性能を実現するため複数のプロセッサを用いて構成するマルチプロセッサシステムに関連する。
【0002】
【従来の技術】
複数のプロセッサユニット、メモリユニット、入出力ユニットを単一のバスを用いて結合しメモリ共有型マルチプロセッサシステムを実現する方法は良く知られている。
【0003】
しかし、単一のバスを用いて結合する場合、接続されたユニット間でデータを転送するパスが1つしか存在しないため、プロセッサ台数を増やしてシステム性能を向上させようとするとバスがボトルネックとなる。
【0004】
これを解決するためアドレスの転送にはバスを用い、データの転送にはクロスバスイッチを用いる方法が、ニコルソンによって1995年のCOMPCOM95プロシーディングの102−109ページ「RISCシステム/6000SMPシステム」(James O.Nicholson, ”The RISC System/6000 SMP System,” COMPCON95 Proceedings,March 1995, pp.102−109)に紹介されている。
【0005】
【発明が解決しようとする課題】
しかしながら、上記の従来方法もスループット上のバスネックは解消されるが、高い周波数では信号を伝える上での電気的な制約によりプロセッサ台数をあまり多く増やすことができない。
【0006】
これを解決するためには、アドレスもクロスバスイッチを通し、各ユニットとクロスバスイッチを1対1で接続することによって解決可能である。
【0007】
このとき、バス接続で動作しているソフトウエアを正しく動作させるためには、クロスバスイッチによる接続でもキャッシュメモリとメインメモリのデータコヒーレンシを維持する必要がある。さらに、バス接続を前提に作られているプロセッサをクロスバスイッチを介して接続するためには、バス方式でデータコヒーレンシを維持する方法として一般的なアドレススヌープ方式をクロスバスイッチ上でも実現する必要が生じる。
【0008】
このアドレススヌープはキャッシュメモリとメインメモリのデータコヒーレンシを維持するための方法であり、転送対象となるデータを持たないメモリユニットやキャッシュメモリを持たない入出力ユニットに対しアドレスを転送する必要はない。このため、データコヒーレンシを維持するために必要なアドレスの転送は、アドレススヌープに参加する必要のあるユニットに対してだけ行なわれれば良く、1対多のデータ転送であるマルチキャストを行なうための手段をシステム接続部に設けることで効率的なアドレススヌープ方式を実現することができる。本発明の第1の課題は、バスで接続されることを前提に作られているプロセッサをクロスバスイッチを介して接続することによってバスネックを解消し、接続可能なプロセッサ台数を増加させることによりマルチプロセッサシステムとしての性能を向上させることにある。
【0009】
本発明の第2の課題は、バスで動作しているソフトウエアを変更することなく、クロスバスイッチを介して接続されたシステムにおいても動作可能にすることにある。
【0010】
本発明で解決すべき課題は上記2つの課題を同時に達成するものであり、さらに本発明では次に示す2つの課題を解決することも狙っている。
【0011】
本発明の第3の課題は、クロスバスイッチによって接続されたマルチプロセッサシステムにおいて、効率の良いアドレススヌープ方式を提供することにある。
【0012】
本発明の第4の課題は、クロスバスイッチのポートにプロセッサユニット、メモリユニット、入出力ユニットの任意のユニットを接続可能にし、柔軟なシステム構成を可能にするマルチキャスト方式を提供することにある。
【0013】
【課題を解決するための手段】
本発明の第1の課題は、前記のニコルソンによって紹介されている従来例のアドレスバスを廃止し、アドレスもクロスバスイッチを通し、各ユニットとクロスバスイッチを1対1で接続することによって達成される。
【0014】
本発明の第2の課題は、アドレススヌープ方式をクロスバスイッチでも可能にするため、アドレスをクロスバスイッチに接続された全てのユニットにブロードキャストする手段をシステム接続部に設け、データコヒーレンシを維持するために必要なアドレスの転送の場合には、全てのユニットにアドレスを転送するようにシステム接続部を制御することによって達成される。
【0015】
本発明の第3の課題は、データコヒーレンシを維持するために必要なアドレスの転送を、アドレススヌープに参加する必要のあるユニットに対してだけマルチキャストする手段をシステム接続部に設け、データコヒーレンシを維持するために必要なアドレスの転送の場合には、アドレススヌープに参加する必要のあるユニットに対してだけアドレスを転送するようにシステム接続部を制御することによって達成される。
【0016】
本発明の第4の課題は、クロスバスイッチ内に各ポートに接続されているユニットがマルチキャスト対象のユニットか否かを示す情報を保持する手段を設け、この情報を元に転送先ポートを決定する手段を設け、マルチキャスト対象のユニットか否かを示す情報を元に転送先ポートを決定する手段にマルチキャスト先を設定した後、マルチキャストを行なうようにすることによって達成される。
【0017】
各ユニットをクロスバスイッチを用いて接続することにより、転送先ポートが異なっていれば複数のデータ転送を同時に実行することができるため、プロセッサ台数を増加させることによるバスの奪い合いによる性能低下を押さえることができる。
【0018】
また、各ユニットとクロスバスイッチを1対1で接続することによってバスに比べ良い電気的特性を得ることができ、この結果接続可能なプロセッサ台数を増加させるこ
とが可能になる。
【0019】
データコヒーレンシを維持するために必要なアドレスの転送をブロードキャストすることによって、既存のプロセッサの持つアドレススヌープの機能を利用することができ、低コストで効率的なデータコヒーレンシを維持する方法を実現できる。
【0020】
各ポートに接続されているユニットのうちアドレススヌープに参加する必要のあるユニットに対してだけコヒーレントトランザクションのアドレスを転送することによって、不必要なデータ転送を排除し、実効的なデータ転送スループットを向上させることができる。
【0021】
また、ポート対応にマルチキャスト対象のユニットか否かを示す情報を保持することによって、任意のポートに任意のユニットを接続することが可能になり、柔軟なシステム構成が可能になる。
【0022】
本発明のマルチキャスト方式はアドレススヌープを例に説明されているが、複数のポートに対しデータを転送したい場合に一般的に利用できる。
【0023】
例えば、全ての入出力装置に対してリセットするためのコマンドを転送したい場合には、そのポートに入出力ユニットが接続されているか否かをマルチキャスト対象か否かを示す情報として保持する手段を設ければよい。
【0024】
【発明の実施の形態】
以下、本発明の実施例を用いて詳細に説明する。
【0025】
図2は3つのプロセッサユニット20、30、40、2つのメモリユニット50、60および1つの入出力ユニット70を6つのポートを持つシステム接続部100で接続した本発明の第1の実施例である。
【0026】
入出力ユニット70はディスク装置75、ディスプレイ(図示せず)、キーボード(図示せず)などの入出力装置に接続している。
【0027】
各ユニットは通常のバス接続されたシステムでの対応するユニットと、システム接続部とのインタフェース部分を除き同一の機能を有するため、本実施例ではバス接続されたシステムと本実施例の相違点について詳細に述べ、同一の点については説明に必要な部分だけ説明するものとする。
【0028】
プロセッサユニット30はシステム接続部100とポート4を介して接続されており、それぞれ本発明の特徴であるユニット識別レジスタidr31、接続情報生成回路33、転送先識別レジスタdr32を有している。これらの回路の詳細は後述する。
【0029】
同様に他のユニットもそれぞれシステム接続部100とポートを介して接続されており、それぞれユニット識別レジスタidr、接続情報生成回路、転送先識別レジスタdrを有している。
【0030】
システム接続部100は6つのスイッチ制御回路110から160、入力ポートと出力ポートを接続する36個のスイッチsw1−1からsw6−6を有している。
【0031】
スイッチ制御回路140はポート4の入力に対して設けられ、6つのスイッチsw4−1からsw4−6の開閉を制御し、ポート4の入力バス14をそれぞれポート1の出力バス21からポート6の出力バス26に接続する。
【0032】
同様に他のスイッチ制御回路も各ポートの入力に対応して設けられ、iを1から6の自然数とすればポートiのスイッチ制御回路はスイッチswi−1からswi−6の開閉を制御し、ポートiの入力バスを任意のポートの出力バスに接続する。
【0033】
ユニキャストの場合はいずれか1つをスイッチを閉じることによって入力ポートを任意の出力ポートを接続し、ブロードキャストの場合は全てのスイッチを閉じることによって入力ポートを全ての出力ポートに同時に接続するように制御する。
【0034】
スイッチ制御回路はこのスイッチ制御に際し、複数の入力ポートが同一の出力ポートに接続されることのないよう、出力ポートの接続権の調停を行なう。この出力ポートの接続権の調停回路は通常のバス接続されたシステムのバス権調停回路と同一であり本実施例では説明を省略する。
【0035】
図3は各ユニットが持つ本発明の特徴であるユニットを識別するためのレジスタidrの内容によるユニット識別方法の1例である。各ユニットは図3に示された情報を各ユニットのユニット識別レジスタidrに保持しているものとする。
【0036】
図4は本実施例の各ユニットが生成するデータ転送の種類trtypを示している。本実施例ではデータ転送の種類trtypは (1)非コヒーレントブロックリード要求、(2)非コヒーレントブロックリード応答、(3)非コヒーレントブロックライト要求、(4)非コヒーレントワードリード要求、(5)非コヒーレントワードリード応答、(6)非コヒーレントワードライト要求、(7)コヒーレント共有ブロックリード要求、(8)コヒーレント排他ブロックリード要求 の8種類である。
【0037】
図5は本実施例のシステムにおけるアドレス空間の割り当てを示している。本実施例では0番地以上A番地未満の領域がメモリユニット0に設けられたメインメモリに、A番地以上B番地未満の領域がメモリユニット1に設けられたメインメモリに、B番地以上の領域がメモリマップされた制御レジスタなどのためのI/O空間として割り当てられている。
【0038】
本実施例では各ユニットの制御レジスタがマップされるI/O空間のアドレスはポート対応に決められており、B番地以上C番地未満の領域がポート1のユニット、C番地以上D番地未満の領域がポート2のユニット、D番地以上E番地未満の領域がポート3のユニット、E番地以上F番地未満の領域がポート4のユニット、F番地以上G番地未満の領域がポート5のユニット、G番地以上MAX番地未満の領域がポート6のユニットに割り当てられている。
【0039】
図6は本実施例での転送先識別レジスタdrの値である。本実施例ではアドレス空間のメモリ領域がどのポートのメモリユニットに設けられているかを識別するために、転送先識別レジスタdrとして2つのポート番号を保持できるようにしている。
【0040】
転送先識別レジスタdrの値は、本発明の特徴であるユニット識別レジスタidrの情報を元に設定される。この動作に関しては後ほど詳細に述べる。
【0041】
上記データ転送の種類trtypとアドレス空間の割り付け方はバス接続されたシステムにおいて用いられるデータ転送の種類、アドレス空間の割り付け方と同一であり本発明に特有のものではない。
【0042】
本発明では、上記データ転送の種類と転送されるデータのアドレスおよび本発明の特徴である転送先識別レジスタdrを用い、各ユニットの本発明の特徴である接続情報生成回路が転送先を決定し、図7に示す5種類の制御情報scctlと共にシステム接続部にデータ転送要求を出す。
【0043】
次に本実施例の各ユニットから要求されるデータ転送の種類trtypについて説明する。
【0044】
マルチプロセッサシステムでは、データの読み出しを行なう場合は読み出し行なう時点で本来メインメモリに存在するべき最新のデータを読み出す必要があり、最新のデータを他のプロセッサユニットが保持していないかを確認するためコヒーレント共有ブロックリード要求またはコヒーレント排他ブロックリード要求によって読み出しを行なう。
【0045】
書き込みを行なう場合には、他のプロセッサユニットが古いデータを保持しないようにするため、コヒーレント排他リード要求によって1度そのデータの読み出しを行なう。
【0046】
読み出し要求時には、そのデータのアドレスを他のプロセッサユニットに伝え、コヒーレンシをチェックする必要があるが、読み出されたデータを転送する場合にはコヒーレンシチェックは不要であり、リード応答には非コヒーレントブロックリード応答や非コヒーレントワードリード応答が用いられる。
【0047】
プロセッサユニットはあるデータを書き換えてキャッシュメモリに持っている場合、キャッシュメモリのリプレースまたは他のプロセッサユニットからのそのデータに対するコヒーレントリード要求を検出した場合、書き換えたデータを転送しなければならない。このときは、それぞれ非コヒーレントブロックライト要求または非コヒーレントブロックリード応答でデータを転送する。
【0048】
全てのデータがキャッシュメモリに保持される訳ではなく、例えば非キャッシュ領域が決められている場合、プロセッサユニットは非コヒーレントブロックリード要求でデータの読み出す。また、I/Oレジスタのようにブロック単位に読み出し/書き込みを行なわないデータ(ワードデータ)はキャッシングされないため、プロセッサユニットは非コヒーレントワードリード要求や非コヒーレントワードライト要求を用いる。
【0049】
各ユニットから要求されるデータ転送はその種類trtypに応じて転送に要するサイクルが異なる。転送に要するサイクル数はシステム接続部の制御情報として必要であり、説明のため本実施例では、リード要求はアドレスを転送する1サイクル、ブロックライト要求は5サイクル、ブロックリード応答は4サイクル、ワードライト要求は2サイクル、ワードリード応答は1サイクルで転送するものとする。
【0050】
図7は上記データ転送の種類trtypと転送されるデータのアドレスから接続情報生成回路によって生成されるシステム接続部への制御情報scctlを示している。データ転送の種類trtypはそれ自身がデータとして転送先のユニットに送られるため、システム接続部への制御情報scctlはユニキャストかブロードキャストかという情報、転送に要するサイクル数、転送元のポート番号と転送先のポート番号だけでよい。
【0051】
接続情報生成回路は、データ転送の種類trtypを元にユニキャストかブロードキャストかという情報、転送に要するサイクル数を以下のように生成する。非コヒーレントブロックリード要求である場合、1サイクルのユニキャスト。
【0052】
非コヒーレントブロックリード応答である場合、4サイクルのユニキャスト。
【0053】
非コヒーレントブロックライト要求である場合、5サイクルのユニキャスト。
【0054】
非コヒーレントワードリード要求である場合、1サイクルのユニキャスト。
【0055】
非コヒーレントワードリード応答である場合、1サイクルのユニキャスト。
【0056】
非コヒーレントワードライト要求である場合、2サイクルのユニキャスト。
【0057】
コヒーレント共有ブロックリード要求またはコヒーレント排他ブロックリード要求である場合、1サイクルのブロードキャスト。
【0058】
接続情報生成回路は、転送元のポート番号として自身の接続されているポート番号を制御情報scctlのsrcフィールドに埋め込む。
【0059】
接続情報生成回路は、データ転送の種類trtypおよびそのデータのアドレスと転送先識別レジスタdrを元に転送先のポート番号を生成し制御情報scctlのdestフィールドに埋め込む。
【0060】
要求されたデータ転送がリード要求に対する応答である場合は、リード要求時にシステム接続部に出された制御情報scctlのsrcフィールドに含まれる要求元のポート番号をdestフィールドに埋め込む。
【0061】
要求されたデータ転送がライト要求やリード要求である場合はユニキャストかブロードキャストかに関わらずそのアドレスがメモリ空間にあれば、図6に示されるように0番地以上A番地未満の領域であればdr0の値である1を、A番地以上B番地未満の領域であればdr1の値である4を転送先のポート番号としてdestフィールドに埋め込む。そのアドレスがI/O空間にあれば、図5に示されるようにB番地以上C番地未満の領域であれば1、C番地以上D番地未満の領域であれば2、D番地以上E番地未満の領域であれば3、E番地以上F番地未満の領域であれば4、F番地以上G番地未満の領域であれば5、G番地以上MAX番地未満の領域であれば6を転送先のポート番号としてdestフィールドに埋め込む。
【0062】
以上の説明から明らかなように、転送先識別レジスタdrに値を設定する前に転送先のポート番号を決定し、システム接続部を介してデータ転送を行なえるのは、アドレス固定にポート番号が決められているI/O空間に対するユニキャストだけである。
【0063】
このため、本発明のマルチプロセッサシステム上でバス接続されたシステムで動作しているソフトウエアを変更することなく動作させるためには、I/O空間に対するユニキャスト転送だけで転送先識別レジスタdrに正しく値を設定する手順が存在し、この転送先識別レジスタdrに正しく値を設定した後メモリ空間に対するユニキャストやブロードキャスト転送を用いるようにしなければならない。次にこの手順について説明する。
【0064】
本実施例では、各ユニットが持っているユニット識別レジスタidrおよび転送先識別レジスタdrは、接続されたポートのI/O空間にマップされているI/Oレジスタであり、各ポートのI/O空間内のオフセットアドレスは共通に決められている。
【0065】
各プロセッサユニットはリセット直後に実行されるブートプログラムを保持するROMを持っており、リセット直後のプロセッサはそのブートプログラムに従いプロセッサ自身、プロセッサユニット内のキャッシュメモリを初期化する。この初期化の段階ではシステム接続部に対するデータの転送要求は発生しない。
【0066】
本実施例では、この初期化の課程で複数あるプロセッサユニットの中から1つだけ主プロセッサユニットが選ばれるものとする。例えば、主プロセッサユニットとなるプロセッサユニットだけブートプログラムの一部が他のプロセッサユニットのブートプログラムと異なるようにする。あるいはポート対応にプロセッサユニットであるか否かを知らせる信号を設けてあれば、システム接続部100からポート番号が最も小さいプロセッサユニットであるか否かを伝える信号を設けることは容易である。
【0067】
また、リセット直後のシステム接続部100は各ポートからのデータ転送要求を待っており、なにもしていない状態にある。
【0068】
プロセッサユニット内の初期化を終了したプロセッサユニットは、主プロセッサユニットでなければ主プロセッサユニットからの割り込み待ちの状態に入る。プロセッサユニット内の初期化を終了した主プロセッサユニットは、I/O空間に対するユニキャストによって、ポート番号順に各ポートに接続されたユニットのユニット識別レジスタidrを読み出し、メモリユニットがどのポートに接続されているかを認識する。
【0069】
この後、I/O空間に対するユニキャストによって、メモリユニットが接続されていたポート番号を各ユニットの転送先識別レジスタdrに設定する。
【0070】
以上の手順によって、I/O空間に対するユニキャスト転送だけを用いて転送先識別レジスタdrに正しく値を設定することができる。
【0071】
上記実施例では、I/O空間はポート対応にアドレス空間に割り付けられていた。このため、I/O空間に対するユニキャストで転送先識別レジスタdrに値を設定する方法を示した。しかし、バス接続されたシステムと同様に、各ユニットにそのユニットのI/Oレジスタに対するアクセスか否かを、アドレスによって取捨する機構を持たせることにより、I/O空間に対するユニキャストに代えてI/O空間に対するブロードキャストだけを用いて転送先識別レジスタdrに値を設定することもできる。
【0072】
上記実施例では、説明を簡単にするためメモリユニットは1種類しかないものとしている。このため、1つのメモリユニットのメモリ容量によって決まる固定アドレスA番地を基準に、メモリ空間もA番地未満の領域とA番地以降の領域の2つに決められている。
【0073】
異なるメモリ容量を持つメモリユニットが接続されることがある場合には次の2つの手段を設ければよいことは明らかである。
【0074】
(1)転送先識別レジスタdrにはポート番号だけでなく、そのメモリユニットが割り当てられるアドレス領域の最小アドレスと最大アドレスを保持するようにする。
【0075】
(2)接続情報生成回路では転送するデータのアドレスを上記最小アドレスと最大アドレスと比較し、アドレス領域にある場合に、そのポート番号をdestフィールドに埋め込むようにする。
【0076】
上記実施例では、転送先識別レジスタdrは2つのポートに対応する分だけしか情報を保持できないため、接続可能なメモリユニットは最大2つである。接続可能なメモリユニットの数を増やすためには転送先識別レジスタdrにそのポート数分だけの情報を保持できるようにすればよいことは明白である。
【0077】
上記実施例では、I/O空間はポート対応に固定アドレスが定められている。しかし、上記実施例でポート対応にアドレスが固定されている必要があるのはユニット識別レジスタidrおよび転送先識別レジスタdrだけであり、これらのレジスタは固定アドレスに割り付け、その他のI/Oレジスタはメモリ空間と同様にそのI/O空間の領域の最小アドレスと最大アドレスとポート番号を保持する、転送先識別レジスタdrと同等の機能を有する手段を持つこともできる。
【0078】
次に図1を用いて第2の実施例について、図2の第1の実施例との相違点を中心に説明する。
【0079】
第1の実施例はアドレススヌープを実現する方法としてブロードキャストを用いる例を示した。第2の実施例はマルチキャストを用いアドレススヌープに参加する必要のあるユニットに対してだけコヒーレントリードトランザクションを転送するようにした例である。
【0080】
第2の実施例では、システム接続部100は本発明の特徴の一つであるマルチキャストレジスタをmcrA180、mcrB190の2つ有しており、スイッチ制御回路110から160がマルチキャストレジスタmcrを参照してスイッチを制御する信号を生成する点が第1の実施例と異なっている。
【0081】
マルチキャストレジスタmcrは第1の実施例の転送先識別レジスタdrと同様にユニット識別レジスタidrの情報を元に設定されるレジスタであり、ポート対応にマルチキャスト対象が接続されているポートであれば1、そうでないときに0の値を保持する。
【0082】
図8はアドレススヌープを実現するためマルチキャスト対象としてプロセッサユニットが接続されているポート3、ポート4およびポート6を選択しマルチキャストレジスタmcrA180に、マルチキャスト対象として入出力ユニット70が接続されているポート1を選択しマルチキャストレジスタmcrB190に値を設定した例を示している。
【0083】
図9は第2の実施例のシステム接続部100のスイッチswi−jの回路を示している。第1の実施例ではスイッチswi−jは、信号on−ijだけで制御されていたが、図9ではさらにmcA−iまたはmcB−iが1の時それぞれマルチキャストレジスタmcrAからの信号mcrA−j、mcrBからの信号mcrB−jの値によって接続するか否かが決まるように作られている。
【0084】
これによって、アドレススヌープを行なう場合であれば、mc0−iを1にすることによって3つのプロセッサユニットとdestで示されるメモリユニットに対し同時にコヒーレントリード要求を出すことができる。
【0085】
第2の実施例では図10に示されるようにシステム接続部への制御情報scctlの種類としてマルチキャストレジスタmcrA、mcrBに対応して2つのマルチキャストが追加され、コヒーレント共有ブロックリード要求またはコヒーレント排他ブロックリード要求である場合、実施例1のブロードキャストに替わりマルチキャストAが用いられる。
【0086】
マルチキャストレジスタmcrは第1の実施例の転送先識別レジスタdrと同様の手順で、ユニット識別レジスタidrの情報を元にI/O空間に対するユニキャスト転送だけで設定できることは明白であり、設定後にマルチキャスト転送を用いるようにする。
【0087】
マルチキャストレジスタmcrはそのレジスタを用いるマルチキャスト転送要求が発行される直前に設定されていればよい。このため、初期設定で固定値に設定するだけではなくソフトウエアでマルチキャストレジスタmcrの内容を書き換えることによって、マルチキャスト転送先を変更することもできる。
【0088】
上記実施例ではマルチキャストレジスタmcrはシステム接続部100に設けられているが、マルチキャストレジスタmcrを各ユニットに設け、システム接続部100への制御情報scctlにその内容を含めることもできる。
【0089】
上記実施例ではポート毎にマルチキャストレジスタmcrの1ビットを対応させているが、システム接続部100のポートを例えばポート1と2、3と4、5と6の3グループに分け、1グループ内では同じ種類のユニットだけを接続するようにし、グループ対応にマルチキャストレジスタmcrのビットを対応させることもできる。これによってマルチキャストレジスタmcrを有するハードウエアの増加を少なくするこ
とができる。
【0090】
【発明の効果】
多数台のプロセッサを接続することができる。
【図面の簡単な説明】
【図1】本発明の実施例ブロック図。
【図2】本発明の実施例ブロック図。
【図3】ユニット識別法を示す表図。
【図4】デ−タ転送の種類を示す表図。
【図5】アドレス割当てを示す表図。
【図6】転送先識別レジスタを示す表図。
【図7】制御情報を示す表図。
【図8】レジスタを示す表図。
【図9】 スイッチの回路図。
【図10】接続部制御情報を示す表図。[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a multiprocessor system configured using a plurality of processors to achieve high performance.
[0002]
[Prior art]
A method of realizing a shared memory multiprocessor system by combining a plurality of processor units, memory units, and input / output units using a single bus is well known.
[0003]
However, when connecting using a single bus, there is only one path for transferring data between connected units, so if you increase the number of processors to improve system performance, the bus becomes a bottleneck. Become.
[0004]
In order to solve this problem, a method using a bus for address transfer and using a crossbar switch for data transfer is described by Nicholson in "COMC 95 Proceedings of 1995" pages 102-109, "RISC system / 6000 SMP system" (James O.). Nicholson, “The RISC System / 6000 SMP System,” COMPCON 95 Proceedings, March 1995, pp. 102-109).
[0005]
[Problems to be solved by the invention]
However, although the above-described conventional method also eliminates the bus neck in terms of throughput, the number of processors cannot be increased so much at high frequencies due to electrical restrictions in transmitting signals.
[0006]
In order to solve this, the address can also be solved by connecting each unit and the crossbar switch in a one-to-one manner through the crossbar switch.
[0007]
At this time, in order to correctly operate the software operating on the bus connection, it is necessary to maintain the data coherency between the cache memory and the main memory even with the connection using the crossbar switch. Furthermore, in order to connect a processor made on the premise of bus connection via a crossbar switch, it is necessary to realize a general address snoop method on the crossbar switch as a method of maintaining data coherency by the bus method. .
[0008]
This address snoop is a method for maintaining the data coherency between the cache memory and the main memory, and there is no need to transfer the address to a memory unit having no data to be transferred or an input / output unit having no cache memory. For this reason, the transfer of the address necessary for maintaining the data coherency need only be performed to the unit that needs to participate in the address snoop, and means for performing the multicast that is the one-to-many data transfer. An efficient address snoop method can be realized by providing the system connection unit. A first problem of the present invention is to eliminate the bus neck by connecting processors that are made on the assumption that they are connected by a bus through a crossbar switch, and to increase the number of connectable processors. The purpose is to improve the performance of the processor system.
[0009]
A second object of the present invention is to enable operation in a system connected via a crossbar switch without changing software operating on a bus.
[0010]
The problem to be solved by the present invention is to achieve the above two problems at the same time, and the present invention also aims to solve the following two problems.
[0011]
A third object of the present invention is to provide an efficient address snoop system in a multiprocessor system connected by a crossbar switch.
[0012]
A fourth object of the present invention is to provide a multicast system that allows any unit of a processor unit, a memory unit, and an input / output unit to be connected to a port of a crossbar switch, thereby enabling a flexible system configuration.
[0013]
[Means for Solving the Problems]
The first object of the present invention is achieved by eliminating the conventional address bus introduced by the above-mentioned Nicholson, connecting the address to each unit and the crossbar switch on a one-to-one basis. .
[0014]
The second problem of the present invention is to provide a means for broadcasting addresses to all units connected to the crossbar switch in order to enable the address snoop method even in the crossbar switch, in order to maintain data coherency. In the case of the necessary address transfer, this is accomplished by controlling the system connection to transfer the address to all units.
[0015]
The third object of the present invention is to provide a means for multicasting the transfer of addresses necessary for maintaining data coherency only to units that need to participate in address snooping in the system connection unit, thereby maintaining data coherency. In the case of address forwarding necessary to do this, it is accomplished by controlling the system connection to forward addresses only to units that need to participate in address snoop.
[0016]
A fourth problem of the present invention is to provide means for holding information indicating whether or not a unit connected to each port is a multicast target unit in the crossbar switch, and determine a transfer destination port based on this information. This is achieved by providing a means and setting a multicast destination in a means for determining a transfer destination port based on information indicating whether or not the unit is a multicast target unit, and then performing the multicast.
[0017]
By connecting each unit using a crossbar switch, multiple data transfers can be executed at the same time if the transfer destination ports are different. This prevents a decrease in performance due to bus contention by increasing the number of processors. Can do.
[0018]
Also, by connecting each unit and the crossbar switch on a one-to-one basis, it is possible to obtain better electrical characteristics than the bus, and as a result, the number of connectable processors can be increased.
And become possible.
[0019]
By broadcasting the transfer of addresses necessary for maintaining data coherency, the address snooping function of an existing processor can be used, and a method for maintaining low-cost and efficient data coherency can be realized.
[0020]
Eliminate unnecessary data transfer and improve effective data transfer throughput by transferring coherent transaction addresses only to units connected to each port that need to participate in address snoop Can be made.
[0021]
Also, by holding information indicating whether or not the unit is a multicast target unit corresponding to the port, it becomes possible to connect an arbitrary unit to an arbitrary port, and a flexible system configuration is possible.
[0022]
The multicast method of the present invention has been described by taking address snoop as an example, but it can be generally used when data is transferred to a plurality of ports.
[0023]
For example, if you want to transfer a reset command to all I / O devices, a means is provided to hold whether the I / O unit is connected to the port as information indicating whether it is a multicast target or not. Just do it.
[0024]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, it demonstrates in detail using the Example of this invention.
[0025]
FIG. 2 shows a first embodiment of the present invention in which three
[0026]
The input /
[0027]
Since each unit has the same function except for the interface unit between the corresponding unit in the normal bus-connected system and the system connection unit, in this embodiment, the difference between the bus-connected system and this embodiment is as follows. The details will be described in detail, and only the parts necessary for the explanation will be explained for the same points.
[0028]
The
[0029]
Similarly, other units are also connected to the
[0030]
The
[0031]
The
[0032]
Similarly, other switch control circuits are also provided corresponding to the input of each port. If i is a natural number from 1 to 6, the switch control circuit of port i controls the opening and closing of the switches swi-1 to swi-6, The input bus of port i is connected to the output bus of any port.
[0033]
In the case of unicast, any input port is connected to the input port by closing one of the switches, and in the case of broadcast, the input port is connected to all the output ports simultaneously by closing all the switches. Control.
[0034]
In this switch control, the switch control circuit arbitrates the right to connect the output ports so that a plurality of input ports are not connected to the same output port. This output port connection right arbitration circuit is the same as the bus right arbitration circuit of a normal bus-connected system, and its description is omitted in this embodiment.
[0035]
FIG. 3 shows an example of a unit identification method based on the contents of the register idr for identifying a unit which is a feature of the present invention of each unit. It is assumed that each unit holds the information shown in FIG. 3 in the unit identification register idr of each unit.
[0036]
FIG. 4 shows the type of data transfer trtyp generated by each unit of this embodiment. In this embodiment, the data transfer type trtyp is (1) non-coherent block read request, (2) non-coherent block read response, (3) non-coherent block write request, (4) non-coherent word read request, and (5) non-coherent. There are eight types: coherent word read response, (6) non-coherent word write request, (7) coherent shared block read request, and (8) coherent exclusive block read request.
[0037]
FIG. 5 shows address space allocation in the system of this embodiment. In this embodiment, an area from
[0038]
In this embodiment, the address of the I / O space to which the control register of each unit is mapped is determined to correspond to the port, and the area from the B address to the C address is the unit of the
[0039]
FIG. 6 shows the value of the transfer destination identification register dr in this embodiment. In this embodiment, in order to identify the memory unit of which port the memory area of the address space is provided, two port numbers can be held as the transfer destination identification register dr.
[0040]
The value of the transfer destination identification register dr is set based on the information of the unit identification register idr, which is a feature of the present invention. This operation will be described in detail later.
[0041]
The data transfer type trtyp and the address space allocation method are the same as the data transfer type and address space allocation method used in the bus-connected system, and are not unique to the present invention.
[0042]
In the present invention, the type of data transfer, the address of the data to be transferred, and the transfer destination identification register dr that is a feature of the present invention are used, and the connection information generation circuit that is a feature of the present invention of each unit determines the transfer destination. A data transfer request is issued to the system connection unit together with the five types of control information scctl shown in FIG.
[0043]
Next, the data transfer type trtyp requested from each unit of this embodiment will be described.
[0044]
In a multiprocessor system, when data is read out, it is necessary to read out the latest data that should originally exist in the main memory at the time of reading, and in order to check whether another processor unit holds the latest data. Reading is performed by a coherent shared block read request or a coherent exclusive block read request.
[0045]
When writing, in order to prevent other processor units from holding old data, the data is read once by a coherent exclusive read request.
[0046]
When a read request is made, it is necessary to transmit the address of the data to another processor unit and check the coherency. However, when the read data is transferred, the coherency check is not necessary, and the read response is a non-coherent block. A read response or a non-coherent word read response is used.
[0047]
When the processor unit rewrites certain data and stores it in the cache memory, when the cache memory is replaced or when a coherent read request for the data from another processor unit is detected, the rewritten data must be transferred. At this time, data is transferred by a non-coherent block write request or a non-coherent block read response, respectively.
[0048]
Not all data is held in the cache memory. For example, when a non-cache area is determined, the processor unit reads data with a non-coherent block read request. In addition, since data (word data) that is not read / written in units of blocks like the I / O register is not cached, the processor unit uses a non-coherent word read request or a non-coherent word write request.
[0049]
The data transfer required from each unit differs in the cycle required for the transfer depending on the type trtyp. The number of cycles required for transfer is necessary as control information for the system connection unit. For the sake of explanation, in this embodiment, the read request is one cycle for transferring an address, the block write request is five cycles, the block read response is four cycles, It is assumed that the write request is transferred in 2 cycles and the word read response is transferred in 1 cycle.
[0050]
FIG. 7 shows control information scctl to the system connection unit generated by the connection information generation circuit from the data transfer type trtyp and the address of the transferred data. Since the data transfer type trtyp itself is sent as data to the transfer destination unit, the control information scctl to the system connection unit is information indicating whether it is unicast or broadcast, the number of cycles required for transfer, the port number of the transfer source and the transfer Only the previous port number is required.
[0051]
Based on the data transfer type trtyp, the connection information generation circuit generates information as to whether it is unicast or broadcast and the number of cycles required for transfer as follows. If it is a non-coherent block read request, one cycle of unicast.
[0052]
4 cycles of unicast for non-coherent block read response.
[0053]
5 cycles of unicast for non-coherent block write requests.
[0054]
One cycle of unicast for non-coherent word read request.
[0055]
1 cycle unicast for non-coherent word read response.
[0056]
If it is a non-coherent word write request, two cycles of unicast.
[0057]
1 cycle broadcast if it is a coherent shared block read request or a coherent exclusive block read request.
[0058]
The connection information generation circuit embeds the port number connected to itself as the transfer source port number in the src field of the control information scctl.
[0059]
The connection information generation circuit generates a transfer destination port number based on the data transfer type trtyp, the address of the data, and the transfer destination identification register dr, and embeds it in the dest field of the control information scctl.
[0060]
When the requested data transfer is a response to the read request, the port number of the request source included in the src field of the control information scctl issued to the system connection unit at the time of the read request is embedded in the dest field.
[0061]
If the requested data transfer is a write request or a read request, regardless of whether it is unicast or broadcast, if the address is in the memory space, as shown in FIG. 6, if it is an area from
[0062]
As is clear from the above description, the port number of the transfer destination is determined before setting the value in the transfer destination identification register dr, and data transfer can be performed via the system connection unit. It is only unicast for a fixed I / O space.
[0063]
For this reason, in order to operate the software operating in the bus-connected system on the multiprocessor system of the present invention without changing, the unicast transfer to the I / O space is performed in the transfer destination identification register dr. There is a procedure for setting a value correctly, and after setting a value correctly in the transfer destination identification register dr, it is necessary to use unicast or broadcast transfer for the memory space. Next, this procedure will be described.
[0064]
In this embodiment, the unit identification register idr and the transfer destination identification register dr possessed by each unit are I / O registers mapped to the I / O space of the connected port. The offset address in the space is determined in common.
[0065]
Each processor unit has a ROM that holds a boot program executed immediately after reset, and the processor immediately after reset initializes the cache memory in the processor unit itself according to the boot program. At this initialization stage, no data transfer request is issued to the system connection unit.
[0066]
In the present embodiment, it is assumed that only one main processor unit is selected from a plurality of processor units in the initialization process. For example, a part of the boot program is made different from the boot program of other processor units only for the processor unit that is the main processor unit. Alternatively, if a signal indicating whether or not the processor unit is corresponding to the port is provided, it is easy to provide a signal indicating whether or not the processor unit has the smallest port number from the
[0067]
In addition, the
[0068]
If the processor unit that has completed initialization in the processor unit is not the main processor unit, it enters a state of waiting for an interrupt from the main processor unit. The main processor unit that has completed initialization in the processor unit reads the unit identification register idr of the unit connected to each port in order of the port number by unicast to the I / O space, and to which port the memory unit is connected Recognize
[0069]
Thereafter, the port number to which the memory unit is connected is set in the transfer destination identification register dr of each unit by unicast to the I / O space.
[0070]
According to the above procedure, a value can be correctly set in the transfer destination identification register dr using only unicast transfer to the I / O space.
[0071]
In the above embodiment, the I / O space is allocated to the address space corresponding to the port. For this reason, a method of setting a value in the transfer destination identification register dr by unicast with respect to the I / O space is shown. However, in the same way as in a bus-connected system, each unit has a mechanism for discarding whether to access the I / O register of the unit by an address, so that I / O space can be replaced with unicast. It is also possible to set a value in the transfer destination identification register dr using only the broadcast for the / O space.
[0072]
In the above embodiment, only one type of memory unit is assumed to simplify the description. For this reason, based on the fixed address A determined by the memory capacity of one memory unit, the memory space is also determined to be an area below address A and an area after address A.
[0073]
Obviously, when memory units having different memory capacities may be connected, the following two means may be provided.
[0074]
(1) The transfer destination identification register dr stores not only the port number but also the minimum address and the maximum address of the address area to which the memory unit is allocated.
[0075]
(2) The connection information generation circuit compares the address of the data to be transferred with the minimum address and the maximum address, and if it is in the address area, the port number is embedded in the dest field.
[0076]
In the above embodiment, since the transfer destination identification register dr can hold information corresponding to only two ports, a maximum of two memory units can be connected. Obviously, in order to increase the number of connectable memory units, the transfer destination identification register dr need only hold information corresponding to the number of ports.
[0077]
In the above embodiment, a fixed address is defined for each port in the I / O space. However, in the above embodiment, only the unit identification register idr and the transfer destination identification register dr need to be fixed in correspondence with the port. These registers are assigned to fixed addresses, and other I / O registers are Similarly to the memory space, it is possible to have means having the same function as the transfer destination identification register dr, which holds the minimum address, the maximum address, and the port number of the area of the I / O space.
[0078]
Next, the second embodiment will be described with reference to FIG. 1, focusing on the differences from the first embodiment of FIG.
[0079]
The first embodiment shows an example in which broadcast is used as a method for realizing address snoop. The second embodiment is an example in which a coherent read transaction is transferred only to a unit that needs to participate in address snoop using multicast.
[0080]
In the second embodiment, the
[0081]
The multicast register mcr is a register that is set based on the information of the unit identification register idr, like the transfer destination identification register dr of the first embodiment, and is 1 if the multicast target is connected to the port. Otherwise it holds a value of 0.
[0082]
In FIG. 8, port 3,
[0083]
FIG. 9 shows a circuit of the switch swi-j of the
[0084]
Accordingly, when address snooping is performed, by setting mc0-i to 1, a coherent read request can be issued simultaneously to the three processor units and the memory unit indicated by dest.
[0085]
In the second embodiment, as shown in FIG. 10, two multicasts are added corresponding to the multicast registers mcrA and mcrB as types of control information scctl to the system connection unit, and a coherent shared block read request or a coherent exclusive block read If the request is a request, multicast A is used instead of the broadcast in the first embodiment.
[0086]
It is obvious that the multicast register mcr can be set only by unicast transfer to the I / O space based on the information of the unit identification register idr in the same procedure as the transfer destination identification register dr of the first embodiment. Use forwarding.
[0087]
The multicast register mcr may be set immediately before a multicast transfer request using the register is issued. For this reason, the multicast transfer destination can be changed not only by setting a fixed value in the initial setting but also by rewriting the contents of the multicast register mcr by software.
[0088]
In the above embodiment, the multicast register mcr is provided in the
[0089]
In the above embodiment, one bit of the multicast register mcr is associated with each port. However, the ports of the
You can.
[0090]
【The invention's effect】
Multiple processors can be connected.
[Brief description of the drawings]
FIG. 1 is a block diagram of an embodiment of the present invention.
FIG. 2 is a block diagram of an embodiment of the present invention.
FIG. 3 is a table showing a unit identification method.
FIG. 4 is a table showing types of data transfer.
FIG. 5 is a table showing address assignment.
FIG. 6 is a table showing a transfer destination identification register.
FIG. 7 is a table showing control information.
FIG. 8 is a table showing registers.
FIG. 9 is a circuit diagram of a switch.
FIG. 10 is a table showing connection unit control information.
Claims (8)
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP29647395A JP3661249B2 (en) | 1995-11-15 | 1995-11-15 | Multiprocessor system |
| US08/747,344 US6011791A (en) | 1995-11-15 | 1996-11-12 | Multi-processor system and its network |
| US09/456,383 US6728258B1 (en) | 1995-11-15 | 1999-12-08 | Multi-processor system and its network |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP29647395A JP3661249B2 (en) | 1995-11-15 | 1995-11-15 | Multiprocessor system |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH09138783A JPH09138783A (en) | 1997-05-27 |
| JP3661249B2 true JP3661249B2 (en) | 2005-06-15 |
Family
ID=17834015
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP29647395A Expired - Fee Related JP3661249B2 (en) | 1995-11-15 | 1995-11-15 | Multiprocessor system |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3661249B2 (en) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7328314B2 (en) * | 2002-06-19 | 2008-02-05 | Alcatel-Lucent Canada Inc. | Multiprocessor computing device having shared program memory |
| JP4956900B2 (en) | 2005-03-07 | 2012-06-20 | 富士通株式会社 | Address snoop method and multiprocessor system |
| EP2344947B1 (en) * | 2009-02-17 | 2012-07-04 | Hitachi, Ltd. | Storage controller and method of controlling storage controller |
-
1995
- 1995-11-15 JP JP29647395A patent/JP3661249B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JPH09138783A (en) | 1997-05-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6513091B1 (en) | Data routing using status-response signals | |
| US6874053B2 (en) | Shared memory multiprocessor performing cache coherence control and node controller therefor | |
| US6189062B1 (en) | Apparatus and method for address translation in bus bridge devices | |
| US7093079B2 (en) | Snoop filter bypass | |
| US7881321B2 (en) | Multiprocessor node controller circuit and method | |
| US6581130B1 (en) | Dynamic remapping of address registers for address translation between multiple busses | |
| US9037807B2 (en) | Processor arrangement on a chip including data processing, memory, and interface elements | |
| KR100324975B1 (en) | Non-uniform memory access(numa) data processing system that buffers potential third node transactions to decrease communication latency | |
| US6675253B1 (en) | Dynamic routing of data across multiple data paths from a source controller to a destination controller | |
| US5136500A (en) | Multiple shared memory arrangement wherein multiple processors individually and concurrently access any one of plural memories | |
| WO1999016200A2 (en) | Intelligent data bus interface using multi-port memory | |
| JP2007109040A (en) | Information processing unit, information processing system, communication relay unit, and communication control method | |
| JP2008310832A (en) | Apparatus and method for distributing signal from high level data link controller to a plurality of digital signal processor cores | |
| US11730325B2 (en) | Dual mode interconnect | |
| JP3661249B2 (en) | Multiprocessor system | |
| EP1701267B1 (en) | Address snoop method and multi-processor system | |
| US6516343B1 (en) | Computer system and method for enhancing memory-to-memory copy transactions by utilizing multiple system control units | |
| US7073004B2 (en) | Method and data processing system for microprocessor communication in a cluster-based multi-processor network | |
| US8688890B2 (en) | Bit ordering for communicating an address on a serial fabric | |
| CN1318991C (en) | Data transfer unit with support for multiple coherency granules | |
| KR100367084B1 (en) | DMA controller for the high speed image processor at real time | |
| JP3570877B2 (en) | Information processing equipment | |
| US20250013584A1 (en) | Method for interfacing a first data reading/ writing unit with a second data reading/writing unit and interface modules thereof | |
| JP3466728B2 (en) | Information processing system and method | |
| JP3211694B2 (en) | Multiprocessor connection method |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040907 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041108 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050301 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050314 |
|
| LAPS | Cancellation because of no payment of annual fees |