(57)【要約】【課題】プロセッサ間のデータ転送に必要な時間を予め定めた最大時間よりも小さくすることができるマルチプロセッサシステムを提供する。【解決手段】送信を要求する要求信号と要求信号に対する応答信号を伝送する信号用リングバスと、データを伝送するデータ用リングバスと、タイミング信号を伝送するタイミング用リングバスと、タイミング用リングバスに有限のタイミング値からなるタイミング信号を送信するタイミング生成部と、バス制御部をそれぞれ備えた複数のプロセッサとを有し、バス制御部は一のプロセッサからの指示に基づき、要求信号または応答信号を生成して信号用リングバスに送信し、あるいは信号用リングバスから自分宛の要求信号または応答信号を受信し、タイミング用リングバスの前記タイミング信号が、バス制御部を指定する予め定められた値になったとき、データ用リングバスに対してデータの送信または受信を行う。【選択図】　図１
2004086798.tif 000002
【特許請求の範囲】
【請求項１】
送信を要求する要求信号と該要求信号に対する応答信号を伝送する信号用リングバスと、データを伝送するデータ用リングバスと、タイミング信号を伝送するタイミング用リングバスと、該タイミング用リングバスに有限のタイミング値からなる前記タイミング信号を送信するタイミング生成部と、バス制御部をそれぞれ備えた複数のプロセッサとを有し、
前記バス制御部は一のプロセッサからの指示に基づき、前記要求信号または前記応答信号を生成して前記信号用リングバスに送信し、あるいは該信号用リングバスから自分宛の前記要求信号または前記応答信号を受信し、前記タイミング用リングバスの前記タイミング信号が、該バス制御部を指定する予め定められた値になったとき、前記データ用リングバスに対してデータの送信または受信を行うことを特徴とするマルチプロセッサシステム。
【請求項２】
前記プロセッサはそれぞれ、プロセッサ・コアと、該プロセッサ・コア側と前記バス制御部側から独立に読み書きできるデュアルポートメモリと、送信指示内容を格納する送信要求レジスタと、受信指示内容を格納する受信応答レジスタと、前記送信要求レジスタへの書き込みと読み出しに合わせてセットとリセットが行われる送信要求フラグと、前記受信応答レジスタへの書き込みと読み出しに合わせてセットとリセットが行われる受信応答フラグとを有し、
前記バス制御部は、
ランダム書き込みが可能な送信許可ビットを付加した送信指示内容を格納する変則的なＦＩＦＯ構造のメモリで構成され、前記送信要求フラグがセットのとき前記送信要求レジスタに格納されている送信指示内容を前記要求指示内容として格納してから前記送信要求フラグをリセットする送信キューと、
ランダム書き込みが可能なデュアルポートメモリ・アドレスと転送終了ビットを付加した受信指示内容を格納する変則的なＦＩＦＯ構造のメモリで構成され、前記転送終了ビットを順に調べてセットのとき、前記受信応答フラグがリセットならば前記受信応答レジスタに該受信指示内容と該デュアルポートメモリ・アドレスを格納してから前記受信応答フラグをセットする受信キューと、
予め定めた送信タイミング値を記憶する送信制御メモリと、
予め定めた受信タイミング値を記憶する受信制御メモリと、
前記送信キューに格納されている送信指示内容を読み出し、これに基づいて前記要求信号を生成して信号用リングバスへ送信する要求信号送信制御部と、
前記受信キューに格納されている受信指示内容を読み出し、受信したデータを格納するデュアルポートメモリ・アドレスを割り当てて前記受信キューに書き込み、前記応答信号を生成して信号用リングバスへ送信する応答信号送信制御部と、
前記信号用リングバスから前記要求信号を受信したとき前記の受信キューに格納し、また、該信号用リングバスから応答信号を受信したとき前記送信キューの対応する送信許可ビットを許可にする信号受信制御部と、
前記送信キューの送信許可ビットが許可になっているとき、前記送信制御メモリから前記送信タイミング値を知り、タイミング用リングバスのタイミング値が該タイミング値と一致したとき、前記デュアルポートメモリの対応するアドレスからデータ用リングバスへデータを送信するデータ送信制御部と、
前記の受信制御メモリから受信タイミング値を知り、前記タイミング用リングバスのタイミング値が該受信タイミング値と一致したとき、前記データ用リングバスからデータを受信して前記デュアルポートメモリの対応するアドレスに格納し、全てのデータを受信したのち前記受信キューの対応する転送終了ビットをセットするデータ受信制御部とを有することを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記データ用リングバスを、左回り及び右回りにデータが流れる左データ用リングバスと右データ用リングバスとで構成し、データを転送する先のプロセッサまでの距離が近い方のデータ用リングバスを選択するように構成することを特徴とする請求項１または２いずれかに記載のマルチプロセッサシステム。
【請求項４】
前記信号用リングバスを、左回り及び右回りに信号が流れる左信号用リングバスと右信号用リングバスとで構成し、前記要求信号または前記応答信号の宛先のプロセッサまでの距離が近い方の信号用リングバスを選択するように構成することを特徴とする請求項３に記載のマルチプロセッサシステム。
【請求項５】
前記バス制御部に、左信号用リングバスから前記要求信号または前記応答信号を受信したとき、該要求信号または該応答信号を記憶する左バッファと、右信号用リングバスから前記要求信号または前記応答信号を受信したとき、該要求信号または該応答信号を記憶する右バッファとを付加し、
前記送信制御メモリは、送信タイミング値に加えて、前記左信号用リングバスと前記右信号用リングバスのいずれか、または前記左データ用リングバスと前記右データ用リングバスのいずれかを選択するためのバス選択情報を記憶するようにし、
前記受信制御メモリは、受信タイミング値に加えて、前記左信号用リングバスと前記右信号用リングバスのいずれか、または前記左データ用リングバスと前記右データ用リングバスのいずれかを選択するためのバス選択情報を記憶するようにし、
前記要求信号送信制御部は、前記送信制御メモリの前記バス選択情報に基づいて前記左信号用リングバスと前記右信号用リングバスのいずれかを選択してから該選択した信号用リングバスに要求信号を送信するようにし、
前記応答信号送信制御部は、前記受信制御メモリの前記バス選択情報に基づいて前記左信号用リングバスと前記右信号用リングバスのいずれかを選択してから該選択した信号用リングバスに応答信号を送信するようにし、
前記信号受信制御部は、前記左バッファまたは前記右バッファを調べて信号が記憶されていたら該信号に対する処理を行うようにし、
前記データ送信制御部は、前記送信制御メモリの前記バス選択情報に基づいて前記左データ用リングバスと前記右データ用リングバスのいずれかを選択してからデータを送信するようにし、
前記データ受信制御部は、前記受信制御メモリの前記バス選択情報に基づいて前記左データ用リングバスと前記右データ用リングバスのいずれかを選択してからデータを受信するようにしたことを特徴とする請求項４に記載のマルチプロセッサシステム。
【請求項６】
デュアルポートメモリを送信専用と受信専用の２つに分けたことを特徴とする請求項２乃至５いずれか記載のマルチプロセッサシステム。
【請求項７】
デュアルポートメモリの替わりにバス制御部側から同時に読み書きができるような専用レジスタ回路で構成した記憶素子を用いることを特徴とする請求項２乃至５いずれかに記載のマルチプロセッサシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のプロセッサ間でデータを転送する際、プロセッサ間のデータ転送に必要な時間を予め決められた最大時間よりも必ず小さくできるマルチプロセッサシステムに関するものである。
【０００２】
【従来の技術】
複数のプロセッサ間で自由にデータを転送する場合、まず、各々のプロセッサ間にデータを転送する信号線路を設ける方式が考えられる。この方式は、転送が必要になるプロセッサ間には独立した信号線路が存在するため、いつでも自由にデータを転送することができる。しかし、多数のプロセッサを用いて高速にデータ転送を行おうとすると、各プロセッサ間の信号線路の総数が膨大になり、特に複数のプロセッサを１つのＬＳＩに実装する場合には、極めて大きい配線領域が必要になるため、現実的ではない。
【０００３】
そこで、多数のプロセッサに適用できる現実的なマルチプロセッサシステムとして、例えば特開２００１−１５６８１７に記述されるようなリングバスを用いた方式が提案されている。この方式では、リングバスを通じて到来する他のプロセッサからのデータが自分宛てのものであるときに、リングバスからデータを取り込み受信する。一方、他のプロセッサに対してデータを送る場合には、リングバスが空いていることを確認してからデータを送信する。もし、リングバス上に他のデータがある場合には、リングバスが空くまで送信を待つことになる。
【０００４】
【発明が解決しようとする課題】
しかしながら、上述した従来のマルチプロセッサシステムにおいては、データを送信したいときに、リングバスが他のプロセッサ間のデータ転送に使われている場合、リングバスが空くまで待ち時間が必要になる。特に、リングバス上に多くの転送データがあるような状況では、この待ち時間が大きくなり、プロセッサ間の転送に必要な時間を正しく見積もることができず、場合によっては、転送を諦めなければならない状況もあり得るという問題点があった。
本発明は、以上の点を考慮してなされたものであり、プロセッサ間のデータ転送に必要な時間を予め決められた最大時間よりも必ず小さくできるマルチプロセッサシステムを提供することを目的とする。
【０００５】
【課題を解決するための手段】
上記目的を達成するため、本発明は、送信を要求する要求信号と該要求信号に対する応答信号を伝送する信号用リングバスと、データを伝送するデータ用リングバスと、タイミング信号を伝送するタイミング用リングバスと、該タイミング用リングバスに有限のタイミング値からなる前記タイミング信号を送信するタイミング生成部と、バス制御部をそれぞれ備えた複数のプロセッサとを有し、
前記バス制御部は一のプロセッサからの指示に基づき、前記要求信号または前記応答信号を生成して前記信号用リングバスに送信し、あるいは該信号用リングバスから自分宛の前記要求信号または前記応答信号を受信し、前記タイミング用リングバスの前記タイミング信号が、該バス制御部を指定する予め定められた値になったとき、データ用リングバスに対してデータの送信または受信を行うように構成したものである。
【０００６】
【発明の実施の形態】
図１は、本発明のマルチプロセッサシステムの実施の形態を示すブロック図である。図１は、６個のプロセッサ間でデータを転送する場合を示している。図１において、１１１、１１２、１１３、１１４、１１５、１１６はプロセッサ、１２１、１２２、１２３、１２４、１２５、１２６はバス制御部、１３はタイミング生成部、１４は信号用リングバス、１５はデータ用リングバス、１６はタイミング用リングバスである。
【０００７】
図２は、本発明のマルチプロセッサシステムにおけるデータ転送を説明するための図である。図２において、２１１、２１２、２１３、２１４、２１５、２１６は、各バス制御部を含めた各プロセッサ位置を表す。また矢印は、データ転送経路を表し、＜＞内の番号は、そのデータ転送経路でデータを転送するときのタイミング用リングバスのタイミング値を示す。図２において、各データ転送経路の＜＞内の番号は、各プロセッサ位置に対して入力及び出力される全てのデータ転送経路において、番号が重複しないように設定している。なお、これは、各プロセッサ位置において、バス制御部が同時にデータ用リングバスに対して送信と受信をしないことを前提としているためであり、これができるように構成する場合には、各プロセッサ位置に対して入力するデータ転送経路と出力するデータ転送経路とで同じ番号を設定できる。
【０００８】
以下に、図１及び図２を参照しながら、本発明のマルチプロセッサシステムのデータ転送方式の動作について、詳細に説明する。タイミング生成部１３は、巡回的なタイミング値を発生し、タイミング用リングバス１６へ送信する。図２では、タイミング値は、０から７まで１ずつ増えた後で０に戻るような巡回的な値をとることを仮定している。
【０００９】
一例としてプロセッサ１１１とバス制御部１２１を例に、動作を説明する。図２では、プロセッサ位置２１１に対応する。プロセッサ１１１からプロセッサ１１２にデータを転送したい場合、プロセッサ１１１からバス制御部１２１へ要求信号の送信を指示する。バス制御部１２１は、プロセッサ１１１からの指示を受けて要求信号を生成し、信号用リングバス１４の空きを確認してから、信号用リングバス１４へ要求信号を送信する。もし、信号用リングバス１４が他のプロセッサからの信号で空いていなければ、空くのを待ってから送信する。要求信号には、プロセッサ１１２に対応する宛先アドレス、プロセッサ１１１に対応する送信元アドレス、データ長などの情報が含まれている。
【００１０】
バス制御部１２２は、常に信号用リングバス１４を監視しており、自分宛ての要求信号が来たら、それを受信する。そして、バス制御部１２２は、要求信号から情報を抜き出し、データを受信する準備をすると共に、応答信号を生成し、信号用リングバス１４の空きを確認してから、信号用リングバス１４へ応答信号を送信する。もし、信号用リングバス１４が他のプロセッサからの信号で空いていなければ、空くのを待ってから送信する。応答信号には、プロセッサ１１１に対応する宛先アドレス、プロセッサ１１２に対応する送信元アドレス、送信許可を示す情報などが含まれている。
【００１１】
バス制御部１２１は、常に信号用リングバス１４を監視しており、自分宛ての応答信号が来たら、それを受信する。そして、バス制御部１２１は、応答信号から情報を抜き出し、送信許可を示す情報を確認した後で、データの送信を開始する。データは、図２に示すように、タイミング用リングバス１６のタイミング値が予めそのデータ転送経路に対して定められた値と一致したときに、データ用リングバス１５に送信する。この場合は、タイミング値が０のときに、送信することができる。データ長が２以上であれば、次のデータは、タイミング値が一巡して次の０が来たときに送信される。
【００１２】
バス制御部１２２は、タイミング用リングバス１６のタイミング値が０のときに、データ用リングバス１５からデータの受信を行う。データ長が２以上であれば、次のデータは、タイミング値が一巡して次の０が来たときに受信される。そして、要求信号の情報として知ったデータ長分のデータを受信したら、データの受信処理を終了し、プロセッサ１１２へデータの受信が終了したことを知らせる。プロセッサ１１２は、受信したデータを利用して、必要な処理を行うことができる。
【００１３】
本発明のマルチプロセッサシステムでは、信号用リングバス１４への要求信号と応答信号の送信は、信号用リングバス１４の空きを確認してから行う必要がある。しかし、これによりデータ転送のための準備ができると、その後のデータ用リングバス１５への転送は、空きを確認する必要はなく、予め定めたタイミング用リングバス１６のタイミング値だけを条件として実行できる。また、データ用リングバス１５へのデータの送信は、信号用リングバス１４への要求信号及び応答信号の送信とはパイプライン的に重複実行できるため、予め設定した速度でデータの転送を行うことができる。なお、図２では、各データ転送経路でデータを転送できるタイミング値として、全て１つの値のみを設定しているが、複数の値を設定することも可能であり、そうすることで、その経路のデータ転送速度を向上できる。
【００１４】
図３は、本発明のマルチプロセッサシステムにおけるプロセッサ及びバス制御部の構成例の一例を示すブロック図である。図３において、３１はプロセッサ、３２はバス制御部、３１１はプロセッサ・コア、３１２はデュアルポート・メモリ（以下、ＤＰメモリと略す）、３１３は受信応答レジスタ、３１４は送信要求レジスタ、３１５は受信応答フラグ、３１６は送信要求フラグ、３２１は送信キュー、３２２は受信キュー、３２３は送信制御メモリ、３２４は受信制御メモリ、３２５はデータ送信制御部、３２６はデータ受信制御部、３２７は要求信号送信制御部、３２８は応答信号送信制御部、３２９は信号受信制御部である。以下、図３、図１、及び図２を参照しながら、本発明のマルチプロセッサシステムにおけるバス制御部の動作について、詳細に説明する。先の説明と同様に、一例として図１のプロセッサ１１１とバス制御部１２１について説明する。
【００１５】
プロセッサ１１１（図３では、プロセッサ３１に対応する）から、例えば、プロセッサ１１２にデータを転送したい場合、プロセッサ・コア３１１は、送信要求フラグ３１６の状態を調べる。送信要求フラグ３１６は、セットとリセットの２状態を有する１ビットのフラグであり、送信要求があるときにはセット、ないときにはリセットとなる。プロセッサ・コア３１１は、送信要求フラグ３１６がリセットであれば、送信要求レジスタ３１４に、プロセッサ１１２に対応する宛先アドレス、データ長などの要求信号の生成に必要な情報と送信データが格納されているＤＰメモリ・アドレスを格納し、その後、送信要求フラグ３１６をセットする。もし、送信要求フラグ３１６がセットになっていれば、先行する送信要求が未だ処理されていないため、プロセッサ・コア３１１は処理を待たなければならない。
【００１６】
バス制御部１２１（図３では、バス制御部３２に対応する）は、送信要求フラグ３１６を監視し、これがセットになっていたら、送信要求レジスタ３１４の内容を読み出し、送信キュー３２１へ内容を格納し、送信要求フラグ３１６をリセットする。送信キュー３２１は、ランダム書き込みが可能な送信許可ビットを付加した変則的なＦＩＦＯ構造のメモリであり、送信許可ビット以外は、先に格納された内容から順に読み出すことができる。
【００１７】
要求信号送信制御部３２７は、送信キュー３２１から最も先に書き込まれた内容を読み出し、要求信号を生成して、信号用リングバス１４の空きを確認してから、信号用リングバス１４へ要求信号を送信する。もし、信号用リングバス１４が他のプロセッサからの信号で空いていなければ、空くのを待ってから送信する。また、要求信号送信制御部３２７は、送信キュー３２１に読み出す内容がなければ、読み出す内容が格納されるのを待つことになる。
【００１８】
バス制御部１２２（図３では、バス制御部３２に対応する）において、信号受信制御部３２９は、常に信号用リングバス１４を監視しており、自分宛ての要求信号が来たら、これを受信し、内容を受信キュー３２２へ格納する。受信キュー３２２は、ランダム書き込みが可能なＤＰメモリ・アドレスと転送終了ビットを付加した変則的なＦＩＦＯ構造のメモリであり、ＤＰメモリ・アドレスと転送終了ビット以外は、先に格納された内容から順に読み出すことができる。
【００１９】
応答信号送信制御部３２８は、受信キュー３２２の最も先に格納された内容を読み出し、ＤＰメモリ３１２に受信するデータを格納する領域を割り当てることができたら、ＤＰメモリ・アドレスを書き込み、応答信号を生成し、信号用リングバス１４の空きを確認してから、信号用リングバス１４へ応答信号を送信する。もし、信号用リングバス１４が他のプロセッサからの信号で空いていなければ、空くのを待ってから送信する。また、応答信号送信制御部３２８は、データ受信制御部３２６へ、受信したデータを格納するＤＰメモリ・アドレスを通知する。もし、ＤＰメモリ３１２に受信するデータを格納する領域を割り当てることができなかったら、応答信号送信制御部３２８は、処理を待つことになる。
【００２０】
バス制御部１２１（図３では、バス制御部３２に対応する）において、信号受信制御部３２９は、常に信号用リングバス１４を監視しており、自分宛ての応答信号が来たら、これを受信し、応答信号から情報を抜き出し、送信許可を示す情報を確認した後で、送信キュー３２１の対応する送信許可ビットを許可にする。
【００２１】
データ送信制御部３２５は、送信キュー３２１の送信許可ビットを順に読み出し、それが許可になっていたら、送信キュー３２１の対応するＤＰメモリ・アドレスからデータの送信を開始する。もし、送信許可ビットが許可になっていなかったら、データ送信制御部３２５は、処理を待つことになる。データ送信制御部３２５は、送信制御メモリ３２３から、予め定められたデータを送信できる送信タイミング値を知り、タイミング用リングバスのタイミング値がその送信タイミング値と一致したら、データ用リングバス１５に送信する。この場合は、送信制御メモリ３２３には、宛先アドレス１１２に対する送信タイミング値として０が記憶されており、タイミング用リングバス１６のタイミング値が０のときに、送信することができる。データ長が２以上であれば、次のデータは、タイミング値が一巡して次の０が来たときに、次のＤＰメモリ・アドレスから送信される。
【００２２】
バス制御部１２２（図３では、バス制御部３２に対応する）において、データ受信制御部３２６は、受信制御メモリ３２４から送信元アドレス１１１に対する受信タイミング値として０を知り、タイミング用リングバス１６のタイミング値が０のときに、データ用リングバス１５からデータの受信を行い、ＤＰメモリ３１２の応答信号送信制御部３２８から通知されたＤＰメモリ・アドレスへデータを格納する。データ長が２以上であれば、次のデータは、タイミング値が一巡して次の０が来たときに受信され、ＤＰメモリ・アドレスを更新して、ＤＰメモリ３１２へ格納する。そして、要求信号の情報として知ったデータ長分のデータを受信したら、データの受信処理を終了し、受信キュー３２２の対応する転送終了ビットをセットする。
【００２３】
受信キュー３２２は、転送終了ビットを順に調べ、それがセットされていたら、受信応答フラグ３１５の状態を調べる。受信応答フラグ３１５は、セットとリセットの２状態を有する１ビットのフラグであり、受信応答があるときにはセット、ないときにはリセットとなる。受信キュー３２２は、受信応答フラグ３１５がリセットであれば、受信応答レジスタ３１３に、プロセッサ１１１に対応する送信元アドレス、データ長、ＤＰメモリ・アドレスを格納し、その後、受信応答フラグ３１５をセットする。もし、受信応答フラグ３１５がセットになっていれば、先行する受信応答が未だ処理されていないため、受信キュー３２２は処理を待たなければならない。
【００２４】
プロセッサ１１２（図３では、プロセッサ３１に対応する）において、プロセッサ・コア３１１は、受信応答フラグ３１５の状態を調べ、これがセットされていれば、受信応答レジスタ３１３の内容を読み出し、ＤＰメモリ・アドレスとデータ長を用いて、ＤＰメモリ３１２から転送された情報を読む。その後、プロセッサ・コア３１１は、受信応答フラグ３１５をリセットしてから、必要な処理を行うことができる。
【００２５】
図３におけるプロセッサ３１では、送信及び受信したデータを格納するために、ＤＰメモリ３１２を用いているため、送信と受信を同じタイミングで行うことはできない。しかし、送信専用と受信専用のＤＰメモリを別々に設けたり、ＤＰメモリではなく同時に送受信可能な専用回路を設けるなどの工夫をすることにより、送信と受信を同時におこなうことができるようにすることも可能である。この場合、図２の各プロセッサ位置に対して、入力するデータ転送経路と出力するデータ転送経路とで同じ番号を設定できるようになり、データ転送の効率化を図ることができる。
【００２６】
図４は、本発明のマルチプロセッサシステムの第二の実施形態を示すブロック図である。図４は、図１と同様に、例として、６個のプロセッサ間でデータを転送する場合を示している。図４において、４１は左信号用リングバス、４２は右信号用リングバス、４３は左データ用リングバス、４４は右データ用リングバスであり、図１と同じ構成要素には同じ符号が付されている。
【００２７】
図５は、本発明のマルチプロセッサシステムの第二の実施形態におけるデータ転送の様子を説明するための図である。図２と同じ構成要素には同じ符号が付されている。＜＞内の番号は、右データ用リングバスを用いたデータ転送経路でデータを送信及び受信するときのタイミング用リングバスのタイミング値を示す。また、［］内の番号は、左データ用リングバスを用いたデータ転送経路でデータを送信するときのタイミング用リングバスのタイミング値を示し、｛｝内の番号は、左データ用リングバスを用いたデータ転送経路でデータを受信するときのタイミング用リングバスのタイミング値を示す。但し、図５では、タイミング用リングバスは、右データ用リングバスと同じ右回り方向に信号が流れていると仮定している。図５において、各データ転送経路の＜＞、［］、及び｛｝内の番号は、各プロセッサ位置に対して入力及び出力される全てのデータ転送経路において、番号が重複しないように設定している。なお、これは、各プロセッサ位置において、バス制御部が同時にデータ用リングバスに対して送信と受信をしないことを前提としているためであり、これができるように構成する場合には、各プロセッサ位置に対して入力するデータ転送経路と出力するデータ転送経路とで同じ番号を設定できる。
【００２８】
本発明のマルチプロセッサシステムの第二の実施形態では、信号用リングバスとデータ用リングバスを、左回り及び右回りの２つのリングバスに分け、距離的に近い方のリングバスを選択できるようにしたものである。そうすることで、平均的なデータ転送距離が短くなり、転送効率を向上できる。プロセッサ１１１は、例えば、プロセッサ１１２にデータを転送したい場合、バス制御部１２１へ要求信号の送信を指示する。バス制御部１２１は、プロセッサ１１１からの指示を受けて、要求信号を生成し、近い方の右信号用リングバス４２を選択し、右信号用リングバスの空きを確認してから、右信号用リングバス４２へ要求信号を送信する。もし、右信号用リングバス４２が他のプロセッサからの信号で空いていなければ、空くのを待ってから送信する。要求信号には、プロセッサ１１２に対応する宛先アドレス、プロセッサ１１１に対応する送信元アドレス、データ長などの情報が含まれている。
【００２９】
バス制御部１２２は、常に左及び右信号用リングバス４１、４２を監視しており、自分宛ての要求信号が来たら、それを受信する。そして、バス制御部１２２は、要求信号から情報を抜き出し、データを受信する準備をすると共に、応答信号を生成し、近い方の左信号用リングバス４１の空きを確認してから、左信号用リングバス４１へ送信する。もし、左信号用リングバス４１が他のプロセッサからの信号で空いていなければ、空くのを待ってから送信する。応答信号には、プロセッサ１１１に対応する宛先アドレス、プロセッサ１１２に対応する送信元アドレス、送信許可を示す情報などが含まれている。
【００３０】
バス制御部１２１は、常に左及び右信号用リングバス４１、４２を監視しており、自分宛ての応答信号が来たら、それを受信する。そして、バス制御部１２１は、応答信号から情報を抜き出し、送信許可を示す情報を確認した後で、データの送信を開始する。データは、図５に示すように、タイミング用リングバス１６のタイミング値が予めそのデータ転送経路に対して定められた値と一致したときに、近い方の右データ用リングバス４４に送信する。この場合は、タイミング値が０のときに、送信することができる。データ長が２以上であれば、次のデータは、タイミング値が一巡して次の０が来たときに送信される。
【００３１】
バス制御部１２２は、タイミング用リングバス１６のタイミング値が０のときに、右データ用リングバス４４からデータの受信を行う。データ長が２以上であれば、次のデータは、タイミング値が一巡して次の０が来たときに受信される。そして、要求信号の情報として知ったデータ長分のデータを受信したら、データの受信処理を終了し、プロセッサ１１２へデータの受信が終了したことを知らせる。プロセッサ１１２は、受信したデータを利用して、必要な処理を行うことができる。
【００３２】
なお、図４に示した本発明のマルチプロセッサシステムでは、信号用リングバスとデータ用リングバスの両方を左回りと右回りのリングバスに分けたが、データ転送効率に直接的に影響を与えるデータ用リングバスのみを分けることも可能である。また、図５では、各データ転送経路でデータを転送できるタイミング値として、全て１つの値のみを設定しているが、複数の値を設定することも可能であり、そうすることで、その経路のデータ転送速度を向上できる。
【００３３】
図６は、本発明のマルチプロセッサシステムの第２の実施形態におけるプロセッサ及びバス制御部の構成例を示すブロック図である。図６において、６１はバス制御部、６１１は送信キュー、６１２は受信キュー、６１３は送信制御メモリ、６１４は受信制御メモリ、６１５はデータ送信制御部、６１６はデータ受信制御部、６１７は要求信号送信制御部、６１８は応答信号送信制御部、６１９は信号受信制御部、６２０は左バッファ、６２１は右バッファである。図３と同じ構成要素には同じ符号が付されている。
【００３４】
プロセッサ１１１（図６では、プロセッサ３１に対応する）から、例えば、プロセッサ１１２にデータを転送したい場合、プロセッサ・コア３１１は、送信要求フラグ３１６の状態を調べ、これがリセットであれば、送信要求レジスタ３１４に、プロセッサ１１２に対応する宛先アドレス、データ長などの要求信号の生成に必要な情報と送信データが格納されているＤＰメモリ・アドレスを格納し、その後、送信要求フラグ３１６をセットする。もし、送信要求フラグ３１６がセットになっていれば、先行する送信要求が未だ処理されていないため、プロセッサ・コア３１１は処理を待たなければならない。
【００３５】
バス制御部１２１（図６では、バス制御部６１に対応する）は、送信要求フラグ３１６を監視し、これがセットになっていたら、送信要求レジスタ３１４の内容を読み出し、送信キュー６１１へ内容を格納し、送信要求フラグ３１６をリセットする。要求信号送信制御部６１７は、送信キュー６１１から最も先に書き込まれた内容を読み出し、送信制御メモリ６１３の内容を参照して、宛先アドレス１１２に対する近い方の右信号用リングバス４２を選択する。そして、要求信号送信制御部６１７は、要求信号を生成して、右信号用リングバス４２の空きを確認してから、右信号用リングバス４２へ要求信号を送信する。もし、右信号用リングバス４２が他のプロセッサからの信号で空いていなければ、空くのを待ってから送信する。また、要求信号送信制御部６１７は、送信キュー６１１に読み出す内容がなければ、読み出す内容が格納されるのを待つことになる。
【００３６】
バス制御部１２２（図６では、バス制御部６１に対応する）において、左バッファ６２０と右バッファ６２１は、それぞれ、左信号用リングバス４１と右信号用リングバス４２を常に監視している。右バッファ６２１は、自分宛ての要求信号が来たら、これを受信する。信号受信制御部６１９は、左バッファ６２０と右バッファ６２１の状況を常に監視し、右バッファ６２１における要求信号の受信を受けて、この要求信号を受け取り、内容を受信キュー６１２へ格納する。
【００３７】
応答信号送信制御部６１８は、受信キュー６１２の最も先に格納された内容を読み出し、ＤＰメモリ３１２に受信するデータを格納する領域を割り当てることができたら、ＤＰメモリ・アドレスを書き込み、応答信号の宛先アドレス１１１に対する近い方の左信号用リングバス４１を選択する。そして、応答信号送信制御部６１８は、応答信号を生成し、左信号用リングバス４１の空きを確認してから、左信号用リングバス４１へ応答信号を送信する。もし、左信号用リングバス４１が他のプロセッサからの信号で空いていなければ、空くのを待ってから送信する。また、応答信号送信制御部６１８は、データ受信制御部６１６へ、受信したデータを格納するＤＰメモリ・アドレスを通知する。もし、ＤＰメモリ３１２に受信するデータを格納する領域を割り当てることができなかったら、応答信号送信制御部６１８は処理を待つことになる。
【００３８】
バス制御部１２１（図６では、バス制御部６１に対応する）において、左バッファ６２０と右バッファ６２１は、それぞれ、左信号用リングバス４１と右信号用リングバス４２を常に監視している。左バッファ６２０は、自分宛ての応答信号が来たら、これを受信する。信号受信制御部６１９は、左バッファ６２０と右バッファ６２１の状況を常に監視し、左バッファ６２０における応答信号の受信を受けて、この応答信号を受け取り、応答信号から情報を抜き出し、送信許可を示す情報を確認した後で、送信キュー６１１の対応する送信許可ビットを許可にする。
【００３９】
データ送信制御部６１５は、送信キュー６１１の送信許可ビットを順に読み出し、それが許可になっていたら、送信キュー６１１の対応するＤＰメモリ・アドレスからデータの送信を開始する。もし、送信許可ビットが許可になっていなかったら、データ送信制御部６１５は、処理を待つことになる。データ送信制御部６１５は、送信制御メモリ６１３から、予め定められたデータを送信できる送信タイミング値を知り、タイミング用リングバス１６のタイミング値がその送信タイミング値と一致したら、タイミング用リングバス１６に送信タイミング値を送信する。この場合は、送信制御メモリ６１３には、宛先アドレス１１２に対する送信タイミング値として０が記憶されており、タイミング用リングバス１６のタイミング値が０のときに、送信することができる。データ長が２以上であれば、次のデータは、タイミング値が一巡して次の０が来たときに、次のＤＰメモリ・アドレスから送信される。
【００４０】
バス制御部１２２（図６では、バス制御部６１に対応する）において、データ受信制御部６１６は、受信制御メモリ６１４から送信元アドレス１１１に対する受信タイミング値として０を知り、タイミング用リングバス１６のタイミング値が０のときに、データ用リングバス１５からデータの受信を行い、ＤＰメモリ３１２の応答信号送信制御部から通知されたＤＰメモリ・アドレスへデータを格納する。データ長が２以上であれば、次のデータは、タイミング値が一巡して次の０が来たときに受信され、ＤＰメモリ・アドレスを更新して、ＤＰメモリ３１２へ格納する。そして、要求信号の情報として知ったデータ長分のデータを受信したら、データの受信処理を終了し、受信キュー６１２の対応する転送終了ビットをセットする。
【００４１】
受信キュー６１２は、転送終了ビットを順に調べ、それがセットされていたら、受信応答フラグ３１５の状態を調べる。受信キュー６１２は、受信応答フラグ３１５がリセットであれば、受信応答レジスタ３１３に、プロセッサ１１１に対応する送信元アドレス、データ長、ＤＰメモリ・アドレスを格納し、その後、受信応答フラグ３１５をセットする。もし、受信応答フラグ３１５がセットになっていれば、先行する受信応答が未だ処理されていないため、受信キュー６１２は処理を待たなければならない。
【００４２】
プロセッサ１１２（図６では、プロセッサ３１に対応する）において、プロセッサ・コア３１１は、受信応答フラグ３１５の状態を調べ、これがセットされていれば、受信応答レジスタ３１３の内容を読み出し、ＤＰメモリ・アドレスとデータ長を用いて、ＤＰメモリ３１２から転送された情報を読む。その後、プロセッサ・コア３１１は、受信応答フラグ３１５をリセットしてから、必要な処理を行うことができる。
【００４３】
図６におけるプロセッサ３１では、送信及び受信したデータを格納するために、ＤＰメモリ３１２を用いているため、送信と受信を同じタイミングで行うことはできない。しかし、送信専用と受信専用のＤＰメモリを設ける、あるいは、ＤＰメモリではなく同時に送受信可能な専用レジスタ回路を設けるなどの工夫をすることにより、送信と受信を同時におこなうことができるようにすることも可能である。この場合、図５の各プロセッサ位置に対して、入力するデータ転送経路と出力するデータ転送経路とで同じ番号を設定できるようになり、データ転送の効率化を図ることができる。
【００４４】
以上、マルチプロセッサシステムの実施形態について説明したが、本発明は、上述したような実施形態に限定されるものではなく、他にも、本発明の主旨を逸脱しない範囲で、様々な変形実施可能であることは勿論である。
【発明の効果】
以上詳細に説明したように、本発明によれば、データ用リングバスを用いたデータの転送は、予め定めたタイミング用リングバスのタイミング値のみを条件に実行できるため、予め設定した速度でデータの転送を行うことができ、プロセッサ間のデータ転送に必要な時間を予め定めた最大時間よりも必ず小さくできるマルチプロセッサシステムを提供することができる。
【図面の簡単な説明】
【図１】本発明のマルチプロセッサシステムの第一の実施形態を示すブロック図である。
【図２】本発明のマルチプロセッサシステムの第一の実施形態におけるデータ転送の様子を説明するための図である。
【図３】本発明の第１の実施形態のマルチプロセッサシステムにおけるプロセッサ及びバス制御部の第一の構成例を示すブロック図である。
【図４】本発明のマルチプロセッサシステムの第二の実施形態を示すブロック図である。
【図５】本発明のマルチプロセッサシステムの第二の実施形態におけるデータ転送の様子を説明するための図である。
【図６】本発明の第２の実施形態のマルチプロセッサシステムにおけるプロセッサ及びバス制御部の第二の構成例を示すブロック図である。
【符号の説明】
１１１、１１２、１１３、１１４，１１５、１１６：プロセッサ、１２１、１２２、１２３、１２４、１２５、１２６：バス制御部、１３：タイミング生成部、１４：信号用リングバス、１５：データ用リングバス、１６：タイミング用リングバス、２１１、２１２、２１３、２１４、２１５、２１６：プロセッサ位置、３１：プロセッサ、３２：バス制御部、３１１：プロセッサ・コア、３１２：デュアルポート・メモリ、３１３：受信応答レジスタ、３１４：送信要求レジスタ、３１５：受信応答フラグ、３１６：送信要求フラグ、３２１：送信キュー、３２２：受信キュー、３２３：送信制御メモリ、３２４：受信制御メモリ、３２５：データ送信制御部、３２６：データ受信制御部、３２７：要求信号送信制御部、３２８：応答信号送信制御部、３２９：信号受信制御部、４１：左信号用リングバス、４２：右信号用リングバス、４３：左データ用リングバス、４４：右データ用リングバス、６１：バス制御部、６１１：送信キュー、６１２：受信キュー、６１３：送信制御メモリ、６１４：受信制御メモリ、６１５：データ送信制御部、６１６：データ受信制御部、６１７：要求信号送信制御部、６１８：応答信号送信制御部、６１９：信号受信制御部、６２０：左バッファ、６２１：右バッファ
【図１】
2004086798.tif 000003
【図２】
2004086798.tif 000004
【図３】
2004086798.tif 000005
【図４】
2004086798.tif 000006
【図５】
2004086798.tif 000007
【図６】
2004086798.tif 000008