JP2011028308A - 半導体装置及びソフトウェア開発支援装置 - Google Patents

半導体装置及びソフトウェア開発支援装置 Download PDF

Info

Publication number
JP2011028308A
JP2011028308A JP2009170106A JP2009170106A JP2011028308A JP 2011028308 A JP2011028308 A JP 2011028308A JP 2009170106 A JP2009170106 A JP 2009170106A JP 2009170106 A JP2009170106 A JP 2009170106A JP 2011028308 A JP2011028308 A JP 2011028308A
Authority
JP
Japan
Prior art keywords
debug
circuit
flip
value
register
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.)
Withdrawn
Application number
JP2009170106A
Other languages
English (en)
Inventor
Takahiro Shiina
崇弘 椎名
Tomoki Ishikura
知己 石倉
Takuto Ishii
沢人 石井
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2009170106A priority Critical patent/JP2011028308A/ja
Publication of JP2011028308A publication Critical patent/JP2011028308A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】ユーザプログラムを実行しながら、CPU内部のレジスタ情報、特にステータスレジスタ値やプログラムカウンタ値を観測する。
【解決手段】半導体装置は、プログラムを実行可能なCPU(31)と、上記プログラムのデバッグを支援するためのデバッグ回路(33)とを備える。上記CPUは、ステータスレジスタと、プログラムカウンタとを含む。上記半導体装置は、ユーザプログラムの実行を停止させないで上記CPU内のレジスタ情報を取得するための専用パス(35)を含む。この専用パスは、上記ステータスレジスタが更新された場合の当該更新に対応する上記プログラムカウンタの値を、上記ステータスレジスタが次に更新される前に取得し、取得されたプログラムカウンタ値と、それに対応するステータスレジスタ値とをセットにして上記デバッグ回路に伝達するための論理回路(32)を含む。
【選択図】図3

Description

