JP3766035B2 - 命令セットの情報を格納するための装置及び方法 - Google Patents

命令セットの情報を格納するための装置及び方法 Download PDF

Info

Publication number
JP3766035B2
JP3766035B2 JP2002100620A JP2002100620A JP3766035B2 JP 3766035 B2 JP3766035 B2 JP 3766035B2 JP 2002100620 A JP2002100620 A JP 2002100620A JP 2002100620 A JP2002100620 A JP 2002100620A JP 3766035 B2 JP3766035 B2 JP 3766035B2
Authority
JP
Japan
Prior art keywords
instruction
bit
instruction address
address
bits
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.)
Expired - Lifetime
Application number
JP2002100620A
Other languages
English (en)
Other versions
JP2002304291A (ja
Inventor
ブルックフィールド スウェイン アンドリュー
Original Assignee
エイアールエム リミテッド
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
Priority claimed from US09/792,643 external-priority patent/US7020768B2/en
Application filed by エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2002304291A publication Critical patent/JP2002304291A/ja
Application granted granted Critical
Publication of JP3766035B2 publication Critical patent/JP3766035B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)

Description

【0001】
【発明の属する技術分野】
本発明はデータ処理装置に関する。特に、本発明は命令セットの情報を格納するデータ処理装置および方法に関する。
【0002】
【従来の技術】
データ処理装置にはいくつかの異なる命令セットからの処理命令を実行することができる処理回路を設けることができる。処理回路により実施される処理を追跡し続けることが望ましいいくつかの状況があり、このような状況では任意の時点においてどの命令セットが使用されているを識別できることが望ましいことがある。例えば、このような情報は、処理回路のアクティビティ(活動)を追跡することがしばしば望ましい、データ処理システムの開発中に有用である。このようなプロセスをアシストするのに使用することができるツールの例はトレーシングツールである。
【0003】
データ処理システムのアクティビティを追跡するとシステム内のステップ毎のアクティビティを表わすデータを含むトレースストリームが発生されてシステム開発における非常に有用なツールとなる。しかしながら、より深いく埋め込まれたプロセッサコアへ向かう一般的な動きにより、外部アクセス可能ピンを介してプロセッサの状態を追跡することが一層困難となる。したがって、トレースデータを捕捉して解析するオフチップトレーシング機構だけでなく、増量されたトレーシング機能がオンチップ配置されている。このようなオンチップトレーシング機構の例はARM7およびARM9プロセッサと関連した英国、キャンブリッジ、ARM社から提供される埋込トレースマクロセルである。
【0004】
このようなトレーシング機構はトレースしたいデータ処理システムのアクティビティを表わすデータのトレースストリームをリアルタイムで作り出す。次に、このトレースストリームを使用してデータ処理システムにより実行される処理命令系列のデバッギングを容易にすることができる。
【0005】
特定のレジスタ、アドレスまたはデータ値にアクセスしたらトレーシングの開始または停止等のトレーシングおよびデバッギング操作を制御するように働くトリガポイントを取り入れるトレーシングおよびデバッギング機構を提供することが知られている。このような機構はシステムの特定部分または動作のタイプを診断するのに非常に有用である。例として、特定のシステムバグが例外動作に関連しておれば、本当に必要なものが適切な例外処理ベクトルへアクセスした時にトリガーされる例外動作のトレーシングである時に、システムの全操作のトレーシングにより不便なほど大量のデータが作り出される。
【0006】
新しいシステムの開発時間を短縮することも望ましいがデータ処理システムは複雑さが増すため、データ処理システムの開発中に使用することができるデバッグおよびトレーシングツールおよび機構を改善する必要性がある。
【0007】
処理回路がいくつかの異なる命令セットのいずれかからの処理命令を実行することができる状況では、トレーシング機構はその命令セット情報も追跡し続けることが望ましい。しかしながら、可能であれば常にトレースする必要があるデータ量を低減することも望ましい。
【0008】
【発明が解決しようとする課題】
したがって、このような命令セット情報を格納するための効率的な技術を提供することが本発明の目的である。
【0009】
【課題を解決するための手段】
第1の側面から見て、本発明はデータ処理装置を提供し、前記装置は各処理命令がメモリ内のその処理命令の場所を識別する命令アドレスにより指定される処理命令の複数のセットのいずれかからの処理命令を実行する処理回路であって、異なる命令セット内の処理命令に対する命令アドレス内に異なる命令アドレスビット数を指定する必要がある処理回路と、その命令に対応する命令セットの表示を有する命令アドレスを符号化してn−ビット符号化命令アドレスを発生する符号化論理とを含み、符号化論理は指定された命令アドレスビットへビットパターンをプリペンディング(prepending)することにより指定された命令アドレスビットをn−ビットへ拡張するのと等価の計算を実施することにより符号化を実施するようにされており、プリペンドされるビットパターンはその命令に対応する命令セットによって決まる。
【0010】
本発明に従って、複数の命令セットを処理回路により使用できる状況では、しばしば異なる命令セット内の命令に対して命令アドレス内で異なる命令アドレスビット数を指定する必要があることが知られている。本発明はこれを利用して命令アドレスを有する命令セット情報の効率的な符号化を可能にするものである。
【0011】
特に、指定された命令アドレスビットへビットパターンをプリペンドすることにより指定された命令アドレスビットをn−ビットへ拡張するのと等価の計算を実施することによりn−ビット符号化命令アドレスを発生する符号化論理が提供され、プリペンドされるビットパターンはその命令に対応する命令セットによって決まる。
【0012】
例として、命令アドレスが32ビットにより指定される状況を考える。第1の命令セットに対して、命令はメモリ内の任意のビット位置で開始することができ、したがって、この命令セットに関連する命令アドレスに対しては32ビットを全て指定する必要がある。しかしながら、第2の命令セットに対しては、命令はメモリ内の利用できる全ての場所のサブセット、例えば、一つおきのビット位置で開始するよう制約されることがある。同様に、第3の命令セットは命令をメモリ内のどこに、例えば、3ビット位置おきに配置できるかについて異なる制約を受けることがある。このような状況では、第2および第3の命令セット内の命令に対する命令アドレスの最下位1ビット以上が常に同じ値を有し、したがって指定する必要がないことは明らかである。例えば、第2の命令セット内の命令がメモリ内の一つおきのビット位置で開始することができ、第3の命令セット内の命令がメモリ内の3つおきのビット位置で開始することができる場合には、第2の命令セットの命令アドレスに対する最下位ビットは無視することができ、第3の命令セットの命令アドレスに対する最下位2ビットは無視することができることは明らかである。したがって、このような状況では、たとえ標準的に全てが32ビットアドレスとして表わされる場合であっても、異なる命令セット内の命令アドレスに対して異なる命令アドレスビット数を指定する必要があることは明らかである。
【0013】
符号化論理の機能を実施することができるいくつかの異なる方法があることがお判りであろう。例えば、符号化される各命令アドレスはその命令が関連する命令セットに応じて適切なビット数だけ右シフトして、指定する必要がある命令アドレスビットだけを分離することができ、異なるビットパターンは適切にシフトされた命令アドレスへプリペンドされてn−ビット符号化命令アドレスを形成する。
【0014】
したがって、命令アドレスが32−ビットにより指定される前の例を考えると、第1の命令セット内の命令は32ビット全てを指定する必要があり、第2の命令セット内の命令は31ビットを指定する必要があり、第3の命令セット内の命令は30ビットを指定する必要があり、第1の命令セットに関連する命令アドレスは右シフトされず、第2の命令セットに関連する命令アドレスは1ビット右シフトされ、第3の命令セットに関連する命令アドレスは2ビット右シフトされることが判る。次に、符号化された命令アドレスが同じ長さとなるように異なるビットパターンをシフトされた命令アドレスへプリペンドすることができる。符号化命令アドレスの最上位ビット位置内の異なるビットパターンはこれらの命令アドレスが関連する命令セットに関する情報を暗黙的に提供する。
【0015】
命令セットに応じてプリペンドされる異なるビットパターン間の対応性は必要ないことが判る。しかしながら、好ましい実施例では、各命令セットに対してその命令セットからの命令アドレスの指定された命令アドレスビットへプリペンドされたビットパターンは、シフトされたパターンにより異なる命令セットの命令アドレスの指定された命令アドレスビットへプリペンドされたビットパターンと関連づけられる。例えば、3つの命令セットの前例を考えると、ビットパターン“1”を第1の命令セットの命令アドレスへ加えることができ、ビットパターン“01”を第2の命令セットの命令アドレスへ加えることができ、ビットパターン“001”を第3の命令セットの命令アドレスへ加えることができる。
【0016】
前記した符号化命令アドレスを発生するのと等価の任意の計算を使用できることは明らかである。例えば、予め定められたビットパターンを指定された命令アドレスビットへプリペンドして中間値を形成することができ、次にnビットが中間値から符号化命令アドレスとして選択される。符号化命令アドレスを形成するnビットを選択することができるいくつかの異なる方法があることは明らかである。例えば、関連する命令セット(すなわち、指定する必要があるビットだけでなく、全アドレスビットが含まれる)に無関係に、全命令アドレスが中間値内で同じビット数で表わされる場合、命令アドレスが関連する命令セットに応じてnビットの異なる選択が行われる。例えば、前の例を考えると、命令アドレスが第3の命令セットに関連し最下位2ビットは無関係である場合には、符号化命令アドレスとして選択されるn−ビットの最下位ビットはビット位置2である。また、中間値を発生する時に指定する必要がある命令アドレスビットしか使用されない場合には、命令アドレスがどの命令に関連するかに無関係に、符号化された命令アドレスは常に中間値の最下位nビットを選択することにより形成されることは明らかである。
【0017】
前記したように、本発明の好ましい実施例は命令アドレスを有する命令セット情報を符号化するための必要な効率的な技術、したがって、命令アドレスを有する命令セット情報を追跡することが望ましい任意のインプリメンテーションにおいて有益な技術を提供する。可能であれば常に追跡されるデータの量を低減する一般的な要望があれば、本発明により発生される符号化命令アドレスをより効率的に表わす技術を提供するのが有益である。
【0018】
したがって、好ましい実施例では、本装置はさらにその符号化命令アドレスを複数のx−ビットセクションへ分割し、各x−ビットセクションを先行する符号化命令アドレスの対応するx−ビットセクションと比較し、先行する符号化命令アドレスの対応するx−ビットセクションとは異なる最上位x−ビットセクションを圧縮符号化命令アドレスとして、任意のより下位のx−ビットセクションと共に、出力するのと等価の計算を実施することにより前記符号化命令アドレスを圧縮する圧縮論理を含んでいる。好ましい実施例では、最下位x−ビットセクションは常に出力される。
【0019】
しばしば任意の特定の命令アドレスは前の命令アドレスと僅かしか違わず、したがって、命令アドレスの最上位数ビットはしばしば同一であるため、典型的にそれにより符号化命令アドレスの著しい圧縮が行われる。本発明に従って、符号化命令アドレスの最上位ビットは使用される命令セットを暗黙的に識別するが、それはかなり不規則的に変化するため、前記した圧縮技術により多くの符号化命令アドレスを著しく圧縮できることが判る。
【0020】
さらに、符号化命令アドレスが発生される方法により、任意の無関係なアドレスビットが廃棄されていることがあり、したがって、これは指定する必要がある命令アドレスビットが命令アドレス内に与えられた総命令アドレスビット数よりも少ない命令セットに関連する任意の命令アドレスに対する圧縮効率を改善するのを助けることが判る。前の例に戻って、命令セット3からの命令アドレスが30ビットしか指定する必要がなければ、命令アドレスの最下位2ビットは圧縮が適用される前に省かれ、したがって、これは圧縮技術の効率を高めるのを助けることが判る。
【0021】
前記した圧縮技術の潜在的な一つの問題点は各圧縮符号化命令アドレスがいつ開始および終了するかを決定することであり、それは各圧縮された符号化命令アドレスを形成するx−ビットセクション数は、圧縮される特定の符号化命令アドレスの先行する符号化命令アドレスと類似する程度に応じて変動するためである。
【0022】
この潜在的問題を解決するために、好ましい実施例では、圧縮論理はそこから出力される各x−ビットセクションにそれが圧縮符号化命令アドレスとして出力される最後のx−ビットセクションであるかを示すフラグを関連付けるようにされている。好ましい実施例では、圧縮論理から複数のx−ビットセクションが出力される場合には、複数のx−ビットセクションは最下位x−ビットセクションで開始して逐次出力される。
【0023】
どのフラグがどのx−ビットセクションに関連するかを決定できるかぎり、フラグは各x−ビットセクションへ別々の信号として出力できることが判る。しかしながら、好ましい実施例では、圧縮論理はさらにそこから出力される各x−ビットセクションをyビットへ拡張するようにされており、最上位y−xビットはフラグを含んでいる。したがって、このような好ましい実施例では、圧縮論理からの出力は最上位y−xビットがフラグを含むy−ビットセクション系列であるように、フラグは実際上各出力セクション内に含まれる。
【0024】
任意数のビットを使用してフラグを指定できることがお判りであろう。しかしながら、好ましい実施例では、フラグは単一ビットである。特に、好ましい実施例では、圧縮符号化命令アドレスはそのセクションが圧縮符号化命令アドレスの最後のセクションであるかどうかを最上位ビットが識別する8−ビットセクション系列を含むようにyは8でありxは7である。
【0025】
符号化論理はさまざまな形式をとることができることが判る。例えば、前記したように、それは命令セットの表示に応答して適切な右シフトを確認し、もしあれば、それを各入力命令アドレスへ適用するシフト論理を含むことができる。次に、予め定められたビットパターンを適切にシフトされた命令アドレスへプリペンドすることができ、その後最下位n−ビットが符号化命令アドレスとして出力される。命令セットに応じて適用される異なる右シフトが与えられると、命令アドレスが関連する命令セットに応じて、符号化命令アドレスの最上位ビット位置に異なるビットパターンが存在することが判る。
【0026】
しかしながら、好ましい実施例では、符号化論理は中間値および中間値内に含まれる命令アドレスに関連する命令セットを識別する識別子信号を受信するn−ビットセクター論理を含み、n−ビットセクターは識別子信号に応じて中間値の予め定められたn−ビットを出力するようにされている。このような実施例では、中間値は命令アドレスに対していかなる右シフトも実施することなく発生され、中間値からのn−ビットの適切な選択は識別子信号に応じてなされることが考えられる。このようなプロセスにより、個別命令アドレスの適切な右シフトを実施し続いて最下位n−ビットを出力して発生されるのと同じ符号化命令アドレスが発生されることが判る。
【0027】
好ましい実施例では、圧縮論理は複数の比較器を含み、各比較器が符号化命令アドレスの対応するx−ビットセクションを受信するようにされており、さらに先行する符号化命令アドレスの対応するx−ビットセクションを格納するための一時記憶装置を含み、比較器は2つのx−ビットセクションを比較してそれらが異なる場合にセットされる差信号を発生するようにされている。好ましい実施例では、一時記憶装置はレジスタの形状をとり、レジスタは現在x−ビットセクションを格納するのにも使用される。次に、2つのレジスタからの出力は適切な差信号を発生するために比較される。
【0028】
さらに、好ましい実施例では、比較論理は圧縮論理から出力される各x−ビットセクションに対して複数の比較器により発生される差信号の予め定められた組合せに基づくフラグを発生するようにされたフラグ発生器論理を含み、より上位のx−ビットセクションも出力される場合には特定のx−ビットセクションに対するフラグがセットされるようにされる。したがって、このような実施例では、フラグはもう一つのx−ビットセクションがそのx−ビットセクションに続くことを示すようにセットされ、対応するx−ビットセクションが圧縮符号化命令アドレスとして出力される最後のセクションであればフラグはセットされないままとされる。フラグ発生器論理は論理ゲートの任意適切な配線により形成できることをお判り願いたい。しかしながら、好ましい実施例では、対応する差信号またはより上位のx−ビットセクションの差信号がセットされる場合に特定のx−ビットセクションに対するフラグがセットされるのを保証するのにORゲート列が使用される。
【0029】
好ましくは、さらに、比較論理は出力される各x−ビットセクションにその対応するフラグをプリペンドすることにより圧縮符号化命令アドレスを発生し、出力圧縮符号化命令アドレスとしてy−ビットセクション系列を発生する出力発生器を含んでいる。出力発生器はさまざまな方法で構成できることがお判りであろう。しかしながら、好ましい実施例では、出力発生器の機能はフラグ発生器論理および対応するx−ビットセクションにより発生されるフラグの適切なハードワイヤリングにより直接実施される。
【0030】
本発明の前記した符号化論理および圧縮論理は命令アドレスを有する命令セット情報を追跡したい任意のインプリメンテーションにおいて有益に利用できることがお判りであろう。しかしながら、好ましい実施例では、符号化論理および圧縮論理は処理回路のアクティビティを追跡するのに使用されるトレースモジュール内に設けられる。
【0031】
したがって、本発明の第2の側面に従って、データ処理装置用トレーシングツールが提供され、データ処理装置は処理命令の複数の命令セットのいずれかからの処理命令を実行する処理回路を有し、各処理命令はメモリ内のその処理命令の場所を識別する命令アドレスにより指定され、異なる命令セット内の処理命令に対して命令アドレス内に異なる命令アドレスビット数を指定する必要があり、トレーシングツールはその命令に対応する命令セットの表示を有する命令アドレスを符号化してx−ビット符号化命令アドレスを発生する符号化論理を含み、符号化論理はビットパターンを指定された命令アドレスビットへプリペンドすることにより指定された命令アドレスビットをx−ビットへ拡張するのと等価の計算を実施することにより符号化を実施するようにされており、プリペンドされるビットパターンはその命令に対応する命令セットによって決まる。
【0032】
好ましい実施例では、トレーシングツールは、さらに、符号化命令アドレスを複数のx−ビットセクションへ分割し、各x−ビットセクションを先行する符号化命令アドレスの対応するx−ビットセクションと比較し、圧縮符号化命令アドレスとして先行する符号化命令アドレスの対応するx−ビットセクションとは異なる最上位x−ビットセクションを、任意のより下位のx−ビットセクションと共に、出力するのと等価の計算を実施することにより符号化命令アドレスを圧縮する圧縮論理を含んでいる。
【0033】
第3の側面から見て、本発明は命令セット情報を格納する方法を提供し、処理回路が処理命令の複数の命令セットのいずれかからの処理命令を実行するようにされており、各処理命令はメモリ内のその処理命令の場所を識別する命令アドレスにより指定され、異なる命令セット内の処理命令に対して命令アドレス内に異なる命令アドレスビット数を指定する必要があり、前記方法はビットパターンを指定された命令アドレスビットへプリペンドすることにより指定された命令アドレスビットをn−ビットへ拡張するのと等価の計算を実施することにより、その命令に対応する命令セットの表示を有する命令アドレスを符号化してn−ビット符号化命令アドレスを発生するステップを含み、プリペンドされるビットパターンはその命令に対応する命令セットによって決まる。
【0034】
本発明の好ましい実施例では、前記方法は、さらに、(a)符号化命令アドレスを複数のx−ビットセクションへ分割し、(b)各x−ビットセクションを先行する符号化命令アドレスの対応するx−ビットセクションと比較し、(c)圧縮符号化命令アドレスとして先行する符号化命令アドレスの対応するx−ビットセクションとは異なる最上位x−ビットセクションを、任意のより下位のx−ビットセクションと共に、出力するのと等価の計算を実施することにより前記符号化命令アドレスを圧縮するステップを含んでいる。
【0035】
本発明は(i)圧縮符号化命令アドレスを形成するx−ビットセクション数を決定し、(ii)先行する符号化命令アドレスの対応するx−ビットセクションから得られる追加x−ビットセクションを取り入れることにより、必要に応じて、圧縮符号化命令アドレスをn−ビットへ拡張して符号化命令アドレスを作り出すのと等価の計算を実施することにより、本発明の第3の側面の方法に従って発生される圧縮符号化命令アドレスを伸張する方法にも関連している。
【0036】
好ましい実施例では、前記方法は、さらに、予め定められたビットパターンから命令アドレスが関連する命令セットを決定し、予め定められたビットパターンを除去して指定された命令アドレスビットを得るのと等価の計算を実施することにより符号化命令アドレスを復号するステップを含んでいる。
【0037】
第4の側面から見て、本発明はその第3の側面の方法に従って装置を制御するコンピュータプログラムを備えたコンピュータプログラムプロダクトを提供する。
【0038】
【発明の実施の形態】
本発明の好ましい実施例を記述する目的で、オンチップトレーシング技術、およびトレースされる命令アドレスを有する命令セット情報のトレーシングについて説明する。
【0039】
図1はオンチップトレーシング機構を提供するデータ処理システム2を略示している。集積回路4はマイクロプロセッサコア6、キャッシュメモリ8、オンチップトレースモジュールコントローラ10およびオンチップトレースバァッファ12を含んでいる。集積回路4はキャッシュメモリ8内でキャッシュミスが生じる時にアクセスされる外部メモリ14に接続されている。汎用コンピュータ16がオンチップトレースモジュールコントローラ10およびオンチップトレースバァッファ12に接続され、汎用コンピュータ16で実行するソフトウェアを使用してこれらの要素からのトレーシングデータのストリームを回復および解析するように働く。
【0040】
しばしば、プロセッサコア6は動作中に外部メモリ14内に実際に存在するスペースよりも多くのデータ処理命令およびデータにアクセスすることが必要となることがある。例えば、外部メモリ14は1MBのサイズを有することができるが、プロセッサコア6は典型的に32−ビットアドレスを指定することができ、そのため4GBの命令およびデータを指定することができる。したがって、プロセッサコア6により必要とされる全命令およびデータが外部記憶装置18、例えばハードディスク、内に格納され、プロセッサコア6が特定の動作状態で動作する時にその動作状態に対する関連する命令およびデータが外部メモリ14内へロードされる。
【0041】
図2は図1のオンチップトレースモジュール内に設けられるコンポーネントをより詳細に示すブロック図である。オンチップトレースモジュール10はプロセッサコア6により実施される処理を示すオーバーパス105データを受信するようにされている。図1に関して、これはコアから直接受信される追加コントロールタイプデータ(例えば、命令アドレスがインデクスされている表示、ある命令がある理由によりその条件コードに失敗した表示、等)と共に、コア6、キャッシュ8、およびオンチップトレースモジュール10を接続するバスから受信することができる。
【0042】
同期論理100が着信信号をオンチップトレースモジュール内で使用するのにより適切な信号の内部バージョンへ変換するようにされている。次に、これらの内部バージョンはトリガー110および制御論理120へ送られるが、トリガー110および制御論理120は必ずしも同じ信号を受信する必要はないことがお判りであろう。基本的に、トリガー110はトリガー可能なイベント、例えば、命令アドレス、データ値、レジスタアクセス、等に関連するデータを受信する必要がある。制御論理120はトリガー110により発せられるイネーブル信号に応じてトレースする必要がある任意のデータを受信する必要がある。制御論理120は、さらに、汎用コンピュータ16からパス125を介して構成情報を受信するようにされており、次に、トリガー論理構成をセットアップするために、パス115を介してトリガー110へ信号を発するようにされている。
【0043】
トレースストリームの発生を来たさなければならないイベントを検出する時は常に、トリガー110はパス135を介して制御論理120へイネーブル信号を送ってトレースをターンオンオフさせる。制御論理はパス145を介して必要なトレースデータをトレースバァッファへ出力することにより反応する。パス135を介して多様なイネーブル信号を提供してトレースすべき信号のタイプ、例えば、トレースオンリー命令、トレース命令およびデータ等を識別できることが判る。
【0044】
好ましい実施例では、オンチップトレースモジュール10の制御論理120には命令アドレスを有する命令セット情報を符号化し、次にこのような符号化命令アドレスをパス145を介してトレースバァッファへ出力する前に圧縮できるようにする追加論理が提供される。
【0045】
制御論理120内で実施される符号化が図3に略示されており、プロセッサコア6により使用される3つの異なる命令セットは“ARM”,“Thumb”および“Java(登録商標)”の名称で識別されている。本発明の好ましい実施例では、命令アドレスは32ビット長である。Java命令はメモリ内の任意のアドレス位置で開始することができ、したがって、32ビット全てをJava命令アドレス220内で指定する必要がある。しかしながら、Thumb命令はメモリ内の偶アドレス位置、例えば、位置0,位置2,位置4,位置6,等でしか開始することができない。したがって、32ビットThumb命令アドレス210内のビット位置0は常にゼロである。
【0046】
同様に、ARM命令はメモリ内の3つおきのアドレス位置、例えば、位置0,位置4,位置8,位置C,等でしか開始することができない。したがって、32ビットARM命令アドレス200の最下位2ビットは常にゼロである。
【0047】
本発明の実施例では、論理1値は各命令アドレスの第33ビットとしてプリペンド(pre−pended)される(すなわち、ビット位置32に配置される)。次に、命令アドレスの任意の無関係な最下位ビットを除去するための適切な右シフトを適用することにより符号化命令アドレスが作り出される。Java命令に対しては、32ビット全てを指定する必要があるため、右シフトは実施されず、符号化命令アドレス250は論理1値をオリジナル32ビットJava命令アドレス220へプリペンドして与えられる単なる33ビット値である。Thumb命令に対しては、最下位ビットを除去するために1の右シフトが適用され、それにより最上位2ビットが“01”である33ビット符号化命令アドレス240が作り出される。最後に、ARM命令に対しては、最下位2ビットを除去するために2ビット位置の右シフトが適用され、それにより最上位3ビットが“001”である33ビット符号化命令アドレス230が作り出される。
【0048】
したがって、命令アドレスが関連する命令セットの表示が33ビット符号化命令アドレスの最上位3ビットにより与えられることがお判りであろう。特に、最上位3ビットの“001”は命令をARM命令として識別し、“01x”は命令をThumb命令として識別し(xは任意値を示す)、最上位3ビットとしての“1xx”は命令をJava命令として識別する。
【0049】
好ましい実施例では、33−ビット符号化命令アドレスはパス145を介してトレースバァッファへ出力される前に、図4に略示された技術を使用して、圧縮される。
【0050】
図4に示すように、33−ビット符号化命令アドレス300(図3に示す符号化命令アドレス230,240,250のいずれかとすることができる)は7−ビットセクションへ分割され、最上位5ビットは2つの論理ゼロ値を5ビットへプリペンドすることにより7−ビットセクションへ拡張されている。圧縮符号化命令アドレスとして出力される各7−ビットセクションは対応する7−ビットセクションが圧縮符号化命令アドレスとして出力される最後の7−ビットセクションであるかどうかを示すフラグをプリペンドすることによりバイト(すなわち、8ビット)へ拡張される。好ましい実施例では、フラグは連続ビットの形状をとり、それは論理1値にセットされてもう一つのセクションが出力されることを示し、論理0値にセットされて対応するセクションが圧縮符号化命令アドレスの最後のセクションであることを示す。
【0051】
任意特定の7−ビットセクションを圧縮符号化命令アドレスの一部として出力しなければならないかを判断するために、その7−ビットセクションは先行する符号化命令アドレス、典型的にはすぐ前を先行する符号化命令アドレス、の対応する7−ビットセクションと比較されて先行する7−ビットセクションと異なるかどうかが確認される。異なる場合には、それは圧縮符号化命令アドレスの一部として出力され、対応する連続ビットは1にセットされ、先行する7−ビットセクションと同一であれば、先行する符号化命令アドレスの対応するセクションとは異なるより上位の7−ビットセクションがある場合しか出力されない。その唯一の例外は最下位ビットに関連する最初の7−ビットセクションであり、それは常に出力される。
【0052】
図4から、命令セット間にスイッチがある場合に生じるように、符号化命令アドレスが先行するそれと完全に異なる場合には、圧縮符号化命令アドレスは実際上オリジナル符号化命令アドレスよりも多くのビットを使う。特に、図4について、5つのセクション310,320,330,340,350を出力する必要がある場合には、圧縮符号化命令アドレスに対して40ビットが必要であることが判る。それにもかかわらず、命令セット間のスイッチは典型的には比較的まれに生じ、命令アドレスはしばしばすぐ前を先行する命令アドレスに極めて類似しており、したがって大概の符号化命令アドレスは図4に示す圧縮技術を使用する結果著しく圧縮することができる。
【0053】
次に、図4のセクション350を見ると、そのセクション内のビット列は命令セットを暗黙的に識別することが判る。特に、列360はARM命令セットを識別し、列370はThumb命令セットを識別し、列380はJava命令セットを識別する。
【0054】
図5は3つの命令400,410,420の代表的な系列であり、本発明の好ましい実施例に従って作り出される圧縮符号化命令アドレスを示す。命令アドレス400はARM命令に関連しており、16進記法で書かれる。図3に関して、符号化の結果最下位の2つの“0”ビットが除去され、パターン“001”が最上位の3ビットとして加えられることが判る。このような符号化命令アドレスに圧縮技術が適用されると、圧縮符号化命令アドレス430が生じる。図5の例では、次の命令410はThumb命令であり、したがって最下位の“0”ビットが除去され、パターン“01”が圧縮の前に最上位の2ビットとして加えられる。次に、圧縮技術を適用する結果として圧縮符号化命令アドレス440が発生される。この段階において、命令セットに関する情報は命令アドレスにより効率的に符号化されているが、1つのARM命令に1つのThumb命令が続くため、圧縮プロセスはなんら節減されていない。
【0055】
しかしながら、次の命令がThumb命令420であれば、圧縮符号化命令アドレス450が作り出される。したがって、その32−ビット命令アドレスはその命令セットに関する情報と共に2バイト、すなわち16ビット、により表現され、これはトレースバァッファ内に格納する命令アドレスおよび命令セットの両方を発生するための非常に効率的な方法を表わしている。命令アドレス420に続く任意のThumb命令アドレスに対しても著しく圧縮される見込みがあることが判る。
【0056】
図6は所要の符号化および圧縮を行う本発明の好ましい実施例に従ったオンチップトレースモジュール10の制御論理120内に設けることができる論理のブロック図である。レジスタ610が設けられその最上位3ビット607は予め定められたビットパターン、好ましい実施例では“001”、を格納する。レジスタ610の最下位32ビットはパス602を介して32−ビット命令アドレス605を受信する。さらに、パス603を介して通されレジスタ610内に格納された32−ビット命令アドレスが関連する命令を識別する命令セット識別子を格納するラッチ630が設けられる。
【0057】
33−ビットセクター論理620がレジスタ610の内容およびラッチ630の出力を受信し、命令セット識別子に応じてレジスタ610内の35−ビットから予め定められた33−ビット列を選択するようにされる。33−ビットセクター論理620の一例を図7に示す。
【0058】
図7から判るように、33−ビットセクター620は好ましくは3つの別々の入力701,702,703を受信するマルチプレクサ700を含んでいる。入力701はレジスタ610から最上位の33ビットを受信し、入力702は1−33ビットを受信し、入力703は最下位の33ビットを受信する。マルチプレクサ700は命令セット識別子の値に応じてその33−ビット入力の一つをパス710上に出力する。特に、命令セット識別子が命令はARM命令であると識別する場合には、マルチプレクサ700はパス701を介して受信した入力を出力し、命令セット識別子が命令はThumb命令であると識別する場合には、マルチプレクサ700はパス702を介して受信した入力を出力し、命令セット識別子が命令はJava命令であると識別する場合には、マルチプレクサ700はパス703を介して受信した入力をパス710を介して出力する。
【0059】
図6に戻って、パス710を介して出力された33−ビット値は5つの異なるセクションへ分割されることが判る。好ましい実施例では、これは33−ビット幅バス710を単に4つの7−ビット幅バス622,623,624および625と1つの5−ビット幅バス626へ分割して行われる。マルチプレクサ700からの出力の最下位7ビットは、最下位7ビットは常に出力されるため、直接圧縮符号化命令アドレス発生器へ通される。次の最下位7ビットはパス623を介して比較器670へ通され、その次の最下位7ビットはパス624を介して比較器660へ通され、さらにその次の最下位7ビットはパス625を介して比較器650へ通され、最上位5ビットパス626を介して比較器640へ通される。
【0060】
各比較器の構造を図8に略示する。図8に示す比較器は7−ビット数を処理するようにされており、したがって比較器650,660および670用に使用される。比較器640は構造的に図8の比較器に類似しているが、7ビット数ではなく5ビット数を処理する。
【0061】
新しい7−ビットセクションは比較器により受信されると、レジスタ800内に一時的に格納される。次に、それは比較器論理830へ出力される。この時、比較器論理830もすぐ前を先行するトレースされた命令アドレスの対応する7−ビットセクションをレジスタ820から受信するようにされる。比較器830は2つの7−ビット値が同一であるかどうか比較し、同一であれば比較器論理830は差信号として論理0値を発生する。そうでなければ、比較器論理830は差信号として現在の7−ビットセクションが前の7−ビットセクションとは異なることを示す論理1値を発生する。次の7−ビットセクションが受信されると、それはレジスタ800内に格納され、レジスタ800の前の内容は次のプロセスで使用するためにレジスタ820へ通される。
【0062】
図6に戻って、4つの比較器640,650,660および670により作り出される異なる信号の各々が、圧縮符号化命令アドレスの一部として出力される各セクションに関連づけられる連続ビットを発生するのに使用される連続ビット発生器680へ通される。連続ビット発生器680を形成するのに使用することができる論理の例が図9に示されている。
【0063】
図9から判るように、この論理は基本的に33−ビット符号化命令アドレスのより上位セクションに関連する差信号を処理している任意他のORゲートからの出力と共に対応する差信号を受信するようにされた一連のORゲート910,920および930を含んでいる。したがって、比較器640からパス686を介して発せられる差信号はパス950を介して直接出力され、パス625を介した33−ビットセクター620からの7−ビットセクション出力に対する連続ビットを形成する。パス626を介して33−ビットセクター620から出力される最上位セクション出力に対する連続ビットは常に論理0値であり、それはそのセクションが常に圧縮符号化命令アドレスが出力される場合の最後のセクションであるためである。したがって、パス940は論理0へハードワイヤされてそのセクションに対する連続ビットを提供する。
【0064】
ORゲート930はパス685および686を介して差信号を受信するようにされており、パス685または686上の差信号が論理1値であればパス960を介して論理1値を有する連続ビットを発生する。パス960を介したこの連続ビットはパス624を介して33−ビットセクター620により出力される7−ビットセクションを修飾する(qualify)のに使用される。
【0065】
ORゲート920および910は似た働きをし、その対応する差信号がセットされるかまたは符号化命令アドレスの任意のより上位のセクションで実施される比較に関連する差信号がセットされる場合に、対応する連続ビットが論理1値にセットされることを保証する。パス970を介して出力される連続ビットはパス623を介して出力される7−ビットセクションと一緒に使用され、パス980を介して出力される連続ビットはパス622を介して出力される7−ビットセクションと一緒に使用される。
【0066】
図6に戻って、現在必要なのは連続ビットを最下位7−ビットセクションで始まる33−ビットセクターにより出力されるその関連するセクションと結合することにより圧縮符号化命令アドレスを形成し、次に圧縮符号化命令アドレスのどれだけをトレースバァッファ12へ出力するかを決定することである。論理0連続ビットに遭遇するとすぐに、トレースバァッファへさらにセクションを出力する必要がなくなる。この機能は図6に示す圧縮符号化命令アドレス発生器690により実施される。このプロセスは図10に略示されている。図10に示すように、最下位7−ビットセクションで開始して、7−ビットセクション1000は8−ビットセクションへ変換され適切な連続ビットへ1010を加えることにより最上位ビットとして出力される。このプロセスは各7−ビットセクションに対して次々に繰り返される。
【0067】
最上位5−ビットに対応する5−ビット値1020は連続ビット1060と共に2つの論理値1040および1050をプリペンドすることにより8−ビット出力へ拡張される。前記したように、このセクションは必ず圧縮符号化命令アドレスの最後のセクションであるため、この場合連続ビットは常に論理0値である。
【0068】
次に、前記プロセスから生じる40−ビット値が圧縮符号化命令アドレス発生器から出力され、前に連続ビット発生器680により発生されたイネーブルビットが長さ値を作り出すのに使用され、それは40−ビット値内のどれだけ多くの8−ビットセクションをトレースバァッファ12へ出力するかを決定するのに使用される。例えば、パス682上のイネーブルビットおよびORゲート910からの出力がセットされると、2つの最上位8−ビットセクションが圧縮符号化命令アドレスとしてトレースバァッファ12へ出力される。
【0069】
好ましい実施例の前記説明から、命令セット情報に命令アドレスを取り入れ、その符号化命令アドレスを圧縮して格納のための効率的な表現を提供する効率的な技術が記述されたきたことがお判りであろう。好ましい実施例では、この技術はトレーシング機構に応用され、圧縮データはトレースバァッファ12内に格納される。次に、圧縮符号化命令アドレスを伸張するための伸張論理を汎用コンピュータ16内に設けることができる。圧縮技術に関する詳細な検討が既になされているため、当業者ならば伸張がどのように働くかが容易にお判りであろう。簡単に言えば、伸張器が圧縮符号化命令アドレスを表わす8−ビットセクション系列を読出し、各8−ビットセクションの最上位ビット位置内の連続ビットの値により示される、1つの8−ビットセクションから5つの8−ビットセクションまで系列は変動する。
【0070】
5つの8−ビットセクションからなる圧縮符号化命令アドレスに対して、符号化命令アドレスは各8−ビットセクションから連続ビットを剥ぎ取り、次に最下位7−ビットセクションで開始して7−ビットセクションを連結することにより再構成することができる。最下位33−ビットは符号化命令アドレスを表わすようになり、その33−ビット値の最上位3−ビットパターンが命令セットを識別する。命令がJava命令であれば、符号化命令アドレスの最下位32−ビットを出力するだけで32−ビット命令アドレスを再生することができる。命令がThumb命令であれば、符号化命令アドレスを1位置だけ左へシフトさせ最下位32−ビットを出力することによりオリジナル命令アドレスが与えられ、最下位ビットは論理0値となる。同様に、命令がARM命令であれば、符号化命令アドレスを2位置だけ左へシフトさせ最下位32ビットを出力することによりオリジナルARM命令を出力することができ、この場合最下位2ビットが論理0値となる。
【0071】
4セクション以下からなる後続圧縮符号化命令アドレスに対しては、圧縮符号化命令アドレス内に含まれる各セクションから連続ビットを除去することができ、命令アドレスの最下位ビットは最下位セクションで開始される任意のこのようなセクションを結合することにより再構成される。圧縮符号化命令アドレス内のセクション数に応じて、これにより命令アドレスの第1の7,14,21または28ビットが生じる。残りのビットは先行する伸張命令アドレスと同一であるため、その前の伸張命令アドレスから決定することができる。
【0072】
本発明の最も好ましくない実施例のトレーシング技術の詳細な説明は、英国、キャンブリッジ、ARM社から公然と入手できるEmbedded TraceMacrocell(REV1)記述と一緒に読むべき下記のアクチュエータ記述に与えられている。
1.1
このドキュメントは下記の用語および略語を使用する。
Figure 0003766035
【0073】
範囲
このドキュメントはETM10の機能を指定するものである。ETM10は命令およびデータトレーシングが可能なリアルタイムトレースモジュールである。機能はARM7およびARM9に対する従来のETMインプリメンテーションのそれと同様である。読者はEmbedded Trace MacrocellSpecification(ARM IHI 0014D)に概説されているオリジナルETM仕様に精通しているものとする。この仕様はETM10と従来のETMバージョン間の共通のアクチュエータ特徴を再び述べようとするものではなく、ETM仕様のETM10に対して変更される部分を検討するものである。これらの変更の大部分はARM1020Eを適切にトレーシングすることができる新ETMプロトコルの生成に関係している。このプロトコルは将来のARMコアもトレーシングするために拡張可能とされる。
【0074】
序説
Embedded Trace MacrocellはETM,トレースポート解析器、およびソフトウェアデバッガー(ADW等)を含むARMのReal
Time Debugソリューションの一体部である。
【0075】
Embedded Trace Macrocellは2つの部分、トレースブロックおよびトリガーブロックからなる。トレースブロックは圧縮トレースを生成し狭いトレースポートを横切ってそれを出力する。トリガーブロックはユーザがトリガー状態を指定できるようにするプログラマブルリソースを含んでいる。トリガーブロックリソースはどの命令およびどのデータ転送がトレースされるかを制御するフィルタとしても使用される。全てのETM構成レジスタ(トリガーブロックリソースを含む)がJTAGインターフェイスを介してプログラムされる。ユーザはソフトウェアデバッガーを使用してこれらのレジスタにアクセスする。トレースが捕捉されると、デバッガーにはトレースを伸張してユーザに実行されたコードの全分解を提供する責任もある。デバッガーソフトウェアはETMトレースポート出力をリアルタイムで処理することができないため、トレースは最初に外部Trace Port Analyser(TPA)内へ捕捉される。TPAは完全に機能的な論理解析器、またはAgilent nTracebox等の特定ETMデバイスとすることができる。トリガー状態が生じてデバッグランが完了すると、デバッガーはTPAからトレース情報を抽出する。説明のこのハイレベルにおいて、ETM10はETM7およびETM9と機能的に同一である。
【0076】
Etm10に必要な変更
ユーザの観点から、ETM10は重要ではない僅かな違いはあるがETM7およびETM9により提供されるのと等価の命令およびデータトレーシング能力を提供する。この章はETM10に対するETMアーキテクチュアに対してなされる変更およびなぜ変更されるかを説明する。多くの変更は伸張ソフトウェアにしか影響を及ぼさず、エンドユーザだけでなく残りのトレースツールキットソフトウェアには不可視である。しかしながら、ある変更はプログラマーのモデルに影響を及ぼすかあるいはETM7およびETM9からのトレーシング動作に小さな差を生じる。このような変更がこの章で指示される。新プロトコルの徹底的な説明を必要とするETM10に対する任意の変更は5章のプロトコル説明においてより徹底的に扱われる。
【0077】
1.2 分岐ファントムトレーシング
ARM10は“分岐畳込み(branch folding)”を実現し、それは分岐を予測し、正規の命令ストリームから引出し、プログラム内の次の命令と並列に有効に実行できることを意味する。これらの畳み込まれた分岐は分岐ファントムと呼ばれる。旧プロトコル内のPIPESTAT符号化はサイクル当たり実行される1命令しか考慮しない。分岐ファントムがトレースされるようにするために、命令と並列に畳み込まれた分岐を表わすPIPESTATフィールドに新符号化が追加される。5章のETM10プロトコル仕様内に新PIPESTATが与えられている。
【0078】
畳み込まれた分岐はトリガーブロックへの変更も必要とする。分岐が畳み込まれると、有効に2つの命令が並列に実行される。これら2つの命令に対するPC値は任意の識別可能な関係を有することが保証されないため、2つのアドレス比較を各サイクルで行わなければならない。これは各アドレスレジスタが2つの比較器を必要とすることを意味する。トレーシングがイネーブルされるかどうかを決定する時に、両方の比較器出力が考慮される。(これら2つの命令のいずれかがトレースされる場合には、トレーシングはそのサイクルでイネーブルされる)。分岐畳込みによりせいぜい1つの追加命令しかトレースされないことを保証するために特別な注意がなされる。一般的に、ユーザはTraceEnableまたはViewDataを適切にプログラムするためにいつ分岐が畳み込まれ次の命令と一緒に並列に実行されるかを知っている必要がない。
【0079】
イベントに対して、命令の並列実行はETM10対ETM7/9からの僅かに異なる動作を有することを可能とする。ここでは、イベントが典型的に使用される方法による機能の多くの損失があるとは感じられない。カウンタはサイクル当たり1回しかカウントダウンできないが、単一アドレス比較器が使用される場合にはカウンティングはアクセスの正確なカウントを与えている。さらに、Trigger,TraceEnable,ViewDataまたはExtOutイベントへの機能の損失はなく、イベントは命令またはデータ転送が個別にそれをアクティブとしている、所望の動作時にアクティブである。シーケンサーが同じサイクル内に多数の遷移要求を受信する場合には、遷移はなされずシーケンサーはオリジナル状態にとどまる。この動作はETM7およびETM9のそれと同一である。しかしながら、ARM10がより多くの並列実行をサポートするため、ETM10はサイクル内で多数の遷移要求のより多くの発生を有することがある。ユーザはシーケンサーをプログラミングする時にこの動作を知る必要があるが、単純なイベントに対するワークアラウンドがある。所望の動作がイベントAに基づいた状態1−〉2およびイベントBに基づいた状態2−〉3からの遷移であれば、プログラム1−〉2がイベント(A&IB)上に生じ、2−〉3がイベントB上に生じ、1−〉3がイベント(A&B)上に生じる。このようにシーケンスをプログラミングすることによりイベントAおよびイベントBの同時発生の適切な処理が保証される。
【0080】
1.3 ロードミスおよび例外トレーシング
ARM10は他のメモリ命令を含む他の命令を単一の顕著なミスの下で実行できるようにする非ブロッキングデータキャッシュを有し、データキャッシュは狂った順でデータをコアへ戻すことができる。現在プロトコルはロードデータが正しい順でFIFOに配置されることを期待するため、この特徴はロードデータ追跡問題である。データパケットは一部ヘッダーバイトによりプレフィクスされて狂った順のロードミスデータを収容する。ヘッダーバイトは5章に詳細に説明されている。
【0081】
非ブロッキングキャッシュのサポートはデータ比較器への変更も必要とする。ETM7およびETM9と同様に、ETM10は一対のアドレス比較器と一緒に使用されるデータ比較器を有する。使用時に、比較器はデータもマッチする場合のマッチしかトリガーしない。他のメモリアクセスはミスの下で生じることがあるため、ミスとなるロード要求に対するアドレスがマッチしたかどうかを記憶にとどめるために各比較器にビットが追加される。ロードミスデータが戻されると、データ値比較がなされ、比較結果を限定するために保存されたアドレスマッチビットが使用される。次に、このマッチビットはクリアされる。場合によっては、ユーザは比較器をイネーブルするためにミスデータが戻されるのを待機したくないことがある。替わりに、ロードミスが常にデータアセンブリだけに基づいてトレースされるようにしたいことがある。両方のユーザモデルをサポートするために、各比較器に対してどのモデルがイネーブルされるかをユーザが指定できるようにするビットがアドレスアクセスタイプレジスタへ加えられている。比較におけるロードミスデータに対する待機が望まれる場合には、ユーザはアドレスアクセス型レジスタのビット8、Exatx Matchビット、をセットしなければならない。(アクセスタイプレジスタの詳しい情報については参照1を参照されたい)。トリガーその他のイベントを生成するためにデータ値が使用される場合には、データ比較が生じるのを待機することは有用である。比較器がトレースフィルタリングに使用されある無関係なトレーシングが問題とされない場合には、アドレスのみに基づいたトレーシングロードミスが有用である。ロードデータは狂った順で戻されることがあるため、ユーザはデータ値を使用して、シーケンサ遷移等の、イベントを生成することにより狂った順のイベントが生じることがあることを知らなければならない。ARM10の非ブロッキングキャッシュがプログラムされたイベントに影響を及ぼすことがあることにユーザが関係する場合には、この特徴はcp15構成レジスタ(r1)へのライトを介してコア内でディセーブルすることができる。詳細な情報についてはART1010E TRM(参照3)を参照されたい。
【0082】
アクセスタイプレジスタのビット7は中断、割込み、またはソフトリセットが生じる時の比較器動作を指定するのに使用される。これらの状態は一般的に例外と呼ばれる。データアクセスが中断されビット7が表明されると、データマッチが要求されるかどうかに無関係に、比較器はマッチ出力とはならない。比較器が命令アドレスと結ばれる場合には、例外とマークされる命令でのマッチを防止するのに正確なマッチビットが使用される。例外となる命令およびデータ要求は通常中断または割込み状態が解決されると再試行されるため、比較器が1回しか点火しない場合にこの動作が望ましい場合が多い。データアクセスケースでは、ビット7が表明されない場合には、データ値は無効と推定されるため中断されたアクセスにより純粋にアドレスに基づくマッチとなる。
【0083】
所望の動作は典型的には両方のケースに対して同じであるため、同じExact Matchビットがロードミスおよびデータ中断の適切な処理を決定するのに使用される。Exact Matchビットのデフォルト値は0である。
【0084】
1.4 ARM10データトレーシング
ARM1020Eは単一サイクル内でデータの64ビットを戻すことができる64ビットデータバスを有する。この64ビットデータバスをサポートするために、ETM10は単一サイクル内に2つの隣接データ値をトレーシングできなければならない。一方または他方の値だけのトレーシングをサポートするために、2つのViewData出力が発生される。しかしながら、まだイベント用の1つの出力とTraceEnable用の1つの出力しかない。同じサイクル内にアクセスされる2つの隣接32ビット要求によりカウンタの1減分またはシーケンサによる1つだけの状態変化しか生じないため、1つのイベント出力を有することはカウンタおよびシーケンサ論理に影響を及ぼすことがある。イベント論理をプログラミングする時にユーザはこれを考慮しなければならないが、それは重要な問題とは思われない。
【0085】
1.5 LSMトレーシング
ARM1020Eは独立したロード/ストアユニットを有し、それによりロード/ストアユニットがデータアクセスを反復する間に、以後LSMと呼ぶ、多数の命令のロードまたはストアの下で他の命令を実行することができる。(すなわち、LSMの実行はコアを停止させない)。これをサポートするために、アドレス比較器出力およびTraceEnableの表明へのある変更が必要である。・LSM命令を反復しながらそれをアクティブにトレーシングする時は常に、TraceEnableが表明されたままであるかどうかにかかわらず、LSMが完了するまでそれはアクティブのままである。(このルールの唯一の例外はオーバフローケースである)。このルールにはLSMの下で実行された他の命令が、本来トレースされるものかどうかにかかわらず、トレースされてしまうという副作用がある。しかしながら、定義によりLSMの下で実行する命令はデータ命令であるはずがないため、それにより余分なデータパケットが生じることはない。・比較器がLSMの命令アドレス上で活性化される時は常に、その比較器のViewData出力は全命令が完了するまで表明されたままである。それはユーザの意図がこの命令に関連する全てのデータパケットをトレースすることであるためである。同様に、ViewDataおよびEvent範囲出力はLSM命令の完了まで表明されたままである。イベント単一アドレス比較器出力は定義により単一サイクルしか表明しないため、表明されたままではない。
・LSMに関連するデータ転送がトレースされていると、通常トレースされないその命令に関連する後続転送はプレースホルダーパケット出力を有する(トレースされない値−5章参照)。これらのプレースホルダーパケットはどの語がトレースされたかを確認する必要がある。
【0086】
ETMプロトコルは命令トレーシングがロード/ストアデータアドレス(およびデータ値)に基づいて命令トレーシングがイネーブルされることを考慮する。ARM10上で、LSM命令はトレーシングイネーブリングイベントが生じる時にもはやコアの実行段階にはないことがあるため、この命令アドレスは周りに維持して特殊な方法で同報してこの特徴をサポートする必要がある。これはProgress TFOパケット内のLSMを使用して遂行される。Trace Packet Offsetは5.2.4に記載されている。
【0087】
1.6 補助データトレーシング
プロトコルへのデータヘッダーの追加は補助データタイプのトレーシングも考慮する(すなわち、ロード、ストア、およびCPRT命令以外のデータ値のトレーシング)。この補助データタイプトレーシングはETMトレーシングの拡張を考慮することを意味し、それはETMの将来バージョンにおける外部ASICデータのトレーシングを含むことができる。補助データトレーシングのより多くの情報が5章のデータヘッダー検討に与えられている。
【0088】
1.7 CONTEXTIDトレーシング
CONTEXT IDはそれらが更新される時および同期化のためにTFOパケットが必要である時は常に同報される。ETM10に対して、CONTEXTID値はそれらがCONTEXT ID変化となるCPRT命令に対するデータトレーシングを単純にイネーブルして更新される時に出力される。このデータパケットに対する一意的データヘッダーにより伸張器はデータが新しいCONTEXT ID値であることを認識することができる(データヘッダーは5章で検討される)。ETMはまたトレースがイネーブルされる時は常に、また5.2.4章で説明されるトレース同期サイクル中に現在CONTEXT ID値を同報する。CONTEXT ID更新命令はMCR c15,0,rd,c13,c0,1である。
【0089】
ARM10〈−〉ETM10インターフェイス上のもう一つの32ビットポートを必要とする替わりに、ETM10はCONTEXT ID更新を認識して現在CONTEXT ID値を内部シャドーレジスタ内に維持する。コヒーレンシを適切に維持するために、ETMがPOWERDOWNモードである時でも(ETMレジスタ0×4、ビット0が表明される)このレジスタは常に更新される。
【0090】
トレースフィルタリング用のCONTEXT ID値を使用することがETM10に対する追加特徴として加えられる。これは予期CONTEXT ID値を指定することができるETM内の新しいプログラマブルレジスタセットを介して実現される。
【表1】
Figure 0003766035
各CONTEXT ID比較器に対して同じマスクが使用され、データ比較器マスクと同様に働く。
【0091】
アドレス比較器アクセスタイプレジスタのビット9:8はCONTEXT ID比較器が使用されるかどうかを示す。00の値によりCONTEXT ID比較器は無視される。01,10または11の値によりアドレス比較器は、CONTEXT IDマスクを考慮した後で、現在CONTEXT IDがそれぞれCONTEXT ID比較器1,2または3内のそれとマッチする時だけマッチするようにされる。
【0092】
CONTEXT ID比較器がイベントブロック内から直接アクセスできるように新しいイベントリソースが割り当てられる(ARM IHI 0014Dの3.3.4参照)。これらの新しいリソースは0×58−0×5Aへマッピングされる。
【表2】
Figure 0003766035
新しいフィールドがETM構成コードレジスタに加えられて存在するCONTEXT ID比較器数を示す(ARM IHI 0014Dの4.2.2参照)。
【表3】
Figure 0003766035
【0093】
1.8 トレース出力周波数
ARM1020E Macrocellは300MHzを越えるコア周波数で動作することができる。従来のETMインプリメンテーションは周波数が200MHzを越えることがない。ETMトレース出力に対して得られる最大出力周波数はトレース解析器の最大サンプル周波数およびパッドで得られる最大出力周波数によって決まる。AgilenおよびTektronix解析器は、それぞれ、333MHzおよび400MHzの最大周波数で捕捉することができる。しかしながら、ARMパートナーから得られる任意のCMOSパッドはこの周波数においてクリーンで、トレース可能な信号を供給できる可能性が非常に高い。したがって、パッドは速度制限要因と考えられる。より大きなパッドおよび/またはボードレベルバァッファリングを使用してある速度改善を得ることができる。これらの技術により我々は200MHzにおいて信頼できるトレースを行うことができる。より高速のトレーシングに対しては、2つのオプションがある。ピンカウントを2倍にし周波数を半分にすることができる(デマルチプレクストレースポート)、あるいはオンチップトレースバァッファを利用することができる。両方の技術に利点および欠点がある。
【0094】
ピンカウントを2倍にすることはパッケージ制限および追加ピンの高いコストによりあるパートナーにとって魅力的なオプションではない。また、この技術はTPAの変更および、恐らくは、第2のマイクロコネクタの追加が必要であり、それはより広い面積をとりさらにコストが加算される。さらに、この技術にはやはり400MHzの速度制限がある。熱工程で作られたARM10プロセッサは恐らくこれらの速度を越える。
【0095】
オンチップバァッファにはコアクロック速度で信頼できるトレーシングおよび追加ピンをなんら必要としない利点がある。事実、全てのトレース捕捉がオンチップバァッファを利用して行われる場合には、オンチップバァッファがJTAGポートを介したMulti−ICEを経てダウンロードされるため外部可視ETMポートは解消することができる。このソリューションの欠点はオンチップバァッファのサイズが典型的に極めて小さく、8−16KB程度であることである。したがって、トレーシング深さが制限される。大きなオンチップトレースバァッファが可能であるが、ASICのサイズに直接インパクトを与え、小さなトレースバァッファであっても同じ設計で与えられるよりも多くのシリコンスペースを使用することがある。
【0096】
各方法の利点および欠点が変動するため、前記した両オプションがサポートされるように計画される。高速トレーシング用デマルチプレクスドトレースポートによりARM10200 rev 1テストチップが造られる。オンチップトレースバァッファはARM10200 rev 1テストチップの一部ではない。
【0097】
ETM9用オンチップトレースバァッファの仕様が作成されており、インプリメンテーションが進行中である。5.2章に記載されている新4ビットPIPESTAT符号化をサポートする重要ではない変更により、この設計からETM10コンパチブルオンチップトレースバァッファを生成することができる。ETM10をサポートするのにどんなTrace Capture Device変更が必要であるかの詳細な情報については参照4を参照されたい。タイムスケールに応じて、ETM10コンパチブルオンチップトレースバァッファは、ダイナミックトレース圧縮等の、追加特徴を提供することができ、事実FIFO置換として直接ETM10設計内に一体化することができる。
【0098】
1.9 同期レジスタ
従来のETMインプリメンテーションでは、同期は1024サイクル毎に5−バイト命令を介して、また1024サイクル毎に5−バイトデータアドレスを介して生じる。ETM10に対しては、これらの同期点は新しい12ビットプログラマブルレジスタを介して構成することができる。構成可能な同期によりトレースバァッファサイズの全範囲を利用するのが容易になる。オンチップトレースバァッファ等の小型トレースバァッファはトレースの大きな部分を投げ出すのを回避するために頻繁に同期することができ、大型トレースバァッファは不要同期の無駄なトレーススループットを回避するためにたまに同期することができる。デフォルトカウンタ値は1024サイクルである。データアドレスおよび命令アドレス同期が同時に生じるのを防止するために、データアドレス同期はカウンタがその中点値に達する時に生じ命令アドレス同期はカウンタが0に達する時に生じる。新しい同期レジスタに対するアドレスは0×78である。
【0099】
1.10 メモリマップデコーダ
従来のETMインプリメンテーション内に存在した外部メモリマップリソース入力はETM10に対してサポートされない。ARM10アーキテクチュア内に存在する余分な複雑さにより外部デコーダに対するサポートの実現はより困難となる。外部イベントはEXTINを利用することによりまだトレーシングを制御することができ、それはcycle accurateとなる(4.15で検討されている)。
【0100】
1.11 レンジアウト
従来のETMインプリメンテーションはEmbedded ICE論理内のデータ値比較レジスタを余分な外部レジスタリソースとして使用することができる。この機能はEmbedded−ICEから来るRANGEOUT出力を使用して遂行される。ARM10デバッグユニットにはデータ値比較機能がないためこれらのRANGEOUT出力はない。したがって、このリソース再使用はETM10に対しては不可能である。これらのリソースはもはやプログラムされないためプログラマーのモデルへのそのインパクトは少ない。
【0101】
1.12 割込みベクトルへの分岐
現在プロトコルは割込みベクトルテーブル内のエントリーへの直接分岐は間接分岐としてトレースしなければならないと指定している。ファントム分岐は提案されたプロトコル内で間接分岐へ変換することができないため、もはやこれは常に可能ではない。したがって、直接分岐が分岐ファントムであったかどうかに無関係に、一貫性および単純性のために割込みベクトルへの直接分岐はもはや間接分岐としてトレースされない。5.3.1章に記載されているアドレスバイト5の特殊な符号化によりPABORT,FIQ,IRQ,DABORT,およびRESETベクトルへの分岐を検出することができる。
【0102】
1.13 プロトコルバージョン
ETM7およびETM9上の構成コードレジスタ(レジスタ0×01)内に存在する4−ビットETMプロトコルバージョンフィールドはETM用の将来のプロトコルバージョンをサポートするのに不十分であることが確認されている。したがって、マイナーおよびメジャー訂正番号だけでなく意図するARMコアを指定するフィールドを含む新しいETM IDレジスタが定義されている。このレジスタはレジスタアドレス0×79へマッピングされ、構成レジスタ内のビット31がセットされる時は常に有効と見なされる。それによりETM7およびETM9はIDレジスタを必要とせずにプロトコルバリアント0−7を使用することができる。ETM IDレジスタは下記のフィールド内へ分散される32ビット値を含む。
【表4】
Figure 0003766035
ETM rev0はID値0×41012100を有する。
【0103】
1.14 トレース開始/停止リソース
TraceEnable開始/停止論理の現在状態を与える新しいイベントリソースが含まれる。これにはリソース番号101 1111が与えられ(ARMIHI 0014Dの3.3.4章参照)、Trace Start/Stopがアクティブである時は常に表明しなければならない。開始/停止リソースをサポートするETMバージョンはETM制御レジスタ内のビット23も表明する。
【0104】
1.15 TPA変更
全てのTPAはARM10用の新しいトリガーおよびトレースディセーブル状態値をサポートするためのマイナー変更が必要である。すなわち、それらはTRおよびTD PIPESTATsを検出するためにPIPESTAT[3]/TRACESYNCがローであることを保証しなければならない。AgilentnTraceはマイナーハードウェア変更も必要である。デマルチプレクド、ハーフスピードETMポートを介した高速トレーシングをサポートするために、TPAは各サイクル内でトレースデータの2コアサイクル分を捕捉できなければならない。このデータはMictorコネクタを横切って同報される。したがって、多数のコネクタに対するサポートも必要である。これらの変更に関するより詳細な情報については参照4を参照されたい。
【0105】
1.16 精密イベント
ETM7およびETM9において、Eventブロックを介して発生されるイベントは精密ではなく、それはユーザはデータアクセスまたはEventを発生した命令をトレースすることを保証されなかったことを意味する。ETM10に対してはもはやそうではない。ViewDataおよびTraceEnableの表明はそれがどのように発生されるかにかかわらず常に精密である。
【0106】
1.17 FIFOFULLレベルレジスタ
ETM7およびETM9レジスタに対して、FIFOFULLが表明される前にFIFOが達しなければならないレベルをセットするのに0×0Bが使用された。ETM10、FIFOFULLに対してこのレジスタは使用されず替わりに、イネーブルされると、FIFOFULLはその中に新しいパケットが置かれる時は常に表明される。ETM10はETM7/9よりも深くパイプラインされ、FIFOFULLはこのように使用される場合に有用となるのに十分早くしか表明できない。ETM10において、FIFOFULLレジスタはFIFOサイズを指定するリードオンリーレジスタとして再使用される。FIFOサイズはETM7/9内でソフトウェアにより決定することができないサイズである。
【0107】
1.18 トリガー出力
プロセッサがモニターデバッグモードであれば、DBGRQは無視される。したがって、トリガーが生じていることを認識することができる他の機構を有することが有用である。このために、単一ビットTRIGGER出力がETM10用ETMインターフェイスに追加されている。TRIGGER出力は4−ビットTRIGGER状態がPIPESTATバス上で駆動される時は常に表明される。次に、この信号を割込みコントローラが使用して割込みの表明を介してトリガーのコアを知らせることができる。TRIGGER出力は不要であれば追加しないままとすることができる。
【0108】
1.19 カウンタイベント
ETM7/9に対して、カウンタイベントレジスタは連続的にカウントするのに使用することができる余分なビット17を有する。このビットはその動作が冗長性で検証することが困難であるため除去されている。連続的カウンタが欲しい場合には、ユーザは常にアクティブとかべきハードワイヤである外部リソース15に等しいイベントを単純にプログラムする。
【0109】
ETM10トレースポート
1.20 ETM10ポート信号
ETM10トレースポートは2つの信号、PIPESTATおよびTRACEPKT、からなり共にTRACECLK(GCLKと同じ周波数を有する)の立上り縁において有効である。PIPESTATは分岐ファントム用符号化スペースを追加するためにETM10に対して3ビットから4ビット信号へ拡張されている。TRACEPKTは従来のETMバージョンから変更されておらず、構成に応じて4,8,または16ビットとすることができる。同期はもう一つの機構を介して達成されるため、TRACESYNCピンはプロトコルから除去されている。全般的結果は従来のETMインプリメンテーションと同じピンカウントを有するトレースポートとなる。
【0110】
1.21 PIPESTAT符号化
【表5】
Figure 0003766035
【0111】
1.21.1 分岐ファントムPIPESTATs
下記の命令と並列に実行される分岐ファントムを考慮するために8つの新しい分岐ファントムが付加される。これらの符号化は常に実行ストリームの最初である分岐命令として解釈しなければならない。直接分岐だけが予測され、分岐ファントムはFIFO内にデータパケットを置くことはない。並列に実行されるいかなる命令も不正命令ストリームからのものでありしたがってキャンセルされるため、誤予測される畳込み分岐により正規のIE/IN PIPESTATが生じる。
【0112】
1.21.2 Data PIPESTATs
‘D’で始まる全てのにニューモニックはある種のデータパケットがサイクルするFIFO内に置かれいずれTRACEPKTピン上に出力されることを意味する。新プロトコルに対する‘パケット’という語はFIFO内の単一バイトではなくFIFOに置かれる多バイト量のことであることをお判り願いたい。データパケットは分岐アドレス、ロード/ストア転送、CPRT転送、または補助データパケットとすることができる。ETM10は1サイクル内に最大3つのデータパケットをFIFO内に置く(2つのLDST/CPRT転送と1つの分岐アドレスパケット)。1サイクル内3パケットはプロトコルではなくハードウェアの制約である。別々のデータおよび分岐PIPESTATsの必要性はプロトコルにパケットヘッダーバイトを追加することにより除去されている。DWおよびDN状態値を追加することによりに任意のサイクルにデータパケットを付加することができる。この追加はLDSs/STCsの長さを決定するコプロセッサマップがもはや不要であり、可変長LDC/STC命令のトレーシングがサポートされることを意味する。パケットヘッダーバイトについては5.3章により詳しく説明されている。
【0113】
1.21.3 命令PIPESTAT
非待機PIPESTAT値、すなわち命令が実行されたことを示すもの、は常に命令が実行されている第1サイクル上に与えられる。この区別は数サイクルに対してデータを実行して戻すLSM命令にとって重要である。この動作は、LSMが実行されたLASTサイクルに実行したPIPESTAT値を与える、従来のプロトコルバージョンとは異なっている。
【0114】
“実行されない”PIPESTATs(IN/DN)は2つの理由により生じる。命令がその条件コードに失敗したか、または例外により実行されなかった。前記したように、可能な例外は割込み、プリフェッチ中断、およびリセット表明を含んでいる。データ中断となるロード/ストア命令は実行されていると考えられるためIN/DN状態を与えられない。伸張器は例外により命令の実行が防止される時を知る必要がある。この情報は前のLSM命令からの遅いデータパケットが例外命令に付加されるのを防止するのに使用される。(“実行されない”PIPESTATを有する命令が考慮される唯一のデータパケットは分岐アドレスである)。
【0115】
1.21.4 TD状態およびTFOs
TDの状態はこのサイクルのTRACEPKT上にトレースFIFOデータが存在しないことを意味する。なぜそれが起こるかについて2つの理由がある。
・FIFO内にトレースされるデータがない(FIFOが空でなければ、状態はWTである)。特に、トレースがディセーブルされるすぐ後で次にイネーブルされるまで生じる。
・ETM同期のためにTFOが同報される。
【0116】
PIPESTAT上にTD状態が与えられると、伸張ソフトウェアはTRECEPKTを見てTFOが同報されているかどうかを確認する必要がある。従来のETMインプリメンテーションで行われるように、cycle−accurateおよびnon−cycle accurateトレース間を区別するのにTRECEPKT[0]が使用される。前と同様に、Trace Capture DevicesはTRECEPKT[0]=0であればTDサイクルを廃棄することができる。TRECEPKT[0]が表明されると、TFOが同報されるかどうかを指定するのにTRECEPKT[3:1]が使用される。TFOが同報される場合には、TRECEPKT[7:4]がTFO値の下位4ビットを指定する。TRECEPKT[3:1]はTFO値の残りを下記の表に与えられるように指定する。TFOはこのように符号化されて有効なTFO値の範囲を最大とする。
【表6】
Figure 0003766035
【0117】
トレース情報を伸張してパイプライン状態(PIPESTAT)とFIFO出力(TRACEPKT)間を同期させる時にTFOまたはTrace FIFOOffsetが使用される。トレースが最初にイネーブルされる時および命令同期カウンタが0に達する時は常にTFOが発生される。Trace FIFOoffsetは従来のETMインプリメンテーションにおいて使用されたアドレスパケットオフセット(APO)情報を置換する。分岐をカウントするのではなく、TFOは現在FIFO内にあるバイト数をカウントする。このような同期によりプロトコル内のTRACESYNCピンに対する必要性がなくなる。また、BE PIPESTATでトレーシングを開始してAPO値に対する2つのデッドサイクルが続く必要性もなくなる。
【0118】
トレースが既にイネーブルされている間にTFOが同期のために同報される時は常に、IEのPIPESTAT値が含まれる。TFOが同報されてトレーシングを開始する時は、PIPESTATは含まれず最初にトレースされた命令に対するPIPESTATが下記のサイクル内で与えられる。
【0119】
下記の全ての規準が満たされる時は常に同期TFOが発生される。
・典型的に1024に初期化されたサイクルカウンタが0に達する
・現在命令が‘IE’のPIPESTAT値を有する
【0120】
同期要求が表示されると、TFOサイクルカウンタは命令同期レジスタ内へプログラムされている値へリセットされ(デフォルト値は1024)カウンティングを再開する。第1の同期要求がサービスされる前に第2の同期要求がなされるケースでは、強制的に同期を起こさせる方法としてETMは強制的にオーバフローされる。このシナリォではあるトレースが失われるが、それが起こってもプロセッサは無限ループに張り付いている可能性が高いため問題になるとは思われない。したがって、有意トレースは失われない。そうならない唯一のケースは同期カウンタがある途方もない低い数にセットされる場合である。したがって、同期値をあまり低く(50サイクルよりも低い)セットすることは勧められない。
【0121】
TFOサイクルが生じると、サイクルするFIFO上にデータの数バイトが置かれる。このデータはTFOパケットと呼ばれ、典型的には特殊なヘッダーバイト、現在CONTEXT ID、および全命令アドレスからなっている。TFOパケットに対する適切なフォーマットが5.4章に与えられている。
【0122】
4−ビットTRACEPKT構成において、バイトの第2のニブルが予期される時にTFOが生じると、TFO値にすぐ続いてTRACEPKT[3:0]上に値‘0×6’の余分なニブルが出力される。TFO値はニブルではなくバイトで同期を指定するためこのニブルが必要である。この余分なニブルを出力することにより、ETM10はTFO値により指示されたFIFOの現在のトップが常にバイト一致されることを保証する。同期が不要であるケースに対してこの余分なニブルはTRACEPKT[3:0]上に現れることを伸張器が知っていることが重要である。TFOが同期によるものかあるいはイネーブルされるTraceによるものかにかかわらず、TFOが奇ニブル上に発生される時は常に伸張器はこの余分なニブルを予期しなければならない。完全なTFO値(および、所望により、余分なニブル)がTRACEPKT[3:0]上に出力されるまでFIFO出力は遅延される。
【0123】
1.21.5 トリガー状態
トリガー状態(TR)はこのサイクルに対する実際の4−ビット状態がTRACEPKT[3:0]上に置かれFIFO出力が1サイクルだけ遅延されることを暗示する。動作はETM7およびETM9と同一である。トリガーおよびTFOを同時に生じさせたい場合には、TRACEPKT[3:0]上のPIPESTAT値はTDである。WT pipestatはトリガーが生じる時にTD pipestatへ変換されることがないため、これは真のTFOとして一意的に識別することができる。4−ビットポートのケースでは、TFO同報(またはギャップサイクル)の第2サイクル内でトリガーを生じさせたい場合、トリガーが生じてFIFO出力は余分なサイクルだけ遅延され残りのTFOニブルを出力する。したがって、トリガーは遅延されることはなく発生するとすぐに出力されることが保証される。
【0124】
1.22 パケットヘッダー符号化
‘D’符号化を有するPIPESTATによりパケットはFIFO内に置かれる。単一サイクル内に3パケット(2データパケットおよび1分岐パケット)までをFIFO内に置くことができる。パケットヘッダー値に対する符号化は次のようである。
【表7】
Figure 0003766035
Figure 0003766035
【0125】
データヘッダー上のCビットは単一サイクル内にどれだけ多くのパケットがFIFO内に挿入されるかを伸張器に知らせるのに使用される。最後のパケットを含まない挿入された各パケットに対してCビットが表明される。これはどのパケットがどのサイクル、したがって、どの命令と結ばれるべきかを伸張器が知るのに必要である。このCビットは小文字‘c’で示されるアドレス連続ビットと混同してはならない。
【0126】
1.22.1 分岐アドレス
分岐アドレスは従来のETMインプリメンテーションと同様な方法で符号化される。分岐パケットはやはり1−5バイト長であり、Cビットがイネーブルされる時は常に伸張ツールはより多くのバイトを予期しなければならない。しかしながら、ThumおよびARM状態間を区別するのにもはや分岐アドレスのビット0は使用されない。替わりに、全ての分岐アドレスが第33ビット位置の1により接頭され、予圧縮される。圧縮されると、全ての分岐アドレスが第0ビット位置の1により接尾される。ビット0の1はパケットを分岐アドレスとして識別し、ビット33の1はARMおよびThumbアドレスを区別するのを助けるために使用される。ARMアドレスは語整列(word aligned)しなければならないため、ARMアドレスのビット[31:2]だけが同報される。Thumbアドレスは半語制限されるためビット[31:1]だけ同報すればよい。組み合わされたARMおよびThumbアドレスに対して異なるビット数を同報し第33ビットが常に表明された予圧縮を有することにより、ARMおよびThumb状態間の遷移で完全な5バイトアドレスが同報されることを保証する。さらに、下記の表に示すように、ARMおよびThumbアドレスは第5アドレスバイトの高次ビットにより常に一意的に識別することができる。
【表8】
Figure 0003766035
【0127】
存在すれば、分岐目的アドレスは常に所与のサイクルでFIFO内へ置かれる最後のアイテムである。したがって、パケット連続ビット(Cビット)は不要である。理由コードはTFOパケットヘッダーの一部として与えられるため、もはや第5バイト内のアドレスビット6:4で同報されず、それは5.4章で検討されている。第5バイトのビット6は例外分岐アドレス(上表に‘E’で示される)を示すのに使用される。このビットは中断、割込み、またはソフトリセットにより任意の分岐上にセットされる。これはこれらの割り込まれた命令が実際には実行されなかったことを伸張器が認識してユーザに示すことができるようにするのに有用である。第5アドレスバイトのビット7およびビット5は将来使用するために保存されたままである。
【0128】
1.22.2 正規データ
正規データヘッダーはキャッシュ内でミスしない全ロードおよびストアデータパケットに対して使用される。CPRTデータトレーシングがイネーブルされれば、それはCPRTデータパケットにも使用される。データアドレストレーシングがイネーブルされれば、データアドレスはヘッダーパケットの後で、存在する場合の、データ値の前に同報される。データアドレスは命令分岐アドレスと同じ圧縮技術を使用して同報され、したがって1−5バイトからなっている。従来のETMインプリメンテーションに対してそうであるように、データアドレスがトレースされるかどうかはトレーシングを開始する前に静的に決定しなければならない。単一サイクル内で2つの正規のデータパケットが与えられる(64ビットデータ転送により)場合には、第1のパケットだけがデータアドレスを含んでいる。LSM命令に対するデータが同報される場合には、後続データパケットは異なるサイクルで転送されても、データアドレスは第1のデータパケットだけで同報される。正規データヘッダー内の‘A’ビットはそれが特定の命令に対する第1のデータパケットであることを指定するのに使用され、したがって、データアドレスを予期しなければならない(アドレストレーシングがイネーブルされる場合)。この情報をヘッダーバイト内で利用できることにより、コードの伸張できないセクション(すなわち、2進が利用できない任意の領域)をトレーシングする時に伸張器は同期を維持することができる。‘A’ビットはCPRTパケット上に表明されない。
【0129】
正規のデータ符号化における‘MSS’ビットはデータ値圧縮に使用される。Mビットがローであれば、SSビットは転送されるデータ値のサイズを指定する。データ圧縮の単純な形式として先導するゼロが除去される。予備実験はこの圧縮技術によりおよそ20−30%の圧縮が得られことを示しており、それはヘッダーバイトの追加帯域幅コストをオフセットするのに十分である。Mビットセットによる符号化は将来の圧縮技術のために保存される。MSSビットに対する正確な符号化は下記の表に与えられる。
【表9】
Figure 0003766035
Figure 0003766035
【0130】
1.22.3 ロードミス
Load Miss OccurredおよびLoad Miss Dataヘッダータイプはデータキャッシュ内でミスするロード要求を処理する。ロードミスが生じると、データ値が予期されるFIFO内にLoad Miss Occurredパケットが置かれる。データアドレストレーシングがイネーブルされると、パケットはデータアドレスを含む。そうでなければ、パケットはLoad Miss Occurredヘッダーバイトだけからなる。Load Miss Occurredパケットが読み出されると、伸張ソフトウェアはデータ値が顕著なミスであることを知り、それは後で戻される。データが戻されると、そのサイクルに対するPIPESTAT値は‘+DATA’バージョンへ修正され、Load Miss Dataヘッダーバイトおよび実際のデータ値からなるLoad Miss DataパケットがFIFO内に置かれる。Load Miss Dataパケットはデータアドレスを含むことはない。ロード/ストアユニットはLoad Missデータへ戻るフリーサイクルを持たなければならないため、このデータはもう一つのロードまたはストア要求に対するデータと同じサイクル内に戻されることはない。
【0131】
Load Missヘッダータイプ内の‘TT’ビットは各ロードミスを識別するためのタグとして使用される。Load Miss Occurredパケットは常にその対応するLoad Miss Dataパケットと同じタグ値を有する。ARM1020Eは一時に一つの顕著なLoad Missしかサポートしないが、第1のミスに対するデータが戻さされる前に第2のロードミスパケットを同報することができる。したがって、全てのロードミスを一意的に識別するために、タグ値2’b00および2’b01がETM10 rev0上でサポートされる。より多くの顕著なミスを許すことができる将来のプロセッサをサポートするためにタグフィールドに2ビットが割り当てられている。さらに、ARM1020Eは常にミスデータを順に戻すが(他のロードミスに対して)、このタギング機構は狂った順でミスデータを戻すことができる将来のプロセッサをサポートする。
【0132】
64ビットロード値上でミスが生じる場合には、同じサイクル内でFIFO内に2つのLoad Missパケットが置かれる。両パケットが同じタグ値を有しかつ同じサイクル内でFIFO内に置かれるため、伸張器はこれら2つのミスは単一64ビット値に対するものであることを知る。正規のデータパケットと同様に、データアドレスは第1のLoad Missパケットだけで存在し、既にデータパケットを同報しているLSMの中間でミスが生じる場合には存在しない。64ビットのケースに対してLoad Missデータが戻される場合には、それは常に同じサイクル内に与えられる2つの別々のLoad Miss Dataパケットとして戻される。両方のパケットが同じミスタグを有する。
【0133】
ロードミスデータパケットはサイズ情報に対するMSSビットおよび正規のデータに対して行われるデータ圧縮を使用する。伸張器が予期せぬLoad Missデータパケットを受信する場合(すなわち、同じタグを有するペンディングミス発生パケット無しでミスデータパケットが与えられる)、それはサイズ内に与えられた指定されたバイト数にわたってスキップしなければならない。顕著なミスデータが戻される前にトレースがディセーブルされる場合には、このデータアイテムは利用できるようになり次第‘DW’PIPESTATを有するFIFO内に置かれる。オーバフローまたはエグジットしたデバッグの理由コードによりトレースがイネーブルされる場合、伸張器は任意のペンディングLoad Missパケットをキャンセルしなければならない。
【0134】
1.22.4 補助および完全可視性データトレーシング
補助および完全可視性データヘッダー符号化はプロトコル内の拡張性のために取っておく保存されたスロットである。これらのパケットタイプはプロセッサ内部および外部の補助データをトレーシングするのに使用することができる(完全可視性は全レジスタファイル更新をトレーシングすることである)。他のデータパケットと同様に、補助データパケットはサイズ情報に対するSSビットを利用する。完全可視性データトレーシングはさらなる圧縮のためのMビットもサポートする。これらのパケットタイプはETM10rev0上で使用されない。
【0135】
1.22.5 ContextID
Context IDヘッダーバイトはContext IDがContext ID更新命令、MCR c15,0,rd,c13,c0,1を介して修正される時だけ使用される。データ値のサイズはETM10コントロールレジスタ(レジスタ0×0,ビット[15:14])内に指定されたContext IDサイズにより静的に決定される。新しい値が指定されたバイト数よりも大きい場合でも、指定されたバイト数だけがトレースされる。サイズがゼロとして指定される場合には、Context ID更新はトレースされない。たとえContext ID更新命令がMCRであっても,Context ID値トレーシングは他のCPRT命令からのトレーシングデータ値から完全に独立している。それはETM10コントロールレジスタ(レジスタ0×0,ビット[1])内のMonitor CPRTビットにより影響されない。Context ID更新に対する一意的ヘッダー値を使用することにより伸張器は伸張不能なコード領域(すなわち、2進が利用できない任意の領域)をトレーシングする場合であってもContext ID変更を認識することができる。
【0136】
1.22.6 トレースされない値
従来のETMインプリメンテーションはLSM操作に対してデータ値を全てトレースできるかどれもトレースできないかだけであり、この判断は最初の転送時になされている。今日のコンパイラーは隣接するLDR/STR操作を結合してユーザに最も気付かれないLSMとするため、この動作は望ましくない。Value Not Tracedパケットの追加により、我々はLSMを部分的にトレースしてトリガー基準に厳密にマッチするデータ値しか出力しない能力を追加した。
【0137】
LSMに関連する第1のデータ値がトレースされる時は常に、データアドレス(アドレストレーシングがイネーブルされる場合)およびデータ値(データ値トレーシングがイネーブルされる場合)を含むFIFO内に正規のデータパケットが置かれる。このLSMに対する全ての後続データ転送によりFIFO内にパケットが置かれる。後続する値がトレースされる場合には、データ値だけを与える正規のデータパケットがトレースされる。後続データ転送をトレースしてはならない場合には、これらの転送に対してFIFO上にValue Not Tracedパケットが置かれる。Value Not TracedパケットはValue Not Tracedヘッダーバイトだけからなっている。次に、伸張ソフトウェアは正規のデータパケットと組み合わせてValue Not Tracedパケットを使用して、最終データ転送から後ろ向きに進むことによりどのLSM値がトレースされどれがトレースされていないかを確認する。前記したように、LSM命令上でトレーシングが開始すると、命令が完了する前にTraceEnableが表明停止されても、それはLSMが完了するまで続くことをお判り願いたい。
【0138】
1.22.7 保存
データヘッダー符号化内に残っている合計10の保存されたスロットがある。これらのスロットは全て必要に応じてプロトコルを強化するためおよび/または将来のETMインプリメンテーションに使用するために利用することができる。将来のETMインプリメンテーションによりさらに多くのヘッダータイプが必要とされる場合でも、Normal DataおよびFull−Visibility Trace符号化内のMビットは圧縮の替わりに新しいデータヘッダー符号化のために使用することもできる。
【0139】
1.23 TFOパケットヘッダー符号化
TFOパケットはTFOサイクルによりFIFO内に置かれる(5.2.4章に記載されている)。伸張器はTFOによりいつパケットがFIFO内に置かれるを知るため、TFOパケットはそれ自体のヘッダーバイト符号化を有し、それらはPIPESTATデータパケットにより使用される符号化スペースから完全に独立している。TFOパケットヘッダー符号化を下記に示す。
【表10】
Figure 0003766035
【0140】
1.23.1 命令アドレス
TFOパケットの第1バイトに対してTRACEPKT[1:0]!=2’b10であれば、このTFOパケットは命令アドレスだけからなっている。完全なアドレスが常に必要とされるため、圧縮は試みられずアドレスは常に4−バイト値として出力される。アドレスのビット0はそれがThumbまたはARM命令アドレスであるかどうかを指定する。TFOパケットが命令アドレスだけからなる場合、それは、
・CONTEXT ID値がトレースされない(ContextIDSize,ETM Controlレジスタビット[15:14]により決定される)
・TFO理由コードは2’b00,正規同期である
ことを意味する。
理由コードが非ゼロであるかあるいはCONTEXT ID値がトレースされる場合には、下記のTFOパケットの中の1つが必要である。アドレスだけからなるTFOパケットはプロトコルコンライアンスを厳密には要求されずETM10
rev0上でインプリメントされない。
【0141】
1.23.2 正規TFOパケット
正規TFOパケットはCONTEXT IDの0−4バイトが続き、4−バイト命令アドレスが続くヘッダーバイトからなる。トレースされるCONTEXTIDバイト数はETM Controlレジスタビット[15:14]により静的に決定される。命令アドレスは常に4バイトであり圧縮はされない。ビット0はThumbビットを指定する。TFOヘッダーバイトは2−ビット理由コードを含んでいる(前記表においてRRとラベルが付されている)。これらの理由コードはプロトコルバージョン0および1においてETM7およびETM9により使用されるものと一致している。理由コードは下記の表に与えられる。
【表11】
Figure 0003766035
【0142】
1.23.3 Progress TFOパケット内のLSM
Progressパケット内のLSMはマルチメモリアクセス命令(LDM,STM,LDC,またはSTC)の中間でトレースがイネーブルされ、もう一つの命令が現在実行している時だけ生じる。これらのパケットはCONTEXT IDの0−4バイトが続き、LSMに対する4−バイト命令アドレスが続き、現在実行している命令に対する圧縮されたアドレスの1−5バイトが続くヘッダーバイトからなる。LSM命令はビット0がThumbビットを指定する固定4−ビットアドレスである。現在命令アドレスが分岐アドレスと同じ技術を使用して圧縮される(5.3.1章に指定されているように)。最後の命令アドレスはLSM命令からの完全なアドレスに関して圧縮される。次の命令PIPESTATは第2のアドレスにより指示された命令に対するものであり、トレースはこの点から順方向に正規の方法で開始する。このパケットタイプは特定のデータアドレスまたはデータ値に接触する全ての命令を適切にトレーシングするために必要である。それがないと、LSM命令はデータアドレスに基づいて適切にトレースすることができない。たとえトレーシングがLSM自体の間しかターンオンされないようにプログラムされていても、LSMの下で生じる命令はトレースされることをお判り願いたい。同様に、たまたまLSMの下で実行するばかりの命令の命令アドレスによりトレースがターンオンされる場合には、Progress TFOパケット内のLSMはまだ出力される。Normal TFOパケットとLSM in Progress TFOパケットとの間の違いをさらに明瞭にするために、下記の表は各ケースに対して予期すべきバイトを示している。
【表12】
Figure 0003766035
【0143】
ARM10 TRACEインターフェイス
この章はARM1020EとETM10間の信号インターフェイスについて説明する。大部分のインターフェイスはARM1020EによりETM10内へ駆動される。信号記述はカスタムデータパス入力、合成制御入力、およびETM出力へ分割される。合成制御信号は後で変更することができるが、データパス信号変更にはカスタム論理リワークが必要であるため、これらは設計の遅い時期に変更することができない。全入力がETM10のすぐ内側に記憶され、全出力がレジスタの出力から直接駆動される。インターフェイスは合計220の信号からなり、それは213の入力およびETM10配景からの4出力を含んでいる。
【0144】
1.24 ETM Datapth入力
ETMデータトレーシングに対して関心のある4つのデータバス、ロードデータ、ストアデータ、MCRデータ、およびMRCデータがある。これら4つのバスの全てが64ビット幅である。任意所与のサイクルにおいてこれらのバスの1つしか有効データを含まないことがあるため、4つのバス全てがARM1020E内で台なしにされて64ビットデータバスETMDATAとなってしまう。ETMDATAはARM1020E内に記憶された後でETMへ駆動される。ETMDATAはARM1020Eパイプラインのライト(WR)段階で有効である。ARM1020EからETM10へ駆動される4つのアドレスバスがある。これらのバスの中の3つは命令アドレス用であり1つはデータアドレス用である。IAおよびDAアドレスバスがメモリ(ME)段階で有効である間にR15バスはARM1020Eパイプラインの実行(EX)段階でETMへ駆動される。ETMへ駆動される全データバスが下記の表に与えられている。
【表13】
Figure 0003766035
【0145】
1.25 ETM制御入力
1.25.1 ETMCORECTL[23:0]
ETMCORECTLは全てがARM10コアから来る多様な制御信号を含んでいる。これらの信号は全てコア内に記憶され、この共通バス上に結合されてからETM10へ駆動される。このバス上に存在する制御信号とそれらの意味は下記の表に与えられている。特記なき限り、これらの全てがARM1020Eパイプラインのライト段階(WR)において有効である。
【表14】
Figure 0003766035
Figure 0003766035
【0146】
1.25.2 ETMDATAVALID[1:0]
この信号はバスETMDATA[63:0]上で駆動されるデータを限定する。データバスの半分毎に1ビットがある。
【0147】
1.26 ETM出力
この章はARM1020E内へ帰還されそこから要求される出力について説明する。
【0148】
1.26.1 FIFOFULL
イネーブルである時に、FIFO内に置かれたバイトがある時は常にETM出力FIFOFULLが表明され、FIFOが空になるまで表明されたままである。この動作は、FIFOFULLを表明する前にFIFOがある特定レベルに達するまで待機した、ETM7/9とは幾分異なる(4.16章参照)。FIFOFULLはARMパイプラインを停止するために、ここではARM1020Eである、コアにより使用される。これはETMオーバフローを防止し、イベントのタイミングを幾分変える副作用がコア内で生じるが完全なトレースを保証する。タイミングを考慮するため、FIFOFULLの表明によりARM1020Eが即座に停止することがない。したがって、まれではあるが、FIFOFULLが表明される時でもオーバフローを有することがありうる。これが生じると、FIFOが徐々に空になる間プロセッサは停止したままであるため(FIFOFULL表明により)、ミスした命令数は少ない。
【0149】
1.26.2 PWRDOWN
ハイであれば、これはETMが現在イネーブルされておらずCLK入力は停止できることを示す。これはトレースが使用されない時に消費電力を低減するのに使用される。リセットされると、ETM10がプログラムされてしまうまでPWRDOWNが表明される。ARM10200テストチップはETM10 CLK入力をゲートするのに直接PWRDOWN出力を使用しなければならない。前記したように、PWRDOWNはCONTEXT ID更新上で一時的にディセーブルされてETM10の内部CONTEXT IDシャドーレジスタ上の更新を考慮する。CONTEXT ID更新ケースを除けば、PWRDOWNはTCLKに同期して変更されデバッグセッションの始めにARMデバッグツールによりクリアされる。PWRDOWN変更はトレースがイネーブルされる前に巡回するため、ETM10 CLKをゲートするのにTCLKベース信号を使用してもメタ安定性問題は生じない。
【0150】
1.26.3 DBGRQ
従来のETMと同様に、ETM10はトリガー状態が生じる時は常にDBGRQを表明するようにプログラムすることができる。DBGRQはDGBACKが観察されるまで表明されたままとされる。DBGRQははARM1020E外部デバッグ要求ピンEDBGRQに接続しなければならない。このETM出力にはARM1020Eからの余分なサポートは不要である。ASIC内の他の機能ブロックによりEDBGRQ入力が既に使用されている場合には、多数のDBGRQ信号を一緒にORすることができる。デバッグをこのようにイネーブルしても任意特定の命令境界に遭遇することは保証されないことをお判り願いたい。さらに、ARM10が現在ハードウェアデバッグモードであればコアはEDBGRQを認識するだけである。
【0151】
1.26.4 TDO
ETM10は従来のETMバージョンと同じTAPインターフェイス配線を使用する。TDOピンがARM1020E走査拡張入力SDOUTBSに接続されている。ETM10レジスタは走査チェーン6を介してアクセスされ従来のETMインプリメンテーションと同じ方法でプログラムされる。このETM出力にはARM1020Eからの余分なサポートは不要である。
【0152】
構成
ETM7/9は小型、中型および大型構成で入手することができる。中型および大型構成は追加エリアのコストでより多くのトリガーハードウェアリソースおよび増大されたFIFO深さを提供する。新しい構成のソフトマクロを単純に再合成するだけでさまざまなASICアプリケーションに対するさまざまな構成を選択することができる。ETM10は同様な構成範囲を提供する。下記の表はETM10に対して現在提示されている構成を示す。大概のトリガーリソースはETM7およびETM9と同じであるが、64ビット比較器の大きなサイズにより8から4へ減少された大型構成のデータ比較器は例外である。各構成における増大したFIFOサイズはARM1020Eのより高い命令スループット(すなわち、性能)をサポートする必要性を反映している。各構成に対するFIFOサイズはエリアインパクトおよび性能モデリングからの帰還に基づいて増加することができる。ETM10構成に対して与えられるゲートカウントはETM10 rt1モデルの初期合成に基づいた推定値である。これらの推定されたゲートカウントは最終インプリメンテーションにより達成されるものとは異なることがある。大きなサイズのETM10はARM10200テストチップ上に置かれるものである。各カテゴリ内のETM9に対する対応するリソース数が比較のために括弧内に与えられている。
【表15】
Figure 0003766035
【0153】
特定の実施例について説明してきたが、本発明はそれに限定されるものではなく、発明の範囲内で多くの修正および追加を行えることは明らかである。例えば、本発明の範囲を逸脱することなく従属項の特徴を独立項の特徴とさまざまに組み合わせることができる。
【図面の簡単な説明】
【図1】オンチップトレーシング機構を提供するデータ処理システムを示す略図である。
【図2】図1のオンチップトレースモジュール内に設けられる素子の詳細を示すブロック図である。
【図3】命令セット情報に命令アドレスを取り入れるために本発明の好ましい実施例において使用される符号化を示す略図である。
【図4】図3に示す方法に従って符号化されたアドレスが本発明の好ましい実施例に従ってどのように圧縮されるかを示す略図である。
【図5】3命令系列の例に対する圧縮論理の出力を示す略図である。
【図6】本発明の好ましい実施例に従って使用される符号化および圧縮論理を略示するブロック図である。
【図7】図6の33−ビットセクターの動作を示す略図である。
【図8】図6に示す比較器の1つの構造を示す略図である。
【図9】図6に示す連続ビット発生器を実現するために好ましい実施例で使用される論理を示す図である。
【図10】好ましい実施例の圧縮符号化命令アドレス発生器により実施されるプロセスを示す略図である。
【符号の説明】
2 データ処理システム
4 集積回路
6 マイクロプロセッサコア
8 キャッシュメモリ
10 オンチップトレースモジュールコントローラ
12 オンチップトレースバァッファ
14 外部メモリ
16 汎用コンピュータ
18 外部記憶装置
100 同期論理
110 トリガー
120 制御論理
610,800,820 レジスタ
620 33−ビットセクター論理
630 ラッチ
622,623,624,625 7−ビット幅バス
640,650,660,670 比較器
680 連続ビット発生器
690 圧縮符号化命令アドレス発生器
700 マルチプレクサ
830 比較器論理
910,920,930 ORゲート

Claims (22)

  1. データ処理装置であって、前記装置は、
    処理命令の複数の命令セットのいずれかからの処理命令を実行する処理回路であって、各処理命令はメモリ内でのその処理命令の場所を識別する命令アドレスにより指定され、命令アドレスは関連する処理命令が属する命令セットに無関係に予め定められたビット数を有するが、異なる命令セット内の処理命令を一意的に識別する命令アドレス内に異なる数の最上位命令アドレスビットを指定する必要がある処理回路と、
    その命令に対応する命令セットの表示を有する少なくとも1つの命令アドレスを符号化してn-ビット符号化命令アドレスを発生する符号化論理であって、前記符号化論理は指定される必要のある命令アドレスビットを形成しない任意の最下位ビットを除去し、指定された命令アドレスビットへビットパターンをプリペンドすることにより指定された命令アドレスビットをn-ビットへ拡張するのと等価の計算を実施することにより符号化を実施するようにされており、除去される最下位ビット数およびプリペンドされるビットパターンはその命令に対応する命令セットによって決まる符号化論理と、
    を含む装置。
  2. 請求項1記載の装置であって、符号化論理は処理回路のアクティビティをトレースするのに使用されるトレースモジュール内に設けられる装置。
  3. 請求項1記載の装置であって、各命令セットに対してその命令セットからの命令アドレスの指定された命令アドレスビットへプリペンドされたビットパターンはシフトされたパターンにより異なる命令セットの命令アドレスの指定された命令アドレスビットへプリペンドされたビットパターンと関連づけられる装置。
  4. 請求項1記載の装置であって、符号化論理は命令アドレスの指定された命令アドレスビットへ予め定められたビットパターンをプリペンドし次に符号化命令アドレスとして中間値からnビットを選択することにより中間値を発生するのと等価の計算を実施することにより符号化を実施するようにされている装置。
  5. 請求項1記載の装置であって、さらに、その符号化命令アドレスを複数のx-ビットセクションへ分割し、各x-ビットセクションを先行する符号化命令アドレスの対応する各x-ビットセクションと比較し、圧縮符号化命令アドレスとして先行する符号化命令アドレスの対応するx-ビットセクションとは異なる最上位x-ビットセクションを任意のより下位のx-ビットセクションと共に出力するのと等価の計算を実施することにより前記符号化命令アドレスを圧縮する圧縮論理を含む装置。
  6. 請求項記載の装置であって、圧縮論理はそこから出力される各x-ビットセクションにx-ビットセクションが圧縮符号化命令アドレスとして出力される最後のx-ビットセクションであるかどうかを示すフラグを関連づけるようにされている装置。
  7. 請求項記載の装置であって、複数のx-ビットセクションが圧縮論理から出力される場合には、複数のx-ビットセクションは最下位x-ビットセクションで開始して逐次出力される装置。
  8. 請求項記載の装置であって、圧縮論理は、さらに、圧縮論理から出力される各x-ビットセクションをyビットへ拡張するようにされており、最上位y-xビットはフラグを含む装置。
  9. 請求項記載の装置であって、フラグは単一ビットである装置。
  10. 請求項記載の装置であって、yは8でありxは7である装置。
  11. 請求項1記載の装置であって、符号化論理は中間値を受信するn-ビットセクター論理ユニットおよび中間値内に含まれる命令アドレスに関連づけられた命令セットを識別する識別子信号を含み、n-ビットセクターは識別子信号に応じて中間値の予め定められたn-ビットを出力するようにされている装置。
  12. 請求項記載の装置であって、圧縮論理は複数の比較器を含み、各比較器が符号化命令アドレスの対応するx-ビットセクションを受信するようにされており、かつ先行する符号化命令アドレスの対応するx-ビットセクションを格納する一時記憶装置を含み、比較器は2つのx-ビットセクションを比較して2つのx-ビットセクションが異なる場合にセットされる差信号を発生するようにされている装置。
  13. 請求項12記載の装置であって、圧縮論理は、さらに、より高位のx-ビットセクションも出力される場合に特定のx-ビットセクションに対するフラグがセットされるように、複数の比較器により発生される差信号の予め定められた組合せに基づくフラグを圧縮論理から出力される各x-ビットセクションに対して発生するようにされている装置。
  14. 請求項13記載の装置であって、圧縮論理は、さらに、出力される各x-ビットセクションにその対応するフラグをプリペンドすることにより圧縮符号化命令アドレスを発生し、出力圧縮符号化命令アドレスとして一列のy-ビットセクションを発生する出力発生器を含む装置。
  15. 請求項記載の装置であって、符号化論理および圧縮論理は処理回路のアクティビティをトレースするのに使用されるトレースモジュール内に設けられる装置。
  16. データ処理装置用トレーシングツールであって、データ処理装置は処理命令の複数の命令セットのいずれかからの処理命令を実行する処理回路を有し、各処理命令はメモリ内のその処理命令の場所を識別する命令アドレスにより指定され、命令アドレスは関連する処理命令が属する命令セットに無関係に予め定められたビット数を有するが、異なる命令セット内の処理命令を一意的に識別する命令アドレス内に異なる数の最上位命令アドレスビット数を指定する必要があり、前記トレーシングツールは、
    その命令に対応する命令セットの表示を有する少なくとも1つの命令アドレスを符号化してn-ビット符号化命令アドレスを発生する符号化論理を含み、前記符号化論理は指定される必要のある命令アドレスビットを形成しない任意の最下位ビットを除去し、指定された命令アドレスビットにビットパターンをプリペンドすることにより指定された命令アドレスビットをn-ビットへ拡張するのと等価の計算を実施することにより符号化を実施するようにされており、除去される最下位ビット数およびプリペンドされるビットパターンはその命令に対応する命令セットによって決まるトレーシングツール。
  17. 請求項16記載の装置であって、さらに、符号化命令アドレスを複数のx-ビットセクションへ分割し、各x-ビットセクションを先行する符号化命令アドレスの対応するx-ビットセクションと比較し、圧縮符号化命令アドレスとして先行する符号化命令アドレスの対応するx-ビットセクションとは異なる最上位x-ビットセクションを任意のより下位のx-ビットセクションと共に出力することと等価の計算を実施することにより符号化命令アドレスを圧縮する圧縮論理を含むトレーシングツール。
  18. 命令セット情報の格納方法であって、処理回路が処理命令の複数の命令セットのいずれかからの処理命令を実行するようにされており、各処理命令はメモリ内のその処理命令の場所を識別する命令アドレスにより指定され、命令アドレスは関連する処理命令が属する命令セットに無関係に予め定められたビット数を有するが、異なる命令セット内の処理命令を一意的に識別するために命令アドレス内に異なる数の最上位命令アドレスビット数を指定する必要があり、前記方法は、
    指定される必要のある命令アドレスビットを形成しない任意の最下位ビットを除去し、
    ビットパターンを指定された命令アドレスビットにプリペンドすることにより指定された命令アドレスビットをn-ビットへ拡張する、
    のと等価の計算を実施することにより、その命令に対応する命令セットの表示を有する少なくとも1つの命令アドレスを符号化してn-ビット符号化命令アドレスを発生するステップを含み、
    除去される最下位ビット数およびプリペンドされるビットパターンはその命令に対応する命令セットによって決まる方法。
  19. 請求項18記載の方法であって、さらに、
    (a)符号化命令アドレスを複数のx-ビットセクションへ分割し、
    (b)各x-ビットセクションを先行する符号化命令アドレスの対応するx-ビットセクションと比較し、
    (c)圧縮符号化命令アドレスとして先行する符号化命令アドレスの対応するx-ビットセクションとは異なる最上位x-ビットセクションを任意のより下位のx-ビットセクションと共に出力する、
    ことと等価の計算を実施することにより前記符号化命令アドレスを圧縮するステップを含む方法。
  20. (i)圧縮符号化命令アドレスを形成するx-ビットセクション数を決定し、
    (ii)先行する符号化命令アドレスの対応するx-ビットセクションから得られる追加x-ビットセクションを取り入れることにより、必要に応じて圧縮符号化命令アドレスをn-ビットへ拡張して符号化命令アドレスを作り出す、
    のと等価の計算を実施することにより請求項19記載の方法に従って発生される圧縮符号化命令アドレスを伸張する方法。
  21. 請求項20記載の方法であって、さらに、予め定められたビットパターンから命令アドレスが関連する命令セットを決定し、予め定められたビットパターンを除去して指定された命令アドレスビットを得るのと等価の計算を実施することにより符号化命令アドレスを復号するステップを含む方法。
  22. 請求項18記載の方法に従って装置を制御するようコンピュータに読み込まれ動作するコンピュータプログラム
