(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-15
(45)【発行日】2023-12-25
(54)【発明の名称】プロセッサ性能測定装置
(51)【国際特許分類】
G06N 3/0464 20230101AFI20231218BHJP
G06F 11/34 20060101ALI20231218BHJP
【FI】
G06N3/0464
G06F11/34 109
(21)【出願番号】P 2020040547
(22)【出願日】2020-03-10
【審査請求日】2021-12-07
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】317011920
【氏名又は名称】東芝デバイス&ストレージ株式会社
(74)【代理人】
【識別番号】110002907
【氏名又は名称】弁理士法人イトーシン国際特許事務所
(72)【発明者】
【氏名】夏井 裕介
【審査官】石川 亮
(56)【参考文献】
【文献】特開2016-162091(JP,A)
【文献】特開昭61-161551(JP,A)
【文献】特開2019-079505(JP,A)
【文献】特開2012-043096(JP,A)
【文献】進藤 智則,ディープラーニングの推論をCPU上ソフトのみで高速化 GPU使わずとも数十fps実現、モルフォが製品化,NIKKEI Robotics 2018年9月号 ,第38号,2018年08月10日,pp.12~16
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02-3/10
G06F 11/34
G06T 3/00
(57)【特許請求の範囲】
【請求項1】
1つ以上の処理単位および前記処理単位の実行に必要な1つ以上の実行単位によって所定の機能を実現するプロセッサにおいて、
前記実行単位の実行に必要な情報を記憶するレジスタを監視し前記レジスタに記憶されるレジスタ値が更新されることを検出して、前記実行単位の切換りを推定する第1の推定と、前記レジスタ値により示されるCNNのオペレーションの種類に基づいて、実行中の前記実行単位が前記1つ以上の処理単位のうちのいずれの処理単位に対応するかを推定する第2の推定とを行う推定部と、
前記第1の推定の推定結果により前記実行単位における性能を測定する測定部と、
前記測定部の測定結果を前記第2の推定の推定結果に基づいて前記処理単位毎に集計する集計部と、を具備するプロセッサ性能測定装置。
【請求項2】
前記プロセッサは、ニューラルネットワークにより前記所定の機能を達成するものであって、
前記処理単位は、ニューラルネットワークを構成するレイヤであり、
前記実行単位は、前記プロセッサの命令実行である請求項1に記載のプロセッサ性能測定装置。
【請求項3】
前記プロセッサは、前記所定の機能を実現するための命令に基づく命令実行のための情報をレジスタに格納し、
前記推定部は、前記レジスタへの情報の書き込みを検出して、前記第1の推定を行う請求項2に記載のプロセッサ性能測定装置。
【請求項4】
前記プロセッサは、前記所定の機能を実現するための命令に基づく命令実行のための情報をレジスタに格納し、
前記推定部は、前記CNNのオペレーションの種類だけでなく、前記レジスタに書き込まれた入出力アドレスとそのシェープ及びウェイトアドレスとそのシェープの少なくとも1つに基づいて前記第2の推定を行う請求項3に記載のプロセッサ性能測定装置。
【請求項5】
前記推定部は、前記レジスタ値により示される前記CNNのオペレーションの種類に変化があった場合には、更に前記実行単位の実行のためのパラメータの変化の有無に基づいて、前記第2の推定を行う請求項1に記載のプロセッサ性能測定装置。
【請求項6】
前記推定部は、前記レジスタ値により示される前記CNNのオペレーションの種類に変化が
あった場合又は前記実行単位の実行のためのパラメータに変化が
あった場合には、前記実行単位の処理対象となる画像領域が一部重複又は隣接しているか否かに基づいて、前記第2の推定を行う請求項1に記載のプロセッサ性能測定装置。
【請求項7】
前記プロセッサは、グローバルメモリに記憶されているデータをローカルメモリに転送しながら前記所定の機能を実現するものであって、
前記推定部は、前記グローバルメモリのアドレスと前記ローカルメモリのアドレスとのアドレス変換を行った後、前記第2の推定を行う請求項1に記載のプロセッサ性能測定装置。
【請求項8】
アフィン変換を実現するための1つ以上の演算モジュールによってアフィン変換を実現するプロセッサにおいて、
前記1つ以上の演算モジュールの実行にそれぞれ必要なアドレスを記憶するメモリを監視し前記メモリのアクセス先のアドレスが次に実行する前記演算モジュールの実行に必要なアドレスに変化したことを検出して、前記演算モジュールの実行の切換りを推定する第1の推定を行う推定部と、
前記第1の推定の推定結果により前記演算モジュールにおける性能を測定する測定部と、
前記測定部の測定結果を前記演算モジュール毎に集計する集計部と、を具備し、
前記推定部は、前記アクセス先のアドレスとして入出力アドレス及びアフィン変換テーブルアドレスの少なくとも1つに基づいて前記第1の推定を行うプロセッサ性能測定装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、プロセッサ性能測定装置に関する。
【背景技術】
【0002】
従来、ニューラルネットワークによって画像又は音声等の情報から、認識、識別処理等を実現する技術がある。例えば、畳み込みニューラルネットワーク技術では、畳み込みレイヤ及び全結合レイヤ等のレイヤを連続させることによってニューラルネットワークが構成され、各レイヤにおいて、畳み込み演算及び全結合演算等の所定の演算を行うことによって、認識、識別処理等が実現される。
【0003】
ニューラルネットワークによる処理を実現するプロセッサにおいては、例えば、ニューラルネットワークのカーネルサイズ、チャンネル数(パラメータ数)、演算の種類等のネットワーク構造に応じて、レイヤ内での処理時間やバスの幅、レイテンシ等が異なる。従って、各レイヤにおけるネットワーク構造を適宜設計することで、ネットワーク全体での処理時間の短縮化を図ることが可能である。
【0004】
ネットワーク構造の最適化のためにはレイヤ毎の性能を計測する必要がある。しかしながら、レイヤ毎の性能測定は容易ではない。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
実施形態は、プロセッサが実行する処理について所定の処理単位毎の性能を測定することができるプロセッサ性能測定装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
実施形態のプロセッサ性能測定装置は、1つ以上の処理単位および前記処理単位の実行に必要な1つ以上の実行単位によって所定の機能を実現するプロセッサにおいて、前記実行単位の実行に必要な情報を記憶するレジスタを監視し前記レジスタに記憶されるレジスタ値が更新されることを検出して、前記実行単位の切換りを推定する第1の推定と、前記レジスタ値により示されるCNNのオペレーションの種類に基づいて、実行中の前記実行単位が前記1つ以上の処理単位のうちのいずれの処理単位に対応するかを推定する第2の推定とを行う推定部と、前記第1の推定の推定結果により前記実行単位における性能を測定する測定部と、前記測定部の測定結果を前記第2の推定の推定結果に基づいて前記処理単位毎に集計する集計部と、を具備する。
【図面の簡単な説明】
【0008】
【
図1】第1の実施の形態に係るプロセッサ性能測定装置及び測定対象のプロセッサを示すブロック図。
【
図4】
図3の例におけるCNN演算及び性能測定の処理を示す説明図。
【
図9】アフィン変換処理時の性能測定を説明するための説明図。
【発明を実施するための形態】
【0009】
以下、図面を参照して本発明の実施の形態について詳細に説明する。
【0010】
(第1の実施の形態)
図1は第1の実施の形態に係るプロセッサ性能測定装置及び測定対象のプロセッサを示すブロック図である。本実施の形態において性能測定の対象とするプロセッサは、所定の機能を実現するための処理を1つ以上の処理単位で行うものであり、各処理単位の性能に応じた設計を行うことにより、全体として高性能化を図ることができるものである。処理単位は、所定の設定を用いて設計されたモジュールであり、設計が異なるモジュールは異なる処理単位である。
【0011】
例えば、畳み込みニューラルネットワーク(以下、CNNという)を実現するプロセッサについては、畳み込み演算を行うハードウェアモジュールやプーリング演算を行うハードウェアモジュールを有しており、これらのモジュールはそれぞれが1つの処理単位となり得るが、設定が異なれば異なる処理単位となる。例えば、1つの畳み込み演算を行うハードウェアモジュールを用いて複数のレイヤの処理が行われる場合には、各レイヤは設定が異なるので各レイヤがそれぞれ処理単位となる。また、CNNの各レイヤにおいて行われる演算(以下、CNN演算という)をソフトウェアによってプロセッサが実現する場合には、ソフトウェアによって実現されるネットワークはレイヤ毎に設定が異なるので、各レイヤがそれぞれ処理単位となる。
【0012】
プロセッサが実行する処理の種類によっては、所定の処理単位毎のプロセッサ性能の測定が困難である場合がある。例えば、CNNを実現するプロセッサについては、所定の処理単位であるレイヤ毎の性能測定には問題がある。ここで性能とは例えば、処理に要した処理時間などである。
【0013】
プロセッサを構成する演算部は、CPU等により構成された制御部から、CNNの各レイヤにおける一連の演算処理を行うための命令(インストラクション)を取得し、当該命令に従って演算を実行する。演算部が全レイヤの処理に要した処理時間等の性能については制御部において把握可能であるが、制御部はレイヤ毎の性能を把握することはできない。
【0014】
なお、演算部は、各レイヤの演算を複数の命令実行(以下、execという)で行うことがある。execのための実行コード中に、各レイヤの処理開始タイミングを確認するためのコードを埋め込むことで、各レイヤの処理開始等を確認することは可能である。しかしこの場合、本来必要な実行コードとは異なるコードの埋め込みが必要となる。
【0015】
また、CNN等においては、入力画像データサイズとメモリ容量との関係等を考慮して、入力画像を複数に分割して処理を行うタイリングが採用されることがある。このタイリングにより同一レイヤの処理が分散されることがあることから、各レイヤの処理時間を求めるためには実行単位である各execの処理時間を集計する必要がある。しかし、タイリングによって、CNNの各レイヤの実行に必要なexecが増大する。例えば、入力画像データのチャンネル数が3で、縦×横の画素数が、224×224である場合には、CNNを16レイヤで構成すると、execの数は数千に及ぶ。従って、処理時間の集計のために必要なメモリ容量が極めて大きくなり、また、各execを識別するために多数の識別情報を設定する必要がある。
【0016】
ところで、コンピュータの性能を測定する関連技術の装置として、測定条件が指定されるとクロックカウンタにより処理の時間を計測するものがある。この装置の技術を採用してCNNの各レイヤの性能を測定することが考えられる。しかし、この装置の技術を用いても演算部においていずれのexecが実行されるかを判断できない。従って、レイヤ毎の性能を測定することはできない。
【0017】
また、他の関連技術として、プロセッサによる関数の実行時の消費電力を測定する装置もある。この装置では、プロセッサの消費電力を計測する計測関数を所定時間単位に実行すると共に、複数の関数それぞれの識別情報を記憶することで、関数毎の実行に伴うプロセッサの消費電力を測定するようになっている。しかしながら、この提案の技術を採用する場合には、計測のための実行コードの追加と、execを識別するための識別情報の追加が必要となる。
【0018】
また、他の関連技術として、プロセッサの性能低下に及ぼす影響が大きく且つ統計的な信頼度が基準を満たす上位一定数の事象の統計データを記憶する装置も提案されている。しかしながら、この提案の技術を採用したとしても、性能に影響が大きい上位一定数のexecについての情報しか記録されず、レイヤ毎の性能を測定することはできない。
【0019】
このように、CNNを実現するプロセッサにおいて、レイヤ毎の性能を測定するためには、比較的大容量のメモリが必要であったり、本来の実行コードには不要の測定用のコードを追加する必要があったりするという問題がある。
【0020】
そこで、本実施の形態は、プロセッサを構成する演算部における演算の実行単位としてのexecの実行に際して、処理の内容や入出力データのアドレス等の情報を用いることでexecを識別し、当該execに対応する所定の処理単位を判定することで、所定の処理単位毎の性能を測定することを可能にする。
【0021】
図1は、制御対象のプロセッサ20がCNN演算を実行する場合の例を示している。プロセッサ20は、制御部21及び演算処理部22を有する。演算処理部22は、命令設定記憶部23及び演算部24が構成される。制御部21は、CPU(Central Processing Unit)やFPGA(Field Programmable Gate Array)等を用いたプロセッサによって構成されていてもよく、図示しないメモリに記憶されたプログラムに従って動作して各部を制御するものであってもよいし、ハードウェアの電子回路で機能の一部又は全部を実現するものであってもよい。
【0022】
また、演算処理部22については、CNN専用のハードウェアアクセラレータチップ等により構成してもよく、一部をハードウェアで構成したプログラム可能なアクセラレータチップを採用してもよく、また、CPU、FPGA、GPU(Graphic Processing Unit)等を採用して、プログラムによりCNN演算の一部又は全部を実行するものであってもよい。
【0023】
メモリ30は、例えばDRAM等の所定の記録媒体により構成され、特徴マップを記憶する領域31、重み・バイアスを記憶する領域32及びネットワーク設定情報を記憶する領域33を有する。なお、これらの領域31~33は、相互に別の記録媒体に設けられるものであってもよい。
【0024】
領域31には、画像データ(特徴マップ)が記憶される。CNN演算の対象となる入力画像データは、入力特徴マップとして領域31に格納される。また、演算処理部22により処理された画像データについても、出力特徴マップとして領域31に記憶される。領域32に記憶される重み(Weight)及びバイアスは、CNN演算におけるパラメータであり、領域33に記憶されるネットワーク設定情報は、CNNの各レイヤを識別するレイヤIDのリストの情報である。
【0025】
制御部21は、領域31に記憶される入力特徴マップ(入力データ)のアドレス(Input address)及び入力データのシェープ(Input shape)を管理する。また、制御部21は、領域31に記憶される出力特徴マップ(出力データ)のアドレス(Output address)及び出力データのシェープ(Output shape)を管理する。同様に、制御部21は、領域32に記憶される重みのアドレス(Weight address)とそのシェープ(Weight shape)を管理する。メモリ30は、制御部21によって書き込み及び読み出しが制御されるようになっている。
【0026】
制御部21は、プロセッサ20の各部を制御して、CNN演算の実行を制御する。制御部21は、領域31からネットワーク設定情報を読み出し、CNN演算に必要な命令(インストラクション)を生成して命令設定記憶部23に与える。演算部24は、CNNの各レイヤのCNN演算を実行可能に構成されており、命令設定記憶部23から命令を読み出して、各レイヤのCNN演算を実行する。
【0027】
例えば、命令設定記憶部23に記憶される命令は、レジスタ25のアドレスと値により構成することができる。演算部24は、命令設定記憶部23からの命令を読み出し、当該命令により指定されたレジスタ25のアドレスに命令に対応した情報をセットする。
【0028】
例えば、演算部24は、1命令毎に、制御部21からの情報を用いて、オペレーションの種類、Input address、Input shape、Weight address Weight shape、Output address、Output shape等の情報をレジスタ25にセットする。なお、オペレーションの種類は、CNN演算が畳み込みレイヤの畳み込み演算であるかプーリング層のプーリング演算であるか等の演算の種類を示す情報である。
【0029】
演算部24は、命令に従ってレジスタ25に実行をセットすることにより、セットした内容に従ってexecを行い、処理が終了すると、命令設定記憶部23から次の命令を読み出して同様の処理を繰り返す。こうして、各レイヤの一連のCNN演算が行われる。
【0030】
プロセッサ性能測定装置10は、プロセッサ性能測定装置10の各部を制御する制御部11を有している。制御部11は、CPUやFPGA等を用いたプロセッサによって構成されていてもよく、図示しないメモリに記憶されたプログラムに従って動作して各部を制御するものであってもよいし、ハードウェアの電子回路で機能の一部又は全部を実現するものであってもよい。また、プロセッサ性能測定装置10内のレイヤ情報推定部12、性能測定部13及び性能情報集計・記録部14についても、CPU等を具備して図示しないメモリに記憶されたプログラムに従って動作して各部を制御するものであってもよいし、ハードウェアの電子回路で機能の一部又は全部を実現するものであってもよい。
【0031】
本実施の形態においては、プロセッサ20の性能を測定するために、プロセッサ性能測定装置10は、レイヤ情報推定部12を備える。レイヤ情報推定部12は、CNN演算の実行開始時において、メモリ30から制御部21に読み出されるネットワーク設定情報を取得する。また、レイヤ情報推定部12は、CNN演算の実行時においてレジスタ25を監視し、レジスタ25に記憶されているレジスタの値を取得する。レイヤ情報推定部12は、取得したネットワーク設定情報及びレジスタ値を記憶する図示しないメモリを有している。
【0032】
レイヤ情報推定部12は、取得した情報に基づいて、現在演算部24において実行されているexecがいずれのレイヤのCNN演算に対応するかを推定して、当該レイヤを示すレイヤIDの情報を対応するexecに関連付けて記録すると共に出力する。
【0033】
例えば、レイヤ情報推定部12は、オペレーションの種類が切換ることによって、実行されたexecに対応するレイヤが前回実行されたexecに対応するレイヤから変化したと判定してもよい。しかし、CNN演算では、畳み込み演算が繰り返し実行されることがあり、前後するexecにおいて取得したオペレーションの種類が変化しない場合でも、前後のexecに対応するレイヤは変化していることもある。また、例えば、タイリングが採用された場合には、同一種類のオペレーションが行われる同一レイヤの演算であって、異なるexecにて処理されることがある。
【0034】
そこで、レイヤ情報推定部12は、オペレーションの種類だけでなく、画像データを記憶する領域31のメモリアクセス範囲、重みとバイアスを記憶する領域32のメモリアクセス範囲によって、実行されたexecに対応するレイヤを推定してもよい。
【0035】
例えば、同一レイヤのCNN演算のためのexecでは、共通の重みとバイアスが採用されると考えることができる。レイヤ情報推定部12は、Weight address及びWeight shapeによって、各execに用いられた重みとバイアスを判定することで、2つの異なるexecにそれぞれ対応する2つレイヤが相互に同一のレイヤであるか否かを判定してもよい。
【0036】
レイヤ情報推定部12は、読み出す画像の領域(以下、input領域という)についてはInput address及びInput shapeによって判定し、書き込む画像の領域(以下、output領域という)についてはOutput address及びOutput shapeによって判定してもよい。
【0037】
例えば、レイヤ情報推定部12は、オペレーションの種類が変化しておらずで且つCNN演算に用いられる重みとバイアス(以下、演算パラメータともいう)も変化していないと判定した場合には、実行中のexecに対応するレイヤは前回実行されたexecに対応するレイヤから変化していないと判定してもよい。
【0038】
また、例えば、レイヤ情報推定部12は、前後のexecについて、オペレーションの種類に変化があるか又は演算パラメータに変化があると判定した場合には、後のexecについての演算パラメータと同一でinput領域及びoutput領域(以下、これらを特徴マップ領域ともいう)が一部重複又は隣接したexecが存在する場合には、後execは、当該検出したexecに対応するレイヤと同一のレイヤに対応するものと判定してもよい。なお、特徴マップ領域の特徴マップが画像として認識できる場合には、特徴マップ領域を単に画像領域ともいう。
【0039】
レイヤ情報推定部12は、推定して得たレイヤIDを、当該レイヤに対応するexecの開始タイミングの情報を付して、あるいは、当該execの開始タイミングで性能測定部13に出力する。即ち、レイヤ情報推定部12は、execが実行開始されるタイミングが性能測定部13において把握可能なように、当該execに対応するレイヤIDを性能測定部13に出力する。
【0040】
性能測定部13は、プロセッサ20の性能を測定する。例えば、性能測定部13の測定対象の性能としては、処理時間、消費電力、必要なバス帯域等が考えられる。例えば、性能測定部13は、プロセッサ20の処理時間の性能を測定する場合には、レイヤ情報推定部12の出力から、プロセッサ20において実行中のexecの実行期間を図示しないタイマにより計測する。また、性能測定部13は、プロセッサ20の消費電力の性能を測定する場合には、レイヤ情報推定部12の出力から、プロセッサ20において実行中のexecの実行期間中の消費電力を図示しない電力測定器により計測する。また、性能測定部13は、演算部24が必要とするバス幅についての性能を測定する場合には、レイヤ情報推定部12の出力から、プロセッサ20において実行中のexecの実行期間中に使用されるバス帯域幅を制御部21等の情報を基に計測する。性能測定部13は、計測結果をレイヤIDの情報と共に性能情報集計・記録部14に出力する。
【0041】
性能情報集計・記録部14は、性能測定部13からレイヤID毎の計測結果が与えられ、レイヤ毎に計測結果を集計するようになっている。性能情報集計・記録部14は、図示しない記録媒体を備えており、集計結果を記録媒体に記録するようになっている。
【0042】
次に、このように構成された実施の形態の動作について
図2から
図5を参照して説明する。
図2はレイヤ推定処理を示すフローチャートである。
図3はタイリングを説明するための説明図である。
図4は
図3の例におけるCNN演算及び性能測定の処理を示す説明図である。
図5はCNN演算の他の処理の例を示す説明図である。
【0043】
性能測定対象であるプロセッサ20の制御部21は、CNN演算の開始時にメモリ30からネットワーク設定情報を読み出す。プロセッサ性能測定装置10のレイヤ情報推定部12は、
図2のステップS1において、CNN演算の開始時にネットワーク設定情報を収集する。なお、ネットワーク設定情報にはレイヤIDのリストの情報が含まれる。制御部21は、ネットワーク設定情報に従って、CNN演算に必要な命令(インストラクション)を生成して命令設定記憶部23に与える。
【0044】
いま、CNN演算においてタイリングが採用されるものとする。
図3の例では、入力画像Piを4分割し、分割された各入力画像Pi0,Pi1,Pi2,Pi3に対して、各レイヤでのCNN演算が行われるようになっている。なお、各入力画像Pi0~Pi3は、畳み込み演算に必要な画像データを確保するために画像サイズが異なっている。
図3の例は、2つのレイヤL1,L2における処理を、各画像について連続的に行うことを示している。
【0045】
即ち、
図3の例では、画像Pi0に対するレイヤL1での演算L1-0の演算結果に対して、レイヤL2での演算L2-0の演算を行い、レイヤL2の演算結果である出力Po0を得るようになっている。次に、画像Pi1について、レイヤL1,L2でそれぞれ演算L1-1,L2-1を行い演算結果Po1を得る。次に、画像Pi2について、レイヤL1,L2でそれぞれ演算L1-2,L2-2を行い演算結果Po2を得る。最後に、画像Pi3について、レイヤL1,L2でそれぞれ演算L1-3,L2-3を行い演算結果Po3を得る。これらの演算結果Po0~Po3によって、演算結果Poを得るようになっている。
【0046】
制御部21は、ネットワーク設定情報に基づいて、このようなCNN演算を可能にする命令を生成して命令設定記憶部23に与える。演算部24は、命令設定記憶部23から命令を読み出して、レジスタ25に、各レイヤのCNN演算を実行するための命令に対応した情報をセットする。なお、レジスタ25には、オペレーションの種類、Input address、Input shape、Weight address Weight shape、Output address、Output shape等の情報がセットされる。演算部24は、レジスタ25に実行がセットされると、レジスタ25にセットした値を参照しながらCNN演算を実行する。
【0047】
図4はこのような処理を示しており、制御部21は、ネットワーク設定情報に基づいて、入力画像に対してレイヤL1の処理及びレイヤL2の処理を加えて出力画像を得る一連のCNN演算についての命令を作成する。この命令に応じた情報がレジスタ25に格納され、演算部24はレジスタ25の情報に応じて順次execを実行する。なお、
図4ではexceは実行順に、実行順を示す括弧付きの数字を付して示している。
図4は
図3の例に対応しており、exec(1),exec(2),…は、それぞれレイヤL1,L2,L1,L2,…に対応する。
【0048】
演算部24は、最初のexec(1)において、
図3の画像Pi0の画像データを読み出して、演算L1-0を行う。プロセッサ性能測定装置10のレイヤ情報推定部12は、プロセッサ20のレジスタ25を監視しており、レジスタ25に情報がセットされると、レジスタ25からオペレーションの種類、Input address、Input shape、Weight address Weight shape、Output address、Output shape等の情報を読み出す(ステップS2)。レイヤ情報推定部12は、ステップS3においてレジスタ値が更新されているか否かを判定しており、レジスタ25が新しい情報が記憶される毎にステップS4以下の処理を行う。なお、
図2では図示を省略したが、最初のexec(1)の実行時には、ステップS3から処理をステップS7に移行して、レイヤ情報推定部12は、レイヤIDのリストの情報により、推定結果として最初のレイヤL1のレイヤIDを記憶すると共に、exec(1)に対応するレジスタ値を記憶する。
【0049】
レイヤ情報推定部12は、推定結果のレイヤIDを性能測定部13に出力する(ステップS8)。性能測定部13は、現在のexecが実行されている期間における性能を測定する。例えば、処理時間の性能を測定する場合には、性能測定部13は、タイマの出力を用いて、現在のexecの実行時間を測定する。なお、性能測定部13は、1つの性能に限らず、複数種類の性能について、各execが実行されている期間における性能を測定してもよい。レイヤ情報推定部12は、各execについての測定終了後に測定結果をレイヤIDの情報と共に性能情報集計・記録部14に出力する。
【0050】
演算部24は、最初の演算L1-0に対応するexec(1)の実行が終了すると、命令設定記憶部23から次の命令を読み出して、命令に対応した情報をレジスタ25にセットする。演算部24は、レジスタ25に実行がセットされると、レジスタ25にセットした値を参照しながらCNN演算を実行する。即ち、演算部24は、2番目のexec(2)において、レイヤL1の演算結果に対してレイヤL2の演算L2-0を行う。
【0051】
プロセッサ性能測定装置10のレイヤ情報推定部12は、ステップS2においてレジスタ値を読み出し、ステップS3から処理をステップS4に移行する。レイヤ情報推定部12は、ステップS4においてオペレーションの種類の情報に基づいてオペレーションの種類に変化があったか否かを判定し、ステップS5においてWeight address及びWeight shapeの情報に基づいて演算パラメータに変化があったか否かを判定する。
【0052】
この場合には、exec(2)はレイヤL2の演算であり、少なくともWeight address及びWeight shapeの情報は変化しており、レイヤ情報推定部12は、ステップS5において演算パラメータに変化があったものと判定して処理をステップS10に移行する。なお、この場合には、ステップS4において、オペレーションの種類が変化していることもあり、いずれの場合でも、ステップS10の処理が行われる。
【0053】
レイヤ情報推定部12は、ステップS10において、前回まで行われたexecについて、演算パラメータが同一で、且つ、一部重複又は隣接した特徴マップ領域(画像領域)に対するexecが存在したか否かを判定する。この場合には、前回のexec(1)の場合から演算パラメータが変化しているので、レイヤ情報推定部12は、処理をステップS12に移行して、exec(2)は新しいレイヤに対応するものであると判定する。レイヤ情報推定部12は、レイヤIDのリストから、exec(2)に対応するレイヤはレイヤL2であるものと推定して、推定結果のレイヤID及びexec(2)についてのレジスタ値を記憶する。
【0054】
レイヤ情報推定部12は、推定結果のレイヤIDを性能測定部13に出力する(ステップS8)。性能測定部13は、レイヤ情報推定部12の出力によって、前回のexecについての測定から現在のexecについての測定に切換え、前回のexecについての測定結果をレイヤIDと共に性能情報集計・記録部14に出力する。性能情報集計・記録部14は、レイヤID毎に性能測定部13の測定結果を集計して、レイヤ毎の性能の測定結果を記録媒体に記録する。
【0055】
以後、性能測定部13及び性能情報集計・記録部14については同様に動作し、実行されるexecが切換る毎に、実行されている期間における性能が測定され、レイヤ毎に性能が集計されて記録される。
【0056】
演算部24は、演算L2-0に対応するexec(2)の実行が終了すると、命令設定記憶部23から次の命令を読み出して、命令に対応した情報をレジスタ25にセットする。演算部24は、レジスタ25に実行がセットされると、レジスタ25にセットした値を参照しながらCNN演算を実行する。即ち、演算部24は、3番目のexec(3)において、入力画像Pi1に対してレイヤL1の演算L1-1を行う。
【0057】
プロセッサ性能測定装置10のレイヤ情報推定部12は、ステップS2においてレジスタ値を読み出し、ステップS4,S5において、オペレーションの種類に変化があったか否か、演算パラメータに変化があったか否かを判定する。この場合には、exec(3)はレイヤL1の演算であり、前回のexec(2)の実行時から少なくともWeight address及びWeight shapeの情報は変化しており、レイヤ情報推定部12は、ステップS5において演算パラメータに変化があったものと判定して処理をステップS10に移行する。
【0058】
レイヤ情報推定部12は、ステップS10において、前回まで行われたexecについて、演算パラメータが同一で、且つ、一部重複又は隣接した画像領域に対するexecが存在したか否かを判定する。この場合には、演算パラメータはexec(1)と同じであり、また、画像Pi1は、画像Pi0と画像領域が一部重複又は隣接しているので、レイヤ情報推定部12は、ステップS7において、記憶された情報を照合してexec(1)を検出する。レイヤ情報推定部12は、ステップS11において、exec(3)に対応するレイヤは、exec(1)に対応するレイヤと同じレイヤであるものと推定する。レイヤ情報推定部12は、推定結果のレイヤID及びexec(3)についてのレジスタ値を記憶すると共にレイヤIDを性能測定部13に出力する。
【0059】
演算部24は、演算L1-1に対応するexec(3)の実行が終了すると、命令設定記憶部23から次の命令を読み出して、命令に対応した情報をレジスタ25にセットする。演算部24は、レジスタ25に実行がセットされると、4番目のexec(4)において、レイヤL1の演算結果に対してレイヤL2の演算L2-1を行う。
【0060】
プロセッサ性能測定装置10のレイヤ情報推定部12は、ステップS2においてレジスタ値を読み出し、ステップS4,S5において、オペレーションの種類に変化があったか否か、演算パラメータに変化があったか否かを判定する。この場合には、レイヤ情報推定部12は、ステップS5において演算パラメータに変化があったものと判定して処理をステップS10に移行する。レイヤ情報推定部12は、ステップS10において、前回まで行われたexecについて、演算パラメータが同一で、且つ、一部重複又は隣接した画像領域に対するexecが存在したか否かを判定する。この場合には、演算パラメータはexec(2)と同じであり、また、画像Po1は、画像Po0と画像領域が一部重複又は隣接しているので、レイヤ情報推定部12は、ステップS7において記憶された情報により、exec(2)を検出する。レイヤ情報推定部12は、ステップS11において、exec(4)に対応するレイヤは、exec(2)に対応するレイヤと同じレイヤであるものと推定する。レイヤ情報推定部12は、推定結果のレイヤID及びexec(4)についてのレジスタ値を記憶すると共にレイヤIDを性能測定部13に出力する。
【0061】
以後、同様の動作が行われ、レイヤ情報推定部12において、順次実行される各execに対応するレイヤが推定され、性能測定部13において、各execの性能が測定され、性能情報集計・記録部14において、レイヤID毎の性能の測定結果が集計されて記録される。こうして、全てのexecの終了時点において、性能情報集計・記録部14には、レイヤ毎の性能の集計結果が記録される。
【0062】
次に、
図5を参照してCNN演算の他の例について説明する。
図5はレイヤL1,L2,L3が全て畳み込み演算(CONV)である場合の例であり、各レイヤの演算は畳み込み演算に対応するexecにより実行される。
図5の例では、レイヤL1の畳み込み演算は、演算CONV(1-0)と演算CONV(1-1)とに分けてそれぞれexec(1),exec(2)で実行される。また、レイヤL2の畳み込み演算は、演算CONV(2-0)と演算CONV(2-1)とに分けてそれぞれexec(3),exec(5)で実行され、レイヤL3の畳み込み演算は、演算CONV(3-0)と演算CONV(3-1)とに分けてそれぞれexec(4),exec(6)で実行される。また、レイヤL2,L3の演算の順序は、演算CONV(2-0)、演算CONV(3-0)、演算CONV(2-1)、演算CONV(3-1)の順である。
【0063】
図5の例においても、上記説明と同様に、レイヤIDの推定処理、各execの性能測定、レイヤID毎の性能の測定結果の集計・記録処理が行われので、レイヤIDの推定処理についてのみ説明する。レイヤIDの推定処理は
図2のフローに従う。
【0064】
最初のexec(1)の実行により、レイヤ情報推定部12は、レイヤIDのリストから、exec(1)に対応するレイヤはレイヤL1と判定する。次のexec(2)では、レイヤ情報推定部12は、オペレーションの種類に変化はなく、演算パラメータにも変化がないものと判定して(ステップS4,S5)、ステップS6において、exec(2)に対応するレイヤは、レイヤL1であると推定する。
【0065】
次に、演算部24は3番目のexec(3)において、演算CONV(2-0)を実行する。レイヤ情報推定部12は、オペレーションの種類に変化はないが、演算パラメータが変化しているものと判定して(ステップS5)、処理をステップS10の判定の後ステップS12に移行する。レイヤ情報推定部12は、ステップS12において、exec(3)に対応するレイヤは、レイヤL2であると推定する。
【0066】
次に、演算部24はexec(4)において、演算CONV(3-0)を実行する。レイヤ情報推定部12は、オペレーションの種類に変化はないが、演算パラメータが変化しているものと判定して(ステップS5)、処理をステップS10の判定の後ステップS12に移行する。レイヤ情報推定部12は、ステップS12において、exec(4)に対応するレイヤは、レイヤL3であると推定する。
【0067】
次に、演算部24はexec(5)において、演算CONV(2-1)を実行する。レイヤ情報推定部12は、オペレーションの種類に変化はないが、演算パラメータが変化しているものと判定して(ステップS5)、処理をステップS10に移行する。レイヤ情報推定部12は、ステップS10において、前回まで行われたexecについて、演算パラメータが同一で、且つ、一部重複又は隣接した画像領域に対するexecが存在したか否かを判定する。この場合には、演算パラメータはexec(3)と同じであり、また、exec(5)における入力画像又は出力画像の画像領域はexec(3)における入力画像又は出力画像の画像領域と一部重複又は隣接しているので、レイヤ情報推定部12は、記憶された情報により、exec(3)を検出する。レイヤ情報推定部12は、ステップS11において、exec(5)に対応するレイヤは、exec(3)に対応するレイヤと同じレイヤL2であるものと推定する。
【0068】
次に、演算部24はexec(6)において、演算CONV(3-1)を実行する。レイヤ情報推定部12は、オペレーションの種類に変化はないが、演算パラメータが変化しているものと判定して(ステップS5)、処理をステップS10に移行する。レイヤ情報推定部12は、ステップS10において、前回まで行われたexecについて、演算パラメータが同一で、且つ、一部重複又は隣接した画像領域に対するexecが存在したか否かを判定する。この場合には、演算パラメータはexec(4)と同じであり、また、exec(6)における入力画像又は出力画像の画像領域はexec(4)における入力画像又は出力画像の画像領域と一部重複又は隣接しているので、レイヤ情報推定部12は、記憶された情報により、exec(4)を検出する。レイヤ情報推定部12は、ステップS11において、exec(6)に対応するレイヤは、exec(4)に対応するレイヤと同じレイヤL3であるものと推定する。
【0069】
他の作用は、上記説明と同様である。
【0070】
このように本実施の形態においては、プロセッサを構成する演算部の命令実行に際して、処理の内容や入出力データのアドレス等の情報を用いることで実行単位である命令実行を識別し、当該命令実行に対応する所定の処理単位を判定することで、所定の処理単位毎の性能を測定することを可能にする。例えば、本実施の形態をCNN演算を行うプロセッサに適用した場合には、CNN演算の命令に用いられるオペレーションの種類、Input address、Input shape、Weight address Weight shape、Output address、Output shape等の情報を取得することで、各命令実行がいずれのレイヤに対応したものかを判定することができ、レイヤ毎の性能を測定することが可能となる。レイヤ毎の性能の測定のために、命令実行毎に測定用のコードを埋め込む必要は無く、また、命令実行を識別する識別情報を付加する必要もなく、さらに、性能測定した値は命令実行単位ではなくレイヤ毎に記録すればよいので、必要なメモリ容量を増大させることなくレイヤ毎の性能の測定が可能である。
【0071】
(第2の実施の形態)
図6は第2の実施の形態を示すブロック図である。
図6において
図1と同一の構成要素には同一符号を付して説明を省略する。
【0072】
本実施の形態は、プロセッサ20において、ローカルメモリ26を有する演算部24を採用すると共に、プロセッサ性能測定装置10のレイヤ情報推定部12において、アドレス指定部15を備えた点が第1の実施の形態と異なる。
【0073】
プロセッサ20の制御部21は、CNN演算に際して、メモリ(以下、グローバルメモリともいう)30に格納されているデータの一部を、演算部24のローカルメモリ26に転送して記憶させながら、演算部24にCNN演算を実行させるように命令(インストラクション)を発生する。演算部24は、命令設定記憶部23に記憶された命令に基づいてレジスタ25に情報をセットする。レジスタ25にセットされる情報としては、ローカルメモリ26からデータをロードして格納するためのLOAD及びSTORE命令及びそのアドレス及びシェープの情報が含まれる。例えば、レジスタ25には、グローバルメモリ30のアドレス(global address)とローカルメモリ26のアドレス(local address)とが含まれる。
【0074】
演算部24は、レジスタ25にLOAD及びSTOREがセットされると、グローバルメモリ30にglobal addressを指定してデータを読み出し、ローカルメモリ26にloacal addressを指定してデータを格納するようになっている。以後、演算部24は、ローカルメモリ26に記憶されたデータを用いて、CNN演算を実行する。
【0075】
レイヤ情報推定部12は、レジスタ25に記憶されたレジスタ値を読み出して、現在実行中のexecに対応するレイヤを推定する。この場合には、レイヤ情報推定部12は、レジスタ25からglobal address及びlocal addressの両方を読み出すようになっている。レイヤ情報推定部12のアドレス指定部15は、レイヤIDの推定のために、演算部24が処理に用いたlocal addressをglobal addressに変換する。レイヤ情報推定部12は、第1の実施の形態と同様に、global addressを用いて、レイヤの推定を行う。
【0076】
次に、このように構成された実施の形態の動作について
図7の説明図を参照して説明する。
図7は
図5と同様のCNN演算の例を示している。
【0077】
本実施の形態においても、性能測定部13の性能測定及び性能情報集計・記録部14の集計・記録は、第1の実施の形態と同様である。本実施の形態においては、レイヤ情報推定部12におけるレイヤ推定に際して、演算部24がCNN演算に用いたlocal addressに代えてglobal addressを用いて推定を行う点が第1の実施の形態と異なるのみであり、この点を除き、
図2と同様のフローが採用される。
【0078】
レイヤ情報推定部12は、
図2のステップS2において、レジスタ値を読み込んで図示しないメモリに記憶させる。この場合には、LOADコマンドによって読み込まれたglobal address及びlocal addressについても読み込まれる。アドレス指定部15は、global address及びlocal addressを用いて、local addressをglobal addressに変換する。レイヤ情報推定部12は、
図2のステップS4,S5,S10の判定に際して、global addressを用いる。
【0079】
exec(1)の実行時には、レイヤ情報推定部12は、exec(1)に対応するレイヤは、レイヤL1であると推定する。
【0080】
exec(2)の実行時には、レイヤ情報推定部12は、オペレーションの種類が変化しておらず、Weight addressのglobal addressも変化がなく演算パラメータは変化していないことから、exec(2)はexec(1)の実行時と同じレイヤに対応すると判定する。更に、この場合には、input領域又はoutput領域のglobal addressもexec(1)の実行時と一部重複しているか又は隣接している。従って、レイヤ情報推定部12は、ステップS6において、exec(2)に対応するレイヤは、exec(1)に対応するレイヤと同一のレイヤL1であると推定する。
【0081】
exec(3)の実行時には、Weight addressのglobal addressが変化しており演算パラメータは変化していると判定する。この場合には、レイヤ情報推定部12は、exec(3)に用いた演算パラメータと同一で、input領域又はoutput領域のglobal addressにより、特徴マップ領域(画像領域)が一部重複又は隣接したexecが存在しないことを判定する。この結果、レイヤ情報推定部12は、新たなレイヤL3がexec(3)に対応するレイヤであると推定する。
【0082】
exec(4)の実行時には、レイヤ情報推定部12は、global addressを用いて演算パラメータが変化していると判定する。この場合にも、global addressの比較により、exec(4)に用いた演算パラメータと同一で、画像領域が一部重複又は隣接したexecが存在しないことを判定する。この結果、レイヤ情報推定部12は、新たなレイヤL4がexec(4)に対応するレイヤであると推定する。
【0083】
exec(5)の実行時には、global addressの変化により、演算パラメータは変化していると判定する。この場合には、global addressの比較により、exec(4)に用いた演算パラメータと同一で、画像領域が一部重複又は隣接したexecは、exec(3)であることを検出する。この結果、レイヤ情報推定部12は、exec(4)に対応するレイヤはexec(3)に対応するレイヤL2であると推定する。
【0084】
また、exec(6)の実行時には、global addressの変化により、演算パラメータは変化していると判定する。この場合には、global addressの比較により、exec(5)に用いた演算パラメータと同一で、画像領域が一部重複又は隣接したexecは、exec(4)であることを検出する。この結果、レイヤ情報推定部12は、exec(6)に対応するレイヤはexec(4)に対応するレイヤL3であると推定する。
【0085】
こうして、
図7に示す各execに対応するレイヤを推定することができる。各execについて、性能を測定し、測定したexecの性能をレイヤID毎に集計して記録する点は、第1の実施の形態と同様である。
【0086】
このように本実施の形態においても、第1の実施の形態と同様の効果を得ることができる。本実施の形態においては、プロセッサにおける演算において、ローカルメモリのアドレスを用いた場合でも、ローカルアドレスをグローバルアドレスに変換することで、各execがいずれのレイヤに対応するかを把握することが可能となる。
【0087】
(第3の実施の形態)
図8は第3の実施の形態を示すブロック図である。
図8において
図1と同一の構成要素には同一符号を付して説明を省略する。本実施の形態はCNN演算以外の演算を行う機能を有するプロセッサの性能測定に適用したものである。
図8の例は所定の機能としてアフィン(Affine)変換を行うプロセッサに適用した例を示している。
【0088】
制御対象であるプロセッサ50は、アフィン変換演算部52を備える。アフィン変換演算部52は、アフィン変換専用のハードウェアアクセラレータチップ等により構成してもよく、一部をハードウェアで構成したプログラム可能なアクセラレータチップを採用してもよく、また、CPU、FPGA、GPU(Graphic Processing Unit)等を採用して、プログラムによりアフィン変換演算の一部又は全部を実行するものであってもよい。
【0089】
メモリ60は、例えばDRAM等の所定の記録媒体により構成され、画像データを記憶する領域61、アフィン変換の設定情報を記憶する領域62を有する。領域62には、アフィン変換を指定する変換テーブルも格納される。なお、これらの領域61,62は、相互に別の記録媒体に設けられるものであってもよい。
【0090】
制御部21は、領域61に記憶される画像データのアドレス、即ち、アフィン変換演算部52が読み込む入力画像データの入力アドレス(Input address)及びアフィン変換演算部52が出力する出力画像データの出力アドレス(Output address)を管理する。同様に、制御部21は、領域61に記憶される変換テーブルのアドレス(Table address)を管理する。メモリ60は、制御部21によって書き込み及び読み出しが制御されるようになっている。
【0091】
制御部21は、領域62から読み出した設定情報に基づいて、アフィン変換のための命令(インストラクション)を発生する。この命令は、アフィン変換の処理内容、Input address、Output address及びTable addressを含む。制御部21は、発生した命令をアフィン変換演算部52の出力画像座標計算モジュール53に出力する。
【0092】
アフィン変換演算部52は、出力画像座標計算モジュール53、入力画像座標計算モジュール54、画像値補間演算モジュール55及びメモリバスI/F56を有している。出力画像座標計算モジュール53は、制御部21からの命令に従って、出力画像の所定範囲の座標を計算して計算結果を入力画像座標計算モジュール54に出力する。
【0093】
入力画像座標計算モジュール54には、制御部21からTable addressが与えられており、このTable addressをメモリバスI/F56に与えてメモリ60にアクセスし、変換テーブルを読み出す。入力画像座標計算モジュール54は、変換テーブルを参照することで、出力画像座標に対応する入力画像座標を計算して画像値補間演算モジュール55に出力する。
【0094】
画像値補間演算モジュール55には、制御部21からInput address及びOutput addressが与えられる。画像値補間演算モジュール55は、Input addressをメモリバスI/F56に与えてメモリ60にアクセスし、画像データを読み出す。画像値補間演算モジュール55は、入力画像座標計算モジュール54からの入力画像座標を基に入力画像をアフィン変換する。変換後の画像の画素位置は、一般に整数画素位置とはならない。入力画像座標計算モジュール54は、変換後の画像について、整数画素位置の画素値を用いて線形補間を行い、変換画像データを得る。なお、画像値補間演算モジュール55は、線形補間以外にもLanczos, Spline補間などを採用してもよい。画像値補間演算モジュール55は、Output addressをメモリバスI/F56に与えてメモリ60にアクセスし、変換画像データを出力画像データとしてメモリ60の領域61に書き込む。
【0095】
図8の例では、アフィン変換を指示する制御部21からの命令に対して、出力画像座標計算モジュール53によるオペレーション、入力画像座標計算モジュール54によるオペレーション、画像値補間演算モジュール55によるオペレーションの少なくとも3つのオペレーションに分割されて処理が実行される。しかしながら、制御部21においても、アフィン変換全体の性能の測定は可能であるが、個々のオペレーションの性能を求めることはできない。
【0096】
そこで、本実施の形態においては、所定の処理単位としてオペレーションを想定し、プロセッサ性能測定装置40は、上記各実施の形態と同様の手法によって、個々のオペレーションの性能を測定する。
【0097】
プロセッサ性能測定装置40は、レイヤ情報推定部12に代えてオペレーション情報推定部42を採用した点が
図1のプロセッサ性能測定装置10と異なる。オペレーション情報推定部42は、アフィン変換の開始時において、制御部21からの命令に含まれる処理内容、Input address、Output address及びTable addressの情報を取得して、図示しないメモリに格納する。また、オペレーション情報推定部42は、メモリバスI/F56からメモリ60へのメモリアクセス時に指定されるアドレスの情報を取得する。
【0098】
オペレーション情報推定部42は、記憶されている処理内容、Input address、Output address及びTable addressの情報と、アフィン演算時に、メモリバスI/F56から発生するアドレスの情報とに基づいて、現在のオペレーションを推定する。オペレーション情報推定部42は、推定結果を推定に用いた情報と関連付けて記憶すると共に、推定結果をオペレーションに付したID(以下、オペレーションIDという)と共に性能測定部13に出力する。この場合には、上記各実施の形態と同様に、オペレーション情報推定部42は、各オペレーションの実行期間を把握可能なように、推定結果を出力する。
【0099】
性能測定部13は、オペレーションの実行期間における性能を測定し、測定結果をオペレーションIDと共に性能情報集計・記録部14に出力する。性能情報集計・記録部14は、性能測定部13からの測定結果をオペレーション毎に集計して記録する。
【0100】
次に、このように構成された実施の形態について
図9を参照して説明する。
図9はアフィン変換処理時の性能測定を説明するための説明図である。
【0101】
プロセッサ50の制御部21は、メモリ60からアフィン変換に関する設定情報を読み出して命令を発生する。制御部21は発生した命令をアフィン変換演算部52に与える。プロセッサ性能測定装置40のオペレーション情報推定部42は、制御部21が発生した命令に含まれる処理内容、Input address、Output address及びTable addressの情報を取得してメモリに格納する。以後、アフィン変換演算部52は、命令に従って、アフィン変換処理を実行する。
【0102】
図9はこのような処理を示しており、制御部21からの命令に従って、アフィン変換演算部52は、順次オペレーション(op(1),op(2),op(3))を実行する。オペレーション情報推定部42は、命令中に含まれる情報を取得すると共に、アフィン変換演算部52によるメモリアクセスのアドレスを取得して、各オペレーションの性能を測定する。
【0103】
即ち、オペレーション情報推定部42は、命令がアフィン変換演算部52に供給されることによって、アフィン変換演算部52において、最初のオペレーション(以下、op(1)という)が開始されたものと判定して、op(1)のオペレーションIDを性能測定部13に出力する。これにより、性能測定部13は、op(1)についての性能の測定を開始する。
【0104】
出力画像座標計算モジュール53は、制御部21からの命令を受信すると、出力画像座標を計算し、計算結果を入力画像座標計算モジュール54に出力する。入力画像座標計算モジュール54は、メモリバスI/F56にTable addressを指定してメモリ60にアクセスする。メモリバスI/F56は、メモリ60のTable addressにより指定されたアドレスから変換テーブルを読み出して入力画像座標計算モジュール54に与える。
【0105】
オペレーション情報推定部42は、メモリバスI/F56のアクセスを監視しており、メモリバスI/F56がメモリ60にアクセスしたときのアドレスTable addressを取得する。オペレーション情報推定部42は、メモリに記憶したアドレスとの比較によって、現在入力画像座標計算モジュール54による2番目のオペレーション(op(2))が開始されたものと判定して、当該オペレーションを示すオペレーションIDを性能測定部13に出力する。これにより、性能測定部13は、op(1)の性能測定からop(2)の性能測定に切換える。性能測定部13は、op(1)についての性能の測定結果をオペレーションIDと共に性能情報集計・記録部14に出力する。性能情報集計・記録部14は、オペレーションID毎に性能の測定結果を集計する。
【0106】
入力画像座標計算モジュール54は、変換テーブルを用いて出力画像座標を入力画像座標に変換し、変換結果の入力画像座標を画像値補間演算モジュール55に出力する。画像値補間演算モジュール55は、入力画像座標が与えられると、メモリバスI/F56にInput addressを指定してメモリ60にアクセスする。メモリバスI/F56は、メモリ60のInput addressにより指定されたアドレスから画像データを読み出して画像値補間演算モジュール55に与える。
【0107】
オペレーション情報推定部42は、メモリバスI/F56がアクセスしたときのアドレスInput addressを取得する。オペレーション情報推定部42は、メモリに記憶したアドレスとの比較によって、現在画像値補間演算モジュール55による3番目のオペレーション(op(3))が開始されたものと判定して、当該オペレーションを示すオペレーションIDを性能測定部13に出力する。これにより、性能測定部13は、op(2)の性能測定からop(3)の性能測定に切換える。性能測定部13は、op(2)についての性能の測定結果をオペレーションIDと共に性能情報集計・記録部14に出力する。性能情報集計・記録部14は、オペレーションID毎に性能の測定結果を集計する。
【0108】
画像値補間演算モジュール55は、入力画像座標を用いて入力画像をアフィン変換し、整数画素位置の画素値を用いて線形補間を行い、変換画像データを得る。画像値補間演算モジュール55は、メモリバスI/F56にOutput addressを指定してメモリ60にアクセスする。メモリバスI/F56は、メモリ60のOutput addressにより指定されたアドレスに変換画像データを出力画像データとして書き込む。
【0109】
オペレーション情報推定部42は、メモリバスI/F56がメモリ60にアクセスしたときのアドレスOutput addressを取得する。オペレーション情報推定部42は、メモリに記憶したアドレスとの比較によって、現在画像値補間演算モジュール55による3番目のオペレーション(op(3))が終了したものと判定して、判定結果を性能測定部13に出力する。これにより、性能測定部13は、op(3)の性能測定を終了し、op(3)についての性能の測定結果をオペレーションIDと共に性能情報集計・記録部14に出力する。性能情報集計・記録部14は、オペレーションID毎に性能の測定結果を集計する。
【0110】
このように本実施の形態においても、上記各実施の形態と同様の効果を得ることができる。
【0111】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適当な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0112】
また、ここで説明した技術のうち、主にフローチャートで説明した制御や機能は、多くがプログラムにより設定可能であり、そのプログラムをコンピュータが読み取り実行することで上述した制御や機能を実現することができる。そのプログラムは、コンピュータプログラム製品として、フレキシブルディスク、CD-ROM等、不揮発性メモリ等の可搬媒体や、ハードディスク、揮発性メモリ等の記憶媒体に、その全体あるいは一部を記録又は記憶することができ、製品出荷時又は可搬媒体或いは通信回線を介して流通又は提供可能である。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールしたりすることで、容易に本実施の形態のプロセッサ性能測定装置を実現することができる。
【符号の説明】
【0113】
10…プロセッサ性能測定装置、11…制御部、12…レイヤ情報推定部、13…性能測定部、14…性能情報集計・記録部、15…アドレス指定部、20…プロセッサ、21…制御部、22…演算処理部、23…命令設定記憶部、24…演算部、25…レジスタ、26…ローカルメモリ、30…グローバルメモリ、30…メモリ、31~33…領域。