(57)【要約】【課題】  ハードプロセッサ・エラーの逆影響を減少させる効果的なマルチプロセシングを達成する新規な方法と装置を提供する。【解決手段】  方法と装置は、処理ユニット２０４に関連するそれぞれのサブ処理ユニット２０８によって実行されるように割り当てられるプロセッサ・タスクおよび関連するプロセッサ負荷をモニタし、処理エラーが所定のサブ処理ユニット２０８の１つに起こったかを検出し、所定のサブ処理ユニット２０８のプロセッサ・タスクのプロセッサ負荷および関連するサブ処理ユニット２０８のプロセッサ負荷に基づいて、所定のサブ処理ユニット２０８のプロセッサ・タスクのすべてを、処理ユニット２０４に関連する他のサブ処理ユニット２０８を含む１つ以上の関連するサブ処理ユニット２０８に再割り当てし、そして、（ｉ）シャットダウンおよび（ｉｉ）所定のサブ処理ユニット２０８のリブートの少なくとも１つを行うために提供される。【選択図】  図２
2005332402.tif 000002
【特許請求の範囲】
【請求項１】
メイン処理ユニットに関連する各々のサブ処理ユニットによって実行されるように割り当てられたプロセッサ・タスクおよび関連するプロセッサ負荷をモニタし、
所定のサブ処理ユニットの１つに処理エラーが起こったかどうかを検出し、
前記所定のサブ処理ユニットのプロセッサ・タスクおよび関連サブ処理ユニットのプロセッサ負荷に基づいて、すべての前記所定のサブ処理ユニットの前記プロセッサ・タスクを、前記メイン処理ユニットに関連する他のサブ処理ユニットを含む、１つ以上の前記関連サブ処理ユニットに再割り当てすることを特徴とするエラー処理方法。
【請求項２】
前記所定のサブ処理ユニットの、（ｉ）シャットダウン、（ｉｉ）再起動、のうち少なくとも１つを行うことを特徴とする請求項１に記載のエラー処理方法。
【請求項３】
更に、前記サブ処理ユニットの少なくとも１つが、前記所定のサブ処理ユニットからいくつかのまたはすべての前記プロセッサ・タスクを受信するために実質的に負荷がかけられず利用可能であるように、前記プロセッサ・タスクを前記サブ処理ユニットの中に割り当てることを特徴とする請求項１または２に記載のエラー処理方法。
【請求項４】
更に、プロセッサ・タスクをスタンバイ状態とするようにスケジューリングされていない１つ以上の負荷がかけられていないサブ処理ユニットに命令することを特徴とする請求項３に記載のエラー処理方法。
【請求項５】
前記サブ処理ユニットの各々は、（ｉ）電力供給割込回路、（ｉｉ）クロック割込回路のうち少なくとも１つを含み、
パワーオフ・コマンドに応答して前記サブ処理ユニットをスタンバイ状態とするため、前記電力供給割込回路および前記クロック割込回路の少なくとも１つを使用することを特徴とする請求項４に記載のエラー処理方法。
【請求項６】
前記サブ処理ユニットの各々は、電力供給および電力供給割込回路を含み、
パワーオフ・コマンドに応答して対象サブ処理ユニットをスタンバイ状態とするため、前記電力供給をシャットダウンするために前記電力供給割込回路を使用することを特徴とする請求項５に記載のエラー処理方法。
【請求項７】
前記関連サブ処理ユニットは、各々のグループがそれぞれのメイン処理ユニットに関連する、１つ以上の前記サブ処理ユニットのそれぞれのグループを含むことを特徴とする請求項１から６のいずれかに記載のエラー処理方法。
【請求項８】
（ｉ）前記サブ処理ユニットのそれぞれのグループおよび前記関連するメイン処理ユニットの各々は、１セットのマルチプロセシング・ユニットの一部であって、前記サブ処理ユニットのそれぞれのグループおよび前記メイン処理ユニットは、共通バスを、１つ以上の他の前記サブ処理ユニットのそれぞれのグループおよび関連するメイン処理ユニットと共有し、または、
（ｉｉ）前記サブ処理ユニットのそれぞれのグループおよび前記関連するメイン処理ユニットの各々は、独立のマルチプロセシング・ユニットであって、前記サブ処理ユニットのそれぞれのグループおよび前記メイン処理ユニットは、共通バスを、他のいかなる前記サブ処理ユニットのそれぞれのグループおよび関連するメイン処理ユニットとも共有せず、または、
（iii）前記サブ処理ユニットのそれぞれのグループおよび前記関連するメイン処理ユニットの各々は、少なくとも分散マルチプロセシング・ユニットの一部であって、前記メイン処理ユニットおよび前記サブ処理ユニットの少なくともいくつかは、相互に離れて配置される、
ことを特徴とする請求項７に記載のエラー処理方法。
【請求項９】
マルチプロセシング・ユニット、独立のマルチプロセシング・ユニットおよび分散マルチプロセシング・ユニットは、（ｉ）共通のまたは異なる回路基板上、（ｉｉ）共通のまたは異なるプロダクト、（ｉｉｉ）共通のまたは異なる位置、の少なくともいずれかに配置されることを特徴とする請求項８に記載のエラー処理方法。
【請求項１０】
更に、所定のサブ処理ユニットと処理結果を共有するために、所定のサブ処理ユニットと１つ以上のサブ処理ユニットの間に必要な通信バンド幅および通信レイテンシを少なくとも含む通信要求を決定し、
前記所定のサブ処理ユニットのタスクの再割り当てを、前記通信要求に基づくものとすることを特徴とする請求項９に記載のエラー処理方法。
【請求項１１】
前記共有される処理結果は、前記所定のサブ処理ユニットの前記プロセッサ・タスクの結果を含むことを特徴とする請求項１０に記載のエラー処理方法。
【請求項１２】
処理結果を共有する前記１つ以上のサブ処理ユニットは、前記所定のサブ処理ユニットを含むことを特徴とする請求項９から１１のいずれかに記載のエラー処理方法。
【請求項１３】
更に、プロセッサ・タスクが割り当てられる可能性のある、所定のサブ処理ユニットと１つ以上の関連サブ処理ユニットと処理結果を共有するために、１つ以上のサブ処理ユニットの間に存在する通信バンド幅および通信レイテンシを少なくとも含む通信コストを決定し、
前記所定のサブ処理ユニットのタスクの再割り当てを、前記通信要求および前記通信コストとの比較に基づくものとすることを特徴とする請求項１０または１１に記載のエラー処理方法。
【請求項１４】
通信要求および通信コストは、
（ｉ）共通の回路基板上の２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅および／またはレイテンシ、
（ｉｉ）異なる回路基板上の２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅および／またはレイテンシ、
（ｉｉｉ）共通のプロダクトの２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅および／またはレイテンシ、
（ｉｖ）異なるプロダクトの２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅および／またはレイテンシ、
（ｖ）共通の位置の異なるプロダクトの２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅および／またはレイテンシ、
（ｖｉ）異なるプロダクト、異なる位置の各々の２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅および／またはレイテンシ、
の少なくとも１つを含むこと特徴とする請求項１３に記載のエラー処理方法。
【請求項１５】
２つのサブ処理ユニットの間の１つ以上データ通信インターフェースは、
（ｉ）イントラサブ処理ユニット入出力バスインターフェース、
（ｉｉ）インターサブ処理ユニット入出力バスインターフェース、
（ｉｉｉ）ファブリック交換相互接続、
（ｉｖ）ネットワーク・インターフェース・カード、
（ｖ）データ・ネットワーク、
の少なくとも１つを含むことを特徴とする請求項１４に記載のエラー処理方法。
【請求項１６】
マルチプロセシング・ユニットおよび独立のマルチプロセシング・ユニットの少なくとも１つは、管理部と通信し、前記管理部は、
（ｉ）前記関連サブ処理ユニットの前記プロセッサ負荷を表すパフォーマンス情報、
（ｉｉ）前記マルチプロセシング・ユニットおよび前記独立のマルチプロセシング・ユニットの中のどこに前記関連サブ処理ユニットが配置されるかを表す位置情報、
（ｉｉｉ）前記処理結果を前記所定のサブ処理ユニットと共有するために前記プロセッサ・タスクが再割り当てされることができる前記関連サブ処理ユニットの１つおよび前記１つ以上のサブ処理ユニットの間に存在する通信バンド幅および通信レイテンシを表す通信情報、
のうち少なくとも１つを含むテーブルを含むことを特徴とする請求項１０から１５のいずれかに記載のエラー処理方法。
【請求項１７】
更に、前記関連サブ処理ユニットの中の、プロセッサ負荷、位置、通信バンド幅および通信レイテンシの少なくとも１つの変化に応答して前記テーブルを更新することを特徴とする請求項１６に記載のエラー処理方法。
【請求項１８】
更に、前記関連サブ処理ユニットのうちどれが前記所定のサブ処理ユニットの前記プロセッサ・タスクによって再割り当てされるべきかを決定するために前記テーブルを使用することを特徴とする請求項１６または１７に記載のエラー処理方法。
【請求項１９】
所定のサブ処理ユニットと関連する前記メイン処理ユニットから、少なくとも、
（ｉ）前記所定のサブ処理ユニットの前記プロセッサ・タスクの前記プロセッサ負荷、
（ｉｉ）前記所定のサブ処理ユニットの前記位置、
（ｉｉｉ）前記所定のサブ処理ユニットの前記通信要求、
のうち少なくとも１つを含むクエリーを送信することを特徴とする請求項１８に記載のエラー処理方法。
【請求項２０】
前記関連サブ処理ユニットのうちどれが前記所定のサブ処理ユニットの前記プロセッサ・タスクによって再割り当てされるべきかを決定するために、前記プロセッサ・タスクのプロセッサ負荷、位置および所定のサブ処理ユニットの通信要求の少なくとも１つを、テーブルの、パフォーマンス情報、位置情報および通信情報の少なくとも１つに適合させることを特徴とする請求項１９に記載のエラー処理方法。
【請求項２１】
マルチプロセシング・ユニット、独立のマルチプロセシング・ユニット、分散マルチプロセシング・ユニットの少なくとも１つは、
（ｉ）使用のためにリースされることができる関連サブ処理ユニットの少なくとも１つの処理能力を表す利用可能情報、およびこのような関連サブ処理ユニットのプロセッサ負荷を表すパフォーマンス情報、
（ｉｉ）リースされることができる前記関連サブ処理ユニットの使用に対するそれぞれの料金を表すコスト情報、
（ｉｉｉ）リースされることができる前記関連サブ処理ユニットがマルチプロセシング・ユニット、独立のマルチプロセシング・ユニットおよび分散マルチプロセシング・ユニットの中でどこに配置されるかを表す位置情報、
（ｉｖ）処理結果を前記所定の処理ユニットと共有するために、前記プロセッサ・タスクが再割り当てされることができるリースのための前記関連サブ処理ユニットの１つと、１つ以上のサブ処理ユニットとの間に存在する通信バンド幅および通信レイテンシを表す通信情報、
の少なくとも１つを含むテーブルを含む管理部と通信することを特徴とする請求項１０に記載のエラー処理方法。
【請求項２２】
更に、リースのための前記関連サブ処理ユニットの中の、利用可能情報、コスト情報、位置情報または通信情報の変化に応じて前記テーブルを更新することを特徴とする請求項２１に記載のエラー処理方法。
【請求項２３】
更に、リースのための関連サブ処理ユニットのうちどれが所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるべきかを決定するために、前記テーブルを使用することを特徴とする請求項２１または２２に記載のエラー処理方法。
【請求項２４】
更に、
（ｉ）前記所定のサブ処理ユニットの前記プロセッサ負荷、
（ｉｉ）前記所定のサブ処理ユニットの前記位置、
（ｉｉｉ）リースのための１つ以上の関連サブ処理ユニットから処理能力をリースするために受け入れられるコストを表すリース情報、
（ｉｖ）通信要求、
の少なくとも１つを含むクエリーを、前記所定のサブ処理ユニットに関連する前記メイン処理ユニットから前記管理部へ送ることを特徴とする請求項２３に記載のエラー処理方法。
【請求項２５】
更に、リースのための前記関連サブ処理ユニットのうちどれが前記所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるべきかを決定するために、前記クエリーの、前記プロセッサ負荷、前記受け入れられるコスト、前記位置および前記通信要求の少なくとも１つを、前記テーブルの、利用可能情報、コスト情報、位置情報および通信情報の少なくとも１つと適合させることを特徴とする請求項２４に記載のエラー処理方法。
【請求項２６】
前記所定のサブ処理ユニットの前記プロセッサ・タスクによって再割り当てされるときに、リースのための前記関連サブ処理ユニットは、その使用の料金を徴収することができる料金徴収部の１つ以上と関連することを特徴とする請求項２５に記載のエラー処理方法。
【請求項２７】
更に、最低料金を有するリースのための１つ以上の関連サブ処理ユニットが前記所定のサブ処理ユニットの前記プロセッサ・タスクによって再割り当てされることができるように、前記クエリーの前記プロセッサ負荷、前記受け入れられるコスト、前記位置および前記通信要求を、前記テーブルの、利用可能情報、コスト情報、位置情報および通信情報と適合させることを特徴とする請求項２４から２６のいずれかに記載のエラー処理方法。
【請求項２８】
前記所定のサブ処理ユニットの前記プロセッサ・タスクによって再割り当てされるときに、リースのための前記関連サブ処理ユニットは、その使用の料金を徴収することができる料金徴収部の１つ以上と関連することを特徴とする請求項２７に記載のエラー処理方法。
【請求項２９】
更に、前記所定のサブ処理ユニットに関連する前記メイン処理ユニットからの応答要求を、１つ以上の前記関連サブ処理ユニットから発信し、
それらがメイン処理ユニットから１つ以上の関連サブ処理ユニットへ移動するとき、それぞれの通信要求によって発信される通信インターフェースと関連する通信レイテンシおよび通信バンド幅の少なくとも１つを表す通信情報を、１つ以上の通信要求に集積し、
処理結果を、前記所定のサブ処理ユニット、および集積された通信情報に基づいてプロセッサ・タスクが再割り当てされることができる１つ以上の関連サブ処理ユニットと共有するために、少なくとも前記１つ以上のサブ処理ユニットの間に存在する通信コストの見積り計算を計算することを特徴とする請求項１３から１５のいずれかに記載のエラー処理方法。
【請求項３０】
前記所定のサブ処理ユニットの前記プロセッサ・タスクの結果を受信する１つ以上のサブ処理ユニットは、前記所定のサブ処理ユニットを含むことを特徴とする請求項２９に記載のエラー処理方法。
【請求項３１】
前記応答要求の１つ以上は、コミュニケーション・ネットワーク上の伝送が可能なネットワーク・データ・パケットの形態であることを特徴とする請求項２９または３０に記載のエラー処理方法。
【請求項３２】
前記コミュニケーション・ネットワークは、インターネットおよび通信の他のネットワークの少なくとも１つであることを特徴とする請求項２９から３１のいずれかに記載のエラー処理方法。
【請求項３３】
更に、１つ以上の応答を、前記メイン処理ユニットで、１つ以上の前記関連サブ処理ユニットから受信し、
前記所定のサブ処理ユニットのプロセッサ・タスクを、前記応答要求に応答する１つ以上の前記関連サブ処理ユニットに再割り当てすることを特徴とする請求項２９に記載のエラー処理方法。
【請求項３４】
前記１つ以上の応答は、コミュニケーション・ネットワーク上の伝送ができるネットワーク・データ・パケットの形態であることを特徴とする請求項３３に記載のエラー処理方法。
【請求項３５】
前記コミュニケーション・ネットワークは、インターネットおよびそれに接続された他のネットワークの少なくとも１つであることを特徴とする請求項３４に記載のエラー処理方法。
【請求項３６】
更に、前記所定のサブ処理ユニットからの応答要求に応答する前記１つ以上の関連サブ処理ユニットへのアップリンク・データ・パスの通信コストの計算を行い、
前記計算は、
（ｉ）各々のアップリンク・データ・パスのため、それがメイン処理ユニットからそれぞれの関連サブ処理ユニットの１つへ移動するとき、各々のアップリンク・データ・パスのための応答要求によって遭遇するそれぞれの通信インターフェイスと関連する通信レイテンシであって、それによって、各々のアップリンク・データ・パスの集計されたアップリンク通信レイテンシを得る、通信レイテンシを加算すること、および、
（ｉｉ）各々のアップリンク・データ・パスのための最短通信バンド幅を得るために、それが前記メイン処理ユニットから前記それぞれの関連サブ処理ユニットの１つへ移動するとき、各々のアップリンク・データ・パスのための前記応答要求によって遭遇する前記それぞれの通信インターフェイスと関連する通信バンド幅を、各々のアップリンク・データ・パスのために比較すること、
の少なくとも１つを含むことを特徴とする請求項３３から３５のいずれかに記載のエラー処理方法。
【請求項３７】
更に、前記所定のサブ処理ユニットの前記プロセッサ・タスクを、前記通信要求、および前記集計通信レイテンシと各々のアップリンク・データ・パスのための最短通信バンド幅との少なくとも１つとの比較に基づいて、前記通信要求に応答する１つ以上の前記関連サブ処理ユニットに割り当てることを特徴とする請求項３６に記載のエラー処理方法。
【請求項３８】
更に、それらが１つ以上の前記関連サブ処理ユニットからメイン処理ユニットへ移動するとき、それぞれの応答によって発信される通信インターフェイスと関連する、通信レイテンシおよび通信バンド幅の少なくとも１つを表す付加的通信情報を、１つ以上の応答に集積し、
集積された前記通信情報および前記集積された付加的通信情報に基づいて前記通信コスト計算を計算することを特徴とする請求項３３から３７のいずれかに記載のエラー処理方法。
【請求項３９】
各々の前記応答は、前記それぞれの集積された付加的通信情報とともに前記集積された通信情報の両方を含み、前記集積された通信情報および前記集積された付加的通信情報は、前記１つ以上の通信要求が発信されるメイン処理ユニットに利用可能であることを特徴とする請求項３８に記載のエラー処理方法。
【請求項４０】
更に、前記所定のサブ処理ユニットと前記応答要求に応答する前記１つ以上の関連サブ処理ユニットとの間のアップリンク・データ・パスおよびダウンリンク・データ・パスの通信コストの計算を行い、
前記計算は、
（ｉ）それが前記メイン処理ユニットからそれぞれの前記関連サブ処理ユニットの１つへ移動するとき、各々のアップリンク・データ・パスのための前記応答要求によって遭遇する前記それぞれの通信インターフェイスと関連する通信レイテンシであって、それによって、各々のアップリンク・データ・パスの集計されたアップリンク通信レイテンシを得る、通信レイテンシを加算すること、
（ｉｉ）各々のアップリンク・データ・パスのための最短通信バンド幅を得るために、前記メイン処理ユニットから前記それぞれの関連サブ処理ユニットの１つへ移動するとき、各々のアップリンク・データ・パスのための前記応答要求によって遭遇する前記それぞれの通信インターフェイスと関連する通信バンド幅を、各々のアップリンク・データ・パスのために、比較すること、
（ｉｉｉ）それが前記それぞれの関連サブ処理ユニットの１つから前記メイン処理ユニットへ移動するとき、各々のダウンリンク・データ・パスのための前記応答によって発信されるそれぞれの通信インターフェイスと関連する通信レイテンシであって、それによって、各々のダウンリンク・データ・パスの集計されたダウンリンク通信レイテンシを得る、通信レイテンシを加算すること、
（ｉｖ）各々のダウンリンク・データ・パスのための最短通信バンド幅を得るために、それが前記それぞれの関連サブ処理ユニットの１つから前記メイン処理ユニットへ移動するとき、各々のダウンリンク・データ・パスのための前記応答によって遭遇する前記それぞれの通信インターフェイスと関連する通信バンド幅を、各々のダウンリンク・データ・パスのために、比較すること、
の少なくとも１つを含むことを特徴とする請求項３８または３９に記載のエラー処理方法。
【請求項４１】
更に、前記所定のサブ処理ユニットのプロセッサ・タスクを、前記通信要求と、各々のアップリンク・データ・パスのために集積されたアップリンク・データ通信レイテンシ、各々のダウンリンク・データ・パスのために集積されたダウンリンク・データ通信レイテンシ、各々のアップリンク・データ・パスのための最短通信バンド幅、各々のダウンリンク・データ・パスのための最短通信バンド幅、の少なくとも１つとの比較に基づいて、前記応答要求に応答する１つ以上の前記関連サブ処理ユニットに割り当てることを特徴とする請求項４０に記載のエラー処理方法。
【請求項４２】
更に、処理結果を所定のサブ処理ユニットと共有するために、１つ以上の応答要求を、前記メイン処理ユニットから１つ以上のサブ処理ユニットへ発信し、
処理結果を前記所定のサブ処理ユニットと共有するために、前記それぞれの通信要求によって発信される通信インターフェースに関連する、通信レイテンシと通信バンド幅の少なくとも１つを表す付加的通信情報を、それらがメイン処理ユニットから１つ以上のサブ処理ユニットへ移動するときに集積し、
前記集積された通信情報および前記集積された付加的通信情報の違いに基づいて前記通信コストを計算することを特徴とする請求項３３に記載のエラー処理方法。
【請求項４３】
更に、処理結果を前記所定のサブ処理ユニットと共有するため、前記所定のサブ処理ユニットと、前記応答要求に応答する前記１つ以上の関連サブ処理ユニットの間、および前記所定のサブ処理ユニットおよび前記１つ以上のサブ処理ユニットの間のアップリンク・データ・パスおよびダウンリンク・データ・パスの通信コストの計算を行い、
前記計算は、
（ｉ）それが前記メイン処理ユニットから、前記それぞれの関連サブ処理ユニットの１つへ、および／または前記所定のサブ処理ユニットの前記プロセッサ・タスクの前記結果を受信するために前記１つ以上のサブ処理ユニットへ移動するとき、各々のアップリンク・データ・パスのための応答要求によって遭遇する前記それぞれの通信インターフェイスと関連する通信レイテンシであって、それによって、各々のアップリンク・データ・パスの集計されたアップリンク通信レイテンシを得る、通信レイテンシを加算すること、
（ｉｉ）各々のアップリンク・データ・パスのための最短通信バンド幅を得るために、前記メイン処理ユニットから前記それぞれの関連サブ処理ユニットの１つへ、および／または前記所定のサブ処理ユニットの前記プロセッサ・タスクの前記結果を受信するために前記１つ以上のサブ処理ユニットへ移動するとき、各々のアップリンク・データ・パスのための前記応答要求によって遭遇する前記それぞれの通信インターフェイスと関連する通信バンド幅を、各々のアップリンク・データ・パスのために、比較すること、
（ｉｉｉ）それが前記それぞれの関連サブ処理ユニットの１つから前記メイン処理ユニットへ、および／または前記所定のサブ処理ユニットの前記プロセッサ・タスクの前記結果を受信するために前記１つ以上のサブ処理ユニットへ移動するとき、各々のダウンリンク・データ・パスのための前記応答によって遭遇する前記それぞれの通信インターフェイスと関連する通信レイテンシであって、それによって、各々のダウンリンク・データ・パスの集計されたダウンリンク通信レイテンシを得る、通信レイテンシを加算すること、
（ｉｖ）各々のダウンリンク・データ・パスのための最短通信バンド幅を得るために、それが前記それぞれの関連サブ処理ユニットの１つから前記メイン処理ユニットへ、および／または前記所定のサブ処理ユニットの前記プロセッサ・タスクの前記結果を受信するために前記１つ以上のサブ処理ユニットへ移動するとき、各々のダウンリンク・データ・パスのための応答によって遭遇する前記それぞれの通信インターフェイスと関連する通信バンド幅を、各々のダウンリンク・データ・パスのために、比較すること、
の少なくとも１つを含むことを特徴とする請求項４２に記載のエラー処理方法。
【請求項４４】
前記所定のサブ処理ユニットの前記プロセッサ・タスクを、前記通信要求と、各々のアップリンク・データ・パスのために集積されたアップリンク・データ通信レイテンシ、各々のダウンリンク・データ・パスのために集積されたダウンリンク・データ通信レイテンシ、各々のアップリンク・データ・パスのための最短通信バンド幅、各々のダウンリンク・データ・パスのための最短通信バンド幅、の少なくとも１つとの比較に基づいて、前記応答要求に応答する１つ以上の前記関連サブ処理ユニットに割り当てることを特徴とする請求項４３に記載のエラー処理方法。
【請求項４５】
更に、予約要求を、前記所定のサブ処理ユニットと関連する前記メイン処理ユニットから前記所定のサブ処理ユニットおよび前記所定のサブ処理ユニットの前記プロセッサ・タスクが再割り当てされる前記１つ以上の関連サブ処理ユニットの間の通信に関連する１つ以上のアービタへ発信し、
前記予約要求は、前記１つ以上のバス・アービタに、
（ｉ）再割り当てされた前記プロセッサ・タスクを実行すること、
（ｉｉ）このような結果を受信するために１つ以上の他のサブ処理ユニットに前記プロセッサ・タスクの結果を送信すること、
の少なくとも１つのために通信バンド幅を予約させることを特徴とする請求項３３から４４に記載のエラー処理方法。
【請求項４６】
更に、所定のサブ処理ユニットに関連するメイン処理ユニットから１つ以上のバス・アービタへの予約クリア要求を発信し、予約クリア要求は、１つ以上のバス・アービタに、通信バンド幅の予約をクリアさせることを特徴とする請求項４５に記載のエラー処理方法。
【請求項４７】
前記応答は、前記集積された情報、および応答を発信している前記関連サブ処理ユニットのそれぞれのプロセッサ負荷を表すパフォーマンス情報の少なくとも１つを含むことを特徴とする請求項３３から４６に記載のエラー処理方法。
【請求項４８】
更に、前記所定のサブ処理ユニットの前記プロセッサ・タスクの前記プロセッサ負荷、応答を発信する前記関連サブ処理ユニットのためのそれぞれの前記プロセッサ負荷、前記通信要求、前記集積された情報、との比較に基づいて、前記所定のサブ処理ユニットの前記プロセッサ・タスクの再割り当てのために、１つ以上の前記関連サブ処理ユニットを選択することを特徴とする請求項４７に記載のエラー処理方法。
【請求項４９】
各々がプロセッサ・タスクを実行するように操作可能な、複数のサブ処理ユニット、および、
（ｉ）それぞれのサブ処理ユニットによって実行されるように割り当てられる、前記プロセッサ・タスクおよび関連するプロセッサ負荷をモニタすること、
（ｉｉ）処理エラーが所定の１つの前記サブ処理ユニットに起こったかどうかを検出すること、
（ｉｉｉ）前記所定のサブ処理ユニットの前記プロセッサ・タスクの前記プロセッサ負荷、および前記関連サブ処理ユニットの前記プロセッサ負荷に基づいて前記所定のサブ処理ユニットの前記プロセッサ・タスクのすべてを、前記メイン処理ユニットに関連する他のサブ処理ユニットを含む１つ以上の関連サブ処理ユニットに割り当てること、
を操作可能なメイン処理ユニット、を備えることを特徴とする装置。
【請求項５０】
各々がプロセッサ・タスクを実行するように操作可能な、複数のサブ処理ユニット、および、
（ｉ）それぞれのサブ処理ユニットによって実行されるように割り当てられる、前記プロセッサ・タスクおよび関連するプロセッサ負荷をモニタすること、
（ｉｉ）処理エラーが所定の１つの前記サブ処理ユニットに起こったかどうかを検出すること、
（ｉｉｉ）前記所定のサブ処理ユニットの前記プロセッサ・タスクの前記プロセッサ負荷、および前記関連サブ処理ユニットの前記プロセッサ負荷に基づいて前記所定のサブ処理ユニットの前記プロセッサ・タスクのすべてを、前記メイン処理ユニットに関連する他のサブ処理ユニットを含む１つ以上の関連サブ処理ユニットに割り当てること、
を操作可能なメイン処理装置、を備えることを特徴とするエラー処理システム。
【請求項５１】
メイン処理ユニットに関連する各々のサブ処理ユニットによって実行されるように割り当てられたプロセッサ・タスクおよび関連するプロセッサ負荷をモニタする機能と、
所定のサブ処理ユニットの１つに処理エラーが起こったかどうかを検出する機能と、
前記所定のサブ処理ユニットのプロセッサ・タスクおよび関連サブ処理ユニットのプロセッサ負荷に基づいて、すべての前記所定のサブ処理ユニットの前記プロセッサ・タスクを、前記メイン処理ユニットに関連する他のサブ処理ユニットを含む、１つ以上の前記関連サブ処理ユニットに再割り当てする機能と、をコンピュータに実現せしめることを特徴とするプログラムを記録したコンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセシング・システムのプロセッサエラーを扱うための方法と装置に関し、特に、プロセッサ・エラーが発生するときに、マルチプロセシング・システムのサブ処理ユニットの中のプロセッサ・タスクを再割り当てする方法と装置に関する。
【背景技術】
【０００２】
リアルタイム処理、マルチメディアのアプリケーションは、ますます重要になっている。これらのアプリケーションは、例えば毎秒何千メガビットものデータなど、極めて速い処理速度を必要とする。１つの処理ユニットが速い処理速度が可能な間、それらは一般にマルチプロセッサ・アーキテクチャの処理速度に適合することができない。実際に、マルチプロセッサ・システムにおいて、複数のサブプロセッサは、所望の処理結果を達成するためにパラレルに、または少なくとも連携して演算することができる。
【０００３】
マルチプロセシング技術を使用することができるコンピュータおよび計算装置のタイプは、広範囲にわたる。パソコン（ＰＣ）およびサーバに加えて、これらの計算装置は、移動電話、モバイル・コンピュータ、パーソナル携帯情報機器（ＰＤＡ）、セットトップボックス、デジタル・テレビおよび他の多くを含む。
【０００４】
マルチプロセシング・システムの設計上重要なことは、どのように１つのサブ処理ユニットが処理エラーを示す時を管理するかである。実際に、処理エラーは、マルチプロセシング・システムの全体的なパフォーマンスに影響を及ぼす可能性があり、逆にリアルタイム処理、マルチメディア、ユーザによる経験に影響を与える可能性がある。所望の結果を達成するために、１つのサブプロセッサの結果が他のサブ処理ユニットによって使われることになっているときに、これは特にあてはまる。
【０００５】
エラー・コレクション・コード（ＥＣＣ）・エラー、パリティ・エラー、プロセッサ・ハングアップ、その他のようなハードプロセッサ・エラーは、致命的エラーまたは修復可能なエラーとして特徴づけられる。致命的エラーは、オペレーティング・システム・エラー、カーネル・エラー、その他によって起こる可能性があり、一方、修復可能なエラーは、一般にオペレーティング・システムエラーまたはカーネル・エラーを含まない。修復時に最初から所定のサブ処理を再起動し、およびプロセッサ・タスクを再実行しなければならないことを要求するであろうケースのように、修復可能なエラーが発生するときに、いかなるリアルタイム処理期限または処理要求にも反することなくプロセッサ・タスクを実行し続けることができることが望ましい。本発明までは、これは可能でなかった。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、本技術において、ハードプロセッサ・エラーの逆影響を減少させる効果的なマルチプロセシングを達成する新規な方法と装置の必要性がある。
【課題を解決するための手段】
【０００７】
１つ以上の本発明の態様において、エラー処理方法は、メイン処理ユニットに関連する各々のサブ処理ユニットによって実行されるように割り当てられたプロセッサ・タスクおよび関連するプロセッサ負荷をモニタすること、サブ処理ユニットの所定の１つに処理エラーが起こったかどうかを検出すること、所定のサブ処理ユニットのプロセッサ負荷および関連サブ処理ユニットのプロセッサ負荷に基づいて、すべての所定のサブ処理ユニットのプロセッサ・タスクを、メイン処理ユニットに関連する他のサブ処理ユニットを含む、１つ以上の関連サブ処理ユニットに再割り当てすること、を含む。また、本方法は、（ｉ）シャットダウンすること、（ｉｉ）所定のサブ処理ユニットを再起動すること、の少なくとも１つを含むことができる。
【０００８】
本方法は、更に、少なくとも１つのサブ処理ユニットが、実質的に負荷がかけられず、所定のサブ処理ユニットからいくつかのまたはすべてのプロセッサ・タスクを受信するようなサブ処理ユニットの中でプロセッサ・タスクを割り当てることを含むことができる。更に、本方法は、いかなるプロセッサ・タスクもスタンバイ状態にするようにスケジューリングしない、１つ以上の負荷がかけられていないサブ処理ユニットに命令することを含んでもよい。
【０００９】
本発明の更なる実施の形態において、関連サブ処理ユニットは、各々のメイン処理ユニットに関連する各々のグループの、１つ以上のサブ処理ユニットのグループを含んでもよい。各々のサブ処理ユニットのそれぞれのグループおよび関連するメイン処理ユニットは、１セットのマルチプロセシング・ユニットの一部であってもよく、各々のサブ処理ユニットのグループおよびメイン処理ユニットは、１つ以上の他の各々のサブ処理ユニットおよび関連するメイン処理ユニットと共通データ・バスを共有する。
【００１０】
代わりにまたは加えて、サブ処理ユニットのそれぞれのグループの各々および関連するメイン処理ユニットは、独立のマルチプロセシング・ユニットであってもよく、各々のサブ処理ユニットのグループおよびメイン処理ユニットは、他のいかなるサブ処理ユニットのグループおよび関連するメイン処理ユニットと共通データ・バスを共有しない。更に、サブ処理ユニットのそれぞれのグループの各々および関連するメイン処理ユニットは、少なくとも分散マルチプロセシング・ユニットの一部であってもよく、メイン処理ユニットおよびサブ処理ユニットの少なくともいくつかは、相互に離れて配置される。
【００１１】
マルチプロセシング・ユニット、独立のマルチプロセシング・ユニットおよび分散マルチプロセシング・ユニットは、（ｉ）共通のまたは異なる回路基板上、（ｉｉ）共通のまたは異なるプロダクト、（ｉｉｉ）共通のまたは異なる位置、の少なくともいずれかに配置されてもよい。
【００１２】
この点に関しては、本方法は、所定のサブ処理ユニットと処理結果を共有するために、所定のサブ処理ユニットと１つ以上のサブ処理ユニットの間に必要な通信バンド幅および通信レイテンシを含む、通信要求を決定することを含むことができる。そして、本方法は、更に、所定のサブ処理ユニットのタスクの再割り当ては通信要求に基づくことを含むことができる。
【００１３】
本方法は、更に、プロセッサ・タスク割り当てられる可能性のある、所定のサブ処理ユニットと１つ以上の関連サブ処理ユニットと処理結果を共有するために１つ以上のサブ処理ユニットの間に存在する通信バンド幅および通信レイテンシを含む通信コストを決定することを含むことができる。このように、所定のサブ処理ユニットのタスクの再割り当てが、更に通信要求および通信コストとの比較に基づいていてもよい。
【００１４】
好ましくは、通信要求および通信コストは、（ｉ）共通の回路基板上の２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、（ｉｉ）異なる回路基板上の２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、（ｉｉｉ）共通のプロダクトの２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、（ｉｖ）異なるプロダクトの２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、（ｖ）共通の位置の異なるプロダクトの２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、（ｖｉ）各々が異なる位置の異なるプロダクトの２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、の少なくとも１つを含む。
【００１５】
本発明の別の実施の形態において、マルチプロセシング・ユニットおよび独立のマルチプロセシング・ユニットの少なくとも１つは、管理部と通信してもよい。管理部は、好ましくは、（ｉ）関連サブ処理ユニットのプロセッサ負荷を表すパフォーマンス情報、（ｉｉ）マルチプロセシング・ユニットおよび独立のマルチプロセシング・ユニットの中のどこに関連サブ処理ユニットが配置されるかを表す位置情報、（ｉｉｉ）処理結果を所定のサブ処理ユニットと共有するために、プロセッサ・タスクが再割り当てされることができる関連サブ処理ユニットの１つおよび１つ以上のサブ処理ユニットの間に存在する通信バンド幅を表す通信情報および通信レイテンシ、の少なくとも１つを含むテーブルを含む。
【００１６】
この点に関しては、本方法は好ましくは、関連サブ処理ユニットのうちどれが所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるべきかを決定するためにテーブルを使用することを含む。本方法は、好ましくは、プロセッサ負荷、位置、通信バンド幅または関連サブ処理ユニットの中の通信レイテンシのいかなる変化にも応答してテーブルを更新することも含む。
【００１７】
本発明の別の実施の形態において、本方法は、所定のサブ処理ユニットと関連するメイン処理ユニットから、少なくとも、（ｉ）所定のサブ処理ユニットのプロセッサ・タスクのプロセッサ負荷、（ｉｉ）所定のサブ処理ユニットの位置、（ｉｉｉ）所定のサブ処理ユニットの通信要求、のいずれかを含むクエリーを送信することを含むことができる。
【００１８】
その上、本方法は更に、関連サブ処理ユニットのうちどれが所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるべきかを決定するために、プロセッサ・タスクのプロセッサ負荷、位置および所定のサブ処理ユニットの通信要求の少なくとも１つを、テーブルの、パフォーマンス情報、位置情報および通信情報の少なくとも１つに適合させることを含むことができる。
【００１９】
本発明の１つ以上の更なる態様において、本発明の方法と装置は、関連サブ処理ユニットの使用に対するリース料金を得るために用いられてもよい。そして、マルチプロセシング・ユニット、独立のマルチプロセシング・ユニット、分散マルチプロセシング・ユニット、の少なくとも１つは、管理部と通信してもよく、管理部は、（ｉ）使用のためにリースされることができる関連サブ処理ユニットの少なくとも１つの処理能力を表す利用可能情報、およびこのような関連サブ処理ユニットのプロセッサ負荷を表すパフォーマンス情報、（ｉｉ）リースされることができる関連サブ処理ユニットの使用に対するそれぞれの料金を表すコスト情報、（ｉｉｉ）リースされることができる関連サブ処理ユニットがマルチプロセシング・ユニット、独立のマルチプロセシング・ユニットおよび分散マルチプロセシング・ユニットの中でどこに配置されるかを表す位置情報、（ｉｖ）処理結果を所定の処理ユニットと共有するための、プロセッサ・タスクが再割り当てされることができるリースのための関連サブ処理ユニットの１つと、１つ以上のサブ処理ユニットとの間に存在する通信バンド幅および通信レイテンシを表す通信情報、の少なくとも１つを含むテーブルを含む。
【００２０】
テーブルは、リースのための関連サブ処理ユニットの間の、利用可能情報、コスト情報、位置情報または通信情報のいかなる変化にも応じて更新されることができる。好ましくは、テーブルは、リースのための関連サブ処理ユニットのうちどれが所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるべきかを決定するために用いられる。
【００２１】
クエリーは、所定のサブ処理ユニットに関連するメイン処理ユニットから管理部へ送られることができ、クエリーは、（ｉ）所定のサブ処理ユニットのプロセッサ負荷、（ｉｉ）所定のサブ処理ユニットの位置、（ｉｉｉ）リースのための１つ以上の関連サブ処理ユニットから処理能力をリースするために受け入れられるコストを表すリース情報、（ｉｖ）通信要求、の少なくとも１つを含む。
【００２２】
好ましくは、リースのための関連サブ処理ユニットのうちどれが所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるべきかを決定するために、クエリーの、プロセッサ負荷、受け入れられるコスト、位置および通信要求の少なくとも１つは、テーブルの、利用可能情報、コスト情報、位置情報および通信情報の少なくとも１つと適合される。好ましくは、所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるときに、リースのための関連サブ処理ユニットは、その使用の料金を徴収することができる料金徴収部の１つ以上と関連する。
【００２３】
あるいは、最低料金を有するリースのための１つ以上の関連サブ処理ユニットが所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされることができるように、クエリーのプロセッサ負荷、受け入れられるコスト、位置および通信要求は、テーブルの利用可能情報、コスト情報、位置情報および通信情報と適合させられることができる。所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるときに、リースのための関連サブ処理ユニットは、その使用の料金を徴収することができる料金徴収部の１つ以上と関連していてもよい。
【００２４】
本発明の更なる１つ以上の態様において、プロセッサからプロセッサへの通信および転送は、管理部なしで達成されることができる。そして、所定のサブ処理ユニットに関連するメイン処理ユニットからの応答要求は、１つ以上の関連サブ処理ユニットから発信されることができる、通信情報は、１つ以上の通信要求に集積させられることができ、通信情報は、それらがメイン処理ユニットから１つ以上の関連サブ処理ユニットへ移動するとき、それぞれの通信要求によって発信されるいかなる通信インターフェースとも関連する通信レイテンシおよび通信バンド幅の少なくとも１つを表す、そして、処理結果を、集積された通信情報に基づいてプロセッサ・タスクが再割り当てされることができる所定のサブ処理ユニットおよび１つ以上の関連サブ処理ユニットと共有するために、少なくとも１つ以上のサブ処理ユニットの間に存在する通信コストの見積り計算が計算される。
【００２５】
好ましくは、１つ以上の応答要求は、コミュニケーション・ネットワーク上の伝送ができるネットワーク・データ・パケットの形態である。コミュニケーション・ネットワークは、インターネットおよび通信の他のいかなるネットワークの少なくとも１つであってもよい。
【００２６】
好ましくは、１つ以上の応答は、メイン処理ユニットで、１つ以上の関連サブ処理ユニットから受信する、そして、好ましくは、所定のサブ処理ユニットのプロセッサ・タスクは、応答要求に応答する１つ以上の関連サブ処理ユニットに再割り当てされる。
【００２７】
また、好ましくは、１つ以上の応答は、コミュニケーション・ネットワーク上の伝送ができるネットワーク・データ・パケットの形態である。
【００２８】
好ましくは、所定のサブ処理ユニットからの応答要求に応答する１つ以上の関連サブ処理ユニットへのアップリンク・データ・パスの通信コストが計算される。好ましくは、このような計算は、（ｉ）それがメイン処理ユニットからそれぞれの関連サブ処理ユニットの１つへ移動するとき、各々のアップリンク・データ・パスのための応答要求によって発信されるそれぞれの通信インターフェイスと関連する通信レイテンシであって、それによって、各々のアップリンク・データ・パスの集計されたアップリンク通信レイテンシを得る、通信レイテンシを加算すること、（ｉｉ）各々のアップリンク・データ・パスのための最短通信バンド幅を得るために、それがメイン処理ユニットからそれぞれの関連サブ処理ユニットの１つへ移動するとき、各々のアップリンク・データ・パスのための応答要求によって発信されるそれぞれの通信インターフェイスと関連する通信バンド幅を、各々のアップリンク・データ・パスのために比較すること、の少なくとも１つを含む。
【００２９】
好ましくは、所定のサブ処理ユニットのプロセッサ・タスクは、通信要求の比較および集計通信レイテンシと各々のアップリンク・データ・パスのための最短通信バンド幅との少なくとも１つに基づいて、通信要求に応答する１つ以上の関連サブ処理ユニットに割り当てられる。
【００３０】
また、好ましくは、付加的通信情報は、１つ以上の応答に集積させられる。付加的通信情報は、それらが１つ以上の関連サブ処理ユニットからメイン処理ユニットへ移動するとき、それぞれの応答によって発信されるいかなる通信インターフェイスとも関連する、通信レイテンシおよび通信バンド幅の少なくとも１つを表す、そして、好ましくは、通信コスト計算は、集積された通信情報および集積された付加的通信情報に基づいて計算される。
【００３１】
各々の応答は、それぞれの集積された付加的通信情報とともに集積された通信情報の両方を含んでも良い。集積された通信情報および集積された付加的通信情報は、１つ以上の通信要求に発信されるメイン処理ユニットに利用可能である。
【００３２】
また、所定のサブ処理ユニットと応答要求に応答する１つ以上の関連サブ処理ユニットとの間のアップリンク・データ・パスおよびダウンリンク・データ・パスの通信コストは計算されることができる。好ましくは、このような計算は、（ｉ）それがメイン処理ユニットからそれぞれの関連サブ処理ユニットの１つへ移動するとき、各々のアップリンク・データ・パスのための応答要求によって発信されるそれぞれの通信インターフェイスと関連する通信レイテンシであって、それによって、各々のアップリンク・データ・パスの集計されたアップリンク通信レイテンシを得る、通信レイテンシを加算すること、（ｉｉ）各々のアップリンク・データ・パスのための最短通信バンド幅を得るために、メイン処理ユニットからそれぞれの関連サブ処理ユニットの１つへ移動するとき、各々のアップリンク・データ・パスのための応答要求によって発信されるそれぞれの通信インターフェイスと関連する通信バンド幅を、各々のアップリンク・データ・パスのために、比較すること、（ｉｉｉ）それがそれぞれの関連サブ処理ユニットの１つからメイン処理ユニットへ移動するとき、各々のダウンリンク・データ・パスのための応答によって発信されるそれぞれの通信インターフェイスと関連する通信レイテンシであって、それによって、各々のダウンリンク・データ・パスの集計されたダウンリンク通信レイテンシを得る、通信レイテンシを加算すること、（ｉｖ）各々のダウンリンク・データ・パスのための最短通信バンド幅を得るために、それがそれぞれの関連サブ処理ユニットの１つからメイン処理ユニットへ移動するとき、各々のダウンリンク・データ・パスのための応答によって発信されるそれぞれの通信インターフェイスと関連する通信バンド幅を、各々のダウンリンク・データ・パスのために、比較すること、の少なくとも１つを含む。
【００３３】
所定のサブ処理ユニットのプロセッサ・タスクは、通信要求と、各々のアップリンク・データ・パスのために集積されたアップリンク・データ通信レイテンシ、各々のダウンリンク・データ・パスのために集積されたダウンリンク・データ通信レイテンシ、各々のアップリンク・データ・パスのための最短通信バンド幅、各々のダウンリンク・データ・パスのための最短通信バンド幅、の少なくとも１つとの比較に基づいて、応答要求に応答する１つ以上の関連サブ処理ユニットに割り当てられることができる。
【００３４】
１つ以上の応答要求は、処理結果を所定のサブ処理ユニットと共有するために、メイン処理ユニットから１つ以上のサブ処理ユニットへ発信されることができる。それぞれの通信要求によって発信されるいかなる通信インターフェースにも関連する、通信レイテンシと通信バンド幅の少なくとも１つを表す付加的通信情報は、好ましくは、処理結果を所定のサブ処理ユニットと共有するために、それらがメイン処理ユニットから１つ以上のサブ処理ユニットへ移動するときに集積される。通信コストは、集積された通信情報および集積された付加的通信情報のいかなる違いにも基づいて計算されることができる。
【００３５】
好ましくは、処理結果を所定のサブ処理ユニットと共有するため、所定のサブ処理ユニットと、応答要求に応答する１つ以上の関連サブ処理ユニットの間、および所定のサブ処理ユニットおよび１つ以上のサブ処理ユニットの間のアップリンク・データ・パスおよびダウンリンク・データ・パスの通信コストは計算される。好ましくは、このような計算は、（ｉ）それがメイン処理ユニットから、それぞれの関連サブ処理ユニットの１つへ、および／または所定のサブ処理ユニットのプロセッサ・タスクの結果を受信するために１つ以上のサブ処理ユニットへ移動するとき、各々のアップリンク・データ・パスのための応答要求によって発信されるそれぞれの通信インターフェイスと関連する通信レイテンシであって、それによって、各々のアップリンク・データ・パスの集計されたアップリンク通信レイテンシを得る、通信レイテンシを加算すること、（ｉｉ）各々のアップリンク・データ・パスのための最短通信バンド幅を得るために、メイン処理ユニットからそれぞれの関連サブ処理ユニットの１つへ、および／または所定のサブ処理ユニットのプロセッサ・タスクの結果を受信するために１つ以上のサブ処理ユニットへ移動するとき、各々のアップリンク・データ・パスのための応答要求によって発信されるそれぞれの通信インターフェイスと関連する通信バンド幅を、各々のアップリンク・データ・パスのために、比較すること、（ｉｉｉ）それがそれぞれの関連サブ処理ユニットの１つからメイン処理ユニットへ、および／または所定のサブ処理ユニットのプロセッサ・タスクの結果を受信するために１つ以上のサブ処理ユニットへ移動するとき、各々のダウンリンク・データ・パスのための応答によって発信されるそれぞれの通信インターフェイスと関連する通信レイテンシであって、それによって、各々のダウンリンク・データ・パスの集計されたダウンリンク通信レイテンシを得る、通信レイテンシを加算すること、（ｉｖ）各々のダウンリンク・データ・パスのための最短通信バンド幅を得るために、それがそれぞれの関連サブ処理ユニットの１つからメイン処理ユニットへ、および／または所定のサブ処理ユニットのプロセッサ・タスクの結果を受信するために１つ以上のサブ処理ユニットへ移動するとき、各々のダウンリンク・データ・パスのための応答によって発信されるそれぞれの通信インターフェイスと関連する通信バンド幅を、各々のダウンリンク・データ・パスのために、比較すること、の少なくとも１つを含む。
【００３６】
所定のサブ処理ユニットのプロセッサ・タスクは、通信要求と、各々のアップリンク・データ・パスのために集積されたアップリンク・データ通信レイテンシ、各々のダウンリンク・データ・パスのために集積されたダウンリンク・データ通信レイテンシ、各々のアップリンク・データ・パスのための最短通信バンド幅、各々のダウンリンク・データ・パスのための最短通信バンド幅、の少なくとも１つとの比較に基づいて、応答要求に応答する１つ以上の関連サブ処理ユニットに割り当てられることができる。
【００３７】
予約要求は、所定のサブ処理ユニットと関連するメイン処理ユニットから所定のサブ処理ユニットおよび所定のサブ処理ユニットのプロセッサ・タスクが再割り当てされる１つ以上の関連サブ処理ユニットの間の通信に関連する１つ以上のアービタへ発信されてもよい。そこで予約要求は、１つ以上のバス・アービタに、（ｉ）再割り当てされたプロセッサ・タスクを実行すること、（ｉｉ）このような結果を受信するために１つ以上の他のサブ処理ユニットにプロセッサ・タスクの結果を送信すること、の少なくとも１つのために通信バンド幅を予約させる。その後、所定のサブ処理ユニットに関連するメイン処理ユニットから１つ以上のバス・アービタへ、予約クリア要求が発信されることができ、予約クリア要求は、１つ以上のバス・アービタに、通信バンド幅の予約をクリアさせる。
【００３８】
応答は、好ましくは、集積された情報、および応答を発信している関連サブ処理ユニットのそれぞれのプロセッサ負荷を表すパフォーマンス情報の少なくとも１つを含む。このように、所定のサブ処理ユニットのプロセッサ・タスクのプロセッサ負荷、応答を発信する関連サブ処理ユニットのためのそれぞれのプロセッサ負荷、通信要求、集積された情報、との比較に基づいて、所定のサブ処理ユニットのプロセッサ・タスクの再割り当てのために、１つ以上の関連サブ処理ユニットが選択されることができる。
【００３９】
１つ以上の本発明の更なる態様におけるある装置は、各々がプロセッサ・タスクを実行するように操作可能な、複数のサブ処理ユニット、メイン処理ユニット、を含む。メイン処理ユニットは、（ｉ）それぞれのサブ処理ユニットによって実行されるように割り当てられる、プロセッサ・タスクおよび関連するプロセッサ負荷をモニタすること、（ｉｉ）処理エラーがサブ処理ユニットの所定の１つに起こったかどうかを検出すること、（ｉｉｉ）所定のサブ処理ユニットのプロセッサ・タスクのプロセッサ負荷、および関連サブ処理ユニットのプロセッサ負荷に基づいて所定のサブ処理ユニットのプロセッサ・タスクのすべてを、メイン処理ユニットに関連する他のサブ処理ユニットを含む１つ以上の関連サブ処理ユニットに割り当てること、を操作可能である。
【００４０】
メイン処理ユニットは、更に、（ｉｖ）所定のサブ処理ユニットに、シャットダウンコマンドを発信すること、およびリブートコマンドを発信すること、の少なくとも１つを操作可能でもよい。
【００４１】
メイン処理ユニットは、離れて配置される形態でもよく、または１つ以上のサブ処理ユニットの一部に配置されてもよい。更に、１つ以上のサブ処理ユニットは、相互に離れて配置されることができる。加えて、サブ処理ユニットは、実質的に異種のコンピュータ・アーキテクチャまたは同種のコンピュータ・アーキテクチャを使用することができる。
【００４２】
少なくとも１つのサブ処理ユニットは、実質的に負荷がなくされ、所定のサブ処理ユニットからいくつかのまたはすべてのプロセッサ・タスクを受信するように利用可能であるように、メイン処理ユニットは、好ましくは、更にサブ処理ユニットの間のプロセッサ・タスクを割り当てるように操作可能である。加えて、メイン処理ユニットは、更に、（低い電力消費状態であってもよい）スタンバイ状態へいかなるプロセッサ・タスクをも実行するようスケジューリングされていない１つ以上の負荷されていないサブ処理ユニットに命令するように操作可能でもよい。
【００４３】
例えば、サブ処理ユニットは、（ｉ）電力供給割込回路、（ｉｉ）各々がパワーオフ・コマンドに応答して所定のサブ処理ユニットをスタンバイ状態とするように操作可能なクロック割込回路、の少なくとも１つを含むことができる。サブ処理ユニットの各々は、好ましくは、電力供給および電力供給割込回路を含む。電力供給割込回路は、好ましくは、所定のサブ処理ユニットをスタンバイ状態とするために、パワーオフ・コマンドに応答して、電力供給をシャットダウンするように操作可能である。
【００４４】
また、本装置は、好ましくは、各々のグループはそれぞれのメイン処理ユニットと関連する、１つ以上のサブ処理ユニットのそれぞれのグループを含む。関連サブ処理ユニットは、サブ処理ユニットのそれぞれのグループの１つ以上を含むことができる。
【００４５】
サブ処理ユニットのそれぞれのグループおよび関連するメイン処理ユニットの各々は、１セットのマルチプロセシング・ユニットの一部であってもよい。サブ処理ユニットのそれぞれのグループおよびメイン処理ユニットは、共通バスを、１つ以上の他のサブ処理ユニットのそれぞれのグループおよび関連するメイン処理ユニットと共有する。加えてまたは代わって、サブ処理ユニットのそれぞれのグループおよび関連するメイン処理ユニットの各々は、独立のマルチプロセシング・ユニットであってもよく、サブ処理ユニットのそれぞれのグループおよびメイン処理ユニットは、共通バスを、他のいかなるサブ処理ユニットのグループおよび関連するメイン処理ユニットとも共有しない。更に、サブ処理ユニットのそれぞれのグループおよび関連するメイン処理ユニットの各々は、少なくとも分散マルチプロセシング・ユニットの一部であってもよく、メイン処理ユニットおよびサブ処理ユニットの少なくともいくつかは、相互に離れて配置される。
【００４６】
マルチプロセシング・ユニット、独立のマルチプロセシング・ユニットおよび分散マルチプロセシング・ユニットは、（ｉ）共通のまたは異なる回路基板上、（ｉｉ）共通のまたは異なるプロダクト、（ｉｉｉ）共通のまたは異なる位置、の少なくとも１つに配置されてもよい。
【００４７】
メイン処理ユニットは、更に、処理結果を所定のサブ処理ユニットと共有するために、所定のサブ処理ユニットと１つ以上のサブ処理ユニットとの間で必要とされる、通信バンド幅および通信レイテンシを含む通信要求を決定するように操作可能である。メイン処理ユニットは、更に、所定のサブ処理ユニットのタスクの再割り当てが通信要求に基づくように操作可能でもよい。
【００４８】
また更に、メイン処理ユニットは、通信バンド幅および処理結果を所定のサブ処理ユニットと共有するための１つ以上のサブ処理ユニットおよびプロセッサ・タスクが再割り当てされることができる１つ以上の関連サブ処理ユニットの間に存在する通信レイテンシを含む、通信コストを決定するように操作可能でもよい。また、メイン処理ユニットは、所定のサブ処理ユニットのタスクの再割り当てが通信要求および通信コストの比較に基づくように操作可能でもよい。
【００４９】
本発明の方法と同様に、通信要求および通信コストは、（ｉ）共通の回路基板上の２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、（ｉｉ）異なる回路基板上の２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、（ｉｉｉ）共通のプロダクトの２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、（ｉｖ）異なるプロダクトの２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、（ｖ）共通の位置の異なるプロダクトの２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、（ｖｉ）異なるプロダクト（異なる位置の各々）の２つのサブ処理ユニットの間の１つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、の少なくとも１つを含むことができる。
【００５０】
更に、２つのサブ処理ユニットの間の１つ以上データ通信インターフェースは、（ｉ）イントラサブ処理ユニット入出力バスインターフェース、（ｉｉ）インターサブ処理ユニット入出力バスインターフェース、（ｉｉｉ）ファブリック交換相互接続、（ｉｖ）ネットワーク・インターフェース・カード、（ｖ）データ・ネットワーク、の少なくとも１つを含む。
【００５１】
また、本装置は、好ましくは、マルチプロセシング・ユニットおよび独立のマルチプロセシング・ユニットの少なくとも１つと通信する管理部を含む。管理部は、好ましくは、（ｉ）関連サブ処理ユニットのためのプロセッサ負荷を表すパフォーマンス情報、（ｉｉ）マルチプロセシング・ユニットおよび独立のマルチプロセシング・ユニットの中に配置された関連サブ処理ユニットがどこにあるかを表す位置情報、（ｉｉｉ）処理結果を所定のサブ処理ユニットと共有するために、プロセッサ・タスクが１つ以上のサブ処理ユニットを再割り当てされることができる１つ以上の関連サブ処理ユニットの間に存在する、通信バンド幅および通信レイテンシを表す通信情報、の少なくとも１つを有するテーブルを含む。
【００５２】
管理部は、好ましくは、関連サブ処理ユニットの中の、プロセッサ・タスクのプロセッサ負荷、位置、通信バンド幅または通信レイテンシ、のいかなる変化にも応答して、テーブルを更新するように操作可能である。また、管理部は、好ましくは、関連サブ処理ユニットのうちどれが所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるべきかを決定するために、テーブルを使用するように操作可能である。
【００５３】
所定のサブ処理ユニットに関連するメイン処理ユニットは、好ましくは、管理部にクエリーを送るように操作可能であり、クエリーは、（ｉ）所定のサブ処理ユニットのプロセッサ・タスクのプロセッサ負荷、（ｉｉ）所定のサブ処理ユニットの位置、（ｉｉｉ）所定のサブ処理ユニットの通信要求、の少なくとも１つを含む。
【００５４】
また、管理部は、好ましくは、関連サブ処理ユニットのうちどれがプロセッサで再割り当てされるべきかを決定するために、所定のサブ処理ユニットの、プロセッサ・タスクのプロセッサ負荷、位置、通信要求の少なくとも１つを、テーブルの、パフォーマンス情報、位置情報、および通信情報の少なくとも１つに適合させるように操作可能である。
【００５５】
他の態様、特徴および本発明の効果は、添付の図面とともに本願明細書における説明から、当業者にとって明らかである。
【００５６】
説明のため、現在適した図面に示され、理解される形態がある。しかしながら、本発明は、示される簡潔な装置および機器に限られない。
【発明を実施するための最良の形態】
【００５７】
図面に関して、数字が要素のように表すように、本発明におけるマルチプロセシング・システム１００が図１に表される。マルチプロセシング・システム１００は、バス１０８の上の共有メモリ１０６（例えばＤＲＡＭ）に連結する複数のプロセッサ１０２（いかなる数も、使われることができる）を含む。なお、共有ＤＲＡＭメモリ１０６は要求されない（そして、このように、点線に示される）。実際に、１つ以上の処理ユニット１０２には、それ自身のメモリ（図示せず）を使用でき、共有メモリ１０６を必要としない。
【００５８】
プロセッサ１０２の１つは、好ましくは、メイン処理ユニット（例えば処理ユニット１０２Ａ）である。他の処理ユニット１０２は、好ましくは、複数のサブ処理ユニット（ＳＰＵｓ）（例えば処理ユニット１０２Ｂ、１０２Ｃ、１０２Ｄ、その他）である。処理ユニット１０２は、既知のコンピュータ・アーキテクチャのいずれかを使用して行うことができる。処理ユニット１０２の全てが、同じアーキテクチャを使用して提供される必要があるというわけではない、実際に、それらは異種または同種の構成であってもよい。演算において、サブ処理ユニット１０２Ｂ−Ｄがこれらのデータおよびアプリケーションの処理を並行しておよび独立に実行するように、メイン処理ユニット１０２Ａは、サブ処理ユニット１０２Ｂ−Ｄによって、データおよびアプリケーションの処理をスケジューリングし、編成する。
【００５９】
なお、例えば、同じチップ、同じパッケージ、同じ回路基板、同じプロダクトにおいて、メイン処理ユニット１０２Ａが、サブ処理ユニット１０２Ｂ−Ｄに関して、局所的に配置されていてもよい。あるいは、例えば異なるプロダクトで、メイン処理ユニット１０２Ａは、サブ処理ユニット１０２Ｂ−Ｄから離れて配置されることができる。そして、それはバス、コミュニケーション・ネットワーク（例えばインターネット）等を通じて連結されることができる。同様に、サブ処理ユニット１０２Ｂ−Ｄは、相互に局所的にまたは離れて配置されることができる。
【００６０】
ときには、サブ処理ユニット１０２Ｂ−Ｄの１つ以上は、ハードプロセッサ・エラー（例えばオペレーティング・システム・エラーまたはカーネル・エラーを含まない修復可能なエラー）を示す可能性がある。このために、メイン処理ユニット１０２Ａは、好ましくは、最初からサブ処理ユニット１０２Ｂ−Ｄによって（エラーの前に）実行されたプロセッサ・タスクを再実行する必要なくプロセッサ・タスクを継続実行することを可能にする他の管理機能を実行するように操作可能である。好ましくは、メイン処理ユニット１０２Ａの管理の機能は、リアルタイム（および／またはマルチメディア）処理対象が、サブ処理ユニット１０２Ｂ−Ｄの１つ以上における修復可能なエラーの場合にも適合されることを確実とするため操作する。
【００６１】
これらの更なる管理の機能は、それぞれのサブ処理ユニット１０２Ｂ−Ｄによって実行されるように割り当てられるプロセッサ・タスク（および／またはそれらのタスクに関連するプロセッサ負荷）をモニタすることを含む。また、メイン処理ユニット１０２Ａは、処理エラーがサブ処理ユニットの所定の１つに起こったかどうかを検出することができ、１つ以上の関連サブ処理ユニットに、所定のサブ処理ユニットのプロセッサ・タスクの全てを再割り当てすることができる。この再割り当ては、好ましくは、所定のサブ処理ユニットのプロセッサ・タスクのプロセッサ負荷、および関連サブ処理ユニットのプロセッサ負荷に基づいて行われる。これらのおよび他の本発明の態様は、この説明において更に詳細に後述する。
【００６２】
本発明の再割り当て特徴に関する更なる詳細を議論する前に、好ましいコンピュータ・アーキテクチャの説明をこれから行う。このコンピュータ・アーキテクチャにおいて、マルチプロセシング・コンピュータシステムの全てのプロセッサは、共通のコンピューティング・モジュール（またはセル）から構成される。この共通のコンピューティング・モジュールは、一貫した構造を備えており、好ましくは、同じ命令セット・アーキテクチャを使用する。マルチプロセシング・コンピュータシステムは、１つ以上のクライアント、サーバ、ＰＣ、モバイル・コンピュータ、ゲーム機、ＰＤＡ、セットトップボックス、電気器具、デジタル・テレビおよびコンピュータプロセッサを使用する他の機器の中で形成されることができる。
【００６３】
また、複数のコンピュータシステムは、必要ならばネットワークのメンバーであってもよい。一貫したモジュールの構造は、マルチプロセシング・コンピュータシステムによってアプリケーションおよびデータの効果的で、高速処理を可能し、ネットワークが使用される場合は、ネットワークの上のアプリケーションおよびデータの急速な伝送を可能にする。また、この構造は、さまざまなサイズおよび処理能力のネットワークのメンバーの構築、およびこれらのメンバーによる処理のためのアプリケーションの準備をシンプルにする。
【００６４】
基本的な処理モジュールは、プロセッサ要素（ＰＥ）である。この点に関して、基本的な処理モジュールまたはプロセッサ要素（ＰＥ）２００のブロック図である図２を参照する。この図に示されるように、プロセッサ要素２００は、Ｉ／Ｏインターフェース２０２、処理ユニット（ＰＵ）２０４、ダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）２０６、そして、複数のサブ処理ユニット２０８すなわちサブ処理ユニット２０８Ａ、サブ処理ユニット２０８Ｂ、サブ処理ユニット２０８Ｃ、およびサブ処理ユニット２０８Ｄを含む。ローカル（または内部）プロセッサ要素のバス２１２は、処理ユニット２０４、サブ処理ユニット２０８、ＤＭＡＣ２０６およびメモリインターフェース２１０の中のデータおよびアプリケーションを送信する。ローカルプロセッサ要素のバス２１２は、例えば、従来のアーキテクチャを有することができ、またはパケットスイッチ・ネットワークとして提供されることができる。パケットスイッチ・ネットワークとしての実行は、より多くのハードウェアを必要とする一方、利用できるバンド幅を増やす。
【００６５】
プロセッサ要素２００は、デジタル論理を実行するさまざまな方法を使用して構成されることができる。しかしながら、プロセッサ要素２００は、好ましくは、シリコン基板上の相補型金属酸化物半導体（ＣＭＯＳ）を使用する単一の集積回路として構成される。基板のための別の材料は、ガリウム、ヒ化ガリウム・アルミニウム、および多様なドーパントを使用する他のいわゆるＩＩＩ−Ｂ合成物を含む。また、プロセッサ要素２００は、超電導材料、例えば単一磁束量子（ＲＳＦＱ）論理を使用して行うこともできる。
【００６６】
プロセッサ要素２００は、高バンド幅メモリ接続２１６を介して、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）２１４と密接に関連する。ＤＲＡＭ２１４は、プロセッサ要素２００のためのメインメモリとして機能する。ＤＲＡＭ２１４は、ダイナミック・ランダム・アクセス・メモリであるが、好ましくは、ＤＲＡＭ２１４は、他の手段、例えばスタティックＲＡＭ（ＳＲＡＭ）、磁気ランダム・アクセス・メモリ（ＭＲＡＭ）、光メモリ、ホログラフィック・メモリ、その他を使用して提供されることができる。ＤＭＡＣ２０６およびメモリインターフェース２１０は、ＤＲＡＭ２１４およびサブ処理ユニット２０８およびプロセッサ要素２００の処理ユニット２０４の間のデータ転送を容易にする。なお、ＤＭＡＣ２０６および／またはメモリインターフェース２１０は、サブ処理ユニット２０８および処理ユニット２０４について、一体的にまたは離れて配置されてもよい。実際に、示されたような別々の構成の代わりに、ＤＭＡＣ２０６の機能および／またはメモリインターフェース２１０の機能は、１つ以上（好ましくは、全て）のサブ処理ユニット２０８および処理ユニット２０４の一部を構成してもよい。このように、ＤＭＡＣ２０６は点線に示される。
【００６７】
例えば、処理ユニット２０４は、データおよびアプリケーションの独立の処理が可能な標準のプロセッサであってもよい。演算において、処理ユニット２０４は、サブ処理ユニットによってスケジューリングし、データおよびアプリケーションの処理を編成する。サブ処理ユニットは、好ましくは、ＳＩＭＤ（Single Instruction/Multiple Data）プロセッサである。処理ユニット２０４の制御の下、サブ処理ユニットは、並行してまたは独立に、データおよびアプリケーションの処理を実行する。ＤＭＡＣ２０６は、処理ユニット２０４およびサブ処理ユニット２０８による、共有ＤＲＡＭ２１４に保存されるデータおよびアプリケーションへのアクセスを制御する。なお、処理ユニット２０４は、サブ処理ユニット２０８によってデータおよびアプリケーションの処理をスケジューリングし編成するメイン処理ユニットの役割を引き受けるサブ処理ユニット２０８の１つによって提供されてもよい。
【００６８】
このモジュールの構造において、特定のコンピュータシステムによって使用されるプロセッサ要素２００の数は、そのシステムに必要とされる処理能力に基づく。例えば、サーバは、４つのプロセッサ要素２００を使用することができ、ワークステーションは、２つのプロセッサ要素２００を使用することができ、そして、ＰＤＡは１つのプロセッサ要素２００を使用することができる。特定のソフトウェアセルを処理することに割り当てられるプロセッサ要素２００のサブ処理ユニットの数は、セル中のプログラムおよびデータの複雑さおよび大きさに依存する。
【００６９】
図３は、サブ処理ユニット２０８の好ましい構造および機能を示す。サブ処理ユニット２０８は、ローカルメモリ２５０、レジスタ２５２、１つ以上の浮動小数点ユニット２５４、および１つ以上の整数ユニット２５６を含む。しかしながら、また必要な処理能力によって、多いまたは少ない数の浮動小数点ユニット２５４および整数ユニット２５６が使用されることができる。好ましい実施の形態において、ローカルメモリ２５０は２５６キロバイトのメモリを有し、レジスタ２５２の容量は１２８×１２８ビットである。浮動小数点ユニット２５４は、好ましくは、１秒につき３２０億の浮動小数点演算（３２ギガフロップス）の速度で演算する、そして、整数ユニット２５６は、１秒につき３２０億の動作（３２のギガオプス）の速度で演算する。
【００７０】
ローカルメモリ２５０は、キャッシュメモリであってもよく、なくてもよい。ローカルメモリ２５０は、好ましくは、スタティックＲＡＭ（ＳＲＡＭ）として、構成される。処理ユニット２０４は、処理ユニット２０４によって開始されたダイレクト・メモリ・アクセスのためのキャッシュ整合性サポートを要求してもよい。しかしながら、キャッシュ整合性サポートは、処理ユニット２０４によって開始されたダイレクト・メモリ・アクセスのため、または外部装置からのおよび外部装置へのアクセスのためには要求されない。
【００７１】
サブ処理ユニット２０８は、アプリケーションおよびデータをサブ処理ユニット２０８へおよびサブ処理ユニット２０８から発信するためのバス・インターフェース（Ｉ／Ｆ）２５８を更に含む。好ましい実施の形態において、バスＩ／Ｆ２５８は、示されるようにサブ処理ユニット２０８内に一体的に配置されることができ、または（図２に示されるように）外部に配置させることができることを表すため、点線で示されるＤＭＡＣ２０６に連結する。一対のバス２６８Ａ、２６８Ｂは、バスＩ／Ｆ２５８およびローカルメモリ２５０の間で、ＤＭＡＣ２０６を相互接続する。バス２６８Ａ、２６８Ｂは、好ましくは、２５６ビット長である。
【００７２】
サブ処理ユニット２０８は、内部バス２６０、２６２および２６４を更に含む。好ましい実施の形態において、バス２６０は２５６ビットの幅を有し、ローカルメモリ２５０およびレジスタ２５２の間で通信を提供する。それぞれ、バス２６２および２６４は、レジスタ２５２と浮動小数点ユニット２５４との間、およびレジスタ２５２と整数ユニット２５６との間で、それぞれ通信を提供する。好ましい実施の形態において、レジスタ２５２から浮動小数点または整数ユニットへのバス２６４および２６２の幅は３８４ビットであり、浮動小数点ユニット２５４または整数ユニット２５６からレジスタ２５２へのバス２６４および２６２の幅は１２８ビットである。これらのユニットからレジスタ２５２までよりも大きな、レジスタ２５２から浮動小数点ユニット２５４または整数ユニット２５６へのこれらのバスの幅は、処理の間、レジスタ２５２からより大きいデータフローを収容する。最高３つのワードが、各々の算出のために必要とされる。しかしながら、各々の算出の結果は、通常１つのワードだけである。
【００７３】
これから参照する図４は、１つ以上の本発明の態様において、図１のマルチプロセシング・システム１００または図２のマルチプロセシング・システム２００によって実行されることができる処理ステップを示すフローチャートである。アクション３００において、メイン処理ユニット２０４は、それぞれの関連サブ処理ユニット２０８によって送られるプロセッサ・タスクの処理負荷に関する情報を受信する。例えば、各々のサブ処理ユニット２０８は、時々その処理負荷および／またはプロセッサ・タスクをメイン処理ユニット２０４に報告するように操作可能であってもよく、または、メイン処理ユニット２０４がこのような情報の要求を発信してもよい。いずれにせよ、好ましくは、メイン処理ユニット２０４は、各々の関連サブ処理ユニット２０８のためのプロセッサ・タスクの処理負荷を決定するために必要な情報を受信する。
【００７４】
例えば、図２に関して、サブ処理ユニット２０８Ａは、プロセッサ・タスクＡおよびプロセッサ・タスクＢを実行するようにスケジューリングされることができ、プロセッサ・タスクＡは、０．１の関連するプロセッサ負荷を有し、プロセッサ・タスクＢは、０．３の関連するプロセッサ負荷を有する。このように、サブ処理ユニット２０８Ａは、０．６のために休止していてもよい。サブ処理ユニット２０８Ｂは、０．０５、０．０１、０．１および０．３のそれぞれの関連する負荷について、プロセッサ・タスクＣ、プロセッサ・タスクＤ、プロセッサ・タスクＥおよびプロセッサ・タスクＦを実行するようにスケジューリングされることができる。このように、サブ処理ユニット２０８Ｂは、０．５４のために休止していてもよい。サブ処理ユニット２０８Ｃは、０．７および０．３のそれぞれの関連するプロセッサ負荷について、プロセッサ・タスクＧおよびプロセッサ・タスクＨを実行するようにスケジューリングされることができる。このように、サブ処理ユニット２０８Ｃは、休止していない。最終的に、サブ処理ユニット２０８Ｄは、０．１５、０．０５および０．７のそれぞれの関連するプロセッサ負荷について、プロセッサ・タスクＩ、プロセッサ・タスクＪおよびプロセッサ・タスクＫを実行するようにスケジューリングされる。このように、サブ処理ユニット２０８Ｄは、０．１のために休止していてもよい。
【００７５】
したがって、これらのプロセッサ・タスクおよび／またはプロセッサ負荷は、好ましくは、メイン処理ユニット２０４によって、その後の使用のためソフトウェアでテーブルにまとめられる。
【００７６】
アクション３０２で、困難で、修復可能なエラーのような、サブ処理ユニット２０８Ａ−Ｄの１つ（例えばサブ処理ユニット２０８Ａ）は、エラーを示すことができる。エラーは、好ましくは、検出されるかまたはメイン処理ユニット２０４に報告される。例えば、エラーの検出は、サブ処理ユニット２０８Ａによるソフトウェアを使用するメイン処理ユニット２０４への報告によって達成されることができる。あるいは、エラーは、既知のハードウェア割り込み技術のいずれかを使用して検出されることができる。
【００７７】
アクション３０４において、メイン処理ユニット２０４は、好ましくは、影響を受けるサブ処理ユニット、すなわち、サブ処理ユニット２０８Ａのために、パフォーマンス要求が何であるかについて決定する。これは、好ましくは、アクション３００において得られたプロセッサ・タスクおよび／またはプロセッサ負荷に関する表の情報にアクセスすることによって達成される。（あるいは、アクション３００が使用されない場合、プロセッサ・タスクおよび／またはプロセッサ負荷に関する情報は、エラーが発生した後に得られることができる）。ここまでで説明される図の例において、サブ処理ユニット２０８Ａへのプロセッサ負荷は、タスクＡ＋タスクＢ＝０．４である。
【００７８】
アクション３０６において、メイン処理ユニット２０４は、好ましくは、サブ処理ユニット２０８Ｂ−Ｄの処理能力を決定する。また、これは、好ましくは、プロセッサ・タスクおよび／またはアクション３００において得られたプロセッサ負荷に関連する表の情報にアクセスすることによって達成される。ここまで説明した実施の形態において、サブ処理ユニット２０８Ｂの処理能力は０．５４であり、サブ処理ユニットの２０８Ｃの処理能力は０．０であり、サブ処理ユニット２０８Ｄの処理能力は０．１である。
【００７９】
参照する図５は、本発明のマルチプロセシング・システムの更なる処理ステップを示すフローチャートであり、処理フローは、好ましくは、アクション３０８へ進む。そこで、関連サブ処理ユニット２０８Ｂ−Ｄの１つ以上が、サブ処理ユニット２０８Ａのニーズに適合する処理能力を有するかについての判定がなされる。判定の結果が否定的な場合、処理フローは、好ましくは、アクション３１０へ進み、通常のエラー取り扱い手順が実行される。例えば、サブ処理ユニット２０８Ａは、リブート・プロセスに置かれてもよく、そして、処理タスクは再実行されることができる。
【００８０】
しかしながら、アクション３０８の判定の結果が肯定的な場合は、処理フローは、好ましくは、アクション３１２へ進む。そこで、メイン処理ユニット２０４は、好ましくは、サブ処理ユニット２０８Ａからプロセッサ・タスクを扱う処理能力を有する関連サブ処理ユニット２０８Ｂ−Ｄの１つ以上に、影響を受けたサブ処理ユニット、すなわちサブ処理ユニット２０８Ａのプロセッサ・タスクを再割り当てする。上述の実施の形態において、（合計０．４のプロセッサ負荷の）サブ処理ユニット２０８Ａからのプロセッサ・タスクは、（０．５４の処理能力を有する）サブ処理ユニット２０８Ｂに再割り当てされることができる。なお、プロセッサ・タスクはまた、（例えば、ロード・バランシング、その他のための）必要に応じて、関連サブ処理ユニット２０８Ｂ−Ｄの１つ以上に再割り当てされることができる。
【００８１】
アクション３１４において、影響を受けるサブ処理ユニット２０８Ａは、好ましくは、シャットダウンされ、および／またはリブート・プロセスに置かれる。影響を受けるサブ処理ユニット２０８Ａから、エラーを消去するための試みが実行されることが好ましいのと同様に、アクション３１４において、サブ処理ユニットが２０８Ａがリブート・プロセスに置かれることが最も好ましい。リブートの後、処理フローは、好ましくは、アクション３１６（図６）へ進み、エラーが消去されるかどうかの判定がなされる。アクション３１６の判定の結果が否定的な場合、本処理は、好ましくは、アクション３１８へ進み、影響を受けるサブ処理ユニット２０８Ａは、シャットダウン状態のままとなる。アクション３１６の判定の結果が肯定的な場合、処理フローは、好ましくは、アクション３２０へ進み、サブ処理ユニット２０８Ａの状態は、それがプロセッサ・タスクを実行することができる関連サブ処理ユニットであることを示すために変化する。このステータスの変化は、好ましくは、メイン処理ユニット２０４に報告され、メイン処理ユニット２０４は、プロセッサ・タスクをサブ処理ユニット２０８Ａに割り当てる（および／または再割り当てする）ことを考慮することができる。
【００８２】
本発明の更なる態様において、関連サブ処理ユニット２０８の少なくとも１つが充分に負荷され、困難で、修復可能なエラーを呈するサブ処理ユニット２０８のもう一方から、プロセッサ・タスクのいくつかまたは全部を受信するために利用可能であることが好ましい。この点に関しては、たとえサブ処理ユニット２０８がエラー時に最大に負荷されていても、関連サブ処理ユニットの１つ以上が、いかなるプロセッサ・タスクも実行するようにスケジューリングせず、影響を受けたサブ処理ユニット２０８から、プロセッサ・タスクの全てを受け入れるように利用可能としておくように、メイン処理ユニット２０４は、サブ処理ユニット２０８の中にプロセッサ・タスクを移動する。
【００８３】
これらの本発明の態様と関連して、図６とは別の方法を示すフローチャートである図７をこれから参照する。図７の処理フローチャートは、実質的に、（影響を受けるサブ処理ユニット２０８が関連サブ処理ユニットに状態を変える）アクション３２０の後、追加的なアクション３２２が実行されるという以外は、図６のものと同様である。特に、アクション３２２は、（それは、現在プロセッサ・タスクを実行するために利用できる）影響を受けるサブ処理ユニットを、いかなるプロセッサ・タスクも実行するようにスケジューリングされていないが、実際にその処理能力の全てが利用可能なスタンバイ・モードとすることを必要とする。サブ処理ユニット２０８がエラーとなった後、別のサブ処理ユニット２０８からのプロセッサ・タスクの再割り当てが望ましいとき、この利用可能性は、好ましくは、利用される。有利なことに、エラーが発生するときに、影響を受けるサブ処理ユニット２０８が実質的に最大に負荷されている場合においても、それらのプロセッサ・タスクの全ては、スタンバイ・モードのサブ処理ユニット２０８に再割り当てされることができる。
【００８４】
この点に関して、スタンバイ状態に入れられることができるサブ処理ユニット２０８の構造のブロック図である図８をこれから参照する。それがローカルメモリ２５０、レジスタ２５２、１つ以上の浮動小数点ユニット２５４および１つ以上の整数ユニット２５６を含むという点で、この構造は図３のサブ処理ユニット２０８と、実質的に類似している。しかしながら、サブ処理ユニット２０８はまた、好ましくは、電力供給割込回路２９０およびクロック割込回路２９２の少なくとも１つを含む。電力供給割込回路２９０が使用されるとき、サブ処理ユニット２０８に対する電力供給は外部電源２９４または内部電源２９６であってもよい。電力供給割込回路２９０は、好ましくは、ライン２９８上のコマンド信号に応答してサブ処理ユニット２０８をスタンバイ状態とするように操作可能である。
【００８５】
特に、命令を受けるときに、電力供給割込回路２９０は、好ましくは、内部電源２９６からサブ処理ユニット２０８の回路への電力の供給をシャットダウンまたは中断する。それによって、サブ処理ユニット２０８をシャットダウンし、ほとんど全く、または全く電力が引き出されない。あるいは、外部電源２９４が使用される場合、電力供給割込回路２９０は、好ましくは、ライン２９８上の命令に応答して、このような電力供給からサブ処理ユニット２０８への電力の供給を中断する。
【００８６】
同様に、クロック割込回路２９２が使用される場合、それは、好ましくは、システム・クロックが内部的にまたは外部的に発生であっても、サブ処理ユニット２０８用のシステム・クロックを中断することによってサブ処理ユニット２０８をスタンバイ状態とするように操作可能である。
【００８７】
図２および９に関し、多くのプロセッサ要素２００は、高められた処理能力を提供するために、ともに接続されまたは実装されることができる。例えば、図９に示されるように、２つ以上のプロセッサ要素２００Ａ、２００Ｂは、１セットのマルチプロセッサ装置を形成するために、例えば１つ以上のチップパッケージ内に、ともに実装されまたは接続されることができる。この構成は、広帯域エンジン（ＢＥ）と称してもよい。図９に示されるように、広帯域エンジン２８０は、２つのプロセッサ要素２００Ｂ、２００Ａを含み、それはバス２１２の上のデータ通信のために相互接続される。追加的なバス２１６は、好ましくは、プロセッサ要素２００Ａ、２００Ｂおよび共有ＤＲＡＭ２１４の間で通信ができるようにするために提供される。１つ以上のＩ／Ｏ（input/output）インターフェース２０２Ａおよび２０２Ｂおよび外部バス（図示せず）は、広帯域エンジン２８０といかなる外部要素との間の通信をも提供する。広帯域エンジン２８０の各々のプロセッサ要素２００Ａおよび２００Ｂは、上記図２において説明したサブ処理ユニット２０８によるアプリケーションおよびデータの並行および独立処理と同じように並行におよび独立に、データおよびアプリケーションの処理を実行する。
【００８８】
１つ以上の本発明の更なる態様において、関連サブ処理ユニットは、例えばシステム１００（図１）、システム２００（図２）および／またはシステム２８０（図９）のような、１つ以上の更なるマルチプロセシング・システムの１つ以上の更なるサブ処理ユニットを含むことができる。したがって、前述の説明から当業者にとって明らかであるように、関連サブ処理ユニットは、サブ処理ユニットの１つ以上のそれぞれのグループを含むことができ、各々のグループは、それぞれのメイン処理ユニットに関連する。図１のシステム１００に関して、メイン処理ユニットはプロセッサ１０２Ａであり、サブ処理ユニットのそれぞれのグループは、メイン処理ユニット１０２Ａに関連するプロセッサ１０２Ｂ−Ｄを含む。同様に、図２のシステム２００が使用される場合、関連サブ処理ユニットは、更なるメイン処理ユニット２０４に関連する更なるサブ処理ユニット２０８Ａ−Ｄを含むことができる。また更に、図９のシステム２８０（広帯域エンジン）が使用される場合、関連サブ処理ユニットは、メイン処理ユニット２０４Ａに関連する、追加的な２つ（またはそれ以上の）のサブ処理ユニットのグループ２０８Ａ１−Ｄ１、およびメイン処理ユニット２０４Ｂに関連するサブ処理ユニットのグループ２０８Ａ２−Ｄ２を含むことができる。
【００８９】
この点に関して、図９において、サブ処理ユニットのそれぞれのグループが共通バス２１２を共有することが示されているように、関連するサブ処理ユニットのグループ（およびそれぞれの関連するメイン処理ユニット）は、１セットのマルチプロセシング・ユニットの一部であってもよい。代わりにまたは加えて、関連サブ処理ユニットのそれぞれのグループの１つ以上は、例えば、図１または２において示されるように、独立のマルチプロセシング・ユニットであってもよく、このような共通バスは、サブ処理ユニットのそれぞれのグループの間に存在しない。更に、それぞれのグループの１つ以上の関連サブ処理ユニットは、少なくとも分散マルチプロセシング・ユニットの一部であってもよく、サブ処理ユニットの少なくともいくつかは、相互に離れて配置される。
【００９０】
図１０に関して、１セットの一部または独立の構成の一部におけるそれぞれのマルチプロセシング・ユニットは、共通のまたは異なる回路基板に、共通のまたは異なるプロダクトに、および／または共通のまたは異なる位置に配置されていてもよい。図１０に示されるように、（プロセッサ要素２００のそれぞれのセットを含むことが起こり得る、）一対の広帯域エンジン２８０Ａおよび２８０Ｂは、共通の回路基板４００に配置される。広帯域エンジン２８０Ａおよび２８０Ｂがこの例において示されるが、独立のマルチプロセシング・ユニット（例えば、単一のプロセッサ要素２００を使用して）がまた考えられる。いずれにしても、それぞれのマルチプロセシング・ユニット２８０Ａおよび２８０Ｂは、ブロードバンド・インターフェース（ＢＩＦ）４０２を介して、相互接続される。
【００９１】
図１１に関して、複数のマルチプロセシング・ユニット２８０Ａ−Ｄは、異なる回路基板４００に配置されていてもよく、一方、回路基板４００は、単一プロダクト４０４に配置される。より詳しくは、マルチプロセシング・ユニット２８０Ａおよび２８０Ｂは、共通の回路基板４００Ａに配置され、一方、マルチプロセシング・ユニット２８０Ｃおよび２８０Ｄは、異なる回路基板４００Ｂに配置される。しかしながら、回路基板４００Ａおよび４００Ｂは、単一プロダクト４０４内に配置される。このように、それぞれのマルチプロセシング・ユニット２８０Ａ−Ｄ間のデータ通信は、イントラ回路基板部およびインター回路基板部を含むことができるブロードバンド・インターフェース（ＢＩＦ）５０２を介して行われることができる。
【００９２】
上記のように、それぞれのマルチプロセシング・ユニットの関連サブ処理ユニット（例えば１０２Ｂ−Ｄおよび／または２０８Ａ−Ｄ）は、異なるプロダクトに配置されていてもよい。したがって、このようなプロダクト（およびサブ処理ユニット）の中のデータ通信は、単一プロダクトの範囲内で、バスインターフェースおよび／またはブロードバンド・インターフェースより使用しなければならない。この点に関しては、これから図１２を参照する。ここで、独立のマルチプロセシング要素２０８または複数のマルチプロセシング要素２８０（マルチプロセシング要素のセット）は、マルチプロセシング・システム５００を形成するために複数のプロダクトに分配されることができる。（コンピュータおよび／または計算装置として提供される）システム５００の要素またはメンバーは、好ましくは、ネットワーク５０４上の通信上にある。ネットワーク５０４は、インターネットまたは他のコンピュータ・ネットワークのような、ローカル・エリア・ネットワーク（ＬＡＮ）、グローバル・ネットワークであってもよい。
【００９３】
ネットワーク５０４に接続しているメンバーは、例えば、クライアント・コンピュータ５０６、サーバ５０８、パーソナル携帯情報機器（ＰＤＡ）５１０、５１２、デジタル・テレビ（ＤＴＶ）、および有線またはワイヤレスのコンピュータおよび計算装置を含む。例えば、クライアント・コンピュータ５０６Ａは、１つ以上のプロセッサ要素２００または他の適切なマルチプロセシング・システムから構成されるラップトップ・コンピュータであってもよい。クライアント・コンピュータ５０６Ｂは、１つ以上のプロセッサ要素２００または他の適切なマルチプロセシング・システムから構成されるデスクトップ・コンピュータ（またはセットトップボックス）であってもよい。更に、サーバは５０６Ａは、好ましくは１つ以上のプロセッサ要素２００、およびその他から構成される、（データベース機能を使用する）管理部であってもよい。
【００９４】
このように、マルチプロセシング・システム５００の処理能力は、（例えば１つのプロダクトのように）局所的に配置され、または（例えば、多数のプロダクトのように）離れて配置される、複数のプロセッサ要素２００に依存することができる。この点に関して、１つ以上の本発明の態様において、全体的なコンピュータ・ネットワークのブロック図である図１３を参照する。また、プロセッサ要素２００および／または（多数のプロセッサ要素でできている）広帯域エンジン２８０は、コンピュータ・システム５００のための全体的な分散アーキテクチャを実装するために用いられてもよい。
【００９５】
システム５００のサーバ５０８は、クライアント・コンピュータ５０６より多くのデータおよびアプリケーションの処理を実行するので、サーバ５０８は、（例えばプロセッサ要素２００など）より多くのコンピュータ・モジュール、そしてクライアント・コンピュータ５０６を含む。他方、ＰＤＡ５１０は、この例では、最少限の処理を実行する。このように、ＰＤＡ５１０は、最も少ない数のプロセッサ要素２００（例えば単一のプロセッサ要素２００）を含む。ＤＴＶ５１２は、実質的にクライアント・コンピュータ５０６のものとサーバ５０８のものとの間にある処理のレベルを実行する。このように、ＤＴＶ５１２は、クライアント・コンピュータ５０６およびサーバ５０８のそれの間で、多くのプロセッサ要素を含む。
【００９６】
本発明の再割り当ての特徴の説明に戻る前に、分散マルチプロセシング・システム５００に関する更なる詳細を行う。システム５００の同種の構成は、適応性、処理速度、処理効率を促進する。システム５００の各々のメンバーが、同じコンピューティング・モジュール、例えば１つ以上のプロセッサ要素２００など（または若干の分数）を使用している処理を実行するので、データおよび／またはアプリケーションの処理を実行する特定のコンピュータまたは計算装置は、このようなデータおよびアプリケーションの処理がネットワークのメンバーで共有されることができるので、重要でない。データから成るソフトウェアセルおよびシステム５００によって処理されるアプリケーションを独自に識別することによって、処理結果は、この処理が起こったところを問わず処理を要請しているコンピュータまたは計算装置に発信されることができる。この処理を実行しているモジュールが共通の構造を備えていて、共通の命令セット・アーキテクチャを使用するため、プロセッサの中の互換性を達成するソフトウェアの負荷された階層の計算負担は避けられる。このアーキテクチャおよびプログラミング・モデルは、例えば、リアルタイム、マルチメディアのアプリケーションを実行するために必要な処理速度を促進する。
【００９７】
システム５００によって促進された処理速度と効率のさらなる強化のため、このシステムによって処理されるデータおよびアプリケーションは、独自に識別され、一様にフォーマット化されたソフトウェアセル５０２に実装されることができる。各々のソフトウェアセル５０２は、アプリケーションおよびデータの両方を含むかまたは含むことが可能である。また、各々のソフトウェアセルは、ネットワーク５０４およびシステム５００の全体にわたってグローバルにセルを識別するために、ＩＤを含む。このソフトウェアセル構造およびソフトウェアセル特有ＩＤの均一性は、ネットワーク５０４のコンピュータまたは計算装置におけるアプリケーションおよびデータの処理を促進する。例えば、クライアント・コンピュータ５０６は、ソフトウェアセル５０２を構築することができるが、クライアント・コンピュータ５０６の限られた処理能力のため、ソフトウェアセル５０２を処理のためにサーバ５０８に発信することができる。したがって、ソフトウェアセル５０２は、ネットワーク５０４上の処理リソースの有効性を基礎として、処理のためにネットワーク５０４の全体にわたって移動することができる。
【００９８】
システム５００のプロセッサおよびソフトウェアセル５０２の同種の構造は、今日の異機種間接続ネットワークの問題の多くを回避する。例えば、Ｊａｖａバーチャル・マシン（Ｊａｖａは登録商標）のようなバーチャル・マシンなどいかなる命令セットも使用するいかなるＩＳＡ上のアプリケーションの処理を可能にするように要求する、非効率的なプログラム・モジュールは回避される。したがって、システム５００は、従来のネットワークよりかなり効果的および効率的に、ブロードバンド処理を実行することができる。
【００９９】
上記のように、関連サブ処理ユニットを含むそれぞれのマルチプロセシング・ユニットは、共通のまたは異なる回路基板に、共通のまたは異なるプロダクトに、および／または共通のまたは異なる位置に、配置されていてもよい。それぞれのマルチプロセシング・ユニットが（図１２および１３にて図示したように）異なるプロダクトおよび／または異なる位置にで配置されるときに、追加的な通信インターフェース技術は、このようなマルチプロセシング・ユニットを相互接続するために使用されなければならない。この点に関して、異なる回路基板４００Ａおよび４００Ｂに配置される一対のマルチプロセシング・ユニット２８０Ａおよび２８０Ｂを示す図１４をこれから参照する。各々の回路基板４００Ａおよび４００Ｂは、ネットワーク５０４（例えばインターネット）を通じて相互接続する異なるプロダクトに配置される。この点に関しては、各々の回路基板４００Ａおよび４００Ｂは、好ましくは、それぞれのマルチプロセシング・ユニット２８０をネットワーク５０４に連結するために、入出力インターフェース（ＩＯＩＦ）５２０、ファブリック交換相互接続５２２、およびネットワーク・インターフェース・カード（ＮＩＣ）５２４、を含む。
【０１００】
サブ処理ユニットのそれぞれのグループの間の通信インターフェースのかなりの複雑さと量は、分散処理システムのスループットの処理ユニットに逆に影響を与える可能性があることから、関連するサブ処理ユニットに、異なる回路基板のおよび／または異なるプロダクトおよび位置のサブ処理ユニットのそれぞれのグループを含ませる能力を提供することは問題を呈する。これは、代わりに、システムのユーザのリアルタイム、マルチメディアの体験に逆に影響を与え得る。このように、関連サブ処理ユニットの中から、エラーから生じる再割り当てされたプロセッサ・タスクを受信するために、１つ以上のサブ処理ユニットを選択する際に注意が払われなくてはならない。実際に、通信バンド幅および通信レイテンシを含む、選択されたサブ処理ユニットに関連する通信コストは、許容されることができない。例えば、ＩＯＩＦ５２０Ａ、ファブリック交換相互接続５２２Ａ、ＮＩＣ５２４Ａ、インターネット５０４、ＮＩＣ５２４Ｂ、ファブリック交換相互接続５２２Ｂ、ＩＯＩＦ５２０Ｂを含む、図１４のマルチプロセシング・ユニット２８０Ａおよびマルチプロセシング・ユニット２８０Ｂの間の通信インターフェースの複雑性は、プロセッサ・タスクがこのように離れたマルチプロセシング・ユニットに割り当てられた場合、スループット、速度、その他に関する処理要求が満たされることができない程度まで、通信バンド幅の制限を含むことができ、また、マルチプロセシング・ユニット２８０Ａおよび２８０Ｂの間の通信レイテンシを増加させることができる。
【０１０１】
この点に関して、本発明の方法と装置は、処理結果を共有するため、および／または所定のプロセッサ・タスクおよびプロセッサ・タスクが再割り当てされることができる１つ以上の関連サブ処理ユニットの結果を受信するため、通信バンド幅および通信レイテンシを含む、１つ以上のサブ処理ユニットの間で必要とされる通信要求を考慮することが好ましい。実際に、通信要求が適切に考慮されない場合、遠隔サブ処理ユニットに対するプロセッサ・タスクの再割り当ては、処理スループットおよび速度において、不要のおよび過剰な遅れという結果になる可能性がある。前述と関連して、１つ以上の本発明の更なる態様において、マルチプロセシング・システムによって実行されることができる処理ステップを示すフローチャートである図１５を参照する。アクション５５０、５５２および５５４は、図４に関して前述のアクション３００、３０２および３０４と、かなり類似している。したがって、簡潔さおよび明快さのため、これらのアクションの詳細はここでは繰り返さない。
【０１０２】
影響を受けるサブ処理ユニット２０８のパフォーマンス要求が決定された後（アクション５５４）、処理フローは、アクション５５６に進む。そこで、エラー時または略エラー時に影響を受けたサブ処理ユニット２０８と関連する通信要求（例えばバンド幅およびレイテンシ要求）についての決定がなされる。より詳しくは、エラーの前に影響を受けるサブ処理ユニット２０８によって実行される予定の処理タスクの結果は、マルチプロセシング・システムの所望のリアルタイムおよび／またはマルチメディアの体験の目的を満たすためのいくつかの期限までに、１つ以上の他のサブ処理ユニット２０８によって予想されることができる。代わりにまたは加えて、１つ以上他のサブ処理ユニットは、それらの目的を満たすために、影響を受けるサブ処理ユニットの処理結果（またはこのような他のデータ）を共有し、さもなければ送信するように予想されることができる。このように、アクション５５６において、どのサブ処理ユニット２０８が再割り当てされたプロセッサ・タスクを受信すべきかについて決定するためによい検討がなされるように、このような通信要求が決定される。
【０１０３】
アクション５５８において（図１６）、関連サブ処理ユニット２０８のパフォーマンス能力および通信能力が決定される。より詳しくは、各々の関連サブ処理ユニット２０８への現在のプロセッサ負荷は、エラーを呈するサブ処理ユニット２０８から再割り当てされたプロセッサ・タスクを受信する候補を決めるために決定される。更に、通信バンド幅および通信レイテンシのような関連サブ処理ユニット２０８と関連する通信能力はまた、好ましくは、不十分な通信能力を呈するサブ処理ユニット２０８が候補から除外されることができるように決定される。
【０１０４】
要求であろうとコストであろうと、通信レイテンシおよび／または通信バンド幅は、多くの場合、例えばシステム５００（図１２）のような全体システムのサブ処理ユニットの間に存在することができる通信インターフェイスと関連する重要な問題である。これらの通信インターフェイスは、イントラまたはインターサブ処理ユニット装置であってもよい、Ｉ／Ｏバスおよび／またはバスインターフェースを含むことができる。また、通信インターフェイスは、ファブリック交換相互接続、ネットワーク・インターフェースおよび／または他のネットワーク伝送装置を含むことができる。実際に、本発明により考慮される通信インターフェイスは、レイテンシを増加させまたは減少させることができ、および／またはバンド幅を増加させまたは減少させることができるサブ処理ユニットの間の通信経路におけるいかなる装置も含む。
【０１０５】
当業者は、この説明から、分散マルチプロセシング・システム５００（図１２）の範囲が拡大するにしたがって、関連サブ処理ユニット２０８のパフォーマンス能力および通信能力の情報を得続けることが困難になることを認めている。したがって、例えば、図１２に示されるサーバ５０８Ａのように、関連サブ処理ユニット２０８を含むマルチプロセシング・ユニットは、管理部と通信してもよい。サーバ５０８Ａは、好ましくは、関連サブ処理ユニット２０８のパフォーマンス能力および通信能力に関する情報を維持することと関連して利用されるテーブルを有するデータベースを含む。
【０１０６】
この点に関して、好ましくはテーブル６００に含まれるそのような情報を示す図１７をこれから参照する。特に、テーブル６００は、好ましくは、関連サブ処理ユニットのためのプロセッサ負荷を表すパフォーマンス情報を含む。この情報は、コラム６０２に含まれる。テーブル６００も、好ましくは、プロセッサ・タスク再割り当てされることができる１つ以上のサブ処理ユニットと処理結果（データ）を所定のサブ処理ユニットと共有するための１つ以上の関連サブ処理ユニットとの間に存在する通信バンド幅および通信レイテンシを表す通信情報を含む。この通信情報は、コラム６０４に示される。
【０１０７】
テーブル６００も、好ましくは、関連サブ処理ユニットがシステムのマルチプロセシング・ユニットの中で配置されるところを表す位置情報を含む。この情報は、好ましくは、特定のプロダクトの識別子（コラム６０６）、プロダクト内の特定の回路基板の識別子（コラム６０８）、所定の回路基板上の例えば広帯域エンジンなどの特定のマルチプロセシング・ユニットの識別子（コラム６１０）、そして、所定のマルチプロセシング・ユニット内の特定のサブ処理ユニットの識別子（コラム６１２）を含む。サーバ５０８Ａは、関連サブ処理ユニットを含むそれぞれのマルチプロセシング・ユニットから、パフォーマンス情報、通信情報および／または位置情報を受信することが好ましい。
【０１０８】
この構成で、所定のマルチプロセシング・ユニットのメイン処理ユニットは、サーバ５０８Ａにクエリーを一斉送信することができ、クエリーは、エラーが発生した（図１６のアクション５５８Ａ）サブ処理ユニットに関連するプロセッサ・タスクを完了する必要のある処理能力および通信能力を表示することを含む。次に、サーバ５０８Ａは、エラー（図１６のアクション５５８Ｂ）を呈したサブ処理ユニットから、再割り当てされたプロセッサ・タスクを受信する候補を決めるために、データベース（すなわちテーブル６００）を検索することができる。
【０１０９】
図１８に関して、アクション５６０において、好ましくは、いずれかの関連サブ処理ユニットのパフォーマンス能力がクエリーに含まれるパフォーマンス要求に合うかどうかについて判定がなされる。判定の結果が否定的な場合、処理フローは、好ましくは、アクション５６２へ進み、クエリーへの応答は、再割り当てが実行できないことを表して発信される。アクション５６０の判定の結果が肯定的な場合、本方法は、好ましくは、アクション５６４へ進む。そこで、いずれかの関連サブ処理ユニットの通信能力がクエリーに含まれる通信要求に合うかどうかについて更なる判定がなされる。アクション５６４の判定の結果が否定的な場合、処理フローは、好ましくは、アクション５６６へ進み、クエリーへの応答は、プロセッサ・タスクの再割り当てが実行できないことを表して発信される。アクション５６４の判定の結果が肯定的な場合、処理フローは、好ましくは、アクション５６８へ進む。そこで、１つ以上の関連サブ処理ユニットは、（例えば、ネットワーク・アドレス、プロダクト番号、広帯域エンジン番号、マルチプロセシング・ユニット番号および／またはサブ処理ユニット番号によって）識別される。この情報は、影響を受けるサブ処理ユニットのプロセッサ・タスクが、選択された関連サブ処理ユニットに再割り当てされるように（アクション５７０）、好ましくは、クエリーを発信したマルチプロセシング・ユニットに提供される。
【０１１０】
アクション５７２において、エラーを呈したサブ処理ユニットは、好ましくは、図５のアクション３１４に関して説明したように、シャットダウンされおよび／またはリブート・プロセスに置かれる。図６および／または図７において示される更なる処理ステップがまた考察される。
【０１１１】
影響を受けるサブ処理ユニットのプロセッサ・タスクの再割り当ては、関連サブ処理ユニットのパフォーマンス能力および通信能力に基づくため、不十分な通信バンド幅および／または過度の通信レイテンシによる逆影響は避けられることができる。これは、ユーザのリアルタイム、マルチメディアの体験は、逆にプロセッサ・タスクのエラーおよび結果として生じる再割り当てによる影響を受けないという高い可能性を保証する。
【０１１２】
１つ以上の本発明の更なる態様を示す図１９および２０をこれから参照する。特に、関連サブ処理ユニットは、（例えば、所有権、契約の義務、その他により）それと関連する１つ以上の本体が、所定のサブ処理ユニットのプロセッサ・タスクが再割り当てされるときに、その使用の料金を徴収することができるリース制度において利用されることができる。この点に関しては、サーバ５０８Ａのテーブル６００Ａは、好ましくは、利用可能情報およびコスト情報を含む更なる情報と同様に、図１７のテーブル６００に含まれる情報を含む。利用可能情報は、好ましくは、少なくとも使用のためにリースされることができる関連サブ処理ユニットの処理能力を表す。例えば、処理能力は、１秒につき何百万もの指令（ＭＩＰＳ）またはその技術分野の他の既知量から定量化されることができる。コスト情報は、好ましくは、リースのための関連サブ処理ユニットを使用することに対するそれぞれの料金を表す。コスト情報は、好ましくは、例えば、ＭＩＰ毎のドルまたは他のいかなる適切な定量化などの、料金の定量化を容易にする。サーバ５０８は、関連サブ処理ユニットを含むそれぞれのマルチプロセシング・ユニットから、(表中の他の情報と同様に)利用可能情報６１４および／またはコスト情報６１６を受信することが好ましい。
【０１１３】
この構成では、所定のマルチプロセシング・ユニットのメイン処理ユニットは、サーバ５０８Ａにクエリーを一斉送信することができ、クエリーは、エラーが発生したサブ処理ユニットに関連するプロセッサ・タスクを完了するために必要な処理能力および通信能力を表示することを含む（アクション５５８Ａの図１６）。また、クエリーは、所定のサブ処理ユニットのタスク、所定のサブ処理ユニットの位置、その他のプロセッサ負荷を含むことができる。なお、所定のサブ処理ユニットは、各々が異なる負荷を処理ユニットに配置する多数のプロセッサ・タスクを実行することができる。このように、「プロセッサ負荷」は、プロセッサ・タスクの細目と考えられることができ、または状況に応じたプロセッサ・タスクのグループに関係すると考えられることができる。また更にクエリーは、１つ以上の関連サブ処理ユニットから処理能力をリースすることの受け入れられるコストを示すリース情報を含むことができる。例えば、エラーが発生した所定のサブ処理ユニットと関連する本体は、１つ以上の関連サブ処理ユニットから処理能力をリースすることに料金を支払うことができるコストのいくつかの制限と目標を設定するように望むことができる。この情報は、好ましくは、リース情報内で何らかの方法で定量化される。
【０１１４】
サーバ５０８Ａのテーブル６００Ａは、好ましくは、関連サブ処理ユニットのうちどれが所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるべきかを決定するために用いられる。このために、サーバ５０８Ａは、エラーを呈したサブ処理ユニットから再割り当てされたプロセッサ・タスクを受信する候補を決めるために、データベース（すなわちテーブル６００Ａ）にアクセスする検索基準として、所定のサブ処理ユニットに関連するメイン処理ユニットにより発信されるクエリーを利用してもよい（図１６のアクション５５８Ｂ）。
【０１１５】
図２０に関して、アクション５８０において、好ましくは、関連サブ処理ユニットのパフォーマンス能力のいずれかがクエリーに含まれるパフォーマンス要求を満たすかどうかの判定がなされる。判定の結果が否定的な場合、処理フローは、好ましくは、アクション５８２へ進み、クエリーへの応答は、再割り当てができないことを表して発信される。アクション５８０の判定の結果が肯定的な場合、本方法は、好ましくは、アクション５８４へ進む。そこで、関連サブ処理ユニットのいずれかの通信能力がクエリーの通信要求を満たすかどうかの更なる判定がなされる。アクション５８４の判定の結果が否定的な場合、処理フローは、好ましくは、アクション５８６へ進み、クエリーへの応答は、プロセッサ・タスクの再割り当てができないことを表して発信される。アクション５８４の判定の結果が肯定的な場合、処理フローは、好ましくは、アクション５９０へ進む。
【０１１６】
アクション５９０において、関連サブ処理ユニットと関連するテーブル６００Ａのコスト情報６１６のいずれかがクエリーに含まれるリース情報に適合するかどうかの判定がなされる。この点に関しては、この判定は、コスト情報が、料金が１つ以上の関連サブ処理ユニットのプロセッサ・パワーをリースするために払われる料金以下を示すか同等であることを示すかを含意する。好ましくは、最低料金または複数の料金を有するリースのための１つ以上のサブ処理ユニットは、所定のサブ処理ユニットのプロセッサ・タスクの再割り当てを受信するために選択される。アクション５９０の判定の結果が否定的な場合、処理フローは、好ましくは、アクション５９２へ進み、クエリーへの応答は、プロセッサ・タスクの再割り当てができないことを表して発信される。アクション５９０の判定の結果が肯定的な場合、処理フローは、好ましくは、アクション５９４へ進む。
【０１１７】
アクション５９４で、１つ以上の関連サブ処理ユニットは、（例えば、ネットワーク・アドレス、プロダクト、広帯域エンジン番号、マルチプロセシング・ユニット番号および／またはサブ処理ユニット番号によって）識別される。この情報は、好ましくは、影響を受けるサブ処理ユニットのプロセッサ・タスクがリースのために選択された関連サブ処理ユニットに再割り当てされることができるようにクエリーを発信したマルチプロセシング・ユニットに提供される。
【０１１８】
アクション５９８において、エラーを呈したサブ処理ユニットは、好ましくは、図５のアクション３１４において前述されたように、シャットダウンされおよび／またはリブート・プロセスに置かれる。図６および／または図７において示される更なる処理ステップをまた考察する。
【０１１９】
１つ以上の本発明の更なる態様において、図１２−２０において前述されたように、サーバ５０８Ａを用いずに、所定のサブ処理ユニットから１つ以上の関連サブ処理ユニットまでプロセッサ・タスクの再割り当てを容易にすることが望ましい。実際に、ネットワーク上の処理ユニット間のリアルタイム通信を求める要求が増加するにしたがって、セントラル・サーバまたはサーバ５０８Ａの使用は、行うことが困難になる可能性がある。このように、管理部を利用することなくプロセッサ・タスクのプロセッサに対するプロセッサ通信および再割り当てを達成することが望まれる可能性がある。
【０１２０】
このために、処理エラーを呈した所定のサブ処理ユニットに関連するメイン処理ユニットは、好ましくは、１つ以上の関連サブ処理ユニットへ１つ以上の応答要求を発信するように操作可能である。応答要求の目的は、メイン処理ユニットが再割り当てオプションに関して決定をすることができるように、関連サブ処理ユニットから応答を得ることである。好ましくは応答から得られるそのような情報は、図１７および１９のテーブル６００および６００Ａに含まれる情報の少なくともいくつかを含む。実際に、関連サブ処理ユニットは、直ちに応答要求を受信することができ、準備しそれに対して、少なくとも１つのパフォーマンス情報、通信情報、利用可能情報、コスト情報、プロダクト識別情報、回路基板識別情報、広帯域エンジン識別情報およびサブ処理ユニット識別情報を含む応答を送信することができる。
【０１２１】
図２１および２２に関して、１つ以上のサブ処理ユニットに関連する特定のメイン処理ユニットによって、１つ以上の応答要求が発信されることができる方法、および１つ以上の応答が受信することができる方法に関して、実施の形態が示される。図２１に示されるように、マルチプロセッサ・システム７００は、同じまたは異なる近傍に配置されることができる複数の回路（および／またはプロダクトまたはシステム）７０２を含むことができる。いずれにせよ、各々の回路基板７０２Ａ−Ｃは、１つ以上の処理要素の、プロセッサ要素０、プロセッサ要素１、プロセッサ要素２、その他を含むことができる。各々のプロセッサ要素は、全て特定のアプリケーションの緊急性に応じた図１の構成および／または図２の構成を利用して提供されることができる。それぞれのプロセッサ要素は、詳細は周知技術である、複数のバス、通信ブリッジおよび／または他の通信インターフェイス・ハードウェアおよびソフトウェアからなるネットワークにより相互接続する。しかしながら、なお、通信インターフェイスと認められる各々のバスおよび／または通信ブリッジは、レイテンシおよびバンド幅制約を含むパフォーマンス制限を有する。これらの通信制約（またはコスト）は、プロセッサ・タスクの再割り当てが判定されるときに考慮されなければならない。
【０１２２】
回路基板７０２Ａは、バス７０４Ａおよびブリッジ７０６Ａを含む。回路基板７０２Ｂは、バス７０４Ｂおよびブリッジ７０６Ｂを含む。回路基板７０２Ｃは、バス７０４Ｃおよびブリッジ７０６Ｃを含む。本発明の一実施の形態において、回路基板７０２Ａおよび７０２Ｂのブリッジ７０６Ａおよび７０６Ｂは、バス７０８Ａを経由して相互接続することができる。同様に、回路基板７０２Ｃのブリッジ７０６Ｃは、バス７０８Ｂを経由して１つ以上の他のブリッジ（図示せず）に相互接続することができる。バス７０８Ａおよび７０８Ｂは、同様にバス７１２を経由して相互接続するブリッジ７１０Ａおよび７１０Ｂを経由して、相互接続することができる。
【０１２３】
バス７０４Ａは、１のレイテンシおよび１０のバンド幅を表すことができる。このレイテンシおよびバンド幅は、単独でバス７０４Ａに関連することができおよび／またはバス７０４Ａおよびブリッジ７０６Ａの組合せに関連することができると理解される。また、レイテンシおよびバンド幅値は、例示により与えられ、簡潔さおよび明快さのために非常に単純化されたものであると理解される。バス７０４Ｂおよびバス７０４Ｃは、両方とも２のレイテンシおよび８のバンド幅を示すことができる。バス７０８Ａは、５のレイテンシおよび３のバンド幅を表すことができ、一方、バス７０８Ｂは、４のレイテンシおよび４のバンド幅を表すことができる。また更に、バス７１２は、２０のレイテンシおよび１のバンド幅を表すことができる。
【０１２４】
プロセッサ要素０内のサブ処理ユニットの１つ以上が処理エラーを呈した場合、プロセッサ要素０のメイン処理ユニットは、関連サブ処理ユニットへの１つ以上の応答要求を発信することができる。応答要求は、好ましくは、他のプロセッサ要素へのプロセッサ要素０およびサブ処理ユニットの間のネットワークを介した伝達が可能なネットワーク・データ・パケットの形態であってもよい。特に、応答要求は、プロセッサ要素２への、バス７０４Ａを伝わって、ブリッジ７０６Ａを通じて、バス７０８Ａ上で、ブリッジ７１０Ａを通じて、バス７１２上で、ブリッジ７１０Ｂを通じて、バス７０８Ｂ上で、ブリッジ７０６Ｃを通じて、バス７０４Ｃ上で、プロセッサ要素０によりプロセッサ要素２へ発信されることができる。なお、プロセッサ要素０からプロセッサ要素２への応答要求のこのデータ・パスは、アップリンク・データ・パスを基準としてもよい。
【０１２５】
通信要求は、それらがネットワーク全体を移動するにしたがって、応答要求によって遭遇する通信インターフェイスと関連する通信情報を（例えば、レイテンシおよびバンド幅の形態で）集積することができる。上述の実施の形態において、プロセッサ要素０からプロセッサ要素２まで移動する応答要求において、応答要求は、好ましくは、バス７０４Ａ、７０８Ａ、７１２、７０８Ｂおよび７０４Ｃと関連するそれぞれのレイテンシおよびバンド幅パラメータを集積する。より詳しくは、図示するように、少なくとも応答要求がブリッジに７０６Ａを発信するときまでに、（７２０において、）応答要求は、バス７０４Ａと関連する１および１０のレイテンシおよびバンド幅パラメータを集積する。その後、少なくとも応答要求が７１０Ａブリッジを発信するときまでに、（７２２において、）応答要求は、バス７０８Ａと関連する５および３のレイテンシおよびバンド幅パラメータを集積する。したがって、集積情報７２２は、１および１０の組み合わせのレイテンシおよびバンド幅、５および３の組み合わせのレイテンシおよびバンド幅を含む。更に、少なくとも応答要求がブリッジ７１０Ｂを通過する時までに、（７２４において、）応答要求は、バス７１２と関連する２０および１のレイテンシおよびバンド幅パラメータを集積する。したがって、その段階の集積情報７２４は、１と１０、５と３、２０と１の組み合わせのレイテンシおよびバンド幅を含む、その後、（７２６において、）応答要求は、バス７０８Ｂと関連する４および４のレイテンシおよびバンド幅パラメータを集積する。このように、集積情報７２６は１と１０、５と３、２０と１、４と４の組合せのレイテンシおよびバンド幅を含む、最後に、（７２８において、）応答要求は、バス７０４Ｃと関連する２および８のレイテンシおよびバンド幅パラメータを集積する。集積情報７２８は、このように１と１０、５と３、２０と１、４と４、２と８のレイテンシおよびバンド幅の組合せを含む。
【０１２６】
１つ以上の本発明の態様において、プロセッサ要素０のサブ処理ユニットの１つからプロセッサ要素２のサブ処理ユニットの１つ以上へいかなるプロセッサ・タスクをも再割り当てすることに関連する通信コストの見積もりは、応答要求がネットワーク上でプロセッサ要素０からプロセッサ要素２へ移動したときに集積された通信情報（例えばレイテンシおよびバンド幅パラメータ）から少なくとも計算される。
【０１２７】
前述したように、エラーを呈した所定のサブ処理ユニットのプロセッサ・タスクの結果は、プロセッサ要素０内のサブ処理ユニットの１つ以上により利用を意図されることができ、または、結果は、プロセッサ要素１のような他のプロセッサ要素内に位置するサブ処理ユニットの１つ以上により利用を意図されることができる。また、前述したように、処理結果または１つ以上のサブ処理ユニットの他のこのようなデータは、そのプロセッサ・タスクに作用するように影響を受けたサブ処理ユニットによって利用を意図されてもよい。
【０１２８】
プロセッサ要素０（またはその逆に）、集積情報７２８内のサブ処理ユニットの１つ以上において所定のサブ処理ユニットのプロセッサ・タスクの結果が利用を意図されていたと仮定すると、プロセッサ要素０とプロセッサ要素２の間の通信インターフェースの通信コストを表すことは、実際、所定のサブ処理ユニットから結果を受信しまたはそれらへ結果を提供するためのプロセッサ要素０内のサブ処理ユニットの１つ以上、およびプロセッサ・タスクが再割り当てされることができるプロセッサ要素２内の関連サブ処理ユニットの１つ以上との間に存在する通信コストを決定するために直接利用できるであろう。
【０１２９】
他方、例えばプロセッサ要素１（またはその逆）内のサブ処理ユニットの１つ以上において、プロセッサ要素０内の所定のサブ処理ユニットのプロセッサ・タスクの結果が利用を意図されたと仮定すると、ネットワークの通信インターフェースに関連する更なる情報は、プロセッサ・タスクがプロセッサ要素２に割り当てられた場合に全体の通信コストを決定することに有用であろう。この点に関しては、プロセッサ要素０のメイン処理ユニットは、好ましくは、１つ以上の応答要求を、所定のサブ処理ユニットから結果を受信しまたは所定のサブ処理ユニットへ結果を送信するよう意図されたサブ処理ユニットの１つ以上に発信する。この例では、プロセッサ要素０のメイン処理ユニットは、プロセッサ要素１および／またはその中のサブ処理ユニットへの応答要求を発信する。これは、プロセッサ要素１から通信情報を得る機会が以前に存在しなかったと仮定している。しかしながら、プロセッサ要素０およびプロセッサ要素１が以前に相互に（例えば、エラーが検出される前に、）通信している場合、プロセッサ要素０がプロセッサ要素０へ応答要求を発信することは必要でないかもしれない。したがって、要求が必要とされた場合、プロセッサ要素０からプロセッサ要素１へ移動する間に得られる集積された通信情報である集積情報７３０は、１と１０、５と３、２と８の組合せのレイテンシおよびバンド幅を含む。
【０１３０】
プロセッサ要素０の所定のサブ処理ユニットからプロセッサ要素２の１つ以上のサブ処理ユニットへプロセッサ・タスクを再割り当てすることに関連する通信コストの計算は、集積情報７２８および７３０のそれぞれの比較を含む。この実施の形態において、プロセッサ要素０のメイン処理ユニットは、少なくとも、プロセッサ要素１からプロセッサ要素２へのアップリンク・データにおいて集積されるレイテンシおよびバンド幅の組合せの見積もりを得るため、集積情報７２８および７３０のそれぞれのレイテンシおよびバンド幅の組合せの比較を実行してもよい。特に、集積情報７２８および７３０のそれぞれのレイテンシおよびバンド幅の組合せの並立した比較は、１と１０、５と３の最初の２つの組合せが同一であることを表す。各々の集積の次のレイテンシおよびバンド幅の組合せ（集積情報７２８における２０と１、集積情報７３０における２と８）は異なる。したがって、プロセッサ要素１からのプロセッサ要素２への推定されたアップリンク・データ・パス集積は、（集積情報７３０からの）２と８、（集積情報７２８からの）２０と１、（集積情報７２８からの）４と４、（集積情報７２８からの）２と８である。
【０１３１】
プロセッサ要素１からプロセッサ要素０、プロセッサ要素０からプロセッサ要素２、プロセッサ要素１からプロセッサ要素２へのアップリンク・データ・パスの通信コストは、それぞれの集積情報７３０、７２８から計算されることができ、および集積情報７２８および７３０を比較することから得られる集積が見積もられることができる。プロセッサ要素０とプロセッサ要素１の間のアップリンク・データ・パスの通信コストに関して、それぞれのレイテンシパラメータは、アップリンク・データ・パスの全体的なレイテンシを得るために集計される。これは、１＋５＋２＝８の集積されたアップリンク通信レイテンシを与える。プロセッサ要素０とプロセッサ要素１の間のアップリンク・データ・パスのバンド幅パラメータは、最短バンド幅を決定するために求められる。この実施の形態においては、最短バンド幅の３は、バス７０８Ａと関連する。このように、プロセッサ要素０とプロセッサ要素１の間のアップリンク・データ・パスの最短通信バンド幅は３である。
【０１３２】
そして、これらの計算はまた、プロセッサ要素０とプロセッサ要素２の間、およびプロセッサ要素１とプロセッサ要素２の間のアップリンク・データ・パスに適用されることができる。プロセッサ要素０の所定のサブ処理ユニットのプロセッサ・タスクがプロセッサ要素２に割り当てられた場合、プロセッサ要素１とプロセッサ要素２の間のアップリンク・データは、処理システム全体のリアルタイム、マルチメディア・オブジェクトに応じるための通信要求を満たすことにおいて重要であるため、（所定のサブ処理ユニットから結果を受信する、または所定のサブ処理ユニットへ結果を送信する）プロセッサ要素１とプロセッサ要素２の間のアップリンク・データのレイテンシおよび最小バンド幅は、特に重要である。
【０１３３】
１つ以上の本発明の更なる態様において、それぞれの重要なプロセッサ要素の間のアップリンク・データ・パスおよびダウンリンク・データ・パスの両方と関連する通信コストを計算することが望まれてもよい。例えば、プロセッサ要素０の所定のサブ処理ユニットのプロセッサ・タスクがプロセッサ要素２に再割り当てされるべきかについて判定されることになっている場合、アップリンク・データおよびダウンリンク・データは、（所定のサブ処理ユニットから結果を受信する、または所定のサブ処理ユニットへ結果を送信する）プロセッサ要素１とプロセッサ要素２の間であると考慮されるべきである。プロセッサ要素０のメイン処理ユニットは、アップリンク・データ・パスおよびダウンリンク・データ・パスと関連する通信情報（例えばレイテンシおよびバンド幅パラメータ）を受信することによって、これらのアップリンクおよびダウンリンク通信コストを求めることができる。好ましい実施の形態において、関連サブ処理ユニット（またはプロセッサ要素）によって開始プロセッサ要素（この実施の形態では、プロセッサ要素０）のメイン処理ユニットへ発信される１つ以上の応答は、それらがメイン処理ユニットへ移動するときに応答により遭遇する通信インターフェイスと関連するレイテンシおよびバンド幅に関係する更なる通信情報を集積するように操作可能である。
【０１３４】
プロセッサ要素２から、プロセッサ要素２により発信される応答が移動するプロセッサ要素０へのダウンリンク・データ・パスを示す図２２をこれから参照する。好ましい実施の形態において、応答はまた、応答要求がプロセッサ要素２によって受信するときに、得られた集積情報７２８を含むことができる。このように、応答がプロセッサ要素２からダウンリンク・データ・パスの上のプロセッサ要素０まで進行するにしたがって、集積情報７５０、７５２、７５４、７５６および７６０は、アップリンクの集積情報７２８およびダウンリンク集積情報の両方を含むことができる。このように、プロセッサ要素０（および／またはそれのメイン処理要素）によって受信する集積情報７６０は、アップリンクおよびダウンリンク・データ・パスレイテンシおよびバンド幅情報を含む。アップリンク・データ・パス集積は、レイテンシおよびバンド幅の組合せである１と１０、５と３、２０と１、４と４、２と８を含む。ダウンリンク・データ・パス集積は、レイテンシおよびバンド幅の組合せである２と８、４と４、２０と１、５と３、１と１０を含む。
【０１３５】
なお、ここで説明した実施の形態において、アップリンクおよびダウンリンク・データ・パス集積は対称形である。しかしながら、本発明の更なる態様において、アップリンクおよびダウンリンク・データ・パス集積は、対称形ではなく、全てがネットワークの特異性に依存する。
【０１３６】
上述のように、プロセッサ要素０のメイン処理ユニットは、好ましくは、エラーを呈した所定のサブ処理ユニットから結果を受信し、該所定のサブ処理ユニットへ結果を送信するように意図された１つ以上のサブ処理ユニットの間のアップリンクおよびダウンリンク・データ・パス集積を見積もることができる。アップリンク・データ・パスについて前述したものと同じアプローチは、ダウンリンク・データ・パスシナリオに関して使用されることができる。プロセッサ要素０によって計算されることができるプロセッサ要素１およびプロセッサ要素２に関するアップリンク・データ・パス集積およびダウンリンク・データ・パス集積を示す図２３をこれから参照する。プロセッサ要素０のメイン処理ユニットは、好ましくは、集積されたアップリンク通信レイテンシ、アップリンク・データ・パスバンド幅、集積されたダウンリンク通信レイテンシ、プロセッサ要素１およびプロセッサ要素２の間のダウンリンク・データ・パスバンド幅を計算する。
【０１３７】
これらの通信コストは、好ましくは、プロセッサ要素２へのプロセッサ・タスクの再割り当てがリアルタイム処理目標を達成するための通信要求を満たすかの判定において、プロセッサ要素０のメイン処理ユニットによって利用される。さまざまな本発明の態様において、所定のサブ処理ユニットのプロセッサ・タスクを再割り当てするためのいかなる数のオプションが、前述と同様の方法で求められることができるように、プロセッサ要素０のメイン処理ユニットがシステムの全体にわたって関連サブ処理ユニット（および／またはプロセッサ要素）から、多数の応答を受信することが検討される。
【０１３８】
１つ以上の本発明の更なる態様において、１つ以上のデータ・バス７０８Ａ、７０８Ｂ、７１２、その他は、所定のプロセッサ要素、メイン処理ユニットまたはサブ処理ユニットに通信コスト情報を提供することができてもよい。実際に、各々のバスは、通信コスト情報にアクセスするバス・アービタ論理回路装置（図示せず）を含むことができる。バス・アービタ論理回路装置へのパケット（例えばマスターデータ・パケットによって）の送信要求が提供されたとき（それは、通常いずれにしろなされる）、アービタはバスに関連する通信コスト情報に応答することができる。このように、本実施の形態において、通信コスト情報を管理するために、セントラル・サーバは必要ない。
【０１３９】
なお、所定のプロセッサ要素またはそのサブ処理ユニットは、バンド幅が２つ以上のプロセッサ要素の間で予約されてもよいように、アービタユニットの１つ以上に予約要求を発信することができる。予約要求に応答して、バス・アービタ装置は、要求元プロセッサ要素の間で通信要求を保証するため要求の量に応じて利用できるバンド幅を減少させることができ、関連するプロセッサ要素（またはプロセッサ要素）は処理されることができる。バス・アービタ装置に発信される予約クリア要求は、予約を消去することができる。
【０１４０】
どのように通信コストが、ネットワーク全体にわたって移動する単一のまたは複数の応答要求の使用を通じて得られた情報に基づいて求められるかについて相当な注意が払われているが、テーブル６００（図１７）およびテーブル６００Ａ（図１９）に見られるように、単一のおよび／または複数の応答要求が他のタイプの情報を含むことができることがまた検討される。例えば、所定のサブ処理ユニットのプロセッサ・タスクの再割り当てに関する決定をすることにおいて、プロセッサ要素０のメイン処理ユニットがこのような情報を評価することができるように、応答を発信している関連サブ処理ユニットはまた、パフォーマンス情報、利用可能情報、コスト情報および位置情報を含むことができる。
【０１４１】
有利なことに、影響を受けるサブ処理ユニットのプロセッサ・タスクの再割り当ては、パフォーマンス能力の１つ以上、および管理部の必要性のない関連サブ処理ユニットの通信能力の１つ以上に基づいてもよく、それはこのような再割り当てが起こる速度上の逆効果を有する可能性がある。
【０１４２】
本発明が特定の実施の形態を参照してここに記載されているが、これらの実施の形態は、単に本発明の原理および出願を例示するだけであると理解されなければならない。したがって、多数の修正が、例示の実施の形態になされることができることが理解されなければならず、その他の装置は、添付の請求の範囲に記載の本発明の趣旨および範囲から逸脱することなく、考案されることができる。
【図面の簡単な説明】
【０１４３】
【図１】１つ以上の本発明の態様におけるマルチプロセシング・システムの構造を示す図である。
【図２】本発明のプロセッサ要素（ＰＵ）の好ましい構造を示す図である。
【図３】本発明の典型的なサブ処理ユニット（ＳＰＵ）の構造を示す図である。
【図４】１つ以上の本発明の態様におけるマルチプロセシング・システムによって実行されることができる処理ステップを示すフローチャートである。
【図５】本発明のマルチプロセシング・システムによって実行されることができる更なる処理ステップを示すフローチャートである。
【図６】本発明のマルチプロセシング・システムによって実行されることができるなお更なる処理ステップを示すフローチャートである。
【図７】本発明のマルチプロセシング・システムによって実行されることができるなお更なる処理ステップを示すフローチャートである。
【図８】本発明の別のサブ処理ユニット（ＳＰＵ）の構造を示す図である。
【図９】１つ以上の本発明の更なる態様における１つ以上のサブ処理ユニットを含む処理システムの構造を示す図である。
【図１０】２つのマルチプロセシング・ユニットが１つ以上の本発明の態様における共通の回路基板に配置される演算処理システムの構造を示す図である。
【図１１】１つ以上のマルチプロセシング・ユニットが１つ以上の本発明の更なる態様において、異なる回路基板に配置される演算処理システムの構造を示す図である。
【図１２】１つ以上の本発明の更なる態様において、複数のマルチプロセシング・ユニットが、ネットワークにより相互接続することができる異なるプロダクトに配置されることを示す図である。
【図１３】マルチプロセシング・ユニットと連動して本発明が使われることができるソフトウェア・セル形態のブロック図である。
【図１４】１つ以上の本発明の更なる態様において、１つ以上のマルチプロセシング・ユニットが異なるプロダクトの異なる回路基板に配置される演算処理システムの構造を示す図である。
【図１５】１つ以上の本発明の態様において、マルチプロセシング・システムによって実行されることができる処理ステップを示すフローチャートである。
【図１６】本発明のマルチプロセシング・システムによって実行されることができる更なる処理ステップを示すフローチャートである。
【図１７】本発明のマルチプロセシング・システムのサブ処理ユニットに関して、プロセッサ負荷情報、位置情報および通信情報を含むテーブルを示す図である。
【図１８】本発明のマルチプロセシング・システムによって実行されることができるなお更なる処理ステップを示すフローチャートである。
【図１９】リースのために利用可能な処理能力を表す情報、およびこのような処理能力をリースするための料金を表すコスト情報も含む以外は、図１７と同様のテーブルを示す図である。
【図２０】本発明のマルチプロセシング・システムによって実行されることができるなお更なる処理ステップを示す図１８のそれに対する別のフローチャートである。
【図２１】１つ以上の本発明の更なる態様における、マルチプロセッサ・システムの結合ブロック図およびフローチャートである。
【図２２】１つ以上の本発明の更なる態様における、マルチプロセッサ・システムの結合ブロック図およびフローチャートである。
【図２３】図２２のシステムを通過する応答移動として得られる通信情報の集積のブロック図である。
【符号の説明】
【０１４４】
１００  マルチプロセシング・システム、  １０２  プロセッサ、  ２００  プロセッサ要素、  ２０２  Ｉ／Ｏインターフェース、  ２０６  ＤＭＡＣ、  ２０８  サブ処理ユニット、  ２５０  ローカルメモリ、  ２５２  レジスタ、  ２５４  浮動小数点ユニット、  ２５６  整数ユニット、  ２５８  バス・インターフェース。
【図１】
2005332402.tif 000003
【図２】
2005332402.tif 000004
【図３】
2005332402.tif 000005
【図４】
2005332402.tif 000006
【図５】
2005332402.tif 000007
【図６】
2005332402.tif 000008
【図７】
2005332402.tif 000009
【図８】
2005332402.tif 000010
【図９】
2005332402.tif 000011
【図１０】
2005332402.tif 000012
【図１１】
2005332402.tif 000013
【図１２】
2005332402.tif 000014
【図１３】
2005332402.tif 000015
【図１４】
2005332402.tif 000016
【図１５】
2005332402.tif 000017
【図１６】
2005332402.tif 000018
【図１７】
2005332402.tif 000019
【図１８】
2005332402.tif 000020
【図１９】
2005332402.tif 000021
【図２０】
2005332402.tif 000022
【図２１】
2005332402.tif 000023
【図２２】
2005332402.tif 000024
【図２３】
2005332402.tif 000025