【誤訳訂正書】
【提出日】平成25年5月7日(2013.5.7)
【誤訳訂正１】
【訂正対象書類名】明細書
【訂正対象項目名】特許請求の範囲
【訂正方法】変更
【訂正の内容】
【特許請求の範囲】
【請求項１】  メモリから命令を取り出して実行する取り出し回路及び実行回路と、ＣＰＵによって実行される命令のメモリ内のアドレスを含む命令ポインタを順次保持する命令ポインタレジスタと、を含んで構成されるオン−チップＣＰＵであって、前記ＣＰＵの前記実行回路は、前記取り出し回路に新しいメモリ位置から命令の取り出しを開始することを知らせる制御信号であると共に、前記アドレスの１つが、そのアドレスの前回アドレスのメモリ内の次に続くアドレスではないという不連続を示す制御信号を生成するよう動作可能である、オン−チップＣＰＵと、
前記ＣＰＵにバスにより接続され、前記ＣＰＵから前記バスを介して前記命令ポインタレジスタに順次保持された命令ポインタを受信するように作動可能である命令トレースコントローラであって、トレースストレージ位置を有するメモリに接続され、前記受信した命令ポインタのアドレスのうちの選択された１つを前記トレースストレージ位置に記憶させる命令トレースコントローラと、
を含んで構成され、
前記命令トレースコントローラはさらに、前記ＣＰＵから前記バスを介して前記命令ポインタと共に前記命令トレースコントローラに送信される前記制御信号を受信した場合に、前記制御信号の検知に基づいて前記アドレスのうちの選択された１つを前記トレースストレージ位置に記憶する、
単一チップ集積回路装置。
【請求項２】  前記メモリから前記ＣＰＵの取り出し回路及び実行回路に命令を送信させるメモリバスを含んで構成される、請求項１記載の単一チップ集積回路装置。
【請求項３】  前記命令トレースコントローラが前記メモリバスに接続されることにより、前記選択されたアドレスを前記メモリ内のトレースストレージ位置で記憶することを可能とする、請求項２記載の単一チップ集積回路装置。
【請求項４】  前記命令トレースコントローラが前記メモリバスとは別のトレースストレージバスを介して前記トレースストレージ位置に接続される、請求項２記載の単一チップ集積回路装置。
【請求項５】  前記トレースストレージバスが前記メモリとは別のトレースバッファ内のトレースストレージ位置に接続される、請求項４記載の単一チップ集積回路装置。
【請求項６】  前記トレースバッファがいっぱいの時、記憶される次のアドレスによってトレースバッファ内に保持されているアドレスが上書きされる、請求項５記載の単一チップ集積回路装置。
【請求項７】  前記命令トレースコントローラが前記命令ポインタレジスタに接続される、請求項１から６のいずれか１つに記載の単一チップ集積回路装置。
【請求項８】  前記トレースストレージ位置を有するメモリがオフ−チップメモリである、請求項１に記載の単一チップ集積回路装置。
【請求項９】  前記選択されたアドレスが連続したトレースストレージ位置に記憶される、請求項１に記載の単一チップ集積回路装置。
【請求項１０】  前記命令トレースコントローラが、次の選択されたアドレスが記憶される次のトレースストレージ位置のアドレスを保持するデスティネーションアドレスレジスタを有する、請求項１に記載の単一チップ集積回路装置。
【請求項１１】  関連するホストメモリを備えたホストＣＰＵに接続されるオフ−チップ直列通信リンクを含んで構成され、前記トレースストレージ位置を有するメモリが前記ホストメモリである、請求項１記載の単一チップ集積回路装置。
【請求項１２】  前記命令トレースコントローラがＣＰＵの通常作動をストールして、前記アドレスを前記トレースストレージ位置に記憶させるように作動できる、請求項１に記載の単一チップ集積回路装置。
【請求項１３】  前記命令トレースコントローラが検出した非シーケンシャルアドレスの直前の前記アドレスの１つを記憶する第１レジスタを含んで構成される、請求項１に記載の単一チップ集積回路装置。
【請求項１４】  前記命令トレースコントローラが検出した非シーケンシャルアドレスの直後の前記アドレスの１つを記憶する第２レジスタを含んで構成される、請求項１３に記載の単一チップ集積回路装置。
【請求項１５】  前記命令トレースコントローラが不連続の直前の命令ポインタを記憶する第１レジスタを含んで構成される、請求項１記載の単一チップ集積回路装置。
【請求項１６】  前記命令トレースコントローラが不連続の後の最初の命令ポインタを記憶する第２レジスタを含んで構成される、請求項１５に記載の単一チップ集積回路装置。
【請求項１７】  前記命令トレースコントローラはさらに、前記第１および第２レジスタの少なくとも１つにより示されるトレースアドレスを保持するためのトレースストレージ位置を示すアドレスレジスタを含んで構成される、請求項１６に記載の単一チップ集積回路装置。
【請求項１８】  前記命令トレースコントローラにさらに別のトレースバスにより接続され、トレースアドレスを保持する専用メモリをさらに含んで構成される、請求項１７に記載の単一チップ集積回路装置。
【請求項１９】  前記命令トレースコントローラとトレースアドレスを保持する前記メモリを相互接続するメモリバスをさらに含んで構成される、請求項１７に記載の単一チップ集積回路装置。
【請求項２０】  前記命令トレースコントローラはさらに、トレースバッファと、前記トレースバッファがいっぱいになっても現在記憶されているトレースアドレスの上に上書きして前記トレースバッファにトレースアドレスを記憶できるようにするために前記アドレスレジスタを増分する増分器と、を含んで構成される、請求項１７に記載の単一チップ集積回路装置。
【請求項２１】  単一チップ集積回路装置内のオン−チップＣＰＵから命令トレースを供給する方法であって、
前記オン−チップＣＰＵは取り出し回路と実行回路を有し、ＣＰＵによって実行される命令のメモリ内のアドレスを含む命令ポインタがＣＰＵの命令ポインタレジスタ内で順次保持され、
前記ＣＰＵの前記実行回路は、前記取り出し回路に新しいメモリ位置から命令の取り出しを開始することを知らせる制御信号であると共に、前記アドレスの１つが、そのアドレスの前回アドレスのメモリ内の次に続くアドレスではないという不連続を示す制御信号を生成するよう動作可能であり、
単一チップ集積回路装置上にあるとともに前記ＣＰＵとバスで接続された命令トレースコントローラは、前記ＣＰＵから前記バスを介して前記命令ポインタレジスタ内に順次保持された命令ポインタを受信し、前記受信した命令ポインタのアドレスのうちの選択されたアドレスを所定のトレースストレージ位置を有するメモリに記憶させるように作動可能であり、
命令トレースコントローラはさらに、前記ＣＰＵから前記バスを介して前記命令ポインタと共に前記命令トレースコントローラに送信される前記制御信号を受信した場合に、前記制御信号の検知に基づいて前記アドレスのうちの選択された１つを前記トレース位置に記憶する、
方法。
【請求項２２】  前記選択されたアドレスが連続するトレースストレージ位置に記憶される、請求項２１記載の方法。
【請求項２３】  前記命令トレースコントローラがＣＰＵの通常作動をストールして前記アドレスを前記トレースストレージ位置に記憶させるよう動作可能である、請求項２１記載の方法。
【請求項２４】  前記選択されたアドレスがトレースストレージ位置に記憶される前に命令トレースコントローラ内のレジスタに一時的に保持される、請求項２１に記載の方法。
【請求項２５】  メモリから命令を取り出して実行する取り出し回路及び実行回路と、ＣＰＵによって実行される命令のメモリ内のアドレスを順次保持する命令ポインタレジスタと、を含んで構成されるオン−チップＣＰＵと、
前記実行回路により生成される制御信号に応答し、前記命令ポインタレジスタに順次保持されたアドレスを受信するように作動可能であり、トレースストレージ位置を有するメモリに接続されて、前記アドレスの１つが、前記アドレスの前回アドレス後のメモリ内の次に続くアドレスではないことを検出したことに応じて前記受信したアドレスのうちの選択された１つを前記トレースストレージ位置に記憶させる命令トレースコントローラと、
を含んで構成され、
前記制御信号は前記取り出し回路に新しいメモリ位置から命令の取り出しを開始することを知らせると共に、前記アドレスの１つが、そのアドレスの前回アドレスのメモリ内の次に続くアドレスではないという不連続を示すために前記実行回路により生成される、
単一チップ集積回路装置。
【請求項２６】  前記命令トレースコントローラが不連続の直前の命令ポインタを記憶する第１レジスタを含んで構成される、請求項２５に記載の単一チップ集積回路装置。
【請求項２７】  前記命令トレースコントローラが不連続の後の最初の命令ポインタを記憶する第２レジスタをさらに含んで構成される、請求項２６に記載の単一チップ集積回路装置。
【請求項２８】  前記命令トレースコントローラはさらに、前記第１および第２レジスタの少なくとも１つにより示されるトレースアドレスを保持するためのトレースストレージ位置を示すアドレスレジスタを含んで構成される、請求項２７に記載の単一チップ集積回路装置。
【請求項２９】  前記命令トレースコントローラにさらに別のトレースバスにより接続され、トレースアドレスを保持する専用メモリをさらに含んで構成される、請求項２８に記載の単一チップ集積回路装置。
【請求項３０】  前記命令トレースコントローラとトレースアドレスを保持する前記メモリを相互接続するメモリバスをさらに含んで構成される、請求項２８に記載の単一チップ集積回路装置。
【請求項３１】  前記命令トレースコントローラはさらに、トレースバッファと、前記トレースバッファがいっぱいになっても現在記憶されているトレースアドレスの上に上書きして前記トレースバッファにトレースアドレスを記憶できるようにするために前記アドレスレジスタを増分する増分器と、を含んで構成される、請求項２８に記載の単一チップ集積回路装置。
【請求項３２】  メモリから命令を取り出して実行する取り出し回路及び実行回路備える単一チップ集積回路装置内のオン−チップＣＰＵから命令トレースを供給する方法であって、
ＣＰＵによって実行される命令のメモリ内のアドレスがＣＰＵの命令ポインタレジスタ内で順次保持され、
前記命令ポインタレジスタ内に順次保持されたアドレスが単一チップ集積回路装置上の命令トレースコントローラによって受信され、前記命令トレースコントローラは、前記アドレスの１つが前記アドレスの前回アドレス後のメモリ内の次のシーケンシャルアドレスではないことを検出したことに応じて前記受信したアドレスのうちの選択されたアドレスを所定のトレースストレージ位置を有するメモリに記憶させるように作動可能であり、
さらに、前記全体実行回路が、取り出し回路に新しいメモリ位置から命令の取り出しを開始することを知らせる制御信号であると共に、前記アドレスの１つが、そのアドレスの前回アドレスのメモリ内の次に続くアドレスではないという不連続を示す、制御信号を生成するステップと、
前記制御信号をどの選択されたアドレスの１つを命令トレースコントローラにより記憶させるかを制御するのに使用するステップと、
を含む、方法。 
【誤訳訂正２】
【訂正対象書類名】明細書
【訂正対象項目名】発明の詳細な説明
【訂正方法】変更
【訂正の内容】
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は命令トレース供給方式に関する。特に、本発明は命令トレースが集められた単一チップ集積回路装置及び命令トレースを供給する方法に関する。
【０００２】
【従来の技術及び発明が解決しようとする課題】
ＣＰＵは、メモリから命令を取り出して実行するための取り出し及び実行回路に加えて、ＣＰＵによって実行される命令のメモリ内のアドレスを保持する命令ポインタレジスタを有する。命令ポインタレジスタに保持されるアドレスを認識することは、ＣＰＵ上で実行するソフトウエア上の診断機能を実行する際に特に重要である。簡単な場合、命令ポインタとして保持されるアドレスは、外部メモリバス上のメモリアドレス値を観察することによって推測できる。しかしながら、多くの場合において、命令ポインタはＣＰＵの奥にかくされており、ＣＰＵの外側からは容易にアクセスできない。
【０００３】
特に、従来、ＣＰＵは、メモリ等の全ての付加回路へのオフ−チップアクセスを必要とする単一チップとして製造されていた。この結果、これらのＣＰＵは複数のアクセスピンを持って、ＣＰＵに関する情報、特にメモリアドレス情報がいずれにしてもこれらのアクセスピンから外部的に利用できるようにしていた。
現今では、チップは複雑であり、オン−チップのプロセッサだけではなくその関連メモリや他の補助回路も含む。通常はオフ−チップ入手が可能な信号がもはやＣＰＵの内部作動に関する直接表示を提供しないので、プロセッサ作動を監視するのはもはや単純なことではない。
【０００４】
集積回路ＣＰＵ上で実行するように設計されたソフトウエアの複雑さが増大するにつれて、ソフトウエアを適切にテストすることの重要性も増大する。これには、ＣＰＵがソフトウエアを実行するのと同時にＣＰＵの作動を監視する技術を必要とする。ソフトウエアがリアルタイムで作動している間にそのソフトウエアを非侵入的（non-intrusively）にモニタすることは特に厄介な要件である。
【０００５】
いわゆる診断又はデバッギング技術がこれを達成するために開発された。これらの技術の１つはロジックステートアナライザ（ＬＳＡ）を使用することである。これは、集積回路のピンに接続された装置であって、全てのオフ−チップ通信の状態を継続して監視するものである。順次生じる各組の状態が記憶されて解析できる。ＬＳＡは高価であるばかりでなく、記憶された膨大な量の順次生じた状態のセットから何らかの有用な情報を引き出すのに大量の推論及び解析が必要である。オフ−チップで通信される状態信号を解析することだけが可能なので、オン−チップ状況に関する何らかの推論と仮定を行う必要がある。時には、この技術によって命令ポインタを推測することができる。ＬＳＡによって捕捉された命令ポインタレジスタに記憶された一連のアドレスは命令トレースと考えられる。
【０００６】
時には、ソフトウエアシミュレーション、ハードウエアシミュレーション、ハードウエアエミュレーションまたは他の手段によって等価仮想環境内で命令トレースを生成することもできる。しかしながら、これらの技術のいずれも事象の実際の状況または実時間系列を反映しない。このようなトレースはしばしばリアルタイムの命令トレースとの比較には有用であるが、診断手順における限定された値である。
いずれにしても、これらの技術のどれも、外部接続ピンを観察することによって推測できなければ、命令ポインタに関する情報を発見するのに使用することができない。外部接続ピンがない場合には、特に命令ポインタレジスタから命令ポインタを検索するために外部接続ピンを加えることもできる。これは、単にデバッギング目的のためのチップには余分なオーバヘッドである。また、
ある環境では、これさえも不可能である。
【０００７】
【課題を解決するための手段】
本発明によれば、
メモリから命令を取り出して実行する取り出し回路及び実行回路と、ＣＰＵによって実行される命令のメモリ内のアドレスを含む命令ポインタを順次保持する命令ポインタレジスタと、を含んで構成されるオン−チップＣＰＵであって、前記ＣＰＵの前記実行回路は、前記取り出し回路に新しいメモリ位置から命令の取り出しを開始させると共に、前記アドレスの１つが、そのアドレスの前回アドレスのメモリ内の次に続くアドレスではないという不連続を示す制御信号を生成するよう動作可能である、オン−チップＣＰＵと、
前記ＣＰＵにバスにより接続され、前記ＣＰＵから前記バスを介して前記命令ポインタレジスタに順次保持された命令ポインタを受信し、前記受信した命令ポインタのアドレスを監視するように作動可能である命令トレースコントローラであって、トレースストレージ位置に接続され、前記受信した命令ポインタのアドレスのうちの選択された１つを前記トレース位置に記憶させる命令トレースコントローラと、
を含んで構成され、
前記命令トレースコントローラはさらに、前記ＣＰＵから前記バスを介して前記命令ポインタと同時に前記命令トレースコントローラに送信される前記制御信号を受信し、前記制御信号の検知に基づいて前記アドレスのうちの選択された１つを前記トレース位置に記憶する、単一チップ集積回路装置が提供される。
【０００８】
このように、オン−チップ命令トレースコントローラは、付加外部接続ピンを必要とせずに、リアルタイムで命令トレースを集めることができる。不連続（非シーケンシャルアドレス）における命令ポインタの値を記憶するだけで、所定時間記憶する必要がある情報量をかなり減少できる。
命令トレースコントローラは前記アドレスを監視するための命令ポインタレジスタに接続できる。或いは、前記アドレスを監視するために命令がＣＰＵに取り出されるメモリバスに接続することもできる。
【０００９】
トレースストレージ位置は、専用バスによってトレースコントローラに接続された専用メモリ、ＣＰＵからアクセスできるメモリバスに接続された専用メモリ、または、オン−チップまたはオフ−チップでＣＰＵによってアクセスできるメモリと同じメモリ、に設けることができる。メモリがオフ−チップの場合、外部メモリインタフェースコントローラによってオン−チップバスに接続できる。或いは、オフ−チップ直列通信リンクによってチップに接続されたホストＣＰＵに接続できる。
【００１０】
非シーケンシャルアドレスまたは不連続は、命令トレースコントローラ自体によって検出できるか、或いは、命令ポインタがＣＰＵから命令トレースコントローラに送られた時に識別できる。
メモリへのアクセスがゆっくりであるため、トレースアドレスを記憶できる場合、命令トレースコントローラはＣＰＵの通常作動を停止して、前記アドレスを前記トレースストレージ位置に記憶させるように作動できる。
【００１１】
命令トレースコントローラは、１つ以上の下記レジスタを含んで構成される。
次の選択されたアドレスが記憶される場合に、次のトレースストレージ位置のアドレスを保持するデスティネーションアドレスレジスタ、
不連続の検出の直前の前記アドレスの１つを記憶する第１レジスタ、
不連続の検出の直後の前記アドレスの１つを記憶する第２レジスタ、
命令トレースコントローラ用の専用メモリまたはトレースバッファのサイズを設定するサイズレジスタ、及び
命令トレースコントローラによって実行される１つ以上のオプションを選択するオプション制御ビットレジスタ。
【００１２】
オプション制御ビットレジスタは、第１レジスタが使用されるのか、第２レジスタが使用されるのか、または両方が使用されるのかを制御することができる。オプション制御ビットレジスタはまた、トレースストレージ位置が容易に利用できない場合に、ＣＰＵ停止信号が送られるべきかどうかを決定できる。オプション制御ビットレジスタはさらにまた、トレースストレージ位置がいっぱいになった時（即ち、トレースストレージ位置がそのサイズ限度に達した時）にＣＰＵを中断でき、或いは、トレースストレージ位置を制御して、いっぱいになった時にロールオーバするかまたは他の選択可能なオプションを制御する。
【００１３】
本発明の他の態様によれば、
単一チップ集積回路装置内のオン−チップＣＰＵから命令トレースを供給する方法であって、
前記オン−チップＣＰＵは取り出し回路と実行回路を有し、ＣＰＵによって実行される命令のメモリ内のアドレスを含む命令ポインタがＣＰＵの命令ポインタレジスタ内で順次保持され、
前記ＣＰＵの前記実行回路に前記取り出し回路が新しいメモリ位置から命令の取り出しを開始させると共に、前記アドレスの１つが、そのアドレスの前回アドレスのメモリ内の次に続くアドレスではないという不連続を示す制御信号を生成するよう動作可能であり、前記命令ポインタの前記アドレスが、単一チップ集積回路装置上にあるとともに前記ＣＰＵとバスで接続された命令トレースコントローラによって監視され、
前記命令トレースコントローラは、前記ＣＰＵから前記バスを介して前記命令ポインタレジスタ内に順次保持された命令ポインタを受信し、前記受信した命令ポインタのアドレスのうちの選択されたアドレスを所定のトレースストレージ位置に記憶させるように作動可能であり、  命令トレースコントローラはさらに、前記ＣＰＵから前記バスを介して前記命令ポインタと同時に前記命令トレースコントローラに送信される前記制御信号を受信し、前記制御信号の検知に基づいて前記アドレスのうちの選択された１つを前記トレース位置に記憶する、方法が提供される。
【００１４】
【発明の実施の形態】
本発明を更に理解し、どのように実施するかを添付の図面を参照して説明する。
図１は、テストアクセスポート（ＴＡＰ）コントローラ４とチップ境界スキャンチェイン１０とを有する集積回路２を概略的に示す。ＴＡＰコントローラ４は、ライン１４上のテストクロック信号ＴＣＫと、ライン１６上のテストモード選択信号ＴＭＳと、ライン１８上のテストデータ入力信号ＴＤＩと、ライン２２上のテストリセット入力信号ＴＲＳＴ＊と、をオフ−チップから受信する。ＴＡＰコントローラ４は、ライン２０上のテストデータ出力信号ＴＤＯをオフ−チップに出力する。ＴＡＰコントローラ４はまた、ライン１２上の装置識別子信号ＤＥＶＩＣＥＩＤを受信する。図１において、装置識別子信号ＤＥＶＩＣＥＩＤは、集積回路内でアースに接続された信号ライン１２として示される。信号ライン１２はマルチビットワイヤでよく、また、装置識別子信号ＤＥＶＩＣＥＩＤは集積
回路上またはオフ−チップ上のいずれかから発生できる。信号ライン１２がマルチビットワイヤの場合には、各ビットがチップ上の低レベルロジックまたは高レベルロジックのいずれかに接続される。ＴＡＰコントローラ４は、ライン２８上のスキャンデータ入力信号ＳＣＡＮＩＮと、ライン３８上のテストクロック信号ＴＥＳＴＣＬＫと、ライン２４上のスキャンテストモードＳＣＡＮＭＯＤＥの選択を示す信号と、をライン２６上の診断モードＤＩＡＧＭＯＤＥの選択を示す信号と、をオン−チップ回路に出力する。チップ境界スキャンチェイン１０は、ライン２８上のスキャンデータ入力信号ＳＣＡＮＩＮと、ライン２４上のスキャンテストモード信号ＳＣＡＮＭＯＤＥと、を入力として受信し、ライン３４上のスキャンデータ出力信号ＳＣＡＮＯＵＴをＴＡＰコントローラ４に出力する。本発明では、ライン２８上のスキャンデータ入力信号ＳＣＡＮＩＮはまた、後述するように、診断のためにオン−チップソース／宛先ロジックに接続される。本発明では、ソース／宛先ロジックは、入力信号ＤＩＡＧＳＣＡＮＯＵＴをライン３６上でＴＡＰコントローラ４に供給する。
【００１５】
以下に詳細に説明する図５は、ソース／宛先ロジックを構成する構成要素を示す。ソース／宛先ロジックは、少なくともオン−チップバスシステムに接続されるプロセッサであり、オン−チップバスシステムはこれに接続されたオン−チップメモリを有する。オフ−チップメモリもまたこのようなバスシステムに直接接続できる。オン−チップソース／宛先ロジックはまた、ＤＭＡエンジン又はＥＭＩインタフェースを備えた他の機能回路を持つ。
【００１６】
ＴＡＰコントローラ４は、標準演算に必要であり且つ本発明で要求される回路ブロックを備えて図２に概略的に示される。図２を参照すると、ＴＡＰコントローラ４はその基本形式において、ステートマシン５０と、ＩＤレジスタ４２と、命令レジスタ４４と、命令デコーダ４６と、バイパスラッチ４８と、データマルチプレクサ５２と、命令／データマルチプレクサ５４と、ラッチ５６と、インバータ６０と、を含んで構成される。命令レジスタ４４は、ライン１８上のテストデータ入力信号ＴＤＩを受信し、バス６２への並列命令とライン７６上への直列出力とを発生し、また、ライン８２上の命令制御入力信号を受信する。命令デコーダ４６は、バス６２上の並列命令とライン８４上のデコーダ制御入力信号とを受信して、信号ＳＣＡＮＭＯＤＥ及び信号ＤＩＡＧＭＯＤＥをライン２４及び２
６それぞれに、また、ライン７０上に並列データマルチプレクサ選択信号を発生する。バイパスラッチ４８は、ライン１８上のテストデータ入力信号ＴＤＩを受信し、ライン７２上に出力信号を発生する。ＩＤレジスタ４２は、ライン１２上の並列の信号ＤＥＶＩＣＥＩＤを受信し、ライン６８上に直列の装置識別子出力信号を発生する。データマルチプレクサ５２は、ライン６８上のＩＤレジスタ４２の出力信号と、ライン７２上のバイパスラッチ４８の出力信号と、ライン３４上の信号ＳＣＡＮＯＵＴと、ライン３６上の信号ＤＩＡＧＳＣＡＮＯＵＴと、ライン７０上のデータマルチプレクサ選択信号と、を受信する。データマルチプレクサ５２は、ライン７４上に出力を発生する。命令／データマルチプレクサ５４は、ライン７６上の直列出力と、ライン７４上のデータマルチプレクサの出力と、ライン７８上の命令／データマルチプレクサ選択信号と、を受信する。命令／データマルチプレクサ５４は、ライン８０上に出力を発生する。ラッチ５６は、ライン８０上の命令／データマルチプレクサ５４の出力を受信し、ライン２０上にテストデータ出力信号ＴＤＯを発生する。ステートマシン５０は、ライン１６上の信号ＴＭＳと、ライン２２上の信号ＴＲＳＴ＊と、を受信する。ステートマシン５０は、ライン７８への命令／データマルチプレクサ選択信号と、ライン８２への命令制御入力信号と、ライン８４へのデコーダ制御入力信号と、を発生する。ＩＤレジスタ４２、命令レジスタ４４、命令デコーダ４６、バイパスラッチ４８、ステートマシン５０、及びデータコンバータ５７は、それぞれライン１４上のテストクロック信号ＴＣＫを受信する。ラッチ５６は、ライン６４上のイン
バータ６０を介して反転されたテストクロック信号ＴＣＫを受信する。テストクロック信号ＴＣＫとテストデータ入力信号ＴＤＩは、ライン３８の出力ＴＥＳＴＣＬＫ及びライン２８の出力ＳＣＡＮＩＮとしてそれぞれ直接接続される。
【００１７】
集積回路２のテストを実行する際のＴＡＰコントローラ４の作動は、ＩＥＥＥ１１４９．１−１９９０に詳細に説明されている。本質的に、有限長さのスキャンチェインは、チップ境界スキャンチェイン１０によって形成されるチェインのように集積回路上で形成される。
ＴＡＰコントローラ４は、ＩＥＥＥ基準１１４９．１−１９９０によって定義される同期有限ステートマシンである。ＩＥＥＥ基準１１４９．１−１９９０は、集積回路に含むことのできるテストロジックを定義して、集積回路間の相互接続のテスト、集積回路自体のテスト、集積回路の通常作動中における回路作動の監視又は修正の標準的な方法を提供する。
【００１８】
集積回路２の通常作動中、ＴＡＰコントローラ４は、リセット状態にあり、その入力と出力は全て非作動である。ＩＥＥＥ基準１１４９．１−１９９０によるテストアクセスポートを使用したテストを実行する場合、ＴＡＰコントローラは前記基準の定義に従って作動する。このようなテストモードでは、ＴＡＰコントローラ４は少なくとも１つの作動のテストモードを選択できる。１つの可能なテストモードはスキャンテストモードであり、これはライン２４上の信号ＳＣＡＮＭＯＤＥを設定することにより選択される。スキャンテストモードでは、集積回路２上のスキャンチェインがテストのために選択される。本実施形態において、チップ境界スキャンチェイン１０が信号ＳＣＡＮＭＯＤＥによって選択される。このようなスキャンテストは、単にスキャンチェインの一端にデータを入力し、同一データがスキャンチェインの他端で出力されることを確認するためにチェックをすることを含む。或いは、オン−チップの機能ロジックに入力されるデータをスキャンし、１以上のクロックサイクルでチップを機能的にクロックして、機能ロジックの出力をスキャンするような、より複雑なスキャン操作を実行できる。オン−チップの任意の接続点または回路をテスト用に接続してスキャンチェインを形成できる。チップ境界スキャンチェイン１０は、テストモードで制御されて集積回路２の全ての入力／出力ポートを接続する一連のフリップフロップである。このようなスキャンテスティングの完全な理解はＩＥＥＥ基準１１４９．１−１９９０を参照することから求められる。スキャンテスティングをどのように実行するかの特定の例として、ヨーロッパ特許出願公開第０６９８８９０号、第０７０２２３９号、第０７０２２４０号、第０７０２２４１号、第０７０２２４２号、第０７０２２４３号、第０７０９６８８号が挙げられる。
【００１９】
ＩＥＥＥ基準１１４９．１−１９９０のテストアクセスポートを使用する公知のテストモードの特徴は、スキャンチェインが有限の長さか又は閉ループであること、また、テストデータ出力信号ＴＤＯがテストデータ入力信号ＴＤＩに依存するとともに、テストデータ入力信号との時間関係を持つことである。
本実施形態では、作動の診断モードは、ＩＥＥＥ基準１１４９．１−１９９０と一致するオン−チップのソース／宛先ロジックの診断手順を実行するために提供される。このような診断テストモードでは、テストデータ出力信号ＴＤＯはテストデータ入力信号ＴＤＩに依存しないので、このテストデータ入力信号との時間関係を持たない。テストデータ入力信号ＴＤＩとテストデータ出力信号ＴＤＯとの間のチェインは、無限の長さまたは開ループであると考えられる。診断モードでは、ＴＡＰコントローラ４は、全ての正常な機能を提供しながら、付加的に全二重の、フロー制御された、束縛されない直列データを、これがデータの形式であるとは気づかずに伝える転送エージェントとして作動する。逆に、ＴＡＰコントローラ４は、通常はどんなフロー制御もせずに選択されたテストチェインを通過する単一のデータストリームを処理する。
【００２０】
テストモードにおけるＴＡＰコントローラ４の作動の大要を、図１及び図２を参照して説明する。図２においては、信号ＳＣＡＮＩＮはテストデータ入力信号ＴＤＩに直接接続しているが、一定の状況では、信号ＳＣＡＮＩＮは信号ＴＤＩの修正バージョンであってもよい。同様に、テストクロック信号ＴＥＳＴＣＬＫはテストクロック信号ＴＣＫに直接接続しているが、一定の状況では、信号ＴＣＫの修正バージョンであることが要求される。
【００２１】
作動のテストモードでは、テストデータ入力信号ＴＤＩとテストモード選択信号ＴＭＳは、テストクロック信号ＴＣＫの制御下でＴＡＰコントローラ４に直列形式で供給される。ステートマシン５０は、テストクロック信号ＴＣＫの各動作エッジでテストモード選択信号ＴＭＳの値に作用して、ＩＥＥＥ基準１１４９．１−１９９０によって定義されるようにその状態を反復させる。テストリセット信号ＴＲＳＴ＊は、ＩＥＥＥ基準１１４９．１−１９９０に応じた低ロジック状態にある時、ＴＡＰコントローラ４の非同期初期化を提供する。
【００２２】
命令レジスタ４４は、テストクロック信号ＴＣＫによってクロックされて、ステートマシン５０からのライン８２上の命令制御入力信号の制御下でテストデータ入力信号ＴＤＩから直列形式で命令をロードする。命令が、命令レジスタ４４内に直列にロードされると、この命令は、ステートマシン５０からのライン８４上のデコーダ制御入力信号の制御下で、命令バス６２を経由して命令デコーダ４６に並列に転送される。ここで記憶された命令に従って、命令デコーダ４６は、実行されるのがスキャンテストか或いは診断テストかに応じて信号ＳＣＡＮＭＯＤＥまたは信号ＤＩＡＧＭＯＤＥのいずれか一方を設定する。命令レジスタ４４及び命令デコーダ４６のローディングは、ＩＥＥＥ基準１１４９．１−１９９０に従ってステートマシン５０により制御される。命令デコーダ４６によってデコードされた命令に応じて、また、以下に更に説明するように、命令デコーダ４６のライン７０上の並列出力は、データマルチプレクサ５２を制御して、その入力の１つを出力ライン７４に接続する。同様に、ステートマシン５０のライン７８上の出力は、命令／データマルチプレクサ５２を制御して、その入力の１つをライン８０上の出力に接続する。
【００２３】
ＩＤレジスタ４２は、ライン１２上の並列の信号ＤＥＶＩＣＥＩＤを受信する。ＩＤレジスタ４２は、チップ識別子を記憶し、そのチップ識別子は、ＩＤレジスタ４２からライン６８を介してテストデータ出力信号ＴＤＯにスキャンされる。チップ識別子は集積回路２を識別する。
一つの作動モードにおいて、命令デコーダ４６によってデコードされた命令は、マルチプレクサ５２が制御されてライン６８上のその入力をライン７４上のその出力に接続し、また、命令／データマルチプレクサ５４が制御されてライン７４上のその入力をライン８０上のその出力に接続する場合に、装置の一致を単に出力するものでよい。そして、装置の一致は信号ＴＤＯとして直列に出力される。
【００２４】
作動の別のモードでは、ライン７６上の直列出力が命令／データマルチプレクサ５４によりライン８０に接続される場合に、テストデータ出力信号ＴＤＯに現行命令を出力することが要求される。
テスト作動の一つのモードでは、特定の集積回路２のＴＡＰコントローラ４がテストデータ入力信号ＴＤＩをテストデータ出力信号ＴＤＯに接続することだけが要求される。この作動モードでは、データマルチプレクサ５２が制御されてライン７２上のバイパスラッチ４８の出力をライン７４上の出力に接続し、命令／データマルチプレクサ５４が制御されてライン７４をライン８０上の出力に接続する。このように、テストデータ入力信号ＴＤＩは、ラッチ５６を介してテストデータ出力信号ＴＤＯに接続される。
【００２５】
ラッチ５６は単に、テストデータ出力信号ＴＤＯの時間制御をして、この信号がテストクロック信号ＴＣＫの立ち下がりエッジに同期できるようにするためにだけ設けられたフリップフロップである。
実行されるテストモードがスキャンテストモードの場合、命令デコーダ４６が信号ＳＣＡＮＭＯＤＥを設定する。データマルチプレクサ５２が命令デコーダ４６により制御されて、信号ＳＣＡＮＯＵＴを出力ライン７４に接続する。命令／データマルチプレクサ５４もまた制御されてライン７４をライン８０に接続して、信号ＳＣＡＮＯＵＴをテストデータ出力信号ＴＤＯとして出力する。このようなスキャンテストモード中では、テストデータは、テストデータ入力信号ＴＤＩと直接接続する信号ＳＣＡＮＩＮ上の選択されたスキャンチェイン内にスキャンされる。スキャンテスティング、特に境界スキャンテスティングは、ＩＥＥＥ基準１１４９．１−１９９０に十分に説明されている。実行されるテストに応じた付加制御信号が選択スキャンチェインに供給されて必要なテスト作動を実行する必要がある。
【００２６】
本実施形態では、命令デコーダ４６がライン２６上の信号ＤＩＡＧＭＯＤＥを設定する場合に診断モードに入る。更に、データマルチプレクサ５２が制御されてライン３６上の信号ＤＩＡＧＳＣＡＮＯＵＴをライン７４上の出力に接続する。これは、命令／データマルチプレクサ５４を介してライン８０に、またラッチ５６を介してテストデータ出力信号ＴＤＯに順次接続される。
【００２７】
診断モードにおいて、テストデータ入力信号ＴＤＩとテストデータ出力信号ＴＤＯとの間の直列データフローは、スキャンテストモードに対抗するものとしての無限の長さのシフトレジスタを通ると考えられる。このモードにおいて直列データフローは有限の長さのシフトレジスタ（シフトレジスタチェイン）を通る。診断モードでは、テストデータ入力信号ＴＤＩとしてテストアクセスポート内にシフトされた一連のビットパターンは、テストデータ出力信号としてテストアクセスポートの外にシフトされた一連のビットパターンに反映されない。診断データの通信は、ホストからターゲットへ及びターゲットからホストへ（読み出し及び書き込み）のメモリアクセス要求、ＣＰＵレジスタの状態情報、メモリアクセス要求に応答してホストメモリまたはターゲットメモリから読み出されたデータ、ＣＰＵレジスタ内にロードするための状態データ、及びターゲットＣＰＵによってアクセスされるメモリアドレスに関する情報を含む。このように、診断モードは、データの非侵入型モニタリングまたはデータの侵入型ローディングを含む。
【００２８】
診断モードにおいて、テストアクセスポート内にシフトされた直列データは、任意の所望の手段、例えば、データチャンクを表す開始ビット及び停止ビットでエンコードできる単一方向直列データストリームである。同様に、テストアクセスポートを介してシフトアウトされたデータは、任意の所望の手段、例えば、データチャンクを表す開始ビット及び停止ビットでエンコードできる１方向直列データストリームである。通常、シフトインされたデータ及びシフトアウトされたデータは、同様の方法でエンコードされる。１方向入力及び出力データストリームは、全二重の２方向直列通信を可能にするために同時に使用される。一連の直列データビットは情報バイトを構成できる。
【００２９】
本実施形態において、通常テストモードに加えて作動の診断モードが提供されると、集積回路２には、図３に示すように、ＴＡＰコントローラ４とオン−チップソース／宛先ロジックとの間をインタフェースするデータアダプタ９０が備えられる。データアダプタ９０は、ＴＡＰコントローラ４からの入力として、ライン２８上のスキャンデータ入力信号ＳＣＡＮＩＮと、ライン３８上のテストクロック信号ＴＥＳＴＣＬＫと、ライン２６上の診断モードＤＩＡＧＭＯＤＥの選択を示す信号と、を受信する。データアダプタ９０は、ＴＡＰコントローラ４にライン３６上の信号ＤＩＡＧＳＣＡＮＯＵＴを出力する。データアダプタ９０は、ライン９２上の送信データバスＴＸＤＡＴＡのオン−チップソース／宛先ロジックからデータを受信し、ライン９４上の受信データバスＲＸＤＡＴＡのオン−チ
ップソース／宛先ロジックにデータを出力する。データアダプタ９０は、ライン９６上の送信有効信号ＴＸＶＡＬＩＤを入力し、ライン９８上の送信肯定応答信号ＴＸＡＣＫを出力する。両信号は、送信データバスＴＸＤＡＴＡに関連する制御信号である。データアダプタ９０は、ライン１００上の受信有効信号ＲＸＶＡＬＩＤを出力し、ライン１０２上の受信肯定応答信号ＲＸＡＣＫを入力する。両信号は、受信データバスＲＸＤＡＴＡに関連する制御信号である。
【００３０】
データアダプタ９０は、受信シフトレジスタ１１４と、受信バッファ１１６と、受信制御ロジック１１０と、受信フロー制御状態フリップフロップ１２０と、送信フロー制御状態フリップフロップ１２４と、送信シフトレジスタ１１８と、送信制御ロジック１１２と、を含んで構成される。受信シフトレジスタ１１４は、ライン２８上の信号ＳＣＡＮＩＮと受信制御ロジック１１０からのライン１２６上の制御信号とを受信し、バス１３０上に並列データを出力して受信バッファ１１６への入力を形成する。受信バッファ１１６は、更に受信制御ロジック１１０からのライン１２８上の制御信号を受信し、ライン９４上に受信データバス信号ＲＸＤＡＴＡを発生する。受信制御ロジック１１０は、更にライン１００上に信号ＲＸＶＡＬＩＤを発生し、ライン１０２上の信号ＲＸＡＣＫを受信し、ライン２６上の信号ＤＩＡＧＭＯＤＥを受信し、ライン１３４及び１３２上に信号ＳＴＡＲＴＤＡＴＡ及びＡＣＫＲＸをそれぞれ発生する。受信フロー制御状態フリップフロップ１２０は、信号ＳＴＡＲＴＤＡＴＡとライン１３６上の信号ＴＸＳＥＮＤＡＣＫとを受信し、送信制御ロジック１１２への信号ＲＸＳＥＮＤＡＣＫをライン１４２上に出力する。送信フロー制御状態フリップフロップ１２４は、信号ＡＣＫＲＸとライン１３８上の信号ＴＸＳＥＮＤＢＹＴＥとを受信し、送信制御ロジック１１２への信号ＴＸＷＡＩＴＡＣＫをライン１４０上に出力する。送信制御ロジック１１２は、更にライン２６上の信号ＤＩＡＧＭＯＤＥとライン９６上の信号ＴＸＶＡＬＩＤとを受信し、信号ＴＸＡＣＫをライン９８上に、送信シフトレジスタ１１８への制御信号をライン１４４上に、並列信号ＳＥＲＣＯＮＴを送信シフトレジスタ１１８に出力する。送信シフトレジスタ１１８は、更にライン９２上の並列データバスＴＸＤＡＴＡを受信し、ライン３６上に信号ＤＩＡＧＳＣＡＮＯＵＴを出力する。
【００３１】
図にはその接続は示されてはいないが、データアダプタ９０には任意にオン−チップシステムクロックからの入力が供給される。データアダプタとオン−チップソース／宛先ロジックとの間のデータ及び制御信号が、オン−チップソース／宛先ロジックのクロックと同期する必要がある場合には、システムクロックは同期実行のために使用できる。データアダプタ９０は、信号ＴＥＳＴＣＬＫ（信号ＴＣＫから引き出された）によってクロックされたＴＡＰコントローラからソース／宛先ロジックの内部機能のクロック環境まで、また、ソース／宛先ロジックのクロック環境から信号ＴＥＳＴＣＬＫによってクロックされたＴＡＰコントローラまでの直列データの同期を実行する。図には示されていないが、ＴＡＰコントローラ４は任意にスキャンイネーブル信号をデータアダプタ９０に供給してもよい。このようなスキャンイネーブル信号は、ＴＡＰコントローラがテストデータ出力信号ＴＤＯへのデータ出力用スキャンパスを選択したことを示す。
【００３２】
データアダプタ９０は、ＴＡＰコントローラ４を介したオフ−チップからの１方向直列データをオン−チップソース／宛先ロジックで使用するのにより適したフォーマットに変換する。逆に、データアダプタ９０は、オン−チップソース／宛先ロジックにより供給されるデータフォーマットを１方向直列データに変換する。好ましい実施形態においては、並列８ビット又はバイトの形式でデータをオン−チップソース／宛先ロジックに供給するのが望ましい。しかしながら、特に受信データバスＲＸＤＡＴＡ及び送信データバスＴＸＢＵＳは、１バイト幅よりも１ビット幅のみでもよい。また、受信及び送信データバスＲＸＢＵＳとＴＸＢＵＳは、複数バイト幅のバスであってもよい。
【００３３】
データアダプタ９０は、受信及び送信の両データの「フロー制御」の機能を実行する。直列データは、受信端部がこのデータを受信できる容量を有してデータ損失または低下を防止する時は、ＴＡＰコントローラ４を（どちらの方向でも）単に通過するだけである。受信端部がより多くのデータを受信する用意があることの通信は、そのような情報を反対方向に送信することにより実行される。これはフロー制御プロトコルを構成する。本実施形態におけるデータアダプタ９０は、オン−チップソース／宛先ロジックとの通信のために１方向直列データの並列フォーマットへの変換を提供する。このように、フロー制御プロトコルはまた、データアダプタ９０とオン−チップソース／宛先ロジックとの間で必要である。
【００３４】
このように、このフロー制御は２つの境界、ＴＡＰコントローラ４とデータアダプタ９０との間の境界、及びデータアダプタ９０とこのデータアダプタ９０がインタフェースするオン−チップソース／宛先ロジックとの間の境界、を越えて実行される。
ＴＡＰコントローラ４とデータアダプタ９０との間のフロー制御を提供するには、テストデータ入力信号ＴＤＩライン及びテストデータ出力信号ライン上の１方向データが、図４(a) に示されるような開始及び停止ビットでエンコードされる。ビットフロー制御プロトコルは、２つの開始ビットＳ１及びＳ２、１つの停止ビットＥ１で信号を送るゼロ復帰方式（ＲＴＺ）である。開始ビットと停止ビットとの間にはデータのバイトが含まれる。このフォーマットの直列データは、ＴＡＰコントローラ４のテストデータ入力信号ＴＤＩからライン２８上の信号ＳＣＡＮＩＮまで通過してデータアダプタ９０に入力される。データアダプタ９０の受信制御ロジック１１０は、直列データ信号ＳＣＡＮＩＮを受信する。受信制御信号が２つの連続した直列ビットを開始ビットＳ１及びＳ２として認識すると、受信シフトレジスタ１１４がライン１２６上で制御されて、データバイトを内部で形成する次の連続した８ビットを直列にロードする。
【００３５】
２つの連続した開始ビットＳ１及びＳ２に応答して、受信制御ロジック１１０はまた、受信フロー制御状態フリップフロップ１２０を設定するライン１３４上の信号ＳＴＡＲＴＤＡＴＡを設定する。設定されると、受信フロー制御状態フリップフロップ１２０は、順次、ライン１４２上の信号ＲＸＳＥＮＤＡＣＫを設定し、この信号により、送信制御ロジック１１２は、図４(b) に示される形式でテストデータ出力信号ＴＤＯに肯定応答信号を送る。この肯定応答信号は、開始肯定応答ビットＡＣＫと停止ビットＥ１のみを含んで構成される。これらのビットは、ライン１４４上の信号の制御下でライン１５０上の信号ＳＥＲＣＯＮＴとして送信シフトレジスタ１１８に並列に直接ロードされ、信号ＤＩＡＧＳＣＡＮＯＵＴとして、図４(b) の直列形式で送信シフトレジスタ１１８から出力される。肯定応答信号が送られると、送信制御ロジック１１２は、ライン１３６上に信号ＴＸＳＥＮＤＡＣＫを設定して、受信フロー制御状態フリップフロップをリセットし、信号ＲＸＳＥＮＤＡＣＫをリセットする。
【００３６】
本実施形態で使用されるフロー制御プロトコルによれば、信号ＳＥＲＣＯＮＴは、開始ビットＳ１とＳ２及び停止ビットＥ１とを送信シフトレジスタ１１８内に直接ロードするのを許可する３ビット信号である。ＴＡＰコントローラ４を介して出力され、オン−チップソース／宛先ロジックによって示されるデータバイトが送信データバスＴＸＤＡＴＡ上に現れると、このデータバイトは送信制御ロジック１１２の制御下で送信シフトレジスタ１１８内に並列にロードされ、送信制御ロジック１１２は、図４(a) に示されるフォーマットの信号を直列にシフトする前に、信号ＳＥＲＣＯＮＴを形成する開始ビットＳ１、Ｓ２及び停止ビットＥ１を送信シフトレジスタ内の適宜なビット位置に直接ロードする。肯定応答信号を送ると、送信制御ロジック１１２は単一の開始ビットと停止ビットを送信シフトレジスタ１１８内に直接ロードしてから、それらを全て直列にシフトする。
【００３７】
受信制御ロジック１１０が信号ＳＣＡＮＩＮの停止ビットＥ１を受信すると、データバイトは受信シフトレジスタ１１４内にロードされ、受信制御ロジック１１０の制御下でデータバイトはバス１３０上を受信シフトレジスタ１１４から受信バッファ１１６まで転送される。データバイトが受信バッファ１１６内にロードされると、このデータバイトは、ライン１００上の信号ＲＸＶＡＬＩＤも設定する受信制御ロジック１１０の制御下でバスＲＸＤＡＴＡ上に出力される。信号ＲＸＶＡＬＩＤに応答して、オン−チップソース／宛先ロジックはＲＸＢＵＳ上のデータバイトを受け入れ、この受信をライン１０２上の信号ＲＸＡＣＫを設定することによって示す。信号ＲＸＡＣＫに応答して、受信制御ロジック１１０は、信号ＲＸＶＡＬＩＤをリセットし、受信シフトレジスタ１１４内に別のデータバイトがある場合は、信号ＲＡＶＡＬＩＤを再度設定する前にこれを受信バッファ１１６に転送する。
【００３８】
受信バッファ１１６が好ましい実施形態において提供される。これは、データの受信をオーバーラップする公知のトークンを２つの開始ビットが受信されるとすぐに送信させ、また、連続したバイトを、各バイトの間にどんな隙間もなしに転送させることによって、効果的なデータ転送速度を維持する。データバッファリングもまた送信側に設けることができる。
【００３９】
オン−チップソース／宛先ロジックは、データバイトをＴＸＤＡＴＡバス９２上のデータアダプタ９０に並列に転送する。オン−チップソース／宛先ロジックが、転送されるデータバイトを有している時は、ライン９６上の信号ＴＸＶＡＬＩＤが設定される。信号ＴＸＶＡＬＩＤが設定されるのに応答して、送信制御ロジック１１２が、ライン１４４を介して送信シフトレジスタ１１８を制御してＴＸＤＡＴＡバス上のデータバイトを並列にロードする。更に、ライン１５０を使用して、送信制御ロジック１１２は、適宜な開始ビットＳ１とＳ２及び停止ビットＥ１を送信シフトレジスタ１１８内にロードする。そして、再びライン１４４を介した送信制御ロジック１１２の制御下で、２つの開始ビットと１つの停止ビットを含むデータバイトが信号ＤＩＡＧＳＣＡＮＯＵＴとして送信シフトレジスタ１１８から外に直列にシフトされ、これはＴＡＰコントローラ４を介して信号ＴＤＯに接続される。バスＴＸＤＡＴＡ上のデータバイトがシフトレジスタ内にロードされると、送信制御ロジック１１２は、ライン９８上に信号ＴＸＡＣＫを設定してオン−チップソース／宛先ロジックへのデータバイトの受信の肯定応答をする。そして、オン−チップソース／宛先ロジックは別のデータバイトを送信できる。データバッファリングが、必要に応じて送信シフトレジスタ１１８と関連して提供される。
【００４０】
送信シフトレジスタ１１８が送信制御ロジック１１２に制御されて、図４(a) に示される形式の直列データを出力すると、送信制御ロジック１１２はまた、ライン１３８上に信号ＴＸＳＥＮＤＢＹＴＥを設定し、この信号は送信フロー制御状態フリップフロップ１２４を設定する。この信号に応答して、送信フロー制御状態フリップフロップ１２４はライン１４０上に信号ＴＸＷＡＩＴＡＣＫを設定する。信号ＴＸＷＡＩＴＡＣＫが設定されると、データバイトが受信されたことをオン−チップソース／宛先ロジックが肯定応答するのを送信制御ロジック１１２は待つ。オン−チップソース／宛先ロジックは送信データバイトをうまく受信すると、図４(b) に示されるタイプの肯定応答信号をテストデータ入力信号ＴＤＩに送る。ライン２８上の信号ＳＣＡＮＩＮのような肯定応答信号を受信すると、受信制御ロジック１１０は、ライン１３２上に信号ＡＣＫＲＸを設定して、送信フロー制御状態フリップフロップ１２４をリセットさせ、結果として信号ＴＸＷＡＩＴＡＣＫをリセットさせる。そして、送信制御ロジック１１２は、オン−チップソース／宛先ロジックからの次の並列データバイトの受信及び送信のための準備をする。
【００４１】
図５は、ホストメモリとターゲットメモリとの間の接続を確立するのにどのようにデータアダプタ９０を使用するかを系統図形式で示す。集積回路２は、相互の間をオフ−チップで通信し、また、上記信号を使用してオン−チップで回路と通信する、ＴＡＰコントローラ４とデータアダプタ９０とを含んで構成される。図５において、上述の信号に相当する信号には同様の参照符号を使用する。図５から明らかなように、集積回路２はまた、メモリバスアダプタ１６０と、ターゲットＣＰＵ１６２と、オン−チップメモリ１６４と、を含んで構成される。集積回路２には、ターゲットＣＰＵ１６２及びオン−チップメモリ１６４とインタフェースするメモリバス１６６が備えられる。メモリバス１６６はまた、オフ−チップメモリ１７４に接続する。オフ−チップのテストアクセスポート信号ＴＣＫ、ＴＭＳ、ＴＤＩ、ＴＤＯ及びＴＲＳＴ＊が、ＴＡＰコントローライニシャライザ１７６に接続しており、このＴＡＰコントローライニシャライザ１７６は、それ自体別のデータアダプタ１８０からライン１７８上の直列データ入力信号ＳＥＲＩＮを受信し、データアダプタ１８０へライン１７９上の直列データ出力信号ＳＥＲＯＵＴを出力する。この別のデータアダプタ１８０は、ライン１９０、１８８及び１８６上の信号ＥＸＴＲＸＤＡＴＡ、ＥＸＴＲＸＶＡＬＩＤ及びＥＸＴＴＸＡＣＫを、別のメモリバスアダプタ１９４に出力し、ライン１８４、１８２及び１９２上の信号ＥＸＴＴＸＤＡＴＡ、ＥＸＴＴＸＶＡＬＩＤ及びＥＸＴＲＸＡＣＫをメモリバスアダプタ１９４から受信する。メモリバスアダプタ１９４は外部メモリバス１９８に接続される。ホストＣＰＵ２００は、外部メモリバス１９８に接続され、別のオフ−チップメモリ２０２も外部メモリバス１９８に接続される。
【００４２】
ＴＡＰコントローライニシャライザ１７６は、テストモードか診断モードのいずれかの作動用のＴＡＰコントローラ４を構成する。メモリバスアダプタ１６０，１９４は、バスＲＸＤＡＴＡ上の並列データをオン−チップソース／宛先ロジックと通信するのにより適宜なメッセージフォーマットに調整する。このため、メモリバスアダプタはメッセージコンバータであって、本出願人による特許出願に開示されるタイプのメッセージコンバータである。メモリバスアダプタはまた、オン−チップソース／宛先ソースのメッセージフォーマットをバスＴＸＤＡＴＡの送信用の並列データバイトに変換する。
【００４３】
図５の構成は種々の診断手順に使用できる。オン−チップ及びオフ−チップ直列リンクが集積回路２とホストＣＰＵ２００との間の種々の異なるタイプの診断データの通信を可能にする。
ホストＣＰＵ２００は、オン−チップバスシステム１６６を使用してオン−チップメモリ１６４またはオフ−チップメモリ１７４にアクセスできるが、これにはターゲットＣＰＵ１６２を必要としない。このためには、ホストＣＰＵによりなされたメモリアクセス要求が、オフ−チップメモリバスアダプタ１９４と、データアダプタ１８０と、ＴＡＰコントローライニシャライザ１７６と、オン−チップＴＡＰコントローラ４と、データアダプタ９０と、メモリバスアダプタ１６０と、を含んで構成されるインタフェース回路を介して、ここに述べられる種々の変換を行って送信できる。同様に、オン−チップメモリ１６４またはオフ−チップメモリ１７４から読み出されたデータは、オン−チップバスシステム１６６とインタフェース回路とを介してホストＣＰＵに戻ることができる。逆に、ターゲットＣＰＵが、ホストＣＰＵに関連したオフ−チップメモリ２０２とアクセスできる。ホストＣＰＵ２００に関連したオフ−チップメモリ２０２から読み出されたデータも、同様にインタフェース回路を介して戻ることができる。
【００４４】
また、ターゲットＣＰＵが診断目的のために監視される。例えば、それ自体のメモリへのそのアクセスがオン−チップ回路によって監視され、アクセスされたメモリアドレスに関する情報がインタフェース回路を使用してホストＣＰＵに送信される。更に、ターゲットＣＰＵは、その状態を示す構成レジスタを含むか又はアクセスできる。これらのレジスタの内容に関する情報はオフ−チップでインタフェース回路を使用してホストＣＰＵに送信される。逆に、特定状態情報がこれらのレジスタ内にロードされてホストＣＰＵの命令下でターゲットＣＰＵの状況に影響を与える。
【００４５】
このように、ここで述べられるインタフェース回路は、ホストからターゲットへのまたターゲットからホストへの（読み出し及び書き込み）メモリアクセス要求、ＣＰＵレジスタの状態情報、メモリアクセス要求に応答したホストメモリまたはターゲットメモリからの読み出しデータ、ＣＰＵレジスタ内へロードするための状況データ及びターゲットＣＰＵによりアクセスされるメモリアドレスに関する情報を含む診断データの通信を可能にする。
【００４６】
このように、インタフェース回路は、以下の診断上の機能を回路内に提供できる。
リアルタイムの診断手順の実行機能、即ち、ターゲットＣＰＵがリアルタイムで作動すると同時に、その作動に割り込まずに診断手順を行う。特に、メモリバスの監視とターゲットメモリへのアクセスが、ターゲットＣＰＵを必要とせずにホストＣＰＵにより行える。
【００４７】
ホストＣＰＵからターゲットメモリ及び構成レジスタへのアクセス。
ターゲットＣＰＵからホストメモリへのアクセス。
ホストプロセッサからＣＰＵのブーティング操作を実行する機能を含む、ターゲットＣＰＵ及びサブシステムの制御。
本実施形態では、テストデータ入力信号ＴＤＩとテストデータ出力信号ＴＤＯ上の作動の診断モードにおけるテストアクセスポート内及び外へシフトされる１方向直列データストリームは、メッセージ形式の情報である。このようなメッセージは、ホストＣＰＵまたはターゲットＣＰＵによって開始される。デバッギング環境において、ホストＣＰＵは、オン−チップソース／宛先ロジックの侵入型又は非侵入型診断を実行できる。或いは、診断モードにおいて、このようなメッセージは、ターゲットＣＰＵによって開始できる。
【００４８】
図５のメモリバスアダプタ１６０は、チップに入力されるメッセージを、オン−チップソース／宛先ロジックによって使用するための制御情報、アドレス及びデータに変換する。本実施形態では、各メッセージは複数のバイトで構成されるパケットである。前述のように、データアダプタ９０は入力する直列データを並列バイトに変換し、出力するバイトを直列データに変換する。メモリバスアダプタ１６０は、入力するメッセージをデコードして、オン−チップソース／宛先ロジックに制御情報、アドレス情報及びデータ情報を供給する。同様に、メモリバスアダプタ１６０は、オン−チップソース／宛先ロジックからの制御情報、アドレス情報及びデータ情報を、データアダプタに並列で送信されたメッセージにエンコードする。
【００４９】
本実施形態において、開始される２つのタイプのメッセージと、応答として発生する２つのタイプのメッセージがある。開始される２つのタイプのメッセージは、特定メモリ位置に特定データを書き込むためのメモリ書き込み要求「ｐｏｋｅ」と、特定メモリ位置からデータを読み出すためのメモリ読み出し要求「ｐｅｅｋ」とである。レスポンスとして発生する２つのタイプのメッセージは、メモリ読み出し要求に応答して読み出しデータを戻す「ｐｅｅｋｅｄ」メッセージと、後述の「ｔｒｉｇｇｅｒｅｄ」メッセージとである。各メッセージの第１のバイトは、ヘッダバイトであり、４つのメッセージの各々の構成は図６に示される。ヘッダバイトは、パケットの性質を識別するパケット識別子を構成する。
【００５０】
第１の２ビットのヘッダバイトは、メッセージのタイプ、即ち、メッセージが「ｐｏｋｅ」、「ｐｅｅｋ」、「ｐｅｅｋｅｄ」又は「ｔｒｉｇｇｅｒｅｄ」メッセージかどうか、
を識別するタイプ識別子である。以下の６ビットのヘッダバイトは、ヘッダバイトに続き前記メッセージに関連するワード数を識別して、パケットの長さを識別する長さ識別子として機能する。或いは、以下に詳細に説明するように、これらの６ビットは理由識別子として機能できる。図７は本実施形態による４つのタイプのメッセージの各々の構成を示す。図７(a) は「ｐｏｋｅ」ヘッダバイト００＋ＷＯＲＤＣＯＵＮＴを含んで構成される「ｐｏｋｅ」メッセージを示し、アドレスワードが続き、更に少なくとも１つのデータワードが続く。図７(b) は「ｐｅｅｋ」ヘッダバイト０１＋ＷＯＲＤＣＯＵＮＴを含んで構成される「ｐｅｅｋ」メッセージであり、アドレスワードが続く。図７(C) は「ｐｅｅｋｅｄ」ヘッダバイト１０＋ＷＯＲＤＣＯＵＮＴを含んで構成される「ｐｅｅｋｅｄ」メッセージであり、少なくとも１つのデータワードが続く。図７(d) は「ｔｒｉｇｇｅｒｅｄ」ヘッダバイト１１＋ＲＥＡＳＯＮのみを含む「ｔｒｉｇｇｅｒｅｄ」メッセージである。４つのタイプのメッセージの各々の操作は以下に詳細に説明する。
【００５１】
上記のように、メモリバスアダプタ１６０は、メッセージコンバータとして機能し、以下に説明される。図８は、本実施形態によるメッセージコンバータ１６０のブロック図である。既に詳細に説明したように、メッセージコンバータ１６０は、データアダプタ９０からライン９４上の受信データバスＲＸＤＡＴＡの情報バイトを受信し、ライン９２上の送信データバスＴＸＤＡＴＡの情報バイトをデータアダプタ９０に送信する。更に、上述のように、メッセージコンバータ１６０は、データアダプタからのライン１００及び９８上の信号ＲＸＶＡＬＩＤ及びＴＸＡＣＫのそれぞれを受信し、ライン１０２及び９６上に信号ＲＸＡＣＫ及びＴＸＶＡＬＩＤのそれぞれをデータアダプタに発生する。また、メッセージコンバータ１６０は、３つのメモリバスポート、即ち、メモリスレーブバス２２０、メモリマスタバス２２２及びメモリモニタバス２２６を介してオン−チップソース／宛先ロジックとインタフェースする。メッセージコンバータ１６０はさらに、診断バス２３４を介してオン−チップソース／宛先ロジックとインタフェースする。更に、メッセージコンバータ１６０は、ライン２３６上のシステム信号ＳＹＳＴＥＭを受信する。
【００５２】
メモリスレーブバス２２０、メモリマスタバス２２２、メモリモニタバス２２６及び診断バス２３４は、それぞれ１方向バスとして図８に示される。しかしながら、各バスは、図８の矢印で示されるのとは反対の方向の信号を含む。図８において使用される規則は、バスの矢印方向が要求がなされる方向を反映することである。図９は、特に各バスに含まれる信号を示す。
【００５３】
図９を参照すると、各バスは、複数のＡＤＤＲＥＳＳ信号３５０と、複数のＷＲＩＴＥ＿ＤＡＴＡ信号３５２と、複数のＲＥＡＤ＿ＤＡＴＡ信号３５４と、１つのＲＥＱＵＥＳＴ信号３５６と、１つのＧＲＡＮＴ信号３５８と、１つのＶＡＬＩＤ信号３６０と、を含む。各バスは、図示されない関連する他の制御信号、即ち、読み出し書き込み制御信号を有する。図９から明らかなように、ＡＤＤＲＥＳＳ信号３５０とＷＲＩＴＥ＿ＤＡＴＡ信号３５２とＲＥＱＵＥＳＴ信号３５６とは、全て１方向に伝達され、ＲＥＡＤ＿ＤＡＴＡ信号３５４とＧＲＡＮＴ信号３５８とＶＡＬＩＤ信号３６０とは、反対方向に伝達される。しかしながら、メモリモニタバス２２６において、ＲＥＡＤ＿ＤＡＴＡ信号３５４とＧＲＡＮＴ信号３５８もまた、ＡＤＤＲＥＳＳ信号３５０、ＷＲＩＴＥ＿ＤＡＴＡ信号３５２、ＲＥＱＵＥＳＴ信号３５６と同じ方向に伝達できることは言うまでもない。ＶＡＬＩＤ信号３６０は、メモリモニタバス２２６には接続されない。
【００５４】
メモリマスタバス２２２は、オフ−チップホストＣＰＵによって駆動されてメモリアクセス要求をターゲットＣＰＵメモリ領域につくり、また、診断機能によっても駆動できる。メモリスレーブバス２２０は、ターゲットＣＰＵによって駆動されてオフ−チップメモリまたは診断機能にメモリアクセス要求をつくる。メモリモニタバス２２６は、メモリスレーブバス２２０と同じオン−チップ信号に接続され、診断機能により使用されてどのターゲットＣＰＵがスレーブバスを使用するかを確認（非侵入型で）する固定通路バスである。診断バス２３４は、メモリバスというよりはレジスタアドレスバスであり、診断機能により発生する「ｔｒｉｇｇｅｒｅｄ」事象を伝達すると同時に、オン−チップ診断機能からの読み出し及びオン−チップ診断機能への書き込みを実行できる。診断バスはまた、診断機能からのメモリアクセス（メモリマスタバスを介したローカルオン−チップ／オフ−チップメモリへのまたはデータアダプタを介したリモートホストメモリへの）を開始するのに使用される。
【００５５】
状態信号が、ターゲットＣＰＵから診断機能を介してメッセージコンバータに供給される。これらの信号は、命令ポインタが有効である時を示す制御信号を備えた命令ポインタ等のターゲットＣＰＵ進行情報を含む。ホストＣＰＵは、命令ポインタを監視してターゲットＣＰＵが何をしているかを判定する。状態信号はまた、ＣＰＵの作動状態に関する付加的な情報を提供する多面的な個別の制御信号を含む他のターゲットＣＰＵ状態信号を含む。状態は、診断バスの「ｒｅｇｉｓｔｅｒ」読み出しによりアクセスされる。命令ポインタもまた異なるレジスタアドレスからではあるが、「ｒｅｇｉｓｔｅｒ」読み出しによりアクセスできる。
【００５６】
オン−チップソース／宛先ロジックのステータスに関連する他の情報は、オン−チップレジスタに関連する情報等のステータス信号として含まれるが、このような情報は、一般的には診断目的のためのオン−チップ機能のいくつかの抽出を含むレジスタから引き出されるだけである。機能信号は任意の非侵入型オン−チップ診断機能、例えば、診断情報及び制御の抽出を容易にする任意のレジスタ、に接続できる。
【００５７】
メモリマスタバスは、オン−チップのアドレスバスと、書き込みバスと、読み出しバスと、関連する制御信号とに接続される。メモリマスタバスは、オン−チップメモリ１６４、オフ−チップメモリ１７４及び構成レジスタ等のメモリバスを介してアクセス可能な任意の他のリソースを含むターゲットメモリスペース内の範囲に、ホストＣＰＵ及び診断機能がアクセスできるように使用される。
【００５８】
個別のバスポートにオン−チップソース／宛先ロジックとの種々の接続点を設けるよりも、それらの間を識別する適宜な制御信号を使用して、いくつかのバスを組合せることができる。例えば、メモリバス書き込みデータと読み出しデータとは、共通のメモリデータバスに組合される。メモリアドレスはメモリデータに組合される。メモリスレーブバスはメモリマスタバスに組合される。このような選択肢は、実行、領域及び他の要素間の実行トレードオフを表す。
【００５９】
ライン２３６上のシステム信号は、システムサービスに接続点を提供する。このようなシステムサービスは、例えば、クロッキング、電源、リセット、テストである。
メッセージコンバータ１６０は、データアダプタによって直列ビットフォーマットから直列バイトフォーマットに変換された連続した情報バイトを受信し、ヘッダバイトを読み出してその内部に伝えられるメッセージを決定する。このようにメッセージコンバータ１６０は、入力するメッセージを解釈して必要な作動を実行する。この必要な動作には、ホストに戻される情報を選択すること、又は、メッセージコンバータに接続されるバスのうちの適宜な１つを介してメモリアクセスを開始してデータを読み出すか書き込むことが含まれる。メッセージコンバータ１６０はまた、メッセージプロトコルに従ってオン−チップバスから受信した並列データをオフ−チップ送信用のメッセージに編集する。これには、ヘッダバイトを並列データとアドレスバイトとに配分して、入力するデータ、アドレス
及び制御信号に応じてメッセージの性質を定義することが含まれる。図８のメッセージコンバータ１６０の作動と図６及び７のメッセージプロトコルとを図１０を参照して詳細に説明する。
【００６０】
図１０は、本実施形態によるメッセージコンバータ１６０を示す。メッセージコンバータ１６０は、ヘッダレジスタ２４０と、アドレスレジスタ２４２と、データレジスタ２４４と、減分制御２４６と、増分制御２４８と、シフト制御２５０と、ステートマシン２５２と、バス選択及び指定ロジック２５４と、を含んで構成される。メッセージコンバータ１６０には、全ての制御信号を伝達するための内部制御バス２５８と、内部情報バス２５６と、が備えられる。内部制御バス２５８は、ステートマシン２５２に接続し、ステートマシン２５２への及びステートマシン２５２からのフロー制御信号ＲＸＶＡＬＩＤ、ＲＸＡＣＫ、ＴＸＶＡＬＩＤ及びＴＸＡＣＫを伝達する。内部制御バス２５８は更に、ライン２６０上の減分制御信号を減分制御２４６に、ライン２６２上の増分制御信号を増分制御
２４８に、ライン２６４上のシフト制御信号をシフト制御２５０に、ライン２６６上のヘッダ制御信号をヘッダレジスタ２４０に、ライン２６８上のアドレス制御信号をアドレスレジスタ２４２に、ライン２７０上のデータ制御信号をデータレジスタ２４４に、また、ライン２７２上の選択及び指定制御信号をバス選択及び指定ロジック２５４に伝達する。ヘッダレジスタ２４０は、減分制御２４６からライン２４１上の制御信号を受信し、アドレスレジスタ２４２は、増分制御２４８からライン２４３上の制御信号を受信し、また、データレジスタ２４４は、シフト制御２５０からライン２４５上の制御信号を受信する。情報バス２５６は、受信データバイトＲＸＤＡＴＡをヘッダレジスタ２４０、アドレスレジスタ２４２、データレジスタ２４４及びバス選択及び指定ロジック２５４に伝達する。また、情報バス２５６は、バス選択及び指定ロジック２５４、データレジスタ２４４、アドレスレジスタ２４２及びヘッダレジスタ２４０からの出力を送信データ信号ＴＸＤＡＴＡに伝達する。バス選択及び指定ロジック２５４は、メモリスレーブバス２２０、メモリマスタバス２２２、メモリモニタバス２２６及び診断バス２３４の１つへの或いはこれらの１つからの情報バス２５６上の情報を指定し、その情報は、本実施形態ではバイト幅のものである。
【００６１】
図１０の実施形態において、システム信号２３６は、ヘッダレジスタ２４０と、アドレスレジスタ２４２と、データレジスタ２４４と、ステートマシン２５２とをクロックするのに使用されるライン２８０上のクロック信号を提供するだけである。メッセージコンバータ１６０の作動を、予測される種々のメッセージタイプについて以下に説明する。
【００６２】
ホストＣＰＵが「ｐｏｋｅ」を開始すると、図７(a) に示される形式の直列メッセージが、集積回路2 のテストアクセスポートで受信され、続いて、受信データバスＲＸＤＡＴＡ上でデータアダプタ９０によって並列の情報バイトの形式で出力される。受信データバスＲＸＤＡＴＡ上の各並列情報バイトを出力すると、データアダプタ９０は、ライン１００上で信号ＲＸＶＡＬＩＤを設定する。ライン１００上の信号ＲＸＶＡＬＩＤに応答して、メッセージコンバータ１６０のステートマシン２５２は、受信データバスＲＸＤＡＴＡの情報バイトをメッセージコンバータ１６０内にロードし、ライン１０２上に信号ＲＸＡＣＫを設定して情報バイトの受信を肯定応答する。信号ＲＸＶＡＬＩＤを設定してメッセージの第１の情報バイトを示すデータアダプタ９０に応答して、ステートマシン２５２は、ライン２６６を介してヘッダレジスタ２４０を制御し、受信データバスＲＸＤＡＴＡの情報バイトを内部情報バス２５６を介してヘッダレジスタ２４０内にロードする。そして、ステートマシン２５２は、ヘッダレジスタ２４０内にロードされたバイトのうちの少なくとも２つの重要なビットを検索して、どのタイプのメッセージが入力するのかを決定する。この場合、ステートマシン２５２は、受信したバイトの少なくとも２つの重要なビットを００として識別し、「ｐｏｋｅ」メッセージに対応するとして入力メッセージを識別する。ホストＣＰＵによって開始された「ｐｏｋｅ」メッセージは、ホストＣＰＵがターゲットＣＰＵメモリ領域内に特定アドレスで挿入しようとするデータを含む。ヘッダレジスタ２４０に記憶されたヘッダバイトと関連するワードカウントは、メッセージ内のデータワード数のカウントである。ステートマシン２５２は、ライン２６８を介してアドレスレジスタ２４２を制御して、受信データバスＲＸＤＡＴＡ上で受信される次の４バイトを、情報バス２５６を介してアドレスレジスタ２４２内にロードする。この４バイトはアドレスワードを形成する。アドレスワードがアドレスレジスタ２４２内にロードされると、受信データバスＲＸＤＡＴＡで受信される第１のデータワードを形成する次の４バイトが、制御ライン２７０を介してステートマシン２５２の制御下でデータレジスタ２４４内にロードされる。そして、ステートマシン２５２は、ライン２７２を介してバス選択及び指定ロジック２５４を制御してアドレスレジスタ２４２とデータレジスタ２４４の内容をメモリマスタバス２２２に出力する。
【００６３】
アドレスレジスタとデータレジスタの内容をメモリマスタバス２２２に出力すると、ステートマシン２５２は、前記バスに関連する書き込み制御信号と、メモリマスタバスに関連するライン３５６上の要求信号とを設定する。アクセスされるターゲットＣＰＵのメモリスペースに関連するメモリアービタは、要求されたメモリアクセスが進行できることを判定すると、メモリマスタバスに関連するライン３５８上の許可（ＧＲＡＮＴ）信号を宣言する。より高い優先順位の要求者（例えばＣＰＵ）が要求を出さずに前回アクセスを完了した場合、メッセージコンバータ１６０は低優先順位を持ってもよい。要求及び許可の信号セットは、各データワード転送毎に要求される。
【００６４】
メモリアクセス後、ヘッダレジスタ２４０に含まれるワードカウントが１ではない場合（本実施形態では、１はゼロのワードカウントを示す）、アドレスレジスタ２４２は、制御ライン２４３を介して増分制御２４８によって増分され、別のワード情報がデータレジスタ２４４内にロードされる。更に、レジスタ２４４へのデータワードのローディング後、アドレスレジスタ２４２内に記憶されたアドレス及びデータレジスタ２４４内に記憶されたデータは、書き込み制御信号及び要求信号が設定されるのとともにメモリマスタバス上に出力され、また、データレジスタ２４４内に含まれるデータワードがアドレスレジスタ２４２内に含まれるアドレスに書き込まれる。その肯定応答は、メモリマスタバス上に許可信号を設定するメモリアービタによって確認される。この一連のアドレスレジスタ２
４２の増分とデータレジスタ２４４内への４バイト情報のローディングは、ヘッダレジスタ２４０に含まれるワードカウントが１と同じ、即ち、データワードが残らない、状態になるまで継続する。
【００６５】
ホストＣＰＵが「ｐｅｅｋ」を開始すると、図７(b) に示される形式の直列メッセージが集積回路２のテストアクセスポートで受信され、続いて受信データバスＲＸＤＡＴＡ上のデータアダプタ９０によって並列情報バイト形式で出力される。信号ＲＡＶＡＬＩＤを設定して第１の情報バイトを示すデータアダプタ９０に応答して、ステートマシン２５２はヘッダレジスタ２４０を制御してその内部に情報バイトをロードする。そして、ステートマシン２５２はその内部にロードされたバイトのうち少なくとも２つの重要なビットを検索して、どのメッセージが入力するかを判定するが、この場合、受信したバイトのうち少なくとも２つの重要なビットを０１として識別し、入力するメッセージを「ｐｅｅｋ」メッセージに対応するものとして識別する。ホストＣＰＵによって開始される「ｐｅｅｋ」メッセージはターゲットＣＰＵメモリ領域内にアドレスを含み、その内容はホストＣＰＵが検索する。
【００６６】
ステートマシン２５２が、その内部に含まれる第１の２ビットのヘッダバイトを０１として識別することにより、ヘッダレジスタ２４０内にロードされた「ｐｅｅｋ」メッセージを識別すると、ステートマシン２５２は、ヘッダバイトの第１の２ビットを「ｐｅｅｋｅｄ」ヘッダ用の適宜なビット、即ち、１０に対応するように変化させて、この変化させたヘッダバイトを送信データバスに送信してヘッダレジスタ内に記憶されたワードカウントをそのまま含むホストＣＰＵに戻し、図７（c)に示される形式の戻された「ｐｅｅｋｅｄ」メッセージのヘッダバイトを形成する。言い換えれば、「ｐｅｅｋ」ヘッダバイトは「ｐｅｅｋｅｄ」ヘッダバイトとして、そのままのワードカウントと０１から１０に変化した少なくとも２つの重要なビットとともに戻される。受信データバスＲＸＤＡＴＡ上で受信された次の４バイト情報がアドレスレジスタ２４２内にロードされてアドレスワードを形成する。ステートマシン２５２は、ライン２７２を介して選択及び指定ロジック２５４を制御し、メモリマスタバスに関連する読み出し制御信号の設定と、メモリマスタバスに関連する要求信号が設定されるのと、を連係して、アドレスレジスタ２４２に含まれるアドレスワードをメモリマスタバス２２２上に出力する。
【００６７】
設定される要求信号に応答して、アクセスされるターゲットＣＰＵのメモリスペースに連絡するメモリアービタが、要求されたアクセスが進行できることを判定すると、アービタはメモリマスタバスに関連する許可信号を設定する。メモリマスタバス上のアドレス出力に関連する実際のメモリ位置がアクセスされ、その内部に記憶されたデータがメモリマスタバスの読み出しデータバス上に出力されると、アービタはメモリマスタバスに関連する信号ＶＡＬＩＤを設定してデータがホストＣＰＵに返送される用意ができていることを示す。設定される信号ＶＡＬＩＤに応答して、ステートマシン２５２は、ライン２７２を介してバス選択及び指定制御ロジックを制御してメモリマスタバスの読み出しデータバス上のデータをデータレジスタ２４４内にロードする。データレジスタ２４４内にロードされたデータワードは、内部情報バス２５６を介して送信データバスＴＸＤＡＴＡ上に一度に１バイトずつシフトアウトされて、ホストＣＰＵに返送される。要求、許可及び有効の信号のセットが転送される各データワード毎に必要である。
【００６８】
データレジスタ２４４内にロードされたデータワードがホストＣＰＵにシフトバックされた後、ステートマシン２５２はライン２６０を介して減分制御２４６を制御し、制御ライン２４１を介してヘッダレジスタ２４０に含まれるワードカウントを１だけ減少させる。ワードカウントが１ではない場合、増分制御２４８がライン２６２を介してステートマシン２５２によって制御されて、制御ライン２４３を介してアドレスレジスタ２４２に含まれるアドレスを増加し、このアドレスが再びバス選択及び指定ロジック２５４によって設定された要求信号及び読み出し制御信号とともにメモリマスタバス２２２上に出力される。このように、ターゲットＣＰＵメモリ領域内の次の連続したメモリ位置が読み出され、その内容がメッセージコンバータ１６０のデータレジスタ２４４内に書き込まれる。また、このデータワードは１バイトずつ送信データバスＴＸＤＡＴＡ上でホストＣＰＵにシフトアウトされ、ヘッダレジスタ内のワードカウントが再び１だけ減少される。ヘッダレジスタ２４０に含まれるワードカウントが０と同じ、即ちデータワードが残らない状態になるまで、このサイクルが繰り返される。
【００６９】
ターゲットＣＰＵは、「ｐｏｋｅ」又は「ｐｅｅｋ」メッセージを開始してホストＣＰＵ２００のメモリスペースからデータを書き込むかまたは読み出す。ターゲットＣＰＵ領域のメモリスレーブバス２２０とその関連制御信号を監視し、読み出しまたは書き込み制御信号に関連して、ターゲットＣＰＵによるアドレスバス上のアドレス出力がターゲットＣＰＵではなくホストＣＰＵのアドレス範囲内であることを識別するステートマシン２５２によって、ターゲットＣＰＵによる「ｐｏｋｅ」メッセージまたは「ｐｅｅｋ」メッセージの開始が認識される。
複数ワードの「ｐｅｅｋ」メッセージ及び「ｐｏｋｅ」メッセージを実行する上記のようなターゲットＣＰＵにより開始される「ｐｏｋｅ」メッセージ及び「ｐｅｅｋ」メッセージに対して、ターゲットＣＰＵは単一ワードの「ｐｅｅｋ」メッセージ及び「ｐｏｋｅ」メッセージのみを実行できる。
【００７０】
ターゲットＣＰＵが「ｐｏｋｅ」メッセージを開始すると、これは、メモリスレーブバスの書き込みデータバスに関連する書き込み信号と、設定されるメモリスレーブバスに関連する要求信号とを識別するステートマシン２５２によって認識される。また、ステートマシン２５２は、メモリスレーブバスによって要求される書き込みデータと関連するアドレスがターゲットＣＰＵ領域のメモリ範囲の外側であることを認識する。この状況に応じて、ステートマシン２５２は、図６(a) に示されるような予め記憶された「ｐｏｋｅ」ヘッダバイトを制御ライン２６６を介してヘッダレジスタ２４０内に直接ロードする。このような「ｐｏｋｅ」ヘッダバイトは１つのデータワードを示すワードカウントを持つ。そして、メモリスレーブバスのアドレスデータバス上のアドレスワードはバス選択及び指定ロジック２５４を介して、ステートマシン２５２の制御下でアドレスレジスタ２４２内にロードされ、メモリスレーブバスの書き込みデータバス上の書き込みデータも同様にデータアダプタ１６０のデータレジスタ２４４内にロードされる。そして、ステートマシン２５２の制御下で、ヘッダレジスタ２４０内の「ｐｏｋｅ」バイトは、送信データバスＴＸＤＡＴＡ上を通ってホストＣＰＵに出力され、アドレスレジスタ２４２に含まれる４バイトアドレスとデータレジスタ２４４に含まれる４バイトデータが続く。
【００７１】
同様に、要求信号とターゲットＣＰＵ領域のアドレス範囲の外側のメモリスレーブバスのアドレスバス上のアドレスとに関連して読み出し信号をメモリスレーブバス上で識別するステートマシン２５２に応答して、ステートマシン２５２は、「ｐｅｅｋ」ヘッダバイトに相当する図６(b) に示されるヘッダバイトをヘッダレジスタ２４０内にロードする。この場合、ヘッダバイトは１つのワードカウントを含む、即ち、データワードがないことを示す。同様に、上述のように、ステートマシン２５２はまた、データアダプタ１６０を制御してメモリスレーブバスのアドレスバス上のアドレスをアドレスレジスタ２４２内にロードする。そして、ヘッダレジスタ２４０に含まれるヘッダバイトは、送信データバスＴＸＤＡＴＡ上に出力され、アドレスレジスタ２４２に記憶された４つの連続したバイトが続く。
【００７２】
この段階で、メッセージコンバータ１６０は、開始されたターゲット「ｐｅｅｋ」メッセージで終了するが、ターゲットＣＰＵはメモリスレーブバス２２０上の信号ＶＡＬＩＤを受信していない。結果として、ターゲットＣＰＵは「ｓｔｕｃｋ」（即ち、固定されたかまたは継続して待機中）であり、何もしていない（停止または他の中断ではない）。しかしながら、メッセージコンバータ１６０は「ｓｔｕｃｋ」ではなく、その他の活動（ＣＰＵが「ｓｔｕｃｋ」なので開始されたターゲット「ｐｅｅｋ」メッセージまたは「ｐｏｋｅ」メッセージを受信しないが）を進行する位置にいる。
【００７３】
このように、メッセージコンバータがメモリアクセスメッセージをオフ−チップホストプロセッサに送信すると、後続のメッセージまたは要求を自由に処理できる。  ターゲットＣＰＵにより開始された「ｐｏｋｅ」メッセージまたは「ｐｅｅｋ」メッセージに応答して、ホストＣＰＵは「ｐｅｅｋｅｄ」メッセージで応答する。ホストＣＰＵからの「ｐｅｅｋｅｄ」メッセージの受信は、図６(c) の構成に対応するヘッダレジスタ内のヘッダバイトを認識するステートマシン２５２によって識別される。受信データバスＲＸＤＡＴＡからの次の４バイトの情報がデータレジスタ２４４内にシフトされ、その内部にロードされたデータワードが、設定されるメモリスレーブバスと連絡する信号ＶＡＬＩＤと関連して、ステートマシン２５２の制御下で、ターゲットＣＰＵ領域のメモリスレーブバス２２０のデータバスに、バス選択及び指定制御ロジック２５４によって転送されるので、ターゲットＣＰＵのメモリスペースと連絡するメモリアービタに、「ｐｅｅｋ」要求によって要求されたデータが利用可能であることを表示する。ターゲットＣＰＵは単一ワード「ｐｅｅｋ」を開始するだけなので、ホストＣＰＵからの「ｐｅｅｋｅｄ」メッセージは単一データワードのみを含む。ターゲットＣＰＵが信号ＶＡＬＩＤを受信すると、「ｓｔｕｃｋ」ではなくなる。
【００７４】
メモリスレーブバス２２０は、ターゲットＣＰＵによって使用されて、メッセージコンバータ１６０を介してホストＣＰＵによってアクセスされるオン−チップ診断機能にアクセスする。これは開始されたターゲット「ｐｅｅｋ」／「ｐｏｋｅ」に使用するのと同じバスであり、アドレス範囲は、これがオン−チップ診断機能へのアクセスかどうか判定する。ターゲットＣＰＵによってメモリスレーブバス２２０上で開始される任意の作動に応答して、ステートマシン２５２はライン２７２を介してバス選択及び指定ロジック２５４を制御しメモリスレーブバス２２０上の任意の情報または制御信号を診断バス２３４に転送する。
【００７５】
図１１を参照すると、図８及び図１０のメッセージコンバータ１６０と、オン−チップソース／宛先ロジックまたはターゲット領域とホストＣＰＵと、の間の相互接続が概略的に示される。図５を参照して前述したように、集積回路２は、ＴＡＰコントローラ４と、データアダプタ９０と、ＣＰＵレジスタ１６３を有するターゲットＣＰＵ１６２と、オン−チップメモリ１６４と、を含んで構成される。加えて、図１１の集積回路２は、診断レジスタ３０１を有する診断機能回路３００と、メモリキャッシュ３０２と、外部メモリインタフェースコントローラ３０４と、図１０で詳細に説明したメッセージコンバータ１６０と、を含んで構成される。図１１において、ホストＣＰＵ２００がホスト通信アダプタ３０８を介して集積回路２のＴＡＰコントローラ４とインタフェースすることが示されて
いる。本実施形態において、ホスト通信アダプタ３０８は、ＴＡＰコントローライニシャライザ１７６と、データアダプタ１８０と、図５において説明したメモリバスアダプタ１９４と、を含んで構成される。また、ホスト通信アダプタ３０８は、ホストＣＰＵ２００からまたはホストＣＰＵ２００へのメッセージを変換するための集積回路２に設けられたメッセージコンバータ１６０と同等のメッセージコンバータを有する。更に、図１１を参照すると、メッセージコンバータ１６０が診断バス２３４を介して診断機能回路３００と通信するのがわかる。診断機能回路３００とターゲットＣＰＵ１６２とは、バス３１０を介して相互に通信する。メッセージコンバータ１６０のメモリモニタバス２２６とメモリスレーブバス２２０は、ターゲットＣＰＵとメモリキャッシュ３０２との間の共通バス３
１２と接続する。また、ターゲットＣＰＵとメモリキャッシュ３０２とは、ＣＰＵ命令−取り出しバス３１４を介して相互接続する。メッセージコンバータ１６０上のメモリマスタバス２２２は、オン−チップソース／宛先ロジックのメモリバス１６６に順次接続するメモリキャッシュ３０２に接続する。図５を参照して前述したように、メモリバス１６６はオン−チップメモリ１６４に接続する。また、メモリバス１６６は、外部メモリインタフェースコントローラ３０４と接続し、その外部メモリインターフェースコントローラ３０４は、オフ−チップメモリ１７４とインタフェースするオフ−チップメモリバス３１６にオン−チップソース／宛先ロジックメモリバス１６６をインタフェースする。
【００７６】
図１１の構成は、オン−チップソース／宛先ロジックとホストＣＰＵとの間でメッセージを送信することによって種々の診断手順を実行するのに使用できる。
診断バス２３４は、診断機能回路３００の診断レジスタ３０１への又は診断レジスタ３０１からの読み出し及び書き込みを可能にするとともに、トリガ事象を発生させる。ターゲットＣＰＵに関連する制御情報は、診断機能回路３００から読み出される。ターゲットＣＰＵに関連する命令ポインタと他の制御信号は、診断機能回路３００の診断レジスタ３０１に記憶される。命令ポインタは、診断レジスタ３０１の一つに連続して複写され、診断バス２３４上の要求によってアクセスされる。ターゲットＣＰＵの状態を検索するには、診断機能回路３００の診断レジスタ３０１の一つを検索する必要がある。診断レジスタ３０１は、例えば、ＳＴＯＲＥ、ＴＲＡＰ、ＴＡＫＥ＿Ａ＿ＴＲＡＰ、ＴＲＡＰ＿ＡＴ＿ＮＥＸＴ＿ＥＸＩＴ等の、ターゲットＣＰＵの種々の制御信号を記憶できる。これらの信号は特定のワイヤを介してＣＰＵに伝達される。
【００７７】
前述のように、ホストＣＰＵがメモリマスタバス２２２を介してターゲットＣＰＵメモリスペース内のメモリ位置に書き込みができるのと同様の方法で、ホストＣＰＵは、診断バス２３４を介して診断機能回路３００内のレジスタに書き込みができる。診断機能回路３００のレジスタに書き込みをするホストＣＰＵに応答して、トリガされた事象が発生する。このトリガ事象は、トリガ事象を識別する理由コードに関連する要求信号を識別するステートマシン２５２によってメッセージコンバータ１６０内で検出される。要求信号に応答して、ステートマシン２５２は、トリガ事象に関連する理由コードを、トリガヘッダバイトを識別する２ビット１１とともに、ヘッダレジスタ２４０内にロードする。そして、ヘッダレジスタ２４０に記憶されたトリガヘッダバイトが送信データバスＴＸＤＡＴＡ上をターゲットＣＰＵに出力される。
【００７８】
上記のように、ターゲットＣＰＵ自体が、メモリモニタバス２２６と診断バス２３４とを介して診断機能回路３００にアクセスできる。同様に、ターゲットＣＰＵが診断機能回路に書き込みをすると、この書き込みに応答してトリガ事象が発生して、ステートマシン２５２がヘッダレジスタ２４０に含まれるトリガヘッダバイトを出力してターゲットＣＰＵに戻す。ステートマシン２５２は、診断バス２３４上の書き込みがターゲットＣＰＵによって行われたかまたはホストＣＰＵによって行われたかを記憶し、トリガ事象を正しい宛先に返送する。
【００７９】
図１１に示された環境で実行される本実施形態によるメッセージコンバータは、テストアクセスポートからのブート、ホットプラグ挿入及びホストとターゲットの同期化等の種々の高レベルの診断特徴を維持できる。
このように、本実施形態によれば、集積回路に挿入され、限定されたピンカウントを介してホストＣＰＵとオン−チップソース／宛先ロジックとの間の通信を提供するメッセージコンバータが設けられる。このコンバータは、種々のオン−チップリソースへのアクセスを有する。これらのリソースのうちのいくつかは単に監視されるだけであり、他は制御されるかまたは監視及び制御される。任意のリソースの監視は非侵入的であり、チップ機能の実行または待機に何の影響も与えない。これは診断目的には理想的である。メッセージコンバータは、受信メッセージの解釈と、送信メッセージの編集と、オン−チップソース／宛先ロジックへのまたはオン−チップソース／宛先ロジックからの情報の選択または指示との機能を実行する。メッセージコンバータは、オン−チップ機能のいずれからも独立して作動するので、何らかの侵入的動作の実行が指示されるまでは、或いは指示されなければ、非侵入的である。
【００８０】
図１１を参照すると、その構成は、メモリキャッシュ３０２を取り除き、共通バス３１２とＣＰＵ命令取り出しバス３１４とをメモリバス１６６に直接接続することによって応用されてもよい。更に、この構成は、付加的なマスタまたはメモリバス１６６に接続されたオン−チップの自律機能を有するようにも応用できる。さらにまた、ターゲットＣＰＵ１６２は取り除くことができ、メモリスレーブバス２２０とメモリマスタバス２２２とメモリモニタバス２２６とをメモリバス１６６に直接接続できる。
以下の実施の態様によれば、診断機能回路３００は命令トレースコントローラ４００を有する。例えば図１２について説明する。図１２は命令ポインタレジスタ４０６を有する内部レジスタを備えたターゲットＣＰＵ１６２を示す。命令ポインタレジスタは、ＣＰＵが実行する命令のメモリ内のアドレスを識別する一般的には３２ビットメモリアドレスである命令ポインタを保持する。命令ポインタレジスタはＣＰＵの実行ステージの少し前の命令ポインタを保持して、実行に必要となる前の適切な時期に命令をメモリから取り出せるようにする。命令は、メモリバス１６６を介してオン−チップメモリ１６４に接続された命令取り出しバス３１２に沿ってメモリから取り出される。命令は、上記のような別のメモリ位置から取り出されてもよい。
【００８１】
命令ポインタレジスタ４０６に保持された命令ポインタはバス３１０に沿って命令トレースコントローラに追加的に供給される。命令ポインタは、命令ポインタが有効である時、ＣＰＵが処理フローを転換（divert）した時等を示す制御信号とともに供給される。特に、制御信号は取り出される次のアドレスが非シーケンシャルアドレスであってアドレス内の不連続を表わすことを示す信号を有する。これについて以下により詳細に説明する。
【００８２】
図１２において、命令トレースコントローラ４００はトレースバス４０４を介してトレースアドレスを保持する専用メモリまたはトレースバッファ４０２に接続される。専用メモリ４０２は、以下により詳細に説明するような不連続であると識別される命令ポインタのトレースアドレスを保持するトレースストレージ位置を提供する。
【００８３】
図１３は、命令トレースコントローラ４００が提供された別の環境を示す。これは、命令トレースコントローラがメモリ４０２等の専用メモリを持たない点だけが図１２の環境と相違する。代わりに、トレースバス４０４’を介してメモリバス１６６に接続される。このように、トレースアドレスを記憶するトレースストレージ位置は、オン−チップメモリ１６４、メモリバス１６６に接続されたオフ−チップメモリ、図１１のメモリ１７４の等のオン−チップメモリバス１６６を介してアクセスできるメモリ、或いは、前記ＴＡＰコントローラ及びメッセージコンバータを介してアクセスできるホストメモリに設けられる。
【００８４】
図１２及び図１３の両図において、命令トレースコントローラ４００は診断バス２３４を介してメッセージコンバータに接続される。
図１４は命令トレースコントローラ４００の構成部品を示す。命令トレースコントローラ４００は、不連続の前の命令ポインタを保持するＪｕｍｐ−Ｆｒｏｍレジスタ４０８を含んで構成される。このようなレジスタは複数でもよい。命令トレースコントローラはさらに、不連続に引き続く最初の命令への命令ポインタを保持するＪｕｍｐ−Ｔｏレジスタ４１０を有する。このようなレジスタは複数でもよい。アドレスレジスタ４１２は、Ｊｕｍｐ−Ｆｒｏｍレジスタ４０８及び／又はＪｕｍｐ−Ｔｏレジスタ４１０で識別されたトレースアドレスを保持するためのトレースストレージ位置がどこかを示す。トレースストレージ位置が専用メモリ（またはトレースバッファ）内に設けられる場合、サイズレジスタ４１４がトレースバッファのサイズを示すために設けられる。オプション制御ビットレジスタ４１６がオプション制御ビットを保持し、その機能は以下に説明される。命令トレースコントローラは更に、トレースバッファにロールオーバー能力を提供するためにアドレスレジスタ４１２を増分するインクリメンタ４１９を有することで、いっぱいになった時に、トレースアドレスを、トレースバッファの先頭に、以前に記憶されたトレースアドレス上に上書きして記憶できるようにする。命令トレースコントローラ４００はまた、バス３１０に沿ってＣＰＵから命令ポインタとともに送られる命令制御信号を受信するように接続された制御ロジック４１８を有する。制御ロジック４１８はまたオプション制御ビットレジスタ４１６に接続される。各レジスタ４０８、４１０、４１２、４１４、４１６及び制御ロジック４１８は、それ自体診断バス２３４及びトレースバス４０４に接続される内部バス４２０に接続される。命令ポインタはバス３１０上をＣＰＵからレジスタ４０８及びレジスタ４１０に供給される。
【００８５】
命令トレースコントローラは以下のように作動する。ＣＰＵの命令ポインタレジスタ４０６に順次保持される命令ポインタはバス３１０によって命令トレースコントローラ４００に供給される。命令ポインタと接続する命令制御信号が、不連続が存在することを示すと、その不連続である命令ポインタはアドレスレジスタ４１２によって識別されたトレースストレージ位置に記憶される。適切なトレースストレージ位置がアクセスされる間、不連続である命令ポインタがレジスタ４０８に一時的に保持される。命令ポインタは識別されたトレースストレージ位置に記憶
された後、レジスタ４０８から取り除かれるか、または、改良として、付加的な診断目的のための次のアクセス用にレジスタ４０８内に残される。
【００８６】
ここでの不連続の意味は、引き続く命令ポインタが、前回命令位置の直後の位置にない場合を示す。不連続は、飛び越しを生じるプログラム命令または命令フローの転換を生じる例外的トラップまたは割り込み等の何らかの影響のために生じる。上記実施の形態では、このような不連続はＣＰＵからのＬＯＡＤ ＮＥＷ ＩＰＴＲと呼ばれる制御信号によって命令トレースコントローラに知らされる。これは、取り出しユニットに新メモリ位置からの取り出しを開始することを知らせるためのＣＰＵの実行ユニットが生成する信号である。ＣＰＵから命令トレースコントローラに供給される命令ポインタは、次に実行される命令へのポインタと、何らかの不連続があった場合には取り出しユニットが取り出しを再開すべき新フローの開始位置へのポインタとの両方を保持する。これ（命令トレースコントローラへの命令ポインタの供給）は次の命令が実行されるより随分前のことであるが、ＣＰＵが実行する次の命令への有効なポインタであるという意味では、有効な命令ポインタである。
【００８７】
命令トレースコントローラは、不連続の前に実行された最新の命令のアドレスと、新フローの第１命令のアドレスと、を受信する。上記のように、不連続の前に実行された最新の命令のアドレスはレジスタ４０８に保持される。新フローの第１命令のアドレスがレジスタ４１０に保持され、その間に適切なトレースストレージ位置がアクセスされてこれを記憶する。前述したように、第１命令のアドレスはレジスタ４１０から取り除かれるか、または、次の診断目的のためにレジスタ４１０に保持される。
【００８８】
不連続の決定とこれら不連続の前後のトレースアドレスのみのストレージがトレースアドレスに必要なストレージ量を著しく減少させることは言うまでもない。しかしながら、検出された不連続と命令ポインタとの正確な関係は、トレースストレージ位置にトレースアドレスを記憶するための基準が一貫しており、使用者がこの関係を知っている限り重要ではないことは明らかである。例えば、命令トレースコントローラは最新に実行される次の命令か、最新に実行された命令か、または、不連続の前に実行される次の命令、へのポインタを記憶できる。
【００８９】
制御ロジック４１８はまた、ＣＰＵをストールさせる信号を発生するように作動できる。これは、トレースアドレスのストレージが比較的ゆっくりであって、トレースアドレスが完全に記憶されるまでＣＰＵをストールさせるのが得策であるような状況において有用である。
オプション制御ビットレジスタ４１６は、上記オプションのどれが命令トレースコントローラによって実際に実行されるかを制御する。このように、オプション制御ビットレジスタ４１６は、レジスタ４０８が使用されるのか、レジスタ４１０が使用されるのか、または両方が使用されるのかを制御できる。また、オプション制御ビットレジスタ４１６は、トレースストレージ位置が容易に利用できない場合、ＣＰＵストール信号が送られるべきかどうか決定できる。
【００９０】
上記のように、トレースストレージ位置は、命令トレースコントローラが作動する環境に応じて種々に異なるメモリの１つにある。
命令トレースコントローラがプライベート専用メモリ４０２を使用している図１２の配置は、ＣＰＵまたは他のどんな機能回路の性能にも影響を与えず、或いは、ＣＰＵまたは他のどんな機能回路の待ち時間も中断することのない非割り込み方法で、命令トレースコントローラを作動させるのに有効である。このように、メモリ４０２は、ＣＰＵメモリ及び通常メモリバスとは別個のプライベートメモリである。しかしながら、プライベートメモリ４０２は、診断バス２３４及びトレースバス４０４を介してＣＰＵの通常作動に割り込むことなく（非侵入的に）検査できる。このように、命令トレースが保持でき、オン−チップＣＰＵの通常作動に影響を与えずに全てアクセスできる。
【００９１】
図１３の配置はプライベートメモリ４０２を必要とはしていないが、ターゲットＣＰＵ用に設けられた通常機能回路を共有する。これは従って図１２の配置より侵入的ではあるが、ＣＰＵの作動には実際には侵入的ではない。上記のように、命令トレースコントローラは、不連続におけるメモリ内のトレースストレージ位置にアクセスすることを必要とするだけである。このアクセスを、ＣＰＵがデコーディングしている時に、新フローの第１命令とすることができる。一定のＣＰＵ構成では、或いは、一定の条件下では、これは、命令トレースコントローラがＣＰＵの性能又は待ち時間に全く影響しないことを意味する。しかしながら、例えばメモリバスが重くロードされる場合、命令トレースコントローラによるメモリバスの共有が性能にわずかな影響を与えるような他の状況が考えられる。しかしながら、これは減少した全体メモリ要求によって相殺できる。
【００９２】
命令トレースコントローラは、上記のＴＡＰコントローラインタフェース及び直列通信リンクを介してアクセスできるメモリを使用することができる。これは、通常のメモリアクセスよりはるかにゆっくりであるが、不連続が急速に連続して生じることがなく、通信帯域幅が十分であれば、命令トレースコントローラは非侵入的にこの方法を使用できる。実際に帯域幅が、近接した間隔の不連続を処理するのに不十分な場合、命令トレースコントローラは幾つかのトレース情報を捨てることができる。実際には、不連続が互いに近接して生じた場合、幾つかのトレース情報が捨てられたとしても、通常は、検出されなかった不連続を推測するために十分な情報が保持される。
【００９３】
アドレスレジスタ４１２は、どのメモリを使用するかを決定する。このアドレスレジスタ４１２は、各命令ポインタがトレースストレージ位置に書き込まれた後に増分するように構成されることで、これらの命令ポインタが、選択されたメモリがどのような種類のメモリであってもその内部の連続した位置に記憶されるようにする。このように、複数種類のメモリへの接続部を有する本実施の形態において、アドレスレジスタは、個々の場合について、これらの種類のメモリのうちどれを使用するかを決定する。アドレスレジスタ自体は、診断バス２３４を介して、或いは、トレースバス４０４を介してオン−チップＣＰＵを使用して、最初にロードできる。また、これら経路のいずれも命令トレースコントローラ４００内の他のレジスタを最初に設定するのに使用できる。
【００９４】
上記実施の形態において、ＣＰＵからの命令ポインタを備える命令制御信号が命令トレースコントローラに不連続を知らせる。代わりの方法として、命令トレースコントローラ自体が、次の命令ポインタを予測値と比較することによって不連続を検出できる。通常、命令ポインタはリニアシーケンスに続き、コードが続くメモリ位置から取り出される。このように、予測値は前回値より大きい１つのアドレス位置である。そうでない場合、これは不連続であり、そのように識別される。可変の長さコードＣＰＵであっても、この方法は有効である。可変の長さコードについては、命令取り出しが連続したメモリ位置からであっても、実行される命令のサイズに依存するため、実行は１つのメモリ位置から次の位置に続かない。しかしながら、取り出しが依然として連続したメモリ位置からである事実は、依然として、次の命令ポインタを予測値と比較することにより不連続が識別できることを意味する。
【００９５】
更に、上記実施の形態で述べたように、命令ポインタはＣＰＵ１６２の命令ポインタレジスタ４０６から命令トレースコントローラ４００に供給される。代わりの方法として、命令トレースコントローラは、命令が実行される前にメモリから取り出されるべきであれば、ＣＰＵから直接命令ポインタを監視する代わりに命令取り出しバス３１２を監視することができる。このような代わりの方法は、簡単な命令スキーマが使用されるような状況において有効である。これは、また、命令取り出しが命令実行のどれくらい前であるかに関する情報を必要とする。
【図面の簡単な説明】
【図１】本実施形態による接続点を有するテストアクセスポートコントローラを備えた集積回路を示す。
【図２】図１のテストアクセスポートコントローラを示す。
【図３】図２のテストアクセスポートコントローラに接続するための本実施形態によるデータアダプタを示す。
【図４】診断モードにおける図２のテストアクセスポートコントローラを介してオフ−チップ通信されたデータのデータフォーマットを示す。
【図５】図３のデータアダプタの実行を階層形状ブロック図で示す。
【図６】本実施形態によるメッセージのヘッダバイトのフォーマットを示す。
【図７】本実施形態によるメッセージのフォーマットを示す。
【図８】本実施形態によるメッセージコンバータを概略的に示す。
【図９】本実施形態におけるメッセージコンバータに接続されるバスのフォーマットを示す。
【図１０】本実施形態のメッセージコンバータの実行を示す。
【図１１】本実施形態のメッセージコンバータの実行を階層形状ブロック図で示す。
【図１２】命令トレースコントローラの１つの適用例をブロック図で示す。
【図１３】命令トレースコントローラの他の適用例をブロック図で示す。
【図１４】命令トレースコントローラの構成部品をブロック図で示す。