本発明は、半導体装置で実行されるソフトウェアの開発技術に関する。
従来のソフトウェア開発では、インサーキットエミュレータ(ICE)が使用されていた。ICEを使用した開発環境では、開発専用の特殊なマイクロコンピュータを利用して内部状態をICEが参照することができた。ここで取得可能な情報としては、マイクロコンピュータの内部バス状態やプログラム実行状態などがある。ICEは、直接マイクロコンピュータの内部信号を引き出して参照する(トレース)ことができるため非常に多機能であるが、デバッグ専用のマイクロコンピュータを開発しなければならないし、また高速動作が要求される場合には適用しにくい。
近年では高集積化が可能になったため、マイクロコンピュータ内部にICEが提供していた機能を内蔵することが可能になった。このような方式を、オンチップデバッグ方式という。オンチップデバッグ方式は、高価な専用マイクロコンピュータが不要で、非常に高速な動作周波数に追従しやすいという利点がある。高性能なマイクロコンピュータに対しては、性能評価機能などの新機能が追加され、低価格の展開製品やカスタム対応製品では標準機能として実装しコストダウンに貢献している。しかし、オンチップデバッグ方式では、デバッグ専用に割り当て可能な端子数が限られているため、ICEICEと同じデバッグ情報(特にバストレース情報)の取得は不可能である。オンチップデバッグ方式のマイクロコンピュータでは、制御インタフェースにJTAG(Joint Test Action Group)を使用している場合が多い。少ない端子数で通信を行えるようになっていることや、製品ごとに内蔵デバッグ機能が異なっていても、通信プロトコルなどがJTAG規格に基づいてほぼ統一化されていることが特長である。但し、JTAGインタフェースでは、バストレース情報を取得可能な転送性能をもたないので、トレース情報出力機能に関しては各メーカー独自に専用インタフェース機能を用意することが多い。
特許文献1では、1つ又は複数のプロセッサ、又は他のデバイスからトレース情報を受け取った割込なしトレースシステムが提案されている。このシステムでは、デバッグ回路103はシステムバス105と独立して、トレースデータ221およびクロック信号218、停動信号218等を、プロセッサ102より受け取るようにしている。
特許文献2では、デバッグ機能を内蔵したマイクロプロセッサにおいて、デバッグ処理のため中央処理部を停止する時間を一定時間内に抑え、プログラム実行時間のリアルタイム性を保証するための技術が記載されている。このプロセッサでは、アドレスバス121およびデータバス122と独立したデバッグ情報130を、デバッグ情報ストローブ131に同期して、CPU120からデバッグ処理部100へ出力するようにしている。
特許文献3では、実時間動作の間にコアプロセッサの仮想バスのアドレスおよびデータ信号を選択的にサンプルして電力消費を低減しかつバス負荷による性能の影響を最小にする実時間プロセッサ・デバッグシステムが提案されている。このシステムでは、仮想バス・ゲーティング論理117から独立してデバッグデータおよびデバッグアドレスを出力するようにしている。
特許文献4では、ユーザプログラムのデバッグを簡易かつ低コストで実行し得るマイクロコンピュータが提案されている。このコンピュータにおいて、CPU2からジャンプ要求および実行命令サイズは、アドレスバス8およびデータバス9を介さずにデバッグモジュールへ供給されるようになっている。
特許文献5では、マイクロコンピュータ上でのデバッグ動作を実施する改良した方法及び装置が提案されている。この装置において、デバッグモジュール72は、CPU51からバス56を介さずに信号線76より信号を受けるようにしている。
特開2001-154873号公報 特開2001-109643号公報 特開2001-222446号公報 特開2006-318172号公報 特開2001-154876号公報
近年のソフトウェア開発において、オンチップデバッグ方式では解析困難な不具合や性能改善手法の要求がある。エンジン制御やモーター制御などのリアルタイムシステムでは、不具合再現性や性能水準を保証する作業がデバッグ工程で重要である。この時に既存のオンチップデバッグ方式では、旧来のICE方式の機能を求められることが多い。また近年の階層化されたソフトウェアにおいては、リアルタイムシステムの応答速度や最悪時のタスク処理時間をどの様に解析するかが重要で、この点についての改善要求がある。
従来、CPUの内部情報観測としては、簡単な経過時間や内部イベントの測定機能を提供していた。また、内部情報として、CPUのプログラムカウンタ値をモニタできる機能はあった。ただし、これらの情報が示す内容と実際のCPUの動作タイミングには、ずれが生じるため有効な情報にはなっていなかった。例えば割込みや例外処理などでCPUの内部状態が変化したとき、ステータスレジスタの値が変化するタイミングと次に実行するプログラムカウンタの値は設計上同期しない可能性がある。従ってCPUの内部状態をモニタするには、各情報の同期を取った上でモニタできないと有効ではない。つまり、各情報にはあるタイミングでのCPUの状態を含んでいるので、同じCPU状態に対応する情報同士を組合せて管理しなければならない。さらに取得した情報は、CPUの処理によらず外部に取り出せなければならない。これは前述のデバッグ再現性を損なわないために必要な要件である。このような課題は、特許文献1−5に記載されている技術では解決することができない。
一方、リアルタイム性を有するユーザプログラムにおけるタスクの性能劣化原因を特定するためには、OS(Operating System)や割込み処理でCPUを占有している時間の解析を可能にする機能も検討案件になっている。このとき、CPUの内部情報を示すステータスレジスタ情報を活用することができれば、OSが実行されている特権モードの検出、割込みに関係するデバッグ情報の提供が可能になる。
前述の通りステータスレジスタは、CPUの状態を示す一つの要素である。その他にも汎用レジスタを初めとして、CPUの内部状態を示すリソースは多数ある。ステータスレジスタをデバッグの対象とすることができるならば、同様に汎用レジスタなどCPU内部のレジスタ情報は包括的にデバッグ対象として取り扱うことができると考えられる。
CPUの内部レジスタの状態を確認するために、デバッガソフトウェアには、一般にレジスタウィンドウと呼ばれる表示機能がある。この表示を実現するためには、ユーザプログラムを一時停止させ、レジスタの情報を読み出すなど一定の条件が伴う。これは旧来のICE方式でも、オンチップデバッグ方式でも同様であり、ソフトウェア開発環境向上の技術開発の課題である。ユーザプログラムを実行しながら、汎用レジスタ情報の変化をデバッグ回路を通じて取り出し、ソフトウェア開発者に情報提供できれば、非常に精度の高いシステム開発が可能となる。
本発明の目的は、ユーザプログラムを実行しながら、CPU内部のレジスタ情報、特にステータスレジスタ値やプログラムカウンタ値を観測するための技術を提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
すなわち、半導体装置は、プログラムを実行可能なCPUと、上記CPUで実行されるプログラムのデバッグを支援するためのデバッグ回路とを備える。上記CPUは、上記CPUの状態を示すステータスレジスタと、上記CPUで実行される命令の格納アドレスを保持するプログラムカウンタとを含む。上記半導体装置は、上記CPU内のレジスタ情報を取得するための専用パスを含む。この専用パスは、上記ステータスレジスタが更新された場合の当該更新に対応する上記プログラムカウンタの値を、上記ステータスレジスタが次に更新される前に取得し、取得されたプログラムカウンタ値と、それに対応するステータスレジスタ値とをセットにして上記デバッグ回路に伝達するための論理回路を含む。CPU内部のレジスタ情報、特にステータスレジスタ値やプログラムカウンタ値は、上記専用パスにより取得されるため、ステータスレジスタ値やプログラムカウンタ値をデバッグ回路に伝達するのに、CPUでのプログラム実行を停止させる必要がない。このことが、ユーザプログラムを実行しながら、CPU内部のレジスタ情報、特にステータスレジスタ値やプログラムカウンタ値の観測を可能にする。しかも、上記論理回路により、プログラムカウンタ値と、それに対応するステータスレジスタ値とがセットで上記デバッグ回路に伝達されるため、デバッグ情報として有効な情報を得ることができる。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、ユーザプログラムを実行しながら、CPU内部のレジスタ情報、特にステータスレジスタ値やプログラムカウンタ値を観測するための技術を提供することができる。
本発明にかかるソフトウェア開発支援装置の全体的な構成例ブロック図である。 上記ソフトウェア開発支援装置に含まれるマイクロコンピュータ内のレジスタファイルの構成例説明図である。 上記マイクロコンピュータにおける主要部の構成例ブロック図である。 上記マイクロコンピュータにおけるパイプライン動作と、プログラムカウンタ及びステータスレジスタとの関係説明図である。 図4における割込み処理の詳細な説明図である。 ステータスレジスタ値とプログラムカウンタ値との取得原理の説明図である。 ステータスレジスタ値とプログラムカウンタ値とを取得するための具体的な回路例の説明図である。 ステータスレジスタ値とプログラムカウンタ値とデバッグ情報取り込み信号とを取得するための具体的な回路例の説明図である。 上記マイクロコンピュータに含まれるデバッグ回路の構成例ブロック図である。 上記デバッグ回路に含まれるトレース出力部からのパケット出力例の説明図である。 上記デバッグ回路に含まれる第1デバッグ専用カウンタの構成例ブロック図である。 上記デバッグ回路に含まれる第2デバッグ専用カウンタの構成例ブロック図である。 上記デバッグ回路に含まれる第3デバッグ専用カウンタの構成例ブロック図である。 CPUコアとデバッグ回路との間のインタフェースとして、ABC(ASE Break Controller)を利用する場合の当該ABCの構成例説明図である。 上記マイクロコンピュータにおけるCPUコアに含まれるステータスレジスタのフォーマット説明図である。 上記ソフトウェア開発支援装置に含まれるホストシステムの表示装置での表示例説明図である。 上記表示装置におけるタスク遷移グラフの表示例説明図である。 上記表示装置におけるパフォーマンス解析グラフの表示例説明図である。 一般的なレジスタウインドウの表示例説明図である。 上記マイクロコンピュータにおける主要部の別の構成例ブロック図である。 上記マイクロコンピュータにおける主要部の別の構成例ブロックである。 上記マイクロコンピュータにおける主要部の別の構成例ブロックである。 上記マイクロコンピュータにおける主要部の別の構成例ブロックである。
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕本発明の代表的な実施の形態に係る半導体装置(14)は、プログラムを実行可能なCPU(31)と、上記CPUで実行されるプログラムのデバッグを支援するためのデバッグ回路(33)とを備える。上記CPUは、上記CPUの状態を示すステータスレジスタと、上記CPUで実行される命令の格納アドレスを保持するプログラムカウンタとを含む。そして上記半導体装置は、ユーザプログラムの実行を停止させないで済むように、上記半導体装置内のレジスタ情報を取得するための専用パス(35)を含む。そしてこの専用パスは、上記ステータスレジスタが更新された場合の当該更新に対応する上記プログラムカウンタの値を、上記ステータスレジスタが次に更新される前に取得し、取得されたプログラムカウンタ値と、それに対応するステータスレジスタ値とをセットにして上記デバッグ回路に伝達するための論理回路を含む。この論理回路の一例として、パイプライン同期化回路(32)を挙げることができる。
〔2〕上記〔1〕において、上記論理回路は、それぞれ上記CPUの内部クロック信号に同期して信号を取り込むための複数のフリップフロップ回路を含んで成るフリップフロップ回路群(71〜83)によって形成することができる。
〔3〕上記〔2〕において、上記CPUは、パイプラインによるプログラム実行が可能とされる。このとき、上記フリップフロップ回路群には、上記ステータスレジスタの値が更新されるステージで新たなステータスレジスタ値を取り込む第1フリップフロップ回路(71)と、上記プログラムカウンタが更新されるステージで新たなプログラムカウンタ値を取り込む第2フリップフロップ回路(72)とを含めることができる。また、上記フリップフロップ回路群には、上記プログラムカウンタが更新されるステージで上記第1フリップフロップ回路の出力値を取り込む第3フリップフロップ回路(73)と、上記第2フリップフロップ回路の出力値と、上記第3フリップフロップ回路の出力値とを合成して上記デバッグ回路に出力するための第4フリップフロップ回路(74)とを含めることができる。
〔4〕上記〔3〕において、上記フリップフロップ回路群には、更に、上記第1フリップフロップ回路の動作に同期してステータスレジスタ値の更新を通知するためのステータスレジスタ更新通知信号を取り込む第5フリップフロップ回路(82)と、上記第4フリップフロップ回路の動作に同期して上記第5フリップフロップ回路の出力値を取り込む第6フリップフロップ回路(83)とを含めることができる。このとき、上記デバッグ回路は、上記第6フリップフロップ回路の出力値に基づいて、上記第4フリップフロップ回路の出力値を取り込むように構成することができる。
〔5〕上記〔4〕において、上記第5フリップフロップ回路(82)の出力信号は、上記デバッグ回路において、上記第4フリップフロップ回路(74)の出力値を取り込むための準備信号として上記デバッグ回路に取り込むことができる。
〔6〕上記〔5〕において、上記デバッグ回路には、上記第4フリップフロップ回路の出力信号を上記ステータスレジスタ値の変化タイミングに同期してトレースするトレース回路(906)を含めることができる。
〔7〕上記〔6〕において、上記デバッグ回路(33)には、上記ステータスレジスタ値と予め設定された比較値とを比較することで、条件一致イベント信号を形成する比較器(902)を含めることができる。
〔8〕上記〔7〕において、上記条件一致イベント信号には、ユーザモードから特権モードへの遷移を示す特権モード遷移イベント信号を含めることができる。このとき、上記デバッグ回路には、上記特権モード遷移イベント信号がアサートされてからネゲートされるまでの時間を測定する第1デバッグ専用カウンタを(905−1)含めることができる。
〔9〕上記〔8〕において、上記条件一致イベント信号には、割込みのブロック状態を示す割込みブロック信号を含めることができる。このとき、上記デバッグ回路には、上記割込みブロック信号がアサートされてからネゲートされるまでの時間を測定する第2デバッグ専用カウンタ(905−2)を含めることができる。
〔10〕上記〔9〕において、上記条件一致イベント信号には、指定されたマスクレベル以上で動作していることを示す割込みマスクレベルオーバー信号、及び指定されたマスクレベル以下で動作していることを示す割込みマスクレベルアンダー信号を含めることができる。このとき、上記デバッグ回路には、指定されたマスクレベル以上で動作している時間と、指定されたマスクレベル以下で動作している時間とを測定する第3デバッグ専用カウンタ(905−3)を含めることができる。
〔11〕上記〔10〕において、上記CPUには、上記ステータスレジスタ、上記プログラムカウンタ、及びその他のレジスタを含んで成るレジスタファイル(302)と、上記レジスタファイルの保持情報を退避可能なレジスタバンク(201)とを含めることができる。また、上記CPUには、上記レジスタファイルと上記レジスタバンクとの間で信号のやり取りを行うレジスタバンク専用インタフェース(202)と、上記レジスタバンク専用インタフェースに結合され、上記レジスタバンク専用インタフェースを介して上記レジスタファイルの保持情報を上記デバッグ回路に伝達するためのデバッグ専用バス(203)とを含めることができる。
〔12〕上記〔10〕において、上記CPUには、上記ステータスレジスタ、上記プログラムカウンタ、及びその他のレジスタを含んで成るレジスタファイル(302)と、上記レジスタファイルの保持情報を退避可能なレジスタバンク(201)と、上記レジスタバンクに結合され、上記レジスタバンクの保持情報を上記デバッグ回路に伝達するためのデバッグ専用バス(203)とを含めることができる。
〔13〕上記〔10〕において、上記CPUには、上記ステータスレジスタ、上記プログラムカウンタ、及びその他のレジスタを含んで成るレジスタファイル(302)と、上記レジスタファイルに結合され、上記レジスタファイルの保持情報を上記デバッグ回路に伝達するためのデバッグ専用バス(203)とを含めることができる。
〔14〕上記〔10〕に記載された半導体装置(14)と、上記半導体装置に結合され、上記デバッグ回路の出力情報を取り込むエミュレータ(12)と、上記エミュレータに結合されたホストシステム(11)とを含み、上記半導体装置で動作するソフトウェアの開発を支援するソフトウェア開発支援装置(10)を形成することができる。
〔15〕上記〔14〕において、上記ホストシステムは、上記デバッグ回路の出力情報を解析する解析部と、上記解析部での解析結果を可視化するための表示装置とを含んで構成することができる。このとき、上記表示装置には、上記解析部での解析結果に基づいて、上記半導体装置におけるオペレーティングシステムのCPU占有率情報及び割込み処理時間情報を、ユーザタスク処理時間情報と区別して表示させると良い。
2.実施の形態の詳細
実施の形態について更に詳述する。
図1には、本発明にかかるソフトウェア開発支援装置の全体的な構成例が示される。
図1に示されるソフトウェア開発支援装置10は、ホストシステム11、エミュレータ12、及び顧客システム13を含み、上記顧客システム13に搭載される半導体装置の一例とされるマイクロコンピュータ14で実行されるユーザプログラムの開発を支援する。
上記マイクロコンピュータ14は、ユーザプログラムの実行により、顧客システム13の動作制御やそれに伴う各種演算処理を行う。また、上記マイクロコンピュータ14は、ユーザプログラムのデバッグ機能16を含む。上記エミュレータ12は、上記顧客システム13に専用インタフェースケーブル15を介して結合され、顧客システム13に搭載されたマイクロコンピュータ14内の各種情報を収集する。上記エミュレータ12は、インタフェースケーブル16を介してホストシステム11に結合される。このホストシステム11には、パーソナルコンピュータなどを適用することができる。ホストシステム11では、所定のデバッグ用プログラムが実行されることによって、上記エミュレータ12の動作制御や、上記エミュレータ12を介して収集された情報の解析等が行われる。ホストシステム11は表示装置を含み、この表示装置には、上記エミュレータ12を介して収集された情報の解析結果を表示することができる。
図3には、上記マイクロコンピュータ14における主要部の構成例が示される。
上記マイクロコンピュータ14は、CPUコア31、パイプライン同期化回路32、及びデバッグ回路33を含み、特に制限されないが、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。
上記CPUコア31は、CPU制御部301、レジスタファイル302、及びCPU演算部303を含み、パイプラインにより、複数の命令を同時に実行することができる。例えばスーパースカラパイプラインでは、合計7本のパイプライン動作の中から最大2本同時に命令の発行が可能とされる。
上記レジスタファイル302は、例えば図2に示されるように、汎用レジスタ群201、コントロールレジスタ202、システムレジスタ203を含む。汎用レジスタ群201は汎用レジスタ(R0〜R15)を含み、それぞれデータ処理やアドレス計算など汎用的に使用される。コントロールレジスタ202は、グローバルベースレジスタ(GBR)、ステータスレジスタ(SR)、ベクタベースレジスタ(VBR)、ジャンプテーブルベースレジスタ(TBR)を含む。ステータスレジスタは、CPUコア31での処理状態を示す。グローバルベースレジスタは、グローバルベースレジスタ間接アドレシングモードのベースアドレスを示す。ベクタベースレジスタは例外及び割込み発生時、分岐先のベースアドレスを示す。ジャンプテーブルベースレジスタはテーブル参照サブルーチンコール命令を実行する際に、メモリに配置された関数テーブルの先頭アドレスを示す。システムレジスタ203は、積和レジスタ(MACH,MACL)、プロシージャレジスタ(PR)、プログラムカウンタ(PC)を含む。積和レジスタ(MACH,MACL)は、乗算又は積和演算結果を格納する。プロシージャレジスタ(PR)は、サブルーチンプロシージャからの戻りアドレスを格納する。プログラムカウンタ(PC)は、実行中の命令の格納アドレスを示す。上記ステータスレジスタ(SR)は、例えば図15に示されるように32ビット構成とされる。「T」は、真/偽条件、またはキャリ/ボロービット、「S」は、MAC命令の飽和動作を指定するビットである。「IMASK」は割込みマスクレベルを指定するビットである。割込みマスク値1〜15を用いて、割込み優先レベル0に設定された割込み要求からマスクすることができる。「M」ビット及び「Q」ビットは除算に使用される。「CS」は、CLIP命令の実行で、飽和上限値を上回った、または飽和下限値を下回ったことを示すビットである。「BO」は、レジスタバンクがオーバフローしていることを示すビットである。「BL」は、割込みブロックビットであり、このビットの設定によって全ての割込みを無条件に禁止することができる。「MD」は特権モードとユーザーモードとを選択するためのビットである。
上記CPU制御部301は、命令のフェッチ及びフェッチされた命令のデコードを行う。
上記CPU演算部303は、ALU(Arithmetic Logic Unit)を含み、上記CPU制御部301での命令デコード結果に基づく演算処理を行う。
上記パイプライン同期化回路32は、上記レジスタファイル302の情報、特にステータスレジスタ値と、プログラムカウンタ値とをデバッグ回路33に伝達する。このとき、上記パイプライン同期化回路32は、ステータスレジスタ値とプログラムカウンタ値とをCPUの命令実行状態(パイプライン)に同期させて取り込む。つまり、上記パイプライン同期化回路32は、上記ステータスレジスタが更新された場合の当該更新に対応する上記プログラムカウンタの値を、上記ステータスレジスタが次に更新される前に取得する。このようにして取得されたステータスレジスタ値とそれに対応するプログラムカウンタ値とは、ひとつのセットとして上記デバッグ回路33に伝達される。ここで、上記パイプライン同期化回路32を含んで、CPUコア31内のレジスタ情報を取得するための専用パス35が形成される。ステータスレジスタ値とそれに対応するプログラムカウンタ値の取得及びデバッグ回路33への伝達は、CPU演算部303とデバッグ回路33との間の専用パス35を介して行われるため、CPUコア31でのユーザプログラムの実行を停止させる必要がない。
上記デバッグ回路33は、アドレス信号を伝達するためのアドレスバスABUSと、データを伝達するためのデータバスDBUSとを介して上記CPUコア31に結合される。上記デバッグ回路33は、上記CPUコア31でのユーザプログラム実行状態をトレースするトレース機能や、所定のブレーク条件を設定することでユーザプログラム実行状態を停止させる機能を有する。また、このデバッグ回路33は、上記パイプライン同期化回路32によって取得されたプログラムカウンタ値とそれに対応するステータスレジスタ値とをトレースする機能を有する。特に制限されないが、このデバッグ回路33のトレース出力は4ビット(bit)構成とされ、このトレース出力情報には、分岐元アドレス、分岐先アドレス、データ値の他、ステータスレジスタ値、プログラムカウンタ値、時刻情報が含まれる。
次に、上記ステータスレジスタ値の取得タイミングについて詳述する。
図4には、パイプライン動作と、プログラムカウンタ及びステータスレジスタとの関係が示される。
スーパースカラパイプラインによれば、先行命令及び後行命令の同時実行が可能とされる。「IF」は命令フェッチを示し、「ID」は命令デコードを示す。EX(内部)は内部処理の演算実行を示し、EX(excep)は例外処理の演算実行を示し、「MA」はメモリアクセスを示す。
割込みが受理されると、その割込みに起因して、例外処理(ベクタリード)、例外処理(ステータスレジスタ(SR)スタック動作)、例外処理(プログラムカウンタ(PC)スタック動作)、例外処理フェッチ動作が行われる。
割込み受理後のステータスレジスタ(SR)値と、それに対応する分岐先命令アドレス(プログラムカウンタ(PC)値)とを同時に観測するには、互いに異なるタイミングで変化するSR値と、それに対応するPC値とを、ひとつのセットにしてデバッグ回路33に取り込む必要がある。図4に示される例では、SRスタック動作におけるSR値の演算実行後のタイミング(41)でSR値の取得が可能となり、例外処理フェッチ動作における分岐先計算実行後のタイミング42で分岐先PC値の取得が可能とされる。
尚、再び割込み受理可能となるステージ(43)以降は、新たな割込みに起因してSR値が変更されるおそれがあるため、再び割込み受理可能となるステージ(43)よりも前にSR値とそれに対応するPC値とを取得する。
図5には、図4における割込み処理の詳細が示される。
一般に割込み処理が行われる場合、汎用レジスタの保持内容を退避する必要があり、そのためにメモリアクセスが必要になる。例えば図5に示されるように、汎用レジスタなどの保持内容が順次レジスタバンクに退避される。スタック退避動作では、SR値、PC値がユーザメモリに退避される。
例外処理(レジスタバンク退避51)では、VTO/PR/GBR/MACLがレジスタバンクに退避される。例外処理(レジスタバンク退避51)では、R12/R13/R14/MACHがレジスタバンクに退避される。例外処理(レジスタバンク退避52)では、R12/R13/R14/MACHがレジスタバンクに退避される。例外処理(レジスタバンク退避53)では、R8/R9/R10/R11がレジスタバンクに退避される。例外処理(レジスタバンク退避54)では、R4/R5/R6/R7がレジスタバンクに退避される。例外処理(レジスタバンク退避55)では、R0/R1/R2/R3がレジスタバンクに退避される。
図6には、ステータスレジスタ(SR)値とプログラムカウンタ(PC)値との取得原理が示される。
CPUの内部動作(CPU演算部303の動作)により、SR値の演算及び分岐先アドレスの演算が行われる。上記SR値の演算が完了すると、その演算結果に基づいてステータスレジスタが更新される。上記分岐先アドレスの演算が完了すると、その演算結果に基づいてプログラムカウンタが更新される。また、上記SR値の演算結果は、ステータスレジスタが更新される前に、デバッグ回路33へ出力され、上記分岐先アドレスの演算結果は、プログラムカウンタが更新される前に、デバッグ回路33へ出力される。
図7には、ステータスレジスタ(SR)値とプログラムカウンタ(PC)値とを取得するための具体的な回路例が示される。
パイプライン同期化回路32には、フリップフロップ回路71,72,73,74が設けられ、このフリップフロップ回路71,72,73,74によって、ステータスレジスタ(SR)値とプログラムカウンタ(PC)値との取得、及びデバッグ回路33への伝達が行われる。フリップフロップ回路71,72,73,74は、CPUコア31から出力されるクロック信号に同期して動作されるものとする。SR値演算は演算回路75で行われ、分岐先演算は演算回路76で行われる。上記演算回路75,76は、CPU演算部303に含まれる。演算回路75で得られたSR値がステータスレジスタに書き込まれるタイミングで、上記SR値がフリップフロップ回路71に取り込まれる。演算回路76で得られた分岐先アドレス(PC値)がプログラムカウンタに書き込まれるタイミングで、上記分岐先アドレス(PC値)がフリップフロップ回路72に取り込まれる。また、上記分岐先アドレス(PC値)がフリップフロップ回路72に取り込まれるタイミングで、上記フリップフロップ回路71の出力値がフリップフロップ回路73に取り込まれる。そして、上記フリップフロップ回路72,73の出力値は、フリップフロップ回路74に取り込まれ、ここで一つのデータに合成されてデバッグ回路33に送出される。
上記フリップフロップ回路74の出力値をデバッグ回路33で円滑に取り込むためには、デバッグ情報の取り込みを指示するためのデバッグ情報取り込み信号を、デバッグ回路33に供給すると良い。図8には、この場合の回路構成例が示される。図8に示される構成例では、図7に示されるフリップフロップ回路71〜74に加えて、フリップフロップ回路81,82,83が設けられる。フリップフロップ回路81は、CPUコア31内に設けられている。フリップフロップ回路82,83は、パイプライン同期化回路32内に設けられる。割込み受理信号又はステータスレジスタ(SR)の操作命令のデコード結果に起因して、フリップフロップ回路81の保持状態が変化されるものとする。演算回路84は、上記フリップフロップ回路81の出力値に基づいてSR更新通知信号を生成する。生成されたSR更新通知信号は、上記フリップフロップ回路71の動作に同期してフリップフロップ回路82に取り込まれる。さらに、このフリップフロップ回路82の出力値は、上記フリップフロップ回路74の動作に同期してフリップフロップ回路83に取り込まれる。このフリップフロップ回路83の出力は、デバッグ情報取り込み信号として、デバッグ回路33に送出される。また、上記フリップフロップ回路82の出力は、デバッグ情報取り込み準備信号としてデバッグ回路33に送出される。このようにデバッグ情報取り込み準備信号をデバッグ回路33に送出するのは、ステータスレジスタが何かの原因で更新されることを、デバッグ情報取り込み信号が確定する前にデバッグ回路33に通知することによって、デバッグ回路33でのステータスレジスタ値の取り込みの準備時間を確保するためである。これにより、上記ステータスレジスタの更新後の値をデバッグ回路33において確実に取り込むことができる。上記ステータスレジスタは、上記のステータスレジスタ操作命令によって更新されることがあるが、この場合にデバッグ回路33へ送出されるプログラムカウンタ値は、プログラムの分岐を伴わないため、ステータスレジスタ操作命令の次の命令のアドレス値を組み合わせる。割込みを受け付けた場合は分岐先アドレス(次に実行する命令アドレス)を組み合わせるが、同じ考え方に基づくと次に実行する命令アドレスはステータスレジスタ操作命令の直後の命令であるため、デバッグ回路33に送出すべきプログラムカウンタ値として適切であると言える。
図9には、上記デバッグ回路33の構成例が示される。
上記デバッグ回路33は、SR比較条件設定部901、比較器902、トレース機能用タイマ903、LSI/CPU制御論理904、デバッグ専用カウンタ905を含む。SR比較条件設定部901には、ステータスレジスタ(SR)値との比較のための各種条件が設定される。この比較のための各種条件には、特権モードの検出条件、割込みマスク値、一致条件等が含まれる。比較器902は、パイプライン同期化回路32から伝達されたステータスレジスタ(SR)値と、上記SR比較条件設定部901の設定条件に応じた比較動作により各種条件一致イベント信号を形成する。
本例において、上記各種条件一致イベント信号には、特権モード遷移イベント信号、割込みブロック信号、割込みマスクレベルオーバー信号、割込みマスクレベルアンダー信号が含まれる。特権モード遷移イベント信号は、ステータスレジスタのMDビットを基準値と比較することで生成することができる。割込みブロック信号は、ステータスレジスタのBLビットを基準値(比較値)と比較することで生成することができる。割込みマスクレベルオーバー信号や割込みレベルアンダー信号は、ステータスレジスタのIMASKビットを基準値と比較することで生成することができる。
各種条件一致イベント信号は、LSI/CPU制御論理904及びデバッグ専用カウンタ905に伝達される。LSI/CPU制御論理904は、上記比較器902で得られた各種条件イベント信号が所定のブレーク条件に一致した場合にユーザプログラムの実行を停止するためのブレーク信号を形成し、あるいは所定の割込み要求を発生させる。また、割込み要求が所定時間経過しても受理されない場合に、ブレーク信号を形成するようにしても良い。デバッグ専用カウンタ905は、伝達された各種条件一致イベント信号を用いて時間測定を行う。このデバッグ専用カウンタ905は、特権モード時間測定のための第1デバッグ専用カウンタ905−1、割込み禁止時間測定のための第2デバッグ専用カウンタ905−2、割込みマスクレベル以上又は割込みマスクレベル以下で動作している時間測定のための第3デバッグ専用カウンタ905−3を含む。上記デバッグ専用カウンタ905の出力は、トレース回路906内のトレース出力部908を介してエミュレータ12に伝達される。上記トレース機能用タイマ903は、トレース情報に時刻情報を付与するために設けられる。上記トレース回路906は、トレース入力部907、トレース出力部908、トレースメモリ909を含む。トレース入力部907は、上記パイプライン同期化回路32やデバッグ専用カウンタ905などからトレース情報を取り込む際に、トレース機能用タイマ903から出力された時刻情報を上記トレース情報に付与する。時刻情報が付与されたトレース情報は、トレースメモリ909に格納されるとともに、トレース出力部908でパケット化されてエミュレータ12(図1参照)へ出力される。トレース出力部908でのパケット出力には、例えば図10に示されるように、ステータスレジスタ(SR)値の変化を示すヘッダ、SR値、PC値(分岐先アドレス)、時刻情報(トレース機能用タイマ903の出力値)が含まれる。
図11には、上記第1デバッグ専用カウンタ905−1の構成例が示される。
上記第1デバッグ専用カウンタ905−1は、カウンタ制御論理111、制御レジスタ112、カウンタ113、カウンタクロック制御回路114を含む。カウンタクロック制御回路114は、クロック信号を生成する。カウンタ113は、カウンタクロック制御回路114から出力されたクロック信号をカウントする。このカウンタ113のカウント結果は、任意のタイミングで読み出しが可能であるほか、トレース回路906に伝達することもできる。カウンタ制御論理111は、比較器902から出力される特権モード遷移イベント信号に基づいてカウント開始信号及びカウント停止信号を形成する。つまり、特権モード遷移イベント信号がアサートされたタイミングに同期してカウント開始信号をアサートし、特権モード遷移イベント信号がネゲートされたタイミングに同期してカウント停止信号をアサートする。カウント開始信号がアサートされてからカウント停止信号がアサートされるまでの期間にカウンタ113でクロック信号のカウント動作が行われる。制御レジスタ112は、上記カウンタ制御論理111及び上記カウンタクロック制御回路114の動作制御のための情報が設定される。これにより、特権モード時間の測定が可能になる。尚、トレース回路906において、特権モード終了タイミングに同期してカウンタ113の値をトレースするようにしても良い。
図12には、上記第2デバッグ専用カウンタ905−2の構成例が示される。
上記第2デバッグ専用カウンタ905−2は、カウンタ制御論理121、制御レジスタ122、カウンタ123、カウンタクロック制御回路124を含む。カウンタクロック制御回路124は、クロック信号を生成する。カウンタ123は、カウンタクロック制御回路124から出力されたクロック信号をカウントする。このカウンタ123でのカウント結果は、任意のタイミングで読み出しが可能であるほか、トレース回路906に伝達することもできる。カウンタ制御論理121は、比較器902から出力される割込みブロック信号に基づいてカウント開始信号及びカウント停止信号を形成する。つまり、割込みブロック信号がアサートされたタイミングに同期してカウント開始信号をアサートし、割込みブロック信号がネゲートされたタイミングに同期してカウント停止信号をアサートする。カウント開始信号がアサートされてからカウント停止信号がアサートされるまでの期間にカウンタ123でクロック信号のカウント動作が行われる。制御レジスタ122は、上記カウンタ制御論理121及び上記カウンタクロック制御回路124の動作制御のための情報が設定される。これにより、割込み禁止時間の測定が可能になる。尚、トレース回路906において、割込みブロック信号のネゲートタイミングに同期してカウンタ123の値をトレースするようにしても良い。
図13には、上記第3デバッグ専用カウンタ905−3の構成例が示される。
上記第3デバッグ専用カウンタ905−3は、カウンタ制御論理131、制御レジスタ132、カウンタ133、カウンタクロック制御回路134を含む。カウンタクロック制御回路134は、クロック信号を生成する。カウンタ133は、カウンタクロック制御回路134から出力されたクロック信号をカウントする。このカウンタ133でのカウント結果は、任意のタイミングで読み出しが可能であるほか、トレース回路906に伝達することもできる。カウンタ制御論理131は、比較器902から出力される割込みマスクレベルオーバー信号又は割込みマスクレベルアンダー信号に基づいてカウント開始信号及びカウント停止信号を形成する。例えば指定された割込みマスクレベル以上で動作している時間を測定する場合には、割込みマスクレベルオーバー信号がアサートされたタイミングに同期してカウント開始信号をアサートし、割込みブロック信号がネゲートされたタイミングに同期してカウント停止信号をアサートする。また、指定された割込みマスクレベル以下で動作している時間を測定する場合には、割込みマスクレベルアンダー信号がアサートされたタイミングに同期してカウント開始信号をアサートし、割込みブロック信号がネゲートされたタイミングに同期してカウント停止信号をアサートする。カウント開始信号がアサートされてからカウント停止信号がアサートされるまでの期間にカウンタ133でクロック信号のカウント動作が行われる。制御レジスタ132は、上記カウンタ制御論理131及び上記カウンタクロック制御回路134の動作制御のための情報が設定される。CPUの機能としては完全な割込み禁止よりも、マスクレベルによる割込み制御が一般的である。このため、指定された割込みマスクレベル以上で動作している時間や、指定された割込みマスクレベル以下で動作している時間を測定することにより、割込み競合発生時に所望の割込みが実行されるまでの待ち時間が許容範囲内であるか否かを判定することができる。尚、トレース回路906において、カウンタ制御論理131から出力されるカウント停止信号のタイミングに同期してカウンタ133の値をトレースするようにしても良い。
以上の説明では、条件一致イベント信号を用いて、時間測定を行うようにしたが、この時間測定に用いたカウンタ113,123,133とは別のカウンタを設け、当該カウンタにより、それぞれのイベントの発生回数を同時に計測するようにしても良い。イベント発生回数は、エミュレータ12がデバッグを中断するまでの条件一致回数を計測できれば良く、トレースする必要はない。しかし、イベント発生回数をも同時に計測しておけば、上記条件一致イベント信号に基づく時間測定との関係で平均時間を算出することができる。
また、デバッグ回路33には、チップ内部で発生したイベントを端子からエミュレータ12に送出する機能が設けられる。この機能は、時間測定や特定の内部状態が発生したことをGUI(Graphical User Interface)によってユーザに通知するのに利用できる。例えばステータスレジスタの変化、特権モード移行イベント、割込み禁止中などを出力するのに利用できる。これにより、エミュレータ12を介してCPUコア31の内部イベントをホストシステム11で観測できるようになる。
さらに、ステータスレジスタ(SR)の比較条件として、ステータスレジスタ(SR)の全ビット比較、特定ビット比較、特定ビットの組み合わせを挙げることができる。全ビット比較によれば、有効ビットの論理(0又は1)状態が全て一致する特定イベントの抽出が可能である。ビット単位マスク機能を付与すれば、ソフトウェア互換性や将来の拡張に対応可能とされる。特定ビット比較によれば、特定ビット例えばIMASKのみの論理(0又は1)状態の一致のみ検出すれば良いため、比較器の論理規模を小さくできる。特定ビットの組み合わせによれば、特定ビット比較結果の論理積条件などを追加して、状態の絞込みが可能となる。
マイクロコンピュータによっては、ASE Break Controller(以下、「ABC」と略記する)を内蔵するものがある。このABCは、ブレーク条件が成立するか否かを比較する機能を有し、このABCを、CPUコア31とデバッグ回路33との間のインタフェースとして利用することができる。図14にはこの場合の構成例が示される。
デコード論理141、演算回路142及びフリップフロップ回路151,152はCPUコア31内に設けられる。有効SR値生成論理143及び比較論理144、フリップフロップ回路153,154,155,156は、ABC内に設けられる。ここでこの有効SR値生成論理143及び比較論理144、フリップフロップ回路153,154,155,156は、条件一致イベント生成のために新たに設ける。上記フリップフロップ回路151,152,154,155,153,156は、CPUコア31内のクロック信号に同期動作される。例えばステータスレジスタ(SR)の操作命令がデコード論理141でデコードされ、そのデコード結果がフリップフロップ回路151に取り込まれる。演算回路142は、上記フリップフロップ回路151の出力(デコード結果)に基づいてSR値を演算する。この演算結果は、フリップフロップ回路152に取り込まれる。
一方、ABC内部では、上記フリップフロップ回路151の出力(デコード結果)がフリップフロップ回路154に取り込まれる。フリップフロップ回路154の出力は、SR比較準備信号として有効SR値生成論理143に伝達される。有効SR値生成論理143は、上記SR比較準備信号に基づいて、上記フリップフロップ回路152の出力から有効SR値を生成する。有効SR値はフリップフロップ回路155に取り込まれる。フリップフロップ回路153には、SRの比較値が設定される。このフリップフロップ回路153の出力(SRの比較値)は、比較論理144に伝達される。この比較論理144は、上記フリップフロップ回路155の出力(有効SR値)と、上記フリップフロップ回路153の出力(SRの比較値)との比較を行う。この比較結果はフリップフロップ回路156に取り込まれる。フリップフロップ回路156の出力は、ABC内部機能や他のデバッグ回路33に伝達される。
尚、上記の条件一致イベント生成においては、CPUコア31内のステータスレジスタ(SR)の情報を取り込んで比較するようにしたが、CPUコア31内のその他のレジスタの保持情報を取り込んで比較するようにしても良い。
次に、デバッグ情報の表示について説明する。
近年のソフトウェア開発環境で重要性が高まっている機能にプロファイル機能がある。この機能によれば、ユーザプログラム(ユーザタスク)がどのようなタイミングで、あるいはどのような時間で実行されたかをグラフで表示し、要求性能を満たさないタスクを容易に認識可能にする。上記プロファイル機能は、特に大規模化したソフトウェアでは、性能改善などの作業時間短縮に重要な機能とされる。そこで本例では、上記デバッグ回路33により収集されたデバッグ情報がエミュレータ12を介してホストシステム11に伝達されることにより、このホストシステム11において画像表示を行うことができる。ホストシステム11は、エミュレータ12を介して取り込まれたデバッグ情報を解析する解析部と、その解析結果を表示する表示部とを含む。上記解析部は、ホストシステム11におけるCPUで所定のデバッグ用プログラムが実行されることによって機能的に実現される。
図16には、ホストシステム11における表示装置での表示例が示される。
ホストシステム11における表示装置の表示画面161は、タスク遷移グラフ161−1と、パフォーマンス解析グラフ161−2とが表示される。
上記タスク遷移グラフ161−1には、例えば図17に示されるように、ユーザプログラムにおけるタスク(Main,task_1〜task_6)毎の性能評価情報170や、割込みマスクレベル時間情報171、及びOS実行時間情報172が含まれる。このグラフの横軸は時間を示している。本例では、第3デバッグ専用カウンタ905−3により、指定された割込みマスクレベル以上で動作している時間や、指定された割込みマスクレベル以下で動作している時間が測定されており、この情報に基づいて、割込みマスクレベル時間情報171のグラフ表示を行うことができる。また、第1デバッグ専用カウンタ905−1により、特権モード時間が測定されており、この情報に基づいて、OS(Operating System)が実行されているOS実行時間情報172のグラフ表示を行うことができる。「タスク外」というグラフは、タスク(Main,1−6)以外の処理、例えば割込みマスクレベル時間やOS実行時間を合計したものを意味する。
上記パフォーマンス解析グラフ161−2には、例えば図18に示されるように、ユーザプログラムにおけるタスク(Main,task_1〜task_6)毎のパフォーマンス解析グラフ180と、割込みマスクレベルやOSに関するパフォーマンス解析グラフ181とが含まれる。タスク等の最大処理時間やCPU占有率は数値表示され、処理時間はグラフ表示される。上記パフォーマンス解析グラフ181は、上記第1デバッグ専用カウンタ905−1や第3デバッグ専用カウンタ905−3などによって得られた時間情報に基づいて表示することができる。このような表示によれば、割込みマスクレベルやOSに関するパフォーマンス解析グラフ181に基づいて、「OSなどに処理時間をとられ過ぎていないか?」、「アイドル(休止)時間から処理の余裕は十分か?」などの判断を行うことができる。
この実施の形態によれば以下の作用効果が得られる。
(1)上記パイプライン同期化回路32を含んで、CPUコア31内のレジスタ情報を取得するための専用パス35が形成される。プログラムカウンタ値とそれに対応するステータスレジスタ値の取得及びデバッグ回路33への伝達は、CPU演算部303とデバッグ回路33との間の専用パス35を介して行われるため、CPUコア31でのユーザプログラムの実行を停止させる必要がない。
また、一般的には、割込みや例外処理などでCPUの内部状態が変化したとき、ステータスレジスタの値が変化するタイミングと次に実行するプログラムカウンタの値は設計上同期しない可能性がある。しかし、上記パイプライン同期化回路32は、ステータスレジスタ値とプログラムカウンタ値とをCPUの命令実行状態(パイプライン)に同期させて取り込むようにしているため、デバッグ情報として有効なものを得ることができる。
(2)パイプライン同期化回路32には、フリップフロップ回路71,72,73,74が設けられ、このフリップフロップ回路71,72,73,74によって、ステータスレジスタ(SR)値とプログラムカウンタ(PC)値との取得、及びデバッグ回路33への伝達を容易に行うことができる。例えばSR値演算は演算回路75で行われ、分岐先演算は演算回路76で行われる。上記演算回路75,76は、CPU演算部303に含まれる。演算回路75で得られたSR値がステータスレジスタに書き込まれるタイミングで、上記SR値がフリップフロップ回路71に取り込まれる。演算回路76で得られた分岐先アドレス(PC値)がプログラムカウンタに書き込まれるタイミングで、上記分岐先アドレス(PC値)がフリップフロップ回路72に取り込まれる。また、上記分岐先アドレス(PC値)がフリップフロップ回路72に取り込まれるタイミングで、上記フリップフロップ回路71の出力値がフリップフロップ回路73に取り込まれる。そして、上記フリップフロップ回路72,73の出力値は、フリップフロップ回路74に取り込まれ、ここで一つのデータに合成されてデバッグ回路33に送出される。
(3)ステータスレジスタが何かの原因で更新されることを、デバッグ情報取り込み信号が確定する前にデバッグ回路33に通知することによって、デバッグ回路33でのステータスレジスタ値の取り込みの準備時間を確保することができる。これにより、上記ステータスレジスタの更新後の値をデバッグ回路33において確実に取り込むことができる。
(4)デバッグ専用カウンタ905は、特権モード時間測定のための第1デバッグ専用カウンタ905−1、割込み禁止時間測定のための第2デバッグ専用カウンタ905−2、割込みマスクレベル以上又は割込みマスクレベル以下で動作している時間測定のための第3デバッグ専用カウンタ905−3を含んで容易に構成することができる。
上記第1デバッグ専用カウンタ905−1において、カウンタ制御論理111は、比較器902から出力される特権モード遷移イベント信号に基づいてカウント開始信号及びカウント停止信号を形成する。つまり、特権モード遷移イベント信号がアサートされたタイミングに同期してカウント開始信号をアサートし、特権モード遷移イベント信号がネゲートされたタイミングに同期してカウント停止信号をアサートする。カウント開始信号がアサートされてからカウント停止信号がアサートされるまでの期間にカウンタ113でクロック信号のカウント動作が行われる。これにより、特権モード時間の測定が可能になる。
上記第2デバッグ専用カウンタ905−2において、カウンタ制御論理121は、比較器902から出力される割込みブロック信号に基づいてカウント開始信号及びカウント停止信号を形成する。つまり、割込みブロック信号がアサートされたタイミングに同期してカウント開始信号をアサートし、割込みブロック信号がネゲートされたタイミングに同期してカウント停止信号をアサートする。カウント開始信号がアサートされてからカウント停止信号がアサートされるまでの期間にカウンタ123でクロック信号のカウント動作が行われる。これにより、割込み禁止時間の測定が可能になる。
上記第3デバッグ専用カウンタ905−3において、カウンタ制御論理131は、比較器902から出力される割込みマスクレベルオーバー信号又は割込みマスクレベルアンダー信号に基づいてカウント開始信号及びカウント停止信号を形成する。例えば指定された割込みマスクレベル以上で動作している時間を測定する場合には、割込みマスクレベルオーバー信号がアサートされたタイミングに同期してカウント開始信号をアサートし、割込みブロック信号がネゲートされたタイミングに同期してカウント停止信号をアサートする。また、指定された割込みマスクレベル以下で動作している時間を測定する場合には、割込みマスクレベルアンダー信号がアサートされたタイミングに同期してカウント開始信号をアサートし、割込みブロック信号がネゲートされたタイミングに同期してカウント停止信号をアサートする。カウント開始信号がアサートされてからカウント停止信号がアサートされるまでの期間にカウンタ133でクロック信号のカウント動作が行われる。CPUの機能としては完全な割込み禁止よりも、マスクレベルによる割込み制御が一般的である。このため、指定された割込みマスクレベル以上で動作している時間や、指定された割込みマスクレベル以下で動作している時間を測定することにより、割込み競合発生時に所望の割込みが実行されるまでの待ち時間が許容範囲内であるか否かを判定することができる。
(5)ホストシステム11においては、タスク遷移グラフ161−1やパフォーマンス解析グラフ161−2が表示される。このようなグラフ表示において、ユーザは改善したいタスクを指示して、ユーザプログラムのコンパイルを再実行することができる。また、表示グラフ上からユーザタスクに不都合の原因が無いと判断した場合には、OSやミドルウェア、割込みハンドラなどを改善すれば良いことが分かる。
次に、本発明にかかるソフトウェア開発支援装置10における主要部の別の構成例について説明する。
一般にデバッグ用ソフトウェアには、レジスタウインドウや、メモリウインドウなどの表示機能がある。この機能は、CPUコアにおけるレジスタ状態(演算結果、変数値)やメモリの状態(スタック情報、演算データなど)を確認するために用いられる。
図19にはレジスタウインドウの表示例が示される。このようなレジスタウインドウは、ブレークによりユーザプログラムの実行が中断された場合にのみ、ファームウェアによる読み出しが行われることで表示内容の更新が可能とされる。換言すれば、レジスタウインドウの表示内容の更新を行うには、ブレークによりユーザプログラムの実行を中断しなければならない。
そこで、ユーザプログラムの実行を停止しないで、CPUコア内のレジスタ情報の収集を行うには、以下のように構成すれば良い。
図20には、マイクロコンピュータ14における主要部の別の構成例が示される。
マイクロコンピュータ14は、CPUコア31とレジスタバンク201とを含む。CPUコア31は、図3に示されるのと同様にCPU制御部301、レジスタファイル302、CPU演算部303を含む。レジスタファイル302は、例えば図2に示されるように、汎用レジスタ群201、コントロールレジスタ202、システムレジスタ203を含む。上記レジスタバンク201は、FILO(First In Last Out)メモリとされ、レジスタバンク201の保持情報を退避するために、汎用レジスタ退避エリア201−1、コントロールレジスタ退避エリア201−2、システムレジスタ退避エリア201−3が設けられる。レジスタファイル302とレジスタバンク201とは、レジスタバンク専用インタフェース202によって結合される。そこでこのレジスタバンク専用インタフェース202にデバッグ専用バス203を結合し、このデバッグ専用バス203を介して、レジスタファイル302の保持内容をデバッグ回路33に取り込むようにする。レジスタファイル302の保持内容をデバッグ専用バス203へ出力する条件として、割込み又は例外処理の発生以外に、レジスタバンク操作命令の実行、サブルーチン分岐などの命令実行、デバッグ回路33からの出力要求を挙げることができる。このようにすれば、レジスタファイル302の保持内容をデバッグ回路33に取り込むのにアドレスバスABUSやデータバスDBUSとは別の専用バス203を用いることにより、ユーザプログラムの実行を停止しないで、CPUコア31内のレジスタ情報の収集を行うことができる。
図21には、マイクロコンピュータ14における主要部の別の構成例が示される。
図21に示される構成が、図20に示されるのと大きく相違するのは、レジスタバンク専用インタフェース202とは別のポートにデバッグ専用バス203を接続している点である。このようにしても、図20に示される場合と同様の作用効果を奏する。また、図21に示される構成では、レジスタバンクを201をバッファとして活用することができるので、図20に示される構成に比べて、CPUコア31側の論理実装を少なくすることができる。レジスタバンク201は、製品毎に仕様がカスタマイズされるため、効率良く機能拡張を行うことができる。
図22には、マイクロコンピュータ14における主要部の別の構成例が示される。
図22に示される構成では、レジスタバンク201が設けられていない。この場合、レジスタファイル302にデバッグ専用バス203が直接結合される。レジスタファイル302に、レジスタバンクとの結合用のデータパス論理がある場合には、それを利用してデバッグ専用バス203を結合することができる。そのようなデータパス論理が存在しない場合には、デバッグ専用バス203との接続のためのデータパス論理をレジスタファイル302に設け、そのデータパス論理を介してデバッグ専用バス203を接続する。このようにしても、図20等に示される場合と同様の作用効果を奏する。
図23には、マイクロコンピュータ14における主要部の別の構成例が示される。
図20乃至図22に示される構成によりデバッグ回路33に取り込まれたレジスタ情報をエミュレータ12に出力するには、デバッグ回路33を次のように構成すると良い。
すなわち、図23に示されるように、デバッグ回路33内に、AUD(Advanced User Debugger)機能などの高速トレース出力インタフェース(I/F)231や、JTAG(Joint Test Action Group)インタフェースに含まれるDMA(Direct Memory Access)機能部232を設ける。AUD機能などの高速トレース出力インタフェース231を利用する場合、トレース入力部907を介して取り込まれたレジスタ情報を、高速、且つ、可能な限り実時間に近い状態で、エミュレータ12に送出することができる。このため、レジスタウインドウの更新頻度を高めることができる。
これに対して、JTAGインタフェースに含まれるDMA機能部232を利用する場合には、トレース入力部907を介して取り込まれたレジスタ情報をトレースメモリ909に書き込む必要がある。上記DMA機能部232は、上記トレースメモリ909の記憶情報をDMA機能によりエミュレータ12に送出する。
上記のようにエミュレータ12に伝達されたレジスタ情報は、ホストシステム11に伝達され、レジスタウインドウの更新に利用される。
また、実行トレースメモリとヒストリ機能の能力が高いデバッグシステムの場合、現在の停止位置から順に遡って逆実行(ステップ・バック実行)することができる。上記のようにエミュレータ12に伝達されたレジスタ情報は、デバッガの逆実行に利用することができる。つまり、上記のようにエミュレータ12に伝達されたレジスタ情報は、実デバイスから得た情報であるため、それをホストシステム11に提供することにより、デバッガにおける逆実行の円滑化を図ることができる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
10 ソフトウェア開発支援装置
11 ホストシステム
12 エミュレータ
13 顧客システム
14 マイクロコンピュータ
31 CPUコア
32 パイプライン同期化回路
33 デバッグ回路
35 専用パス
301 CPU制御部
302 レジスタファイル
303 CPU演算部
901 SR比較条件設定部
902 比較器
903 トレース機能用タイマ
904 LSI/CPU制御論理
905 デバッグ専用カウンタ
905−1 第1デバッグ専用カウンタ
905−2 第2デバッグ専用カウンタ
905−3 第3デバッグ専用カウンタ
906 トレース回路
907 トレース入力部
908 トレース出力部
909 トレースメモリ
111,121,131 カウンタ制御論理
112,122,132 制御レジスタ
113,123,133 カウンタ
114,124,134 カウンタクロック制御回路
151〜156 フリップフロップ回路
161 表示画面
161−1 タスク遷移グラフ
161−2 パフォーマンス解析グラフ

