(57)【要約】【課題】  本発明は、各々のプロセッサコアが有するカウンター値がより正確に同期化されたマルチコアプロセッサを提供することを目的とする。【解決手段】プロセッサコア５１，．．．，５４の基準となるカウンター値Ｃｏｕｎｔ_０を出力するカウンター回路１と、カウンター回路１に接続され、カウンター回路１から出力されるカウンター値Ｃｏｕｎｔ_０を伝送する伝送路１００と、伝送路１００の各ノード４１，．．．，４４に接続された複数のプロセッサコア５１，．．．，５４と、伝送路１００上の各ノード４１，．．．，４４よりカウンター回路１側に、前記複数のプロセッサコア各々に対応するように設けられ、カウンター値Ｃｏｕｎｔ_０，．．．，Ｃｏｕｎｔ_３を入力すると、このカウンター値を１周期遅らせて出力する遅延回路２１，．．．，２４と、カウンター値を入力すると、このカウンター値に１を加算して出力する補正回路３１，．．．，３４により構成された同期回路１１，．．．，１４を有しするマルチプロセッサコア回路。【選択図】  図１
2010140148.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを備えたマルチコアプロセッサ回路において、
プロセッサコアの基準となるカウンター値を出力するカウンター回路と、
前記カウンター回路に接続され、前記カウンター回路から出力される前記カウンター値を伝送する伝送路と、
前記伝送路の各ノードに接続された複数のプロセッサコアと、
前記伝送路上の前記各ノードより前記カウンター回路側に、前記複数のプロセッサコア各々に対応するように設けられ、前記カウンター値が入力すると、このカウンター値を１周期遅らせて出力する遅延回路と、前記カウンター値が入力すると、このカウンター値に１を加算して出力する補正回路とを有する同期回路を有し、
すべての前記同期回路から出力される前記カウンター値が同じ値となったとき、各々の前記プロセッサコアが、各々に対応する前記同期回路から出力される前記カウンター値を取得することを特徴とするマルチコアプロセッサ回路。
【請求項２】
さらに前記複数のプロセッサコアのうち少なくとも１つ以上のプロセッサコアが電源管理モジュールを備えていることを特徴とする請求項１記載のマルチコアプロセッサ回路。
【請求項３】
前記伝送路が少なくとも２つ以上に分岐していることを特徴とする請求項１または２記載のマルチコアプロセッサ回路。
【請求項４】
前記マルチコアプロセッサ回路はさらにデバッカー回路を備え
前記デバッカー回路が、前記複数のプロセッサコアが同一のカウンター値を取得したとき、前記複数のプロセッサコアを同時にデバックモードに移行させる機能を有することを特徴とする請求項１乃至３いずれか１項記載のマルチコアプロセッサ回路。
【請求項５】
複数のプロセッサコアを備えたマルチコアプロセッサ回路において、
リング状に構成され、カウンター値を伝送する伝送路と、
前記伝送路にノードを介して接続された複数のプロセッサコアと、
前記プロセッサコアのうち少なくとも１つ以上のプロセッサコアに備えられたカウンター回路と、
前記プロセッサコア各々に対応して、前記伝送路上に設けられ、前記カウンター値が入力すると、このカウンター値を１周期遅らせて出力する遅延回路と、前記カウンター値が入力すると、このカウンター値に１を加算して出力する補正回路とを有する同期回路を有し、
前記カウンター回路を備える前記プロセッサコアのうち任意の１つのプロセッサコアが、複数の前記プロセッサコアの基準となるカウンター値を前記伝送路に出力し、このカウンター値が前記伝送路に伝送され、すべての前記同期回路から出力されるカウンター値が同じ値となったとき、各々の前記プロセッサコアが、各々に対応する前記同期回路から出力される前記カウンター値を取得することを特徴とするマルチコアプロセッサ回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサコアを有するマルチコアプロセッサ回路に係り、特に複数のプロセッサコアの同期化に関する。
【背景技術】
【０００２】
複数のプロセッサコアが有するマルチコアプロセッサにおいて、各プロセッサコアがローカルに有するカウンター値を一致させておくことは、プロセッサコアの数や構成が複雑になるに従い難しくなっている。また、各プロセッサコアが電源管理されている場合には、電源を切った際にカウンター値の情報が失われることを考慮する必要がある。
【０００３】
マルチコアプロセッサシステムにおいて各コンピュータの時計を同期化する公知技術には、例えば特許文献１が挙げられる。特許文献１では、複数のプロセッサコアの基準時計となる時刻管理装置１があり、この時刻管理装置１からカウンターが各コンピュータ２に送信される。時刻管理装置１からカウンターを受け取った各コンピュータ２は、受け取ったカウンターに、カウンターが時刻管理装置１からコンピュータ２に伝送されるのにかかる時間を補正値として加算して時計２４にセットする。
【０００４】
しかし、この方法では、時刻管理装置１から各コンピュータ２にカウンターを伝送するのにかかる時間を予め測定しておく必要がある。また、予め測定しておいた時間に誤差がある場合や、外的な要因により伝送にかかる時間が変化した場合などに、各々のプロセッサコアが有するカウンター値を正確に同期化することは難しいという問題がある。
【特許文献１】特開平７−３０６８３６号公報。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、各々のプロセッサコアが有するカウンター値がより正確に同期化されたマルチコアプロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様のマルチコアプロセッサ回路は、複数のプロセッサコアを備えたマルチコアプロセッサ回路において、プロセッサコアの基準となるカウンター値を出力するカウンター回路と、前記カウンター回路に接続され、前記カウンター回路から出力される前記カウンター値を伝送する伝送路と、前記伝送路の各ノードに接続された複数のプロセッサコアと、前記伝送路上の前記各ノードより前記カウンター回路側に、前記複数のマルチコアプロセッサコア各々に対応するように設けられ、前記カウンター値が入力すると、このカウンター値を１周期遅らせて出力する遅延回路と、前記カウンター値が入力すると、このカウンター値に１を加算して出力する補正回路を有する構成された同期回路を有し、すべての前記同期回路から出力される前記カウンター値が同じ値となったとき、各々の前記プロセッサコアが、各々に対応する前記同期回路から出力される前記カウンター値を取得することを特徴とする。
【０００７】
また、本発明の別の態様のマルチコアプロセッサ回路は、複数のプロセッサコアを備えたマルチコアプロセッサ回路において、リング状に構成され、カウンター値を伝送する伝送路と、前記伝送路にノードを介して接続された複数のプロセッサコアと、前記プロセッサコアのうち少なくとも１つ以上のプロセッサコアに備えられたカウンター回路と、前記プロセッサコア各々に対応して、前記伝送路上に設けられ、前記カウンター値が入力すると、このカウンター値を１周期遅らせて出力する遅延回路と、前記カウンター値が入力すると、このカウンター値に１を加算して出力する補正回路を有する同期回路を有し、前記カウンター回路を備える前記プロセッサコアのうち任意の１つのプロセッサコアが、複数の前記プロセッサコアの基準となるカウンター値を前記伝送路に出力し、このカウンター値が前記伝送路に伝送され、すべての前記同期回路から出力されるカウンター値が同じ値となったとき、各々の前記プロセッサコアが、各々に対応する前記同期回路から出力される前記カウンター値を取得することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、各々のプロセッサコアが有するカウンター値がより正確に同期化されたマルチコアプロセッサを提供することができる。
【発明を実施するための最良の形態】
【０００９】
次に、図面を参照して、本発明の実施形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。ただし、図面は模式的なものであり、各ブロックの平面寸法、各タイミングチャートのタイミング幅は現実のものとは異なる可能性があることを留意すべきである。又は、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれる。
【００１０】
また、以下に示す実施形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、各ブロックの構成部分の配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲に基づいて定められる。
【００１１】
一般に、同期回路においてデータを伝送する場合に、伝送路上で生じる伝送遅延がシステムクロック信号の周期より長い場合には、伝送路上にフリップフロップ回路などの遅延回路を挿入する。遅延回路を挿入することで、伝送路を複数の区間に分割し、１つの区間では伝送遅延がクロック周期に収まるように回路を構成することができる。
【００１２】
複数のプロセッサコアを有するマルチコアプロセッサ回路において、複数のプロセッサコアの基準となるカウンター値を各プロセッサコアに分配する際には、例えば図８に示すように、２分木を形成するように遅延回路２０を配置し、各プロセッサコア３０は２分木の葉に接続する回路構成が考えられる。この構造によれば、基準となるカウンター回路１０から各プロセッサコア３０に到達するまでに経由する遅延回路２０の段数が同じとなり、各プロセッサコア３０はあるサイクルにおいて同じカウンター値を取得することができる。
【００１３】
しかし、この２分木構造の回路構成では、カウンター回路１０から各プロセッサコア３０までの遅延回路２０の段数を同じにする必要があるという制約があり、また２分木構造であるため配線量が多くなるという問題が考えられる。
【００１４】
本発明の各実施形態では、この２分木構造の問題を解決するように、複数のプロセッサコアを互いに直列になるように伝送路上に接続したものである。
【００１５】
以下、本発明の実施形態について図面を参照しながら説明する。
【００１６】
（第１の実施形態）
図１を参照して各部の構成について説明する。図１は本発明の第１の実施形態に係るマルチコアプロセッサ回路の機能ブロック図である。
【００１７】
カウンター回路１は、カウンター値Ｃｏｕｎｔ_０とスタートストップビット信号を出力する。カウンター回路１には、伝送路１００とスタートストップビット信号伝送路１１０が接続される。カウンター回路１から出力されるカウンター値Ｃｏｕｎｔ_０は伝送路１００により伝送される。また、カウンター回路１から出力されるスタートストップビット信号はスタートストップビット信号伝送路１１０により伝送される。
【００１８】
伝送路１００上には、複数の同期回路１１，．．．，１４と、ノード４１，．．．，４４が交互に設けられる。各同期回路１１，．．．，１４は、それぞれ遅延回路２１，．．．，２４と、補正回路３１，．．．，３４により構成される。同期回路１１，．．．，１４は、伝送路１００から入力する各カウンター値Ｃｏｕｎｔ_０，．．．，Ｃｏｕｎｔ_３に、後述のように、１周期（１タイムサイクル）の遅延を与え、さらに１を加算して、カウンター値Ｃｏｕｎｔ１，．．．，Ｃｏｕｎｔ_４として伝送路１００に出力する。また、スタートストップビット信号伝送路１１０上には、複数の遅延回路８１，．．．，８４と、ノード９１，．．．，９４が交互に設けられる。遅延回路８１，．．．，８４は、伝送路１１０から入力するスタートストップビット信号に、後述する遅延を与え、スタートストップビット信号伝送路１１０上と、補正回路３１，．．．，３４に出力する。
【００１９】
各同期回路１１，．．．，１４と対応するノード４１，．．．，４４と、各遅延回路８１，．．．，８４と対応するノード９１，．．．，９４に、プロセッサコア５１，．．．，５４が接続される。
【００２０】
各プロセッサコア５１，．．．，５４には、対応する各同期回路１１，．．．，１４から各ノード４１，．．．，４４を介してカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４が入力する。また、各プロセッサコア５１，．．．，５４には、対応する各遅延回路８１，．．．，８４から各ノード９１，．．．，９４を介してスタートストップビット信号が入力する。
【００２１】
各プロセッサコア５１，．．．，５４は、記憶レジスタ６１，．．．，６４を備える。記憶レジスタ６１，．．．，６４は、各プロセッサコア５１，．．．，５４に入力するカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４を格納する。各プロセッサコア５１，．．．，５４は、入力するスタートストップビット信号を参照して、各記憶レジスタ６１，．．．，６４に格納されたカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４が同じ値となったとき、このカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４を取得する。これにより、各プロセッサコア５１，．．．，５４が取得するカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４を同期化することができる。
【００２２】
また、各プロセッサコア５１，．．．，５４は、電源管理モジュール７１，．．．，７４を備える。電源管理モジュール７１，．．．，７４は、対応する各プロセッサコア５１，．．．，５４に電源、システムクロック信号を供給する。プロセッサコア５１，．．．，５４は、電源管理モジュール７１，．．．，７４をプロセッサコアの外部に備えていてもよいし、又は、プロセッサコアの内部に備えていてもよい。
【００２３】
さらに、図１を参照して、各部の構成について詳細に説明する。
【００２４】
カウンター回路１は、例えば、３２ビットカウンター回路により構成される。３２ビットカウンター回路は、システムクロック信号が３２サイクル入力する毎に、１カウントアップする３２ビットのカウンター値Ｃｏｕｎｔ_０を生成する。
【００２５】
さらに、カウンター回路１は生成したカウンター値Ｃｏｕｎｔ_０をシリアル化し、最下位ビットから順にシステムクロック信号１サイクル毎に１ビットずつ出力する。このため、カウンター回路１が３２ビットのカウンター値Ｃｏｕｎｔ_０を出力するにはシステムクロック信号３２サイクルの時間を要する。ここで、システムクロック信号１サイクルの時間を１タイムサイクルと定義する。また、システムクロック信号３２サイクルの時間を１タイムスロットと定義する。
【００２６】
また、カウンター回路１は、スタートストップビット信号を出力する。スタートストップビット信号は、３２ビットの信号であり、カウンター値Ｃｏｕｎｔ_０のスタート位置を示すスタートビット信号と、ストップ位置を示すストップビット信号から構成される。カウンター回路１は、スタートストップビット信号を最下位ビットから順にシステムクロック信号１サイクル毎に１ビットずつ出力する。このため、スタートストップビット信号は１ビット目（最下位ビット）がスタートビット信号であり、３２ビット目がストップビット信号である。
【００２７】
伝送路１００は、カウンター回路１に接続され、カウンター回路１から出力されるカウンター値Ｃｏｕｎｔ_０を伝送する。伝送路１００上には、複数の同期回路１１，．．．，１４とノード４１，．．．，４４が交互に設けられる。また、伝送路１００は同期回路１１，．．．，１４が出力するカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４も伝送する。
【００２８】
同期回路１１，．．．，１４は、それぞれ遅延回路２１，．．．，２４と補正回路３１，．．．３４により構成される。遅延回路２１，．．．，２４は、カウンター値が入力すると、このカウンター値を１タイムスロット遅らせる。補正回路３１，．．．３４は、カウンター値が入力すると、後述する、遅延回路８１，．．．，８４から入力するスタートストップビット信号を参照して、カウンター値に１を加算する。このため、同期回路１１，．．．，１４は、カウンター値Ｃｏｕｎｔ_０，．．．，Ｃｏｕｎｔ_３が入力すると、このカウンター値を１タイムスロット遅らせ、かつ１を加算してカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４として出力する。
【００２９】
スタートストップビット信号伝送路１１０は、カウンター回路１に接続され、カウンター回路１から出力されるスタートストップビット信号を伝送する。スタートストップビット信号伝送路１１０上には、複数の遅延回路８１，．．．，８４とノード９１，．．．９４が交互に設けられる。
【００３０】
遅延回路８１，．．．，８４は、スタートストップビット信号が入力すると、このスタートストップビット信号に１タイムスロットの遅延を与え、スタートストップビット信号伝送路１１０に出力する。また、遅延回路８１，．．．，８４は、スタートストップビット信号が入力すると、このスタートストップビット信号に１タイムサイクルの遅延を与え、対応する同期回路１１，．．．，１４の補正回路３１，．．．，３４に出力する。
【００３１】
プロセッサコア５１，．．．，５４は、伝送路１００上の対応するノード４１，．．．，４４と、
スタートストップビット信号伝送路１１０上の対応するノード９１，．．．，９４に接続される。プロセッサコア５１，．．．，５４に、対応する同期回路１１，．．．，１４からノード４１，．．．，４４を介して、カウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ４が入力する。また、プロセッサ５１，．．．，５４に、対応する遅延回路８１，．．．，８４からノード９１，．．．，９４を介してからスタートストップビット信号が入力する。プロセッサコア５１，．．．，５４はそれぞれ記憶レジスタ６１，．．．，６４を備える。記憶レジスタ６１，．．．，６４は各プロセッサコア５１，．．．，５４に入力するカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４を、記憶レジスタ６１，．．．，６４に格納する。プロセッサコア５１，．．．，５４は、すべてのカウンター値Ｃｏｕｎｔ_０，．．．，Ｃｏｕｎｔ_4が同じ値となるタイムサイクルにおいて、各記憶レジスタ６１，．．．，６４に格納されたカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４を取得する。
【００３２】
また、プロセッサコア５１，．．．，５４は、それぞれ電源管理モジュール７１，．．．，７４を備える。電源管理モジュール７１，．．．，７４は、対応する各プロセッサ５１，．．．，５４に電源、システムクロック信号を供給する。電源管理モジュール７１，．．．，７４が対応するプロセッサコア５１，．．．，５４への電源供給を遮断しても、カウンター回路１と同期回路３１，．．．，３４と遅延回路８１，．．．，８４は動作を続ける。
【００３３】
次に、図２を参照して同期回路１１，．．．，１４と、遅延回路８１，．．．，８４とプロセッサコア５１，．．．，５４の構成と動作について説明する。図２は、同期回路１１と遅延回路８１とプロセッサコア５１の機能ブロック図である。ここでは、例として、同期回路１１と、遅延回路８１と、プロセッサコア５１の構成と動作について説明するが、他の同期回路１２，．．．，１４、遅延回路８２，．．．，８４、プロセッサコア５２，．．．，５４についても同様の構成と動作である。
【００３４】
まず、各機能ブロックの構成と個々の動作について説明する。
【００３５】
同期回路１１は、遅延回路２１と、補正回路３１により構成される。
【００３６】
遅延回路２１は、前段遅延回路２１ａと、後段遅延回路２１ｂとにより構成される。前段回路２１ａは１つのフリップフロップ回路から構成され、後段遅延回路２１ｂは３１個のフリップフロップ回路から構成される。それぞれのフリップフロップ回路はシステムクロック信号により同期される。このため、１つのフリップフロップ回路は、カウンター値に１タイムサイクルの遅延を与える。遅延回路２１は合計３２個のフリップフロップ回路により構成されるため、入力するカウンター値に１タイムスロット（３２タイムサイクル）の遅延を与える。
【００３７】
補正回路３１は、加算器１２１と、論理回路１２２と、キャリービット保持回路１２３と、スタートビット信号回路１２４により構成される。
【００３８】
加算器１２１には、前段遅延回路２１ａからカウンター値Ｃｏｕｎｔ_０と、論理回路１２２から後述する加算値が入力する。なお、カウンター値Ｃｏｕｎｔ_０は、最下位ビットから順に１タイムサイクル毎に１ビットずつ入力する。このため、加算器１２１は、１タイムサイクル毎にカウンター値の各ビットと加算値を加算し、加算結果を後段遅延回路２１ｂに出力する。また、加算器１２１は、加算による桁上がりをキャリービット信号としてキャリービット保持回路１２３に出力する。キャリービット信号は、桁上がりが発生した場合には１であり、桁上がりが発生しなかった場合には０である。
【００３９】
キャリービット保持回路１２３は、１つのフリップフロップ回路から構成される。フリップフロップ回路は、システムクロック信号により同期される。このため、キャリービット保持回路１２３は、加算器１２１から入力するキャリービット信号に１タイムサイクルの遅延を与え、論理回路１２２に出力する。
【００４０】
スタートビット信号回路１２４には、スタートストップビット信号が入力する。スタートビット信号回路１２４は、スタートビット信号が入力するタイムサイクルには、１（アクティブ）を出力する。また、スタートビット信号以外の信号が入力するタイムサイクルには、０（インアクティブ）を出力する。
【００４１】
論理回路１２２には、スタートビット信号回路１２４からの信号と、キャリービット保持回路１２３からキャリービット信号が入力する。論理回路１２２は、スタートビット信号回路１２４からの信号が１（アクティブ）のタイムサイクルには、１を出力する。また、スタートビット信号回路１２４からの信号が０（インアクティブ）のタイムサイクルには、キャリービット保持回路１２３から入力するキャリービット信号を出力する。論理回路１２２からの出力は、加算器１２１に入力する。
【００４２】
遅延回路８１は、前段遅延回路８１ａと、後段遅延回路８１ｂとにより構成される。前段遅延回路８１ａは１つのフリップフロップ回路から構成され、後段遅延回路８１ｂは３１個のフリップフロップ回路により構成される。それぞれのフリップフロップ回路はシステムクロック信号により同期される。このため、１つのフリップフロップ回路は、カウンター値に１タイムサイクルの遅延を与える。前段遅延回路８１ａは、入力するスタートストップビット信号に１タイムサイクルの遅延を与え、スタートビット信号回路１２４と、後段遅延回路８１ｂに出力する。後段遅延回路８１ｂは入力したスタートストップビット信号に、さらに３１タイムサイクルの遅延を与える。これにより、スタートストップビット信号は１タイムスロットの遅延を与えられ、遅延回路８１からスタートストップビット信号伝送路１１０に出力される。
【００４３】
プロセッサ回路５１に、同期回路１１からノード４１を介してカウンター値Ｃｏｕｎｔ_１が入力する。また、プロセッサコア５１に、対応する遅延回路８１からノード９１を介してスタートストップビット信号が入力する。プロセッサコア５１は、記憶レジスタ６１を備える。記憶レジスタ６１は、プロセッサコア５１に同期回路１１から入力するカウンター値Ｃｏｕｎｔ_１を格納する。
【００４４】
また、電源管理モジュール７１，．．．，７４は、対応する各プロセッサ５１，．．．，５４に電源、システムクロック信号を供給する。電源管理モジュール７１，．．．，７４が対応するプロセッサコア５１，．．．，５４への電源供給を遮断しても、カウンター回路１と同期回路３１，．．．，３４と遅延回路８１，．．．，８４は動作を続ける。このため、電源管理モジュール７１，．．．，７４がプロセッサコア５１，．．．，５４への電源供給を再開すると、プロセッサコア５１，．．．，５４は対応する同期回路１１，．．．，１４からカウンター値を取得することにより、カウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_4を同期化させることができる。
【００４５】
次に、図２、図３を参照して、同期回路１１，．．．，１４と、遅延回路８１，．．．，８４とプロセッサコア５１，．．．，５４の動作について詳細に説明する。
【００４６】
以下、説明の便宜上、３２ビットのカウンター値Ｃｏｕｎｔ_０の最下位ビットが同期回路１１に入力するタイムサイクルと、カウンター値Ｃｏｕｎｔ_０の上位ビット（最下位ビット以外のビット）が入力する各タイムサイクルについて分けて説明する。また、ここでは、例として同期回路１１と遅延回路８１とプロセッサコア５１の動作について説明するが、他の同期回路１２，．．．，１４、遅延回路８２，．．．，８４、プロセッサコア５２，．．．，５４についても同様の構成と動作である。
【００４７】
まず、３２ビットのカウンター値Ｃｏｕｎｔ_０の最下位ビットが同期回路１１に入力するタイムサイクルについて説明する。このタイムサイクルにおいて、スタートビット信号が遅延回路８１に入力する。
【００４８】
カウンター値Ｃｏｕｎｔ_０の最下位ビットが、同期回路１１に入力すると、前段遅延回路２１ａは、このカウンター値Ｃｏｕｎｔ_０に１タイムサイクルの遅延を与え、加算器１２１に出力する。一方、前段遅延回路８１ａは、スタートビット信号にタイムサイクルの遅延を与えた後、スタートビット信号回路１２４に出力する。スタートビット信号回路１２４は、スタートビット信号が入力すると、１（アクティブ）を論理回路１２２に出力する。論理回路１２２は、スタートビット信号回路１２４から１（アクティブ）が入力すると、加算値として１を出力する。これにより、加算器１２１に、同じタイムサイクルにカウンター値Ｃｏｕｎｔ_０の最下位ビットと、加算値として１が入力する。加算器１２１は、カウンター値Ｃｏｕｎｔ_０の最下位ビットと、１を加算し、加算結果を後段遅延回路２１ｂに出力する。後段遅延回路２１ｂは、カウンター値Ｃｏｕｎｔ_０の最下位ビットに、さらに３１タイムサイクルの遅延を与える。これにより、同期回路１１はカウンター値Ｃｏｕｎｔ_０に合計で１タイムスロットの遅延を与え、かつ１を加算し出力する。また、加算器１２１は、加算による桁上がりをキャリービット信号としてキャリービット保持回路１２３に出力する。キャリービット信号は、桁上がりが発生した場合には１であり、桁上がりが発生しなかった場合には０である。
【００４９】
次に、３２ビットのカウンター値Ｃｏｕｎｔ_０の上位ビット（最下位ビット以外のビット）が同期回路１１に入力する各タイムサイクルについて説明する。このタイムサイクルにおいて、遅延回路８１に入力するスタートストップビット信号は、スタートビット信号ではない。
【００５０】
カウンター値Ｃｏｕｎｔ_０の上位ビットが、同期回路１１に入力すると、前段遅延回路２１ａは、このカウンター値Ｃｏｕｎｔ_０に１タイムサイクルの遅延を与えた後、加算器１２１に出力する。一方、前段遅延回路８１ａは、スタートストップビット信号に１タイムサイクルの遅延を与えた後、スタートビット信号に出力する。スタートビット信号回路１２４は、スタートビット信号以外の信号が入力すると、論理回路１２２に０（インアクティブ）を出力する。論理回路１２２は、スタートビット信号回路１２４から０（インアクティブ）が入力すると、キャリービット信号回路１２３から入力するキャリービット信号を加算値として出力する。これにより、加算器１２１には、同じタイムサイクルにカウンター値Ｃｏｕｎｔ_０の上位ビットと、キャリービット信号が入力する。加算器１２１は、カウンター値Ｃｏｕｎｔ_０の上位ビットと、キャリービット信号を加算し、加算結果を後段遅延回路２１ｂに出力する。後段遅延回路２１ｂは、、カウンター値Ｃｏｕｎｔ_０の上位ビットにさらに３１タイムサイクルの遅延を与える。これにより、同期回路１１は、カウンター値Ｃｏｕｎｔ_０に合計で１タイムスロットの遅延を与え、かつ下位ビットからのキャリービット信号を加算した後に出力する。また、加算器１２１は、加算による桁上がりをキャリービット信号としてキャリービット保持回路１２３に出力する。キャリービット信号は、桁上がりが発生した場合には１であり、桁上がりが発生しなかった場合には０である。
【００５１】
このように、加算器１２１はカウンター値Ｃｏｕｎｔ_０の最下位ビットが入力すると、１を加算する。また、加算器１２１はカウンター値Ｃｏｕｎｔ_０の上位ビットが入力すると、下位ビットからの桁上がりであるキャリービット信号を加算する。このような動作によれば、同期回路１１は入力するカウンター値Ｃｏｕｎｔ_０に、遅延回路２１により１タイムスロットの遅延が与え、かつ補正回路３１により１を加算し、カウンター値Ｃｏｕｎｔ_１として出力する。
【００５２】
以上のように同期回路１１，．．．，１４が動作することにより、同期回路１１，．．．，１４が出力する各カウンター値Ｃｏｕｎｔ_1，．．．，Ｃｏｕｎｔ_４は、図３に示すタイミングチャートのようになる。
【００５３】
例えば、タイムスロット０において、同期回路１１はカウンター値Ｃｏｕｎｔ_０（＝０）が入力すると、このカウンター値Ｃｏｕｎｔ_０に１タイムスロットの遅延を与え、かつ１を加算してカウンター値Ｃｏｕｎｔ_１（＝１）として出力する。これにより、タイムスロット１において、同期回路１１が出力するカウンター値Ｃｏｕｎｔ_１（＝１）は、カウンター回路１が出力するカウンター値Ｃｏｕｎｔ_０（＝１）と同じ値となる。各同期回路１１，．．．，１４が同様の動作をすることにより、タイムスロット４において、すべての同期回路１１，．．．，１４が出力するカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４が同じ値となる。
【００５４】
プロセッサコア５１，．．．，５４は、図３のタイムスロット４に示すように、すべてのカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４が同じ値となるタイムスロットのストップビット信号が入力するタイムサイクルにおいて、各記憶レジスタ６１，．．．，６４に格納されたカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４を取得する。これにより、すべてのプロセッサコア５１，．．．，５４が取得するカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４を同期させることができる。
【００５５】
本発明の第１の実施形態によれば、各プロセッサコア５１，．．．，５４が有するカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４をシステムクロック信号１サイクル（１タイムサイクル）単位で合わせることができる。
【００５６】
（第２の実施形態）
本発明の第２の実施形態に係るマルチコアプロセッサ回路について図４を参照して説明する。第２の実施形態に係るマルチコアプロセッサは、第１の実施形態に係るマルチコアプロセッサ回路において、伝送路１００が少なくとも２つ以上に分岐していることを特徴とする。
【００５７】
図４に伝送路１００を２分岐とした回路構成を示す。分岐後の伝送路１００上に設けられた同期回路１３，１４も、第１の実施形態の同期回路と同様の動作をすることにより、同期回路１１，．．．，１４が出力するカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４は、図３に示すようになる。これにより、第１の実施形態と同様にして、マルチコアプロセッサコア５１，．．．，５４が有するカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４を同期化させることができる。
【００５８】
本発明の第２の実施形態によれば、伝送路１００を分岐させることにより、マルチコアプロセッサ回路をより自由度の高いレイアウトで構成することができる。
【００５９】
（第３の実施形態）
本発明の第３の実施形態に係るマルチコアプロセッサ回路について図５を参照して説明する。第３の実施形態に係るマルチコアプロセッサは、伝送路１００がリング状に形成され、この伝送路１００にノード４１，．．．，４４を介して複数のプロセッサコア５１，．．．，５４が接続される。さらに、複数のプロセッサコア５１，．．．，５４のうち、少なくとも１つのプロセッサコアがカウンター回路を備え、カウンター回路を備えたプロセッサコアのうち、任意の１つのプロセッサコア５４が、複数の前記プロセッサコア５１，．．．，５４の基準となるカウンター値Ｃｏｕｎｔ_０を伝送路１００に出力する。伝送路１００は、このカウンター値Ｃｏｕｎｔ_０を伝送する。伝送路１００上に設けられた同期回路１１，．．．，１４から出力されるカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４が同じ値となったとき、各々のプロセッサコア５１，．．．，５４は、各々に対応する前記同期回路から出力されるカウンター値を取得する。これにより、すべてのプロセッサコア５１，．．．，５４が有するカウンター値を同期化させることができる。
【００６０】
図５では、実施形態の一例として、すべてのプロセッサコア５１，．．．，５４がカウンター回路１，．．．，４を備える場合について説明する。第１の実施形態と同様の構成については同様の動作をするため、第１の実施形態と同一符号で示し、構成と動作の説明は省略する。
【００６１】
図５に示すように、プロセッサコア５１，．．．，５４は、ノード４１，．．．，４４を介して伝送路１００に接続され、ノード９１，．．．，９４を介してスタートストップビット信号伝送路１１０に接続される。さらに、プロセッサコア５１，．．．，５４は、例えば、マルチプレクサ１４１，．．．，１４４を介して伝送路１００に接続される。プロセッサコア５１，．．．，５４が備えるカウンター回路１，．．．，４は、それぞれカウンター値を端子Ｂ０に出力し、スタートストップビット信号を端子Ｂ１に出力する。
【００６２】
カウンター回路１，．．．，４を備えたプロセッサコア５１，．．．，５４のうち任意の１つのプロセッサコアがマスタープロセッサコアとなる。マスタープロセッサコアは、すべてのプロセッサコアの基準となるカウンター値Ｃｏｕｎｔ_０と、このカウンター値Ｃｏｕｎｔ_０のスタートストップビット信号を出力する。ここで、例えば、プロセッサコア５４がマスタープロセッサコアとなる場合について説明する。
【００６３】
マスタープロセッサコア５４は、マルチプレクサの信号Ｍをアクティブにすることにより、マルチプレクサ１４４の端子Ｂ０とＹ０、及び端子Ｂ１とＹ１を接続する。これにより、マスタープロセッサコア５４が備えるカウンター回路４のカウンター値を基準となるカウンター値Ｃｏｕｎｔ_０として伝送路１００上に出力する。また、カウンター回路４は、カウンター値Ｃｏｕｎｔ_０のスタートストップビット信号をスタートストップビット信号伝送路１１０上に出力する。一方、マスタープロセッサコア以外のプロセッサコア５２，．．．，５４は、マルチプレクサの信号Ｍをインアクティブにすることにより、マルチプレクサの端子Ａ０とＹ０、及び端子Ａ１と端子Ｙ１を接続する。これにより、第１の実施形態同様に、マスタープロセッサ５４のカウンター回路４を基準として、プロセッサコア５１，．．．，５４のカウンター値Ｃｏｕｎｔ_０，．．．，Ｃｏｕｎｔ_４を同期化させることができる。
【００６４】
第３の実施形態に係るマルチコアプロセッサ回路によれば、各プロセッサコアがカウンター回路を備えている場合に、どのプロセッサコアでもマスタープロセッサコアになることができるという利点がある。
【００６５】
（第４の実施形態）
本発明の第４の実施形態に係るマルチコアプロセッサ回路について図６を参照して説明する。第４の実施形態では、第１の実施形態に、デバッカー回路２００と割り込み発生回路２１１，．．．，２１４が追加された構成となっている。デバッカー回路２００と割り込み発生回路２１１，．．．，２１４は、プロセッサコア５１，．．．，５４が同じ値のカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４を取得したとき、プロセッサコア５１，．．．，５４をデバックモードに移行させる機能を有する。第１の実施形態と同様の構成については同様の動作をするため、第１の実施形態と同一符号で示し、構成と動作の説明は省略する。
【００６６】
第４の実施形態のマルチコアプロセッサ回路は、後述するように、プリセットモード動作と割り込みモード動作の２つの動作モードで動作する。この２つの動作モードはデバッカー回路２００により制御される。
【００６７】
デバッカー回路２００は、動作モードをプリセットモード動作に移行させるときには、プリセットモード信号線２０２にプリセットモード信号を出力することにより、同期回路１１，．．．，１４と割り込み発生回路２１１，．．．，２１４を制御する。また、デバッカー回路２００は、動作モードを割り込みモードに移行させるときは、割り込みモード信号を割り込み信号線２０３に出力することにより、割り込み発生回路を制御する。また、デバッカー回路２００は、制御線２０１によりカウンター回路１を制御する。
【００６８】
割り込み発生回路２１１，．．．，２１４は、対応するプロセッサコア５１，．．．，５４と並列に伝送路１００とスタートストップビット信号１１０に接続される。割り込み発生回路２１１，．．．，２１４は、記憶レジスタ２６１，．．．，２６４を備える。記憶レジスタ２６１，．．．，２６４は、割り込み発生回路２１１，．．．，２１４に、対応する同期回路１１，．．．，１４から入力するカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４を格納する。さらに、割り込み発生回路２１１，．．．，２１４は、スタートストップビット信号を参照して、記憶レジスタ２６１，．．．，２６４に格納されたカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４が同じ値となったとき、このカウンター値を取得する。
【００６９】
また、割り込み発生回路２１１，．．．，２１４は、対応するプロセッサ回路５１，．．．，５４にデバック割り込み要求信号線２２１，．．．，２２４により接続されている。割り込み発生回路２１１，．．．，２１４は、割り込みモード動作時に、割り込み発生回路２１１，．．．，２１４が有するカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４と、対応するプロセッサコア５１，．．．，５４が有するカウンター値Ｃｏｕｎｔ_１，．．．，Ｃｏｕｎｔ_４とが一致したとき、デバック割り込み要求信号線２２１，．．．，２２４に割り込み要求信号を出力することにより、対応するプロセッサコア５１，．．．，５４をデバックモードに移行させる。
【００７０】
次に、図７を参照して第４の実施形態の同期回路２３１，．．．，２３４の構成について説明する。図７は、第４の実施形態の同期回路２３１、遅延回路８１、プロセッサコア５１、割り込み発生回路２１１の機能ブロック図である。ここで、例として、同期回路２３１、遅延回路８１、プロセッサコア５１、割り込み発生回路２１１について説明するが、他の同期回路２３２，．．．，２３４、遅延回路９２，．．．，９４、プロセッサコア５２，．．．，５４、割り込み発生回路２１２，．．．，２１４についても同様の構成と動作である。第４の実施形態の同期回路２３１は、図２に示した第１の実施形態の同期回路１１にＮＯＴ回路２５０とＡＮＤ回路２５１が追加されている。
【００７１】
同期回路２３１はデバッカー回路２００からのプリセットモード信号により、プリセットモード動作と、割り込みモード動作に切り替えられる。
【００７２】
プリセットモード動作時には、同期回路２３１にはデバッカー回路２００からプリセットモード信号アクティブ（＝１）が入力する。このため、プリセットモード動作時には、ＮＯＴ回路２５０の出力は０となり、ＡＮＤ回路２５１の出力は常に０となる。これにより、プリセットモード動作時には、加算器１２１は入力するカウンター値に常に０を加算する。
【００７３】
割り込みモード動作時には、デバッカー回路２００から入力するプリセットモード信号はインアクティブ（＝０）となる。このため、割り込みモード動作時には、ＮＯＴ回路２５０の出力は１となり、ＡＮＤ回路２５１の出力は常に論理回路１２２からの入力となる。これにより、割り込みモード動作時には、加算器１２１は入力するカウンター値に論理回路１２２から入力する値を加算する。つまり、割り込みモード動作時には、補正回路２４１，．．．，２４４は第１の実施形態の補正回路３１，．．．，３４と同様に動作する。
【００７４】
次に、図６を参照してマルチコアプロセッサの、デバッカー動作についてより詳細に説明する。
【００７５】
まず、プリセットモード動作時には、デバッカー回路２００は、制御線２０１によりカウンター回路１のカウンター値に、例えば、「４」をセットした後、カウンター回路のカウント動作を停止させるとともに、プリセットモード信号をアクティブ（＝１）とする。プリセットモード信号がアクティブ（＝１）となると、補正回路２４１，．．．，２４４は０を加算する動作に切り替わる。このため、カウンター回路１にセットされたカウンター値「４」は、伝送路１００により伝送され、１タイムスロットずつ遅れて、同期回路２３１，．．．，２３４から出力される。これにより、各プロセッサ５１，．．．，５４、及び各割り込み発生回路２１１，．．．，２１４にカウンター値「４」が入力する。割り込み発生回路２１１，．．．，２１４は、このカウンター値「４」を記憶レジスタ２６１，．．．，２６４に格納する。
【００７６】
次に、割り込みモード動作に移行する。まず、デバッカー回路２００はカウンター回路１に「０」をセットした後、プリセットモード信号をインアクティブ（＝０）とする。
【００７７】
次に、デバッカー回路２００は割り込み信号をアクティブ（＝１）とする。次に、デバッカー回路２００は制御線２０１により、停止しているカウンター回路１を動作させる。これにより、マルチコアプロセッサ回路は第１の実施形態のように、同期動作を開始する。このため、各同期回路が出力するカウンター値は図３のタイミングチャートのようになる。
【００７８】
次に、図３に示すように、各同期回路２３１，．．．，２３４がカウンター値Ｃｏｕｎｔ１，．．．，Ｃｏｕｎｔ４を出力すると、第１の実施形態と同様にタイムスロット４において、プロセッサコアはカウンター値「４」を取得する。これにより、プロセッサコア５１，．．．，５４がタイマー値「４」を取得するタイムサイクルにおいて、割り込み発生回路２１１，．．．，２１４が格納するカウンター値「４」と一致する。このタイムサイクルにおいて割り込み発生回路２１１，．．．，２１４は対応するプロセッサコア５１，．．．，５４をデバックモードに移行させる。これにより、、複数のプロセッサコアをシステムクロック信号１サイクル（１タイムサイクル）の単位で、同時にデバックモードに移行させることができる。
【００７９】
デバッカー作業では、複数のプロセッサを正確に同じタイミングでデバックモードに移行させることで各プロセッサ状態を正確に把握することが可能となり、デバックが容易になる。本発明の第４の実施形態によれば、各プロセッサコアをシステムクロック信号１サイクルの単位で、同時にデバックモードに移行させることができ、デバックを容易にすることができる。
【００８０】
本発明は、上記した実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲で、種々、変更して実施できることは勿論である。例えば、実施形態では、４個のプロセッサコアを備えたマルチコアプロセッサを用いて説明したが、２個以上のプロセッサコアを備えたマルチコアプロセッサに適用できる。また、本発明は、複数のプロセッサを備えたマルチプロセッサシステムにも適用可能である。
【図面の簡単な説明】
【００８１】
【図１】本発明の第１の実施形態に係るマルチコアプロセッサの機能ブロック図である。
【図２】本発明の第１の実施形態に係るマルチコアプロセッサの同期回路と遅延回路とプロセッサコアの機能ブロック図である。
【図３】本発明の第１の実施形態に係るマルチコアプロセッサのカウンター値のタイミングチャートである。
【図４】本発明の第２の実施形態に係るマルチコアプロセッサの機能ブロック図である。
【図５】本発明の第３の実施形態に係るマルチコアプロセッサの機能ブロック図である。
【図６】本発明の第４の実施形態に係るマルチコアプロセッサの機能ブロック図である。
【図７】本発明の第４の実施形態に係るマルチコアプロセッサの同期回路と遅延回路と割り込み発生回路とプロセッサコアの機能ブロック図である。
【図８】マルチコアプロセッサの構成例を示した機能ブロック図である。
【符号の説明】
【００８２】
１、２、３、４、１０  カウンター回路
１１、１２、１３、１４、２３１、２３２、２３３、２３４  同期回路
２０、２１、２２、２３、２４、８１、８２、８３、８４  遅延回路
２１ａ、８１ａ  前段遅延回路
２１ｂ、８１ｂ  後段遅延回路
３１、３２、３３、３４、２４１、２４２、２４３、２４４  補正回路
４１、４２、４３、４４、９１、９２、９３、９４  ノード
３０、５１、５２、５３、５４  プロセッサコア
６１、６２、６３、６４、２６１、２６２、２６３、２６４  記憶レジスタ
７１、７２、７３、７４  電源管理モジュール
１００  伝送路
１１０  スタートストップビット信号伝送路
１２１  加算器
１２２  論理回路
１２３  キャリービット保持回路
１２４  スタートビット回路
１４１、１４２、１４３、１４４  マルチプレクサ
２００  デバッカー回路
２０１  制御線
２０２  プリセットモード信号線
２０３  割り込み信号線
２１１、２１２、２１３、２１４  割り込み発生回路
２２１、２２２、２２３、２２４  デバック割り込み要求信号線
２５０  ＮＯＴ回路
２５１  ＡＮＤ回路
Ｃｏｕｎｔ_０、Ｃｏｕｎｔ_１、Ｃｏｕｎｔ_３、Ｃｏｕｎｔ_４  カウンター値
【図１】
2010140148.tif 000003
【図２】
2010140148.tif 000004
【図３】
2010140148.tif 000005
【図４】
2010140148.tif 000006
【図５】
2010140148.tif 000007
【図６】
2010140148.tif 000008
【図７】
2010140148.tif 000009
【図８】
2010140148.tif 000010