説明

デバッグ支援機構およびプロセッサシステム

【課題】 キャッシュ一貫性維持機構を搭載していないプロセッサシステムについてプログラムデバッグの容易化を実現する。
【解決手段】 デバッグ支援機構(23)は、第1マスタデバイス(20)、第2マスタデバイス(30)およびメインメモリ(50)を備えるプロセッサシステム(10)にて第1マスタデバイス(20)内に設けられ、不一致検出部(25)および停止要求発行部(26)を備える。不一致検出部(25)は、メモリアクセスの発生を契機としてキャッシュメモリ(22)のデータ不一致を検出する。停止要求発行部(26)は、不一致検出部(25)によるデータ不一致の検出に伴って中央処理装置(21)に対して停止要求を発行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キャッシュメモリを有するプロセッサを用いたプロセッサシステムについてプログラムのデバッグ作業を支援するためのデバッグ支援機構に関する。
【背景技術】
【0002】
近時、プロセッサシステムに対しては、市場からの要求により高性能および低消費電力の両立が強く求められている。このため、マルチプロセッサ構成を採用したプロセッサシステムや汎用プロセッサに加えて特定の処理に専用化されたアクセラレータを搭載したプロセッサシステムなどが広く採用されている。
【0003】
また、多くのプロセッサシステムでは、プロセッサの外部に設けられるメモリデバイスのアクセス速度が遅いことに起因して処理性能が低下するという問題がある。このため、高速にアクセス可能なキャッシュメモリをプロセッサの内部に設け、プロセッサの外部に設けられるメモリデバイスのデータのコピーをキャッシュメモリに格納する手法がよく利用されている。
【0004】
しかしながら、キャッシュメモリを有するプロセッサを含む複数のマスタデバイスがメインメモリを共通に使用するプロセッサシステムでは、プロセッサのキャッシュメモリおよびメインメモリ間でデータの一貫性が確保されないという問題(キャッシュ一貫性問題)が生じる。例えば、プロセッサのキャッシュメモリにおいてアドレスAのデータが書き換えられている場合、別のマスタデバイスによりアドレスAのデータがメインメモリから読み出されると、そのマスタデバイスにおいて誤ったデータが使用されるという問題が生じる。
【0005】
キャッシュ一貫性問題を解決する手法としては、キャッシュメモリに対するアクセスやメインメモリに対するアクセスを監視して得られる情報に基づいてキャッシュメモリを制御する手法(一般に、スヌープ方式と呼ばれる)がよく知られている。しかしながら、この手法では、メモリアクセスが発生する度に監視処理が実施されるため、消費電力が増大するという欠点がある。また、キャッシュ一貫性が確保されるまでプロセッサが待機状態になるため、処理性能が低下するという欠点もある。更に、監視装置の実現に伴って回路物量が増加するという欠点もある。
【0006】
これらの欠点は、低消費電力化の要求が強くない用途(パーソナルコンピュータやワークステーションなど)のプロセッサシステムでは問題とならないが、低消費電力化の要求が強い用途(携帯電話機やディジタルカメラなど)のプロセッサシステムでは深刻な問題となる。このため、低消費電力化の要求が強い用途のプロセッサシステムでは、キャッシュ一貫性維持機構を搭載しないのが一般的である。なお、キャッシュメモリ、キャッシュ一貫性およびスヌープ方式については、非特許文献1などに記載されているため、ここでの詳細な説明は省略している。また、キャッシュ一貫性に関連する技術については、特許文献1、2などに開示されている。
【特許文献1】特開2003−345653号公報
【特許文献2】特開平6−150032号公報
【非特許文献1】デイビッド・A・パターソン、ジョン・L・ヘネシー著、「コンピュータの構成と設計第3版」、日経BP社発行
【発明の開示】
【発明が解決しようとする課題】
【0007】
キャッシュ一貫性維持機構が搭載されていないプロセッサシステムでは、消費電力の増大、処理性能の低下あるいは回路物量の増加などの問題はないが、キャッシュ一貫性が維持されていないことに起因するプログラムのバグが発生した場合にデバッグが容易ではなく、プログラムの開発工数が増大するという問題がある。
【0008】
本発明の目的は、キャッシュ一貫性維持機構を搭載していないプロセッサシステムについてプログラムデバッグの容易化を実現することにある。
【課題を解決するための手段】
【0009】
デバッグ支援機構は、中央処理装置およびキャッシュメモリを有する第1マスタデバイスと、第2マスタデバイスと、第1マスタデバイスと第2マスタデバイスとの間で共通に使用されるメインメモリとを備えるプロセッサシステムにて第1マスタデバイス内に設けられ、不一致検出部および停止要求発行部を備える。不一致検出部は、メモリアクセスの発生を契機としてキャッシュメモリのデータ不一致を検出する。停止要求発行部は、不一致検出部によるデータ不一致の検出に伴って中央処理装置に対して停止要求を発行する。
【0010】
例えば、デバッグ支援機構は、アドレス情報格納部を更に備える。アドレス情報格納部は、不一致検出部によるデータ不一致の検出時のメモリアクセスのアドレス情報を格納する。例えば、デバッグ支援機構は、アクセス種別情報格納部を更に備える。アクセス種別情報格納部は、不一致検出部によるデータ不一致の検出時のメモリアクセスのアクセス種別情報を格納する。例えば、アクセス種別情報は、アクセス元を示す情報およびリードアクセス/ライトアクセスを示す情報を含む。例えば、デバッグ支援機構は、不一致検出制御部を更に備える。不一致検出制御部は、不一致検出部の稼働/非稼働を制御する。
【発明の効果】
【0011】
キャッシュメモリのデータ不一致が発生した時点での中央処理装置の内部状態情報(プログラムカウンタ情報など)およびメモリアクセスのアドレス情報やアクセス種別情報をプログラム開発者に対して提供することができる。このため、キャッシュ一貫性問題に起因するプログラムのバグが発生した場合にデバッグを効率よく実施することが可能になる。この結果、プログラムの開発工数を大幅に削減することができる。
【発明を実施するための最良の形態】
【0012】
以下、実施形態について図面を用いて説明する。
【0013】
図1は、第1実施形態におけるプロセッサシステムを示している。第1実施形態のプロセッサシステム10は、プロセッサ(第1マスタデバイス)20、アクセラレータ(第2マスタデバイス)30、インターコネクト40およびメインメモリ50を備えている。プロセッサ20およびアクセラレータ30は、インターコネクト40を介してメインメモリ50にリードアクセス/ライトアクセス可能である。
【0014】
プロセッサ20は、CPU(Central Processing Unit)21、キャッシュメモリ22およびデバッグ支援機構23を備えている。CPU21は、プログラムの実行により演算処理や制御処理などを実施する。キャッシュメモリ22は、メインメモリ50に比べて高速にアクセス可能なメモリであり、メインメモリ50のデータのコピーを格納するために設けられている。デバッグ支援機構23は、プログラムのデバッグ作業を支援するための機構であり、デバッグ起動レジスタ24、不一致検出部25およびブレーク要求発行部26を備えている。
【0015】
デバッグ起動レジスタ24は、CPU21からリードアクセス/ライトアクセス可能なレジスタであり、デバッグ支援機構23の有効/無効を制御するために設けられている。例えば、デバッグ起動レジスタ24は、デバッグ支援機構23を有効状態にする場合に“1”に設定され、デバッグ支援機構23を無効状態にする場合に“0”に設定される。
【0016】
不一致検出部25は、CPU21のキャッシュメモリ22に対するアクセス、キャッシュメモリ22のメインメモリ50に対するアクセスおよびアクセラレータ30のメインメモリ50に対するアクセスの発生を契機として、キャッシュメモリ22のデータ不一致(キャッシュメモリ22のデータとメインメモリ50のデータとの不一致)を検出する。不一致検出部25は、キャッシュメモリ22のデータ不一致を検出した場合、ブレーク要求発行部26に供給される不一致検出信号DETを活性化させる。
【0017】
ブレーク要求発行部26は、デバッグ起動レジスタ24が“1”に設定されている場合(デバッグ支援機構23が有効状態である場合)、不一致検出部25から供給される不一致検出信号DETの活性化に応答して、CPU21に供給されるブレーク要求信号BRKを活性化させる。デバッグ支援機構23(ブレーク要求発行部26)からCPU21へのブレーク要求信号BRKが活性化されると、CPU21によるプログラムの実行が停止される。
【0018】
このように、デバッグ支援機構23においては、キャッシュメモリ22のデータ不一致を検出した場合にCPU21に対してブレーク要求を発行するデバッグ機能が実現されている。また、図示を省略しているが、デバッグ支援機構23においては、所定アドレスへのアクセスが所定回数実施されたことを検出した場合にCPU21に対してブレーク要求を発行するデバッグ機能なども実現されている。この種のデバッグ機能は、例えば、特開昭56−58199号公報に開示されている。
【0019】
図2は、第1実施形態におけるプログラムデバッグの流れを示している。プログラム開発者は、プロセッサ20(CPU21)により実行されるプログラムの開発時に、キャッシュ一貫性問題に起因するプログラムのバグが発生したことを認識すると(ステップS11)、デバッグ支援機構23のデバッグ起動レジスタ24を“1”に設定する(ステップS12)。これにより、デバッグ支援機構23が有効状態になる(ステップS31)。この後、プログラム開発者は、開発中のプログラムを起動する(ステップS13)。これにより、CPU21によるプログラムの実行が開始される(ステップS21)。CPU21によるプログラムの実行中には、デバッグ支援機構23の不一致検出部25により、キャッシュメモリ22のデータ不一致が発生したか否かが監視される。デバッグ支援機構23の不一致検出部25は、キャッシュメモリ22のデータ不一致を検出すると、不一致検出信号DETを活性化させる(ステップS32)。これに伴って、デバッグ支援機構23のブレーク要求発行部26は、ブレーク要求信号BRKを活性化させる(ステップS33)。これにより、CPU21によるプログラムの実行が停止される(ステップS22)。そして、プログラム開発者は、CPU21の内部状態情報(プログラムカウンタ情報など)を取得してバグ原因を究明する(ステップS14)。
【0020】
以上のような第1実施形態では、キャッシュメモリ一貫性問題が発生した時点でのCPU21の内部状態情報(プログラムカウンタ情報など)をプログラム開発者に対して提供することができる。このため、キャッシュ一貫性問題に起因するプログラムのバグを効率よくデバッグすることが可能になる。この結果、プログラムの開発期間の短縮が可能になる。
【0021】
図3は、第2実施形態におけるプロセッサシステムを示している。なお、第2実施形態を説明するにあたって、第1実施形態で説明した要素と同一の要素については、第1実施形態で使用した符号と同一の符号を使用し、詳細な説明を省略する。
【0022】
第2実施形態のプロセッサシステム10aは、図1(第1実施形態)のプロセッサシステム10においてプロセッサ20をプロセッサ20aに置き換えたものである。プロセッサ20aは、図1のプロセッサ20においてデバッグ支援機構23をデバッグ支援機構23aに置き換えたものである。
【0023】
デバッグ支援機構23aは、図1のデバッグ支援機構23において不一致検出部25を不一致検出部25aに置き換えるとともにアドレスレジスタ27を追加したものである。不一致検出部25aは、図1の不一致検出部25と同様に動作するうえに、キャッシュメモリ22のデータ不一致を検出した際のメモリアクセスのアドレス情報をアドレスレジスタ27に格納する。なお、アドレスレジスタ27は、CPU21からリードアクセス/ライトアクセス可能なレジスタである。
【0024】
以上のような第2実施形態では、第1実施形態(図2)と同様にプログラムデバッグを実施可能であり、キャッシュ一貫性問題が発生した時点でのCPU21の内部状態情報(プログラムカウンタ情報など)に加えてメモリアクセスのアドレス情報をプログラム開発者に対して提供することができる。従って、プログラムデバッグの効率を更に向上させることができ、プログラムの開発期間の更なる短縮が可能になる。特に、キャッシュ一貫性問題が発生した時点でのメモリアクセスのアドレス情報を、所定アドレスへのアクセスが所定回数実施されたことを検出した場合にCPU21に対してブレーク要求を発行するデバッグ機能で利用することにより、プログラムデバッグの効率を大幅に向上させることができる。
【0025】
図4は、第3実施形態におけるプロセッサシステムを示している。なお、第3実施形態を説明するにあたって、第1および第2実施形態で説明した要素と同一の要素については、第1および第2実施形態で使用した符号と同一の符号を使用し、詳細な説明を省略する。
【0026】
第3実施形態のプロセッサシステム10bは、図3(第2実施形態)のプロセッサシステム10aにおいてプロセッサ20aをプロセッサ20bに置き換えたものである。プロセッサ20bは、図3のプロセッサ20aにおいてデバッグ支援機構23aをデバッグ支援機構23bに置き換えたものである。
【0027】
デバッグ支援機構23bは、図3のデバッグ支援機構23aにおいて不一致検出部25aを不一致検出部25bに置き換えるとともにアクセス種別レジスタ28を追加したものである。不一致検出部25bは、図3の不一致検出部25aと同様に動作するうえに、キャッシュメモリ22のデータ不一致を検出した際のメモリアクセスのアクセス種別情報(アクセス元を示す情報やリードアクセス/ライトアクセスを示す情報などを含む)をアクセス種別レジスタ28に格納する。なお、アクセス種別レジスタ28は、CPU21からリードアクセス/ライトアクセス可能なレジスタである。
【0028】
以上のような第3実施形態では、第1実施形態(図2)と同様にプログラムデバッグを実施可能であり、キャッシュ一貫性問題が発生した時点でのCPU21の内部状態情報(プログラムカウンタ情報など)およびメモリアクセスのアドレス情報に加えてメモリアクセスのアクセス種別情報をプログラム開発者に対して提供することができる。従って、プログラムデバッグの効率を更に向上させることができ、プログラムの開発期間の更なる短縮が可能になる。
【0029】
図5は、第4実施形態におけるプロセッサシステムを示している。なお、第4実施形態を説明するにあたって、第1、第2および第3実施形態で説明した要素と同一の要素については、第1、第2および第3実施形態で使用した符号と同一の符号を使用し、詳細な説明を省略する。
【0030】
第4実施形態のプロセッサシステム10cは、図4(第3実施形態)のプロセッサシステム10bにおいてプロセッサ20bをプロセッサ20cに置き換えたものである。プロセッサ20cは、図4のプロセッサ20bにおいてデバッグ支援機構23bをデバッグ支援機構23cに置き換えたものである。
【0031】
デバッグ支援機構23cは、図3のデバッグ支援機構23bにおいて不一致検出部25bを不一致検出部25cに置き換えるとともに不一致検出起動レジスタ29を追加したものである。不一致検出起動レジスタ29は、CPU21からリードアクセス/ライトアクセス可能なレジスタであり、不一致検出部25cの稼働/非稼働を制御するために設けられている。例えば、不一致検出起動レジスタ29は、不一致検出部25cを稼働状態にする場合に“1”に設定され、不一致検出部25cを非稼働状態にする場合に“0”に設定される。不一致検出部25cは、不一致検出起動レジスタ29が“1”に設定されている場合、図4の不一致検出部25bと同様に動作する。
【0032】
図6は、第4実施形態におけるプログラムデバッグの流れを示している。第4実施形態におけるプログラムデバッグの流れは、第1実施形態(図2)におけるプログラムデバッグの流れに対して、プログラム開発者がデバッグ支援機構23cの不一致検出起動レジスタ29を“1”に設定することで、デバッグ支援機構23cの不一致検出部25cが稼働状態になるという手順(ステップS12’、S31’)が追加されたものになる。
【0033】
以上のような第4実施形態では、不一致検出起動レジスタ29を介して不一致検出部25cの稼働/非稼働を制御可能であるため、プログラムデバッグ時にのみ不一致検出部25cを稼働状態にすることができる。従って、実際のシステム運用時に消費電力を抑えることが可能になる。なお、不一致検出起動レジスタ29の役割をデバッグ起動レジスタ24に持たせることも可能であるが、デバッグ支援機構23cにおいては、不一致検出部25cを用いたデバッグ機能以外のデバッグ機能も実現されているため、デバッグ起動レジスタ24とは別に不一致検出起動レジスタ29が設けられている。
【0034】
図7は、第5実施形態におけるプロセッサシステムを示している。なお、第5実施形態を説明するにあたって、第1、第2、第3および第4実施形態で説明した要素と同一の要素については、第1、第2、第3および第4実施形態で使用した符号と同一の符号を使用し、詳細な説明を省略する。
【0035】
第5実施形態のプロセッサシステム10dは、図5(第4実施形態)のプロセッサシステム10cにおいてプロセッサ20cをプロセッサ20d−1に置き換えるとともにアクセラレータ30をプロセッサ20d−2に置き換えたものである。プロセッサ20d−1、20d−2は、図5のプロセッサ20cにおいてデバッグ支援機構23cをデバッグ支援機構23dに置き換えたものである。デバッグ支援機構23dは、図5のデバッグ支援機構23cにおいて不一致検出部25cを不一致検出部25dに置き換えたものである。
【0036】
プロセッサ20d−1(20d−2)の不一致検出部25dは、プロセッサ20d−1(20d−2)の不一致検出起動レジスタ29が“1”に設定されている場合、プロセッサ20d−1(20d−2)におけるCPU21のキャッシュメモリ22に対するアクセス、プロセッサ20d−1(20d−2)におけるキャッシュメモリ22のメインメモリ50に対するアクセス、プロセッサ20d−2(20d−1)におけるCPU21のキャッシュメモリ22に対するアクセスおよびプロセッサ20d−2(20d−1)におけるキャッシュメモリ22のメインメモリ50に対するアクセスの発生を契機として、プロセッサ20d−1(20d−2)のキャッシュメモリ22のデータ不一致(プロセッサ20d−1(20d−2)のキャッシュメモリ22のデータとメインメモリ50のデータとの不一致およびプロセッサ20d−1(20d−2)のキャッシュメモリ22のデータとプロセッサ20d−2(20d−1)のキャッシュメモリ22のデータとの不一致)を検出する。プロセッサ20d−1(20d−2)の不一致検出部25dは、プロセッサ20d−1(20d−2)のキャッシュメモリ22のデータ不一致を検出した場合、プロセッサ20d−1(20d−2)のブレーク要求発行部26に供給される不一致検出信号DETを活性化させる。
【0037】
以上のような第5実施形態では、プロセッサ20d−1、20d−2を用いたマルチプロセッサ構成が採用されているが、このような場合でも、プロセッサ20d−1、20d−2にデバッグ支援機構23dが設けられることで、第1、第2、第3および第4実施形態と同様の効果が得られる。
【0038】
以上の第1〜第5実施形態に関して、更に以下の付記を開示する。
(付記1)
中央処理装置およびキャッシュメモリを有する第1マスタデバイスと、第2マスタデバイスと、前記第1マスタデバイスと前記第2マスタデバイスとの間で共通に使用されるメインメモリとを備えるプロセッサシステムにて前記第1マスタデバイス内に設けられるデバッグ支援機構であって、
メモリアクセスの発生を契機として前記キャッシュメモリのデータ不一致を検出する不一致検出部と、
前記不一致検出部によるデータ不一致の検出に伴って前記中央処理装置に対して停止要求を発行する停止要求発行部とを備えることを特徴とするデバッグ支援機構。
(付記2)
付記1に記載のデバッグ支援機構において、
前記不一致検出部によるデータ不一致の検出時のメモリアクセスのアドレス情報を格納するアドレス情報格納部を備えることを特徴とするデバッグ支援機構。
(付記3)
付記1または付記2に記載のデバッグ支援機構において、
前記不一致検出部によるデータ不一致の検出時のメモリアクセスのアクセス種別情報を格納するアクセス種別情報格納部を備えることを特徴とするデバッグ支援機構。
(付記4)
付記3に記載のデバッグ支援機構において、
前記アクセス種別情報は、アクセス元を示す情報およびリードアクセス/ライトアクセスを示す情報を含むことを特徴とするデバッグ支援機構。
(付記5)
付記1〜4のいずれか1項に記載のデバッグ支援機構において、
前記不一致検出部の稼働/非稼働を制御する不一致検出制御部を備えることを特徴とするデバッグ支援機構。
(付記6)
中央処理装置と、キャッシュメモリと、デバッグ支援機構とを有する第1マスタデバイスと、
第2マスタデバイスと、
前記第1マスタデバイスと前記第2マスタデバイスとの間で共通に使用されるメインメモリとを備え、
前記デバッグ支援機構は、
メモリアクセスの発生を契機として前記キャッシュメモリのデータ不一致を検出する不一致検出部と、
前記不一致検出部によるデータ不一致の検出に伴って前記中央処理装置に対して停止要求を発行する停止要求発行部とを備えることを特徴とするプロセッサシステム。
【0039】
以上、本発明について詳細に説明してきたが、前述の実施形態は発明の一例に過ぎず、本発明はこれらに限定されるものではない。本発明を逸脱しない範囲で変形可能であることは明らかである。
【図面の簡単な説明】
【0040】
【図1】第1実施形態におけるプロセッサシステムを示す図である。
【図2】第1実施形態におけるプログラムデバッグの流れを示す図である。
【図3】第2実施形態におけるプロセッサシステムを示す図である。
【図4】第3実施形態におけるプロセッサシステムを示す図である。
【図5】第4実施形態におけるプロセッサシステムを示す図である。
【図6】第4実施形態におけるプログラムデバッグの流れを示す図である。
【図7】第5実施形態におけるプロセッサシステムを示す図である。
【符号の説明】
【0041】
10、10a、10b、10c、10d‥プロセッサシステム;20、20a、20b、20c、20d−1、20d−2‥プロセッサ;21‥CPU;22‥キャッシュメモリ;23、23a、23b、23c、23d‥デバッグ支援機構;24‥デバッグ起動レジスタ;25、25a、25b、25c、25d‥不一致検出部;26‥ブレーク要求発行部;27‥アドレスレジスタ;28‥アクセス種別レジスタ;29‥不一致検出起動レジスタ;30‥アクセラレータ;40‥インターコネクト;50‥メインメモリ;BRK‥ブレーク要求信号;DET‥不一致検出信号

