JP5177108B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP5177108B2
JP5177108B2 JP2009220855A JP2009220855A JP5177108B2 JP 5177108 B2 JP5177108 B2 JP 5177108B2 JP 2009220855 A JP2009220855 A JP 2009220855A JP 2009220855 A JP2009220855 A JP 2009220855A JP 5177108 B2 JP5177108 B2 JP 5177108B2
Authority
JP
Japan
Prior art keywords
shift register
arithmetic processing
information
opcode
unit
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 - Fee Related
Application number
JP2009220855A
Other languages
English (en)
Other versions
JP2010044773A (ja
Inventor
英男 山下
竜二 菅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009220855A priority Critical patent/JP5177108B2/ja
Publication of JP2010044773A publication Critical patent/JP2010044773A/ja
Application granted granted Critical
Publication of JP5177108B2 publication Critical patent/JP5177108B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Semiconductor Integrated Circuits (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

この発明は、演算処理装置及び演算処理装置の制御方法に関する。
近年、プロセッサの集積度は増加し、それに伴ってプロセッサ内の論理は複雑化してきている。論理が複雑化するにつれプロセッサのデバッグ作業は困難なものになり、その期間は増加する一方であるため、デバッグの効率化のためさまざまな工夫がなされている。
そのひとつとして、JTAG(Join Test Action Group)対応のプロセッサ内のラッチにスキャン回路を付加しそのラッチの情報を読み出す手法が広く用いられている(JTAGについては、非特許文献1参照。)。このスキャンの値を調査することでプロセッサの状態を外部から知ることが可能となり、デバッグの効率を上げている。しかし、このスキャンの調査では、ある1クロックタイミングの状態しか分からないため、プロセッサ内の信号の時間的遷移を知ることはできず、信号の値の前後関係で発生するタイミング障害などについては解析が困難となっている。
これを解決するため、プロセッサの動作を時間的に知ることができるように、予め設計者が調査に重要な信号を各タイミングごとに専用のRAMに記録させるような回路をプロセッサ内に付加し、そのRAMに記録されている過去複数サイクル分の値を調査することも行われている。ここで、記録する情報量やクロック数は使用RAMの容量によるが、数100サイクル分の情報を記録させタイミング障害のデバッグに効果を発揮している。
しかし、RAMは1Kビット、2Kビットなど記録する容量が決まっているため、設計者が実際に必要である信号数以上にデバッグ機構を実装することとなり、また、RAM自身の動作を試験するために診断回路を付加しなくてはならず、回路の増大、設計工数の増大、ひいてはコストの増大を招く。
また、RAMは専用の微細なトランジスタで構成されているためロジックと比べ製造上問題を発生させやすく、デバッグ機能のためだけにRAMを実装することはLSIの歩留まりを低下させる要因となる。
従って、このデバッグ用のRAMは、命令制御部やメモリ制御部など100サイクルにわたる情報がデバッグに必要な箇所においてのみ使用されている。そのため、デバッグに数100サイクルもの情報が必要でない演算実行部などではこのRAMは実装せず、ラッチのスキャン情報のみでデバッグを行っている。
IEEE1349.1、「Test Access Port and Boundary Scan Architecture」、IEEE規格
しかしながら、スキャン情報のみではその1タイミングの状況のみで演算実行部の動作を推測するしかないため、演算実行部内回路の時間的遷移状況は知ることができず、演算実行部のデバッグ作業が困難であるという問題があった。
本発明は、1つの側面では、プロセッサのデバッグ効率を向上させることができる演算処理装置及び演算処理装置の制御方法を提供することを目的とする。
本願の開示する演算処理装置は、1つの態様において、演算を行う演算処理部と、演算処理部が実行する命令を表す命令情報又は演算処理部が実行した演算の結果の状態を示す状態情報のいずれかを、外部からの選択情報に基づいて出力する選択部とを有する。また、本願の開示する演算処理装置は、前記選択部から入力した命令情報又は状態情報を、入力した命令情報又は状態情報に対応する有効情報に基づき、入力したクロック毎に複数記憶するシフトレジスタを有する。また、本願の開示する演算処理装置は、前記シフトレジスタに複数記憶された命令情報又は状態情報をスキャンして読み出す読出部を有する。
1実施態様によれば、設計者は、シフトレジスタを効率良く使用してプロセッサ内の信号の時間的遷移を把握することができる。
本発明によれば、設計者は、プロセッサ内の信号の時間的遷移を把握することができるので、プロセッサのデバッグを効率良く行うことができるという効果を奏する。
図1−1は、本実施例1に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図(信号を記録するシフトレジスタ)である。 図1−2は、本実施例1に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図(記録される信号)である。 図1−3は、本実施例1に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図(シフトレジスタに記録される信号)である。 図2は、本実施例1に係るプロセッサの構成を示す機能ブロック図である。 図3は、3ビットのOPCODE割り当ての一例を示す図である。 図4は、デバッグ機構の構成を示す機能ブロック図である。 図5は、OPCODEの各タイミングでの値の例を示す図である。 図6は、シフトレジスタに記録されたOPCODEを示す図である。 図7は、信号Aとその有効性を示す信号Vを示す図である。 図8−1は、本実施例2に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図(信号を記録するシフトレジスタとカウンタ値を記録するシフトレジスタ)である。 図8−2は、本実施例2に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図(記録される信号とその有効性を示す信号)である。 図8−3は、本実施例2に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図(二つのシフトレジスタにそれぞれ記録される信号およびカウンタ値)である。 図9は、本実施例2に係るプロセッサの構成を示す機能ブロック図である。 図10は、デバッグ機構の構成を示す機能ブロック図である。 図11は、OPCODEおよびREQUEST_VALIDの各タイミングでの値の例を示す図である。 図12は、二つのシフトレジスタにそれぞれ記録されたOPCODEおよびカウンタ値を示す図である。 図13−1は、本実施例3に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図(二つの信号およびカウンタ値のそれぞれを記録する四つのシフトレジスタ)である。 図13−2は、本実施例3に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図(記録される二つの信号とそれらの有効性をそれぞれ示す二つの信号)である。 図13−3は、本実施例3に係るプロセッサデバッグ装置による信号記録方式を説明するための説明図(四つのシフトレジスタにそれぞれ記録される信号)である。 図14は、本実施例3に係るプロセッサの構成を示す機能ブロック図である。 図15は、デバッグ機構の構成を示す機能ブロック図である。 図16は、OPCODE_X、OPCODE_Y、REQUEST_VALID_XおよびREQUEST_VALID_Yの各タイミングでの値の例を示す図である。 図17は、四つのシフトレジスタにそれぞれ記録されたOPCODE_X、カウンタ値、OPCODE_Yおよびカウンタ値を示す図である。 図18は、本実施例4に係るプロセッサの構成を示す機能ブロック図である。 図19は、デバッグ機構の構成を示す機能ブロック図である。
以下に添付図面を参照して、本願の開示する演算処理装置及び演算処理装置の制御方法の実施例を詳細に説明する。
まず、本実施例1に係るプロセッサデバッグ装置による信号記録方式について図1−1〜図1−3を用いて説明する。図1−1は、信号Aの過去6サイクル分の情報を記録するシフトレジスタ("B0"〜"B5")を示す図である。本実施例1に係るプロセッサデバッグ装置では、このようなシフトレジスタを用いて、プロセッサ内の信号Aを記録する。
今、この信号Aの値をスキャンで読み出したタイミングを"TIM 0"とすると、レジスタ"B0"には"TIM 0"での信号Aの値が、レジスタ"B1"には"TIM 0"の1クロック前のタイミングである"TIM-1"での信号Aの値が、レジスタ"B2"には"TIM 0"の2クロック前のタイミングである"TIM-2"での信号Aの値が、レジスタ"B3"、"B4"、"B5"にはそれぞれ3、4、5クロック前での信号Aの値が記録されている。
例として、ある回路において信号Aが図1−2に示すように"TIM-9"から"TIM 0"までの10クロックの間変化していたとする。このとき、シフトレジスタが記録している値は図1−3に示す通りである。
従って、本実施例1に係るプロセッサデバッグ装置では、設計者は、シフトレジスタの値を調査することで図1−2に示した"TIM-5"から"TIM 0"までの6サイクル間の信号Aの状態を知ることができ、デバッグを効率良く行うことができる。
次に、本実施例1に係るプロセッサの構成について説明する。図2は、本実施例1に係るプロセッサの構成を示す機能ブロック図である。同図に示すように、このプロセッサ100は、命令制御ユニット110と、データ制御ユニット120と、演算ユニット130とを有する。
命令制御ユニット110は、命令の実行を制御する制御部であり、演算ユニット130に対して3ビットの信号OPCODEによって処理する演算を指示する。図3は、3ビットのOPCODE割り当ての一例を示す図である。同図に示すように、ここでは、"nop"から"SHIFT_RGHT"までの8種類の演算を3ビットのOPCODEに割り当てている。
データ制御ユニット120は、演算ユニット130で演算されるデータに関する制御を行う制御部であり、演算ユニット130に演算データを出力する。
演算ユニット130は、データ制御ユニット120から受け取った演算データに対して命令制御ユニット110からOPCODEで指示された演算を実行する処理部であり、演算制御部131と、演算実行部132と、デバッグ機構133とを有する。
演算制御部131は、命令制御ユニット110からの制御信号により演算実行部132を制御する制御部である。演算実行部132は、データ制御ユニット120からの演算データに対して演算制御部131からの制御信号に従って演算を行う処理部である。
デバッグ機構133は、プロセッサ100のデバッグを支援する機能を提供する機構である。具体的には、このデバッグ機構133は、演算制御部131からOPCODEを入力してシフトレジスタ134にその値を記録する。図4は、デバッグ機構133の構成を示す機能ブロック図である。同図に示すように、このデバッグ機構133は、シフトレジスタ134とスキャン部135とを有する。
シフトレジスタ134は、OPCODEの過去6サイクル分の値を記憶するシフトレジスタである。すなわち、レジスタ"C0"は最新のOPCODEを記憶し、レジスタ"C1"は1クロック前のOPCODEを記憶し、レジスタ"C2"は2クロック前のOPCODEを記憶する。以下同様に、シフトレジスタ134は、5クロック前までのOPCODEの値を記憶する。
今、図5に示すタイミングで命令制御ユニット110から演算ユニット130へOPCODEが送られていたとする。このときのデバッグ機構133内のシフトレジスタ134に保持されているOPCODEの値とそのタイミングは図6に示す通りである。図6に示すように、シフトレジスタ134には、"TIM 0"〜"TIM-5"までの過去6サイクル分のOPCODEが記録される。
このように、シフトレジスタ134に過去6サイクル分のOPCODEの値を記録することによって、設計者は、過去6サイクルの間、SUB->DIV->MULT->NOP->DIV->ADDの順序で命令制御ユニット110から演算制御信号が送られていたことを知ることができ、デバッグを効率良く行うことができる。
スキャン部135は、シフトレジスタ134に記憶された値をスキャンして読み出す処理部である。このスキャン部135がシフトレジスタ134に記憶された値をスキャンして読み出すことによって、設計者は、過去6サイクル分のOPCODEを知ることができる。
上述してきたように、本実施例1では、デバッグ機構133がシフトレジスタ134に過去6サイクル分のOPCODEを記憶し、スキャン部135がシフトレジスタ134に記憶されたOPCODEをスキャンして読み出すこととしたので、設計者は、OPCODEの時間的遷移を把握することができ、プロセッサのデバッグを効率良く行うことができる。
また、このような構成をとることにより、わずかな回路を追加するだけで、製造上の歩留まりや信頼性を低下させることなく、プロセッサ内回路の信号の時間的遷移を外部から知ることを可能とし、プロセッサのデバッグ作業の効率を向上させることができる。
なお、本実施例1では、シフトレジスタが6段構成である場合について説明したが、他の段数のシフトレジスタを使用することもできる。また、OPCODE以外の他の信号をシフトレジスタに記録することもできる。
ところで、上記実施例1では、過去6サイクル分のOPCODEを全てシフトレジスタ134に記録するプロセッサデバッグ装置について説明した。しかしながら、全てのサイクルのOPCODEではなく、特定のサイクルのOPCODEだけを知りたい場合もある。
例えば、図7は、信号Aとその有効性を示す信号Vを示す図である。同図において、信号Vの値が"1"である時のみ信号Aの値は有効であるとする。この場合、タイミング"TIM-2"、"TIM-4"、"TIM-6"および"TIM-7"での信号Aは無効であるため、デバッグ機構のシフトレジスタにこのタイミングの信号Aの値を記録しても意味を持たない。
従って、限られたデバック機構の資源を有効に使用するため、信号Vの値が"1"であるときにのみ信号Aの値を記録することが考えられる。そこで、本実施例2では、ある信号の値が"1"であるときにのみ特定の信号の値をシフトレジスタ記録するプロセッサデバッグ装置について説明する。
まず、本実施例2に係るプロセッサデバッグ装置による信号記録方式について図8−1〜図8−3を用いて説明する。図8−1は、信号Aの過去6サイクル分の情報を記録するシフトレジスタ("B10"〜"B15")を示す図である。
ただし、このシフトレジスタ("B10"〜"B15")は、シフトレジスタ("B0"〜"B5")と異なり、信号Vが"1"であるときのみ信号Aを記録するように制御される。また、本実施例2に係るプロセッサデバッグ装置では、毎サイクルサイクリックにカウントする4ビットのカウンタを新たに設け、このカウンタ値も信号Aが記録される同じタイミングでシフトレジスタ("B20"〜"B25")に記録する。
このように、信号Aが記録される同じタイミングでカウンタ値をシフトレジスタ("B20"〜"B25")に記録することによって、カウンタ値を用いて信号Aが記録されたタイミングを相対的に特定することができる。
図7に示した信号A、Vの状態の変化にカウンタの値を追記した例を図8−2に示す。このカウンタの値は信号A、Vのタイミングを相対的に示すものであり、今、"TIM 0"のタイミングで値がH'C'(16進数の'C')であったとする。このとき、デバッグ機構の各レジスタが記録している信号Aとカウンタの値、記録されているタイミングは図8−3に示す通りである。
設計者は、シフトレジスタ("B10"〜"B15")に記録されている信号Aの値と、同じタイミングで記録されているシフトレジスタ("B20"〜"B25")のカウンタ値を調査することで、図8−2で示す信号Aの時間的遷移について知ることができる。また、設計者は、"TIM-9"から"TIM 0"までの10サイクル間の状態を知ることができるため、より効率良くデバッグを行うことができる。
次に、本実施例2に係るプロセッサの構成について説明する。図9は、本実施例2に係るプロセッサの構成を示す機能ブロック図である。なお、ここでは説明の便宜上、図2に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
図9に示すように、このプロセッサ200は、命令制御ユニット210と、データ制御ユニット120と、演算ユニット230とを有する。命令制御ユニット210は、命令制御ユニット110と同様、命令の実行を制御する制御部であるが、演算ユニット230に対してOPCODEに加えてREQUEST_VALIDを出力する。ここで、REQUEST_VALIDは、OPCODEの有効性を示す信号であり、このREQUEST_VALIDが"1"のときのみOPCODEは有効となる。
演算ユニット230は、演算ユニット130と同様、演算を実行する処理部であり、演算制御部231と、演算実行部232と、デバッグ機構233とを有する。演算制御部231は、命令制御ユニット210からOPCODEに加えてREQUEST_VALIDを制御信号として受け取り、演算実行部232を制御する制御部である。演算実行部232は、データ制御ユニット120からの演算データに対して演算制御部231からの制御信号に従って演算を行う処理部である。
デバッグ機構233は、プロセッサ200のデバッグを支援する機能を提供する機構であり、演算制御部231からOPCODEに加えてREQUEST_VALIDを入力し、REQUEST_VALIDが"1"のときのOPCODEをシフトレジスタ234に記録する。
図10は、デバッグ機構233の構成を示す機能ブロック図である。同図に示すように、このデバッグ機構233は、シフトレジスタ234および235と、カウンタ236と、スキャン部237とを有する。
シフトレジスタ234は、OPCODEとREQUEST_VALIDを入力し、REQUEST_VALIDが"1"のときのみOPCODEの値を記憶する。カウンタ236は、毎サイクルサイクリックにH'0'〜H'F'をカウントする4ビットのカウンタであり、OPCODEをシフトレジスタ234に記録したタイミングを特定するために使用される。
シフトレジスタ235は、REQUEST_VALIDが"1"のとき、すなわちOPCODEがシフトレジスタ234に記録されたタイミングでのカウンタ236の値を記憶する。スキャン部237は、シフトレジスタ234および235に記憶された値をスキャンして読み出す処理部である。
今、図11に示すタイミングで命令制御ユニット210から演算ユニット233へOPCODEおよびREQUEST_VALIDが送られていたとする。このときのデバッグ機構233内のシフトレジスタ234および235に保持されているOPCODEおよびカウンタの値とそのタイミングは図12に示す通りである。
図12に示すように、シフトレジスタ234には、REQUEST_VALIDが"1"である"TIM 0"、"TIM-1"、"TIM-3"、"TIM-5"、"TIM-8"および"TIM-9"のOPCODEが記録され、シフトレジスタ235には、"TIM 0"、"TIM-1"、"TIM-3"、"TIM-5"、"TIM-8"および"TIM-9"のカウンタ値が記録される。
従って、設計者は、デバッグ機構233のシフトレジスタ234とシフトレジスタ235に記録された値を調査することで、過去10サイクル中の6サイクルで、ADD->SQRT->SUB->MULT->DIV->ADDの順序で命令制御ユニット210から有効な演算制御信号が送られ、演算実行部232で演算が行われていたことを知ることができ、さらに効率良くデバッグを行うことができる。
上述してきたように、本実施例2では、デバッグ機構233がOPCODEに加えてREQUEST_VALIDを入力し、REQUEST_VALIDが"1"であるときのみOPCODEの値をシフトレジスタ234に記憶することとしたので、シフトレジスタ234には有効な情報だけが記憶され、シフトレジスタ234を効率良く使用することができる。
実施例1および2では、一つのプロセッサ内に一つの演算ユニットがある場合について説明したが、スーパースカラ方式のプロセッサなどでは、一つのプロセッサ内に複数の演算ユニットがある。そこで、本実施例3では、一つのプロセッサ内に二つの演算ユニットがある場合について説明する。なお、ここでは、各演算ユニットごとに信号を記録するシフトレジスタを備えることとする。
まず、本実施例3に係るプロセッサデバッグ装置による信号記録方式について図13−1〜図13−3を用いて説明する。今、図13−1に示すように、シフトレジスタXおよびYにおいて、それぞれ信号XA、YAをそれらが有効であるXV、YVが"1"であるときのみシフトレジスタ("B30"〜"B35")および("B50"〜"B55")へ記録させることとする。また、両シフトレジスタで共通のカウンタを設けその値もXA、YAが記録された同じタイミングでシフトレジスタ("B40"〜"B45")および("B60"〜"B65")へ記録するように制御する。
例として、図13−2に示すように、信号X、Y、XVおよびYVが"TIM-9"から"TIM 0"での10クロックの間変化していたとし、"TIM 0"のタイミングでのカウンタ値がH'C'であったとする。この時の各シフトレジスタが記録している信号XA、YAとカウンタの値は図13−3の通りである。
このように、シフトレジスタ("B30"〜"B35")、("B40"〜"B45")、("B50"〜"B55")および("B60"〜"B65")に記録された値を調査することで、設計者は、図13−2での信号XA、YAの時間的遷移について、信号XAについては"TIM-9"から"TIM 0"までの10サイクル間の状態を知ることができ、信号YAについては"TIM-8"から"TIM 0"までの9サイクル間の状態を知ることができるとともに、両演算実行部での演算の同時実行状態も知ることができる。
次に、本実施例3に係るプロセッサの構成について説明する。図14は、本実施例3に係るプロセッサの構成を示す機能ブロック図である。なお、ここでは説明の便宜上、図2に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
図14に示すように、このプロセッサ300は、命令制御ユニット310と、データ制御ユニット320と、演算ユニットX330と、演算ユニットY340と、デバッグ機構350とを有する。
命令制御ユニット310は、命令の実行を制御する制御部であり、演算ユニットX330に対してOPCODE_XおよびREQUEST_VALID_Xを出力し、演算ユニットY340に対してOPCODE_YおよびREQUEST_VALID_Yを出力する。
ここで、OPCODE_XおよびOPCODE_Yは、演算を指示する3ビットの信号であり、その割り当ては、図3に示した3ビットのOPCODEの割り当てと同じである。また、REQUEST_VALID_Xは、OPCODE_Xの有効性を示す信号であり、このREQUEST_VALID_Xが"1"のときのみOPCODE_Xは有効となり、REQUEST_VALID_Yは、OPCODE_Yの有効性を示す信号であり、このREQUEST_VALID_Yが"1"のときのみOPCODE_Yは有効となる。
データ制御ユニット320は、演算ユニットX330および演算ユニットY340で演算されるデータに関する制御を行う制御部であり、演算ユニットX330および演算ユニットY340に演算データを出力する。
演算ユニットX330は、データ制御ユニット320から受け取った演算データに対して命令制御ユニット310から指示された演算を実行する処理部であり、演算制御部331と、演算実行部332とを有する。
演算制御部331は、命令制御ユニット310からOPCODE_XおよびREQUEST_VALID_Xを受け取り、演算実行部332を制御する制御部である。演算実行部332は、データ制御ユニット320からの演算データに対して演算制御部331からの制御信号に従って演算を行う処理部である。なお、演算ユニットY340も、演算ユニットX330と同様の機能構成を有する。
デバッグ機構350は、プロセッサ300のデバッグを支援する機能を提供する機構であり、演算制御部331からOPCODE_XおよびREQUEST_VALID_Xを入力し、REQUEST_VALID_Xが"1"であるときのみOPCODE_Xの値をシフトレジスタ351に記録し、演算制御部341からOPCODE_YおよびREQUEST_VALID_Yを入力し、REQUEST_VALID_Yが"1"であるときのみOPCODE_Yの値をシフトレジスタ353に記録する。
図15は、デバッグ機構350の構成を示す機能ブロック図である。同図に示すように、このデバッグ機構350は、シフトレジスタ351〜354と、カウンタ355と、スキャン部356とを有する。
シフトレジスタ351は、OPCODE_XとREQUEST_VALID_Xを入力し、REQUEST_VALID_Xが"1"のときのみOPCODE_Xの値を記憶する。シフトレジスタ353は、OPCODE_YとREQUEST_VALID_Yを入力し、REQUEST_VALID_Yが"1"のときのみOPCODE_Yの値を記憶する。
カウンタ355は、毎サイクルサイクリックにカウントH'0'〜H'F'をカウントする4ビットのカウンタであり、OPCODE_XまたはOPCODE_Yを記録したタイミングを特定するために使用される。
シフトレジスタ352は、REQUEST_VALID_Xが"1"のとき、すなわちOPCODE_Xがシフトレジスタ351に記録されたタイミングでのカウンタ355の値を記憶する。シフトレジスタ354は、REQUEST_VALID_Yが"1"のとき、すなわちOPCODE_Yがシフトレジスタ353に記録されたタイミングでのカウンタ355の値を記憶する。スキャン部356は、シフトレジスタ351〜354に記憶された値をスキャンして読み出す処理部である。
今、図16に示すタイミングで命令制御ユニット310から、演算ユニットX330へOPCODE_XおよびREQUEST_VALID_Xが送られ、演算ユニットY340へOPCODE_YおよびREQUEST_VALID_Yが送られていたとする。このときのデバッグ機構350内のシフトレジスタ351および352に保持されているOPCODE_Xおよびカウンタの値と、シフトレジスタ353および354に保持されているOPCODE_Yおよびカウンタの値と、それらのタイミングは図17に示す通りである。
図17に示すように、シフトレジスタ351には、REQUEST_VALID_Xが"1"である"TIM 0"、"TIM-1"、"TIM-3"、"TIM-5"、"TIM-8"および"TIM-9"のOPCODE_Xが記録され、シフトレジスタ352には、"TIM 0"、"TIM-1"、"TIM-3"、"TIM-5"、"TIM-8"および"TIM-9"のカウンタ値が記録される。また、シフトレジスタ353には、REQUEST_VALID_Yが"1"である"TIM 0"、"TIM-2"、"TIM-4"、"TIM-5"、"TIM-6"および"TIM-8"のOPCODE_Yが記録され、シフトレジスタ354には、"TIM 0"、"TIM-2"、"TIM-4"、"TIM-5"、"TIM-6"および"TIM-8"のカウンタ値が記録される。
従って、設計者は、デバッグ機構350のシフトレジスタ351および352の値を調査することで、演算ユニットX330において過去10サイクルの間、ADD->SQRT->SUB->MULT->DIV->ADDの順序で命令制御ユニット310から有効なOPCODE_Xが送られ、演算実行部332で演算が行われていたことを知ることができ、シフトレジスタ353および354の値を調査することで、演算ユニットY340において過去9サイクルの間、ADD->MULT->SHIFT_LEFT->ADD->MLT->SHIFT_LEFTの順序で命令制御ユニット310から有効なOPCODE_Yが送られ、演算実行部342で演算が行われていたことを知ることができる。
また、シフトレジスタ352および354で記録しているカウンタ値は演算ユニットX330および演算ユニットY340で共通なものであるため、設計者は、これらに記録されている値より両演算ユニットで処理した演算のタイミングを知ることができ、デバッグの効率をさらに向上することができる。例えば、設計者は、"TIM 0"、"TIM-5"および"TIM-8"においては演算ユニットX330と演算ユニットY340が同時に演算を行っていたことを知ることができる。
上述してきたように、本実施例3では、デバッグ機構350が二つの演算ユニットで行われていた演算を記録し、両演算ユニットで処理された演算のタイミングを設計者が知ることを可能としたので、デバッグの効率をさらに向上することができる。
なお、本実施例3では、プロセッサが二つの演算ユニットを有する場合について説明したが、デバッグ機構内のシフトレジスタの個数を増やすことによって、より多くの演算ユニットを有するプロセッサを対象とすることもできる。
実施例1〜3では、プロセッサ内の決められた信号の時間的遷移を調査する場合について説明したが、プロセッサ内の複数の信号のうちいずれかの信号を選択してその時間的遷移を調査したい場合もある。そこで、本実施例4では、プロセッサ内の二つの信号のうちいずれかの信号を選択してシフトレジスタに記録する場合について説明する。
図18は、本実施例4に係るプロセッサの構成を示す機能ブロック図である。なお、ここでは説明の便宜上、図2に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
同図に示すように、このプロセッサ400の演算ユニット430は、演算制御部131と、演算実行部432と、デバッグ機構433とを有する。
演算実行部432は、演算制御部131からの制御信号に従って演算を行う処理部であり、デバッグ機構433に対してRUPT_CODEを出力する。ここで、RUPT_CODEは、演算結果の状態を示す3ビットの信号である。
デバッグ機構433は、プロセッサ400のデバッグを支援する機能を提供する機構であり、選択信号に基づいてOPCODEまたはRUPT_CODEのいずれかをシフトレジスタに記録する。ここで、選択信号は、スキャン可能なラッチの出力であり、プロセッサ400の外部から設定可能である。
図19は、デバッグ機構433の構成を示す機能ブロック図である。同図に示すように、このデバッグ機構433は、シフトレジスタ434と、セレクタ440と、スキャン部135とを有する。
シフトレジスタ434は、OPCODEまたはRUPT_CODEの過去6サイクル分の値を記憶するシフトレジスタである。セレクタ440は、OPCODE、RUPT_CODEおよび選択信号を入力し、選択信号に基づいてOPCODEまたはRUPT_CODEを選択し、シフトレジスタ434に出力する処理部である。すなわち、シフトレジスタ434は、セレクタ440によって選択されたOPCODEまたはRUPT_CODEの過去6サイクル分の値を記憶する。
上述してきたように、本実施例4では、セレクタ440がOPCODEまたはRUPT_CODEを選択し、シフトレジスタ434がセレクタ440によって選択されたOPCODEまたはRUPT_CODEの過去6サイクル分の値を記憶することとしたので、記録可能な信号の種類をわずかなハードウェアの増加で増やすことができる。
なお、本実施例4では、REQUEST_VALIDを使用しない場合について説明したが、REQUEST_VALIDを使用し、REQUEST_VALIDの値が"1"であるときのみOPCODEまたはRUPT_CODEをシフトレジスタに記録することもできる。
また、本実施例1〜4に係るデバッグ機構に記録させる信号数とクロック数、カウンタのビット幅は設計者がプロセッサ内に搭載できる回路量とその必要性から任意に決定できるため、このデバッグ機構の回路規模は、RAMで構成されたものが1K、2Kビットなどある単位でしか実装できないのに比べ、設計者が必要な最低限で実現することができる。
(付記1)プロセッサ内のラッチをスキャンして読み出すプロセッサデバッグ装置であって、
プロセッサ内の所定の信号の値を複数のクロック分記憶するレジスタと、
前記レジスタにより記憶された信号値をスキャンして読み出す信号読出手段と、
を備えたことを特徴とするプロセッサデバッグ装置。
(付記2)前記レジスタに信号値を記憶するタイミングを指定するタイミング指定手段と、
前記タイミング指定手段により指定されたタイミングを識別するタイミング値を前記レジスタにより記憶される複数の信号のそれぞれに対応して記憶するタイミング記憶手段と、
をさらに備えたことを特徴とする付記1に記載のプロセッサデバッグ装置。
(付記3)プロセッサ内の複数の信号から一つの信号を選択する信号選択手段をさらに備え、
前記レジスタは、前記信号選択手段により選択された信号の値を複数のクロック分記憶することを特徴とする付記1または2に記載のプロセッサデバッグ装置。
(付記4)前記レジスタは、シフトレジスタであることを特徴とする付記1または2に記載のプロセッサデバッグ装置。
(付記5)前記タイミング記憶手段により記憶されるタイミング値は、カウンタによりカウントされるカウント値であることを特徴とする付記2に記載のプロセッサデバッグ装置。
(付記6)プロセッサ内のラッチをスキャンして読み出すプロセッサデバッグ方法であって、
プロセッサ内の所定の信号の値が複数のクロック分レジスタに保持されるように記録する信号記録工程と、
前記信号記録工程によりレジスタに記録された信号値をスキャンして読み出す信号読出工程と、
を含んだことを特徴とするプロセッサデバッグ方法。
(付記7)前記信号記録工程は、指定されたタイミングでレジスタに信号値を記録し、
前記タイミングを識別するタイミング値を前記レジスタにより記録される複数の信号のそれぞれに対応して記録するタイミング記録工程、
をさらに含んだことを特徴とする付記6に記載のプロセッサデバッグ方法。
(付記8)プロセッサ内の複数の信号から一つの信号を選択する信号選択工程をさらに含み、
前記信号記録工程は、前記信号選択工程により選択された信号の値を複数のクロック分レジスタに記録することを特徴とする付記6または7に記載のプロセッサデバッグ方法。
(付記9)前記レジスタは、シフトレジスタであることを特徴とする付記6または7に記載のプロセッサデバッグ方法。
(付記10)前記タイミング記録工程により記録されるタイミング値は、カウンタによりカウントされるカウント値であることを特徴とする付記7に記載のプロセッサデバッグ方法。
以上のように、本発明に係るプロセッサデバッグ装置は、プロセッサの試験に有用であり、特に、信号の値の前後関係で発生するタイミング障害の解析などに適している。
100,200,300,400 プロセッサ
110,210,310 命令制御ユニット
120,320 データ制御ユニット
130,230,430 演算ユニット
131,231,331,341 演算制御部
132,232,332,342,432 演算実行部
133,233,350,433 デバッグ機構
134,234,351,353,434 シフトレジスタ
135,237,356 スキャン部
235,352,354 シフトレジスタ
236,355 カウンタ
330 演算ユニットX
340 演算ユニットY

Claims (4)

  1. 演算を行う演算処理部と、
    前記演算処理部が実行する命令を表す命令情報又は前記演算処理部が実行した演算の結果の状態を示す状態情報のいずれかを、外部からの選択情報に基づいて出力する選択部と、
    前記選択部から入力した命令情報又は状態情報を、入力した命令情報又は状態情報に対応する有効情報に基づき、入力したクロック毎に複数記憶するシフトレジスタと、
    前記シフトレジスタに複数記憶された命令情報又は状態情報をスキャンして読み出す読出部を有することを特徴とする演算処理装置。
  2. 前記演算処理装置はさらに、
    前記クロックに基づき、計数した計数情報を出力するカウンタと、
    前記カウンタから入力した計数情報を、入力した計数情報に対応する有効情報に基づき、入力したクロック毎に複数記憶する第2のシフトレジスタを有し、
    前記読出部は、
    前記シフトレジスタに複数記憶された命令情報又は状態情報とともに、前記第2のシフトレジスタに複数記憶された計数情報をスキャンして読み出すことを特徴とする請求項1記載の演算処理装置。
  3. 演算処理装置の制御方法において、
    前記演算処理装置が有する演算処理部が、演算を行い、
    前記演算処理装置が有する選択部が、前記演算処理部が実行する命令を表す命令情報又は前記演算処理部が実行した演算の結果の状態を示す状態情報のいずれかを、外部からの選択情報に基づいて出力し、
    前記演算処理装置が有するシフトレジスタが、前記選択部から入力した命令情報又は状態情報を、入力した命令情報又は状態情報に対応する有効情報に基づき、入力したクロック毎に複数記憶し、
    前記演算処理装置が有する読出部が、前記シフトレジスタに複数記憶された命令情報又は状態情報をスキャンして読み出すことを特徴とする演算処理装置の制御方法。
  4. 前記演算処理装置はさらに、
    前記クロックに基づき、計数した計数情報を出力するカウンタと、
    前記カウンタから入力した計数情報を、入力した計数情報に対応する有効情報に基づき、入力したクロック毎に複数記憶する第2のシフトレジスタを有し、
    前記読出部は、
    前記シフトレジスタに複数記憶された命令情報又は状態情報とともに、前記第2のシフトレジスタに複数記憶された計数情報をスキャンして読み出すことを特徴とする請求項3記載の演算処理装置の制御方法。
JP2009220855A 2009-09-25 2009-09-25 演算処理装置及び演算処理装置の制御方法 Expired - Fee Related JP5177108B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009220855A JP5177108B2 (ja) 2009-09-25 2009-09-25 演算処理装置及び演算処理装置の制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009220855A JP5177108B2 (ja) 2009-09-25 2009-09-25 演算処理装置及び演算処理装置の制御方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2004222398A Division JP4494899B2 (ja) 2004-07-29 2004-07-29 プロセッサデバッグ装置およびプロセッサデバッグ方法

Publications (2)

Publication Number Publication Date
JP2010044773A JP2010044773A (ja) 2010-02-25
JP5177108B2 true JP5177108B2 (ja) 2013-04-03

Family

ID=42016061

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009220855A Expired - Fee Related JP5177108B2 (ja) 2009-09-25 2009-09-25 演算処理装置及び演算処理装置の制御方法

Country Status (1)

Country Link
JP (1) JP5177108B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0546386A (ja) * 1991-08-13 1993-02-26 Hitachi Ltd データプロセツサ
JPH05120079A (ja) * 1991-10-29 1993-05-18 Nec Eng Ltd 動作履歴記憶装置
JPH08241224A (ja) * 1995-03-06 1996-09-17 Fujitsu Ltd エミュレータ用インターフェース回路
JP3711884B2 (ja) * 2001-03-28 2005-11-02 日本電気株式会社 トレースデータ採取方式
JP2003076578A (ja) * 2001-09-03 2003-03-14 Mitsubishi Electric Corp マイクロコンピュータ及びデバッグシステム並びにトレース情報収集方法

Also Published As

Publication number Publication date
JP2010044773A (ja) 2010-02-25

Similar Documents

Publication Publication Date Title
US7657807B1 (en) Integrated circuit with embedded test functionality
US7743296B1 (en) Logic analyzer systems and methods for programmable logic devices
US7348799B2 (en) System and method for generating a trigger signal
JP4171016B2 (ja) Lbistを使用する回路テストための方法
US7536615B1 (en) Logic analyzer systems and methods for programmable logic devices
US20070011492A1 (en) Generation of trace data
US10795685B2 (en) Operating a pipeline flattener in order to track instructions for complex
US20190311072A1 (en) Method of debugging a processor
US7260759B1 (en) Method and apparatus for an efficient memory built-in self test architecture for high performance microprocessors
Jamal et al. Architecture exploration for HLS-oriented FPGA debug overlays
US11625316B2 (en) Checksum generation
Singh et al. E-QED: electrical bug localization during post-silicon validation enabled by quick error detection and formal methods
JP4494899B2 (ja) プロセッサデバッグ装置およびプロセッサデバッグ方法
Silveira et al. Flexible architecture of memory BISTs
US7617428B2 (en) Circuits and associated methods for improved debug and test of an application integrated circuit
JP5177108B2 (ja) 演算処理装置及び演算処理装置の制御方法
CN100568006C (zh) 调试电路
US7809928B1 (en) Generating event signals for performance register control using non-operative instructions
Merentitis et al. Directed random SBST generation for on-line testing of pipelined processors
Park et al. Post-silicon bug localization for processors using IFRA
US7222202B2 (en) Method for monitoring a set of semaphore registers using a limited-width test bus
Sugiyama et al. SurgeFuzz: Surge-Aware Directed Fuzzing for CPU Designs
US11403108B2 (en) Exception handling
US11263017B2 (en) Exception register delay
US20240241809A1 (en) Methods, electronic devices and storage media for executing assertions

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120501

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121122

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121211

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121224

LAPS Cancellation because of no payment of annual fees