(57)【特許請求の範囲】
【請求項１】
命令ポインタデータに基づきフェッチアドレスを出力し、得られたデータから命令コードデータを生成可能なフェッチユニットと、前記命令コードデータに基づく処理を実行可能な実行ユニットとを備えたプロセッサユニットを有するデータ処理装置であって、
前記フェッチユニットは、前記得られたデータをデコードして可変長の命令コードデータを生成するデータアライメント部を含み、
前記プロセッサユニットは、さらに、前記フェッチユニットによりデコードされた命令コードデータであって、前記実行ユニットにおける現在の命令コードデータの次に前記実行ユニットで実行される次期命令コードデータの次期命令ポインタデータを当該プロセッサユニットから外部に出力する第１の出力手段と、
前記次期命令コードデータを当該プロセッサユニットから外部に出力する第２の出力手段とを備えている、データ処理装置。
【請求項２】
請求項１において、さらに、ブレーク条件が成立するとプロセッサユニットに対して一時停止を要求するブレーク信号を供給するブレーク信号出力手段を有するデバッグユニットを有し、
このデバッグユニットは、さらに、前記ブレーク条件として設定されているターゲットの命令ポインタデータと比較する前記次期命令ポインタデータを受け入れる第１の入力手段と、
前記ブレーク条件として設定されているターゲットの命令コードデータと比較する前記次期命令コードデータを受け入れる第２の入力手段とを備えているデータ処理装置。
【請求項３】
請求項２において、前記プロセッサユニットは、さらに、前記次期命令コードデータに基づく処理を開始する開始タイミングを当該プロセッサユニットから外部に出力する第３の出力手段を備えており、
前記デバッグユニットは、さらに、前記開始タイミングを受け入れる第３の入力手段を備えており、さらに、前記ブレーク信号出力手段は、少なくとも前記ターゲットの命令ポインタデータおよび前記ターゲットの命令コードデータのいずれかと、前記次期命令ポインタデータおよび前記次期命令コードデータのいずれかが一致し、前記次期命令コードデータが実行開始されるときに前記ブレーク信号を出力するデータ処理装置。
【請求項４】
請求項２において、前記プロセッサユニットは、さらに、前記実行ユニットにおける現在の命令コードデータに基づく処理を完了した完了タイミングを当該プロセッサユニットから外部に出力する第３の出力手段を備えており、
前記デバッグユニットは、さらに、前記完了タイミングを受け入れる第３の入力手段を備えており、さらに、前記ブレーク信号出力手段は、少なくとも前記ターゲットの命令ポインタデータおよび前記ターゲットの命令コードデータのいずれかと、前記次期命令ポインタデータおよび前記次期命令コードデータのいずれかが一致し、前記次期命令コードデータが実行開始されるときに前記ブレーク信号を出力するデータ処理装置。
【請求項５】
請求項１ないし４のいずれかにおいて、さらに、専用処理に適した専用回路を備えた専用処理ユニットを有し、
前記プロセッサユニットのフェッチユニットは、前記命令コードデータとして前記プロセッサユニットにおける処理を規定する汎用命令コードデータを前記実行ユニットに供給し、前記専用処理ユニットにおける処理を規定する専用命令コードデータを前記専用処理ユニットに供給するデータ処理装置。
【請求項６】
命令ポインタデータに基づきフェッチアドレスを出力し、得られたデータから命令コードデータを生成可能なフェッチユニットと、
前記命令コードデータに基づく処理を実行可能な実行ユニットとを有するプロセッサユニットであって、
前記フェッチユニットは、前記得られたデータをデコードして可変長の命令コードデータを生成するデータアライメント部を含み、
当該プロセッサユニットは、さらに、前記フェッチユニットによりデコードされた命令コードデータであって、前記実行ユニットにおける現在の命令コードデータの次に前記実行ユニットで実行される次期命令コードデータの次期命令ポインタデータを当該プロセッサユニットから外部に出力する第１の出力手段と、
前記次期命令コードデータを当該プロセッサユニットから外部に出力する第２の出力手段とを有するプロセッサユニット。
【請求項７】
請求項６において、さらに、前記次期命令コードデータに基づく処理を開始するタイミングを当該プロセッサユニットから外部に出力する第３の出力手段を有するプロセッサユニット。
【請求項８】
請求項６において、さらに、前記実行ユニットにおける現在の命令コードデータに基づく処理を完了したタイミングを当該プロセッサユニットから外部に出力する第３の出力手段を有するプロセッサユニット。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＬＳＩなどのデータ処理装置およびそれに組み込まれるプロセッサに関するものである。
【０００２】
【従来の技術】
大規模なシステムＬＳＩが可能となり、システム全体を単一の半導体チップ上に構築することが可能となりつつある。これに伴って、システムを構成するのに必要不可欠であるプロセッサ（プロセッサユニット）と、目的に応じた性能を最大限に引き出すために専用ＬＳＩとして開発されてきた機能とを単一の半導体チップ上に組み込んで１つにしたシステムＬＳＩの開発が行われれている。この大規模システムＬＳＩ向けに開発されているプロセッサは、組み込み用途プロセッサ（エンベッデド・プロセッサ）と称されている。
【０００３】
【発明が解決しようとする課題】
組み込み用途のプロセッサは、従来の単一チップでＣＰＵを構成するのとは主旨が根本的に異なるものであるが、現状で提供されている組み込み用途のプロセッサは単一チップのＣＰＵ用のプロセッサに対して明確に組み込み用途であることが認識されているとは云い難い。
【０００４】
エンベッデド・プロセッサの大きな相違点は、オプション機能が豊富である必要があることである。すなわち、従来の単一チップで構成したＣＰＵ（または出来上がり品ＣＰＵ）の場合は、広範囲のユーザのニーズに対応するために、必要とされるであろう機能を予めフル実装させている。これに対し、システムＬＳＩに組み込まれるエンベッデド・プロセッサでは、その都度必要とされる機能のみが要求される。したがって、従来、１つのプロセッサとして提供されていた機能も、オプションモジュール化され、プロセッサユニットと、モジュール化された機能とが１つのシステムＬＳＩに搭載されて所望の機能を備えたプロセッサがシステムＬＳＩの内部に構築されることになる。
【０００５】
このような背景にあっては、従来のＣＰＵの場合には内蔵されるのが一般的であったデバッグモジュール（デバッグ機能）も、組み込み用途のプロセッサユニットではオプションとしてシステムＬＳＩに組み込み可能な別ユニットとして提供されることが望ましい。デバッグユニットとは、パーソナルコンピュータなどからプロセッサをブレーク（一時停止）させるためのターゲットとなる命令ポインタデータあるいは命令コードデータを設定し、プロセッサがプログラムを実行中にブレーク条件である命令ポインタデータあるいは命令コードデータを発見した場合にプロセッサユニットの処理を一旦停止させるハードウェアである。そして、プロセッサの内部レジスタの内容を観測したり、内部レジスタに特定の値を注入したりして、デバッグを行なう。
【０００６】
デバッグユニットをオプションモジュールとして提供するとなると、デバッグユニットの制御も組み込み型プロセッサとは別に行われることが望ましい。これによってデバッグの信頼性も向上する。たとえば、デバッグユニットを操作するデバッガーソフトをパーソナルコンピュータ上で走行させることができる。従来の出来上がり品ＣＰＵであれば、デバッガがあることが前提でソフトウェアが作成されるのに対し、組み込み型プロセッサでは、デバッガを設けるか否かはユーザの仕様となり、デバッガがあることを前提としたソフトウェアの開発は無駄で冗長なものになる可能性があるからである。また、デバッガがないシステムでデバッガがあることを前提としたソフトウェアを稼動させることは、システムエラーの要因ともなりかねず、信頼性が低下する可能性もある。
【０００７】
一方、デバッガユニットをプロセッサユニットと独立して稼動させようとすると、ブレーク条件である命令バス（命令ポインタおよび命令コード）の内容に応じてプロセッサユニットをブレークさせるためには、命令ポインタおよび命令コードを生成するフェッチおよびデコード機能をプロセッサユニットと同様にデバッガユニットにも設けておく必要がある。このため、システムＬＳＩにデバッグ機能を持たせようとすると、複雑な構成で、回路規模も比較的大きなデバッグユニットを搭載する必要がある。そして、システムＬＳＩ全体としてみると、フェッチおよびデコードするためのハードウェアが二重に保有されたかたちになってしまう。特に、命令長が１語ないし２語といった不定長（または可変長）の命令セットに対応するプロセッサユニットを搭載している場合は、フェッチおよびデコードするために以下の機能が要求されるので、二重に保有されるハードウェア規模も大きくなる。
【０００８】
すなわち、命令コードが出力されるデータバスのバス幅が命令長と一致していない場合は、次期命令コードデータがデータ中のどこにいるかが判明せず、また、フェッチしたデータに跨って次期命令コードデータが存在する可能性がある。したがって、ブレークさせる命令ポインタデータと、命令コードを含むデータのフェッチに使用した命令ポインタとが一致するか否かを判断するためには、個々の命令長を監視して次期命令ポインタの位置を決定する機能が必要になる。また、データバス幅が命令長と一致していないと、分岐が発生したときに、分岐先のアドレスがフェッチアドレスと常に一致するとは限らないので、それを調整して次期命令ポインタの位置を決定する機能が必要になる。さらに、データバス幅が命令長と一致していないと、上述したように、フェッチされたデータの中から、次期命令コードデータを選択して整列させたり、前後のデータに跨ぐ次期命令コードデータをアライメントする機能が必要になる。
【０００９】
このような機能にかぎらず、次にプロセッサの実行ユニットで実行される次期命令コードを適切にデバッグユニットで判断するには、以下のような機能も必要になる。命令コードの中に、実行に複数の実行サイクルが費やされるマルチサイクル型の命令コードが含まれていると、実行ユニットで次期命令コードが実行されるタイミングが不明となる。このため、命令フェッチから、その命令が実行されるまでのタイミング検出を行なうための機能が必要になる。このマルチサイクル命令処理に対応できるようにするとハードウェアが非常に大規模になる。
【００１０】
さらに、分岐が発生すると、それ以前にフェッチされた命令コードであっても実行ユニットが実行していない命令コードは実際には実行されない命令コードであり次期命令コードとはならない。実行されない命令コードに対してデバッグ用のブレーク信号を出力することは無意味なので、分岐が発生するか否かを判別する機能も必要になる。
【００１１】
これらの機能をカバーするハードウェアは大規模になるので、システムＬＳＩの小型化および低価格化を考慮すると省きたいハードウェアである。しかも、これらの機能は基本的にプロセッサユニットのフェッチ機能としてプロセッサユニットのハードウェアによりサポートされている機能であり、ハードウェアが重複していることになる。
【００１２】
その一方で、デバッグ機能を備えた埋め込み用途のプロセッサと、デバッグ機能を備えていない埋め込み用途のプロセッサの両方を開発することは、さらに重複する部分の大きな投資となる。また、プロセッサの機能を変更したり、向上するときに、デバッグ機能のあるものと、デバッグ機能のないものの両方を同時にバージョンアップすることは大きな負荷であり、大きな重複投資となる。また、デバッグ機能付きのプロセッサ用のソフトウェアと、デバッグ機能なしのプロセッサ用のソフトウェアを２重に開発およびメンテナンスするための投資も必要になる。したがって、これらのディメリットと比較し、デバッグユニットとプロセッサユニットとが多少重複するハードウェアを備えている程度の重複するハードウェアは容認すべきことであると判断することも可能である。
【００１３】
しかしながら、本発明においては、デバッグユニットをオプションとして搭載することが可能なシステムＬＳＩにおいて、プロセッサユニットと重複するようなハードウェアをデバッグユニットから省くことができるシステムを提供することを目的としている。それにより、ハードウェアおよびソフトウェアの設計・開発あるいはメンテナンスにおける二重投資を防止すると共に、コンパクトで低コストなシステムＬＳＩを提供可能とすることを本発明の目的としている。
【００１４】
【課題を解決するための手段】
本発明においては、組み込み型のプロセッサユニットとして、次期命令ポインタデータと、次期命令コードデータとをプロセッサユニットの外部に出力するインターフェイスを備えたプロセッサユニットを提供する。このプロセッサユニットであれば、システムＬＳＩにデバッグユニットと共に組み込んだときに、デバッグユニットは、ブレーク条件をプロセッサユニットから提供される次期命令ポインタデータおよび／または次期命令コードデータにより判断することが可能となり、重複するハードウェアを省くことができる。その一方で、プロセッサユニット側は、デバッグユニットの有無に関わらず、次期命令ポインタデータと次期命令コードデータを出力するだけなので、ハードウェアおよびソフトウェアともデバッグユニットの有無に左右されずに開発・設計およびメンテナンスを行うことができる。
【００１５】
すなわち、本発明においては、命令ポインタデータに基づきフェッチアドレスを出力し、得られたデータから命令コードデータを生成可能なフェッチユニットと、命令コードデータに基づく処理を実行可能な実行ユニットとを有するプロセッサユニットであって、フェッチユニットは、得られたデータをデコードして可変長の命令コードデータを生成するデータアライメント部を含むプロセッサを提供する。このプロセッサは、さらに、フェッチユニットによりデコードされた命令コードデータであって、実行ユニットにおける現在の命令コードデータの次に実行ユニットで実行される次期命令コードデータの次期命令ポインタデータを当該プロセッサユニットから外部に出力する第１の出力手段と、次期命令コードデータを当該プロセッサユニットから外部に出力する第２の出力手段とを有する。このプロセッサユニットであれば、ブレーク条件が成立するとプロセッサユニットに対して一時停止を要求するブレーク信号を供給するブレーク信号出力手段を有するデバッグユニットであって、ブレーク条件として設定されているターゲットの命令ポインタデータと比較する次期命令ポインタデータを当該デバッグユニットの外部から受け入れる第１の入力手段と、ブレーク条件として設定されているターゲットの命令コードデータと比較する次期命令コードデータを当該デバッグユニットの外部から受け入れる第２の入力手段とを有するデバッグユニットと組み合わせて、デバッグユニットを動作させることができる。
【００１６】
デバッグユニットの制御方法は、ブレーク条件が成立するとプロセッサユニットに対して一時停止を要求するブレーク信号を供給するブレーク要求工程を有しており、さらに、ブレーク条件として設定されているターゲットの命令ポインタデータと比較する次期命令ポインタデータと、ブレーク条件として設定されているターゲットの命令コードデータと比較する次期命令コードデータとの少なくともいずれかを当該デバッグユニットの外部から受け入れる工程を有する。したがって、デバッグユニットには、プロセッサユニットのフェッチユニットに相当するようなハードウェアは不要となる。
【００１７】
このため、本発明のプロセッサユニットとデバッグユニットとを有するデータ処理装置では、フェッチユニットに相当するハードウェアを重複させずにデバッグ機能を搭載できる。また、デバッグユニットはオプションユニットなので、このデバッグユニットを搭載しなくても、本発明のプロセッサユニットを埋め込みプロセッサとしてデータ処理装置、すなわちシステムＬＳＩを形成することができる。
【００１８】
プログラムにマルチサイクル型の命令コードが含まれている場合は、次期命令コードデータの実行時期を判断する必要がある。また、分岐の発生に伴う無駄なブレーク信号の発信を防止するためには次期命令コードデータの実行直前でブレーク信号の要否を判断することが望ましい。したがって、次期命令コードデータに基づく処理を開始するタイミングを当該プロセッサユニットから外部に出力する第３の出力手段を有するプロセッサユニットを提供することがさらに好ましい。この次期命令コードデータに基づく処理を開始するタイミングは、実行ユニットにおける現在の命令コードデータに基づく処理を完了したタイミングであり、このタイミングを当該プロセッサユニットから外部に出力しても良い。これに対応して、デバッグユニットにおいても、次期命令コードデータが実行開始されるタイミングを当該デバッグユニットの外部から受け入れる第３の入力手段を設け、ブレーク信号出力手段では、少なくともターゲットの命令ポインタデータおよびターゲットの命令コードデータのいずれかと、次期命令ポインタデータおよび次期命令コードデータのいずれかが一致し、次期命令コードデータが実行開始されるときにブレーク信号を出力すればよい。デバッグユニットの制御方法においては、次期命令コードデータが実行開始されるタイミングを当該デバッグユニットの外部から受け入れる工程を設け、ブレーク要求工程では、少なくともターゲットの命令ポインタデータおよびターゲットの命令コードデータのいずれかと、次期命令ポインタデータおよび次期命令コードデータのいずれかが一致し、次期命令コードデータが実行開始されるときにブレーク信号を出力する。
【００１９】
本願の出願人は、専用処理に適した専用回路を備えた専用処理ユニットを有し、プロセッサユニットのフェッチユニットは、命令コードデータとしてプロセッサユニットにおける処理を規定する汎用命令コードデータを実行ユニットに供給し、専用処理ユニットにおける処理を規定する専用命令コードデータを専用処理ユニットに供給するデータ処理装置、すなわちシステムＬＳＩを提案しているが、本発明のプロセッサユニットを、このシステムＬＳＩの埋め込みプロセッサとして用いることにより、低コストでデバッグユニットを追加することが可能となる。
【００２０】
【発明の実施の形態】
以下に図面を参照して本発明をさらに詳しく説明する。図１に本発明に係るプロセッサユニットを有するデータ処理装置、すなわちシステムＬＳＩ２が搭載されたシステムボード１の概略を示してある。システムボード１に搭載されたシステムＬＳＩ２は、ＶＵＰＵと称される本願の出願人が提案しているアーキテクチャによるＬＳＩ（以降ではＶＵＰＵ）であり、プロセッサユニットあるいは汎用データ処理ユニット（以降ではＰＵ）５と、特定の処理に特化した専用データ処理ユニット（以降ではＶＵ）６とを搭載している。さらに、本例のＶＵＰＵ２は、ＰＵ５のデバッグを行なうデバッグユニット（以降ではＤＵ）７と、ＤＵ７に対して信号を入出力するためのユーザインターフェイス９を備えている。ユーザインターフェイス９としては、ＪＴＡＧバウンダリースキャンテストインターフェイスなどが採用でき、システムボード１に設けられたデバッグインターフェイス３を介してパーソナルコンピュータ４で稼動するデバッガソフトウェア１０によりＤＵ７を制御することができる。
【００２１】
図２に、ＶＵＰＵ２の概略をブロック図により示してある。ＶＵＰＵ２は、ＰＵ５を組み込み型プロセッサとして、ＰＵ５を介してＶＵ６をプログラムにより制御するＬＳＩである。ＰＵ５は、汎用的な構成のプロセッサユニットであり、実行形式のプログラムコード（マイクロプログラムコード）１１ａを内蔵したコードＲＡＭ１１と、このコードＲＡＭ１１から命令をフェッチし、ＰＵ５の実行ユニット（ＥＵ）１３とＶＵ６とにデコードされた制御信号を提供するフェッチユニット（ＦＵ）１２を備えている。さらに、ＰＵ５は、汎用レジスタ、フラグレジスタおよび演算ユニット（ＡＬＵ）などから構成される汎用性の高い実行ユニット１３を備えており、データＲＡＭ１４を一時的な記録領域としてデータを入出力しながら汎用処理を実行する。
【００２２】
フェッチユニット１２は、前の命令あるいはステートレジスタ１５の状態、割込み信号などによって決まる命令ポインタからフェッチアドレスを算出して出力し、コードＲＡＭ１１の所定のアドレスから命令コードを含むデータをフェッチする。さらに、フェッチされたデータをデコードして、コードＲＡＭ１１から得られたデータから専用命令（ＶＵ命令）あるいは汎用命令（一般命令、ＰＵ命令）を生成し、専用命令を制御信号（デコーデド・コントロールシグナル：Decoded Control Signal）φｖとしてＶＵ６に供給し、デコードした汎用命令を制御信号（デコーデド・コントロール・シグナル：Decoded Control Signal）φｐとして実行ユニット１３に供給する。実行ユニット１３からは実行状態を示すステータス信号（Exec unit Status Signal）φｓが返され、実行ユニット１３およびＶＵ６の実行結果がステートレジスタ（状態レジスタ）１５に反映される。たとえば、実行ユニット１３で分岐条件が満足されると、フェッチユニット１２ではそれにしたがって分岐先の命令コードをフェッチする。
【００２３】
このＶＵＰＵ２においては、フェッチユニット１２に対して、ＰＵ２の実行ユニット１３とＶＵ６とが同じ階層の処理ユニットである。したがって、フェッチユニット１２を実行ユニット１３とＶＵ６に共通した命令発行ユニットとし、実行ユニット１３をＶＵ６に対比されるＰＵとしたアーキテクチャであると捉えることも可能である。
【００２４】
ＶＵ命令φｖを実行するＶＵ６は、自己のユニット宛てのＶＵ命令φｖを選択してデコードするユニット２１と、予め特定のデータ処理を行なうように制御信号をハードウェア的に出力するシーケンサ（ＦＳＭ（Finite State Machine）、ファイナイトステートマシン）２２と、このシーケンサ２２からの制御信号に従って特定のデータ処理を行なうようにデザインされたデータパス部２３を備えている。また、ＶＵ６は、ＰＵ５からアクセス可能なレジスタ２４を備えており、データパス部２３の処理に必要なデータをインターフェイスレジスタ２４を介してＰＵ５で制御したり、ＶＵ６の内部状態をレジスタ２４を介してＰＵ５で参照できるようになっている。さらに、データパス部２３で処理された結果はＰＵ５に供給され、ＰＵ５ではその結果を利用した処理が行なわれる。
【００２５】
コードＲＡＭ１１には、汎用命令（ＰＵ命令）および専用命令（ＶＵ命令）を含んだプログラム１１ａが記憶されており、フェッチユニット１２により、ＶＵ６には、自己を起動するＶＵ命令を含む制御信号φｖが供給され、ＶＵ命令デコーダ２１がそれを選択して動作する。一方、実行ユニット１３には、ＰＵ命令がデコードされた制御信号φｐだけが供給される。ＶＵ命令をデコードした制御信号φｖは実行ユニット１３には発行されず、その代わりに、実行を伴わないｎｏｐ命令を示す制御信号が発行され、実行ユニット１３ではその処理をスキップする。したがって、実行ユニット１３では解釈できないＶＵ命令は実行ユニット１３には提供されず、ＰＵ５の構成は変えることなく、新たな、あるいは様々なＶＵ命令を含んだプログラム１１ａをＶＵＰＵ２で実行することができる。なお、本明細書の幾つかの記載においては、ＰＵ命令とそれをデコードした制御信号φｐとが同じ意味で用いられ、ＶＵ命令とそれをデコードした制御信号φｖとが同じ意味で用いられている。
【００２６】
したがって、ＶＵＰＵ２においては、ＶＵ６がアプリケーションなどによって変更されるものであり、ＶＵ６に指示を出す専用命令（ＶＵ命令）もアプリケーションによって変わることが多い。一方、ＰＵ５は、ｎｏｐ命令が出力されることにより、ＶＵ用に特化した命令に対処する必要がなく、基本命令あるいは汎用命令であるＰＵ命令を解釈して実行できる機能があればよい。したがって、ＰＵ５は、汎用型の埋め込みプロセッサであると共に、ＶＵ６が稼動する汎用性のあるプラットフォームとしての機能を提供する。そして、汎用性のあるＰＵ５と、専用回路を備えたＶＵ６とを組み合わせることにより、ＰＵ５を介してプログラムによりＶＵ６も合わせて制御することができる。このため、ＶＵＰＵアーキテクチャにより、リアルタイム応答性を犠牲にすることなく、設計および開発期間を短縮でき、さらに、その後の変更や修正にも柔軟に対処できるシステムＬＳＩを提供できる。
【００２７】
したがって、ＰＵ５の汎用性を維持しながら、多くのオプショナルな機能を搭載できることがＶＵＰＵ２として重要であり、本例のＶＵＰＵ２では、オプショナルなユニットとしてデバッグユニット（ＤＵ）７が搭載されている。図３にＰＵ５とＤＵ７との間で交換される信号を示してある。本例のＰＵ５は、フェッチユニット１２でフェッチおよびデコードされて次に実行ユニット１３に供給される次期命令コードデータφｃを外部出力する配線あるいは接続点（第２の出力手段）３２と、その次期命令コードデータφｃを示す次期命令ポインタデータφａを外部出力する配線あるいは接続点（第１の出力手段）３１を備えている。また、ＰＵ５は、次期命令コードデータφｃに基づく処理を実行ユニット１３で実行開始するタイミングを示す信号φｔを外部出力する配線あるいは接続点（第３の出力手段）３３を備えている。この次命令の実行を開始するタイミングを示す信号φｔは、実行ユニット１３において命令完了により次の命令をラッチするタイミングを示す信号である。
【００２８】
さらに、ＰＵ５は、ＤＵ７からブレーク信号φｂを受信する配線あるいは接続点３４を備えており、ＤＵ７からブレーク信号φｂを受信すると実行ユニット１３における命令コードデータに基づく処理を停止する。
【００２９】
接続点３１、３２、３３および３４を備えたデバッグ用のインターフェイス８に対応し、ＤＵ７には、次期命令ポイントデータφａを受信する接続点（第１の入力手段）６１と、次期命令コードデータφｃを受信する接続点（第２の入力手段）６２と、実行開始のタイミング信号φｔを受信する接続点（第３の入力手段）６３と、ブレーク信号φｂを出力する接続点６４とを備えたインターフェイス６０が設けられている。ＤＵ７のブレーク条件一致検出機能５０は、ユーザインターフェイス９を介して設定されたターゲットの命令ポインタデータφｔａが受信した次期命令ポイントデータφａと一致し、設定されたターゲットの命令コードデータφｔｃが受信した次期命令コードデータφｃと一致し、さらに、タイミング信号φｔから、その次期命令コードデータφｃが実行開始される状態になるとブレーク信号φｂを出力する。
【００３０】
図４に、これらの信号に関するＰＵ５およびＤＵ７のさらに詳しい構成を示してある。ＰＵ５のフェッチユニット１２は、フェッチおよびデコードされた命令と、実行ユニット１３からのステータス信号φｓに基づき、次の命令コードを得るためのフェッチアドレスを生成する次命令ポインタ発生部３５を備えている。この次命令ポインタ発生部３５は、命令ポインタデータを更新して、それからフェッチアドレスを計算する機能に加え、フェッチおよびデコードされた命令が分岐命令のときは、実行ユニット１３の結果から分岐条件が成立すれば命令ポインタデータを分岐先のポインタに移行する機能を備えている。この発生部３５で生成されたフェッチアドレスはレジスタ３６に格納されて、アドレスバス７１を介してコードＲＡＭ１１に供給される。そのフェッチアドレスに対応したデータがデータバス７２を介してフェッチデータφｄとして得られる。データバス７２は、２語長のバス幅を備えているので、得られるデータは常に２語長である。したがって、命令コードが２語長のみではなく、１語長あるいは３語長などの不定長または可変長であると、フェッチデータφｄから適切な位置にある命令コードデータφｃを切り出したり、複数のフェッチデータφｄに跨った命令コードデータφｃを生成する必要がある。したがって、データアライメント部３７は、フェッチデータφｄをデコードして命令コードデータφｃを生成する作業を行う。そして、命令コードデータφｃが生成されるタイミングになるとリードタイミング信号φｒが出力されて、次に実行ユニット１３に供給される次期命令コードデータがレジスタ３９にラッチされる。同時に、その次期命令コードデータφｃをフェッチするために発生部３５から出力されている次期命令ポインタデータφａがレジスタ３８にラッチされる。
【００３１】
これらの次期命令ポインタデータφａおよび次期命令コードデータφｃは、実行ユニット１３に供給される。実行ユニット１３では、内部で実行中の現命令に伴う処理が終了して次命令実行開始タイミング信号φｔが出力されると、次期命令ポインタデータφａが現命令ポインタのレジスタ４１にラッチされ、次期命令コードデータφｃが現命令コードのレジスタ４２にラッチされる。これにより、次期命令コードφｃに基づく処理が実行ユニット１３で開始される。実行ユニット１３は、デバッグ機能としてブレーク信号φｂを解釈する機能４４を備えており、ブレーク信号φｂを受信するとデバッグ用のタイミング信号φｄｔを出力する。セレクタ４３は、通常のタイミング信号φｔと、デバッグ用のタイミング信号φｄｔとを選択し、デバッグが開始されるとデバッグ用のタイミング信号φｄｔで次期命令ポインタφａおよび次期命令コードφｃをラッチし、デバッグのタイミングで実行ユニット１３を制御可能とする。
【００３２】
本例のＰＵ５は、これらのレジスタ３８および３９にラッチされた次期命令ポインタデータφａおよび次期命令コードデータφｃとを外部出力する接続ポイント３１および３２が予め設けられている。また、通常の次命令実行タイミング信号φｔを外部出力する接続ポイント３３が予め設けられている。これらの外部出力３１、３２および３３には、単にデータφａ、φｃおよびφｔが出力されているだけであり、これらのデータが外部で利用されてもされなくても、そのこと自体ではＰＵ５の制御に影響を及ぼさない構成となっている。ただし、図４に示したＶＵＰＵ２では、これらのデータφａ、φｃおよびφｔに基づいてＤＵ７からブレーク信号φｂがフィードバックされるので、デバッグモードに移行することができる。すなわち、本例では、ＰＵ５とＤＵ７とが機能を協調することにより、フェッチおよびデコードするハードウェアを重複させたり、タイミングを監視する手間やハードウェアを省いてデバッグを行うことができる構成となっている。
【００３３】
ＤＵ７は、ユーザインターフェイス９を介してパーソナルコンピュータ４からブレーク条件を設定可能な条件設定部５１と、その条件とＰＵ５から得られたデータを比較してブレーク信号φｂを出力するブレーク検出部５５とを備えている。条件設定部５１は、ブレークのターゲットとなるブレークアドレス条件φｔａがセットされるレジスタ５２と、ブレークデータ条件φｔｃがセットされるレジスタ５３とを備えている。ブレーク検出部５５は、ブレークアドレス条件φｔａと、接続ポイント６１を介して得られたＰＵ５の次期命令ポインタデータφａとを比較するコンパレータ５６と、ブレークデータ条件φｔｃと、接続ポイント６２を介して得られたＰＵ５の次期命令コードデータφｃとを比較するコンパレータ５７と、これらの出力結果と接続ポイント６３を介して得られたタイミングデータφｔとの論理和を演算してブレーク信号φｂを出力するアンドゲート５８とを備えている。ブレーク信号φｂはレジスタ５９を経由してＰＵ５に供給される。
【００３４】
このように、本例のＤＵ７は、ブレーク条件となるデータを保存するレジスタ群５１と、それらのデータとプロセッサ側から得られたデータとを比較してブレーク信号φｂを出力する検出部５５とを備えた極めて簡易な構成でＰＵ５に対して所望のタイミングでブレーク信号φｂを供給することができる。一方、ＰＵ５でも、特にＤＵ７を意識した制御を行う必要はなく、所望のブレーク条件が整うとＤＵ７からブレーク信号φｂが供給されてデバッグモードに移行する。
【００３５】
図５にデバッグに関するＰＵ側の処理とＤＵ側の処理をフローチャートを用いて示してある。まず、ＰＵ５では、ステップ８１において、フェッチユニット１２で実行されるフェッチステージにて、次の命令コード（次期命令コードデータ）を取得するためにデータをフェッチするためのフェッチアドレスを算出し、コードＲＡＭ１１に対してそのデータの読出をかける。このとき、１語または２語長の可変長命令では、２語長幅のデータバスに対応する２語長幅のデータの先頭アドレスで読出をかける。これにより、ステップ８２において、コードＲＡＭ１１から所望の次期命令コードデータを含んだデータが読み出される。さらに、ステップ８３において、フェッチユニット１２で実行されるデコードステージにて、フェッチされたデータφｄから所望の次期命令コードデータφｃをデコードし、その次期命令コードデータφｃおよび次期命令ポインタデータφａをレジスタ３９および３８に格納する。本例のＰＵ５では、このステップ８３で、生成された次期命令コードデータφｃおよび次期命令ポインタデータφａが自動的にＤＵ７に供給される。
【００３６】
次に、実行ユニット１３の実行ステージで、現命令に基づく処理が完了するステップ８４になると、フェッチユニット１２で用意された次期命令コードデータφｃと次期命令ポインタデータφａが実行ユニット１３に取り込まれる。このとき、本例のＰＵ５では自動的にこれらのデータφａおよびφｃを取り込む信号であるタイミング信号φｔがＤＵ７に供給される。そして、ステップ８５で次期命令コードデータφｃに基づく処理を実行する際に、ブレーク信号φｂがＤＵ７から供給されると一時的に処理を中断してデバッグモードに入る。したがって、このＰＵ５は、ブレーク信号φｂが供給されないかぎり、ＤＵ７の有無にかかわらず通常通り、順番に次期命令コードデータφｃを取得し、それによる処理を行う。
【００３７】
ＤＵ７では、ステップ９１で、事前に外部ホスト４からブレーク条件であるブレークアドレスφｔａおよびブレークデータφｔｃを外部指定条件として読み込む。ＰＵ５でデバッグ対象のプログラムが実行されて、次期命令ポインタデータφａおよび次期命令コードデータφｃが供給されると、ステップ９２において、次期命令ポインタデータφａおよび次期命令コードデータφｃを取得し、それらとブレークアドレスφｔａおよびブレークデータφｔｃとをそれぞれ比較する。ステップ９３において、それらが一致すると、ステップ９４において、タイミング信号φｔが供給されたときにブレーク要求信号φｂをＰＵ５に出力する。これにより、ＰＵ５では、ステップ８５においてブレーク要求信号φｂを受けて一時停止する。
【００３８】
図６に示したタイミングチャートでは、ブレークデータφｔａとしてアドレスＡ３がセットされ、ブレークデータφｔｃとして命令Ｃ３がセットされているときに、時刻ｔ１に次期命令ポインタデータφａがアドレスＡ３となり、次期命令コードデータφｃがコードＣ３になるとＤＵ７で一致状態となる。そして、時刻ｔ２に次命令の実行タイミング信号φｔが入力されるとブレーク信号φｂが生成され、次期命令コードデータφｃが実行ユニット１３で実行される次のクロックのタイミングである時刻ｔ３にブレーク信号φｂがＰＵ５に供給される。その結果、ＰＵ５は命令Ｃ３を実行する段階で一時停止する。
【００３９】
このように、本例のＰＵ５では、次期命令ポインタデータφａの出力端３１、次期命令コードデータφｃの出力端３２および次命令実行開始タイミング信号φｔの出力端３３を有するインターフェイス８が用意されているので、ＤＵ７はＰＵ５から供給されるこれらの信号φａ、φｃおよびφｔを利用してブレーク信号φｂを生成しＰＵ５に供給することができる。このため、ＤＵ７には、次期命令ポインタデータφａ、次期命令コードデータφｃおよび次命令実行開始タイミング信号φｔを生成するハードウェアは必要なく、１つのＬＳＩ２の内部に重複したハードウェアが搭載されるのを防止することができる。
【００４０】
次期命令ポインタデータφａおよび次期命令コードデータφｃを出力するハードウェアは、上述したように、命令コードが可変長であったり、命令コード長がデータバス幅と一致しない場合は大きなものになる。しかしながら、本例のＰＵ５およびＤＵ７を組み合わせたＬＳＩ２では、プロセッサ５の側でデコードされた命令コードデータをＤＵ７が利用できるので、命令コードが可変長であろうとなかろうと、同一構成のＤＵ７を利用してデバッグ機能を付加できる。すなわち、ＰＵ５にデータφａ、φｃおよびφｔを出力する機能を付加することにより、ＤＵ７では、次期命令ポインタデータφａに対してアドレス一致検出を行うことで、命令長の監視は不要となり、次期命令コードデータφｃに対してコード一致検出を行うことでバスのデータをアドレスに合わせて整列するようなデコード処理も不要となる。さらに、分岐制御もＰＵ５の側で行われた結果の命令コードが得られるので、その制御も不要となる。そして、実行ステージの命令完了タイミングは実行ユニット１３からのタイミング信号φｔで分かるので、命令コードがマルチサイクルであるか否かなどの解析も不要となる。
【００４１】
さらに、ＤＵ７では、分岐条件が成立したりして、読み捨てられる命令コードを意識するハードウェアも必要ない。ＰＵ５では、実行されない命令は実行ステージに渡されることがないので、次期命令コードデータφｃと、それを実行ステージでラッチするための次命令実行開始タイミング信号φｔとを組み合わせることにより、ＤＵ７で実行ステージに渡される命令コードデータを確実にモニタリングできるからである。
【００４２】
一方、ＰＵ５においては、単に、これらのデータφａ、φｃおよびφｔを出力するポイント３１〜３３を予め設けてあるだけなので、デバッグ機能の有無を問題にせずにソフトウェアおよびハードウェアを設計、開発およびメンテナンスすることができる。これらの接続ポイント３１〜３３のハードウェア構成は上記に限定されることはなく、ＬＳＩ２のＰＵ５のバウンダリにおいて、デバッグユニットなどのオプションユニットに対して信号あるいはデータを伝達できるようになっていれば良い。また、上記の例のデバッグユニットにおいては、次期命令ポインタデータφａと、次期命令コードデータφｃの両方を受け取り、それぞれのデータφａおよびφｃをブレークアドレスφｔａおよびブレークデータφｃと比較しているが、次期命令ポインタデータφａあるいは次期命令コードデータφｃの少なくともいずれか一方をターゲットとなる値と比較してブレーク信号を出力するようにしても良い。
【００４３】
さらに、オプションユニットはデバッグユニットに限定されるものではないが、これらの信号をもっとも有効に活用できるユーザユニットはデバッグユニットである。このようなプロセッサであれば、システムＬＳＩの埋め込み用途のプロセッサ用として、拡張性はあるが単一仕様のプロセッサを設計、開発およびメンテナンスするだけでよく、余分な投資を省くことができる。このため、本発明により、エンベッデド・プロセッサに適したオプション機能の豊富なプロセッサを提供することが可能となり、ＶＵＰＵアーキテクチャにさらに適したＰＵ５を提供することができる。また、ＶＵＰＵアーキテクチャに限らず、他のタイプのエンベッデド・プロセッサにも本発明を提供することにより、オプション機能がさらに豊富なプロセッサを提供することができる。典型的なデバッグユニットは、ブレーク条件が成立するとプロセッサユニットに対して一時停止を要求するブレーク信号を供給するブレーク信号出力手段を有するデバッグユニットであって、前記ブレーク条件として設定されているターゲットの命令ポインタデータと比較する次期命令ポインタデータを当該デバッグユニットの外部から受け入れる第１の入力手段と、前記ブレーク条件として設定されているターゲットの命令コードデータと比較する次期命令コードデータを当該デバッグユニットの外部から受け入れる第２の入力手段とを有する。デバッグユニットは、前記次期命令コードデータが実行開始されるタイミングを当該デバッグユニットの外部から受け入れる第３の入力手段を有し、前記ブレーク信号出力手段は、少なくとも前記ターゲットの命令ポインタデータおよび前記ターゲットの命令コードデータのいずれかと、前記次期命令ポインタデータおよび前記次期命令コードデータのいずれかが一致し、前記次期命令コードデータが実行開始されるときに前記ブレーク信号を出力することが望ましい。典型的なデバッグユニットの制御方法は、ブレーク条件として設定されているターゲットの命令ポインタデータと比較する次期命令ポインタデータと、前記ブレーク条件として設定されているターゲットの命令コードデータと比較する次期命令コードデータとの少なくともいずれかを当該デバッグユニットの外部から受け入れる工程と、前記ブレーク条件が成立するとプロセッサユニットに対して一時停止を要求するブレーク信号を供給するブレーク要求工程とを有する。制御方法は、前記次期命令コードデータが実行開始されるタイミングを当該デバッグユニットの外部から受け入れる工程を有し、前記ブレーク要求工程では、少なくとも前記ターゲットの命令ポインタデータおよび前記ターゲットの命令コードデータのいずれかと、前記次期命令ポインタデータおよび前記次期命令コードデータのいずれかが一致し、前記次期命令コードデータが実行開始されるときに前記ブレーク信号を出力することが望ましい。
【００４４】
【発明の効果】
以上に説明したように、本発明においては、プロセッサユニットに次期命令ポインタデータおよび次期命令コードデータを外部に出力するインターフェイスを設けることにより、組み込み型プロセッサとオプション化されたデバッグユニットとの間に有効な状態伝達信号線を設置することが可能となる。したがって、プロセッサ本体とデバッグユニットとの機能を協調させることができ、デバッガのハードウェア負担を削減することができる。また、システムＬＳＩを構築したときにハードウェアの重複を防止し、デバッグ機能などのオプション機能を容易に搭載することができる。このため、コンパクトで低コストな多機能型のシステムＬＳＩを提供することができる。
【図面の簡単な説明】
【図１】本発明に係るデータ処理装置を搭載したＬＳＩ搭載システムボードの概略を示す図である。
【図２】本発明に係るデータ処理装置の概略を示すブロック図である。
【図３】本例のＰＵとＤＵとの間で交換される信号を説明するための図である。
【図４】本例のＰＵとＤＵの詳細を示す図である。
【図５】本例のＰＵとＤＵとの間で行なわれるデバッグ処理を示すフローチャートである。
【図６】ＤＵでブレーク条件が成立したときにＰＵの実行ユニットにおける処理が停止される処理を説明するためのタイミングチャートである。
【符号の説明】
１    ＬＳＩ搭載システムボード
２    データ処理装置（システムＬＳＩ）
５    プロセッサユニット（ＰＵ）
６    専用データ処理ユニット（ＶＵ）
７    デバッグユニット（ＤＵ）
８、１０    インターフェイス
１１    コードＲＡＭ
１２    フェッチユニット（ＦＵ）
１３    実行ユニット
３１、３２、３３、３４    接続点
５５    ブレーク検出部
６１、６２、６２、６４    接続点
【図１】
0004641708.tif 000002
【図２】
0004641708.tif 000003
【図３】
0004641708.tif 000004
【図４】
0004641708.tif 000005
【図５】
0004641708.tif 000006
【図６】
0004641708.tif 000007