【特許請求の範囲】
【請求項1】
中央処理装置およびキャッシュメモリを有する第1マスタデバイスと、第2マスタデバイスと、前記第1マスタデバイスと前記第2マスタデバイスとの間で共通に使用されるメインメモリとを備えるプロセッサシステムにて前記第1マスタデバイス内に設けられるデバッグ支援機構であって、
メモリアクセスの発生を契機として前記キャッシュメモリのデータ不一致を検出する不一致検出部と、
前記不一致検出部によるデータ不一致の検出に伴って前記中央処理装置に対して停止要求を発行する停止要求発行部とを備えることを特徴とするデバッグ支援機構。
【請求項2】
請求項1に記載のデバッグ支援機構において、
前記不一致検出部によるデータ不一致の検出時のメモリアクセスのアドレス情報を格納するアドレス情報格納部を備えることを特徴とするデバッグ支援機構。
【請求項3】
請求項1または請求項2に記載のデバッグ支援機構において、
前記不一致検出部によるデータ不一致の検出時のメモリアクセスのアクセス種別情報を格納するアクセス種別情報格納部を備えることを特徴とするデバッグ支援機構。
【請求項4】
請求項3に記載のデバッグ支援機構において、
前記アクセス種別情報は、アクセス元を示す情報およびリードアクセス/ライトアクセスを示す情報を含むことを特徴とするデバッグ支援機構。
【請求項5】
中央処理装置と、キャッシュメモリと、デバッグ支援機構とを有する第1マスタデバイスと、
第2マスタデバイスと、
前記第1マスタデバイスと前記第2マスタデバイスとの間で共通に使用されるメインメモリとを備え、
前記デバッグ支援機構は、
メモリアクセスの発生を契機として前記キャッシュメモリのデータ不一致を検出する不一致検出部と、
前記不一致検出部によるデータ不一致の検出に伴って前記中央処理装置に対して停止要求を発行する停止要求発行部とを備えることを特徴とするプロセッサシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate