(57)【要約】  回路はコプロセッサを監視及びリセットするようになっている。回路は、コプロセッサ内のハングを検出するためのハング検出モジュールを含んでいる。また、回路は、コプロセッサ内でのハングの検出に応じてプロセッサをリセットすることなくコプロセッサをリセットするための選択プロセッサリセットモジュールも含んでいる。
2007507034.tif 000002
【特許請求の範囲】
【請求項１】
コプロセッサを監視及びリセットするための回路であって、
前記コプロセッサ内のハングを検出するようになっているハング検出モジュールと、
前記コプロセッサ内でのハングの検出に応じて、プロセッサをリセットすることなく前記コプロセッサを選択的にリセットするようになっている選択プロセッサリセットモジュールと
を備えている回路。
【請求項２】
オペレーティングシステムが前記プロセッサで実行する、請求項１に記載のシステム。
【請求項３】
前記ハング検出モジュールは、前記コプロセッサの現在の状態と前記コプロセッサの現在の動作との間の相違を検出することによりコプロセッサ内のハングを検出するようになっている、請求項１または請求項２に記載のシステム。
【請求項４】
現在の状態がビジー状態であることを検出することと、
ビジーフラグの設定を検出することと、
待ち時間の前後で検査されるコプロセッサレジスタ内において同じ内容を検出することにより現在の動作の進行が無いことを検出することと
によって前記相違が検出されるようになっている、請求項３に記載のシステム。
【請求項５】
前記コプロセッサ内でのハングの検出に応じて、前記コプロセッサとのコマンド通信を停止するようになっている停止通信モジュールと、
前記コプロセッサのリセットに応じて、前記コプロセッサのリセットが成功したかどうかを検出するようになっているリセットチェックモジュールと、
前記コプロセッサのリセットが成功したことを検出することに応じて、前記コプロセッサとのコマンド通信を再開するようになっているリスタート通信モジュールと、
を更に備えている、請求項１から４のいずれか一項に記載のシステム。
【請求項６】
前記プロセッサがホストプロセッサであり、前記コプロセッサがグラフィックプロセッサである、請求項１から５のいずれか一項に記載の回路。
【請求項７】
コプロセッサを監視及びリセットする方法であって、
前記コプロセッサ内のハングを検出するステップと、
前記コプロセッサ内でのハングの検出に応じて、プロセッサをリセットすることなく前記コプロセッサを選択的にリセットするステップと、
を含んでいる方法。
【請求項８】
オペレーティングシステムが前記プロセッサで実行する、請求項７に記載の方法。
【請求項９】
コプロセッサ内のハングを検出する前記ステップは、コプロセッサの現在の状態と前記コプロセッサの現在の動作との間の相違を検出することにより行なわれる、請求項７または請求項８に記載の方法。
【請求項１０】
現在の状態がビジー状態であることを検出することと、
ビジーフラグの設定を検出することと、
待ち時間の前後で検査されるコプロセッサレジスタ内において同じ内容を検出することにより現在の動作の進行が無いことを検出することと、
によって前記相違が検出される、請求項９に記載の方法。
【請求項１１】
前記コプロセッサ内でのハングの検出に応じて、前記コプロセッサとのコマンド通信を停止するステップと、
前記コプロセッサのリセットに応じて、前記コプロセッサのリセットが成功したかどうかを検出するステップと、
前記コプロセッサのリセットが成功したことを検出することに応じて、前記コプロセッサとのコマンド通信を再開するステップと、
を更に含んでいる、請求項７から１０のいずれか一項に記載の方法。
【請求項１２】
コプロセッサを監視及びリセットするためのシステムであって、
プロセッサと、
コプロセッサと、
メモリと
を備えており、
前記メモリは、
前記コプロセッサ内のハングを検出するようになっているハング検出モジュール命令と、
前記コプロセッサ内でのハングの検出に応じて、前記プロセッサをリセットすることなく前記コプロセッサを選択的にリセットするようになっている選択プロセッサリセットモジュール命令と、
を含んでいる命令を有している、システム。
【請求項１３】
前記プロセッサがホストプロセッサであり、前記メモリがオペレーティングシステム命令を含んでいる、請求項１２に記載の回路。
【請求項１４】
前記ハング検出モジュール命令は、ビジーフラグ内に反映されている現在のビジー状態を検出することにより、または、コプロセッサレジスタの動作の欠如を示すとおりに現在の動作の非進行を検出することにより、コプロセッサ内のハングを検出するようになっている、請求項１２または請求項１３に記載のシステム。
【請求項１５】
前記コプロセッサのリセットに応じて、前記コプロセッサのリセットが成功したかどうかを検出するようになっているリセットチェックモジュール命令を更に備えている、請求項１２から１４のいずれか一項に記載のシステム。
【請求項１６】
前記コプロセッサ内でのハングの検出に応じて、前記コプロセッサとのコマンド通信を停止するようになっている停止通信モジュール命令と、
前記コプロセッサのリセットが成功したことを検出することに応じて、前記コプロセッサとのコマンド通信を再開するようになっているリスタート通信モジュール命令と
を更に備えている、請求項１２から１５のいずれか一項に記載のシステム。
【請求項１７】
前記プロセッサがホストプロセッサを備えており、
前記コプロセッサがグラフィックプロセッサを備えている、
請求項１２から１６のいずれか一項に記載のシステム。
【請求項１８】
前記グラフィックプロセッサ内でのハングの検出に応じて、前記グラフィックプロセッサとのレンダリングコマンド通信を停止するようになっている停止通信モジュール命令と、
前記グラフィックプロセッサのリセットに応じて、前記グラフィックプロセッサのリセットが成功したかどうかを検出するようになっているリセットチェックモジュール命令と、
前記グラフィックプロセッサのリセットが成功したことを検出することに応じて、前記グラフィックプロセッサとのレンダリングコマンド通信を再開するようになっているリスタート通信モジュール命令と、
を含んでいる、請求項１７に記載のシステム。
【請求項１９】
ハング検出モジュール命令は、
現在の状態がビジー状態であることを検出することと、
ビジーフラグの設定を検出することと、
待ち時間の前後で検査されるコプロセッサレジスタ内において同じ内容を検出することにより現在の動作の進行が無いことを検出することと、
によって前記グラフィックプロセッサ内のハングを検出するようになっており、
停止通信モジュール命令は、前記グラフィックプロセッサ内でのハングの検出に応じて、送信フラグをオフ状態に設定し且つ受信フラグをオフ状態に設定することにより、グラフィックプロセッサとのレンダリングコマンド通信を停止するようになっており、
保存スナップショットモジュール命令は、前記グラフィックプロセッサ内でのハングの検出に応じて、グラフィックレジスタデータ、グラフィックコマンドキューデータ、チップセット情報、及びＡＧＰバス状態のうちの任意の一つまたは複数を含んでいる、ハードウェア状態及びソフトウェア状態のスナップショットを保存するようになっており、
リセットチェックモジュール命令は、前記グラフィックプロセッサのリセットに応じて、前記グラフィックプロセッサのリセットが成功したかどうかを検出するようになっており、
表示モード切換モジュール命令は、前記グラフィックプロセッサの選択的なリセットに応じて表示モード切換えを行なうようになっており、
機能チェックモジュール命令は、前記グラフィックプロセッサのリセットに応じて、グラフィックプロセッサが機能しているかどうかを検出するようになっており、
リスタート通信モジュール命令は、前記グラフィックプロセッサのリセットが成功したことを検出することに応じて、送信フラグをオン状態に設定することにより、グラフィックプロセッサとのレンダリングコマンド通信を再開するようになっており、
ソフトウェアレンダリングモジュール命令は、前記グラフィックプロセッサのリセットが成功しなかったという検出及びグラフィックプロセッサが機能していないという検出のうちの任意の一つまたは複数を検出することに応じて、ソフトウェアレンダリングモードへ動的に切換えるようになっている、
請求項１７または請求項１８に記載のシステム。
【請求項２０】
前記グラフィックプロセッサが機能していることを検出することに応じて、ハングが検出されて解決されたことを示しているプロンプトを表示するようになっているハング解決プロンプトモジュール命令と、
前記グラフィックプロセッサ内でのハングの検出に応じて、エラー報告が離れた場所に送られることをユーザが望んでいるかどうかに関して入力を要求するプロンプトを表示するようになっている報告送信プロンプトモジュール命令と、
エラー報告を離れた場所に送ることを求めるユーザ要求の受信に応じて、ハードウェア状態及びソフトウェア状態を含んでいるエラー報告を離れた場所に送るようになっている報告送信モジュール命令と、
前記グラフィックプロセッサのリセットが成功しなかったこと、及び、グラフィックプロセッサが機能していないということ、のうちの一つまたは複数を検出することに応じて、ハングが検出されたが、前記ホストプロセッサのリセットを行なわなければ前記ハングを解決することができないことを示しているプロンプトを表示するようになっているハング未解決プロンプトモジュール命令と、
を更に含んでいる、請求項１９に記載のシステム。
【請求項２１】
プロセッサで実行可能な命令を含んでいるメモリであって、前記命令により、プロセッサは、
コプロセッサ内のハングを検出し、
前記コプロセッサ内でのハングの検出に応じて、前記プロセッサをリセットすることなく前記コプロセッサを選択的にリセットするようになっている、
メモリ。
【請求項２２】
前記コプロセッサのリセットに応じて、前記コプロセッサのリセットが成功したかどうかを前記プロセッサに検出させる命令を更に含んでいる、請求項２１に記載のメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータシステムまたは他のシステム内のハングの検出及び前記ハングからの回復に関し、特に、コプロセッサ内のハングを検出し且つ前記コプロセッサの回復を行なう装置及び方法に関する。
【背景技術】
【０００２】
加速グラフィックレンダリングの分野での開発を促進するため、多量のグラフィックデータの高速処理に対する需要は着実に増え続けている。現在の加速グラフィックレンダリング方式は、ハードウェアコンポーネント及びソフトウェアコンポーネントの両方の正確な設計及び実施を必要とする複雑なプロセスである。加速グラフィックレンダリングは、一般にハードウェア、通常はグラフィックプロセッサと、ソフトウェア、通常はホストプロセッサによって実行されているグラフィックドライバとを使用して、グラフィックデータ及びビデオ情報の処理を最適化するようになっている。設計上の欠陥や実施不良等の任意の問題は、加速グラフィックレンダリングを正常に動作させない可能性があるとともに、加速グラフィックレンダリングの機能を停止させる可能性がある。そのような問題としては、グラフィックプロセッサの欠陥、バスコントローラの欠陥、中央処理ユニット（ＣＰＵ）の欠陥、あるいは、他のハードウェアの欠陥を挙げることができる。他の問題として、グラフィックドライバ、オペレーティングシステム、グラフィックアプリケーションまたは他のソフトウェアにおける欠陥を含み得る。
【０００３】
加速グラフィックレンダリングで使用されているハードウェア及びソフトウェアは、複雑であり、また、前記ハードウェア及びソフトウェアが様々な形態で組み合わされていると更に複雑になるため、グラフィックプロセッサは、多くの場合、完全なハングを含んでいる様々なレンダリングエラーに直面するようになっている。ハングは、システムまたはプロセスが応答しなくなる状態、例えば、プロセッサが機能を停止し、ロックし、無限ループで立ち往生しているなどして、プロセッサが中断してしまう状態である。現在、前記ハングは、データ損失を引き起こす可能性があるとともに、コンピュータシステム全体の動作を停止させてしまう可能性がある。残念ながら、新たな加速グラフィックレンダリングハードウェア及びソフトウェアが絶え間なく導入され、それに応じて、これらの間で考え得る多数の組み合わせがなされていることから、加速グラフィックレンダリングのエラーを引き起こす可能性がある全てのエラーを完全に特定して排除することが難しくなっている。
【０００４】
現在、加速グラフィックレンダリングのエラーを検出するために使用されている方法は、グラフィックドライバにおけるハングのオペレーティングシステムレベル検出に依存しており、対応しているグラフィックプロセッサのハングを直接に検出しない。例えば、加速グラフィックレンダリングプロセスでエラーが発生したかどうかを検出するためにＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）ＸＰによって使用されている方法は、グラフィックドライバでハングが存在するかどうかを検出することである。ここで、「ウォッチドッグタイマ」は、スピンループを行なうことによりグラフィックドライバで費やされた時間を測定した後、グラフィックプロセッサの応答を待つ。無限ループの検出は、グラフィックプロセッサがハング状態であるらしいという符号として、オペレーティングシステムにより使用されている。タイムアウト処理が終了すると、オペレーティングシステムは、グラフィックドライバを停止させて、通知をユーザに表示し、コンピュータの再起動をユーザに促す。ここで、ウォッチドッグタイマは、レンダリングコマンドが現在ドライバによって処理されているかどうかに関して考慮することなく、定期的に実行するようになっている。
【０００５】
Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）ＸＰは、グラフィックドライバ内でハング状態であると思われるものを、多量のレンダリングコマンドの実際に継続中の実行のものから区別することができない。これは、いずれも所定の待ち時間に照らして遅い応答として現れるだけだからである。また、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）ＸＰを用いると、しばしば、グラフィックドライバに任意のコマンドが発行されたかどうかに関して考慮することなくグラフィックドライバがハング状態であるかどうかをシステムが決定しようとする場合、すなわち、グラフィックドライバが現在アイドル状態であるかどうかをシステムが決定しようとする場合に、システムリソースが浪費される。また、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）ＸＰがハング状態のグラフィックプロセッサであると確信するものを検出すると、システム全体を再起動しなければならず、これにより、ユーザは、全てのハードウェアコンポーネント及びソフトウェアコンポーネントを、これらがグラフィックプロセッサにおけるハングの原因となっているかどうかとは無関係に終了しなければならない。
【０００６】
ハング状態のグラフィックドライバを検出するために使用されている他の方法は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）ＸＰサービスパック１（ＳＰ１）において使用されている方法である。ここでも、同じ「ウォッチドッグタイマ」が使用されているが、ハング状態のグラフィックドライバの検出に応じて、システムは、グラフィックドライバをアンロードするとともに、非加速モードでグラフィックレンダリング動作を続けようとして標準ＶＧＡドライバをロードするようになっている。この構成は、ユーザに実行中の作業を保存させることができるようにすることにより、また、その後にコンピュータを再起動させることができるようにすることにより、データ損失を防止する構成となっている。しかしながら、ＳＰ１を使用していると、システムが非加速モードに切換わる際に、加速グラフィックレンダリングモードで動作するという利点が失われる。また、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）ＸＰシステムと同様に、ＳＰ１は、グラフィックドライバからの遅い応答と完全なハングとを区別することができない。また、ＳＰ１が非加速モードに切換わると、システムが加速グラフィックレンダリングモードに戻ることができる唯一の方法は、システム全体の再起動を行なうことである。ここでも、同様に、ユーザは、全てのハードウェアコンポーネント及びソフトウェアコンポーネントを、これらのコンポーネントがグラフィックプロセッサのハングの原因となっているかどうかとは無関係に、終了しなければならない。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
以下の図面を参照すると本発明を更に容易に理解できる。図中、同様の参照符号は同じ要素を表わしている。
【０００８】
簡潔に言うと、回路はコプロセッサを監視及びリセットするようになっている。回路は、コプロセッサ内のハングを検出するためのハング検出モジュールを含んでいる。また、回路は、コプロセッサ内でのハングの検出に応じて、プロセッサをリセットすることなくコプロセッサをリセットするための選択プロセッサリセットモジュールも含んでいる。
【０００９】
この文書で使用されている「モジュール」という用語は、多くの機能回路の組のうちの機能的な一部をいう。「回路」という用語は、以下のうちの少なくとも１つ、すなわち、命令を実行する一つまたは複数のプロセッサ、例えばマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、マイクロコントローラ、またはディスクリートロジック、ステートマシン、または、ハードウェア、ソフトウェア及び／又はファームウェアの任意の適当な組み合わせのうちの少なくとも１つを含んでいる。当業者であれば分かるように、一つまたは複数のモジュールが、回路の機能的な組からなる、より大きなセットとして組み合わされてもよい。また、１つのモジュールからの任意の機能性を１つのモジュールから他のモジュールへ移すことができる。
【００１０】
この文書で使用されているコプロセッサという用語は、第１のプロセッサに対する第２のプロセッサを意味している。そのようなコプロセッサは、例えば、汎用プロセッサ、周辺機器プロセッサ（例えば、グラフィックプロセッサ、オーディオプロセッサ等）または他の同様のプロセッサを挙げることができる。
【００１１】
この文書で使用されている「プロセッサハング」という用語は、例えばプロセッサが無限ループに入り込んだ際にプロセッサの外側からの入力にもはや応答しないプロセッサを説明するために使用されている。そのような場合、プロセッサが再び外部入力に対して応答でき且つ装置が設計されたときのように動作できるようにプロセッサをリブートまたはリセットする必要がある。
【００１２】
コプロセッサのリセット中、一般に、プロセッサに関連する一つまたは複数のソフトウェア及び／又はハードウェアコンポーネントがリセットされ、それにより、プロセッサがその意図された設計にしたがって動作することができる。リセットは、一般に処理装置の電源が入れられている際に行なわれるようなパワーアップ時間またはブートアップ時間で実行されるタイプのリセットを挙げることができる。しかしながら、パワーアップリセットと同じではない他のリセットを行なうこともできる。リセットは、特定のコプロセッサのために利用できる多くの異なるタイプのリセットであってもよい。１つの実施形態においては、コプロセッサ内でのハングの検出に応じて、任意の数の異なるタイプのリセットが行なわれてもよい。この実施形態において、異なるリセットのそれぞれは、リセット時間またはその前に、コプロセッサまたは他の関連するコンポーネントの検出状態または状況に合わせられている。実行されるリセットの一般的な目的は、リセットの結果によってコプロセッサ内のハングが排除され且つプロセッサが命令の処理を再開できるようにすることである。
【００１３】
１つの実施形態においては、特定のコプロセッサ内のハングが、ハング状態のコプロセッサを除き、任意の他のプロセッサのリセットを必要としないという利点が得られる。したがって、同じ処理装置で実行中の他のアプリケーションは、一般に、ハング及び任意のその後のリセットから影響を受けることはない。例えば、他のコプロセッサ命令または他のアプリケーションを処理しているプロセッサは、コプロセッサのリセットによって影響されない。１つの実施形態において、プロセッサは、コプロセッサを監視及びリセットする回路のための命令を実行するようになっている。また、プロセッサは、ハング状態のコプロセッサがリセットされている間、命令を実行し続ける。
【００１４】
１つの実施形態においては、一般に特定のアプリケーション／コプロセッサがハング状態にあるかどうかを個別に監視しているオペレーティングシステムによって与えられているプロセスから、別個のプロセスが与えられているという利点が得られる。プロセスは、オペレーティングシステムを通して利用できる対応しているプロセスとは別個のものであるため、この別個のプロセスを、特定のプロセッサのハングを検出してリセットするのに適した特定の機能を含むように作り上げることができる。例えば、ハング検出プロセスを特定のプロセッサに合わせることにより、特定のソフトウェア及び／又はハードウェア状態の特定のチェックがその特定のプロセッサ内のハングを検出するのに最も効率的なチェックとなるようにすることもできる。
【００１５】
１つの実施形態においては、対象のコプロセッサ内でハングが発生したかどうかを決定するプロセスが、プロセッサがビジー状態のときにのみ実行されるという利点が提供される。ここで、命令を未だ何ら実行しておらず、したがって、ハングに直面している可能性が非常に低いアイドル状態のプロセッサは、ハングの存在に関して検査する必要がない。前記プロセッサが何らかの形でハングに直面した場合であっても、プロセッサが現在必要とされていないという事実があろうとなかろうと、このシステムは、プロセスが実際に必要とされるまで、特定のプロセッサのハング状態を無視するという利益を提供している。前記プロセッサがハング状態にある（ハングされている）かどうかに関して定期的にチェックするように構成されているシステムは、前記プロセッサが必要とされているかどうかにかかわらず、システムリソースを浪費するとともに、システムが未だ必要としないハングプロセスの検出に起因してシステムをリブートしなければならなくなる可能性をもたらす。
【００１６】
本発明の１つの実施形態においては、特にコプロセッサを対象にしているアプリケーションが、関連しているコプロセッサがハングに直面しているかどうかを決定するという義務を引き継ぐことができるという利点が提供される。これは、ハングが発生したかどうかを決定するために一般にオペレーティングシステムによって使用されているハング検出プロセスを使える状態にすることができる可能性がある。
【００１７】
１つの実施形態において、システムは、プロセッサがリセッットされている間、ハング状態にあるプロセッサとの通信を休止することができる。これにより、コプロセッサの任意の更なる不安定化を防止できるという利点が得られる。
【００１８】
１つの実施形態において、システムは、ハング状態にあるプロセッサのリセットを試みた後、前記プロセッサの実行の継続を許容する前に、リセットが成功したかどうかを判断するためにチェックを行なう。これにより、リセットが成功しなかった後にプロセッサが処理を続けようとすることを防止できるという利点が得られる。
【００１９】
１つの実施形態において、システムは、プロセッサをリセットした後、以前にハング状態にあったプロセッサが機能しているかどうかを判断することにより、コプロセッサの動作を再開するかどうかを決定する。これにより、プロセッサが機能していないことが判断される時にプロセッサが処理を再開しようとすることを防止できるという利点が得られる。１つの実施形態において、システムは、最初に、リセットが成功したかどうかを判断するためにチェックを行ない、成功した場合には、以前にハング状態であったプロセッサが機能しているかどうかを判断し、そうである場合には、プロセッサの使用再開を許可するようになっている。
【００２０】
１つの実施形態において、システムは、プロセッサハングが発生した理由を決定するためにシステムをデバッグする目的で関連しているハードウェア状態及びソフトウェア状態のスナップショットを保存するようになっている。これにより、処理問題を特定して、そのような問題の根源を、ソフトウェア及び／又はハードウェアにおけるその後のアップグレードで解決できるようにするための情報を保存するという利点が得られる。１つの実施形態において、保存される情報としては、以下のうちの一つまたは複数、すなわち、ソフトウェアまたはドライババージョン、エラー報告フォーマットバージョン、加速グラフィックポート（ＡＧＰ）速度；ＡＧＰバージョンサポートグラフィックプロセッサデバイスＩＤ、グラフィックプロセッサベンダＩＤ、グラフィックプロセッササブシステムＩＤ、チップセットデバイスＩＤ、チップセットベンダＩＤ、エラーフラグ、システムメモリサイズ、グラフィックフレームバッファサイズ、エンジンクロック、メモリクロック、及びレジスタ値及びコマンドキューデータを含んでいる内部のコプロセッサ状態のうちの一つまたは複数が保存される。
【００２１】
１つの実施形態において、システムは、コプロセッサのベンダの電子メールアドレス等の離れた場所へハードウェア状態及びソフトウェア状態の送信を許可するようになっている。これにより、ベンダは、ベンダの製品が現場でどの程度不足しているのかに関して価値のある情報を受けることができ、したがって、現在の技術よりも更に詳しく早期に処理問題に気付くことができるという利点が得られる。
【発明を実施するための最良の形態】
【００２２】
図１は、プロセッサ１００、コプロセッサ１０２、コプロセッサを監視及びリセットするための回路１０４、ハング検出モジュール１０６、選択プロセッサリセットモジュール１０８、ハング通知信号１１０、及びコプロセッサ１０２をプロセッサ１００に対して接続している適当なリンク１１２を示している。
【００２３】
コプロセッサ１０２を監視及びリセットするための回路は、ハング検出モジュール１０６及び選択プロセッサリセットモジュール１０８を含んでいる。この実施例において、コプロセッサを監視及びリセットするための回路１０４は、例えばコプロセッサ１０４によって実行されるドライバ等のプロセッサ１００により実行される一つまたは複数のソフトウェアモジュールの形態をなしている。コプロセッサを監視及びリセットするための回路１０４は、ハング検出モジュール１０６及び選択プロセッサリセットモジュール１０８を含んでいる。ハング検出モジュール１０６は、コプロセッサ内のハングを検出するために使用されている。ハング検出モジュール１０６は、コプロセッサ１０２内のハングが生じる時期を特定するために、コプロセッサ１０２を監視する。例えば、ハング検出モジュール１０６は、コプロセッサ１０２を定期的に検査して、コプロセッサがハング状態にあるかどうかを判断してもよい。１つの実施形態において、ハング検出モジュール１０６は、コプロセッサのための新たな命令が送られるときにコプロセッサ１０２がハング状態にされるかどうかを判断しようとするだけである。他の実施形態において、ハング検出モジュール１０６は、実行のための命令がコプロセッサ１０２に割り当てられたことが確認されるときに、コプロセッサ１０２がハング状態にされるかどうかを決定しようとする。
【００２４】
例えば、ハング検出モジュール１０６は、コプロセッサ１０２が現在命令を実行しているかどうかを示しているフラグを検査し、実行している場合、同じハング検出モジュール１０６は、コプロセッサ１０２に関連しており、対応しているレジスタを検査して、前記命令の実際の処理を反映する動作がこれらのレジスタで生じているかどうかを決定する。前記レジスタでの動作または動作の欠如の間で相違が検出された場合には、ハング検出モジュール１０６は、コプロセッサ１０２内でハングが検出されたことを示すハング通知信号１１０を選択プロセッサリセットモジュール１０８に対して戻す。
【００２５】
１つの実施形態では、特に、ハング検出モジュール１０６は、最初に、ビジーフラグが設定されているかどうかを確かめるためにチェックを行う。ビジーフラグが設定されていないと判断されると、ハング検出モジュール１０６は、非ハング通知信号（図示せず）を選択プロセッサリセットモジュール１０８に対して戻す。ビジーフラグが設定されていると判断されると、特定のレジスタの状態または内容が検査されて保存される（コプロセッサ１０２の動作を監視するために使用されるもの）。次に、待ち時間の経過が許容され、それにより、特定のレジスタ内で動作を起こすことができる。この場合も同様に、特定のレジスタの状態または内容は保存され、あるいは、少なくともそれらの内容が検査され、比較を行なうために利用できるようにされる。最終的に、待ち時間が経過する前後で発生したレジスタの内容の２つの組の間で比較が行なわれる。相違が検出される場合には、非ハング通知信号（図示せず）が選択プロセッサリセットモジュール１０８に対して戻される。そうではなく、相違が検出されない場合には、ハング検出モジュール１０６は、ハング通知信号１１０を選択プロセッサリセットモジュール１０８に対して戻す。
【００２６】
コプロセッサ１０２内でハングが発生したことを示すハング通知信号１１０を選択プロセッサリセットモジュール１０８が受けると、選択プロセッサリセットモジュール１０８は、プロセッサ１００をリセットすることなく、コプロセッサ１０２を選択的にリセットする。１つの実施形態において、選択プロセッサリセットモジュール１０８によって行なわれるリセットは、パワーアップ時間またはリブート時間で行なわれるものと同じリセットである。このような実施形態では、コプロセッサ全体がリセットされてもよい。他の実施形態において、実行されるリセットは、パワーアップ時間で一般にリセットされるハードウェアの一部のリセッティングだけを含んでいてもよい。１つの実施形態では、複数のサブプロセッサ（図示せず）がコプロセッサ１０２に関連付けられる。この実施形態では、リセットが各サブプロセッサで行なわれ、一方、他の実施形態では、サブプロセッサの一部だけがリセットされる。グラフィックプロセッサに関連している前記サブプロセッサの一例は、２Ｄレンダリングエンジン、３Ｄレンダリングエンジン、３Ｄピクセルパイプ等である。
【００２７】
他の実施形態においては、リセットを確実に成功させるため、リセット機能が複数回、例えば１６回呼び出される。他の実施形態において、実行されるリセットは、バス上でリセット信号をシミュレートすることによるコプロセッサ全体のリセッティングである（例えば、システムをリブートする際に行なわれるリセット）。このような実施形態においては、周辺コンポーネント相互接続（ＰＣＩ）空間内の特定の場所に特定の値が書き込まれる。この実施形態は、コプロセッサを監視及びリセットするための回路１０８が検出できる全てのハードウェアハングのリセットを行なうことができるという利点を提供する。
【００２８】
他の実施形態において行われるリセットは、ハング検出モジュール１０６によるコプロセッサ１０２内のハングの検出時に実行するように具体的に設計されているリセットである。この実施形態では、選択プロセッサリセットモジュール１０８がコプロセッサ１０２だけをリセットするが、他の実施形態では、更なるプロセッサに関してリセットが行なわれる。
【００２９】
１つの実施形態においては、プロセッサ１００によってハング検出モジュール１０６が実行される。他の実施形態においては、プロセッサ１００がＣＰＵである。１つの実施形態において、ハング検出モジュール１０６は、コプロセッサ１０２内のハングを検出するとともに、ハングが検出されたことを示しているハング通知信号１１０を選択プロセッサリセットモジュール１０８に対して送るようになっている。１つの実施形態では、選択プロセッサリセットモジュール１０８がプロセッサ１００により実行され、コプロセッサを監視及びリセットするための回路１０４の命令をプロセッサ１００が実行し続けることを許容しつつ、コプロセッサ１０２に関してリセットが行なわれる。
【００３０】
１つの実施形態では、コプロセッサ１０２がグラフィックプロセッサであり、グラフィックプロセッサにより実行される命令がグラフィックレンダリングコマンドである。グラフィックプロセッサは、グラフィックプロセッサが現在命令を実行しているかどうかを示すためのビジーフラグを含んでいる。１つの実施形態において、グラフィックプロセッサは、グラフィックレンダリング命令を実行するために使用されるレジスタを有している。グラフィックプロセッサ内でハングが発生したかどうかを判断するために、ハング検出モジュール１０６は、ビジーフラグが設定されていることを検出するとともに、一つまたは複数のグラフィックプロセッサのレジスタにおける動作を検査し続け、レジスタにおける動作がグラフィックレンダリングコマンドの実行を表わしているかどうかを判断する。ビジーフラグとグラフィックプロセッサレジスタで確認された動作との間に相違が存在する場合には、ハング検出モジュール１０６はハング通知信号１１０を選択プロセッサリセットモジュール１０８に対して送る。その後、選択プロセッサリセットモジュール１０８はグラフィックプロセッサのリセットを行なう。１つの実施形態においては、プロセッサがビジー状態でないことをビジーフラグが示すと、システムは、関連しているレジスタにおいて何らかの動作が存在するかどうかをチェックしない。
【００３１】
図２は、コプロセッサを監視及びリセットするための回路１０４を使用する方法２００を示している。ステップ２０２において開始ノードが行なわれた後、システムがコプロセッサ内のハングを検出するステップ２０４が行なわれる。１つの実施形態において、図１に関して前述のように、コプロセッサ１０２内のハングを検出するステップは、前記コプロセッサ１０２に関連するビジーフラグと対応しているレジスタとの間の相違を識別することにより行なわれてもよい。この実施形態において、ハング検出モジュール１０６は、ビジーフラグが設定されていることを判断するようになっているが、コプロセッサ１０２がハング状態にあることを対応しているレジスタの動作が示していることを判断するようになっている。前述のように、１つの実施形態において、システムは、新たな一つまたは複数の命令がコプロセッサ１０２に対して送られるときにコプロセッサ１０２内のハングを検出するようになっている。更に他の実施形態において、ハング検出モジュール１０６は、ビジーフラグが設定されているときには常にコプロセッサ内のハングを検出するようになっている。１つの実施形態において、ハング検出モジュール１０６は、ビジーフラグが設定されている限り、コプロセッサ１０２内のハングを定期的に識別し続ける。ハング検出モジュール１０６によってハングが検出されると、ハング検出モジュール１０６は選択プロセッサリセットモジュール１０８に対してハング通知信号１１０を送る。
【００３２】
ステップ２０６において、選択プロセッサリセットモジュール１０８は、コプロセッサ１０２がハング状態にあるというハング通知信号１１０を受けると、プロセッサ１０４をリセットすることなくコプロセッサ１０２を選択的にリセットするようになっている。また、図１に関して前述のように、リセットされないプロセッサは、コプロセッサを監視及びリセットするための回路１０４を実行しているプロセッサである。他の実施形態において、プロセッサ１０４は、ホストプロセッサまたはＣＰＵであり、コプロセッサを監視及びリセットするための回路１０４に加えて一つまたは複数のシステムプロセッサまたはアプリケーションを実行している。
【００３３】
図３は、プロセッサ１００、コプロセッサ１０２、コプロセッサを監視及びリセットするための回路１０４、ハング検出モジュール１０６、選択プロセッサリセットモジュール１０８、及びコプロセッサ１０２をプロセッサ１００に接続する適当なリンク１１２を示している。また、任意の構成要素も示されており、これらの構成要素は、破線で示されているとともに、停止通信モジュール３００と、リセットチェックモジュール３０２と、リスタート通信モジュール３０４と、ハング通知信号１１０と、リセット通知信号３０６と、リセット成功通知信号３０８と、オペレーティングシステム３１０とを含んでいる。
【００３４】
１つの実施形態において、停止通信モジュール３００は、コプロセッサ１０２内のハングを示しているハング通知信号１１０をハング検出モジュール１０６から受信することに応じて、コプロセッサ１０２とのコマンド通信を停止するために使用される。停止通信モジュール３００は、ハング通知信号１１０の受信に応じて、コプロセッサ１０２に対する命令の送信を停止する。１つの実施形態において、これは、停止通信モジュール３００が送信フラグをオフに設定して、コプロセッサ１０２に対する命令の更なる送信を防止する際に行なわれる。他の実施形態において、停止通信モジュール３００は、グラフィックプロセッサから送り戻されるものが何も無いことを示すため、すなわち、信号やデータ等を戻すコプロセッサ１０２上で、現在実行中で終了していない命令が存在しないことを示すために、受信フラグをオフに設定するようになっている。他の実施形態においては、送信フラグ及び受信フラグの両方がそれに応じて設定される。更に他の実施形態では、受信フラグの機能がビジーフラグに取って代えられ、それにより、ビジーフラグが設定されると、コプロセッサ１０２が信号やデータ等を戻していると見なされ、また、ビジーフラグがオフであると、コプロセッサ１０２がそのような情報を戻していないと見なされる。このように、この実施形態では、選択プロセッサリセットモジュール１０８がビジーフラグをオフに設定し、コプロセッサ１０２がリセットされるようになっている。
【００３５】
リセットチェックモジュール３０２は、選択プロセッサリセットモジュール１０８からのリセット通知信号３０６の受信に応じて、リセットが成功したかどうかどうかを判断し、成功した場合には、リセットチェックモジュール３０２がリセット成功通知信号３０８を生成するようになっている。１つの実施形態において、リセット成功通知信号３０８はリスタート通信モジュール３０４に対して送られる。
【００３６】
１つの実施形態では、リスタート通信モジュール３０４が使用されている。ここで、リスタート通信モジュール３０４は、リセット成功通知信号３０８の受信に応答して、コプロセッサ１０２とのコマンド通信を再開するようになっている。１つの実施形態において、これは、送信フラグをオンに設定することにより行なわれる（図６参照）。他の実施形態では、これは、送信フラグをオンに、受信フラグをオンに共に設定することにより行なわれる。しかしながら、停止通信モジュール３００に関して前述のように、１つの実施形態では、受信フラグをオンに設定する代わりに、ビジーフラグをオンに設定するようになっている。
【００３７】
また、図４は、破線で示されている３つの随意的なステップ４０２、４０４、４０６及び実線で示されている２つの必須のステップ２０４及び２０６に加えて、ステップ２０４に関連している２つの随意的なステップ制限４０８及び４１０、及び、ステップ２０６に関連している１つの随意的なステップ制限４１２も示している。ここで、開始ノード及び終了ノード２０２及び２０８は図２のそれと同じである。また、ステップ２０４及び２０６は、図２で説明して図示したステップと同じステップを表わしている。ステップ４０２において、システムは、コプロセッサ１０２内でのハングの検出に応じて、コプロセッサ１０２とのコマンド通信を停止するようになっている。ステップ４０４において、システムは、コプロセッサ１０２のリセッティングに応じて、コプロセッサ１０２のリセットが成功したかどうかを検出するようになっている。ステップ４０６において、システムは、コプロセッサのリセットが成功したことを検出することに応じて、コプロセッサ１０２とのコマンド通信を再開するようになっている。
【００３８】
ステップ制限４０８において述べたように、ステップ２０４は、コプロセッサ１０２の現在の状態とコプロセッサ１０２の現在の動作との間の相違の検出によりコプロセッサ内のハングを検出することに制限されている。ステップ制限４１０は、ステップ制限４０８で導入された制限に対して更に制限を課し、それにより、相違は、ビジーフラグにおいて反映されている現在のビジー状態を検出し、且つコプロセッサレジスタ動作の欠如において反映されている現在のアイドル動作状態を検出することにより検知される。ステップ制限４１２は、オペレーティングシステム３１０がプロセッサ１００で実行するようにステップ２０６を制限するようになっている。
【００３９】
図５は、コプロセッサ１０２を監視及びリセットするためのシステム５００の一例を示しており、このシステムは、プロセッサ１００と、コプロセッサ１０２と、メモリ５０２と、命令５０４と、ハング検出モジュール命令５０６と、選択プロセッサリセットモジュール命令５０８と、メモリ５０２とプロセッサ１００及びコプロセッサ１０２との間の適当な接続５１０、５１２、５１４及び５１６とを含んでいる。また、コプロセッサ１０２内でハングが検出されると、選択プロセッサリセットモジュール命令５０８に対するハング通知信号１１０がハング検出モジュール命令５０６によって生成される。本明細書で使用されているメモリ５０２は、以下のうちの任意の１つ、すなわち、ＲＡＭ、ＲＯＭ、光メモリまたは磁気メモリ、または、デジタル情報を記憶することができる任意の適当なメモリのうちの任意の１つであってもよい。メモリは、システムメモリ、システムにアクセス可能な他のメモリ、コプロセッサの特定のローカルメモリであってもよい。
【００４０】
命令５０４の組は、適当なプロセッサ１００で実行されるのに適した命令であり、ハング検出モジュール命令５０６及び選択プロセッサリセットモジュール命令５０８を含んでいる。接続５１０、５１２、５１４及び５１６は、ハードワイヤード接続、ブリッジあるいはバス等を含んでいる適当な電子接続を表わしている。１つの実施形態において、接続５１６はホストバスを表わしている。図５に示されているシステムの詳細な動作は、図１及び図２に関して前述のそれと類似している。
【００４１】
図６は、プロセッサ１００がホストプロセッサ６０２に取って代えられている点を除き図５に示されている構成要素を含んでいる、コプロセッサ１０２を監視及びリセットするためのシステム６００を示している。１つの実施形態では、ホストプロセッサがＣＰＵである。また、以下の随意的な命令モジュールが含まれている。すなわち、停止通信モジュール命令６０４と、機能チェックモジュール命令６０６と、リセットチェックモジュール命令６０８と、リスタート通信モジュール命令６１０とが含まれている。この実施形態において、コプロセッサ１０２はビジーフラグ６１２及びレジスタ６１４を含んでいる。また、メモリ５０２は、送信フラグ６１６と、受信フラグ６１８と、コマンドキュー６２０とを含んでいる。
【００４２】
図１に関して前述のように、送信フラグ６１６は、コプロセッサ１０２に対して送られる通信を制御するために使用されている。図１において説明したように、受信フラグ６１８は、コプロセッサ１０２からの情報の受信を制御するために使用されている。コマンドキュー６２０は命令５０４の実行により登録される。作動時、送信フラグ６１６がオンにされると、命令５０４の実行は、コマンドキュー６２０を経由してコプロセッサ１０２に対して自由に送られる。コプロセッサ１０２が次のコマンドを実行できる状態になると、コプロセッサ１０２はコマンドキュー６２０から次のコマンドを受ける。したがって、送信フラグ６１６をオフに設定することにより、コマンドキュー６２０へ登録するために命令５０４が実行されることが防止され、これにより、コプロセッサプロセス１０２は、新たな更なる命令にアクセスすることが防止される。また、図１に関して前述のように、ビジーフラグ６１２をレジスタ６１４と共に使用して、コプロセッサが現在ハング状態に直面しているかどうかを判断することもできる。また、図１に関して説明したように、ビジーフラグ６１２を受信フラグ６１８として使用することもできる。
【００４３】
図７は、グラフィックプロセッサ７０２の選択プロセッサリセットを監視及び要求するためのシステム７００を示しており、このシステムは、プロセッサ１０４の代わりにホストプロセッサ６０２が使用され且つコプロセッサ１０２の代わりにグラフィックプロセッサ７０２が使用されている点を除き、図５に示されているシステムと同様である。
【００４４】
図８は、グラフィックプロセッサ７０２の選択プロセッサリセットを監視及び要求するためのシステム８００を示しており、このシステムは、コプロセッサ１０２がグラフィックプロセッサ７０２に取って代えられている点を除き、図６に示されているシステムと同様である。また、コプロセッサのビジーフラグ６１２及び対応しているレジスタ６１４は、グラフィックプロセッサのビジーフラグ８０２及び対応しているグラフィックレジスタ８０４に取って代えられている。
【００４５】
図９は、グラフィックプロセッサ７０２の選択プロセッサリセットを監視及び要求するためのシステム９００を示している。図９のシステムは、メモリ５０２がグラフィックコマンドキュー９０２及び８個の更なる命令モジュールを含んでいる点を除き、図８のシステムと類似している。８個の新たな命令モジュールは、表示モード切換モジュール命令９０４と、ソフトウェアレンダリングモジュール命令９０６と、ハング解決プロンプトモジュール命令９０８と、報告送信プロンプトモジュール命令９１０と、報告送信モジュール命令９１２と、ハング未解決プロンプトモジュール命令９１４と、機能チェックモジュール命令６０６と、保存スナップショットモジュール命令９１５とを含んでいる。また、リセットチェックモジュール命令６０８、停止通信モジュール命令６０４及びリスタート通信モジュール命令６１０が随意的ではない点が図８とは異なっている。
【００４６】
表示モード切換モジュール命令９０４は、リセット通知信号３０６の受信に応じて動作して、表示モード切換えを行なう。表示モード切換は、ディスプレイ上の全てのウインドウのリフレッシュを要求するホストシステムへの要求の送信である。複数のサブプロセッサ（図示せず）を有している１つの実施形態において、表示モード切換モジュール命令９０４は、サブプロセッサの一部だけをリセットさせるように動作する。ソフトウェアレンダリングモジュール命令９０６は機能障害通知信号９１６またはリセット失敗通知信号９１８の検出に応じて動作し、それにより、ソフトウェアレンダリングモードへの動的な切換えが行なわれる。ソフトウェアレンダリングモードへの動的な切換えの呼び出しにより、システムがソフトウェアレンダリングモードで動作し、このシステムにより、ユーザは、グラフィックプロセッサ７０２のリブートが行なわれる前にその作業を保存することができる。機能成功通知信号９２０に応じてハング解決プロンプトモジュール命令９０８が実行し、これにより、ハングが検出されて解決されたことを示しているプロンプトが表示される。１つの実施形態はハング解決プロンプトモジュール９０８を含んでおらず、したがって、表示が行なわれない。
【００４７】
報告送信プロンプトモジュール命令９１０はハング通知信号１１０に応じて動作するようになっている。エラー報告が離れた場所に送られることをユーザが望んでいるかどうかに関するユーザからの入力を要求するプロンプトが表示される。１つの実施形態において、離れた場所とは、グラフィックプロセッサで実行している或いは実行しようとしているアプリケーションを設計して所有しているベンダである。１つの実施形態において、報告中に含まれる情報としては、図３に関して前述のハードウェア及びソフトウェア状態情報を挙げることができる。報告送信モジュール命令９１２は、報告を離れた場所に送るという要求に応じて送られる送信要求通知信号９２２に応じて動作するようになっている。報告送信モジュール命令９１２は、ハードウェア状態及びソフトウェア状態を含んでいるエラー報告を離れた場所に送る。次に、リセットチェックモジュール６０８から最初に生成されたリセット失敗通知信号９１８に応じて動作する（あるいは、機能チェックモジュール命令６０６から生成された機能障害通知信号９１６に応じて動作する）ハング未解決プロンプトモジュール命令９１４は、ハングが検出され且つホストプロセッサのリセットが無ければハングを解決することができないことを示しているプロンプトを生成するようになっている。１つの実施形態においては、ハング未解決プロンプトモジュール９１４が存在せず、したがって、表示が行なわれない。
【００４８】
機能チェックモジュール命令６０６が利用されている１つの実施形態においては、リセット通知信号３０６の受信に応じてコプロセッサが機能しているかどうかを判断するため、機能チェックモジュール命令６０６は、グラフィックプロセッサ７０２が機能しているかどうかを判断するようになっている。機能している場合、機能チェックモジュール命令６０６は、リセット通信モジュール命令６１０に対して送られる機能成功通知信号９２０を生成するようになっている。リセット通信モジュール命令６１０は、その後、グラフィックプロセッサ７０２の再始動のみを行なう。
【００４９】
他の実施形態において、機能チェックモジュール命令６０６は、ハング解決プロンプトモジュール命令９０８によって処理される機能成功通知信号９２０を生成するようになっている。他の実施形態において、機能チェックモジュール命令６０６は、ソフトウェアレンダリングモジュール命令９０６によって処理される機能障害通知信号９１６を生成するようになっている。１つの実施形態において、機能チェックモジュール命令６０６は、コプロセッサ１０２が完全にリセットされたかどうかを決定する機能を果たす。これは、データを１つの記憶場所から他の記憶場所へとコピーし且つ２つの場所に記憶されたデータを比較することによりコピーコマンドの実行が成功したかどうかを判断するようにコプロセッサ１０２に対して指示する一つまたは複数の命令を、コプロセッサ１０２へ送ることにより行なわれる。ここで、重要なことは、コプロセッサ１０２が結果を解析できる演算を行なってその演算が成功したかどうかを判断することである。
【００５０】
１つの実施形態において、機能チェックモジュール命令６０６は、リセットチェックモジュール命令３０２によってリセット成功通知信号３０８が生成された場合にだけ呼び出されるようになっている。したがって、そのような実施形態において、機能チェックモジュール命令６０６は、コプロセッサ１０２のリセットの成功が検出された場合にのみ実行されるようになっている。１つの実施形態においては、プロセッサが機能していないと判断されると、ＣＰＵは、グラフィックプロセッサレンダリングの性能を引き継ぐ。この場合には、加速されないグラフィックレンダリングがＣＰＵで実行されるため、グラフィクの加速が損なわれる。
【００５１】
保存スナップショットモジュール命令９１５は、コプロセッサ１０２に関連しているハードウェア状態及びソフトウェア状態のスナップショットを保存するように動作する。スナップショットは、ハング検出モジュール命令５０６から生成されるハング通知信号１１０の受信に応じて生成されるようになっている。１つの実施形態において、ハードウェア状態及びソフトウェア状態は、コプロセッサ１０２に関連しているレジスタデータと、コプロセッサ１０２に関連しているグラフィックコマンドキューデータと、チップセット情報と、ＡＧＰポート情報とを含んでいる。ハードウェア状態及びソフトウェア状態のスナップショットは、コプロセッサ１０２の動作に関連しているデータを取得しようとするものであり、これにより、このようなデータの解析は、コプロセッサ１０２がそのハングに直面した理由をデバッグする際に有益となる。
【００５２】
図１０は、特定の実施形態の動作を列挙しているフローチャート１０００を示している。このプロセスはノード１００１から始まる。次に、ステップ１００２において、システムは、コプロセッサ１０２内のハングを検出しようとする。ステップ１００４において、システムは、コプロセッサ１０２がハング状態にあったことをコプロセッサ１０２のチェックが示していたかどうかを判断しようとする。コプロセッサがハング状態でなかった場合、システムはステップ１００２に戻り、また、ハング状態であった場合、システムは、ステップ１００６に移行して、コプロセッサ１０２とのレンダリングコマンド通信を停止するようになっている。ステップ１００６の後、ステップ１００８は、ハードウェア状態及びソフトウェア状態のスナップショットを保存する。ステップ１００８の後はステップ１０１０であり、このステップ１０１０において、システムは、プロセッサ１０４をリセットすることなくコプロセッサ１０２を選択的にリセットするようになっている。ステップ１０１０の後にはステップ１０１２が行なわれ、このステップ１０１２において、システムは、コプロセッサ１０２のリセットが成功したかどうかを検出するようになっている。その後、ステップ１０１４は表示モード切換えを行なう。
【００５３】
ステップ１０１６が行なわれ、このステップにおいて、システムは、コプロセッサ１０２のリセットが成功したかどうかを判断するようになっている。コプロセッサのリセットが成功しなかったことをシステムが検出すると、システムをリブートする必要がある、後述するプロセスが始まる。しかしながら、コプロセッサ１０２のリセットが成功したことをシステムが検出すると、コプロセッサ１０２が機能しているかどうかをシステムが検出するステップ１０１８が行なわれる。その後、ステップ１０２０が行なわれ、このステップにおいて、システムは、コプロセッサ１０２が機能しているか否かを判断するようになっている。システムが機能していない場合には、再び、システムリブートにおいて終了するプロセスが行なわれる。そうではなく、システムが完全に機能していると見なすと、ステップ１０２２が行なわれる。ステップ１０２２において、システムは、コプロセッサ１０２とのレンダリングコマンド通信を再開するようになっている。その後、ステップ１０２４が行なわれ、このステップにおいて、システムは、ハングが検出されて解決されたというプロンプトを表示するようになっている。
【００５４】
次に、ステップ１０２６において、システムは、エラー報告が離れた場所に送られることをユーザが望むかどうかを要求するプロンプトを表示するようになっている。ステップ１０２８において、システムはエラー報告を送るかどうかを決定する。エラー報告が必要ないことが決定される場合、システムはステップ１００２の処理に戻る。報告が要求されている場合には、ステップ１０３０において、ハードウェア状態及びソフトフェア状態を含んでいるエラー報告が離れた場所に送られる。ステップ１０３０の後、システムはステップ１００２に戻り、ここで再びシステムはコプロセッサ内の新たなハングを検出しようとする。ステップ１０１６においてコプロセッサが完全にリセットされなかったという検出がなされると、あるいは、ステップ１０２０においてコプロセッサが完全に機能していなかったと決定される検出がなされると、システムは、対応しているプロセッサを、リブートしなければならないシーケンスの最初のステップであるノードＡへ移行するようになっている。
【００５５】
図１１では、ノードＡの後に、ステップ１１００、１１０２、１１０４、１１０６、１１０８及び最終ノード１１１０が続くように示されている。ステップ１１００において、システムは、ソフトウェアレンダリングモードへの動的な切換えを行なう。ステップ１１００の後のステップ１１０２において、システムは、ハングが検出され且つシステムリセットが行なわれないとこのハングを解決することができないというプロンプトを表示するようになっている。ステップ１１０２の後にはステップ１１０４が続き、このステップにおいて、システムは、エラー報告が離れた場所に送られることをユーザが望んでいるかどうかをユーザが指示することを要求するプロンプトの表示を行なう。ステップ１１０６では、ユーザの応答が解析され、要求が拒絶される場合には、システムはリブートが必要なステップ１１１０に移行し、そうではなく、報告が要求された場合には、ハードウェア状態及び／又はソフトウェア状態を含んでいるエラー報告が離れた場所に送られる。報告を送った後、システムは、その後にリブートが必要とされるステップ１１１０へ移行するようになっている。
【００５６】
本発明の他の変形及び変更ならびにその様々な態様の実施が当業者に明らかであり、本発明が前述の特定の実施形態によって限定されないことは言うまでもない。例えば、前述のステップは任意の適当な順序で行なわれてもよい。したがって、本明細書に開示されて請求された内在する基本的な原理の思想と範囲内に入る全ての変更、変形または同等物が本発明によって網羅されていると考えられる。
【図面の簡単な説明】
【００５７】
【図１】本発明の１つの実施形態に係る、コプロセッサを監視及びリセットするための回路の１つの実施例を示しているブロック図である。
【図２】本発明の１つの実施形態に係る、コプロセッサを監視及びリセットするための方法の１つの実施例を示しているフローチャートである。
【図３】本発明の１つの実施形態に係る、コプロセッサを監視及びリセットするための回路の１つの実施例を示しているブロック図である。
【図４】本発明の１つの実施形態に係る、コプロセッサを監視及びリセットするための方法の１つの実施例を示しているフローチャートである。
【図５】本発明の１つの実施形態に係る、コプロセッサを監視及びリセットするためのシステムの１つの実施例を示しているブロック図である。
【図６】本発明の１つの実施形態に係る、コプロセッサを監視及びリセットするためのシステムの１つの実施例を示しているブロック図である。
【図７】本発明の１つの実施形態に係る、グラフィックプロセッサを含んでいるコプロセッサを監視及びリセットするためのシステムの１つの実施例を示しているブロック図である。
【図８】本発明の１つの実施形態に係る、グラフィックプロセッサを監視及びリセットするためのシステムの１つの実施例を示しているブロック図である。
【図９】本発明の１つの実施形態に係る、グラフィックプロセッサを監視及びリセットするためのシステムの１つの実施例を示しているブロック図である。
【図１０】本発明の１つの実施形態に係る、コプロセッサを監視及びリセットするための方法の１つの実施例を示しているフローチャートである。
【図１１】本発明の１つの実施形態に係る、コプロセッサを監視及びリセットするための方法の１つの実施例を示しているフローチャートである。
【図１】
2007507034.tif 000003
【図２】
2007507034.tif 000004
【図３】
2007507034.tif 000005
【図４】
2007507034.tif 000006
【図５】
2007507034.tif 000007
【図６】
2007507034.tif 000008
【図７】
2007507034.tif 000009
【図８】
2007507034.tif 000010
【図９】
2007507034.tif 000011
【図１０】
2007507034.tif 000012
【図１１】
2007507034.tif 000013
【国際調査報告】
2007507034.tif 000014
2007507034.tif 000015
2007507034.tif 000016