(57)【特許請求の範囲】
【請求項１】
プロセッサにおいてリセット前の情報を保存するための方法であって、
プロセッサの動作中、および前記プロセッサをリセットの発生前に、前記プロセッサにおける第1の記憶要素内のリセット前の情報を更新するステップであり、前記リセット前の情報が、前記プロセッサの動作に応答して変わる、ステップと、
リセット状態の検出に応答して、前記リセット前の情報の履歴が前記プロセッサにおける前記第１の記憶要素から前記プロセッサにおける第2の記憶要素に保存されるステップであって；前記第２の記憶要素がプロセッサ動作レジスタとは別であり；前記プロセッサのリセットの発生より前に、リセット制御回路に従って、キャプチャ信号が前記プロセッサのクロックレートで動作することに応答して、プロセッサ動作の期間にわたって、前記第1の記憶要素から前記第2の記憶要素へのリセット前の情報の前記履歴が保存され；前記キャプチャ信号は、N個の前の状態値の実行中のリストを作成するために、前記プロセッサのクロックサイクルごとに状態値をサンプリングするように構成された調整可能なカウンタに従って生成され；
前記第１の記憶要素を含む前記プロセッサをリセットするための前記プロセッサのリセットを生成するステップであり、前記プロセッサがリセットされ、前記プロセッサのリセットの後行われたプロセッサ動作の間、前記第1の記憶要素が上書きされた後、前記第2の記憶要素が、リセット前の情報の前記履歴を保持する、ステップであって；前記プロセッサのリセットが行われた後、前記プロセッサによる評価のために、リセット前の情報の前記履歴が前記第2の記憶要素からアクセス可能である；前記生成するステップ
と、
を含む方法。
【請求項２】
前記第1の記憶要素が、実行のためにフェッチされた命令のアドレスを保持するプロセッサプログラムカウンタ(PC)である、請求項1に記載の方法。
【請求項３】
前記第1の記憶要素が、前記プロセッサの動作モードを保持するプロセッサ動作モードレジスタである、請求項1に記載の方法。
【請求項４】
前記第2の記憶要素が、前記リセット前の情報の複数の値を保持する、リセット後のプログラムまたは診断回路によってアクセス可能な、記憶装置である、請求項1に記載の方法。
【請求項５】
前記診断回路が、joint test action group(JTAG)ハードウェアスキャンテスト回路である、請求項4に記載の方法。
【請求項６】
前記プロセッサのリセットに応答して、プロセッサプログラムカウンタ(PC)においてあらかじめ定義された命令アドレスを記憶するステップであり、前記あらかじめ定義された命令アドレスが前記プロセッサを、リセット前の情報の前記履歴にアクセスするために、リセット後処理ルーチンに向ける、ステップ
をさらに含む請求項1に記載の方法。
【請求項７】
予期しないリセット状態を検出し、予期しないリセット状態の検出に応答してプロセッサの動作に対応する複数の時点でリセット前の情報をキャプチャするためにキャプチャ信号を生成し、前記キャプチャ信号がリセット前の情報のキャプチャを完了した後、プロセッサのリセットをアクティブ化するように構成されたリセット検出回路と、
前記プロセッサの動作のために変わる前記リセット前の情報を記憶する第1の記憶要素と、
前記プロセッサのリセット後、変更されず、アクセス可能なままの中身を備える第2の記憶要素であり、プロセッサ動作レジスタとは別である第2の記憶要素と、
複数の時点にわたって変化するリセット前の情報の履歴を作成するために、前記キャプチャ信号が前記プロセッサのクロックレートで動作することに応答して、および前記プロセッサのリセット後に行われるプロセッサ動作に応答して前記第1の記憶要素の中身が上書きされる前に、プロセッサ動作の期間にわたって、前記第1の記憶要素から前記第2の記憶要素に前記リセット前の情報をコピーするように構成された制御回路と
を備える装置。
【請求項８】
前記第2の記憶要素が、前のプロセッサ状態値の実行中のリストを保存するために、前記第1の記憶要素からコピーされた前記リセット前の情報を記憶する、請求項7に記載の装置。
【請求項９】
前記第2の記憶要素が、前記検出された予期しないリセット状態に応答して生成された第1のリセット信号に応答して、および、前記プロセッサのリセット前に、前記第1の記憶要素からコピーされた前記リセット前の情報を記憶する、請求項7に記載の装置。
【請求項１０】
前記第1の記憶要素が、前記プロセッサのリセット前の実行のためにフェッチされた命令のアドレスを保持するプロセッサプログラムカウンタ(PC)である、請求項7に記載の装置。
【請求項１１】
前記リセット前の情報の診断評価のために、前記第2の記憶要素からのリセット前の情報の前記履歴にアクセスを与えるように構成された診断インターフェース
をさらに備える請求項7に記載の装置。
【請求項１２】
前記診断インターフェースが、前記プロセッサにおける診断ソフトウェア評価のために、リセット前の情報の前記履歴の直接ソフトウェアアクセスのために構成される、請求項11に記載の装置。
【請求項１３】
前記診断インターフェースが、joint test action group(JTAG)インターフェースを介したリセット前の情報の前記履歴のハードウェアアクセスのために構成される、請求項11に記載の装置。
【請求項１４】
N個の以前の状態値の履歴を作成するために、カウンタ値に基づいて、複数の時点におけるキャプチャ信号を用いて状態値をサンプリングするように構成された、前記プロセッサのクロックレートで動作する調整可能なカウンタ
をさらに備える請求項7に記載の装置。
【請求項１５】
プロセッサによって実行されると、前記プロセッサに動作を実行させる情報を記憶するコンピュータ可読記憶媒体であって、動作が、
Ｎ個のキャプチャ信号が前記プロセッサのクロックレートで動作することに応答して、プロセッサ動作の期間にわたって、第1の記憶要素からキャプチャされ、制御回路によってリセット状態を検出することに応答して生成され、前記プロセッサの予期しないリセットより前に第2の記憶要素に保存された、リセット前の情報のＮ個のサンプルから作成されたリセット前の情報の履歴に、プロセッサにおける前記第2の記憶要素からアクセスすることと、
リセット前の情報の前記履歴に基づいて、前記プロセッサにおけるリセット前のプロセッサ動作状態を決定することであり、前記第２の記憶要素がプロセッサ動作レジスタと別である、
コンピュータ可読記憶媒体。
【請求項１６】
リセット前の情報の前記履歴が、
前記プロセッサの前記予期しないリセットが行われたときより前のプログラムにおける一連の命令を示すプログラムカウンタ(PC)アドレスのＮ個のサンプル
を含む、請求項15に記載のコンピュータ可読記憶媒体。
【請求項１７】
リセット前の情報の前記履歴が、
前記Ｎ個のキャプチャ信号によってサンプリングされた一連のＮ個の状態値であって、前記一連のＮ個の状態値が前記予期しないプロセッサのリセットが行われたときより前のプログラムの動作状態を示す、
請求項15に記載のコンピュータ可読記憶媒体。
【請求項１８】
前記プロセッサのリセットが、前記プロセッサを含むシステムにおいて行われる予期しない状態に応答し、リセット前の情報の前記履歴が、
前記プロセッサのリセットが、前記プロセッサの内部の予期しない状態によって引き起こされたか、前記プロセッサの外部の予期しない状態によって引き起こされたかを示す情報
を含む、請求項1に記載の方法。
【請求項１９】
前記プロセッサのリセットが前記プロセッサの外部の予期しない状態によって生じた場合、リセット前の情報の前記履歴が、
前記プロセッサの外部の前記予期しない状態が、外部デバイスにおける予期しない状態に応答したか、電源回路における予期しない状態に応答したかを示す情報
を含む、請求項18に記載の方法。
【請求項２０】
前記プロセッサにおいて、前記プロセッサの前記予期しないリセットを引き起こした1つまたは複数の状態を診断する目的で、診断モード指示に応答して、前記第2の記憶要素からリセット前の情報の前記履歴にアクセスするステップ
をさらに含む請求項15に記載のコンピュータ可読記憶媒体。
【請求項２１】
前記第2の記憶要素における前記リセット前の情報の履歴を作成するために、前記制御回路によって生成される前記Ｎ個のキャプチャ信号に応答して、プロセッサ動作の期間にわたって、第2の記憶要素において、第1の記憶要素からリセット前のプロセッサ情報をキャプチャすることであり、前記第2の記憶要素が、プロセッサ動作レジスタとは別であり、前記第2の記憶要素が、前記プロセッサの前記予期しないリセットが行われた後、リセット前の情報の前記履歴を保持すること
をさらに含む、請求項15に記載のコンピュータ可読記憶媒体。
【請求項２２】
リセット制御回路におけるカウンタの複数のカウント値に基づいて、前記キャプチャ信号を生成することであり、新しいカウント値が、プロセッサ動作の定義された期間にわたってクロックサイクルごとに生成されること
をさらに含む請求項1に記載の方法。
【請求項２３】
予期しないリセット状態の検出に応答してプロセッサ動作に対応する複数の時点でリセット前の情報をキャプチャするためにキャプチャ信号を生成し、前記キャプチャ信号が前記リセット前の情報のキャプチャを完了した後、プロセッサのリセットをアクティブ化するための手段と、
プロセッサの動作によって変化する前記リセット前の情報を保存するように構成された保存するための第1の手段と、
前記プロセッサのリセットの後、変更されず、アクセス可能なまま情報を保存するように構成された保存するための第2の手段であって、前記保存するための第2の手段がプロセッサ動作レジスタと別である、前記第2の手段と、
前記保存するための第2の手段にリセット前の情報の履歴を保存するための前記キャプチャ信号に応答し、および前記プロセッサのリセット後に行われるプロセッサ動作に応答して、前記保存するための第１の手段の中身が上書きされる前に、プロセッサ動作の期間にわたって、前記保存するための第1の手段から前記保存するための第2の手段記憶要素に前記リセット前の情報をコピーするための手段と
を備える装置。
【請求項２４】
前記リセット前の情報の診断評価のために、前記保存するための第2の手段から前記リセット前の情報の履歴にアクセスするための手段
をさらに備える、請求項23に記載の装置。
【請求項２５】
前記プロセッサの前記予期しないリセットに応答して前記第1の記憶要素の中身が上書される、
請求項15に記載のコンピュータ可読記憶媒体。
【請求項２６】
前記リセット前の情報の履歴を生成するために、前記複数の時点にわたって変化する前記リセット前の情報をキャプチャするための前記複数の時点での状態値をサンプルするための手段、
をさらに備える請求項23に記載の装置。
【請求項２７】
プロセッサにリセット前の情報を保存するための方法であって、前記方法が、
プロセッサ動作の間であってリセット状態を検出する前に、前記プロセッサにおける第1の記憶要素にプロセッサ状態情報を更新し、
前記プロセッサのクロックレートで動作し、カウンタ回路の選択されたカウント値での更新されたプロセッサ状態情報をサンプリングするように構成された前記カウンタ回路に応じて、予期しないリセット状態の検出に応答してＮ個のキャプチャ信号を生成し、
第2の記憶要素のＮ個の以前の状態値の実行リストを生成するために前記Ｎ個のキャプチャ信号を使用して前記第1の記憶要素と別の前記第2の記憶要素にサンプリングされ更新されたプロセッサ状態情報を保存し、
前記第2の記憶要素にＮ個の以前の状態値を保存した後でかつリセット状態の検出後に、前記第1の記憶要素をリセットする、
を含む方法。
【請求項２８】
前記プロセッサのリセットが生じた後、前記プロセッサによる評価のために前記第2の記憶要素から前記Ｎ個の以前の状態値の実行リストにアクセスする、
ことをさらに含む請求項27に記載の方法。
【請求項２９】
前記プロセッサのリセットが生じた後、診断評価のための診断インターフェースを介して前記第2の記憶要素から前記Ｎ個の以前の状態値の実行リストにアクセスする、
ことをさらに含む請求項27に記載の方法。
【請求項３０】
更新された前記プロセッサ状態情報の各サンプルがプログラム・カウンタ・アドレスとサンプリングされた時点におけるプロセッサ動作状態を含む、
請求項27に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、処理システムに関し、より詳細には、リセット後の評価のためにリセットより前の状態を保存するための技法に関する。
【背景技術】
【０００２】
携帯電話、ラップトップコンピュータ、タブレットパーソナルコンピュータ(PC)、携帯情報端末(PDA)などの多くのポータブル製品は、通信およびマルチメディアのアプリケーションをサポートするプログラムを実行する1つまたは複数のプロセッサを有する処理システムを組み込む。そのような製品の処理システムは、命令およびデータを記憶するための複雑なメモリシステム、コントローラ、および1つまたは複数のバスを介してプロセッサおよびメモリとインターフェースするように構成された周辺デバイスも含み得る。
【０００３】
そのような処理システムでは、様々な状態および状況によって、1つまたは複数のプロセッサは、予期しないリセットを受信する可能性があり、したがって、プロセッサは、すでにアクティブなソフトウェアプログラムの実行をやめ、いくつかの内部リソースを再初期化し、アーキテクチャ定義の命令アドレスからの実行を開始する。たとえば、プロセッサは、ソフトウェアで開始されたリセットの機能を有し得、バスの非アクティブ化または他の監視されたシグナリングの検出のためにリセットを発行し得る1つまたは複数のハードウェアタイムアウト回路、短期の電圧低下に反応する電圧モニタなどの外部回路、ならびに周辺機器およびデバッグ回路もプロセッサのリセットを開始することができる。プロセッサのリセット中に、プロセッサ状態情報が、定義された決定論的な状態に初期化される。リセットの結果として、リセットの直前のプロセッサ状態情報が失われる。したがって、予期しないリセットなど、リセットの原因を見つけることは、容易に決定されない可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
そのいくつかの態様の中でも、本開示は、リセット後の評価のために、予期しないリセットなど、リセットより前の状態を保存するためのより効率的な方法および装置を提供する必要性が存在することを認識する。そのような目的のため、本発明の一実施形態は、プロセッサにおいてリセット前の情報を保存するための方法を対象とする。プロセッサのリセットに応答して変更された第1の要素に記憶されたプロセッサ情報は、リセット状態の検出に応答して、第2の要素に保存される。プロセッサのリセットは、リセット状態の検出に応答して、およびプロセッサ情報が第2の要素に保存された後、開始され、プロセッサのリセットが行われ、第1の要素が変更された後、第2の要素がリセット前のプロセッサ情報を保持し、リセット前のプロセッサ情報は、プロセッサのリセットが行われた後、評価のために、第2の要素からアクセス可能である。
【０００５】
別の実施形態は、装置を対象とする。リセット検出回路は、予期しないリセット状態を検出すると、プロセッサのリセットを開始するように構成されている。第1の記憶要素はリセット前の情報を有し、第2の記憶要素はロセッサのリセット後、変更されず、アクセス可能なままである。制御回路は、プロセッサのリセットに応答して第1の記憶要素が変更される前に、第1の記憶要素から第2の記憶要素にリセット前の情報をコピーするように構成されている。
【０００６】
別の実施形態は、リセット後の評価のために、リセットより前に行われた状態にアクセスするための方法を対象とする。第1の要素に記憶されたプロセッサ情報は、予期しないプロセッサのリセットに応答して第2の要素に保存され、第2の要素は、予期しないプロセッサのリセットが行われ、予期しないプロセッサのリセットに応答して、第1の要素が変更された後に、リセット前のプロセッサ情報を保持する。リセット前のプロセッサ動作状態を決定するために、リセット前のプロセッサ情報に第2の要素からアクセスする。
【０００７】
本発明の他の実施形態が、本発明の様々な実施形態が例として示され記載されている以下の詳細な説明から、当業者には容易に明らかになることが理解されよう。本発明は、他の実施形態および様々な実施形態が可能であり、そのいくつかの詳細は、本発明の趣旨および範囲からすべて逸脱することなく、他の様々な点において修正が可能であることを了解されよう。したがって、図面および詳細な説明は、制限ではなく、本質的に例示と見なされるべきである。
【０００８】
本発明の様々な態様を、限定ではなく例として、添付の図面に示す。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態を有利に用いることができるワイヤレス通信システムを示す図である。
【図２】本発明の一実施形態を有利に用いることができる例示的な処理システムを示す図である。
【図３】本発明の一実施形態を有利に用いることができるリセットに応答するための例示的なプロセスを示す図である。
【発明を実施するための形態】
【００１０】
添付の図面に関する下記の詳細な説明は、本発明の様々な例示的実施形態の説明として意図されており、本発明が実施され得る唯一の実施形態を表すように意図されているわけではない。詳細な説明は、本発明の完全な理解をもたらす目的で、具体的な詳細を含んでいる。しかしながら、本発明がこれらの具体的な詳細なしに実行され得ることが、当業者には明らかであろう。場合によっては、本発明のコンセプトを曖昧にするのを回避する目的で、周知の構造および構成要素がブロック図の形式で示されている。
【００１１】
図1は、本発明の実施形態を有利に用いることができる例示的なワイヤレス通信システム100を示す。図1は、説明のために、3つの遠隔ユニット120、130、および150、ならびに、2つの基地局140を示す。一般的なワイヤレス通信システムは、これより多くの遠隔ユニットおよび基地局を有し得ることが理解されよう。それぞれ構成要素125A、125C、125B、および125Dによって表すハードウェア構成要素、ソフトウェア構成要素、または両方を含む遠隔ユニット120、130、150および基地局140は、以下でさらに説明する本発明の実施形態を組み込むように適合されている。図1は、基地局140から遠隔ユニット120、130、および150への順方向リンク信号180、ならびに遠隔ユニット120、130、および150から基地局140への逆方向リンク信号190を示す。
【００１２】
図1では、ワイヤレスローカルループシステムにおいて、遠隔ユニット120は携帯電話として示され、遠隔ユニット130はポータブルコンピュータとして示され、遠隔ユニット150は定位置遠隔ユニットとして示されている。例として、遠隔ユニットは、代替的には、セルフォン、スマートフォン、ページャ、ウォーキートーキー、ハンドヘルド個人通信システム(PCS)ユニット、タブレット、携帯情報端末などのポータブルデータユニット、またはメータ読取り機器などの固定位置データユニットでもよい。図1は、本開示の教示による遠隔ユニットを示すが、本開示は、これらの例示的な示されたユニットに限定されない。本発明の実施形態は、図1に示したデバイスにおいて利用されるなど、任意の処理システムにおいて好適に採用され得る。
【００１３】
処理システムのリセットは、いくつかの理由で生成され得る。たとえば、リセットは、一般に、最初の電源投入状況時に起こり得る、処理システムへの電力がオンにされたとき、または節電状態からのパワーアップ時に適用される。リセットは、予期しないハードウェアまたはソフトウェアの故障、ノイズの結果、外部イベントなどにも起因し得る。一般に、リセットは、処理システムを既知の状態に初期化するためのパワーオンシーケンスの一部として発行される。たとえば、あらかじめ定義された命令アドレスに対するリセットを受信すると、現在実行している命令のアドレスを保持するプロセッサプログラムカウンタ(PC)が初期化される。リセットの結果として、リセットの直前にプロセッサがコードを実行していたPC命令アドレスが失われる。最初のパワーオン状況で、リセットより前のPCアドレスは、ほとんどまたはまったく価値がない。しかしながら、予期しないリセットなど、他のタイプのリセットでは、リセットより前のPCアドレスを知っていることは、診断の目的で、有用であり得る。予期しないリセットは、一般に、たとえば、最初のパワーオンリセットと区別できない。
【００１４】
リセットより前のPCアドレスは、リセットのために失われた唯一の情報ではない。リセットされるより前にプロセッサが何を実行していたかを理解することに関係し得る追加のプロセッサ情報も失われ得る。たとえば、処理システムが、リセット後、決定論的方式で実行を開始することをさらに確実にするために、リセットに応答して、リセットより前にプロセッサが実行していた動作モードが、監理者動作モードなど、特定の動作モードと置き換えられる可能性がある。プロセッサは、1つまたは複数の動作モードを有し得るが、たとえば、ARMプロセッサなど、商用のプロセッサは、モニタ、ハイパーバイザ、システム、アボート、スーパーバイザ、未定義の割込み要求(IRQ)、高速割込み要求(FIQ)、およびユーザ動作モードを含む9つの処理モードのうちの1つで実行し得る。ARMプロセッサは、一般に、リセットに応答して、スーパーバイザモードに入り、リセットに応答して動作モード情報を上書きする。
【００１５】
プロセッサ情報は、プロセッサプログラムカウンタ(PC)アドレス値、および動作モード、状態フラグ、割込みマスク、コプロセッサ状態など、他の内部システム情報を含み得る。PCアドレス値を含むそのようなプロセッサ情報は、プロセッサ状態を示すが、プロセッサ情報は、リセット後の評価のために、プロセッサをリセットするより前に保存するのに有用な様々なレベルの情報に優先順位が付けられ得る。たとえば、リセット前の情報の基本レベルは、PCアドレス値とすることができ、リセット前の情報の第2のレベルは、選択された他のリセット前内部状態値を含み得る。たとえば、あるシステムは、リセット前のPCアドレス値のみの記憶域を含み得、別のシステムは、リセット前のPCアドレス値のための第1の記憶要素、およびプロセッサ動作モードなど、他のリセット前の情報のうちの1つのための第2の記憶要素を含み得る。異なるシステムは、第1の記憶要素における一連のPCアドレス値、および各PCアドレス値に対応し、製品またはアプリケーション要件に従って記憶のために選択された一連の他のリセット前の情報のための大量の記憶域を提供し得る。
【００１６】
予期しないリセットは、いくつかの理由で生じ得る。たとえば、予期しないリセットは、通常、リセットをもたらす非同期のイベントの結果である。予期しないリセットは、アクティビティの予期しない故障または予期しない欠如のために1つまたは複数の信号を監視する1つまたは複数のウォッチドッグタイマーからリセットイベント通知を受信することにも起因し得る。別の例では、予期しないリセットは、電力制御回路における擬似リセットを生成する電源電圧におけるノイズまたは予期しない変動に起因し得る。さらなる一例では、システムオペレータが物理的またはソフトウェアリセットボタンをアクティブ化したかもしれない。システムオペレータは、一般に、「リセットボタン」が押されたときにプロセッサが何をしているかを知らない。たとえば、システムオペレータは、システムがハングアップしているように見えた、またはある種の異常なアクティビティが付属の画面に描かれていたことに気づいたかもしれず、そのため、システムオペレータは、リセットを強行することを決定した。そのような「ハングアップ」状態におけるプロセッサは、一般に、そのような状況から回復したり、システムオペレータに情報を提供したりすることができない。リセット後、システムオペレータは、どんな異常な挙動が観察されていたかを理解しようとするために、プロセッサが実行していたプログラムにおける場所、およびリセットを検出する前に存在した他の状態を知ることを望み得る。リセットは、システムにとって予想外であるので、予期しないリセットより前のPCアドレスを含むプロセッサ情報は、ソフトウェアにおけるアドレス、およびプロセッサが実行していた状態を決定する際に価値があり得る。そのような情報は、以下でより詳細に説明するように、予期しないリセットを引き起こしたイベントを決定するのに有用であり得る。
【００１７】
図2は、本発明の一実施形態を有利に用いることができる例示的な処理システム200を示す。例示的な処理システム200は、図1の構成要素125A、125C、125B、125Dにおいて好適に採用され得る。処理システム200は、バス214によって外部デバイス204に結合されたシステムコア202を含む。システムコア202は、プロセッサ206およびメモリコンプレックス208を備える。メモリコンプレックス208は、複数のレベルの命令およびデータキャッシュならびにメインメモリを備える。システムコア202は、1つまたは複数のプロセッサを含み得、特定のアプリケーションに必要なプロセッサの数は、処理要件および設計制約に応じて変わり得る。プロセッサ206によって例示されるものなど、マルチプロセッサコアにおけるプロセッサの各々は、以下で説明する方法で、リセットに応答する。
【００１８】
外部デバイス204は、周辺バス216によって外部周辺デバイス212に結合された共有されるバスおよびバス制御回路210を含む。外部周辺デバイス212は、バスマスタリングデバイスとすることができ、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向けプロセッサ(ASP)などを含み得る。外部周辺デバイスは、メモリコントローラ、別のバス相互接続デバイスに相互接続するためのブリッジデバイス、ハードディスクコントローラなどの周辺デバイス、ユニバーサルシリアルバス(USB)コントローラ、対話型表示装置、コントローラを送信機および受信機に結合する無線デバイスなどであり得る。外部周辺デバイス212は、メモリコンプレックス208からデータを読み取る、またはメモリコンプレックス208にデータを書き込むダイレクトメモリアクセス(DMA)技法を利用するバスマスタも含み得る。バスおよびバス制御回路210は、周辺およびバスリセット信号218を生成し得る。
【００１９】
プロセッサ206は、プログラムカウンタ(PC)220、動作状態記憶ユニット222、およびリセット制御回路224を含む。本発明の要素に焦点を当てるために、プロセッサパイプラインなどのプロセッサ206の他の要素は示されていない。PC220は、実行中のプログラムにおける命令のアドレスを保持する。動作状態記憶ユニット222は、ARMプロセッサの9つの処理モードのうちの1つなど、現在の動作モードを保持する。リセット制御回路224は、リセット前PC記憶装置226、リセット前状態記憶装置228、リセット後アクセス回路230を含む。リセット制御回路224は、リセット動作状態マシンの一部として、プロセッサ情報の選択された要素をアーキテクチャの特定のリセット後の値に変更する前に、1つまたは複数のプロセッサレジスタに記憶されたプロセッサ情報のリセット前の値を自動的にキャプチャするように構成される。
【００２０】
外部のまたは予期しないイベントは、周辺およびバスリセット218、外部リセット234、または内部リセット236を生成し得る。周辺およびバスリセット218は、監視されたタイムウィンドウ内でのバス214上のバスアクティビティの欠如のために、ウォッチドッグタイマーアラートによって生成され得る。外部リセット234は、たとえば、節電状況のために、またはノイズのために、電力回路で起こる擬似状態のために生成され得る。内部リセット236は、内部リセット236が生成される予期しない方法でプログラムコードが動作するために生成され得る、または、たとえば、制限よりも高い温度を示すプロセッサに関連付けられた熱センサーによって生成され得る。一実施形態では、周辺およびバスリセット218、外部リセット234、および内部リセット236は一緒に論理的にOR演算されて、結合されたリセットが生成され得る。また、3つのリセット218、234、236のどれか、または3つのリセットの組合せが結合されたリセットを生成したことを示すリセットタイプ指示がリセット前レジスタに記憶され得る。リセットタイプ指示の診断評価は、予期しないイベントを分離するのに役立ち得る。たとえば、予期しないイベントは、周辺およびバスリセット信号218が発生した場合、外部デバイス204に、外部リセット234が発生した場合、電源装置回路などの外部回路に、または内部リセット236が発生した場合、ソフトウェアイベントに分離され得る。
【００２１】
リセットの直接の理由は、3つのリセット218、234、または236のうちの1つまたは組合せを識別することから決定され得るが、そのような情報は、一般に、プロセッサが実行していた場所、またはそれが実行していた他の状態を伝えない。たとえば、リセットは、プロセッサにおける熱的な過負荷のために、内部リセット236によって直接引き起こされ得るが、これは、熱的な過負荷がなぜ起こったかに関するどんな情報も提供しない。しかしながら、リセット前のPCアドレス、および任意の他の利用可能な保存されたリセット前の状態情報にアクセスすることによって、たとえば、プロセッサの温度がなぜ高すぎたかの指示であり得る、内部リセット236が発生したとき、複雑で電力集約的なベクトル乗算累算演算を処理するループの途中で、プロセッサが実行されていたことが決定され得る。
【００２２】
予想外のリセットなど、リセットの開始を認識すると、プロセッサプログラムカウンタ(PC)220の現在のリセット前の値、および動作状態レジスタ222のリセット前の値は、それぞれリセット前PC記憶装置226、およびリセット前状態記憶装置228においてキャプチャされ得る。リセット前の情報のキャプチャの後、システムは、PC220および動作状態レジスタ222を、アーキテクチャの特定のリセット後の値に変更する、予期しないリセットの終了シーケンスに進む。リセット後アクセス回路230は、記憶装置226および228に記憶されたリセット前の値を、たとえばjoint test action group(JTAG)ハードウェアスキャンテスト回路によって定義されるように、連続的に、または並行して受信し、診断の目的でリセット前の情報のための結合機構を提供することができるアクセス回路出力240において記憶された情報を提供する。記憶装置226および228に記憶されたリセット前の値も、プロセッサ206上で動作する診断プログラムによってアクセスされ得る。リセット前PC記憶装置226およびリセット前状態記憶装置228など、そのようなリセット前キャプチャ記憶装置は、記憶された値が、そのとき、新しいリセット前の値によって上書きされる、別のリセットが行われるまで、リセット前の値を維持し得る。
【００２３】
リセット前の値を保存するために、プロセッサまたはシステムのリセットの生成は、本発明の一実施形態に従って動作するように構成される。最初に、リセットを受信した後、PCアドレスおよび他の状態値など、プロセッサ情報のリセット前の値が保存される。リセット前の値が保存された後、プログラムカウンタ(PC)220、動作状態レジスタ222、および残りのシステムコア回路をリセットするために、システムコアリセット244が生成される。そのような動作シーケンスは、リセット動作状態マシンによって制御され得る。一実施形態では、システムコアリセット244の立上りは、リセット前PC記憶装置226においてプログラムカウンタ(PC)220に記憶されたPCアドレスをキャプチャするために使用され得、また、リセット前状態記憶装置228において動作状態レジスタ222に記憶された動作状態値をキャプチャするためにも使用され得る。システムコアリセット244の立下りまたはアクティブ状態は、次いで、PCレジスタ220、動作状態レジスタ222、およびシステムコアの残りを、アーキテクチャ上定義されたリセット後の状態にリセットするために使用され得る。代替実施形態では、システムコアリセット244が続く一連のキャプチャ信号は、リセット前のプロセッサ状態情報をキャプチャするために使用され得、次いで、リセット前のプロセッサ状態情報が安全にキャプチャされた後、システムコアがリセットされる。たとえば、カウンタが続くリセット状態キャプチャラッチは、リセット制御回路224に含まれ得る。リセット状態キャプチャラッチは、リセット状態を検出するために使用され、カウンタを有効にするためにも使用され得る。カウンタは、リセット状態の検出に応答して、あらかじめ決定された期間の間の各クロックサイクルで増分され、リセット前の値は、1つまたは複数の初期のカウント値に応答して、1つまたは複数の対応するキャプチャ信号によってキャプチャされ、次いで、システムリセットが行われ、これは、後のカウント値で行われる、PCおよび状態レジスタのアーキテクチャの特定のリセット後の値への変更を含む。リセット状態キャプチャラッチおよびカウンタは、システムリセットアクションの終了に応答して、初期状態に戻る。
【００２４】
別の実施形態では、リセット前のプロセッサ状態情報の履歴は、キャプチャされ、保存され、システムコアがリセットされた後、利用可能にされ得る。たとえば、リセット前PC記憶装置226は、N個の記憶ロケーションに容量が増加され得る。同様に、リセット前状態記憶装置228も、N個の記憶ロケーションに容量が増加され得る。リセット前PC記憶装置226とリセット前状態記憶装置228の両方は、システムリセットの前の最後のN個のPCアドレスおよび最後のN個の状態値の実行中のリストを保持する。リセット前PC記憶装置226およびリセット前状態記憶装置228は、一般に、リセットされない。リセット制御回路224で動作するリセット状態キャプチャラッチは、リセット状態を検出するために使用され得、また、カウンタを有効にするためにも使用され得る。カウンタは、リセット状態の検出に応答して、Xクロックサイクルの間の各クロックサイクルで増分され、リセット前のPCおよび状態値は、Xクロックサイクルの期間の間、対応する記憶装置においてキャプチャされ、次いで、システムコアリセット244が行われ、これは、後のカウント値で行われる、PCおよび状態レジスタのアーキテクチャの特定のリセット後の値への変更を含む。リセット状態キャプチャラッチおよびカウンタは、システムリセットアクションの終了に応答して、初期状態に戻る。N個のリセット前のPCおよび状態値のシーケンスは、リセット後の処理ルーチンによって読み取られ得、記憶された値は、後続の動作の間に上書きされる。リセット状態が検出される直前に一連のPCおよび他の状態情報を保存すること、および、そのような状態を、利用可能なように、たとえば、アクセス回路出力240に結合された、拡張された記憶デバイスにさらに保存することを含めて、プロセッサ情報を保存するために、さらなる拡張が実現され得る。たとえば、一連のPCおよび他の状態情報は、リセット状態キャプチャラッチによって識別され得るなど、リセット状態が検出されると、拡張された記憶装置に転送され得る。
【００２５】
図3は、本発明の一実施形態を有利に用いることができるリセットに応答するための例示的なプロセス300を示す。ブロック302において、リセット信号が受信されたかどうかの判定が行われる。リセット信号が受信されていない場合、プロセス300は、リセット信号が到着するまで待つ。リセット信号が受信された場合、プロセス300はブロック304に進む。ブロック304、306、および308を有するアウトラインセクション303は、リセット前のプロセッサ情報を保存するための例示的なブロックを表すことに留意されたい。ブロック304において、PC220など、プログラムカウンタ(PC)におけるアドレスは、図2のリセット前PC記憶装置226など、リセット前PC記憶装置に保存される。ブロック306において、リセット前状態記憶装置が利用可能であるかどうかの判定が行われる。たとえば、そのような判定は、回路にリセット前状態記憶装置を含めるまたは含めないことによって行われ得る。リセット前状態記憶装置が利用可能である場合、プロセス300はブロック308に進む。ブロック308において、動作状態レジスタ222などの動作状態レジスタに記憶された動作状態は、リセット前状態記憶装置228などのリセット前状態記憶装置に保存される。リセットのために失われ得る他のプロセッサ情報も、さらなる処理のために、リセット前記憶装置に記憶され得ることが予想される。リセット前状態記憶装置が利用可能ではない場合、プロセス300はブロック310に進む。したがって、一連のブロック304、306、310は、リセット前の情報の基本レベルとしてリセット前のPCアドレスを保存するシステムを表す。別の一連のブロック304、306、308、310はリセット前のPCアドレスを保存する、および、リセット前状態記憶装置におけるプロセッサ動作モードなど、他のリセット前のプロセッサ情報の要素を保存するシステムを表す。
【００２６】
代替実施形態では、アウトラインセクション303は、ブロック306および308を必要とすることなく、ブロック304をブロック310に接続することによって実施され得る。別の実施形態では、アウトラインセクション303は、ブロック306を必要とすることなく、ブロック304を、ブロック310に接続するブロック308に接続することによって実施され得る。さらなる実施形態では、アウトラインセクション303は、ブロック306を必要とすることなく、ブロック304と並列してブロック308を接続することによって実施され得る。さらに、ブロック304におけるリセット前PC記憶装置の記憶容量、およびブロック308におけるリセット前状態記憶装置の記憶容量は、特定の実装の要件に応じて変わり得る。
【００２７】
ブロック310において、PCおよび動作状態レジスタを含むプロセッサは、アーキテクチャで定義された状態にリセットされる。リセット前記憶装置は、リセットされず、そこに記憶されたリセット前の値を維持する。ブロック312において、たとえば、リセット前の情報の診断処理または適応型システム処理のために示され得るなど、リセット前の情報の処理が示されているかどうかの判定が行われる。リセット前情報処理が示されていない場合、プロセス300はブロック314に進む。ブロック314において、プロセス300は、リセット後の処理を続行する。リセット前処理が示されている場合、プロセス300はブロック316に進む。ブロック316において、リセット前PC記憶装置226に保存されたPCアドレス、およびリセット前状態記憶装置228に保存された動作状態は、利用可能な場合、処理のためにアクセスされる。ブロック318において、プロセス300は、リセット前の情報のリセット後の処理を続行する。別のリセット信号を受信することによって、プロセス300はブロック304に戻る。
【００２８】
本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、モジュール、回路、要素、または構成要素は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理構成要素、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを使用して実装することができる。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、専用のコントローラ、またはマイクロコードコントローラであり得る。システムコアは、コンピューティング構成要素の組合せ、たとえばDSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは所望のアプリケーションに適した任意の他のそのような構成などとしても実装され得る。
【００２９】
本明細書で開示する実施形態に関して説明する方法は、ハードウェアにおいて、およびプロセッサによって実行されるソフトウェアにおいて具現化することができる。プロセッサ206は、たとえば、プログラムの実行時に、メモリコンプレックス208から命令およびデータにアクセスすることができる。1つまたは複数のプロセッサプログラムを備えるソフトウェアは、コンピュータ可読記憶媒体における非一時的信号として記憶される。コンピュータ可読記憶媒体は、プロセッサ206、または周辺デバイス212のうちの1つにおけるプロセッサなどのプロセッサに直接関連付けられ得る、または、たとえば、バスおよびバス制御回路210または他のインターフェース手段を介してアクセス可能であり得る。記憶媒体はプロセッサに結合することができ、その結果、プロセッサは、記憶媒体から情報を読み取ることができ、場合によっては記憶媒体に情報を書き込むことができる。プロセッサに結合している記憶媒体は回路実装と一体の直接結合であってもよく、直接アクセス、またはダウンローディング技法を使用したデータストリーミングをサポートする1つまたは複数のインターフェースを利用してもよい。コンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、動的ランダムアクセスメモリ(DRAM)、同期動的ランダムアクセスメモリ(SDRAM)、フラッシュメモリ、リードオンリーメモリ(ROM)、プログラマブルリードオンリーメモリ(PROM)、消去可能プログラマブルリードオンリーメモリ(EPROM)、電気消去可能プログラマブルリードオンリーメモリ(EEPROM)、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、他のタイプのリムーバブルディスク、または任意の他の好適な記憶媒体を含み得る。
【００３０】
本発明が、プロセッサシステムにおいて使用するための例示的な実施形態の場合において開示されたが、上記の説明および添付の特許請求の範囲と矛盾することのない非常に様々な実装形態が当業者によって利用され得ることが理解されよう。たとえば、固定機能実装形態でも、本発明の様々な実施形態を使用することができる。
【符号の説明】
【００３１】
100  ワイヤレス通信システム
120  遠隔ユニット
125A  構成要素
125B  構成要素
125C  構成要素
125D  構成要素
130  遠隔ユニット
140  基地局
150  遠隔ユニット
180  順方向リンク信号
190  逆方向リンク信号
200  処理システム
202  システムコア
204  外部デバイス
206  プロセッサ
208  メモリコンプレックス
210  バスおよびバス制御回路
212  外部周辺デバイス
214  バス
216  周辺バス
218  周辺およびバスリセット信号
220  プログラムカウンタ(PC)
222  動作状態記憶ユニット
224  リセット制御回路
226  リセット前PC記憶装置
228  リセット前状態記憶装置
230  リセット後アクセス回路
234  外部リセット
236  内部リセット
240  アクセス回路出力
244  システムコアリセット
【図１】
0005788611.tif 000002
【図２】
0005788611.tif 000003
【図３】
0005788611.tif 000004