JP3641834B2 - 並列プロセッサシステムおよびそれに適したパケット廃棄方法 - Google Patents
並列プロセッサシステムおよびそれに適したパケット廃棄方法 Download PDFInfo
- Publication number
- JP3641834B2 JP3641834B2 JP05340694A JP5340694A JP3641834B2 JP 3641834 B2 JP3641834 B2 JP 3641834B2 JP 05340694 A JP05340694 A JP 05340694A JP 5340694 A JP5340694 A JP 5340694A JP 3641834 B2 JP3641834 B2 JP 3641834B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- reception
- reception buffer
- instruction
- main memory
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
Description
【0001】
【産業上の利用分野】
本発明は並列プロセッサシステムに関わり、特にプロセッサユニット間パケット転送の受信制御において受信バッファに空き領域がない場合に、他のパケット転送を妨げないように制御可能な受信制御に好適な並列プロセッサシステムに関する。
【0002】
【従来の技術】
一般に並列プロセッサシステムのネットワークにおいては、完全クロスバスイッチネットワークで構成すれば最小のスイッチ段数で任意のプロセッサユニット間で転送が可能であるが、プロセッサユニット数が増えてくれば完全クロスバスイッチネットワークを構成するのは困難になる。このため多段スイッチネットワークで構成される場合が多い。
【0003】
ネットワーク内のルーティング方式では、電子情報通信学会論文誌DーI VOL.J75ーDーI No.8の”並列計算機AP1000における相互結合網のルーチング方式”、第600ページから第606ページに記載されているように、ストアアンドフォワードに比較し、レイテンシィが小さいワームホールルーティングを採用される場合が多い。このワームホームルーティングは、転送に先だって全ての経路を確保しない。ある経路(スイッチ)においてパケットの先頭からパケットの終りが通り抜ける間だけ、経路を確保する。
【0004】
並列プロセッサシステムのパケット受信制御方式では、情報処理学会論文誌VOL.34 No.4の”高速メッセージハンドリング機構”、第638ページから第646ページに記載されている。ここでは、各プロセッサユニットにリングバッファを構成し、非同期的なメッセージ受信に対応している。このリングバッファはベースレジスタ(BASE)、ライトポインタ(WTP)、リードポインタ(RDP)で管理する。BSAEはリングバッファの先頭アドレスを示す。WTPは次に受信されるデータが書き込まれるアドレスを示す。RDPはCPUが現在アクセス中のアドレスを示す。CPUはRDPに対して任意の値を書き込むことができる。
【0005】
リングバッファに空き領域がないことは、WTPとRDPが同じ値であることで判別する。もし同じ値であった場合、CPUに割り込みを発生し、リングバッファに空き領域ができるまで受信を停止する。
【0006】
【発明が解決しようとする課題】
上記従来技術では、リングバッファに空き領域がない場合、CPUに割り込みを発生し、リングバッファに空き領域ができるまで受信を停止する。受信を停止した以降、そのプロセッサユニットに到着したパケット処理については言及されていない。しかし受信の停止が到着したパケットをプロセッサユニットの入り口で待たす場合、パケットはネットワークに滞留したままになる。またワームホールルーティングではそのパケットが経路を確保したまま待たされる。
【0007】
従来技術では上記の点について配慮がされておらず、他のプロセッサユニット間のパケットを転送する場合で、かつそのパケットの経路が受信の停止のために滞留したパケットの経路を使用する場合では経路が使用できない。このため経路が使用できるまで、他のプロセッサユニット間のパケットはその経路の入り口で待たされる。パケット転送が頻繁に行なわれる状況では、これにより多数のプロセッサユニット間転送が妨げられるという問題がある。
【0008】
また受信したパケットを受信バッファに書き込む場合において、その書き込みに関係する回路およびソフトウェア処理などに障害が発生し、パケットの書き込みができなくなった場合でも、そのパケットが使用する経路は他のパケット転送で使用できなくなる。この場合においても多数のプロセッサユニット間転送が妨げられるという問題がある。
【0009】
本発明の目的は、受信バッファの空き領域が直に確保されない場合に、長時間受信を保留するのを防ぐデータ受信方法、およびそれに適した並列プロセッサシステムを提供することにある。
【0010】
また本発明の目的は、受信処理において障害発生によりパケット受信ができない場合に、多数のプロセッサユニット間のパケット転送が妨げられないように動作できる並列プロセッサシステムを提供することにある。
【0011】
【課題を解決するための手段】
上記目的は、受信バッファに空き領域がない場合に、それ以降にそのプロセッサユニットに到着したパケットを廃棄するように動作させることにより達成される。受信パケットの廃棄指示は、受信バッファ領域に空き領域がない場合はソフトウェアで、障害を検出した場合はハードウェアで行なう。廃棄指示が行なわれた場合の動作は、それ以降に受信したパケットが対応する受信バッファ領域に受信されるパケットである場合に、そのパケット全てについて廃棄する。また受信バッファ領域の空き領域が確保できた場合はソフトウェアにより廃棄指示の取消を行なう。
【0012】
このため各プロセッサユニットのネットワーク受信処理を行なう受信制御ユニットにおいて、主記憶上に構成される受信バッファ領域を管理するための、受信バッファ領域の先頭アドレスを示すベースレジスタ(RBR)、受信バッファ領域の未使用領域の先頭を示し、受信したパケットを書き込むアドレスを示すヘッダポインタレジスタ(RHPR)、受信バッファ領域の未使用領域の終端を示すテイルポインタレジスタ(RTPR)、受信バッファ領域のサイズを示すサイズレジスタ(RSR)、RBR、RHPR、RTPR、RSRを管理し、パケットを受信した場合に受信バッファ領域に書き込むためのアドレスを生成し、また受信バッファ領域に空き領域がないことを検出する受信バッファポインタ制御、命令を実行する命令プロセッサから受信制御ユニットをアクセスする場合のアクセス制御や受信処理に関係する割り込み生成を行なう命令プロセッサアクセス制御、ネットワークから届いたパケットを一時的に格納するFIFO、FIFOの読みだし/書き込み制御を行なうFIFO制御、命令プロセッサからセット/リセットが行なえる廃棄指示ビット(SC)、廃棄指示ビットと受信バッファポインタ制御から受信したパケットを受信バッファ領域に書き込むか、書き込みを待たせるか、あるいは廃棄するかを判定する受信パケット廃棄判定、および受信したパケットを受信バッファ領域に書き込む制御を行なう受信制御を設ける。
【0013】
【作用】
主記憶上に構成される受信バッファ領域を管理するためのRBR、RHPR、RTPR、RSRは命令プロセッサアクセス制御を介して命令プロセッサにより初期化される。ネットワークから送られてきたパケットはFIFO制御に従い、FIFOに格納される。FIFO制御はFIFOにデータが入っていることを受信制御に報告する。
【0014】
受信パケット廃棄判定では、廃棄指示ビットで保持されている内容と、受信バッファポインタ制御から受信バッファ領域に空きがあるか否かの内容により、次のように判定し、受信制御に指示する。廃棄指示ビットが廃棄を指示しているのならば、受信したパケットを受信バッファ領域に書き込まず、受信したパケットを廃棄することを指示する。廃棄指示ビットが廃棄を指示していないならば、受信バッファ領域に空きがあるかを判定し、空きがあれば受信したパケットを受信バッファ領域に書き込みが可能であることを指示する。また空きがなければ受信バッファ領域に書き込まず、受信した状態のまま待つことを指示する。さらに障害を検出した場合は、受信したパケットを廃棄することを指示する。
【0015】
受信制御ではFIFO制御からパケットを受信したことの報告を受けると、まず受信パケット廃棄判定の指示に従う。受信バッファ領域に書き込み可能であることを指示している場合は、受信制御がパケットを書き込むための受信バッファアドレスを受信バッファポインタ制御から読み出す。受信制御ではパケットヘッダをFIFOからパケットを読み出す。そのパケットヘッダで示される転送データ長に従い、転送データをFIFOから読み出しながら、そのパケットを主記憶上に構成される受信バッファ領域に書き込む。受信したパケットの受信バッファ領域への書き込みが終了すれば、受信制御は受信バッファポインタ制御に報告する。
【0016】
受信バッファポインタ制御では受信パケットの書き込み終了の報告があると、RHPRを更新し、受信バッファ領域に空き領域があるかないかをチェックする。もし受信バッファ領域に空き領域がなければ命令プロセッサアクセス制御を介して命令プロセッサに割り込みを発生する。また受信パケット廃棄判定にも報告する。
【0017】
受信パケット廃棄判定が受信した状態のまま待つことを指示している場合は、受信制御ではパケットが到着しても受信処理を行なわない。即ち到着したパケットは受信処理が行なわれず、ネットワークに滞留したままになる。
【0018】
受信パケット廃棄判定が受信したパケットを廃棄することを指示している場合は、受信制御ではFIFO制御を介してFIFOからパケットを読みだし、パケットヘッダに示されている転送データ長に従い、転送データ長分だけ転送データをどこにも書き込まず、読み捨てる。即ちこの処理では命令プロセッサで実行されているソフトウェアからはパケットが受信されていないようにみえる。
【0019】
これにより受信バッファ領域に空き領域がない場合に、ソフトウェアの指示でそれ以降にそのプロセッサユニットに到着したパケットを廃棄することができ、ネットワーク上の他プロセッサユニット間のパケット転送が妨げない。
【0020】
【実施例】
以下、本発明の一実施例を図1を用いて説明する。図1は本発明の並列プロセッサシステムの構成の一実施例である。ここでの並列プロセッサシステムは複数のプロセッサユニット101(以下PUと呼ぶ)が任意のプロセッサユニット間でデータ転送が可能なネットワーク102に接続される。尚、本図ではPUは2台のみ示し、その他は省略している。
【0021】
PU101は、命令を実行する命令プロセッサ(以下命令プロセッサと呼ぶ)111、命令プロセッサ111の指示によりパケットを生成しネットワーク102にパケットを送信する送信制御ユニット112、ネットワーク102から到着したパケットの受信処理を行なう受信制御ユニット113、命令プロセッサ111、送信制御ユニット112、受信制御ユニット113からの要求に応じて主記憶115のアクセス制御を行なう主記憶制御ユニット114、および命令プロセッサが実行する命令やデータを記憶する主記憶115から構成される。
【0022】
また受信制御ユニット113は、主記憶115上に構成される受信バッファ領域150を管理するためのベースレジスタ131(RBR)、ヘッダポインタレジスタ132(RHPR)、テイルポインタレジスタ133(RTPR)、サイズレジスタ134(RSR)、RBR131、RHPR132、RTPR133、RSR134を管理し、パケットを受信した場合に受信バッファ領域150に書き込むためのアドレスを生成し、また受信バッファ領域150に空き領域がないことを検出する受信バッファポインタ制御135、命令プロセッサ111から受信制御ユニット113をアクセスする場合のアクセス制御や受信処理に関係する割り込み生成を信号165を介して行なう命令プロセッサアクセス制御136、ネットワーク102から届いたパケットを一時的に格納するデータレジスタ群であるFIFO137、FIFO137の読みだし/書き込みアドレスの制御を行なうFIFO制御138、命令プロセッサアクセス制御136を介して命令プロセッサ111からセット/リセットが行なえる廃棄指示ビット(SCと呼ぶ)139、SC139と受信バッファポインタ制御135から受信したパケットを受信バッファ領域150に書き込むか否か、あるいは廃棄するかを判定する受信パケット廃棄判定140、および受信したパケットを受信バッファ領域150に書き込むための制御を行なう受信制御141から構成される。
【0023】
ここで主記憶115上に構成される受信バッファ領域150の構成例を図3に示す。ベースレジスタ131(RBR)は受信バッファ領域150の先頭アドレスを示す。ヘッダポインタレジスタ132(RHPR)は、受信バッファ領域150の未使用領域の先頭を示し、受信したパケットの書き込むアドレスを示す。またRHPR132はパケットを受信する毎に受信バッファポインタ制御135が更新される。テイルポインタレジスタ133(RTPR)は受信バッファ領域150の未使用領域の終端を示し、命令プロセッサにより任意の値が書き込まれる。サイズレジスタ134(RSR)は受信バッファ領域150のサイズを示す。
【0024】
また受信バッファポインタ制御135の構成例を図16に示す。受信バッファポインタ制御135は、RHPR132の出力とRTPR133の出力を比較し、受信バッファ領域150に空き領域がないことを検出する空き領域チェック回路1601、RHPR132の出力とパケット長を加算し、次の受信バッファ領域を決定するRHPR加算器1602、RBR131の出力とRSR134の出力を加算し、受信バッファ領域の最終端を求める再終端加算器1603、再終端加算器の出力1610とRHPR132の出力を比較し、RHPR132で保持するアドレスが受信バッファの再終端にあることをチェックするRHPRラップアラウンドチェック回路1604、命令プロセッサアクセス制御136および受信制御141からのRHPR132の更新要求に従い、セレクタ1607を制御し、RHPR132の更新データを決定するRHPR更新制御回路1605、および命令プロセッサアクセス制御136からの更新要求に従い、RBR131、RTPR133、RSR134の更新を行なう受信バッファ領域レジスタ更新制御回路1606から構成される。本発明においては送受信処理を行なう前にOSがRBR131、RHPR132、RTPR133、RSR134の初期設定を行なう。具体的には命令プロセッサ111が信号線165を介して命令プロセッサアクセス制御136に要求する。命令プロセッサアクセス制御136は、その要求を解読し、信号線1611を介してRHPR更新回路1605あるいは受信バッファ領域更新制御回路1606に要求する。それぞれの回路ではその要求に従い、対応するレジスタを更新する。また受信制御141からのRHPR132の更新要求は信号228を介して行なわれ、RHPR更新回路1605がRHPRラップアラウンドチェック回路1604の出力である信号1613によりセレクタ1607を制御し、更新する。RHPR更新回路1605では信号1614がRHPR132で保持するアドレスが受信バッファの再終端にあることを示している場合はRBR131の出力をセレクタ1607により選択し、それをRHPR132に設定する。一方、再終端でないことを示している場合はRHPR加算器1602の出力をセレクタ1607により選択し、それをRHPR132に設定する。またRHPR更新回路1605ではRHPR132を更新した後、空き領域チェック回路1601の出力である信号1615が空き領域がないことを示している場合は信号1620により命令プロセッサアクセス制御136を介して命令プロセッサ111に割り込みを発生する。尚、本発明においてはパケットサイズは任意のサイズでよいが説明を簡単にするために、ここではパケットサイズを固定値としている。
【0025】
次にソフトウェアの送受信処理の動作について説明する。まず本発明における基本的なプロセッサユニット間のパケット転送の送受信方法の一実施例を図10を用いて説明する。本発明では、送信PUで動作する送信ユーザアプリケーション1000が送信要求を行なうと、オペレーティングシステム(以下OSと呼ぶ)1001はOS空間内の送信バッファ領域1002にユーザアプリケーションから指定された送信データ1003をコピーする。そしてOS1001はコピーした送信バッファ領域1002のアドレスを送信制御ユニット112に渡す。送信制御ユニット112は、与えられた送信バッファ領域150のアドレスから転送データを読みだし、パケットを生成し、ネットワーク102に送出する。ネットワーク102ではパケットを目的の受信PUに転送する。受信PUの受信制御ユニット113はパケットを受信すると、そのパケットをOS空間内の受信バッファ領域150に書き込む。一方、受信ユーザアプリケーション1004では受信データを要求すると、受信PUのOS1005が受信バッファ領域150を検索し、受信ユーザアプリケーション1004が要求する受信データが届いている場合は受信ユーザアプリケーション1004の受信領域1006にコピーする。以上のようにユーザアプリケーションの送受信領域からOS空間内の送受信バッファ領域を介して送受信処理が行なわれる。
【0026】
次に送信処理について図11を用いて説明する。送信PUで動作するユーザアプリケーションが送信を行なう場合は、受信PU番号、送信データアドレスによりOSに送信要求を行なう(1100)。OSはその要求に従い、OS空間内の送信バッファ領域1002にユーザアプリケーションから指定された送信データ1003をコピーする(1101)。そしてOSは、受信PU番号と、コピーした送信バッファ領域1002のアドレスを送信制御ユニット112に渡す(1102)。そしてOSはOS空間内に送信完了待ちキューを構成し、そのキューに送信要求が行なわれた受信PU番号と送信バッファ領域アドレスを登録し、送信処理を終え、ユーザアプリケーションに制御を戻す(1103)。ここで送信完了待ちキューは、受信PUが転送データを受信したことの報告(以下、ACKパケットと呼ぶ)があった時に、そのキューから削除される。
【0027】
次に受信処理について図12を用いて説明する。受信PUで動作するユーザアプリケーションが受信を行なう場合は、送信PU番号、受信領域アドレスによりOSに受信要求を行なう(1201)。OSはその要求に従い、OS空間内の受信バッファ領域150を検索(1202)し、ユーザアプリケーションから指定された送信PU番号に対応するパケットが届いているかをチェックする(1203)。チェックの結果、未だ届いていないならばOSが管理する受信待ちキューにユーザアプリケーションから指定された送信PU番号、受信領域アドレスを登録する(1209)。そして受信要求を行なったユーザアプリケーションとは異なる他のユーザアプリケーションに制御を渡す(1210)。この受信待ちキューは、他のプロセッサユニットから転送データを受信した場合に、OSが検索し、受信待ちキューに登録されているパケットを受信した場合は、OSがその受信待ちキューの受信領域アドレスに従い、受信領域1006に書き込むために用いる。詳細は後述する。
【0028】
またユーザアプリケーションから指定された送信PU番号に対応するパケットが届いているならばOS空間内の受信バッファ領域に格納されたパケットをユーザアプリケーションの受信領域にコピーする(1204)。そしてユーザアプリケーションが受信したことを送信側に報告するために、転送データ内に格納されている送信PU番号をもとにACKパケットを生成し、送信PUに転送する(1205)。またOS空間内の受信バッファ領域150からユーザアプリケーションの受信領域1006にコピーが行なわれたOS空間内の受信バッファ領域アドレスを記憶する(1206)。これはOS空間内の受信バッファ領域150に空き領域がない場合に、記憶したアドレスを受信バッファ領域150として利用するために行なう。OSは受信バッファ領域150に空き領域を作成するために、コピーした受信バッファ領域150までRTPR133を更新する(1207)。
【0029】
OSが受信バッファ領域150に空きがなく、受信制御ユニット113に対して廃棄指示を行なっているかをチェックする(1208)。もし廃棄指示を行なっているならば、廃棄指示ビットを廃棄とせず、受信するように設定し(1209)、ユーザアプリケーションに制御を渡す。またもし廃棄指示を行なっていないならば、そのままユーザアプリケーションに制御を渡す。
【0030】
尚、本実施例では、受信した各パケットは受信バッファ領域150内のアドレスが連続した領域に書き込まれるような、受信バッファ領域150が構成されている。このためOSが受信バッファ領域150に空き領域を作成するために、コピーした受信バッファ領域150までRTPR133を更新する(1207)場合では、上記処理においてユーザアプリケーションの受信領域1006にコピーが行なわれたOS空間内の受信バッファ領域アドレスが、RTPR133に連続するアドレスであった場合のみ更新するように処理する。
【0031】
次にOSのパケット受信処理について図13を用いて説明する。OSがパケットの到着を割り込みにより知ると、まずRHPR132で示されるアドレスを読み出し、そのアドレスの1つ手前の受信バッファ領域から受信したパケットを読み出す(1300)。読み出したパケットが受信確認用のACKパケットであるかを判定する(1301)。この確認にはたとえばパケット内の転送データ405にACKパケットであることの情報を付加し、それにより確認すればよい。ACKパケットであるならば、読み出したパケットの送信PU番号から送信待ちキューに登録されている送信PU番号と送信バッファ領域アドレスを削除する(1302)。そしてOSは、受信バッファ領域150からACKパケットを読み出したアドレスを記憶し(1303)、ユーザアプリケーションに制御を渡す。これはOS空間内の受信バッファ領域150に空き領域がない場合に、記憶したアドレスを受信バッファ領域150として利用するために行なう。
【0032】
また読み出したACKパケットでなければ、読み出したパケットの送信PU番号から受信待ちキューに保持されている送信PU番号を検索し(1304)、受信待ちキュー内に対応する送信PU番号があるかをチェックする(1305)。検索した結果、対応する送信PU番号がないならばユーザアプリケーションに制御を渡す。また対応する送信PU番号があるならば、読み出したパケットを受信待ちキューで指定される受信領域にコピーする(1306)。読み出したパケットで保持されている送信PUに従い、そのPUに対してパケットを受信したことを伝えるためにACKパケットを送り返す(1307)。次にOSは、受信バッファ領域150からコピーしたアドレスを記憶する(1308)。そして読み出したパケットの送信PU番号に対応する受信待ちキューに登録されている送信PU番号と受信領域アドレスを削除する(1309)。そしてOSは、受信領域にコピーしたユーザアプリケーションに制御を渡す。以上のようにしてユーザアプリケーションおよびOSは送受信処理を行なう。
【0033】
次にプロセッサユニット間のパケット転送のハードウェア動作について図を用いて説明する。図1においてパケットの送信処理では、命令プロセッサ111が送信制御ユニット112に対して信号線163を介して受信PU番号と送信バッファ領域アドレスを渡す。送信制御ユニット112はパケットを生成し、信号線161を介してネットワーク102に送信する。ここで送信制御ユニット112は、例えば図4に示すようなパケットを生成する。ここでのパケットはパケットを受信するプロセッサユニットを示す受信PU番号401、パケットで転送するデータの長さを示す転送データ長402、パケットを送信したプロセッサユニットを示す送信PU番号403、転送されたパケットの種別を示すパケットタイプ404、および転送データ405から構成される。ネットワーク102では、パケットのヘッダに従い、目的のPU101にパケットを転送する。
【0034】
一方、受信処理においては、ネットワークが目的のPU101にパケットを転送する場合、まずパケットを信号162を介してFIFO137に格納する。このときFIFO制御138はFIFO137の読み出しアドレスと書き込みアドレスを制御し、FIFO137にデータがあり、それ以上書き込めないことをチェックする。もし書き込めない場合は、ネットワークに信号162を介して伝える。この場合ネットワークはFIFO制御138から上記書き込めることの報告があるまで待つことになる。ここでFIFO137に書き込めなくなってから、書き込めるようになるには受信制御141がFIFO137に格納されているパケットを読み出すことにより行なわれる。
【0035】
そしてFIFO制御138はFIFO137にデータが入っていることを信号線221を介して受信制御141に報告することにより受信制御ユニット113が受信処理を開始する。この受信処理において、まず受信パケット廃棄判定140が、図15に示すようにSC139で保持されている内容と、受信バッファポインタ制御135から受信バッファ領域150に空きがあるか否かの内容により、以下のように信号を出力する。即ち受信パケット廃棄判定140では、(1)SC139の出力信号171が廃棄を指示していないならば、受信バッファ領域150に空きがあるかを判定し、空きがあれば受信したパケットを受信バッファ領域150に書き込みが可能である場合は信号226をアサートする。(2)また空きがなく、受信した状態のまま待つ場合は信号227をアサートする。(3)SC139の出力信号171が廃棄を指示しているのならば、受信したパケットを受信バッファ領域150に書き込まず、受信したパケットを廃棄する場合は信号225をアサートする。
【0036】
以下、受信パケット廃棄判定140の指示(1)〜(3)についての受信処理方法を以下に説明する。ここで受信処理を行なう前には、受信バッファ領域150を管理するためのRBR131、RHPR132、RTPR133、RSR134が命令プロセッサ111により初期化されている。
【0037】
(1)受信パケット廃棄判定140が受信バッファ領域150に書き込み可能であることを指示している場合について説明する。
【0038】
ネットワーク102から送られてきたパケットはFIFO制御138に従い、FIFO137に格納される。ただしFIFO137の容量によりパケット全てのデータがFIFO137に格納されるとは限らない。FIFO137に入り切らない場合はネットワーク101にパケットの残りが存在する。FIFO制御138はFIFO137にデータが入っていることを信号線221を介して受信制御141に報告する。
【0039】
受信制御141では図2に示すように、まずレジスタ書き込み制御201は、FIFO制御138からFIFO137にデータが入っていることを信号221により報告を受けると、信号224によりデータを読み出し、パケットヘッダレジスタ203に格納する。
【0040】
パケットヘッダレジスタ203に設定を終えると、レジスタ書き込み制御回路201は信号253によりパケット書き込み保留回路260に報告する。その報告によりパケット書き込み保留回路260では、受信バッファ領域150に書き込み可能であることを指示し、空きがなく受信した状態のまま待つことを示してないことにより、受信パケット廃棄判定140の出力信号227がアサートされないため、主記憶書き込みリクエスト生成回路202に対して信号261を介して、受信したパケットを主記憶に書き込むことの開始指示を行なう。
【0041】
主記憶書き込みリクエスト生成回路202では、受信バッファポインタ制御135が出力する信号228を介してパケットを書き込むための受信バッファアドレスを読み出し、信号232によりバッファアドレスレジスタ207に設定する。また主記憶書き込みリクエスト生成回路202は、パケットヘッダレジスタ203に格納された転送データ長を信号線234を介して読み出す。そして信号線233によりセレクタ209を制御し、転送データ長レジスタ210に設定する。
【0042】
次に主記憶書き込みリクエスト生成回路202ではバッファアドレスレジスタ207に従い、まずパケットヘッダレジスタ203に格納されている内容を主記憶115に書き込む。この書き込みにおいて主記憶書き込みリクエスト生成回路202では、信号236により主記憶115の書き込みデータ231として、パケットヘッダレジスタ203の出力をセレクタ205で選択する。主記憶115への書き込みアドレス229は、バッファアドレスレジスタ207の内容が出力される。また主記憶書き込みリクエスト生成回路202は、主記憶制御ユニット114へのリクエスト信号230を信号252によりアドレス229/データ231と同時に出力する。ここでAND回路251は、受信バッファ領域150に書き込み可能であることを指示していることにより、受信パケット廃棄判定140の出力信号225がアサートされないため主記憶書き込みリクエスト信号252をそのまま主記憶制御ユニット114にリクエスト信号230として出力する。
【0043】
リクエスト信号230を主記憶制御ユニット114へ出力すると主記憶書き込みリクエスト生成回路202は、バッファアドレスレジスタ207を信号232を介してパケットヘッダの大きさ分だけ加算器208により更新する。ここではパケットヘッダの受信PU番号、転送データ長などはそれぞれ4バイトで構成され、加算器208によりバッファアドレスレジスタ207の内容に4が4回加算される。主記憶制御ユニット114には、その回数分だけ主記憶アドレス229、主記憶リクエスト230および主記憶データ231が生成される。
【0044】
次に主記憶書き込みリクエスト生成回路202では更新されたバッファアドレスレジスタ207に従い、転送データを主記憶115に書き込む。この書き込みにおいて主記憶書き込みリクエスト生成回路202ではパケット書き込み保留回路260、レジスタ書き込み制御回路201を介して信号224によりデータを読み出し、データレジスタ204に格納する。そして主記憶書き込みリクエスト生成回路202は、セレクタ205を信号線236によりデータレジスタ204の出力235を選択し、転送データレジスタ204の内容は主記憶書き込みデータ231として、主記憶書き込みリクエスト230および主記憶アドレス229と共に主記憶制御ユニット114に出力する。ここでAND回路251は、受信バッファ領域150に書き込み可能であることを指示していることにより、受信パケット廃棄判定140の出力信号225がアサートされないため、主記憶書き込みリクエスト信号252をそのまま主記憶制御ユニット114に信号230により出力する。
【0045】
ここでは転送データは4バイト単位で送信PUから送信され、主記憶書き込みリクエスト生成回路202が主記憶制御ユニット114に主記憶書き込みリクエスト252を出力する毎に、主記憶書き込みリクエスト生成回路202がバッファアドレスレジスタ207を4づつ加算器208により加算する。また同様に転送データ長レジスタ210を4づつ減算器211により減算する。主記憶書き込みリクエスト生成回路202は、転送データ長レジスタ210が0になるまで上記処理を繰り返す。転送データ長レジスタ210が0であるかは、0比較212が検出する。
【0046】
主記憶書き込みリクエスト生成回路202では、0比較212により受信したパケットについて転送データ全てを主記憶に書き込んだことを認識する。また受信バッファアドレス更新リクエスト回路350は、受信バッファ領域150に書き込み可能であることを指示していることにより、受信パケット廃棄判定140の出力信号226がアサートされているため、0比較212が0になったことで信号228により受信バッファポインタ制御135に1つのパケットの受信処理を終えたことを報告する。
【0047】
受信バッファポインタ制御135では、信号228によりRHPR132を更新する。そして受信バッファ領域150に空き領域があるかないかをチェックする。もし受信バッファ領域150に空き領域があるのであれば、受信パケット廃棄判定140に報告する。もし受信バッファ領域150に空き領域がなければ信号1520を介して命令プロセッサアクセス制御136に報告する。命令プロセッサアクセス制御136は、信号165を介して命令プロセッサ111に割り込みを発生する。また同時に信号1512を介して受信パケット廃棄判定140にも報告する。
【0048】
(2)受信パケット廃棄判定140がSC139の出力信号171が廃棄を指示されてなく、受信バッファ領域150に空きがなく受信した状態のまま待つことを指示している場合について説明する。
【0049】
まずレジスタ書き込み制御回路201は、FIFO制御138からFIFO137にデータが入っていることを信号221により報告を受けると、受信パケット廃棄判定140が受信バッファ領域150に書き込み可能であることを指示している場合と同様に、FIFO制御138を介して信号224によりデータを読み出し、パケットヘッダレジスタ203に格納する。
【0050】
パケットヘッダレジスタ203に設定を終えると、レジスタ書き込み制御回路201は信号253によりパケット書き込み保留回路260に報告する。その報告によりパケット書き込み保留回路260では、空きがなく受信した状態のまま待つことを示していることにより受信パケット廃棄判定140の出力信号227がアサートされているため、主記憶書き込みリクエスト生成回路202に対して信号261を介して、受信したパケットを主記憶に書き込むことの開始指示を行なわない。
【0051】
この主記憶書き込みリクエスト生成回路202では、パケット書き込み保留回路260が書き込み開始指示を行なわないため何も動作しない。パケット書き込み保留回路260ではこの状態で、命令プロセッサ111からの指示があるまでまで待つ。これは予め受信バッファポインタ制御135が受信バッファ領域150に空き領域がなく、命令プロセッサアクセス制御136を介して命令プロセッサ111に割り込みを発生し、命令プロセッサ111で動作するOSからの受信パケット処理の指示を待つ場合である。
【0052】
受信バッファ領域150に空き領域がない場合、OSでは図14に示すように受信バッファ領域150に空き領域がないためSC139を廃棄を示すように設定する(1400)。
【0053】
尚、本発明では、受信バッファ領域150に空き領域がないことによる割り込みでOSは直ちに廃棄を指示するが、直ちに廃棄を指示しなくてもよい。例えばこの割り込みで、廃棄指示を行なわず、タイマを設定し、ユーザアプリケーションに制御を渡す。そしてそのタイマによる一定期間までユーザアプリケーションが受信処理を行なうまで待ち、一定期間を過ぎてもユーザアプリケーションが受信処理を行なわなければ、廃棄の指示を行なうこともできる。
【0054】
(3)図14で示すようにOSが受信バッファ領域150に空き領域がないことによる割り込みによりSC139を廃棄を示すように設定する(1400)。受信パケット廃棄判定140ではそれに従い、受信バッファ領域150に書き込まず、受信したパケットを廃棄することを受信制御141に指示する。
【0055】
受信制御141では、受信パケット廃棄判定140が受信バッファ領域150に書き込まず、受信したパケットを廃棄することを指示していることにより、以下の処理を行なう。まずパケット書き込み保留回路260では、受信バッファ領域150に書き込まず、受信したパケットを廃棄することを指示していることにより、受信パケット廃棄判定140の出力信号227がアサートされないため、主記憶書き込みリクエスト生成回路202に対して信号261を介して、受信したパケットを主記憶に書き込むことの開始指示を行なう。
【0056】
主記憶書き込みリクエスト生成回路202では、パケット書き込み保留回路260から開始指示が行なわれると、受信バッファポインタ制御135が出力する信号228を介してパケットを書き込むための受信バッファアドレスを読み出し、信号232によりバッファアドレスレジスタ207に設定する。そして主記憶書き込みリクエスト生成回路202ではパケットヘッダレジスタ203に格納されている内容を主記憶115に書き込まず、その内容を廃棄する。この廃棄では受信バッファ領域150に書き込まず、受信したパケットを廃棄することを指示していることにより、受信パケット廃棄判定140の出力信号225がアサートされているため、AND回路251が主記憶制御ユニット114へのリクエスト信号230を抑止することにより行なわれる。主記憶制御ユニット114へのアドレス信号229およびデータ信号230は何でもよい。
【0057】
次に主記憶書き込みリクエスト生成回路202では転送データを廃棄する。この廃棄では、主記憶書き込みリクエスト生成回路202がレジスタ書き込み制御回路201を介して信号224によりデータを読み出し、転送データレジスタ204に格納する。主記憶書き込みリクエスト生成回路202は、セレクタ205を信号線236によりデータレジスタ204の出力235を選択し、転送データレジスタ204の内容は主記憶書き込みデータ231として、主記憶書き込みリクエスト230および主記憶アドレス229と共に主記憶制御ユニット114に出力する。ここでAND回路251は、受信バッファ領域150に書き込まず、受信したパケットを廃棄することを指示していることにより、受信パケット廃棄判定140の出力信号225がアサートされているため、主記憶書き込みリクエスト信号252を抑止し、主記憶制御ユニット114にリクエスト信号230を出力しない。
【0058】
また主記憶書き込みリクエスト生成回路202では転送データをFIFO137から読み出し、データレジスタ204に設定する。また主記憶書き込みリクエスト生成回路202は転送データ長レジスタ210を4づつ減算器211により減算する。転送データの廃棄においては、主記憶書き込みリクエスト生成回路202が転送データ長レジスタ210の内容が0になるまで上記処理が繰り返す。転送データ長レジスタ210が0であるかは、0比較212が検出する。主記憶書き込みリクエスト生成回路202では0比較212により受信したパケットについて転送データ全てを廃棄したことを認識すると、1つのパケットの受信処理を終えたことになる。
【0059】
一方、受信バッファ更新リクエスト回路250では受信バッファ領域150に書き込まず、受信したパケットを廃棄することを指示していることにより、受信パケット廃棄判定140の出力信号226がアサートされていないため、受信バッファポインタ制御135に1つのパケットの受信処理を終えたことは報告しない。これにより受信バッファポインタ制御135は、RHPR132を更新しない。
【0060】
またパケット書き込み保留回路260は、レジスタ書き込み制御回路201からパケットを受信したことを信号253により報告を受けた時点で、既に受信パケット廃棄判定140が受信バッファ領域150に書き込まず、受信したパケットを廃棄することを指示している場合では、命令プロセッサ111からの指示を待つことなく、前述した廃棄処理を直に行なうために、主記憶書き込みリクエスト生成回路202に対して信号261を介して受信したパケットを主記憶に書き込むことの開始指示を行なう。
【0061】
一方、廃棄指示ビットを廃棄するように設定したOSでは、図12に示すようにユーザアプリケーションが受信を行なうまで待ち、ユーザアプリケーションが受信を行ない、受信バッファ領域として利用できるアドレスができた場合は、RTPR133を更新し、SC139を廃棄しないように設定する(1209)。これにより受信パケット廃棄判定140では受信したパケットを受信バッファ領域に書き込むことを受信制御141に指示する。それ以降の処理は(1)で説明した動作と同じである。
【0062】
また送信PUのOSは、図11で示した送信待ちキューに保持された受信PU番号と送信バッファ領域アドレスに従い再送処理を行なうことにより、廃棄されたパケットを受信PUにパケットを送ることができる。このOSの再送処理では、送信要求毎にタイマ監視を行ない、ある一定期間の間に受信PUからパケットを受信したことを報告するACKパケットが返らないことで、再送を行なえばよい。
【0063】
これにより受信バッファ領域150に空き領域がない場合に、OSの指示でそれ以降にそのプロセッサユニットに到着したパケットを廃棄することができる。
【0064】
これまでの説明では、各PU101の受信制御ユニット113で管理する受信バッファ領域が一面の場合を示した。しかし一面であるとユーザユーザアプリケーションプログラムなどが送信する一般的なパケット(以下、一般パケットと呼ぶ)と、並列プロセッサシステムシステム全体の制御を行なうためのパケット(以下、制御パケットと呼ぶ)が同一のネットワークを用いてパケット転送を行なう場合、両方のパケットが廃棄されることになる。しかし制御パケットは並列プロセッサシステムシステム全体の制御などに関わるため、制御パケットが廃棄されることは好ましくない。このため制御パケット用のネットワークと、一般パケット用のネットワークの2種類のネットワークを構成する必要がある。しかしこのためにはゲート数などの増えるため好ましくない。
【0065】
このため図5に示すように受信バッファを二面化して構成し、一方の受信バッファ領域を一般パケット転送に、もう一方を制御パケット転送に割り当てる。そして一般パケット転送による受信バッファ領域の空き領域不足の要因で、制御パケットが廃棄されないようにする。図5では、各PUの受信制御ユニット401のみを示す。その他の構成は図1と同じである。
【0066】
本図の受信制御ユニット501において、主記憶115上に構成される受信バッファ領域150を管理するための各レジスタは、受信バッファ領域対応に二面化される。本図では受信バッファ領域0と1として、それぞれに対応して各レジスタの名称の語尾に0と1を付けて区別する。受信バッファ領域0に対応しては、RBR0511、RHPR0512、RTPR0513、RSR0514、および受信バッファ0ポインタ制御515で管理される。受信バッファ領域1に対応しては、RBR1521、RHPR1522、RTPR1523、RSR1524、および受信バッファ1ポインタ制御525で管理される。これらの機能は図1と同じである。
【0067】
また受信バッファ領域0に対応して命令プロセッサ111からセット/リセットが行なえる廃棄指示ビット0(以下SC0と呼ぶ)536、受信バッファ領域1に対応して命令プロセッサ111からセット/リセットが行なえる廃棄指示ビット1(以下SC1と呼ぶ)535を設ける。
【0068】
また主記憶115上に構成される受信バッファ領域0と受信バッファ領域1の構成例を図7に示す。各レジスタの機能は図3で説明した内容と同じである。
【0069】
次に各プロセッサユニット間のパケット転送の動作について説明する。パケットの送信処理では、命令プロセッサ111が送信制御ユニット112を起動することにより行なわれる。送信制御ユニット112はパケットを生成し、ネットワーク102に送信する。ここで送信制御ユニット112は、例えば図8に示すようなパケットを生成する。ここでのパケットはパケットを受信すべきプロセッサユニットを示す受信PU番号301、パケットで転送するデータの長さを示す転送データ長302、多面化された受信バッファ領域のどの受信バッファ領域にパケットを書き込むかを指定する受信バッファタイプ801、パケットを送信したプロセッサユニットを示す送信PU番号303、転送されたパケットの種別を示すパケットタイプ304、および転送データ305から構成される。
【0070】
またネットワーク102では、パケットのヘッダの受信PU番号に従い、目的のPU101にパケットを転送する。これらの処理については従来技術と同様でよい。
【0071】
一方、受信処理において受信パケット廃棄判定0537は、図15と同様にSC0536で保持されている内容と、受信バッファ0ポインタ制御515からの受信バッファ領域0に空きがあるか否かの内容により、以下のように信号をアサートする。受信パケット廃棄判定0537では、(1)SC0536が廃棄を指示していないならば、受信バッファ領域0に空きがあるかを判定し、空きがあれば受信したパケットを受信バッファ領域0に書き込みが可能である場合は、信号571をアサートする。(2)また空きがなければ受信した状態のまま待つ場合は、信号572をアサートする。(3)SC0536が廃棄を指示しているのならば、受信したパケットを受信バッファ領域0に書き込まず、受信したパケットを廃棄する場合は、信号570をアサートする。
【0072】
また受信パケット廃棄判定1538は、SC1535で保持されている内容と、受信バッファ1ポインタ制御525からの受信バッファ領域1に空きがあるか否かの内容により、受信パケット廃棄判定0537と同様に判定する。
【0073】
受信パケット廃棄判定0537および受信パケット廃棄判定1538のそれぞれのパケットの受信処理については、下記に示す以外、図1の動作と同様である。
【0074】
受信制御539では図6に示すように、まずレジスタ書き込み制御601は、FIFO制御138からFIFO137にデータが入っていることを信号221により報告を受けると、信号224によりデータを読み出し、パケットヘッダレジスタ603に格納する。パケットヘッダレジスタ603に設定を終えると、レジスタ書き込み制御回路601は信号253によりパケット憶書き込み保留回路260に報告する。
【0075】
またレジスタ書き込み制御601では、信号234を介してパケットヘッダレジスタ603に格納されているバッファタイプを読み出し、それに従い信号693によりセレクタ690、セレクタ691、およびセレクタ692を制御する。バッファタイプが受信バッファ領域0を示している場合は、それぞれのセレクタで受信パケット廃棄判定0537の出力である信号670、671、672を選択する。一方バッファタイプが受信バッファ領域1を示している場合は、受信パケット廃棄判定1538の出力である信号680、681、682を選択する。
【0076】
パケット書き込み保留回路260では、レジスタ書き込み制御回路601からの報告により、受信パケット廃棄判定140の出力信号227に従い、主記憶書き込みリクエスト生成回路202に対して信号261を介して開始指示を行なう。
【0077】
以下、パケット憶書き込み保留回路260と主記憶書き込みリクエスト生成回路202による主記憶書き込み動作は図1の場合と同じである。また受信バッファアドレス更新リクエスト回路650の動作も受信パケット廃棄判定140の出力信号226に従う。そして受信バッファ領域150に書き込みを示し、受信パケット廃棄判定140の出力信号226がアサートされている場合は、0比較212が0になったことで信号693により対応する受信バッファポインタ制御に、信号610あるいは信号611を介して1つのパケットの受信処理を終えたことを報告する。
【0078】
ここで受信バッファ領域1に空き領域がなく、受信パケット廃棄判定1538が受信したパケットを廃棄することを指示し、かつ受信バッファ領域0には空き領域があり、受信パケット廃棄判定0537が受信したパケットを受信バッファ領域0に書き込みが可能であることを指示している場合で、パケットのバッファタイプが受信バッファ領域1のパケットと、それに引続き受信バッファ領域0のパケットを受信した場合について説明する。
【0079】
FIFO制御138からFIFO137にデータが入っていることを信号221により報告を受けると、信号224によりデータを読み出し、パケットヘッダレジスタ603に格納する。パケットヘッダレジスタ603に設定を終えると、レジスタ書き込み制御回路601は信号253によりパケット書き込み保留回路260に報告する。またレジスタ書き込み制御回路601では、パケットヘッダレジスタ603に格納されているバッファタイプに従い、セレクタ690、セレクタ691、セレクタ692を制御する。ここではバッファタイプが受信バッファ領域1を示しているため、信号693により受信パケット廃棄判定1538の出力である信号を選択する。具体的にはセレクタ690は信号580、セレクタ691は信号581、およびセレクタ692は信号582を選択する。
【0080】
パケット書き込み保留回路260では、レジスタ書き込み制御回路601からの報告により、受信したパケットを廃棄することを指示し、セレクタ692の出力信号227がアサートされていないため、主記憶書き込みリクエスト生成回路202に対して信号261を介して開始指示を行なう。
【0081】
主記憶書き込みリクエスト生成回路202では、図1の動作と同様に受信したパケットのヘッダおよび転送データ全てについて主記憶リクエストを生成する。主記憶書き込みリクエスト生成回路202は、主記憶制御ユニット114へのリクエスト信号230を信号252によりアドレス229/データ231と同時に出力する。一方AND回路251は、受信バッファ領域150に空きがなく、廃棄を指示していることにより、セレクタ690の出力信号225がアサートされているため主記憶書き込みリクエスト信号252を抑止し、主記憶制御ユニット114にリクエスト信号230を出力しない。また受信バッファ更新リクエスト回路650では受信バッファ領域150に書き込まず、受信したパケットを廃棄することを指示していることにより、セレクタ691の出力信号226がアサートされていないため、受信バッファポインタ制御525に1つのパケットの受信処理を終えたことは報告しない。
【0082】
一方FIFO制御534では、バッファタイプが受信バッファ領域1をもつパケットに引き続いて受信バッファ領域0をもつパケットがFIFOに格納されており、レジスタ書き込み制御回路601に対してFIFO533にデータが入っていることを信号221により報告する。
【0083】
レジスタ書き込み制御回路601は、FIFO制御534からFIFO533にデータが入っていることを信号221により報告を受けると、上記と同様にパケットヘッダレジスタ603に格納する。レジスタ書き込み制御回路601では、パケットヘッダレジスタ603に格納されているバッファタイプに従い、セレクタ690、セレクタ691、セレクタ692を制御する。ここではバッファタイプが受信バッファ領域0を示しているため、信号693により受信パケット廃棄判定0537の出力である信号を選択する。具体的にはセレクタ690は信号570、セレクタ691は信号571、およびセレクタ692は信号572を選択する。
【0084】
パケット書き込み保留回路260では、レジスタ書き込み制御回路601からの報告により、受信バッファ領域0に空き領域があり、受信パケット廃棄判定0537が受信したパケットを受信バッファ領域0に書き込みが可能であることを指示し、セレクタ692の出力信号227がアサートされていないため、主記憶書き込みリクエスト生成回路202に対して信号261を介して開始指示を行なう。
【0085】
主記憶書き込みリクエスト生成回路202では、図1の動作と同様に受信したパケットのヘッダおよび転送データ全てについて主記憶リクエスト信号230を生成する。主記憶書き込みリクエスト生成回路202は、主記憶制御ユニット114へのリクエスト信号230を信号252によりアドレス229/データ231と同時に出力する。
【0086】
AND回路251は、受信バッファ領域150に書き込み可能であることを指示していることにより、セレクタ690の出力信号225がアサートされていないため主記憶書き込みリクエスト信号252を抑止せず、主記憶制御ユニット114にリクエスト信号230を出力する。また受信バッファ更新リクエスト回路650では受信バッファ領域150に書き込まず、受信バッファ領域150に書き込み可能であることにより、セレクタ691の出力信号226がアサートされているため、受信バッファポインタ制御515に1つのパケットの受信処理を終えたことは報告する。
【0087】
上記のように受信バッファ領域を多面化し、それぞれの受信バッファ領域について廃棄ができるので、並列プロセッサシステムシステム全体の制御などに関わる制御パケットについては廃棄されず、また制御パケット用のネットワークと一般パケット用のネットワークを個別に設ける必要がない。
【0088】
尚、本発明では1つのパケットが1つのメッセージを構成し、1つのパケットを受信する毎に受信割り込みが発生する場合を示したが、1つのメッセージを複数のパケットに分割し、1つのメッセージの最後を示すパケットだけが割り込む場合にも上記の処理と同様に行なえる。
【0089】
これまでの説明では、命令プロセッサ111の指示による廃棄を示した。一方OSが正常に動作できず、割り込みを受け付けられない状態や主記憶制御ユニットに障害が発生し、受信パケットの主記憶書き込みができない状態が発生した場合では、受信処理が行なえず、パケットはネットワークに滞留したままになり、他のデータ転送を妨げる可能性がある。
【0090】
具体的にはOSが正常に動作できない状態で他のデータ転送を妨げる場合は、受信バッファ領域に空き領域がなく、命令プロセッサに割り込みを発生し、OSからの受信パケット処理の指示を待っている場合で、OSからの指示が全くない場合である。また主記憶制御ユニットに障害が発生し、他のデータ転送を妨げる場合は、受信パケット書き込み制御が主記憶への書き込みリクエストを主記憶制御ユニットに送っても受け付けられず、受信したパケットを主記憶に書き込めない場合である。
【0091】
これらを解決するために図9に示すように、受信パケット廃棄判定901、命令プロセッサ監視タイマ902、主記憶制御障害検出903を設ける。それ以外は図1と同じ構成である。
【0092】
受信パケット廃棄判定901では、SC139で保持されている内容と、受信バッファポインタ制御135から受信バッファ領域に空きがあるか否かの内容、命令プロセッサ監視タイマ902によるOS異常を示す信号911、および主記憶制御障害検出903による主記憶制御ユニット障害を示す信号912により、以下のように判定する。受信パケット廃棄判定901では、(1)SC139が廃棄を指示していない、かつ信号911がOS異常を示していない、かつ信号912が主記憶制御ユニット障害を示していないならば、受信バッファ領域に空きがあるかを判定し、空きがあれば受信したパケットを受信バッファ領域に書き込みが可能であることを指示する。(2)また上記の条件で空きがなければ受信した状態のまま待つことを指示する。(3)SC139が廃棄を指示している、あるいは信号911がOS異常を示している、あるいは信号912が主記憶制御ユニット障害を示しているならば、受信したパケットを受信バッファ領域に書き込まず、受信したパケットを廃棄することを受信制御141に対して指示する。
【0093】
命令プロセッサ監視タイマ902は、OSから設定された値をある一定間隔でマイナス1づつ行なうタイマである。このタイマに設定された値が0になった時にOSが正常に動作できないと判断し、信号911をOS異常として示す。このためOSは命令プロセッサ監視タイマ902に設定した値が0になる前に、新たに命令プロセッサ監視タイマ902に設定する。この動作でOSが正常に動作していると判断する。
【0094】
主記憶制御障害検出903は、受信制御141が主記憶制御ユニット114に対してパケットデータを書き込むためのリクエストが送られてから、主記憶制御ユニット114がそのリクエストを受け付けるまでの間を時間監視する。主記憶制御障害検出903は、予めシステムにより決められた値を保持し、受信制御114が主記憶制御ユニット114に対してパケットデータを書き込むためのリクエストを送くると、システムにより決められた値をタイマに設定し、その値をある一定間隔でマイナス1づつ行なう。このタイマに設定された値が0になった時に主記憶制御ユニット114に障害が発生したと判断し、信号912を主記憶制御ユニット障害として示す。一方主記憶制御ユニット114がリクエストを受け付けると、そのタイマは停止し、新たなリクエストに備える。
【0095】
また命令プロセッサ監視タイマ902、主記憶制御障害検出903では、それぞれでOS異常あるいは主記憶制御ユニット障害を検出した場合は、命令プロセッサ111に信号910を介して割り込みを発生する。
【0096】
これによりOSが正常に動作できず、割り込みを受け付けられない状態や主記憶制御ユニットに障害が発生し、受信パケットの主記憶書き込みができない状態が発生した場合でも、他のデータ転送を妨げない。
【0097】
【発明の効果】
受信したパケットを格納する受信バッファ領域に空き領域がない場合や、受信プロセッサユニットで障害が発生し、パケットを受信できない場合に、受信プロセッサユニットで受信パケットの廃棄ができるので、他の多数のプロセッサユニット間のパケット転送が妨げられないようにできる。
【図面の簡単な説明】
【図1】本発明による並列プロセッサシステムの一実施例を示す構成図。
【図2】本発明による受信制御の一実施例を示す構成図。
【図3】本発明による受信バッファの一実施例を示す構成図。
【図4】本発明によるパケットフォーマットの一実施例を示す構成図。
【図5】本発明による受信バッファを多面化した場合の受信制御ユニットの一実施例を示す構成図。
【図6】本発明による受信バッファを多面化した場合の受信制御の一実施例を示す構成図。
【図7】本発明による多面化した受信バッファの一実施例を示す構成図。
【図8】本発明による受信バッファを多面化した場合のパケットフォーマットの一実施例を示す構成図。
【図9】本発明による並列プロセッサシステムの一実施例を示す構成図。
【図10】本発明によるパケット送受信処理フローを示す図。
【図11】本発明によるソフトウェアの送信処理フローを示す図。
【図12】本発明によるソフトウェアの受信処理フローを示す図。
【図13】本発明によるソフトウェアの受信割り込み処理フローを示す図。
【図14】本発明によるソフトウェアの受信バッファ領域に空き領域がない場合の処理フローを示す図。
【図15】本発明による受信パケット廃棄判定の一実施例を示す図。
【図16】本発明による受信バッファポインタ制御の一実施例を示す構成図。
【符号の説明】
101…プロセッサユニット、102…ネットワーク、111…命令プロセッサ、112…送信制御ユニット、113…受信制御ユニット、114…主記憶制御ユニット、115…主記憶、131…受信バッファの先頭アドレスを示すベースレジスタ、132…受信バッファの未使用領域の先頭を示すヘッダポインタレジスタ、133…受信バッファの未使用領域の終端を示すテイルポインタレジスタ、134…受信バッファのサイズを示すサイズレジスタ、135…受信バッファポインタ制御、136…命令プロセッサアクセス制御、137…FIFO、138…FIFO制御、139…廃棄指示ビット、140…受信パケット廃棄判定、141…受信制御、150…受信バッファ領域、201…レジスタ書き込み制御回路、260…パケット書き込み保留回路、202…主記憶書き込みリクエスト生成回路、250…受信バッファアドレス更新リクエスト回路、251…AND回路。
【産業上の利用分野】
本発明は並列プロセッサシステムに関わり、特にプロセッサユニット間パケット転送の受信制御において受信バッファに空き領域がない場合に、他のパケット転送を妨げないように制御可能な受信制御に好適な並列プロセッサシステムに関する。
【0002】
【従来の技術】
一般に並列プロセッサシステムのネットワークにおいては、完全クロスバスイッチネットワークで構成すれば最小のスイッチ段数で任意のプロセッサユニット間で転送が可能であるが、プロセッサユニット数が増えてくれば完全クロスバスイッチネットワークを構成するのは困難になる。このため多段スイッチネットワークで構成される場合が多い。
【0003】
ネットワーク内のルーティング方式では、電子情報通信学会論文誌DーI VOL.J75ーDーI No.8の”並列計算機AP1000における相互結合網のルーチング方式”、第600ページから第606ページに記載されているように、ストアアンドフォワードに比較し、レイテンシィが小さいワームホールルーティングを採用される場合が多い。このワームホームルーティングは、転送に先だって全ての経路を確保しない。ある経路(スイッチ)においてパケットの先頭からパケットの終りが通り抜ける間だけ、経路を確保する。
【0004】
並列プロセッサシステムのパケット受信制御方式では、情報処理学会論文誌VOL.34 No.4の”高速メッセージハンドリング機構”、第638ページから第646ページに記載されている。ここでは、各プロセッサユニットにリングバッファを構成し、非同期的なメッセージ受信に対応している。このリングバッファはベースレジスタ(BASE)、ライトポインタ(WTP)、リードポインタ(RDP)で管理する。BSAEはリングバッファの先頭アドレスを示す。WTPは次に受信されるデータが書き込まれるアドレスを示す。RDPはCPUが現在アクセス中のアドレスを示す。CPUはRDPに対して任意の値を書き込むことができる。
【0005】
リングバッファに空き領域がないことは、WTPとRDPが同じ値であることで判別する。もし同じ値であった場合、CPUに割り込みを発生し、リングバッファに空き領域ができるまで受信を停止する。
【0006】
【発明が解決しようとする課題】
上記従来技術では、リングバッファに空き領域がない場合、CPUに割り込みを発生し、リングバッファに空き領域ができるまで受信を停止する。受信を停止した以降、そのプロセッサユニットに到着したパケット処理については言及されていない。しかし受信の停止が到着したパケットをプロセッサユニットの入り口で待たす場合、パケットはネットワークに滞留したままになる。またワームホールルーティングではそのパケットが経路を確保したまま待たされる。
【0007】
従来技術では上記の点について配慮がされておらず、他のプロセッサユニット間のパケットを転送する場合で、かつそのパケットの経路が受信の停止のために滞留したパケットの経路を使用する場合では経路が使用できない。このため経路が使用できるまで、他のプロセッサユニット間のパケットはその経路の入り口で待たされる。パケット転送が頻繁に行なわれる状況では、これにより多数のプロセッサユニット間転送が妨げられるという問題がある。
【0008】
また受信したパケットを受信バッファに書き込む場合において、その書き込みに関係する回路およびソフトウェア処理などに障害が発生し、パケットの書き込みができなくなった場合でも、そのパケットが使用する経路は他のパケット転送で使用できなくなる。この場合においても多数のプロセッサユニット間転送が妨げられるという問題がある。
【0009】
本発明の目的は、受信バッファの空き領域が直に確保されない場合に、長時間受信を保留するのを防ぐデータ受信方法、およびそれに適した並列プロセッサシステムを提供することにある。
【0010】
また本発明の目的は、受信処理において障害発生によりパケット受信ができない場合に、多数のプロセッサユニット間のパケット転送が妨げられないように動作できる並列プロセッサシステムを提供することにある。
【0011】
【課題を解決するための手段】
上記目的は、受信バッファに空き領域がない場合に、それ以降にそのプロセッサユニットに到着したパケットを廃棄するように動作させることにより達成される。受信パケットの廃棄指示は、受信バッファ領域に空き領域がない場合はソフトウェアで、障害を検出した場合はハードウェアで行なう。廃棄指示が行なわれた場合の動作は、それ以降に受信したパケットが対応する受信バッファ領域に受信されるパケットである場合に、そのパケット全てについて廃棄する。また受信バッファ領域の空き領域が確保できた場合はソフトウェアにより廃棄指示の取消を行なう。
【0012】
このため各プロセッサユニットのネットワーク受信処理を行なう受信制御ユニットにおいて、主記憶上に構成される受信バッファ領域を管理するための、受信バッファ領域の先頭アドレスを示すベースレジスタ(RBR)、受信バッファ領域の未使用領域の先頭を示し、受信したパケットを書き込むアドレスを示すヘッダポインタレジスタ(RHPR)、受信バッファ領域の未使用領域の終端を示すテイルポインタレジスタ(RTPR)、受信バッファ領域のサイズを示すサイズレジスタ(RSR)、RBR、RHPR、RTPR、RSRを管理し、パケットを受信した場合に受信バッファ領域に書き込むためのアドレスを生成し、また受信バッファ領域に空き領域がないことを検出する受信バッファポインタ制御、命令を実行する命令プロセッサから受信制御ユニットをアクセスする場合のアクセス制御や受信処理に関係する割り込み生成を行なう命令プロセッサアクセス制御、ネットワークから届いたパケットを一時的に格納するFIFO、FIFOの読みだし/書き込み制御を行なうFIFO制御、命令プロセッサからセット/リセットが行なえる廃棄指示ビット(SC)、廃棄指示ビットと受信バッファポインタ制御から受信したパケットを受信バッファ領域に書き込むか、書き込みを待たせるか、あるいは廃棄するかを判定する受信パケット廃棄判定、および受信したパケットを受信バッファ領域に書き込む制御を行なう受信制御を設ける。
【0013】
【作用】
主記憶上に構成される受信バッファ領域を管理するためのRBR、RHPR、RTPR、RSRは命令プロセッサアクセス制御を介して命令プロセッサにより初期化される。ネットワークから送られてきたパケットはFIFO制御に従い、FIFOに格納される。FIFO制御はFIFOにデータが入っていることを受信制御に報告する。
【0014】
受信パケット廃棄判定では、廃棄指示ビットで保持されている内容と、受信バッファポインタ制御から受信バッファ領域に空きがあるか否かの内容により、次のように判定し、受信制御に指示する。廃棄指示ビットが廃棄を指示しているのならば、受信したパケットを受信バッファ領域に書き込まず、受信したパケットを廃棄することを指示する。廃棄指示ビットが廃棄を指示していないならば、受信バッファ領域に空きがあるかを判定し、空きがあれば受信したパケットを受信バッファ領域に書き込みが可能であることを指示する。また空きがなければ受信バッファ領域に書き込まず、受信した状態のまま待つことを指示する。さらに障害を検出した場合は、受信したパケットを廃棄することを指示する。
【0015】
受信制御ではFIFO制御からパケットを受信したことの報告を受けると、まず受信パケット廃棄判定の指示に従う。受信バッファ領域に書き込み可能であることを指示している場合は、受信制御がパケットを書き込むための受信バッファアドレスを受信バッファポインタ制御から読み出す。受信制御ではパケットヘッダをFIFOからパケットを読み出す。そのパケットヘッダで示される転送データ長に従い、転送データをFIFOから読み出しながら、そのパケットを主記憶上に構成される受信バッファ領域に書き込む。受信したパケットの受信バッファ領域への書き込みが終了すれば、受信制御は受信バッファポインタ制御に報告する。
【0016】
受信バッファポインタ制御では受信パケットの書き込み終了の報告があると、RHPRを更新し、受信バッファ領域に空き領域があるかないかをチェックする。もし受信バッファ領域に空き領域がなければ命令プロセッサアクセス制御を介して命令プロセッサに割り込みを発生する。また受信パケット廃棄判定にも報告する。
【0017】
受信パケット廃棄判定が受信した状態のまま待つことを指示している場合は、受信制御ではパケットが到着しても受信処理を行なわない。即ち到着したパケットは受信処理が行なわれず、ネットワークに滞留したままになる。
【0018】
受信パケット廃棄判定が受信したパケットを廃棄することを指示している場合は、受信制御ではFIFO制御を介してFIFOからパケットを読みだし、パケットヘッダに示されている転送データ長に従い、転送データ長分だけ転送データをどこにも書き込まず、読み捨てる。即ちこの処理では命令プロセッサで実行されているソフトウェアからはパケットが受信されていないようにみえる。
【0019】
これにより受信バッファ領域に空き領域がない場合に、ソフトウェアの指示でそれ以降にそのプロセッサユニットに到着したパケットを廃棄することができ、ネットワーク上の他プロセッサユニット間のパケット転送が妨げない。
【0020】
【実施例】
以下、本発明の一実施例を図1を用いて説明する。図1は本発明の並列プロセッサシステムの構成の一実施例である。ここでの並列プロセッサシステムは複数のプロセッサユニット101(以下PUと呼ぶ)が任意のプロセッサユニット間でデータ転送が可能なネットワーク102に接続される。尚、本図ではPUは2台のみ示し、その他は省略している。
【0021】
PU101は、命令を実行する命令プロセッサ(以下命令プロセッサと呼ぶ)111、命令プロセッサ111の指示によりパケットを生成しネットワーク102にパケットを送信する送信制御ユニット112、ネットワーク102から到着したパケットの受信処理を行なう受信制御ユニット113、命令プロセッサ111、送信制御ユニット112、受信制御ユニット113からの要求に応じて主記憶115のアクセス制御を行なう主記憶制御ユニット114、および命令プロセッサが実行する命令やデータを記憶する主記憶115から構成される。
【0022】
また受信制御ユニット113は、主記憶115上に構成される受信バッファ領域150を管理するためのベースレジスタ131(RBR)、ヘッダポインタレジスタ132(RHPR)、テイルポインタレジスタ133(RTPR)、サイズレジスタ134(RSR)、RBR131、RHPR132、RTPR133、RSR134を管理し、パケットを受信した場合に受信バッファ領域150に書き込むためのアドレスを生成し、また受信バッファ領域150に空き領域がないことを検出する受信バッファポインタ制御135、命令プロセッサ111から受信制御ユニット113をアクセスする場合のアクセス制御や受信処理に関係する割り込み生成を信号165を介して行なう命令プロセッサアクセス制御136、ネットワーク102から届いたパケットを一時的に格納するデータレジスタ群であるFIFO137、FIFO137の読みだし/書き込みアドレスの制御を行なうFIFO制御138、命令プロセッサアクセス制御136を介して命令プロセッサ111からセット/リセットが行なえる廃棄指示ビット(SCと呼ぶ)139、SC139と受信バッファポインタ制御135から受信したパケットを受信バッファ領域150に書き込むか否か、あるいは廃棄するかを判定する受信パケット廃棄判定140、および受信したパケットを受信バッファ領域150に書き込むための制御を行なう受信制御141から構成される。
【0023】
ここで主記憶115上に構成される受信バッファ領域150の構成例を図3に示す。ベースレジスタ131(RBR)は受信バッファ領域150の先頭アドレスを示す。ヘッダポインタレジスタ132(RHPR)は、受信バッファ領域150の未使用領域の先頭を示し、受信したパケットの書き込むアドレスを示す。またRHPR132はパケットを受信する毎に受信バッファポインタ制御135が更新される。テイルポインタレジスタ133(RTPR)は受信バッファ領域150の未使用領域の終端を示し、命令プロセッサにより任意の値が書き込まれる。サイズレジスタ134(RSR)は受信バッファ領域150のサイズを示す。
【0024】
また受信バッファポインタ制御135の構成例を図16に示す。受信バッファポインタ制御135は、RHPR132の出力とRTPR133の出力を比較し、受信バッファ領域150に空き領域がないことを検出する空き領域チェック回路1601、RHPR132の出力とパケット長を加算し、次の受信バッファ領域を決定するRHPR加算器1602、RBR131の出力とRSR134の出力を加算し、受信バッファ領域の最終端を求める再終端加算器1603、再終端加算器の出力1610とRHPR132の出力を比較し、RHPR132で保持するアドレスが受信バッファの再終端にあることをチェックするRHPRラップアラウンドチェック回路1604、命令プロセッサアクセス制御136および受信制御141からのRHPR132の更新要求に従い、セレクタ1607を制御し、RHPR132の更新データを決定するRHPR更新制御回路1605、および命令プロセッサアクセス制御136からの更新要求に従い、RBR131、RTPR133、RSR134の更新を行なう受信バッファ領域レジスタ更新制御回路1606から構成される。本発明においては送受信処理を行なう前にOSがRBR131、RHPR132、RTPR133、RSR134の初期設定を行なう。具体的には命令プロセッサ111が信号線165を介して命令プロセッサアクセス制御136に要求する。命令プロセッサアクセス制御136は、その要求を解読し、信号線1611を介してRHPR更新回路1605あるいは受信バッファ領域更新制御回路1606に要求する。それぞれの回路ではその要求に従い、対応するレジスタを更新する。また受信制御141からのRHPR132の更新要求は信号228を介して行なわれ、RHPR更新回路1605がRHPRラップアラウンドチェック回路1604の出力である信号1613によりセレクタ1607を制御し、更新する。RHPR更新回路1605では信号1614がRHPR132で保持するアドレスが受信バッファの再終端にあることを示している場合はRBR131の出力をセレクタ1607により選択し、それをRHPR132に設定する。一方、再終端でないことを示している場合はRHPR加算器1602の出力をセレクタ1607により選択し、それをRHPR132に設定する。またRHPR更新回路1605ではRHPR132を更新した後、空き領域チェック回路1601の出力である信号1615が空き領域がないことを示している場合は信号1620により命令プロセッサアクセス制御136を介して命令プロセッサ111に割り込みを発生する。尚、本発明においてはパケットサイズは任意のサイズでよいが説明を簡単にするために、ここではパケットサイズを固定値としている。
【0025】
次にソフトウェアの送受信処理の動作について説明する。まず本発明における基本的なプロセッサユニット間のパケット転送の送受信方法の一実施例を図10を用いて説明する。本発明では、送信PUで動作する送信ユーザアプリケーション1000が送信要求を行なうと、オペレーティングシステム(以下OSと呼ぶ)1001はOS空間内の送信バッファ領域1002にユーザアプリケーションから指定された送信データ1003をコピーする。そしてOS1001はコピーした送信バッファ領域1002のアドレスを送信制御ユニット112に渡す。送信制御ユニット112は、与えられた送信バッファ領域150のアドレスから転送データを読みだし、パケットを生成し、ネットワーク102に送出する。ネットワーク102ではパケットを目的の受信PUに転送する。受信PUの受信制御ユニット113はパケットを受信すると、そのパケットをOS空間内の受信バッファ領域150に書き込む。一方、受信ユーザアプリケーション1004では受信データを要求すると、受信PUのOS1005が受信バッファ領域150を検索し、受信ユーザアプリケーション1004が要求する受信データが届いている場合は受信ユーザアプリケーション1004の受信領域1006にコピーする。以上のようにユーザアプリケーションの送受信領域からOS空間内の送受信バッファ領域を介して送受信処理が行なわれる。
【0026】
次に送信処理について図11を用いて説明する。送信PUで動作するユーザアプリケーションが送信を行なう場合は、受信PU番号、送信データアドレスによりOSに送信要求を行なう(1100)。OSはその要求に従い、OS空間内の送信バッファ領域1002にユーザアプリケーションから指定された送信データ1003をコピーする(1101)。そしてOSは、受信PU番号と、コピーした送信バッファ領域1002のアドレスを送信制御ユニット112に渡す(1102)。そしてOSはOS空間内に送信完了待ちキューを構成し、そのキューに送信要求が行なわれた受信PU番号と送信バッファ領域アドレスを登録し、送信処理を終え、ユーザアプリケーションに制御を戻す(1103)。ここで送信完了待ちキューは、受信PUが転送データを受信したことの報告(以下、ACKパケットと呼ぶ)があった時に、そのキューから削除される。
【0027】
次に受信処理について図12を用いて説明する。受信PUで動作するユーザアプリケーションが受信を行なう場合は、送信PU番号、受信領域アドレスによりOSに受信要求を行なう(1201)。OSはその要求に従い、OS空間内の受信バッファ領域150を検索(1202)し、ユーザアプリケーションから指定された送信PU番号に対応するパケットが届いているかをチェックする(1203)。チェックの結果、未だ届いていないならばOSが管理する受信待ちキューにユーザアプリケーションから指定された送信PU番号、受信領域アドレスを登録する(1209)。そして受信要求を行なったユーザアプリケーションとは異なる他のユーザアプリケーションに制御を渡す(1210)。この受信待ちキューは、他のプロセッサユニットから転送データを受信した場合に、OSが検索し、受信待ちキューに登録されているパケットを受信した場合は、OSがその受信待ちキューの受信領域アドレスに従い、受信領域1006に書き込むために用いる。詳細は後述する。
【0028】
またユーザアプリケーションから指定された送信PU番号に対応するパケットが届いているならばOS空間内の受信バッファ領域に格納されたパケットをユーザアプリケーションの受信領域にコピーする(1204)。そしてユーザアプリケーションが受信したことを送信側に報告するために、転送データ内に格納されている送信PU番号をもとにACKパケットを生成し、送信PUに転送する(1205)。またOS空間内の受信バッファ領域150からユーザアプリケーションの受信領域1006にコピーが行なわれたOS空間内の受信バッファ領域アドレスを記憶する(1206)。これはOS空間内の受信バッファ領域150に空き領域がない場合に、記憶したアドレスを受信バッファ領域150として利用するために行なう。OSは受信バッファ領域150に空き領域を作成するために、コピーした受信バッファ領域150までRTPR133を更新する(1207)。
【0029】
OSが受信バッファ領域150に空きがなく、受信制御ユニット113に対して廃棄指示を行なっているかをチェックする(1208)。もし廃棄指示を行なっているならば、廃棄指示ビットを廃棄とせず、受信するように設定し(1209)、ユーザアプリケーションに制御を渡す。またもし廃棄指示を行なっていないならば、そのままユーザアプリケーションに制御を渡す。
【0030】
尚、本実施例では、受信した各パケットは受信バッファ領域150内のアドレスが連続した領域に書き込まれるような、受信バッファ領域150が構成されている。このためOSが受信バッファ領域150に空き領域を作成するために、コピーした受信バッファ領域150までRTPR133を更新する(1207)場合では、上記処理においてユーザアプリケーションの受信領域1006にコピーが行なわれたOS空間内の受信バッファ領域アドレスが、RTPR133に連続するアドレスであった場合のみ更新するように処理する。
【0031】
次にOSのパケット受信処理について図13を用いて説明する。OSがパケットの到着を割り込みにより知ると、まずRHPR132で示されるアドレスを読み出し、そのアドレスの1つ手前の受信バッファ領域から受信したパケットを読み出す(1300)。読み出したパケットが受信確認用のACKパケットであるかを判定する(1301)。この確認にはたとえばパケット内の転送データ405にACKパケットであることの情報を付加し、それにより確認すればよい。ACKパケットであるならば、読み出したパケットの送信PU番号から送信待ちキューに登録されている送信PU番号と送信バッファ領域アドレスを削除する(1302)。そしてOSは、受信バッファ領域150からACKパケットを読み出したアドレスを記憶し(1303)、ユーザアプリケーションに制御を渡す。これはOS空間内の受信バッファ領域150に空き領域がない場合に、記憶したアドレスを受信バッファ領域150として利用するために行なう。
【0032】
また読み出したACKパケットでなければ、読み出したパケットの送信PU番号から受信待ちキューに保持されている送信PU番号を検索し(1304)、受信待ちキュー内に対応する送信PU番号があるかをチェックする(1305)。検索した結果、対応する送信PU番号がないならばユーザアプリケーションに制御を渡す。また対応する送信PU番号があるならば、読み出したパケットを受信待ちキューで指定される受信領域にコピーする(1306)。読み出したパケットで保持されている送信PUに従い、そのPUに対してパケットを受信したことを伝えるためにACKパケットを送り返す(1307)。次にOSは、受信バッファ領域150からコピーしたアドレスを記憶する(1308)。そして読み出したパケットの送信PU番号に対応する受信待ちキューに登録されている送信PU番号と受信領域アドレスを削除する(1309)。そしてOSは、受信領域にコピーしたユーザアプリケーションに制御を渡す。以上のようにしてユーザアプリケーションおよびOSは送受信処理を行なう。
【0033】
次にプロセッサユニット間のパケット転送のハードウェア動作について図を用いて説明する。図1においてパケットの送信処理では、命令プロセッサ111が送信制御ユニット112に対して信号線163を介して受信PU番号と送信バッファ領域アドレスを渡す。送信制御ユニット112はパケットを生成し、信号線161を介してネットワーク102に送信する。ここで送信制御ユニット112は、例えば図4に示すようなパケットを生成する。ここでのパケットはパケットを受信するプロセッサユニットを示す受信PU番号401、パケットで転送するデータの長さを示す転送データ長402、パケットを送信したプロセッサユニットを示す送信PU番号403、転送されたパケットの種別を示すパケットタイプ404、および転送データ405から構成される。ネットワーク102では、パケットのヘッダに従い、目的のPU101にパケットを転送する。
【0034】
一方、受信処理においては、ネットワークが目的のPU101にパケットを転送する場合、まずパケットを信号162を介してFIFO137に格納する。このときFIFO制御138はFIFO137の読み出しアドレスと書き込みアドレスを制御し、FIFO137にデータがあり、それ以上書き込めないことをチェックする。もし書き込めない場合は、ネットワークに信号162を介して伝える。この場合ネットワークはFIFO制御138から上記書き込めることの報告があるまで待つことになる。ここでFIFO137に書き込めなくなってから、書き込めるようになるには受信制御141がFIFO137に格納されているパケットを読み出すことにより行なわれる。
【0035】
そしてFIFO制御138はFIFO137にデータが入っていることを信号線221を介して受信制御141に報告することにより受信制御ユニット113が受信処理を開始する。この受信処理において、まず受信パケット廃棄判定140が、図15に示すようにSC139で保持されている内容と、受信バッファポインタ制御135から受信バッファ領域150に空きがあるか否かの内容により、以下のように信号を出力する。即ち受信パケット廃棄判定140では、(1)SC139の出力信号171が廃棄を指示していないならば、受信バッファ領域150に空きがあるかを判定し、空きがあれば受信したパケットを受信バッファ領域150に書き込みが可能である場合は信号226をアサートする。(2)また空きがなく、受信した状態のまま待つ場合は信号227をアサートする。(3)SC139の出力信号171が廃棄を指示しているのならば、受信したパケットを受信バッファ領域150に書き込まず、受信したパケットを廃棄する場合は信号225をアサートする。
【0036】
以下、受信パケット廃棄判定140の指示(1)〜(3)についての受信処理方法を以下に説明する。ここで受信処理を行なう前には、受信バッファ領域150を管理するためのRBR131、RHPR132、RTPR133、RSR134が命令プロセッサ111により初期化されている。
【0037】
(1)受信パケット廃棄判定140が受信バッファ領域150に書き込み可能であることを指示している場合について説明する。
【0038】
ネットワーク102から送られてきたパケットはFIFO制御138に従い、FIFO137に格納される。ただしFIFO137の容量によりパケット全てのデータがFIFO137に格納されるとは限らない。FIFO137に入り切らない場合はネットワーク101にパケットの残りが存在する。FIFO制御138はFIFO137にデータが入っていることを信号線221を介して受信制御141に報告する。
【0039】
受信制御141では図2に示すように、まずレジスタ書き込み制御201は、FIFO制御138からFIFO137にデータが入っていることを信号221により報告を受けると、信号224によりデータを読み出し、パケットヘッダレジスタ203に格納する。
【0040】
パケットヘッダレジスタ203に設定を終えると、レジスタ書き込み制御回路201は信号253によりパケット書き込み保留回路260に報告する。その報告によりパケット書き込み保留回路260では、受信バッファ領域150に書き込み可能であることを指示し、空きがなく受信した状態のまま待つことを示してないことにより、受信パケット廃棄判定140の出力信号227がアサートされないため、主記憶書き込みリクエスト生成回路202に対して信号261を介して、受信したパケットを主記憶に書き込むことの開始指示を行なう。
【0041】
主記憶書き込みリクエスト生成回路202では、受信バッファポインタ制御135が出力する信号228を介してパケットを書き込むための受信バッファアドレスを読み出し、信号232によりバッファアドレスレジスタ207に設定する。また主記憶書き込みリクエスト生成回路202は、パケットヘッダレジスタ203に格納された転送データ長を信号線234を介して読み出す。そして信号線233によりセレクタ209を制御し、転送データ長レジスタ210に設定する。
【0042】
次に主記憶書き込みリクエスト生成回路202ではバッファアドレスレジスタ207に従い、まずパケットヘッダレジスタ203に格納されている内容を主記憶115に書き込む。この書き込みにおいて主記憶書き込みリクエスト生成回路202では、信号236により主記憶115の書き込みデータ231として、パケットヘッダレジスタ203の出力をセレクタ205で選択する。主記憶115への書き込みアドレス229は、バッファアドレスレジスタ207の内容が出力される。また主記憶書き込みリクエスト生成回路202は、主記憶制御ユニット114へのリクエスト信号230を信号252によりアドレス229/データ231と同時に出力する。ここでAND回路251は、受信バッファ領域150に書き込み可能であることを指示していることにより、受信パケット廃棄判定140の出力信号225がアサートされないため主記憶書き込みリクエスト信号252をそのまま主記憶制御ユニット114にリクエスト信号230として出力する。
【0043】
リクエスト信号230を主記憶制御ユニット114へ出力すると主記憶書き込みリクエスト生成回路202は、バッファアドレスレジスタ207を信号232を介してパケットヘッダの大きさ分だけ加算器208により更新する。ここではパケットヘッダの受信PU番号、転送データ長などはそれぞれ4バイトで構成され、加算器208によりバッファアドレスレジスタ207の内容に4が4回加算される。主記憶制御ユニット114には、その回数分だけ主記憶アドレス229、主記憶リクエスト230および主記憶データ231が生成される。
【0044】
次に主記憶書き込みリクエスト生成回路202では更新されたバッファアドレスレジスタ207に従い、転送データを主記憶115に書き込む。この書き込みにおいて主記憶書き込みリクエスト生成回路202ではパケット書き込み保留回路260、レジスタ書き込み制御回路201を介して信号224によりデータを読み出し、データレジスタ204に格納する。そして主記憶書き込みリクエスト生成回路202は、セレクタ205を信号線236によりデータレジスタ204の出力235を選択し、転送データレジスタ204の内容は主記憶書き込みデータ231として、主記憶書き込みリクエスト230および主記憶アドレス229と共に主記憶制御ユニット114に出力する。ここでAND回路251は、受信バッファ領域150に書き込み可能であることを指示していることにより、受信パケット廃棄判定140の出力信号225がアサートされないため、主記憶書き込みリクエスト信号252をそのまま主記憶制御ユニット114に信号230により出力する。
【0045】
ここでは転送データは4バイト単位で送信PUから送信され、主記憶書き込みリクエスト生成回路202が主記憶制御ユニット114に主記憶書き込みリクエスト252を出力する毎に、主記憶書き込みリクエスト生成回路202がバッファアドレスレジスタ207を4づつ加算器208により加算する。また同様に転送データ長レジスタ210を4づつ減算器211により減算する。主記憶書き込みリクエスト生成回路202は、転送データ長レジスタ210が0になるまで上記処理を繰り返す。転送データ長レジスタ210が0であるかは、0比較212が検出する。
【0046】
主記憶書き込みリクエスト生成回路202では、0比較212により受信したパケットについて転送データ全てを主記憶に書き込んだことを認識する。また受信バッファアドレス更新リクエスト回路350は、受信バッファ領域150に書き込み可能であることを指示していることにより、受信パケット廃棄判定140の出力信号226がアサートされているため、0比較212が0になったことで信号228により受信バッファポインタ制御135に1つのパケットの受信処理を終えたことを報告する。
【0047】
受信バッファポインタ制御135では、信号228によりRHPR132を更新する。そして受信バッファ領域150に空き領域があるかないかをチェックする。もし受信バッファ領域150に空き領域があるのであれば、受信パケット廃棄判定140に報告する。もし受信バッファ領域150に空き領域がなければ信号1520を介して命令プロセッサアクセス制御136に報告する。命令プロセッサアクセス制御136は、信号165を介して命令プロセッサ111に割り込みを発生する。また同時に信号1512を介して受信パケット廃棄判定140にも報告する。
【0048】
(2)受信パケット廃棄判定140がSC139の出力信号171が廃棄を指示されてなく、受信バッファ領域150に空きがなく受信した状態のまま待つことを指示している場合について説明する。
【0049】
まずレジスタ書き込み制御回路201は、FIFO制御138からFIFO137にデータが入っていることを信号221により報告を受けると、受信パケット廃棄判定140が受信バッファ領域150に書き込み可能であることを指示している場合と同様に、FIFO制御138を介して信号224によりデータを読み出し、パケットヘッダレジスタ203に格納する。
【0050】
パケットヘッダレジスタ203に設定を終えると、レジスタ書き込み制御回路201は信号253によりパケット書き込み保留回路260に報告する。その報告によりパケット書き込み保留回路260では、空きがなく受信した状態のまま待つことを示していることにより受信パケット廃棄判定140の出力信号227がアサートされているため、主記憶書き込みリクエスト生成回路202に対して信号261を介して、受信したパケットを主記憶に書き込むことの開始指示を行なわない。
【0051】
この主記憶書き込みリクエスト生成回路202では、パケット書き込み保留回路260が書き込み開始指示を行なわないため何も動作しない。パケット書き込み保留回路260ではこの状態で、命令プロセッサ111からの指示があるまでまで待つ。これは予め受信バッファポインタ制御135が受信バッファ領域150に空き領域がなく、命令プロセッサアクセス制御136を介して命令プロセッサ111に割り込みを発生し、命令プロセッサ111で動作するOSからの受信パケット処理の指示を待つ場合である。
【0052】
受信バッファ領域150に空き領域がない場合、OSでは図14に示すように受信バッファ領域150に空き領域がないためSC139を廃棄を示すように設定する(1400)。
【0053】
尚、本発明では、受信バッファ領域150に空き領域がないことによる割り込みでOSは直ちに廃棄を指示するが、直ちに廃棄を指示しなくてもよい。例えばこの割り込みで、廃棄指示を行なわず、タイマを設定し、ユーザアプリケーションに制御を渡す。そしてそのタイマによる一定期間までユーザアプリケーションが受信処理を行なうまで待ち、一定期間を過ぎてもユーザアプリケーションが受信処理を行なわなければ、廃棄の指示を行なうこともできる。
【0054】
(3)図14で示すようにOSが受信バッファ領域150に空き領域がないことによる割り込みによりSC139を廃棄を示すように設定する(1400)。受信パケット廃棄判定140ではそれに従い、受信バッファ領域150に書き込まず、受信したパケットを廃棄することを受信制御141に指示する。
【0055】
受信制御141では、受信パケット廃棄判定140が受信バッファ領域150に書き込まず、受信したパケットを廃棄することを指示していることにより、以下の処理を行なう。まずパケット書き込み保留回路260では、受信バッファ領域150に書き込まず、受信したパケットを廃棄することを指示していることにより、受信パケット廃棄判定140の出力信号227がアサートされないため、主記憶書き込みリクエスト生成回路202に対して信号261を介して、受信したパケットを主記憶に書き込むことの開始指示を行なう。
【0056】
主記憶書き込みリクエスト生成回路202では、パケット書き込み保留回路260から開始指示が行なわれると、受信バッファポインタ制御135が出力する信号228を介してパケットを書き込むための受信バッファアドレスを読み出し、信号232によりバッファアドレスレジスタ207に設定する。そして主記憶書き込みリクエスト生成回路202ではパケットヘッダレジスタ203に格納されている内容を主記憶115に書き込まず、その内容を廃棄する。この廃棄では受信バッファ領域150に書き込まず、受信したパケットを廃棄することを指示していることにより、受信パケット廃棄判定140の出力信号225がアサートされているため、AND回路251が主記憶制御ユニット114へのリクエスト信号230を抑止することにより行なわれる。主記憶制御ユニット114へのアドレス信号229およびデータ信号230は何でもよい。
【0057】
次に主記憶書き込みリクエスト生成回路202では転送データを廃棄する。この廃棄では、主記憶書き込みリクエスト生成回路202がレジスタ書き込み制御回路201を介して信号224によりデータを読み出し、転送データレジスタ204に格納する。主記憶書き込みリクエスト生成回路202は、セレクタ205を信号線236によりデータレジスタ204の出力235を選択し、転送データレジスタ204の内容は主記憶書き込みデータ231として、主記憶書き込みリクエスト230および主記憶アドレス229と共に主記憶制御ユニット114に出力する。ここでAND回路251は、受信バッファ領域150に書き込まず、受信したパケットを廃棄することを指示していることにより、受信パケット廃棄判定140の出力信号225がアサートされているため、主記憶書き込みリクエスト信号252を抑止し、主記憶制御ユニット114にリクエスト信号230を出力しない。
【0058】
また主記憶書き込みリクエスト生成回路202では転送データをFIFO137から読み出し、データレジスタ204に設定する。また主記憶書き込みリクエスト生成回路202は転送データ長レジスタ210を4づつ減算器211により減算する。転送データの廃棄においては、主記憶書き込みリクエスト生成回路202が転送データ長レジスタ210の内容が0になるまで上記処理が繰り返す。転送データ長レジスタ210が0であるかは、0比較212が検出する。主記憶書き込みリクエスト生成回路202では0比較212により受信したパケットについて転送データ全てを廃棄したことを認識すると、1つのパケットの受信処理を終えたことになる。
【0059】
一方、受信バッファ更新リクエスト回路250では受信バッファ領域150に書き込まず、受信したパケットを廃棄することを指示していることにより、受信パケット廃棄判定140の出力信号226がアサートされていないため、受信バッファポインタ制御135に1つのパケットの受信処理を終えたことは報告しない。これにより受信バッファポインタ制御135は、RHPR132を更新しない。
【0060】
またパケット書き込み保留回路260は、レジスタ書き込み制御回路201からパケットを受信したことを信号253により報告を受けた時点で、既に受信パケット廃棄判定140が受信バッファ領域150に書き込まず、受信したパケットを廃棄することを指示している場合では、命令プロセッサ111からの指示を待つことなく、前述した廃棄処理を直に行なうために、主記憶書き込みリクエスト生成回路202に対して信号261を介して受信したパケットを主記憶に書き込むことの開始指示を行なう。
【0061】
一方、廃棄指示ビットを廃棄するように設定したOSでは、図12に示すようにユーザアプリケーションが受信を行なうまで待ち、ユーザアプリケーションが受信を行ない、受信バッファ領域として利用できるアドレスができた場合は、RTPR133を更新し、SC139を廃棄しないように設定する(1209)。これにより受信パケット廃棄判定140では受信したパケットを受信バッファ領域に書き込むことを受信制御141に指示する。それ以降の処理は(1)で説明した動作と同じである。
【0062】
また送信PUのOSは、図11で示した送信待ちキューに保持された受信PU番号と送信バッファ領域アドレスに従い再送処理を行なうことにより、廃棄されたパケットを受信PUにパケットを送ることができる。このOSの再送処理では、送信要求毎にタイマ監視を行ない、ある一定期間の間に受信PUからパケットを受信したことを報告するACKパケットが返らないことで、再送を行なえばよい。
【0063】
これにより受信バッファ領域150に空き領域がない場合に、OSの指示でそれ以降にそのプロセッサユニットに到着したパケットを廃棄することができる。
【0064】
これまでの説明では、各PU101の受信制御ユニット113で管理する受信バッファ領域が一面の場合を示した。しかし一面であるとユーザユーザアプリケーションプログラムなどが送信する一般的なパケット(以下、一般パケットと呼ぶ)と、並列プロセッサシステムシステム全体の制御を行なうためのパケット(以下、制御パケットと呼ぶ)が同一のネットワークを用いてパケット転送を行なう場合、両方のパケットが廃棄されることになる。しかし制御パケットは並列プロセッサシステムシステム全体の制御などに関わるため、制御パケットが廃棄されることは好ましくない。このため制御パケット用のネットワークと、一般パケット用のネットワークの2種類のネットワークを構成する必要がある。しかしこのためにはゲート数などの増えるため好ましくない。
【0065】
このため図5に示すように受信バッファを二面化して構成し、一方の受信バッファ領域を一般パケット転送に、もう一方を制御パケット転送に割り当てる。そして一般パケット転送による受信バッファ領域の空き領域不足の要因で、制御パケットが廃棄されないようにする。図5では、各PUの受信制御ユニット401のみを示す。その他の構成は図1と同じである。
【0066】
本図の受信制御ユニット501において、主記憶115上に構成される受信バッファ領域150を管理するための各レジスタは、受信バッファ領域対応に二面化される。本図では受信バッファ領域0と1として、それぞれに対応して各レジスタの名称の語尾に0と1を付けて区別する。受信バッファ領域0に対応しては、RBR0511、RHPR0512、RTPR0513、RSR0514、および受信バッファ0ポインタ制御515で管理される。受信バッファ領域1に対応しては、RBR1521、RHPR1522、RTPR1523、RSR1524、および受信バッファ1ポインタ制御525で管理される。これらの機能は図1と同じである。
【0067】
また受信バッファ領域0に対応して命令プロセッサ111からセット/リセットが行なえる廃棄指示ビット0(以下SC0と呼ぶ)536、受信バッファ領域1に対応して命令プロセッサ111からセット/リセットが行なえる廃棄指示ビット1(以下SC1と呼ぶ)535を設ける。
【0068】
また主記憶115上に構成される受信バッファ領域0と受信バッファ領域1の構成例を図7に示す。各レジスタの機能は図3で説明した内容と同じである。
【0069】
次に各プロセッサユニット間のパケット転送の動作について説明する。パケットの送信処理では、命令プロセッサ111が送信制御ユニット112を起動することにより行なわれる。送信制御ユニット112はパケットを生成し、ネットワーク102に送信する。ここで送信制御ユニット112は、例えば図8に示すようなパケットを生成する。ここでのパケットはパケットを受信すべきプロセッサユニットを示す受信PU番号301、パケットで転送するデータの長さを示す転送データ長302、多面化された受信バッファ領域のどの受信バッファ領域にパケットを書き込むかを指定する受信バッファタイプ801、パケットを送信したプロセッサユニットを示す送信PU番号303、転送されたパケットの種別を示すパケットタイプ304、および転送データ305から構成される。
【0070】
またネットワーク102では、パケットのヘッダの受信PU番号に従い、目的のPU101にパケットを転送する。これらの処理については従来技術と同様でよい。
【0071】
一方、受信処理において受信パケット廃棄判定0537は、図15と同様にSC0536で保持されている内容と、受信バッファ0ポインタ制御515からの受信バッファ領域0に空きがあるか否かの内容により、以下のように信号をアサートする。受信パケット廃棄判定0537では、(1)SC0536が廃棄を指示していないならば、受信バッファ領域0に空きがあるかを判定し、空きがあれば受信したパケットを受信バッファ領域0に書き込みが可能である場合は、信号571をアサートする。(2)また空きがなければ受信した状態のまま待つ場合は、信号572をアサートする。(3)SC0536が廃棄を指示しているのならば、受信したパケットを受信バッファ領域0に書き込まず、受信したパケットを廃棄する場合は、信号570をアサートする。
【0072】
また受信パケット廃棄判定1538は、SC1535で保持されている内容と、受信バッファ1ポインタ制御525からの受信バッファ領域1に空きがあるか否かの内容により、受信パケット廃棄判定0537と同様に判定する。
【0073】
受信パケット廃棄判定0537および受信パケット廃棄判定1538のそれぞれのパケットの受信処理については、下記に示す以外、図1の動作と同様である。
【0074】
受信制御539では図6に示すように、まずレジスタ書き込み制御601は、FIFO制御138からFIFO137にデータが入っていることを信号221により報告を受けると、信号224によりデータを読み出し、パケットヘッダレジスタ603に格納する。パケットヘッダレジスタ603に設定を終えると、レジスタ書き込み制御回路601は信号253によりパケット憶書き込み保留回路260に報告する。
【0075】
またレジスタ書き込み制御601では、信号234を介してパケットヘッダレジスタ603に格納されているバッファタイプを読み出し、それに従い信号693によりセレクタ690、セレクタ691、およびセレクタ692を制御する。バッファタイプが受信バッファ領域0を示している場合は、それぞれのセレクタで受信パケット廃棄判定0537の出力である信号670、671、672を選択する。一方バッファタイプが受信バッファ領域1を示している場合は、受信パケット廃棄判定1538の出力である信号680、681、682を選択する。
【0076】
パケット書き込み保留回路260では、レジスタ書き込み制御回路601からの報告により、受信パケット廃棄判定140の出力信号227に従い、主記憶書き込みリクエスト生成回路202に対して信号261を介して開始指示を行なう。
【0077】
以下、パケット憶書き込み保留回路260と主記憶書き込みリクエスト生成回路202による主記憶書き込み動作は図1の場合と同じである。また受信バッファアドレス更新リクエスト回路650の動作も受信パケット廃棄判定140の出力信号226に従う。そして受信バッファ領域150に書き込みを示し、受信パケット廃棄判定140の出力信号226がアサートされている場合は、0比較212が0になったことで信号693により対応する受信バッファポインタ制御に、信号610あるいは信号611を介して1つのパケットの受信処理を終えたことを報告する。
【0078】
ここで受信バッファ領域1に空き領域がなく、受信パケット廃棄判定1538が受信したパケットを廃棄することを指示し、かつ受信バッファ領域0には空き領域があり、受信パケット廃棄判定0537が受信したパケットを受信バッファ領域0に書き込みが可能であることを指示している場合で、パケットのバッファタイプが受信バッファ領域1のパケットと、それに引続き受信バッファ領域0のパケットを受信した場合について説明する。
【0079】
FIFO制御138からFIFO137にデータが入っていることを信号221により報告を受けると、信号224によりデータを読み出し、パケットヘッダレジスタ603に格納する。パケットヘッダレジスタ603に設定を終えると、レジスタ書き込み制御回路601は信号253によりパケット書き込み保留回路260に報告する。またレジスタ書き込み制御回路601では、パケットヘッダレジスタ603に格納されているバッファタイプに従い、セレクタ690、セレクタ691、セレクタ692を制御する。ここではバッファタイプが受信バッファ領域1を示しているため、信号693により受信パケット廃棄判定1538の出力である信号を選択する。具体的にはセレクタ690は信号580、セレクタ691は信号581、およびセレクタ692は信号582を選択する。
【0080】
パケット書き込み保留回路260では、レジスタ書き込み制御回路601からの報告により、受信したパケットを廃棄することを指示し、セレクタ692の出力信号227がアサートされていないため、主記憶書き込みリクエスト生成回路202に対して信号261を介して開始指示を行なう。
【0081】
主記憶書き込みリクエスト生成回路202では、図1の動作と同様に受信したパケットのヘッダおよび転送データ全てについて主記憶リクエストを生成する。主記憶書き込みリクエスト生成回路202は、主記憶制御ユニット114へのリクエスト信号230を信号252によりアドレス229/データ231と同時に出力する。一方AND回路251は、受信バッファ領域150に空きがなく、廃棄を指示していることにより、セレクタ690の出力信号225がアサートされているため主記憶書き込みリクエスト信号252を抑止し、主記憶制御ユニット114にリクエスト信号230を出力しない。また受信バッファ更新リクエスト回路650では受信バッファ領域150に書き込まず、受信したパケットを廃棄することを指示していることにより、セレクタ691の出力信号226がアサートされていないため、受信バッファポインタ制御525に1つのパケットの受信処理を終えたことは報告しない。
【0082】
一方FIFO制御534では、バッファタイプが受信バッファ領域1をもつパケットに引き続いて受信バッファ領域0をもつパケットがFIFOに格納されており、レジスタ書き込み制御回路601に対してFIFO533にデータが入っていることを信号221により報告する。
【0083】
レジスタ書き込み制御回路601は、FIFO制御534からFIFO533にデータが入っていることを信号221により報告を受けると、上記と同様にパケットヘッダレジスタ603に格納する。レジスタ書き込み制御回路601では、パケットヘッダレジスタ603に格納されているバッファタイプに従い、セレクタ690、セレクタ691、セレクタ692を制御する。ここではバッファタイプが受信バッファ領域0を示しているため、信号693により受信パケット廃棄判定0537の出力である信号を選択する。具体的にはセレクタ690は信号570、セレクタ691は信号571、およびセレクタ692は信号572を選択する。
【0084】
パケット書き込み保留回路260では、レジスタ書き込み制御回路601からの報告により、受信バッファ領域0に空き領域があり、受信パケット廃棄判定0537が受信したパケットを受信バッファ領域0に書き込みが可能であることを指示し、セレクタ692の出力信号227がアサートされていないため、主記憶書き込みリクエスト生成回路202に対して信号261を介して開始指示を行なう。
【0085】
主記憶書き込みリクエスト生成回路202では、図1の動作と同様に受信したパケットのヘッダおよび転送データ全てについて主記憶リクエスト信号230を生成する。主記憶書き込みリクエスト生成回路202は、主記憶制御ユニット114へのリクエスト信号230を信号252によりアドレス229/データ231と同時に出力する。
【0086】
AND回路251は、受信バッファ領域150に書き込み可能であることを指示していることにより、セレクタ690の出力信号225がアサートされていないため主記憶書き込みリクエスト信号252を抑止せず、主記憶制御ユニット114にリクエスト信号230を出力する。また受信バッファ更新リクエスト回路650では受信バッファ領域150に書き込まず、受信バッファ領域150に書き込み可能であることにより、セレクタ691の出力信号226がアサートされているため、受信バッファポインタ制御515に1つのパケットの受信処理を終えたことは報告する。
【0087】
上記のように受信バッファ領域を多面化し、それぞれの受信バッファ領域について廃棄ができるので、並列プロセッサシステムシステム全体の制御などに関わる制御パケットについては廃棄されず、また制御パケット用のネットワークと一般パケット用のネットワークを個別に設ける必要がない。
【0088】
尚、本発明では1つのパケットが1つのメッセージを構成し、1つのパケットを受信する毎に受信割り込みが発生する場合を示したが、1つのメッセージを複数のパケットに分割し、1つのメッセージの最後を示すパケットだけが割り込む場合にも上記の処理と同様に行なえる。
【0089】
これまでの説明では、命令プロセッサ111の指示による廃棄を示した。一方OSが正常に動作できず、割り込みを受け付けられない状態や主記憶制御ユニットに障害が発生し、受信パケットの主記憶書き込みができない状態が発生した場合では、受信処理が行なえず、パケットはネットワークに滞留したままになり、他のデータ転送を妨げる可能性がある。
【0090】
具体的にはOSが正常に動作できない状態で他のデータ転送を妨げる場合は、受信バッファ領域に空き領域がなく、命令プロセッサに割り込みを発生し、OSからの受信パケット処理の指示を待っている場合で、OSからの指示が全くない場合である。また主記憶制御ユニットに障害が発生し、他のデータ転送を妨げる場合は、受信パケット書き込み制御が主記憶への書き込みリクエストを主記憶制御ユニットに送っても受け付けられず、受信したパケットを主記憶に書き込めない場合である。
【0091】
これらを解決するために図9に示すように、受信パケット廃棄判定901、命令プロセッサ監視タイマ902、主記憶制御障害検出903を設ける。それ以外は図1と同じ構成である。
【0092】
受信パケット廃棄判定901では、SC139で保持されている内容と、受信バッファポインタ制御135から受信バッファ領域に空きがあるか否かの内容、命令プロセッサ監視タイマ902によるOS異常を示す信号911、および主記憶制御障害検出903による主記憶制御ユニット障害を示す信号912により、以下のように判定する。受信パケット廃棄判定901では、(1)SC139が廃棄を指示していない、かつ信号911がOS異常を示していない、かつ信号912が主記憶制御ユニット障害を示していないならば、受信バッファ領域に空きがあるかを判定し、空きがあれば受信したパケットを受信バッファ領域に書き込みが可能であることを指示する。(2)また上記の条件で空きがなければ受信した状態のまま待つことを指示する。(3)SC139が廃棄を指示している、あるいは信号911がOS異常を示している、あるいは信号912が主記憶制御ユニット障害を示しているならば、受信したパケットを受信バッファ領域に書き込まず、受信したパケットを廃棄することを受信制御141に対して指示する。
【0093】
命令プロセッサ監視タイマ902は、OSから設定された値をある一定間隔でマイナス1づつ行なうタイマである。このタイマに設定された値が0になった時にOSが正常に動作できないと判断し、信号911をOS異常として示す。このためOSは命令プロセッサ監視タイマ902に設定した値が0になる前に、新たに命令プロセッサ監視タイマ902に設定する。この動作でOSが正常に動作していると判断する。
【0094】
主記憶制御障害検出903は、受信制御141が主記憶制御ユニット114に対してパケットデータを書き込むためのリクエストが送られてから、主記憶制御ユニット114がそのリクエストを受け付けるまでの間を時間監視する。主記憶制御障害検出903は、予めシステムにより決められた値を保持し、受信制御114が主記憶制御ユニット114に対してパケットデータを書き込むためのリクエストを送くると、システムにより決められた値をタイマに設定し、その値をある一定間隔でマイナス1づつ行なう。このタイマに設定された値が0になった時に主記憶制御ユニット114に障害が発生したと判断し、信号912を主記憶制御ユニット障害として示す。一方主記憶制御ユニット114がリクエストを受け付けると、そのタイマは停止し、新たなリクエストに備える。
【0095】
また命令プロセッサ監視タイマ902、主記憶制御障害検出903では、それぞれでOS異常あるいは主記憶制御ユニット障害を検出した場合は、命令プロセッサ111に信号910を介して割り込みを発生する。
【0096】
これによりOSが正常に動作できず、割り込みを受け付けられない状態や主記憶制御ユニットに障害が発生し、受信パケットの主記憶書き込みができない状態が発生した場合でも、他のデータ転送を妨げない。
【0097】
【発明の効果】
受信したパケットを格納する受信バッファ領域に空き領域がない場合や、受信プロセッサユニットで障害が発生し、パケットを受信できない場合に、受信プロセッサユニットで受信パケットの廃棄ができるので、他の多数のプロセッサユニット間のパケット転送が妨げられないようにできる。
【図面の簡単な説明】
【図1】本発明による並列プロセッサシステムの一実施例を示す構成図。
【図2】本発明による受信制御の一実施例を示す構成図。
【図3】本発明による受信バッファの一実施例を示す構成図。
【図4】本発明によるパケットフォーマットの一実施例を示す構成図。
【図5】本発明による受信バッファを多面化した場合の受信制御ユニットの一実施例を示す構成図。
【図6】本発明による受信バッファを多面化した場合の受信制御の一実施例を示す構成図。
【図7】本発明による多面化した受信バッファの一実施例を示す構成図。
【図8】本発明による受信バッファを多面化した場合のパケットフォーマットの一実施例を示す構成図。
【図9】本発明による並列プロセッサシステムの一実施例を示す構成図。
【図10】本発明によるパケット送受信処理フローを示す図。
【図11】本発明によるソフトウェアの送信処理フローを示す図。
【図12】本発明によるソフトウェアの受信処理フローを示す図。
【図13】本発明によるソフトウェアの受信割り込み処理フローを示す図。
【図14】本発明によるソフトウェアの受信バッファ領域に空き領域がない場合の処理フローを示す図。
【図15】本発明による受信パケット廃棄判定の一実施例を示す図。
【図16】本発明による受信バッファポインタ制御の一実施例を示す構成図。
【符号の説明】
101…プロセッサユニット、102…ネットワーク、111…命令プロセッサ、112…送信制御ユニット、113…受信制御ユニット、114…主記憶制御ユニット、115…主記憶、131…受信バッファの先頭アドレスを示すベースレジスタ、132…受信バッファの未使用領域の先頭を示すヘッダポインタレジスタ、133…受信バッファの未使用領域の終端を示すテイルポインタレジスタ、134…受信バッファのサイズを示すサイズレジスタ、135…受信バッファポインタ制御、136…命令プロセッサアクセス制御、137…FIFO、138…FIFO制御、139…廃棄指示ビット、140…受信パケット廃棄判定、141…受信制御、150…受信バッファ領域、201…レジスタ書き込み制御回路、260…パケット書き込み保留回路、202…主記憶書き込みリクエスト生成回路、250…受信バッファアドレス更新リクエスト回路、251…AND回路。
Claims (4)
- 複数のプロセッサユニットと、
該複数のプロセッサユニットを相互に接続し、それらの間でデータを転送するネットワークとを有し、
各プロセッサユニットは、
命令を実行する命令プロセッサと、
命令とデータを格納する主記憶と、
該命令プロセッサの指示により該主記憶からデータを読みだし、該ネットワークにそのデータ及びパケットヘッダからなるパケットを転送する送信ユニットと、
該ネットワークから送られてきたパケットを受信して、主記憶上に設けられた受信バッファに書き込む受信ユニットとを有し、
該受信ユニットは、
前記命令プロセッサを制御するOSが発行する命令に応答して前記命令プロセッサが設定するパケットの廃棄可否についての指示を保持するレジスタと、
主記憶上に構成された受信バッファ領域に、該受信したパケットを保持するに必要な空き領域があるか否かを判定する受信バッファ制御手段と、
前記レジスタに保持された指示がパケットの廃棄否を示す場合には、受信したパケット内のデータを格納する大きさの空き領域が該受信バッファにあると該受信バッファ制御手段により判断されたとき、該受信したパケット内のデータを該受信バッファ領域に書き込み、前記空き領域がないと該受信バッファ制御手段により判断されたときは該受信バッファ領域への書き込みを行わす、パケットを受信した状態で保留し、一方前記レジスタに保持された指示がパケットの廃棄可を示す場合には、前記受信バッファ制御手段の判定に関わりなく該受信したパケット内のデータを該受信バッファ領域に書き込まずにかつ該受信したパケット廃棄するパケット処理回路を有する並列プロセッサシステム。 - 該受信ユニットは、受信したパケット内のデータを格納する大きさの空き領域が該受信バッファにないと該受信バッファ制御手段により判断されたとき、該OSにパケットの廃棄可を指示することを促すための割り込み信号を発生する回路をさらに有することを特徴とする請求項1の並列プロセッサシスム。
- 前記受信ユニットは、前記保持された廃棄指示が廃棄でないことを示している場合、該受信バッファに空きが発生するまで、該受信したパケット内のデータを保持し、その空きが発生した時点で該パケット内のデータを該主記憶へ書き込むパケット書き込み保留回路をさらに有する請求項1記載の並列プロセッサシステム。
- 前記受信ユニットは、前記命令プロセッサのOSに異常が発生したことを検知する命令プロセッサ監視タイマをさらに有し、前記パケット処理回路は該命令プロセッサ監視タイマがOSの異常を検知したとき前記レジスタの内容に関わらず前記受信した受信したパケット内のデータを該受信バッファ領域に書き込まずにかつ該受信したパケット廃棄することを特徴とする請求項1の並列プロセッサシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP05340694A JP3641834B2 (ja) | 1994-03-24 | 1994-03-24 | 並列プロセッサシステムおよびそれに適したパケット廃棄方法 |
US08/407,853 US5594868A (en) | 1994-03-24 | 1995-03-21 | Processor unit for a parallel processor system discards a received packet when a reception buffer has insufficient space for storing the packet |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP05340694A JP3641834B2 (ja) | 1994-03-24 | 1994-03-24 | 並列プロセッサシステムおよびそれに適したパケット廃棄方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07262151A JPH07262151A (ja) | 1995-10-13 |
JP3641834B2 true JP3641834B2 (ja) | 2005-04-27 |
Family
ID=12941951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP05340694A Expired - Fee Related JP3641834B2 (ja) | 1994-03-24 | 1994-03-24 | 並列プロセッサシステムおよびそれに適したパケット廃棄方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5594868A (ja) |
JP (1) | JP3641834B2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5729713A (en) * | 1995-03-27 | 1998-03-17 | Texas Instruments Incorporated | Data processing with first level cache bypassing after a data transfer becomes excessively long |
EP0767595B1 (en) * | 1995-10-06 | 2001-04-04 | Alcatel | Method and apparatus for shaping and multiplexing bursty traffic |
JP2002271389A (ja) * | 2001-03-07 | 2002-09-20 | Hitachi Telecom Technol Ltd | パケット処理装置およびパケット処理方法 |
US7808905B2 (en) * | 2001-09-27 | 2010-10-05 | Panasonic Corporation | Transmission method, sending device and receiving device |
DE10157103A1 (de) * | 2001-11-21 | 2003-05-28 | Sel Alcatel Ag | Verfahren und Steuergerät zur Zuteilung von variablen Zeitschlitzen für eine Datenübertragung in einem paketorientierten Datennetzwerk |
US7289509B2 (en) * | 2002-02-14 | 2007-10-30 | International Business Machines Corporation | Apparatus and method of splitting a data stream over multiple transport control protocol/internet protocol (TCP/IP) connections |
US7296101B2 (en) * | 2004-02-17 | 2007-11-13 | Intel Corporation | Method and system for using a patch module to process non-posted request cycles and to control completions returned to requesting device |
US8559443B2 (en) | 2005-07-22 | 2013-10-15 | Marvell International Ltd. | Efficient message switching in a switching apparatus |
US7822891B2 (en) * | 2006-06-13 | 2010-10-26 | Broadcom Corporation | System and method for transferring a multidimensional array of data to a non-contiguous buffer |
US10802754B2 (en) * | 2018-03-12 | 2020-10-13 | Micron Technology, Inc. | Hardware-based power management integrated circuit register file write protection |
CN112235268B (zh) * | 2020-09-29 | 2023-01-24 | 北京智芯微电子科技有限公司 | 安全通信方法、系统及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5280498A (en) * | 1989-06-29 | 1994-01-18 | Symbol Technologies, Inc. | Packet data communication system |
JP2791146B2 (ja) * | 1989-11-15 | 1998-08-27 | 株式会社日立製作所 | データ処理装置 |
US5184347A (en) * | 1991-07-09 | 1993-02-02 | At&T Bell Laboratories | Adaptive synchronization arrangement |
US5319638A (en) * | 1991-09-12 | 1994-06-07 | Bell Communications Research, Inc. | Link-by-link congestion control for packet transmission systems |
US5390299A (en) * | 1991-12-27 | 1995-02-14 | Digital Equipment Corporation | System for using three different methods to report buffer memory occupancy information regarding fullness-related and/or packet discard-related information |
US5459723A (en) * | 1994-03-08 | 1995-10-17 | Advanced Micro Devices | Packet management device for fast-packet network |
-
1994
- 1994-03-24 JP JP05340694A patent/JP3641834B2/ja not_active Expired - Fee Related
-
1995
- 1995-03-21 US US08/407,853 patent/US5594868A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH07262151A (ja) | 1995-10-13 |
US5594868A (en) | 1997-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2772343B2 (ja) | プロセッサ及びメモリの間のトラフィックの経路指定装置 | |
JP3365705B2 (ja) | 分散型データ処理システム | |
KR100268565B1 (ko) | 다중 처리 시스템에서 타스크를 큐잉하기 위한 시스템 및 방법 | |
US7664897B2 (en) | Method and apparatus for communicating over a resource interconnect | |
US6181705B1 (en) | System and method for management a communications buffer | |
US6978459B1 (en) | System and method for processing overlapping tasks in a programmable network processor environment | |
US7633856B2 (en) | Multi-node system, internodal crossbar switch, node and medium embodying program | |
USRE43825E1 (en) | System and method for data forwarding in a programmable multiple network processor environment | |
JP4317365B2 (ja) | 周辺デバイスからホスト・コンピュータ・システムに割込みを転送する方法および装置 | |
JPH06309252A (ja) | 相互接続インタフェース | |
JP3641834B2 (ja) | 並列プロセッサシステムおよびそれに適したパケット廃棄方法 | |
JPH0944424A (ja) | 遠隔情報処理システム間のメッセージ伝送方法 | |
US8170041B1 (en) | Message passing with parallel queue traversal | |
US20050076177A1 (en) | Storage device control unit and method of controlling the same | |
JP2008283608A (ja) | 冗長化された通信経路を切り替える計算機、プログラム及び方法 | |
JP3825692B2 (ja) | コンピュータシステム内に存在しないプロセッサに対する無効化要求を処理する方法及び装置 | |
US5878226A (en) | System for processing early arrival messages within a multinode asynchronous data communications system | |
US7336657B2 (en) | Inter-nodal data transfer system and data transfer apparatus | |
EP1358565B1 (en) | Method and apparatus for preventing starvation in a multi-node architecture | |
US5706443A (en) | Method and apparatus for enabling pipelining of buffered data | |
JP2001022718A (ja) | 並列処理装置 | |
JP2924783B2 (ja) | リモートリード処理方法およびその装置 | |
JPH0922397A (ja) | 並列計算機 | |
KR20010095103A (ko) | 데이터 블록 전송 방법 및 장치 | |
JP2002057712A (ja) | パケットメモリのメモリリーク復旧方法およびバッファ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040113 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040315 |
|
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: 20050104 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050117 |
|
LAPS | Cancellation because of no payment of annual fees |