(57)【要約】【課題】マルチプロセッサコンピュータシステムにおいて、ローカルバスで接続されたユニット間でのデータ通信を、相互のシステムリソースの使用状況をもとにユニット間の負荷分散を図ることにより高速化とシステムリソースの有効活用を実現すること。【解決手段】通信ユニット間の主記憶装置のメモリ帯域やプロセッサ負荷を取得し、その情報をもとにデータ通信の実体であるデータ転送処理を何れのユニットで処理するほうが高速化またはシステムリソースが有効に活用できるかを判断し、判断の結果、自ユニットでデータ転送処理を行う場合はデータ転送処理後にデータ転送完了の旨を示すビットを含む情報を相手ユニットに通知し、相手ユニットでデータ転送を行う場合はデータ転送未完了の旨を示すビットを含む情報と、転送元アドレスと転送先アドレスを組にしたアドレス情報を通知し、受信側ユニットにデータ転送処理を行わせる。【選択図】図１５
2007316804.tif 000002
【特許請求の範囲】
【請求項１】
それぞれがプロセッサと、主記憶装置と、前記プロセッサからの前記主記憶装置へのアクセス機能と前記プロセッサ間のデータ転送用のローカルバスを介して他の前記プロセッサからの前記主記憶装置へのアクセス機能とを備えたバスインターフェースユニットと、前記プロセッサが前記ローカルバスを介して他の前記プロセッサとのデータ通信を行うためのネットワークドライバを備えた少なくとも２つ以上の複数のユニットで構成されるマルチプロセッサシステムであって、前記複数のユニットの１つは前記ローカルバスのアクセス調停機能を有するマスタユニットであり、かつその他のユニットは前記ローカルバスを介したアクセス使用権を前記マスタユニットに委ねるスレーブユニットであり、前記複数のユニット間でのデータ通信に際し、各ユニットはデータ通信に係る制御情報をデータ通信を行うユニット間で共有する機能と、お互いの前記プロセッサの負荷と前記主記憶装置のメモリ帯域とを参照する機能と、データ通信の時点で通信を行うユニット間の前記プロセッサの負荷と前記主記憶装置のメモリ帯域との情報をもとにデータ転送を自ユニットが行うか、あるいは相手ユニットが行うかの通信手段選択機能を備え、データ通信に際しユニットは、前記通信手段選択機能により自ユニットがデータ転送を行う判断をしたならば、自ユニットが相手ユニットに対するデータ転送処理を行ってデータ転送が完了の旨を示す転送フラグを設定し、さもなければ相手ユニットがデータ転送処理を行えるようにデータ転送が未完了である旨を示す転送フラグを設定し、さらに転送元アドレスと転送先アドレスの情報を設定した後、受信側ユニットに送信完了を通知する機能を備えた通信制御方式。
【請求項２】
それぞれがプロセッサと、主記憶装置と、前記プロセッサからの前記主記憶装置へのアクセス機能と前記プロセッサ間のデータ転送用のローカルバスを介して他の前記プロセッサからの前記主記憶装置へのアクセス機能とを備えたバスインターフェースユニットと、前記プロセッサが前記ローカルバスを介して他の前記プロセッサとのデータ通信を行うためのネットワークドライバを備えた少なくとも２つ以上の複数のユニットで構成されるマルチプロセッサシステムであって、前記複数のユニットの１つは前記ローカルバスのアクセス調停機能を有するマスタユニットであり、かつその他のユニットは前記ローカルバスを介したアクセス使用権を前記マスタユニットに委ねるスレーブユニットであり、前記複数のユニット間でのデータ通信に際し、各ユニットはデータ通信に係る制御情報をデータ通信を行うユニット間で共有する機能と、データ転送処理が送信側ユニットによって完了または未完了である旨を示す転送フラグを参照する機能を備え、データ受信に際しユニットは、送信側ユニットが設定した前記転送フラグを参照して、データ転送が未完了の旨を示す値であるならば、自ユニットがデータ転送を行った後、受信データを上位のアプリケーションに渡し、送信側ユニットに受信完了を通知する機能を備えた通信制御方式。
【請求項３】
前記ユニットは、データ通信において請求項１に記載のデータ送信機能と請求項２に記載のデータ受信機能とを備えることを特徴とする通信制御方式。
【請求項４】
送信側ユニットが備える前記通信手段選択機能において、自ユニットのプロセッサの負荷が受信側ユニットである相手ユニットのプロセッサの負荷より低いならば、自ユニットがデータ通信を行うユニットであると判断し、さもなければ、相手ユニットがデータ通信を行うユニットであると判断することを特徴とする請求項１または請求項３に記載の通信制御方式。
【請求項５】
送信側ユニットが備える前記通信手段選択機能において、受信側ユニットである相手ユニットの前記主記憶装置のメモリ帯域がデータ通信するのに十分かどうかを判断し、メモリ帯域が十分であり、かつ自ユニットのプロセッサの負荷が相手ユニットのプロセッサの負荷より低いならば、自ユニットがデータ通信を行うユニットであると判断し、さもなければ、相手ユニットがデータ通信を行うユニットであると判断することを特徴とする請求項１または請求項３に記載のデータ通信制御方式。
【請求項６】
前記プロセッサの負荷は、プロセッサの稼働率であることを特徴とする、請求項１〜５のいずれか１項に記載の通信制御方式。
【請求項７】
前記プロセッサの負荷は、プロセッサの稼働率とプロセッサの周波数の積であることを特徴とする、請求項１〜５のいずれか１項に記載の通信制御方式。
【請求項８】
前記ローカルバスがＰＣＩバスであることを特徴とする、請求項１〜７のいずれか１項に記載の通信制御方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサコンピュータシステムにおけるデータ通信方法に関し、特に、ローカルバスを介して接続されたユニット間で、互いのシステムリソースの使用状況をもとにデータ通信の処理を送信側あるいは受信側で行うべきかを判断してデータ通信手段を決定することにより、データ通信の効率化とシステムリソースの有効活用を実現したデータ通信制御方式に関するものである。
【背景技術】
【０００２】
従来の通信制御方式としては、ローカルバスで接続された２つのユニット間でのデータ通信におけるデータ転送処理をローカルバスのアクセス調停を掌るホストユニットが行うものがあった（例えば、特許文献１参照）。図１は、前記特許文献１に記載された従来の通信制御方式の実施の形態におけるシステム構成を示すものである。
【０００３】
図１において、１０はユニット、１１は複数のユニット１０間を接続するローカルバス、１０ａはプロセッサ、１０ｂは主記憶装置、１０ｃはプロセッサ１０およびローカルバス１１と主記憶装置１０ｂとのデータアクセス処理を行うバスインターフェースユニット、１３は他のネットワーク機器との通信制御を担うネットワーク制御装置、１４はハードディスクや光ディスク記憶装置などへのアクセス制御を行うディスク制御装置である。
【０００４】
図２において、２０は図１のネットワークドライバ１２が管理し、データ通信を行うユニット間で共有するデータ通信に係る制御情報であり、通信状態を示すステータス２１、転送元データの所在を示す転送元アドレス２２、転送先を示す転送先アドレス２３、転送サイズ２４、次のデータ転送に対する制御情報へのリンク２５から構成され、制御情報２０は環状リストの構造をとる。
【０００５】
図３は、図２におけるステータス２１の詳細を示したものであり、少なくとも通信制御情報が通信側あるいは受信側のどちらにアクセス権があるかを示すオーナビット３１を構成要素とする。
【０００６】
従来の実施の形態では、マルチプロセッサコンピュータシステムのユニット間でデータ通信を行う場合、ローカルバス１１のアクセス調停権を有するマスタユニットがデータ送信に際しては相手側ユニット１０のバスインターフェースユニット１０ｃを制御してデータ送信処理を行い、また、データ受信に際しても受信元のユニットからの通知に応えてマスタユニットがデータ転送処理を行っていた。
【特許文献１】特開２００１−１１７８９２号公報（第１−１３頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、前記従来の構成では、データ通信の実処理であるデータ転送をマスタユニットの制御のもと処理するので、マスタユニットのプロセッサの負荷が高いと通信性能が低くなる、さらに、データ転送の相手の主記憶装置のメモリ帯域がデータ転送を行うためには十分でない場合はデータ転送処理が完了するまでマスタユニットのプロセッサを無用に浪費してしまい、データ通信処理時にシステムリソースの有効活用ができないという課題を有していた。
【０００８】
本発明は、前記従来の課題を解決するもので、データ通信を行うユニット間で通信時点でのお互いのプロセッサの負荷と主記憶装置のメモリ帯域といったシステムリソースをもとにデータ通信の実処理であるデータ転送をマスタユニットまたはスレーブユニットに決定して決定したユニットがデータ転送処理をすることにより、通信の高速化とシステムリソースの有効活用を実現したデータ通信制御方式を提供することを目的とする。
【課題を解決するための手段】
【０００９】
前記従来の課題を解決するために、本発明の通信制御方式は、それぞれがプロセッサと、主記憶装置と、前記プロセッサからの前記主記憶装置へのアクセス機能とローカルバスを介して他の前記プロセッサからの前記主記憶装置へのアクセス機能とを備えたバスインターフェースユニットと、前記プロセッサが前記ローカルバスを介して他の前記プロセッサとのデータ通信を行うためのネットワークドライバを備えた少なくとも２つ以上の複数のユニットで構成されるマルチプロセッサシステムであって、前記複数のユニットの１つは前記ローカルバスのアクセス調停機能を有するマスタユニットであり、かつその他のユニットは前記ローカルバスを介したアクセス使用権を前記マスタユニットに委ねるスレーブユニットであり、前記複数のユニット間でのデータ通信に際し、各ユニットはデータ通信に係る制御情報をデータ通信を行うユニット間で共有する機能と、お互いの前記プロセッサの負荷と前記主記憶装置のメモリ帯域とを交換する機能と、データ通信の時点で通信を行うユニット間の前記プロセッサの負荷と前記主記憶装置のメモリ帯域との情報をもとにデータ転送を自ユニットが行うか、あるいは相手ユニットが行うかの通信手段選択機能を備え、ユニットがデータ通信の送信側ユニットである場合は、前記通信手段選択機能により自ユニットがデータ転送を行う判断をしたならば、自ユニットが相手ユニットに対するデータ転送処理を行ってデータ転送が完了の旨を示す転送フラグを設定し、さもなければ相手ユニットがデータ転送処理を行えるようにデータ転送が未完了である旨を示す転送フラグを設定し、さらに転送元アドレスと転送先アドレスの情報を設定した後、受信側ユニットに送信完了を通知する機能を備え、一方、ユニットがデータ通信の受信側ユニットである場合は、送信側ユニットからの前記転送フラグを参照して、データ転送が未完了の旨を示す値であるならば、自ユニットがデータ転送を行った後、受信データを上位のアプリケーションに渡し、送信側ユニットに受信完了を通知する機能を備えることを特徴とするデータ通信を行う。
【００１０】
本構成によって、データ通信を行うユニット間のプロセッサの負荷を分散することによりデータ通信を高速化するとともに、メモリ帯域不足に伴うプロセッサ時間の浪費を防ぐことによりシステムリソースを有効活用することができる。
【００１１】
また前記従来の課題を解決するために、本発明の通信制御方式は、送信側ユニットが備える前記通信手段選択機能において、自ユニットのプロセッサの負荷が受信側ユニットである相手ユニットのプロセッサの負荷より低いならば、自ユニットがデータ通信を行うユニットであると判断し、さもなければ、相手ユニットがデータ通信を行うユニットであると判断することを特徴とするデータ通信を行う。
【００１２】
本構成によって、データ通信を行うユニット間のプロセッサの負荷を分散することによりデータ通信を高速化することができる。
【００１３】
また前記従来の課題を解決するために、本発明の通信制御方式は、送信側ユニットが備える前記通信手段選択機能において、受信側ユニットである相手ユニットの前記主記憶装置のメモリ帯域がデータ通信するのに十分かどうかを判断し、メモリ帯域が十分であり、かつ自ユニットのプロセッサの負荷が相手ユニットのプロセッサの負荷より低いならば、自ユニットがデータ通信を行うユニットであると判断し、さもなければ、相手ユニットがデータ通信を行うユニットであると判断することを特徴とするデータ通信を行う。
【００１４】
本構成によって、データ通信を行うユニット間のプロセッサの負荷を分散することによりデータ通信を高速化するとともに、メモリ帯域不足に伴うプロセッサ時間の浪費を防ぐことによりシステムリソースを有効活用することができる。
【００１５】
また前記従来の課題を解決するために、本発明の通信制御方式は、前記プロセッサの負荷は、プロセッサの稼働率であることを特徴とするデータ通信を行う。
【００１６】
本構成によって、データ通信を行うユニット間のプロセッサの稼働率の低いプロセッサにデータ転送処理を行わせることによりデータ通信を高速化することができる。
【００１７】
また前記従来の課題を解決するために、本発明の通信制御方式は、前記プロセッサの負荷は、プロセッサの稼働率とプロセッサの周波数の積であることを特徴とするデータ通信を行う。
【００１８】
本構成によって、データ通信を行うユニット間で通信時点で処理能力の高いほうのプロセッサにデータ転送処理を行わせることによりデータ通信を高速化することができる。
【００１９】
また前記従来の課題を解決するために、本発明の通信制御方式は、前記ローカルバスがＰＣＩバスであることを特徴とするデータ通信を行う。
【００２０】
本構成によって、ＰＣＩバスを介したデータ通信を行うマルチプロセッサコンピュータシステムにおいて、データ通信を行うユニット間のプロセッサの負荷を分散することによりデータ通信を高速化するとともに、メモリ帯域不足に伴うプロセッサ時間の浪費を防ぐことによりシステムリソースを有効活用することができる。
【発明の効果】
【００２１】
本発明の通信制御方式によれば、ローカルバスを介したデータ通信を行うマルチプロセッサコンピュータシステムにおいて、データ通信を行うユニット間のプロセッサの負荷を分散することによりデータ通信を高速化するとともに、メモリ帯域不足に伴うプロセッサ時間の浪費を防ぐことによりシステムリソースを有効活用することができる。
【発明を実施するための最良の形態】
【００２２】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００２３】
（実施の形態１）
図１は、本発明の実施の形態１における通信制御方式のシステム構成図である。図１のシステム構成は従来の通信制御方式と同一構成をとるので、各構成要素の説明は省略するが、その詳細は従来構成要素と異なるので、以降、図を参照しながら説明する。
【００２４】
図４は図１におけるバスインターフェースユニット１０ｃの構成を詳細に示した図である。図４において、バスインターフェースユニット４０は、バスインターフェースユニット内の内部バス４６と、プロセッサ４０ａとネットワークドライバ４２を介した前記内部バス４６へのアクセス制御を行うホストバスインターフェース４３と、ローカルバス４１と内部バス４６間のアクセス制御を行うローカルバスインターフェース４４と、前記ホストバスインターフェース４３または前記ローカルバスインターフェース４４から前記内部バス４６へ伝わった主記憶装置４０ｂへのアクセス制御を行うメモリコントローラで構成する。
【００２５】
図５は、ユニットがローカルバスの調停機能を有するマスタユニットの図４における前記ローカルバスインターフェース４４の構成の詳細を示す図である。
【００２６】
図５において、５１はローカルバス、５２は内部バス、ローカルバスインターフェース５０は、前記ローカルバス５１から前記内部バス５２へのアクセス要求に応えるターゲットインターフェース５３、前記内部バス５２からの前記ローカルバス５１へのアクセス要求に応えるマスタインターフェースユニット５４、前記ローカルバスに接続された各マスタインターフェースに対して前記ローカルバス５１のアクセス使用権を調停する調停部５５で構成する。
【００２７】
また図５における制御信号５６は、前記調停部５５からの前記マスタインターフェース５４に対する前記ローカルバス５１のアクセス調停を行うための制御信号である。
【００２８】
図６は、ユニットがローカルバスの調停機能を他に委ねるスレーブニットの図４における前記ローカルバスインターフェース４４の構成の詳細を示す図である。
【００２９】
図６において、６１はローカルバス、６２は内部バス、ローカルバスインターフェース６０は、前記ローカルバス６１から前記内部バス６２へのアクセス要求に応えるターゲットインターフェース６３、前記内部バス６２からの前記ローカルバス６１へのアクセス要求に応えるマスタインターフェースユニット６４で構成する。
【００３０】
図７は、図５における前記マスタインターフェース５４および図６におけるマスタインターフェース６４が備える機能を示したものであり、ＰＩＯアクセス機能とＤＭＡアクセス機能を有する。
【００３１】
図８は、図５における前記ターゲットインターフェース５３および図６におけるターゲットインターフェース６３が備える機能を示したものであり、マスタインターフェースが備えるＰＩＯアクセス機能とＤＭＡアクセス機能とに夫々対応した機能を有する。
【００３２】
図９において、９０はデータ通信を行うユニット間で共有するデータ通信に係る制御情報であり、通信状態を示すステータス９１、転送先を示す転送先アドレス９３、転送サイズ９４、次のデータ転送に対する制御情報へのリンク９５から構成され、制御情報９０は環状リストの構造をとる。
【００３３】
図１０は、データ通信の実体であるデータ転送処理を送信側で行わなかった場合に図９の転送先アドレス９３に転送先のアドレスの代わりに格納する転送元アドレス１０１トと転送先アドレス１０２との組の情報１００の構造を示した図である。
【００３４】
図１１は、図９におけるステータス９１の詳細を示したものであり、少なくともデータ通信の実体であるデータ転送処理を送信側で行うか否かを示す転送フラグ１１２と通信制御情報が通信側あるいは受信側のどちらにアクセス権があるかを示すオーナビット１１１とを構成要素とする。
【００３５】
図１２は、各ユニットがユニット間でデータ通信を行うための管理情報１２０であり、データ送信の全ての処理を完了した回数である送信カウンタ１２１、データ送信で受信側ユニットに通知をした回数である送信済みカウンタ１２２、データ受信で受信を完了した回数を示すデータ受信済みカウンタ１２３、送信用の通信データ構造体の先頭アドレス１２４、受信用の通信データ構造体の先頭アドレス１２５、送信用の通信データ構造体を自ユニットまたは相手ユニットのどちらに配置するかを示すユーザ設定の送信用通信データ構造体配置情報１２６、受信用の通信データ構造体を自ユニットまたは相手ユニットのどちらに配置するかを示すユーザ設定の受信用通信データ構造体配置情報１２７から構成する。
【００３６】
図１３は、本実施の形態におけるデータ通信処理のフローチャートを示した図である。最初に図１３を参照しながら通信処理全体の大まかな流れを説明する。
【００３７】
まず、データ通信を行う各々のユニットはデータ通信のための初期化処理を行う（ステップＳ１００１）。つぎにユーザアプリケーションからの送信要求があるかまたは通信相手となる相手ユニットから割込みを待ち（処理ステップＳ１００２）、相手ユニットからの割込みがあったかどうかを判断し（処理ステップＳ１００３）、割込みがあったならば、割り込みの種類が受信完了割込みかどうかを判断し（処理ステップＳ１００４）、割り込みが受信完了割込みであったならば、受信処理を行い（処理ステップＳ１００５）、割り込みが受信割込みでなかった場合、割り込みが送信完了割込みかどうかを判断し（処理ステップＳ１００６）、割込みが送信完了割込みならば、送信完了後処理を行う。次にユーザーアプリケーションからの送信要求があるかどうかの判断を行い（処理ステップＳ１００８）、送信要求があるならば、送信処理を行う（処理ステップＳ１００９）。最後にユーザアプリケーションからの通信停止の要求があるかどうかの判断を行い（処理ステップＳ１０１０）、通信停止の要求があったならば通信機能を停止させ、さもなければ、前記処理ステップＳ１００２に戻り、再びユーザアプリケーションからの送信要求や通信相手ユニットからの割込みを待つ。
【００３８】
ここで、図１３に示した処理フローにおける処理ステップＳ１００１、処理ステップＳ１００５、処理ステップＳ１００７および、処理ステップＳ１００９について、夫々の詳細な処理フローについて順次説明する。
【００３９】
図１４は、図１３における処理ステップＳ１００１の詳細な処理フローを示した図である。図１４を参照しながら、初期化処理のフローを説明する。
【００４０】
まず、ユニットの管理情報（図１２の１２０）の送信カウンタ（図１２の１２１）を０に設定し（処理ステップＳ２００１）、送信済みカウンタ（図１２の１２２）を０に設定し（処理ステップＳ２００２）、受信済みカウンタ（図１２の１２３）を０に設定する（処理ステップＳ２００３）。つぎに送信用通信データ構造体配置情報（図１２の１２６）と受信用通信データ構造体配置情報（図１２の１２７）の各々を参照して、通信データ構造体を自ユニットかまたは相手ユニットの主記憶装置に配置するかの判断を行い（処理ステップＳ２００４）、自ユニットの主記憶装置に配置する旨の設定がなされているならば、自ユニットの主記憶装置内に指定個数の通信データ構造体を生成し、各通信データ構造体の属性リンク（図９の９５）に次の通信データ構造体のアドレスを設定し、最後の通信データ構造体の属性リンクに先頭の通信データ構造体のアドレスを設定して通信データ構造体の環状リストを形成し（処理ステップＳ２００６）、自ユニットの主記憶装置に通信データ構造体を生成した個数分のデータ格納領域を生成して、各通信データ構造体の属性転送先アドレス（図９の９３）に生成したデータ格納領域のアドレスを設定し（処理ステップＳ２００７）、通信データ構造体の環状リストの先頭アドレスを、送信用の通信データ構造体ならば送信用通信データ構造体先頭アドレス（図１２の１２４）に、受信用の通信データ構造体ならば受信用通信データ構造体先頭アドレス（図１２の１２５）に夫々設定し（処理ステップＳ２００８）、最後に通信相手となる相手ユニットに対して、受信用や送信用の通信データ構造体の先頭アドレス情報を含んだメッセージ付きの割込みで通知する。一方、処理ステップＳ２００４において、通信データ構造体を相手ユニットの主記憶装置に配置する判断をしたならば、相手ユニットからメッセージ付きの割り込みによる通信データ構造体の先頭アドレスの通知を待ち（処理ステップＳ２０１０）、メッセージから通信データ構造体の先頭アドレスの値を取り出し、自ユニットの送信用通信データ構造体先頭アドレス（図１２の１２４）や受信用通信データ構造体先頭アドレス（図１２の１２５）に設定する（処理ステップＳ２０１１）。
【００４１】
以上の処理によってユニット間のデータ通信に対する初期化が完了する。
【００４２】
図１５は、図１３における処理ステップＳ１００９の詳細な処理フローを示した図である。図１５を参照しながら、送信処理のフローを説明する。
【００４３】
まず、自ユニットの管理情報（図１２の１２０）の送信用通信データ構造体先頭アドレス（図１２の１２４）で示される環状リストから送信カウンタ（図１２の１２１）で示される位置の通信データ構造体（Ｄｅｓと記述する）を取り出し（処理ステップＳ３００１）、選択した通信データ構造体（Ｄｅｓ）の属性転送サイズ（図９の９４）に送信データのサイズを設定する（処理ステップＳ３００２）。つぎに自ユニットの主記憶装置のメモリ帯域（Ｘと記述する）、相手ユニットの主記憶装置のメモリ帯域（Ｙと記述する）、自ユニットのプロセッサ負荷（Ｌｓと記述）と、相手ユニットのプロセッサ負荷（Ｌｄと記述）とを取得して（処理ステップＳ３００３〜処理ステップＳ３００６）、データ通信の実体であるデータ転送を自ユニットまたは相手ユニットで処理するかを判断する（処理ステップＳ３００７）。処理ステップＳ３００７での判断の結果、自メモリでデータ転送を行うならば、通信データ構造体（Ｄｅｓ）の属性ステータスの属性転送フラグを０に設定し（処理ステップＳ３００８）、通信データ構造体（Ｄｅｓ）の属性転送先アドレス（図９の９３）で示される主記憶装置に対し、送信データを通信データ構造体（Ｄｅｓ）の属性転送サイズ（図９の９４）で示されるサイズ分、図７に示したマスタインターフェースのＤＭＡアクセス機能を使用してコピーした後、送信データが格納されたメモリ領域を開放する（処理ステップＳ３０１０）。一方、処理ステップＳ３００７での判断の結果、相手ユニットでデータ転送を行うならば、図１０に示した転送元アドレス１０１トと転送先アドレス１０２とのアドレス組の情報１００（ｔｍｐ＿ａｄｄｒと記述）を自ユニットの主記憶装置上に生成して（処理ステップＳ３０１１）、転送元アドレス１０１には送信データの格納された先頭アドレスを設定し、転送先アドレス１０２には通信データ構造体（Ｄｅｓ）の属性転送先アドレス（図９の９３）設定し、通信データ構造体の属性転送サイズ（図９の９４）には送信データの転送サイズを設定した後、生成したアドレス組の情報（ｔｍｐ＿ａｄｄｒ）を通信データ構造体の属性転送先アドレス（図９の９３）に格納し（処理ステップＳ３０１１〜処理ステップＳ３０１３）、通信データ構造体（Ｄｅｓ）の属性ステータス（図９の９１）の属性転送フラグ（図１１の１１２）に１を設定する（処理ステップＳ３０１３）。つぎに通信データ構造体（Ｄｅｓ）の属性ステータス（図９の９１）の属性オーナ（図１１の１１２）を１に設定した（処理ステップＳ３０１４）後、相手ユニットに送信完了割込みをアサートする（処理ステップＳ３０１５）。最後に自ユニットの管理情報（図１２の１２０）の送信カウンタ（図１２の１２１）をインクリメントする（処理ステップＳ３０１６）。
【００４４】
以上により通信データの送信処理が行われる。
【００４５】
図１６は、図１３における処理ステップＳ１００７の詳細な処理フローを示した図である。図１６を参照しながら、送信完了後処理のフローを説明する。
【００４６】
まず、自ユニットの管理情報（図１２の１２０）の送信カウンタ（図１２の１２１）と送信済みカウンタ（図１２の１２２）とを比較して送信済みカウンタ（図１２の１２２）が送信カウンタ（図１２の１２１）未満であるかどうかを判断し（処理ステップＳ４００１）、送信済みカウンタ（図１２の１２２）が送信カウンタ（図１２の１２１）に達するまで値をインクリメントしながら（処理ステップＳ４００６）以下の処理を繰り返す。
【００４７】
送信用の通信データ構造体先頭アドレス（図１２の１２４）で示される環状リストのから送信済みカウンタ（図１２の１２２）で示される位置の通信データ構造体（Ｄｅｓと記述する）を取り出し（処理ステップＳ４００２）、選択した通信データ構造体（Ｄｅｓ）の属性ステータス（図９の９１）の属性転送フラグ（図１１の１１０）の値が１であるかどうかを判断し（処理ステップＳ４００３）、値が１であるならば、通信データ構造体（Ｄｅｓ）の属性転送先アドレス（図１２の９３）に示されたアドレス組の情報（図１０の１００）の属性転送元アドレス（図１０の１０１）で示される主記憶装置から開放し、通信データ構造体（Ｄｅｓ）の属性転送先アドレス（図９の９３）に通信データ構造体（Ｄｅｓ）の属性転送先アドレス（図１２の９３）に示されたアドレス組の情報（図１０の１００）の属性転送先アドレス（図１０の１０２）を設定した（処理ステップＳ４００５）後、アドレス組の情報（図１０の１００）の領域を主記憶装置から開放する。
【００４８】
以上により、通信データの送信完了時の後処理が行われる。
【００４９】
図１７は、図１３における処理ステップＳ１００５の詳細な処理フローを示した図である。図１７を参照しながら、受信処理のフローを説明する。
【００５０】
自ユニットの管理情報（図１２の１２０）の受信用通信データ構造体先頭アドレス（図１２の１２５）で示される環状リストから受信済みカウンタ（図１２の１２３）で示される位置の通信データ構造体（Ｄｅｓと記述する）を取り出す（処理ステップＳ５００１）。つぎに選択した通信データ構造体（Ｄｅｓ）の属性ステータス（図９の９１）の属性オーナ（図１１の１１１）を参照して値が１であるかどうかを判断する（処理ステップＳ５００２）。処理ステップＳ５００２において値が１であるならば、通信データ構造体（Ｄｅｓ）の属性ステータス（図９の９１）の属性転送フラグ（図１１の１１２）を参照して値が１かどうかを判断する（処理ステップＳ５００３）。処理ステップＳ５００３において値が１であるならば、データ通信の実体であるデータ転送は受信先である自ユニットで行うこととなり、まず通信データ構造体（Ｄｅｓ）の属性転送先アドレス（ａｄｄｒと記述）を参照し（処理ステップＳ５００４）、転送先アドレス（ａｄｄｒ）で示されるアドレスからアドレス組の情報（図１０の１００）の属性転送元アドレス（図１０の１０１、ｓａｄｒと記述）と転送先アドレス（図１０の１０２、ｄａｄｒと記述）を参照し（処理ステップＳ５００５）、通信データ構造体（Ｄｅｓ）の属性転送サイズ（図９の９４、ｓｉｚｅと記述）を参照した（処理ステップＳ５００６）後、転送元アドレス（ｓａｄｒ）から転送先アドレス（ｄａｄｒ）への転送サイズ（ｓｉｚｅ）分のデータ転送を自ユニットのマスタインターフェースが備えるＤＭＡアクセス機能を使用して処理を行い（処理ステップＳ５００７）、転送したデータをＯＳ等のソフト上位のアプリケーションの受信処理に渡し（処理ステップＳ５００８）、自ユニットの主記憶装置内に次の受信用のデータバッファ領域（ｎｅｗ＿ａｄｒと記述）を取得し、通信データ構造体（Ｄｅｓ）の属性転送先アドレスにそのアドレス（ｎｅｗ＿ａｄｒ）を格納する（処理ステップＳ５００９）。処理ステップＳ５００３において値が０であるならば、データ通信の実体であるデータ転送は既に完了しているので、通信データ構造体（Ｄｅｓ）の属性転送先アドレス（図９の９３）で示される主記憶装置のデータをＯＳ等のソフト上位のアプリケーションの受信処理に渡した（処理ステップＳ５０１０）後、自ユニットの主記憶装置内に次の受信用のデータバッファ領域（ｎｅｗ＿ａｄｒと記述）を取得し、通信データ構造体（Ｄｅｓ）の属性転送先アドレスで示されるアドレス組の情報（図１０の１００）の属性転送先アドレス（図１０の１０２）にそのアドレス（ｎｅｗ＿ａｄｒ）を格納する（処理ステップＳ５０１１）。次の受信用のデータバッファを設定した後、通信データ構造体（Ｄｅｓ）の属性ステータスの属性オーナを０に設定する（処理ステップＳ５０１２）。次に受信済みカウンタ（図１２の１２３）をインクリメントした（処理ステップＳ５０１３）後、処理ステップＳ５００１に戻り、次の受信処理を行う。処理ステップＳ５００２において受信済みカウンタ（図１２の１２３）で示される通信データ構造体が無効（未送信）であると判断したならば、受信済みカウンタを更新したかどうかを調べ、受信処理を行ったかどうかを判断して（処理ステップＳ５０１４）、受信処理を行ったならば、相手ユニットに対して受信完了割込みをアサートし（処理ステップＳ５０１５）、受信処理を終了する。
【００５１】
以上により、通信データの受信処理が行われる。
【００５２】
かかる構成によれば通信時点におけるデータ通信を行うユニット間のリソースの使用状況を把握することにより、データ通信の実体となるデータ転送処理を送信側ユニットまたは受信側ユニットのいずれかによって処理するかを選択することが可能となりデータ通信の高速化とシステムリソースの有効活用を図ることができる。
【００５３】
なお、本実施の形態において、データ転送を受信側ユニットで処理する際に転送先アドレス（図９の９３）に転送元アドレス（図１０の１０１）と転送先アドレス（図１０の１０２）との組の情報（図１０の１００）を格納したが、転送先アドレス（図９の９３）で示されるアドレスの先頭等の領域に転送元アドレスを設定して、受信側に転送元アドレスと転送先のアドレスを通知しても良い。
【００５４】
また、送信処理において、送信側でデータ転送を行う処理ステップＳ５００９の実行時間が予め定めた時間より長い場合は、途中で送信側でのデータ転送処理を止めて、受信側でデータ転送処理を行うように通信手段を変更しても良い。
【００５５】
また、受信処理において、受信側ユニットでのデータ転送を行う処理ステップＳ５００７に先立ち、自ユニットの主記憶装置のメモリ帯域を調べ、データ転送処理で消費するメモリ帯域が不足する場合は、自ユニットのプロセッサの制御によってメモリ帯域を一時的に拡げ、データ転送を確実に行い、データ転送終了後にメモリ帯域をもとに戻す処理を行っても良い。
【００５６】
また、データ通信の実体であるデータ転送を行うユニットがローカルバスの調停権を持つマスタユニットであるならば、ローカルバスのアクセス調停を制御して、他のローカルバスのアクセスを抑制することによってデータ転送を優先して処理させることにより、高速なデータ通信が出来るようにしても良い。
【００５７】
（実施の形態２）
以下、実施の形態１との相違点のみを説明する。
【００５８】
図１８は、本発明の実施の形態２の通信制御方式における送信処理のフローを示した図である。図１８において、本発明の実施の形態１の通信制御方式における送信処理フロー（図１５）との相違は、データ通信の実体であるデータ転送を送信側ユニットまたは受信側ユニットで行うかの判断処理が異なることである。以降、データ通信の実体であるデータ転送を送信側ユニットまたは受信側ユニットで行うかの判断処理についてのみ説明する。
【００５９】
図１８において、データ通信の実体であるデータ転送を送信側ユニットまたは受信側ユニットで行うかの判断をするために、送信処理を行う送信側ユニットは、自ユニットのプロセッサの負荷（Ｌｓと記述）と相手ユニットのプロセッサの負荷（Ｌｄと記述）を参照して（処理ステップＳ６００３〜処理ステップＳ６００４）、２つのユニットのプロセッサの負荷を比較して負荷の低いほうにデータ処理の実体であるデータ転送を行わせることを特徴とする。
【００６０】
（省略  以下、実施の形態１の記載方法と同様とする）
（実施の形態３）
以下、実施の形態１との相違点のみを説明する。
【００６１】
図１９は、本発明の実施の形態３の通信制御方式における送信処理のフローを示した図である。図１９において、本発明の実施の形態１の通信制御方式における送信処理フロー（図１５）との相違は、データ通信の実体であるデータ転送を送信側ユニットまたは受信側ユニットで行うかの判断処理が異なることである。以降、データ通信の実体であるデータ転送を送信側ユニットまたは受信側ユニットで行うかの判断処理についてのみ説明する。
【００６２】
図１９において、データ通信の実体であるデータ転送を送信側ユニットまたは受信側ユニットで行うかの判断をするために、送信処理を行う送信側ユニットは、相手ユニットの主記憶装置のメモリ帯域（Ｙと記述）と、自ユニットのプロセッサの負荷（Ｌｓと記述）と、相手ユニットのプロセッサの負荷（Ｌｄと記述）を参照して（処理ステップＳ７００３〜処理ステップＳ７００５）、相手ユニットのメモリ帯域（Ｙ）がデータ通信を行うのに十分であるか、あるいは２つのユニットのプロセッサの負荷を比較して自ユニットのプロセッサの負荷のほうが低いならば、自プロセッサでデータ処理の実体であるデータ転送を行うことを特徴とする。
【００６３】
（実施の形態４）
以下、実施の形態１、２、３との相違点のみを説明する。
【００６４】
本発明の実施の形態４の通信制御方式では、ユニットのプロセッサの負荷をプロセッサの稼働率を使用することを特徴とする。例えば、ＯＳの提供するプロセッサのロードアベレージ等を定期的に参照し、その値を記憶しておくことにより、データ通信時のプロセッサの負荷を参照することができる。
【００６５】
（実施の形態５）
以下、実施の形態１、２、３との相違点のみを説明する。
【００６６】
本発明の実施の形態５の通信制御方式では、ユニットのプロセッサの負荷をプロセッサの稼働率とプロセッサの動作周波数との積を使用することを特徴とする。
【００６７】
なお、ユニットが複数のプロセッサから構成される場合は、一部または全てのプロセッサの負荷の和をユニットのプロセッサの負荷として処理しても良い。
【産業上の利用可能性】
【００６８】
本発明にかかる通信制御方式は、マルチプロセッサコンピュータシステムにおける高速、かつシステムリソースを有効活用したユニット間のデータ通信機能を有し、ローカルバスを共有した疎結合なソフト構成をとるユニット間のネットワークドライバ等として有用である。またネットワークを介して機器間の機能連携サービスを提供する複合型ネットワーク機器等の用途にも応用できる。
【図面の簡単な説明】
【００６９】
【図１】従来の実施の形態および本発明の実施の形態１におけるシステム構成を示すブロック構成の図
【図２】従来の実施の形態におけるデータ転送制御方式の通信データ構造体の構成図
【図３】従来の実施の形態におけるデータ転送制御方式の通信データ構造体の属性ステータスの構成図
【図４】本発明の実施の形態１におけるデータ転送制御方式のバスインターフェースユニットの構成図
【図５】本発明の実施の形態１におけるデータ転送制御方式のマスタローカルバスインターフェースユニットの構成図
【図６】本発明の実施の形態１におけるデータ転送制御方式のスレーブローカルバスインターフェースユニットの構成図
【図７】本発明の実施の形態１におけるデータ転送制御方式のマスタインターフェースの機能一覧図
【図８】本発明の実施の形態１におけるデータ転送制御方式のターゲットインターフェースの機能一覧図
【図９】本発明の実施の形態１におけるデータ転送制御方式の通信データ構造体の構成図
【図１０】本発明の実施の形態１におけるデータ転送制御方式の転送先アドレスと転送元アドレスとの組の情報の構成図
【図１１】本発明の実施の形態１におけるデータ転送制御方式の通信データ構造体の属性ステータスの構成図
【図１２】本発明の実施の形態１におけるデータ転送制御方式の各ユニットがユニット間でデータ通信を行うための管理情報の構成図
【図１３】本発明の実施の形態におけるデータ転送制御方式のデータ通信処理の全体フローを示した図
【図１４】本発明の実施の形態におけるデータ転送制御方式のデータ通信初期化処理のフローを示した図
【図１５】本発明の実施の形態１におけるデータ転送制御方式の送信処理のフローを示した図
【図１６】本発明の実施の形態におけるデータ転送制御方式の送信完了後処理のフローを示した図
【図１７】本発明の実施の形態におけるデータ転送制御方式の受信処理のフローを示した図
【図１８】本発明の実施の形態２におけるデータ転送制御方式の送信処理のフローを示した図
【図１９】本発明の実施の形態３におけるデータ転送制御方式の送信処理のフローを示した図
【符号の説明】
【００７０】
１０    ユニット
１０ａ    プロセッサ
１０ｂ，４０ｂ    主記憶装置
１０ｃ，４０    バスインターフェースユニット
１１，４１，５１，６１    ローカルバス
１２，４２    ネットワークドライバ
１３    ネットワーク制御装置
１４    ディスク制御装置
２０，９０    通信データ構造体
２１，３０，９１    ステータス
２２，１０１    転送元アドレス
２３，９３，１０２    転送先アドレス
２４，９４    転送サイズ
２５，９５    リンク
３１，１１１    オーナ
４３    ホストバスインターフェース
４４    ローカルバスインターフェース
４５    メモリコントローラ
４６，５２，６２    内部バス
５０    マスタローカルバスインターフェース
５３，６３    ターゲットインターフェース
５４，６４    マスタインターフェース
５５    調停部
５６    制御信号
６０    スレーブローカルバスインターフェース
１００    データ転送制御方式の転送先アドレスと転送元アドレスとの組の情報
１１０    ステータス
１１２    転送フラグ
１２０    データ通信用ユニット内の管理情報
１２１    送信カウンタ
１２２    送信済みカウンタ
１２３    受信済みカウンタ
１２４    送信用通信データ構造体先頭アドレス
１２５    受信用通信データ構造体先頭アドレス
１２６    送信用通信データ構造体配置情報
１２７    受信用通信データ構造体配置情報
Ｓ１００１〜Ｓ７０１５    処理ステップ
【図１】
2007316804.tif 000003
【図２】
2007316804.tif 000004
【図３】
2007316804.tif 000005
【図４】
2007316804.tif 000006
【図５】
2007316804.tif 000007
【図６】
2007316804.tif 000008
【図７】
2007316804.tif 000009
【図８】
2007316804.tif 000010
【図９】
2007316804.tif 000011
【図１０】
2007316804.tif 000012
【図１１】
2007316804.tif 000013
【図１２】
2007316804.tif 000014
【図１３】
2007316804.tif 000015
【図１４】
2007316804.tif 000016
【図１５】
2007316804.tif 000017
【図１６】
2007316804.tif 000018
【図１７】
2007316804.tif 000019
【図１８】
2007316804.tif 000020
【図１９】
2007316804.tif 000021