JP2007122547A - プログラム実行方法および共有メモリ型マルチコアプロセッサ - Google Patents
プログラム実行方法および共有メモリ型マルチコアプロセッサ Download PDFInfo
- Publication number
- JP2007122547A JP2007122547A JP2005315880A JP2005315880A JP2007122547A JP 2007122547 A JP2007122547 A JP 2007122547A JP 2005315880 A JP2005315880 A JP 2005315880A JP 2005315880 A JP2005315880 A JP 2005315880A JP 2007122547 A JP2007122547 A JP 2007122547A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- emulation
- program
- shared memory
- execution
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】共有メモリ型マルチコアプロセッサ上で動作するプログラムにおいて、他のコアプロセッサの命令実行を停止することなく、ソフトウェアブレークポイントからコアプロセッサのプログラム実行を開始する。
【解決手段】エミュレーション命令レジスタに被置換命令を格納するステップと、エミュレーション命令レジスタからの命令フェッチを有効にするステップと、被置換命令をステップ実行するステップと、エミュレーション命令レジスタからの命令フェッチを無効にするステップと、プログラムを実行するステップとを含む。ソフトウェアブレークポイントを解除せずに、被置換命令が設定されているエミュレーション命令レジスタから命令をフェッチしてステップ実行させて、プログラムを実行することにより、他のコアプロセッサの命令実行を停止しないので、システム全体のプログラム実行の性能が低下しない。
【選択図】図1
【解決手段】エミュレーション命令レジスタに被置換命令を格納するステップと、エミュレーション命令レジスタからの命令フェッチを有効にするステップと、被置換命令をステップ実行するステップと、エミュレーション命令レジスタからの命令フェッチを無効にするステップと、プログラムを実行するステップとを含む。ソフトウェアブレークポイントを解除せずに、被置換命令が設定されているエミュレーション命令レジスタから命令をフェッチしてステップ実行させて、プログラムを実行することにより、他のコアプロセッサの命令実行を停止しないので、システム全体のプログラム実行の性能が低下しない。
【選択図】図1
Description
本発明は、共有メモリ型マルチコアプロセッサ上で動作するプログラムのデバッグ方式において、プログラム実行方法および共有メモリ型マルチコアプロセッサに関する。
共有メモリ型マルチコアプロセッサにおけるデバッグ方式で、コアプロセッサがソフトウェアブレークポイントからプログラム実行を開始する方法については、様々な方法が提案されている。例えば図2は特許文献1に見られるプログラム実行方法である。この方法では、実行を開始するコアプロセッサに一時的に共有メモリを独占的に占有させてから(S10)、ソフトウェアブレークポイントを一時解除して(S11)、被置換命令をステップ実行し(S12)、ソフトウェアブレークポイントを再度設定して(S13)、共有メモリを開放して(S14)、プログラムを実行する(S15)。また、S10の代わりに他のコアプロセッサの動作を停止させて、ソフトウェアブレークポイントを一時解除して、被置換命令をステップ実行した後に、S14の代わりに他のコアプロセッサの動作を再開させて、プログラムを実行する方法もある。
このような従来方法によれば、ソフトウェアブレークポイントを一時解除して被置換命令をステップ実行している間に、他のコアプロセッサの命令実行が停止させられるので、ソフトウェアブレークポイントを一時解除している間に、他のコアプロセッサがソフトウェアブレークポイントを通過してしまう問題が発生しない。
特開平5−324393号公報
しかしながら、これらの方法では、コアプロセッサに一時的に共有メモリを独占的に占有させるため、他のコアプロセッサの命令実行が一時的に停止させられ、システム全体のプログラム実行の性能が低下することになる。
したがって、本発明の目的は、共有メモリ型マルチコアプロセッサ上で動作するプログラムにおいて、ソフトウェアブレークポイントを一時解除して被置換命令をステップ実行するときに、他のコアプロセッサの命令実行を停止すると、システム全体のプログラム実行の性能が低下するため、他のコアプロセッサの命令実行を停止することなく、ソフトウェアブレークポイントからコアプロセッサのプログラム実行を開始するプログラム実行方法および共有メモリ型マルチコアプロセッサを提供することである。
上記課題を解決するために、本発明の請求項1記載のプログラム実行方法は、エミュレーション命令レジスタからの命令フェッチか共有メモリからの命令フェッチかを切替える手段を備える共有メモリ型マルチコアプロセッサにおいて、前記マルチコアプロセッサ上で動作し、実行開始アドレスにソフトウェアブレークポイントが設定されているプログラムをデバッグする際、前記エミュレーション命令レジスタに被置換命令を格納するステップと、前記エミュレーション命令レジスタからの命令フェッチを有効にするステップと、前記命令フェッチを有効にした後前記被置換命令をステップ実行するステップと、前記エミュレーション命令レジスタからの命令フェッチを無効にするステップと、前記命令フェッチを無効にした後プログラムを実行するステップとを含む。
このように構成することで、デバッグする際に共有メモリ上の命令ではなく、エミュレーション命令レジスタにある被置換命令がステップ実行されるので、共有メモリ上に設定してあるソフトウェアブレークポイントを一時的に解除する必要がなくなる。
このため、従来のプログラム実行方法で用いられていた共有メモリのコアプロセッサによる独占的な利用が不要となり、他のコアプロセッサの命令実行が一時的に停止させられることがないので、システム全体のプログラム実行の性能が低下しない。
請求項2記載のプログラム実行方法は、請求項1記載のプログラム実行方法において、前記エミュレーション命令レジスタからの命令フェッチを有効または無効にするステップは、命令のステップ実行を制御するステップ実行制御ビットの値に応じて命令フェッチの有効または無効を設定する。
このように構成することで、ステップ実行を有効に設定すると同時に、エミュレーション命令レジスタからの命令フェッチを有効にすることができる。このため、命令フェッチの構成を簡略化することが可能となる。
請求項3記載の共有メモリ型マルチメモリプロセッサは、ソフトウェアブレークポイントからプログラム実行を開始可能とした複数のコアプロセッサと、前記コアプロセッサで共有される共有メモリとを備えた共有メモリ型マルチコアプロセッサであって、被置換命令を格納するエミュレーション命令レジスタと、前記共有メモリからの命令および前記エミュレーション命令レジスタからの命令をフェッチするデバッガと、命令のステップ実行を制御するステップ実行制御ビットと、前記ステップ実行制御ビットの値に応じて、命令フェッチ先として前記共有メモリか前記エミュレーション命令レジスタのいずれかを選択する命令フェッチ部とを備えた。
このように構成することで、請求項1と同様の効果が得られるとともに、ステップ実行を有効に設定すると同時に、エミュレーション命令レジスタからの命令フェッチを有効にすることができる。このため、パイプラインの命令フェッチ部を簡略化することが可能となる。
本発明によれば、共有メモリ型マルチコアプロセッサ上で動作するプログラムをデバッグする際に、ソフトウェアブレークポイントを一時解除することなく、ソフトウェアブレークポイントからプログラムを実行開始することができる。このことにより、ソフトウェアブレークポイントを一時解除することで他のコアプロセッサがソフトウェアブレークポイントを通過してしまう問題が発生しない。
さらに、ソフトウェアブレークポイントからステップ実行する間も、他のコアプロセッサの実行停止や共有メモリの独占的使用を行わないので、その間に他のコアプロセッサがプログラムを実行でき、システム全体のプログラム実行の性能が低下しない。
また本発明によれば、共有メモリ型マルチコアプロセッサの各コアプロセッサは、命令フェッチ先として共有メモリかエミュレーション命令レジスタのいずれかを選択する制御を、ステップ実行の制御ビットで行うため、パイプラインの命令フェッチ部を簡略化することが可能となる。
本発明の実施形態について図面を参照して詳細に説明する。
図2は、本発明の実施形態のプログラム実行方法を適用する共有メモリ型マルチコアプロセッサの構成図である。図2に示すように、複数個のコアプロセッサ22,23と、これらのコアプロセッサで共有される共有メモリ1と、共有メモリ1とコアプロセッサ22,23をつなぐシステムバス2とで構成されている。
コアプロセッサ22,23は、命令をエミュレーションするためのエミュレーション命令レジスタ5,6と、デバッグ制御11,12と、パイプラインユニット13,14とから構成され、パイプラインユニット13,14は、命令フェッチ部15,16と、プログラムカウンタ17,18と、ステップ実行を制御するステップ実行制御ビット19,20とから構成される。
デバッガ21は、コアプロセッサ22,23に内蔵されているデバッグ制御11,12と通信することで、コアプロセッサ22,23にあるエミュレーション命令レジスタ5,6への命令の格納を行うことができ、さらにパイプラインユニット13,14を制御して、ステップ実行や、プログラムの実行を行うことができる。
図4は、本発明の実施形態を適用した命令フェッチ部15,16の論理回路図である。
図4に示すように、マルチプレクサ回路63は、エミュレーション命令レジスタ60に格納されている命令とプログラムカウンタが指している共有メモリ61の命令を入力として、ステップ実行制御ビット62のスイッチによって出力を切替えている。スイッチが1の場合はエミュレーション命令レジスタ60の命令を出力し、スイッチが0の場合は共有メモリ61の命令を出力する。
次に本発明の実施形態を適用したパイプラインユニット13,14の命令実行を、図3のフローを使って説明する。
図3に示すように、パイプラインユニット13,14は、ステップ実行制御ビット19,20がセットされているかを判断し(S40)、セットされていない場合は、共有メモリから命令をフェッチする(S42)。パイプラインユニット13,14はステップ実行制御ビット19,20がセットされている場合はエミュレーション命令レジスタ5,6から命令をフェッチする(S41)。
そしてパイプラインユニット13,14は、フェッチした命令を実行し(S43)、ステップ実行制御ビット19,20がセットされているかを判断する(S44)。ステップ実行制御ビットがセットされていない場合、パイプラインユニット13,14はプログラムカウンタをインクリメントした後に(S45)、再度ステップ実行制御ビット19,20がセットされているかを判断する(S40)。ステップ実行制御ビット19,20がセットされている場合、パイプラインユニット13,14はステップ実行の制御ビットをクリアした後(S46)、プログラムをステップ実行の例外ハンドラへ分岐させる(S47)。
通常は、ステップ実行の例外ハンドラにデバッガと通信するデバッグ用のプログラムを準備することで、ステップ実行後のデバッガによる制御が可能となる。一般的に、デバッグ用のプログラムは、図5に示されているフローをステップ実行の例外ハンドラで処理する。デバッグ用のプログラムは、ステップ実行の例外ハンドラへ分岐後、デバッガとの通信待ち状態になる(S50)。デバッグ用のプログラムはデバッガからステップ実行の開始コマンドを受け取ると(S51)、ステップ実行の制御ビットをセットし(S52)、元のプログラムへ復帰する(S53)。
そして、図7のフローに従って元のプログラムの命令、及びエミュレーション命令レジスタの命令を実行すると、再びステップ実行の例外ハンドラへ分岐し、デバッガとの通信待ち状態になる。
以上のような共有メモリ型マルチコアプロセッサ上で動作するプログラムにおいて、ソフトウェアブレークポイントから、ソフトウェアブレークポイントを解除しないで、プログラムの実行を開始する方法を説明する。
図1は本発明の実施形態における、ソフトウェアブレークポイントからプログラムを実行させるときの、デバッガ21の制御に関するフローである。通常、デバッガ21はソフトウェアブレークポイントを設定するときに、ソフトウェアブレークポイントの被置換命令とソフトウェアブレークポイントのアドレスを保持している。
図1および図2に示すように、コアプロセッサ22,23がソフトウェアブレークポイントからプログラムの実行を開始する場合、デバッガ21は、デバッグ制御部11,12を介して保持していた被置換命令を、エミュレーション命令レジスタ5,6に設定する(S1)。
次にデバッガ21は、エミュレーション命令レジスタ5,6からの命令フェッチを有効に設定する(S2)。本実施形態では、ステップ実行制御ビット19,20を設定することでエミュレーション命令レジスタ5,6からの命令フェッチが有効になる。
次にデバッガ21は、コアプロセッサ22,23にステップ実行させることでエミュレーション命令レジスタ5,6に設定した被置換命令が実行される(S3)。
次にデバッガ21は、エミュレーション命令レジスタ5,6からの命令フェッチを無効に設定する(S4)。本実施形態では、ステップ実行時に、コアプロセッサ22,23がステップ実行制御ビット19,20をクリアする。
最後に、デバッガ21は、コアプロセッサ22,23に命令実行を開始させる(S5)。
以上のステップにより、共有メモリ1に設定してあるソフトウェアブレークポイントを解除することなく、ソフトウェアブレークポイントからプログラムの実行を開始することができる。
次に、以下で本発明の実施の形態におけるコアプロセッサ22,23が解決する課題について、他の実施形態のコアプロセッサの構成と比較しながら説明する。
図6は、エミュレーション命令レジスタから命令をフェッチする手段を備える他の実施形態のコアプロセッサからなる共有メモリ型マルチコアプロセッサの構成図である。
図2の本発明の実施形態における構成に加えて、コアプロセッサ3,4は、エミュレーションするアドレスを格納するエミュレーションアドレスレジスタ7,8と、エミュレーションを制御するエミュレーション制御ビット9,10とを備えている。
図9は、他の実施形態のコアプロセッサ3,4における命令フェッチ部15,16の論理回路図である。
図9に示すように、論理回路52はプログラムカウンタ50の値とエミュレーションアドレスレジスタ51の値を入力として論理積を出力し、論理回路54は論理回路52の出力とエミュレーション制御ビット53を入力として論理積をマルチプレクサ回路57のスイッチとして入力する。
マルチプレクサ回路57は、エミュレーション命令レジスタ55に格納されている命令とプログラムカウンタが指している共有メモリ56の命令を入力として、スイッチによって出力を切替えている。スイッチが1の場合はエミュレーション命令レジスタ55の命令を出力し、スイッチが0の場合は共有メモリ56の命令を出力する。
よって、プログラムカウンタ50の値とエミュレーションアドレスレジスタ51の値が一致して、エミュレーション制御ビット53がセットされていると、マルチプレクサ回路57のスイッチは1になり、エミュレーション命令レジスタ55に格納されている命令が実行されることになる。プログラムカウンタ50の値とエミュレーションアドレスレジスタ51の値が一致しない場合や、エミュレーション制御ビット53がクリアされている場合は、共有メモリ56の命令が実行される。
次に他の実施形態のコアプロセッサ3,4におけるパイプラインユニット13,14の命令実行を、図8のフローを使って説明する。
図6および図8に示すように、パイプラインユニット13,14は、プログラムカウンタ17,18の値がエミュレーションアドレスレジスタ7,8に一致しているかを判断する(S30)。一致している場合はエミュレーション制御ビット9,10がセットされているかを判断し(S31)、一致していない場合は、共有メモリ1から命令をフェッチする(S33)。パイプラインユニット13,14はエミュレーション制御ビット9,10がセットされている場合はエミュレーション命令レジスタ5,6から命令をフェッチし(S32)、エミュレーション制御ビット9,10がセットされていない場合は、共有メモリ1から命令をフェッチする(S33)。フェッチした命令を実行し(S34)、ステップ実行制御ビット19,20がセットされているかを判断する(S35)。ステップ実行制御ビット19,20がセットされていない場合、パイプラインユニット13,14はプログラムカウンタをインクリメントした後に(S36)、再度プログラムカウンタ17,18の値がエミュレーションアドレスレジスタ7,8に一致しているかを判断する(S30)。ステップ実行制御ビット9,10がセットされている場合、パイプラインユニット13,14はステップ実行の制御ビット9,10をクリアした後(S36)、プログラムをステップ実行の例外ハンドラへ分岐させる(S37)。
以上のような他の実施形態のコアプロセッサ3,4で構成される共有メモリ型マルチコアプロセッサ上で動作するプログラムにおいて、ソフトウェアブレークポイントから、ソフトウェアブレークポイントを解除しないで、プログラムの実行を開始する方法を説明する。
図7は図6の他の実施形態における、ソフトウェアブレークポイントからプログラムを実行させるときの、デバッガ21の制御に関するフローである。
コアプロセッサ3,4がソフトウェアブレークポイントからプログラムの実行を開始する場合、デバッガ21は、デバッグ制御部11,12を介してコアプロセッサ3,4のエミュレーションアドレスレジスタ7,8に保持しているブレークアドレスを設定する(S20)。
次にデバッガ21は、デバッグ制御11,12を介して保持していた被置換命令を、エミュレーション命令レジスタ5,6に設定する(S21)。
次にコアプロセッサ3,4のエミュレーション制御ビット9,10を、デバッグ制御部11,12を介してセットすることで、コアプロセッサ3,4のエミュレーション命令レジスタ5,6からの命令フェッチを有効にする(S22)。
次にコアプロセッサ3,4でステップ実行することでエミュレーション命令レジスタ5,6に設定した被置換命令が実行される(S23)。
そして、エミュレーション制御ビット9,10をクリアしてから(S24)、コアプロセッサ3,4に命令実行を開始させる(S25)。
以上のステップにより、共有メモリ1に設定してあるソフトウェアブレークポイントを解除することなく、ソフトウェアブレークポイントからプログラムの実行を開始することができる。
本発明の実施形態のコアプロセッサ22,23と、他の実施形態のコアプロセッサ3,4を比べると、本発明の実施形態のコアプロセッサ22,23には次の効果あることが明らかである。
他の実施形態のコアプロセッサ3,4で必要であったエミュレーションアドレスレジスタ7,8と、エミュレーション制御ビット9,10が、本発明の実施形態のコアプロセッサ22,23では不要になる。
また、図4と図9の命令フェッチ部15,16の論理回路図を比べると、本発明の実施形態によるコアプロセッサ22,23では、ステップ実行の制御ビット62をマルチプレクサ回路63のスイッチに用いることで、論理積回路52,54がなくなり簡略化できることがわかる。
また、図3と図8のパイプラインユニット13,14の命令実行のフローを比べると、本発明の実施形態によるコアプロセッサ22,23では、プログラムカウンタ17,18とエミュレーションアドレス7,8を比較する処理が不要になるため、命令実行までのクリティカルパスが短くなる。
さらに、図1と図7のデバッガ21がソフトウェアブレークポイントからプログラムを実行する制御フローを比べると、本発明の実施形態によるコアプロセッサ22,23を用いることで、ブレークアドレスをエミュレーションアドレスレジスタに設定する処理を減らす効果がある。
本発明にかかる共有メモリ型マルチコアプロセッサのデバッグ方式は、命令のエミュレーション方法を有し、ソフトウェアブレークポイントからプログラムを実行する方法として有用である。
1 共有メモリ
2 バスコントロールユニット
3,4 コアプロセッサ
5,6 エミュレーション命令レジスタ
7,8エミュレーションアドレスレジスタ
9,10 エミュレーション制御ビット
11,12 デバッグ制御
13,14 パイプラインユニット
15,16 命令フェッチ
17,18 プログラムカウンタ
19,20 ステップ実行制御ビット
21 デバッガ
22,23 コアプロセッサ
2 バスコントロールユニット
3,4 コアプロセッサ
5,6 エミュレーション命令レジスタ
7,8エミュレーションアドレスレジスタ
9,10 エミュレーション制御ビット
11,12 デバッグ制御
13,14 パイプラインユニット
15,16 命令フェッチ
17,18 プログラムカウンタ
19,20 ステップ実行制御ビット
21 デバッガ
22,23 コアプロセッサ
Claims (3)
- エミュレーション命令レジスタからの命令フェッチか共有メモリからの命令フェッチかを切替える手段を備える共有メモリ型マルチコアプロセッサにおいて、前記マルチコアプロセッサ上で動作し、実行開始アドレスにソフトウェアブレークポイントが設定されているプログラムをデバッグする際、前記エミュレーション命令レジスタに被置換命令を格納するステップと、前記エミュレーション命令レジスタからの命令フェッチを有効にするステップと、前記命令フェッチを有効にした後前記被置換命令をステップ実行するステップと、前記エミュレーション命令レジスタからの命令フェッチを無効にするステップと、前記命令フェッチを無効にした後プログラムを実行するステップとを含むプログラム実行方法。
- 前記エミュレーション命令レジスタからの命令フェッチを有効または無効にするステップは、命令のステップ実行を制御するステップ実行制御ビットの値に応じて命令フェッチの有効または無効を設定する請求項1記載のプログラム実行方法。
- ソフトウェアブレークポイントからプログラム実行を開始可能とした複数のコアプロセッサと、前記コアプロセッサで共有される共有メモリとを備えた共有メモリ型マルチコアプロセッサであって、被置換命令を格納するエミュレーション命令レジスタと、前記共有メモリからの命令および前記エミュレーション命令レジスタからの命令をフェッチするデバッガと、命令のステップ実行を制御するステップ実行制御ビットと、前記ステップ実行制御ビットの値に応じて、命令フェッチ先として前記共有メモリか前記エミュレーション命令レジスタのいずれかを選択する命令フェッチ部とを備えた共有メモリ型マルチコアプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005315880A JP2007122547A (ja) | 2005-10-31 | 2005-10-31 | プログラム実行方法および共有メモリ型マルチコアプロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005315880A JP2007122547A (ja) | 2005-10-31 | 2005-10-31 | プログラム実行方法および共有メモリ型マルチコアプロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007122547A true JP2007122547A (ja) | 2007-05-17 |
Family
ID=38146305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005315880A Pending JP2007122547A (ja) | 2005-10-31 | 2005-10-31 | プログラム実行方法および共有メモリ型マルチコアプロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007122547A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9223680B2 (en) | 2013-03-19 | 2015-12-29 | Kabushiki Kaisha Toshiba | Information processing apparatus and debugging method |
-
2005
- 2005-10-31 JP JP2005315880A patent/JP2007122547A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9223680B2 (en) | 2013-03-19 | 2015-12-29 | Kabushiki Kaisha Toshiba | Information processing apparatus and debugging method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH06168146A (ja) | 仮想計算機方式 | |
US20100153786A1 (en) | Processor, multiprocessor, and debugging method | |
US20130036426A1 (en) | Information processing device and task switching method | |
JP3616556B2 (ja) | 拡張命令を処理する並列プロセッサ | |
JP2000099366A (ja) | 演算処理装置および演算処理装置のデバッグ方法 | |
JP3260083B2 (ja) | デバッグシステム及びデバッグ方法 | |
JP2007122547A (ja) | プログラム実行方法および共有メモリ型マルチコアプロセッサ | |
JPH11203146A (ja) | マイクロコンピュータ | |
JP7048612B2 (ja) | ベクトル生成命令 | |
JP2000353092A (ja) | 情報処理装置及びそのレジスタファイル切替方法 | |
JP2010015364A (ja) | マルチプロセッサシステム及び情報処理装置 | |
JP2008140124A (ja) | データ処理装置 | |
JP5803721B2 (ja) | データ処理装置 | |
JP2007316986A (ja) | システムlsi | |
JP4228639B2 (ja) | ウエイト制御方法、マイクロコンピュータ、バスコントローラ | |
WO2003088036A1 (en) | System and method for instruction level multithreading | |
JP4151497B2 (ja) | パイプライン処理装置 | |
JP3719241B2 (ja) | 演算装置 | |
JPH08161195A (ja) | アドレストレース格納装置及びアドレストレース生成方法 | |
JPH04112341A (ja) | マイクロコンピュータlsi | |
JP2008047054A (ja) | マイクロプロセッサおよびその制御方法 | |
JPS6143347A (ja) | ベクトル命令シミユレ−シヨン方法 | |
JPS60235249A (ja) | プロセツサ回路 | |
KR20030097018A (ko) | 잘못된 분기 예측의 페널티를 최소화 또는 제거할 수 있는방법 및 이를 이용한 명령어 페치회로 | |
JPS6029846A (ja) | 情報処理装置における実行状態制御方式 |