Claims (15)

  1. プログラムを実行可能なCPUと、
    上記CPUで実行されるプログラムのデバッグを支援するためのデバッグ回路とを備え、
    上記CPUは、上記CPUの状態を示すステータスレジスタと、
    上記CPUで実行される命令の格納アドレスを保持するプログラムカウンタとを含んで成る半導体装置であって、
    上記CPU内のレジスタ情報を取得するための専用パスを含み、
    上記専用パスは、上記ステータスレジスタが更新された場合の当該更新に対応する上記プログラムカウンタの値を、上記ステータスレジスタが次に更新される前に取得し、取得されたプログラムカウンタ値と、それに対応するステータスレジスタ値とをセットにして上記デバッグ回路に伝達するための論理回路を含むことを特徴とする半導体装置。
  2. 上記論理回路は、それぞれ上記CPUの内部クロック信号に同期して信号を取り込むための複数のフリップフロップ回路を含んで成るフリップフロップ回路群を有する請求項1記載の半導体装置。
  3. 上記CPUは、パイプラインによるプログラム実行が可能とされ、
    上記フリップフロップ回路群は、上記ステータスレジスタの値が更新されるステージで新たなステータスレジスタ値を取り込む第1フリップフロップ回路と、
    上記プログラムカウンタが更新されるステージで新たなプログラムカウンタ値を取り込む第2フリップフロップ回路と、
    上記プログラムカウンタが更新されるステージで上記第1フリップフロップ回路の出力値を取り込む第3フリップフロップ回路と、
    上記第2フリップフロップ回路の出力値と、上記第3フリップフロップ回路の出力値とを合成して上記デバッグ回路に出力するための第4フリップフロップ回路と、を含む請求項2記載の半導体装置。
  4. 上記フリップフロップ回路群は、更に、上記第1フリップフロップ回路の動作に同期してステータスレジスタ値の更新を通知するためのステータスレジスタ更新通知信号を取り込む第5フリップフロップ回路と、
    上記第4フリップフロップ回路の動作に同期して上記第5フリップフロップ回路の出力値を取り込む第6フリップフロップ回路と、を含み、
    上記デバッグ回路は、上記第6フリップフロップ回路の出力値に基づいて、上記第4フリップフロップ回路の出力値を取り込む請求項3記載の半導体装置。
  5. 上記第5フリップフロップ回路の出力信号は、上記デバッグ回路において、上記第4フリップフロップ回路の出力値を取り込むための準備信号として上記デバッグ回路に取り込まれる請求項4記載の半導体装置。
  6. 上記デバッグ回路は、上記第4フリップフロップ回路の出力信号を上記ステータスレジスタ値の変化タイミングに同期してトレースするトレース回路を含む請求項5記載の半導体装置。
  7. 上記デバッグ回路は、上記ステータスレジスタ値と予め設定された比較値とを比較することで、条件一致イベント信号を形成する比較器を含む請求項6記載の半導体装置。
  8. 上記条件一致イベント信号には、ユーザモードから特権モードへの遷移を示す特権モード遷移イベント信号が含まれ、
    上記デバッグ回路は、上記特権モード遷移イベント信号がアサートされてからネゲートされるまでの時間を測定する第1デバッグ専用カウンタを含む請求項7記載の半導体装置。
  9. 上記条件一致イベント信号には、割込みのブロック状態を示す割込みブロック信号が含まれ、
    上記デバッグ回路は、上記割込みブロック信号がアサートされてからネゲートされるまでの時間を測定する第2デバッグ専用カウンタを含む請求項8記載の半導体装置。
  10. 上記条件一致イベント信号には、指定されたマスクレベル以上で動作していることを示す割込みマスクレベルオーバー信号、及び指定されたマスクレベル以下で動作していることを示す割込みマスクレベルアンダー信号が含まれ、
    上記デバッグ回路は、指定されたマスクレベル以上で動作している時間と、指定されたマスクレベル以下で動作している時間とを測定する第3デバッグ専用カウンタを含む請求項9記載の半導体装置。
  11. 上記CPUは、上記ステータスレジスタ、上記プログラムカウンタ、及びその他のレジスタを含んで成るレジスタファイルと、
    上記レジスタファイルの保持情報を退避可能なレジスタバンクと、
    上記レジスタファイルと上記レジスタバンクとの間で信号のやり取りを行うレジスタバンク専用インタフェースと、
    上記レジスタバンク専用インタフェースに結合され、上記レジスタバンク専用インタフェースを介して上記レジスタファイルの保持情報を上記デバッグ回路に伝達するためのデバッグ専用バスと、を含む請求項10記載の半導体装置。
  12. 上記CPUは、上記ステータスレジスタ、上記プログラムカウンタ、及びその他のレジスタを含んで成るレジスタファイルと、
    上記レジスタファイルの保持情報を退避可能なレジスタバンクと、
    上記レジスタバンクに結合され、上記レジスタバンクの保持情報を上記デバッグ回路に伝達するためのデバッグ専用バスと、を含む請求項10記載の半導体装置。
  13. 上記CPUは、上記ステータスレジスタ、上記プログラムカウンタ、及びその他のレジスタを含んで成るレジスタファイルと、
    上記レジスタファイルに結合され、上記レジスタファイルの保持情報を上記デバッグ回路に伝達するためのデバッグ専用バスと、を含む請求項10記載の半導体装置。
  14. 請求項10記載の半導体装置と、
    上記半導体装置に結合され、上記デバッグ回路の出力情報を取り込むエミュレータと、
    上記エミュレータに結合されたホストシステムと、を含み、上記半導体装置で動作するソフトウェアの開発を支援するソフトウェア開発支援装置。
  15. 上記ホストシステムは、上記デバッグ回路の出力情報を解析する解析部と、
    上記解析部での解析結果を可視化するための表示装置と、を含み、
    上記表示装置は、上記解析部での解析結果に基づいて、上記半導体装置におけるオペレーティングシステムの占有率情報及び割込み処理時間情報を、ユーザタスク処理時間情報と区別して表示する請求項14記載のソフトウェア開発支援装置。
