以下、実施形態を図面を用いて説明する。
図1は、一実施形態におけるプロセッサPSYSの例を示している。プロセッサPSYSは、例えば、演算を実行する複数のプロセッサコアCOREを有するマルチコアプロセッサである。なお、プロセッサPSYSは、複数のプロセッサを有するマルチプロセッサでもよい。このときには、マルチプロセッサに含まれる複数のプロセッサは、プロセッサコアCOREをそれぞれ有する。
プロセッサPSYSは、例えば、演算を実行する複数のプロセッサコアCORE(CORE1、CORE2、CORE3、CORE4)と、転送制御部CLTと、インターコネクトINTCとを有している。なお、プロセッサコアCOREの数は、4つに限定されない。
各プロセッサコアCOREは、カウント部CNTおよびレジスタREGを有している。カウント部CNTは、監視対象のイベントの発生回数をカウントする。例えば、カウント部CNTは、イベントの発生回数をカウントするカウンタCTRを有している。なお、イベントは、例えば、プロセッサコアCOREを動作させたときに、動作状況に応じて発生する。
レジスタREGには、例えば、カウント対象のイベントとイベントの発生回数をカウントするカウンタCTRとの対応関係が設定される。例えば、カウント部CNTは、レジスタREGに設定された対応関係を示す信号REGINF(以下、レジスタ情報REGINFとも称する)に基づいて、イベントの発生回数をカウントするカウンタCTRを選択する。
転送制御部CLTは、各プロセッサコアCOREから信号ESIGを受け、信号ESIGに基づく信号EXTを各プロセッサコアCOREに出力する。信号ESIG、EXTは、イベントが発生したか否かを示す発生情報である。すなわち、転送制御部CLTは、イベントが発生したか否かを示す発生情報を、複数のプロセッサコアCORE間で転送する。これにより、例えば、プロセッサコアCOREは、カウント対象のイベントが他のプロセッサコアCOREで発生したことを認識できる。以下、信号ESIG、EXTを発生情報ESIG、EXTとも称する。
インターコネクトINTCは、プロセッサコアCORE1−CORE4に接続されている。例えば、プロセッサコアCORE1−CORE4は、インターコネクトINTCを介してメモリ等にアクセスする。
図2は、図1に示したカウント部CNTの一例を示している。なお、図2は、プロセッサコアCORE1のカウント部CNTの一例を示している。プロセッサコアCORE1以外のプロセッサコアCOREのカウント部CNTの構成は、プロセッサコアCORE1のカウント部CNTと同様である。
カウント部CNTは、複数の選択部DSEL(DESL1・・・DESLn)、複数のカウンタCTR(CTR1・・・CTR6)および複数の論理和回路OR(OR21・・・OR26、OR31・・・OR36、OR41・・・OR46)を有している。図2の例では、n個のイベントにそれぞれ対応するn個の選択部DSELが設けられている。なお、選択部DSEL、信号EVT、REGINFの符号の末尾の数字および“n”は、イベントの種類に対応している。同様に、信号EINFの符号の末尾の1桁の数字および“n”は、イベントの種類に対応している。また、信号EINFの符号の末尾の3桁のうちの左側の2桁の数字は、左側から、信号EINFの転送先のプロセッサコアCOREおよびカウンタCTRをそれぞれ示している。
図2の例では、各プロセッサコアCOREに搭載されるカウンタCTRの数は6個である。なお、カウンタCTRの数は、6個に限定されない。論理和回路ORは、例えば、プロセッサコアCOREの数と各プロセッサコアCOREのカウンタCTRの数とに応じた数だけ設けられる。例えば、この実施形態では、プロセッサコアCORE1以外のプロセッサコアCOREの数が3個であり、各プロセッサコアCOREのカウンタCTRの数が6個であるため、論理和回路ORの数は、18個(18=3×6)である。なお、論理和回路ORの数は、18個に限定されない。
各選択部DSELは、信号EVT、REGINFを受け、信号EINFを出力する。信号EVTは、プロセッサコアCORE1のイベントが発生したか否かを示す発生情報である。例えば、信号EVT1に対応するイベントが発生している期間では、信号EVT1はアサートされる。そして、信号EVT1に対応するイベントが発生していない期間では、信号EVT1はネゲートされる。
信号REGINFは、イベントとカウンタCTRとの対応関係を示す信号であり、図1に示したレジスタREGから読み出される。例えば、レジスタ情報REGINF1は、信号EVT1に対応するイベントの発生回数をどのプロセッサコアCOREのどのカウンタCTRでカウントするかを示す情報を有している。
信号EINFは、信号EVTの情報がレジスタ情報REGINFに基づいて反映された信号である。例えば、選択部DSEL1は、信号EVT1がアサートされているとき、信号EVT1に対応する信号EINFのうち、レジスタ情報REGINFが示すカウンタCTRに転送される信号EINFをアサートする。また、選択部DSEL1は、信号EVT1がネゲートされているとき、信号EVT1に対応する信号EINFのうち、レジスタ情報REGINF1が示すカウンタCTRに転送される信号EINFをネゲートする。
なお、信号EVT1に対応する信号EINFのうち、レジスタ情報REGINF1が示すカウンタCTRに転送される信号EINF以外の信号EINFは、信号EVT1の状態に拘わらず、ネゲートされる。このように、信号EINFは、プロセッサコアCORE1のイベントが発生したか否かを示す発生情報である。以下、信号EVT、EINFを発生情報EVT、EINFとも称する。
発生情報EINFは、レジスタ情報REGINFにより指定されたプロセッサコアCOREのカウンタCTRに転送される。上述したように、信号EINFの符号の末尾の3桁のうちの左側の2桁の数字は、左側から、信号EINFの転送先のプロセッサコアCOREおよびカウンタCTRをそれぞれ示している。
例えば、信号EINF16nは、信号EVTnに対応する信号EINFであり、プロセッサコアCORE1のカウンタCTR6に転送される。また、例えば、信号EINF21nは、信号EVTnに対応する信号EINFである。そして、信号EINF21nは、論理和回路OR21および転送制御部CLTを介して、プロセッサコアCORE2のカウンタCTR1に転送される。また、例えば、信号EINF461は、信号EVT1に対応する信号EINFである。そして、信号EINF461は、論理和回路OR46および転送制御部CLTを介して、プロセッサコアCORE4のカウンタCTR6に転送される。
すなわち、選択部DSEL(DESL1・・・DESLn)は、レジスタREGに設定された対応関係(レジスタ情報REGINF)に基づいて選択されるカウント対象のイベントの発生情報を、対応関係により指定されるカウンタCTRに転送する。これにより、対応関係により指定されるカウンタCTRは、カウント対象のイベントの発生情報を受けることができる。
なお、選択部DSEL1以外の選択部DSELの動作は、選択部DSEL1と同様である。例えば、各選択部DSELの動作は、信号EVT、REGINF、EINFの符号の末尾の数字を、各選択部DSELの符号の末尾の数字に読み替えることで説明される。
各カウンタCTRは、n個の信号EVTにそれぞれ対応するn個の発生情報EINFをn個の選択部DSELからそれぞれ受ける。さらに、各カウンタCTRは、発生情報EXTを転送制御部CLTから受ける。そして、各カウンタCTRは、選択部DSELおよび転送制御部CLTから受けた発生情報EINF、EXTに基づいて、イベントの発生回数をカウントする。なお、発生情報EXT11は、例えば、プロセッサコアCORE1以外のプロセッサコアCOREのイベントのうち、プロセッサコアCORE1のカウンタCTR1でカウントされるイベントが発生したか否かを示す発生情報である。
例えば、各カウンタCTRは、選択部DSELおよび転送制御部CLTから受けた発生情報EINF、EXTの少なくとも1つがアサートされているとき、所定のクロック(例えば、プロセッサPSYSの動作クロック)に同期して、カウントアップする。これにより、イベントの発生回数がカウントされる。カウンタCTR(CTR1・・・CTR6)のカウント値を示す信号OUT(OUT11・・・OUT16)は、例えば、必要に応じて読み出される。以下、信号OUTをカウント値OUTとも称する。
ここで、カウント値OUTの符号の末尾の2桁の数字は、左側から、カウント値OUTを出力するプロセッサコアCOREおよびカウンタCTRをそれぞれ示している。また、信号EXTの符号の末尾の2桁の数字は、左側から、信号EXTを受けるプロセッサコアCOREおよびカウンタCTRをそれぞれ示している。
各論理和回路ORは、n個の信号EVTにそれぞれ対応するn個の発生情報EINFをn個の選択部DSELからそれぞれ受ける。そして、各論理和回路ORは、n個の選択部DSELから受けたn個の発生情報EINFの論理和結果を示す信号ESIGを、転送制御部CLTに出力する。
なお、論理和回路ORの符号の末尾の2桁の数字は、左側から、論理和回路ORの出力信号ESIGの転送先のプロセッサコアCOREおよびカウンタCTRをそれぞれ示している。また、信号ESIGの符号の末尾の3桁の数字は、左側から、信号ESIGの転送元のプロセッサコアCORE、信号ESIGの転送先のプロセッサコアCOREおよびカウンタCTRをそれぞれ示している。
例えば、論理和回路OR26は、発生情報EINF261・・・EINF26nの論理和結果を示す信号ESIG126を、プロセッサコアCORE2のカウンタCTR6に転送制御部CLTを介して転送する。すなわち、信号ESIG126は、プロセッサコアCORE1から転送制御部CLTを介してプロセッサコアCORE2のカウンタCTR6に転送される。
ここで、プロセッサコアCORE1以外のプロセッサコアCOREのカウント部CNTの構成は、各要素の符号の末尾のプロセッサコアCOREに対応する数字を、対象のプロセッサコアCOREに合わせて読み替えることで説明される。例えば、プロセッサコアCORE2では、図2の論理和回路OR、信号EINF、ESIG、EXT、OUTの符号の末尾の数字のうちのプロセッサコアCORE1、CORE2に対応する数字をプロセッサコアCORE2、CORE1に対応する数字にそれぞれ読み替える。
したがって、プロセッサコアCORE2では、例えば、カウンタCTRの動作は、信号EINFの符号の末尾の3桁のうちの左側の1桁の数字および信号EXT、OUTの符号の末尾の2桁のうちの左側の1桁の数字の“1”を“2”に読み替えることで説明される。また、例えば、プロセッサコアCORE2では、論理和回路OR21・・OR26は、論理和回路OR11・・OR16に読み替えられる。すなわち、プロセッサコアCORE2では、論理和回路OR21・・・OR26の代わりに論理和回路OR11・・・OR16が設けられる。例えば、論理和回路OR11は、信号EINF111・・・EINF11nの論理和結果を示す信号ESIG211をプロセッサコアCORE1のカウンタCTR1に転送制御部CLTを介して転送する。
なお、カウント部CNTの構成は、この例に限定されない。例えば、プロセッサコアCORE1のカウント部CNTのカウンタCTRは、信号EINFの情報が反映された信号EXT11・・・EXT16を転送制御部CLTから受けてもよい。このときには、例えば、信号EINF111・・・EINF11nの論理和結果を示す信号ESIG111を転送制御部CLTに出力する論理和回路OR11等(論理和回路OR11・・・OR16)が、図2に示したカウント部CNTに追加される。
図3は、図1に示したレジスタREGの設定の一例を示している。なお、図3は、レジスタREGのビット幅が32ビットのときの一例を示している。例えば、レジスタREG(i、j)の0ビット目から10ビット目までの範囲に、信号EVTiに対応するイベントの発生回数をカウントするカウンタCTR等を示すレジスタ情報REGINFiが設定される。そして、レジスタREG(i、j)の16ビット目から26ビット目までの範囲に、信号EVTjに対応するイベントの発生回数をカウントするカウンタCTR等を示すレジスタ情報REGINFjが設定される。なお、レジスタREGのビット幅は、32ビット以外でもよい。
レジスタ情報REGINFは、イネーブル情報ENS、コア指定情報CORINF、カウンタ指定情報CTRINFを有している。以下、イネーブル情報ENS、コア指定情報CORINF、カウンタ指定情報CTRINFを、情報ENS、CORINF、CTRINFとも称する。あるいは、情報ENS、CORINF、CTRINFを信号ENS、CORINF、CTRINFとも称する。
情報ENSiは、例えば、信号EVTiに対応するイベントの発生回数をカウントするか否かを示す情報であり、レジスタREG(i、j)の0ビット目に設定される。信号EVTiに対応するイベントの発生回数をカウントするときには、例えば、レジスタREG(i、j)の0ビット目(情報ENSi)は“1”に設定される。なお、信号EVTiに対応するイベントが発生回数のカウント対象でないときには、レジスタREG(i、j)の0ビット目(情報ENSi)は“0”に設定される。
情報CORINFiは、信号EVTiに対応するイベントの発生回数をカウントするカウンタCTRを有するプロセッサコアCOREを示す情報であり、レジスタREG(i、j)の1ビット目から4ビット目までの範囲に設定される。レジスタREG(i、j)の1ビット目から4ビット目までの範囲の各ビットは、下位ビットから順に、プロセッサコアCORE1、CORE2、CORE3、CORE4にそれぞれ対応している。例えば、プロセッサコアCORE1のカウンタCTRを指定するときには、レジスタREG(i、j)の1ビット目(情報CORINFiの最下位ビット)は“1”に設定される。また、例えば、プロセッサコアCORE4のカウンタCTRを指定するときには、レジスタREG(i、j)の4ビット目(情報CORINFiの最上位ビット)は“1”に設定される。
情報CTRINFiは、信号EVTiに対応するイベントの発生回数をカウントするカウンタCTRを示す情報であり、レジスタREG(i、j)の5ビット目から10ビット目までの範囲に設定される。レジスタREG(i、j)の5ビット目から10ビット目までの範囲の各ビットは、下位ビットから順に、カウンタCTR1・・・CTR6にそれぞれ対応している。例えば、カウンタCTR1を指定するときには、レジスタREG(i、j)の5ビット目(情報CTRINFiの最下位ビット)は“1”に設定される。また、例えば、カウンタCTR6を指定するときには、レジスタREG(i、j)の10ビット目(情報CTRINFiの最上位ビット)は“1”に設定される。
図3の例では、レジスタREG(i、j)の0ビット目が“1”であるため、信号EVTiに対応するイベントは、発生回数のカウント対象のイベントである。また、レジスタREG(i、j)の2ビット目、3ビット目、6ビット目が“1”である。このため、信号EVTiに対応するイベントの発生回数は、プロセッサコアCORE2のカウンタCTR2とプロセッサコアCORE3のカウンタCTR2の2つのカウンタCTRでカウントされる。
信号EVTjに対応するイベントに関しても、信号EVTiに対応するイベントと同様に、レジスタREG(i、j)の16ビット目から26ビット目までの範囲に設定される。例えば、情報ENSjは、信号EVTjに対応するイベントの発生回数をカウントするか否かを示す情報であり、レジスタREG(i、j)の16ビット目に設定される。
情報CORINFjは、信号EVTjに対応するイベントの発生回数をカウントするカウンタCTRを有するプロセッサコアCOREを示す情報であり、レジスタREG(i、j)の17ビット目から20ビット目までの範囲に設定される。レジスタREG(i、j)の17ビット目から20ビット目までの範囲の各ビットは、下位ビットから順に、プロセッサコアCORE1、CORE2、CORE3、CORE4にそれぞれ対応している。例えば、プロセッサコアCORE1のカウンタCTRを指定するときには、レジスタREG(i、j)の17ビット目(情報CORINFjの最下位ビット)は“1”に設定される。また、例えば、プロセッサコアCORE4のカウンタCTRを指定するときには、レジスタREG(i、j)の20ビット目(情報CORINFjの最上位ビット)は“1”に設定される。
情報CTRINFjは、信号EVTjに対応するイベントの発生回数をカウントするカウンタCTRを示す情報であり、レジスタREG(i、j)の21ビット目から26ビット目までの範囲に設定される。レジスタREG(i、j)の21ビット目から26ビット目までの範囲の各ビットは、下位ビットから順に、カウンタCTR1・・・CTR6にそれぞれ対応している。例えば、カウンタCTR1を指定するときには、レジスタREG(i、j)の21ビット目(情報CTRINFjの最下位ビット)は“1”に設定される。また、例えば、カウンタCTR6を指定するときには、レジスタREG(i、j)の26ビット目(情報CTRINFjの最上位ビット)は“1”に設定される。
図3の例では、レジスタREG(i、j)の16ビット目が“1”であるため、信号EVTjに対応するイベントは、発生回数のカウント対象のイベントである。また、レジスタREG(i、j)の17ビット目、21ビット目、26ビット目が“1”である。このため、信号EVTjに対応するイベントの発生回数は、プロセッサコアCORE1のカウンタCTR1とプロセッサコアCORE1のカウンタCTR6の2つのカウンタCTRでカウントされる。
なお、レジスタREGの設定は、この例に限定されない。例えば、情報ENSは省かれてもよい。この場合、例えば、信号EVTiに対応するイベントが発生回数のカウント対象でないときには、情報CORINFi、CTRINFiの全てのビットが“0”に設定される。情報ENSを省くことにより、レジスタ情報REGINFのビット数を低減できる。また、例えば、各信号EVTに対応するイベントの発生回数を複数のカウンタCTRでカウントしない条件では、情報CORINFは、プロセッサコアCOREを示す番号等が設定されればよい。同様に、情報CTRINFは、カウンタCTRを示す番号等が設定されればよい。このときには、レジスタ情報REGINFのビット数を低減できる。
あるいは、レジスタ情報REGINFのビット数を増やして、イベントの発生回数をカウントするカウンタCTRを詳細に指定できるようにしてもよい。例えば、各プロセッサコアCOREは、カウント対象のイベントを各プロセッサコアCOREの各カウンタCTRで独立して設定可能なレジスタREGを有してもよい。このときには、例えば、信号EVTiに対応するイベントの発生回数をカウントするカウンタCTRとして、プロセッサコアCORE2のカウンタCTR2とプロセッサコアCORE3のカウンタCTR6の2つのカウンタCTRを指定できる。
ここで、図3に示したレジスタREG(i、j)において、10ビット目が“1”に設定されたとき(0、2、3、6、10ビット目が“1”)、信号EVTiに対応するイベントの発生回数は、4つのカウンタCTRでカウントされる。例えば、信号EVTiに対応するイベントの発生回数は、プロセッサコアCORE2、CORE3のカウンタCTR2とプロセッサコアCORE2、CORE3のカウンタCTR6の4つのカウンタCTRでカウントされる。
図4は、図2に示した選択部DSELの一例を示している。なお、図4は、信号EVTiに対応するイベントの発生情報をレジスタ情報REGINFiに基づいて選択する選択部DSELiの一例を示している。例えば、信号EVTiに対応するレジスタ情報REGINFiは、レジスタREGから読み出される。レジスタREGからレジスタ情報REGINFを読み出す処理は、選択部DSELにより実行されてもよいし、プロセッサコアCOREの選択部DSEL以外のモジュール(例えば、プロセッサコアCORE全体の動作を制御するモジュール)により実行されてもよい。
選択部DSELiは、論理積回路ANDC、コア選択部CORSおよび複数のカウンタ選択部CTRS(CTRS1、CTRS2、CTRS3、CTRS4)を有している。カウンタ選択部CTRS1、CTRS2、CTRS3、CTRS4は、例えば、プロセッサコアCORE1、CORE2、CORE3、CORE4にそれぞれ対応している。なお、図4では、図を見やすくするために、カウンタ選択部CTRS3、CNT4の出力信号EINF(EINF31i−EINF36i、EINF41i−EINF46i)をカウンタ選択部CTRS毎に纏めて記載している。
論理積回路ANDCは、信号EVTi、ENSiを受け、信号EVTi、ENSiの論理積結果をコア選択部CORSに出力する。すなわち、信号EVTiに対応するイベントが発生回数のカウント対象のイベントである場合、イベントの発生情報EVTiがコア選択部CORSに転送される。なお、レジスタREGの設定項目にイネーブル情報ENSが含まれないプロセッサPSYSでは、論理積回路ANDCは、省かれてもよい。
コア選択部CORSは、信号EVTi、ENSiの論理積結果および信号CORINFiを受ける。そして、コア選択部CORSは、信号CORINFiにより指定されたプロセッサコアCOREに対応するカウンタ選択部CTRSに、信号EVTi、ENSiの論理積結果を転送する。
なお、コア選択部CORSは、信号CORINFiにより指定されたプロセッサコアCORE以外のプロセッサコアCOREに対応するカウンタ選択部CTRSに出力する信号を、信号EVTi、ENSiの論理積結果に拘わらず、ネゲートする。すなわち、信号CORINFiにより指定されたプロセッサコアCORE以外のプロセッサコアCOREに対応するカウンタ選択部CTRSには、信号EVTiに対応するイベントの発生情報(信号EVTi、ENSiの論理積結果)は転送されない。このように、コア選択部CORSは、コア指定情報CORINFiに基づいて、発生情報EVTiの転送先のプロセッサコアCOREを選択する。
カウンタ選択部CTRSは、信号CTRINFiおよびコア選択部CORSの出力信号を受ける。そして、カウンタ選択部CTRSは、信号CTRINFiにより指定されたカウンタCTRに対応する信号EINFに、コア選択部CORSの出力結果を反映する。なお、カウンタ選択部CTRSは、信号CTRINFiにより指定されたカウンタCTRに対応する信号EINF以外の信号EINFを、コア選択部CORSの出力結果に拘わらず、ネゲートする。
すなわち、信号CTRINFiにより指定されたカウンタCTR以外のカウンタCTRには、信号EVTiに対応するイベントの発生情報は転送されない。このように、カウンタ選択部CTRSは、カウンタ指定情報CTRINFiに基づいて、発生情報EVTiの転送先のカウンタCTRを選択する。
例えば、図3に示したようにレジスタREGが設定されているとき、コア選択部CORSは、信号EVTi、ENSiの論理積結果をカウンタ選択部CTRS2、CTRS3に転送する。そして、カウンタ選択部CTRS2、CTRS3は、コア選択部CORSの出力信号がアサートされているとき、信号EINF22i、EINF32iをそれぞれアサートする。また、カウンタ選択部CTRS2、CTRS3は、コア選択部CORSの出力信号がネゲートされているとき、信号EINF22i、EINF32iをそれぞれネゲートする。これにより、発生情報EVTiは、プロセッサコアCORE2のカウンタCTR2とプロセッサコアCORE3のカウンタCTR2とに転送される。
図5は、図2に示したカウンタCTR1の一例を示している。すなわち、図5は、プロセッサコアCORE1のカウンタCTR1の一例を示している。なお、カウンタCTR1以外のカウンタCTRの構成は、カウンタCTR1と同様である。カウンタCTR1は、例えば、論理和回路OR1、OR2、インクリメント回路INC、セレクタSEL1およびフリップフロップ回路FF1を有している。
論理和回路OR1は、信号EINF111・・・EINF11nを受け、信号EINF111・・・EINF11nの論理和結果を論理和回路OR2に出力する。論理和回路OR2は、信号EXT11および論理和回路OR1の出力信号を受け、信号EXT11と論理和回路OR1の出力信号との論理和結果をセレクタSEL1に出力する。すなわち、セレクタSEL1は、信号EINF111・・・EINF11n、EXT11の論理和結果を、制御信号として受ける。
インクリメント回路INCは、フリップフロップ回路FF1に保持されているカウント値OUT11に“1”を加算し、加算結果をセレクタSEL1に出力する。セレクタSEL1は、フリップフロップ回路FF1の出力信号OUT11(フリップフロップ回路FF1に保持されているカウント値OUT11)とインクリメント回路INCの出力信号とを受ける。そして、セレクタSEL1は、制御信号(論理和回路OR2の出力信号)に基づいて、フリップフロップ回路FF1の出力信号OUT11とインクリメント回路INCの出力信号とのいずれかをフリップフロップ回路FF1に出力する。
例えば、論理和回路OR2の出力信号が“1”のとき、セレクタSEL1は、インクリメント回路INCの出力信号をフリップフロップ回路FF1に出力する。すなわち、信号EINF111・・・EINF11n、EXT11の少なくとも1つがアサートされているとき、セレクタSEL1は、インクリメント回路INCの出力信号をフリップフロップ回路FF1に出力する。
また、例えば、論理和回路OR2の出力信号が“0”のとき、セレクタSEL1は、フリップフロップ回路FF1の出力信号OUT11をフリップフロップ回路FF1にフィードバックする。すなわち、信号EINF111・・・EINF11n、EXT11の全てがネゲートされているとき、セレクタSEL1は、フリップフロップ回路FF1の出力信号OUT11をフリップフロップ回路FF1にフィードバックする。
フリップフロップ回路FF1は、クロックCLK、リセット信号RESET、セレクタSEL1の出力信号を受け、信号OUT11を出力する。クロックCLKは、例えば、プロセッサPSYSの動作クロックである。また、リセット信号RESETは、フリップフロップ回路FF1に保持されているカウント値OUT11をリセットする信号である。リセット信号RESETは、例えば、プロセッサコアCORE1全体の動作を制御するモジュールで生成される。例えば、フリップフロップ回路FF1は、リセット信号RESETがネゲートされたとき、カウント値OUT11をリセットする。
フリップフロップ回路FF1は、例えば、クロックCLKに同期して、セレクタSEL1の出力信号を取り込み、保持する。すなわち、フリップフロップ回路FF1は、例えば、信号EINF111・・・EINF11n、EXT11の少なくとも1つがアサートされているとき、インクリメント回路INCの出力値を取り込み、保持する。これにより、カウント値OUT11は、カウントアップする。
また、例えば、フリップフロップ回路FF1は、信号EINF111・・・EINF11n、EXT11の全てがネゲートされているとき、フィードバックされた信号OUT11を取り込み、保持する。これにより、カウント値OUT11は、前の値に維持される。このように、カウンタCTR1は、信号EINF111・・・EINF11n、EXT11の少なくとも1つがアサートされているとき、クロックCLKに同期して、カウントアップする。すなわち、各プロセッサコアCOREのカウンタCTRは、プロセッサコアCORE1−CORE4の選択部DSEL(DESL1・・・DESLn)から転送される発生情報に基づいて、イベントの発生回数をカウントする。
ここで、例えば、プロセッサコアCORE1のカウンタCTR1以外の各カウンタCTRの動作は、信号EINF、OUTの符号の末尾の数字のうちのカウンタCTR1に対応する数字を各カウンタCTRに対応する数字にそれぞれ読み替えることで説明される。例えば、プロセッサコアCORE1のカウンタCTR6の動作は、信号EINF111・・・EINF11n、OUT11を信号EINF161・・・EINF16n、OUT16にそれぞれ読み替えることで説明される。
なお、カウンタCTRの構成は、この例に限定されない。例えば、カウンタCTRは、論理和回路OR1と論理和回路OR2とを区別せずに設計されてもよい。
図6は、図1に示した転送制御部CLTの一例を示している。転送制御部CLTは、複数の転送信号生成部SGENを有している。転送信号生成部SGENは、例えば、各プロセッサコアCOREの各カウンタCTRに対応して設けられている。転送信号生成部SGENの符号の末尾の2桁の数字は、左側から、信号EXTの転送先のプロセッサコアCOREおよびカウンタCTRをそれぞれ示している。
例えば、転送信号生成部SGEN11・・・SGEN16は、プロセッサコアCORE1のカウンタCTR1・・・CTR6にそれぞれ対応している。転送信号生成部SGEN11は、例えば、信号ESIG211、ESIG311、ESIG411を、プロセッサコアCORE2、CORE3、CORE4のカウント部CNTからそれぞれ受ける。そして、転送信号生成部SGEN11は、信号ESIG211、ESIG311、ESIG411の論理和結果を示す信号EXT11を、プロセッサコアCORE1のカウンタCTR1に出力する。
なお、図2で説明したように、信号ESIGの符号の末尾の3桁の数字は、左側から、信号ESIGの転送元のプロセッサコアCORE、信号ESIGの転送先のプロセッサコアCOREおよびカウンタCTRをそれぞれ示している。また、信号EXTの符号の末尾の2桁の数字は、左側から、信号EXTを受けるプロセッサコアCOREおよびカウンタCTRをそれぞれ示している。
例えば、信号ESIG211は、プロセッサコアCORE2のイベントのうち、プロセッサコアCORE1のカウンタCTR1でカウントされるイベントの発生情報である。また、例えば、信号ESIG311は、プロセッサコアCORE3のイベントのうち、プロセッサコアCORE1のカウンタCTR1でカウントされるイベントの発生情報である。そして、例えば、信号ESIG411は、プロセッサコアCORE4のイベントのうち、プロセッサコアCORE1のカウンタCTR1でカウントされるイベントの発生情報である。
したがって、信号EXT11は、プロセッサコアCORE1を除くプロセッサコアCORE(CORE2、CORE3、CORE4)のイベントのうち、プロセッサコアCORE1のカウンタCTR1でカウントされるイベントの発生情報である。このように、転送信号生成部SGEN11は、プロセッサコアCORE1のカウンタCTR1でカウントされるイベントの発生情報EXT11を、プロセッサコアCORE2、CORE3、CORE4から受けた発生情報ESIG211、ESIG311、ESIG411に基づいて生成する。
転送信号生成部SGEN11以外の転送信号生成部SGENの動作は、各要素の符号の末尾のプロセッサコアCOREおよびカウンタCTRに対応する数字を、対象のプロセッサコアCOREおよびカウンタCTRに合わせて読み替えることで説明される。例えば、転送信号生成部SGEN46は、信号ESIG146、ESIG246、ESIG346を、プロセッサコアCORE1、CORE2、CORE3のカウント部CNTからそれぞれ受ける。そして、転送信号生成部SGEN46は、信号ESIG146、ESIG246、ESIG346の論理和結果を示す信号EXT46を、プロセッサコアCORE4のカウンタCTR6に出力する。
これにより、プロセッサPSYSは、例えば、評価対象のプロセッサコアCOREのイベントの発生回数を、評価対象以外のプロセッサコアCOREのカウンタCTRでカウントできる。このように、この実施形態では、評価対象以外のプロセッサコアCOREのカウンタCTRを使用できるため、プロセッサPSYSの性能を詳細に測定できる。
例えば、評価対象以外のプロセッサコアCOREのカウンタCTRを使用できないプロセッサでは、評価対象のプロセッサコアCOREのカウンタCTRの数より多い種類のイベントの発生回数を共通の条件でカウントすることは困難である。このため、評価対象以外のプロセッサコアCOREのカウンタCTRを使用できないプロセッサでは、プロセッサの正確な性能評価を実施できないおそれがある。
これに対し、この実施形態では、プロセッサPSYSの性能評価の際に、評価対象のプロセッサコアCOREのカウンタCTRおよび評価対象以外のプロセッサコアCOREのカウンタCTRを使用できる。例えば、この実施形態では、レジスタ情報REGINFの設定により、評価対象以外のプロセッサコアCOREのカウンタCTRも、カウント対象のイベントの発生回数をカウントするカウンタCTRに指定できる。
このように、この実施形態では、評価対象以外のプロセッサコアCOREのカウンタCTRも使用できるため、評価対象のプロセッサコアCOREのカウンタCTRの数より多い種類のイベントの発生回数を共通の条件でカウントできる。この結果、この実施形態では、プロセッサPSYSの正確な性能評価を実施できる。
例えば、この実施形態では、プロセッサコアCORE1が評価対象のとき、評価対象のプロセッサコアCORE1で発生するイベントとイベントの発生回数をカウントするカウンタCTRとの対応関係(レジスタ情報REGINF)をレジスタREGに設定する。この際、評価対象以外のプロセッサコアCOREのカウンタCTRも、カウント対象のイベントの発生回数をカウントするカウンタCTRに指定できる。
そして、プロセッサコアCORE1の性能評価の際に、評価対象のプロセッサコアCORE1を動作させる。なお、評価対象以外のプロセッサコアCORE2、CORE3、CORE4では、演算動作は停止しているが、カウンタCTRは動作する。これにより、レジスタ情報REGINFにより指定されるカウンタCTRは、プロセッサコアCORE1のイベントの発生回数を発生情報に基づいてカウントする。
なお、2つ以上のプロセッサコアCOREを同時に動作させて、プロセッサPSYSの性能を評価してもよい。また、シングルコアのプロセッサの性能を評価するために、プロセッサPSYSが用いられてもよい。このときには、評価対象のシングルコアのプロセッサと同様のプロセッサコアCOREがプロセッサPSYSに搭載される。
以上、この実施形態では、プロセッサPSYSは、演算を実行する複数のプロセッサコアCOREと、イベントが発生したか否かを示す発生情報を、複数のプロセッサコアCORE間で転送する転送制御部CLTとを有している。また、各プロセッサコアCOREは、イベントの発生回数を発生情報に基づいてカウントするカウンタCTRと、イベントとイベントの発生回数をカウントするカウンタCTRとの対応関係が設定されるレジスタREGとを有している。
この実施形態では、評価対象以外のプロセッサコアCOREのカウンタCTRの使用をレジスタREGに設定することにより、評価対象以外のプロセッサコアCOREのカウンタCTRを、評価対象のプロセッサコアCOREの性能評価の際に使用できる。この結果、この実施形態では、プロセッサPSYSの性能を詳細に測定できる。
図7は、別の実施形態におけるプロセッサPSYSAの一例を示している。図1−図6で説明した要素と同様の要素については、同様の符号を付し、これ等については、詳細な説明を省略する。この実施形態のプロセッサPSYSAは、図1に示したプロセッサコアCOREおよび転送制御部CLTの代わりに、プロセッサコアCOREAおよび転送制御部CLTAを有している。プロセッサPSYSAのその他の構成は、図1に示したプロセッサPSYSと同様である。
プロセッサPSYSAは、例えば、演算を実行する複数のプロセッサコアCOREA(COREA1、COREA2、COREA3、COREA4)と、転送制御部CLTAと、インターコネクトINTCとを有している。なお、プロセッサコアCOREAの数は、4つに限定されない。
各プロセッサコアCOREAは、図1に示したカウント部CNTの代わりにカウント部CNTAを有している。プロセッサコアCOREAのその他の構成は、図1に示したプロセッサコアCOREと同様である。例えば、各プロセッサコアCOREAは、カウント部CNTAおよびレジスタREGを有している。カウント部CNTAは、例えば、監視対象のイベントの発生回数を、カウンタCTRAを用いてカウントする。
例えば、カウント部CNTAは、信号ESIG、USIGを転送制御部CLTAに出力し、信号EXT、TAENを転送制御部CLTAから受ける。信号USIGは、他のプロセッサコアCOREAのカウンタ部CNTAのカウンタCTRAを使用するか否かを示す情報である。以下、信号USIGを使用通知USIGとも称する。また、信号TAENは、イベントの発生回数をカウントするタイミングを調整するか否かを示す情報である。以下、信号TAENをタイミングイネーブル信号TAENとも称する。レジスタREGは、例えば、図1−図6で説明した実施形態と同様である。
転送制御部CLTAは、各プロセッサコアCOREAから受けた信号ESIGに基づいて、信号EXTを各プロセッサコアCOREAに出力する。また、転送制御部CLTAは、各プロセッサコアCOREAから受けた使用通知USIGに基づいて、タイミングイネーブル信号TAENを各プロセッサコアCOREAに出力する。
図8は、図7に示したカウント部CNTAの一例を示している。なお、図8は、プロセッサコアCOREA1のカウント部CNTAの一例を示している。プロセッサコアCOREA1以外のプロセッサコアCOREAのカウント部CNTAの構成は、プロセッサコアCOREA1のカウント部CNTAと同様である。図8の各要素の符号の末尾の数字の意味は、図1−図6で説明した実施形態と同様である。また、タイミングイネーブル信号TAENの符号の末尾の2桁の数字は、左側から、タイミングイネーブル信号TAENを受けるプロセッサコアCOREAおよびカウンタCTRAをそれぞれ示している。
カウント部CNTAでは、図2に示したカウント部CNTに使用通知生成部NGENが追加されている。そして、カウント部CNTAは、図2に示したカウンタCTRの代わりに、カウンタCTRAを有している。カウント部CNTAのその他の構成は、図2に示したカウント部CNTと同様である。
例えば、カウント部CNTAは、複数の選択部DSEL(DESL1・・・DESLn)、複数のカウンタCTRA(CTRA1・・・CTRA6)、複数の論理和回路OR(OR21・・・OR26、OR31・・・OR36、OR41・・・OR46)および使用通知生成部NGENを有している。選択部DSEL(DESL1・・・DESLn)および論理和回路OR(OR21・・・OR26、OR31・・・OR36、OR41・・・OR46)は、例えば、図1−図6で説明した実施形態と同じである。
各カウンタCTRAは、n個の信号EVTにそれぞれ対応するn個の発生情報EINFをn個の選択部DSELからそれぞれ受ける。さらに、各カウンタCTRAは、発生情報EXTおよびタイミングイネーブル信号TAENを転送制御部CLTAから受ける。そして、各カウンタCTRAは、選択部DSELおよび転送制御部CLTAから受けた発生情報EINF、EXTに基づいて、イベントの発生回数をカウントする。各カウンタCTRAのカウント値OUTは、例えば、必要に応じて読み出される。また、各カウンタCTRAは、例えば、タイミングイネーブル信号TAENがアサートされているとき、発生情報EINFの論理和結果を示す信号を発生情報EXTに同期させる。
使用通知生成部NGENは、レジスタ情報REGINF(REGINF1・・・REGINFn)内の情報のうち、コア指定情報CORINF(CORINF1・・・CORINFn)およびカウンタ指定情報CTRINF(CTRINF1・・・CTRINFn)を受ける。そして、使用通知生成部NGENは、コア指定情報CORINFおよびカウンタ指定情報CTRINFに基づいて生成した使用通知USIGを、転送制御部CLTAに出力する。
図9は、図8に示したカウンタCTRA1の一例を示している。すなわち、図8は、プロセッサコアCOREA1のカウンタCTRA1の一例を示している。なお、カウンタCTRA1以外のカウンタCTRAの構成は、カウンタCTRA1と同様である。カウンタCTRA1では、図5に示したカウンタCTR1にタイミング調整部TADJおよびセレクタSEL2が追加されている。カウンタCTRA1のその他の構成は、カウンタCTR1と同様である。
例えば、カウンタCTRA1は、論理和回路OR1、タイミング調整部TADJ、セレクタSEL2、論理和回路OR2、インクリメント回路INC、セレクタSEL1およびフリップフロップ回路FF1を有している。
論理和回路OR1は、信号EINF111・・・EINF11nの論理和結果を、タイミング調整部TADJおよびセレクタSEL2に出力する。タイミング調整部TADJは、例えば、論理和回路OR1の出力とセレクタSEL2の入力との間に、フリップフロップ回路FF2、FF3を有している。タイミング調整部TADJの入力から出力までの信号経路上のフリップフロップ回路FFの数は、例えば、転送制御部CLTAを介して転送される信号EXT11の論理和回路OR1の出力信号に対する遅延量に合わせて決定される。
図9の例では、タイミング調整部TADJの入力から出力までの信号経路上のフリップフロップ回路FFの数は、図12に示す転送信号生成部SGENAの入力から出力までの信号経路上のフリップフロップ回路FFの数と同じである。これにより、この実施形態では、タイミング調整部TADJの出力信号を発生情報EXTに同期させることができる。
例えば、フリップフロップ回路FF2は、クロックCLK、論理和回路OR1の出力信号を受ける。そして、フリップフロップ回路FF2は、論理和回路OR1から受けた信号をクロックCLKに同期してフリップフロップ回路FF3に出力する。クロックCLKは、例えば、プロセッサPSYSAの動作クロックである。また、フリップフロップ回路FF3は、クロックCLK、フリップフロップ回路FF2の出力信号を受ける。そして、フリップフロップ回路FF3は、フリップフロップ回路FF2から受けた信号をクロックCLKに同期してセレクタSEL2に出力する。
セレクタSEL2は、制御信号としてタイミングイネーブル信号TAEN11を受ける。また、セレクタSEL2は、論理和回路OR1の出力信号とタイミング調整部TADJの出力信号とを受ける。そして、セレクタSEL2は、タイミングイネーブル信号TAEN11に基づいて、論理和回路OR1の出力信号とタイミング調整部TADJの出力信号とのいずれかを論理和回路OR2に出力する。
例えば、プロセッサコアCOREA1のカウンタCTRA1が他のプロセッサコアCOREAのイベントをカウントする場合、タイミングイネーブル信号TAEN11は“1”に設定され、イベントの発生回数をカウントするタイミングが調整される。タイミングイネーブル信号TAEN11が“1”のとき、例えば、セレクタSEL2は、タイミング調整部TADJの出力信号を論理和回路OR2に出力する。すなわち、タイミングイネーブル信号TAEN11が“1”のとき、セレクタSEL2は、信号EINF111・・・EINF11nの論理和結果(論理和回路OR1の出力信号)を発生情報EXT11に同期させて論理和回路OR2に出力する。
このように、この実施形態では、カウンタCTRA1が発生情報EXT、EINFに基づいてイベントの発生回数をカウントする場合、信号EINF111・・・EINF11nの論理和結果と発生情報EXT11とを同期させることができる。これにより、この実施形態では、例えば、同じタイミングで発生したイベントの発生情報EXT、EINFを論理和回路OR2が異なるタイミングで受けることを防止できる。あるいは、この実施形態では、例えば、異なるタイミングで発生したイベントの発生情報EXT、EINFを論理和回路OR2が同じタイミングで受けることを防止できる。この結果、この実施形態では、イベントの発生回数を誤ってカウントすることを防止できる。
なお、例えば、プロセッサコアCOREA1のカウンタCTRA1が他のプロセッサコアCOREAのイベントをカウントしない場合、発生情報EXT11は常にネゲートされているため、発生情報EXT11のタイミングを考慮しなくても問題ない。このときには、タイミングイネーブル信号TAEN11は、例えば、“0”に設定される。タイミングイネーブル信号TAEN11が“0”のとき、例えば、セレクタSEL2は、論理和回路OR1の出力信号を論理和回路OR2に出力する。
論理和回路OR2は、信号EXT11およびセレクタSEL2の出力信号を受け、信号EXT11とセレクタSEL2の出力信号との論理和結果をセレクタSEL1に出力する。すなわち、セレクタSEL1は、信号EINF111・・・EINF11n、EXT11の論理和結果を、制御信号として受ける。
インクリメント回路INC、セレクタSEL1およびフリップフロップ回路FF1は、例えば、図5に示したインクリメント回路INC、セレクタSEL1およびフリップフロップ回路FF1と同じである。
なお、カウンタCTRAの構成は、この例に限定されない。例えば、セレクタSEL2は、省かれてもよい。この場合、例えば、論理和回路OR2は、プロセッサコアCOREA1のカウンタCTRA1が他のプロセッサコアCOREAのイベントをカウントするか否かに拘わらず、タイミング調整部TADJを介して論理和回路OR1の出力信号を受ける。すなわち、論理和回路OR2は、信号EXT11およびタイミング調整部TADJの出力信号を受ける。この場合、図8に示した使用通知生成部NGENおよび図11に示す制御信号生成部CGEN(転送制御部CLTAの一部)を省くことができる。この結果、プロセッサPSYSAの構成を簡易にできる。
図10は、図8に示した使用通知生成部NGENの一例を示している。すなわち、図10は、プロセッサコアCOREA1の使用通知生成部NGENの一例を示している。使用通知生成部NGENは、複数の通知信号生成部UGを有している。例えば、プロセッサコアCOREA1では、通知信号生成部UGは、プロセッサコアCOREA1以外の各プロセッサコアCOREAの各カウンタCTRAに対応して設けられている。各通知信号生成部UGは、例えば、n個のイベントにそれぞれ対応するn個の論理積回路AND(AND1・・・ANDn)と、各論理積回路AND(AND1・・・ANDn)の出力信号を受ける論理和回路OR3とを有している。
ここで、通知信号生成部UGの符号の末尾の3桁の数字は、左側から、通知信号USIGの転送元のプロセッサコアCOREA、通知信号USIGの転送先のプロセッサコアCOREAおよびカウンタCTRAをそれぞれ示している。同様に、通知信号USIGの符号の末尾の3桁の数字は、左側から、通知信号USIGの転送元のプロセッサコアCOREA、通知信号USIGの転送先のプロセッサコアCOREAおよびカウンタCTRAをそれぞれ示している。
また、コア指定情報CORINFの符号の末尾の括弧内の数字は、コア指定情報CORINF内の各ビットの位置を示している。例えば、コア指定情報CORINF1[2]は、信号EVT1に対応するコア指定情報CORINF1のプロセッサコアCOREA2に対応するビットの情報(設定値)である。また、例えば、コア指定情報CORINFn[4]は、信号EVTnに対応するコア指定情報CORINFnのプロセッサコアCOREA4に対応するビットの情報(設定値)である。
カウンタ指定情報CTRINFの符号の末尾の括弧内の数字は、カウンタ指定情報CTRINF内の各ビットの位置を示している。例えば、カウンタ指定情報CTRINF1[1]は、信号EVT1に対応するカウンタ指定情報CTRINF1のカウンタCTRA1に対応するビットの情報(設定値)である。また、例えば、カウンタ指定情報CTRINFn[6]は、信号EVTnに対応するカウンタ指定情報CTRINFnのカウンタCTRA6に対応するビットの情報(設定値)である。
例えば、通知信号生成部UG121は、コア指定情報CORINF1[2]・・・CORINFn[2]、カウンタ指定情報CTRINF1[1]・・・カウンタ指定情報CTRINFn[1]を受ける。そして、通知信号生成部UG121は、通知信号USIG121をプロセッサコアCOREA2のカウンタCTRA1に転送制御部CLTAを介して転送する。
通知信号生成部UG121では、各論理積回路AND(AND1・・・ANDn)は、対応するコア指定情報CORINFとカウンタ指定情報CTRINFとの論理積結果を論理和回路OR3に出力する。例えば、通知信号生成部UG121の論理積回路AND1は、コア指定情報CORINF1[2]とカウンタ指定情報CTRINF1[1]との論理積結果を通知信号生成部UG121の論理和回路OR3に出力する。また、通知信号生成部UG121の論理和回路OR3は、通知信号生成部UG121の各論理積回路AND(AND1・・・ANDn)から受けた信号の論理和結果を示す通知信号USIG121を転送制御部CLTAに出力する。
すなわち、通知信号生成部UG121は、プロセッサコアCOREA2のカウンタCTRA1でカウントするイベントがプロセッサコアCOREA1のレジスタREGに設定されているとき、通知信号USIG121をアサートする。なお、通知信号生成部UG121以外の通知信号生成部UGの動作は、通知信号生成部UG121と同様である。例えば、通知信号生成部UG146は、プロセッサコアCOREA4のカウンタCTRA6でカウントするイベントがプロセッサコアCOREA1のレジスタREGに設定されているとき、通知信号USIG146をアサートする。
このように、プロセッサコアCOREA1の各通知信号生成部UGは、対応するプロセッサコアCOREAのカウンタCTRAでカウントするイベントがプロセッサコアCOREA1のレジスタREGに設定されているとき、通知信号USIGをアサートする。プロセッサコアCOREA1以外のプロセッサコアCOREAの各通知信号生成部UGの動作は、プロセッサコアCOREA1の各通知信号生成部UGと同様である。
図11は、図7に示した転送制御部CLTAの一例を示している。転送制御部CLTAでは、図6に示した転送制御部CLTに制御信号生成部CGENが追加されている。そして、転送制御部CLTAは、図6に示した転送信号生成部SGENの代わりに転送信号生成部SGENAを有している。転送制御部CLTAのその他の構成は、図1に示した転送制御部CLTと同様である。
転送制御部CLTAは、複数の転送信号生成部SGENAと複数の制御信号生成部CGENとを有している。転送信号生成部SGENAは、例えば、各プロセッサコアCOREAの各カウンタCTRAに対応して設けられている。転送信号生成部SGENAの符号の末尾の2桁の数字は、左側から、信号EXTの転送先のプロセッサコアCOREAおよびカウンタCTRAをそれぞれ示している。
例えば、転送信号生成部SGENA11・・・SGENA16は、プロセッサコアCOREA1のカウンタCTRA1・・・CTRA6にそれぞれ対応している。転送信号生成部SGENA11は、例えば、信号ESIG211、ESIG311、ESIG411を、プロセッサコアCOREA2、COREA3、COREA4のカウント部CNTAからそれぞれ受ける。そして、転送信号生成部SGENA11は、信号ESIG211、ESIG311、ESIG411の論理和結果を示す信号EXT11を、プロセッサコアCOREA1のカウンタCTRA1に出力する。
また、制御信号生成部CGENは、例えば、各プロセッサコアCOREAの各カウンタCTRAに対応して設けられている。制御信号生成部CGENの符号の末尾の2桁の数字は、左側から、タイミングイネーブル信号TAENの転送先のプロセッサコアCOREAおよびカウンタCTRAをそれぞれ示している。
例えば、制御信号生成部CGEN11・・・CGENA16は、プロセッサコアCOREA1のカウンタCTRA1・・・CTRA6にそれぞれ対応している。制御信号生成部CGEN11は、例えば、通知信号USIG211、USIG311、USIG411を、プロセッサコアCOREA2、COREA3、COREA4のカウント部CNTAからそれぞれ受ける。そして、制御信号生成部CGEN11は、通知信号USIG211、USIG311、USIG411の論理和結果を示すタイミングイネーブル信号TAEN11を、プロセッサコアCOREA1のカウンタCTRA1に出力する。
なお、転送制御部CLTAの構成は、この例に限定されない。例えば、図9に示したセレクタSEL2が省かれたプロセッサPSYSAでは、制御信号生成部CGENは省かれてもよい。
図12は、図11に示した転送信号生成部SGENA11の一例を示している。転送信号生成部SGENA11以外の転送信号生成部SGENAは、転送信号生成部SGENA11と同様である。転送信号生成部SGENA11は、フリップフロップ回路FF4、FF5、FF6、FF7および論理和回路OR4を有している。
フリップフロップ回路FF4、FF5、FF6は、例えば、信号ESIG211、ESIG311、ESIG411をプロセッサコアCOREA2、COREA3、COREA4のカウント部CNTAからそれぞれ受けるとともに、クロックCLKを受ける。例えば、フリップフロップ回路FF4、FF5、FF6は、プロセッサコアCOREA2、COREA3、COREA4のカウント部CNTAからそれぞれ受けた信号ESIG211、ESIG311、ESIG411をクロックCLKに同期して論理和回路OR4にそれぞれ出力する。
論理和回路OR4は、フリップフロップ回路FF4、FF5、FF6から受けた信号の論理和結果をフリップフロップ回路FF7に出力する。フリップフロップ回路FF7は、例えば、クロックCLK、論理和回路OR4の出力信号を受け、信号EXT11を出力する。例えば、フリップフロップ回路FF7は、論理和回路OR4から受けた信号をクロックCLKに同期して出力する。
したがって、転送信号生成部SGENA11は、信号ESIGに対して2個のフリップフロップ回路FF分だけ遅延した信号EXT11を、プロセッサコアCOREA1のカウンタCTRA1に出力する。ここで、信号ESIGは、信号EINFに同期した信号である。したがって、プロセッサコアCOREA1のカウンタCTRA1は、信号EINFに対して2個のフリップフロップ回路FF分だけ遅延した信号EXT11を受ける。
ここで、図9に示した論理和回路OR2がタイミング調整部TADJを介して受ける信号は、信号EINFに対して2個のフリップフロップ回路FF分だけ遅延した信号である。したがって、この実施形態では、図9で説明したように、論理和回路OR1の出力信号をタイミング調整部TADJを介して論理和回路OR2に転送することにより、信号EINF111・・・EINF11nの論理和結果と発生情報EXT11とを同期させることができる。
なお、転送信号生成部SGENAの構成は、この例に限定されない。例えば、転送信号生成部SGENAの入力から出力までの信号経路上のフリップフロップ回路FFの数は、1つでもよいし、3つ以上でもよい。このときには、例えば、図9に示したタイミング調整部TADJの入力から出力までの信号経路上のフリップフロップ回路FFは、転送信号生成部SGENAの入力から出力までの信号経路上のフリップフロップ回路FFの数に合わせた数だけ設けられる。
図13は、図11に示した制御信号生成部CGEN11の一例を示している。制御信号生成部CGEN11以外の制御信号生成部CGENは、制御信号生成部CGEN11と同様である。制御信号生成部CGEN11は、フリップフロップ回路FF8、FF9、FF10、FF11および論理和回路OR5を有している。
フリップフロップ回路FF8、FF9、FF10は、例えば、通知信号USIG211、USI311、USI411をプロセッサコアCOREA2、COREA3、COREA4のカウント部CNTAからそれぞれ受けるとともに、クロックCLKを受ける。例えば、フリップフロップ回路FF8、FF9、FF10は、プロセッサコアCOREA2、COREA3、COREA4のカウント部CNTAからそれぞれ受けた通知信号USIG211、USI311、USI411をクロックCLKに同期して論理和回路OR5にそれぞれ出力する。
論理和回路OR5は、フリップフロップ回路FF8、FF9、FF10から受けた信号の論理和結果をフリップフロップ回路FF11に出力する。フリップフロップ回路FF11は、例えば、クロックCLK、論理和回路OR5の出力信号を受け、タイミングイネーブル信号TAEN11を出力する。例えば、フリップフロップ回路FF11は、論理和回路OR5から受けた信号をクロックCLKに同期して出力する。これにより、通知信号USIG211、USIG311、USIG411の論理和結果を示すタイミングイネーブル信号TAEN11が、プロセッサコアCOREA1のカウンタCTRA1に出力される。
例えば、プロセッサコアCOREA1のカウンタCTRA1が他のプロセッサコアCOREAのイベントの発生回数をカウントする設定では、通知信号USIG211、USIG311、USIG411の少なくとも1つがアサートされる。したがって、プロセッサコアCOREA1のカウンタCTRA1が他のプロセッサコアCOREAのイベントの発生回数をカウントする設定では、制御信号生成部CGEN11は、タイミングイネーブル信号TAEN11をアサートする。タイミングイネーブル信号TAEN11のアサートに応答して、図9に示したプロセッサコアCOREA1のカウンタCTRA1は、信号EINF111・・・EINF11nの論理和結果と発生情報EXT11とを同期させる。
なお、制御信号生成部CGENの構成は、この例に限定されない。例えば、制御信号生成部CGENの入力から出力までの信号経路上のフリップフロップ回路FFの数は、1つでもよいし、3つ以上でもよい。あるいは、フリップフロップ回路FF8、FF9、FF10、FF11は、省かれてもよい。
以上、この実施形態においても、図1−図6で説明した実施形態と同様の効果を得ることができる。例えば、プロセッサPSYSAは、評価対象のプロセッサコアCOREAのイベントの発生回数を、評価対象以外のプロセッサコアCOREAのカウンタCTRAでカウントできる。このため、この実施形態においても、プロセッサPSYSAの性能を詳細に測定できる。なお、この実施形態においても、2つ以上のプロセッサコアCOREAを同時に動作させて、プロセッサPSYSAの性能を評価してもよい。また、シングルコアのプロセッサの性能を評価するために、プロセッサPSYSAが用いられてもよい。このときには、評価対象のシングルコアのプロセッサと同様のプロセッサコアCOREAがプロセッサPSYSに搭載される。
さらに、この実施形態では、各プロセッサコアCOREAは、転送制御部CLTAを介さずにカウンタCTRAに転送される発生情報と、転送制御部CLTAを介してカウンタCTRAに転送される発生情報とを同期させるタイミング調整部TADJを有している。例えば、各プロセッサコアCOREAのタイミング調整部TADJは、選択部DSELからカウンタCTRAに転送制御部CLTAを介さずに転送される発生情報と、他のプロセッサコアCOREAの選択部DSELからカウンタCTRAに転送制御部CLTAを介して転送される発生情報とを同期させる。この結果、この実施形態では、評価対象のプロセッサコアCOREAのイベントの発生情報を評価対象以外のプロセッサコアCOREAのカウンタCTRAにフリップフロップ回路FF等を用いて転送するときにも、イベントの発生回数を誤ってカウントすることを防止できる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。