(57)【要約】【課題】デバッグ作業においてブレーク時点における共有メモリの内容を確実に知ることができるようにする。【解決手段】本発明の一態様としてのマイクロプロセッサは、他の装置との間で共有メモリを共有するマイクロプロセッサであって、ＣＰＵと、デバッグサポートユニットと、デバッグ用メモリと、前記ＣＰＵまたは前記他の装置による前記共有メモリへの書き込みが発生した場合は、前記共有メモリへの書き込み内容と同一内容のデータを、前記共有メモリの書き込みアドレスに対応する前記デバッグ用メモリのアドレスへ書き込み、また、前記デバッグサポートユニットから前記ＣＰＵにブレーク命令が発行された場合は前記ＣＰＵにブレーク解除命令が発行されるまで前記デバッグ用メモリへの前記書き込みを停止する、デバッグ用メモリ制御装置と、を備える。【選択図】図１
2007213131.tif 000002
【特許請求の範囲】
【請求項１】
他の装置との間で共有メモリを共有するマイクロプロセッサであって、
ＣＰＵと、
デバッグサポートユニットと、
デバッグ用メモリと、
前記ＣＰＵまたは前記他の装置による前記共有メモリへの書き込みが発生した場合は、前記共有メモリへの書き込み内容と同一内容のデータを、前記共有メモリの書き込みアドレスに対応する前記デバッグ用メモリのアドレスへ書き込み、また、前記デバッグサポートユニットから前記ＣＰＵにブレーク命令が発行された場合は前記ＣＰＵにブレーク解除命令が発行されるまで前記デバッグ用メモリへの前記書き込みを停止する、デバッグ用メモリ制御装置と、
を備えたマイクロプロセッサ。
【請求項２】
前記デバッグ用メモリへの書き込みを行うべき前記共有メモリのアドレス範囲を表すアドレスレジスタをさらに備え、
前記デバッグ用メモリ制御装置は、前記共有メモリへの書き込みアドレスが前記アドレスレジスタに表されるアドレス範囲に含まれる場合は前記書き込みを行うことを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項３】
前記デバッグ用メモリ制御装置は、前記デバッグ用メモリへの前記書き込みを停止している間に前記共有メモリへの書き込みが発生した場合は、前記ブレーク解除命令が発行された後、前記共有メモリ内のデータを前記デバッグ用メモリへコピーすることを特徴とする請求項１または２に記載のマイクロプロセッサ。
【請求項４】
前記デバッグ用メモリ制御装置は、前記共有メモリへの書き込みを制御するメモリ制御装置に対し、前記コピーを行っている間前記共有メモリへの書き込みを行わないよう指示する信号を送出し、前記コピーが終了したら、前記共有メモリへの書き込みを許可する信号を前記メモリ制御装置に送出することを特徴とする請求項３に記載のマイクロプロセッサ。
【請求項５】
複数のメモリアクセス装置と、
共有メモリと、
各前記メモリアクセス装置から前記共有メモリへのアクセスを制御するメモリ制御装置と、を備え、
少なくとも１つの前記メモリアクセス装置は、
ＣＰＵと、
デバッグサポートユニットと、
デバッグ用メモリと、
前記ＣＰＵまたは他の前記メモリアクセス装置による前記共有メモリへの書き込みが発生した場合は、前記共有メモリへの書き込み内容と同一内容のデータを、前記共有メモリの書き込みアドレスに対応する前記デバッグ用メモリのアドレスへ書き込み、また、前記デバッグサポートユニットから前記ＣＰＵにブレーク命令が発行された場合は前記ＣＰＵにブレーク解除命令が発行されるまで前記デバッグ用メモリへの前記書き込みを停止する、デバッグ用メモリ制御装置と、を有する、
ことを特徴とするメモリアクセスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムなどの共有メモリをもつシステムに用いられるマイクロプロセッサ、およびメモリアクセスシステムに関する。
【背景技術】
【０００２】
共有メモリをもつシステムとして、マルチプロセッサシステムがある。マルチプロセッサシステムは、例えば複数のマイクロプロセッサと、共有メモリと、各マイクロプロセッサ用のメモリと、共有メモリおよび各メモリへのアクセスを制御するメモリ制御装置とを備える。各マイクロプロセッサは、メモリ制御装置を介して共有メモリに情報を書き込む機能と、共有メモリ内の情報を読み出す機能を有している。
【０００３】
マイクロプロセッサで実行するユーザープログラムのデバッグでは、ユーザープログラムの実行中に、特定の命令、もしくは外部機器からの特定の信号をマイクロプロセッサに入力する。これにより、マイクロプロセッサの動作モードをユーザープログラム実行モードからデバッグプログラム実行モードへと遷移させ、デバッグ方法に応じて別途用意されるデバッグプログラムを実行する。デバッグプログラムを実行することで、マイクロプロセッサにおけるＣＰＵのレジスタや、メモリ、共有メモリの内容などを見ることが可能である。
【０００４】
ここで、マルチプロセッサシステムのように、共有メモリを有するプロセッサシステムでは、デバッグ対象のマイクロプロセッサにおけるＣＰＵがブレーク命令などにより停止した時点（ブレーク時点）、あるいは、デバッグプログラム実行モードに遷移した時点（ブレーク時点）の後、動作中の他のマイクロプロセッサによって共有メモリの内容が書き換えられる可能性がある。すなわち、デバッグ対象のプロセッサは、デバッグにおいて、共有メモリの内容を読むことはできるものの、その内容は、ブレーク時点の後に他のマイクロプロセッサによって書き換えられている可能性がある。そのため、デバッグ対象のマイクロプロセッサは、ブレーク時点での共有メモリの内容を確実に知ることができるとはいえず、デバッグに不具合が生じることがある。
【特許文献１】特開平6-332747号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、デバッグ作業においてブレーク時点における共有メモリの内容を確実に知ることができるようにしたマイクロプロセッサおよびメモリアクセスシステムを提供する。
【課題を解決するための手段】
【０００６】
本発明の一態様としてのマイクロプロセッサは、他の装置との間で共有メモリを共有するマイクロプロセッサであって、ＣＰＵと、デバッグサポートユニットと、デバッグ用メモリと、前記ＣＰＵまたは前記他の装置による前記共有メモリへの書き込みが発生した場合は、前記共有メモリへの書き込み内容と同一内容のデータを、前記共有メモリの書き込みアドレスに対応する前記デバッグ用メモリのアドレスへ書き込み、また、前記デバッグサポートユニットから前記ＣＰＵにブレーク命令が発行された場合は前記ＣＰＵにブレーク解除命令が発行されるまで前記デバッグ用メモリへの前記書き込みを停止する、デバッグ用メモリ制御装置と、を備える。
【０００７】
本発明の一態様としてのメモリアクセスシステムは、複数のメモリアクセス装置と、共有メモリと、各前記メモリアクセス装置から前記共有メモリへのアクセスを制御するメモリ制御装置と、を備え、少なくとも１つの前記メモリアクセス装置は、ＣＰＵと、デバッグサポートユニットと、デバッグ用メモリと、前記ＣＰＵまたは他の前記メモリアクセス装置による前記共有メモリへの書き込みが発生した場合は、前記共有メモリへの書き込み内容と同一内容のデータを、前記共有メモリの書き込みアドレスに対応する前記デバッグ用メモリのアドレスへ書き込み、また、前記デバッグサポートユニットから前記ＣＰＵにブレーク命令が発行された場合は前記ＣＰＵにブレーク解除命令が発行されるまで前記デバッグ用メモリへの前記書き込みを停止する、デバッグ用メモリ制御装置と、を有する、ことを特徴とする。
【発明の効果】
【０００８】
本発明により、デバッグ作業においてブレーク時点における共有メモリの内容を確実に知ることができる。
【発明を実施するための最良の形態】
【０００９】
図１は、本発明の一実施の形態に従ったマイクロプロセッサ（メモリアクセス装置）１１の構成を示すブロック図である。図２は、図１のマイクロプロセッサ１１を組み込んだマルチプロセッサシステム（メモリアクセスシステム）の構成を示すブロック図である。
【００１０】
図２において、マイクロプロセッサ１２、１３は、従来から存在するマイクロプロセッサであっても本発明を適用したマイクロプロセッサでもよい。メモリアクセス装置はマイクロプロセッサに限られず、共有メモリ１６にアクセス可能なコントローラでもよい。
【００１１】
図２において、マイクロプロセッサ１１、１２、１３は同一のデータバス１４に接続され、このデータバス１４にはメモリ制御装置１５が接続されている。マイクロプロセッサ１１、１２、１３は、メモリ制御装置１５を介して各々のメモリ２１、２２、２３へアクセスする。また、マイクロプロセッサ１１、１２、１３はメモリ制御装置１５を介して共有メモリ１６へアクセスする。メモリ制御装置１５における調停回路１７は、マイクロプロセッサ１１によるコピーバック処理（後述）が行われている間、他のマイクロプロセッサから共有メモリ１６へのアクセスを一時的に阻止（ロック）する機能を有する。
【００１２】
図１において、マイクロプロセッサ１１は、ＣＰＵコア３１、デバッグ処理をサポートするＤＳＵ（Debug Support Unit）３２、読み書き可能なデバッグ用メモリ３３、デバッグ用メモリ３３を制御するデバッグ用メモリ制御装置３４、データバス１４へのインターフェース（ＩＦ：InterFace）となるデータバスＩＦ３５とを有する。
【００１３】
ＤＵＳ３２は、デバッグプログラムを保持し、デバッグ処理時にデバッカ３６から各種指示を表す指示信号を与えられ、指示信号の内容に応じた命令（例えばブレーク命令、メモリ参照命令、ブレーク解除命令など）をＣＰＵコア３１に対して発行する。
【００１４】
ＣＰＵコア３１は、ＣＰＵ４１、命令キャッシュ４２およびデータキャッシュ４３を有する。ＣＰＵ４１は、レジスタ群４４を有し、レジスタ群４４には、下限アドレスを格納する下限レジスタ５１と、上限アドレスを格納する上限レジスタ５２と、第１のビットおよび第２のビットを格納するデバッグコンフィグレジスタ５３とが含まれる。下限レジスタ５１および上限レジスタ５２はアドレスレジスタに相当する。下限レジスタ５１、上限レジスタ５２およびデバッグコンフィグレジスタ５３は、ソフトウェアによりアクセスして値を設定可能である。また、これらのレジスタ５１、５２、５３は、ＤＳＵ３２からアクセスして値を設定可能である。
【００１５】
ＣＰＵ４１はユーザープログラムや、ＤＳＵ３２から入力される命令を実行する。ＣＰＵ４１は、メモリ制御装置１５を介して共有メモリ１６へアクセスする。ＣＰＵ４１は、ユーザープログラム実行時において、共有メモリ１６への書き込みの際、共有メモリ１６の書き込みアドレスが、下限レジスタ５１内の下限アドレスと上限レジスタ５２内の上限アドレスとで規定されるアドレス範囲に含まれるか否かを確認し、書き込み先アドレスがこのアドレス範囲含まれる場合は、デバッグ用メモリ３３における対応したアドレスにも同様の内容を書き込むことをデバッグ用メモリ制御装置３４に指示する。
【００１６】
また、ＣＰＵ４１は、デバッグモード時において、ＤＵＳ３２から共有メモリ１６のアドレスに対する参照命令が入力された場合は、このアドレスが上記アドレス範囲に含まれるか否かを確認し、このアドレスが上記アドレス範囲に含まれる場合は、共有メモリ１６の代わりに、デバッグ用メモリ３３の対応するアドレスにアクセスすることをデバッグ用メモリ制御装置３４に指示する。
【００１７】
デバッグコンフィグレジスタ５３内の第１のビットは、デバッグ用メモリ制御装置３４のバス・スヌープ機能の有効・無効を設定するためのものである。第１のビットがオン（“１”）の場合、デバッグ用メモリ制御装置３４のバス・スヌープ機能が有効にされ、第１のビットがオフ（“０”）の場合はバス・スヌープ機能は無効にされる。
【００１８】
バス・スヌープ機能が有効であるときは、デバッグ用メモリ制御装置３４は、他のマイクロプロセッサの共有メモリ１６へのアクセスをデータバス１４上を流れる信号を元に監視する。デバッグ用メモリ制御装置３４は、ユーザープログラム実行モード時において、共有メモリ１６へのアクセスが書き込みであり、かつ、書き込み先アドレスが、下限アドレスおよび上限アドレスで規定されるアドレス範囲である場合は、その書き込み内容をデバッグ用メモリ３３における対応するアドレスに書き込む。ただし、デバッグモード時においては、書き込みを行わない。
【００１９】
バス・スヌープ機能が無効である場合は、他のマイクロプロセッサからの共有メモリへの書き込みはデバッグ用メモリ３３に反映されない。なお、バス・スヌープ機能が無効の場合、デバッグ用制御装置３４はＣＰＵ４１から共有メモリ１６への書き込みがあっても、共有メモリ１６への書き込み内容をデバッグ用メモリ３３に書き込まないようにしてもよい。
【００２０】
デバッグコンフィグレジスタ５３内の第２のビットは、デバッグモード時において他のプロセッサから共有メモリ１６に書き込みが行われたか否かを表す。ＣＰＵ４１にブレーク命令が入力されるなどしてＣＰＵ４１がデバッグモードに遷移している時に、他のプロセッサから共有メモリ１６への書き込みが発生した場合、ＣＰＵ４１はデバッグコンフィグレジスタ５３内の第２のビットをオン（“１”）にする。ＣＰＵ４１は、第２のビットがオンの状態において、ブレーク解除命令が入力されると、共有メモリ１６のデータをデバッグ用メモリ３３にコピーするコピーバック（COPYBACK）処理を開始する。コピーするアドレス範囲は下限アドレスと上限アドレスとで規定されたアドレス範囲である。ＣＰＵ４１は、このコピーバック処理の間、他のマイクロプロセッサから共有メモリ１６へのアクセスを一時的に阻止（ロック）することを指示する信号をメモリ制御装置１５に出力する。この信号を受けたメモリ制御装置１５における調停回路１７は、コピーバック処理が終了したことを示すコピー終了信号が入力されるまで、共有メモリ１６へのアクセスをロックする。ＣＰＵ４１は、コピーバック処理が終了したら、第２のビットをオフ（“０”）に戻し、またコピー終了信号をメモリ制御装置１５に出力する。ＣＰＵ４１がデバッグモードに遷移している時に他のプロセッサから共有メモリ１６への書き込みが発生しなかった場合（第２のビットが“０”の場合）はデバッグモードが終了してもコピーバック処理は行われない。
【００２１】
図３は、ＣＰＵ４１上で動作するユーザープログラムを一度ブレークし（デバッグモードに遷移し）、その後、ユーザープログラムを再度実行するまでの処理の流れの一例を示すタイミングチャートである。前提として、デバッグコンフィグレジスタ５３内の第１のビットはオン“１”（バス・スヌープ機能が有効）にセットされているとする。
【００２２】
時刻ｔ１において、ユーザープログラムの任意の位置で、デバッカ３６からの指示に応じてＤＵＳ３２によってブレーク命令が発行され、ＣＰＵ４１に入力されると、ＣＰＵ４１にブレークポイント例外が発生する（図３（A））。ブレークポイント例外が発生すると、ＣＰＵ４１は、デバッグ用メモリ制御装置３４に対しデバッグ用メモリ３３へのアクセスをロックすることを指示する（図３（B））。デバッグ用メモリ制御装置３４は、共有メモリ１６に対する書き込みが発生しても、デバッグ用メモリ３３への書き込みを行わない。
【００２３】
時刻ｔ１においてブレーク命令が入力された後、ブレーク解除命令（go命令）が入力される前の時刻ｔ２において、他のマイクロプロセッサから共有メモリ１６への書き込みが、発生したとする。共有メモリ１６への書き込みが発生すると、ＣＰＵ４１は、デバッグ用メモリ制御装置３４からその旨の通知を受けて、デバッグコンフィグレジスタ５３の第２のビットに“１”のフラグを立てる（図３（D））。
【００２４】
第２のビットにフラグ“１”が立っている状態において、時刻ｔ３において、ＣＰＵ４１にＤＳＵ３２からブレーク解除命令（go命令）が入力されたとする（図３（A））。ＣＰＵ４１にブレーク解除命令が入力されると、ＣＰＵ４１はメモリ制御装置１５における調停回路１７にその旨を表す信号を出力し、この信号を受けた調停回路１７は共有メモリ１６へのアクセスをロックする（図３（C））。また、この際、ＣＰＵ４１はデバッグ用メモリ３３に対するロックを解除することをデバッグ用メモリ制御装置３４に指示する（図３（B））。そしてＣＰＵ４１は、下限アドレスおよび上限アドレスにより規定される共有メモリ１６のアドレス範囲の内容をデバッグ用メモリ３３にコピーするようデバッグ用メモリ制御装置３４に指示する（図３（A））。デバッグ用メモリ制御装置３４はＣＰＵ４１の指示にしたがってコピーを実行する（コピーバック処理）。ＣＰＵ４１にブレーク解除命令が入力された際、第２のビットが“０”であった場合、すなわちデバッグモード時に他のマイクロプロセッサによる共有メモリ１６への書き込みが発生しなかった場合は、コピーバック処理は行われない（コピーバックを行わなくともデバッグ用メモリ３３の内容と共有メモリ１６の内容との同期がとれている）。
【００２５】
時刻ｔ４において、コピーバック処理が終了すると、ＣＰＵ４１はユーザープログラムの実行に戻る。ＣＰＵ４１は、デバッグコンフィグレジスタ５３の第２のビットを“０”に戻し（図３（D））、また、ＣＰＵ４１は、コピー終了の旨を表すコピー終了信号をメモリ制御装置１５に出力する。コピー終了信号を受けたメモリ制御装置１５における調停回路１７は、共有メモリ１６へのアクセスのロックを解除する（図３（C））。
【００２６】
以上のように、本実施の形態によれば、ユーザープログラム実行時においては共有メモリへの書き込み内容と同一内容をデバッグ用メモリに書き込むようにし、デバッグモード時にはデバッグ用メモリへの書き込みをロックするようにしたため、たとえデバッグモード時に共有メモリへの書き込みが発生したとしても、デバッグ用メモリを参照することによりブレーク時における共有メモリの内容を確実に知ることができる。
【００２７】
また、デバッグ用メモリへ書き込む共有メモリのアドレス範囲を、下限レジスタと上限レジスタとで規定される範囲のみとしたため、デバッグ用メモリのサイズを抑えることができる。また、デバッグ用途に応じて下限レジスタおよび上限レジスタの値を変更することで、共有メモリの必要な箇所の内容を知ることができる。
【００２８】
また、デバッグモード時に共有メモリの書き込みが発生した場合は、ブレーク解除時に、共有メモリの内容をデバッグ用メモリにコピーするようにしたため、ブレーク解除後も、共有メモリとデバッグ用メモリとの同期を維持することができる。
【００２９】
また、共有メモリの内容をデバッグメモリにコピーしている間は、共有メモリへのアクセスをロックするようにしたため、共有メモリとデバッグ用メモリとの同期の維持をより確実なものとすることができる。
【図面の簡単な説明】
【００３０】
【図１】本発明の一実施の形態に従ったマイクロプロセッサ（メモリアクセス装置）１１の構成を示すブロック図。
【図２】図１のマイクロプロセッサ１１を組み込んだマルチプロセッサシステム（メモリアクセスシステム）の構成を示すブロック図。
【図３】ＣＰＵ４１上で動作するユーザープログラムを一度ブレークし、その後、再度実行するまでの処理の流れの一例を示すタイミングチャート。
【符号の説明】
【００３１】
１１、１２、１３  マイクロプロセッサ
１４  データバス
１５  メモリ制御装置
１６  共有メモリ
１７  調停回路
２１、２２、２３  メモリ
３１  ＣＰＵコア
３２  ＤＵＳ
３３  デバッグ用メモリ
３４  デバッグ用メモリ制御装置
３５  データバスＩＦ
３６  デバッカ
４１  ＣＰＵ
４２  命令キャッシュ
４３  データキャッシュ
４４  レジスタ群
５１  下限レジスタ
５２  上限レジスタ
５３  デバッグコンフィグレジスタ
【図１】
2007213131.tif 000003
【図２】
2007213131.tif 000004
【図３】
2007213131.tif 000005