JP2009170106A 2009-07-21 2009-07-21 半導体装置及びソフトウェア開発支援装置 Withdrawn JP2011028308A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009170106A JP2011028308A (ja) 2009-07-21 2009-07-21 半導体装置及びソフトウェア開発支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009170106A JP2011028308A (ja) 2009-07-21 2009-07-21 半導体装置及びソフトウェア開発支援装置

Publications (1)

Publication Number Publication Date
JP2011028308A true JP2011028308A (ja) 2011-02-10

Family

ID=43637025

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009170106A Withdrawn JP2011028308A (ja) 2009-07-21 2009-07-21 半導体装置及びソフトウェア開発支援装置

Country Status (1)

Country Link
JP (1) JP2011028308A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014507710A (ja) * 2011-01-13 2014-03-27 アーム・リミテッド 処理装置、トレースユニット、および診断装置
US10761969B2 (en) 2017-10-19 2020-09-01 Samsung Electronics Co., Ltd. Nonvolatile memory device and operation method thereof
US11256605B2 (en) 2017-10-19 2022-02-22 Samsung Electronics Co., Ltd. Nonvolatile memory device

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014507710A (ja) * 2011-01-13 2014-03-27 アーム・リミテッド 処理装置、トレースユニット、および診断装置
US10379989B2 (en) 2011-01-13 2019-08-13 Arm Limited Processing apparatus, trace unit and diagnostic apparatus
US10761969B2 (en) 2017-10-19 2020-09-01 Samsung Electronics Co., Ltd. Nonvolatile memory device and operation method thereof
US11256605B2 (en) 2017-10-19 2022-02-22 Samsung Electronics Co., Ltd. Nonvolatile memory device

Similar Documents

Publication Publication Date Title
US6145122A (en) Development interface for a data processor
EP2787444B1 (en) Central processing unit, information processing apparatus, and intra-virtual-core register value acquisition method
CN107077409B (zh) 用于在电子系统中进行多接口调试的方法和装置
JP4475734B2 (ja) データ処理装置及びデータ処理方法
US7644310B2 (en) Semiconductor IC incorporating a co-debugging function and test system
US8527812B2 (en) Information processing device
US6378064B1 (en) Microcomputer
US8495344B2 (en) Simultaneous execution resumption of multiple processor cores after core state information dump to facilitate debugging via multi-core processor simulator using the state information
US9678150B2 (en) Methods and circuits for debugging circuit designs
US20110239196A1 (en) Micro-Task Pipeline Visualization
US20140053036A1 (en) Debugging multiple exclusive sequences using dsm context switches
EP0942373A1 (en) Adapter device with a local memory and method for processor emulation
US6760864B2 (en) Data processing system with on-chip FIFO for storing debug information and method therefor
JP2011028308A (ja) 半導体装置及びソフトウェア開発支援装置
WO2008156944A1 (en) Exception-based timer control
JP2007141200A (ja) データ処理装置
JP2005222446A (ja) オンボードデバッグ装置および半導体回路装置
JP2006185365A (ja) 半導体装置およびデバッグ方法
JP2001084161A (ja) データ処理装置
JP2010231818A (ja) デバッグシステム
JP2013105388A (ja) 割り込み回路及び割り込み方法
JP2009193604A (ja) 半導体情報処理装置
JP2001084158A (ja) マイクロプロセッサ及びエミュレーションシステム
JP2007264822A (ja) マイクロプロセッサシステム
Stollon et al. An On-Chip Debug System

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20121002