(57)【要約】【課題】プロセッサのデバッグ効率を向上させること。【解決手段】デバッグ機構２３３がシフトレジスタ２３４に過去６サイクル分のOPCODEを記憶し、スキャン部がシフトレジスタ２３４に記憶されたOPCODEをスキャンして読み出す。なお、デバッグ機構は、REQUEST＿VALID信号を入力し、REQUEST＿VALID信号の値が"1"であるときのみシフトレジスタにOPCODEを記憶するよう構成することもできる。また、複数の演算ユニットを有するプロセッサの場合には、デバッグ機構が複数の演算ユニットのOPCODEを記憶するよう構成することもできる。また、デバッグ機構がOPCODEまたはRUPT＿CODEを選択して記憶するよう構成することもできる。【選択図】        図９
2010044773.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ内のラッチをスキャンして読み出すプロセッサデバッグ装置であって、
プロセッサ内に設けられ、該プロセッサ内の所定の信号の値を、デバッグ対象のプロセッサの複数のクロック分記憶するシフトレジスタと、
前記シフトレジスタにより記憶された信号値をスキャンして読み出す信号読出手段と、
を備え、
前記シフトレジスタには、前記信号が有効であることを示す有効性信号が入力し、前記信号が有効であることを前記有効性信号が示す場合に、前記シフトレジスタが前記信号の値を記憶することを特徴とするプロセッサデバッグ装置。
【請求項２】
前記プロセッサデバッグ装置は更に、前記クロックの１サイクル毎にカウントするカウンタと、
前記カウンタのカウント値を、複数のクロック分記憶する第２のシフトレジスタとを有し、
前記第２のシフトレジスタは、前記信号が有効であることを前記有効性信号が示す場合に、前記カウンタ値を記憶し、
前記信号読出手段は、前記シフトレジスタに記憶された信号値とともに、前記第２のシフトレジスタに記憶されたカウント値をスキャンして読み出すことを特徴とする、請求項１に記載のプロセッサデバッグ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プロセッサ内のラッチをスキャンして読み出すプロセッサデバッグ装置に関し、特に、プロセッサ内信号の時間的遷移の把握を可能とし、もってプロセッサのデバッグ効率を向上させることができるプロセッサデバッグ装置に関するものである。
【背景技術】
【０００２】
近年、プロセッサの集積度は増加し、それに伴ってプロセッサ内の論理は複雑化してきている。論理が複雑化するにつれプロセッサのデバッグ作業は困難なものになり、その期間は増加する一方であるため、デバッグの効率化のためさまざまな工夫がなされている。
【０００３】
そのひとつとして、ＪＴＡＧ(Join  Test  Action  Group)対応のプロセッサ内のラッチにスキャン回路を付加しそのラッチの情報を読み出す手法が広く用いられている（ＪＴＡＧについては、非特許文献１参照。）。このスキャンの値を調査することでプロセッサの状態を外部から知ることが可能となり、デバッグの効率を上げている。しかし、このスキャンの調査では、ある１クロックタイミングの状態しか分からないため、プロセッサ内の信号の時間的遷移を知ることはできず、信号の値の前後関係で発生するタイミング障害などについては解析が困難となっている。
【０００４】
これを解決するため、プロセッサの動作を時間的に知ることができるように、予め設計者が調査に重要な信号を各タイミングごとに専用のＲＡＭに記録させるような回路をプロセッサ内に付加し、そのＲＡＭに記録されている過去複数サイクル分の値を調査することも行われている。ここで、記録する情報量やクロック数は使用ＲＡＭの容量によるが、数１００サイクル分の情報を記録させタイミング障害のデバッグに効果を発揮している。
【０００５】
しかし、ＲＡＭは１Ｋビット、２Ｋビットなど記録する容量が決まっているため、設計者が実際に必要である信号数以上にデバッグ機構を実装することとなり、また、ＲＡＭ自身の動作を試験するために診断回路を付加しなくてはならず、回路の増大、設計工数の増大、ひいてはコストの増大を招く。
【０００６】
また、ＲＡＭは専用の微細なトランジスタで構成されているためロジックと比べ製造上問題を発生させやすく、デバッグ機能のためだけにＲＡＭを実装することはＬＳＩの歩留まりを低下させる要因となる。
【０００７】
従って、このデバッグ用のＲＡＭは、命令制御部やメモリ制御部など１００サイクルにわたる情報がデバッグに必要な箇所においてのみ使用されている。そのため、デバッグに数１００サイクルもの情報が必要でない演算実行部などではこのＲＡＭは実装せず、ラッチのスキャン情報のみでデバッグを行っている。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】IEEE1349.1、「Test  Access  Port  and  Boundary  Scan  Architecture」、ＩＥＥＥ規格
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、スキャン情報のみではその１タイミングの状況のみで演算実行部の動作を推測するしかないため、演算実行部内回路の時間的遷移状況は知ることができず、演算実行部のデバッグ作業が困難であるという問題があった。
【００１０】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、ＲＡＭを用いることなくプロセッサ内信号の時間的遷移の把握を可能とし、もってプロセッサのデバッグ効率を向上させることができるプロセッサデバッグ装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、本発明は、プロセッサ内のラッチをスキャンして読み出すプロセッサデバッグ装置であって、プロセッサ内に設けられ、該プロセッサ内の所定の信号の値を、デバッグ対象のプロセッサの複数のクロック分記憶するシフトレジスタと、前記シフトレジスタにより記憶された信号値をスキャンして読み出す信号読出手段と、を備え、前記シフトレジスタには、前記信号が有効であることを示す有効性信号が入力し、前記信号が有効であることを前記有効性信号が示す場合に、前記シフトレジスタが前記信号の値を記憶することを特徴とする。
【００１２】
この発明によれば、プロセッサ内の所定の信号について有効性信号が有効である場合の値を複数のクロック分シフトレジスタに保持されるように記憶し、シフトレジスタに記憶した信号値をスキャンして読み出すよう構成したので、設計者は、シフトレジスタを効率良く使用してプロセッサ内の信号の時間的遷移を把握することができる。
【発明の効果】
【００１３】
本発明によれば、設計者は、プロセッサ内の信号の時間的遷移を把握することができるので、プロセッサのデバッグを効率良く行うことができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１−１】図１−１は、本実施例１に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図（信号を記録するシフトレジスタ）である。
【図１−２】図１−２は、本実施例１に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図（記録される信号）である。
【図１−３】図１−３は、本実施例１に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図（シフトレジスタに記録される信号）である。
【図２】図２は、本実施例１に係るプロセッサの構成を示す機能ブロック図である。
【図３】図３は、３ビットのOPCODE割り当ての一例を示す図である。
【図４】図４は、デバッグ機構の構成を示す機能ブロック図である。
【図５】図５は、OPCODEの各タイミングでの値の例を示す図である。
【図６】図６は、シフトレジスタに記録されたOPCODEを示す図である。
【図７】図７は、信号Ａとその有効性を示す信号Ｖを示す図である。
【図８−１】図８−１は、本実施例２に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図（信号を記録するシフトレジスタとカウンタ値を記録するシフトレジスタ）である。
【図８−２】図８−２は、本実施例２に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図（記録される信号とその有効性を示す信号）である。
【図８−３】図８−３は、本実施例２に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図（二つのシフトレジスタにそれぞれ記録される信号およびカウンタ値）である。
【図９】図９は、本実施例２に係るプロセッサの構成を示す機能ブロック図である。
【図１０】図１０は、デバッグ機構の構成を示す機能ブロック図である。
【図１１】図１１は、OPCODEおよびREQUEST＿VALIDの各タイミングでの値の例を示す図である。
【図１２】図１２は、二つのシフトレジスタにそれぞれ記録されたOPCODEおよびカウンタ値を示す図である。
【図１３−１】図１３−１は、本実施例３に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図（二つの信号およびカウンタ値のそれぞれを記録する四つのシフトレジスタ）である。
【図１３−２】図１３−２は、本実施例３に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図（記録される二つの信号とそれらの有効性をそれぞれ示す二つの信号）である。
【図１３−３】図１３−３は、本実施例３に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図（四つのシフトレジスタにそれぞれ記録される信号）である。
【図１４】図１４は、本実施例３に係るプロセッサの構成を示す機能ブロック図である。
【図１５】図１５は、デバッグ機構の構成を示す機能ブロック図である。
【図１６】図１６は、OPCODE＿X、OPCODE＿Y、REQUEST＿VALID＿XおよびREQUEST＿VALID＿Yの各タイミングでの値の例を示す図である。
【図１７】図１７は、四つのシフトレジスタにそれぞれ記録されたOPCODE＿X、カウンタ値、OPCODE＿Yおよびカウンタ値を示す図である。
【図１８】図１８は、本実施例４に係るプロセッサの構成を示す機能ブロック図である。
【図１９】図１９は、デバッグ機構の構成を示す機能ブロック図である。
【発明を実施するための形態】
【００１５】
以下に添付図面を参照して、この発明に係るプロセッサデバッグ装置の好適な実施例を詳細に説明する。
【実施例１】
【００１６】
まず、本実施例１に係るプロセッサデバッグ装置による信号記録方式について図１−１〜図１−３を用いて説明する。図１−１は、信号Ａの過去６サイクル分の情報を記録するシフトレジスタ（"B0"〜"B5"）を示す図である。本実施例１に係るプロセッサデバッグ装置では、このようなシフトレジスタを用いて、プロセッサ内の信号Ａを記録する。
【００１７】
今、この信号Ａの値をスキャンで読み出したタイミングを"TIM  0"とすると、レジスタ"B0"には"TIM  0"での信号Ａの値が、レジスタ"B1"には"TIM  0"の１クロック前のタイミングである"TIM-1"での信号Ａの値が、レジスタ"B2"には"TIM  0"の２クロック前のタイミングである"TIM-2"での信号Ａの値が、レジスタ"B3"、"B4"、"B5"にはそれぞれ３、４、５クロック前での信号Ａの値が記録されている。
【００１８】
例として、ある回路において信号Ａが図１−２に示すように"TIM-9"から"TIM  0"までの１０クロックの間変化していたとする。このとき、シフトレジスタが記録している値は図１−３に示す通りである。
【００１９】
従って、本実施例１に係るプロセッサデバッグ装置では、設計者は、シフトレジスタの値を調査することで図１−２に示した"TIM-5"から"TIM  0"までの６サイクル間の信号Ａの状態を知ることができ、デバッグを効率良く行うことができる。
【００２０】
次に、本実施例１に係るプロセッサの構成について説明する。図２は、本実施例１に係るプロセッサの構成を示す機能ブロック図である。同図に示すように、このプロセッサ１００は、命令制御ユニット１１０と、データ制御ユニット１２０と、演算ユニット１３０とを有する。
【００２１】
命令制御ユニット１１０は、命令の実行を制御する制御部であり、演算ユニット１３０に対して３ビットの信号OPCODEによって処理する演算を指示する。図３は、３ビットのOPCODE割り当ての一例を示す図である。同図に示すように、ここでは、"nop"から"SHIFT＿RGHT"までの８種類の演算を３ビットのOPCODEに割り当てている。
【００２２】
データ制御ユニット１２０は、演算ユニット１３０で演算されるデータに関する制御を行う制御部であり、演算ユニット１３０に演算データを出力する。
【００２３】
演算ユニット１３０は、データ制御ユニット１２０から受け取った演算データに対して命令制御ユニット１１０からOPCODEで指示された演算を実行する処理部であり、演算制御部１３１と、演算実行部１３２と、デバッグ機構１３３とを有する。
【００２４】
演算制御部１３１は、命令制御ユニット１１０からの制御信号により演算実行部１３２を制御する制御部である。演算実行部１３２は、データ制御ユニット１２０からの演算データに対して演算制御部１３１からの制御信号に従って演算を行う処理部である。
【００２５】
デバッグ機構１３３は、プロセッサ１００のデバッグを支援する機能を提供する機構である。具体的には、このデバッグ機構１３３は、演算制御部１３１からOPCODEを入力してシフトレジスタ１３４にその値を記録する。図４は、デバッグ機構１３３の構成を示す機能ブロック図である。同図に示すように、このデバッグ機構１３３は、シフトレジスタ１３４とスキャン部１３５とを有する。
【００２６】
シフトレジスタ１３４は、OPCODEの過去６サイクル分の値を記憶するシフトレジスタである。すなわち、レジスタ"C0"は最新のOPCODEを記憶し、レジスタ"C1"は１クロック前のOPCODEを記憶し、レジスタ"C2"は２クロック前のOPCODEを記憶する。以下同様に、シフトレジスタ１３４は、５クロック前までのOPCODEの値を記憶する。
【００２７】
今、図５に示すタイミングで命令制御ユニット１１０から演算ユニット１３０へOPCODEが送られていたとする。このときのデバッグ機構１３３内のシフトレジスタ１３４に保持されているOPCODEの値とそのタイミングは図６に示す通りである。図６に示すように、シフトレジスタ１３４には、"TIM  0"〜"TIM-5"までの過去６サイクル分のOPCODEが記録される。
【００２８】
このように、シフトレジスタ１３４に過去６サイクル分のOPCODEの値を記録することによって、設計者は、過去６サイクルの間、SUB->DIV->MULT->NOP->DIV->ADDの順序で命令制御ユニット１１０から演算制御信号が送られていたことを知ることができ、デバッグを効率良く行うことができる。
【００２９】
スキャン部１３５は、シフトレジスタ１３４に記憶された値をスキャンして読み出す処理部である。このスキャン部１３５がシフトレジスタ１３４に記憶された値をスキャンして読み出すことによって、設計者は、過去６サイクル分のOPCODEを知ることができる。
【００３０】
上述してきたように、本実施例１では、デバッグ機構１３３がシフトレジスタ１３４に過去６サイクル分のOPCODEを記憶し、スキャン部１３５がシフトレジスタ１３４に記憶されたOPCODEをスキャンして読み出すこととしたので、設計者は、OPCODEの時間的遷移を把握することができ、プロセッサのデバッグを効率良く行うことができる。
【００３１】
また、このような構成をとることにより、わずかな回路を追加するだけで、製造上の歩留まりや信頼性を低下させることなく、プロセッサ内回路の信号の時間的遷移を外部から知ることを可能とし、プロセッサのデバッグ作業の効率を向上させることができる。
【００３２】
なお、本実施例１では、シフトレジスタが６段構成である場合について説明したが、他の段数のシフトレジスタを使用することもできる。また、OPCODE以外の他の信号をシフトレジスタに記録することもできる。
【実施例２】
【００３３】
ところで、上記実施例１では、過去６サイクル分のOPCODEを全てシフトレジスタ１３４に記録するプロセッサデバッグ装置について説明した。しかしながら、全てのサイクルのOPCODEではなく、特定のサイクルのOPCODEだけを知りたい場合もある。
【００３４】
例えば、図７は、信号Ａとその有効性を示す信号Ｖを示す図である。同図において、信号Ｖの値が"1"である時のみ信号Ａの値は有効であるとする。この場合、タイミング"TIM-2"、"TIM-4"、"TIM-6"および"TIM-7"での信号Ａは無効であるため、デバッグ機構のシフトレジスタにこのタイミングの信号Ａの値を記録しても意味を持たない。
【００３５】
従って、限られたデバック機構の資源を有効に使用するため、信号Ｖの値が"1"であるときにのみ信号Ａの値を記録することが考えられる。そこで、本実施例２では、ある信号の値が"1"であるときにのみ特定の信号の値をシフトレジスタ記録するプロセッサデバッグ装置について説明する。
【００３６】
まず、本実施例２に係るプロセッサデバッグ装置による信号記録方式について図８−１〜図８−３を用いて説明する。図８−１は、信号Ａの過去６サイクル分の情報を記録するシフトレジスタ（"B10"〜"B15"）を示す図である。
【００３７】
ただし、このシフトレジスタ（"B10"〜"B15"）は、シフトレジスタ（"B0"〜"B5"）と異なり、信号Ｖが"1"であるときのみ信号Ａを記録するように制御される。また、本実施例２に係るプロセッサデバッグ装置では、毎サイクルサイクリックにカウントする４ビットのカウンタを新たに設け、このカウンタ値も信号Ａが記録される同じタイミングでシフトレジスタ（"B20"〜"B25"）に記録する。
【００３８】
このように、信号Ａが記録される同じタイミングでカウンタ値をシフトレジスタ（"B20"〜"B25"）に記録することによって、カウンタ値を用いて信号Ａが記録されたタイミングを相対的に特定することができる。
【００３９】
図７に示した信号Ａ、Ｖの状態の変化にカウンタの値を追記した例を図８−２に示す。このカウンタの値は信号Ａ、Ｖのタイミングを相対的に示すものであり、今、"TIM  0"のタイミングで値がH'C'（１６進数の'C'）であったとする。このとき、デバッグ機構の各レジスタが記録している信号Ａとカウンタの値、記録されているタイミングは図８−３に示す通りである。
【００４０】
設計者は、シフトレジスタ（"B10"〜"B15"）に記録されている信号Ａの値と、同じタイミングで記録されているシフトレジスタ（"B20"〜"B25"）のカウンタ値を調査することで、図８−２で示す信号Ａの時間的遷移について知ることができる。また、設計者は、"TIM-9"から"TIM  0"までの１０サイクル間の状態を知ることができるため、より効率良くデバッグを行うことができる。
【００４１】
次に、本実施例２に係るプロセッサの構成について説明する。図９は、本実施例２に係るプロセッサの構成を示す機能ブロック図である。なお、ここでは説明の便宜上、図２に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
【００４２】
図９に示すように、このプロセッサ２００は、命令制御ユニット２１０と、データ制御ユニット１２０と、演算ユニット２３０とを有する。命令制御ユニット２１０は、命令制御ユニット１１０と同様、命令の実行を制御する制御部であるが、演算ユニット２３０に対してOPCODEに加えてREQUEST＿VALIDを出力する。ここで、REQUEST＿VALIDは、OPCODEの有効性を示す信号であり、このREQUEST＿VALIDが"1"のときのみOPCODEは有効となる。
【００４３】
演算ユニット２３０は、演算ユニット１３０と同様、演算を実行する処理部であり、演算制御部２３１と、演算実行部２３２と、デバッグ機構２３３とを有する。演算制御部２３１は、命令制御ユニット２１０からOPCODEに加えてREQUEST＿VALIDを制御信号として受け取り、演算実行部２３２を制御する制御部である。演算実行部２３２は、データ制御ユニット１２０からの演算データに対して演算制御部２３１からの制御信号に従って演算を行う処理部である。
【００４４】
デバッグ機構２３３は、プロセッサ２００のデバッグを支援する機能を提供する機構であり、演算制御部２３１からOPCODEに加えてREQUEST＿VALIDを入力し、REQUEST＿VALIDが"1"のときのOPCODEをシフトレジスタ２３４に記録する。
【００４５】
図１０は、デバッグ機構２３３の構成を示す機能ブロック図である。同図に示すように、このデバッグ機構２３３は、シフトレジスタ２３４および２３５と、カウンタ２３６と、スキャン部２３７とを有する。
【００４６】
シフトレジスタ２３４は、OPCODEとREQUEST＿VALIDを入力し、REQUEST＿VALIDが"1"のときのみOPCODEの値を記憶する。カウンタ２３６は、毎サイクルサイクリックにH'0'〜H'F'をカウントする４ビットのカウンタであり、OPCODEをシフトレジスタ２３４に記録したタイミングを特定するために使用される。
【００４７】
シフトレジスタ２３５は、REQUEST＿VALIDが"1"のとき、すなわちOPCODEがシフトレジスタ２３４に記録されたタイミングでのカウンタ２３６の値を記憶する。スキャン部２３７は、シフトレジスタ２３４および２３５に記憶された値をスキャンして読み出す処理部である。
【００４８】
今、図１１に示すタイミングで命令制御ユニット２１０から演算ユニット２３３へOPCODEおよびREQUEST＿VALIDが送られていたとする。このときのデバッグ機構２３３内のシフトレジスタ２３４および２３５に保持されているOPCODEおよびカウンタの値とそのタイミングは図１２に示す通りである。
【００４９】
図１２に示すように、シフトレジスタ２３４には、REQUEST＿VALIDが"1"である"TIM  0"、"TIM-1"、"TIM-3"、"TIM-5"、"TIM-8"および"TIM-9"のOPCODEが記録され、シフトレジスタ２３５には、"TIM  0"、"TIM-1"、"TIM-3"、"TIM-5"、"TIM-8"および"TIM-9"のカウンタ値が記録される。
【００５０】
従って、設計者は、デバッグ機構２３３のシフトレジスタ２３４とシフトレジスタ２３５に記録された値を調査することで、過去１０サイクル中の６サイクルで、ADD->SQRT->SUB->MULT->DIV->ADDの順序で命令制御ユニット２１０から有効な演算制御信号が送られ、演算実行部２３２で演算が行われていたことを知ることができ、さらに効率良くデバッグを行うことができる。
【００５１】
上述してきたように、本実施例２では、デバッグ機構２３３がOPCODEに加えてREQUEST＿VALIDを入力し、REQUEST＿VALIDが"1"であるときのみOPCODEの値をシフトレジスタ２３４に記憶することとしたので、シフトレジスタ２３４には有効な情報だけが記憶され、シフトレジスタ２３４を効率良く使用することができる。
【実施例３】
【００５２】
実施例１および２では、一つのプロセッサ内に一つの演算ユニットがある場合について説明したが、スーパースカラ方式のプロセッサなどでは、一つのプロセッサ内に複数の演算ユニットがある。そこで、本実施例３では、一つのプロセッサ内に二つの演算ユニットがある場合について説明する。なお、ここでは、各演算ユニットごとに信号を記録するシフトレジスタを備えることとする。
【００５３】
まず、本実施例３に係るプロセッサデバッグ装置による信号記録方式について図１３−１〜図１３−３を用いて説明する。今、図１３−１に示すように、シフトレジスタＸおよびＹにおいて、それぞれ信号ＸＡ、ＹＡをそれらが有効であるＸＶ、ＹＶが"1"であるときのみシフトレジスタ（"B30"〜"B35"）および（"B50"〜"B55"）へ記録させることとする。また、両シフトレジスタで共通のカウンタを設けその値もＸＡ、ＹＡが記録された同じタイミングでシフトレジスタ（"B40"〜"B45"）および（"B60"〜"B65"）へ記録するように制御する。
【００５４】
例として、図１３−２に示すように、信号Ｘ、Ｙ、ＸＶおよびＹＶが"TIM-9"から"TIM  0"での１０クロックの間変化していたとし、"TIM  0"のタイミングでのカウンタ値がH'C'であったとする。この時の各シフトレジスタが記録している信号ＸＡ、ＹＡとカウンタの値は図１３−３の通りである。
【００５５】
このように、シフトレジスタ（"B30"〜"B35"）、（"B40"〜"B45"）、（"B50"〜"B55"）および（"B60"〜"B65"）に記録された値を調査することで、設計者は、図１３−２での信号ＸＡ、ＹＡの時間的遷移について、信号ＸＡについては"TIM-9"から"TIM  0"までの１０サイクル間の状態を知ることができ、信号ＹＡについては"TIM-8"から"TIM  0"までの９サイクル間の状態を知ることができるとともに、両演算実行部での演算の同時実行状態も知ることができる。
【００５６】
次に、本実施例３に係るプロセッサの構成について説明する。図１４は、本実施例３に係るプロセッサの構成を示す機能ブロック図である。なお、ここでは説明の便宜上、図２に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
【００５７】
図１４に示すように、このプロセッサ３００は、命令制御ユニット３１０と、データ制御ユニット３２０と、演算ユニットＸ３３０と、演算ユニットＹ３４０と、デバッグ機構３５０とを有する。
【００５８】
命令制御ユニット３１０は、命令の実行を制御する制御部であり、演算ユニットＸ３３０に対してOPCODE＿XおよびREQUEST＿VALID＿Xを出力し、演算ユニットＹ３４０に対してOPCODE＿YおよびREQUEST＿VALID＿Yを出力する。
【００５９】
ここで、OPCODE＿XおよびOPCODE＿Yは、演算を指示する３ビットの信号であり、その割り当ては、図３に示した３ビットのOPCODEの割り当てと同じである。また、REQUEST＿VALID＿Xは、OPCODE＿Xの有効性を示す信号であり、このREQUEST＿VALID＿Xが"1"のときのみOPCODE＿Xは有効となり、REQUEST＿VALID＿Yは、OPCODE＿Yの有効性を示す信号であり、このREQUEST＿VALID＿Yが"1"のときのみOPCODE＿Yは有効となる。
【００６０】
データ制御ユニット３２０は、演算ユニットＸ３３０および演算ユニットＹ３４０で演算されるデータに関する制御を行う制御部であり、演算ユニットＸ３３０および演算ユニットＹ３４０に演算データを出力する。
【００６１】
演算ユニットＸ３３０は、データ制御ユニット３２０から受け取った演算データに対して命令制御ユニット３１０から指示された演算を実行する処理部であり、演算制御部３３１と、演算実行部３３２とを有する。
【００６２】
演算制御部３３１は、命令制御ユニット３１０からOPCODE＿XおよびREQUEST＿VALID＿Xを受け取り、演算実行部３３２を制御する制御部である。演算実行部３３２は、データ制御ユニット３２０からの演算データに対して演算制御部３３１からの制御信号に従って演算を行う処理部である。なお、演算ユニットＹ３４０も、演算ユニットＸ３３０と同様の機能構成を有する。
【００６３】
デバッグ機構３５０は、プロセッサ３００のデバッグを支援する機能を提供する機構であり、演算制御部３３１からOPCODE＿XおよびREQUEST＿VALID＿Xを入力し、REQUEST＿VALID＿Xが"1"であるときのみOPCODE＿Xの値をシフトレジスタ３５１に記録し、演算制御部３４１からOPCODE＿YおよびREQUEST＿VALID＿Yを入力し、REQUEST＿VALID＿Yが"1"であるときのみOPCODE＿Yの値をシフトレジスタ３５３に記録する。
【００６４】
図１５は、デバッグ機構３５０の構成を示す機能ブロック図である。同図に示すように、このデバッグ機構３５０は、シフトレジスタ３５１〜３５４と、カウンタ３５５と、スキャン部３５６とを有する。
【００６５】
シフトレジスタ３５１は、OPCODE＿XとREQUEST＿VALID＿Xを入力し、REQUEST＿VALID＿Xが"1"のときのみOPCODE＿Xの値を記憶する。シフトレジスタ３５３は、OPCODE＿YとREQUEST＿VALID＿Yを入力し、REQUEST＿VALID＿Yが"1"のときのみOPCODE＿Yの値を記憶する。
【００６６】
カウンタ３５５は、毎サイクルサイクリックにカウントH'0'〜H'F'をカウントする４ビットのカウンタであり、OPCODE＿XまたはOPCODE＿Yを記録したタイミングを特定するために使用される。
【００６７】
シフトレジスタ３５２は、REQUEST＿VALID＿Xが"1"のとき、すなわちOPCODE＿Xがシフトレジスタ３５１に記録されたタイミングでのカウンタ３５５の値を記憶する。シフトレジスタ３５４は、REQUEST＿VALID＿Yが"1"のとき、すなわちOPCODE＿Yがシフトレジスタ３５３に記録されたタイミングでのカウンタ３５５の値を記憶する。スキャン部３５６は、シフトレジスタ３５１〜３５４に記憶された値をスキャンして読み出す処理部である。
【００６８】
今、図１６に示すタイミングで命令制御ユニット３１０から、演算ユニットＸ３３０へOPCODE＿XおよびREQUEST＿VALID＿Xが送られ、演算ユニットＹ３４０へOPCODE＿YおよびREQUEST＿VALID＿Yが送られていたとする。このときのデバッグ機構３５０内のシフトレジスタ３５１および３５２に保持されているOPCODE＿Xおよびカウンタの値と、シフトレジスタ３５３および３５４に保持されているOPCODE＿Yおよびカウンタの値と、それらのタイミングは図１７に示す通りである。
【００６９】
図１７に示すように、シフトレジスタ３５１には、REQUEST＿VALID＿Xが"1"である"TIM  0"、"TIM-1"、"TIM-3"、"TIM-5"、"TIM-8"および"TIM-9"のOPCODE＿Xが記録され、シフトレジスタ３５２には、"TIM  0"、"TIM-1"、"TIM-3"、"TIM-5"、"TIM-8"および"TIM-9"のカウンタ値が記録される。また、シフトレジスタ３５３には、REQUEST＿VALID＿Yが"1"である"TIM  0"、"TIM-2"、"TIM-4"、"TIM-5"、"TIM-6"および"TIM-8"のOPCODE＿Yが記録され、シフトレジスタ３５４には、"TIM  0"、"TIM-2"、"TIM-4"、"TIM-5"、"TIM-6"および"TIM-8"のカウンタ値が記録される。
【００７０】
従って、設計者は、デバッグ機構３５０のシフトレジスタ３５１および３５２の値を調査することで、演算ユニットＸ３３０において過去１０サイクルの間、ADD->SQRT->SUB->MULT->DIV->ADDの順序で命令制御ユニット３１０から有効なOPCODE＿Xが送られ、演算実行部３３２で演算が行われていたことを知ることができ、シフトレジスタ３５３および３５４の値を調査することで、演算ユニットＹ３４０において過去９サイクルの間、ADD->MULT->SHIFT＿LEFT->ADD->MLT->SHIFT＿LEFTの順序で命令制御ユニット３１０から有効なOPCODE＿Yが送られ、演算実行部３４２で演算が行われていたことを知ることができる。
【００７１】
また、シフトレジスタ３５２および３５４で記録しているカウンタ値は演算ユニットＸ３３０および演算ユニットＹ３４０で共通なものであるため、設計者は、これらに記録されている値より両演算ユニットで処理した演算のタイミングを知ることができ、デバッグの効率をさらに向上することができる。例えば、設計者は、"TIM  0"、"TIM-5"および"TIM-8"においては演算ユニットＸ３３０と演算ユニットＹ３４０が同時に演算を行っていたことを知ることができる。
【００７２】
上述してきたように、本実施例３では、デバッグ機構３５０が二つの演算ユニットで行われていた演算を記録し、両演算ユニットで処理された演算のタイミングを設計者が知ることを可能としたので、デバッグの効率をさらに向上することができる。
【００７３】
なお、本実施例３では、プロセッサが二つの演算ユニットを有する場合について説明したが、デバッグ機構内のシフトレジスタの個数を増やすことによって、より多くの演算ユニットを有するプロセッサを対象とすることもできる。
【実施例４】
【００７４】
実施例１〜３では、プロセッサ内の決められた信号の時間的遷移を調査する場合について説明したが、プロセッサ内の複数の信号のうちいずれかの信号を選択してその時間的遷移を調査したい場合もある。そこで、本実施例４では、プロセッサ内の二つの信号のうちいずれかの信号を選択してシフトレジスタに記録する場合について説明する。
【００７５】
図１８は、本実施例４に係るプロセッサの構成を示す機能ブロック図である。なお、ここでは説明の便宜上、図２に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
【００７６】
同図に示すように、このプロセッサ４００の演算ユニット４３０は、演算制御部１３１と、演算実行部４３２と、デバッグ機構４３３とを有する。
【００７７】
演算実行部４３２は、演算制御部１３１からの制御信号に従って演算を行う処理部であり、デバッグ機構４３３に対してRUPT＿CODEを出力する。ここで、RUPT＿CODEは、演算結果の状態を示す３ビットの信号である。
【００７８】
デバッグ機構４３３は、プロセッサ４００のデバッグを支援する機能を提供する機構であり、選択信号に基づいてOPCODEまたはRUPT＿CODEのいずれかをシフトレジスタに記録する。ここで、選択信号は、スキャン可能なラッチの出力であり、プロセッサ４００の外部から設定可能である。
【００７９】
図１９は、デバッグ機構４３３の構成を示す機能ブロック図である。同図に示すように、このデバッグ機構４３３は、シフトレジスタ４３４と、セレクタ４４０と、スキャン部１３５とを有する。
【００８０】
シフトレジスタ４３４は、OPCODEまたはRUPT＿CODEの過去６サイクル分の値を記憶するシフトレジスタである。セレクタ４４０は、OPCODE、RUPT＿CODEおよび選択信号を入力し、選択信号に基づいてOPCODEまたはRUPT＿CODEを選択し、シフトレジスタ４３４に出力する処理部である。すなわち、シフトレジスタ４３４は、セレクタ４４０によって選択されたOPCODEまたはRUPT＿CODEの過去６サイクル分の値を記憶する。
【００８１】
上述してきたように、本実施例４では、セレクタ４４０がOPCODEまたはRUPT＿CODEを選択し、シフトレジスタ４３４がセレクタ４４０によって選択されたOPCODEまたはRUPT＿CODEの過去６サイクル分の値を記憶することとしたので、記録可能な信号の種類をわずかなハードウェアの増加で増やすことができる。
【００８２】
なお、本実施例４では、REQUEST＿VALIDを使用しない場合について説明したが、REQUEST＿VALIDを使用し、REQUEST＿VALIDの値が"1"であるときのみOPCODEまたはRUPT＿CODEをシフトレジスタに記録することもできる。
【００８３】
また、本実施例１〜４に係るデバッグ機構に記録させる信号数とクロック数、カウンタのビット幅は設計者がプロセッサ内に搭載できる回路量とその必要性から任意に決定できるため、このデバッグ機構の回路規模は、ＲＡＭで構成されたものが１Ｋ、２Ｋビットなどある単位でしか実装できないのに比べ、設計者が必要な最低限で実現することができる。
【００８４】
（付記１）プロセッサ内のラッチをスキャンして読み出すプロセッサデバッグ装置であって、
プロセッサ内の所定の信号の値を複数のクロック分記憶するレジスタと、
前記レジスタにより記憶された信号値をスキャンして読み出す信号読出手段と、
を備えたことを特徴とするプロセッサデバッグ装置。
【００８５】
（付記２）前記レジスタに信号値を記憶するタイミングを指定するタイミング指定手段と、
前記タイミング指定手段により指定されたタイミングを識別するタイミング値を前記レジスタにより記憶される複数の信号のそれぞれに対応して記憶するタイミング記憶手段と、
をさらに備えたことを特徴とする付記１に記載のプロセッサデバッグ装置。
【００８６】
（付記３）プロセッサ内の複数の信号から一つの信号を選択する信号選択手段をさらに備え、
前記レジスタは、前記信号選択手段により選択された信号の値を複数のクロック分記憶することを特徴とする付記１または２に記載のプロセッサデバッグ装置。
【００８７】
（付記４）前記レジスタは、シフトレジスタであることを特徴とする付記１または２に記載のプロセッサデバッグ装置。
【００８８】
（付記５）前記タイミング記憶手段により記憶されるタイミング値は、カウンタによりカウントされるカウント値であることを特徴とする付記２に記載のプロセッサデバッグ装置。
【００８９】
（付記６）プロセッサ内のラッチをスキャンして読み出すプロセッサデバッグ方法であって、
プロセッサ内の所定の信号の値が複数のクロック分レジスタに保持されるように記録する信号記録工程と、
前記信号記録工程によりレジスタに記録された信号値をスキャンして読み出す信号読出工程と、
を含んだことを特徴とするプロセッサデバッグ方法。
【００９０】
（付記７）前記信号記録工程は、指定されたタイミングでレジスタに信号値を記録し、
前記タイミングを識別するタイミング値を前記レジスタにより記録される複数の信号のそれぞれに対応して記録するタイミング記録工程、
をさらに含んだことを特徴とする付記６に記載のプロセッサデバッグ方法。
【００９１】
（付記８）プロセッサ内の複数の信号から一つの信号を選択する信号選択工程をさらに含み、
前記信号記録工程は、前記信号選択工程により選択された信号の値を複数のクロック分レジスタに記録することを特徴とする付記６または７に記載のプロセッサデバッグ方法。
【００９２】
（付記９）前記レジスタは、シフトレジスタであることを特徴とする付記６または７に記載のプロセッサデバッグ方法。
【００９３】
（付記１０）前記タイミング記録工程により記録されるタイミング値は、カウンタによりカウントされるカウント値であることを特徴とする付記７に記載のプロセッサデバッグ方法。
【産業上の利用可能性】
【００９４】
以上のように、本発明に係るプロセッサデバッグ装置は、プロセッサの試験に有用であり、特に、信号の値の前後関係で発生するタイミング障害の解析などに適している。
【符号の説明】
【００９５】
１００，２００，３００，４００    プロセッサ
１１０，２１０，３１０    命令制御ユニット
１２０，３２０    データ制御ユニット
１３０，２３０，４３０    演算ユニット
１３１，２３１，３３１，３４１    演算制御部
１３２，２３２，３３２，３４２，４３２    演算実行部
１３３，２３３，３５０，４３３    デバッグ機構
１３４，２３４，３５１，３５３，４３４    シフトレジスタ
１３５，２３７，３５６    スキャン部
２３５，３５２，３５４    シフトレジスタ
２３６，３５５    カウンタ
３３０    演算ユニットＸ
３４０    演算ユニットＹ
【図１−１】
2010044773.tif 000003
【図１−２】
2010044773.tif 000004
【図１−３】
2010044773.tif 000005
【図２】
2010044773.tif 000006
【図３】
2010044773.tif 000007
【図４】
2010044773.tif 000008
【図５】
2010044773.tif 000009
【図６】
2010044773.tif 000010
【図７】
2010044773.tif 000011
【図８−１】
2010044773.tif 000012
【図８−２】
2010044773.tif 000013
【図８−３】
2010044773.tif 000014
【図９】
2010044773.tif 000015
【図１０】
2010044773.tif 000016
【図１１】
2010044773.tif 000017
【図１２】
2010044773.tif 000018
【図１３−１】
2010044773.tif 000019
【図１３−２】
2010044773.tif 000020
【図１３−３】
2010044773.tif 000021
【図１４】
2010044773.tif 000022
【図１５】
2010044773.tif 000023
【図１６】
2010044773.tif 000024
【図１７】
2010044773.tif 000025
【図１８】
2010044773.tif 000026
【図１９】
2010044773.tif 000027