JP5454349B2 - 性能推定装置 - Google Patents

性能推定装置 Download PDF

Info

Publication number
JP5454349B2
JP5454349B2 JP2010110542A JP2010110542A JP5454349B2 JP 5454349 B2 JP5454349 B2 JP 5454349B2 JP 2010110542 A JP2010110542 A JP 2010110542A JP 2010110542 A JP2010110542 A JP 2010110542A JP 5454349 B2 JP5454349 B2 JP 5454349B2
Authority
JP
Japan
Prior art keywords
frame
function
execution cycles
instruction set
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010110542A
Other languages
English (en)
Other versions
JP2011238137A (ja
Inventor
直樹 日景
和義 小山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2010110542A priority Critical patent/JP5454349B2/ja
Publication of JP2011238137A publication Critical patent/JP2011238137A/ja
Application granted granted Critical
Publication of JP5454349B2 publication Critical patent/JP5454349B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、性能推定装置に関する。
SoCは、システムオンアチップ(System-on-a-chip)であり、1つの半導体チップ上にシステムを集積する集積回路である。具体的には、SoCは、中央処理装置(CPU)及び周辺回路を含み、CPUがプログラムを実行することによりシステムを実現する。SoCの開発は、CPU及び周辺回路を含むハードウェアの開発と上記のプログラムのソフトウェアの開発を含む。
図1は、SoCにおけるソフトウェアの性能評価工程を示す図である。ハードウェアの開発は、評価ボードを作成し、評価ボードの検証を行う。時刻t3において、評価ボードの作成が完了する場合を示す。時刻t3の後、評価ボードを用いたソフトウェアの性能評価102が行われる。時刻t3の前では、評価ボードが存在しないため、CPUをシミュレーションする命令セットシミュレータ(ISS)を用いてソフトウェアの性能評価101を行う。評価ボードによる性能評価102は、評価精度は高いが、時刻t3の後でないと行えない問題点がある。ISSによる性能評価101は、評価ボード完成時刻t3の前でも行うことができるが、評価精度が低い問題点がある。また、時刻t3の評価ボード完成後でしか正確な評価はできないので、問題点も長期間わからないことになる。
また、割り込みが発生した場合、その割り込みに関する処理を実行した後にエミュレーションを中断し、後続処理のエミュレーションを実行する以前に先行して処理を予測するために、エミュレーションを中断した時点のレジスタの値、PCの値およびメモリデータをシミュレータに転送してシミュレーションを行うマイクロプロセッサのエミュレーション方法が知られている(例えば、特許文献1参照)。
また、仮想周辺デバイスおよび仮想ICE等で構成されマイクロコンピュータの実機プログラムを実行するシステムシミュレータを用いて、評価シナリオに記述された操作手順を自動的に実行させて実機プログラムの動作検証を行い、動作検証の出力データを記録するマイクロコンピュータソフトウェアの自動検証システムが知られている(例えば、特許文献2参照)。
特開平10−340205号公報 特開2005−250937号公報
本発明の目的は、SoCのソフトウェア開発において評価ボード完成前でも高速かつ高精度で性能を推定することができる性能推定装置を提供することである。
性能推定装置は、中央処理装置及び周辺回路を含み前記中央処理装置がプログラムを実行するシステムオンアチップの開発におけるプログラムの性能推定装置であって、前記中央処理装置のみのシミュレーションを行う命令セットシミュレータであって、前記プログラムの測定区間全体の前記中央処理装置の実行サイクル数をシミュレーションにより演算する命令セットシミュレータと、前記中央処理装置及び前記周辺回路のエミュレーションを行う論理エミュレータであって、前記プログラムの測定区間の一部の前記中央処理装置の実行サイクル数をエミュレーションにより演算する論理エミュレータと、前記命令セットシミュレータにより演算された実行サイクル数及び前記論理エミュレータにより演算された実行サイクル数を基に、推定関数を算出し、前記論理エミュレータにおける前記プログラムの未測定区間の実行サイクル数を推定する性能推定部とを有する。
命令セットシミュレータ及び論理エミュレータを用いることにより、評価ボード完成前でも高速かつ高精度で性能を推定することができる。
SoCにおけるソフトウェアの性能評価工程を示す図である。 第1の実施形態による設計及び開発対象のSoCの構成例を示す図である。 SoCの開発工程を示す図である。 第1の実施形態による性能推定装置のハードウェア構成例を示す図である。 パーソナルコンピュータの構成例を示す図である。 論理エミュレータの構成例を示す図である。 命令セットシミュレータ又は論理エミュレータによるSoCのプログラムの性能測定結果の例を示す図である。 第1の実施形態の性能推定装置の概念図である。 第1の実施形態の性能推定装置の性能推定方法を説明するための図である。 SoCにおけるソフトウェアの性能評価工程を示す図である。 命令セットシミュレータ及び論理エミュレータの構成例を示す図である。 性能推定装置の性能推定方法を示すフローチャートである。 図13(A)及び(B)は命令セットシミュレータの処理例を示す図である。 論理エミュレータの処理例を示す図である。 性能推定装置の処理を説明するための図である。 第2の実施形態による性能推定装置の性能推定方法を示すフローチャートである。 命令セットシミュレータの処理例を示す図である。 性能推定装置の処理を説明するための図である。 第3の実施形態による性能推定装置の性能推定方法を示すフローチャートである。 プロファイル解析部の処理例を示す図である。 性能推定装置の処理を説明するための図である。
(第1の実施形態)
図2は、第1の実施形態による設計及び開発対象のSoCの構成例を示す図である。SoCは、システムオンアチップ(System-on-a-chip)であり、1つの半導体チップ上にシステムを集積する集積回路である。例えば、SoC200は、中央処理装置(CPU)201、メモリ202及び周辺回路を含み、CPU201がメモリ202内のプログラムを実行することによりシステムを実現する。なお、CPU201及びメモリ202は、複数あっても良く、SoC200の半導体チップの外部に設けても良い。
図3は、SoCの開発工程を示す図である。SoCの開発は、CPU201、メモリ202及び周辺回路203を含むハードウェアの設計及び開発と、上記のプログラムのソフトウェアの開発を含む。ハードウェアの設計及び開発は、時刻t1で回路設計を行い、時刻t2で論理シミュレーション及び論理エミュレーションの検証を行い、時刻t3で評価ボードの検証を行う。これに対し、ソフトウェアの開発は、時刻t11でソフトウェア開発を行い、時刻t12〜t13でソフトウェア検証を行う。このソフトウェア検証は、時刻t3の評価ボード作成後では評価ボードを用いて行われるが、期間301では評価ボードを用いないで行われるため評価精度が低くなる。時刻t3の評価ボード完成後のソフトウェア検証において、SoCの問題点(例えば、性能上の問題点)が発覚した場合には、ハードウェアの変更は困難であるため、ソフトウェアの変更により問題点を解決しなくてはならない。場合によっては、ソフトウェアの変更のみでは問題点を解決できず、ハードウェアを設計変更せざるを得ない場合もある。そのため、時刻t3の評価ボード完成前のソフトウェア検証によりSoCの問題点を発見することができれば、ハードウェアの設計変更も容易であり、SoC全体の開発の効率を向上させることができる。
図4は、本実施形態による性能推定装置のハードウェア構成例を示す図である。性能推定装置は、相互に接続されたパーソナルコンピュータ(PC)401、論理エミュレータ403を制御するホストワークステーション(HostWS)404、及び論理エミュレータ403を有する。パーソナルコンピュータ401は、プログラムを実行することにより命令セットシミュレータ(ISS)402の機能を実現することができる。一般的に命令セットシミュレータ402は、SoC200内のCPU201のみのシミュレーションを行うことで、高速かつ低精度のソフトウェア性能を評価することができる。これに対し、論理エミュレータ403は、CPU201及び周辺回路203のエミュレーションを行うことができるので、低速かつ高精度のソフトウェア性能を評価することができる。命令セットシミュレータ402は、論理エミュレータ403に対して約100〜1000倍高速で動作する。性能推定装置は、命令セットシミュレータ402及び論理エミュレータ403を用いることにより、SoCの開発におけるプログラム(ソフトウェア)性能を高速かつ高精度で推定し、評価することができる。
図5は、パーソナルコンピュータ401の構成例を示す図である。バス501には、CPU502、ROM503、RAM504、ネットワークインタフェース505、入力装置506、出力装置507及び外部記憶装置508が接続されている。CPU502は、データの処理及び演算を行うと共に、バス501を介して接続された上記の構成ユニットを制御するものである。ROM503には、予めブートプログラムが記憶されており、このブートプログラムをCPU502が実行することにより、コンピュータが起動する。外部記憶装置508にコンピュータプログラムが記憶されており、そのコンピュータプログラムがRAM504にコピーされ、CPU502により実行される。このコンピュータは、コンピュータプログラムを実行することにより、命令セットシミュレータ402の処理等を行うことができる。図4のホストワークステーション404も、パーソナルコンピュータ401と同様の構成を有し、コンピュータプログラムを実行することにより、図6のホストワークステーション404の機能を実現する。
外部記憶装置508は、例えばハードディスク記憶装置等であり、電源を切っても記憶内容が消えない。外部記憶装置508は、コンピュータプログラム及び設計データ等を記録媒体に記録したり、記録媒体からコンピュータプログラム等を読み出すことができる。ネットワークインタフェース505は、ネットワークに対してコンピュータプログラム及び設計データ等を入出力することができる。入力装置506は、例えばキーボード及びポインティングデバイス(マウス)等であり、各種指定又は入力等を行うことができる。出力装置507は、ディスプレイ及びプリンタ等であり、表示又は印刷することができる。
図6は、論理エミュレータ403とホストワークステーション404の構成例を示す図である。論理エミュレータ403は、FPGA(Field Programmable Gate Array)601及びメモリ602を有する。ホストワークステーション404は、論理合成部605及びローダ606を有する。論理合成部605は、図2のSoC200内のCPU201及び周辺回路203を含むハードウェアのRTL(レジスタ転送レベル)設計データ603を論理合成し、ゲートレベル設計データ604を生成する。ローダ606は、ホストワークステーション404上で動作するソフトウェアであり、ゲートレベル設計データ604をFPGA601にマッピングする。メモリ602は、図2のSoC200内のメモリ202をエミュレーションするためのメモリである。これにより、FPGA601及びメモリ602は、SoC200内のCPU201及び周辺回路203を含むハードウェアをエミュレーションすることができる。なお、論理エミュレータ403は、FPGA601を用いる場合に限定されず、複数のCPUを用いるタイプの論理エミュレータ等でもよい。
図7は、命令セットシミュレータ402又は論理エミュレータ403によるSoC200のプログラムの性能測定結果の例を示す図である。横軸はフレーム番号を示し、縦軸はCPU201の動作周波数を示す。フレームは、プログラムの特定区間を示す。例えば、SoC200のプログラムがオーディオエンコーダのプログラムである場合に、SoC200はオーディオエンコーダとして機能する。オーディオエンコーダは、オーディオデータを例えば1024サンプル単位で処理を行う。フレーム番号1は1フレーム目の1024サンプル単位のオーディオデータをエンコードするプログラムの処理であり、フレーム番号2は2フレーム目の1024サンプル単位のオーディオデータをエンコードするプログラムの処理である。エンコードは、オーディオデータに応じて圧縮率等が異なるため、CPU201の動作周波数はフレーム番号毎に異なる。CPU201の動作周波数は、高いほど処理の負荷が大きいことを意味する。オーディオデータをバッファに入力することにより、フレーム番号毎のCPU201の動作周波数の違いを緩和することができる。例えば、動作周波数のフレーム平均値は228MHzになる。ここで、論理エミュレータ403は、命令セットシミュレータ402に比べて、測定精度は高いが、動作速度が遅いため、すべてのフレーム番号について性能を測定することは困難である。本実施形態では、論理エミュレータ403で一部のフレーム番号についてのみ性能を測定し、命令シミュレータ402を用いて、他の部分のフレーム番号の性能を推定する。
図8は本実施形態の性能推定装置の概念図であり、図9は本実施形態の性能推定装置の性能推定方法を説明するための図である。図8の破線はデータの流れを示し、実線は処理の流れを示す。図9の縦軸はCPU201の実行サイクル数であり、図7の縦軸と同様に、実行サイクル数が大きいほど処理負荷が大きいことを意味する。性能推定部800は、図4のパーソナルコンピュータ401の処理により実現される。命令セットシミュレータ402は、ステップ801でプログラムの全体性能を測定し、図9の全体性能測定結果902を記憶部802に記録する。全体性能測定結果902は、例えばフレーム番号1〜51の全フレームの性能測定結果であり、低精度の測定結果である。論理エミュレータ403は、ステップ803でプログラムの一部の性能を測定し、図9の一部性能測定結果901を記憶部804に記録する。一部性能測定結果901は、例えばフレーム番号1〜12の一部のフレームの性能測定結果であり、評価ボードと同等の高精度の測定結果である。性能推定部800は、ステップ805において、記憶部802内の全体性能測定結果902及び記憶部804内の一部性能測定結果901を基に、図9の他の部分のフレームの性能推定値903を推測し、性能901及び903を含む全体性能推定結果を記憶部806に記録する。他の部分のフレームの性能推定値903は、例えばフレーム番号13〜50の性能推定値であり、高精度の推定値である。
論理エミュレータ403の性能測定結果901は高精度であるため、記憶部806内の全体性能推定結果として使用することができる。しかし、論理エミュレータ403は動作速度が低速であるため、一部のフレームの性能測定結果901のみを測定する。命令セットシミュレータ402は、性能測定結果902が低精度であるが、高速動作可能であるため、全フレームの性能測定結果902を測定する。他の部分の性能推定値903は、全体性能測定結果902及び一部性能測定結果901を基に推定されるため、高精度かつ高速に演算することができる。上記の方法により、一部性能測定結果901及び他の部分の性能推定値903を含む高精度の全体性能推定結果を得ることができる。
図10は、SoCにおけるソフトウェアの性能評価工程を示す図である。時刻t3において、評価ボードの作成が完了する場合を示す。時刻t3の後、評価ボードを用いたソフトウェアの性能評価102が行われる。時刻t3の前では、評価ボードが存在しないため、CPU201をシミュレーションする命令セットシミュレータ(ISS)402を用いてソフトウェアの性能評価101を行う。本実施形態では、図8の性能推定方法による性能評価103を行う。性能評価103は、時刻t3の評価ボード完成前において、命令セットシミュレータ402による性能評価101に比べて高精度かつ短期間でプログラムの性能を評価することができる。また、性能評価103により、評価ボード作成前のハードウェアの設計変更を容易にする。
図11は、命令セットシミュレータ402、論理エミュレータ403及びホストワークステーション404の構成例を示す図である。ホストワークステーション404は、測定用付加回路のRTL設計データ1103を有する。測定用付加回路のRTL設計データ1103は、レジスタ部1104、制御部1105及びRAM1106のRTL設計データを有する。ホストワークステーション404において、論理合成部605は、対象となるSoC200のRTL設計データ603及び測定用付加回路のRTL設計データ1103を論理合成し、ゲートレベル設計データ604を生成する。ローダ606は、ゲートレベル設計データ604をFPGA601にマッピングする。ターゲットプログラム1101は、SoC200で動作するプログラムであり、例えばオーディオエンコーダのプログラムである。命令セットシミュレータ402は、ターゲットプログラム1101を基にシミュレーションを行う。論理エミュレータ403は、ターゲットプログラム1101を基にエミュレーションを行う。測定用付加回路のRTL設計データ1103は、SoC200には影響を与えない。レジスタ部1104には、測定コントロール関数1206(図12)により、測定開始命令、測定終了命令、測定間隔値及び測定範囲を検出するためのデリミタ値が書き込まれる。制御部1105は、レジスタ部1104を監視し、処理を制御する。また、制御部1105は、レジスタ部1104に書き込まれた値に応じてターゲットプログラム1101のプログラムカウンタ(PC)値及び実行サイクル数をRAM1106に書き込む。
図12は、性能推定装置の性能推定方法を示すフローチャートである。命令セットシミュレータ402は、ターゲットプログラム1101及び入力データ1201を入力し、ターゲットプログラム1101を基にシミュレーションを行い、図13(A)に示すように、ターゲットプログラム1101の全フレーム(測定区間全体)のフレーム毎のCPU201の実行サイクル数(全体性能測定結果)をシミュレーションにより演算し、記憶部1202に記録する。例えば、ターゲットプログラム1101はオーディオエンコーダのプログラムであり、入力データ1201はオーディオデータである。図13(A)の実行サイクル数は、図9の全体性能測定結果902に対応する。性能解析部1203は、図4のパーソナルコンピュータ401の処理により実現され、記憶部1202内の全体性能測定結果を基に、例えば図13(B)に示すように、実行サイクル数が最小のフレーム番号(例えばフレーム番号1)、実行サイクル数が最大のフレーム番号(例えばフレーム番号9)、及び実行サイクル数が平均値のフレーム番号(例えばフレーム番号11)を性能解析結果として記憶部1204に記録する。
入力選択部1205は、図4のパーソナルコンピュータ401の処理により実現され、記憶部1204内の性能解析結果を基に、入力データ1201内の一部のフレームに対応する入力データを選択し、論理エミュレータ403に出力する。例えば、入力選択部1205は、図13(A)の最小フレーム番号1、最大フレーム番号9及び平均フレーム番号11を含むフレーム番号1〜12に対応する入力データ1201を選択する。
測定コントロール関数1206は、ターゲットプログラム1101より呼び出され、論理エミュレータ403により実行されるソフトウェアである。制御部1105は、測定コントロール関数1206が測定用付加回路のレジスタ部1104に書き込んだ値を見て、測定の開始及び測定の終了を行い、ターゲットプログラム1101のプログラムカウンタ(PC)値、実行サイクル数及びデリミタ値の出力をRAM1106に書き込む。後に、実行サイクル数とデリミタ値の出力結果よりフレーム単位での実行サイクル数を算出することになる。
論理エミュレータ403は、ターゲットプログラム1101の処理をエミュレーションする。具体的には、論理エミュレータ403では、対象SoCのゲートレベル設計データ604に基づくハードウェアがターゲットプログラム1101を実行する。
論理エミュレータ403は、図14に示すように、レジスタ部1104で設定した測定間隔値に基づいて、CPU201の実行サイクル数及びプログラムカウンタ(PC)値をエミュレーションにより演算し、RAM1106に書き込む。ホストワークステーション404が任意のタイミングでRAM1106に記録されたデータを記憶部1207に記録する。記憶部1207は、例えば図5の外部記憶装置508である。プログラムカウンタ値は、現在、CPU201により実行されているターゲットプログラム1101内のアドレスである。図14のサイクル番号は、実行サイクル数が例えば100間隔で付与される番号である。実行サイクル数及びプログラムカウンタ値は、レジスタ部1104で設定した測定間隔に基づいて出力される。図14の場合、例えば100サイクル毎に出力される。ここで、ターゲットプログラム1101は、実行中に測定コントロール関数1206により任意のタイミングで測定用付加回路のレジスタ部1104にデリミタ値を書き込むことができる。制御部1105は、書き込まれたデリミタ値をRAM1106に記録する。この値は、図14に示すように、実行サイクル数及びプログラムカウンタ値としてそれぞれ例えば「aaaaaaaa」、「bbbbbbbb」が書き込まれる。ターゲットプログラム1101にて、測定したい区間の前後でデリミタ値を書き込むことにより、測定区間の実行サイクル数やフレーム単位での実行サイクル数を算出することができる。図14の場合、測定したい区間の直前に「aaaaaaaa」のデリミタ値を出力し、測定したい区間の直後に「bbbbbbbb」を出力することで、後の処理において、測定終了を示すデリミタ値「bbbbbbbb」の前の実行サイクル数(例えば「00073a95」)から測定開始を示すデリミタ値「aaaaaaaa」の後の実行サイクル数(例えば「000739cd」)を減算することにより、測定したい区間(例えば1フレーム)の実行サイクル数を算出することができる。
測定用付加回路のRTL設計データ1103を設けることにより、論理エミュレータ403でのSoCの動作を止めることなく、実行サイクル数及びプログラムカウンタ値を高速に測定することが可能になる。
性能推定部1208は、図8の性能推定部800に対応し、上記のように、記憶部1207内のフレーム毎の実行サイクル数を基に、測定終了を示すデリミタ値「bbbbbbbb」の前の実行サイクル数(例えば「00073a95」)から測定開始を示すデリミタ値「aaaaaaaa」の後の実行サイクル数(例えば「000739cd」)を減算することにより、1フレームの実行サイクル数を算出し、例えばフレーム番号1〜12の論理エミュレータ403での一部性能測定結果を記憶部1207に書き戻す。測定用付加回路は、上記の測定開始情報のデリミタ値(デリミタ情報)と測定終了情報のデリミタ値と測定間隔値(測定間隔情報)をプログラマブルに設定することが可能である。
図15は、性能推定装置の処理を説明するための図である。上記のように、記憶部1202には、全フレーム番号1〜20についての命令セットシミュレータ(ISS)402の実行サイクル数N1が記録されている。記憶部1207には、一部のフレーム番号1〜12についての論理エミュレータ403の実行サイクル数N2が記録されている。
性能推定部1208は、命令セットシミュレータ402により演算されたフレーム番号1〜12のフレーム毎の実行サイクル数N1の平均値(例えば「941829」)を演算する。次に、性能推定部1208は、論理エミュレータ403により演算されたフレーム番号1〜12のフレーム毎の実行サイクル数N2の平均値(例えば「1211376」)を演算する。命令セットシミュレータ402は、CPU201のみをシミュレーションするために実行サイクル数が少なくなる。論理エミュレータ403は、CPU201及び周辺回路203をエミュレーションするために実行サイクル数が多くなる。
次に、性能推定部1208は、命令セットシミュレータ402により演算されたフレーム毎の実行サイクル数N1の平均値(例えば「941829」)に対する論理エミュレータ403により演算されたフレーム毎の実行サイクル数N2の平均値(例えば「1211376」)の割合係数を演算する。例えば、割合係数は、1211376÷941829≒1.286である。
次に、性能推定部1208は、命令セットシミュレータ402により演算された他の部分のフレーム番号13〜20のフレーム毎の実行サイクル数N1及び割合係数を乗算することにより、論理エミュレータ403におけるプログラムの他の部分(未測定区間)のフレーム番号13〜20についてのフレーム毎の実行サイクル数推定値N3を推定する。例えば、フレーム番号13の実行サイクル数推定値N3は、1137575×1.286≒1463144になる。
ここで、参考のため、フレーム番号1〜12について、命令セットシミュレータ402の実行サイクル数N1及び割合係数を乗算した結果を実行サイクル数推定値N3の欄にかっこ書きで示す。そして、その実行サイクル数推定値N3と論理エミュレータ403の実行サイクル数N2との誤差を図15に示す。その誤差は、約2%であり、良好な推定が可能であることが分かる。
前記性能推定部1208はさらに命令セットシミュレータ402により演算されたフレーム番号1〜12のフレーム毎の実行サイクル数N1と論理エミュレータ403により演算されたフレーム番号1〜12のフレーム毎の実行サイクル数N2を入力とし最小二乗法を用いた多項式近似式により次式(1)の推定関数を演算する。
Figure 0005454349
例えば、図15の実行サイクル値から演算した推定関数を2次式とした場合、推定係数は、a0=2.75999082147362×105、a1=7.96978741632175×10-1、a2=1.95340650785908×10-7となる。この推定係数を用いた推定関数より、論理エミュレータ403の実行サイクル推定値N4は、次式(2)で表わされる。ここで、N1は、命令セットシミュレータ402の実行サイクル数である。
N4=1.95340650785908×10-7×N1×N1+7.96978741632175×10-1×N1+2.75999082147362×105 ・・・(2)
この多項式近似を利用した実行サイクル推定値N4を図15に示す。論理エミュレータ403の実行サイクル数N2と実行サイクル推定値N4との誤差は、約0.57%であり、上記の平均値を利用した実行サイクル推定値N3よりさらに良好な推定が可能である。
次に、性能推定部1208は、フレーム番号1〜12についての論理エミュレータ403のフレーム毎の実行サイクル数N2及びフレーム番号13〜20についてのフレーム毎の実行サイクル数推定値を全体性能推定結果として記憶部1209に記録する。この全体性能推定結果は、評価ボードと同等の精度の結果である。
上記のように、論理エミュレータ403の測定対象のフレーム番号1〜12内に、図13(B)の特徴的なフレームである最小フレーム番号1、最大フレーム番号9及び平均フレーム番号11を含ませることにより、実行サイクル数推定値の精度を向上させることができる。なお、上記では、先頭のフレーム番号1〜12を選択する場合を例に説明したが、先頭フレーム部分に限定されない。
(第2の実施形態)
図16は、第2の実施形態による性能推定装置の性能推定方法を示すフローチャートである。図16は、図12に対して、記憶部1601が追加されたものである。以下、本実施形態が第1の実施形態と異なる点を説明する。命令セットシミュレータ402は、第1の実施形態の実行サイクル数の他に、図17に示すように、ターゲットプログラム1101のフレーム毎の各関数の関数割合(関数プロファイル)をシミュレーションにより演算し、記憶部1601に記録する。ターゲットプログラム1101は、例えばC言語のプログラムをコンパイルしたマシン語のプログラムである。関数A〜Eは、C言語のプログラム内の全関数である。関数割合は、各関数の実行サイクル数の割合である。
論理エミュレータ403は、測定コントロール関数1206を基にレジスタ部1104に対して測定対象の関数を書き込むことにより指定する。そして、論理エミュレータ403は、ターゲットプログラム1101の測定区間の一部のフレーム番号1〜10(図18)のフレームについてのフレーム毎の各関数の実行サイクル数及びプログラムカウンタ値をエミュレーションにより演算し、RAM1106に書き込むと共に、記憶部1207に記録する。
性能推定部1208は、上記のように、記憶部1207内のフレーム毎の各関数の実行サイクル数を基に、測定終了を示すデリミタ値「bbbbbbbb」の前の実行サイクル数から測定開始を示すデリミタ値「aaaaaaaa」の後の実行サイクル数を減算することにより、1フレームの各関数の実行サイクル数を算出し、フレーム番号1〜10(図18)の論理エミュレータ403での一部性能測定結果を記憶部1207に書き戻す。
図18は、性能推定装置の処理を説明するための図である。性能推定部1208は、記憶部1202内の命令セットシミュレータ402により演算されたフレーム毎の実行サイクル数及び記憶部1601内のフレーム毎の各関数の関数割合を基に命令セットシミュレータ402のフレーム毎の各関数の実行サイクル数を演算する。例えば、フレーム番号11では、命令セットシミュレータ402の実行サイクル数は1500000であり、関数A〜Cの関数割合はそれぞれ0.4、0.2、0.4である。関数Aの実行サイクル数は、1500000×0.4=600000である。
次に、性能推定部1208は、命令セットシミュレータ402のフレーム番号1〜10のフレーム毎の各関数の実行サイクル数のフレーム平均値(例えば「1000000」)を演算し、フレーム毎の各関数の関数割合のフレーム平均値を演算する。例えば、関数Aの関数割合のフレーム平均値は0.3である。
次に、性能推定部1208は、命令セットシミュレータ402のフレーム毎の各関数の実行サイクル数のフレーム平均値及びフレーム毎の各関数の関数割合のフレーム平均値を基に命令セットシミュレータ402の各関数の実行サイクル数のフレーム平均値を演算する。例えば、関数Aの実行サイクル数のフレーム平均値は、1000000×0.3=300000である。
次に、性能推定部1208は、記憶部1207内の論理エミュレータ403により演算された各関数の実行サイクル数を基に、フレーム番号1〜10についての論理エミュレータ403の各関数の実行サイクル数のフレーム平均値を演算する。例えば、関数Aの実行サイクル数のフレーム平均値は400000である。
次に、性能推定部1208は、命令セットシミュレータ402の各関数の実行サイクル数のフレーム平均値に対する論理エミュレータ403の各関数の実行サイクル数のフレーム平均値の関数毎の割合係数を演算する。例えば、関数Aの割合係数は、400000÷300000≒1.3である。
次に、性能推定部1208は、フレーム番号11以降のフレームについての命令セットシミュレータ402のフレーム毎の各関数の実行サイクル数及び関数毎の割合係数を基に、論理エミュレータ403におけるターゲットプログラム1101の他の部分のフレーム番号11以降のフレームについてのフレーム毎の実行サイクル数推定値を推定する。例えば、フレーム番号11のフレームにおいて、実行サイクル数推定値は、600000×1.3+300000×2+600000×1=1785000である。ここで、「600000」は命令セットシミュレータ402のフレーム番号11の関数Aの実行サイクル数であり、「1.3」は関数Aの割合係数であり、「300000」は命令セットシミュレータ402のフレーム番号11の関数Bの実行サイクル数であり、「2」は関数Bの割合係数であり、「600000」は命令セットシミュレータ402のフレーム番号11の関数Cの実行サイクル数であり、「1」は関数Cの割合係数である。
本実施形態によれば、関数毎の割合係数を用いて実行サイクル数推定値を推定するので、高精度の推定が可能になる。
(第3の実施形態)
図19は、第3の実施形態による性能推定装置の性能推定方法を示すフローチャートである。図19は、図16に対して、プロファイル解析部1901及び記憶部1902が追加されたものである。以下、本実施形態が第2の実施形態と異なる点を説明する。命令セットシミュレータ402は第2の実施形態と同じ処理を行い、論理エミュレータ403は第1の実施形態と同じ処理を行う。すなわち、命令セットシミュレータ402は、第1の実施形態の実行サイクル数の他に、ターゲットプログラム1101のフレーム毎の各関数の関数割合をシミュレーションにより演算し、記憶部1601に記録する。論理エミュレータ403は、ターゲットプログラム1101のコンパイル時に生成されるデバック情報及びMAPファイルを記憶部1207に記録する。デバック情報及びMAPファイルは、コンパイル前のC言語のプログラムの行番号及び関数名とコンパイル後のマシン語のプログラムのアドレスとの対応関係を示すファイルである。
プロファイル解析部1901は、図4のパーソナルコンピュータ401の処理により実現され、記憶部1207内の論理エミュレータ403のエミュレーションの結果を基に、図20に示すように、ターゲットプログラム1101のフレーム毎の各関数の実行サイクル数及び関数割合を演算する。例えば、関数Aの実行サイクル数は「4354」であり、関数Aの関数割合は「28.18%」である。
図21は、性能推定装置の処理を説明するための図である。図21の命令セットシミュレータ(ISS)402の欄についての処理は、第2の実施形態(図18)と同じである。
次に、図21の論理エミュレータ403の欄の処理を説明する。性能推定部1208は、論理エミュレータ403により演算された例えばフレーム番号1〜10についてのフレーム毎の実行サイクル数のフレーム平均値を演算する。例えば、フレーム番号1〜10についての実行サイクル数のフレーム平均値は、「1300000」である。
次に、性能推定部1208は、図20の論理エミュレータ403のフレーム毎の各関数の関数割合を基に、例えばフレーム番号1〜10のフレーム毎の各関数の関数割合のフレーム平均値を演算する。例えば、フレーム番号1〜10についての論理エミュレータ403の関数A〜Cの関数割合のフレーム平均値は、それぞれ「0.308、0.308、0.385」である。
次に、性能推定部1208は、例えばフレーム番号1〜10について、論理エミュレータ403により演算されたフレーム毎の実行サイクル数のフレーム平均値及び論理エミュレータ403のフレーム毎の各関数の関数割合のフレーム平均値を基に、論理エミュレータ403の各関数の実行サイクル数のフレーム平均値を演算する。例えば、関数Aの実行サイクル数のフレーム平均値は、1300000×0.308=400400である。
次に、性能推定部1208は、例えばフレーム番号1〜10について、命令セットシミュレータ402の各関数の実行サイクル数のフレーム平均値に対する論理エミュレータ403の各関数の実行サイクル数のフレーム平均値の関数毎の割合係数を演算する。例えば、関数Aの割合係数は、400400÷300000≒1.3である。
次に、性能推定部1208は、例えばフレーム番号11以降について、命令セットシミュレータ402のフレーム毎の各関数の実行サイクル数及び関数毎の割合係数を基に、論理エミュレータ403におけるターゲットプログラムの他の部分の例えばフレーム番号11以降のフレームについてのフレーム毎の実行サイクル数推定値を推定する。例えば、フレーム番号11の実行サイクル数推定値は、600000×1.3+300000×2+600000×1=1785000である。ここで、「600000」はフレーム番号11の命令セットシミュレータ402の関数Aの実行サイクル数、「1.3」は関数Aの割合係数、「300000」はフレーム番号11の命令セットシミュレータ402の関数Bの実行サイクル数、「2」は関数Bの割合係数、「600000」はフレーム番号11の命令セットシミュレータ402の関数Cの実行サイクル数、「1」は関数Cの割合係数である。
本実施形態によれば、関数毎の割合係数を用いて実行サイクル数推定値を推定するので、高精度の推定が可能になる。なお、プロファイル解析部1901は、性能推定部1208内に設けても良い。
以上のように、第1〜第3の実施形態の性能推定装置は、CPU201及び周辺回路203を含みCPU201がプログラムを実行するSoCの開発におけるプログラムの性能推定装置である。命令セットシミュレータ402は、CPU201のみのシミュレーションを行う。具体的には、命令セットシミュレータ402は、ターゲットプログラム1101の特定区間であるフレーム毎のCPU201の実行サイクル数をシミュレーションにより演算する。論理エミュレータ403は、CPU201及び周辺回路203のエミュレーションを行う。具体的には、論理エミュレータ403は、ターゲットプログラム1101の一部のフレームについてのフレーム毎のCPU201の実行サイクル数をエミュレーションにより演算する。
性能推定部1208は、命令セットシミュレータ402により演算されたフレーム毎の実行サイクル数及び論理エミュレータ403により演算されたフレーム毎の実行サイクル数を基に、命令セットシミュレータ402により演算された実行サイクル数に対する論理エミュレータ403により演算された実行サイクル数の割合係数を演算する。そして、性能推定部1208は、命令セットシミュレータ402により演算されたフレーム毎の実行サイクル数及び割合係数を基に、論理エミュレータ403におけるターゲットプログラム1101の他の部分のフレームについてのフレーム毎の実行サイクル数を推定する。
第1〜第3の実施形態によれば、システム(ハードウェア及びソフトウェアを含む)設計者及びハードウェア設計者に対して、性能推定装置の全体性能推定結果をフィードバックすることにより、実機又は評価ボード作成前にソフトウェア(プログラム)を踏まえたSoCアーキテクチャの全体最適化を実現することができる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
200 SoC
201 CPU
202 メモリ
203 周辺回路
402 命令セットシミュレータ
403 論理エミュレータ
800,1208 性能推定部

Claims (9)

  1. 中央処理装置及び周辺回路を含み前記中央処理装置がプログラムを実行するシステムオンアチップの開発におけるプログラムの性能推定装置であって、
    前記中央処理装置のみのシミュレーションを行う命令セットシミュレータであって、前記プログラムの測定区間全体の前記中央処理装置の実行サイクル数をシミュレーションにより演算する命令セットシミュレータと、
    前記中央処理装置及び前記周辺回路のエミュレーションを行う論理エミュレータであって、前記プログラムの測定区間の一部の前記中央処理装置の実行サイクル数をエミュレーションにより演算する論理エミュレータと、
    前記命令セットシミュレータにより演算された実行サイクル数及び前記論理エミュレータにより演算された実行サイクル数を基に、推定関数を算出し、前記論理エミュレータにおける前記プログラムの未測定区間の実行サイクル数を推定する性能推定部と
    を有することを特徴とする性能推定装置。
  2. 前記性能推定部は、前記命令セットシミュレータにより演算されたフレーム毎の実行サイクル数の平均値に対する前記論理エミュレータにより演算されたフレーム毎の実行サイクル数の平均値の割合係数を演算し、前記命令セットシミュレータにより演算されたフレーム毎の実行サイクル数及び前記割合係数を乗算することにより、前記論理エミュレータにおける前記プログラムの未測定区間の実行サイクル数を推定することを特徴とする請求項1記載の性能推定装置。
  3. 前記性能推定部は、前記命令セットシミュレータにより演算されたフレーム毎の実行サイクル数と前記論理エミュレータにより演算されたフレーム毎の実行サイクル数を入力とし最小二乗法を用いた多項式近似により推定関数を演算することにより、前記論理エミュレータにおける前記プログラムの未測定区間の実行サイクル数を推定することを特徴とする請求項1記載の性能推定装置。
  4. 前記命令セットシミュレータは、前記実行サイクル数の他に、前記プログラムのフレーム毎の各関数の関数割合をシミュレーションにより演算し、
    前記論理エミュレータは、前記プログラムの前記一部のフレームについてのフレーム毎の各関数の実行サイクル数をエミュレーションにより演算し、
    前記性能推定部は、前記命令セットシミュレータにより演算されたフレーム毎の実行サイクル数及び前記フレーム毎の各関数の関数割合を基に前記命令セットシミュレータのフレーム毎の各関数の実行サイクル数を演算し、前記命令セットシミュレータのフレーム毎の各関数の実行サイクル数のフレーム平均値及び前記フレーム毎の各関数の関数割合のフレーム平均値を基に前記命令セットシミュレータの各関数の実行サイクル数のフレーム平均値を演算し、前記論理エミュレータにより演算された各関数の実行サイクル数を基に前記論理エミュレータの各関数の実行サイクル数のフレーム平均値を演算し、前記命令セットシミュレータの各関数の実行サイクル数のフレーム平均値に対する前記論理エミュレータの各関数の実行サイクル数のフレーム平均値の関数毎の割合係数を演算し、前記命令セットシミュレータのフレーム毎の各関数の実行サイクル数及び前記関数毎の割合係数を基に、前記論理エミュレータにおける前記プログラムの他の部分のフレームについてのフレーム毎の実行サイクル数を推定することを特徴とする請求項1記載の性能推定装置。
  5. 前記命令セットシミュレータは、前記実行サイクル数の他に、前記プログラムのフレーム毎の各関数の関数割合をシミュレーションにより演算し、
    前記性能推定部は、前記論理エミュレータのエミュレーションの結果を基に前記プログラムのフレーム毎の各関数の関数割合のフレーム平均値を演算し、前記命令セットシミュレータにより演算されたフレーム毎の実行サイクル数のフレーム平均値及び前記命令セットシミュレータのフレーム毎の各関数の関数割合のフレーム平均値を基に前記命令セットシミュレータの各関数の実行サイクル数のフレーム平均値を演算し、前記論理エミュレータにより演算されたフレーム毎の実行サイクル数のフレーム平均値及び前記論理エミュレータのフレーム毎の各関数の関数割合のフレーム平均値を基に前記論理エミュレータの各関数の実行サイクル数のフレーム平均値を演算し、前記命令セットシミュレータの各関数の実行サイクル数のフレーム平均値に対する前記論理エミュレータの各関数の実行サイクル数のフレーム平均値の関数毎の割合係数を演算し、前記命令セットシミュレータのフレーム毎の各関数の実行サイクル数及び前記関数毎の割合係数を基に、前記論理エミュレータにおける前記プログラムの他の部分のフレームについてのフレーム毎の実行サイクル数を推定することを特徴とする請求項1記載の性能推定装置。
  6. 前記論理エミュレータにおいてレジスタ部と制御部とRAMとを有する測定用付加回路が設計データとともに合成され、エミュレータにマッピングされ、実行されることを特徴とする請求項1〜5のいずれか1項に記載の性能推定装置。
  7. 前記測定用付加回路は、測定開始情報と測定終了情報をプログラマブルに設定することが可能なことを特徴とする請求項6記載の性能推定装置。
  8. 前記測定用付加回路は、さらに測定間隔情報をプログラマブルに設定することが可能なことを特徴とする請求項7記載の性能推定装置。
  9. 前記測定用付加回路は、さらにデリミタ情報をプログラマブルに設定することが可能なことを特徴とする請求項7記載の性能推定装置。
JP2010110542A 2010-05-12 2010-05-12 性能推定装置 Expired - Fee Related JP5454349B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010110542A JP5454349B2 (ja) 2010-05-12 2010-05-12 性能推定装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010110542A JP5454349B2 (ja) 2010-05-12 2010-05-12 性能推定装置

Publications (2)

Publication Number Publication Date
JP2011238137A JP2011238137A (ja) 2011-11-24
JP5454349B2 true JP5454349B2 (ja) 2014-03-26

Family

ID=45326025

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010110542A Expired - Fee Related JP5454349B2 (ja) 2010-05-12 2010-05-12 性能推定装置

Country Status (1)

Country Link
JP (1) JP5454349B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016100683A2 (en) 2014-12-19 2016-06-23 Dolby Laboratories Licensing Corporation Audio benchmarking with simulated real time processing of audio
US11106478B2 (en) 2017-11-10 2021-08-31 Mitsubishi Electric Corporation Simulation device, simulation method, and computer readable medium
CN109063340B (zh) * 2018-08-03 2023-08-25 格兰菲智能科技有限公司 基于仿真的gpu性能的测试方法及装置

Also Published As

Publication number Publication date
JP2011238137A (ja) 2011-11-24

Similar Documents

Publication Publication Date Title
JP4994393B2 (ja) 単一のマスターモデルから異なる抽象化レベルの複数のモデルを生成するシステムと方法
US8229723B2 (en) Performance software instrumentation and analysis for electronic design automation
US7844928B2 (en) Method and apparatus for evaluating integrated circuit design performance using enhanced basic block vectors that include data dependent information
US20090158257A1 (en) Systems and Methods for Graphics Hardware Design Debugging and Verification
US9026966B1 (en) Co-simulation methodology to address performance and runtime challenges of gate level simulations with, SDF timing using emulators
US9081925B1 (en) Estimating system performance using an integrated circuit
US8271252B2 (en) Automatic verification of device models
US9529946B1 (en) Performance estimation using configurable hardware emulation
JP2005293163A (ja) 消費電力計算方法及び装置
JP6600011B2 (ja) エミュレーションのための効率的波形生成
US20230252212A1 (en) Testbench for sub-design verification
US8418099B2 (en) Performance counters for integrated circuits
US10437949B1 (en) Scheduling events in hardware design language simulation
Schürmans et al. ESL power estimation using virtual platforms with black box processor models
US8700380B2 (en) Method for generating performance evaluation model
JP5454349B2 (ja) 性能推定装置
US9021289B2 (en) Method and system for power estimation based on a number of signal changes
JP5040625B2 (ja) Lsiの電力見積方法及びその装置
US7992112B2 (en) Hardware verification programming description generation apparatus, high-level synthesis apparatus, hardware verification programming description generation method, hardware verification program generation method, control program and computer-readable recording medium
Kang et al. Seamless SoC verification using virtual platforms: An industrial case study
Lorenz et al. From RTL IP to functional system-level models with extra-functional properties
JP6249827B2 (ja) シミュレーション装置及びシミュレーションプログラム
US20140325468A1 (en) Storage medium, and generation apparatus for generating transactions for performance evaluation
US10223077B2 (en) Determination of signals for readback from FPGA
JP5146087B2 (ja) 消費電力見積方法、回路設計支援装置及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131202

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131223

R150 Certificate of patent or registration of utility model

Ref document number: 5454349

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees