(57)【特許請求の範囲】
【請求項１】
プログラム命令の制御のもとで動作するプロセッサコアと、
前記プロセッサコアにシステムクロック信号を供給する手段と、
前記プロセッサコアにテストクロック信号を供給する手段と、
前記プロセッサコアの動作を駆動する前記システムクロック信号と、前記プロセッサコアの動作を駆動する前記テストクロック信号のいずれかを選択するクロック選択手段と、
を含むデータ処理装置であって、
前記クロック選択手段は、正常動作中は前記システムクロック信号を選択し、テスト動作中、プログラム命令を前記プロセッサコアにロード中は前記テストクロック信号を選択し、前記クロック選択手段は、前記テスト動作中に実行されるプログラム命令内の１つまたはそれ以上のクロック選択ビットに対応して前記テストクロック信号あるいは前記システムクロック信号のいずれかを選択し、前記プロセッサコアを駆動して該プロセッサコアによりそのプログラム命令を実行することを特徴とするデータ処理装置。
【請求項２】
請求項１記載の装置であって、前記プロセッサコアに接続されかつ前記システムクロック信号によって駆動される少なくとも１つの補助回路を含み、前記クロック選択手段はテスト動作中は前記システムクロック信号を選択して前記補助回路を使用するプログラム命令を前記プロセッサコアにより実行することを特徴とするデータ処理装置。
【請求項３】
請求項２記載の装置であって、前記補助回路はメモリ回路を含むことを特徴とするデータ処理装置。
【請求項４】
請求項２記載の装置であって、前記補助回路はコプロセッサを含むことを特徴とするデータ処理装置。
【請求項５】
請求項１から請求項４のいずれか１つに記載の装置であって、それを介してプログラム命令をプロセッサコアに供給する命令パイプラインを含み、前記クロック選択手段は、前記プロセッサコアによって実行される次の命令を保持する前記命令パイプラインのそのパイプラインステージから１つまたはそれ以上のクロック選択ビットを受信することを特徴とするデータ処理装置。
【請求項６】
請求項１から請求項５のいずれか１つに記載の装置であって、テスト動作中、各プログラム命令が前記プロセッサコアに供給される前に、前記テストクロックの制御のもとで、前記１つまたはそれ以上のクロック選択ビットを含む各プログラム命令が直列にロードされることを特徴とするデータ処理装置。
【請求項７】
請求項６記載の装置であって、テスト動作中に前記プログラム命令が直列にロードされる構成のテスト走査チェーンを含むことを特徴とするデータ処理装置。
【請求項８】
請求項１から請求項７のいずれか１つに記載の装置であって、正常動作中、各プログラム命令はプログラムメモリから並列にロードされ、前記１つまたはそれ以上のクロック選択ビットは、前記プログラムメモリから読出された前記プログラム命令に個別に付加されることを特徴とするデータ処理装置。
【請求項９】
プログラム命令の制御のもとでプロセッサコアを動作させるステップと、
前記プロセッサコアにシステムクロック信号を供給するステップと、
前記プロセッサコアにテストクロック信号を供給するステップと、
前記プロセッサコアの動作を駆動する前記システムクロック信号と、前記プロセッサコアの動作を駆動する前記テストクロック信号のいずれかを選択するステップと、
を含むデータ処理方法であって、
前記システムクロック信号は正常動作中に選択され、前記テストクロック信号はテスト動作中にプログラム命令が前記プロセッサコアにロード中に選択され、前記テスト動作中に実行されるプログラム命令内の１つまたはそれ以上のクロック選択ビットは、前記テストクロック信号あるいは前記システムクロック信号のいずれかの選択を制御し、前記プロセッサコアを駆動して該プロセッサコアによりそのプログラム命令を実行することを特徴とする方法。
【発明の詳細な説明】
本発明はデータ処理装置のテスト分野に関し、より詳細には、データ処理ハードウエアのテストに関する。
ユーザがプロセッサコアの状態を調べることを可能にするデバッグ機能を備えたマイクロプロセッサを使用したシステムを提供することは公知である。かかるデバッグ機能システムは、プロセッサコアをデータ処理装置の他の部分から隔離することを可能にするので、プロセッサコアに特定の命令を強制的に実行させることにより、プロセッサコアの内部状態を見えるようにすることができる。
アドバンスト．マイクロ．デバイセス（Advanced Micro Devices）製のＡＤＭ２９２００集積回路のようなシステムにおいては、これらのデバッグ命令は普通のデータバス／命令バスを介してプロセッサコアにロードされるのではない。デバッグ命令は、ＪＴＡＧ型走査チェーン（scan chain）を介して直列にロードされた後、命令バス／データバス上で走査される。走査チェーンに命令を直列にロードすることは、直列命令を供給中の外部装置によって調整されたテスト制御信号の制御のもとでおこなわれる。この方法でロードされた命令は、通常よりもずっと遅い速度で実行される。というのは、たとえば、３２ビットの命令に対しては、テストクロック信号がコアに発行されてコアがその命令を実行する前に、その命令をロードするために３２個のテストクロックサイクルが必要になるからである。
１つの側面から見た場合、本発明はデータを処理する装置を提供しており、前記装置には、
プログラム命令の制御のもとで動作するプロセッサコアと、
前記プロセッサコアにシステムクロック信号を供給する手段と、
前記プロセッサコアにテストクロック信号を供給する手段と、
前記プロセッサコアの動作を駆動する前記システムクロック信号と、前記プロセッサコアの動作を駆動する前記テストクロック信号のいずれかを選択するクロック選択手段と、
が含まれており、
前記クロック選択手段は、正常動作（normal operation）中は前記システムクロック信号を選択し、テスト動作中はプログラム命令をロードしている間に前記テストクロック信号を選択し、前記クロック選択手段は、前記テスト動作中に実行されるプログラム命令内の１つまたはそれ以上のクロック選択ビットに対応して前記テストクロック信号あるいは前記システムクロック信号のいずれかを選択し、前記プロセッサコアを駆動してそのプログラム命令を実行する。
このクロック選択機能（selecting featune）を備えることにより、正常動作中は、プロセッサコアが使用する真のシステムクロック信号に従って一旦ロードされた命令は、プロセッサコアによって実行される。この方法によれば、プロセッサコアの動作をより実際的にテストすることができる。
特に本発明の好適実施例は、前記プロセッサコアに結合され、前記システムクロック信号によって駆動される少なくとも１つの補助回路を含み、前記クロック選択手段が、テスト動作中に前記システムクロック信号を選択して、前記補助回路を使用するプログラム命令を実行する。
本発明は、プロセッサコア自体だけでなく、プロセッサコアに接続されている補助回路の状態を調べるため高度に望ましい能力を提供する。プロセッサコアは、完全に静止した状態で起動して外部テストクロック信号を利用できるが、プロセッサコアとともに使用される形式の補助回路にはこの能力はない（たとえば、ＤＲＡＭはシステムクロックの速度で絶えずリフレッシュされる必要がある）。一般に、補助回路が付随したプロセッサコアの動作の調整は微妙なので、かかるプロセッサコアはシステムクロックから偏移することができない。たとえば、データ転送は、同一システムクロックを使用するコアおよび補助回路の双方に同期していなければならない。
本発明は、テストクロック信号を使用して命令をロードする能力とともに、システムクロック信号を使用したこれらの命令の実行に切り替わる能力を提供する。この能力によって、この方法で実行できるテスト結果の解析の利用価値が大きくなる。
上に示唆したように、プロセッサコアに結合される補助回路は多数の形式をとることができる。しかしながら、本発明が特に適しているのは、補助回路にメモリ回路とコプロセッサが含まれているシステムである。このような補助回路は、プロセッサコアと同じ集積回路上に組み立てることができるので、プロセッサコアとこれらの回路との間の相互作用の解析を他の方法で達成することは非常に困難になるであろう。
本発明の好適実施例においては、命令パイプラインが備えられており、プログラム命令は命令パイプラインを介して前記プロセッサコアに入力され、前記クロック選択手段は、前記プロセッサコアによって実行される次の命令を保持する前記命令パイプラインのそのパイプラインステージから、１つまたはそれ以上のクロック選択ビットを受信する。
高性能マイクロプロセッサには、処理速度を向上させるため命令パイプラインが含まれている。命令パイプラインは本発明により有利に利用されており、クロック信号が必要な場合その変化が滑らかになるように、付随するプログラム命令とともにクロック選択ビットが有効にバッファされている。
たとえば、専用バスを介して並列にロードするというように、テスト動作中は各プログラム命令をデバッグ制御システムからいろいろな方法でロードできることが理解されるであろう。しかし、テスト動作中、各プログラム命令が前記プロセッサコアに供給される前に、前記テストクロックの制御のもとで、前記１つまたはそれ以上のクロック選択ビットを含む各プログラム命令が直列にロードされるシステムを提供することは特に有利である。
テスト動作中にプログラム命令を直列にロードできると、装置のピン数を少なくできるので、設計上の制約が緩和される。
直列ローディングの好適実施例では、前記プログラム命令がテスト動作中に直列にロードされるテスト走査チェーンを備えることは非常に有利である。
テスト走査チェーンは、ハードウエアテスト中の信号捕捉や刺激動作（stimulus application）など、他の機能にも使用可能である。このため、１つ以上の役目を実行できるようにテスト走査チェーンをつくることができるので、テスト走査チェーンが占有するチップ表面の面積に、より多数の機能を備えることができる。
正常動作ではシステムクロック信号が使用されるのであるから、正常動作中はクロック選択ビットは関連が無いことが理解できるであろう。したがって、好適実施例においては、正常動作中の各プログラム命令はプログラムメモリから並列にロードされ、前記１つまたはそれ以上のクロック選択ビットは、前記プログラムメモリから読出された前記プログラム命令に個別に付加される。
プログラム命令をロードした後クロック選択ビットを付加することは、以下に示すことを意味している。即ち、クロック選択ビットは、正常動作のプログラム命令に対しては同じ値なので、正常動作に使用されるプログラム命令を格納するメモリは、クロック選択ビットを格納する必要がないということである。この方法によれば、プログラムメモリの記憶容量を有効に利用することができる。
別の側面から見た場合、本発明はデータ処理方法を提供しており、前記方法には、
プログラム命令の制御のもとでプロセッサコアを動作させるステップと、
前記プロセッサコアにシステムクロック信号を供給するステップと、
前記プロセッサコアにテストクロック信号を供給するステップと、
前記プロセッサコアの動作を駆動する前記システムクロック信号と、前記プロセッサコアの動作を駆動する前記テストクロック信号のいずれかを選択するステップと、
が含まれており、
前記システムクロック信号は正常動作中に選択され、前記テストクロック信号はテスト動作中にプログラム命令をロードしている間に選択され、前記テスト動作中に実行されるプログラム命令内の１つまたはそれ以上のクロック選択ビットは、前記テストクロック信号あるいは前記システムクロック信号のいずれかの選択を制御し、前記プロセッサコアを駆動してそのプログラム命令を実行する。
実施例を示すだけの方法で、添付の図面を参照しながら本発明の実施例を説明する。
第１図は、正常モードおよびテストモードで動作するプロセッサコアを備えた集積回路を示す。
第２図は、第１図の実施例で使用されているクロック信号を示す。
第１図はプロセッサコア４を備えた集積回路２を示している。ダイナミックランダムアクセスメモリ（ＤＲＡＭ）６とコプロセッサ８との形式をとる補助回路は、プロセッサコア４に双方向で接続されている。ＪＴＡＧ型走査チェーン１０はプロセッサコア４の周囲に用意されている。
システムクロック信号ＭＣｌｋおよびテストクロック信号ＤＣｌｋはクロックマルチプレクサ１２に入力され、クロックマルチプレクサ１２は、外部制御信号Ｃｎｔあるいはクロックシンクロナイザ１４が発生させる内部制御信号クロックのいずれかの制御のもとで切り替えられる。コプロセッサ８とＤＲＡＭ６とには絶えずシステムクロック信号ＭＣｌｋが供給される。
プログラム命令は、命令パイプライン１６を介してプロセッサコア４に供給される。命令パイプライン１６は、命令・データバス２０あるいは走査チェーン１０のセクションのいずれかからプログラム命令を選択するプログラム命令マルチプレクサ１８の動作によって充満する。また、命令・データバスが、命令パイプライン１６を通過せずにプロセッサコア４との間でデータ語を転送する役目をする点で命令・データバス２０の状態を考慮するため、プログラム命令マルチプレクサ１８からの出力はプロセッサコア４に直接送られる。プログラム命令マルチプレクサ１８はテスト制御論理２２によって切り替えられるが、テスト制御論理２２は、正常動作中に使用される命令・データバス２０からのプログラム命令を選択するのではなく、テストモードの動作の場合、走査チェーン１０に直列にロードされていたプログラム命令を選択する役目をする。テスト制御論理２２自体は、（図示されていない）外部のデバッグコントローラによって駆動される。
プロセッサコア４は、３２ビット命令セットであると普通に考えられるものを使用して動作する。３２ビットプログラム命令は、その１端にクロック選択ビットＳを付加することにより修正される。クロック選択ビットＳが付加されると、プログラム命令は３３ビットプログラム命令になる。クロック選択ビットＳは、システムクロック信号ＭＣｌｋあるいはテストクロック信号ＤＣｌｋのいずれかを使用して、クロック選択ビットＳが付加されたプログラム命令を実行すべきか否かのフラグを立てるために利用される。クロック選択ビットＳは、命令パイプライン１６の最終ステージからプロセッサコア４に出力され、プロセッサコア４から出てクロックシンクロナイザ１４に入る。最初の有効なシステムクロックパルスが使用可能になったとき、システムクロック信号を使用してクロックマルチプレクサ１２をシステムクロック信号ＭＣｌｋに切り替える必要があることを示すクロック選択ビットを受けたときクロックシンクロナイザ１４が動作する。クロックシンクロナイザ１４は、以下のような場合、すなわち、（たとえば、前にプロセッサコア４が動作していたテストクロック信号ＤＣｌｋの立ち下がり縁の直後に、非同期システムクロック信号の立ち上がり縁が発生すると）、プロセッサコア４が高信頼度で動作できない場合、システムクロックパルスがプロセッサコア４に入力されることを防止する役目をする。
使用する場合、テスト動作中のプログラム命令は、走査チェーン１０に直列にロードされる。走査チェーン１０の３３個の走査チェーンセルは、１個の完全なプログラム命令（Ｓビットと３２ビット命令）を格納する役目をするが、完全なプログラム命令が完全にロードされると、プログラム命令マルチプレクサ１８を介して並列になって命令パイプライン１６に切り替えられる。実行が可能になった命令パイプラインの前部にその命令が到着すると、クロックマルチプレクサ１２を制御するため、その命令のクロック選択ビットＳを使用してシステムクロック信号ＭＣｌｋかテストクロック信号ＤＣｌｋのいずれかを選択して、プロセッサコア４の内部でそのプログラム命令を実行するために必要なパルスを供給する。
ＤＲＡＭ６あるいはコプロセッサ８のいずれかが関係するプログラム命令の場合、システムクロック信号ＭＣｌｋが使用される。たとえば、ＤＲＡＭ６に対するメモリアクセスの場合、ＤＲＡＭを絶えずリフレッシュしなければならず、このリフレッシュサイクルの一定時刻にアクセスできるだけである。したがって、メモリアクセスが適切に同期するように、ＤＲＡＭ６に使用するクロック信号と同じクロック信号をプロセッサコア４に使用しなければならない。
第２図は第１図で使用されるいくつかのクロック信号を示す。一番上の線には、走査チェーン１０を駆動するために使用されるシフトクロック信号ＳｈＣｌｋが示されている。このシフトクロック信号ＳｈＣｌｋは３３サイクル繰り返されるが、その間に３３ビットのプログラム命令が走査チェーンにロードされる。プログラム命令がロードされると、すべての命令が命令パイプラインにそって移動するのと同様、その命令が命令パイプライン１６に転送される。命令パイプライン１６の前部にある命令は、プロセッサコア４によって実行されるので、クロック選択ビットＳに従って、テストクロック信号ＤＣｌｋあるいはシステムクロック信号ＭＣｌｋのいずれかを選択しなければならない。
テストクロック信号ＤＣｌｋによって実行されるプログラム命令の場合、外部の制御装置によってテストクロック信号パルスが発行され、クロックマルチプレクサ１２を介してプロセッサコア４に転送される。これを示しているのが第２図の第２の線である。
システムクロック信号ＭＣｌｋによって実行されるプログラム命令の場合、システムクロック信号ＭＣｌｋの中から適切なパルスを選択しなければならない。クロックシンクロナイザ１４は、つづいて適切なクロック選択ビットＳを受信するシステムクロック信号ＭＣｌｋを監視して、使用可能な最初の有効なシステムクロックパルスを識別し、クロックマルチプレクサ１２を切り替えて、このパルスをプロセッサコア４に送る。図示の場合は、プログラム命令を完全にロードした後に発生した最初のシステムクロックパルスは、前のクロックパルスの直後に発生したので、転送されず使用されなかった。
【図１】
0003676368.tif 000002
【図２】
0003676368.tif 000003