特許第5914521号(P5914521)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アーム・リミテッドの特許一覧

特許5914521処理装置、トレースユニット、および診断装置
<>
  • 特許5914521-処理装置、トレースユニット、および診断装置 図000002
  • 特許5914521-処理装置、トレースユニット、および診断装置 図000003
  • 特許5914521-処理装置、トレースユニット、および診断装置 図000004
  • 特許5914521-処理装置、トレースユニット、および診断装置 図000005
  • 特許5914521-処理装置、トレースユニット、および診断装置 図000006
  • 特許5914521-処理装置、トレースユニット、および診断装置 図000007
  • 特許5914521-処理装置、トレースユニット、および診断装置 図000008
  • 特許5914521-処理装置、トレースユニット、および診断装置 図000009
  • 特許5914521-処理装置、トレースユニット、および診断装置 図000010
  • 特許5914521-処理装置、トレースユニット、および診断装置 図000011
  • 特許5914521-処理装置、トレースユニット、および診断装置 図000012
  • 特許5914521-処理装置、トレースユニット、および診断装置 図000013
  • 特許5914521-処理装置、トレースユニット、および診断装置 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5914521
(24)【登録日】2016年4月8日
(45)【発行日】2016年5月11日
(54)【発明の名称】処理装置、トレースユニット、および診断装置
(51)【国際特許分類】
   G06F 9/30 20060101AFI20160422BHJP
   G06F 9/32 20060101ALI20160422BHJP
   G06F 9/38 20060101ALI20160422BHJP
   G06F 7/00 20060101ALI20160422BHJP
   G06F 11/28 20060101ALI20160422BHJP
   G06F 11/34 20060101ALI20160422BHJP
【FI】
   G06F9/30 380Z
   G06F9/30 350A
   G06F9/32 320F
   G06F9/38 380C
   G06F7/00 202
   G06F11/28 310A
   G06F11/34 A
【請求項の数】20
【全頁数】32
(21)【出願番号】特願2013-548881(P2013-548881)
(86)(22)【出願日】2011年11月29日
(65)【公表番号】特表2014-507710(P2014-507710A)
(43)【公表日】2014年3月27日
(86)【国際出願番号】GB2011052353
(87)【国際公開番号】WO2012095619
(87)【国際公開日】20120719
【審査請求日】2014年11月10日
(31)【優先権主張番号】1100505.5
(32)【優先日】2011年1月13日
(33)【優先権主張国】GB
【前置審査】
(73)【特許権者】
【識別番号】504394342
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ジョン・ホーリー
(72)【発明者】
【氏名】サイモン・クラスク
(72)【発明者】
【氏名】マイケル・ギブズ
(72)【発明者】
【氏名】ポール・ギルカーソン
【審査官】 清木 泰
(56)【参考文献】
【文献】 特開2003−150403(JP,A)
【文献】 特開2003−050716(JP,A)
【文献】 特開平03−204044(JP,A)
【文献】 特開2011−028308(JP,A)
【文献】 特開2007−323636(JP,A)
【文献】 特開2004−013897(JP,A)
【文献】 特表2001−519947(JP,A)
【文献】 特開平03−129441(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30− 9/42
G06F 7/00
G06F11/28−11/34
(57)【特許請求の範囲】
【請求項1】
プログラム命令に応答して、処理操作を実行するように構成された処理回路と、
前記処理回路の条件を示す、少なくとも1つの条件フラグを格納するように構成された、条件ステータス格納場所と、
前記プログラム命令に応答して、前記処理回路によって実行された前記処理操作を示すトレースデータ要素を生成するように構成されたトレース回路と、を備え、
前記処理回路は、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、
前記トレース回路は、前記処理回路が少なくとも1つの条件付き命令を処理することに応答して、前記少なくとも1つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示す、トレースされた条件値を含む、トレースデータ要素を生成するように構成され、前記トレースされた条件値が、前記少なくとも1つの条件付き命令の処理結果を判定するための情報を提供し、
前記トレース回路は制御フラグを格納するように構成され、前記トレース回路は、前記制御フラグに応答して、前記トレースされた条件値を含む前記トレースデータ要素を、条件付き命令について、生成するか否かを選択し、
前記制御フラグは、第1の状態および第2の状態を有し、
前記トレース回路は、前記少なくとも1つの条件フラグの更新に応答して、前記制御フラグを前記第1の状態にし、
前記トレース回路は、前記処理回路が条件付き命令を処理することに応答して、
(a)前記制御フラグが前記第1の状態にあるかどうかを判定し、かつ
(b)前記制御フラグが前記第1の状態にある場合、前記トレースされた条件値を含むトレースデータ要素を生成して、前記制御フラグを前記第2の状態にする、処理装置。
【請求項2】
前記トレースされた条件値は、前記少なくとも1つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグの値を識別する識別子を含む、請求項1に記載の処理装置。
【請求項3】
前記トレースされた条件値は、前記少なくとも1つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグの値を含む、請求項1に記載の処理装置。
【請求項4】
前記処理回路はさらに、少なくとも1つの条件更新命令に応答して、関連付けられた処理操作を実行し、かつ前記関連付けられた処理操作の処理結果に基づいて前記少なくとも1つの条件フラグを更新する、
請求項1〜3のいずれか一項に記載の処理装置。
【請求項5】
前記トレース回路は、前記処理回路が前記少なくとも1つの条件付き命令のうちの前記少なくとも1つを処理することに応答して、前記少なくとも1つの条件付き命令のうちの前記少なくとも1つを処理するときに、前記少なくとも1つの条件フラグの少なくとも前記サブセットの前記現在の値を示す前記トレースされた条件値を有する前記トレースデータ要素を生成するように構成される、請求項1〜のいずれか一項に記載の処理装置。
【請求項6】
前記少なくとも1つの条件付き命令は、前記少なくとも1つの条件フラグの更新後に処理される、第1の条件付き命令を含む、請求項1〜のいずれか一項に記載の処理装置。
【請求項7】
前記トレース回路は、前記トレースされた条件値を含む前記トレースデータ要素の生成をトリガするために、前記プログラム命令のうちの前記少なくとも1つの条件付き命令に含まれている命令を選択するように構成される、請求項1〜のいずれか一項に記載の処理装置。
【請求項8】
前記少なくとも1つの条件付き命令の前記条件付き操作は、非分岐操作である、請求項1〜のいずれか一項に記載の処理装置。
【請求項9】
プログラム命令に応答して処理操作を実行するための処理手段と、
前記処理手段の条件を示す、少なくとも1つの条件フラグを格納するための条件ステータス格納手段と、
前記プログラム命令に応答して前記処理手段によって実行された前記処理操作を示す、トレースデータ要素を生成するためのトレース手段と、を含み、
前記処理手段は、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、
前記トレース手段は、前記処理手段が少なくとも1つの条件付き命令を処理することに応答して、前記少なくとも1つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示す、トレースされた条件値を含むトレースデータ要素を生成するように構成され、前記トレースされた条件値が、前記少なくとも1つの条件付き命令の処理結果を判定するための情報を提供し、
前記トレース手段は制御フラグを格納するように構成され、前記トレース手段は、前記制御フラグに応答して、前記トレースされた条件値を含む前記トレースデータ要素を、条件付き命令について、生成するか否かを選択し、
前記制御フラグは、第1の状態および第2の状態を有し、
前記トレース手段は、前記少なくとも1つの条件フラグの更新に応答して、前記制御フラグを前記第1の状態にし、
前記トレース手段は、前記処理手段が条件付き命令を処理することに応答して、
(a)前記制御フラグが前記第1の状態にあるかどうかを判定し、かつ
(b)前記制御フラグが前記第1の状態にある場合、前記トレースされた条件値を含むトレースデータ要素を生成して、前記制御フラグを前記第2の状態にする、処理装置。
【請求項10】
プログラム命令に応答して、処理装置によって実行された処理操作を監視するためのトレースユニットであって、前記処理装置は、前記処理装置の条件を示す、少なくとも1つの条件フラグを格納するように構成された条件ステータス格納場所を備え、前記処理装置は、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、前記トレースユニットは、
前記プログラム命令に応答して、前記処理装置によって実行された前記処理操作を示すトレースデータ要素を生成するように構成されたトレース回路を備え、
前記トレース回路は、前記処理装置が少なくとも1つの条件付き命令を処理することに応答して、前記少なくとも1つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示す、トレースされた条件値を含むトレースデータ要素を生成するように構成され、前記トレースされた条件値が、前記少なくとも1つの条件付き命令の処理結果を判定するための情報を提供し、
前記トレース回路は制御フラグを格納するように構成され、前記トレース回路は、前記制御フラグに応答して、前記トレースされた条件値を含む前記トレースデータ要素を、条件付き命令について、生成するか否かを選択し、
前記制御フラグは、第1の状態および第2の状態を有し、
前記トレース回路は、前記少なくとも1つの条件フラグの更新に応答して、前記制御フラグを前記第1の状態にし、
前記トレース回路は、前記処理装置が条件付き命令を処理することに応答して、
(a)前記制御フラグが前記第1の状態にあるかどうかを判定し、かつ
(b)前記制御フラグが前記第1の状態にある場合、前記トレースされた条件値を含むトレースデータ要素を生成して、前記制御フラグを前記第2の状態にする、トレースユニット。
【請求項11】
プログラム命令に応答して、処理装置によって実行された処理操作を監視するためのトレースユニットであって、前記処理装置は、前記処理装置の条件を示す、少なくとも1つの条件フラグを格納するための条件ステータス格納手段を含み、前記処理装置は、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、前記トレースユニットは、
前記プログラム命令に応答して、前記処理装置によって実行された前記処理操作を示すトレースデータ要素を生成するためのトレース手段を含み、
前記トレース手段は、前記処理装置が少なくとも1つの条件付き命令を処理することに応答して、前記少なくとも1つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示す、トレースされた条件値を含むトレースデータ要素を生成するように構成され、前記トレースされた条件値が、前記少なくとも1つの条件付き命令の処理結果を判定するための情報を提供し、
前記トレース手段は制御フラグを格納するように構成され、前記トレース手段は、前記制御フラグに応答して、前記トレースされた条件値を含む前記トレースデータ要素を、条件付き命令について、生成するか否かを選択し、
前記制御フラグは、第1の状態および第2の状態を有し、
前記トレース手段は、前記少なくとも1つの条件フラグの更新に応答して、前記制御フラグを前記第1の状態にし、
前記トレース手段は、前記処理装置が条件付き命令を処理することに応答して、
(a)前記制御フラグが前記第1の状態にあるかどうかを判定し、かつ
(b)前記制御フラグが前記第1の状態にある場合、前記トレースされた条件値を含むトレースデータ要素を生成して、前記制御フラグを前記第2の状態にする、トレースユニット。
【請求項12】
プログラム命令に応答して、処理装置によって実行された処理操作を示すトレースデータを分析するための診断装置であって、前記処理装置は、前記処理装置の条件を示す、少なくとも1つの条件フラグを格納するように構成された条件ステータス格納場所を備え、前記処理装置は、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、前記診断装置は、
前記処理装置が少なくとも1つの条件付き命令を処理することに応答して生成された少なくとも1つのトレースデータ要素を含むトレースデータを受信するように構成されたトレース入力部であって、前記少なくとも1つのトレースデータ要素が、前記少なくとも1つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示す、トレースされた条件値を含む、トレース入力部と、
前記少なくとも1つのトレースデータ要素に含まれている、前記トレースされた条件値に基づいて、前記少なくとも1つの条件付き命令の処理結果を判定するように構成された診断回路と、を備え、
前記診断回路は、第1の状態および第2の状態を有する診断制御フラグを格納するように構成され、
前記トレース入力部は、前記処理装置によって処理された前記プログラム命令の指示を受信し、
前記診断回路は、前記処理装置が前記少なくとも1つの条件フラグを更新する指示に応答して、前記診断制御フラグを前記第1の状態にし、
前記診断回路は、前記処理装置が条件付き命令を処理する指示に応答して、
(a)前記診断制御フラグが前記第1の状態にあるかどうかを判定し、
(b)ステップ(a)において前記診断制御フラグが前記第1の状態にある場合、前記条件付き命令について関連付けられたトレースデータ要素を前記トレースデータ内から探し出し、前記関連付けられたトレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定し、前記診断制御フラグを前記第2の状態にし、かつ
(c)ステップ(a)において前記診断制御フラグが前記第2の状態にある場合、以前の条件付き命令に関連付けられた、さらなるトレースデータ要素を前記トレースデータ内から探し出し、前記さらなるトレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定する、診断装置。
【請求項13】
前記処理装置はさらに、少なくとも1つの条件更新命令に応答して、関連付けられた処理操作を実行し、前記関連付けられた処理操作の処理結果に基づいて、前記少なくとも1つの条件フラグを更新する、請求項12に記載の診断装置。
【請求項14】
プログラム命令に応答して、処理装置によって実行された処理操作を示すトレースデータ要素を分析するための診断装置であって、前記処理装置は、前記処理装置の条件を示す、少なくとも1つの条件フラグを格納するための条件ステータス格納手段を含み、前記処理装置は、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、前記診断装置は、
前記処理装置が少なくとも1つの条件付き命令を処理することに応答して生成されたトレースデータ要素を含むトレースデータを受信するための入力手段であって、前記トレースデータ要素が、前記少なくとも1つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示す、トレースされた条件値を含む、入力手段と、
前記少なくとも1つの条件付き命令について前記トレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記少なくとも1つの条件付き命令の処理結果を判定するための診断手段と、を含み、
前記診断手段は、第1の状態および第2の状態を有する診断制御フラグを格納するように構成され、
前記入力手段は、前記処理装置によって処理された前記プログラム命令の指示を受信し、
前記診断手段は、前記処理装置が前記少なくとも1つの条件フラグを更新する指示に応答して、前記診断制御フラグを前記第1の状態にし、
前記診断手段は、前記処理装置が条件付き命令を処理する指示に応答して、
(a)前記診断制御フラグが前記第1の状態にあるかどうかを判定し、
(b)ステップ(a)において前記診断制御フラグが前記第1の状態にある場合、前記条件付き命令について関連付けられたトレースデータ要素を前記トレースデータ内から探し出し、前記関連付けられたトレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定し、前記診断制御フラグを前記第2の状態にし、かつ
(c)ステップ(a)において前記診断制御フラグが前記第2の状態にある場合、以前の条件付き命令に関連付けられた、さらなるトレースデータ要素を前記トレースデータ内から探し出し、前記さらなるトレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定する、診断装置。
【請求項15】
データ処理のための方法であって、
プログラム命令に応答して、処理装置を使用して処理操作を実行するステップと、
前記処理装置の条件を示す、少なくとも1つの条件フラグを格納するステップと、
前記処理操作を示すトレースデータ要素を生成するステップと、を含み、
処理操作を実行する前記ステップは、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行することを含み、
トレースデータ要素を生成する前記ステップは、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示す、トレースされた条件値を含むトレースデータ要素を生成することを含み、前記トレースされた条件値が、前記少なくとも1つの条件付き命令の処理結果を判定するための情報を提供し、
前記方法は、制御フラグを格納するステップを含み、生成する前記ステップは、前記制御フラグに応答して、前記トレースされた条件値を含む前記トレースデータ要素を、条件付き命令について、生成するか否かを選択し、
前記制御フラグは、第1の状態および第2の状態を有し、
前記少なくとも1つの条件フラグの更新に応答して、前記制御フラグは前記第1の状態にされ、
前記処理操作を実行するステップにより、条件付き命令を処理することに応答して、生成する前記ステップは、
(a)前記制御フラグが前記第1の状態にあるかどうかを判定するステップと、
(b)前記制御フラグが前記第1の状態にある場合、前記トレースされた条件値を含むトレースデータ要素を生成して、前記制御フラグを前記第2の状態にするステップと
を含む、データ処理のための方法。
【請求項16】
プログラム命令に応答して、処理装置によって実行された処理操作を示すトレースデータ要素を分析するための方法であって、前記処理装置は、前記処理装置の条件を示す、少なくとも1つの条件フラグを格納するように構成された条件ステータス格納場所を備え、前記処理装置は、少なくとも1つの条件付き命令に応答して、前記条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、前記方法は、
前記処理装置が少なくとも1つの条件付き命令を処理することに応答して生成されたトレースデータ要素を含むトレースデータを受信するステップであって、前記トレースデータ要素は、前記少なくとも1つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示すトレースされた条件値を含む、ステップと、
前記少なくとも1つの条件付き命令について前記トレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記少なくとも1つの条件付き命令の処理結果を判定するステップと、を含み、
前記方法は、診断制御フラグを格納するステップを含み、前記診断制御フラグは、第1の状態および第2の状態を有し、
受信する前記ステップは、前記処理装置によって処理された前記プログラム命令の指示を受信するステップを含み、
前記方法は、前記処理装置が前記少なくとも1つの条件フラグを更新する指示を受信することに応答して、前記診断制御フラグを前記第1の状態にするステップを含み、
前記処理装置が条件付き命令を処理する指示に応答して、判定する前記ステップは、
(a)前記診断制御フラグが前記第1の状態にあるかどうかを判定するステップと、
(b)ステップ(a)において前記診断制御フラグが前記第1の状態にある場合、前記条件付き命令について関連付けられたトレースデータ要素を前記トレースデータ内から探し出し、前記関連付けられたトレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定し、前記診断制御フラグを前記第2の状態にするステップと、
(c)ステップ(a)において前記診断制御フラグが前記第2の状態にある場合、以前の条件付き命令に関連付けられた、さらなるトレースデータ要素を前記トレースデータ内から探し出し、前記さらなるトレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定するステップと
を含む、方法。
【請求項17】
請求項16の方法を実行するようにコンピュータを制御するためのコンピュータプログラムを格納する、非一時的な記憶媒体。
【請求項18】
プログラム命令に応答して、処理操作を実行するように構成された処理回路と、
前記プログラム命令に応答して、前記処理回路によって実行された前記処理操作を示す、トレースデータ要素を生成するように構成されたトレース回路と、を備え、
前記処理回路は、少なくとも1つの条件付き命令に応答して、前記処理回路の条件に基づいて少なくとも1つの条件付き操作を実行し、
前記トレース回路は、第1の状態および第2の状態を有する制御フラグを格納するように構成され、
前記トレース回路は、前記処理回路の前記条件の更新に応答して、前記制御フラグを前記第1の状態にし、
前記トレース回路は、前記処理回路が前記少なくとも1つの条件付き命令のうちの1つを処理することに応答して、
(a)前記制御フラグが前記第1の状態にあるかどうかを判定し、かつ
(b)前記制御フラグが前記第1の状態にある場合、前記少なくとも1つの条件付き命令の処理結果についての情報を提供するための値を示す結果を含む、トレースデータ要素を生成し、前記制御フラグを前記第2の状態にする、処理装置。
【請求項19】
プログラム命令に応答して、処理操作を実行するための処理手段と、
前記プログラム命令に応答して、前記処理手段によって実行された前記処理操作を示す、トレースデータ要素を生成するためのトレース手段と、を備え、
前記処理手段は、少なくとも1つの条件付き命令に応答して、前記処理手段の条件に基づいて条件付き操作を実行し、
前記トレース手段は、第1の状態および第2の状態を有する制御フラグを格納するように構成され、
前記トレース手段は、前記処理手段の前記条件の更新に応答して、前記制御フラグを前記第1の状態にし、
前記トレース手段は、前記処理手段が前記少なくとも1つの条件付き命令のうちの1つを処理することに応答して、
(a)前記制御フラグが前記第1の状態にあるかどうかを判定し、かつ
(b)前記制御フラグが前記第1の状態にある場合、前記少なくとも1つの条件付き命令の処理結果についての情報を提供するための値を示す結果を含む、トレースデータ要素を生成し、前記制御フラグを前記第2の状態にする、処理装置。
【請求項20】
プログラム命令に応答して、処理装置を使用して処理操作を実行するステップであって、処理操作を実行する前記ステップは、少なくとも1つの条件付き命令に応答して、処理回路の条件に基づいて条件付き操作を実行することを含む、ステップと、
前記処理操作を示すトレースデータ要素を生成するステップであって、前記トレースデータ要素は、第1の状態および第2の状態を有する制御フラグに基づいて生成される、ステップとを含み、トレースデータ要素を生成する前記ステップは、
前記処理回路の前記条件の更新に応答して、前記制御フラグを前記第1の状態にすることと、
前記少なくとも1つの条件付き命令のうちの1つを処理することに応答して、(a)前記制御フラグが前記第1の状態にあるかどうかを判定し、かつ(b)前記制御フラグが前記第1の状態にある場合、前記少なくとも1つの条件付き命令の処理結果についての情報を提供するための値を示す結果を含む、トレースデータ要素を生成し、前記制御フラグを前記第2の状態にすることと、を含む、データ処理のための方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理の分野に関する。より詳細には、本発明は、処理装置によって実行された処理操作のトレース、およびトレース中に生成されたトレースデータの分析に関する。
【背景技術】
【0002】
処理装置において、トレース回路は、処理回路によって実行された処理操作を監視するために、および実行された処理操作を示すトレースデータを生成するために提供され得る。診断装置は、処理操作の処理結果を推測するために、トレースデータを分析することができる。処理結果は、処理装置が正しく動作しているかどうかを検証するために、期待された結果に照合され得る。
【0003】
処理装置は、関連付けられた条件を特定する、条件付き命令を実行し得る。条件付き命令の処理結果は、条件付き命令の実行時に、関連付けられた条件が満たされたかどうかによって決まる。条件付き命令の実行がトレース回路によってトレースされると、次にトレース回路は、条件が成立または不成立かどうかの指示を含むトレースデータを生成することができる。トレースデータを分析するときに、その成立/不成立の指示は、条件付き命令の結果を判定するために使用することができる。
【0004】
しかしながら、いくつかの先進のプロセッサをトレースする場合、条件的な結果の成立/不成立は、得るのが困難であり得る。いくつかのプロセッサは、互いに対して並行である、複数の実行ステージを有する処理パイプラインを含むことができる。いくつかのプロセッサは、パフォーマンスを向上するために、命令の適切ではない実行を行う場合がある。したがって、いつ、およびパイプラインにおけるどの時点で、成立/不成立の結果が利用可能になるかを、事前に予測することは困難となり得る。本技術は、条件付き命令のトレースを簡略化することを追求する。
【発明の概要】
【課題を解決するための手段】
【0005】
一態様から見ると、本発明は、プログラム命令に応答して、処理操作を実行するように構成された処理回路と、前記処理回路の条件を示す、少なくとも1つの条件フラグを格納するように構成された、条件ステータス格納場所と、前記プログラム命令に応答して、前記処理回路によって実行された前記処理操作を示すトレースデータ要素を生成するように構成されたトレース回路とを備える、処理装置を提供し、前記処理回路は、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、前記トレース回路は、前記処理回路が少なくとも1つの選択された命令を処理することに応答して、前記少なくとも1つの条件フラグの少なくとも前記サブセットを示す、トレースされた条件値を含む、トレースデータ要素を生成するように構成され、前記トレースされた条件値が、前記少なくとも1つの条件付き命令の処理結果を判定するための情報を提供する。
【0006】
処理装置は、処理回路の条件を示す、少なくとも1つの条件フラグを格納するための、条件ステータス格納場所(例えば、レジスタ等)を有してもよい。処理回路は、少なくとも1つの条件フラグの少なくともサブセットの現在の値に基づいて、条件付き命令を実行することができる。例えば、条件付き命令が実行されると、条件フラグのサブセットの現在の値が所与の条件を満たす場合、それに関連付けられた条件付き操作が実行され得るが、その条件が満たされない場合は、操作は実行されない。トレース回路は、処理回路が少なくとも1つの選択された命令を処理することに応答して、少なくとも1つの条件フラグの少なくともサブセットを示すトレースされた条件値を含む、トレースデータ要素を生成するように構成されてもよく、条件付き命令は、この少なくとも1つの条件フラグに基づく。トレースされた条件値は、少なくとも1つの条件付き命令の処理結果を判定するための情報を提供する。
【0007】
本技術は、条件フラグの値が、条件付き命令の成立/不成立の結果よりも、一般により容易に利用可能であることを認識している。例えば、条件フラグは、しばしば、処理装置のアーキテクチャの状態の一部であるため、条件フラグは、いつ、および処理パイプラインのどの段階において命令の実行結果が利用可能になるかを監視する必要なく、処理パイプラインの早い段階において読み取られ得る。したがって、成立/不成立の結果よりも、条件フラグをトレースすることによって、トレース回路の構成は簡略化される。
【0008】
トレースされた条件値は、異なる形式を有してもよい。一例において、トレースされた条件値は、少なくとも1つの条件フラグの少なくともサブセットの現在の値を含み得る。そのため、トレースデータ要素は、条件フラグの値を直接識別する。
【0009】
あるいは、トレースされた条件値は、少なくとも1つの条件フラグの少なくともサブセットの値を識別する識別子を含んでもよい。これは、いくつかの場合において、条件フラグの実際の値をトレースするよりも効果的であり得る。例えば、条件フラグの値の、特定のパターンが他のパターンよりも多く見られる場合、最もよく見られるパターンには、条件フラグの実際の値よりも少ないビットを有する特定の識別子を割り当てることができる。これにより、トレース回路によって生成されるトレースデータの量が低減する傾向になるため、トレース帯域幅についての制約が軽減される。
【0010】
条件フラグがトレースされる、命令ストリームの時点は、異なってもよく、必ずしも、その結果がトレースされた条件値を使用して判定される条件付き命令である必要はない。トレースされた条件値は、任意の選択された命令によって出力され得る。
【0011】
一例において、処理回路は、少なくとも1つの条件更新命令に応答して、関連付けられた処理操作を実行し、その関連付けられた処理操作の処理結果に基づいて、少なくとも1つの条件フラグを更新する。この場合、条件フラグのトレースをトリガする、少なくとも1つの選択された命令は、少なくとも1つの条件更新命令を含んでもよい。例えば、条件更新命令は、比較命令を含んでもよく、この比較命令は、2つのデータの値を比較して、比較の結果に基づいて、少なくとも1つの条件フラグを更新し、この少なくとも1つの条件フラグは、比較命令の実行時にトレースされ得る。少なくとも1つの条件フラグが更新されるときに、トレースストリームに含まれるトレースされた条件値は、任意の後続の条件付き命令が、それに関連付けられた条件が成立したか、または不成立であったかを判定するための情報を提供する。
【0012】
少なくとも1つの条件更新命令が実行されたことによって、トレースされた条件値が出力されると、トレースされた条件値は、少なくとも1つの条件更新命令を処理することによってもたらされる、条件フラグの更新された値を示し得る。そのため、この更新された値は、条件フラグの次の更新の前に発生する、任意の後続の条件付き命令の結果を判定するために使用することができる。
【0013】
少なくとも1つの条件更新命令は、処理回路によって実行された全ての条件更新命令を含む必要はない。何らかの状況において、介在する条件付き命令なしに、いくつかの条件更新命令が連続して発生する場合があり、この場合には、最後の条件更新命令からもたらされた条件フラグの値が、条件付き命令によって使用される。そのため、全ての条件更新命令についてトレースされた条件値を生成する必要はない。
【0014】
少なくとも1つの条件更新命令の代替として、またはそれに加えて、少なくとも1つの選択された命令が、少なくとも1つの条件付き命令のうちの少なくとも1つを含んでもよい。何らかの状況において、条件更新命令が実行されるときに、任意の後続の条件命令が、その条件更新命令によって生成された、更新された条件フラグの値を実際に使用するかどうかを判定することが困難である場合がある。そのため、代わりに、条件付き命令が、その条件付き命令によって使用される、少なくとも1つの条件フラグの少なくともサブセットをトレースする前に、少なくとも1つの条件フラグを使用するのを待つことがより効果的であり得る。
【0015】
条件付き命令が実行されたことによって、トレースされた条件値が出力されると、トレースされた条件値は、条件付き命令を処理したときの、少なくとも1つの条件フラグの少なくとも関連したサブセットの現在の値を示し得る。
【0016】
同様に、必ずしも、全ての条件付き命令の実行の度にトレースされた条件値を出力する必要はない。プログラムには、相互排他条件に関連付けられた、補助的な一組の条件付き命令が含まれてもよい。例えば、「等しい」という結果を生成する以前の処理操作によって決まる第1の条件付き命令には、「等しくない」という結果を生成する以前の処理操作によって決まる第2の条件付き命令が続いてもよい。この場合、第2の条件付き命令についての条件フラグの値をトレースする必要はなく、これは、その処理結果は第1の条件付き命令について生成されるトレースされた条件値から判定することができるためである。そのため、何らかの状況においては、選択された命令が、少なくとも1つの条件フラグの更新後に処理された第1の条件付き命令を含むことが好ましい場合がある。
【0017】
全てのタイプの条件付き命令または条件更新命令がトレースユニットによってトレースされる必要はない。いくつかの例において、命令のタイプのサブセットのみが対象となり得る。この場合、条件付き命令または条件付き更新命令の関連するサブセットのみが、トレースされた条件値を含むトレースデータ要素の出力をトリガする。トレース回路は、トレースされた条件値を含むトレースデータ要素の生成をトリガするために、プログラム命令のうちの少なくとも1つの選択された命令に含まれる命令を選択するように構成されてもよい。例えば、トレース回路は、例えば、条件付き格納命令等のような、特定の条件付き命令のみというように、条件フラグがトレースされるべきである命令を示す制御信号に応答してもよい。
【0018】
いくつかの種類の命令は、条件付き命令と条件更新命令の両方であり得ることに留意されたい。例えば、条件付き比較命令は、関連付けられた条件を有することができ、関連付けられた条件が満たされた場合に比較が行われることを指定することができる。条件付き比較命令の実行時、関連付けられた条件が、少なくとも1つの条件フラグの現在の値によって満たされた場合に比較は行われ、少なくとも1つの条件フラグは、比較の結果に基づいて更新される。したがって、条件付き比較命令は、トレース回路の構成に依存して、条件付き命令として、もしくは条件更新命令としてのいずれか、または両方にトレースされ得る。
【0019】
トレース回路は、制御フラグを格納するように構成されてもよく、トレース回路は、特定のプログラム命令が、トレースされた条件値を含むトレースデータ要素の生成をトリガするかを選択するために、制御フラグに対する責任を負う。例えば、トレース回路は、制御フラグを使用して、少なくとも1つの条件フラグの現在の状態がすでにトレースされたかどうかの経過を追い、次いで制御フラグを使用して、少なくとも1つの条件フラグが後続の命令によってトレースされるべきか否かを判定する。
【0020】
一例において、制御フラグは第1の状態および第2の状態を有する。例えば、制御フラグは、第1および第2の状態のうちの1つを示す「0」の値と、第1および第2の状態のうちのもう一方を示す「1」の値とを有するビットを含んでもよい。トレース回路は、少なくとも1つの条件フラグの更新に応答して、制御フラグを第1の状態にすることができ、処理回路が条件付き命令を処理することに応答して、(a)前記制御フラグが前記第1の状態にあるかどうかを判定し、かつ(b)前記制御フラグが前記第1の状態にある場合、前記トレースされた条件値を含むトレースデータ要素を生成して、前記制御フラグを前記第2の状態にすることができる。
【0021】
そのため、制御フラグの第1の状態は、少なくとも1つの条件フラグは更新されたが、少なくとも1つの条件フラグの更新値は、まだトレースされていないことを示す。トレースされるべき条件付き命令が実行されたときに、制御フラグが第1の状態にある場合、条件付き命令の処理結果が、トレースデータから判定することができるように、トレースデータ要素がトレースされた条件値を含んで生成される。トレースされた条件値を含むトレースデータ要素の生成に続いて、少なくとも1つの条件フラグの現在の状態はすでにトレースされたため、後続の条件付き命令の実行によって少なくとも1つの条件フラグが再びトレースされる必要がないことを示すために、制御フラグは第2の状態にされる。制御フラグは、少なくとも1つの条件フラグがもう一度更新されると、第1の状態に戻される。この技術は、対応する命令の処理結果が、以前に生成されたトレースデータ要素に含まれた、トレースされた条件値からすでに判定され得る場合は、トレースされた条件値を含むトレースデータ要素は生成されないため、トレースデータの量を低減するのに役立つ。
【0022】
いくつかの実施形態において、条件ステータス格納場所は、処理回路の個々の条件に対応する、複数の条件フラグを格納するように構成され得る。例えば、英国ケンブリッジ所在のARM Limited社によって設計されたプロセッサにおいて、条件フラグには、以前の処理の結果が負の値だったか否かを示すNフラグ、以前の処理の結果がゼロだったか否かを示すZフラグ、以前の処理操作がキャリー演算の結果をもたらしたか否かを示すCフラグ、および以前の処理操作がオーバーフローの結果をもたらしたか否かを示すVフラグが、一般に含まれる。他のタイプの条件フラグもまた可能である。
【0023】
複数の条件フラグが存在する場合、特定の条件付き命令は全ての条件フラグに基づく必要はないが、それらの条件フラグの任意のサブセットに基づき得る。条件フラグの現在の値をトレースする場合、複数の条件フラグの関連するサブセットを示す、トレースされた条件値を有するトレースデータ要素を生成することによって、トレースデータの量は低減され得る。サブセットの一部ではない条件フラグは、トレースデータ要素に含まれることから省略され得る。
【0024】
その一方で、トレース回路はまた、条件フラグのどのサブセットが条件付き命令によって実際に使用されているかに関わらず、複数の条件フラグのうちの全てを示しているトレースされた条件値を有するトレースデータ要素を生成するように構成され得る。これにより、何らかの状況において、条件ステータス格納場所の個々のフラグにアクセスするための回路を設ける必要がなくなる以降は、条件フラグの値にアクセスするために備えられるハードウェアの複雑性が低減され得る。
【0025】
一実施形態において、トレース回路は、複数の条件フラグに対応する複数の制御フラグを格納するように構成され得る。トレース回路は、それぞれの制御フラグに応答して、対応する条件フラグを示す、トレースされた条件値を含むトレースデータ要素を、所与のプログラム命令について生成するか否かを選択することができる。それぞれの制御フラグは、例えば、対応する条件フラグが、そのフラグの直近の更新後からすでにトレースされたか否かの経過を追うために使用されてもよく、したがって、その条件フラグが、後のプログラム命令の実行によってトレースされる必要があるか否かを判定するために使用されてもよい。
【0026】
一例において、複数の制御フラグはそれぞれ、第1の状態および第2の状態を有し、前記トレース回路は、前記複数の条件フラグのうちのいずれかの更新に応答して、少なくとも、更新された条件フラグに対応する制御フラグを前記第1の状態にし、前記トレース回路は、前記処理回路が、必要な条件フラグのサブセットに基づく、前記少なくとも1つの条件付き命令のうちの1つを処理することに応答して、(a)前記必要な条件フラグのサブセットに対応する、対応する制御フラグのいずれかが、前記第1の状態にあるかどうかを判定し、かつ(b)前記対応する制御フラグのいずれかが前記第1の状態にある場合、対応する制御フラグが前記第1の状態にある前記必要なサブセットの、少なくとも条件フラグを示す、トレースされた条件値を含むトレースデータ要素を生成して、前記対応する制御フラグを前記第2の状態にする。
【0027】
したがって、条件フラグのいずれかが更新された場合、少なくとも、更新された条件フラグに対応する制御フラグは、第1の状態にされ、対応する条件フラグはまだ、それらの更新された形態にトレースされていないことを示す。必要な条件フラグのサブセットに基づく条件付き命令を検出した場合、そのサブセットに対応する、対応する制御フラグのうちのいずれかが第1の状態にあるか否かが判定される。これらの対応する制御フラグのうちのいずれかが第1の状態にある場合、これは、対応する条件フラグはまだトレースされていないことを示すため、対応する制御フラグが第1の状態にある、少なくとも、必要なサブセットの条件フラグを示す、トレースされた条件値を含んで、トレースデータ要素が生成される。特定の条件フラグがトレースされる場合、その対応する制御フラグは、第2の状態にされる。条件付き命令を検出し、必要な条件フラグのサブセットのうちの1つが、第2の状態にある対応する制御フラグを有する場合、これは、条件フラグがすでにトレースされており、再度トレースされる必要がないことを示す。この技術は、条件フラグの現在の形態にまだトレースされておらず、特定の条件付き命令の処理結果を判定するために必要である条件フラグをトレースすることによって、トレースデータの量を低減するのに役立つ。
【0028】
一実施形態において、複数の制御フラグのうちの全てが、条件フラグのサブセットのみが更新される場合であっても、条件の更新において第1の状態にされ得る。これにより、条件更新命令の結果としてどのフラグが実際に更新されたかを確認する必要がなくなる以降は、本技術を実装するためのハードウェアは簡素化され得る。
【0029】
複数の制御フラグが提供される実施形態において、その制御フラグが第1の状態にある、必要なサブセットの条件フラグのみをトレースすることによって、トレースデータの量における最も大きな低減が達成され得る。それでもなお、必要な条件フラグのサブセットに対応する、対応する制御フラグのうちのいずれかが、条件付き命令の実行時に第1の状態にある場合、全ての条件フラグの値をトレースすることもまた可能である。これにより、条件フラグの状態を読み取るためのハードウェアが簡素化され得る。
【0030】
1つ以上の制御フラグが、条件フラグの更新が発生するときに、第1の状態にされるものとして、上記に説明されてきた。しかし、これは、制御フラグが第1の状態にリセットされるときだけである必要はない。種々の他の事象によってもまた、制御フラグが第1の状態にされ得る。
【0031】
上述のように、本技術は、全てのタイプの条件付き命令に適用される必要はない。本技術は、例えば、条件付き命令のサブセットだけのために使用されてもよい。一例において、少なくとも1つの条件付き命令の条件付き操作は、非分岐操作であり得る。いくつかのトレース回路は、例えば分岐予測のスキームを使用して、条件付き分岐命令の結果を判定するための、個別の機構を有し得る。したがって、いくつかの実施形態において、本技術は、条件付き非分岐命令のみに適用され、条件付き分岐命令のトレースはトレース回路によって別個に対処され得る。
【0032】
別の態様から見ると、本発明は、プログラム命令に応答して処理操作を実行するための処理手段と、前記処理手段の条件を示す、少なくとも1つの条件フラグを格納するための、条件ステータス格納手段と、前記プログラム命令に応答して、前記処理手段によって実行された前記処理操作を示すトレースデータ要素を生成するためのトレース手段とを含む、処理装置を提供し、前記処理手段は、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行し、前記トレース手段は、前記処理手段が少なくとも1つの選択された命令を処理することに応答して、前記少なくとも1つの条件フラグの少なくとも前記サブセットを示す、トレースされた条件値を含む、トレースデータ要素を生成するように構成され、前記トレースされた条件値が、前記少なくとも1つの条件付き命令の処理結果を判定するための情報を提供する。
【0033】
さらなる態様から見ると、本発明は、プログラム命令に応答して、処理装置によって実行された処理操作を監視するためのトレースユニットを提供し、前記処理装置は、前記処理装置の条件を示す少なくとも1つの条件フラグを格納するように構成された、条件ステータス格納場所を備え、前記処理装置は、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行し、前記トレースユニットは、前記プログラム命令に応答して、前記処理装置によって実行された前記処理操作を示す、トレースデータ要素を生成するように構成されたトレース回路を備え、前記トレース回路は、前記処理装置が少なくとも1つの選択された命令を処理することに応答して、前記少なくとも1つの条件フラグの少なくとも前記サブセットを示す、トレースされた条件値を含む、トレースデータ要素を生成するように構成され、前記トレースされた条件値が、前記少なくとも1つの条件付き命令の処理結果を判定するための情報を提供する。
【0034】
さらなる態様から見ると、本発明は、プログラム命令に応答して、処理装置によって実行された処理操作を監視するためのトレースユニットを提供し、前記処理装置は、前記処理装置の条件を示す少なくとも1つの条件フラグを格納するための、条件ステータス格納手段を含み、前記処理装置は、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行し、前記トレースユニットは、前記プログラム命令に応答して、前記処理装置によって実行された前記処理操作を示す、トレースデータ要素を生成するためのトレース手段を含み、前記トレース手段は、前記処理装置が少なくとも1つの選択された命令によって処理することに応答して、前記少なくとも1つの条件フラグの少なくとも前記サブセットを示す、トレースされた条件値を含む、トレースデータ要素を生成し、前記トレースされた条件値が、前記少なくとも1つの条件付き命令の処理結果を判定するための情報を提供する。
【0035】
さらなる別の態様から見ると、本発明は、プログラム命令に応答して、処理装置によって実行された処理操作を示す、トレースデータを分析するための診断装置を提供し、前記処理装置は、前記処理装置の条件を示す少なくとも1つの条件フラグを格納するように構成された条件ステータス格納場所を備え、前記処理装置は、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行し、前記診断装置は、前記処理装置が少なくとも1つの選択された命令を処理することに応答して生成された、少なくとも1つのトレースデータ要素を含むトレースデータを受信するように構成されたトレース入力部であって、前記少なくとも1つのトレースデータ要素が前記少なくとも1つの条件フラグの少なくとも前記サブセットを示す、トレースされた条件値を含む、トレース入力部と、前記少なくとも1つのトレースデータ要素に含まれた、前記トレースされた条件値に基づいて、前記少なくとも1つの条件付き命令の処理結果を判定するように構成された、診断回路とを備える。
【0036】
診断装置は、対応するトレースユニットによって生成されたトレースデータを受信する。診断装置は、トレースデータを分析するための診断回路を有する。トレースデータ要素内に示された、トレースされた条件値を使用して、診断回路は、少なくとも1つの条件付き命令の処理結果を判定することができる。
【0037】
診断装置は、どの命令が、トレースされながら処理装置によって実行されたかの指示を受信することができる。この指示は、いくつかの形態を有し得る。どの命令が処理装置によって実行されたかを示すために、トレースストリーム内に情報を提供することが可能である。しかし、診断装置が、実行されたプログラム命令を格納しているメモリに対するアクセスを有するようにすること(例えば、診断装置に、そこからプログラムの実行が始まる、命令のアドレスを提供することによって)、または、診断装置に、処理装置によって実行された、対応するプログラムコピーを格納するための、対応するメモリを設けることのいずれかによって、より効果的な実装が提供され得る。診断装置は、どの命令が処理装置によって実行されたかというこの指示を使用して、いつ、トレースされた条件値を含むトレースデータ要素を予期するかを判定することができる。一例において、少なくとも1つの選択された命令の指示に応答して、診断装置は、対応するデータ要素がトレースストリーム内に含まれていることを推測することができ、このデータ要素を探し出すことによって、診断回路は、少なくとも1つの条件付き命令の処理結果を判定することができる。選択された命令は、少なくとも1つの条件更新命令、または少なくとも1つの条件付き命令のうちの少なくとも1つであってもよい。
【0038】
診断回路は、第1の状態および第2の状態を有する診断制御フラグを格納するように構成され得、前記トレース入力部は、前記処理装置によって処理された前記プログラム命令の指示を受信することができ、前記診断回路は、前記処理装置が前記少なくとも1つの条件フラグを更新したことの指示に応答して、前記診断制御フラグを、前記第1の状態にし、前記診断回路は、前記処理装置が条件付き命令を処理したことの指示に応答して、(a)前記制御フラグが前記第1の状態にあるかどうかを判定することができ、(b)前記診断制御フラグが、前記第1の状態にある場合、前記条件付き命令について、関連付けられたトレースデータ要素を、前記トレースデータ内から探し出し、前記関連付けられたトレースデータ要素内に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定し、前記診断制御フラグを、前記第2の状態にすることができ、かつ(c)前記診断制御フラグが前記第2の状態にある場合、以前の条件付き命令に関連付けられた、さらなるトレースデータ要素を、前記トレースデータ内から探し出し、前記さらなるトレースデータ要素内に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定することができる。
【0039】
このようにして、診断回路は、トレースストリームを生成するときに、トレースユニットによって使用される制御フラグに対応する診断制御フラグを維持することができる。診断回路が、処理回路によって実行されたプログラム命令の指示を受信すると、これは、少なくとも1つの条件フラグの更新による結果であるが(この指示は、例えば、トレースストリーム内の条件更新の明確な指示、または診断回路が、トレースストリームを処理中に条件更新命令を検出したときに発生する黙示的な指示であってもよい)、診断装置は、自身の診断制御フラグを、条件付き命令の指示が次に見つかった際には、診断回路は、トレースストリームが、トレースされた条件値を含む関連付けられたトレースデータ要素を含むことを予期するべきであることを示す状態にする。
【0040】
診断回路が、処理装置が条件付き命令を処理することの指示を受信すると、診断装置は、診断制御フラグが第1の状態にあるか否かを判定し、制御フラグが第1の状態にある場合、診断装置は、その条件付き命令について関連付けられたトレースデータ要素を探し出し、関連付けられたトレースデータ要素に含まれているトレースされた条件値に基づいて、条件付き命令の処理結果を判定する。診断装置は次いで、診断制御フラグを第2の状態にし、任意の後続の条件付き命令の結果は、関連付けられたトレースデータ要素に含まれている、トレースされた条件値から推測し得ることを示す。次いで、診断制御フラグが第2の状態にあるときに、条件付き命令の指示が検知された場合、診断装置は、以前の条件付き命令に関連付けられたトレースデータ要素に戻ることができ、先行のトレースデータ要素に含まれていた、トレースされた条件値に基づいて、最新の条件付き命令の処理結果を判定することができる。この技術によって、診断装置は、トレース回路によって実行される技術に対応する方法で、処理操作の結果を判定することが可能となる。
【0041】
処理装置の条件ステータス格納場所が、前記処理装置の個々の条件に対応する複数の条件フラグを格納する場合、診断回路は、前記複数の条件フラグに対応する、複数の診断制御フラグを格納するように構成され得、前記複数の診断制御フラグのそれぞれは、第1の状態および第2の状態を有し、前記トレース入力部は、前記処理装置によって処理された前記プログラム命令の指示を受信することができ、前記診断回路は、前記処理装置が前記複数の条件フラグのうちのいずれかを更新することの指示に応答して、少なくとも、更新された条件フラグに対応する制御フラグを前記第1の状態にすることができ、前記診断回路は、前記処理装置が、必要な条件フラグのサブセットに基づく条件命令を処理することの指示に応答して、(a)前記必要な条件フラグのサブセットに対応する、対応する診断制御フラグのうちのいずれかが前記第1の状態にあるかどうかを判定することができ、(b)ステップ(a)において、前記対応する診断制御フラグのうちのいずれかが前記第1の状態にある場合、前記条件付き命令について関連付けられたトレースデータ要素を、前記トレースデータ内から探し出すことができ、前記関連付けられたトレースデータ要素が、少なくとも、対応する診断制御フラグが前記第1の状態にある条件フラグを示す、第1のトレースされた条件値を含み、前記対応する診断制御フラグを前記第2の状態にすることができ、(c)ステップ(a)において、前記対応する診断制御フラグのうちのいずれかが前記第2の状態にある場合、少なくとも1つの以前の条件付き命令について、少なくとも1つのさらなるトレースデータ要素を、前記トレースデータ内に置くことができ、前記少なくとも1つのさらなるトレースデータ要素は、少なくとも、対応する診断制御フラグが前記第2の状態にある条件フラグを示す、少なくとも1つのさらなるトレースされた条件値を含み、かつ(d)前記第1のトレースされた条件値および前記少なくとも1つのさらなるトレースされた条件値のうちの少なくとも1つに基づいて、前記条件付き命令の前記処理結果を判定することができる。
【0042】
このアルゴリズムは、個々の条件フラグに応じて、個別の条件制御フラグが提供されるトレースユニットのアルゴリズムに対応する。診断回路は、トレースストリームが、条件フラグの関連サブセットの値を示す、所与の条件付き命令について、トレース要素を含むか否かを、または、先行の条件付き命令について、1つ以上のさらなるトレースデータ要素に戻って、必要な条件フラグの値を判定する必要があるかどうかを、診断制御フラグから判定することができる。現在の条件付き命令の処理結果は、現在の条件付き命令についてトレースデータ要素に含まれているトレースされた条件値、および先行の条件付き命令について少なくとも1つの先行のトレースデータ要素に含まれているトレースされた条件値のうちの1つまたは両方に基づいて判定することができる。
【0043】
別の態様から見ると、本発明は、プログラム命令に応答して、処理装置によって実行された処理操作を示すトレースデータ要素を分析するための診断装置を提供し、前記処理装置は、前記処理装置の条件を示す、少なくとも1つの条件フラグを格納するための、条件ステータス格納手段を含み、前記処理装置は、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行し、前記診断装置は、前記処理装置が少なくとも1つの選択された命令を処理することに応答して生成されたトレースデータ要素を受信するための入力手段であって、前記トレースデータ要素が、前記少なくとも1つの条件フラグの少なくとも前記サブセットを示す、トレースされた条件値を含む、入力手段と、前記少なくとも1つの選択された命令について、前記トレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記少なくとも1つの条件付き命令の処理結果を判定するための、診断手段とを備える。
【0044】
さらなる態様から見ると、本発明は、プログラム命令に応答して、処理装置を使用して処理操作を実行するステップと、前記処理装置の条件を示す、少なくとも1つの条件フラグを格納するステップと、前記処理操作を示すトレースデータ要素を生成するステップとを含む、データ処理の方法を提供し、処理操作を実行する前記ステップは、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行することを含み、トレースデータ要素を生成する前記ステップは、少なくとも1つの選択された命令に応答して、前記少なくとも1つの条件フラグの少なくとも前記サブセットを示す、トレースされた条件値を含むトレースデータ要素を生成することを含み、トレースされた条件値が、前記少なくとも1つの条件付き命令の処理結果を判定するための情報を提供する。
【0045】
さらなる別の態様から見ると、本発明は、プログラム命令に応答して、処理装置によって実行された処理操作を示すトレースデータ要素を分析するための方法を提供し、前記処理装置は、前記処理装置の条件を示す、少なくとも1つの条件フラグを格納するように構成された条件ステータス格納場所を備え、前記処理装置は、少なくとも1つの条件付き命令に応答して、前記少なくとも1つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行し、前記方法は、前記処理装置が少なくとも1つの選択された命令を処理することに応答して生成されたトレースデータ要素を受信するステップであって、前記トレースデータ要素が、前記少なくとも1つの条件フラグの少なくとも前記サブセットを示すトレースされた条件値を含む、ステップと、前記少なくとも1つの選択された命令について、前記トレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記少なくとも1つの条件付き命令の処理結果を判定するステップとを含む。
【0046】
コンピュータプログラムは、コンピュータを制御して、上記に説明されたトレースデータ要素を分析するための方法を実行するために提供され得る。コンピュータプログラムは、非一時的な記憶媒体上に提供されてもよい。
【0047】
さらなる態様から見ると、本発明は、プログラム命令に応答して、処理操作を実行するように構成された処理回路と、前記プログラム命令に応答して、前記処理回路によって実行された前記処理操作を示すトレースデータ要素を生成するように構成された、トレース回路とを備える、処理装置を提供し、前記処理回路は、少なくとも1つの条件付き命令に応答して、前記処理回路の条件に基づいて、条件付き操作を実行し、前記トレース回路は、第1の状態および第2の状態を有する制御フラグを格納するように構成され、前記トレース回路は、前記処理回路の前記条件の更新に応答して、前記制御フラグを前記第1の状態にし、前記トレース回路は、前記処理回路が、前記少なくとも1つの条件付き命令のうちの1つを処理することに応答して、(a)前記制御フラグが前記第1の状態にあるかどうかを判定し、かつ(b)前記制御フラグが前記第1の状態にある場合、前記少なくとも1つの条件付き命令の処理結果についての情報を提供するための値を示す結果を含むトレースデータ要素を生成し、前記制御フラグを前記第2の状態にする。
【0048】
所与の条件付き命令について、条件フラグの値をトレースするか否かを判定するための、上記に説明された制御アルゴリズムは、拡張されて、条件付き命令の処理結果を判定するための情報を提供する値を示す、任意の結果をトレースするために適用され得る。例えば、値を示す結果には、上記に説明されたように、トレースされた条件値が含まれ得るが、条件付き命令の成立/不成立の結果等のような値を示す、他の種類の結果もまた含まれてもよい。このアルゴリズムを使用することによって、値を示す結果は、処理回路の条件の更新に続いて、第1の条件付き命令について含まれるが、以前の命令について生成されたトレースデータを使用して処理結果が判定され得る、後続の命令については含まれないため、トレースデータの量は低減される。
【0049】
別の態様から見ると、本発明は、プログラム命令に応答して、処理操作を実行するための処理手段と、前記プログラム命令に応答して、前記処理手段によって実行された前記処理操作を示すトレースデータ要素を生成するための、トレース手段とを備える、処理装置を提供し、前記処理手段は、少なくとも1つの条件付き命令に応答して、前記処理手段の条件に基づいて、条件付き操作を実行し、前記トレース手段は、第1の状態および第2の状態を有する制御フラグを格納するように構成され、前記トレース手段は、前記処理手段の前記条件の更新に応答して、前記制御フラグを前記第1の状態にし、前記トレース手段は、前記処理手段が、前記少なくとも1つの条件付き命令のうちの1つを処理することに応答して、(a)前記制御フラグが前記第1の状態にあるかどうかを判定し、かつ(b)前記制御フラグが前記第1の状態にある場合、前記少なくとも1つの条件付き命令の処理結果についての情報を提供するための値を示す結果を含む、トレースデータ要素を生成し、前記制御フラグを前記第2の状態にする。
【0050】
別の態様から見ると、本発明は、プログラム命令に応答して、処理装置を使用して処理操作を実行するステップであって、前記処理操作を実行することは、少なくとも1つの条件付き命令に応答して、前記処理回路の条件に基づいて、条件付き操作を実行することを含む、ステップと、前記処理操作を示すトレースデータ要素を生成するステップであって、前記トレースデータ要素は、第1の状態および第2の状態を有する制御フラグに基づいて生成される、ステップとを含む、データ処理の方法を提供し、トレースデータ要素を生成する前記ステップは、前記処理回路の条件の更新に応答して、前記制御フラグを前記第1の状態にすることと、前記少なくとも1つの条件付き命令のうちの1つを処理することに応答して、(a)前記制御フラグが前記第1の状態にあるかどうかを判定すること、および(b)前記制御フラグが前記第1の状態にある場合、前記少なくとも1つの条件付き命令の処理結果についての情報を提供するための値を示す結果を含むトレースデータ要素を生成し、前記制御フラグを前記第2の状態にすることと、を含む。
【0051】
本技術の、さらなる態様、実施形態、および特徴は、以下の説明および添付の図面から明らかとなるであろう。
【図面の簡単な説明】
【0052】
図1】処理装置、トレース回路および診断装置を概略的に示す図である。
図2】英国ケンブリッジ所在のARM Limited社によって設計されたプロセッサにおいて使用される、条件フラグおよび条件の状態の例を示す図である。
図3】条件フラグの特定の値の組を識別するための、識別子の例を示す図である。
図4】条件更新命令の実行時に、条件フラグの値をトレースする方法を示す図である。
図5図4の方法で生成されるトレースデータを分析する、対応する方法を示す図である。
図6図4の方法で生成されるトレースストリームの例、および図5の方法による、トレースストリームの分析の例を示す図である。
図7】複数の条件更新命令が、介在する条件付き命令なしに連続して発生する、プログラム命令のシーケンスの例を示す図である。
図8】条件付き命令の実行時に、条件フラグの値をトレースする方法を示す図である。
図9図8の方法で作られたトレースデータを分析する対応する方法を示す図である。
図10図8の方法で生成されるトレースストリームの例、および図9の方法による、トレースストリームの分析の例を示す図である。
図11】条件付き命令の実行時に、条件フラグの少なくとも必要なサブセットの値をトレースする方法を示す図である。
図12図11の方法で生成されるトレースデータを分析する、対応する方法を示す図である。
図13図11の方法を使用してトレースストリームを生成する例、および図12の方法を使用してトレースストリームを分析する例を示す図である。
【発明を実施するための形態】
【0053】
図1は、プログラム命令に応答して、処理操作を実行するための処理回路4を備える処理装置2を示している。処理装置2は、処理回路4によって実行されるプログラム命令、および/または処理回路4によって処理されるデータを格納するための、1つ以上のキャッシュユニットまたはメモリユニットを備えるメモリシステム8を備える。
【0054】
処理装置2は、処理回路4によって実行される処理操作を監視するためのトレース回路6を含む。トレース回路6は、処理回路4によって実行される処理操作の特徴を示すトレースデータ要素を生成する。トレース回路6は、生成されたトレースデータ要素を、出力ポート10を介して出力する。トレース回路6は、処理回路4と同じ集積回路上に実装される必要はなく、いくつかの実施形態では、別個のトレースユニットとして設けられ得る。
【0055】
診断装置12は、トレース回路6によって生成されたトレースデータ要素を分析するために設けられる。診断装置12は、トレースデータ要素を、入力ポート14を介して受信する。診断装置12はまた、処理回路4によってどのプログラム命令が実行されたかの指示も受信する。この指示は、どの命令が実行されたかをトレースストリームで示すトレース回路6によって提供されてもよい。あるいは、診断装置12は、処理回路4によって実行された第1のプログラム命令の場所を示すアドレスを有するメモリシステム8を備えてもよい。診断装置12はまた、処理回路4によって実行されたプログラムの対応するコピーを格納するためのメモリ(図1には図示せず)を備えてもよい。診断装置12は、処理回路4によって実行された命令を段階的に分析し、トレースデータ要素のストリームに含まれている情報に基づいて、命令の処理結果を判定する。
【0056】
トレースデータ要素は、トレース回路6から診断装置12に直接出力される必要はないが、例えば、メモリまたは他の格納デバイスに格納されて、望ましいときに診断装置12によって格納デバイスから取り出されてもよい。診断装置12は、例えば、トレース分析法を実行するようにプログラムされた汎用コンピュータであってもよい。
【0057】
処理装置2は、処理装置2の個々の条件を示す、1つ以上の条件フラグ22を格納するための格納場所、例えば、条件ステータスレジスタ(CPSR)20を有する。英国ケンブリッジ所在のARM Limited社によって設計されたプロセッサにおいて、条件フラグ22には、処理結果が負であるか、ゼロであるか、キャリーを必要とするか、またはオーバーフローをもたらしたかを示す、NZCV(負、ゼロ、キャリー、オーバーフロー)フラグが含まれ得る。図2は、条件ステータスレジスタ20における条件フラグ22の、異なる組み合わせによって示され得る種々の条件の状態を示している。
【0058】
条件フラグ22を格納するための格納場所は、条件ステータスレジスタ20である必要はなく、メモリシステム8内の格納場所、または任意の他の種類の格納場所であってもよいことを理解されたい。
【0059】
処理回路4は、少なくとも1つの条件更新命令に応答して、条件ステータスレジスタ20における1つ以上の条件フラグ22を更新することができる。例えば、比較命令は、2つのデータ値を比較し、比較に基づいて、例えば、値が等しかったか、または一方の値が他方の値よりも小さかったもしくは大きかったかを示すために、フラグを更新することができる。それによって条件フラグ22が更新されるあらゆる命令が、条件更新命令と見なされ得る。例えば、ARM社の命令の組のアーキテクチャでは、TST、TEQ、CMP、およびCMN命令が、条件更新命令の例である。
【0060】
処理回路4はまた、所与の条件に関連付けられた、少なくとも1つの条件付き命令にも応答することができる。条件付き命令が実行されると、条件フラグ22の値は所与の条件と比較される。条件フラグ22が条件を満たす場合、関連付けられた処理操作が実行される。条件が満たされない場合、関連付けられた処理操作は実行されない(あるいは、なんらかの種類の条件付き命令については、条件が満たされない場合に、関連付けられた処理操作に対する異なる処理操作が実行されてもよい)。
【0061】
例えば、条件付き追加命令ADDEQは、EQ条件に関連付けられる。図2は、EQ条件は、Zフラグがセットされると満たされることを示している。条件付き追加命令ADDEQが実行されるとき、Zフラグがセットされる場合、関連付けられた追加操作が実行され、Zフラグがセットされない場合、追加操作は実行されない。
【0062】
条件付き命令の処理結果は、命令ストリーム単独からは判定され得ず、これは、命令ストリームは、条件が満たされたかどうかを判定するための情報を含まないためである。したがって、トレース回路6は、少なくとも1つの選択された命令に応答して、条件フラグ22の値を示す、トレースされた条件値を含むトレースデータ要素を生成する。診断装置12は、トレースデータ要素に含まれているトレースされた条件値を使用して、条件が満たされたかどうかを判定することができ、したがって、対応する条件付き命令の処理結果を判定することができる。
【0063】
トレース回路6は、条件フラグ22の値がトレースされたか否かを監視するために、1つ以上の制御フラグ26を維持する。トレース回路6は、1つ以上の制御フラグ26の現在の値に基づいて、所与の命令の実行時に、条件フラグの値をトレースするか否かを選択することができる。一実施形態では、トレース回路6は、単一の制御フラグ26を含み(後段で説明される、図8〜10の実施形態を参照)、別の実施形態では、トレース回路6は、それぞれが条件フラグ22のうちの1つに対応する、複数の制御フラグ26を含む(図11〜13に関して後段に説明される実施形態を参照)。
【0064】
診断回路16は、対応する制御フラグ28の組を維持し、これは、トレースされた条件値を含むトレースデータ要素が、所与のプログラム命令について、トレースストリームに提供されることが期待されるか否かを判定するために、トレース回路6の制御フラグ26に対応する形で使用される。
【0065】
トレースデータ要素内のトレースされた条件値は、異なる方法で示され得る。一例において、トレース回路6は、トレースデータ要素に、条件フラグ22の少なくともサブセットの実際の値を含み得る。条件付き命令が、条件フラグ22のサブセットのみに基づく場合、トレース回路6は、単に条件フラグの関連するサブセットの値を含み得る、または条件フラグ22のうちの全てを含み得る。
【0066】
あるいは、トレース回路6は、トレースデータ要素に、条件フラグ22の値の特定の組み合わせを示す識別コードを含んでもよい。これにより、条件値の何らかの組み合わせが他のものに比べて、より多く見られる場合に、効率的な符号化がもたらされ得る。例えば、図3は、3つの条件の状態ついて、2ビットの識別子が使用される例を示している(例えば、Cフラグがセットされる状態、Nフラグがセットされる状態、ならびにZおよびCフラグがセットされる状態)。次いで、4ビットの識別子が、さらなる3つの異なる条件の状態について使用される。条件フラグの値の、他の組み合わせのうちの1つが必要とされる場合、現在の条件フラグの値の別個の指示が、図3に示されているスキームに対する異なる符号化を使用して、トレースデータ要素に提供され得る。
【0067】
識別子の符号化、およびどの条件の状態が特定の識別子によって表されるかの選択は、例示に過ぎないことを理解されたい。それでもなお、この例は、トレースデータの総量が、最も頻繁に出現する条件の状態に対して最も少ないビットを有する識別子を割り当てることによって、低減されることを示している。例えば、処理装置2が、70%の確率で、2ビットの識別子を有する3つの条件の状態のうちの1つにある、29%の確率で、4ビットの識別子を有する3つの条件の状態のうちの1つにある、および1%の確率で、他の状態のうちの1つにある(これらの他の状態は、例えば8ビットの識別子によって表される)場合、現在の条件の状態を識別するために使用される平均ビット数は、2*0.7+4*0.29+8*0.01=2.64(アスタリスク*は、乗号を示す)となる。したがって、現在の条件の状態を示すためにトレースストリームに含まれる平均ビット数は、トレースデータ要素が、条件フラグの現在の値を単に含めた場合に使用される、4ビット未満となる。
【0068】
トレース回路6は、処理回路4によって実行されているプログラムの異なる命令によって、条件フラグ22の値をトレースすることができる。トレース回路6は、値を示す条件フラグを含むトレースデータ要素の生成をトリガするために、1つ以上の選択された命令を選択することができる。選択された命令は、条件付き命令であってもよいが、別の命令であってもよい。
【0069】
例えば、図4〜6は、トレースされた条件付き値を含むトレースデータ要素が、条件更新命令の実行時に生成される例を示している。図4は、処理回路4の操作に応答してトレースデータを生成する方法を示している。ステップ40において、処理回路4は、実行されているプログラムの次の命令を処理し、トレース回路6が、処理回路4によるその命令の処理を監視する。ステップ42において、トレース回路6は、処理回路4によって実行されている命令が条件更新命令であるか否かを判定する。命令が条件更新命令である場合、次いでステップ44においてトレース回路6は、条件更新命令の実行によってもたらされた、条件フラグ22の更新された値を示すトレースされた条件値を含むトレースデータ要素を生成して出力する。一方、命令が条件更新命令ではない場合、ステップ44は省略される。ステップ46において、処理回路4によって処理される、別の命令が存在するか否かが判定される。別の命令が存在する場合、方法はステップ40に戻り、そうではなく命令が残っていない場合、方法はステップ48で終了する。
【0070】
図5は、図4の方法を使用して、トレース回路6によって作られたトレースストリームを分析するための、対応する診断方法を示している。診断装置12は、どの命令が処理回路4によって実行されたかの指示を受信する。ステップ50において、診断回路16は、処理回路4によって実行されているとして示される次の命令を分析する。ステップ52において、診断回路16は、次の命令が条件付き命令であるか否かを判定する。命令が条件付き命令である場合、次いでステップ54において診断回路16は、プログラム命令の指示において示された直近の条件更新命令に関連付けられたトレースデータ要素を、トレースデータストリーム内から探し出す。ステップ56において、診断回路16は、条件付き命令の処理結果を、探し出されたトレースデータ要素に含まれた、トレースされた条件値に基づいて判定する。例えば、診断回路16は、トレースされた条件値を使用して、条件付き命令に関連付けられた条件が満たされたか否かを判定することができ、したがって、関連付けられた操作が実行されたか否かを判定することができる。ステップ52において次の命令が条件付き命令ではないと判定された場合、ステップ54および56は省略される。ステップ58において、分析される別の命令が存在するか否かが判定される。別の命令が存在する場合、方法はステップ50に戻り、命令がそれ以上ない場合、方法はステップ60で終了する。
【0071】
図6は、図4の方法による、トレースストリームの生成の例、および図5の方法による、トレースストリームの分析の例を示している。図6は、処理回路4によって実行されたプログラム命令の組を示している。分岐命令が実行されると、トレースデータ要素が生成され、分岐が行われたか否かを示す。条件更新命令(例えばCMP)を検出すると、図4のステップ44に従って、トレースデータ要素は、トレースされた条件値のCPSRを含んで生成される。トレースストリームを分析するとき、診断装置はトレースされた条件値を使用して、任意の後続の条件付き命令(例えば、図6に示されている、命令MOVNE、MOVEQ、およびADDHI)の処理結果を判定することができる。
【0072】
いくつかの命令は、条件更新命令および条件付き命令の両方であり得る。例えば、図6内の、記憶場所2100におけるプログラム命令は、条件フラグ22の現在の値が、等しくない(NE)条件(図2を参照)を満たすか否かを判定するように、処理回路4を制御するための、条件付き比較命令CCMPNEである。等しくない条件が満たされる場合、処理回路4は、比較操作を行なって、比較結果に基づいて条件フラグ22を更新する。CCMPNE命令が条件付き命令であるため、診断回路16は、CCMPNE命令の処理結果を、条件フラグの直近の更新におけるトレースストリームに含まれている、トレースされた条件値(すなわち、記憶場所2000における比較命令CMPについて含まれたCPSR値)に基づいて判定する。NE条件が、CCMPNE命令の実行時に満たされる場合、CCMPNE命令は条件更新命令でもあり、そのためトレース回路6は、条件フラグ22の更新された値を示す、トレースされた条件値を含んで、命令CCMPNEについてトレースデータ要素を生成する。このトレースデータ要素は次いで、任意の後続の条件付き命令の結果を判定するために使用することができる。
【0073】
あるいは、いくつかの例において、CCMPNE命令は、NE条件が満たされるかどうかに関わらず条件更新命令と見なされ得るため、条件フラグの値を示すトレースデータ要素は、常にCCMPNE命令について生成される。これは、NE条件が、トレース時にまだ計算されていない場合に有用となり得る。
【0074】
図4〜6に示されている技術は、全てが同じ条件値の組に基づく一連の条件付き命令が、単一の条件更新命令に続く場合に有用であり得、これは、この場合、いくつかの後続の命令の結果を判定するために、少量のトレースデータで十分であるからである。
【0075】
しかしながら、何らかの状況において、条件フラグの更新された値を使用する、多くの条件更新命令が、条件付き命令の介在なしに連続して発生する場合がある。例えば、図7において、プログラム命令のシーケンスは、条件フラグの更新によってもたらされる、多くの比較CMPおよびビットテストTST命令を含むが、これらの命令のうちの最初の4つは、更新された値が条件付き命令によって全く使用されることなく、フラグを更新する。そのような状況において、トレースされた条件値を含むトレースデータ要素を、条件付き命令の実行時に生成すると(例えば、図8〜10および11〜13を参照して後段で説明されるように)、より効果的となり得る。図7に示されている例において、その後に、トレースデータ要素は、それぞれの条件の更新時にではなく、条件付き命令MOVNEが実行されるときに生成され得る。
【0076】
これらの技術の混合形態が可能であり得、そのためいくつかのトレースユニットは、条件更新命令の実行時および条件付き命令の実行時の両方でトレースされた条件値を生成し得ることを理解されたい。
【0077】
図8は、条件フラグ22が条件付き命令の実行時にトレースされる、トレース方法を示している。この実施形態において、トレース回路6は、条件フラグ22の値をトレースするか否かを判定するために、制御フラグ26を維持する。制御フラグ26は、「クリア」状態および「セット」状態を有する(例えば、「クリア」状態は、制御フラグ26が0の値を有する状態であり、「セット」状態は、制御フラグ26が1の値を有する状態、またはその逆である)。
【0078】
図8のステップ70において、トレース回路6は、次の命令を実行する処理回路4を監視する。ステップ72において、トレース回路6は、その命令が条件付き命令か否かを判定する。命令が条件付き命令である場合、次いでステップ74において、トレース回路6は、制御フラグがクリアか否かを判定する。制御フラグがクリアである場合、次いでステップ76において、トレース回路6は、条件ステータスレジスタ20の現在の状態を示す、トレースされた条件値を含むトレースデータ要素を生成して出力する。次いで、ステップ78において、制御フラグがセットされる。一方、ステップ74において制御フラグがセットされていた場合、ステップ76および78は省略される。ステップ72において、命令が条件付き命令ではないと判定された場合、ステップ74から78は省略される。
【0079】
次いで、ステップ80において、次の命令が条件更新命令か否かが判定される。いくつかの命令は、条件付き命令および条件更新命令の両方であり得ることに留意されたい。命令が条件更新命令である場合、次いでステップ82において、制御フラグがクリアされる。そうでなければ、ステップ82は省略される。次いでステップ84において、処理回路4によって処理される、別の命令が存在するか否かが判定される。別の命令が存在する場合、方法はステップ70に戻る。それ以上に命令がない場合、方法はステップ86で終了する。
【0080】
図8の方法を実施するための、いくつかの擬似コードを以下に示す(「標識」という語は制御フラグ26を示す)。
命令時:
命令が条件付きである場合:
標識がクリアである場合:
CPSRをトレース
標識を設定
命令がCPSRを更新する場合:
標識をクリア
【0081】
図8の方法は、トレース回路6が、条件更新命令に続いて発生する第1の条件付き命令について、トレースされた条件値を含むトレースデータ要素を生成するため、トレースデータの量を低減するのに役立つ。後続の条件付き命令については、条件値をトレースする必要がなく、これは、以前の条件付き命令が、条件フラグ22の状態を示す情報を含む、関連付けられたトレースデータ要素をすでに有しているからである。
【0082】
図9は、図8の方法において作られたトレースストリームを分析するための、対応する診断方法を示している。診断装置12は、トレース回路6の制御フラグ26の状態に対応する、「クリア」および「セット」状態を有する制御フラグ28を有する。ステップ100において、診断回路16は、処理回路4によって処理されたプログラム命令の指示に含まれる、次の命令を分析する。ステップ102において、条件付き命令の指示があるか否かが判定される。命令が条件付き命令である場合、次いでステップ104において、診断制御フラグ28がクリアであるか否かが判定される。診断制御フラグがクリアである場合、次いでステップ106において、診断回路16は、その条件付き命令について関連付けられたトレースデータ要素を探し出し、ステップ108において、条件付き命令の処理結果を、関連付けられたトレースデータ要素に含まれている、トレースされた条件値に基づいて判定する。ステップ110において、診断制御フラグは、「セット」状態にされる。
【0083】
一方、ステップ104において、診断制御フラグがクリアではなかった場合、次いで方法はステップ112に進み、ここでは、さらなるトレースデータ要素が診断回路16によって探し出される。さらなるトレースデータ要素は、以前に分析された条件付き命令に関連付けられたデータ要素である。ステップ114において、診断回路16は、現在分析されている条件付き命令の処理結果を、以前に分析された条件付き命令について生成された、さらなるトレースデータ要素に含まれている、トレースされた条件値に基づいて判定する。ステップ102において、命令が条件付き命令ではないと判定される場合、ステップ104から114は省略される。
【0084】
次いで、ステップ116において、分析されている命令が条件更新命令であるか否かが判定される。命令は、条件付き命令および条件更新命令の両方であり得る。命令が条件更新命令である場合、次いでステップ118において、診断制御フラグ28はクリアされ、命令が条件更新命令ではない場合は、ステップ118は省略される。ステップ120において、分析される別の命令が存在するか否かが判定される。別の命令が存在する場合、方法はステップ100に戻り、そうでなければ、方法はステップ122で終了する。
【0085】
このようにして、診断回路は、トレース回路6の制御フラグ26に対応する診断制御フラグ28を使用して、関連付けられたトレースデータ要素が、所与の条件付き命令について、トレースストリームに含まれることが期待されるか否かを判定する。そのような関連付けられたトレースデータ要素が存在する場合、条件付き命令の処理結果は、関連付けられたトレースデータ要素に含まれている、トレースされた条件値に基づいて判定され得る。関連付けられたトレースデータ要素が存在しない場合、トレースされた条件値を含むこととなる、以前の条件付き命令に関連付けられたトレースデータ要素が、現在の条件付き命令の処理結果が判定されることを可能にする。条件更新命令を検出すると、診断制御フラグ28はクリアされて、次の条件付き命令が、関連付けられたトレースデータ要素を有することが期待されることを示す。
【0086】
図10は、図6に示されている一連のプログラム命令に対する、図8および9の方法の適用例を示している。同様に、記憶場所1600における分岐命令の、分岐が行われた結果がトレースされる。記憶場所2000に格納された条件更新命令CMPの実行に応答して、トレース回路6は、図8のステップ82に従って、自身の制御フラグ26をクリアする。同様の方法で、診断回路16が命令を分析するとき、図9のステップ118に従って、自身の診断制御フラグ28をクリアすることによって、条件更新命令CMPの指示に応答する。
【0087】
トレース回路6が、記憶場所2004に格納された条件付き命令MOVNEを検出すると、トレース回路6は、制御フラグ26が現在クリア状態にあることを判定し、したがって、図8のステップ76において、トレースデータ要素は、トレースされた条件値のCPSRを含んで生成される。次いで、図8のステップ78に従って、制御フラグがセットされる。これに対応して、命令を分析するとき、診断回路16は、記憶場所2004における条件付き命令MOVNEの指示を検知して、トレースストリーム内から、関連付けられたトレースデータ要素を探し出すことによってクリアされる診断制御フラグ28に応答し、MOVNE命令の処理結果を、トレースデータ要素に含まれているトレースされた条件値に基づいて判定する。次に診断回路16は、図9のステップ110において、診断制御フラグ28をセットする。
【0088】
次いで、記憶場所2008および200Cにおける後続の条件付き命令について、トレース回路6は、制御フラグ26がセットの状態にあることを検知し、したがって対応するトレースデータ要素を生成しない。これに対応して、診断回路16は、診断制御フラグ28がセットの状態にあることを検知し、したがって、図9の後続のステップ112および114は、記憶場所2004に格納された、以前の条件付き命令に関連付けられたトレースデータ要素を探し出す。診断回路16は、記憶場所2008および200Cにおける命令の処理結果を、記憶場所2004における命令ついての以前のトレースデータ要素に基づいて判定する。
【0089】
この方法で、トレースストリームは生成され、ここで、条件フラグ22の更新が、トレースされた条件値を含むトレースデータ要素の生成をトリガすることに続いて、第1の条件付き命令が実行される。
【0090】
図11〜13は、トレース回路6が、どの条件フラグ22がすでにトレースされたかを監視し、かつ条件付き命令についてトレースデータ要素を生成するときに、すでにトレースされていない、その条件付き命令によって必要とされる、追加の条件フラグをトレースする実施形態を示している。この方法は、それぞれが条件フラグ22の各々に対応する、複数の制御フラグ26を利用する。それぞれの制御フラグ26は、「クリア」状態および「セット」状態を有する。診断回路16は、やはり「クリア」状態および「セット」状態を有する、診断制御フラグ28の対応する群を有する。
【0091】
図11は、処理回路4の操作をトレースする方法を示している。ステップ140において、処理回路4は、次の命令を実行し、この命令の実行は、トレース回路6によって監視される。ステップ142において、命令が条件付き命令であるか否かが判定される。命令が条件付き命令である場合、次いでステップ144において、トレース回路6は、条件付き命令の結果を判定するために必要な、条件フラグ22のサブセットを判定する。例えば、図2に示されているそれぞれの条件について、表に示されている対応するフラグは、必要な条件フラグのサブセットである。例えば、HI条件は、CおよびZフラグを必要とする。
【0092】
ステップ146において、トレース回路6は、必要な条件フラグ22のサブセットに対応する制御フラグ26のうちのいずれかがクリアされたかどうかを判定する。必要な条件フラグのサブセットに対応する、どの制御フラグもクリアでない場合、方法はステップ152に進む。必要な条件フラグのサブセットに対応する制御フラグのうちのいずれか1つまたは複数がクリアである場合、次いでステップ148において、トレース回路6は、対応する制御フラグ26がクリアである、必要なサブセットの少なくとも条件フラグ22を示す、トレースされた条件値を含むトレースデータ要素を生成して出力する。任意選択で、トレース条件値は、他の条件フラグも示してもよく、または条件フラグ22の全てを示してもよい。次いでステップ150において、トレース回路6は、トレースされた条件値において示された条件フラグに対応する制御フラグの組をセットする。ステップ142において、命令が、条件付き命令ではないと判定された場合、ステップ144から150は省略される。
【0093】
ステップ152において、トレース回路6は、処理回路4によって実行されている命令が、条件更新命令であるか否かを判定する。命令が条件更新命令である場合、次いでステップ154において、トレース回路6は、少なくとも、条件更新命令の結果として更新された条件フラグ22に対応する制御フラグ26をクリアする。任意選択で、ステップ154において、トレース回路6は、他の制御フラグ26もクリアしてもよく、または、制御フラグ26の全てをクリアしてもよい。命令が条件更新命令ではない場合、ステップ154は省略される。ステップ156において、処理回路4によって処理される別の命令が存在するか否かが判定される。そのような命令が存在する場合、方法はステップ140に戻る。そうでなければ、方法はステップ158で終了する。
【0094】
図11の方法を実施するための擬似コードを、以下に示す(「標識」という語は制御フラグ26を示す)。
命令時:
命令が条件付きである場合:
この命令によって必要とされるフラグについての任意の標識がクリアである場合:
少なくとも必要とされるフラグをトレース
必要なフラグについての標識を設定
命令がCPSRを更新する場合:
少なくとも、更新されたフラグについての標識をクリア
【0095】
あるいは、以下の擬似コードを使用して、図11の方法を実施することができる。
命令時:
命令が条件付きである場合:
この命令によって必要とされるフラグについての任意の標識がクリアである場合:
少なくとも必要とされるフラグをトレース
トレースされたフラグについての標識を設定
命令がCPSRを更新する場合:
少なくとも、更新されたフラグについての標識をクリア
【0096】
図12は、図11の方法によって生成されるトレースストリームを分析する方法を示している。ステップ160において、診断回路16は、処理回路4によって実行された命令の指示に示されている、次の命令を分析する。ステップ162において、次の命令が条件付き命令であると判定される場合、次いでステップ164において、診断回路16は、その命令について必要な条件フラグのサブセットを判定し、必要な条件フラグのサブセットに対応する診断制御フラグ28がクリアであるか、またはセットであるかを判定する。ステップ166において、ステップ164が、必要な条件フラグのサブセットに対応する診断制御フラグ28のうちのいずれかがクリアであると判定した場合、次に診断回路16は、第1のトレースされた条件値を含む、関連付けられたトレースデータ要素をトレースストリーム内から探し出す。第1のトレースされた条件値は、少なくとも、クリアの診断制御フラグ28に対応する、必要な条件フラグのサブセットの値を示す。次に診断回路16は、クリアであり、かつ所望のサブセットの条件フラグ22に対応する診断制御フラグ28をセットする。
【0097】
ステップ168において、ステップ164が、必要な条件フラグのサブセットに対応する、任意の診断制御フラグ28がセットされたと判定した場合、次いで診断回路16は、少なくとも1つの以前の条件付き命令について、少なくとも1つのさらなるトレースデータ要素を探し出す。さらなるトレースデータ要素には、セットされた診断制御フラグに対応する条件フラグの値を示す、少なくとも1つのさらなるトレースされた条件値が含まれる。次いで、ステップ170において、診断回路16は、(ステップ166および168において、どのトレースされた条件値がアクセスされたかに依存して)第1のトレースされた条件値および/または少なくとも1つのさらなるトレースされた条件値を分析し、次いで、それらのトレースされた条件値に基づいて、現在の条件付き命令の処理結果を判定する。ステップ162において、命令が条件付き命令ではないと判定された場合、ステップ164から170は省略される。
【0098】
ステップ172において、診断回路16は、次に示されている命令が条件更新命令であるか否かを判定する。次の命令が条件更新命令である場合、次いでステップ174において、診断回路16は、少なくとも、条件更新命令の実行の結果として更新された条件フラグ22に対応する診断制御フラグ28をクリアする(診断回路16は、条件更新命令の推測される処理結果に基づいて、どの条件フラグ22が更新されたかを判定することができる)。任意選択で、ステップ174において、診断回路16は、他の診断制御フラグ28もクリアしてもよく、全ての制御フラグ28をクリアしてもよい。ステップ172において、次の命令が条件更新命令ではない場合、ステップ174は省略される。ステップ176において、分析される別の命令が存在するか否かが判定される。別の命令が存在する場合、方法はステップ160に戻り、そうでなければ、方法はステップ178で終了する。
【0099】
図13は、これまでに示されてきた一連のプログラム命令に対する、図11および図12の方法の適用例を示している。この例において、全ての制御フラグ26および診断制御フラグ28は、条件更新命令に応答してクリアされることを前提としているが、上述のように、トレース回路6および診断回路16が、更新された条件フラグ22に対応する制御フラグ26、28のみをクリアする実施形態を提供することもまた可能である。
【0100】
図13において、分岐が行われた結果は、分岐命令について生成されたトレースデータ要素内に示されている。分岐が行われた結果は、どの命令が処理回路4によって実行されたかを判定するために、診断回路16によって使用され得る。
【0101】
記憶場所2000における条件更新命令CMPを検出すると、トレース回路6は、全ての制御フラグ26をクリアする。同様に、診断回路16が条件更新命令CMPを検出すると、全てのその診断制御フラグ28をクリアする。
【0102】
記憶場所2004における条件付き命令MOVNEが実行されると、トレース回路6は、「等しくない」条件NEについて、必要な条件フラグのサブセットはZフラグである(図2を参照)と判定する。図11のステップ146において、トレース回路6は、Z条件フラグに対応する制御フラグ26はクリアであると判定し、したがってステップ148において、少なくともZフラグの値を示す、トレースされた条件値を含むトレースデータ要素を生成する。Zフラグに対応する制御フラグは、次いで図11のステップ150においてセットされる。
【0103】
これに対応して、トレースストリームを分析するとき、診断回路16は、記憶場所2004において条件付き命令MOVNEを検出し、必要な条件フラグのサブセットは、Zフラグであると判定する。この時点で、Z条件フラグに対応する診断制御フラグ28はクリアであるため、診断回路16は、MOVNE命令に対応する、関連付けられたトレースデータ要素が存在すると判定する。診断回路16は、Zフラグの値を示す、トレースされた条件値を含む、関連付けられたトレースデータ要素を探し出す。診断回路16は、記憶場所2004に格納されたMOVNE命令について、トレースされた条件値に基づいて、処理結果を判定する。次に診断回路16は、Zフラグに対応する診断制御フラグ28をセットする。
【0104】
トレース回路6が、記憶場所2008に格納された条件付き命令MOVEQを検出すると、トレース回路6は、「等しい」条件EQが満たされるかどうかを判定するための、必要なフラグのサブセットが、やはりZフラグである(図2を参照)ことを判定する。図11のステップ146において、トレース回路6は、Zフラグに対応する制御フラグがセットされていることを判定し、したがって図11のステップ148および150を省略し、トレースされた条件値を含むトレースデータ要素を生成しない。トレースストリームを分析するとき、診断回路16は、Zフラグに対応する診断制御フラグ28がセットされていることを同様に検知することができる。したがって、診断回路16は、図12のステップ168において、記憶場所2004に格納された、以前の条件付き命令MOVNEについて、トレースデータ要素を探し出し、MOVEQ命令の処理結果を、MOVNE命令についてトレースデータ要素に含まれた、トレースされた条件値に基づいて判定する。
【0105】
記憶場所200Cには、HI条件に基づく、条件付き追加命令ADDHIがある。この命令が実行されると、トレース回路6は、必要な条件フラグのサブセットは、CフラグおよびZフラグである(図2を参照)ことを判定する。トレース回路6は、CおよびZフラグに対応する、対応する制御フラグ26の状態を判定し、Z条件フラグに対応する制御フラグ26はセットされているが、C条件フラグに対応する制御フラグ26は、依然としてクリアであると判定する。したがって、図11のステップ148において、トレース回路6は、少なくともCフラグを示す値を含むトレースデータ要素を生成する。次いで、C条件フラグに対応する制御フラグ26がセットされる。
【0106】
トレースストリームを分析するとき、診断装置12は、記憶場所200CにおけるADDHI命令について、必要な条件フラグのサブセットは、CおよびZフラグであると検知する。Cフラグに対応する診断制御フラグ28がクリアであるため、ステップ166において診断回路16は、Cフラグの値を示す、ADDHI命令に関連付けられたトレースデータ要素を、トレースストリーム内から探し出す。図12のステップ168において、診断回路16はまた、さらなるトレースデータ要素も探し出すこととなり、これは、ステップ164において、Z条件フラグについての診断制御フラグ28がセットされていたからである。この例では、さらなるトレースデータ要素は、記憶場所2004におけるMOVNE命令について生成されたトレースデータ要素である。図12のステップ170において、診断回路16は、ADDHI命令の処理結果を、記憶場所2004におけるMOVNE命令についてトレースデータ要素に含まれている、トレースされた条件値と、記憶場所200CにおけるADDHI命令についてトレースデータ要素に含まれている、トレース条件値との両方に基づいて判定する。
【0107】
同様の方法で、図13に示されている後続の命令について、トレース回路6は、トレースデータを生成し、診断回路16は、そのトレースデータを分析する。
【0108】
上記の実施形態は、条件フラグ22が更新されると、制御フラグ26および診断制御フラグ28がクリアされることが説明されてきたが、他の事象もまた、制御フラグ26または診断制御フラグ28がクリアされることをトリガし得る。例えば、例外事象によって、制御フラグがクリアされてもよい。例外事象によってトリガされた例外ハンドラが、トレース回路6によってトレースされる場合、例外事象の発生時に制御フラグ26をクリアすることは、条件フラグ22が、例外ハンドラの開始時にトレースされることを確実にする。あるいは、例外ハンドラがトレースされていない場合、例外事象の発生時に制御フラグ26をクリアすることは、条件フラグ22が、例外ハンドリングから戻ることに続いてトレースされることを確実にし得る。
【0109】
また、トレースされた条件値がトレースストリーム内に定期的に含まれ、診断装置12のために参照ポイントを提供するように、トレース回路6は、制御フラグを定期的にクリアしてもよい。診断回路16は、参照ポイントでトレースデータの分析を開始することができ、これは、参照ポイントに含まれた、トレースされた条件値によって、条件フラグの状態が、以前のトレースデータ要素からの情報を必要とすることなく判定されることが可能であるからである。これは、診断回路16は、対象の領域に達するためにトレースストリーム全体を対処しなければならないわけではなく、対象のトレースストリームの領域に直接飛ぶことができるため有用である。
【0110】
また、処理の性能を向上するために、いくつかのプロセッサは、命令が実際に実行されるべきであるか否かを知る前に、その命令の推測的実行を行うことができる。1つ以上の推測的に実行された命令は、実際には実行されるべきではなかったという場合もある。誤った推測を検知すると、プロセッサは、任意の不適切に実行された命令の結果を覆して、生じているプロセッサの状態を、不適切に実行された命令の実行前に、回復することができる。トレース回路6は、命令がいくつ不適切に実行されたかを知ることができない可能性がある。それを確実にするために、誤った推測の訂正によってもたらされる条件フラグの値は、トレースストリームから判定することができ、トレース回路6は、誤った推測の検知時に、制御フラグ26をクリアすることができる。
【0111】
これらの事象のいずれかのために、トレース回路6は、制御フラグ26がクリアされたことを示す情報を、トレースストリームに含むことができる。診断回路16は、診断制御フラグ28をクリアすることによって、この情報に応答することができる。
【0112】
図8〜13は、条件付き命令の結果が診断装置12によって判定されることを可能にするために、条件フラグ22の値を示す、トレースされた条件値がトレースストリームに含まれる実施形態を示している。しかし、これらの技術はまた、条件付き命令の結果が判定されるように、値を示す別の種類の結果(例えば、成立/不成立の結果)がトレースストリームに含まれる実施形態に適用されてもよい。
【0113】
本発明の例示的な実施形態について、添付の図面を参照しながら本明細書に詳細に説明してきたが、本発明はこれらの正確な実施形態には制限されず、添付の特許請求の範囲に記載される本発明の範囲から逸脱せずに、当業者により、種々の変更および修正がなされ得ることを理解されたい。
【符号の説明】
【0114】
2… 処理装置
4… 処理回路
6… トレース回路
8… メモリシステム
10… 出力ポート
12… 診断装置
14… 入力ポート
16… 診断回路
20… 条件ステータスレジスタ
22… 条件フラグ
26… 制御フラグ
28… 診断制御フラグ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13