(57)【要約】【課題】  プロセッサの性能を詳細に測定可能にする。【解決手段】  プロセッサは、演算を実行する複数のプロセッサコアと、イベントが発生したか否かを示す発生情報を、複数のプロセッサコア間で転送する転送制御部とを有し、各プロセッサコアは、イベントの発生回数を発生情報に基づいてカウントするカウンタと、イベントとイベントの発生回数をカウントするカウンタとの対応関係が設定されるレジスタとを有している。【選択図】  図１
2014052962.tif 000002
【特許請求の範囲】
【請求項１】
演算を実行する複数のプロセッサコアと、
イベントが発生したか否かを示す発生情報を、前記複数のプロセッサコア間で転送する転送制御部とを備え、
前記各プロセッサコアは、
前記イベントの発生回数を前記発生情報に基づいてカウントするカウンタと、
前記イベントと前記イベントの発生回数をカウントする前記カウンタとの対応関係が設定されるレジスタとを備えていること
を特徴とするプロセッサ。
【請求項２】
前記各プロセッサコアは、前記レジスタに設定された前記対応関係に基づいて選択される前記イベントの前記発生情報を、前記対応関係により指定される前記カウンタに転送する選択部を有し、
前記各プロセッサコアの前記カウンタは、前記選択部から転送される前記発生情報に基づいて、前記イベントの発生回数をカウントすること
を特徴とする請求項１記載のプロセッサ。
【請求項３】
前記各プロセッサコアは、前記選択部から前記カウンタに前記転送制御部を介さずに転送される前記発生情報と、前記選択部から前記カウンタに前記転送制御部を介して転送される前記発生情報とを同期させるタイミング調整部を有していること
を特徴とする請求項２記載のプロセッサ。
【請求項４】
前記各プロセッサコアは、前記転送制御部を介さずに前記カウンタに転送される前記発生情報と、前記転送制御部を介して前記カウンタに転送される前記発生情報とを同期させるタイミング調整部を有していること
を特徴とする請求項１記載のプロセッサ。
【請求項５】
演算を実行する複数のプロセッサコアと、イベントが発生したか否かを示す発生情報を前記複数のプロセッサコア間で転送する転送制御部とを備えたプロセッサによって実行され、前記複数のプロセッサコアの少なくとも１つを評価するプロセッサの評価方法であって、
評価対象以外の前記プロセッサコアの演算動作を停止し、
評価対象の前記プロセッサコアで発生する前記イベントと前記イベントの発生回数をカウントするカウンタとの対応関係をレジスタに設定し、
前記評価対象の前記プロセッサコアを動作させ、前記イベントの発生回数を前記対応関係により指定される前記カウンタで前記発生情報に基づいてカウントすること
を特徴とするプロセッサの評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサおよびプロセッサの評価方法に関する。
【背景技術】
【０００２】
プロセッサの性能評価は、例えば、監視対象のイベントの発生回数をカウントすることにより実行される。一般的なプロセッサは、プロセッサ内に搭載されたカウンタ（以下、イベントカウンタとも称する）を用いて、イベントの発生回数をカウントする。近年、複数のプロセッサコアを有するマルチコアプロセッサが普及している。マルチコアプロセッサにおいても、各プロセッサコアのイベントの発生回数を各プロセッサコア内に搭載されたイベントカウンタでカウントする方法が一般的である。なお、プロセッサシステム等の評価方法は種々提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−２７２６２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
同時に監視するイベントの種類は、各プロセッサコア内に搭載されたイベントカウンタの数に依存する。すなわち、各プロセッサコア内に搭載されたイベントカウンタの数より多い種類のイベントを同時に監視することは、困難である。このため、プロセッサの性能を詳細に測定することが困難である。
【０００５】
１つの側面では、本発明の目的は、プロセッサの性能を詳細に測定可能にすることである。
【課題を解決するための手段】
【０００６】
本発明の一形態では、プロセッサは、演算を実行する複数のプロセッサコアと、イベントが発生したか否かを示す発生情報を、複数のプロセッサコア間で転送する転送制御部とを有し、各プロセッサコアは、イベントの発生回数を発生情報に基づいてカウントするカウンタと、イベントとイベントの発生回数をカウントするカウンタとの対応関係が設定されるレジスタとを有している。
【発明の効果】
【０００７】
プロセッサの性能を詳細に測定できる。
【図面の簡単な説明】
【０００８】
【図１】一実施形態におけるプロセッサの例を示している。
【図２】図１に示したカウント部の一例を示している。
【図３】図１に示したレジスタの設定の一例を示している。
【図４】図２に示した選択部の一例を示している。
【図５】図２に示したカウンタの一例を示している。
【図６】図１に示した転送制御部の一例を示している。
【図７】別の実施形態におけるプロセッサの一例を示している。
【図８】図７に示したカウント部の一例を示している。
【図９】図８に示したカウンタの一例を示している。
【図１０】図８に示した使用通知生成部の一例を示している。
【図１１】図７に示した転送制御部の一例を示している。
【図１２】図１１に示した転送信号生成部の一例を示している。
【図１３】図１１に示した制御信号生成部の一例を示している。
【発明を実施するための形態】
【０００９】
以下、実施形態を図面を用いて説明する。
【００１０】
図１は、一実施形態におけるプロセッサＰＳＹＳの例を示している。プロセッサＰＳＹＳは、例えば、演算を実行する複数のプロセッサコアＣＯＲＥを有するマルチコアプロセッサである。なお、プロセッサＰＳＹＳは、複数のプロセッサを有するマルチプロセッサでもよい。このときには、マルチプロセッサに含まれる複数のプロセッサは、プロセッサコアＣＯＲＥをそれぞれ有する。
【００１１】
プロセッサＰＳＹＳは、例えば、演算を実行する複数のプロセッサコアＣＯＲＥ（ＣＯＲＥ１、ＣＯＲＥ２、ＣＯＲＥ３、ＣＯＲＥ４）と、転送制御部ＣＬＴと、インターコネクトＩＮＴＣとを有している。なお、プロセッサコアＣＯＲＥの数は、４つに限定されない。
【００１２】
各プロセッサコアＣＯＲＥは、カウント部ＣＮＴおよびレジスタＲＥＧを有している。カウント部ＣＮＴは、監視対象のイベントの発生回数をカウントする。例えば、カウント部ＣＮＴは、イベントの発生回数をカウントするカウンタＣＴＲを有している。なお、イベントは、例えば、プロセッサコアＣＯＲＥを動作させたときに、動作状況に応じて発生する。
【００１３】
レジスタＲＥＧには、例えば、カウント対象のイベントとイベントの発生回数をカウントするカウンタＣＴＲとの対応関係が設定される。例えば、カウント部ＣＮＴは、レジスタＲＥＧに設定された対応関係を示す信号ＲＥＧＩＮＦ（以下、レジスタ情報ＲＥＧＩＮＦとも称する）に基づいて、イベントの発生回数をカウントするカウンタＣＴＲを選択する。
【００１４】
転送制御部ＣＬＴは、各プロセッサコアＣＯＲＥから信号ＥＳＩＧを受け、信号ＥＳＩＧに基づく信号ＥＸＴを各プロセッサコアＣＯＲＥに出力する。信号ＥＳＩＧ、ＥＸＴは、イベントが発生したか否かを示す発生情報である。すなわち、転送制御部ＣＬＴは、イベントが発生したか否かを示す発生情報を、複数のプロセッサコアＣＯＲＥ間で転送する。これにより、例えば、プロセッサコアＣＯＲＥは、カウント対象のイベントが他のプロセッサコアＣＯＲＥで発生したことを認識できる。以下、信号ＥＳＩＧ、ＥＸＴを発生情報ＥＳＩＧ、ＥＸＴとも称する。
【００１５】
インターコネクトＩＮＴＣは、プロセッサコアＣＯＲＥ１−ＣＯＲＥ４に接続されている。例えば、プロセッサコアＣＯＲＥ１−ＣＯＲＥ４は、インターコネクトＩＮＴＣを介してメモリ等にアクセスする。
【００１６】
図２は、図１に示したカウント部ＣＮＴの一例を示している。なお、図２は、プロセッサコアＣＯＲＥ１のカウント部ＣＮＴの一例を示している。プロセッサコアＣＯＲＥ１以外のプロセッサコアＣＯＲＥのカウント部ＣＮＴの構成は、プロセッサコアＣＯＲＥ１のカウント部ＣＮＴと同様である。
【００１７】
カウント部ＣＮＴは、複数の選択部ＤＳＥＬ（ＤＥＳＬ１・・・ＤＥＳＬｎ）、複数のカウンタＣＴＲ（ＣＴＲ１・・・ＣＴＲ６）および複数の論理和回路ＯＲ（ＯＲ２１・・・ＯＲ２６、ＯＲ３１・・・ＯＲ３６、ＯＲ４１・・・ＯＲ４６）を有している。図２の例では、ｎ個のイベントにそれぞれ対応するｎ個の選択部ＤＳＥＬが設けられている。なお、選択部ＤＳＥＬ、信号ＥＶＴ、ＲＥＧＩＮＦの符号の末尾の数字および“ｎ”は、イベントの種類に対応している。同様に、信号ＥＩＮＦの符号の末尾の１桁の数字および“ｎ”は、イベントの種類に対応している。また、信号ＥＩＮＦの符号の末尾の３桁のうちの左側の２桁の数字は、左側から、信号ＥＩＮＦの転送先のプロセッサコアＣＯＲＥおよびカウンタＣＴＲをそれぞれ示している。
【００１８】
図２の例では、各プロセッサコアＣＯＲＥに搭載されるカウンタＣＴＲの数は６個である。なお、カウンタＣＴＲの数は、６個に限定されない。論理和回路ＯＲは、例えば、プロセッサコアＣＯＲＥの数と各プロセッサコアＣＯＲＥのカウンタＣＴＲの数とに応じた数だけ設けられる。例えば、この実施形態では、プロセッサコアＣＯＲＥ１以外のプロセッサコアＣＯＲＥの数が３個であり、各プロセッサコアＣＯＲＥのカウンタＣＴＲの数が６個であるため、論理和回路ＯＲの数は、１８個（１８＝３×６）である。なお、論理和回路ＯＲの数は、１８個に限定されない。
【００１９】
各選択部ＤＳＥＬは、信号ＥＶＴ、ＲＥＧＩＮＦを受け、信号ＥＩＮＦを出力する。信号ＥＶＴは、プロセッサコアＣＯＲＥ１のイベントが発生したか否かを示す発生情報である。例えば、信号ＥＶＴ１に対応するイベントが発生している期間では、信号ＥＶＴ１はアサートされる。そして、信号ＥＶＴ１に対応するイベントが発生していない期間では、信号ＥＶＴ１はネゲートされる。
【００２０】
信号ＲＥＧＩＮＦは、イベントとカウンタＣＴＲとの対応関係を示す信号であり、図１に示したレジスタＲＥＧから読み出される。例えば、レジスタ情報ＲＥＧＩＮＦ１は、信号ＥＶＴ１に対応するイベントの発生回数をどのプロセッサコアＣＯＲＥのどのカウンタＣＴＲでカウントするかを示す情報を有している。
【００２１】
信号ＥＩＮＦは、信号ＥＶＴの情報がレジスタ情報ＲＥＧＩＮＦに基づいて反映された信号である。例えば、選択部ＤＳＥＬ１は、信号ＥＶＴ１がアサートされているとき、信号ＥＶＴ１に対応する信号ＥＩＮＦのうち、レジスタ情報ＲＥＧＩＮＦが示すカウンタＣＴＲに転送される信号ＥＩＮＦをアサートする。また、選択部ＤＳＥＬ１は、信号ＥＶＴ１がネゲートされているとき、信号ＥＶＴ１に対応する信号ＥＩＮＦのうち、レジスタ情報ＲＥＧＩＮＦ１が示すカウンタＣＴＲに転送される信号ＥＩＮＦをネゲートする。
【００２２】
なお、信号ＥＶＴ１に対応する信号ＥＩＮＦのうち、レジスタ情報ＲＥＧＩＮＦ１が示すカウンタＣＴＲに転送される信号ＥＩＮＦ以外の信号ＥＩＮＦは、信号ＥＶＴ１の状態に拘わらず、ネゲートされる。このように、信号ＥＩＮＦは、プロセッサコアＣＯＲＥ１のイベントが発生したか否かを示す発生情報である。以下、信号ＥＶＴ、ＥＩＮＦを発生情報ＥＶＴ、ＥＩＮＦとも称する。
【００２３】
発生情報ＥＩＮＦは、レジスタ情報ＲＥＧＩＮＦにより指定されたプロセッサコアＣＯＲＥのカウンタＣＴＲに転送される。上述したように、信号ＥＩＮＦの符号の末尾の３桁のうちの左側の２桁の数字は、左側から、信号ＥＩＮＦの転送先のプロセッサコアＣＯＲＥおよびカウンタＣＴＲをそれぞれ示している。
【００２４】
例えば、信号ＥＩＮＦ１６ｎは、信号ＥＶＴｎに対応する信号ＥＩＮＦであり、プロセッサコアＣＯＲＥ１のカウンタＣＴＲ６に転送される。また、例えば、信号ＥＩＮＦ２１ｎは、信号ＥＶＴｎに対応する信号ＥＩＮＦである。そして、信号ＥＩＮＦ２１ｎは、論理和回路ＯＲ２１および転送制御部ＣＬＴを介して、プロセッサコアＣＯＲＥ２のカウンタＣＴＲ１に転送される。また、例えば、信号ＥＩＮＦ４６１は、信号ＥＶＴ１に対応する信号ＥＩＮＦである。そして、信号ＥＩＮＦ４６１は、論理和回路ＯＲ４６および転送制御部ＣＬＴを介して、プロセッサコアＣＯＲＥ４のカウンタＣＴＲ６に転送される。
【００２５】
すなわち、選択部ＤＳＥＬ（ＤＥＳＬ１・・・ＤＥＳＬｎ）は、レジスタＲＥＧに設定された対応関係（レジスタ情報ＲＥＧＩＮＦ）に基づいて選択されるカウント対象のイベントの発生情報を、対応関係により指定されるカウンタＣＴＲに転送する。これにより、対応関係により指定されるカウンタＣＴＲは、カウント対象のイベントの発生情報を受けることができる。
【００２６】
なお、選択部ＤＳＥＬ１以外の選択部ＤＳＥＬの動作は、選択部ＤＳＥＬ１と同様である。例えば、各選択部ＤＳＥＬの動作は、信号ＥＶＴ、ＲＥＧＩＮＦ、ＥＩＮＦの符号の末尾の数字を、各選択部ＤＳＥＬの符号の末尾の数字に読み替えることで説明される。
【００２７】
各カウンタＣＴＲは、ｎ個の信号ＥＶＴにそれぞれ対応するｎ個の発生情報ＥＩＮＦをｎ個の選択部ＤＳＥＬからそれぞれ受ける。さらに、各カウンタＣＴＲは、発生情報ＥＸＴを転送制御部ＣＬＴから受ける。そして、各カウンタＣＴＲは、選択部ＤＳＥＬおよび転送制御部ＣＬＴから受けた発生情報ＥＩＮＦ、ＥＸＴに基づいて、イベントの発生回数をカウントする。なお、発生情報ＥＸＴ１１は、例えば、プロセッサコアＣＯＲＥ１以外のプロセッサコアＣＯＲＥのイベントのうち、プロセッサコアＣＯＲＥ１のカウンタＣＴＲ１でカウントされるイベントが発生したか否かを示す発生情報である。
【００２８】
例えば、各カウンタＣＴＲは、選択部ＤＳＥＬおよび転送制御部ＣＬＴから受けた発生情報ＥＩＮＦ、ＥＸＴの少なくとも１つがアサートされているとき、所定のクロック（例えば、プロセッサＰＳＹＳの動作クロック）に同期して、カウントアップする。これにより、イベントの発生回数がカウントされる。カウンタＣＴＲ（ＣＴＲ１・・・ＣＴＲ６）のカウント値を示す信号ＯＵＴ（ＯＵＴ１１・・・ＯＵＴ１６）は、例えば、必要に応じて読み出される。以下、信号ＯＵＴをカウント値ＯＵＴとも称する。
【００２９】
ここで、カウント値ＯＵＴの符号の末尾の２桁の数字は、左側から、カウント値ＯＵＴを出力するプロセッサコアＣＯＲＥおよびカウンタＣＴＲをそれぞれ示している。また、信号ＥＸＴの符号の末尾の２桁の数字は、左側から、信号ＥＸＴを受けるプロセッサコアＣＯＲＥおよびカウンタＣＴＲをそれぞれ示している。
【００３０】
各論理和回路ＯＲは、ｎ個の信号ＥＶＴにそれぞれ対応するｎ個の発生情報ＥＩＮＦをｎ個の選択部ＤＳＥＬからそれぞれ受ける。そして、各論理和回路ＯＲは、ｎ個の選択部ＤＳＥＬから受けたｎ個の発生情報ＥＩＮＦの論理和結果を示す信号ＥＳＩＧを、転送制御部ＣＬＴに出力する。
【００３１】
なお、論理和回路ＯＲの符号の末尾の２桁の数字は、左側から、論理和回路ＯＲの出力信号ＥＳＩＧの転送先のプロセッサコアＣＯＲＥおよびカウンタＣＴＲをそれぞれ示している。また、信号ＥＳＩＧの符号の末尾の３桁の数字は、左側から、信号ＥＳＩＧの転送元のプロセッサコアＣＯＲＥ、信号ＥＳＩＧの転送先のプロセッサコアＣＯＲＥおよびカウンタＣＴＲをそれぞれ示している。
【００３２】
例えば、論理和回路ＯＲ２６は、発生情報ＥＩＮＦ２６１・・・ＥＩＮＦ２６ｎの論理和結果を示す信号ＥＳＩＧ１２６を、プロセッサコアＣＯＲＥ２のカウンタＣＴＲ６に転送制御部ＣＬＴを介して転送する。すなわち、信号ＥＳＩＧ１２６は、プロセッサコアＣＯＲＥ１から転送制御部ＣＬＴを介してプロセッサコアＣＯＲＥ２のカウンタＣＴＲ６に転送される。
【００３３】
ここで、プロセッサコアＣＯＲＥ１以外のプロセッサコアＣＯＲＥのカウント部ＣＮＴの構成は、各要素の符号の末尾のプロセッサコアＣＯＲＥに対応する数字を、対象のプロセッサコアＣＯＲＥに合わせて読み替えることで説明される。例えば、プロセッサコアＣＯＲＥ２では、図２の論理和回路ＯＲ、信号ＥＩＮＦ、ＥＳＩＧ、ＥＸＴ、ＯＵＴの符号の末尾の数字のうちのプロセッサコアＣＯＲＥ１、ＣＯＲＥ２に対応する数字をプロセッサコアＣＯＲＥ２、ＣＯＲＥ１に対応する数字にそれぞれ読み替える。
【００３４】
したがって、プロセッサコアＣＯＲＥ２では、例えば、カウンタＣＴＲの動作は、信号ＥＩＮＦの符号の末尾の３桁のうちの左側の１桁の数字および信号ＥＸＴ、ＯＵＴの符号の末尾の２桁のうちの左側の１桁の数字の“１”を“２”に読み替えることで説明される。また、例えば、プロセッサコアＣＯＲＥ２では、論理和回路ＯＲ２１・・ＯＲ２６は、論理和回路ＯＲ１１・・ＯＲ１６に読み替えられる。すなわち、プロセッサコアＣＯＲＥ２では、論理和回路ＯＲ２１・・・ＯＲ２６の代わりに論理和回路ＯＲ１１・・・ＯＲ１６が設けられる。例えば、論理和回路ＯＲ１１は、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎの論理和結果を示す信号ＥＳＩＧ２１１をプロセッサコアＣＯＲＥ１のカウンタＣＴＲ１に転送制御部ＣＬＴを介して転送する。
【００３５】
なお、カウント部ＣＮＴの構成は、この例に限定されない。例えば、プロセッサコアＣＯＲＥ１のカウント部ＣＮＴのカウンタＣＴＲは、信号ＥＩＮＦの情報が反映された信号ＥＸＴ１１・・・ＥＸＴ１６を転送制御部ＣＬＴから受けてもよい。このときには、例えば、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎの論理和結果を示す信号ＥＳＩＧ１１１を転送制御部ＣＬＴに出力する論理和回路ＯＲ１１等（論理和回路ＯＲ１１・・・ＯＲ１６）が、図２に示したカウント部ＣＮＴに追加される。
【００３６】
図３は、図１に示したレジスタＲＥＧの設定の一例を示している。なお、図３は、レジスタＲＥＧのビット幅が３２ビットのときの一例を示している。例えば、レジスタＲＥＧ（ｉ、ｊ）の０ビット目から１０ビット目までの範囲に、信号ＥＶＴｉに対応するイベントの発生回数をカウントするカウンタＣＴＲ等を示すレジスタ情報ＲＥＧＩＮＦｉが設定される。そして、レジスタＲＥＧ（ｉ、ｊ）の１６ビット目から２６ビット目までの範囲に、信号ＥＶＴｊに対応するイベントの発生回数をカウントするカウンタＣＴＲ等を示すレジスタ情報ＲＥＧＩＮＦｊが設定される。なお、レジスタＲＥＧのビット幅は、３２ビット以外でもよい。
【００３７】
レジスタ情報ＲＥＧＩＮＦは、イネーブル情報ＥＮＳ、コア指定情報ＣＯＲＩＮＦ、カウンタ指定情報ＣＴＲＩＮＦを有している。以下、イネーブル情報ＥＮＳ、コア指定情報ＣＯＲＩＮＦ、カウンタ指定情報ＣＴＲＩＮＦを、情報ＥＮＳ、ＣＯＲＩＮＦ、ＣＴＲＩＮＦとも称する。あるいは、情報ＥＮＳ、ＣＯＲＩＮＦ、ＣＴＲＩＮＦを信号ＥＮＳ、ＣＯＲＩＮＦ、ＣＴＲＩＮＦとも称する。
【００３８】
情報ＥＮＳｉは、例えば、信号ＥＶＴｉに対応するイベントの発生回数をカウントするか否かを示す情報であり、レジスタＲＥＧ（ｉ、ｊ）の０ビット目に設定される。信号ＥＶＴｉに対応するイベントの発生回数をカウントするときには、例えば、レジスタＲＥＧ（ｉ、ｊ）の０ビット目（情報ＥＮＳｉ）は“１”に設定される。なお、信号ＥＶＴｉに対応するイベントが発生回数のカウント対象でないときには、レジスタＲＥＧ（ｉ、ｊ）の０ビット目（情報ＥＮＳｉ）は“０”に設定される。
【００３９】
情報ＣＯＲＩＮＦｉは、信号ＥＶＴｉに対応するイベントの発生回数をカウントするカウンタＣＴＲを有するプロセッサコアＣＯＲＥを示す情報であり、レジスタＲＥＧ（ｉ、ｊ）の１ビット目から４ビット目までの範囲に設定される。レジスタＲＥＧ（ｉ、ｊ）の１ビット目から４ビット目までの範囲の各ビットは、下位ビットから順に、プロセッサコアＣＯＲＥ１、ＣＯＲＥ２、ＣＯＲＥ３、ＣＯＲＥ４にそれぞれ対応している。例えば、プロセッサコアＣＯＲＥ１のカウンタＣＴＲを指定するときには、レジスタＲＥＧ（ｉ、ｊ）の１ビット目（情報ＣＯＲＩＮＦｉの最下位ビット）は“１”に設定される。また、例えば、プロセッサコアＣＯＲＥ４のカウンタＣＴＲを指定するときには、レジスタＲＥＧ（ｉ、ｊ）の４ビット目（情報ＣＯＲＩＮＦｉの最上位ビット）は“１”に設定される。
【００４０】
情報ＣＴＲＩＮＦｉは、信号ＥＶＴｉに対応するイベントの発生回数をカウントするカウンタＣＴＲを示す情報であり、レジスタＲＥＧ（ｉ、ｊ）の５ビット目から１０ビット目までの範囲に設定される。レジスタＲＥＧ（ｉ、ｊ）の５ビット目から１０ビット目までの範囲の各ビットは、下位ビットから順に、カウンタＣＴＲ１・・・ＣＴＲ６にそれぞれ対応している。例えば、カウンタＣＴＲ１を指定するときには、レジスタＲＥＧ（ｉ、ｊ）の５ビット目（情報ＣＴＲＩＮＦｉの最下位ビット）は“１”に設定される。また、例えば、カウンタＣＴＲ６を指定するときには、レジスタＲＥＧ（ｉ、ｊ）の１０ビット目（情報ＣＴＲＩＮＦｉの最上位ビット）は“１”に設定される。
【００４１】
図３の例では、レジスタＲＥＧ（ｉ、ｊ）の０ビット目が“１”であるため、信号ＥＶＴｉに対応するイベントは、発生回数のカウント対象のイベントである。また、レジスタＲＥＧ（ｉ、ｊ）の２ビット目、３ビット目、６ビット目が“１”である。このため、信号ＥＶＴｉに対応するイベントの発生回数は、プロセッサコアＣＯＲＥ２のカウンタＣＴＲ２とプロセッサコアＣＯＲＥ３のカウンタＣＴＲ２の２つのカウンタＣＴＲでカウントされる。
【００４２】
信号ＥＶＴｊに対応するイベントに関しても、信号ＥＶＴｉに対応するイベントと同様に、レジスタＲＥＧ（ｉ、ｊ）の１６ビット目から２６ビット目までの範囲に設定される。例えば、情報ＥＮＳｊは、信号ＥＶＴｊに対応するイベントの発生回数をカウントするか否かを示す情報であり、レジスタＲＥＧ（ｉ、ｊ）の１６ビット目に設定される。
【００４３】
情報ＣＯＲＩＮＦｊは、信号ＥＶＴｊに対応するイベントの発生回数をカウントするカウンタＣＴＲを有するプロセッサコアＣＯＲＥを示す情報であり、レジスタＲＥＧ（ｉ、ｊ）の１７ビット目から２０ビット目までの範囲に設定される。レジスタＲＥＧ（ｉ、ｊ）の１７ビット目から２０ビット目までの範囲の各ビットは、下位ビットから順に、プロセッサコアＣＯＲＥ１、ＣＯＲＥ２、ＣＯＲＥ３、ＣＯＲＥ４にそれぞれ対応している。例えば、プロセッサコアＣＯＲＥ１のカウンタＣＴＲを指定するときには、レジスタＲＥＧ（ｉ、ｊ）の１７ビット目（情報ＣＯＲＩＮＦｊの最下位ビット）は“１”に設定される。また、例えば、プロセッサコアＣＯＲＥ４のカウンタＣＴＲを指定するときには、レジスタＲＥＧ（ｉ、ｊ）の２０ビット目（情報ＣＯＲＩＮＦｊの最上位ビット）は“１”に設定される。
【００４４】
情報ＣＴＲＩＮＦｊは、信号ＥＶＴｊに対応するイベントの発生回数をカウントするカウンタＣＴＲを示す情報であり、レジスタＲＥＧ（ｉ、ｊ）の２１ビット目から２６ビット目までの範囲に設定される。レジスタＲＥＧ（ｉ、ｊ）の２１ビット目から２６ビット目までの範囲の各ビットは、下位ビットから順に、カウンタＣＴＲ１・・・ＣＴＲ６にそれぞれ対応している。例えば、カウンタＣＴＲ１を指定するときには、レジスタＲＥＧ（ｉ、ｊ）の２１ビット目（情報ＣＴＲＩＮＦｊの最下位ビット）は“１”に設定される。また、例えば、カウンタＣＴＲ６を指定するときには、レジスタＲＥＧ（ｉ、ｊ）の２６ビット目（情報ＣＴＲＩＮＦｊの最上位ビット）は“１”に設定される。
【００４５】
図３の例では、レジスタＲＥＧ（ｉ、ｊ）の１６ビット目が“１”であるため、信号ＥＶＴｊに対応するイベントは、発生回数のカウント対象のイベントである。また、レジスタＲＥＧ（ｉ、ｊ）の１７ビット目、２１ビット目、２６ビット目が“１”である。このため、信号ＥＶＴｊに対応するイベントの発生回数は、プロセッサコアＣＯＲＥ１のカウンタＣＴＲ１とプロセッサコアＣＯＲＥ１のカウンタＣＴＲ６の２つのカウンタＣＴＲでカウントされる。
【００４６】
なお、レジスタＲＥＧの設定は、この例に限定されない。例えば、情報ＥＮＳは省かれてもよい。この場合、例えば、信号ＥＶＴｉに対応するイベントが発生回数のカウント対象でないときには、情報ＣＯＲＩＮＦｉ、ＣＴＲＩＮＦｉの全てのビットが“０”に設定される。情報ＥＮＳを省くことにより、レジスタ情報ＲＥＧＩＮＦのビット数を低減できる。また、例えば、各信号ＥＶＴに対応するイベントの発生回数を複数のカウンタＣＴＲでカウントしない条件では、情報ＣＯＲＩＮＦは、プロセッサコアＣＯＲＥを示す番号等が設定されればよい。同様に、情報ＣＴＲＩＮＦは、カウンタＣＴＲを示す番号等が設定されればよい。このときには、レジスタ情報ＲＥＧＩＮＦのビット数を低減できる。
【００４７】
あるいは、レジスタ情報ＲＥＧＩＮＦのビット数を増やして、イベントの発生回数をカウントするカウンタＣＴＲを詳細に指定できるようにしてもよい。例えば、各プロセッサコアＣＯＲＥは、カウント対象のイベントを各プロセッサコアＣＯＲＥの各カウンタＣＴＲで独立して設定可能なレジスタＲＥＧを有してもよい。このときには、例えば、信号ＥＶＴｉに対応するイベントの発生回数をカウントするカウンタＣＴＲとして、プロセッサコアＣＯＲＥ２のカウンタＣＴＲ２とプロセッサコアＣＯＲＥ３のカウンタＣＴＲ６の２つのカウンタＣＴＲを指定できる。
【００４８】
ここで、図３に示したレジスタＲＥＧ（ｉ、ｊ）において、１０ビット目が“１”に設定されたとき（０、２、３、６、１０ビット目が“１”）、信号ＥＶＴｉに対応するイベントの発生回数は、４つのカウンタＣＴＲでカウントされる。例えば、信号ＥＶＴｉに対応するイベントの発生回数は、プロセッサコアＣＯＲＥ２、ＣＯＲＥ３のカウンタＣＴＲ２とプロセッサコアＣＯＲＥ２、ＣＯＲＥ３のカウンタＣＴＲ６の４つのカウンタＣＴＲでカウントされる。
【００４９】
図４は、図２に示した選択部ＤＳＥＬの一例を示している。なお、図４は、信号ＥＶＴｉに対応するイベントの発生情報をレジスタ情報ＲＥＧＩＮＦｉに基づいて選択する選択部ＤＳＥＬｉの一例を示している。例えば、信号ＥＶＴｉに対応するレジスタ情報ＲＥＧＩＮＦｉは、レジスタＲＥＧから読み出される。レジスタＲＥＧからレジスタ情報ＲＥＧＩＮＦを読み出す処理は、選択部ＤＳＥＬにより実行されてもよいし、プロセッサコアＣＯＲＥの選択部ＤＳＥＬ以外のモジュール（例えば、プロセッサコアＣＯＲＥ全体の動作を制御するモジュール）により実行されてもよい。
【００５０】
選択部ＤＳＥＬｉは、論理積回路ＡＮＤＣ、コア選択部ＣＯＲＳおよび複数のカウンタ選択部ＣＴＲＳ（ＣＴＲＳ１、ＣＴＲＳ２、ＣＴＲＳ３、ＣＴＲＳ４）を有している。カウンタ選択部ＣＴＲＳ１、ＣＴＲＳ２、ＣＴＲＳ３、ＣＴＲＳ４は、例えば、プロセッサコアＣＯＲＥ１、ＣＯＲＥ２、ＣＯＲＥ３、ＣＯＲＥ４にそれぞれ対応している。なお、図４では、図を見やすくするために、カウンタ選択部ＣＴＲＳ３、ＣＮＴ４の出力信号ＥＩＮＦ（ＥＩＮＦ３１ｉ−ＥＩＮＦ３６ｉ、ＥＩＮＦ４１ｉ−ＥＩＮＦ４６ｉ）をカウンタ選択部ＣＴＲＳ毎に纏めて記載している。
【００５１】
論理積回路ＡＮＤＣは、信号ＥＶＴｉ、ＥＮＳｉを受け、信号ＥＶＴｉ、ＥＮＳｉの論理積結果をコア選択部ＣＯＲＳに出力する。すなわち、信号ＥＶＴｉに対応するイベントが発生回数のカウント対象のイベントである場合、イベントの発生情報ＥＶＴｉがコア選択部ＣＯＲＳに転送される。なお、レジスタＲＥＧの設定項目にイネーブル情報ＥＮＳが含まれないプロセッサＰＳＹＳでは、論理積回路ＡＮＤＣは、省かれてもよい。
【００５２】
コア選択部ＣＯＲＳは、信号ＥＶＴｉ、ＥＮＳｉの論理積結果および信号ＣＯＲＩＮＦｉを受ける。そして、コア選択部ＣＯＲＳは、信号ＣＯＲＩＮＦｉにより指定されたプロセッサコアＣＯＲＥに対応するカウンタ選択部ＣＴＲＳに、信号ＥＶＴｉ、ＥＮＳｉの論理積結果を転送する。
【００５３】
なお、コア選択部ＣＯＲＳは、信号ＣＯＲＩＮＦｉにより指定されたプロセッサコアＣＯＲＥ以外のプロセッサコアＣＯＲＥに対応するカウンタ選択部ＣＴＲＳに出力する信号を、信号ＥＶＴｉ、ＥＮＳｉの論理積結果に拘わらず、ネゲートする。すなわち、信号ＣＯＲＩＮＦｉにより指定されたプロセッサコアＣＯＲＥ以外のプロセッサコアＣＯＲＥに対応するカウンタ選択部ＣＴＲＳには、信号ＥＶＴｉに対応するイベントの発生情報（信号ＥＶＴｉ、ＥＮＳｉの論理積結果）は転送されない。このように、コア選択部ＣＯＲＳは、コア指定情報ＣＯＲＩＮＦｉに基づいて、発生情報ＥＶＴｉの転送先のプロセッサコアＣＯＲＥを選択する。
【００５４】
カウンタ選択部ＣＴＲＳは、信号ＣＴＲＩＮＦｉおよびコア選択部ＣＯＲＳの出力信号を受ける。そして、カウンタ選択部ＣＴＲＳは、信号ＣＴＲＩＮＦｉにより指定されたカウンタＣＴＲに対応する信号ＥＩＮＦに、コア選択部ＣＯＲＳの出力結果を反映する。なお、カウンタ選択部ＣＴＲＳは、信号ＣＴＲＩＮＦｉにより指定されたカウンタＣＴＲに対応する信号ＥＩＮＦ以外の信号ＥＩＮＦを、コア選択部ＣＯＲＳの出力結果に拘わらず、ネゲートする。
【００５５】
すなわち、信号ＣＴＲＩＮＦｉにより指定されたカウンタＣＴＲ以外のカウンタＣＴＲには、信号ＥＶＴｉに対応するイベントの発生情報は転送されない。このように、カウンタ選択部ＣＴＲＳは、カウンタ指定情報ＣＴＲＩＮＦｉに基づいて、発生情報ＥＶＴｉの転送先のカウンタＣＴＲを選択する。
【００５６】
例えば、図３に示したようにレジスタＲＥＧが設定されているとき、コア選択部ＣＯＲＳは、信号ＥＶＴｉ、ＥＮＳｉの論理積結果をカウンタ選択部ＣＴＲＳ２、ＣＴＲＳ３に転送する。そして、カウンタ選択部ＣＴＲＳ２、ＣＴＲＳ３は、コア選択部ＣＯＲＳの出力信号がアサートされているとき、信号ＥＩＮＦ２２ｉ、ＥＩＮＦ３２ｉをそれぞれアサートする。また、カウンタ選択部ＣＴＲＳ２、ＣＴＲＳ３は、コア選択部ＣＯＲＳの出力信号がネゲートされているとき、信号ＥＩＮＦ２２ｉ、ＥＩＮＦ３２ｉをそれぞれネゲートする。これにより、発生情報ＥＶＴｉは、プロセッサコアＣＯＲＥ２のカウンタＣＴＲ２とプロセッサコアＣＯＲＥ３のカウンタＣＴＲ２とに転送される。
【００５７】
図５は、図２に示したカウンタＣＴＲ１の一例を示している。すなわち、図５は、プロセッサコアＣＯＲＥ１のカウンタＣＴＲ１の一例を示している。なお、カウンタＣＴＲ１以外のカウンタＣＴＲの構成は、カウンタＣＴＲ１と同様である。カウンタＣＴＲ１は、例えば、論理和回路ＯＲ１、ＯＲ２、インクリメント回路ＩＮＣ、セレクタＳＥＬ１およびフリップフロップ回路ＦＦ１を有している。
【００５８】
論理和回路ＯＲ１は、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎを受け、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎの論理和結果を論理和回路ＯＲ２に出力する。論理和回路ＯＲ２は、信号ＥＸＴ１１および論理和回路ＯＲ１の出力信号を受け、信号ＥＸＴ１１と論理和回路ＯＲ１の出力信号との論理和結果をセレクタＳＥＬ１に出力する。すなわち、セレクタＳＥＬ１は、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎ、ＥＸＴ１１の論理和結果を、制御信号として受ける。
【００５９】
インクリメント回路ＩＮＣは、フリップフロップ回路ＦＦ１に保持されているカウント値ＯＵＴ１１に“１”を加算し、加算結果をセレクタＳＥＬ１に出力する。セレクタＳＥＬ１は、フリップフロップ回路ＦＦ１の出力信号ＯＵＴ１１（フリップフロップ回路ＦＦ１に保持されているカウント値ＯＵＴ１１）とインクリメント回路ＩＮＣの出力信号とを受ける。そして、セレクタＳＥＬ１は、制御信号（論理和回路ＯＲ２の出力信号）に基づいて、フリップフロップ回路ＦＦ１の出力信号ＯＵＴ１１とインクリメント回路ＩＮＣの出力信号とのいずれかをフリップフロップ回路ＦＦ１に出力する。
【００６０】
例えば、論理和回路ＯＲ２の出力信号が“１”のとき、セレクタＳＥＬ１は、インクリメント回路ＩＮＣの出力信号をフリップフロップ回路ＦＦ１に出力する。すなわち、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎ、ＥＸＴ１１の少なくとも１つがアサートされているとき、セレクタＳＥＬ１は、インクリメント回路ＩＮＣの出力信号をフリップフロップ回路ＦＦ１に出力する。
【００６１】
また、例えば、論理和回路ＯＲ２の出力信号が“０”のとき、セレクタＳＥＬ１は、フリップフロップ回路ＦＦ１の出力信号ＯＵＴ１１をフリップフロップ回路ＦＦ１にフィードバックする。すなわち、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎ、ＥＸＴ１１の全てがネゲートされているとき、セレクタＳＥＬ１は、フリップフロップ回路ＦＦ１の出力信号ＯＵＴ１１をフリップフロップ回路ＦＦ１にフィードバックする。
【００６２】
フリップフロップ回路ＦＦ１は、クロックＣＬＫ、リセット信号ＲＥＳＥＴ、セレクタＳＥＬ１の出力信号を受け、信号ＯＵＴ１１を出力する。クロックＣＬＫは、例えば、プロセッサＰＳＹＳの動作クロックである。また、リセット信号ＲＥＳＥＴは、フリップフロップ回路ＦＦ１に保持されているカウント値ＯＵＴ１１をリセットする信号である。リセット信号ＲＥＳＥＴは、例えば、プロセッサコアＣＯＲＥ１全体の動作を制御するモジュールで生成される。例えば、フリップフロップ回路ＦＦ１は、リセット信号ＲＥＳＥＴがネゲートされたとき、カウント値ＯＵＴ１１をリセットする。
【００６３】
フリップフロップ回路ＦＦ１は、例えば、クロックＣＬＫに同期して、セレクタＳＥＬ１の出力信号を取り込み、保持する。すなわち、フリップフロップ回路ＦＦ１は、例えば、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎ、ＥＸＴ１１の少なくとも１つがアサートされているとき、インクリメント回路ＩＮＣの出力値を取り込み、保持する。これにより、カウント値ＯＵＴ１１は、カウントアップする。
【００６４】
また、例えば、フリップフロップ回路ＦＦ１は、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎ、ＥＸＴ１１の全てがネゲートされているとき、フィードバックされた信号ＯＵＴ１１を取り込み、保持する。これにより、カウント値ＯＵＴ１１は、前の値に維持される。このように、カウンタＣＴＲ１は、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎ、ＥＸＴ１１の少なくとも１つがアサートされているとき、クロックＣＬＫに同期して、カウントアップする。すなわち、各プロセッサコアＣＯＲＥのカウンタＣＴＲは、プロセッサコアＣＯＲＥ１−ＣＯＲＥ４の選択部ＤＳＥＬ（ＤＥＳＬ１・・・ＤＥＳＬｎ）から転送される発生情報に基づいて、イベントの発生回数をカウントする。
【００６５】
ここで、例えば、プロセッサコアＣＯＲＥ１のカウンタＣＴＲ１以外の各カウンタＣＴＲの動作は、信号ＥＩＮＦ、ＯＵＴの符号の末尾の数字のうちのカウンタＣＴＲ１に対応する数字を各カウンタＣＴＲに対応する数字にそれぞれ読み替えることで説明される。例えば、プロセッサコアＣＯＲＥ１のカウンタＣＴＲ６の動作は、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎ、ＯＵＴ１１を信号ＥＩＮＦ１６１・・・ＥＩＮＦ１６ｎ、ＯＵＴ１６にそれぞれ読み替えることで説明される。
【００６６】
なお、カウンタＣＴＲの構成は、この例に限定されない。例えば、カウンタＣＴＲは、論理和回路ＯＲ１と論理和回路ＯＲ２とを区別せずに設計されてもよい。
【００６７】
図６は、図１に示した転送制御部ＣＬＴの一例を示している。転送制御部ＣＬＴは、複数の転送信号生成部ＳＧＥＮを有している。転送信号生成部ＳＧＥＮは、例えば、各プロセッサコアＣＯＲＥの各カウンタＣＴＲに対応して設けられている。転送信号生成部ＳＧＥＮの符号の末尾の２桁の数字は、左側から、信号ＥＸＴの転送先のプロセッサコアＣＯＲＥおよびカウンタＣＴＲをそれぞれ示している。
【００６８】
例えば、転送信号生成部ＳＧＥＮ１１・・・ＳＧＥＮ１６は、プロセッサコアＣＯＲＥ１のカウンタＣＴＲ１・・・ＣＴＲ６にそれぞれ対応している。転送信号生成部ＳＧＥＮ１１は、例えば、信号ＥＳＩＧ２１１、ＥＳＩＧ３１１、ＥＳＩＧ４１１を、プロセッサコアＣＯＲＥ２、ＣＯＲＥ３、ＣＯＲＥ４のカウント部ＣＮＴからそれぞれ受ける。そして、転送信号生成部ＳＧＥＮ１１は、信号ＥＳＩＧ２１１、ＥＳＩＧ３１１、ＥＳＩＧ４１１の論理和結果を示す信号ＥＸＴ１１を、プロセッサコアＣＯＲＥ１のカウンタＣＴＲ１に出力する。
【００６９】
なお、図２で説明したように、信号ＥＳＩＧの符号の末尾の３桁の数字は、左側から、信号ＥＳＩＧの転送元のプロセッサコアＣＯＲＥ、信号ＥＳＩＧの転送先のプロセッサコアＣＯＲＥおよびカウンタＣＴＲをそれぞれ示している。また、信号ＥＸＴの符号の末尾の２桁の数字は、左側から、信号ＥＸＴを受けるプロセッサコアＣＯＲＥおよびカウンタＣＴＲをそれぞれ示している。
【００７０】
例えば、信号ＥＳＩＧ２１１は、プロセッサコアＣＯＲＥ２のイベントのうち、プロセッサコアＣＯＲＥ１のカウンタＣＴＲ１でカウントされるイベントの発生情報である。また、例えば、信号ＥＳＩＧ３１１は、プロセッサコアＣＯＲＥ３のイベントのうち、プロセッサコアＣＯＲＥ１のカウンタＣＴＲ１でカウントされるイベントの発生情報である。そして、例えば、信号ＥＳＩＧ４１１は、プロセッサコアＣＯＲＥ４のイベントのうち、プロセッサコアＣＯＲＥ１のカウンタＣＴＲ１でカウントされるイベントの発生情報である。
【００７１】
したがって、信号ＥＸＴ１１は、プロセッサコアＣＯＲＥ１を除くプロセッサコアＣＯＲＥ（ＣＯＲＥ２、ＣＯＲＥ３、ＣＯＲＥ４）のイベントのうち、プロセッサコアＣＯＲＥ１のカウンタＣＴＲ１でカウントされるイベントの発生情報である。このように、転送信号生成部ＳＧＥＮ１１は、プロセッサコアＣＯＲＥ１のカウンタＣＴＲ１でカウントされるイベントの発生情報ＥＸＴ１１を、プロセッサコアＣＯＲＥ２、ＣＯＲＥ３、ＣＯＲＥ４から受けた発生情報ＥＳＩＧ２１１、ＥＳＩＧ３１１、ＥＳＩＧ４１１に基づいて生成する。
【００７２】
転送信号生成部ＳＧＥＮ１１以外の転送信号生成部ＳＧＥＮの動作は、各要素の符号の末尾のプロセッサコアＣＯＲＥおよびカウンタＣＴＲに対応する数字を、対象のプロセッサコアＣＯＲＥおよびカウンタＣＴＲに合わせて読み替えることで説明される。例えば、転送信号生成部ＳＧＥＮ４６は、信号ＥＳＩＧ１４６、ＥＳＩＧ２４６、ＥＳＩＧ３４６を、プロセッサコアＣＯＲＥ１、ＣＯＲＥ２、ＣＯＲＥ３のカウント部ＣＮＴからそれぞれ受ける。そして、転送信号生成部ＳＧＥＮ４６は、信号ＥＳＩＧ１４６、ＥＳＩＧ２４６、ＥＳＩＧ３４６の論理和結果を示す信号ＥＸＴ４６を、プロセッサコアＣＯＲＥ４のカウンタＣＴＲ６に出力する。
【００７３】
これにより、プロセッサＰＳＹＳは、例えば、評価対象のプロセッサコアＣＯＲＥのイベントの発生回数を、評価対象以外のプロセッサコアＣＯＲＥのカウンタＣＴＲでカウントできる。このように、この実施形態では、評価対象以外のプロセッサコアＣＯＲＥのカウンタＣＴＲを使用できるため、プロセッサＰＳＹＳの性能を詳細に測定できる。
【００７４】
例えば、評価対象以外のプロセッサコアＣＯＲＥのカウンタＣＴＲを使用できないプロセッサでは、評価対象のプロセッサコアＣＯＲＥのカウンタＣＴＲの数より多い種類のイベントの発生回数を共通の条件でカウントすることは困難である。このため、評価対象以外のプロセッサコアＣＯＲＥのカウンタＣＴＲを使用できないプロセッサでは、プロセッサの正確な性能評価を実施できないおそれがある。
【００７５】
これに対し、この実施形態では、プロセッサＰＳＹＳの性能評価の際に、評価対象のプロセッサコアＣＯＲＥのカウンタＣＴＲおよび評価対象以外のプロセッサコアＣＯＲＥのカウンタＣＴＲを使用できる。例えば、この実施形態では、レジスタ情報ＲＥＧＩＮＦの設定により、評価対象以外のプロセッサコアＣＯＲＥのカウンタＣＴＲも、カウント対象のイベントの発生回数をカウントするカウンタＣＴＲに指定できる。
【００７６】
このように、この実施形態では、評価対象以外のプロセッサコアＣＯＲＥのカウンタＣＴＲも使用できるため、評価対象のプロセッサコアＣＯＲＥのカウンタＣＴＲの数より多い種類のイベントの発生回数を共通の条件でカウントできる。この結果、この実施形態では、プロセッサＰＳＹＳの正確な性能評価を実施できる。
【００７７】
例えば、この実施形態では、プロセッサコアＣＯＲＥ１が評価対象のとき、評価対象のプロセッサコアＣＯＲＥ１で発生するイベントとイベントの発生回数をカウントするカウンタＣＴＲとの対応関係（レジスタ情報ＲＥＧＩＮＦ）をレジスタＲＥＧに設定する。この際、評価対象以外のプロセッサコアＣＯＲＥのカウンタＣＴＲも、カウント対象のイベントの発生回数をカウントするカウンタＣＴＲに指定できる。
【００７８】
そして、プロセッサコアＣＯＲＥ１の性能評価の際に、評価対象のプロセッサコアＣＯＲＥ１を動作させる。なお、評価対象以外のプロセッサコアＣＯＲＥ２、ＣＯＲＥ３、ＣＯＲＥ４では、演算動作は停止しているが、カウンタＣＴＲは動作する。これにより、レジスタ情報ＲＥＧＩＮＦにより指定されるカウンタＣＴＲは、プロセッサコアＣＯＲＥ１のイベントの発生回数を発生情報に基づいてカウントする。
【００７９】
なお、２つ以上のプロセッサコアＣＯＲＥを同時に動作させて、プロセッサＰＳＹＳの性能を評価してもよい。また、シングルコアのプロセッサの性能を評価するために、プロセッサＰＳＹＳが用いられてもよい。このときには、評価対象のシングルコアのプロセッサと同様のプロセッサコアＣＯＲＥがプロセッサＰＳＹＳに搭載される。
【００８０】
以上、この実施形態では、プロセッサＰＳＹＳは、演算を実行する複数のプロセッサコアＣＯＲＥと、イベントが発生したか否かを示す発生情報を、複数のプロセッサコアＣＯＲＥ間で転送する転送制御部ＣＬＴとを有している。また、各プロセッサコアＣＯＲＥは、イベントの発生回数を発生情報に基づいてカウントするカウンタＣＴＲと、イベントとイベントの発生回数をカウントするカウンタＣＴＲとの対応関係が設定されるレジスタＲＥＧとを有している。
【００８１】
この実施形態では、評価対象以外のプロセッサコアＣＯＲＥのカウンタＣＴＲの使用をレジスタＲＥＧに設定することにより、評価対象以外のプロセッサコアＣＯＲＥのカウンタＣＴＲを、評価対象のプロセッサコアＣＯＲＥの性能評価の際に使用できる。この結果、この実施形態では、プロセッサＰＳＹＳの性能を詳細に測定できる。
【００８２】
図７は、別の実施形態におけるプロセッサＰＳＹＳＡの一例を示している。図１−図６で説明した要素と同様の要素については、同様の符号を付し、これ等については、詳細な説明を省略する。この実施形態のプロセッサＰＳＹＳＡは、図１に示したプロセッサコアＣＯＲＥおよび転送制御部ＣＬＴの代わりに、プロセッサコアＣＯＲＥＡおよび転送制御部ＣＬＴＡを有している。プロセッサＰＳＹＳＡのその他の構成は、図１に示したプロセッサＰＳＹＳと同様である。
【００８３】
プロセッサＰＳＹＳＡは、例えば、演算を実行する複数のプロセッサコアＣＯＲＥＡ（ＣＯＲＥＡ１、ＣＯＲＥＡ２、ＣＯＲＥＡ３、ＣＯＲＥＡ４）と、転送制御部ＣＬＴＡと、インターコネクトＩＮＴＣとを有している。なお、プロセッサコアＣＯＲＥＡの数は、４つに限定されない。
【００８４】
各プロセッサコアＣＯＲＥＡは、図１に示したカウント部ＣＮＴの代わりにカウント部ＣＮＴＡを有している。プロセッサコアＣＯＲＥＡのその他の構成は、図１に示したプロセッサコアＣＯＲＥと同様である。例えば、各プロセッサコアＣＯＲＥＡは、カウント部ＣＮＴＡおよびレジスタＲＥＧを有している。カウント部ＣＮＴＡは、例えば、監視対象のイベントの発生回数を、カウンタＣＴＲＡを用いてカウントする。
【００８５】
例えば、カウント部ＣＮＴＡは、信号ＥＳＩＧ、ＵＳＩＧを転送制御部ＣＬＴＡに出力し、信号ＥＸＴ、ＴＡＥＮを転送制御部ＣＬＴＡから受ける。信号ＵＳＩＧは、他のプロセッサコアＣＯＲＥＡのカウンタ部ＣＮＴＡのカウンタＣＴＲＡを使用するか否かを示す情報である。以下、信号ＵＳＩＧを使用通知ＵＳＩＧとも称する。また、信号ＴＡＥＮは、イベントの発生回数をカウントするタイミングを調整するか否かを示す情報である。以下、信号ＴＡＥＮをタイミングイネーブル信号ＴＡＥＮとも称する。レジスタＲＥＧは、例えば、図１−図６で説明した実施形態と同様である。
【００８６】
転送制御部ＣＬＴＡは、各プロセッサコアＣＯＲＥＡから受けた信号ＥＳＩＧに基づいて、信号ＥＸＴを各プロセッサコアＣＯＲＥＡに出力する。また、転送制御部ＣＬＴＡは、各プロセッサコアＣＯＲＥＡから受けた使用通知ＵＳＩＧに基づいて、タイミングイネーブル信号ＴＡＥＮを各プロセッサコアＣＯＲＥＡに出力する。
【００８７】
図８は、図７に示したカウント部ＣＮＴＡの一例を示している。なお、図８は、プロセッサコアＣＯＲＥＡ１のカウント部ＣＮＴＡの一例を示している。プロセッサコアＣＯＲＥＡ１以外のプロセッサコアＣＯＲＥＡのカウント部ＣＮＴＡの構成は、プロセッサコアＣＯＲＥＡ１のカウント部ＣＮＴＡと同様である。図８の各要素の符号の末尾の数字の意味は、図１−図６で説明した実施形態と同様である。また、タイミングイネーブル信号ＴＡＥＮの符号の末尾の２桁の数字は、左側から、タイミングイネーブル信号ＴＡＥＮを受けるプロセッサコアＣＯＲＥＡおよびカウンタＣＴＲＡをそれぞれ示している。
【００８８】
カウント部ＣＮＴＡでは、図２に示したカウント部ＣＮＴに使用通知生成部ＮＧＥＮが追加されている。そして、カウント部ＣＮＴＡは、図２に示したカウンタＣＴＲの代わりに、カウンタＣＴＲＡを有している。カウント部ＣＮＴＡのその他の構成は、図２に示したカウント部ＣＮＴと同様である。
【００８９】
例えば、カウント部ＣＮＴＡは、複数の選択部ＤＳＥＬ（ＤＥＳＬ１・・・ＤＥＳＬｎ）、複数のカウンタＣＴＲＡ（ＣＴＲＡ１・・・ＣＴＲＡ６）、複数の論理和回路ＯＲ（ＯＲ２１・・・ＯＲ２６、ＯＲ３１・・・ＯＲ３６、ＯＲ４１・・・ＯＲ４６）および使用通知生成部ＮＧＥＮを有している。選択部ＤＳＥＬ（ＤＥＳＬ１・・・ＤＥＳＬｎ）および論理和回路ＯＲ（ＯＲ２１・・・ＯＲ２６、ＯＲ３１・・・ＯＲ３６、ＯＲ４１・・・ＯＲ４６）は、例えば、図１−図６で説明した実施形態と同じである。
【００９０】
各カウンタＣＴＲＡは、ｎ個の信号ＥＶＴにそれぞれ対応するｎ個の発生情報ＥＩＮＦをｎ個の選択部ＤＳＥＬからそれぞれ受ける。さらに、各カウンタＣＴＲＡは、発生情報ＥＸＴおよびタイミングイネーブル信号ＴＡＥＮを転送制御部ＣＬＴＡから受ける。そして、各カウンタＣＴＲＡは、選択部ＤＳＥＬおよび転送制御部ＣＬＴＡから受けた発生情報ＥＩＮＦ、ＥＸＴに基づいて、イベントの発生回数をカウントする。各カウンタＣＴＲＡのカウント値ＯＵＴは、例えば、必要に応じて読み出される。また、各カウンタＣＴＲＡは、例えば、タイミングイネーブル信号ＴＡＥＮがアサートされているとき、発生情報ＥＩＮＦの論理和結果を示す信号を発生情報ＥＸＴに同期させる。
【００９１】
使用通知生成部ＮＧＥＮは、レジスタ情報ＲＥＧＩＮＦ（ＲＥＧＩＮＦ１・・・ＲＥＧＩＮＦｎ）内の情報のうち、コア指定情報ＣＯＲＩＮＦ（ＣＯＲＩＮＦ１・・・ＣＯＲＩＮＦｎ）およびカウンタ指定情報ＣＴＲＩＮＦ（ＣＴＲＩＮＦ１・・・ＣＴＲＩＮＦｎ）を受ける。そして、使用通知生成部ＮＧＥＮは、コア指定情報ＣＯＲＩＮＦおよびカウンタ指定情報ＣＴＲＩＮＦに基づいて生成した使用通知ＵＳＩＧを、転送制御部ＣＬＴＡに出力する。
【００９２】
図９は、図８に示したカウンタＣＴＲＡ１の一例を示している。すなわち、図８は、プロセッサコアＣＯＲＥＡ１のカウンタＣＴＲＡ１の一例を示している。なお、カウンタＣＴＲＡ１以外のカウンタＣＴＲＡの構成は、カウンタＣＴＲＡ１と同様である。カウンタＣＴＲＡ１では、図５に示したカウンタＣＴＲ１にタイミング調整部ＴＡＤＪおよびセレクタＳＥＬ２が追加されている。カウンタＣＴＲＡ１のその他の構成は、カウンタＣＴＲ１と同様である。
【００９３】
例えば、カウンタＣＴＲＡ１は、論理和回路ＯＲ１、タイミング調整部ＴＡＤＪ、セレクタＳＥＬ２、論理和回路ＯＲ２、インクリメント回路ＩＮＣ、セレクタＳＥＬ１およびフリップフロップ回路ＦＦ１を有している。
【００９４】
論理和回路ＯＲ１は、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎの論理和結果を、タイミング調整部ＴＡＤＪおよびセレクタＳＥＬ２に出力する。タイミング調整部ＴＡＤＪは、例えば、論理和回路ＯＲ１の出力とセレクタＳＥＬ２の入力との間に、フリップフロップ回路ＦＦ２、ＦＦ３を有している。タイミング調整部ＴＡＤＪの入力から出力までの信号経路上のフリップフロップ回路ＦＦの数は、例えば、転送制御部ＣＬＴＡを介して転送される信号ＥＸＴ１１の論理和回路ＯＲ１の出力信号に対する遅延量に合わせて決定される。
【００９５】
図９の例では、タイミング調整部ＴＡＤＪの入力から出力までの信号経路上のフリップフロップ回路ＦＦの数は、図１２に示す転送信号生成部ＳＧＥＮＡの入力から出力までの信号経路上のフリップフロップ回路ＦＦの数と同じである。これにより、この実施形態では、タイミング調整部ＴＡＤＪの出力信号を発生情報ＥＸＴに同期させることができる。
【００９６】
例えば、フリップフロップ回路ＦＦ２は、クロックＣＬＫ、論理和回路ＯＲ１の出力信号を受ける。そして、フリップフロップ回路ＦＦ２は、論理和回路ＯＲ１から受けた信号をクロックＣＬＫに同期してフリップフロップ回路ＦＦ３に出力する。クロックＣＬＫは、例えば、プロセッサＰＳＹＳＡの動作クロックである。また、フリップフロップ回路ＦＦ３は、クロックＣＬＫ、フリップフロップ回路ＦＦ２の出力信号を受ける。そして、フリップフロップ回路ＦＦ３は、フリップフロップ回路ＦＦ２から受けた信号をクロックＣＬＫに同期してセレクタＳＥＬ２に出力する。
【００９７】
セレクタＳＥＬ２は、制御信号としてタイミングイネーブル信号ＴＡＥＮ１１を受ける。また、セレクタＳＥＬ２は、論理和回路ＯＲ１の出力信号とタイミング調整部ＴＡＤＪの出力信号とを受ける。そして、セレクタＳＥＬ２は、タイミングイネーブル信号ＴＡＥＮ１１に基づいて、論理和回路ＯＲ１の出力信号とタイミング調整部ＴＡＤＪの出力信号とのいずれかを論理和回路ＯＲ２に出力する。
【００９８】
例えば、プロセッサコアＣＯＲＥＡ１のカウンタＣＴＲＡ１が他のプロセッサコアＣＯＲＥＡのイベントをカウントする場合、タイミングイネーブル信号ＴＡＥＮ１１は“１”に設定され、イベントの発生回数をカウントするタイミングが調整される。タイミングイネーブル信号ＴＡＥＮ１１が“１”のとき、例えば、セレクタＳＥＬ２は、タイミング調整部ＴＡＤＪの出力信号を論理和回路ＯＲ２に出力する。すなわち、タイミングイネーブル信号ＴＡＥＮ１１が“１”のとき、セレクタＳＥＬ２は、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎの論理和結果（論理和回路ＯＲ１の出力信号）を発生情報ＥＸＴ１１に同期させて論理和回路ＯＲ２に出力する。
【００９９】
このように、この実施形態では、カウンタＣＴＲＡ１が発生情報ＥＸＴ、ＥＩＮＦに基づいてイベントの発生回数をカウントする場合、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎの論理和結果と発生情報ＥＸＴ１１とを同期させることができる。これにより、この実施形態では、例えば、同じタイミングで発生したイベントの発生情報ＥＸＴ、ＥＩＮＦを論理和回路ＯＲ２が異なるタイミングで受けることを防止できる。あるいは、この実施形態では、例えば、異なるタイミングで発生したイベントの発生情報ＥＸＴ、ＥＩＮＦを論理和回路ＯＲ２が同じタイミングで受けることを防止できる。この結果、この実施形態では、イベントの発生回数を誤ってカウントすることを防止できる。
【０１００】
なお、例えば、プロセッサコアＣＯＲＥＡ１のカウンタＣＴＲＡ１が他のプロセッサコアＣＯＲＥＡのイベントをカウントしない場合、発生情報ＥＸＴ１１は常にネゲートされているため、発生情報ＥＸＴ１１のタイミングを考慮しなくても問題ない。このときには、タイミングイネーブル信号ＴＡＥＮ１１は、例えば、“０”に設定される。タイミングイネーブル信号ＴＡＥＮ１１が“０”のとき、例えば、セレクタＳＥＬ２は、論理和回路ＯＲ１の出力信号を論理和回路ＯＲ２に出力する。
【０１０１】
論理和回路ＯＲ２は、信号ＥＸＴ１１およびセレクタＳＥＬ２の出力信号を受け、信号ＥＸＴ１１とセレクタＳＥＬ２の出力信号との論理和結果をセレクタＳＥＬ１に出力する。すなわち、セレクタＳＥＬ１は、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎ、ＥＸＴ１１の論理和結果を、制御信号として受ける。
【０１０２】
インクリメント回路ＩＮＣ、セレクタＳＥＬ１およびフリップフロップ回路ＦＦ１は、例えば、図５に示したインクリメント回路ＩＮＣ、セレクタＳＥＬ１およびフリップフロップ回路ＦＦ１と同じである。
【０１０３】
なお、カウンタＣＴＲＡの構成は、この例に限定されない。例えば、セレクタＳＥＬ２は、省かれてもよい。この場合、例えば、論理和回路ＯＲ２は、プロセッサコアＣＯＲＥＡ１のカウンタＣＴＲＡ１が他のプロセッサコアＣＯＲＥＡのイベントをカウントするか否かに拘わらず、タイミング調整部ＴＡＤＪを介して論理和回路ＯＲ１の出力信号を受ける。すなわち、論理和回路ＯＲ２は、信号ＥＸＴ１１およびタイミング調整部ＴＡＤＪの出力信号を受ける。この場合、図８に示した使用通知生成部ＮＧＥＮおよび図１１に示す制御信号生成部ＣＧＥＮ（転送制御部ＣＬＴＡの一部）を省くことができる。この結果、プロセッサＰＳＹＳＡの構成を簡易にできる。
【０１０４】
図１０は、図８に示した使用通知生成部ＮＧＥＮの一例を示している。すなわち、図１０は、プロセッサコアＣＯＲＥＡ１の使用通知生成部ＮＧＥＮの一例を示している。使用通知生成部ＮＧＥＮは、複数の通知信号生成部ＵＧを有している。例えば、プロセッサコアＣＯＲＥＡ１では、通知信号生成部ＵＧは、プロセッサコアＣＯＲＥＡ１以外の各プロセッサコアＣＯＲＥＡの各カウンタＣＴＲＡに対応して設けられている。各通知信号生成部ＵＧは、例えば、ｎ個のイベントにそれぞれ対応するｎ個の論理積回路ＡＮＤ（ＡＮＤ１・・・ＡＮＤｎ）と、各論理積回路ＡＮＤ（ＡＮＤ１・・・ＡＮＤｎ）の出力信号を受ける論理和回路ＯＲ３とを有している。
【０１０５】
ここで、通知信号生成部ＵＧの符号の末尾の３桁の数字は、左側から、通知信号ＵＳＩＧの転送元のプロセッサコアＣＯＲＥＡ、通知信号ＵＳＩＧの転送先のプロセッサコアＣＯＲＥＡおよびカウンタＣＴＲＡをそれぞれ示している。同様に、通知信号ＵＳＩＧの符号の末尾の３桁の数字は、左側から、通知信号ＵＳＩＧの転送元のプロセッサコアＣＯＲＥＡ、通知信号ＵＳＩＧの転送先のプロセッサコアＣＯＲＥＡおよびカウンタＣＴＲＡをそれぞれ示している。
【０１０６】
また、コア指定情報ＣＯＲＩＮＦの符号の末尾の括弧内の数字は、コア指定情報ＣＯＲＩＮＦ内の各ビットの位置を示している。例えば、コア指定情報ＣＯＲＩＮＦ１［２］は、信号ＥＶＴ１に対応するコア指定情報ＣＯＲＩＮＦ１のプロセッサコアＣＯＲＥＡ２に対応するビットの情報（設定値）である。また、例えば、コア指定情報ＣＯＲＩＮＦｎ［４］は、信号ＥＶＴｎに対応するコア指定情報ＣＯＲＩＮＦｎのプロセッサコアＣＯＲＥＡ４に対応するビットの情報（設定値）である。
【０１０７】
カウンタ指定情報ＣＴＲＩＮＦの符号の末尾の括弧内の数字は、カウンタ指定情報ＣＴＲＩＮＦ内の各ビットの位置を示している。例えば、カウンタ指定情報ＣＴＲＩＮＦ１［１］は、信号ＥＶＴ１に対応するカウンタ指定情報ＣＴＲＩＮＦ１のカウンタＣＴＲＡ１に対応するビットの情報（設定値）である。また、例えば、カウンタ指定情報ＣＴＲＩＮＦｎ［６］は、信号ＥＶＴｎに対応するカウンタ指定情報ＣＴＲＩＮＦｎのカウンタＣＴＲＡ６に対応するビットの情報（設定値）である。
【０１０８】
例えば、通知信号生成部ＵＧ１２１は、コア指定情報ＣＯＲＩＮＦ１［２］・・・ＣＯＲＩＮＦｎ［２］、カウンタ指定情報ＣＴＲＩＮＦ１［１］・・・カウンタ指定情報ＣＴＲＩＮＦｎ［１］を受ける。そして、通知信号生成部ＵＧ１２１は、通知信号ＵＳＩＧ１２１をプロセッサコアＣＯＲＥＡ２のカウンタＣＴＲＡ１に転送制御部ＣＬＴＡを介して転送する。
【０１０９】
通知信号生成部ＵＧ１２１では、各論理積回路ＡＮＤ（ＡＮＤ１・・・ＡＮＤｎ）は、対応するコア指定情報ＣＯＲＩＮＦとカウンタ指定情報ＣＴＲＩＮＦとの論理積結果を論理和回路ＯＲ３に出力する。例えば、通知信号生成部ＵＧ１２１の論理積回路ＡＮＤ１は、コア指定情報ＣＯＲＩＮＦ１［２］とカウンタ指定情報ＣＴＲＩＮＦ１［１］との論理積結果を通知信号生成部ＵＧ１２１の論理和回路ＯＲ３に出力する。また、通知信号生成部ＵＧ１２１の論理和回路ＯＲ３は、通知信号生成部ＵＧ１２１の各論理積回路ＡＮＤ（ＡＮＤ１・・・ＡＮＤｎ）から受けた信号の論理和結果を示す通知信号ＵＳＩＧ１２１を転送制御部ＣＬＴＡに出力する。
【０１１０】
すなわち、通知信号生成部ＵＧ１２１は、プロセッサコアＣＯＲＥＡ２のカウンタＣＴＲＡ１でカウントするイベントがプロセッサコアＣＯＲＥＡ１のレジスタＲＥＧに設定されているとき、通知信号ＵＳＩＧ１２１をアサートする。なお、通知信号生成部ＵＧ１２１以外の通知信号生成部ＵＧの動作は、通知信号生成部ＵＧ１２１と同様である。例えば、通知信号生成部ＵＧ１４６は、プロセッサコアＣＯＲＥＡ４のカウンタＣＴＲＡ６でカウントするイベントがプロセッサコアＣＯＲＥＡ１のレジスタＲＥＧに設定されているとき、通知信号ＵＳＩＧ１４６をアサートする。
【０１１１】
このように、プロセッサコアＣＯＲＥＡ１の各通知信号生成部ＵＧは、対応するプロセッサコアＣＯＲＥＡのカウンタＣＴＲＡでカウントするイベントがプロセッサコアＣＯＲＥＡ１のレジスタＲＥＧに設定されているとき、通知信号ＵＳＩＧをアサートする。プロセッサコアＣＯＲＥＡ１以外のプロセッサコアＣＯＲＥＡの各通知信号生成部ＵＧの動作は、プロセッサコアＣＯＲＥＡ１の各通知信号生成部ＵＧと同様である。
【０１１２】
図１１は、図７に示した転送制御部ＣＬＴＡの一例を示している。転送制御部ＣＬＴＡでは、図６に示した転送制御部ＣＬＴに制御信号生成部ＣＧＥＮが追加されている。そして、転送制御部ＣＬＴＡは、図６に示した転送信号生成部ＳＧＥＮの代わりに転送信号生成部ＳＧＥＮＡを有している。転送制御部ＣＬＴＡのその他の構成は、図１に示した転送制御部ＣＬＴと同様である。
【０１１３】
転送制御部ＣＬＴＡは、複数の転送信号生成部ＳＧＥＮＡと複数の制御信号生成部ＣＧＥＮとを有している。転送信号生成部ＳＧＥＮＡは、例えば、各プロセッサコアＣＯＲＥＡの各カウンタＣＴＲＡに対応して設けられている。転送信号生成部ＳＧＥＮＡの符号の末尾の２桁の数字は、左側から、信号ＥＸＴの転送先のプロセッサコアＣＯＲＥＡおよびカウンタＣＴＲＡをそれぞれ示している。
【０１１４】
例えば、転送信号生成部ＳＧＥＮＡ１１・・・ＳＧＥＮＡ１６は、プロセッサコアＣＯＲＥＡ１のカウンタＣＴＲＡ１・・・ＣＴＲＡ６にそれぞれ対応している。転送信号生成部ＳＧＥＮＡ１１は、例えば、信号ＥＳＩＧ２１１、ＥＳＩＧ３１１、ＥＳＩＧ４１１を、プロセッサコアＣＯＲＥＡ２、ＣＯＲＥＡ３、ＣＯＲＥＡ４のカウント部ＣＮＴＡからそれぞれ受ける。そして、転送信号生成部ＳＧＥＮＡ１１は、信号ＥＳＩＧ２１１、ＥＳＩＧ３１１、ＥＳＩＧ４１１の論理和結果を示す信号ＥＸＴ１１を、プロセッサコアＣＯＲＥＡ１のカウンタＣＴＲＡ１に出力する。
【０１１５】
また、制御信号生成部ＣＧＥＮは、例えば、各プロセッサコアＣＯＲＥＡの各カウンタＣＴＲＡに対応して設けられている。制御信号生成部ＣＧＥＮの符号の末尾の２桁の数字は、左側から、タイミングイネーブル信号ＴＡＥＮの転送先のプロセッサコアＣＯＲＥＡおよびカウンタＣＴＲＡをそれぞれ示している。
【０１１６】
例えば、制御信号生成部ＣＧＥＮ１１・・・ＣＧＥＮＡ１６は、プロセッサコアＣＯＲＥＡ１のカウンタＣＴＲＡ１・・・ＣＴＲＡ６にそれぞれ対応している。制御信号生成部ＣＧＥＮ１１は、例えば、通知信号ＵＳＩＧ２１１、ＵＳＩＧ３１１、ＵＳＩＧ４１１を、プロセッサコアＣＯＲＥＡ２、ＣＯＲＥＡ３、ＣＯＲＥＡ４のカウント部ＣＮＴＡからそれぞれ受ける。そして、制御信号生成部ＣＧＥＮ１１は、通知信号ＵＳＩＧ２１１、ＵＳＩＧ３１１、ＵＳＩＧ４１１の論理和結果を示すタイミングイネーブル信号ＴＡＥＮ１１を、プロセッサコアＣＯＲＥＡ１のカウンタＣＴＲＡ１に出力する。
【０１１７】
なお、転送制御部ＣＬＴＡの構成は、この例に限定されない。例えば、図９に示したセレクタＳＥＬ２が省かれたプロセッサＰＳＹＳＡでは、制御信号生成部ＣＧＥＮは省かれてもよい。
【０１１８】
図１２は、図１１に示した転送信号生成部ＳＧＥＮＡ１１の一例を示している。転送信号生成部ＳＧＥＮＡ１１以外の転送信号生成部ＳＧＥＮＡは、転送信号生成部ＳＧＥＮＡ１１と同様である。転送信号生成部ＳＧＥＮＡ１１は、フリップフロップ回路ＦＦ４、ＦＦ５、ＦＦ６、ＦＦ７および論理和回路ＯＲ４を有している。
【０１１９】
フリップフロップ回路ＦＦ４、ＦＦ５、ＦＦ６は、例えば、信号ＥＳＩＧ２１１、ＥＳＩＧ３１１、ＥＳＩＧ４１１をプロセッサコアＣＯＲＥＡ２、ＣＯＲＥＡ３、ＣＯＲＥＡ４のカウント部ＣＮＴＡからそれぞれ受けるとともに、クロックＣＬＫを受ける。例えば、フリップフロップ回路ＦＦ４、ＦＦ５、ＦＦ６は、プロセッサコアＣＯＲＥＡ２、ＣＯＲＥＡ３、ＣＯＲＥＡ４のカウント部ＣＮＴＡからそれぞれ受けた信号ＥＳＩＧ２１１、ＥＳＩＧ３１１、ＥＳＩＧ４１１をクロックＣＬＫに同期して論理和回路ＯＲ４にそれぞれ出力する。
【０１２０】
論理和回路ＯＲ４は、フリップフロップ回路ＦＦ４、ＦＦ５、ＦＦ６から受けた信号の論理和結果をフリップフロップ回路ＦＦ７に出力する。フリップフロップ回路ＦＦ７は、例えば、クロックＣＬＫ、論理和回路ＯＲ４の出力信号を受け、信号ＥＸＴ１１を出力する。例えば、フリップフロップ回路ＦＦ７は、論理和回路ＯＲ４から受けた信号をクロックＣＬＫに同期して出力する。
【０１２１】
したがって、転送信号生成部ＳＧＥＮＡ１１は、信号ＥＳＩＧに対して２個のフリップフロップ回路ＦＦ分だけ遅延した信号ＥＸＴ１１を、プロセッサコアＣＯＲＥＡ１のカウンタＣＴＲＡ１に出力する。ここで、信号ＥＳＩＧは、信号ＥＩＮＦに同期した信号である。したがって、プロセッサコアＣＯＲＥＡ１のカウンタＣＴＲＡ１は、信号ＥＩＮＦに対して２個のフリップフロップ回路ＦＦ分だけ遅延した信号ＥＸＴ１１を受ける。
【０１２２】
ここで、図９に示した論理和回路ＯＲ２がタイミング調整部ＴＡＤＪを介して受ける信号は、信号ＥＩＮＦに対して２個のフリップフロップ回路ＦＦ分だけ遅延した信号である。したがって、この実施形態では、図９で説明したように、論理和回路ＯＲ１の出力信号をタイミング調整部ＴＡＤＪを介して論理和回路ＯＲ２に転送することにより、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎの論理和結果と発生情報ＥＸＴ１１とを同期させることができる。
【０１２３】
なお、転送信号生成部ＳＧＥＮＡの構成は、この例に限定されない。例えば、転送信号生成部ＳＧＥＮＡの入力から出力までの信号経路上のフリップフロップ回路ＦＦの数は、１つでもよいし、３つ以上でもよい。このときには、例えば、図９に示したタイミング調整部ＴＡＤＪの入力から出力までの信号経路上のフリップフロップ回路ＦＦは、転送信号生成部ＳＧＥＮＡの入力から出力までの信号経路上のフリップフロップ回路ＦＦの数に合わせた数だけ設けられる。
【０１２４】
図１３は、図１１に示した制御信号生成部ＣＧＥＮ１１の一例を示している。制御信号生成部ＣＧＥＮ１１以外の制御信号生成部ＣＧＥＮは、制御信号生成部ＣＧＥＮ１１と同様である。制御信号生成部ＣＧＥＮ１１は、フリップフロップ回路ＦＦ８、ＦＦ９、ＦＦ１０、ＦＦ１１および論理和回路ＯＲ５を有している。
【０１２５】
フリップフロップ回路ＦＦ８、ＦＦ９、ＦＦ１０は、例えば、通知信号ＵＳＩＧ２１１、ＵＳＩ３１１、ＵＳＩ４１１をプロセッサコアＣＯＲＥＡ２、ＣＯＲＥＡ３、ＣＯＲＥＡ４のカウント部ＣＮＴＡからそれぞれ受けるとともに、クロックＣＬＫを受ける。例えば、フリップフロップ回路ＦＦ８、ＦＦ９、ＦＦ１０は、プロセッサコアＣＯＲＥＡ２、ＣＯＲＥＡ３、ＣＯＲＥＡ４のカウント部ＣＮＴＡからそれぞれ受けた通知信号ＵＳＩＧ２１１、ＵＳＩ３１１、ＵＳＩ４１１をクロックＣＬＫに同期して論理和回路ＯＲ５にそれぞれ出力する。
【０１２６】
論理和回路ＯＲ５は、フリップフロップ回路ＦＦ８、ＦＦ９、ＦＦ１０から受けた信号の論理和結果をフリップフロップ回路ＦＦ１１に出力する。フリップフロップ回路ＦＦ１１は、例えば、クロックＣＬＫ、論理和回路ＯＲ５の出力信号を受け、タイミングイネーブル信号ＴＡＥＮ１１を出力する。例えば、フリップフロップ回路ＦＦ１１は、論理和回路ＯＲ５から受けた信号をクロックＣＬＫに同期して出力する。これにより、通知信号ＵＳＩＧ２１１、ＵＳＩＧ３１１、ＵＳＩＧ４１１の論理和結果を示すタイミングイネーブル信号ＴＡＥＮ１１が、プロセッサコアＣＯＲＥＡ１のカウンタＣＴＲＡ１に出力される。
【０１２７】
例えば、プロセッサコアＣＯＲＥＡ１のカウンタＣＴＲＡ１が他のプロセッサコアＣＯＲＥＡのイベントの発生回数をカウントする設定では、通知信号ＵＳＩＧ２１１、ＵＳＩＧ３１１、ＵＳＩＧ４１１の少なくとも１つがアサートされる。したがって、プロセッサコアＣＯＲＥＡ１のカウンタＣＴＲＡ１が他のプロセッサコアＣＯＲＥＡのイベントの発生回数をカウントする設定では、制御信号生成部ＣＧＥＮ１１は、タイミングイネーブル信号ＴＡＥＮ１１をアサートする。タイミングイネーブル信号ＴＡＥＮ１１のアサートに応答して、図９に示したプロセッサコアＣＯＲＥＡ１のカウンタＣＴＲＡ１は、信号ＥＩＮＦ１１１・・・ＥＩＮＦ１１ｎの論理和結果と発生情報ＥＸＴ１１とを同期させる。
【０１２８】
なお、制御信号生成部ＣＧＥＮの構成は、この例に限定されない。例えば、制御信号生成部ＣＧＥＮの入力から出力までの信号経路上のフリップフロップ回路ＦＦの数は、１つでもよいし、３つ以上でもよい。あるいは、フリップフロップ回路ＦＦ８、ＦＦ９、ＦＦ１０、ＦＦ１１は、省かれてもよい。
【０１２９】
以上、この実施形態においても、図１−図６で説明した実施形態と同様の効果を得ることができる。例えば、プロセッサＰＳＹＳＡは、評価対象のプロセッサコアＣＯＲＥＡのイベントの発生回数を、評価対象以外のプロセッサコアＣＯＲＥＡのカウンタＣＴＲＡでカウントできる。このため、この実施形態においても、プロセッサＰＳＹＳＡの性能を詳細に測定できる。なお、この実施形態においても、２つ以上のプロセッサコアＣＯＲＥＡを同時に動作させて、プロセッサＰＳＹＳＡの性能を評価してもよい。また、シングルコアのプロセッサの性能を評価するために、プロセッサＰＳＹＳＡが用いられてもよい。このときには、評価対象のシングルコアのプロセッサと同様のプロセッサコアＣＯＲＥＡがプロセッサＰＳＹＳに搭載される。
【０１３０】
さらに、この実施形態では、各プロセッサコアＣＯＲＥＡは、転送制御部ＣＬＴＡを介さずにカウンタＣＴＲＡに転送される発生情報と、転送制御部ＣＬＴＡを介してカウンタＣＴＲＡに転送される発生情報とを同期させるタイミング調整部ＴＡＤＪを有している。例えば、各プロセッサコアＣＯＲＥＡのタイミング調整部ＴＡＤＪは、選択部ＤＳＥＬからカウンタＣＴＲＡに転送制御部ＣＬＴＡを介さずに転送される発生情報と、他のプロセッサコアＣＯＲＥＡの選択部ＤＳＥＬからカウンタＣＴＲＡに転送制御部ＣＬＴＡを介して転送される発生情報とを同期させる。この結果、この実施形態では、評価対象のプロセッサコアＣＯＲＥＡのイベントの発生情報を評価対象以外のプロセッサコアＣＯＲＥＡのカウンタＣＴＲＡにフリップフロップ回路ＦＦ等を用いて転送するときにも、イベントの発生回数を誤ってカウントすることを防止できる。
【０１３１】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１３２】
ＡＮＤ、ＡＮＤＣ‥論理積回路；ＣＧＥＮ‥制御信号生成部；ＣＬＴ、ＣＬＴＡ‥転送制御部；ＣＮＴ、ＣＮＴＡ‥カウント部；ＣＯＲＥ、ＣＯＲＥＡ‥プロセッサコア；ＣＯＲＳ‥コア選択部；ＣＴＲ、ＣＴＲＡ‥カウンタ；ＣＴＲＳ‥カウンタ選択部；ＤＳＥＬ‥選択部；ＦＦ１−ＦＦ１１‥フリップフロップ回路；ＩＮＣ‥インクリメント回路；ＩＮＴＣ‥インターコネクト；ＮＧＥＮ‥使用通知生成部；ＯＲ‥論理和回路；ＰＳＹＳ‥プロセッサ；ＰＳＹＳＡ‥プロセッサ；ＲＥＧ‥レジスタ；ＳＥＬ１、ＳＥＬ２‥セレクタ；ＳＧＥＮ、ＳＧＥＮＡ‥転送信号生成部；ＴＡＤＪ‥タイミング調整部；ＵＧ‥通知信号生成部
【図１】
2014052962.tif 000003
【図２】
2014052962.tif 000004
【図３】
2014052962.tif 000005
【図４】
2014052962.tif 000006
【図５】
2014052962.tif 000007
【図６】
2014052962.tif 000008
【図７】
2014052962.tif 000009
【図８】
2014052962.tif 000010
【図９】
2014052962.tif 000011
【図１０】
2014052962.tif 000012
【図１１】
2014052962.tif 000013
【図１２】
2014052962.tif 000014
【図１３】
2014052962.tif 000015