JP3706542B2 - 処理コアの使用を動的に更新する方法および装置 - Google Patents

処理コアの使用を動的に更新する方法および装置 Download PDF

Info

Publication number
JP3706542B2
JP3706542B2 JP2001000007A JP2001000007A JP3706542B2 JP 3706542 B2 JP3706542 B2 JP 3706542B2 JP 2001000007 A JP2001000007 A JP 2001000007A JP 2001000007 A JP2001000007 A JP 2001000007A JP 3706542 B2 JP3706542 B2 JP 3706542B2
Authority
JP
Japan
Prior art keywords
core
processing
processing core
cores
data processing
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
JP2001000007A
Other languages
English (en)
Other versions
JP2001222516A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2001222516A publication Critical patent/JP2001222516A/ja
Application granted granted Critical
Publication of JP3706542B2 publication Critical patent/JP3706542B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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/2028Failover techniques eliminating a faulty processor or activating a spare
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • 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)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microcomputers (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、一般に、データ処理システムに関し、特に、2つ以上の処理コアを有するデータ処理システムに関する。特に、本発明は、複数の処理コアを有する中央処理ユニットを動的に構成する方法およびシステムに関する。
【0002】
【従来の技術】
現在、マイクロコンピュータは、家庭およびオフィスにおいて、とりわけ言語処理デバイスおよびウェブ・ブラウザとして広く用いられている。このようなデータ処理システムは、一般に、単一のマイクロプロセッサ・チップに含まれた単一の中央処理ユニット(CPU)を用いる。これとは対照的に、より多くの要求タスクのために構成されたマイクロコンピュータ(例えば、ネットワーク・サーバ)は、通常、複数のCPUを含む。使用可能なプロセッサの数を増大することは、コンピュータの計算能力を増大するが、共働するCPUの動作を調整することは、全システム・アーキテクチャの複雑性の付随的な増大を要求する。例えば、中央処理ユニットに加えて、マルチプロセッサ・システムは、典型的には、サービス・プロセッサをさらに含み、サービス・プロセッサの主な役割は、システムがパワーアップまたはリセットされる(すなわちブートされる)ときの動作に対してシステムを準備させることである。サービス・プロセッサは、典型的には、開始ルーチンの指示の下で、システム要素をテストし、システムのハードウェア構成に関する情報を収集し、次に、オペレーティング・システムの起動およびブート手順の完了のために、CPUの1つに制御を渡すことによってその役割を果たす。
【0003】
しかしながら、集積回路の製造における最近の進歩により、マルチコア・マイクロプロセッサ・チップは、高性能マイクロコンピュータのための優れたプロセッサとして、まもなくシングルコアCPUに取って代わることができる。マルチコア・マイクロプロセッサは、2つ以上の主要な処理コアを含む単一の集積回路を特徴とし、処理コアの各々は、別個の中央処理ユニットであるかのように用いることができる。さらに、最新のマルチコア・プロセッサにおいては、主要コアの各々は、従来の高性能シングルコア・プロセッサの計算能力に等しいかそれを超える計算能力を与える。
【0004】
マルチコア・プロセッサによって与えられる利点の中には、個別プロセッサ間の通信の遅延に比べ、単一チップ内のコア間の通信について伝搬遅延の減少がある。また、マルチコア・プロセッサは、コア単位では、匹敵するシングルコア・プロセッサよりも高価ではない。しかし、マルチコアCPUに関する問題は、マルチコアCPUが、製造テスト,ブート・テスト,およびシステム動作の領域に、付加的な複雑さの導入を要求することである。また、マルチコア・プロセッサは、シングルコア・プロセッサよりも、物理的に大きくかつ複雑であり、従って、製造欠陥を生じる傾向にある。しかしながら、従来のマルチコア・データ処理システムは、これらの問題を解決するのに有効な手段を欠いている。
【0005】
【発明が解決しようとする課題】
従って、マルチコアCPUのテストおよび利用に関連する複雑さを減少する方法およびシステムの必要性がある。また、マルチコア・プロセッサを構成することに関してフレキシビリティを与える必要性がある。例えば、第1のコア(第2ではない)に製造欠陥を有するマルチコアCPUが、第2のコアが第1のコアであるかのように動作するように構成することができると、製造歩留まりを増大することができる。また、処理能力を増大させること、および、システムを停止させることなく、あるいはシステム動作を中断させることなく、誤動作の処理コアを取り替えたりおよび/または取り除いたりすることは、利点がある。また、シングルコア・マルチプロセッサ・マシンを用い構成されたエンジニアリング・コード,テスト・コード,開始ルーチンをマルチコア・プロセッサを含むシステムにおいて、わずかな変更または変更なしに、利用可能にするには有利である。以下に説明するように、本発明は、これらのまたは他の利点を与える。
【0006】
【課題を解決するための手段】
本発明によるデータ処理システムは、少なくとも第1および第2の処理コアを含む少なくとも1つの中央処理ユニット(CPU)を有する。また、データ処理システムは、いずれの処理コアが用いられるべきかを特定する制御入力を受信する入力装置を含む。さらに、データ処理システムは、制御入力の受信に応答して、その制御入力によって、1つ以上の処理コアをアクティブにし、全部または1つ以上の処理コアを非アクティブにすることによって、データ処理システムを構成する構成論理を含む。例示の実施例では、部分的グッド論理は、第1の処理コアの代わりに第2の処理コアを用いるように、データ処理システムを構成する。
【0007】
本発明の目的,特徴,利点の全ては、以下の詳細な説明の中で明らかになるであろう。
【0008】
【発明の実施の形態】
本発明の特徴を実現する新規な形態は、特許請求の範囲に記載されている。しかし、本発明自体および好適な使用形態、さらには、本発明の目的および利点は、実施例の以下の詳細な説明を図面と共に参照することにより最も理解されるであろう。
【0009】
次に、図面を参照すると、特に、図1に、マルチコア中央処理ユニット(CPU)を動的に構成する本発明による装置を有する例示のデータ処理システム100を示す。図に示すように、データ処理システム100は、システム・バス120およびメモリ・マネージャー122を介して、ランダムアクセス・メモリ(RAM)124に接続されているCPU110を含む。また、データ処理システム100には、1つ以上の中間バス・ブリッジ152を介して、システム・バス120と通信する1つ以上のローカル・バス150が含まれる。ディスクドライブ160のような1つ以上の永続的データ記憶デバイスが、ローカル・バス150に設けられ、同様に、キーボード,マウス,表示デバイス,通信ポート,および/または他のI/O装置(図示せず)のような入力/出力(I/O)デバイス162が、ローカル・バス150に設けられている。
【0010】
本発明によれば、CPU110は、少なくとも2つの処理コア160Aおよび160Bと、対応するL1キャッシュ162Aおよび162Bとを含む単一の集積回路である。処理コアは、コア(0)160Aおよびコア(1)160Bとして指定され、その各々は、CPU110に設けられている記憶コントローラ170に接続されている。記憶コントローラ170は、L2キャッシュ172を含み、コア(0)160Aおよびコア(1)160Bに、RAM124のようなグローバル・データ記憶装置へのインターフェースを与える。
【0011】
また、データ処理システム100は、IEEE標準1149.1に従うJoint Test Access Group(JTAG)インターフェースのような構成バス132を介して、CPU110に接続されているサービス・プロセッサ130を含む。選択的には、データ処理システム100は、付加的なCPUを含むことができ、その各々は、CPU110のように、システム・バス120およびサービス・プロセッサ130の両方に接続される。
【0012】
データ処理システム100がパワーアップされると、サービス・プロセッサ130は、データ処理システム100の読取り専用メモリ(ROM)140のブート・プログラム134として記憶されている開始命令を実行することによって、システムを動作に対して自動的に準備させる。特に、ブート・プログラム134は、サービス・プロセッサ130に、初期システムのテストおよび構成機能を実行させる。例えば、以下により詳細に説明するように、サービス・プロセッサは、処理コアの全てが、動作可能であるか否かを判別するプロセッサ妥当性検査ルーチンを実行し、動作しているコアの各々に対して異なるプロセッサ識別子(PID)を含むPIDテーブルを作成する。PIDテーブルは、システムの動作中に、オペレーティング・システムおよび/またはアプリケーション・プログラムによって用いられ、コア間の役割(duty)を割り当てる。
【0013】
次に、図2に、CPU110の詳細なブロック図を示す。図に示すように、サービス・プロセッサ130は、クロックおよびスキャン制御論理210を経て、コア(0)160Aおよびコア(1)160Bと通信し、コア(0)160Aおよびコア(1)160Bは、記憶コントローラ170を経て、グローバル・データ記憶装置と通信する。クロックおよびスキャン制御論理210は、サービス・プロセッサ130に、グローバル障害アイソレーション・レジスタ310(図3に示す)のようなグローバル・レジスタを操作させるレジスタ・インターフェース論理を含む。この実施例では、クロックおよびスキャン制御論理210、および記憶コントローラ170は、コア(0)160Aおよびコア(1)160Bと共に、CPU110に含まれる。
【0014】
コア(0)160Aおよびコア(1)160Bの各々は、従来のシングルコアCPUによって用いられるフルセットの要素を含み、データ処理システム100の他の部分と行き来する命令および転送情報を取り出し、デコードし、実行する。例えば、コア(0)160Aおよびコア(1)160Bは、それぞれ、ロード/記憶ユニット(LSU)222Aおよび222B,構成/状態レジスタ224Aおよび224B,プロセッサ識別/特定用途レジスタ(PID/SPR)226Aおよび226Bを含む。LSU222Aおよび222B,構成/状態レジスタ224Aおよび224B,およびPID/SPR226Aおよび226Bの各々には、CPU110に搬送される命令およびデータを特定コアに適合させるために用いられるプロセッサ識別(PID)フィールドがある。これらPIDフィールドは、システムがブートされるときに作成されるPIDテーブルのPIDに対応する。
【0015】
図4(LSU222Aおよび222Bの典型的なPIDフィールドの構造を示す)に示すように、各PIDフィールド400は、CPU(またはチップ)識別フィールド410およびコア識別フィールド412を含む。この実施例では、CPU識別子として6ビットが用いられ、コア識別子として1ビットが用いられ、これにより、最大64個のデュアルコア・プロセッサをサポートする。しかし、当業者に明らかなように、3個以上の処理コアを含むCPUをサポートするために、コア識別子に付加的ビットを用いることができ、64個より多くのCPUのために、CPU識別子に付加的ビットを用いることができる。いずれの場合でも、コア(0)160Aおよびコア(1)160Bのためのデータが、データ処理システム100に伝送されると、宛先コアを識別する(PIDによって)データ・タグが、データと共に伝送される。コア(0)160Aおよびコア(1)160Bは、PIDフィールドをデータ・タグと比較して、処理のためにどのデータを受け取るべきかを判別する。
【0016】
シングルコアCPUを有する従来のシステムでは、ブート・プログラムは、PIDテーブルから欠陥コアを簡単に取り除くことができる。しかし、マルチコアCPUが、バッドコアを有することが分かると、システムをバッドコアなしに動作するように準備させることは、より困難となる。例えば、システムが、それぞれ、コア(0)およびコア(1)を有する第1および第2のCPUを含み、第1のCPUのコア(0)がバッドであると、従来の方法を用いる開始ルーチンは、PID1,PID2,およびPID3をリストするPIDテーブルを簡単に作成することができ、これらのPIDは、第1のCPUのコア(1)と、第2のCPUのコア(0)およびコア(1)とにそれぞれ関連する。しかし、コアをテストし、保守し、利用するためのサービス・プロセッサおよびオペレーティング・システム・ルーチンは、コア(0)(または、PID(0))と対話する(独占的にまたはデフォルトによって)ようにしばしば構成される。例えば、ブート・プログラムは、典型的には、サービス・プロセッサにブート・プロセスの一部として、PID(0)に制御を渡すようにさせる。さらに、マルチコアCPUの技術および製造テストのための装置は、同様の制約を与え、ハードフェア制約(1つのJTAGインターフェースのみを有するPID(0)およびマルチコアCPUのためにハードワイヤされる外部割り込みのような)を含む他のシステム要素によってさらなる困難が与えられることがある。従って、データ処理システムを動作に対して準備させるとき、もちろん、デフォルト・コアがバッドであることを判別し、従って、通信をリダイレクトするために含まれる種々の要素に追加の機能が付加されるのでなければ、サービス・プロセッサは、通常、欠陥コア(0)に対応するPIDを簡単に取り除くべきではない。
【0017】
本発明は、CPU110に設けられ、CPU110と対話する要素(開始プログラムおよびテスト装置のような)に対して、殆どあるいは全く変更することなく、このような制約を克服することができる部分的グッド論理を与える。特に、本発明の部分的グッド論理によってサポートされるCPU構成の中に、データ処理システム100にコア(0)160Aのみを用いることを許容する第1の構成と、コア(1)160Bのみを用いることを許容する第2の構成と、データ処理システム100が、コア(0)160Aおよびコア(1)160Bを共に用いるデュアルプロセッサ・システムとして動作する第3の構成とがある。以下により詳細に説明するように、第1および第2の構成では、部分的グッド論理は、休止コアからの出力が、記憶コントローラ170に達することを阻止する。さらに、第2の構成では、部分的グッド論理は、コア(1)160Bに、コア(0)160Aをエミュレートさせる。特に、部分的グッド論理は、コア(1)160Bのコア識別ビットをクリアし、これにより、コア(1)160Bに、コア(0)160Aにアドレス指定された命令およびデータを処理させ、これにより、サービス・プロセッサ命令のようなシステム要素は、たとえ、コア(0)160Aが、非アクティブにされていても、バーチャル・コア(0)と対話することを可能にする。さらに、以下により詳細に説明するように、部分的グッド論理を、動的に構成することができる(すなわち、ブート・プロセス中、および/または実行時に)。
【0018】
いかにして部分的グッド論理が、コア(1)160Bにコア(0)160Aをエミュレートさせる(従って、バーチャル・コア(0)として働かせる)ことができるかの一例として、アドレスx′021250′は、コア(0)のリソース(データ・キャッシュ障害レジスタのような)を示すが、アドレスx′021250′は、各アドレスの最初の数字がコア識別子として働くマッチング・コア(1)のリソースを示すことが知られている。サービス・プロセッサ130が、アドレスx′021250′のコンテンツを要求し、コア(0)160Aのコア識別ビットが、0に設定される(すなわち、クリアされる)と、コア(0)160Aは、要求されたデータをサービス・プロセッサ130に戻す。しかし、コア(0)160Aが休止し、コア(1)160Bのコア識別ビットが、0に設定されると、コア(1)160Bは、たとえ、リクエストがコア(0)160Aにアドレス指定されても、要求されたデータを戻すであろう。外部割り込みからの入力および他の制御信号も同様に、部分的グッド論理によって適切な宛先に指示される。
【0019】
デフォルト・ハードウェア構成(Default Hardware Configuration)
部分的グッド論理のデフォルト構成は、CPU110のハードウェアによって特定することができ、この構成は、サービス・プロセッサ130によって、例えば、ブート・プログラム134の命令により、あるいは、実行時に検出されたエラー状態に応答して、動的に変えることができる。デフォルト・ハードウェア構成を決定する部分的グッド論理の要素は、バッドコア(0)フューズ230Aおよびバッドコア(1)フューズ230Bを含む。製造プロセスにおいて、コア(0)160Aまたはコア(1)160Bに欠陥があると判別されると、対応するバッドコア(0)フューズ230Aまたはバッドコア(1)フューズ230Bをブローし、上述した第1および第2の構成をデフォルト構成として実現することができる。あるいは、バッドコア(0)フューズ230Aおよびバッドコア(1)フューズ230Bは、ブローされないまま残り、第3の構成をデフォルト構成として選択する。また、部分的グッド論理は、フューズオーバーライド・ラッチ240を含み、フューズオーバーライド・ラッチ240は、デフォルト構成をオーバーライドするために、サービス・プロセッサ130によって高レベルに設定することができる。
【0020】
以下の3つの例は、フューズオーバーライド・ラッチ240が低レベルに設定されると、いかにしてこの実施例の部分的グッド論理の部分が動作するかを示す。バッドコア(1)フューズ230Bがブローされ、バッドコア(0)フューズ230Aがブローされないと、第1の構成が指示される。従って、低レベル信号が、インバータ232Bからマルチプレクサ234Bに送られる。次に、低レベル信号は、ANDゲート242Bを介して、1個のANDゲート(あるいは複数個のANDゲート)244Bに送られ、コア(1)160BのLSU出力バス246B上の信号を阻止する(あるいは、さえぎる)。さらに、高レベル信号が、インバータ232Aからマルチプレクサ234Aを経て、インバータ250に送られる。従って、インバータ250は、低レベル信号を、LSU222A,構成/状態レジスタ224A,およびPID/SPR226Aに伝送し、コア(0)160Aのコア識別ビットを0に設定する。
【0021】
あるいはまた、バッドコア(0)フューズ230Aがブローされ、バッドコア(1)フューズ230Bがブローされないと、第2の構成が指示される。従って、低レベル信号が、インバータ232Aからマルチプレクサ234AおよびANDゲート242Aを経て、1個のANDゲート(あるいは複数個のANDゲート)244Aに送られ、コア(0)160AのLSU出力バス246A上の信号を阻止(あるいは、さえぎる)する。さらに、マルチプレクサ234Aからの低レベル信号が、コア(1)160BのLSU222B,構成/状態レジスタ224B,およびPID/SPR226Bに伝送される。この信号は、クリアされるべき各要素内の各々のPIDフィールドにコア識別ビットを生成し、これにより、上述したように、コア(1)160Bに、コア(0)160Aをエミュレートさせる。
【0022】
しかしながら、バッドコア・フューズのいずれもブローされないと、第3の(デュアルプロセッサ)構成が指示される。従って、上述したように、高レベル信号が、インバータ232Aおよび232BからANDゲート244Aおよび244Bに送られ、これにより、コア(0)160Aおよびコア(1)160Bが共に、記憶コントローラ170にデータを伝送することができる。また、インバータ232Aからの高レベル信号は、コア(1)160Bのコア識別ビットを設定させ、インバータ250によってフリップされた後、コア(0)160Aのコア識別ビットをクリアさせる。
【0023】
動的再構成(Dynamic Reconfiguration)
しかしながら、デフォルト構成以外の構成を動的に実現するためには、サービス・プロセッサ130は、フューズオーバーライド・ラッチ240を高レベルに設定し、部分的グッド論理のグッド(0)ラッチ260Aおよびグッド(1)ラッチ260Bをセットまたはクリアする。例えば、サービス・プロセッサ130は、以下に説明するプロセスを用いて、ブート時にデータ処理システム100をテストし構成し、および/または、実行時に構成を変更する(例えば、コア(0)160Aを非アクティブにし、コア(0)160Aの誤動作に応じてコア(1)160Bをアクティブにする)。
【0024】
図5〜図7には、本発明によって、CPU110を動的に構成するブート・プロセス内の例示的方法の論理的フローチャートを示す。この方法は、1つの処理コアを用いて他の処理コアをエミュレートするためにCPU110を構成するステップを含む。プロセスは、ブロック500で開始し、サービス・プロセッサ130は、例えば、データ処理システム100がパワーアップしていることを検出すると、ブート・プログラム134を開始する。次に、プロセスは、ブロック510に進む。ブロック510は、サービス・プロセッサ130が、フューズオーバーライド・ラッチ240をセットすることを示す。次に、ブロック512に示すように、サービス・プロセッサ130は、グッド(0)ラッチ260Aをセットし、グッド(1)ラッチ260Bをクリアし、これにより、コア(0)160Aがバーチャル・コア(0)として働く第1の構成を生じさせる。次に、ブロック514に示すように、サービス・プロセッサ130は、コア(0)160Aをクリーン状態に初期化し、次に、例えば、ビルドイン・セルフ・テスト(BIST)を実行させることによって、および/または、コア(0)160Aのスキャン・チェーンをテストするJTAGインターフェースを用いることによって、コア(0)160Aをテストする。
【0025】
次に、プロセスは、ブロック520に進む。ブロック520では、サービス・プロセッサ130が、グッド(0)ラッチ260Aをクリアし、グッド(1)ラッチ260Bをセットし、これにより、第2の構成を生じることを示す。次に、サービス・プロセッサ130は、コア(0)160Aで行ったように、コア(1)160Bを初期化しテストする。実際には、現在の部分的グッド論理構成は、コア(1)160Bにコア(0)160Aをエミュレートさせるので、サービス・プロセッサ130によって用いられるテスト・プログラムは、テスト・データを複数のコアに送り、複数のコアからの結果を受信する論理で複雑にする必要はない。逆に、サービス・プロセッサ130は、1つのコアのみを含むCPU(すなわち、コア(0)のみを含むCPU)のために構成されたテスト・コードを簡単に用いることができる。部分的グッド論理は、バーチャル・コア(0)として働いているコアへの入力および出力を自動的にリダイレクトする。
【0026】
コア(0)160Aおよびコア(1)160Bの両方がテストされた後、プロセスは、ブロック524に進む。ブロック524では、サービス・プロセッサ130が、両方のコアを必要とするか否かを判別することを示す。例えば、データ処理システム・ベンダーは、シングルコア・システムおよびデュアルコア・システムの両方を提供できるが、実際には、デュアルコア・システムのみを提供することができ、顧客がシングルコア・システムを要求したならば、1つのコアが非アクティブになる。さらに、ベンダーは、いくつのコアが一度にアクティブにされるべきかを特定する命令を記憶するシステムROMを用いることができる。本発明は、このような構成をサポートし、これにより、ベンダーが、より一定の製造プロセスを用いることができ、重要なことは、以下に示すように、コアがバッドになるとき問題となるダウン時間の長さを減少または排除することができることである。
【0027】
両方のコアが必要、両方のフューズがブローされない、コア・テストがグッド(Both Cores Desired;Both Fuses Intact;Cores Test Good)
両方のコアが必要とされると、サービス・プロセッサ130は、ブロック530に示される。選択構成に入り、ブロック532に示すように、バッドコア(0)フューズ230Aまたはバッドコア(1)フューズ230Bのいずれがブローされるかについての判別が行われる。両方のフューズがブローされないと、ブロック534に示すように、プロセスは他の選択構成に入る。次に、サービス・プロセッサ130は、ブロック536に示すように、初期テストの結果が、コア(0)160Aおよびコア(1)160Bが共にグッドであることを示すか否かを判別する。グッドであれば、プロセスは、ブロック538に進む。ブロック538は、サービス・プロセッサ130が、フューズオーバーライド・ラッチ240をクリアすることを示し、これにより、マルチプレクサ234Aおよび234Bに、それぞれ、インバータ232Aおよび232Bからの高レベル信号を渡す。
【0028】
次に、ブロック540に示すように、サービス・プロセッサ130は、出力イネーブル・ラッチ270および272(図2に示す)をセットする。出力イネーブル・ラッチ270および272は、コア(0)160Aおよびコア(1)160Bからの出力を制御する付加的手段として働く。しかし、グッド(0)およびグッド(1)ラッチ260Aおよび260Bと違って、出力イネーブル・ラッチ270および272は、物理的コアよりもむしろバーチャル・コアを参照することによって出力を阻止することができる。例えば、出力イネーブル・ラッチ270は、バーチャル・コア(0)からの出力を制御する(バーチャル・コア(0)が、コア(0)160Aによって、またはコア(0)160Aのエミュレーションであるコア(1)160Bによって実際に与えられるか否かに拘わらず)。同様にして、出力イネーブル・ラッチ272は、バーチャル・コア(0)からの出力を制御する。
【0029】
例えば、図2を再び参照すると、コア(0)160Aおよびコア(1)160Bの両方がアクティブであり、出力イネーブル・ラッチ270および272の両方がセットされると、ANDゲート242Aは、マルチプレクサ234Aおよび出力イネーブル・ラッチ270からの高レベル信号を受信する。従って、ANDゲート244Aが、コア(0)160Aからの信号を通過させることができる。また、マルチプレクサ234Aからの高レベル信号は、マルチプレクサ264に、出力イネーブル・ラッチ272からANDゲート242Bに高レベル信号を送らせ、ANDゲート242Bは、さらに、マルチプレクサ234Bからの高レベル信号を受信する。従って、ANDゲート244Bも同様に、コア(1)160Bからの信号を通過させることができる。
【0030】
あるいはまた、コア(0)160Aが非アクティブにされ、コア(1)160Bがバーチャル・コアとして働くと、マルチプレクサ264は、マルチプレクサ234Aから選択された低レベル信号を受信する。この信号は、マルチプレクサ264に、バーチャル・コア(0)イネーブル信号を、出力イネーブル・ラッチ270からANDゲート242Bに渡す。さらに、マルチプレクサ234Aからの低レベル信号が、ANDゲート242Aを経てANDゲート244Aに送られ、これにより、コア(0)160Aからの出力を阻止する。
【0031】
図5〜図7を再び参照すると、出力イネーブル・ラッチ270および272がセットされると、プロセスは、ブロック542に進む。ブロック542では、サービス・プロセッサ130が、例えば、マルチプレクサ234Aおよび234Bからの信号を、システム・クロック(図示せず)からコア(0)160Aおよびコア(1)160Bへの個々のパス内の個々のANDゲート(図示せず)に送ることによって、コア(0)160Aおよびコア(1)160Bをアクティブにすることを示す。次に、プロセスは、接続記号Dを経て、ブロック546に進む。ブロック546では、サービス・プロセッサ130が、バーチャル・コア(0)に制御を渡す(例えば、バーチャル・コア(0)の命令ポインタの中に、処理されるべき次のブート命令のアドレスをロードすることによって)ことを示す。次に、ブロック548に示すように、サービス・プロセッサ130に関する限り、データ処理システム100をブートするプロセスは、終了する。
【0032】
両方のコアが必要、両方のフューズがブローされない、コア・テストがバッド(Both Cores Desired;Both Fuses Intact;Core Tests Bad)
次に、ブロック534を参照すると、コア(0)160Aおよびコア(1)160Bが共にグッドでないが、コア(0)160Aのみがグッドであると判別されると、プロセスは、ブロック550を経てブロック552に進む。ブロック552では、サービス・プロセッサ130が、グッド(0)ラッチ260Aをセットし、グッド(1)ラッチ260Bをクリアする(および、フューズオーバーライド・ラッチ240を高レベルに設定する)ことを示す。従って、上述したように、マルチプレクサ234Aおよび234Bが、それぞれ、高レベル信号および低レベル信号を伝送し、コア(0)160Aをバーチャル・コア(0)として働かせ、コア(1)160Bからの出力を阻止する。次に、ブロック554に示すように、サービス・プロセッサ130は、出力イネーブル・ラッチ270を高レベルに設定し、ブロック556に示すように、コア(0)160Aをアクティブにし、コア(1)160Bを非アクティブにする。次に、プロセスは、接続記号Dを経て、ブロック546に進む。ブロック546では、上述したように、サービス・プロセッサ130が、バーチャル・コア(0)に制御を渡すことを示す。次に、ブロック548に示すように、プロセスは、終了する。
【0033】
次に、ブロック534を再び参照すると、コア(1)160Bのみがグッドであると判別されると、プロセスは、ブロック560を経てブロック562に進む。ブロック562では、サービス・プロセッサ130が、グッド(0)ラッチ260Aをクリアし、グッド(1)ラッチ260Bをセットすることを示す。その結果、図2を参照して上述したように、マルチプレクサ234Aおよび234Bは、それぞれ、低レベル信号および高レベル信号を伝送し、コア(1)160Bをバーチャル・コア(0)として働かせ、コア(0)160Aからの出力を阻止する。次に、ブロック564および566に示すように、サービス・プロセッサ130は、出力イネーブル・ラッチ270を高レベルに設定し、コア(0)160Aを非アクティブにし、コア(1)160Bをアクティブにする。次に、プロセスは、接続記号Dを経て、ブロック546に進む。ブロック546では、サービス・プロセッサ130が、バーチャル・コア(0)に制御を渡すことを示す。次に、ブロック548に示すように、プロセスは、終了する。
【0034】
両方のコアが必要、1つのヒューズがブローされる(Both Cores Desired;One Huse Blown)
しかし、ブロック530を再び参照すると、サービス・プロセッサ130は、バッドコア(0)フューズ230Aが依然としてブローされていないが、バッドコア(1)フューズ230Bがブローされていることを判別し、プロセスは、ブロック562および接続記号Aを経て、ブロック570に進む。ブロック570に示すように、サービス・プロセッサ130は、初期テストが、コア(0)160Aがグッドであることを示すか否かを判別する。グッドであれば、ブロック572に示すように、サービス・プロセッサ130は、フューズオーバーライド・ラッチ240をクリアし、マルチプレクサ234Aにインバータ232Aからの高レベル信号を渡し、マルチプレクサ234Bにインバータ232Bからの低レベル信号を渡し、上述したように、コア(0)160Aをバーチャル・コア(0)として動作させ、ANDゲート244Bにコア(1)160Bからの出力を阻止させる。次に、ブロック574に示すように、サービス・プロセッサ130は、出力イネーブル・ラッチ270をセットし、ブロック576に示すように、コア(0)160Aをアクティブにし、コア(1)160Bを非アクティブにする。次に、ブロック546および548にそれぞれ示すように、サービス・プロセッサ130は、バーチャル・コア(0)に制御を渡し、プロセスは、終了する。しかし、ブロック570を再び参照すると、ブロック578および548にそれぞれ示すように、コア(0)160Aがバッドとテストされたと判別されると、サービス・プロセッサ130は、致命的エラーを単に報告し、プロセスは、終了する。
【0035】
図5のブロック530を再び参照すると、バッドコア(0)フューズ232Aのみがブローされていると判別されると、プロセスは、ブロック579および接続記号Bを経て、ブロック580に進む。ブロック580では、サービス・プロセッサ130が、初期テストがコア(1)160Bが正確に機能していることを示すか否かを判別することを示す。正確に機能しているならば、ブロック582,584,586にそれぞれ示すように、サービス・プロセッサ130は、フューズオーバーライド・ラッチ240をクリアし、出力イネーブル・ラッチ270をセットし、コア(0)160Aを非アクティブにするが、コア(1)160Bをアクティブにし、これにより、上述したように、コア(1)160Bをバーチャル・コア(0)として用いるように、データ処理システム100を構成する。次に、プロセスは、接続記号Dを経て、ブロック546に進む。ブロック546では、サービス・プロセッサ130が、バーチャル・コア(0)に制御を渡し、ブロック548に示すように、プロセスは、終了する。しかし、ブロック580を再び参照すると、コア(1)160Bがバッドとテストされたと判別されると、ブロック588および548にそれぞれ示すように、サービス・プロセッサ130は、致命的エラーを単に報告し、プロセスは、終了する。
【0036】
1つのコアが必要、両方のフューズがブローされない(One Core Desired;Both Fuses Intact)
図5のブロック524で、コア(0)160Aおよびコア(1)160Bの両方が必要とされないと判別されると、プロセスは、接続記号Cを経て、図7のブロック590に進む。次に、ブロック592に示すように、サービス・プロセッサ130は、バッドコア(0)フューズ230Aおよびバッドコア(1)フューズ230Bが共にまだブローされていないか否かを判別する。ブローされないならば、ブロック594に示すように、プロセスは、選択された他の構成に進む。次に、コア(0)160Aがグッドであるとテストされたか否かを判別する。グッドであれば、プロセスは、ブロック596を経て、ブロック598に進む。ブロック598では、サービス・プロセッサ130が、グッド(0)ラッチ260Aをセットし、グッド(1)ラッチ260Bをクリアすることを示し、これにより、コア(0)160Aをバーチャル・コア(0)として設定し、コア(1)160Bからの出力を阻止する。次に、ブロック600に示すように、サービス・プロセッサ130は、出力イネーブル・ラッチ270をセットし、ブロック602に示すように、コア(0)160Aをアクティブにし、コア(1)160Bを非アクティブにする。次に、プロセスは、接続記号Dを経て、図6のブロック546に進む。ブロック546に示すように、サービス・プロセッサ130は、バーチャル・コア(0)に制御を転送し、ブロック548に示すように、プロセスは、終了する。
【0037】
ブロック594を再び参照すると、コア(1)160Bのみがグッドとテストされたと判別されると、プロセスは、ブロック604を経て、ブロック606,608,610に進む。これらのブロックでは、サービス・プロセッサ130が、グッド(0)ラッチ260Aをクリアし、出力イネーブル・ラッチ270をセットし、コア(0)160Aを非アクティブにし、コア(1)160Bをアクティブにすることによって、コア(1)160Bをバーチャル・コア(0)として用いるように、データ処理システム100を構成することを示す。次に、プロセスは、接続記号Dを経て、ブロック546および548に進む。ブロック546および548では、それぞれ、サービス・プロセッサ130が、バーチャル・コア(0)に制御を渡すこと、およびプロセスが終了することを示す。
【0038】
ブロック594を再び参照すると、コア(0)160Aおよびコア(1)160Bの両方がバッドとテストされたと判別されると、プロセスは、ブロック612を経て、ブロック614に進む。ブロック614では、サービス・プロセッサ130が、致命的エラーを報告することを示す。次に、ブロック616に示すように、プロセスは、終了する。
【0039】
1つのコアが必要、1つのフューズがブローされる(One Core Desired:One Fuse blown)
しかし、ブロック590で、バッドコア(1)フューズ230Bが、ブローされていると判別されると、プロセスは、ブロック620を経て、ブロック622に進む。ブロック622では、サービス・プロセッサ130が、コア(0)160Aがグッドとテストされたか否かを判別することを示す。グッドであれば、ブロック624に示すように、サービス・プロセッサ130が、フューズオーバーライド・ラッチ240をクリアし、これにより、マルチプレクサ234Aにインバータ232Aからの高レベル信号を渡し、マルチプレクサ234Bにインバータ232Bからの低レベル信号を渡し、上述したように、コア(0)160Aをバーチャル・コア(0)として動作させ、コア(1)160Bからの出力を阻止させる。次に、ブロック626および628に示すように、サービス・プロセッサ130は、出力イネーブル・ラッチ270をセットし、コア(0)160Aをアクティブにし、コア(1)160Bを非アクティブにする。次に、プロセスは、接続記号Dを経て、ブロック546に進み、ブロック546は、サービス・プロセッサ130が、バーチャル・コア(0)に制御を渡すことを示す。次に、ブロック548に示すように、プロセスは、終了する。しかし、ブロック622で、コア(0)160Aがバッドをテストされたと判別されると、ブロック640および642にそれぞれ示すように、サービス・プロセッサ130は、致命的エラーを報告し、プロセスは、終了する。
【0040】
一方、サービス・プロセッサ130が、ブロック590において、バッドコア(0)フューズ230Aがブローされていると判別すると、プロセスは、ブロック630を経て、ブロック632に進む。ブロック632では、サービス・プロセッサ130が、コア(1)160Bがグッドとテストされたか否かを判別することを示す。グッドであれば、ブロック634に示すように、サービス・プロセッサ130は、フューズオーバーライド・ラッチ240をクリアし、これにより、マルチプレクサ234Aにインバータ232Aからの低レベル信号を渡し、マルチプレクサ234Bにインバータ232Bからの高レベル信号を渡し、コア(1)160Bをバーチャル・コア(0)として動作させ、コア(0)160Aからの出力を阻止させる。次に、ブロック636および638に示すように、サービス・プロセッサ130は、出力イネーブル・ラッチ270をセットし、コア(0)160Aを非アクティブにし、コア(1)160Bをアクティブにする。次に、プロセスは、接続記号Dを経て、ブロック546に進む。ブロック546では、サービス・プロセッサ130が、バーチャル・コア(0)に制御を渡すことを示す。次に、ブロック548に示すように、プロセスは、終了する。しかし、ブロック632で、コア(1)160Bがバッドとテストされたと判別されると、ブロック640および642に示すように、致命的エラーが報告され、プロセスは、終了する。
【0041】
従って、本発明の部分的グッド論理は、CPU110のようなマルチコア・プロセッサのカスタマイズされた静的および動的構成を可能にする。特に、本発明は、フューズおよびブート・コードを用いて、使用される特定の構成を制御することを可能にし、1つのコアが他のコアをエミュレートすることを可能にする必要があるときに入力をリダイレクトし、全ての休止コアからの出力を阻止することができる。
【0042】
付加的な部分的グッド出力論理(Additional Partial−Good Output Logic)
さらに、部分的グッド論理は、LSU222Aおよび222B以外のコア(0)160Aおよびコア(1)160Bの部分から来る出力をリダイレクトする働きをする回路(構成レジスタ224Aおよび224BおよびPIR/SPR226および226Bのような)を含む。例えば、図3を再び参照すると、グローバル障害アイソレーション・レジスタ(FIR)310へ出力を接続する典型的な部分的グッド論理を示す。部分的グッド論理は、コア(0)160Aおよびコア(1)160Bのエラー信号生成器とそれぞれ通信するラッチ320Aおよび320Bを有する。図2の出力イネーブル・ラッチ270が、高レベルに設定され(バーチャル・コア(0)がイネーブルであることを示す)、コア(0)160Aがラッチ320Aにエラー信号を伝送すると、そのエラー信号は、ANDゲート322を経て、マルチプレクサ324に送られる。さらに、マルチプレクサ324がグッド(0)マルチプレクサ234Aから高レベル選択信号を受信すると、マルチプレクサ324は、そのエラー信号をFIR310に送り、バーチャル・コア(0)に関連するエラー・フラグ326をセットする。さらに、出力イネーブル・ラッチ272が高レベルに設定され(バーチャル・コア(1)がイネーブルであることを示す)、コア(1)160Bがエラー信号を生成するが、マルチプレクサ234Aが、高レベル信号を出力する(コア(0)260Aがグッドであることを示す)と、コア(1)160Bからのエラー信号は、ラッチ320B,ANDゲート330,およびANDゲート331を経て、FIR310に送られ、バーチャル・コア(1)に関連するエラー・フラグ328をセットする。
【0043】
しかし、グッド(0)マルチプレクサ234Aが低レベル信号を出力していると、マルチプレクサ324は、コア(0)160Aよりもむしろコア(1)160Bから受信されたエラー信号を出力する。さらに、グッド(0)マルチプレクサ234Aからの低レベル信号は、コア(1)160BからANDゲート331のエラー・フラグ328までの信号のためのパスを阻止するが、マルチプレクサ332が、コア(0)イネーブル信号をANDゲート330に出力する。従って、コア(1)160Bがバーチャル・コア(0)として動作していると、部分的グッド論理は、コア(1)160Bからバーチャル・コア(0)に関連するエラー・フラグにエラー信号を送信する。
【0044】
さらに、部分的グッド論理は、外部割り込み,命令取出しユニット(IFU),および他のエラー指示および制御信号のためのパスのような中央処理ユニット110の他の機能パス上の入力および出力を動的にリダイレクトする同様の回路を含む。従って、CPU110の外部にあるデータ処理システム100の要素は、バーチャル・コア(0)をアドレス指定するために簡単にハードワイヤすることができ、たとえ、コア(0)160Aがバッドであっても、これらの要素からの信号を、コア(0)160Aのエミュレーションであるコア(1)160Bによって有効に処理することができる。同様にして、エンジニアリング・コードおよびテスト・コードは、可能なグッドコア/バッドコアの組合せの全てを処理する複雑な条件付き処理論理を含む必要はないが、バーチャル・コア(0)をアドレス指定するように、また、特定のタスクに必要とされる処理コアをアクティブまたは非アクティブにするように、簡単に構成することができる。
【0045】
さらに、本発明は、実行時にコアをアクティブまたは非アクティブにすることができるので、サービス・プロセッサ130は、ブート・プロセスが完了して通常動作が始まった後に生じるアクティブ・コアの誤動作に自動的に応答するようにプログラミングすることができる。例えば、サービス・プロセッサ130は、上述した部分的グッド論理を用いることによって、コアの誤動作の通知に応答するようにプログラミングされ、バッドコアを自動的に非アクティブにすることができる。また、プログラムは、グッドコアが使用可能かつ非アクティブであると、グッドコアを自動的にアクティブにし、誤動作コアをエミュレートすることができ、これにより、システム・クラッシュを回避することができる。さらに、本発明は、実行時に非アクティブ・コアをアクティブにさせ、これにより、ベンダーは、顧客サイトで動作中のコンピュータの処理電力をアップグレードするのに必要とされるダウン時間を最小にするか、排除することができる。
【0046】
上述したように、本発明は、マルチコア・プロセッサを動的に構成する方法およびシステムを提供する。特に、本発明は、コアを動的にアクティブおよび非アクティブにすることができ(例えば、製造テスト中,ブート時,実行時に)、1つのコアに他のコアをエミュレートさせるように構成することができる部分的グッド論理を与える。例えば、本発明の例示の実施例は、欠陥コアを非アクティブにし、デフォルトによって1つのコアに他のコアをエミュレートさせるためにブローされるフューズと、デフォルト構成をオーバーライドするように設定できるラッチとを特徴とする(例えば、バッドコアを初期化して、そのコアの誤動作に応じてコアを非アクティブにしたり、および/または、障害コアを交換するか、処理能力を増大するために、休止コアをアクティブにしたりする)。
【0047】
本発明を、特に、例示の実施例を参照して示し説明したが、当業者によれば、本発明の趣旨および範囲から逸脱することなく、形態および詳細の種々の変更を行うことができることが分かるであろう。例えば、例示の実施例のブート・プログラムは、コア(0)を対抗条件のない場合にはバーチャル・コア(0)として働かせ、ブート・プログラムは、コア(1)をデフォルトによってバーチャル・コア(0)として働かせるように構成することができる。
【0048】
本発明の形態を、典型的なハードウェアについて説明したが、本発明は、説明した特定のハードウェア・アーキテクチャーに限定されるものではないことが分かるべきである。例えば、本発明を、1つ以上のデュアルコアCPUを有するデータ処理システムを参照して説明したが、本発明を、容易に拡張して3つ以上のコアを有するCPUを処理することができる。また、特定のデジタル回路素子(ANDゲートおよびマルチプレクサのような)を用いて典型的な実施例を説明したが、等価の機能を論理ゲートの他の構成を用いて、できる限りソフトウェアおよび/またはファームウェアと組み合わせて実現することができる。
【0049】
まとめとして、本発明の構成に関して、以下の事項を開示する。
(1)少なくとも第1および第2の処理コアを含む少なくとも1つの中央処理ユニット(CPU)を有するデータ処理システムにおける処理コアの使用を動的に更新する方法であって、
前記少なくとも第1および第2の処理コアのうちのいずれが用いられるべきかを特定する制御入力を受信するステップと、
前記制御入力の受信に応答して、前記制御入力によって、前記少なくとも第1および第2の処理コアのうちの1つ以上をアクティブにし、前記少なくとも第1および第2の処理コアのうちの全部または1つ以上を非アクティブにすることによって、前記データ処理システムを構成するステップとを含む、処理コアの使用を動的に更新する方法。
(2)前記制御入力を受信するステップは、前記第1の処理コアが用いられるべきであり、前記第2の処理コアが用いられるべきでない第1のオプションと、前記第2の処理コアが用いられるべきであり、前記第1の処理コアが用いられるべきでない第2のオプションと、前記第1および第2の処理コアがともに用いられるべきである第3のオプションとのうちから構成オプションを特定する選択入力を受信するステップを含み、
前記データ処理システムを構成するステップは、前記特定された構成オプションにより、前記データ処理システムを構成するステップを含む、上記(1)に記載の方法。
(3)前記選択入力は、前記第1および第2の処理コアがともに用いられるべきであることを指示し、
前記データ処理システムを構成するステップは、前記第1および第2の処理コアをアクティブにするステップを含む、上記(2)に記載の方法。
(4)前記第1の処理コアが誤動作したという判別に応答して、前記制御入力を生成するステップをさらに含む、上記(1)に記載の方法。
(5)前記制御入力を受信するステップは、前記第2の処理コアが前記第1の処理コアの代わりに用いられるべきであることを指示する構成入力を受信するステップを含み、
前記データ処理システムを構成するステップは、
前記第1の処理コアにアドレス指定された情報を、前記第2の処理コアで受信させ処理させるステップと、
前記第2の処理コアからの出力を前記第1の処理コアの出力パスに送るステップとを含む、上記(1)に記載の方法。
(6)前記第1の処理コアにアドレス指定された情報を、前記第2の処理コアで受信させ処理されるステップは、
前記第2の処理コア内の1つ以上のプロセッサ識別子フィールドに,前記第1の処理コアのプロセッサ識別子を記憶させるステップを含む、上記(5)に記載の方法。
(7)前記情報は、前記プロセッサ識別子に関連する処理スレッドを含み、
前記情報を処理するステップは、前記第2の処理コア内で前記処理スレッドを実行するステップを含む、上記(6)に記載の方法。
(8)前記第2の処理コアからの出力を前記第1の処理コアの出力パスに送るステップは、出力コントローラをセットし、前記第2の処理コアからの出力を、前記出力コントローラを経て前記データ処理システムのデータ記憶装置に入力させるステップを含む、上記(5)に記載の方法。
(9)前記制御入力は、第1の構成を特定し、
前記方法は、前記第1の構成と異なる第2の構成に対応するオーバーライド入力が受信されているか否かを判別するステップをさらに含み、
前記第1の処理コアにアドレス指定された情報を、前記第2の処理コアで受信させ処理させるステップは、前記オーバーライド入力が受信されていないときのみ実行される、上記(5)に記載の方法。
(10)少なくとも第1および第2の処理コアを含む少なくとも1つの中央処理ユニット(CPU)を有するデータ処理システムにおける処理コアの使用を動的に更新する装置であって、
前記第1および第2の処理コアのうちのいずれが用いられるべきかを特定する1つ以上の制御入力を受信する入力装置と、
前記制御入力の受信に応答して、前記制御入力によって、前記第1および第2の処理コアのうちの1つ以上をアクティブにし、前記第1および第2の処理コアの全部または1つ以上を非アクティブにすることによって、前記データ処理システムを構成する構成論理とを有する、処理コアの使用を動的に更新する装置。
(11)前記第1および第2の処理コア,前記入力装置,および前記構成論理は、1つの集積回路内に設けられている、上記(10)に記載の装置。
(12)前記制御入力は、前記第1の処理コアが用いられるべきであり、前記第2の処理コアが用いられるべきでない第1のオプションと、前記第2の処理コアが用いられるべきであり、前記第1の処理コアが用いられるべきでない第2のオプションと、前記第1および第2の処理コアがともに用いられるべきである第3のオプションとのうちから構成オプションを特定する選択入力を有し、
前記構成論理は、前記特定されたオプションにより、前記データ処理システムを構成する、上記(10)に記載の装置。
(13)前記選択入力は、前記第1および第2の処理コアがともに用いられるべきであることを指示し、
前記構成論理は、前記第1および第2の処理コアをアクティブにすることによって前記選択入力に応答する、上記(10)に記載の装置。
(14)前記第1の処理コアが誤動作したという判別に応答して、前記制御入力を生成するエラー回復装置をさらに有する、上記(10)に記載の装置。
(15)前記制御入力は、前記第2の処理コアが、前記第1の処理コアの代わりに用いられるべきであることを指示し、
前記構成論理は、
前記第1の処理コアにアドレス指定された情報を、前記第2の処理コアで受信させ処理させ、
前記第2の処理コアからの出力を前記第1の処理コアの出力パスに送ることによって、前記制御入力に応答する、上記(10)に記載の装置。
(16)前記構成論理は、前記第2の処理コア内の1つ以上のプロセッサ識別子フィールドに、前記第1の処理コアのプロセッサ識別子を記憶させることによって、前記情報を前記第2の処理コアで処理させるコア・ラベリング論理を含む、上記(15)に記載の装置。
(17)前記情報は、前記プロセッサ識別子に関連する処理スレッドを含み、
前記第2の処理コアは、前記処理スレッドを実行することによって、前記情報を処理する、上記(16)に記載の装置。
(18)前記構成論理は、出力コントローラをセットすることによって、前記第2の処理コアからの出力を前記第1の処理コアの出力パスに送り、前記第2の処理コアからの出力を、前記出力コントローラを経て前記データ処理システムのデータ記憶装置に入力させる、上記(15)に記載の装置。
(19)前記制御入力は、第1の構成を特定し、
前記処理コアの使用を動的に更新する装置は、前記制御入力を生成するバッドコア・インジケータと、前記第1の構成と異なる第2の構成を特定するオーバーライド指示を生成するオーバーライド素子とをさらに有し、
前記構成論理は、前記入力装置が、前記オーバーライド入力を受信していないときのみ、前記第1の構成を実現する、上記(15)に記載の装置。
(20)少なくとも第1および第2の処理コアを含む少なくとも1つの中央処理ユニットと、
前記少なくとも第1および第2の処理コアのうちのいずれが用いられるべきかを特定する1つ以上の制御入力を受信する入力装置と、
前記制御入力に応答して、前記制御入力によって、前記少なくとも第1および第2の処理コアのうちの1つ以上をアクティブにし、前記少なくとも第1および第2の処理コアの全部または1つ以上を非アクティブにすることによって、前記データ処理システムを構成する構成論理とを有する、データ処理システム。
(21)前記第1および第2の処理コア,前記入力装置,および前記構成論理は、1つの集積回路内に設けられている、上記(20)に記載のデータ処理システム。
(22)前記制御入力は、前記第1の処理コアが用いられるべきであり、前記第2の処理コアが用いられるべきでない第1のオプションと、前記第2の処理コアが用いられるべきであり、前記第1の処理コアが用いられるべきでない第2のオプションと、前記第1および第2の処理コアがともに用いられるべきである第3のオプションとのうちから構成オプションを特定する選択入力を有し、
前記構成論理は、前記特定された構成オプションにより、前記データ処理システムを構成する、上記(20)に記載のデータ処理システム。
(23)前記選択入力は、前記第1および第2の処理コアがともに用いられるべきであることを指示し、
前記構成論理は、前記第1および第2の処理コアをアクティブにすることによって、前記選択入力に応答する、上記(22)に記載のデータ処理システム。
(24)前記第1の処理コアが、誤動作したという判別に応答して前記制御入力を生成するエラー回復装置をさらに有する、上記(20)に記載のデータ処理システム。
(25)前記制御入力は、前記第2の処理コアが、前記第1の処理コアの代わりに用いられるべきであることを指示し、
前記構成論理は、
前記第1の処理コアにアドレス指定された情報を、前記第2の処理コアで受信させ処理させ、
前記第2の処理コアからの出力を前記第1の処理コアの出力パスに送ることによって、前記制御入力に応答する、上記(20)に記載のデータ処理システム。
(26)前記構成論理は、前記第2の処理コア内の1つ以上のプロセッサ識別子フィールドに、前記第1の処理コアのプロセッサ識別子を記憶させることによって、前記第2の処理コアで処理すべき前記情報を生成するコア・ラベリング論理を含む、上記(25)に記載のデータ処理システム。
(27)前記情報は、前記プロセッサ識別子に関連する処理スレッドを含み、
前記第2の処理コアは、前記処理スレッドを実行することによって、前記情報を処理する、上記(26)に記載のデータ処理システム。
(28)前記構成論理は、出力コントローラをセットすることによって、前記第2の処理コアからの出力を前記第1の処理コアの出力パスに送り、前記第2の処理コアからの出力を、前記出力コントローラを経て前記データ処理システムのデータ記憶装置に入力させる、上記(25)に記載のデータ処理システム。
(29)前記制御入力は、第1の構成を特定し、
前記システムは、前記制御入力を生成するバッドコア・インジケータと、前記第1の構成と異なる第2の構成を特定するオーバーライド指示を生成するオーバーライド素子とをさらに有し、
前記構成論理は、前記入力装置が、前記オーバーライド入力を受信していないときのみ、前記第1の構成を実現する、上記(25)に記載のデータ処理システム。
【図面の簡単な説明】
【図1】本発明によって、マルチ処理コアを持つ中央処理ユニット(CPU)を動的に構成する装置を有する典型的なデータ処理システムのブロック図である。
【図2】図1のデータ処理システムのCPUの詳細なブロック図である。
【図3】図2のCPUにおいて、本発明によって、典型的なタイプの出力を適切な宛先に送る装置のブロック図である。
【図4】図2のCPUの典型的なロード/記憶ユニット内の例示のプロセッサ識別子フィールドの構造を示す図である。
【図5】本発明によって、1つの処理コアを用いて他の処理コアにエミュレートするために図2のCPUを構成するブート・プロセス内の例示の方法の論理フローチャートである。
【図6】本発明によって、1つの処理コアを用いて他の処理コアにエミュレートするために図2のCPUを構成するブート・プロセス内の例示の方法の論理フローチャートである。
【図7】本発明によって、1つの処理コアを用いて他の処理コアにエミュレートするために図2のCPUを構成するブート・プロセス内の例示の方法の論理フローチャートである。
【符号の説明】
100 データ処理システム
110 CPU
120 システム・バス
122 メモリ・マネジャー
124 RAM
130 サービス・プロセッサ
152 ブリッジ
160 ディスクドライブ
160A,160B 処理コア
162 I/Oデバイス
170 記憶コントローラ
172 キャッシュ
210 クロックおよびスキャン制御論理
222A,222B LSU
224A,224B 構成/状態レジスタ
226A,226B PIR
250 インバータ
230A バッドコア(0)フューズ
230B バッドコア(1)フューズ
232A,232B インバータ
234A,234B マルチプレクサ
240 フューズオーバーライド・ラッチ
242A,242B ANDゲート
244A,244B 構成レジスタ
246A,246B LSU出力バス
260A グッド(0)ラッチ
260B グッド(1)ラッチ
264 マルチプレクサ
310 グローバルFIR
320A,320B ラッチ
326,328 エラー・フラグ

Claims (14)

  1. 少なくとも第1および第2の処理コアを含む少なくとも1つの中央処理ユニット(CPU)を有するデータ処理システムにおける処理コアの使用を動的に更新する方法であって、
    前記少なくとも第1および第2の処理コアのうちのいずれを用いるかを特定する制御入力を受信するステップと、
    前記制御入力の受信に応答して、前記少なくとも第1および第2の処理コアのうちの1つ以上をアクティブにし、前記少なくとも第1および第2の処理コアのうちの全部または1つ以上を非アクティブにすることによって、前記データ処理システムを構成するステップとを含み、
    前記制御入力を受信するステップは、前記第1の処理コアを用いて、前記第2の処理コアを用いない第1のオプションと、前記第2の処理コアが用いて、前記第1の処理コアを用いない第2のオプションと、前記第1および第2の処理コアをともに用いる第3のオプションのうちから構成オプションを特定する選択入力を受信するステップを含み、
    前記データ処理システムを構成するステップは、前記特定された構成オプションにより、前記データ処理システムを構成するステップを含むことを特徴とする、処理コアの使用を動的に更新する方法。
  2. 前記第1の処理コアが誤動作したという判別に応答して、前記制御入力を生成するステップをさらに含む、請求項1に記載の方法。
  3. 前記制御入力を受信するステップは、前記第2の処理コアを前記第1の処理コアの代わりに用いることを指示する構成入力を受信するステップを含み、
    前記データ処理システムを構成するステップは、
    前記第1の処理コアにアドレス指定された情報を、前記第2の処理コアで受信させ処理させるステップと、
    前記第2の処理コアからの出力を前記第1の処理コアの出力パスに送るステップとを含む、請求項1に記載の方法。
  4. 前記第1の処理コアにアドレス指定された情報を、前記第2の処理コアで受信させ処理されるステップは、
    前記第2の処理コア内の1つ以上のプロセッサ識別子フィールドに、前記第1の処理コアのプロセッサ識別子を記憶させるステップを含む、請求項に記載の方法。
  5. 前記情報は、前記プロセッサ識別子に関連する処理スレッドを含み、
    前記情報を処理するステップは、前記第2の処理コア内で前記処理スレッドを実行するステップを含む、請求項に記載の方法。
  6. 前記第2の処理コアからの出力を前記第1の処理コアの出力パスに送るステップは、出力コントローラをセットし、前記第2の処理コアからの出力を、前記出力コントローラを経て前記データ処理システムのデータ記憶装置に入力させるステップを含む、請求項に記載の方法。
  7. 少なくとも第1および第2の処理コアを含む少なくとも1つの中央処理ユニットと、
    前記少なくとも第1および第2の処理コアのうちのいずれを用いるかを特定する1つ以上の制御入力を受信する入力装置と、
    前記制御入力に応答して、前記少なくとも第1および第2の処理コアのうちの1つ以上をアクティブにし、前記少なくとも第1および第2の処理コアの全部または1つ以上を非アクティブにすることによって、前記データ処理システムを構成する構成論理とを有し、
    前記制御入力は、前記第1の処理コアを用いて、前記第2の処理コアを用いない第1のオプションと、前記第2の処理コアを用いて、前記第1の処理コアを用いない第2のオプションと、前記第1および第2の処理コアをともに用いる第3のオプションのうちから構成オプションを特定する選択入力を有し、
    前記構成論理は、前記特定されたオプションにより、前記データ処理システムを構成することを特徴とする、データ処理システム。
  8. 前記第1および第2の処理コア,前記入力装置,および前記構成論理は、1つの集積回路内に設けられている、請求項に記載のデータ処理システム。
  9. 前記選択入力は、前記第1および第2の処理コアをともに用いることを指示し、
    前記構成論理は、前記第1および第2の処理コアをアクティブにすることによって、前記選択入力に応答する、請求項に記載のデータ処理システム。
  10. 前記第1の処理コアが、誤動作したという判別に応答して前記制御入力を生成するエラー回復装置をさらに有する、請求項に記載のデータ処理システム。
  11. 前記制御入力は、前記第2の処理コア前記第1の処理コアの代わりに用いことを指示し、
    前記構成論理は、
    前記第1の処理コアにアドレス指定された情報を、前記第2の処理コアで受信させ処理させ、
    前記第2の処理コアからの出力を前記第1の処理コアの出力パスに送ることによって、前記制御入力に応答する、請求項
    に記載のデータ処理システム。
  12. 前記構成論理は、前記第2の処理コア内の1つ以上のプロセッサ識別子フィールドに、前記第1の処理コアのプロセッサ識別子を記憶させることによって、前記第2の処理コアで処理すべき前記情報を生成する論理を含む、請求項11に記載のデータ処理システム。
  13. 前記情報は、前記プロセッサ識別子に関連する処理スレッドを含み、
    前記第2の処理コアは、前記処理スレッドを実行することによって、前記情報を処理する、請求項12に記載のデータ処理システム。
  14. 前記構成論理は、出力コントローラをセットすることによって、前記第2の処理コアからの出力を前記第1の処理コアの出力パスに送り、前記第2の処理コアからの出力を、前記出力コントローラを経て前記データ処理システムのデータ記憶装置に入力させる、請求項12に記載のデータ処理システム。
JP2001000007A 2000-01-10 2001-01-04 処理コアの使用を動的に更新する方法および装置 Expired - Fee Related JP3706542B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/483,260 US6550020B1 (en) 2000-01-10 2000-01-10 Method and system for dynamically configuring a central processing unit with multiple processing cores
US09/483260 2000-01-10

Publications (2)

Publication Number Publication Date
JP2001222516A JP2001222516A (ja) 2001-08-17
JP3706542B2 true JP3706542B2 (ja) 2005-10-12

Family

ID=23919362

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001000007A Expired - Fee Related JP3706542B2 (ja) 2000-01-10 2001-01-04 処理コアの使用を動的に更新する方法および装置

Country Status (2)

Country Link
US (1) US6550020B1 (ja)
JP (1) JP3706542B2 (ja)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4786805B2 (ja) * 2001-02-16 2011-10-05 シャープ株式会社 半導体装置
US7418642B2 (en) 2001-07-30 2008-08-26 Marvell International Technology Ltd. Built-in-self-test using embedded memory and processor in an application specific integrated circuit
US20030065970A1 (en) * 2001-09-28 2003-04-03 Kadam Akshay R. System and method for creating fault tolerant applications
US6907548B2 (en) * 2002-01-02 2005-06-14 Intel Corporation Automatic testing for multi-core architecture
US6983398B2 (en) * 2002-04-24 2006-01-03 Hewlett-Packard Development Company, L.P. Testing processors
US7337314B2 (en) 2003-04-12 2008-02-26 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processor
US7661130B2 (en) * 2003-04-12 2010-02-09 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processing architecture using multiple queuing mechanisms
US7657933B2 (en) * 2003-04-12 2010-02-02 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processing architecture using multiple groups
US20050050310A1 (en) * 2003-07-15 2005-03-03 Bailey Daniel W. Method, system, and apparatus for improving multi-core processor performance
US7623894B2 (en) * 2003-10-09 2009-11-24 Freescale Semiconductor, Inc. Cellular modem processing
US7206966B2 (en) * 2003-10-22 2007-04-17 Hewlett-Packard Development Company, L.P. Fault-tolerant multi-core microprocessing
JP4233446B2 (ja) * 2003-12-25 2009-03-04 富士通マイクロエレクトロニクス株式会社 集積回路装置
US20050154573A1 (en) * 2004-01-08 2005-07-14 Maly John W. Systems and methods for initializing a lockstep mode test case simulation of a multi-core processor design
US7500056B2 (en) * 2004-07-21 2009-03-03 Hewlett-Packard Development Company, L.P. System and method to facilitate reset in a computer system
US7451333B2 (en) * 2004-09-03 2008-11-11 Intel Corporation Coordinating idle state transitions in multi-core processors
US7664970B2 (en) 2005-12-30 2010-02-16 Intel Corporation Method and apparatus for a zero voltage processor sleep state
US20070156992A1 (en) * 2005-12-30 2007-07-05 Intel Corporation Method and system for optimizing latency of dynamic memory sizing
US7966511B2 (en) 2004-07-27 2011-06-21 Intel Corporation Power management coordination in multi-core processors
US8015392B2 (en) * 2004-09-29 2011-09-06 Intel Corporation Updating instructions to free core in multi-core processor with core sequence table indicating linking of thread sequences for processing queued packets
US7734741B2 (en) * 2004-12-13 2010-06-08 Intel Corporation Method, system, and apparatus for dynamic reconfiguration of resources
US7738484B2 (en) * 2004-12-13 2010-06-15 Intel Corporation Method, system, and apparatus for system level initialization
WO2007006592A2 (en) * 2005-07-12 2007-01-18 International Business Machines Corporation Method and system for reconfiguring functional capabilities in a data processing system with dormant resources
DE102005037236A1 (de) * 2005-08-08 2007-02-15 Robert Bosch Gmbh Vorrichtung und Verfahren zur Konfiguration einer Halbleiterschaltung
US20070061535A1 (en) * 2005-09-12 2007-03-15 Microsoft Corporation Processing unit enclosed operating system
US7624318B2 (en) * 2005-09-27 2009-11-24 International Business Machines Corporation Method and apparatus for automatically identifying multiple combinations of operational and non-operational components on integrated circuit chips with a single part number
US7484153B2 (en) * 2005-12-06 2009-01-27 Kabushiki Kaisha Toshiba Systems and methods for LBIST testing using isolatable scan chains
CN101366004A (zh) * 2005-12-06 2009-02-11 波士顿电路公司 用于带有专用线程管理的多核处理的方法和设备
US20070174679A1 (en) * 2006-01-26 2007-07-26 Ibm Corporation Method and apparatus for processing error information and injecting errors in a processor system
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
WO2008047179A1 (en) * 2006-10-20 2008-04-24 Freescale Semiconductor, Inc. Device having redundant core and a method for providing core redundancy
US8412981B2 (en) * 2006-12-29 2013-04-02 Intel Corporation Core sparing on multi-core platforms
US7661050B2 (en) * 2007-05-04 2010-02-09 International Business Machines Corporation Method and system for formal verification of partial good self test fencing structures
US8225315B1 (en) 2007-07-23 2012-07-17 Oracle America, Inc. Virtual core management
US7739637B2 (en) * 2007-08-31 2010-06-15 International Business Machines Corporation Partial good schema for integrated circuits having parallel execution units
US8195986B2 (en) * 2008-02-25 2012-06-05 International Business Machines Corporation Method, system and computer program product for processing error information in a system
US7941699B2 (en) * 2008-03-24 2011-05-10 Intel Corporation Determining a set of processor cores to boot
US9678775B1 (en) * 2008-04-09 2017-06-13 Nvidia Corporation Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment
US20090292849A1 (en) * 2008-05-22 2009-11-26 Khoo Ken Adaptable pci express controller core
ES2423555T3 (es) * 2009-01-07 2013-09-23 Abb Research Ltd. Dispositivo y sistema de automatización de subestación
ES2385632T3 (es) 2009-01-07 2012-07-27 Abb Research Ltd. Dispositivo electrónico inteligente y método de diseño de un sistema de automatización de subestaciones
US8819484B2 (en) * 2011-10-07 2014-08-26 International Business Machines Corporation Dynamically reconfiguring a primary processor identity within a multi-processor socket server
US9184991B2 (en) * 2012-01-13 2015-11-10 American Megatrends, Inc. Method and apparatus for developing service processor solutions
US9514069B1 (en) 2012-05-24 2016-12-06 Schwegman, Lundberg & Woessner, P.A. Enhanced computer processor and memory management architecture
US9626220B2 (en) 2015-01-13 2017-04-18 International Business Machines Corporation Computer system using partially functional processor core
US10552270B2 (en) 2016-12-22 2020-02-04 Intel Corporation Systems and methods for in-field core failover

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4823256A (en) * 1984-06-22 1989-04-18 American Telephone And Telegraph Company, At&T Bell Laboratories Reconfigurable dual processor system
US5544174A (en) * 1994-03-17 1996-08-06 The United States Of America As Represented By The Secretary Of The Air Force Programmable boundary scan and input output parameter device for testing integrated circuits
US5875294A (en) * 1995-06-30 1999-02-23 International Business Machines Corporation Method and system for halting processor execution in response to an enumerated occurrence of a selected combination of internal states
US5931931A (en) 1997-04-04 1999-08-03 International Business Machines Corporation Method for bus arbitration in a multiprocessor system
US6134675A (en) * 1998-01-14 2000-10-17 Motorola Inc. Method of testing multi-core processors and multi-core processor testing device
GB9818377D0 (en) * 1998-08-21 1998-10-21 Sgs Thomson Microelectronics An integrated circuit with multiple processing cores
US6378027B1 (en) * 1999-03-30 2002-04-23 International Business Machines Corporation System upgrade and processor service

Also Published As

Publication number Publication date
US6550020B1 (en) 2003-04-15
JP2001222516A (ja) 2001-08-17

Similar Documents

Publication Publication Date Title
JP3706542B2 (ja) 処理コアの使用を動的に更新する方法および装置
US5860002A (en) System for assigning boot strap processor in symmetric multiprocessor computer with watchdog reassignment
JP3683838B2 (ja) 正常なコンピュータ処理を継続する方法及びマルチスレッド・コンピュータ・システム
US5187802A (en) Virtual machine system with vitual machine resetting store indicating that virtual machine processed interrupt without virtual machine control program intervention
KR100388550B1 (ko) 멀티쓰레드 컴퓨터 프로세서의 쓰레드 능력 변경
JP3954088B2 (ja) 論理分割された(lpar)計算機でシステム・ファームウェア更新を安全に実行する機構
US6865688B2 (en) Logical partition management apparatus and method for handling system reset interrupts
US6216226B1 (en) Method and system for dynamically selecting a boot process within a data processing system
US7627781B2 (en) System and method for establishing a spare processor for recovering from loss of lockstep in a boot processor
US5764882A (en) Multiprocessor system capable of isolating failure processor based on initial diagnosis result
US7984219B2 (en) Enhanced CPU RASUM feature in ISS servers
JP2003323306A (ja) 論理パーティション・データ処理システムでのエラーまたはイベントを処理する方法、コンピュータ・プログラム、データ処理システム
EP1573978B1 (en) System and method for programming hyper transport routing tables on multiprocessor systems
JPH0430053B2 (ja)
US4841434A (en) Control sequencer with dual microprogram counters for microdiagnostics
JP2003058383A (ja) ロジカル・パーティショニングの実施をテストする方法、その方法をコンピュータに実行させるためのプログラムを記録コンピューター可読記録媒体及びロジカル・パーティショニング・テスト・システム
US20030093510A1 (en) Method and apparatus for enumeration of a multi-node computer system
US7308566B2 (en) System and method for configuring lockstep mode of a processor module
TW584800B (en) Method, computer and peripheral/expansion bus bridge for booting up with debug system
JP3118002B2 (ja) 障害を有するマイクロ命令を訂正するためのデータ処理装置
KR100828755B1 (ko) 시스템을 부팅하기 위해 프로세서들 및 관련 펌웨어의양호한 그룹을 결정하는 시스템 및 방법
US8032791B2 (en) Diagnosis of and response to failure at reset in a data processing system
KR19980079596A (ko) 멀티 프로세서 시스템의 프로세서 정지 상태 구현 방법 및 장치
US6745269B2 (en) Method and apparatus for preservation of data structures for hardware components discovery and initialization
JP2001022599A (ja) フォールトトレラント・システム,フォールトトレラント処理方法およびフォールトトレラント制御用プログラム記録媒体

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041207

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050304

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050606

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: 20050719

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050729

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: 20080805

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20090805

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100805

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110805

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120805

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees