JP2010500661A - プロセッサ命令セット動作モードを比較するデバッグ回路 - Google Patents

プロセッサ命令セット動作モードを比較するデバッグ回路 Download PDF

Info

Publication number
JP2010500661A
JP2010500661A JP2009523924A JP2009523924A JP2010500661A JP 2010500661 A JP2010500661 A JP 2010500661A JP 2009523924 A JP2009523924 A JP 2009523924A JP 2009523924 A JP2009523924 A JP 2009523924A JP 2010500661 A JP2010500661 A JP 2010500661A
Authority
JP
Japan
Prior art keywords
instruction set
processor
instruction
operating mode
set operating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009523924A
Other languages
English (en)
Other versions
JP5546859B2 (ja
Inventor
バーク、ケビン・チャールズ
ステムペル、ブライアン・マイケル
ストリート、ダレン・ユージェン
サップ、ケビン・アレン
デブルイネ、レスリー・マーク
リズク、ナビル・アミール
サートリウス、トマス・アンドリュー
スミス、ロドニー・ウェイン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2010500661A publication Critical patent/JP2010500661A/ja
Application granted granted Critical
Publication of JP5546859B2 publication Critical patent/JP5546859B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3628Software debugging of optimised code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

プロセッサは、各々が異なる命令セット動作モードにある2つ又はそれ以上の命令セットを実行するように動作する。各命令が実行されると、デバッグ回路が、カレント命令セット動作モードと、プログラマによって設定されたターゲット命令セット動作モードとを比較し、それらが一致すると警告又はインジケーションを出力する。警告又はインジケーションは更に、予め定められたターゲットアドレス範囲内の続く命令アドレスに依る。警告又はインジケーションは、実行を停止するブレークポイント信号を備えることができる。あるいは、プロセッサの外部信号を出力することができる。プロセッサが命令セット動作モードの一致を検出した命令アドレスが更に出力となりうる。更に、又はあるいは、警告又はインジケーションは、追跡動作の開始又は停止すること、例外を引き起こすこと、あるいはその他任意の周知のデバッガ機能を備えることもできる。

Description

本発明は、一般にプロセッサ分野に関し、特に、プロセッサ命令セット動作モードの考慮を含むデバッグ回路を経由して、プロセッサ上でコードをデバッグするシステム及び方法に関する。
昨今のプロセッサは、極めて複雑なシステムである。大抵の最近のプロセッサは、各々が多くの実行ステップを有する連続した命令が実行中オーバラップする、パイプラインされたアーキテクチャを用いる。「スーパースカラ」プロセッサとして知られている多くのプロセッサは、並列命令実行のための2つ又はそれ以上の別々のパイプラインを含む。分岐命令によるパイプライン内での機能停止を回避するために、ほとんどのプロセッサが、分岐が予測され成立すると命令の投機的なフェッチ及び実行を行う様々な形式の分岐予測を用いる。性能を改善するために、昨今の多くのプロセッサは、論理レジスタアドレスを、レジスタ再命名として知られている、対応する物理メモリ記憶レジスタから分離する。限定されず高速なメモリの錯覚をプログラムに提供するために、多くのプロセッサは、仮想アドレス空間内でコードを実行し、データがメモリ階層(例えばレジスタ、キャッシュ、主要メモリ)を横断すると、アドレスを1つ又は複数の物理アドレス空間に変換する。このような複雑さによって、現在のプロセッサ内でのコードの実行は、正確にトラック及び確認することが非常に難しい。特に、異常をデバッグすることが非常に難しくなりうる。
加えて、昨今のプロセッサで実行するソフトウェアは、それ自身が極めて複雑である。縮小命令セットコンピュータ(RISC)プロセッサアーキテクチャの出現によって、コンピュータの計算上の複雑さ及び論理的な複雑さのほとんどは、プロセッサ命令から最適化コンパイラへ移った。すなわち、コンパイラは、各々が特定の機能のために最適化された、プロセッサ命令の比較的小さなセットから複雑な動作をビルドする。その結果、例えば論理演算、算術演算、ロード/格納動作、及び分岐動作を含む、与えられた計算タスクのためのより冗長で複雑な命令シーケンスをもたらす。このような複雑なコードは、エラーが異常なプログラム動作を招いた場合、デバッグすることが難しくなりうる。
複雑なプロセッサで実行している複雑なコードをデバッグするという難題なタスクにおいて支援するために、多くのプロセッサ内にデバッグツールが備えられている。これらは、特定の命令及び/又はデータパターンを識別するアドレス比較器及びデータ比較器を備えることができる。デバッグツールは、アドレス範囲比較器を更に含むことができ、それによってデバッギング又はトレーシングは、予め定められたコードセグメントに限定されることができる。その他のデバッグツールは、ブレークポイントを指定し、追跡をトリガする条件の指定において柔軟性を提供するために、カウンタ、シーケンサ等を含むことができる。追跡情報は、例えば専用バス経由でオフチップへ提供されることができる。あるいは追跡情報は、専用オンチップバッファ内へ格納することができる。ブレークポイントは、例えば論理解析器をアーム及び/又はトリガしたり、LEDを点灯するような1つ又は複数の外部信号をトリガすることができる。又はブレークポイントは、例外を引き起こし、コード実行をデバッグルーチンへ分岐することができる。あるいはブレークポイントは、単に実行を停止し、様々なレジスタ及びキャッシュのコンテンツが検査されることを可能とすることができる。通常のプロセッサ実行中には用いられないこれらデバッグツールは、プロセッサ性能及び電力消費への影響を最小化するような方法で、プロセッサ回路内に設計される。
プログラマは、関連する命令セット符号化に従って命令を実行する前に、適切な命令セット動作モードをソフトウェア内に明確に設定することができる。しかし誤ったソフトウェアは時に、実際にはプロセッサが他のいくつかの命令セット動作モードにある時に、1つの命令セット動作モードで実行中であるように意図された特定の命令アドレスへ分岐することがある。このような場合、プロセッサは、不適切な命令セット復号を用いるアドレスの命令を実行するように試み、間違った結果を招くことがある。
例えば、ARMプロセッサアーキテクチャのいくつかのバージョンは、32ビットARMモードと16ビットThumbモードとの少なくとも2つの命令セット動作モードを含む。表1は、ARM命令のコード断片のリストである。
Figure 2010500661
表2は、Thumbモードにおいて解釈される同じコードのリストである。
Figure 2010500661
特に、96F2、96FA、及び96FEの分岐命令に注目されたい。表1のARMコードがエラーによって表2のThumbモードで解釈された時点を確定し、エラーをデバッグすることが、不規則な分岐のために難しくなりうる。従来技術のデバッグ回路は、ブレークポイントのトリガ、追跡の開始等を行う論理への入力としてプロセッサ命令セット動作モードを含まないために、この難しさが発生する。
例えばスーパーバイザモード及びユーザモード、又はリアルモード及びプロテクトモードのような2つ又はそれ以上の動作「モード」をサポートする昨今のプロセッサは、例外を引き起こすことと、モード切換えルーチンへ分岐することとによって、モード間で切り換わる。この動作は、ブレークポイントを設定すること及びモード切換えルーチンの命令アドレスで追跡を開始することによって、従来技術のデバッグツール及びソフトウェアを用いて容易に検出される。例外を引き起こさずに命令セット動作モードを切り換えるプロセッサは、ブレークポイントのトリガ、追跡の開始等における要件として、プロセッサ命令セット動作モードを含まない先行技術のデバッグツールを用いて診断することが難しいコード挙動の1つの例である。
1つ又は複数の実施形態によると、2つ又はそれ以上の命令セットを実行するように動作するプロセッサ内のデバッグ回路は、プロセッサが1つの命令セット動作モードから異なる命令セット動作モードへ切り換わるアドレスを特定し、モード切換えの警告又はインジケーションを出力する。警告又はインジケーションは、実行を停止するブレークポイント信号、及び/又は、プロセッサの外部信号として出力される信号を備えることができる。プロセッサが命令セット動作モードを切り換える命令アドレスが更に出力されうる。あるいは、警告又はインジケーションは、追跡動作の開始又は停止すること、例外を引き起こすこと、又はその他任意の周知のデバッガ機能を備えることができる。
1つの実施形態は、少なくとも2つの異なる命令セット動作モードを有するプロセッサ上で、複数の命令を備えるソフトウェアコードをデバッグする方法に関する。任意のコード命令の実行前に、ターゲット命令セット動作モードが受け取られる。コード命令が実行され、実行された各命令について、カレントプロセッサ命令セット動作モードとターゲット命令セット動作モードとが比較される。もしカレントプロセッサ命令セット動作モードが、ターゲット命令セット動作モードと一致すれば、警告がトリガされる。
別の実施形態は、少なくとも第1及び第2の命令セット動作モードを有するプロセッサ上で、ソフトウェアを実行する方法に関する。プロセッサが、第1の命令セット動作モードから第2の命令セット動作モードへ切り換わるアドレスが特定され、インジケーションに応答して警告がトリガされる。
また別の実施形態は、各々が異なる命令セット動作モードにある2つ又はそれ以上の命令セット符号化に従って命令を実行するように動作するプロセッサに関する。プロセッサは、カレント命令セット動作モードインジケータと、ターゲット命令セット動作モードインジケータを格納するように動作するデータ記憶場所とを含む。プロセッサはまた、カレント命令セット動作モードに従って命令を実行するように動作する実行ユニットと、各命令の実行中、カレント命令セット動作モードとターゲット命令セット動作モードとを比較し、もしカレント命令セット動作モードがターゲット命令セット動作モードに一致すれば、インジケーションを出力するように動作する比較回路とを含む。
また別の実施形態は、各々が異なる命令セット動作モードにある2つ又はそれ以上の命令セット符号化を実行するように動作するプロセッサに関する。プロセッサは、命令セット動作モードにおける変更を検出し、検出に応答して、命令セット動作モード変更のインジケーションと、変更が発生する命令アドレスとを出力するように動作する比較回路を備える。
図1は、プロセッサの機能ブロック図である。 図2は、デバッグ回路を含むプロセッサパイプラインの機能ブロック図である。 図3は、診断/デバッグ処理のフロー図である。
発明を実施する形態
図1は、プロセッサ10の機能ブロック図を示す。プロセッサ10は、制御論理14に従って、命令実行パイプライン12内で命令を実行する。制御論理14は、プログラムカウンタ(PC)15を保持し、例えばカレント命令セット動作モード、算術演算及び論理比較の結果(ゼロ、桁上げ、イコール、イコールでない)に関する情報等を示すために、1つ又は複数の状態レジスタ16内のビットを設定及び消去する。いくつかの実施形態において、パイプライン12は、複数の並行するパイプラインを有するスーパースカラ設計であることができる。パイプライン12は、実行ユニットとも称されうる。汎用レジスタ(GPR)ファイル20は、パイプライン12によってアクセス可能であり、メモリ階層の最上層を備えるレジスタを提供する。
異なる命令セット動作モードで、少なくとも2つの命令セットからの命令を実行するプロセッサ10は更に、各命令を実行すると、少なくとも予め定められたターゲット命令セット動作モードと、カレント命令セット動作モードとを比較し、2つの間の一致を示すインジケーションを提供するように動作するデバッグ回路18を含む。デバッグ回路18は、以下でより詳細に説明される。
パイプライン12は、命令側変換索引バッファ(ITLB)28によって管理されるメモリアドレス変換及び許可を用いて、命令キャッシュ(Iキャッシュ)26から命令をフェッチする。データは、主要変換索引バッファ(TLB)32によって管理されるメモリアドレス変換及び許可を用いて、データキャッシュ(Dキャッシュ)30からアクセスされる。様々な実施形態において、ITLB28は、TLB32の一部のコピーを備えることができる。あるいは、ITLB28とTLB32とは統合することができる。同様に、プロセッサ10の様々な実施形態において、Iキャッシュ26とDキャッシュ30とは、統合又は一体化することができる。Iキャッシュ26及び/又はDキャッシュ30内のミスは、メモリインタフェース34による主要(オフチップ)メモリ38、40へのアクセスをもたらす。メモリインタフェース34は、1つ又は複数のメモリデバイス38、40への共有バスを実現するバス相互接続42へのマスタ入力であることができる。追加のマスタデバイス(図示せず)が、バス相互接続42へ更に接続することができる。
プロセッサ10は、周辺バスにおけるマスタデバイスであることができる、入力/出力(I/O)インタフェース44を含むことができる。I/Oインタフェース44は、その周辺デバイスを介して様々な周辺デバイス48、50へアクセスすることができる。当業者は、プロセッサ10の多くの変形例が可能であることを理解するであろう。例えばプロセッサ10は、Iキャッシュ26及びDキャッシュ30の何れか又は両方のための第2レベル(L2)キャッシュを含むことができる。加えて、プロセッサ10内に示す機能ブロックのうちの1つ又は複数は、特定の実施形態から省略することができる。例えばJTAGコントローラ、命令プレデコーダ、分岐ターゲットアドレスキャッシュ等のような、プロセッサ10内に存在しうる他の機能ブロックは、本発明の説明に密接な関係はないので明確化のために省略する。
図2は、デバッグ回路18の1つの実施形態の機能ブロック図を示す。デバッグ回路18は、ターゲット命令セット動作モードレジスタ52と、アドレス範囲開始アドレスレジスタ54と、アドレス範囲終了アドレスレジスタ56とを含む。レジスタ52、54、56は、診断/デバッグ動作の前に、診断ソフトウェアを経由して、プログラマによってロードされる。ターゲット命令セット動作モードレジスタ52へ書き込まれた値は、各命令の実行中、ブレークポイント、追跡機能、又はその他の警告をトリガするために、カレントプロセッサ命令セット動作モードと比較される。開始アドレスレジスタ54及び終了アドレスレジスタ56の値はそれぞれ、ターゲットアドレス範囲の始まりと終わりである。このターゲットアドレス範囲にわたって、デバッグ回路18は、カレント命令セット動作モードとターゲット命令セット動作モードとの間の一致をモニタする。
当業者が容易に理解するであろうように、デバッグ回路18は、広範囲の様々な条件でブレークポイント、追跡等をトリガすることを可能とする追加のカスタマイズ可能なパラメータ及び追加の機能ブロックを含むことができる。これらは、明確化のために図2からは省略されたが、一般に、当該技術において周知である全てのデバッグ回路パラメータ及び機能を含むことができる。
診断/デバッグ実行前に、プログラマは、ターゲットアドレス領域を定めるために、開始アドレスレジスタ54及び終了アドレスレジスタ56をロードする。ターゲットアドレス領域は、単一のアドレスから、試験されているコードのアドレス範囲全体までであることができる。他の実施形態において、複数のターゲットアドレス範囲を定めるために、多くの開始アドレスレジスタ及び終了アドレスレジスタが提供されうる。プログラマは更に、ターゲット命令セット動作モードレジスタ52をロードする。例えば、ARMモードでコード全体を実行するARMプロセッサの場合、例えばもしプロセッサ10が、Thumbモードのレジスタ54、56によって定められたアドレス範囲内の命令で実行すれば、プログラマは、Thumbモードを示す値をレジスタ52にロードし、デバッグ回路18に実行を停止させるブレークポイントを設定することができる。
診断/デバッグ動作中、ターゲット命令セット動作モードレジスタ52内に格納された値は、例えばANDゲート58のような比較論理において、プロセッサ10のカレント命令セット動作モードを示す状態レジスタビットと比較される。例えば、ARMプロセッサ10では、カレントプログラム状態レジスタ(CPSR)16のビット5をモニタすることができる。比較論理58の出力60は、プロセッサ10のカレント命令セット動作モードが、ターゲット命令セット動作モードレジスタ52によって示された命令セット動作モードと一致した場合のみ、アサートされるであろう。
プロセッサ10が、2つより多くの命令セットからの命令を異なる命令セット動作モードで実行する実施形態において、ターゲット命令セット動作モードレジスタ52と、CPSR(又は他の状態レジスタ)16のモードインジケータビットとは、マルチビット値を備え、比較論理58は、例えば復号器のような追加の回路を含むことができる。様々な実施形態において、CPSR16の代わりに、例えば命令復号論理の出力のような、カレント命令セット動作モードの他のインジケーションを用いることができる。
同時に、PC15のカレント値は、アドレス比較論理68で、アドレス範囲レジスタ54、56と比較される。アドレス比較論理68の出力70は、PC15のカレント値がターゲットアドレス範囲内にある場合常にアサートされる。様々な実施形態において、「カレント」命令アドレスのインジケーションは、要求や所望に応じて、PC15から変化することができる。例えば、アドレス比較回路68は、パイプライン12内の復号ステージ、実行ステージ、又はその他任意のパイプラインステージ内の命令のアドレスを比較することができる。加えて、実行を完遂するために、例えばパイプライン12内の最後の命令のアドレスのような、より動的なアドレスを用いることもできる。
ターゲットアドレス範囲内で発生した、カレント命令セット動作モードとターゲット命令セット動作モードとの間のデイ一致を示す出力20を生成するために、アドレス比較論理68の出力70は、ANDゲート72で、命令セット動作モードインジケータ比較論理58の出力60とANDされる。1つの実施形態において、出力20は、プロセッサへの出力として提供される(図1参照)。この出力20は、論理解析器をアーム及び/又はトリガしたり、LEDを点灯したり、あるいはその他何らかの動作又は警告をトリガすることができる。1つの実施形態において、図1に示すように、命令セット動作モード一致インジケータ出力20は、プロセッサ10の実行を停止するための、コントローラ14への入力を備えることができる。
1つの実施形態において、命令セット動作モード一致インジケータ出力20は、追跡情報がプロセッサ10の出力ピンに向けられることによって、あるいはオンチップ追跡バッファ(図示せず)内に格納されることによって、命令追跡動作を初期化又は終了することができる。1つの実施形態において、図2に示すように、命令セット動作モード一致インジケータ出力20は、命令セット動作モード一致アドレスレジスタ74をトリガし、PC15の値を取得することができる。それによって、一致することができる命令のアドレスが、カレント命令セット動作モードとターゲット命令セット動作モードとの間で検出される。これは、1つの命令セット動作モードから別の命令セット動作モードへの変更の検出における特定の値となりうる。このレジスタ74の出力76は、外部検査のために、プロセッサ10のピンにルーティングされることができる。
1つの実施形態において、命令セット動作モード一致インジケータ出力20は、例外を引き起こし、コード実行を予め定められたルーチンへ分岐する。この命令セットモード一致ルーチンは、例えば、命令セット動作モード一致アドレスレジスタ74を読み出すことができる。一般に、命令セット動作モード一致インジケータ出力20は、要求や所望に応じて、任意の周知のデバッガ動作をトリガすることができる。
図3は、本発明の1つ又は複数の実施形態に従って、コードをデバッグする方法を示す。この方法はブロック78から始まり、プログラマは、デバッグ回路レジスタを初期化する(ブロック80)。これは例えば、ターゲット命令セット動作モードレジスタ52をロードすることと、開始アドレスレジスタ54及び終了アドレスレジスタ56をロードすることによってターゲットアドレス範囲を設定することとを備えることができる。要求や所望に応じて、追加のデバッグ回路レジスタ(図示せず)を初期化することもできる。
プログラマはその後、デバッグされるべきコードの実行を開始し(ブロック82)、連続してコードシーケンスで、次の命令をフェッチ及び実行する(ブロック84)。アドレスに関わらず、もしプロセッサ10のカレント命令セット動作モードが、ターゲット命令セット動作モードレジスタ52内のプログラマによって設定されたモードと一致しなければ(ブロック86)、ブロックされるべきコードの末尾(ブロック88)まで、次の命令がフェッチされ実行される(ブロック84)が、その場合、ブロック90でこの方法は終了する。
命令の実行中(ブロック84)、もし命令アドレスが予め定められたアドレス範囲内であって、かつカレント命令セット動作モードが、ターゲット命令セット動作モードレジスタ52内のプログラマによって設定されたモードと一致すれば(ブロック86)、デバッグ回路は出力20をアサートし、プログラマによって指定されたように、任意の数の動作をすることができる。
例えば、デバッグ回路出力20は、プロセッサ10に、例外を選択させ、コード実行を命令セット動作モード一致ルーチンへ分岐させることができる(ブロック92)。デバッグ回路出力20は、パイプラインコントローラ14に実行を停止させることができ(ブロック94)、プログラマが、様々なレジスタ、キャッシュライン等のコンテンツを検査することを可能とする。デバッグ回路18は、論理解析器のアーム又はトリガ、LEDの点灯等のために用いられうる出力20を外部でアサートすることができる(ブロック96)。デバッグ回路18は、外部検査のために、命令セット動作モード一致アドレスを更に出力することができる(ブロック98)。デバッグ回路18は、追跡動作を開始又は停止することができる(ブロック100)。代替例として示すが、デバッグ回路18は、与えられた実施形態において、2つ又はそれ以上のブロック92乃至96を実行することができる。一般に、デバッグ回路18は、カレント命令セット動作モードとターゲット命令セット動作モードとの間の一致を検出させ、プロセッサ10でコードをデバッグするために有益な、当該技術において周知の任意の動作をすることができる。
本明細書で用いられるように、「命令セット」という用語は、それによって命令データ(例えばIキャッシュラインのコンテンツ)が、プロセッサ10によって実行可能命令として解釈される符号化のセットを称する。「命令セット動作モード」という用語は、命令データが特定の命令セット符号化に従って解釈される、プロセッサ10の動作の識別可能モードを称する。特に、「命令セット動作モード」は、許可(例えばスーパーバイザ対ユーザモード)、メモリアドレッシング(例えばリアル対プロテクトモード)等に関する周知のプロセッサ動作「モード」とは区別される。
本発明は、本明細書で、特定の機能、局面、及び実施形態に関して説明されたが、多くの変形例、改良例、及びその他の実施形態が、本発明の広い範囲内で可能であることが明白であろう。従って、全ての変形例、改良例、及び実施形態は、本発明の範囲内であると見なされるべきである。上記の実施形態はゆえに、全ての局面において限定的ではなく例示的であると解釈され、添付の特許請求の範囲の意味及び均等物の範囲内で発生する変更は、特許請求の範囲に包括されることが意図されている。

Claims (28)

  1. 少なくとも2つの異なる命令セット動作モードを有するプロセッサ上で、複数の命令を備えるソフトウェアコードをデバッグする方法であって、
    任意のコード命令の実行前に、ターゲット命令セット動作モードを受け取ることと、
    コード命令を実行し、実行された各命令について、カレントプロセッサ命令セット動作モードと、前記ターゲット命令セット動作モードとを比較することと、
    前記カレントプロセッサ命令セット動作モードと、前記ターゲット命令セット動作モードとが一致した場合、警告をトリガすることと
    を備える方法。
  2. 請求項1に記載の方法において、
    前記警告は、命令実行を停止することを備える方法。
  3. 請求項1に記載の方法において、
    前記警告は、追跡動作を制御することを備える方法。
  4. 請求項1に記載の方法において、
    前記警告は、例外を引き起こすことを備える方法。
  5. 請求項1に記載の方法において、
    前記警告は、前記カレントプロセッサ命令セット動作モードと、前記ターゲット命令セット動作モードとの間の一致を示す信号を出力することを備える方法。
  6. 請求項1に記載の方法において、
    前記警告は、前記カレントプロセッサ命令セット動作モードが前記ターゲット命令セット動作モードと一致する命令のアドレスを出力することを備える方法。
  7. 請求項1に記載の方法において、
    任意のコード命令の実行前に、ターゲットアドレス範囲を受け取ることと、
    実行された各命令について、カレント命令アドレスと、前記ターゲットアドレス範囲とを比較することと、
    前記カレントプロセッサ命令セット動作モードが前記ターゲット命令セット動作モードと一致し、前記カレント命令アドレスが前記ターゲットアドレス範囲内である場合のみ、前記警告をトリガすることと
    を更に備える方法。
  8. 少なくとも第1及び第2の命令セット動作モードを有するプロセッサ上でソフトウェアを実行する方法であって、
    前記プロセッサが、前記第1の命令セット動作モードから前記第2の命令セット動作モードへ切り換わるアドレスを特定することと、
    前記特定に応答して警告をトリガすることと
    を備える方法。
  9. 請求項8に記載の方法において、
    前記警告は、命令実行を停止することを備える方法。
  10. 請求項8に記載の方法において、
    前記警告は、追跡動作を制御することを備える方法。
  11. 請求項8に記載の方法において、
    前記警告は、例外を引き起こすことを備える方法。
  12. 請求項8に記載の方法において、
    前記警告は、命令セット動作モードにおける変更を示す信号を出力することを備える方法。
  13. 請求項8に記載の方法において、
    前記警告は、特定された前記命令のアドレスを出力することを備える方法。
  14. 請求項8に記載の方法において、
    前記プロセッサが、前記第1の命令セット動作モードから前記第2の命令セット動作モードへ切り換わるアドレスを特定することは、前記アドレスが予め定められたアドレス範囲内にあった場合のみ、前記アドレスを特定することを備える方法。
  15. 各々が異なる命令セット動作モードにある2つ又はそれ以上の命令セット符号化に従って命令を実行するように動作するプロセッサであって、
    カレント命令セット動作モードインジケータと、
    ターゲット命令セット動作モードインジケータを格納するように動作するデータ記憶場所と、
    カレント命令セット動作モードに従って命令を実行するように動作する実行ユニットと、
    各命令の実行中、前記カレント命令セット動作モードと前記ターゲット命令セット動作モードとを比較し、前記カレント命令セット動作モードが前記ターゲット命令セット動作モードと一致する場合、インジケーションを出力するように動作する比較回路と
    を備えるプロセッサ。
  16. 請求項15に記載のプロセッサにおいて、
    前記インジケーションは、命令実行を停止するように動作する信号を備えるプロセッサ。
  17. 請求項15に記載のプロセッサにおいて、
    前記インジケーションは、追跡動作を制御するように動作する信号を備えるプロセッサ。
  18. 請求項15に記載のプロセッサにおいて、
    前記インジケーションは、例外を引き起こすように動作する信号を備えるプロセッサ。
  19. 請求項15に記載のプロセッサにおいて、
    前記インジケーションは、前記カレント命令セット動作モードが、前記ターゲット命令セット動作モードと一致することを示す信号を備えるプロセッサ。
  20. 請求項15に記載のプロセッサにおいて、
    前記インジケーションは、前記カレント命令セット動作モードと前記ターゲット命令セット動作モードとの間で一致が検出された場合、実行中の命令のアドレスを備えるプロセッサ。
  21. 請求項15に記載のプロセッサにおいて、
    ターゲットアドレス範囲を格納するように動作するデータ記憶場所を更に備え、
    前記比較回路は、前記カレント命令セット動作モードが前記ターゲット命令セット動作モードと一致し、かつ現在実行されている命令のアドレスが前記ターゲットアドレス範囲内にある場合のみ、インジケーションを出力するように動作するプロセッサ。
  22. 2つ又はそれ以上の命令セット符号化の各々を、異なる命令セット動作モードで実行するように動作するプロセッサであって、
    前記命令セット動作モードにおける変更を検出し、前記検出に応答して、前記命令セット動作モードの変更と、前記変更が起こった命令アドレスとのインジケーションを出力するように動作する比較回路
    を備えるプロセッサ。
  23. 請求項22に記載のプロセッサにおいて、
    前記インジケーションは、命令実行を停止するように動作する信号を備えるプロセッサ。
  24. 請求項22に記載のプロセッサにおいて、
    前記インジケーションは、追跡動作を制御するように動作する信号を備えるプロセッサ。
  25. 請求項22に記載のプロセッサにおいて、
    前記インジケーションは、例外を引き起こすように動作する信号を備えるプロセッサ。
  26. 請求項22に記載のプロセッサにおいて、
    前記インジケーションは、命令セット動作モードにおける変更を示す信号を備えるプロセッサ。
  27. 請求項22に記載のプロセッサにおいて、
    前記インジケーションは、前記命令セット動作モード変更アドレスを備えるプロセッサ。
  28. 請求項22に記載のプロセッサにおいて、
    前記比較回路は、前記変更が起こった命令アドレスが、予め定められたアドレス範囲内にある場合のみ、前記命令セット動作モードにおける変更を検出するプロセッサ。
JP2009523924A 2006-08-09 2007-08-03 プロセッサ命令セット動作モードを比較するデバッグ回路 Active JP5546859B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/463,379 2006-08-09
US11/463,379 US8352713B2 (en) 2006-08-09 2006-08-09 Debug circuit comparing processor instruction set operating mode
PCT/US2007/075194 WO2008021763A1 (en) 2006-08-09 2007-08-03 Debug circuit comparing processor instruction set operating mode

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012227313A Division JP5788370B2 (ja) 2006-08-09 2012-10-12 プロセッサ命令セット動作モードを比較するデバッグ回路

Publications (2)

Publication Number Publication Date
JP2010500661A true JP2010500661A (ja) 2010-01-07
JP5546859B2 JP5546859B2 (ja) 2014-07-09

Family

ID=38891045

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2009523924A Active JP5546859B2 (ja) 2006-08-09 2007-08-03 プロセッサ命令セット動作モードを比較するデバッグ回路
JP2012227313A Active JP5788370B2 (ja) 2006-08-09 2012-10-12 プロセッサ命令セット動作モードを比較するデバッグ回路

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2012227313A Active JP5788370B2 (ja) 2006-08-09 2012-10-12 プロセッサ命令セット動作モードを比較するデバッグ回路

Country Status (13)

Country Link
US (1) US8352713B2 (ja)
EP (2) EP3009936A1 (ja)
JP (2) JP5546859B2 (ja)
KR (1) KR101019278B1 (ja)
CN (2) CN106909501B (ja)
BR (1) BRPI0715163B1 (ja)
CA (1) CA2658829C (ja)
ES (1) ES2588185T3 (ja)
HU (1) HUE029441T2 (ja)
IN (1) IN2014MN01895A (ja)
MX (1) MX2009001458A (ja)
RU (1) RU2429525C2 (ja)
WO (1) WO2008021763A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013539574A (ja) * 2010-08-11 2013-10-24 アーム・リミテッド 不正なモード変更の操作
JP2013542499A (ja) * 2010-09-24 2013-11-21 アーム・リミテッド データ処理装置のデバッグ処理
JP2014085859A (ja) * 2012-10-24 2014-05-12 Renesas Electronics Corp 半導体集積回路装置

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2864655B1 (fr) * 2003-12-31 2006-03-24 Trusted Logic Procede de controle d'integrite de programmes par verification d'empreintes de traces d'execution
US7555605B2 (en) * 2006-09-28 2009-06-30 Freescale Semiconductor, Inc. Data processing system having cache memory debugging support and method therefor
US20080162900A1 (en) * 2006-12-29 2008-07-03 Andre Rolfsmeier System, Method and Apparatus for Observing a Control Device
CN101777021B (zh) * 2010-01-21 2012-07-04 龙芯中科技术有限公司 微处理器中精确数据断点的实现装置及其方法
US9639451B2 (en) 2010-01-25 2017-05-02 Nxp Usa, Inc. Debugger system, method and computer program product for utilizing hardware breakpoints for debugging instructions
US8914615B2 (en) 2011-12-02 2014-12-16 Arm Limited Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format
WO2013142948A1 (en) * 2012-03-30 2013-10-03 Irdeto Canada Corporation Method and system for preventing and detecting security threats
KR102013582B1 (ko) 2012-09-07 2019-08-23 삼성전자 주식회사 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법
US9268563B2 (en) * 2012-11-12 2016-02-23 International Business Machines Corporation Verification of a vector execution unit design
RU2635044C2 (ru) * 2013-06-27 2017-11-08 Интел Корпорейшн Режим слежения в устройстве обработки в системах трассировки команд
GB2527088B (en) * 2014-06-11 2021-07-14 Advanced Risc Mach Ltd Executing debug program instructions on a target apparatus processing pipeline
US9626267B2 (en) * 2015-01-30 2017-04-18 International Business Machines Corporation Test generation using expected mode of the target hardware device
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US11269640B2 (en) * 2017-02-13 2022-03-08 Qualcomm Incorporated Speculative transitions among modes with different privilege levels in a block-based microarchitecture
US10169196B2 (en) * 2017-03-20 2019-01-01 Microsoft Technology Licensing, Llc Enabling breakpoints on entire data structures
US10534881B2 (en) * 2018-04-10 2020-01-14 Advanced Micro Devices, Inc. Method of debugging a processor
US10740220B2 (en) * 2018-06-27 2020-08-11 Microsoft Technology Licensing, Llc Cache-based trace replay breakpoints using reserved tag field bits
US11468199B2 (en) 2020-07-22 2022-10-11 Apple Inc. Authenticated debug for computing systems
US12020062B2 (en) 2020-10-20 2024-06-25 Micron Technology, Inc. Method of executing programmable atomic unit resources within a multi-process system
US11586439B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Detecting infinite loops in a programmable atomic transaction
US11436187B2 (en) * 2020-10-20 2022-09-06 Micron Technology, Inc. Method of notifying a process or programmable atomic operation traps
CN113127285B (zh) * 2021-06-17 2021-10-08 北京燧原智能科技有限公司 一种错误数据调试方法、装置、芯片及计算机设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06202907A (ja) * 1993-01-06 1994-07-22 Hitachi Ltd デバッグ支援装置
JP2002304291A (ja) * 2001-02-26 2002-10-18 Arm Ltd 命令セットの情報を格納するための装置及び方法
JP2003256237A (ja) * 2002-02-27 2003-09-10 Toshiba Corp 割り込み発生装置、割り込み発生方法および割り込み発生プログラム
US20060149927A1 (en) * 2002-11-26 2006-07-06 Eran Dagan Processor capable of multi-threaded execution of a plurality of instruction-sets

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US6408386B1 (en) * 1995-06-07 2002-06-18 Intel Corporation Method and apparatus for providing event handling functionality in a computer system
US5774686A (en) * 1995-06-07 1998-06-30 Intel Corporation Method and apparatus for providing two system architectures in a processor
US5680620A (en) * 1995-06-30 1997-10-21 Dell Usa, L.P. System and method for detecting access to a peripheral device using a debug register
JP3623840B2 (ja) * 1996-01-31 2005-02-23 株式会社ルネサステクノロジ データ処理装置及びマイクロプロセッサ
US5963737A (en) * 1996-04-18 1999-10-05 International Business Machines Corporation Interupt vectoring for trace exception facility in computer systems
DE19701166A1 (de) * 1997-01-15 1998-07-23 Siemens Ag Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
JPH11338710A (ja) * 1998-05-28 1999-12-10 Toshiba Corp 複数種の命令セットを持つプロセッサのためのコンパイル方法ならびに装置および同方法がプログラムされ記録される記録媒体
US6480818B1 (en) * 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6430674B1 (en) * 1998-12-30 2002-08-06 Intel Corporation Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time
US7013456B1 (en) * 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US7065633B1 (en) * 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6826748B1 (en) * 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6446197B1 (en) * 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6449712B1 (en) * 1999-10-01 2002-09-10 Hitachi, Ltd. Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions
US7793261B1 (en) * 1999-10-01 2010-09-07 Stmicroelectronics Limited Interface for transferring debug information
US6609247B1 (en) * 2000-02-18 2003-08-19 Hewlett-Packard Development Company Method and apparatus for re-creating the trace of an emulated instruction set when executed on hardware native to a different instruction set field
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US6760864B2 (en) * 2001-02-21 2004-07-06 Freescale Semiconductor, Inc. Data processing system with on-chip FIFO for storing debug information and method therefor
US6901583B1 (en) * 2001-07-19 2005-05-31 Hewlett-Packard Development Company, L.P. Method for testing of a software emulator while executing the software emulator on a target machine architecture
US7865948B1 (en) * 2001-12-03 2011-01-04 Advanced Micro Devices, Inc. Method and apparatus for restricted execution of security sensitive instructions
US7017030B2 (en) * 2002-02-20 2006-03-21 Arm Limited Prediction of instructions in a data processing apparatus
GB0225649D0 (en) * 2002-11-04 2002-12-11 Transitive Technologies Ltd Incremental validation
CN1216327C (zh) * 2003-05-15 2005-08-24 复旦大学 采用双指令集的32位嵌入式微处理器
EP1628235A1 (en) * 2004-07-01 2006-02-22 Texas Instruments Incorporated Method and system of ensuring integrity of a secure mode entry sequence
US7958335B2 (en) * 2005-08-05 2011-06-07 Arm Limited Multiple instruction set decoding
US7757221B2 (en) * 2005-09-30 2010-07-13 Intel Corporation Apparatus and method for dynamic binary translator to support precise exceptions with minimal optimization constraints

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06202907A (ja) * 1993-01-06 1994-07-22 Hitachi Ltd デバッグ支援装置
JP2002304291A (ja) * 2001-02-26 2002-10-18 Arm Ltd 命令セットの情報を格納するための装置及び方法
JP2003256237A (ja) * 2002-02-27 2003-09-10 Toshiba Corp 割り込み発生装置、割り込み発生方法および割り込み発生プログラム
US20060149927A1 (en) * 2002-11-26 2006-07-06 Eran Dagan Processor capable of multi-threaded execution of a plurality of instruction-sets

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013539574A (ja) * 2010-08-11 2013-10-24 アーム・リミテッド 不正なモード変更の操作
US8959318B2 (en) 2010-08-11 2015-02-17 Arm Limited Illegal mode change handling
JP2013542499A (ja) * 2010-09-24 2013-11-21 アーム・リミテッド データ処理装置のデバッグ処理
JP2014085859A (ja) * 2012-10-24 2014-05-12 Renesas Electronics Corp 半導体集積回路装置

Also Published As

Publication number Publication date
CN101501650A (zh) 2009-08-05
CN101501650B (zh) 2016-12-07
CN106909501B (zh) 2021-02-05
EP2054808A1 (en) 2009-05-06
US20080040587A1 (en) 2008-02-14
CA2658829C (en) 2016-01-05
WO2008021763A1 (en) 2008-02-21
HUE029441T2 (en) 2017-02-28
JP5546859B2 (ja) 2014-07-09
KR101019278B1 (ko) 2011-03-07
RU2009108321A (ru) 2010-09-20
MX2009001458A (es) 2009-02-19
EP2054808B1 (en) 2016-05-25
BRPI0715163A2 (pt) 2013-06-11
BRPI0715163B1 (pt) 2023-05-09
KR20090051205A (ko) 2009-05-21
ES2588185T3 (es) 2016-10-31
CN106909501A (zh) 2017-06-30
JP5788370B2 (ja) 2015-09-30
IN2014MN01895A (ja) 2015-07-10
CA2658829A1 (en) 2008-02-21
EP3009936A1 (en) 2016-04-20
US8352713B2 (en) 2013-01-08
JP2013058217A (ja) 2013-03-28
RU2429525C2 (ru) 2011-09-20

Similar Documents

Publication Publication Date Title
JP5546859B2 (ja) プロセッサ命令セット動作モードを比較するデバッグ回路
US8261047B2 (en) Qualification of conditional debug instructions based on address
US6754856B2 (en) Memory access debug facility
JP5905911B2 (ja) シングルステップ実行を用いる診断コード
US20040030870A1 (en) Software breakpoints with tailoring for multiple processor shared memory or multiple thread systems
GB2413657A (en) Breakpoint logic unit, debug logic and breakpoint method for a data processing apparatus
US10795685B2 (en) Operating a pipeline flattener in order to track instructions for complex
US11625316B2 (en) Checksum generation
JP2646957B2 (ja) キャッシュ内蔵マイクロプロセッサ及びそのトレースシステム
Vranken Debug facilities in the TriMedia CPU64 architecture
Zhou et al. A. Summary of the Work

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110906

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111206

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120106

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120612

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140514

R150 Certificate of patent or registration of utility model

Ref document number: 5546859

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250