JP4887150B2 - コプロセッサを監視及びリセットするための方法及び装置 - Google Patents

コプロセッサを監視及びリセットするための方法及び装置 Download PDF

Info

Publication number
JP4887150B2
JP4887150B2 JP2006527509A JP2006527509A JP4887150B2 JP 4887150 B2 JP4887150 B2 JP 4887150B2 JP 2006527509 A JP2006527509 A JP 2006527509A JP 2006527509 A JP2006527509 A JP 2006527509A JP 4887150 B2 JP4887150 B2 JP 4887150B2
Authority
JP
Japan
Prior art keywords
coprocessor
reset
hang
processor
response
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.)
Active
Application number
JP2006527509A
Other languages
English (en)
Other versions
JP2007507034A (ja
Inventor
ジャン,イーナン
チェン,ジェフリー・ジー
チャン,ヒン・ポン
Original Assignee
エイティーアイ・テクノロジーズ,ユーエルシー
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
Priority to US10/672,180 priority Critical patent/US8250412B2/en
Priority to US10/672,180 priority
Application filed by エイティーアイ・テクノロジーズ,ユーエルシー filed Critical エイティーアイ・テクノロジーズ,ユーエルシー
Priority to PCT/IB2004/003089 priority patent/WO2005031575A2/en
Publication of JP2007507034A publication Critical patent/JP2007507034A/ja
Application granted granted Critical
Publication of JP4887150B2 publication Critical patent/JP4887150B2/ja
Application status is Active legal-status Critical
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/1441Resetting or repowering

Description

本発明は、一般に、コンピュータシステムまたは他のシステム内のハングの検出及び前記ハングからの回復に関し、特に、コプロセッサ内のハングを検出し且つ前記コプロセッサの回復を行なう装置及び方法に関する。

加速グラフィックレンダリングの分野での開発を促進するため、多量のグラフィックデータの高速処理に対する需要は着実に増え続けている。現在の加速グラフィックレンダリング方式は、ハードウェアコンポーネント及びソフトウェアコンポーネントの両方の正確な設計及び実施を必要とする複雑なプロセスである。加速グラフィックレンダリングは、一般にハードウェア、通常はグラフィックプロセッサと、ソフトウェア、通常はホストプロセッサによって実行されているグラフィックドライバとを使用して、グラフィックデータ及びビデオ情報の処理を最適化するようになっている。設計上の欠陥や実施不良等の任意の問題は、加速グラフィックレンダリングを正常に動作させない可能性があるとともに、加速グラフィックレンダリングの機能を停止させる可能性がある。そのような問題としては、グラフィックプロセッサの欠陥、バスコントローラの欠陥、中央処理ユニット(CPU)の欠陥、あるいは、他のハードウェアの欠陥を挙げることができる。他の問題として、グラフィックドライバ、オペレーティングシステム、グラフィックアプリケーションまたは他のソフトウェアにおける欠陥を含み得る。

加速グラフィックレンダリングで使用されているハードウェア及びソフトウェアは、複雑であり、また、前記ハードウェア及びソフトウェアが様々な形態で組み合わされていると更に複雑になるため、グラフィックプロセッサは、多くの場合、完全なハングを含んでいる様々なレンダリングエラーに直面するようになっている。ハングは、システムまたはプロセスが応答しなくなる状態、例えば、プロセッサが機能を停止し、ロックし、無限ループで立ち往生しているなどして、プロセッサが中断してしまう状態である。現在、前記ハングは、データ損失を引き起こす可能性があるとともに、コンピュータシステム全体の動作を停止させてしまう可能性がある。残念ながら、新たな加速グラフィックレンダリングハードウェア及びソフトウェアが絶え間なく導入され、それに応じて、これらの間で考え得る多数の組み合わせがなされていることから、加速グラフィックレンダリングのエラーを引き起こす可能性がある全てのエラーを完全に特定して排除することが難しくなっている。

現在、加速グラフィックレンダリングのエラーを検出するために使用されている方法は、グラフィックドライバにおけるハングのオペレーティングシステムレベル検出に依存しており、対応しているグラフィックプロセッサのハングを直接に検出しない。例えば、加速グラフィックレンダリングプロセスでエラーが発生したかどうかを検出するためにMicrosoft Windows(登録商標)XPによって使用されている方法は、グラフィックドライバでハングが存在するかどうかを検出することである。ここで、「ウォッチドッグタイマ」は、スピンループを行なうことによりグラフィックドライバで費やされた時間を測定した後、グラフィックプロセッサの応答を待つ。無限ループの検出は、グラフィックプロセッサがハング状態であるらしいという符号として、オペレーティングシステムにより使用されている。タイムアウト処理が終了すると、オペレーティングシステムは、グラフィックドライバを停止させて、通知をユーザに表示し、コンピュータの再起動をユーザに促す。ここで、ウォッチドッグタイマは、レンダリングコマンドが現在ドライバによって処理されているかどうかに関して考慮することなく、定期的に実行するようになっている。

Microsoft Windows(登録商標)XPは、グラフィックドライバ内でハング状態であると思われるものを、多量のレンダリングコマンドの実際に継続中の実行のものから区別することができない。これは、いずれも所定の待ち時間に照らして遅い応答として現れるだけだからである。また、Microsoft Windows(登録商標)XPを用いると、しばしば、グラフィックドライバに任意のコマンドが発行されたかどうかに関して考慮することなくグラフィックドライバがハング状態であるかどうかをシステムが決定しようとする場合、すなわち、グラフィックドライバが現在アイドル状態であるかどうかをシステムが決定しようとする場合に、システムリソースが浪費される。また、Microsoft Windows(登録商標)XPがハング状態のグラフィックプロセッサであると確信するものを検出すると、システム全体を再起動しなければならず、これにより、ユーザは、全てのハードウェアコンポーネント及びソフトウェアコンポーネントを、これらがグラフィックプロセッサにおけるハングの原因となっているかどうかとは無関係に終了しなければならない。

ハング状態のグラフィックドライバを検出するために使用されている他の方法は、Microsoft Windows(登録商標)XPサービスパック1(SP1)において使用されている方法である。ここでも、同じ「ウォッチドッグタイマ」が使用されているが、ハング状態のグラフィックドライバの検出に応じて、システムは、グラフィックドライバをアンロードするとともに、非加速モードでグラフィックレンダリング動作を続けようとして標準VGAドライバをロードするようになっている。この構成は、ユーザに実行中の作業を保存させることができるようにすることにより、また、その後にコンピュータを再起動させることができるようにすることにより、データ損失を防止する構成となっている。しかしながら、SP1を使用していると、システムが非加速モードに切換わる際に、加速グラフィックレンダリングモードで動作するという利点が失われる。また、Microsoft Windows(登録商標)XPシステムと同様に、SP1は、グラフィックドライバからの遅い応答と完全なハングとを区別することができない。また、SP1が非加速モードに切換わると、システムが加速グラフィックレンダリングモードに戻ることができる唯一の方法は、システム全体の再起動を行なうことである。ここでも、同様に、ユーザは、全てのハードウェアコンポーネント及びソフトウェアコンポーネントを、これらのコンポーネントがグラフィックプロセッサのハングの原因となっているかどうかとは無関係に、終了しなければならない。

以下の図面を参照すると本発明を更に容易に理解できる。図中、同様の参照符号は同じ要素を表わしている。

簡潔に言うと、回路はコプロセッサを監視及びリセットするようになっている。回路は、コプロセッサ内のハングを検出するためのハング検出モジュールを含んでいる。また、回路は、コプロセッサ内でのハングの検出に応じて、プロセッサをリセットすることなくコプロセッサをリセットするための選択プロセッサリセットモジュールも含んでいる。

この文書で使用されている「モジュール」という用語は、多くの機能回路の組のうちの機能的な一部をいう。「回路」という用語は、以下のうちの少なくとも1つ、すなわち、命令を実行する一つまたは複数のプロセッサ、例えばマイクロプロセッサ、デジタル信号プロセッサ(DSP)、マイクロコントローラ、またはディスクリートロジック、ステートマシン、または、ハードウェア、ソフトウェア及び/又はファームウェアの任意の適当な組み合わせのうちの少なくとも1つを含んでいる。当業者であれば分かるように、一つまたは複数のモジュールが、回路の機能的な組からなる、より大きなセットとして組み合わされてもよい。また、1つのモジュールからの任意の機能性を1つのモジュールから他のモジュールへ移すことができる。

この文書で使用されているコプロセッサという用語は、第1のプロセッサに対する第2のプロセッサを意味している。そのようなコプロセッサは、例えば、汎用プロセッサ、周辺機器プロセッサ(例えば、グラフィックプロセッサ、オーディオプロセッサ等)または他の同様のプロセッサを挙げることができる。

この文書で使用されている「プロセッサハング」という用語は、例えばプロセッサが無限ループに入り込んだ際にプロセッサの外側からの入力にもはや応答しないプロセッサを説明するために使用されている。そのような場合、プロセッサが再び外部入力に対して応答でき且つ装置が設計されたときのように動作できるようにプロセッサをリブートまたはリセットする必要がある。

コプロセッサのリセット中、一般に、プロセッサに関連する一つまたは複数のソフトウェア及び/又はハードウェアコンポーネントがリセットされ、それにより、プロセッサがその意図された設計にしたがって動作することができる。リセットは、一般に処理装置の電源が入れられている際に行なわれるようなパワーアップ時間またはブートアップ時間で実行されるタイプのリセットを挙げることができる。しかしながら、パワーアップリセットと同じではない他のリセットを行なうこともできる。リセットは、特定のコプロセッサのために利用できる多くの異なるタイプのリセットであってもよい。1つの実施形態においては、コプロセッサ内でのハングの検出に応じて、任意の数の異なるタイプのリセットが行なわれてもよい。この実施形態において、異なるリセットのそれぞれは、リセット時間またはその前に、コプロセッサまたは他の関連するコンポーネントの検出状態または状況に合わせられている。実行されるリセットの一般的な目的は、リセットの結果によってコプロセッサ内のハングが排除され且つプロセッサが命令の処理を再開できるようにすることである。

1つの実施形態においては、特定のコプロセッサ内のハングが、ハング状態のコプロセッサを除き、任意の他のプロセッサのリセットを必要としないという利点が得られる。したがって、同じ処理装置で実行中の他のアプリケーションは、一般に、ハング及び任意のその後のリセットから影響を受けることはない。例えば、他のコプロセッサ命令または他のアプリケーションを処理しているプロセッサは、コプロセッサのリセットによって影響されない。1つの実施形態において、プロセッサは、コプロセッサを監視及びリセットする回路のための命令を実行するようになっている。また、プロセッサは、ハング状態のコプロセッサがリセットされている間、命令を実行し続ける。

1つの実施形態においては、一般に特定のアプリケーション/コプロセッサがハング状態にあるかどうかを個別に監視しているオペレーティングシステムによって与えられているプロセスから、別個のプロセスが与えられているという利点が得られる。プロセスは、オペレーティングシステムを通して利用できる対応しているプロセスとは別個のものであるため、この別個のプロセスを、特定のプロセッサのハングを検出してリセットするのに適した特定の機能を含むように作り上げることができる。例えば、ハング検出プロセスを特定のプロセッサに合わせることにより、特定のソフトウェア及び/又はハードウェア状態の特定のチェックがその特定のプロセッサ内のハングを検出するのに最も効率的なチェックとなるようにすることもできる。

1つの実施形態においては、対象のコプロセッサ内でハングが発生したかどうかを決定するプロセスが、プロセッサがビジー状態のときにのみ実行されるという利点が提供される。ここで、命令を未だ何ら実行しておらず、したがって、ハングに直面している可能性が非常に低いアイドル状態のプロセッサは、ハングの存在に関して検査する必要がない。前記プロセッサが何らかの形でハングに直面した場合であっても、プロセッサが現在必要とされていないという事実があろうとなかろうと、このシステムは、プロセスが実際に必要とされるまで、特定のプロセッサのハング状態を無視するという利益を提供している。前記プロセッサがハング状態にある(ハングされている)かどうかに関して定期的にチェックするように構成されているシステムは、前記プロセッサが必要とされているかどうかにかかわらず、システムリソースを浪費するとともに、システムが未だ必要としないハングプロセスの検出に起因してシステムをリブートしなければならなくなる可能性をもたらす。

本発明の1つの実施形態においては、特にコプロセッサを対象にしているアプリケーションが、関連しているコプロセッサがハングに直面しているかどうかを決定するという義務を引き継ぐことができるという利点が提供される。これは、ハングが発生したかどうかを決定するために一般にオペレーティングシステムによって使用されているハング検出プロセスを使える状態にすることができる可能性がある。

1つの実施形態において、システムは、プロセッサがリセッットされている間、ハング状態にあるプロセッサとの通信を休止することができる。これにより、コプロセッサの任意の更なる不安定化を防止できるという利点が得られる。

1つの実施形態において、システムは、ハング状態にあるプロセッサのリセットを試みた後、前記プロセッサの実行の継続を許容する前に、リセットが成功したかどうかを判断するためにチェックを行なう。これにより、リセットが成功しなかった後にプロセッサが処理を続けようとすることを防止できるという利点が得られる。

1つの実施形態において、システムは、プロセッサをリセットした後、以前にハング状態にあったプロセッサが機能しているかどうかを判断することにより、コプロセッサの動作を再開するかどうかを決定する。これにより、プロセッサが機能していないことが判断される時にプロセッサが処理を再開しようとすることを防止できるという利点が得られる。1つの実施形態において、システムは、最初に、リセットが成功したかどうかを判断するためにチェックを行ない、成功した場合には、以前にハング状態であったプロセッサが機能しているかどうかを判断し、そうである場合には、プロセッサの使用再開を許可するようになっている。

1つの実施形態において、システムは、プロセッサハングが発生した理由を決定するためにシステムをデバッグする目的で関連しているハードウェア状態及びソフトウェア状態のスナップショットを保存するようになっている。これにより、処理問題を特定して、そのような問題の根源を、ソフトウェア及び/又はハードウェアにおけるその後のアップグレードで解決できるようにするための情報を保存するという利点が得られる。1つの実施形態において、保存される情報としては、以下のうちの一つまたは複数、すなわち、ソフトウェアまたはドライババージョン、エラー報告フォーマットバージョン、加速グラフィックポート(AGP)速度;AGPバージョンサポートグラフィックプロセッサデバイスID、グラフィックプロセッサベンダID、グラフィックプロセッササブシステムID、チップセットデバイスID、チップセットベンダID、エラーフラグ、システムメモリサイズ、グラフィックフレームバッファサイズ、エンジンクロック、メモリクロック、及びレジスタ値及びコマンドキューデータを含んでいる内部のコプロセッサ状態のうちの一つまたは複数が保存される。

1つの実施形態において、システムは、コプロセッサのベンダの電子メールアドレス等の離れた場所へハードウェア状態及びソフトウェア状態の送信を許可するようになっている。これにより、ベンダは、ベンダの製品が現場でどの程度不足しているのかに関して価値のある情報を受けることができ、したがって、現在の技術よりも更に詳しく早期に処理問題に気付くことができるという利点が得られる。

図1は、プロセッサ100、コプロセッサ102、コプロセッサを監視及びリセットするための回路104、ハング検出モジュール106、選択プロセッサリセットモジュール108、ハング通知信号110、及びコプロセッサ102をプロセッサ100に対して接続している適当なリンク112を示している。

コプロセッサ102を監視及びリセットするための回路は、ハング検出モジュール106及び選択プロセッサリセットモジュール108を含んでいる。この実施例において、コプロセッサを監視及びリセットするための回路104は、例えばコプロセッサ104によって実行されるドライバ等のプロセッサ100により実行される一つまたは複数のソフトウェアモジュールの形態をなしている。コプロセッサを監視及びリセットするための回路104は、ハング検出モジュール106及び選択プロセッサリセットモジュール108を含んでいる。ハング検出モジュール106は、コプロセッサ内のハングを検出するために使用されている。ハング検出モジュール106は、コプロセッサ102内のハングが生じる時期を特定するために、コプロセッサ102を監視する。例えば、ハング検出モジュール106は、コプロセッサ102を定期的に検査して、コプロセッサがハング状態にあるかどうかを判断してもよい。1つの実施形態において、ハング検出モジュール106は、コプロセッサのための新たな命令が送られるときにコプロセッサ102がハング状態にされるかどうかを判断しようとするだけである。他の実施形態において、ハング検出モジュール106は、実行のための命令がコプロセッサ102に割り当てられたことが確認されるときに、コプロセッサ102がハング状態にされるかどうかを決定しようとする。

例えば、ハング検出モジュール106は、コプロセッサ102が現在命令を実行しているかどうかを示しているフラグを検査し、実行している場合、同じハング検出モジュール106は、コプロセッサ102に関連しており、対応しているレジスタを検査して、前記命令の実際の処理を反映する動作がこれらのレジスタで生じているかどうかを決定する。前記レジスタにおける動作、すなわちレジスタの内容に変化がないことが検出された場合には、ハング検出モジュール106は、コプロセッサ102内でハングが検出されたことを示すハング通知信号110を選択プロセッサリセットモジュール108に対して戻す。

1つの実施形態では、特に、ハング検出モジュール106は、最初に、ビジーフラグが設定されているかどうかを確かめるためにチェックを行う。ビジーフラグが設定されていないと判断されると、ハング検出モジュール106は、非ハング通知信号(図示せず)を選択プロセッサリセットモジュール108に対して戻す。ビジーフラグが設定されていると判断されると、特定のレジスタの状態または内容が検査されて保存される(コプロセッサ102の動作を監視するために使用されるもの)。次に、待ち時間の経過が許容され、それにより、特定のレジスタ内で動作を起こすことができる。この場合も同様に、特定のレジスタの状態または内容は保存され、あるいは、少なくともそれらの内容が検査され、比較を行なうために利用できるようにされる。最終的に、待ち時間が経過する前後で発生したレジスタの内容の2つの組の間で比較が行なわれる。相違が検出される場合には、非ハング通知信号(図示せず)が選択プロセッサリセットモジュール108に対して戻される。そうではなく、相違が検出されない場合には、ハング検出モジュール106は、ハング通知信号110を選択プロセッサリセットモジュール108に対して戻す。

コプロセッサ102内でハングが発生したことを示すハング通知信号110を選択プロセッサリセットモジュール108が受けると、選択プロセッサリセットモジュール108は、プロセッサ100をリセットすることなく、コプロセッサ102を選択的にリセットする。1つの実施形態において、選択プロセッサリセットモジュール108によって行なわれるリセットは、パワーアップ時間またはリブート時間で行なわれるものと同じリセットである。このような実施形態では、コプロセッサ全体がリセットされてもよい。他の実施形態において、実行されるリセットは、パワーアップ時間で一般にリセットされるハードウェアの一部のリセッティングだけを含んでいてもよい。1つの実施形態では、複数のサブプロセッサ(図示せず)がコプロセッサ102に関連付けられる。この実施形態では、リセットが各サブプロセッサで行なわれ、一方、他の実施形態では、サブプロセッサの一部だけがリセットされる。グラフィックプロセッサに関連している前記サブプロセッサの一例は、2Dレンダリングエンジン、3Dレンダリングエンジン、3Dピクセルパイプ等である。

他の実施形態においては、リセットを確実に成功させるため、リセット機能が複数回、例えば16回呼び出される。他の実施形態において、実行されるリセットは、バス上でリセット信号をシミュレートすることによるコプロセッサ全体のリセッティングである(例えば、システムをリブートする際に行なわれるリセット)。このような実施形態においては、周辺コンポーネント相互接続(PCI)空間内の特定の場所に特定の値が書き込まれる。この実施形態は、コプロセッサを監視及びリセットするための回路108が検出できる全てのハードウェアハングのリセットを行なうことができるという利点を提供する。

他の実施形態において行われるリセットは、ハング検出モジュール106によるコプロセッサ102内のハングの検出時に実行するように具体的に設計されているリセットである。この実施形態では、選択プロセッサリセットモジュール108がコプロセッサ102だけをリセットするが、他の実施形態では、更なるプロセッサに関してリセットが行なわれる。

1つの実施形態においては、プロセッサ100によってハング検出モジュール106が実行される。他の実施形態においては、プロセッサ100がCPUである。1つの実施形態において、ハング検出モジュール106は、コプロセッサ102内のハングを検出するとともに、ハングが検出されたことを示しているハング通知信号110を選択プロセッサリセットモジュール108に対して送るようになっている。1つの実施形態では、選択プロセッサリセットモジュール108がプロセッサ100により実行され、コプロセッサを監視及びリセットするための回路104の命令をプロセッサ100が実行し続けることを許容しつつ、コプロセッサ102に関してリセットが行なわれる。

1つの実施形態では、コプロセッサ102がグラフィックプロセッサであり、グラフィックプロセッサにより実行される命令がグラフィックレンダリングコマンドである。グラフィックプロセッサは、グラフィックプロセッサが現在命令を実行しているかどうかを示すためのビジーフラグを含んでいる。1つの実施形態において、グラフィックプロセッサは、グラフィックレンダリング命令を実行するために使用されるレジスタを有している。グラフィックプロセッサ内でハングが発生したかどうかを判断するために、ハング検出モジュール106は、ビジーフラグが設定されていることを検出するとともに、一つまたは複数のグラフィックプロセッサのレジスタにおける動作を検査し続け、レジスタにおける動作がグラフィックレンダリングコマンドの実行を表わしているかどうかを判断する。ビジーフラグとグラフィックプロセッサレジスタで確認された動作との間に相違が存在する場合には、ハング検出モジュール106はハング通知信号110を選択プロセッサリセットモジュール108に対して送る。その後、選択プロセッサリセットモジュール108はグラフィックプロセッサのリセットを行なう。1つの実施形態においては、プロセッサがビジー状態でないことをビジーフラグが示すと、システムは、関連しているレジスタにおいて何らかの動作が存在するかどうかをチェックしない。

図2は、コプロセッサを監視及びリセットするための回路104を使用する方法200を示している。ステップ202において開始ノードが行なわれた後、システムがコプロセッサ内のハングを検出するステップ204が行なわれる。1つの実施形態において、図1に関して前述のように、コプロセッサ102内のハングを検出するステップは、前記コプロセッサ102に関連するビジーフラグと対応しているレジスタとの間の相違を識別することにより行なわれてもよい。この実施形態において、ハング検出モジュール106は、ビジーフラグが設定されていることを判断するようになっているが、コプロセッサ102がハング状態にあることを対応しているレジスタの動作が示していることを判断するようになっている。前述のように、1つの実施形態において、システムは、新たな一つまたは複数の命令がコプロセッサ102に対して送られるときにコプロセッサ102内のハングを検出するようになっている。更に他の実施形態において、ハング検出モジュール106は、ビジーフラグが設定されているときには常にコプロセッサ内のハングを検出するようになっている。1つの実施形態において、ハング検出モジュール106は、ビジーフラグが設定されている限り、コプロセッサ102内のハングを定期的に識別し続ける。ハング検出モジュール106によってハングが検出されると、ハング検出モジュール106は選択プロセッサリセットモジュール108に対してハング通知信号110を送る。

ステップ206において、選択プロセッサリセットモジュール108は、コプロセッサ102がハング状態にあるというハング通知信号110を受けると、プロセッサ104をリセットすることなくコプロセッサ102を選択的にリセットするようになっている。また、図1に関して前述のように、リセットされないプロセッサは、コプロセッサを監視及びリセットするための回路104を実行しているプロセッサである。他の実施形態において、プロセッサ104は、ホストプロセッサまたはCPUであり、コプロセッサを監視及びリセットするための回路104に加えて一つまたは複数のシステムプロセッサまたはアプリケーションを実行している。

図3は、プロセッサ100、コプロセッサ102、コプロセッサを監視及びリセットするための回路104、ハング検出モジュール106、選択プロセッサリセットモジュール108、及びコプロセッサ102をプロセッサ100に接続する適当なリンク112を示している。また、任意の構成要素も示されており、これらの構成要素は、破線で示されているとともに、停止通信モジュール300と、リセットチェックモジュール302と、リスタート通信モジュール304と、ハング通知信号110と、リセット通知信号306と、リセット成功通知信号308と、オペレーティングシステム310とを含んでいる。

1つの実施形態において、停止通信モジュール300は、コプロセッサ102内のハングを示しているハング通知信号110をハング検出モジュール106から受信することに応じて、コプロセッサ102とのコマンド通信を停止するために使用される。停止通信モジュール300は、ハング通知信号110の受信に応じて、コプロセッサ102に対する命令の送信を停止する。1つの実施形態において、これは、停止通信モジュール300が送信フラグをオフに設定して、コプロセッサ102に対する命令の更なる送信を防止する際に行なわれる。他の実施形態において、停止通信モジュール300は、グラフィックプロセッサから送り戻されるものが何も無いことを示すため、すなわち、信号やデータ等を戻すコプロセッサ102上で、現在実行中で終了していない命令が存在しないことを示すために、受信フラグをオフに設定するようになっている。他の実施形態においては、送信フラグ及び受信フラグの両方がそれに応じて設定される。更に他の実施形態では、受信フラグの機能がビジーフラグに取って代えられ、それにより、ビジーフラグが設定されると、コプロセッサ102が信号やデータ等を戻していると見なされ、また、ビジーフラグがオフであると、コプロセッサ102がそのような情報を戻していないと見なされる。このように、この実施形態では、選択プロセッサリセットモジュール108がビジーフラグをオフに設定し、コプロセッサ102がリセットされるようになっている。

リセットチェックモジュール302は、選択プロセッサリセットモジュール108からのリセット通知信号306の受信に応じて、リセットが成功したかどうかどうかを判断し、成功した場合には、リセットチェックモジュール302がリセット成功通知信号308を生成するようになっている。1つの実施形態において、リセット成功通知信号308はリスタート通信モジュール304に対して送られる。

1つの実施形態では、リスタート通信モジュール304が使用されている。ここで、リスタート通信モジュール304は、リセット成功通知信号308の受信に応答して、コプロセッサ102とのコマンド通信を再開するようになっている。1つの実施形態において、これは、送信フラグをオンに設定することにより行なわれる(図6参照)。他の実施形態では、これは、送信フラグをオンに、受信フラグをオンに共に設定することにより行なわれる。しかしながら、停止通信モジュール300に関して前述のように、1つの実施形態では、受信フラグをオンに設定する代わりに、ビジーフラグをオンに設定するようになっている。

また、図4は、破線で示されている3つの随意的なステップ402、404、406及び実線で示されている2つの必須のステップ204及び206に加えて、ステップ204に関連している2つの随意的なステップ制限408及び410、及び、ステップ206に関連している1つの随意的なステップ制限412も示している。ここで、開始ノード及び終了ノード202及び208は図2のそれと同じである。また、ステップ204及び206は、図2で説明して図示したステップと同じステップを表わしている。ステップ402において、システムは、コプロセッサ102内でのハングの検出に応じて、コプロセッサ102とのコマンド通信を停止するようになっている。ステップ404において、システムは、コプロセッサ102のリセッティングに応じて、コプロセッサ102のリセットが成功したかどうかを検出するようになっている。ステップ406において、システムは、コプロセッサのリセットが成功したことを検出することに応じて、コプロセッサ102とのコマンド通信を再開するようになっている。

ステップ制限408において述べたように、ステップ204は、コプロセッサ102の現在の状態とコプロセッサ102の現在の動作との間の相違の検出によりコプロセッサ内のハングを検出することに制限されている。ステップ制限410は、ステップ制限408で導入された制限に対して更に制限を課し、それにより、相違は、ビジーフラグにおいて反映されている現在のビジー状態を検出し、且つコプロセッサレジスタの内容に変化がないことを示す現在のアイドル動作状態を検出することにより検知される。ステップ制限412は、オペレーティングシステム310がプロセッサ100で実行するようにステップ206を制限するようになっている。

図5は、コプロセッサ102を監視及びリセットするためのシステム500の一例を示しており、このシステムは、プロセッサ100と、コプロセッサ102と、メモリ502と、命令504と、ハング検出モジュール命令506と、選択プロセッサリセットモジュール命令508と、メモリ502とプロセッサ100及びコプロセッサ102との間の適当な接続510、512、514及び516とを含んでいる。また、コプロセッサ102内でハングが検出されると、選択プロセッサリセットモジュール命令508に対するハング通知信号110がハング検出モジュール命令506によって生成される。本明細書で使用されているメモリ502は、以下のうちの任意の1つ、すなわち、RAM、ROM、光メモリまたは磁気メモリ、または、デジタル情報を記憶することができる任意の適当なメモリのうちの任意の1つであってもよい。メモリは、システムメモリ、システムにアクセス可能な他のメモリ、コプロセッサの特定のローカルメモリであってもよい。

命令504の組は、適当なプロセッサ100で実行されるのに適した命令であり、ハング検出モジュール命令506及び選択プロセッサリセットモジュール命令508を含んでいる。接続510、512、514及び516は、ハードワイヤード接続、ブリッジあるいはバス等を含んでいる適当な電子接続を表わしている。1つの実施形態において、接続516はホストバスを表わしている。図5に示されているシステムの詳細な動作は、図1及び図2に関して前述のそれと類似している。

図6は、プロセッサ100がホストプロセッサ602に取って代えられている点を除き図5に示されている構成要素を含んでいる、コプロセッサ102を監視及びリセットするためのシステム600を示している。1つの実施形態では、ホストプロセッサがCPUである。また、以下の随意的な命令モジュールが含まれている。すなわち、停止通信モジュール命令604と、機能チェックモジュール命令606と、リセットチェックモジュール命令608と、リスタート通信モジュール命令610とが含まれている。この実施形態において、コプロセッサ102はビジーフラグ612及びレジスタ614を含んでいる。また、メモリ502は、送信フラグ616と、受信フラグ618と、コマンドキュー620とを含んでいる。

図1に関して前述のように、送信フラグ616は、コプロセッサ102に対して送られる通信を制御するために使用されている。図1において説明したように、受信フラグ618は、コプロセッサ102からの情報の受信を制御するために使用されている。コマンドキュー620は命令504の実行により登録される。作動時、送信フラグ616がオンにされると、命令504の実行は、コマンドキュー620を経由してコプロセッサ102に対して自由に送られる。コプロセッサ102が次のコマンドを実行できる状態になると、コプロセッサ102はコマンドキュー620から次のコマンドを受ける。したがって、送信フラグ616をオフに設定することにより、コマンドキュー620へ登録するために命令504が実行されることが防止され、これにより、コプロセッサプロセス102は、新たな更なる命令にアクセスすることが防止される。また、図1に関して前述のように、ビジーフラグ612をレジスタ614と共に使用して、コプロセッサが現在ハング状態に直面しているかどうかを判断することもできる。また、図1に関して説明したように、ビジーフラグ612を受信フラグ618として使用することもできる。

図7は、グラフィックプロセッサ702の選択プロセッサリセットを監視及び要求するためのシステム700を示しており、このシステムは、プロセッサ104の代わりにホストプロセッサ602が使用され且つコプロセッサ102の代わりにグラフィックプロセッサ702が使用されている点を除き、図5に示されているシステムと同様である。

図8は、グラフィックプロセッサ702の選択プロセッサリセットを監視及び要求するためのシステム800を示しており、このシステムは、コプロセッサ102がグラフィックプロセッサ702に取って代えられている点を除き、図6に示されているシステムと同様である。また、コプロセッサのビジーフラグ612及び対応しているレジスタ614は、グラフィックプロセッサのビジーフラグ802及び対応しているグラフィックレジスタ804に取って代えられている。

図9は、グラフィックプロセッサ702の選択プロセッサリセットを監視及び要求するためのシステム900を示している。図9のシステムは、メモリ502がグラフィックコマンドキュー902及び8個の更なる命令モジュールを含んでいる点を除き、図8のシステムと類似している。8個の新たな命令モジュールは、表示モード切換モジュール命令904と、ソフトウェアレンダリングモジュール命令906と、ハング解決プロンプトモジュール命令908と、報告送信プロンプトモジュール命令910と、報告送信モジュール命令912と、ハング未解決プロンプトモジュール命令914と、機能チェックモジュール命令606と、保存スナップショットモジュール命令915とを含んでいる。また、リセットチェックモジュール命令608、停止通信モジュール命令604及びリスタート通信モジュール命令610が随意的ではない点が図8とは異なっている。

表示モード切換モジュール命令904は、リセット通知信号306の受信に応じて動作して、表示モード切換えを行なう。表示モード切換は、ディスプレイ上の全てのウインドウのリフレッシュを要求するホストシステムへの要求の送信である。複数のサブプロセッサ(図示せず)を有している1つの実施形態において、表示モード切換モジュール命令904は、サブプロセッサの一部だけをリセットさせるように動作する。ソフトウェアレンダリングモジュール命令906は機能障害通知信号916またはリセット失敗通知信号918の検出に応じて動作し、それにより、ソフトウェアレンダリングモードへの動的な切換えが行なわれる。ソフトウェアレンダリングモードへの動的な切換えの呼び出しにより、システムがソフトウェアレンダリングモードで動作し、このシステムにより、ユーザは、グラフィックプロセッサ702のリブートが行なわれる前にその作業を保存することができる。機能成功通知信号920に応じてハング解決プロンプトモジュール命令908が実行し、これにより、ハングが検出されて解決されたことを示しているプロンプトが表示される。1つの実施形態はハング解決プロンプトモジュール908を含んでおらず、したがって、表示が行なわれない。

報告送信プロンプトモジュール命令910はハング通知信号110に応じて動作するようになっている。エラー報告が離れた場所に送られることをユーザが望んでいるかどうかに関するユーザからの入力を要求するプロンプトが表示される。1つの実施形態において、離れた場所とは、グラフィックプロセッサで実行している或いは実行しようとしているアプリケーションを設計して所有しているベンダである。1つの実施形態において、報告中に含まれる情報としては、図3に関して前述のハードウェア及びソフトウェア状態情報を挙げることができる。報告送信モジュール命令912は、報告を離れた場所に送るという要求に応じて送られる送信要求通知信号922に応じて動作するようになっている。報告送信モジュール命令912は、ハードウェア状態及びソフトウェア状態を含んでいるエラー報告を離れた場所に送る。次に、リセットチェックモジュール608から最初に生成されたリセット失敗通知信号918に応じて動作する(あるいは、機能チェックモジュール命令606から生成された機能障害通知信号916に応じて動作する)ハング未解決プロンプトモジュール命令914は、ハングが検出され且つホストプロセッサのリセットが無ければハングを解決することができないことを示しているプロンプトを生成するようになっている。1つの実施形態においては、ハング未解決プロンプトモジュール914が存在せず、したがって、表示が行なわれない。

機能チェックモジュール命令606が利用されている1つの実施形態においては、リセット通知信号306の受信に応じてコプロセッサが機能しているかどうかを判断するため、機能チェックモジュール命令606は、グラフィックプロセッサ702が機能しているかどうかを判断するようになっている。機能している場合、機能チェックモジュール命令606は、リセット通信モジュール命令610に対して送られる機能成功通知信号920を生成するようになっている。リセット通信モジュール命令610は、その後、グラフィックプロセッサ702の再始動のみを行なう。

他の実施形態において、機能チェックモジュール命令606は、ハング解決プロンプトモジュール命令908によって処理される機能成功通知信号920を生成するようになっている。他の実施形態において、機能チェックモジュール命令606は、ソフトウェアレンダリングモジュール命令906によって処理される機能障害通知信号916を生成するようになっている。1つの実施形態において、機能チェックモジュール命令606は、コプロセッサ102が完全にリセットされたかどうかを決定する機能を果たす。これは、データを1つの記憶場所から他の記憶場所へとコピーし且つ2つの場所に記憶されたデータを比較することによりコピーコマンドの実行が成功したかどうかを判断するようにコプロセッサ102に対して指示する一つまたは複数の命令を、コプロセッサ102へ送ることにより行なわれる。ここで、重要なことは、コプロセッサ102が結果を解析できる演算を行なってその演算が成功したかどうかを判断することである。

1つの実施形態において、機能チェックモジュール命令606は、リセットチェックモジュール命令302によってリセット成功通知信号308が生成された場合にだけ呼び出されるようになっている。したがって、そのような実施形態において、機能チェックモジュール命令606は、コプロセッサ102のリセットの成功が検出された場合にのみ実行されるようになっている。1つの実施形態においては、プロセッサが機能していないと判断されると、CPUは、グラフィックプロセッサレンダリングの性能を引き継ぐ。この場合には、加速されないグラフィックレンダリングがCPUで実行されるため、グラフィクの加速が損なわれる。

保存スナップショットモジュール命令915は、コプロセッサ102に関連しているハードウェア状態及びソフトウェア状態のスナップショットを保存するように動作する。スナップショットは、ハング検出モジュール命令506から生成されるハング通知信号110の受信に応じて生成されるようになっている。1つの実施形態において、ハードウェア状態及びソフトウェア状態は、コプロセッサ102に関連しているレジスタデータと、コプロセッサ102に関連しているグラフィックコマンドキューデータと、チップセット情報と、AGPポート情報とを含んでいる。ハードウェア状態及びソフトウェア状態のスナップショットは、コプロセッサ102の動作に関連しているデータを取得しようとするものであり、これにより、このようなデータの解析は、コプロセッサ102がそのハングに直面した理由をデバッグする際に有益となる。

図10は、特定の実施形態の動作を列挙しているフローチャート1000を示している。このプロセスはノード1001から始まる。次に、ステップ1002において、システムは、コプロセッサ102内のハングを検出しようとする。ステップ1004において、システムは、コプロセッサ102がハング状態にあったことをコプロセッサ102のチェックが示していたかどうかを判断しようとする。コプロセッサがハング状態でなかった場合、システムはステップ1002に戻り、また、ハング状態であった場合、システムは、ステップ1006に移行して、コプロセッサ102とのレンダリングコマンド通信を停止するようになっている。ステップ1006の後、ステップ1008は、ハードウェア状態及びソフトウェア状態のスナップショットを保存する。ステップ1008の後はステップ1010であり、このステップ1010において、システムは、プロセッサ104をリセットすることなくコプロセッサ102を選択的にリセットするようになっている。ステップ1010の後にはステップ1012が行なわれ、このステップ1012において、システムは、コプロセッサ102のリセットが成功したかどうかを検出するようになっている。その後、ステップ1014は表示モード切換えを行なう。

ステップ1016が行なわれ、このステップにおいて、システムは、コプロセッサ102のリセットが成功したかどうかを判断するようになっている。コプロセッサのリセットが成功しなかったことをシステムが検出すると、システムをリブートする必要がある、後述するプロセスが始まる。しかしながら、コプロセッサ102のリセットが成功したことをシステムが検出すると、コプロセッサ102が機能しているかどうかをシステムが検出するステップ1018が行なわれる。その後、ステップ1020が行なわれ、このステップにおいて、システムは、コプロセッサ102が機能しているか否かを判断するようになっている。システムが機能していない場合には、再び、システムリブートにおいて終了するプロセスが行なわれる。そうではなく、システムが完全に機能していると見なすと、ステップ1022が行なわれる。ステップ1022において、システムは、コプロセッサ102とのレンダリングコマンド通信を再開するようになっている。その後、ステップ1024が行なわれ、このステップにおいて、システムは、ハングが検出されて解決されたというプロンプトを表示するようになっている。

次に、ステップ1026において、システムは、エラー報告が離れた場所に送られることをユーザが望むかどうかを要求するプロンプトを表示するようになっている。ステップ1028において、システムはエラー報告を送るかどうかを決定する。エラー報告が必要ないことが決定される場合、システムはステップ1002の処理に戻る。報告が要求されている場合には、ステップ1030において、ハードウェア状態及びソフトフェア状態を含んでいるエラー報告が離れた場所に送られる。ステップ1030の後、システムはステップ1002に戻り、ここで再びシステムはコプロセッサ内の新たなハングを検出しようとする。ステップ1016においてコプロセッサが完全にリセットされなかったという検出がなされると、あるいは、ステップ1020においてコプロセッサが完全に機能していなかったと決定される検出がなされると、システムは、対応しているプロセッサを、リブートしなければならないシーケンスの最初のステップであるノードAへ移行するようになっている。

図11では、ノードAの後に、ステップ1100、1102、1104、1106、1108及び最終ノード1110が続くように示されている。ステップ1100において、システムは、ソフトウェアレンダリングモードへの動的な切換えを行なう。ステップ1100の後のステップ1102において、システムは、ハングが検出され且つシステムリセットが行なわれないとこのハングを解決することができないというプロンプトを表示するようになっている。ステップ1102の後にはステップ1104が続き、このステップにおいて、システムは、エラー報告が離れた場所に送られることをユーザが望んでいるかどうかをユーザが指示することを要求するプロンプトの表示を行なう。ステップ1106では、ユーザの応答が解析され、要求が拒絶される場合には、システムはリブートが必要なステップ1110に移行し、そうではなく、報告が要求された場合には、ハードウェア状態及び/又はソフトウェア状態を含んでいるエラー報告が離れた場所に送られる。報告を送った後、システムは、その後にリブートが必要とされるステップ1110へ移行するようになっている。

本発明の他の変形及び変更ならびにその様々な態様の実施が当業者に明らかであり、本発明が前述の特定の実施形態によって限定されないことは言うまでもない。例えば、前述のステップは任意の適当な順序で行なわれてもよい。したがって、本明細書に開示されて請求された内在する基本的な原理の思想と範囲内に入る全ての変更、変形または同等物が本発明によって網羅されていると考えられる。

本発明の1つの実施形態に係る、コプロセッサを監視及びリセットするための回路の1つの実施例を示しているブロック図である。 本発明の1つの実施形態に係る、コプロセッサを監視及びリセットするための方法の1つの実施例を示しているフローチャートである。 本発明の1つの実施形態に係る、コプロセッサを監視及びリセットするための回路の1つの実施例を示しているブロック図である。 本発明の1つの実施形態に係る、コプロセッサを監視及びリセットするための方法の1つの実施例を示しているフローチャートである。 本発明の1つの実施形態に係る、コプロセッサを監視及びリセットするためのシステムの1つの実施例を示しているブロック図である。 本発明の1つの実施形態に係る、コプロセッサを監視及びリセットするためのシステムの1つの実施例を示しているブロック図である。 本発明の1つの実施形態に係る、グラフィックプロセッサを含んでいるコプロセッサを監視及びリセットするためのシステムの1つの実施例を示しているブロック図である。 本発明の1つの実施形態に係る、グラフィックプロセッサを監視及びリセットするためのシステムの1つの実施例を示しているブロック図である。 本発明の1つの実施形態に係る、グラフィックプロセッサを監視及びリセットするためのシステムの1つの実施例を示しているブロック図である。 本発明の1つの実施形態に係る、コプロセッサを監視及びリセットするための方法の1つの実施例を示しているフローチャートである。 本発明の1つの実施形態に係る、コプロセッサを監視及びリセットするための方法の1つの実施例を示しているフローチャートである。

Claims (13)

  1. コプロセッサを監視及びリセットするための回路であって、前記回路は、プロセッサに含まれるものであり、前記コプロセッサは、ビジーフラグとコプロセッサレジスタとを含むものであり、
    前記コプロセッサ内のハングを検出するようになっているハング検出モジュールと、
    前記コプロセッサ内でのハングの検出に応じて、前記プロセッサをリセットすることなく前記コプロセッサを選択的にリセットするようになっている選択プロセッサリセットモジュールと
    を備え、
    前記ビジーフラグは、前記ハング検出モジュールによってアクセスされ、前記ハング検出モジュールは、前記ビジーフラグの設定を検出することによってビジー状態であることを判断し、
    前記コプロセッサレジスタは、ある時間間隔の前後に前記ハング検出モジュールによってアクセスされ、前記ハング検出モジュールは、前記時間間隔の前後における前記コプロセッサの2つの内容を比較することによって、前記コプロセッサレジスタの内容について進行が無いことを判断し、
    前記ハング検出モジュールが、前記コプロセッサがビジー状態であることと、前記コプロセッサレジスタの内容に進行がないことの両方を検知した場合、前記ハング検出モジュールは、前記コプロセッサがハングしていると決定するようになっている、回路。
  2. 前記コプロセッサ内でのハングの検出に応じて、前記コプロセッサとのコマンド通信を停止するようになっている停止通信モジュールと、
    前記コプロセッサのリセットに応じて、前記コプロセッサのリセットが成功したかどうかを検出するようになっているリセットチェックモジュールと、
    前記コプロセッサのリセットが成功したことを検出することに応じて、前記コプロセッサとのコマンド通信を再開するようになっているリスタート通信モジュールと
    を更に備え、
    前記リセットチェックモジュールが、前記選択プロセッサリセットモジュールからのリセット通知信号の受信に基づいて、リセットの成功を判断し、前記リセットチェックモジュールが、リセット成功通知信号を前記リスタート通信モジュールに送信し、
    前記リスタート通信モジュールは、前記リセット成功通知信号に応じて、コマンド通信を再開するようになっている、請求項1に記載の回路。
  3. 前記プロセッサがホストプロセッサであり、前記コプロセッサがグラフィックプロセッサである、請求項1又は2に記載の回路。
  4. プロセッサを含む回路によってコプロセッサを監視及びリセットする方法であって、前記コプロセッサは、ビジーフラグとコプロセッサレジスタとを含むものであり、前記プロセッサは、ハング検出モジュールと、選択プロセッサリセットモジュールと、停止通信モジュールと、リセットチェックモジュールと、リスタート通信モジュールとを備え、
    前記コプロセッサ内のハングを検出するステップと、
    前記コプロセッサ内でのハングの検出に応じて、前記プロセッサをリセットすることなく前記コプロセッサを選択的にリセットするステップと、
    前記ビジーフラグにアクセスして、前記ビジーフラグの設定を検出することによってビジー状態であることを判断するステップと、
    ある時間間隔の前後に前記コプロセッサレジスタにアクセスして、前記時間間隔の前後における前記コプロセッサの2つの内容を比較することによって前記コプロセッサレジスタの内容について進行が無いことを判断するステップと、
    前記コプロセッサがビジー状態であることと、前記コプロセッサレジスタの内容に進行がないことの両方を検知した場合、前記コプロセッサがハングしていると決定するステップと
    を含む方法。
  5. 前記コプロセッサ内でのハングの検出に応じて、前記コプロセッサとのコマンド通信を停止するステップと、
    前記コプロセッサのリセットに応じて、前記コプロセッサのリセットが成功したかどうかを検出するステップと、
    前記コプロセッサのリセットが成功したことを検出することに応じて、前記コプロセッサとのコマンド通信を再開するステップと
    を更に含み、
    前記リセットするステップが、前記選択プロセッサリセットモジュールからリセット通知信号を前記リセットチェックモジュールへ送信することを含み、
    前記リセットが成功したかどうかを検出するステップが、前記リセット通知信号の受信に基づいてリセットの成功を判断し、前記リセットチェックモジュールからリセット成功通知信号を前記リスタート通信モジュールへ送信することを含み、
    前記コマンド通信を再開するステップが、前記リセット成功通知信号に応じてコマンド通信を再開することを含む、請求項4に記載の方法。
  6. コプロセッサを監視及びリセットするための回路であって、
    プロセッサと、
    コプロセッサと、
    前記プロセッサで実行可能な命令を含むメモリと
    を備えており、
    前記コプロセッサが、ビジーフラグとコプロセッサレジスタとを含み、
    前記メモリは、
    前記コプロセッサ内のハングを検出するようになっているハング検出モジュール命令と、
    前記コプロセッサ内でのハングの検出に応じて、前記プロセッサをリセットすることなく前記コプロセッサを選択的にリセットするようになっている選択プロセッサリセットモジュール命令と、
    を含み、
    前記ビジーフラグは、前記ハング検出モジュール命令によってアクセスされ、前記ハング検出モジュール命令は、前記ビジーフラグの設定を検出することによってビジー状態であることを判断し、
    前記コプロセッサレジスタは、ある時間間隔の前後に前記ハング検出モジュール命令によってアクセスされ、前記ハング検出モジュール命令は、前記時間間隔の前後における前記コプロセッサの2つの内容を比較することによって、前記コプロセッサレジスタの内容について進行が無いことを判断し、
    前記ハング検出モジュール命令が、前記コプロセッサがビジー状態であることと、前記コプロセッサレジスタの内容に進行がないことの両方を検知した場合、前記ハング検出モジュール命令は、前記コプロセッサがハングしていると決定するようになっている、回路。
  7. 前記メモリが、
    前記コプロセッサのリセットに応じて、前記コプロセッサのリセットが成功したかどうかを検出するようになっているリセットチェックモジュール命令と、
    前記コプロセッサ内でのハングの検出に応じて、前記コプロセッサとのコマンド通信を停止するようになっている停止通信モジュール命令と、
    前記コプロセッサのリセットが成功したことを検出することに応じて、前記コプロセッサとのコマンド通信を再開するようになっているリスタート通信モジュール命令と
    を更に備え、
    前記リセットチェックモジュール命令が、前記選択プロセッサリセットモジュール命令からのリセット通知信号の受信に基づいて、リセットの成功を判断し、前記リセットチェックモジュール命令が、リセット成功通知信号を前記リスタート通信モジュール命令に送信し、
    前記リスタート通信モジュール命令は、前記リセット成功通知信号に応じて、コマンド通信を再開するようになっている、請求項6に記載の回路。
  8. 前記プロセッサがホストプロセッサを備えており、
    前記コプロセッサがグラフィックプロセッサを備えている、
    請求項6に記載の回路。
  9. 前記メモリが、
    前記グラフィックプロセッサ内でのハングの検出に応じて、前記グラフィックプロセッサとのレンダリングコマンド通信を停止するようになっている停止通信モジュール命令と、
    前記グラフィックプロセッサのリセットに応じて、前記グラフィックプロセッサのリセットが成功したかどうかを検出するようになっているリセットチェックモジュール命令と、
    前記グラフィックプロセッサのリセットが成功したことを検出することに応じて、前記グラフィックプロセッサとのレンダリングコマンド通信を再開するようになっているリスタート通信モジュール命令と
    を更に備え、
    前記リセットチェックモジュール命令が、前記選択プロセッサリセットモジュール命令からのリセット通知信号の受信に基づいて、リセットの成功を判断し、前記リセットチェックモジュール命令が、リセット成功通知信号を前記リスタート通信モジュール命令に送信し、
    前記リスタート通信モジュール命令は、前記リセット成功通知信号に応じて、レンダリングコマンド通信を再開するようになっている、請求項8に記載の回路。
  10. 前記ハング検出モジュール命令が、前記グラフィックプロセッサ内のハングを検出するようになっており、
    前記メモリが、
    前記グラフィックプロセッサ内でのハングの検出に応じて、送信フラグをオフ状態に設定し且つ受信フラグをオフ状態に設定することにより、グラフィックプロセッサとのレンダリングコマンド通信を停止するようになっている停止通信モジュール命令と、
    前記グラフィックプロセッサ内でのハングの検出に応じて、グラフィックレジスタデータ、グラフィックコマンドキューデータ、チップセット情報、及びAGPバス状態のうちの任意の一つまたは複数を含んでいる、ハードウェア状態及びソフトウェア状態のスナップショットを保存するようになっている保存スナップショットモジュール命令と、
    前記グラフィックプロセッサのリセットに応じて、前記グラフィックプロセッサのリセットが成功したかどうかを検出するようになっているリセットチェックモジュール命令と、
    前記グラフィックプロセッサの選択的なリセットに応じて表示モード切換えを行なうようになっている表示モード切換モジュール命令と、
    前記グラフィックプロセッサのリセットに応じて、グラフィックプロセッサが機能しているかどうかを検出するようになっている機能チェックモジュール命令と、
    前記グラフィックプロセッサのリセットが成功したことを検出することに応じて、送信フラグをオン状態に設定することにより、グラフィックプロセッサとのレンダリングコマンド通信を再開するようになっているリスタート通信モジュール命令と、
    前記グラフィックプロセッサのリセットが成功しなかったという検出及びグラフィックプロセッサが機能していないという検出のうちの任意の一つまたは複数を検出することに応じて、ソフトウェアレンダリングモードへ動的に切換えるようになっているソフトウェアレンダリングモジュール命令と
    を備え
    前記リセットチェックモジュール命令が、前記選択プロセッサリセットモジュール命令からのリセット通知信号の受信に基づいて、リセットの成功を判断し、前記リセットチェックモジュール命令が、リセット成功通知信号を前記リスタート通信モジュール命令に送信し、
    前記リスタート通信モジュール命令は、前記リセット成功通知信号に応じて、コマンド通信を再開するようになっている、
    請求項8に記載の回路。
  11. 前記メモリが、
    前記グラフィックプロセッサが機能していることを検出することに応じて、ハングが検出されて解決されたことを示しているプロンプトを表示するようになっているハング解決プロンプトモジュール命令と、
    前記グラフィックプロセッサ内でのハングの検出に応じて、エラー報告が離れた場所に送られることをユーザが望んでいるかどうかに関して入力を要求するプロンプトを表示するようになっている報告送信プロンプトモジュール命令と、
    エラー報告を離れた場所に送ることを求めるユーザ要求の受信に応じて、ハードウェア状態及びソフトウェア状態を含んでいるエラー報告を離れた場所に送るようになっている報告送信モジュール命令と、
    前記グラフィックプロセッサのリセットが成功しなかったこと、及び、グラフィックプロセッサが機能していないということ、のうちの一つまたは複数を検出することに応じて、ハングが検出されたが、前記ホストプロセッサのリセットを行なわなければ前記ハングを解決することができないことを示しているプロンプトを表示するようになっているハング未解決プロンプトモジュール命令と
    を更に含んでいる、請求項10に記載の回路。
  12. コプロセッサを監視及びリセットするための、プロセッサで実行可能な命令を含むメモリであって、前記コプロセッサが、ビジーフラグとコプロセッサレジスタとを含み、
    前記命令により、前記プロセッサは、
    前記コプロセッサ内のハングを検出し、
    前記コプロセッサ内でのハングの検出に応じて、前記プロセッサをリセットすることなく前記コプロセッサを選択的にリセットし、
    前記ビジーフラグにアクセスして、前記ビジーフラグの設定を検出することによってビジー状態であることを判断し、
    ある時間間隔の前後に前記コプロセッサレジスタにアクセスして、前記時間間隔の前後における前記コプロセッサの2つの内容を比較することによって前記コプロセッサレジスタの内容について進行が無いことを判断し、
    前記コプロセッサがビジー状態であることと、前記コプロセッサレジスタの内容に進行がないことの両方を検知した場合、前記コプロセッサがハングしていると決定するようになっている、
    メモリ。
  13. 前記メモリが、前記コプロセッサのリセットに応じて、前記コプロセッサのリセットが成功したかどうかを前記プロセッサに検出させるリセットチェックモジュール命令を更に含み、
    前記リセットチェックモジュール命令が、リセット通知信号の受信に基づいてリセットの成功を判断する、請求項12に記載のメモリ。
JP2006527509A 2003-09-26 2004-09-20 コプロセッサを監視及びリセットするための方法及び装置 Active JP4887150B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US10/672,180 US8250412B2 (en) 2003-09-26 2003-09-26 Method and apparatus for monitoring and resetting a co-processor
US10/672,180 2003-09-26
PCT/IB2004/003089 WO2005031575A2 (en) 2003-09-26 2004-09-20 Method and apparatus for monitoring and resetting a co-processor

Publications (2)

Publication Number Publication Date
JP2007507034A JP2007507034A (ja) 2007-03-22
JP4887150B2 true JP4887150B2 (ja) 2012-02-29

Family

ID=34393471

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006527509A Active JP4887150B2 (ja) 2003-09-26 2004-09-20 コプロセッサを監視及びリセットするための方法及び装置

Country Status (5)

Country Link
US (1) US8250412B2 (ja)
EP (1) EP1668509B1 (ja)
JP (1) JP4887150B2 (ja)
CN (2) CN102193840A (ja)
WO (1) WO2005031575A2 (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040141461A1 (en) * 2003-01-22 2004-07-22 Zimmer Vincent J. Remote reset using a one-time pad
US7808499B2 (en) 2003-11-19 2010-10-05 Lucid Information Technology, Ltd. PC-based computing system employing parallelized graphics processing units (GPUS) interfaced with the central processing unit (CPU) using a PC bus and a hardware graphics hub having a router
US8085273B2 (en) 2003-11-19 2011-12-27 Lucid Information Technology, Ltd Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US20080246772A1 (en) * 2003-11-19 2008-10-09 Lucid Information Technology, Ltd. Multi-mode parallel graphics rendering system (MMPGRS) employing multiple graphics processing pipelines (GPPLS) and real-time performance data collection and analysis during the automatic control of the mode of parallel operation of said GPPLS
US20070291040A1 (en) * 2005-01-25 2007-12-20 Reuven Bakalash Multi-mode parallel graphics rendering system supporting dynamic profiling of graphics-based applications and automatic control of parallel modes of operation
US20080094403A1 (en) * 2003-11-19 2008-04-24 Reuven Bakalash Computing system capable of parallelizing the operation graphics processing units (GPUs) supported on a CPU/GPU fusion-architecture chip and one or more external graphics cards, employing a software-implemented multi-mode parallel graphics rendering subsystem
US20090027383A1 (en) * 2003-11-19 2009-01-29 Lucid Information Technology, Ltd. Computing system parallelizing the operation of multiple graphics processing pipelines (GPPLs) and supporting depth-less based image recomposition
US7961194B2 (en) 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
EP1846834A2 (en) 2005-01-25 2007-10-24 Lucid Information Technology, Ltd. Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction
US20090096798A1 (en) * 2005-01-25 2009-04-16 Reuven Bakalash Graphics Processing and Display System Employing Multiple Graphics Cores on a Silicon Chip of Monolithic Construction
US7734797B2 (en) * 2004-03-29 2010-06-08 Marvell International Ltd. Inter-processor communication link with manageability port
US7412352B1 (en) * 2004-11-12 2008-08-12 Sun Microsystems, Inc. Computer diagnostic system and method
US7424644B2 (en) * 2005-03-01 2008-09-09 Microsoft Corporation Method and system for recovering data from a hung application
US7484131B2 (en) * 2005-09-13 2009-01-27 International Business Machines Corporation System and method for recovering from a hang condition in a data processing system
US7702955B2 (en) * 2005-12-28 2010-04-20 De Almeida Adrian S Method and apparatus for detecting a fault condition and restoration thereafter using user context information
US7788537B1 (en) * 2006-01-31 2010-08-31 Emc Corporation Techniques for collecting critical information from a memory dump
US7917812B2 (en) * 2006-09-30 2011-03-29 Codman Neuro Sciences Sárl Resetting of multiple processors in an electronic device
US8677194B2 (en) * 2006-11-29 2014-03-18 Red Hat, Inc. Method and system for site configurable error reporting
US8497865B2 (en) 2006-12-31 2013-07-30 Lucid Information Technology, Ltd. Parallel graphics system employing multiple graphics processing pipelines with multiple graphics processing units (GPUS) and supporting an object division mode of parallel graphics processing using programmable pixel or vertex processing resources provided with the GPUS
US8432405B2 (en) * 2008-06-26 2013-04-30 Microsoft Corporation Dynamically transitioning between hardware-accelerated and software rendering
JP2010140361A (ja) * 2008-12-12 2010-06-24 Fujitsu Microelectronics Ltd コンピュータシステム及び異常検出回路
US8499288B2 (en) * 2010-05-19 2013-07-30 Microsoft Corporation User interface analysis management
CN103210381B (zh) 2010-11-15 2015-11-25 富士通株式会社 访问方法以及多核处理器系统
US8775607B2 (en) * 2010-12-10 2014-07-08 International Business Machines Corporation Identifying stray assets in a computing enviroment and responsively taking resolution actions
JP2014010739A (ja) * 2012-07-02 2014-01-20 Fujitsu Ltd システムの状態の復元についての情報処理方法、情報処理プログラム及び情報処理装置
KR101389976B1 (ko) * 2012-08-31 2014-05-07 주식회사 팬택 모바일 단말의 행 현상 관리 장치 및 방법
JP5971101B2 (ja) * 2012-12-06 2016-08-17 株式会社デンソー データ処理装置
JP6036578B2 (ja) * 2013-03-08 2016-11-30 株式会社デンソー データ処理装置
US9817670B2 (en) * 2013-12-13 2017-11-14 International Business Machines Corporation Framework to provide time bound execution of co-processor commands
CN103744760A (zh) * 2013-12-30 2014-04-23 哈尔滨工业大学 基于门级症状的硬件故障检测方法
US9275429B2 (en) 2014-02-17 2016-03-01 Qualcomm Incorporated Device hang detection and recovery
US10333865B2 (en) * 2015-08-21 2019-06-25 Cisco Technology, Inc. Transformation of peripheral component interconnect express compliant virtual devices in a network environment
KR20170079368A (ko) * 2015-12-30 2017-07-10 삼성전자주식회사 디버그 정보를 수집하기 위한 디버그 로직을 포함하는 cpu 시스템, 이를 포함하는 컴퓨팅 시스템 및 이의 디버깅 방법
JP2018106459A (ja) * 2016-12-27 2018-07-05 日立オートモティブシステムズ株式会社 マイクロコンピュータ、論理回路
US10437659B2 (en) * 2017-03-03 2019-10-08 Silicon Laboratories, Inc. Built-in context error variables

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1566951A (en) 1977-12-20 1980-05-08 Standard Telephones Cables Ltd Processor system
US4598356A (en) 1983-12-30 1986-07-01 International Business Machines Corporation Data processing system including a main processor and a co-processor and co-processor error handling logic
US4851991A (en) 1987-02-24 1989-07-25 Digital Equipment Corporation Central processor unit for digital data processing system including write buffer management mechanism
JPH05210623A (ja) * 1992-01-31 1993-08-20 Fujitsu Ltd マイクロプロセッサ及びデータ処理装置
JPH05324597A (ja) * 1992-05-20 1993-12-07 Mutoh Ind Ltd マルチプロセッサシステムのリセット回路
JPH05342063A (ja) * 1992-06-11 1993-12-24 Kofu Nippon Denki Kk トレーサ回路
JPH06236299A (ja) 1993-02-10 1994-08-23 Hitachi Ltd システム監視方法及び監視装置
US5504859A (en) * 1993-11-09 1996-04-02 International Business Machines Corporation Data processor with enhanced error recovery
JPH07262032A (ja) * 1994-03-17 1995-10-13 Fujitsu Ltd 情報処理装置
US6009258A (en) 1997-09-26 1999-12-28 Symantec Corporation Methods and devices for unwinding stack of frozen program and for restarting the program from unwound state
US6532497B1 (en) 1998-04-14 2003-03-11 International Business Machines Corporation Separately powered network interface for reporting the activity states of a network connected client
US6954922B2 (en) 1998-04-29 2005-10-11 Sun Microsystems, Inc. Method apparatus and article of manufacture for time profiling multi-threaded programs
AU5730200A (en) 1999-06-08 2000-12-28 General Instrument Corporation Cryptographic processing system
US6560726B1 (en) 1999-08-19 2003-05-06 Dell Usa, L.P. Method and system for automated technical support for computers
US6505298B1 (en) 1999-10-25 2003-01-07 International Business Machines Corporation System using an OS inaccessible interrupt handler to reset the OS when a device driver failed to set a register bit indicating OS hang condition
US6543002B1 (en) * 1999-11-04 2003-04-01 International Business Machines Corporation Recovery from hang condition in a microprocessor
US6496890B1 (en) 1999-12-03 2002-12-17 Michael Joseph Azevedo Bus hang prevention and recovery for data communication systems employing a shared bus interface with multiple bus masters
US6591379B1 (en) 2000-06-23 2003-07-08 Microsoft Corporation Method and system for injecting an exception to recover unsaved data
US6742139B1 (en) * 2000-10-19 2004-05-25 International Business Machines Corporation Service processor reset/reload
US6825844B2 (en) * 2001-01-16 2004-11-30 Microsoft Corp System and method for optimizing a graphics intensive software program for the user's graphics hardware
US6886112B2 (en) * 2002-06-28 2005-04-26 Microsoft Corporation Recovering from device failure

Also Published As

Publication number Publication date
US20050081115A1 (en) 2005-04-14
WO2005031575A3 (en) 2005-05-19
CN1882917A (zh) 2006-12-20
US8250412B2 (en) 2012-08-21
WO2005031575A2 (en) 2005-04-07
EP1668509B1 (en) 2012-07-18
EP1668509A2 (en) 2006-06-14
CN102193840A (zh) 2011-09-21
CN1882917B (zh) 2011-09-21
JP2007507034A (ja) 2007-03-22

Similar Documents

Publication Publication Date Title
US6675324B2 (en) Rendezvous of processors with OS coordination
US6606716B1 (en) Method and system for automated technical support for computers
US6556208B1 (en) Network management card for use in a system for screen image capturing
US6754855B1 (en) Automated recovery of computer appliances
US6158000A (en) Shared memory initialization method for system having multiple processor capability
US6438711B2 (en) Method and apparatus for performing field diagnostics on a computer system
EP1080407B1 (en) Computer system with an emulation coprocessor and method for executing an emulated application program
KR100961349B1 (ko) Vex - 가상 확장물을 고립시키는 방법
DE102006048115B4 (de) System und Verfahren zum Aufzeichnen von behebbaren Fehlern
US6948094B2 (en) Method of correcting a machine check error
US9442876B2 (en) System and method for providing network access for a processing node
JP4688821B2 (ja) システム構成の遠隔修正のための方法および装置
US7461247B2 (en) Method for transitioning control of a peripheral device from a first device driver to a second device driver during operating system initialization
US20020108002A1 (en) Method for automatically configuring network interface card and capable of randomizing a media access controller address of the network interface card
RU2435200C2 (ru) Быстрая загрузка операционной системы из выключенного состояния
US6721881B1 (en) System and method for determining if a display device configuration has changed by comparing a current indicator with a previously saved indicator
US6742139B1 (en) Service processor reset/reload
KR100620216B1 (ko) 기능하는 운영 체제 없이 컴퓨터의 원격 관리를 가능하게 하는 네트워크 확장 기본 입출력 시스템
US5745770A (en) Method and apparatus for servicing simultaneous I/O trap and debug traps in a microprocessor
US20050216895A1 (en) Method and apparatus for remote debugging of kernel and application software
US6216226B1 (en) Method and system for dynamically selecting a boot process within a data processing system
KR20100054805A (ko) 원격 액세스 진단 디바이스 및 이의 방법들
US5828821A (en) Checkpoint restart method and apparatus utilizing multiple log memories
US8607040B2 (en) Method of provisioning firmware in an operating system (OS) absent services environment
KR100430468B1 (ko) 운영체제의 초기화 및 재시작 방법 및 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070919

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070919

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101019

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110118

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110125

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110314

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110322

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110517

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110816

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110823

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110915

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110926

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111014

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4887150

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20141216

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250