(57)【特許請求の範囲】
【請求項１】
複数のデバッグモジュールと、
前記複数のデバッグモジュールのそれぞれに対応して設けられ、対応するデバッグモジュールによりデバッグされる複数のプロセッサコアと、
前記複数のデバッグモジュールに対応して設けられ、それぞれが対応する複数のプロセッサコアをデバッグモードに遷移させることを指示するデバッグリング信号を生成する複数のデバッグリングユニットと、を備え、
前記複数のデバッグリングユニットは、リング状に接続されて、前記デバッグリング信号を順繰りに伝送し、前段のデバッグリングユニットから前記デバッグリング信号を受信したデバッグリングユニットは、対応する前記デバッグモジュールに対して、対応する前記複数のプロセッサコアをデバッグモードに遷移させるデバッグ遷移信号を出力するマルチプロセッサ。
【請求項２】
デバッグモジュールと、前記デバッグモジュールによりデバッグされる複数のプロセッサコアと、前記プロセッサコアをデバッグモードに遷移させるデバッグリング信号を前記デバッグモジュールに出力するデバッグリングユニットとを、それぞれ備える複数のコアデバッグ部を有し、
前記複数のコアデバッグ部は、各々の前記デバッグリングユニットによりリング状に接続され、前記デバッグリング信号を順に伝送し、
任意のプロセッサコアがデバッグモードへ遷移した場合、前記コアデバッグ部は、前段のコアデバッグ部からの前記デバッグリング信号に基づき、全てのプロセッサコアをデバッグモードへ遷移させ、前記デバッグモジュールにデバッグ遷移信号を出力するマルチプロセッサ。
【請求項３】
前記デバッグモジュールは、前記デバッグリング信号と、前記デバッグ遷移信号とをクリアすることを示すクリアレジスタを有することを特徴とする請求項１または２に記載のマルチプロセッサ。
【請求項４】
前記デバッグモジュールは、
デバッグ割り込みをかけることを示すブレイクレジスタと、
他のプロセッサコアに同期して割り込みをかけることを示すシンクブレイクレジスタと、
現在デバッグモードか否かを報知することを示すステータスレジスタと、
を有することを特徴とする請求項３に記載のマルチプロセッサ。
【請求項５】
接続された前記デバッグリングユニット間に挿入されるフリップフロップを備えることを特徴とする請求項１乃至４のいずれかに記載のマルチプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、デバッグモジュールを内蔵したマルチプロセッサに関する。
【背景技術】
【０００２】
複数のプロセッサコアを内蔵したマルチプロセッサが普及している。マルチプロセッサの内部に、主にプロセッサコアの処理動作のデバッグを目的として、デバッグモジュールを設けたものがある。デバッグモジュールは通常、一つだけ設けられ、このデバッグモジュールに複数のプロセッサコアが接続されている。一つのプロセッサコアがデバッグモードに遷移したときに、他のプロセッサコアにデバイス割り込みをかけて、全プロセッサコアをデバッグモードに遷移させる。デバッグモジュールの制御は、ＩＥＥＥ１１４９．１で規格化されているＪＴＡＧインタフェースを介して、マルチプロセッサの外部から行うことができる。
【０００３】
プロセッサコアの数がそれほど多くない場合は、従来のマルチプロセッサの構成で問題なくデバッグを行えるが、マルチプロセッサ内にデバッグモジュールが一つしかないため、プロセッサコアの数が多くなると、プロセッサコアとデバッグモジュール間の配線長が長くなり、信号伝搬遅延によるタイミング上の制約が多くなり、配線が困難になる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１４０２４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本実施形態は、プロセッサコアの数が増大しても配線長を長くせずに全プロセッサコアをまとめてデバッグモードに遷移させることが可能なマルチプロセッサを提供するものである。
【課題を解決するための手段】
【０００６】
本実施形態によれば、複数のデバッグモジュールと、
前記複数のデバッグモジュールに対応して設けられ、それぞれが対応するデバッグモジュールによりデバッグされる複数のプロセッサコアと、
前記複数のデバッグモジュールのそれぞれに対応して設けられ、対応する複数のプロセッサコアをデバッグモードに遷移させることを指示するデバッグリング信号を生成する複数のデバッグリングユニットと、を備え、
前記複数のデバッグリングユニットは、リング状に接続されて、前記デバッグリング信号を順繰りに伝送し、前記デバッグリング信号を受信したデバッグリングユニットは、対応する前記デバッグモジュールに対して、対応する前記複数のプロセッサコアをデバッグモードに遷移させるデバッグ遷移信号を出力することを特徴とするマルチプロセッサが提供される。
【図面の簡単な説明】
【０００７】
【図１】本実施形態に係るマルチプロセッサ１の概略構成を示すブロック図。
【図２】図１の各デバッグリングユニット４の内部構成を示すブロック図。
【図３】第１アップデートロジック部１５と第２アップデートロジック部１７の論理動作を示す図。
【図４】デバッグモジュール３が有する４つのレジスタのデータ構造を示す図。
【図５】デバッグリングユニット４間に３つのフリップフロップ５を挿入する例を示す図。
【図６】デバッグリングユニット４をゼロクリアした直後に、再度いずれかのプロセッサコアｃ０〜ｃ３がデバッグモードに遷移する例を示す図。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら、本発明の実施形態を説明する。
【０００９】
図１は本実施形態に係るマルチプロセッサ１の概略構成を示すブロック図である。図１のマルチプロセッサ１は、縦続接続された複数のコアデバッグ部２を備えている。図１の例では、８つのコアデバッグ部２を接続しているが、接続するコアデバッグ部２の数には制限はない。
【００１０】
各コアデバッグ部２は、デバッグモジュール３と、複数のプロセッサコアｃ０〜ｃ３と、デバッグリングユニット４とを有する。図１の例では、各コアデバッグ部２内に４つのプロセッサコアｃ０〜ｃ３を設けているが、各コアデバッグ部２内のプロセッサコアの数には特に制限はない。
【００１１】
デバッグモジュール３は、対応するプロセッサコアｃ０〜ｃ３の処理動作のデバッグを行うものであり、プロセッサコアｃ０〜ｃ３の実行開始や停止の指示、リアルタイム実行トレースなどを行う。なお、デバッグモジュール３は、メモリのデバッグも行うことがあるが、図１では、簡略化のためにメモリを省略している。各デバッグモジュール３は縦続接続されており、隣接するデバッグモジュール３同士はＪＴＡＧインタフェースで接続されている。
【００１２】
なお、デバッグモジュール３を縦続接続する代わりに、複数のデバッグモジュール３をマルチプレクサで選択してもよい。その場合でも、各コアデバッグ部２内の構成は図１と同様である。
【００１３】
デバッグリングユニット４は、対応するプロセッサコアｃ０〜ｃ３をデバッグモードに遷移させることを指示するデバッグリング信号Ｄｒを生成する。より具体的には、デバッグリング信号Ｄｒを特定の論理（例えば１）に設定する。
【００１４】
また、各デバッグリングユニット４は、リング状に接続されている。したがって、一つのデバッグリングユニット４からデバッグリング信号Ｄｒが出力されると、その信号は順に他のデバッグリングユニット４に伝達されて、最初にデバッグリング信号Ｄｒを出力したデバッグリングユニット４に戻る。このため、デバッグリング信号Ｄｒを最初に出力したデバッグリングユニット４は、そのデバッグリング信号Ｄｒが戻ってきた時点で、すべてのデバッグリングユニット４にデバッグリング信号Ｄｒが伝達されたことを認識する。なお、図１のデバッグリングユニット４には、ＤＲＵ０〜ＤＲＵ７の符号を付している。
【００１５】
なお、隣接するデバッグリングユニット４間に、タイミング調整のためのフリップフロップ５を挿入してもよい。挿入するフリップフロップ５の段数は、リング接続されたデバッグリングユニット４間のそれぞれで異なっていてもよい。
【００１６】
各プロセッサコアｃ０〜ｃ３は、デバッグモードに遷移するときにデバッグ遷移信号Ｄｍを出力する。より具体的には、デバッグ遷移信号Ｄｍを特定の論理（例えば１）に設定する。また、デバッグリングユニット４は、前段のデバッグリングユニット４からデバッグリング信号Ｄｒが入力されると、デバッグ遷移信号Ｄｍをデバッグモジュール３に送出する。
【００１７】
このように、プロセッサコアｃ０〜ｃ３とデバッグリングユニット４のそれぞれがデバッグ遷移信号Ｄｍを出力するため、一つのコアデバッグ部２で５つのデバッグ遷移信号Ｄｍが生成される。これらデバッグ遷移信号Ｄｍはいずれも、対応するデバッグモジュール３に入力される。
【００１８】
デバッグモジュール３は、各プロセッサコアｃ０〜ｃ３に対応するデバッグ割り込み信号Ｄintを出力する。また、デバッグモジュール３は、対応するデバッグリングユニット４にクリア信号Ｃｌｅａｒを出力する。クリア信号Ｃｌｅａｒは、デバッグリングユニット４から出力されるデバッグリング信号Ｄｒとデバッグ遷移信号Ｄｍをクリアするものである。
【００１９】
図２はデバッグリングユニット４の内部構成を示すブロック図である。図２のデバッグリングユニット４は、第１ＯＲ回路１１と、第１ポジティブエッジチェック部（第１論理変化検出部）１２と、第２ポジティブエッジチェック部（第２論理変化検出部）１３と、第２ＯＲ回路１４と、第１アップデートロジック部１５と、第１Ｆ／Ｆ部１６と、第２アップデートロジック部１７と、第２Ｆ／Ｆ部１８とを有する。第１ＯＲ回路１１と第１ポジティブエッジチェック部１２は、第１デバッグ遷移検出部を構成し、第２ポジティブエッジチェック部１３は、第１デバッグ遷移検出部と第２デバッグ遷移検出部を構成する。第２ＯＲ回路１４、第１アップデートロジック部１５および第１Ｆ／Ｆ部１６は第１デバッグ遷移伝達部を構成し、第２アップデートロジック部１７および第２Ｆ／Ｆ部１８は第２デバッグ遷移伝達部を構成する。
【００２０】
第１ＯＲ回路１１は、プロセッサコアｃ０〜ｃ３から出力されたデバッグ遷移信号Ｄｍの論理和を演算する。いずれかのプロセッサコアｃ０〜ｃ３がデバッグモードに遷移する場合は、ハイ論理のデバッグ遷移信号Ｄｍを出力する。したがって、いずれかのプロセッサコアｃ０〜ｃ３がデバッグモードに遷移した場合は、第１ＯＲ回路１１の出力は１になる。
【００２１】
第１ポジティブエッジチェック部１２は、第１ＯＲ回路１１の出力が０から１に遷移したことを検知すると、例えば１を出力する。したがって、第１ポジティブエッジチェック部１２の出力が１になるのは、プロセッサコアｃ０〜ｃ３のいずれかがデバッグモードに遷移した場合である。
【００２２】
第２ポジティブエッジチェック部１３は、前段のデバッグリングユニット４から出力されたデバッグリング信号Ｄｒが０から１に遷移したことを検知すると、例えば１を出力する。したがって、第２ポジティブエッジチェック部１３の出力が１になるのは、前段のデバッグリングユニット４からハイ論理のデバッグリング信号Ｄｒが伝達された場合である。
【００２３】
第２ＯＲ回路１４は、第１ポジティブエッジチェック部１２と第２ポジティブエッジチェック部１３との出力信号の論理和を出力する。よって、第２ＯＲ回路１４の出力は、いずれかのプロセッサコアｃ０〜ｃ３がデバッグモードに遷移した場合か、または前段のデバッグリングユニット４からデバッグリング信号Ｄｒが伝達されてきた場合に１になる。
【００２４】
第１アップデートロジック部１５と第２アップデートロジック部１７は、図３に示す真理値表に従って動作する。図３のＦＦの欄は、第１Ｆ／Ｆ部１６または第２Ｆ／Ｆ部１８の出力である。Ｉｎｐｕｔの欄は、第１アップデートロジック部１５または第２アップデートロジック部１７の入力信号である。Ｃｌｅａｒの欄は、クリア信号Ｃｌｅａｒの論理である。Ｏｕｔｐｕｔの欄は、第１アップデートロジック部１５または第２アップデートロジック部１７の出力である。
【００２５】
図２に示すように、第１アップデートロジック部１５の出力は第１Ｆ／Ｆ部１６を介してフィードバックされる。同様に、第２アップデートロジック部１７の出力は第２Ｆ／Ｆ部１８を介してフィードバックされる。
【００２６】
第１アップデートロジック部１５は、第１Ｆ／Ｆ部１６の出力ＦＦが０であれば、Ｉｎｐｕｔと同じ論理を出力する。第１Ｆ／Ｆ部１６の出力ＦＦが１であれば、Ｉｎｐｕｔの論理に関係なく、クリア信号Ｃｌｅａｒの逆論理の信号を出力する。すなわち、第１アップデートロジック部１５のＯｕｔｐｕｔは、第１Ｆ／Ｆ部１６の出力ＦＦが０の場合は、Ｉｎｐｕｔの論理に応じた信号となり、第１Ｆ／Ｆ部１６の出力が１の場合は、クリア信号Ｃｌｅａｒが１なら０となり、クリア信号Ｃｌｅａｒが０の場合は、出力論理をそのまま保持する。第２アップデートロジック部１７も、第１アップデートロジック部１５と同様の論理で動作する。
【００２７】
第１Ｆ／Ｆ部１６は、次段のデバッグリングユニット４に、デバッグリング信号Ｄｒを出力する。第２Ｆ／Ｆ部１８は、デバッグモジュール３にデバッグ遷移信号Ｄｍを出力する。
【００２８】
デバッグモジュール３は、第１アップデートロジック部１５と第２アップデートロジック部１７にクリア信号Ｃｌｅａｒを供給する。クリア信号Ｃｌｅａｒが１になると、第１アップデートロジック部１５と第２アップデートロジック部１７はともに０を出力する。
【００２９】
デバッグモジュール３は、レジスタを有する。図４はデバッグモジュール３が有する４つのレジスタのデータ構造を示す図である。デバッグモジュール３が有するレジスタは、Ｂｒｅａｋレジスタと、ＳｙｎｃＢｒｅａｋレジスタと、Ｓｔａｔｕｓレジスタと、Ｃｌｅａｒレジスタである。Ｂｒｅａｋレジスタ、ＳｙｎｃＢｒｅａｋレジスタおよびＳｔａｔｕｓレジスタは、それぞれ５ビットを有し、各ビットは、４つのプロセッサコアｃ０〜ｃ３とデバッグリングユニット４に対応づけられている。より具体的には、最下位ビット［０］はプロセッサコアｃ０に、ビット［１］はプロセッサコアｃ１に、ビット［２］はプロセッサコアｃ２に、ビット［３］はプロセッサコアｃ３に、最上位ビット［４］はデバッグリングユニット４に対応づけられている。
【００３０】
Ｂｒｅａｋレジスタは、デバッグ割り込みをかけたか否かを記録し、１のときにデバッグ割り込みをかけたことを示す。Ｂｒｅａｋレジスタは、ビット値が１になったプロセッサコアｃ０〜ｃ３またはデバッグリングユニット４がデバッグモードに遷移すると、そのビット値は０に変わる。
【００３１】
ＳｙｎｃＢｒｅａｋレジスタは、同期させてデバッグモードに遷移させたいプロセッサコアｃ０〜ｃ３またはデバッグリングユニット４を示す。ここでは、対応するビットを１に指定する。ＳｙｎｃＢｒｅａｋレジスタは、Ｓｔａｔｕｓレジスタがオールゼロから遷移したときに、ビットごとに、Ｓｔａｔｕｓレジスタが０で、かつＳｙｎｃＢｒｅａｋが１のビットを検索して、Ｂｒｅａｋレジスタの対応するビットに１を設定する。
【００３２】
Ｓｔａｔｕｓレジスタは、各プロセッサコアｃ０〜ｃ３またはデバッグリングユニット４がデバッグモードか否かを示す情報を記録する。Ｓｔａｔｕｓレジスタがオールゼロの場合は、このレジスタの各ビットに、対応するプロセッサコアｃ０〜ｃ３またはデバッグリングユニット４のデバッグ遷移信号Ｄｍの現在の論理を書き込む。Ｓｔａｔｕｓレジスタがいったんゼロ以外になると、現在のDmの論理に従った書き込みは発生しない。ゼロクリアされると再度Dmの現在の論理の書き込みを行う。。
【００３３】
例えば、すべてのプロセッサコアｃ０〜ｃ３を同期させてデバッグモードに遷移させたい場合、ＳｙｎｃＢｒｅａｋレジスタの下位４ビットには、「１１１１」を設定しておく。ここで、プロセッサコアｃ０がデバッグモードに遷移したとすると、Ｓｔａｔｕｓレジスタの下位４ビットは「０００１」になり、Ｂｒｅａｋレジスタの下位４ビットは「１１１０」になる。これにより、プロセッサコアｃ１〜ｃ３に対して割り込みが発生し、それに同期して、全てのプロセッサコアｃ０〜ｃ３がデバッグモードに遷移することができる。
【００３４】
Ｃｌｅａｒレジスタは、１ビットだけであり、書き込みのみ可能である。Ｃｌｅａｒレジスタは、クリア信号Ｃｌｅａｒを有効にするか否かを示す。Ｃｌｅａｒレジスタに１が書き込まれると、対応するデバッグリングユニット４のクリア信号Ｃｌｅａｒが、１サイクルだけ１になる。
【００３５】
４種類のレジスタは、ＪＴＡＧインタフェースを介して不図示のホストコンピュータから設定可能である。また、Ｃｌｅａｒレジスタを除く３種類のレジスタは、各ビット値をＪＴＡＧインタフェースを介してホストコンピュータで読み出すことができる。
【００３６】
次に、本実施形態に係るマルチプロセッサ１の処理動作を説明する。マルチプロセッサ１内のすべてのプロセッサコア（図１の場合は３２個）を同期させてデバッグモードに遷移させる場合、すべてのＳｙｎｃＢｒｅａｋレジスタを「１１１１１」に設定する。４つのプロセッサコアｃ０〜ｃ３が通常の実行モードの場合、第１ＯＲ回路１１の入力信号Ｄｍはすべて０である。このため、第１ＯＲ回路１１の出力と第１ポジティブエッジチェック部１２の出力はともに０になり、次段のデバッグリングユニット４にもロウ論理のデバッグリング信号Ｄｒが供給される。
【００３７】
また、前段のデバッグリングユニット４から出力されるデバッグリング信号Ｄｒも０であるため、第２ポジティブエッジチェック部１３の出力、第２アップデートロジック部１７の出力、および第２Ｆ／Ｆ部１８の出力はいずれも０となる。したがって、デバッグリングユニット４からデバッグモジュール３に供給されるデバッグ遷移信号Ｄｍも０になる。
【００３８】
ここで、デバッグリングユニットＤＲＵ０に接続されているプロセッサコアｃ０がデバッグモードに遷移したとする。この場合、第１ＯＲ回路１１に入力されるデバッグ遷移信号Ｄｍは「０００１」となる。第１ＯＲ回路１１の出力は１になり、第１ポジティブエッジチェック部１２の出力も１になる。したがって、第２ＯＲ回路１４の出力も１になり、第１アップデートロジック部１５の出力は図３の論理に従って１になる。第１アップデートロジック部１５の出力が１になると、第１Ｆ／Ｆ部１６の出力も１になって、第１アップデートロジック部１５にフィードバックされるが、この状態ではクリア信号Ｃｌｅａｒは０であるため、第１アップデートロジック部１５の出力は１を保持する。
【００３９】
これにより、次段のデバッグリングユニットＤＲＵ１にハイ論理のデバッグリング信号Ｄｒが伝達される。
【００４０】
一方、前段のデバッグリングユニットＤＲＵ７からのデバッグリング信号Ｄｒは０であり、第２ポジティブエッジチェック部１３の出力は０になる。よって、第２Ｆ／Ｆ部１８から出力されるデバッグ遷移信号Ｄｍは０のままである。
【００４１】
このように、デバッグリングユニットＤＲＵ０に対応するいずれかのプロセッサコアｃ０〜ｃ３がデバッグモードに遷移した場合は、次段のデバッグリングユニットＤＲＵ１へのデバッグリング信号Ｄｒは１になるが、デバッグモジュール３へのデバッグ遷移信号Ｄｍは０のままである。
【００４２】
このとき、デバッグユニットＤＲＵ０に対応するデバッグモジュール３のＳｔａｔｕｓレジスタは、「００００１」であり、Ｂｒｅａｋレジスタは「１１１１０」になる。これにより、プロセッサコアｃ１〜ｃ３にデバッグ割り込みが発生する。このデバッグ割り込みに応じて、プロセッサコアｃ１〜ｃ３がデバッグモードに遷移し次第、Ｂｒｅａｋレジスタの各ビットは０に戻る。しかしながら、第２Ｆ／Ｆ部１８から出力されるデバッグ遷移信号Ｄｍは０のままのため、Ｂｒｅａｋレジスタの最上位ビット４は１のままである。
【００４３】
次に、次段のデバッグリングユニットＤＲＵ１の動作を説明する。前段のデバッグリングユニットＤＲＵ０からのデバッグリング信号Ｄｒが１になると、第２ポジティブエッジチェック部１３の出力が１になり、第２ＯＲ回路１４の出力、第１アップデートロジック部１５、および第１Ｆ／Ｆ部１６の出力も１になる。これにより、次段のデバッグリングユニットＤＲＵ２に、ハイ論理のデバッグリング信号Ｄｒが伝達される。
【００４４】
また、第２ポジティブエッジチェック部１３の出力が１になると、第２アップデートロジック部１７の出力と第２Ｆ／Ｆ部１８の出力も１になり、デバッグモジュール３にハイ論理のデバッグ遷移信号Ｄｍが供給される。
【００４５】
したがって、デバッグユニットＤＲＵ１に対応するデバッグモジュール３のＳｔａｔｕｓレジスタは「１００００」、Ｂｒｅａｋレジスタは「０１１１１」になり、プロセッサコアｃ０〜ｃ３に対してデバッグ割り込みが発生する。このデバッグ割り込みに応じて、プロセッサコアｃ０〜ｃ３がデバッグモードに遷移すると、Ｂｒｅａｋレジスタの対応ビットが０になる。
【００４６】
このようにして、各デバッグリングユニット４には、順繰りにハイ論理のデバッグリング信号Ｄｒが伝達される。また、前段のデバッグリングユニット４からハイ論理のデバッグリング信号Ｄｒが伝達されると、デバッグモジュール３に出力されるデバッグ遷移信号Ｄｍも１になる。
【００４７】
デバッグリングユニットＤＲＵ０から順繰りに伝達されたハイ論理のデバッグリング信号Ｄｒは、やがてデバッグリングユニットＤＲＵ７からデバッグリングユニットＤＲＵ０に伝達される。これにより、デバッグリングユニットＤＲＵ０内の第２ポジティブエッジチェック部１３の出力は１になり、デバッグ遷移信号Ｄｍも１になる。このデバッグ遷移信号Ｄｍを受けて、デバッグモジュール３は、Ｂｒｅａｋレジスタの最上位ビット［４］を０にする。
【００４８】
このように、最初にハイ論理のデバッグリング信号Ｄｒを出力したデバッグリングユニットＤＲＵ０は、前段のデバッグリングユニットＤＲＵ７からハイ論理のデバッグリング信号Ｄｒを受信した時点で、すべてのデバッグリングユニットＤＲＵ０〜ＤＲＵ７に、ハイ論理のデバッグリング信号Ｄｒが伝達されたと認識して、デバッグ遷移信号Ｄｍを１にする。
【００４９】
以上の手順により、３２個のプロセッサコアのどれかがデバッグモードに遷移すると、他のプロセッサコアをすべてデバッグモードに遷移させることが可能となる。最初にデバッグモードに遷移したプロセッサコアを知りたい場合は、各デバッグモジュール３のＳｔａｔｕｓレジスタを参照し、Ｓｔａｔｕｓレジスタのビット［０］〜［３］のいずれかが１であれば、そのビットに対応するプロセッサコアが最初にデバッグモードに遷移したプロセッサコアであるとわかる。ビット［４］が１の場合は、そのデバッグモジュール３に接続されたプロセッサコアｃ０〜ｃ３の中に最初にデバッグモードに遷移したプロセッサコアは存在しない。
【００５０】
デバッグモードからノーマルモードに復帰する際には、全デバッグリングユニット４をゼロクリアしなければならない。ゼロクリアしないと、ノーマルモードに復帰してＳｔａｔｕｓレジスタをゼロにした際に、デバッグリングユニット４からのデバッグ遷移信号Ｄｍが１になっているため、再度デバッグモードに入ってしまう。ゼロクリアの際には、すべてのＣｌｅａｒレジスタに１を書き込む。ＪＴＡＧインタフェースの仕様では、レジスタへの書き込みは、全てのデバッグモジュール３に対して同時に行うことができる。その結果、第１Ｆ／Ｆ部１６と第２Ｆ／Ｆ部１８の出力は０になる。
【００５１】
ここで重要なのは、デバッグリングユニット４間にフリップフロップ５が挿入されている場合には、Ｃｌｅａｒレジスタに１を書き込み第１Ｆ／Ｆ部１６と第２Ｆ／Ｆ部１８の出力をゼロにしても、デバッグリングユニット４間のフリップフロップ５の出力は１のままであることである。
【００５２】
通常、フリップフロップ５は、隣接するデバッグリングユニット４間の距離が離れている場合に挿入する。デバッグモジュール３からフリップフロップ５を初期化することはタイミング的に非常に厳しい。例えば、図５に示すように、デバッグリングユニット４間に３つのフリップフロップ５を挿入していたとすると、デバッグリングユニット４をクリアする前は、デバッグリング信号Ｄｒはすべて１である（図５（ａ））。この状態でデバッグリングユニット４をクリアすると、デバッグリングユニット４の出力は０になるものの、デバッグリングユニット４間のフリップフロップ５の出力は０にはならない（図５（ｂ））。その後、クロック信号が入力されるたびに、フリップフロップ５間を０が伝搬していき（図５（ｃ）、図５（ｄ））、３クロックサイクル後に、ようやくすべてのフリップフロップ５の出力がゼロになる（図５（ｅ））。
【００５３】
図６はデバッグリングユニット４をゼロクリアした直後に、再度いずれかのプロセッサコアｃ０〜ｃ３がデバッグモードに遷移する例を示している。この場合、０になったデバッグリング信号Ｄｒがデバッグリングユニット４間のフリップフロップ５を伝搬していくが、図６（ａ）に示すように、この０がフリップフロップ５を伝搬していく間に、デバッグリングユニット４の出力が１に復帰する。図６（ｂ）〜（ｃ）に示すように、フリップフロップ５は、順繰りに０を伝搬していくが、次段のデバッグリングユニット４に１のデバッグリング信号Ｄｒが再度伝達される（図６（ｄ））と、次段のデバッグリングユニット４はデバッグモードに遷移する。
【００５４】
このように、本実施形態では、マルチコアプロセッサ内のいずれかのプロセッサコアｃ０〜ｃ３がデバッグモードに遷移すると、それに同期して、他のすべてのプロセッサコアｃ０〜ｃ３をデバッグモードに遷移させることができる。
【００５５】
また、本実施形態では、複数のプロセッサコアごとにデバッグモジュール３とデバッグリングユニット４を設けるため、デバッグモジュール３と各プロセッサコア間の配線長が長くならず、信号伝搬遅延によるタイミング上の制約を軽減できる。プロセッサコアの数が多い場合には、所望数のプロセッサコアをまとめ、それに合わせてデバッグモジュール３とデバッグリングユニット４の数を増やせばよい。プロセッサコアの数が増えても、プロセッサコアとデバッグモジュール３間の配線長が長くなることもない。
【００５６】
さらに、本実施形態では、デバッグリングユニット４をリング状に接続して、いずれかのプロセッサコアｃ０〜ｃ３がデバッグモードに遷移した情報をデバッグリングユニット４間で伝達するようにしたため、いずれかのプロセッサコアｃ０〜ｃ３がデバッグモードに遷移した情報をすべてのデバッグリングユニット４で共有できる。また、デバッグリングユニット４をリング状に接続していることから、最初にデバッグモードに遷移した情報をデバッグリング信号Ｄｒとして出力したデバッグリングユニット４は、前段のデバッグリングユニット４からデバッグリング信号Ｄｒを伝搬されることにより、全てのデバッグリングユニット４に情報が伝達されたことを把握できる。これにより、全てのプロセッサコアがデバッグモードに遷移したことがわかる。
【００５７】
また、本実施形態では、デバッグリングユニット４の間に、任意の段数でフリップフロップ５を接続できるため、隣接するデバッグリングユニット４間の距離が離れていても、また、プロセッサコアｃ０〜ｃ３の数が増えても、タイミング的に問題なく同期を取ることができる。
【００５８】
このように、本実施形態によれば、プロセッサコアの数が増えても、デバッグモジュール３を再設計する必要はなく、プロセッサコアｃ０〜ｃ３の数に応じて、デバッグモジュール３とデバッグリングユニット４の数を増減すればよいため、プロセッサコアの数が異なる種々のマルチコアプロセッサの設計が容易になる。
【００５９】
本発明の態様は、上述した個々の実施形態に限定されるものではなく、当業者が想到しうる種々の変形も含むものであり、本発明の効果も上述した内容に限定されない。すなわち、特許請求の範囲に規定された内容およびその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲で種々の追加、変更および部分的削除が可能である。
【符号の説明】
【００６０】
１  マルチプロセッサ、２  コアデバッグ部、３  デバッグモジュール、４  デバッグリングユニット、５  フリップフロップ、１１  第１ＯＲ回路、１２  第１ポジティブエッジチェック部、１３  第２ポジティブエッジチェック部、１４  第２ＯＲ回路、１５  第１アップデートロジック部、１６  第１Ｆ／Ｆ部、１７  第２アップデートロジック部、１８  第２Ｆ／Ｆ部、ｃ０〜ｃ３  プロセッサコア
【図１】
0005787829.tif 000002
【図２】
0005787829.tif 000003
【図３】
0005787829.tif 000004
【図４】
0005787829.tif 000005
【図５】
0005787829.tif 000006
【図６】
0005787829.tif 000007