(57)【特許請求の範囲】
【請求項１】
複数のプロセッサユニットと、
該複数のプロセッサユニットを相互に接続し、それらの間でデータを転送するネットワークとを有し、
各プロセッサユニットは、
命令を実行する命令プロセッサと、
命令とデータを格納する主記憶と、
該命令プロセッサの指示により該主記憶からデータを読みだし、該ネットワークにそのデータ及びパケットヘッダからなるパケットを転送する送信ユニットと、
該ネットワークから送られてきたパケットを受信して、主記憶上に設けられた受信バッファに書き込む受信ユニットとを有し、
該受信ユニットは、
前記命令プロセッサを制御するＯＳが発行する命令に応答して前記命令プロセッサが設定するパケットの廃棄可否についての指示を保持するレジスタと、
主記憶上に構成された受信バッファ領域に、該受信したパケットを保持するに必要な空き領域があるか否かを判定する受信バッファ制御手段と、
前記レジスタに保持された指示がパケットの廃棄否を示す場合には、受信したパケット内のデータを格納する大きさの空き領域が該受信バッファにあると該受信バッファ制御手段により判断されたとき、該受信したパケット内のデータを該受信バッファ領域に書き込み、前記空き領域がないと該受信バッファ制御手段により判断されたときは該受信バッファ領域への書き込みを行わす、パケットを受信した状態で保留し、一方前記レジスタに保持された指示がパケットの廃棄可を示す場合には、前記受信バッファ制御手段の判定に関わりなく該受信したパケット内のデータを該受信バッファ領域に書き込まずにかつ該受信したパケット廃棄するパケット処理回路を有する並列プロセッサシステム。
【請求項２】
該受信ユニットは、受信したパケット内のデータを格納する大きさの空き領域が該受信バッファにないと該受信バッファ制御手段により判断されたとき、該ＯＳにパケットの廃棄可を指示することを促すための割り込み信号を発生する回路をさらに有することを特徴とする請求項１の並列プロセッサシスム。
【請求項３】
前記受信ユニットは、前記保持された廃棄指示が廃棄でないことを示している場合、該受信バッファに空きが発生するまで、該受信したパケット内のデータを保持し、その空きが発生した時点で該パケット内のデータを該主記憶へ書き込むパケット書き込み保留回路をさらに有する請求項１記載の並列プロセッサシステム。
【請求項４】
前記受信ユニットは、前記命令プロセッサのＯＳに異常が発生したことを検知する命令プロセッサ監視タイマをさらに有し、前記パケット処理回路は該命令プロセッサ監視タイマがＯＳの異常を検知したとき前記レジスタの内容に関わらず前記受信した受信したパケット内のデータを該受信バッファ領域に書き込まずにかつ該受信したパケット廃棄することを特徴とする請求項１の並列プロセッサシステム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は並列プロセッサシステムに関わり、特にプロセッサユニット間パケット転送の受信制御において受信バッファに空き領域がない場合に、他のパケット転送を妨げないように制御可能な受信制御に好適な並列プロセッサシステムに関する。
【０００２】
【従来の技術】
一般に並列プロセッサシステムのネットワークにおいては、完全クロスバスイッチネットワークで構成すれば最小のスイッチ段数で任意のプロセッサユニット間で転送が可能であるが、プロセッサユニット数が増えてくれば完全クロスバスイッチネットワークを構成するのは困難になる。このため多段スイッチネットワークで構成される場合が多い。
【０００３】
ネットワーク内のルーティング方式では、電子情報通信学会論文誌ＤーＩ  ＶＯＬ．Ｊ７５ーＤーＩ  Ｎｏ．８の”並列計算機ＡＰ１０００における相互結合網のルーチング方式”、第６００ページから第６０６ページに記載されているように、ストアアンドフォワードに比較し、レイテンシィが小さいワームホールルーティングを採用される場合が多い。このワームホームルーティングは、転送に先だって全ての経路を確保しない。ある経路（スイッチ）においてパケットの先頭からパケットの終りが通り抜ける間だけ、経路を確保する。
【０００４】
並列プロセッサシステムのパケット受信制御方式では、情報処理学会論文誌ＶＯＬ．３４  Ｎｏ．４の”高速メッセージハンドリング機構”、第６３８ページから第６４６ページに記載されている。ここでは、各プロセッサユニットにリングバッファを構成し、非同期的なメッセージ受信に対応している。このリングバッファはベースレジスタ（ＢＡＳＥ）、ライトポインタ（ＷＴＰ）、リードポインタ（ＲＤＰ）で管理する。ＢＳＡＥはリングバッファの先頭アドレスを示す。ＷＴＰは次に受信されるデータが書き込まれるアドレスを示す。ＲＤＰはＣＰＵが現在アクセス中のアドレスを示す。ＣＰＵはＲＤＰに対して任意の値を書き込むことができる。
【０００５】
リングバッファに空き領域がないことは、ＷＴＰとＲＤＰが同じ値であることで判別する。もし同じ値であった場合、ＣＰＵに割り込みを発生し、リングバッファに空き領域ができるまで受信を停止する。
【０００６】
【発明が解決しようとする課題】
上記従来技術では、リングバッファに空き領域がない場合、ＣＰＵに割り込みを発生し、リングバッファに空き領域ができるまで受信を停止する。受信を停止した以降、そのプロセッサユニットに到着したパケット処理については言及されていない。しかし受信の停止が到着したパケットをプロセッサユニットの入り口で待たす場合、パケットはネットワークに滞留したままになる。またワームホールルーティングではそのパケットが経路を確保したまま待たされる。
【０００７】
従来技術では上記の点について配慮がされておらず、他のプロセッサユニット間のパケットを転送する場合で、かつそのパケットの経路が受信の停止のために滞留したパケットの経路を使用する場合では経路が使用できない。このため経路が使用できるまで、他のプロセッサユニット間のパケットはその経路の入り口で待たされる。パケット転送が頻繁に行なわれる状況では、これにより多数のプロセッサユニット間転送が妨げられるという問題がある。
【０００８】
また受信したパケットを受信バッファに書き込む場合において、その書き込みに関係する回路およびソフトウェア処理などに障害が発生し、パケットの書き込みができなくなった場合でも、そのパケットが使用する経路は他のパケット転送で使用できなくなる。この場合においても多数のプロセッサユニット間転送が妨げられるという問題がある。
【０００９】
本発明の目的は、受信バッファの空き領域が直に確保されない場合に、長時間受信を保留するのを防ぐデータ受信方法、およびそれに適した並列プロセッサシステムを提供することにある。
【００１０】
また本発明の目的は、受信処理において障害発生によりパケット受信ができない場合に、多数のプロセッサユニット間のパケット転送が妨げられないように動作できる並列プロセッサシステムを提供することにある。
【００１１】
【課題を解決するための手段】
上記目的は、受信バッファに空き領域がない場合に、それ以降にそのプロセッサユニットに到着したパケットを廃棄するように動作させることにより達成される。受信パケットの廃棄指示は、受信バッファ領域に空き領域がない場合はソフトウェアで、障害を検出した場合はハードウェアで行なう。廃棄指示が行なわれた場合の動作は、それ以降に受信したパケットが対応する受信バッファ領域に受信されるパケットである場合に、そのパケット全てについて廃棄する。また受信バッファ領域の空き領域が確保できた場合はソフトウェアにより廃棄指示の取消を行なう。
【００１２】
このため各プロセッサユニットのネットワーク受信処理を行なう受信制御ユニットにおいて、主記憶上に構成される受信バッファ領域を管理するための、受信バッファ領域の先頭アドレスを示すベースレジスタ（ＲＢＲ）、受信バッファ領域の未使用領域の先頭を示し、受信したパケットを書き込むアドレスを示すヘッダポインタレジスタ（ＲＨＰＲ）、受信バッファ領域の未使用領域の終端を示すテイルポインタレジスタ（ＲＴＰＲ）、受信バッファ領域のサイズを示すサイズレジスタ（ＲＳＲ）、ＲＢＲ、ＲＨＰＲ、ＲＴＰＲ、ＲＳＲを管理し、パケットを受信した場合に受信バッファ領域に書き込むためのアドレスを生成し、また受信バッファ領域に空き領域がないことを検出する受信バッファポインタ制御、命令を実行する命令プロセッサから受信制御ユニットをアクセスする場合のアクセス制御や受信処理に関係する割り込み生成を行なう命令プロセッサアクセス制御、ネットワークから届いたパケットを一時的に格納するＦＩＦＯ、ＦＩＦＯの読みだし／書き込み制御を行なうＦＩＦＯ制御、命令プロセッサからセット／リセットが行なえる廃棄指示ビット（ＳＣ）、廃棄指示ビットと受信バッファポインタ制御から受信したパケットを受信バッファ領域に書き込むか、書き込みを待たせるか、あるいは廃棄するかを判定する受信パケット廃棄判定、および受信したパケットを受信バッファ領域に書き込む制御を行なう受信制御を設ける。
【００１３】
【作用】
主記憶上に構成される受信バッファ領域を管理するためのＲＢＲ、ＲＨＰＲ、ＲＴＰＲ、ＲＳＲは命令プロセッサアクセス制御を介して命令プロセッサにより初期化される。ネットワークから送られてきたパケットはＦＩＦＯ制御に従い、ＦＩＦＯに格納される。ＦＩＦＯ制御はＦＩＦＯにデータが入っていることを受信制御に報告する。
【００１４】
受信パケット廃棄判定では、廃棄指示ビットで保持されている内容と、受信バッファポインタ制御から受信バッファ領域に空きがあるか否かの内容により、次のように判定し、受信制御に指示する。廃棄指示ビットが廃棄を指示しているのならば、受信したパケットを受信バッファ領域に書き込まず、受信したパケットを廃棄することを指示する。廃棄指示ビットが廃棄を指示していないならば、受信バッファ領域に空きがあるかを判定し、空きがあれば受信したパケットを受信バッファ領域に書き込みが可能であることを指示する。また空きがなければ受信バッファ領域に書き込まず、受信した状態のまま待つことを指示する。さらに障害を検出した場合は、受信したパケットを廃棄することを指示する。
【００１５】
受信制御ではＦＩＦＯ制御からパケットを受信したことの報告を受けると、まず受信パケット廃棄判定の指示に従う。受信バッファ領域に書き込み可能であることを指示している場合は、受信制御がパケットを書き込むための受信バッファアドレスを受信バッファポインタ制御から読み出す。受信制御ではパケットヘッダをＦＩＦＯからパケットを読み出す。そのパケットヘッダで示される転送データ長に従い、転送データをＦＩＦＯから読み出しながら、そのパケットを主記憶上に構成される受信バッファ領域に書き込む。受信したパケットの受信バッファ領域への書き込みが終了すれば、受信制御は受信バッファポインタ制御に報告する。
【００１６】
受信バッファポインタ制御では受信パケットの書き込み終了の報告があると、ＲＨＰＲを更新し、受信バッファ領域に空き領域があるかないかをチェックする。もし受信バッファ領域に空き領域がなければ命令プロセッサアクセス制御を介して命令プロセッサに割り込みを発生する。また受信パケット廃棄判定にも報告する。
【００１７】
受信パケット廃棄判定が受信した状態のまま待つことを指示している場合は、受信制御ではパケットが到着しても受信処理を行なわない。即ち到着したパケットは受信処理が行なわれず、ネットワークに滞留したままになる。
【００１８】
受信パケット廃棄判定が受信したパケットを廃棄することを指示している場合は、受信制御ではＦＩＦＯ制御を介してＦＩＦＯからパケットを読みだし、パケットヘッダに示されている転送データ長に従い、転送データ長分だけ転送データをどこにも書き込まず、読み捨てる。即ちこの処理では命令プロセッサで実行されているソフトウェアからはパケットが受信されていないようにみえる。
【００１９】
これにより受信バッファ領域に空き領域がない場合に、ソフトウェアの指示でそれ以降にそのプロセッサユニットに到着したパケットを廃棄することができ、ネットワーク上の他プロセッサユニット間のパケット転送が妨げない。
【００２０】
【実施例】
以下、本発明の一実施例を図１を用いて説明する。図１は本発明の並列プロセッサシステムの構成の一実施例である。ここでの並列プロセッサシステムは複数のプロセッサユニット１０１（以下ＰＵと呼ぶ）が任意のプロセッサユニット間でデータ転送が可能なネットワーク１０２に接続される。尚、本図ではＰＵは２台のみ示し、その他は省略している。
【００２１】
ＰＵ１０１は、命令を実行する命令プロセッサ（以下命令プロセッサと呼ぶ）１１１、命令プロセッサ１１１の指示によりパケットを生成しネットワーク１０２にパケットを送信する送信制御ユニット１１２、ネットワーク１０２から到着したパケットの受信処理を行なう受信制御ユニット１１３、命令プロセッサ１１１、送信制御ユニット１１２、受信制御ユニット１１３からの要求に応じて主記憶１１５のアクセス制御を行なう主記憶制御ユニット１１４、および命令プロセッサが実行する命令やデータを記憶する主記憶１１５から構成される。
【００２２】
また受信制御ユニット１１３は、主記憶１１５上に構成される受信バッファ領域１５０を管理するためのベースレジスタ１３１（ＲＢＲ）、ヘッダポインタレジスタ１３２（ＲＨＰＲ）、テイルポインタレジスタ１３３（ＲＴＰＲ）、サイズレジスタ１３４（ＲＳＲ）、ＲＢＲ１３１、ＲＨＰＲ１３２、ＲＴＰＲ１３３、ＲＳＲ１３４を管理し、パケットを受信した場合に受信バッファ領域１５０に書き込むためのアドレスを生成し、また受信バッファ領域１５０に空き領域がないことを検出する受信バッファポインタ制御１３５、命令プロセッサ１１１から受信制御ユニット１１３をアクセスする場合のアクセス制御や受信処理に関係する割り込み生成を信号１６５を介して行なう命令プロセッサアクセス制御１３６、ネットワーク１０２から届いたパケットを一時的に格納するデータレジスタ群であるＦＩＦＯ１３７、ＦＩＦＯ１３７の読みだし／書き込みアドレスの制御を行なうＦＩＦＯ制御１３８、命令プロセッサアクセス制御１３６を介して命令プロセッサ１１１からセット／リセットが行なえる廃棄指示ビット（ＳＣと呼ぶ）１３９、ＳＣ１３９と受信バッファポインタ制御１３５から受信したパケットを受信バッファ領域１５０に書き込むか否か、あるいは廃棄するかを判定する受信パケット廃棄判定１４０、および受信したパケットを受信バッファ領域１５０に書き込むための制御を行なう受信制御１４１から構成される。
【００２３】
ここで主記憶１１５上に構成される受信バッファ領域１５０の構成例を図３に示す。ベースレジスタ１３１（ＲＢＲ）は受信バッファ領域１５０の先頭アドレスを示す。ヘッダポインタレジスタ１３２（ＲＨＰＲ）は、受信バッファ領域１５０の未使用領域の先頭を示し、受信したパケットの書き込むアドレスを示す。またＲＨＰＲ１３２はパケットを受信する毎に受信バッファポインタ制御１３５が更新される。テイルポインタレジスタ１３３（ＲＴＰＲ）は受信バッファ領域１５０の未使用領域の終端を示し、命令プロセッサにより任意の値が書き込まれる。サイズレジスタ１３４（ＲＳＲ）は受信バッファ領域１５０のサイズを示す。
【００２４】
また受信バッファポインタ制御１３５の構成例を図１６に示す。受信バッファポインタ制御１３５は、ＲＨＰＲ１３２の出力とＲＴＰＲ１３３の出力を比較し、受信バッファ領域１５０に空き領域がないことを検出する空き領域チェック回路１６０１、ＲＨＰＲ１３２の出力とパケット長を加算し、次の受信バッファ領域を決定するＲＨＰＲ加算器１６０２、ＲＢＲ１３１の出力とＲＳＲ１３４の出力を加算し、受信バッファ領域の最終端を求める再終端加算器１６０３、再終端加算器の出力１６１０とＲＨＰＲ１３２の出力を比較し、ＲＨＰＲ１３２で保持するアドレスが受信バッファの再終端にあることをチェックするＲＨＰＲラップアラウンドチェック回路１６０４、命令プロセッサアクセス制御１３６および受信制御１４１からのＲＨＰＲ１３２の更新要求に従い、セレクタ１６０７を制御し、ＲＨＰＲ１３２の更新データを決定するＲＨＰＲ更新制御回路１６０５、および命令プロセッサアクセス制御１３６からの更新要求に従い、ＲＢＲ１３１、ＲＴＰＲ１３３、ＲＳＲ１３４の更新を行なう受信バッファ領域レジスタ更新制御回路１６０６から構成される。本発明においては送受信処理を行なう前にＯＳがＲＢＲ１３１、ＲＨＰＲ１３２、ＲＴＰＲ１３３、ＲＳＲ１３４の初期設定を行なう。具体的には命令プロセッサ１１１が信号線１６５を介して命令プロセッサアクセス制御１３６に要求する。命令プロセッサアクセス制御１３６は、その要求を解読し、信号線１６１１を介してＲＨＰＲ更新回路１６０５あるいは受信バッファ領域更新制御回路１６０６に要求する。それぞれの回路ではその要求に従い、対応するレジスタを更新する。また受信制御１４１からのＲＨＰＲ１３２の更新要求は信号２２８を介して行なわれ、ＲＨＰＲ更新回路１６０５がＲＨＰＲラップアラウンドチェック回路１６０４の出力である信号１６１３によりセレクタ１６０７を制御し、更新する。ＲＨＰＲ更新回路１６０５では信号１６１４がＲＨＰＲ１３２で保持するアドレスが受信バッファの再終端にあることを示している場合はＲＢＲ１３１の出力をセレクタ１６０７により選択し、それをＲＨＰＲ１３２に設定する。一方、再終端でないことを示している場合はＲＨＰＲ加算器１６０２の出力をセレクタ１６０７により選択し、それをＲＨＰＲ１３２に設定する。またＲＨＰＲ更新回路１６０５ではＲＨＰＲ１３２を更新した後、空き領域チェック回路１６０１の出力である信号１６１５が空き領域がないことを示している場合は信号１６２０により命令プロセッサアクセス制御１３６を介して命令プロセッサ１１１に割り込みを発生する。尚、本発明においてはパケットサイズは任意のサイズでよいが説明を簡単にするために、ここではパケットサイズを固定値としている。
【００２５】
次にソフトウェアの送受信処理の動作について説明する。まず本発明における基本的なプロセッサユニット間のパケット転送の送受信方法の一実施例を図１０を用いて説明する。本発明では、送信ＰＵで動作する送信ユーザアプリケーション１０００が送信要求を行なうと、オペレーティングシステム（以下ＯＳと呼ぶ）１００１はＯＳ空間内の送信バッファ領域１００２にユーザアプリケーションから指定された送信データ１００３をコピーする。そしてＯＳ１００１はコピーした送信バッファ領域１００２のアドレスを送信制御ユニット１１２に渡す。送信制御ユニット１１２は、与えられた送信バッファ領域１５０のアドレスから転送データを読みだし、パケットを生成し、ネットワーク１０２に送出する。ネットワーク１０２ではパケットを目的の受信ＰＵに転送する。受信ＰＵの受信制御ユニット１１３はパケットを受信すると、そのパケットをＯＳ空間内の受信バッファ領域１５０に書き込む。一方、受信ユーザアプリケーション１００４では受信データを要求すると、受信ＰＵのＯＳ１００５が受信バッファ領域１５０を検索し、受信ユーザアプリケーション１００４が要求する受信データが届いている場合は受信ユーザアプリケーション１００４の受信領域１００６にコピーする。以上のようにユーザアプリケーションの送受信領域からＯＳ空間内の送受信バッファ領域を介して送受信処理が行なわれる。
【００２６】
次に送信処理について図１１を用いて説明する。送信ＰＵで動作するユーザアプリケーションが送信を行なう場合は、受信ＰＵ番号、送信データアドレスによりＯＳに送信要求を行なう（１１００）。ＯＳはその要求に従い、ＯＳ空間内の送信バッファ領域１００２にユーザアプリケーションから指定された送信データ１００３をコピーする（１１０１）。そしてＯＳは、受信ＰＵ番号と、コピーした送信バッファ領域１００２のアドレスを送信制御ユニット１１２に渡す（１１０２）。そしてＯＳはＯＳ空間内に送信完了待ちキューを構成し、そのキューに送信要求が行なわれた受信ＰＵ番号と送信バッファ領域アドレスを登録し、送信処理を終え、ユーザアプリケーションに制御を戻す（１１０３）。ここで送信完了待ちキューは、受信ＰＵが転送データを受信したことの報告（以下、ＡＣＫパケットと呼ぶ）があった時に、そのキューから削除される。
【００２７】
次に受信処理について図１２を用いて説明する。受信ＰＵで動作するユーザアプリケーションが受信を行なう場合は、送信ＰＵ番号、受信領域アドレスによりＯＳに受信要求を行なう（１２０１）。ＯＳはその要求に従い、ＯＳ空間内の受信バッファ領域１５０を検索（１２０２）し、ユーザアプリケーションから指定された送信ＰＵ番号に対応するパケットが届いているかをチェックする（１２０３）。チェックの結果、未だ届いていないならばＯＳが管理する受信待ちキューにユーザアプリケーションから指定された送信ＰＵ番号、受信領域アドレスを登録する（１２０９）。そして受信要求を行なったユーザアプリケーションとは異なる他のユーザアプリケーションに制御を渡す（１２１０）。この受信待ちキューは、他のプロセッサユニットから転送データを受信した場合に、ＯＳが検索し、受信待ちキューに登録されているパケットを受信した場合は、ＯＳがその受信待ちキューの受信領域アドレスに従い、受信領域１００６に書き込むために用いる。詳細は後述する。
【００２８】
またユーザアプリケーションから指定された送信ＰＵ番号に対応するパケットが届いているならばＯＳ空間内の受信バッファ領域に格納されたパケットをユーザアプリケーションの受信領域にコピーする（１２０４）。そしてユーザアプリケーションが受信したことを送信側に報告するために、転送データ内に格納されている送信ＰＵ番号をもとにＡＣＫパケットを生成し、送信ＰＵに転送する（１２０５）。またＯＳ空間内の受信バッファ領域１５０からユーザアプリケーションの受信領域１００６にコピーが行なわれたＯＳ空間内の受信バッファ領域アドレスを記憶する（１２０６）。これはＯＳ空間内の受信バッファ領域１５０に空き領域がない場合に、記憶したアドレスを受信バッファ領域１５０として利用するために行なう。ＯＳは受信バッファ領域１５０に空き領域を作成するために、コピーした受信バッファ領域１５０までＲＴＰＲ１３３を更新する（１２０７）。
【００２９】
ＯＳが受信バッファ領域１５０に空きがなく、受信制御ユニット１１３に対して廃棄指示を行なっているかをチェックする（１２０８）。もし廃棄指示を行なっているならば、廃棄指示ビットを廃棄とせず、受信するように設定し（１２０９）、ユーザアプリケーションに制御を渡す。またもし廃棄指示を行なっていないならば、そのままユーザアプリケーションに制御を渡す。
【００３０】
尚、本実施例では、受信した各パケットは受信バッファ領域１５０内のアドレスが連続した領域に書き込まれるような、受信バッファ領域１５０が構成されている。このためＯＳが受信バッファ領域１５０に空き領域を作成するために、コピーした受信バッファ領域１５０までＲＴＰＲ１３３を更新する（１２０７）場合では、上記処理においてユーザアプリケーションの受信領域１００６にコピーが行なわれたＯＳ空間内の受信バッファ領域アドレスが、ＲＴＰＲ１３３に連続するアドレスであった場合のみ更新するように処理する。
【００３１】
次にＯＳのパケット受信処理について図１３を用いて説明する。ＯＳがパケットの到着を割り込みにより知ると、まずＲＨＰＲ１３２で示されるアドレスを読み出し、そのアドレスの１つ手前の受信バッファ領域から受信したパケットを読み出す（１３００）。読み出したパケットが受信確認用のＡＣＫパケットであるかを判定する（１３０１）。この確認にはたとえばパケット内の転送データ４０５にＡＣＫパケットであることの情報を付加し、それにより確認すればよい。ＡＣＫパケットであるならば、読み出したパケットの送信ＰＵ番号から送信待ちキューに登録されている送信ＰＵ番号と送信バッファ領域アドレスを削除する（１３０２）。そしてＯＳは、受信バッファ領域１５０からＡＣＫパケットを読み出したアドレスを記憶し（１３０３）、ユーザアプリケーションに制御を渡す。これはＯＳ空間内の受信バッファ領域１５０に空き領域がない場合に、記憶したアドレスを受信バッファ領域１５０として利用するために行なう。
【００３２】
また読み出したＡＣＫパケットでなければ、読み出したパケットの送信ＰＵ番号から受信待ちキューに保持されている送信ＰＵ番号を検索し（１３０４）、受信待ちキュー内に対応する送信ＰＵ番号があるかをチェックする（１３０５）。検索した結果、対応する送信ＰＵ番号がないならばユーザアプリケーションに制御を渡す。また対応する送信ＰＵ番号があるならば、読み出したパケットを受信待ちキューで指定される受信領域にコピーする（１３０６）。読み出したパケットで保持されている送信ＰＵに従い、そのＰＵに対してパケットを受信したことを伝えるためにＡＣＫパケットを送り返す（１３０７）。次にＯＳは、受信バッファ領域１５０からコピーしたアドレスを記憶する（１３０８）。そして読み出したパケットの送信ＰＵ番号に対応する受信待ちキューに登録されている送信ＰＵ番号と受信領域アドレスを削除する（１３０９）。そしてＯＳは、受信領域にコピーしたユーザアプリケーションに制御を渡す。以上のようにしてユーザアプリケーションおよびＯＳは送受信処理を行なう。
【００３３】
次にプロセッサユニット間のパケット転送のハードウェア動作について図を用いて説明する。図１においてパケットの送信処理では、命令プロセッサ１１１が送信制御ユニット１１２に対して信号線１６３を介して受信ＰＵ番号と送信バッファ領域アドレスを渡す。送信制御ユニット１１２はパケットを生成し、信号線１６１を介してネットワーク１０２に送信する。ここで送信制御ユニット１１２は、例えば図４に示すようなパケットを生成する。ここでのパケットはパケットを受信するプロセッサユニットを示す受信ＰＵ番号４０１、パケットで転送するデータの長さを示す転送データ長４０２、パケットを送信したプロセッサユニットを示す送信ＰＵ番号４０３、転送されたパケットの種別を示すパケットタイプ４０４、および転送データ４０５から構成される。ネットワーク１０２では、パケットのヘッダに従い、目的のＰＵ１０１にパケットを転送する。
【００３４】
一方、受信処理においては、ネットワークが目的のＰＵ１０１にパケットを転送する場合、まずパケットを信号１６２を介してＦＩＦＯ１３７に格納する。このときＦＩＦＯ制御１３８はＦＩＦＯ１３７の読み出しアドレスと書き込みアドレスを制御し、ＦＩＦＯ１３７にデータがあり、それ以上書き込めないことをチェックする。もし書き込めない場合は、ネットワークに信号１６２を介して伝える。この場合ネットワークはＦＩＦＯ制御１３８から上記書き込めることの報告があるまで待つことになる。ここでＦＩＦＯ１３７に書き込めなくなってから、書き込めるようになるには受信制御１４１がＦＩＦＯ１３７に格納されているパケットを読み出すことにより行なわれる。
【００３５】
そしてＦＩＦＯ制御１３８はＦＩＦＯ１３７にデータが入っていることを信号線２２１を介して受信制御１４１に報告することにより受信制御ユニット１１３が受信処理を開始する。この受信処理において、まず受信パケット廃棄判定１４０が、図１５に示すようにＳＣ１３９で保持されている内容と、受信バッファポインタ制御１３５から受信バッファ領域１５０に空きがあるか否かの内容により、以下のように信号を出力する。即ち受信パケット廃棄判定１４０では、（１）ＳＣ１３９の出力信号１７１が廃棄を指示していないならば、受信バッファ領域１５０に空きがあるかを判定し、空きがあれば受信したパケットを受信バッファ領域１５０に書き込みが可能である場合は信号２２６をアサートする。（２）また空きがなく、受信した状態のまま待つ場合は信号２２７をアサートする。（３）ＳＣ１３９の出力信号１７１が廃棄を指示しているのならば、受信したパケットを受信バッファ領域１５０に書き込まず、受信したパケットを廃棄する場合は信号２２５をアサートする。
【００３６】
以下、受信パケット廃棄判定１４０の指示（１）〜（３）についての受信処理方法を以下に説明する。ここで受信処理を行なう前には、受信バッファ領域１５０を管理するためのＲＢＲ１３１、ＲＨＰＲ１３２、ＲＴＰＲ１３３、ＲＳＲ１３４が命令プロセッサ１１１により初期化されている。
【００３７】
（１）受信パケット廃棄判定１４０が受信バッファ領域１５０に書き込み可能であることを指示している場合について説明する。
【００３８】
ネットワーク１０２から送られてきたパケットはＦＩＦＯ制御１３８に従い、ＦＩＦＯ１３７に格納される。ただしＦＩＦＯ１３７の容量によりパケット全てのデータがＦＩＦＯ１３７に格納されるとは限らない。ＦＩＦＯ１３７に入り切らない場合はネットワーク１０１にパケットの残りが存在する。ＦＩＦＯ制御１３８はＦＩＦＯ１３７にデータが入っていることを信号線２２１を介して受信制御１４１に報告する。
【００３９】
受信制御１４１では図２に示すように、まずレジスタ書き込み制御２０１は、ＦＩＦＯ制御１３８からＦＩＦＯ１３７にデータが入っていることを信号２２１により報告を受けると、信号２２４によりデータを読み出し、パケットヘッダレジスタ２０３に格納する。
【００４０】
パケットヘッダレジスタ２０３に設定を終えると、レジスタ書き込み制御回路２０１は信号２５３によりパケット書き込み保留回路２６０に報告する。その報告によりパケット書き込み保留回路２６０では、受信バッファ領域１５０に書き込み可能であることを指示し、空きがなく受信した状態のまま待つことを示してないことにより、受信パケット廃棄判定１４０の出力信号２２７がアサートされないため、主記憶書き込みリクエスト生成回路２０２に対して信号２６１を介して、受信したパケットを主記憶に書き込むことの開始指示を行なう。
【００４１】
主記憶書き込みリクエスト生成回路２０２では、受信バッファポインタ制御１３５が出力する信号２２８を介してパケットを書き込むための受信バッファアドレスを読み出し、信号２３２によりバッファアドレスレジスタ２０７に設定する。また主記憶書き込みリクエスト生成回路２０２は、パケットヘッダレジスタ２０３に格納された転送データ長を信号線２３４を介して読み出す。そして信号線２３３によりセレクタ２０９を制御し、転送データ長レジスタ２１０に設定する。
【００４２】
次に主記憶書き込みリクエスト生成回路２０２ではバッファアドレスレジスタ２０７に従い、まずパケットヘッダレジスタ２０３に格納されている内容を主記憶１１５に書き込む。この書き込みにおいて主記憶書き込みリクエスト生成回路２０２では、信号２３６により主記憶１１５の書き込みデータ２３１として、パケットヘッダレジスタ２０３の出力をセレクタ２０５で選択する。主記憶１１５への書き込みアドレス２２９は、バッファアドレスレジスタ２０７の内容が出力される。また主記憶書き込みリクエスト生成回路２０２は、主記憶制御ユニット１１４へのリクエスト信号２３０を信号２５２によりアドレス２２９／データ２３１と同時に出力する。ここでＡＮＤ回路２５１は、受信バッファ領域１５０に書き込み可能であることを指示していることにより、受信パケット廃棄判定１４０の出力信号２２５がアサートされないため主記憶書き込みリクエスト信号２５２をそのまま主記憶制御ユニット１１４にリクエスト信号２３０として出力する。
【００４３】
リクエスト信号２３０を主記憶制御ユニット１１４へ出力すると主記憶書き込みリクエスト生成回路２０２は、バッファアドレスレジスタ２０７を信号２３２を介してパケットヘッダの大きさ分だけ加算器２０８により更新する。ここではパケットヘッダの受信ＰＵ番号、転送データ長などはそれぞれ４バイトで構成され、加算器２０８によりバッファアドレスレジスタ２０７の内容に４が４回加算される。主記憶制御ユニット１１４には、その回数分だけ主記憶アドレス２２９、主記憶リクエスト２３０および主記憶データ２３１が生成される。
【００４４】
次に主記憶書き込みリクエスト生成回路２０２では更新されたバッファアドレスレジスタ２０７に従い、転送データを主記憶１１５に書き込む。この書き込みにおいて主記憶書き込みリクエスト生成回路２０２ではパケット書き込み保留回路２６０、レジスタ書き込み制御回路２０１を介して信号２２４によりデータを読み出し、データレジスタ２０４に格納する。そして主記憶書き込みリクエスト生成回路２０２は、セレクタ２０５を信号線２３６によりデータレジスタ２０４の出力２３５を選択し、転送データレジスタ２０４の内容は主記憶書き込みデータ２３１として、主記憶書き込みリクエスト２３０および主記憶アドレス２２９と共に主記憶制御ユニット１１４に出力する。ここでＡＮＤ回路２５１は、受信バッファ領域１５０に書き込み可能であることを指示していることにより、受信パケット廃棄判定１４０の出力信号２２５がアサートされないため、主記憶書き込みリクエスト信号２５２をそのまま主記憶制御ユニット１１４に信号２３０により出力する。
【００４５】
ここでは転送データは４バイト単位で送信ＰＵから送信され、主記憶書き込みリクエスト生成回路２０２が主記憶制御ユニット１１４に主記憶書き込みリクエスト２５２を出力する毎に、主記憶書き込みリクエスト生成回路２０２がバッファアドレスレジスタ２０７を４づつ加算器２０８により加算する。また同様に転送データ長レジスタ２１０を４づつ減算器２１１により減算する。主記憶書き込みリクエスト生成回路２０２は、転送データ長レジスタ２１０が０になるまで上記処理を繰り返す。転送データ長レジスタ２１０が０であるかは、０比較２１２が検出する。
【００４６】
主記憶書き込みリクエスト生成回路２０２では、０比較２１２により受信したパケットについて転送データ全てを主記憶に書き込んだことを認識する。また受信バッファアドレス更新リクエスト回路３５０は、受信バッファ領域１５０に書き込み可能であることを指示していることにより、受信パケット廃棄判定１４０の出力信号２２６がアサートされているため、０比較２１２が０になったことで信号２２８により受信バッファポインタ制御１３５に１つのパケットの受信処理を終えたことを報告する。
【００４７】
受信バッファポインタ制御１３５では、信号２２８によりＲＨＰＲ１３２を更新する。そして受信バッファ領域１５０に空き領域があるかないかをチェックする。もし受信バッファ領域１５０に空き領域があるのであれば、受信パケット廃棄判定１４０に報告する。もし受信バッファ領域１５０に空き領域がなければ信号１５２０を介して命令プロセッサアクセス制御１３６に報告する。命令プロセッサアクセス制御１３６は、信号１６５を介して命令プロセッサ１１１に割り込みを発生する。また同時に信号１５１２を介して受信パケット廃棄判定１４０にも報告する。
【００４８】
（２）受信パケット廃棄判定１４０がＳＣ１３９の出力信号１７１が廃棄を指示されてなく、受信バッファ領域１５０に空きがなく受信した状態のまま待つことを指示している場合について説明する。
【００４９】
まずレジスタ書き込み制御回路２０１は、ＦＩＦＯ制御１３８からＦＩＦＯ１３７にデータが入っていることを信号２２１により報告を受けると、受信パケット廃棄判定１４０が受信バッファ領域１５０に書き込み可能であることを指示している場合と同様に、ＦＩＦＯ制御１３８を介して信号２２４によりデータを読み出し、パケットヘッダレジスタ２０３に格納する。
【００５０】
パケットヘッダレジスタ２０３に設定を終えると、レジスタ書き込み制御回路２０１は信号２５３によりパケット書き込み保留回路２６０に報告する。その報告によりパケット書き込み保留回路２６０では、空きがなく受信した状態のまま待つことを示していることにより受信パケット廃棄判定１４０の出力信号２２７がアサートされているため、主記憶書き込みリクエスト生成回路２０２に対して信号２６１を介して、受信したパケットを主記憶に書き込むことの開始指示を行なわない。
【００５１】
この主記憶書き込みリクエスト生成回路２０２では、パケット書き込み保留回路２６０が書き込み開始指示を行なわないため何も動作しない。パケット書き込み保留回路２６０ではこの状態で、命令プロセッサ１１１からの指示があるまでまで待つ。これは予め受信バッファポインタ制御１３５が受信バッファ領域１５０に空き領域がなく、命令プロセッサアクセス制御１３６を介して命令プロセッサ１１１に割り込みを発生し、命令プロセッサ１１１で動作するＯＳからの受信パケット処理の指示を待つ場合である。
【００５２】
受信バッファ領域１５０に空き領域がない場合、ＯＳでは図１４に示すように受信バッファ領域１５０に空き領域がないためＳＣ１３９を廃棄を示すように設定する（１４００）。
【００５３】
尚、本発明では、受信バッファ領域１５０に空き領域がないことによる割り込みでＯＳは直ちに廃棄を指示するが、直ちに廃棄を指示しなくてもよい。例えばこの割り込みで、廃棄指示を行なわず、タイマを設定し、ユーザアプリケーションに制御を渡す。そしてそのタイマによる一定期間までユーザアプリケーションが受信処理を行なうまで待ち、一定期間を過ぎてもユーザアプリケーションが受信処理を行なわなければ、廃棄の指示を行なうこともできる。
【００５４】
（３）図１４で示すようにＯＳが受信バッファ領域１５０に空き領域がないことによる割り込みによりＳＣ１３９を廃棄を示すように設定する（１４００）。受信パケット廃棄判定１４０ではそれに従い、受信バッファ領域１５０に書き込まず、受信したパケットを廃棄することを受信制御１４１に指示する。
【００５５】
受信制御１４１では、受信パケット廃棄判定１４０が受信バッファ領域１５０に書き込まず、受信したパケットを廃棄することを指示していることにより、以下の処理を行なう。まずパケット書き込み保留回路２６０では、受信バッファ領域１５０に書き込まず、受信したパケットを廃棄することを指示していることにより、受信パケット廃棄判定１４０の出力信号２２７がアサートされないため、主記憶書き込みリクエスト生成回路２０２に対して信号２６１を介して、受信したパケットを主記憶に書き込むことの開始指示を行なう。
【００５６】
主記憶書き込みリクエスト生成回路２０２では、パケット書き込み保留回路２６０から開始指示が行なわれると、受信バッファポインタ制御１３５が出力する信号２２８を介してパケットを書き込むための受信バッファアドレスを読み出し、信号２３２によりバッファアドレスレジスタ２０７に設定する。そして主記憶書き込みリクエスト生成回路２０２ではパケットヘッダレジスタ２０３に格納されている内容を主記憶１１５に書き込まず、その内容を廃棄する。この廃棄では受信バッファ領域１５０に書き込まず、受信したパケットを廃棄することを指示していることにより、受信パケット廃棄判定１４０の出力信号２２５がアサートされているため、ＡＮＤ回路２５１が主記憶制御ユニット１１４へのリクエスト信号２３０を抑止することにより行なわれる。主記憶制御ユニット１１４へのアドレス信号２２９およびデータ信号２３０は何でもよい。
【００５７】
次に主記憶書き込みリクエスト生成回路２０２では転送データを廃棄する。この廃棄では、主記憶書き込みリクエスト生成回路２０２がレジスタ書き込み制御回路２０１を介して信号２２４によりデータを読み出し、転送データレジスタ２０４に格納する。主記憶書き込みリクエスト生成回路２０２は、セレクタ２０５を信号線２３６によりデータレジスタ２０４の出力２３５を選択し、転送データレジスタ２０４の内容は主記憶書き込みデータ２３１として、主記憶書き込みリクエスト２３０および主記憶アドレス２２９と共に主記憶制御ユニット１１４に出力する。ここでＡＮＤ回路２５１は、受信バッファ領域１５０に書き込まず、受信したパケットを廃棄することを指示していることにより、受信パケット廃棄判定１４０の出力信号２２５がアサートされているため、主記憶書き込みリクエスト信号２５２を抑止し、主記憶制御ユニット１１４にリクエスト信号２３０を出力しない。
【００５８】
また主記憶書き込みリクエスト生成回路２０２では転送データをＦＩＦＯ１３７から読み出し、データレジスタ２０４に設定する。また主記憶書き込みリクエスト生成回路２０２は転送データ長レジスタ２１０を４づつ減算器２１１により減算する。転送データの廃棄においては、主記憶書き込みリクエスト生成回路２０２が転送データ長レジスタ２１０の内容が０になるまで上記処理が繰り返す。転送データ長レジスタ２１０が０であるかは、０比較２１２が検出する。主記憶書き込みリクエスト生成回路２０２では０比較２１２により受信したパケットについて転送データ全てを廃棄したことを認識すると、１つのパケットの受信処理を終えたことになる。
【００５９】
一方、受信バッファ更新リクエスト回路２５０では受信バッファ領域１５０に書き込まず、受信したパケットを廃棄することを指示していることにより、受信パケット廃棄判定１４０の出力信号２２６がアサートされていないため、受信バッファポインタ制御１３５に１つのパケットの受信処理を終えたことは報告しない。これにより受信バッファポインタ制御１３５は、ＲＨＰＲ１３２を更新しない。
【００６０】
またパケット書き込み保留回路２６０は、レジスタ書き込み制御回路２０１からパケットを受信したことを信号２５３により報告を受けた時点で、既に受信パケット廃棄判定１４０が受信バッファ領域１５０に書き込まず、受信したパケットを廃棄することを指示している場合では、命令プロセッサ１１１からの指示を待つことなく、前述した廃棄処理を直に行なうために、主記憶書き込みリクエスト生成回路２０２に対して信号２６１を介して受信したパケットを主記憶に書き込むことの開始指示を行なう。
【００６１】
一方、廃棄指示ビットを廃棄するように設定したＯＳでは、図１２に示すようにユーザアプリケーションが受信を行なうまで待ち、ユーザアプリケーションが受信を行ない、受信バッファ領域として利用できるアドレスができた場合は、ＲＴＰＲ１３３を更新し、ＳＣ１３９を廃棄しないように設定する（１２０９）。これにより受信パケット廃棄判定１４０では受信したパケットを受信バッファ領域に書き込むことを受信制御１４１に指示する。それ以降の処理は（１）で説明した動作と同じである。
【００６２】
また送信ＰＵのＯＳは、図１１で示した送信待ちキューに保持された受信ＰＵ番号と送信バッファ領域アドレスに従い再送処理を行なうことにより、廃棄されたパケットを受信ＰＵにパケットを送ることができる。このＯＳの再送処理では、送信要求毎にタイマ監視を行ない、ある一定期間の間に受信ＰＵからパケットを受信したことを報告するＡＣＫパケットが返らないことで、再送を行なえばよい。
【００６３】
これにより受信バッファ領域１５０に空き領域がない場合に、ＯＳの指示でそれ以降にそのプロセッサユニットに到着したパケットを廃棄することができる。
【００６４】
これまでの説明では、各ＰＵ１０１の受信制御ユニット１１３で管理する受信バッファ領域が一面の場合を示した。しかし一面であるとユーザユーザアプリケーションプログラムなどが送信する一般的なパケット（以下、一般パケットと呼ぶ）と、並列プロセッサシステムシステム全体の制御を行なうためのパケット（以下、制御パケットと呼ぶ）が同一のネットワークを用いてパケット転送を行なう場合、両方のパケットが廃棄されることになる。しかし制御パケットは並列プロセッサシステムシステム全体の制御などに関わるため、制御パケットが廃棄されることは好ましくない。このため制御パケット用のネットワークと、一般パケット用のネットワークの２種類のネットワークを構成する必要がある。しかしこのためにはゲート数などの増えるため好ましくない。
【００６５】
このため図５に示すように受信バッファを二面化して構成し、一方の受信バッファ領域を一般パケット転送に、もう一方を制御パケット転送に割り当てる。そして一般パケット転送による受信バッファ領域の空き領域不足の要因で、制御パケットが廃棄されないようにする。図５では、各ＰＵの受信制御ユニット４０１のみを示す。その他の構成は図１と同じである。
【００６６】
本図の受信制御ユニット５０１において、主記憶１１５上に構成される受信バッファ領域１５０を管理するための各レジスタは、受信バッファ領域対応に二面化される。本図では受信バッファ領域０と１として、それぞれに対応して各レジスタの名称の語尾に０と１を付けて区別する。受信バッファ領域０に対応しては、ＲＢＲ０５１１、ＲＨＰＲ０５１２、ＲＴＰＲ０５１３、ＲＳＲ０５１４、および受信バッファ０ポインタ制御５１５で管理される。受信バッファ領域１に対応しては、ＲＢＲ１５２１、ＲＨＰＲ１５２２、ＲＴＰＲ１５２３、ＲＳＲ１５２４、および受信バッファ１ポインタ制御５２５で管理される。これらの機能は図１と同じである。
【００６７】
また受信バッファ領域０に対応して命令プロセッサ１１１からセット／リセットが行なえる廃棄指示ビット０（以下ＳＣ０と呼ぶ）５３６、受信バッファ領域１に対応して命令プロセッサ１１１からセット／リセットが行なえる廃棄指示ビット１（以下ＳＣ１と呼ぶ）５３５を設ける。
【００６８】
また主記憶１１５上に構成される受信バッファ領域０と受信バッファ領域１の構成例を図７に示す。各レジスタの機能は図３で説明した内容と同じである。
【００６９】
次に各プロセッサユニット間のパケット転送の動作について説明する。パケットの送信処理では、命令プロセッサ１１１が送信制御ユニット１１２を起動することにより行なわれる。送信制御ユニット１１２はパケットを生成し、ネットワーク１０２に送信する。ここで送信制御ユニット１１２は、例えば図８に示すようなパケットを生成する。ここでのパケットはパケットを受信すべきプロセッサユニットを示す受信ＰＵ番号３０１、パケットで転送するデータの長さを示す転送データ長３０２、多面化された受信バッファ領域のどの受信バッファ領域にパケットを書き込むかを指定する受信バッファタイプ８０１、パケットを送信したプロセッサユニットを示す送信ＰＵ番号３０３、転送されたパケットの種別を示すパケットタイプ３０４、および転送データ３０５から構成される。
【００７０】
またネットワーク１０２では、パケットのヘッダの受信ＰＵ番号に従い、目的のＰＵ１０１にパケットを転送する。これらの処理については従来技術と同様でよい。
【００７１】
一方、受信処理において受信パケット廃棄判定０５３７は、図１５と同様にＳＣ０５３６で保持されている内容と、受信バッファ０ポインタ制御５１５からの受信バッファ領域０に空きがあるか否かの内容により、以下のように信号をアサートする。受信パケット廃棄判定０５３７では、（１）ＳＣ０５３６が廃棄を指示していないならば、受信バッファ領域０に空きがあるかを判定し、空きがあれば受信したパケットを受信バッファ領域０に書き込みが可能である場合は、信号５７１をアサートする。（２）また空きがなければ受信した状態のまま待つ場合は、信号５７２をアサートする。（３）ＳＣ０５３６が廃棄を指示しているのならば、受信したパケットを受信バッファ領域０に書き込まず、受信したパケットを廃棄する場合は、信号５７０をアサートする。
【００７２】
また受信パケット廃棄判定１５３８は、ＳＣ１５３５で保持されている内容と、受信バッファ１ポインタ制御５２５からの受信バッファ領域１に空きがあるか否かの内容により、受信パケット廃棄判定０５３７と同様に判定する。
【００７３】
受信パケット廃棄判定０５３７および受信パケット廃棄判定１５３８のそれぞれのパケットの受信処理については、下記に示す以外、図１の動作と同様である。
【００７４】
受信制御５３９では図６に示すように、まずレジスタ書き込み制御６０１は、ＦＩＦＯ制御１３８からＦＩＦＯ１３７にデータが入っていることを信号２２１により報告を受けると、信号２２４によりデータを読み出し、パケットヘッダレジスタ６０３に格納する。パケットヘッダレジスタ６０３に設定を終えると、レジスタ書き込み制御回路６０１は信号２５３によりパケット憶書き込み保留回路２６０に報告する。
【００７５】
またレジスタ書き込み制御６０１では、信号２３４を介してパケットヘッダレジスタ６０３に格納されているバッファタイプを読み出し、それに従い信号６９３によりセレクタ６９０、セレクタ６９１、およびセレクタ６９２を制御する。バッファタイプが受信バッファ領域０を示している場合は、それぞれのセレクタで受信パケット廃棄判定０５３７の出力である信号６７０、６７１、６７２を選択する。一方バッファタイプが受信バッファ領域１を示している場合は、受信パケット廃棄判定１５３８の出力である信号６８０、６８１、６８２を選択する。
【００７６】
パケット書き込み保留回路２６０では、レジスタ書き込み制御回路６０１からの報告により、受信パケット廃棄判定１４０の出力信号２２７に従い、主記憶書き込みリクエスト生成回路２０２に対して信号２６１を介して開始指示を行なう。
【００７７】
以下、パケット憶書き込み保留回路２６０と主記憶書き込みリクエスト生成回路２０２による主記憶書き込み動作は図１の場合と同じである。また受信バッファアドレス更新リクエスト回路６５０の動作も受信パケット廃棄判定１４０の出力信号２２６に従う。そして受信バッファ領域１５０に書き込みを示し、受信パケット廃棄判定１４０の出力信号２２６がアサートされている場合は、０比較２１２が０になったことで信号６９３により対応する受信バッファポインタ制御に、信号６１０あるいは信号６１１を介して１つのパケットの受信処理を終えたことを報告する。
【００７８】
ここで受信バッファ領域１に空き領域がなく、受信パケット廃棄判定１５３８が受信したパケットを廃棄することを指示し、かつ受信バッファ領域０には空き領域があり、受信パケット廃棄判定０５３７が受信したパケットを受信バッファ領域０に書き込みが可能であることを指示している場合で、パケットのバッファタイプが受信バッファ領域１のパケットと、それに引続き受信バッファ領域０のパケットを受信した場合について説明する。
【００７９】
ＦＩＦＯ制御１３８からＦＩＦＯ１３７にデータが入っていることを信号２２１により報告を受けると、信号２２４によりデータを読み出し、パケットヘッダレジスタ６０３に格納する。パケットヘッダレジスタ６０３に設定を終えると、レジスタ書き込み制御回路６０１は信号２５３によりパケット書き込み保留回路２６０に報告する。またレジスタ書き込み制御回路６０１では、パケットヘッダレジスタ６０３に格納されているバッファタイプに従い、セレクタ６９０、セレクタ６９１、セレクタ６９２を制御する。ここではバッファタイプが受信バッファ領域１を示しているため、信号６９３により受信パケット廃棄判定１５３８の出力である信号を選択する。具体的にはセレクタ６９０は信号５８０、セレクタ６９１は信号５８１、およびセレクタ６９２は信号５８２を選択する。
【００８０】
パケット書き込み保留回路２６０では、レジスタ書き込み制御回路６０１からの報告により、受信したパケットを廃棄することを指示し、セレクタ６９２の出力信号２２７がアサートされていないため、主記憶書き込みリクエスト生成回路２０２に対して信号２６１を介して開始指示を行なう。
【００８１】
主記憶書き込みリクエスト生成回路２０２では、図１の動作と同様に受信したパケットのヘッダおよび転送データ全てについて主記憶リクエストを生成する。主記憶書き込みリクエスト生成回路２０２は、主記憶制御ユニット１１４へのリクエスト信号２３０を信号２５２によりアドレス２２９／データ２３１と同時に出力する。一方ＡＮＤ回路２５１は、受信バッファ領域１５０に空きがなく、廃棄を指示していることにより、セレクタ６９０の出力信号２２５がアサートされているため主記憶書き込みリクエスト信号２５２を抑止し、主記憶制御ユニット１１４にリクエスト信号２３０を出力しない。また受信バッファ更新リクエスト回路６５０では受信バッファ領域１５０に書き込まず、受信したパケットを廃棄することを指示していることにより、セレクタ６９１の出力信号２２６がアサートされていないため、受信バッファポインタ制御５２５に１つのパケットの受信処理を終えたことは報告しない。
【００８２】
一方ＦＩＦＯ制御５３４では、バッファタイプが受信バッファ領域１をもつパケットに引き続いて受信バッファ領域０をもつパケットがＦＩＦＯに格納されており、レジスタ書き込み制御回路６０１に対してＦＩＦＯ５３３にデータが入っていることを信号２２１により報告する。
【００８３】
レジスタ書き込み制御回路６０１は、ＦＩＦＯ制御５３４からＦＩＦＯ５３３にデータが入っていることを信号２２１により報告を受けると、上記と同様にパケットヘッダレジスタ６０３に格納する。レジスタ書き込み制御回路６０１では、パケットヘッダレジスタ６０３に格納されているバッファタイプに従い、セレクタ６９０、セレクタ６９１、セレクタ６９２を制御する。ここではバッファタイプが受信バッファ領域０を示しているため、信号６９３により受信パケット廃棄判定０５３７の出力である信号を選択する。具体的にはセレクタ６９０は信号５７０、セレクタ６９１は信号５７１、およびセレクタ６９２は信号５７２を選択する。
【００８４】
パケット書き込み保留回路２６０では、レジスタ書き込み制御回路６０１からの報告により、受信バッファ領域０に空き領域があり、受信パケット廃棄判定０５３７が受信したパケットを受信バッファ領域０に書き込みが可能であることを指示し、セレクタ６９２の出力信号２２７がアサートされていないため、主記憶書き込みリクエスト生成回路２０２に対して信号２６１を介して開始指示を行なう。
【００８５】
主記憶書き込みリクエスト生成回路２０２では、図１の動作と同様に受信したパケットのヘッダおよび転送データ全てについて主記憶リクエスト信号２３０を生成する。主記憶書き込みリクエスト生成回路２０２は、主記憶制御ユニット１１４へのリクエスト信号２３０を信号２５２によりアドレス２２９／データ２３１と同時に出力する。
【００８６】
ＡＮＤ回路２５１は、受信バッファ領域１５０に書き込み可能であることを指示していることにより、セレクタ６９０の出力信号２２５がアサートされていないため主記憶書き込みリクエスト信号２５２を抑止せず、主記憶制御ユニット１１４にリクエスト信号２３０を出力する。また受信バッファ更新リクエスト回路６５０では受信バッファ領域１５０に書き込まず、受信バッファ領域１５０に書き込み可能であることにより、セレクタ６９１の出力信号２２６がアサートされているため、受信バッファポインタ制御５１５に１つのパケットの受信処理を終えたことは報告する。
【００８７】
上記のように受信バッファ領域を多面化し、それぞれの受信バッファ領域について廃棄ができるので、並列プロセッサシステムシステム全体の制御などに関わる制御パケットについては廃棄されず、また制御パケット用のネットワークと一般パケット用のネットワークを個別に設ける必要がない。
【００８８】
尚、本発明では１つのパケットが１つのメッセージを構成し、１つのパケットを受信する毎に受信割り込みが発生する場合を示したが、１つのメッセージを複数のパケットに分割し、１つのメッセージの最後を示すパケットだけが割り込む場合にも上記の処理と同様に行なえる。
【００８９】
これまでの説明では、命令プロセッサ１１１の指示による廃棄を示した。一方ＯＳが正常に動作できず、割り込みを受け付けられない状態や主記憶制御ユニットに障害が発生し、受信パケットの主記憶書き込みができない状態が発生した場合では、受信処理が行なえず、パケットはネットワークに滞留したままになり、他のデータ転送を妨げる可能性がある。
【００９０】
具体的にはＯＳが正常に動作できない状態で他のデータ転送を妨げる場合は、受信バッファ領域に空き領域がなく、命令プロセッサに割り込みを発生し、ＯＳからの受信パケット処理の指示を待っている場合で、ＯＳからの指示が全くない場合である。また主記憶制御ユニットに障害が発生し、他のデータ転送を妨げる場合は、受信パケット書き込み制御が主記憶への書き込みリクエストを主記憶制御ユニットに送っても受け付けられず、受信したパケットを主記憶に書き込めない場合である。
【００９１】
これらを解決するために図９に示すように、受信パケット廃棄判定９０１、命令プロセッサ監視タイマ９０２、主記憶制御障害検出９０３を設ける。それ以外は図１と同じ構成である。
【００９２】
受信パケット廃棄判定９０１では、ＳＣ１３９で保持されている内容と、受信バッファポインタ制御１３５から受信バッファ領域に空きがあるか否かの内容、命令プロセッサ監視タイマ９０２によるＯＳ異常を示す信号９１１、および主記憶制御障害検出９０３による主記憶制御ユニット障害を示す信号９１２により、以下のように判定する。受信パケット廃棄判定９０１では、（１）ＳＣ１３９が廃棄を指示していない、かつ信号９１１がＯＳ異常を示していない、かつ信号９１２が主記憶制御ユニット障害を示していないならば、受信バッファ領域に空きがあるかを判定し、空きがあれば受信したパケットを受信バッファ領域に書き込みが可能であることを指示する。（２）また上記の条件で空きがなければ受信した状態のまま待つことを指示する。（３）ＳＣ１３９が廃棄を指示している、あるいは信号９１１がＯＳ異常を示している、あるいは信号９１２が主記憶制御ユニット障害を示しているならば、受信したパケットを受信バッファ領域に書き込まず、受信したパケットを廃棄することを受信制御１４１に対して指示する。
【００９３】
命令プロセッサ監視タイマ９０２は、ＯＳから設定された値をある一定間隔でマイナス１づつ行なうタイマである。このタイマに設定された値が０になった時にＯＳが正常に動作できないと判断し、信号９１１をＯＳ異常として示す。このためＯＳは命令プロセッサ監視タイマ９０２に設定した値が０になる前に、新たに命令プロセッサ監視タイマ９０２に設定する。この動作でＯＳが正常に動作していると判断する。
【００９４】
主記憶制御障害検出９０３は、受信制御１４１が主記憶制御ユニット１１４に対してパケットデータを書き込むためのリクエストが送られてから、主記憶制御ユニット１１４がそのリクエストを受け付けるまでの間を時間監視する。主記憶制御障害検出９０３は、予めシステムにより決められた値を保持し、受信制御１１４が主記憶制御ユニット１１４に対してパケットデータを書き込むためのリクエストを送くると、システムにより決められた値をタイマに設定し、その値をある一定間隔でマイナス１づつ行なう。このタイマに設定された値が０になった時に主記憶制御ユニット１１４に障害が発生したと判断し、信号９１２を主記憶制御ユニット障害として示す。一方主記憶制御ユニット１１４がリクエストを受け付けると、そのタイマは停止し、新たなリクエストに備える。
【００９５】
また命令プロセッサ監視タイマ９０２、主記憶制御障害検出９０３では、それぞれでＯＳ異常あるいは主記憶制御ユニット障害を検出した場合は、命令プロセッサ１１１に信号９１０を介して割り込みを発生する。
【００９６】
これによりＯＳが正常に動作できず、割り込みを受け付けられない状態や主記憶制御ユニットに障害が発生し、受信パケットの主記憶書き込みができない状態が発生した場合でも、他のデータ転送を妨げない。
【００９７】
【発明の効果】
受信したパケットを格納する受信バッファ領域に空き領域がない場合や、受信プロセッサユニットで障害が発生し、パケットを受信できない場合に、受信プロセッサユニットで受信パケットの廃棄ができるので、他の多数のプロセッサユニット間のパケット転送が妨げられないようにできる。
【図面の簡単な説明】
【図１】本発明による並列プロセッサシステムの一実施例を示す構成図。
【図２】本発明による受信制御の一実施例を示す構成図。
【図３】本発明による受信バッファの一実施例を示す構成図。
【図４】本発明によるパケットフォーマットの一実施例を示す構成図。
【図５】本発明による受信バッファを多面化した場合の受信制御ユニットの一実施例を示す構成図。
【図６】本発明による受信バッファを多面化した場合の受信制御の一実施例を示す構成図。
【図７】本発明による多面化した受信バッファの一実施例を示す構成図。
【図８】本発明による受信バッファを多面化した場合のパケットフォーマットの一実施例を示す構成図。
【図９】本発明による並列プロセッサシステムの一実施例を示す構成図。
【図１０】本発明によるパケット送受信処理フローを示す図。
【図１１】本発明によるソフトウェアの送信処理フローを示す図。
【図１２】本発明によるソフトウェアの受信処理フローを示す図。
【図１３】本発明によるソフトウェアの受信割り込み処理フローを示す図。
【図１４】本発明によるソフトウェアの受信バッファ領域に空き領域がない場合の処理フローを示す図。
【図１５】本発明による受信パケット廃棄判定の一実施例を示す図。
【図１６】本発明による受信バッファポインタ制御の一実施例を示す構成図。
【符号の説明】
１０１…プロセッサユニット、１０２…ネットワーク、１１１…命令プロセッサ、１１２…送信制御ユニット、１１３…受信制御ユニット、１１４…主記憶制御ユニット、１１５…主記憶、１３１…受信バッファの先頭アドレスを示すベースレジスタ、１３２…受信バッファの未使用領域の先頭を示すヘッダポインタレジスタ、１３３…受信バッファの未使用領域の終端を示すテイルポインタレジスタ、１３４…受信バッファのサイズを示すサイズレジスタ、１３５…受信バッファポインタ制御、１３６…命令プロセッサアクセス制御、１３７…ＦＩＦＯ、１３８…ＦＩＦＯ制御、１３９…廃棄指示ビット、１４０…受信パケット廃棄判定、１４１…受信制御、１５０…受信バッファ領域、２０１…レジスタ書き込み制御回路、２６０…パケット書き込み保留回路、２０２…主記憶書き込みリクエスト生成回路、２５０…受信バッファアドレス更新リクエスト回路、２５１…ＡＮＤ回路。
【図１】
0003641834.tif 000002
【図２】
0003641834.tif 000003
【図３】
0003641834.tif 000004
【図４】
0003641834.tif 000005
【図５】
0003641834.tif 000006
【図６】
0003641834.tif 000007
【図７】
0003641834.tif 000008
【図８】
0003641834.tif 000009
【図９】
0003641834.tif 000010
【図１０】
0003641834.tif 000011
【図１１】
0003641834.tif 000012
【図１２】
0003641834.tif 000013
【図１３】
0003641834.tif 000014
【図１４】
0003641834.tif 000015
【図１５】
0003641834.tif 000016
【図１６】
0003641834.tif 000017