(57)【特許請求の範囲】
【請求項１】
第１の共有バスに接続された複数のＣＰＵと、
第２の共有バスに接続された１個以上のモジュールと、
前記第１の共有バスと前記第２の共有バスとの間に接続され、前記複数のＣＰＵの前記モジュールへのアクセスを調停する共有バス制御部と、
アクセス先の前記モジュールから、前記ＣＰＵのアクセス要求信号に対する応答信号が出力されたか否かを監視するシステムコントローラとを備え、
前記システムコントローラは、前記共有バス制御部から前記第２の共有バスに前記アクセス要求信号が出力されてから所定時間経過するまでに、前記アクセス先のモジュールから前記応答信号が出力されない場合は、前記共有バス制御部を介して前記第１の共有バスに疑似応答信号を出力して、アクセス中の前記ＣＰＵの当該アクセスを終了させると共に、異なる割込処理を其々実行可能な前記アクセス中のＣＰＵと他のＣＰＵとの其々に対して、其々が前記異なる割込処理を実行するための割込み通知の発行を可能とすることを特徴とするマルチコアＬＳＩ。
【請求項２】
前記システムコントローラは、前記割込処理として、前記アクセス中のＣＰＵにノンマスカブル割込処理、マスカブル割込処理またはデバック割込処理を実行させることを特徴とする請求項１に記載のマルチコアＬＳＩ。
【請求項３】
前記システムコントローラは、前記割込処理として、前記アクセス中のＣＰＵにはデバッグ割込処理を実行させ、他の前記ＣＰＵにはマスカブル割込処理を実行させることを特徴とする請求項２に記載のマルチコアＬＳＩ。
【請求項４】
前記システムコントローラは、前記共有バス制御部から前記第２の共有バスに前記アクセス要求信号が出力されてから所定時間経過するまでに、前記アクセス先のモジュールから前記応答信号が出力されない場合は、更に、前記アクセス中のＣＰＵが当該アクセスの際に出力したＣＰＵＩＤ、読み出し・書き込みのコマンドおよびアドレスのうちの少なくとも１つを保存することを特徴とする請求項１乃至請求項３のいずれかに記載のマルチコアＬＳＩ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵを同一のＬＳＩ上に搭載したマルチコアＬＳＩに関する。
【背景技術】
【０００２】
複数のＣＰＵを同一のＬＳＩ上に搭載したマルチコアＬＳＩにおいて、複数のＣＰＵがそれぞれ独立に動作するようなソフトウェアのデバッグをしている時に、プログラムの暴走（意図しない領域へのアクセスなど）により共有バスがハングアップした場合、どのＣＰＵのどのアクセスによりハングアップしたかを特定できず、ソフトウェアのデバッグが困難になる。
【０００３】
他のＣＰＵが正常に動作する中で或るＣＰＵが暴走して共有バスをハングアップさせた場合が、上記の場合に該当する。この場合では、共有バスのハングアップにより、デバッグ対象のＣＰＵが停止するだけでなく、他の正常なＣＰＵもアクセスができなくなり停止する。そのため、マルチコアＬＳＩでは、これまでのシングルコアＬＳＩ（１個のＣＰＵを搭載したＬＳＩ）でのデバッグの手法を用いても、有効にソフトウエアのデバッグができなかった。
【０００４】
シングルコアＬＳＩでのデバッグの技術として、下記（１）（２）が知られている。
【０００５】
（１）システムコントローラによって、共有バスを監視して所定時間経過してもアクセスが終了しない場合（即ちＣＰＵが暴走した場合）は、それを検出して、共有バスに疑似応答信号を出力して、アクセス中のＣＰＵの当該アクセスを終了させると同時に、ＣＰＵに割込処理を入れる。その後、そのＣＰＵの動作を解析して、その割込処理がプログラムのどの箇所で処理されたかを確認することで、ＣＰＵがプログラムの何処で暴走したかを特定する（従来技術１）。
【０００６】
（２）ソフトウェア上の処理の中の一定の処理期間に対するタイムアウトを検出する機能として、ＷＤＴ（ウォッチドックタイマ）が知られている。この場合は、ＷＤＴによって、タイムアウトを検出してＣＰＵに割込処理を入れることで、ＣＰＵがプログラムの何処で暴走したかを特定する（従来技術２）。
【０００７】
尚、タイムアウトを検出する先行技術文献としては、特許文献１が知られている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００１−１６７０６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記の従来技術１をマルチコアＬＳＩに拡張した場合は、割込処理の要求信号をどの様に各々のＣＰＵに出力するか、どのＣＰＵのアクセスによりハングアップしたのかをどのように特定するのかという点において、現在では有効な手法が無い状況である。
【００１０】
また上記の従来技術２をマルチコアＬＳＩに使用した場合は、そもそも共有バスがハングアップした場合に、ＷＤＴによって、それを検出して他の正常なＣＰＵに割込処理をさせようとしても、デバッグ対象のＣＰＵがバス権の開放を行わない限り、その正常なＣＰＵは割込処理を実行できない。
【００１１】
以上の事から、従来では、マルチコアＬＳＩにおいて、共有バスのハングアップが発生しても、そのハングアップが、どのＣＰＵのどのアクセスにより発生したかの特定ができないので、プログラムの開発効率が良くないという問題点があった。
【００１２】
また、或るＣＰＵが暴走して共有バスをハングアップすると、他の正常なＣＰＵがアクセスできなくなって他の正常なＣＰＵも停止するので、ＬＳＩの動作上の安定性が良くないという問題点があった。
【００１３】
この発明は、上記のような問題点を解決するためになされたものであり、第１に、動作の安定性を向上できるマルチコアＬＳＩを提供すること、第２に、更に、プログラムの開発効率を向上できるマルチコアＬＳＩを提供する目的としている。
【課題を解決するための手段】
【００１４】
上記課題を解決する為に、本発明の第１の形態は、第１の共有バスに接続された複数のＣＰＵと、第２の共有バスに接続された１個以上のモジュールと、前記第１の共有バスと前記第２の共有バスとの間に接続され、前記複数のＣＰＵの前記モジュールへのアクセスを調停する共有バス制御部と、アクセス先の前記モジュールから、前記ＣＰＵのアクセス要求信号に対する応答信号が出力されたか否かを監視するシステムコントローラとを備え、前記システムコントローラは、前記共有バス制御部から前記第２の共有バスに前記アクセス要求信号が出力されてから所定時間経過しても、アクセス先の前記モジュールから前記応答信号が出力されない場合は、前記共有バス制御部を介して前記第１の共有バスに疑似応答信号を出力して、アクセス中の前記ＣＰＵの当該アクセスを終了させると共に、異なる割込処理を其々実行可能な前記アクセス中のＣＰＵと他のＣＰＵとの其々に対して、其々が前記異なる割込処理を実行するための割込み通知の発行を可能とするものである。
【発明の効果】
【００１５】
本発明の第１の形態によれば、システムコントローラは、共有バス制御部から第２の共有バスにアクセス要求信号が出力されてから所定時間経過するまでに、アクセス先のモジュールから応答信号が出力されない場合は、共有バス制御部を介して第１の共有バスに疑似応答信号を出力して、アクセス中のＣＰＵの当該アクセスを終了させる。これにより、バグ等の発生により、アクセス先のモジュールから応答信号が出力されない場合でも、アクセス中のＣＰＵが共有バスを長期に占有してマルチコアＬＳＩの動作が停止する事を防止でき、マルチコアＬＳＩの動作の安定性を向上できる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１に係るマルチコアＬＳＩの構成図である。
【図２】図１のシステムコントローラ９の構成概略図である。
【図３】図２の制御部９ｇのうちのノンマスカブル割込処理の要求信号を出力する部分の論理回路の構成概略図である。
【図４】図２の割り込み制御レジスタ９ｄ，９ｅの仕様を説明する図である。
【図５】図２の割り込み制御レジスタ９ｄ，９ｅへの設定データの設定例を説明する図である。
【図６】従来型のマルチコアＬＳＩの正常時の動作の概要を説明する図である。
【図７】従来型のマルチコアＬＳＩのタイムアウト発生時（バグ発生時）の動作の概要を説明する図である。
【図８】従来型のマルチコアＬＳＩの正常時およびタイムアウト発生時の動作の概要を説明する他の図である。
【図９】実施の形態１に係るマルチコアＬＳＩの動作を説明する図である。
【発明を実施するための形態】
【００１７】
実施の形態１．
＜全体構成＞
この実施の形態に係るマルチコアＬＳＩ１は、図１の様に、複数（例えば２個）のＣＰＵ＃０，＃１と、各ＣＰＵ＃０，＃１のアクセスを調停する共有バス制御部３と、それら各構成要素＃０，＃１，３が接続された共有バスｂ１と、ＲＯＭやＲＡＭ等の１個以上（例えばｎ個）のモジュールｍ１〜ｍｎと、外部バスｇｂとのインターフェースである外部バス制御部５と、各ＣＰＵ＃０，＃１に割込処理を発生させる割り込みコントローラ７と、それら各構成要素ｍ１〜ｍｎ，３，５が接続された共有バスｂ２と、共有バスｂ２を監視するシステムコントローラ９とを備える。
【００１８】
各共有バスｂ１，ｂ２はそれぞれ、アクセス先のアドレスが送信されるアドレスバスと、コマンド（例えば読み出し（read）、書き込み（write）および応答信号など）が送信されるコマンドバスと、データが送信されるデータバスと、アクセス元のＣＰＵ＃０，＃１のＩＤが送信されるＣＰＵＩＤバスとから構成される。
【００１９】
各ＣＰＵ＃０，＃１は、一般的なものであって、デバッグ機能ｄｂと、１次キャッシュＬ１と、システムコントローラ９からの各種の割込処理の要求信号である、ＮＭＩ(ノンマスカブル割り込み)、ＩＮＴ（マスカブル割り込み）、およびＤＢＩ（デバッグ割り込み）を備える。
【００２０】
デバッグ機能ｄｂは、一般的なデバッグ機能であって、例えば、当該ＣＰＵ＃０，＃１のプログラムの実行制御、ブレークポイント制御、CPU内部レジスタ表示や、外部からの要求信号に応じて当該ＣＰＵ＃０，＃１の実行履歴を外部に出力する機能などといった、プログラムのデバッグに必要な機能を、外部装置と通信を行い実現するものである。
【００２１】
入力信号ＮＭＩは、ノンマスカブル割込処理（Non-maskable Interrupt）の要求信号を表している。入力信号ＤＢＩは、デバッグ割込処理（Debug Interrupt）の要求信号を表している。入力信号ＩＮＴは、マスカブル割込処理（maskable Interrupt）の要求信号を表している。各ＣＰＵ＃０，＃１はそれぞれ、各入力部ＮＭＩ，ＤＢＩ，ＩＮＴに入力された要求信号に応じて各種の割込処理を実行する。
【００２２】
各ＣＰＵ＃０，＃１は、各モジュールｍ１〜ｍｎまたは外部バスｇｂに接続された各外部デバイスｇｄ１，ｇｄ２にアクセスする場合は、アクセス要求信号として、共有バスｂ１のアドレスバス、コマンドバス、ＣＰＵＩＤバスにそれぞれアクセス先のアドレス、読み出しまたは書き込みのコマンド、アクセス元のＣＰＵ＃０または＃１のＩＤ（ＣＰＵＩＤ）を出力すると共に前記コマンドが書き込みの場合は更に共有バスｂ１のデータバスに書込対象のデータを出力する。
【００２３】
また各ＣＰＵ＃０，＃１は、アクセス要求信号の共有バスｂ１への出力でアクセスを開始し、そのアクセス要求信号に対する応答信号を共有バスｂ１を通じて取得すると、そのアクセスを終了する。
【００２４】
共有バス制御部３は、２次キャッシュＬ２を備えることも可能である。以降は２次キャッシュＬ２を備えた場合について説明する。
【００２５】
また共有バス制御部３は、共有バスｂ１を通じて各ＣＰＵ＃０または＃１からのアクセス要求信号を受信すると、２次キャッシュＬ２にアクセスして、その読出対象のデータが２次キャッシュＬ２に保存されているかを確認する。そして保存されている場合は、アクセス元のＣＰＵ＃０または＃１に対して、アクセス要求信号のコマンドが読み出しの場合は、その保存されているデータを共有バスｂ１を通じて出力すると共にそのアクセス要求信号に対する応答信号を共有バスｂ１を通じて出力し、アクセス要求信号のコマンドが書き込みの場合は、Ｌ２キャッシュに書き込みをすると共に、そのアクセス要求信号に対する応答信号を共有バスｂ１を通じて出力する。
【００２６】
また共有バス制御部３は、その対象のデータが２次キャッシュに保存されていない場合、共有バスｂ１を通じて受信した当該アクセス要求信号を共有バスｂ２に出力する。
【００２７】
また共有バス制御部３は、共有バスｂ２から、各モジュールｍ１〜ｍｎまたは外部バス制御部５からの応答信号および読出対象のデータを受信した場合、その応答信号および読出対象のデータを共有バスｂ１に出力する。
【００２８】
また共有バス制御部３は、システムコントローラ９から専用配線１２を通じて後述の疑似応答信号が入力されると、その疑似応答信号を、共有バスｂ１に出力して、その際にアクセス中のＣＰＵ＃０または＃１に受信させて当該アクセスを強制的に終了させる。尚、上記の疑似応答信号とは、アクセス要求信号のアクセス先が応答信号を出力しない場合に、システムコントローラ９が、その代わりに出力する応答信号である。
【００２９】
各モジュールｍ１〜ｍｎは、共有バスｂ２を通じて自身へのアクセス要求信号を受信すると、そのアクセス要求信号に対する応答信号を共有バスｂ２に出力すると共に、専用配線１１を通じてシステムコントローラ９にも応答信号を出力する。
【００３０】
尚、専用配線１１は、例えば、ＯＲ回路１１ａを備え、ＯＲ回路１１ａの複数の入力部には、各モジュールｍ１〜ｍｎおよび外部バス制御部５の各々の応答信号出力部が配線接続され、ＯＲ回路１１ａの出力部には、システムコントローラ９の応答信号入力部が配線接続されて構成されている。ＯＲ回路１１ａは、その複数の入力部のうちの何れかに応答信号が入力されると、その出力部から応答信号を出力する。
【００３１】
外部バス制御部５は、外部バスｇｂに接続された外部デバイスｇｄ１，ｇｄ２と、各ＣＰＵ＃０，＃１ｎとの間の通信を中継する。
【００３２】
割り込みコントローラ７は、各モジュールｍ１〜ｍｎまたは外部デバイス（不図示）から各種の割込処理の要求信号が入力されると、システムコントローラ９を介して各ＣＰＵ＃０，＃１の各入力信号ＮＭＩ，ＤＢＩ，ＩＮＴを出力して、各ＣＰＵ＃０，＃１に当該各種の割込処理を実行させる。
【００３３】
システムコントローラ９は、共有バスｂ２中のアクセス要求信号を監視する。そしてシステムコントローラ９は、共有バス制御部３から共有バスｂ２にアクセス要求信号が出力されてから所定時間経過するまでに、そのアクセス要求信号のアクセス先から共有バスｂ２にそのアクセス要求信号に対する応答信号が出力されたか否かを監視する。
【００３４】
そしてシステムコントローラ９は、上記の所定時間経過するまでに当該応答信号が共有バス２に出力されない場合は、上記の所定時間経過したときに（即ちタイムアウトが発生したときに）、バグ等の発生により共有バスｂ１，ｂ２がハングアップしたと判定し、下記の処理（１）（２）（３）を行う。
【００３５】
即ち処理（１）として、疑似応答信号を例えば専用配線１２を介して共有バス制御部３に出力し、その疑似応答信号を、共有バス制御部３から共有バスｂ１に出力させてアクセス元のＣＰＵ＃０または＃１に取得させ、そのアクセスを強制的に終了させる。
【００３６】
また処理（２）として、アクセス中のＣＰＵ＃０，＃１が当該アクセスの際に出力したＣＰＵＩＤ、読み出しまたは書き込みのコマンド、およびアドレスのうちの少なくとも１つを保存する。
【００３７】
また処理（３）として、ＣＰＵ＃０，＃１の入力信号ＭＮＩ，ＤＢＩ，ＩＮＴに信号を出力してＣＰＵ＃０，＃１に各種の割込処理を実行させる。これにより、バグの発生箇所を推定することが可能となる。
【００３８】
またシステムコントローラ９は、外部装置からの終了要求信号が入力されると、疑似応答信号を共有バス制御部３に出力して、上記の所定時間経過する前でも、アクセス中のＣＰＵ＃０，＃１の当該アクセスを強制的に終了させる。
【００３９】
＜システムコントローラ９の構成＞
システムコントローラ９は、図２の様に、アドレスレジスタ９ａと、コマンドレジスタ９ｂと、ＣＰＵＩＤレジスタ９ｃと、各ＣＰＵ＃０，＃１毎に設けられた割り込み制御レジスタ９ｄ，９ｅと、カウンタ９ｆと、制御部９ｇとを備える。
【００４０】
アドレスレジスタ９ａは、共有バスｂ２のアドレスバスｑ１に接続され、コマンドレジスタ９ｂは、共有バスｂ２のコマンドバスｑ２に接続され、ＣＰＵＩＤレジスタ９ｃは、共有バスｂ２のＣＰＵＩＤバスｑ３に接続され、割り込み制御レジスタ９ｄ，９ｅは、共有バスｂ２のデータバスｑ４に接続されている。
【００４１】
各レジスタ９ａ，９ｂ，９ｃはそれぞれ、制御部９ｆの制御に応じて、共有バス制御部３から共有バスｂ２に出力されたアクセス要求信号のアドレス，コマンド，ＣＰＵＩＤを格納する。
【００４２】
制御部９ｇは、共有バスｂ２のコマンドバスｑ２にアクセス要求信号のコマンド（読み出しまたは書き込みのコマンド）が出力されたか否かを監視する。そして制御部９ｇは、共有バスｂ２のコマンドバスｑ２にアクセス要求信号のコマンドが出力された事を検知すると、共有バス制御部３から共有バスｂ２にアクセス要求信号が出力されたと判定して、カウント９ｆに所定時間の計時を開始させる。
【００４３】
そして制御部９ｇは、カウンタ９ｆが所定時間を計時し終えるまでに、専用配線１１を通じて自身に当該アクセス要求信号のアクセス先から応答信号が入力されたか否か（即ちアクセス先から共有バスｂ２に当該アクセス要求信号に対する応答信号が出力されたか否か）を監視する。
【００４４】
そして制御部９ｇは、カウンタ９ｆが所定時間を計時し終えるまでに、専用配線１１を通じて応答信号が自身に入力された場合は、アクセス先から共有バスｂ２に当該アクセス要求信号に対する応答信号が出力された（即ちバグの発生無し）と判定し、カウンタ９による所定時間の計時を中止させる。
【００４５】
他方、制御部９ｇは、専用配線１１を通じて応答信号が自身に入力される前にカウンタ９ｆが所定時間を計時し終えた場合（即ちタイムアウトが発生した場合）は、バグ等が発生して共有バスｂ１，ｂ２がハングアップしたと判定し、下記の処理（１）（２）（３）を行う。
【００４６】
即ち処理（１）として、制御部９ｇは、例えば専用配線１２を介して疑似応答信号を共有バス制御部３に出力し、その疑似応答信号を、共有バス制御部３から共有バスｂ１に出力させてアクセス中のＣＰＵ＃０，＃１に取得させ、そのアクセスを強制的に終了させる。
【００４７】
また処理（２）として、制御部９ｇは、共有バスｂ２から当該アクセス要求信号のアドレス，読み出しまたは書き込みのコマンド、およびＣＰＵＩＤを取得し、それらをそれぞれ各レジスタ９ａ，９ｂ，９ｃに格納する。尚、この格納されたアドレス、コマンドおよびＣＰＵＩＤは、どのＣＰＵ＃０，＃１のどのアクセスによりバグ等が発生したかを特定するのに役立てられる。
【００４８】
また処理（３）として、制御部９ｇは、ＣＰＵＩＤレジスタ９ｃに格納された上記のＣＰＵＩＤおよび割り込み制御レジスタ９ｄ，９ｅに予め格納された設定データに応じて、各ＣＰＵ＃０，＃１に対して割込処理の要求信号ＮＭＩ，ＤＢＩ，ＩＮＴを出力して、各ＣＰＵ＃０，＃１に各種の割込処理を実行させる。
【００４９】
尚、割り込み制御レジスタ９ｄ，９ｅに格納された設定データを変更することで、バグ発生時に各ＣＰＵ＃０，＃１に実行させる割込処理の種類を変更できる。割り込み制御レジスタ９ｄ，９ｅに格納された設定データの変更は、例えば、外部から割り込みコントローラ７およびシステムコントローラ９を介してＣＰＵ＃０または＃１の入力部ＮＭＩ，ＤＢＩ，ＩＮＴに割込処理の要求信号を出力し、そのＣＰＵ＃０または＃１の割込処理により行われる。
【００５０】
＜制御部９ｂの構成＞
図３は、制御部９ｇに於ける、ＣＰＵ＃０，＃１の割込処理の要求信号ＮＭＩの出力を制御する部分の論理回路１０ａを示した図である。
【００５１】
この論理回路１０ａは、ＯＲ回路１３ａと、ＡＮＤ回路１４ａ，１５ａと、出力回路１６とを備える。
【００５２】
出力回路１６は、１つの入力部ｔ１と２つの出力部ｔ２，ｔ３とを有し、入力部ｔ１には、ＣＰＵＩＤレジスタ９ｃ内のＣＰＵＩＤ（＃０または＃１）が入力され、そのＣＰＵＩＤが＃０の場合は、各出力部ｔ２，ｔ３からそれぞれ「０」，「１」が出力され、他方、そのＣＰＵＩＤが＃１の場合は、各出力部ｔ２，ｔ３からそれぞれ「１」，「０」が出力される。
【００５３】
ＡＮＤ回路１４ａは、１つの出力部ｔ４と３つの入力部ｔ５〜ｔ７を有し、入力部ｔ５には、割り込み制御レジスタ９ｂ内の所定のビット位置（例えばｂ５）のビット値（「０」または「１」）が入力され、入力部ｔ６には、出力回路１６の出力部ｔ２からの出力が入力され、入力部ｔ７には、カウンタ９ｆの出力が入力される。尚、カウンタ９ｆの出力は、カウンタ９ｆが所定時間を計時し終えるまでは「０」を出力し、カウンタ９ｆが所定時間を計時し終えると（即ちタイムアップが発生すると）「１」を出力する。
【００５４】
ＡＮＤ回路１５ａは、１つの出力部ｔ８と３つの入力部ｔ９〜ｔ１１を有し、入力部ｔ９には、割り込み制御レジスタ９ｂ内の所定のビット位置（例えばｂ０）のビット値（「０」または「１」）が入力され、入力部ｔ１０には、出力回路１６の出力部ｔ３からの出力が入力され、入力部ｔ１１には、カウンタ９ｆの出力が入力される。
【００５５】
ＯＲ回路１３ａは、１つの出力部ｔ１２と３つの入力部ｔ１３〜ｔ１５とを有し、出力部ｔ１２の出力は、ＣＰＵ＃０の入力部ＮＭＩに出力され、各入力部ｔ１３，ｔ１４にはそれぞれ、ＡＮＤ回路１４ａ，１５ａの出力部ｔ４，ｔ８からの出力が入力され、入力部ｔ１５には、割り込みコントローラ７からのノンマスカブル（ＮＭＩ）割込処理の要求信号が入力される（尚、ＮＭＩ割込処理の要求信号の入力が有る場合は「１」が入力され、ＮＭＩ割込処理の要求信号の入力が無い場合「０」が入力される）。
【００５６】
同様に、ＣＰＵ＃１の割込処理の要求信号ＮＭＩの出力を制御する部分の論理回路１０ｂは、ＯＲ回路１３ｂと、ＡＮＤ回路１４ｂ，１５ｂと、出力回路１６とを備える。
【００５７】
ＡＮＤ回路１４ｂは、１つの出力部ｔ１６と３つの入力部ｔ１７〜ｔ１９とを有し、入力部ｔ１７には、割り込み制御レジスタ９ｅ内の所定のビット位置（例えばｂ３）のビット値（「０」または「１」）が入力され、入力部ｔ１８には、出力回路１６の出力部ｔ３の出力が入力され、出力部ｔ１９には、カウンタ９ｆの出力が入力される。
【００５８】
ＡＮＤ回路１５ｂは、１つの出力部ｔ２０と３つの入力部ｔ２１〜ｔ２３とを有し、入力部ｔ２１には、割り込み制御レジスタ９ｅ内の所定のビット位置（例えばｂ０）のビット値（「０」または「１」）が入力され、出力部ｔ２２には、出力回路１６の出力部ｔ２の出力が入力され、出力部ｔ２３には、カウンタ９ｆの出力が入力される。
【００５９】
ＯＲ回路１３ｂは、１つの出力部ｔ２４と３つの入力部ｔ２５〜ｔ２７とを有し、出力部ｔ２４の出力は、ＣＰＵ＃１の割込処理の要求信号ＮＭＩに出力され、各入力部ｔ２５，ｔ２６にはそれぞれ、ＡＮＤ回路１４ｂ，１５ｂの出力部ｔ１６，ｔ２０の出力が入力され、入力部ｔ２７には、割り込みコントローラ７からのノンマスカブル（ＮＭＩ）割込処理の要求信号の出力が入力される。
【００６０】
またＣＰＵ＃０の入力部ＩＮＴへの割込処理の要求信号の出力を制御する部分の論理回路は、図示省略するが、論理回路１０ａにおいて、下記（１ａ）〜（４ａ）の変更を行って他の部分を同様に構成することで、構成される。
（１ａ）ＯＲ回路１３ａの出力部ｔ１２の出力をＣＰＵ＃０の割込処理の要求信号ＩＮＴに入力する。
（２ａ）ＡＮＤ回路１４ａの入力部ｔ５には、割り込み制御レジスタ９ｄのビット位置ｂ４のビット値を入力する。
（３ａ）ＡＮＤ回路１５ａの入力部ｔ９には、割り込み制御レジスタ９ｄのビット位置ｂ１のビット値を入力する。
（４ａ）ＯＲ回路１３ａの入力部ｔ１５には、割り込みコントローラ７からのマスカブル（ＩＮＴ）割込処理の要求信号が入力される（尚、ＩＮＴ割込処理の要求信号の入力が有る場合は「１」が入力され、ＩＮＴ割込処理の要求信号の入力が無い場合「０」が入力される）。
【００６１】
またＣＰＵ＃１の割込処理の要求信号ＩＮＴへの割込処理の要求信号の出力を制御する部分の論理回路は、図示省略するが、論理回路１０ｂにおいて、下記（１ｂ）〜（４ｂ）の変更を行って他の部分を同様に構成することで、構成される。
（１ｂ）ＯＲ回路１３ｂの出力部ｔ２４の出力をＣＰＵ＃１の割込処理の要求信号ＩＮＴに入力する。
（２ｂ）ＡＮＤ回路１４ｂの入力部ｔ１７には、割り込み制御レジスタ９ｅのビット位置ｂ４のビット値を入力する。
（３ｂ）ＡＮＤ回路１５ｂの入力部ｔ２１には、割り込み制御レジスタ９ｅのビット位置ｂ１のビット値を入力する。
（４ｂ）ＯＲ回路１３ｂの入力部ｔ２７には、割り込みコントローラ７からのマスカブル（ＩＮＴ）割込処理の要求信号が入力される。
【００６２】
またＣＰＵ＃０の割込処理の要求信号ＤＢＩへの出力を制御する部分の論理回路は、図示省略するが、論理回路１０ａにおいて、下記（１ｃ）〜（４ｃ）の変更を行って他の部分を同様に構成することで、構成される。
（１ｃ）ＯＲ回路１３ａの出力部ｔ１２の出力をＣＰＵ＃０の割込処理の要求信号ＤＢＩに入力する。
（２ｃ）ＡＮＤ回路１４ａの入力部ｔ５には、割り込み制御レジスタ９ｄのビット位置ｂ５のビット値を入力する。
（３ｃ）ＡＮＤ回路１５ａの入力部ｔ９には、割り込み制御レジスタ９ｄのビット位置ｂ２のビット値を入力する。
（４ｃ）ＯＲ回路１３ａの入力部ｔ１５には、割り込みコントローラ７からのデバッグ（ＤＢＩ）割込処理の要求信号が入力される（尚、ＤＢＩ割込処理の要求信号の入力が有る場合は「１」が入力され、ＤＢＩ割込処理の要求信号の入力が無い場合「０」が入力される）。
【００６３】
またＣＰＵ＃１の割込処理の要求信号ＤＢＩへの出力を制御する部分の論理回路は、図示省略するが、論理回路１０ｂにおいて、下記（１ｄ）〜（４ｄ）の変更を行って他の部分を同様に構成することで、構成される。
（１ｄ）ＯＲ回路１３ｂの出力部ｔ２４の出力をＣＰＵ＃１の割込処理の要求信号ＤＢＩに入力する。
（２ｄ）ＡＮＤ回路１４ｂの入力部ｔ１７には、割り込み制御レジスタ９ｅのビット位置ｂ５のビット値を入力する。
（３ｄ）ＡＮＤ回路１５ｂの入力部ｔ２１には、割り込み制御レジスタ９ｅのビット位置ｂ２のビット値を入力する。
（４ｄ）ＯＲ回路１３ｂの入力部ｔ２７には、割り込みコントローラ７からのデバッグ（ＤＢＩ）割込処理の要求信号の出力が入力される。
【００６４】
尚、各ＡＮＤ回路１４ａ，１５ａ，１４ｂ，１５ｂはそれぞれ、その全ての入力部に「１」が入力された場合のみ、その出力部から「１」を出力する。各ＯＲ回路１３ａ，１３ｂはそれぞれ、その各入力部のうちの１つ以上のものに「１」が入力された場合のみ、その出力部から「１」を出力する。各ＣＰＵ＃０，＃１は、その割込処理の要求信号ＮＭＩに「１」が入力されると、ノンマスカブル割込処理を実行し、またその割込処理の要求信号ＩＮＴに「１」が入力されると、マスカブル割込処理を実行し、またその割込処理の要求信号ＤＢＩに「１」が入力されると、デバッグ割込処理を実行する。
【００６５】
この構成により、例えば、割り込み制御レジスタ９ｄの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０のビット値を００１，０００と設定し、割り込み制御レジスタ９ｅの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０のビット値を００１，０００と設定した場合（モード１）は、以下の動作する。即ちＣＰＵＩＤレジスタ９ｃにＣＰＵＩＤとして＃０が格納され、且つカウンタ９ｆが所定時間を計時し終えて「１」を出力すると、ＯＲ回路１３ｂの出力部ｔ２４のみから「１」が出力され、その出力がＣＰＵ＃１の割込処理の要求信号ＮＭＩに入力されて、ＣＰＵ＃１によりノンマスカブル割込処理が実行される。他方、ＣＰＵＩＤレジスタ９ｃにＣＰＵＩＤとして＃１が格納され、且つカウンタ９ｆが所定時間を計時し終えて「１」を出力すると、ＯＲ回路１３ａの出力部ｔ１２のみから「１」が出力され、その出力がＣＰＵ＃０の割込処理の要求信号ＮＭＩに入力されて、ＣＰＵ＃０によりノンマスカブル割込処理が実行される。
【００６６】
＜割り込み制御レジスタ９ｄ，９ｅの仕様＞
割り込み制御レジスタ９ｄ，９ｅは、図４の様に、３２ビットのデータが格納可能に構成されている。割り込み制御レジスタ９ｄ，９ｅのビット位置ｂ３１〜ｂ６にはそれぞれ、例えば０が固定で設定されている。各ビット位置ｂ３１〜ｂ６は、読み出し（Ｒ）および書き込み（Ｗ）もできない様になっている。ビット位置ｂ５〜ｂ３には、０００，００１，０１０，１００の何れかのビット列が格納される。各ビット位置ｂ５〜ｂ３は、読み出し（Ｒ）および書き込み（Ｗ）が可能になっている。
【００６７】
尚、ビット位置ｂ５〜ｂ３に０００，００１，０１０または１００が格納された場合に実行される割込処理およびその割込処理を実行するＣＰＵは、図４の機能の欄の通りである。またビット位置ｂ２〜ｂ０に０００，００１，０１０または１００が格納された場合に実行される割込処理およびその割込処理を実行するＣＰＵも、図４の機能の欄の通りである。
【００６８】
＜割り込み制御レジスタ９ｄ，９ｅへの設定データの設定例＞
図５は、割り込み制御レジスタ９ｄ，９ｅの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０に設定するビット値（設定データ）の例と、それら各設定の場合に実行される割込処理の種類およびその割込処理を実行するＣＰＵとの対応表を示したものである。
【００６９】
モード１では、上述の通り、割り込み制御レジスタ９ｄの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には００１，０００が設定され、割り込み制御レジスタ９ｅの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には００１，０００が設定される。このモードでは、カウンタ９ｆが所定時間を計時し終えると、ＣＰＵ＃０のアクセス中で発生した場合は、ＣＰＵ＃０のみにノンマスカブル割込要求信号を出力し、（他のＣＰＵ＃１には割込要求信号を出力しない。）、他方、ＣＰＵ＃１のアクセス中で発生した場合は、ＣＰＵ＃１のみにノンマスカブル割込要求信号を出力する（他のＣＰＵ＃０には割込要求信号を出力しない。）。
【００７０】
モード２では、割り込み制御レジスタ９ｄの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には０１０，０００が設定され、割り込み制御レジスタ９ｅの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には０１０，０００が設定される。このモードでは、カウンタ９ｆが所定時間を計時し終えると、ＣＰＵ＃０のアクセス中で発生した場合は、ＣＰＵ＃０のみにマスカブル割込要求信号を出力し（他のＣＰＵ＃１には割込要求信号を出力しない。）、他方、ＣＰＵ＃１のアクセス中で発生した場合は、ＣＰＵ＃１にのみにマスカブル割込要求信号を出力する（他のＣＰＵ＃０には割込要求信号を出力しない。）。
【００７１】
モード３では、割り込み制御レジスタ９ｄの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には１００，０００が設定され、割り込み制御レジスタ９ｅの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には１００，０００が設定される。このモードでは、カウンタ９ｆが所定時間を計時し終えると、ＣＰＵ＃０のアクセス中で発生した場合は、ＣＰＵ＃０のみにデバッグ割込要求信号を出力し（他のＣＰＵ＃１には割込要求信号を出力しない。）、他方、ＣＰＵ＃１のアクセスで発生した場合は、ＣＰＵ＃１にデバッグ割込要求信号を出力する（他のＣＰＵ＃０には割込要求信号を出力しない。）。
【００７２】
モード４では、割り込み制御レジスタ９ｄの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には００１，００１が設定され、割り込み制御レジスタ９ｅの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には００１，００１が設定される。このモードでは、カウンタ９ｆが所定時間を計時し終えると、ＣＰＵ＃０のアクセスで発生した場合も、ＣＰＵ＃１のアクセスで発生した場合も、全てのＣＰＵ＃０，＃１にノンマスカブル割込要求信号を出力する。
【００７３】
モード５では、割り込み制御レジスタ９ｄの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には０１０，０１０が設定され、割り込み制御レジスタ９ｅの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には０１０，０１０が設定される。このモードでは、カウンタ９ｆが所定時間を計時し終えると、ＣＰＵ＃０のアクセスで発生した場合も、ＣＰＵ＃０のアクセスで発生した場合も、全てのＣＰＵ＃０，＃１にマスカブル割込要求信号を出力する。
【００７４】
モード６では、割り込み制御レジスタ９ｄの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には１００，１００が設定され、割り込み制御レジスタ９ｅの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には１００，１００が設定される。このモードでは、カウンタ９ｆが所定時間を計時し終えると、ＣＰＵ＃０のアクセスで発生した場合も、ＣＰＵ＃１のアクセスで発生した場合も、全てのＣＰＵ＃０，＃１にデバッグ割込要求信号を出力する。
【００７５】
モード７では、割り込み制御レジスタ９ｄの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には００１，０１０が設定され、割り込み制御レジスタ９ｅの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には００１，０１０が設定される。このモードでは、カウンタ９ｆが所定時間を計時し終えると、ＣＰＵ＃０のアクセスで発生した場合は、ＣＰＵ＃０にはノンマスカブル割込要求信号を出力し、他のＣＰＵ＃１にはマスカブル割込要求信号を出力し、他方、ＣＰＵ＃１のアクセスで発生した場合は、ＣＰＵ＃１にはノンマスカブル割込要求信号を出力し、他のＣＰＵ＃０にはマスカブル割込要求信号を出力する。
【００７６】
モード８では、割り込み制御レジスタ９ｄの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には１００，０１０が設定され、割り込み制御レジスタ９ｅの各ビット位置ｂ５〜ｂ３，ｂ２〜ｂ０には１００，０１０が設定される。このモードでは、カウンタ９ｆが所定時間を計時し終えると、ＣＰＵ＃０のアクセスで発生した場合は、ＣＰＵ＃０にはデバッグ割込要求信号を出力し、他のＣＰＵ＃１にはマスカブル割込要求信号を出力し、他方、ＣＰＵ＃１のアクセスで発生した場合は、ＣＰＵ＃１もはデバッグ割込要求信号を出力し、他のＣＰＵ＃０にはマスカブル割込要求信号を出力する。
【００７７】
＜マルチコアＬＳＩ１の動作説明＞
まず本発明の特徴を理解するための参考として、図６〜図８に基づき、例えば２個のＣＰＵ＃０，＃１を有する従来型のマルチコアＬＳＩの動作の概要を説明する。
【００７８】
ここでは、ＣＰＵ＃０による処理Ａ、ＣＰＵ＃１による処理Ｂ、ＣＰＵ＃０による処理Ｃ、ＣＰＵ＃１による処理Ｄがこの順に行われる場合で説明する。
【００７９】
尚、処理Ａは、アドレスＡＡのモジュールに保存されたデータＤＡを読み出す処理である。処理Ｂは、アドレスＡＢのモジュールにデータＤＢを書き込む処理である。処理Ｃは、アドレスＡＣのモジュールにデータＤＣを書き込む処理である。処理Ｄは、アドレスＡＤのモジュールに保存されたデータＤＤを読み出す処理である。
【００８０】
まず図６に基づき正常時の動作を説明する。まず処理ＡがＣＰＵ＃０により実行される。即ちＣＰＵ＃０から共有バスに、アクセス要求信号として、ＣＰＵＩＤとして＃０、コマンドとして読み出し（Read）、アドレスとしてＡＡが出力される（図６のＴ１）。そして、そのアクセス要求信号がアドレスＡＡのモジュールに取得されると（図６のＴ２）、そのモジュールから共有バスに、読出対象のデータＤＡおよびそのアクセス要求信号に対する応答信号ｒ１が出力され（図６のＴ３）、そのデータＤＡと共に応答信号ｒ１がＣＰＵ＃０に取得されると、処理Ａが終了し、次の処理ＢがＣＰＵ＃１により同様に実行される。そしてアドレスＡＢのモジュールから、処理Ｂのアクセス要求信号に対する応答信号ｒ２が出力されると（図６のＴ４）、処理Ｂの処理が終了して次の処理Ｃが同様に実行され、処理Ｃのアクセス要求信号ａ３に対する応答信号ｒ３が出力されると、処理Ｃの処理が終了して次の処理Ｄが同様に実行される（図８（ａ）参照）。
【００８１】
この様な従来型のマルチコアＬＳＩでは、図７および図８（ｂ）の様に、例えば処理ＢがＣＰＵ＃１により実行された場合において、その際のアクセス要求信号に対する応答信号ｒ２が、バグ等の何らかの原因によりアクセス先のモジュールから出力されない場合は、処理Ｂが終了できず、次の処理Ｃが実行できなくなり、動作が停止する。この様に、バグ等を含む処理が実行されてアクセス先から応答信号が出力されないと、その処理を実行したＣＰＵ（例えば＃１）が共有バスを長期に占有し、他の問題の無いＣＰＵ（例えば＃０）が次の処理を実行できなくなり、当該マルチコアＬＳＩの動作が停止する。
【００８２】
また従来型のマルチコアＬＳＩでは、上記の様に動作が停止した場合、ＣＰＵが複数有るので、シングルコアＬＳＩの様に簡単に、どのＣＰＵ＃０，＃１のどのアクセスにより動作が停止したのか（即ちバグ等が発生したのか）を特定するのが困難である。
【００８３】
次に図１および図９に基づき、この実施の形態に係るマルチコアＬＳＩ１の動作を説明する。
【００８４】
上述と同様、ＣＰＵ＃０による処理Ａ、ＣＰＵ＃１による処理Ｂ、ＣＰＵ＃０による処理Ｃ、ＣＰＵ＃１による処理Ｄがこの順に行われる場合で説明する。各処理Ａ，Ｂ，Ｃ，Ｄの内容は、上述と同じである。
【００８５】
まず処理ＡがＣＰＵ＃０により実行される。即ちＣＰＵ＃０から共有バスｂ１に、アクセス要求信号として、ＣＰＵＩＤとして＃０、コマンドとして読み出し（read）、アドレスとしてＡＡが出力される（図９のＳ１）。
【００８６】
そして共有バスｂ１に出力された前記アクセス要求信号は、共有バス制御部３に取得されて共有バスｂ２に出力される。そして共有バスｂ２に出力された前記アクセス要求信号は、アドレスＡＡのモジュール（例えばｍ１）に取得されると共に、そのコマンド（read）がシステムコントローラ９により取得される。そしてシステムコントローラ９では、上記のコマンドの取得により、カウンタ９ｆによる所定時間の計時が開始される（ここでは１５から０まで計時される）（図９のＳ２）。
【００８７】
そしてカウンタ９ｆが所定時間を計時し終える前に、アドレスＡＡのモジュールｍ１から、共有バスｂ２に前記アクセス要求信号に対する応答信号および読出対象のデータＤＡが出力されると共に専用配線１１を通じてシステムコントローラ９に応答信号が出力されると（図９のＳ３）、 その応答信号が入力されたシステムコントローラ９では、バグ等による共有バスｂ１，ｂ２のハングアップは無いと判定され、カウンタ９ｆによる所定時間の計時が中止される（図９のＳ４）。
【００８８】
また、アドレスＡＡのモジュールｍ１から共有バスｂ２に出力された応答信号およびデータＤＡは、共有バス制御部３に取得されて共有バスｂ１に出力されてアクセス中のＣＰＵ＃０に取得され、処理Ａが終了する。
【００８９】
そして次の処理ＢがＣＰＵ＃１により実行される。即ち処理Ａと同様に、ＣＰＵ＃１から共有バスｂ１にアクセス要求信号が出力される（図９のＳ５）。そのアクセス要求信号は、共有バス制御部３に取得されて共有バスｂ２に出力され、アドレスＡＢのモジュール（例えはｍ２）に取得されると共に、そのコマンド（write）がシステムコントローラ９により取得される。そしてシステムコントローラ９では、上記のコマンドの取得により、カウンタ９ｆによる所定時間の計時が開始される（図９のＳ６）。
【００９０】
そして、アドレスＡＢのモジュールｍ２から、共有バスｂ２に前記アクセス要求信号に対する応答信号および読出対象のデータＤＡが出力されると共に専用配線１１を通じてシステムコントローラ９に応答信号が出力される前に、カウンタ９ｆにより所定時間が計時し終わると（図９のＳ７）、その旨の信号（タイムアウト信号）がカウンタ９ｇから出力され（図９のＳ８）、その出力により、システムコントローラ９により、バグ等の発生により共有バスｂ１，ｂ２がハングアップしたと判定される。
【００９１】
そしてこの判定により、システムコントローラ９から共有バス制御部３に例えば専用配線１２を通じて疑似応答信号が出力され（図９のＳ９）、その疑似応答信号が共有バス制御部３から共通バスｂ１に出力されてアクセス中のＣＰＵ＃１に取得され、処理Ｂが強制的に終了される。そして次の処理ＣがＣＰＵ＃０により実行される（図９のＳ１２）。
【００９２】
また上記の判定により、システムコントローラ９により、共有バスｂ２から前記アクセス要求信号のアドレス（ＡＢ）、コマンド（書き込み（write））およびＣＰＵＩＤ（＃１）が取得され、それぞれシステムコントローラ９の各レジスタ９ａ，９ｂ，９ｃに格納される（図９のＳ１０）。
【００９３】
そしてシステムコントローラ９により、ＣＰＵＩＤレジスタ９ｃに格納された上記のＣＰＵＩＤおよび割り込み制御レジスタ９ｄ，９ｅに予め格納された設定データに応じて、各ＣＰＵ＃０，＃１の割り込み入力信号であるＮＭＩ，ＤＢＩ，ＩＮＴに対して割込処理の要求信号が出力される（図９のＳ１１）。そして、この割込要求信号により、ＣＰＵ＃０，＃１に各種の割込処理が実行される。そして同様にして順次次の処理Ｃ，Ｄが実行される。
【００９４】
この様に、この実施の形態に係るマルチコアＬＳＩ１では、従来型のマルチコアＬＳＩと比べて、アクセス要求信号が共有バスｂ２に出力されてから所定時間経過するまでに、アクセス先のモジュールから当該アクセス要求信号に対する応答信号が出力されない場合は、システムコントローラ９から疑似応答信号が出力され、その疑似応答信号によりアクセス中のＣＰＵ＃０，＃１の当該アクセスが強制的に終了させられて次の処理が実行されるので、マルチコアＬＳＩ１の動作が停止する事を防止できる。
【００９５】
また疑似応答信号の他に、システムコントローラ９からＣＰＵ＃０，＃１に各種の割込処理の要求信号が出力されるので、ＣＰＵ＃０，＃１によるその割込処理の実行箇所を確認することで、バグ等の発生により共有バスｂ１，ｂ２がハングアップした場合に、どのＣＰＵ＃０，＃１のどのアクセスによりハングアップが発生したかを特定できる。
【００９６】
＜主要な効果＞
以上の様に構成されたマルチコアＬＳＩ１によれば、システムコントローラ９は、共有バス制御部３から共有バスｂ２にアクセス要求信号が出力されてから所定時間経過するまでに、アクセス先のモジュールｍ１〜ｍｎまたは外部バス制御部９から応答信号が出力されない場合は、共有バス制御部３を介して共有バスｂ１に疑似応答信号を出力して、アクセス中のＣＰＵ＃０または＃１の当該アクセスを終了させる。これにより、バグ等の発生により、アクセス先のモジュールから応答信号が出力されない場合でも、アクセス中のＣＰＵ＃０または＃１が共有バスｂ１，ｂ２を長期に占有してマルチコアＬＳＩ１の動作が停止する事を防止でき、マルチコアＬＳＩの動作の安定性を向上できる。
【００９７】
またシステムコントローラ９は、共有バス制御部３から共有バスｂ２にアクセス要求信号が出力されてから所定時間経過するまでに、アクセス先のモジュールｍ１〜ｍｎまたは外部バス制御部９から応答信号が出力されない場合は、更に、当該アクセス中のＣＰＵ＃０または＃１に割込処理を実行させる。これにより、当該ＣＰＵ＃０または＃１によるその割込処理の実行箇所を確認することで、バグ等が発生して共有バスｂ１，ｂ２がハングアップした場合に、どのＣＰＵ＃０，＃１のどのアクセスによりバグ等が発生したかを特定でき、プログラムの開発効率を向上できる。
【００９８】
またシステムコントローラ９は、割込処理として、当該アクセス中のＣＰＵ＃０または＃１にノンマスカブル割込処理、マスカブル割込処理またはデバック割込処理を実行させる。これにより、割込処理の種類に応じて割込処理の優先度を設定できる。
【００９９】
またシステムコントローラ９は、共有バス制御部３から共有バスｂ２にアクセス要求信号が出力されてから所定時間経過するまでに、アクセス先のモジュールｍ１〜ｍｎまたは外部バス制御部９から応答信号が出力されない場合は、全てのＣＰＵ＃０，＃１に割込処理を実行させる。これにより、バグ等が発生したＣＰＵだけでなく正常なＣＰＵによるその割込処理の実行箇所を確認することで、バグ等が発生して共有バスｂ１，ｂ２がハングアップした場合に、どのＣＰＵ＃０，＃１のどのアクセスによりバグ等が発生したかを一層容易に特定でき、プログラムの開発効率を向上できる。
【０１００】
またシステムコントローラ９において、上記の割込処理として、当該アクセス中のＣＰＵ＃０または＃１にはノンマスカブル割込処理を実行させ、他のＣＰＵ＃１または＃０にはマスカブル割込処理を実行させる様に設定できる。これにより、バグ等の発生したＣＰＵかまたは正常なＣＰＵかに応じて、割込処理の優先度を変えることができる。
【０１０１】
またシステムコントローラ９において、上記の割込処理として、当該アクセス中のＣＰＵ＃０または＃１にはデバッグ割込処理を実行させ、他のＣＰＵ＃１または＃０にはマスカブル割込処理を実行させる様にできる。これにより、バグ等の発生したＣＰＵかまたは正常なＣＰＵかに応じて、割込処理の優先度を変えることができる。
【０１０２】
またシステムコントローラ９において、共有バス制御部３から共有バスｂ２にアクセス要求信号が出力されてから所定時間経過するまでに、アクセス先のモジュールｍ１〜ｍｎまたは外部バス制御部５から応答信号が出力されない場合は、更に、アクセス中のＣＰＵ＃０または＃１が当該アクセスの際に出力したＣＰＵＩＤ、読み出し・書き込みのコマンドおよびアドレスのうちの少なくとも１つ（動作説明では例えば３つとも保存する場合で説明した。）を保存する。これにより、バグ等が発生して共有バスｂ１，ｂ２がハングアップした場合に、その保存したＣＰＵＩＤ、コマンドまたはアドレスにより、どのＣＰＵ＃０，＃１のどのアクセスによりバグ等が発生したかを一層容易に特定でき、プログラムの開発効率を向上できる。
【０１０３】
またシステムコントローラ９は、所定の外部装置からの終了要求信号を受けた場合には、カウンタ９ｆによる当該所定時間が経過する前でも、共有バス制御部３を介して共有バスｂ１に疑似応答信号を出力して、アクセス中のＣＰＵ＃０または＃１の当該アクセスを終了させる。これにより、所定の外部装置からの終了要求信号により、当該所定時間が経過する前でも、アクセス中のＣＰＵ＃０または＃１の当該アクセスを強制終了させる事ができる。
【０１０４】
実施の形態２．
上記のマルチコアＬＳＩの構成は、共有バスｂ１，ｂ２がパケットトランザクション又はスプリットトランザクションのバス構成である場合においても有効である。
【０１０５】
これらのバス構成では、例えばＣＰＵ＃０が共有バスｂ１を介してメモリ等にアクセスをする場合、メモリへのアクセスコマンドの発行をする際に共有バスｂ１のバス権を確保してアクセスコマンドを発行し、一旦共有バスｂ１のバス権を開放する。そのため、他のＣＰＵ＃１はバス権解放後の共有バスｂ１にアクセスをすることが可能になる。
【０１０６】
この場合、ＣＰＵ＃０へのメモリアクセスが不正なアドレスへのアクセスであり、上記の共有バスｂ１又はｂ２がハングアップするような場合であっても、ＣＰＵ＃１は共有バスｂ１及びｂ２へアクセスをすることが可能である。しかしながらかかる場合であっても、例えばＳＭＰ（Symmetric Multi Processing）構成である場合は、ＣＰＵ＃０がメモリからの応答待ちとして停止しているためにＣＰＵ＃０の処理が完了せず、ＣＰＵ＃１で実行する処理にも影響を生じることになる。
【０１０７】
システムコントローラ９がＣＰＵ＃０でのメモリアクセスに対して擬似応答信号を発行することによりＣＰＵ＃０が停止状態から回復し、ＣＰＵ＃０は正しいアドレスを指定してのメモリアクセスの再発行を行うことが可能となり、マルチコアＬＳＩ全体としてのシステム安定を維持することが可能になる。またそのような不正なメモリアクセスが頻発していることがその保存したＣＰＵＩＤ、コマンドまたはアドレスにより判明することから、どのＣＰＵ＃０，＃１のどのアクセスによりバグ等が発生したかを一層容易に特定でき、プログラムの開発効率を向上できる。
【産業上の利用可能性】
【０１０８】
この発明は、複数のＣＰＵを同一のＬＳＩ上に搭載したマルチコアＬＳＩに利用可能であり、デバッガによるデバッグ時だけでなく、通常動作時にも有効である。
【符号の説明】
【０１０９】
１  マルチコアＬＳＩ、３  共有バス制御部、５  外部バス制御部、７  割り込みコントローラ、９  システムコントローラ、９ａ  アドレスレジスタ、９ｂ  コマンドレジスタ、９ｃ  ＣＰＵＩＤレジスタ、９ｄ，９ｅ  割り込み制御レジスタ、９ｆ  カウンタ、９ｇ  制御部、１０ａ  ＣＰＵ＃０の入力部ＮＭＩへの割込処理の要求信号の出力を制御する部分の論理回路、１０ｂ  ＣＰＵ＃１の入力部ＮＭＩへの割込処理の要求信号の出力を制御する部分の論理回路、１１，１２  専用配線、１３ａ，１３ｂ  ＯＲ回路、１４ａ，１４ｂ，１５ａ，１５ｂ  ＡＮＤ回路、＃０，＃１  ＣＰＵ、ｂ１，ｂ２  共有バス、ｇｂ  外部バス、ｍ１〜ｍｎ  モジュール、Ｌ１  １次キャッシュ、Ｌ２  ２次キャッシュ、ｑ１  アドレスバス、ｑ２  コマンドバス、ｑ３  データバス、ｑ４  ＣＰＵＩＤバス。
【図１】
0005416257.tif 000002
【図２】
0005416257.tif 000003
【図３】
0005416257.tif 000004
【図４】
0005416257.tif 000005
【図５】
0005416257.tif 000006
【図６】
0005416257.tif 000007
【図７】
0005416257.tif 000008
【図８】
0005416257.tif 000009
【図９】
0005416257.tif 000010