(57)【要約】  装置は、命令シーケンスに応答してデータ処理動作を実行するためのデータ処理回路を備え、命令シーケンスは分岐命令を含む。トレース生成回路は、データ処理動作を示すトレース項目のトレース・ストリームを生成する。トレース生成回路は、命令シーケンス中の１つ又は複数の不成立分岐命令、及び後続の成立分岐命令に応答して、装置の現在のステータス条件が満たされるとき、１つ又は複数の不成立分岐命令に対応する少なくとも１つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めることと、装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めることとを行う。したがって、不成立分岐命令をトレースすることと、成立分岐命令に関連付けられたソース・アドレスをトレースすることとのハイブリッド手法が与えられる。
2021517298.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
命令シーケンスに応答してデータ処理動作を実行するためのデータ処理回路であって、前記命令シーケンスが分岐命令を含む、データ処理回路と、
前記データ処理動作を示すトレース項目のトレース・ストリームを生成するためのトレース生成回路とを備え、
前記トレース生成回路が、前記命令シーケンス中の１つ又は複数の不成立分岐命令、及び後続の成立分岐命令に応答して、
前記装置の現在のステータス条件が満たされるとき、前記１つ又は複数の不成立分岐命令に対応する少なくとも１つの不成立トレース項目、及び後続の成立トレース項目を前記トレース・ストリーム中に含めることと、
前記装置の前記現在のステータス条件が満たされないとき、前記成立分岐命令に関連付けられたソース・アドレスを前記トレース・ストリーム中に含めることと
を行う、装置。
【請求項２】
前記現在のステータス条件が前記１つ又は複数の不成立分岐命令の多重度を含む、請求項１に記載の装置。
【請求項３】
前記装置の前記現在のステータス条件は、前記多重度がしきい値よりも小さいことである、請求項２に記載の装置。
【請求項４】
不成立分岐命令に応答して増分する不成立カウンタをさらに備える、請求項３に記載の装置。
【請求項５】
前記不成立カウンタが、前記しきい値において飽和するように構成された飽和カウンタである、請求項４に記載の装置。
【請求項６】
前記不成立カウンタが１ビット記憶要素を備える、請求項４又は請求項５に記載の装置。
【請求項７】
前記不成立カウンタが複数ビット記憶要素を備える、請求項４又は請求項５に記載の装置。
【請求項８】
前記トレースするトレース生成回路は、前記命令シーケンス中の前記成立分岐命令に応答して、前記装置の前記現在のステータス条件が満たされるとき、前記不成立カウンタが示す数と同数の不成立トレース項目を前記トレース・ストリーム中に含める、請求項４から７までのいずれか一項に記載の装置。
【請求項９】
前記トレースするトレース生成回路は、前記データ処理回路における例外の発生に応答して、前記例外が発生した、前記命令シーケンス中のポイントを示す例外トレース項目を前記トレース・ストリーム中に含め、前記不成立カウンタをリセットする、請求項４から８までのいずれか一項に記載の装置。
【請求項１０】
前記トレースするトレース生成回路は、前記データ処理回路における例外の発生に応答して、前記不成立カウンタが示す数と同数の不成立トレース項目を前記トレース・ストリーム中に含める、請求項９に記載の装置。
【請求項１１】
前記しきい値が、前記装置のための所定の静的な値である、請求項３から１０までのいずれか一項に記載の装置。
【請求項１２】
前記しきい値が可変値である、請求項３から１０までのいずれか一項に記載の装置。
【請求項１３】
前記トレース生成回路が、前記装置のための現在のリソース使用指示に応答して、前記しきい値を動的に設定する、請求項１２に記載の装置。
【請求項１４】
前記装置のための前記現在のリソース使用指示が前記装置における記憶要素の現在の占有率を示す、請求項１３に記載の装置。
【請求項１５】
前記装置の前記現在のステータス条件が前記装置における記憶要素の現在の占有率を含む、請求項１から１４までのいずれか一項に記載の装置。
【請求項１６】
前記成立トレース項目は、前記成立分岐命令のための分岐が成立したという指示である、請求項１から１５までのいずれか一項に記載の装置。
【請求項１７】
前記成立トレース項目が、前記分岐命令に関連付けられた前記ソース・アドレスである、請求項１から１５までのいずれか一項に記載の装置。
【請求項１８】
前記成立トレース項目は、前記分岐命令に関連付けられた前記ソース・アドレスの後に、前記成立分岐命令のための分岐が成立したという指示である、請求項１から１５までのいずれか一項に記載の装置。
【請求項１９】
前記成立トレース項目は、前記分岐が間接分岐であるときに、前記分岐のためのターゲット・アドレスの指示をさらに含む、請求項１から１８までのいずれか一項に記載の装置。
【請求項２０】
前記トレース生成回路は、前記データ処理回路がパフォーマンス改善プロシージャにおいて前記命令シーケンスから少なくとも１つの分岐命令を削除したという指示に応答して、前記装置の前記現在のステータス条件が満たされないことを決定する、請求項１から１９までのいずれか一項に記載の装置。
【請求項２１】
装置を動作させる方法であって、
命令シーケンスに応答してデータ処理動作を実行することであって、前記命令シーケンスが分岐命令を含む、データ処理動作を実行することと、
前記データ処理動作を示すトレース項目のトレース・ストリームを生成することとを含み、
１つ又は複数の不成立分岐命令が前記命令シーケンス中の成立分岐命令の前に来るとき、前記データ処理動作を示す前記トレース項目のトレース・ストリームを生成することが、
前記装置の現在のステータス条件が満たされるとき、前記１つ又は複数の不成立分岐命令に対応する少なくとも１つの不成立トレース項目、及び後続の成立トレース項目を前記トレース・ストリーム中に含めることと、
前記装置の現在のステータス条件、前記装置の前記現在のステータス条件が満たされないとき、前記成立分岐命令に関連付けられたソース・アドレスを前記トレース・ストリーム中に含めることと
を含む、方法。
【請求項２２】
命令シーケンスに応答してデータ処理動作を実行するための手段であって、前記命令シーケンスが分岐命令を含む、データ処理動作を実行するための手段と、
前記データ処理動作を示すトレース項目のトレース・ストリームを生成するための手段とを備え、
１つ又は複数の不成立分岐命令が前記命令シーケンス中の成立分岐命令の前に来るとき、前記生成するための手段が、
前記装置の現在のステータス条件が満たされるとき、前記１つ又は複数の不成立分岐命令に対応する少なくとも１つの不成立トレース項目、及び後続の成立トレース項目を前記トレース・ストリーム中に含めるための手段と、
前記装置の前記現在のステータス条件が満たされないとき、前記成立分岐命令に関連付けられたソース・アドレスを前記トレース・ストリーム中に含めるための手段と
をアクティブ化する、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はデータ処理に関する。より詳細には、本開示は、分岐命令のトレースに関する。
【背景技術】
【０００２】
データ処理システムは、システムのデータ・プロセッサによって実行される動作をトレースするための機能を与えられ得る。これは、一般に、それらのデータ処理動作を示すトレース項目のトレース・ストリームの生成を含む。このトレース・ストリームは、データ処理システムの動作が監視され得るように、データ処理システム内で（たとえば、システムオンチップ内で）生成され、システムからエクスポートされる必要がある。しかしながら、この目的に（たとえば専用のトレース出力ピンを介して）予約され得る帯域幅は、通常、極めて制約されており、したがって、トレース・ストリームに追加されるべきトレース項目の厳密な選択と、それらの選択されたトレース項目の効率的な表現とが必要である。データ・プロセッサがしばしば命令シーケンスを実行する場合、そのシーケンス中の第１の命令が実行されるとき、連続的に続く命令も実行されることが推論され得るので、データ・プロセッサによって実行される動作の多くは明示的にトレースされる必要はない。しかしながら、分岐が成立するか否かは、一般に、ランタイム条件に依存し、したがって、プロセッサが行ったことを再構成することを可能にするために、分岐が成立したか否か、したがって、分岐命令の後にどの命令が実行されたかの知識が必要とされるので、分岐命令はより明示的なトレーシングを必要とする。
【発明の概要】
【課題を解決するための手段】
【０００３】
少なくとも１つの例示的な実施例では、
命令シーケンスに応答してデータ処理動作を実行するためのデータ処理回路であって、命令シーケンスが分岐命令を含む、データ処理回路と、
データ処理動作を示すトレース項目のトレース・ストリームを生成するためのトレース生成回路とを備え、
トレース生成回路が、命令シーケンス中の１つ又は複数の不成立（not-taken）分岐命令、及び後続の成立（taken）分岐命令に応答して、
装置の現在のステータス条件が満たされるとき、１つ又は複数の不成立分岐命令に対応する少なくとも１つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めることと、
装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めることと
を行う、装置がある。
【０００４】
少なくとも１つの例示的な実施例では、装置を動作させる方法であって、
命令シーケンスに応答してデータ処理動作を実行することであって、命令シーケンスが分岐命令を含む、データ処理動作を実行することと、
データ処理動作を示すトレース項目のトレース・ストリームを生成することとを含み、
１つ又は複数の不成立分岐命令が命令シーケンス中の成立分岐命令の前に来るとき、データ処理動作を示すトレース項目のトレース・ストリームを生成することが、
装置の現在のステータス条件が満たされるとき、１つ又は複数の不成立分岐命令に対応する少なくとも１つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めることと、
装置の現在のステータス条件、装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めることと
を含む、方法がある。
【０００５】
少なくとも１つの例示的な実施例では、
命令シーケンスに応答してデータ処理動作を実行するための手段であって、命令シーケンスが分岐命令を含む、データ処理動作を実行するための手段と、
データ処理動作を示すトレース項目のトレース・ストリームを生成するための手段とを備え、
１つ又は複数の不成立分岐命令が命令シーケンス中の成立分岐命令の前に来るとき、生成するための手段が、
装置の現在のステータス条件が満たされるとき、１つ又は複数の不成立分岐命令に対応する少なくとも１つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めるための手段と、
装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めるための手段と
をアクティブ化する、装置がある。
【０００６】
添付の図面に示されているように、本技法の実施例を参照しながら、単に例として、本技法についてさらに説明する。
【図面の簡単な説明】
【０００７】
【図１】例示的な一実施例における装置を概略的に示す図である。
【図２】例示的な一実施例におけるシステムオンチップ装置を概略的に示す図である。
【図３】例示的な一実施例における装置を概略的に示す図である。
【図４Ａ】例示的な一実施例における装置のいくつかの構成要素を概略的に示す図である。
【図４Ｂ】例示的な一実施例における装置のいくつかの構成要素を概略的に示す図である。
【図５Ａ】例示的な一実施例における、分岐命令と、対応する得られたトレース・ストリームとを含む例示的な命令シーケンスを示す図である。
【図５Ｂ】例示的な一実施例における、分岐命令と、対応する得られたトレース・ストリームとを含む例示的な命令シーケンスを示す図である。
【図５Ｃ】例示的な一実施例における、分岐命令と、対応する得られたトレース・ストリームとを含む例示的な命令シーケンスを示す図である。
【図６Ａ】例示的な一実施例において取られるステップのシーケンスを示す流れ図である。
【図６Ｂ】図６Ａの変形を示す図である。
【図７】例示的な一実施例における、例外を処理するために取られるステップのシーケンスを示す流れ図である。
【図８】例示的な一実施例における、例外を処理するために取られるステップのシーケンスを示す流れ図である。
【発明を実施するための形態】
【０００８】
少なくともいくつかの実施例は、
命令シーケンスに応答してデータ処理動作を実行するためのデータ処理回路であって、命令シーケンスが分岐命令を含む、データ処理回路と、
データ処理動作を示すトレース項目のトレース・ストリームを生成するためのトレース生成回路とを備え、
トレース生成回路が、命令シーケンス中の１つ又は複数の不成立分岐命令、及び後続の成立分岐命令に応答して、
装置の現在のステータス条件が満たされるとき、１つ又は複数の不成立分岐命令に対応する少なくとも１つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めることと、
装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めることと
を行う、装置を提供する。
【０００９】
分岐命令のトレーシングに対する１つの手法は、分岐ごとにインジケータ（すなわちトレース項目）を出力することであろう。たとえば、そのようなインジケータは、分岐が成立したか又は不成立であったかのいずれかを示すように符号化され得る。そのような成立／不成立インジケータの任意のシーケンスが符号化され得る効率により、この点について同様に効率的であるトレース・ストリームが可能になる。しかしながら、この手法は、すべての分岐、すなわち、成立した分岐と不成立であった分岐の両方の知識を必要とする。その上、現代のプロセッサ・アーキテクチャでは、そのような「不成立」実行は最適化により消去されており、トレース目的のために「不成立」実行を単に保存することはよりコストがかかるようになりつつある。分岐命令のトレーシングに対する別の手法は、成立分岐に関するインジケータ（すなわちトレース項目）のみを出力することであろうが、プログラム・フローを再構成するために、この手法は、どの特定の分岐が成立したかの知識を必要とする。この知識を与えるために、成立分岐のソース・アドレスが出力され得るが、そのようなソース・アドレスを出力することは、成立／不成立インジケータの上述の符号化された任意のシーケンスよりも（符号化効率に関して）著しく効率的でない。
【００１０】
この文脈において、本技法はハイブリッド手法を提案し、その手法に従って、トレース生成回路は、トレース生成回路が１つ又は複数の不成立分岐命令、及び後続の成立分岐命令にどのように応答するかを決定するために、装置の現在のステータス条件を監視する。現在のステータス条件が満たされるとき、トレース生成回路は、１つ又は複数の不成立分岐命令に対応する少なくとも１つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含める。反対に、装置の現在のステータス条件が満たされないとき、トレース生成回路は、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含める。言い換えれば、トレース生成回路は、分岐のトレーシングに対する２つの上記で説明した手法、すなわち、いくつかの状況の下で、少なくともいくつかの不成立トレース項目を生成することと、他の状況の下で、成立分岐命令に関連付けられたソース・アドレスを含む明示的な成立トレース項目を生成することとを切り替えることができる。その上、装置は、トレース生成回路が、現在のステータス条件の定義に応じて、これらの２つの手法をいつ切り替えるかを制御するための構成可能性を与えられる。
【００１１】
現在のステータス条件は様々な形式を取り得、任意の関連がある１つ又は複数の基準に従って定義され得る。しかしながら、実施例では、現在のステータス条件は１つ又は複数の不成立分岐命令の多重度（multiplicity）を含む。言い換えれば、現在のステータス条件は、命令シーケンス中の成立分岐命令の前にいくつの不成立分岐命令が来るかに依存することができる。つまり、シーケンス中で遭遇した不成立分岐命令が多いほど、それらの不成立分岐命令が明示的にトレースされているとき、それらの不成立分岐命令を表すために必要とされる１つ又は複数のトレース項目のサイズが大きくなる。その上、成立分岐命令のためのソース・アドレスをトレースすることは、そのソース・アドレスを表すために比較的大きなトレース項目を必要とするが、本技法は、この負担が相対的であり、代替として明示的にトレースされる不成立分岐命令が多いほど、成立分岐命令ソース・アドレスのこのトレーシングは負担が少なくなることを認識する。
【００１２】
したがって、いくつかの実施例では、装置の現在のステータス条件は、多重度がしきい値よりも小さいことである。したがって、しきい値を設定することによって、不成立分岐命令の多重度（数）がしきい値未満であるとき、現在のステータス条件が満たされ、不成立分岐命令がトレースされるように、２つの手法間の遷移が制御され得る。反対に、不成立分岐命令の多重度（数）がしきい値以上であるとき、現在のステータス条件は満たされず、代わりに、成立分岐命令に関連付けられたソース・アドレスがトレース・ストリーム中に含められる。しきい値の設定は、実装依存であり、装置の特定の要件と装置が動作しているコンテキストに依存する。実際、このしきい値を自由に設定する能力が本技法の特徴である。
【００１３】
不成立分岐命令の数を監視することは、任意の技術的に実現可能な機構によって実装され得るが、実施例では、装置は、不成立分岐命令に応答して増分する不成立カウンタをさらに備える。次いで、現在のステータス条件が満たされるかどうか、すなわち、値がしきい値未満であるか、又はしきい値以上であるかを決定するために、このカウンタによって現在示されている値が参照され得る。
【００１４】
不成立カウンタは様々な形式を取り得るが、実施例では、不成立カウンタは、しきい値において飽和するように構成された飽和カウンタである。現在のステータス条件を決定するためにカウンタが使用される場合、かつ多重度がしきい値よりも小さいときに装置の現在のステータス条件が満たされていると決定される場合、多重度がしきい値に到達すると、現在のステータス条件はカウンタのさらなる増分によって影響を受けなくなり、したがって、飽和カウンタはこのことを反映する。
【００１５】
不成立カウンタの容量も実装依存であり、いくつかの実施例では、不成立カウンタは１ビット記憶要素を備える。他の実施例では、不成立カウンタは複数ビット記憶要素を備える。
【００１６】
いくつかの実施例では、トレースするトレース生成回路は、命令シーケンス中の成立分岐命令に応答して、装置の現在のステータス条件が満たされるとき、不成立カウンタが示す数と同数の不成立トレース項目をトレース・ストリーム中に含める。
【００１７】
トレースするトレース生成回路は、データ処理回路における例外の発生に応答して、例外が発生した、命令シーケンス中のポイントを示す例外トレース項目をトレース・ストリーム中に含め、不成立カウンタをリセットし得る。
【００１８】
トレースするトレース生成回路は、データ処理回路における例外の発生に応答して、不成立カウンタが示す数と同数の不成立トレース項目をトレース・ストリーム中に含め得る。
【００１９】
しきい値はまた、システム要件に応じて様々に構成され得る。いくつかの実施例では、しきい値は装置のための所定の静的な値である。他の実施例では、しきい値は可変値である。
【００２０】
しきい値を変動させる能力は、ある範囲の状況において利用可能性を見出し得る。たとえば、いくつかの実施例では、トレース生成回路は、装置のための現在のリソース使用指示に応答して、しきい値を動的に設定する。そのような現在のリソース使用指示は、様々な形式を取り得、特に、しきい値がより高い値に設定されるときに装置によって負われなければならない追加の負担に対して、トレード・オフを図られる必要があり得る、装置のリソースの使用を反映し得る。たとえば、実施例では、装置のための現在のリソース使用指示は装置における記憶要素の現在の占有率を示す。装置内の記憶能力が相対的に不足しているリソースであり得る場合、記憶要素の使用量が現在大きいときには、しきい値を低減する（したがって、遭遇した不成立分岐命令の数を記録するために必要とされる容量を低減する）ことが有益であり得る。
【００２１】
生成される成立トレース項目は様々な形式を取り得る。いくつかの実施例では、成立トレース項目は、成立分岐命令のための分岐が成立したという指示である。この指示は、たとえば、「Ｅアトム」（「実行された（executed）」アトム）と呼ばれることがある、簡単な「成立」指示であり得る。いくつかの実施例では、成立トレース項目は、分岐命令に関連付けられたソース・アドレスである。言い換えれば、ソース・アドレス自体は、分岐が成立したという指示として使用され得る。いくつかの実施例では、成立トレース項目は、分岐命令に関連付けられたソース・アドレスの後に、成立分岐命令のための分岐が成立したという指示である。言い換えれば、ソース・アドレスと、たとえば、上述の簡単な「成立」指示（「Ｅアトム」）の両方が使用され得る。
【００２２】
分岐命令は直接的であるか、又は間接的であり得る。いくつかの実施例では、成立トレース項目は、分岐が間接分岐であるとき、分岐のためのターゲット・アドレスの指示をさらに含む。
【００２３】
現代のものは、（最近の経験に基づいて）めったに実行されない実行シーケンスから命令を削除することによってパフォーマンスを改善するためのステップを取り得る。たとえば、少なくともいくつかの「不成立」分岐はこのようにして処理され得る。この文脈において、本技法は、そのような「最適化」ステップが、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めるための、すなわち、「最適化」ステップに応答して、装置の現在のステータス条件が満たされないことを決定するためのトリガであり得ることを提案する。したがって、いくつかの実施例では、トレース生成回路は、データ処理回路がパフォーマンス改善プロシージャにおいて命令シーケンスから少なくとも１つの分岐命令を削除したという指示に応答して、装置の現在のステータス条件が満たされないことを決定する。
【００２４】
少なくともいくつかの実施例は、装置を動作させる方法であって、
命令シーケンスに応答してデータ処理動作を実行することであって、命令シーケンスが分岐命令を含む、データ処理動作を実行することと、
データ処理動作を示すトレース項目のトレース・ストリームを生成することとを含み、
１つ又は複数の不成立分岐命令が命令シーケンス中の成立分岐命令の前に来るとき、データ処理動作を示すトレース項目のトレース・ストリームを生成することが、
装置の現在のステータス条件が満たされるとき、１つ又は複数の不成立分岐命令に対応する少なくとも１つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めることと、
装置の現在のステータス条件、装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めることと
を含む、方法を提供する。
【００２５】
少なくともいくつかの実施例は、
命令シーケンスに応答してデータ処理動作を実行するための手段であって、命令シーケンスが分岐命令を含む、データ処理動作を実行するための手段と、
データ処理動作を示すトレース項目のトレース・ストリームを生成するための手段を備え、
１つ又は複数の不成立分岐命令が命令シーケンス中の成立分岐命令の前に来るとき、生成するための手段が、
装置の現在のステータス条件が満たされるとき、１つ又は複数の不成立分岐命令に対応する少なくとも１つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めるための手段と、
装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めるための手段と
をアクティブ化する、装置を提供する。
【００２６】
次に、図を参照しながら、いくつかの特定の実施例について説明する。
【００２７】
図１は、例示的な一実施例における装置１０を概略的に示す。装置は、データ処理回路１２と、トレース生成回路１４とを備える。データ処理回路１２は、分岐命令を含む命令シーケンスに応答してデータ処理動作を実行する。トレース生成回路１４は、データ処理回路１２が実行したデータ処理動作を示すデータ処理情報を受信し、そのデータ処理情報に基づいて、トレース生成回路１４は、トレース・ストリームを形成するトレース項目（要素）を生成し、そのトレース項目（要素）から装置のアクティビティが再構成され得る。特に、命令シーケンスに応答してデータ処理回路１２によって実行されたデータ処理動作が再構成され得る。以下の図を参照しながら以下でより詳細に説明するように、トレース生成回路１４がトレース・ストリームを生成する様式は装置１２の現在のステータス条件１６に依存する。この現在のステータス条件１６は、特に、以下の図を参照しながら説明する、いくつかの形式を取り得る。その上、トレース生成回路が、命令シーケンス中の分岐命令を示すトレース項目を生成する様式（及びデータ処理回路１２がそれらの分岐命令にどのように応答したか）は、現在のステータス条件に依存する。現在のステータス条件が満たされるとき、トレース生成回路１４は、（それぞれ不成立分岐と成立分岐とを示す）不成立トレース項目と成立トレース項目とをトレース・ストリーム中に含め得るが、現在のステータス条件が満たされないとき、トレース生成回路１４は、その分岐が成立したときの分岐命令のソース・アドレスを含め得る。分岐が間接分岐であった場合、成立トレース項目は分岐のためのターゲット・アドレスの指示をさらに含む。
【００２８】
図２は、例示的な一実施例における装置２０を概略的に示す。装置２０は、システムオンチップ（ＳｏＣ）デバイスとして実施され、データ処理回路２２と、トレース生成回路２４とを備える。データ処理回路２２は、分岐命令を含む命令シーケンスに応答してデータ処理動作を実行する。トレース生成回路２４は、データ処理回路２２が実行したデータ処理動作を示すデータ処理情報を受信し、そのデータ処理情報に基づいて、トレース生成回路２４は、トレース・ストリームを形成するトレース項目（要素）を生成し、そのトレース項目（要素）から装置のアクティビティが再構成され得る。図１の装置１０について説明したように、トレース生成回路２４がトレース・ストリームを生成する様式は装置２０の現在のステータス条件に依存する。図２では、その現在のステータス条件の重要な構成要素が不成立カウンタ２６によって表されている。この不成立カウンタ２６は、データ処理回路２２が命令シーケンス中の分岐命令に遭遇し、分岐が成立しなかったとき、増分される。したがって、トレース生成回路２４が命令シーケンス中の分岐命令を示すトレース項目を生成する様式（及びデータ処理回路２２がそれらの分岐命令にどのように応答したか）は、不成立カウンタ２６の現在の値に依存する。したがって、不成立カウンタ２６のいくつかの値について、現在のステータス条件が満たされることが決定され、トレース生成回路２４は、（それぞれ不成立分岐と成立分岐とを示す）不成立トレース項目と成立トレース項目とをトレース・ストリーム中に含め得るが、不成立カウンタ２６の他の値については、現在のステータス条件が満たされないことが決定され、トレース生成回路２４は、その分岐が成立したときの分岐命令のソース・アドレスを含め得る。
【００２９】
図３は、例示的な一実施例における装置３０を概略的に示す。装置は、データ処理回路３２と、トレース生成回路３４とを備える。データ処理回路３２は、分岐命令を含む命令シーケンスに応答してデータ処理動作を実行する。トレース生成回路３４は、データ処理回路３２が実行したデータ処理動作を示すデータ処理情報を受信し、そのデータ処理情報に基づいて、トレース生成回路３４は、トレース・ストリームを形成するトレース項目（要素）を生成し、そのトレース項目（要素）から装置のアクティビティが再構成され得る。装置３２はまた、不成立カウンタ３６と、しきい値ストレージ３７と、比較回路３８とを備える。図２の不成立カウンタ２６と同様に、不成立カウンタ３６は、データ処理回路３２が命令シーケンス中の分岐命令に遭遇し、分岐が成立しなかったとき、増分される。しきい値ストレージ３７及び比較回路３８の提供は、現在のステータス条件が満たされるか否かの決定を行うことを可能にする。特に、不成立カウンタ３６の値がしきい値３７未満であるとき、現在のステータス条件が満たされることが決定され、不成立カウンタ３６の値がしきい値３７以上であるとき、現在のステータス条件が満たされないことが決定される。これに基づいて、トレース生成回路３４は、（それぞれ不成立分岐と成立分岐とを示す）不成立トレース項目と成立トレース項目とをトレース・ストリーム中に含め得るか、又はその分岐が成立したときの分岐命令のソース・アドレスを含め得る。
【００３０】
図１〜図３の実施例は、いかなる意味でも、相互排他的である別個の実施例として見られるべきでなく、むしろ、本技法の異なる態様とそれらの実施についての異なる可能性とを強調するために図中に単に提示されていることに留意されたい。たとえば、現在のステータス条件１６は、データ処理回路１２の一部を形成するものとして図１に示されているが、不成立カウンタ２６は、トレース生成回路２４の一部を形成するものとして図２に示され、図３における不成立カウンタ３６、しきい値ストレージ３７及び比較回路３８はデータ処理回路３２及びトレース生成回路３４の外側に示されている。このことは、したがって、本技法が実施され得る方法の範囲があること、特に、現在のステータス条件、不成立カウンタ、しきい値、又は比較回路などの項目が、データ処理回路又はトレース生成回路の一方若しくは他方の（又はさらに両方の）一部を形成する必要がないことを強調している。この見方はまた、以下の図４Ａ及び図４Ｂに、互いに関して並びに図１〜図３に関して、自由に当てはまる。要素は、適切に各々から自由に組み合わせられ得る。
【００３１】
図４Ａは、飽和不成立カウンタ４０と、しきい値ストレージ４２と、比較回路４４とを概略的に示す。図２の不成立カウンタ２６及び図３の不成立カウンタ３６と同様に、不成立カウンタ４０は、（図４Ａに示されていない）監視されるデータ処理回路が命令シーケンス中の分岐命令に遭遇し、分岐が成立しなかったとき、増分される。不成立カウンタ４０は、さらなる不成立分岐に遭遇した場合でも、飽和値において飽和する（すなわち、飽和値よりもさらに増分しない）ように構成された飽和カウンタである。この飽和値は、それ自体が構成可能であり得るしきい値４２（入力「しきい値を設定する」を参照されたい）によって定義される。比較回路４４は、現在のステータス条件が満たされるか否かを決定するために、不成立カウンタ４０の現在の値としきい値４２とを比較する。特に、飽和不成立カウンタ４０の値がしきい値４２未満である（すなわち、カウンタ４０がまだ飽和していない）とき、現在のステータス条件が満たされることが決定され、不成立カウンタ４０の値がしきい値４２以上である（すなわち、カウンタ４０が飽和している）とき、現在のステータス条件が満たされないことが決定される。現在のステータス条件は、「トレーシング・モード」、すなわち、トレース生成回路（図４Ａに示されていない）が、（それぞれ不成立分岐と成立分岐とを示す）不成立トレース項目と成立トレース項目とをトレース・ストリーム中に含めるか、又は分岐が成立したときの分岐命令のソース・アドレスを含めるかを決定する。
【００３２】
図４Ｂは、記憶要素５２を備えることが示されている、データ処理回路５０のさらなる実例を示す。この記憶要素は、記憶要素の特定の形式が本明細書では重要でないので、レジスタによって、又はキャッシュ・データ・ストアによってなど、様々に実施され得る。しかしながら、記憶要素が、不成立（not-taken）（ＮＴ）カウンタ５４を維持するために少なくとも部分的に使用されることに留意されたい。上記の実例におけるように、不成立（ＮＴ）カウンタ５４は、データ処理回路５０が命令シーケンス中の分岐命令に遭遇し、分岐が成立しなかったとき、増分される。装置はまた、しきい値ストレージ５８と、比較回路６０とを備える。上記で説明したように、比較回路６０によるＮＴカウンタ５４の値としきい値５８との比較が「トレーシング・モード」を決定する。しかしながら、制御回路５６も存在することに留意されたい。この制御回路５６は、記憶要素５２から使用指示を受信し、この使用指示に基づいてしきい値５８の設定を制御する。たとえば、この使用指示は記憶要素５２の現在の占有率であり得る。この機能は、（他のシステム要件による）記憶要素５２の容量に対する需要がより大きいとき、しきい値が下げられ得るように与えられ、ＮＴカウンタ５４を与えるために必要とされる記憶要素５２がより小さいことを意味する。他のシステム要件による記憶要素５２の容量に対する需要がより小さいとき、しきい値が上げられ、より多くの記憶要素５２がＮＴカウンタ５４として使用されることが可能になり得る。しきい値５８は、このようにして自由に設定され得、さらには０に低減され得る。異なって設定されたしきい値に応答した異なる挙動について、以下でより詳細に説明する。
【００３３】
図５Ａは、分岐命令のみを含む命令シーケンスを左側に示す。非分岐命令は、図示されている分岐命令の間にインターリーブされ得る（おそらくされるであろう）が、本説明にとって重要でなく、したがって、単に説明の明快のために省略されている。分岐命令の３つの例示的なタイプ、すなわち、Ｂ（分岐（branch））と、ＢＮＥ（等しくなければ分岐（branch-not-equal））と、ＢＥＱ（等しければ分岐（（branch-equal））とが示されている。いくつかの分岐命令は（この例示的な実行シーケンスにおいて）成立していると標示されている。残りの分岐命令は不成立である。図の右側に、得られたトレース・ストリームがある。この実例では、３のしきい値が不成立カウンタのために設定されている。結果として、第１の成立分岐は「Ｅ」（実行された）アトムを出力させる。次の２つの不成立分岐は、それぞれ「Ｎ」（実行されなかった（not-executed））アトムを出力させる。次の成立分岐はまた、「Ｅ」アトムを出力させる。しかしながら、４つの不成立分岐の以下のシーケンスは、不成立カウンタのために設定された３のしきい値を超えており、結果として、「Ｎ」アトムは全く出力されず、むしろ、次の成立分岐は、対応する分岐命令のためのソース・アドレスを明示的にトレース（出力）させる。
【００３４】
図５Ｂは、典型的なコーディング・ループを形成する４つの命令のさらなる例示的な命令シーケンスを示す。さらに、この実例では、ループは、プログラム・フローがループから出る前に何回も反復され、ＢＮＥ命令＃２及びＢＮＥ命令＃３は繰り返し成立しておらず、ＢＥＱ命令＃４は繰り返し成立している。現代の（投機的な）プロセッサは、したがって、一般的に、この特定のコード・シーケンスの実行を最適化し、この特定のコード・シーケンスを、図５Ｂの下側部分に示されている切り詰められたコード・シーケンス、すなわち比較ＣＭＰ＃１及びＢＥＱ＃４のみに効果的に変換する。この種類の「最適化」（ＢＮＥを削除すること）を実行するように構成された装置について、このアクションはまた、トレーシング・モードを変更するための、すなわち、２つのＮアトムの回数が、現在定義されている（たとえば、３の）しきい値未満であっても、ソース・アドレスの出力を強制するためのトリガとして使用され得る。
【００３５】
図５Ｃは、最後のＢＥＱ＃５のトレーシングのための２つの可能性を示す、別の例示的なコード・シーケンスを示し、これらの可能性は、ＢＥＱ＃５のソース・アドレスのみをトレースすること（ＢＥＱ＃５が「成立」したことが暗示的である）であるか、又は最初にソース・アドレスをトレースし、その後明示的な「Ｅ」アトムをトレースすることのいずれかである。言い換えれば、「Ａ」の実例では、トレース・ストリーム中のソース・アドレスの存在は、最後の分岐が成立したことを暗示し、「Ｂ」の実例では、トレース・ストリーム中のソース・アドレスの存在は最後の分岐について何も暗示せず、Ｅアトムは、分岐が成立したことを明示的に示す。
【００３６】
図６Ａは、例示的な一方法において取られるステップのシーケンスを示す流れ図である。フローはステップ１００において始まると考えられ得、そこで、データ処理回路が遭遇する各命令について、その命令が分岐命令であることが決定される。フローは、他のタイプの命令について、ステップ１００において自らループする。しかしながら、ステップ１０２において分岐命令に遭遇したとき、分岐が成立したか、又は不成立であったかが決定される。不成立分岐について、ステップ１０４において、不成立カウンタが増分され（不成立カウンタは、そのように実施された場合、飽和し得ることに留意されたい）、フローはステップ１００に戻る。成立分岐について、フローはステップ１０６に進み、そこで、不成立カウンタが、定義されたしきい値以上である（たとえば飽和している）かどうかが決定される。この条件が真である場合、フローはステップ１０８に進み、そこで、成立分岐のソース・アドレスが出力される。次いで、ステップ１１０において、不成立カウンタがリセットされる。しかしながら、ステップ１０６において、条件が真でない場合、フローはステップ１１２に進み、トレーシング回路は、不成立カウンタが現在示す数と同数のＮアトム（不成立トレース項目）を出力する。この数は、したがって、０、１、又は不成立カウンタが示すことができる、その不成立カウンタのしきい値未満の数と同数であり得る。次いで、ステップ１１４において、Ｅアトム（成立トレース項目）が出力され、ステップ１１０において、不成立カウンタがリセットされる。ステップ１１０から、フローはステップ１００に戻る。
【００３７】
図６Ａにおけるステップ１１２に関する最後のポイントとして、また本技法は、しきい値が可変であり得ることを提案することを想起して、このことは、したがって、しきい値の設定によって構成され得る挙動の３つのカテゴリーがあることを意味することに留意されたい。第１に、しきい値が０に設定された場合、すべての成立分岐は、トレースされる対応するソース・アドレスを生じる。第２に、しきい値が１に設定された場合、ａ）（最後の成立分岐以後に）不成立分岐に全く遭遇しなかった場合、成立分岐は、トレースされるＥアトムを生じるか、又はｂ）（最後の成立分岐以後に）不成立分岐に遭遇した場合、成立分岐は、トレースされる対応するソース・アドレスを生じる。第３に、しきい値が２以上（本明細書でその数を「ｘ」と呼ぶ）に設定された場合、ａ）（最後の成立分岐以後に）「ｘ」よりも少ない数（本明細書でその数を「ｙ」と呼ぶ）の不成立分岐に遭遇した場合、成立分岐は、出力される「ｙ」個のＮアトム、及び後続の１個のＥアトムを生じるか、又はｂ）（最後の成立分岐以後に）少なくとも「ｘ」個の不成立分岐に遭遇した場合、成立分岐は、トレースされる対応するソース・アドレスを生じる。
【００３８】
図６Ｂは、図６Ａの流れ図の変形を示し、その変形は、ステップ１０６とステップ１１２との間の決定ステップ１０７の追加のみを伴う、図６Ａのフローと同一のフローである。したがって、ステップ１０６から、条件が真でない場合、（現在の命令シーケンス中の）分岐命令が（これらの分岐が（現在）めったに成立しないと決定されたとき）「最適化」（パフォーマンス改善）プロシージャにおいて削除されたという指示が受信されたかどうかをテストするために、ステップ１０７において追加の決定が行われる。この決定が真でない場合、次いで、フローはステップ１１２に進み、トレーシング回路は、不成立カウンタが現在示す数と同数のＮアトム（不成立トレース項目）を出力する。しかしながら、この決定が真である場合、フローはステップ１０８に進み、そこで、成立分岐のソース・アドレスが出力される。
【００３９】
図７及び図８は、例外の処理に関する２つの例示的な方法において取られるステップのシーケンスを示す流れ図である。図７及び図８は、したがって、たとえば、図６Ａ（及び６Ｂ）に示された方法ステップと並行してそれぞれ動作し得るプロセスであると理解されるべきであることに留意することが重要である。言い換えれば、図６Ａ（及び６Ｂ）は、分岐命令が本技法によってどのようにトレースされ得るかの実例を示し、これと並行して、図７と図８の各々は、本技法を実装するときに、例外がどのように処理され得るかの実例を示す。その上、これらの例外処理技法は、図１〜図４に示された例示的な装置実施例のいずれかにおいて実装され得、単に例として、データ処理回路３２からトレース生成回路３４に通る例外信号が図３に示されている。
【００４０】
図７では、フローはステップ１２０において開始すると考えられ得、そこで、例外が発生したかどうかが決定される。例外が発生しなかった場合、フローは自らループして戻り、このステップにおいて待機する。（ある他のコードへの分岐を引き起こすのに有効な）例外が発生すると、フローはステップ１２２に進み、そこで、不成立カウンタが、定義されたしきい値以上である（たとえば飽和している）かどうかが決定される。この決定が真でない場合、トレース生成器は、不成立カウンタが現在示す数と同数のＮアトム（不成立トレース項目）を出力する（すなわちＣＯＵＮＴＥＲ＊Ｎ−ａｔｏｍｓを出力する）。次いで、ステップ１２６において、例外がどこから成立したかを示す例外パケットが出力される（例外が分岐命令上で発生しなかったかもしれないので、その出力は行われなければならない）。しかしながら、ステップ１２２において、不成立カウンタが、定義されたしきい値以上である（たとえば飽和している）ことがわかった場合、フローはステップ１２６に直接進み、例外がどこから成立したかを示す例外パケットだけが出力される。このことは、図６Ａ及び６Ｂの実例におけるソース・アドレス・トレース項目と全く同様に、分岐命令が不成立であったことを暗示する。最後に、ステップ１２８において、不成立カウンタがリセットされ、フローはステップ１２０に戻る。
【００４１】
図８は、図７に示された手法に対する、例外処理に対する代替の手法を示す。ここでは、すべての状況において、例外がどこから成立したかを示す例外パケットのみが出力される。本明細書で説明する「現在のステータス条件」の使用に関して、例外は、現在のステータス条件が満たされないようにする。図８では、フローはステップ１４０において開始すると考えられ得、そこで、例外が発生したかどうかが決定される。例外が発生しなかった場合、フローは自らループして戻り、このステップにおいて待機する。（ある他のコードへの分岐を引き起こすのに有効な）例外が発生すると、フローはステップ１４２に進み、そこで、例外がどこから成立したかを示す例外パケットが出力される（例外が分岐命令上で発生しなかったかもしれないので、その出力は行われなければならない）。最後に、ステップ１４４において、不成立カウンタがリセットされ、フローはステップ１４４に戻る。
【００４２】
手短に全体を要約すれば、装置は、命令シーケンスに応答してデータ処理動作を実行するデータ処理回路を備え、命令シーケンスは分岐命令を含む。トレース生成回路は、データ処理動作を示すトレース項目のトレース・ストリームを生成する。トレース生成回路は、命令シーケンス中の１つ又は複数の不成立分岐命令、及び後続の成立分岐命令に応答して、装置の現在のステータス条件が満たされるとき、１つ又は複数の不成立分岐命令に対応する少なくとも１つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めることと、装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めることとを行う。したがって、不成立分岐命令をトレースすることと、成立分岐命令に関連付けられたソース・アドレスをトレースすることとのハイブリッド手法が、与えられる。
【００４３】
本出願において、「…ように構成された」という文言は、装置の要素が、定義された動作を実行することが可能な構成を有することを意味するために使用される。この文脈では、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は様式を意味する。たとえば、装置が、定義された動作を与える専用のハードウェアを有し得るか、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を与えるために、いかなる意味でも変更される必要があることを暗示しない。
【００４４】
本明細書では、添付の図面を参照しながら、例示的な実施例について詳細に説明したが、本発明は、それらの正確な実施例に限定されないこと、及び添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、様々な変更、追加、及び修正が当業者によってその中で実施され得ることを理解されたい。たとえば、本発明の範囲から逸脱することなく、従属請求項の特徴の様々な組合せが、独立請求項の特徴と共に行われ得る。
【図１】
2021517298.tif 000003
【図２】
2021517298.tif 000004
【図３】
2021517298.tif 000005
【図４Ａ】
2021517298.tif 000006
【図４Ｂ】
2021517298.tif 000007
【図５Ａ】
2021517298.tif 000008
【図５Ｂ】
2021517298.tif 000009
【図５Ｃ】
2021517298.tif 000010
【図６Ａ】
2021517298.tif 000011
【図６Ｂ】
2021517298.tif 000012
【図７】
2021517298.tif 000013
【図８】
2021517298.tif 000014
【国際調査報告】
2021517298.tif 000015
2021517298.tif 000016