JP2002100620A 2001-02-26 2002-02-26 命令セットの情報を格納するための装置及び方法 Expired - Lifetime JP3766035B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US09/792,643 US7020768B2 (en) 2001-02-01 2001-02-26 Apparatus and method for facilitating debugging of sequences of processing instructions using context identifier comparison
US876220 2001-06-08
US792643 2001-06-08
US09/876,220 US7093108B2 (en) 2001-02-01 2001-06-08 Apparatus and method for efficiently incorporating instruction set information with instruction addresses

Publications (2)

Publication Number Publication Date
JP2002304291A JP2002304291A (ja) 2002-10-18
JP3766035B2 true JP3766035B2 (ja) 2006-04-12

Family

ID=27121314

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002100620A Expired - Lifetime JP3766035B2 (ja) 2001-02-26 2002-02-26 命令セットの情報を格納するための装置及び方法

Country Status (3)

Country Link
US (1) US7093108B2 (ja)
JP (1) JP3766035B2 (ja)
GB (1) GB2374694B (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6859897B2 (en) * 2000-03-02 2005-02-22 Texas Instruments Incorporated Range based detection of memory access
US7359994B1 (en) 2002-08-28 2008-04-15 Advanced Micro Devices, Inc. Split-transaction bus decoder
US7254115B1 (en) * 2002-08-28 2007-08-07 Advanced Micro Devices, Inc. Split-transaction bus intelligent logic analysis tool
US7278073B2 (en) * 2003-04-17 2007-10-02 Arm Limited Diagnostic data capture within an integrated circuit
GB2402763B (en) * 2003-06-13 2006-03-01 Advanced Risc Mach Ltd Data access program instruction encoding
US7143270B1 (en) * 2004-01-30 2006-11-28 Hewlett-Packard Development Company, L.P. System and method for adding an instruction to an instruction set architecture
US7236107B2 (en) * 2004-09-20 2007-06-26 Fujitsu Limited System and method for identifying optimal encoding for a given trace
DE102004052417B4 (de) 2004-10-28 2010-09-02 Infineon Technologies Ag Schaltung und Verfahren zur Weiterleitung von Datenpaketen in einem Netzwerk
US7454666B1 (en) * 2005-04-07 2008-11-18 Sun Microsystems, Inc. Real-time address trace generation
US7769983B2 (en) 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
GB2435116B (en) * 2006-02-10 2010-04-07 Imagination Tech Ltd Selecting between instruction sets in a microprocessors
JP4832125B2 (ja) * 2006-03-15 2011-12-07 富士通セミコンダクター株式会社 性能解析装置、性能解析方法、性能解析プログラム、および記録媒体
US7685467B2 (en) * 2006-04-27 2010-03-23 Texas Instruments Incorporated Data system simulated event and matrix debug of pipelined processor
US8352713B2 (en) * 2006-08-09 2013-01-08 Qualcomm Incorporated Debug circuit comparing processor instruction set operating mode
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US7711927B2 (en) * 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
US8055950B2 (en) * 2008-01-11 2011-11-08 Arm Limited Method and apparatus for improved timing for trace synchronization
JP5326708B2 (ja) * 2009-03-18 2013-10-30 富士通株式会社 演算処理装置および演算処理装置の制御方法
US8176366B2 (en) * 2009-04-03 2012-05-08 Arm Limited Trace synchronization
US10055227B2 (en) * 2012-02-07 2018-08-21 Qualcomm Incorporated Using the least significant bits of a called function's address to switch processor modes

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4439827A (en) * 1981-12-28 1984-03-27 Raytheon Company Dual fetch microsequencer
US4590550A (en) * 1983-06-29 1986-05-20 International Business Machines Corporation Internally distributed monitoring system
JPS6240538A (ja) 1985-08-15 1987-02-21 Mitsubishi Electric Corp デ−タ処理装置
US4821178A (en) * 1986-08-15 1989-04-11 International Business Machines Corporation Internal performance monitoring by event sampling
US5115500A (en) 1988-01-11 1992-05-19 International Business Machines Corporation Plural incompatible instruction format decode method and apparatus
US5151981A (en) 1990-07-13 1992-09-29 International Business Machines Corporation Instruction sampling instrumentation
GB9023633D0 (en) * 1990-10-31 1990-12-12 Int Computers Ltd Predicting the performance of a computer system
DE69231451T2 (de) 1991-03-11 2001-05-10 Mips Tech Inc Rückwärts kompatible Rechnerarchitektur mit erweiterten Wortbreiten und Adressraum
JPH0619742A (ja) 1992-07-01 1994-01-28 Kofu Nippon Denki Kk トレーサ回路
US5555392A (en) * 1993-10-01 1996-09-10 Intel Corporation Method and apparatus for a line based non-blocking data cache
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
US5550974A (en) * 1994-04-15 1996-08-27 Motorola, Inc. Testable memory array which is immune to multiple wordline assertions during scan testing
GB2290395B (en) 1994-06-10 1997-05-28 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
EP0689141A3 (en) 1994-06-20 1997-10-15 At & T Corp Disruption-based hardware support for system performance profiling
US6139198A (en) * 1994-10-04 2000-10-31 International Business Machines Corporation System and method for enabling tracing of program execution in an object-oriented system
JP3846939B2 (ja) * 1995-08-30 2006-11-15 フリースケール セミコンダクター インコーポレイテッド データプロセッサ
US5802273A (en) * 1996-12-17 1998-09-01 International Business Machines Corporation Trailing edge analysis
GB9626401D0 (en) * 1996-12-19 1997-02-05 Sgs Thomson Microelectronics Diagnostic procedures in an integrated circuit device
US5978742A (en) * 1997-04-04 1999-11-02 Tektronix, Inc. Method and apparatus for digital sampling of electrical waveforms
US6009270A (en) * 1997-04-08 1999-12-28 Advanced Micro Devices, Inc. Trace synchronization in a processor
US5987598A (en) * 1997-07-07 1999-11-16 International Business Machines Corporation Method and system for tracking instruction progress within a data processing system
US6175913B1 (en) * 1997-09-12 2001-01-16 Siemens Ag Data processing unit with debug capabilities using a memory protection unit
US5923872A (en) * 1997-11-26 1999-07-13 Digital Equipment Corporation Apparatus for sampling instruction operand or result values in a processor pipeline
US6000044A (en) * 1997-11-26 1999-12-07 Digital Equipment Corporation Apparatus for randomly sampling instructions in a processor pipeline
US6374367B1 (en) 1997-11-26 2002-04-16 Compaq Computer Corporation Apparatus and method for monitoring a computer system to guide optimization
US6052802A (en) * 1997-12-31 2000-04-18 Intel Corporation Apparatus and method for cycle accounting in microprocessors
JP2878264B1 (ja) 1998-03-11 1999-04-05 甲府日本電気株式会社 トレーサ装置、トレースデータ圧縮方法および圧縮トレースデータ読み出し方法
US6067644A (en) * 1998-04-15 2000-05-23 International Business Machines Corporation System and method monitoring instruction progress within a processor
US6415378B1 (en) * 1999-06-30 2002-07-02 International Business Machines Corporation Method and system for tracking the progress of an instruction in an out-of-order processor
US6574727B1 (en) * 1999-11-04 2003-06-03 International Business Machines Corporation Method and apparatus for instruction sampling for performance monitoring and debug
US6539502B1 (en) * 1999-11-08 2003-03-25 International Business Machines Corporation Method and apparatus for identifying instructions for performance monitoring in a microprocessor

Also Published As

Publication number Publication date
US7093108B2 (en) 2006-08-15
US20020161989A1 (en) 2002-10-31
GB0203568D0 (en) 2002-04-03
JP2002304291A (ja) 2002-10-18
GB2374694A (en) 2002-10-23
GB2374694B (en) 2005-04-27

Similar Documents

Publication Publication Date Title
JP3766035B2 (ja) 命令セットの情報を格納するための装置及び方法
JP4038372B2 (ja) 順序外データのトレーシング
JP4225851B2 (ja) データ処理装置用トレース要素生成システム
US7197671B2 (en) Generation of trace elements within a data processing apparatus
TWI384397B (zh) 資料位址追蹤方法及資料位址追蹤裝置、資料追蹤方法及資料追蹤裝置
JP3556556B2 (ja) 命令コード変換装置及び情報処理システム
KR101365121B1 (ko) 멀티코어 아키텍쳐의 디버그
US6167505A (en) Data processing circuit with target instruction and prefix instruction
US7673187B2 (en) Data processing apparatus and method for reducing trace bandwidth
US20060117229A1 (en) Tracing multiple data access instructions
JP2003085000A (ja) トレース情報生成装置およびその方法
US6915413B2 (en) Micro-controller for reading out compressed instruction code and program memory for compressing instruction code and storing therein
US7552363B2 (en) Generation of trace elements within a data processing apparatus
Game et al. Codepack: Code compression for PowerPC processors
JP2002163127A (ja) トレース制御回路
JP2513417B2 (ja) 情報処理装置
WO2008042584A2 (en) Apparatus and method for tracing instructions with simplified instruction state descriptors
GB2389931A (en) Selective generation of trace elements
JP3818965B2 (ja) ソフトウェアおよびハードウェアのループ圧縮を有するfifo書込み/lifo読取り追跡バッファ
JP3861452B2 (ja) プロセッサおよびプログラム生成装置
JP3679402B2 (ja) 条件式命令を実行するプロセッサ及びその方法
JP2000267876A (ja) エミュレータ及びマイクロコンピュータ
JPH0423051A (ja) マイクロプロセッサ
JPH10240570A (ja) マイクロプロセッサ及びその開発支援装置
JP2000181703A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040511

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050701

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20051003

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20051006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060125

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3766035

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090203

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100203

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100203

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110203

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110203

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120203

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120203

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130203

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130203

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140203

Year of fee payment: 8

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term