JP4255457B2 - エラー処理方法 - Google Patents

エラー処理方法 Download PDF

Info

Publication number
JP4255457B2
JP4255457B2 JP2005144793A JP2005144793A JP4255457B2 JP 4255457 B2 JP4255457 B2 JP 4255457B2 JP 2005144793 A JP2005144793 A JP 2005144793A JP 2005144793 A JP2005144793 A JP 2005144793A JP 4255457 B2 JP4255457 B2 JP 4255457B2
Authority
JP
Japan
Prior art keywords
sub
processing unit
processing
unit
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005144793A
Other languages
English (en)
Other versions
JP2005332402A (ja
Inventor
保吉 大川
大輔 平岡
孝二 平入
達也 小山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of JP2005332402A publication Critical patent/JP2005332402A/ja
Application granted granted Critical
Publication of JP4255457B2 publication Critical patent/JP4255457B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2043Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2035Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Description

本発明は、マルチプロセシング・システムのプロセッサエラーを扱うための方法と装置に関し、特に、プロセッサ・エラーが発生するときに、マルチプロセシング・システムのサブ処理ユニットの中のプロセッサ・タスクを再割り当てする方法と装置に関する。
リアルタイム処理、マルチメディアのアプリケーションは、ますます重要になっている。これらのアプリケーションは、例えば毎秒何千メガビットものデータなど、極めて速い処理速度を必要とする。1つの処理ユニットが速い処理速度が可能な間、それらは一般にマルチプロセッサ・アーキテクチャの処理速度に適合することができない。実際に、マルチプロセッサ・システムにおいて、複数のサブプロセッサは、所望の処理結果を達成するためにパラレルに、または少なくとも連携して演算することができる。
マルチプロセシング技術を使用することができるコンピュータおよび計算装置のタイプは、広範囲にわたる。パソコン(PC)およびサーバに加えて、これらの計算装置は、移動電話、モバイル・コンピュータ、パーソナル携帯情報機器(PDA)、セットトップボックス、デジタル・テレビおよび他の多くを含む。
マルチプロセシング・システムの設計上重要なことは、どのように1つのサブ処理ユニットが処理エラーを示す時を管理するかである。実際に、処理エラーは、マルチプロセシング・システムの全体的なパフォーマンスに影響を及ぼす可能性があり、逆にリアルタイム処理、マルチメディア、ユーザによる経験に影響を与える可能性がある。所望の結果を達成するために、1つのサブプロセッサの結果が他のサブ処理ユニットによって使われることになっているときに、これは特にあてはまる。
エラー・コレクション・コード(ECC)・エラー、パリティ・エラー、プロセッサ・ハングアップ、その他のようなハードプロセッサ・エラーは、致命的エラーまたは修復可能なエラーとして特徴づけられる。致命的エラーは、オペレーティング・システム・エラー、カーネル・エラー、その他によって起こる可能性があり、一方、修復可能なエラーは、一般にオペレーティング・システムエラーまたはカーネル・エラーを含まない。修復時に最初から所定のサブ処理を再起動し、およびプロセッサ・タスクを再実行しなければならないことを要求するであろうケースのように、修復可能なエラーが発生するときに、いかなるリアルタイム処理期限または処理要求にも反することなくプロセッサ・タスクを実行し続けることができることが望ましい。本発明までは、これは可能でなかった。
したがって、本技術において、ハードプロセッサ・エラーの逆影響を減少させる効果的なマルチプロセシングを達成する新規な方法と装置の必要性がある。
1つ以上の本発明の態様において、エラー処理方法は、メイン処理ユニットに関連する各々のサブ処理ユニットによって実行されるように割り当てられたプロセッサ・タスクおよび関連するプロセッサ負荷をモニタすること、サブ処理ユニットの所定の1つに処理エラーが起こったかどうかを検出すること、所定のサブ処理ユニットのプロセッサ負荷および関連サブ処理ユニットのプロセッサ負荷に基づいて、すべての所定のサブ処理ユニットのプロセッサ・タスクを、メイン処理ユニットに関連する他のサブ処理ユニットを含む、1つ以上の関連サブ処理ユニットに再割り当てすること、を含む。また、本方法は、(i)シャットダウンすること、(ii)所定のサブ処理ユニットを再起動すること、の少なくとも1つを含むことができる。
本方法は、更に、少なくとも1つのサブ処理ユニットが、実質的に負荷がかけられず、所定のサブ処理ユニットからいくつかのまたはすべてのプロセッサ・タスクを受信するようなサブ処理ユニットの中でプロセッサ・タスクを割り当てることを含むことができる。更に、本方法は、いかなるプロセッサ・タスクもスタンバイ状態にするようにスケジューリングしない、1つ以上の負荷がかけられていないサブ処理ユニットに命令することを含んでもよい。
本発明の更なる実施の形態において、関連サブ処理ユニットは、各々のメイン処理ユニットに関連する各々のグループの、1つ以上のサブ処理ユニットのグループを含んでもよい。各々のサブ処理ユニットのそれぞれのグループおよび関連するメイン処理ユニットは、1セットのマルチプロセシング・ユニットの一部であってもよく、各々のサブ処理ユニットのグループおよびメイン処理ユニットは、1つ以上の他の各々のサブ処理ユニットおよび関連するメイン処理ユニットと共通データ・バスを共有する。
代わりにまたは加えて、サブ処理ユニットのそれぞれのグループの各々および関連するメイン処理ユニットは、独立のマルチプロセシング・ユニットであってもよく、各々のサブ処理ユニットのグループおよびメイン処理ユニットは、他のいかなるサブ処理ユニットのグループおよび関連するメイン処理ユニットと共通データ・バスを共有しない。更に、サブ処理ユニットのそれぞれのグループの各々および関連するメイン処理ユニットは、少なくとも分散マルチプロセシング・ユニットの一部であってもよく、メイン処理ユニットおよびサブ処理ユニットの少なくともいくつかは、相互に離れて配置される。
マルチプロセシング・ユニット、独立のマルチプロセシング・ユニットおよび分散マルチプロセシング・ユニットは、(i)共通のまたは異なる回路基板上、(ii)共通のまたは異なるプロダクト、(iii)共通のまたは異なる位置、の少なくともいずれかに配置されてもよい。
この点に関しては、本方法は、所定のサブ処理ユニットと処理結果を共有するために、所定のサブ処理ユニットと1つ以上のサブ処理ユニットの間に必要な通信バンド幅および通信レイテンシを含む、通信要求を決定することを含むことができる。そして、本方法は、更に、所定のサブ処理ユニットのタスクの再割り当ては通信要求に基づくことを含むことができる。
本方法は、更に、プロセッサ・タスク割り当てられる可能性のある、所定のサブ処理ユニットと1つ以上の関連サブ処理ユニットと処理結果を共有するために1つ以上のサブ処理ユニットの間に存在する通信バンド幅および通信レイテンシを含む通信コストを決定することを含むことができる。このように、所定のサブ処理ユニットのタスクの再割り当てが、更に通信要求および通信コストとの比較に基づいていてもよい。
好ましくは、通信要求および通信コストは、(i)共通の回路基板上の2つのサブ処理ユニットの間の1つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、(ii)異なる回路基板上の2つのサブ処理ユニットの間の1つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、(iii)共通のプロダクトの2つのサブ処理ユニットの間の1つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、(iv)異なるプロダクトの2つのサブ処理ユニットの間の1つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、(v)共通の位置の異なるプロダクトの2つのサブ処理ユニットの間の1つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、(vi)各々が異なる位置の異なるプロダクトの2つのサブ処理ユニットの間の1つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、の少なくとも1つを含む。
本発明の別の実施の形態において、マルチプロセシング・ユニットおよび独立のマルチプロセシング・ユニットの少なくとも1つは、管理部と通信してもよい。管理部は、好ましくは、(i)関連サブ処理ユニットのプロセッサ負荷を表すパフォーマンス情報、(ii)マルチプロセシング・ユニットおよび独立のマルチプロセシング・ユニットの中のどこに関連サブ処理ユニットが配置されるかを表す位置情報、(iii)処理結果を所定のサブ処理ユニットと共有するために、プロセッサ・タスクが再割り当てされることができる関連サブ処理ユニットの1つおよび1つ以上のサブ処理ユニットの間に存在する通信バンド幅を表す通信情報および通信レイテンシ、の少なくとも1つを含むテーブルを含む。
この点に関しては、本方法は好ましくは、関連サブ処理ユニットのうちどれが所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるべきかを決定するためにテーブルを使用することを含む。本方法は、好ましくは、プロセッサ負荷、位置、通信バンド幅または関連サブ処理ユニットの中の通信レイテンシのいかなる変化にも応答してテーブルを更新することも含む。
本発明の別の実施の形態において、本方法は、所定のサブ処理ユニットと関連するメイン処理ユニットから、少なくとも、(i)所定のサブ処理ユニットのプロセッサ・タスクのプロセッサ負荷、(ii)所定のサブ処理ユニットの位置、(iii)所定のサブ処理ユニットの通信要求、のいずれかを含むクエリーを送信することを含むことができる。
その上、本方法は更に、関連サブ処理ユニットのうちどれが所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるべきかを決定するために、プロセッサ・タスクのプロセッサ負荷、位置および所定のサブ処理ユニットの通信要求の少なくとも1つを、テーブルの、パフォーマンス情報、位置情報および通信情報の少なくとも1つに適合させることを含むことができる。
本発明の1つ以上の更なる態様において、本発明の方法と装置は、関連サブ処理ユニットの使用に対するリース料金を得るために用いられてもよい。そして、マルチプロセシング・ユニット、独立のマルチプロセシング・ユニット、分散マルチプロセシング・ユニット、の少なくとも1つは、管理部と通信してもよく、管理部は、(i)使用のためにリースされることができる関連サブ処理ユニットの少なくとも1つの処理能力を表す利用可能情報、およびこのような関連サブ処理ユニットのプロセッサ負荷を表すパフォーマンス情報、(ii)リースされることができる関連サブ処理ユニットの使用に対するそれぞれの料金を表すコスト情報、(iii)リースされることができる関連サブ処理ユニットがマルチプロセシング・ユニット、独立のマルチプロセシング・ユニットおよび分散マルチプロセシング・ユニットの中でどこに配置されるかを表す位置情報、(iv)処理結果を所定の処理ユニットと共有するための、プロセッサ・タスクが再割り当てされることができるリースのための関連サブ処理ユニットの1つと、1つ以上のサブ処理ユニットとの間に存在する通信バンド幅および通信レイテンシを表す通信情報、の少なくとも1つを含むテーブルを含む。
テーブルは、リースのための関連サブ処理ユニットの間の、利用可能情報、コスト情報、位置情報または通信情報のいかなる変化にも応じて更新されることができる。好ましくは、テーブルは、リースのための関連サブ処理ユニットのうちどれが所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるべきかを決定するために用いられる。
クエリーは、所定のサブ処理ユニットに関連するメイン処理ユニットから管理部へ送られることができ、クエリーは、(i)所定のサブ処理ユニットのプロセッサ負荷、(ii)所定のサブ処理ユニットの位置、(iii)リースのための1つ以上の関連サブ処理ユニットから処理能力をリースするために受け入れられるコストを表すリース情報、(iv)通信要求、の少なくとも1つを含む。
好ましくは、リースのための関連サブ処理ユニットのうちどれが所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるべきかを決定するために、クエリーの、プロセッサ負荷、受け入れられるコスト、位置および通信要求の少なくとも1つは、テーブルの、利用可能情報、コスト情報、位置情報および通信情報の少なくとも1つと適合される。好ましくは、所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるときに、リースのための関連サブ処理ユニットは、その使用の料金を徴収することができる料金徴収部の1つ以上と関連する。
あるいは、最低料金を有するリースのための1つ以上の関連サブ処理ユニットが所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされることができるように、クエリーのプロセッサ負荷、受け入れられるコスト、位置および通信要求は、テーブルの利用可能情報、コスト情報、位置情報および通信情報と適合させられることができる。所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるときに、リースのための関連サブ処理ユニットは、その使用の料金を徴収することができる料金徴収部の1つ以上と関連していてもよい。
本発明の更なる1つ以上の態様において、プロセッサからプロセッサへの通信および転送は、管理部なしで達成されることができる。そして、所定のサブ処理ユニットに関連するメイン処理ユニットからの応答要求は、1つ以上の関連サブ処理ユニットから発信されることができる、通信情報は、1つ以上の通信要求に集積させられることができ、通信情報は、それらがメイン処理ユニットから1つ以上の関連サブ処理ユニットへ移動するとき、それぞれの通信要求によって発信されるいかなる通信インターフェースとも関連する通信レイテンシおよび通信バンド幅の少なくとも1つを表す、そして、処理結果を、集積された通信情報に基づいてプロセッサ・タスクが再割り当てされることができる所定のサブ処理ユニットおよび1つ以上の関連サブ処理ユニットと共有するために、少なくとも1つ以上のサブ処理ユニットの間に存在する通信コストの見積り計算が計算される。
好ましくは、1つ以上の応答要求は、コミュニケーション・ネットワーク上の伝送ができるネットワーク・データ・パケットの形態である。コミュニケーション・ネットワークは、インターネットおよび通信の他のいかなるネットワークの少なくとも1つであってもよい。
好ましくは、1つ以上の応答は、メイン処理ユニットで、1つ以上の関連サブ処理ユニットから受信する、そして、好ましくは、所定のサブ処理ユニットのプロセッサ・タスクは、応答要求に応答する1つ以上の関連サブ処理ユニットに再割り当てされる。
また、好ましくは、1つ以上の応答は、コミュニケーション・ネットワーク上の伝送ができるネットワーク・データ・パケットの形態である。
好ましくは、所定のサブ処理ユニットからの応答要求に応答する1つ以上の関連サブ処理ユニットへのアップリンク・データ・パスの通信コストが計算される。好ましくは、このような計算は、(i)それがメイン処理ユニットからそれぞれの関連サブ処理ユニットの1つへ移動するとき、各々のアップリンク・データ・パスのための応答要求によって発信されるそれぞれの通信インターフェイスと関連する通信レイテンシであって、それによって、各々のアップリンク・データ・パスの集計されたアップリンク通信レイテンシを得る、通信レイテンシを加算すること、(ii)各々のアップリンク・データ・パスのための最短通信バンド幅を得るために、それがメイン処理ユニットからそれぞれの関連サブ処理ユニットの1つへ移動するとき、各々のアップリンク・データ・パスのための応答要求によって発信されるそれぞれの通信インターフェイスと関連する通信バンド幅を、各々のアップリンク・データ・パスのために比較すること、の少なくとも1つを含む。
好ましくは、所定のサブ処理ユニットのプロセッサ・タスクは、通信要求の比較および集計通信レイテンシと各々のアップリンク・データ・パスのための最短通信バンド幅との少なくとも1つに基づいて、通信要求に応答する1つ以上の関連サブ処理ユニットに割り当てられる。
また、好ましくは、付加的通信情報は、1つ以上の応答に集積させられる。付加的通信情報は、それらが1つ以上の関連サブ処理ユニットからメイン処理ユニットへ移動するとき、それぞれの応答によって発信されるいかなる通信インターフェイスとも関連する、通信レイテンシおよび通信バンド幅の少なくとも1つを表す、そして、好ましくは、通信コスト計算は、集積された通信情報および集積された付加的通信情報に基づいて計算される。
各々の応答は、それぞれの集積された付加的通信情報とともに集積された通信情報の両方を含んでも良い。集積された通信情報および集積された付加的通信情報は、1つ以上の通信要求に発信されるメイン処理ユニットに利用可能である。
また、所定のサブ処理ユニットと応答要求に応答する1つ以上の関連サブ処理ユニットとの間のアップリンク・データ・パスおよびダウンリンク・データ・パスの通信コストは計算されることができる。好ましくは、このような計算は、(i)それがメイン処理ユニットからそれぞれの関連サブ処理ユニットの1つへ移動するとき、各々のアップリンク・データ・パスのための応答要求によって発信されるそれぞれの通信インターフェイスと関連する通信レイテンシであって、それによって、各々のアップリンク・データ・パスの集計されたアップリンク通信レイテンシを得る、通信レイテンシを加算すること、(ii)各々のアップリンク・データ・パスのための最短通信バンド幅を得るために、メイン処理ユニットからそれぞれの関連サブ処理ユニットの1つへ移動するとき、各々のアップリンク・データ・パスのための応答要求によって発信されるそれぞれの通信インターフェイスと関連する通信バンド幅を、各々のアップリンク・データ・パスのために、比較すること、(iii)それがそれぞれの関連サブ処理ユニットの1つからメイン処理ユニットへ移動するとき、各々のダウンリンク・データ・パスのための応答によって発信されるそれぞれの通信インターフェイスと関連する通信レイテンシであって、それによって、各々のダウンリンク・データ・パスの集計されたダウンリンク通信レイテンシを得る、通信レイテンシを加算すること、(iv)各々のダウンリンク・データ・パスのための最短通信バンド幅を得るために、それがそれぞれの関連サブ処理ユニットの1つからメイン処理ユニットへ移動するとき、各々のダウンリンク・データ・パスのための応答によって発信されるそれぞれの通信インターフェイスと関連する通信バンド幅を、各々のダウンリンク・データ・パスのために、比較すること、の少なくとも1つを含む。
所定のサブ処理ユニットのプロセッサ・タスクは、通信要求と、各々のアップリンク・データ・パスのために集積されたアップリンク・データ通信レイテンシ、各々のダウンリンク・データ・パスのために集積されたダウンリンク・データ通信レイテンシ、各々のアップリンク・データ・パスのための最短通信バンド幅、各々のダウンリンク・データ・パスのための最短通信バンド幅、の少なくとも1つとの比較に基づいて、応答要求に応答する1つ以上の関連サブ処理ユニットに割り当てられることができる。
1つ以上の応答要求は、処理結果を所定のサブ処理ユニットと共有するために、メイン処理ユニットから1つ以上のサブ処理ユニットへ発信されることができる。それぞれの通信要求によって発信されるいかなる通信インターフェースにも関連する、通信レイテンシと通信バンド幅の少なくとも1つを表す付加的通信情報は、好ましくは、処理結果を所定のサブ処理ユニットと共有するために、それらがメイン処理ユニットから1つ以上のサブ処理ユニットへ移動するときに集積される。通信コストは、集積された通信情報および集積された付加的通信情報のいかなる違いにも基づいて計算されることができる。
好ましくは、処理結果を所定のサブ処理ユニットと共有するため、所定のサブ処理ユニットと、応答要求に応答する1つ以上の関連サブ処理ユニットの間、および所定のサブ処理ユニットおよび1つ以上のサブ処理ユニットの間のアップリンク・データ・パスおよびダウンリンク・データ・パスの通信コストは計算される。好ましくは、このような計算は、(i)それがメイン処理ユニットから、それぞれの関連サブ処理ユニットの1つへ、および/または所定のサブ処理ユニットのプロセッサ・タスクの結果を受信するために1つ以上のサブ処理ユニットへ移動するとき、各々のアップリンク・データ・パスのための応答要求によって発信されるそれぞれの通信インターフェイスと関連する通信レイテンシであって、それによって、各々のアップリンク・データ・パスの集計されたアップリンク通信レイテンシを得る、通信レイテンシを加算すること、(ii)各々のアップリンク・データ・パスのための最短通信バンド幅を得るために、メイン処理ユニットからそれぞれの関連サブ処理ユニットの1つへ、および/または所定のサブ処理ユニットのプロセッサ・タスクの結果を受信するために1つ以上のサブ処理ユニットへ移動するとき、各々のアップリンク・データ・パスのための応答要求によって発信されるそれぞれの通信インターフェイスと関連する通信バンド幅を、各々のアップリンク・データ・パスのために、比較すること、(iii)それがそれぞれの関連サブ処理ユニットの1つからメイン処理ユニットへ、および/または所定のサブ処理ユニットのプロセッサ・タスクの結果を受信するために1つ以上のサブ処理ユニットへ移動するとき、各々のダウンリンク・データ・パスのための応答によって発信されるそれぞれの通信インターフェイスと関連する通信レイテンシであって、それによって、各々のダウンリンク・データ・パスの集計されたダウンリンク通信レイテンシを得る、通信レイテンシを加算すること、(iv)各々のダウンリンク・データ・パスのための最短通信バンド幅を得るために、それがそれぞれの関連サブ処理ユニットの1つからメイン処理ユニットへ、および/または所定のサブ処理ユニットのプロセッサ・タスクの結果を受信するために1つ以上のサブ処理ユニットへ移動するとき、各々のダウンリンク・データ・パスのための応答によって発信されるそれぞれの通信インターフェイスと関連する通信バンド幅を、各々のダウンリンク・データ・パスのために、比較すること、の少なくとも1つを含む。
所定のサブ処理ユニットのプロセッサ・タスクは、通信要求と、各々のアップリンク・データ・パスのために集積されたアップリンク・データ通信レイテンシ、各々のダウンリンク・データ・パスのために集積されたダウンリンク・データ通信レイテンシ、各々のアップリンク・データ・パスのための最短通信バンド幅、各々のダウンリンク・データ・パスのための最短通信バンド幅、の少なくとも1つとの比較に基づいて、応答要求に応答する1つ以上の関連サブ処理ユニットに割り当てられることができる。
予約要求は、所定のサブ処理ユニットと関連するメイン処理ユニットから所定のサブ処理ユニットおよび所定のサブ処理ユニットのプロセッサ・タスクが再割り当てされる1つ以上の関連サブ処理ユニットの間の通信に関連する1つ以上のアービタへ発信されてもよい。そこで予約要求は、1つ以上のバス・アービタに、(i)再割り当てされたプロセッサ・タスクを実行すること、(ii)このような結果を受信するために1つ以上の他のサブ処理ユニットにプロセッサ・タスクの結果を送信すること、の少なくとも1つのために通信バンド幅を予約させる。その後、所定のサブ処理ユニットに関連するメイン処理ユニットから1つ以上のバス・アービタへ、予約クリア要求が発信されることができ、予約クリア要求は、1つ以上のバス・アービタに、通信バンド幅の予約をクリアさせる。
応答は、好ましくは、集積された情報、および応答を発信している関連サブ処理ユニットのそれぞれのプロセッサ負荷を表すパフォーマンス情報の少なくとも1つを含む。このように、所定のサブ処理ユニットのプロセッサ・タスクのプロセッサ負荷、応答を発信する関連サブ処理ユニットのためのそれぞれのプロセッサ負荷、通信要求、集積された情報、との比較に基づいて、所定のサブ処理ユニットのプロセッサ・タスクの再割り当てのために、1つ以上の関連サブ処理ユニットが選択されることができる。
1つ以上の本発明の更なる態様におけるある装置は、各々がプロセッサ・タスクを実行するように操作可能な、複数のサブ処理ユニット、メイン処理ユニット、を含む。メイン処理ユニットは、(i)それぞれのサブ処理ユニットによって実行されるように割り当てられる、プロセッサ・タスクおよび関連するプロセッサ負荷をモニタすること、(ii)処理エラーがサブ処理ユニットの所定の1つに起こったかどうかを検出すること、(iii)所定のサブ処理ユニットのプロセッサ・タスクのプロセッサ負荷、および関連サブ処理ユニットのプロセッサ負荷に基づいて所定のサブ処理ユニットのプロセッサ・タスクのすべてを、メイン処理ユニットに関連する他のサブ処理ユニットを含む1つ以上の関連サブ処理ユニットに割り当てること、を操作可能である。
メイン処理ユニットは、更に、(iv)所定のサブ処理ユニットに、シャットダウンコマンドを発信すること、およびリブートコマンドを発信すること、の少なくとも1つを操作可能でもよい。
メイン処理ユニットは、離れて配置される形態でもよく、または1つ以上のサブ処理ユニットの一部に配置されてもよい。更に、1つ以上のサブ処理ユニットは、相互に離れて配置されることができる。加えて、サブ処理ユニットは、実質的に異種のコンピュータ・アーキテクチャまたは同種のコンピュータ・アーキテクチャを使用することができる。
少なくとも1つのサブ処理ユニットは、実質的に負荷がなくされ、所定のサブ処理ユニットからいくつかのまたはすべてのプロセッサ・タスクを受信するように利用可能であるように、メイン処理ユニットは、好ましくは、更にサブ処理ユニットの間のプロセッサ・タスクを割り当てるように操作可能である。加えて、メイン処理ユニットは、更に、(低い電力消費状態であってもよい)スタンバイ状態へいかなるプロセッサ・タスクをも実行するようスケジューリングされていない1つ以上の負荷されていないサブ処理ユニットに命令するように操作可能でもよい。
例えば、サブ処理ユニットは、(i)電力供給割込回路、(ii)各々がパワーオフ・コマンドに応答して所定のサブ処理ユニットをスタンバイ状態とするように操作可能なクロック割込回路、の少なくとも1つを含むことができる。サブ処理ユニットの各々は、好ましくは、電力供給および電力供給割込回路を含む。電力供給割込回路は、好ましくは、所定のサブ処理ユニットをスタンバイ状態とするために、パワーオフ・コマンドに応答して、電力供給をシャットダウンするように操作可能である。
また、本装置は、好ましくは、各々のグループはそれぞれのメイン処理ユニットと関連する、1つ以上のサブ処理ユニットのそれぞれのグループを含む。関連サブ処理ユニットは、サブ処理ユニットのそれぞれのグループの1つ以上を含むことができる。
サブ処理ユニットのそれぞれのグループおよび関連するメイン処理ユニットの各々は、1セットのマルチプロセシング・ユニットの一部であってもよい。サブ処理ユニットのそれぞれのグループおよびメイン処理ユニットは、共通バスを、1つ以上の他のサブ処理ユニットのそれぞれのグループおよび関連するメイン処理ユニットと共有する。加えてまたは代わって、サブ処理ユニットのそれぞれのグループおよび関連するメイン処理ユニットの各々は、独立のマルチプロセシング・ユニットであってもよく、サブ処理ユニットのそれぞれのグループおよびメイン処理ユニットは、共通バスを、他のいかなるサブ処理ユニットのグループおよび関連するメイン処理ユニットとも共有しない。更に、サブ処理ユニットのそれぞれのグループおよび関連するメイン処理ユニットの各々は、少なくとも分散マルチプロセシング・ユニットの一部であってもよく、メイン処理ユニットおよびサブ処理ユニットの少なくともいくつかは、相互に離れて配置される。
マルチプロセシング・ユニット、独立のマルチプロセシング・ユニットおよび分散マルチプロセシング・ユニットは、(i)共通のまたは異なる回路基板上、(ii)共通のまたは異なるプロダクト、(iii)共通のまたは異なる位置、の少なくとも1つに配置されてもよい。
メイン処理ユニットは、更に、処理結果を所定のサブ処理ユニットと共有するために、所定のサブ処理ユニットと1つ以上のサブ処理ユニットとの間で必要とされる、通信バンド幅および通信レイテンシを含む通信要求を決定するように操作可能である。メイン処理ユニットは、更に、所定のサブ処理ユニットのタスクの再割り当てが通信要求に基づくように操作可能でもよい。
また更に、メイン処理ユニットは、通信バンド幅および処理結果を所定のサブ処理ユニットと共有するための1つ以上のサブ処理ユニットおよびプロセッサ・タスクが再割り当てされることができる1つ以上の関連サブ処理ユニットの間に存在する通信レイテンシを含む、通信コストを決定するように操作可能でもよい。また、メイン処理ユニットは、所定のサブ処理ユニットのタスクの再割り当てが通信要求および通信コストの比較に基づくように操作可能でもよい。
本発明の方法と同様に、通信要求および通信コストは、(i)共通の回路基板上の2つのサブ処理ユニットの間の1つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、(ii)異なる回路基板上の2つのサブ処理ユニットの間の1つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、(iii)共通のプロダクトの2つのサブ処理ユニットの間の1つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、(iv)異なるプロダクトの2つのサブ処理ユニットの間の1つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、(v)共通の位置の異なるプロダクトの2つのサブ処理ユニットの間の1つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、(vi)異なるプロダクト(異なる位置の各々)の2つのサブ処理ユニットの間の1つ以上のデータ通信インターフェースのバンド幅およびレイテンシ、の少なくとも1つを含むことができる。
更に、2つのサブ処理ユニットの間の1つ以上データ通信インターフェースは、(i)イントラサブ処理ユニット入出力バスインターフェース、(ii)インターサブ処理ユニット入出力バスインターフェース、(iii)ファブリック交換相互接続、(iv)ネットワーク・インターフェース・カード、(v)データ・ネットワーク、の少なくとも1つを含む。
また、本装置は、好ましくは、マルチプロセシング・ユニットおよび独立のマルチプロセシング・ユニットの少なくとも1つと通信する管理部を含む。管理部は、好ましくは、(i)関連サブ処理ユニットのためのプロセッサ負荷を表すパフォーマンス情報、(ii)マルチプロセシング・ユニットおよび独立のマルチプロセシング・ユニットの中に配置された関連サブ処理ユニットがどこにあるかを表す位置情報、(iii)処理結果を所定のサブ処理ユニットと共有するために、プロセッサ・タスクが1つ以上のサブ処理ユニットを再割り当てされることができる1つ以上の関連サブ処理ユニットの間に存在する、通信バンド幅および通信レイテンシを表す通信情報、の少なくとも1つを有するテーブルを含む。
管理部は、好ましくは、関連サブ処理ユニットの中の、プロセッサ・タスクのプロセッサ負荷、位置、通信バンド幅または通信レイテンシ、のいかなる変化にも応答して、テーブルを更新するように操作可能である。また、管理部は、好ましくは、関連サブ処理ユニットのうちどれが所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるべきかを決定するために、テーブルを使用するように操作可能である。
所定のサブ処理ユニットに関連するメイン処理ユニットは、好ましくは、管理部にクエリーを送るように操作可能であり、クエリーは、(i)所定のサブ処理ユニットのプロセッサ・タスクのプロセッサ負荷、(ii)所定のサブ処理ユニットの位置、(iii)所定のサブ処理ユニットの通信要求、の少なくとも1つを含む。
また、管理部は、好ましくは、関連サブ処理ユニットのうちどれがプロセッサで再割り当てされるべきかを決定するために、所定のサブ処理ユニットの、プロセッサ・タスクのプロセッサ負荷、位置、通信要求の少なくとも1つを、テーブルの、パフォーマンス情報、位置情報、および通信情報の少なくとも1つに適合させるように操作可能である。
他の態様、特徴および本発明の効果は、添付の図面とともに本願明細書における説明から、当業者にとって明らかである。
説明のため、現在適した図面に示され、理解される形態がある。しかしながら、本発明は、示される簡潔な装置および機器に限られない。
図面に関して、数字が要素のように表すように、本発明におけるマルチプロセシング・システム100が図1に表される。マルチプロセシング・システム100は、バス108の上の共有メモリ106(例えばDRAM)に連結する複数のプロセッサ102(いかなる数も、使われることができる)を含む。なお、共有DRAMメモリ106は要求されない(そして、このように、点線に示される)。実際に、1つ以上の処理ユニット102には、それ自身のメモリ(図示せず)を使用でき、共有メモリ106を必要としない。
プロセッサ102の1つは、好ましくは、メイン処理ユニット(例えば処理ユニット102A)である。他の処理ユニット102は、好ましくは、複数のサブ処理ユニット(SPUs)(例えば処理ユニット102B、102C、102D、その他)である。処理ユニット102は、既知のコンピュータ・アーキテクチャのいずれかを使用して行うことができる。処理ユニット102の全てが、同じアーキテクチャを使用して提供される必要があるというわけではない、実際に、それらは異種または同種の構成であってもよい。演算において、サブ処理ユニット102B−Dがこれらのデータおよびアプリケーションの処理を並行しておよび独立に実行するように、メイン処理ユニット102Aは、サブ処理ユニット102B−Dによって、データおよびアプリケーションの処理をスケジューリングし、編成する。
なお、例えば、同じチップ、同じパッケージ、同じ回路基板、同じプロダクトにおいて、メイン処理ユニット102Aが、サブ処理ユニット102B−Dに関して、局所的に配置されていてもよい。あるいは、例えば異なるプロダクトで、メイン処理ユニット102Aは、サブ処理ユニット102B−Dから離れて配置されることができる。そして、それはバス、コミュニケーション・ネットワーク(例えばインターネット)等を通じて連結されることができる。同様に、サブ処理ユニット102B−Dは、相互に局所的にまたは離れて配置されることができる。
ときには、サブ処理ユニット102B−Dの1つ以上は、ハードプロセッサ・エラー(例えばオペレーティング・システム・エラーまたはカーネル・エラーを含まない修復可能なエラー)を示す可能性がある。このために、メイン処理ユニット102Aは、好ましくは、最初からサブ処理ユニット102B−Dによって(エラーの前に)実行されたプロセッサ・タスクを再実行する必要なくプロセッサ・タスクを継続実行することを可能にする他の管理機能を実行するように操作可能である。好ましくは、メイン処理ユニット102Aの管理の機能は、リアルタイム(および/またはマルチメディア)処理対象が、サブ処理ユニット102B−Dの1つ以上における修復可能なエラーの場合にも適合されることを確実とするため操作する。
これらの更なる管理の機能は、それぞれのサブ処理ユニット102B−Dによって実行されるように割り当てられるプロセッサ・タスク(および/またはそれらのタスクに関連するプロセッサ負荷)をモニタすることを含む。また、メイン処理ユニット102Aは、処理エラーがサブ処理ユニットの所定の1つに起こったかどうかを検出することができ、1つ以上の関連サブ処理ユニットに、所定のサブ処理ユニットのプロセッサ・タスクの全てを再割り当てすることができる。この再割り当ては、好ましくは、所定のサブ処理ユニットのプロセッサ・タスクのプロセッサ負荷、および関連サブ処理ユニットのプロセッサ負荷に基づいて行われる。これらのおよび他の本発明の態様は、この説明において更に詳細に後述する。
本発明の再割り当て特徴に関する更なる詳細を議論する前に、好ましいコンピュータ・アーキテクチャの説明をこれから行う。このコンピュータ・アーキテクチャにおいて、マルチプロセシング・コンピュータシステムの全てのプロセッサは、共通のコンピューティング・モジュール(またはセル)から構成される。この共通のコンピューティング・モジュールは、一貫した構造を備えており、好ましくは、同じ命令セット・アーキテクチャを使用する。マルチプロセシング・コンピュータシステムは、1つ以上のクライアント、サーバ、PC、モバイル・コンピュータ、ゲーム機、PDA、セットトップボックス、電気器具、デジタル・テレビおよびコンピュータプロセッサを使用する他の機器の中で形成されることができる。
また、複数のコンピュータシステムは、必要ならばネットワークのメンバーであってもよい。一貫したモジュールの構造は、マルチプロセシング・コンピュータシステムによってアプリケーションおよびデータの効果的で、高速処理を可能し、ネットワークが使用される場合は、ネットワークの上のアプリケーションおよびデータの急速な伝送を可能にする。また、この構造は、さまざまなサイズおよび処理能力のネットワークのメンバーの構築、およびこれらのメンバーによる処理のためのアプリケーションの準備をシンプルにする。
基本的な処理モジュールは、プロセッサ要素(PE)である。この点に関して、基本的な処理モジュールまたはプロセッサ要素(PE)200のブロック図である図2を参照する。この図に示されるように、プロセッサ要素200は、I/Oインターフェース202、処理ユニット(PU)204、ダイレクト・メモリ・アクセス・コントローラ(DMAC)206、そして、複数のサブ処理ユニット208すなわちサブ処理ユニット208A、サブ処理ユニット208B、サブ処理ユニット208C、およびサブ処理ユニット208Dを含む。ローカル(または内部)プロセッサ要素のバス212は、処理ユニット204、サブ処理ユニット208、DMAC206およびメモリインターフェース210の中のデータおよびアプリケーションを送信する。ローカルプロセッサ要素のバス212は、例えば、従来のアーキテクチャを有することができ、またはパケットスイッチ・ネットワークとして提供されることができる。パケットスイッチ・ネットワークとしての実行は、より多くのハードウェアを必要とする一方、利用できるバンド幅を増やす。
プロセッサ要素200は、デジタル論理を実行するさまざまな方法を使用して構成されることができる。しかしながら、プロセッサ要素200は、好ましくは、シリコン基板上の相補型金属酸化物半導体(CMOS)を使用する単一の集積回路として構成される。基板のための別の材料は、ガリウム、ヒ化ガリウム・アルミニウム、および多様なドーパントを使用する他のいわゆるIII−B合成物を含む。また、プロセッサ要素200は、超電導材料、例えば単一磁束量子(RSFQ)論理を使用して行うこともできる。
プロセッサ要素200は、高バンド幅メモリ接続216を介して、ダイナミック・ランダム・アクセス・メモリ(DRAM)214と密接に関連する。DRAM214は、プロセッサ要素200のためのメインメモリとして機能する。DRAM214は、ダイナミック・ランダム・アクセス・メモリであるが、好ましくは、DRAM214は、他の手段、例えばスタティックRAM(SRAM)、磁気ランダム・アクセス・メモリ(MRAM)、光メモリ、ホログラフィック・メモリ、その他を使用して提供されることができる。DMAC206およびメモリインターフェース210は、DRAM214およびサブ処理ユニット208およびプロセッサ要素200の処理ユニット204の間のデータ転送を容易にする。なお、DMAC206および/またはメモリインターフェース210は、サブ処理ユニット208および処理ユニット204について、一体的にまたは離れて配置されてもよい。実際に、示されたような別々の構成の代わりに、DMAC206の機能および/またはメモリインターフェース210の機能は、1つ以上(好ましくは、全て)のサブ処理ユニット208および処理ユニット204の一部を構成してもよい。このように、DMAC206は点線に示される。
例えば、処理ユニット204は、データおよびアプリケーションの独立の処理が可能な標準のプロセッサであってもよい。演算において、処理ユニット204は、サブ処理ユニットによってスケジューリングし、データおよびアプリケーションの処理を編成する。サブ処理ユニットは、好ましくは、SIMD(Single Instruction/Multiple Data)プロセッサである。処理ユニット204の制御の下、サブ処理ユニットは、並行してまたは独立に、データおよびアプリケーションの処理を実行する。DMAC206は、処理ユニット204およびサブ処理ユニット208による、共有DRAM214に保存されるデータおよびアプリケーションへのアクセスを制御する。なお、処理ユニット204は、サブ処理ユニット208によってデータおよびアプリケーションの処理をスケジューリングし編成するメイン処理ユニットの役割を引き受けるサブ処理ユニット208の1つによって提供されてもよい。
このモジュールの構造において、特定のコンピュータシステムによって使用されるプロセッサ要素200の数は、そのシステムに必要とされる処理能力に基づく。例えば、サーバは、4つのプロセッサ要素200を使用することができ、ワークステーションは、2つのプロセッサ要素200を使用することができ、そして、PDAは1つのプロセッサ要素200を使用することができる。特定のソフトウェアセルを処理することに割り当てられるプロセッサ要素200のサブ処理ユニットの数は、セル中のプログラムおよびデータの複雑さおよび大きさに依存する。
図3は、サブ処理ユニット208の好ましい構造および機能を示す。サブ処理ユニット208は、ローカルメモリ250、レジスタ252、1つ以上の浮動小数点ユニット254、および1つ以上の整数ユニット256を含む。しかしながら、また必要な処理能力によって、多いまたは少ない数の浮動小数点ユニット254および整数ユニット256が使用されることができる。好ましい実施の形態において、ローカルメモリ250は256キロバイトのメモリを有し、レジスタ252の容量は128×128ビットである。浮動小数点ユニット254は、好ましくは、1秒につき320億の浮動小数点演算(32ギガフロップス)の速度で演算する、そして、整数ユニット256は、1秒につき320億の動作(32のギガオプス)の速度で演算する。
ローカルメモリ250は、キャッシュメモリであってもよく、なくてもよい。ローカルメモリ250は、好ましくは、スタティックRAM(SRAM)として、構成される。処理ユニット204は、処理ユニット204によって開始されたダイレクト・メモリ・アクセスのためのキャッシュ整合性サポートを要求してもよい。しかしながら、キャッシュ整合性サポートは、処理ユニット204によって開始されたダイレクト・メモリ・アクセスのため、または外部装置からのおよび外部装置へのアクセスのためには要求されない。
サブ処理ユニット208は、アプリケーションおよびデータをサブ処理ユニット208へおよびサブ処理ユニット208から発信するためのバス・インターフェース(I/F)258を更に含む。好ましい実施の形態において、バスI/F258は、示されるようにサブ処理ユニット208内に一体的に配置されることができ、または(図2に示されるように)外部に配置させることができることを表すため、点線で示されるDMAC206に連結する。一対のバス268A、268Bは、バスI/F258およびローカルメモリ250の間で、DMAC206を相互接続する。バス268A、268Bは、好ましくは、256ビット長である。
サブ処理ユニット208は、内部バス260、262および264を更に含む。好ましい実施の形態において、バス260は256ビットの幅を有し、ローカルメモリ250およびレジスタ252の間で通信を提供する。それぞれ、バス262および264は、レジスタ252と浮動小数点ユニット254との間、およびレジスタ252と整数ユニット256との間で、それぞれ通信を提供する。好ましい実施の形態において、レジスタ252から浮動小数点または整数ユニットへのバス264および262の幅は384ビットであり、浮動小数点ユニット254または整数ユニット256からレジスタ252へのバス264および262の幅は128ビットである。これらのユニットからレジスタ252までよりも大きな、レジスタ252から浮動小数点ユニット254または整数ユニット256へのこれらのバスの幅は、処理の間、レジスタ252からより大きいデータフローを収容する。最高3つのワードが、各々の算出のために必要とされる。しかしながら、各々の算出の結果は、通常1つのワードだけである。
これから参照する図4は、1つ以上の本発明の態様において、図1のマルチプロセシング・システム100または図2のマルチプロセシング・システム200によって実行されることができる処理ステップを示すフローチャートである。アクション300において、メイン処理ユニット204は、それぞれの関連サブ処理ユニット208によって送られるプロセッサ・タスクの処理負荷に関する情報を受信する。例えば、各々のサブ処理ユニット208は、時々その処理負荷および/またはプロセッサ・タスクをメイン処理ユニット204に報告するように操作可能であってもよく、または、メイン処理ユニット204がこのような情報の要求を発信してもよい。いずれにせよ、好ましくは、メイン処理ユニット204は、各々の関連サブ処理ユニット208のためのプロセッサ・タスクの処理負荷を決定するために必要な情報を受信する。
例えば、図2に関して、サブ処理ユニット208Aは、プロセッサ・タスクAおよびプロセッサ・タスクBを実行するようにスケジューリングされることができ、プロセッサ・タスクAは、0.1の関連するプロセッサ負荷を有し、プロセッサ・タスクBは、0.3の関連するプロセッサ負荷を有する。このように、サブ処理ユニット208Aは、0.6のために休止していてもよい。サブ処理ユニット208Bは、0.05、0.01、0.1および0.3のそれぞれの関連する負荷について、プロセッサ・タスクC、プロセッサ・タスクD、プロセッサ・タスクEおよびプロセッサ・タスクFを実行するようにスケジューリングされることができる。このように、サブ処理ユニット208Bは、0.54のために休止していてもよい。サブ処理ユニット208Cは、0.7および0.3のそれぞれの関連するプロセッサ負荷について、プロセッサ・タスクGおよびプロセッサ・タスクHを実行するようにスケジューリングされることができる。このように、サブ処理ユニット208Cは、休止していない。最終的に、サブ処理ユニット208Dは、0.15、0.05および0.7のそれぞれの関連するプロセッサ負荷について、プロセッサ・タスクI、プロセッサ・タスクJおよびプロセッサ・タスクKを実行するようにスケジューリングされる。このように、サブ処理ユニット208Dは、0.1のために休止していてもよい。
したがって、これらのプロセッサ・タスクおよび/またはプロセッサ負荷は、好ましくは、メイン処理ユニット204によって、その後の使用のためソフトウェアでテーブルにまとめられる。
アクション302で、困難で、修復可能なエラーのような、サブ処理ユニット208A−Dの1つ(例えばサブ処理ユニット208A)は、エラーを示すことができる。エラーは、好ましくは、検出されるかまたはメイン処理ユニット204に報告される。例えば、エラーの検出は、サブ処理ユニット208Aによるソフトウェアを使用するメイン処理ユニット204への報告によって達成されることができる。あるいは、エラーは、既知のハードウェア割り込み技術のいずれかを使用して検出されることができる。
アクション304において、メイン処理ユニット204は、好ましくは、影響を受けるサブ処理ユニット、すなわち、サブ処理ユニット208Aのために、パフォーマンス要求が何であるかについて決定する。これは、好ましくは、アクション300において得られたプロセッサ・タスクおよび/またはプロセッサ負荷に関する表の情報にアクセスすることによって達成される。(あるいは、アクション300が使用されない場合、プロセッサ・タスクおよび/またはプロセッサ負荷に関する情報は、エラーが発生した後に得られることができる)。ここまでで説明される図の例において、サブ処理ユニット208Aへのプロセッサ負荷は、タスクA+タスクB=0.4である。
アクション306において、メイン処理ユニット204は、好ましくは、サブ処理ユニット208B−Dの処理能力を決定する。また、これは、好ましくは、プロセッサ・タスクおよび/またはアクション300において得られたプロセッサ負荷に関連する表の情報にアクセスすることによって達成される。ここまで説明した実施の形態において、サブ処理ユニット208Bの処理能力は0.54であり、サブ処理ユニットの208Cの処理能力は0.0であり、サブ処理ユニット208Dの処理能力は0.1である。
参照する図5は、本発明のマルチプロセシング・システムの更なる処理ステップを示すフローチャートであり、処理フローは、好ましくは、アクション308へ進む。そこで、関連サブ処理ユニット208B−Dの1つ以上が、サブ処理ユニット208Aのニーズに適合する処理能力を有するかについての判定がなされる。判定の結果が否定的な場合、処理フローは、好ましくは、アクション310へ進み、通常のエラー取り扱い手順が実行される。例えば、サブ処理ユニット208Aは、リブート・プロセスに置かれてもよく、そして、処理タスクは再実行されることができる。
しかしながら、アクション308の判定の結果が肯定的な場合は、処理フローは、好ましくは、アクション312へ進む。そこで、メイン処理ユニット204は、好ましくは、サブ処理ユニット208Aからプロセッサ・タスクを扱う処理能力を有する関連サブ処理ユニット208B−Dの1つ以上に、影響を受けたサブ処理ユニット、すなわちサブ処理ユニット208Aのプロセッサ・タスクを再割り当てする。上述の実施の形態において、(合計0.4のプロセッサ負荷の)サブ処理ユニット208Aからのプロセッサ・タスクは、(0.54の処理能力を有する)サブ処理ユニット208Bに再割り当てされることができる。なお、プロセッサ・タスクはまた、(例えば、ロード・バランシング、その他のための)必要に応じて、関連サブ処理ユニット208B−Dの1つ以上に再割り当てされることができる。
アクション314において、影響を受けるサブ処理ユニット208Aは、好ましくは、シャットダウンされ、および/またはリブート・プロセスに置かれる。影響を受けるサブ処理ユニット208Aから、エラーを消去するための試みが実行されることが好ましいのと同様に、アクション314において、サブ処理ユニットが208Aがリブート・プロセスに置かれることが最も好ましい。リブートの後、処理フローは、好ましくは、アクション316(図6)へ進み、エラーが消去されるかどうかの判定がなされる。アクション316の判定の結果が否定的な場合、本処理は、好ましくは、アクション318へ進み、影響を受けるサブ処理ユニット208Aは、シャットダウン状態のままとなる。アクション316の判定の結果が肯定的な場合、処理フローは、好ましくは、アクション320へ進み、サブ処理ユニット208Aの状態は、それがプロセッサ・タスクを実行することができる関連サブ処理ユニットであることを示すために変化する。このステータスの変化は、好ましくは、メイン処理ユニット204に報告され、メイン処理ユニット204は、プロセッサ・タスクをサブ処理ユニット208Aに割り当てる(および/または再割り当てする)ことを考慮することができる。
本発明の更なる態様において、関連サブ処理ユニット208の少なくとも1つが充分に負荷され、困難で、修復可能なエラーを呈するサブ処理ユニット208のもう一方から、プロセッサ・タスクのいくつかまたは全部を受信するために利用可能であることが好ましい。この点に関しては、たとえサブ処理ユニット208がエラー時に最大に負荷されていても、関連サブ処理ユニットの1つ以上が、いかなるプロセッサ・タスクも実行するようにスケジューリングせず、影響を受けたサブ処理ユニット208から、プロセッサ・タスクの全てを受け入れるように利用可能としておくように、メイン処理ユニット204は、サブ処理ユニット208の中にプロセッサ・タスクを移動する。
これらの本発明の態様と関連して、図6とは別の方法を示すフローチャートである図7をこれから参照する。図7の処理フローチャートは、実質的に、(影響を受けるサブ処理ユニット208が関連サブ処理ユニットに状態を変える)アクション320の後、追加的なアクション322が実行されるという以外は、図6のものと同様である。特に、アクション322は、(それは、現在プロセッサ・タスクを実行するために利用できる)影響を受けるサブ処理ユニットを、いかなるプロセッサ・タスクも実行するようにスケジューリングされていないが、実際にその処理能力の全てが利用可能なスタンバイ・モードとすることを必要とする。サブ処理ユニット208がエラーとなった後、別のサブ処理ユニット208からのプロセッサ・タスクの再割り当てが望ましいとき、この利用可能性は、好ましくは、利用される。有利なことに、エラーが発生するときに、影響を受けるサブ処理ユニット208が実質的に最大に負荷されている場合においても、それらのプロセッサ・タスクの全ては、スタンバイ・モードのサブ処理ユニット208に再割り当てされることができる。
この点に関して、スタンバイ状態に入れられることができるサブ処理ユニット208の構造のブロック図である図8をこれから参照する。それがローカルメモリ250、レジスタ252、1つ以上の浮動小数点ユニット254および1つ以上の整数ユニット256を含むという点で、この構造は図3のサブ処理ユニット208と、実質的に類似している。しかしながら、サブ処理ユニット208はまた、好ましくは、電力供給割込回路290およびクロック割込回路292の少なくとも1つを含む。電力供給割込回路290が使用されるとき、サブ処理ユニット208に対する電力供給は外部電源294または内部電源296であってもよい。電力供給割込回路290は、好ましくは、ライン298上のコマンド信号に応答してサブ処理ユニット208をスタンバイ状態とするように操作可能である。
特に、命令を受けるときに、電力供給割込回路290は、好ましくは、内部電源296からサブ処理ユニット208の回路への電力の供給をシャットダウンまたは中断する。それによって、サブ処理ユニット208をシャットダウンし、ほとんど全く、または全く電力が引き出されない。あるいは、外部電源294が使用される場合、電力供給割込回路290は、好ましくは、ライン298上の命令に応答して、このような電力供給からサブ処理ユニット208への電力の供給を中断する。
同様に、クロック割込回路292が使用される場合、それは、好ましくは、システム・クロックが内部的にまたは外部的に発生であっても、サブ処理ユニット208用のシステム・クロックを中断することによってサブ処理ユニット208をスタンバイ状態とするように操作可能である。
図2および9に関し、多くのプロセッサ要素200は、高められた処理能力を提供するために、ともに接続されまたは実装されることができる。例えば、図9に示されるように、2つ以上のプロセッサ要素200A、200Bは、1セットのマルチプロセッサ装置を形成するために、例えば1つ以上のチップパッケージ内に、ともに実装されまたは接続されることができる。この構成は、広帯域エンジン(BE)と称してもよい。図9に示されるように、広帯域エンジン280は、2つのプロセッサ要素200B、200Aを含み、それはバス212の上のデータ通信のために相互接続される。追加的なバス216は、好ましくは、プロセッサ要素200A、200Bおよび共有DRAM214の間で通信ができるようにするために提供される。1つ以上のI/O(input/output)インターフェース202Aおよび202Bおよび外部バス(図示せず)は、広帯域エンジン280といかなる外部要素との間の通信をも提供する。広帯域エンジン280の各々のプロセッサ要素200Aおよび200Bは、上記図2において説明したサブ処理ユニット208によるアプリケーションおよびデータの並行および独立処理と同じように並行におよび独立に、データおよびアプリケーションの処理を実行する。
1つ以上の本発明の更なる態様において、関連サブ処理ユニットは、例えばシステム100(図1)、システム200(図2)および/またはシステム280(図9)のような、1つ以上の更なるマルチプロセシング・システムの1つ以上の更なるサブ処理ユニットを含むことができる。したがって、前述の説明から当業者にとって明らかであるように、関連サブ処理ユニットは、サブ処理ユニットの1つ以上のそれぞれのグループを含むことができ、各々のグループは、それぞれのメイン処理ユニットに関連する。図1のシステム100に関して、メイン処理ユニットはプロセッサ102Aであり、サブ処理ユニットのそれぞれのグループは、メイン処理ユニット102Aに関連するプロセッサ102B−Dを含む。同様に、図2のシステム200が使用される場合、関連サブ処理ユニットは、更なるメイン処理ユニット204に関連する更なるサブ処理ユニット208A−Dを含むことができる。また更に、図9のシステム280(広帯域エンジン)が使用される場合、関連サブ処理ユニットは、メイン処理ユニット204Aに関連する、追加的な2つ(またはそれ以上の)のサブ処理ユニットのグループ208A1−D1、およびメイン処理ユニット204Bに関連するサブ処理ユニットのグループ208A2−D2を含むことができる。
この点に関して、図9において、サブ処理ユニットのそれぞれのグループが共通バス212を共有することが示されているように、関連するサブ処理ユニットのグループ(およびそれぞれの関連するメイン処理ユニット)は、1セットのマルチプロセシング・ユニットの一部であってもよい。代わりにまたは加えて、関連サブ処理ユニットのそれぞれのグループの1つ以上は、例えば、図1または2において示されるように、独立のマルチプロセシング・ユニットであってもよく、このような共通バスは、サブ処理ユニットのそれぞれのグループの間に存在しない。更に、それぞれのグループの1つ以上の関連サブ処理ユニットは、少なくとも分散マルチプロセシング・ユニットの一部であってもよく、サブ処理ユニットの少なくともいくつかは、相互に離れて配置される。
図10に関して、1セットの一部または独立の構成の一部におけるそれぞれのマルチプロセシング・ユニットは、共通のまたは異なる回路基板に、共通のまたは異なるプロダクトに、および/または共通のまたは異なる位置に配置されていてもよい。図10に示されるように、(プロセッサ要素200のそれぞれのセットを含むことが起こり得る、)一対の広帯域エンジン280Aおよび280Bは、共通の回路基板400に配置される。広帯域エンジン280Aおよび280Bがこの例において示されるが、独立のマルチプロセシング・ユニット(例えば、単一のプロセッサ要素200を使用して)がまた考えられる。いずれにしても、それぞれのマルチプロセシング・ユニット280Aおよび280Bは、ブロードバンド・インターフェース(BIF)402を介して、相互接続される。
図11に関して、複数のマルチプロセシング・ユニット280A−Dは、異なる回路基板400に配置されていてもよく、一方、回路基板400は、単一プロダクト404に配置される。より詳しくは、マルチプロセシング・ユニット280Aおよび280Bは、共通の回路基板400Aに配置され、一方、マルチプロセシング・ユニット280Cおよび280Dは、異なる回路基板400Bに配置される。しかしながら、回路基板400Aおよび400Bは、単一プロダクト404内に配置される。このように、それぞれのマルチプロセシング・ユニット280A−D間のデータ通信は、イントラ回路基板部およびインター回路基板部を含むことができるブロードバンド・インターフェース(BIF)502を介して行われることができる。
上記のように、それぞれのマルチプロセシング・ユニットの関連サブ処理ユニット(例えば102B−Dおよび/または208A−D)は、異なるプロダクトに配置されていてもよい。したがって、このようなプロダクト(およびサブ処理ユニット)の中のデータ通信は、単一プロダクトの範囲内で、バスインターフェースおよび/またはブロードバンド・インターフェースより使用しなければならない。この点に関しては、これから図12を参照する。ここで、独立のマルチプロセシング要素208または複数のマルチプロセシング要素280(マルチプロセシング要素のセット)は、マルチプロセシング・システム500を形成するために複数のプロダクトに分配されることができる。(コンピュータおよび/または計算装置として提供される)システム500の要素またはメンバーは、好ましくは、ネットワーク504上の通信上にある。ネットワーク504は、インターネットまたは他のコンピュータ・ネットワークのような、ローカル・エリア・ネットワーク(LAN)、グローバル・ネットワークであってもよい。
ネットワーク504に接続しているメンバーは、例えば、クライアント・コンピュータ506、サーバ508、パーソナル携帯情報機器(PDA)510、512、デジタル・テレビ(DTV)、および有線またはワイヤレスのコンピュータおよび計算装置を含む。例えば、クライアント・コンピュータ506Aは、1つ以上のプロセッサ要素200または他の適切なマルチプロセシング・システムから構成されるラップトップ・コンピュータであってもよい。クライアント・コンピュータ506Bは、1つ以上のプロセッサ要素200または他の適切なマルチプロセシング・システムから構成されるデスクトップ・コンピュータ(またはセットトップボックス)であってもよい。更に、サーバは506Aは、好ましくは1つ以上のプロセッサ要素200、およびその他から構成される、(データベース機能を使用する)管理部であってもよい。
このように、マルチプロセシング・システム500の処理能力は、(例えば1つのプロダクトのように)局所的に配置され、または(例えば、多数のプロダクトのように)離れて配置される、複数のプロセッサ要素200に依存することができる。この点に関して、1つ以上の本発明の態様において、全体的なコンピュータ・ネットワークのブロック図である図13を参照する。また、プロセッサ要素200および/または(多数のプロセッサ要素でできている)広帯域エンジン280は、コンピュータ・システム500のための全体的な分散アーキテクチャを実装するために用いられてもよい。
システム500のサーバ508は、クライアント・コンピュータ506より多くのデータおよびアプリケーションの処理を実行するので、サーバ508は、(例えばプロセッサ要素200など)より多くのコンピュータ・モジュール、そしてクライアント・コンピュータ506を含む。他方、PDA510は、この例では、最少限の処理を実行する。このように、PDA510は、最も少ない数のプロセッサ要素200(例えば単一のプロセッサ要素200)を含む。DTV512は、実質的にクライアント・コンピュータ506のものとサーバ508のものとの間にある処理のレベルを実行する。このように、DTV512は、クライアント・コンピュータ506およびサーバ508のそれの間で、多くのプロセッサ要素を含む。
本発明の再割り当ての特徴の説明に戻る前に、分散マルチプロセシング・システム500に関する更なる詳細を行う。システム500の同種の構成は、適応性、処理速度、処理効率を促進する。システム500の各々のメンバーが、同じコンピューティング・モジュール、例えば1つ以上のプロセッサ要素200など(または若干の分数)を使用している処理を実行するので、データおよび/またはアプリケーションの処理を実行する特定のコンピュータまたは計算装置は、このようなデータおよびアプリケーションの処理がネットワークのメンバーで共有されることができるので、重要でない。データから成るソフトウェアセルおよびシステム500によって処理されるアプリケーションを独自に識別することによって、処理結果は、この処理が起こったところを問わず処理を要請しているコンピュータまたは計算装置に発信されることができる。この処理を実行しているモジュールが共通の構造を備えていて、共通の命令セット・アーキテクチャを使用するため、プロセッサの中の互換性を達成するソフトウェアの負荷された階層の計算負担は避けられる。このアーキテクチャおよびプログラミング・モデルは、例えば、リアルタイム、マルチメディアのアプリケーションを実行するために必要な処理速度を促進する。
システム500によって促進された処理速度と効率のさらなる強化のため、このシステムによって処理されるデータおよびアプリケーションは、独自に識別され、一様にフォーマット化されたソフトウェアセル502に実装されることができる。各々のソフトウェアセル502は、アプリケーションおよびデータの両方を含むかまたは含むことが可能である。また、各々のソフトウェアセルは、ネットワーク504およびシステム500の全体にわたってグローバルにセルを識別するために、IDを含む。このソフトウェアセル構造およびソフトウェアセル特有IDの均一性は、ネットワーク504のコンピュータまたは計算装置におけるアプリケーションおよびデータの処理を促進する。例えば、クライアント・コンピュータ506は、ソフトウェアセル502を構築することができるが、クライアント・コンピュータ506の限られた処理能力のため、ソフトウェアセル502を処理のためにサーバ508に発信することができる。したがって、ソフトウェアセル502は、ネットワーク504上の処理リソースの有効性を基礎として、処理のためにネットワーク504の全体にわたって移動することができる。
システム500のプロセッサおよびソフトウェアセル502の同種の構造は、今日の異機種間接続ネットワークの問題の多くを回避する。例えば、Javaバーチャル・マシン(Javaは登録商標)のようなバーチャル・マシンなどいかなる命令セットも使用するいかなるISA上のアプリケーションの処理を可能にするように要求する、非効率的なプログラム・モジュールは回避される。したがって、システム500は、従来のネットワークよりかなり効果的および効率的に、ブロードバンド処理を実行することができる。
上記のように、関連サブ処理ユニットを含むそれぞれのマルチプロセシング・ユニットは、共通のまたは異なる回路基板に、共通のまたは異なるプロダクトに、および/または共通のまたは異なる位置に、配置されていてもよい。それぞれのマルチプロセシング・ユニットが(図12および13にて図示したように)異なるプロダクトおよび/または異なる位置にで配置されるときに、追加的な通信インターフェース技術は、このようなマルチプロセシング・ユニットを相互接続するために使用されなければならない。この点に関して、異なる回路基板400Aおよび400Bに配置される一対のマルチプロセシング・ユニット280Aおよび280Bを示す図14をこれから参照する。各々の回路基板400Aおよび400Bは、ネットワーク504(例えばインターネット)を通じて相互接続する異なるプロダクトに配置される。この点に関しては、各々の回路基板400Aおよび400Bは、好ましくは、それぞれのマルチプロセシング・ユニット280をネットワーク504に連結するために、入出力インターフェース(IOIF)520、ファブリック交換相互接続522、およびネットワーク・インターフェース・カード(NIC)524、を含む。
サブ処理ユニットのそれぞれのグループの間の通信インターフェースのかなりの複雑さと量は、分散処理システムのスループットの処理ユニットに逆に影響を与える可能性があることから、関連するサブ処理ユニットに、異なる回路基板のおよび/または異なるプロダクトおよび位置のサブ処理ユニットのそれぞれのグループを含ませる能力を提供することは問題を呈する。これは、代わりに、システムのユーザのリアルタイム、マルチメディアの体験に逆に影響を与え得る。このように、関連サブ処理ユニットの中から、エラーから生じる再割り当てされたプロセッサ・タスクを受信するために、1つ以上のサブ処理ユニットを選択する際に注意が払われなくてはならない。実際に、通信バンド幅および通信レイテンシを含む、選択されたサブ処理ユニットに関連する通信コストは、許容されることができない。例えば、IOIF520A、ファブリック交換相互接続522A、NIC524A、インターネット504、NIC524B、ファブリック交換相互接続522B、IOIF520Bを含む、図14のマルチプロセシング・ユニット280Aおよびマルチプロセシング・ユニット280Bの間の通信インターフェースの複雑性は、プロセッサ・タスクがこのように離れたマルチプロセシング・ユニットに割り当てられた場合、スループット、速度、その他に関する処理要求が満たされることができない程度まで、通信バンド幅の制限を含むことができ、また、マルチプロセシング・ユニット280Aおよび280Bの間の通信レイテンシを増加させることができる。
この点に関して、本発明の方法と装置は、処理結果を共有するため、および/または所定のプロセッサ・タスクおよびプロセッサ・タスクが再割り当てされることができる1つ以上の関連サブ処理ユニットの結果を受信するため、通信バンド幅および通信レイテンシを含む、1つ以上のサブ処理ユニットの間で必要とされる通信要求を考慮することが好ましい。実際に、通信要求が適切に考慮されない場合、遠隔サブ処理ユニットに対するプロセッサ・タスクの再割り当ては、処理スループットおよび速度において、不要のおよび過剰な遅れという結果になる可能性がある。前述と関連して、1つ以上の本発明の更なる態様において、マルチプロセシング・システムによって実行されることができる処理ステップを示すフローチャートである図15を参照する。アクション550、552および554は、図4に関して前述のアクション300、302および304と、かなり類似している。したがって、簡潔さおよび明快さのため、これらのアクションの詳細はここでは繰り返さない。
影響を受けるサブ処理ユニット208のパフォーマンス要求が決定された後(アクション554)、処理フローは、アクション556に進む。そこで、エラー時または略エラー時に影響を受けたサブ処理ユニット208と関連する通信要求(例えばバンド幅およびレイテンシ要求)についての決定がなされる。より詳しくは、エラーの前に影響を受けるサブ処理ユニット208によって実行される予定の処理タスクの結果は、マルチプロセシング・システムの所望のリアルタイムおよび/またはマルチメディアの体験の目的を満たすためのいくつかの期限までに、1つ以上の他のサブ処理ユニット208によって予想されることができる。代わりにまたは加えて、1つ以上他のサブ処理ユニットは、それらの目的を満たすために、影響を受けるサブ処理ユニットの処理結果(またはこのような他のデータ)を共有し、さもなければ送信するように予想されることができる。このように、アクション556において、どのサブ処理ユニット208が再割り当てされたプロセッサ・タスクを受信すべきかについて決定するためによい検討がなされるように、このような通信要求が決定される。
アクション558において(図16)、関連サブ処理ユニット208のパフォーマンス能力および通信能力が決定される。より詳しくは、各々の関連サブ処理ユニット208への現在のプロセッサ負荷は、エラーを呈するサブ処理ユニット208から再割り当てされたプロセッサ・タスクを受信する候補を決めるために決定される。更に、通信バンド幅および通信レイテンシのような関連サブ処理ユニット208と関連する通信能力はまた、好ましくは、不十分な通信能力を呈するサブ処理ユニット208が候補から除外されることができるように決定される。
要求であろうとコストであろうと、通信レイテンシおよび/または通信バンド幅は、多くの場合、例えばシステム500(図12)のような全体システムのサブ処理ユニットの間に存在することができる通信インターフェイスと関連する重要な問題である。これらの通信インターフェイスは、イントラまたはインターサブ処理ユニット装置であってもよい、I/Oバスおよび/またはバスインターフェースを含むことができる。また、通信インターフェイスは、ファブリック交換相互接続、ネットワーク・インターフェースおよび/または他のネットワーク伝送装置を含むことができる。実際に、本発明により考慮される通信インターフェイスは、レイテンシを増加させまたは減少させることができ、および/またはバンド幅を増加させまたは減少させることができるサブ処理ユニットの間の通信経路におけるいかなる装置も含む。
当業者は、この説明から、分散マルチプロセシング・システム500(図12)の範囲が拡大するにしたがって、関連サブ処理ユニット208のパフォーマンス能力および通信能力の情報を得続けることが困難になることを認めている。したがって、例えば、図12に示されるサーバ508Aのように、関連サブ処理ユニット208を含むマルチプロセシング・ユニットは、管理部と通信してもよい。サーバ508Aは、好ましくは、関連サブ処理ユニット208のパフォーマンス能力および通信能力に関する情報を維持することと関連して利用されるテーブルを有するデータベースを含む。
この点に関して、好ましくはテーブル600に含まれるそのような情報を示す図17をこれから参照する。特に、テーブル600は、好ましくは、関連サブ処理ユニットのためのプロセッサ負荷を表すパフォーマンス情報を含む。この情報は、コラム602に含まれる。テーブル600も、好ましくは、プロセッサ・タスク再割り当てされることができる1つ以上のサブ処理ユニットと処理結果(データ)を所定のサブ処理ユニットと共有するための1つ以上の関連サブ処理ユニットとの間に存在する通信バンド幅および通信レイテンシを表す通信情報を含む。この通信情報は、コラム604に示される。
テーブル600も、好ましくは、関連サブ処理ユニットがシステムのマルチプロセシング・ユニットの中で配置されるところを表す位置情報を含む。この情報は、好ましくは、特定のプロダクトの識別子(コラム606)、プロダクト内の特定の回路基板の識別子(コラム608)、所定の回路基板上の例えば広帯域エンジンなどの特定のマルチプロセシング・ユニットの識別子(コラム610)、そして、所定のマルチプロセシング・ユニット内の特定のサブ処理ユニットの識別子(コラム612)を含む。サーバ508Aは、関連サブ処理ユニットを含むそれぞれのマルチプロセシング・ユニットから、パフォーマンス情報、通信情報および/または位置情報を受信することが好ましい。
この構成で、所定のマルチプロセシング・ユニットのメイン処理ユニットは、サーバ508Aにクエリーを一斉送信することができ、クエリーは、エラーが発生した(図16のアクション558A)サブ処理ユニットに関連するプロセッサ・タスクを完了する必要のある処理能力および通信能力を表示することを含む。次に、サーバ508Aは、エラー(図16のアクション558B)を呈したサブ処理ユニットから、再割り当てされたプロセッサ・タスクを受信する候補を決めるために、データベース(すなわちテーブル600)を検索することができる。
図18に関して、アクション560において、好ましくは、いずれかの関連サブ処理ユニットのパフォーマンス能力がクエリーに含まれるパフォーマンス要求に合うかどうかについて判定がなされる。判定の結果が否定的な場合、処理フローは、好ましくは、アクション562へ進み、クエリーへの応答は、再割り当てが実行できないことを表して発信される。アクション560の判定の結果が肯定的な場合、本方法は、好ましくは、アクション564へ進む。そこで、いずれかの関連サブ処理ユニットの通信能力がクエリーに含まれる通信要求に合うかどうかについて更なる判定がなされる。アクション564の判定の結果が否定的な場合、処理フローは、好ましくは、アクション566へ進み、クエリーへの応答は、プロセッサ・タスクの再割り当てが実行できないことを表して発信される。アクション564の判定の結果が肯定的な場合、処理フローは、好ましくは、アクション568へ進む。そこで、1つ以上の関連サブ処理ユニットは、(例えば、ネットワーク・アドレス、プロダクト番号、広帯域エンジン番号、マルチプロセシング・ユニット番号および/またはサブ処理ユニット番号によって)識別される。この情報は、影響を受けるサブ処理ユニットのプロセッサ・タスクが、選択された関連サブ処理ユニットに再割り当てされるように(アクション570)、好ましくは、クエリーを発信したマルチプロセシング・ユニットに提供される。
アクション572において、エラーを呈したサブ処理ユニットは、好ましくは、図5のアクション314に関して説明したように、シャットダウンされおよび/またはリブート・プロセスに置かれる。図6および/または図7において示される更なる処理ステップがまた考察される。
影響を受けるサブ処理ユニットのプロセッサ・タスクの再割り当ては、関連サブ処理ユニットのパフォーマンス能力および通信能力に基づくため、不十分な通信バンド幅および/または過度の通信レイテンシによる逆影響は避けられることができる。これは、ユーザのリアルタイム、マルチメディアの体験は、逆にプロセッサ・タスクのエラーおよび結果として生じる再割り当てによる影響を受けないという高い可能性を保証する。
1つ以上の本発明の更なる態様を示す図19および20をこれから参照する。特に、関連サブ処理ユニットは、(例えば、所有権、契約の義務、その他により)それと関連する1つ以上の本体が、所定のサブ処理ユニットのプロセッサ・タスクが再割り当てされるときに、その使用の料金を徴収することができるリース制度において利用されることができる。この点に関しては、サーバ508Aのテーブル600Aは、好ましくは、利用可能情報およびコスト情報を含む更なる情報と同様に、図17のテーブル600に含まれる情報を含む。利用可能情報は、好ましくは、少なくとも使用のためにリースされることができる関連サブ処理ユニットの処理能力を表す。例えば、処理能力は、1秒につき何百万もの指令(MIPS)またはその技術分野の他の既知量から定量化されることができる。コスト情報は、好ましくは、リースのための関連サブ処理ユニットを使用することに対するそれぞれの料金を表す。コスト情報は、好ましくは、例えば、MIP毎のドルまたは他のいかなる適切な定量化などの、料金の定量化を容易にする。サーバ508は、関連サブ処理ユニットを含むそれぞれのマルチプロセシング・ユニットから、(表中の他の情報と同様に)利用可能情報614および/またはコスト情報616を受信することが好ましい。
この構成では、所定のマルチプロセシング・ユニットのメイン処理ユニットは、サーバ508Aにクエリーを一斉送信することができ、クエリーは、エラーが発生したサブ処理ユニットに関連するプロセッサ・タスクを完了するために必要な処理能力および通信能力を表示することを含む(アクション558Aの図16)。また、クエリーは、所定のサブ処理ユニットのタスク、所定のサブ処理ユニットの位置、その他のプロセッサ負荷を含むことができる。なお、所定のサブ処理ユニットは、各々が異なる負荷を処理ユニットに配置する多数のプロセッサ・タスクを実行することができる。このように、「プロセッサ負荷」は、プロセッサ・タスクの細目と考えられることができ、または状況に応じたプロセッサ・タスクのグループに関係すると考えられることができる。また更にクエリーは、1つ以上の関連サブ処理ユニットから処理能力をリースすることの受け入れられるコストを示すリース情報を含むことができる。例えば、エラーが発生した所定のサブ処理ユニットと関連する本体は、1つ以上の関連サブ処理ユニットから処理能力をリースすることに料金を支払うことができるコストのいくつかの制限と目標を設定するように望むことができる。この情報は、好ましくは、リース情報内で何らかの方法で定量化される。
サーバ508Aのテーブル600Aは、好ましくは、関連サブ処理ユニットのうちどれが所定のサブ処理ユニットのプロセッサ・タスクによって再割り当てされるべきかを決定するために用いられる。このために、サーバ508Aは、エラーを呈したサブ処理ユニットから再割り当てされたプロセッサ・タスクを受信する候補を決めるために、データベース(すなわちテーブル600A)にアクセスする検索基準として、所定のサブ処理ユニットに関連するメイン処理ユニットにより発信されるクエリーを利用してもよい(図16のアクション558B)。
図20に関して、アクション580において、好ましくは、関連サブ処理ユニットのパフォーマンス能力のいずれかがクエリーに含まれるパフォーマンス要求を満たすかどうかの判定がなされる。判定の結果が否定的な場合、処理フローは、好ましくは、アクション582へ進み、クエリーへの応答は、再割り当てができないことを表して発信される。アクション580の判定の結果が肯定的な場合、本方法は、好ましくは、アクション584へ進む。そこで、関連サブ処理ユニットのいずれかの通信能力がクエリーの通信要求を満たすかどうかの更なる判定がなされる。アクション584の判定の結果が否定的な場合、処理フローは、好ましくは、アクション586へ進み、クエリーへの応答は、プロセッサ・タスクの再割り当てができないことを表して発信される。アクション584の判定の結果が肯定的な場合、処理フローは、好ましくは、アクション590へ進む。
アクション590において、関連サブ処理ユニットと関連するテーブル600Aのコスト情報616のいずれかがクエリーに含まれるリース情報に適合するかどうかの判定がなされる。この点に関しては、この判定は、コスト情報が、料金が1つ以上の関連サブ処理ユニットのプロセッサ・パワーをリースするために払われる料金以下を示すか同等であることを示すかを含意する。好ましくは、最低料金または複数の料金を有するリースのための1つ以上のサブ処理ユニットは、所定のサブ処理ユニットのプロセッサ・タスクの再割り当てを受信するために選択される。アクション590の判定の結果が否定的な場合、処理フローは、好ましくは、アクション592へ進み、クエリーへの応答は、プロセッサ・タスクの再割り当てができないことを表して発信される。アクション590の判定の結果が肯定的な場合、処理フローは、好ましくは、アクション594へ進む。
アクション594で、1つ以上の関連サブ処理ユニットは、(例えば、ネットワーク・アドレス、プロダクト、広帯域エンジン番号、マルチプロセシング・ユニット番号および/またはサブ処理ユニット番号によって)識別される。この情報は、好ましくは、影響を受けるサブ処理ユニットのプロセッサ・タスクがリースのために選択された関連サブ処理ユニットに再割り当てされることができるようにクエリーを発信したマルチプロセシング・ユニットに提供される。
アクション598において、エラーを呈したサブ処理ユニットは、好ましくは、図5のアクション314において前述されたように、シャットダウンされおよび/またはリブート・プロセスに置かれる。図6および/または図7において示される更なる処理ステップをまた考察する。
1つ以上の本発明の更なる態様において、図12−20において前述されたように、サーバ508Aを用いずに、所定のサブ処理ユニットから1つ以上の関連サブ処理ユニットまでプロセッサ・タスクの再割り当てを容易にすることが望ましい。実際に、ネットワーク上の処理ユニット間のリアルタイム通信を求める要求が増加するにしたがって、セントラル・サーバまたはサーバ508Aの使用は、行うことが困難になる可能性がある。このように、管理部を利用することなくプロセッサ・タスクのプロセッサに対するプロセッサ通信および再割り当てを達成することが望まれる可能性がある。
このために、処理エラーを呈した所定のサブ処理ユニットに関連するメイン処理ユニットは、好ましくは、1つ以上の関連サブ処理ユニットへ1つ以上の応答要求を発信するように操作可能である。応答要求の目的は、メイン処理ユニットが再割り当てオプションに関して決定をすることができるように、関連サブ処理ユニットから応答を得ることである。好ましくは応答から得られるそのような情報は、図17および19のテーブル600および600Aに含まれる情報の少なくともいくつかを含む。実際に、関連サブ処理ユニットは、直ちに応答要求を受信することができ、準備しそれに対して、少なくとも1つのパフォーマンス情報、通信情報、利用可能情報、コスト情報、プロダクト識別情報、回路基板識別情報、広帯域エンジン識別情報およびサブ処理ユニット識別情報を含む応答を送信することができる。
図21および22に関して、1つ以上のサブ処理ユニットに関連する特定のメイン処理ユニットによって、1つ以上の応答要求が発信されることができる方法、および1つ以上の応答が受信することができる方法に関して、実施の形態が示される。図21に示されるように、マルチプロセッサ・システム700は、同じまたは異なる近傍に配置されることができる複数の回路(および/またはプロダクトまたはシステム)702を含むことができる。いずれにせよ、各々の回路基板702A−Cは、1つ以上の処理要素の、プロセッサ要素0、プロセッサ要素1、プロセッサ要素2、その他を含むことができる。各々のプロセッサ要素は、全て特定のアプリケーションの緊急性に応じた図1の構成および/または図2の構成を利用して提供されることができる。それぞれのプロセッサ要素は、詳細は周知技術である、複数のバス、通信ブリッジおよび/または他の通信インターフェイス・ハードウェアおよびソフトウェアからなるネットワークにより相互接続する。しかしながら、なお、通信インターフェイスと認められる各々のバスおよび/または通信ブリッジは、レイテンシおよびバンド幅制約を含むパフォーマンス制限を有する。これらの通信制約(またはコスト)は、プロセッサ・タスクの再割り当てが判定されるときに考慮されなければならない。
回路基板702Aは、バス704Aおよびブリッジ706Aを含む。回路基板702Bは、バス704Bおよびブリッジ706Bを含む。回路基板702Cは、バス704Cおよびブリッジ706Cを含む。本発明の一実施の形態において、回路基板702Aおよび702Bのブリッジ706Aおよび706Bは、バス708Aを経由して相互接続することができる。同様に、回路基板702Cのブリッジ706Cは、バス708Bを経由して1つ以上の他のブリッジ(図示せず)に相互接続することができる。バス708Aおよび708Bは、同様にバス712を経由して相互接続するブリッジ710Aおよび710Bを経由して、相互接続することができる。
バス704Aは、1のレイテンシおよび10のバンド幅を表すことができる。このレイテンシおよびバンド幅は、単独でバス704Aに関連することができおよび/またはバス704Aおよびブリッジ706Aの組合せに関連することができると理解される。また、レイテンシおよびバンド幅値は、例示により与えられ、簡潔さおよび明快さのために非常に単純化されたものであると理解される。バス704Bおよびバス704Cは、両方とも2のレイテンシおよび8のバンド幅を示すことができる。バス708Aは、5のレイテンシおよび3のバンド幅を表すことができ、一方、バス708Bは、4のレイテンシおよび4のバンド幅を表すことができる。また更に、バス712は、20のレイテンシおよび1のバンド幅を表すことができる。
プロセッサ要素0内のサブ処理ユニットの1つ以上が処理エラーを呈した場合、プロセッサ要素0のメイン処理ユニットは、関連サブ処理ユニットへの1つ以上の応答要求を発信することができる。応答要求は、好ましくは、他のプロセッサ要素へのプロセッサ要素0およびサブ処理ユニットの間のネットワークを介した伝達が可能なネットワーク・データ・パケットの形態であってもよい。特に、応答要求は、プロセッサ要素2への、バス704Aを伝わって、ブリッジ706Aを通じて、バス708A上で、ブリッジ710Aを通じて、バス712上で、ブリッジ710Bを通じて、バス708B上で、ブリッジ706Cを通じて、バス704C上で、プロセッサ要素0によりプロセッサ要素2へ発信されることができる。なお、プロセッサ要素0からプロセッサ要素2への応答要求のこのデータ・パスは、アップリンク・データ・パスを基準としてもよい。
通信要求は、それらがネットワーク全体を移動するにしたがって、応答要求によって遭遇する通信インターフェイスと関連する通信情報を(例えば、レイテンシおよびバンド幅の形態で)集積することができる。上述の実施の形態において、プロセッサ要素0からプロセッサ要素2まで移動する応答要求において、応答要求は、好ましくは、バス704A、708A、712、708Bおよび704Cと関連するそれぞれのレイテンシおよびバンド幅パラメータを集積する。より詳しくは、図示するように、少なくとも応答要求がブリッジに706Aを発信するときまでに、(720において、)応答要求は、バス704Aと関連する1および10のレイテンシおよびバンド幅パラメータを集積する。その後、少なくとも応答要求が710Aブリッジを発信するときまでに、(722において、)応答要求は、バス708Aと関連する5および3のレイテンシおよびバンド幅パラメータを集積する。したがって、集積情報722は、1および10の組み合わせのレイテンシおよびバンド幅、5および3の組み合わせのレイテンシおよびバンド幅を含む。更に、少なくとも応答要求がブリッジ710Bを通過する時までに、(724において、)応答要求は、バス712と関連する20および1のレイテンシおよびバンド幅パラメータを集積する。したがって、その段階の集積情報724は、1と10、5と3、20と1の組み合わせのレイテンシおよびバンド幅を含む、その後、(726において、)応答要求は、バス708Bと関連する4および4のレイテンシおよびバンド幅パラメータを集積する。このように、集積情報726は1と10、5と3、20と1、4と4の組合せのレイテンシおよびバンド幅を含む、最後に、(728において、)応答要求は、バス704Cと関連する2および8のレイテンシおよびバンド幅パラメータを集積する。集積情報728は、このように1と10、5と3、20と1、4と4、2と8のレイテンシおよびバンド幅の組合せを含む。
1つ以上の本発明の態様において、プロセッサ要素0のサブ処理ユニットの1つからプロセッサ要素2のサブ処理ユニットの1つ以上へいかなるプロセッサ・タスクをも再割り当てすることに関連する通信コストの見積もりは、応答要求がネットワーク上でプロセッサ要素0からプロセッサ要素2へ移動したときに集積された通信情報(例えばレイテンシおよびバンド幅パラメータ)から少なくとも計算される。
前述したように、エラーを呈した所定のサブ処理ユニットのプロセッサ・タスクの結果は、プロセッサ要素0内のサブ処理ユニットの1つ以上により利用を意図されることができ、または、結果は、プロセッサ要素1のような他のプロセッサ要素内に位置するサブ処理ユニットの1つ以上により利用を意図されることができる。また、前述したように、処理結果または1つ以上のサブ処理ユニットの他のこのようなデータは、そのプロセッサ・タスクに作用するように影響を受けたサブ処理ユニットによって利用を意図されてもよい。
プロセッサ要素0(またはその逆に)、集積情報728内のサブ処理ユニットの1つ以上において所定のサブ処理ユニットのプロセッサ・タスクの結果が利用を意図されていたと仮定すると、プロセッサ要素0とプロセッサ要素2の間の通信インターフェースの通信コストを表すことは、実際、所定のサブ処理ユニットから結果を受信しまたはそれらへ結果を提供するためのプロセッサ要素0内のサブ処理ユニットの1つ以上、およびプロセッサ・タスクが再割り当てされることができるプロセッサ要素2内の関連サブ処理ユニットの1つ以上との間に存在する通信コストを決定するために直接利用できるであろう。
他方、例えばプロセッサ要素1(またはその逆)内のサブ処理ユニットの1つ以上において、プロセッサ要素0内の所定のサブ処理ユニットのプロセッサ・タスクの結果が利用を意図されたと仮定すると、ネットワークの通信インターフェースに関連する更なる情報は、プロセッサ・タスクがプロセッサ要素2に割り当てられた場合に全体の通信コストを決定することに有用であろう。この点に関しては、プロセッサ要素0のメイン処理ユニットは、好ましくは、1つ以上の応答要求を、所定のサブ処理ユニットから結果を受信しまたは所定のサブ処理ユニットへ結果を送信するよう意図されたサブ処理ユニットの1つ以上に発信する。この例では、プロセッサ要素0のメイン処理ユニットは、プロセッサ要素1および/またはその中のサブ処理ユニットへの応答要求を発信する。これは、プロセッサ要素1から通信情報を得る機会が以前に存在しなかったと仮定している。しかしながら、プロセッサ要素0およびプロセッサ要素1が以前に相互に(例えば、エラーが検出される前に、)通信している場合、プロセッサ要素0がプロセッサ要素0へ応答要求を発信することは必要でないかもしれない。したがって、要求が必要とされた場合、プロセッサ要素0からプロセッサ要素1へ移動する間に得られる集積された通信情報である集積情報730は、1と10、5と3、2と8の組合せのレイテンシおよびバンド幅を含む。
プロセッサ要素0の所定のサブ処理ユニットからプロセッサ要素2の1つ以上のサブ処理ユニットへプロセッサ・タスクを再割り当てすることに関連する通信コストの計算は、集積情報728および730のそれぞれの比較を含む。この実施の形態において、プロセッサ要素0のメイン処理ユニットは、少なくとも、プロセッサ要素1からプロセッサ要素2へのアップリンク・データにおいて集積されるレイテンシおよびバンド幅の組合せの見積もりを得るため、集積情報728および730のそれぞれのレイテンシおよびバンド幅の組合せの比較を実行してもよい。特に、集積情報728および730のそれぞれのレイテンシおよびバンド幅の組合せの並立した比較は、1と10、5と3の最初の2つの組合せが同一であることを表す。各々の集積の次のレイテンシおよびバンド幅の組合せ(集積情報728における20と1、集積情報730における2と8)は異なる。したがって、プロセッサ要素1からのプロセッサ要素2への推定されたアップリンク・データ・パス集積は、(集積情報730からの)2と8、(集積情報728からの)20と1、(集積情報728からの)4と4、(集積情報728からの)2と8である。
プロセッサ要素1からプロセッサ要素0、プロセッサ要素0からプロセッサ要素2、プロセッサ要素1からプロセッサ要素2へのアップリンク・データ・パスの通信コストは、それぞれの集積情報730、728から計算されることができ、および集積情報728および730を比較することから得られる集積が見積もられることができる。プロセッサ要素0とプロセッサ要素1の間のアップリンク・データ・パスの通信コストに関して、それぞれのレイテンシパラメータは、アップリンク・データ・パスの全体的なレイテンシを得るために集計される。これは、1+5+2=8の集積されたアップリンク通信レイテンシを与える。プロセッサ要素0とプロセッサ要素1の間のアップリンク・データ・パスのバンド幅パラメータは、最短バンド幅を決定するために求められる。この実施の形態においては、最短バンド幅の3は、バス708Aと関連する。このように、プロセッサ要素0とプロセッサ要素1の間のアップリンク・データ・パスの最短通信バンド幅は3である。
そして、これらの計算はまた、プロセッサ要素0とプロセッサ要素2の間、およびプロセッサ要素1とプロセッサ要素2の間のアップリンク・データ・パスに適用されることができる。プロセッサ要素0の所定のサブ処理ユニットのプロセッサ・タスクがプロセッサ要素2に割り当てられた場合、プロセッサ要素1とプロセッサ要素2の間のアップリンク・データは、処理システム全体のリアルタイム、マルチメディア・オブジェクトに応じるための通信要求を満たすことにおいて重要であるため、(所定のサブ処理ユニットから結果を受信する、または所定のサブ処理ユニットへ結果を送信する)プロセッサ要素1とプロセッサ要素2の間のアップリンク・データのレイテンシおよび最小バンド幅は、特に重要である。
1つ以上の本発明の更なる態様において、それぞれの重要なプロセッサ要素の間のアップリンク・データ・パスおよびダウンリンク・データ・パスの両方と関連する通信コストを計算することが望まれてもよい。例えば、プロセッサ要素0の所定のサブ処理ユニットのプロセッサ・タスクがプロセッサ要素2に再割り当てされるべきかについて判定されることになっている場合、アップリンク・データおよびダウンリンク・データは、(所定のサブ処理ユニットから結果を受信する、または所定のサブ処理ユニットへ結果を送信する)プロセッサ要素1とプロセッサ要素2の間であると考慮されるべきである。プロセッサ要素0のメイン処理ユニットは、アップリンク・データ・パスおよびダウンリンク・データ・パスと関連する通信情報(例えばレイテンシおよびバンド幅パラメータ)を受信することによって、これらのアップリンクおよびダウンリンク通信コストを求めることができる。好ましい実施の形態において、関連サブ処理ユニット(またはプロセッサ要素)によって開始プロセッサ要素(この実施の形態では、プロセッサ要素0)のメイン処理ユニットへ発信される1つ以上の応答は、それらがメイン処理ユニットへ移動するときに応答により遭遇する通信インターフェイスと関連するレイテンシおよびバンド幅に関係する更なる通信情報を集積するように操作可能である。
プロセッサ要素2から、プロセッサ要素2により発信される応答が移動するプロセッサ要素0へのダウンリンク・データ・パスを示す図22をこれから参照する。好ましい実施の形態において、応答はまた、応答要求がプロセッサ要素2によって受信するときに、得られた集積情報728を含むことができる。このように、応答がプロセッサ要素2からダウンリンク・データ・パスの上のプロセッサ要素0まで進行するにしたがって、集積情報750、752、754、756および760は、アップリンクの集積情報728およびダウンリンク集積情報の両方を含むことができる。このように、プロセッサ要素0(および/またはそれのメイン処理要素)によって受信する集積情報760は、アップリンクおよびダウンリンク・データ・パスレイテンシおよびバンド幅情報を含む。アップリンク・データ・パス集積は、レイテンシおよびバンド幅の組合せである1と10、5と3、20と1、4と4、2と8を含む。ダウンリンク・データ・パス集積は、レイテンシおよびバンド幅の組合せである2と8、4と4、20と1、5と3、1と10を含む。
なお、ここで説明した実施の形態において、アップリンクおよびダウンリンク・データ・パス集積は対称形である。しかしながら、本発明の更なる態様において、アップリンクおよびダウンリンク・データ・パス集積は、対称形ではなく、全てがネットワークの特異性に依存する。
上述のように、プロセッサ要素0のメイン処理ユニットは、好ましくは、エラーを呈した所定のサブ処理ユニットから結果を受信し、該所定のサブ処理ユニットへ結果を送信するように意図された1つ以上のサブ処理ユニットの間のアップリンクおよびダウンリンク・データ・パス集積を見積もることができる。アップリンク・データ・パスについて前述したものと同じアプローチは、ダウンリンク・データ・パスシナリオに関して使用されることができる。プロセッサ要素0によって計算されることができるプロセッサ要素1およびプロセッサ要素2に関するアップリンク・データ・パス集積およびダウンリンク・データ・パス集積を示す図23をこれから参照する。プロセッサ要素0のメイン処理ユニットは、好ましくは、集積されたアップリンク通信レイテンシ、アップリンク・データ・パスバンド幅、集積されたダウンリンク通信レイテンシ、プロセッサ要素1およびプロセッサ要素2の間のダウンリンク・データ・パスバンド幅を計算する。
これらの通信コストは、好ましくは、プロセッサ要素2へのプロセッサ・タスクの再割り当てがリアルタイム処理目標を達成するための通信要求を満たすかの判定において、プロセッサ要素0のメイン処理ユニットによって利用される。さまざまな本発明の態様において、所定のサブ処理ユニットのプロセッサ・タスクを再割り当てするためのいかなる数のオプションが、前述と同様の方法で求められることができるように、プロセッサ要素0のメイン処理ユニットがシステムの全体にわたって関連サブ処理ユニット(および/またはプロセッサ要素)から、多数の応答を受信することが検討される。
1つ以上の本発明の更なる態様において、1つ以上のデータ・バス708A、708B、712、その他は、所定のプロセッサ要素、メイン処理ユニットまたはサブ処理ユニットに通信コスト情報を提供することができてもよい。実際に、各々のバスは、通信コスト情報にアクセスするバス・アービタ論理回路装置(図示せず)を含むことができる。バス・アービタ論理回路装置へのパケット(例えばマスターデータ・パケットによって)の送信要求が提供されたとき(それは、通常いずれにしろなされる)、アービタはバスに関連する通信コスト情報に応答することができる。このように、本実施の形態において、通信コスト情報を管理するために、セントラル・サーバは必要ない。
なお、所定のプロセッサ要素またはそのサブ処理ユニットは、バンド幅が2つ以上のプロセッサ要素の間で予約されてもよいように、アービタユニットの1つ以上に予約要求を発信することができる。予約要求に応答して、バス・アービタ装置は、要求元プロセッサ要素の間で通信要求を保証するため要求の量に応じて利用できるバンド幅を減少させることができ、関連するプロセッサ要素(またはプロセッサ要素)は処理されることができる。バス・アービタ装置に発信される予約クリア要求は、予約を消去することができる。
どのように通信コストが、ネットワーク全体にわたって移動する単一のまたは複数の応答要求の使用を通じて得られた情報に基づいて求められるかについて相当な注意が払われているが、テーブル600(図17)およびテーブル600A(図19)に見られるように、単一のおよび/または複数の応答要求が他のタイプの情報を含むことができることがまた検討される。例えば、所定のサブ処理ユニットのプロセッサ・タスクの再割り当てに関する決定をすることにおいて、プロセッサ要素0のメイン処理ユニットがこのような情報を評価することができるように、応答を発信している関連サブ処理ユニットはまた、パフォーマンス情報、利用可能情報、コスト情報および位置情報を含むことができる。
有利なことに、影響を受けるサブ処理ユニットのプロセッサ・タスクの再割り当ては、パフォーマンス能力の1つ以上、および管理部の必要性のない関連サブ処理ユニットの通信能力の1つ以上に基づいてもよく、それはこのような再割り当てが起こる速度上の逆効果を有する可能性がある。
本発明が特定の実施の形態を参照してここに記載されているが、これらの実施の形態は、単に本発明の原理および出願を例示するだけであると理解されなければならない。したがって、多数の修正が、例示の実施の形態になされることができることが理解されなければならず、その他の装置は、添付の請求の範囲に記載の本発明の趣旨および範囲から逸脱することなく、考案されることができる。
1つ以上の本発明の態様におけるマルチプロセシング・システムの構造を示す図である。 本発明のプロセッサ要素(PU)の好ましい構造を示す図である。 本発明の典型的なサブ処理ユニット(SPU)の構造を示す図である。 1つ以上の本発明の態様におけるマルチプロセシング・システムによって実行されることができる処理ステップを示すフローチャートである。 本発明のマルチプロセシング・システムによって実行されることができる更なる処理ステップを示すフローチャートである。 本発明のマルチプロセシング・システムによって実行されることができるなお更なる処理ステップを示すフローチャートである。 本発明のマルチプロセシング・システムによって実行されることができるなお更なる処理ステップを示すフローチャートである。 本発明の別のサブ処理ユニット(SPU)の構造を示す図である。 1つ以上の本発明の更なる態様における1つ以上のサブ処理ユニットを含む処理システムの構造を示す図である。 2つのマルチプロセシング・ユニットが1つ以上の本発明の態様における共通の回路基板に配置される演算処理システムの構造を示す図である。 1つ以上のマルチプロセシング・ユニットが1つ以上の本発明の更なる態様において、異なる回路基板に配置される演算処理システムの構造を示す図である。 1つ以上の本発明の更なる態様において、複数のマルチプロセシング・ユニットが、ネットワークにより相互接続することができる異なるプロダクトに配置されることを示す図である。 マルチプロセシング・ユニットと連動して本発明が使われることができるソフトウェア・セル形態のブロック図である。 1つ以上の本発明の更なる態様において、1つ以上のマルチプロセシング・ユニットが異なるプロダクトの異なる回路基板に配置される演算処理システムの構造を示す図である。 1つ以上の本発明の態様において、マルチプロセシング・システムによって実行されることができる処理ステップを示すフローチャートである。 本発明のマルチプロセシング・システムによって実行されることができる更なる処理ステップを示すフローチャートである。 本発明のマルチプロセシング・システムのサブ処理ユニットに関して、プロセッサ負荷情報、位置情報および通信情報を含むテーブルを示す図である。 本発明のマルチプロセシング・システムによって実行されることができるなお更なる処理ステップを示すフローチャートである。 リースのために利用可能な処理能力を表す情報、およびこのような処理能力をリースするための料金を表すコスト情報も含む以外は、図17と同様のテーブルを示す図である。 本発明のマルチプロセシング・システムによって実行されることができるなお更なる処理ステップを示す図18のそれに対する別のフローチャートである。 1つ以上の本発明の更なる態様における、マルチプロセッサ・システムの結合ブロック図およびフローチャートである。 1つ以上の本発明の更なる態様における、マルチプロセッサ・システムの結合ブロック図およびフローチャートである。 図22のシステムを通過する応答移動として得られる通信情報の集積のブロック図である。
符号の説明
100 マルチプロセシング・システム、 102 プロセッサ、 200 プロセッサ要素、 202 I/Oインターフェース、 206 DMAC、 208 サブ処理ユニット、 250 ローカルメモリ、 252 レジスタ、 254 浮動小数点ユニット、 256 整数ユニット、 258 バス・インターフェース。

Claims (19)

  1. メイン処理ユニットおよび前記メイン処理ユニットに関連するサブ処理ユニットである関連サブ処理ユニットを含むマルチプロセシングユニットにおいて前記関連サブ処理ユニットの各々によって実行されるように割り当てられたプロセッサ・タスクをモニタするステップと、
    前記関連サブ処理ユニットのうち処理エラーが発生した所定のサブ処理ユニットを検出するステップと、
    前記所定のサブ処理ユニットと処理結果を共有するために、処理エラーが発生したサブ処理ユニットと他のサブ処理ユニットとの間に必要な通信バンド幅および通信レイテンシを少なくとも含む通信要求を決定するステップと、
    前記関連サブ処理ユニットの識別情報と、当該関連サブ処理ユニットと前記所定のサブ処理ユニットとの間の通信バンド幅および通信レイテンシを少なくとも含む通信情報とが相互に対応付けられたテーブルを保持する管理部に前記所定のサブ処理ユニットに関連する前記メイン処理ユニットから前記通信要求を含むクエリーを送信し、前記通信要求を満たす前記関連サブ処理ユニットを当該テーブルを参照して前記管理部において決定し、決定した関連サブ処理ユニットの識別情報を前記管理部から前記マルチプロセシングユニットに送信し、受信した識別情報が示す関連サブ処理ユニットに前記プロセッサ・タスクを前記所定のサブ処理ユニットから移動することにより、処理エラーが検出された前記所定のサブ処理ユニットの前記プロセッサ・タスクを、1つ以上の他の前記関連サブ処理ユニットに再割り当てするステップと、
    を備えることを特徴とするエラー処理方法。
  2. 前記関連サブ処理ユニットは、各々のグループがそれぞれのメイン処理ユニットに関連する、1つ以上の前記サブ処理ユニットのグループを含むことを特徴とする請求項1に記載のエラー処理方法。
  3. (i)前記サブ処理ユニットのそれぞれのグループおよび前記関連するメイン処理ユニットの各々は、1セットのマルチプロセシング・ユニットの一部であって、前記サブ処理ユニットのそれぞれのグループおよび前記メイン処理ユニットは、共通バスを、1つ以上の他の前記サブ処理ユニットのそれぞれのグループおよび関連するメイン処理ユニットと共有し、または、
    (ii)前記サブ処理ユニットのそれぞれのグループおよび前記関連するメイン処理ユニットの各々は、独立のマルチプロセシング・ユニットであって、前記サブ処理ユニットのそれぞれのグループおよび前記メイン処理ユニットは、共通バスを、他のいかなる前記サブ処理ユニットのそれぞれのグループおよび関連するメイン処理ユニットとも共有せず、または、
    (iii)前記サブ処理ユニットのそれぞれのグループおよび前記関連するメイン処理ユニットの各々は、少なくとも分散マルチプロセシング・ユニットの一部であって、前記メイン処理ユニットおよび前記サブ処理ユニットの少なくともいくつかは、相互に離れて配置される、
    ことを特徴とする請求項2に記載のエラー処理方法。
  4. マルチプロセシング・ユニット、独立のマルチプロセシング・ユニットおよび分散マルチプロセシング・ユニットは、(i)共通のまたは異なる回路基板上、(ii)共通のまたは異なるプロダクト、(iii)共通のまたは異なる位置、の少なくともいずれかに配置されることを特徴とする請求項3に記載のエラー処理方法。
  5. 前記共有される処理結果は、前記所定のサブ処理ユニットの前記プロセッサ・タスクの結果を含むことを特徴とする請求項4に記載のエラー処理方法。
  6. 処理結果を共有する前記1つ以上のサブ処理ユニットは、前記所定のサブ処理ユニットを含むことを特徴とする請求項1から5のいずれかに記載のエラー処理方法。
  7. 前記管理部は、
    (i)前記関連サブ処理ユニットのプロセッサ負荷を表すパフォーマンス情報、
    (ii)前記マルチプロセシング・ユニットおよび前記独立のマルチプロセシング・ユニットの中のどこに前記関連サブ処理ユニットが配置されるかを表す位置情報、
    のうち少なくとも1つと前記関連サブ処理ユニットの識別情報とが相互に対応付けられた前記テーブルを保持し、
    マルチプロセシング・ユニット、独立のマルチプロセシング・ユニット、分散マルチプロセシング・ユニットの少なくとも1つは、前記管理部と通信することを特徴とする請求項3に記載のエラー処理方法。
  8. 更に、前記関連サブ処理ユニットにおけるプロセッサ負荷、位置、通信バンド幅および通信レイテンシの少なくとも1つの変化に応答して前記テーブルを更新することを特徴とする請求項7に記載のエラー処理方法。
  9. 前記関連サブ処理ユニットのうちどの関連サブ処理ユニットに前記所定のサブ処理ユニットから前記プロセッサ・タスクを再割り当てべきかを決定するために前記テーブルを使用することを特徴とする請求項またはに記載のエラー処理方法。
  10. 所定のサブ処理ユニットと関連する前記メイン処理ユニットから、
    (i)前記所定のサブ処理ユニットの前記プロセッサ・タスクの前記プロセッサ負荷、
    (ii)前記所定のサブ処理ユニットの前記位置、
    (iii)前記所定のサブ処理ユニットの前記通信要求、
    のうち少なくとも1つを含むクエリーを送信することを特徴とする請求項9に記載のエラー処理方法。
  11. 前記関連サブ処理ユニットのうちどの前記関連サブ処理ユニットに前記所定のサブ処理ユニットから前記プロセッサ・タスクを再割り当てすべきかを決定するために、前記プロセッサ・タスクのプロセッサ負荷、位置および所定のサブ処理ユニットの通信要求の少なくとも1つを、前記テーブルにおけるパフォーマンス情報、位置情報および通信情報の少なくとも1つに適合させることを特徴とする請求項10に記載のエラー処理方法。
  12. 前記管理部は、
    (i)リースして使用可能な関連サブ処理ユニットの少なくとも1つの処理能力を表す利用可能情報、およびこのような関連サブ処理ユニットのプロセッサ負荷を表すパフォーマンス情報、
    (ii)リース可能な前記関連サブ処理ユニットの使用に対するそれぞれの料金を表すコスト情報、
    (iii)リース可能な前記関連サブ処理ユニットがマルチプロセシング・ユニット、独立のマルチプロセシング・ユニットおよび分散マルチプロセシング・ユニットの中でどこに配置されるかを表す位置情報、
    (iv)処理結果を前記所定の処理ユニットと共有するために、前記プロセッサ・タスクが再割り当てされることができるリース可能な前記関連サブ処理ユニットの1つと、1つ以上のサブ処理ユニットとの間に存在する通信バンド幅および通信レイテンシを表す通信情報、
    の少なくとも1つと前記関連サブ処理ユニットの識別情報とが相互に対応付けられた前記テーブルを保持し、
    マルチプロセシング・ユニット、独立のマルチプロセシング・ユニット、分散マルチプロセシング・ユニットの少なくとも1つは、前記管理部と通信することを特徴とする請求項3に記載のエラー処理方法。
  13. 更に、リース可能な前記関連サブ処理ユニットにおける利用可能情報、コスト情報、位置情報または通信情報の変化に応じて前記テーブルを更新することを特徴とする請求項12に記載のエラー処理方法。
  14. 更に、リース可能な前記関連サブ処理ユニットのうちどの関連サブ処理ユニットに前記所定のサブ処理ユニットから前記プロセッサ・タスクを再割り当てすべきかを決定するために、前記テーブルを使用することを特徴とする請求項12または13に記載のエラー処理方法。
  15. (i)前記所定のサブ処理ユニットの前記プロセッサ負荷、
    (ii)前記所定のサブ処理ユニットの前記位置、
    (iii)リース可能な1つ以上の関連サブ処理ユニットから処理能力をリースするために受け入れられるコストを表すリース情報、
    (iv)通信要求、
    の少なくとも1つを含むクエリーを、前記所定のサブ処理ユニットに関連する前記メイン処理ユニットから前記管理部へ送ることを特徴とする請求項14に記載のエラー処理方法。
  16. 更に、リース可能な前記関連サブ処理ユニットのうちどの関連サブ処理ユニットに前記所定のサブ処理ユニットから前記プロセッサ・タスクを再割り当てすべきかを決定するために、前記クエリーに含まれる前記プロセッサ負荷、前記受け入れられるコスト、前記位置および前記通信要求の少なくとも1つを、前記テーブルにおける利用可能情報、コスト情報、位置情報および通信情報の少なくとも1つと適合させることを特徴とする請求項15に記載のエラー処理方法。
  17. 前記所定のサブ処理ユニットから前記プロセッサ・タスクを再割り当てするときに、リース可能な前記関連サブ処理ユニットは、その使用の料金を徴収することができる料金徴収部の1つ以上と関連することを特徴とする請求項16に記載のエラー処理方法。
  18. 更に、最低料金を有するリース可能な1つ以上の関連サブ処理ユニットに前記所定のサブ処理ユニットから前記プロセッサ・タスク再割り当てできるように、前記クエリーに含まれる前記プロセッサ負荷、前記受け入れ可能なコスト、前記位置および前記通信要求を、前記テーブルにおける利用可能情報、コスト情報、位置情報および通信情報と適合させることを特徴とする請求項15から17のいずれかに記載のエラー処理方法。
  19. 前記所定のサブ処理ユニットから前記プロセッサ・タスクを再割り当てするときに、リース可能な前記関連サブ処理ユニットは、その使用の料金を徴収することができる料金徴収部の1つ以上と関連することを特徴とする請求項18に記載のエラー処理方法。
JP2005144793A 2004-05-19 2005-05-17 エラー処理方法 Expired - Fee Related JP4255457B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/849,623 US7730456B2 (en) 2004-05-19 2004-05-19 Methods and apparatus for handling processing errors in a multi-processing system

Publications (2)

Publication Number Publication Date
JP2005332402A JP2005332402A (ja) 2005-12-02
JP4255457B2 true JP4255457B2 (ja) 2009-04-15

Family

ID=35394319

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005144793A Expired - Fee Related JP4255457B2 (ja) 2004-05-19 2005-05-17 エラー処理方法

Country Status (8)

Country Link
US (2) US7730456B2 (ja)
EP (1) EP1639463A4 (ja)
JP (1) JP4255457B2 (ja)
KR (1) KR100832192B1 (ja)
CN (1) CN1906586B (ja)
AU (1) AU2005242881A1 (ja)
CA (1) CA2530942C (ja)
WO (1) WO2005111799A1 (ja)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8769495B1 (en) * 2005-09-30 2014-07-01 Sony Computer Entertainment Inc. Systems and methods for debugging in a multiprocessor environment
US8701091B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Method and system for providing a generic console interface for a graphics application
US7891012B1 (en) 2006-03-01 2011-02-15 Nvidia Corporation Method and computer-usable medium for determining the authorization status of software
US8452981B1 (en) * 2006-03-01 2013-05-28 Nvidia Corporation Method for author verification and software authorization
US8607151B2 (en) * 2006-08-01 2013-12-10 Nvidia Corporation Method and system for debugging a graphics pipeline subunit
US7778800B2 (en) * 2006-08-01 2010-08-17 Nvidia Corporation Method and system for calculating performance parameters for a processor
US8436864B2 (en) * 2006-08-01 2013-05-07 Nvidia Corporation Method and user interface for enhanced graphical operation organization
US8436870B1 (en) 2006-08-01 2013-05-07 Nvidia Corporation User interface and method for graphical processing analysis
US8963932B1 (en) * 2006-08-01 2015-02-24 Nvidia Corporation Method and apparatus for visualizing component workloads in a unified shader GPU architecture
TW200832128A (en) * 2007-01-26 2008-08-01 Rdc Semiconductor Co Ltd Redundant system
US8296738B1 (en) 2007-08-13 2012-10-23 Nvidia Corporation Methods and systems for in-place shader debugging and performance tuning
US9035957B1 (en) 2007-08-15 2015-05-19 Nvidia Corporation Pipeline debug statistics system and method
US7765500B2 (en) * 2007-11-08 2010-07-27 Nvidia Corporation Automated generation of theoretical performance analysis based upon workload and design configuration
US8448002B2 (en) * 2008-04-10 2013-05-21 Nvidia Corporation Clock-gated series-coupled data processing modules
US8341638B2 (en) * 2008-09-30 2012-12-25 International Business Machines Corporation Delegated virtualization across physical partitions of a multi-core processor (MCP)
US8732716B2 (en) 2008-09-30 2014-05-20 International Business Machines Corporation Virtualization across physical partitions of a multi-core processor (MCP)
US8438404B2 (en) * 2008-09-30 2013-05-07 International Business Machines Corporation Main processing element for delegating virtualized control threads controlling clock speed and power consumption to groups of sub-processing elements in a system such that a group of sub-processing elements can be designated as pseudo main processing element
JP5169731B2 (ja) * 2008-10-24 2013-03-27 富士通セミコンダクター株式会社 マルチプロセッサシステムlsi
EP2359203B1 (en) * 2008-11-24 2015-10-28 ABB Research Ltd. A method for providing control and automation services
CN101859330B (zh) * 2009-04-09 2012-11-21 辉达公司 验证集成电路效能模型的方法
US20120317442A1 (en) * 2010-01-15 2012-12-13 Hitachi, Ltd. Embedded device and embedded system
US8714472B2 (en) 2010-03-30 2014-05-06 Kimberly-Clark Worldwide, Inc. Winder registration and inspection system
US8364290B2 (en) 2010-03-30 2013-01-29 Kimberly-Clark Worldwide, Inc. Asynchronous control of machine motion
US8422358B2 (en) * 2010-11-23 2013-04-16 International Business Machines Corporation Best-path evaluation based on reliability of network interface layers
KR101850273B1 (ko) * 2011-12-20 2018-04-20 에스프린팅솔루션 주식회사 화상형성장치 및 화상형성장치에서 에러 알림 및 복구 기능을 수행하는 방법
US9658930B2 (en) * 2011-12-30 2017-05-23 Intel Corporation Method and device for managing hardware errors in a multi-core environment
US20130219386A1 (en) * 2012-02-21 2013-08-22 Disney Enterprises, Inc. Dynamic allocation of compute resources
CN102972011B (zh) * 2012-04-01 2015-07-08 华为技术有限公司 媒体处理系统和处理媒体业务的方法
US9323315B2 (en) 2012-08-15 2016-04-26 Nvidia Corporation Method and system for automatic clock-gating of a clock grid at a clock source
US8850371B2 (en) 2012-09-14 2014-09-30 Nvidia Corporation Enhanced clock gating in retimed modules
US9519568B2 (en) 2012-12-31 2016-12-13 Nvidia Corporation System and method for debugging an executing general-purpose computing on graphics processing units (GPGPU) application
US9471456B2 (en) * 2013-05-15 2016-10-18 Nvidia Corporation Interleaved instruction debugger
US20150227586A1 (en) * 2014-02-07 2015-08-13 Futurewei Technologies, Inc. Methods and Systems for Dynamically Allocating Resources and Tasks Among Database Work Agents in an SMP Environment
US9785469B2 (en) * 2014-02-07 2017-10-10 International Business Machines Corporation Detection of time points to voluntarily yield resources for context switching
US9672043B2 (en) * 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9665372B2 (en) 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
EP2998864B1 (en) * 2014-09-16 2018-12-12 Hybridserver Tec IP GmbH Method, device and system for deciding on a distribution path of a task
KR101747306B1 (ko) * 2014-09-23 2017-06-14 삼성전자주식회사 의료 영상 처리 장치 및 그에 따른 의료 영상 처리 방법
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US10248487B1 (en) * 2015-01-27 2019-04-02 Violin Systems Llc Error recovery for multi-stage simultaneously running tasks
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US10623240B2 (en) * 2016-08-25 2020-04-14 Intel Corporation IoT solution sizing
US11669901B2 (en) 2019-07-12 2023-06-06 Core Scientific Operating Company Communication network for gaming rewards
US11485241B2 (en) 2019-10-21 2022-11-01 Core Scientific, Inc. Efficient computing in vehicles

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2607680B2 (ja) 1989-05-09 1997-05-07 三菱重工業株式会社 電気集じん装置およびその運転方法
CA2078315A1 (en) * 1991-09-20 1993-03-21 Christopher L. Reeve Parallel processing apparatus and method for utilizing tiling
US5790776A (en) * 1992-12-17 1998-08-04 Tandem Computers Incorporated Apparatus for detecting divergence between a pair of duplexed, synchronized processor elements
GB9305263D0 (en) * 1993-03-15 1993-05-05 Univ Westminster Parrallel computation
US5867712A (en) * 1993-04-05 1999-02-02 Shaw; Venson M. Single chip integrated circuit system architecture for document instruction set computing
JPH09293059A (ja) * 1996-04-25 1997-11-11 Hitachi Ltd 分散システム及びその運用管理方法
US6016395A (en) * 1996-10-18 2000-01-18 Samsung Electronics Co., Ltd. Programming a vector processor and parallel programming of an asymmetric dual multiprocessor comprised of a vector processor and a risc processor
US6298370B1 (en) * 1997-04-04 2001-10-02 Texas Instruments Incorporated Computer operating process allocating tasks between first and second processors at run time based upon current processor load
US6115795A (en) * 1997-08-06 2000-09-05 International Business Machines Corporation Method and apparatus for configurable multiple level cache with coherency in a multiprocessor system
US6256775B1 (en) * 1997-12-11 2001-07-03 International Business Machines Corporation Facilities for detailed software performance analysis in a multithreaded processor
US6266804B1 (en) * 1997-12-23 2001-07-24 Ab Initio Software Corporation Method for analyzing capacity of parallel processing systems
US6141762A (en) * 1998-08-03 2000-10-31 Nicol; Christopher J. Power reduction in a multiprocessor digital signal processor based on processor load
US6381735B1 (en) * 1998-10-02 2002-04-30 Microsoft Corporation Dynamic classification of sections of software
WO2000067157A2 (en) * 1999-04-30 2000-11-09 Imagex.Com, Inc. Method for configuring an application server system
US6560606B1 (en) * 1999-05-04 2003-05-06 Metratech Method and apparatus for processing data with multiple processing modules and associated counters
US7086035B1 (en) * 1999-05-13 2006-08-01 International Business Machines Corporation Method and system for counting non-speculative events in a speculative processor
US6467052B1 (en) * 1999-06-03 2002-10-15 Microsoft Corporation Method and apparatus for analyzing performance of data processing system
US6718486B1 (en) 2000-01-26 2004-04-06 David E. Lovejoy Fault monitor for restarting failed instances of the fault monitor
US6772322B1 (en) * 2000-01-21 2004-08-03 Intel Corporation Method and apparatus to monitor the performance of a processor
JP3496822B2 (ja) 2000-04-19 2004-02-16 日本電気株式会社 コンピュータシステムにおける障害対処方式
US6728897B1 (en) * 2000-07-25 2004-04-27 Network Appliance, Inc. Negotiating takeover in high availability cluster
US20020165819A1 (en) 2001-05-02 2002-11-07 Gateway, Inc. System and method for providing distributed computing services
US8473922B2 (en) * 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
US7668966B2 (en) 2001-11-02 2010-02-23 Internap Network Services Corporation Data network controller
US7065549B2 (en) * 2002-03-29 2006-06-20 Illinois Institute Of Technology Communication and process migration protocols for distributed heterogeneous computing
JP3932994B2 (ja) * 2002-06-25 2007-06-20 株式会社日立製作所 サーバ引継システムおよびその方法
US20050060590A1 (en) * 2003-09-16 2005-03-17 International Business Machines Corporation Power-aware workload balancing usig virtual machines
US7293260B1 (en) * 2003-09-26 2007-11-06 Sun Microsystems, Inc. Configuring methods that are likely to be executed for instrument-based profiling at application run-time
KR100570836B1 (ko) * 2003-10-14 2006-04-13 한국전자통신연구원 부하 분산 세션 레이블을 이용한 서버간의 부하 분산장치 및 방법
US7676637B2 (en) * 2004-04-27 2010-03-09 International Business Machines Corporation Location-aware cache-to-cache transfers
US7437536B2 (en) * 2004-05-03 2008-10-14 Sony Computer Entertainment Inc. Systems and methods for task migration

Also Published As

Publication number Publication date
US20080098260A1 (en) 2008-04-24
US20050273652A1 (en) 2005-12-08
CN1906586B (zh) 2010-05-05
KR20060096109A (ko) 2006-09-06
CN1906586A (zh) 2007-01-31
WO2005111799A1 (en) 2005-11-24
EP1639463A1 (en) 2006-03-29
JP2005332402A (ja) 2005-12-02
AU2005242881A1 (en) 2005-11-24
US7926023B2 (en) 2011-04-12
KR100832192B1 (ko) 2008-05-23
CA2530942A1 (en) 2005-11-24
EP1639463A4 (en) 2011-01-26
US7730456B2 (en) 2010-06-01
CA2530942C (en) 2011-12-06

Similar Documents

Publication Publication Date Title
JP4255457B2 (ja) エラー処理方法
US6931640B2 (en) Computer system and a method for controlling a computer system
US7272741B2 (en) Hardware coordination of power management activities
US7958184B2 (en) Network virtualization in a multi-node system with multiple networks
US9965333B2 (en) Automated workload selection
US8725913B2 (en) Numa I/O framework
JP5366552B2 (ja) 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム
US7698529B2 (en) Method for trading resources between partitions of a data processing system
KR102074468B1 (ko) 계산 작업을 처리하기 위한 컴퓨터 클러스터 장치 및 이를 작동시키기 위한 방법
US8112526B2 (en) Process migration based on service availability in a multi-node environment
JP2008152470A (ja) データ処理システム及び半導体集積回路
US10007629B2 (en) Inter-processor bus link and switch chip failure recovery
US10831539B2 (en) Hardware thread switching for scheduling policy in a processor
JP2007172334A (ja) 並列型演算システムの冗長性を確保するための方法、システム、およびプログラム
US20210326221A1 (en) Network interface device management of service execution failover
KR20200080458A (ko) 클라우드 멀티-클러스터 장치
WO2011096249A1 (ja) 負荷制御装置
US20060031622A1 (en) Software transparent expansion of the number of fabrics coupling multiple processsing nodes of a computer system
JP2580525B2 (ja) 並列計算機における負荷分散方法
Shukla et al. Analysis of effective load balancing techniques in distributed environment
US20170031726A1 (en) Elasticity engine for availability management framework (amf)
US20240061805A1 (en) Host endpoint adaptive compute composability
CN117527816A (zh) 节点迁移方法、装置、电子设备及计算机可读存储介质

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070807

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080129

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080324

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081021

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081218

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20081226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090127

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090127

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120206

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120206

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130206

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140206

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees